From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 22628 invoked from network); 5 Oct 2022 17:21:29 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 5 Oct 2022 17:21:29 -0000 Content-Type: multipart/mixed; boundary="===============8226288164245926893==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_firefox-esr=3A_update_to_102=2E3=2E0=2E?= To: ml@inbox.vuxu.org From: Duncaen Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Wed, 05 Oct 2022 19:21:29 +0200 List-Id: Message-ID: <20221005172129.yzAun7ZF6i5xrWZplBkGbIIoG2-O1u75_BlogMbMs3c@z> GitHub notification mails are now in MIME to allow UTF8. --===============8226288164245926893== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgRHVuY2FlbiBhZ2FpbnN0IG1hc3Rl ciBvbiB0aGUgdm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20vRHVu Y2Flbi92b2lkLXBhY2thZ2VzIGZpcmVmb3gtZXNyLTEwMgpodHRwczovL2dpdGh1Yi5jb20vdm9p ZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMzk2NzcKCmZpcmVmb3gtZXNyOiB1cGRhdGUgdG8g MTAyLjMuMC4KW2NpIHNraXBdDQoNCi0gW3hdIHg4Nl82NC1nbGliYw0KLSBbeF0geDg2XzY0LW11 c2wNCi0gW3hdIGk2ODYtZ2xpYmMNCi0gW3hdIGFhcmNoNjQtbXVzbA0KLSBbIF0gYXJtdjdsLWds aWJjCgpBIHBhdGNoIGZpbGUgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lk LXBhY2thZ2VzL3B1bGwvMzk2NzcucGF0Y2ggaXMgYXR0YWNoZWQ= --===============8226288164245926893== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-firefox-esr-102-39677.patch" RnJvbSAyNzI1NGM3MGNkMjA0YmUwMzNmMjljMDBhZDc2YzdjOTU4OTUwOGY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBvcmVvNjM5IDxvcmVvNjM5MUBnbWFpbC5jb20+CkRhdGU6IFRo dSwgOCBTZXAgMjAyMiAwMjoxMjowNiAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMS8yXSBmaXJlZm94 LWVzci1pMThuOiB1cGRhdGUgdG8gMTAyLjMuMC4KCi0tLQogc3JjcGtncy9maXJlZm94LWVzci1p MThuL3RlbXBsYXRlIHwgMTg4ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDk0IGluc2VydGlvbnMoKyksIDk0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvZmlyZWZveC1lc3ItaTE4bi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmlyZWZveC1lc3It aTE4bi90ZW1wbGF0ZQppbmRleCA3NjUzMDNhOTMyMzYuLmM0ZTQzYzQ3ZGZmZCAxMDA2NDQKLS0t IGEvc3JjcGtncy9maXJlZm94LWVzci1pMThuL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmlyZWZv eC1lc3ItaTE4bi90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2ZpcmVmb3gtZXNyLWkxOG4nCiBwa2duYW1lPWZpcmVmb3gtZXNyLWkxOG4KLXZlcnNpb249OTEu MTAuMAordmVyc2lvbj0xMDIuMy4wCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXRhCiBzaG9y dF9kZXNjPSJGaXJlZm94IEVTUiBsYW5ndWFnZSBwYWNrcyIKQEAgLTEzNSw5NiArMTM1LDk2IEBA IF9wa2d0bXBsKCkgewogCX0KIH0KIAotY2hlY2tzdW09IjZiNDc2ODRkZTQyMTg3NDlkOTBhMDdi ODU4Y2EyOThiMDM0YTJjZGExMDY1NTk0MWU4YmE0Nzg5MWQwZDk1ZWQKLSA1NDg1MmVmOTM3Mzg3 Y2JhMzYwZmIyYmVkMzQ4YzliYzNmMTE1M2Y3MjQyYWQ1NDkxY2EwYjg1ZWU2ZWQ3NDU1Ci0gZGU2 NmUwMjYzZGQwYTJkODc1NTRmYTFkOWE0MDZkZWU1Y2IzZGYxYTc3NGRmZmI4NjM2ZTFiZTJiZDgw YmMxNAotIDFmNDgyNGFkNTFhNjYyMjg1YWMzYTBkODAyOTQ2MmEzYmYxMmIzNmViMDgzNGU2NWI5 Mjc2ZTA4NjkxMTVjMDkKLSBhMTZmYzZlMGExYmYyNTFhYjE5YjdiYmZiNjIwYjUzNDM3ZTViZjcx YjBlNzg3MWVkNDBhY2U4Yzk3ZGJmNjM1Ci0gZDkwNTdiYzcxNjA1ZjJhOTNkOTI0YmViMzc0OTcx OTViOGFkODM1MDFhYTRkMjExYWQ3MTEwNmU3YjliY2U0YQotIDM2MzE2YTdjNGNhODQ0YWMzZTgx YjJhMGJiOWVlNDk1MjAxN2MyZDI0MDRmNTI5ODQ4ZTI4MGQwNGEyMTU4OWIKLSAxNTBiYWZkMDIz OTMzNTU1NjdkNzViYjlmOTY2OTAwZTcwNTAyZmRkZGZmMjgyMmNiYmQzYmJjMWZiM2ZkNzg1Ci0g NWI2OWU3NjE2NjZiMjhlNTYwNGQ0Y2Y4YWJjNzJhY2YzYzNkNzlhYmViN2I2MjMwZTU2YWFhZTc3 NWVjMjI1YgotIGIwMDVjNjNkNWUwZDkzM2VmMWE0MTkzYjc1YTI5MWE2MTUyNGE5MzljMzQ2NWQ0 MWVkMTExNDE2MjEwZWI5N2YKLSBkNWEyZDJmYWZiZmM1MGUyM2Y1YjY4ZDMwZmNkNzM3NmQxMjdm OWY2OTdjODcyZDBkN2M4ZTE5ZWU0NTM4Y2IxCi0gMTZmODhlYzVkZTM5Zjk4MjA1N2FiY2YzNGYx N2IyMmM2OTg0NTNkZWJiNjJhNWExOGUwNDc1Nzk4ZmMxY2NhOQotIDg0ZDQ5MWY3M2JjNTNkYTQ2 MDVlZTQ1YTg2MzNmMTRlZTU2NzJiOWE2MWM0MDY4OWQ1ZTMyODk3NDRhN2NiMmQKLSA3NzgxYjZj Mjk5MjMzNjBmZDNhOTViZDJiMjUzMmViYTdmOTJiZWQyOTY0MGUwMjc2YzE2MWVhZGJlNTZhMTNm Ci0gNzk4NDkwNGVkZTM1ZGVmMzNjY2Y3M2ZkYTlhYTQ2Nzc3YzY3M2M0ZDI3ZGUzODA2ODczZDE3 Njk0ZjdmMGIxMwotIDRjNTdiNmViMWNkOTY4YmExZWI0YjQyN2JlZDY2YmFiMDRmYjQyNDI0ZDAz YWU0Yjg5MmZkMzY0OGUyNTViMmUKLSBhODBlOWUyYTYwNjJiZjY4MTA2YmExZDFiOGI3ZTJmZjYw OGNlNTJmYTU1ZDQzNTU4ZTdjMDczZWMxODcyNTE2Ci0gMmIwNDBmZjFkMDEwNTA4NzYwY2I0Y2U0 Yjc2Y2NlOWU5OGI0NjIwMjAzYzFlZjc3Zjg3YTMzNmNlZDBhZWZjNwotIDFmYTRmNWU1OWE5MzUy ZjE0YWVmZTBjZmY4ZThjNGVlZDRlYmExNmY0ZDhkYmNlYzY4NTBiY2UwMzUzMDFjMTgKLSAyZGEw YjA5YjliZjgwZjY2ZWRjNmUzZTlkNWMxYjc1ZmFlMTI5MDViNTE5M2NjNjRhNzNiYjhiZDdiZmNi YjA0Ci0gZGNlOTZjOWZjY2I4Yzg1N2Y4Y2MzNzBmN2Y1NjM1YjE0NzUxMzgxOTViMDVlOTQ0Nzgy YjA3MmJlZWJjOGQ0NAotIGU5MGRiZjg2YzE4MjNjMjA5ZGVmMTEwNTI5OTU4MzRlZDE1NTI4ZGM1 YzZkM2I1MDJlZDMxNWRkNDcxYTlkNWIKLSBmMzg2MjRjODFmMmY5ZGFjNGYwNWI5ZTlkNGQ2ZTdh NGUwMzgxYTI3OWUzYjRjNTM4MTFhZWIxZGIxM2NkMDAwCi0gMjIxYjdmNDAzMWE3YzEyMGQwY2E3 NTNkOTNjNDFjMThhYzRmOTUwMGFlNDI0Yzc5ODNlNDU5MzQ5N2RkYmJmOAotIDYwZjVjZWIyMTI4 N2E2Nzg2YTZkZDJkMTc3MzI1ZGZiY2M2Y2E3ZjlhNWRmMWI5Mjk5YTJjNWJiMDFkOWMxNzIKLSAz MDhjZTI1YTlhMGE5MDM4ZGQ5NGMyYzIyODg5YzU0ZGVmMzkzN2QzNWVhZmJjYjM0Yjc1MDI2Y2Yz ZGUzYjhmCi0gMmQzMzJhNmY1YmQ5MjAxNzcwMGExNWRhNWZlNTA2NjEyY2VhMDNiNDlmOTAzNTky ZmMxMDVmY2E5NzhjZDFkMwotIDVjZDM1NjY2ZjU0YTVhZTRlMzVhMWNhNGM2MjdjZWM4YTQ3NTk0 ZGE0MDgzYWRmNGYwNmRiZTMxYzIwYTc0NDQKLSAxYzEyNTI3NjVjYjI0ZjZhMDIwNmI2NDhkODM0 NTY2YWNhOTIyOTA3NWY3NDEzZjljN2RlZmYxOTQ5YTk5YzM3Ci0gMDAyNzcyYzQ2ZDZhNzE2MmUy YWRkNDcyNmYxMDVlNGMwZTM1NWJiYjg0Y2U5MWIwN2FiMDI5NjdjYzVmMWViNAotIDY0Y2UyYzA3 MzVjYWY5YjY3ZDJiZTAwM2IxZDY2N2JjZTVmZjYxNDY1MzE1MWM2MTdlNGQyNmUzNDkwMzNlM2EK LSA2MGJkNWYyNTMyNzAwYWU5MTM5ZDRkNTlhNTcxYjcyYjI4MDZlODA2MzBmZGRiNWY0NDQ0Yzdk NmUzNzdkMmRjCi0gMjc1MzMxN2I3NTgwZWUxYTM3NzI3NTkwNWUyNTQwODQyNjNkMGE4N2JkYTFi YjU3MjUzN2ZhNzU0ODlkOTJkYwotIDdmMWI3NGQyY2M1YTljNGM2Yzc4NjRhNjJlYWRlZjJiM2Q3 MmM1Y2MyMDEwZjVjMDNiY2UzYTlmYWUyMjg2ZGMKLSAyMjMyYzNiOWE4ZjMxMzE0NTk2NzE1MmJm MWRiYWZkNjIzMzU5M2NlYjQyMmQyYzMyNzdkMWI0Y2ZlY2I2ZjUwCi0gYzQxZTg2NmYzZmMzY2Yw ZTAwODg2ODFiNTViYjg0ODlkZTFjNTg0MGNhN2RjNTJkMWY0ZjA3N2I1MzQ1MmJkNQotIDVkNzg3 ZmQ2YTlhYTA2Y2UzMWE2ODIzYjMzOTNiYTdhZDY2Y2YzZDM3NGRkNmVhYWIzNjQ4MTAzZTgyNmEx MGIKLSA4ZDczZTAxNjU1YWY3MTE3ODU2Mzc0YmUzNjY5ZDUzMGFmOTZhNzljZGI4MjM4YmM5NTM2 ODhkNDVlOTQ1NjdjCi0gMDNmMmIxMzM3NDY3NDZjMzI4Y2I3ZTQwNTViNTY4ZDhlOTljZWE1MWM4 NDUxMzZjM2Y0NDQ2ODQwZDY4ZTMyZgotIDY5MWIwZTc2MGViZTUyNjlkZmE0YWE0ZWE4ZGQyMTM5 MjYwZmJiMGNhMzhhZjRjNTQzODU0OGI3YzdlZTg4ZjUKLSBjNjM0OTIyMzZlNzViZjk4NGExNjcx ZGU5NWRkZGM5NTRjMWI0YTFlOTJmNTIwMWM5YjMzM2ZhZWZhZTkzMDM1Ci0gZGY5YTAzNmM2N2Fl Y2IxZWE2NWY5NzA5YTExZjZjY2RmMjUzNDUxZGNiZTZiMjY3NDM3YzUxZjQyMmI5ZGYyZAotIDMy ZWM3OGE1MTQzOWIwMmYwODdjMTJjNmJlNGE5MTU5ODI2MTEzZTgzNzc0MDg1ZTgwMGMzN2I2ZDdj MTEyYWEKLSAxZTQ0ZTNkZWQ1YWEwN2Q0NGYzZmRlYThjZjY4YmIzM2ZkMjQzY2RhMTU5Mzg0ZWE4 Yjg3ZTc4M2VkNWM5YTY1Ci0gMWNhYzQ0Y2RlYzY4YjU2Yjc3YWJhMTM5YTg0MjVmNjA3YmFjMzRh ZTJlMDllMjdlY2ZmMjUyMmIxNmZlZjQ0ZAotIGFlZmI0ZmJhY2JkZmM3NDlhOGQ1ODg4ZjdhZjQ4 OTk5NDA2ZjIwNzg1MGZhZmFlOGVmMzljMDgzZTA4ZmE4MGMKLSA3NTNkYmNmZmRmNTRjZTM3ODdh OTM5NTE3YjA1OWYxMWMzMDVlZGMwMzViYzIyZjhhOWVmZWQ2MTQ1YWY2MzkxCi0gNmMzYmU1YWJh ZjM4NzgzOTBiMDc0OTcwMTMyYzRjYmE5MzVmNzE2MGYzNjVjZmE5OGEwN2U2Yjg4MjA4NGJkZAot IDBiNzc3MTk2NWYzNGM4OTBkZWEwZDIyOTBhMjgzMjEyYTFjZGMwYzhjODA0NGVjNjM0NjIyZDUy ZWI1OTVkZjkKLSAwOTEwZjk4YTg5YjcxMmE0MGFlYjQyNzYxZjI1Yzc2MzgxOGFmMDVlZGI1Yzk2 ZTJiNmNmYmEwMjNjMjhhYjczCi0gNzU4YWI2ZWExNTA3MDJlZTBkNjIwM2EwZjc1ZThiYWE1OTVj NGEwZjNkNGNiOWI4NzA3NmY3MzJhMGU0NTQ2ZgotIGQ0MjU5Mzc1ZjMyMWI5ODQyNjg4NWUwYjkw MzE5OWRjZTFmOTg4Yzc0OTYzMjk3YmJkMWEyYWE4Zjk0YjA1NDQKLSAxNjE0ZTEyODhmNmQ2Y2U0 M2E3MzQzNTg2MTQxZGY1ZTEyMWNmZjdmMWZkNzAzYWI0ZWM0MGE3ZjA3NDk4ODQzCi0gM2FlNTIx OWEzODRhODcyZmRiZGQ4Y2E1ZDk5YWQ1MzcwZTBkOGQ4N2Q5M2Y1ZTM5ZTk2YzVhMmRjMjY3MzZl MwotIDA1ODA3YjFjMTc4NDlmZmQyYTNhNjNiMWUyNjgxNWRjOTQ2M2FhM2MxMzdmNjQwMTEzNTMw ZDI2NjJkNjQxMTYKLSBlNGYzY2ZiMTFkZmFjOGVjNGNhZjI5ZjM0ZTIwYTBjMGJiNzk5NjQ5ZmQ1 YjUzNGYyMmYyMDJjMjM3NDkxZjdmCi0gODBiMmI2NDQ2NTkwYTlmYzU1ZWQ4MGE5ZTA3YjY1N2Nh ZmM1ZDUwMjk0OTg4OTc0NzQ3YzBlNjBkNDFmNTY5YgotIDFiMzJiYzEyODJkZWQ3ZjZmMGYwOTc5 Y2JjZTM0OTZlZDA3YjFmY2FkNjRlNzBiYmJjMmViNWQyYThmMzk1M2IKLSAwZjgwZTNiMGE5ZTE3 ZjM5NTYwYjdjYWQ4MjgwZTI1YzAyNzg5MzVmMTI1ZDhlNzI0YTIzODExMDJhYmZmNzgzCi0gZjI1 OWVlMjY4M2U1MjUwNTFkNmYzMTRkNGJhZTRhOThjMDQ4MmEyYTQ0M2FhYWMxMTYwYjJlMGMxMzI2 YjkzMQotIGI5YTllYWI0YzVlYTExMGNjYmNlMjBjYjg4ZTY2NTJlMmNmNGMyOGJmZDBhYTk1OTA3 MTQ4YmVmZDE5ODU0NGQKLSBhNWE2ZTliZGFhZDQyMGYyODFjZTVmZDE2ZGFiZjUzMzhkNDhjN2Nk ODUxOGMzOGIxZTEwMWI3OWI1MzBmZGI5Ci0gYTFmZTZhMmM3NjA2YjA3MjA5MzM0OTZjYWQyYmM5 NTk2OTM5MDVkYjg3YzNhMmU1MzEzZGI4MmRiZmViZGE3YwotIGQxYjIyYTQ5NWM2MzdkNTY1MmM4 NGFmZTg2NTBkODc2YjQyMDZmMmVhMGQ5Njc1MWJlYzY4NGVhNjMzMjdmOTgKLSBlMTU4N2RhYzA4 MjQ3OTgyMTY5N2Q5N2I0ZDVjYjYzYThkMWY5MTg5ZmRjMjA0ODg4NWQ5NjNhZWE5NWI4NDAwCi0g NmU0MGE1ZDVmMGNiODc5NGVkYzVmNmExZmFlNzc4ZDg5ZjZkYmQ5N2Q4YTI4ODIzNmQ3MmZhNTcx ZmZlOTFjOQotIDMzYjVkZjYyNWFlMTNlYzM1YjQxYmIzNTBlOWU2NmQ5Y2NjMDRmNGQ0ZDhjN2U0 NTAyMDM0NDczOTg4MWU2ZDgKLSBlMmYyNzE2OTFiYjFiOTg3MzU4MzE3NWZmMzAzYmJhYWYwNWE5 ZDEyMDdmYmU4ZmZmYzM0ZWM0YWJjZmMxNTQ1Ci0gMTMzODJkYWJjNjA0ZTk5NTUzYzk4YjllNDFl YjA0NmQ0Njg4YjE1ZjJlZTlkZDEyYzRmOWM4OTY3YWZhNjJkMQotIDc3MTMzYzY5OTY4MDczZmVj OTA5ZGJlOWU0NGQyZWFlYTAwMmNiMGQwZTE0MjEyNTg2NWQxYzAzYzg5ZWQ3M2QKLSBmODk5ODEy OGIwYzY1NmU3MjEyNGJhZWZmNDVjNzIwMTM5NTNmODMxNGFhNDk1OWI2ZmVmOGExYjMwMzk2NDdm Ci0gMmYyNGU1ZGIwMjVjMDMwMmZlM2I2OTZmMjgwZGNiYWI4MzcyOGFhY2NhZWZlMWZmMDgyZTE2 NTI3Njg5NjI5NgotIGQ2NTgwOTVmZDJkM2U0ZDNkZWNiOGMyY2RhYTY0ZjAyZmQ4YjY2M2JhNzEx ZmI5ZjIxMzBlZDdlZDJhOTcyOTEKLSA3YzI4YTgyZWNkZDYyMjY1M2IyNmE5ZGQwOTEzYWM3ZDdj ZWJlNzI0NmY2NDg3NGZlYTJkMWZhNGFmMzU0YzJhCi0gZjc4Njk0ZDQzODAzMmFmM2NhMWEyNjVh MDg5NDA3ZWIxMmI0MzFiZDMxNDE3NzY3MmE2NjMzOGI5YmY3MzkwZgotIGVhMmQ3NjliOTBhMDY0 MDBlYmEzZTFmNGVlYzU4MzQyZmU0NDUwZWNjZTM4YjFlNzIxOTIzYTY1YmVkMzQzMzcKLSA4ZWRm NWIwNGI2Y2I0NzdmNDgyYzE0ZWZkYmFkYTcwMjNmZjdhMGVmNTg0YTRjMzBiMjM1MGU3ODI1YTYx MmEwCi0gODUxZGI2MGEyMThjMzZiNjFlZTBhZGZjZGM0NzhiYzA1MWM5NWU0MWE0ZGJhNTRkNDM1 OTRiOGYwM2M2YjE4NwotIDZhZjcyY2FlN2Y3MmNlNjhjNjQ0ZDQ5YjZhNjIxOTQ1ZjVlOGY3OTEx OWE4NmJiNjdlZTE0NDU4NWY3MzQ5MjUKLSA3YjAxNzcxMDc4ZWM0NzViMDEwM2ZjYzQyMjJiMGI0 MGViOTJlYzY0MTgwYWFhZDAyZjI4NDZjZmRmYjNlMzE5Ci0gMGM0ZGY3OGVhZmJiZTdmZjk4ZDll ZmYwM2JiMjU4ZDFkMGY0NTkxMTAyMTQ3ZjY0M2VjMzk1NzExZjM1ZDk0MAotIGNmMjE0MzRmMjRl MjIxY2U1ODE4NGY0M2E1ODJjMTAxODdlY2ViN2E3MWRhNWQ4MTE1NmNjODcwZDc4YzFmNGMKLSA4 MzkwODhlMmYyM2Y2YzYyYzM4YzQ1ZDVmNzAxMjUxM2Q5NTAzNGFhNWU2YWIyODMwN2YxNTJkYmMx MGY5N2QzCi0gNDA1OGFlNmRkN2I1NTZiYWUyYzEzYmI2ZmEwYzVmMTYyMDdjNmZlZjRlMDgwMmQz ZDBiYWRhZTIxMDhhMGRhOAotIGQyYzQ3M2ZiOTNmMGM0ZGM2N2FlMThjMjVmZGM0MTQwNTZiZjc3 OTAzOGMwZjVkZDI1YWE2M2E5YTVjZmNkMGEKLSA2ZTMxYzc5Yjk5NTVmZDg3OTUyOGIwYTYxNDI5 NWRhNjlhYjI2YjYwODI3NTk0NmE0YTVhMjkxNzhhMmFlZDIwCi0gODUyZmU5YWIxNmQyOWY3Y2Y4 ZjQ0M2JmZDY1ZmExZDUyMmE5ZjI3ZWY4NzY2YWQ3MmEwYzIyYTY1NDUwZGMxOAotIDk0MTE4NzNi MWVhMDFhMWI4NjU2OTU3YWVkYjc5MTM3ZjRjMTg5YjljZDNlOTY2MjZjOGU1MDM1MzljZjJjNGIK LSA1ZjQzMTA2NDcyYWU2NmRjOGMwZmZjMzE3ZmFiYTA5YzIzNzBkNGYxODgzN2MzY2ZhZjA1ZWI5 YjAzZjMzYjkwCi0gMzBmM2Y1MDEzMzUzMmNlMzc5YjlkNWRkMGY3ZTgxMjA0OTA1ZThhNDNhMjdl OWQyYWMxYTI2MDU5ZTM5MzkxMwotIDI4NWY2MTVjYzg4NTJmZDc0YmQ3NjkzYTVhNDViMTA2ZjI5 M2MwYTJkODk4MzZlOWYyNTMzNmFjNjM3NmFmNjkKLSAxOTBhYzc5OTFhOGI1MDFmYWIyNjU0ZDIz YjVmNmYxZTdhNWYwY2ZlYjQwMmM4ZjVmZTM4MmQyNWMyMjIyZGM2Ci0gMmRlNzY3NmM3MTUwOGZm YmIzMzdiZGQ4Y2E2OGY5ZDJmYTFlMzBmMjNlOGJlMjgzYjkzN2M1YzRlMzBjNTlkNiIKK2NoZWNr c3VtPSI5M2RkMDMzNGQyNzU3MzFlYTRmODY3NTAwMTExZmUzODA1OGUzMzhiMzE1OTFmOGNlZTc0 MTMzYTU1ZmY0ZDQ2CisgZmEwZDBjMzg1MmUzMzgxNzFiNzYzZGQwZDQyNTQzZjcyYTBmMmEwZGEx ZTMyOWEzMTdmZDQwYWQ0ZjA0NmFiMAorIGY5MmZhMGM4NmFhZTQ5MTEyMTJkMjE5ZDAzY2VjZjIy NDNlNzgxZTE2NmRiZWJiODdlMmI5ODcyODMyNDU4ZDQKKyBkYTMwMDI3MzAzODg5YWI4MDc1NWYw ZDVjZGVjYzRjOGQzMWQ0ZmQ5YmU0MzVmYjhkYzU3OWZkNzE1NzQxMDI3CisgNzEwYWEyNjJhYWQz NTkxMjAzMzg3ZDA4YzIzYWViZmU4NjJkNjQ3MjJiZTc3ZjhmYjc2OGQ2ZWFlZjRkNmYwOQorIDE2 N2FhODllMzcwNmM1YzFlNTQ2OTRjNzZhN2Q2ZTEwYmFiZjVkYTE5NTNjZDFiZDQ5OTQ4M2ZjZjIy MDljYzQKKyAxZWJkYWYyYTY2NDVhNTczZGZmM2FkNTMwN2E3M2FkMGNkZGVmNDZiNDZlN2ViZDZi OTJhODBhMzYyYjdkNWQzCisgZGUyMDQ2NjUwMWRjYjc4ZmM1YTYxNjIxMDdlNzgzZjhkNjMxYTQ2 YzcyNmUxMTIyMmQ0Njc3OTQ1NTBmMWRjYworIDhmMTQwMjI2NjZlY2QzYjYwY2Q4ZGRhYjE2YWFk OTZlMzZlNTYwMmM5MzE0NjcyNWQzNmRlMjQ1MzY4NTRjNjUKKyA1NjMwMzk0MWEzYzhjOTU1YTA3 OTc2YzE0N2UzZjJkZjg0YTI4Mjk4NTU5OTFkYWUzYjU3OGI2ZmNlNWViYmM1CisgNmUxNjljZTFk MWViMTMyNzJjZDk3NTI0N2M3ZjI4N2NlZDFjZmQ1Nzk4MzhjMGYzMWVkN2ZhNGUwY2FiMzEwYQor IGE1OGJmNjIyNTAxYjZiOWU1ZDU1NWNhMDVmMTA3MmRhYWViNjViNGQ1MWM1OWM2ZDllMTQxOGIw OTkyM2U0ZTIKKyBlZjIxMDYxZWRiODU1ZmE1NWRlYzkxYjE2MDU5M2ZjZGJhMDczMzY1OWU5MTli MjU4MjY4ZjI0NmM0NzBkMTlkCisgMzNhZGNmYjQxZDlmYzhhMTllYTBlNzAxNzM2YTYyMzczOWMy NmU0NDRhZTNjZDA4YWI1ZjU4MWY0MGUwZTI0MgorIDI1ODUyMTY5OWQ3YjE5ZGFjMDIyZTFiMGRl ZmU0YTIzMjFlOGM2ZWEyNzdlYmMxOWFlNDU2MjIyNWEwNTI2YzEKKyA2MGI5MzQzYjU1NDVmYTRh OTQ1ZTI0YTM2Nzg2ZmJiMzJmZGM1OWViNGMzMGVhZDVlODA3OTdiM2Q3M2RlOTc3CisgZDc3ZTE1 M2Y1MGRlM2M3MGRmYjBmZDE0OTdhOGFkMjMwNjdiNTA4YzEzZmVhOGU1YzAyYWFmNTRiNmI3Mzcz MAorIGJmYjJiNDkwNDc1YzRkMGQ0OTI1NWViOWJmODY4NmIxMGJlYmEzYzAzNzkzYzRmYmE3Y2Fh NzFmZWE4MmMyMDcKKyBiOTk2N2FkMDllOTRlMjM1NmRkMDA2NjZhMzU1NGRmOWY5ZTQ3YjI2YTJh NDJmZDBjYmJkYWRkYTg4YzJlZDQ4CisgZTYyYTQwNWU0OTg2MDBkYTkzNDMwNjYyNDJlNzFlZDVj MjAwOWIzNjczOWFiYmYxZjJiMjkxZTI1NDE3MDU5ZQorIDA1OWU0OTBmODU1M2YzZmIyNjIyMDk0 YzdlN2Q5ZjJmNmU4ZjFlNmIzZDgyZWM5YWEzZjQ0NDBmYjQ1NTU5YWIKKyBmODVkNzJkNjQ2ZWYw MTJmMWNhYjA3Nzg1MDc2OTI5MDUwN2U0YTQxOGNmZjUyZTg2MWUxMjUwMzA0OGQyMmU0CisgNjBk NmIxZTAzMzVkM2E2MTRjODAwYWI0ZDNmZmU1NWQxMjFjNmRlMTI4YWFjZDNiOGEzZTAzNjMxOWY3 NTI0MgorIGRjYTU0ODRhOTQ1NjkxNjJkYmUwNGQ5YWY5NGYzZTQ2MWIzMmUyMWZjZjJlZWUwMDBm ZjE1MWRkM2I3Nzk3YzUKKyBjYjA5MmMyYTY5MDBmNzdjNjEwODY4ODc2MDg2N2UyYTAxNmM3MGFi MjdjMzllZDI4YTE0MDI0N2MxMzcwMjYwCisgYjFmZmFiMzViNWI1ZTE2MzUxMjE0OGIxZWU0ZTRl Y2YzNTk2NjRmOTE5NjMyODM4M2VlMzYzOTE5MTcxMzFkOAorIGVmOGRmZDhjYzc4YTJlZDU1Yzkw ODIyMzZiYWJmYzI5ZjkwZjA5Nzg4NjRhZWY0ZWJiNzFjNTJjOThlNzM3MDIKKyBmYzFjNjE4MzNj YWEwY2Y4ZmMyNWRjMzE0OTk4ZjdkOWEzZmIyODI2MTljZGFmNjQ0MWNhZjE3ZmM3OThkYmIyCisg NmZlODY0YzlhOGJkNWIzZjc1ZjAwYWU5MjBmYjk5NTk5NzMwOThkZjgwMWIyOTA2ODM1NTBkMjg5 MTY4NjQxNQorIDNlYzEwYjllZDlmYjZmYTlkMTEwODQyNGY2YzE4ZjkyMDlmY2IwYjNmNWQ3YWU1 MTVmYThiNzg5NWNhY2Q4ZjcKKyA5NjliYmFlYzU2Y2Y3MjdiMWY0MTEzZDlkMDUyODhkNGU2MGRm YWZhNzFhYjM3OWIyZGYwODMxNDgxMmFiNTljCisgYzc2MmM3MjhjMTgzYjg1NjFjYThkNzhlOWY1 NjVjMzAyOWQ5MGRmYzc2Y2UwNGQyNjZkZTYxNGJmZWM3ZDBhZgorIGJjMGYxZTg0OTkxMGI3OGE3 OTBiNzZmNjMwZGM4OWU4NmU4MDc5MTRlNTc0NjRhOTE2ZWFhYjA4ZmQ4NjViOWQKKyA1NWIwN2U1 ZDYxZWY2NjhjN2U1M2I3MzcyZWI5NjQ5YzYyMmVmY2UxODUxZGMxMWNmZDk2NzUwMWE3NmFmY2Mx CisgNDdmOWYwM2VlMGFmYTRiZjc3ZDFjOTE0MDU3YjZiMTdlMDRiYWUxMmZjMDU5NTVlMjZkOGIz MDA4NzJiZDRhZAorIDcwMmNmN2JlNzAzYjBjZjllOGQ2ODIzYTU3OWRiNDhhZDQ1ZGQwN2U1NjU4 MjM3YjZkY2EyZWNmMzFkNzk3YTYKKyBjZGNhYTVjOWJlZDYxNWQ0MmMzMGUzY2I5MTE1NDhlNzg1 MGY4NTY2ZGZiNzZjODNlY2E2ZTdlMmMyOWQyYmE5CisgMDlmNWFiYjhkODlmZDJlMTJlOTJhOGI0 ODk4MzE5Y2U5MzcwODQxODM0OGZmZWYzMzZkNGIwMjgwOWZhMGNkMQorIDQwMzE1NzIwZTYyMjRl M2I5N2FkNGM4MmIxYzllMjcwNWUzZTFkNTExOTY3ZGI4MTg0ZmMwNDYzNDQwMmFhNzcKKyBiMTJh YmNjNTY5OTYxZDIxOTlkNGU2YmRkODk4ZDMxZDM0M2I5M2ViZGQxYTU0NzVmMjI0MWIwNzM5MWFh ZDMzCisgMTRjYzMzMDMzN2IzM2Q0MjczMTQxNzljY2ViNTFiMTFmYTgxZDUwMzE0YjgxNjI2NGM5 MDI5ZmMwOWIzZWZjNgorIDM4MzYzYmU5MGZlMDFlZTAyYjk3ZDJlYWM5YTA0YmQzZGM3MzIwOTli Nzg1NjFlNGNjNzNiNDBjNDk4MGEzNGQKKyBiNjYyNTE0NjYxZDI1NTFhY2U0MDA2MTRjOTA4YmQ1 ZWI1MTI5ODMwNmNjZTgwMWY4OGVkOWU1YmUyYjNjN2JiCisgOWEzODY1MmJjZWM5MjViM2MwNDY5 NGNhZTVlNjA4ODMxY2M3OGY1NmVmMjJlYjNjOGJiMTY0MmQwMTE2OGQ1NQorIDZmY2JjNmJlMTMz NmE3OGE3NTJlNTFhYWE0OGIwMmU2NDMxOTY5OWFiZGM2OTY1NTE5ODg3NDI2YzQ5NmM1NDUKKyA3 YzBhZmI3ZmM2YzEyYmUzNDBkZTU2NGJiYmM3M2JlNzcxZGMxMGU4Nzk4ZjFmZWEzYjcwMWQ1ZGI0 MWMzNGZhCisgMWM1MDg0OTMzNWViMWIxZWE5YjQ0MDQ3YzI5MjUwYzFiZmU1NTMzMGNhN2U5MzAx Y2M0ODdjNWQ5ODQ0MzU1YworIDAxNDQ4NThjNjlkZmFmMzBhYjA1MzQwOWZkZDM5MTFkODYxNWJi ZmZkMWQ2ODRhNjM3MmRjYmIzOGEzOWEyY2QKKyBiZTdiMzMxOTU1ZDUyMmNkYzhmN2VlZTc0YTZl OTdiNWNkYTA5NDVmZWU1MzYwNGIxODdiMzI2MjBmZTA0ZjdiCisgYzdkMWZiYmY2MTQ2MjJlMGU1 Y2MzNDdjYWI2MTI1OWJkODZiMWUzMTc4M2Q5ZWRmMWZkMmFmYTdjNzUzNTA1ZQorIDU5MjQzZmMy ZGU2Y2U0MmU0NzcwMDU3ZDljNzRjM2NhODViYWViZjE5NzdlOWU1YjU2OGU4YmM2YWRmZmVhNmYK KyAxZGE4OWZhODI2ZTc1MDhiODRjZjJjNTM1ZDQ3OTMzNWJjODkwZjMzM2ViYWNmNDEyYzY3OTJm MjZjMjY0MWIyCisgN2MwYzU2NTUwY2RmNjYzYjk0YTZmN2JmNWM3MWRiZThhNWYwOTY4NTY0ZDIy NDBmYTU5Yjc5YmFhZmRhYmEzZgorIDMwNWUzOThhNjQ0NDNkZDNiZDUwMjUwYzUwMjUxNjNmYjFi NzMyMGYzZDEzNDQ5M2I4ZmRkYzE5MjIyNTA2YWEKKyBmMzc4NjEyMDNhNjQwYjZiNmFlMDBlNDk5 YTE0ZTcxZTU4ZmEwNjQ4M2JmMjIzYmFmMWJkYmYyYTQ5MDcxN2NiCisgNjhjMmRiM2IyMTNjYTlj NTg2ZTc4NTQ4MTcwZDVkNzYzZDE3NzU5OTkyNzcwMjhhY2M0ZGUyNmY5NGEzOTZkOAorIDJjMjhh NmRjMWY4N2ZlMTI0YjRiMTUwNGVjODBhMDZjNWY1MTM3ODkxZmM1OTk0MzJiY2RiNGEwZDVhYTZl NDEKKyBmZGQ0Mzc3OTE1ZWYyMjAyMWQ3NjEwY2I1YTlkNmM5MWU1M2FjMTZlZWU5ZDYyNjhhN2M0 YzljMzU5YTQ1YTBhCisgOTk5ZjhjMmRiMGFiZjk3NDcyMmZjOTc4ZTdmNzM0NTdlNjc0YThmY2E5 YjRjZWQwNGU5MmUxNjNmZDg1OTdkYQorIDViZjczNzgwZTFmOTUzZjM0YzIzNjdmMGMyN2NhNzE3 YmFlZjE0YWFmNjQ1YzM4NTUyOWM2YzQyYTNhMWM3NmUKKyA4NDE0NTQ4NDk2NzkzMzhhZTQwZWVl MGQ3ZGM2M2M0MzdkYWJkNjc2YWFhYWNmY2YzMGRhZjA2Yzk1OTRjNzNjCisgOGIzZTlmMWE3M2I0 NTI5MDU2N2E5MmYwNDg5OGYzMDEzYjJiZTk4NWEzM2RlMTM2MDQwZjBiZDNkOGNhMzg3NAorIGI4 MGQxODBkYWNhMmQ5MjBlODZhOTExNTY2ZmRhYTFkZDFmZDhmYjM4NzBhNzVlMGFmNGUyMDhhMDVl OTdlOWMKKyA2M2E4OGI2YjJkYjE0MDM3Zjk0M2I3YmMyOGNmZDQxYzJjYjI5NjY2ZDM0ZDRjZjZj MTkyNjZmODMyMzQzNmZkCisgMDQ0OTRhOWIxMWI2NWNlMjQ2MDQ4NTI1MWMwYmI5MDc2YmFmZWZh MGUwOTYxZjU0YTIyYjJiYWY5ZDIzN2Q1OAorIGFiOTEwYzEzMzBiM2I1ZjgyMzgzYzNmNzNjNDZm MWJjMmU3MTJmYTAwY2M2ZWM2ZTAyOGNlZGY1Y2Q1NzhiZmUKKyBlNmQ2MGIxYTBjY2QxNjIzNmYx MTg2ODI1ZWI3NTg3MDNjOTYxMWIyZWYyMGE2ZTg4YjJkNGI3MDUyNDExYmI5CisgNzQyOWE0Y2Y2 OGRhYzNkNjAyN2RhOTQyMmQyOTgyMmYxYTY4NTNiYzY2OGYyMzg0OWNhOWU1NzlhOGJiYzI5Ygor IDQxNTdhMTFlMTkzYTkzMzQ5YjkyYzFkMGE2OWFhMWYwYzhjZmYwNzA3Mjg3YjhlNzdkY2M2MWFi OTAzOGY2M2UKKyBkNTZjNTgzMjYwN2JhOTBmMmM0YTE2YjFjZmE2NTc3MmUwYjNjYjlkOWM5ODdh MjU1MzE3OWIwMzNkNDU3NWI2CisgMzc2YmVkYmIxZTUzMjc2ZGYwZGFhNjQ3NDZkYTYwMjJiZGNj YWRmMGEzZWZiMmVjNThhMjg0ZTNkODc3YjA2NQorIGFiZDM2NDA1MmEzZmFiZTA0MTI0OTIxNjVl Y2Q1NGUzOWU4NWViMDBkOTNiMGFlMWY0NTFjYTI4ZWFiNWNiYjkKKyAxNmY2ZDllMTYwZmVjZDlh ODRmYjRmMTQ4NmU1YjljMWM1MjAyNjZhMDUyZjQ5YmY2ZmExNzIxYzZhNjliNmJkCisgMzlhMjRk MjAyYzQ0MGFmOWQyOTc5NWY2NGM4MmQwM2Q4NTk1MGVmZTA5NjI4ZTQ5N2E3NjMzMDVlNjBkODA2 ZQorIDRjZWJlZDJjNTAwOTQ2ZjE3ZGY1YzU1Y2ZkNzA3ZmM0OWEwMDc2N2U2YTgwYTcyNTgwNzc4 OGMzY2YwNTlmMGEKKyAyZDdhM2QwOTliNzg0MGNhZmMxZmRlYmJiMTY4YjczNjQyY2Q0YmNmMjMx ZDU4MGJjNmJjYWRjZjNmZTJhZjBmCisgZGY2MjViZTNkZmRkMTViYzY1NGIzOWE0NzBjZDE1OTli MDM0MDVmMWUyNTg3NDEyNDg0NWMyMWRmZmViYjRhNworIGJkZDJhYTdjY2U0NzI3Y2ZjMmM0ZGEx ZGVmZmNhOTA5MmQ2NzkxZGQ2NTQxMGI3N2FhNjA0MDU0NGVhMzQ1YzAKKyBjZTI0Nzg5MTViNTU0 MTQ4OGEwMmEwNDFkNzAzODNiNTU0Y2JjNjE0NmRkYmM4ZGM1YTA2MTI3NWE2N2YzNDQ4CisgYTQz ODkyZmRiYjM0OWE2ODEzMmY0M2ZmZThhNTc0ZWNkNzUxOGZiYzExMTVhMDFkNTc2ZTE4MjVkMGUz OWJhOAorIGQwY2VlNTVhYzczMjc2YWExNzNiNmQ3NDlmODNjYmE5OTlkNjFmNjRlMTFhOWRiYTY0 OGRiNWU2YmZjNDFiNjQKKyBkYWZlMWZhODBmNjVkMGFjZjUxMGUyMjljZjczMzdiNDgzNTlmZDE1 ZjRhNGZjZmI1ZDE3MmViNmYzMmM4ZGVmCisgZmY4MTk3YWJjYjI4NWQyNTBiNDA3YjY1ZjA2ZmEy NDZlYjVhOWQ4ZWVkMTk3ODJiYWVlYWI4YmI0MWYyOGQzYworIDAwODgzMGFlMGRhN2FiOWMzMWMx NmViNjcxYzUyNDJmYjUwZWVlOTZiMmY4ZjhjMDBkOTVjMGE1MWJkMjU5NmUKKyAwMGZhZGZmYjE3 NDUxMjZkNmYwNzMzMjdlYWI1ZWYwZThiZjgyZDc5MjllZGYwY2IxZTM0YjQ5NDFhZWZjOTBhCisg YjJhMWM2NTIzMjkwZWJjODk1YzhiMjYzMzcyYzg2Y2ZlOWU5NTAxNmZjYmJkZDFiODk2NGZjNDU2 ZmYwZTg1NQorIDEwNTRlY2M5MDEzY2IzNDdiNzdlOWE4MGQ5N2ZhODk0NDRlNDRmNjY3ZDVkNzU4 YmViOGI3Y2E1ZTlkYTJiMTIKKyBjNjczNmRhYjExNjVkZWIzMzAyNGU2ZjMzZmVkZGU3OWY1NWM2 Y2JhYTRhODAzZWE0ZTQxZGVjNjhiMzMzOTliCisgNWFhMDIzOTMyOGI0NjU2ZmJlZDg0ZGJjYjRk OGNjMjRhODIzMjQ1NWM5ODg4OGMwNjRmYTYyYmI5MjdjYTc1ZgorIGFhYzI5MTU0MGE3ZGE5YmVk M2VlYjcwM2FkOTc1NjE0ZjQxYjZmNzZlMTVjZWIzYjA2NjAwMDc3M2NhOTYxYWIKKyBmY2FjMjhi MmUwMmJlZWVjY2RkYzEzMWRhMmExMmFlOTM0NGE0ODY2OWNjMzAzN2NiNmYwNDI5OTM2YWY5ODc5 CisgNjkzY2IzYjUxOTZhMDI3NmMwMzk0OTdiYzVjNmUxYzk5ZTM3Njk1OWNiMWE5ODAyZmZjOGYw OGRjOWQzMmMyYQorIGQ5NjJlMDk0ZWM0OGE4MDQyMDY3ZDUwZDJiMjJiODcwYzk0YjEyZmYzNWFm YzU4Yzg1YmYyMDAxZmU5OGRhOWIiCgpGcm9tIDRmMWRhZjk2YmVlNGEzOWJhMGRiMjMyNWVmMzAx MTljNDhmYTFmMTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IG9yZW82MzkgPG9yZW82 MzkxQGdtYWlsLmNvbT4KRGF0ZTogVGh1LCA4IFNlcCAyMDIyIDAyOjEzOjEzIC0wNzAwClN1Ympl Y3Q6IFtQQVRDSCAyLzJdIGZpcmVmb3gtZXNyOiB1cGRhdGUgdG8gMTAyLjMuMC4KCkNvLWF1dGhv cmVkLWJ5OiBEdW5jYWVuIDxkdW5jYWVuQHZvaWRsaW51eC5vcmc+Ci0tLQogLi4uL2ZpcmVmb3gt ZXNyL3BhdGNoZXMvZml4LWNiaW5kZ2VuLnBhdGNoICAgIHwgICAyMiArCiAuLi5uLXBhdGgucGF0 Y2ggPT4gZml4LWZpcmVmb3gtZGVza3RvcC5wYXRjaH0gfCAgIDExICstCiAuLi4vZmlyZWZveC1l c3IvcGF0Y2hlcy9maXgtaTM4Ni1mZGxpYm0ucGF0Y2ggfCAgICAyICstCiBzcmNwa2dzL2ZpcmVm b3gtZXNyL3BhdGNoZXMvZml4LXRvb2xzLnBhdGNoICAgfCAgIDEzIC0KIC4uLi9wYXRjaGVzL2Zp eC13ZWJydGMtZ2xpYmNpc21zLnBhdGNoICAgICAgICB8ICAgMjQgKy0KIHNyY3BrZ3MvZmlyZWZv eC1lc3IvcGF0Y2hlcy9wcGM2NGxlLWppdC5wYXRjaCB8IDM0NDEgLS0tLS0tLS0tLS0tLS0tLS0K IHNyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9za2lhLXN1Y2tzMy5wYXRjaCB8ICAgMjQgLQog c3JjcGtncy9maXJlZm94LWVzci9wYXRjaGVzL3NuZGlvLnBhdGNoICAgICAgIHwgICA1MiAtCiBz cmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNoZXMvc3FsaXRlLXBwYy5wYXRjaCAgfCAgIDU1ICsKIHNy Y3BrZ3MvZmlyZWZveC1lc3IvdGVtcGxhdGUgICAgICAgICAgICAgICAgICB8ICAyODEgKy0KIHNy Y3BrZ3MvZmlyZWZveC9wYXRjaGVzL3BwYzY0LXdlYnJ0Yy5wYXRjaCAgICB8ICAgMjIgKwogc3Jj cGtncy9maXJlZm94L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogMTIg ZmlsZXMgY2hhbmdlZCwgMjg4IGluc2VydGlvbnMoKyksIDM2NjEgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9maXJlZm94LWVzci9wYXRjaGVzL2ZpeC1jYmluZGdlbi5w YXRjaAogcmVuYW1lIHNyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy97Zml4LWRlc2t0b3AtaWNv bi1wYXRoLnBhdGNoID0+IGZpeC1maXJlZm94LWRlc2t0b3AucGF0Y2h9ICg2NCUpCiBkZWxldGUg bW9kZSAxMDA2NDQgc3JjcGtncy9maXJlZm94LWVzci9wYXRjaGVzL2ZpeC10b29scy5wYXRjaAog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9wcGM2NGxlLWpp dC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9z bmRpby5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hl cy9zcWxpdGUtcHBjLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9maXJlZm94L3Bh dGNoZXMvcHBjNjQtd2VicnRjLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9maXJlZm94LWVz ci9wYXRjaGVzL2ZpeC1jYmluZGdlbi5wYXRjaCBiL3NyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hl cy9maXgtY2JpbmRnZW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi5iYTNjZTdhZTNlOTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZpcmVmb3gtZXNy L3BhdGNoZXMvZml4LWNiaW5kZ2VuLnBhdGNoCkBAIC0wLDAgKzEsMjIgQEAKK0ZpeCBlcnJvciB3 aXRoIG5ldyBjYmluZGdlbjoKKworL2J1aWxkZGlyL2ZpcmVmb3gtMTAyLjEuMC9vYmoteDg2XzY0 LXVua25vd24tbGludXgtZ251L2Rpc3QvaW5jbHVkZS9tb3ppbGxhL3dlYnJlbmRlci93ZWJyZW5k ZXJfZmZpX2dlbmVyYXRlZC5oOjI0OjMzOiBlcnJvcjogcmVkZWZpbml0aW9uIG9mICdjb25zdGV4 cHIgY29uc3QgdWludDY0X3QgbW96aWxsYTo6d3I6OlJPT1RfQ0xJUF9DSEFJTicKKyAgIDI0IHwg Y29uc3RleHByIHN0YXRpYyBjb25zdCB1aW50NjRfdCBST09UX0NMSVBfQ0hBSU4gPSB+MDsKKyAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn5+fn4KKy9i dWlsZGRpci9maXJlZm94LTEwMi4xLjAvb2JqLXg4Nl82NC11bmtub3duLWxpbnV4LWdudS9kaXN0 L2luY2x1ZGUvbW96aWxsYS93ZWJyZW5kZXIvd2VicmVuZGVyX2ZmaS5oOjc2OjE2OiBub3RlOiAn Y29uc3QgdWludDY0X3QgbW96aWxsYTo6d3I6OlJPT1RfQ0xJUF9DSEFJTicgcHJldmlvdXNseSBk ZWZpbmVkIGhlcmUKKyAgIDc2IHwgY29uc3QgdWludDY0X3QgUk9PVF9DTElQX0NIQUlOID0gfjA7 CisgICAgICB8ICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fgorCitkaWZmIC0tZ2l0IGEv Z2Z4L3dlYnJlbmRlcl9iaW5kaW5ncy93ZWJyZW5kZXJfZmZpLmggYi9nZngvd2VicmVuZGVyX2Jp bmRpbmdzL3dlYnJlbmRlcl9mZmkuaAoraW5kZXggYjFkNjdiMTdhNGJkZS4uZWI3OTk3NGJkZjQz NCAxMDA2NDQKKy0tLSBhL2dmeC93ZWJyZW5kZXJfYmluZGluZ3Mvd2VicmVuZGVyX2ZmaS5oCisr KysgYi9nZngvd2VicmVuZGVyX2JpbmRpbmdzL3dlYnJlbmRlcl9mZmkuaAorQEAgLTczLDggKzcz LDYgQEAgc3RydWN0IFdyUGlwZWxpbmVJbmZvOworIHN0cnVjdCBXclBpcGVsaW5lSWRBbmRFcG9j aDsKKyB1c2luZyBXclBpcGVsaW5lSWRFcG9jaHMgPSBuc1RBcnJheTxXclBpcGVsaW5lSWRBbmRF cG9jaD47CisgCistY29uc3QgdWludDY0X3QgUk9PVF9DTElQX0NIQUlOID0gfjA7CistCisgfSAg Ly8gbmFtZXNwYWNlIHdyCisgfSAgLy8gbmFtZXNwYWNlIG1vemlsbGEKKyAKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9maXgtZGVza3RvcC1pY29uLXBhdGgucGF0Y2gg Yi9zcmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNoZXMvZml4LWZpcmVmb3gtZGVza3RvcC5wYXRjaApz aW1pbGFyaXR5IGluZGV4IDY0JQpyZW5hbWUgZnJvbSBzcmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNo ZXMvZml4LWRlc2t0b3AtaWNvbi1wYXRoLnBhdGNoCnJlbmFtZSB0byBzcmNwa2dzL2ZpcmVmb3gt ZXNyL3BhdGNoZXMvZml4LWZpcmVmb3gtZGVza3RvcC5wYXRjaAppbmRleCBjNDY2NGQzZGE3Y2Uu LjNmMDI3M2NiYTM2NiAxMDA2NDQKLS0tIGEvc3JjcGtncy9maXJlZm94LWVzci9wYXRjaGVzL2Zp eC1kZXNrdG9wLWljb24tcGF0aC5wYXRjaAorKysgYi9zcmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNo ZXMvZml4LWZpcmVmb3gtZGVza3RvcC5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLS0tLSBhL3Rhc2tj bHVzdGVyL2RvY2tlci9maXJlZm94LXNuYXAvZmlyZWZveC5kZXNrdG9wCTIwMTktMDEtMTggMTk6 MzE6MzkuNDI4ODM5NDQyICswMTAwCi0rKysgYi90YXNrY2x1c3Rlci9kb2NrZXIvZmlyZWZveC1z bmFwL2ZpcmVmb3guZGVza3RvcAkyMDE5LTAxLTE4IDE5OjMyOjIwLjY4OTA2MzQ1NiArMDEwMAot QEAgLTE1NCw3ICsxNTQsNyBAQAorLS0tIGEvdGFza2NsdXN0ZXIvZG9ja2VyL2ZpcmVmb3gtc25h cC9maXJlZm94LmRlc2t0b3AKKysrKyBiL3Rhc2tjbHVzdGVyL2RvY2tlci9maXJlZm94LXNuYXAv ZmlyZWZveC5kZXNrdG9wCitAQCAtMTU0LDExICsxNTQsMTIgQEAKICBUZXJtaW5hbD1mYWxzZQog IFgtTXVsdGlwbGVBcmdzPWZhbHNlCiAgVHlwZT1BcHBsaWNhdGlvbgpAQCAtOSwzICs5LDggQEAK ICBDYXRlZ29yaWVzPUdOT01FO0dUSztOZXR3b3JrO1dlYkJyb3dzZXI7CiAgTWltZVR5cGU9dGV4 dC9odG1sO3RleHQveG1sO2FwcGxpY2F0aW9uL3hodG1sK3htbDthcHBsaWNhdGlvbi94bWw7YXBw bGljYXRpb24vcnNzK3htbDthcHBsaWNhdGlvbi9yZGYreG1sO2ltYWdlL2dpZjtpbWFnZS9qcGVn O2ltYWdlL3BuZzt4LXNjaGVtZS1oYW5kbGVyL2h0dHA7eC1zY2hlbWUtaGFuZGxlci9odHRwczt4 LXNjaGVtZS1oYW5kbGVyL2Z0cDt4LXNjaGVtZS1oYW5kbGVyL2Nocm9tZTt2aWRlby93ZWJtO2Fw cGxpY2F0aW9uL3gteHBpbnN0YWxsOwogIFN0YXJ0dXBOb3RpZnk9dHJ1ZQorIEFjdGlvbnM9TmV3 V2luZG93O05ld1ByaXZhdGVXaW5kb3c7CisrU3RhcnR1cFdNQ2xhc3M9RmlyZWZveAorIAorIFtE ZXNrdG9wIEFjdGlvbiBOZXdXaW5kb3ddCisgTmFtZT1PcGVuIGEgTmV3IFdpbmRvdwpkaWZmIC0t Z2l0IGEvc3JjcGtncy9maXJlZm94LWVzci9wYXRjaGVzL2ZpeC1pMzg2LWZkbGlibS5wYXRjaCBi L3NyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9maXgtaTM4Ni1mZGxpYm0ucGF0Y2gKaW5kZXgg ODMxZTVlMDM2NzhkLi5kYjhkZDM5NjFjMDQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZmlyZWZveC1l c3IvcGF0Y2hlcy9maXgtaTM4Ni1mZGxpYm0ucGF0Y2gKKysrIGIvc3JjcGtncy9maXJlZm94LWVz ci9wYXRjaGVzL2ZpeC1pMzg2LWZkbGlibS5wYXRjaApAQCAtNyw3ICs3LDcgQEAKICAgKiBBZGFw dGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2ZyZWVic2QvZnJlZWJzZC1zcmMvc2VhcmNoP3E9 X19kb3VibGVfdAogICAqLwogIAotKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgZGVmaW5lZChf X2kzODZfXykKKysjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQoX19pMzg2X18pICYm ICFkZWZpbmVkKF9fY2xhbmdfXykKICsvLyByZWx5IG9uIGdsaWJjJ3MgZG91YmxlX3QKICt0eXBl ZGVmIGxvbmcgZG91YmxlIF9fZG91YmxlX3Q7CiArI2Vsc2UKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv ZmlyZWZveC1lc3IvcGF0Y2hlcy9maXgtdG9vbHMucGF0Y2ggYi9zcmNwa2dzL2ZpcmVmb3gtZXNy L3BhdGNoZXMvZml4LXRvb2xzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5 NGRlNDIzY2U1OTMuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNo ZXMvZml4LXRvb2xzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotLS0tIGEv dG9vbHMvcHJvZmlsZXIvY29yZS9wbGF0Zm9ybS1saW51eC1hbmRyb2lkLmNwcAkyMDE5LTAxLTI5 IDEyOjA5OjQwLjk4MDQ0ODU3OSArMDEwMAotKysrIGIvdG9vbHMvcHJvZmlsZXIvY29yZS9wbGF0 Zm9ybS1saW51eC1hbmRyb2lkLmNwcAkyMDE5LTAxLTI5IDEyOjExOjA5LjY4OTU5MDk2NyArMDEw MAotQEAgLTQ5Nyw4ICs1MDEsMTAgQEAKLSB1Y29udGV4dF90IHNTeW5jVUNvbnRleHQ7Ci0gCi0g dm9pZCBSZWdpc3RlcnM6OlN5bmNQb3B1bGF0ZSgpIHsKLSsjaWYgZGVmaW5lZChfX0dMSUJDX18p Ci0gICBpZiAoIWdldGNvbnRleHQoJnNTeW5jVUNvbnRleHQpKSB7Ci0gICAgIFBvcHVsYXRlUmVn c0Zyb21Db250ZXh0KCp0aGlzLCAmc1N5bmNVQ29udGV4dCk7Ci0gICB9Ci0rI2VuZGlmCi0gfQot ICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9maXJlZm94LWVzci9wYXRjaGVzL2ZpeC13ZWJy dGMtZ2xpYmNpc21zLnBhdGNoIGIvc3JjcGtncy9maXJlZm94LWVzci9wYXRjaGVzL2ZpeC13ZWJy dGMtZ2xpYmNpc21zLnBhdGNoCmluZGV4IDVkMTcwMjFhOTlmNC4uNGY5MDQzYjU4ZTFlIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNoZXMvZml4LXdlYnJ0Yy1nbGliY2lzbXMu cGF0Y2gKKysrIGIvc3JjcGtncy9maXJlZm94LWVzci9wYXRjaGVzL2ZpeC13ZWJydGMtZ2xpYmNp c21zLnBhdGNoCkBAIC0xLDIwICsxLDIwIEBACi0tLS0gYS90aGlyZF9wYXJ0eS9saWJ3ZWJydGMv d2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvY3B1X2ZlYXR1cmVzX2xpbnV4LmMJMjAxOS0w MS0yOSAxMToyMDo1Mi4yOTg3OTMyMjMgKzAxMDAKLSsrKyBiL3RoaXJkX3BhcnR5L2xpYndlYnJ0 Yy93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9jcHVfZmVhdHVyZXNfbGludXguYwkyMDE5 LTAxLTI5IDExOjIxOjQ4LjI1MDI1MDg1MCArMDEwMAotQEAgLTE0LDcgKzE0LDcgQEAKLSAjaWZu ZGVmIF9fR0xJQkNfUFJFUkVRCi0gI2RlZmluZSBfX0dMSUJDX1BSRVJFUShhLCBiKSAwCistLS0g YS90aGlyZF9wYXJ0eS9saWJ3ZWJydGMvc3lzdGVtX3dyYXBwZXJzL3NvdXJjZS9jcHVfZmVhdHVy ZXNfbGludXguY2MKKysrKyBiL3RoaXJkX3BhcnR5L2xpYndlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMv c291cmNlL2NwdV9mZWF0dXJlc19saW51eC5jYworQEAgLTE4LDcgKzE4LDcgQEAKKyAjZGVmaW5l IFdFQlJUQ19HTElCQ19QUkVSRVEoYSwgYikgMAogICNlbmRpZgotLSNpZiBfX0dMSUJDX1BSRVJF USgyLCAxNikKLSsjaWYgIV9fR0xJQkNfXyB8fCBfX0dMSUJDX1BSRVJFUSgyLCAxNikKKyAKKy0j aWYgV0VCUlRDX0dMSUJDX1BSRVJFUSgyLCAxNikKKysjaWYgIV9fR0xJQkNfXyB8fCBXRUJSVENf R0xJQkNfUFJFUkVRKDIsIDE2KQogICNpbmNsdWRlIDxzeXMvYXV4di5oPgogICNlbHNlCi0gI2lu Y2x1ZGUgPGZjbnRsLmg+Ci1AQCAtMzIsNyArMzIsNyBAQAorICNpbmNsdWRlIDxlcnJuby5oPgor QEAgLTQwLDcgKzQwLDcgQEAKICAgIGludCBhcmNoaXRlY3R1cmUgPSAwOwotICAgdW5zaWduZWQg bG9uZyBod2NhcCA9IDA7CisgICB1aW50NjRfdCBod2NhcCA9IDA7CiAgICBjb25zdCBjaGFyKiBw bGF0Zm9ybSA9IE5VTEw7Ci0tI2lmIF9fR0xJQkNfUFJFUkVRKDIsIDE2KQotKyNpZiAhX19HTElC Q19fIHx8IF9fR0xJQkNfUFJFUkVRKDIsIDE2KQorLSNpZiBXRUJSVENfR0xJQkNfUFJFUkVRKDIs IDE2KQorKyNpZiAhX19HTElCQ19fIHx8IFdFQlJUQ19HTElCQ19QUkVSRVEoMiwgMTYpCiAgICBo d2NhcCA9IGdldGF1eHZhbChBVF9IV0NBUCk7CiAgICBwbGF0Zm9ybSA9IChjb25zdCBjaGFyKiln ZXRhdXh2YWwoQVRfUExBVEZPUk0pOwogICNlbHNlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZpcmVm b3gtZXNyL3BhdGNoZXMvcHBjNjRsZS1qaXQucGF0Y2ggYi9zcmNwa2dzL2ZpcmVmb3gtZXNyL3Bh dGNoZXMvcHBjNjRsZS1qaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNj ZWQwMDU4ZThlMS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hl cy9wcGM2NGxlLWppdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0NDEgKzAsMCBAQAotZGlm ZiAtLWdpdCBhL2NvbmZpZy9jaGVja19tYWNyb2Fzc2VtYmxlcl9zdHlsZS5weSBiL2NvbmZpZy9j aGVja19tYWNyb2Fzc2VtYmxlcl9zdHlsZS5weQotaW5kZXggMGQwNDBhOTM5Yi4uYjgzZTM2OTFk ZCAxMDA2NDQKLS0tLSBhL2NvbmZpZy9jaGVja19tYWNyb2Fzc2VtYmxlcl9zdHlsZS5weQotKysr IGIvY29uZmlnL2NoZWNrX21hY3JvYXNzZW1ibGVyX3N0eWxlLnB5Ci1AQCAtMjQsMTcgKzI0LDE3 IEBAIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Ci0gZnJvbSBfX2Z1dHVy ZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotIAotIGltcG9ydCBkaWZmbGliCi0gaW1wb3J0IG9z Ci0gaW1wb3J0IHJlCi0gaW1wb3J0IHN5cwotIAotIGFyY2hpdGVjdHVyZV9pbmRlcGVuZGVudCA9 IHNldChbImdlbmVyaWMiXSkKLS1hbGxfdW5zdXBwb3J0ZWRfYXJjaGl0ZWN0dXJlc19uYW1lcyA9 IHNldChbIm1pcHMzMiIsICJtaXBzNjQiLCAibWlwc19zaGFyZWQiXSkKLSthbGxfdW5zdXBwb3J0 ZWRfYXJjaGl0ZWN0dXJlc19uYW1lcyA9IHNldChbIm1pcHMzMiIsICJtaXBzNjQiLCAibWlwc19z aGFyZWQiLCAicHBjNjQiXSkKLSBhbGxfYXJjaGl0ZWN0dXJlX25hbWVzID0gc2V0KFsieDg2Iiwg Ing2NCIsICJhcm0iLCAiYXJtNjQiXSkKLSBhbGxfc2hhcmVkX2FyY2hpdGVjdHVyZV9uYW1lcyA9 IHNldChbIng4Nl9zaGFyZWQiLCAiYXJtIiwgImFybTY0Il0pCi0gCi0gcmVCZWZvcmVBcmcgPSAi KD88PVsoLFxzXSkiCi0gcmVBcmdUeXBlID0gIig/UDx0eXBlPltcd1xzOiomXSspIgotIHJlQXJn TmFtZSA9ICIoP1A8bmFtZT5cc1x3KykiCi0gcmVBcmdEZWZhdWx0ID0gIig/UDxkZWZhdWx0Pig/ OlxzPVteLCldKyk/KSIKLSByZUFmdGVyQXJnID0gIig/PVssKV0pIgotZGlmZiAtLWdpdCBhL2pz L21vei5jb25maWd1cmUgYi9qcy9tb3ouY29uZmlndXJlCi1pbmRleCAzYzNkMGQ0MzU5Li5iMjE3 ZDBlMTVjIDEwMDY0NAotLS0tIGEvanMvbW96LmNvbmZpZ3VyZQotKysrIGIvanMvbW96LmNvbmZp Z3VyZQotQEAgLTIxNCwyMyArMjE0LDI1IEBAIGRlZiBqaXRfY29kZWdlbihqaXRfZW5hYmxlZCwg c2ltdWxhdG9yLCB0YXJnZXQpOgotICAgICByZXR1cm4gbmFtZXNwYWNlKCoqe3N0cih0YXJnZXQu Y3B1KTogVHJ1ZX0pCi0gCi0gCi0gc2V0X2NvbmZpZygiSlNfQ09ERUdFTl9OT05FIiwgaml0X2Nv ZGVnZW4ubm9uZSkKLSBzZXRfY29uZmlnKCJKU19DT0RFR0VOX0FSTSIsIGppdF9jb2RlZ2VuLmFy bSkKLSBzZXRfY29uZmlnKCJKU19DT0RFR0VOX0FSTTY0Iiwgaml0X2NvZGVnZW4uYXJtNjQpCi0g c2V0X2NvbmZpZygiSlNfQ09ERUdFTl9NSVBTMzIiLCBqaXRfY29kZWdlbi5taXBzMzIpCi0gc2V0 X2NvbmZpZygiSlNfQ09ERUdFTl9NSVBTNjQiLCBqaXRfY29kZWdlbi5taXBzNjQpCi0rc2V0X2Nv bmZpZygiSlNfQ09ERUdFTl9QUEM2NCIsIGppdF9jb2RlZ2VuLnBwYzY0KQotIHNldF9jb25maWco IkpTX0NPREVHRU5fWDg2Iiwgaml0X2NvZGVnZW4ueDg2KQotIHNldF9jb25maWcoIkpTX0NPREVH RU5fWDY0Iiwgaml0X2NvZGVnZW4ueDY0KQotIHNldF9kZWZpbmUoIkpTX0NPREVHRU5fTk9ORSIs IGppdF9jb2RlZ2VuLm5vbmUpCi0gc2V0X2RlZmluZSgiSlNfQ09ERUdFTl9BUk0iLCBqaXRfY29k ZWdlbi5hcm0pCi0gc2V0X2RlZmluZSgiSlNfQ09ERUdFTl9BUk02NCIsIGppdF9jb2RlZ2VuLmFy bTY0KQotIHNldF9kZWZpbmUoIkpTX0NPREVHRU5fTUlQUzMyIiwgaml0X2NvZGVnZW4ubWlwczMy KQotIHNldF9kZWZpbmUoIkpTX0NPREVHRU5fTUlQUzY0Iiwgaml0X2NvZGVnZW4ubWlwczY0KQot K3NldF9kZWZpbmUoIkpTX0NPREVHRU5fUFBDNjQiLCBqaXRfY29kZWdlbi5wcGM2NCkKLSBzZXRf ZGVmaW5lKCJKU19DT0RFR0VOX1g4NiIsIGppdF9jb2RlZ2VuLng4NikKLSBzZXRfZGVmaW5lKCJK U19DT0RFR0VOX1g2NCIsIGppdF9jb2RlZ2VuLng2NCkKLSAKLSAjIFByb2ZpbGluZwotICMgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIG9w dGlvbigKLSAgICAgIi0tZW5hYmxlLWluc3RydW1lbnRzIiwKLSAgICAgZW52PSJNT1pfSU5TVFJV TUVOVFMiLAotZGlmZiAtLWdpdCBhL2pzL3NyYy9pcnJlZ2V4cC9SZWdFeHBOYXRpdmVNYWNyb0Fz c2VtYmxlci5jcHAgYi9qcy9zcmMvaXJyZWdleHAvUmVnRXhwTmF0aXZlTWFjcm9Bc3NlbWJsZXIu Y3BwCi1pbmRleCBlMGVmN2U2NGY1Li44MWQ4ZTJhMTk4IDEwMDY0NAotLS0tIGEvanMvc3JjL2ly cmVnZXhwL1JlZ0V4cE5hdGl2ZU1hY3JvQXNzZW1ibGVyLmNwcAotKysrIGIvanMvc3JjL2lycmVn ZXhwL1JlZ0V4cE5hdGl2ZU1hY3JvQXNzZW1ibGVyLmNwcAotQEAgLTgxMywxOCArODEzLDMzIEBA IHZvaWQgU01SZWdFeHBNYWNyb0Fzc2VtYmxlcjo6SnVtcE9yQmFja3RyYWNrKExhYmVsKiB0bykg ewotIC8vIElmIHRoZSB0ZXN0IGZhaWxzLCBjYWxsIGFuIE9PTCBoYW5kbGVyIHRvIHRyeSBncm93 aW5nIHRoZSBzdGFjay4KLSB2b2lkIFNNUmVnRXhwTWFjcm9Bc3NlbWJsZXI6OkNoZWNrQmFja3Ry YWNrU3RhY2tMaW1pdCgpIHsKLSAgIGpzOjpqaXQ6OkxhYmVsIG5vX3N0YWNrX292ZXJmbG93Owot ICAgbWFzbV8uYnJhbmNoUHRyKAotICAgICAgIEFzc2VtYmxlcjo6QmVsb3dPckVxdWFsLAotICAg ICAgIEFic29sdXRlQWRkcmVzcyhpc29sYXRlKCktPnJlZ2V4cF9zdGFjaygpLT5saW1pdF9hZGRy ZXNzX2FkZHJlc3MoKSksCi0gICAgICAgYmFja3RyYWNrX3N0YWNrX3BvaW50ZXJfLCAmbm9fc3Rh Y2tfb3ZlcmZsb3cpOwotIAotKyNpZmRlZiBKU19DT0RFR0VOX1BQQzY0Ci0rICAvLyBMUiBvbiBQ b3dlclBDIGlzbid0IGEgR1BSLCBzbyB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkgc2F2ZSBpdCBoZXJl IGJlZm9yZQotKyAgLy8gd2UgY2FsbCBvciB3ZSB3aWxsIGVuZCB1cCBlcnJvbmVvdXNseSByZXR1 cm5pbmcgYWZ0ZXIgdGhlIGNhbGwgdG8gdGhlCi0rICAvLyBzdGFjayBvdmVyZmxvdyBoYW5kbGVy IHdoZW4gd2UgfGJscnwgb3V0IGFuZCBpbmV2aXRhYmx5IHVuZGVyZmxvdyB0aGUKLSsgIC8vIGly cmVnZXhwIHN0YWNrIG9uIHRoZSBuZXh0IGJhY2t0cmFjay4KLSsgIG1hc21fLnhzX21mbHIodGVt cDFfKTsKLSsgIG1hc21fLmFzX3N0ZHUodGVtcDFfLCBtYXNtXy5nZXRTdGFja1BvaW50ZXIoKSwg LTgpOwotKyNlbmRpZgotKwotICAgbWFzbV8uY2FsbCgmc3RhY2tfb3ZlcmZsb3dfbGFiZWxfKTsK LSAKLSsjaWZkZWYgSlNfQ09ERUdFTl9QUEM2NAotKyAgbWFzbV8uYXNfbGQodGVtcDFfLCBtYXNt Xy5nZXRTdGFja1BvaW50ZXIoKSwgMCk7Ci0rICBtYXNtXy54c19tdGxyKHRlbXAxXyk7Ci0rICBt YXNtXy5hc19hZGRpKG1hc21fLmdldFN0YWNrUG9pbnRlcigpLCBtYXNtXy5nZXRTdGFja1BvaW50 ZXIoKSwgOCk7Ci0rI2VuZGlmCi0rCi0gICAvLyBFeGl0IHdpdGggYW4gZXhjZXB0aW9uIGlmIHRo ZSBjYWxsIGZhaWxlZAotICAgbWFzbV8uYnJhbmNoVGVzdDMyKEFzc2VtYmxlcjo6WmVybywgdGVt cDBfLCB0ZW1wMF8sCi0gICAgICAgICAgICAgICAgICAgICAgJmV4aXRfd2l0aF9leGNlcHRpb25f bGFiZWxfKTsKLSAKLSAgIG1hc21fLmJpbmQoJm5vX3N0YWNrX292ZXJmbG93KTsKLSB9Ci0gCi0g Ly8gVGhpcyBpcyB1c2VkIHRvIHNuZWFrIGFuIE9PTSB0aHJvdWdoIHRoZSBWOCBsYXllci4KLUBA IC0xMTI3LDE2ICsxMTQyLDIwIEBAIHZvaWQgU01SZWdFeHBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tP dmVyZmxvd0hhbmRsZXIoKSB7Ci0gICBMaXZlR2VuZXJhbFJlZ2lzdGVyU2V0IHZvbGF0aWxlUmVn cyhHZW5lcmFsUmVnaXN0ZXJTZXQ6OlZvbGF0aWxlKCkpOwotIAotICNpZmRlZiBKU19VU0VfTElO S19SRUdJU1RFUgotICAgbWFzbV8ucHVzaFJldHVybkFkZHJlc3MoKTsKLSAjZW5kaWYKLSAKLSAg IC8vIEFkanVzdCBmb3IgdGhlIHJldHVybiBhZGRyZXNzIG9uIHRoZSBzdGFjay4KLSAgIHNpemVf dCBmcmFtZU9mZnNldCA9IHNpemVvZih2b2lkKik7Ci0rI2lmZGVmIEpTX0NPREVHRU5fUFBDNjQK LSsgIC8vIFdlIGhhdmUgYSBkb3VibGUgcmV0dXJuIGFkZHJlc3MuCi0rICBmcmFtZU9mZnNldCAr PSBzaXplb2Yodm9pZCopOwotKyNlbmRpZgotIAotICAgdm9sYXRpbGVSZWdzLnRha2VVbmNoZWNr ZWQodGVtcDBfKTsKLSAgIHZvbGF0aWxlUmVncy50YWtlVW5jaGVja2VkKHRlbXAxXyk7Ci0gICBt YXNtXy5QdXNoUmVnc0luTWFzayh2b2xhdGlsZVJlZ3MpOwotIAotICAgdXNpbmcgRm4gPSBib29s ICgqKShSZWdFeHBTdGFjayAqIHJlZ2V4cF9zdGFjayk7Ci0gICBtYXNtXy5zZXR1cFVuYWxpZ25l ZEFCSUNhbGwodGVtcDBfKTsKLSAgIG1hc21fLnBhc3NBQklBcmcodGVtcDFfKTsKLWRpZmYgLS1n aXQgYS9qcy9zcmMvaml0L0F0b21pY09wZXJhdGlvbnMuaCBiL2pzL3NyYy9qaXQvQXRvbWljT3Bl cmF0aW9ucy5oCi1pbmRleCBmNGE1NzI3ZDA1Li4xMzg2MTJkNTNiIDEwMDY0NAotLS0tIGEvanMv c3JjL2ppdC9BdG9taWNPcGVyYXRpb25zLmgKLSsrKyBiL2pzL3NyYy9qaXQvQXRvbWljT3BlcmF0 aW9ucy5oCi1AQCAtMzczLDE5ICszNzMsMjYgQEAgY29uc3RleHByIGlubGluZSBib29sIEF0b21p Y09wZXJhdGlvbnM6OmlzTG9ja2ZyZWVKUyhpbnQzMl90IHNpemUpIHsKLSAjICAgIGluY2x1ZGUg ImppdC9zaGFyZWQvQXRvbWljT3BlcmF0aW9ucy1mZWVsaW5nLWx1Y2t5LmgiCi0gIyAgZW5kaWYK LSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICMgIGlmIGRlZmluZWQoX19jbGFuZ19fKSB8fCBk ZWZpbmVkKF9fR05VQ19fKQotICMgICAgaW5jbHVkZSAiaml0L21pcHMtc2hhcmVkL0F0b21pY09w ZXJhdGlvbnMtbWlwcy1zaGFyZWQuaCIKLSAjICBlbHNlCi0gIyAgICBlcnJvciAiQXRvbWljT3Bl cmF0aW9ucyBvbiBNSVBTIGZvciBhbiB1bmtub3duIGNvbXBpbGVyIgotICMgIGVuZGlmCi0rI2Vs aWYgZGVmaW5lZChfX3BwYzY0X18pIHx8IGRlZmluZWQoX19QUEM2NF9fKSB8fCBkZWZpbmVkKF9f cHBjNjRsZV9fKSB8fCBcCi0rICAgICAgZGVmaW5lZChfX1BQQzY0TEVfXykKLSsjICBpZiBkZWZp bmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rLyogWFhYOiBzaG91bGQgYmUgIyAgICBpbmNsdWRlICJq aXQvc2hhcmVkL0F0b21pY09wZXJhdGlvbnMtc2hhcmVkLWppdC5oIiAqLwotKyMgICAgaW5jbHVk ZSAiaml0L3NoYXJlZC9BdG9taWNPcGVyYXRpb25zLWZlZWxpbmctbHVja3kuaCIKLSsjICBlbHNl Ci0rIyAgICBpbmNsdWRlICJqaXQvc2hhcmVkL0F0b21pY09wZXJhdGlvbnMtZmVlbGluZy1sdWNr eS5oIgotKyMgIGVuZGlmCi0gI2VsaWYgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fUFBD X18pIHx8IGRlZmluZWQoX19zcGFyY19fKSB8fCAgICAgXAotLSAgICBkZWZpbmVkKF9fcHBjNjRf XykgfHwgZGVmaW5lZChfX1BQQzY0X18pIHx8IGRlZmluZWQoX19wcGM2NGxlX18pIHx8IFwKLS0g ICAgZGVmaW5lZChfX1BQQzY0TEVfXykgfHwgZGVmaW5lZChfX2FscGhhX18pIHx8IGRlZmluZWQo X19ocHBhX18pIHx8ICBcCi0rICAgIGRlZmluZWQoX19hbHBoYV9fKSB8fCBkZWZpbmVkKF9faHBw YV9fKSB8fCAgXAotICAgICBkZWZpbmVkKF9fc2hfXykgfHwgZGVmaW5lZChfX3MzOTBfXykgfHwg ZGVmaW5lZChfX3MzOTB4X18pIHx8ICAgICAgIFwKLSAgICAgZGVmaW5lZChfX202OGtfXykgfHwg ZGVmaW5lZChfX3Jpc2N2KSB8fCBkZWZpbmVkKF9fd2FzaV9fKQotICMgIGluY2x1ZGUgImppdC9z aGFyZWQvQXRvbWljT3BlcmF0aW9ucy1mZWVsaW5nLWx1Y2t5LmgiCi0gI2Vsc2UKLSAjICBlcnJv ciAiTm8gQXRvbWljT3BlcmF0aW9ucyBzdXBwb3J0IHByb3ZpZGVkIGZvciB0aGlzIHBsYXRmb3Jt IgotICNlbmRpZgotIAotICNlbmRpZiAgLy8gaml0X0F0b21pY09wZXJhdGlvbnNfaAotZGlmZiAt LWdpdCBhL2pzL3NyYy9qaXQvQmFzZWxpbmVCYWlsb3V0cy5jcHAgYi9qcy9zcmMvaml0L0Jhc2Vs aW5lQmFpbG91dHMuY3BwCi1pbmRleCBiY2ExNDI3ZjkzLi5lYjQ5OWIzNGNmIDEwMDY0NAotLS0t IGEvanMvc3JjL2ppdC9CYXNlbGluZUJhaWxvdXRzLmNwcAotKysrIGIvanMvc3JjL2ppdC9CYXNl bGluZUJhaWxvdXRzLmNwcAotQEAgLTQ4MSwxNiArNDgxLDIxIEBAIGNsYXNzIE1PWl9TVEFDS19D TEFTUyBCYXNlbGluZVN0YWNrQnVpbGRlciB7Ci0gICAgIC8vICBsZXQgWCA9IFNUQUNLX1NUQVJU X0FERFIgKyBKaXRGcmFtZUxheW91dDo6U2l6ZSgpICsgUFJFVl9GUkFNRV9TSVpFCi0gICAgIC8v ICAgICAgWCArIFJlY3RpZmllckZyYW1lTGF5b3V0OjpTaXplKCkKLSAgICAgLy8gICAgICAgICsg KChSZWN0aWZpZXJGcmFtZUxheW91dCopIFgpLT5wcmV2RnJhbWVMb2NhbFNpemUoKQotICAgICAv LyAgICAgICAgLSBCYXNlbGluZVN0dWJGcmFtZUxheW91dDo6cmV2ZXJzZU9mZnNldE9mU2F2ZWRG cmFtZVB0cigpCi0gICAgIHNpemVfdCBleHRyYU9mZnNldCA9Ci0gICAgICAgICBSZWN0aWZpZXJG cmFtZUxheW91dDo6U2l6ZSgpICsgcHJpb3JGcmFtZS0+cHJldkZyYW1lTG9jYWxTaXplKCkgKwot ICAgICAgICAgQmFzZWxpbmVTdHViRnJhbWVMYXlvdXQ6OnJldmVyc2VPZmZzZXRPZlNhdmVkRnJh bWVQdHIoKTsKLSAgICAgcmV0dXJuIHZpcnR1YWxQb2ludGVyQXRTdGFja09mZnNldChwcmlvck9m ZnNldCArIGV4dHJhT2Zmc2V0KTsKLSsjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0r ICAgICh2b2lkKXByaW9yT2Zmc2V0OwotKy8vIFhYWC4gVGhlIGFib3ZlIGNvZGUgbWlnaHQgd29y ayB0aG91Z2gKLSsjd2FybmluZyAiVE9ETyEgQmFzZWxpbmVTdGFja0J1aWxkZXI6OmNhbGN1bGF0 ZVByZXZGcmFtZVB0cigpIgotKyAgICBNT1pfQ1JBU0goKTsKLSAjZWxpZiBkZWZpbmVkKEpTX0NP REVHRU5fTk9ORSkKLSAgICAgKHZvaWQpcHJpb3JPZmZzZXQ7Ci0gICAgIE1PWl9DUkFTSCgpOwot ICNlbHNlCi0gIyAgZXJyb3IgIkJhZCBhcmNoaXRlY3R1cmUhIgotICNlbmRpZgotICAgfQotIH07 Ci1kaWZmIC0tZ2l0IGEvanMvc3JjL2ppdC9CYXNlbGluZUNvZGVHZW4uY3BwIGIvanMvc3JjL2pp dC9CYXNlbGluZUNvZGVHZW4uY3BwCi1pbmRleCA3MDg5ZjVlMzAwLi5kNjcyMzZkMmM1IDEwMDY0 NAotLS0tIGEvanMvc3JjL2ppdC9CYXNlbGluZUNvZGVHZW4uY3BwCi0rKysgYi9qcy9zcmMvaml0 L0Jhc2VsaW5lQ29kZUdlbi5jcHAKLUBAIC01MjAsMTYgKzUyMCwxOSBAQCBib29sIEJhc2VsaW5l Q29kZUdlbjxIYW5kbGVyPjo6ZW1pdE91dE9mTGluZVBvc3RCYXJyaWVyU2xvdCgpIHsKLSAgIHJl Z3MudGFrZShCYXNlbGluZUZyYW1lUmVnKTsKLSAgIFJlZ2lzdGVyIHNjcmF0Y2ggPSByZWdzLnRh a2VBbnkoKTsKLSAjaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTSkgfHwgZGVmaW5lZChKU19DT0RF R0VOX0FSTTY0KQotICAgLy8gT24gQVJNLCBzYXZlIHRoZSBsaW5rIHJlZ2lzdGVyIGJlZm9yZSBj YWxsaW5nLiAgSXQgY29udGFpbnMgdGhlIHJldHVybgotICAgLy8gYWRkcmVzcy4gIFRoZSB8bWFz bS5yZXQoKXwgbGF0ZXIgd2lsbCBwb3AgdGhpcyBpbnRvIHxwY3wgdG8gcmV0dXJuLgotICAgbWFz bS5wdXNoKGxyKTsKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVk KEpTX0NPREVHRU5fTUlQUzY0KQotICAgbWFzbS5wdXNoKHJhKTsKLSsjZWxpZiBkZWZpbmVkKEpT X0NPREVHRU5fUFBDNjQpCi0rICBtYXNtLnhzX21mbHIoU2NyYXRjaFJlZ2lzdGVyKTsKLSsgIG1h c20ucHVzaChTY3JhdGNoUmVnaXN0ZXIpOwotICNlbmRpZgotICAgbWFzbS5wdXNoVmFsdWUoUjAp OwotIAotICAgdXNpbmcgRm4gPSB2b2lkICgqKShKU1J1bnRpbWUgKiBydCwganM6OmdjOjpDZWxs ICogY2VsbCk7Ci0gICBtYXNtLnNldHVwVW5hbGlnbmVkQUJJQ2FsbChzY3JhdGNoKTsKLSAgIG1h c20ubW92ZVB0cihJbW1QdHIoY3gtPnJ1bnRpbWUoKSksIHNjcmF0Y2gpOwotICAgbWFzbS5wYXNz QUJJQXJnKHNjcmF0Y2gpOwotICAgbWFzbS5wYXNzQUJJQXJnKG9ialJlZyk7Ci1kaWZmIC0tZ2l0 IGEvanMvc3JjL2ppdC9CYXNlbGluZUlDLmNwcCBiL2pzL3NyYy9qaXQvQmFzZWxpbmVJQy5jcHAK LWluZGV4IDk1NzIzOTRlNzYuLmRmZTc2MmU1YzggMTAwNjQ0Ci0tLS0gYS9qcy9zcmMvaml0L0Jh c2VsaW5lSUMuY3BwCi0rKysgYi9qcy9zcmMvaml0L0Jhc2VsaW5lSUMuY3BwCi1AQCAtMTI3LDE3 ICsxMjcsMTggQEAgY2xhc3MgTU9aX1JBSUkgRmFsbGJhY2tJQ0NvZGVDb21waWxlciBmaW5hbCB7 Ci0gfTsKLSAKLSBBbGxvY2F0YWJsZUdlbmVyYWxSZWdpc3RlclNldCBCYXNlbGluZUlDQXZhaWxh YmxlR2VuZXJhbFJlZ3Moc2l6ZV90IG51bUlucHV0cykgewotICAgQWxsb2NhdGFibGVHZW5lcmFs UmVnaXN0ZXJTZXQgcmVncyhHZW5lcmFsUmVnaXN0ZXJTZXQ6OkFsbCgpKTsKLSAjaWYgZGVmaW5l ZChKU19DT0RFR0VOX0FSTSkKLSAgIE1PWl9BU1NFUlQoIXJlZ3MuaGFzKEJhc2VsaW5lU3RhY2tS ZWcpKTsKLSAgIE1PWl9BU1NFUlQoIXJlZ3MuaGFzKElDVGFpbENhbGxSZWcpKTsKLSAgIHJlZ3Mu dGFrZShCYXNlbGluZVNlY29uZFNjcmF0Y2hSZWcpOwotLSNlbGlmIGRlZmluZWQoSlNfQ09ERUdF Tl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0rI2VsaWYgZGVmaW5lZChK U19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkgfHwgXAotKyAg ICAgIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSAgIE1PWl9BU1NFUlQoIXJlZ3MuaGFzKEJh c2VsaW5lU3RhY2tSZWcpKTsKLSAgIE1PWl9BU1NFUlQoIXJlZ3MuaGFzKElDVGFpbENhbGxSZWcp KTsKLSAgIE1PWl9BU1NFUlQoIXJlZ3MuaGFzKEJhc2VsaW5lU2Vjb25kU2NyYXRjaFJlZykpOwot ICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9BUk02NCkKLSAgIE1PWl9BU1NFUlQoIXJlZ3MuaGFz KFBzZXVkb1N0YWNrUG9pbnRlcikpOwotICAgTU9aX0FTU0VSVCghcmVncy5oYXMoUmVhbFN0YWNr UG9pbnRlcikpOwotICAgTU9aX0FTU0VSVCghcmVncy5oYXMoSUNUYWlsQ2FsbFJlZykpOwotICNl bHNlCi1kaWZmIC0tZ2l0IGEvanMvc3JjL2ppdC9Db2RlR2VuZXJhdG9yLmggYi9qcy9zcmMvaml0 L0NvZGVHZW5lcmF0b3IuaAotaW5kZXggNTMyMTk3OGZjMi4uYjJkOWE4ZjVhNSAxMDA2NDQKLS0t LSBhL2pzL3NyYy9qaXQvQ29kZUdlbmVyYXRvci5oCi0rKysgYi9qcy9zcmMvaml0L0NvZGVHZW5l cmF0b3IuaAotQEAgLTIwLDE2ICsyMCwxOCBAQAotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9B Uk0pCi0gIyAgaW5jbHVkZSAiaml0L2FybS9Db2RlR2VuZXJhdG9yLWFybS5oIgotICNlbGlmIGRl ZmluZWQoSlNfQ09ERUdFTl9BUk02NCkKLSAjICBpbmNsdWRlICJqaXQvYXJtNjQvQ29kZUdlbmVy YXRvci1hcm02NC5oIgotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpCi0gIyAgaW5j bHVkZSAiaml0L21pcHMzMi9Db2RlR2VuZXJhdG9yLW1pcHMzMi5oIgotICNlbGlmIGRlZmluZWQo SlNfQ09ERUdFTl9NSVBTNjQpCi0gIyAgaW5jbHVkZSAiaml0L21pcHM2NC9Db2RlR2VuZXJhdG9y LW1pcHM2NC5oIgotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsjICBpbmNsdWRl ICJqaXQvcHBjNjQvQ29kZUdlbmVyYXRvci1wcGM2NC5oIgotICNlbGlmIGRlZmluZWQoSlNfQ09E RUdFTl9OT05FKQotICMgIGluY2x1ZGUgImppdC9ub25lL0NvZGVHZW5lcmF0b3Itbm9uZS5oIgot ICNlbHNlCi0gIyAgZXJyb3IgIlVua25vd24gYXJjaGl0ZWN0dXJlISIKLSAjZW5kaWYKLSAKLSAj aW5jbHVkZSAid2FzbS9XYXNtR0MuaCIKLSAKLWRpZmYgLS1naXQgYS9qcy9zcmMvaml0L0ZsdXNo SUNhY2hlLmggYi9qcy9zcmMvaml0L0ZsdXNoSUNhY2hlLmgKLWluZGV4IGZlNjYwODBkZjUuLjIw NzE1NjNjMWUgMTAwNjQ0Ci0tLS0gYS9qcy9zcmMvaml0L0ZsdXNoSUNhY2hlLmgKLSsrKyBiL2pz L3NyYy9qaXQvRmx1c2hJQ2FjaGUuaAotQEAgLTE5LDE3ICsxOSwxOCBAQCBuYW1lc3BhY2Ugaml0 IHsKLSAjaWYgZGVmaW5lZChKU19DT0RFR0VOX1g4NikgfHwgZGVmaW5lZChKU19DT0RFR0VOX1g2 NCkKLSAKLSBpbmxpbmUgdm9pZCBGbHVzaElDYWNoZSh2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSwK LSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvZGVJc1RocmVhZExvY2FsID0gdHJ1ZSkg ewotICAgLy8gTm8tb3AuIENvZGUgYW5kIGRhdGEgY2FjaGVzIGFyZSBjb2hlcmVudCBvbiB4ODYg YW5kIHg2NC4KLSB9Ci0gCi0gI2VsaWYgKGRlZmluZWQoSlNfQ09ERUdFTl9BUk0pIHx8IGRlZmlu ZWQoSlNfQ09ERUdFTl9BUk02NCkpIHx8IFwKLS0gICAgKGRlZmluZWQoSlNfQ09ERUdFTl9NSVBT MzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpKQotKyAgICAoZGVmaW5lZChKU19DT0RF R0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkpIHx8IFwKLSsgICAgZGVm aW5lZChKU19DT0RFR0VOX1BQQzY0KQotIAotIGV4dGVybiB2b2lkIEZsdXNoSUNhY2hlKHZvaWQq IGNvZGUsIHNpemVfdCBzaXplLCBib29sIGNvZGVJc1RocmVhZExvY2FsID0gdHJ1ZSk7Ci0gCi0g I2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX05PTkUpCi0gCi0gaW5saW5lIHZvaWQgRmx1c2hJQ2Fj aGUodm9pZCogY29kZSwgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYm9v bCBjb2RlSXNUaHJlYWRMb2NhbCA9IHRydWUpIHsKLSAgIE1PWl9DUkFTSCgpOwotZGlmZiAtLWdp dCBhL2pzL3NyYy9qaXQvSml0RnJhbWVzLmNwcCBiL2pzL3NyYy9qaXQvSml0RnJhbWVzLmNwcAot aW5kZXggNzdjZmU2YTljZC4uNTA3ZjE1NTFlNiAxMDA2NDQKLS0tLSBhL2pzL3NyYy9qaXQvSml0 RnJhbWVzLmNwcAotKysrIGIvanMvc3JjL2ppdC9KaXRGcmFtZXMuY3BwCi1AQCAtMjIyMCwxNiAr MjIyMCwyNCBAQCBNYWNoaW5lU3RhdGUgTWFjaGluZVN0YXRlOjpGcm9tQmFpbG91dChSZWdpc3Rl ckR1bXA6OkdQUkFycmF5JiByZWdzLAotICAgICBtYWNoaW5lLnNldFJlZ2lzdGVyTG9jYXRpb24o Ci0gICAgICAgICBGbG9hdFJlZ2lzdGVyKEZsb2F0UmVnaXN0ZXJzOjpFbmNvZGluZyhpKSwgRmxv YXRSZWdpc3RlcnM6OlNpbmdsZSksCi0gICAgICAgICAmZnByZWdzW2ldKTsKLSAgICAgbWFjaGlu ZS5zZXRSZWdpc3RlckxvY2F0aW9uKAotICAgICAgICAgRmxvYXRSZWdpc3RlcihGbG9hdFJlZ2lz dGVyczo6RW5jb2RpbmcoaSksIEZsb2F0UmVnaXN0ZXJzOjpEb3VibGUpLAotICAgICAgICAgJmZw cmVnc1tpXSk7Ci0gICAgIC8vIE5vIFNJTUQgc3VwcG9ydCBpbiBiYWlsb3V0cywgU0lNRCBpcyBp bnRlcm5hbCB0byB3YXNtCi0gICB9Ci0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQot KyAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZsb2F0UmVnaXN0ZXJzOjpUb3RhbFBoeXM7IGkr KykgewotKyAgICBtYWNoaW5lLnNldFJlZ2lzdGVyTG9jYXRpb24oRmxvYXRSZWdpc3RlcihpKSwg JmZwcmVnc1tpXSk7Ci0rIyAgaWZkZWYgRU5BQkxFX1dBU01fU0lNRAotKyAgICAgLy8gTmVlZHMg YWRkaXRpb25hbCBoYW5kbGluZyBpZiBWTVggb3Igbm9uLUZQUiBWU1ggcmVncyBhcmUgaW4gcGxh eS4KLSsjICAgIGVycm9yICJTSU1EIGZvciBQUEMgTllJIgotKyMgIGVuZGlmCi0rICB9Ci0gCi0g I2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX05PTkUpCi0gICBNT1pfQ1JBU0goKTsKLSAjZWxzZQot ICMgIGVycm9yICJVbmtub3duIGFyY2hpdGVjdHVyZSEiCi0gI2VuZGlmCi0gICByZXR1cm4gbWFj aGluZTsKLSB9Ci1kaWZmIC0tZ2l0IGEvanMvc3JjL2ppdC9KaXRGcmFtZXMuaCBiL2pzL3NyYy9q aXQvSml0RnJhbWVzLmgKLWluZGV4IDQwYzY2MWQxNDYuLjdiNGVhMzE1N2QgMTAwNjQ0Ci0tLS0g YS9qcy9zcmMvaml0L0ppdEZyYW1lcy5oCi0rKysgYi9qcy9zcmMvaml0L0ppdEZyYW1lcy5oCi1A QCAtMTUyLDE2ICsxNTIsMjYgQEAgc3RydWN0IFJlc3VtZUZyb21FeGNlcHRpb24gewotICAgc3Rh dGljIGNvbnN0IHVpbnQzMl90IFJFU1VNRV9FTlRSWV9GUkFNRSA9IDA7Ci0gICBzdGF0aWMgY29u c3QgdWludDMyX3QgUkVTVU1FX0NBVENIID0gMTsKLSAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBS RVNVTUVfRklOQUxMWSA9IDI7Ci0gICBzdGF0aWMgY29uc3QgdWludDMyX3QgUkVTVU1FX0ZPUkNF RF9SRVRVUk4gPSAzOwotICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IFJFU1VNRV9CQUlMT1VUID0g NDsKLSAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBSRVNVTUVfV0FTTSA9IDU7Ci0gICBzdGF0aWMg Y29uc3QgdWludDMyX3QgUkVTVU1FX1dBU01fQ0FUQ0ggPSA2OwotIAotKyNpZiBkZWZpbmVkKEpT X0NPREVHRU5fUFBDNjQpCi0rICAvLyBUaGlzIGdldHMgYnVpbHQgb24gdGhlIHN0YWNrIGFzIHBh cnQgb2YgZXhjZXB0aW9uIHJldHVybnMuIEJlY2F1c2UKLSsgIC8vIGl0IGdvZXMgcmlnaHQgb24g dG9wIG9mIHRoZSBzdGFjaywgYW4gQUJJLWNvbXBsaWFudCByb3V0aW5lIGNhbiB3cmVjawotKyAg Ly8gaXQsIHNvIHdlIGltcGxlbWVudCBhIG1pbmltdW0gUG93ZXIgSVNBIGxpbmthZ2UgYXJlYSAo Zm91ciBkb3VibGV3b3JkcykuCi0rICB2b2lkICpfcHBjX3NwXzsKLSsgIHZvaWQgKl9wcGNfY3Jf OwotKyAgdm9pZCAqX3BwY19scl87Ci0rICB2b2lkICpfcHBjX3RvY187Ci0rI2VuZGlmCi0rCi0g ICB1aW50OF90KiBmcmFtZVBvaW50ZXI7Ci0gICB1aW50OF90KiBzdGFja1BvaW50ZXI7Ci0gICB1 aW50OF90KiB0YXJnZXQ7Ci0gICB1aW50MzJfdCBraW5kOwotIAotICAgLy8gVmFsdWUgdG8gcHVz aCB3aGVuIHJlc3VtaW5nIGludG8gYSB8ZmluYWxseXwgYmxvY2suCi0gICAvLyBBbHNvIHVzZWQg YnkgV2FzbSB0byBzZW5kIHRoZSBleGNlcHRpb24gb2JqZWN0IHRvIHRoZSB0aHJvdyBzdHViLgot ICAgSlM6OlZhbHVlIGV4Y2VwdGlvbjsKLWRpZmYgLS1naXQgYS9qcy9zcmMvaml0L0ppdE9wdGlv bnMuY3BwIGIvanMvc3JjL2ppdC9KaXRPcHRpb25zLmNwcAotaW5kZXggZGUxMzc3N2ZjMy4uNzk1 ZTQxYmYyMSAxMDA2NDQKLS0tLSBhL2pzL3NyYy9qaXQvSml0T3B0aW9ucy5jcHAKLSsrKyBiL2pz L3NyYy9qaXQvSml0T3B0aW9ucy5jcHAKLUBAIC0xMzIsMTcgKzEzMiwyMiBAQCBEZWZhdWx0Sml0 T3B0aW9uczo6RGVmYXVsdEppdE9wdGlvbnMoKSB7Ci0gICAvLyBXYXJwIGNvbXBpbGUgR2VuZXJh dG9yIGZ1bmN0aW9ucwotICAgU0VUX0RFRkFVTFQod2FycEdlbmVyYXRvciwgdHJ1ZSk7Ci0gCi0g ICAvLyBXaGV0aGVyIHRoZSBJb25Nb25rZXkgYW5kIEJhc2VsaW5lIEpJVHMgYXJlIGVuYWJsZWQg Zm9yIFRydXN0ZWQgUHJpbmNpcGFscy4KLSAgIC8vIChJZ25vcmVkIGlmIGlvbiBvciBiYXNlbGlu ZUppdCBpcyBzZXQgdG8gdHJ1ZS4pCi0gICBTRVRfREVGQVVMVChqaXRGb3JUcnVzdGVkUHJpbmNp cGFscywgZmFsc2UpOwotIAotICAgLy8gV2hldGhlciB0aGUgUmVnRXhwIEpJVCBpcyBlbmFibGVk LgotKyNpZiBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rICAvLyBUaGlzIG1heSBnZW5lcmF0 ZSBJU0EgMyBpbnN0cnVjdGlvbnMuIFRoZSBvdGhlciBKSVQgdGllcnMgZ2F0ZSBvbiBpdCB0b28u Ci0rICBTRVRfREVGQVVMVChuYXRpdmVSZWdFeHAsIE1hY3JvQXNzZW1ibGVyOjpTdXBwb3J0c0Zs b2F0aW5nUG9pbnQoKSk7Ci0rI2Vsc2UKLSAgIFNFVF9ERUZBVUxUKG5hdGl2ZVJlZ0V4cCwgdHJ1 ZSk7Ci0rI2VuZGlmCi0gCi0gICAvLyBXaGV0aGVyIFdhcnAgc2hvdWxkIHVzZSBJQ3MgaW5zdGVh ZCBvZiB0cmFuc3BpbGluZyBCYXNlbGluZSBDYWNoZUlSLgotICAgU0VUX0RFRkFVTFQoZm9yY2VJ bmxpbmVDYWNoZXMsIGZhbHNlKTsKLSAKLSAgIC8vIFdoZXRoZXIgYWxsIElDcyBzaG91bGQgYmUg aW5pdGlhbGl6ZWQgYXMgbWVnYW1vcnBoaWMgSUNzLgotICAgU0VUX0RFRkFVTFQoZm9yY2VNZWdh bW9ycGhpY0lDcywgZmFsc2UpOwotIAotICAgLy8gVG9nZ2xlcyB3aGV0aGVyIGxhcmdlIHNjcmlw dHMgYXJlIHJlamVjdGVkLgotZGlmZiAtLWdpdCBhL2pzL3NyYy9qaXQvTElSLmggYi9qcy9zcmMv aml0L0xJUi5oCi1pbmRleCAwMjRiZDc5OGNhLi4wY2Q0M2MxMmFiIDEwMDY0NAotLS0tIGEvanMv c3JjL2ppdC9MSVIuaAotKysrIGIvanMvc3JjL2ppdC9MSVIuaAotQEAgLTE5MzksMTYgKzE5Mzks MTggQEAgQW55UmVnaXN0ZXIgTEFsbG9jYXRpb246OnRvUmVnaXN0ZXIoKSBjb25zdCB7Ci0gIyAg aW5jbHVkZSAiaml0L2FybTY0L0xJUi1hcm02NC5oIgotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdF Tl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0gIyAgaWYgZGVmaW5lZChK U19DT0RFR0VOX01JUFMzMikKLSAjICAgIGluY2x1ZGUgImppdC9taXBzMzIvTElSLW1pcHMzMi5o IgotICMgIGVsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSAjICAgIGluY2x1ZGUgImpp dC9taXBzNjQvTElSLW1pcHM2NC5oIgotICMgIGVuZGlmCi0gIyAgaW5jbHVkZSAiaml0L21pcHMt c2hhcmVkL0xJUi1taXBzLXNoYXJlZC5oIgotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2 NCkKLSsjICBpbmNsdWRlICJqaXQvcHBjNjQvTElSLXBwYzY0LmgiCi0gI2VsaWYgZGVmaW5lZChK U19DT0RFR0VOX05PTkUpCi0gIyAgaW5jbHVkZSAiaml0L25vbmUvTElSLW5vbmUuaCIKLSAjZWxz ZQotICMgIGVycm9yICJVbmtub3duIGFyY2hpdGVjdHVyZSEiCi0gI2VuZGlmCi0gCi0gI3VuZGVm IExJUl9IRUFERVIKLSAKLWRpZmYgLS1naXQgYS9qcy9zcmMvaml0L0xhYmVsLmggYi9qcy9zcmMv aml0L0xhYmVsLmgKLWluZGV4IGE4ZjkzZGUzNzguLjQ4MGIxOGIyNTEgMTAwNjQ0Ci0tLS0gYS9q cy9zcmMvaml0L0xhYmVsLmgKLSsrKyBiL2pzL3NyYy9qaXQvTGFiZWwuaAotQEAgLTIxLDE3ICsy MSwxOCBAQCBzdHJ1Y3QgTGFiZWxCYXNlIHsKLSAgIHVpbnQzMl90IGJvdW5kXyA6IDE7Ci0gCi0g ICAvLyBvZmZzZXRfIDwgSU5WQUxJRF9PRkZTRVQgbWVhbnMgdGhhdCB0aGUgbGFiZWwgaXMgZWl0 aGVyIGJvdW5kIG9yIGhhcwotICAgLy8gaW5jb21pbmcgdXNlcyBhbmQgbmVlZHMgdG8gYmUgYm91 bmQuCi0gICB1aW50MzJfdCBvZmZzZXRfIDogMzE7Ci0gCi0gICB2b2lkIG9wZXJhdG9yPShjb25z dCBMYWJlbEJhc2UmIGxhYmVsKSA9IGRlbGV0ZTsKLSAKLS0jaWYgZGVmaW5lZChKU19DT0RFR0VO X01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSsjaWYgZGVmaW5lZChKU19D T0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkgfHwgXAotKyAgICBk ZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0gIHB1YmxpYzoKLSAjZW5kaWYKLSAgIHN0YXRpYyBj b25zdCB1aW50MzJfdCBJTlZBTElEX09GRlNFVCA9IDB4N2ZmZmZmZmY7ICAvLyBVSU5UMzFfTUFY LgotIAotICBwdWJsaWM6Ci0gICBMYWJlbEJhc2UoKSA6IGJvdW5kXyhmYWxzZSksIG9mZnNldF8o SU5WQUxJRF9PRkZTRVQpIHt9Ci0gCi0gICAvLyBJZiB0aGUgbGFiZWwgaXMgYm91bmQsIGFsbCBp bmNvbWluZyBlZGdlcyBoYXZlIGJlZW4gcGF0Y2hlZCBhbmQgYW55Ci1kaWZmIC0tZ2l0IGEvanMv c3JjL2ppdC9Mb3dlcmluZy5oIGIvanMvc3JjL2ppdC9Mb3dlcmluZy5oCi1pbmRleCA5Nzk2ODdk YTg1Li5jMDY0ZTVkOTE0IDEwMDY0NAotLS0tIGEvanMvc3JjL2ppdC9Mb3dlcmluZy5oCi0rKysg Yi9qcy9zcmMvaml0L0xvd2VyaW5nLmgKLUBAIC0xOCwxNiArMTgsMTggQEAKLSAjZWxpZiBkZWZp bmVkKEpTX0NPREVHRU5fQVJNKQotICMgIGluY2x1ZGUgImppdC9hcm0vTG93ZXJpbmctYXJtLmgi Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTTY0KQotICMgIGluY2x1ZGUgImppdC9hcm02 NC9Mb3dlcmluZy1hcm02NC5oIgotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpCi0g IyAgaW5jbHVkZSAiaml0L21pcHMzMi9Mb3dlcmluZy1taXBzMzIuaCIKLSAjZWxpZiBkZWZpbmVk KEpTX0NPREVHRU5fTUlQUzY0KQotICMgIGluY2x1ZGUgImppdC9taXBzNjQvTG93ZXJpbmctbWlw czY0LmgiCi0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKyMgIGluY2x1ZGUgImpp dC9wcGM2NC9Mb3dlcmluZy1wcGM2NC5oIgotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9OT05F KQotICMgIGluY2x1ZGUgImppdC9ub25lL0xvd2VyaW5nLW5vbmUuaCIKLSAjZWxzZQotICMgIGVy cm9yICJVbmtub3duIGFyY2hpdGVjdHVyZSEiCi0gI2VuZGlmCi0gCi0gbmFtZXNwYWNlIGpzIHsK LSBuYW1lc3BhY2Ugaml0IHsKLWRpZmYgLS1naXQgYS9qcy9zcmMvaml0L01hY3JvQXNzZW1ibGVy LWlubC5oIGIvanMvc3JjL2ppdC9NYWNyb0Fzc2VtYmxlci1pbmwuaAotaW5kZXggY2YxNmNkZjBh Ny4uZmEzOWM1ZjRkMiAxMDA2NDQKLS0tLSBhL2pzL3NyYy9qaXQvTWFjcm9Bc3NlbWJsZXItaW5s LmgKLSsrKyBiL2pzL3NyYy9qaXQvTWFjcm9Bc3NlbWJsZXItaW5sLmgKLUBAIC0zMCwxNiArMzAs MTggQEAKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fQVJNKQotICMgIGluY2x1ZGUgImppdC9h cm0vTWFjcm9Bc3NlbWJsZXItYXJtLWlubC5oIgotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9B Uk02NCkKLSAjICBpbmNsdWRlICJqaXQvYXJtNjQvTWFjcm9Bc3NlbWJsZXItYXJtNjQtaW5sLmgi Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikKLSAjICBpbmNsdWRlICJqaXQvbWlw czMyL01hY3JvQXNzZW1ibGVyLW1pcHMzMi1pbmwuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVH RU5fTUlQUzY0KQotICMgIGluY2x1ZGUgImppdC9taXBzNjQvTWFjcm9Bc3NlbWJsZXItbWlwczY0 LWlubC5oIgotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsjICBpbmNsdWRlICJq aXQvcHBjNjQvTWFjcm9Bc3NlbWJsZXItcHBjNjQtaW5sLmgiCi0gI2VsaWYgIWRlZmluZWQoSlNf Q09ERUdFTl9OT05FKQotICMgIGVycm9yICJVbmtub3duIGFyY2hpdGVjdHVyZSEiCi0gI2VuZGlm Ci0gCi0gI2luY2x1ZGUgIndhc20vV2FzbUJ1aWx0aW5zLmgiCi0gCi0gbmFtZXNwYWNlIGpzIHsK LSBuYW1lc3BhY2Ugaml0IHsKLWRpZmYgLS1naXQgYS9qcy9zcmMvaml0L01hY3JvQXNzZW1ibGVy LmNwcCBiL2pzL3NyYy9qaXQvTWFjcm9Bc3NlbWJsZXIuY3BwCi1pbmRleCAyYTNhZWVjNjA3Li5j YmU5ZDE0ZjQ2IDEwMDY0NAotLS0tIGEvanMvc3JjL2ppdC9NYWNyb0Fzc2VtYmxlci5jcHAKLSsr KyBiL2pzL3NyYy9qaXQvTWFjcm9Bc3NlbWJsZXIuY3BwCi1AQCAtNDA0NCwxNiArNDA0NCwxOCBA QCB2b2lkIE1hY3JvQXNzZW1ibGVyOjplbWl0UHJlQmFycmllckZhc3RQYXRoKEpTUnVudGltZSog cnQsIE1JUlR5cGUgdHlwZSwKLSAjZWxpZiBKU19DT0RFR0VOX0FSTQotICAgbWFfbHNsKHRlbXAz LCB0ZW1wMSwgdGVtcDEpOwotICNlbGlmIEpTX0NPREVHRU5fQVJNNjQKLSAgIExzbChBUk1SZWdp c3Rlcih0ZW1wMSwgNjQpLCBBUk1SZWdpc3Rlcih0ZW1wMSwgNjQpLCBBUk1SZWdpc3Rlcih0ZW1w MywgNjQpKTsKLSAjZWxpZiBKU19DT0RFR0VOX01JUFMzMgotICAgbWFfc2xsKHRlbXAxLCB0ZW1w MSwgdGVtcDMpOwotICNlbGlmIEpTX0NPREVHRU5fTUlQUzY0Ci0gICBtYV9kc2xsKHRlbXAxLCB0 ZW1wMSwgdGVtcDMpOwotKyNlbGlmIEpTX0NPREVHRU5fUFBDNjQKLSsgIGFzX3NsZCh0ZW1wMSwg dGVtcDEsIHRlbXAzKTsKLSAjZWxpZiBKU19DT0RFR0VOX05PTkUKLSAgIE1PWl9DUkFTSCgpOwot ICNlbHNlCi0gIyAgZXJyb3IgIlVua25vd24gYXJjaGl0ZWN0dXJlIgotICNlbmRpZgotIAotICAg Ly8gTm8gYmFycmllciBpcyBuZWVkZWQgaWYgdGhlIGJpdCBpcyBzZXQsIHx3b3JkICYgbWFzayAh PSAwfC4KLSAgIGJyYW5jaFRlc3RQdHIoQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wMiwgdGVtcDEs IG5vQmFycmllcik7Ci1kaWZmIC0tZ2l0IGEvanMvc3JjL2ppdC9NYWNyb0Fzc2VtYmxlci5oIGIv anMvc3JjL2ppdC9NYWNyb0Fzc2VtYmxlci5oCi1pbmRleCBlMmQ1M2Q1Y2VmLi5jYjAxNDhiOTRl IDEwMDY0NAotLS0tIGEvanMvc3JjL2ppdC9NYWNyb0Fzc2VtYmxlci5oCi0rKysgYi9qcy9zcmMv aml0L01hY3JvQXNzZW1ibGVyLmgKLUBAIC0yMCwxNiArMjAsMTggQEAKLSAjZWxpZiBkZWZpbmVk KEpTX0NPREVHRU5fQVJNKQotICMgIGluY2x1ZGUgImppdC9hcm0vTWFjcm9Bc3NlbWJsZXItYXJt LmgiCi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTTY0KQotICMgIGluY2x1ZGUgImppdC9h cm02NC9NYWNyb0Fzc2VtYmxlci1hcm02NC5oIgotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9N SVBTMzIpCi0gIyAgaW5jbHVkZSAiaml0L21pcHMzMi9NYWNyb0Fzc2VtYmxlci1taXBzMzIuaCIK LSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQotICMgIGluY2x1ZGUgImppdC9taXBz NjQvTWFjcm9Bc3NlbWJsZXItbWlwczY0LmgiCi0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQ QzY0KQotKyMgIGluY2x1ZGUgImppdC9wcGM2NC9NYWNyb0Fzc2VtYmxlci1wcGM2NC5oIgotICNl bGlmIGRlZmluZWQoSlNfQ09ERUdFTl9OT05FKQotICMgIGluY2x1ZGUgImppdC9ub25lL01hY3Jv QXNzZW1ibGVyLW5vbmUuaCIKLSAjZWxzZQotICMgIGVycm9yICJVbmtub3duIGFyY2hpdGVjdHVy ZSEiCi0gI2VuZGlmCi0gI2luY2x1ZGUgImppdC9BQklGdW5jdGlvbnMuaCIKLSAjaW5jbHVkZSAi aml0L0F0b21pY09wLmgiCi0gI2luY2x1ZGUgImppdC9BdXRvSml0Q29udGV4dEFsbG9jLmgiCi1A QCAtODcsMTggKzg5LDE4IEBACi0gLy8gICAvL3t7eyBjaGVja19tYWNyb2Fzc2VtYmxlcl9zdHls ZQotIC8vICAgaW5saW5lIHVpbnQzMl90Ci0gLy8gICBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQdXNo ZWQoKSBjb25zdAotIC8vICAgewotIC8vICAgICAgIHJldHVybiBmcmFtZVB1c2hlZF87Ci0gLy8g ICB9Ci0gLy8gICAvLy8vfX19IGNoZWNrX21hY3JvYXNzZW1ibGVyX3N0eWxlCi0gCi0tI2RlZmlu ZSBBTExfQVJDSCBtaXBzMzIsIG1pcHM2NCwgYXJtLCBhcm02NCwgeDg2LCB4NjQKLS0jZGVmaW5l IEFMTF9TSEFSRURfQVJDSCBhcm0sIGFybTY0LCB4ODZfc2hhcmVkLCBtaXBzX3NoYXJlZAotKyNk ZWZpbmUgQUxMX0FSQ0ggbWlwczMyLCBtaXBzNjQsIGFybSwgYXJtNjQsIHg4NiwgeDY0LCBwcGM2 NAotKyNkZWZpbmUgQUxMX1NIQVJFRF9BUkNIIGFybSwgYXJtNjQsIHg4Nl9zaGFyZWQsIG1pcHNf c2hhcmVkLCBwcGM2NAotIAotIC8vICogSG93IHRoaXMgbWFjcm8gd29ya3M6Ci0gLy8KLSAvLyBE RUZJTkVEX09OIGlzIGEgbWFjcm8gd2hpY2ggY2hlY2sgaWYsIGZvciB0aGUgY3VycmVudCBhcmNo aXRlY3R1cmUsIHRoZQotIC8vIG1ldGhvZCBpcyBkZWZpbmVkIG9uIHRoZSBtYWNybyBhc3NlbWJs ZXIgb3Igbm90LgotIC8vCi0gLy8gRm9yIGVhY2ggYXJjaGl0ZWN0dXJlLCB3ZSBoYXZlIGEgbWFj cm8gbmFtZWQgREVGSU5FRF9PTl9hcmNoLiAgVGhpcyBtYWNybyBpcwotIC8vIGVtcHR5IGlmIHRo aXMgaXMgbm90IHRoZSBjdXJyZW50IGFyY2hpdGVjdHVyZS4gIE90aGVyd2lzZSBpdCBtdXN0IGJl IGVpdGhlcgotQEAgLTEzNCwxNiArMTM2LDE3IEBACi0gI2RlZmluZSBERUZJTkVEX09OX3g4Ngot ICNkZWZpbmUgREVGSU5FRF9PTl94NjQKLSAjZGVmaW5lIERFRklORURfT05feDg2X3NoYXJlZAot ICNkZWZpbmUgREVGSU5FRF9PTl9hcm0KLSAjZGVmaW5lIERFRklORURfT05fYXJtNjQKLSAjZGVm aW5lIERFRklORURfT05fbWlwczMyCi0gI2RlZmluZSBERUZJTkVEX09OX21pcHM2NAotICNkZWZp bmUgREVGSU5FRF9PTl9taXBzX3NoYXJlZAotKyNkZWZpbmUgREVGSU5FRF9PTl9wcGM2NAotICNk ZWZpbmUgREVGSU5FRF9PTl9ub25lCi0gCi0gLy8gU3BlY2lhbGl6ZSBmb3IgZWFjaCBhcmNoaXRl Y3R1cmUuCi0gI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9YODYpCi0gIyAgdW5kZWYgREVGSU5FRF9P Tl94ODYKLSAjICBkZWZpbmUgREVGSU5FRF9PTl94ODYgZGVmaW5lCi0gIyAgdW5kZWYgREVGSU5F RF9PTl94ODZfc2hhcmVkCi0gIyAgZGVmaW5lIERFRklORURfT05feDg2X3NoYXJlZCBkZWZpbmUK LUBAIC0xNjMsMTYgKzE2NiwxOSBAQAotICMgIGRlZmluZSBERUZJTkVEX09OX21pcHMzMiBkZWZp bmUKLSAjICB1bmRlZiBERUZJTkVEX09OX21pcHNfc2hhcmVkCi0gIyAgZGVmaW5lIERFRklORURf T05fbWlwc19zaGFyZWQgZGVmaW5lCi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkK LSAjICB1bmRlZiBERUZJTkVEX09OX21pcHM2NAotICMgIGRlZmluZSBERUZJTkVEX09OX21pcHM2 NCBkZWZpbmUKLSAjICB1bmRlZiBERUZJTkVEX09OX21pcHNfc2hhcmVkCi0gIyAgZGVmaW5lIERF RklORURfT05fbWlwc19zaGFyZWQgZGVmaW5lCi0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQ QzY0KQotKyMgIHVuZGVmIERFRklORURfT05fcHBjNjQKLSsjICBkZWZpbmUgREVGSU5FRF9PTl9w cGM2NCBkZWZpbmUKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTk9ORSkKLSAjICB1bmRlZiBE RUZJTkVEX09OX25vbmUKLSAjICBkZWZpbmUgREVGSU5FRF9PTl9ub25lIGNyYXNoCi0gI2Vsc2UK LSAjICBlcnJvciAiVW5rbm93biBhcmNoaXRlY3R1cmUhIgotICNlbmRpZgotIAotICNkZWZpbmUg REVGSU5FRF9PTl9SRVNVTFRfY3Jhc2ggXAotQEAgLTQ3OSwzNiArNDg1LDM2IEBAIGNsYXNzIE1h Y3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyU3BlY2lmaWMgewotICAgLy8gdGFy Z2V0cyByb2xsIHRoZWlyIG93biBzYXZlLWNvZGUgaW5zdGVhZC4KLSAgIC8vCi0gICAvLyBOZXZl cnRoZWxlc3MsIGJlY2F1c2Ugc29tZSB0YXJnZXRzICpkbyogY2FsbCBQdXNoUmVnc0luTWFzayBm cm9tCi0gICAvLyBKaXRSdW50aW1lOjpnZW5lcmF0ZUludmFsaWRhdG9yLCB5b3Ugc2hvdWxkIGNo ZWNrIGNhcmVmdWxseSBhbGwgb2YgdGhlCi0gICAvLyA6OmdlbmVyYXRlSW52YWxpZGF0b3IgbWV0 aG9kcyBpZiB5b3UgY2hhbmdlIHRoZSBQdXNoUmVnc0luTWFzayBmb3JtYXQuCi0gCi0gICAvLyBU aGUgc2l6ZSBvZiB0aGUgYXJlYSB1c2VkIGJ5IFB1c2hSZWdzSW5NYXNrLgotICAgc2l6ZV90IFB1 c2hSZWdzSW5NYXNrU2l6ZUluQnl0ZXMoTGl2ZVJlZ2lzdGVyU2V0IHNldCkKLS0gICAgICBERUZJ TkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkKTsKLSsgICAgICBE RUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkLCBwcGM2NCk7 Ci0gCi0gICB2b2lkIFB1c2hSZWdzSW5NYXNrKExpdmVSZWdpc3RlclNldCBzZXQpCi0tICAgICAg REVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCk7Ci0rICAg ICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCwgcHBj NjQpOwotICAgdm9pZCBQdXNoUmVnc0luTWFzayhMaXZlR2VuZXJhbFJlZ2lzdGVyU2V0IHNldCk7 Ci0gCi0gICAvLyBMaWtlIFB1c2hSZWdzSW5NYXNrLCBidXQgaW5zdGVhZCBvZiBwdXNoaW5nIHRo ZSByZWdpc3RlcnMsIHN0b3JlIHRoZW0gdG8KLSAgIC8vIHxkZXN0fC4gfGRlc3R8IHNob3VsZCBw b2ludCB0byB0aGUgZW5kIG9mIHRoZSByZXNlcnZlZCBzcGFjZSwgc28gdGhlCi0gICAvLyBmaXJz dCByZWdpc3RlciB3aWxsIGJlIHN0b3JlZCBhdCB8ZGVzdC5vZmZzZXQgLSBzaXplb2YocmVnaXN0 ZXIpfC4gIEl0IGlzCi0gICAvLyByZXF1aXJlZCB0aGF0IHxkZXN0Lm9mZnNldHwgaXMgYXQgbGVh c3QgYXMgbGFyZ2UgYXMgdGhlIHZhbHVlIGNvbXB1dGVkIGJ5Ci0gICAvLyBQdXNoUmVnc0luTWFz a1NpemVJbkJ5dGVzIGZvciB0aGlzIHxzZXR8LiAgSW4gb3RoZXIgd29yZHMsIHxkZXN0LmJhc2V8 Ci0gICAvLyBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgbG93ZXN0IGFkZHJlc3MgaW4gdGhlIHNh dmUgYXJlYSwgb3Igc29tZSBhZGRyZXNzCi0gICAvLyBiZWxvdyB0aGF0LgotICAgdm9pZCBzdG9y ZVJlZ3NJbk1hc2soTGl2ZVJlZ2lzdGVyU2V0IHNldCwgQWRkcmVzcyBkZXN0LCBSZWdpc3RlciBz Y3JhdGNoKQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4 Nl9zaGFyZWQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQs IHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIHZvaWQgUG9wUmVnc0luTWFzayhMaXZlUmVnaXN0 ZXJTZXQgc2V0KTsKLSAgIHZvaWQgUG9wUmVnc0luTWFzayhMaXZlR2VuZXJhbFJlZ2lzdGVyU2V0 IHNldCk7Ci0gICB2b2lkIFBvcFJlZ3NJbk1hc2tJZ25vcmUoTGl2ZVJlZ2lzdGVyU2V0IHNldCwg TGl2ZVJlZ2lzdGVyU2V0IGlnbm9yZSkKLS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1p cHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkKTsKLSsgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQs IG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkLCBwcGM2NCk7Ci0gCi0gICAvLyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAg IC8vIFN0YWNrIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMgLS0gc2luZ2xlIHJlZ2lzdGVycy92YWx1 ZXMuCi0gCi0gICB2b2lkIFB1c2goY29uc3QgT3BlcmFuZCBvcCkgREVGSU5FRF9PTih4ODZfc2hh cmVkKTsKLSAgIHZvaWQgUHVzaChSZWdpc3RlciByZWcpIFBFUl9TSEFSRURfQVJDSDsKLSAgIHZv aWQgUHVzaChSZWdpc3RlciByZWcxLCBSZWdpc3RlciByZWcyLCBSZWdpc3RlciByZWczLCBSZWdp c3RlciByZWc0KQotICAgICAgIERFRklORURfT04oYXJtNjQpOwotQEAgLTUzMSwxNyArNTM3LDE3 IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyU3BlY2lmaWMg ewotICAgaW5saW5lIENvZGVPZmZzZXQgUHVzaFdpdGhQYXRjaChJbW1Xb3JkIHdvcmQpOwotICAg aW5saW5lIENvZGVPZmZzZXQgUHVzaFdpdGhQYXRjaChJbW1QdHIgaW1tKTsKLSAKLSAgIHZvaWQg UG9wKGNvbnN0IE9wZXJhbmQgb3ApIERFRklORURfT04oeDg2X3NoYXJlZCk7Ci0gICB2b2lkIFBv cChSZWdpc3RlciByZWcpIFBFUl9TSEFSRURfQVJDSDsKLSAgIHZvaWQgUG9wKEZsb2F0UmVnaXN0 ZXIgdCkgUEVSX1NIQVJFRF9BUkNIOwotICAgdm9pZCBQb3AoY29uc3QgVmFsdWVPcGVyYW5kJiB2 YWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIHZvaWQgUG9wRmxhZ3MoKSBERUZJTkVEX09OKHg4Nl9z aGFyZWQpOwotLSAgdm9pZCBQb3BTdGFja1B0cigpIERFRklORURfT04oYXJtLCBtaXBzX3NoYXJl ZCwgeDg2X3NoYXJlZCk7Ci0rICB2b2lkIFBvcFN0YWNrUHRyKCkgREVGSU5FRF9PTihhcm0sIG1p cHNfc2hhcmVkLCB4ODZfc2hhcmVkLCBwcGM2NCk7Ci0gICB2b2lkIHBvcFJvb3RlZChWTUZ1bmN0 aW9uRGF0YTo6Um9vdFR5cGUgcm9vdFR5cGUsIFJlZ2lzdGVyIGNlbGxSZWcsCi0gICAgICAgICAg ICAgICAgICBjb25zdCBWYWx1ZU9wZXJhbmQmIHZhbHVlUmVnKTsKLSAKLSAgIC8vIE1vdmUgdGhl IHN0YWNrIHBvaW50ZXIgYmFzZWQgb24gdGhlIHJlcXVlc3RlZCBhbW91bnQuCi0gICB2b2lkIGFk anVzdFN0YWNrKGludCBhbW91bnQpOwotICAgdm9pZCBmcmVlU3RhY2sodWludDMyX3QgYW1vdW50 KTsKLSAKLSAgIC8vIFdhcm5pbmc6IFRoaXMgbWV0aG9kIGRvZXMgbm90IHVwZGF0ZSB0aGUgZnJh bWVQdXNoZWQoKSBjb3VudGVyLgotQEAgLTU4OSwxOCArNTk1LDE4IEBAIGNsYXNzIE1hY3JvQXNz ZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyU3BlY2lmaWMgewotIAotICAgLy8gUHVzaCB0 aGUgcmV0dXJuIGFkZHJlc3MgYW5kIG1ha2UgYSBjYWxsLiBPbiBwbGF0Zm9ybXMgd2hlcmUgdGhp cyBmdW5jdGlvbgotICAgLy8gaXMgbm90IGRlZmluZWQsIHB1c2ggdGhlIGxpbmsgcmVnaXN0ZXIg KHB1c2hSZXR1cm5BZGRyZXNzKSBhdCB0aGUgZW50cnkKLSAgIC8vIHBvaW50IG9mIHRoZSBjYWxs ZWUuCi0gICB2b2lkIGNhbGxBbmRQdXNoUmV0dXJuQWRkcmVzcyhSZWdpc3RlciByZWcpIERFRklO RURfT04oeDg2X3NoYXJlZCk7Ci0gICB2b2lkIGNhbGxBbmRQdXNoUmV0dXJuQWRkcmVzcyhMYWJl bCogbGFiZWwpIERFRklORURfT04oeDg2X3NoYXJlZCk7Ci0gCi0gICAvLyBUaGVzZSBkbyBub3Qg YWRqdXN0IGZyYW1lUHVzaGVkKCkuCi0tICB2b2lkIHB1c2hSZXR1cm5BZGRyZXNzKCkgREVGSU5F RF9PTihtaXBzX3NoYXJlZCwgYXJtLCBhcm02NCk7Ci0tICB2b2lkIHBvcFJldHVybkFkZHJlc3Mo KSBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBhcm0sIGFybTY0KTsKLSsgIHZvaWQgcHVzaFJldHVy bkFkZHJlc3MoKSBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBhcm0sIGFybTY0LCBwcGM2NCk7Ci0r ICB2b2lkIHBvcFJldHVybkFkZHJlc3MoKSBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBhcm0sIGFy bTY0LCBwcGM2NCk7Ci0gCi0gICAvLyBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aCB0d28tdmFsdWVk IHJldHVybnMuCi0gICB2b2lkIG1vdmVSZWdQYWlyKFJlZ2lzdGVyIHNyYzAsIFJlZ2lzdGVyIHNy YzEsIFJlZ2lzdGVyIGRzdDAsIFJlZ2lzdGVyIGRzdDEsCi0gICAgICAgICAgICAgICAgICAgIE1v dmVPcDo6VHlwZSB0eXBlID0gTW92ZU9wOjpHRU5FUkFMKTsKLSAKLSAgcHVibGljOgotICAgLy8g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0gICAvLyBQYXRjaGFibGUgbmVhci9mYXIganVtcHMuCi1AQCAtNjIxLDIwICs2Mjcs MjAgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJTcGVjaWZp YyB7Ci0gCi0gICAvLyBUaGVzZSBtZXRob2RzIGFyZSBsaWtlIG1vdldpdGhQYXRjaC9QYXRjaERh dGFXaXRoVmFsdWVDaGVjayBidXQgYWxsb3cKLSAgIC8vIHVzaW5nIHBjLXJlbGF0aXZlIGFkZHJl c3Npbmcgb24gY2VydGFpbiBwbGF0Zm9ybXMgKFJJUC1yZWxhdGl2ZSBMRUEgb24geDY0LAotICAg Ly8gQURSIGluc3RydWN0aW9uIG9uIGFybTY0KS4KLSAgIC8vCi0gICAvLyBOb3RlOiAiTmVhciIg YXBwbGllcyB0byBBUk02NCB3aGVyZSB0aGUgdGFyZ2V0IG11c3QgYmUgd2l0aGluIDEgTUIgKHRo aXMgaXMKLSAgIC8vIHJlbGVhc2UtYXNzZXJ0ZWQpLgotICAgQ29kZU9mZnNldCBtb3ZlTmVhckFk ZHJlc3NXaXRoUGF0Y2goUmVnaXN0ZXIgZGVzdCkKLS0gICAgICBERUZJTkVEX09OKHg4NiwgeDY0 LCBhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTih4ODYsIHg2NCwg YXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHBwYzY0KTsKLSAgIHN0YXRpYyB2b2lkIHBhdGNoTmVh ckFkZHJlc3NNb3ZlKENvZGVMb2NhdGlvbkxhYmVsIGxvYywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIHRhcmdldCkKLS0gICAgICBERUZJTkVE X09OKHg4NiwgeDY0LCBhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9P Tih4ODYsIHg2NCwgYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHBwYzY0KTsKLSAKLSAgcHVibGlj OgotICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0gICAvLyBbU01ET0NdIEpJVC10by1DKysgRnVuY3Rpb24gQ2FsbHMg KGNhbGxXaXRoQUJJKQotICAgLy8KLSAgIC8vIGNhbGxXaXRoQUJJIGlzIHVzZWQgdG8gbWFrZSBh IGNhbGwgdXNpbmcgdGhlIHN0YW5kYXJkIEMvQysrIHN5c3RlbSBBQkkuCi0gICAvLwotICAgLy8g Y2FsbFdpdGhBQkkgaXMgYSBsb3cgbGV2ZWwgaW50ZXJmYWNlIGZvciBtYWtpbmcgY2FsbHMsIGFz IHN1Y2ggZXZlcnkgY2FsbAotQEAgLTk4MywyMCArOTg5LDIxIEBAIGNsYXNzIE1hY3JvQXNzZW1i bGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyU3BlY2lmaWMgewotICAgaW5saW5lIHZvaWQgeG9y MzIoSW1tMzIgaW1tLCBSZWdpc3RlciBkZXN0KSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUg dm9pZCB4b3IzMihJbW0zMiBpbW0sIGNvbnN0IEFkZHJlc3MmIGRlc3QpIFBFUl9TSEFSRURfQVJD SDsKLSAgIGlubGluZSB2b2lkIHhvcjMyKGNvbnN0IEFkZHJlc3MmIHNyYywgUmVnaXN0ZXIgZGVz dCkgUEVSX1NIQVJFRF9BUkNIOwotIAotICAgaW5saW5lIHZvaWQgeG9yUHRyKFJlZ2lzdGVyIHNy YywgUmVnaXN0ZXIgZGVzdCkgUEVSX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCB4b3JQdHIoSW1tMzIg aW1tLCBSZWdpc3RlciBkZXN0KSBQRVJfQVJDSDsKLSAKLSAgIGlubGluZSB2b2lkIGFuZDY0KGNv bnN0IE9wZXJhbmQmIHNyYywgUmVnaXN0ZXI2NCBkZXN0KQotLSAgICAgIERFRklORURfT04oeDY0 LCBtaXBzNjQpOwotLSAgaW5saW5lIHZvaWQgb3I2NChjb25zdCBPcGVyYW5kJiBzcmMsIFJlZ2lz dGVyNjQgZGVzdCkgREVGSU5FRF9PTih4NjQsIG1pcHM2NCk7Ci0rICAgICAgREVGSU5FRF9PTih4 NjQsIG1pcHM2NCwgcHBjNjQpOwotKyAgaW5saW5lIHZvaWQgb3I2NChjb25zdCBPcGVyYW5kJiBz cmMsIFJlZ2lzdGVyNjQgZGVzdCkKLSsgICAgICBERUZJTkVEX09OKHg2NCwgbWlwczY0LCBwcGM2 NCk7Ci0gICBpbmxpbmUgdm9pZCB4b3I2NChjb25zdCBPcGVyYW5kJiBzcmMsIFJlZ2lzdGVyNjQg ZGVzdCkKLS0gICAgICBERUZJTkVEX09OKHg2NCwgbWlwczY0KTsKLSsgICAgICBERUZJTkVEX09O KHg2NCwgbWlwczY0LCBwcGM2NCk7Ci0gCi0gICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgIC8vIFN3YXAgaW5zdHJ1 Y3Rpb25zCi0gCi0gICAvLyBTd2FwIHRoZSB0d28gbG93ZXIgYnl0ZXMgYW5kIHNpZ24gZXh0ZW5k IHRoZSByZXN1bHQgdG8gMzItYml0LgotICAgaW5saW5lIHZvaWQgYnl0ZVN3YXAxNlNpZ25FeHRl bmQoUmVnaXN0ZXIgcmVnKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gCi0gICAvLyBTd2FwIHRoZSB0d28g bG93ZXIgYnl0ZXMgYW5kIHplcm8gZXh0ZW5kIHRoZSByZXN1bHQgdG8gMzItYml0LgotQEAgLTEw MjAsMjcgKzEwMjcsMjcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3Nl bWJsZXJTcGVjaWZpYyB7Ci0gICBpbmxpbmUgdm9pZCBhZGRQdHIoUmVnaXN0ZXIgc3JjLCBSZWdp c3RlciBkZXN0KSBQRVJfQVJDSDsKLSAgIGlubGluZSB2b2lkIGFkZFB0cihSZWdpc3RlciBzcmMx LCBSZWdpc3RlciBzcmMyLCBSZWdpc3RlciBkZXN0KQotICAgICAgIERFRklORURfT04oYXJtNjQp OwotICAgaW5saW5lIHZvaWQgYWRkUHRyKEltbTMyIGltbSwgUmVnaXN0ZXIgZGVzdCkgUEVSX0FS Q0g7Ci0gICBpbmxpbmUgdm9pZCBhZGRQdHIoSW1tMzIgaW1tLCBSZWdpc3RlciBzcmMsIFJlZ2lz dGVyIGRlc3QpIERFRklORURfT04oYXJtNjQpOwotICAgaW5saW5lIHZvaWQgYWRkUHRyKEltbVdv cmQgaW1tLCBSZWdpc3RlciBkZXN0KSBQRVJfQVJDSDsKLSAgIGlubGluZSB2b2lkIGFkZFB0cihJ bW1QdHIgaW1tLCBSZWdpc3RlciBkZXN0KTsKLSAgIGlubGluZSB2b2lkIGFkZFB0cihJbW0zMiBp bW0sIGNvbnN0IEFkZHJlc3MmIGRlc3QpCi0tICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwg YXJtLCBhcm02NCwgeDg2LCB4NjQpOwotKyAgICAgIERFRklORURfT04obWlwc19zaGFyZWQsIGFy bSwgYXJtNjQsIHg4NiwgeDY0LCBwcGM2NCk7Ci0gICBpbmxpbmUgdm9pZCBhZGRQdHIoSW1tMzIg aW1tLCBjb25zdCBBYnNvbHV0ZUFkZHJlc3MmIGRlc3QpCi0gICAgICAgREVGSU5FRF9PTih4ODYs IHg2NCk7Ci0gICBpbmxpbmUgdm9pZCBhZGRQdHIoY29uc3QgQWRkcmVzcyYgc3JjLCBSZWdpc3Rl ciBkZXN0KQotLSAgICAgIERFRklORURfT04obWlwc19zaGFyZWQsIGFybSwgYXJtNjQsIHg4Niwg eDY0KTsKLSsgICAgICBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBhcm0sIGFybTY0LCB4ODYsIHg2 NCwgcHBjNjQpOwotIAotICAgaW5saW5lIHZvaWQgYWRkNjQoUmVnaXN0ZXI2NCBzcmMsIFJlZ2lz dGVyNjQgZGVzdCkgUEVSX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBhZGQ2NChJbW0zMiBpbW0sIFJl Z2lzdGVyNjQgZGVzdCkgUEVSX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBhZGQ2NChJbW02NCBpbW0s IFJlZ2lzdGVyNjQgZGVzdCkgUEVSX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBhZGQ2NChjb25zdCBP cGVyYW5kJiBzcmMsIFJlZ2lzdGVyNjQgZGVzdCkKLS0gICAgICBERUZJTkVEX09OKHg2NCwgbWlw czY0KTsKLSsgICAgICBERUZJTkVEX09OKHg2NCwgbWlwczY0LCBwcGM2NCk7Ci0gCi0gICBpbmxp bmUgdm9pZCBhZGRGbG9hdDMyKEZsb2F0UmVnaXN0ZXIgc3JjLCBGbG9hdFJlZ2lzdGVyIGRlc3Qp IFBFUl9TSEFSRURfQVJDSDsKLSAKLSAgIC8vIENvbXB1dGUgZGVzdD1TUC1pbW0gd2hlcmUgZGVz dCBpcyBhIHBvaW50ZXIgcmVnaXN0ZXJzIGFuZCBub3QgU1AuICBUaGUKLSAgIC8vIG9mZnNldCBy ZXR1cm5lZCBmcm9tIHN1YjMyRnJvbVN0YWNrUHRyV2l0aFBhdGNoKCkgbXVzdCBiZSBwYXNzZWQg dG8KLSAgIC8vIHBhdGNoU3ViMzJGcm9tU3RhY2tQdHIoKS4KLSAgIGlubGluZSBDb2RlT2Zmc2V0 IHN1YjMyRnJvbVN0YWNrUHRyV2l0aFBhdGNoKFJlZ2lzdGVyIGRlc3QpIFBFUl9BUkNIOwotICAg aW5saW5lIHZvaWQgcGF0Y2hTdWIzMkZyb21TdGFja1B0cihDb2RlT2Zmc2V0IG9mZnNldCwgSW1t MzIgaW1tKSBQRVJfQVJDSDsKLUBAIC0xMDQ5LDU4ICsxMDU2LDU4IEBAIGNsYXNzIE1hY3JvQXNz ZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyU3BlY2lmaWMgewotICAgaW5saW5lIHZvaWQg YWRkQ29uc3RhbnREb3VibGUoZG91YmxlIGQsIEZsb2F0UmVnaXN0ZXIgZGVzdCkgREVGSU5FRF9P Tih4ODYpOwotIAotICAgaW5saW5lIHZvaWQgc3ViMzIoY29uc3QgQWRkcmVzcyYgc3JjLCBSZWdp c3RlciBkZXN0KSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBzdWIzMihSZWdpc3Rl ciBzcmMsIFJlZ2lzdGVyIGRlc3QpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlubGluZSB2b2lkIHN1 YjMyKEltbTMyIGltbSwgUmVnaXN0ZXIgZGVzdCkgUEVSX1NIQVJFRF9BUkNIOwotIAotICAgaW5s aW5lIHZvaWQgc3ViUHRyKFJlZ2lzdGVyIHNyYywgUmVnaXN0ZXIgZGVzdCkgUEVSX0FSQ0g7Ci0g ICBpbmxpbmUgdm9pZCBzdWJQdHIoUmVnaXN0ZXIgc3JjLCBjb25zdCBBZGRyZXNzJiBkZXN0KQot LSAgICAgIERFRklORURfT04obWlwc19zaGFyZWQsIGFybSwgYXJtNjQsIHg4NiwgeDY0KTsKLSsg ICAgICBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBhcm0sIGFybTY0LCB4ODYsIHg2NCwgcHBjNjQp OwotICAgaW5saW5lIHZvaWQgc3ViUHRyKEltbTMyIGltbSwgUmVnaXN0ZXIgZGVzdCkgUEVSX0FS Q0g7Ci0gICBpbmxpbmUgdm9pZCBzdWJQdHIoSW1tV29yZCBpbW0sIFJlZ2lzdGVyIGRlc3QpIERF RklORURfT04oeDY0KTsKLSAgIGlubGluZSB2b2lkIHN1YlB0cihjb25zdCBBZGRyZXNzJiBhZGRy LCBSZWdpc3RlciBkZXN0KQotLSAgICAgIERFRklORURfT04obWlwc19zaGFyZWQsIGFybSwgYXJt NjQsIHg4NiwgeDY0KTsKLSsgICAgICBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBhcm0sIGFybTY0 LCB4ODYsIHg2NCwgcHBjNjQpOwotIAotICAgaW5saW5lIHZvaWQgc3ViNjQoUmVnaXN0ZXI2NCBz cmMsIFJlZ2lzdGVyNjQgZGVzdCkgUEVSX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBzdWI2NChJbW02 NCBpbW0sIFJlZ2lzdGVyNjQgZGVzdCkgUEVSX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBzdWI2NChj b25zdCBPcGVyYW5kJiBzcmMsIFJlZ2lzdGVyNjQgZGVzdCkKLS0gICAgICBERUZJTkVEX09OKHg2 NCwgbWlwczY0KTsKLSsgICAgICBERUZJTkVEX09OKHg2NCwgbWlwczY0LCBwcGM2NCk7Ci0gCi0g ICBpbmxpbmUgdm9pZCBzdWJGbG9hdDMyKEZsb2F0UmVnaXN0ZXIgc3JjLCBGbG9hdFJlZ2lzdGVy IGRlc3QpIFBFUl9TSEFSRURfQVJDSDsKLSAKLSAgIGlubGluZSB2b2lkIHN1YkRvdWJsZShGbG9h dFJlZ2lzdGVyIHNyYywgRmxvYXRSZWdpc3RlciBkZXN0KSBQRVJfU0hBUkVEX0FSQ0g7Ci0gCi0g ICBpbmxpbmUgdm9pZCBtdWwzMihSZWdpc3RlciByaHMsIFJlZ2lzdGVyIHNyY0Rlc3QpIFBFUl9T SEFSRURfQVJDSDsKLSAKLSAgIGlubGluZSB2b2lkIG11bDMyKFJlZ2lzdGVyIHNyYzEsIFJlZ2lz dGVyIHNyYzIsIFJlZ2lzdGVyIGRlc3QsIExhYmVsKiBvbk92ZXIpCi0gICAgICAgREVGSU5FRF9P Tihhcm02NCk7Ci0gCi0gICBpbmxpbmUgdm9pZCBtdWxQdHIoUmVnaXN0ZXIgcmhzLCBSZWdpc3Rl ciBzcmNEZXN0KSBQRVJfQVJDSDsKLSAKLSAgIGlubGluZSB2b2lkIG11bDY0KGNvbnN0IE9wZXJh bmQmIHNyYywgY29uc3QgUmVnaXN0ZXI2NCYgZGVzdCkgREVGSU5FRF9PTih4NjQpOwotICAgaW5s aW5lIHZvaWQgbXVsNjQoY29uc3QgT3BlcmFuZCYgc3JjLCBjb25zdCBSZWdpc3RlcjY0JiBkZXN0 LAotLSAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXIgdGVtcCkgREVGSU5FRF9PTih4 NjQsIG1pcHM2NCk7Ci0rICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWdpc3RlciB0ZW1wKSBE RUZJTkVEX09OKHg2NCwgbWlwczY0LCBwcGM2NCk7Ci0gICBpbmxpbmUgdm9pZCBtdWw2NChJbW02 NCBpbW0sIGNvbnN0IFJlZ2lzdGVyNjQmIGRlc3QpIFBFUl9BUkNIOwotICAgaW5saW5lIHZvaWQg bXVsNjQoSW1tNjQgaW1tLCBjb25zdCBSZWdpc3RlcjY0JiBkZXN0LCBjb25zdCBSZWdpc3RlciB0 ZW1wKQotLSAgICAgIERFRklORURfT04oeDg2LCB4NjQsIGFybSwgbWlwczMyLCBtaXBzNjQpOwot KyAgICAgIERFRklORURfT04oeDg2LCB4NjQsIGFybSwgbWlwczMyLCBtaXBzNjQsIHBwYzY0KTsK LSAgIGlubGluZSB2b2lkIG11bDY0KGNvbnN0IFJlZ2lzdGVyNjQmIHNyYywgY29uc3QgUmVnaXN0 ZXI2NCYgZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZ2lzdGVyIHRlbXApIFBF Ul9BUkNIOwotICAgaW5saW5lIHZvaWQgbXVsNjQoY29uc3QgUmVnaXN0ZXI2NCYgc3JjMSwgY29u c3QgUmVnaXN0ZXI2NCYgc3JjMiwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZ2lzdGVy NjQmIGRlc3QpIERFRklORURfT04oYXJtNjQpOwotICAgaW5saW5lIHZvaWQgbXVsNjQoSW1tNjQg c3JjMSwgY29uc3QgUmVnaXN0ZXI2NCYgc3JjMiwgY29uc3QgUmVnaXN0ZXI2NCYgZGVzdCkKLSAg ICAgICBERUZJTkVEX09OKGFybTY0KTsKLSAKLSAgIGlubGluZSB2b2lkIG11bEJ5MyhSZWdpc3Rl ciBzcmMsIFJlZ2lzdGVyIGRlc3QpIFBFUl9BUkNIOwotIAotICAgaW5saW5lIHZvaWQgbXVsRmxv YXQzMihGbG9hdFJlZ2lzdGVyIHNyYywgRmxvYXRSZWdpc3RlciBkZXN0KSBQRVJfU0hBUkVEX0FS Q0g7Ci0gICBpbmxpbmUgdm9pZCBtdWxEb3VibGUoRmxvYXRSZWdpc3RlciBzcmMsIEZsb2F0UmVn aXN0ZXIgZGVzdCkgUEVSX1NIQVJFRF9BUkNIOwotIAotICAgaW5saW5lIHZvaWQgbXVsRG91Ymxl UHRyKEltbVB0ciBpbW0sIFJlZ2lzdGVyIHRlbXAsIEZsb2F0UmVnaXN0ZXIgZGVzdCkKLS0gICAg ICBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBhcm0sIGFybTY0LCB4ODYsIHg2NCk7Ci0rICAgICAg REVGSU5FRF9PTihtaXBzX3NoYXJlZCwgYXJtLCBhcm02NCwgeDg2LCB4NjQsIHBwYzY0KTsKLSAK LSAgIC8vIFBlcmZvcm0gYW4gaW50ZWdlciBkaXZpc2lvbiwgcmV0dXJuaW5nIHRoZSBpbnRlZ2Vy IHBhcnQgcm91bmRlZCB0b3dhcmQKLSAgIC8vIHplcm8uIHJocyBtdXN0IG5vdCBiZSB6ZXJvLCBh bmQgdGhlIGRpdmlzaW9uIG11c3Qgbm90IG92ZXJmbG93LgotICAgLy8KLSAgIC8vIE9uIHg4Nl9z aGFyZWQsIHNyY0Rlc3QgbXVzdCBiZSBlYXggYW5kIGVkeCB3aWxsIGJlIGNsb2JiZXJlZC4KLSAg IC8vIE9uIEFSTSwgdGhlIGNoaXAgbXVzdCBoYXZlIGhhcmR3YXJlIGRpdmlzaW9uIGluc3RydWN0 aW9ucy4KLSAgIGlubGluZSB2b2lkIHF1b3RpZW50MzIoUmVnaXN0ZXIgcmhzLCBSZWdpc3RlciBz cmNEZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzVW5zaWduZWQpIFBFUl9T SEFSRURfQVJDSDsKLUBAIC0xMTE3LDQxICsxMTI0LDQxIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVy IDogcHVibGljIE1hY3JvQXNzZW1ibGVyU3BlY2lmaWMgewotICAgLy8gemVyby4gcmhzIG11c3Qg bm90IGJlIHplcm8sIGFuZCB0aGUgZGl2aXNpb24gbXVzdCBub3Qgb3ZlcmZsb3cuCi0gICAvLwot ICAgLy8gVGhpcyB2YXJpYW50IHByZXNlcnZlcyByZWdpc3RlcnMsIGFuZCBkb2Vzbid0IHJlcXVp cmUgaGFyZHdhcmUgZGl2aXNpb24KLSAgIC8vIGluc3RydWN0aW9ucyBvbiBBUk0gKHdpbGwgY2Fs bCBvdXQgdG8gYSBydW50aW1lIHJvdXRpbmUpLgotICAgLy8KLSAgIC8vIHJocyBpcyBwcmVzZXJ2 ZWQsIHNyZERlc3QgaXMgY2xvYmJlcmVkLgotICAgdm9pZCBmbGV4aWJsZVJlbWFpbmRlcjMyKFJl Z2lzdGVyIHJocywgUmVnaXN0ZXIgc3JjRGVzdCwgYm9vbCBpc1Vuc2lnbmVkLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IExpdmVSZWdpc3RlclNldCYgdm9sYXRpbGVMaXZlUmVn cykKLS0gICAgICBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBhcm0sIGFybTY0LCB4ODZfc2hhcmVk KTsKLSsgICAgICBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBhcm0sIGFybTY0LCB4ODZfc2hhcmVk LCBwcGM2NCk7Ci0gCi0gICAvLyBQZXJmb3JtIGFuIGludGVnZXIgZGl2aXNpb24sIHJldHVybmlu ZyB0aGUgaW50ZWdlciBwYXJ0IHJvdW5kZWQgdG93YXJkCi0gICAvLyB6ZXJvLiByaHMgbXVzdCBu b3QgYmUgemVybywgYW5kIHRoZSBkaXZpc2lvbiBtdXN0IG5vdCBvdmVyZmxvdy4KLSAgIC8vCi0g ICAvLyBUaGlzIHZhcmlhbnQgcHJlc2VydmVzIHJlZ2lzdGVycywgYW5kIGRvZXNuJ3QgcmVxdWly ZSBoYXJkd2FyZSBkaXZpc2lvbgotICAgLy8gaW5zdHJ1Y3Rpb25zIG9uIEFSTSAod2lsbCBjYWxs IG91dCB0byBhIHJ1bnRpbWUgcm91dGluZSkuCi0gICAvLwotICAgLy8gcmhzIGlzIHByZXNlcnZl ZCwgc3JkRGVzdCBpcyBjbG9iYmVyZWQuCi0gICB2b2lkIGZsZXhpYmxlUXVvdGllbnQzMihSZWdp c3RlciByaHMsIFJlZ2lzdGVyIHNyY0Rlc3QsIGJvb2wgaXNVbnNpZ25lZCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IExpdmVSZWdpc3RlclNldCYgdm9sYXRpbGVMaXZlUmVncykK LS0gICAgICBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBhcm0sIGFybTY0LCB4ODZfc2hhcmVkKTsK LSsgICAgICBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBhcm0sIGFybTY0LCB4ODZfc2hhcmVkLCBw cGM2NCk7Ci0gCi0gICAvLyBQZXJmb3JtIGFuIGludGVnZXIgZGl2aXNpb24sIHJldHVybmluZyB0 aGUgaW50ZWdlciBwYXJ0IHJvdW5kZWQgdG93YXJkCi0gICAvLyB6ZXJvLiByaHMgbXVzdCBub3Qg YmUgemVybywgYW5kIHRoZSBkaXZpc2lvbiBtdXN0IG5vdCBvdmVyZmxvdy4gVGhlCi0gICAvLyBy ZW1haW5kZXIgaXMgc3RvcmVkIGludG8gdGhlIHRoaXJkIGFyZ3VtZW50IHJlZ2lzdGVyIGhlcmUu Ci0gICAvLwotICAgLy8gVGhpcyB2YXJpYW50IHByZXNlcnZlcyByZWdpc3RlcnMsIGFuZCBkb2Vz bid0IHJlcXVpcmUgaGFyZHdhcmUgZGl2aXNpb24KLSAgIC8vIGluc3RydWN0aW9ucyBvbiBBUk0g KHdpbGwgY2FsbCBvdXQgdG8gYSBydW50aW1lIHJvdXRpbmUpLgotICAgLy8KLSAgIC8vIHJocyBp cyBwcmVzZXJ2ZWQsIHNyZERlc3QgYW5kIHJlbU91dHB1dCBhcmUgY2xvYmJlcmVkLgotICAgdm9p ZCBmbGV4aWJsZURpdk1vZDMyKFJlZ2lzdGVyIHJocywgUmVnaXN0ZXIgc3JjRGVzdCwgUmVnaXN0 ZXIgcmVtT3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNVbnNpZ25lZCwK LSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMaXZlUmVnaXN0ZXJTZXQmIHZvbGF0aWxl TGl2ZVJlZ3MpCi0tICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgYXJtLCBhcm02NCwgeDg2 X3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgYXJtLCBhcm02NCwgeDg2 X3NoYXJlZCwgcHBjNjQpOwotIAotICAgaW5saW5lIHZvaWQgZGl2RmxvYXQzMihGbG9hdFJlZ2lz dGVyIHNyYywgRmxvYXRSZWdpc3RlciBkZXN0KSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUg dm9pZCBkaXZEb3VibGUoRmxvYXRSZWdpc3RlciBzcmMsIEZsb2F0UmVnaXN0ZXIgZGVzdCkgUEVS X1NIQVJFRF9BUkNIOwotIAotICAgaW5saW5lIHZvaWQgaW5jNjQoQWJzb2x1dGVBZGRyZXNzIGRl c3QpIFBFUl9BUkNIOwotIAotICAgaW5saW5lIHZvaWQgbmVnMzIoUmVnaXN0ZXIgcmVnKSBQRVJf U0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBuZWc2NChSZWdpc3RlcjY0IHJlZykgUEVSX0FS Q0g7Ci1AQCAtMTM0MiwxNyArMTM0OSwxNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1Ymxp YyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsKLSAgIC8vIHRlbXAgbWF5IGJlIGludmFsaWQgb25s eSBpZiB0aGUgY2hpcCBoYXMgdGhlIFBPUENOVCBpbnN0cnVjdGlvbi4KLSAgIGlubGluZSB2b2lk IHBvcGNudDY0KFJlZ2lzdGVyNjQgc3JjLCBSZWdpc3RlcjY0IGRlc3QsIFJlZ2lzdGVyIHRlbXAp IFBFUl9BUkNIOwotIAotICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAvLyBDb25kaXRpb24gZnVuY3Rpb25zCi0g Ci0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgaW5saW5lIHZvaWQg Y21wMzJTZXQoQ29uZGl0aW9uIGNvbmQsIFQxIGxocywgVDIgcmhzLCBSZWdpc3RlciBkZXN0KQot LSAgICAgIERFRklORURfT04oeDg2X3NoYXJlZCwgYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQp OwotKyAgICAgIERFRklORURfT04oeDg2X3NoYXJlZCwgYXJtLCBhcm02NCwgbWlwczMyLCBtaXBz NjQsIHBwYzY0KTsKLSAKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0g ICBpbmxpbmUgdm9pZCBjbXBQdHJTZXQoQ29uZGl0aW9uIGNvbmQsIFQxIGxocywgVDIgcmhzLCBS ZWdpc3RlciBkZXN0KSBQRVJfQVJDSDsKLSAKLSAgIC8vID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgLy8gQnJhbmNoIGZ1 bmN0aW9ucwotIAotICAgdGVtcGxhdGUgPGNsYXNzIEw+Ci1AQCAtMTM2NywzNCArMTM3NCwzNCBA QCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsK LSAKLSAgIGlubGluZSB2b2lkIGJyYW5jaDMyKENvbmRpdGlvbiBjb25kLCBjb25zdCBBZGRyZXNz JiBsaHMsIFJlZ2lzdGVyIHJocywKLSAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJl bCkgUEVSX1NIQVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQgYnJhbmNoMzIoQ29uZGl0aW9uIGNv bmQsIGNvbnN0IEFkZHJlc3MmIGxocywgSW1tMzIgcmhzLAotICAgICAgICAgICAgICAgICAgICAg ICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gCi0gICBpbmxpbmUgdm9pZCBicmFu Y2gzMihDb25kaXRpb24gY29uZCwgY29uc3QgQWJzb2x1dGVBZGRyZXNzJiBsaHMsIFJlZ2lzdGVy IHJocywKLSAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkKLS0gICAgICBERUZJ TkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCk7Ci0rICAgICAgREVGSU5F RF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQsIHBwYzY0KTsKLSAgIGlubGlu ZSB2b2lkIGJyYW5jaDMyKENvbmRpdGlvbiBjb25kLCBjb25zdCBBYnNvbHV0ZUFkZHJlc3MmIGxo cywgSW1tMzIgcmhzLAotICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKQotLSAg ICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0KTsKLSsgICAg ICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCwgcHBjNjQpOwot IAotICAgaW5saW5lIHZvaWQgYnJhbmNoMzIoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEJhc2VJbmRl eCYgbGhzLCBSZWdpc3RlciByaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFi ZWwpIERFRklORURfT04oYXJtLCB4ODZfc2hhcmVkKTsKLSAgIGlubGluZSB2b2lkIGJyYW5jaDMy KENvbmRpdGlvbiBjb25kLCBjb25zdCBCYXNlSW5kZXgmIGxocywgSW1tMzIgcmhzLAotICAgICAg ICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gCi0gICBp bmxpbmUgdm9pZCBicmFuY2gzMihDb25kaXRpb24gY29uZCwgY29uc3QgT3BlcmFuZCYgbGhzLCBS ZWdpc3RlciByaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpIERFRklO RURfT04oeDg2X3NoYXJlZCk7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2gzMihDb25kaXRpb24gY29u ZCwgY29uc3QgT3BlcmFuZCYgbGhzLCBJbW0zMiByaHMsCi0gICAgICAgICAgICAgICAgICAgICAg ICBMYWJlbCogbGFiZWwpIERFRklORURfT04oeDg2X3NoYXJlZCk7Ci0gCi0gICBpbmxpbmUgdm9p ZCBicmFuY2gzMihDb25kaXRpb24gY29uZCwgd2FzbTo6U3ltYm9saWNBZGRyZXNzIGxocywgSW1t MzIgcmhzLAotICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKQotLSAgICAgIERF RklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0KTsKLSsgICAgICBERUZJ TkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCwgcHBjNjQpOwotIAotICAg Ly8gVGhlIHN1cHBvcnRlZCBjb25kaXRpb24gYXJlIEVxdWFsLCBOb3RFcXVhbCwgTGVzc1RoYW4o b3JFcXVhbCksCi0gICAvLyBHcmVhdGVyVGhhbihvckVxdWFsKSwgQmVsb3cob3JFcXVhbCkgYW5k IEFib3ZlKG9yRXF1YWwpLiBXaGVuIGEgZmFpbCBsYWJlbAotICAgLy8gaXMgbm90IGRlZmluZWQg aXQgd2lsbCBmYWxsIHRocm91Z2ggdG8gbmV4dCBpbnN0cnVjdGlvbiwgZWxzZSBqdW1wIHRvIHRo ZQotICAgLy8gZmFpbCBsYWJlbC4KLSAgIGlubGluZSB2b2lkIGJyYW5jaDY0KENvbmRpdGlvbiBj b25kLCBSZWdpc3RlcjY0IGxocywgSW1tNjQgdmFsLAotICAgICAgICAgICAgICAgICAgICAgICAg TGFiZWwqIHN1Y2Nlc3MsIExhYmVsKiBmYWlsID0gbnVsbHB0cikgUEVSX0FSQ0g7Ci0gICBpbmxp bmUgdm9pZCBicmFuY2g2NChDb25kaXRpb24gY29uZCwgUmVnaXN0ZXI2NCBsaHMsIFJlZ2lzdGVy NjQgcmhzLAotQEAgLTE0MzMsMzIgKzE0NDAsMzIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBw dWJsaWMgTWFjcm9Bc3NlbWJsZXJTcGVjaWZpYyB7Ci0gCi0gICBpbmxpbmUgdm9pZCBicmFuY2hQ dHIoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEJhc2VJbmRleCYgbGhzLCBJbW1Xb3JkIHJocywKLSAg ICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAg IGlubGluZSB2b2lkIGJyYW5jaFB0cihDb25kaXRpb24gY29uZCwgY29uc3QgQmFzZUluZGV4JiBs aHMsIFJlZ2lzdGVyIHJocywKLSAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwp IFBFUl9TSEFSRURfQVJDSDsKLSAKLSAgIGlubGluZSB2b2lkIGJyYW5jaFB0cihDb25kaXRpb24g Y29uZCwgY29uc3QgQWJzb2x1dGVBZGRyZXNzJiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgUmVnaXN0ZXIgcmhzLCBMYWJlbCogbGFiZWwpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFy bTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02 NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0LCBwcGM2NCk7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hQ dHIoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEFic29sdXRlQWRkcmVzcyYgbGhzLCBJbW1Xb3JkIHJo cywKLSAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpCi0tICAgICAgREVGSU5F RF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQpOwotKyAgICAgIERFRklORURf T04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0LCBwcGM2NCk7Ci0gCi0gICBpbmxp bmUgdm9pZCBicmFuY2hQdHIoQ29uZGl0aW9uIGNvbmQsIHdhc206OlN5bWJvbGljQWRkcmVzcyBs aHMsIFJlZ2lzdGVyIHJocywKLSAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwp Ci0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQpOwot KyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0LCBwcGM2 NCk7Ci0gCi0gICAvLyBHaXZlbiBhIHBvaW50ZXIgdG8gYSBHQyBDZWxsLCByZXRyaWV2ZSB0aGUg U3RvcmVCdWZmZXIgcG9pbnRlciBmcm9tIGl0cwotICAgLy8gY2h1bmsgaGVhZGVyLCBvciBudWxs cHRyIGlmIGl0IGlzIGluIHRoZSB0ZW51cmVkIGhlYXAuCi0gICB2b2lkIGxvYWRTdG9yZUJ1ZmZl cihSZWdpc3RlciBwdHIsIFJlZ2lzdGVyIGJ1ZmZlcikgUEVSX0FSQ0g7Ci0gCi0gICB2b2lkIGJy YW5jaFB0ckluTnVyc2VyeUNodW5rKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlciBwdHIsIFJlZ2lz dGVyIHRlbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkK LS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCk7Ci0r ICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQsIHBwYzY0 KTsKLSAgIHZvaWQgYnJhbmNoUHRySW5OdXJzZXJ5Q2h1bmsoQ29uZGl0aW9uIGNvbmQsIGNvbnN0 IEFkZHJlc3MmIGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lz dGVyIHRlbXAsIExhYmVsKiBsYWJlbCkgREVGSU5FRF9PTih4ODYpOwotICAgdm9pZCBicmFuY2hW YWx1ZUlzTnVyc2VyeUNlbGwoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEFkZHJlc3MmIGFkZHJlc3Ms Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciB0ZW1wLCBMYWJlbCog bGFiZWwpIFBFUl9BUkNIOwotICAgdm9pZCBicmFuY2hWYWx1ZUlzTnVyc2VyeUNlbGwoQ29uZGl0 aW9uIGNvbmQsIFZhbHVlT3BlcmFuZCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFJlZ2lzdGVyIHRlbXAsIExhYmVsKiBsYWJlbCkgUEVSX0FSQ0g7Ci0gCi0gICAvLyBU aGlzIGZ1bmN0aW9uIGNvbXBhcmVzIGEgVmFsdWUgKGxocykgd2hpY2ggaXMgaGF2aW5nIGEgcHJp dmF0ZSBwb2ludGVyCi1AQCAtMTQ3MCwzNiArMTQ3NywzNiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxl ciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIEZsb2F0UmVnaXN0ZXIgcmhzLCBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsK LSAKLSAgIC8vIFRydW5jYXRlIGEgZG91YmxlL2Zsb2F0MzIgdG8gaW50MzIgYW5kIHdoZW4gaXQg ZG9lc24ndCBmaXQgYW4gaW50MzIgaXQgd2lsbAotICAgLy8ganVtcCB0byB0aGUgZmFpbHVyZSBs YWJlbC4gVGhpcyBwYXJ0aWN1bGFyIHZhcmlhbnQgaXMgYWxsb3dlZCB0byByZXR1cm4gdGhlCi0g ICAvLyB2YWx1ZSBtb2R1bGUgMioqMzIsIHdoaWNoIGlzbid0IGltcGxlbWVudGVkIG9uIGFsbCBh cmNoaXRlY3R1cmVzLiBFLmcuIHRoZQotICAgLy8geDY0IHZhcmlhbnRzIHdpbGwgZG8gdGhpcyBv bmx5IGluIHRoZSBpbnQ2NF90IHJhbmdlLgotICAgaW5saW5lIHZvaWQgYnJhbmNoVHJ1bmNhdGVG bG9hdDMyTWF5YmVNb2RVaW50MzIoRmxvYXRSZWdpc3RlciBzcmMsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBkZXN0LCBMYWJlbCog ZmFpbCkKLS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2 NCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQs IHBwYzY0KTsKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRydW5jYXRlRG91YmxlTWF5YmVNb2RVaW50 MzIoRmxvYXRSZWdpc3RlciBzcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJlZ2lzdGVyIGRlc3QsIExhYmVsKiBmYWlsKQotLSAgICAgIERFRklO RURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0KTsKLSsgICAgICBERUZJTkVE X09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCwgcHBjNjQpOwotIAotICAgLy8g VHJ1bmNhdGUgYSBkb3VibGUvZmxvYXQzMiB0byBpbnRwdHIgYW5kIHdoZW4gaXQgZG9lc24ndCBm aXQganVtcCB0byB0aGUKLSAgIC8vIGZhaWx1cmUgbGFiZWwuCi0gICBpbmxpbmUgdm9pZCBicmFu Y2hUcnVuY2F0ZUZsb2F0MzJUb1B0cihGbG9hdFJlZ2lzdGVyIHNyYywgUmVnaXN0ZXIgZGVzdCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBmYWlsKSBE RUZJTkVEX09OKHg4NiwgeDY0KTsKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRydW5jYXRlRG91Ymxl VG9QdHIoRmxvYXRSZWdpc3RlciBzcmMsIFJlZ2lzdGVyIGRlc3QsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBmYWlsKSBERUZJTkVEX09OKHg4NiwgeDY0 KTsKLSAKLSAgIC8vIFRydW5jYXRlIGEgZG91YmxlL2Zsb2F0MzIgdG8gaW50MzIgYW5kIHdoZW4g aXQgZG9lc24ndCBmaXQganVtcCB0byB0aGUKLSAgIC8vIGZhaWx1cmUgbGFiZWwuCi0gICBpbmxp bmUgdm9pZCBicmFuY2hUcnVuY2F0ZUZsb2F0MzJUb0ludDMyKEZsb2F0UmVnaXN0ZXIgc3JjLCBS ZWdpc3RlciBkZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMYWJlbCogZmFpbCkKLS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVk LCB4ODYsIHg2NCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwg eDg2LCB4NjQsIHBwYzY0KTsKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRydW5jYXRlRG91YmxlVG9J bnQzMihGbG9hdFJlZ2lzdGVyIHNyYywgUmVnaXN0ZXIgZGVzdCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogZmFpbCkKLS0gICAgICBERUZJTkVEX09O KGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCk7Ci0rICAgICAgREVGSU5FRF9PTihh cm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQsIHBwYzY0KTsKLSAKLSAgIGlubGluZSB2 b2lkIGJyYW5jaERvdWJsZShEb3VibGVDb25kaXRpb24gY29uZCwgRmxvYXRSZWdpc3RlciBsaHMs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRSZWdpc3RlciByaHMsIExhYmVsKiBs YWJlbCkgUEVSX1NIQVJFRF9BUkNIOwotIAotICAgaW5saW5lIHZvaWQgYnJhbmNoRG91YmxlTm90 SW5JbnQ2NFJhbmdlKEFkZHJlc3Mgc3JjLCBSZWdpc3RlciB0ZW1wLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBmYWlsKTsKLSAgIGlubGluZSB2b2lk IGJyYW5jaERvdWJsZU5vdEluVUludDY0UmFuZ2UoQWRkcmVzcyBzcmMsIFJlZ2lzdGVyIHRlbXAs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBmYWls KTsKLUBAIC0xNTQzLDE3ICsxNTUwLDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGlj IE1hY3JvQXNzZW1ibGVyU3BlY2lmaWMgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwg bGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIHRlbXBsYXRlIDxjbGFzcyBMPgotICAgaW5saW5l IHZvaWQgYnJhbmNoVGVzdDMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlciBsaHMsIEltbTMyIHJo cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7 Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0MzIoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEFkZHJl c3MmIGxocywgSW1tMzIgcmhoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBs YWJlbCkgUEVSX1NIQVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdDMyKENvbmRp dGlvbiBjb25kLCBjb25zdCBBYnNvbHV0ZUFkZHJlc3MmIGxocywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJbW0zMiByaHMsIExhYmVsKiBsYWJlbCkKLS0gICAgICBERUZJTkVEX09OKGFy bSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0s IGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQsIHBwYzY0KTsKLSAKLSAgIHRlbXBsYXRlIDxj bGFzcyBMPgotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdFB0cihDb25kaXRpb24gY29uZCwgUmVn aXN0ZXIgbGhzLCBSZWdpc3RlciByaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwg bGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3RQdHIoQ29u ZGl0aW9uIGNvbmQsIFJlZ2lzdGVyIGxocywgSW1tMzIgcmhzLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlubGluZSB2b2lk IGJyYW5jaFRlc3RQdHIoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEFkZHJlc3MmIGxocywgSW1tMzIg cmhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpIFBFUl9TSEFS RURfQVJDSDsKLUBAIC0xNjg5LDE3ICsxNjk2LDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDog cHVibGljIE1hY3JvQXNzZW1ibGVyU3BlY2lmaWMgewotIAotICAgLy8gUGVyZm9ybSBhIHR5cGUt dGVzdCBvbiBhIHRhZyBvZiBhIFZhbHVlICgzMmJpdHMgYm94aW5nKSwgb3IgdGhlIHRhZ2dlZAot ICAgLy8gdmFsdWUgKDY0Yml0cyBib3hpbmcpLgotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdFVu ZGVmaW5lZChDb25kaXRpb24gY29uZCwgUmVnaXN0ZXIgdGFnLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlubGlu ZSB2b2lkIGJyYW5jaFRlc3RJbnQzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXIgdGFnLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkgUEVSX1NIQVJFRF9BUkNI OwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdERvdWJsZShDb25kaXRpb24gY29uZCwgUmVnaXN0 ZXIgdGFnLCBMYWJlbCogbGFiZWwpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBz MzIsIG1pcHM2NCwgeDg2X3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBt aXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCwgcHBjNjQpOwotICAgaW5saW5lIHZvaWQgYnJhbmNo VGVzdE51bWJlcihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXIgdGFnLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlubGlu ZSB2b2lkIGJyYW5jaFRlc3RCb29sZWFuKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlciB0YWcsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURf QVJDSDsKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3RTdHJpbmcoQ29uZGl0aW9uIGNvbmQsIFJl Z2lzdGVyIHRhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVs KSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0U3ltYm9sKENvbmRp dGlvbiBjb25kLCBSZWdpc3RlciB0YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExhYmVsKiBsYWJlbCkgUEVSX1NIQVJFRF9BUkNIOwotQEAgLTE3MjEsMTA2ICsxNzI4LDEwNiBA QCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsK LSAgIC8vIEJhc2VJbmRleCBhbmQgVmFsdWVPcGVyYW5kIHZhcmlhbnRzIGNsb2JiZXIgdGhlIFNj cmF0Y2hSZWcgb24geDY0LgotICAgLy8gQWxsIFZhcmlhbnRzIGNsb2JiZXIgdGhlIFNjcmF0Y2hS ZWcgb24gYXJtNjQuCi0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0VW5kZWZpbmVkKENvbmRpdGlv biBjb25kLCBjb25zdCBBZGRyZXNzJiBhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlubGluZSB2b2lk IGJyYW5jaFRlc3RVbmRlZmluZWQoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEJhc2VJbmRleCYgYWRk cmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQ RVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0VW5kZWZpbmVkKENvbmRp dGlvbiBjb25kLCBjb25zdCBWYWx1ZU9wZXJhbmQmIHZhbHVlLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFy bTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0s IGFybTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCwgcHBjNjQpOwotIAotICAgaW5saW5l IHZvaWQgYnJhbmNoVGVzdEludDMyKENvbmRpdGlvbiBjb25kLCBjb25zdCBBZGRyZXNzJiBhZGRy ZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkgUEVSX1NI QVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdEludDMyKENvbmRpdGlvbiBjb25k LCBjb25zdCBCYXNlSW5kZXgmIGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hU ZXN0SW50MzIoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IFZhbHVlT3BlcmFuZCYgdmFsdWUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKQotLSAgICAgIERFRklORURf T04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQpOwotKyAgICAgIERFRklO RURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAK LSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3REb3VibGUoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEFk ZHJlc3MmIGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBs YWJlbCkgUEVSX1NIQVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdERvdWJsZShD b25kaXRpb24gY29uZCwgY29uc3QgQmFzZUluZGV4JiBhZGRyZXNzLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlubGlu ZSB2b2lkIGJyYW5jaFRlc3REb3VibGUoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IFZhbHVlT3BlcmFu ZCYgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkK LS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVk KTsKLSsgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hh cmVkLCBwcGM2NCk7Ci0gCi0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0TnVtYmVyKENvbmRpdGlv biBjb25kLCBjb25zdCBWYWx1ZU9wZXJhbmQmIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMYWJlbCogbGFiZWwpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBt aXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0 LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCwgcHBjNjQpOwotIAotICAgaW5saW5lIHZvaWQg YnJhbmNoVGVzdEJvb2xlYW4oQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEFkZHJlc3MmIGFkZHJlc3Ms Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpIFBFUl9TSEFS RURfQVJDSDsKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3RCb29sZWFuKENvbmRpdGlvbiBjb25k LCBjb25zdCBCYXNlSW5kZXgmIGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlubGluZSB2b2lkIGJyYW5j aFRlc3RCb29sZWFuKENvbmRpdGlvbiBjb25kLCBjb25zdCBWYWx1ZU9wZXJhbmQmIHZhbHVlLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKQotLSAgICAgIERF RklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQpOwotKyAgICAg IERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQsIHBwYzY0 KTsKLSAKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3RTdHJpbmcoQ29uZGl0aW9uIGNvbmQsIGNv bnN0IEFkZHJlc3MmIGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExh YmVsKiBsYWJlbCkgUEVSX1NIQVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdFN0 cmluZyhDb25kaXRpb24gY29uZCwgY29uc3QgQmFzZUluZGV4JiBhZGRyZXNzLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAg IGlubGluZSB2b2lkIGJyYW5jaFRlc3RTdHJpbmcoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IFZhbHVl T3BlcmFuZCYgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBs YWJlbCkKLS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZf c2hhcmVkKTsKLSsgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4 ODZfc2hhcmVkLCBwcGM2NCk7Ci0gCi0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0U3ltYm9sKENv bmRpdGlvbiBjb25kLCBjb25zdCBBZGRyZXNzJiBhZGRyZXNzLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlubGluZSB2 b2lkIGJyYW5jaFRlc3RTeW1ib2woQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEJhc2VJbmRleCYgYWRk cmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJf U0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0U3ltYm9sKENvbmRpdGlvbiBj b25kLCBjb25zdCBWYWx1ZU9wZXJhbmQmIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMYWJlbCogbGFiZWwpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBz MzIsIG1pcHM2NCwgeDg2X3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBt aXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCwgcHBjNjQpOwotIAotICAgaW5saW5lIHZvaWQgYnJh bmNoVGVzdEJpZ0ludChDb25kaXRpb24gY29uZCwgY29uc3QgQWRkcmVzcyYgYWRkcmVzcywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FS Q0g7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0QmlnSW50KENvbmRpdGlvbiBjb25kLCBjb25z dCBCYXNlSW5kZXgmIGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExh YmVsKiBsYWJlbCkgUEVSX1NIQVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdEJp Z0ludChDb25kaXRpb24gY29uZCwgY29uc3QgVmFsdWVPcGVyYW5kJiB2YWx1ZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKQotLSAgICAgIERFRklORURfT04o YXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQpOwotKyAgICAgIERFRklORURf T04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAKLSAg IGlubGluZSB2b2lkIGJyYW5jaFRlc3ROdWxsKENvbmRpdGlvbiBjb25kLCBjb25zdCBBZGRyZXNz JiBhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQ RVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0TnVsbChDb25kaXRpb24g Y29uZCwgY29uc3QgQmFzZUluZGV4JiBhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBicmFu Y2hUZXN0TnVsbChDb25kaXRpb24gY29uZCwgY29uc3QgVmFsdWVPcGVyYW5kJiB2YWx1ZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkKLS0gICAgICBERUZJTkVE X09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkKTsKLSsgICAgICBERUZJ TkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkLCBwcGM2NCk7Ci0g Ci0gICAvLyBDbG9iYmVycyB0aGUgU2NyYXRjaFJlZyBvbiB4NjQuCi0gICBpbmxpbmUgdm9pZCBi cmFuY2hUZXN0T2JqZWN0KENvbmRpdGlvbiBjb25kLCBjb25zdCBBZGRyZXNzJiBhZGRyZXNzLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURf QVJDSDsKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3RPYmplY3QoQ29uZGl0aW9uIGNvbmQsIGNv bnN0IEJhc2VJbmRleCYgYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0 T2JqZWN0KENvbmRpdGlvbiBjb25kLCBjb25zdCBWYWx1ZU9wZXJhbmQmIHZhbHVlLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpCi0tICAgICAgREVGSU5FRF9P Tihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCk7Ci0rICAgICAgREVGSU5F RF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCwgcHBjNjQpOwotIAot ICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdEdDVGhpbmcoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEFk ZHJlc3MmIGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCog bGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3RHQ1RoaW5n KENvbmRpdGlvbiBjb25kLCBjb25zdCBCYXNlSW5kZXgmIGFkZHJlc3MsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlu bGluZSB2b2lkIGJyYW5jaFRlc3RHQ1RoaW5nKENvbmRpdGlvbiBjb25kLCBjb25zdCBWYWx1ZU9w ZXJhbmQmIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxh YmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gCi0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0UHJpbWl0 aXZlKENvbmRpdGlvbiBjb25kLCBjb25zdCBWYWx1ZU9wZXJhbmQmIHZhbHVlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpCi0tICAgICAgREVGSU5FRF9P Tihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCk7Ci0rICAgICAgREVGSU5F RF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCwgcHBjNjQpOwotIAot ICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdE1hZ2ljKENvbmRpdGlvbiBjb25kLCBjb25zdCBBZGRy ZXNzJiBhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJl bCkgUEVSX1NIQVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdE1hZ2ljKENvbmRp dGlvbiBjb25kLCBjb25zdCBCYXNlSW5kZXgmIGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICB0ZW1wbGF0ZSA8 Y2xhc3MgTD4KLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3RNYWdpYyhDb25kaXRpb24gY29uZCwg Y29uc3QgVmFsdWVPcGVyYW5kJiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMIGxhYmVsKQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQs IHg4Nl9zaGFyZWQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBz NjQsIHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3RNYWdp YyhDb25kaXRpb24gY29uZCwgY29uc3QgQWRkcmVzcyYgdmFsYWRkciwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBKU1doeU1hZ2ljIHdoeSwgTGFiZWwqIGxhYmVsKSBQRVJfQVJDSDsK LSAKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3RNYWdpY1ZhbHVlKENvbmRpdGlvbiBjb25kLCBj b25zdCBWYWx1ZU9wZXJhbmQmIHZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEpTV2h5TWFnaWMgd2h5LCBMYWJlbCogbGFiZWwpOwotIAotICAgdm9pZCBicmFuY2hUZXN0 VmFsdWUoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IFZhbHVlT3BlcmFuZCYgbGhzLAotQEAgLTE4Mjgs NDIgKzE4MzUsNDIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJs ZXJTcGVjaWZpYyB7Ci0gCi0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0VmFsdWUoQ29uZGl0aW9u IGNvbmQsIGNvbnN0IEJhc2VJbmRleCYgbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IFZhbHVlT3BlcmFuZCYgcmhzLCBMYWJlbCogbGFiZWwpIFBFUl9BUkNIOwotIAot ICAgLy8gQ2hlY2tzIGlmIGdpdmVuIFZhbHVlIGlzIGV2YWx1YXRlZCB0byB0cnVlIG9yIGZhbHNl IGluIGEgY29uZGl0aW9uLgotICAgLy8gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHNob3VsZCBtYXRj aCB0aGUgdHlwZSBvZiB0aGUgbWV0aG9kLgotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdEludDMy VHJ1dGh5KGJvb2wgdHJ1dGh5LCBjb25zdCBWYWx1ZU9wZXJhbmQmIHZhbHVlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkKLS0gICAgICBERUZJTkVE X09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkKTsKLSsgICAgICBERUZJ TkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkLCBwcGM2NCk7Ci0g ICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0RG91YmxlVHJ1dGh5KGJvb2wgdHJ1dGh5LCBGbG9hdFJl Z2lzdGVyIHJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwq IGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0Qm9vbGVh blRydXRoeShib29sIHRydXRoeSwgY29uc3QgVmFsdWVPcGVyYW5kJiB2YWx1ZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkgUEVSX0FSQ0g7Ci0g ICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0U3RyaW5nVHJ1dGh5KGJvb2wgdHJ1dGh5LCBjb25zdCBW YWx1ZU9wZXJhbmQmIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMYWJlbCogbGFiZWwpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1p cHM2NCwgeDg2X3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIs IG1pcHM2NCwgeDg2X3NoYXJlZCwgcHBjNjQpOwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdEJp Z0ludFRydXRoeShib29sIHRydXRoeSwgY29uc3QgVmFsdWVPcGVyYW5kJiB2YWx1ZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKQotLSAgICAgIERF RklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQpOwotKyAgICAg IERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQsIHBwYzY0 KTsKLSAKLSAgIC8vIENyZWF0ZSBhbiB1bmNvbmRpdGlvbmFsIGJyYW5jaCB0byB0aGUgYWRkcmVz cyBnaXZlbiBhcyBhcmd1bWVudC4KLSAgIGlubGluZSB2b2lkIGJyYW5jaFRvQ29tcHV0ZWRBZGRy ZXNzKGNvbnN0IEJhc2VJbmRleCYgYWRkcmVzcykgUEVSX0FSQ0g7Ci0gCi0gIHByaXZhdGU6Ci0g ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUywgdHlwZW5hbWUgTD4KLSAgIGlubGlu ZSB2b2lkIGJyYW5jaFB0ckltcGwoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IFQmIGxocywgY29uc3Qg UyYgcmhzLCBMIGxhYmVsKQotICAgICAgIERFRklORURfT04oeDg2X3NoYXJlZCk7Ci0gCi0gICB2 b2lkIGJyYW5jaFB0ckluTnVyc2VyeUNodW5rSW1wbChDb25kaXRpb24gY29uZCwgUmVnaXN0ZXIg cHRyLCBMYWJlbCogbGFiZWwpCi0gICAgICAgREVGSU5FRF9PTih4ODYpOwotICAgdGVtcGxhdGUg PHR5cGVuYW1lIFQ+Ci0gICB2b2lkIGJyYW5jaFZhbHVlSXNOdXJzZXJ5Q2VsbEltcGwoQ29uZGl0 aW9uIGNvbmQsIGNvbnN0IFQmIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFJlZ2lzdGVyIHRlbXAsIExhYmVsKiBsYWJlbCkKLS0gICAgICBERUZJTkVEX09OKGFy bTY0LCB4NjQsIG1pcHM2NCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm02NCwgeDY0LCBtaXBzNjQs IHBwYzY0KTsKLSAKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgaW5saW5lIHZvaWQgYnJh bmNoVGVzdFVuZGVmaW5lZEltcGwoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IFQmIHQsIExhYmVsKiBs YWJlbCkKLSAgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg4Nl9zaGFyZWQpOwotICAgdGVt cGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0SW50MzJJbXBsKENv bmRpdGlvbiBjb25kLCBjb25zdCBUJiB0LCBMYWJlbCogbGFiZWwpCi0gICAgICAgREVGSU5FRF9P Tihhcm0sIGFybTY0LCB4ODZfc2hhcmVkKTsKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQEAg LTE5MjMsMTE2ICsxOTMwLDExNiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNy b0Fzc2VtYmxlclNwZWNpZmljIHsKLSAgIGlubGluZSB2b2lkIGZhbGxpYmxlVW5ib3hTdHJpbmco Y29uc3QgVCYgc3JjLCBSZWdpc3RlciBkZXN0LCBMYWJlbCogZmFpbCk7Ci0gICB0ZW1wbGF0ZSA8 dHlwZW5hbWUgVD4KLSAgIGlubGluZSB2b2lkIGZhbGxpYmxlVW5ib3hTeW1ib2woY29uc3QgVCYg c3JjLCBSZWdpc3RlciBkZXN0LCBMYWJlbCogZmFpbCk7Ci0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUg VD4KLSAgIGlubGluZSB2b2lkIGZhbGxpYmxlVW5ib3hCaWdJbnQoY29uc3QgVCYgc3JjLCBSZWdp c3RlciBkZXN0LCBMYWJlbCogZmFpbCk7Ci0gCi0gICBpbmxpbmUgdm9pZCBjbXAzMk1vdmUzMihD b25kaXRpb24gY29uZCwgUmVnaXN0ZXIgbGhzLCBSZWdpc3RlciByaHMsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICBSZWdpc3RlciBzcmMsIFJlZ2lzdGVyIGRlc3QpCi0tICAgICAgREVGSU5F RF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2X3NoYXJlZCk7Ci0rICAgICAgREVGSU5F RF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2X3NoYXJlZCwgcHBjNjQpOwotIAotICAg aW5saW5lIHZvaWQgY21wMzJNb3ZlMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVyIGxocywgY29u c3QgQWRkcmVzcyYgcmhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgc3Jj LCBSZWdpc3RlciBkZXN0KQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFy ZWQsIHg4Nl9zaGFyZWQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFy ZWQsIHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIGlubGluZSB2b2lkIGNtcFB0ck1vdmVQdHIo Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVyIGxocywgUmVnaXN0ZXIgcmhzLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZWdpc3RlciBzcmMsIFJlZ2lzdGVyIGRlc3QpIFBFUl9BUkNIOwot IAotICAgaW5saW5lIHZvaWQgY21wUHRyTW92ZVB0cihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXIg bGhzLCBjb25zdCBBZGRyZXNzJiByaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl Z2lzdGVyIHNyYywgUmVnaXN0ZXIgZGVzdCkgUEVSX0FSQ0g7Ci0gCi0gICBpbmxpbmUgdm9pZCBj bXAzMkxvYWQzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXIgbGhzLCBjb25zdCBBZGRyZXNzJiBy aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBZGRyZXNzJiBzcmMsIFJlZ2lz dGVyIGRlc3QpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2 X3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2 X3NoYXJlZCwgcHBjNjQpOwotIAotICAgaW5saW5lIHZvaWQgY21wMzJMb2FkMzIoQ29uZGl0aW9u IGNvbmQsIFJlZ2lzdGVyIGxocywgUmVnaXN0ZXIgcmhzLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgQWRkcmVzcyYgc3JjLCBSZWdpc3RlciBkZXN0KQotLSAgICAgIERFRklORURf T04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4Nl9zaGFyZWQpOwotKyAgICAgIERFRklORURf T04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIGlu bGluZSB2b2lkIGNtcDMyTG9hZFB0cihDb25kaXRpb24gY29uZCwgY29uc3QgQWRkcmVzcyYgbGhz LCBJbW0zMiByaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQWRkcmVzcyYg c3JjLCBSZWdpc3RlciBkZXN0KQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19z aGFyZWQsIHg4NiwgeDY0KTsKLSsgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hh cmVkLCB4ODYsIHg2NCwgcHBjNjQpOwotIAotICAgaW5saW5lIHZvaWQgY21wMzJNb3ZlUHRyKENv bmRpdGlvbiBjb25kLCBSZWdpc3RlciBsaHMsIEltbTMyIHJocywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBSZWdpc3RlciBzcmMsIFJlZ2lzdGVyIGRlc3QpCi0tICAgICAgREVGSU5FRF9P Tihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQpOwotKyAgICAgIERFRklORURfT04o YXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0LCBwcGM2NCk7Ci0gCi0gICBpbmxpbmUg dm9pZCB0ZXN0MzJMb2FkUHRyKENvbmRpdGlvbiBjb25kLCBjb25zdCBBZGRyZXNzJiBhZGRyLCBJ bW0zMiBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBZGRyZXNzJiBz cmMsIFJlZ2lzdGVyIGRlc3QpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3No YXJlZCwgeDg2LCB4NjQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFy ZWQsIHg4NiwgeDY0LCBwcGM2NCk7Ci0gCi0gICBpbmxpbmUgdm9pZCB0ZXN0MzJNb3ZlUHRyKENv bmRpdGlvbiBjb25kLCBjb25zdCBBZGRyZXNzJiBhZGRyLCBJbW0zMiBtYXNrLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBzcmMsIFJlZ2lzdGVyIGRlc3QpCi0tICAgICAg REVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQpOwotKyAgICAgIERF RklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0LCBwcGM2NCk7Ci0gCi0g ICAvLyBDb25kaXRpb25hbCBtb3ZlIGZvciBTcGVjdHJlIG1pdGlnYXRpb25zLgotICAgaW5saW5l IHZvaWQgc3BlY3RyZU1vdmVQdHIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVyIHNyYywgUmVnaXN0 ZXIgZGVzdCkKLS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYs IHg2NCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4 NjQsIHBwYzY0KTsKLSAKLSAgIC8vIFplcm9lcyBkZXN0IGlmIHRoZSBjb25kaXRpb24gaXMgdHJ1 ZS4KLSAgIGlubGluZSB2b2lkIHNwZWN0cmVaZXJvUmVnaXN0ZXIoQ29uZGl0aW9uIGNvbmQsIFJl Z2lzdGVyIHNjcmF0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lz dGVyIGRlc3QpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2 X3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2 X3NoYXJlZCwgcHBjNjQpOwotIAotICAgLy8gUGVyZm9ybXMgYSBib3VuZHMgY2hlY2sgYW5kIHpl cm9lcyB0aGUgaW5kZXggcmVnaXN0ZXIgaWYgb3V0LW9mLWJvdW5kcwotICAgLy8gKHRvIG1pdGln YXRlIFNwZWN0cmUpLgotICBwcml2YXRlOgotICAgaW5saW5lIHZvaWQgc3BlY3RyZUJvdW5kc0No ZWNrMzIoUmVnaXN0ZXIgaW5kZXgsIGNvbnN0IE9wZXJhbmQmIGxlbmd0aCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG1heWJlU2NyYXRjaCwgTGFiZWwqIGZh aWx1cmUpCi0gICAgICAgREVGSU5FRF9PTih4ODYpOwotIAotICBwdWJsaWM6Ci0gICBpbmxpbmUg dm9pZCBzcGVjdHJlQm91bmRzQ2hlY2szMihSZWdpc3RlciBpbmRleCwgUmVnaXN0ZXIgbGVuZ3Ro LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgbWF5YmVTY3Jh dGNoLCBMYWJlbCogZmFpbHVyZSkKLS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNf c2hhcmVkLCB4ODYsIHg2NCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3No YXJlZCwgeDg2LCB4NjQsIHBwYzY0KTsKLSAgIGlubGluZSB2b2lkIHNwZWN0cmVCb3VuZHNDaGVj azMyKFJlZ2lzdGVyIGluZGV4LCBjb25zdCBBZGRyZXNzJiBsZW5ndGgsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBtYXliZVNjcmF0Y2gsIExhYmVsKiBmYWls dXJlKQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0 KTsKLSsgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCwg cHBjNjQpOwotIAotICAgaW5saW5lIHZvaWQgc3BlY3RyZUJvdW5kc0NoZWNrUHRyKFJlZ2lzdGVy IGluZGV4LCBSZWdpc3RlciBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUmVnaXN0ZXIgbWF5YmVTY3JhdGNoLCBMYWJlbCogZmFpbHVyZSkKLS0gICAgICBERUZJ TkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCk7Ci0rICAgICAgREVGSU5F RF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQsIHBwYzY0KTsKLSAgIGlubGlu ZSB2b2lkIHNwZWN0cmVCb3VuZHNDaGVja1B0cihSZWdpc3RlciBpbmRleCwgY29uc3QgQWRkcmVz cyYgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVy IG1heWJlU2NyYXRjaCwgTGFiZWwqIGZhaWx1cmUpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFy bTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02 NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0LCBwcGM2NCk7Ci0gCi0gICAvLyA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLSAgIC8vIENhbm9uaWNhbGl6YXRpb24gcHJpbWl0aXZlcy4KLSAgIGlubGluZSB2b2lkIGNh bm9uaWNhbGl6ZURvdWJsZShGbG9hdFJlZ2lzdGVyIHJlZyk7Ci0gICBpbmxpbmUgdm9pZCBjYW5v bmljYWxpemVEb3VibGVJZkRldGVybWluaXN0aWMoRmxvYXRSZWdpc3RlciByZWcpOwotIAotICAg aW5saW5lIHZvaWQgY2Fub25pY2FsaXplRmxvYXQoRmxvYXRSZWdpc3RlciByZWcpOwotICAgaW5s aW5lIHZvaWQgY2Fub25pY2FsaXplRmxvYXRJZkRldGVybWluaXN0aWMoRmxvYXRSZWdpc3RlciBy ZWcpOwotIAotICBwdWJsaWM6Ci0gICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgIC8vIE1lbW9yeSBh Y2Nlc3MgcHJpbWl0aXZlcy4KLSAgIGlubGluZSB2b2lkIHN0b3JlVW5jYW5vbmljYWxpemVkRG91 YmxlKEZsb2F0UmVnaXN0ZXIgc3JjLCBjb25zdCBBZGRyZXNzJiBkZXN0KQotLSAgICAgIERFRklO RURfT04oeDg2X3NoYXJlZCwgYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQpOwotKyAgICAgIERF RklORURfT04oeDg2X3NoYXJlZCwgYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHBwYzY0KTsK LSAgIGlubGluZSB2b2lkIHN0b3JlVW5jYW5vbmljYWxpemVkRG91YmxlKEZsb2F0UmVnaXN0ZXIg c3JjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmFz ZUluZGV4JiBkZXN0KQotLSAgICAgIERFRklORURfT04oeDg2X3NoYXJlZCwgYXJtLCBhcm02NCwg bWlwczMyLCBtaXBzNjQpOwotKyAgICAgIERFRklORURfT04oeDg2X3NoYXJlZCwgYXJtLCBhcm02 NCwgbWlwczMyLCBtaXBzNjQsIHBwYzY0KTsKLSAgIGlubGluZSB2b2lkIHN0b3JlVW5jYW5vbmlj YWxpemVkRG91YmxlKEZsb2F0UmVnaXN0ZXIgc3JjLCBjb25zdCBPcGVyYW5kJiBkZXN0KQotICAg ICAgIERFRklORURfT04oeDg2X3NoYXJlZCk7Ci0gCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAg IGlubGluZSB2b2lkIHN0b3JlRG91YmxlKEZsb2F0UmVnaXN0ZXIgc3JjLCBjb25zdCBUJiBkZXN0 KTsKLSAKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgaW5saW5lIHZvaWQgYm94RG91YmxlKEZs b2F0UmVnaXN0ZXIgc3JjLCBjb25zdCBUJiBkZXN0KTsKLSAKLSAgIHVzaW5nIE1hY3JvQXNzZW1i bGVyU3BlY2lmaWM6OmJveERvdWJsZTsKLSAKLSAgIGlubGluZSB2b2lkIHN0b3JlVW5jYW5vbmlj YWxpemVkRmxvYXQzMihGbG9hdFJlZ2lzdGVyIHNyYywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBBZGRyZXNzJiBkZXN0KQotLSAgICAgIERFRklORURf T04oeDg2X3NoYXJlZCwgYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQpOwotKyAgICAgIERFRklO RURfT04oeDg2X3NoYXJlZCwgYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHBwYzY0KTsKLSAg IGlubGluZSB2b2lkIHN0b3JlVW5jYW5vbmljYWxpemVkRmxvYXQzMihGbG9hdFJlZ2lzdGVyIHNy YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXNl SW5kZXgmIGRlc3QpCi0tICAgICAgREVGSU5FRF9PTih4ODZfc2hhcmVkLCBhcm0sIGFybTY0LCBt aXBzMzIsIG1pcHM2NCk7Ci0rICAgICAgREVGSU5FRF9PTih4ODZfc2hhcmVkLCBhcm0sIGFybTY0 LCBtaXBzMzIsIG1pcHM2NCwgcHBjNjQpOwotICAgaW5saW5lIHZvaWQgc3RvcmVVbmNhbm9uaWNh bGl6ZWRGbG9hdDMyKEZsb2F0UmVnaXN0ZXIgc3JjLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IE9wZXJhbmQmIGRlc3QpCi0gICAgICAgREVGSU5FRF9P Tih4ODZfc2hhcmVkKTsKLSAKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgaW5saW5lIHZvaWQg c3RvcmVGbG9hdDMyKEZsb2F0UmVnaXN0ZXIgc3JjLCBjb25zdCBUJiBkZXN0KTsKLSAKLSAgIHRl bXBsYXRlIDx0eXBlbmFtZSBUPgotQEAgLTM0NzAsMjAgKzM0NzcsMjAgQEAgY2xhc3MgTWFjcm9B c3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJTcGVjaWZpYyB7Ci0gICAgICAgREVGSU5F RF9PTih4ODYsIHg2NCk7Ci0gCi0gIHB1YmxpYzoKLSAgIC8vID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAg Ly8gQ29udmVydCBmbG9hdGluZyBwb2ludC4KLSAKLSAgIC8vIHRlbXAgcmVxdWlyZWQgb24geDg2 IGFuZCB4NjQ7IG11c3QgYmUgdW5kZWZpbmVkIG9uIG1pcHM2NC4KLSAgIHZvaWQgY29udmVydFVJ bnQ2NFRvRmxvYXQzMihSZWdpc3RlcjY0IHNyYywgRmxvYXRSZWdpc3RlciBkZXN0LCBSZWdpc3Rl ciB0ZW1wKQotLSAgICAgIERFRklORURfT04oYXJtNjQsIG1pcHM2NCwgeDY0LCB4ODYpOwotKyAg ICAgIERFRklORURfT04oYXJtNjQsIG1pcHM2NCwgeDY0LCB4ODYsIHBwYzY0KTsKLSAKLSAgIHZv aWQgY29udmVydEludDY0VG9GbG9hdDMyKFJlZ2lzdGVyNjQgc3JjLCBGbG9hdFJlZ2lzdGVyIGRl c3QpCi0tICAgICAgREVGSU5FRF9PTihhcm02NCwgbWlwczY0LCB4NjQsIHg4Nik7Ci0rICAgICAg REVGSU5FRF9PTihhcm02NCwgbWlwczY0LCB4NjQsIHg4NiwgcHBjNjQpOwotIAotICAgYm9vbCBj b252ZXJ0VUludDY0VG9Eb3VibGVOZWVkc1RlbXAoKSBQRVJfQVJDSDsKLSAKLSAgIC8vIHRlbXAg cmVxdWlyZWQgd2hlbiBjb252ZXJ0VUludDY0VG9Eb3VibGVOZWVkc1RlbXAoKSByZXR1cm5zIHRy dWUuCi0gICB2b2lkIGNvbnZlcnRVSW50NjRUb0RvdWJsZShSZWdpc3RlcjY0IHNyYywgRmxvYXRS ZWdpc3RlciBkZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgdGVt cCkgUEVSX0FSQ0g7Ci0gCi0gICB2b2lkIGNvbnZlcnRJbnQ2NFRvRG91YmxlKFJlZ2lzdGVyNjQg c3JjLCBGbG9hdFJlZ2lzdGVyIGRlc3QpIFBFUl9BUkNIOwotQEAgLTM1MTQsMjkgKzM1MjEsMjkg QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJTcGVjaWZpYyB7 Ci0gICAvLwotICAgLy8gT24gMzItYml0IHN5c3RlbXMgZm9yIGJvdGggd2FzbSBhbmQgYXNtLmpz LCBhbmQgb24gNjQtYml0IHN5c3RlbXMgZm9yCi0gICAvLyBhc20uanMsIGhlYXAgbGVuZ3RocyBh cmUgbGltaXRlZCB0byAyR0IuICBPbiA2NC1iaXQgc3lzdGVtcyBmb3Igd2FzbSwKLSAgIC8vIDMy LWJpdCBoZWFwIGxlbmd0aHMgYXJlIGxpbWl0ZWQgdG8gNEdCLCBhbmQgNjQtYml0IGhlYXAgbGVu Z3RocyB3aWxsIGJlCi0gICAvLyBsaW1pdGVkIHRvIHNvbWV0aGluZyBtdWNoIGxhcmdlci4KLSAK LSAgIHZvaWQgd2FzbUJvdW5kc0NoZWNrMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVyIGluZGV4 LAotICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBib3VuZHNDaGVja0xpbWl0LCBM YWJlbCogbGFiZWwpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2 NCwgeDg2X3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1p cHM2NCwgeDg2X3NoYXJlZCwgcHBjNjQpOwotIAotICAgdm9pZCB3YXNtQm91bmRzQ2hlY2szMihD b25kaXRpb24gY29uZCwgUmVnaXN0ZXIgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg IEFkZHJlc3MgYm91bmRzQ2hlY2tMaW1pdCwgTGFiZWwqIGxhYmVsKQotLSAgICAgIERFRklORURf T04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQpOwotKyAgICAgIERFRklO RURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAK LSAgIHZvaWQgd2FzbUJvdW5kc0NoZWNrNjQoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVyNjQgaW5k ZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyNjQgYm91bmRzQ2hlY2tMaW1p dCwgTGFiZWwqIGxhYmVsKQotLSAgICAgIERFRklORURfT04oYXJtNjQsIG1pcHM2NCwgeDY0KTsK LSsgICAgICBERUZJTkVEX09OKGFybTY0LCBtaXBzNjQsIHg2NCwgcHBjNjQpOwotIAotICAgdm9p ZCB3YXNtQm91bmRzQ2hlY2s2NChDb25kaXRpb24gY29uZCwgUmVnaXN0ZXI2NCBpbmRleCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBib3VuZHNDaGVja0xpbWl0LCBMYWJlbCog bGFiZWwpCi0tICAgICAgREVGSU5FRF9PTihhcm02NCwgbWlwczY0LCB4NjQpOwotKyAgICAgIERF RklORURfT04oYXJtNjQsIG1pcHM2NCwgeDY0LCBwcGM2NCk7Ci0gCi0gICAvLyBFYWNoIHdhc20g bG9hZC9zdG9yZSBpbnN0cnVjdGlvbiBhcHBlbmRzIGl0cyBvd24gd2FzbTo6VHJhcDo6T3V0T2ZC b3VuZHMuCi0gICB2b2lkIHdhc21Mb2FkKGNvbnN0IHdhc206Ok1lbW9yeUFjY2Vzc0Rlc2MmIGFj Y2VzcywgT3BlcmFuZCBzcmNBZGRyLAotICAgICAgICAgICAgICAgICBBbnlSZWdpc3RlciBvdXQp IERFRklORURfT04oeDg2LCB4NjQpOwotICAgdm9pZCB3YXNtTG9hZEk2NChjb25zdCB3YXNtOjpN ZW1vcnlBY2Nlc3NEZXNjJiBhY2Nlc3MsIE9wZXJhbmQgc3JjQWRkciwKLSAgICAgICAgICAgICAg ICAgICAgUmVnaXN0ZXI2NCBvdXQpIERFRklORURfT04oeDg2LCB4NjQpOwotICAgdm9pZCB3YXNt U3RvcmUoY29uc3Qgd2FzbTo6TWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBBbnlSZWdpc3RlciB2 YWx1ZSwKLSAgICAgICAgICAgICAgICAgIE9wZXJhbmQgZHN0QWRkcikgREVGSU5FRF9PTih4ODYs IHg2NCk7Ci1AQCAtMzU0NiwyNiArMzU1MywyNiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1 YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsKLSAgIC8vIEZvciBhbGwgdGhlIEFSTS9NSVBT IHdhc21Mb2FkIGFuZCB3YXNtU3RvcmUgZnVuY3Rpb25zIGJlbG93LCBgcHRyYAotICAgLy8gTVVT VCBlcXVhbCBgcHRyU2NyYXRjaGAsIGFuZCB0aGF0IHJlZ2lzdGVyIHdpbGwgYmUgdXBkYXRlZCBi YXNlZCBvbgotICAgLy8gY29uZGl0aW9ucyBsaXN0ZWQgYmVsb3cgKHdoZXJlIGl0IGlzIG9ubHkg bWVudGlvbmVkIGFzIGBwdHJgKS4KLSAKLSAgIC8vIGBwdHJgIHdpbGwgYmUgdXBkYXRlZCBpZiBh Y2Nlc3Mub2Zmc2V0KCkgIT0gMCBvciBhY2Nlc3MudHlwZSgpID09Ci0gICAvLyBTY2FsYXI6Oklu dDY0LgotICAgdm9pZCB3YXNtTG9hZChjb25zdCB3YXNtOjpNZW1vcnlBY2Nlc3NEZXNjJiBhY2Nl c3MsIFJlZ2lzdGVyIG1lbW9yeUJhc2UsCi0gICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHB0ciwg UmVnaXN0ZXIgcHRyU2NyYXRjaCwgQW55UmVnaXN0ZXIgb3V0cHV0KQotLSAgICAgIERFRklORURf T04oYXJtLCBtaXBzX3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIG1pcHNfc2hhcmVk LCBwcGM2NCk7Ci0gICB2b2lkIHdhc21Mb2FkSTY0KGNvbnN0IHdhc206Ok1lbW9yeUFjY2Vzc0Rl c2MmIGFjY2VzcywgUmVnaXN0ZXIgbWVtb3J5QmFzZSwKLSAgICAgICAgICAgICAgICAgICAgUmVn aXN0ZXIgcHRyLCBSZWdpc3RlciBwdHJTY3JhdGNoLCBSZWdpc3RlcjY0IG91dHB1dCkKLS0gICAg ICBERUZJTkVEX09OKGFybSwgbWlwczMyLCBtaXBzNjQpOwotKyAgICAgIERFRklORURfT04oYXJt LCBtaXBzMzIsIG1pcHM2NCwgcHBjNjQpOwotICAgdm9pZCB3YXNtU3RvcmUoY29uc3Qgd2FzbTo6 TWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBBbnlSZWdpc3RlciB2YWx1ZSwKLSAgICAgICAgICAg ICAgICAgIFJlZ2lzdGVyIG1lbW9yeUJhc2UsIFJlZ2lzdGVyIHB0ciwgUmVnaXN0ZXIgcHRyU2Ny YXRjaCkKLS0gICAgICBERUZJTkVEX09OKGFybSwgbWlwc19zaGFyZWQpOwotKyAgICAgIERFRklO RURfT04oYXJtLCBtaXBzX3NoYXJlZCwgcHBjNjQpOwotICAgdm9pZCB3YXNtU3RvcmVJNjQoY29u c3Qgd2FzbTo6TWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBSZWdpc3RlcjY0IHZhbHVlLAotICAg ICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgbWVtb3J5QmFzZSwgUmVnaXN0ZXIgcHRyLCBSZWdp c3RlciBwdHJTY3JhdGNoKQotLSAgICAgIERFRklORURfT04oYXJtLCBtaXBzMzIsIG1pcHM2NCk7 Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIG1pcHMzMiwgbWlwczY0LCBwcGM2NCk7Ci0gCi0gICAv LyBUaGVzZSBhY2NlcHQgZ2VuZXJhbCBtZW1vcnlCYXNlICsgcHRyICsgb2Zmc2V0IChpbiBgYWNj ZXNzYCk7IHRoZSBvZmZzZXQgaXMKLSAgIC8vIGFsd2F5cyBzbWFsbGVyIHRoYW4gdGhlIGd1YXJk IHJlZ2lvbi4gIFRoZXkgd2lsbCBpbnNlcnQgYW4gYWRkaXRpb25hbCBhZGQKLSAgIC8vIGlmIHRo ZSBvZmZzZXQgaXMgbm9uemVybywgYW5kIG9mIGNvdXJzZSB0aGF0IGFkZCBtYXkgcmVxdWlyZSBh IHRlbXBvcmFyeQotICAgLy8gcmVnaXN0ZXIgZm9yIHRoZSBvZmZzZXQgaWYgdGhlIG9mZnNldCBp cyBsYXJnZSwgYW5kIGluc3RydWN0aW9ucyB0byBzZXQgaXQKLSAgIC8vIHVwLgotICAgdm9pZCB3 YXNtTG9hZChjb25zdCB3YXNtOjpNZW1vcnlBY2Nlc3NEZXNjJiBhY2Nlc3MsIFJlZ2lzdGVyIG1l bW9yeUJhc2UsCi0gICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHB0ciwgQW55UmVnaXN0ZXIgb3V0 cHV0KSBERUZJTkVEX09OKGFybTY0KTsKLUBAIC0zNTc1LDEwMCArMzU4MiwxMDAgQEAgY2xhc3Mg TWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJTcGVjaWZpYyB7Ci0gICAgICAg ICAgICAgICAgICBSZWdpc3RlciBtZW1vcnlCYXNlLCBSZWdpc3RlciBwdHIpIERFRklORURfT04o YXJtNjQpOwotICAgdm9pZCB3YXNtU3RvcmVJNjQoY29uc3Qgd2FzbTo6TWVtb3J5QWNjZXNzRGVz YyYgYWNjZXNzLCBSZWdpc3RlcjY0IHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgUmVnaXN0 ZXIgbWVtb3J5QmFzZSwgUmVnaXN0ZXIgcHRyKSBERUZJTkVEX09OKGFybTY0KTsKLSAKLSAgIC8v IGBwdHJgIHdpbGwgYWx3YXlzIGJlIHVwZGF0ZWQuCi0gICB2b2lkIHdhc21VbmFsaWduZWRMb2Fk KGNvbnN0IHdhc206Ok1lbW9yeUFjY2Vzc0Rlc2MmIGFjY2VzcywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgUmVnaXN0ZXIgbWVtb3J5QmFzZSwgUmVnaXN0ZXIgcHRyLCBSZWdpc3RlciBwdHJT Y3JhdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBvdXRwdXQsIFJlZ2lz dGVyIHRtcCkKLS0gICAgICBERUZJTkVEX09OKG1pcHMzMiwgbWlwczY0KTsKLSsgICAgICBERUZJ TkVEX09OKG1pcHMzMiwgbWlwczY0LCBwcGM2NCk7Ci0gCi0gICAvLyBNSVBTOiBgcHRyYCB3aWxs IGFsd2F5cyBiZSB1cGRhdGVkLgotICAgdm9pZCB3YXNtVW5hbGlnbmVkTG9hZEZQKGNvbnN0IHdh c206Ok1lbW9yeUFjY2Vzc0Rlc2MmIGFjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSZWdpc3RlciBtZW1vcnlCYXNlLCBSZWdpc3RlciBwdHIsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgUmVnaXN0ZXIgcHRyU2NyYXRjaCwgRmxvYXRSZWdpc3RlciBvdXRwdXQsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgdG1wMSwgUmVnaXN0ZXIgdG1wMiwgUmVn aXN0ZXIgdG1wMykKLS0gICAgICBERUZJTkVEX09OKG1pcHMzMiwgbWlwczY0KTsKLSsgICAgICBE RUZJTkVEX09OKG1pcHMzMiwgbWlwczY0LCBwcGM2NCk7Ci0gCi0gICAvLyBgcHRyYCB3aWxsIGFs d2F5cyBiZSB1cGRhdGVkLgotICAgdm9pZCB3YXNtVW5hbGlnbmVkTG9hZEk2NChjb25zdCB3YXNt OjpNZW1vcnlBY2Nlc3NEZXNjJiBhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IFJlZ2lzdGVyIG1lbW9yeUJhc2UsIFJlZ2lzdGVyIHB0ciwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUmVnaXN0ZXIgcHRyU2NyYXRjaCwgUmVnaXN0ZXI2NCBvdXRwdXQsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHRtcCkgREVGSU5FRF9PTihtaXBzMzIsIG1p cHM2NCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHRtcCkgREVGSU5F RF9PTihtaXBzMzIsIG1pcHM2NCwgcHBjNjQpOwotIAotICAgLy8gTUlQUzogYHB0cmAgd2lsbCBh bHdheXMgYmUgdXBkYXRlZC4KLSAgIHZvaWQgd2FzbVVuYWxpZ25lZFN0b3JlKGNvbnN0IHdhc206 Ok1lbW9yeUFjY2Vzc0Rlc2MmIGFjY2VzcywgUmVnaXN0ZXIgdmFsdWUsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICBSZWdpc3RlciBtZW1vcnlCYXNlLCBSZWdpc3RlciBwdHIsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBwdHJTY3JhdGNoLCBSZWdpc3RlciB0bXApCi0t ICAgICAgREVGSU5FRF9PTihtaXBzMzIsIG1pcHM2NCk7Ci0rICAgICAgREVGSU5FRF9PTihtaXBz MzIsIG1pcHM2NCwgcHBjNjQpOwotIAotICAgLy8gYHB0cmAgd2lsbCBhbHdheXMgYmUgdXBkYXRl ZC4KLSAgIHZvaWQgd2FzbVVuYWxpZ25lZFN0b3JlRlAoY29uc3Qgd2FzbTo6TWVtb3J5QWNjZXNz RGVzYyYgYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFJlZ2lzdGVy IGZsb2F0VmFsdWUsIFJlZ2lzdGVyIG1lbW9yeUJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFJlZ2lzdGVyIHB0ciwgUmVnaXN0ZXIgcHRyU2NyYXRjaCwgUmVnaXN0ZXIgdG1wKQot LSAgICAgIERFRklORURfT04obWlwczMyLCBtaXBzNjQpOwotKyAgICAgIERFRklORURfT04obWlw czMyLCBtaXBzNjQsIHBwYzY0KTsKLSAKLSAgIC8vIGBwdHJgIHdpbGwgYWx3YXlzIGJlIHVwZGF0 ZWQuCi0gICB2b2lkIHdhc21VbmFsaWduZWRTdG9yZUk2NChjb25zdCB3YXNtOjpNZW1vcnlBY2Nl c3NEZXNjJiBhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcjY0 IHZhbHVlLCBSZWdpc3RlciBtZW1vcnlCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUmVnaXN0ZXIgcHRyLCBSZWdpc3RlciBwdHJTY3JhdGNoLCBSZWdpc3RlciB0bXApCi0tICAg ICAgREVGSU5FRF9PTihtaXBzMzIsIG1pcHM2NCk7Ci0rICAgICAgREVGSU5FRF9PTihtaXBzMzIs IG1pcHM2NCwgcHBjNjQpOwotIAotICAgLy8gd2FzbSBzcGVjaWZpYyBtZXRob2RzLCB1c2VkIGlu IGJvdGggdGhlIHdhc20gYmFzZWxpbmUgY29tcGlsZXIgYW5kIGlvbi4KLSAKLSAgIC8vIFRoZSB0 cnVuY2F0ZS10by1pbnQzMiBtZXRob2RzIGRvIG5vdCBiaW5kIHRoZSByZWpvaW4gbGFiZWw7IGNs aWVudHMgbXVzdAotICAgLy8gZG8gc28gaWYgb29sV2FzbVRydW5jYXRlQ2hlY2tGNjRUb0kzMigp IGNhbiBqdW1wIHRvIGl0LgotICAgdm9pZCB3YXNtVHJ1bmNhdGVEb3VibGVUb1VJbnQzMihGbG9h dFJlZ2lzdGVyIGlucHV0LCBSZWdpc3RlciBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJvb2wgaXNTYXR1cmF0aW5nLCBMYWJlbCogb29sRW50cnkpIFBFUl9BUkNI OwotICAgdm9pZCB3YXNtVHJ1bmNhdGVEb3VibGVUb0ludDMyKEZsb2F0UmVnaXN0ZXIgaW5wdXQs IFJlZ2lzdGVyIG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s IGlzU2F0dXJhdGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCog b29sRW50cnkpIFBFUl9TSEFSRURfQVJDSDsKLSAgIHZvaWQgb29sV2FzbVRydW5jYXRlQ2hlY2tG NjRUb0kzMihGbG9hdFJlZ2lzdGVyIGlucHV0LCBSZWdpc3RlciBvdXRwdXQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1bmNGbGFncyBmbGFncywgd2FzbTo6Qnl0ZWNv ZGVPZmZzZXQgb2ZmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVs KiByZWpvaW4pCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCB4ODZfc2hhcmVkLCBtaXBz X3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCB4ODZfc2hhcmVkLCBtaXBz X3NoYXJlZCwgcHBjNjQpOwotIAotICAgdm9pZCB3YXNtVHJ1bmNhdGVGbG9hdDMyVG9VSW50MzIo RmxvYXRSZWdpc3RlciBpbnB1dCwgUmVnaXN0ZXIgb3V0cHV0LAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYm9vbCBpc1NhdHVyYXRpbmcsIExhYmVsKiBvb2xFbnRyeSkgUEVS X0FSQ0g7Ci0gICB2b2lkIHdhc21UcnVuY2F0ZUZsb2F0MzJUb0ludDMyKEZsb2F0UmVnaXN0ZXIg aW5wdXQsIFJlZ2lzdGVyIG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYm9vbCBpc1NhdHVyYXRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExhYmVsKiBvb2xFbnRyeSkgUEVSX1NIQVJFRF9BUkNIOwotICAgdm9pZCBvb2xXYXNtVHJ1bmNh dGVDaGVja0YzMlRvSTMyKEZsb2F0UmVnaXN0ZXIgaW5wdXQsIFJlZ2lzdGVyIG91dHB1dCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVuY0ZsYWdzIGZsYWdzLCB3YXNt OjpCeXRlY29kZU9mZnNldCBvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGFiZWwqIHJlam9pbikKLS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg4Nl9zaGFy ZWQsIG1pcHNfc2hhcmVkKTsKLSsgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg4Nl9zaGFy ZWQsIG1pcHNfc2hhcmVkLCBwcGM2NCk7Ci0gCi0gICAvLyBUaGUgdHJ1bmNhdGUtdG8taW50NjQg bWV0aG9kcyB3aWxsIGFsd2F5cyBiaW5kIHRoZSBgb29sUmVqb2luYCBsYWJlbAotICAgLy8gYWZ0 ZXIgdGhlIGxhc3QgZW1pdHRlZCBpbnN0cnVjdGlvbi4KLSAgIHZvaWQgd2FzbVRydW5jYXRlRG91 YmxlVG9JbnQ2NChGbG9hdFJlZ2lzdGVyIGlucHV0LCBSZWdpc3RlcjY0IG91dHB1dCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU2F0dXJhdGluZywgTGFiZWwqIG9v bEVudHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBvb2xSZWpv aW4sIEZsb2F0UmVnaXN0ZXIgdGVtcERvdWJsZSkKLS0gICAgICBERUZJTkVEX09OKGFybTY0LCB4 ODYsIHg2NCwgbWlwczY0KTsKLSsgICAgICBERUZJTkVEX09OKGFybTY0LCB4ODYsIHg2NCwgbWlw czY0LCBwcGM2NCk7Ci0gICB2b2lkIHdhc21UcnVuY2F0ZURvdWJsZVRvVUludDY0KEZsb2F0UmVn aXN0ZXIgaW5wdXQsIFJlZ2lzdGVyNjQgb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBib29sIGlzU2F0dXJhdGluZywgTGFiZWwqIG9vbEVudHJ5LAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogb29sUmVqb2luLCBGbG9hdFJlZ2lzdGVy IHRlbXBEb3VibGUpCi0tICAgICAgREVGSU5FRF9PTihhcm02NCwgeDg2LCB4NjQsIG1pcHM2NCk7 Ci0rICAgICAgREVGSU5FRF9PTihhcm02NCwgeDg2LCB4NjQsIG1pcHM2NCwgcHBjNjQpOwotICAg dm9pZCBvb2xXYXNtVHJ1bmNhdGVDaGVja0Y2NFRvSTY0KEZsb2F0UmVnaXN0ZXIgaW5wdXQsIFJl Z2lzdGVyNjQgb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRy dW5jRmxhZ3MgZmxhZ3MsIHdhc206OkJ5dGVjb2RlT2Zmc2V0IG9mZiwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogcmVqb2luKQotLSAgICAgIERFRklORURfT04o YXJtLCBhcm02NCwgeDg2X3NoYXJlZCwgbWlwc19zaGFyZWQpOwotKyAgICAgIERFRklORURfT04o YXJtLCBhcm02NCwgeDg2X3NoYXJlZCwgbWlwc19zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIHZvaWQg d2FzbVRydW5jYXRlRmxvYXQzMlRvSW50NjQoRmxvYXRSZWdpc3RlciBpbnB1dCwgUmVnaXN0ZXI2 NCBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTYXR1 cmF0aW5nLCBMYWJlbCogb29sRW50cnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExhYmVsKiBvb2xSZWpvaW4sIEZsb2F0UmVnaXN0ZXIgdGVtcERvdWJsZSkKLS0gICAgICBE RUZJTkVEX09OKGFybTY0LCB4ODYsIHg2NCwgbWlwczY0KTsKLSsgICAgICBERUZJTkVEX09OKGFy bTY0LCB4ODYsIHg2NCwgbWlwczY0LCBwcGM2NCk7Ci0gICB2b2lkIHdhc21UcnVuY2F0ZUZsb2F0 MzJUb1VJbnQ2NChGbG9hdFJlZ2lzdGVyIGlucHV0LCBSZWdpc3RlcjY0IG91dHB1dCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTYXR1cmF0aW5nLCBMYWJlbCog b29sRW50cnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogb29s UmVqb2luLCBGbG9hdFJlZ2lzdGVyIHRlbXBEb3VibGUpCi0tICAgICAgREVGSU5FRF9PTihhcm02 NCwgeDg2LCB4NjQsIG1pcHM2NCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm02NCwgeDg2LCB4NjQs IG1pcHM2NCwgcHBjNjQpOwotICAgdm9pZCBvb2xXYXNtVHJ1bmNhdGVDaGVja0YzMlRvSTY0KEZs b2F0UmVnaXN0ZXIgaW5wdXQsIFJlZ2lzdGVyNjQgb3V0cHV0LAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRydW5jRmxhZ3MgZmxhZ3MsIHdhc206OkJ5dGVjb2RlT2Zmc2V0 IG9mZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogcmVqb2lu KQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgeDg2X3NoYXJlZCwgbWlwc19zaGFyZWQp OwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgeDg2X3NoYXJlZCwgbWlwc19zaGFyZWQs IHBwYzY0KTsKLSAKLSAgIC8vIFRoaXMgZnVuY3Rpb24gdGFrZXMgY2FyZSBvZiBsb2FkaW5nIHRo ZSBjYWxsZWUncyBUTFMgYW5kIHBpbm5lZCByZWdzIGJ1dAotICAgLy8gaXQgaXMgdGhlIGNhbGxl cidzIHJlc3BvbnNpYmlsaXR5IHRvIHNhdmUvcmVzdG9yZSBUTFMgb3IgcGlubmVkIHJlZ3MuCi0g ICBDb2RlT2Zmc2V0IHdhc21DYWxsSW1wb3J0KGNvbnN0IHdhc206OkNhbGxTaXRlRGVzYyYgZGVz YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2FzbTo6Q2FsbGVlRGVzYyYg Y2FsbGVlKTsKLSAKLSAgIC8vIFdhc21UYWJsZUNhbGxJbmRleFJlZyBtdXN0IGNvbnRhaW4gdGhl IGluZGV4IG9mIHRoZSBpbmRpcmVjdCBjYWxsLgotICAgQ29kZU9mZnNldCB3YXNtQ2FsbEluZGly ZWN0KGNvbnN0IHdhc206OkNhbGxTaXRlRGVzYyYgZGVzYywKLUBAIC0zNzM1LDcyICszNzQyLDcy IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyU3BlY2lmaWMg ewotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmFzZUluZGV4JiBtZW0sIFJlZ2lzdGVy IGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgcmVwbGFjZW1lbnQs IFJlZ2lzdGVyIG91dHB1dCkKLSAgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg4Nl9zaGFy ZWQpOwotIAotICAgdm9pZCBjb21wYXJlRXhjaGFuZ2UoU2NhbGFyOjpUeXBlIHR5cGUsIGNvbnN0 IFN5bmNocm9uaXphdGlvbiYgc3luYywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFk ZHJlc3MmIG1lbSwgUmVnaXN0ZXIgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBS ZWdpc3RlciByZXBsYWNlbWVudCwgUmVnaXN0ZXIgdmFsdWVUZW1wLAotICAgICAgICAgICAgICAg ICAgICAgICAgUmVnaXN0ZXIgb2Zmc2V0VGVtcCwgUmVnaXN0ZXIgbWFza1RlbXAsIFJlZ2lzdGVy IG91dHB1dCkKLS0gICAgICBERUZJTkVEX09OKG1pcHNfc2hhcmVkKTsKLSsgICAgICBERUZJTkVE X09OKG1pcHNfc2hhcmVkLCBwcGM2NCk7Ci0gCi0gICB2b2lkIGNvbXBhcmVFeGNoYW5nZShTY2Fs YXI6OlR5cGUgdHlwZSwgY29uc3QgU3luY2hyb25pemF0aW9uJiBzeW5jLAotICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgQmFzZUluZGV4JiBtZW0sIFJlZ2lzdGVyIGV4cGVjdGVkLAotICAg ICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgcmVwbGFjZW1lbnQsIFJlZ2lzdGVyIHZhbHVl VGVtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG9mZnNldFRlbXAsIFJlZ2lz dGVyIG1hc2tUZW1wLCBSZWdpc3RlciBvdXRwdXQpCi0tICAgICAgREVGSU5FRF9PTihtaXBzX3No YXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgcHBjNjQpOwotIAotICAgLy8g eDg2OiBgZXhwZWN0ZWRgIGFuZCBgb3V0cHV0YCBtdXN0IGJlIGVkeDplYXg7IGByZXBsYWNlbWVu dGAgaXMgZWN4OmVieC4KLSAgIC8vIHg2NDogYG91dHB1dGAgbXVzdCBiZSByYXguCi0gICAvLyBB Uk06IFJlZ2lzdGVycyBtdXN0IGJlIGRpc3RpbmN0OyBgcmVwbGFjZW1lbnRgIGFuZCBgb3V0cHV0 YCBtdXN0IGJlCi0gICAvLyAoZXZlbixvZGQpIHBhaXJzLgotIAotICAgdm9pZCBjb21wYXJlRXhj aGFuZ2U2NChjb25zdCBTeW5jaHJvbml6YXRpb24mIHN5bmMsIGNvbnN0IEFkZHJlc3MmIG1lbSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXI2NCBleHBlY3RlZCwgUmVnaXN0ZXI2 NCByZXBsYWNlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXI2NCBvdXRw dXQpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCB4NjQsIHg4NiwgbWlwczY0KTsKLSsg ICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg2NCwgeDg2LCBtaXBzNjQsIHBwYzY0KTsKLSAK LSAgIHZvaWQgY29tcGFyZUV4Y2hhbmdlNjQoY29uc3QgU3luY2hyb25pemF0aW9uJiBzeW5jLCBj b25zdCBCYXNlSW5kZXgmIG1lbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXI2 NCBleHBlY3RlZCwgUmVnaXN0ZXI2NCByZXBsYWNlbWVudCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgUmVnaXN0ZXI2NCBvdXRwdXQpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCB4 NjQsIHg4NiwgbWlwczY0KTsKLSsgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg2NCwgeDg2 LCBtaXBzNjQsIHBwYzY0KTsKLSAKLSAgIC8vIEV4Y2hhbmdlIHdpdGggbWVtb3J5LiAgUmV0dXJu IHRoZSB2YWx1ZSBpbml0aWFsbHkgaW4gbWVtb3J5LgotICAgLy8gTUlQUzogYHZhbHVlVGVtcGAs IGBvZmZzZXRUZW1wYCBhbmQgYG1hc2tUZW1wYCBtdXN0IGJlIGRlZmluZWQgZm9yIDgtYml0Ci0g ICAvLyBhbmQgMTYtYml0IHdpZGUgb3BlcmF0aW9ucy4KLSAKLSAgIHZvaWQgYXRvbWljRXhjaGFu Z2UoU2NhbGFyOjpUeXBlIHR5cGUsIGNvbnN0IFN5bmNocm9uaXphdGlvbiYgc3luYywKLSAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgQWRkcmVzcyYgbWVtLCBSZWdpc3RlciB2YWx1ZSwgUmVn aXN0ZXIgb3V0cHV0KQotICAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgeDg2X3NoYXJlZCk7 Ci0gCi0gICB2b2lkIGF0b21pY0V4Y2hhbmdlKFNjYWxhcjo6VHlwZSB0eXBlLCBjb25zdCBTeW5j aHJvbml6YXRpb24mIHN5bmMsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhc2VJbmRl eCYgbWVtLCBSZWdpc3RlciB2YWx1ZSwgUmVnaXN0ZXIgb3V0cHV0KQotICAgICAgIERFRklORURf T04oYXJtLCBhcm02NCwgeDg2X3NoYXJlZCk7Ci0gCi0gICB2b2lkIGF0b21pY0V4Y2hhbmdlKFNj YWxhcjo6VHlwZSB0eXBlLCBjb25zdCBTeW5jaHJvbml6YXRpb24mIHN5bmMsCi0gICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IEFkZHJlc3MmIG1lbSwgUmVnaXN0ZXIgdmFsdWUsIFJlZ2lzdGVy IHZhbHVlVGVtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgb2Zmc2V0VGVtcCwg UmVnaXN0ZXIgbWFza1RlbXAsIFJlZ2lzdGVyIG91dHB1dCkKLS0gICAgICBERUZJTkVEX09OKG1p cHNfc2hhcmVkKTsKLSsgICAgICBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBwcGM2NCk7Ci0gCi0g ICB2b2lkIGF0b21pY0V4Y2hhbmdlKFNjYWxhcjo6VHlwZSB0eXBlLCBjb25zdCBTeW5jaHJvbml6 YXRpb24mIHN5bmMsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhc2VJbmRleCYgbWVt LCBSZWdpc3RlciB2YWx1ZSwgUmVnaXN0ZXIgdmFsdWVUZW1wLAotICAgICAgICAgICAgICAgICAg ICAgICBSZWdpc3RlciBvZmZzZXRUZW1wLCBSZWdpc3RlciBtYXNrVGVtcCwgUmVnaXN0ZXIgb3V0 cHV0KQotLSAgICAgIERFRklORURfT04obWlwc19zaGFyZWQpOwotKyAgICAgIERFRklORURfT04o bWlwc19zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIC8vIHg4NjogYHZhbHVlYCBtdXN0IGJlIGVjeDpl Yng7IGBvdXRwdXRgIG11c3QgYmUgZWR4OmVheC4KLSAgIC8vIEFSTTogYHZhbHVlYCBhbmQgYG91 dHB1dGAgbXVzdCBiZSBkaXN0aW5jdCBhbmQgKGV2ZW4sb2RkKSBwYWlycy4KLSAgIC8vIEFSTTY0 OiBgdmFsdWVgIGFuZCBgb3V0cHV0YCBtdXN0IGJlIGRpc3RpbmN0LgotIAotICAgdm9pZCBhdG9t aWNFeGNoYW5nZTY0KGNvbnN0IFN5bmNocm9uaXphdGlvbiYgc3luYywgY29uc3QgQWRkcmVzcyYg bWVtLAotICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyNjQgdmFsdWUsIFJlZ2lzdGVy NjQgb3V0cHV0KQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgeDY0LCB4ODYsIG1pcHM2 NCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCB4NjQsIHg4NiwgbWlwczY0LCBwcGM2 NCk7Ci0gCi0gICB2b2lkIGF0b21pY0V4Y2hhbmdlNjQoY29uc3QgU3luY2hyb25pemF0aW9uJiBz eW5jLCBjb25zdCBCYXNlSW5kZXgmIG1lbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBSZWdp c3RlcjY0IHZhbHVlLCBSZWdpc3RlcjY0IG91dHB1dCkKLS0gICAgICBERUZJTkVEX09OKGFybSwg YXJtNjQsIHg2NCwgeDg2LCBtaXBzNjQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwg eDY0LCB4ODYsIG1pcHM2NCwgcHBjNjQpOwotIAotICAgLy8gUmVhZC1tb2RpZnktd3JpdGUgd2l0 aCBtZW1vcnkuICBSZXR1cm4gdGhlIHZhbHVlIGluIG1lbW9yeSBiZWZvcmUgdGhlCi0gICAvLyBv cGVyYXRpb24uCi0gICAvLwotICAgLy8geDg2LXNoYXJlZDoKLSAgIC8vICAgRm9yIDgtYml0IG9w ZXJhdGlvbnMsIGB2YWx1ZWAgYW5kIGBvdXRwdXRgIG11c3QgaGF2ZSBhIGJ5dGUgc3VicmVnaXN0 ZXIuCi0gICAvLyAgIEZvciBBZGQgYW5kIFN1YiwgYHRlbXBgIG11c3QgYmUgaW52YWxpZC4KLSAg IC8vICAgRm9yIEFuZCwgT3IsIGFuZCBYb3IsIGBvdXRwdXRgIG11c3QgYmUgZWF4IGFuZCBgdGVt cGAgbXVzdCBoYXZlIGEgYnl0ZQotQEAgLTM4MjYsNDQgKzM4MzMsNDQgQEAgY2xhc3MgTWFjcm9B c3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJTcGVjaWZpYyB7Ci0gCi0gICB2b2lkIGF0 b21pY0ZldGNoT3AoU2NhbGFyOjpUeXBlIHR5cGUsIGNvbnN0IFN5bmNocm9uaXphdGlvbiYgc3lu YywKLSAgICAgICAgICAgICAgICAgICAgICBBdG9taWNPcCBvcCwgSW1tMzIgdmFsdWUsIGNvbnN0 IEJhc2VJbmRleCYgbWVtLAotICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHRlbXAsIFJl Z2lzdGVyIG91dHB1dCkgREVGSU5FRF9PTih4ODZfc2hhcmVkKTsKLSAKLSAgIHZvaWQgYXRvbWlj RmV0Y2hPcChTY2FsYXI6OlR5cGUgdHlwZSwgY29uc3QgU3luY2hyb25pemF0aW9uJiBzeW5jLAot ICAgICAgICAgICAgICAgICAgICAgIEF0b21pY09wIG9wLCBSZWdpc3RlciB2YWx1ZSwgY29uc3Qg QWRkcmVzcyYgbWVtLAotICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHZhbHVlVGVtcCwg UmVnaXN0ZXIgb2Zmc2V0VGVtcCwgUmVnaXN0ZXIgbWFza1RlbXAsCi0tICAgICAgICAgICAgICAg ICAgICAgUmVnaXN0ZXIgb3V0cHV0KSBERUZJTkVEX09OKG1pcHNfc2hhcmVkKTsKLSsgICAgICAg ICAgICAgICAgICAgICBSZWdpc3RlciBvdXRwdXQpIERFRklORURfT04obWlwc19zaGFyZWQsIHBw YzY0KTsKLSAKLSAgIHZvaWQgYXRvbWljRmV0Y2hPcChTY2FsYXI6OlR5cGUgdHlwZSwgY29uc3Qg U3luY2hyb25pemF0aW9uJiBzeW5jLAotICAgICAgICAgICAgICAgICAgICAgIEF0b21pY09wIG9w LCBSZWdpc3RlciB2YWx1ZSwgY29uc3QgQmFzZUluZGV4JiBtZW0sCi0gICAgICAgICAgICAgICAg ICAgICAgUmVnaXN0ZXIgdmFsdWVUZW1wLCBSZWdpc3RlciBvZmZzZXRUZW1wLCBSZWdpc3RlciBt YXNrVGVtcCwKLS0gICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBvdXRwdXQpIERFRklORURf T04obWlwc19zaGFyZWQpOwotKyAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG91dHB1dCkg REVGSU5FRF9PTihtaXBzX3NoYXJlZCwgcHBjNjQpOwotIAotICAgLy8geDg2OgotICAgLy8gICBg dGVtcGAgbXVzdCBiZSBlY3g6ZWJ4OyBgb3V0cHV0YCBtdXN0IGJlIGVkeDplYXguCi0gICAvLyB4 NjQ6Ci0gICAvLyAgIEZvciBBZGQgYW5kIFN1YiwgYHRlbXBgIGlzIGlnbm9yZWQuCi0gICAvLyAg IEZvciBBbmQsIE9yLCBhbmQgWG9yLCBgb3V0cHV0YCBtdXN0IGJlIHJheC4KLSAgIC8vIEFSTToK LSAgIC8vICAgYHRlbXBgIGFuZCBgb3V0cHV0YCBtdXN0IGJlIChldmVuLG9kZCkgcGFpcnMgYW5k IGRpc3RpbmN0IGZyb20gYHZhbHVlYC4KLSAgIC8vIEFSTTY0OgotICAgLy8gICBSZWdpc3RlcnMg YHZhbHVlYCwgYHRlbXBgLCBhbmQgYG91dHB1dGAgbXVzdCBhbGwgZGlmZmVyLgotIAotICAgdm9p ZCBhdG9taWNGZXRjaE9wNjQoY29uc3QgU3luY2hyb25pemF0aW9uJiBzeW5jLCBBdG9taWNPcCBv cCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyNjQgdmFsdWUsIGNvbnN0IEFkZHJl c3MmIG1lbSwgUmVnaXN0ZXI2NCB0ZW1wLAotLSAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0 ZXI2NCBvdXRwdXQpIERFRklORURfT04oYXJtLCBhcm02NCwgeDY0LCBtaXBzNjQpOwotKyAgICAg ICAgICAgICAgICAgICAgICAgUmVnaXN0ZXI2NCBvdXRwdXQpIERFRklORURfT04oYXJtLCBhcm02 NCwgeDY0LCBtaXBzNjQsIHBwYzY0KTsKLSAKLSAgIHZvaWQgYXRvbWljRmV0Y2hPcDY0KGNvbnN0 IFN5bmNocm9uaXphdGlvbiYgc3luYywgQXRvbWljT3Agb3AsCi0gICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBBZGRyZXNzJiB2YWx1ZSwgY29uc3QgQWRkcmVzcyYgbWVtLAotICAgICAgICAg ICAgICAgICAgICAgICAgUmVnaXN0ZXI2NCB0ZW1wLCBSZWdpc3RlcjY0IG91dHB1dCkgREVGSU5F RF9PTih4ODYpOwotIAotICAgdm9pZCBhdG9taWNGZXRjaE9wNjQoY29uc3QgU3luY2hyb25pemF0 aW9uJiBzeW5jLCBBdG9taWNPcCBvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVy NjQgdmFsdWUsIGNvbnN0IEJhc2VJbmRleCYgbWVtLCBSZWdpc3RlcjY0IHRlbXAsCi0tICAgICAg ICAgICAgICAgICAgICAgICBSZWdpc3RlcjY0IG91dHB1dCkgREVGSU5FRF9PTihhcm0sIGFybTY0 LCB4NjQsIG1pcHM2NCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcjY0IG91dHB1 dCkgREVGSU5FRF9PTihhcm0sIGFybTY0LCB4NjQsIG1pcHM2NCwgcHBjNjQpOwotIAotICAgdm9p ZCBhdG9taWNGZXRjaE9wNjQoY29uc3QgU3luY2hyb25pemF0aW9uJiBzeW5jLCBBdG9taWNPcCBv cCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFkZHJlc3MmIHZhbHVlLCBjb25zdCBC YXNlSW5kZXgmIG1lbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyNjQgdGVtcCwg UmVnaXN0ZXI2NCBvdXRwdXQpIERFRklORURfT04oeDg2KTsKLSAKLSAgIC8vIHg2NDoKLSAgIC8v ICAgYHZhbHVlYCBjYW4gYmUgYW55IHJlZ2lzdGVyLgotICAgLy8gQVJNOgotQEAgLTM4NzEsMjQg KzM4NzgsMjQgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJT cGVjaWZpYyB7Ci0gICAvLyBBUk02NDoKLSAgIC8vICAgUmVnaXN0ZXJzIGB2YWx1ZWAgYW5kIGB0 ZW1wYCBtdXN0IGRpZmZlci4KLSAKLSAgIHZvaWQgYXRvbWljRWZmZWN0T3A2NChjb25zdCBTeW5j aHJvbml6YXRpb24mIHN5bmMsIEF0b21pY09wIG9wLAotICAgICAgICAgICAgICAgICAgICAgICAg IFJlZ2lzdGVyNjQgdmFsdWUsIGNvbnN0IEFkZHJlc3MmIG1lbSkgREVGSU5FRF9PTih4NjQpOwot IAotICAgdm9pZCBhdG9taWNFZmZlY3RPcDY0KGNvbnN0IFN5bmNocm9uaXphdGlvbiYgc3luYywg QXRvbWljT3Agb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXI2NCB2YWx1ZSwg Y29uc3QgQWRkcmVzcyYgbWVtLCBSZWdpc3RlcjY0IHRlbXApCi0tICAgICAgREVGSU5FRF9PTihh cm0sIGFybTY0LCBtaXBzNjQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczY0 LCBwcGM2NCk7Ci0gCi0gICB2b2lkIGF0b21pY0VmZmVjdE9wNjQoY29uc3QgU3luY2hyb25pemF0 aW9uJiBzeW5jLCBBdG9taWNPcCBvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3Rl cjY0IHZhbHVlLCBjb25zdCBCYXNlSW5kZXgmIG1lbSkgREVGSU5FRF9PTih4NjQpOwotIAotICAg dm9pZCBhdG9taWNFZmZlY3RPcDY0KGNvbnN0IFN5bmNocm9uaXphdGlvbiYgc3luYywgQXRvbWlj T3Agb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXI2NCB2YWx1ZSwgY29uc3Qg QmFzZUluZGV4JiBtZW0sIFJlZ2lzdGVyNjQgdGVtcCkKLS0gICAgICBERUZJTkVEX09OKGFybSwg YXJtNjQsIG1pcHM2NCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzNjQsIHBw YzY0KTsKLSAKLSAgIC8vIDY0LWJpdCBhdG9taWMgbG9hZC4gT24gNjQtYml0IHN5c3RlbXMsIHVz ZSByZWd1bGFyIGxvYWQgd2l0aAotICAgLy8gU3luY2hyb25pemF0aW9uOjpMb2FkLCBub3QgdGhp cyBtZXRob2QuCi0gICAvLwotICAgLy8geDg2OiBgdGVtcGAgbXVzdCBiZSBlY3g6ZWJ4OyBgb3V0 cHV0YCBtdXN0IGJlIGVkeDplYXguCi0gICAvLyBBUk06IGBvdXRwdXRgIG11c3QgYmUgKGV2ZW4s b2RkKSBwYWlyLgotIAotICAgdm9pZCBhdG9taWNMb2FkNjQoY29uc3QgU3luY2hyb25pemF0aW9u JiBzeW5jLCBjb25zdCBBZGRyZXNzJiBtZW0sCi1AQCAtMzkzMCw0MyArMzkzNyw0MyBAQCBjbGFz cyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXNlSW5kZXgmIG1lbSwgUmVnaXN0ZXIgZXhw ZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgcmVwbGFjZW1lbnQs IFJlZ2lzdGVyIG91dHB1dCkKLSAgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg4Nl9zaGFy ZWQpOwotIAotICAgdm9pZCB3YXNtQ29tcGFyZUV4Y2hhbmdlKGNvbnN0IHdhc206Ok1lbW9yeUFj Y2Vzc0Rlc2MmIGFjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBZGRy ZXNzJiBtZW0sIFJlZ2lzdGVyIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg IFJlZ2lzdGVyIHJlcGxhY2VtZW50LCBSZWdpc3RlciB2YWx1ZVRlbXAsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgUmVnaXN0ZXIgb2Zmc2V0VGVtcCwgUmVnaXN0ZXIgbWFza1RlbXAsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgb3V0cHV0KSBERUZJTkVEX09OKG1p cHNfc2hhcmVkKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBvdXRwdXQp IERFRklORURfT04obWlwc19zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIHZvaWQgd2FzbUNvbXBhcmVF eGNoYW5nZShjb25zdCB3YXNtOjpNZW1vcnlBY2Nlc3NEZXNjJiBhY2Nlc3MsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgQmFzZUluZGV4JiBtZW0sIFJlZ2lzdGVyIGV4cGVjdGVk LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHJlcGxhY2VtZW50LCBSZWdp c3RlciB2YWx1ZVRlbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgb2Zm c2V0VGVtcCwgUmVnaXN0ZXIgbWFza1RlbXAsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg UmVnaXN0ZXIgb3V0cHV0KSBERUZJTkVEX09OKG1pcHNfc2hhcmVkKTsKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICBSZWdpc3RlciBvdXRwdXQpIERFRklORURfT04obWlwc19zaGFyZWQsIHBw YzY0KTsKLSAKLSAgIHZvaWQgd2FzbUF0b21pY0V4Y2hhbmdlKGNvbnN0IHdhc206Ok1lbW9yeUFj Y2Vzc0Rlc2MmIGFjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFkZHJl c3MmIG1lbSwgUmVnaXN0ZXIgdmFsdWUsIFJlZ2lzdGVyIG91dHB1dCkKLSAgICAgICBERUZJTkVE X09OKGFybSwgYXJtNjQsIHg4Nl9zaGFyZWQpOwotIAotICAgdm9pZCB3YXNtQXRvbWljRXhjaGFu Z2UoY29uc3Qgd2FzbTo6TWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgQmFzZUluZGV4JiBtZW0sIFJlZ2lzdGVyIHZhbHVlLCBSZWdpc3Rl ciBvdXRwdXQpCi0gICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCB4ODZfc2hhcmVkKTsKLSAK LSAgIHZvaWQgd2FzbUF0b21pY0V4Y2hhbmdlKGNvbnN0IHdhc206Ok1lbW9yeUFjY2Vzc0Rlc2Mm IGFjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFkZHJlc3MmIG1lbSwg UmVnaXN0ZXIgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciB2YWx1 ZVRlbXAsIFJlZ2lzdGVyIG9mZnNldFRlbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBS ZWdpc3RlciBtYXNrVGVtcCwgUmVnaXN0ZXIgb3V0cHV0KQotLSAgICAgIERFRklORURfT04obWlw c19zaGFyZWQpOwotKyAgICAgIERFRklORURfT04obWlwc19zaGFyZWQsIHBwYzY0KTsKLSAKLSAg IHZvaWQgd2FzbUF0b21pY0V4Y2hhbmdlKGNvbnN0IHdhc206Ok1lbW9yeUFjY2Vzc0Rlc2MmIGFj Y2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhc2VJbmRleCYgbWVtLCBS ZWdpc3RlciB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHZhbHVl VGVtcCwgUmVnaXN0ZXIgb2Zmc2V0VGVtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl Z2lzdGVyIG1hc2tUZW1wLCBSZWdpc3RlciBvdXRwdXQpCi0tICAgICAgREVGSU5FRF9PTihtaXBz X3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgcHBjNjQpOwotIAotICAg dm9pZCB3YXNtQXRvbWljRmV0Y2hPcChjb25zdCB3YXNtOjpNZW1vcnlBY2Nlc3NEZXNjJiBhY2Nl c3MsIEF0b21pY09wIG9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciB2YWx1 ZSwgY29uc3QgQWRkcmVzcyYgbWVtLCBSZWdpc3RlciB0ZW1wLAotICAgICAgICAgICAgICAgICAg ICAgICAgICBSZWdpc3RlciBvdXRwdXQpIERFRklORURfT04oYXJtLCBhcm02NCwgeDg2X3NoYXJl ZCk7Ci0gCi0gICB2b2lkIHdhc21BdG9taWNGZXRjaE9wKGNvbnN0IHdhc206Ok1lbW9yeUFjY2Vz c0Rlc2MmIGFjY2VzcywgQXRvbWljT3Agb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIElt bTMyIHZhbHVlLCBjb25zdCBBZGRyZXNzJiBtZW0sIFJlZ2lzdGVyIHRlbXAsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG91dHB1dCkgREVGSU5FRF9PTih4ODZfc2hhcmVkKTsK LUBAIC0zOTc3LDIzICszOTg0LDIzIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1h Y3JvQXNzZW1ibGVyU3BlY2lmaWMgewotIAotICAgdm9pZCB3YXNtQXRvbWljRmV0Y2hPcChjb25z dCB3YXNtOjpNZW1vcnlBY2Nlc3NEZXNjJiBhY2Nlc3MsIEF0b21pY09wIG9wLAotICAgICAgICAg ICAgICAgICAgICAgICAgICBJbW0zMiB2YWx1ZSwgY29uc3QgQmFzZUluZGV4JiBtZW0sIFJlZ2lz dGVyIHRlbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG91dHB1dCkgREVG SU5FRF9PTih4ODZfc2hhcmVkKTsKLSAKLSAgIHZvaWQgd2FzbUF0b21pY0ZldGNoT3AoY29uc3Qg d2FzbTo6TWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBBdG9taWNPcCBvcCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgUmVnaXN0ZXIgdmFsdWUsIGNvbnN0IEFkZHJlc3MmIG1lbSwgUmVnaXN0 ZXIgdmFsdWVUZW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBvZmZzZXRU ZW1wLCBSZWdpc3RlciBtYXNrVGVtcCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0 ZXIgb3V0cHV0KSBERUZJTkVEX09OKG1pcHNfc2hhcmVkKTsKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgUmVnaXN0ZXIgb3V0cHV0KSBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBwcGM2NCk7Ci0g Ci0gICB2b2lkIHdhc21BdG9taWNGZXRjaE9wKGNvbnN0IHdhc206Ok1lbW9yeUFjY2Vzc0Rlc2Mm IGFjY2VzcywgQXRvbWljT3Agb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVy IHZhbHVlLCBjb25zdCBCYXNlSW5kZXgmIG1lbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg UmVnaXN0ZXIgdmFsdWVUZW1wLCBSZWdpc3RlciBvZmZzZXRUZW1wLAotICAgICAgICAgICAgICAg ICAgICAgICAgICBSZWdpc3RlciBtYXNrVGVtcCwgUmVnaXN0ZXIgb3V0cHV0KQotLSAgICAgIERF RklORURfT04obWlwc19zaGFyZWQpOwotKyAgICAgIERFRklORURfT04obWlwc19zaGFyZWQsIHBw YzY0KTsKLSAKLSAgIC8vIFJlYWQtbW9kaWZ5LXdyaXRlIHdpdGggbWVtb3J5LiAgUmV0dXJuIG5v IHZhbHVlLgotICAgLy8KLSAgIC8vIE1JUFM6IGB2YWx1ZVRlbXBgLCBgb2Zmc2V0VGVtcGAgYW5k IGBtYXNrVGVtcGAgbXVzdCBiZSBkZWZpbmVkIGZvciA4LWJpdAotICAgLy8gYW5kIDE2LWJpdCB3 aWRlIG9wZXJhdGlvbnMuCi0gCi0gICB2b2lkIHdhc21BdG9taWNFZmZlY3RPcChjb25zdCB3YXNt OjpNZW1vcnlBY2Nlc3NEZXNjJiBhY2Nlc3MsIEF0b21pY09wIG9wLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgUmVnaXN0ZXIgdmFsdWUsIGNvbnN0IEFkZHJlc3MmIG1lbSwgUmVnaXN0ZXIg dGVtcCkKLUBAIC00MDA5LDIyICs0MDE2LDIyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVi bGljIE1hY3JvQXNzZW1ibGVyU3BlY2lmaWMgewotIAotICAgdm9pZCB3YXNtQXRvbWljRWZmZWN0 T3AoY29uc3Qgd2FzbTo6TWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBBdG9taWNPcCBvcCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIEltbTMyIHZhbHVlLCBjb25zdCBCYXNlSW5kZXgmIG1l bSwgUmVnaXN0ZXIgdGVtcCkKLSAgICAgICBERUZJTkVEX09OKHg4Nl9zaGFyZWQpOwotIAotICAg dm9pZCB3YXNtQXRvbWljRWZmZWN0T3AoY29uc3Qgd2FzbTo6TWVtb3J5QWNjZXNzRGVzYyYgYWNj ZXNzLCBBdG9taWNPcCBvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHZh bHVlLCBjb25zdCBBZGRyZXNzJiBtZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdp c3RlciB2YWx1ZVRlbXAsIFJlZ2lzdGVyIG9mZnNldFRlbXAsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICBSZWdpc3RlciBtYXNrVGVtcCkgREVGSU5FRF9PTihtaXBzX3NoYXJlZCk7Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBtYXNrVGVtcCkgREVGSU5FRF9PTihtaXBz X3NoYXJlZCwgcHBjNjQpOwotIAotICAgdm9pZCB3YXNtQXRvbWljRWZmZWN0T3AoY29uc3Qgd2Fz bTo6TWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBBdG9taWNPcCBvcCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIFJlZ2lzdGVyIHZhbHVlLCBjb25zdCBCYXNlSW5kZXgmIG1lbSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHZhbHVlVGVtcCwgUmVnaXN0ZXIgb2Zmc2V0 VGVtcCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG1hc2tUZW1wKSBERUZJ TkVEX09OKG1pcHNfc2hhcmVkKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVy IG1hc2tUZW1wKSBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBwcGM2NCk7Ci0gCi0gICAvLyA2NC1i aXQgd2lkZSBvcGVyYXRpb25zLgotIAotICAgLy8gNjQtYml0IGF0b21pYyBsb2FkLiAgT24gNjQt Yml0IHN5c3RlbXMsIHVzZSByZWd1bGFyIHdhc20gbG9hZCB3aXRoCi0gICAvLyBTeW5jaHJvbml6 YXRpb246OkxvYWQsIG5vdCB0aGlzIG1ldGhvZC4KLSAgIC8vCi0gICAvLyB4ODY6IGB0ZW1wYCBt dXN0IGJlIGVjeDplYng7IGBvdXRwdXRgIG11c3QgYmUgZWR4OmVheC4KLSAgIC8vIEFSTTogYHRl bXBgIHNob3VsZCBiZSBpbnZhbGlkOyBgb3V0cHV0YCBtdXN0IGJlIChldmVuLG9kZCkgcGFpci4K LUBAIC00MDc0LDIyICs0MDgxLDIyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1h Y3JvQXNzZW1ibGVyU3BlY2lmaWMgewotICAgLy8gQVJNOiBSZWdpc3RlcnMgbXVzdCBiZSBkaXN0 aW5jdDsgYHRlbXBgIGFuZCBgb3V0cHV0YCBtdXN0IGJlIChldmVuLG9kZCkKLSAgIC8vIHBhaXJz LgotICAgLy8gTUlQUzogUmVnaXN0ZXJzIG11c3QgYmUgZGlzdGluY3QuCi0gICAvLyBNSVBTMzI6 IGB0ZW1wYCBzaG91bGQgYmUgaW52YWxpZC4KLSAKLSAgIHZvaWQgd2FzbUF0b21pY0ZldGNoT3A2 NChjb25zdCB3YXNtOjpNZW1vcnlBY2Nlc3NEZXNjJiBhY2Nlc3MsIEF0b21pY09wIG9wLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyNjQgdmFsdWUsIGNvbnN0IEFkZHJlc3Mm IG1lbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcjY0IHRlbXAsIFJlZ2lz dGVyNjQgb3V0cHV0KQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBz NjQsIHg2NCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwg eDY0LCBwcGM2NCk7Ci0gCi0gICB2b2lkIHdhc21BdG9taWNGZXRjaE9wNjQoY29uc3Qgd2FzbTo6 TWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBBdG9taWNPcCBvcCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBSZWdpc3RlcjY0IHZhbHVlLCBjb25zdCBCYXNlSW5kZXgmIG1lbSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcjY0IHRlbXAsIFJlZ2lzdGVyNjQgb3V0cHV0 KQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg2NCk7Ci0r ICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwgeDY0LCBwcGM2NCk7 Ci0gCi0gICB2b2lkIHdhc21BdG9taWNGZXRjaE9wNjQoY29uc3Qgd2FzbTo6TWVtb3J5QWNjZXNz RGVzYyYgYWNjZXNzLCBBdG9taWNPcCBvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBBZGRyZXNzJiB2YWx1ZSwgY29uc3QgQWRkcmVzcyYgbWVtLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFJlZ2lzdGVyNjQgdGVtcCwgUmVnaXN0ZXI2NCBvdXRwdXQpIERFRklORURf T04oeDg2KTsKLSAKLSAgIHZvaWQgd2FzbUF0b21pY0ZldGNoT3A2NChjb25zdCB3YXNtOjpNZW1v cnlBY2Nlc3NEZXNjJiBhY2Nlc3MsIEF0b21pY09wIG9wLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IEFkZHJlc3MmIHZhbHVlLCBjb25zdCBCYXNlSW5kZXgmIG1lbSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcjY0IHRlbXAsIFJlZ2lzdGVyNjQgb3V0cHV0 KSBERUZJTkVEX09OKHg4Nik7Ci1AQCAtNDEzMSw0MiArNDEzOCw0MiBAQCBjbGFzcyBNYWNyb0Fz c2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgQmFzZUluZGV4JiBtZW0sIFJlZ2lzdGVyIGV4cGVjdGVkLAotICAg ICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciByZXBsYWNlbWVudCwgUmVnaXN0ZXIgdGVt cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgQW55UmVnaXN0ZXIgb3V0cHV0KSBERUZJTkVE X09OKGFybSwgYXJtNjQsIHg4Nl9zaGFyZWQpOwotIAotICAgdm9pZCBjb21wYXJlRXhjaGFuZ2VK UyhTY2FsYXI6OlR5cGUgYXJyYXlUeXBlLCBjb25zdCBTeW5jaHJvbml6YXRpb24mIHN5bmMsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFkZHJlc3MmIG1lbSwgUmVnaXN0ZXIgZXhw ZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHJlcGxhY2VtZW50LCBS ZWdpc3RlciB2YWx1ZVRlbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG9m ZnNldFRlbXAsIFJlZ2lzdGVyIG1hc2tUZW1wLCBSZWdpc3RlciB0ZW1wLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICBBbnlSZWdpc3RlciBvdXRwdXQpIERFRklORURfT04obWlwc19zaGFyZWQp OwotKyAgICAgICAgICAgICAgICAgICAgICAgICBBbnlSZWdpc3RlciBvdXRwdXQpIERFRklORURf T04obWlwc19zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIHZvaWQgY29tcGFyZUV4Y2hhbmdlSlMoU2Nh bGFyOjpUeXBlIGFycmF5VHlwZSwgY29uc3QgU3luY2hyb25pemF0aW9uJiBzeW5jLAotICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXNlSW5kZXgmIG1lbSwgUmVnaXN0ZXIgZXhwZWN0 ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHJlcGxhY2VtZW50LCBSZWdp c3RlciB2YWx1ZVRlbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG9mZnNl dFRlbXAsIFJlZ2lzdGVyIG1hc2tUZW1wLCBSZWdpc3RlciB0ZW1wLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICBBbnlSZWdpc3RlciBvdXRwdXQpIERFRklORURfT04obWlwc19zaGFyZWQpOwot KyAgICAgICAgICAgICAgICAgICAgICAgICBBbnlSZWdpc3RlciBvdXRwdXQpIERFRklORURfT04o bWlwc19zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIHZvaWQgYXRvbWljRXhjaGFuZ2VKUyhTY2FsYXI6 OlR5cGUgYXJyYXlUeXBlLCBjb25zdCBTeW5jaHJvbml6YXRpb24mIHN5bmMsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgQWRkcmVzcyYgbWVtLCBSZWdpc3RlciB2YWx1ZSwgUmVnaXN0 ZXIgdGVtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBBbnlSZWdpc3RlciBvdXRwdXQpIERF RklORURfT04oYXJtLCBhcm02NCwgeDg2X3NoYXJlZCk7Ci0gCi0gICB2b2lkIGF0b21pY0V4Y2hh bmdlSlMoU2NhbGFyOjpUeXBlIGFycmF5VHlwZSwgY29uc3QgU3luY2hyb25pemF0aW9uJiBzeW5j LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhc2VJbmRleCYgbWVtLCBSZWdpc3Rl ciB2YWx1ZSwgUmVnaXN0ZXIgdGVtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBBbnlSZWdp c3RlciBvdXRwdXQpIERFRklORURfT04oYXJtLCBhcm02NCwgeDg2X3NoYXJlZCk7Ci0gCi0gICB2 b2lkIGF0b21pY0V4Y2hhbmdlSlMoU2NhbGFyOjpUeXBlIGFycmF5VHlwZSwgY29uc3QgU3luY2hy b25pemF0aW9uJiBzeW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFkZHJlc3Mm IG1lbSwgUmVnaXN0ZXIgdmFsdWUsIFJlZ2lzdGVyIHZhbHVlVGVtcCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICBSZWdpc3RlciBvZmZzZXRUZW1wLCBSZWdpc3RlciBtYXNrVGVtcCwgUmVnaXN0 ZXIgdGVtcCwKLS0gICAgICAgICAgICAgICAgICAgICAgICBBbnlSZWdpc3RlciBvdXRwdXQpIERF RklORURfT04obWlwc19zaGFyZWQpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIEFueVJlZ2lz dGVyIG91dHB1dCkgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgcHBjNjQpOwotIAotICAgdm9pZCBh dG9taWNFeGNoYW5nZUpTKFNjYWxhcjo6VHlwZSBhcnJheVR5cGUsIGNvbnN0IFN5bmNocm9uaXph dGlvbiYgc3luYywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXNlSW5kZXgmIG1l bSwgUmVnaXN0ZXIgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgdmFs dWVUZW1wLCBSZWdpc3RlciBvZmZzZXRUZW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgIFJl Z2lzdGVyIG1hc2tUZW1wLCBSZWdpc3RlciB0ZW1wLCBBbnlSZWdpc3RlciBvdXRwdXQpCi0tICAg ICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJl ZCwgcHBjNjQpOwotIAotICAgdm9pZCBhdG9taWNGZXRjaE9wSlMoU2NhbGFyOjpUeXBlIGFycmF5 VHlwZSwgY29uc3QgU3luY2hyb25pemF0aW9uJiBzeW5jLAotICAgICAgICAgICAgICAgICAgICAg ICAgQXRvbWljT3Agb3AsIFJlZ2lzdGVyIHZhbHVlLCBjb25zdCBBZGRyZXNzJiBtZW0sCi0gICAg ICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciB0ZW1wMSwgUmVnaXN0ZXIgdGVtcDIsIEFueVJl Z2lzdGVyIG91dHB1dCkKLSAgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg4Nl9zaGFyZWQp OwotIAotICAgdm9pZCBhdG9taWNGZXRjaE9wSlMoU2NhbGFyOjpUeXBlIGFycmF5VHlwZSwgY29u c3QgU3luY2hyb25pemF0aW9uJiBzeW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgQXRvbWlj T3Agb3AsIFJlZ2lzdGVyIHZhbHVlLCBjb25zdCBCYXNlSW5kZXgmIG1lbSwKLUBAIC00MTgyLDIz ICs0MTg5LDIzIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVy U3BlY2lmaWMgewotICAgICAgICAgICAgICAgICAgICAgICAgQXRvbWljT3Agb3AsIEltbTMyIHZh bHVlLCBjb25zdCBCYXNlSW5kZXgmIG1lbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lz dGVyIHRlbXAxLCBSZWdpc3RlciB0ZW1wMiwgQW55UmVnaXN0ZXIgb3V0cHV0KQotICAgICAgIERF RklORURfT04oeDg2X3NoYXJlZCk7Ci0gCi0gICB2b2lkIGF0b21pY0ZldGNoT3BKUyhTY2FsYXI6 OlR5cGUgYXJyYXlUeXBlLCBjb25zdCBTeW5jaHJvbml6YXRpb24mIHN5bmMsCi0gICAgICAgICAg ICAgICAgICAgICAgICBBdG9taWNPcCBvcCwgUmVnaXN0ZXIgdmFsdWUsIGNvbnN0IEFkZHJlc3Mm IG1lbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHZhbHVlVGVtcCwgUmVnaXN0 ZXIgb2Zmc2V0VGVtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG1hc2tUZW1w LCBSZWdpc3RlciB0ZW1wLCBBbnlSZWdpc3RlciBvdXRwdXQpCi0tICAgICAgREVGSU5FRF9PTiht aXBzX3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgcHBjNjQpOwotIAot ICAgdm9pZCBhdG9taWNGZXRjaE9wSlMoU2NhbGFyOjpUeXBlIGFycmF5VHlwZSwgY29uc3QgU3lu Y2hyb25pemF0aW9uJiBzeW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgQXRvbWljT3Agb3As IFJlZ2lzdGVyIHZhbHVlLCBjb25zdCBCYXNlSW5kZXgmIG1lbSwKLSAgICAgICAgICAgICAgICAg ICAgICAgIFJlZ2lzdGVyIHZhbHVlVGVtcCwgUmVnaXN0ZXIgb2Zmc2V0VGVtcCwKLSAgICAgICAg ICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG1hc2tUZW1wLCBSZWdpc3RlciB0ZW1wLCBBbnlSZWdp c3RlciBvdXRwdXQpCi0tICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCk7Ci0rICAgICAgREVG SU5FRF9PTihtaXBzX3NoYXJlZCwgcHBjNjQpOwotIAotICAgdm9pZCBhdG9taWNFZmZlY3RPcEpT KFNjYWxhcjo6VHlwZSBhcnJheVR5cGUsIGNvbnN0IFN5bmNocm9uaXphdGlvbiYgc3luYywKLSAg ICAgICAgICAgICAgICAgICAgICAgICBBdG9taWNPcCBvcCwgUmVnaXN0ZXIgdmFsdWUsIGNvbnN0 IEFkZHJlc3MmIG1lbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciB0ZW1wKSBE RUZJTkVEX09OKGFybSwgYXJtNjQsIHg4Nl9zaGFyZWQpOwotIAotICAgdm9pZCBhdG9taWNFZmZl Y3RPcEpTKFNjYWxhcjo6VHlwZSBhcnJheVR5cGUsIGNvbnN0IFN5bmNocm9uaXphdGlvbiYgc3lu YywKLSAgICAgICAgICAgICAgICAgICAgICAgICBBdG9taWNPcCBvcCwgUmVnaXN0ZXIgdmFsdWUs IGNvbnN0IEJhc2VJbmRleCYgbWVtLAotICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVy IHRlbXApIERFRklORURfT04oYXJtLCBhcm02NCwgeDg2X3NoYXJlZCk7Ci1AQCAtNDIwOSwyMiAr NDIxNiwyMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclNw ZWNpZmljIHsKLSAKLSAgIHZvaWQgYXRvbWljRWZmZWN0T3BKUyhTY2FsYXI6OlR5cGUgYXJyYXlU eXBlLCBjb25zdCBTeW5jaHJvbml6YXRpb24mIHN5bmMsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgQXRvbWljT3Agb3AsIEltbTMyIHZhbHVlLCBjb25zdCBCYXNlSW5kZXgmIG1lbSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciB0ZW1wKSBERUZJTkVEX09OKHg4Nl9zaGFyZWQp OwotIAotICAgdm9pZCBhdG9taWNFZmZlY3RPcEpTKFNjYWxhcjo6VHlwZSBhcnJheVR5cGUsIGNv bnN0IFN5bmNocm9uaXphdGlvbiYgc3luYywKLSAgICAgICAgICAgICAgICAgICAgICAgICBBdG9t aWNPcCBvcCwgUmVnaXN0ZXIgdmFsdWUsIGNvbnN0IEFkZHJlc3MmIG1lbSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICBSZWdpc3RlciB2YWx1ZVRlbXAsIFJlZ2lzdGVyIG9mZnNldFRlbXAsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgbWFza1RlbXApIERFRklORURfT04obWlw c19zaGFyZWQpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG1hc2tUZW1wKSBE RUZJTkVEX09OKG1pcHNfc2hhcmVkLCBwcGM2NCk7Ci0gCi0gICB2b2lkIGF0b21pY0VmZmVjdE9w SlMoU2NhbGFyOjpUeXBlIGFycmF5VHlwZSwgY29uc3QgU3luY2hyb25pemF0aW9uJiBzeW5jLAot ICAgICAgICAgICAgICAgICAgICAgICAgIEF0b21pY09wIG9wLCBSZWdpc3RlciB2YWx1ZSwgY29u c3QgQmFzZUluZGV4JiBtZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgdmFs dWVUZW1wLCBSZWdpc3RlciBvZmZzZXRUZW1wLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFJl Z2lzdGVyIG1hc2tUZW1wKSBERUZJTkVEX09OKG1pcHNfc2hhcmVkKTsKLSsgICAgICAgICAgICAg ICAgICAgICAgICBSZWdpc3RlciBtYXNrVGVtcCkgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgcHBj NjQpOwotIAotICAgdm9pZCBhdG9taWNJc0xvY2tGcmVlSlMoUmVnaXN0ZXIgdmFsdWUsIFJlZ2lz dGVyIG91dHB1dCk7Ci0gCi0gICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgIC8vIFNwZWN0cmUgTWl0 aWdhdGlvbnMuCi0gICAvLwotICAgLy8gU3BlY3RyZSBhdHRhY2tzIGFyZSBzaWRlLWNoYW5uZWwg YXR0YWNrcyBiYXNlZCBvbiBjYWNoZSBwb2xsdXRpb24gb3IKLSAgIC8vIHNsb3ctZXhlY3V0aW9u IG9mIHNvbWUgaW5zdHJ1Y3Rpb25zLiBXZSBoYXZlIG11bHRpcGxlIHNwZWN0cmUgbWl0aWdhdGlv bnMKLUBAIC00ODAzLDE3ICs0ODEwLDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGlj IE1hY3JvQXNzZW1ibGVyU3BlY2lmaWMgewotICAgLy8gU3RhY2tQb2ludGVyIG1hbmlwdWxhdGlv biBmdW5jdGlvbnMuCi0gICAvLyBPbiBBUk02NCwgdGhlIFN0YWNrUG9pbnRlciBpcyBpbXBsZW1l bnRlZCBhcyB0d28gc3luY2hyb25pemVkIHJlZ2lzdGVycy4KLSAgIC8vIENvZGUgc2hhcmVkIGFj cm9zcyBwbGF0Zm9ybXMgbXVzdCB1c2UgdGhlc2UgZnVuY3Rpb25zIHRvIGJlIHZhbGlkLgotICAg dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICBpbmxpbmUgdm9pZCBhZGRUb1N0YWNrUHRyKFQgdCk7 Ci0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgIGlubGluZSB2b2lkIGFkZFN0YWNrUHRyVG8o VCB0KTsKLSAKLS0gIHZvaWQgc3ViRnJvbVN0YWNrUHRyKEltbTMyIGltbTMyKSBERUZJTkVEX09O KG1pcHMzMiwgbWlwczY0LCBhcm0sIHg4NiwgeDY0KTsKLSsgIHZvaWQgc3ViRnJvbVN0YWNrUHRy KEltbTMyIGltbTMyKSBERUZJTkVEX09OKG1pcHMzMiwgbWlwczY0LCBhcm0sIHg4NiwgeDY0LCBw cGM2NCk7Ci0gICB2b2lkIHN1YkZyb21TdGFja1B0cihSZWdpc3RlciByZWcpOwotIAotICAgdGVt cGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICB2b2lkIHN1YlN0YWNrUHRyRnJvbShUIHQpIHsKLSAgICAg c3ViUHRyKGdldFN0YWNrUG9pbnRlcigpLCB0KTsKLSAgIH0KLSAKLSAgIHRlbXBsYXRlIDx0eXBl bmFtZSBUPgotZGlmZiAtLWdpdCBhL2pzL3NyYy9qaXQvTW92ZUVtaXR0ZXIuaCBiL2pzL3NyYy9q aXQvTW92ZUVtaXR0ZXIuaAotaW5kZXggNmM2MmMwNTYxYS4uMzBlZTRiNjFhNSAxMDA2NDQKLS0t LSBhL2pzL3NyYy9qaXQvTW92ZUVtaXR0ZXIuaAotKysrIGIvanMvc3JjL2ppdC9Nb3ZlRW1pdHRl ci5oCi1AQCAtMTIsMTUgKzEyLDE3IEBACi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTSkK LSAjICBpbmNsdWRlICJqaXQvYXJtL01vdmVFbWl0dGVyLWFybS5oIgotICNlbGlmIGRlZmluZWQo SlNfQ09ERUdFTl9BUk02NCkKLSAjICBpbmNsdWRlICJqaXQvYXJtNjQvTW92ZUVtaXR0ZXItYXJt NjQuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKQotICMgIGluY2x1ZGUgImpp dC9taXBzMzIvTW92ZUVtaXR0ZXItbWlwczMyLmgiCi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VO X01JUFM2NCkKLSAjICBpbmNsdWRlICJqaXQvbWlwczY0L01vdmVFbWl0dGVyLW1pcHM2NC5oIgot KyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsjICBpbmNsdWRlICJqaXQvcHBjNjQv TW92ZUVtaXR0ZXItcHBjNjQuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTk9ORSkKLSAj ICBpbmNsdWRlICJqaXQvbm9uZS9Nb3ZlRW1pdHRlci1ub25lLmgiCi0gI2Vsc2UKLSAjICBlcnJv ciAiVW5rbm93biBhcmNoaXRlY3R1cmUhIgotICNlbmRpZgotIAotICNlbmRpZiAvKiBqaXRfTW92 ZUVtaXR0ZXJfaCAqLwotZGlmZiAtLWdpdCBhL2pzL3NyYy9qaXQvUmVnaXN0ZXJzLmggYi9qcy9z cmMvaml0L1JlZ2lzdGVycy5oCi1pbmRleCA2N2M4NjYxMDA0Li5lZjQ5ZGY4M2U1IDEwMDY0NAot LS0tIGEvanMvc3JjL2ppdC9SZWdpc3RlcnMuaAotKysrIGIvanMvc3JjL2ppdC9SZWdpc3RlcnMu aAotQEAgLTE1LDE2ICsxNSwxOCBAQAotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9BUk0pCi0g IyAgaW5jbHVkZSAiaml0L2FybS9BcmNoaXRlY3R1cmUtYXJtLmgiCi0gI2VsaWYgZGVmaW5lZChK U19DT0RFR0VOX0FSTTY0KQotICMgIGluY2x1ZGUgImppdC9hcm02NC9BcmNoaXRlY3R1cmUtYXJt NjQuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKQotICMgIGluY2x1ZGUgImpp dC9taXBzMzIvQXJjaGl0ZWN0dXJlLW1pcHMzMi5oIgotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdF Tl9NSVBTNjQpCi0gIyAgaW5jbHVkZSAiaml0L21pcHM2NC9BcmNoaXRlY3R1cmUtbWlwczY0Lmgi Ci0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKyMgIGluY2x1ZGUgImppdC9wcGM2 NC9BcmNoaXRlY3R1cmUtcHBjNjQuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTk9ORSkK LSAjICBpbmNsdWRlICJqaXQvbm9uZS9BcmNoaXRlY3R1cmUtbm9uZS5oIgotICNlbHNlCi0gIyAg ZXJyb3IgIlVua25vd24gYXJjaGl0ZWN0dXJlISIKLSAjZW5kaWYKLSAKLSBuYW1lc3BhY2UganMg ewotIG5hbWVzcGFjZSBqaXQgewotZGlmZiAtLWdpdCBhL2pzL3NyYy9qaXQvU2hhcmVkSUNIZWxw ZXJzLWlubC5oIGIvanMvc3JjL2ppdC9TaGFyZWRJQ0hlbHBlcnMtaW5sLmgKLWluZGV4IDkwMWM4 MGNkZDguLmZkNGEyN2Q4YmIgMTAwNjQ0Ci0tLS0gYS9qcy9zcmMvaml0L1NoYXJlZElDSGVscGVy cy1pbmwuaAotKysrIGIvanMvc3JjL2ppdC9TaGFyZWRJQ0hlbHBlcnMtaW5sLmgKLUBAIC0xMiwx NiArMTIsMTggQEAKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fWDY0KQotICMgIGluY2x1ZGUg ImppdC94NjQvU2hhcmVkSUNIZWxwZXJzLXg2NC1pbmwuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NP REVHRU5fQVJNKQotICMgIGluY2x1ZGUgImppdC9hcm0vU2hhcmVkSUNIZWxwZXJzLWFybS1pbmwu aCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fQVJNNjQpCi0gIyAgaW5jbHVkZSAiaml0L2Fy bTY0L1NoYXJlZElDSGVscGVycy1hcm02NC1pbmwuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVH RU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQotICMgIGluY2x1ZGUgImpp dC9taXBzLXNoYXJlZC9TaGFyZWRJQ0hlbHBlcnMtbWlwcy1zaGFyZWQtaW5sLmgiCi0rI2VsaWYg ZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKyMgIGluY2x1ZGUgImppdC9wcGM2NC9TaGFyZWRJ Q0hlbHBlcnMtcHBjNjQtaW5sLmgiCi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX05PTkUpCi0g IyAgaW5jbHVkZSAiaml0L25vbmUvU2hhcmVkSUNIZWxwZXJzLW5vbmUtaW5sLmgiCi0gI2Vsc2UK LSAjICBlcnJvciAiVW5rbm93biBhcmNoaXRlY3R1cmUhIgotICNlbmRpZgotIAotIG5hbWVzcGFj ZSBqcyB7Ci0gbmFtZXNwYWNlIGppdCB7fSAgLy8gbmFtZXNwYWNlIGppdAotZGlmZiAtLWdpdCBh L2pzL3NyYy9qaXQvU2hhcmVkSUNIZWxwZXJzLmggYi9qcy9zcmMvaml0L1NoYXJlZElDSGVscGVy cy5oCi1pbmRleCA1NjNjYWUzY2NmLi43MzdjYTFkNWE1IDEwMDY0NAotLS0tIGEvanMvc3JjL2pp dC9TaGFyZWRJQ0hlbHBlcnMuaAotKysrIGIvanMvc3JjL2ppdC9TaGFyZWRJQ0hlbHBlcnMuaAot QEAgLTEyLDE2ICsxMiwxOCBAQAotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9YNjQpCi0gIyAg aW5jbHVkZSAiaml0L3g2NC9TaGFyZWRJQ0hlbHBlcnMteDY0LmgiCi0gI2VsaWYgZGVmaW5lZChK U19DT0RFR0VOX0FSTSkKLSAjICBpbmNsdWRlICJqaXQvYXJtL1NoYXJlZElDSGVscGVycy1hcm0u aCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fQVJNNjQpCi0gIyAgaW5jbHVkZSAiaml0L2Fy bTY0L1NoYXJlZElDSGVscGVycy1hcm02NC5oIgotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9N SVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0gIyAgaW5jbHVkZSAiaml0L21p cHMtc2hhcmVkL1NoYXJlZElDSGVscGVycy1taXBzLXNoYXJlZC5oIgotKyNlbGlmIGRlZmluZWQo SlNfQ09ERUdFTl9QUEM2NCkKLSsjICBpbmNsdWRlICJqaXQvcHBjNjQvU2hhcmVkSUNIZWxwZXJz LXBwYzY0LmgiCi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX05PTkUpCi0gIyAgaW5jbHVkZSAi aml0L25vbmUvU2hhcmVkSUNIZWxwZXJzLW5vbmUuaCIKLSAjZWxzZQotICMgIGVycm9yICJVbmtu b3duIGFyY2hpdGVjdHVyZSEiCi0gI2VuZGlmCi0gCi0gbmFtZXNwYWNlIGpzIHsKLSBuYW1lc3Bh Y2Ugaml0IHt9ICAvLyBuYW1lc3BhY2Ugaml0Ci1kaWZmIC0tZ2l0IGEvanMvc3JjL2ppdC9TaGFy ZWRJQ1JlZ2lzdGVycy5oIGIvanMvc3JjL2ppdC9TaGFyZWRJQ1JlZ2lzdGVycy5oCi1pbmRleCBj ODdlNWY4NDA4Li43NjIzOWQ1ZGRlIDEwMDY0NAotLS0tIGEvanMvc3JjL2ppdC9TaGFyZWRJQ1Jl Z2lzdGVycy5oCi0rKysgYi9qcy9zcmMvaml0L1NoYXJlZElDUmVnaXN0ZXJzLmgKLUBAIC0xNCwx NiArMTQsMTggQEAKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fQVJNKQotICMgIGluY2x1ZGUg ImppdC9hcm0vU2hhcmVkSUNSZWdpc3RlcnMtYXJtLmgiCi0gI2VsaWYgZGVmaW5lZChKU19DT0RF R0VOX0FSTTY0KQotICMgIGluY2x1ZGUgImppdC9hcm02NC9TaGFyZWRJQ1JlZ2lzdGVycy1hcm02 NC5oIgotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpCi0gIyAgaW5jbHVkZSAiaml0 L21pcHMzMi9TaGFyZWRJQ1JlZ2lzdGVycy1taXBzMzIuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NP REVHRU5fTUlQUzY0KQotICMgIGluY2x1ZGUgImppdC9taXBzNjQvU2hhcmVkSUNSZWdpc3RlcnMt bWlwczY0LmgiCi0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKyMgIGluY2x1ZGUg ImppdC9wcGM2NC9TaGFyZWRJQ1JlZ2lzdGVycy1wcGM2NC5oIgotICNlbGlmIGRlZmluZWQoSlNf Q09ERUdFTl9OT05FKQotICMgIGluY2x1ZGUgImppdC9ub25lL1NoYXJlZElDUmVnaXN0ZXJzLW5v bmUuaCIKLSAjZWxzZQotICMgIGVycm9yICJVbmtub3duIGFyY2hpdGVjdHVyZSEiCi0gI2VuZGlm Ci0gCi0gbmFtZXNwYWNlIGpzIHsKLSBuYW1lc3BhY2Ugaml0IHt9ICAvLyBuYW1lc3BhY2Ugaml0 Ci1kaWZmIC0tZ2l0IGEvanMvc3JjL2ppdC9tb3ouYnVpbGQgYi9qcy9zcmMvaml0L21vei5idWls ZAotaW5kZXggZjUwZDg2ZmM0NC4uODJjZGRkMDdhZiAxMDA2NDQKLS0tLSBhL2pzL3NyYy9qaXQv bW96LmJ1aWxkCi0rKysgYi9qcy9zcmMvaml0L21vei5idWlsZAotQEAgLTIyNywxNyArMjI3LDI5 IEBAIGVsaWYgQ09ORklHWyJKU19DT0RFR0VOX01JUFMzMiJdIG9yIENPTkZJR1siSlNfQ09ERUdF Tl9NSVBTNjQiXToKLSAgICAgICAgICAgICAibWlwczY0L0NvZGVHZW5lcmF0b3ItbWlwczY0LmNw cCIsCi0gICAgICAgICAgICAgIm1pcHM2NC9Mb3dlcmluZy1taXBzNjQuY3BwIiwKLSAgICAgICAg ICAgICAibWlwczY0L01hY3JvQXNzZW1ibGVyLW1pcHM2NC5jcHAiLAotICAgICAgICAgICAgICJt aXBzNjQvTW92ZUVtaXR0ZXItbWlwczY0LmNwcCIsCi0gICAgICAgICAgICAgIm1pcHM2NC9UcmFt cG9saW5lLW1pcHM2NC5jcHAiLAotICAgICAgICAgXQotICAgICAgICAgaWYgQ09ORklHWyJKU19T SU1VTEFUT1JfTUlQUzY0Il06Ci0gICAgICAgICAgICAgVU5JRklFRF9TT1VSQ0VTICs9IFsibWlw czY0L1NpbXVsYXRvci1taXBzNjQuY3BwIl0KLS0KLStlbGlmIENPTkZJR1siSlNfQ09ERUdFTl9Q UEM2NCJdOgotKyAgICBsaXJfaW5wdXRzICs9IFsicHBjNjQvTElSLXBwYzY0LmgiXQotKyAgICBV TklGSUVEX1NPVVJDRVMgKz0gWwotKyAgICAgICAgInBwYzY0L0FyY2hpdGVjdHVyZS1wcGM2NC5j cHAiLAotKyAgICAgICAgInBwYzY0L0Fzc2VtYmxlci1wcGM2NC5jcHAiLAotKyAgICAgICAgInBw YzY0L0JhaWxvdXRzLXBwYzY0LmNwcCIsCi0rICAgICAgICAicHBjNjQvQ29kZUdlbmVyYXRvci1w cGM2NC5jcHAiLAotKyAgICAgICAgInBwYzY0L0xvd2VyaW5nLXBwYzY0LmNwcCIsCi0rICAgICAg ICAicHBjNjQvTWFjcm9Bc3NlbWJsZXItcHBjNjQuY3BwIiwKLSsgICAgICAgICJwcGM2NC9Nb3Zl RW1pdHRlci1wcGM2NC5jcHAiLAotKyAgICAgICAgInBwYzY0L1RyYW1wb2xpbmUtcHBjNjQuY3Bw IiwKLSsgICAgICAgICJzaGFyZWQvQXRvbWljT3BlcmF0aW9ucy1zaGFyZWQtaml0LmNwcCIsCi0r ICAgIF0KLSAKLSAjIEdlbmVyYXRlIGppdC9NSVJPcHNHZW5lcmF0ZWQuaCBmcm9tIGppdC9NSVJP cHMueWFtbAotIEdlbmVyYXRlZEZpbGUoCi0gICAgICJNSVJPcHNHZW5lcmF0ZWQuaCIsCi0gICAg IHNjcmlwdD0iR2VuZXJhdGVNSVJGaWxlcy5weSIsCi0gICAgIGVudHJ5X3BvaW50PSJnZW5lcmF0 ZV9taXJfaGVhZGVyIiwKLSAgICAgaW5wdXRzPVsiTUlST3BzLnlhbWwiXSwKLSApCi1kaWZmIC0t Z2l0IGEvanMvc3JjL2ppdC9zaGFyZWQvQXNzZW1ibGVyLXNoYXJlZC5oIGIvanMvc3JjL2ppdC9z aGFyZWQvQXNzZW1ibGVyLXNoYXJlZC5oCi1pbmRleCBkZmIyYmNiNmI4Li42OWJhNzU5ZDQyIDEw MDY0NAotLS0tIGEvanMvc3JjL2ppdC9zaGFyZWQvQXNzZW1ibGVyLXNoYXJlZC5oCi0rKysgYi9q cy9zcmMvaml0L3NoYXJlZC9Bc3NlbWJsZXItc2hhcmVkLmgKLUBAIC0yMCwyMyArMjAsMjQgQEAK LSAjaW5jbHVkZSAiaml0L1JlZ2lzdGVycy5oIgotICNpbmNsdWRlICJqaXQvUmVnaXN0ZXJTZXRz LmgiCi0gI2luY2x1ZGUgImpzL1NjYWxhclR5cGUuaCIgIC8vIGpzOjpTY2FsYXI6OlR5cGUKLSAj aW5jbHVkZSAidm0vSGVscGVyVGhyZWFkcy5oIgotICNpbmNsdWRlICJ2bS9OYXRpdmVPYmplY3Qu aCIKLSAjaW5jbHVkZSAid2FzbS9XYXNtVHlwZXMuaCIKLSAKLSAjaWYgZGVmaW5lZChKU19DT0RF R0VOX0FSTSkgfHwgZGVmaW5lZChKU19DT0RFR0VOX0FSTTY0KSB8fCBcCi0tICAgIGRlZmluZWQo SlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0rICAgIGRl ZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpIHx8 IFwKLSsgICAgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotIC8vIFB1c2ggcmV0dXJuIGFkZHJl c3NlcyBjYWxsZWUtc2lkZS4KLSAjICBkZWZpbmUgSlNfVVNFX0xJTktfUkVHSVNURVIKLSAjZW5k aWYKLSAKLSAjaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RF R0VOX01JUFM2NCkgfHwgXAotLSAgICBkZWZpbmVkKEpTX0NPREVHRU5fQVJNNjQpCi0rICAgIGRl ZmluZWQoSlNfQ09ERUdFTl9BUk02NCkgfHwgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotIC8v IEpTX0NPREVMQUJFTF9MSU5LTU9ERSBnaXZlcyBsYWJlbHMgYWRkaXRpb25hbCBtZXRhZGF0YQot IC8vIGRlc2NyaWJpbmcgaG93IEJpbmQoKSBzaG91bGQgcGF0Y2ggdGhlbS4KLSAjICBkZWZpbmUg SlNfQ09ERUxBQkVMX0xJTktNT0RFCi0gI2VuZGlmCi0gCi0gbmFtZXNwYWNlIGpzIHsKLSBuYW1l c3BhY2Ugaml0IHsKLSAKLWRpZmYgLS1naXQgYS9qcy9zcmMvaml0L3NoYXJlZC9BdG9taWNPcGVy YXRpb25zLXNoYXJlZC1qaXQuY3BwIGIvanMvc3JjL2ppdC9zaGFyZWQvQXRvbWljT3BlcmF0aW9u cy1zaGFyZWQtaml0LmNwcAotaW5kZXggNzk0NjNmMTE4Yi4uN2M4ZWVhZjg5ZSAxMDA2NDQKLS0t LSBhL2pzL3NyYy9qaXQvc2hhcmVkL0F0b21pY09wZXJhdGlvbnMtc2hhcmVkLWppdC5jcHAKLSsr KyBiL2pzL3NyYy9qaXQvc2hhcmVkL0F0b21pY09wZXJhdGlvbnMtc2hhcmVkLWppdC5jcHAKLUBA IC0xMzMsMTYgKzEzMywzOCBAQCBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVyIEF0b21pY1RlbXAg PSBlZHg7Ci0gLy8gNjQtYml0IHJlZ2lzdGVycyBmb3IgY21weGNoZzhiLiAgVmFsUmVnL1ZhbDJS ZWcvVGVtcCBhcmUgbm90IHVzZWQgaW4gdGhpcwotIC8vIGNhc2UuCi0gCi0gc3RhdGljIGNvbnN0 ZXhwciBSZWdpc3RlcjY0IEF0b21pY1ZhbFJlZzY0KGVkeCwgZWF4KTsKLSBzdGF0aWMgY29uc3Rl eHByIFJlZ2lzdGVyNjQgQXRvbWljVmFsMlJlZzY0KGVjeCwgZWJ4KTsKLSAKLSAvLyBBdG9taWNS ZXR1cm5SZWc2NCBpcyB1bnVzZWQgb24geDg2LgotIAotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdF Tl9QUEM2NCkKLSsKLSsvLyBTZWxlY3RlZCByZWdpc3RlcnMgbWF0Y2ggdGhlIGFyZ3VtZW50IHJl Z2lzdGVycywgZXhjZXB0IHRoYXQgdGhlIFB0ciBpcyBub3QKLSsvLyBpbiBJbnRBcmdSZWcwIHNv IGFzIG5vdCB0byBjb25mbGljdCB3aXRoIHRoZSByZXN1bHQgcmVnaXN0ZXIuCi0rCi0rc3RhdGlj IGNvbnN0IExpdmVSZWdpc3RlclNldCBBdG9taWNOb25Wb2xhdGlsZVJlZ3M7Ci0rCi0rc3RhdGlj IGNvbnN0ZXhwciBSZWdpc3RlciBBdG9taWNQdHJSZWcgPSBJbnRBcmdSZWc0OwotK3N0YXRpYyBj b25zdGV4cHIgUmVnaXN0ZXIgQXRvbWljUHRyMlJlZyA9IEludEFyZ1JlZzE7Ci0rc3RhdGljIGNv bnN0ZXhwciBSZWdpc3RlciBBdG9taWNWYWxSZWcgPSBJbnRBcmdSZWcxOwotK3N0YXRpYyBjb25z dGV4cHIgUmVnaXN0ZXI2NCBBdG9taWNWYWxSZWc2NChJbnRBcmdSZWcxKTsKLStzdGF0aWMgY29u c3RleHByIFJlZ2lzdGVyIEF0b21pY1ZhbDJSZWcgPSBJbnRBcmdSZWcyOwotK3N0YXRpYyBjb25z dGV4cHIgUmVnaXN0ZXI2NCBBdG9taWNWYWwyUmVnNjQoSW50QXJnUmVnMik7Ci0rc3RhdGljIGNv bnN0ZXhwciBSZWdpc3RlciBBdG9taWNUZW1wID0gSW50QXJnUmVnMzsKLStzdGF0aWMgY29uc3Rl eHByIFJlZ2lzdGVyIEF0b21pY1RlbXAyID0gSW50QXJnUmVnNTsKLStzdGF0aWMgY29uc3RleHBy IFJlZ2lzdGVyIEF0b21pY1RlbXAzID0gSW50QXJnUmVnNjsKLStzdGF0aWMgY29uc3RleHByIFJl Z2lzdGVyNjQgQXRvbWljVGVtcDY0KEludEFyZ1JlZzMpOwotK3N0YXRpYyBjb25zdGV4cHIgUmVn aXN0ZXI2NCBBdG9taWNUZW1wNjRfMihJbnRBcmdSZWc1KTsKLStzdGF0aWMgY29uc3RleHByIFJl Z2lzdGVyNjQgQXRvbWljVGVtcDY0XzMoSW50QXJnUmVnNik7Ci0rCi0rc3RhdGljIGNvbnN0ZXhw ciBSZWdpc3RlcjY0IEF0b21pY1JldHVyblJlZzY0ID0gUmV0dXJuUmVnNjQ7Ci0rCi0gI2Vsc2UK LSAjICBlcnJvciAiVW5zdXBwb3J0ZWQgcGxhdGZvcm0iCi0gI2VuZGlmCi0gCi0gLy8gVGhlc2Ug YXJlIHVzZWZ1bCBzaG9ydGhhbmRzIGFuZCBoaWRlIHRoZSBtZWFuaW5nbGVzcyB1aW50L2ludCBk aXN0aW5jdGlvbi4KLSAKLSBzdGF0aWMgY29uc3RleHByIFNjYWxhcjo6VHlwZSBTSVpFOCA9IFNj YWxhcjo6VWludDg7Ci0gc3RhdGljIGNvbnN0ZXhwciBTY2FsYXI6OlR5cGUgU0laRTE2ID0gU2Nh bGFyOjpVaW50MTY7Ci1AQCAtMjQ4LDMxICsyNzAsMzcgQEAgc3RhdGljIHVpbnQzMl90IEdlblBy b2xvZ3VlKE1hY3JvQXNzZW1ibGVyJiBtYXNtLCBBcmdJdGVyYXRvciogaXRlcikgewotICAgdWlu dDMyX3Qgc3RhcnQgPSBtYXNtLmN1cnJlbnRPZmZzZXQoKTsKLSAgIG1hc20uUHVzaFJlZ3NJbk1h c2soQXRvbWljTm9uVm9sYXRpbGVSZWdzKTsKLSAjaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTSkg fHwgZGVmaW5lZChKU19DT0RFR0VOX0FSTTY0KQotICAgLy8gVGhlIHJldHVybiBhZGRyZXNzIGlz IGFtb25nIHRoZSBub252b2xhdGlsZSByZWdpc3RlcnMsIGlmIHB1c2hlZCBhdCBhbGwuCi0gICBp dGVyLT5hcmdCYXNlID0gbWFzbS5mcmFtZVB1c2hlZCgpOwotICNlbGlmIGRlZmluZWQoSlNfQ09E RUdFTl9YODYpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9YNjQpCi0gICAvLyBUaGUgcmV0dXJuIGFk ZHJlc3MgaXMgcHVzaGVkIHNlcGFyYXRlbHkuCi0gICBpdGVyLT5hcmdCYXNlID0gc2l6ZW9mKHZv aWQqKSArIG1hc20uZnJhbWVQdXNoZWQoKTsKLSsjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fUFBD NjQpCi0rLy8gWFhYCi0rICAvLyBUaGUgcmV0dXJuIGFkZHJlc3MgaXMgaW4gTFIgKGFuIFNQUik7 IGl0J3Mgbm90IChwcm9iYWJseSkgb24gdGhlIHN0YWNrLgotKyAgaXRlci0+YXJnQmFzZSA9IG1h c20uZnJhbWVQdXNoZWQoKTsKLSAjZWxzZQotICMgIGVycm9yICJVbnN1cHBvcnRlZCBwbGF0Zm9y bSIKLSAjZW5kaWYKLSAgIHJldHVybiBzdGFydDsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgR2VuRXBp bG9ndWUoTWFjcm9Bc3NlbWJsZXImIG1hc20pIHsKLSAgIG1hc20uUG9wUmVnc0luTWFzayhBdG9t aWNOb25Wb2xhdGlsZVJlZ3MpOwotICAgTU9aX0FTU0VSVChtYXNtLmZyYW1lUHVzaGVkKCkgPT0g MCk7Ci0gI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9BUk02NCkKLSAgIG1hc20uUmV0KCk7Ci0gI2Vs aWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTSkKLSAgIG1hc20ubW92KGxyLCBwYyk7Ci0gI2VsaWYg ZGVmaW5lZChKU19DT0RFR0VOX1g4NikgfHwgZGVmaW5lZChKU19DT0RFR0VOX1g2NCkKLSAgIG1h c20ucmV0KCk7Ci0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKyAgbWFzbS5hc19i bHIoKTsKLSAjZW5kaWYKLSB9Ci0gCi0gI2lmbmRlZiBKU182NEJJVAotIHN0YXRpYyB1aW50MzJf dCBHZW5Ob3AoTWFjcm9Bc3NlbWJsZXImIG1hc20pIHsKLSAgIEFyZ0l0ZXJhdG9yIGl0ZXI7Ci0g ICB1aW50MzJfdCBzdGFydCA9IEdlblByb2xvZ3VlKG1hc20sICZpdGVyKTsKLSAgIEdlbkVwaWxv Z3VlKG1hc20pOwotQEAgLTQxNCwyMSArNDQyLDMxIEBAIHN0YXRpYyB1aW50MzJfdCBHZW5DbXB4 Y2hnKE1hY3JvQXNzZW1ibGVyJiBtYXNtLCBTY2FsYXI6OlR5cGUgc2l6ZSwKLSAgIEFyZ0l0ZXJh dG9yIGl0ZXI7Ci0gICB1aW50MzJfdCBzdGFydCA9IEdlblByb2xvZ3VlKG1hc20sICZpdGVyKTsK LSAgIEdlbkdwckFyZyhtYXNtLCBNSVJUeXBlOjpQb2ludGVyLCAmaXRlciwgQXRvbWljUHRyUmVn KTsKLSAKLSAgIEFkZHJlc3MgYWRkcihBdG9taWNQdHJSZWcsIDApOwotICAgc3dpdGNoIChzaXpl KSB7Ci0gICAgIGNhc2UgU0laRTg6Ci0gICAgIGNhc2UgU0laRTE2OgotKyNpZiBkZWZpbmVkKEpT X0NPREVHRU5fUFBDNjQpCi0rICAgICAgbWFzbS5jb21wYXJlRXhjaGFuZ2Uoc2l6ZSwgc3luYywg YWRkciwgQXRvbWljVmFsUmVnLCBBdG9taWNWYWwyUmVnLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIEF0b21pY1RlbXAsIEF0b21pY1RlbXAyLCBBdG9taWNUZW1wMywgUmV0dXJuUmVnKTsK LSsgICAgICBicmVhazsKLSsjZW5kaWYKLSAgICAgY2FzZSBTSVpFMzI6Ci0gICAgICAgR2VuR3By QXJnKG1hc20sIE1JUlR5cGU6OkludDMyLCAmaXRlciwgQXRvbWljVmFsUmVnKTsKLSAgICAgICBH ZW5HcHJBcmcobWFzbSwgTUlSVHlwZTo6SW50MzIsICZpdGVyLCBBdG9taWNWYWwyUmVnKTsKLSsj aWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKyAgICAgIG1hc20uY29tcGFyZUV4Y2hhbmdl KHNpemUsIHN5bmMsIGFkZHIsIEF0b21pY1ZhbFJlZywgQXRvbWljVmFsMlJlZywKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICBJbnZhbGlkUmVnLCBJbnZhbGlkUmVnLCBJbnZhbGlkUmVnLCBS ZXR1cm5SZWcpOwotKyNlbHNlCi0gICAgICAgbWFzbS5jb21wYXJlRXhjaGFuZ2Uoc2l6ZSwgc3lu YywgYWRkciwgQXRvbWljVmFsUmVnLCBBdG9taWNWYWwyUmVnLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFJldHVyblJlZyk7Ci0rI2VuZGlmCi0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2Ug U0laRTY0OgotICAgICAgIEdlbkdwcjY0QXJnKG1hc20sICZpdGVyLCBBdG9taWNWYWxSZWc2NCk7 Ci0gICAgICAgR2VuR3ByNjRBcmcobWFzbSwgJml0ZXIsIEF0b21pY1ZhbDJSZWc2NCk7Ci0gI2lm IGRlZmluZWQoSlNfQ09ERUdFTl9YODYpCi0gICAgICAgc3RhdGljX2Fzc2VydChBdG9taWNWYWxS ZWc2NCA9PSBSZWdpc3RlcjY0KGVkeCwgZWF4KSk7Ci0gICAgICAgc3RhdGljX2Fzc2VydChBdG9t aWNWYWwyUmVnNjQgPT0gUmVnaXN0ZXI2NChlY3gsIGVieCkpOwotIAotQEAgLTQ1MywxOSArNDkx LDI5IEBAIHN0YXRpYyB1aW50MzJfdCBHZW5FeGNoYW5nZShNYWNyb0Fzc2VtYmxlciYgbWFzbSwg U2NhbGFyOjpUeXBlIHNpemUsCi0gICBBcmdJdGVyYXRvciBpdGVyOwotICAgdWludDMyX3Qgc3Rh cnQgPSBHZW5Qcm9sb2d1ZShtYXNtLCAmaXRlcik7Ci0gICBHZW5HcHJBcmcobWFzbSwgTUlSVHlw ZTo6UG9pbnRlciwgJml0ZXIsIEF0b21pY1B0clJlZyk7Ci0gCi0gICBBZGRyZXNzIGFkZHIoQXRv bWljUHRyUmVnLCAwKTsKLSAgIHN3aXRjaCAoc2l6ZSkgewotICAgICBjYXNlIFNJWkU4OgotICAg ICBjYXNlIFNJWkUxNjoKLSsjaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKyAgICAgIG1h c20uYXRvbWljRXhjaGFuZ2Uoc2l6ZSwgc3luYywgYWRkciwgQXRvbWljVmFsUmVnLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgQXRvbWljVGVtcCwgQXRvbWljVGVtcDIsIEF0b21pY1RlbXAz LCBSZXR1cm5SZWcpOwotKyAgICAgIGJyZWFrOwotKyNlbmRpZgotICAgICBjYXNlIFNJWkUzMjoK LSAgICAgICBHZW5HcHJBcmcobWFzbSwgTUlSVHlwZTo6SW50MzIsICZpdGVyLCBBdG9taWNWYWxS ZWcpOwotKyNpZiBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rICAgICAgbWFzbS5hdG9taWNF eGNoYW5nZShzaXplLCBzeW5jLCBhZGRyLCBBdG9taWNWYWxSZWcsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICBJbnZhbGlkUmVnLCBJbnZhbGlkUmVnLCBJbnZhbGlkUmVnLCBSZXR1cm5SZWcp OwotKyNlbHNlCi0gICAgICAgbWFzbS5hdG9taWNFeGNoYW5nZShzaXplLCBzeW5jLCBhZGRyLCBB dG9taWNWYWxSZWcsIFJldHVyblJlZyk7Ci0rI2VuZGlmCi0gICAgICAgYnJlYWs7Ci0gICAgIGNh c2UgU0laRTY0OgotICNpZiBkZWZpbmVkKEpTXzY0QklUKQotICAgICAgIEdlbkdwcjY0QXJnKG1h c20sICZpdGVyLCBBdG9taWNWYWxSZWc2NCk7Ci0gICAgICAgbWFzbS5hdG9taWNFeGNoYW5nZTY0 KHN5bmMsIGFkZHIsIEF0b21pY1ZhbFJlZzY0LCBBdG9taWNSZXR1cm5SZWc2NCk7Ci0gICAgICAg YnJlYWs7Ci0gI2Vsc2UKLSAgICAgICBNT1pfQ1JBU0goIjY0LWJpdCBhdG9taWMgZXhjaGFuZ2Ug bm90IGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIik7Ci1AQCAtNDkyLDE3ICs1NDAsMjIgQEAg c3RhdGljIHVpbnQzMl90IEdlbkZldGNoT3AoTWFjcm9Bc3NlbWJsZXImIG1hc20sIFNjYWxhcjo6 VHlwZSBzaXplLCBBdG9taWNPcCBvcCwKLSAjaWYgZGVmaW5lZChKU19DT0RFR0VOX1g4NikgfHwg ZGVmaW5lZChKU19DT0RFR0VOX1g2NCkKLSAgICAgICBSZWdpc3RlciB0bXAgPSBvcCA9PSBBdG9t aWNGZXRjaEFkZE9wIHx8IG9wID09IEF0b21pY0ZldGNoU3ViT3AKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgPyBSZWdpc3Rlcjo6SW52YWxpZCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAg IDogQXRvbWljVGVtcDsKLSAjZWxzZQotICAgICAgIFJlZ2lzdGVyIHRtcCA9IEF0b21pY1RlbXA7 Ci0gI2VuZGlmCi0gICAgICAgR2VuR3ByQXJnKG1hc20sIE1JUlR5cGU6OkludDMyLCAmaXRlciwg QXRvbWljVmFsUmVnKTsKLSsjaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKyAgICAgIG1h c20uYXRvbWljRmV0Y2hPcChzaXplLCBzeW5jLCBvcCwgQXRvbWljVmFsUmVnLCBhZGRyLCB0bXAs IEF0b21pY1RlbXAyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBBdG9taWNUZW1wMywgUmV0 dXJuUmVnKTsKLSsjZWxzZQotICAgICAgIG1hc20uYXRvbWljRmV0Y2hPcChzaXplLCBzeW5jLCBv cCwgQXRvbWljVmFsUmVnLCBhZGRyLCB0bXAsIFJldHVyblJlZyk7Ci0rI2VuZGlmCi0gICAgICAg YnJlYWs7Ci0gICAgIH0KLSAgICAgY2FzZSBTSVpFNjQ6IHsKLSAjaWYgZGVmaW5lZChKU182NEJJ VCkKLSAjICBpZiBkZWZpbmVkKEpTX0NPREVHRU5fWDY0KQotICAgICAgIFJlZ2lzdGVyNjQgdG1w ID0gb3AgPT0gQXRvbWljRmV0Y2hBZGRPcCB8fCBvcCA9PSBBdG9taWNGZXRjaFN1Yk9wCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgPyBSZWdpc3RlcjY0OjpJbnZhbGlkKCkKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6IEF0b21pY1RlbXA2NDsKLUBAIC02MzYsMTYgKzY4OSwxOSBA QCBzdGF0aWMgYm9vbCBVbmFsaWduZWRBY2Nlc3Nlc0FyZU9LKCkgewotICNlbmRpZgotICNpZiBk ZWZpbmVkKEpTX0NPREVHRU5fWDg2KSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fWDY0KQotICAgcmV0 dXJuIHRydWU7Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTSkKLSAgIHJldHVybiAhSGFz QWxpZ25tZW50RmF1bHQoKTsKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fQVJNNjQpCi0gICAv LyBUaGlzIGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlIGJ1dCBpdCdzIHRoZSBiZXN0IGd1ZXNzIHJp Z2h0IG5vdy4KLSAgIHJldHVybiB0cnVlOwotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2 NCkKLSsgIC8vIFdlJ2Qgc3VyZSBsaWtlIHRvIGF2b2lkIGl0LCBldmVuIHRob3VnaCBpdCB3b3Jr cy4KLSsgIHJldHVybiBmYWxzZTsKLSAjZWxzZQotICMgIGVycm9yICJVbnN1cHBvcnRlZCBwbGF0 Zm9ybSIKLSAjZW5kaWYKLSB9Ci0gCi0gdm9pZCBBdG9taWNNZW1jcHlEb3duVW5zeW5jaHJvbml6 ZWQodWludDhfdCogZGVzdCwgY29uc3QgdWludDhfdCogc3JjLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVfdCBuYnl0ZXMpIHsKLSAgIGNvbnN0IHVpbnQ4X3QqIGxp bSA9IHNyYyArIG5ieXRlczsKLWRpZmYgLS1naXQgYS9qcy9zcmMvanNhcGktdGVzdHMvdGVzdEpp dEFCSWNhbGxzLmNwcCBiL2pzL3NyYy9qc2FwaS10ZXN0cy90ZXN0Sml0QUJJY2FsbHMuY3BwCi1p bmRleCAwMmI2N2RhM2NhLi5iZDQ1Mzg5YjIxIDEwMDY0NAotLS0tIGEvanMvc3JjL2pzYXBpLXRl c3RzL3Rlc3RKaXRBQkljYWxscy5jcHAKLSsrKyBiL2pzL3NyYy9qc2FwaS10ZXN0cy90ZXN0Sml0 QUJJY2FsbHMuY3BwCi1AQCAtNjUzLDE2ICs2NTMsMTkgQEAgY2xhc3MgSml0QUJJQ2FsbCBmaW5h bCA6IHB1YmxpYyBKU0FQSVRlc3QsIHB1YmxpYyBEZWZpbmVDaGVja0FyZ3M8U2lnPiB7Ci0gICAg IFJlZ2lzdGVyIGJhc2UgPSByODsKLSAgICAgcmVncy50YWtlKGJhc2UpOwotICNlbGlmIGRlZmlu ZWQoSlNfQ09ERUdFTl9NSVBTMzIpCi0gICAgIFJlZ2lzdGVyIGJhc2UgPSB0MTsKLSAgICAgcmVn cy50YWtlKGJhc2UpOwotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0gICAgIFJl Z2lzdGVyIGJhc2UgPSB0MTsKLSAgICAgcmVncy50YWtlKGJhc2UpOwotKyNlbGlmIGRlZmluZWQo SlNfQ09ERUdFTl9QUEM2NCkKLSsgICAgUmVnaXN0ZXIgYmFzZSA9IHIwOwotKyAgICByZWdzLnRh a2UoYmFzZSk7Ci0gI2Vsc2UKLSAjICBlcnJvciAiVW5rbm93biBhcmNoaXRlY3R1cmUhIgotICNl bmRpZgotIAotICAgICBSZWdpc3RlciBzZXR1cCA9IHJlZ3MudGFrZUFueSgpOwotIAotICAgICB0 aGlzLT5nZW5lcmF0ZUNhbGxzKG1hc20sIGJhc2UsIHNldHVwKTsKLSAKLWRpZmYgLS1naXQgYS9q cy9zcmMvanNhcGktdGVzdHMvdGVzdHNKaXQuY3BwIGIvanMvc3JjL2pzYXBpLXRlc3RzL3Rlc3Rz Sml0LmNwcAotaW5kZXggMDY5ZWVmNDNmZS4uNzA1NjA5ZGYyYyAxMDA2NDQKLS0tLSBhL2pzL3Ny Yy9qc2FwaS10ZXN0cy90ZXN0c0ppdC5jcHAKLSsrKyBiL2pzL3NyYy9qc2FwaS10ZXN0cy90ZXN0 c0ppdC5jcHAKLUBAIC0yMCwxNiArMjAsMjEgQEAgdm9pZCBQcmVwYXJlSml0KGpzOjpqaXQ6Ok1h Y3JvQXNzZW1ibGVyJiBtYXNtKSB7Ci0gI2VuZGlmCi0gICBBbGxvY2F0YWJsZVJlZ2lzdGVyU2V0 IHJlZ3MoUmVnaXN0ZXJTZXQ6OkFsbCgpKTsKLSAgIExpdmVSZWdpc3RlclNldCBzYXZlKHJlZ3Mu YXNMaXZlU2V0KCkpOwotICNpZiBkZWZpbmVkKEpTX0NPREVHRU5fQVJNKQotICAgc2F2ZS5hZGQo anM6OmppdDo6ZDE1KTsKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikg fHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSAgIHNhdmUuYWRkKGpzOjpqaXQ6OnJhKTsK LSsjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rICAvLyBYWFgKLSsgIC8vIFB1c2gg dGhlIGxpbmsgcmVnaXN0ZXIgc2VwYXJhdGVseSwgc2luY2UgaXQncyBub3QgYSBHUFIuCi0rICBt YXNtLnhzX21mbHIoU2NyYXRjaFJlZ2lzdGVyKTsKLSsgIG1hc20uYXNfc3RkdShTY3JhdGNoUmVn aXN0ZXIsIFN0YWNrUG9pbnRlciwgLTgpOwotICNlbGlmIGRlZmluZWQoSlNfVVNFX0xJTktfUkVH SVNURVIpCi0gICBzYXZlLmFkZChqczo6aml0Ojpscik7Ci0gI2VuZGlmCi0gICBtYXNtLlB1c2hS ZWdzSW5NYXNrKHNhdmUpOwotIH0KLSAKLSAvLyBHZW5lcmF0ZSB0aGUgZXhpdCBwYXRoIG9mIHRo ZSBKSVQgY29kZSwgd2hpY2ggcmVzdG9yZXMgZXZlcnkgcmVnaXN0ZXIuIFRoZW4sCi0gLy8gbWFr ZSBpdCBleGVjdXRhYmxlIGFuZCBydW4gaXQuCi1AQCAtMzcsMjYgKzQyLDM1IEBAIGJvb2wgRXhl Y3V0ZUppdChKU0NvbnRleHQqIGN4LCBqczo6aml0OjpNYWNyb0Fzc2VtYmxlciYgbWFzbSkgewot ICAgdXNpbmcgbmFtZXNwYWNlIGpzOjpqaXQ7Ci0gICBBbGxvY2F0YWJsZVJlZ2lzdGVyU2V0IHJl Z3MoUmVnaXN0ZXJTZXQ6OkFsbCgpKTsKLSAgIExpdmVSZWdpc3RlclNldCBzYXZlKHJlZ3MuYXNM aXZlU2V0KCkpOwotICNpZiBkZWZpbmVkKEpTX0NPREVHRU5fQVJNKQotICAgc2F2ZS5hZGQoanM6 OmppdDo6ZDE1KTsKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwg ZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSAgIHNhdmUuYWRkKGpzOjpqaXQ6OnJhKTsKLSsj ZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rICAvLyBXZSBwb3AgYWZ0ZXIgbG9hZGlu ZyB0aGUgcmVncy4KLSAjZWxpZiBkZWZpbmVkKEpTX1VTRV9MSU5LX1JFR0lTVEVSKQotICAgc2F2 ZS5hZGQoanM6OmppdDo6bHIpOwotICNlbmRpZgotICAgbWFzbS5Qb3BSZWdzSW5NYXNrKHNhdmUp OwotICNpZiBkZWZpbmVkKEpTX0NPREVHRU5fQVJNNjQpCi0gICAvLyBSZXR1cm4gdXNpbmcgdGhl IHZhbHVlIHBvcHBlZCBpbnRvIHgzMC4KLSAgIG1hc20uYWJpcmV0KCk7Ci0gCi0gICAvLyBSZXNl dCBzdGFjayBwb2ludGVyLgotICAgbWFzbS5TZXRTdGFja1BvaW50ZXI2NChQc2V1ZG9TdGFja1Bv aW50ZXI2NCk7Ci0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKyAgLy8gWFhYCi0r ICAvLyBQb3AgTFIgYW5kIGV4aXQuCi0rICBtYXNtLmFzX2xkKFNjcmF0Y2hSZWdpc3RlciwgU3Rh Y2tQb2ludGVyLCAwKTsKLSsgIG1hc20ueHNfbXRscihTY3JhdGNoUmVnaXN0ZXIpOwotKyAgbWFz bS5hc19hZGRpKFN0YWNrUG9pbnRlciwgU3RhY2tQb2ludGVyLCA4KTsKLSsgIG1hc20uYXNfYmxy KCk7Ci0gI2Vsc2UKLSAgIC8vIEV4aXQgdGhlIEpJVC1lZCBjb2RlIHVzaW5nIHRoZSBBQkkgcmV0 dXJuIHN0eWxlLgotICAgbWFzbS5hYmlyZXQoKTsKLSAjZW5kaWYKLSAKLSAgIGlmIChtYXNtLm9v bSgpKSB7Ci0gICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLWRpZmYgLS1naXQgYS9qcy9zcmMvdXRp bC9Qb2lzb24uaCBiL2pzL3NyYy91dGlsL1BvaXNvbi5oCi1pbmRleCA4MzU2Y2ExZjAwLi41ZWVi MTExY2Y4IDEwMDY0NAotLS0tIGEvanMvc3JjL3V0aWwvUG9pc29uLmgKLSsrKyBiL2pzL3NyYy91 dGlsL1BvaXNvbi5oCi1AQCAtODgsMTYgKzg4LDE4IEBAIGNvbnN0IHVpbnQ4X3QgSlNfU0NPUEVf REFUQV9UUkFJTElOR19OQU1FU19QQVRURVJOID0gMHhDQzsKLSAgKi8KLSAjaWYgZGVmaW5lZChK U19DT0RFR0VOX1g4NikgfHwgZGVmaW5lZChKU19DT0RFR0VOX1g2NCkgfHwgXAotICAgICBkZWZp bmVkKEpTX0NPREVHRU5fTk9ORSkKLSAjICBkZWZpbmUgSlNfU1dFUFRfQ09ERV9QQVRURVJOIDB4 RUQgIC8vIElOIGluc3RydWN0aW9uLCBjcmFzaGVzIGluIHVzZXIgbW9kZS4KLSAjZWxpZiBkZWZp bmVkKEpTX0NPREVHRU5fQVJNKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fQVJNNjQpCi0gIyAgZGVm aW5lIEpTX1NXRVBUX0NPREVfUEFUVEVSTiAweEEzICAvLyB1bmRlZmluZWQgaW5zdHJ1Y3Rpb24K LSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5f TUlQUzY0KQotICMgIGRlZmluZSBKU19TV0VQVF9DT0RFX1BBVFRFUk4gMHgwMSAgLy8gdW5kZWZp bmVkIGluc3RydWN0aW9uCi0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KSB8fCBkZWZp bmVkKEpTX0NPREVHRU5fUFBDKQotKyMgIGRlZmluZSBKU19TV0VQVF9DT0RFX1BBVFRFUk4gMHgw MCAgLy8gYXJjaGl0ZWN0dXJhbGx5IGRlZmluZWQgYXMgaWxsZWdhbAotICNlbHNlCi0gIyAgZXJy b3IgIkpTX1NXRVBUX0NPREVfUEFUVEVSTiBub3QgZGVmaW5lZCBmb3IgdGhpcyBwbGF0Zm9ybSIK LSAjZW5kaWYKLSAKLSBlbnVtIGNsYXNzIE1lbUNoZWNrS2luZCA6IHVpbnQ4X3QgewotICAgLy8g TWFya3MgYSByZWdpb24gYXMgcG9pc29uZWQuIE1lbW9yeSBzYW5pdGl6ZXJzIGxpa2UgQVNhbiB3 aWxsIGNyYXNoIHdoZW4KLSAgIC8vIGFjY2Vzc2luZyBpdCAoYm90aCByZWFkcyBhbmQgd3JpdGVz KS4KLSAgIE1ha2VOb0FjY2VzcywKLWRpZmYgLS1naXQgYS9qcy9zcmMvd2FzbS9XYXNtQmFzZWxp bmVDb21waWxlLmNwcCBiL2pzL3NyYy93YXNtL1dhc21CYXNlbGluZUNvbXBpbGUuY3BwCi1pbmRl eCAxNTZmM2NiYmJhLi5hYjI5ZjQ0NzEzIDEwMDY0NAotLS0tIGEvanMvc3JjL3dhc20vV2FzbUJh c2VsaW5lQ29tcGlsZS5jcHAKLSsrKyBiL2pzL3NyYy93YXNtL1dhc21CYXNlbGluZUNvbXBpbGUu Y3BwCi1AQCAtMTM4LDE2ICsxMzgsMTkgQEAKLSAjaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMz MikKLSAjICBpbmNsdWRlICJqaXQvbWlwcy1zaGFyZWQvQXNzZW1ibGVyLW1pcHMtc2hhcmVkLmgi Ci0gIyAgaW5jbHVkZSAiaml0L21pcHMzMi9Bc3NlbWJsZXItbWlwczMyLmgiCi0gI2VuZGlmCi0g I2lmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0gIyAgaW5jbHVkZSAiaml0L21pcHMtc2hh cmVkL0Fzc2VtYmxlci1taXBzLXNoYXJlZC5oIgotICMgIGluY2x1ZGUgImppdC9taXBzNjQvQXNz ZW1ibGVyLW1pcHM2NC5oIgotICNlbmRpZgotKyNpZiBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQp Ci0rIyAgaW5jbHVkZSAiaml0L3BwYzY0L0Fzc2VtYmxlci1wcGM2NC5oIgotKyNlbmRpZgotICNp bmNsdWRlICJqcy9TY2FsYXJUeXBlLmgiICAvLyBqczo6U2NhbGFyOjpUeXBlCi0gI2luY2x1ZGUg InV0aWwvTWVtb3J5LmgiCi0gI2luY2x1ZGUgIndhc20vVHlwZWRPYmplY3QuaCIKLSAjaW5jbHVk ZSAid2FzbS9XYXNtR0MuaCIKLSAjaW5jbHVkZSAid2FzbS9XYXNtR2VuZXJhdG9yLmgiCi0gI2lu Y2x1ZGUgIndhc20vV2FzbUluc3RhbmNlLmgiCi0gI2luY2x1ZGUgIndhc20vV2FzbU9wSXRlci5o IgotICNpbmNsdWRlICJ3YXNtL1dhc21TaWduYWxIYW5kbGVycy5oIgotQEAgLTI4OCwxNiArMjkx LDIzIEBAIHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXIgUmFiYWxkclNjcmF0Y2hJMzIgPSBDYWxs VGVtcFJlZzI7Ci0gI2VuZGlmCi0gCi0gI2lmZGVmIFJBQkFMRFJfU0NSQVRDSF9GMzJfQUxJQVNF U19GNjQKLSAjICBpZiAhZGVmaW5lZChSQUJBTERSX1NDUkFUQ0hfRjMyKSB8fCAhZGVmaW5lZChS QUJBTERSX1NDUkFUQ0hfRjY0KQotICMgICAgZXJyb3IgIkJhZCBjb25maWd1cmF0aW9uIgotICMg IGVuZGlmCi0gI2VuZGlmCi0gCi0rI2lmZGVmIEpTX0NPREVHRU5fUFBDNjQKLSsjICBkZWZpbmUg UkFCQUxEUl9TQ1JBVENIX0kzMgotKy8vIFdlIGNhbiB1c2UgYWxsIHRoZSBhcmdyZWdzIHVwLCBh bmQgd2UgZG9uJ3Qgd2FudCB0aGUgSklUIHVzaW5nIG91ciBvd24KLSsvLyBwcml2YXRlIHNjcmF0 Y2ggcmVnaXN0ZXJzLCBzbyB0aGlzIGlzIHRoZSBiZXN0IG9wdGlvbiBvZiB3aGF0J3MgbGVmdC4K LStzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVyIFJhYmFsZHJTY3JhdGNoSTMyID0gcjE5OwotKyNl bmRpZgotKwotIHRlbXBsYXRlIDxNSVJUeXBlIHQ+Ci0gc3RydWN0IFJlZ1R5cGVPZiB7Ci0gI2lm ZGVmIEVOQUJMRV9XQVNNX1NJTUQKLSAgIHN0YXRpY19hc3NlcnQodCA9PSBNSVJUeXBlOjpGbG9h dDMyIHx8IHQgPT0gTUlSVHlwZTo6RG91YmxlIHx8Ci0gICAgICAgICAgICAgICAgICAgICB0ID09 IE1JUlR5cGU6OlNpbWQxMjgsCi0gICAgICAgICAgICAgICAgICJGbG9hdCBtYXNrIHR5cGUiKTsK LSAjZWxzZQotICAgc3RhdGljX2Fzc2VydCh0ID09IE1JUlR5cGU6OkZsb2F0MzIgfHwgdCA9PSBN SVJUeXBlOjpEb3VibGUsCi1AQCAtNTUwLDE2ICs1NjAsMTggQEAgc3RydWN0IFNwZWNpZmljUmVn cyB7fTsKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKQotIHN0cnVjdCBTcGVjaWZp Y1JlZ3MgewotICAgUmVnSTY0IGFiaVJldHVyblJlZ0k2NDsKLSAKLSAgIFNwZWNpZmljUmVncygp IDogYWJpUmV0dXJuUmVnSTY0KFJldHVyblJlZzY0KSB7fQotIH07Ci0gI2VsaWYgZGVmaW5lZChK U19DT0RFR0VOX01JUFM2NCkKLSBzdHJ1Y3QgU3BlY2lmaWNSZWdzIHt9OwotKyNlbGlmIGRlZmlu ZWQoSlNfQ09ERUdFTl9QUEM2NCkKLStzdHJ1Y3QgU3BlY2lmaWNSZWdzIHt9OwotICNlbHNlCi0g c3RydWN0IFNwZWNpZmljUmVncyB7Ci0gIyAgaWZuZGVmIEpTXzY0QklUCi0gICBSZWdJNjQgYWJp UmV0dXJuUmVnSTY0OwotICMgIGVuZGlmCi0gCi0gICBTcGVjaWZpY1JlZ3MoKSB7IE1PWl9DUkFT SCgiQmFzZUNvbXBpbGVyIHBvcnRpbmcgaW50ZXJmYWNlOiBTcGVjaWZpY1JlZ3MiKTsgfQotIH07 Ci1AQCAtNjAzOCwxNiArNjA1MCwyNSBAQCBjbGFzcyBCYXNlQ29tcGlsZXIgZmluYWwgOiBwdWJs aWMgQmFzZUNvbXBpbGVySW50ZXJmYWNlIHsKLSAgICAgICAgIEFCSUFyZyBhcmdMb2MgPSBjYWxs LT5hYmkubmV4dChNSVJUeXBlOjpJbnQzMik7Ci0gICAgICAgICBpZiAoYXJnTG9jLmtpbmQoKSA9 PSBBQklBcmc6OlN0YWNrKSB7Ci0gICAgICAgICAgIFNjcmF0Y2hJMzIgc2NyYXRjaCgqdGhpcyk7 Ci0gICAgICAgICAgIGxvYWRJMzIoYXJnLCBzY3JhdGNoKTsKLSAgICAgICAgICAgbWFzbS5zdG9y ZTMyKHNjcmF0Y2gsIEFkZHJlc3MobWFzbS5nZXRTdGFja1BvaW50ZXIoKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnTG9jLm9mZnNldEZyb21BcmdCYXNlKCkp KTsKLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgIGxvYWRJMzIoYXJnLCBSZWdJMzIoYXJn TG9jLmdwcigpKSk7Ci0rI2lmIEpTX0NPREVHRU5fUFBDNjQKLSsgICAgICAgICAgLy8gSWYgdGhp cyBpcyBhIGNhbGwgdG8gY29tcGlsZWQgQysrLCB3ZSBtdXN0IGVuc3VyZSB0aGF0IHRoZQotKyAg ICAgICAgICAvLyB1cHBlciAzMiBiaXRzIGFyZSBjbGVhcjogYWRkaSBjYW4gc2lnbi1leHRlbmQs IHdoaWNoIHlpZWxkcwotKyAgICAgICAgICAvLyBkaWZmaWN1bHQtdG8tZGlhZ25vc2UgYnVncyB3 aGVuIHRoZSBmdW5jdGlvbiBleHBlY3RzIGEgdWludDMyX3QKLSsgICAgICAgICAgLy8gYnV0IHRo ZSByZWdpc3RlciBpdCBnZXRzIGhhcyBhIHJlc2lkdWFsIDY0LWJpdCB2YWx1ZS4KLSsgICAgICAg ICAgaWYgKGNhbGwtPnVzZXNTeXN0ZW1BYmkpIHsKLSsgICAgICAgICAgICBtYXNtLmFzX3JsZGlj bChhcmdMb2MuZ3ByKCksIGFyZ0xvYy5ncHIoKSwgMCwgMzIpOwotKyAgICAgICAgICB9Ci0rI2Vu ZGlmCi0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgICB9Ci0gICAgICAgY2FzZSBW YWxUeXBlOjpJNjQ6IHsKLSAgICAgICAgIEFCSUFyZyBhcmdMb2MgPSBjYWxsLT5hYmkubmV4dChN SVJUeXBlOjpJbnQ2NCk7Ci0gICAgICAgICBpZiAoYXJnTG9jLmtpbmQoKSA9PSBBQklBcmc6OlN0 YWNrKSB7Ci0gICAgICAgICAgIFNjcmF0Y2hJMzIgc2NyYXRjaCgqdGhpcyk7Ci0gI2lmZGVmIEpT X1BVTkJPWDY0Ci1AQCAtNjMyNCwxNyArNjM0NSwxOCBAQCBjbGFzcyBCYXNlQ29tcGlsZXIgZmlu YWwgOiBwdWJsaWMgQmFzZUNvbXBpbGVySW50ZXJmYWNlIHsKLSAKLSAgICAgLy8gQ29tcHV0ZSB0 aGUgYWJzb2x1dGUgdGFibGUgYmFzZSBwb2ludGVyIGludG8gYHNjcmF0Y2hgLCBvZmZzZXQgYnkg OAotICAgICAvLyB0byBhY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0IG1hX21vdiByZWFkIFBDKzgu Ci0gICAgIG1hc20ubWFfc3ViKEltbTMyKG9mZnNldCArIDgpLCBzY3JhdGNoLCBhcm1fc2NyYXRj aCk7Ci0gCi0gICAgIC8vIEp1bXAgaW5kaXJlY3QgdmlhIHRhYmxlIGVsZW1lbnQuCi0gICAgIG1h c20ubWFfbGRyKERUUkFkZHIoc2NyYXRjaCwgRHRyUmVnSW1tU2hpZnQoc3dpdGNoVmFsdWUsIExT TCwgMikpLCBwYywKLSAgICAgICAgICAgICAgICAgT2Zmc2V0LCBBc3NlbWJsZXI6OkFsd2F5cyk7 Ci0tI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VO X01JUFM2NCkKLSsjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpT X0NPREVHRU5fTUlQUzY0KSB8fCBcCi0rICAgICAgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQot ICAgICBTY3JhdGNoSTMyIHNjcmF0Y2goKnRoaXMpOwotICAgICBDb2RlTGFiZWwgdGFibGVDbDsK LSAKLSAgICAgbWFzbS5tYV9saShzY3JhdGNoLCAmdGFibGVDbCk7Ci0gCi0gICAgIHRhYmxlQ2wu dGFyZ2V0KCktPmJpbmQodGhlVGFibGUtPm9mZnNldCgpKTsKLSAgICAgbWFzbS5hZGRDb2RlTGFi ZWwodGFibGVDbCk7Ci0gCi1AQCAtNjQ5MywxNiArNjUxNSwyMiBAQCBjbGFzcyBCYXNlQ29tcGls ZXIgZmluYWwgOiBwdWJsaWMgQmFzZUNvbXBpbGVySW50ZXJmYWNlIHsKLSAjICBlbGlmIGRlZmlu ZWQoSlNfQ09ERUdFTl9BUk02NCkKLSAgICAgQVJNUmVnaXN0ZXIgc2Qoc3JjRGVzdC5yZWcsIDY0 KTsKLSAgICAgQVJNUmVnaXN0ZXIgcihyaHMucmVnLCA2NCk7Ci0gICAgIGlmIChpc1Vuc2lnbmVk KSB7Ci0gICAgICAgbWFzbS5VZGl2KHNkLCBzZCwgcik7Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAg bWFzbS5TZGl2KHNkLCBzZCwgcik7Ci0gICAgIH0KLSsjICBlbGlmIGRlZmluZWQoSlNfQ09ERUdF Tl9QUEM2NCkKLSsgICBpZiAoaXNVbnNpZ25lZCkgewotKyAgICAgbWFzbS5hc19kaXZkdShzcmNE ZXN0LnJlZywgc3JjRGVzdC5yZWcsIHJocy5yZWcpOwotKyAgIH0gZWxzZSB7Ci0rICAgICBtYXNt LmFzX2RpdmQoc3JjRGVzdC5yZWcsIHNyY0Rlc3QucmVnLCByaHMucmVnKTsKLSsgICB9Ci0gIyAg ZWxzZQotICAgICBNT1pfQ1JBU0goIkJhc2VDb21waWxlciBwbGF0Zm9ybSBob29rOiBxdW90aWVu dEk2NCIpOwotICMgIGVuZGlmCi0gICAgIG1hc20uYmluZCgmZG9uZSk7Ci0gICB9Ci0gCi0gICB2 b2lkIHJlbWFpbmRlckk2NChSZWdJNjQgcmhzLCBSZWdJNjQgc3JjRGVzdCwgUmVnSTY0IHJlc2Vy dmVkLAotICAgICAgICAgICAgICAgICAgICAgSXNVbnNpZ25lZCBpc1Vuc2lnbmVkLCBib29sIGlz Q29uc3QsIGludDY0X3QgYykgewotQEAgLTY1NDQsMjkgKzY1NzIsNDYgQEAgY2xhc3MgQmFzZUNv bXBpbGVyIGZpbmFsIDogcHVibGljIEJhc2VDb21waWxlckludGVyZmFjZSB7Ci0gICAgIEFSTVJl Z2lzdGVyIHQodGVtcCwgNjQpOwotICAgICBpZiAoaXNVbnNpZ25lZCkgewotICAgICAgIG1hc20u VWRpdih0LCBzZCwgcik7Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgbWFzbS5TZGl2KHQsIHNkLCBy KTsKLSAgICAgfQotICAgICBtYXNtLk11bCh0LCB0LCByKTsKLSAgICAgbWFzbS5TdWIoc2QsIHNk LCB0KTsKLSsjICBlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsgICAgaWYgKGpzOjpq aXQ6Okhhc1BQQ0lTQTMoKSkgewotKyAgICAgIGlmIChpc1Vuc2lnbmVkKSB7Ci0rICAgICAgICBt YXNtLmFzX21vZHVkKHNyY0Rlc3QucmVnLCBzcmNEZXN0LnJlZywgcmhzLnJlZyk7Ci0rICAgICAg fSBlbHNlIHsKLSsgICAgICAgIG1hc20uYXNfbW9kc2Qoc3JjRGVzdC5yZWcsIHNyY0Rlc3QucmVn LCByaHMucmVnKTsKLSsgICAgICB9Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgU2NyYXRjaEkzMiB0 ZW1wKCp0aGlzKTsKLSsgICAgICBpZiAoaXNVbnNpZ25lZCkgewotKyAgICAgICAgbWFzbS5hc19k aXZkdSh0ZW1wLCBzcmNEZXN0LnJlZywgcmhzLnJlZyk7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAg ICAgIG1hc20uYXNfZGl2ZCh0ZW1wLCBzcmNEZXN0LnJlZywgcmhzLnJlZyk7Ci0rICAgICAgfQot KyAgICAgIG1hc20uYXNfbXVsbGQodGVtcCwgdGVtcCwgcmhzLnJlZyk7Ci0rICAgICAgbWFzbS5h c19zdWJmKHNyY0Rlc3QucmVnLCB0ZW1wLCBzcmNEZXN0LnJlZyk7IC8vIFQgPSBCIC0gQQotKyAg ICB9Ci0gIyAgZWxzZQotICAgICBNT1pfQ1JBU0goIkJhc2VDb21waWxlciBwbGF0Zm9ybSBob29r OiByZW1haW5kZXJJNjQiKTsKLSAjICBlbmRpZgotICAgICBtYXNtLmJpbmQoJmRvbmUpOwotICAg fQotICNlbmRpZiAgLy8gUkFCQUxEUl9JTlRfRElWX0k2NF9DQUxMT1VUCi0gCi0gICBSZWdJMzIg bmVlZFJvdGF0ZTY0VGVtcCgpIHsKLSAjaWYgZGVmaW5lZChKU19DT0RFR0VOX1g4NikKLSAgICAg cmV0dXJuIG5lZWRJMzIoKTsKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fWDY0KSB8fCBkZWZp bmVkKEpTX0NPREVHRU5fQVJNKSB8fCAgICBcCi0gICAgIGRlZmluZWQoSlNfQ09ERUdFTl9BUk02 NCkgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgXAotLSAgICBkZWZpbmVkKEpTX0NP REVHRU5fTUlQUzY0KQotKyAgICBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KSB8fCBkZWZpbmVk KEpTX0NPREVHRU5fUFBDNjQpCi0gICAgIHJldHVybiBSZWdJMzI6OkludmFsaWQoKTsKLSAjZWxz ZQotICAgICBNT1pfQ1JBU0goIkJhc2VDb21waWxlciBwbGF0Zm9ybSBob29rOiBuZWVkUm90YXRl NjRUZW1wIik7Ci0gI2VuZGlmCi0gICB9Ci0gCi0gICBjbGFzcyBPdXRPZkxpbmVUcnVuY2F0ZUNo ZWNrRjMyT3JGNjRUb0kzMiA6IHB1YmxpYyBPdXRPZkxpbmVDb2RlIHsKLSAgICAgQW55UmVnIHNy YzsKLUBAIC02ODY5LDMwICs2OTE0LDM1IEBAIGNsYXNzIEJhc2VDb21waWxlciBmaW5hbCA6IHB1 YmxpYyBCYXNlQ29tcGlsZXJJbnRlcmZhY2UgewotICAgICAgICAgUmVnSTY0IHB0cjY0ID0gZnJv bUkzMihwdHIpOwotIAotICAgICAgICAgLy8gSW4gcHJpbmNpcGxlIHRoZXJlIG1heSBiZSBub24t emVybyBiaXRzIGluIHRoZSB1cHBlciBiaXRzIG9mIHRoZQotICAgICAgICAgLy8gcmVnaXN0ZXI7 IGNsZWFyIHRoZW0uCi0gIyAgaWYgZGVmaW5lZChKU19DT0RFR0VOX1g2NCkgfHwgZGVmaW5lZChK U19DT0RFR0VOX0FSTTY0KQotICAgICAgICAgLy8gVGhlIGNhbm9uaWNhbCB2YWx1ZSBpcyB6ZXJv LWV4dGVuZGVkIChzZWUgY29tbWVudCBibG9jayAiNjQtYml0IEdQUnMKLSAgICAgICAgIC8vIGNh cnJ5aW5nIDMyLWJpdCB2YWx1ZXMiIGluIE1hY3JvQXNzZW1ibGVyLmgpOyB3ZSBhbHJlYWR5IGhh dmUgdGhhdC4KLSAgICAgICAgIG1hc20uYXNzZXJ0Q2Fub25pY2FsSW50MzIocHRyKTsKLSsjICBl bGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsgICAgICAgIC8vIFRoZSBjYW5vbmljYWwg dmFsdWUgaXMgc2lnbi1leHRlbmRlZC4KLSsgICAgICAgIG1hc20uYXNfcmxkaWNsKHB0ciwgcHRy LCAwLCAzMik7IC8vICJjbHJsZGkiCi0gIyAgZWxzZQotICAgICAgICAgTU9aX0NSQVNIKCJQbGF0 Zm9ybSBjb2RlIG5lZWRlZCBoZXJlIik7Ci0gIyAgZW5kaWYKLSAKLSAgICAgICAgIC8vIEFueSBT cGVjdHJlIG1pdGlnYXRpb24gd2lsbCBhcHBlYXIgdG8gdXBkYXRlIHRoZSBwdHI2NCByZWdpc3Rl ci4KLSAgICAgICAgIG1hc20ud2FzbUJvdW5kc0NoZWNrNjQoCi0gICAgICAgICAgICAgQXNzZW1i bGVyOjpCZWxvdywgcHRyNjQsCi0gICAgICAgICAgICAgQWRkcmVzcyh0bHMsIG9mZnNldG9mKFRs c0RhdGEsIGJvdW5kc0NoZWNrTGltaXQpKSwgJm9rKTsKLSAKLSAgICAgICAgIC8vIFJlc3RvcmUg dGhlIHZhbHVlIHRvIHRoZSBjYW5vbmljYWwgZm9ybSBmb3IgYSAzMi1iaXQgdmFsdWUgaW4gYQot ICAgICAgICAgLy8gNjQtYml0IHJlZ2lzdGVyIGFuZC9vciB0aGUgYXBwcm9wcmlhdGUgZm9ybSBm b3IgZnVydGhlciB1c2UgaW4gdGhlCi0gICAgICAgICAvLyBpbmRleGluZyBpbnN0cnVjdGlvbi4K LSAjICBpZiBkZWZpbmVkKEpTX0NPREVHRU5fWDY0KSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fQVJN NjQpCi0gICAgICAgICAvLyBUaGUgY2Fub25pY2FsIHZhbHVlIGlzIHplcm8tZXh0ZW5kZWQ7IHdl IGFscmVhZHkgaGF2ZSB0aGF0LgotKyMgIGVsaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQot KyAgICAgICAgLy8gTGVhdmUgaXQgemVyby1leHRlbmRlZC4KLSAjICBlbHNlCi0gICAgICAgICBN T1pfQ1JBU0goIlBsYXRmb3JtIGNvZGUgbmVlZGVkIGhlcmUiKTsKLSAjICBlbmRpZgotICAgICAg IH0gZWxzZSB7Ci0gICAgICAgICBtYXNtLndhc21Cb3VuZHNDaGVjazMyKAotICAgICAgICAgICAg IEFzc2VtYmxlcjo6QmVsb3csIHB0ciwKLSAgICAgICAgICAgICBBZGRyZXNzKHRscywgb2Zmc2V0 b2YoVGxzRGF0YSwgYm91bmRzQ2hlY2tMaW1pdCkpLCAmb2spOwotICAgICAgIH0KLUBAIC02OTAz LDE3ICs2OTUzLDE3IEBAIGNsYXNzIEJhc2VDb21waWxlciBmaW5hbCA6IHB1YmxpYyBCYXNlQ29t cGlsZXJJbnRlcmZhY2UgewotICNlbmRpZgotICAgICAgIG1hc20ud2FzbVRyYXAoVHJhcDo6T3V0 T2ZCb3VuZHMsIGJ5dGVjb2RlT2Zmc2V0KCkpOwotICAgICAgIG1hc20uYmluZCgmb2spOwotICAg ICB9Ci0gICB9Ci0gCi0gI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9YNjQpIHx8IGRlZmluZWQoSlNf Q09ERUdFTl9BUk0pIHx8ICAgICAgXAotICAgICBkZWZpbmVkKEpTX0NPREVHRU5fQVJNNjQpIHx8 IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IFwKLS0gICAgZGVmaW5lZChKU19DT0RFR0VO X01JUFM2NCkKLSsgICAgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkgfHwgZGVmaW5lZChKU19D T0RFR0VOX1BQQzY0KQotICAgQmFzZUluZGV4IHByZXBhcmVBdG9taWNNZW1vcnlBY2Nlc3MoTWVt b3J5QWNjZXNzRGVzYyogYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQWNjZXNzQ2hlY2sqIGNoZWNrLCBSZWdJMzIgdGxzLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUmVnSTMyIHB0cikgewotICAgICBNT1pfQVNTRVJUKG5lZWRU bHNGb3JBY2Nlc3MoKmNoZWNrKSA9PSB0bHMuaXNWYWxpZCgpKTsKLSAgICAgcHJlcGFyZU1lbW9y eUFjY2VzcyhhY2Nlc3MsIGNoZWNrLCB0bHMsIHB0cik7Ci0gICAgIHJldHVybiBCYXNlSW5kZXgo SGVhcFJlZywgcHRyLCBUaW1lc09uZSwgYWNjZXNzLT5vZmZzZXQoKSk7Ci0gICB9Ci0gI2VsaWYg ZGVmaW5lZChKU19DT0RFR0VOX1g4NikKLUBAIC03MDAxLDE3ICs3MDUxLDE5IEBAIGNsYXNzIEJh c2VDb21waWxlciBmaW5hbCA6IHB1YmxpYyBCYXNlQ29tcGlsZXJJbnRlcmZhY2UgewotICAgICBp ZiAoZGVzdC50YWcgPT0gQW55UmVnOjpJNjQpIHsKLSAgICAgICBNT1pfQVNTRVJUKGRlc3QuaTY0 KCkgPT0gc3BlY2lmaWNfLmFiaVJldHVyblJlZ0k2NCk7Ci0gICAgICAgbWFzbS53YXNtTG9hZEk2 NCgqYWNjZXNzLCBzcmNBZGRyLCBkZXN0Lmk2NCgpKTsKLSAgICAgfSBlbHNlIHsKLSAgICAgICAv LyBGb3IgOCBiaXQgbG9hZHMsIHRoaXMgd2lsbCBnZW5lcmF0ZSBtb3ZzYmwgb3IgbW92emJsLCBz bwotICAgICAgIC8vIHRoZXJlJ3Mgbm8gY29uc3RyYWludCBvbiB3aGF0IHRoZSBvdXRwdXQgcmVn aXN0ZXIgbWF5IGJlLgotICAgICAgIG1hc20ud2FzbUxvYWQoKmFjY2Vzcywgc3JjQWRkciwgZGVz dC5hbnkoKSk7Ci0gICAgIH0KLS0jZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBk ZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBT MzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpIHx8IFwKLSsgICAgICBkZWZpbmVkKEpT X0NPREVHRU5fUFBDNjQpCi0rLy8gWFhYOiBXZSBkb24ndCByZWFsbHkgbmVlZCB0aGlzIGFueW1v cmUKLSAgICAgaWYgKElzVW5hbGlnbmVkKCphY2Nlc3MpKSB7Ci0gICAgICAgc3dpdGNoIChkZXN0 LnRhZykgewotICAgICAgICAgY2FzZSBBbnlSZWc6Okk2NDoKLSAgICAgICAgICAgbWFzbS53YXNt VW5hbGlnbmVkTG9hZEk2NCgqYWNjZXNzLCBIZWFwUmVnLCBwdHIsIHB0ciwgZGVzdC5pNjQoKSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wMSk7Ci0gICAgICAgICAg IGJyZWFrOwotICAgICAgICAgY2FzZSBBbnlSZWc6OkYzMjoKLSAgICAgICAgICAgbWFzbS53YXNt VW5hbGlnbmVkTG9hZEZQKCphY2Nlc3MsIEhlYXBSZWcsIHB0ciwgcHRyLCBkZXN0LmYzMigpLAot QEAgLTcxMDIsMTcgKzcxNTQsMTkgQEAgY2xhc3MgQmFzZUNvbXBpbGVyIGZpbmFsIDogcHVibGlj IEJhc2VDb21waWxlckludGVyZmFjZSB7Ci0gICAgIE1PWl9BU1NFUlQodGVtcC5pc0ludmFsaWQo KSk7Ci0gICAgIGlmIChhY2Nlc3MtPnR5cGUoKSA9PSBTY2FsYXI6OkludDY0KSB7Ci0gICAgICAg bWFzbS53YXNtU3RvcmVJNjQoKmFjY2Vzcywgc3JjLmk2NCgpLCBIZWFwUmVnLCBwdHIsIHB0cik7 Ci0gICAgIH0gZWxzZSBpZiAoc3JjLnRhZyA9PSBBbnlSZWc6Okk2NCkgewotICAgICAgIG1hc20u d2FzbVN0b3JlKCphY2Nlc3MsIEFueVJlZ2lzdGVyKHNyYy5pNjQoKS5sb3cpLCBIZWFwUmVnLCBw dHIsIHB0cik7Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgbWFzbS53YXNtU3RvcmUoKmFjY2Vzcywg c3JjLmFueSgpLCBIZWFwUmVnLCBwdHIsIHB0cik7Ci0gICAgIH0KLS0jZWxpZiBkZWZpbmVkKEpT X0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQotKyNlbGlmIGRl ZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpIHx8 IFwKLSsgICAgICBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rLy8gWFhYOiBXZSBkb24ndCBy ZWFsbHkgbmVlZCB0aGlzIGFueW1vcmUKLSAgICAgaWYgKElzVW5hbGlnbmVkKCphY2Nlc3MpKSB7 Ci0gICAgICAgc3dpdGNoIChzcmMudGFnKSB7Ci0gICAgICAgICBjYXNlIEFueVJlZzo6STY0Ogot ICAgICAgICAgICBtYXNtLndhc21VbmFsaWduZWRTdG9yZUk2NCgqYWNjZXNzLCBzcmMuaTY0KCks IEhlYXBSZWcsIHB0ciwgcHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0ZW1wKTsKLSAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBjYXNlIEFueVJlZzo6RjMyOgot ICAgICAgICAgICBtYXNtLndhc21VbmFsaWduZWRTdG9yZUZQKCphY2Nlc3MsIHNyYy5mMzIoKSwg SGVhcFJlZywgcHRyLCBwdHIsCi1AQCAtNzE2MCwxNyArNzIxNCwxOCBAQCBjbGFzcyBCYXNlQ29t cGlsZXIgZmluYWwgOiBwdWJsaWMgQmFzZUNvbXBpbGVySW50ZXJmYWNlIHsKLSAgICAgfQotICAg ICB2b2lkIG1heWJlRnJlZShCYXNlQ29tcGlsZXIqIGJjKSB7Ci0gICAgICAgZm9yIChzaXplX3Qg aSA9IDA7IGkgPCBDb3VudDsgKytpKSB7Ci0gICAgICAgICBiYy0+bWF5YmVGcmVlKHRoaXMtPm9w ZXJhdG9yW10oaSkpOwotICAgICAgIH0KLSAgICAgfQotICAgfTsKLSAKLS0jaWYgZGVmaW5lZChK U19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSsjaWYgZGVm aW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkgfHwg XAotKyAgICBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0gICB1c2luZyBBdG9taWNSTVczMlRl bXBzID0gQXRvbWljMzJUZW1wczwzPjsKLSAjZWxzZQotICAgdXNpbmcgQXRvbWljUk1XMzJUZW1w cyA9IEF0b21pYzMyVGVtcHM8MT47Ci0gI2VuZGlmCi0gCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUg VD4KLSAgIHZvaWQgYXRvbWljUk1XMzIoY29uc3QgTWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBU IHNyY0FkZHIsIEF0b21pY09wIG9wLAotICAgICAgICAgICAgICAgICAgICBSZWdJMzIgcnYsIFJl Z0kzMiByZCwgY29uc3QgQXRvbWljUk1XMzJUZW1wcyYgdGVtcHMpIHsKLUBAIC03MTg3LDE3ICs3 MjQyLDE4IEBAIGNsYXNzIEJhc2VDb21waWxlciBmaW5hbCA6IHB1YmxpYyBCYXNlQ29tcGlsZXJJ bnRlcmZhY2UgewotICAgICAgICAgfQotICAgICAgICAgbWFzbS53YXNtQXRvbWljRmV0Y2hPcChh Y2Nlc3MsIG9wLCBydiwgc3JjQWRkciwgdGVtcCwgcmQpOwotICAgICAgICAgYnJlYWs7Ci0gICAg ICAgfQotICNlbmRpZgotICAgICAgIGNhc2UgU2NhbGFyOjpVaW50MTY6Ci0gICAgICAgY2FzZSBT Y2FsYXI6OkludDMyOgotICAgICAgIGNhc2UgU2NhbGFyOjpVaW50MzI6Ci0tI2lmIGRlZmluZWQo SlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0rI2lmIGRl ZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpIHx8 IFwKLSsgICAgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotICAgICAgICAgbWFzbS53YXNtQXRv bWljRmV0Y2hPcChhY2Nlc3MsIG9wLCBydiwgc3JjQWRkciwgdGVtcHNbMF0sIHRlbXBzWzFdLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wc1syXSwgcmQpOwotICNlbHNlCi0g ICAgICAgICBtYXNtLndhc21BdG9taWNGZXRjaE9wKGFjY2Vzcywgb3AsIHJ2LCBzcmNBZGRyLCB0 ZW1wc1swXSwgcmQpOwotICNlbmRpZgotICAgICAgICAgYnJlYWs7Ci0gICAgICAgZGVmYXVsdDog ewotICAgICAgICAgTU9aX0NSQVNIKCJCYWQgdHlwZSBmb3IgYXRvbWljIG9wZXJhdGlvbiIpOwot QEAgLTcyMDgsMTcgKzcyNjQsMTggQEAgY2xhc3MgQmFzZUNvbXBpbGVyIGZpbmFsIDogcHVibGlj IEJhc2VDb21waWxlckludGVyZmFjZSB7Ci0gICAvLyBPbiB4ODYsIFYgaXMgQWRkcmVzcy4gIE9u IG90aGVyIHBsYXRmb3JtcywgaXQgaXMgUmVnaXN0ZXI2NC4KLSAgIC8vIFQgaXMgQmFzZUluZGV4 IG9yIEFkZHJlc3MuCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVj4KLSAgIHZv aWQgYXRvbWljUk1XNjQoY29uc3QgTWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBjb25zdCBUJiBz cmNBZGRyLAotICAgICAgICAgICAgICAgICAgICBBdG9taWNPcCBvcCwgViB2YWx1ZSwgUmVnaXN0 ZXI2NCB0ZW1wLCBSZWdpc3RlcjY0IHJkKSB7Ci0gICAgIG1hc20ud2FzbUF0b21pY0ZldGNoT3A2 NChhY2Nlc3MsIG9wLCB2YWx1ZSwgc3JjQWRkciwgdGVtcCwgcmQpOwotICAgfQotIAotLSNpZiBk ZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQot KyNpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQ UzY0KSB8fCBcCi0rICAgIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSAgIHVzaW5nIEF0b21p Y0NtcFhjaGczMlRlbXBzID0gQXRvbWljMzJUZW1wczwzPjsKLSAjZWxzZQotICAgdXNpbmcgQXRv bWljQ21wWGNoZzMyVGVtcHMgPSBBdG9taWMzMlRlbXBzPDA+OwotICNlbmRpZgotIAotICAgdGVt cGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICB2b2lkIGF0b21pY0NtcFhjaGczMihjb25zdCBNZW1vcnlB Y2Nlc3NEZXNjJiBhY2Nlc3MsIFQgc3JjQWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJl Z0kzMiByZXhwZWN0LCBSZWdJMzIgcm5ldywgUmVnSTMyIHJkLAotQEAgLTcyMzYsMjkgKzcyOTMs MzEgQEAgY2xhc3MgQmFzZUNvbXBpbGVyIGZpbmFsIDogcHVibGljIEJhc2VDb21waWxlckludGVy ZmFjZSB7Ci0gICAgICAgICB9Ci0gICAgICAgICBtYXNtLndhc21Db21wYXJlRXhjaGFuZ2UoYWNj ZXNzLCBzcmNBZGRyLCByZXhwZWN0LCBybmV3LCByZCk7Ci0gICAgICAgICBicmVhazsKLSAgICAg ICB9Ci0gI2VuZGlmCi0gICAgICAgY2FzZSBTY2FsYXI6OlVpbnQxNjoKLSAgICAgICBjYXNlIFNj YWxhcjo6SW50MzI6Ci0gICAgICAgY2FzZSBTY2FsYXI6OlVpbnQzMjoKLS0jaWYgZGVmaW5lZChK U19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSsjaWYgZGVm aW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkgfHwg XAotKyAgICBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0gICAgICAgICBtYXNtLndhc21Db21w YXJlRXhjaGFuZ2UoYWNjZXNzLCBzcmNBZGRyLCByZXhwZWN0LCBybmV3LCB0ZW1wc1swXSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wc1sxXSwgdGVtcHNbMl0sIHJkKTsK LSAjZWxzZQotICAgICAgICAgbWFzbS53YXNtQ29tcGFyZUV4Y2hhbmdlKGFjY2Vzcywgc3JjQWRk ciwgcmV4cGVjdCwgcm5ldywgcmQpOwotICNlbmRpZgotICAgICAgICAgYnJlYWs7Ci0gICAgICAg ZGVmYXVsdDoKLSAgICAgICAgIE1PWl9DUkFTSCgiQmFkIHR5cGUgZm9yIGF0b21pYyBvcGVyYXRp b24iKTsKLSAgICAgfQotICAgfQotIAotLSNpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8 fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQotKyNpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQ UzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KSB8fCBcCi0rICAgIGRlZmluZWQoSlNf Q09ERUdFTl9QUEM2NCkKLSAgIHVzaW5nIEF0b21pY1hjaGczMlRlbXBzID0gQXRvbWljMzJUZW1w czwzPjsKLSAjZWxzZQotICAgdXNpbmcgQXRvbWljWGNoZzMyVGVtcHMgPSBBdG9taWMzMlRlbXBz PDA+OwotICNlbmRpZgotIAotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICB2b2lkIGF0b21p Y1hjaGczMihjb25zdCBNZW1vcnlBY2Nlc3NEZXNjJiBhY2Nlc3MsIFQgc3JjQWRkciwgUmVnSTMy IHJ2LAotICAgICAgICAgICAgICAgICAgICAgUmVnSTMyIHJkLCBjb25zdCBBdG9taWNYY2hnMzJU ZW1wcyYgdGVtcHMpIHsKLUBAIC03Mjc1LDE3ICs3MzM0LDE4IEBAIGNsYXNzIEJhc2VDb21waWxl ciBmaW5hbCA6IHB1YmxpYyBCYXNlQ29tcGlsZXJJbnRlcmZhY2UgewotICAgICAgICAgICBtYXNt Lndhc21BdG9taWNFeGNoYW5nZShhY2Nlc3MsIHNyY0FkZHIsIHJ2LCByZCk7Ci0gICAgICAgICB9 Ci0gICAgICAgICBicmVhazsKLSAgICAgICB9Ci0gI2VuZGlmCi0gICAgICAgY2FzZSBTY2FsYXI6 OlVpbnQxNjoKLSAgICAgICBjYXNlIFNjYWxhcjo6SW50MzI6Ci0gICAgICAgY2FzZSBTY2FsYXI6 OlVpbnQzMjoKLS0jaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19D T0RFR0VOX01JUFM2NCkKLSsjaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5l ZChKU19DT0RFR0VOX01JUFM2NCkgfHwgXAotKyAgICBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQp Ci0gICAgICAgICBtYXNtLndhc21BdG9taWNFeGNoYW5nZShhY2Nlc3MsIHNyY0FkZHIsIHJ2LCB0 ZW1wc1swXSwgdGVtcHNbMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1w c1syXSwgcmQpOwotICNlbHNlCi0gICAgICAgICBtYXNtLndhc21BdG9taWNFeGNoYW5nZShhY2Nl c3MsIHNyY0FkZHIsIHJ2LCByZCk7Ci0gI2VuZGlmCi0gICAgICAgICBicmVhazsKLSAgICAgICBk ZWZhdWx0OgotICAgICAgICAgTU9aX0NSQVNIKCJCYWQgdHlwZSBmb3IgYXRvbWljIG9wZXJhdGlv biIpOwotQEAgLTczNDIsMTYgKzc0MDIsMTggQEAgY2xhc3MgQmFzZUNvbXBpbGVyIGZpbmFsIDog cHVibGljIEJhc2VDb21waWxlckludGVyZmFjZSB7Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VO X01JUFMzMikKLSAgICAgcG9wMnhJNjQocjAsIHIxKTsKLSAgICAgKnRlbXAgPSBuZWVkSTMyKCk7 Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTSkKLSAgICAgcG9wMnhJNjQocjAsIHIxKTsK LSAgICAgKnRlbXAgPSBuZWVkSTMyKCk7Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTTY0 KQotICAgICBwb3AyeEk2NChyMCwgcjEpOwotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2 NCkKLSsgICAgcG9wMnhJNjQocjAsIHIxKTsKLSAjZWxzZQotICAgICBNT1pfQ1JBU0goIkJhc2VD b21waWxlciBwb3J0aW5nIGludGVyZmFjZTogcG9wMnhJNjRGb3JNdWxJNjQiKTsKLSAjZW5kaWYK LSAgIH0KLSAKLSAgIHZvaWQgcG9wMnhJNjRGb3JEaXZJNjQoUmVnSTY0KiByMCwgUmVnSTY0KiBy MSwgUmVnSTY0KiByZXNlcnZlZCkgewotICNpZiBkZWZpbmVkKEpTX0NPREVHRU5fWDY0KQotICAg ICAvLyByMCBtdXN0IGJlIHJheCwgYW5kIHJkeCB3aWxsIGJlIGNsb2JiZXJlZC4KLUBAIC03NTI5 LDE3ICs3NTkxLDE4IEBAIGNsYXNzIEJhc2VDb21waWxlciBmaW5hbCA6IHB1YmxpYyBCYXNlQ29t cGlsZXJJbnRlcmZhY2UgewotICAgICAgICAgcmV4cGVjdCA9IGJjLT5wb3BJMzIoKTsKLSAgICAg ICB9Ci0gICAgICAgc2V0UmQoYmMtPm5lZWRJMzIoKSk7Ci0gICAgIH0KLSAgICAgflBvcEF0b21p Y0NtcFhjaGczMlJlZ3MoKSB7Ci0gICAgICAgYmMtPmZyZWVJMzIocm5ldyk7Ci0gICAgICAgYmMt PmZyZWVJMzIocmV4cGVjdCk7Ci0gICAgIH0KLS0jZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQ UzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQotKyNlbGlmIGRlZmluZWQoSlNfQ09E RUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpIHx8IFwKLSsgICAgICBk ZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0gICAgIGV4cGxpY2l0IFBvcEF0b21pY0NtcFhjaGcz MlJlZ3MoQmFzZUNvbXBpbGVyKiBiYywgVmFsVHlwZSB0eXBlLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNjYWxhcjo6VHlwZSB2aWV3VHlwZSkKLSAgICAgICAgIDogQmFz ZShiYykgewotICAgICAgIGlmICh0eXBlID09IFZhbFR5cGU6Okk2NCkgewotICAgICAgICAgcm5l dyA9IGJjLT5wb3BJNjRUb0kzMigpOwotICAgICAgICAgcmV4cGVjdCA9IGJjLT5wb3BJNjRUb0kz MigpOwotICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICBybmV3ID0gYmMtPnBvcEkzMigpOwotQEAg LTc2MDYsMTcgKzc2NjksMTcgQEAgY2xhc3MgQmFzZUNvbXBpbGVyIGZpbmFsIDogcHVibGljIEJh c2VDb21waWxlckludGVyZmFjZSB7Ci0gICAgICAgcmV4cGVjdCA9IGJjLT5wb3BJNjQoKTsKLSAg ICAgICBzZXRSZChiYy0+bmVlZEk2NFBhaXIoKSk7Ci0gICAgIH0KLSAgICAgflBvcEF0b21pY0Nt cFhjaGc2NFJlZ3MoKSB7Ci0gICAgICAgYmMtPmZyZWVJNjQocmV4cGVjdCk7Ci0gICAgICAgYmMt PmZyZWVJNjQocm5ldyk7Ci0gICAgIH0KLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fQVJNNjQp IHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IFwKLS0gICAgZGVmaW5lZChKU19DT0RF R0VOX01JUFM2NCkKLSsgICAgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkgfHwgZGVmaW5lZChK U19DT0RFR0VOX1BQQzY0KQotICAgICBleHBsaWNpdCBQb3BBdG9taWNDbXBYY2hnNjRSZWdzKEJh c2VDb21waWxlciogYmMpIDogQmFzZShiYykgewotICAgICAgIHJuZXcgPSBiYy0+cG9wSTY0KCk7 Ci0gICAgICAgcmV4cGVjdCA9IGJjLT5wb3BJNjQoKTsKLSAgICAgICBzZXRSZChiYy0+bmVlZEk2 NCgpKTsKLSAgICAgfQotICAgICB+UG9wQXRvbWljQ21wWGNoZzY0UmVncygpIHsKLSAgICAgICBi Yy0+ZnJlZUk2NChyZXhwZWN0KTsKLSAgICAgICBiYy0+ZnJlZUk2NChybmV3KTsKLUBAIC03NjU4 LDE3ICs3NzIxLDE4IEBAIGNsYXNzIEJhc2VDb21waWxlciBmaW5hbCA6IHB1YmxpYyBCYXNlQ29t cGlsZXJJbnRlcmZhY2UgewotICAgICAgIGJjLT5uZWVkSTY0KGJjLT5zcGVjaWZpY18uZWR4X2Vh eCk7Ci0gICAgICAgc2V0UmQoYmMtPnNwZWNpZmljXy5lZHhfZWF4KTsKLSAgICAgfQotICAgICB+ UG9wQXRvbWljTG9hZDY0UmVncygpIHsgYmMtPmZyZWVJMzIoYmMtPnNwZWNpZmljXy5lY3gpOyB9 Ci0gIyAgZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fQVJNKQotICAgICBleHBsaWNpdCBQb3BBdG9t aWNMb2FkNjRSZWdzKEJhc2VDb21waWxlciogYmMpIDogQmFzZShiYykgewotICAgICAgIHNldFJk KGJjLT5uZWVkSTY0UGFpcigpKTsKLSAgICAgfQotLSMgIGVsaWYgZGVmaW5lZChKU19DT0RFR0VO X01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSsjICBlbGlmIGRlZmluZWQo SlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpIHx8IFwKLSsg ICAgICAgIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSAgICAgZXhwbGljaXQgUG9wQXRvbWlj TG9hZDY0UmVncyhCYXNlQ29tcGlsZXIqIGJjKSA6IEJhc2UoYmMpIHsKLSAgICAgICBzZXRSZChi Yy0+bmVlZEk2NCgpKTsKLSAgICAgfQotICMgIGVsc2UKLSAgICAgZXhwbGljaXQgUG9wQXRvbWlj TG9hZDY0UmVncyhCYXNlQ29tcGlsZXIqIGJjKSA6IEJhc2UoYmMpIHsKLSAgICAgICBNT1pfQ1JB U0goIkJhc2VDb21waWxlciBwb3J0aW5nIGludGVyZmFjZTogUG9wQXRvbWljTG9hZDY0UmVncyIp OwotICAgICB9Ci0gIyAgZW5kaWYKLUBAIC03NzQ1LDE3ICs3ODA5LDE4IEBAIGNsYXNzIEJhc2VD b21waWxlciBmaW5hbCA6IHB1YmxpYyBCYXNlQ29tcGlsZXJJbnRlcmZhY2UgewotICAgICAgIHJ2 ID0gdHlwZSA9PSBWYWxUeXBlOjpJNjQgPyBiYy0+cG9wSTY0VG9JMzIoKSA6IGJjLT5wb3BJMzIo KTsKLSAgICAgICB0ZW1wcy5hbGxvY2F0ZShiYyk7Ci0gICAgICAgc2V0UmQoYmMtPm5lZWRJMzIo KSk7Ci0gICAgIH0KLSAgICAgflBvcEF0b21pY1JNVzMyUmVncygpIHsKLSAgICAgICBiYy0+ZnJl ZUkzMihydik7Ci0gICAgICAgdGVtcHMubWF5YmVGcmVlKGJjKTsKLSAgICAgfQotLSNlbGlmIGRl ZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0r I2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01J UFM2NCkgfHwgXAotKyAgICAgIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSAgICAgZXhwbGlj aXQgUG9wQXRvbWljUk1XMzJSZWdzKEJhc2VDb21waWxlciogYmMsIFZhbFR5cGUgdHlwZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjYWxhcjo6VHlwZSB2aWV3VHlwZSwgQXRv bWljT3Agb3ApCi0gICAgICAgICA6IEJhc2UoYmMpIHsKLSAgICAgICBydiA9IHR5cGUgPT0gVmFs VHlwZTo6STY0ID8gYmMtPnBvcEk2NFRvSTMyKCkgOiBiYy0+cG9wSTMyKCk7Ci0gICAgICAgaWYg KFNjYWxhcjo6Ynl0ZVNpemUodmlld1R5cGUpIDwgNCkgewotICAgICAgICAgdGVtcHMuYWxsb2Nh dGUoYmMpOwotICAgICAgIH0KLSAKLUBAIC03ODMzLDE3ICs3ODk4LDE3IEBAIGNsYXNzIEJhc2VD b21waWxlciBmaW5hbCA6IHB1YmxpYyBCYXNlQ29tcGlsZXJJbnRlcmZhY2UgewotICAgICAgIHRl bXAgPSBiYy0+bmVlZEk2NFBhaXIoKTsKLSAgICAgICBzZXRSZChiYy0+bmVlZEk2NFBhaXIoKSk7 Ci0gICAgIH0KLSAgICAgflBvcEF0b21pY1JNVzY0UmVncygpIHsKLSAgICAgICBiYy0+ZnJlZUk2 NChydik7Ci0gICAgICAgYmMtPmZyZWVJNjQodGVtcCk7Ci0gICAgIH0KLSAjZWxpZiBkZWZpbmVk KEpTX0NPREVHRU5fQVJNNjQpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IFwKLS0g ICAgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSsgICAgZGVmaW5lZChKU19DT0RFR0VOX01J UFM2NCkgfHwgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotICAgICBleHBsaWNpdCBQb3BBdG9t aWNSTVc2NFJlZ3MoQmFzZUNvbXBpbGVyKiBiYywgQXRvbWljT3ApIDogQmFzZShiYykgewotICAg ICAgIHJ2ID0gYmMtPnBvcEk2NCgpOwotICAgICAgIHRlbXAgPSBiYy0+bmVlZEk2NCgpOwotICAg ICAgIHNldFJkKGJjLT5uZWVkSTY0KCkpOwotICAgICB9Ci0gICAgIH5Qb3BBdG9taWNSTVc2NFJl Z3MoKSB7Ci0gICAgICAgYmMtPmZyZWVJNjQocnYpOwotICAgICAgIGJjLT5mcmVlSTY0KHRlbXAp OwotQEAgLTc4ODgsMTcgKzc5NTMsMTggQEAgY2xhc3MgQmFzZUNvbXBpbGVyIGZpbmFsIDogcHVi bGljIEJhc2VDb21waWxlckludGVyZmFjZSB7Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX0FS TSkgfHwgZGVmaW5lZChKU19DT0RFR0VOX0FSTTY0KQotICAgICBleHBsaWNpdCBQb3BBdG9taWNY Y2hnMzJSZWdzKEJhc2VDb21waWxlciogYmMsIFZhbFR5cGUgdHlwZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTY2FsYXI6OlR5cGUgdmlld1R5cGUpCi0gICAgICAgICA6IEJh c2UoYmMpIHsKLSAgICAgICBydiA9ICh0eXBlID09IFZhbFR5cGU6Okk2NCkgPyBiYy0+cG9wSTY0 VG9JMzIoKSA6IGJjLT5wb3BJMzIoKTsKLSAgICAgICBzZXRSZChiYy0+bmVlZEkzMigpKTsKLSAg ICAgfQotICAgICB+UG9wQXRvbWljWGNoZzMyUmVncygpIHsgYmMtPmZyZWVJMzIocnYpOyB9Ci0t I2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01J UFM2NCkKLSsjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NP REVHRU5fTUlQUzY0KSB8fCBcCi0rICAgICAgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotICAg ICBleHBsaWNpdCBQb3BBdG9taWNYY2hnMzJSZWdzKEJhc2VDb21waWxlciogYmMsIFZhbFR5cGUg dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY2FsYXI6OlR5cGUgdmll d1R5cGUpCi0gICAgICAgICA6IEJhc2UoYmMpIHsKLSAgICAgICBydiA9ICh0eXBlID09IFZhbFR5 cGU6Okk2NCkgPyBiYy0+cG9wSTY0VG9JMzIoKSA6IGJjLT5wb3BJMzIoKTsKLSAgICAgICBpZiAo U2NhbGFyOjpieXRlU2l6ZSh2aWV3VHlwZSkgPCA0KSB7Ci0gICAgICAgICB0ZW1wcy5hbGxvY2F0 ZShiYyk7Ci0gICAgICAgfQotICAgICAgIHNldFJkKGJjLT5uZWVkSTMyKCkpOwotQEAgLTc5NTQs MTcgKzgwMjAsMTggQEAgY2xhc3MgQmFzZUNvbXBpbGVyIGZpbmFsIDogcHVibGljIEJhc2VDb21w aWxlckludGVyZmFjZSB7Ci0gICAgIH5Qb3BBdG9taWNYY2hnNjRSZWdzKCkgeyBiYy0+ZnJlZUk2 NChydik7IH0KLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fQVJNKQotICAgICAvLyBCb3RoIHJ2 IGFuZCByZCBtdXN0IGJlIG9kZC9ldmVuIHBhaXJzLgotICAgICBleHBsaWNpdCBQb3BBdG9taWNY Y2hnNjRSZWdzKEJhc2VDb21waWxlciogYmMpIDogQmFzZShiYykgewotICAgICAgIHJ2ID0gYmMt PnBvcEk2NFRvU3BlY2lmaWMoYmMtPm5lZWRJNjRQYWlyKCkpOwotICAgICAgIHNldFJkKGJjLT5u ZWVkSTY0UGFpcigpKTsKLSAgICAgfQotICAgICB+UG9wQXRvbWljWGNoZzY0UmVncygpIHsgYmMt PmZyZWVJNjQocnYpOyB9Ci0tI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVm aW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSsjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMy KSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KSB8fCBcCi0rICAgICAgZGVmaW5lZChKU19D T0RFR0VOX1BQQzY0KQotICAgICBleHBsaWNpdCBQb3BBdG9taWNYY2hnNjRSZWdzKEJhc2VDb21w aWxlciogYmMpIDogQmFzZShiYykgewotICAgICAgIHJ2ID0gYmMtPnBvcEk2NFRvU3BlY2lmaWMo YmMtPm5lZWRJNjQoKSk7Ci0gICAgICAgc2V0UmQoYmMtPm5lZWRJNjQoKSk7Ci0gICAgIH0KLSAg ICAgflBvcEF0b21pY1hjaGc2NFJlZ3MoKSB7IGJjLT5mcmVlSTY0KHJ2KTsgfQotICNlbHNlCi0g ICAgIGV4cGxpY2l0IFBvcEF0b21pY1hjaGc2NFJlZ3MoQmFzZUNvbXBpbGVyKiBiYykgOiBCYXNl KGJjKSB7Ci0gICAgICAgTU9aX0NSQVNIKCJCYXNlQ29tcGlsZXIgcG9ydGluZyBpbnRlcmZhY2U6 IHhjaGc2NCIpOwotQEAgLTg5NjgsMTYgKzkwMzUsMTggQEAgc3RhdGljIHZvaWQgQ3R6STMyKE1h Y3JvQXNzZW1ibGVyJiBtYXNtLCBSZWdJMzIgcnNkKSB7Ci0gCi0gLy8gQ3VycmVudGx5IGNvbW1v biB0byBQb3BjbnRJMzIgYW5kIFBvcGNudEk2NAotIHN0YXRpYyBSZWdJMzIgUG9wY250VGVtcChC YXNlQ29tcGlsZXImIGJjKSB7Ci0gI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9YODYpIHx8IGRlZmlu ZWQoSlNfQ09ERUdFTl9YNjQpCi0gICByZXR1cm4gQXNzZW1ibGVyWDg2U2hhcmVkOjpIYXNQT1BD TlQoKSA/IFJlZ0kzMjo6SW52YWxpZCgpIDogYmMubmVlZEkzMigpOwotICNlbGlmIGRlZmluZWQo SlNfQ09ERUdFTl9BUk0pIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9BUk02NCkgfHwgXAotICAgICBk ZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQot ICAgcmV0dXJuIGJjLm5lZWRJMzIoKTsKLSsjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQp Ci0rICByZXR1cm4gUmVnSTMyOjpJbnZhbGlkKCk7IC8vIFdlIHJvY2suCi0gI2Vsc2UKLSAgIE1P Wl9DUkFTSCgiQmFzZUNvbXBpbGVyIHBsYXRmb3JtIGhvb2s6IFBvcGNudFRlbXAiKTsKLSAjZW5k aWYKLSB9Ci0gCi0gc3RhdGljIHZvaWQgUG9wY250STMyKEJhc2VDb21waWxlciYgYmMsIFJlZ0kz MiByc2QsIFJlZ0kzMiB0ZW1wKSB7Ci0gICBiYy5tYXNtLnBvcGNudDMyKHJzZCwgcnNkLCB0ZW1w KTsKLSB9Ci1AQCAtMTE5ODIsMTcgKzEyMDUxLDE3IEBAIFJlZ0kzMiBCYXNlQ29tcGlsZXI6OnBv cE1lbW9yeTMyQWNjZXNzKE1lbW9yeUFjY2Vzc0Rlc2MqIGFjY2VzcywKLSAgICAgYmNlQ2hlY2tM b2NhbChhY2Nlc3MsIGNoZWNrLCBsb2NhbCk7Ci0gICB9Ci0gCi0gICByZXR1cm4gcG9wSTMyKCk7 Ci0gfQotIAotIHZvaWQgQmFzZUNvbXBpbGVyOjpwdXNoSGVhcEJhc2UoKSB7Ci0gI2lmIGRlZmlu ZWQoSlNfQ09ERUdFTl9YNjQpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9BUk02NCkgfHwgXAotLSAg ICBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQotKyAgICBkZWZpbmVkKEpTX0NPREVHRU5fTUlQ UzY0KSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0gICBSZWdJNjQgaGVhcEJhc2UgPSBu ZWVkSTY0KCk7Ci0gICBtb3ZlSTY0KFJlZ0k2NChSZWdpc3RlcjY0KEhlYXBSZWcpKSwgaGVhcEJh c2UpOwotICAgcHVzaEk2NChoZWFwQmFzZSk7Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX0FS TSkgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikKLSAgIFJlZ0kzMiBoZWFwQmFzZSA9IG5l ZWRJMzIoKTsKLSAgIG1vdmVJMzIoUmVnSTMyKEhlYXBSZWcpLCBoZWFwQmFzZSk7Ci0gICBwdXNo STMyKGhlYXBCYXNlKTsKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fWDg2KQotQEAgLTE3MjQ0 LDE3ICsxNzMxMywxOSBAQCBib29sIGpzOjp3YXNtOjpCYXNlbGluZVBsYXRmb3JtU3VwcG9ydCgp IHsKLSAgIC8vIHRoZXkgYXJlIGRlZmluaXRlbHkgaW1wbGVtZW50ZWQgb24gdGhlIENvcnRleC1B NyBhbmQgQ29ydGV4LUExNQotICAgLy8gYW5kIG9uIGFsbCBBUk12OCBzeXN0ZW1zLgotICAgaWYg KCFIYXNJRElWKCkpIHsKLSAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICNlbmRpZgotICNpZiBk ZWZpbmVkKEpTX0NPREVHRU5fWDY0KSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fWDg2KSB8fCAgIFwK LSAgICAgZGVmaW5lZChKU19DT0RFR0VOX0FSTSkgfHwgZGVmaW5lZChKU19DT0RFR0VOX0FSTTY0 KSB8fCBcCi0tICAgIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09E RUdFTl9NSVBTNjQpCi0rICAgIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQo SlNfQ09ERUdFTl9NSVBTNjQpIHx8IFwKLSsgICAgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQot KyAgLy8gUFBDNjQgZ2F0ZXMgb24gb3RoZXIgcHJlcmVxdWlzaXRlcyBub3Qgc3BlY2lmaWVkIGhl cmUuCi0gICByZXR1cm4gdHJ1ZTsKLSAjZWxzZQotICAgcmV0dXJuIGZhbHNlOwotICNlbmRpZgot IH0KLSAKLSBib29sIGpzOjp3YXNtOjpCYXNlbGluZUNvbXBpbGVGdW5jdGlvbnMoY29uc3QgTW9k dWxlRW52aXJvbm1lbnQmIG1vZHVsZUVudiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgQ29tcGlsZXJFbnZpcm9ubWVudCYgY29tcGlsZXJFbnYsCi1kaWZm IC0tZ2l0IGEvanMvc3JjL3dhc20vV2FzbUNvbXBpbGUuY3BwIGIvanMvc3JjL3dhc20vV2FzbUNv bXBpbGUuY3BwCi1pbmRleCAwZjQ1NmFhYWE1Li5mMDY5NGYxYjllIDEwMDY0NAotLS0tIGEvanMv c3JjL3dhc20vV2FzbUNvbXBpbGUuY3BwCi0rKysgYi9qcy9zcmMvd2FzbS9XYXNtQ29tcGlsZS5j cHAKLUBAIC00NSwxNiArNDUsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIGpzOjp3YXNtOwotIHVpbnQz Ml90IHdhc206Ok9ic2VydmVkQ1BVRmVhdHVyZXMoKSB7Ci0gICBlbnVtIEFyY2ggewotICAgICBY ODYgPSAweDEsCi0gICAgIFg2NCA9IDB4MiwKLSAgICAgQVJNID0gMHgzLAotICAgICBNSVBTID0g MHg0LAotICAgICBNSVBTNjQgPSAweDUsCi0gICAgIEFSTTY0ID0gMHg2LAotKyAgICBQUEM2NCA9 IDB4NywKLSAgICAgQVJDSF9CSVRTID0gMwotICAgfTsKLSAKLSAjaWYgZGVmaW5lZChKU19DT0RF R0VOX1g4NikKLSAgIE1PWl9BU1NFUlQodWludDMyX3Qoaml0OjpDUFVJbmZvOjpHZXRTU0VWZXJz aW9uKCkpIDw9Ci0gICAgICAgICAgICAgIChVSU5UMzJfTUFYID4+IEFSQ0hfQklUUykpOwotICAg cmV0dXJuIFg4NiB8ICh1aW50MzJfdChqaXQ6OkNQVUluZm86OkdldFNTRVZlcnNpb24oKSkgPDwg QVJDSF9CSVRTKTsKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fWDY0KQotQEAgLTY4LDE2ICs2 OSwxOSBAQCB1aW50MzJfdCB3YXNtOjpPYnNlcnZlZENQVUZlYXR1cmVzKCkgewotICAgTU9aX0FT U0VSVChqaXQ6OkdldEFSTTY0RmxhZ3MoKSA8PSAoVUlOVDMyX01BWCA+PiBBUkNIX0JJVFMpKTsK LSAgIHJldHVybiBBUk02NCB8IChqaXQ6OkdldEFSTTY0RmxhZ3MoKSA8PCBBUkNIX0JJVFMpOwot ICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpCi0gICBNT1pfQVNTRVJUKGppdDo6R2V0 TUlQU0ZsYWdzKCkgPD0gKFVJTlQzMl9NQVggPj4gQVJDSF9CSVRTKSk7Ci0gICByZXR1cm4gTUlQ UyB8IChqaXQ6OkdldE1JUFNGbGFncygpIDw8IEFSQ0hfQklUUyk7Ci0gI2VsaWYgZGVmaW5lZChK U19DT0RFR0VOX01JUFM2NCkKLSAgIE1PWl9BU1NFUlQoaml0OjpHZXRNSVBTRmxhZ3MoKSA8PSAo VUlOVDMyX01BWCA+PiBBUkNIX0JJVFMpKTsKLSAgIHJldHVybiBNSVBTNjQgfCAoaml0OjpHZXRN SVBTRmxhZ3MoKSA8PCBBUkNIX0JJVFMpOwotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2 NCkKLSsgIE1PWl9BU1NFUlQoaml0OjpHZXRQUEM2NEZsYWdzKCkgPD0gKFVJTlQzMl9NQVggPj4g QVJDSF9CSVRTKSk7Ci0rICByZXR1cm4gUFBDNjQgfCAoaml0OjpHZXRQUEM2NEZsYWdzKCkgPDwg QVJDSF9CSVRTKTsKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTk9ORSkKLSAgIHJldHVybiAw OwotICNlbHNlCi0gIyAgZXJyb3IgInVua25vd24gYXJjaGl0ZWN0dXJlIgotICNlbmRpZgotIH0K LSAKLSBGZWF0dXJlQXJncyBGZWF0dXJlQXJnczo6YnVpbGQoSlNDb250ZXh0KiBjeCwgY29uc3Qg RmVhdHVyZU9wdGlvbnMmIG9wdGlvbnMpIHsKLWRpZmYgLS1naXQgYS9qcy9zcmMvd2FzbS9XYXNt RnJhbWUuaCBiL2pzL3NyYy93YXNtL1dhc21GcmFtZS5oCi1pbmRleCA4NWYyNjEyZDE0Li45OTE5 MjA1NzM5IDEwMDY0NAotLS0tIGEvanMvc3JjL3dhc20vV2FzbUZyYW1lLmgKLSsrKyBiL2pzL3Ny Yy93YXNtL1dhc21GcmFtZS5oCi1AQCAtNTMsMTYgKzUzLDI1IEBAIGNvbnN0ZXhwciB1aW50cHRy X3QgRXhpdE9ySml0RW50cnlGUFRhZyA9IDB4MTsKLSAvLyBiZWZvcmUgdGhlIGZ1bmN0aW9uIGhh cyBtYWRlIGl0cyBzdGFjayByZXNlcnZhdGlvbiwgdGhlIHN0YWNrIGFsaWdubWVudCBpcwotIC8v IHNpemVvZihGcmFtZSkgJSBXYXNtU3RhY2tBbGlnbm1lbnQuCi0gLy8KLSAvLyBEdXJpbmcgTWFj cm9Bc3NlbWJsZXIgY29kZSBnZW5lcmF0aW9uLCB0aGUgYnl0ZXMgcHVzaGVkIGFmdGVyIHRoZSB3 YXNtOjpGcmFtZQotIC8vIGFyZSBjb3VudGVkIGJ5IG1hc20uZnJhbWVQdXNoZWQuIFRodXMsIHRo ZSBzdGFjayBhbGlnbm1lbnQgYXQgYW55IHBvaW50IGluCi0gLy8gdGltZSBpcyAoc2l6ZW9mKHdh c206OkZyYW1lKSArIG1hc20uZnJhbWVQdXNoZWQpICUgV2FzbVN0YWNrQWxpZ25tZW50LgotIAot IGNsYXNzIEZyYW1lIHsKLSsjaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKyAgLy8gU2lu Y2UgV2FzbSBjYW4gY2FsbCBkaXJlY3RseSB0byBBQkktY29tcGxpYW50IHJvdXRpbmVzLCB0aGUg RnJhbWUgbXVzdAotKyAgLy8gaGF2ZSBhbiBBQkktY29tcGxpYW50IGxpbmthZ2UgYXJlYS4gV2Ug YWxsb2NhdGUgZm91ciBkb3VibGV3b3JkcywgdGhlCi0rICAvLyBtaW5pbXVtIHNpemUuCi0rICB2 b2lkICpfcHBjX3NwXzsKLSsgIHZvaWQgKl9wcGNfY3JfOwotKyAgdm9pZCAqX3BwY19scl87Ci0r ICB2b2lkICpfcHBjX3RvY187Ci0rI2VuZGlmCi0gICAvLyBTZWUgR2VuZXJhdGVDYWxsYWJsZUVw aWxvZ3VlIGZvciB3aHkgdGhpcyBtdXN0IGJlCi0gICAvLyB0aGUgZmlyc3QgZmllbGQgb2Ygd2Fz bTo6RnJhbWUgKGluIGEgZG93bndhcmQtZ3Jvd2luZyBzdGFjaykuCi0gICAvLyBJdCdzIGVpdGhl ciB0aGUgY2FsbGVyJ3MgRnJhbWUqLCBmb3Igd2FzbSBjYWxsZXJzLCBvciB0aGUgSklUIGNhbGxl ciBmcmFtZQotICAgLy8gcGx1cyBhIHRhZyBvdGhlcndpc2UuCi0gICB1aW50OF90KiBjYWxsZXJG UF87Ci0gCi0gICAvLyBUaGUgcmV0dXJuIGFkZHJlc3MgcHVzaGVkIGJ5IHRoZSBjYWxsIChpbiB0 aGUgY2FzZSBvZiBBUk0vTUlQUyB0aGUgcmV0dXJuCi0gICAvLyBhZGRyZXNzIGlzIHB1c2hlZCBi eSB0aGUgZmlyc3QgaW5zdHJ1Y3Rpb24gb2YgdGhlIHByb2xvZ3VlKS4KLUBAIC0xMTUsMTggKzEy NCwyMSBAQCBjbGFzcyBGcmFtZSB7Ci0gICBzdGF0aWMgdWludDhfdCogYWRkRXhpdE9ySml0RW50 cnlGUFRhZyhjb25zdCBGcmFtZSogZnApIHsKLSAgICAgTU9aX0FTU0VSVCghaXNFeGl0T3JKaXRF bnRyeUZQKGZwKSk7Ci0gICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihyZWlu dGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZnApIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEV4aXRPckppdEVudHJ5RlBUYWcpOwotICAgfQotIH07Ci0gCi0gc3RhdGlj X2Fzc2VydCghc3RkOjppc19wb2x5bW9ycGhpY192PEZyYW1lPiwgIkZyYW1lIGRvZXNuJ3QgbmVl ZCBhIHZ0YWJsZS4iKTsKLSsjaWYgIWRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsvLyBOb3Qg b24gUG93ZXJQQywgaXQncyBub3QuCi0gc3RhdGljX2Fzc2VydChzaXplb2YoRnJhbWUpID09IDIg KiBzaXplb2Yodm9pZCopLAotICAgICAgICAgICAgICAgIkZyYW1lIGlzIGEgdHdvIHBvaW50ZXIg c3RydWN0dXJlIik7Ci0rI2VuZGlmCi0gCi0gY2xhc3MgRnJhbWVXaXRoVGxzIDogcHVibGljIEZy YW1lIHsKLSAgIFRsc0RhdGEqIGNhbGxlZVRsc187Ci0gICBUbHNEYXRhKiBjYWxsZXJUbHNfOwot IAotICBwdWJsaWM6Ci0gICBUbHNEYXRhKiBjYWxsZWVUbHMoKSB7IHJldHVybiBjYWxsZWVUbHNf OyB9Ci0gICBUbHNEYXRhKiBjYWxsZXJUbHMoKSB7IHJldHVybiBjYWxsZXJUbHNfOyB9Ci1kaWZm IC0tZ2l0IGEvanMvc3JjL3dhc20vV2FzbUZyYW1lSXRlci5jcHAgYi9qcy9zcmMvd2FzbS9XYXNt RnJhbWVJdGVyLmNwcAotaW5kZXggZGZmYWI1Mzk0MC4uNWRhOGQ2YzczMCAxMDA2NDQKLS0tLSBh L2pzL3NyYy93YXNtL1dhc21GcmFtZUl0ZXIuY3BwCi0rKysgYi9qcy9zcmMvd2FzbS9XYXNtRnJh bWVJdGVyLmNwcAotQEAgLTM1OCwxNiArMzU4LDIxIEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT ZXRGUCA9IDE2OwotIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBQb3BwZWRGUCA9IDQ7Ci0gc3RhdGlj X2Fzc2VydChCZWZvcmVQdXNoUmV0QWRkciA9PSAwLCAiUmVxdWlyZWQgYnkgU3RhcnRVbndpbmRp bmciKTsKLSBzdGF0aWNfYXNzZXJ0KFB1c2hlZEZQID4gUHVzaGVkUmV0QWRkciwgIlJlcXVpcmVk IGJ5IFN0YXJ0VW53aW5kaW5nIik7Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikg fHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSBzdGF0aWMgY29uc3QgdW5zaWduZWQgUHVz aGVkUmV0QWRkciA9IDg7Ci0gc3RhdGljIGNvbnN0IHVuc2lnbmVkIFB1c2hlZEZQID0gMTI7Ci0g c3RhdGljIGNvbnN0IHVuc2lnbmVkIFNldEZQID0gMTY7Ci0gc3RhdGljIGNvbnN0IHVuc2lnbmVk IFBvcHBlZEZQID0gNDsKLSsjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rc3RhdGlj IGNvbnN0IHVuc2lnbmVkIFB1c2hlZFJldEFkZHIgPSAxMjsKLStzdGF0aWMgY29uc3QgdW5zaWdu ZWQgUHVzaGVkRlAgPSAxNjsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgU2V0RlAgPSAyMDsKLStz dGF0aWMgY29uc3QgdW5zaWduZWQgUG9wcGVkRlAgPSA4OwotICNlbGlmIGRlZmluZWQoSlNfQ09E RUdFTl9OT05FKQotIC8vIFN5bnRoZXRpYyB2YWx1ZXMgdG8gc2F0aXNmeSBhc3NlcnRzIGFuZCBh dm9pZCBjb21waWxlciB3YXJuaW5ncy4KLSBzdGF0aWMgY29uc3QgdW5zaWduZWQgUHVzaGVkUmV0 QWRkciA9IDA7Ci0gc3RhdGljIGNvbnN0IHVuc2lnbmVkIFB1c2hlZEZQID0gMTsKLSBzdGF0aWMg Y29uc3QgdW5zaWduZWQgU2V0RlAgPSAyOwotIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBQb3BwZWRG UCA9IDM7Ci0gI2Vsc2UKLSAjICBlcnJvciAiVW5rbm93biBhcmNoaXRlY3R1cmUhIgotQEAgLTQ1 MywxNiArNDU4LDM4IEBAIHN0YXRpYyB2b2lkIEdlbmVyYXRlQ2FsbGFibGVQcm9sb2d1ZShNYWNy b0Fzc2VtYmxlciYgbWFzbSwgdWludDMyX3QqIGVudHJ5KSB7Ci0gICAgICAgICAgICAgIE1lbU9w ZXJhbmQoc3AsIEZyYW1lOjpjYWxsZXJGUE9mZnNldCgpKSk7Ci0gICAgIE1PWl9BU1NFUlRfSUYo IW1hc20ub29tKCksIFB1c2hlZEZQID09IG1hc20uY3VycmVudE9mZnNldCgpIC0gKmVudHJ5KTsK LSAgICAgbWFzbS5Nb3YoQVJNUmVnaXN0ZXIoRnJhbWVQb2ludGVyLCA2NCksIHNwKTsKLSAgICAg TU9aX0FTU0VSVF9JRighbWFzbS5vb20oKSwgU2V0RlAgPT0gbWFzbS5jdXJyZW50T2Zmc2V0KCkg LSAqZW50cnkpOwotIAotICAgICAvLyBBbmQgcmVzdG9yZSB0aGUgU1AtcmVnIHNldHRpbmcsIHBl ciBjb21tZW50IGFib3ZlLgotICAgICBtYXNtLlNldFN0YWNrUG9pbnRlcjY0KHN0YXNoZWRTUHJl Zyk7Ci0gICB9Ci0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKyAgewotKyAgICAq ZW50cnkgPSBtYXNtLmN1cnJlbnRPZmZzZXQoKTsKLSsKLSsgICAgLy8gVGhlc2UgbXVzdCBiZSBp biB0aGlzIHByZWNpc2Ugb3JkZXIuIEZvcnR1bmF0ZWx5IHdlIGNhbiBzdWJzdW1lIHRoZQotKyAg ICAvLyBTUFIgbG9hZCBpbnRvIHRoZSBpbml0aWFsICJ2ZXJzZSIgc2luY2UgaXQgaXMgdHJlYXRl ZCBhdG9taWNhbGx5LgotKyAgICAvLyBUaGUgbGlua2FnZSBhcmVhIHJlcXVpcmVkIGZvciBBQkkg Y29tcGxpYW5jZSBpcyBiYWtlZCBpbnRvIHRoZSBGcmFtZS4KLSsgICAgbWFzbS54c19tZmxyKFNj cmF0Y2hSZWdpc3Rlcik7Ci0rICAgIG1hc20uYXNfYWRkaShTdGFja1BvaW50ZXIsIFN0YWNrUG9p bnRlciwgLShzaXplb2YoRnJhbWUpKSk7Ci0rICAgIG1hc20uYXNfc3RkKFNjcmF0Y2hSZWdpc3Rl ciwgU3RhY2tQb2ludGVyLCBGcmFtZTo6cmV0dXJuQWRkcmVzc09mZnNldCgpKTsKLSsgICAgTU9a X0FTU0VSVF9JRighbWFzbS5vb20oKSwgUHVzaGVkUmV0QWRkciA9PSBtYXNtLmN1cnJlbnRPZmZz ZXQoKSAtICplbnRyeSk7Ci0rICAgIG1hc20uYXNfc3RkKEZyYW1lUG9pbnRlciwgU3RhY2tQb2lu dGVyLCBGcmFtZTo6Y2FsbGVyRlBPZmZzZXQoKSk7Ci0rICAgIE1PWl9BU1NFUlRfSUYoIW1hc20u b29tKCksIFB1c2hlZEZQID09IG1hc20uY3VycmVudE9mZnNldCgpIC0gKmVudHJ5KTsKLSsgICAg bWFzbS54c19tcihGcmFtZVBvaW50ZXIsIFN0YWNrUG9pbnRlcik7Ci0rICAgIE1PWl9BU1NFUlRf SUYoIW1hc20ub29tKCksIFNldEZQID09IG1hc20uY3VycmVudE9mZnNldCgpIC0gKmVudHJ5KTsK LSsKLSsgICAgLy8gQnVybiBub3BzIGJlY2F1c2Ugd2UgaGF2ZSB0byBtYWtlIHRoaXMgYSBtdWx0 aXBsZSBvZiAxNiBhbmQgdGhlIG1mc3ByCi0rICAgIC8vIGp1c3Qgc2NyZXdlZCB1cy4KLSsgICAg bWFzbS5hc19ub3AoKTsgLy8gMjQKLSsgICAgbWFzbS5hc19ub3AoKTsgLy8gMjgKLSsgICAgbWFz bS5hc19ub3AoKTsgLy8gMzIgLy8gdHJhcCBwb2ludAotKyAgfQotICNlbHNlCi0gICB7Ci0gIyAg aWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTSkKLSAgICAgQXV0b0ZvcmJpZFBvb2xzQW5kTm9wcyBh ZnAoJm1hc20sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBp bnN0cnVjdGlvbnMgaW4gc2NvcGUgPSAqLyAzKTsKLSAKLSAgICAgKmVudHJ5ID0gbWFzbS5jdXJy ZW50T2Zmc2V0KCk7Ci0gCi1AQCAtNTI3LDE2ICs1NTQsMjggQEAgc3RhdGljIHZvaWQgR2VuZXJh dGVDYWxsYWJsZUVwaWxvZ3VlKE1hY3JvQXNzZW1ibGVyJiBtYXNtLCB1bnNpZ25lZCBmcmFtZVB1 c2hlZCwKLSAgIC8vIHVzZSBpdC4gIEhlbmNlIHdlIGhhdmUgdG8gZG8gaXQgImJ5IGhhbmQiLgot ICAgbWFzbS5Nb3YoUHNldWRvU3RhY2tQb2ludGVyNjQsIHZpeGw6OnNwKTsKLSAKLSAgIG1hc20u UmV0KEFSTVJlZ2lzdGVyKGxyLCA2NCkpOwotIAotICAgLy8gU2VlIGNvbW1lbnQgYXQgZXF1aXZh bGVudCBwbGFjZSBpbiB8R2VuZXJhdGVDYWxsYWJsZVByb2xvZ3VlfCBhYm92ZS4KLSAgIG1hc20u U2V0U3RhY2tQb2ludGVyNjQoc3Rhc2hlZFNQcmVnKTsKLSAKLSsjZWxpZiBkZWZpbmVkKEpTX0NP REVHRU5fUFBDNjQpCi0rCi0rICBtYXNtLmFzX2xkKEZyYW1lUG9pbnRlciwgU3RhY2tQb2ludGVy LCBGcmFtZTo6Y2FsbGVyRlBPZmZzZXQoKSk7Ci0rICBwb3BwZWRGUCA9IG1hc20uY3VycmVudE9m ZnNldCgpOwotKyAgLy8gVGhpcyBpcyBzdWJvcHRpbWFsIHNpbmNlIHdlIGdldCBzZXJpYWxpemVk LCBidXQgaGFzIHRvIGJlIGluIHRoaXMgb3JkZXIuCi0rICBtYXNtLmFzX2xkKFNjcmF0Y2hSZWdp c3RlciwgU3RhY2tQb2ludGVyLCBGcmFtZTo6cmV0dXJuQWRkcmVzc09mZnNldCgpKTsKLSsgIG1h c20ueHNfbXRscihTY3JhdGNoUmVnaXN0ZXIpOwotKyAgKnJldCA9IG1hc20uY3VycmVudE9mZnNl dCgpOwotKwotKyAgbWFzbS5hc19hZGRpKFN0YWNrUG9pbnRlciwgU3RhY2tQb2ludGVyLCBzaXpl b2YoRnJhbWUpKTsKLSsgIG1hc20uYXNfYmxyKCk7Ci0rCi0gI2Vsc2UKLSAgIC8vIEZvcmJpZCBw b29scyBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIGRlc2NyaWJlZCBpbiBHZW5lcmF0ZUNhbGxhYmxl UHJvbG9ndWUuCi0gIyAgaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTSkKLSAgIEF1dG9Gb3JiaWRQ b29sc0FuZE5vcHMgYWZwKCZtYXNtLCAvKiBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIGluIHNjb3Bl ID0gKi8gNik7Ci0gIyAgZW5kaWYKLSAKLSAgIC8vIFRoZXJlIGlzIGFuIGltcG9ydGFudCBvcmRl cmluZyBjb25zdHJhaW50IGhlcmU6IGZwIG11c3QgYmUgcmVwb2ludGVkIHRvCi0gICAvLyB0aGUg Y2FsbGVyJ3MgZnJhbWUgYmVmb3JlIGFueSBmaWVsZCBvZiB0aGUgZnJhbWUgY3VycmVudGx5IHBv aW50ZWQgdG8gYnkKLUBAIC03NzMsMTYgKzgxMiwyMyBAQCB2b2lkIHdhc206OkdlbmVyYXRlSml0 RW50cnlQcm9sb2d1ZShNYWNyb0Fzc2VtYmxlciYgbWFzbSwgT2Zmc2V0cyogb2Zmc2V0cykgewot ICAgICBBdXRvRm9yYmlkUG9vbHNBbmROb3BzIGFmcCgmbWFzbSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGluc3RydWN0aW9ucyBpbiBzY29wZSA9ICovIDMp OwotICAgICBvZmZzZXRzLT5iZWdpbiA9IG1hc20uY3VycmVudE9mZnNldCgpOwotICAgICBzdGF0 aWNfYXNzZXJ0KEJlZm9yZVB1c2hSZXRBZGRyID09IDApOwotICAgICAvLyBTdWJ0cmFjdCBmcm9t IFNQIGZpcnN0IGFzIFNQIG11c3QgYmUgYWxpZ25lZCBiZWZvcmUgb2Zmc2V0dGluZy4KLSAgICAg bWFzbS5TdWIoc3AsIHNwLCA4KTsKLSAgICAgbWFzbS5zdG9yZVB0cihsciwgQWRkcmVzcyhtYXNt LmdldFN0YWNrUG9pbnRlcigpLCAwKSk7Ci0gICAgIG1hc20uYWRqdXN0RnJhbWUoOCk7Ci0rI2Vs aWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKyAgICBvZmZzZXRzLT5iZWdpbiA9IG1hc20u Y3VycmVudE9mZnNldCgpOwotKwotKyAgICAvLyBXZSBoYXZlIHRvIGJ1cm4gYSBub3AgaGVyZSB0 byBtYXRjaCB0aGUgb3RoZXIgcHJvbG9ndWUgbGVuZ3RoLgotKyAgICBtYXNtLnhzX21mbHIoU2Ny YXRjaFJlZ2lzdGVyKTsKLSsgICAgbWFzbS5hc19ub3AoKTsgLy8gbWlnaHQgYXMgd2VsbCBleHBs aWNpdGx5IHdhaXQgZm9yIHRoZSBtZnNwciB0byBjb21wbGV0ZQotKyAgICBtYXNtLmFzX3N0ZHUo U2NyYXRjaFJlZ2lzdGVyLCBTdGFja1BvaW50ZXIsIC04KTsKLSAjZWxzZQotICAgICAvLyBUaGUg eDg2L3g2NCBjYWxsIGluc3RydWN0aW9uIHB1c2hlcyB0aGUgcmV0dXJuIGFkZHJlc3MuCi0gICAg IG9mZnNldHMtPmJlZ2luID0gbWFzbS5jdXJyZW50T2Zmc2V0KCk7Ci0gI2VuZGlmCi0gICAgIE1P Wl9BU1NFUlRfSUYoIW1hc20ub29tKCksCi0gICAgICAgICAgICAgICAgICAgUHVzaGVkUmV0QWRk ciA9PSBtYXNtLmN1cnJlbnRPZmZzZXQoKSAtIG9mZnNldHMtPmJlZ2luKTsKLSAKLSAgICAgLy8g U2F2ZSBqaXQgZnJhbWUgcG9pbnRlciwgc28gdW53aW5kaW5nIGZyb20gd2FzbSB0byBqaXQgZnJh bWVzIGlzIHRyaXZpYWwuCi1kaWZmIC0tZ2l0IGEvanMvc3JjL3dhc20vV2FzbUdDLmNwcCBiL2pz L3NyYy93YXNtL1dhc21HQy5jcHAKLWluZGV4IDRlYjc3YTgxYTIuLjNmMDBjYmI2MzIgMTAwNjQ0 Ci0tLS0gYS9qcy9zcmMvd2FzbS9XYXNtR0MuY3BwCi0rKysgYi9qcy9zcmMvd2FzbS9XYXNtR0Mu Y3BwCi1AQCAtMjg0LDE2ICsyODQsMzMgQEAgYm9vbCBJc1ZhbGlkU3RhY2tNYXBLZXkoYm9vbCBk ZWJ1Z0VuYWJsZWQsIGNvbnN0IHVpbnQ4X3QqIG5leHRQQykgewotICAgICAgICAgICAoaW5zblst MV0gJiAweGZmZmZmYzFmKSA9PSAweGQ2M2YwMDAwIHx8ICAgIC8vIGJsciByZWcKLSAgICAgICAg ICAgKGluc25bLTFdICYgMHhmYzAwMDAwMCkgPT0gMHg5NDAwMDAwMCB8fCAgICAvLyBibCBzaW1t MjYKLSAgICAgICAgICAgKGRlYnVnRW5hYmxlZCAmJiBpbnNuWy0xXSA9PSAweGQ1MDMyMDFmKSk7 ICAvLyBub3AKLSAKLSAjICBlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0gICAvLyBU T0RPIChidWcgMTY5OTY5Nik6IEltcGxlbWVudCB0aGlzLiAgQXMgZm9yIHRoZSBwbGF0Zm9ybXMg YWJvdmUsIHdlIG5lZWQgdG8KLSAgIC8vIGVudW1lcmF0ZSBhbGwgY29kZSBzZXF1ZW5jZXMgdGhh dCBjYW4gcHJlY2VkZSB0aGUgc3RhY2ttYXAgbG9jYXRpb24uCi0gICByZXR1cm4gdHJ1ZTsKLSsj ICBlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsvLyBYWFg6IHdlIHNob3VsZCBqdXN0 IGJlIGFibGUgdG8gdXNlIGluc3RbMF0KLSsgIGNvbnN0IHVpbnQzMl90KiBpbnNuID0gKGNvbnN0 IHVpbnQzMl90KiluZXh0UEM7Ci0rICBqczo6aml0OjpJbnN0cnVjdGlvbiogaW5zdCA9IChqczo6 aml0OjpJbnN0cnVjdGlvbiopbmV4dFBDOwotKyAgLy9mcHJpbnRmKHN0ZGVyciwgIklzVmFsaWRT dGFja01hcEtleTogMHglbHggMHglMDh4XG4iLCAodWludDY0X3QpbmV4dFBDLCBpbnNuWzBdKTsK LSsgIHJldHVybiAoKCh1aW50cHRyX3QoaW5zbikgJiAzKSA9PSAwKSAmJgotKyAgICAgICAgICAo aW5zdFswXS5leHRyYWN0T3Bjb2RlKCkgPT0ganM6OmppdDo6UFBDX2FkZGkgfHwgIC8vIHN0YWNr IGFsbG9jYXRlCi0rICAgICAgICAgICBpbnN0WzBdLmV4dHJhY3RPcGNvZGUoKSA9PSBqczo6aml0 OjpQUENfYWRkaXMgfHwgLy8gbG9hZCBpbW1lZGlhdGUKLSsgICAgICAgICAgIGluc3RbMF0uZXh0 cmFjdE9wY29kZSgpID09IGpzOjpqaXQ6OlBQQ19jbXB3aSB8fCAvLyB0ZXN0IGFmdGVyIGJsCi0r ICAgICAgICAgICBpbnN0WzBdLmV4dHJhY3RPcGNvZGUoKSA9PSBqczo6aml0OjpQUENfY21wdyB8 fCAgLy8gKGV4dHN3LCBzYW1lKQotKyAgICAgICAgICAgaW5zdFswXS5leHRyYWN0T3Bjb2RlKCkg PT0ganM6OmppdDo6UFBDX2xmZCB8fCAgIC8vIGxvYWQgRlBSCi0rICAgICAgICAgICBpbnN0WzBd LmV4dHJhY3RPcGNvZGUoKSA9PSBqczo6aml0OjpQUENfbGZzIHx8ICAgLy8gbG9hZCBGUFIKLSsg ICAgICAgICAgIGluc3RbMF0uZXh0cmFjdE9wY29kZSgpID09IGpzOjpqaXQ6OlBQQ19sd3ogfHwg ICAvLyBsb2FkIEdQUgotKyAgICAgICAgICAgaW5zdFswXS5leHRyYWN0T3Bjb2RlKCkgPT0ganM6 OmppdDo6UFBDX2xkIHx8ICAgIC8vIGxvYWQgR1BSCi0rICAgICAgICAgICBpbnN0WzBdLmV4dHJh Y3RPcGNvZGUoKSA9PSBqczo6aml0OjpQUENfYiB8fCAgICAgLy8gYnJhbmNoCi0rICAgICAgICAg ICBpbnN0WzBdLmVuY29kZSgpID09IGpzOjpqaXQ6OlBQQ19ub3AgfHwgICAgICAgICAgLy8gR0VU IEJBQ0sgVE8gV09SSwotKyAgICAgICAgICAgaW5zdFswXS5lbmNvZGUoKSA9PSBqczo6aml0OjpQ UENfc3RvcCkpOyAgICAgICAgIC8vIGRlc2lnbmF0ZWQgdGhyb3cKLSAjICBlbHNlCi0gICBNT1pf Q1JBU0goIklzVmFsaWRTdGFja01hcEtleTogcmVxdWlyZXMgaW1wbGVtZW50YXRpb24gb24gdGhp cyBwbGF0Zm9ybSIpOwotICMgIGVuZGlmCi0gfQotICNlbmRpZgotIAotIH0gIC8vIG5hbWVzcGFj ZSB3YXNtCi0gfSAgLy8gbmFtZXNwYWNlIGpzCi1kaWZmIC0tZ2l0IGEvanMvc3JjL3dhc20vV2Fz bVNpZ25hbEhhbmRsZXJzLmNwcCBiL2pzL3NyYy93YXNtL1dhc21TaWduYWxIYW5kbGVycy5jcHAK LWluZGV4IDRhYjJhNDQxOTIuLjFhNTEwNjFhMTIgMTAwNjQ0Ci0tLS0gYS9qcy9zcmMvd2FzbS9X YXNtU2lnbmFsSGFuZGxlcnMuY3BwCi0rKysgYi9qcy9zcmMvd2FzbS9XYXNtU2lnbmFsSGFuZGxl cnMuY3BwCi1AQCAtMTAxLDE2ICsxMDEsMTcgQEAgdXNpbmcgbW96aWxsYTo6RGVidWdPbmx5Owot ICMgIGVuZGlmCi0gIyAgaWYgZGVmaW5lZChfX21pcHNfXykKLSAjICAgIGRlZmluZSBFUENfc2ln KHApICgocCktPnNjX3BjKQotICMgICAgZGVmaW5lIFJGUF9zaWcocCkgKChwKS0+c2NfcmVnc1sz MF0pCi0gIyAgZW5kaWYKLSAjICBpZiBkZWZpbmVkKF9fcHBjNjRfXykgfHwgZGVmaW5lZChfX1BQ QzY0X18pIHx8IGRlZmluZWQoX19wcGM2NGxlX18pIHx8IFwKLSAgICAgICBkZWZpbmVkKF9fUFBD NjRMRV9fKQotICMgICAgZGVmaW5lIFIwMV9zaWcocCkgKChwKS0+c2NfZnJhbWUuZml4cmVnWzFd KQotKyMgICAgZGVmaW5lIFIzMV9zaWcocCkgKChwKS0+c2NfZnJhbWUuZml4cmVnWzMxXSkKLSAj ICAgIGRlZmluZSBSMzJfc2lnKHApICgocCktPnNjX2ZyYW1lLnNycjApCi0gIyAgZW5kaWYKLSAj ZWxpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX3N1bikKLSAjICBpZiBkZWZpbmVk KF9fbGludXhfXykKLSAjICAgIGRlZmluZSBFSVBfc2lnKHApICgocCktPnVjX21jb250ZXh0Lmdy ZWdzW1JFR19FSVBdKQotICMgICAgZGVmaW5lIEVCUF9zaWcocCkgKChwKS0+dWNfbWNvbnRleHQu Z3JlZ3NbUkVHX0VCUF0pCi0gIyAgICBkZWZpbmUgRVNQX3NpZyhwKSAoKHApLT51Y19tY29udGV4 dC5ncmVnc1tSRUdfRVNQXSkKLSAjICBlbHNlCi1AQCAtMTQ3LDE2ICsxNDgsMTcgQEAgdXNpbmcg bW96aWxsYTo6RGVidWdPbmx5OwotICMgIGlmIGRlZmluZWQoX19saW51eF9fKSAmJiAoZGVmaW5l ZChfX3NwYXJjX18pICYmIGRlZmluZWQoX19hcmNoNjRfXykpCi0gIyAgICBkZWZpbmUgUENfc2ln KHApICgocCktPnVjX21jb250ZXh0Lm1jX2dyZWdzW01DX1BDXSkKLSAjICAgIGRlZmluZSBGUF9z aWcocCkgKChwKS0+dWNfbWNvbnRleHQubWNfZnApCi0gIyAgICBkZWZpbmUgU1Bfc2lnKHApICgo cCktPnVjX21jb250ZXh0Lm1jX2k3KQotICMgIGVuZGlmCi0gIyAgaWYgZGVmaW5lZChfX2xpbnV4 X18pICYmIChkZWZpbmVkKF9fcHBjNjRfXykgfHwgZGVmaW5lZChfX1BQQzY0X18pIHx8IFwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQoX19wcGM2NGxlX18pIHx8IGRlZmlu ZWQoX19QUEM2NExFX18pKQotICMgICAgZGVmaW5lIFIwMV9zaWcocCkgKChwKS0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxXSkKLSsjICAgIGRlZmluZSBSMzFfc2lnKHApICgocCktPnVjX21jb250ZXh0 LmdwX3JlZ3NbMzFdKQotICMgICAgZGVmaW5lIFIzMl9zaWcocCkgKChwKS0+dWNfbWNvbnRleHQu Z3BfcmVnc1szMl0pCi0gIyAgZW5kaWYKLSAjZWxpZiBkZWZpbmVkKF9fTmV0QlNEX18pCi0gIyAg ZGVmaW5lIEVJUF9zaWcocCkgKChwKS0+dWNfbWNvbnRleHQuX19ncmVnc1tfUkVHX0VJUF0pCi0g IyAgZGVmaW5lIEVCUF9zaWcocCkgKChwKS0+dWNfbWNvbnRleHQuX19ncmVnc1tfUkVHX0VCUF0p Ci0gIyAgZGVmaW5lIEVTUF9zaWcocCkgKChwKS0+dWNfbWNvbnRleHQuX19ncmVnc1tfUkVHX0VT UF0pCi0gIyAgZGVmaW5lIFJJUF9zaWcocCkgKChwKS0+dWNfbWNvbnRleHQuX19ncmVnc1tfUkVH X1JJUF0pCi0gIyAgZGVmaW5lIFJTUF9zaWcocCkgKChwKS0+dWNfbWNvbnRleHQuX19ncmVnc1tf UkVHX1JTUF0pCi1AQCAtMTczLDE2ICsxNzUsMTcgQEAgdXNpbmcgbW96aWxsYTo6RGVidWdPbmx5 OwotICMgIGVuZGlmCi0gIyAgaWYgZGVmaW5lZChfX21pcHNfXykKLSAjICAgIGRlZmluZSBFUENf c2lnKHApICgocCktPnVjX21jb250ZXh0Ll9fZ3JlZ3NbX1JFR19FUENdKQotICMgICAgZGVmaW5l IFJGUF9zaWcocCkgKChwKS0+dWNfbWNvbnRleHQuX19ncmVnc1tfUkVHX1M4XSkKLSAjICBlbmRp ZgotICMgIGlmIGRlZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9fUFBDNjRfXykgfHwgZGVm aW5lZChfX3BwYzY0bGVfXykgfHwgXAotICAgICAgIGRlZmluZWQoX19QUEM2NExFX18pCi0gIyAg ICBkZWZpbmUgUjAxX3NpZyhwKSAoKHApLT51Y19tY29udGV4dC5fX2dyZWdzW19SRUdfUjFdKQot KyMgICAgZGVmaW5lIFIzMV9zaWcocCkgKChwKS0+dWNfbWNvbnRleHQuX19ncmVnc1tfUkVHX1Iz MV0pCi0gIyAgICBkZWZpbmUgUjMyX3NpZyhwKSAoKHApLT51Y19tY29udGV4dC5fX2dyZWdzW19S RUdfUENdKQotICMgIGVuZGlmCi0gI2VsaWYgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZp bmVkKF9fRnJlZUJTRF9fKSB8fCBcCi0gICAgIGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKQot ICMgIGRlZmluZSBFSVBfc2lnKHApICgocCktPnVjX21jb250ZXh0Lm1jX2VpcCkKLSAjICBkZWZp bmUgRUJQX3NpZyhwKSAoKHApLT51Y19tY29udGV4dC5tY19lYnApCi0gIyAgZGVmaW5lIEVTUF9z aWcocCkgKChwKS0+dWNfbWNvbnRleHQubWNfZXNwKQotICMgIGRlZmluZSBSSVBfc2lnKHApICgo cCktPnVjX21jb250ZXh0Lm1jX3JpcCkKLUBAIC0yMDcsMTYgKzIxMCwxNyBAQCB1c2luZyBtb3pp bGxhOjpEZWJ1Z09ubHk7Ci0gIyAgZW5kaWYKLSAjICBpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm JiBkZWZpbmVkKF9fbWlwc19fKQotICMgICAgZGVmaW5lIEVQQ19zaWcocCkgKChwKS0+dWNfbWNv bnRleHQubWNfcGMpCi0gIyAgICBkZWZpbmUgUkZQX3NpZyhwKSAoKHApLT51Y19tY29udGV4dC5t Y19yZWdzWzMwXSkKLSAjICBlbmRpZgotICMgIGlmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIChk ZWZpbmVkKF9fcHBjNjRfXykgfHwgZGVmaW5lZChfX1BQQzY0X18pIHx8IFwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZChfX3BwYzY0bGVfXykgfHwgZGVmaW5lZChfX1BQ QzY0TEVfXykpCi0gIyAgICBkZWZpbmUgUjAxX3NpZyhwKSAoKHApLT51Y19tY29udGV4dC5tY19n cHJbMV0pCi0rIyAgICBkZWZpbmUgUjMxX3NpZyhwKSAoKHApLT51Y19tY29udGV4dC5tY19ncHJb MzFdKQotICMgICAgZGVmaW5lIFIzMl9zaWcocCkgKChwKS0+dWNfbWNvbnRleHQubWNfc3JyMCkK LSAjICBlbmRpZgotICNlbGlmIGRlZmluZWQoWFBfREFSV0lOKQotICMgIGRlZmluZSBFSVBfc2ln KHApICgocCktPnRocmVhZC51dHMudHMzMi5fX2VpcCkKLSAjICBkZWZpbmUgRUJQX3NpZyhwKSAo KHApLT50aHJlYWQudXRzLnRzMzIuX19lYnApCi0gIyAgZGVmaW5lIEVTUF9zaWcocCkgKChwKS0+ dGhyZWFkLnV0cy50czMyLl9fZXNwKQotICMgIGRlZmluZSBSSVBfc2lnKHApICgocCktPnRocmVh ZC5fX3JpcCkKLSAjICBkZWZpbmUgUkJQX3NpZyhwKSAoKHApLT50aHJlYWQuX19yYnApCi1AQCAt MzY3LDE3ICszNzEsMTcgQEAgc3RydWN0IG1hY29zX2FhcmNoNjRfY29udGV4dCB7Ci0gIyAgZGVm aW5lIFBDX3NpZyhwKSBFUENfc2lnKHApCi0gIyAgZGVmaW5lIEZQX3NpZyhwKSBSRlBfc2lnKHAp Ci0gIyAgZGVmaW5lIFNQX3NpZyhwKSBSU1Bfc2lnKHApCi0gIyAgZGVmaW5lIExSX3NpZyhwKSBS MzFfc2lnKHApCi0gI2VsaWYgZGVmaW5lZChfX3BwYzY0X18pIHx8IGRlZmluZWQoX19QUEM2NF9f KSB8fCBkZWZpbmVkKF9fcHBjNjRsZV9fKSB8fCBcCi0gICAgIGRlZmluZWQoX19QUEM2NExFX18p Ci0gIyAgZGVmaW5lIFBDX3NpZyhwKSBSMzJfc2lnKHApCi0gIyAgZGVmaW5lIFNQX3NpZyhwKSBS MDFfc2lnKHApCi0tIyAgZGVmaW5lIEZQX3NpZyhwKSBSMDFfc2lnKHApCi0rIyAgZGVmaW5lIEZQ X3NpZyhwKSBSMzFfc2lnKHApCi0gI2VuZGlmCi0gCi0gc3RhdGljIHZvaWQgU2V0Q29udGV4dFBD KENPTlRFWFQqIGNvbnRleHQsIHVpbnQ4X3QqIHBjKSB7Ci0gI2lmZGVmIFBDX3NpZwotICAgKnJl aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCoqPigmUENfc2lnKGNvbnRleHQpKSA9IHBjOwotICNlbHNl Ci0gICBNT1pfQ1JBU0goKTsKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9qcy9zcmMvd2FzbS9XYXNt U3R1YnMuY3BwIGIvanMvc3JjL3dhc20vV2FzbVN0dWJzLmNwcAotaW5kZXggNTlhNWNmMThiZi4u ZGJjMTBjNmUyYyAxMDA2NDQKLS0tLSBhL2pzL3NyYy93YXNtL1dhc21TdHVicy5jcHAKLSsrKyBi L2pzL3NyYy93YXNtL1dhc21TdHVicy5jcHAKLUBAIC03MTksMTcgKzcxOSwxNyBAQCBzdGF0aWMg Ym9vbCBHZW5lcmF0ZUludGVycEVudHJ5KE1hY3JvQXNzZW1ibGVyJiBtYXNtLCBjb25zdCBGdW5j RXhwb3J0JiBmZSwKLSAgIEFzc2VydEV4cGVjdGVkU1AobWFzbSk7Ci0gICBtYXNtLmhhbHRpbmdB bGlnbihDb2RlQWxpZ25tZW50KTsKLSAKLSAgIG9mZnNldHMtPmJlZ2luID0gbWFzbS5jdXJyZW50 T2Zmc2V0KCk7Ci0gCi0gICAvLyBTYXZlIHRoZSByZXR1cm4gYWRkcmVzcyBpZiBpdCB3YXNuJ3Qg YWxyZWFkeSBzYXZlZCBieSB0aGUgY2FsbCBpbnNuLgotICNpZmRlZiBKU19VU0VfTElOS19SRUdJ U1RFUgotICMgIGlmIGRlZmluZWQoSlNfQ09ERUdFTl9BUk0pIHx8IGRlZmluZWQoSlNfQ09ERUdF Tl9NSVBTMzIpIHx8IFwKLS0gICAgICBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQotKyAgICAg IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkK LSAgIG1hc20ucHVzaFJldHVybkFkZHJlc3MoKTsKLSAjICBlbGlmIGRlZmluZWQoSlNfQ09ERUdF Tl9BUk02NCkKLSAgIC8vIFdhc21QdXNoIHVwZGF0ZXMgZnJhbWVQdXNoZWQoKSB1bmxpa2UgcHVz aFJldHVybkFkZHJlc3MoKSwgYnV0IHRoYXQncwotICAgLy8gY2FuY2VsbGVkIGJ5IHRoZSBzZXRG cmFtZVB1c2hlZCgpIGJlbG93LgotICAgV2FzbVB1c2gobWFzbSwgbHIpOwotICMgIGVsc2UKLSAg IE1PWl9DUkFTSCgiSW1wbGVtZW50IHRoaXMiKTsKLSAjICBlbmRpZgotQEAgLTIxMTEsMTcgKzIx MTEsMjYgQEAgc3RhdGljIGJvb2wgR2VuZXJhdGVJbXBvcnRJbnRlcnBFeGl0KE1hY3JvQXNzZW1i bGVyJiBtYXNtLCBjb25zdCBGdW5jSW1wb3J0JiBmaSwKLSAgICAgbWFzbS5zdG9yZVB0cihzY3Jh dGNoLAotICAgICAgICAgICAgICAgICAgIEFkZHJlc3MobWFzbS5nZXRTdGFja1BvaW50ZXIoKSwg aS0+b2Zmc2V0RnJvbUFyZ0Jhc2UoKSkpOwotICAgfQotICAgaSsrOwotICAgTU9aX0FTU0VSVChp LmRvbmUoKSk7Ci0gCi0gICAvLyBNYWtlIHRoZSBjYWxsLCB0ZXN0IHdoZXRoZXIgaXQgc3VjY2Vl ZGVkLCBhbmQgZXh0cmFjdCB0aGUgcmV0dXJuIHZhbHVlLgotICAgQXNzZXJ0U3RhY2tBbGlnbm1l bnQobWFzbSwgQUJJU3RhY2tBbGlnbm1lbnQpOwotKyNpZmRlZiBKU19DT0RFR0VOX1BQQzY0Ci0r ICAvLyBCZWNhdXNlIHRoaXMgaXMgY2FsbGluZyBhbiBBQkktY29tcGxpYW50IGZ1bmN0aW9uLCB3 ZSBoYXZlIHRvIHB1bGwgZG93bgotKyAgLy8gYSBkdW1teSBsaW5rYWdlIGFyZWEgb3IgdGhlIHZh bHVlcyBvbiB0aGUgc3RhY2sgd2lsbCBiZSBzdG9tcGVkIG9uLiBUaGUKLSsgIC8vIG1pbmltdW0g c2l6ZSBpcyBzdWZmaWNpZW50LgotKyAgbWFzbS5hc19hZGRpKG1hc20uZ2V0U3RhY2tQb2ludGVy KCksIG1hc20uZ2V0U3RhY2tQb2ludGVyKCksIC0zMik7Ci0rI2VuZGlmCi0gICBtYXNtLmNhbGwo U3ltYm9saWNBZGRyZXNzOjpDYWxsSW1wb3J0X0dlbmVyYWwpOwotKyNpZmRlZiBKU19DT0RFR0VO X1BQQzY0Ci0rICBtYXNtLmFzX2FkZGkobWFzbS5nZXRTdGFja1BvaW50ZXIoKSwgbWFzbS5nZXRT dGFja1BvaW50ZXIoKSwgMzIpOwotKyNlbmRpZgotICAgbWFzbS5icmFuY2hUZXN0MzIoQXNzZW1i bGVyOjpaZXJvLCBSZXR1cm5SZWcsIFJldHVyblJlZywgdGhyb3dMYWJlbCk7Ci0gCi0gICBSZXN1 bHRUeXBlIHJlc3VsdFR5cGUgPSBSZXN1bHRUeXBlOjpWZWN0b3IoZmkuZnVuY1R5cGUoKS5yZXN1 bHRzKCkpOwotICAgVmFsVHlwZSByZWdpc3RlclJlc3VsdFR5cGU7Ci0gICBmb3IgKEFCSVJlc3Vs dEl0ZXIgaXRlcihyZXN1bHRUeXBlKTsgIWl0ZXIuZG9uZSgpOyBpdGVyLm5leHQoKSkgewotICAg ICBpZiAoaXRlci5jdXIoKS5pblJlZ2lzdGVyKCkpIHsKLSAgICAgICBNT1pfQVNTRVJUKCFyZWdp c3RlclJlc3VsdFR5cGUuaXNWYWxpZCgpKTsKLSAgICAgICByZWdpc3RlclJlc3VsdFR5cGUgPSBp dGVyLmN1cigpLnR5cGUoKTsKLUBAIC0yNjczLDE2ICsyNjgyLDIxIEBAIHN0YXRpYyBjb25zdCBM aXZlUmVnaXN0ZXJTZXQgUmVnc1RvUHJlc2VydmUoCi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VO X1g4NikgfHwgZGVmaW5lZChKU19DT0RFR0VOX1g2NCkKLSAvLyBJdCdzIGNvcnJlY3QgdG8gdXNl IEZsb2F0UmVnaXN0ZXJzOjpBbGxNYXNrIGV2ZW4gd2hlbiBTSU1EIGlzIG5vdCBlbmFibGVkOwot IC8vIFB1c2hSZWdzSW5NYXNrIHN0cmlwcyBvdXQgdGhlIGhpZ2ggbGFuZXMgb2YgdGhlIFhNTSBy ZWdpc3RlcnMgaW4gdGhpcyBjYXNlLAotIC8vIHdoaWxlIHRoZSBzaW5nbGVzIHdpbGwgYmUgc3Ry aXBwZWQgYXMgdGhleSBhcmUgYWxpYXNlZCBieSB0aGUgbGFyZ2VyIGRvdWJsZXMuCi0gc3RhdGlj IGNvbnN0IExpdmVSZWdpc3RlclNldCBSZWdzVG9QcmVzZXJ2ZSgKLSAgICAgR2VuZXJhbFJlZ2lz dGVyU2V0KFJlZ2lzdGVyczo6QWxsTWFzayAmCi0gICAgICAgICAgICAgICAgICAgICAgICB+KFJl Z2lzdGVyczo6U2V0VHlwZSgxKSA8PCBSZWdpc3RlcnM6OlN0YWNrUG9pbnRlcikpLAotICAgICBG bG9hdFJlZ2lzdGVyU2V0KEZsb2F0UmVnaXN0ZXJzOjpBbGxNYXNrKSk7Ci0rI2VsaWYgZGVmaW5l ZChKU19DT0RFR0VOX1BQQzY0KQotKy8vIE5vdGUgdGhhdCB0aGlzIGluY2x1ZGVzIG5vIFNQUnMs IHNpbmNlIHRoZSBKSVQgaXMgdW5hd2FyZSBvZiB0aGVtLgotK3N0YXRpYyBjb25zdCBMaXZlUmVn aXN0ZXJTZXQgUmVnc1RvUHJlc2VydmUoCi0rICAgIEdlbmVyYWxSZWdpc3RlclNldChSZWdpc3Rl cnM6OkFsbE1hc2spLAotKyAgICBGbG9hdFJlZ2lzdGVyU2V0KEZsb2F0UmVnaXN0ZXJzOjpBbGxN YXNrKSk7Ci0gI2Vsc2UKLSBzdGF0aWMgY29uc3QgTGl2ZVJlZ2lzdGVyU2V0IFJlZ3NUb1ByZXNl cnZlKAotICAgICBHZW5lcmFsUmVnaXN0ZXJTZXQoMCksIEZsb2F0UmVnaXN0ZXJTZXQoRmxvYXRS ZWdpc3RlcnM6OkFsbERvdWJsZU1hc2spKTsKLSAjICBpZmRlZiBFTkFCTEVfV0FTTV9TSU1ECi0g IyAgICBlcnJvciAibm8gU0lNRCBzdXBwb3J0IgotICMgIGVuZGlmCi0gI2VuZGlmCi0gCi1kaWZm IC0tZ2l0IGEvbW9kdWxlcy9saWJwcmVmL2luaXQvU3RhdGljUHJlZkxpc3QueWFtbCBiL21vZHVs ZXMvbGlicHJlZi9pbml0L1N0YXRpY1ByZWZMaXN0LnlhbWwKLWluZGV4IGQ4MTAyNWIyODIuLjQz Yjc1YzZhZTAgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2xpYnByZWYvaW5pdC9TdGF0aWNQcmVmTGlz dC55YW1sCi0rKysgYi9tb2R1bGVzL2xpYnByZWYvaW5pdC9TdGF0aWNQcmVmTGlzdC55YW1sCi1A QCAtNTcyOSwxNyArNTcyOSwxNyBAQAotIC0gbmFtZTogamF2YXNjcmlwdC5vcHRpb25zLmJhc2Vs aW5laml0Ci0gICB0eXBlOiBib29sCi0gICB2YWx1ZTogdHJ1ZQotICAgbWlycm9yOiBhbHdheXMg ICMgTG9hZFN0YXJ0dXBKU1ByZWZzCi0gICBkb19ub3RfdXNlX2RpcmVjdGx5OiB0cnVlCi0gCi0g LSBuYW1lOiBqYXZhc2NyaXB0Lm9wdGlvbnMuaW9uCi0gICB0eXBlOiBib29sCi0tICB2YWx1ZTog dHJ1ZQotKyAgdmFsdWU6IGZhbHNlCi0gICBtaXJyb3I6IGFsd2F5cyAgIyBMb2FkU3RhcnR1cEpT UHJlZnMKLSAgIGRvX25vdF91c2VfZGlyZWN0bHk6IHRydWUKLSAKLSAjIFRoZSBpcnJlZ2V4cCBK SVQgZm9yIHJlZ2V4IGV2YWx1YXRpb24uCi0gLSBuYW1lOiBqYXZhc2NyaXB0Lm9wdGlvbnMubmF0 aXZlX3JlZ2V4cAotICAgdHlwZTogYm9vbAotICAgdmFsdWU6IHRydWUKLSAgIG1pcnJvcjogYWx3 YXlzICAjIExvYWRTdGFydHVwSlNQcmVmcwotQEAgLTU5NjgsMTcgKzU5NjgsMTcgQEAKLSAgIHZh bHVlOiA2ICogMTAyNCAqIDEwMjQKLSAjZWxzZQotICAgdmFsdWU6IDIgKiAxMDI0ICogMTAyNAot ICNlbmRpZgotICAgbWlycm9yOiBhbHdheXMKLSAKLSAtIG5hbWU6IGphdmFzY3JpcHQub3B0aW9u cy53YXNtX29wdGltaXppbmdqaXQKLSAgIHR5cGU6IGJvb2wKLS0gIHZhbHVlOiB0cnVlCi0rICB2 YWx1ZTogZmFsc2UKLSAgIG1pcnJvcjogYWx3YXlzCi0gCi0gI2lmIGRlZmluZWQoRU5BQkxFX1dB U01fU0lNRCkKLSAtICAgbmFtZTogamF2YXNjcmlwdC5vcHRpb25zLndhc21fc2ltZAotICAgICB0 eXBlOiBib29sCi0gICAgIHZhbHVlOiB0cnVlCi0gICAgIG1pcnJvcjogYWx3YXlzCi0gI2VuZGlm ICAvLyBkZWZpbmVkKEVOQUJMRV9XQVNNX1NJTUQpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZpcmVm b3gtZXNyL3BhdGNoZXMvc2tpYS1zdWNrczMucGF0Y2ggYi9zcmNwa2dzL2ZpcmVmb3gtZXNyL3Bh dGNoZXMvc2tpYS1zdWNrczMucGF0Y2gKaW5kZXggOTA4MzExY2RiNmRiLi40YmY3N2U2ODQ0MDUg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9za2lhLXN1Y2tzMy5wYXRj aAorKysgYi9zcmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNoZXMvc2tpYS1zdWNrczMucGF0Y2gKQEAg LTMwLDI3ICszMCwzIEBAIGRpZmYgLXIgNDZlYTg2NmNhM2FjIC1yIDZlZjIwZWVlM2Y4ZiBnZngv MmQvRHJhd1RhcmdldFNraWEuY3BwCiAgICBtQ2FudmFzLT5zYXZlTGF5ZXIoc2F2ZVJlYyk7CiAg CiAgICBTZXRQZXJtaXRTdWJwaXhlbEFBKGFPcGFxdWUpOwotLS0tIGEvZ2Z4L2xheWVycy9jb21w b3NpdGUvQ29tcG9zaXRhYmxlSG9zdC5jcHAKLSsrKyBiL2dmeC9sYXllcnMvY29tcG9zaXRlL0Nv bXBvc2l0YWJsZUhvc3QuY3BwCi1AQCAtMTMsNiArMTMsNyBAQAotICNpbmNsdWRlICJJbWFnZUhv c3QuaCIgIC8vIGZvciBJbWFnZUhvc3RCdWZmZXJlZCwgZXRjCi0gI2luY2x1ZGUgIkxheWVycy5o IgotICNpbmNsdWRlICJUaWxlZENvbnRlbnRIb3N0LmgiICAvLyBmb3IgVGlsZWRDb250ZW50SG9z dAotKyNpbmNsdWRlICJtb3ppbGxhL0VuZGlhblV0aWxzLmgiCi0gI2luY2x1ZGUgIm1vemlsbGEv Z2Z4L2dmeFZhcnMuaCIKLSAjaW5jbHVkZSAibW96aWxsYS9sYXllcnMvTGF5ZXJzU3VyZmFjZXMu aCIgIC8vIGZvciBTdXJmYWNlRGVzY3JpcHRvcgotICNpbmNsdWRlICJtb3ppbGxhL2xheWVycy9U ZXh0dXJlSG9zdC5oIiAgICAgLy8gZm9yIFRleHR1cmVIb3N0LCBldGMKLUBAIC05Miw5ICs5Mywx MyBAQCBib29sIENvbXBvc2l0YWJsZUhvc3Q6OkFkZE1hc2tFZmZlY3QoRWZmZWN0Q2hhaW4mIGFF ZmZlY3RzLAotICAgfQotICAgTU9aX0FTU0VSVChzb3VyY2UpOwotIAotKyAgLy8gU2V0dGluZyBh biBhbHBoYS1tYXNrIGhlcmUgYnJlYWtzIHRoZSBVUkwtYmFyIG9uIGJpZyBlbmRpYW4gKHMzOTB4 KQotKyAgLy8gaWYgdGhlIHR5cGVkIFVSTCBpcyB0b28gbG9uZyBmb3IgdGhlIHRleHRib3ggKGF1 dG9tYXRpYyBzY3JvbGxpbmcgbmVlZGVkKQotKyNpZiBNT1pfTElUVExFX0VORElBTigpCi0gICBS ZWZQdHI8RWZmZWN0TWFzaz4gZWZmZWN0ID0KLSAgICAgICBuZXcgRWZmZWN0TWFzayhzb3VyY2Us IHNvdXJjZS0+R2V0U2l6ZSgpLCBhVHJhbnNmb3JtKTsKLSAgIGFFZmZlY3RzLm1TZWNvbmRhcnlF ZmZlY3RzW0VmZmVjdFR5cGVzOjpNQVNLXSA9IGVmZmVjdDsKLSsjZW5kaWYKLSAgIHJldHVybiB0 cnVlOwotIH0KLSAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9zbmRp by5wYXRjaCBiL3NyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9zbmRpby5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg2MjhiZWE4ZDhmLi4wMDAwMDAwMDAwMDAKLS0tIGEv c3JjcGtncy9maXJlZm94LWVzci9wYXRjaGVzL3NuZGlvLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsNTIgKzAsMCBAQAotLS0tIGEvb2xkLWNvbmZpZ3VyZS5pbgotKysrIGIvb2xkLWNvbmZpZ3Vy ZS5pbgotQEAgLTI4MTgsNiArMjgxOCwyMiBAQAotICAgICBfTk9OX0dMT0JBTF9BQ0RFRklORVM9 IiRfTk9OX0dMT0JBTF9BQ0RFRklORVMgTkVDS09fQ09PS0lFUyIKLSBmaQotIAotK2RubCA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rZG5sID0gQ2hlY2sgc25kaW8gYXZhaWxh YmlsaXR5Ci0rZG5sID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsKLStNT1pf QVJHX0VOQUJMRV9CT09MKHNuZGlvLAotK1sgIC0tZW5hYmxlLXNuZGlvICAgICAgICAgRW5hYmxl IHNuZGlvIHN1cHBvcnRdLAotKyAgIE1PWl9TTkRJTz0xLAotKyAgIE1PWl9TTkRJTz0pCi0rCi0r aWYgdGVzdCAtbiAiJE1PWl9TTkRJTyI7IHRoZW4KLSsgICAgTU9aX1NORElPX0xJQlM9Ii1sc25k aW8iCi0rICAgIEFDX1NVQlNUX0xJU1QoTU9aX1NORElPX0xJQlMpCi0rZmkKLSsKLStBQ19TVUJT VChNT1pfU05ESU8pCi0rCi0gZG5sID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0gZG5sID0KLSBkbmwgPSBNYWludGFpbmVyIGRlYnVnIG9w dGlvbiAobm8gLS1lbmFibGUgZXF1aXZhbGVudCkKLS0tLSBhL21lZGlhL2xpYmN1YmViL3NyYy9t b3ouYnVpbGQKLSsrKyBiL21lZGlhL2xpYmN1YmViL3NyYy9tb3ouYnVpbGQKLUBAIC00NCwxMSAr NDQsMTMgQEAKLSAgICAgXQotICAgICBERUZJTkVTWydVU0VfSkFDSyddID0gVHJ1ZQotIAotLWlm IENPTkZJR1snT1NfQVJDSCddID09ICdPcGVuQlNEJzoKLStpZiBDT05GSUdbJ01PWl9TTkRJTydd OgotICAgICBTT1VSQ0VTICs9IFsKLSAgICAgICAgICdjdWJlYl9zbmRpby5jJywKLSAgICAgXQot ICAgICBERUZJTkVTWydVU0VfU05ESU8nXSA9IFRydWUKLSsKLStpZiBDT05GSUdbJ09TX0FSQ0gn XSA9PSAnT3BlbkJTRCc6Ci0gICAgIERFRklORVNbJ0RJU0FCTEVfTElCU05ESU9fRExPUEVOJ10g PSBUcnVlCi0gCi0gaWYgQ09ORklHWydPU19UQVJHRVQnXSA9PSAnRGFyd2luJzoKLS0tLSBhL2J1 aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZQkyMDIwLTA2LTMwIDEyOjE3OjA0LjA4NzYw OTA3MCArMDIwMAotKysrIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS9vbGQuY29uZmlndXJlCTIwMjAt MDYtMzAgMTI6MTc6MDQuMDg3NjA5MDcwICswMjAwCi1AQCAtODgsNiArODgsNyBAQAotIEBvbGRf Y29uZmlndXJlX29wdGlvbnMoCi0gICAgICItLWNhY2hlLWZpbGUiLAotICAgICAiLS1kYXRhZGly IiwKLSsgICAgIi0tZW5hYmxlLXNuZGlvIiwKLSAgICAgIi0tZW5hYmxlLWNyYXNocmVwb3J0ZXIi LAotICAgICAiLS1lbmFibGUtZGJ1cyIsCi0gICAgICItLWVuYWJsZS1kZWJ1Zy1qcy1tb2R1bGVz IiwKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9zcWxpdGUtcHBjLnBh dGNoIGIvc3JjcGtncy9maXJlZm94LWVzci9wYXRjaGVzL3NxbGl0ZS1wcGMucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41MWY3ZmFhNjE4ZGQKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNoZXMvc3FsaXRlLXBwYy5wYXRjaApA QCAtMCwwICsxLDU1IEBACitGcm9tIDY3MTU3YjFhYTdkYTBhMTQ2YjdkMmQ1YWJiOTIzN2VlYTFm NDM0ZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEYW5pZWwgS29sZXNhIDxkYW5p ZWxAb2N0YWZvcmdlLm9yZz4KK0RhdGU6IEZyaSwgMjMgU2VwIDIwMjIgMDI6Mzg6MjkgKzAyMDAK K1N1YmplY3Q6IFtQQVRDSF0gZml4IHNxbGl0ZTMgb24gcHBjIHdpdGggY2xhbmcKKworVGhlIF9f cHBjX18gbWFjcm8gaXMgYWx3YXlzIGRlZmluZWQgb24gY2xhbmcgYnV0IG5vdCBnY2MsIHdoaWNo CityZXN1bHRzIGluIHNxbGl0ZSBtaXN0YWtlbmx5IHRoaW5raW5nIHRoYXQgcHBjNjRsZSB3aXRo IGNsYW5nCitpcyBiaWcgZW5kaWFuLgorCitBbHNvIGRpc2FibGUgc29tZSBpbmxpbmUgYXNzZW1i bHkgc3R1ZmYgb24gcHBjIHRoYXQgaXMgbmV2ZXIgdXNlZAord2l0aCBnY2MgYW5kIHByb2JhYmx5 IHdhcyBuZXZlciB0ZXN0ZWQgd2l0aCBtb2Rlcm4gbWFjaGluZXMuCistLS0KKyB0aGlyZF9wYXJ0 eS9zcWxpdGUzL3NyYy9zcWxpdGUzLmMgfCAxMCArKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQs IDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3RoaXJkX3Bh cnR5L3NxbGl0ZTMvc3JjL3NxbGl0ZTMuYyBiL3RoaXJkX3BhcnR5L3NxbGl0ZTMvc3JjL3NxbGl0 ZTMuYworaW5kZXggNGYzZGM2OC4uOTAxNzA2MiAxMDA2NDQKKy0tLSBhL3RoaXJkX3BhcnR5L3Nx bGl0ZTMvc3JjL3NxbGl0ZTMuYworKysrIGIvdGhpcmRfcGFydHkvc3FsaXRlMy9zcmMvc3FsaXRl My5jCitAQCAtMTQzMTcsOSArMTQzMTcsOSBAQCB0eXBlZGVmIElOVDE2X1RZUEUgTG9nRXN0Owor ICMgaWYgZGVmaW5lZChpMzg2KSAgICAgIHx8IGRlZmluZWQoX19pMzg2X18pICAgICAgfHwgZGVm aW5lZChfTV9JWDg2KSB8fCAgICBcCisgICAgICBkZWZpbmVkKF9feDg2XzY0KSAgfHwgZGVmaW5l ZChfX3g4Nl82NF9fKSAgICB8fCBkZWZpbmVkKF9NX1g2NCkgIHx8ICAgIFwKKyAgICAgIGRlZmlu ZWQoX01fQU1ENjQpICB8fCBkZWZpbmVkKF9NX0FSTSkgICAgICAgIHx8IGRlZmluZWQoX194ODYp ICAgfHwgICAgXAorLSAgICAgZGVmaW5lZChfX0FSTUVMX18pIHx8IGRlZmluZWQoX19BQVJDSDY0 RUxfXykgfHwgZGVmaW5lZChfTV9BUk02NCkKKysgICAgIGRlZmluZWQoX19BUk1FTF9fKSB8fCBk ZWZpbmVkKF9fQUFSQ0g2NEVMX18pIHx8IGRlZmluZWQoX01fQVJNNjQpIHx8IGRlZmluZWQoX19M SVRUTEVfRU5ESUFOX18pCisgIyAgIGRlZmluZSBTUUxJVEVfQllURU9SREVSICAgIDEyMzQKKy0j IGVsaWYgZGVmaW5lZChzcGFyYykgICAgIHx8IGRlZmluZWQoX19wcGNfXykgfHwgXAorKyMgZWxp ZiBkZWZpbmVkKHNwYXJjKSAgICAgfHwgZGVmaW5lZChfX0JJR19FTkRJQU5fXykgfHwgXAorICAg ICAgICBkZWZpbmVkKF9fQVJNRUJfXykgfHwgZGVmaW5lZChfX0FBUkNINjRFQl9fKQorICMgICBk ZWZpbmUgU1FMSVRFX0JZVEVPUkRFUiAgICA0MzIxCisgIyBlbHNlCitAQCAtMjA3MTMsNyArMjA3 MTMsNyBAQCBTUUxJVEVfUFJJVkFURSBjb25zdCBjaGFyICoqc3FsaXRlM0NvbXBpbGVPcHRpb25z KGludCAqcG5PcHQpOworICAgICAgIHJldHVybiB2YWw7CisgICB9CisgCistI2VsaWYgIWRlZmlu ZWQoX19TVFJJQ1RfQU5TSV9fKSAmJiAoZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX3Bw Y19fKSkKKysjZWxpZiAwCisgCisgICBfX2lubGluZV9fIHNxbGl0ZV91aW50NjQgc3FsaXRlM0h3 dGltZSh2b2lkKXsKKyAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmV0dmFsOworQEAgLTE5NjM4 NSw5ICsxOTYzODUsOSBAQCBzdHJ1Y3QgUnRyZWVNYXRjaEFyZyB7CisgI2lmIGRlZmluZWQoaTM4 NikgICAgIHx8IGRlZmluZWQoX19pMzg2X18pICAgfHwgZGVmaW5lZChfTV9JWDg2KSB8fCAgICBc CisgICAgIGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5l ZChfTV9YNjQpICB8fCAgICBcCisgICAgIGRlZmluZWQoX01fQU1ENjQpIHx8IGRlZmluZWQoX01f QVJNKSAgICAgfHwgZGVmaW5lZChfX3g4NikgICB8fCAgICBcCistICAgIGRlZmluZWQoX19hcm1f XykKKysgICAgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fTElUVExFX0VORElBTl9fKQor ICMgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgMTIzNAorLSNlbGlmIGRlZmluZWQoc3BhcmMp ICAgIHx8IGRlZmluZWQoX19wcGNfXykKKysjZWxpZiBkZWZpbmVkKHNwYXJjKSAgICB8fCBkZWZp bmVkKF9fQklHX0VORElBTl9fKQorICMgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgNDMyMQor ICNlbHNlCisgIyBkZWZpbmUgU1FMSVRFX0JZVEVPUkRFUiAgICAwICAgICAvKiAwIG1lYW5zICJ1 bmtub3duIGF0IGNvbXBpbGUtdGltZSIgKi8KKy0tIAorMi4zNy4zCisKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvZmlyZWZveC1lc3IvdGVtcGxhdGUgYi9zcmNwa2dzL2ZpcmVmb3gtZXNyL3RlbXBsYXRl CmluZGV4IDU4YzA2NTY0OWJjNC4uNTdjOTFmY2M5ODYwIDEwMDY0NAotLS0gYS9zcmNwa2dzL2Zp cmVmb3gtZXNyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmlyZWZveC1lc3IvdGVtcGxhdGUKQEAg LTMsNyArMyw3IEBACiAjIFRISVMgUEtHIE1VU1QgQkUgU1lOQ0hST05JWkVEIFdJVEggInNyY3Br Z3MvZmlyZWZveC1lc3ItaTE4biIuCiAjCiBwa2duYW1lPWZpcmVmb3gtZXNyCi12ZXJzaW9uPTkx LjEwLjAKK3ZlcnNpb249MTAyLjMuMAogcmV2aXNpb249MQogd3Jrc3JjPSJmaXJlZm94LSR7dmVy c2lvbn0iCiBidWlsZF9oZWxwZXI9InJ1c3QiCkBAIC0xMSwyNyArMTEsMjggQEAgc2hvcnRfZGVz Yz0iTW96aWxsYSBGaXJlZm94IHdlYiBicm93c2VyIC0gRXh0ZW5kZWQgU3VwcG9ydCBSZWxlYXNl IgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9 Ik1QTC0yLjAsIEdQTC0yLjAtb3ItbGF0ZXIsIExHUEwtMi4xLW9yLWxhdGVyIgogaG9tZXBhZ2U9 Imh0dHBzOi8vd3d3Lm1vemlsbGEub3JnL2ZpcmVmb3gvIgotZGlzdGZpbGVzPSIke01PWklMTEFf U0lURX0vZmlyZWZveC9yZWxlYXNlcy8ke3ZlcnNpb259ZXNyL3NvdXJjZS9maXJlZm94LSR7dmVy c2lvbn1lc3Iuc291cmNlLnRhci54egotIGh0dHBzOi8vZ2l0aHViLmNvbS9jaG1lZWVkYWxmL2dl Y2tvLWRldi9maWxlcy83NzI5MDg2L2VzcnBwY2ppdC50YXIuZ3oiCi1jaGVja3N1bT0iODI1YThj YjM4YmI1ZGE5ODIxZWY4N2NjNmRlNjRhZjAwN2NmMGZhZWYwN2M0ZWQwNjUxMjgzYjU2YTBlZTFi YgotIDVlOTI2YThiZTVkNmQ0OTQ5YzNiYzNlYjk4ZTIxMDM2OTJlYWEyNmE5ODkyOGRiNDMyYjFk NDRiNTM1ZjcyNDEiCitkaXN0ZmlsZXM9IiR7TU9aSUxMQV9TSVRFfS9maXJlZm94L3JlbGVhc2Vz LyR7dmVyc2lvbn1lc3Ivc291cmNlL2ZpcmVmb3gtJHt2ZXJzaW9ufWVzci5zb3VyY2UudGFyLnh6 IgorY2hlY2tzdW09MzA4ZTIzYjZkY2Y5NjRlMzQyY2Y5NWZkMGM4YTM4NjEyNzM3MWI2MjBhNDg5 YWUyNmU1MzdkNzI4MzQxYjU1YQogCiBsaWIzMmRpc2FibGVkPXllcwogCiBob3N0bWFrZWRlcGVu ZHM9ImF1dG9jb25mMjEzIHVuemlwIHppcCBwa2ctY29uZmlnIHBlcmwgcHl0aG9uMyB5YXNtIHJ1 c3QgY2FyZ28KLSBsbHZtIGNsYW5nIG5vZGVqcy1sdHMgY2JpbmRnZW4gcHl0aG9uIG5hc20gd2hp Y2ggdGFyIgorIGxsdm0gY2xhbmcgbGxkIG5vZGVqcyBjYmluZGdlbiBuYXNtIHdoaWNoIHRhciIK IG1ha2VkZXBlbmRzPSJuc3MtZGV2ZWwgbGlianBlZy10dXJiby1kZXZlbCBndGsrMy1kZXZlbCBp Y3UtZGV2ZWwKLSBwaXhtYW4tZGV2ZWwgbGliZXZlbnQtZGV2ZWwgbGlibm90aWZ5LWRldmVsIGxp YnZweC1kZXZlbAorIHBpeG1hbi1kZXZlbCBsaWJldmVudC1kZXZlbCBsaWJub3RpZnktZGV2ZWwg bGlidnB4LWRldmVsIGxpYndlYnAtZGV2ZWwKICBsaWJYcmVuZGVyLWRldmVsIGxpYlhjb21wb3Np dGUtZGV2ZWwgbGliU00tZGV2ZWwgbGliWHQtZGV2ZWwgcnVzdC1zdGQKLSBsaWJYZGFtYWdlLWRl dmVsIGZyZWV0eXBlLWRldmVsICQodm9wdF9pZiBhbHNhIGFsc2EtbGliLWRldmVsKQotICQodm9w dF9pZiBkYnVzIGRidXMtZ2xpYi1kZXZlbCkgJCh2b3B0X2lmIHB1bHNlYXVkaW8gcHVsc2VhdWRp by1kZXZlbCkKLSAkKHZvcHRfaWYgeHNjcmVlbnNhdmVyIGxpYlhTY3JuU2F2ZXItZGV2ZWwpCisg bGliWGRhbWFnZS1kZXZlbCBmcmVldHlwZS1kZXZlbCBsaWJhdG9taWMtZGV2ZWwKKyAkKHZvcHRf aWYgYWxzYSBhbHNhLWxpYi1kZXZlbCkgJCh2b3B0X2lmIGRidXMgZGJ1cy1nbGliLWRldmVsKQor ICQodm9wdF9pZiBwdWxzZWF1ZGlvIHB1bHNlYXVkaW8tZGV2ZWwpICQodm9wdF9pZiB4c2NyZWVu c2F2ZXIgbGliWFNjcm5TYXZlci1kZXZlbCkKICAkKHZvcHRfaWYgc25kaW8gc25kaW8tZGV2ZWwp ICQodm9wdF9pZiBqYWNrIGphY2stZGV2ZWwpIgotZGVwZW5kcz0ibnNzPj0zLjY2IG5zcHI+PTQu MzIgZGVza3RvcC1maWxlLXV0aWxzIGhpY29sb3ItaWNvbi10aGVtZSIKK2RlcGVuZHM9Im5zcz49 My43MiBuc3ByPj00LjMyIGRlc2t0b3AtZmlsZS11dGlscyBoaWNvbG9yLWljb24tdGhlbWUiCiBj b25mbGljdHM9ImZpcmVmb3g+PTAiCiAKLWJ1aWxkX29wdGlvbnM9ImFsc2EgamFjayBkYnVzIHB1 bHNlYXVkaW8geHNjcmVlbnNhdmVyIHNuZGlvIHdheWxhbmQiCi1idWlsZF9vcHRpb25zX2RlZmF1 bHQ9ImFsc2EgamFjayBkYnVzIHB1bHNlYXVkaW8geHNjcmVlbnNhdmVyIHNuZGlvIHdheWxhbmQi CitidWlsZF9vcHRpb25zPSJhbHNhIGphY2sgZGJ1cyBwdWxzZWF1ZGlvIHhzY3JlZW5zYXZlciBz bmRpbyB3YXlsYW5kIGx0byBjbGFuZyIKK2J1aWxkX29wdGlvbnNfZGVmYXVsdD0iYWxzYSBqYWNr IGRidXMgcHVsc2VhdWRpbyB4c2NyZWVuc2F2ZXIgc25kaW8gd2F5bGFuZCBjbGFuZyIKKworZGVz Y19vcHRpb25fbHRvPSJFbmFibGUgTGluayBUaW1lIE9wdGltaXphdGlvbiIKK2Rlc2Nfb3B0aW9u X2NsYW5nPSJCdWlsZCB3aXRoIGNsYW5nIgogCiBjYXNlICRYQlBTX1RBUkdFVF9NQUNISU5FIGlu CiAJYXJtdls1Nl0qKSBicm9rZW49InJlcXVpcmVkIE5FT04gZXh0ZW5zaW9ucyBhcmUgbm90IHN1 cHBvcnRlZCBvbiBhcm12NiIgOzsKQEAgLTM5LDE2ICs0MCw2IEBAIGNhc2UgJFhCUFNfVEFSR0VU X01BQ0hJTkUgaW4KIAlwcGMqKSBicm9rZW49InhwdGNhbGwgYml0cm90IiA7OwogZXNhYwogCi1p ZiBbICIkWEJQU19UQVJHRVRfTk9fQVRPTUlDOCIgXTsgdGhlbgotCW1ha2VkZXBlbmRzKz0iIGxp YmF0b21pYy1kZXZlbCIKLWZpCi0KLSMgd29yayBhcm91bmQgbGFyZ2UgZGVidWcgc3ltYm9scyBv biAzMi1iaXQgaG9zdHMKLSMgY2FyZ286d2FybmluZz1jYzFwbHVzOiBvdXQgb2YgbWVtb3J5IGFs bG9jYXRpbmcgNjU1MzYgYnl0ZXMgYWZ0ZXIgYSB0b3RhbCBvZiAxMDEwMTI2ODQ4IGJ5dGVzCi1p ZiBbICIkWEJQU19XT1JEU0laRSIgPSAiMzIiIF07IHRoZW4KLQlub2RlYnVnPXllcwotZmkKLQog IyB3ZSBuZWVkIHRoaXMgYmVjYXVzZSBjYXJnbyB2ZXJpZmllcyBjaGVja3N1bXMgb2YgYWxsIGZp bGVzIGluIHZlbmRvcgogIyBjcmF0ZXMgd2hlbiBpdCBidWlsZHMgYW5kIGdpdmVzIHVzIG5vIHdh eSB0byBvdmVycmlkZSBvciB1cGRhdGUgdGhlCiAjIGZpbGUgc2FuZWx5Li4uIHNvIGp1c3QgY2xl YXIgb3V0IHRoZSBmaWxlIGxpc3QKQEAgLTYzLDEwMSArNTQsMTc0IEBAIHBvc3RfZXh0cmFjdCgp IHsKIAkJOzsKIAllc2FjCiAKLQkjIHBwYzY0bGUgaml0LCBzZWUgLS1lbmFibGUtaml0IGxhdGVy Ci0JbXYgLi4vanMvc3JjL2ppdC9wcGM2NCBqcy9zcmMvaml0Ci0KIAkjIE1vemlsbGEgQVBJIGtl eXMgKHNlZSBodHRwczovL2xvY2F0aW9uLnNlcnZpY2VzLm1vemlsbGEuY29tL2FwaSkKIAkjIE5v dGU6IFRoaXMgaXMgZm9yIFZvaWQgTGludXggdXNlIE9OTFkuCiAJZWNobyAtbiAiY2Q4OTQ1MDQt N2EyYS00MjYzLWFiZmYtZmY3M2VlODlmZmNhIiA+IG1vemlsbGEtYXBpLWtleQogfQogCiBwb3N0 X3BhdGNoKCkgewotCV9jbGVhcl92ZW5kb3JfY2hlY2tzdW1zIG51bS10cmFpdHMKKwk6ICMgX2Ns ZWFyX3ZlbmRvcl9jaGVja3N1bXMgbnVtLXRyYWl0cwogfQogCiBkb19idWlsZCgpIHsKLQljcCAi JHtGSUxFU0RJUn0vbW96Y29uZmlnIiAiJHt3cmtzcmN9Ly5tb3pjb25maWciCi0KLQljYXNlICIk WEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQkqLW11c2wpCi0JCWVjaG8gImFjX2FkZF9vcHRpb25z IC0tZGlzYWJsZS1qZW1hbGxvYyIgPj4ubW96Y29uZmlnCi0JCWVjaG8gImFjX2FkZF9vcHRpb25z IC0tZGlzYWJsZS1nb2xkIiA+Pi5tb3pjb25maWcKLQkJOzsKLQllc2FjCi0KLQljYXNlICIkWEJQ U19UQVJHRVRfTUFDSElORSIgaW4KLQl4ODZfNjQqfGk2ODYqfGFybSopCi0JCWVjaG8gImFjX2Fk ZF9vcHRpb25zIC0tZGlzYWJsZS1lbGYtaGFjayIgPj4ubW96Y29uZmlnCi0JCTs7Ci0JZXNhYwot Ci0JIyB3ZWJydGMgY3VycmVudGx5IGZhaWxzIHRvIGJ1aWxkIG9uIDMyLWJpdCBwcGMuLi4KLQkj IGFsc28gZW5hYmxlIGppdCBvbiBwcGM2NGxlLCB3aGljaCBpcyBwYXRjaGVkIGluIGVhcmxpZXIK LSAgICAgICAgIyBodHRwczovL3d3dy50YWxvc3BhY2UuY29tLzIwMjEvMTIvOTFlc3Itd2l0aC1i YXNlbGluZS1jb21waWxlcmJhc2VsaW5lLmh0bWwKLQljYXNlICIkWEJQU19UQVJHRVRfTUFDSElO RSIgaW4KLQlwcGM2NGxlKikgZWNobyAiYWNfYWRkX29wdGlvbnMgLS1lbmFibGUtaml0IiA+Pi5t b3pjb25maWcgOzsKLQlwcGM2NCopIGVjaG8gImFjX2FkZF9vcHRpb25zIC0tZGlzYWJsZS1qaXQi ID4+Lm1vemNvbmZpZyA7OwotCXBwYyopCi0JCWVjaG8gImFjX2FkZF9vcHRpb25zIC0tZGlzYWJs ZS1qaXQiID4+Lm1vemNvbmZpZwotCQllY2hvICJhY19hZGRfb3B0aW9ucyAtLWRpc2FibGUtd2Vi cnRjIiA+Pi5tb3pjb25maWcKLQkJOzsKLQllc2FjCi0KLQlpZiBbICIkWEJQU19UQVJHRVRfTk9f QVRPTUlDOCIgXTsgdGhlbgotCQlleHBvcnQgTERGTEFHUys9IiAtbGF0b21pYyIKLQlmaQotCi0J aWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCi0JCUJJTkRHRU5fSU5DTFVERV9GTEFHUz0kKCAk Q1BQIC14IGMrKyAtdiAvZGV2L251bGwgLW8gL2Rldi9udWxsIDI+JjEgfCBcCi0JCQlzZWQgLW4g Jy8jaW5jbHVkZSA8Li4uPiBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0 Li9wJyB8IFwKLQkJCXNlZCAnMSwxZDskZCcgfCBzZWQgICdzL14gLy1JLycgfCBwYXN0ZSAtcyAp Ci0KLQkJZXhwb3J0IEJJTkRHRU5fQ0ZMQUdTPSItLXRhcmdldD0kWEJQU19DUk9TU19UUklQTEVU IFwKLQkJCS0tc3lzcm9vdD0ke1hCUFNfQ1JPU1NfQkFTRX0gJHtCSU5ER0VOX0lOQ0xVREVfRkxB R1N9IgotCQlleHBvcnQgSE9TVF9DQz1jYwotCQlleHBvcnQgVEFSR0VUX0NDPSIke0NDfSIKLQkJ ZXhwb3J0IEhPU1RfQ0ZMQUdTPSIke1hCUFNfQ0ZMQUdTfSIKLQkJZXhwb3J0IEhPU1RfQ1hYRkxB R1M9IiR7WEJQU19DWFhGTEFHU30iCi0JCWV4cG9ydCBhY19jdl9zcWxpdGVfc2VjdXJlX2RlbGV0 ZT15ZXMgXAotCQkJYWNfY3Zfc3FsaXRlX3RocmVhZHNhZmU9eWVzIFwKLQkJCWFjX2N2X3NxbGl0 ZV9lbmFibGVfZnRzMz15ZXMgXAotCQkJYWNfY3Zfc3FsaXRlX2Ric3RhdF92dGFiPXllcyBcCi0J CQlhY19jdl9zcWxpdGVfZW5hYmxlX3VubG9ja19ub3RpZnk9eWVzIFwKLQkJCWFjX2N2X3Byb2df aG9zdGN4eF93b3Jrcz0xCi0KLQkJZWNobyAiYWNfYWRkX29wdGlvbnMgLS10YXJnZXQ9JFhCUFNf Q1JPU1NfVFJJUExFVCIgPj4ubW96Y29uZmlnCi0JCWVjaG8gImFjX2FkZF9vcHRpb25zIC0taG9z dD0kWEJQU19UUklQTEVUIiA+Pi5tb3pjb25maWcKLQllbHNlCi0JCWVjaG8gImFjX2FkZF9vcHRp b25zIC0tdGFyZ2V0PSRYQlBTX1RSSVBMRVQiID4+Lm1vemNvbmZpZwotCQllY2hvICJhY19hZGRf b3B0aW9ucyAtLWhvc3Q9JFhCUFNfVFJJUExFVCIgPj4ubW96Y29uZmlnCisJaWYgWyAiJGJ1aWxk X29wdGlvbl9jbGFuZyIgXTsgdGhlbgorCQlleHBvcnQgQ0M9Y2xhbmcKKwkJZXhwb3J0IENYWD1j bGFuZysrCisKKwkJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCisJCQlta2RpciAtcCB3cmFw cGVyCisKKwkJCWxvY2FsIGdjY192ZXJzaW9uPSQoZ2NjIC1kdW1wdmVyc2lvbikKKwkJCWxvY2Fs IGNsYW5nX3ZlcnNpb249JChjbGFuZyAtZHVtcHZlcnNpb24pCisKKwkJCWNhdCA8PC0hID4id3Jh cHBlci8ke1hCUFNfVEFSR0VUX01BQ0hJTkV9LWNsYW5nIgorCQkJIyEvYmluL3NoCisJCQlleGVj IGNsYW5nIFwKKwkJCQktLXRhcmdldD0iJHtYQlBTX0NST1NTX1RSSVBMRVR9IiBcCisJCQkJLS1n Y2MtdG9vbGNoYWluPS91c3IgXAorCQkJCS0tc3lzcm9vdD0iJHtYQlBTX0NST1NTX0JBU0V9IiBc CisJCQkJLW5vc3RkaW5jIFwKKwkJCQktaXN5c3RlbSAiJHtYQlBTX0NST1NTX0JBU0V9L3Vzci9p bmNsdWRlIiBcCisJCQkJLWlzeXN0ZW0gIi91c3IvbGliL2NsYW5nLyR7Y2xhbmdfdmVyc2lvbn0v aW5jbHVkZSIgXAorCQkJCSJcJEAiCisJCQkhCisKKwkJCWNhdCA8PC0hID4id3JhcHBlci8ke1hC UFNfVEFSR0VUX01BQ0hJTkV9LWNsYW5nKysiCisJCQkjIS9iaW4vc2gKKwkJCWV4ZWMgY2xhbmcr KyBcCisJCQkJLS10YXJnZXQ9IiR7WEJQU19DUk9TU19UUklQTEVUfSIgXAorCQkJCS0tZ2NjLXRv b2xjaGFpbj0vdXNyIFwKKwkJCQktLXN5c3Jvb3Q9IiR7WEJQU19DUk9TU19CQVNFfSIgXAorCQkJ CS1ub3N0ZGluYysrIFwKKwkJCQktaXN5c3RlbSAiJHtYQlBTX0NST1NTX0JBU0V9L3Vzci9pbmNs dWRlL2MrKy8ke2djY192ZXJzaW9uJS4qfSIgXAorCQkJCS1pc3lzdGVtICIke1hCUFNfQ1JPU1Nf QkFTRX0vdXNyL2luY2x1ZGUvYysrLyR7Z2NjX3ZlcnNpb24lLip9LyR7WEJQU19DUk9TU19UUklQ TEVUfSIgXAorCQkJCS1pc3lzdGVtICIke1hCUFNfQ1JPU1NfQkFTRX0vdXNyL2luY2x1ZGUvYysr LyR7Z2NjX3ZlcnNpb24lLip9L2JhY2t3YXJkIiBcCisJCQkJLW5vc3RkaW5jIFwKKwkJCQktaXN5 c3RlbSAiJHtYQlBTX0NST1NTX0JBU0V9L3Vzci9pbmNsdWRlIiBcCisJCQkJLWlzeXN0ZW0gIi91 c3IvbGliL2NsYW5nLyR7Y2xhbmdfdmVyc2lvbn0vaW5jbHVkZSIgXAorCQkJCSJcJEAiCisJCQkh CisKKwkJCWNobW9kICt4IHdyYXBwZXIvKgorCisJCQlleHBvcnQgUEFUSD0iJHt3cmtzcmN9L3dy YXBwZXI6JFBBVEgiCisJCQlleHBvcnQgQ0M9JHtYQlBTX1RBUkdFVF9NQUNISU5FfS1jbGFuZwor CQkJZXhwb3J0IENYWD0ke1hCUFNfVEFSR0VUX01BQ0hJTkV9LWNsYW5nKysKKwkJZmkKKworCQll eHBvcnQgQVI9bGx2bS1hcgorCQlleHBvcnQgTk09bGx2bS1ubQorCQlleHBvcnQgSE9TVF9DQz1j bGFuZworCQlleHBvcnQgSE9TVF9DWFg9Y2xhbmcrKwogCWZpCiAKLQlta2RpciAtcCB0aGlyZF9w YXJ0eS9ydXN0L2xpYmxvYWRpbmcvLmRlcHMKLQotCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5F IiBpbgotCWFybXY3KikKLQkJZXhwb3J0IENGTEFHUys9IiAtbWZwdT1uZW9uIC1Xbm8tcHNhYmki Ci0JCWV4cG9ydCBDWFhGTEFHUys9IiAtbWZwdT1uZW9uIC1Xbm8tcHNhYmkiCi0JCTs7Ci0JZXNh YworCWV4cG9ydCBBUz0iJHtDQ30iCisJZXhwb3J0IENGTEFHUz0iLU8yIgorCWV4cG9ydCBDWFhG TEFHUz0iLU8yIgorCWV4cG9ydCBIT1NUX0NGTEFHUz0iIgorCWV4cG9ydCBIT1NUX0NYWEZMQUdT PSIiCisJZXhwb3J0IExERkxBR1M9Ii1XbCwtcnBhdGg9L3Vzci9saWIvZmlyZWZveCIKKwkjIGV4 cG9ydCBMREZMQUdTKz0iLVdsLC0tdGhyZWFkcz0ke1hCUFNfTUFLRUpPQlN9IgorCisJZGlzYWJs ZV9qZW1hbGxvYygpIHsKKwkJaWYgWyAiJFhCUFNfVEFSR0VUX0xJQkMiID0gIm11c2wiIF07IHRo ZW4KKwkJCWVjaG8gImFjX2FkZF9vcHRpb25zIC0tZGlzYWJsZS1qZW1hbGxvYyIKKwkJZmkKKwl9 CisKKwlkaXNhYmxlX2VsZmhhY2soKSB7CisJCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBp bgorCQl4ODZfNjQqfGk2ODYqfGFybSp8YWFyY2g2NCopIGVjaG8gImFjX2FkZF9vcHRpb25zIC0t ZGlzYWJsZS1lbGYtaGFjayIgOzsKKwkJZXNhYworCX0KKworCWRpc2FibGVfd2VicnRjKCkgewor CQkjIGl0IHNlZW1zIG1vemlsbGEgaGFzIHN0YXJ0ZWQgY2F0Y2hpbmcgdXAgd2l0aCBnb29nbGUn cyB3ZWJydGMKKwkJIyBhbmQgdGhpcyBuZXdseSBpbnZvbHZlcyBpbnRyb2R1Y2luZyBzZXZlcmFs IG1lZ2FieXRlcyBvZiBnZW5lcmF0ZWQKKwkJIyBqc29uIGp1bmsgdGhhdCB3ZSBqdXN0IGNhbm5v dCBtYWludGFpbiBpbi10cmVlLCBhZGRpdGlvbmFsbHkgdGhleQorCQkjIGhhdmUgaW5kaWNhdGVk IHRoYXQgdGhleSB3aWxsIGJlIHJlLWdlbmVyYXRpbmcgdGhlc2UgZnJlcXVlbnRseQorCQkjCisJ CSMgaXQgaXMgdW5hY2NlcHRhYmxlIHRvIGtlZXAgYSA3TUIgcGF0Y2ggZG93bnN0cmVhbSwgc28g ZGlzYWJsZSBpdAorCQkjCisJCSMgaHR0cHM6Ly9waGFicmljYXRvci5zZXJ2aWNlcy5tb3ppbGxh LmNvbS9EMTM0NzM4CisJCSMKKwkJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCXBw YzY0bGUqfGFybXY3bCopIGVjaG8gImFjX2FkZF9vcHRpb25zIC0tZGlzYWJsZS13ZWJydGMiIDs7 CisJCWVzYWMKKworCQkjIHRoaXJkX3BhcnR5L2xpYndlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2Zp bGUuY2M6OTM6MjogZXJyb3I6CisJCSMgI2Vycm9yICJOZWVkIHRvIGNvbnZlcnQgc2FtcGxlcyB0 byBiaWctZW5kaWFuIHdoZW4gcmVhZGluZyBmcm9tIFdBViBmaWxlIgorCQlpZiBbICIkWEJQU19U QVJHRVRfRU5ESUFOIiA9ICJiZSIgXTsgdGhlbgorCQkJZWNobyAiYWNfYWRkX29wdGlvbnMgLS1k aXNhYmxlLXdlYnJ0YyIKKwkJZmkKKwl9CisKKwljYXQgPDwtISA+Lm1vemNvbmZpZworCWFjX2Fk ZF9vcHRpb25zIC0tcHJlZml4PS91c3IKKwlhY19hZGRfb3B0aW9ucyAtLWxpYmRpcj0vdXNyL2xp YgorCWFjX2FkZF9vcHRpb25zIC0taG9zdD0ke1hCUFNfVFJJUExFVH0KKwlhY19hZGRfb3B0aW9u cyAtLXRhcmdldD0ke1hCUFNfQ1JPU1NfVFJJUExFVDotJHtYQlBTX1RSSVBMRVR9fQorCWFjX2Fk ZF9vcHRpb25zIC0tZW5hYmxlLWxpbmtlcj0kKHZvcHRfaWYgY2xhbmcgbGxkIGJmZCkKKwkkKHZv cHRfaWYgbHRvICdhY19hZGRfb3B0aW9ucyAtLWVuYWJsZS1sdG89Y3Jvc3MnKQorCSQodm9wdF9p ZiBjbGFuZyAnYWNfYWRkX29wdGlvbnMgLS13aXRoLWxpYmNsYW5nLXBhdGg9L3Vzci9saWInKQor CisJYWNfYWRkX29wdGlvbnMgLS1lbmFibGUtb2ZmaWNpYWwtYnJhbmRpbmcKKwlhY19hZGRfb3B0 aW9ucyAtLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyCisJYWNfYWRkX29wdGlvbnMgLS1lbmFi bGUtcmVsZWFzZQorCWFjX2FkZF9vcHRpb25zIC0tZW5hYmxlLWhhcmRlbmluZworCWFjX2FkZF9v cHRpb25zIC0tZW5hYmxlLW9wdGltaXplPSJcJHtDRkxBR1N9IgorCWFjX2FkZF9vcHRpb25zIC0t ZW5hYmxlLXBhdGgtcmVtYXBwaW5nPWMscnVzdAorCWFjX2FkZF9vcHRpb25zIC0tZGlzYWJsZS10 ZXN0cworCWFjX2FkZF9vcHRpb25zIC0tZGlzYWJsZS1jcmFzaHJlcG9ydGVyCisJYWNfYWRkX29w dGlvbnMgLS1kaXNhYmxlLXVwZGF0ZXIKKwlhY19hZGRfb3B0aW9ucyAtLWRpc2FibGUtaW5zdGFs bC1zdHJpcAorCWFjX2FkZF9vcHRpb25zIC0tZGlzYWJsZS1zdHJpcAorCWFjX2FkZF9vcHRpb25z IC0tZGlzYWJsZS1wcm9maWxpbmcKKwkkKGRpc2FibGVfamVtYWxsb2MpCisJJChkaXNhYmxlX2Vs ZmhhY2spCisJJChkaXNhYmxlX3dlYnJ0YykKKworCSMgWFhYOiB3YXNpIGN1cnJlbnRseSBub3Qg cmVhZHkKKwkjIGFjX2FkZF9vcHRpb25zIC0td2l0aC13YXNpLXN5c3Jvb3Q9L3Vzci9zaGFyZS93 YXNpLXN5c3Jvb3QKKwlhY19hZGRfb3B0aW9ucyAtLXdpdGhvdXQtd2FzbS1zYW5kYm94ZWQtbGli cmFyaWVzCisKKwlhY19hZGRfb3B0aW9ucyAtLXdpdGgtbW96aWxsYS1hcGkta2V5ZmlsZT0iJHt3 cmtzcmN9L21vemlsbGEtYXBpLWtleSIKKworCWFjX2FkZF9vcHRpb25zIC0tZW5hYmxlLXN5c3Rl bS1waXhtYW4KKwlhY19hZGRfb3B0aW9ucyAtLXdpdGgtc3lzdGVtLWZmaQorCWFjX2FkZF9vcHRp b25zIC0td2l0aC1zeXN0ZW0taWN1CisJYWNfYWRkX29wdGlvbnMgLS13aXRoLXN5c3RlbS1qcGVn CisJYWNfYWRkX29wdGlvbnMgLS13aXRoLXN5c3RlbS1saWJldmVudAorCWFjX2FkZF9vcHRpb25z IC0td2l0aC1zeXN0ZW0tbGlidnB4CisJYWNfYWRkX29wdGlvbnMgLS13aXRoLXN5c3RlbS1uc3By CisJYWNfYWRkX29wdGlvbnMgLS13aXRoLXN5c3RlbS1uc3MKKwlhY19hZGRfb3B0aW9ucyAtLXdp dGgtc3lzdGVtLXdlYnAKKwlhY19hZGRfb3B0aW9ucyAtLXdpdGgtc3lzdGVtLXpsaWIKKwkjIFhY WDogdGhlIHN5c3RlbSdzIGxpYnBuZyBkb2Vzbid0IGhhdmUgQVBORyBzdXBwb3J0CisJYWNfYWRk X29wdGlvbnMgLS13aXRob3V0LXN5c3RlbS1wbmcKKworCWFjX2FkZF9vcHRpb25zIC0td2l0aC11 bnNpZ25lZC1hZGRvbi1zY29wZXM9YXBwLHN5c3RlbQorCWFjX2FkZF9vcHRpb25zIC0tYWxsb3ct YWRkb24tc2lkZWxvYWQKKworCWFjX2FkZF9vcHRpb25zICQodm9wdF9lbmFibGUgZGJ1cykKKwlh Y19hZGRfb3B0aW9ucyAkKHZvcHRfZW5hYmxlIGRidXMgbmVja28td2lmaSkKKwlhY19hZGRfb3B0 aW9ucyAtLWRpc2FibGUtYXVkaW8tYmFja2VuZHMKKwlhY19hZGRfb3B0aW9ucyAkKHZvcHRfZW5h YmxlIGFsc2EpCisJYWNfYWRkX29wdGlvbnMgJCh2b3B0X2VuYWJsZSBqYWNrKQorCWFjX2FkZF9v cHRpb25zICQodm9wdF9lbmFibGUgcHVsc2VhdWRpbykKKwlhY19hZGRfb3B0aW9ucyAkKHZvcHRf ZW5hYmxlIHNuZGlvKQorCWFjX2FkZF9vcHRpb25zIC0tZW5hYmxlLWRlZmF1bHQtdG9vbGtpdD0k KHZvcHRfaWYgd2F5bGFuZCAnY2Fpcm8tZ3RrMy13YXlsYW5kJyAnY2Fpcm8tZ3RrMycpCisKKwlN T1pfQVBQX1JFTU9USU5HTkFNRT1GaXJlZm94CisJIQogCiAJIyB3b3JrIGFyb3VuZCBsYXJnZSBk ZWJ1ZyBzeW1ib2xzIG9uIDMyLWJpdCBob3N0cwogCWlmIFsgIiRYQlBTX1dPUkRTSVpFIiA9ICIz MiIgXTsgdGhlbgogCQllY2hvICJhY19hZGRfb3B0aW9ucyAtLWRpc2FibGUtZGVidWctc3ltYm9s cyIgPj4ubW96Y29uZmlnCiAJCWVjaG8gImFjX2FkZF9vcHRpb25zIC0tZGlzYWJsZS1kZWJ1ZyIg Pj4ubW96Y29uZmlnCiAJCWV4cG9ydCBMREZMQUdTKz0iIC1XbCwtLW5vLWtlZXAtbWVtb3J5Igot CQkjIHBhdGNoIHRoZSBydXN0IGRlYnVnIGxldmVsLCB0aGlzIGlzIGhhcmRjb2RlZAotCQl2c2Vk IC1pICdzL2RlYnVnX2luZm8gPSAiMiIvZGVidWdfaW5mbyA9ICIwIi8nIFwKLQkJYnVpbGQvbW96 LmNvbmZpZ3VyZS90b29sY2hhaW4uY29uZmlndXJlCiAJZmkKIAotCWNhc2UgIiRYQlBTX1RBUkdF VF9NQUNISU5FIiBpbgotCWFhcmNoNjQqfGk2ODYqfHg4Nl82NCopCi0JCWVjaG8gImFjX2FkZF9v cHRpb25zIC0tZW5hYmxlLXJ1c3Qtc2ltZCIgPj4ubW96Y29uZmlnIDs7Ci0JZXNhYwotCi0JZXhw b3J0IExERkxBR1MrPSIgLVdsLC1ycGF0aD0vdXNyL2xpYi9maXJlZm94IgotCiAJaWYgWyAiJFNP VVJDRV9EQVRFX0VQT0NIIiBdOyB0aGVuCiAJCWV4cG9ydCBNT1pfQlVJTERfREFURT0kKGRhdGUg LS1kYXRlICJAJFNPVVJDRV9EQVRFX0VQT0NIIiAiKyVZJW0lZCVIJU0lUyIpCiAJZmkKQEAgLTE2 NSwyNiArMjI5LDE1IEBAIGRvX2J1aWxkKCkgewogCWV4cG9ydCBNT1pfTUFLRV9GTEFHUz0iJHtt YWtlam9ic30iCiAJZXhwb3J0IE1PWl9OT1NQQU09MQogCWV4cG9ydCBNT1pCVUlMRF9TVEFURV9Q QVRIPSIke3dya3NyY30vbW96YnVpbGQiCi0JZXhwb3J0IE1BQ0hfVVNFX1NZU1RFTV9QWVRIT049 MQotCi0JZXhwb3J0IEFTPSRDQwotCi0JY2F0IDw8ISA+Pi5tb3pjb25maWcKLWFjX2FkZF9vcHRp b25zIC0td2l0aC1tb3ppbGxhLWFwaS1rZXlmaWxlPSIke3dya3NyY30vbW96aWxsYS1hcGkta2V5 IgotYWNfYWRkX29wdGlvbnMgJCh2b3B0X2VuYWJsZSBhbHNhKQotYWNfYWRkX29wdGlvbnMgJCh2 b3B0X2VuYWJsZSBqYWNrKQotYWNfYWRkX29wdGlvbnMgJCh2b3B0X2VuYWJsZSBzbmRpbykKLWFj X2FkZF9vcHRpb25zICQodm9wdF9lbmFibGUgZGJ1cykKLWFjX2FkZF9vcHRpb25zICQodm9wdF9l bmFibGUgZGJ1cyBuZWNrby13aWZpKQotYWNfYWRkX29wdGlvbnMgJCh2b3B0X2VuYWJsZSBwdWxz ZWF1ZGlvKQotYWNfYWRkX29wdGlvbnMgLS1lbmFibGUtZGVmYXVsdC10b29sa2l0PSQodm9wdF9p ZiB3YXlsYW5kICdjYWlyby1ndGszLXdheWxhbmQnICdjYWlyby1ndGszJykKLSEKKwlleHBvcnQg TUFDSF9CVUlMRF9QWVRIT05fTkFUSVZFX1BBQ0tBR0VfU09VUkNFPXN5c3RlbQogCiAJcm0gLWYg b2xkLWNvbmZpZ3VyZQogCS4vbWFjaCBidWlsZAogfQorCiBkb19pbnN0YWxsKCkgewotCWV4cG9y dCBNQUNIX1VTRV9TWVNURU1fUFlUSE9OPTEKKwlleHBvcnQgTUFDSF9CVUlMRF9QWVRIT05fTkFU SVZFX1BBQ0tBR0VfU09VUkNFPXN5c3RlbQorCWV4cG9ydCBNT1pCVUlMRF9TVEFURV9QQVRIPSIk e3dya3NyY30vbW96YnVpbGQiCiAJREVTVERJUj0iJERFU1RESVIiIC4vbWFjaCBpbnN0YWxsCiAK IAl2aW5zdGFsbCAke0ZJTEVTRElSfS92ZW5kb3IuanMgNjQ0IHVzci9saWIvZmlyZWZveC9icm93 c2VyL2RlZmF1bHRzL3ByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZpcmVmb3gvcGF0 Y2hlcy9wcGM2NC13ZWJydGMucGF0Y2ggYi9zcmNwa2dzL2ZpcmVmb3gvcGF0Y2hlcy9wcGM2NC13 ZWJydGMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYWQ1 OGUwNGMzYzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZpcmVmb3gvcGF0Y2hlcy9wcGM2 NC13ZWJydGMucGF0Y2gKQEAgLTAsMCArMSwyMiBAQAorY29tbWl0IDIxNDk2N2U1Y2VhNjFmZjQ5 ZmIyMTgxMGU4ZDhjNzU1ZGI4NGY2ODIKK0F1dGhvcjogRGFuaWVsIEtvbGVzYSA8ZGFuaWVsQG9j dGFmb3JnZS5vcmc+CitEYXRlOiAgIFR1ZSBPY3QgNCAxMTo1MzowNiAyMDIyICswMjAwCisKKyAg ICBmaXggbGlid2VicnRjIG9uIHBwYzY0CisKK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9saWJ3 ZWJydGMvbW96LmJ1aWxkIGIvdGhpcmRfcGFydHkvbGlid2VicnRjL21vei5idWlsZAoraW5kZXgg ODU3OWY4Yi4uZDljYTc5ZCAxMDA2NDQKKy0tLSBhL3RoaXJkX3BhcnR5L2xpYndlYnJ0Yy9tb3ou YnVpbGQKKysrKyBiL3RoaXJkX3BhcnR5L2xpYndlYnJ0Yy9tb3ouYnVpbGQKK0BAIC01MjAsNyAr NTIwLDEwIEBAIGlmIENPTkZJR1siQ1BVX0FSQ0giXSA9PSAicHBjNjQiIGFuZCBDT05GSUdbIk9T X1RBUkdFVCJdID09ICJMaW51eCI6CisgICAgICAgICAiL3RoaXJkX3BhcnR5L2xpYndlYnJ0Yy9h cGkvYXVkaW9fY29kZWNzL2lzYWMvYXVkaW9fZGVjb2Rlcl9pc2FjX2Zsb2F0X2duIiwKKyAgICAg ICAgICIvdGhpcmRfcGFydHkvbGlid2VicnRjL2FwaS9hdWRpb19jb2RlY3MvaXNhYy9hdWRpb19l bmNvZGVyX2lzYWNfZmxvYXRfZ24iLAorICAgICAgICAgIi90aGlyZF9wYXJ0eS9saWJ3ZWJydGMv bW9kdWxlcy9hdWRpb19jb2RpbmcvaXNhY19jX2duIiwKKy0gICAgICAgICIvdGhpcmRfcGFydHkv bGlid2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2lzYWNfZ24iCisrICAgICAgICAiL3RoaXJk X3BhcnR5L2xpYndlYnJ0Yy9tb2R1bGVzL2F1ZGlvX2NvZGluZy9pc2FjX2duIiwKKysgICAgICAg ICIvdGhpcmRfcGFydHkvbGlid2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3Bf Y2FwdHVyZV9nZW5lcmljX2duIiwKKysgICAgICAgICIvdGhpcmRfcGFydHkvbGlid2VicnRjL21v ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZV9nbiIsCisrICAgICAgICAiL3Ro aXJkX3BhcnR5L2xpYndlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9wcmltaXRpdmVzX2du IgorICAgICBdCisgCisgaWYgQ09ORklHWyJDUFVfQVJDSCJdID09ICJ4ODYiIGFuZCBDT05GSUdb Ik9TX1RBUkdFVCJdID09ICJMaW51eCI6CmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZpcmVmb3gvdGVt cGxhdGUgYi9zcmNwa2dzL2ZpcmVmb3gvdGVtcGxhdGUKaW5kZXggMTNjNmQ0YzljOWYzLi44ZDM3 MzRkOWM4MDMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZmlyZWZveC90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2ZpcmVmb3gvdGVtcGxhdGUKQEAgLTE0NSw3ICsxNDUsNyBAQCBkb19idWlsZCgpIHsKIAkJ IyBodHRwczovL3BoYWJyaWNhdG9yLnNlcnZpY2VzLm1vemlsbGEuY29tL0QxMzQ3MzgKIAkJIwog CQljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQkJcHBjNjRsZSp8YXJtdjdsKikgZWNo byAiYWNfYWRkX29wdGlvbnMgLS1kaXNhYmxlLXdlYnJ0YyIgOzsKKwkJYXJtdjdsKikgZWNobyAi YWNfYWRkX29wdGlvbnMgLS1kaXNhYmxlLXdlYnJ0YyIgOzsKIAkJZXNhYwogCiAJCSMgdGhpcmRf cGFydHkvbGlid2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmlsZS5jYzo5MzoyOiBlcnJvcjoK --===============8226288164245926893==--