From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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: from inbox.vuxu.org (inbox.vuxu.org [IPv6:::1]) by inbox.vuxu.org (Postfix) with ESMTP id 7AC7F25FE0 for ; Tue, 25 Jun 2024 11:07:02 +0200 (CEST) Content-Type: multipart/mixed; boundary="===============1256760123569714532==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_thunderbird=28-i18n=29=3A_update_to_115=2E12=2E1?= To: ml@inbox.vuxu.org From: dataCobra Reply-to: ml@inbox.vuxu.org Message-ID: Date: Tue, 25 Jun 2024 11:07:02 +0200 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============1256760123569714532== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IGRhdGFDb2JyYSBhZ2FpbnN0IG1hc3RlciBv biB0aGUgdm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20vZGF0YUNv YnJhL3ZvaWQtcGFja2FnZXMgdGh1bmRlcmJpcmQKaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGlu dXgvdm9pZC1wYWNrYWdlcy9wdWxsLzUwOTg2Cgp0aHVuZGVyYmlyZCgtaTE4bik6IHVwZGF0ZSB0 byAxMTUuMTIuMQojIyMjIFRlc3RpbmcgdGhlIGNoYW5nZXMNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5n ZXMgaW4gdGhpcyBQUjogKipZRVMqKg0KDQojIyMjIExvY2FsIGJ1aWxkIHRlc3RpbmcNCi0gSSBi dWlsdCB0aGlzIFBSIGxvY2FsbHkgZm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsICh4ODZfNjQt Z2xpYmMpDQotIEkgYnVpbHQgdGhpcyBQUiBsb2NhbGx5IGZvciB0aGVzZSBhcmNoaXRlY3R1cmVz IChpZiBzdXBwb3J0ZWQuIG1hcmsgY3Jvc3NidWlsZHMpOg0KICAtIHg4Nl82NC1tdXNsDQogIC0g aTY4Ng0KDQpbY2kgc2tpcF0KCkEgcGF0Y2ggZmlsZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92 b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC81MDk4Ni5wYXRjaCBpcyBhdHRhY2hlZA== --===============1256760123569714532== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-thunderbird-50986.patch" RnJvbSA4ZDU2OTVlYmVmNmJmNTUwYWFmMDU1YWFiMTEyMDM2NmM2MDQ2MDk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBkYXRhQ29icmEgPGRhdGFjb2JyYUB0aGlua2JvdC5kZT4KRGF0 ZTogVHVlLCAyNSBKdW4gMjAyNCAxMTowMjozMCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMS8yXSB0 aHVuZGVyYmlyZDogdXBkYXRlIHRvIDExNS4xMi4yLgoKLS0tCiAuLi4vcnVzdDEuNzgtcGFja2Vk LXRvLXBvcnRhYmxlX3NpbWQucGF0Y2ggICAgfCAzNTgyIC0tLS0tLS0tLS0tLS0tLS0tCiAuLi4v cGF0Y2hlcy9ydXN0MS43OC1xY21zLXN0ZHNpbWQucGF0Y2ggICAgICAgfCAgIDY0IC0KIHNyY3Br Z3MvdGh1bmRlcmJpcmQvdGVtcGxhdGUgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIDMgZmls ZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAzNjQ4IGRlbGV0aW9ucygtKQogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvdGh1bmRlcmJpcmQvcGF0Y2hlcy9ydXN0MS43OC1wYWNrZWQtdG8t cG9ydGFibGVfc2ltZC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvdGh1bmRlcmJp cmQvcGF0Y2hlcy9ydXN0MS43OC1xY21zLXN0ZHNpbWQucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3RodW5kZXJiaXJkL3BhdGNoZXMvcnVzdDEuNzgtcGFja2VkLXRvLXBvcnRhYmxlX3NpbWQu cGF0Y2ggYi9zcmNwa2dzL3RodW5kZXJiaXJkL3BhdGNoZXMvcnVzdDEuNzgtcGFja2VkLXRvLXBv cnRhYmxlX3NpbWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwM2Y1Nzdk MDA5YTMzLi4wMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3RodW5kZXJiaXJkL3BhdGNoZXMv cnVzdDEuNzgtcGFja2VkLXRvLXBvcnRhYmxlX3NpbWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwzNTgyICswLDAgQEAKLUFkYXB0ZWQgZnJvbSBodHRwczovL2hnLm1vemlsbGEub3JnL21vemls bGEtY2VudHJhbC9yZXYvMWRiMmVmMTI2YTZhCi0tLQotCi0jIEhHIGNoYW5nZXNldCBwYXRjaAot IyBVc2VyIEhlbnJpIFNpdm9uZW4gPGhzaXZvbmVuQGhzaXZvbmVuLmZpPgotIyBEYXRlIDE3MTQ0 NjIxODQgMAotIyBOb2RlIElEIDFkYjJlZjEyNmE2YTg1NTVkYmY1MDM0NWUxNjQ5MmM5NzdiNDJl OTIKLSMgUGFyZW50ICBhNTQ1ZTg0YjM2NzRjNDg3OGYyZTYxOGI3YmNlMjMwNThmMmFjNjkwCi1C dWcgMTg4MjIwOSAtIFVwZGF0ZSBlbmNvZGluZ19ycyB0byAwLjguMzQgdG8gZGVhbCB3aXRoIHJ1 c3RjIGNoYW5nZXMuIHI9Z2xhbmRpdW0sc3VwcGx5LWNoYWluLXJldmlld2VycwotCi1EaWZmZXJl bnRpYWwgUmV2aXNpb246IGh0dHBzOi8vcGhhYnJpY2F0b3Iuc2VydmljZXMubW96aWxsYS5jb20v RDIwNzE2NwotCi1kaWZmIC0tZ2l0IGEvLmNhcmdvL2NvbmZpZy5pbiBiLy5jYXJnby9jb25maWcu aW4KLS0tLSBhLy5jYXJnby9jb25maWcuaW4KLSsrKyBiLy5jYXJnby9jb25maWcuaW4KLUBAIC0z NSwzMSArMzUsMzEgQEAgZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nZngtcnMvd2dwdSIKLSBy ZXYgPSAiZjcxYTFiYzczNmZkZTM3NTA5MjYyY2EwM2U5MWQ4ZjU2YTEzYWViNSIKLSByZXBsYWNl LXdpdGggPSAidmVuZG9yZWQtc291cmNlcyIKLSAKLSBbc291cmNlLiJnaXQraHR0cHM6Ly9naXRo dWIuY29tL2dsYW5kaXVtL3dhcnA/cmV2PTRhZjQ1ZmFlOTViYzk4YjBlYmExZWYwZGIxN2UxZGFj NDcxYmIyM2QiXQotIGdpdCA9ICJodHRwczovL2dpdGh1Yi5jb20vZ2xhbmRpdW0vd2FycCIKLSBy ZXYgPSAiNGFmNDVmYWU5NWJjOThiMGViYTFlZjBkYjE3ZTFkYWM0NzFiYjIzZCIKLSByZXBsYWNl LXdpdGggPSAidmVuZG9yZWQtc291cmNlcyIKLSAKLStbc291cmNlLiJnaXQraHR0cHM6Ly9naXRo dWIuY29tL2hzaXZvbmVuL2FueV9hbGxfd29ya2Fyb3VuZD9yZXY9N2ZiMWI3MDM0YzlmMTcyYWFk ZTIxZWUxYzg1NTRlOGQ4YTQ4YWY4MCJdCi0rZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNvbS9oc2l2 b25lbi9hbnlfYWxsX3dvcmthcm91bmQiCi0rcmV2ID0gIjdmYjFiNzAzNGM5ZjE3MmFhZGUyMWVl MWM4NTU0ZThkOGE0OGFmODAiCi0rcmVwbGFjZS13aXRoID0gInZlbmRvcmVkLXNvdXJjZXMiCi0r Ci0gW3NvdXJjZS4iZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9oc2l2b25lbi9jaGFyZGV0bmc/cmV2 PTM0ODRkM2UzZWJkYzg5MzE0OTNhYTVkZjRkN2VlOTM2MGE5MGU3NmIiXQotIGdpdCA9ICJodHRw czovL2dpdGh1Yi5jb20vaHNpdm9uZW4vY2hhcmRldG5nIgotIHJldiA9ICIzNDg0ZDNlM2ViZGM4 OTMxNDkzYWE1ZGY0ZDdlZTkzNjBhOTBlNzZiIgotIHJlcGxhY2Utd2l0aCA9ICJ2ZW5kb3JlZC1z b3VyY2VzIgotIAotIFtzb3VyY2UuImdpdCtodHRwczovL2dpdGh1Yi5jb20vaHNpdm9uZW4vY2hh cmRldG5nX2M/cmV2PWVkOGE0YzZmOTAwYTkwZDRkYmMxZDY0Yjg1NmU2MTQ5MGExYzM1NzAiXQot IGdpdCA9ICJodHRwczovL2dpdGh1Yi5jb20vaHNpdm9uZW4vY2hhcmRldG5nX2MiCi0gcmV2ID0g ImVkOGE0YzZmOTAwYTkwZDRkYmMxZDY0Yjg1NmU2MTQ5MGExYzM1NzAiCi0gcmVwbGFjZS13aXRo ID0gInZlbmRvcmVkLXNvdXJjZXMiCi0gCi0tW3NvdXJjZS4iZ2l0K2h0dHBzOi8vZ2l0aHViLmNv bS9oc2l2b25lbi9wYWNrZWRfc2ltZD9yZXY9ZTU4OGNlYjU2ODg3OGUxYTMxNTZlYTljZTU1MWQ1 YjYzZWYwY2RjNCJdCi0tZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNvbS9oc2l2b25lbi9wYWNrZWRf c2ltZCIKLS1yZXYgPSAiZTU4OGNlYjU2ODg3OGUxYTMxNTZlYTljZTU1MWQ1YjYzZWYwY2RjNCIK LS1yZXBsYWNlLXdpdGggPSAidmVuZG9yZWQtc291cmNlcyIKLS0KLSBbc291cmNlLiJnaXQraHR0 cHM6Ly9naXRodWIuY29tL2pma3RoYW1lL21hcHBlZF9oeXBoLmdpdD9yZXY9Yzc2NTFhMGNmZmZm NDE5OTZhZDEzYzQ0ZjY4OWJkOWNkMjE5MmMwMSJdCi0gZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNv bS9qZmt0aGFtZS9tYXBwZWRfaHlwaC5naXQiCi0gcmV2ID0gImM3NjUxYTBjZmZmZjQxOTk2YWQx M2M0NGY2ODliZDljZDIxOTJjMDEiCi0gcmVwbGFjZS13aXRoID0gInZlbmRvcmVkLXNvdXJjZXMi Ci0gCi0gW3NvdXJjZS4iZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhLXNwaWRlcm1vbmtl eS9qc3BhcmFndXM/cmV2PTY0YmEwOGUyNDc0OTYxNmRlMjM0NDExMmYyMjZkMWVmNGJhODkzYWUi XQotIGdpdCA9ICJodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS1zcGlkZXJtb25rZXkvanNwYXJh Z3VzIgotIHJldiA9ICI2NGJhMDhlMjQ3NDk2MTZkZTIzNDQxMTJmMjI2ZDFlZjRiYTg5M2FlIgot ZGlmZiAtLWdpdCBhL0NhcmdvLmxvY2sgYi9DYXJnby5sb2NrCi0tLS0gYS9DYXJnby5sb2NrCi0r KysgYi9DYXJnby5sb2NrCi1AQCAtODAsMTYgKzgwLDI1IEBAIGRlcGVuZGVuY2llcyA9IFsKLSBu YW1lID0gImFuZHJvaWRfc3lzdGVtX3Byb3BlcnRpZXMiCi0gdmVyc2lvbiA9ICIwLjEuNSIKLSBz b3VyY2UgPSAicmVnaXN0cnkraHR0cHM6Ly9naXRodWIuY29tL3J1c3QtbGFuZy9jcmF0ZXMuaW8t aW5kZXgiCi0gY2hlY2tzdW0gPSAiODE5ZTcyMTlkYmQ0MTA0M2FjMjc5YjE5ODMwZjJlZmM4OTcx NTY0OTBkN2ZkNmVhOTE2NzIwMTE3ZWU2NjMxMSIKLSBkZXBlbmRlbmNpZXMgPSBbCi0gICJsaWJj IiwKLSBdCi0gCi0rW1twYWNrYWdlXV0KLStuYW1lID0gImFueV9hbGxfd29ya2Fyb3VuZCIKLSt2 ZXJzaW9uID0gIjAuMS4wIgotK3NvdXJjZSA9ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hzaXZv bmVuL2FueV9hbGxfd29ya2Fyb3VuZD9yZXY9N2ZiMWI3MDM0YzlmMTcyYWFkZTIxZWUxYzg1NTRl OGQ4YTQ4YWY4MCM3ZmIxYjcwMzRjOWYxNzJhYWRlMjFlZTFjODU1NGU4ZDhhNDhhZjgwIgotK2Rl cGVuZGVuY2llcyA9IFsKLSsgImNmZy1pZiAxLjAuMCIsCi0rICJ2ZXJzaW9uX2NoZWNrIiwKLStd Ci0rCi0gW1twYWNrYWdlXV0KLSBuYW1lID0gImFueWhvdyIKLSB2ZXJzaW9uID0gIjEuMC42OSIK LSBzb3VyY2UgPSAicmVnaXN0cnkraHR0cHM6Ly9naXRodWIuY29tL3J1c3QtbGFuZy9jcmF0ZXMu aW8taW5kZXgiCi0gY2hlY2tzdW0gPSAiMjI0YWZiZDcyN2MzZDZlNGI5MDEwM2VjZTY0YjhkMWI2 N2ZiYjE5NzNiMTA0NmMyMjgxZWVkM2YzODAzZjgwMCIKLSAKLSBbW3BhY2thZ2VdXQotIG5hbWUg PSAiYXBwX3NlcnZpY2VzX2xvZ2dlciIKLUBAIC0xNDMxLDIyICsxNDQwLDIyIEBAIGRlcGVuZGVu Y2llcyA9IFsKLSAgImVuY29kaW5nX3JzIiwKLSAgIm5zZXJyb3IiLAotICAibnNzdHJpbmciLAot ICAieG1sZGVjbCIsCi0gXQotIAotIFtbcGFja2FnZV1dCi0gbmFtZSA9ICJlbmNvZGluZ19ycyIK LS12ZXJzaW9uID0gIjAuOC4zMyIKLSt2ZXJzaW9uID0gIjAuOC4zNCIKLSBzb3VyY2UgPSAicmVn aXN0cnkraHR0cHM6Ly9naXRodWIuY29tL3J1c3QtbGFuZy9jcmF0ZXMuaW8taW5kZXgiCi0tY2hl Y2tzdW0gPSAiNzI2OGIzODYyOTZhMDI1ZTQ3NGQ1MTQwNjc4Zjc1ZDZkZTk0OTNhZTU1YTVkNzA5 ZWViOWRkMDgxNDk5NDVlMSIKLStjaGVja3N1bSA9ICJiNDVkZTkwNGFhMGIwMTBiY2UyYWI0NTI2 NGQwNjMxNjgxODQ3ZmE3YjZmMmVhYTdkYWI3NjE5OTQzYmM0ZjU5IgotIGRlcGVuZGVuY2llcyA9 IFsKLSsgImFueV9hbGxfd29ya2Fyb3VuZCIsCi0gICJjZmctaWYgMS4wLjAiLAotLSAicGFja2Vk X3NpbWQiLAotIF0KLSAKLSBbW3BhY2thZ2VdXQotIG5hbWUgPSAiZW51bS1wcmltaXRpdmUtZGVy aXZlIgotIHZlcnNpb24gPSAiMC4yLjIiCi0gc291cmNlID0gInJlZ2lzdHJ5K2h0dHBzOi8vZ2l0 aHViLmNvbS9ydXN0LWxhbmcvY3JhdGVzLmlvLWluZGV4IgotIGNoZWNrc3VtID0gImMzNzViOWM1 ZWFkYjY4ZDBhNmVmZWUyOTk5ZmVmMjkyZjQ1ODU0YzM0NDRjODZmMDlkOGFiMDg2YmE5NDJiMGUi Ci0gZGVwZW5kZW5jaWVzID0gWwotQEAgLTM5MDEsMjUgKzM5MTAsMTYgQEAgY2hlY2tzdW0gPSAi OGQ5MWVkZjRmYmI5NzAyNzk0NDM0NzEzNDVhNGU4YzQ5MWJmMDViYjI4M2IzZTZjODhlNGU2MDZm ZDhjMTgxYiIKLSBbW3BhY2thZ2VdXQotIG5hbWUgPSAib3hpbGFuZ3RhZy1mZmkiCi0gdmVyc2lv biA9ICIwLjEuMCIKLSBkZXBlbmRlbmNpZXMgPSBbCi0gICJuc3N0cmluZyIsCi0gICJveGlsYW5n dGFnIiwKLSBdCi0gCi0tW1twYWNrYWdlXV0KLS1uYW1lID0gInBhY2tlZF9zaW1kIgotLXZlcnNp b24gPSAiMC4zLjkiCi0tc291cmNlID0gImdpdCtodHRwczovL2dpdGh1Yi5jb20vaHNpdm9uZW4v cGFja2VkX3NpbWQ/cmV2PWU1ODhjZWI1Njg4NzhlMWEzMTU2ZWE5Y2U1NTFkNWI2M2VmMGNkYzQj ZTU4OGNlYjU2ODg3OGUxYTMxNTZlYTljZTU1MWQ1YjYzZWYwY2RjNCIKLS1kZXBlbmRlbmNpZXMg PSBbCi0tICJjZmctaWYgMS4wLjAiLAotLSAibnVtLXRyYWl0cyIsCi0tXQotLQotIFtbcGFja2Fn ZV1dCi0gbmFtZSA9ICJwYXJraW5nX2xvdCIKLSB2ZXJzaW9uID0gIjAuMTEuMiIKLSBzb3VyY2Ug PSAicmVnaXN0cnkraHR0cHM6Ly9naXRodWIuY29tL3J1c3QtbGFuZy9jcmF0ZXMuaW8taW5kZXgi Ci0gY2hlY2tzdW0gPSAiN2QxN2I3ODAzNmE2MDY2M2I3OTdhZGVhZWU0NmY1YzlkZmViYjg2OTQ4 ZDEyNTUwMDdhMWQ2YmUwMjcxZmY5OSIKLSBkZXBlbmRlbmNpZXMgPSBbCi0gICJpbnN0YW50IiwK LSAgImxvY2tfYXBpIiwKLWRpZmYgLS1naXQgYS9DYXJnby50b21sIGIvQ2FyZ28udG9tbAotLS0t IGEvQ2FyZ28udG9tbAotKysrIGIvQ2FyZ28udG9tbAotQEAgLTE1NCwyMiArMTU0LDIyIEBAIHJ1 cmUgPSB7IHBhdGggPSAidGhpcmRfcGFydHkvcnVzdC9ydXJlIiB9Ci0gCi0gIyAwLjMxLjEgYnV0 IHdpdGhvdXQgcnVzdC1jc3NwYXJzZXIjMzQyLgotICMgVE9ETzogUmVtb3ZlIHRoZXNlLCBhbmQg anVzdCB1c2UgdjAuMzEuMSBvbmNlIGJ1ZyAxODM2MjE5IGxhbmRzCi0gIyAod2hpY2ggd2lsbCBn ZXQgc3luIDIgaW50byB0aGUgdHJlZSkuCi0gY3NzcGFyc2VyID0geyBwYXRoID0gInRoaXJkX3Bh cnR5L3J1c3QvY3NzcGFyc2VyIiB9Ci0gY3NzcGFyc2VyLW1hY3JvcyA9IHsgcGF0aCA9ICJ0aGly ZF9wYXJ0eS9ydXN0L2Nzc3BhcnNlci1tYWNyb3MiIH0KLSAKLSAjIE90aGVyIG92ZXJyaWRlcwot K2FueV9hbGxfd29ya2Fyb3VuZCA9IHsgZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNvbS9oc2l2b25l bi9hbnlfYWxsX3dvcmthcm91bmQiLCByZXYgPSAiN2ZiMWI3MDM0YzlmMTcyYWFkZTIxZWUxYzg1 NTRlOGQ4YTQ4YWY4MCIgfQotIGNoYXJkZXRuZyA9IHsgZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNv bS9oc2l2b25lbi9jaGFyZGV0bmciLCByZXY9IjM0ODRkM2UzZWJkYzg5MzE0OTNhYTVkZjRkN2Vl OTM2MGE5MGU3NmIiIH0KLSBjaGFyZGV0bmdfYyA9IHsgZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNv bS9oc2l2b25lbi9jaGFyZGV0bmdfYyIsIHJldj0iZWQ4YTRjNmY5MDBhOTBkNGRiYzFkNjRiODU2 ZTYxNDkwYTFjMzU3MCIgfQotIGNvcmVtaWRpID0geyBnaXQgPSAiaHR0cHM6Ly9naXRodWIuY29t L2NocmlzLXplbi9jb3JlbWlkaS5naXQiLCByZXY9ImZjNjg0NjRiNTQ0NWNhZjExMWU0MWY2NDNh MmU2OWNjY2UwYjRmODMiIH0KLSBmaXJlZm94LW9uLWdsZWFuID0geyBwYXRoID0gInRvb2xraXQv Y29tcG9uZW50cy9nbGVhbi9hcGkiIH0KLSBsaWJ1ZGV2LXN5cyA9IHsgcGF0aCA9ICJkb20vd2Vi YXV0aG4vbGlidWRldi1zeXMiIH0KLS1wYWNrZWRfc2ltZCA9IHsgZ2l0ID0gImh0dHBzOi8vZ2l0 aHViLmNvbS9oc2l2b25lbi9wYWNrZWRfc2ltZCIsIHJldiA9ICJlNTg4Y2ViNTY4ODc4ZTFhMzE1 NmVhOWNlNTUxZDViNjNlZjBjZGM0IiB9Ci0gbWlkaXIgPSB7IGdpdCA9ICJodHRwczovL2dpdGh1 Yi5jb20vbW96aWxsYS9taWRpci5naXQiLCByZXYgPSAiNTE5ZTY1MTI0MWU4NjdhZjMzOTFkYjA4 ZjlhZTY0MDBiYzAyM2UxOCIgfQotICMgd2FycCAwLjMuMyArIGh0dHBzOi8vZ2l0aHViLmNvbS9z ZWFubW9uc3Rhci93YXJwL3B1bGwvMTAwNwotIHdhcnAgPSB7IGdpdCA9ICJodHRwczovL2dpdGh1 Yi5jb20vZ2xhbmRpdW0vd2FycCIsIHJldiA9ICI0YWY0NWZhZTk1YmM5OGIwZWJhMWVmMGRiMTdl MWRhYzQ3MWJiMjNkIiB9Ci0gCi0gIyBhcHBsaWNhdGlvbi1zZXJ2aWNlcyBvdmVycmlkZXMgdG8g bWFrZSB1cGRhdGluZyB0aGVtIGFsbCBzaW1wbGVyLgotIGludGVycnVwdC1zdXBwb3J0ID0geyBn aXQgPSAiaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvYXBwbGljYXRpb24tc2VydmljZXMiLCBy ZXYgPSAiODZjODRjMjE3MDM2YzEyMjgzZDE5MzY4ODY3MzIzYTY2YmYzNTg4MyIgfQotIHNxbC1z dXBwb3J0ID0geyBnaXQgPSAiaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvYXBwbGljYXRpb24t c2VydmljZXMiLCByZXYgPSAiODZjODRjMjE3MDM2YzEyMjgzZDE5MzY4ODY3MzIzYTY2YmYzNTg4 MyIgfQotIHN5bmMxNSA9IHsgZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2FwcGxp Y2F0aW9uLXNlcnZpY2VzIiwgcmV2ID0gIjg2Yzg0YzIxNzAzNmMxMjI4M2QxOTM2ODg2NzMyM2E2 NmJmMzU4ODMiIH0KLWRpZmYgLS1naXQgYS9jb25maWcvbWFrZWZpbGVzL3J1c3QubWsgYi9jb25m aWcvbWFrZWZpbGVzL3J1c3QubWsKLS0tLSBhL2NvbmZpZy9tYWtlZmlsZXMvcnVzdC5tawotKysr IGIvY29uZmlnL21ha2VmaWxlcy9ydXN0Lm1rCi1AQCAtMjYwLDE3ICsyNjAsMTcgQEAgZXhwb3J0 IENPUkVBVURJT19TREtfUEFUSD0kKElQSE9ORU9TX1NESwotIGV4cG9ydCBJUEhPTkVPU19TREtf RElSCi0gUEFUSCA6PSAkKHRvcHNyY2RpcikvYnVpbGQvbWFjb3N4OiQoUEFUSCkKLSBlbmRpZgot IGVuZGlmCi0gCi0gaWZuZGVmIFJVU1RDX0JPT1RTVFJBUAotIFJVU1RDX0JPT1RTVFJBUCA6PSBt b3pnbHVlX3N0YXRpYyxxY21zCi0gaWZkZWYgTU9aX1JVU1RfU0lNRAotLVJVU1RDX0JPT1RTVFJB UCA6PSAkKFJVU1RDX0JPT1RTVFJBUCksZW5jb2RpbmdfcnMscGFja2VkX3NpbWQKLStSVVNUQ19C T09UU1RSQVAgOj0gJChSVVNUQ19CT09UU1RSQVApLGVuY29kaW5nX3JzLGFueV9hbGxfd29ya2Fy b3VuZAotIGVuZGlmCi0gZXhwb3J0IFJVU1RDX0JPT1RTVFJBUAotIGVuZGlmCi0gCi0gdGFyZ2V0 X3J1c3RfbHRvYWJsZSA6PSBmb3JjZS1jYXJnby1saWJyYXJ5LWJ1aWxkICQoQUREX1JVU1RfTFRP QUJMRSkKLSB0YXJnZXRfcnVzdF9ub25sdG9hYmxlIDo9IGZvcmNlLWNhcmdvLXRlc3QtcnVuIGZv cmNlLWNhcmdvLXByb2dyYW0tYnVpbGQKLSAKLSBpZmRlZiBNT1pfUEdPX1JVU1QKLWRpZmYgLS1n aXQgYS9zdXBwbHktY2hhaW4vYXVkaXRzLnRvbWwgYi9zdXBwbHktY2hhaW4vYXVkaXRzLnRvbWwK LS0tLSBhL3N1cHBseS1jaGFpbi9hdWRpdHMudG9tbAotKysrIGIvc3VwcGx5LWNoYWluL2F1ZGl0 cy50b21sCi1AQCAtNTk2LDE2ICs1OTYsMjkgQEAgd2hvID0gIk1pa2UgSG9tbWV5IDxtaCttb3pp bGxhQGdsYW5kaXVtLgotIGNyaXRlcmlhID0gInNhZmUtdG8tZGVwbG95IgotIGRlbHRhID0gIjAu MS4yIC0+IDAuMS40IgotIAotIFtbYXVkaXRzLmFuZHJvaWRfc3lzdGVtX3Byb3BlcnRpZXNdXQot IHdobyA9ICJNaWtlIEhvbW1leSA8bWgrbW96aWxsYUBnbGFuZGl1bS5vcmc+IgotIGNyaXRlcmlh ID0gInNhZmUtdG8tZGVwbG95IgotIGRlbHRhID0gIjAuMS40IC0+IDAuMS41IgotIAotK1tbYXVk aXRzLmFueV9hbGxfd29ya2Fyb3VuZF1dCi0rd2hvID0gIkhlbnJpIFNpdm9uZW4gPGhzaXZvbmVu QGhzaXZvbmVuLmZpPiIKLStjcml0ZXJpYSA9ICJzYWZlLXRvLWRlcGxveSIKLSt2ZXJzaW9uID0g IjAuMS4wIgotK25vdGVzID0gIlRoZSBsaXR0bGUgY29kZSB0aGF0IGlzIGluIHRoaXMgY3JhdGUg SSByZXZpZXdlZCBhbmQgbW9kaWZpZWQgZnJvbSBwYWNrZWRfc2ltZCAod2hpY2ggaGFzIHByZXZp b3VzbHkgYmVlbiB2ZW5kb3JlZCBpbiBmdWxsIGluc3RlYWQgb2YganVzdCB0aGlzIHNtYWxsIHBh cnQpLiIKLSsKLStbW2F1ZGl0cy5hbnlfYWxsX3dvcmthcm91bmRdXQotK3dobyA9ICJIZW5yaSBT aXZvbmVuIDxoc2l2b25lbkBoc2l2b25lbi5maT4iCi0rY3JpdGVyaWEgPSAic2FmZS10by1kZXBs b3kiCi0rZGVsdGEgPSAiMC4xLjAgLT4gMC4xLjBAZ2l0OjdmYjFiNzAzNGM5ZjE3MmFhZGUyMWVl MWM4NTU0ZThkOGE0OGFmODAiCi0raW1wb3J0YWJsZSA9IGZhbHNlCi0rbm90ZXMgPSAiVGhpcyBp cyBhIHRyaXZpYWwgd29ya2Fyb3VuZCBjb3BpZWQgZnJvbSBlbHNld2hlcmUgaW4gbS1jLCBzcGVj aWZpY2FsbHkgcWNtcy4iCi0rCi0gW1thdWRpdHMuYW55aG93XV0KLSB3aG8gPSAiTWlrZSBIb21t ZXkgPG1oK21vemlsbGFAZ2xhbmRpdW0ub3JnPiIKLSBjcml0ZXJpYSA9ICJzYWZlLXRvLWRlcGxv eSIKLSBkZWx0YSA9ICIxLjAuNTcgLT4gMS4wLjYxIgotIAotIFtbYXVkaXRzLmFueWhvd11dCi0g d2hvID0gIkJvYmJ5IEhvbGxleSA8Ym9iYnlob2xsZXlAZ21haWwuY29tPiIKLSBjcml0ZXJpYSA9 ICJzYWZlLXRvLWRlcGxveSIKLWRpZmYgLS1naXQgYS9zdXBwbHktY2hhaW4vY29uZmlnLnRvbWwg Yi9zdXBwbHktY2hhaW4vY29uZmlnLnRvbWwKLS0tLSBhL3N1cHBseS1jaGFpbi9jb25maWcudG9t bAotKysrIGIvc3VwcGx5LWNoYWluL2NvbmZpZy50b21sCi1AQCAtMTQsMTYgKzE0LDIwIEBAIHVy bCA9ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20KLSB1cmwgPSAiaHR0cHM6Ly9y YXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2dvb2dsZS9zdXBwbHktY2hhaW4vbWFpbi9hdWRpdHMu dG9tbCIKLSAKLSBbaW1wb3J0cy5pc3JnXQotIHVybCA9ICJodHRwczovL3Jhdy5naXRodWJ1c2Vy Y29udGVudC5jb20vZGl2dml1cC9saWJwcmlvLXJzL21haW4vc3VwcGx5LWNoYWluL2F1ZGl0cy50 b21sIgotIAotIFtpbXBvcnRzLm1vemlsbGFdCi0gdXJsID0gImh0dHBzOi8vcmF3LmdpdGh1YnVz ZXJjb250ZW50LmNvbS9tb3ppbGxhL3N1cHBseS1jaGFpbi9tYWluL2F1ZGl0cy50b21sIgotIAot K1twb2xpY3kuYW55X2FsbF93b3JrYXJvdW5kXQotK2F1ZGl0LWFzLWNyYXRlcy1pbyA9IHRydWUK LStub3RlcyA9ICJUaGlzIGlzIHRoZSB1cHN0cmVhbSBjb2RlIHBsdXMgdGhlIEFSTSBpbnRyaW5z aWNzIHdvcmthcm91bmQgZnJvbSBxY21zLCBzZWUgYnVnIDE4ODIyMDkuIgotKwotIFtwb2xpY3ku YXV0b2NmZ10KLSBhdWRpdC1hcy1jcmF0ZXMtaW8gPSB0cnVlCi0gbm90ZXMgPSAiVGhpcyBpcyB0 aGUgdXBzdHJlYW0gY29kZSBwbHVzIGEgZmV3IGxvY2FsIGZpeGVzLCBzZWUgYnVnIDE2ODU2OTcu IgotIAotIFtwb2xpY3kuY2hhcmRldG5nXQotIGF1ZGl0LWFzLWNyYXRlcy1pbyA9IHRydWUKLSBu b3RlcyA9ICJUaGlzIGlzIGEgY3JhdGUgSGVucmkgd3JvdGUgd2hpY2ggaXMgYWxzbyBwdWJsaXNo ZWQuIFdlIHNob3VsZCBwcm9iYWJseSB1cGRhdGUgRmlyZWZveCB0byB0aXAgYW5kIGNlcnRpZnkg dGhhdC4iCi0gCi1kaWZmIC0tZ2l0IGEvc3VwcGx5LWNoYWluL2ltcG9ydHMubG9jayBiL3N1cHBs eS1jaGFpbi9pbXBvcnRzLmxvY2sKLS0tLSBhL3N1cHBseS1jaGFpbi9pbXBvcnRzLmxvY2sKLSsr KyBiL3N1cHBseS1jaGFpbi9pbXBvcnRzLmxvY2sKLUBAIC0xMTUsMTYgKzExNSwyMyBAQCB1c2Vy LW5hbWUgPSAiRGF2aWQgVG9sbmF5IgotIAotIFtbcHVibGlzaGVyLmVuY29kaW5nX3JzXV0KLSB2 ZXJzaW9uID0gIjAuOC4zMyIKLSB3aGVuID0gIjIwMjMtMDgtMjMiCi0gdXNlci1pZCA9IDQ0ODQK LSB1c2VyLWxvZ2luID0gImhzaXZvbmVuIgotIHVzZXItbmFtZSA9ICJIZW5yaSBTaXZvbmVuIgot IAotK1tbcHVibGlzaGVyLmVuY29kaW5nX3JzXV0KLSt2ZXJzaW9uID0gIjAuOC4zNCIKLSt3aGVu ID0gIjIwMjQtMDQtMTAiCi0rdXNlci1pZCA9IDQ0ODQKLSt1c2VyLWxvZ2luID0gImhzaXZvbmVu IgotK3VzZXItbmFtZSA9ICJIZW5yaSBTaXZvbmVuIgotKwotIFtbcHVibGlzaGVyLmV0YWdlcmVd XQotIHZlcnNpb24gPSAiMC4yLjciCi0gd2hlbiA9ICIyMDIyLTA1LTA0IgotIHVzZXItaWQgPSAx MjgxCi0gdXNlci1sb2dpbiA9ICJuaWNhbCIKLSB1c2VyLW5hbWUgPSAiTmljb2xhcyBTaWx2YSIK LSAKLSBbW3B1Ymxpc2hlci5ldWNsaWRdXQotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3J1c3Qv YW55X2FsbF93b3JrYXJvdW5kLy5jYXJnby1jaGVja3N1bS5qc29uIGIvdGhpcmRfcGFydHkvcnVz dC9hbnlfYWxsX3dvcmthcm91bmQvLmNhcmdvLWNoZWNrc3VtLmpzb24KLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi90aGlyZF9wYXJ0eS9ydXN0L2FueV9hbGxfd29y a2Fyb3VuZC8uY2FyZ28tY2hlY2tzdW0uanNvbgotQEAgLTAsMCArMSwxIEBACi0reyJmaWxlcyI6 eyJDYXJnby50b21sIjoiZjhjMTI3NDQ5ZGM5NDMyZDQwNGMyMWM5OTgzM2U0NjE3YWI4OGE3OTc0 NDVhZjI0OWE3ZmUzYzk4OTk4NWQ2ZCIsIkxJQ0VOU0UtQVBBQ0hFIjoiYTYwZWVhODE3NTE0NTMx NjY4ZDdlMDA3NjU3MzE0NDlmZTE0ZDA1OWQzMjQ5ZTBiYzkzYjM2ZGU0NWY3NTlmMiIsIkxJQ0VO U0UtTUlUIjoiNjQ4NWI4ZWQzMTBkM2YwMzQwYmYxYWQxZjQ3NjQ1MDY5Y2U0MDY5ZGNjNmJiNDZj N2Q1YzZmYWY0MWRlMWZkYiIsIkxJQ0VOU0UtTUlULVFDTVMiOiIzNmQ4NDdhZTg4MmY2NTc0ZWJj NzJmNTZhNGYzNTRlNGYxMDRmZGU0YTU4NDM3MzQ5NjQ4MmU5N2Q1MmQzMWJjIiwiUkVBRE1FLm1k IjoiNGM2MTdiOGNlZDNhMjdiN2VkZWNmMGU1ZTQxZWQ0NTFjMDRlODhkYWI1MjllN2EzNWZjY2M0 ZTE1NTFlZmJkNyIsImJ1aWxkLnJzIjoiNTZiMjlhYjZkYTNlNDkwNzViZmQwYTdiNjkwMjY3Yzgw MTYyOThiZjBkMzMyZTJlNjhiYmFmMTlkZWNiYmY3MSIsInNyYy9saWIucnMiOiI3MTE4MTA2Njkw YjlkMjVjNWQwYTNlMjA3OWZlYjgzZDc2ZjFkNDM0ZDBkYTM2YjlkMDM1MTgwNmQyN2M4NTBkIn0s InBhY2thZ2UiOm51bGx9Ci1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLWRpZmYgLS1naXQg YS90aGlyZF9wYXJ0eS9ydXN0L2FueV9hbGxfd29ya2Fyb3VuZC9DYXJnby50b21sIGIvdGhpcmRf cGFydHkvcnVzdC9hbnlfYWxsX3dvcmthcm91bmQvQ2FyZ28udG9tbAotbmV3IGZpbGUgbW9kZSAx MDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL3RoaXJkX3BhcnR5L3J1c3QvYW55X2FsbF93b3Jr YXJvdW5kL0NhcmdvLnRvbWwKLUBAIC0wLDAgKzEsMjggQEAKLSsjIFRISVMgRklMRSBJUyBBVVRP TUFUSUNBTExZIEdFTkVSQVRFRCBCWSBDQVJHTwotKyMKLSsjIFdoZW4gdXBsb2FkaW5nIGNyYXRl cyB0byB0aGUgcmVnaXN0cnkgQ2FyZ28gd2lsbCBhdXRvbWF0aWNhbGx5Ci0rIyAibm9ybWFsaXpl IiBDYXJnby50b21sIGZpbGVzIGZvciBtYXhpbWFsIGNvbXBhdGliaWxpdHkKLSsjIHdpdGggYWxs IHZlcnNpb25zIG9mIENhcmdvIGFuZCBhbHNvIHJld3JpdGUgYHBhdGhgIGRlcGVuZGVuY2llcwot KyMgdG8gcmVnaXN0cnkgKGUuZy4sIGNyYXRlcy5pbykgZGVwZW5kZW5jaWVzLgotKyMKLSsjIElm IHlvdSBhcmUgcmVhZGluZyB0aGlzIGZpbGUgYmUgYXdhcmUgdGhhdCB0aGUgb3JpZ2luYWwgQ2Fy Z28udG9tbAotKyMgd2lsbCBsaWtlbHkgbG9vayB2ZXJ5IGRpZmZlcmVudCAoYW5kIG11Y2ggbW9y ZSByZWFzb25hYmxlKS4KLSsjIFNlZSBDYXJnby50b21sLm9yaWcgZm9yIHRoZSBvcmlnaW5hbCBj b250ZW50cy4KLSsKLStbcGFja2FnZV0KLStlZGl0aW9uID0gIjIwMjEiCi0rbmFtZSA9ICJhbnlf YWxsX3dvcmthcm91bmQiCi0rdmVyc2lvbiA9ICIwLjEuMCIKLSthdXRob3JzID0gWyJIZW5yaSBT aXZvbmVuIDxoc2l2b25lbkBoc2l2b25lbi5maT4iXQotK2Rlc2NyaXB0aW9uID0gIldvcmthcm91 bmQgZm9yIGJhZCBMTFZNIGNvZGVnZW4gZm9yIGJvb2xlYW4gcmVkdWN0aW9ucyBvbiAzMi1iaXQg QVJNIgotK2hvbWVwYWdlID0gImh0dHBzOi8vZG9jcy5ycy9hbnlfYWxsX3dvcmthcm91bmQvIgot K2RvY3VtZW50YXRpb24gPSAiaHR0cHM6Ly9kb2NzLnJzL2FueV9hbGxfd29ya2Fyb3VuZC8iCi0r cmVhZG1lID0gIlJFQURNRS5tZCIKLStsaWNlbnNlID0gIk1JVCBPUiBBcGFjaGUtMi4wIgotK3Jl cG9zaXRvcnkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2hzaXZvbmVuL2FueV9hbGxfd29ya2Fyb3Vu ZCIKLSsKLStbZGVwZW5kZW5jaWVzXQotK2NmZy1pZiA9ICIxLjAiCi0rCi0rW2J1aWxkLWRlcGVu ZGVuY2llc10KLSt2ZXJzaW9uX2NoZWNrID0gIjAuOSIKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0 eS9ydXN0L3BhY2tlZF9zaW1kL0xJQ0VOU0UtQVBBQ0hFIGIvdGhpcmRfcGFydHkvcnVzdC9hbnlf YWxsX3dvcmthcm91bmQvTElDRU5TRS1BUEFDSEUKLXJlbmFtZSBmcm9tIHRoaXJkX3BhcnR5L3J1 c3QvcGFja2VkX3NpbWQvTElDRU5TRS1BUEFDSEUKLXJlbmFtZSB0byB0aGlyZF9wYXJ0eS9ydXN0 L2FueV9hbGxfd29ya2Fyb3VuZC9MSUNFTlNFLUFQQUNIRQotZGlmZiAtLWdpdCBhL3RoaXJkX3Bh cnR5L3J1c3QvcGFja2VkX3NpbWQvTElDRU5TRS1NSVQgYi90aGlyZF9wYXJ0eS9ydXN0L2FueV9h bGxfd29ya2Fyb3VuZC9MSUNFTlNFLU1JVAotcmVuYW1lIGZyb20gdGhpcmRfcGFydHkvcnVzdC9w YWNrZWRfc2ltZC9MSUNFTlNFLU1JVAotcmVuYW1lIHRvIHRoaXJkX3BhcnR5L3J1c3QvYW55X2Fs bF93b3JrYXJvdW5kL0xJQ0VOU0UtTUlUCi1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvcnVzdC9h bnlfYWxsX3dvcmthcm91bmQvTElDRU5TRS1NSVQtUUNNUyBiL3RoaXJkX3BhcnR5L3J1c3QvYW55 X2FsbF93b3JrYXJvdW5kL0xJQ0VOU0UtTUlULVFDTVMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0t LS0gL2Rldi9udWxsCi0rKysgYi90aGlyZF9wYXJ0eS9ydXN0L2FueV9hbGxfd29ya2Fyb3VuZC9M SUNFTlNFLU1JVC1RQ01TCi1AQCAtMCwwICsxLDIxIEBACi0rcWNtcwotK0NvcHlyaWdodCAoQykg MjAwOS0yMDI0IE1vemlsbGEgQ29ycG9yYXRpb24KLStDb3B5cmlnaHQgKEMpIDE5OTgtMjAwNyBN YXJ0aSBNYXJpYQotKwotK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyAKLSthIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIAotK3Rv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo b3V0IGxpbWl0YXRpb24gCi0rdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIAotK2FuZC9vciBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy ZSAKLStpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgotKwotK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIAotK2FsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotKwotK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURF RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCAKLStFWFBSRVNTIE9SIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gCi0rVEhFIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgCi0r Tk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSAKLStMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIAotK09GIENPTlRSQUNULCBUT1JUIE9SIE9U SEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiAKLStXSVRIIFRI RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K LWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L2FueV9hbGxfd29ya2Fyb3VuZC9SRUFETUUu bWQgYi90aGlyZF9wYXJ0eS9ydXN0L2FueV9hbGxfd29ya2Fyb3VuZC9SRUFETUUubWQKLW5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi90aGlyZF9wYXJ0eS9ydXN0L2Fu eV9hbGxfd29ya2Fyb3VuZC9SRUFETUUubWQKLUBAIC0wLDAgKzEsMTMgQEAKLSsjIGFueV9hbGxf d29ya2Fyb3VuZAotKwotK1RoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBiYWQgY29kZWdlbiAoW1J1 c3QgYnVnXShodHRwczovL2dpdGh1Yi5jb20vcnVzdC1sYW5nL3BvcnRhYmxlLXNpbWQvaXNzdWVz LzE0NiksIFtMTFZNIGJ1Z10oaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L2lz c3Vlcy81MDQ2NikpIGZvciB0aGUgYGFueSgpYCBhbmQgYGFsbCgpYCByZWR1Y3Rpb25zIGZvciBO RU9OLWJhY2tlZCBTSU1EIHZlY3RvcnMgb24gMzItYml0IEFSTS4gT24gb3RoZXIgcGxhdGZvcm1z IHRoZXNlIGRlbGVnYXRlIHRvIGBhbnkoKWAgYW5kIGBhbGwoKWAgaW4gYGNvcmU6OnNpbWRgLgot KwotK1RoZSBwbGFuIGlzIHRvIGFiYW5kb24gdGhpcyBjcmF0ZSBvbmNlIHRoZSBMTFZNIGJ1ZyBp cyBmaXhlZCBvciBgY29yZTo6c2ltZGAgd29ya3MgYXJvdW5kIHRoZSBMTFZNIGJ1Zy4KLSsKLStU aGUgY29kZSBpcyBmb3JrZWQgZnJvbSB0aGUgW2BwYWNrZWRfc2ltZGAgY3JhdGVdKGh0dHBzOi8v cmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9oc2l2b25lbi9wYWNrZWRfc2ltZC9kOTM4ZTM5YmVl OWJjNWMyMjJmNWYyZjJhMGRmOWU1M2I1Y2UzNmFlL3NyYy9jb2RlZ2VuL3JlZHVjdGlvbnMvbWFz ay9hcm0ucnMpLgotKwotK1RoaXMgY3JhdGUgcmVxdWlyZXMgTmlnaHRseSBSdXN0IGFzIGl0IGRl cGVuZHMgb24gdGhlIGBwb3J0YWJsZV9zaW1kYCBmZWF0dXJlLgotKwotKyMgTGljZW5zZQotKwot K2BNSVQgT1IgQXBhY2hlLTIuMGAsIHNpbmNlIHRoYXQncyBob3cgYHBhY2tlZF9zaW1kYCBpcyBs aWNlbnNlZC4gKFRoZSBBUk0gaW50cmluc2ljcyBSdXN0IHZlcnNpb24gd29ya2Fyb3VuZCBpcyBm cm9tIHFjbXMsIHNlZSBMSUNFTlNFLU1JVC1RQ01TLikKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0 eS9ydXN0L2FueV9hbGxfd29ya2Fyb3VuZC9idWlsZC5ycyBiL3RoaXJkX3BhcnR5L3J1c3QvYW55 X2FsbF93b3JrYXJvdW5kL2J1aWxkLnJzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYv bnVsbAotKysrIGIvdGhpcmRfcGFydHkvcnVzdC9hbnlfYWxsX3dvcmthcm91bmQvYnVpbGQucnMK LUBAIC0wLDAgKzEsNyBAQAotK2V4dGVybiBjcmF0ZSB2ZXJzaW9uX2NoZWNrIGFzIHJ1c3RjOwot KwotK2ZuIG1haW4oKSB7Ci0rICAgIGlmIHJ1c3RjOjppc19taW5fdmVyc2lvbigiMS43OC4wIiku dW53cmFwX29yKGZhbHNlKSB7Ci0rICAgICAgICBwcmludGxuISgiY2FyZ286cnVzdGMtY2ZnPXN0 ZHNpbWRfc3BsaXQiKTsKLSsgICAgfQotK30KLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0 L2FueV9hbGxfd29ya2Fyb3VuZC9zcmMvbGliLnJzIGIvdGhpcmRfcGFydHkvcnVzdC9hbnlfYWxs X3dvcmthcm91bmQvc3JjL2xpYi5ycwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251 bGwKLSsrKyBiL3RoaXJkX3BhcnR5L3J1c3QvYW55X2FsbF93b3JrYXJvdW5kL3NyYy9saWIucnMK LUBAIC0wLDAgKzEsMTEwIEBACi0rLy8gVGhpcyBjb2RlIGJlZ2FuIGFzIGEgZm9yayBvZgotKy8v IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9ydXN0LWxhbmcvcGFja2VkX3NpbWQv ZDkzOGUzOWJlZTliYzVjMjIyZjVmMmYyYTBkZjllNTNiNWNlMzZhZS9zcmMvY29kZWdlbi9yZWR1 Y3Rpb25zL21hc2svYXJtLnJzCi0rLy8gd2hpY2ggZGlkbid0IGhhdmUgYSBsaWNlbnNlIGhlYWRl ciBvbiB0aGUgZmlsZSwgYnV0IENhcmdvLnRvbWwgc2FpZCAiTUlUIE9SIEFwYWNoZS0yLjAiLgot Ky8vIFNlZSBMSUNFTlNFLU1JVCBhbmQgTElDRU5TRS1BUEFDSEUuCi0rCi0rIyFbbm9fc3RkXQot KyMhW2ZlYXR1cmUocG9ydGFibGVfc2ltZCldCi0rIyFbY2ZnX2F0dHIoCi0rICAgIGFsbCgKLSsg ICAgICAgIHN0ZHNpbWRfc3BsaXQsCi0rICAgICAgICB0YXJnZXRfYXJjaCA9ICJhcm0iLAotKyAg ICAgICAgdGFyZ2V0X2VuZGlhbiA9ICJsaXR0bGUiLAotKyAgICAgICAgdGFyZ2V0X2ZlYXR1cmUg PSAibmVvbiIsCi0rICAgICAgICB0YXJnZXRfZmVhdHVyZSA9ICJ2NyIKLSsgICAgKSwKLSsgICAg ZmVhdHVyZShzdGRhcmNoX2FybV9uZW9uX2ludHJpbnNpY3MpCi0rKV0KLSsjIVtjZmdfYXR0cigK LSsgICAgYWxsKAotKyAgICAgICAgbm90KHN0ZHNpbWRfc3BsaXQpLAotKyAgICAgICAgdGFyZ2V0 X2FyY2ggPSAiYXJtIiwKLSsgICAgICAgIHRhcmdldF9lbmRpYW4gPSAibGl0dGxlIiwKLSsgICAg ICAgIHRhcmdldF9mZWF0dXJlID0gIm5lb24iLAotKyAgICAgICAgdGFyZ2V0X2ZlYXR1cmUgPSAi djciCi0rICAgICksCi0rICAgIGZlYXR1cmUoc3Rkc2ltZCkKLSspXQotKwotK3VzZSBjZmdfaWY6 OmNmZ19pZjsKLSt1c2UgY29yZTo6c2ltZDo6bWFzazE2eDg7Ci0rdXNlIGNvcmU6OnNpbWQ6Om1h c2szMng0OwotK3VzZSBjb3JlOjpzaW1kOjptYXNrOHgxNjsKLSsKLStjZmdfaWYhIHsKLSsgICAg aWYgI1tjZmcoYWxsKHRhcmdldF9hcmNoID0gImFybSIsIHRhcmdldF9lbmRpYW4gPSAibGl0dGxl IiwgdGFyZ2V0X2ZlYXR1cmUgPSAibmVvbiIsIHRhcmdldF9mZWF0dXJlID0gInY3IikpXSB7Ci0r ICAgICAgICB1c2UgY29yZTo6c2ltZDo6bWFzazh4ODsKLSsgICAgICAgIHVzZSBjb3JlOjpzaW1k OjptYXNrMTZ4NDsKLSsgICAgICAgIHVzZSBjb3JlOjpzaW1kOjptYXNrMzJ4MjsKLSsgICAgICAg IG1hY3JvX3J1bGVzISBhcm1fMTI4X3Y3X25lb25faW1wbCB7Ci0rICAgICAgICAgICAgKCRhbGw6 aWRlbnQsICRhbnk6aWRlbnQsICRpZDppZGVudCwgJGhhbGY6aWRlbnQsICR2cG1pbjppZGVudCwg JHZwbWF4OmlkZW50KSA9PiB7Ci0rICAgICAgICAgICAgICAgICNbaW5saW5lXQotKyAgICAgICAg ICAgICAgICBwdWIgZm4gJGFsbChzOiAkaWQpIC0+IGJvb2wgewotKyAgICAgICAgICAgICAgICAg ICAgdXNlIGNvcmU6OmFyY2g6OmFybTo6JHZwbWluOwotKyAgICAgICAgICAgICAgICAgICAgdXNl IGNvcmU6Om1lbTo6dHJhbnNtdXRlOwotKyAgICAgICAgICAgICAgICAgICAgdW5zYWZlIHsKLSsg ICAgICAgICAgICAgICAgICAgICAgICB1bmlvbiBVIHsKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaGFsdmVzOiAoJGhhbGYsICRoYWxmKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdmVjOiAkaWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAg ICAgICAgICAgIGxldCBoYWx2ZXMgPSBVIHsgdmVjOiBzIH0uaGFsdmVzOwotKyAgICAgICAgICAg ICAgICAgICAgICAgIGxldCBoOiAkaGFsZiA9IHRyYW5zbXV0ZSgkdnBtaW4odHJhbnNtdXRlKGhh bHZlcy4wKSwgdHJhbnNtdXRlKGhhbHZlcy4xKSkpOwotKyAgICAgICAgICAgICAgICAgICAgICAg IGguYWxsKCkKLSsgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgfQotKyAg ICAgICAgICAgICAgICAjW2lubGluZV0KLSsgICAgICAgICAgICAgICAgcHViIGZuICRhbnkoczog JGlkKSAtPiBib29sIHsKLSsgICAgICAgICAgICAgICAgICAgIHVzZSBjb3JlOjphcmNoOjphcm06 OiR2cG1heDsKLSsgICAgICAgICAgICAgICAgICAgIHVzZSBjb3JlOjptZW06OnRyYW5zbXV0ZTsK LSsgICAgICAgICAgICAgICAgICAgIHVuc2FmZSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAg dW5pb24gVSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbHZlczogKCRoYWxmLCAk aGFsZiksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlYzogJGlkLAotKyAgICAgICAg ICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGFsdmVzID0g VSB7IHZlYzogcyB9LmhhbHZlczsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaDogJGhh bGYgPSB0cmFuc211dGUoJHZwbWF4KHRyYW5zbXV0ZShoYWx2ZXMuMCksIHRyYW5zbXV0ZShoYWx2 ZXMuMSkpKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBoLmFueSgpCi0rICAgICAgICAgICAg ICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9 Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBtYWNyb19ydWxlcyEgYXJtXzEyOF92N19uZW9uX2lt cGwgewotKyAgICAgICAgICAgICgkYWxsOmlkZW50LCAkYW55OmlkZW50LCAkaWQ6aWRlbnQsICRo YWxmOmlkZW50LCAkdnBtaW46aWRlbnQsICR2cG1heDppZGVudCkgPT4gewotKyAgICAgICAgICAg ICAgICAjW2lubGluZShhbHdheXMpXQotKyAgICAgICAgICAgICAgICBwdWIgZm4gJGFsbChzOiAk aWQpIC0+IGJvb2wgewotKyAgICAgICAgICAgICAgICAgICAgcy5hbGwoKQotKyAgICAgICAgICAg ICAgICB9Ci0rICAgICAgICAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCi0rICAgICAgICAgICAg ICAgIHB1YiBmbiAkYW55KHM6ICRpZCkgLT4gYm9vbCB7Ci0rICAgICAgICAgICAgICAgICAgICBz LmFueSgpCi0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0r ICAgIH0KLSt9Ci0rCi0rYXJtXzEyOF92N19uZW9uX2ltcGwhKAotKyAgICBhbGxfbWFzazh4MTYs Ci0rICAgIGFueV9tYXNrOHgxNiwKLSsgICAgbWFzazh4MTYsCi0rICAgIG1hc2s4eDgsCi0rICAg IHZwbWluX3U4LAotKyAgICB2cG1heF91OAotKyk7Ci0rYXJtXzEyOF92N19uZW9uX2ltcGwhKAot KyAgICBhbGxfbWFzazE2eDgsCi0rICAgIGFueV9tYXNrMTZ4OCwKLSsgICAgbWFzazE2eDgsCi0r ICAgIG1hc2sxNng0LAotKyAgICB2cG1pbl91MTYsCi0rICAgIHZwbWF4X3UxNgotKyk7Ci0rYXJt XzEyOF92N19uZW9uX2ltcGwhKAotKyAgICBhbGxfbWFzazMyeDQsCi0rICAgIGFueV9tYXNrMzJ4 NCwKLSsgICAgbWFzazMyeDQsCi0rICAgIG1hc2szMngyLAotKyAgICB2cG1pbl91MzIsCi0rICAg IHZwbWF4X3UzMgotKyk7Ci1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19y cy8uY2FyZ28tY2hlY2tzdW0uanNvbiBiL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvLmNh cmdvLWNoZWNrc3VtLmpzb24KLS0tLSBhL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvLmNh cmdvLWNoZWNrc3VtLmpzb24KLSsrKyBiL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvLmNh cmdvLWNoZWNrc3VtLmpzb24KLUBAIC0xLDEgKzEsMSBAQAotLXsiZmlsZXMiOnsiQ09OVFJJQlVU SU5HLm1kIjoiY2ExOTAxZjNlODUzMmZiNGNlYzg5NGZkMzY2NGYwZWFhODk4YzBjNGI5NjFkMWI5 OTJkMWVkNTRlYWNmMzYyYSIsIkNPUFlSSUdIVCI6IjExNzg5ZjQ1YmIxODA4NDFjZDM2MmE1ZWVl Njc4OWM2OGRkYjU3M2ExMTEwNWUzMDc2OGMzMDhhNmFkZDAxOTAiLCJDYXJnby50b21sIjoiNDJm YTgzMzIyYWE5ZmQ2NzIzYjc3ZDM1ZDBjYWNiOTJjYmI2ZTdmNTczY2UxMWM1NWY1MjI1MjkyODY2 ZjhmNCIsIklkZWFzLm1kIjoiYjc0NTI4OTNmNTAwMTYzODY4ZDhkZTUyYzA5YWRkYWY5MWUxNjMy NDU0ZWQwMmU4OTJjNDY3ZWQ3ZWMzOWRiZCIsIkxJQ0VOU0UtQVBBQ0hFIjoiY2ZjNzc0OWI5NmY2 M2JkMzFjM2M0MmI1YzQ3MWJmNzU2ODE0MDUzZTg0N2MxMGYzZWIwMDM0MTdiYzUyM2QzMCIsIkxJ Q0VOU0UtTUlUIjoiM2ZhNGNhODNkY2M5MjM3ODM5YjFiZGViMmU2ZDE2YmRmYjVlYzBjNWNlNDJi MjQ2OTRkOGJiZjBkY2JlZjcyYyIsIkxJQ0VOU0UtV0hBVFdHIjoiODM4MTE4Mzg4ZmU1YzJlN2Yx ZGJiYWVlZDEzZTFjN2YzZWJmODhiZTkxMzE5YzdjMWQ3N2MxOGU5ODdkMWE1MCIsIlJFQURNRS5t ZCI6ImQ5MzhlOGFiMGI5YWI2N2U3NGExYTRmNDhmMjNmZGNlOTU2ZDBhZDNhM2Y2MTQ3YWU3NjEy YTkyNzYzYzg4ZDUiLCJjaS9taXJpLnNoIjoiNDNjYjhkODJmNDllM2JmZTJkMjI3NGI2Y2NkNmYw NzE0YTQxODhjY2VmMGNlY2MwNDA4Mjk4ODNjZmRiZWUyNSIsImRvYy9CaWc1LnR4dCI6ImY3M2Ey ZWRjNWNiNmMyZDE0MGJhNmUwN2Y0NTQyZTFjNGEyMzQ5NTAzNzhhY2RlMWRmOTM0ODBmMGNhMGJl MGIiLCJkb2MvRVVDLUpQLnR4dCI6ImVlMjgxOGI5MDdkMDEzN2Y0MGE5YWI5ZmQ1MjVmYzcwMGE0 NGRiZGRkYjZjZjBjMTU3YTY1NjU2NmJhZTRiZjEiLCJkb2MvRVVDLUtSLnR4dCI6IjcxZDllMmNj ZjNiMTI0ZThiZGZiNDMzYzhjZjI3NzNmZDg3ODA3NzAzOGQwY2VjM2M3MjM3YTUwZjRhNzhhMzAi LCJkb2MvR0JLLnR4dCI6ImMxYjUyMmI1YTc5OTg4NGU1MDAxZGE2NjFmNDJjNWE4ZjRkMGFjYjll ZjFkNzRiMjA2ZjIyYjVmNjUzNjU2MDYiLCJkb2MvSUJNODY2LnR4dCI6ImE1YTQzM2U4MDRkMGY4 M2FmNzg1MDE1MTc5ZmJjMWQ5YjBlYWYxZjc5NjBlZmNkMDQwOTNlMTM2YjUxZmJkMGUiLCJkb2Mv SVNPLTIwMjItSlAudHh0IjoiYWY4NjY4NGY1YThmMGUyODY4ZDdiMmMyOTI4NjAxNDBjM2QyZTU1 Mjc1MzBjYTA5MWYxYjI4MTk4ZThlMmZlNiIsImRvYy9JU08tODg1OS0xMC50eHQiOiI2ZDM5NDlh ZDdjODFjYTE3Njg5NTEwMWVkODFhMWRiN2RmMTA2MGQ2NGUyNjI4ODBiOTRiZDMxYmIzNDRhYjRk IiwiZG9jL0lTTy04ODU5LTEzLnR4dCI6IjM5NTFkZDg5Y2Y5M2Y3NzI5MTQ4MDkxNjgzY2Y4NTEx ZjQ1MjkzODhiN2RjOGRjZDBkNjJlYWVkNTViZTkzZmEiLCJkb2MvSVNPLTg4NTktMTQudHh0Ijoi M2QzMzA3ODRhMDM3NGZkMjU1YTM4YjQ3OTQ5Njc1Y2M3MTY4YzgwMDUzMDUzNGIwYTAxY2FjNmVk YzYyM2FkYyIsImRvYy9JU08tODg1OS0xNS50eHQiOiIyNGIxMDg0YWFiNTEyN2E4NWFhYjk5MTUz Zjg2ZTI0Njk0ZDBhMzYxNWY1M2I1Y2UyMzY4M2Y5N2NmNjZjNDdhIiwiZG9jL0lTTy04ODU5LTE2 LnR4dCI6ImNlMDI3MjU1OWI5MmJhNzZkN2E3ZTQ3NmY2NDI0YWU0YTVjYzcyZTc1YjE4MzYxMWIw ODM5MmU0NGFkZDRkMjUiLCJkb2MvSVNPLTg4NTktMi50eHQiOiIxOGNlZmY4OGMxM2QxYjViYTQ1 NWEzOTE5YjFlM2RlNDg5MDQ1YzRjM2QyZGQ3ZTg1MjdjMTI1Yzc1ZDU0YWFkIiwiZG9jL0lTTy04 ODU5LTMudHh0IjoiMjE3OTg0MDRjNjhmNGY1ZGI1OTIyMzM2MmYyNDk5OWRhOTY5NjhjMDYyODQy NzMyMWZjY2NlN2QyODQ5YTEzMCIsImRvYy9JU08tODg1OS00LnR4dCI6ImQyN2Y2NTIwYzZjNWJm YmNjMTkxNzZiNzFkMDgxY2RiM2JjY2RlMTYyMmJiM2U0MjBkNTY4MGU4MTI2MzJkNTMiLCJkb2Mv SVNPLTg4NTktNS50eHQiOiJhMTBlYzhkNmVhN2E3OGFkMTVkYTcyNzVmNmNiMWEzMzY1MTE4NTI3 ZTI4ZjlhZjZkMGQ1ODMwNTAxMzAzZjNhIiwiZG9jL0lTTy04ODU5LTYudHh0IjoiY2NkYThhMmVm Yzk2MTE1MzM2YmRkNzc3NzY2MzdiOTcxMjQyNWU0NGZiY2Y3NDUzNTNiOTA1N2ZiZWYxNDRlNyIs ImRvYy9JU08tODg1OS03LnR4dCI6IjE3OTAwZmExZjI3YTQ0NTk1OGYwYTc3ZDdkOTA1NmJlMzc1 YTZiZDdlZTQ0OTJhYTY4MGM3YzE1MDBiYWI4NWUiLCJkb2MvSVNPLTg4NTktOC1JLnR4dCI6Ijgz NTc1NTU2NDZkNTQyNjVhOWI5ZmZhM2U2OGIwOGQxMzIzMTJmMTU2MWM2MDEwOGZmOWI4YjExNjdi NmVjZjIiLCJkb2MvSVNPLTg4NTktOC50eHQiOiI3MmNkNmYzYWZiN2I0YTljMTZhNjZhMzYyNDcz MzE1NzcwYjc3NTVkNzJjODZjODcwZTUyZmMzZWJhODZjOGFmIiwiZG9jL0tPSTgtUi50eHQiOiI4 MzljZjE5YTM4ZGE5OTQ0ODgwMDRlZDc4MTRiMWY2MTUxNjQwMTU2YTlhMmFmMDJiZjJlZmNhNzQ1 ZmI1OTY2IiwiZG9jL0tPSTgtVS50eHQiOiIwY2M3NjYyNGVkMWYwMjQxODNlMjI5OGI3ZTAxOTk1 N2RhMmM3MGM4Y2EwNmUwZmM0ZTZmMzUzZjUwYTUwNTRmIiwiZG9jL1NoaWZ0X0pJUy50eHQiOiIz NGM0OTE0MTgxOGNiOWRkYmNmNTljYzg1OGY3OGE3OWJlOGFkMTQ4ZDU2M2YyNjQxNTEwOGFlMWYx NDg0NDNmIiwiZG9jL1VURi0xNkJFLnR4dCI6ImUyZTI4MGQ4YWNiYWE2ZDJhNmIzNTY5ZDYwZTE3 NTAwYTI4NWYyYmFhMGRmMzM2M2RkODU1MzdjZDVhMWVmOGYiLCJkb2MvVVRGLTE2TEUudHh0Ijoi NzBiZGMxNzBlM2ZjNTI5OGJhNjhmMTAxMjVmYjVlZWI4YjA3NzAzNmNjOTZiYjQ0MTZjNGRlMzk2 ZjZkNzZjMSIsImRvYy9VVEYtOC50eHQiOiJlYTdiYWU3NDJlNjEzMDEwY2VkMDAyY2Y0YjYwMWE3 MzdkMjIwM2ZhZDY1ZTExNTYxMTQ1MWJjNDQyOGY1NDhhIiwiZG9jL2diMTgwMzAudHh0IjoiZGM3 MTM3OGE4ZjA3YTJkODY1OWY2OWVlODFmYjg3OTFmZWY1NmJhODZmMTI0YjQyOTk3ODI4NTIzN2Ji NGE3YiIsImRvYy9tYWNpbnRvc2gudHh0IjoiNTc0OTFlNTM4NjY3MTFiNDY3MmQ5YjlmZjM1Mzgw YjlkYWM5ZTBkOGUzZDZjMjBiZGQ2MTQwNjAzNjg3YzAyMyIsImRvYy9yZXBsYWNlbWVudC50eHQi OiI0YjZjM2JiZDc5OTlkOWQ0MTA4YTI4MTU5NGJkMDJkMTM2MDdlMzM0YTk1NDY1YWZmZjhjMmMw OGQzOTVmMGU0IiwiZG9jL3dpbmRvd3MtMTI1MC50eHQiOiI2MTI5NmJiNmEyMWNkYWI2MDIzMDBk MzJlY2ZiYTQzNGNiODJkZTVhYzNiYzg4ZDU4NzEwZDJmMTI1ZTI4ZDM5IiwiZG9jL3dpbmRvd3Mt MTI1MS50eHQiOiI3ZGVlYTFjNjFkZWExNDg1YzhmZjAyZGIyYzdkNTc4ZGI3YTlhYWI2M2FiMWNm ZDAyZWMwNGI1MTU4NjQ2ODllIiwiZG9jL3dpbmRvd3MtMTI1Mi50eHQiOiI5MzNlZjNiZGRkZmNl NWVlMTMyYjlmMWExYWE4YjQ3NDIzZDI1ODdiYmU0NzViMTkwMjhkMGE2ZDM4ZTE4MGI2IiwiZG9j L3dpbmRvd3MtMTI1My50eHQiOiIxYTM4NzQ4Yjg4ZTk5MDcxYTVjN2IzZDU0NTZlYWQ0Y2FlZGVh YmFiNTBkNTBkNjU4YmUxMDViYzExMzcxNGRlIiwiZG9jL3dpbmRvd3MtMTI1NC50eHQiOiJmODM3 MmY4NmM2ZjhkNjQyNTYzY2Q2ZGRjMDI1MjYwNTUzMjkyYTM5NDIzZGYxNjgzYTk4NjcwYmQ3YmYy YjQ3IiwiZG9jL3dpbmRvd3MtMTI1NS50eHQiOiI0ZTU4NTI0OTQ3MzAwNTRlMmRhMjU4YTc0ZTFi OWQ3ODBhYmJjZGQ4Y2UyMmViYzIxOGNhMmVmZTllOTA0OTNkIiwiZG9jL3dpbmRvd3MtMTI1Ni50 eHQiOiJjMDg3OWM1MTcyYWJlZGVhZDMwMmE0MDZlOGY2MGQ5Y2Q5NTk4Njk0YTBmZmE0ZmQyODhm ZmU0ZmVmN2I4ZWExIiwiZG9jL3dpbmRvd3MtMTI1Ny50eHQiOiJjMjhhMGM5Zjk2NGZjYjJiNDZk MjFmNTM3YzQwMjQ0NjUwMWEyODAwNjcwNDgxZDZhYmY5ZmQ5ZTkwMThkNTIzIiwiZG9jL3dpbmRv d3MtMTI1OC50eHQiOiI1MDE5YWU0ZDYxODA1Yzc5YWFjYmYxN2M5Mzc5MzM0MmRiYjA5OGQ2NWEx ODM3NzgzYmMzZTJjNmQ2YTIzNjAyIiwiZG9jL3dpbmRvd3MtODc0LnR4dCI6IjRlZjBlNDUwMWM1 ZmViYThiMTdhZWUxODE4NjAyZWQ0NGIzNmNhODQ3NWRiNzcxY2UyZmMxNmQzOTJjYWJlY2MiLCJk b2MveC1tYWMtY3lyaWxsaWMudHh0IjoiNThiZTE1NGQ4YTg4OGNhM2Q0ODRiODNiNDRmNzQ5ODIz ZWYzMzlhYjI3ZjE0ZDkwY2E5YTg1NmY1MDUwYThiZCIsImRvYy94LXVzZXItZGVmaW5lZC50eHQi OiJmOWNkMDdjNDMyMWJmNWNmYjBiZTRiZGRkZDI1MTA3Mjk5OWIwNGE2Y2Y3YTZmNWJjNjM3MDlh ODRlMmMxZmZjIiwiZ2VuZXJhdGUtZW5jb2RpbmctZGF0YS5weSI6ImJlOTg5ZGQyNWM2Yjk0NmUz ZTg3NDVmZGM4ZThhODBmY2YyNGIzYmU5OWFkMGI0Yjc4MTUzYmEzZjZhYjYzMTAiLCJydXN0Zm10 LnRvbWwiOiI4NWMxYTNiNDM4MmZkODllOTkxY2JiODFiNzBmYjUyNzgwNDcyZWRjMDY0Yzk2Mzk0 M2NkYWFhNTZlMGEyMDMwIiwic3JjL2FzY2lpLnJzIjoiYzQ0YzAwMjY0MWFkYjVlYmM0MzY4NzA3 YThjYzBhMDc2ZDJmMzNlNmE1YzI3YjFiNjk5ODhlYjUxNWY1NjUzZCIsInNyYy9iaWc1LnJzIjoi ZWM2ZTI5MTMwMTFhMzhlOWEzZTgyNWExNzMxZjEzOWE3Y2ExZDViMjY0ZmVmYWU1MWEzY2MxYTY4 YTU3Y2VmOSIsInNyYy9kYXRhLnJzIjoiOGE2MTdjYzU3MDMyMDkyZDY1ODUwZWIyN2UwMGRlNjg3 YzgwYWVhMzI5OWU4MzlhMWY1OGI0MmQwYjM1YWJmMyIsInNyYy9ldWNfanAucnMiOiIzMjA0N2Y1 YjU0MDE4OGM0Y2IxOWMwNzE2NWY4NDZiOTc4NmEwOWYxOGUzMTVlZDNlOWJkYTEyOTNkYWU1MmFh Iiwic3JjL2V1Y19rci5ycyI6IjliMjVhZmM3MmQ5Mzc4NzAwZWVjZmFjNThkNTVhZDFjNTk0NmQ2 Y2QwY2NkZTJjMjljMDgyMDBlZjJkZTZiYjkiLCJzcmMvZ2IxODAzMC5ycyI6IjgwODU4NzE2OGQ3 M2YwYzgwZjg1MjBmMGNhOWIxNjE4NjZlZDJlZmViMTdhMDVlODVmZGYzYjhlZmU3YmEyOGEiLCJz cmMvaGFuZGxlcy5ycyI6ImNjODNkYzA3NTQ3NTFkNjdmNTY4OGE2NWM1ZTAxOTFjYmEwMmY2YmFj Y2U4MWEwODEzYTI0M2NiYTU1ZWVmN2EiLCJzcmMvaXNvXzIwMjJfanAucnMiOiI5YmI0ODVlODI1 NzRmNGI3ZDRiMjM2NGYwZmYyNzZhY2I2YTBiYzExMTc1ODQyMGEzYjBlYzVlMDRjMTk2NjUyIiwi c3JjL2xpYi5ycyI6IjFkYzA3YjgxOGU0NTg0NmIxNmRkY2FmMGRlNDZjODg2MmRkN2RmODA5OTEy M2VjMzhiOTVjM2Y4YWQ5YzkxZWMiLCJzcmMvbWFjcm9zLnJzIjoiMjAwOTk3Zjg4NzBkZThiZmQ4 Y2RjNDc1ZTkyMTE1ZGY0MjEwOGMwZGY2NjFlNDlkM2QxY2JjMzIwNTZlMWQ5OSIsInNyYy9tZW0u cnMiOiIwYmYzNDEwM2UwYWQxYjg0MmExM2EwODJkZWUyYjkyMGIwNWNmNGZiMGYxNDVjOWVlN2Y2 MDhmNGNiNGE1NDRmIiwic3JjL3JlcGxhY2VtZW50LnJzIjoiNzY2MGIzNGE1M2Y4YzFjYTJiZGZh MGU1MWU4NDNlYzI4MzI2OTUwOTUyYWQ4YmM5NjU2OWZlYjkzYWM2MjMwOCIsInNyYy9zaGlmdF9q aXMucnMiOiI2OTUxYWU2N2UzNmIxYTEyZmEzYTMwNzM0OTU3ZjQ0NGQ4YjFiNGFlMGUyYmRlNTIw NjBiMjliZDBmMTZkOWQ5Iiwic3JjL3NpbWRfZnVuY3MucnMiOiIyNjEyYWJhODZlMWQyMDEwOTZk N2U0N2E4NTliYzM0NDRmODU5MzRjYzgyZDhhZGM2ZDM5YTQzMDRkOWVlY2ZjIiwic3JjL3Npbmds ZV9ieXRlLnJzIjoiM2M5ZTljMWY5NDZhZTYyMmM3MjViYTk0MjEyNDBjMWZhYTlhMDVlOTVmYTEw ZGQ0NjQyYTI1Y2IyNzZhMWVkYyIsInNyYy90ZXN0X2RhdGEvYmlnNV9pbi50eHQiOiI0YzVhODY5 MWY4ZGM3MTczMTE4ODljNjM4OTQwMjZkMmZiNjI3MjVhODZjNDIwOGNhMjc0YTljYzhkNDJhNTAz Iiwic3JjL3Rlc3RfZGF0YS9iaWc1X2luX3JlZi50eHQiOiI5OWQzOTllMTc3NTBjZjljN2NmMzBi YjI1M2RiZmUzNWI4MWM0ZmNiZGVhZDkzY2ZhNDhiMTQyOTIxMzQ3M2M3Iiwic3JjL3Rlc3RfZGF0 YS9iaWc1X291dC50eHQiOiI2MTkzY2E5N2MyOTdhYTIwZTA5Mzk2MDM4ZDE4ZTkzOGJiN2VhMzMx YzI2ZjBmMjQ1NDA5NzI5NjcyM2EwYjEzIiwic3JjL3Rlc3RfZGF0YS9iaWc1X291dF9yZWYudHh0 IjoiMzY1Njc2OTFmNTU3ZGYxNDRmNmNjNTIwMDE1YTg3MDM4ZGZhMTU2ZjI5NmZjZjEwM2I1NmFl OWE3MThiZTFmYyIsInNyYy90ZXN0X2RhdGEvZXVjX2tyX2luLnR4dCI6ImM4NmE3MjI0ZjMyMTVm YTBkMDRlNjg1NjIyYTc1MmZkYzcyNzYzZThhZTA3NjIzMGM3ZmQ2MmRlNTdlYzQwNzQiLCJzcmMv dGVzdF9kYXRhL2V1Y19rcl9pbl9yZWYudHh0IjoiMWY0MTlmNGNhNDdkNzA4YjU0YzczYzQ2MTU0 NWEwMjJhZTJlMjA0OThmZGJmODAwNWE0ODNkNzUyYTIwNDg4MyIsInNyYy90ZXN0X2RhdGEvZXVj X2tyX291dC50eHQiOiJlN2YzMmUwMjZmNzBiZTFlMWI1OGUwMDQ3YmFmN2QzZDJjNTIwMjY5YzRm OWI5OTkyZTE1OGI0ZGVjYjBhMWEzIiwic3JjL3Rlc3RfZGF0YS9ldWNfa3Jfb3V0X3JlZi50eHQi OiJjOTkwNzg1Nzk4MGIyMGI4ZTllM2I1ODQ0ODJlZDY1NjdhMmJlNjE4NWQ3MjIzN2I2MzIyZjA0 MDQ5NDQ5MjRlIiwic3JjL3Rlc3RfZGF0YS9nYjE4MDMwX2luLnR4dCI6ImFiNzIzMWIyZDNlOWFm YWNkYmQ3ZDdmM2I5ZTUzNjFhN2ZmOWY3ZTFjZmRiNGYzYmQ5MDViOTM2MmIzMDllNTMiLCJzcmMv dGVzdF9kYXRhL2diMTgwMzBfaW5fcmVmLnR4dCI6ImRjNTA2OTQyMWFkY2EyMDQzYzU1ZjUwMTJi NTVhNzZmZGZmNjUxZDIyZTZlNjk5ZmQwOTc4ZjhkNTcwNjgxNWMiLCJzcmMvdGVzdF9kYXRhL2di MTgwMzBfb3V0LnR4dCI6ImYwMjA4ZDUyN2Y1Y2E2M2RlN2Q5YTAzMjNiZThkNWNmMTJkOGExMDRi Mjk0M2Q5MmMyNzAxZjBjMzM2NGRhYzEiLCJzcmMvdGVzdF9kYXRhL2diMTgwMzBfb3V0X3JlZi50 eHQiOiI2ODE5ZmU0NzYyN2U0ZWEwMTAyNzAwM2ZjNTE0YjlmMjFhMTMyMmU3MzJkN2YxZmI5MmNj NmM1NDU1YmM2YzA3Iiwic3JjL3Rlc3RfZGF0YS9pc29fMjAyMl9qcF9pbi50eHQiOiJjZDI0YmJk Y2IxODM0ZTI1ZGI1NDY0NmZiZjRjNDE1NjBhMTNkYzc1NDBmNmJlM2RiYTRmNWQ5N2Q0NDUxM2Fm Iiwic3JjL3Rlc3RfZGF0YS9pc29fMjAyMl9qcF9pbl9yZWYudHh0IjoiM2RjNGU2YTVlMDY0NzE5 NDJkMDg2YjE2Yzk0NDA5NDVlNzg0MTVmNmYzZjQ3ZTQzNzE3ZTRiYzJlYWMyY2RmNSIsInNyYy90 ZXN0X2RhdGEvaXNvXzIwMjJfanBfb3V0LnR4dCI6IjliNmYwMTUzMjlkZGE2YzNmOWVlNWNlNmRi ZDZmYTljODlhY2MyMTI4M2U4ODY4MzZjNzhiOGQ4MzM0ODBjMjEiLCJzcmMvdGVzdF9kYXRhL2lz b18yMDIyX2pwX291dF9yZWYudHh0IjoiNzhjYjI2MDA5M2EyMDExNmFkOWE0MmY0M2IwNWQxODQ4 YzVhYjEwMGI2YjlhODUwNzQ5ODA5ZTk0Mzg4NGIzNSIsInNyYy90ZXN0X2RhdGEvamlzMDIwOF9p bi50eHQiOiI2ZGYzMDMwNTUzZmZiMGE2NjE1YmIzM2RjOGVhOWRjYTZkOTYyM2E5MDI4ZTJmZmVj NzU0Y2UzYzNkYTgyNGNjIiwic3JjL3Rlc3RfZGF0YS9qaXMwMjA4X2luX3JlZi50eHQiOiIzZGM0 ZTZhNWUwNjQ3MTk0MmQwODZiMTZjOTQ0MDk0NWU3ODQxNWY2ZjNmNDdlNDM3MTdlNGJjMmVhYzJj ZGY1Iiwic3JjL3Rlc3RfZGF0YS9qaXMwMjA4X291dC50eHQiOiI0ZWMyNDQ3N2UxNjc1Y2U3NTA3 MzNiZGMzYzVhZGQxY2QyN2I2YmQ0Y2UxZjA5Mjg5NTY0NjQ2ZTk2NTRlODU3Iiwic3JjL3Rlc3Rf ZGF0YS9qaXMwMjA4X291dF9yZWYudHh0IjoiYzNlMWNlZjUwMzJiMmIxZDkzYTQwNmYzMWZmOTQw YzRlMmRmZTg4NTliOGIxN2NhMjc2MWZlZTdhNzVhMGU0OCIsInNyYy90ZXN0X2RhdGEvamlzMDIx Ml9pbi50eHQiOiJjMDExZjBkZDcyYmQ3YzhjZDkyMmRmOTM3NGVmOGQyNzY5YTc3MTkwNTE0Yzc3 ZjZjNjJiNDE1ODUyZWViOWZlIiwic3JjL3Rlc3RfZGF0YS9qaXMwMjEyX2luX3JlZi50eHQiOiI3 ZDk0NThiM2QyZjczZTcwOTJhN2Y1MDVjMDhjZTFkMjMzZGRlMThhYTY3OWZiY2Y5ODg5MjU2MjM5 Y2M5ZTA2Iiwic3JjL3Rlc3RfZGF0YS9zaGlmdF9qaXNfaW4udHh0IjoiMDJlMzg5Y2NlZjBkZDIx MjJlNjNmNTAzODk5NDAyY2I3Zjc5NzkxMmMyNDQ0Y2M4MGFiOTMxMzExMTZjNTUyNCIsInNyYy90 ZXN0X2RhdGEvc2hpZnRfamlzX2luX3JlZi50eHQiOiI1MTJmOTg1OTUwY2E5MDJlNjQzYzg4Njgy ZGJhOTcwOGI3YzM4ZDNjNWVjMjkyNTE2OGFiMDBhYzk0YWIxOWY5Iiwic3JjL3Rlc3RfZGF0YS9z aGlmdF9qaXNfb3V0LnR4dCI6IjVmYmM0NGRhN2JmNjM5YmY2Y2ZlMGZhMWZkM2ViYTcxMDJiODhm ODE5MTljOWVhOTkxMzAyNzEyZjY5NDI2ZmIiLCJzcmMvdGVzdF9kYXRhL3NoaWZ0X2ppc19vdXRf cmVmLnR4dCI6IjQ2NjMyMmM2ZmVkODI4NmM2NDU4MjczMTc1NTI5MGMyMjk2NTA4ZWZkZDI1ODgy NmU2Mjc5Njg2NjQ5YjQ4MWYiLCJzcmMvdGVzdF9sYWJlbHNfbmFtZXMucnMiOiIyM2EyZTExYjAy YjNiOGQxNWZiNTYxM2E2MjVlM2VkYjJjNjFlNzBlM2M1ODFhYmZkNjM4NzE5YTQwODgyMDBkIiwi c3JjL3Rlc3RpbmcucnMiOiJmNTllNjcxZTk1YTk4YTU2ZjZiNTczZThjNmJlNGQ3MWU2NzBiZjUy ZjdlMjBlYjE2MDVkOTkwYWFmYTE4OTRlIiwic3JjL3V0Zl8xNi5ycyI6ImMwNzFhMTQ3ZmFkMzhk NzUwYzJjMjQ3ZTE0MWI3NmI5MjlhNDgwMDdiOTlmMjZiMjkyMmI5Y2FlY2RhZjJmMjUiLCJzcmMv dXRmXzgucnMiOiI3YjdkODg3YjM0N2YxYWVmYTAzMjQ2YjAyOGEzNmE3Mjc1OGE0Y2U3NmMyOGYz YjQ1YzE5NDY3ODUxYWE3ODM5Iiwic3JjL3ZhcmlhbnQucnMiOiIxZmFiNTM2MzU4OGExNTU0YTcx NjlkZTg3MzFlYTljZGVkN2FjNjNlYTM1Y2FhYmRkMWMyN2E4ZGRlNjhjMjdiIiwic3JjL3hfdXNl cl9kZWZpbmVkLnJzIjoiYzljMDEwNzMwZGZiOWYxNDFkNGZlZDE5MzUwYzA4YTIxYWYyNDA5MTNh NTRiYjY0ZjVjYTg5ZmY5M2I2YjdkMSJ9LCJwYWNrYWdlIjoiNzI2OGIzODYyOTZhMDI1ZTQ3NGQ1 MTQwNjc4Zjc1ZDZkZTk0OTNhZTU1YTVkNzA5ZWViOWRkMDgxNDk5NDVlMSJ9Ci1cIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKLSt7ImZpbGVzIjp7IkNPTlRSSUJVVElORy5tZCI6ImNhMTkwMWYz ZTg1MzJmYjRjZWM4OTRmZDM2NjRmMGVhYTg5OGMwYzRiOTYxZDFiOTkyZDFlZDU0ZWFjZjM2MmEi LCJDT1BZUklHSFQiOiIxMTc4OWY0NWJiMTgwODQxY2QzNjJhNWVlZTY3ODljNjhkZGI1NzNhMTEx MDVlMzA3NjhjMzA4YTZhZGQwMTkwIiwiQ2FyZ28udG9tbCI6IjIyYTRkMjEwYzkyZGFlOWYzMmM2 OTQ0ZWYzNDBlZThmZGQwMjdmOTljMDgxNTc3ZTg5MDcxMjNlMmE5MzM4M2UiLCJJZGVhcy5tZCI6 ImI3NDUyODkzZjUwMDE2Mzg2OGQ4ZGU1MmMwOWFkZGFmOTFlMTYzMjQ1NGVkMDJlODkyYzQ2N2Vk N2VjMzlkYmQiLCJMSUNFTlNFLUFQQUNIRSI6ImNmYzc3NDliOTZmNjNiZDMxYzNjNDJiNWM0NzFi Zjc1NjgxNDA1M2U4NDdjMTBmM2ViMDAzNDE3YmM1MjNkMzAiLCJMSUNFTlNFLU1JVCI6IjNmYTRj YTgzZGNjOTIzNzgzOWIxYmRlYjJlNmQxNmJkZmI1ZWMwYzVjZTQyYjI0Njk0ZDhiYmYwZGNiZWY3 MmMiLCJMSUNFTlNFLVdIQVRXRyI6IjgzODExODM4OGZlNWMyZTdmMWRiYmFlZWQxM2UxYzdmM2Vi Zjg4YmU5MTMxOWM3YzFkNzdjMThlOTg3ZDFhNTAiLCJSRUFETUUubWQiOiIxZDA4YWVmY2I5MmFm YTgxYjE4MTU0MDQ5YzlhYmJjYWQ0NTQwYTIzZjcxNzJlOWY5YmJlZDVhZjMzZjFhMDg3IiwiY2kv bWlyaS5zaCI6IjQzY2I4ZDgyZjQ5ZTNiZmUyZDIyNzRiNmNjZDZmMDcxNGE0MTg4Y2NlZjBjZWNj MDQwODI5ODgzY2ZkYmVlMjUiLCJkb2MvQmlnNS50eHQiOiJmNzNhMmVkYzVjYjZjMmQxNDBiYTZl MDdmNDU0MmUxYzRhMjM0OTUwMzc4YWNkZTFkZjkzNDgwZjBjYTBiZTBiIiwiZG9jL0VVQy1KUC50 eHQiOiJlZTI4MThiOTA3ZDAxMzdmNDBhOWFiOWZkNTI1ZmM3MDBhNDRkYmRkZGI2Y2YwYzE1N2E2 NTY1NjZiYWU0YmYxIiwiZG9jL0VVQy1LUi50eHQiOiI3MWQ5ZTJjY2YzYjEyNGU4YmRmYjQzM2M4 Y2YyNzczZmQ4NzgwNzcwMzhkMGNlYzNjNzIzN2E1MGY0YTc4YTMwIiwiZG9jL0dCSy50eHQiOiJj MWI1MjJiNWE3OTk4ODRlNTAwMWRhNjYxZjQyYzVhOGY0ZDBhY2I5ZWYxZDc0YjIwNmYyMmI1ZjY1 MzY1NjA2IiwiZG9jL0lCTTg2Ni50eHQiOiJhNWE0MzNlODA0ZDBmODNhZjc4NTAxNTE3OWZiYzFk OWIwZWFmMWY3OTYwZWZjZDA0MDkzZTEzNmI1MWZiZDBlIiwiZG9jL0lTTy0yMDIyLUpQLnR4dCI6 ImFmODY2ODRmNWE4ZjBlMjg2OGQ3YjJjMjkyODYwMTQwYzNkMmU1NTI3NTMwY2EwOTFmMWIyODE5 OGU4ZTJmZTYiLCJkb2MvSVNPLTg4NTktMTAudHh0IjoiNmQzOTQ5YWQ3YzgxY2ExNzY4OTUxMDFl ZDgxYTFkYjdkZjEwNjBkNjRlMjYyODgwYjk0YmQzMWJiMzQ0YWI0ZCIsImRvYy9JU08tODg1OS0x My50eHQiOiIzOTUxZGQ4OWNmOTNmNzcyOTE0ODA5MTY4M2NmODUxMWY0NTI5Mzg4YjdkYzhkY2Qw ZDYyZWFlZDU1YmU5M2ZhIiwiZG9jL0lTTy04ODU5LTE0LnR4dCI6IjNkMzMwNzg0YTAzNzRmZDI1 NWEzOGI0Nzk0OTY3NWNjNzE2OGM4MDA1MzA1MzRiMGEwMWNhYzZlZGM2MjNhZGMiLCJkb2MvSVNP LTg4NTktMTUudHh0IjoiMjRiMTA4NGFhYjUxMjdhODVhYWI5OTE1M2Y4NmUyNDY5NGQwYTM2MTVm NTNiNWNlMjM2ODNmOTdjZjY2YzQ3YSIsImRvYy9JU08tODg1OS0xNi50eHQiOiJjZTAyNzI1NTli OTJiYTc2ZDdhN2U0NzZmNjQyNGFlNGE1Y2M3MmU3NWIxODM2MTFiMDgzOTJlNDRhZGQ0ZDI1Iiwi ZG9jL0lTTy04ODU5LTIudHh0IjoiMThjZWZmODhjMTNkMWI1YmE0NTVhMzkxOWIxZTNkZTQ4OTA0 NWM0YzNkMmRkN2U4NTI3YzEyNWM3NWQ1NGFhZCIsImRvYy9JU08tODg1OS0zLnR4dCI6IjIxNzk4 NDA0YzY4ZjRmNWRiNTkyMjMzNjJmMjQ5OTlkYTk2OTY4YzA2Mjg0MjczMjFmY2NjZTdkMjg0OWEx MzAiLCJkb2MvSVNPLTg4NTktNC50eHQiOiJkMjdmNjUyMGM2YzViZmJjYzE5MTc2YjcxZDA4MWNk YjNiY2NkZTE2MjJiYjNlNDIwZDU2ODBlODEyNjMyZDUzIiwiZG9jL0lTTy04ODU5LTUudHh0Ijoi YTEwZWM4ZDZlYTdhNzhhZDE1ZGE3Mjc1ZjZjYjFhMzM2NTExODUyN2UyOGY5YWY2ZDBkNTgzMDUw MTMwM2YzYSIsImRvYy9JU08tODg1OS02LnR4dCI6ImNjZGE4YTJlZmM5NjExNTMzNmJkZDc3Nzc2 NjM3Yjk3MTI0MjVlNDRmYmNmNzQ1MzUzYjkwNTdmYmVmMTQ0ZTciLCJkb2MvSVNPLTg4NTktNy50 eHQiOiIxNzkwMGZhMWYyN2E0NDU5NThmMGE3N2Q3ZDkwNTZiZTM3NWE2YmQ3ZWU0NDkyYWE2ODBj N2MxNTAwYmFiODVlIiwiZG9jL0lTTy04ODU5LTgtSS50eHQiOiI4MzU3NTU1NjQ2ZDU0MjY1YTli OWZmYTNlNjhiMDhkMTMyMzEyZjE1NjFjNjAxMDhmZjliOGIxMTY3YjZlY2YyIiwiZG9jL0lTTy04 ODU5LTgudHh0IjoiNzJjZDZmM2FmYjdiNGE5YzE2YTY2YTM2MjQ3MzMxNTc3MGI3NzU1ZDcyYzg2 Yzg3MGU1MmZjM2ViYTg2YzhhZiIsImRvYy9LT0k4LVIudHh0IjoiODM5Y2YxOWEzOGRhOTk0NDg4 MDA0ZWQ3ODE0YjFmNjE1MTY0MDE1NmE5YTJhZjAyYmYyZWZjYTc0NWZiNTk2NiIsImRvYy9LT0k4 LVUudHh0IjoiMGNjNzY2MjRlZDFmMDI0MTgzZTIyOThiN2UwMTk5NTdkYTJjNzBjOGNhMDZlMGZj NGU2ZjM1M2Y1MGE1MDU0ZiIsImRvYy9TaGlmdF9KSVMudHh0IjoiMzRjNDkxNDE4MThjYjlkZGJj ZjU5Y2M4NThmNzhhNzliZThhZDE0OGQ1NjNmMjY0MTUxMDhhZTFmMTQ4NDQzZiIsImRvYy9VVEYt MTZCRS50eHQiOiJlMmUyODBkOGFjYmFhNmQyYTZiMzU2OWQ2MGUxNzUwMGEyODVmMmJhYTBkZjMz NjNkZDg1NTM3Y2Q1YTFlZjhmIiwiZG9jL1VURi0xNkxFLnR4dCI6IjcwYmRjMTcwZTNmYzUyOThi YTY4ZjEwMTI1ZmI1ZWViOGIwNzcwMzZjYzk2YmI0NDE2YzRkZTM5NmY2ZDc2YzEiLCJkb2MvVVRG LTgudHh0IjoiZWE3YmFlNzQyZTYxMzAxMGNlZDAwMmNmNGI2MDFhNzM3ZDIyMDNmYWQ2NWUxMTU2 MTE0NTFiYzQ0MjhmNTQ4YSIsImRvYy9nYjE4MDMwLnR4dCI6ImRjNzEzNzhhOGYwN2EyZDg2NTlm NjllZTgxZmI4NzkxZmVmNTZiYTg2ZjEyNGI0Mjk5NzgyODUyMzdiYjRhN2IiLCJkb2MvbWFjaW50 b3NoLnR4dCI6IjU3NDkxZTUzODY2NzExYjQ2NzJkOWI5ZmYzNTM4MGI5ZGFjOWUwZDhlM2Q2YzIw YmRkNjE0MDYwMzY4N2MwMjMiLCJkb2MvcmVwbGFjZW1lbnQudHh0IjoiNGI2YzNiYmQ3OTk5ZDlk NDEwOGEyODE1OTRiZDAyZDEzNjA3ZTMzNGE5NTQ2NWFmZmY4YzJjMDhkMzk1ZjBlNCIsImRvYy93 aW5kb3dzLTEyNTAudHh0IjoiNjEyOTZiYjZhMjFjZGFiNjAyMzAwZDMyZWNmYmE0MzRjYjgyZGU1 YWMzYmM4OGQ1ODcxMGQyZjEyNWUyOGQzOSIsImRvYy93aW5kb3dzLTEyNTEudHh0IjoiN2RlZWEx YzYxZGVhMTQ4NWM4ZmYwMmRiMmM3ZDU3OGRiN2E5YWFiNjNhYjFjZmQwMmVjMDRiNTE1ODY0Njg5 ZSIsImRvYy93aW5kb3dzLTEyNTIudHh0IjoiOTMzZWYzYmRkZGZjZTVlZTEzMmI5ZjFhMWFhOGI0 NzQyM2QyNTg3YmJlNDc1YjE5MDI4ZDBhNmQzOGUxODBiNiIsImRvYy93aW5kb3dzLTEyNTMudHh0 IjoiMWEzODc0OGI4OGU5OTA3MWE1YzdiM2Q1NDU2ZWFkNGNhZWRlYWJhYjUwZDUwZDY1OGJlMTA1 YmMxMTM3MTRkZSIsImRvYy93aW5kb3dzLTEyNTQudHh0IjoiZjgzNzJmODZjNmY4ZDY0MjU2M2Nk NmRkYzAyNTI2MDU1MzI5MmEzOTQyM2RmMTY4M2E5ODY3MGJkN2JmMmI0NyIsImRvYy93aW5kb3dz LTEyNTUudHh0IjoiNGU1ODUyNDk0NzMwMDU0ZTJkYTI1OGE3NGUxYjlkNzgwYWJiY2RkOGNlMjJl YmMyMThjYTJlZmU5ZTkwNDkzZCIsImRvYy93aW5kb3dzLTEyNTYudHh0IjoiYzA4NzljNTE3MmFi ZWRlYWQzMDJhNDA2ZThmNjBkOWNkOTU5ODY5NGEwZmZhNGZkMjg4ZmZlNGZlZjdiOGVhMSIsImRv Yy93aW5kb3dzLTEyNTcudHh0IjoiYzI4YTBjOWY5NjRmY2IyYjQ2ZDIxZjUzN2M0MDI0NDY1MDFh MjgwMDY3MDQ4MWQ2YWJmOWZkOWU5MDE4ZDUyMyIsImRvYy93aW5kb3dzLTEyNTgudHh0IjoiNTAx OWFlNGQ2MTgwNWM3OWFhY2JmMTdjOTM3OTMzNDJkYmIwOThkNjVhMTgzNzc4M2JjM2UyYzZkNmEy MzYwMiIsImRvYy93aW5kb3dzLTg3NC50eHQiOiI0ZWYwZTQ1MDFjNWZlYmE4YjE3YWVlMTgxODYw MmVkNDRiMzZjYTg0NzVkYjc3MWNlMmZjMTZkMzkyY2FiZWNjIiwiZG9jL3gtbWFjLWN5cmlsbGlj LnR4dCI6IjU4YmUxNTRkOGE4ODhjYTNkNDg0YjgzYjQ0Zjc0OTgyM2VmMzM5YWIyN2YxNGQ5MGNh OWE4NTZmNTA1MGE4YmQiLCJkb2MveC11c2VyLWRlZmluZWQudHh0IjoiZjljZDA3YzQzMjFiZjVj ZmIwYmU0YmRkZGQyNTEwNzI5OTliMDRhNmNmN2E2ZjViYzYzNzA5YTg0ZTJjMWZmYyIsImdlbmVy YXRlLWVuY29kaW5nLWRhdGEucHkiOiJiZTk4OWRkMjVjNmI5NDZlM2U4NzQ1ZmRjOGU4YTgwZmNm MjRiM2JlOTlhZDBiNGI3ODE1M2JhM2Y2YWI2MzEwIiwicnVzdGZtdC50b21sIjoiODVjMWEzYjQz ODJmZDg5ZTk5MWNiYjgxYjcwZmI1Mjc4MDQ3MmVkYzA2NGM5NjM5NDNjZGFhYTU2ZTBhMjAzMCIs InNyYy9hc2NpaS5ycyI6IjU4OGUzOGIwMWU2NjZkNWU3NDYyNjE3ZWE3ZTkwYTEwOGQ2MDhkZWM5 ZTAxNmYzZDI3M2FjMDc0NGFmMmUwNWQiLCJzcmMvYmlnNS5ycyI6ImVjNmUyOTEzMDExYTM4ZTlh M2U4MjVhMTczMWYxMzlhN2NhMWQ1YjI2NGZlZmFlNTFhM2NjMWE2OGE1N2NlZjkiLCJzcmMvZGF0 YS5ycyI6IjhhNjE3Y2M1NzAzMjA5MmQ2NTg1MGViMjdlMDBkZTY4N2M4MGFlYTMyOTllODM5YTFm NThiNDJkMGIzNWFiZjMiLCJzcmMvZXVjX2pwLnJzIjoiMzIwNDdmNWI1NDAxODhjNGNiMTljMDcx NjVmODQ2Yjk3ODZhMDlmMThlMzE1ZWQzZTliZGExMjkzZGFlNTJhYSIsInNyYy9ldWNfa3IucnMi OiI5YjI1YWZjNzJkOTM3ODcwMGVlY2ZhYzU4ZDU1YWQxYzU5NDZkNmNkMGNjZGUyYzI5YzA4MjAw ZWYyZGU2YmI5Iiwic3JjL2diMTgwMzAucnMiOiI4MDg1ODcxNjhkNzNmMGM4MGY4NTIwZjBjYTli MTYxODY2ZWQyZWZlYjE3YTA1ZTg1ZmRmM2I4ZWZlN2JhMjhhIiwic3JjL2hhbmRsZXMucnMiOiJi MDhjZWYxZjU3ODViYjZhNDgyMmYyZTg0NGM2ZGYxYjA0NmI3MzdiN2EwNzVlNDU5M2VhYThjNDIw OGU5ZmUyIiwic3JjL2lzb18yMDIyX2pwLnJzIjoiOWJiNDg1ZTgyNTc0ZjRiN2Q0YjIzNjRmMGZm Mjc2YWNiNmEwYmMxMTE3NTg0MjBhM2IwZWM1ZTA0YzE5NjY1MiIsInNyYy9saWIucnMiOiI4MzRm NDRiNjcwZWM0OGVlODJjMGUxMjIyM2QxNTY3MzEzZmRkOWY4OGJjYTVmNGIxMTdjODJjMTgyOGY1 NTlmIiwic3JjL21hY3Jvcy5ycyI6IjIwMDk5N2Y4ODcwZGU4YmZkOGNkYzQ3NWU5MjExNWRmNDIx MDhjMGRmNjYxZTQ5ZDNkMWNiYzMyMDU2ZTFkOTkiLCJzcmMvbWVtLnJzIjoiOTQ4NTcxMTM3ZDNi MTUxZGY4ZGI0ZmIyYzczM2U3NGFlNTk1ZDA1NWNkZjBhZDgzYWJjYWI5MzQxZDZhZGFiZSIsInNy Yy9yZXBsYWNlbWVudC5ycyI6Ijc2NjBiMzRhNTNmOGMxY2EyYmRmYTBlNTFlODQzZWMyODMyNjk1 MDk1MmFkOGJjOTY1NjlmZWI5M2FjNjIzMDgiLCJzcmMvc2hpZnRfamlzLnJzIjoiNjk1MWFlNjdl MzZiMWExMmZhM2EzMDczNDk1N2Y0NDRkOGIxYjRhZTBlMmJkZTUyMDYwYjI5YmQwZjE2ZDlkOSIs InNyYy9zaW1kX2Z1bmNzLnJzIjoiMDVjNmU3N2FmNzRiZmU3M2NkMzlhNzUyMDY3YzExNDI1ZDZi NDZlNWRhNDE5OTEwZjU0YmY3NWE1YzAyYTk4NCIsInNyYy9zaW5nbGVfYnl0ZS5ycyI6IjNhZDg3 MTE2ZmIzMzk0MzRhNGI1OGU4ZjJiMTU0ODVmMmI2NmI5Zjc4MTRkNzA4ZjE2MTk0ZWQwOGY2ZDZj Y2YiLCJzcmMvdGVzdF9kYXRhL2JpZzVfaW4udHh0IjoiNGM1YTg2OTFmOGRjNzE3MzExODg5YzYz ODk0MDI2ZDJmYjYyNzI1YTg2YzQyMDhjYTI3NGE5Y2M4ZDQyYTUwMyIsInNyYy90ZXN0X2RhdGEv YmlnNV9pbl9yZWYudHh0IjoiOTlkMzk5ZTE3NzUwY2Y5YzdjZjMwYmIyNTNkYmZlMzViODFjNGZj YmRlYWQ5M2NmYTQ4YjE0MjkyMTM0NzNjNyIsInNyYy90ZXN0X2RhdGEvYmlnNV9vdXQudHh0Ijoi NjE5M2NhOTdjMjk3YWEyMGUwOTM5NjAzOGQxOGU5MzhiYjdlYTMzMWMyNmYwZjI0NTQwOTcyOTY3 MjNhMGIxMyIsInNyYy90ZXN0X2RhdGEvYmlnNV9vdXRfcmVmLnR4dCI6IjM2NTY3NjkxZjU1N2Rm MTQ0ZjZjYzUyMDAxNWE4NzAzOGRmYTE1NmYyOTZmY2YxMDNiNTZhZTlhNzE4YmUxZmMiLCJzcmMv dGVzdF9kYXRhL2V1Y19rcl9pbi50eHQiOiJjODZhNzIyNGYzMjE1ZmEwZDA0ZTY4NTYyMmE3NTJm ZGM3Mjc2M2U4YWUwNzYyMzBjN2ZkNjJkZTU3ZWM0MDc0Iiwic3JjL3Rlc3RfZGF0YS9ldWNfa3Jf aW5fcmVmLnR4dCI6IjFmNDE5ZjRjYTQ3ZDcwOGI1NGM3M2M0NjE1NDVhMDIyYWUyZTIwNDk4ZmRi ZjgwMDVhNDgzZDc1MmEyMDQ4ODMiLCJzcmMvdGVzdF9kYXRhL2V1Y19rcl9vdXQudHh0IjoiZTdm MzJlMDI2ZjcwYmUxZTFiNThlMDA0N2JhZjdkM2QyYzUyMDI2OWM0ZjliOTk5MmUxNThiNGRlY2Iw YTFhMyIsInNyYy90ZXN0X2RhdGEvZXVjX2tyX291dF9yZWYudHh0IjoiYzk5MDc4NTc5ODBiMjBi OGU5ZTNiNTg0NDgyZWQ2NTY3YTJiZTYxODVkNzIyMzdiNjMyMmYwNDA0OTQ0OTI0ZSIsInNyYy90 ZXN0X2RhdGEvZ2IxODAzMF9pbi50eHQiOiJhYjcyMzFiMmQzZTlhZmFjZGJkN2Q3ZjNiOWU1MzYx YTdmZjlmN2UxY2ZkYjRmM2JkOTA1YjkzNjJiMzA5ZTUzIiwic3JjL3Rlc3RfZGF0YS9nYjE4MDMw X2luX3JlZi50eHQiOiJkYzUwNjk0MjFhZGNhMjA0M2M1NWY1MDEyYjU1YTc2ZmRmZjY1MWQyMmU2 ZTY5OWZkMDk3OGY4ZDU3MDY4MTVjIiwic3JjL3Rlc3RfZGF0YS9nYjE4MDMwX291dC50eHQiOiJm MDIwOGQ1MjdmNWNhNjNkZTdkOWEwMzIzYmU4ZDVjZjEyZDhhMTA0YjI5NDNkOTJjMjcwMWYwYzMz NjRkYWMxIiwic3JjL3Rlc3RfZGF0YS9nYjE4MDMwX291dF9yZWYudHh0IjoiNjgxOWZlNDc2Mjdl NGVhMDEwMjcwMDNmYzUxNGI5ZjIxYTEzMjJlNzMyZDdmMWZiOTJjYzZjNTQ1NWJjNmMwNyIsInNy Yy90ZXN0X2RhdGEvaXNvXzIwMjJfanBfaW4udHh0IjoiY2QyNGJiZGNiMTgzNGUyNWRiNTQ2NDZm YmY0YzQxNTYwYTEzZGM3NTQwZjZiZTNkYmE0ZjVkOTdkNDQ1MTNhZiIsInNyYy90ZXN0X2RhdGEv aXNvXzIwMjJfanBfaW5fcmVmLnR4dCI6IjNkYzRlNmE1ZTA2NDcxOTQyZDA4NmIxNmM5NDQwOTQ1 ZTc4NDE1ZjZmM2Y0N2U0MzcxN2U0YmMyZWFjMmNkZjUiLCJzcmMvdGVzdF9kYXRhL2lzb18yMDIy X2pwX291dC50eHQiOiI5YjZmMDE1MzI5ZGRhNmMzZjllZTVjZTZkYmQ2ZmE5Yzg5YWNjMjEyODNl ODg2ODM2Yzc4YjhkODMzNDgwYzIxIiwic3JjL3Rlc3RfZGF0YS9pc29fMjAyMl9qcF9vdXRfcmVm LnR4dCI6Ijc4Y2IyNjAwOTNhMjAxMTZhZDlhNDJmNDNiMDVkMTg0OGM1YWIxMDBiNmI5YTg1MDc0 OTgwOWU5NDM4ODRiMzUiLCJzcmMvdGVzdF9kYXRhL2ppczAyMDhfaW4udHh0IjoiNmRmMzAzMDU1 M2ZmYjBhNjYxNWJiMzNkYzhlYTlkY2E2ZDk2MjNhOTAyOGUyZmZlYzc1NGNlM2MzZGE4MjRjYyIs InNyYy90ZXN0X2RhdGEvamlzMDIwOF9pbl9yZWYudHh0IjoiM2RjNGU2YTVlMDY0NzE5NDJkMDg2 YjE2Yzk0NDA5NDVlNzg0MTVmNmYzZjQ3ZTQzNzE3ZTRiYzJlYWMyY2RmNSIsInNyYy90ZXN0X2Rh dGEvamlzMDIwOF9vdXQudHh0IjoiNGVjMjQ0NzdlMTY3NWNlNzUwNzMzYmRjM2M1YWRkMWNkMjdi NmJkNGNlMWYwOTI4OTU2NDY0NmU5NjU0ZTg1NyIsInNyYy90ZXN0X2RhdGEvamlzMDIwOF9vdXRf cmVmLnR4dCI6ImMzZTFjZWY1MDMyYjJiMWQ5M2E0MDZmMzFmZjk0MGM0ZTJkZmU4ODU5YjhiMTdj YTI3NjFmZWU3YTc1YTBlNDgiLCJzcmMvdGVzdF9kYXRhL2ppczAyMTJfaW4udHh0IjoiYzAxMWYw ZGQ3MmJkN2M4Y2Q5MjJkZjkzNzRlZjhkMjc2OWE3NzE5MDUxNGM3N2Y2YzYyYjQxNTg1MmVlYjlm ZSIsInNyYy90ZXN0X2RhdGEvamlzMDIxMl9pbl9yZWYudHh0IjoiN2Q5NDU4YjNkMmY3M2U3MDky YTdmNTA1YzA4Y2UxZDIzM2RkZTE4YWE2NzlmYmNmOTg4OTI1NjIzOWNjOWUwNiIsInNyYy90ZXN0 X2RhdGEvc2hpZnRfamlzX2luLnR4dCI6IjAyZTM4OWNjZWYwZGQyMTIyZTYzZjUwMzg5OTQwMmNi N2Y3OTc5MTJjMjQ0NGNjODBhYjkzMTMxMTE2YzU1MjQiLCJzcmMvdGVzdF9kYXRhL3NoaWZ0X2pp c19pbl9yZWYudHh0IjoiNTEyZjk4NTk1MGNhOTAyZTY0M2M4ODY4MmRiYTk3MDhiN2MzOGQzYzVl YzI5MjUxNjhhYjAwYWM5NGFiMTlmOSIsInNyYy90ZXN0X2RhdGEvc2hpZnRfamlzX291dC50eHQi OiI1ZmJjNDRkYTdiZjYzOWJmNmNmZTBmYTFmZDNlYmE3MTAyYjg4ZjgxOTE5YzllYTk5MTMwMjcx MmY2OTQyNmZiIiwic3JjL3Rlc3RfZGF0YS9zaGlmdF9qaXNfb3V0X3JlZi50eHQiOiI0NjYzMjJj NmZlZDgyODZjNjQ1ODI3MzE3NTUyOTBjMjI5NjUwOGVmZGQyNTg4MjZlNjI3OTY4NjY0OWI0ODFm Iiwic3JjL3Rlc3RfbGFiZWxzX25hbWVzLnJzIjoiMjNhMmUxMWIwMmIzYjhkMTVmYjU2MTNhNjI1 ZTNlZGIyYzYxZTcwZTNjNTgxYWJmZDYzODcxOWE0MDg4MjAwZCIsInNyYy90ZXN0aW5nLnJzIjoi ZjU5ZTY3MWU5NWE5OGE1NmY2YjU3M2U4YzZiZTRkNzFlNjcwYmY1MmY3ZTIwZWIxNjA1ZDk5MGFh ZmExODk0ZSIsInNyYy91dGZfMTYucnMiOiJjMDcxYTE0N2ZhZDM4ZDc1MGMyYzI0N2UxNDFiNzZi OTI5YTQ4MDA3Yjk5ZjI2YjI5MjJiOWNhZWNkYWYyZjI1Iiwic3JjL3V0Zl84LnJzIjoiN2I3ZDg4 N2IzNDdmMWFlZmEwMzI0NmIwMjhhMzZhNzI3NThhNGNlNzZjMjhmM2I0NWMxOTQ2Nzg1MWFhNzgz OSIsInNyYy92YXJpYW50LnJzIjoiMWZhYjUzNjM1ODhhMTU1NGE3MTY5ZGU4NzMxZWE5Y2RlZDdh YzYzZWEzNWNhYWJkZDFjMjdhOGRkZTY4YzI3YiIsInNyYy94X3VzZXJfZGVmaW5lZC5ycyI6Ijk0 NTZjYTQ2MTY4ZWY4NmM5ODM5OWEyNTM2ZjU3N2VmN2JlM2NkZGU5MGMwYzUxMzkyZDhhYzQ4NTE5 ZDNmYWUifSwicGFja2FnZSI6ImI0NWRlOTA0YWEwYjAxMGJjZTJhYjQ1MjY0ZDA2MzE2ODE4NDdm YTdiNmYyZWFhN2RhYjc2MTk5NDNiYzRmNTkifQotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl Ci1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9DYXJnby50b21sIGIv dGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9DYXJnby50b21sCi0tLS0gYS90aGlyZF9wYXJ0 eS9ydXN0L2VuY29kaW5nX3JzL0NhcmdvLnRvbWwKLSsrKyBiL3RoaXJkX3BhcnR5L3J1c3QvZW5j b2RpbmdfcnMvQ2FyZ28udG9tbAotQEAgLTYsMTggKzYsMTkgQEAKLSAjIHRvIHJlZ2lzdHJ5IChl LmcuLCBjcmF0ZXMuaW8pIGRlcGVuZGVuY2llcy4KLSAjCi0gIyBJZiB5b3UgYXJlIHJlYWRpbmcg dGhpcyBmaWxlIGJlIGF3YXJlIHRoYXQgdGhlIG9yaWdpbmFsIENhcmdvLnRvbWwKLSAjIHdpbGwg bGlrZWx5IGxvb2sgdmVyeSBkaWZmZXJlbnQgKGFuZCBtdWNoIG1vcmUgcmVhc29uYWJsZSkuCi0g IyBTZWUgQ2FyZ28udG9tbC5vcmlnIGZvciB0aGUgb3JpZ2luYWwgY29udGVudHMuCi0gCi0gW3Bh Y2thZ2VdCi0gZWRpdGlvbiA9ICIyMDE4IgotK3J1c3QtdmVyc2lvbiA9ICIxLjM2IgotIG5hbWUg PSAiZW5jb2RpbmdfcnMiCi0tdmVyc2lvbiA9ICIwLjguMzMiCi0rdmVyc2lvbiA9ICIwLjguMzQi Ci0gYXV0aG9ycyA9IFsiSGVucmkgU2l2b25lbiA8aHNpdm9uZW5AaHNpdm9uZW4uZmk+Il0KLSBk ZXNjcmlwdGlvbiA9ICJBIEdlY2tvLW9yaWVudGVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBFbmNv ZGluZyBTdGFuZGFyZCIKLSBob21lcGFnZSA9ICJodHRwczovL2RvY3MucnMvZW5jb2RpbmdfcnMv IgotIGRvY3VtZW50YXRpb24gPSAiaHR0cHM6Ly9kb2NzLnJzL2VuY29kaW5nX3JzLyIKLSByZWFk bWUgPSAiUkVBRE1FLm1kIgotIGtleXdvcmRzID0gWwotICAgICAiZW5jb2RpbmciLAotICAgICAi d2ViIiwKLUBAIC0zMSwyMyArMzIsMjMgQEAgY2F0ZWdvcmllcyA9IFsKLSAgICAgImludGVybmF0 aW9uYWxpemF0aW9uIiwKLSBdCi0gbGljZW5zZSA9ICIoQXBhY2hlLTIuMCBPUiBNSVQpIEFORCBC U0QtMy1DbGF1c2UiCi0gcmVwb3NpdG9yeSA9ICJodHRwczovL2dpdGh1Yi5jb20vaHNpdm9uZW4v ZW5jb2RpbmdfcnMiCi0gCi0gW3Byb2ZpbGUucmVsZWFzZV0KLSBsdG8gPSB0cnVlCi0gCi0rW2Rl cGVuZGVuY2llcy5hbnlfYWxsX3dvcmthcm91bmRdCi0rdmVyc2lvbiA9ICIwLjEuMCIKLStvcHRp b25hbCA9IHRydWUKLSsKLSBbZGVwZW5kZW5jaWVzLmNmZy1pZl0KLSB2ZXJzaW9uID0gIjEuMCIK LSAKLS1bZGVwZW5kZW5jaWVzLnBhY2tlZF9zaW1kXQotLXZlcnNpb24gPSAiMC4zLjkiCi0tb3B0 aW9uYWwgPSB0cnVlCi0tCi0gW2RlcGVuZGVuY2llcy5zZXJkZV0KLSB2ZXJzaW9uID0gIjEuMCIK LSBvcHRpb25hbCA9IHRydWUKLSAKLSBbZGV2LWRlcGVuZGVuY2llcy5iaW5jb2RlXQotIHZlcnNp b24gPSAiMS4wIgotIAotIFtkZXYtZGVwZW5kZW5jaWVzLnNlcmRlX2Rlcml2ZV0KLUBAIC02OSwx NSArNzAsOSBAQCBmYXN0LWxlZ2FjeS1lbmNvZGUgPSBbCi0gICAgICJmYXN0LWhhbmphLWVuY29k ZSIsCi0gICAgICJmYXN0LWthbmppLWVuY29kZSIsCi0gICAgICJmYXN0LWdiLWhhbnppLWVuY29k ZSIsCi0gICAgICJmYXN0LWJpZzUtaGFuemktZW5jb2RlIiwKLSBdCi0gbGVzcy1zbG93LWJpZzUt aGFuemktZW5jb2RlID0gW10KLSBsZXNzLXNsb3ctZ2ItaGFuemktZW5jb2RlID0gW10KLSBsZXNz LXNsb3cta2FuamktZW5jb2RlID0gW10KLS1zaW1kLWFjY2VsID0gWwotLSAgICAicGFja2VkX3Np bWQiLAotLSAgICAicGFja2VkX3NpbWQvaW50b19iaXRzIiwKLS1dCi0tCi0tW2JhZGdlcy50cmF2 aXMtY2ldCi0tcmVwb3NpdG9yeSA9ICJoc2l2b25lbi9lbmNvZGluZ19ycyIKLStzaW1kLWFjY2Vs ID0gWyJhbnlfYWxsX3dvcmthcm91bmQiXQotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3J1c3Qv ZW5jb2RpbmdfcnMvUkVBRE1FLm1kIGIvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9SRUFE TUUubWQKLS0tLSBhL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvUkVBRE1FLm1kCi0rKysg Yi90aGlyZF9wYXJ0eS9ydXN0L2VuY29kaW5nX3JzL1JFQURNRS5tZAotQEAgLTE2Miw1MCArMTYy LDM2IEBAIHdyYXBwZXJzLgotICogW0MrK10oaHR0cHM6Ly9naXRodWIuY29tL2hzaXZvbmVuL3Jl Y29kZV9jcHApCi0gCi0gIyMgT3B0aW9uYWwgZmVhdHVyZXMKLSAKLSBUaGVyZSBhcmUgY3VycmVu dGx5IHRoZXNlIG9wdGlvbmFsIGNhcmdvIGZlYXR1cmVzOgotIAotICMjIyBgc2ltZC1hY2NlbGAK LSAKLS1FbmFibGVzIFNJTUQgYWNjZWxlcmF0aW9uIHVzaW5nIHRoZSBuaWdodGx5LWRlcGVuZGVu dCBgcGFja2VkX3NpbWRgIGNyYXRlLgotK0VuYWJsZXMgU0lNRCBhY2NlbGVyYXRpb24gdXNpbmcg dGhlIG5pZ2h0bHktZGVwZW5kZW50IGBwb3J0YWJsZV9zaW1kYCBzdGFuZGFyZAotK2xpYnJhcnkg ZmVhdHVyZS4KLSAKLSBUaGlzIGlzIGFuIG9wdC1pbiBmZWF0dXJlLCBiZWNhdXNlIGVuYWJsaW5n IHRoaXMgZmVhdHVyZSBfb3B0cyBvdXRfIG9mIFJ1c3QncwotIGd1YXJhbnRlZXMgb2YgZnV0dXJl IGNvbXBpbGVycyBjb21waWxpbmcgb2xkIGNvZGUgKGFrYS4gInN0YWJpbGl0eSBzdG9yeSIpLgot IAotIEN1cnJlbnRseSwgdGhpcyBoYXMgbm90IGJlZW4gdGVzdGVkIHRvIGJlIGFuIGltcHJvdmVt ZW50IGV4Y2VwdCBmb3IgdGhlc2UKLS10YXJnZXRzOgotK3RhcmdldHMgYW5kIGVuYWJsaW5nIHRo ZSBgc2ltZC1hY2NlbGAgZmVhdHVyZSBpcyBleHBlY3RlZCB0byBicmVhayB0aGUgYnVpbGQKLStv biBvdGhlciB0YXJnZXRzOgotIAotICogeDg2XzY0Ci0gKiBpNjg2Ci0gKiBhYXJjaDY0Ci0gKiB0 aHVtYnY3bmVvbgotIAotIElmIHlvdSB1c2UgbmlnaHRseSBSdXN0LCB5b3UgdXNlIHRhcmdldHMg d2hvc2UgZmlyc3QgY29tcG9uZW50IGlzIG9uZSBvZiB0aGUKLSBhYm92ZSwgYW5kIHlvdSBhcmUg cHJlcGFyZWQgX3RvIGhhdmUgdG8gcmV2aXNlIHlvdXIgY29uZmlndXJhdGlvbiB3aGVuIHVwZGF0 aW5nCi0gUnVzdF8sIHlvdSBzaG91bGQgZW5hYmxlIHRoaXMgZmVhdHVyZS4gT3RoZXJ3aXNlLCBw bGVhc2UgX2RvIG5vdF8gZW5hYmxlIHRoaXMKLSBmZWF0dXJlLgotIAotLV9Ob3RlIV8gSWYgeW91 IGFyZSBjb21waWxpbmcgZm9yIGEgdGFyZ2V0IHRoYXQgZG9lcyBub3QgaGF2ZSAxMjgtYml0IFNJ TUQKLS1lbmFibGVkIGFzIHBhcnQgb2YgdGhlIHRhcmdldCBkZWZpbml0aW9uIGFuZCB5b3UgYXJl IGVuYWJsaW5nIDEyOC1iaXQgU0lNRAotLXVzaW5nIGAtQyB0YXJnZXRfZmVhdHVyZWAsIHlvdSBu ZWVkIHRvIGVuYWJsZSB0aGUgYGNvcmVfYXJjaGAgQ2FyZ28gZmVhdHVyZQotLWZvciBgcGFja2Vk X3NpbWRgIHRvIGNvbXBpbGUgYSBjcmF0ZXMuaW8gc25hcHNob3Qgb2YgYGNvcmVfYXJjaGAgaW5z dGVhZCBvZgotLXVzaW5nIHRoZSBzdGFuZGFyZC1saWJyYXJ5IGNvcHkgb2YgYGNvcmU6OmFyY2hg LCBiZWNhdXNlIHRoZSBgY29yZTo6YXJjaGAKLS1tb2R1bGUgb2YgdGhlIHByZS1jb21waWxlZCBz dGFuZGFyZCBsaWJyYXJ5IGhhcyBiZWVuIGNvbXBpbGVkIHdpdGggdGhlCi0tYXNzdW1wdGlvbiB0 aGF0IHRoZSBDUFUgZG9lc24ndCBoYXZlIDEyOC1iaXQgU0lNRC4gQXQgcHJlc2VudCB0aGlzIGFw cGxpZXMKLS1tYWlubHkgdG8gMzItYml0IEFSTSB0YXJnZXRzIHdob3NlIGZpcnN0IGNvbXBvbmVu dCBkb2VzIG5vdCBpbmNsdWRlIHRoZQotLXN1YnN0cmluZyBgbmVvbmAuCi0tCi0tVGhlIGVuY29k aW5nX3JzIHNpZGUgb2YgdGhpbmdzIGhhcyBub3QgYmVlbiBwcm9wZXJseSBzZXQgdXAgZm9yIFBP V0VSLAotLVBvd2VyUEMsIE1JUFMsIGV0Yy4sIFNJTUQgYXQgdGhpcyB0aW1lLCBzbyBldmVuIGlm IHlvdSB3ZXJlIHRvIGZvbGxvdwotLXRoZSBhZHZpY2UgZnJvbSB0aGUgcHJldmlvdXMgcGFyYWdy YXBoLCB5b3UgcHJvYmFibHkgc2hvdWxkbid0IHVzZQotLXRoZSBgc2ltZC1hY2NlbGAgb3B0aW9u IG9uIHRoZSBsZXNzIG1haW5zdHJlYW0gYXJjaGl0ZWN0dXJlcyBhdCB0aGlzCi0tdGltZS4KLS0K LSBVc2VkIGJ5IEZpcmVmb3guCi0gCi0gIyMjIGBzZXJkZWAKLSAKLSBFbmFibGVzIHN1cHBvcnQg Zm9yIHNlcmlhbGl6aW5nIGFuZCBkZXNlcmlhbGl6aW5nIGAmJ3N0YXRpYyBFbmNvZGluZ2AtdHlw ZWQKLSBzdHJ1Y3QgZmllbGRzIHVzaW5nIFtTZXJkZV1bMV0uCi0gCi0gWzFdOiBodHRwczovL3Nl cmRlLnJzLwotQEAgLTM3NiwxOCArMzYyLDE5IEBAIEl0IGlzIGEgZ29hbCB0byBzdXBwb3J0IHRo ZSBsYXRlc3Qgc3RhYmwKLSB0aGUgdmVyc2lvbiBvZiBSdXN0IHRoYXQncyB1c2VkIGZvciBGaXJl Zm94IE5pZ2h0bHkuCi0gCi0gQXQgdGhpcyB0aW1lLCB0aGVyZSBpcyBubyBmaXJtIGNvbW1pdG1l bnQgdG8gc3VwcG9ydCBhIHZlcnNpb24gb2xkZXIgdGhhbgotIHdoYXQncyByZXF1aXJlZCBieSBG aXJlZm94LCBhbmQgdGhlcmUgaXMgbm8gY29tbWl0bWVudCB0byB0cmVhdCBNU1JWIGNoYW5nZXMK LSBhcyBzZW12ZXItYnJlYWtpbmcsIGJlY2F1c2UgdGhpcyBjcmF0ZSBkZXBlbmRzIG9uIGBjZmct aWZgLCB3aGljaCBkb2Vzbid0Ci0gYXBwZWFyIHRvIHRyZWF0IE1TUlYgY2hhbmdlcyBhcyBzZW12 ZXItYnJlYWtpbmcsIHNvIGl0IHdvdWxkIGJlIHVzZWxlc3MgZm9yCi0gdGhpcyBjcmF0ZSB0byB0 cmVhdCBNU1JWIGNoYW5nZXMgYXMgc2VtdmVyLWJyZWFraW5nLgotIAotLUFzIG9mIDIwMjEtMDIt MDQsIE1TUlYgYXBwZWFycyB0byBiZSBSdXN0IDEuMzYuMCBmb3IgdXNpbmcgdGhlIGNyYXRlIGFu ZAotK0FzIG9mIDIwMjQtMDQtMDQsIE1TUlYgYXBwZWFycyB0byBiZSBSdXN0IDEuMzYuMCBmb3Ig dXNpbmcgdGhlIGNyYXRlIGFuZAotIDEuNDIuMCBmb3IgZG9jIHRlc3RzIHRvIHBhc3Mgd2l0aG91 dCBlcnJvcnMgYWJvdXQgdGhlIGdsb2JhbCBhbGxvY2F0b3IuCi0rV2l0aCB0aGUgYHNpbWQtYWNj ZWxgIGZlYXR1cmUsIHRoZSBNU1JWIGlzIGV2ZW4gaGlnaGVyLgotIAotICMjIENvbXBhdGliaWxp dHkgd2l0aCBydXN0LWVuY29kaW5nCi0gCi0gQSBjb21wYXRpYmlsaXR5IGxheWVyIHRoYXQgaW1w bGVtZW50cyB0aGUgcnVzdC1lbmNvZGluZyBBUEkgb24gdG9wIG9mCi0gZW5jb2RpbmdfcnMgaXMK LSBbcHJvdmlkZWQgYXMgYSBzZXBhcmF0ZSBjcmF0ZV0oaHR0cHM6Ly9naXRodWIuY29tL2hzaXZv bmVuL2VuY29kaW5nX3JzX2NvbXBhdCkKLSAoY2Fubm90IGJlIHVwbG9hZGVkIHRvIGNyYXRlcy5p bykuIFRoZSBjb21wYXRpYmlsaXR5IGxheWVyIHdhcyBvcmlnaW5hbGx5Ci0gd3JpdHRlbiB3aXRo IHRoZSBhc3N1cHRpb24gdGhhdCBGaXJlZm94IHdvdWxkIG5lZWQgaXQsIGJ1dCBpdCBpcyBub3Qg Y3VycmVudGx5Ci1AQCAtNDQxLDIwICs0MjgsMjcgQEAgVG8gcmVnZW5lcmF0ZSB0aGUgZ2VuZXJh dGVkIGNvZGU6Ci0gLSBbeF0gSW1wbGVtZW50IHRoZSBydXN0LWVuY29kaW5nIEFQSSBpbiB0ZXJt cyBvZiBlbmNvZGluZ19ycy4KLSAtIFt4XSBBZGQgU0lNRCBhY2NlbGVyYXRpb24gZm9yIEFhcmNo NjQuCi0gLSBbeF0gSW52ZXN0aWdhdGUgdGhlIHVzZSBvZiBORU9OIG9uIDMyLWJpdCBBUk0uCi0g LSBbIF0gfkludmVzdGlnYXRlIEJqw7ZybiBIw7Zocm1hbm4ncyBsb29rdXAgdGFibGUgYWNjZWxl cmF0aW9uIGZvciBVVEYtOCBhcwotICAgICAgIGFkYXB0ZWQgdG8gUnVzdCBpbiBydXN0LWVuY29k aW5nLn4KLSAtIFt4XSBBZGQgYWN0dWFsbHkgZmFzdCBDSksgZW5jb2RlIG9wdGlvbnMuCi0gLSBb IF0gfkludmVzdGlnYXRlIFtCb2IgU3RlYWdhbGwncyBsb29rdXAgdGFibGUgYWNjZWxlcmF0aW9u IGZvciBVVEYtOF0oaHR0cHM6Ly9naXRodWIuY29tL0JvYlN0ZWFnYWxsL0NwcE5vdzIwMTgvYmxv Yi9tYXN0ZXIvRmFzdENvbnZlcnNpb25Gcm9tVVRGLTgvRmFzdCUyMENvbnZlcnNpb24lMjBGcm9t JTIwVVRGLTglMjB3aXRoJTIwQyUyQiUyQiUyQyUyMERGQXMlMkMlMjBhbmQlMjBTU0UlMjBJbnRy aW5zaWNzJTIwLSUyMEJvYiUyMFN0ZWFnYWxsJTIwLSUyMEMlMkIlMkJOb3clMjAyMDE4LnBkZiku fgotIC0gW3hdIFByb3ZpZGUgYSBidWlsZCBtb2RlIHRoYXQgd29ya3Mgd2l0aG91dCBgYWxsb2Ng ICh3aXRoIGxlc3NlciBBUEkgc3VyZmFjZSkuCi0tLSBbIF0gTWlncmF0ZSB0byBgc3RkOjpzaW1k YCBvbmNlIGl0IGlzIHN0YWJsZSBhbmQgZGVjbGFyZSAxLjAuCi0rLSBbeF0gTWlncmF0ZSB0byBg c3RkOjpzaW1kYCB+b25jZSBpdCBpcyBzdGFibGUgYW5kIGRlY2xhcmUgMS4wLn4KLSstIFsgXSBN aWdyYXRlIGB1bnNhZmVgIHNsaWNlIGFjY2VzcyBieSBsYXJnZXIgdHlwZXMgdGhhbiBgdThgL2B1 MTZgIHRvIGBhbGlnbl90b2AuCi0gCi0gIyMgUmVsZWFzZSBOb3RlcwotIAotKyMjIyAwLjguMzQK LSsKLSsqIFVzZSB0aGUgYHBvcnRhYmxlX3NpbWRgIG5pZ2h0bHkgZmVhdHVyZSBvZiB0aGUgc3Rh bmRhcmQgbGlicmFyeSBpbnN0ZWFkIG9mIHRoZSBgcGFja2VkX3NpbWRgIGNyYXRlLiBPbmx5IGFm ZmVjdHMgdGhlIGBzaW1kLWFjY2VsYCBvcHRpb25hbCBuaWdodGx5IGZlYXR1cmUuCi0rKiBJbnRl cm5hbCBkb2N1bWVudGF0aW9uIGltcHJvdmVtZW50cyBhbmQgbWlub3IgY29kZSBpbXByb3ZlbWVu dHMgYXJvdW5kIGB1bnNhZmVgLgotKyogQWRkZWQgYHJ1c3QtdmVyc2lvbmAgdG8gYENhcmdvLnRv bWxgLgotKwotICMjIyAwLjguMzMKLSAKLSAqIFVzZSBgcGFja2VkX3NpbWRgIGluc3RlYWQgb2Yg YHBhY2tlZF9zaW1kXzJgIGFnYWluIG5vdyB0aGF0IHVwZGF0ZXMgYXJlIGJhY2sgdW5kZXIgdGhl IGBwYWNrZWRfc2ltZGAgbmFtZS4gT25seSBhZmZlY3RzIHRoZSBgc2ltZC1hY2NlbGAgb3B0aW9u YWwgbmlnaHRseSBmZWF0dXJlLgotIAotICMjIyAwLjguMzIKLSAKLSAqIFJlbW92ZWQgYGJ1aWxk LnJzYC4gKFRoaXMgcmVtb3ZhbCBzaG91bGQgcmVzb2x2ZSBmYWxzZSBwb3NpdGl2ZXMgcmVwb3J0 ZWQgYnkgc29tZSBhbnRpdmlydXMgcHJvZHVjdHMuIFRoaXMgbWF5IGJyZWFrIHNvbWUgYnVpbGQg Y29uZmlndXJhdGlvbnMgdGhhdCBoYXZlIG9wdGVkIG91dCBvZiBSdXN0J3MgZ3VhcmFudGVlcyBh Z2FpbnN0IGZ1dHVyZSBidWlsZCBicmVha2FnZS4pCi0gKiBJbnRlcm5hbCBjaGFuZ2UgdG8gd2hh dCBBUEkgaXMgdXNlZCBmb3IgcmVpbnRlcnByZXRpbmcgdGhlIGxhbmUgY29uZmlndXJhdGlvbiBv ZiBTSU1EIHZlY3RvcnMuCi1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19y cy9zcmMvYXNjaWkucnMgYi90aGlyZF9wYXJ0eS9ydXN0L2VuY29kaW5nX3JzL3NyYy9hc2NpaS5y cwotLS0tIGEvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9zcmMvYXNjaWkucnMKLSsrKyBi L3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvc3JjL2FzY2lpLnJzCi1AQCAtNDYsNzEgKzQ2 LDg3IEBAIGNmZ19pZiEgewotICAgICAgICAgI1thbGxvdyhkZWFkX2NvZGUpXQotICAgICAgICAg I1tpbmxpbmUoYWx3YXlzKV0KLSAgICAgICAgIGZuIGxpa2VseShiOiBib29sKSAtPiBib29sIHsK LSAgICAgICAgICAgICBiCi0gICAgICAgICB9Ci0gICAgIH0KLSB9Ci0gCi0rLy8gU2FmZXR5IGlu dmFyaWFudHMgZm9yIG1hc2tzOiBkYXRhICYgbWFzayA9IDAgZm9yIHZhbGlkIEFTQ0lJIG9yIGJh c2ljIGxhdGluIHV0Zi0xNgotKwotIC8vIGBhc2AgdHJ1bmNhdGVzLCBzbyB3b3JrcyBvbiAzMi1i aXQsIHRvby4KLSAjW2FsbG93KGRlYWRfY29kZSldCi0gcHViIGNvbnN0IEFTQ0lJX01BU0s6IHVz aXplID0gMHg4MDgwXzgwODBfODA4MF84MDgwdTY0IGFzIHVzaXplOwotIAotIC8vIGBhc2AgdHJ1 bmNhdGVzLCBzbyB3b3JrcyBvbiAzMi1iaXQsIHRvby4KLSAjW2FsbG93KGRlYWRfY29kZSldCi0g cHViIGNvbnN0IEJBU0lDX0xBVElOX01BU0s6IHVzaXplID0gMHhGRjgwX0ZGODBfRkY4MF9GRjgw dTY0IGFzIHVzaXplOwotIAotICNbYWxsb3codW51c2VkX21hY3JvcyldCi0gbWFjcm9fcnVsZXMh IGFzY2lpX25haXZlIHsKLSAgICAgKCRuYW1lOmlkZW50LCAkc3JjX3VuaXQ6dHksICRkc3RfdW5p dDp0eSkgPT4gewotKyAgICAgICAgLy8vIFNhZmV0eTogc3JjIGFuZCBkc3QgbXVzdCBoYXZlIGxl bl91bml0IGVsZW1lbnRzIGFuZCBiZSBhbGlnbmVkCi0rICAgICAgICAvLy8gU2FmZXR5LXVzYWJs ZSBpbnZhcmlhbnQ6IHdpbGwgcmV0dXJuIFNvbWUoKSB3aGVuIGl0IGZhaWxzCi0rICAgICAgICAv Ly8gdG8gY29udmVydC4gVGhlIGZpcnN0IHZhbHVlIHdpbGwgYmUgYSB1OCB0aGF0IGlzID4gMTI3 LgotICAgICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KLSAgICAgICAgIHB1YiB1bnNhZmUgZm4gJG5h bWUoCi0gICAgICAgICAgICAgc3JjOiAqY29uc3QgJHNyY191bml0LAotICAgICAgICAgICAgIGRz dDogKm11dCAkZHN0X3VuaXQsCi0gICAgICAgICAgICAgbGVuOiB1c2l6ZSwKLSAgICAgICAgICkg LT4gT3B0aW9uPCgkc3JjX3VuaXQsIHVzaXplKT4gewotICAgICAgICAgICAgIC8vIFllcywgbWFu dWFsbHkgb21pdHRpbmcgdGhlIGJvdW5kIGNoZWNrIGhlcmUgbWF0dGVycwotICAgICAgICAgICAg IC8vIGEgbG90IGZvciBwZXJmLgotICAgICAgICAgICAgIGZvciBpIGluIDAuLmxlbiB7Ci0rICAg ICAgICAgICAgICAgIC8vIFNhZmV0eTogbGVuIGludmFyaWFudCB1c2VkIGhlcmUKLSAgICAgICAg ICAgICAgICAgbGV0IGNvZGVfdW5pdCA9ICooc3JjLmFkZChpKSk7Ci0rICAgICAgICAgICAgICAg IC8vIFNhZmV0eTogVXBob2xkcyBzYWZldHktdXNhYmxlIGludmFyaWFudCBoZXJlCi0gICAgICAg ICAgICAgICAgIGlmIGNvZGVfdW5pdCA+IDEyNyB7Ci0gICAgICAgICAgICAgICAgICAgICByZXR1 cm4gU29tZSgoY29kZV91bml0LCBpKSk7Ci0gICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAg ICAgICAgLy8gU2FmZXR5OiBsZW4gaW52YXJpYW50IHVzZWQgaGVyZQotICAgICAgICAgICAgICAg ICAqKGRzdC5hZGQoaSkpID0gY29kZV91bml0IGFzICRkc3RfdW5pdDsKLSAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgcmV0dXJuIE5vbmU7Ci0gICAgICAgICB9Ci0gICAgIH07Ci0gfQotIAot ICNbYWxsb3codW51c2VkX21hY3JvcyldCi0gbWFjcm9fcnVsZXMhIGFzY2lpX2FsdSB7Ci0gICAg ICgkbmFtZTppZGVudCwKLSsgICAgIC8vIHNhZmV0eSBpbnZhcmlhbnQ6IHNyYy9kc3QgTVVTVCBi ZSB1OAotICAgICAgJHNyY191bml0OnR5LAotICAgICAgJGRzdF91bml0OnR5LAotKyAgICAgLy8g U2FmZXR5IGludmFyaWFudDogc3RyaWRlX2ZuIG11c3QgY29uc3VtZSBhbmQgcHJvZHVjZSB0d28g dXNpemVzLCBhbmQgcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgbm9uLWFzY2lpIHdoZW4g aXQgZmFpbHMKLSAgICAgICRzdHJpZGVfZm46aWRlbnQpID0+IHsKLSsgICAgICAgIC8vLyBTYWZl dHk6IHNyYyBhbmQgZHN0IG11c3QgaGF2ZSBsZW4gZWxlbWVudHMsIHNyYyBpcyB2YWxpZCBmb3Ig cmVhZCwgZHN0IGlzIHZhbGlkIGZvcgotKyAgICAgICAgLy8vIHdyaXRlCi0rICAgICAgICAvLy8g U2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQ6IHdpbGwgcmV0dXJuIFNvbWUoKSB3aGVuIGl0IGZhaWxz Ci0rICAgICAgICAvLy8gdG8gY29udmVydC4gVGhlIGZpcnN0IHZhbHVlIHdpbGwgYmUgYSB1OCB0 aGF0IGlzID4gMTI3LgotICAgICAgICAgI1tjZmdfYXR0cihmZWF0dXJlID0gImNhcmdvLWNsaXBw eSIsIGFsbG93KG5ldmVyX2xvb3AsIGNhc3RfcHRyX2FsaWdubWVudCkpXQotICAgICAgICAgI1tp bmxpbmUoYWx3YXlzKV0KLSAgICAgICAgIHB1YiB1bnNhZmUgZm4gJG5hbWUoCi0gICAgICAgICAg ICAgc3JjOiAqY29uc3QgJHNyY191bml0LAotICAgICAgICAgICAgIGRzdDogKm11dCAkZHN0X3Vu aXQsCi0gICAgICAgICAgICAgbGVuOiB1c2l6ZSwKLSAgICAgICAgICkgLT4gT3B0aW9uPCgkc3Jj X3VuaXQsIHVzaXplKT4gewotICAgICAgICAgICAgIGxldCBtdXQgb2Zmc2V0ID0gMHVzaXplOwot ICAgICAgICAgICAgIC8vIFRoaXMgbG9vcCBpcyBvbmx5IGJyb2tlbiBvdXQgb2YgYXMgYSBgZ290 b2AgZm9yd2FyZAotICAgICAgICAgICAgIGxvb3AgewotKyAgICAgICAgICAgICAgICAvLyBTYWZl dHk6IHVudGlsX2FsaWdubWVudCBiZWNvbWVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgd2UgbmVlZCB0 byBtdW5jaCB1bnRpbCB3ZSBhcmUgYWxpZ25lZCB0byB1c2l6ZQotICAgICAgICAgICAgICAgICBs ZXQgbXV0IHVudGlsX2FsaWdubWVudCA9IHsKLSAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNr IGlmIHRoZSBvdGhlciB1bml0IGFsaWducyBpZiB3ZSBtb3ZlIHRoZSBuYXJyb3dlciB1bml0Ci0g ICAgICAgICAgICAgICAgICAgICAvLyB0byBhbGlnbm1lbnQuCi0gICAgICAgICAgICAgICAgICAg ICAvLyAgICAgICAgICAgICAgIGlmIDo6Y29yZTo6bWVtOjpzaXplX29mOjo8JHNyY191bml0Pigp ID09IDo6Y29yZTo6bWVtOjpzaXplX29mOjo8JGRzdF91bml0PigpIHsKLSAgICAgICAgICAgICAg ICAgICAgIC8vIGFzY2lpX3RvX2FzY2lpCi0gICAgICAgICAgICAgICAgICAgICBsZXQgc3JjX2Fs aWdubWVudCA9IChzcmMgYXMgdXNpemUpICYgQUxVX0FMSUdOTUVOVF9NQVNLOwotICAgICAgICAg ICAgICAgICAgICAgbGV0IGRzdF9hbGlnbm1lbnQgPSAoZHN0IGFzIHVzaXplKSAmIEFMVV9BTElH Tk1FTlRfTUFTSzsKLSAgICAgICAgICAgICAgICAgICAgIGlmIHNyY19hbGlnbm1lbnQgIT0gZHN0 X2FsaWdubWVudCB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBiYWlscyBl YXJseSBhbmQgZW5kcyB1cCBpbiB0aGUgbmHDr3ZlIGJyYW5jaCB3aGVyZSB1c2l6ZS1hbGlnbm1l bnQgZG9lc24ndCBtYXR0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgIChBTFVfQUxJR05NRU5UIC0g c3JjX2FsaWdubWVudCkgJiBBTFVfQUxJR05NRU5UX01BU0sKLSAgICAgICAgICAgICAgICAgICAg IC8vICAgICAgICAgICAgICAgfSBlbHNlIGlmIDo6Y29yZTo6bWVtOjpzaXplX29mOjo8JHNyY191 bml0PigpIDwgOjpjb3JlOjptZW06OnNpemVfb2Y6OjwkZHN0X3VuaXQ+KCkgewotICAgICAgICAg ICAgICAgICAgICAgLy8gYXNjaWlfdG9fYmFzaWNfbGF0aW4KLSAgICAgICAgICAgICAgICAgICAg IC8vICAgICAgICAgICAgICAgICAgIGxldCBzcmNfdW50aWxfYWxpZ25tZW50ID0gKEFMSUdOTUVO VCAtICgoc3JjIGFzIHVzaXplKSAmIEFMSUdOTUVOVF9NQVNLKSkgJiBBTElHTk1FTlRfTUFTSzsK LSAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgIGlmIChkc3QuYWRkKHNy Y191bnRpbF9hbGlnbm1lbnQpIGFzIHVzaXplKSAmIEFMSUdOTUVOVF9NQVNLICE9IDAgewotICAg ICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotQEAgLTEy OSw3NCArMTQ1LDEwNCBAQCBtYWNyb19ydWxlcyEgYXNjaWlfYWx1IHsKLSAgICAgICAgICAgICAg ICAgICAgIC8vIE1vdmluZyBwb2ludGVycyB0byBhbGlnbm1lbnQgc2VlbXMgdG8gYmUgYSBwZXNz aW1pemF0aW9uIG9uCi0gICAgICAgICAgICAgICAgICAgICAvLyB4ODZfNjQgZm9yIG9wZXJhdGlv bnMgdGhhdCBoYXZlIFVURi0xNiBhcyB0aGUgaW50ZXJuYWwKLSAgICAgICAgICAgICAgICAgICAg IC8vIFVuaWNvZGUgcmVwcmVzZW50YXRpb24uIEhvd2V2ZXIsIHNpbmNlIGl0IHNlZW1zIHRvIGJl IGEgd2luCi0gICAgICAgICAgICAgICAgICAgICAvLyBvbiBBUk0gKHRlc3RlZCBBUk12NyBjb2Rl IHJ1bm5pbmcgb24gQVJNdjggW3JwaTNdKSwgZXhjZXB0Ci0gICAgICAgICAgICAgICAgICAgICAv LyBtaXhlZCByZXN1bHRzIHdoZW4gZW5jb2RpbmcgZnJvbSBVVEYtMTYgYW5kIHNpbmNlIHg4NiBh bmQKLSAgICAgICAgICAgICAgICAgICAgIC8vIHg4Nl82NCBzaG91bGQgYmUgdXNpbmcgU1NFMiBp biBkdWUgY291cnNlLCBrZWVwaW5nIHRoZSBtb3ZlCi0gICAgICAgICAgICAgICAgICAgICAvLyB0 byBhbGlnbm1lbnQgaGVyZS4gSXQgd291bGQgYmUgZ29vZCB0byB0ZXN0IG9uIG1vcmUgQVJNIENQ VXMKLSAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBvbiByZWFsIE1JUFMgYW5kIFBPV0VSIGhh cmR3YXJlLgotKyAgICAgICAgICAgICAgICAgICAgLy8KLSsgICAgICAgICAgICAgICAgICAgIC8v IFNhZmV0eTogVGhpcyBpcyB0aGUgbmHDr3ZlIGNvZGUgb25jZSBhZ2FpbiwgZm9yIGB1bnRpbF9h bGlnbm1lbnRgIGJ5dGVzCi0gICAgICAgICAgICAgICAgICAgICB3aGlsZSB1bnRpbF9hbGlnbm1l bnQgIT0gMCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvZGVfdW5pdCA9ICooc3Jj LmFkZChvZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb2RlX3VuaXQgPiAx MjcgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFVwaG9sZHMgc2Fm ZXR5LXVzYWJsZSBpbnZhcmlhbnQgaGVyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gU29tZSgoY29kZV91bml0LCBvZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgKihkc3QuYWRkKG9mZnNldCkpID0gY29kZV91 bml0IGFzICRkc3RfdW5pdDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IG9m ZnNldCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCBzbyBmYXIKLSAgICAgICAgICAgICAg ICAgICAgICAgICBvZmZzZXQgKz0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICB1bnRpbF9h bGlnbm1lbnQgLT0gMTsKLSAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg ICAgIGxldCBsZW5fbWludXNfc3RyaWRlID0gbGVuIC0gQUxVX1NUUklERV9TSVpFOwotICAgICAg ICAgICAgICAgICAgICAgbG9vcCB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5 OiBudW1fYXNjaWkgaXMga25vd24gdG8gYmUgYSBieXRlIGluZGV4IG9mIGEgbm9uLWFzY2lpIGJ5 dGUgZHVlIHRvIHN0cmlkZV9mbidzIGludmFyaWFudAotICAgICAgICAgICAgICAgICAgICAgICAg IGlmIGxldCBTb21lKG51bV9hc2NpaSkgPSAkc3RyaWRlX2ZuKAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvLyBTYWZldHk6IFRoZXNlIGFyZSBrbm93biB0byBiZSB2YWxpZCBhbmQgYWxp Z25lZCBzaW5jZSB3ZSBoYXZlIGF0Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxl YXN0IEFMVV9TVFJJREVfU0laRSBkYXRhIGluIHRoZXNlIGJ1ZmZlcnMsIGFuZCBvZmZzZXQgaXMg dGhlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG51bWJlciBvZiBlbGVtZW50cyBj b3BpZWQgc28gZmFyLCB3aGljaCBhY2NvcmRpbmcgdG8gdGhlCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vIHVudGlsX2FsaWdubWVudCBjYWxjdWxhdGlvbiBhYm92ZSB3aWxsIGNhdXNl IGJvdGggc3JjIGFuZCBkc3QgdG8gYmUKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g YWxpZ25lZCB0byB1c2l6ZSBhZnRlciB0aGlzIGFkZAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzcmMuYWRkKG9mZnNldCkgYXMgKmNvbnN0IHVzaXplLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkc3QuYWRkKG9mZnNldCkgYXMgKm11dCB1c2l6ZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IG51 bV9hc2NpaTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBVcGhvbGRz IHNhZmV0eS11c2FibGUgaW52YXJpYW50IGhlcmUgYnkgaW5kZXhpbmcgaW50byBub24tYXNjaWkg Ynl0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU29tZSgoKihzcmMuYWRk KG9mZnNldCkpLCBvZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBvZmZzZXQgY29udGludWVzIHRvIGJlIHRoZSBu dW1iZXIgb2YgYnl0ZXMgY29waWVkIHNvIGZhciwgYW5kCi0rICAgICAgICAgICAgICAgICAgICAg ICAgLy8gbWFpbnRhaW5zIHVzaXplIGFsaWdubWVudCBmb3IgdGhlIG5leHQgbG9vcCBpdGVyYXRp b24KLSAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gQUxVX1NUUklERV9TSVpFOwot KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogVGhpcyBpcyBgb2Zmc2V0ID4gbGVu IC0gc3RyaWRlLiBUaGlzIGxvb3Agd2lsbCBjb250aW51ZSBhcyBsb25nIGFzCi0rICAgICAgICAg ICAgICAgICAgICAgICAgLy8gYG9mZnNldCA8PSBsZW4gLSBzdHJpZGVgLCB3aGljaCBtZWFucyB0 aGVyZSBhcmUgYHN0cmlkZWAgYnl0ZXMgdG8gc3RpbGwgYmUgcmVhZC4KLSAgICAgICAgICAgICAg ICAgICAgICAgICBpZiBvZmZzZXQgPiBsZW5fbWludXNfc3RyaWRlIHsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIGJy ZWFrOwotICAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICAvLyBTYWZldHk6IFRoaXMgaXMg dGhlIG5hw692ZSBjb2RlLCBzYW1lIGFzIGFzY2lpX25haXZlLCBhbmQgaGFzIG5vIHJlcXVpcmVt ZW50cwotKyAgICAgICAgICAgIC8vIG90aGVyIHRoYW4gc3JjL2RzdCBiZWluZyB2YWxpZCBmb3Ig dGhlIHRoZSByaWdodCBsZW5zCi0gICAgICAgICAgICAgd2hpbGUgb2Zmc2V0IDwgbGVuIHsKLSsg ICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBsZW4gaW52YXJpYW50IHVzZWQgaGVyZQotICAgICAg ICAgICAgICAgICBsZXQgY29kZV91bml0ID0gKihzcmMuYWRkKG9mZnNldCkpOwotICAgICAgICAg ICAgICAgICBpZiBjb2RlX3VuaXQgPiAxMjcgewotKyAgICAgICAgICAgICAgICAgICAgLy8gU2Fm ZXR5OiBVcGhvbGRzIHNhZmV0eS11c2FibGUgaW52YXJpYW50IGhlcmUKLSAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBTb21lKChjb2RlX3VuaXQsIG9mZnNldCkpOwotICAgICAgICAgICAgICAg ICB9Ci0rICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogbGVuIGludmFyaWFudCB1c2VkIGhlcmUK LSAgICAgICAgICAgICAgICAgKihkc3QuYWRkKG9mZnNldCkpID0gY29kZV91bml0IGFzICRkc3Rf dW5pdDsKLSAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7Ci0gICAgICAgICAgICAgfQotICAg ICAgICAgICAgIE5vbmUKLSAgICAgICAgIH0KLSAgICAgfTsKLSB9Ci0gCi0gI1thbGxvdyh1bnVz ZWRfbWFjcm9zKV0KLSBtYWNyb19ydWxlcyEgYmFzaWNfbGF0aW5fYWx1IHsKLSAgICAgKCRuYW1l OmlkZW50LAotKyAgICAvLyBzYWZldHkgaW52YXJpYW50OiB1c2UgdTggZm9yIHNyYy9kZXN0IGZv ciBhc2NpaSwgYW5kIHUxNiBmb3IgYmFzaWNfbGF0aW4KLSAgICAgICRzcmNfdW5pdDp0eSwKLSAg ICAgICRkc3RfdW5pdDp0eSwKLSsgICAgLy8gc2FmZXR5IGludmFyaWFudDogc3RyaWRlIGZ1bmN0 aW9uIG11c3QgbXVuY2ggQUxVX1NUUklERV9TSVpFKnNpemUoc3JjX3VuaXQpIGJ5dGVzIG9mZiBv ZiBzcmMgYW5kCi0rICAgIC8vIHdyaXRlIEFMVV9TVFJJREVfU0laRSpzaXplKGRzdF91bml0KSBi eXRlcyB0byBkc3QKLSAgICAgICRzdHJpZGVfZm46aWRlbnQpID0+IHsKLSsgICAgICAgIC8vLyBT YWZldHk6IHNyYyBhbmQgZHN0IG11c3QgaGF2ZSBsZW4gZWxlbWVudHMsIHNyYyBpcyB2YWxpZCBm b3IgcmVhZCwgZHN0IGlzIHZhbGlkIGZvcgotKyAgICAgICAgLy8vIHdyaXRlCi0rICAgICAgICAv Ly8gU2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQ6IHdpbGwgcmV0dXJuIFNvbWUoKSB3aGVuIGl0IGZh aWxzCi0rICAgICAgICAvLy8gdG8gY29udmVydC4gVGhlIGZpcnN0IHZhbHVlIHdpbGwgYmUgYSB1 OCB0aGF0IGlzID4gMTI3LgotICAgICAgICAgI1tjZmdfYXR0cigKLSAgICAgICAgICAgICBmZWF0 dXJlID0gImNhcmdvLWNsaXBweSIsCi0gICAgICAgICAgICAgYWxsb3cobmV2ZXJfbG9vcCwgY2Fz dF9wdHJfYWxpZ25tZW50LCBjYXN0X2xvc3NsZXNzKQotICAgICAgICAgKV0KLSAgICAgICAgICNb aW5saW5lKGFsd2F5cyldCi0gICAgICAgICBwdWIgdW5zYWZlIGZuICRuYW1lKAotICAgICAgICAg ICAgIHNyYzogKmNvbnN0ICRzcmNfdW5pdCwKLSAgICAgICAgICAgICBkc3Q6ICptdXQgJGRzdF91 bml0LAotICAgICAgICAgICAgIGxlbjogdXNpemUsCi0gICAgICAgICApIC0+IE9wdGlvbjwoJHNy Y191bml0LCB1c2l6ZSk+IHsKLSAgICAgICAgICAgICBsZXQgbXV0IG9mZnNldCA9IDB1c2l6ZTsK LSAgICAgICAgICAgICAvLyBUaGlzIGxvb3AgaXMgb25seSBicm9rZW4gb3V0IG9mIGFzIGEgYGdv dG9gIGZvcndhcmQKLSAgICAgICAgICAgICBsb29wIHsKLSsgICAgICAgICAgICAgICAgLy8gU2Fm ZXR5OiB1bnRpbF9hbGlnbm1lbnQgYmVjb21lcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdlIG5lZWQg dG8gbXVuY2ggZnJvbSBzcmMvZGVzdCB1bnRpbCB3ZSBhcmUgYWxpZ25lZCB0byB1c2l6ZQotKyAg ICAgICAgICAgICAgICAvLyBXZSBlbnN1cmUgYmFzaWMtbGF0aW4gaGFzIHRoZSBzYW1lIGFsaWdu bWVudCBhcyBhc2NpaSwgc3RhcnRpbmcgd2l0aCBhc2NpaSBzaW5jZSBpdCBpcyBzbWFsbGVyLgot ICAgICAgICAgICAgICAgICBsZXQgbXV0IHVudGlsX2FsaWdubWVudCA9IHsKLSAgICAgICAgICAg ICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBvdGhlciB1bml0IGFsaWducyBpZiB3ZSBtb3ZlIHRo ZSBuYXJyb3dlciB1bml0Ci0gICAgICAgICAgICAgICAgICAgICAvLyB0byBhbGlnbm1lbnQuCi0g ICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgIGlmIDo6Y29yZTo6bWVtOjpzaXpl X29mOjo8JHNyY191bml0PigpID09IDo6Y29yZTo6bWVtOjpzaXplX29mOjo8JGRzdF91bml0Pigp IHsKLSAgICAgICAgICAgICAgICAgICAgIC8vIGFzY2lpX3RvX2FzY2lpCi0gICAgICAgICAgICAg ICAgICAgICAvLyAgICAgICAgICAgICAgICAgICBsZXQgc3JjX2FsaWdubWVudCA9IChzcmMgYXMg dXNpemUpICYgQUxJR05NRU5UX01BU0s7Ci0gICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAg ICAgICAgICAgICBsZXQgZHN0X2FsaWdubWVudCA9IChkc3QgYXMgdXNpemUpICYgQUxJR05NRU5U X01BU0s7Ci0gICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICBpZiBzcmNf YWxpZ25tZW50ICE9IGRzdF9hbGlnbm1lbnQgewotQEAgLTIzMiw2NiArMjc4LDg5IEBAIG1hY3Jv X3J1bGVzISBiYXNpY19sYXRpbl9hbHUgewotICAgICAgICAgICAgICAgICAgICAgLy8gTW92aW5n IHBvaW50ZXJzIHRvIGFsaWdubWVudCBzZWVtcyB0byBiZSBhIHBlc3NpbWl6YXRpb24gb24KLSAg ICAgICAgICAgICAgICAgICAgIC8vIHg4Nl82NCBmb3Igb3BlcmF0aW9ucyB0aGF0IGhhdmUgVVRG LTE2IGFzIHRoZSBpbnRlcm5hbAotICAgICAgICAgICAgICAgICAgICAgLy8gVW5pY29kZSByZXBy ZXNlbnRhdGlvbi4gSG93ZXZlciwgc2luY2UgaXQgc2VlbXMgdG8gYmUgYSB3aW4KLSAgICAgICAg ICAgICAgICAgICAgIC8vIG9uIEFSTSAodGVzdGVkIEFSTXY3IGNvZGUgcnVubmluZyBvbiBBUk12 OCBbcnBpM10pLCBleGNlcHQKLSAgICAgICAgICAgICAgICAgICAgIC8vIG1peGVkIHJlc3VsdHMg d2hlbiBlbmNvZGluZyBmcm9tIFVURi0xNiBhbmQgc2luY2UgeDg2IGFuZAotICAgICAgICAgICAg ICAgICAgICAgLy8geDg2XzY0IHNob3VsZCBiZSB1c2luZyBTU0UyIGluIGR1ZSBjb3Vyc2UsIGtl ZXBpbmcgdGhlIG1vdmUKLSAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGFsaWdubWVudCBoZXJl LiBJdCB3b3VsZCBiZSBnb29kIHRvIHRlc3Qgb24gbW9yZSBBUk0gQ1BVcwotICAgICAgICAgICAg ICAgICAgICAgLy8gYW5kIG9uIHJlYWwgTUlQUyBhbmQgUE9XRVIgaGFyZHdhcmUuCi0rICAgICAg ICAgICAgICAgICAgICAvLwotKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGlz IHRoZSBuYcOvdmUgY29kZSBvbmNlIGFnYWluLCBmb3IgYHVudGlsX2FsaWdubWVudGAgYnl0ZXMK LSAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHVudGlsX2FsaWdubWVudCAhPSAwIHsKLSAgICAg ICAgICAgICAgICAgICAgICAgICBsZXQgY29kZV91bml0ID0gKihzcmMuYWRkKG9mZnNldCkpOwot ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvZGVfdW5pdCA+IDEyNyB7Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogVXBob2xkcyBzYWZldHktdXNhYmxlIGludmFy aWFudCBoZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTb21lKChjb2Rl X3VuaXQsIG9mZnNldCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICAgICAgICAgICAgICAqKGRzdC5hZGQob2Zmc2V0KSkgPSBjb2RlX3VuaXQgYXMgJGRzdF91bml0 OwotKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogb2Zmc2V0IGlzIHRoZSBudW1i ZXIgb2YgYnl0ZXMgY29waWVkIHNvIGZhcgotICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNl dCArPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgIHVudGlsX2FsaWdubWVudCAtPSAxOwot ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgbGV0IGxlbl9taW51 c19zdHJpZGUgPSBsZW4gLSBBTFVfU1RSSURFX1NJWkU7Ci0gICAgICAgICAgICAgICAgICAgICBs b29wIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiAhJHN0cmlkZV9mbigKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBUaGVzZSBhcmUga25vd24gdG8gYmUgdmFs aWQgYW5kIGFsaWduZWQgc2luY2Ugd2UgaGF2ZSBhdAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBsZWFzdCBBTFVfU1RSSURFX1NJWkUgZGF0YSBpbiB0aGVzZSBidWZmZXJzLCBhbmQg b2Zmc2V0IGlzIHRoZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBudW1iZXIgb2Yg ZWxlbWVudHMgY29waWVkIHNvIGZhciwgd2hpY2ggYWNjb3JkaW5nIHRvIHRoZQotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvLyB1bnRpbF9hbGlnbm1lbnQgY2FsY3VsYXRpb24gYWJvdmUg d2lsbCBjYXVzZSBib3RoIHNyYyBhbmQgZHN0IHRvIGJlCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIGFsaWduZWQgdG8gdXNpemUgYWZ0ZXIgdGhpcyBhZGQKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3JjLmFkZChvZmZzZXQpIGFzICpjb25zdCB1c2l6ZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZHN0LmFkZChvZmZzZXQpIGFzICptdXQgdXNpemUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgICAgICAg ICAvLyBTYWZldHk6IG9mZnNldCBjb250aW51ZXMgdG8gYmUgdGhlIG51bWJlciBvZiBieXRlcyBj b3BpZWQgc28gZmFyLCBhbmQKLSsgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWludGFpbnMg dXNpemUgYWxpZ25tZW50IGZvciB0aGUgbmV4dCBsb29wIGl0ZXJhdGlvbgotICAgICAgICAgICAg ICAgICAgICAgICAgIG9mZnNldCArPSBBTFVfU1RSSURFX1NJWkU7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGlzIGBvZmZzZXQgPiBsZW4gLSBzdHJpZGUuIFRoaXMg bG9vcCB3aWxsIGNvbnRpbnVlIGFzIGxvbmcgYXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAv LyBgb2Zmc2V0IDw9IGxlbiAtIHN0cmlkZWAsIHdoaWNoIG1lYW5zIHRoZXJlIGFyZSBgc3RyaWRl YCBieXRlcyB0byBzdGlsbCBiZSByZWFkLgotICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9m ZnNldCA+IGxlbl9taW51c19zdHJpZGUgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg ICAgfQotKyAgICAgICAgICAgIC8vIFNhZmV0eTogVGhpcyBpcyB0aGUgbmHDr3ZlIGNvZGUgb25j ZSBhZ2FpbiwgZm9yIGxlZnRvdmVyIGJ5dGVzCi0gICAgICAgICAgICAgd2hpbGUgb2Zmc2V0IDwg bGVuIHsKLSsgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBsZW4gaW52YXJpYW50IHVzZWQgaGVy ZQotICAgICAgICAgICAgICAgICBsZXQgY29kZV91bml0ID0gKihzcmMuYWRkKG9mZnNldCkpOwot ICAgICAgICAgICAgICAgICBpZiBjb2RlX3VuaXQgPiAxMjcgewotKyAgICAgICAgICAgICAgICAg ICAgLy8gU2FmZXR5OiBVcGhvbGRzIHNhZmV0eS11c2FibGUgaW52YXJpYW50IGhlcmUKLSAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBTb21lKChjb2RlX3VuaXQsIG9mZnNldCkpOwotICAgICAg ICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogbGVuIGludmFyaWFudCB1 c2VkIGhlcmUKLSAgICAgICAgICAgICAgICAgKihkc3QuYWRkKG9mZnNldCkpID0gY29kZV91bml0 IGFzICRkc3RfdW5pdDsKLSAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7Ci0gICAgICAgICAg ICAgfQotICAgICAgICAgICAgIE5vbmUKLSAgICAgICAgIH0KLSAgICAgfTsKLSB9Ci0gCi0gI1th bGxvdyh1bnVzZWRfbWFjcm9zKV0KLSBtYWNyb19ydWxlcyEgbGF0aW4xX2FsdSB7Ci0rICAgIC8v IHNhZmV0eSBpbnZhcmlhbnQ6IHN0cmlkZSBmdW5jdGlvbiBtdXN0IG11bmNoIEFMVV9TVFJJREVf U0laRSpzaXplKHNyY191bml0KSBieXRlcyBvZmYgb2Ygc3JjIGFuZAotKyAgICAvLyB3cml0ZSBB TFVfU1RSSURFX1NJWkUqc2l6ZShkc3RfdW5pdCkgYnl0ZXMgdG8gZHN0Ci0gICAgICgkbmFtZTpp ZGVudCwgJHNyY191bml0OnR5LCAkZHN0X3VuaXQ6dHksICRzdHJpZGVfZm46aWRlbnQpID0+IHsK LSsgICAgICAgIC8vLyBTYWZldHk6IHNyYyBhbmQgZHN0IG11c3QgaGF2ZSBsZW4gZWxlbWVudHMs IHNyYyBpcyB2YWxpZCBmb3IgcmVhZCwgZHN0IGlzIHZhbGlkIGZvcgotKyAgICAgICAgLy8vIHdy aXRlCi0gICAgICAgICAjW2NmZ19hdHRyKAotICAgICAgICAgICAgIGZlYXR1cmUgPSAiY2FyZ28t Y2xpcHB5IiwKLSAgICAgICAgICAgICBhbGxvdyhuZXZlcl9sb29wLCBjYXN0X3B0cl9hbGlnbm1l bnQsIGNhc3RfbG9zc2xlc3MpCi0gICAgICAgICApXQotICAgICAgICAgI1tpbmxpbmUoYWx3YXlz KV0KLSAgICAgICAgIHB1YiB1bnNhZmUgZm4gJG5hbWUoc3JjOiAqY29uc3QgJHNyY191bml0LCBk c3Q6ICptdXQgJGRzdF91bml0LCBsZW46IHVzaXplKSB7Ci0gICAgICAgICAgICAgbGV0IG11dCBv ZmZzZXQgPSAwdXNpemU7Ci0gICAgICAgICAgICAgLy8gVGhpcyBsb29wIGlzIG9ubHkgYnJva2Vu IG91dCBvZiBhcyBhIGBnb3RvYCBmb3J3YXJkCi0gICAgICAgICAgICAgbG9vcCB7Ci0rICAgICAg ICAgICAgICAgIC8vIFNhZmV0eTogdW50aWxfYWxpZ25tZW50IGJlY29tZXMgdGhlIG51bWJlciBv ZiBieXRlcyB3ZSBuZWVkIHRvIG11bmNoIGZyb20gc3JjL2Rlc3QgdW50aWwgd2UgYXJlIGFsaWdu ZWQgdG8gdXNpemUKLSsgICAgICAgICAgICAgICAgLy8gV2UgZW5zdXJlIHRoZSBVVEYtMTYgc2lk ZSBoYXMgdGhlIHNhbWUgYWxpZ25tZW50IGFzIHRoZSBMYXRpbi0xIHNpZGUsIHN0YXJ0aW5nIHdp dGggTGF0aW4tMSBzaW5jZSBpdCBpcyBzbWFsbGVyLgotICAgICAgICAgICAgICAgICBsZXQgbXV0 IHVudGlsX2FsaWdubWVudCA9IHsKLSAgICAgICAgICAgICAgICAgICAgIGlmIDo6Y29yZTo6bWVt OjpzaXplX29mOjo8JHNyY191bml0PigpIDwgOjpjb3JlOjptZW06OnNpemVfb2Y6OjwkZHN0X3Vu aXQ+KCkgewotICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVucGFjawotICAgICAgICAgICAg ICAgICAgICAgICAgIGxldCBzcmNfdW50aWxfYWxpZ25tZW50ID0gKEFMVV9BTElHTk1FTlQKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAoKHNyYyBhcyB1c2l6ZSkgJiBBTFVfQUxJR05N RU5UX01BU0spKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIEFMVV9BTElHTk1FTlRf TUFTSzsKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZHN0LndyYXBwaW5nX2FkZChzcmNf dW50aWxfYWxpZ25tZW50KSBhcyB1c2l6ZSkgJiBBTFVfQUxJR05NRU5UX01BU0sKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIT0gMAotQEAgLTMwOCwzNzMgKzM3Nyw0ODUgQEAgbWFjcm9f cnVsZXMhIGxhdGluMV9hbHUgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSAwCi0g ICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgZHN0X3VudGlsX2FsaWdubWVudAotICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg ICAgICAgICB9OwotICAgICAgICAgICAgICAgICBpZiB1bnRpbF9hbGlnbm1lbnQgKyBBTFVfU1RS SURFX1NJWkUgPD0gbGVuIHsKLSsgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogVGhpcyBp cyB0aGUgbmHDr3ZlIGNvZGUgb25jZSBhZ2FpbiwgZm9yIGB1bnRpbF9hbGlnbm1lbnRgIGJ5dGVz Ci0gICAgICAgICAgICAgICAgICAgICB3aGlsZSB1bnRpbF9hbGlnbm1lbnQgIT0gMCB7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgbGV0IGNvZGVfdW5pdCA9ICooc3JjLmFkZChvZmZzZXQpKTsK LSAgICAgICAgICAgICAgICAgICAgICAgICAqKGRzdC5hZGQob2Zmc2V0KSkgPSBjb2RlX3VuaXQg YXMgJGRzdF91bml0OwotKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogb2Zmc2V0 IGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgY29waWVkIHNvIGZhcgotICAgICAgICAgICAgICAgICAg ICAgICAgIG9mZnNldCArPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgIHVudGlsX2FsaWdu bWVudCAtPSAxOwotICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg bGV0IGxlbl9taW51c19zdHJpZGUgPSBsZW4gLSBBTFVfU1RSSURFX1NJWkU7Ci0gICAgICAgICAg ICAgICAgICAgICBsb29wIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAkc3RyaWRlX2ZuKAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFRoZXNlIGFyZSBrbm93biB0 byBiZSB2YWxpZCBhbmQgYWxpZ25lZCBzaW5jZSB3ZSBoYXZlIGF0Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIGxlYXN0IEFMVV9TVFJJREVfU0laRSBkYXRhIGluIHRoZXNlIGJ1ZmZl cnMsIGFuZCBvZmZzZXQgaXMgdGhlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG51 bWJlciBvZiBlbGVtZW50cyBjb3BpZWQgc28gZmFyLCB3aGljaCBhY2NvcmRpbmcgdG8gdGhlCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVudGlsX2FsaWdubWVudCBjYWxjdWxhdGlv biBhYm92ZSB3aWxsIGNhdXNlIGJvdGggc3JjIGFuZCBkc3QgdG8gYmUKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gYWxpZ25lZCB0byB1c2l6ZSBhZnRlciB0aGlzIGFkZAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzcmMuYWRkKG9mZnNldCkgYXMgKmNvbnN0IHVzaXplLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3QuYWRkKG9mZnNldCkgYXMgKm11dCB1c2l6 ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICApOwotKyAgICAgICAgICAgICAgICAgICAgICAg IC8vIFNhZmV0eTogb2Zmc2V0IGNvbnRpbnVlcyB0byBiZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNv cGllZCBzbyBmYXIsIGFuZAotKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1haW50YWlucyB1 c2l6ZSBhbGlnbm1lbnQgZm9yIHRoZSBuZXh0IGxvb3AgaXRlcmF0aW9uCi0gICAgICAgICAgICAg ICAgICAgICAgICAgb2Zmc2V0ICs9IEFMVV9TVFJJREVfU0laRTsKLSsgICAgICAgICAgICAgICAg ICAgICAgICAvLyBTYWZldHk6IFRoaXMgaXMgYG9mZnNldCA+IGxlbiAtIHN0cmlkZS4gVGhpcyBs b29wIHdpbGwgY29udGludWUgYXMgbG9uZyBhcwotKyAgICAgICAgICAgICAgICAgICAgICAgIC8v IGBvZmZzZXQgPD0gbGVuIC0gc3RyaWRlYCwgd2hpY2ggbWVhbnMgdGhlcmUgYXJlIGBzdHJpZGVg IGJ5dGVzIHRvIHN0aWxsIGJlIHJlYWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2Zm c2V0ID4gbGVuX21pbnVzX3N0cmlkZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgIH0K LSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg ICB9Ci0rICAgICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGlzIHRoZSBuYcOvdmUgY29kZSBvbmNl IGFnYWluLCBmb3IgbGVmdG92ZXIgYnl0ZXMKLSAgICAgICAgICAgICB3aGlsZSBvZmZzZXQgPCBs ZW4gewotKyAgICAgICAgICAgICAgICAvLyBTYWZldHk6IGxlbiBpbnZhcmlhbnQgdXNlZCBoZXJl Ci0gICAgICAgICAgICAgICAgIGxldCBjb2RlX3VuaXQgPSAqKHNyYy5hZGQob2Zmc2V0KSk7Ci0g ICAgICAgICAgICAgICAgICooZHN0LmFkZChvZmZzZXQpKSA9IGNvZGVfdW5pdCBhcyAkZHN0X3Vu aXQ7Ci0gICAgICAgICAgICAgICAgIG9mZnNldCArPSAxOwotICAgICAgICAgICAgIH0KLSAgICAg ICAgIH0KLSAgICAgfTsKLSB9Ci0gCi0gI1thbGxvdyh1bnVzZWRfbWFjcm9zKV0KLSBtYWNyb19y dWxlcyEgYXNjaWlfc2ltZF9jaGVja19hbGlnbiB7Ci0gICAgICgKLSAgICAgICAgICRuYW1lOmlk ZW50LAotICAgICAgICAgJHNyY191bml0OnR5LAotICAgICAgICAgJGRzdF91bml0OnR5LAotKyAg ICAgICAgLy8gU2FmZXR5OiBUaGlzIGZ1bmN0aW9uIG11c3QgcmVxdWlyZSBhbGlnbmVkIHNyYy9k ZXN0IHRoYXQgYXJlIHZhbGlkIGZvciByZWFkaW5nL3dyaXRpbmcgU0lNRF9TVFJJREVfU0laRSBz cmNfdW5pdC9kc3RfdW5pdAotICAgICAgICAgJHN0cmlkZV9ib3RoX2FsaWduZWQ6aWRlbnQsCi0r ICAgICAgICAvLyBTYWZldHk6IFRoaXMgZnVuY3Rpb24gbXVzdCByZXF1aXJlIGFsaWduZWQvdW5h bGlnbmVkIHNyYy9kZXN0IHRoYXQgYXJlIHZhbGlkIGZvciByZWFkaW5nL3dyaXRpbmcgU0lNRF9T VFJJREVfU0laRSBzcmNfdW5pdC9kc3RfdW5pdAotICAgICAgICAgJHN0cmlkZV9zcmNfYWxpZ25l ZDppZGVudCwKLSsgICAgICAgIC8vIFNhZmV0eTogVGhpcyBmdW5jdGlvbiBtdXN0IHJlcXVpcmUg dW5hbGlnbmVkL2FsaWduZWQgc3JjL2Rlc3QgdGhhdCBhcmUgdmFsaWQgZm9yIHJlYWRpbmcvd3Jp dGluZyBTSU1EX1NUUklERV9TSVpFIHNyY191bml0L2RzdF91bml0Ci0gICAgICAgICAkc3RyaWRl X2RzdF9hbGlnbmVkOmlkZW50LAotKyAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGZ1bmN0aW9uIG11 c3QgcmVxdWlyZSB1bmFsaWduZWQgc3JjL2Rlc3QgdGhhdCBhcmUgdmFsaWQgZm9yIHJlYWRpbmcv d3JpdGluZyBTSU1EX1NUUklERV9TSVpFIHNyY191bml0L2RzdF91bml0Ci0gICAgICAgICAkc3Ry aWRlX25laXRoZXJfYWxpZ25lZDppZGVudAotICAgICApID0+IHsKLSsgICAgICAgIC8vLyBTYWZl dHk6IHNyYy9kc3QgbXVzdCBiZSB2YWxpZCBmb3IgcmVhZHMvd3JpdGVzIG9mIGBsZW5gIGVsZW1l bnRzIG9mIHRoZWlyIHVuaXRzLgotKyAgICAgICAgLy8vCi0rICAgICAgICAvLy8gU2FmZXR5LXVz YWJsZSBpbnZhcmlhbnQ6IHdpbGwgcmV0dXJuIFNvbWUoKSB3aGVuIGl0IGVuY291bnRlcnMgbm9u LUFTQ0lJLCB3aXRoIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBTb21lIGJlaW5nCi0rICAgICAg ICAvLy8gZ3VhcmFudGVlZCB0byBiZSBub24tQVNDSUkgKD4gMTI3KSwgYW5kIHRoZSBzZWNvbmQg YmVpbmcgdGhlIG9mZnNldCB3aGVyZSBpdCBpcyBmb3VuZAotICAgICAgICAgI1tpbmxpbmUoYWx3 YXlzKV0KLSAgICAgICAgIHB1YiB1bnNhZmUgZm4gJG5hbWUoCi0gICAgICAgICAgICAgc3JjOiAq Y29uc3QgJHNyY191bml0LAotICAgICAgICAgICAgIGRzdDogKm11dCAkZHN0X3VuaXQsCi0gICAg ICAgICAgICAgbGVuOiB1c2l6ZSwKLSAgICAgICAgICkgLT4gT3B0aW9uPCgkc3JjX3VuaXQsIHVz aXplKT4gewotICAgICAgICAgICAgIGxldCBtdXQgb2Zmc2V0ID0gMHVzaXplOwotKyAgICAgICAg ICAgIC8vIFNhZmV0eTogaWYgdGhpcyBjaGVjayBzdWNjZWVkcyB3ZSdyZSB2YWxpZCBmb3IgcmVh ZGluZy93cml0aW5nIGF0IGxlYXN0IGBTSU1EX1NUUklERV9TSVpFYCBlbGVtZW50cy4KLSAgICAg ICAgICAgICBpZiBTSU1EX1NUUklERV9TSVpFIDw9IGxlbiB7Ci0gICAgICAgICAgICAgICAgIGxl dCBsZW5fbWludXNfc3RyaWRlID0gbGVuIC0gU0lNRF9TVFJJREVfU0laRTsKLSAgICAgICAgICAg ICAgICAgLy8gWFhYIFNob3VsZCB3ZSBmaXJzdCBwcm9jZXNzIG9uZSBzdHJpZGUgdW5jb25kaXRp b25hbGx5IGFzIHVuYWxpZ25lZCB0bwotICAgICAgICAgICAgICAgICAvLyBhdm9pZCB0aGUgY29z dCBvZiB0aGUgYnJhbmNoaW5lc3MgYmVsb3cgaWYgdGhlIGZpcnN0IHN0cmlkZSBmYWlscyBhbnl3 YXk/Ci0gICAgICAgICAgICAgICAgIC8vIFhYWCBTaG91bGQgd2UganVzdCB1c2UgdW5hbGlnbmVk IFNTRTIgYWNjZXNzIHVuY29uZGl0aW9uYWxseT8gSXQgc2VlbXMgdGhhdAotICAgICAgICAgICAg ICAgICAvLyBvbiBIYXN3ZWxsLCBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGp1c3QgdXNlIHVuYWxp Z25lZCBhbmQgbm90IGJvdGhlcgotICAgICAgICAgICAgICAgICAvLyBjaGVja2luZy4gTmVlZCB0 byBiZW5jaG1hcmsgb2xkZXIgYXJjaGl0ZWN0dXJlcyBiZWZvcmUgZGVjaWRpbmcuCi0gICAgICAg ICAgICAgICAgIGxldCBkc3RfbWFza2VkID0gKGRzdCBhcyB1c2l6ZSkgJiBTSU1EX0FMSUdOTUVO VF9NQVNLOwotKyAgICAgICAgICAgICAgICAvLyBTYWZldHk6IGNoZWNraW5nIHdoZXRoZXIgc3Jj IGlzIGFsaWduZWQKLSAgICAgICAgICAgICAgICAgaWYgKChzcmMgYXMgdXNpemUpICYgU0lNRF9B TElHTk1FTlRfTUFTSykgPT0gMCB7Ci0rICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IENo ZWNraW5nIHdoZXRoZXIgZHN0IGlzIGFsaWduZWQKLSAgICAgICAgICAgICAgICAgICAgIGlmIGRz dF9tYXNrZWQgPT0gMCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCB7Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogV2UncmUgdmFsaWQgdG8gcmVhZC93cml0 ZSBTSU1EX1NUUklERV9TSVpFIGVsZW1lbnRzIGFuZCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBhbGln bm1lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICEkc3RyaWRlX2JvdGhfYWxp Z25lZChzcmMuYWRkKG9mZnNldCksIGRzdC5hZGQob2Zmc2V0KSkgewotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IFNJTURfU1RSSURFX1NJWkU7 Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogVGhpcyBpcyBgb2Zmc2V0 ID4gbGVuIC0gU0lNRF9TVFJJREVfU0laRWAgd2hpY2ggbWVhbnMgd2UgYWx3YXlzIGhhdmUgYXQg bGVhc3QgYFNJTURfU1RSSURFX1NJWkVgIGVsZW1lbnRzIHRvIG11bmNoIG5leHQgdGltZS4KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2Zmc2V0ID4gbGVuX21pbnVzX3N0cmlkZSB7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCB7Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogV2UncmUgdmFsaWQgdG8gcmVhZC93 cml0ZSBTSU1EX1NUUklERV9TSVpFIGVsZW1lbnRzIGFuZCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBh bGlnbm1lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICEkc3RyaWRlX3NyY19h bGlnbmVkKHNyYy5hZGQob2Zmc2V0KSwgZHN0LmFkZChvZmZzZXQpKSB7Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gU0lNRF9TVFJJREVfU0la RTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGlzIGBvZmZz ZXQgPiBsZW4gLSBTSU1EX1NUUklERV9TSVpFYCB3aGljaCBtZWFucyB3ZSBhbHdheXMgaGF2ZSBh dCBsZWFzdCBgU0lNRF9TVFJJREVfU0laRWAgZWxlbWVudHMgdG8gbXVuY2ggbmV4dCB0aW1lLgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBvZmZzZXQgPiBsZW5fbWludXNfc3RyaWRl IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg ICAgICAgaWYgZHN0X21hc2tlZCA9PSAwIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBsb29w IHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBXZSdyZSB2YWxpZCB0 byByZWFkL3dyaXRlIFNJTURfU1RSSURFX1NJWkUgZWxlbWVudHMgYW5kIGhhdmUgdGhlIGFwcHJv cHJpYXRlIGFsaWdubWVudHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgISRzdHJp ZGVfZHN0X2FsaWduZWQoc3JjLmFkZChvZmZzZXQpLCBkc3QuYWRkKG9mZnNldCkpIHsKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBTSU1EX1NU UklERV9TSVpFOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFRoaXMg aXMgYG9mZnNldCA+IGxlbiAtIFNJTURfU1RSSURFX1NJWkVgIHdoaWNoIG1lYW5zIHdlIGFsd2F5 cyBoYXZlIGF0IGxlYXN0IGBTSU1EX1NUUklERV9TSVpFYCBlbGVtZW50cyB0byBtdW5jaCBuZXh0 IHRpbWUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9mZnNldCA+IGxlbl9taW51 c19zdHJpZGUgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgIGxv b3AgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFdlJ3JlIHZhbGlk IHRvIHJlYWQvd3JpdGUgU0lNRF9TVFJJREVfU0laRSBlbGVtZW50cyBhbmQgaGF2ZSB0aGUgYXBw cm9wcmlhdGUgYWxpZ25tZW50cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAhJHN0 cmlkZV9uZWl0aGVyX2FsaWduZWQoc3JjLmFkZChvZmZzZXQpLCBkc3QuYWRkKG9mZnNldCkpIHsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBT SU1EX1NUUklERV9TSVpFOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6 IFRoaXMgaXMgYG9mZnNldCA+IGxlbiAtIFNJTURfU1RSSURFX1NJWkVgIHdoaWNoIG1lYW5zIHdl IGFsd2F5cyBoYXZlIGF0IGxlYXN0IGBTSU1EX1NUUklERV9TSVpFYCBlbGVtZW50cyB0byBtdW5j aCBuZXh0IHRpbWUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9mZnNldCA+IGxl bl9taW51c19zdHJpZGUgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICAgd2hpbGUgb2Zmc2V0IDwgbGVuIHsKLSsgICAgICAgICAgICAg ICAgLy8gU2FmZXR5OiB1c2VzIGxlbiBpbnZhcmlhbnQgaGVyZSBhbmQgYmVsb3cKLSAgICAgICAg ICAgICAgICAgbGV0IGNvZGVfdW5pdCA9ICooc3JjLmFkZChvZmZzZXQpKTsKLSAgICAgICAgICAg ICAgICAgaWYgY29kZV91bml0ID4gMTI3IHsKLSsgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0 eTogdXBob2xkcyBzYWZldHktdXNhYmxlIGludmFyaWFudAotICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIFNvbWUoKGNvZGVfdW5pdCwgb2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgICAgICAgKihkc3QuYWRkKG9mZnNldCkpID0gY29kZV91bml0IGFzICRkc3RfdW5p dDsKLSAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7Ci0gICAgICAgICAgICAgfQotICAgICAg ICAgICAgIE5vbmUKLSAgICAgICAgIH0KLSAgICAgfTsKLSB9Ci0gCi0gI1thbGxvdyh1bnVzZWRf bWFjcm9zKV0KLSBtYWNyb19ydWxlcyEgYXNjaWlfc2ltZF9jaGVja19hbGlnbl91bnJvbGxlZCB7 Ci0gICAgICgKLSAgICAgICAgICRuYW1lOmlkZW50LAotICAgICAgICAgJHNyY191bml0OnR5LAot ICAgICAgICAgJGRzdF91bml0OnR5LAotKyAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGZ1bmN0aW9u IG11c3QgcmVxdWlyZSBhbGlnbmVkIHNyYy9kZXN0IHRoYXQgYXJlIHZhbGlkIGZvciByZWFkaW5n L3dyaXRpbmcgU0lNRF9TVFJJREVfU0laRSBzcmNfdW5pdC9kc3RfdW5pdAotICAgICAgICAgJHN0 cmlkZV9ib3RoX2FsaWduZWQ6aWRlbnQsCi0rICAgICAgICAvLyBTYWZldHk6IFRoaXMgZnVuY3Rp b24gbXVzdCByZXF1aXJlIGFsaWduZWQvdW5hbGlnbmVkIHNyYy9kZXN0IHRoYXQgYXJlIHZhbGlk IGZvciByZWFkaW5nL3dyaXRpbmcgU0lNRF9TVFJJREVfU0laRSBzcmNfdW5pdC9kc3RfdW5pdAot ICAgICAgICAgJHN0cmlkZV9zcmNfYWxpZ25lZDppZGVudCwKLSsgICAgICAgIC8vIFNhZmV0eTog VGhpcyBmdW5jdGlvbiBtdXN0IHJlcXVpcmUgdW5hbGlnbmVkIHNyYy9kZXN0IHRoYXQgYXJlIHZh bGlkIGZvciByZWFkaW5nL3dyaXRpbmcgU0lNRF9TVFJJREVfU0laRSBzcmNfdW5pdC9kc3RfdW5p dAotICAgICAgICAgJHN0cmlkZV9uZWl0aGVyX2FsaWduZWQ6aWRlbnQsCi0rICAgICAgICAvLyBT YWZldHk6IFRoaXMgZnVuY3Rpb24gbXVzdCByZXF1aXJlIGFsaWduZWQgc3JjL2Rlc3QgdGhhdCBh cmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyAyKlNJTURfU1RSSURFX1NJWkUgc3JjX3VuaXQv ZHN0X3VuaXQKLSAgICAgICAgICRkb3VibGVfc3RyaWRlX2JvdGhfYWxpZ25lZDppZGVudCwKLSsg ICAgICAgIC8vIFNhZmV0eTogVGhpcyBmdW5jdGlvbiBtdXN0IHJlcXVpcmUgYWxpZ25lZC91bmFs aWduZWQgc3JjL2Rlc3QgdGhhdCBhcmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyAyKlNJTURf U1RSSURFX1NJWkUgc3JjX3VuaXQvZHN0X3VuaXQKLSAgICAgICAgICRkb3VibGVfc3RyaWRlX3Ny Y19hbGlnbmVkOmlkZW50Ci0gICAgICkgPT4gewotLSAgICAgICAgI1tpbmxpbmUoYWx3YXlzKV0K LSsgICAgICAgIC8vLyBTYWZldHk6IHNyYy9kc3QgbXVzdCBiZSB2YWxpZCBmb3IgcmVhZHMvd3Jp dGVzIG9mIGBsZW5gIGVsZW1lbnRzIG9mIHRoZWlyIHVuaXRzLgotKyAgICAgICAgLy8vCi0rICAg ICAgICAvLy8gU2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQ6IHdpbGwgcmV0dXJuIFNvbWUoKSB3aGVu IGl0IGVuY291bnRlcnMgbm9uLUFTQ0lJLCB3aXRoIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBT b21lIGJlaW5nCi0rICAgICAgICAvLy8gZ3VhcmFudGVlZCB0byBiZSBub24tQVNDSUkgKD4gMTI3 KSwgYW5kIHRoZSBzZWNvbmQgYmVpbmcgdGhlIG9mZnNldCB3aGVyZSBpdCBpcyBmb3VuZCAgICAg ICAgI1tpbmxpbmUoYWx3YXlzKV0KLSAgICAgICAgIHB1YiB1bnNhZmUgZm4gJG5hbWUoCi0gICAg ICAgICAgICAgc3JjOiAqY29uc3QgJHNyY191bml0LAotICAgICAgICAgICAgIGRzdDogKm11dCAk ZHN0X3VuaXQsCi0gICAgICAgICAgICAgbGVuOiB1c2l6ZSwKLSAgICAgICAgICkgLT4gT3B0aW9u PCgkc3JjX3VuaXQsIHVzaXplKT4gewotICAgICAgICAgICAgIGxldCB1bml0X3NpemUgPSA6OmNv cmU6Om1lbTo6c2l6ZV9vZjo6PCRzcmNfdW5pdD4oKTsKLSAgICAgICAgICAgICBsZXQgbXV0IG9m ZnNldCA9IDB1c2l6ZTsKLSAgICAgICAgICAgICAvLyBUaGlzIGxvb3AgaXMgb25seSBicm9rZW4g b3V0IG9mIGFzIGEgZ290byBmb3J3YXJkIHdpdGhvdXQKLSAgICAgICAgICAgICAvLyBhY3R1YWxs eSBsb29waW5nCi0gICAgICAgICAgICAgJ291dGVyOiBsb29wIHsKLSsgICAgICAgICAgICAgICAg Ly8gU2FmZXR5OiBpZiB0aGlzIGNoZWNrIHN1Y2NlZWRzIHdlJ3JlIHZhbGlkIGZvciByZWFkaW5n L3dyaXRpbmcgYXQgbGVhc3QgYFNJTURfU1RSSURFX1NJWkVgIGVsZW1lbnRzLgotICAgICAgICAg ICAgICAgICBpZiBTSU1EX1NUUklERV9TSVpFIDw9IGxlbiB7Ci0gICAgICAgICAgICAgICAgICAg ICAvLyBGaXJzdCwgcHJvY2VzcyBvbmUgdW5hbGlnbmVkCi0rICAgICAgICAgICAgICAgICAgICAv LyBTYWZldHk6IHRoaXMgaXMgc2FmZSB0byBjYWxsIHNpbmNlIHdlJ3JlIHZhbGlkIGZvciB0aGlz IHJlYWQvd3JpdGUKLSAgICAgICAgICAgICAgICAgICAgIGlmICEkc3RyaWRlX25laXRoZXJfYWxp Z25lZChzcmMsIGRzdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrICdvdXRlcjsK LSAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IFNJ TURfU1RSSURFX1NJWkU7Ci0gCi0gICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIG5vdyBz ZWVuIDE2IEFTQ0lJIGJ5dGVzLiBMZXQncyBndWVzcyB0aGF0Ci0gICAgICAgICAgICAgICAgICAg ICAvLyB0aGVyZSB3aWxsIGJlIGVub3VnaCBtb3JlIHRvIGp1c3RpZnkgbW9yZSBleHBlbnNlCi0g ICAgICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiBub24tQVNDSUkuCi0gICAgICAg ICAgICAgICAgICAgICAvLyBVc2UgYWxpZ25lZCByZWFkcyBmb3IgdGhlIHNha2Ugb2Ygb2xkIG1p Y3JvYWNoaXRlY3R1cmVzLgotKyAgICAgICAgICAgICAgICAgICAgLy8KLSsgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogdGhpcyBjb3JyZWN0bHkgY2FsY3VsYXRlcyB0aGUgbnVtYmVyIG9m IHNyY191bml0cyB0aGF0IG5lZWQgdG8gYmUgcmVhZCBiZWZvcmUgdGhlIHJlbWFpbmluZyBsaXN0 IGlzIGFsaWduZWQuCi0rICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGxlc3MgdGhhdCBT SU1EX0FMSUdOTUVOVCwgd2hpY2ggaXMgYWxzbyBTSU1EX1NUUklERV9TSVpFIChhcyBkb2N1bWVu dGVkKQotICAgICAgICAgICAgICAgICAgICAgbGV0IHVudGlsX2FsaWdubWVudCA9ICgoU0lNRF9B TElHTk1FTlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAtICgoc3JjLmFkZChvZmZzZXQpIGFz IHVzaXplKSAmIFNJTURfQUxJR05NRU5UX01BU0spKQotICAgICAgICAgICAgICAgICAgICAgICAg ICYgU0lNRF9BTElHTk1FTlRfTUFTSykKLSAgICAgICAgICAgICAgICAgICAgICAgICAvIHVuaXRf c2l6ZTsKLS0gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgYWRkaXRpb24gd29uJ3Qgb3ZlcmZs b3csIGJlY2F1c2UgZXZlbiBpbiB0aGUgMzItYml0IFBBRSBjYXNlIHRoZQotKyAgICAgICAgICAg ICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGFkZGl0aW9uIHdvbid0IG92ZXJmbG93LCBiZWNhdXNl IGV2ZW4gaW4gdGhlIDMyLWJpdCBQQUUgY2FzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIC8v IGFkZHJlc3Mgc3BhY2UgaG9sZHMgZW5vdWdoIGNvZGUgdGhhdCB0aGUgc2xpY2UgbGVuZ3RoIGNh bid0IGJlIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgIC8vIGNsb3NlIHRvIGFkZHJlc3Mgc3Bh Y2Ugc2l6ZS4KLSAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldCBub3cgZXF1YWxzIFNJTURf U1RSSURFX1NJWkUsIGhlbmNlIHRpbWVzIDMgYmVsb3cuCi0rICAgICAgICAgICAgICAgICAgICAv LwotKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBpZiB0aGlzIGNoZWNrIHN1Y2NlZWRz IHdlJ3JlIHZhbGlkIGZvciByZWFkaW5nL3dyaXRpbmcgYXQgbGVhc3QgYDIgKiBTSU1EX1NUUklE RV9TSVpFYCBlbGVtZW50cyBwbHVzIGB1bnRpbF9hbGlnbm1lbnRgLgotKyAgICAgICAgICAgICAg ICAgICAgLy8gVGhlIGV4dHJhIFNJTURfU1RSSURFX1NJWkUgaW4gdGhlIGNvbmRpdGlvbiBpcyBi ZWNhdXNlIGBvZmZzZXRgIGlzIGFscmVhZHkgYFNJTURfU1RSSURFX1NJWkVgLgotICAgICAgICAg ICAgICAgICAgICAgaWYgdW50aWxfYWxpZ25tZW50ICsgKFNJTURfU1RSSURFX1NJWkUgKiAzKSA8 PSBsZW4gewotICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHVudGlsX2FsaWdubWVudCAhPSAw IHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiB0aGlzIGlzIHNhZmUg dG8gY2FsbCBzaW5jZSB3ZSdyZSB2YWxpZCBmb3IgdGhpcyByZWFkL3dyaXRlIChhbmQgbW9yZSks IGFuZCBkb24ndCBjYXJlIGFib3V0IGFsaWdubWVudAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBUaGlzIHdpbGwgY29weSBvdmVyIGJ5dGVzIHRoYXQgZ2V0IGRlY29kZWQgdHdpY2Ug c2luY2UgaXQncyBub3QgaW5jcmVtZW50aW5nIGBvZmZzZXRgIGJ5IFNJTURfU1RSSURFX1NJWkUu IFRoaXMgaXMgZmluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgISRzdHJpZGVf bmVpdGhlcl9hbGlnbmVkKHNyYy5hZGQob2Zmc2V0KSwgZHN0LmFkZChvZmZzZXQpKSB7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gdW50aWxf YWxpZ25tZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAg ICAgICAgICAvLyBTYWZldHk6IEF0IHRoaXMgcG9pbnQgd2UncmUgdmFsaWQgZm9yIHJlYWRpbmcv d3JpdGluZyAyKlNJTURfU1RSSURFX1NJWkUgZWxlbWVudHMKLSsgICAgICAgICAgICAgICAgICAg ICAgICAvLyBTYWZldHk6IE5vdyBgb2Zmc2V0YCBpcyBhbGlnbmVkIGZvciBgc3JjYAotICAgICAg ICAgICAgICAgICAgICAgICAgIGxldCBsZW5fbWludXNfc3RyaWRlX3RpbWVzX3R3byA9IGxlbiAt IChTSU1EX1NUUklERV9TSVpFICogMik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2Fm ZXR5OiBUaGlzIGlzIHdoZXRoZXIgZHN0IGlzIGFsaWduZWQKLSAgICAgICAgICAgICAgICAgICAg ICAgICBsZXQgZHN0X21hc2tlZCA9IChkc3QuYWRkKG9mZnNldCkgYXMgdXNpemUpICYgU0lNRF9B TElHTk1FTlRfTUFTSzsKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkc3RfbWFza2VkID09 IDAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIHsKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogYm90aCBhcmUgYWxpZ25lZCwgd2UgY2FuIGNh bGwgdGhlIGFsaWduZWQgZnVuY3Rpb24uIFdlJ3JlIHZhbGlkIGZvciByZWFkaW5nL3dyaXRpbmcg ZG91YmxlIHN0cmlkZSBmcm9tIHRoZSBpbml0aWFsIGNvbmRpdGlvbgotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gYW5kIHRoZSBsb29wIGJyZWFrIGNvbmRpdGlvbiBiZWxvdwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGV0IFNvbWUoYWR2YW5jZSkgPQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkb3VibGVfc3RyaWRlX2JvdGhf YWxpZ25lZChzcmMuYWRkKG9mZnNldCksIGRzdC5hZGQob2Zmc2V0KSkKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvZmZzZXQgKz0gYWR2YW5jZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsZXQgY29kZV91bml0ID0gKihzcmMuYWRkKG9mZnNldCkpOwotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogdXNlcyBzYWZldHktdXNhYmxlIGludmFyaWFu dCBvbiBhc2NpaV90b19hc2NpaV9zaW1kX2RvdWJsZV9zdHJpZGUgdG8gcmV0dXJuCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3VhcmFudGVlZCBub24tYXNjaWkKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU29tZSgoY29kZV91bml0 LCBvZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBTSU1EX1NUUklERV9TSVpFICogMjsK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogVGhpcyBpcyBgb2Zm c2V0ID4gbGVuIC0gMiAqIFNJTURfU1RSSURFX1NJWkVgIHdoaWNoIG1lYW5zIHdlIGFsd2F5cyBo YXZlIGF0IGxlYXN0IGAyICogU0lNRF9TVFJJREVfU0laRWAgZWxlbWVudHMgdG8gbXVuY2ggbmV4 dCB0aW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2Zmc2V0ID4gbGVu X21pbnVzX3N0cmlkZV90aW1lc190d28gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IFNhZmV0eTogV2UncmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyBvbmUgbW9yZSwgYW5kIGNh biBzdGlsbCBhc3N1bWUgYWxpZ25tZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm IG9mZnNldCArIFNJTURfU1RSSURFX1NJWkUgPD0gbGVuIHsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmICEkc3RyaWRlX2JvdGhfYWxpZ25lZChzcmMuYWRkKG9mZnNldCksIGRz dC5hZGQob2Zmc2V0KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrICdvdXRlcjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBTSU1EX1NUUklERV9TSVpFOwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCB7Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IG9ubHkgc3JjIGlzIGFsaWduZWQgaGVyZS4g V2UncmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyBkb3VibGUgc3RyaWRlIGZyb20gdGhlIGlu aXRpYWwgY29uZGl0aW9uCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQg dGhlIGxvb3AgYnJlYWsgY29uZGl0aW9uIGJlbG93Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZiBsZXQgU29tZShhZHZhbmNlKSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJGRvdWJsZV9zdHJpZGVfc3JjX2FsaWduZWQoc3JjLmFkZChvZmZzZXQpLCBk c3QuYWRkKG9mZnNldCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGFkdmFuY2U7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvZGVfdW5pdCA9ICooc3JjLmFk ZChvZmZzZXQpKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZl dHk6IHVzZXMgc2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQgb24gYXNjaWlfdG9fYXNjaWlfc2ltZF9k b3VibGVfc3RyaWRlIHRvIHJldHVybgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8vIGd1YXJhbnRlZWQgbm9uLWFzY2lpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIFNvbWUoKGNvZGVfdW5pdCwgb2Zmc2V0KSk7Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv ZmZzZXQgKz0gU0lNRF9TVFJJREVfU0laRSAqIDI7Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyBTYWZldHk6IFRoaXMgaXMgYG9mZnNldCA+IGxlbiAtIDIgKiBTSU1EX1NUUklE RV9TSVpFYCB3aGljaCBtZWFucyB3ZSBhbHdheXMgaGF2ZSBhdCBsZWFzdCBgMiAqIFNJTURfU1RS SURFX1NJWkVgIGVsZW1lbnRzIHRvIG11bmNoIG5leHQgdGltZS4KLSsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIG9mZnNldCA+IGxlbl9taW51c19zdHJpZGVfdGltZXNfdHdv IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFdlJ3JlIHZhbGlkIGZv ciByZWFkaW5nL3dyaXRpbmcgb25lIG1vcmUsIGFuZCBjYW4gc3RpbGwgYXNzdW1lIGFsaWdubWVu dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBvZmZzZXQgKyBTSU1EX1NUUklERV9T SVpFIDw9IGxlbiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAhJHN0cmlk ZV9zcmNfYWxpZ25lZChzcmMuYWRkKG9mZnNldCksIGRzdC5hZGQob2Zmc2V0KSkgewotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrICdvdXRlcjsKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9mZnNldCArPSBTSU1EX1NUUklERV9TSVpFOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdCBtb3N0IHR3byBpdGVyYXRpb25z LCBzbyB1bnJvbGwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiBvZmZzZXQgKyBTSU1EX1NU UklERV9TSVpFIDw9IGxlbiB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0 eTogVGhlIGNoZWNrIGFib3ZlIGVuc3VyZXMgd2UncmUgYWxsb3dlZCB0byByZWFkL3dyaXRlIHRo aXMsIGFuZCB3ZSBkb24ndCB1c2UgYWxpZ25tZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmICEkc3RyaWRlX25laXRoZXJfYWxpZ25lZChzcmMuYWRkKG9mZnNldCksIGRzdC5hZGQo b2Zmc2V0KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b2Zmc2V0ICs9IFNJTURfU1RSSURFX1NJWkU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmIG9mZnNldCArIFNJTURfU1RSSURFX1NJWkUgPD0gbGVuIHsKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogVGhlIGNoZWNrIGFib3ZlIGVuc3VyZXMgd2UncmUg YWxsb3dlZCB0byByZWFkL3dyaXRlIHRoaXMsIGFuZCB3ZSBkb24ndCB1c2UgYWxpZ25tZW50Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAhJHN0cmlkZV9uZWl0aGVyX2FsaWdu ZWQoc3JjLmFkZChvZmZzZXQpLCBkc3QuYWRkKG9mZnNldCkpIHsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBTSU1EX1NU UklERV9TSVpFOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgICAgIGJyZWFrICdvdXRlcjsKLSAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgd2hpbGUgb2Zmc2V0IDwgbGVuIHsKLSsgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBy ZWxpZXMgc3RyYWlnaHRmb3J3YXJkbHkgb24gdGhlIGBsZW5gIGludmFyaWFudAotICAgICAgICAg ICAgICAgICBsZXQgY29kZV91bml0ID0gKihzcmMuYWRkKG9mZnNldCkpOwotICAgICAgICAgICAg ICAgICBpZiBjb2RlX3VuaXQgPiAxMjcgewotKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5 LXVzYWJsZSBpbnZhcmlhbnQgdXBoZWxkIGhlcmUKLSAgICAgICAgICAgICAgICAgICAgIHJldHVy biBTb21lKChjb2RlX3VuaXQsIG9mZnNldCkpOwotICAgICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgICAgICooZHN0LmFkZChvZmZzZXQpKSA9IGNvZGVfdW5pdCBhcyAkZHN0X3VuaXQ7Ci0g ICAgICAgICAgICAgICAgIG9mZnNldCArPSAxOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICBOb25lCi0gICAgICAgICB9Ci0gICAgIH07Ci0gfQotIAotICNbYWxsb3codW51c2VkX21hY3Jv cyldCi0gbWFjcm9fcnVsZXMhIGxhdGluMV9zaW1kX2NoZWNrX2FsaWduIHsKLSAgICAgKAotICAg ICAgICAgJG5hbWU6aWRlbnQsCi0gICAgICAgICAkc3JjX3VuaXQ6dHksCi0gICAgICAgICAkZHN0 X3VuaXQ6dHksCi0rICAgICAgICAvLyBTYWZldHk6IFRoaXMgZnVuY3Rpb24gbXVzdCByZXF1aXJl IGFsaWduZWQgc3JjL2Rlc3QgdGhhdCBhcmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyBTSU1E X1NUUklERV9TSVpFIHNyY191bml0L2RzdF91bml0Ci0gICAgICAgICAkc3RyaWRlX2JvdGhfYWxp Z25lZDppZGVudCwKLSsgICAgICAgIC8vIFNhZmV0eTogVGhpcyBmdW5jdGlvbiBtdXN0IHJlcXVp cmUgYWxpZ25lZC91bmFsaWduZWQgc3JjL2Rlc3QgdGhhdCBhcmUgdmFsaWQgZm9yIHJlYWRpbmcv d3JpdGluZyBTSU1EX1NUUklERV9TSVpFIHNyY191bml0L2RzdF91bml0Ci0gICAgICAgICAkc3Ry aWRlX3NyY19hbGlnbmVkOmlkZW50LAotKyAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGZ1bmN0aW9u IG11c3QgcmVxdWlyZSB1bmFsaWduZWQvYWxpZ25lZCBzcmMvZGVzdCB0aGF0IGFyZSB2YWxpZCBm b3IgcmVhZGluZy93cml0aW5nIFNJTURfU1RSSURFX1NJWkUgc3JjX3VuaXQvZHN0X3VuaXQKLSAg ICAgICAgICRzdHJpZGVfZHN0X2FsaWduZWQ6aWRlbnQsCi0rICAgICAgICAvLyBTYWZldHk6IFRo aXMgZnVuY3Rpb24gbXVzdCByZXF1aXJlIHVuYWxpZ25lZCBzcmMvZGVzdCB0aGF0IGFyZSB2YWxp ZCBmb3IgcmVhZGluZy93cml0aW5nIFNJTURfU1RSSURFX1NJWkUgc3JjX3VuaXQvZHN0X3VuaXQK LSAgICAgICAgICRzdHJpZGVfbmVpdGhlcl9hbGlnbmVkOmlkZW50Ci0rCi0gICAgICkgPT4gewot KyAgICAgICAgLy8vIFNhZmV0eTogc3JjL2RzdCBtdXN0IGJlIHZhbGlkIGZvciByZWFkcy93cml0 ZXMgb2YgYGxlbmAgZWxlbWVudHMgb2YgdGhlaXIgdW5pdHMuCi0gICAgICAgICAjW2lubGluZShh bHdheXMpXQotICAgICAgICAgcHViIHVuc2FmZSBmbiAkbmFtZShzcmM6ICpjb25zdCAkc3JjX3Vu aXQsIGRzdDogKm11dCAkZHN0X3VuaXQsIGxlbjogdXNpemUpIHsKLSAgICAgICAgICAgICBsZXQg bXV0IG9mZnNldCA9IDB1c2l6ZTsKLSsgICAgICAgICAgICAvLyBTYWZldHk6IGlmIHRoaXMgY2hl Y2sgc3VjY2VlZHMgd2UncmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyBhdCBsZWFzdCBgU0lN RF9TVFJJREVfU0laRWAgZWxlbWVudHMuCi0gICAgICAgICAgICAgaWYgU0lNRF9TVFJJREVfU0la RSA8PSBsZW4gewotICAgICAgICAgICAgICAgICBsZXQgbGVuX21pbnVzX3N0cmlkZSA9IGxlbiAt IFNJTURfU1RSSURFX1NJWkU7Ci0rICAgICAgICAgICAgICAgIC8vIFdoZXRoZXIgZHN0IGlzIGFs aWduZWQKLSAgICAgICAgICAgICAgICAgbGV0IGRzdF9tYXNrZWQgPSAoZHN0IGFzIHVzaXplKSAm IFNJTURfQUxJR05NRU5UX01BU0s7Ci0rICAgICAgICAgICAgICAgIC8vIFdoZXRoZXIgc3JjIGlz IGFsaWduZWQKLSAgICAgICAgICAgICAgICAgaWYgKChzcmMgYXMgdXNpemUpICYgU0lNRF9BTElH Tk1FTlRfTUFTSykgPT0gMCB7Ci0gICAgICAgICAgICAgICAgICAgICBpZiBkc3RfbWFza2VkID09 IDAgewotICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgewotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvLyBTYWZldHk6IEJvdGggd2VyZSBhbGlnbmVkLCB3ZSBjYW4gdXNlIHRoZSBh bGlnbmVkIGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpZGVfYm90 aF9hbGlnbmVkKHNyYy5hZGQob2Zmc2V0KSwgZHN0LmFkZChvZmZzZXQpKTsKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IFNJTURfU1RSSURFX1NJWkU7Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogVGhpcyBpcyBgb2Zmc2V0ID4gbGVuIC0gU0lN RF9TVFJJREVfU0laRWAsIHdoaWNoIG1lYW5zIGluIHRoZSBuZXh0IGl0ZXJhdGlvbiB3ZSdyZSB2 YWxpZCBmb3IKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhZGluZy93cml0aW5n IGF0IGxlYXN0IFNJTURfU1RSSURFX1NJWkUgZWxlbWVudHMuCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIG9mZnNldCA+IGxlbl9taW51c19zdHJpZGUgewotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K LSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug ewotICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgewotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyBTYWZldHk6IHNyYyB3YXMgYWxpZ25lZCwgZHN0IHdhcyBub3QKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJHN0cmlkZV9zcmNfYWxpZ25lZChzcmMuYWRkKG9mZnNldCks IGRzdC5hZGQob2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCAr PSBTSU1EX1NUUklERV9TSVpFOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZl dHk6IFRoaXMgaXMgYG9mZnNldCA+IGxlbiAtIFNJTURfU1RSSURFX1NJWkVgLCB3aGljaCBtZWFu cyBpbiB0aGUgbmV4dCBpdGVyYXRpb24gd2UncmUgdmFsaWQgZm9yCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIHJlYWRpbmcvd3JpdGluZyBhdCBsZWFzdCBTSU1EX1NUUklERV9TSVpF IGVsZW1lbnRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBvZmZzZXQgPiBsZW5f bWludXNfc3RyaWRlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg fQotICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg ICAgICAgICAgICAgICAgICAgaWYgZHN0X21hc2tlZCA9PSAwIHsKLSAgICAgICAgICAgICAgICAg ICAgICAgICBsb29wIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBz cmMgd2FzIGFsaWduZWQsIGRzdCB3YXMgbm90Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICRzdHJpZGVfZHN0X2FsaWduZWQoc3JjLmFkZChvZmZzZXQpLCBkc3QuYWRkKG9mZnNldCkpOwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gU0lNRF9TVFJJREVfU0laRTsK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGlzIGBvZmZzZXQg PiBsZW4gLSBTSU1EX1NUUklERV9TSVpFYCwgd2hpY2ggbWVhbnMgaW4gdGhlIG5leHQgaXRlcmF0 aW9uIHdlJ3JlIHZhbGlkIGZvcgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFk aW5nL3dyaXRpbmcgYXQgbGVhc3QgU0lNRF9TVFJJREVfU0laRSBlbGVtZW50cy4KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgb2Zmc2V0ID4gbGVuX21pbnVzX3N0cmlkZSB7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCB7Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogTmVpdGhlciB3ZXJlIGFsaWduZWQKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJHN0cmlkZV9uZWl0aGVyX2FsaWduZWQoc3JjLmFkZChv ZmZzZXQpLCBkc3QuYWRkKG9mZnNldCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv ZmZzZXQgKz0gU0lNRF9TVFJJREVfU0laRTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ly8gU2FmZXR5OiBUaGlzIGlzIGBvZmZzZXQgPiBsZW4gLSBTSU1EX1NUUklERV9TSVpFYCwgd2hp Y2ggbWVhbnMgaW4gdGhlIG5leHQgaXRlcmF0aW9uIHdlJ3JlIHZhbGlkIGZvcgotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvLyByZWFkaW5nL3dyaXRpbmcgYXQgbGVhc3QgU0lNRF9TVFJJ REVfU0laRSBlbGVtZW50cy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2Zmc2V0 ID4gbGVuX21pbnVzX3N0cmlkZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICB3aGlsZSBvZmZzZXQgPCBsZW4gewotKyAgICAgICAg ICAgICAgICAvLyBTYWZldHk6IHJlbGllcyBzdHJhaWdodGZvcndhcmRseSBvbiB0aGUgYGxlbmAg aW52YXJpYW50Ci0gICAgICAgICAgICAgICAgIGxldCBjb2RlX3VuaXQgPSAqKHNyYy5hZGQob2Zm c2V0KSk7Ci0gICAgICAgICAgICAgICAgICooZHN0LmFkZChvZmZzZXQpKSA9IGNvZGVfdW5pdCBh cyAkZHN0X3VuaXQ7Ci0gICAgICAgICAgICAgICAgIG9mZnNldCArPSAxOwotICAgICAgICAgICAg IH0KLSAgICAgICAgIH0KLSAgICAgfTsKLSB9Ci0gCi0gI1thbGxvdyh1bnVzZWRfbWFjcm9zKV0K LSBtYWNyb19ydWxlcyEgbGF0aW4xX3NpbWRfY2hlY2tfYWxpZ25fdW5yb2xsZWQgewotICAgICAo Ci0gICAgICAgICAkbmFtZTppZGVudCwKLSAgICAgICAgICRzcmNfdW5pdDp0eSwKLSAgICAgICAg ICRkc3RfdW5pdDp0eSwKLSsgICAgICAgIC8vIFNhZmV0eTogVGhpcyBmdW5jdGlvbiBtdXN0IHJl cXVpcmUgYWxpZ25lZCBzcmMvZGVzdCB0aGF0IGFyZSB2YWxpZCBmb3IgcmVhZGluZy93cml0aW5n IFNJTURfU1RSSURFX1NJWkUgc3JjX3VuaXQvZHN0X3VuaXQKLSAgICAgICAgICRzdHJpZGVfYm90 aF9hbGlnbmVkOmlkZW50LAotKyAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGZ1bmN0aW9uIG11c3Qg cmVxdWlyZSBhbGlnbmVkL3VuYWxpZ25lZCBzcmMvZGVzdCB0aGF0IGFyZSB2YWxpZCBmb3IgcmVh ZGluZy93cml0aW5nIFNJTURfU1RSSURFX1NJWkUgc3JjX3VuaXQvZHN0X3VuaXQKLSAgICAgICAg ICRzdHJpZGVfc3JjX2FsaWduZWQ6aWRlbnQsCi0rICAgICAgICAvLyBTYWZldHk6IFRoaXMgZnVu Y3Rpb24gbXVzdCByZXF1aXJlIHVuYWxpZ25lZC9hbGlnbmVkIHNyYy9kZXN0IHRoYXQgYXJlIHZh bGlkIGZvciByZWFkaW5nL3dyaXRpbmcgU0lNRF9TVFJJREVfU0laRSBzcmNfdW5pdC9kc3RfdW5p dAotICAgICAgICAgJHN0cmlkZV9kc3RfYWxpZ25lZDppZGVudCwKLSsgICAgICAgIC8vIFNhZmV0 eTogVGhpcyBmdW5jdGlvbiBtdXN0IHJlcXVpcmUgdW5hbGlnbmVkIHNyYy9kZXN0IHRoYXQgYXJl IHZhbGlkIGZvciByZWFkaW5nL3dyaXRpbmcgU0lNRF9TVFJJREVfU0laRSBzcmNfdW5pdC9kc3Rf dW5pdAotICAgICAgICAgJHN0cmlkZV9uZWl0aGVyX2FsaWduZWQ6aWRlbnQKLSAgICAgKSA9PiB7 Ci0rICAgICAgICAvLy8gU2FmZXR5OiBzcmMvZHN0IG11c3QgYmUgdmFsaWQgZm9yIHJlYWRzL3dy aXRlcyBvZiBgbGVuYCBlbGVtZW50cyBvZiB0aGVpciB1bml0cy4KLSAgICAgICAgICNbaW5saW5l KGFsd2F5cyldCi0gICAgICAgICBwdWIgdW5zYWZlIGZuICRuYW1lKHNyYzogKmNvbnN0ICRzcmNf dW5pdCwgZHN0OiAqbXV0ICRkc3RfdW5pdCwgbGVuOiB1c2l6ZSkgewotICAgICAgICAgICAgIGxl dCB1bml0X3NpemUgPSA6OmNvcmU6Om1lbTo6c2l6ZV9vZjo6PCRzcmNfdW5pdD4oKTsKLSAgICAg ICAgICAgICBsZXQgbXV0IG9mZnNldCA9IDB1c2l6ZTsKLSsgICAgICAgICAgICAvLyBTYWZldHk6 IGlmIHRoaXMgY2hlY2sgc3VjY2VlZHMgd2UncmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyBh dCBsZWFzdCBgU0lNRF9TVFJJREVfU0laRWAgZWxlbWVudHMuCi0gICAgICAgICAgICAgaWYgU0lN RF9TVFJJREVfU0laRSA8PSBsZW4gewotKyAgICAgICAgICAgICAgICAvLyBTYWZldHk6IHRoaXMg Y29ycmVjdGx5IGNhbGN1bGF0ZXMgdGhlIG51bWJlciBvZiBzcmNfdW5pdHMgdGhhdCBuZWVkIHRv IGJlIHJlYWQgYmVmb3JlIHRoZSByZW1haW5pbmcgbGlzdCBpcyBhbGlnbmVkLgotKyAgICAgICAg ICAgICAgICAvLyBUaGlzIGlzIGJ5IGRlZmluaXRpb24gbGVzcyB0aGFuIFNJTURfU1RSSURFX1NJ WkUuCi0gICAgICAgICAgICAgICAgIGxldCBtdXQgdW50aWxfYWxpZ25tZW50ID0gKChTSU1EX1NU UklERV9TSVpFCi0gICAgICAgICAgICAgICAgICAgICAtICgoc3JjIGFzIHVzaXplKSAmIFNJTURf QUxJR05NRU5UX01BU0spKQotICAgICAgICAgICAgICAgICAgICAgJiBTSU1EX0FMSUdOTUVOVF9N QVNLKQotICAgICAgICAgICAgICAgICAgICAgLyB1bml0X3NpemU7Ci0gICAgICAgICAgICAgICAg IHdoaWxlIHVudGlsX2FsaWdubWVudCAhPSAwIHsKLSsgICAgICAgICAgICAgICAgICAgIC8vIFNh ZmV0eTogVGhpcyBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBjb3B5LCBzaW5jZSB1bnRpbF9hbGlnbm1l bnQgaXMgPCBTSU1EX1NUUklERV9TSVpFIDwgbGVuLCB0aGlzIGlzIGluLWJvdW5kcwotICAgICAg ICAgICAgICAgICAgICAgKihkc3QuYWRkKG9mZnNldCkpID0gKihzcmMuYWRkKG9mZnNldCkpIGFz ICRkc3RfdW5pdDsKLSAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxOwotICAgICAgICAg ICAgICAgICAgICAgdW50aWxfYWxpZ25tZW50IC09IDE7Ci0gICAgICAgICAgICAgICAgIH0KLSsg ICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBoZXJlIG9mZnNldCB3aWxsIGJlIGB1bnRpbF9hbGln bm1lbnRgLCBpLmUuIGVub3VnaCB0byBhbGlnbiBgc3JjYC4KLSAgICAgICAgICAgICAgICAgbGV0 IGxlbl9taW51c19zdHJpZGUgPSBsZW4gLSBTSU1EX1NUUklERV9TSVpFOwotKyAgICAgICAgICAg ICAgICAvLyBTYWZldHk6IGlmIHRoaXMgY2hlY2sgc3VjY2VlZHMgd2UncmUgdmFsaWQgZm9yIHJl YWRpbmcvd3JpdGluZyBhdCBsZWFzdCBgMiAqIFNJTURfU1RSSURFX1NJWkVgIGVsZW1lbnRzLgot ICAgICAgICAgICAgICAgICBpZiBvZmZzZXQgKyBTSU1EX1NUUklERV9TSVpFICogMiA8PSBsZW4g ewotICAgICAgICAgICAgICAgICAgICAgbGV0IGxlbl9taW51c19zdHJpZGVfdGltZXNfdHdvID0g bGVuX21pbnVzX3N0cmlkZSAtIFNJTURfU1RSSURFX1NJWkU7Ci0rICAgICAgICAgICAgICAgICAg ICAvLyBTYWZldHk6IGF0IHRoaXMgcG9pbnQgc3JjIGlzIGtub3duIHRvIGJlIGFsaWduZWQgYXQg b2Zmc2V0LCBkc3QgaXMgbm90LgotICAgICAgICAgICAgICAgICAgICAgaWYgKGRzdC5hZGQob2Zm c2V0KSBhcyB1c2l6ZSkgJiBTSU1EX0FMSUdOTUVOVF9NQVNLID09IDAgewotICAgICAgICAgICAg ICAgICAgICAgICAgIGxvb3AgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZl dHk6IFdlIGNoZWNrZWQgYWxpZ25tZW50IG9mIGRzdCBhYm92ZSwgd2UgY2FuIHVzZSB0aGUgYWxp Z25tZW50IGZ1bmN0aW9ucy4gV2UncmUgYWxsb3dlZCB0byByZWFkL3dyaXRlIDIqU0lNRF9TVFJJ REVfU0laRSBlbGVtZW50cywgd2hpY2ggd2UgZG8uCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICRzdHJpZGVfYm90aF9hbGlnbmVkKHNyYy5hZGQob2Zmc2V0KSwgZHN0LmFkZChvZmZzZXQp KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IFNJTURfU1RSSURFX1NJ WkU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpZGVfYm90aF9hbGlnbmVkKHNy Yy5hZGQob2Zmc2V0KSwgZHN0LmFkZChvZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2Zmc2V0ICs9IFNJTURfU1RSSURFX1NJWkU7Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogVGhpcyBpcyBgb2Zmc2V0ID4gbGVuIC0gMiAqIFNJTURfU1RSSURF X1NJWkVgIHdoaWNoIG1lYW5zIHdlIGFsd2F5cyBoYXZlIGF0IGxlYXN0IGAyICogU0lNRF9TVFJJ REVfU0laRWAgZWxlbWVudHMgdG8gbXVuY2ggbmV4dCB0aW1lLgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiBvZmZzZXQgPiBsZW5fbWludXNfc3RyaWRlX3RpbWVzX3R3byB7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCB7Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogd2UgZW5zdXJlZCBhbGlnbm1lbnQgb2Ygc3Jj IGFscmVhZHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpZGVfc3JjX2FsaWdu ZWQoc3JjLmFkZChvZmZzZXQpLCBkc3QuYWRkKG9mZnNldCkpOwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvZmZzZXQgKz0gU0lNRF9TVFJJREVfU0laRTsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJHN0cmlkZV9zcmNfYWxpZ25lZChzcmMuYWRkKG9mZnNldCksIGRzdC5hZGQo b2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBTSU1EX1NU UklERV9TSVpFOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFRoaXMg aXMgYG9mZnNldCA+IGxlbiAtIDIgKiBTSU1EX1NUUklERV9TSVpFYCB3aGljaCBtZWFucyB3ZSBh bHdheXMgaGF2ZSBhdCBsZWFzdCBgMiAqIFNJTURfU1RSSURFX1NJWkVgIGVsZW1lbnRzIHRvIG11 bmNoIG5leHQgdGltZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2Zmc2V0ID4g bGVuX21pbnVzX3N0cmlkZV90aW1lc190d28gewotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg IH0KLSsgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGlzIGBvZmZzZXQgPiBsZW4gLSBT SU1EX1NUUklERV9TSVpFYCB3aGljaCBtZWFucyB3ZSBhcmUgdmFsaWQgdG8gbXVuY2ggU0lNRF9T VFJJREVfU0laRSBtb3JlIGVsZW1lbnRzLCB3aGljaCB3ZSBkbwotICAgICAgICAgICAgICAgICBp ZiBvZmZzZXQgPCBsZW5fbWludXNfc3RyaWRlIHsKLSAgICAgICAgICAgICAgICAgICAgICRzdHJp ZGVfc3JjX2FsaWduZWQoc3JjLmFkZChvZmZzZXQpLCBkc3QuYWRkKG9mZnNldCkpOwotICAgICAg ICAgICAgICAgICAgICAgb2Zmc2V0ICs9IFNJTURfU1RSSURFX1NJWkU7Ci0gICAgICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgd2hpbGUgb2Zmc2V0IDwgbGVuIHsK LSsgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiB1c2VzIGxlbiBpbnZhcmlhbnQgaGVyZSBhbmQg YmVsb3cKLSAgICAgICAgICAgICAgICAgbGV0IGNvZGVfdW5pdCA9ICooc3JjLmFkZChvZmZzZXQp KTsKLSAgICAgICAgICAgICAgICAgLy8gT24geDg2XzY0LCB0aGlzIGxvb3AgYXV0b3ZlY3Rvcml6 ZXMgYnV0IGluIHRoZSBwYWNrCi0gICAgICAgICAgICAgICAgIC8vIGNhc2UgdGhlcmUgYXJlIGlu c3RydWN0aW9ucyB3aG9zZSBwdXJwb3NlIGlzIHRvIG1ha2Ugc3VyZQotICAgICAgICAgICAgICAg ICAvLyBlYWNoIHUxNiBpbiB0aGUgdmVjdG9yIGlzIHRydW5jYXRlZCBiZWZvcmUgcGFja2luZy4g SG93ZXZlciwKLSAgICAgICAgICAgICAgICAgLy8gc2luY2Ugd2UgZG9uJ3QgY2FyZSBhYm91dCBz YXR1cmF0aW5nIGJlaGF2aW9yIG9mIFNTRTIgcGFja2luZwotICAgICAgICAgICAgICAgICAvLyB3 aGVuIHRoZSBpbnB1dCBpc24ndCBMYXRpbjEsIHRob3NlIGluc3RydWN0aW9ucyBhcmUgdXNlbGVz cy4KLSAgICAgICAgICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgdXNpbmcgdGhlIGBhc3N1bWVg IGludHJpbnNpYyB0byBsaWUgdG8gdGhlCi0gICAgICAgICAgICAgICAgIC8vIG9wdGltaXplciBk b2Vzbid0IG1ha2UgTExWTSBvbWl0IHRoZSB0cnVuY3RhdGlvbiB0aGF0IHdlCi1AQCAtNjg4LDEz OCArODY5LDE4MCBAQCBtYWNyb19ydWxlcyEgbGF0aW4xX3NpbWRfY2hlY2tfYWxpZ25fdW5yCi0g ICAgICAgICAgICAgICAgIG9mZnNldCArPSAxOwotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0K LSAgICAgfTsKLSB9Ci0gCi0gI1thbGxvdyh1bnVzZWRfbWFjcm9zKV0KLSBtYWNyb19ydWxlcyEg YXNjaWlfc2ltZF91bmFsaWduIHsKLSsgICAgLy8gU2FmZXR5OiBzdHJpZGVfbmVpdGhlcl9hbGln bmVkIG11c3QgYmUgYSBmdW5jdGlvbiB0aGF0IHJlcXVpcmVzIHNyYy9kZXN0IGJlIHZhbGlkIGZv ciB1bmFsaWduZWQgcmVhZHMvd3JpdGVzIGZvciBTSU1EX1NUUklERV9TSVpFIGVsZW1lbnRzIG9m IHR5cGUgc3JjX3VuaXQvZGVzdF91bml0Ci0gICAgICgkbmFtZTppZGVudCwgJHNyY191bml0OnR5 LCAkZHN0X3VuaXQ6dHksICRzdHJpZGVfbmVpdGhlcl9hbGlnbmVkOmlkZW50KSA9PiB7Ci0rICAg ICAgICAvLy8gU2FmZXR5OiBzcmMgYW5kIGRzdCBtdXN0IGJlIHZhbGlkIGZvciByZWFkcy93cml0 ZXMgb2YgbGVuIGVsZW1lbnRzIG9mIHR5cGUgc3JjX3VuaXQvZHN0X3VuaXQKLSsgICAgICAgIC8v LwotKyAgICAgICAgLy8vIFNhZmV0eS11c2FibGUgaW52YXJpYW50OiB3aWxsIHJldHVybiBTb21l KCkgd2hlbiBpdCBlbmNvdW50ZXJzIG5vbi1BU0NJSSwgd2l0aCB0aGUgZmlyc3QgZWxlbWVudCBp biB0aGUgU29tZSBiZWluZwotKyAgICAgICAgLy8vIGd1YXJhbnRlZWQgdG8gYmUgbm9uLUFTQ0lJ ICg+IDEyNyksIGFuZCB0aGUgc2Vjb25kIGJlaW5nIHRoZSBvZmZzZXQgd2hlcmUgaXQgaXMgZm91 bmQKLSAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCi0gICAgICAgICBwdWIgdW5zYWZlIGZuICRu YW1lKAotICAgICAgICAgICAgIHNyYzogKmNvbnN0ICRzcmNfdW5pdCwKLSAgICAgICAgICAgICBk c3Q6ICptdXQgJGRzdF91bml0LAotICAgICAgICAgICAgIGxlbjogdXNpemUsCi0gICAgICAgICAp IC0+IE9wdGlvbjwoJHNyY191bml0LCB1c2l6ZSk+IHsKLSAgICAgICAgICAgICBsZXQgbXV0IG9m ZnNldCA9IDB1c2l6ZTsKLSsgICAgICAgICAgICAvLyBTYWZldHk6IGlmIHRoaXMgY2hlY2sgc3Vj Y2VlZHMgd2UncmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyBhdCBsZWFzdCBgc3RyaWRlYCBl bGVtZW50cy4KLSAgICAgICAgICAgICBpZiBTSU1EX1NUUklERV9TSVpFIDw9IGxlbiB7Ci0gICAg ICAgICAgICAgICAgIGxldCBsZW5fbWludXNfc3RyaWRlID0gbGVuIC0gU0lNRF9TVFJJREVfU0la RTsKLSAgICAgICAgICAgICAgICAgbG9vcCB7Ci0rICAgICAgICAgICAgICAgICAgICAvLyBTYWZl dHk6IFdlIGtub3cgd2UncmUgdmFsaWQgZm9yIGBzdHJpZGVgIHJlYWRzL3dyaXRlcywgc28gd2Ug Y2FuIGNhbGwgdGhpcyBmdW5jdGlvbi4gV2UgZG9uJ3QgbmVlZCBhbGlnbm1lbnQuCi0gICAgICAg ICAgICAgICAgICAgICBpZiAhJHN0cmlkZV9uZWl0aGVyX2FsaWduZWQoc3JjLmFkZChvZmZzZXQp LCBkc3QuYWRkKG9mZnNldCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBTSU1E X1NUUklERV9TSVpFOwotKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBgb2Zmc2V0ID4g bGVuIC0gc3RyaWRlYCB3aGljaCBtZWFucyB3ZSBhbHdheXMgaGF2ZSBhdCBsZWFzdCBgc3RyaWRl YCBlbGVtZW50cyB0byBtdW5jaCBuZXh0IHRpbWUuCi0gICAgICAgICAgICAgICAgICAgICBpZiBv ZmZzZXQgPiBsZW5fbWludXNfc3RyaWRlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBicmVh azsKLSAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgICB3aGlsZSBvZmZzZXQgPCBsZW4gewotKyAgICAgICAgICAgICAg ICAvLyBTYWZldHk6IFVzZXMgbGVuIGludmFyaWFudCBoZXJlIGFuZCBiZWxvdwotICAgICAgICAg ICAgICAgICBsZXQgY29kZV91bml0ID0gKihzcmMuYWRkKG9mZnNldCkpOwotICAgICAgICAgICAg ICAgICBpZiBjb2RlX3VuaXQgPiAxMjcgewotKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5 LXVzYWJsZSBpbnZhcmlhbnQgdXBoZWxkIGhlcmUKLSAgICAgICAgICAgICAgICAgICAgIHJldHVy biBTb21lKChjb2RlX3VuaXQsIG9mZnNldCkpOwotICAgICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgICAgICooZHN0LmFkZChvZmZzZXQpKSA9IGNvZGVfdW5pdCBhcyAkZHN0X3VuaXQ7Ci0g ICAgICAgICAgICAgICAgIG9mZnNldCArPSAxOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICBOb25lCi0gICAgICAgICB9Ci0gICAgIH07Ci0gfQotIAotICNbYWxsb3codW51c2VkX21hY3Jv cyldCi0gbWFjcm9fcnVsZXMhIGxhdGluMV9zaW1kX3VuYWxpZ24gewotKyAgICAvLyBTYWZldHk6 IHN0cmlkZV9uZWl0aGVyX2FsaWduZWQgbXVzdCBiZSBhIGZ1bmN0aW9uIHRoYXQgcmVxdWlyZXMg c3JjL2Rlc3QgYmUgdmFsaWQgZm9yIHVuYWxpZ25lZCByZWFkcy93cml0ZXMgZm9yIFNJTURfU1RS SURFX1NJWkUgZWxlbWVudHMgb2YgdHlwZSBzcmNfdW5pdC9kZXN0X3VuaXQKLSAgICAgKCRuYW1l OmlkZW50LCAkc3JjX3VuaXQ6dHksICRkc3RfdW5pdDp0eSwgJHN0cmlkZV9uZWl0aGVyX2FsaWdu ZWQ6aWRlbnQpID0+IHsKLSsgICAgICAgIC8vLyBTYWZldHk6IHNyYyBhbmQgZHN0IG11c3QgYmUg dmFsaWQgZm9yIHVuYWxpZ25lZCByZWFkcy93cml0ZXMgb2YgbGVuIGVsZW1lbnRzIG9mIHR5cGUg c3JjX3VuaXQvZHN0X3VuaXQKLSAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCi0gICAgICAgICBw dWIgdW5zYWZlIGZuICRuYW1lKHNyYzogKmNvbnN0ICRzcmNfdW5pdCwgZHN0OiAqbXV0ICRkc3Rf dW5pdCwgbGVuOiB1c2l6ZSkgewotICAgICAgICAgICAgIGxldCBtdXQgb2Zmc2V0ID0gMHVzaXpl OwotKyAgICAgICAgICAgIC8vIFNhZmV0eTogaWYgdGhpcyBjaGVjayBzdWNjZWVkcyB3ZSdyZSB2 YWxpZCBmb3IgcmVhZGluZy93cml0aW5nIGF0IGxlYXN0IGBzdHJpZGVgIGVsZW1lbnRzLgotICAg ICAgICAgICAgIGlmIFNJTURfU1RSSURFX1NJWkUgPD0gbGVuIHsKLSAgICAgICAgICAgICAgICAg bGV0IGxlbl9taW51c19zdHJpZGUgPSBsZW4gLSBTSU1EX1NUUklERV9TSVpFOwotICAgICAgICAg ICAgICAgICBsb29wIHsKLSsgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogV2Uga25vdyB3 ZSdyZSB2YWxpZCBmb3IgYHN0cmlkZWAgcmVhZHMvd3JpdGVzLCBzbyB3ZSBjYW4gY2FsbCB0aGlz IGZ1bmN0aW9uLiBXZSBkb24ndCBuZWVkIGFsaWdubWVudC4KLSAgICAgICAgICAgICAgICAgICAg ICRzdHJpZGVfbmVpdGhlcl9hbGlnbmVkKHNyYy5hZGQob2Zmc2V0KSwgZHN0LmFkZChvZmZzZXQp KTsKLSAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBTSU1EX1NUUklERV9TSVpFOwotKyAg ICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBgb2Zmc2V0ID4gbGVuIC0gc3RyaWRlYCB3aGlj aCBtZWFucyB3ZSBhbHdheXMgaGF2ZSBhdCBsZWFzdCBgc3RyaWRlYCBlbGVtZW50cyB0byBtdW5j aCBuZXh0IHRpbWUuCi0gICAgICAgICAgICAgICAgICAgICBpZiBvZmZzZXQgPiBsZW5fbWludXNf c3RyaWRlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICB3aGlsZSBvZmZzZXQgPCBsZW4gewotKyAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFVzZXMg bGVuIGludmFyaWFudCBoZXJlCi0gICAgICAgICAgICAgICAgIGxldCBjb2RlX3VuaXQgPSAqKHNy Yy5hZGQob2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAgICooZHN0LmFkZChvZmZzZXQpKSA9IGNv ZGVfdW5pdCBhcyAkZHN0X3VuaXQ7Ci0gICAgICAgICAgICAgICAgIG9mZnNldCArPSAxOwotICAg ICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgfTsKLSB9Ci0gCi0gI1thbGxvdyh1bnVzZWRf bWFjcm9zKV0KLSBtYWNyb19ydWxlcyEgYXNjaWlfdG9fYXNjaWlfc2ltZF9zdHJpZGUgewotKyAg ICAvLyBTYWZldHk6IGxvYWQvc3RvcmUgbXVzdCBiZSB2YWxpZCBmb3IgMTYgYnl0ZXMgb2YgcmVh ZC93cml0ZSwgd2hpY2ggbWF5IGJlIHVuYWxpZ25lZC4gKGNhbmRpZGF0ZXM6IGAobG9hZHxzdG9y ZSkoMTZ8OClfKHVuYWxpZ25lZHxhbGlnbmVkKWAgZnVuY3Rpb25zKQotICAgICAoJG5hbWU6aWRl bnQsICRsb2FkOmlkZW50LCAkc3RvcmU6aWRlbnQpID0+IHsKLSsgICAgICAgIC8vLyBTYWZldHk6 IHNyYyBhbmQgZHN0IG11c3QgYmUgdmFsaWQgZm9yIDE2IGJ5dGVzIG9mIHJlYWQvd3JpdGUgYWNj b3JkaW5nIHRvCi0rICAgICAgICAvLy8gdGhlICRsb2FkLyRzdG9yZSBmbiwgd2hpY2ggbWF5IGFs bG93IGZvciB1bmFsaWduZWQgcmVhZHMvd3JpdGVzIG9yIHJlcXVpcmUKLSsgICAgICAgIC8vLyBh bGlnbm1lbnQgdG8gZWl0aGVyIDE2eDggb3IgdTh4MTYuCi0gICAgICAgICAjW2lubGluZShhbHdh eXMpXQotICAgICAgICAgcHViIHVuc2FmZSBmbiAkbmFtZShzcmM6ICpjb25zdCB1OCwgZHN0OiAq bXV0IHU4KSAtPiBib29sIHsKLSAgICAgICAgICAgICBsZXQgc2ltZCA9ICRsb2FkKHNyYyk7Ci0g ICAgICAgICAgICAgaWYgIXNpbWRfaXNfYXNjaWkoc2ltZCkgewotICAgICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgICRzdG9yZShkc3QsIHNp bWQpOwotICAgICAgICAgICAgIHRydWUKLSAgICAgICAgIH0KLSAgICAgfTsKLSB9Ci0gCi0gI1th bGxvdyh1bnVzZWRfbWFjcm9zKV0KLSBtYWNyb19ydWxlcyEgYXNjaWlfdG9fYXNjaWlfc2ltZF9k b3VibGVfc3RyaWRlIHsKLSsgICAgLy8gU2FmZXR5OiBzdG9yZSBtdXN0IGJlIHZhbGlkIGZvciAz MiBieXRlcyBvZiB3cml0ZSwgd2hpY2ggbWF5IGJlIHVuYWxpZ25lZCAoY2FuZGlkYXRlczogYHN0 b3JlKDh8MTYpXyhhbGlnbmVkfHVuYWxpZ25lZClgKQotICAgICAoJG5hbWU6aWRlbnQsICRzdG9y ZTppZGVudCkgPT4gewotKyAgICAgICAgLy8vIFNhZmV0eTogc3JjIG11c3QgYmUgdmFsaWQgZm9y IDMyIGJ5dGVzIG9mIGFsaWduZWQgdTh4MTYgcmVhZAotKyAgICAgICAgLy8vIGRzdCBtdXN0IGJl IHZhbGlkIGZvciAzMiBieXRlcyBvZiB1bmFsaWduZWQgd3JpdGUgYWNjb3JkaW5nIHRvCi0rICAg ICAgICAvLy8gdGhlICRzdG9yZSBmbiwgd2hpY2ggbWF5IGFsbG93IGZvciB1bmFsaWduZWQgd3Jp dGVzIG9yIHJlcXVpcmUKLSsgICAgICAgIC8vLyBhbGlnbm1lbnQgdG8gZWl0aGVyIDE2eDggb3Ig dTh4MTYuCi0rICAgICAgICAvLy8KLSsgICAgICAgIC8vLyBTYWZldHktdXNhYmxlIGludmFyaWFu dDogUmV0dXJucyBTb21lKGluZGV4KSBpZiB0aGUgZWxlbWVudCBhdCBgaW5kZXhgIGlzIGludmFs aWQgQVNDSUkKLSAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCi0gICAgICAgICBwdWIgdW5zYWZl IGZuICRuYW1lKHNyYzogKmNvbnN0IHU4LCBkc3Q6ICptdXQgdTgpIC0+IE9wdGlvbjx1c2l6ZT4g ewotICAgICAgICAgICAgIGxldCBmaXJzdCA9IGxvYWQxNl9hbGlnbmVkKHNyYyk7Ci0gICAgICAg ICAgICAgbGV0IHNlY29uZCA9IGxvYWQxNl9hbGlnbmVkKHNyYy5hZGQoU0lNRF9TVFJJREVfU0la RSkpOwotICAgICAgICAgICAgICRzdG9yZShkc3QsIGZpcnN0KTsKLSAgICAgICAgICAgICBpZiB1 bmxpa2VseSghc2ltZF9pc19hc2NpaShmaXJzdCB8IHNlY29uZCkpIHsKLSsgICAgICAgICAgICAg ICAgLy8gU2FmZXR5OiBtYXNrX2FzY2lpIHByb2R1Y2VzIGEgbWFzayBvZiBhbGwgdGhlIGhpZ2gg Yml0cy4KLSAgICAgICAgICAgICAgICAgbGV0IG1hc2tfZmlyc3QgPSBtYXNrX2FzY2lpKGZpcnN0 KTsKLSAgICAgICAgICAgICAgICAgaWYgbWFza19maXJzdCAhPSAwIHsKLSsgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogb24gbGl0dGxlIGVuZGlhbiBzeXN0ZW1zIHRoaXMgd2lsbCBiZSB0 aGUgbnVtYmVyIG9mIGFzY2lpIGJ5dGVzCi0rICAgICAgICAgICAgICAgICAgICAvLyBiZWZvcmUg dGhlIGZpcnN0IG5vbi1hc2NpaSwgaS5lLiB2YWxpZCBmb3IgaW5kZXhpbmcgc3JjCi0rICAgICAg ICAgICAgICAgICAgICAvLyBUT0RPIFNBRkVUWTogV2hhdCBhYm91dCBiaWctZW5kaWFuIHN5c3Rl bXM/Ci0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gU29tZShtYXNrX2ZpcnN0LnRyYWlsaW5n X3plcm9zKCkgYXMgdXNpemUpOwotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg ICRzdG9yZShkc3QuYWRkKFNJTURfU1RSSURFX1NJWkUpLCBzZWNvbmQpOwotICAgICAgICAgICAg ICAgICBsZXQgbWFza19zZWNvbmQgPSBtYXNrX2FzY2lpKHNlY29uZCk7Ci0rICAgICAgICAgICAg ICAgIC8vIFNhZmV0eTogb24gbGl0dGxlIGVuZGlhbiBzeXN0ZW1zIHRoaXMgd2lsbCBiZSB0aGUg bnVtYmVyIG9mIGFzY2lpIGJ5dGVzCi0rICAgICAgICAgICAgICAgIC8vIGJlZm9yZSB0aGUgZmly c3Qgbm9uLWFzY2lpLCBpLmUuIHZhbGlkIGZvciBpbmRleGluZyBzcmMKLSAgICAgICAgICAgICAg ICAgcmV0dXJuIFNvbWUoU0lNRF9TVFJJREVfU0laRSArIG1hc2tfc2Vjb25kLnRyYWlsaW5nX3pl cm9zKCkgYXMgdXNpemUpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAkc3RvcmUoZHN0 LmFkZChTSU1EX1NUUklERV9TSVpFKSwgc2Vjb25kKTsKLSAgICAgICAgICAgICBOb25lCi0gICAg ICAgICB9Ci0gICAgIH07Ci0gfQotIAotICNbYWxsb3codW51c2VkX21hY3JvcyldCi0gbWFjcm9f cnVsZXMhIGFzY2lpX3RvX2Jhc2ljX2xhdGluX3NpbWRfc3RyaWRlIHsKLSsgICAgLy8gU2FmZXR5 OiBsb2FkL3N0b3JlIG11c3QgYmUgdmFsaWQgZm9yIDE2IGJ5dGVzIG9mIHJlYWQvd3JpdGUsIHdo aWNoIG1heSBiZSB1bmFsaWduZWQuIChjYW5kaWRhdGVzOiBgKGxvYWR8c3RvcmUpKDE2fDgpXyh1 bmFsaWduZWR8YWxpZ25lZClgIGZ1bmN0aW9ucykKLSAgICAgKCRuYW1lOmlkZW50LCAkbG9hZDpp ZGVudCwgJHN0b3JlOmlkZW50KSA9PiB7Ci0rICAgICAgICAvLy8gU2FmZXR5OiBzcmMgYW5kIGRz dCBtdXN0IGJlIHZhbGlkIGZvciAxNi8zMiBieXRlcyBvZiByZWFkL3dyaXRlIGFjY29yZGluZyB0 bwotKyAgICAgICAgLy8vIHRoZSAkbG9hZC8kc3RvcmUgZm4sIHdoaWNoIG1heSBhbGxvdyBmb3Ig dW5hbGlnbmVkIHJlYWRzL3dyaXRlcyBvciByZXF1aXJlCi0rICAgICAgICAvLy8gYWxpZ25tZW50 IHRvIGVpdGhlciAxNng4IG9yIHU4eDE2LgotICAgICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KLSAg ICAgICAgIHB1YiB1bnNhZmUgZm4gJG5hbWUoc3JjOiAqY29uc3QgdTgsIGRzdDogKm11dCB1MTYp IC0+IGJvb2wgewotICAgICAgICAgICAgIGxldCBzaW1kID0gJGxvYWQoc3JjKTsKLSAgICAgICAg ICAgICBpZiAhc2ltZF9pc19hc2NpaShzaW1kKSB7Ci0gICAgICAgICAgICAgICAgIHJldHVybiBm YWxzZTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgbGV0IChmaXJzdCwgc2Vjb25kKSA9 IHNpbWRfdW5wYWNrKHNpbWQpOwotICAgICAgICAgICAgICRzdG9yZShkc3QsIGZpcnN0KTsKLSAg ICAgICAgICAgICAkc3RvcmUoZHN0LmFkZCg4KSwgc2Vjb25kKTsKLSAgICAgICAgICAgICB0cnVl Ci0gICAgICAgICB9Ci0gICAgIH07Ci0gfQotIAotICNbYWxsb3codW51c2VkX21hY3JvcyldCi0g bWFjcm9fcnVsZXMhIGFzY2lpX3RvX2Jhc2ljX2xhdGluX3NpbWRfZG91YmxlX3N0cmlkZSB7Ci0r ICAgIC8vIFNhZmV0eTogc3RvcmUgbXVzdCBiZSB2YWxpZCBmb3IgMTYgYnl0ZXMgb2Ygd3JpdGUs IHdoaWNoIG1heSBiZSB1bmFsaWduZWQKLSAgICAgKCRuYW1lOmlkZW50LCAkc3RvcmU6aWRlbnQp ID0+IHsKLSsgICAgICAgIC8vLyBTYWZldHk6IHNyYyBtdXN0IGJlIHZhbGlkIGZvciAyKlNJTURf U1RSSURFX1NJWkUgYnl0ZXMgb2YgYWxpZ25lZCByZWFkcywKLSsgICAgICAgIC8vLyBhbGlnbmVk IHRvIGVpdGhlciAxNng4IG9yIHU4eDE2LgotKyAgICAgICAgLy8vIGRzdCBtdXN0IGJlIHZhbGlk IGZvciAyKlNJTURfU1RSSURFX1NJWkUgYnl0ZXMgb2YgYWxpZ25lZCBvciB1bmFsaWduZWQgcmVh ZHMKLSAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCi0gICAgICAgICBwdWIgdW5zYWZlIGZuICRu YW1lKHNyYzogKmNvbnN0IHU4LCBkc3Q6ICptdXQgdTE2KSAtPiBPcHRpb248dXNpemU+IHsKLSAg ICAgICAgICAgICBsZXQgZmlyc3QgPSBsb2FkMTZfYWxpZ25lZChzcmMpOwotICAgICAgICAgICAg IGxldCBzZWNvbmQgPSBsb2FkMTZfYWxpZ25lZChzcmMuYWRkKFNJTURfU1RSSURFX1NJWkUpKTsK LSAgICAgICAgICAgICBsZXQgKGEsIGIpID0gc2ltZF91bnBhY2soZmlyc3QpOwotICAgICAgICAg ICAgICRzdG9yZShkc3QsIGEpOwotKyAgICAgICAgICAgIC8vIFNhZmV0eTogZGl2aWRlIGJ5IDIg c2luY2UgaXQncyBhIHUxNiBwb2ludGVyCi0gICAgICAgICAgICAgJHN0b3JlKGRzdC5hZGQoU0lN RF9TVFJJREVfU0laRSAvIDIpLCBiKTsKLSAgICAgICAgICAgICBpZiB1bmxpa2VseSghc2ltZF9p c19hc2NpaShmaXJzdCB8IHNlY29uZCkpIHsKLSAgICAgICAgICAgICAgICAgbGV0IG1hc2tfZmly c3QgPSBtYXNrX2FzY2lpKGZpcnN0KTsKLSAgICAgICAgICAgICAgICAgaWYgbWFza19maXJzdCAh PSAwIHsKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTb21lKG1hc2tfZmlyc3QudHJhaWxp bmdfemVyb3MoKSBhcyB1c2l6ZSk7Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg ICAgbGV0IChjLCBkKSA9IHNpbWRfdW5wYWNrKHNlY29uZCk7Ci0gICAgICAgICAgICAgICAgICRz dG9yZShkc3QuYWRkKFNJTURfU1RSSURFX1NJWkUpLCBjKTsKLUBAIC04MzIsNDcgKzEwNTUsNTkg QEAgbWFjcm9fcnVsZXMhIGFzY2lpX3RvX2Jhc2ljX2xhdGluX3NpbWRfZAotICAgICAgICAgICAg ICRzdG9yZShkc3QuYWRkKFNJTURfU1RSSURFX1NJWkUgKyAoU0lNRF9TVFJJREVfU0laRSAvIDIp KSwgZCk7Ci0gICAgICAgICAgICAgTm9uZQotICAgICAgICAgfQotICAgICB9OwotIH0KLSAKLSAj W2FsbG93KHVudXNlZF9tYWNyb3MpXQotIG1hY3JvX3J1bGVzISB1bnBhY2tfc2ltZF9zdHJpZGUg ewotKyAgICAvLyBTYWZldHk6IGxvYWQvc3RvcmUgbXVzdCBiZSB2YWxpZCBmb3IgMTYgYnl0ZXMg b2YgcmVhZC93cml0ZSwgd2hpY2ggbWF5IGJlIHVuYWxpZ25lZC4gKGNhbmRpZGF0ZXM6IGAobG9h ZHxzdG9yZSkoMTZ8OClfKHVuYWxpZ25lZHxhbGlnbmVkKWAgZnVuY3Rpb25zKQotICAgICAoJG5h bWU6aWRlbnQsICRsb2FkOmlkZW50LCAkc3RvcmU6aWRlbnQpID0+IHsKLSsgICAgICAgIC8vLyBT YWZldHk6IHNyYyBhbmQgZHN0IG11c3QgYmUgdmFsaWQgZm9yIDE2IGJ5dGVzIG9mIHJlYWQvd3Jp dGUgYWNjb3JkaW5nIHRvCi0rICAgICAgICAvLy8gdGhlICRsb2FkLyRzdG9yZSBmbiwgd2hpY2gg bWF5IGFsbG93IGZvciB1bmFsaWduZWQgcmVhZHMvd3JpdGVzIG9yIHJlcXVpcmUKLSsgICAgICAg IC8vLyBhbGlnbm1lbnQgdG8gZWl0aGVyIDE2eDggb3IgdTh4MTYuCi0gICAgICAgICAjW2lubGlu ZShhbHdheXMpXQotICAgICAgICAgcHViIHVuc2FmZSBmbiAkbmFtZShzcmM6ICpjb25zdCB1OCwg ZHN0OiAqbXV0IHUxNikgewotICAgICAgICAgICAgIGxldCBzaW1kID0gJGxvYWQoc3JjKTsKLSAg ICAgICAgICAgICBsZXQgKGZpcnN0LCBzZWNvbmQpID0gc2ltZF91bnBhY2soc2ltZCk7Ci0gICAg ICAgICAgICAgJHN0b3JlKGRzdCwgZmlyc3QpOwotICAgICAgICAgICAgICRzdG9yZShkc3QuYWRk KDgpLCBzZWNvbmQpOwotICAgICAgICAgfQotICAgICB9OwotIH0KLSAKLSAjW2FsbG93KHVudXNl ZF9tYWNyb3MpXQotIG1hY3JvX3J1bGVzISBiYXNpY19sYXRpbl90b19hc2NpaV9zaW1kX3N0cmlk ZSB7Ci0rICAgIC8vIFNhZmV0eTogbG9hZC9zdG9yZSBtdXN0IGJlIHZhbGlkIGZvciAxNiBieXRl cyBvZiByZWFkL3dyaXRlLCB3aGljaCBtYXkgYmUgdW5hbGlnbmVkLiAoY2FuZGlkYXRlczogYChs b2FkfHN0b3JlKSgxNnw4KV8odW5hbGlnbmVkfGFsaWduZWQpYCBmdW5jdGlvbnMpCi0gICAgICgk bmFtZTppZGVudCwgJGxvYWQ6aWRlbnQsICRzdG9yZTppZGVudCkgPT4gewotKyAgICAgICAgLy8v IFNhZmV0eTogc3JjIGFuZCBkc3QgbXVzdCBiZSB2YWxpZCBmb3IgMzIvMTYgYnl0ZXMgb2YgcmVh ZC93cml0ZSBhY2NvcmRpbmcgdG8KLSsgICAgICAgIC8vLyB0aGUgJGxvYWQvJHN0b3JlIGZuLCB3 aGljaCBtYXkgYWxsb3cgZm9yIHVuYWxpZ25lZCByZWFkcy93cml0ZXMgb3IgcmVxdWlyZQotKyAg ICAgICAgLy8vIGFsaWdubWVudCB0byBlaXRoZXIgMTZ4OCBvciB1OHgxNi4KLSAgICAgICAgICNb aW5saW5lKGFsd2F5cyldCi0gICAgICAgICBwdWIgdW5zYWZlIGZuICRuYW1lKHNyYzogKmNvbnN0 IHUxNiwgZHN0OiAqbXV0IHU4KSAtPiBib29sIHsKLSAgICAgICAgICAgICBsZXQgZmlyc3QgPSAk bG9hZChzcmMpOwotICAgICAgICAgICAgIGxldCBzZWNvbmQgPSAkbG9hZChzcmMuYWRkKDgpKTsK LSAgICAgICAgICAgICBpZiBzaW1kX2lzX2Jhc2ljX2xhdGluKGZpcnN0IHwgc2Vjb25kKSB7Ci0g ICAgICAgICAgICAgICAgICRzdG9yZShkc3QsIHNpbWRfcGFjayhmaXJzdCwgc2Vjb25kKSk7Ci0g ICAgICAgICAgICAgICAgIHRydWUKLSAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg ICAgICBmYWxzZQotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgfTsKLSB9Ci0gCi0g I1thbGxvdyh1bnVzZWRfbWFjcm9zKV0KLSBtYWNyb19ydWxlcyEgcGFja19zaW1kX3N0cmlkZSB7 Ci0rICAgIC8vIFNhZmV0eTogbG9hZC9zdG9yZSBtdXN0IGJlIHZhbGlkIGZvciAxNiBieXRlcyBv ZiByZWFkL3dyaXRlLCB3aGljaCBtYXkgYmUgdW5hbGlnbmVkLiAoY2FuZGlkYXRlczogYChsb2Fk fHN0b3JlKSgxNnw4KV8odW5hbGlnbmVkfGFsaWduZWQpYCBmdW5jdGlvbnMpCi0gICAgICgkbmFt ZTppZGVudCwgJGxvYWQ6aWRlbnQsICRzdG9yZTppZGVudCkgPT4gewotKyAgICAgICAgLy8vIFNh ZmV0eTogc3JjIGFuZCBkc3QgbXVzdCBiZSB2YWxpZCBmb3IgMzIvMTYgYnl0ZXMgb2YgcmVhZC93 cml0ZSBhY2NvcmRpbmcgdG8KLSsgICAgICAgIC8vLyB0aGUgJGxvYWQvJHN0b3JlIGZuLCB3aGlj aCBtYXkgYWxsb3cgZm9yIHVuYWxpZ25lZCByZWFkcy93cml0ZXMgb3IgcmVxdWlyZQotKyAgICAg ICAgLy8vIGFsaWdubWVudCB0byBlaXRoZXIgMTZ4OCBvciB1OHgxNi4KLSAgICAgICAgICNbaW5s aW5lKGFsd2F5cyldCi0gICAgICAgICBwdWIgdW5zYWZlIGZuICRuYW1lKHNyYzogKmNvbnN0IHUx NiwgZHN0OiAqbXV0IHU4KSB7Ci0gICAgICAgICAgICAgbGV0IGZpcnN0ID0gJGxvYWQoc3JjKTsK LSAgICAgICAgICAgICBsZXQgc2Vjb25kID0gJGxvYWQoc3JjLmFkZCg4KSk7Ci0gICAgICAgICAg ICAgJHN0b3JlKGRzdCwgc2ltZF9wYWNrKGZpcnN0LCBzZWNvbmQpKTsKLSAgICAgICAgIH0KLSAg ICAgfTsKLSB9Ci1AQCAtODg4LDI0ICsxMTIzLDI4IEBAIGNmZ19pZiEgewotIC8vICAgICAgICBw dWIgY29uc3QgQUxJR05NRU5UOiB1c2l6ZSA9IDg7Ci0gCi0gICAgICAgICBwdWIgY29uc3QgQUxV X1NUUklERV9TSVpFOiB1c2l6ZSA9IDE2OwotIAotICAgICAgICAgcHViIGNvbnN0IEFMVV9BTElH Tk1FTlQ6IHVzaXplID0gODsKLSAKLSAgICAgICAgIHB1YiBjb25zdCBBTFVfQUxJR05NRU5UX01B U0s6IHVzaXplID0gNzsKLSAKLSsgICAgICAgIC8vIFNhZmV0eSBmb3Igc3RyaWRlIG1hY3Jvczog V2Ugc3RpY2sgdG8gdGhlIGxvYWQ4X2FsaWduZWQvZXRjIGZhbWlseSBvZiBmdW5jdGlvbnMuIFdl IGNvbnNpc3RlbnRseSBwcm9kdWNlCi0rICAgICAgICAvLyBuZWl0aGVyX3VuYWxpZ25lZCB2YXJp YW50cyB1c2luZyBvbmx5IHVuYWxpZ25lZCBpbnB1dHMuCi0gICAgICAgICBhc2NpaV90b19hc2Np aV9zaW1kX3N0cmlkZSEoYXNjaWlfdG9fYXNjaWlfc3RyaWRlX25laXRoZXJfYWxpZ25lZCwgbG9h ZDE2X3VuYWxpZ25lZCwgc3RvcmUxNl91bmFsaWduZWQpOwotIAotICAgICAgICAgYXNjaWlfdG9f YmFzaWNfbGF0aW5fc2ltZF9zdHJpZGUhKGFzY2lpX3RvX2Jhc2ljX2xhdGluX3N0cmlkZV9uZWl0 aGVyX2FsaWduZWQsIGxvYWQxNl91bmFsaWduZWQsIHN0b3JlOF91bmFsaWduZWQpOwotICAgICAg ICAgdW5wYWNrX3NpbWRfc3RyaWRlISh1bnBhY2tfc3RyaWRlX25laXRoZXJfYWxpZ25lZCwgbG9h ZDE2X3VuYWxpZ25lZCwgc3RvcmU4X3VuYWxpZ25lZCk7Ci0gCi0gICAgICAgICBiYXNpY19sYXRp bl90b19hc2NpaV9zaW1kX3N0cmlkZSEoYmFzaWNfbGF0aW5fdG9fYXNjaWlfc3RyaWRlX25laXRo ZXJfYWxpZ25lZCwgbG9hZDhfdW5hbGlnbmVkLCBzdG9yZTE2X3VuYWxpZ25lZCk7Ci0gICAgICAg ICBwYWNrX3NpbWRfc3RyaWRlIShwYWNrX3N0cmlkZV9uZWl0aGVyX2FsaWduZWQsIGxvYWQ4X3Vu YWxpZ25lZCwgc3RvcmUxNl91bmFsaWduZWQpOwotIAotKyAgICAgICAgLy8gU2FmZXR5IGZvciBj b252ZXJzaW9uIG1hY3JvczogV2UgdXNlIHRoZSB1bmFsaWduIG1hY3JvIHdpdGggdW5hbGlnbiBm dW5jdGlvbnMgYWJvdmUuIEFsbCBzdHJpZGUgZnVuY3Rpb25zIHdlcmUgcHJvZHVjZWQKLSsgICAg ICAgIC8vIGJ5IHN0cmlkZSBtYWNyb3MgdGhhdCB1bml2ZXJzYWxseSBtdW5jaCBhIHNpbmdsZSBT SU1EX1NUUklERV9TSVpFIHdvcnRoIG9mIGVsZW1lbnRzLgotICAgICAgICAgYXNjaWlfc2ltZF91 bmFsaWduIShhc2NpaV90b19hc2NpaSwgdTgsIHU4LCBhc2NpaV90b19hc2NpaV9zdHJpZGVfbmVp dGhlcl9hbGlnbmVkKTsKLSAgICAgICAgIGFzY2lpX3NpbWRfdW5hbGlnbiEoYXNjaWlfdG9fYmFz aWNfbGF0aW4sIHU4LCB1MTYsIGFzY2lpX3RvX2Jhc2ljX2xhdGluX3N0cmlkZV9uZWl0aGVyX2Fs aWduZWQpOwotICAgICAgICAgYXNjaWlfc2ltZF91bmFsaWduIShiYXNpY19sYXRpbl90b19hc2Np aSwgdTE2LCB1OCwgYmFzaWNfbGF0aW5fdG9fYXNjaWlfc3RyaWRlX25laXRoZXJfYWxpZ25lZCk7 Ci0gICAgICAgICBsYXRpbjFfc2ltZF91bmFsaWduISh1bnBhY2tfbGF0aW4xLCB1OCwgdTE2LCB1 bnBhY2tfc3RyaWRlX25laXRoZXJfYWxpZ25lZCk7Ci0gICAgICAgICBsYXRpbjFfc2ltZF91bmFs aWduIShwYWNrX2xhdGluMSwgdTE2LCB1OCwgcGFja19zdHJpZGVfbmVpdGhlcl9hbGlnbmVkKTsK LSAgICAgfSBlbHNlIGlmICNbY2ZnKGFsbChmZWF0dXJlID0gInNpbWQtYWNjZWwiLCB0YXJnZXRf ZW5kaWFuID0gImxpdHRsZSIsIHRhcmdldF9mZWF0dXJlID0gIm5lb24iKSldIHsKLSAgICAgICAg IC8vIFNJTUQgd2l0aCBkaWZmZXJlbnQgaW5zdHJ1Y3Rpb25zIGZvciBhbGlnbmVkIGFuZCB1bmFs aWduZWQgbG9hZHMgYW5kIHN0b3Jlcy4KLSAgICAgICAgIC8vCi1AQCAtOTE0LDE2ICsxMTUzLDE5 IEBAIGNmZ19pZiEgewotICAgICAgICAgLy8gYnV0IHRoZSBiZW5jaG1hcmsgcmVzdWx0cyBJIHNl ZSBkb24ndCBhZ3JlZS4KLSAKLSAgICAgICAgIHB1YiBjb25zdCBTSU1EX1NUUklERV9TSVpFOiB1 c2l6ZSA9IDE2OwotIAotICAgICAgICAgcHViIGNvbnN0IE1BWF9TVFJJREVfU0laRTogdXNpemUg PSAxNjsKLSAKLSAgICAgICAgIHB1YiBjb25zdCBTSU1EX0FMSUdOTUVOVF9NQVNLOiB1c2l6ZSA9 IDE1OwotIAotKyAgICAgICAgLy8gU2FmZXR5IGZvciBzdHJpZGUgbWFjcm9zOiBXZSBzdGljayB0 byB0aGUgbG9hZDhfYWxpZ25lZC9ldGMgZmFtaWx5IG9mIGZ1bmN0aW9ucy4gV2UgY29uc2lzdGVu dGx5IG5hbWUKLSsgICAgICAgIC8vIGFsaWduZWQvdW5hbGlnbmVkIGZ1bmN0aW9ucyBhY2NvcmRp bmcgdG8gc3JjL2RzdCBiZWluZyBhbGlnbmVkL3VuYWxpZ25lZAotKwotICAgICAgICAgYXNjaWlf dG9fYXNjaWlfc2ltZF9zdHJpZGUhKGFzY2lpX3RvX2FzY2lpX3N0cmlkZV9ib3RoX2FsaWduZWQs IGxvYWQxNl9hbGlnbmVkLCBzdG9yZTE2X2FsaWduZWQpOwotICAgICAgICAgYXNjaWlfdG9fYXNj aWlfc2ltZF9zdHJpZGUhKGFzY2lpX3RvX2FzY2lpX3N0cmlkZV9zcmNfYWxpZ25lZCwgbG9hZDE2 X2FsaWduZWQsIHN0b3JlMTZfdW5hbGlnbmVkKTsKLSAgICAgICAgIGFzY2lpX3RvX2FzY2lpX3Np bWRfc3RyaWRlIShhc2NpaV90b19hc2NpaV9zdHJpZGVfZHN0X2FsaWduZWQsIGxvYWQxNl91bmFs aWduZWQsIHN0b3JlMTZfYWxpZ25lZCk7Ci0gICAgICAgICBhc2NpaV90b19hc2NpaV9zaW1kX3N0 cmlkZSEoYXNjaWlfdG9fYXNjaWlfc3RyaWRlX25laXRoZXJfYWxpZ25lZCwgbG9hZDE2X3VuYWxp Z25lZCwgc3RvcmUxNl91bmFsaWduZWQpOwotIAotICAgICAgICAgYXNjaWlfdG9fYmFzaWNfbGF0 aW5fc2ltZF9zdHJpZGUhKGFzY2lpX3RvX2Jhc2ljX2xhdGluX3N0cmlkZV9ib3RoX2FsaWduZWQs IGxvYWQxNl9hbGlnbmVkLCBzdG9yZThfYWxpZ25lZCk7Ci0gICAgICAgICBhc2NpaV90b19iYXNp Y19sYXRpbl9zaW1kX3N0cmlkZSEoYXNjaWlfdG9fYmFzaWNfbGF0aW5fc3RyaWRlX3NyY19hbGln bmVkLCBsb2FkMTZfYWxpZ25lZCwgc3RvcmU4X3VuYWxpZ25lZCk7Ci0gICAgICAgICBhc2NpaV90 b19iYXNpY19sYXRpbl9zaW1kX3N0cmlkZSEoYXNjaWlfdG9fYmFzaWNfbGF0aW5fc3RyaWRlX2Rz dF9hbGlnbmVkLCBsb2FkMTZfdW5hbGlnbmVkLCBzdG9yZThfYWxpZ25lZCk7Ci1AQCAtOTM5LDM2 ICsxMTgxLDQzIEBAIGNmZ19pZiEgewotICAgICAgICAgYmFzaWNfbGF0aW5fdG9fYXNjaWlfc2lt ZF9zdHJpZGUhKGJhc2ljX2xhdGluX3RvX2FzY2lpX3N0cmlkZV9kc3RfYWxpZ25lZCwgbG9hZDhf dW5hbGlnbmVkLCBzdG9yZTE2X2FsaWduZWQpOwotICAgICAgICAgYmFzaWNfbGF0aW5fdG9fYXNj aWlfc2ltZF9zdHJpZGUhKGJhc2ljX2xhdGluX3RvX2FzY2lpX3N0cmlkZV9uZWl0aGVyX2FsaWdu ZWQsIGxvYWQ4X3VuYWxpZ25lZCwgc3RvcmUxNl91bmFsaWduZWQpOwotIAotICAgICAgICAgcGFj a19zaW1kX3N0cmlkZSEocGFja19zdHJpZGVfYm90aF9hbGlnbmVkLCBsb2FkOF9hbGlnbmVkLCBz dG9yZTE2X2FsaWduZWQpOwotICAgICAgICAgcGFja19zaW1kX3N0cmlkZSEocGFja19zdHJpZGVf c3JjX2FsaWduZWQsIGxvYWQ4X2FsaWduZWQsIHN0b3JlMTZfdW5hbGlnbmVkKTsKLSAgICAgICAg IHBhY2tfc2ltZF9zdHJpZGUhKHBhY2tfc3RyaWRlX2RzdF9hbGlnbmVkLCBsb2FkOF91bmFsaWdu ZWQsIHN0b3JlMTZfYWxpZ25lZCk7Ci0gICAgICAgICBwYWNrX3NpbWRfc3RyaWRlIShwYWNrX3N0 cmlkZV9uZWl0aGVyX2FsaWduZWQsIGxvYWQ4X3VuYWxpZ25lZCwgc3RvcmUxNl91bmFsaWduZWQp OwotIAotKyAgICAgICAgLy8gU2FmZXR5IGZvciBjb252ZXJzaW9uIG1hY3JvczogV2UgdXNlIHRo ZSBjb3JyZWN0IHBhdHRlcm4gb2YgYm90aC9zcmMvZHN0L25laXRoZXIgaGVyZS4gQWxsIHN0cmlk ZSBmdW5jdGlvbnMgd2VyZSBwcm9kdWNlZAotKyAgICAgICAgLy8gYnkgc3RyaWRlIG1hY3JvcyB0 aGF0IHVuaXZlcnNhbGx5IG11bmNoIGEgc2luZ2xlIFNJTURfU1RSSURFX1NJWkUgd29ydGggb2Yg ZWxlbWVudHMuCi0rCi0gICAgICAgICBhc2NpaV9zaW1kX2NoZWNrX2FsaWduIShhc2NpaV90b19h c2NpaSwgdTgsIHU4LCBhc2NpaV90b19hc2NpaV9zdHJpZGVfYm90aF9hbGlnbmVkLCBhc2NpaV90 b19hc2NpaV9zdHJpZGVfc3JjX2FsaWduZWQsIGFzY2lpX3RvX2FzY2lpX3N0cmlkZV9kc3RfYWxp Z25lZCwgYXNjaWlfdG9fYXNjaWlfc3RyaWRlX25laXRoZXJfYWxpZ25lZCk7Ci0gICAgICAgICBh c2NpaV9zaW1kX2NoZWNrX2FsaWduIShhc2NpaV90b19iYXNpY19sYXRpbiwgdTgsIHUxNiwgYXNj aWlfdG9fYmFzaWNfbGF0aW5fc3RyaWRlX2JvdGhfYWxpZ25lZCwgYXNjaWlfdG9fYmFzaWNfbGF0 aW5fc3RyaWRlX3NyY19hbGlnbmVkLCBhc2NpaV90b19iYXNpY19sYXRpbl9zdHJpZGVfZHN0X2Fs aWduZWQsIGFzY2lpX3RvX2Jhc2ljX2xhdGluX3N0cmlkZV9uZWl0aGVyX2FsaWduZWQpOwotICAg ICAgICAgYXNjaWlfc2ltZF9jaGVja19hbGlnbiEoYmFzaWNfbGF0aW5fdG9fYXNjaWksIHUxNiwg dTgsIGJhc2ljX2xhdGluX3RvX2FzY2lpX3N0cmlkZV9ib3RoX2FsaWduZWQsIGJhc2ljX2xhdGlu X3RvX2FzY2lpX3N0cmlkZV9zcmNfYWxpZ25lZCwgYmFzaWNfbGF0aW5fdG9fYXNjaWlfc3RyaWRl X2RzdF9hbGlnbmVkLCBiYXNpY19sYXRpbl90b19hc2NpaV9zdHJpZGVfbmVpdGhlcl9hbGlnbmVk KTsKLSAgICAgICAgIGxhdGluMV9zaW1kX2NoZWNrX2FsaWduISh1bnBhY2tfbGF0aW4xLCB1OCwg dTE2LCB1bnBhY2tfc3RyaWRlX2JvdGhfYWxpZ25lZCwgdW5wYWNrX3N0cmlkZV9zcmNfYWxpZ25l ZCwgdW5wYWNrX3N0cmlkZV9kc3RfYWxpZ25lZCwgdW5wYWNrX3N0cmlkZV9uZWl0aGVyX2FsaWdu ZWQpOwotICAgICAgICAgbGF0aW4xX3NpbWRfY2hlY2tfYWxpZ24hKHBhY2tfbGF0aW4xLCB1MTYs IHU4LCBwYWNrX3N0cmlkZV9ib3RoX2FsaWduZWQsIHBhY2tfc3RyaWRlX3NyY19hbGlnbmVkLCBw YWNrX3N0cmlkZV9kc3RfYWxpZ25lZCwgcGFja19zdHJpZGVfbmVpdGhlcl9hbGlnbmVkKTsKLSAg ICAgfSBlbHNlIGlmICNbY2ZnKGFsbChmZWF0dXJlID0gInNpbWQtYWNjZWwiLCB0YXJnZXRfZmVh dHVyZSA9ICJzc2UyIikpXSB7Ci0gICAgICAgICAvLyBTSU1EIHdpdGggZGlmZmVyZW50IGluc3Ry dWN0aW9ucyBmb3IgYWxpZ25lZCBhbmQgdW5hbGlnbmVkIGxvYWRzIGFuZCBzdG9yZXMuCi0gICAg ICAgICAvLwotICAgICAgICAgLy8gTmV3ZXIgbWljcm9hcmNoaXRlY3R1cmVzIGFyZSBub3Qgc3Vw cG9zZWQgdG8gaGF2ZSBhIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2UgYmV0d2VlbgotICAgICAgICAg Ly8gYWxpZ25lZCBhbmQgdW5hbGlnbmVkIFNTRTIgbG9hZHMgYW5kIHN0b3JlcyB3aGVuIHRoZSBh ZGRyZXNzIGlzIGFjdHVhbGx5IGFsaWduZWQsCi0gICAgICAgICAvLyBidXQgdGhlIGJlbmNobWFy ayByZXN1bHRzIEkgc2VlIGRvbid0IGFncmVlLgotIAotICAgICAgICAgcHViIGNvbnN0IFNJTURf U1RSSURFX1NJWkU6IHVzaXplID0gMTY7Ci0gCi0rICAgICAgICAvLy8gU2FmZXR5LXVzYWJsZSBp bnZhcmlhbnQ6IFRoaXMgc2hvdWxkIGJlIGlkZW50aWNhbCB0byBTSU1EX1NUUklERV9TSVpFICh1 c2VkIGJ5IGFzY2lpX3NpbWRfY2hlY2tfYWxpZ25fdW5yb2xsZWQpCi0gICAgICAgICBwdWIgY29u c3QgU0lNRF9BTElHTk1FTlQ6IHVzaXplID0gMTY7Ci0gCi0gICAgICAgICBwdWIgY29uc3QgTUFY X1NUUklERV9TSVpFOiB1c2l6ZSA9IDE2OwotIAotICAgICAgICAgcHViIGNvbnN0IFNJTURfQUxJ R05NRU5UX01BU0s6IHVzaXplID0gMTU7Ci0gCi0rICAgICAgICAvLyBTYWZldHkgZm9yIHN0cmlk ZSBtYWNyb3M6IFdlIHN0aWNrIHRvIHRoZSBsb2FkOF9hbGlnbmVkL2V0YyBmYW1pbHkgb2YgZnVu Y3Rpb25zLiBXZSBjb25zaXN0ZW50bHkgbmFtZQotKyAgICAgICAgLy8gYWxpZ25lZC91bmFsaWdu ZWQgZnVuY3Rpb25zIGFjY29yZGluZyB0byBzcmMvZHN0IGJlaW5nIGFsaWduZWQvdW5hbGlnbmVk Ci0rCi0gICAgICAgICBhc2NpaV90b19hc2NpaV9zaW1kX2RvdWJsZV9zdHJpZGUhKGFzY2lpX3Rv X2FzY2lpX3NpbWRfZG91YmxlX3N0cmlkZV9ib3RoX2FsaWduZWQsIHN0b3JlMTZfYWxpZ25lZCk7 Ci0gICAgICAgICBhc2NpaV90b19hc2NpaV9zaW1kX2RvdWJsZV9zdHJpZGUhKGFzY2lpX3RvX2Fz Y2lpX3NpbWRfZG91YmxlX3N0cmlkZV9zcmNfYWxpZ25lZCwgc3RvcmUxNl91bmFsaWduZWQpOwot IAotICAgICAgICAgYXNjaWlfdG9fYmFzaWNfbGF0aW5fc2ltZF9kb3VibGVfc3RyaWRlIShhc2Np aV90b19iYXNpY19sYXRpbl9zaW1kX2RvdWJsZV9zdHJpZGVfYm90aF9hbGlnbmVkLCBzdG9yZThf YWxpZ25lZCk7Ci0gICAgICAgICBhc2NpaV90b19iYXNpY19sYXRpbl9zaW1kX2RvdWJsZV9zdHJp ZGUhKGFzY2lpX3RvX2Jhc2ljX2xhdGluX3NpbWRfZG91YmxlX3N0cmlkZV9zcmNfYWxpZ25lZCwg c3RvcmU4X3VuYWxpZ25lZCk7Ci0gCi0gICAgICAgICBhc2NpaV90b19hc2NpaV9zaW1kX3N0cmlk ZSEoYXNjaWlfdG9fYXNjaWlfc3RyaWRlX2JvdGhfYWxpZ25lZCwgbG9hZDE2X2FsaWduZWQsIHN0 b3JlMTZfYWxpZ25lZCk7Ci0gICAgICAgICBhc2NpaV90b19hc2NpaV9zaW1kX3N0cmlkZSEoYXNj aWlfdG9fYXNjaWlfc3RyaWRlX3NyY19hbGlnbmVkLCBsb2FkMTZfYWxpZ25lZCwgc3RvcmUxNl91 bmFsaWduZWQpOwotQEAgLTk4NCwzMyArMTIzMyw0MyBAQCBjZmdfaWYhIHsKLSAgICAgICAgIGJh c2ljX2xhdGluX3RvX2FzY2lpX3NpbWRfc3RyaWRlIShiYXNpY19sYXRpbl90b19hc2NpaV9zdHJp ZGVfYm90aF9hbGlnbmVkLCBsb2FkOF9hbGlnbmVkLCBzdG9yZTE2X2FsaWduZWQpOwotICAgICAg ICAgYmFzaWNfbGF0aW5fdG9fYXNjaWlfc2ltZF9zdHJpZGUhKGJhc2ljX2xhdGluX3RvX2FzY2lp X3N0cmlkZV9zcmNfYWxpZ25lZCwgbG9hZDhfYWxpZ25lZCwgc3RvcmUxNl91bmFsaWduZWQpOwot ICAgICAgICAgYmFzaWNfbGF0aW5fdG9fYXNjaWlfc2ltZF9zdHJpZGUhKGJhc2ljX2xhdGluX3Rv X2FzY2lpX3N0cmlkZV9kc3RfYWxpZ25lZCwgbG9hZDhfdW5hbGlnbmVkLCBzdG9yZTE2X2FsaWdu ZWQpOwotICAgICAgICAgYmFzaWNfbGF0aW5fdG9fYXNjaWlfc2ltZF9zdHJpZGUhKGJhc2ljX2xh dGluX3RvX2FzY2lpX3N0cmlkZV9uZWl0aGVyX2FsaWduZWQsIGxvYWQ4X3VuYWxpZ25lZCwgc3Rv cmUxNl91bmFsaWduZWQpOwotIAotICAgICAgICAgcGFja19zaW1kX3N0cmlkZSEocGFja19zdHJp ZGVfYm90aF9hbGlnbmVkLCBsb2FkOF9hbGlnbmVkLCBzdG9yZTE2X2FsaWduZWQpOwotICAgICAg ICAgcGFja19zaW1kX3N0cmlkZSEocGFja19zdHJpZGVfc3JjX2FsaWduZWQsIGxvYWQ4X2FsaWdu ZWQsIHN0b3JlMTZfdW5hbGlnbmVkKTsKLSAKLSsgICAgICAgIC8vIFNhZmV0eSBmb3IgY29udmVy c2lvbiBtYWNyb3M6IFdlIHVzZSB0aGUgY29ycmVjdCBwYXR0ZXJuIG9mIGJvdGgvc3JjL2RzdC9u ZWl0aGVyL2RvdWJsZV9ib3RoL2RvdWJsZV9zcmMgaGVyZS4gQWxsIHN0cmlkZSBmdW5jdGlvbnMg d2VyZSBwcm9kdWNlZAotKyAgICAgICAgLy8gYnkgc3RyaWRlIG1hY3JvcyB0aGF0IHVuaXZlcnNh bGx5IG11bmNoIGEgc2luZ2xlIFNJTURfU1RSSURFX1NJWkUgd29ydGggb2YgZWxlbWVudHMuCi0r Ci0gICAgICAgICBhc2NpaV9zaW1kX2NoZWNrX2FsaWduX3Vucm9sbGVkIShhc2NpaV90b19hc2Np aSwgdTgsIHU4LCBhc2NpaV90b19hc2NpaV9zdHJpZGVfYm90aF9hbGlnbmVkLCBhc2NpaV90b19h c2NpaV9zdHJpZGVfc3JjX2FsaWduZWQsIGFzY2lpX3RvX2FzY2lpX3N0cmlkZV9uZWl0aGVyX2Fs aWduZWQsIGFzY2lpX3RvX2FzY2lpX3NpbWRfZG91YmxlX3N0cmlkZV9ib3RoX2FsaWduZWQsIGFz Y2lpX3RvX2FzY2lpX3NpbWRfZG91YmxlX3N0cmlkZV9zcmNfYWxpZ25lZCk7Ci0gICAgICAgICBh c2NpaV9zaW1kX2NoZWNrX2FsaWduX3Vucm9sbGVkIShhc2NpaV90b19iYXNpY19sYXRpbiwgdTgs IHUxNiwgYXNjaWlfdG9fYmFzaWNfbGF0aW5fc3RyaWRlX2JvdGhfYWxpZ25lZCwgYXNjaWlfdG9f YmFzaWNfbGF0aW5fc3RyaWRlX3NyY19hbGlnbmVkLCBhc2NpaV90b19iYXNpY19sYXRpbl9zdHJp ZGVfbmVpdGhlcl9hbGlnbmVkLCBhc2NpaV90b19iYXNpY19sYXRpbl9zaW1kX2RvdWJsZV9zdHJp ZGVfYm90aF9hbGlnbmVkLCBhc2NpaV90b19iYXNpY19sYXRpbl9zaW1kX2RvdWJsZV9zdHJpZGVf c3JjX2FsaWduZWQpOwotIAotICAgICAgICAgYXNjaWlfc2ltZF9jaGVja19hbGlnbiEoYmFzaWNf bGF0aW5fdG9fYXNjaWksIHUxNiwgdTgsIGJhc2ljX2xhdGluX3RvX2FzY2lpX3N0cmlkZV9ib3Ro X2FsaWduZWQsIGJhc2ljX2xhdGluX3RvX2FzY2lpX3N0cmlkZV9zcmNfYWxpZ25lZCwgYmFzaWNf bGF0aW5fdG9fYXNjaWlfc3RyaWRlX2RzdF9hbGlnbmVkLCBiYXNpY19sYXRpbl90b19hc2NpaV9z dHJpZGVfbmVpdGhlcl9hbGlnbmVkKTsKLSAgICAgICAgIGxhdGluMV9zaW1kX2NoZWNrX2FsaWdu X3Vucm9sbGVkISh1bnBhY2tfbGF0aW4xLCB1OCwgdTE2LCB1bnBhY2tfc3RyaWRlX2JvdGhfYWxp Z25lZCwgdW5wYWNrX3N0cmlkZV9zcmNfYWxpZ25lZCwgdW5wYWNrX3N0cmlkZV9kc3RfYWxpZ25l ZCwgdW5wYWNrX3N0cmlkZV9uZWl0aGVyX2FsaWduZWQpOwotICAgICAgICAgbGF0aW4xX3NpbWRf Y2hlY2tfYWxpZ25fdW5yb2xsZWQhKHBhY2tfbGF0aW4xLCB1MTYsIHU4LCBwYWNrX3N0cmlkZV9i b3RoX2FsaWduZWQsIHBhY2tfc3RyaWRlX3NyY19hbGlnbmVkLCBwYWNrX3N0cmlkZV9kc3RfYWxp Z25lZCwgcGFja19zdHJpZGVfbmVpdGhlcl9hbGlnbmVkKTsKLSAgICAgfSBlbHNlIGlmICNbY2Zn KGFsbCh0YXJnZXRfZW5kaWFuID0gImxpdHRsZSIsIHRhcmdldF9wb2ludGVyX3dpZHRoID0gIjY0 IikpXSB7Ci0gICAgICAgICAvLyBBbGlnbmVkIEFMVSB3b3JkLCBsaXR0bGUtZW5kaWFuLCA2NC1i aXQKLSAKLSsgICAgICAgIC8vLyBTYWZldHkgaW52YXJpYW50OiB0aGlzIGlzIHRoZSBhbW91bnQg b2YgYnl0ZXMgY29uc3VtZWQgYnkKLSsgICAgICAgIC8vLyB1bnBhY2tfYWx1LiBUaGlzIHdpbGwg YmUgdHdpY2UgdGhlIHBvaW50ZXIgd2lkdGgsIGFzIGl0IGNvbnN1bWVzIHR3byB1c2l6ZXMuCi0r ICAgICAgICAvLy8gVGhpcyBpcyBhbHNvIHRoZSBudW1iZXIgb2YgYnl0ZXMgcHJvZHVjZWQgYnkg cGFja19hbHUuCi0rICAgICAgICAvLy8gVGhpcyBpcyBhbHNvIHRoZSBudW1iZXIgb2YgdTE2IGNv ZGUgdW5pdHMgcHJvZHVjZWQvY29uc3VtZWQgYnkgdW5wYWNrX2FsdS9wYWNrX2FsdSByZXNwZWN0 aXZlbHkuCi0gICAgICAgICBwdWIgY29uc3QgQUxVX1NUUklERV9TSVpFOiB1c2l6ZSA9IDE2Owot IAotICAgICAgICAgcHViIGNvbnN0IE1BWF9TVFJJREVfU0laRTogdXNpemUgPSAxNjsKLSAKLSsg ICAgICAgIC8vIFNhZmV0eSBpbnZhcmlhbnQ6IHRoaXMgaXMgdGhlIHBvaW50ZXIgd2lkdGggaW4g Ynl0ZXMKLSAgICAgICAgIHB1YiBjb25zdCBBTFVfQUxJR05NRU5UOiB1c2l6ZSA9IDg7Ci0gCi0r ICAgICAgICAvLyBTYWZldHkgaW52YXJpYW50OiB0aGlzIGlzIGEgbWFzayBmb3IgZ2V0dGluZyB0 aGUgYml0cyBvZiBhIHBvaW50ZXIgbm90IGFsaWduZWQgdG8gQUxVX0FMSUdOTUVOVAotICAgICAg ICAgcHViIGNvbnN0IEFMVV9BTElHTk1FTlRfTUFTSzogdXNpemUgPSA3OwotIAotKyAgICAgICAg Ly8vIFNhZmV0eTogZHN0IG11c3QgcG9pbnQgdG8gdmFsaWQgc3BhY2UgZm9yIHdyaXRpbmcgZm91 ciBgdXNpemVgcwotICAgICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KLSAgICAgICAgIHVuc2FmZSBm biB1bnBhY2tfYWx1KHdvcmQ6IHVzaXplLCBzZWNvbmRfd29yZDogdXNpemUsIGRzdDogKm11dCB1 c2l6ZSkgewotICAgICAgICAgICAgIGxldCBmaXJzdCA9ICgoMHgwMDAwXzAwMDBfRkYwMF8wMDAw dXNpemUgJiB3b3JkKSA8PCAyNCkgfAotICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAw XzAwMDBfMDBGRl8wMDAwdXNpemUgJiB3b3JkKSA8PCAxNikgfAotICAgICAgICAgICAgICAgICAg ICAgICAgICgoMHgwMDAwXzAwMDBfMDAwMF9GRjAwdXNpemUgJiB3b3JkKSA8PCA4KSB8Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgKDB4MDAwMF8wMDAwXzAwMDBfMDBGRnVzaXplICYgd29yZCk7 Ci0gICAgICAgICAgICAgbGV0IHNlY29uZCA9ICgoMHhGRjAwXzAwMDBfMDAwMF8wMDAwdXNpemUg JiB3b3JkKSA+PiA4KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMEZGXzAwMDBf MDAwMF8wMDAwdXNpemUgJiB3b3JkKSA+PiAxNikgfAotQEAgLTEwMTksMjIgKzEyNzgsMjQgQEAg Y2ZnX2lmISB7Ci0gICAgICAgICAgICAgbGV0IHRoaXJkID0gKCgweDAwMDBfMDAwMF9GRjAwXzAw MDB1c2l6ZSAmIHNlY29uZF93b3JkKSA8PCAyNCkgfAotICAgICAgICAgICAgICAgICAgICAgICAg ICgoMHgwMDAwXzAwMDBfMDBGRl8wMDAwdXNpemUgJiBzZWNvbmRfd29yZCkgPDwgMTYpIHwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDAwMF8wMDAwXzAwMDBfRkYwMHVzaXplICYgc2Vj b25kX3dvcmQpIDw8IDgpIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoMHgwMDAwXzAwMDBf MDAwMF8wMEZGdXNpemUgJiBzZWNvbmRfd29yZCk7Ci0gICAgICAgICAgICAgbGV0IGZvdXJ0aCA9 ICgoMHhGRjAwXzAwMDBfMDAwMF8wMDAwdXNpemUgJiBzZWNvbmRfd29yZCkgPj4gOCkgfAotICAg ICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDBGRl8wMDAwXzAwMDBfMDAwMHVzaXplICYgc2Vj b25kX3dvcmQpID4+IDE2KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAwX0ZG MDBfMDAwMF8wMDAwdXNpemUgJiBzZWNvbmRfd29yZCkgPj4gMjQpIHwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgKCgweDAwMDBfMDBGRl8wMDAwXzAwMDB1c2l6ZSAmIHNlY29uZF93b3JkKSA+ PiAzMik7Ci0rICAgICAgICAgICAgLy8gU2FmZXR5OiBmbiBpbnZhcmlhbnQgdXNlZCBoZXJlCi0g ICAgICAgICAgICAgKmRzdCA9IGZpcnN0OwotICAgICAgICAgICAgICooZHN0LmFkZCgxKSkgPSBz ZWNvbmQ7Ci0gICAgICAgICAgICAgKihkc3QuYWRkKDIpKSA9IHRoaXJkOwotICAgICAgICAgICAg ICooZHN0LmFkZCgzKSkgPSBmb3VydGg7Ci0gICAgICAgICB9Ci0gCi0rICAgICAgICAvLy8gU2Fm ZXR5OiBkc3QgbXVzdCBwb2ludCB0byB2YWxpZCBzcGFjZSBmb3Igd3JpdGluZyB0d28gYHVzaXpl YHMKLSAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCi0gICAgICAgICB1bnNhZmUgZm4gcGFja19h bHUoZmlyc3Q6IHVzaXplLCBzZWNvbmQ6IHVzaXplLCB0aGlyZDogdXNpemUsIGZvdXJ0aDogdXNp emUsIGRzdDogKm11dCB1c2l6ZSkgewotICAgICAgICAgICAgIGxldCB3b3JkID0gKCgweDAwRkZf MDAwMF8wMDAwXzAwMDB1c2l6ZSAmIHNlY29uZCkgPDwgOCkgfAotICAgICAgICAgICAgICAgICAg ICAgICAgKCgweDAwMDBfMDBGRl8wMDAwXzAwMDB1c2l6ZSAmIHNlY29uZCkgPDwgMTYpIHwKLSAg ICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAwXzAwMDBfMDBGRl8wMDAwdXNpemUgJiBzZWNv bmQpIDw8IDI0KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDAwMF8wMDAwXzAwMDBf MDBGRnVzaXplICYgc2Vjb25kKSA8PCAzMikgfAotICAgICAgICAgICAgICAgICAgICAgICAgKCgw eDAwRkZfMDAwMF8wMDAwXzAwMDB1c2l6ZSAmIGZpcnN0KSA+PiAyNCkgfAotICAgICAgICAgICAg ICAgICAgICAgICAgKCgweDAwMDBfMDBGRl8wMDAwXzAwMDB1c2l6ZSAmIGZpcnN0KSA+PiAxNikg fAotQEAgLTEwNDMsNzAgKzEzMDQsODggQEAgY2ZnX2lmISB7Ci0gICAgICAgICAgICAgbGV0IHNl Y29uZF93b3JkID0gKCgweDAwRkZfMDAwMF8wMDAwXzAwMDB1c2l6ZSAmIGZvdXJ0aCkgPDwgOCkg fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAwXzAwRkZfMDAwMF8wMDAw dXNpemUgJiBmb3VydGgpIDw8IDE2KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KCgweDAwMDBfMDAwMF8wMEZGXzAwMDB1c2l6ZSAmIGZvdXJ0aCkgPDwgMjQpIHwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDAwMF8wMDAwXzAwMDBfMDBGRnVzaXplICYgZm91 cnRoKSA8PCAzMikgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMEZGXzAw MDBfMDAwMF8wMDAwdXNpemUgJiB0aGlyZCkgPj4gMjQpIHwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoKDB4MDAwMF8wMEZGXzAwMDBfMDAwMHVzaXplICYgdGhpcmQpID4+IDE2KSB8 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgweDAwMDBfMDAwMF8wMEZGXzAwMDB1 c2l6ZSAmIHRoaXJkKSA+PiA4KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4 MDAwMF8wMDAwXzAwMDBfMDBGRnVzaXplICYgdGhpcmQpOwotKyAgICAgICAgICAgIC8vIFNhZmV0 eTogZm4gaW52YXJpYW50IHVzZWQgaGVyZQotICAgICAgICAgICAgICpkc3QgPSB3b3JkOwotICAg ICAgICAgICAgICooZHN0LmFkZCgxKSkgPSBzZWNvbmRfd29yZDsKLSAgICAgICAgIH0KLSAgICAg fSBlbHNlIGlmICNbY2ZnKGFsbCh0YXJnZXRfZW5kaWFuID0gImxpdHRsZSIsIHRhcmdldF9wb2lu dGVyX3dpZHRoID0gIjMyIikpXSB7Ci0gICAgICAgICAvLyBBbGlnbmVkIEFMVSB3b3JkLCBsaXR0 bGUtZW5kaWFuLCAzMi1iaXQKLSAKLSsgICAgICAgIC8vLyBTYWZldHkgaW52YXJpYW50OiB0aGlz IGlzIHRoZSBhbW91bnQgb2YgYnl0ZXMgY29uc3VtZWQgYnkKLSsgICAgICAgIC8vLyB1bnBhY2tf YWx1LiBUaGlzIHdpbGwgYmUgdHdpY2UgdGhlIHBvaW50ZXIgd2lkdGgsIGFzIGl0IGNvbnN1bWVz IHR3byB1c2l6ZXMuCi0rICAgICAgICAvLy8gVGhpcyBpcyBhbHNvIHRoZSBudW1iZXIgb2YgYnl0 ZXMgcHJvZHVjZWQgYnkgcGFja19hbHUuCi0rICAgICAgICAvLy8gVGhpcyBpcyBhbHNvIHRoZSBu dW1iZXIgb2YgdTE2IGNvZGUgdW5pdHMgcHJvZHVjZWQvY29uc3VtZWQgYnkgdW5wYWNrX2FsdS9w YWNrX2FsdSByZXNwZWN0aXZlbHkuCi0gICAgICAgICBwdWIgY29uc3QgQUxVX1NUUklERV9TSVpF OiB1c2l6ZSA9IDg7Ci0gCi0gICAgICAgICBwdWIgY29uc3QgTUFYX1NUUklERV9TSVpFOiB1c2l6 ZSA9IDg7Ci0gCi0rICAgICAgICAvLyBTYWZldHkgaW52YXJpYW50OiB0aGlzIGlzIHRoZSBwb2lu dGVyIHdpZHRoIGluIGJ5dGVzCi0gICAgICAgICBwdWIgY29uc3QgQUxVX0FMSUdOTUVOVDogdXNp emUgPSA0OwotIAotKyAgICAgICAgLy8gU2FmZXR5IGludmFyaWFudDogdGhpcyBpcyBhIG1hc2sg Zm9yIGdldHRpbmcgdGhlIGJpdHMgb2YgYSBwb2ludGVyIG5vdCBhbGlnbmVkIHRvIEFMVV9BTElH Tk1FTlQKLSAgICAgICAgIHB1YiBjb25zdCBBTFVfQUxJR05NRU5UX01BU0s6IHVzaXplID0gMzsK LSAKLSsgICAgICAgIC8vLyBTYWZldHk6IGRzdCBtdXN0IHBvaW50IHRvIHZhbGlkIHNwYWNlIGZv ciB3cml0aW5nIGZvdXIgYHVzaXplYHMKLSAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCi0gICAg ICAgICB1bnNhZmUgZm4gdW5wYWNrX2FsdSh3b3JkOiB1c2l6ZSwgc2Vjb25kX3dvcmQ6IHVzaXpl LCBkc3Q6ICptdXQgdXNpemUpIHsKLSAgICAgICAgICAgICBsZXQgZmlyc3QgPSAoKDB4MDAwMF9G RjAwdXNpemUgJiB3b3JkKSA8PCA4KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgKDB4MDAw MF8wMEZGdXNpemUgJiB3b3JkKTsKLSAgICAgICAgICAgICBsZXQgc2Vjb25kID0gKCgweEZGMDBf MDAwMHVzaXplICYgd29yZCkgPj4gOCkgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAoKDB4 MDBGRl8wMDAwdXNpemUgJiB3b3JkKSA+PiAxNik7Ci0gICAgICAgICAgICAgbGV0IHRoaXJkID0g KCgweDAwMDBfRkYwMHVzaXplICYgc2Vjb25kX3dvcmQpIDw8IDgpIHwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAoMHgwMDAwXzAwRkZ1c2l6ZSAmIHNlY29uZF93b3JkKTsKLSAgICAgICAgICAg ICBsZXQgZm91cnRoID0gKCgweEZGMDBfMDAwMHVzaXplICYgc2Vjb25kX3dvcmQpID4+IDgpIHwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgKCgweDAwRkZfMDAwMHVzaXplICYgc2Vjb25kX3dv cmQpID4+IDE2KTsKLSsgICAgICAgICAgICAvLyBTYWZldHk6IGZuIGludmFyaWFudCB1c2VkIGhl cmUKLSAgICAgICAgICAgICAqZHN0ID0gZmlyc3Q7Ci0gICAgICAgICAgICAgKihkc3QuYWRkKDEp KSA9IHNlY29uZDsKLSAgICAgICAgICAgICAqKGRzdC5hZGQoMikpID0gdGhpcmQ7Ci0gICAgICAg ICAgICAgKihkc3QuYWRkKDMpKSA9IGZvdXJ0aDsKLSAgICAgICAgIH0KLSAKLSsgICAgICAgIC8v LyBTYWZldHk6IGRzdCBtdXN0IHBvaW50IHRvIHZhbGlkIHNwYWNlIGZvciB3cml0aW5nIHR3byBg dXNpemVgcwotICAgICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KLSAgICAgICAgIHVuc2FmZSBmbiBw YWNrX2FsdShmaXJzdDogdXNpemUsIHNlY29uZDogdXNpemUsIHRoaXJkOiB1c2l6ZSwgZm91cnRo OiB1c2l6ZSwgZHN0OiAqbXV0IHVzaXplKSB7Ci0gICAgICAgICAgICAgbGV0IHdvcmQgPSAoKDB4 MDBGRl8wMDAwdXNpemUgJiBzZWNvbmQpIDw8IDgpIHwKLSAgICAgICAgICAgICAgICAgICAgICAg ICgoMHgwMDAwXzAwRkZ1c2l6ZSAmIHNlY29uZCkgPDwgMTYpIHwKLSAgICAgICAgICAgICAgICAg ICAgICAgICgoMHgwMEZGXzAwMDB1c2l6ZSAmIGZpcnN0KSA+PiA4KSB8Ci0gICAgICAgICAgICAg ICAgICAgICAgICAoMHgwMDAwXzAwRkZ1c2l6ZSAmIGZpcnN0KTsKLSAgICAgICAgICAgICBsZXQg c2Vjb25kX3dvcmQgPSAoKDB4MDBGRl8wMDAwdXNpemUgJiBmb3VydGgpIDw8IDgpIHwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDAwMF8wMEZGdXNpemUgJiBmb3VydGgpIDw8 IDE2KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgweDAwRkZfMDAwMHVzaXpl ICYgdGhpcmQpID4+IDgpIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgwMDAw XzAwRkZ1c2l6ZSAmIHRoaXJkKTsKLSsgICAgICAgICAgICAvLyBTYWZldHk6IGZuIGludmFyaWFu dCB1c2VkIGhlcmUKLSAgICAgICAgICAgICAqZHN0ID0gd29yZDsKLSAgICAgICAgICAgICAqKGRz dC5hZGQoMSkpID0gc2Vjb25kX3dvcmQ7Ci0gICAgICAgICB9Ci0gICAgIH0gZWxzZSBpZiAjW2Nm ZyhhbGwodGFyZ2V0X2VuZGlhbiA9ICJiaWciLCB0YXJnZXRfcG9pbnRlcl93aWR0aCA9ICI2NCIp KV0gewotICAgICAgICAgLy8gQWxpZ25lZCBBTFUgd29yZCwgYmlnLWVuZGlhbiwgNjQtYml0Ci0g Ci0rICAgICAgICAvLy8gU2FmZXR5IGludmFyaWFudDogdGhpcyBpcyB0aGUgYW1vdW50IG9mIGJ5 dGVzIGNvbnN1bWVkIGJ5Ci0rICAgICAgICAvLy8gdW5wYWNrX2FsdS4gVGhpcyB3aWxsIGJlIHR3 aWNlIHRoZSBwb2ludGVyIHdpZHRoLCBhcyBpdCBjb25zdW1lcyB0d28gdXNpemVzLgotKyAgICAg ICAgLy8vIFRoaXMgaXMgYWxzbyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHByb2R1Y2VkIGJ5IHBhY2tf YWx1LgotKyAgICAgICAgLy8vIFRoaXMgaXMgYWxzbyB0aGUgbnVtYmVyIG9mIHUxNiBjb2RlIHVu aXRzIHByb2R1Y2VkL2NvbnN1bWVkIGJ5IHVucGFja19hbHUvcGFja19hbHUgcmVzcGVjdGl2ZWx5 LgotICAgICAgICAgcHViIGNvbnN0IEFMVV9TVFJJREVfU0laRTogdXNpemUgPSAxNjsKLSAKLSAg ICAgICAgIHB1YiBjb25zdCBNQVhfU1RSSURFX1NJWkU6IHVzaXplID0gMTY7Ci0gCi0rICAgICAg ICAvLyBTYWZldHkgaW52YXJpYW50OiB0aGlzIGlzIHRoZSBwb2ludGVyIHdpZHRoIGluIGJ5dGVz Ci0gICAgICAgICBwdWIgY29uc3QgQUxVX0FMSUdOTUVOVDogdXNpemUgPSA4OwotIAotKyAgICAg ICAgLy8gU2FmZXR5IGludmFyaWFudDogdGhpcyBpcyBhIG1hc2sgZm9yIGdldHRpbmcgdGhlIGJp dHMgb2YgYSBwb2ludGVyIG5vdCBhbGlnbmVkIHRvIEFMVV9BTElHTk1FTlQKLSAgICAgICAgIHB1 YiBjb25zdCBBTFVfQUxJR05NRU5UX01BU0s6IHVzaXplID0gNzsKLSAKLSsgICAgICAgIC8vLyBT YWZldHk6IGRzdCBtdXN0IHBvaW50IHRvIHZhbGlkIHNwYWNlIGZvciB3cml0aW5nIGZvdXIgYHVz aXplYHMKLSAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCi0gICAgICAgICB1bnNhZmUgZm4gdW5w YWNrX2FsdSh3b3JkOiB1c2l6ZSwgc2Vjb25kX3dvcmQ6IHVzaXplLCBkc3Q6ICptdXQgdXNpemUp IHsKLSAgICAgICAgICAgICBsZXQgZmlyc3QgPSAoKDB4RkYwMF8wMDAwXzAwMDBfMDAwMHVzaXpl ICYgd29yZCkgPj4gOCkgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDBGRl8wMDAw XzAwMDBfMDAwMHVzaXplICYgd29yZCkgPj4gMTYpIHwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgKCgweDAwMDBfRkYwMF8wMDAwXzAwMDB1c2l6ZSAmIHdvcmQpID4+IDI0KSB8Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICgoMHgwMDAwXzAwRkZfMDAwMF8wMDAwdXNpemUgJiB3b3JkKSA+ PiAzMik7Ci0gICAgICAgICAgICAgbGV0IHNlY29uZCA9ICgoMHgwMDAwXzAwMDBfRkYwMF8wMDAw dXNpemUgJiB3b3JkKSA8PCAyNCkgfAotICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAw XzAwMDBfMDBGRl8wMDAwdXNpemUgJiB3b3JkKSA8PCAxNikgfAotQEAgLTExMTUsMjIgKzEzOTQs MjQgQEAgY2ZnX2lmISB7Ci0gICAgICAgICAgICAgbGV0IHRoaXJkID0gKCgweEZGMDBfMDAwMF8w MDAwXzAwMDB1c2l6ZSAmIHNlY29uZF93b3JkKSA+PiA4KSB8Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICgoMHgwMEZGXzAwMDBfMDAwMF8wMDAwdXNpemUgJiBzZWNvbmRfd29yZCkgPj4gMTYp IHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKCgweDAwMDBfRkYwMF8wMDAwXzAwMDB1c2l6 ZSAmIHNlY29uZF93b3JkKSA+PiAyNCkgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAoKDB4 MDAwMF8wMEZGXzAwMDBfMDAwMHVzaXplICYgc2Vjb25kX3dvcmQpID4+IDMyKTsKLSAgICAgICAg ICAgICBsZXQgZm91cnRoID0gKCgweDAwMDBfMDAwMF9GRjAwXzAwMDB1c2l6ZSAmIHNlY29uZF93 b3JkKSA8PCAyNCkgfAotICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAwXzAwMDBfMDBG Rl8wMDAwdXNpemUgJiBzZWNvbmRfd29yZCkgPDwgMTYpIHwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAoKDB4MDAwMF8wMDAwXzAwMDBfRkYwMHVzaXplICYgc2Vjb25kX3dvcmQpIDw8IDgpIHwK LSAgICAgICAgICAgICAgICAgICAgICAgICAoMHgwMDAwXzAwMDBfMDAwMF8wMEZGdXNpemUgJiBz ZWNvbmRfd29yZCk7Ci0rICAgICAgICAgICAgLy8gU2FmZXR5OiBmbiBpbnZhcmlhbnQgdXNlZCBo ZXJlCi0gICAgICAgICAgICAgKmRzdCA9IGZpcnN0OwotICAgICAgICAgICAgICooZHN0LmFkZCgx KSkgPSBzZWNvbmQ7Ci0gICAgICAgICAgICAgKihkc3QuYWRkKDIpKSA9IHRoaXJkOwotICAgICAg ICAgICAgICooZHN0LmFkZCgzKSkgPSBmb3VydGg7Ci0gICAgICAgICB9Ci0gCi0rICAgICAgICAv Ly8gU2FmZXR5OiBkc3QgbXVzdCBwb2ludCB0byB2YWxpZCBzcGFjZSBmb3Igd3JpdGluZyB0d28g YHVzaXplYHMKLSAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCi0gICAgICAgICB1bnNhZmUgZm4g cGFja19hbHUoZmlyc3Q6IHVzaXplLCBzZWNvbmQ6IHVzaXplLCB0aGlyZDogdXNpemUsIGZvdXJ0 aDogdXNpemUsIGRzdDogKm11dCB1c2l6ZSkgewotICAgICAgICAgICAgIGxldCB3b3JkID0gKCgw eDAwRkYwMDAwXzAwMDAwMDAwdXNpemUgJiBmaXJzdCkgPDwgOCkgfAotICAgICAgICAgICAgICAg ICAgICAgICAgKCgweDAwMDAwMEZGXzAwMDAwMDAwdXNpemUgJiBmaXJzdCkgPDwgMTYpIHwKLSAg ICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAwMDAwMF8wMEZGMDAwMHVzaXplICYgZmlyc3Qp IDw8IDI0KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDAwMDAwMDBfMDAwMDAwRkZ1 c2l6ZSAmIGZpcnN0KSA8PCAzMikgfAotICAgICAgICAgICAgICAgICAgICAgICAgKCgweDAwRkYw MDAwXzAwMDAwMDAwdXNpemUgJiBzZWNvbmQpID4+IDI0KSB8Ci0gICAgICAgICAgICAgICAgICAg ICAgICAoKDB4MDAwMDAwRkZfMDAwMDAwMDB1c2l6ZSAmIHNlY29uZCkgPj4gMTYpIHwKLUBAIC0x MTM5LDY3ICsxNDIwLDgwIEBAIGNmZ19pZiEgewotICAgICAgICAgICAgIGxldCBzZWNvbmRfd29y ZCA9ICgoMHgwMEZGMDAwMF8wMDAwMDAwMHVzaXplICYgdGhpcmQpIDw8IDgpIHwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDAwMDAwRkZfMDAwMDAwMDB1c2l6ZSAmIHRoaXJk KSA8PCAxNikgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAwMDAwMF8w MEZGMDAwMHVzaXplICYgdGhpcmQpIDw8IDI0KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKCgweDAwMDAwMDAwXzAwMDAwMEZGdXNpemUgJiB0aGlyZCkgPDwgMzIpIHwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDBGRjAwMDBfMDAwMDAwMDB1c2l6ZSAmIGZv dXJ0aCkgPj4gMjQpIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDAwMDAw RkZfMDAwMDAwMDB1c2l6ZSAmIGZvdXJ0aCkgPj4gMTYpIHwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoKDB4MDAwMDAwMDBfMDBGRjAwMDB1c2l6ZSAmIGZvdXJ0aCkgPj4gOCkgfAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDAwMDAwMDAwXzAwMDAwMEZGdXNpemUg JiAgZm91cnRoKTsKLSsgICAgICAgICAgICAvLyBTYWZldHk6IGZuIGludmFyaWFudCB1c2VkIGhl cmUKLSAgICAgICAgICAgICAqZHN0ID0gd29yZDsKLSAgICAgICAgICAgICAqKGRzdC5hZGQoMSkp ID0gc2Vjb25kX3dvcmQ7Ci0gICAgICAgICB9Ci0gICAgIH0gZWxzZSBpZiAjW2NmZyhhbGwodGFy Z2V0X2VuZGlhbiA9ICJiaWciLCB0YXJnZXRfcG9pbnRlcl93aWR0aCA9ICIzMiIpKV0gewotICAg ICAgICAgLy8gQWxpZ25lZCBBTFUgd29yZCwgYmlnLWVuZGlhbiwgMzItYml0Ci0gCi0rICAgICAg ICAvLy8gU2FmZXR5IGludmFyaWFudDogdGhpcyBpcyB0aGUgYW1vdW50IG9mIGJ5dGVzIGNvbnN1 bWVkIGJ5Ci0rICAgICAgICAvLy8gdW5wYWNrX2FsdS4gVGhpcyB3aWxsIGJlIHR3aWNlIHRoZSBw b2ludGVyIHdpZHRoLCBhcyBpdCBjb25zdW1lcyB0d28gdXNpemVzLgotKyAgICAgICAgLy8vIFRo aXMgaXMgYWxzbyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHByb2R1Y2VkIGJ5IHBhY2tfYWx1LgotKyAg ICAgICAgLy8vIFRoaXMgaXMgYWxzbyB0aGUgbnVtYmVyIG9mIHUxNiBjb2RlIHVuaXRzIHByb2R1 Y2VkL2NvbnN1bWVkIGJ5IHVucGFja19hbHUvcGFja19hbHUgcmVzcGVjdGl2ZWx5LgotICAgICAg ICAgcHViIGNvbnN0IEFMVV9TVFJJREVfU0laRTogdXNpemUgPSA4OwotIAotICAgICAgICAgcHVi IGNvbnN0IE1BWF9TVFJJREVfU0laRTogdXNpemUgPSA4OwotIAotKyAgICAgICAgLy8gU2FmZXR5 IGludmFyaWFudDogdGhpcyBpcyB0aGUgcG9pbnRlciB3aWR0aCBpbiBieXRlcwotICAgICAgICAg cHViIGNvbnN0IEFMVV9BTElHTk1FTlQ6IHVzaXplID0gNDsKLSAKLSsgICAgICAgIC8vIFNhZmV0 eSBpbnZhcmlhbnQ6IHRoaXMgaXMgYSBtYXNrIGZvciBnZXR0aW5nIHRoZSBiaXRzIG9mIGEgcG9p bnRlciBub3QgYWxpZ25lZCB0byBBTFVfQUxJR05NRU5UCi0gICAgICAgICBwdWIgY29uc3QgQUxV X0FMSUdOTUVOVF9NQVNLOiB1c2l6ZSA9IDM7Ci0gCi0rICAgICAgICAvLy8gU2FmZXR5OiBkc3Qg bXVzdCBwb2ludCB0byB2YWxpZCBzcGFjZSBmb3Igd3JpdGluZyBmb3VyIGB1c2l6ZWBzCi0gICAg ICAgICAjW2lubGluZShhbHdheXMpXQotICAgICAgICAgdW5zYWZlIGZuIHVucGFja19hbHUod29y ZDogdXNpemUsIHNlY29uZF93b3JkOiB1c2l6ZSwgZHN0OiAqbXV0IHVzaXplKSB7Ci0gICAgICAg ICAgICAgbGV0IGZpcnN0ID0gKCgweEZGMDBfMDAwMHVzaXplICYgd29yZCkgPj4gOCkgfAotICAg ICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDBGRl8wMDAwdXNpemUgJiB3b3JkKSA+PiAxNik7 Ci0gICAgICAgICAgICAgbGV0IHNlY29uZCA9ICgoMHgwMDAwX0ZGMDB1c2l6ZSAmIHdvcmQpIDw8 IDgpIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoMHgwMDAwXzAwRkZ1c2l6ZSAmIHdvcmQp OwotICAgICAgICAgICAgIGxldCB0aGlyZCA9ICgoMHhGRjAwXzAwMDB1c2l6ZSAmIHNlY29uZF93 b3JkKSA+PiA4KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMEZGXzAwMDB1c2l6 ZSAmIHNlY29uZF93b3JkKSA+PiAxNik7Ci0gICAgICAgICAgICAgbGV0IGZvdXJ0aCA9ICgoMHgw MDAwX0ZGMDB1c2l6ZSAmIHNlY29uZF93b3JkKSA8PCA4KSB8Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgKDB4MDAwMF8wMEZGdXNpemUgJiBzZWNvbmRfd29yZCk7Ci0rICAgICAgICAgICAgLy8g U2FmZXR5OiBmbiBpbnZhcmlhbnQgdXNlZCBoZXJlCi0gICAgICAgICAgICAgKmRzdCA9IGZpcnN0 OwotICAgICAgICAgICAgICooZHN0LmFkZCgxKSkgPSBzZWNvbmQ7Ci0gICAgICAgICAgICAgKihk c3QuYWRkKDIpKSA9IHRoaXJkOwotICAgICAgICAgICAgICooZHN0LmFkZCgzKSkgPSBmb3VydGg7 Ci0gICAgICAgICB9Ci0gCi0rICAgICAgICAvLy8gU2FmZXR5OiBkc3QgbXVzdCBwb2ludCB0byB2 YWxpZCBzcGFjZSBmb3Igd3JpdGluZyB0d28gYHVzaXplYHMKLSAgICAgICAgICNbaW5saW5lKGFs d2F5cyldCi0gICAgICAgICB1bnNhZmUgZm4gcGFja19hbHUoZmlyc3Q6IHVzaXplLCBzZWNvbmQ6 IHVzaXplLCB0aGlyZDogdXNpemUsIGZvdXJ0aDogdXNpemUsIGRzdDogKm11dCB1c2l6ZSkgewot ICAgICAgICAgICAgIGxldCB3b3JkID0gKCgweDAwRkZfMDAwMHVzaXplICYgZmlyc3QpIDw8IDgp IHwKLSAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAwXzAwRkZ1c2l6ZSAmIGZpcnN0KSA8 PCAxNikgfAotICAgICAgICAgICAgICAgICAgICAgICAgKCgweDAwRkZfMDAwMHVzaXplICYgc2Vj b25kKSA+PiA4KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAoMHgwMDAwXzAwRkZ1c2l6ZSAm IHNlY29uZCk7Ci0gICAgICAgICAgICAgbGV0IHNlY29uZF93b3JkID0gKCgweDAwRkZfMDAwMHVz aXplICYgdGhpcmQpIDw8IDgpIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKDB4 MDAwMF8wMEZGdXNpemUgJiB0aGlyZCkgPDwgMTYpIHwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoKDB4MDBGRl8wMDAwdXNpemUgJiBmb3VydGgpID4+IDgpIHwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoMHgwMDAwXzAwRkZ1c2l6ZSAmIGZvdXJ0aCk7Ci0rICAgICAg ICAgICAgLy8gU2FmZXR5OiBmbiBpbnZhcmlhbnQgdXNlZCBoZXJlCi0gICAgICAgICAgICAgKmRz dCA9IHdvcmQ7Ci0gICAgICAgICAgICAgKihkc3QuYWRkKDEpKSA9IHNlY29uZF93b3JkOwotICAg ICAgICAgfQotICAgICB9IGVsc2UgewotICAgICAgICAgYXNjaWlfbmFpdmUhKGFzY2lpX3RvX2Fz Y2lpLCB1OCwgdTgpOwotICAgICAgICAgYXNjaWlfbmFpdmUhKGFzY2lpX3RvX2Jhc2ljX2xhdGlu LCB1OCwgdTE2KTsKLSAgICAgICAgIGFzY2lpX25haXZlIShiYXNpY19sYXRpbl90b19hc2NpaSwg dTE2LCB1OCk7Ci0gICAgIH0KLSB9Ci0gCi0gY2ZnX2lmISB7Ci0rICAgIC8vIFNhZmV0eS11c2Fi bGUgaW52YXJpYW50OiB0aGlzIGNvdW50cyB0aGUgemVyb2VzIGZyb20gdGhlICJmaXJzdCBieXRl IiBvZiB1dGYtOCBkYXRhIHBhY2tlZCBpbnRvIGEgdXNpemUKLSsgICAgLy8gd2l0aCB0aGUgdGFy Z2V0IGVuZGlhbm5lc3MKLSAgICAgaWYgI1tjZmcodGFyZ2V0X2VuZGlhbiA9ICJsaXR0bGUiKV0g ewotICAgICAgICAgI1thbGxvdyhkZWFkX2NvZGUpXQotICAgICAgICAgI1tpbmxpbmUoYWx3YXlz KV0KLSAgICAgICAgIGZuIGNvdW50X3plcm9zKHdvcmQ6IHVzaXplKSAtPiB1MzIgewotICAgICAg ICAgICAgIHdvcmQudHJhaWxpbmdfemVyb3MoKQotICAgICAgICAgfQotICAgICB9IGVsc2Ugewot ICAgICAgICAgI1thbGxvdyhkZWFkX2NvZGUpXQotQEAgLTEyMDcsMjA4ICsxNTAxLDI3MiBAQCBj ZmdfaWYhIHsKLSAgICAgICAgIGZuIGNvdW50X3plcm9zKHdvcmQ6IHVzaXplKSAtPiB1MzIgewot ICAgICAgICAgICAgIHdvcmQubGVhZGluZ196ZXJvcygpCi0gICAgICAgICB9Ci0gICAgIH0KLSB9 Ci0gCi0gY2ZnX2lmISB7Ci0gICAgIGlmICNbY2ZnKGFsbChmZWF0dXJlID0gInNpbWQtYWNjZWwi LCB0YXJnZXRfZW5kaWFuID0gImxpdHRsZSIsIHRhcmdldF9hcmNoID0gImRpc2FibGVkIikpXSB7 Ci0rICAgICAgICAvLy8gU2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQ6IFdpbGwgcmV0dXJuIHRoZSB2 YWx1ZSBhbmQgcG9zaXRpb24gb2YgdGhlIGZpcnN0IG5vbi1BU0NJSSBieXRlIGluIHRoZSBzbGlj ZSBpbiBhIFNvbWUgaWYgZm91bmQuCi0rICAgICAgICAvLy8gSW4gb3RoZXIgd29yZHMsIHRoZSBm aXJzdCBlbGVtZW50IG9mIHRoZSBTb21lIGlzIGFsd2F5cyBgPiAxMjdgCi0gICAgICAgICAjW2lu bGluZShhbHdheXMpXQotICAgICAgICAgcHViIGZuIHZhbGlkYXRlX2FzY2lpKHNsaWNlOiAmW3U4 XSkgLT4gT3B0aW9uPCh1OCwgdXNpemUpPiB7Ci0gICAgICAgICAgICAgbGV0IHNyYyA9IHNsaWNl LmFzX3B0cigpOwotICAgICAgICAgICAgIGxldCBsZW4gPSBzbGljZS5sZW4oKTsKLSAgICAgICAg ICAgICBsZXQgbXV0IG9mZnNldCA9IDB1c2l6ZTsKLSsgICAgICAgICAgICAvLyBTYWZldHk6IGlm IHRoaXMgY2hlY2sgc3VjY2VlZHMgd2UncmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyBhdCBs ZWFzdCBgc3RyaWRlYCBlbGVtZW50cy4KLSAgICAgICAgICAgICBpZiBTSU1EX1NUUklERV9TSVpF IDw9IGxlbiB7Ci0gICAgICAgICAgICAgICAgIGxldCBsZW5fbWludXNfc3RyaWRlID0gbGVuIC0g U0lNRF9TVFJJREVfU0laRTsKLSAgICAgICAgICAgICAgICAgbG9vcCB7Ci0rICAgICAgICAgICAg ICAgICAgICAvLyBTYWZldHk6IHNyYyBhdCBvZmZzZXQgaXMgdmFsaWQgZm9yIGEgYFNJTURfU1RS SURFX1NJWkVgIHJlYWQKLSAgICAgICAgICAgICAgICAgICAgIGxldCBzaW1kID0gdW5zYWZlIHsg bG9hZDE2X3VuYWxpZ25lZChzcmMuYWRkKG9mZnNldCkpIH07Ci0gICAgICAgICAgICAgICAgICAg ICBpZiAhc2ltZF9pc19hc2NpaShzaW1kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgYnJl YWs7Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICBvZmZzZXQg Kz0gU0lNRF9TVFJJREVfU0laRTsKLSsgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYG9m ZnNldCA+IGxlbiAtIFNJTURfU1RSSURFX1NJWkVgIHdoaWNoIG1lYW5zIHdlIGFsd2F5cyBoYXZl IGF0IGxlYXN0IGBTSU1EX1NUUklERV9TSVpFYCBlbGVtZW50cyB0byBtdW5jaCBuZXh0IHRpbWUu Ci0gICAgICAgICAgICAgICAgICAgICBpZiBvZmZzZXQgPiBsZW5fbWludXNfc3RyaWRlIHsKLSAg ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICB3aGlsZSBvZmZz ZXQgPCBsZW4gewotICAgICAgICAgICAgICAgICBsZXQgY29kZV91bml0ID0gc2xpY2Vbb2Zmc2V0 XTsKLSAgICAgICAgICAgICAgICAgaWYgY29kZV91bml0ID4gMTI3IHsKLSsgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogU2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQgdXBoZWxkIGhlcmUKLSAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBTb21lKChjb2RlX3VuaXQsIG9mZnNldCkpOwotICAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIG9mZnNldCArPSAxOwotICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgICBOb25lCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSBpZiAjW2Nm ZyhhbGwoZmVhdHVyZSA9ICJzaW1kLWFjY2VsIiwgdGFyZ2V0X2ZlYXR1cmUgPSAic3NlMiIpKV0g ewotKyAgICAgICAgLy8vIFNhZmV0eS11c2FibGUgaW52YXJpYW50OiB3aWxsIHJldHVybiBTb21l KCkgd2hlbiBpdCBlbmNvdW50ZXJzIG5vbi1BU0NJSSwgd2l0aCB0aGUgZmlyc3QgZWxlbWVudCBp biB0aGUgU29tZSBiZWluZwotKyAgICAgICAgLy8vIGd1YXJhbnRlZWQgdG8gYmUgbm9uLUFTQ0lJ ICg+IDEyNyksIGFuZCB0aGUgc2Vjb25kIGJlaW5nIHRoZSBvZmZzZXQgd2hlcmUgaXQgaXMgZm91 bmQKLSAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCi0gICAgICAgICBwdWIgZm4gdmFsaWRhdGVf YXNjaWkoc2xpY2U6ICZbdThdKSAtPiBPcHRpb248KHU4LCB1c2l6ZSk+IHsKLSAgICAgICAgICAg ICBsZXQgc3JjID0gc2xpY2UuYXNfcHRyKCk7Ci0gICAgICAgICAgICAgbGV0IGxlbiA9IHNsaWNl LmxlbigpOwotICAgICAgICAgICAgIGxldCBtdXQgb2Zmc2V0ID0gMHVzaXplOwotKyAgICAgICAg ICAgIC8vIFNhZmV0eTogaWYgdGhpcyBjaGVjayBzdWNjZWVkcyB3ZSdyZSB2YWxpZCBmb3IgcmVh ZGluZyBhdCBsZWFzdCBgc3RyaWRlYCBlbGVtZW50cy4KLSAgICAgICAgICAgICBpZiBTSU1EX1NU UklERV9TSVpFIDw9IGxlbiB7Ci0gICAgICAgICAgICAgICAgIC8vIEZpcnN0LCBwcm9jZXNzIG9u ZSB1bmFsaWduZWQgdmVjdG9yCi0rICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogc3JjIGlzIHZh bGlkIGZvciBhIGBTSU1EX1NUUklERV9TSVpFYCByZWFkCi0gICAgICAgICAgICAgICAgIGxldCBz aW1kID0gdW5zYWZlIHsgbG9hZDE2X3VuYWxpZ25lZChzcmMpIH07Ci0gICAgICAgICAgICAgICAg IGxldCBtYXNrID0gbWFza19hc2NpaShzaW1kKTsKLSAgICAgICAgICAgICAgICAgaWYgbWFzayAh PSAwIHsKLSAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IG1hc2sudHJhaWxpbmdfemVyb3Mo KSBhcyB1c2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgIGxldCBub25fYXNjaWkgPSB1bnNhZmUg eyAqc3JjLmFkZChvZmZzZXQpIH07Ci0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gU29tZSgo bm9uX2FzY2lpLCBvZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg ICBvZmZzZXQgPSBTSU1EX1NUUklERV9TSVpFOwotKyAgICAgICAgICAgICAgICAvLyBTYWZldHk6 IE5vdyB0aGF0IG9mZnNldCBoYXMgY2hhbmdlZCB3ZSBkb24ndCB5ZXQga25vdyBob3cgbXVjaCBp dCBpcyB2YWxpZCBmb3IKLSAKLSAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBub3cgc2VlbiAx NiBBU0NJSSBieXRlcy4gTGV0J3MgZ3Vlc3MgdGhhdAotICAgICAgICAgICAgICAgICAvLyB0aGVy ZSB3aWxsIGJlIGVub3VnaCBtb3JlIHRvIGp1c3RpZnkgbW9yZSBleHBlbnNlCi0gICAgICAgICAg ICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIG5vbi1BU0NJSS4KLSAgICAgICAgICAgICAgICAgLy8g VXNlIGFsaWduZWQgcmVhZHMgZm9yIHRoZSBzYWtlIG9mIG9sZCBtaWNyb2FjaGl0ZWN0dXJlcy4K LSsgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiB0aGlzIGNvcnJlY3RseSBjYWxjdWxhdGVzIHRo ZSBudW1iZXIgb2Ygc3JjX3VuaXRzIHRoYXQgbmVlZCB0byBiZSByZWFkIGJlZm9yZSB0aGUgcmVt YWluaW5nIGxpc3QgaXMgYWxpZ25lZC4KLSsgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBieSBk ZWZpbml0aW9uIGxlc3MgdGhhbiBTSU1EX0FMSUdOTUVOVCwgd2hpY2ggaXMgZGVmaW5lZCB0byBi ZSBlcXVhbCB0byBTSU1EX1NUUklERV9TSVpFLgotICAgICAgICAgICAgICAgICBsZXQgdW50aWxf YWxpZ25tZW50ID0gdW5zYWZlIHsgKFNJTURfQUxJR05NRU5UIC0gKChzcmMuYWRkKG9mZnNldCkg YXMgdXNpemUpICYgU0lNRF9BTElHTk1FTlRfTUFTSykpICYgU0lNRF9BTElHTk1FTlRfTUFTSyB9 OwotICAgICAgICAgICAgICAgICAvLyBUaGlzIGFkZGl0aW9uIHdvbid0IG92ZXJmbG93LCBiZWNh dXNlIGV2ZW4gaW4gdGhlIDMyLWJpdCBQQUUgY2FzZSB0aGUKLSAgICAgICAgICAgICAgICAgLy8g YWRkcmVzcyBzcGFjZSBob2xkcyBlbm91Z2ggY29kZSB0aGF0IHRoZSBzbGljZSBsZW5ndGggY2Fu J3QgYmUgdGhhdAotICAgICAgICAgICAgICAgICAvLyBjbG9zZSB0byBhZGRyZXNzIHNwYWNlIHNp emUuCi0gICAgICAgICAgICAgICAgIC8vIG9mZnNldCBub3cgZXF1YWxzIFNJTURfU1RSSURFX1NJ WkUsIGhlbmNlIHRpbWVzIDMgYmVsb3cuCi0rICAgICAgICAgICAgICAgIC8vCi0rICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogaWYgdGhpcyBjaGVjayBzdWNjZWVkcyB3ZSdyZSB2YWxpZCBmb3Ig cmVhZGluZyBhdCBsZWFzdCBgMiAqIFNJTURfU1RSSURFX1NJWkVgIGVsZW1lbnRzIHBsdXMgYHVu dGlsX2FsaWdubWVudGAuCi0rICAgICAgICAgICAgICAgIC8vIFRoZSBleHRyYSBTSU1EX1NUUklE RV9TSVpFIGluIHRoZSBjb25kaXRpb24gaXMgYmVjYXVzZSBgb2Zmc2V0YCBpcyBhbHJlYWR5IGBT SU1EX1NUUklERV9TSVpFYC4KLSAgICAgICAgICAgICAgICAgaWYgdW50aWxfYWxpZ25tZW50ICsg KFNJTURfU1RSSURFX1NJWkUgKiAzKSA8PSBsZW4gewotICAgICAgICAgICAgICAgICAgICAgaWYg dW50aWxfYWxpZ25tZW50ICE9IDAgewotKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0 eTogdGhpcyBpcyBzYWZlIHRvIGNhbGwgc2luY2Ugd2UncmUgdmFsaWQgZm9yIHRoaXMgcmVhZCAo YW5kIG1vcmUpLCBhbmQgZG9uJ3QgY2FyZSBhYm91dCBhbGlnbm1lbnQKLSsgICAgICAgICAgICAg ICAgICAgICAgICAvLyBUaGlzIHdpbGwgY29weSBvdmVyIGJ5dGVzIHRoYXQgZ2V0IGRlY29kZWQg dHdpY2Ugc2luY2UgaXQncyBub3QgaW5jcmVtZW50aW5nIGBvZmZzZXRgIGJ5IFNJTURfU1RSSURF X1NJWkUuIFRoaXMgaXMgZmluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2ltZCA9 IHVuc2FmZSB7IGxvYWQxNl91bmFsaWduZWQoc3JjLmFkZChvZmZzZXQpKSB9OwotICAgICAgICAg ICAgICAgICAgICAgICAgIGxldCBtYXNrID0gbWFza19hc2NpaShzaW1kKTsKLSAgICAgICAgICAg ICAgICAgICAgICAgICBpZiBtYXNrICE9IDAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvZmZzZXQgKz0gbWFzay50cmFpbGluZ196ZXJvcygpIGFzIHVzaXplOwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsZXQgbm9uX2FzY2lpID0gdW5zYWZlIHsgKnNyYy5hZGQob2Zmc2V0 KSB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU29tZSgobm9uX2FzY2lp LCBvZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgb2Zmc2V0ICs9IHVudGlsX2FsaWdubWVudDsKLSAgICAgICAgICAgICAgICAgICAg IH0KLSsgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogQXQgdGhpcyBwb2ludCB3ZSdyZSB2 YWxpZCBmb3IgcmVhZGluZyAyKlNJTURfU1RSSURFX1NJWkUgZWxlbWVudHMKLSsgICAgICAgICAg ICAgICAgICAgIC8vIFNhZmV0eTogTm93IGBvZmZzZXRgIGlzIGFsaWduZWQgZm9yIGBzcmNgCi0g ICAgICAgICAgICAgICAgICAgICBsZXQgbGVuX21pbnVzX3N0cmlkZV90aW1lc190d28gPSBsZW4g LSAoU0lNRF9TVFJJREVfU0laRSAqIDIpOwotICAgICAgICAgICAgICAgICAgICAgbG9vcCB7Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBXZSB3ZXJlIHZhbGlkIGZvciB0aGlz IHJlYWQsIGFuZCB3ZXJlIGFsaWduZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZp cnN0ID0gdW5zYWZlIHsgbG9hZDE2X2FsaWduZWQoc3JjLmFkZChvZmZzZXQpKSB9OwotICAgICAg ICAgICAgICAgICAgICAgICAgIGxldCBzZWNvbmQgPSB1bnNhZmUgeyBsb2FkMTZfYWxpZ25lZChz cmMuYWRkKG9mZnNldCArIFNJTURfU1RSSURFX1NJWkUpKSB9OwotICAgICAgICAgICAgICAgICAg ICAgICAgIGlmICFzaW1kX2lzX2FzY2lpKGZpcnN0IHwgc2Vjb25kKSB7Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogbWFza19hc2NpaSBwcm9kdWNlcyBhIG1hc2sgb2Yg YWxsIHRoZSBoaWdoIGJpdHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXNr X2ZpcnN0ID0gbWFza19hc2NpaShmaXJzdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmIG1hc2tfZmlyc3QgIT0gMCB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv LyBTYWZldHk6IG9uIGxpdHRsZSBlbmRpYW4gc3lzdGVtcyB0aGlzIHdpbGwgYmUgdGhlIG51bWJl ciBvZiBhc2NpaSBieXRlcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmVm b3JlIHRoZSBmaXJzdCBub24tYXNjaWksIGkuZS4gdmFsaWQgZm9yIGluZGV4aW5nIHNyYwotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyBTQUZFVFk6IFdoYXQgYWJvdXQg YmlnLWVuZGlhbiBzeXN0ZW1zPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zm c2V0ICs9IG1hc2tfZmlyc3QudHJhaWxpbmdfemVyb3MoKSBhcyB1c2l6ZTsKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxldCBtYXNrX3NlY29uZCA9IG1hc2tfYXNjaWkoc2Vjb25kKTsKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogb24gbGl0dGxlIGVuZGlhbiBzeXN0ZW1zIHRo aXMgd2lsbCBiZSB0aGUgbnVtYmVyIG9mIGFzY2lpIGJ5dGVzCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBiZWZvcmUgdGhlIGZpcnN0IG5vbi1hc2NpaSwgaS5lLiB2YWxpZCBm b3IgaW5kZXhpbmcgc3JjCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQg Kz0gU0lNRF9TVFJJREVfU0laRSArIG1hc2tfc2Vjb25kLnRyYWlsaW5nX3plcm9zKCkgYXMgdXNp emU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLy8gU2FmZXR5OiBXZSBrbm93IHRoaXMgaXMgbm9uLUFTQ0lJLCBhbmQgY2FuIHVw aG9sZCB0aGUgc2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQgaGVyZQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsZXQgbm9uX2FzY2lpID0gdW5zYWZlIHsgKnNyYy5hZGQob2Zmc2V0KSB9Owot KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU29tZSgobm9uX2FzY2lpLCBv ZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgb2Zmc2V0ICs9IFNJTURfU1RSSURFX1NJWkUgKiAyOwotKyAgICAgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogVGhpcyBpcyBgb2Zmc2V0ID4gbGVuIC0gMiAqIFNJTURfU1RSSURF X1NJWkVgIHdoaWNoIG1lYW5zIHdlIGFsd2F5cyBoYXZlIGF0IGxlYXN0IGAyICogU0lNRF9TVFJJ REVfU0laRWAgZWxlbWVudHMgdG8gbXVuY2ggbmV4dCB0aW1lLgotICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIG9mZnNldCA+IGxlbl9taW51c19zdHJpZGVfdGltZXNfdHdvIHsKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBp ZiB0aGlzIGNoZWNrIHN1Y2NlZWRzIHdlJ3JlIHZhbGlkIGZvciByZWFkaW5nIGF0IGxlYXN0IGBT SU1EX1NUUklERV9TSVpFYAotICAgICAgICAgICAgICAgICAgICAgaWYgb2Zmc2V0ICsgU0lNRF9T VFJJREVfU0laRSA8PSBsZW4gewotLSAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2ltZCA9 IHVuc2FmZSB7IGxvYWQxNl9hbGlnbmVkKHNyYy5hZGQob2Zmc2V0KSkgfTsKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgbGV0IG1hc2sgPSBtYXNrX2FzY2lpKHNpbWQpOwotKyAgICAgICAgICAg ICAgICAgICAgICAgIC8vIFNhZmV0eTogV2Ugd2VyZSB2YWxpZCBmb3IgdGhpcyByZWFkLCBhbmQg d2VyZSBhbGlnbmVkLgotKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaW1kID0gdW5zYWZl IHsgbG9hZDE2X2FsaWduZWQoc3JjLmFkZChvZmZzZXQpKSB9OwotKyAgICAgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogbWFza19hc2NpaSBwcm9kdWNlcyBhIG1hc2sgb2YgYWxsIHRoZSBo aWdoIGJpdHMuCi0rICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hc2sgPSBtYXNrX2FzY2lp KHNpbWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1hc2sgIT0gMCB7Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogb24gbGl0dGxlIGVuZGlhbiBzeXN0ZW1z IHRoaXMgd2lsbCBiZSB0aGUgbnVtYmVyIG9mIGFzY2lpIGJ5dGVzCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIGJlZm9yZSB0aGUgZmlyc3Qgbm9uLWFzY2lpLCBpLmUuIHZhbGlkIGZv ciBpbmRleGluZyBzcmMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IG1h c2sudHJhaWxpbmdfemVyb3MoKSBhcyB1c2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGV0IG5vbl9hc2NpaSA9IHVuc2FmZSB7ICpzcmMuYWRkKG9mZnNldCkgfTsKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBXZSBrbm93IHRoaXMgaXMgbm9uLUFTQ0lJ LCBhbmQgY2FuIHVwaG9sZCB0aGUgc2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQgaGVyZQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU29tZSgobm9uX2FzY2lpLCBvZmZzZXQpKTsK LSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgb2Zm c2V0ICs9IFNJTURfU1RSSURFX1NJWkU7Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IHRoaXMg aXMgdGhlIHVuYWxpZ25lZCBicmFuY2gKLSAgICAgICAgICAgICAgICAgICAgIC8vIEF0IG1vc3Qg dHdvIGl0ZXJhdGlvbnMsIHNvIHVucm9sbAotKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5 OiBpZiB0aGlzIGNoZWNrIHN1Y2NlZWRzIHdlJ3JlIHZhbGlkIGZvciByZWFkaW5nIGF0IGxlYXN0 IGBTSU1EX1NUUklERV9TSVpFYAotICAgICAgICAgICAgICAgICAgICAgaWYgb2Zmc2V0ICsgU0lN RF9TVFJJREVfU0laRSA8PSBsZW4gewotKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0 eTogV2UncmUgdmFsaWQgZm9yIHRoaXMgcmVhZCBidXQgbXVzdCB1c2UgYW4gdW5hbGlnbmVkIHJl YWQKLSAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2ltZCA9IHVuc2FmZSB7IGxvYWQxNl91 bmFsaWduZWQoc3JjLmFkZChvZmZzZXQpKSB9OwotICAgICAgICAgICAgICAgICAgICAgICAgIGxl dCBtYXNrID0gbWFza19hc2NpaShzaW1kKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiBt YXNrICE9IDAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbWFzay50 cmFpbGluZ196ZXJvcygpIGFzIHVzaXplOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs ZXQgbm9uX2FzY2lpID0gdW5zYWZlIHsgKnNyYy5hZGQob2Zmc2V0KSB9OwotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvLyBTYWZldHktdXNhYmxlIGludmFyaWFudCB1cGhlbGQgaGVyZSAo c2FtZSBhcyBhYm92ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNvbWUo KG5vbl9hc2NpaSwgb2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg ICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBTSU1EX1NUUklERV9TSVpFOwotKyAgICAgICAg ICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogaWYgdGhpcyBjaGVjayBzdWNjZWVkcyB3ZSdyZSB2 YWxpZCBmb3IgcmVhZGluZyBhdCBsZWFzdCBgU0lNRF9TVFJJREVfU0laRWAKLSAgICAgICAgICAg ICAgICAgICAgICAgICBpZiBvZmZzZXQgKyBTSU1EX1NUUklERV9TSVpFIDw9IGxlbiB7Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogV2UncmUgdmFsaWQgZm9yIHRoaXMg cmVhZCBidXQgbXVzdCB1c2UgYW4gdW5hbGlnbmVkIHJlYWQKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxldCBzaW1kID0gdW5zYWZlIHsgbG9hZDE2X3VuYWxpZ25lZChzcmMuYWRkKG9m ZnNldCkpIH07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWFzayA9IG1hc2tf YXNjaWkoc2ltZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1hc2sgIT0gMCB7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbWFzay50cmFpbGlu Z196ZXJvcygpIGFzIHVzaXplOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0 IG5vbl9hc2NpaSA9IHVuc2FmZSB7ICpzcmMuYWRkKG9mZnNldCkgfTsKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eS11c2FibGUgaW52YXJpYW50IHVwaGVsZCBoZXJl IChzYW1lIGFzIGFib3ZlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IFNvbWUoKG5vbl9hc2NpaSwgb2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IFNJTURfU1RSSURFX1NJ WkU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIHdoaWxlIG9m ZnNldCA8IGxlbiB7Ci0rICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogcmVsaWVzIHN0cmFpZ2h0 Zm9yd2FyZGx5IG9uIHRoZSBgbGVuYCBpbnZhcmlhbnQKLSAgICAgICAgICAgICAgICAgbGV0IGNv ZGVfdW5pdCA9IHVuc2FmZSB7ICooc3JjLmFkZChvZmZzZXQpKSB9OwotICAgICAgICAgICAgICAg ICBpZiBjb2RlX3VuaXQgPiAxMjcgewotKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5LXVz YWJsZSBpbnZhcmlhbnQgdXBoZWxkIGhlcmUKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBT b21lKChjb2RlX3VuaXQsIG9mZnNldCkpOwotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICAgICAgIG9mZnNldCArPSAxOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBOb25lCi0g ICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0rICAgICAgICAvLyBTYWZldHktdXNhYmxlIGludmFy aWFudDogcmV0dXJucyBieXRlIGluZGV4IG9mIGZpcnN0IG5vbi1hc2NpaSBieXRlCi0gICAgICAg ICAjW2lubGluZShhbHdheXMpXQotICAgICAgICAgZm4gZmluZF9ub25fYXNjaWkod29yZDogdXNp emUsIHNlY29uZF93b3JkOiB1c2l6ZSkgLT4gT3B0aW9uPHVzaXplPiB7Ci0gICAgICAgICAgICAg bGV0IHdvcmRfbWFza2VkID0gd29yZCAmIEFTQ0lJX01BU0s7Ci0gICAgICAgICAgICAgbGV0IHNl Y29uZF9tYXNrZWQgPSBzZWNvbmRfd29yZCAmIEFTQ0lJX01BU0s7Ci0gICAgICAgICAgICAgaWYg KHdvcmRfbWFza2VkIHwgc2Vjb25kX21hc2tlZCkgPT0gMCB7Ci0rICAgICAgICAgICAgICAgIC8v IEJvdGggYXJlIGFzY2lpLCBpbnZhcmlhbnQgdXBoZWxkCi0gICAgICAgICAgICAgICAgIHJldHVy biBOb25lOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBpZiB3b3JkX21hc2tlZCAhPSAw IHsKLSAgICAgICAgICAgICAgICAgbGV0IHplcm9zID0gY291bnRfemVyb3Mod29yZF9tYXNrZWQp OwotLSAgICAgICAgICAgICAgICAvLyBgemVyb3NgIG5vdyBjb250YWlucyA3IChmb3IgdGhlIHNl dmVuIGJpdHMgb2Ygbm9uLUFTQ0lJKQotKyAgICAgICAgICAgICAgICAvLyBgemVyb3NgIG5vdyBj b250YWlucyAwIHRvIDcgKGZvciB0aGUgc2V2ZW4gYml0cyBvZiBtYXNrZWQgQVNDSUkgaW4gbGl0 dGxlIGVuZGlhbiwKLSsgICAgICAgICAgICAgICAgLy8gb3IgdXAgdG8gNyBiaXRzIG9mIG5vbi1B U0NJSSBpbiBiaWcgZW5kaWFuIGlmIHRoZSBmaXJzdCBieXRlIGlzIG5vbi1BU0NJSSkKLSAgICAg ICAgICAgICAgICAgLy8gcGx1cyA4IHRpbWVzIHRoZSBudW1iZXIgb2YgQVNDSUkgaW4gdGV4dCBv cmRlciBiZWZvcmUgdGhlCi0gICAgICAgICAgICAgICAgIC8vIG5vbi1BU0NJSSBieXRlIGluIHRo ZSBsaXR0bGUtZW5kaWFuIGNhc2Ugb3IgOCB0aW1lcyB0aGUgbnVtYmVyIG9mIEFTQ0lJIGluCi0g ICAgICAgICAgICAgICAgIC8vIHRleHQgb3JkZXIgYmVmb3JlIHRoZSBub24tQVNDSUkgYnl0ZSBp biB0aGUgYmlnLWVuZGlhbiBjYXNlLgotICAgICAgICAgICAgICAgICBsZXQgbnVtX2FzY2lpID0g KHplcm9zID4+IDMpIGFzIHVzaXplOwotKyAgICAgICAgICAgICAgICAvLyBTYWZldHktdXNhYmxl IGludmFyaWFudCB1cGhlbGQgaGVyZQotICAgICAgICAgICAgICAgICByZXR1cm4gU29tZShudW1f YXNjaWkpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBsZXQgemVyb3MgPSBjb3VudF96 ZXJvcyhzZWNvbmRfbWFza2VkKTsKLS0gICAgICAgICAgICAvLyBgemVyb3NgIG5vdyBjb250YWlu cyA3IChmb3IgdGhlIHNldmVuIGJpdHMgb2Ygbm9uLUFTQ0lJKQotKyAgICAgICAgICAgIC8vIGB6 ZXJvc2Agbm93IGNvbnRhaW5zIDAgdG8gNyAoZm9yIHRoZSBzZXZlbiBiaXRzIG9mIG1hc2tlZCBB U0NJSSBpbiBsaXR0bGUgZW5kaWFuLAotKyAgICAgICAgICAgIC8vIG9yIHVwIHRvIDcgYml0cyBv ZiBub24tQVNDSUkgaW4gYmlnIGVuZGlhbiBpZiB0aGUgZmlyc3QgYnl0ZSBpcyBub24tQVNDSUkp Ci0gICAgICAgICAgICAgLy8gcGx1cyA4IHRpbWVzIHRoZSBudW1iZXIgb2YgQVNDSUkgaW4gdGV4 dCBvcmRlciBiZWZvcmUgdGhlCi0gICAgICAgICAgICAgLy8gbm9uLUFTQ0lJIGJ5dGUgaW4gdGhl IGxpdHRsZS1lbmRpYW4gY2FzZSBvciA4IHRpbWVzIHRoZSBudW1iZXIgb2YgQVNDSUkgaW4KLSAg ICAgICAgICAgICAvLyB0ZXh0IG9yZGVyIGJlZm9yZSB0aGUgbm9uLUFTQ0lJIGJ5dGUgaW4gdGhl IGJpZy1lbmRpYW4gY2FzZS4KLSAgICAgICAgICAgICBsZXQgbnVtX2FzY2lpID0gKHplcm9zID4+ IDMpIGFzIHVzaXplOwotKyAgICAgICAgICAgIC8vIFNhZmV0eS11c2FibGUgaW52YXJpYW50IHVw aGVsZCBoZXJlCi0gICAgICAgICAgICAgU29tZShBTFVfQUxJR05NRU5UICsgbnVtX2FzY2lpKQot ICAgICAgICAgfQotIAotKyAgICAgICAgLy8vIFNhZmV0eTogYHNyY2AgbXVzdCBiZSB2YWxpZCBm b3IgdGhlIHJlYWRzIG9mIHR3byBgdXNpemVgcwotKyAgICAgICAgLy8vCi0rICAgICAgICAvLy8g U2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQ6IHdpbGwgcmV0dXJuIGJ5dGUgaW5kZXggb2YgZmlyc3Qg bm9uLWFzY2lpIGJ5dGUKLSAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCi0gICAgICAgICB1bnNh ZmUgZm4gdmFsaWRhdGVfYXNjaWlfc3RyaWRlKHNyYzogKmNvbnN0IHVzaXplKSAtPiBPcHRpb248 dXNpemU+IHsKLSAgICAgICAgICAgICBsZXQgd29yZCA9ICpzcmM7Ci0gICAgICAgICAgICAgbGV0 IHNlY29uZF93b3JkID0gKihzcmMuYWRkKDEpKTsKLSAgICAgICAgICAgICBmaW5kX25vbl9hc2Np aSh3b3JkLCBzZWNvbmRfd29yZCkKLSAgICAgICAgIH0KLSAKLSsgICAgICAgIC8vLyBTYWZldHkt dXNhYmxlIGludmFyaWFudDogd2lsbCByZXR1cm4gU29tZSgpIHdoZW4gaXQgZW5jb3VudGVycyBu b24tQVNDSUksIHdpdGggdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIFNvbWUgYmVpbmcKLSsgICAg ICAgIC8vLyBndWFyYW50ZWVkIHRvIGJlIG5vbi1BU0NJSSAoPiAxMjcpLCBhbmQgdGhlIHNlY29u ZCBiZWluZyB0aGUgb2Zmc2V0IHdoZXJlIGl0IGlzIGZvdW5kCi0gICAgICAgICAjW2NmZ19hdHRy KGZlYXR1cmUgPSAiY2FyZ28tY2xpcHB5IiwgYWxsb3coY2FzdF9wdHJfYWxpZ25tZW50KSldCi0g ICAgICAgICAjW2lubGluZShhbHdheXMpXQotICAgICAgICAgcHViIGZuIHZhbGlkYXRlX2FzY2lp KHNsaWNlOiAmW3U4XSkgLT4gT3B0aW9uPCh1OCwgdXNpemUpPiB7Ci0gICAgICAgICAgICAgbGV0 IHNyYyA9IHNsaWNlLmFzX3B0cigpOwotICAgICAgICAgICAgIGxldCBsZW4gPSBzbGljZS5sZW4o KTsKLSAgICAgICAgICAgICBsZXQgbXV0IG9mZnNldCA9IDB1c2l6ZTsKLSAgICAgICAgICAgICBs ZXQgbXV0IHVudGlsX2FsaWdubWVudCA9IChBTFVfQUxJR05NRU5UIC0gKChzcmMgYXMgdXNpemUp ICYgQUxVX0FMSUdOTUVOVF9NQVNLKSkgJiBBTFVfQUxJR05NRU5UX01BU0s7Ci0rICAgICAgICAg ICAgLy8gU2FmZXR5OiBJZiB0aGlzIGNoZWNrIGZhaWxzIHdlJ3JlIHZhbGlkIHRvIHJlYWQgYHVu dGlsX2FsaWdubWVudCArIEFMVV9TVFJJREVfU0laRWAgZWxlbWVudHMKLSAgICAgICAgICAgICBp ZiB1bnRpbF9hbGlnbm1lbnQgKyBBTFVfU1RSSURFX1NJWkUgPD0gbGVuIHsKLSAgICAgICAgICAg ICAgICAgd2hpbGUgdW50aWxfYWxpZ25tZW50ICE9IDAgewotICAgICAgICAgICAgICAgICAgICAg bGV0IGNvZGVfdW5pdCA9IHNsaWNlW29mZnNldF07Ci0gICAgICAgICAgICAgICAgICAgICBpZiBj b2RlX3VuaXQgPiAxMjcgewotKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eS11c2Fi bGUgaW52YWlyYW50IHVwaGVsZCBoZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IFNvbWUoKGNvZGVfdW5pdCwgb2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTsKLSAgICAgICAgICAgICAgICAgICAgIHVudGls X2FsaWdubWVudCAtPSAxOwotICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIC8v IFNhZmV0eTogQXQgdGhpcyBwb2ludCB3ZSBoYXZlIHJlYWQgdW50aWxfYWxpZ25tZW50IGVsZW1l bnRzIGFuZAotKyAgICAgICAgICAgICAgICAvLyBhcmUgdmFsaWQgZm9yIGBBTFVfU1RSSURFX1NJ WkVgIG1vcmUuCi0gICAgICAgICAgICAgICAgIGxldCBsZW5fbWludXNfc3RyaWRlID0gbGVuIC0g QUxVX1NUUklERV9TSVpFOwotICAgICAgICAgICAgICAgICBsb29wIHsKLSsgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogd2Ugd2VyZSB2YWxpZCBmb3IgdGhpcyByZWFkCi0gICAgICAgICAg ICAgICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgc3JjLmFkZChvZmZzZXQpIGFzICpjb25zdCB1 c2l6ZSB9OwotICAgICAgICAgICAgICAgICAgICAgaWYgbGV0IFNvbWUobnVtX2FzY2lpKSA9IHVu c2FmZSB7IHZhbGlkYXRlX2FzY2lpX3N0cmlkZShwdHIpIH0gewotICAgICAgICAgICAgICAgICAg ICAgICAgIG9mZnNldCArPSBudW1fYXNjaWk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgLy8g U2FmZXR5LXVzYWJsZSBpbnZhaXJhbnQgdXBoZWxkIGhlcmUgdXNpbmcgdGhlIGludmFyaWFudCBm cm9tIHZhbGlkYXRlX2FzY2lpX3N0cmlkZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIFNvbWUoKHVuc2FmZSB7ICooc3JjLmFkZChvZmZzZXQpKSB9LCBvZmZzZXQpKTsKLSAgICAg ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBBTFVfU1RS SURFX1NJWkU7Ci0rICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFRoaXMgaXMgYG9mZnNl dCA+IEFMVV9TVFJJREVfU0laRWAgd2hpY2ggbWVhbnMgd2UgYWx3YXlzIGhhdmUgYXQgbGVhc3Qg YDIgKiBBTFVfU1RSSURFX1NJWkVgIGVsZW1lbnRzIHRvIG11bmNoIG5leHQgdGltZS4KLSAgICAg ICAgICAgICAgICAgICAgIGlmIG9mZnNldCA+IGxlbl9taW51c19zdHJpZGUgewotICAgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIHdoaWxlIG9mZnNldCA8IGxl biB7Ci0gICAgICAgICAgICAgICAgIGxldCBjb2RlX3VuaXQgPSBzbGljZVtvZmZzZXRdOwotICAg ICAgICAgICAgICAgICBpZiBjb2RlX3VuaXQgPiAxMjcgewotKyAgICAgICAgICAgICAgICAgICAg Ly8gU2FmZXR5LXVzYWJsZSBpbnZhaXJhbnQgdXBoZWxkIGhlcmUKLSAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBTb21lKChjb2RlX3VuaXQsIG9mZnNldCkpOwotICAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgICAgIG9mZnNldCArPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAg ICAgTm9uZQotICAgICAgICAgfQotIAotICAgICB9Ci1AQCAtMTQyMyw3MCArMTc4MSw4OCBAQCBj ZmdfaWYhIHsKLSAgICAgICAgIC8vIHZlY3RvciByZWFkcyB3aXRob3V0IHZlY3RvciB3cml0ZXMu Ci0gCi0gICAgICAgICBwdWIgY29uc3QgQUxVX1NUUklERV9TSVpFOiB1c2l6ZSA9IDg7Ci0gCi0g ICAgICAgICBwdWIgY29uc3QgQUxVX0FMSUdOTUVOVDogdXNpemUgPSA0OwotIAotICAgICAgICAg cHViIGNvbnN0IEFMVV9BTElHTk1FTlRfTUFTSzogdXNpemUgPSAzOwotICAgICB9IGVsc2Ugewot KyAgICAgICAgLy8gU2FmZXR5OiBzcmMgcG9pbnRzIHRvIHR3byB2YWxpZCBgdXNpemVgcywgZHN0 IHBvaW50cyB0byBmb3VyIHZhbGlkIGB1c2l6ZWBzCi0gICAgICAgICAjW2lubGluZShhbHdheXMp XQotICAgICAgICAgdW5zYWZlIGZuIHVucGFja19sYXRpbjFfc3RyaWRlX2FsdShzcmM6ICpjb25z dCB1c2l6ZSwgZHN0OiAqbXV0IHVzaXplKSB7Ci0rICAgICAgICAgICAgLy8gU2FmZXR5OiBzcmMg c2FmZXR5IGludmFyaWFudCB1c2VkIGhlcmUKLSAgICAgICAgICAgICBsZXQgd29yZCA9ICpzcmM7 Ci0gICAgICAgICAgICAgbGV0IHNlY29uZF93b3JkID0gKihzcmMuYWRkKDEpKTsKLSsgICAgICAg ICAgICAvLyBTYWZldHk6IGRzdCBzYWZldHkgaW52YXJpYW50IHBhc3NlZCBkb3duCi0gICAgICAg ICAgICAgdW5wYWNrX2FsdSh3b3JkLCBzZWNvbmRfd29yZCwgZHN0KTsKLSAgICAgICAgIH0KLSAK LSsgICAgICAgIC8vIFNhZmV0eTogc3JjIHBvaW50cyB0byBmb3VyIHZhbGlkIGB1c2l6ZWBzLCBk c3QgcG9pbnRzIHRvIHR3byB2YWxpZCBgdXNpemVgcwotICAgICAgICAgI1tpbmxpbmUoYWx3YXlz KV0KLSAgICAgICAgIHVuc2FmZSBmbiBwYWNrX2xhdGluMV9zdHJpZGVfYWx1KHNyYzogKmNvbnN0 IHVzaXplLCBkc3Q6ICptdXQgdXNpemUpIHsKLSsgICAgICAgICAgICAvLyBTYWZldHk6IHNyYyBz YWZldHkgaW52YXJpYW50IHVzZWQgaGVyZQotICAgICAgICAgICAgIGxldCBmaXJzdCA9ICpzcmM7 Ci0gICAgICAgICAgICAgbGV0IHNlY29uZCA9ICooc3JjLmFkZCgxKSk7Ci0gICAgICAgICAgICAg bGV0IHRoaXJkID0gKihzcmMuYWRkKDIpKTsKLSAgICAgICAgICAgICBsZXQgZm91cnRoID0gKihz cmMuYWRkKDMpKTsKLSsgICAgICAgICAgICAvLyBTYWZldHk6IGRzdCBzYWZldHkgaW52YXJpYW50 IHBhc3NlZCBkb3duCi0gICAgICAgICAgICAgcGFja19hbHUoZmlyc3QsIHNlY29uZCwgdGhpcmQs IGZvdXJ0aCwgZHN0KTsKLSAgICAgICAgIH0KLSAKLSsgICAgICAgIC8vIFNhZmV0eTogc3JjIHBv aW50cyB0byB0d28gdmFsaWQgYHVzaXplYHMsIGRzdCBwb2ludHMgdG8gZm91ciB2YWxpZCBgdXNp emVgcwotICAgICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KLSAgICAgICAgIHVuc2FmZSBmbiBhc2Np aV90b19iYXNpY19sYXRpbl9zdHJpZGVfYWx1KHNyYzogKmNvbnN0IHVzaXplLCBkc3Q6ICptdXQg dXNpemUpIC0+IGJvb2wgewotKyAgICAgICAgICAgIC8vIFNhZmV0eTogc3JjIHNhZmV0eSBpbnZh cmlhbnQgdXNlZCBoZXJlCi0gICAgICAgICAgICAgbGV0IHdvcmQgPSAqc3JjOwotICAgICAgICAg ICAgIGxldCBzZWNvbmRfd29yZCA9ICooc3JjLmFkZCgxKSk7Ci0gICAgICAgICAgICAgLy8gQ2hl Y2sgaWYgdGhlIHdvcmRzIGNvbnRhaW5zIG5vbi1BU0NJSQotICAgICAgICAgICAgIGlmICh3b3Jk ICYgQVNDSUlfTUFTSykgfCAoc2Vjb25kX3dvcmQgJiBBU0NJSV9NQVNLKSAhPSAwIHsKLSAgICAg ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAv LyBTYWZldHk6IGRzdCBzYWZldHkgaW52YXJpYW50IHBhc3NlZCBkb3duCi0gICAgICAgICAgICAg dW5wYWNrX2FsdSh3b3JkLCBzZWNvbmRfd29yZCwgZHN0KTsKLSAgICAgICAgICAgICB0cnVlCi0g ICAgICAgICB9Ci0gCi0rICAgICAgICAvLyBTYWZldHk6IHNyYyBwb2ludHMgZm91ciB2YWxpZCBg dXNpemVgcywgZHN0IHBvaW50cyB0byB0d28gdmFsaWQgYHVzaXplYHMKLSAgICAgICAgICNbaW5s aW5lKGFsd2F5cyldCi0gICAgICAgICB1bnNhZmUgZm4gYmFzaWNfbGF0aW5fdG9fYXNjaWlfc3Ry aWRlX2FsdShzcmM6ICpjb25zdCB1c2l6ZSwgZHN0OiAqbXV0IHVzaXplKSAtPiBib29sIHsKLSsg ICAgICAgICAgICAvLyBTYWZldHk6IHNyYyBzYWZldHkgaW52YXJpYW50IHVzZWQgaGVyZQotICAg ICAgICAgICAgIGxldCBmaXJzdCA9ICpzcmM7Ci0gICAgICAgICAgICAgbGV0IHNlY29uZCA9ICoo c3JjLmFkZCgxKSk7Ci0gICAgICAgICAgICAgbGV0IHRoaXJkID0gKihzcmMuYWRkKDIpKTsKLSAg ICAgICAgICAgICBsZXQgZm91cnRoID0gKihzcmMuYWRkKDMpKTsKLSAgICAgICAgICAgICBpZiAo Zmlyc3QgJiBCQVNJQ19MQVRJTl9NQVNLKSB8IChzZWNvbmQgJiBCQVNJQ19MQVRJTl9NQVNLKSB8 ICh0aGlyZCAmIEJBU0lDX0xBVElOX01BU0spIHwgKGZvdXJ0aCAmIEJBU0lDX0xBVElOX01BU0sp ICE9IDAgewotICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgfQot KyAgICAgICAgICAgIC8vIFNhZmV0eTogZHN0IHNhZmV0eSBpbnZhcmlhbnQgcGFzc2VkIGRvd24K LSAgICAgICAgICAgICBwYWNrX2FsdShmaXJzdCwgc2Vjb25kLCB0aGlyZCwgZm91cnRoLCBkc3Qp OwotICAgICAgICAgICAgIHRydWUKLSAgICAgICAgIH0KLSAKLSsgICAgICAgIC8vIFNhZmV0eTog c3JjLCBkc3QgYm90aCBwb2ludCB0byB0d28gdmFsaWQgYHVzaXplYHMgZWFjaAotKyAgICAgICAg Ly8gU2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQ6IFdpbGwgcmV0dXJuIGJ5dGUgaW5kZXggb2YgZmly c3Qgbm9uLWFzY2lpIGJ5dGUuCi0gICAgICAgICAjW2lubGluZShhbHdheXMpXQotICAgICAgICAg dW5zYWZlIGZuIGFzY2lpX3RvX2FzY2lpX3N0cmlkZShzcmM6ICpjb25zdCB1c2l6ZSwgZHN0OiAq bXV0IHVzaXplKSAtPiBPcHRpb248dXNpemU+IHsKLSsgICAgICAgICAgICAvLyBTYWZldHk6IHNy YyBzYWZldHkgaW52YXJpYW50IHVzZWQgaGVyZQotICAgICAgICAgICAgIGxldCB3b3JkID0gKnNy YzsKLSAgICAgICAgICAgICBsZXQgc2Vjb25kX3dvcmQgPSAqKHNyYy5hZGQoMSkpOwotKyAgICAg ICAgICAgIC8vIFNhZmV0eTogc3JjIHNhZmV0eSBpbnZhcmlhbnQgdXNlZCBoZXJlCi0gICAgICAg ICAgICAgKmRzdCA9IHdvcmQ7Ci0gICAgICAgICAgICAgKihkc3QuYWRkKDEpKSA9IHNlY29uZF93 b3JkOwotKyAgICAgICAgICAgIC8vIFJlbGllcyBvbiBzYWZldHktdXNhYmxlIGludmFyaWFudCBo ZXJlCi0gICAgICAgICAgICAgZmluZF9ub25fYXNjaWkod29yZCwgc2Vjb25kX3dvcmQpCi0gICAg ICAgICB9Ci0gCi0gICAgICAgICBiYXNpY19sYXRpbl9hbHUhKGFzY2lpX3RvX2Jhc2ljX2xhdGlu LCB1OCwgdTE2LCBhc2NpaV90b19iYXNpY19sYXRpbl9zdHJpZGVfYWx1KTsKLSAgICAgICAgIGJh c2ljX2xhdGluX2FsdSEoYmFzaWNfbGF0aW5fdG9fYXNjaWksIHUxNiwgdTgsIGJhc2ljX2xhdGlu X3RvX2FzY2lpX3N0cmlkZV9hbHUpOwotICAgICAgICAgbGF0aW4xX2FsdSEodW5wYWNrX2xhdGlu MSwgdTgsIHUxNiwgdW5wYWNrX2xhdGluMV9zdHJpZGVfYWx1KTsKLSAgICAgICAgIGxhdGluMV9h bHUhKHBhY2tfbGF0aW4xLCB1MTYsIHU4LCBwYWNrX2xhdGluMV9zdHJpZGVfYWx1KTsKLSsgICAg ICAgIC8vIFNhZmV0eSBpbnZhcmlhbnQgdXBoZWxkOiBhc2NpaV90b19hc2NpaV9zdHJpZGUgd2ls bCByZXR1cm4gYnl0ZSBpbmRleCBvZiBmaXJzdCBub24tYXNjaWkgaWYgZm91bmQKLSAgICAgICAg IGFzY2lpX2FsdSEoYXNjaWlfdG9fYXNjaWksIHU4LCB1OCwgYXNjaWlfdG9fYXNjaWlfc3RyaWRl KTsKLSAgICAgfQotIH0KLSAKLSBwdWIgZm4gYXNjaWlfdmFsaWRfdXBfdG8oYnl0ZXM6ICZbdThd KSAtPiB1c2l6ZSB7Ci0gICAgIG1hdGNoIHZhbGlkYXRlX2FzY2lpKGJ5dGVzKSB7Ci0gICAgICAg ICBOb25lID0+IGJ5dGVzLmxlbigpLAotICAgICAgICAgU29tZSgoXywgbnVtX3ZhbGlkKSkgPT4g bnVtX3ZhbGlkLAotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvc3Jj L2hhbmRsZXMucnMgYi90aGlyZF9wYXJ0eS9ydXN0L2VuY29kaW5nX3JzL3NyYy9oYW5kbGVzLnJz Ci0tLS0gYS90aGlyZF9wYXJ0eS9ydXN0L2VuY29kaW5nX3JzL3NyYy9oYW5kbGVzLnJzCi0rKysg Yi90aGlyZF9wYXJ0eS9ydXN0L2VuY29kaW5nX3JzL3NyYy9oYW5kbGVzLnJzCi1AQCAtMjksMTcg KzI5LDE3IEBAIHVzZSBjcmF0ZTo6c2ltZF9mdW5jczo6KjsKLSAjW2NmZyhhbGwoCi0gICAgIGZl YXR1cmUgPSAic2ltZC1hY2NlbCIsCi0gICAgIGFueSgKLSAgICAgICAgIHRhcmdldF9mZWF0dXJl ID0gInNzZTIiLAotICAgICAgICAgYWxsKHRhcmdldF9lbmRpYW4gPSAibGl0dGxlIiwgdGFyZ2V0 X2FyY2ggPSAiYWFyY2g2NCIpLAotICAgICAgICAgYWxsKHRhcmdldF9lbmRpYW4gPSAibGl0dGxl IiwgdGFyZ2V0X2ZlYXR1cmUgPSAibmVvbiIpCi0gICAgICkKLSApKV0KLS11c2UgcGFja2VkX3Np bWQ6OnUxNng4OwotK3VzZSBjb3JlOjpzaW1kOjp1MTZ4ODsKLSAKLSB1c2Ugc3VwZXI6OkRlY29k ZXJSZXN1bHQ7Ci0gdXNlIHN1cGVyOjpFbmNvZGVyUmVzdWx0OwotIHVzZSBjcmF0ZTo6YXNjaWk6 Oio7Ci0gdXNlIGNyYXRlOjp1dGZfODo6Y29udmVydF91dGY4X3RvX3V0ZjE2X3VwX3RvX2ludmFs aWQ7Ci0gdXNlIGNyYXRlOjp1dGZfODo6dXRmOF92YWxpZF91cF90bzsKLSAKLSBwdWIgZW51bSBT cGFjZTxUPiB7Ci1AQCAtODUsODQgKzg1LDEwMCBAQCBpbXBsIEVuZGlhbiBmb3IgTGl0dGxlRW5k aWFuIHsKLSAgICAgY29uc3QgT1BQT1NJVEVfRU5ESUFOOiBib29sID0gZmFsc2U7Ci0gCi0gICAg ICNbY2ZnKHRhcmdldF9lbmRpYW4gPSAiYmlnIildCi0gICAgIGNvbnN0IE9QUE9TSVRFX0VORElB TjogYm9vbCA9IHRydWU7Ci0gfQotIAotICNbZGVyaXZlKERlYnVnLCBDb3B5LCBDbG9uZSldCi0g c3RydWN0IFVuYWxpZ25lZFUxNlNsaWNlIHsKLSsgICAgLy8gU2FmZXR5IGludmFyaWFudDogcHRy IG11c3QgYmUgdmFsaWQgZm9yIHJlYWRpbmcgMipsZW4gYnl0ZXMKLSAgICAgcHRyOiAqY29uc3Qg dTgsCi0gICAgIGxlbjogdXNpemUsCi0gfQotIAotIGltcGwgVW5hbGlnbmVkVTE2U2xpY2Ugewot KyAgICAvLy8gU2FmZXR5OiBwdHIgbXVzdCBiZSB2YWxpZCBmb3IgcmVhZGluZyAyKmxlbiBieXRl cwotICAgICAjW2lubGluZShhbHdheXMpXQotICAgICBwdWIgdW5zYWZlIGZuIG5ldyhwdHI6ICpj b25zdCB1OCwgbGVuOiB1c2l6ZSkgLT4gVW5hbGlnbmVkVTE2U2xpY2UgewotKyAgICAgICAgLy8g U2FmZXR5OiBmaWVsZCBpbnZhcmlhbnQgcGFzc2VkIHVwIHRvIGNhbGxlciBoZXJlCi0gICAgICAg ICBVbmFsaWduZWRVMTZTbGljZSB7IHB0ciwgbGVuIH0KLSAgICAgfQotIAotICAgICAjW2lubGlu ZShhbHdheXMpXQotICAgICBwdWIgZm4gdHJpbV9sYXN0KCZtdXQgc2VsZikgewotICAgICAgICAg YXNzZXJ0IShzZWxmLmxlbiA+IDApOwotKyAgICAgICAgLy8gU2FmZXR5OiBpbnZhcmlhbnQgdXBo ZWxkIGhlcmU6IGEgc2xpY2UgaXMgc3RpbGwgdmFsaWQgd2l0aCBhIHNob3J0ZXIgbGVuCi0gICAg ICAgICBzZWxmLmxlbiAtPSAxOwotICAgICB9Ci0gCi0gICAgICNbaW5saW5lKGFsd2F5cyldCi0g ICAgIHB1YiBmbiBhdCgmc2VsZiwgaTogdXNpemUpIC0+IHUxNiB7Ci0gICAgICAgICB1c2UgY29y ZTo6bWVtOjpNYXliZVVuaW5pdDsKLSAKLSAgICAgICAgIGFzc2VydCEoaSA8IHNlbGYubGVuKTsK LSAgICAgICAgIHVuc2FmZSB7Ci0gICAgICAgICAgICAgbGV0IG11dCB1OiBNYXliZVVuaW5pdDx1 MTY+ID0gTWF5YmVVbmluaXQ6OnVuaW5pdCgpOwotKyAgICAgICAgICAgIC8vIFNhZmV0eTogaSBp cyBhdCBtb3N0IGxlbiAtIDEsIHdoaWNoIHdvcmtzIGhlcmUKLSAgICAgICAgICAgICA6OmNvcmU6 OnB0cjo6Y29weV9ub25vdmVybGFwcGluZyhzZWxmLnB0ci5hZGQoaSAqIDIpLCB1LmFzX211dF9w dHIoKSBhcyAqbXV0IHU4LCAyKTsKLSsgICAgICAgICAgICAvLyBTYWZldHk6IHZhbGlkIHJlYWQg YWJvdmUgbGV0cyB1cyBkbyB0aGlzCi0gICAgICAgICAgICAgdS5hc3N1bWVfaW5pdCgpCi0gICAg ICAgICB9Ci0gICAgIH0KLSAKLSAgICAgI1tjZmcoZmVhdHVyZSA9ICJzaW1kLWFjY2VsIildCi0g ICAgICNbaW5saW5lKGFsd2F5cyldCi0gICAgIHB1YiBmbiBzaW1kX2F0KCZzZWxmLCBpOiB1c2l6 ZSkgLT4gdTE2eDggewotKyAgICAgICAgLy8gU2FmZXR5OiBpL2xlbiBhcmUgb24gdGhlIHNjYWxl IG9mIHUxNnMsIGVhY2ggb25lIGNvcnJlc3BvbmRzIHRvIDIgdThzCi0gICAgICAgICBhc3NlcnQh KGkgKyBTSU1EX1NUUklERV9TSVpFIC8gMiA8PSBzZWxmLmxlbik7Ci0gICAgICAgICBsZXQgYnl0 ZV9pbmRleCA9IGkgKiAyOwotKyAgICAgICAgLy8gU2FmZXR5OiBsb2FkMTZfdW5hbGlnbmVkIG5l ZWRzIFNJTURfU1RSSURFX1NJWkU9MTYgdTggZWxlbWVudHMgdG8gcmVhZCwKLSsgICAgICAgIC8v IG9yIDE2LzIgPSA4IHUxNiBlbGVtZW50cyB0byByZWFkLgotKyAgICAgICAgLy8gV2UgaGF2ZSBj aGVja2VkIHRoYXQgd2UgaGF2ZSBhdCBsZWFzdCB0aGF0IG1hbnkgYWJvdmUuCi0rCi0gICAgICAg ICB1bnNhZmUgeyB0b191MTZfbGFuZXMobG9hZDE2X3VuYWxpZ25lZChzZWxmLnB0ci5hZGQoYnl0 ZV9pbmRleCkpKSB9Ci0gICAgIH0KLSAKLSAgICAgI1tpbmxpbmUoYWx3YXlzKV0KLSAgICAgcHVi IGZuIGxlbigmc2VsZikgLT4gdXNpemUgewotICAgICAgICAgc2VsZi5sZW4KLSAgICAgfQotIAot ICAgICAjW2lubGluZShhbHdheXMpXQotICAgICBwdWIgZm4gdGFpbCgmc2VsZiwgZnJvbTogdXNp emUpIC0+IFVuYWxpZ25lZFUxNlNsaWNlIHsKLSAgICAgICAgIC8vIFhYWCB0aGUgcmV0dXJuIHZh bHVlIHNob3VsZCBiZSByZXN0cmljdGVkIG5vdCB0bwotICAgICAgICAgLy8gb3V0bGl2ZSBzZWxm LgotICAgICAgICAgYXNzZXJ0IShmcm9tIDw9IHNlbGYubGVuKTsKLSsgICAgICAgIC8vIFNhZmV0 eTogVGhpcyB1cGhvbGRzIHRoZSBzYW1lIGludmFyaWFudDogYGZyb21gIGlzIGluIGJvdW5kcyBh bmQgd2UncmUgcmV0dXJuaW5nIGEgc2hvcnRlciBzbGljZQotICAgICAgICAgdW5zYWZlIHsgVW5h bGlnbmVkVTE2U2xpY2U6Om5ldyhzZWxmLnB0ci5hZGQoZnJvbSAqIDIpLCBzZWxmLmxlbiAtIGZy b20pIH0KLSAgICAgfQotIAotICAgICAjW2NmZyhmZWF0dXJlID0gInNpbWQtYWNjZWwiKV0KLSAg ICAgI1tpbmxpbmUoYWx3YXlzKV0KLSAgICAgcHViIGZuIGNvcHlfYm1wX3RvPEU6IEVuZGlhbj4o JnNlbGYsIG90aGVyOiAmbXV0IFt1MTZdKSAtPiBPcHRpb248KHUxNiwgdXNpemUpPiB7Ci0gICAg ICAgICBhc3NlcnQhKHNlbGYubGVuIDw9IG90aGVyLmxlbigpKTsKLSAgICAgICAgIGxldCBtdXQg b2Zmc2V0ID0gMDsKLSsgICAgICAgIC8vIFNhZmV0eTogU0lNRF9TVFJJREVfU0laRSBpcyBtZWFz dXJlZCBpbiBieXRlcywgd2hlcmVhcyBsZW4gaXMgaW4gdTE2cy4gV2UgY2hlY2sgd2UgY2FuCi0r ICAgICAgICAvLyBtdW5jaCBTSU1EX1NUUklERV9TSVpFIC8gMiB1MTZzIHdoaWNoIG1lYW5zIHdl IGNhbiB3cml0ZSBTSU1EX1NUUklERV9TSVpFIHU4cwotICAgICAgICAgaWYgU0lNRF9TVFJJREVf U0laRSAvIDIgPD0gc2VsZi5sZW4gewotICAgICAgICAgICAgIGxldCBsZW5fbWludXNfc3RyaWRl ID0gc2VsZi5sZW4gLSBTSU1EX1NUUklERV9TSVpFIC8gMjsKLSAgICAgICAgICAgICBsb29wIHsK LSAgICAgICAgICAgICAgICAgbGV0IG11dCBzaW1kID0gc2VsZi5zaW1kX2F0KG9mZnNldCk7Ci0g ICAgICAgICAgICAgICAgIGlmIEU6Ok9QUE9TSVRFX0VORElBTiB7Ci0gICAgICAgICAgICAgICAg ICAgICBzaW1kID0gc2ltZF9ieXRlX3N3YXAoc2ltZCk7Ci0gICAgICAgICAgICAgICAgIH0KLSsg ICAgICAgICAgICAgICAgLy8gU2FmZXR5OiB3ZSBoYXZlIGVub3VnaCBzcGFjZSBvbiB0aGUgb3Ro ZXIgc2lkZSB0byB3cml0ZSB0aGlzCi0gICAgICAgICAgICAgICAgIHVuc2FmZSB7Ci0gICAgICAg ICAgICAgICAgICAgICBzdG9yZThfdW5hbGlnbmVkKG90aGVyLmFzX211dF9wdHIoKS5hZGQob2Zm c2V0KSwgc2ltZCk7Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgaWYgY29u dGFpbnNfc3Vycm9nYXRlcyhzaW1kKSB7Ci0gICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gU0lNRF9TVFJJREVf U0laRSAvIDI7Ci0rICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogVGhpcyBlbnN1cmVzIHdlIHN0 aWxsIGhhdmUgc3BhY2UgZm9yIHdyaXRpbmcgU0lNRF9TVFJJREVfU0laRSB1OHMKLSAgICAgICAg ICAgICAgICAgaWYgb2Zmc2V0ID4gbGVuX21pbnVzX3N0cmlkZSB7Ci0gICAgICAgICAgICAgICAg ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLSAgICAgICAg IH0KLSAgICAgICAgIHdoaWxlIG9mZnNldCA8IHNlbGYubGVuIHsKLSAgICAgICAgICAgICBsZXQg dW5pdCA9IHN3YXBfaWZfb3Bwb3NpdGVfZW5kaWFuOjo8RT4oc2VsZi5hdChvZmZzZXQpKTsKLSAg ICAgICAgICAgICBvdGhlcltvZmZzZXRdID0gdW5pdDsKLUBAIC0yMzEsMzMgKzI0NywzNyBAQCBm biBjb3B5X3VuYWxpZ25lZF9iYXNpY19sYXRpbl90b19hc2NpaTxFCi0gI1tjZmcoZmVhdHVyZSA9 ICJzaW1kLWFjY2VsIildCi0gI1tpbmxpbmUoYWx3YXlzKV0KLSBmbiBjb3B5X3VuYWxpZ25lZF9i YXNpY19sYXRpbl90b19hc2NpaTxFOiBFbmRpYW4+KAotICAgICBzcmM6IFVuYWxpZ25lZFUxNlNs aWNlLAotICAgICBkc3Q6ICZtdXQgW3U4XSwKLSApIC0+IENvcHlBc2NpaVJlc3VsdDx1c2l6ZSwg KHUxNiwgdXNpemUpPiB7Ci0gICAgIGxldCBsZW4gPSA6OmNvcmU6OmNtcDo6bWluKHNyYy5sZW4o KSwgZHN0LmxlbigpKTsKLSAgICAgbGV0IG11dCBvZmZzZXQgPSAwOwotKyAgICAvLyBTYWZldHk6 IFRoaXMgY2hlY2sgZW5zdXJlcyB3ZSBhcmUgYWJsZSB0byByZWFkL3dyaXRlIGF0IGxlYXN0IFNJ TURfU1RSSURFX1NJWkUgZWxlbWVudHMKLSAgICAgaWYgU0lNRF9TVFJJREVfU0laRSA8PSBsZW4g ewotICAgICAgICAgbGV0IGxlbl9taW51c19zdHJpZGUgPSBsZW4gLSBTSU1EX1NUUklERV9TSVpF OwotICAgICAgICAgbG9vcCB7Ci0gICAgICAgICAgICAgbGV0IG11dCBmaXJzdCA9IHNyYy5zaW1k X2F0KG9mZnNldCk7Ci0gICAgICAgICAgICAgbGV0IG11dCBzZWNvbmQgPSBzcmMuc2ltZF9hdChv ZmZzZXQgKyAoU0lNRF9TVFJJREVfU0laRSAvIDIpKTsKLSAgICAgICAgICAgICBpZiBFOjpPUFBP U0lURV9FTkRJQU4gewotICAgICAgICAgICAgICAgICBmaXJzdCA9IHNpbWRfYnl0ZV9zd2FwKGZp cnN0KTsKLSAgICAgICAgICAgICAgICAgc2Vjb25kID0gc2ltZF9ieXRlX3N3YXAoc2Vjb25kKTsK LSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgaWYgIXNpbWRfaXNfYmFzaWNfbGF0aW4oZmly c3QgfCBzZWNvbmQpIHsKLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgfQot ICAgICAgICAgICAgIGxldCBwYWNrZWQgPSBzaW1kX3BhY2soZmlyc3QsIHNlY29uZCk7Ci0rICAg ICAgICAgICAgLy8gU2FmZXR5OiBXZSBhcmUgYWJsZSB0byB3cml0ZSBTSU1EX1NUUklERV9TSVpF IGVsZW1lbnRzIGluIHRoaXMgaXRlcmF0aW9uCi0gICAgICAgICAgICAgdW5zYWZlIHsKLSAgICAg ICAgICAgICAgICAgc3RvcmUxNl91bmFsaWduZWQoZHN0LmFzX211dF9wdHIoKS5hZGQob2Zmc2V0 KSwgcGFja2VkKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgb2Zmc2V0ICs9IFNJTURf U1RSSURFX1NJWkU7Ci0rICAgICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGlzIGBvZmZzZXQgPiBs ZW4gLSBTSU1EX1NUUklERV9TSVpFYCwgd2hpY2ggZW5zdXJlcyB0aGF0IHdlIGNhbiB3cml0ZSBh dCBsZWFzdCBTSU1EX1NUUklERV9TSVpFIGVsZW1lbnRzCi0rICAgICAgICAgICAgLy8gaW4gdGhl IG5leHQgaXRlcmF0aW9uCi0gICAgICAgICAgICAgaWYgb2Zmc2V0ID4gbGVuX21pbnVzX3N0cmlk ZSB7Ci0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0K LSAgICAgfQotICAgICBjb3B5X3VuYWxpZ25lZF9iYXNpY19sYXRpbl90b19hc2NpaV9hbHU6OjxF PihzcmMudGFpbChvZmZzZXQpLCAmbXV0IGRzdFtvZmZzZXQuLl0sIG9mZnNldCkKLSB9Ci0gCi1A QCAtNjMyLDk0ICs2NTIsMTA2IEBAIGltcGw8J2E+IFV0ZjE2RGVzdGluYXRpb248J2E+IHsKLSAg ICAgI1tpbmxpbmUoYWx3YXlzKV0KLSAgICAgZm4gd3JpdGVfYXN0cmFsKCZtdXQgc2VsZiwgYXN0 cmFsOiB1MzIpIHsKLSAgICAgICAgIGRlYnVnX2Fzc2VydCEoYXN0cmFsID4gMHhGRkZGKTsKLSAg ICAgICAgIGRlYnVnX2Fzc2VydCEoYXN0cmFsIDw9IDB4MTBfRkZGRik7Ci0gICAgICAgICBzZWxm LndyaXRlX2NvZGVfdW5pdCgoMHhEN0MwICsgKGFzdHJhbCA+PiAxMCkpIGFzIHUxNik7Ci0gICAg ICAgICBzZWxmLndyaXRlX2NvZGVfdW5pdCgoMHhEQzAwICsgKGFzdHJhbCAmIDB4M0ZGKSkgYXMg dTE2KTsKLSAgICAgfQotICAgICAjW2lubGluZShhbHdheXMpXQotLSAgICBwdWIgZm4gd3JpdGVf c3Vycm9nYXRlX3BhaXIoJm11dCBzZWxmLCBoaWdoOiB1MTYsIGxvdzogdTE2KSB7Ci0rICAgIGZu IHdyaXRlX3N1cnJvZ2F0ZV9wYWlyKCZtdXQgc2VsZiwgaGlnaDogdTE2LCBsb3c6IHUxNikgewot ICAgICAgICAgc2VsZi53cml0ZV9jb2RlX3VuaXQoaGlnaCk7Ci0gICAgICAgICBzZWxmLndyaXRl X2NvZGVfdW5pdChsb3cpOwotICAgICB9Ci0gICAgICNbaW5saW5lKGFsd2F5cyldCi0gICAgIGZu IHdyaXRlX2JpZzVfY29tYmluYXRpb24oJm11dCBzZWxmLCBjb21iaW5lZDogdTE2LCBjb21iaW5p bmc6IHUxNikgewotICAgICAgICAgc2VsZi53cml0ZV9ibXBfZXhjbF9hc2NpaShjb21iaW5lZCk7 Ci0gICAgICAgICBzZWxmLndyaXRlX2JtcF9leGNsX2FzY2lpKGNvbWJpbmluZyk7Ci0gICAgIH0K LSsgICAgLy8gU2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQ6IENvcHlBc2NpaVJlc3VsdDo6R29PbiB3 aWxsIG9ubHkgY29udGFpbiBieXRlcyA+PTB4ODAKLSAgICAgI1tpbmxpbmUoYWx3YXlzKV0KLSAg ICAgcHViIGZuIGNvcHlfYXNjaWlfZnJvbV9jaGVja19zcGFjZV9ibXA8J2I+KAotICAgICAgICAg JidiIG11dCBzZWxmLAotICAgICAgICAgc291cmNlOiAmbXV0IEJ5dGVTb3VyY2UsCi0gICAgICkg LT4gQ29weUFzY2lpUmVzdWx0PChEZWNvZGVyUmVzdWx0LCB1c2l6ZSwgdXNpemUpLCAodTgsIFV0 ZjE2Qm1wSGFuZGxlPCdiLCAnYT4pPiB7Ci0gICAgICAgICBsZXQgbm9uX2FzY2lpX3JldCA9IHsK LSAgICAgICAgICAgICBsZXQgc3JjX3JlbWFpbmluZyA9ICZzb3VyY2Uuc2xpY2Vbc291cmNlLnBv cy4uXTsKLSAgICAgICAgICAgICBsZXQgZHN0X3JlbWFpbmluZyA9ICZtdXQgc2VsZi5zbGljZVtz ZWxmLnBvcy4uXTsKLSAgICAgICAgICAgICBsZXQgKHBlbmRpbmcsIGxlbmd0aCkgPSBpZiBkc3Rf cmVtYWluaW5nLmxlbigpIDwgc3JjX3JlbWFpbmluZy5sZW4oKSB7Ci0gICAgICAgICAgICAgICAg IChEZWNvZGVyUmVzdWx0OjpPdXRwdXRGdWxsLCBkc3RfcmVtYWluaW5nLmxlbigpKQotICAgICAg ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgIChEZWNvZGVyUmVzdWx0OjpJbnB1dEVt cHR5LCBzcmNfcmVtYWluaW5nLmxlbigpKQotICAgICAgICAgICAgIH07Ci0rICAgICAgICAgICAg Ly8gU2FmZXR5OiBUaGlzIGZ1bmN0aW9uIGlzIGRvY3VtZW50ZWQgYXMgbmVlZGluZyB2YWxpZCBw b2ludGVycyBmb3Igc3JjL2Rlc3QgYW5kIGxlbiwgd2hpY2gKLSsgICAgICAgICAgICAvLyBpcyB0 cnVlIHNpbmNlIHdlJ3ZlIHBhc3NlZCB0aGUgbWludW11bSBsZW5ndGggb2YgdGhlIHR3bwotICAg ICAgICAgICAgIG1hdGNoIHVuc2FmZSB7Ci0gICAgICAgICAgICAgICAgIGFzY2lpX3RvX2Jhc2lj X2xhdGluKHNyY19yZW1haW5pbmcuYXNfcHRyKCksIGRzdF9yZW1haW5pbmcuYXNfbXV0X3B0cigp LCBsZW5ndGgpCi0gICAgICAgICAgICAgfSB7Ci0gICAgICAgICAgICAgICAgIE5vbmUgPT4gewot ICAgICAgICAgICAgICAgICAgICAgc291cmNlLnBvcyArPSBsZW5ndGg7Ci0gICAgICAgICAgICAg ICAgICAgICBzZWxmLnBvcyArPSBsZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICByZXR1cm4g Q29weUFzY2lpUmVzdWx0OjpTdG9wKChwZW5kaW5nLCBzb3VyY2UucG9zLCBzZWxmLnBvcykpOwot ICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogdGhlIGZ1bmN0 aW9uIGlzIGRvY3VtZW50ZWQgYXMgcmV0dXJuaW5nIGJ5dGVzID49MHg4MCBpbiB0aGUgU29tZQot ICAgICAgICAgICAgICAgICBTb21lKChub25fYXNjaWksIGNvbnN1bWVkKSkgPT4gewotICAgICAg ICAgICAgICAgICAgICAgc291cmNlLnBvcyArPSBjb25zdW1lZDsKLSAgICAgICAgICAgICAgICAg ICAgIHNlbGYucG9zICs9IGNvbnN1bWVkOwotICAgICAgICAgICAgICAgICAgICAgc291cmNlLnBv cyArPSAxOyAvLyArMSBmb3Igbm9uX2FzY2lpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vIFNhZmV0eTogbm9uLWFzY2lpIGJ1YmJsZWQgb3V0IGhlcmUKLSAgICAgICAg ICAgICAgICAgICAgIG5vbl9hc2NpaQotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg fQotICAgICAgICAgfTsKLSsgICAgICAgIC8vIFNhZmV0eTogbm9uLWFzY2lpIHJldHVybmVkIGhl cmUKLSAgICAgICAgIENvcHlBc2NpaVJlc3VsdDo6R29Pbigobm9uX2FzY2lpX3JldCwgVXRmMTZC bXBIYW5kbGU6Om5ldyhzZWxmKSkpCi0gICAgIH0KLSsgICAgLy8gU2FmZXR5LXVzYWJsZSBpbnZh cmlhbnQ6IENvcHlBc2NpaVJlc3VsdDo6R29PbiB3aWxsIG9ubHkgY29udGFpbiBieXRlcyA+PTB4 ODAKLSAgICAgI1tpbmxpbmUoYWx3YXlzKV0KLSAgICAgcHViIGZuIGNvcHlfYXNjaWlfZnJvbV9j aGVja19zcGFjZV9hc3RyYWw8J2I+KAotICAgICAgICAgJidiIG11dCBzZWxmLAotICAgICAgICAg c291cmNlOiAmbXV0IEJ5dGVTb3VyY2UsCi0gICAgICkgLT4gQ29weUFzY2lpUmVzdWx0PChEZWNv ZGVyUmVzdWx0LCB1c2l6ZSwgdXNpemUpLCAodTgsIFV0ZjE2QXN0cmFsSGFuZGxlPCdiLCAnYT4p PiB7Ci0gICAgICAgICBsZXQgbm9uX2FzY2lpX3JldCA9IHsKLSAgICAgICAgICAgICBsZXQgZHN0 X2xlbiA9IHNlbGYuc2xpY2UubGVuKCk7Ci0gICAgICAgICAgICAgbGV0IHNyY19yZW1haW5pbmcg PSAmc291cmNlLnNsaWNlW3NvdXJjZS5wb3MuLl07Ci0gICAgICAgICAgICAgbGV0IGRzdF9yZW1h aW5pbmcgPSAmbXV0IHNlbGYuc2xpY2Vbc2VsZi5wb3MuLl07Ci0gICAgICAgICAgICAgbGV0IChw ZW5kaW5nLCBsZW5ndGgpID0gaWYgZHN0X3JlbWFpbmluZy5sZW4oKSA8IHNyY19yZW1haW5pbmcu bGVuKCkgewotICAgICAgICAgICAgICAgICAoRGVjb2RlclJlc3VsdDo6T3V0cHV0RnVsbCwgZHN0 X3JlbWFpbmluZy5sZW4oKSkKLSAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg ICAoRGVjb2RlclJlc3VsdDo6SW5wdXRFbXB0eSwgc3JjX3JlbWFpbmluZy5sZW4oKSkKLSAgICAg ICAgICAgICB9OwotKyAgICAgICAgICAgIC8vIFNhZmV0eTogVGhpcyBmdW5jdGlvbiBpcyBkb2N1 bWVudGVkIGFzIG5lZWRpbmcgdmFsaWQgcG9pbnRlcnMgZm9yIHNyYy9kZXN0IGFuZCBsZW4sIHdo aWNoCi0rICAgICAgICAgICAgLy8gaXMgdHJ1ZSBzaW5jZSB3ZSd2ZSBwYXNzZWQgdGhlIG1pbnVt dW0gbGVuZ3RoIG9mIHRoZSB0d28KLSAgICAgICAgICAgICBtYXRjaCB1bnNhZmUgewotICAgICAg ICAgICAgICAgICBhc2NpaV90b19iYXNpY19sYXRpbihzcmNfcmVtYWluaW5nLmFzX3B0cigpLCBk c3RfcmVtYWluaW5nLmFzX211dF9wdHIoKSwgbGVuZ3RoKQotICAgICAgICAgICAgIH0gewotICAg ICAgICAgICAgICAgICBOb25lID0+IHsKLSAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5wb3Mg Kz0gbGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3MgKz0gbGVuZ3RoOwotICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIENvcHlBc2NpaVJlc3VsdDo6U3RvcCgocGVuZGluZywg c291cmNlLnBvcywgc2VsZi5wb3MpKTsKLSAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAg ICAgICAvLyBTYWZldHk6IHRoZSBmdW5jdGlvbiBpcyBkb2N1bWVudGVkIGFzIHJldHVybmluZyBi eXRlcyA+PTB4ODAgaW4gdGhlIFNvbWUKLSAgICAgICAgICAgICAgICAgU29tZSgobm9uX2FzY2lp LCBjb25zdW1lZCkpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5wb3MgKz0gY29u c3VtZWQ7Ci0gICAgICAgICAgICAgICAgICAgICBzZWxmLnBvcyArPSBjb25zdW1lZDsKLSAgICAg ICAgICAgICAgICAgICAgIGlmIHNlbGYucG9zICsgMSA8IGRzdF9sZW4gewotICAgICAgICAgICAg ICAgICAgICAgICAgIHNvdXJjZS5wb3MgKz0gMTsgLy8gKzEgZm9yIG5vbl9hc2NpaQotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBub24tYXNjaWkg YnViYmxlZCBvdXQgaGVyZQotICAgICAgICAgICAgICAgICAgICAgICAgIG5vbl9hc2NpaQotICAg ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gQ29weUFzY2lpUmVzdWx0OjpTdG9wKCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RGVjb2RlclJlc3VsdDo6T3V0cHV0RnVsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c291cmNlLnBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3MsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgKSk7Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9OwotKyAgICAgICAgLy8gU2Fm ZXR5OiBub24tYXNjaWkgcmV0dXJuZWQgaGVyZQotICAgICAgICAgQ29weUFzY2lpUmVzdWx0OjpH b09uKChub25fYXNjaWlfcmV0LCBVdGYxNkFzdHJhbEhhbmRsZTo6bmV3KHNlbGYpKSkKLSAgICAg fQotICAgICAjW2lubGluZShhbHdheXMpXQotICAgICBwdWIgZm4gY29weV91dGY4X3VwX3RvX2lu dmFsaWRfZnJvbSgmbXV0IHNlbGYsIHNvdXJjZTogJm11dCBCeXRlU291cmNlKSB7Ci0gICAgICAg ICBsZXQgc3JjX3JlbWFpbmluZyA9ICZzb3VyY2Uuc2xpY2Vbc291cmNlLnBvcy4uXTsKLSAgICAg ICAgIGxldCBkc3RfcmVtYWluaW5nID0gJm11dCBzZWxmLnNsaWNlW3NlbGYucG9zLi5dOwotICAg ICAgICAgbGV0IChyZWFkLCB3cml0dGVuKSA9IGNvbnZlcnRfdXRmOF90b191dGYxNl91cF90b19p bnZhbGlkKHNyY19yZW1haW5pbmcsIGRzdF9yZW1haW5pbmcpOwotICAgICAgICAgc291cmNlLnBv cyArPSByZWFkOwotZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvc3Jj L2xpYi5ycyBiL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvc3JjL2xpYi5ycwotLS0tIGEv dGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9zcmMvbGliLnJzCi0rKysgYi90aGlyZF9wYXJ0 eS9ydXN0L2VuY29kaW5nX3JzL3NyYy9saWIucnMKLUBAIC02ODQsMzcgKzY4NCwyNiBAQAotIC8v ISA8dHI+PHRkPlRJUy02MjA8L3RkPjx0ZD53aW5kb3dzLTg3NDwvdGQ+PC90cj4KLSAvLyEgPC90 Ym9keT4KLSAvLyEgPC90YWJsZT4KLSAvLyEKLSAvLyEgU2VlIHRoZSBzZWN0aW9uIFtfVVRGLTE2 TEUsIFVURi0xNkJFIGFuZCBVbmljb2RlIEVuY29kaW5nIFNjaGVtZXNfXSgjdXRmLTE2bGUtdXRm LTE2YmUtYW5kLXVuaWNvZGUtZW5jb2Rpbmctc2NoZW1lcykKLSAvLyEgZm9yIGRpc2N1c3Npb24g YWJvdXQgdGhlIFVURi0xNiBmYW1pbHkuCi0gCi0gIyFbbm9fc3RkXQotLSMhW2NmZ19hdHRyKGZl YXR1cmUgPSAic2ltZC1hY2NlbCIsIGZlYXR1cmUoY29yZV9pbnRyaW5zaWNzKSldCi0rIyFbY2Zn X2F0dHIoZmVhdHVyZSA9ICJzaW1kLWFjY2VsIiwgZmVhdHVyZShjb3JlX2ludHJpbnNpY3MsIHBv cnRhYmxlX3NpbWQpKV0KLSAKLSAjW2NmZyhmZWF0dXJlID0gImFsbG9jIildCi0gI1tjZmdfYXR0 cih0ZXN0LCBtYWNyb191c2UpXQotIGV4dGVybiBjcmF0ZSBhbGxvYzsKLSAKLSBleHRlcm4gY3Jh dGUgY29yZTsKLSAjW21hY3JvX3VzZV0KLSBleHRlcm4gY3JhdGUgY2ZnX2lmOwotIAotLSNbY2Zn KGFsbCgKLS0gICAgZmVhdHVyZSA9ICJzaW1kLWFjY2VsIiwKLS0gICAgYW55KAotLSAgICAgICAg dGFyZ2V0X2ZlYXR1cmUgPSAic3NlMiIsCi0tICAgICAgICBhbGwodGFyZ2V0X2VuZGlhbiA9ICJs aXR0bGUiLCB0YXJnZXRfYXJjaCA9ICJhYXJjaDY0IiksCi0tICAgICAgICBhbGwodGFyZ2V0X2Vu ZGlhbiA9ICJsaXR0bGUiLCB0YXJnZXRfZmVhdHVyZSA9ICJuZW9uIikKLS0gICAgKQotLSkpXQot LSNbbWFjcm9fdXNlKHNodWZmbGUpXQotLWV4dGVybiBjcmF0ZSBwYWNrZWRfc2ltZDsKLS0KLSAj W2NmZyhmZWF0dXJlID0gInNlcmRlIildCi0gZXh0ZXJuIGNyYXRlIHNlcmRlOwotIAotICNbY2Zn KGFsbCh0ZXN0LCBmZWF0dXJlID0gInNlcmRlIikpXQotIGV4dGVybiBjcmF0ZSBiaW5jb2RlOwot ICNbY2ZnKGFsbCh0ZXN0LCBmZWF0dXJlID0gInNlcmRlIikpXQotICNbbWFjcm9fdXNlXQotIGV4 dGVybiBjcmF0ZSBzZXJkZV9kZXJpdmU7Ci1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvcnVzdC9l bmNvZGluZ19ycy9zcmMvbWVtLnJzIGIvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9zcmMv bWVtLnJzCi0tLS0gYS90aGlyZF9wYXJ0eS9ydXN0L2VuY29kaW5nX3JzL3NyYy9tZW0ucnMKLSsr KyBiL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvc3JjL21lbS5ycwotQEAgLTExMSwxNiAr MTExLDIxIEBAIG1hY3JvX3J1bGVzISBieV91bml0X2NoZWNrX2FsdSB7Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVudGlsX2FsaWdubWVudCAtPSAxOwotICAgICAgICAgICAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhY2N1ID49ICRib3VuZCB7Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAg ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg ICBsZXQgbGVuX21pbnVzX3N0cmlkZSA9IGxlbiAtIEFMVV9BTElHTk1FTlQgLyB1bml0X3NpemU7 Ci0gICAgICAgICAgICAgICAgICAgICBpZiBvZmZzZXQgKyAoNCAqIChBTFVfQUxJR05NRU5UIC8g dW5pdF9zaXplKSkgPD0gbGVuIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6 IHRoZSBhYm92ZSBjaGVjayBsZXRzIHVzIHBlcmZvcm0gNCBjb25zZWN1dGl2ZSByZWFkcyBvZgot KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxlbmd0aCBBTFVfQUxJR05NRU5UIC8gdW5pdF9z aXplLiBBTFVfQUxJR05NRU5UIGlzIHRoZSBzaXplIG9mIHVzaXplLCBhbmQgdW5pdF9zaXplCi0r ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgdGhlIHNpemUgb2YgdGhlIGBzcmNgIHBvaW50 ZXIsIHNvIHRoaXMgaXMgZXF1YWwgdG8gcGVyZm9ybWluZyBmb3VyIHVzaXplIHJlYWRzLgotKyAg ICAgICAgICAgICAgICAgICAgICAgIC8vCi0rICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhp cyBpbnZhcmlhbnQgaXMgdXBoZWxkIG9uIGFsbCBsb29wIGl0ZXJhdGlvbnMKLSAgICAgICAgICAg ICAgICAgICAgICAgICBsZXQgbGVuX21pbnVzX3Vucm9sbCA9IGxlbiAtICg0ICogKEFMVV9BTElH Tk1FTlQgLyB1bml0X3NpemUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIHsKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVucm9sbF9hY2N1ID0gdW5zYWZlIHsgKihz cmMuYWRkKG9mZnNldCkgYXMgKmNvbnN0IHVzaXplKSB9Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHVuc2FmZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKihzcmMuYWRkKG9mZnNldCArIChBTFVfQUxJR05NRU5UIC8gdW5pdF9zaXplKSkgYXMgKmNv bnN0IHVzaXplKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCB1bnNhZmUgewotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICooc3JjLmFkZChvZmZzZXQgKyAoMiAqIChBTFVfQUxJR05NRU5UIC8g dW5pdF9zaXplKSkpCi1AQCAtMTI5LDIyICsxMzQsMjQgQEAgbWFjcm9fcnVsZXMhIGJ5X3VuaXRf Y2hlY2tfYWx1IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5zYWZlIHsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKHNyYy5hZGQob2Zmc2V0ICsg KDMgKiAoQUxVX0FMSUdOTUVOVCAvIHVuaXRfc2l6ZSkpKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhcyAqY29uc3QgdXNpemUpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB1bnJvbGxf YWNjdSAmICRtYXNrICE9IDAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG9mZnNldCArPSA0ICogKEFMVV9BTElHTk1FTlQgLyB1bml0X3NpemUp OwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IHRoaXMgY2hlY2sgbGV0 cyB1cyBjb250aW51ZSB0byBwZXJmb3JtIHRoZSA0IHJlYWRzIGVhcmxpZXIKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYgb2Zmc2V0ID4gbGVuX21pbnVzX3Vucm9sbCB7Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg IH0KLSAgICAgICAgICAgICAgICAgICAgIHdoaWxlIG9mZnNldCA8PSBsZW5fbWludXNfc3RyaWRl IHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IHRoZSBhYm92ZSBjaGVjayBs ZXRzIHVzIHBlcmZvcm0gb25lIHVzaXplIHJlYWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAg YWNjdSB8PSB1bnNhZmUgeyAqKHNyYy5hZGQob2Zmc2V0KSBhcyAqY29uc3QgdXNpemUpIH07Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IEFMVV9BTElHTk1FTlQgLyB1bml0X3Np emU7Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICAgZm9yICZ1bml0IGluICZidWZmZXJbb2Zmc2V0Li5dIHsKLSAg ICAgICAgICAgICAgICAgYWNjdSB8PSB1bml0IGFzIHVzaXplOwotICAgICAgICAgICAgIH0KLUBA IC0xODQsMTYgKzE5MSwyMSBAQCBtYWNyb19ydWxlcyEgYnlfdW5pdF9jaGVja19zaW1kIHsKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW50aWxfYWxpZ25tZW50IC09IDE7Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFjY3UgPj0g JGJvdW5kIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICAgICAgICAgIGxldCBsZW5fbWludXNfc3RyaWRlID0gbGVuIC0gU0lNRF9TVFJJREVfU0la RSAvIHVuaXRfc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgIGlmIG9mZnNldCArICg0ICogKFNJ TURfU1RSSURFX1NJWkUgLyB1bml0X3NpemUpKSA8PSBsZW4gewotKyAgICAgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogdGhlIGFib3ZlIGNoZWNrIGxldHMgdXMgcGVyZm9ybSA0IGNvbnNl Y3V0aXZlIHJlYWRzIG9mCi0rICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGVuZ3RoIFNJTURf U1RSSURFX1NJWkUgLyB1bml0X3NpemUuIFNJTURfU1RSSURFX1NJWkUgaXMgdGhlIHNpemUgb2Yg JHNpbWRfdHksIGFuZCB1bml0X3NpemUKLSsgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyB0 aGUgc2l6ZSBvZiB0aGUgYHNyY2AgcG9pbnRlciwgc28gdGhpcyBpcyBlcXVhbCB0byBwZXJmb3Jt aW5nIGZvdXIgJHNpbWRfdHkgcmVhZHMuCi0rICAgICAgICAgICAgICAgICAgICAgICAgLy8KLSsg ICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGludmFyaWFudCBpcyB1cGhlbGQgb24gYWxs IGxvb3AgaXRlcmF0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsZW5fbWludXNf dW5yb2xsID0gbGVuIC0gKDQgKiAoU0lNRF9TVFJJREVfU0laRSAvIHVuaXRfc2l6ZSkpOwotICAg ICAgICAgICAgICAgICAgICAgICAgIGxvb3AgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsZXQgdW5yb2xsX2FjY3UgPSB1bnNhZmUgeyAqKHNyYy5hZGQob2Zmc2V0KSBhcyAqY29uc3Qg JHNpbWRfdHkpIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5zYWZlIHsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKHNyYy5hZGQob2Zmc2V0ICsg KFNJTURfU1RSSURFX1NJWkUgLyB1bml0X3NpemUpKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhcyAqY29uc3QgJHNpbWRfdHkpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVuc2Fm ZSB7Ci1AQCAtMjAzLDIzICsyMTUsMjUgQEAgbWFjcm9fcnVsZXMhIGJ5X3VuaXRfY2hlY2tfc2lt ZCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVuc2FmZSB7Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihzcmMuYWRkKG9mZnNldCArICgzICogKFNJ TURfU1RSSURFX1NJWkUgLyB1bml0X3NpemUpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYXMgKmNvbnN0ICRzaW1kX3R5KQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgISRmdW5jKHVu cm9sbF9hY2N1KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs c2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb2Zmc2V0ICs9IDQgKiAoU0lNRF9TVFJJREVfU0laRSAvIHVuaXRfc2l6ZSk7Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogdGhpcyBjaGVjayBsZXRzIHVz IGNvbnRpbnVlIHRvIHBlcmZvcm0gdGhlIDQgcmVhZHMgZWFybGllcgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiBvZmZzZXQgPiBsZW5fbWludXNfdW5yb2xsIHsKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgICAgICAgICAgbGV0IG11dCBzaW1kX2FjY3UgPSAkc3BsYXQ7Ci0gICAgICAg ICAgICAgICAgICAgICB3aGlsZSBvZmZzZXQgPD0gbGVuX21pbnVzX3N0cmlkZSB7Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiB0aGUgYWJvdmUgY2hlY2sgbGV0cyB1cyBwZXJm b3JtIG9uZSAkc2ltZF90eSByZWFkLgotICAgICAgICAgICAgICAgICAgICAgICAgIHNpbWRfYWNj dSA9IHNpbWRfYWNjdSB8IHVuc2FmZSB7ICooc3JjLmFkZChvZmZzZXQpIGFzICpjb25zdCAkc2lt ZF90eSkgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gU0lNRF9TVFJJREVf U0laRSAvIHVuaXRfc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg ICAgICAgIGlmICEkZnVuYyhzaW1kX2FjY3UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIH0K LSAgICAgICAgICAgICB9Ci1AQCAtMjI5LDE4ICsyNDMsMTggQEAgbWFjcm9fcnVsZXMhIGJ5X3Vu aXRfY2hlY2tfc2ltZCB7Ci0gICAgICAgICAgICAgYWNjdSA8ICRib3VuZAotICAgICAgICAgfQot ICAgICB9OwotIH0KLSAKLSBjZmdfaWYhIHsKLSAgICAgaWYgI1tjZmcoYWxsKGZlYXR1cmUgPSAi c2ltZC1hY2NlbCIsIGFueSh0YXJnZXRfZmVhdHVyZSA9ICJzc2UyIiwgYWxsKHRhcmdldF9lbmRp YW4gPSAibGl0dGxlIiwgdGFyZ2V0X2FyY2ggPSAiYWFyY2g2NCIpLCBhbGwodGFyZ2V0X2VuZGlh biA9ICJsaXR0bGUiLCB0YXJnZXRfZmVhdHVyZSA9ICJuZW9uIikpKSldIHsKLSAgICAgICAgIHVz ZSBjcmF0ZTo6c2ltZF9mdW5jczo6KjsKLS0gICAgICAgIHVzZSBwYWNrZWRfc2ltZDo6dTh4MTY7 Ci0tICAgICAgICB1c2UgcGFja2VkX3NpbWQ6OnUxNng4OwotKyAgICAgICAgdXNlIGNvcmU6OnNp bWQ6OnU4eDE2OwotKyAgICAgICAgdXNlIGNvcmU6OnNpbWQ6OnUxNng4OwotIAotICAgICAgICAg Y29uc3QgU0lNRF9BTElHTk1FTlQ6IHVzaXplID0gMTY7Ci0gCi0gICAgICAgICBjb25zdCBTSU1E X0FMSUdOTUVOVF9NQVNLOiB1c2l6ZSA9IDE1OwotIAotICAgICAgICAgYnlfdW5pdF9jaGVja19z aW1kIShpc19hc2NpaV9pbXBsLCB1OCwgdTh4MTY6OnNwbGF0KDApLCB1OHgxNiwgMHg4MCwgc2lt ZF9pc19hc2NpaSk7Ci0gICAgICAgICBieV91bml0X2NoZWNrX3NpbWQhKGlzX2Jhc2ljX2xhdGlu X2ltcGwsIHUxNiwgdTE2eDg6OnNwbGF0KDApLCB1MTZ4OCwgMHg4MCwgc2ltZF9pc19iYXNpY19s YXRpbik7Ci0gICAgICAgICBieV91bml0X2NoZWNrX3NpbWQhKGlzX3V0ZjE2X2xhdGluMV9pbXBs LCB1MTYsIHUxNng4OjpzcGxhdCgwKSwgdTE2eDgsIDB4MTAwLCBzaW1kX2lzX2xhdGluMSk7Ci1k aWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9zcmMvc2ltZF9mdW5jcy5y cyBiL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvc3JjL3NpbWRfZnVuY3MucnMKLS0tLSBh L3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvc3JjL3NpbWRfZnVuY3MucnMKLSsrKyBiL3Ro aXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvc3JjL3NpbWRfZnVuY3MucnMKLUBAIC0yLDY1ICsy LDg0IEBACi0gLy8gZmlsZSBhdCB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBvZiB0aGlzIGRpc3Ry aWJ1dGlvbi4KLSAvLwotIC8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy c2lvbiAyLjAgPExJQ0VOU0UtQVBBQ0hFIG9yCi0gLy8gaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9s aWNlbnNlcy9MSUNFTlNFLTIuMD4gb3IgdGhlIE1JVCBsaWNlbnNlCi0gLy8gPExJQ0VOU0UtTUlU IG9yIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUPiwgYXQgeW91cgotIC8vIG9w dGlvbi4gVGhpcyBmaWxlIG1heSBub3QgYmUgY29waWVkLCBtb2RpZmllZCwgb3IgZGlzdHJpYnV0 ZWQKLSAvLyBleGNlcHQgYWNjb3JkaW5nIHRvIHRob3NlIHRlcm1zLgotIAotLXVzZSBwYWNrZWRf c2ltZDo6dTE2eDg7Ci0tdXNlIHBhY2tlZF9zaW1kOjp1OHgxNjsKLS11c2UgcGFja2VkX3NpbWQ6 OkludG9CaXRzOwotK3VzZSBhbnlfYWxsX3dvcmthcm91bmQ6OmFsbF9tYXNrMTZ4ODsKLSt1c2Ug YW55X2FsbF93b3JrYXJvdW5kOjphbGxfbWFzazh4MTY7Ci0rdXNlIGFueV9hbGxfd29ya2Fyb3Vu ZDo6YW55X21hc2sxNng4OwotK3VzZSBhbnlfYWxsX3dvcmthcm91bmQ6OmFueV9tYXNrOHgxNjsK LSt1c2UgY29yZTo6c2ltZDo6Y21wOjpTaW1kUGFydGlhbEVxOwotK3VzZSBjb3JlOjpzaW1kOjpj bXA6OlNpbWRQYXJ0aWFsT3JkOwotK3VzZSBjb3JlOjpzaW1kOjptYXNrMTZ4ODsKLSt1c2UgY29y ZTo6c2ltZDo6bWFzazh4MTY7Ci0rdXNlIGNvcmU6OnNpbWQ6OnNpbWRfc3dpenpsZTsKLSt1c2Ug Y29yZTo6c2ltZDo6dTE2eDg7Ci0rdXNlIGNvcmU6OnNpbWQ6OnU4eDE2OwotK3VzZSBjb3JlOjpz aW1kOjpUb0J5dGVzOwotIAotIC8vIFRPRE86IE1pZ3JhdGUgdW5hbGlnbmVkIGFjY2VzcyB0byBz dGRsaWIgY29kZSBpZi93aGVuIHRoZSBSRkMKLSAvLyBodHRwczovL2dpdGh1Yi5jb20vcnVzdC1s YW5nL3JmY3MvcHVsbC8xNzI1IGlzIGltcGxlbWVudGVkLgotIAotKy8vLyBTYWZldHkgaW52YXJp YW50OiBwdHIgbXVzdCBiZSB2YWxpZCBmb3IgYW4gdW5hbGlnbmVkIHJlYWQgb2YgMTYgYnl0ZXMK LSAjW2lubGluZShhbHdheXMpXQotIHB1YiB1bnNhZmUgZm4gbG9hZDE2X3VuYWxpZ25lZChwdHI6 ICpjb25zdCB1OCkgLT4gdTh4MTYgewotLSAgICBsZXQgbXV0IHNpbWQgPSA6OmNvcmU6Om1lbTo6 dW5pbml0aWFsaXplZCgpOwotLSAgICA6OmNvcmU6OnB0cjo6Y29weV9ub25vdmVybGFwcGluZyhw dHIsICZtdXQgc2ltZCBhcyAqbXV0IHU4eDE2IGFzICptdXQgdTgsIDE2KTsKLS0gICAgc2ltZAot KyAgICBsZXQgbXV0IHNpbWQgPSA6OmNvcmU6Om1lbTo6TWF5YmVVbmluaXQ6Ojx1OHgxNj46OnVu aW5pdCgpOwotKyAgICA6OmNvcmU6OnB0cjo6Y29weV9ub25vdmVybGFwcGluZyhwdHIsIHNpbWQu YXNfbXV0X3B0cigpIGFzICptdXQgdTgsIDE2KTsKLSsgICAgLy8gU2FmZXR5OiBjb3BpZWQgMTYg Ynl0ZXMgb2YgaW5pdGlhbGl6ZWQgbWVtb3J5IGludG8gdGhpcywgaXQgaXMgbm93IGluaXRpYWxp emVkCi0rICAgIHNpbWQuYXNzdW1lX2luaXQoKQotIH0KLSAKLSsvLy8gU2FmZXR5IGludmFyaWFu dDogcHRyIG11c3QgYmUgdmFsaWQgZm9yIGFuIGFsaWduZWQtZm9yLXU4eDE2IHJlYWQgb2YgMTYg Ynl0ZXMKLSAjW2FsbG93KGRlYWRfY29kZSldCi0gI1tpbmxpbmUoYWx3YXlzKV0KLSBwdWIgdW5z YWZlIGZuIGxvYWQxNl9hbGlnbmVkKHB0cjogKmNvbnN0IHU4KSAtPiB1OHgxNiB7Ci0gICAgICoo cHRyIGFzICpjb25zdCB1OHgxNikKLSB9Ci0gCi0rLy8vIFNhZmV0eSBpbnZhcmlhbnQ6IHB0ciBt dXN0IGJlIHZhbGlkIGZvciBhbiB1bmFsaWduZWQgc3RvcmUgb2YgMTYgYnl0ZXMKLSAjW2lubGlu ZShhbHdheXMpXQotIHB1YiB1bnNhZmUgZm4gc3RvcmUxNl91bmFsaWduZWQocHRyOiAqbXV0IHU4 LCBzOiB1OHgxNikgewotICAgICA6OmNvcmU6OnB0cjo6Y29weV9ub25vdmVybGFwcGluZygmcyBh cyAqY29uc3QgdTh4MTYgYXMgKmNvbnN0IHU4LCBwdHIsIDE2KTsKLSB9Ci0gCi0rLy8vIFNhZmV0 eSBpbnZhcmlhbnQ6IHB0ciBtdXN0IGJlIHZhbGlkIGZvciBhbiBhbGlnbmVkLWZvci11OHgxNiBz dG9yZSBvZiAxNiBieXRlcwotICNbYWxsb3coZGVhZF9jb2RlKV0KLSAjW2lubGluZShhbHdheXMp XQotIHB1YiB1bnNhZmUgZm4gc3RvcmUxNl9hbGlnbmVkKHB0cjogKm11dCB1OCwgczogdTh4MTYp IHsKLSAgICAgKihwdHIgYXMgKm11dCB1OHgxNikgPSBzOwotIH0KLSAKLSsvLy8gU2FmZXR5IGlu dmFyaWFudDogcHRyIG11c3QgYmUgdmFsaWQgZm9yIGFuIHVuYWxpZ25lZCByZWFkIG9mIDE2IGJ5 dGVzCi0gI1tpbmxpbmUoYWx3YXlzKV0KLSBwdWIgdW5zYWZlIGZuIGxvYWQ4X3VuYWxpZ25lZChw dHI6ICpjb25zdCB1MTYpIC0+IHUxNng4IHsKLS0gICAgbGV0IG11dCBzaW1kID0gOjpjb3JlOjpt ZW06OnVuaW5pdGlhbGl6ZWQoKTsKLS0gICAgOjpjb3JlOjpwdHI6OmNvcHlfbm9ub3ZlcmxhcHBp bmcocHRyIGFzICpjb25zdCB1OCwgJm11dCBzaW1kIGFzICptdXQgdTE2eDggYXMgKm11dCB1OCwg MTYpOwotLSAgICBzaW1kCi0rICAgIGxldCBtdXQgc2ltZCA9IDo6Y29yZTo6bWVtOjpNYXliZVVu aW5pdDo6PHUxNng4Pjo6dW5pbml0KCk7Ci0rICAgIDo6Y29yZTo6cHRyOjpjb3B5X25vbm92ZXJs YXBwaW5nKHB0ciBhcyAqY29uc3QgdTgsIHNpbWQuYXNfbXV0X3B0cigpIGFzICptdXQgdTgsIDE2 KTsKLSsgICAgLy8gU2FmZXR5OiBjb3BpZWQgMTYgYnl0ZXMgb2YgaW5pdGlhbGl6ZWQgbWVtb3J5 IGludG8gdGhpcywgaXQgaXMgbm93IGluaXRpYWxpemVkCi0rICAgIHNpbWQuYXNzdW1lX2luaXQo KQotIH0KLSAKLSsvLy8gU2FmZXR5IGludmFyaWFudDogcHRyIG11c3QgYmUgdmFsaWQgZm9yIGFu IGFsaWduZWQtZm9yLXUxNng4IHJlYWQgb2YgMTYgYnl0ZXMKLSAjW2FsbG93KGRlYWRfY29kZSld Ci0gI1tpbmxpbmUoYWx3YXlzKV0KLSBwdWIgdW5zYWZlIGZuIGxvYWQ4X2FsaWduZWQocHRyOiAq Y29uc3QgdTE2KSAtPiB1MTZ4OCB7Ci0gICAgICoocHRyIGFzICpjb25zdCB1MTZ4OCkKLSB9Ci0g Ci0rLy8vIFNhZmV0eSBpbnZhcmlhbnQ6IHB0ciBtdXN0IGJlIHZhbGlkIGZvciBhbiB1bmFsaWdu ZWQgc3RvcmUgb2YgMTYgYnl0ZXMKLSAjW2lubGluZShhbHdheXMpXQotIHB1YiB1bnNhZmUgZm4g c3RvcmU4X3VuYWxpZ25lZChwdHI6ICptdXQgdTE2LCBzOiB1MTZ4OCkgewotICAgICA6OmNvcmU6 OnB0cjo6Y29weV9ub25vdmVybGFwcGluZygmcyBhcyAqY29uc3QgdTE2eDggYXMgKmNvbnN0IHU4 LCBwdHIgYXMgKm11dCB1OCwgMTYpOwotIH0KLSAKLSsvLy8gU2FmZXR5IGludmFyaWFudDogcHRy IG11c3QgYmUgdmFsaWQgZm9yIGFuIGFsaWduZWQtZm9yLXUxNng4IHN0b3JlIG9mIDE2IGJ5dGVz Ci0gI1thbGxvdyhkZWFkX2NvZGUpXQotICNbaW5saW5lKGFsd2F5cyldCi0gcHViIHVuc2FmZSBm biBzdG9yZThfYWxpZ25lZChwdHI6ICptdXQgdTE2LCBzOiB1MTZ4OCkgewotICAgICAqKHB0ciBh cyAqbXV0IHUxNng4KSA9IHM7Ci0gfQotIAotIGNmZ19pZiEgewotICAgICBpZiAjW2NmZyhhbGwo dGFyZ2V0X2ZlYXR1cmUgPSAic3NlMiIsIHRhcmdldF9hcmNoID0gIng4Nl82NCIpKV0gewotQEAg LTk1LDIzNCArMTE0LDI0MSBAQCBjZmdfaWYhIHsKLSBwdWIgZm4gc2ltZF9ieXRlX3N3YXAoczog dTE2eDgpIC0+IHUxNng4IHsKLSAgICAgbGV0IGxlZnQgPSBzIDw8IDg7Ci0gICAgIGxldCByaWdo dCA9IHMgPj4gODsKLSAgICAgbGVmdCB8IHJpZ2h0Ci0gfQotIAotICNbaW5saW5lKGFsd2F5cyld Ci0gcHViIGZuIHRvX3UxNl9sYW5lcyhzOiB1OHgxNikgLT4gdTE2eDggewotLSAgICBzLmludG9f Yml0cygpCi0rICAgIHUxNng4Ojpmcm9tX25lX2J5dGVzKHMpCi0gfQotIAotIGNmZ19pZiEgewot ICAgICBpZiAjW2NmZyh0YXJnZXRfZmVhdHVyZSA9ICJzc2UyIildIHsKLSAKLSAgICAgICAgIC8v IEV4cG9zZSBsb3ctbGV2ZWwgbWFzayBpbnN0ZWFkIG9mIGhpZ2hlci1sZXZlbCBjb25jbHVzaW9u LAotICAgICAgICAgLy8gYmVjYXVzZSB0aGUgbm9uLUFTQ0lJIGNhc2Ugd291bGQgcGVyZm9ybSBs ZXNzIHdlbGwgb3RoZXJ3aXNlLgotKyAgICAgICAgLy8gU2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQ6 IFRoaXMgcmV0dXJuZWQgdmFsdWUgaXMgd2hldGhlciBlYWNoIGhpZ2ggYml0IGlzIHNldAotICAg ICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KLSAgICAgICAgIHB1YiBmbiBtYXNrX2FzY2lpKHM6IHU4 eDE2KSAtPiBpMzIgewotICAgICAgICAgICAgIHVuc2FmZSB7Ci0tICAgICAgICAgICAgICAgIF9t bV9tb3ZlbWFza19lcGk4KHMuaW50b19iaXRzKCkpCi0rICAgICAgICAgICAgICAgIF9tbV9tb3Zl bWFza19lcGk4KHMuaW50bygpKQotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAKLSAgICAg fSBlbHNlIHsKLSAKLSAgICAgfQotIH0KLSAKLSBjZmdfaWYhIHsKLSAgICAgaWYgI1tjZmcodGFy Z2V0X2ZlYXR1cmUgPSAic3NlMiIpXSB7Ci0gICAgICAgICAjW2lubGluZShhbHdheXMpXQotICAg ICAgICAgcHViIGZuIHNpbWRfaXNfYXNjaWkoczogdTh4MTYpIC0+IGJvb2wgewotICAgICAgICAg ICAgIHVuc2FmZSB7Ci0tICAgICAgICAgICAgICAgIF9tbV9tb3ZlbWFza19lcGk4KHMuaW50b19i aXRzKCkpID09IDAKLSsgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBXZSBoYXZlIGNmZygpZCB0 aGUgY29ycmVjdCBwbGF0Zm9ybQotKyAgICAgICAgICAgICAgICBfbW1fbW92ZW1hc2tfZXBpOChz LmludG8oKSkgPT0gMAotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgfSBlbHNlIGlm ICNbY2ZnKHRhcmdldF9hcmNoID0gImFhcmNoNjQiKV17Ci0gICAgICAgICAjW2lubGluZShhbHdh eXMpXQotICAgICAgICAgcHViIGZuIHNpbWRfaXNfYXNjaWkoczogdTh4MTYpIC0+IGJvb2wgewot ICAgICAgICAgICAgIHVuc2FmZSB7Ci0tICAgICAgICAgICAgICAgIHZtYXh2cV91OChzLmludG9f Yml0cygpKSA8IDB4ODAKLSsgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBXZSBoYXZlIGNmZygp ZCB0aGUgY29ycmVjdCBwbGF0Zm9ybQotKyAgICAgICAgICAgICAgICB2bWF4dnFfdTgocy5pbnRv KCkpIDwgMHg4MAotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgfSBlbHNlIHsKLSAg ICAgICAgICNbaW5saW5lKGFsd2F5cyldCi0gICAgICAgICBwdWIgZm4gc2ltZF9pc19hc2NpaShz OiB1OHgxNikgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgLy8gVGhpcyBvcHRpbWl6ZXMgYmV0dGVy IG9uIEFSTSB0aGFuCi0gICAgICAgICAgICAgLy8gdGhlIGx0IGZvcm11bGF0aW9uLgotICAgICAg ICAgICAgIGxldCBoaWdoZXN0X2FzY2lpID0gdTh4MTY6OnNwbGF0KDB4N0YpOwotLSAgICAgICAg ICAgICFzLmd0KGhpZ2hlc3RfYXNjaWkpLmFueSgpCi0rICAgICAgICAgICAgIWFueV9tYXNrOHgx NihzLnNpbWRfZ3QoaGlnaGVzdF9hc2NpaSkpCi0gICAgICAgICB9Ci0gICAgIH0KLSB9Ci0gCi0g Y2ZnX2lmISB7Ci0gICAgIGlmICNbY2ZnKHRhcmdldF9mZWF0dXJlID0gInNzZTIiKV0gewotICAg ICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KLSAgICAgICAgIHB1YiBmbiBzaW1kX2lzX3N0cl9sYXRp bjEoczogdTh4MTYpIC0+IGJvb2wgewotICAgICAgICAgICAgIGlmIHNpbWRfaXNfYXNjaWkocykg ewotICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgbGV0IGFib3ZlX3N0cl9sYXRpbjEgPSB1OHgxNjo6c3BsYXQoMHhDNCk7Ci0tICAgICAg ICAgICAgcy5sdChhYm92ZV9zdHJfbGF0aW4xKS5hbGwoKQotKyAgICAgICAgICAgIHMuc2ltZF9s dChhYm92ZV9zdHJfbGF0aW4xKS5hbGwoKQotICAgICAgICAgfQotICAgICB9IGVsc2UgaWYgI1tj ZmcodGFyZ2V0X2FyY2ggPSAiYWFyY2g2NCIpXXsKLSAgICAgICAgICNbaW5saW5lKGFsd2F5cyld Ci0gICAgICAgICBwdWIgZm4gc2ltZF9pc19zdHJfbGF0aW4xKHM6IHU4eDE2KSAtPiBib29sIHsK LSAgICAgICAgICAgICB1bnNhZmUgewotLSAgICAgICAgICAgICAgICB2bWF4dnFfdTgocy5pbnRv X2JpdHMoKSkgPCAweEM0Ci0rICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogV2UgaGF2ZSBjZmco KWQgdGhlIGNvcnJlY3QgcGxhdGZvcm0KLSsgICAgICAgICAgICAgICAgdm1heHZxX3U4KHMuaW50 bygpKSA8IDB4QzQKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0g ICAgICAgICAjW2lubGluZShhbHdheXMpXQotICAgICAgICAgcHViIGZuIHNpbWRfaXNfc3RyX2xh dGluMShzOiB1OHgxNikgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgbGV0IGFib3ZlX3N0cl9sYXRp bjEgPSB1OHgxNjo6c3BsYXQoMHhDNCk7Ci0tICAgICAgICAgICAgcy5sdChhYm92ZV9zdHJfbGF0 aW4xKS5hbGwoKQotKyAgICAgICAgICAgIGFsbF9tYXNrOHgxNihzLnNpbWRfbHQoYWJvdmVfc3Ry X2xhdGluMSkpCi0gICAgICAgICB9Ci0gICAgIH0KLSB9Ci0gCi0gY2ZnX2lmISB7Ci0gICAgIGlm ICNbY2ZnKHRhcmdldF9hcmNoID0gImFhcmNoNjQiKV17Ci0gICAgICAgICAjW2lubGluZShhbHdh eXMpXQotICAgICAgICAgcHViIGZuIHNpbWRfaXNfYmFzaWNfbGF0aW4oczogdTE2eDgpIC0+IGJv b2wgewotICAgICAgICAgICAgIHVuc2FmZSB7Ci0tICAgICAgICAgICAgICAgIHZtYXh2cV91MTYo cy5pbnRvX2JpdHMoKSkgPCAweDgwCi0rICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogV2UgaGF2 ZSBjZmcoKWQgdGhlIGNvcnJlY3QgcGxhdGZvcm0KLSsgICAgICAgICAgICAgICAgdm1heHZxX3Ux NihzLmludG8oKSkgPCAweDgwCi0gICAgICAgICAgICAgfQotICAgICAgICAgfQotIAotICAgICAg ICAgI1tpbmxpbmUoYWx3YXlzKV0KLSAgICAgICAgIHB1YiBmbiBzaW1kX2lzX2xhdGluMShzOiB1 MTZ4OCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgdW5zYWZlIHsKLS0gICAgICAgICAgICAgICAg dm1heHZxX3UxNihzLmludG9fYml0cygpKSA8IDB4MTAwCi0rICAgICAgICAgICAgICAgIC8vIFNh ZmV0eTogV2UgaGF2ZSBjZmcoKWQgdGhlIGNvcnJlY3QgcGxhdGZvcm0KLSsgICAgICAgICAgICAg ICAgdm1heHZxX3UxNihzLmludG8oKSkgPCAweDEwMAotICAgICAgICAgICAgIH0KLSAgICAgICAg IH0KLSAgICAgfSBlbHNlIHsKLSAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCi0gICAgICAgICBw dWIgZm4gc2ltZF9pc19iYXNpY19sYXRpbihzOiB1MTZ4OCkgLT4gYm9vbCB7Ci0gICAgICAgICAg ICAgbGV0IGFib3ZlX2FzY2lpID0gdTE2eDg6OnNwbGF0KDB4ODApOwotLSAgICAgICAgICAgIHMu bHQoYWJvdmVfYXNjaWkpLmFsbCgpCi0rICAgICAgICAgICAgYWxsX21hc2sxNng4KHMuc2ltZF9s dChhYm92ZV9hc2NpaSkpCi0gICAgICAgICB9Ci0gCi0gICAgICAgICAjW2lubGluZShhbHdheXMp XQotICAgICAgICAgcHViIGZuIHNpbWRfaXNfbGF0aW4xKHM6IHUxNng4KSAtPiBib29sIHsKLSAg ICAgICAgICAgICAvLyBGb3Igc29tZSByZWFzb24sIG9uIFNTRTIgdGhpcyBmb3JtdWxhdGlvbgot ICAgICAgICAgICAgIC8vIHNlZW1zIGZhc3RlciBpbiB0aGlzIGNhc2Ugd2hpbGUgdGhlIGFib3Zl Ci0gICAgICAgICAgICAgLy8gZnVuY3Rpb24gaXMgYmV0dGVyIHRoZSBvdGhlciB3YXkgcm91bmQu Li4KLSAgICAgICAgICAgICBsZXQgaGlnaGVzdF9sYXRpbjEgPSB1MTZ4ODo6c3BsYXQoMHhGRik7 Ci0tICAgICAgICAgICAgIXMuZ3QoaGlnaGVzdF9sYXRpbjEpLmFueSgpCi0rICAgICAgICAgICAg IWFueV9tYXNrMTZ4OChzLnNpbWRfZ3QoaGlnaGVzdF9sYXRpbjEpKQotICAgICAgICAgfQotICAg ICB9Ci0gfQotIAotICNbaW5saW5lKGFsd2F5cyldCi0gcHViIGZuIGNvbnRhaW5zX3N1cnJvZ2F0 ZXMoczogdTE2eDgpIC0+IGJvb2wgewotICAgICBsZXQgbWFzayA9IHUxNng4OjpzcGxhdCgweEY4 MDApOwotICAgICBsZXQgc3Vycm9nYXRlX2JpdHMgPSB1MTZ4ODo6c3BsYXQoMHhEODAwKTsKLS0g ICAgKHMgJiBtYXNrKS5lcShzdXJyb2dhdGVfYml0cykuYW55KCkKLSsgICAgYW55X21hc2sxNng4 KChzICYgbWFzaykuc2ltZF9lcShzdXJyb2dhdGVfYml0cykpCi0gfQotIAotIGNmZ19pZiEgewot ICAgICBpZiAjW2NmZyh0YXJnZXRfYXJjaCA9ICJhYXJjaDY0IildewotICAgICAgICAgbWFjcm9f cnVsZXMhIGFhcmNoNjRfcmV0dXJuX2ZhbHNlX2lmX2JlbG93X2hlYnJldyB7Ci0gICAgICAgICAg ICAgKCRzOmlkZW50KSA9PiAoewotICAgICAgICAgICAgICAgICB1bnNhZmUgewotLSAgICAgICAg ICAgICAgICAgICAgaWYgdm1heHZxX3UxNigkcy5pbnRvX2JpdHMoKSkgPCAweDA1OTAgewotKyAg ICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBXZSBoYXZlIGNmZygpZCB0aGUgY29ycmVjdCBw bGF0Zm9ybQotKyAgICAgICAgICAgICAgICAgICAgaWYgdm1heHZxX3UxNigkcy5pbnRvKCkpIDwg MHgwNTkwIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICB9KQotICAg ICAgICAgfQotIAotICAgICAgICAgbWFjcm9fcnVsZXMhIG5vbl9hYXJjaDY0X3JldHVybl9mYWxz ZV9pZl9hbGwgewotICAgICAgICAgICAgICgkczppZGVudCkgPT4gKCkKLSAgICAgICAgIH0KLSAg ICAgfSBlbHNlIHsKLSAgICAgICAgIG1hY3JvX3J1bGVzISBhYXJjaDY0X3JldHVybl9mYWxzZV9p Zl9iZWxvd19oZWJyZXcgewotICAgICAgICAgICAgICgkczppZGVudCkgPT4gKCkKLSAgICAgICAg IH0KLSAKLSAgICAgICAgIG1hY3JvX3J1bGVzISBub25fYWFyY2g2NF9yZXR1cm5fZmFsc2VfaWZf YWxsIHsKLSAgICAgICAgICAgICAoJHM6aWRlbnQpID0+ICh7Ci0tICAgICAgICAgICAgICAgIGlm ICRzLmFsbCgpIHsKLSsgICAgICAgICAgICAgICAgaWYgYWxsX21hc2sxNng4KCRzKSB7Ci0gICAg ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgICB9KQotICAgICAgICAgfQotICAgICB9Ci0gfQotIAotIG1hY3JvX3J1bGVzISBpbl9y YW5nZTE2eDggewotICAgICAoJHM6aWRlbnQsICRzdGFydDpleHByLCAkZW5kOmV4cHIpID0+IHt7 Ci0gICAgICAgICAvLyBTSU1EIHN1YiBpcyB3cmFwcGluZwotLSAgICAgICAgKCRzIC0gdTE2eDg6 OnNwbGF0KCRzdGFydCkpLmx0KHUxNng4OjpzcGxhdCgkZW5kIC0gJHN0YXJ0KSkKLSsgICAgICAg ICgkcyAtIHUxNng4OjpzcGxhdCgkc3RhcnQpKS5zaW1kX2x0KHUxNng4OjpzcGxhdCgkZW5kIC0g JHN0YXJ0KSkKLSAgICAgfX07Ci0gfQotIAotICNbaW5saW5lKGFsd2F5cyldCi0gcHViIGZuIGlz X3UxNng4X2JpZGkoczogdTE2eDgpIC0+IGJvb2wgewotICAgICAvLyBXZSB0cnkgdG8gZmlyc3Qg cXVpY2tseSByZWZ1dGUgdGhlIFJUTG5lc3Mgb2YgdGhlIHZlY3Rvci4gSWYgdGhhdAotICAgICAv LyBmYWlscywgd2UgZG8gdGhlIHJlYWwgUlRMIGNoZWNrLCBzbyBpbiB0aGF0IGNhc2Ugd2UgZW5k IHVwIHdhc3RpbmcKLSAgICAgLy8gdGhlIHdvcmsgZm9yIHRoZSB1cC1mcm9udCBxdWljayBjaGVj a3MuIEV2ZW4gdGhlIHF1aWNrLWNoZWNrIGlzCi0gICAgIC8vIHR3by1mb2xkIGluIG9yZGVyIHRv IHJldHVybiBgZmFsc2VgIEFTQVAgaWYgZXZlcnl0aGluZyBpcyBiZWxvdwotICAgICAvLyBIZWJy ZXcuCi0gCi0gICAgIGFhcmNoNjRfcmV0dXJuX2ZhbHNlX2lmX2JlbG93X2hlYnJldyEocyk7Ci0g Ci0tICAgIGxldCBiZWxvd19oZWJyZXcgPSBzLmx0KHUxNng4OjpzcGxhdCgweDA1OTApKTsKLSsg ICAgbGV0IGJlbG93X2hlYnJldyA9IHMuc2ltZF9sdCh1MTZ4ODo6c3BsYXQoMHgwNTkwKSk7Ci0g Ci0gICAgIG5vbl9hYXJjaDY0X3JldHVybl9mYWxzZV9pZl9hbGwhKGJlbG93X2hlYnJldyk7Ci0g Ci0tICAgIGlmIChiZWxvd19oZWJyZXcgfCBpbl9yYW5nZTE2eDghKHMsIDB4MDkwMCwgMHgyMDBG KSB8IGluX3JhbmdlMTZ4OCEocywgMHgyMDY4LCAweEQ4MDIpKS5hbGwoKSB7Ci0rICAgIGlmIGFs bF9tYXNrMTZ4OCgKLSsgICAgICAgIGJlbG93X2hlYnJldyB8IGluX3JhbmdlMTZ4OCEocywgMHgw OTAwLCAweDIwMEYpIHwgaW5fcmFuZ2UxNng4IShzLCAweDIwNjgsIDB4RDgwMiksCi0rICAgICkg ewotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICB9Ci0gCi0gICAgIC8vIFF1aWNrIHJlZnV0 YXRpb24gZmFpbGVkLiBMZXQncyBkbyB0aGUgZnVsbCBjaGVjay4KLSAKLS0gICAgKGluX3Jhbmdl MTZ4OCEocywgMHgwNTkwLCAweDA5MDApCi0tICAgICAgICB8IGluX3JhbmdlMTZ4OCEocywgMHhG QjFELCAweEZFMDApCi0tICAgICAgICB8IGluX3JhbmdlMTZ4OCEocywgMHhGRTcwLCAweEZFRkYp Ci0tICAgICAgICB8IGluX3JhbmdlMTZ4OCEocywgMHhEODAyLCAweEQ4MDQpCi0tICAgICAgICB8 IGluX3JhbmdlMTZ4OCEocywgMHhEODNBLCAweEQ4M0MpCi0tICAgICAgICB8IHMuZXEodTE2eDg6 OnNwbGF0KDB4MjAwRikpCi0tICAgICAgICB8IHMuZXEodTE2eDg6OnNwbGF0KDB4MjAyQikpCi0t ICAgICAgICB8IHMuZXEodTE2eDg6OnNwbGF0KDB4MjAyRSkpCi0tICAgICAgICB8IHMuZXEodTE2 eDg6OnNwbGF0KDB4MjA2NykpKQotLSAgICAuYW55KCkKLSsgICAgYW55X21hc2sxNng4KAotKyAg ICAgICAgKGluX3JhbmdlMTZ4OCEocywgMHgwNTkwLCAweDA5MDApCi0rICAgICAgICAgICAgfCBp bl9yYW5nZTE2eDghKHMsIDB4RkIxRCwgMHhGRTAwKQotKyAgICAgICAgICAgIHwgaW5fcmFuZ2Ux Nng4IShzLCAweEZFNzAsIDB4RkVGRikKLSsgICAgICAgICAgICB8IGluX3JhbmdlMTZ4OCEocywg MHhEODAyLCAweEQ4MDQpCi0rICAgICAgICAgICAgfCBpbl9yYW5nZTE2eDghKHMsIDB4RDgzQSwg MHhEODNDKQotKyAgICAgICAgICAgIHwgcy5zaW1kX2VxKHUxNng4OjpzcGxhdCgweDIwMEYpKQot KyAgICAgICAgICAgIHwgcy5zaW1kX2VxKHUxNng4OjpzcGxhdCgweDIwMkIpKQotKyAgICAgICAg ICAgIHwgcy5zaW1kX2VxKHUxNng4OjpzcGxhdCgweDIwMkUpKQotKyAgICAgICAgICAgIHwgcy5z aW1kX2VxKHUxNng4OjpzcGxhdCgweDIwNjcpKSksCi0rICAgICkKLSB9Ci0gCi0gI1tpbmxpbmUo YWx3YXlzKV0KLSBwdWIgZm4gc2ltZF91bnBhY2soczogdTh4MTYpIC0+ICh1MTZ4OCwgdTE2eDgp IHsKLS0gICAgdW5zYWZlIHsKLS0gICAgICAgIGxldCBmaXJzdDogdTh4MTYgPSBzaHVmZmxlISgK LS0gICAgICAgICAgICBzLAotLSAgICAgICAgICAgIHU4eDE2OjpzcGxhdCgwKSwKLS0gICAgICAg ICAgICBbMCwgMTYsIDEsIDE3LCAyLCAxOCwgMywgMTksIDQsIDIwLCA1LCAyMSwgNiwgMjIsIDcs IDIzXQotLSAgICAgICAgKTsKLS0gICAgICAgIGxldCBzZWNvbmQ6IHU4eDE2ID0gc2h1ZmZsZSEo Ci0tICAgICAgICAgICAgcywKLS0gICAgICAgICAgICB1OHgxNjo6c3BsYXQoMCksCi0tICAgICAg ICAgICAgWzgsIDI0LCA5LCAyNSwgMTAsIDI2LCAxMSwgMjcsIDEyLCAyOCwgMTMsIDI5LCAxNCwg MzAsIDE1LCAzMV0KLS0gICAgICAgICk7Ci0tICAgICAgICAoZmlyc3QuaW50b19iaXRzKCksIHNl Y29uZC5pbnRvX2JpdHMoKSkKLS0gICAgfQotKyAgICBsZXQgZmlyc3Q6IHU4eDE2ID0gc2ltZF9z d2l6emxlISgKLSsgICAgICAgIHMsCi0rICAgICAgICB1OHgxNjo6c3BsYXQoMCksCi0rICAgICAg ICBbMCwgMTYsIDEsIDE3LCAyLCAxOCwgMywgMTksIDQsIDIwLCA1LCAyMSwgNiwgMjIsIDcsIDIz XQotKyAgICApOwotKyAgICBsZXQgc2Vjb25kOiB1OHgxNiA9IHNpbWRfc3dpenpsZSEoCi0rICAg ICAgICBzLAotKyAgICAgICAgdTh4MTY6OnNwbGF0KDApLAotKyAgICAgICAgWzgsIDI0LCA5LCAy NSwgMTAsIDI2LCAxMSwgMjcsIDEyLCAyOCwgMTMsIDI5LCAxNCwgMzAsIDE1LCAzMV0KLSsgICAg KTsKLSsgICAgKHUxNng4Ojpmcm9tX25lX2J5dGVzKGZpcnN0KSwgdTE2eDg6OmZyb21fbmVfYnl0 ZXMoc2Vjb25kKSkKLSB9Ci0gCi0gY2ZnX2lmISB7Ci0gICAgIGlmICNbY2ZnKHRhcmdldF9mZWF0 dXJlID0gInNzZTIiKV0gewotICAgICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KLSAgICAgICAgIHB1 YiBmbiBzaW1kX3BhY2soYTogdTE2eDgsIGI6IHUxNng4KSAtPiB1OHgxNiB7Ci0gICAgICAgICAg ICAgdW5zYWZlIHsKLS0gICAgICAgICAgICAgICAgX21tX3BhY2t1c19lcGkxNihhLmludG9fYml0 cygpLCBiLmludG9fYml0cygpKS5pbnRvX2JpdHMoKQotKyAgICAgICAgICAgICAgICAvLyBTYWZl dHk6IFdlIGhhdmUgY2ZnKClkIHRoZSBjb3JyZWN0IHBsYXRmb3JtCi0rICAgICAgICAgICAgICAg IF9tbV9wYWNrdXNfZXBpMTYoYS5pbnRvKCksIGIuaW50bygpKS5pbnRvKCkKLSAgICAgICAgICAg ICB9Ci0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICAjW2lubGluZShhbHdheXMp XQotICAgICAgICAgcHViIGZuIHNpbWRfcGFjayhhOiB1MTZ4OCwgYjogdTE2eDgpIC0+IHU4eDE2 IHsKLS0gICAgICAgICAgICB1bnNhZmUgewotLSAgICAgICAgICAgICAgICBsZXQgZmlyc3Q6IHU4 eDE2ID0gYS5pbnRvX2JpdHMoKTsKLS0gICAgICAgICAgICAgICAgbGV0IHNlY29uZDogdTh4MTYg PSBiLmludG9fYml0cygpOwotLSAgICAgICAgICAgICAgICBzaHVmZmxlISgKLS0gICAgICAgICAg ICAgICAgICAgIGZpcnN0LAotLSAgICAgICAgICAgICAgICAgICAgc2Vjb25kLAotLSAgICAgICAg ICAgICAgICAgICAgWzAsIDIsIDQsIDYsIDgsIDEwLCAxMiwgMTQsIDE2LCAxOCwgMjAsIDIyLCAy NCwgMjYsIDI4LCAzMF0KLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIH0KLSsgICAg ICAgICAgICBsZXQgZmlyc3Q6IHU4eDE2ID0gYS50b19uZV9ieXRlcygpOwotKyAgICAgICAgICAg IGxldCBzZWNvbmQ6IHU4eDE2ID0gYi50b19uZV9ieXRlcygpOwotKyAgICAgICAgICAgIHNpbWRf c3dpenpsZSEoCi0rICAgICAgICAgICAgICAgIGZpcnN0LAotKyAgICAgICAgICAgICAgICBzZWNv bmQsCi0rICAgICAgICAgICAgICAgIFswLCAyLCA0LCA2LCA4LCAxMCwgMTIsIDE0LCAxNiwgMTgs IDIwLCAyMiwgMjQsIDI2LCAyOCwgMzBdCi0rICAgICAgICAgICAgKQotICAgICAgICAgfQotICAg ICB9Ci0gfQotIAotICNbY2ZnKHRlc3QpXQotIG1vZCB0ZXN0cyB7Ci0gICAgIHVzZSBzdXBlcjo6 KjsKLSAgICAgdXNlIGFsbG9jOjp2ZWM6OlZlYzsKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9y dXN0L2VuY29kaW5nX3JzL3NyYy9zaW5nbGVfYnl0ZS5ycyBiL3RoaXJkX3BhcnR5L3J1c3QvZW5j b2RpbmdfcnMvc3JjL3NpbmdsZV9ieXRlLnJzCi0tLS0gYS90aGlyZF9wYXJ0eS9ydXN0L2VuY29k aW5nX3JzL3NyYy9zaW5nbGVfYnl0ZS5ycwotKysrIGIvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGlu Z19ycy9zcmMvc2luZ2xlX2J5dGUucnMKLUBAIC00OCwxNiArNDgsMTkgQEAgaW1wbCBTaW5nbGVC eXRlRGVjb2RlciB7Ci0gICAgICAgICAgICAgICAgIENvcHlBc2NpaVJlc3VsdDo6R29PbigobXV0 IG5vbl9hc2NpaSwgbXV0IGhhbmRsZSkpID0+ICdtaWRkbGU6IGxvb3AgewotICAgICAgICAgICAg ICAgICAgICAgLy8gU3RhcnQgbm9uLWJvaWxlcnBsYXRlCi0gICAgICAgICAgICAgICAgICAgICAv LwotICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2UgdGhlIG5vbi1BU0NJSW5lc3Mgb2YgYG5v bl9hc2NpaWAgaXMgaGlkZGVuIGZyb20KLSAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvcHRp bWl6ZXIsIGl0IGNhbid0IGZpZ3VyZSBvdXQgdGhhdCBpdCdzIE9LIHRvCi0gICAgICAgICAgICAg ICAgICAgICAvLyBzdGF0aWNhbGx5IG9taXQgdGhlIGJvdW5kIGNoZWNrIHdoZW4gYWNjZXNzaW5n Ci0gICAgICAgICAgICAgICAgICAgICAvLyBgW3UxNjsgMTI4XWAgd2l0aCBhbiBpbmRleAotICAg ICAgICAgICAgICAgICAgICAgLy8gYG5vbl9hc2NpaSBhcyB1c2l6ZSAtIDB4ODB1c2l6ZWAuCi0r ICAgICAgICAgICAgICAgICAgICAvLwotKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBg bm9uX2FzY2lpYCBpcyBhIHU4IGJ5dGUgPj0weDgwLCBmcm9tIHRoZSBpbnZhcmlhbnRzCi0rICAg ICAgICAgICAgICAgICAgICAvLyBvbiBVdGY4RGVzdGluYXRpb246OmNvcHlfYXNjaWlfZnJvbV9j aGVja19zcGFjZV9ibXAoKQotICAgICAgICAgICAgICAgICAgICAgbGV0IG1hcHBlZCA9Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgdW5zYWZlIHsgKihzZWxmLnRhYmxlLmdldF91bmNoZWNrZWQo bm9uX2FzY2lpIGFzIHVzaXplIC0gMHg4MHVzaXplKSkgfTsKLSAgICAgICAgICAgICAgICAgICAg IC8vIGxldCBtYXBwZWQgPSBzZWxmLnRhYmxlW25vbl9hc2NpaSBhcyB1c2l6ZSAtIDB4ODB1c2l6 ZV07Ci0gICAgICAgICAgICAgICAgICAgICBpZiBtYXBwZWQgPT0gMHUxNiB7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVj b2RlclJlc3VsdDo6TWFsZm9ybWVkKDEsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzb3VyY2UuY29uc3VtZWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxl LndyaXR0ZW4oKSwKLUBAIC0xNDYsODIgKzE0OSwxMDMgQEAgaW1wbCBTaW5nbGVCeXRlRGVjb2Rl ciB7Ci0gICAgICAgICBkc3Q6ICZtdXQgW3UxNl0sCi0gICAgICAgICBfbGFzdDogYm9vbCwKLSAg ICAgKSAtPiAoRGVjb2RlclJlc3VsdCwgdXNpemUsIHVzaXplKSB7Ci0gICAgICAgICBsZXQgKHBl bmRpbmcsIGxlbmd0aCkgPSBpZiBkc3QubGVuKCkgPCBzcmMubGVuKCkgewotICAgICAgICAgICAg IChEZWNvZGVyUmVzdWx0OjpPdXRwdXRGdWxsLCBkc3QubGVuKCkpCi0gICAgICAgICB9IGVsc2Ug ewotICAgICAgICAgICAgIChEZWNvZGVyUmVzdWx0OjpJbnB1dEVtcHR5LCBzcmMubGVuKCkpCi0g ICAgICAgICB9OwotKyAgICAgICAgLy8gU2FmZXR5IGludmFyaWFudDogY29udmVydGVkIDw9IGxl bmd0aC4gUXVpdGUgb2Z0ZW4gd2UgaGF2ZSBgY29udmVydGVkIDwgbGVuZ3RoYAotKyAgICAgICAg Ly8gd2hpY2ggd2lsbCBiZSBzZXBhcmF0ZWx5IG1hcmtlZC4KLSAgICAgICAgIGxldCBtdXQgY29u dmVydGVkID0gMHVzaXplOwotICAgICAgICAgJ291dGVybW9zdDogbG9vcCB7Ci0gICAgICAgICAg ICAgbWF0Y2ggdW5zYWZlIHsKLSsgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBsZW5ndGggaXMg dGhlIG1pbmltdW0gbGVuZ3RoLCBgc3JjL2RzdCArIHhgIHdpbGwgYWx3YXlzIGJlIHZhbGlkIGZv ciByZWFkcy93cml0ZXMgb2YgYGxlbiAtIHhgCi0gICAgICAgICAgICAgICAgIGFzY2lpX3RvX2Jh c2ljX2xhdGluKAotICAgICAgICAgICAgICAgICAgICAgc3JjLmFzX3B0cigpLmFkZChjb252ZXJ0 ZWQpLAotICAgICAgICAgICAgICAgICAgICAgZHN0LmFzX211dF9wdHIoKS5hZGQoY29udmVydGVk KSwKLSAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCAtIGNvbnZlcnRlZCwKLSAgICAgICAgICAg ICAgICAgKQotICAgICAgICAgICAgIH0gewotICAgICAgICAgICAgICAgICBOb25lID0+IHsKLSAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAocGVuZGluZywgbGVuZ3RoLCBsZW5ndGgpOwotICAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNvbWUoKG11dCBub25fYXNjaWksIGNv bnN1bWVkKSkgPT4gewotKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5IGludmFyaWFudDog YGNvbnZlcnRlZCA8PSBsZW5ndGhgIHVwaGVsZCwgc2luY2UgdGhpcyBjYW4gb25seSBjb25zdW1l Ci0rICAgICAgICAgICAgICAgICAgICAvLyB1cCB0byBgbGVuZ3RoIC0gY29udmVydGVkYCBieXRl cy4KLSsgICAgICAgICAgICAgICAgICAgIC8vCi0rICAgICAgICAgICAgICAgICAgICAvLyBGdXJ0 aGVybW9yZSwgaW4gdGhpcyBjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgY2Fu IGFzc3VtZSBgY29udmVydGVkIDwgbGVuZ3RoYCBzaW5jZSB0aGlzIGJyYW5jaCBpcyBvbmx5IGV2 ZXIgaGl0IHdoZW4KLSsgICAgICAgICAgICAgICAgICAgIC8vIGFzY2lpX3RvX2Jhc2ljX2xhdGlu IGZhaWxzIHRvIGNvbnN1bWUgdGhlIGVudGlyZSBzbGljZQotICAgICAgICAgICAgICAgICAgICAg Y29udmVydGVkICs9IGNvbnN1bWVkOwotICAgICAgICAgICAgICAgICAgICAgJ21pZGRsZTogbG9v cCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgLy8gYGNvbnZlcnRlZGAgZG9lc24ndCBjb3Vu dCB0aGUgcmVhZGluZyBvZiBgbm9uX2FzY2lpYCB5ZXQuCi0gICAgICAgICAgICAgICAgICAgICAg ICAgLy8gU2luY2UgdGhlIG5vbi1BU0NJSW5lc3Mgb2YgYG5vbl9hc2NpaWAgaXMgaGlkZGVuIGZy b20KLSAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3B0aW1pemVyLCBpdCBjYW4ndCBm aWd1cmUgb3V0IHRoYXQgaXQncyBPSyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0 YXRpY2FsbHkgb21pdCB0aGUgYm91bmQgY2hlY2sgd2hlbiBhY2Nlc3NpbmcKLSAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBgW3UxNjsgMTI4XWAgd2l0aCBhbiBpbmRleAotICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIGBub25fYXNjaWkgYXMgdXNpemUgLSAweDgwdXNpemVgLgotKyAgICAg ICAgICAgICAgICAgICAgICAgIC8vCi0rICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5 OiBXZSBjYW4gcmVseSBvbiBgbm9uX2FzY2lpYCBiZWluZyBiZXR3ZWVuIGAweDgwYCBhbmQgYDB4 RkZgIGR1ZSB0bwotKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBpbnZhcmlhbnRzIG9m IGBhc2NpaV90b19iYXNpY19sYXRpbigpYCwgYW5kIG91ciB0YWJsZSBoYXMgZW5vdWdoIHNwYWNl IGZvciB0aGF0LgotICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXBwZWQgPQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNhZmUgeyAqKHNlbGYudGFibGUuZ2V0X3VuY2hlY2tl ZChub25fYXNjaWkgYXMgdXNpemUgLSAweDgwdXNpemUpKSB9OwotICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIGxldCBtYXBwZWQgPSBzZWxmLnRhYmxlW25vbl9hc2NpaSBhcyB1c2l6ZSAtIDB4 ODB1c2l6ZV07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgbWFwcGVkID09IDB1MTYgewot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRGVjb2RlclJlc3VsdDo6TWFsZm9ybWVkKDEsIDApLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkICsgMSwgLy8gKzEgYGZvciBub25fYXNj aWlgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2FmZSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8vIFRoZSBib3VuZCBjaGVjayBoYXMgYWxyZWFkeSBiZWVuIHBlcmZvcm1lZAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IEFzIG1lbnRpb25lZCBhYm92ZSwgYGNv bnZlcnRlZCA8IGxlbmd0aGAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihkc3QuZ2V0 X3VuY2hlY2tlZF9tdXQoY29udmVydGVkKSkgPSBtYXBwZWQ7Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogYGNvbnZlcnRlZCA8 PSBsZW5ndGhgIHVwaGVsZCwgc2luY2UgYGNvbnZlcnRlZCA8IGxlbmd0aGAgYmVmb3JlIHRoaXMK LSAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWQgKz0gMTsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAvLyBOZXh0LCBoYW5kbGUgQVNDSUkgcHVuY3R1YXRpb24gYW5kIG5vbi1BU0NJ SSB3aXRob3V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ29pbmcgYmFjayB0byBBU0NJ SSBhY2NlbGVyYXRpb24uIE5vbi1BU0NJSSBzY3JpcHRzCi0gICAgICAgICAgICAgICAgICAgICAg ICAgLy8gdXNlIEFTQ0lJIHB1bmN0dWF0aW9uLCBzbyB0aGlzIGF2b2lkIGdvaW5nIHRvCi0gICAg ICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZWxlcmF0aW9uIGp1c3QgZm9yIHB1bmN0dWF0aW9u L3NwYWNlIGFuZCB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmFpbGluZy4gVGhp cyBpcyBhIHNpZ25pZmljYW50IGJvb3N0IHRvIG5vbi1BU0NJSQotICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIHNjcmlwdHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogU3Bs aXQgb3V0IExhdGluIGNvbnZlcnRlcnMgd2l0aG91dCB0aGlzIHBhcnQKLSAgICAgICAgICAgICAg ICAgICAgICAgICAvLyB0aGlzIHN0dWZmIG1ha2VzIExhdGluIHNjcmlwdC1jb252ZXJzaW9uIHNs b3dlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb252ZXJ0ZWQgPT0gbGVuZ3RoIHsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChwZW5kaW5nLCBsZW5ndGgsIGxl bmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAg ICAgIC8vIFNhZmV0eTogV2UgYXJlIGJhY2sgdG8gYGNvbnZlcnRlZCA8IGxlbmd0aGAgYmVjYXVz ZSBvZiB0aGUgPT0gYWJvdmUKLSsgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgY2FuIHBl cmZvcm0gdGhpcyBjaGVjay4KLSAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbXV0IGIgPSB1 bnNhZmUgeyAqKHNyYy5nZXRfdW5jaGVja2VkKGNvbnZlcnRlZCkpIH07Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgLy8gU2FmZXR5OiBgY29udmVydGVkIDwgbGVuZ3RoYCBpcyB1cGhlbGQgZm9y IHRoaXMgbG9vcAotICAgICAgICAgICAgICAgICAgICAgICAgICdpbm5lcm1vc3Q6IGxvb3Agewot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBiID4gMTI3IHsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5vbl9hc2NpaSA9IGI7Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb250aW51ZSAnbWlkZGxlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRlc3Rpbmcgb24gSGFzd2VsbCBz YXlzIHRoYXQgd2Ugc2hvdWxkIHdyaXRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvLyBieXRlIHVuY29uZGl0aW9uYWxseSBpbnN0ZWFkIG9mIHRyeWluZyB0byB1bnJlYWQgaXQK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gbWFrZSBpdCBwYXJ0IG9mIHRoZSBu ZXh0IFNJTUQgc3RyaWRlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNhZmUgewot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBgY29udmVydGVkIDwg bGVuZ3RoYCBpcyB0cnVlIGZvciB0aGlzIGxvb3AKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICooZHN0LmdldF91bmNoZWNrZWRfbXV0KGNvbnZlcnRlZCkpID0gdTE2Ojpmcm9tKGIp OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogV2UgYXJlIG5vdyBhdCBgY29udmVydGVkIDw9IGxlbmd0aGAuIFdl IHNob3VsZCAqbm90KiBgY29udGludWVgCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IHRoZSBsb29wIHdpdGhvdXQgcmV2ZXJpZnlpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udmVydGVkICs9IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGIgPCA2 MCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSd2ZSBnb3QgcHVuY3R1 YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnZlcnRlZCA9PSBs ZW5ndGggewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAocGVu ZGluZywgbGVuZ3RoLCBsZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiB3ZSdyZSBiYWNr IHRvIGBjb252ZXJ0ZWQgPD0gbGVuZ3RoYCBiZWNhdXNlIG9mIHRoZSA9PSBhYm92ZQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHVuc2FmZSB7ICooc3JjLmdldF91bmNoZWNr ZWQoY29udmVydGVkKSkgfTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNh ZmV0eTogVGhlIGxvb3AgY29udGludWVzIGFzIGBjb252ZXJ0ZWQgPCBsZW5ndGhgCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAnaW5uZXJtb3N0OwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdl J3ZlIGdvdCBtYXJrdXAgb3IgQVNDSUkgdGV4dAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb250aW51ZSAnb3V0ZXJtb3N0OwotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLUBA IC0yMjksMTYgKzI1MywxOCBAQCBpbXBsIFNpbmdsZUJ5dGVEZWNvZGVyIHsKLSAgICAgfQotIAot ICAgICBwdWIgZm4gbGF0aW4xX2J5dGVfY29tcGF0aWJsZV91cF90bygmc2VsZiwgYnVmZmVyOiAm W3U4XSkgLT4gdXNpemUgewotICAgICAgICAgbGV0IG11dCBieXRlcyA9IGJ1ZmZlcjsKLSAgICAg ICAgIGxldCBtdXQgdG90YWwgPSAwOwotICAgICAgICAgbG9vcCB7Ci0gICAgICAgICAgICAgaWYg bGV0IFNvbWUoKG5vbl9hc2NpaSwgb2Zmc2V0KSkgPSB2YWxpZGF0ZV9hc2NpaShieXRlcykgewot ICAgICAgICAgICAgICAgICB0b3RhbCArPSBvZmZzZXQ7Ci0rICAgICAgICAgICAgICAgIC8vIFNh ZmV0eTogV2UgY2FuIHJlbHkgb24gYG5vbl9hc2NpaWAgYmVpbmcgYmV0d2VlbiBgMHg4MGAgYW5k IGAweEZGYCBkdWUgdG8KLSsgICAgICAgICAgICAgICAgLy8gdGhlIGludmFyaWFudHMgb2YgYGFz Y2lpX3RvX2Jhc2ljX2xhdGluKClgLCBhbmQgb3VyIHRhYmxlIGhhcyBlbm91Z2ggc3BhY2UgZm9y IHRoYXQuCi0gICAgICAgICAgICAgICAgIGxldCBtYXBwZWQgPSB1bnNhZmUgeyAqKHNlbGYudGFi bGUuZ2V0X3VuY2hlY2tlZChub25fYXNjaWkgYXMgdXNpemUgLSAweDgwdXNpemUpKSB9OwotICAg ICAgICAgICAgICAgICBpZiBtYXBwZWQgIT0gdTE2Ojpmcm9tKG5vbl9hc2NpaSkgewotICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsOwotICAgICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgICAgIHRvdGFsICs9IDE7Ci0gICAgICAgICAgICAgICAgIGJ5dGVzID0gJmJ5dGVzW29m ZnNldCArIDEuLl07Ci0gICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgcmV0 dXJuIHRvdGFsOwotQEAgLTM3OSw2NCArNDA1LDg5IEBAIGltcGwgU2luZ2xlQnl0ZUVuY29kZXIg ewotICAgICAgICAgZHN0OiAmbXV0IFt1OF0sCi0gICAgICAgICBfbGFzdDogYm9vbCwKLSAgICAg KSAtPiAoRW5jb2RlclJlc3VsdCwgdXNpemUsIHVzaXplKSB7Ci0gICAgICAgICBsZXQgKHBlbmRp bmcsIGxlbmd0aCkgPSBpZiBkc3QubGVuKCkgPCBzcmMubGVuKCkgewotICAgICAgICAgICAgIChF bmNvZGVyUmVzdWx0OjpPdXRwdXRGdWxsLCBkc3QubGVuKCkpCi0gICAgICAgICB9IGVsc2Ugewot ICAgICAgICAgICAgIChFbmNvZGVyUmVzdWx0OjpJbnB1dEVtcHR5LCBzcmMubGVuKCkpCi0gICAg ICAgICB9OwotKyAgICAgICAgLy8gU2FmZXR5IGludmFyaWFudDogY29udmVydGVkIDw9IGxlbmd0 aC4gUXVpdGUgb2Z0ZW4gd2UgaGF2ZSBgY29udmVydGVkIDwgbGVuZ3RoYAotKyAgICAgICAgLy8g d2hpY2ggd2lsbCBiZSBzZXBhcmF0ZWx5IG1hcmtlZC4KLSAgICAgICAgIGxldCBtdXQgY29udmVy dGVkID0gMHVzaXplOwotICAgICAgICAgJ291dGVybW9zdDogbG9vcCB7Ci0gICAgICAgICAgICAg bWF0Y2ggdW5zYWZlIHsKLSsgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBsZW5ndGggaXMgdGhl IG1pbmltdW0gbGVuZ3RoLCBgc3JjL2RzdCArIHhgIHdpbGwgYWx3YXlzIGJlIHZhbGlkIGZvciBy ZWFkcy93cml0ZXMgb2YgYGxlbiAtIHhgCi0gICAgICAgICAgICAgICAgIGJhc2ljX2xhdGluX3Rv X2FzY2lpKAotICAgICAgICAgICAgICAgICAgICAgc3JjLmFzX3B0cigpLmFkZChjb252ZXJ0ZWQp LAotICAgICAgICAgICAgICAgICAgICAgZHN0LmFzX211dF9wdHIoKS5hZGQoY29udmVydGVkKSwK LSAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCAtIGNvbnZlcnRlZCwKLSAgICAgICAgICAgICAg ICAgKQotICAgICAgICAgICAgIH0gewotICAgICAgICAgICAgICAgICBOb25lID0+IHsKLSAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAocGVuZGluZywgbGVuZ3RoLCBsZW5ndGgpOwotICAgICAg ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNvbWUoKG11dCBub25fYXNjaWksIGNvbnN1 bWVkKSkgPT4gewotKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5IGludmFyaWFudDogYGNv bnZlcnRlZCA8PSBsZW5ndGhgIHVwaGVsZCwgc2luY2UgdGhpcyBjYW4gb25seSBjb25zdW1lCi0r ICAgICAgICAgICAgICAgICAgICAvLyB1cCB0byBgbGVuZ3RoIC0gY29udmVydGVkYCBieXRlcy4K LSsgICAgICAgICAgICAgICAgICAgIC8vCi0rICAgICAgICAgICAgICAgICAgICAvLyBGdXJ0aGVy bW9yZSwgaW4gdGhpcyBjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgY2FuIGFz c3VtZSBgY29udmVydGVkIDwgbGVuZ3RoYCBzaW5jZSB0aGlzIGJyYW5jaCBpcyBvbmx5IGV2ZXIg aGl0IHdoZW4KLSsgICAgICAgICAgICAgICAgICAgIC8vIGFzY2lpX3RvX2Jhc2ljX2xhdGluIGZh aWxzIHRvIGNvbnN1bWUgdGhlIGVudGlyZSBzbGljZQotICAgICAgICAgICAgICAgICAgICAgY29u dmVydGVkICs9IGNvbnN1bWVkOwotICAgICAgICAgICAgICAgICAgICAgJ21pZGRsZTogbG9vcCB7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgLy8gYGNvbnZlcnRlZGAgZG9lc24ndCBjb3VudCB0 aGUgcmVhZGluZyBvZiBgbm9uX2FzY2lpYCB5ZXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAg bWF0Y2ggc2VsZi5lbmNvZGVfdTE2KG5vbl9hc2NpaSkgewotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTb21lKGJ5dGUpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2FmZSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5 OiB3ZSdyZSBhbGxvd2VkIHRoaXMgYWNjZXNzIHNpbmNlIGBjb252ZXJ0ZWQgPCBsZW5ndGhgCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihkc3QuZ2V0X3VuY2hlY2tlZF9t dXQoY29udmVydGVkKSkgPSBieXRlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkICs9IDE7Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgY29udmVydGVkIDw9IGxlbmd0aGAgbm93 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTm9uZSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdCB0 aGlzIHBvaW50LCB3ZSBuZWVkIHRvIGtub3cgaWYgd2UKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vIGhhdmUgYSBzdXJyb2dhdGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsZXQgaGlnaF9iaXRzID0gbm9uX2FzY2lpICYgMHhGQzAwdTE2OwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgaGlnaF9iaXRzID09IDB4RDgwMHUxNiB7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGlnaCBzdXJyb2dhdGUKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb252ZXJ0ZWQgKyAxID09IGxlbmd0 aCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVuZCBvZiBi dWZmZXIuIFRoaXMgc3Vycm9nYXRlIGlzIHVucGFpcmVkLgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRW5jb2RlclJlc3VsdDo6VW5tYXBwYWJsZSgnXHV7RkZGRH0nKSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZCAr IDEsIC8vICsxIGBmb3Igbm9uX2FzY2lpYAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29udmVydGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IGNvbnZlcmVkIDwg bGVuZ3RoIGZyb20gb3V0c2lkZSB0aGUgbWF0Y2gsIGFuZCBgY29udmVydGVkICsgMSAhPSBsZW5n dGhgLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNvIGBjb252ZXJ0 ZWQgKyAxIDwgbGVuZ3RoYCBhcyB3ZWxsLiBXZSdyZSBpbiBib3VuZHMKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2Vjb25kID0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdTMyOjpmcm9tKHVuc2FmZSB7ICpzcmMuZ2V0X3VuY2hlY2tl ZChjb252ZXJ0ZWQgKyAxKSB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiBzZWNvbmQgJiAweEZDMDB1MzIgIT0gMHhEQzAwdTMyIHsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEVuY29kZXJSZXN1bHQ6OlVubWFwcGFibGUoJ1x1e0ZGRkR9 JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0 ZWQgKyAxLCAvLyArMSBgZm9yIG5vbl9hc2NpaWAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIG5leHQgY29kZSB1 bml0IGlzIGEgbG93IHN1cnJvZ2F0ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsZXQgYXN0cmFsOiBjaGFyID0gdW5zYWZlIHsKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBXZSBjYW4gcmVseSBvbiBub25fYXNjaWkgYmVp bmcgMHhEODAwLTB4REJGRiBzaW5jZSB0aGUgaGlnaCBiaXRzIGFyZSAweEQ4MDAKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlbiwgKG5vbl9hc2NpaSA8PCAx MCAtIDB4RDgwMCA8PCAxMCkgYmVjb21lcyBiZXR3ZWVuICgwIHRvIDB4M0ZGKSA8PCAxMCwgd2hp Y2ggaXMgYmV0d2VlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv LyAweDQwMCB0byAweGZmYzAwLiBBZGRpbmcgdGhlIDB4MTAwMDAgZ2l2ZXMgYSByYW5nZSBvZiAw eDEwNDAwIHRvIDB4MTBmYzAwLiBTdWJ0cmFjdGluZyB0aGUgMHhEQzAwCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdpdmVzIDB4MjgwMCB0byAweDEwMjAwMAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgc2Vjb25kIHRl cm0gaXMgYmV0d2VlbiAweERDMDAgYW5kIDB4REZGRiBmcm9tIHRoZSBjaGVjayBhYm92ZS4gVGhp cyBnaXZlcyBhIG1heGltdW0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gcG9zc2libGUgcmFuZ2Ugb2YgKDB4MTA0MDAgKyAweERDMDApIHRvICgweDEwMjAwMCAr IDB4REZGRikgd2hpY2ggaXMgMHgxRTAwMCB0byAweDEwZmZmZi4KLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBpbiByYW5nZS4KLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gRnJvbSBhIFVuaWNvZGUgcHJpbmNpcGxlcyBwZXJzcGVjdGl2 ZSB0aGlzIGNhbiBhbHNvIGJlIHZlcmlmaWVkIGFzIHdlIGhhdmUgY2hlY2tlZCB0aGF0IGBub25f YXNjaWlgIGlzIGEgaGlnaCBzdXJyb2dhdGUKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLy8gKDB4RDgwMC4uPTB4REJGRiksIGFuZCB0aGF0IGBzZWNvbmRgIGlzIGEg bG93IHN1cnJvZ2F0ZSAoYDB4REMwMC4uPTB4REZGRmApLCBhbmQgd2UgYXJlIGFwcGx5aW5nIHJl dmVyc2Ugb2YgdGhlIFVUQzE2IHRyYW5zZm9ybWF0aW9uCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIGFsZ29yaXRobSA8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3Jn L3dpa2kvVVRGLTE2I0NvZGVfcG9pbnRzX2Zyb21fVSswMTAwMDBfdG9fVSsxMEZGRkY+LCBieSBh cHBseWluZyB0aGUgaGlnaCBzdXJyb2dhdGUgLSAweEQ4MDAgdG8gdGhlCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhpZ2ggdGVuIGJpdHMsIGFuZCB0aGUgbG93 IHN1cnJvZ2F0ZSAtIDB4RGMwMCB0byB0aGUgbG93IHRlbiBiaXRzLCBhbmQgdGhlbiBhZGRpbmcg MHgxMDAwMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmNvcmU6 OmNoYXI6OmZyb21fdTMyX3VuY2hlY2tlZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh1MzI6OmZyb20obm9uX2FzY2lpKSA8PCAxMCkgKyBzZWNvbmQKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtICgoKDB4RDgw MHUzMiA8PCAxMCkgLSAweDFfMDAwMHUzMikgKyAweERDMDB1MzIpLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmNvZGVyUmVzdWx0 OjpVbm1hcHBhYmxlKGFzdHJhbCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnZlcnRlZCArIDIsIC8vICsyIGBmb3Igbm9uX2FzY2lpYCBhbmQgYHNlY29uZGAK LUBAIC00NTEsNTIgKzUwMiw2MyBAQCBpbXBsIFNpbmdsZUJ5dGVFbmNvZGVyIHsKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuY29kZXJSZXN1bHQ6OnVubWFwcGFibGVf ZnJvbV9ibXAobm9uX2FzY2lpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb252ZXJ0ZWQgKyAxLCAvLyArMSBgZm9yIG5vbl9hc2NpaWAKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICApOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBU aGlzIGJyYW5jaCBkaXZlcmdlcywgc28gbm8gbmVlZCB0byB1cGhvbGQgaW52YXJpYW50cyBvbiBg Y29udmVydGVkYAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5leHQsIGhhbmRsZSBB U0NJSSBwdW5jdHVhdGlvbiBhbmQgbm9uLUFTQ0lJIHdpdGhvdXQKLSAgICAgICAgICAgICAgICAg ICAgICAgICAvLyBnb2luZyBiYWNrIHRvIEFTQ0lJIGFjY2VsZXJhdGlvbi4gTm9uLUFTQ0lJIHNj cmlwdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2UgQVNDSUkgcHVuY3R1YXRpb24s IHNvIHRoaXMgYXZvaWQgZ29pbmcgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2Nl bGVyYXRpb24ganVzdCBmb3IgcHVuY3R1YXRpb24vc3BhY2UgYW5kIHRoZW4KLSAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBmYWlsaW5nLiBUaGlzIGlzIGEgc2lnbmlmaWNhbnQgYm9vc3QgdG8g bm9uLUFTQ0lJCi0gICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2NyaXB0cy4KLSAgICAgICAg ICAgICAgICAgICAgICAgICAvLyBUT0RPOiBTcGxpdCBvdXQgTGF0aW4gY29udmVydGVycyB3aXRo b3V0IHRoaXMgcGFydAotICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgc3R1ZmYgbWFr ZXMgTGF0aW4gc2NyaXB0LWNvbnZlcnNpb24gc2xvd2VyLgotICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIGNvbnZlcnRlZCA9PSBsZW5ndGggewotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gKHBlbmRpbmcsIGxlbmd0aCwgbGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAg ICAgICB9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiB3ZSdyZSBiYWNrIHRv IGBjb252ZXJ0ZWQgPCBsZW5ndGhgIGR1ZSB0byB0aGUgPT0gYWJvdmUgYW5kIGNhbiBwZXJmb3Jt Ci0rICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHVuY2hlY2tlZCByZWFkCi0gICAgICAg ICAgICAgICAgICAgICAgICAgbGV0IG11dCB1bml0ID0gdW5zYWZlIHsgKihzcmMuZ2V0X3VuY2hl Y2tlZChjb252ZXJ0ZWQpKSB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICdpbm5lcm1vc3Q6 IGxvb3AgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFRoaXMgbG9v cCBhbHdheXMgYmVnaW5zIHdpdGggYGNvbnZlcnRlZCA8IGxlbmd0aGAsIHNlZQotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvLyB0aGUgaW52YXJpYW50IG91dHNpZGUgYW5kIHRoZSBjb21t ZW50IG9uIHRoZSBjb250aW51ZSBiZWxvdwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiB1bml0ID4gMTI3IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbl9hc2Np aSA9IHVuaXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAnbWlk ZGxlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vIFRlc3Rpbmcgb24gSGFzd2VsbCBzYXlzIHRoYXQgd2Ugc2hvdWxkIHdyaXRl IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieXRlIHVuY29uZGl0aW9uYWxs eSBpbnN0ZWFkIG9mIHRyeWluZyB0byB1bnJlYWQgaXQKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLy8gdG8gbWFrZSBpdCBwYXJ0IG9mIHRoZSBuZXh0IFNJTUQgc3RyaWRlLgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNhZmUgewotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLy8gU2FmZXR5OiBDYW4gcmVseSBvbiBjb252ZXJ0ZWQgPCBsZW5ndGgKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICooZHN0LmdldF91bmNoZWNrZWRfbXV0KGNvbnZl cnRlZCkpID0gdW5pdCBhcyB1ODsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWQgKz0gMTsKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gYGNvbnZlcnRlZCA8PSBsZW5ndGhgIGhlcmUKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYgdW5pdCA8IDYwIHsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vIFdlJ3ZlIGdvdCBwdW5jdHVhdGlvbgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgY29udmVydGVkID09IGxlbmd0aCB7Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIChwZW5kaW5nLCBsZW5ndGgsIGxlbmd0aCk7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyBTYWZldHk6IGBjb252ZXJ0ZWQgPCBsZW5ndGhgIGR1ZSB0byB0aGUgPT0gYWJv dmUuIFRoZSByZWFkIGlzIHNhZmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bml0ID0gdW5zYWZlIHsgKihzcmMuZ2V0X3VuY2hlY2tlZChjb252ZXJ0ZWQpKSB9OwotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIG9ubHkgaGFwcGVucyBp ZiBgY29udmVydGVkIDwgbGVuZ3RoYCwgbWFpbnRhaW5pbmcgaXQKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnRpbnVlICdpbm5lcm1vc3Q7Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UndmUgZ290IG1h cmt1cCBvciBBU0NJSSB0ZXh0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl ICdvdXRlcm1vc3Q7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogQWxs IG90aGVyIHJvdXRlcyB0byBoZXJlIGRpdmVyZ2Ugc28gdGhlIGNvbnRpbnVlIGlzIHRoZSBvbmx5 Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdheSB0byBydW4gdGhlIGlubmVybW9z dCBsb29wLgotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg IH0KLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAg fQotIH0KLSAKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L2VuY29kaW5nX3JzL3NyYy94 X3VzZXJfZGVmaW5lZC5ycyBiL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvc3JjL3hfdXNl cl9kZWZpbmVkLnJzCi0tLS0gYS90aGlyZF9wYXJ0eS9ydXN0L2VuY29kaW5nX3JzL3NyYy94X3Vz ZXJfZGVmaW5lZC5ycwotKysrIGIvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9zcmMveF91 c2VyX2RlZmluZWQucnMKLUBAIC05LDIyICs5LDIzIEBACi0gCi0gdXNlIHN1cGVyOjoqOwotIHVz ZSBjcmF0ZTo6aGFuZGxlczo6KjsKLSB1c2UgY3JhdGU6OnZhcmlhbnQ6Oio7Ci0gCi0gY2ZnX2lm ISB7Ci0gICAgIGlmICNbY2ZnKGZlYXR1cmUgPSAic2ltZC1hY2NlbCIpXSB7Ci0gICAgICAgICB1 c2Ugc2ltZF9mdW5jczo6KjsKLS0gICAgICAgIHVzZSBwYWNrZWRfc2ltZDo6dTE2eDg7Ci0rICAg ICAgICB1c2UgY29yZTo6c2ltZDo6dTE2eDg7Ci0rICAgICAgICB1c2UgY29yZTo6c2ltZDo6Y21w OjpTaW1kUGFydGlhbE9yZDsKLSAKLSAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCi0gICAgICAg ICBmbiBzaGlmdF91cHBlcih1bnBhY2tlZDogdTE2eDgpIC0+IHUxNng4IHsKLSAgICAgICAgICAg ICBsZXQgaGlnaGVzdF9hc2NpaSA9IHUxNng4OjpzcGxhdCgweDdGKTsKLS0gICAgICAgICAgICB1 bnBhY2tlZCArIHVucGFja2VkLmd0KGhpZ2hlc3RfYXNjaWkpLnNlbGVjdCh1MTZ4ODo6c3BsYXQo MHhGNzAwKSwgdTE2eDg6OnNwbGF0KDApKSAgICAgICAgfQotKyAgICAgICAgICAgIHVucGFja2Vk ICsgdW5wYWNrZWQuc2ltZF9ndChoaWdoZXN0X2FzY2lpKS5zZWxlY3QodTE2eDg6OnNwbGF0KDB4 RjcwMCksIHUxNng4OjpzcGxhdCgwKSkgICAgICAgIH0KLSAgICAgfSBlbHNlIHsKLSAgICAgfQot IH0KLSAKLSBwdWIgc3RydWN0IFVzZXJEZWZpbmVkRGVjb2RlcjsKLSAKLSBpbXBsIFVzZXJEZWZp bmVkRGVjb2RlciB7Ci0gICAgIHB1YiBmbiBuZXcoKSAtPiBWYXJpYW50RGVjb2RlciB7Ci1AQCAt MTExLDIwICsxMTIsMjUgQEAgaW1wbCBVc2VyRGVmaW5lZERlY29kZXIgewotICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgICAoRGVjb2RlclJlc3VsdDo6SW5wdXRFbXB0eSwgc3JjLmxlbigp KQotICAgICAgICAgfTsKLSAgICAgICAgIC8vIE5vdCBib3RoZXJpbmcgd2l0aCBhbGlnbm1lbnQK LSAgICAgICAgIGxldCB0YWlsX3N0YXJ0ID0gbGVuZ3RoICYgITB4RjsKLSAgICAgICAgIGxldCBz aW1kX2l0ZXJhdGlvbnMgPSBsZW5ndGggPj4gNDsKLSAgICAgICAgIGxldCBzcmNfcHRyID0gc3Jj LmFzX3B0cigpOwotICAgICAgICAgbGV0IGRzdF9wdHIgPSBkc3QuYXNfbXV0X3B0cigpOwotKyAg ICAgICAgLy8gU2FmZXR5OiBUaGlzIGlzIGBmb3IgaSBpbiAwLi5sZW5ndGggLyAxNmAKLSAgICAg ICAgIGZvciBpIGluIDAuLnNpbWRfaXRlcmF0aW9ucyB7Ci0rICAgICAgICAgICAgLy8gU2FmZXR5 OiBUaGlzIGlzIGluIGJvdW5kczogbGVuZ3RoIGlzIHRoZSBtaW51bXVtIHZhbGlkIGxlbmd0aCBm b3IgYm90aCBzcmMvZHN0Ci0rICAgICAgICAgICAgLy8gYW5kIGkgcmFuZ2VzIHRvIGxlbmd0aC8x Niwgc28gbXVsdGlwbHlpbmcgYnkgMTYgd2lsbCBhbHdheXMgYmUgYDwgbGVuZ3RoYCBhbmQgY2Fu IGRvCi0rICAgICAgICAgICAgLy8gYSAxNiBieXRlIHJlYWQKLSAgICAgICAgICAgICBsZXQgaW5w dXQgPSB1bnNhZmUgeyBsb2FkMTZfdW5hbGlnbmVkKHNyY19wdHIuYWRkKGkgKiAxNikpIH07Ci0g ICAgICAgICAgICAgbGV0IChmaXJzdCwgc2Vjb25kKSA9IHNpbWRfdW5wYWNrKGlucHV0KTsKLSAg ICAgICAgICAgICB1bnNhZmUgewotKyAgICAgICAgICAgICAgICAvLyBTYWZldHk6IHNhbWUgYXMg YWJvdmUsIGJ1dCB0aGlzIGlzIHR3byBjb25zZWN1dGl2ZSA4LWJ5dGUgcmVhZHMKLSAgICAgICAg ICAgICAgICAgc3RvcmU4X3VuYWxpZ25lZChkc3RfcHRyLmFkZChpICogMTYpLCBzaGlmdF91cHBl cihmaXJzdCkpOwotICAgICAgICAgICAgICAgICBzdG9yZThfdW5hbGlnbmVkKGRzdF9wdHIuYWRk KChpICogMTYpICsgOCksIHNoaWZ0X3VwcGVyKHNlY29uZCkpOwotICAgICAgICAgICAgIH0KLSAg ICAgICAgIH0KLSAgICAgICAgIGxldCBzcmNfdGFpbCA9ICZzcmNbdGFpbF9zdGFydC4ubGVuZ3Ro XTsKLSAgICAgICAgIGxldCBkc3RfdGFpbCA9ICZtdXQgZHN0W3RhaWxfc3RhcnQuLmxlbmd0aF07 Ci0gICAgICAgICBzcmNfdGFpbAotICAgICAgICAgICAgIC5pdGVyKCkKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvdGh1bmRlcmJpcmQvcGF0Y2hlcy9ydXN0MS43OC1xY21zLXN0ZHNpbWQucGF0Y2ggYi9z cmNwa2dzL3RodW5kZXJiaXJkL3BhdGNoZXMvcnVzdDEuNzgtcWNtcy1zdGRzaW1kLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzg2YWExNGEwYjkwNS4uMDAwMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy90aHVuZGVyYmlyZC9wYXRjaGVzL3J1c3QxLjc4LXFjbXMtc3Rkc2lt ZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLVJlbGV2YW50IGJ1ZyByZXBv cnQ6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODIyOTEK LQotCi1kaWZmIC0tZ2l0IGEvQ2FyZ28ubG9jayBiL0NhcmdvLmxvY2sKLS0tLSBhL0NhcmdvLmxv Y2sKLSsrKyBiL0NhcmdvLmxvY2sKLUBAIC00Mjc0LDEwICs0Mjc0LDExIEBACi0gW1twYWNrYWdl XV0KLSBuYW1lID0gInFjbXMiCi0gdmVyc2lvbiA9ICIwLjIuMCIKLSBkZXBlbmRlbmNpZXMgPSBb Ci0gICJsaWJjIiwKLSsgInZlcnNpb25fY2hlY2siLAotIF0KLSAKLSBbW3BhY2thZ2VdXQotIG5h bWUgPSAicWxvZyIKLSB2ZXJzaW9uID0gIjAuNC4wIgotZGlmZiAtLWdpdCBhL2dmeC9xY21zL0Nh cmdvLnRvbWwgYi9nZngvcWNtcy9DYXJnby50b21sCi0tLS0gYS9nZngvcWNtcy9DYXJnby50b21s Ci0rKysgYi9nZngvcWNtcy9DYXJnby50b21sCi1AQCAtMTgsNSArMTgsOCBAQAotIGljY3Y0LWVu YWJsZWQgPSBbXQotIGNteWsgPSBbXQotIAotIFtkZXBlbmRlbmNpZXNdCi0gbGliYyA9IHt2ZXJz aW9uID0gIjAuMiIsIG9wdGlvbmFsID0gdHJ1ZSB9Ci0rCi0rW2J1aWxkLWRlcGVuZGVuY2llc10K LSt2ZXJzaW9uX2NoZWNrID0gIjAuOSIKLWRpZmYgLS1naXQgYS9nZngvcWNtcy9idWlsZC5ycyBi L2dmeC9xY21zL2J1aWxkLnJzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2Z4L3FjbXMvYnVpbGQucnMKLUBAIC0wLDAgKzEsNyBAQAotK2V4dGVybiBjcmF0ZSB2 ZXJzaW9uX2NoZWNrIGFzIHJ1c3RjOwotKwotK2ZuIG1haW4oKSB7Ci0rICAgIGlmIHJ1c3RjOjpp c19taW5fdmVyc2lvbigiMS43OC4wIikudW53cmFwX29yKGZhbHNlKSB7Ci0rICAgICAgICBwcmlu dGxuISgiY2FyZ286cnVzdGMtY2ZnPXN0ZHNpbWRfc3BsaXQiKTsKLSsgICAgfQotK30KLWRpZmYg LS1naXQgYS9nZngvcWNtcy9zcmMvbGliLnJzIGIvZ2Z4L3FjbXMvc3JjL2xpYi5ycwotLS0tIGEv Z2Z4L3FjbXMvc3JjL2xpYi5ycwotKysrIGIvZ2Z4L3FjbXMvc3JjL2xpYi5ycwotQEAgLTUsMTMg KzUsMTUgQEAKLSAjIVthbGxvdyhub25fY2FtZWxfY2FzZV90eXBlcyldCi0gIyFbYWxsb3cobm9u X3NuYWtlX2Nhc2UpXQotICMhW2FsbG93KG5vbl91cHBlcl9jYXNlX2dsb2JhbHMpXQotIC8vIFRo ZXNlIGFyZSBuZWVkZWQgZm9yIHRoZSBuZW9uIFNJTUQgY29kZSBhbmQgY2FuIGJlIHJlbW92ZWQg b25jZSB0aGUgTVNSViBzdXBwb3J0cyB0aGUKLSAvLyBpbnN0cmluc2ljcyB3ZSB1c2UKLS0jIVtj ZmdfYXR0cihmZWF0dXJlID0gIm5lb24iLCBmZWF0dXJlKHN0ZHNpbWQpKV0KLSsjIVtjZmdfYXR0 cihhbGwoc3Rkc2ltZF9zcGxpdCwgdGFyZ2V0X2FyY2ggPSAiYXJtIiwgZmVhdHVyZSA9ICJuZW9u IiksIGZlYXR1cmUoc3RkYXJjaF9hcm1fbmVvbl9pbnRyaW5zaWNzKSldCi0rIyFbY2ZnX2F0dHIo YWxsKHN0ZHNpbWRfc3BsaXQsIHRhcmdldF9hcmNoID0gImFybSIsIGZlYXR1cmUgPSAibmVvbiIp LCBmZWF0dXJlKHN0ZGFyY2hfYXJtX2ZlYXR1cmVfZGV0ZWN0aW9uKSldCi0rIyFbY2ZnX2F0dHIo YWxsKG5vdChzdGRzaW1kX3NwbGl0KSwgdGFyZ2V0X2FyY2ggPSAiYXJtIiwgZmVhdHVyZSA9ICJu ZW9uIiksIGZlYXR1cmUoc3Rkc2ltZCkpXQotICMhW2NmZ19hdHRyKAotLSAgICBmZWF0dXJlID0g Im5lb24iLAotKyAgICBhbGwodGFyZ2V0X2FyY2ggPSAiYXJtIiwgZmVhdHVyZSA9ICJuZW9uIiks Ci0gICAgIGZlYXR1cmUoYXJtX3RhcmdldF9mZWF0dXJlLCByYXdfcmVmX29wKQotIAotICldCi0g Ci0gLy8vIFRoZXNlIHZhbHVlcyBtYXRjaCB0aGUgUmVuZGVyaW5nIEludGVudCB2YWx1ZXMgZnJv bSB0aGUgSUNDIHNwZWMKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy90aHVuZGVyYmlyZC90ZW1wbGF0 ZSBiL3NyY3BrZ3MvdGh1bmRlcmJpcmQvdGVtcGxhdGUKaW5kZXggMjNkZDFmYmY4Y2UwZGIuLjdl MzJkYTYyZjQ1MjU5IDEwMDY0NAotLS0gYS9zcmNwa2dzL3RodW5kZXJiaXJkL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvdGh1bmRlcmJpcmQvdGVtcGxhdGUKQEAgLTMsNyArMyw3IEBACiAjIFRISVMg UEtHIE1VU1QgQkUgU1lOQ0hST05JWkVEIFdJVEggInNyY3BrZ3MvdGh1bmRlcmJpcmQtaTE4biIu CiAjCiBwa2duYW1lPXRodW5kZXJiaXJkCi12ZXJzaW9uPTExNS4xMS4xCit2ZXJzaW9uPTExNS4x Mi4yCiByZXZpc2lvbj0xCiBidWlsZF9oZWxwZXI9InJ1c3QiCiBzaG9ydF9kZXNjPSJTdGFuZGFs b25lIE1haWwvTmV3cyByZWFkZXIiCkBAIC0xMSw3ICsxMSw3IEBAIG1haW50YWluZXI9ImRhdGFD b2JyYSA8ZGF0YWNvYnJhQHRoaW5rYm90LmRlPiIKIGxpY2Vuc2U9Ik1QTC0yLjAsIEdQTC0yLjAt b3ItbGF0ZXIsIExHUEwtMi4xLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vd3d3LnRodW5k ZXJiaXJkLm5ldC8iCiBkaXN0ZmlsZXM9IiR7TU9aSUxMQV9TSVRFfS90aHVuZGVyYmlyZC9yZWxl YXNlcy8ke3ZlcnNpb259L3NvdXJjZS90aHVuZGVyYmlyZC0ke3ZlcnNpb259LnNvdXJjZS50YXIu eHoiCi1jaGVja3N1bT1lMGNlYjFiOWQzZTE5ZDVkMWZkNzQzZWI5ZTQ3Mzc1MWJmMGM2NzFjMDBl MjM0Zjk1NzM2ZjYyNDMwOWIyNmE1CitjaGVja3N1bT02Mzc4YTBkYmU4ZDc4NWY1OGFiOTc3OGE1 MDdlMzZjMzNhNWY4NjlhZTFhNjcwNjM4ZTI3Nzg3Yjk4NjRlNjM4CiAKIGxpYjMyZGlzYWJsZWQ9 eWVzCiAKCkZyb20gZmIyZmVkYTk1NWU1M2ZiMWMxOTZlNWQwZjE2NDRhZTQ4NTU3MjFlOCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogZGF0YUNvYnJhIDxkYXRhY29icmFAdGhpbmtib3Qu ZGU+CkRhdGU6IFR1ZSwgMjUgSnVuIDIwMjQgMTE6MDM6MDAgKzAyMDAKU3ViamVjdDogW1BBVENI IDIvMl0gdGh1bmRlcmJpcmQtaTE4bjogdXBkYXRlIHRvIDExNS4xMi4yLgoKLS0tCiBzcmNwa2dz L3RodW5kZXJiaXJkLWkxOG4vdGVtcGxhdGUgfCAxMzQgKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgNjcgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90aHVuZGVyYmlyZC1pMThuL3RlbXBsYXRlIGIvc3JjcGtn cy90aHVuZGVyYmlyZC1pMThuL3RlbXBsYXRlCmluZGV4IDczMmRlYjBhNTQ5MjBjLi5hOWRhMjRk ZTM0ZDA1MiAxMDA2NDQKLS0tIGEvc3JjcGtncy90aHVuZGVyYmlyZC1pMThuL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvdGh1bmRlcmJpcmQtaTE4bi90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ3RodW5kZXJiaXJkLWkxOG4nCiBwa2duYW1lPXRodW5kZXJiaXJk LWkxOG4KLXZlcnNpb249MTE1LjExLjEKK3ZlcnNpb249MTE1LjEyLjIKIHJldmlzaW9uPTEKIGJ1 aWxkX3N0eWxlPW1ldGEKIHNob3J0X2Rlc2M9IlRodW5kZXJiaXJkIGxhbmd1YWdlIHBhY2tzIgpA QCAtMTA2LDY5ICsxMDYsNjkgQEAgX3BrZ3RtcGwoKSB7CiAJCQl1c3IvbGliL3RodW5kZXJiaXJk L2V4dGVuc2lvbnMgbGFuZ3BhY2stJHtfbGFuZ31AdGh1bmRlcmJpcmQubW96aWxsYS5vcmcueHBp CiAJfQogfQotY2hlY2tzdW09IjAwOTI0N2M2MTNlOTA5ODhmYjdiNjc2MTVjOGU5OTNjZjVlNmIz MGNiYjAzN2NlYTRmYjc1M2MyYjJlOWNkZWQKLSBkZDYzNTYzZjIxNDZlYTk0MDU1NzZlNGFjYTE4 MTRiZmExY2E2MDk4MGU0NmFlZWQ3ODY5ZjExZmFhODUyNDlhCi0gYTU5Yjg0NDllMzQzODEzN2Qx MWIzZTk3ZGQwYWQxY2Y2ZWY3ZTYzODBkMjNjMjk4OTYyMTMzMjBmZTkyYTFiMAotIDhiYWM2Nzgy NTU1M2ZkYjYyODdhOGQ1MTBmNDk3ZDcxMjdjNTJmMWM5NDZlMDhjNzJmOGYwMmNkZjFiNjBmM2IK LSAwMzc2YTQ3MjZjNjQwZTdjMTJiMTY2OTFjMmU5NTExMjQ0MzI1YTM5ZWVjNGZlMWI2MjY1MmU1 NjYzYzg2ZWE4Ci0gOTVhYmQ5OTcwYWFlMGJmMWU0YWQxZGVkZjYxODJiNDVlOThhMDc0YjI3OTVk OGZkYjU2YTQ0Yjc1MGY1NjI4OQotIDZkODYxZDViZGNjZWI1YTQyMmI4MmVlOTE1M2M2YWU4OGRh NDFiNmRmNThkNGY4M2NhYmNmZmQ3ZTFiMzhmNzgKLSBkZDZjOTk3ZTM0ZjAxZWE4NGZlMTcxYWJk NDIyOGYwZTk5ZDA2NmJlZTgzOTE1OWNiZWZmNWY5MjQ5MjY1YTcxCi0gYWFlZGRkNjQwZTViMTE4 Nzc4YTYzMTM2OTdlODQxNzNiMjlmNDc0N2MxNWY4OTM2ODU5NTU4NzU1ZDBhMjg1NgotIDYzNGY0 NTkxNGJkMzMzMmE4N2I0OGQzY2QzZWE1ODE2N2UyOTlhMTZlZDVhZDNiNjRmN2M5YzBkYTE3M2Nj ZTQKLSAxNjliNzI1YzUxM2RlMTlmYTY2MmJhMDdmNzQyMTI2Y2Q3NGQ3ZjBhNmQzMGM4YzdiZTc4 OTg3OWExNzYyMWYzCi0gOTc4YjM5MWI1ZTA5MTNkMjc0MWQyMDNkMmQ2ZTExNDZhMzMxMWI4NGUw ZDY2MjM4ZjQwN2QwM2M2NzcxOThiNAotIGQyZmIxZGNjN2Y4NzAwZGJiOWZhODFiODcwYTVkOTYw ZWIzYzFmMWIyODQzZmFjYmU2YTBlZTYzYjNjYzhlMDIKLSBhOTE1MDRhMDMwZDQxZWFkOWVjYTI1 NzI4MWI5YzVkOTg2MzQ5YzIzZGZhMzliODk5NmZiYWE2ZjM2ZDcwY2M0Ci0gMjI3MDIyNmRkMWQy NjA3YzIxZjhhZTcxNTliMmExM2Y4MWMyNmFmOTllOTdlNDM2NzMzNzE0ODFlOGZmOWU2MAotIDUz YjE5YTQ3ODkwYmY3MDRlZjQ1NjZhY2ZhYTJlOThjMGE2NTViYTE0NmExNzg1ODc0MzY2MzE1NTVk NjgwOTIKLSA3YjE3MjJmODlmYzJlYjg2NmZkM2NlNjRjZjNkMDM3MTYyYTc5NWY4YWI0ZDc1NTli YzgzZmM2Mzc3MDhkNTFiCi0gMmNiNTQzNDFjNzE5NjM1ZjRlZjljMGU1MWIzYzQzZWVjMWFhNzlk MDc2ZjdkNDc2NjgzMDYyMmE2ZWMzMjIxYwotIDJiMjY5MzYyOGE5ODEwNzc0ZjkyMmQyNmNhNzBj OWE2NWJlOTNkOWJjM2M4ZGVmMDYwOTM5MmQ1NDFiMGVlYzUKLSAzYzg2NTNhNDBlZDI1ZTIxZTgx NTI0NjBmODU4OTk2NTlhYjM4MTBlYjk1N2U3NmY5OWQ0ZDBkMDY0ZmVjMWYwCi0gMzU1ODVjMWI0 ZmFjNjc1M2Y1OWZjY2EwODQxOTVkZjc4NjY4N2E5YTE0YzMxNGY3MjIxMjQ3ZDA1NTdiNDg4Zgot IGI5MDlhNjgwYjZmN2ExNjYzZWY2NGI2MTBmOWUwNzcyZjgxNGVhYzI2MGMyZmRiODRmMDFkNGJk Yzc1OWY3ZDQKLSA2YzA1MWY3YTFiYTVmMWYxZDRhZTg2N2JiNTU4ZGQ4MGM1YmNhZGI4ODUwNTE0 NjMyZGY5ZjA3ODQwYTVkYzBkCi0gNThkNTdjMzA4ZTIxODIzNTVmN2ViMjgzNTVhYzA4YWViZjVh NzhmZDcwMGMyZmZiODM1YmM5YTBmZmE4M2E4NAotIDY4ZGE3NzZlMDcyMGI0MDZjZTE1M2Q0ZTk2 MmZhZjI5NWE0ZTkzNGE4MzkzNWI1NWQzMjE2NDZjNDQ2MzJkYTkKLSBjYzdmZjc4NzExNDY4MTkz NjgzYTVmMTIwYzg4MjQ5MTNkZDMwYzUzYTk4NWRiOWZjMmIwNWZlYzIyZTUzZDc1Ci0gZjJiZjI3 OWMyMzRjMTlhYmM2ODViM2Q2MjdiNDBiNGFkNDI0MDJhMDY3YzBhOWRiMjk2MWNiMjhiODQxYjcz MwotIDM4MjRlNTc2MGZiMTE4NzRlY2QzNmViZWUzNDY5NTJmNjVjNzU1NTVmZjY0YWNiMWRhMmJi MjQ4NmUyOGZkYTIKLSBjZWI1ODUxNTcxMzYxYThlZDc2OTU4YTEzOWJlOTNkYWZkMDlkZjIzNGMw NmQ1NTVkNTM4NGZiZjVjMjVlNmYzCi0gOTIxYzdiMTcyOTMyZTY1YzdkODcxYzczMDgzNWI5Njlj YzI2YzQzNjg2Y2E1YjY1MzI5NzgwNTNmMDVmZTE1ZQotIGU4YmU2NmMyNDA5MDQxYjA4NzQwYTYy NmVmNDZlMWIxYzlmYmVmMGM3MjQwNjYxN2ExZDk1YmVhNDkxYWE1NmIKLSA4N2NjOWI1NjM1OGYx Yzg5Yzc4ZmYzNjdjYjZmZDFkNTcyMTkwMzdiN2ZjYTliOWIwMWI4ZTAzNTBlYTg0ODAwCi0gMGUw ZDg0ZjIxMWIyNDg4OTg1MDg0M2U2MzIwMTA2NWE2NzczNTAyMDI2Y2E4NjMzYWQ5MGQyOWRhZDRj YWJjOQotIDhmNGQyMGUxZWExOTY5N2JhN2RiNGJmODc0ZmE2ZTgzM2ZmM2YwYmUzMmE1ODE5MGVi ZjBhNTdlMWJkN2E5YTUKLSAzZThjOWIzZTBlY2Q0OTIzNTUzYWE1Y2FhNjM3YTYyZjFlNzYwOTBm NTQ2YTY4Yzk0MjFiM2FjNmUxODU2ODA2Ci0gMWE0NTM4Njg1MzhmNmNlMDU2ZjRiMWI3YzBiYWFl OWNmMTU3YTg5NTQ4NjZiNThjZTRkNmU1YjM5M2JlN2VlNgotIDBmYWUxZTIwZmI1MzJjMWY3YzU0 OTM1NTU2Y2JmMGZhMTNiZTk4ODgxNTg4YmJiZDBkZmNlM2JjMDVkMDFhZjcKLSA2MWExZjMyNDAx YmM3NzMzMTM4ZGZiMDA1ZmQyOGM3MjEyOWRiNDY3ZTc5NjEzNDhlNzliMTkxMDMxZmFjMTA5Ci0g OWFkNGE4ZDhlNTEwMzk2MDA4MjA3NWNkYTVhYzI4Y2JiZWU5MWFmNmZjMWU4NzJkNWNkZWRjOGJk OTZiZDRjNwotIGY0ODA3Njk0YjAyMGE4ZDhlODgwY2QyM2MxNzhhNTVlMjAwYmQ0ZDQ5NDFjMjlk NTVmMjY5MTk5YmY5ODZiMzYKLSBiZGQ4ZmMyM2Y0NWM2YjEzNjE5Nzg3OGVjOTg4NzMwNGYwNGNj YTNlOGNjZmQyNTlhYWEwZDc5NDJkOGM2OTdlCi0gOGJjNmM4MDllZTU5YThkYzY2MTA0YzIyOTBl NTU2M2VmYTE2YzBiYzBiY2Y5NmIwODg4MjJlOTNjZjc1NTg4ZgotIDdkZjQ3NGYxZGY4ZTE1NGNk MjkxNGZlYTA3ZGY4ZGExYzBiZDBlZGY3MTk5MTFlYmI3MzNiMTQyNDcxOGMxODEKLSA1YzI1ZGM2 MmZiMjRlMDg3ZjI5ZGI0NzdjYmNlNzM3ODhkNWViZjcxZWQ5YWExMTE3OWU2YjhmYzMyY2M0YWJh Ci0gNDlhYWZiNmU0Nzk4OTQ4ZWVlYzA1ZDFjZmY5MjgwNzQ4NzNlYjI5YWE1YjJhY2ZmNzZhYTQy ZTRlOTY4N2RkOAotIGJhOGNjMDJmNmNiOTc4YTE1NGM4OTM1ODRkMGEwYjlkZWUwZjIzMmNhZjVi OTQ2NzVhOGU1MGIxNDUzYmEwYTYKLSBiMmJlZjRkNzJhZDFmODE4ZGRlMTUzODNjY2FmM2M1ZTkw NmYzMzg1ZTY5MjA2MWJjM2U0YjQ2YjUwNjMyODUzCi0gYzc4MjU1MTgwOWYxMGMwODMyYTQzZGUw MjA3NjIxNzQwZWY2OGQ1MzVhNzQyMzNiNWJhOTFiYjU4M2VkMGIwOAotIDI4NjRkMGYxMWUwN2Qw ZjFhNWVhZTAzODE5Njk5MmMzNzJkYzBmNzU5NmM3YzFiMTczYTZkN2VjN2Q1ZGU4MmQKLSBlOTgz MGZlNDk5MDJmZTIxMzc4NDg3ZjA2NmVmOGQzMmY1MThlZTJkNzk1YjkzZmIzMzFjNDA1NzMyMTg1 YjI2Ci0gY2EwNWRjMTc3Nzc0NDBkODgzNzU2YTFhZTRiMzMxNDY2NjYwNTYxNGE4MWU4ZGFjNzFk ZTk1ZmU5NjQxZDFmZQotIGY0MmJlNGUzNWJlY2JjMTQ2ZjM2ZTAxZWRlMjU4NmMzNWIyNDU0ZWRl MzExMDNiNzA4ZjY1YzkwMTljYjUyODcKLSA0ODQwYWZlOTEyZWQ1NTI0YjQ4MGZkYmJmZWFjMWU5 NGFjZDU3ZWVhZjE0ODA2MTc5NGMyMWUwNDlkMDA4MDAyCi0gNTViMmU3YTY1MDViZjEwZThjYmNm MWEyMmE3MzkyODYzODVhOTJkNTViNWY0NTU0ZjNlMTY4MWNkMmVkYTI0OQotIGFhMDUyMWQyNzAx ZmY1YTQ4MmJhMzYwYjViZmI5MTJmNGU3MWQ0ZTRkMzY4ZWQ4NDE2NDAzN2E4MjcwNDY4YzYKLSAy ZGY5NmFmNzliN2ZmNTY5Yjk0NjU2MDBhZWUwZTE3ODM3MzJhMzRhMjE0OWI1NzU2ZjVjMmQ0NmZk ZGJhNWJkCi0gYjNjODRjNGJmNGJhMjQxNWFjOTAzNmM0Y2MxODc0YmE2ZTk3NTgzNWNkMzRlNGJm OTFhYTk1MDA3ZmVhMWExMgotIDkwMGQ2ZDNhOTRhN2FiYzlkYWJhOTgwNDQyZjk1ODU4ODljNzQ2 N2QyMjY0MzQ2NmNlYjVlZjdiNTE4ZWI5M2IKLSBkMjdmM2VjNjVjNmRkMmUxNWQ2ZTM0NTExYzI1 ZWNjMzA1ODAzNTMyZjM3ZGNhNTRlMTBjZjA5YWU2MWJlY2RkCi0gMmM3NTg3MWI1NmMxMDdlMTE3 OGJjOTM0MDhkOTcwOGZjNzk1NGJjMTlmODk5NzNmOTE3MTRlZGQ1N2NhYWZkMQotIGQ3ZTZmNDFh NWJmMjc2ZWYyZjkwNmE4YjIxZmJlMDQ5ZGRlYjg2ZWJlY2U2NmJkODA0NzAzNTZiMWI3MTIxMWEK LSAyYWMxZjU0M2E3OTNkMjhkZTc3YTI1Y2FhZmRlYTU3ZGU2NGJhNTc4NGI0NjRlMDQ3YTE0NTk2 NmQzZmE2YzcxCi0gNzM4NGQ0OWRjOGRmM2RlYzhjYzhiN2Y4NTY3NmU3NTFiNDk4MDcxMzBhOGFi YzNlM2YxM2I5YzU4YTg1N2NmZAotIDIxNGRjMDAyOGY2NGVkMWMyYTM2NDkzOWYwNzI5MWM4NWFm YTlmM2ExMGVjZGJmOTU0NDgzZDk1MjRjYTg5NjQKLSBhYzFiYzNlNGFkYTZhNzcwMmUzZWQyOGIw ZjExNTBiMmJmYzAyYjIxMGY2MGYxZGE3NjU3OGFjYTljNGYyYTk3Ci0gZmMyOTRjZTkxNWEzYzZj YWRkY2RhMjQ1ODFiYmFiMTYwYzU1Y2NhNGNlYTkzNWFhYjI0YWRhNDAwYjA1NjhlOSIKK2NoZWNr c3VtPSJjNGI5M2YyZDRjMWRiM2Q5Yzk2Nzg4YThhZWM1ZmU4ZjNhNDdhMjc4YWMxMDljYTc1Zjcx ZDBiMjQxOTc3YTk3CisgMzRkMTFlYjlkNGU1NGNkNGI0MGE0MmVmNmIyMDZhMTM3ODI0M2ExYjJk NDNhNmJlMTQxZTg0YzMwMDVkMDIwMQorIDI5MzlhNzVhYzBhZGZjNDBjMmE3YjllNzFjZDQ3NTBm NGNmZDliM2JlOTE4OGQ5YjU0ZTUxNDIzMGY2ZWMxODMKKyBiNTNhMWI1NGVjNDhhOGE2MGZkNWNm YzFjNjE1MmQxZTAxN2ZiMjhhN2E1YWYyMTNmM2E5MmRhN2ZkMjgyYjRmCisgMmY5ZDQwZTI3MGU4 YTU5ZWFiYjhhODBhYTFkMTY5OTJkMjQ3MGY0OGZmMDAwOTAwYzYwYmFiOTI0NTNiZWNkNQorIDVi MjkxNjdjYTQyODgzMmI1YWM5NGI5Yjk4MDYxZDgxMDg2NDNiZTMzN2FmMzZiNjBiOTgwZGYzODU3 NTUzNDkKKyBjZDM1OWJlZmQ2NGQ5NzgxZjg2NDQ3ZTZjZjgzMDUzMjUxNTljMDg0YzZhZWY1NDAx YTMyZTA2NGE4M2ZhZmUyCisgMDEzNzJlNDc0NmY0ZWEzNjMxMjgxNDdiZjFjOTgwZDBhNDNjNzYx Mjg5NWM2YWFlNTk1ZDUxMmU3Njg3ZGZiMworIDIyNWU4ZjhiMDQwZGRlOGI0MTY1MWFjYWUwMGQ5 YmQ5YjAwZWNjZTJlZjk0MDg4YTIzMjQwODhlMWE0OTEzMzEKKyA3MWUxMWVlOWRhYWIxMjY3ZTli YTAwYTFjYjA5ZTk0YzJiNTgwNzgzNDk3M2Y5ZWRiZmFjYjNhYzMxYWFjMjVkCisgMjBlY2E3ZWYw NzhlMjUzMjcwMjRhNDQ5MjVhNGI0NTFhZGViNTZkOTc5ZTIwZmE3ZDNmYTAyOTRkYjczY2UzYgor IGE4MjIyNzRhOGUyNmNjNWU0ZjFjYjhkM2NhNWY3NmIxMjllZTk1ZjlmYmRkYjdjNmNjOGNkNjE3 ZTdhNWUwYTYKKyAxZTI3MzhlOWJlNDc4ODJiOTA0ZjNlZDU1ZTg5ODFjNWZkNWVmMDA5MzMxMmMx YzVjMjcxMzc4MjRmZjJlOWFhCisgMzQ5MWRhNDdhMmE0MTQ4NTE4Zjk5YWRkNDA2ZmM2NzAwZmJk YzBmMzdjMDVlNzQzZGYyZTBhYjBkODcyODQxZQorIDM2MTIzNzRmNTkxZWFlODVjM2MwZjdmZjNj ZWRhNTQ1OTU5ZGZlOWI4ZjJlMzBmMGM0OGZkZTg4N2QxMmE0OGMKKyAyMzA0YjQ0YzI2MGVlNmYx OWJlMDQ4YjQ0ODczZTlkM2Y3N2FlOGZjZDZkZTE4OTkwYTkwZTQzMjUzNTExNTRkCisgMmQ5Zjkw YTJmZjYxNDBhMzEyM2QxYjU2ZDdhODAzNGNiZmZmZDJkZThkYjRmZDFjNGU5MDg5MTRiZGIwNGM4 ZAorIDYzZGI4MWRmM2E0YjIyNTBkZjQ4NjU1YjU4ZjVmMzNiOWUzN2YwY2FkOTMzNjA4YjQ5MjQy ZWE0MmU1ZjUxNjQKKyA4N2Q4NjU4Mzc0ZTA3OWNkMGFkNTBkMjM2OGExODBmYWVhZDZmNDcyMzgw ODY0YTBjODRiOGZkNmIwZGNiNzc2CisgZTE3ZDI5NjQ5MTAxOTkwNDJmMmFkMTkxNjBiMjQzNGMz MjVlYzQ1MDJkYzljYWRmMzRjZjlhNjA1Y2Y3MjQxMgorIGFjMmFlYmJmMjE1NDQxZGI5YjQ2MWRl ZTQ4Y2E4NmVmNDQzNWVhNzI1ZDlmN2RlZTZlMDdlNjI4ZjQ2OWQ1MGUKKyA1MzdmZDZmM2E5NDZj ZGE2MjVkZDg5YmRkNmFmZGFjOTRmMjYxNTAyOWZkN2Q0YThhYTEzYTI4MzI5ZjZmYWJkCisgNTEw MDE4ZjhhMjg0MzYzNWM3OWVhNDBiNTk3MzVkMGIzMDQ0MmEzYzU1M2I1NDdjZTc4ODAwOTAxNGUx OTE4ZQorIDBmYTNjNDIxMzM4OWRjMzJkZThhNDJhNTM4YmM2ZmUyYmYyNTNjMzBhNTUyNTRhNDU5 N2M3MTdjOWEwYjY3ODQKKyA1NWQzYTBiM2IyZjBiMjkyNmFmMTIxYzdlNTVkNDc2ZDdmYmI2ODVj ZjkyZjI1MjUwNDgyYzVjNzFjZTY2NWRhCisgNDk4YzMyZDEwM2FlMDk5NzAzYjgwZGM5N2E1NDJk ZGE3MTA2ZmNhOGFhNjk1NzY4MTVlZDA0M2Y1YzMzODY3NworIDA2ZmRlNTIyZTMwMTVhNDRlMGI4 M2Q3YmQ4ZDQ5MmVmMmM4Mzg3Mzk3ZDYwMGMwOTg4MDA0YjZkMWJlZjFhOTUKKyA4YzJmMWE4MTEx MjQzNTA3ZGUwMzc1NGI5NzRjOWYxZGJhNDY2Mzk3OGY1MWZiOWUxNDljZjllNTE4OGQ5ODYyCisg YTllOGNjNTE4NDJlMDVkOGZhZGIxODRhMjg1MGI5ZTVhMzg5MTllNmM0Yjg2NGRjM2NjZDFkZjNi OTA1NzQ2NQorIDE5NGRlY2VmNzBiNTI5NTlkNTkxYTU2YTc1MzVjM2VhZjRmYTc3YmQ0YmQyMTM3 MTY0NTVhNGE4MjYyNDM5MzYKKyA4OWU5MDAzNWY3ZjhmYzA3Nzk3M2I1NzBjZDUwMjUzMTgwYWUw ZWM0OTRkNzcwMTY1ZDIxN2U2MGYzNWY1MmY4CisgZTc2MGQwOTczNzI1NmI5ZWFmZDg4MDliMThl OTg1NWJhZWZkNDcwODY0ODEyMGYyMjA2NTNjODVlODZjMDE2MgorIGJlNjI5NTkxMGYzMzI0NDBm NDY1MTA1MTlhODYyMGRlNmE3MmYyMjVlYmExNzIxOGM3MzRmZDY0N2MwMzg5OTQKKyBlZTBkYzkz MGExZjEyOTgyOTM0ZDQzYzlmNGMyYjE3ZDYxMDdmMmVlYmVmYWQyY2Y3YWNhNGI4ZGM5ZDY4M2Yy CisgNjAwZDJkOWI5ZGZmNDA0NmQ0NzYyOTJkOWIxNGI4ZmExZDA2Mjc2NjdhYjRiMDdkMmM3MjNj YTQ4ZWRiOTkxMQorIDhlM2QwOWM0MzE3MDgyOTliOGE2Y2FlNGFiODVhMDZhNjQ1ZDFmM2ZkMzBh M2JiMjE0YmM1NDNmYTE0YjEzMjEKKyA3OWRiY2QwYmEwZDAwZDY4ODhmMTlhZmVmMGFiN2Y5NDJi ODc3MjE4YjJiZTlhMmFhNGJmNDMyZmUwYjhiODVjCisgMjQ2NjQwNzdjYzZiMmYxMmZjZTNlMTk4 OWU1OWNlZDJjNGVhNDEzNzYwN2RmYWU1OTQ0NGZhYjJjMWM2MTFiZQorIDY4Mzc3Mjk4N2JiNGQy NDQ5ZDU4M2E3YzFkNGRkNDU3Y2Q4YzE0ZTVlODA5NzgwZDAzNTZkNzU2NDRkYjE2YWEKKyAyMWZl MWQ0NTlhY2YyNjUzNjFhMDE5OTJiMGU0NTI4MDE4YjAwNTdhMjA4MmMwODg0YTc1NGEyYjY3NzZm MWJkCisgYjQwODBlNzc0NTBiMWVkY2U1NDczY2ZhYWFlNDNlZmQwMGNlMmI4YTg1ZmFiNTAyOTNm NjlmMmRlZjQ4MjliNgorIDM5N2RlZTQ2YmU3YjYxODRmOGQxODczNWM1ZjA1MjMwNzkxMWU5ZmQy OTQ3Njg5YTJlOTYyMjViYjI0ZTllYWQKKyBhOWY3YjRlODA4ODcxMGJmYTAxMGRjYjhmZTM2MWY2 ZWQ5ODE5NjBjZmNiM2U4MDE4NWQ3ZmEyYTEwNzBjZmFiCisgZDA2MTJkNDBkZWMxZDlhODZlMzU2 ZGEwODE4YzU5NzE1ZTE1YWQ3YTE2NzIyM2NlMmFhNGU3ZjdmNDJhZGRkZgorIDYwZjAxYmI2YzJk MDg5Y2M2NTQ5ZjYwNDY1YWFlMDgxMzRkNTA1OThhYjQ4NWY3NzhjNWYwMjg3NDhjMzVmNDkKKyA3 YzQ2YTM4MjE2OWIzZGNmMmRhYjRmY2VhMDQxOGVlYWI1ZjYzYjg3OGNhNzIzNDEwNzE3NTNhMDkx M2MyZjkwCisgZTFkMGMzNjc2MDg2YjhkOGZiODAyOGNhZTc4Y2QzY2RiNTU0YWFlNDYyOWJmYzIx YmM2ZGU4MTdjNWM0YjJlZAorIDY2ODAxNWE4Mzg1ODgyNWFlZThmOGZkNDYzY2JmYTUyM2ZlMGZj ZmQ4MDQ2YTJmMTlmZmRjYzA4ZDhkZDkxM2UKKyAwNTMyNjViNDQ5N2U2Yzg2NWM5YzhkM2E0MzUw MGM1YjVjNDU3N2QyNDMxODYwZDk5MmE2OWM1NzQyZTQzYmVlCisgNTUxZTAyY2VlMTBkOTY0Mjcw NzE3MTI4Zjk2ZDAxYjM2YjIxYjYwNmQxM2VhNDNiNjZhYTI0OGIzY2M2NTZlOQorIDhiYjkyODNm MjhjZDI2MjZhMGNjMDIxYjg0Mjk2OGMwMmQwYzhlZDAwNWEzNTYzN2E4ZDU2NGQ2ZWM3MjFiNTQK KyA5M2VmNWY1ODEyYjNjNDk1ZWQyYmU2MGZlMTNjNzljY2VjMzdhNWQ5NGQ5NTYyMGE4OGZjNGE5 ZGQyNzc3NTFhCisgZTJiOTY2ODQ1MGM4MjYzMjZlYzk2YzE4ODEzNDFjZWE4MmViNTIxNzE2ODRk MTUyNjViNzNkZWQwZmU1ZDk1MworIDY0OGZiY2QwNDQ5ZDM1ZjZkNzUyMWJhMTZlZTMwZDE2ZDM4 MTFkMWM4YWFlMzk1MzA2ZWM4OTRkNDdlZDEzNmMKKyAwNThiZDI0NTAzZTc2YjIwNTBhZjk4MWRl MjUyMmZkNjhlOGRlZTRlMTY2NDUwNDQ0ZGVlMjJhM2IyNzk5NmQ3CisgN2UxMGUxMjYwYWM0MjM3 MWM3MWRlZTgyODk5ZTExNDg3NmRhMzE5MzkwN2IwYTUzNGViY2MzNjM3ZDc1NTkyZQorIGU3ZjBj ZGQ4YTZkNjBhMmY4OTkzMjUwYmY0ZDNhMGVkZmY4YjQ4ZmU2YjFjMjc1NjI0ZWM2NDVjMzJjYjhk MjAKKyAyMWY5MDlmZWZiM2FmNjQxYWI0MGZkY2EyYzE2OTgwMzEwMTFlYzQxODQ2YmFiNDgxOTkz ZmFmNjgwMDQyMmRjCisgMWJkNDg1NGRhZTU4YTRhZDBmMDYyYzA5NzU1YTEyMmNjMmIwZTFkZjdh NWE4ODJkMTZjMjU4NjU5YjEwYTdhYworIDJkOTNmMGRlNjIwOGE4OGEzNjQwYTcwYzEwOTc1OWI0 MjAyN2FmZTIwMDY0NmMxODEwNThjZjliNjJlYjBkN2EKKyA1NGVhZjhiZjQ4NGJmOTQ4NTIwZjVh OWE5NzhkMGM1MjEwZGY4ODkxOTA0Y2E2M2M2M2UwNzZiZDliZDk0M2Q2CisgNWQzMTE5ZjBhZjcx ZTE0MDEyM2RmZTcxY2RhMGYwMzU4MWE5NWI1NDZmZjY3NmU3ODQ0NWM3ZWIyNmY5MWM2YQorIDQw YWZlOGE1MjUwMWZhZTczZWExYTBiYWUwNDIxYzdlYTA0OTgzNjQzNGY2ZDhkMzQ5Yzg4ZWM1Zjlk ZmUxZmIKKyBiMjgwNTRjMDJjMTFiZThjZGVmOTM1NmQzMTRjNjlhYTUwMjhkZDI2ZGM1YjFiZTI3 NWJiNTU5ZGMzMzcyNDY0CisgMDYxZmZiODUyMzI1NzIyNThlOThjODA5NmYzMTQ2NjJmYjEwNGI5 YWZmZTA3YzgyNWNkMWJkNDg2YTlmNDEwOQorIDA1MzA4MjRiYTgxNjhlOTJmZmMwOWVkYzY5Mzcz NTVjZjdiMmM3MGZmODYwYjkxZDg5ZmFhYTEyNWNmNDVmNTciCg== --===============1256760123569714532==--