From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Rebase the Intel VLA patchset. Date: Thu, 23 Jul 2026 18:31:26 GMT Message-ID: <178483148697.1.2750887053112283314.rpms-gdb-cec929771252@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: cec929771252d3560ec30522be36990ab1703b4f ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogY2VjOTI5NzcxMjUyZDM1NjBlYzMwNTIyYmUzNjk5MGFiMTcwM2I0Zgog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxNC0wNy0wOFQyMToxMTowNSswMjowMAogICAg ICAgICAgICBTdGF0cyAgOiArNDExMC8tNTExOSBpbiAyOSBmaWxlKHMpCiAgICAgICAgICAgIFVS TCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvY2VjOTI5Nzcx MjUyZDM1NjBlYzMwNTIyYmUzNjk5MGFiMTcwM2I0Zj9icmFuY2g9Zml4LWR1cC1wYXRjaAoKICAg ICAgICAgICAgTG9nOgogICAgICAgICAgICBSZWJhc2UgdGhlIEludGVsIFZMQSBwYXRjaHNldC4K Ci0gUHl0aG9uIGNvbXBsZXRpb24gdy9vdmVycmlkZW4gY29tcGxldGVyIChTZXJnaW8gRHVyaWdh biBKdW5pb3IsIEJaIDEwNzUxOTkpLgotIFJlbW92ZSAle19iaW5kaXJ9L21vbm8tZ2RiLnB5IHdv cmthcm91bmQgb2YgbW9ubyBCWiA4MTU1MDEuCgotLS0KZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXIt dmxhLXRlc3RzLnBhdGNoIGIvZ2RiLWFyY2hlci12bGEtdGVzdHMucGF0Y2gKaW5kZXggMWY4ODg2 ZC4uYjhjNGVkYyAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci12bGEtdGVzdHMucGF0Y2gKKysrIGIv Z2RiLWFyY2hlci12bGEtdGVzdHMucGF0Y2gKQEAgLTE0LDU4NyArMTQsNiBAQCBJbmRleDogZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5hZGEvcGFja2VkX2FycmF5LmV4cAog KyAgICB9CiAgfQogIAotSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251 bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy43LjkwLjIw MTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TCTIw MTQtMDYtMTYgMjM6MzA6MzAuMTA4OTQwNDg0ICswMjAwCi1AQCAtMCwwICsxLDQ1NyBAQAotKwku ZmlsZQkieDg2XzY0LXZsYS1wb2ludGVyLmMiCi0rCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYsIiIs QHByb2diaXRzCi0rLkxkZWJ1Z19hYmJyZXYwOgotKwkuc2VjdGlvbgkuZGVidWdfaW5mbywiIixA cHJvZ2JpdHMKLSsuTGRlYnVnX2luZm8wOgotKwkuc2VjdGlvbgkuZGVidWdfbGluZSwiIixAcHJv Z2JpdHMKLSsuTGRlYnVnX2xpbmUwOgotKwkudGV4dAotKy5MdGV4dDA6Ci0rLmdsb2JsIGZvbwot KwkudHlwZQlmb28sIEBmdW5jdGlvbgotK2ZvbzoKLSsuTEZCMjoKLSsJLmZpbGUgMSAieDg2XzY0 LXZsYS1wb2ludGVyLmMiCi0rCS5sb2MgMSAyMiAwCi0rCXB1c2hxCSVyYnAKLSsuTENGSTA6Ci0r CW1vdnEJJXJzcCwgJXJicAotKy5MQ0ZJMToKLSsJc3VicQkkNjQsICVyc3AKLSsuTENGSTI6Ci0r CW1vdmwJJWVkaSwgLTM2KCVyYnApCi0rCS5sb2MgMSAyMiAwCi0rCW1vdnEJJXJzcCwgJXJheAot Kwltb3ZxCSVyYXgsIC00OCglcmJwKQotKwkubG9jIDEgMjMgMAotKwltb3ZsCS0zNiglcmJwKSwg JWVkeAotKwltb3ZzbHEJJWVkeCwlcmF4Ci0rCXN1YnEJJDEsICVyYXgKLSsJbW92cQklcmF4LCAt MjQoJXJicCkKLSsJLmxvYyAxIDI0IDAKLSsJbW92c2xxCSVlZHgsJXJheAotKwlhZGRxCSQxNSwg JXJheAotKwlhZGRxCSQxNSwgJXJheAotKwlzaHJxCSQ0LCAlcmF4Ci0rCXNhbHEJJDQsICVyYXgK LSsJc3VicQklcmF4LCAlcnNwCi0rCW1vdnEJJXJzcCwgLTU2KCVyYnApCi0rCW1vdnEJLTU2KCVy YnApLCAlcmF4Ci0rCWFkZHEJJDE1LCAlcmF4Ci0rCXNocnEJJDQsICVyYXgKLSsJc2FscQkkNCwg JXJheAotKwltb3ZxCSVyYXgsIC01NiglcmJwKQotKwltb3ZxCS01NiglcmJwKSwgJXJheAotKwlt b3ZxCSVyYXgsIC0xNiglcmJwKQotKwkubG9jIDEgMjcgMAotKwltb3ZsCSQwLCAtNCglcmJwKQot KwlqbXAJLkwyCi0rLkwzOgotKwkubG9jIDEgMjggMAotKwltb3ZsCS00KCVyYnApLCAlZXNpCi0r CW1vdmwJLTQoJXJicCksICVlYXgKLSsJbW92bAklZWF4LCAlZWN4Ci0rCW1vdnEJLTE2KCVyYnAp LCAlcmR4Ci0rCW1vdnNscQklZXNpLCVyYXgKLSsJbW92YgklY2wsICglcmR4LCVyYXgpCi0rCS5s b2MgMSAyNyAwCi0rCWFkZGwJJDEsIC00KCVyYnApCi0rLkwyOgotKwltb3ZsCS00KCVyYnApLCAl ZWF4Ci0rCWNtcGwJLTM2KCVyYnApLCAlZWF4Ci0rCWpsCS5MMwotKwkubG9jIDEgMzAgMAotKwku Z2xvYmwJYnJlYWtfaGVyZQotK2JyZWFrX2hlcmU6Ci0rCW1vdnEJLTE2KCVyYnApLCAlcmF4Ci0r CW1vdmIJJDAsICglcmF4KQotKwltb3ZxCS00OCglcmJwKSwgJXJzcAotKwkubG9jIDEgMzEgMAot KwlsZWF2ZQotKwlyZXQKLSsuTEZFMjoKLSsJLnNpemUJZm9vLCAuLWZvbwotKwkuc2VjdGlvbgku ZGVidWdfZnJhbWUsIiIsQHByb2diaXRzCi0rLkxmcmFtZTA6Ci0rCS5sb25nCS5MRUNJRTAtLkxT Q0lFMAotKy5MU0NJRTA6Ci0rCS5sb25nCTB4ZmZmZmZmZmYKLSsJLmJ5dGUJMHgxCi0rCS5zdHJp bmcJIiIKLSsJLnVsZWIxMjggMHgxCi0rCS5zbGViMTI4IC04Ci0rCS5ieXRlCTB4MTAKLSsJLmJ5 dGUJMHhjCi0rCS51bGViMTI4IDB4NwotKwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHg5MAotKwku dWxlYjEyOCAweDEKLSsJLmFsaWduIDgKLSsuTEVDSUUwOgotKy5MU0ZERTA6Ci0rCS5sb25nCS5M RUZERTAtLkxBU0ZERTAKLSsuTEFTRkRFMDoKLSsJLmxvbmcJLkxmcmFtZTAKLSsJLnF1YWQJLkxG QjIKLSsJLnF1YWQJLkxGRTItLkxGQjIKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMC0uTEZC MgotKwkuYnl0ZQkweGUKLSsJLnVsZWIxMjggMHgxMAotKwkuYnl0ZQkweDg2Ci0rCS51bGViMTI4 IDB4MgotKwkuYnl0ZQkweDQKLSsJLmxvbmcJLkxDRkkxLS5MQ0ZJMAotKwkuYnl0ZQkweGQKLSsJ LnVsZWIxMjggMHg2Ci0rCS5hbGlnbiA4Ci0rLkxFRkRFMDoKLSsJLnNlY3Rpb24JLmVoX2ZyYW1l LCJhIixAcHJvZ2JpdHMKLSsuTGZyYW1lMToKLSsJLmxvbmcJLkxFQ0lFMS0uTFNDSUUxCi0rLkxT Q0lFMToKLSsJLmxvbmcJMHgwCi0rCS5ieXRlCTB4MQotKwkuc3RyaW5nCSJ6UiIKLSsJLnVsZWIx MjggMHgxCi0rCS5zbGViMTI4IC04Ci0rCS5ieXRlCTB4MTAKLSsJLnVsZWIxMjggMHgxCi0rCS5i eXRlCTB4MwotKwkuYnl0ZQkweGMKLSsJLnVsZWIxMjggMHg3Ci0rCS51bGViMTI4IDB4OAotKwku Ynl0ZQkweDkwCi0rCS51bGViMTI4IDB4MQotKwkuYWxpZ24gOAotKy5MRUNJRTE6Ci0rLkxTRkRF MToKLSsJLmxvbmcJLkxFRkRFMS0uTEFTRkRFMQotKy5MQVNGREUxOgotKwkubG9uZwkuTEFTRkRF MS0uTGZyYW1lMQotKwkubG9uZwkuTEZCMgotKwkubG9uZwkuTEZFMi0uTEZCMgotKwkudWxlYjEy OCAweDAKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMC0uTEZCMgotKwkuYnl0ZQkweGUKLSsJ LnVsZWIxMjggMHgxMAotKwkuYnl0ZQkweDg2Ci0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkweDQK LSsJLmxvbmcJLkxDRkkxLS5MQ0ZJMAotKwkuYnl0ZQkweGQKLSsJLnVsZWIxMjggMHg2Ci0rCS5h bGlnbiA4Ci0rLkxFRkRFMToKLSsJLnRleHQKLSsuTGV0ZXh0MDoKLSsJLnNlY3Rpb24JLmRlYnVn X2xvYywiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2xvYzA6Ci0rLkxMU1QwOgotKwkucXVhZAkuTEZC Mi0uTHRleHQwCi0rCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCi0rCS52YWx1ZQkweDIKLSsJLmJ5dGUJ MHg3NwotKwkuc2xlYjEyOCA4Ci0rCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCi0rCS5xdWFkCS5MQ0ZJ MS0uTHRleHQwCi0rCS52YWx1ZQkweDIKLSsJLmJ5dGUJMHg3NwotKwkuc2xlYjEyOCAxNgotKwku cXVhZAkuTENGSTEtLkx0ZXh0MAotKwkucXVhZAkuTEZFMi0uTHRleHQwCi0rCS52YWx1ZQkweDIK LSsJLmJ5dGUJMHg3NgotKwkuc2xlYjEyOCAxNgotKwkucXVhZAkweDAKLSsJLnF1YWQJMHgwCi0r CS5zZWN0aW9uCS5kZWJ1Z19pbmZvCi0rLkxkZWJ1Z19yZWxhdGl2ZToKLSsJLmxvbmcJLkxkZWJ1 Z19lbmQgLSAuTGRlYnVnX3N0YXJ0Ci0rLkxkZWJ1Z19zdGFydDoKLSsJLnZhbHVlCTB4MgotKwku bG9uZwkuTGRlYnVnX2FiYnJldjAKLSsJLmJ5dGUJMHg4Ci0rCS51bGViMTI4IDB4MQotKwkubG9u ZwkuTEFTRjIKLSsJLmJ5dGUJMHgxCi0rCS5sb25nCS5MQVNGMwotKwkubG9uZwkuTEFTRjQKLSsJ LnF1YWQJLkx0ZXh0MAotKwkucXVhZAkuTGV0ZXh0MAotKwkubG9uZwkuTGRlYnVnX2xpbmUwCi0r CS51bGViMTI4IDB4MgotKwkuYnl0ZQkweDEKLSsJLnN0cmluZwkiZm9vIgotKwkuYnl0ZQkweDEK LSsJLmJ5dGUJMHgxNgotKwkuYnl0ZQkweDEKLSsJLnF1YWQJLkxGQjIKLSsJLnF1YWQJLkxGRTIK LSsJLmxvbmcJLkxMU1QwCi0rCS5sb25nCS5MdHlwZV9pbnQgLSAuTGRlYnVnX3JlbGF0aXZlCi0r CS51bGViMTI4IDB4MwotKwkubG9uZwkuTEFTRjUKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTUK LSsJLmxvbmcJLkx0eXBlX2ludCAtIC5MZGVidWdfcmVsYXRpdmUKLSsJLmJ5dGUJMHgyCi0rCS5i eXRlCTB4OTEKLSsJLnNsZWIxMjggLTUyCi0rLkx0YWdfcG9pbnRlcjoKLSsJLnVsZWIxMjggMHg0 Ci0rCS5ieXRlCTB4OAkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmxvbmcJLkx0YWdfYXJyYXlf dHlwZSAtIC5kZWJ1Z19pbmZvCS8qIERXX0FUX3R5cGUgKi8KLSsJLnVsZWIxMjggMHg1CS8qIEFi YnJldiBOdW1iZXI6IDUgKERXX1RBR192YXJpYWJsZSkgKi8KLSsJLmxvbmcJLkxBU0YwCi0rCS5i eXRlCTB4MQotKwkuYnl0ZQkweDE4Ci0rI2lmIDEKLSsJLmxvbmcJLkx0YWdfcG9pbnRlciAtIC5k ZWJ1Z19pbmZvCi0rI2Vsc2UKLSsJLyogRGVidWdnaW5nIG9ubHk6IFNraXAgdGhlIHR5cGVkZWYg aW5kaXJlY3Rpb24uICAqLwotKwkubG9uZwkuTHRhZ19hcnJheV90eXBlIC0gLmRlYnVnX2luZm8K LSsjZW5kaWYKLSsJLyogRFdfQVRfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBzdGFydCAqLwot KwkuYnl0ZQkweDMKLSsJLmJ5dGUJMHg5MQotKwkuc2xlYjEyOCAtMzIKLSsjaWYgMAotKwkuYnl0 ZQkweDYJLyogRFdfT1BfZGVyZWYgKi8KLSsjZWxzZQotKwkuYnl0ZQkweDk2CS8qIERXX09QX25v cCAqLwotKyNlbmRpZgotKwkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IGVuZCAq LwotKwkudWxlYjEyOCAweDYKLSsJLnN0cmluZwkiaSIKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4 MTkKLSsJLmxvbmcJLkx0eXBlX2ludCAtIC5MZGVidWdfcmVsYXRpdmUKLSsJLmJ5dGUJMHgyCi0r CS5ieXRlCTB4OTEKLSsJLnNsZWIxMjggLTIwCi0rCS5ieXRlCTB4MAotKy5MdHlwZV9pbnQ6Ci0r CS51bGViMTI4IDB4NwotKwkuYnl0ZQkweDQKLSsJLmJ5dGUJMHg1Ci0rCS5zdHJpbmcJImludCIK LSsuTHRhZ19hcnJheV90eXBlOgotKwkudWxlYjEyOCAweDgJLyogQWJicmV2IE51bWJlcjogOCAo RFdfVEFHX2FycmF5X3R5cGUpICovCi0rCS5sb25nCS5MdHlwZV9jaGFyIC0gLkxkZWJ1Z19yZWxh dGl2ZQotKwkubG9uZwkuTHR5cGVfdWxvbmcgLSAuTGRlYnVnX3JlbGF0aXZlCS8qIERXX0FUX3Np Ymxpbmc6IERXX0ZPUk1fcmVmNCAqLwotKzE6CS8qIERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZP Uk1fYmxvY2sxOiBzdGFydCAqLwotKwkuYnl0ZQkyZiAtIDNmCS8qIGxlbmd0aCAqLwotKzM6Ci0r CS5ieXRlCTB4OTcJLyogRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcyAqLwotKyNpZiAxCi0rCS5i eXRlCTB4NgkvKiBEV19PUF9kZXJlZiAqLwotKyNlbHNlCi0rCS5ieXRlCTB4OTYJLyogRFdfT1Bf bm9wICovCi0rI2VuZGlmCi0rMjoJLyogRFdfQVRfZGF0YV9sb2NhdGlvbjogRFdfRk9STV9ibG9j azE6IGVuZCAqLwotKwkudWxlYjEyOCAweDkKLSsJLmxvbmcJLkx0eXBlX2NoYXIgLSAuTGRlYnVn X3JlbGF0aXZlCS8qIERXX0FUX3R5cGU6IERXX0ZPUk1fcmVmNCAqLwotKwkuYnl0ZQkweDMKLSsJ LmJ5dGUJMHg5MQotKwkuc2xlYjEyOCAtNDAKLSsJLmJ5dGUJMHg2Ci0rCS5ieXRlCTB4MAotKy5M dHlwZV91bG9uZzoKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4OAotKwkuYnl0ZQkweDcKLSsu THR5cGVfY2hhcjoKLSsJLnVsZWIxMjggMHhiCi0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDYKLSsJ LmxvbmcJLkxBU0YxCi0rCS5ieXRlCTB4MAotKy5MZGVidWdfZW5kOgotKwkuc2VjdGlvbgkuZGVi dWdfYWJicmV2Ci0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDExCi0rCS5ieXRlCTB4MQot KwkudWxlYjEyOCAweDI1Ci0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDEzCi0rCS51bGVi MTI4IDB4YgotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4MWIK LSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4MTEKLSsJLnVsZWIxMjggMHgxCi0rCS51bGVi MTI4IDB4MTIKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTAKLSsJLnVsZWIxMjggMHg2 Ci0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgyCi0rCS51bGViMTI4IDB4 MmUKLSsJLmJ5dGUJMHgxCi0rCS51bGViMTI4IDB4M2YKLSsJLnVsZWIxMjggMHhjCi0rCS51bGVi MTI4IDB4MwotKwkudWxlYjEyOCAweDgKLSsJLnVsZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIK LSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgyNwotKwkudWxl YjEyOCAweGMKLSsJLnVsZWIxMjggMHgxMQotKwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHgx MgotKwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHg0MAotKwkudWxlYjEyOCAweDYKLSsJLnVs ZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTMKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwku dWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHg1Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMK LSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGVi MTI4IDB4M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4NDkKLSsJLnVsZWIxMjggMHgx MwotKwkudWxlYjEyOCAweDIKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkw eDAKLSsJLnVsZWIxMjggMHg0CS8qIC5MdGFnX3BvaW50ZXIgYWJicmV2ICovCi0rCS51bGViMTI4 IDB4MGYJLyogRFdfVEFHX3BvaW50ZXJfdHlwZSAqLwotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjgg MHgwYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHg0OQotKwkudWxlYjEyOCAweDEzCi0r CS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg1Ci0rCS51bGViMTI4IDB4MzQK LSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweGUKLSsJLnVsZWIxMjgg MHgzYQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJ LnVsZWIxMjggMHg0OQotKwkudWxlYjEyOCAweDEzCi0rCS51bGViMTI4IDB4MgotKwkudWxlYjEy OCAweGEKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDYKLSsJLnVsZWIx MjggMHgzNAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4OAotKwku dWxlYjEyOCAweDNhCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNiCi0rCS51bGViMTI4 IDB4YgotKwkudWxlYjEyOCAweDQ5Ci0rCS51bGViMTI4IDB4MTMKLSsJLnVsZWIxMjggMHgyCi0r CS51bGViMTI4IDB4YQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4Nwot KwkudWxlYjEyOCAweDI0Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjgg MHhiCi0rCS51bGViMTI4IDB4M2UKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4MwotKwku dWxlYjEyOCAweDgKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDgJLyog QWJicmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5cGUpICovCi0rCS51bGViMTI4IDB4MQot KwkuYnl0ZQkweDEKLSsJLnVsZWIxMjggMHg0OQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4 IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4MQkvKiBEV19BVF9zaWJsaW5n ICovCi0rCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4NTAJ LyogRFdfQVRfZGF0YV9sb2NhdGlvbiAqLwotKwkudWxlYjEyOCAweGEJLyogRFdfRk9STV9ibG9j azEgKi8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDkKLSsJLnVsZWIx MjggMHgyMQotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg0OQkvKiBEV19BVF90eXBlICovCi0r CS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4MmYKLSsJLnVs ZWIxMjggMHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhhCi0rCS51 bGViMTI4IDB4MjQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweGIK LSsJLnVsZWIxMjggMHgzZQotKwkudWxlYjEyOCAweGIKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4 MAotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgyNAotKwkuYnl0ZQkweDAKLSsJLnVsZWIx MjggMHhiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNlCi0rCS51bGViMTI4IDB4Ygot KwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAK LSsJLmJ5dGUJMHgwCi0rCS5zZWN0aW9uCS5kZWJ1Z19wdWJuYW1lcywiIixAcHJvZ2JpdHMKLSsJ LmxvbmcJMHgxNgotKwkudmFsdWUJMHgyCi0rCS5sb25nCS5MZGVidWdfaW5mbzAKLSsJLmxvbmcJ MHhhOAotKwkubG9uZwkweDJkCi0rCS5zdHJpbmcJImZvbyIKLSsJLmxvbmcJMHgwCi0rCS5zZWN0 aW9uCS5kZWJ1Z19hcmFuZ2VzLCIiLEBwcm9nYml0cwotKwkubG9uZwkweDJjCi0rCS52YWx1ZQkw eDIKLSsJLmxvbmcJLkxkZWJ1Z19pbmZvMAotKwkuYnl0ZQkweDgKLSsJLmJ5dGUJMHgwCi0rCS52 YWx1ZQkweDAKLSsJLnZhbHVlCTB4MAotKwkucXVhZAkuTHRleHQwCi0rCS5xdWFkCS5MZXRleHQw LS5MdGV4dDAKLSsJLnF1YWQJMHgwCi0rCS5xdWFkCTB4MAotKwkuc2VjdGlvbgkuZGVidWdfc3Ry LCJNUyIsQHByb2diaXRzLDEKLSsuTEFTRjA6Ci0rCS5zdHJpbmcJImFycmF5IgotKy5MQVNGNToK LSsJLnN0cmluZwkic2l6ZSIKLSsuTEFTRjM6Ci0rCS5zdHJpbmcJIng4Nl82NC12bGEtcG9pbnRl ci5jIgotKy5MQVNGNjoKLSsJLnN0cmluZwkiYXJyYXlfdCIKLSsuTEFTRjE6Ci0rCS5zdHJpbmcJ ImNoYXIiCi0rLkxBU0Y0OgotKwkuc3RyaW5nCSJnZGIuYXJjaCIKLSsuTEFTRjI6Ci0rCS5zdHJp bmcJIkdOVSBDIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgotKwkuaWRlbnQJIkdD QzogKEdOVSkgNC4zLjIgMjAwODExMDUgKFJlZCBIYXQgNC4zLjItNykiCi0rCS5zZWN0aW9uCS5u b3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKLUluZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dk Yi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVy LmMJMjAxNC0wNi0xNiAyMzozMDozMC4xMDg5NDA0ODQgKzAyMDAKLUBAIC0wLDAgKzEsNDMgQEAK LSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwot KyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaWYgMAotKwotK3Zv aWQKLStmb28gKGludCBzaXplKQotK3sKLSsgIHR5cGVkZWYgY2hhciBhcnJheV90W3NpemVdOwot KyAgYXJyYXlfdCBhcnJheTsKLSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IHNpemU7 IGkrKykKLSsgICAgYXJyYXlbaV0gPSBpOwotKwotKyAgYXJyYXlbMF0gPSAwOwkvKiBicmVhay1o ZXJlICovCi0rfQotKwotKyNlbHNlCi0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBmb28g KDI2KTsKLSsgIGZvbyAoNzgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKyNlbmRpZgotSW5kZXg6 IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBv aW50ZXIuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dk Yi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5leHAJMjAxNC0wNi0xNiAyMzozMDozMC4xMDg5NDA0 ODQgKzAyMDAKLUBAIC0wLDAgKzEsNjYgQEAKLSsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0r IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsK LStpZiAhW2lzdGFyZ2V0ICJ4ODZfNjQtKi0qIl0gdGhlbiB7Ci0rICAgIHZlcmJvc2UgIlNraXBw aW5nIG92ZXIgZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmV4cCB0ZXN0IG1hZGUgb25seSBm b3IgeDg2XzY0LiIKLSsgICAgcmV0dXJuCi0rfQotKwotK3NldCB0ZXN0ZmlsZSB4ODZfNjQtdmxh LXBvaW50ZXIKLStzZXQgc3JjYXNtZmlsZSAke3Rlc3RmaWxlfS1mb28uUwotK3NldCBzcmNmaWxl ICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZp bGV9Ci0rc2V0IGJpbm9iamZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1mb28u bwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2FzbWZpbGV9 IiAiJHtiaW5vYmpmaWxlfSIgb2JqZWN0IHt9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNv dWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKLSt9Ci0raWYgIHsg W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0gJHtiaW5vYmpmaWxl fSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVz dGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAgcmV0dXJuIC0xCi0rfQot KwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAg ICB1bnRlc3RlZCB4ODZfNjQtdmxhLXBvaW50ZXIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dk Yl9icmVha3BvaW50ICJicmVha19oZXJlIgotKwotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50 ICJicmVha19oZXJlIgotKwotK2dkYl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gY2hhciBc XChcXCpcXClcXFxbMjZcXFxdIiAiZmlyc3Q6IHdoYXRpcyBhcnJheSIKLStnZGJfdGVzdCAicHR5 cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBl IGFycmF5IgotKwotK2dkYl90ZXN0ICJ3aGF0aXMgKmFycmF5IiAidHlwZSA9IGNoYXIgXFxcW3Zh cmlhYmxlIGxlbmd0aFxcXF0iICJmaXJzdDogd2hhdGlzICphcnJheSIKLStnZGJfdGVzdCAicHR5 cGUgKmFycmF5IiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlIGxlbmd0aFxcXF0iICJmaXJzdDog cHR5cGUgKmFycmF5IgotKwotK2dkYl90ZXN0ICJwICgqYXJyYXkpXFsxXF0iICJcXCRcWzAtOVxd ID0gMSAnXFxcXDAwMSciCi0rZ2RiX3Rlc3QgInAgKCphcnJheSlcWzJcXSIgIlxcJFxbMC05XF0g PSAyICdcXFxcMDAyJyIKLStnZGJfdGVzdCAicCAoKmFycmF5KVxbM1xdIiAiXFwkXFswLTlcXSA9 IDMgJ1xcXFwwMDMnIgotK2dkYl90ZXN0ICJwICgqYXJyYXkpXFs0XF0iICJcXCRcWzAtOVxdID0g NCAnXFxcXDAwNCciCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUi Ci0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBjaGFyIFxcKFxcKlxcKVxcXFs3 OFxcXF0iICJzZWNvbmQ6IHdoYXRpcyBhcnJheSIKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0 eXBlID0gY2hhciBcXChcXCpcXClcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSBhcnJheSIKLSsK LStnZGJfdGVzdCAid2hhdGlzICphcnJheSIgInR5cGUgPSBjaGFyIFxcXFt2YXJpYWJsZSBsZW5n dGhcXFxdIiAic2Vjb25kOiB3aGF0aXMgKmFycmF5IgotK2dkYl90ZXN0ICJwdHlwZSAqYXJyYXki ICJ0eXBlID0gY2hhciBcXFxbdmFyaWFibGUgbGVuZ3RoXFxcXSIgInNlY29uZDogcHR5cGUgKmFy cmF5IgogSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94 ODZfNjQtdmxhLXR5cGVkZWYtZm9vLlMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKCmRpZmYgLS1naXQgYS9nZGItcHl0aG9uLWNv bXBsZXRlci0xb2YyLnBhdGNoIGIvZ2RiLXB5dGhvbi1jb21wbGV0ZXItMW9mMi5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDc4ODIyCi0tLSAvZGV2L251bGwKKysr IGIvZ2RiLXB5dGhvbi1jb21wbGV0ZXItMW9mMi5wYXRjaApAQCAtMCwwICsxLDc0NyBAQAoraHR0 cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTQtMDcvbXNnMDAwMDIuaHRtbAor U3ViamVjdDogUmU6IFtQQVRDSF0gUFIgcHl0aG9uLzE2Njk5OiBHREIgUHl0aG9uIGNvbW1hbmQg Y29tcGxldGlvbiB3aXRoIG92ZXJyaWRlbiBjb21wbGV0ZSB2cy4gY29tcGxldGVyIGNsYXNzCito dHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTEwNzUxOTkKKworT24g V2VkbmVzZGF5LCBNYXkgMjEgMjAxNCwgRG91ZyBFdmFucyB3cm90ZToKKworPiBTZXJnaW8gRHVy aWdhbiBKdW5pb3IgPHNlcmdpb2RqQHJlZGhhdC5jb20+IHdyaXRlczoKKz4+IFsuLi5dCis+PiBU aGFua3MuICBXRFlUIG9mIHRoZSBmb2xsb3dpbmcgcGF0Y2g/Cis+Cis+IEhpLgorPgorPiBmd2l3 IGl0J3MgdG9vIGJhZCB0aGUgYWJpbGl0eSB0byBwbHVnIGluIGRpZmZlcmVudCBjb21wbGV0ZXJz IGlzbid0IG1vcmUsCis+IEkgZHVubm8sIHBhcmFtZXRlcml6ZWQgKGNvdWxkbid0IHBpY2sgYSBi ZXR0ZXIgdGVybSwgYXBvbG9naWVzIC0KKz4gSSB0aG91Z2h0IG9mICJvYmplY3Qgb3JpZW50ZWQi IGJ1dCB0aGF0IGNhcnJpZXMgaXRzIG93biBiYWdnYWdlKS4KKz4gUGVyZm9ybWluZyBjb21wbGV0 aW9uIG9idmlvdXNseSBpbnZvbHZlcyBzcGVjaWZ5aW5nIG1vcmUgdGhhbiBhIGp1c3QKKz4gc2lu Z2xlIGZ1bmN0aW9uICh3aXRuZXNzIHRoZSBjb21wYXJpc29uIG9mIHRoZSBjb21wbGV0ZXIgd2l0 aCBzcGVjaWZpYworPiBmdW5jdGlvbnMpLgorCitUaGFua3MgZm9yIHRoZSByZXBseSwgYW5kIHNv cnJ5IGZvciB0aGUgbG9uZyBkZWxheSBpbiBhbnN3ZXJpbmcuCisKKz4gUGx1cyBpdCdzIG1vcmUg dGhhbiBzcGVjaWZ5aW5nIGJya2NoYXJzLgorPiBXaXRuZXNzIGNvZGUgbGlrZSB0aGlzOgorPgor PiAJCSAgICAgIC8qIE1hbnkgY29tbWFuZHMgd2hpY2ggd2FudCB0byBjb21wbGV0ZSBvbgorPiAJ CQkgZmlsZSBuYW1lcyBhY2NlcHQgc2V2ZXJhbCBmaWxlIG5hbWVzLCBhcworPiAJCQkgaW4gInJ1 biBmb28gYmFyID4+YmF6Ii4gIFNvIHdlIGRvbid0IHdhbnQKKz4gCQkJIHRvIGNvbXBsZXRlIHRo ZSBlbnRpcmUgdGV4dCBhZnRlciB0aGUKKz4gCQkJIGNvbW1hbmQsIGp1c3QgdGhlIGxhc3Qgd29y ZC4gIFRvIHRoaXMKKz4gCQkJIGVuZCwgd2UgbmVlZCB0byBmaW5kIHRoZSBiZWdpbm5pbmcgb2Yg dGhlCis+IAkJCSBmaWxlIG5hbWUgYnkgc3RhcnRpbmcgYXQgYHdvcmQnIGFuZCBnb2luZworPiAJ CQkgYmFja3dhcmRzLiAgKi8KKz4gCQkgICAgICBmb3IgKHAgPSB3b3JkOworPiAJCQkgICBwID4g dG1wX2NvbW1hbmQKKz4gCQkJICAgICAmJiBzdHJjaHIgKGdkYl9jb21wbGV0ZXJfZmlsZV9uYW1l X2JyZWFrX2NoYXJhY3RlcnMsIHBbLTFdKSA9PSBOVUxMOworPiAJCQkgICBwLS0pCis+IAkJCTsK Kz4KKz4gSVdCTiBpZiBhICJjb21wbGV0ZXIiIG9iamVjdCBkZXNjcmliZWQgaG93IHRvIGRvIGFs bCB0aGVzZSB0aHJlZSB0aGluZ3MuCis+IFRoZW4gdGhlIHNwZWNpYWwgY2FzZSBjb2RlIGZvciBm aWxlbmFtZV9jb21wbGV0ZXIgKGFuZCBsb2NhdGlvbl9jb21wbGV0ZXIpCis+IGluIGNvbXBsZXRl ci5jIGNvdWxkIGRpc2FwcGVhci4gIEJ1dCBtYXliZSB0aGF0J3MgYSBwYXRjaCBmb3IgYW5vdGhl ciBkYXkuCisKK1doaWxlIEkgYWdyZWUgd2l0aCB5b3UgdGhhdCB0aGUgY29tcGxldGlvbiBtZWNo YW5pc20gY291bGQgYmUgYmV0dGVyIChJCitteXNlbGYgaGFkIGEgbG90IG9mIHRyb3VibGUgd2l0 aCBpdCksIEkgdW5mb3J0dW5hdGVseSBkb24ndCBoYXZlIGVub3VnaAordGltZSB0byB0YWNrbGUg dGhpcyBwcm9ibGVtIG5vdy4gIFNvIHllYWgsIEkgdGhpbmsgaXQgd2lsbCBiZSBhIHBhdGNoCitm b3IgYW5vdGhlciBkYXkuLi4KKworPiBSZWdhcmRpbmcgdGhlIGhhY2sgb2YgdXNpbmcgYSBzdGF0 aWMgbG9jYWwgdG8gcGFzcyBkYXRhIGZyb20KKz4gaGFuZGxlX2Jya2NoYXJzIHRvIGhhbmRsZV9j b21wbGV0aW9uLCBJIGtub3cgaXQncyBhIGhhY2t5IHByYWdtYXRpYworPiBjaG9pY2UuICBUbyBn ZXQgdGhlIHJlZmVyZW5jZSBjb3VudGluZyByaWdodCB0aGUgY29kZSBhc3N1bWVzIHRoYXQKKz4g aWYgdGhlIGhhbmRsZV9icmtjaGFycyBwaGFzZSBpcyBkb25lIHRoZW4gdGhlIGhhbmRsZV9jb21w bGV0aW9uCis+IHBoYXNlIHdpbGwgYmUgZG9uZSB0b28sIHJpZ2h0PworCitZZWFoLiAgVGhpcyBp cyB0cnVlIGZvciB0aGUgY3VycmVudCBjb2RlICh3ZWxsLCBleGNlcHQgbWF5YmUgZm9yIHRoZQor Y2FzZSB5b3UgZGVzY3JpYmUgYmVsb3cuLi4pLgorCis+IEkgd29uZGVyIGlmIGEgU0lHSU5UIGNv dWxkIHNuZWFrIGluCis+IHRoZXJlIGJldHdlZW4gdGhlIHR3byBwYXNzZXMgKGVpdGhlciB0b2Rh eSBvciB0b21vcnJvdykuCis+IE1heWJlIHRoZSBjb2RlIGluIGNtZHB5X2NvbXBsZXRlcl9oZWxw ZXIgZm9yIGhhbmRsZV9icmtjaGFyc19wIGNvdWxkCis+IGZpcnN0IGNoZWNrIHdoZXRoZXIgcmVz dWx0b2JqIGlzIGFscmVhZHkgbm9uLU5VTEwsIGFuZCBkZWNyZW1lbnQgaXRzCis+IHJlZmVyZW5j ZSBjb3VudCBiZWZvcmUgc2V0dGluZyBpdCB0byBOVUxMPworCitZZXMsIGRvbmUgKEkgdGhpbmsp LiAgVGhhbmtzIGZvciByYWlzaW5nIHRoaXMgaXNzdWUuCisKKz4gQW5kIGNtZHB5X2NvbXBsZXRl cl9oZWxwZXIKKz4gY291bGQgYmUgZGVmaW5lZCB0byByZXR1cm4gYSBib3Jyb3dlZCByZWZlcmVu Y2UgdG8gcmVzdWx0b2JqPworPiBEdW5ubywganVzdCB0aGlua2luZyBvdXQgbG91ZC4KKworRG9u ZSwgSSBndWVzcy4KKworPiBTb21ldGhpbmcgcHV6emxlcyBtZSB0aG91Z2g6IElmIGl0J3Mgb2sg dG8gY2FjaGUgdGhlIGNvbXBsZXRpb24gcmVzdWx0IGZyb20gdGhlCis+IGhhbmRsZV9icmtjaGFy cyBwYXNzIHRvIHRoZSBoYW5kbGVfY29tcGxldGlvbiBwYXNzLCB3aHkgaGF2ZSB0d28gcGFzc2Vz PworPiBJdCBmZWVscyBsaWtlIHRoZXJlIG11c3QgYmUgYSBjYXNlIHdoZXJlIHRoaXMgY2FjaGlu ZyBvZiB0aGUgcmVzdWx0Cis+IGluIGEgc3RhdGljIGxvY2FsIGZyb20gb25lIHBhc3MgdG8gdGhl IG5leHQgd29uJ3Qgd29yay4KKworSSdtIG5vdCBzdXJlIEkgZm9sbG93LgorCitJdCdzIE9LIHRv IGNhY2hlIHRoZSByZXN1bHQgYmVjYXVzZSBoYW5kbGVfYnJrY2hhcnMgYW5kCitoYW5kbGVfY29t cGxldGlvbiB3b3JrIG9uIHRoZSBzYW1lIHNldCBvZiBkYXRhLiAgSW4gZmFjdCwgd2Ugd291bGRu J3QKK25lZWQgdG8gaGF2ZSB0d28gcGFzc2VzIGhlcmU7IG15IHByZXZpb3VzIHBhdGNoIGRpZG4n dCBoYXZlIHR3byBwYXNzZXMsCithbmQgd29ya2VkIGZpbmUuICBJIGp1c3QgaW1wbGVtZW50ZWQg aXQgdGhpcyB3YXkgYmVjYXVzZSBUb20gKGNvcnJlY3RseSkKK3JhaXNlZCB0aGUgcG9pbnQgdGhh dCB0aGUgY29tcGxldGlvbiBpdHNlbGYgbWlnaHQgYmUgdGltZS1jb25zdW1pbmcsIGFuZAordGh1 cyB3ZSBjb3VsZCByZXVzZSBpdHMgcmVzdWx0IGluIHRoZSB0d28gcGhhc2VzLgorCis+IEFub3Ro ZXIgcXVlc3Rpb246Cis+IEkgbm90aWNlZCBjb21wbGV0ZV9jb21tYW5kIGRvZXNuJ3QgZG8gdGhp cyB0d28tcGhhc2UgZGFuY2UKKz4gb2YgaGFuZGxlX2Jya2NoYXJzIGZvbGxvd2VkIGJ5IGhhbmRs ZV9jb21wbGV0aW9ucy4gIFNob3VsZCBpdD8KKz4gSXQganVzdCBnb2VzIHN0cmFpZ2h0IHRvIGhh bmRsZV9jb21wbGV0aW9ucy4KKworSSBkb24ndCB0aGluayBpdCBzaG91bGQsIGJlY2F1c2UgZm9y IGNvbXBsZXRlX2NvbW1hbmQgKGFuZAorY29tcGxldGVfZmlsZW5hbWUgZXQgYWwpIHRoZSBoYW5k bGVfYnJrY2hhcnMgaXMgYWxyZWFkeSBkZWZpbmVkCitpbnRlcm5hbGx5IGJ5IEdEQi4gIFNlZToK KworICAgIC4uLgorICAvKiBDaG9vc2UgdGhlIGRlZmF1bHQgc2V0IG9mIHdvcmQgYnJlYWsgY2hh cmFjdGVycyB0byBicmVhaworICAgICBjb21wbGV0aW9ucy4gIElmIHdlIGxhdGVyIGZpbmQgb3V0 IHRoYXQgd2UgYXJlIGRvaW5nIGNvbXBsZXRpb25zCisgICAgIG9uIGNvbW1hbmQgc3RyaW5ncyAo YXMgb3Bwb3NlZCB0byBzdHJpbmdzIHN1cHBsaWVkIGJ5IHRoZQorICAgICBpbmRpdmlkdWFsIGNv bW1hbmQgY29tcGxldGVyIGZ1bmN0aW9ucywgd2hpY2ggY2FuIGJlIGFueSBzdHJpbmcpCisgICAg IHRoZW4gd2Ugd2lsbCBzd2l0Y2ggdG8gdGhlIHNwZWNpYWwgd29yZCBicmVhayBzZXQgZm9yIGNv bW1hbmQKKyAgICAgc3RyaW5ncywgd2hpY2ggbGVhdmVzIG91dCB0aGUgJy0nIGNoYXJhY3RlciB1 c2VkIGluIHNvbWUKKyAgICAgY29tbWFuZHMuICAqLworICBybF9jb21wbGV0ZXJfd29yZF9icmVh a19jaGFyYWN0ZXJzID0KKyAgICBjdXJyZW50X2xhbmd1YWdlLT5sYV93b3JkX2JyZWFrX2NoYXJh Y3RlcnMoKTsKKyAgICAuLi4KKworICAgIC8qIEl0IGlzIGEgbm9ybWFsIGNvbW1hbmQ7IHdoYXQg Y29tZXMgYWZ0ZXIgaXQgaXMKKyAgICAgICBjb21wbGV0ZWQgYnkgdGhlIGNvbW1hbmQncyBjb21w bGV0ZXIgZnVuY3Rpb24uICAqLworICAgIGlmIChjLT5jb21wbGV0ZXIgPT0gZmlsZW5hbWVfY29t cGxldGVyKQorICAgICAgeworICAgICAgICAvKiBNYW55IGNvbW1hbmRzIHdoaWNoIHdhbnQgdG8g Y29tcGxldGUgb24KKyAgICAgICAgICAgZmlsZSBuYW1lcyBhY2NlcHQgc2V2ZXJhbCBmaWxlIG5h bWVzLCBhcworICAgICAgICAgICBpbiAicnVuIGZvbyBiYXIgPj5iYXoiLiAgU28gd2UgZG9uJ3Qg d2FudAorICAgICAgICAgICB0byBjb21wbGV0ZSB0aGUgZW50aXJlIHRleHQgYWZ0ZXIgdGhlCisg ICAgICAgICAgIGNvbW1hbmQsIGp1c3QgdGhlIGxhc3Qgd29yZC4gIFRvIHRoaXMKKyAgICAgICAg ICAgZW5kLCB3ZSBuZWVkIHRvIGZpbmQgdGhlIGJlZ2lubmluZyBvZiB0aGUKKyAgICAgICAgICAg ZmlsZSBuYW1lIGJ5IHN0YXJ0aW5nIGF0IGB3b3JkJyBhbmQgZ29pbmcKKyAgICAgICAgICAgYmFj a3dhcmRzLiAgKi8KKyAgICAgICAgZm9yIChwID0gd29yZDsKKyAgICAgICAgICAgICBwID4gdG1w X2NvbW1hbmQKKyAgICAgICAgICAgICAgICYmIHN0cmNociAoZ2RiX2NvbXBsZXRlcl9maWxlX25h bWVfYnJlYWtfY2hhcmFjdGVycywgcFstMV0pID09IE5VTEw7CisgICAgICAgICAgICAgcC0tKQor ICAgICAgICAgIDsKKyAgICAgICAgcmxfY29tcGxldGVyX3dvcmRfYnJlYWtfY2hhcmFjdGVycyA9 CisgICAgICAgICAgZ2RiX2NvbXBsZXRlcl9maWxlX25hbWVfYnJlYWtfY2hhcmFjdGVyczsKKyAg ICAgIH0KKyAgICBlbHNlIGlmIChjLT5jb21wbGV0ZXIgPT0gbG9jYXRpb25fY29tcGxldGVyKQor ICAgICAgeworICAgICAgICAvKiBDb21tYW5kcyB3aGljaCBjb21wbGV0ZSBvbiBsb2NhdGlvbnMg d2FudCB0bworICAgICAgICAgICBzZWUgdGhlIGVudGlyZSBhcmd1bWVudC4gICovCisgICAgICAg IGZvciAocCA9IHdvcmQ7CisgICAgICAgICAgICAgcCA+IHRtcF9jb21tYW5kCisgICAgICAgICAg ICAgICAmJiBwWy0xXSAhPSAnICcgJiYgcFstMV0gIT0gJ1x0JzsKKyAgICAgICAgICAgICBwLS0p CisgICAgICAgICAgOworICAgICAgfQorICAgIGlmIChyZWFzb24gPT0gaGFuZGxlX2Jya2NoYXJz CisgICAgICAgICYmIGMtPmNvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMgIT0gTlVMTCkKKyAgICAg ICgqYy0+Y29tcGxldGVyX2hhbmRsZV9icmtjaGFycykgKGMsIHAsIHdvcmQpOworICAgIGlmIChy ZWFzb24gIT0gaGFuZGxlX2Jya2NoYXJzICYmIGMtPmNvbXBsZXRlciAhPSBOVUxMKQorICAgICAg bGlzdCA9ICgqYy0+Y29tcGxldGVyKSAoYywgcCwgd29yZCk7CisKKworVGhlIGNvbXBsZXRlX2Nv bW1hbmQgZnVuY3Rpb24gd2lsbCBvbmx5IGJlIGNhbGxlZCBieSB0aGUgbGFzdCAiaWYiCitjbGF1 c2UsIHdoZW4gcmVhc29uICE9IGhhbmRsZV9icmtjaGFycy4gIE90aGVyd2lzZSwKK2NvbXBsZXRl X2xpbmVfaW50ZXJuYWwgd2lsbCBqdXN0IGRlYWwgd2l0aCBoYW5kbGVfYnJrY2hhcnMuICBBbmQg Zm9yCitjb21wbGV0ZV9jb21tYW5kLCB0aGUgcmlnaHQgdmFsdWUgZm9yIHJsX2NvbXBsZXRlcl93 b3JkX2JyZWFrX2NoYXJhY3RlcnMKK2lzIHdoYXQgaXMgYXR0cmlidXRlZCBhdCB0aGUgYmVnaW5u aW5nIG9mIHRoZSBmdW5jdGlvbi4KKworTXkgcGF0Y2ggaW1wbGVtZW50cyB0aGlzICJ0d28tcGhh c2UiIGRhbmNlIGZvciBQeXRob24gYmVjYXVzZSBpbiB0aGlzCitzcGVjaWZpYyBjYXNlIChpLmUu LCBhIGNvbXBsZXRpb24gbWV0aG9kIGRlZmluZWQgaW4gdGhlIFB5dGhvbiBzY3JpcHQpCit0aGVy ZSBpcyBubyB3YXkgdG8ga25vdyB0aGUgdmFsdWUgb2YgaGFuZGxlX2Jya2NoYXJzIGJlZm9yZSB3 ZSBhY3R1YWxseQorZG8gdGhlIGNvbXBsZXRpb24gaXRzZWxmLgorCitJbiBmYWN0LCBteSBwYXRj aCBjb3VsZCBwcm9iYWJseSBiZSAic2ltcGxpZmllZCIgYW5kIGJlIG1hZGUgdG8gY2FsbAorY21k cHlfY29tcGxldGVyIGRpcmVjdGx5ICh3aXRob3V0IGFueSBjbWRweV9jb21wbGV0ZXJfaGFuZGxl X2Jya2NoYXJzKSwKK2Fzc3VtaW5nIHRoYXQgdGhpcyBmdW5jdGlvbiB0b29rIGNhcmUgb2YgZmls bGluZyBoYW5kbGVfYnJrY2hhcnMKK2NvcnJlY3RseS4gIFdoYXQgSSBtZWFuIGlzOiB3aGVuIGRl YWxpbmcgd2l0aCB0aGUgaGFuZGxlX2Jya2NoYXJzIGNhc2UsCit0aGUgY29tcGxldGVyIGNvbW1h bmQgY2FuIGRvIGFueXRoaW5nIGl0IHdhbnRzLgorCis+IFtNYXliZSB0aGF0IGV4cGxhaW5zIHRo ZSBkaWZmZXJlbmNlIGZyb20gdXNpbmcgVEFCLiAgRHVubm8gb2ZmIGhhbmQuXQorPiBJdCBzZWVt cyBsaWtlIGNvbXBsZXRlX2NvbW1hbmQgaXMgdHJ5aW5nIHRvIGhhbmQtY29kZSBpdHMgb3duCis+ IGhhbmRsZV9icmtjaGFycyBoYW5kbGluZzoKKz4KKz4gc3RhdGljIHZvaWQKKz4gY29tcGxldGVf Y29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCis+IHsKKz4gICBpbnQgYXJncG9pbnQ7 Cis+ICAgY2hhciAqcG9pbnQsICphcmdfcHJlZml4OworPiAgIFZFQyAoY2hhcl9wdHIpICpjb21w bGV0aW9uczsKKz4KKz4gICBkb250X3JlcGVhdCAoKTsKKz4KKz4gICBpZiAoYXJnID09IE5VTEwp Cis+ICAgICBhcmcgPSAiIjsKKz4gICBhcmdwb2ludCA9IHN0cmxlbiAoYXJnKTsKKz4KKz4gICAv KiBjb21wbGV0ZV9saW5lIGFzc3VtZXMgdGhhdCBpdHMgZmlyc3QgYXJndW1lbnQgaXMgc29tZXdo ZXJlCis+ICAgICAgd2l0aGluLCBhbmQgZXhjZXB0IGZvciBmaWxlbmFtZXMgYXQgdGhlIGJlZ2lu bmluZyBvZiwgdGhlIHdvcmQgdG8KKz4gICAgICBiZSBjb21wbGV0ZWQuICBUaGUgZm9sbG93aW5n IGNydWRlIGltaXRhdGlvbiBvZiByZWFkbGluZSdzCis+ICAgICAgd29yZC1icmVha2luZyB0cmll cyB0byBhY2NvbW9kYXRlIHRoaXMuICAqLworPiAgIHBvaW50ID0gYXJnICsgYXJncG9pbnQ7Cis+ ICAgd2hpbGUgKHBvaW50ID4gYXJnKQorPiAgICAgeworPiAgICAgICBpZiAoc3RyY2hyIChybF9j b21wbGV0ZXJfd29yZF9icmVha19jaGFyYWN0ZXJzLCBwb2ludFstMV0pICE9IDApCis+ICAgICAg ICAgYnJlYWs7Cis+ICAgICAgIHBvaW50LS07Cis+ICAgICB9Cis+Cis+ICAgYXJnX3ByZWZpeCA9 IGFsbG9jYSAocG9pbnQgLSBhcmcgKyAxKTsKKz4gICBtZW1jcHkgKGFyZ19wcmVmaXgsIGFyZywg cG9pbnQgLSBhcmcpOworPiAgIGFyZ19wcmVmaXhbcG9pbnQgLSBhcmddID0gMDsKKz4KKz4gICBj b21wbGV0aW9ucyA9IGNvbXBsZXRlX2xpbmUgKHBvaW50LCBhcmcsIGFyZ3BvaW50KTsKKz4KKz4g ICAuLi4KKz4gfQorCitZZXMsIGl0IHNlZW1zIHNvLCBidXQgSSBkaWQgbm90IGNoZWNrIGZ1cnRo ZXIuCisKKz4gVEFCIGFuZCB0aGUgY29tcGxldGUgY29tbWFuZCBzaG91bGQgd29yayBpZGVudGlj YWxseSBvZiBjb3Vyc2UsCis+IGJ1dCBmb3IgeW91ciB0ZXN0Y2FzZSwgbWF5YmUgeW91IHNob3Vs ZCB0ZXN0IGJvdGgganVzdCB0byB2ZXJpZnkKKz4gYm90aCB3b3JrIHJlYXNvbmFibHkgd2VsbCAo ZXZlbiBpZiBub3QgaWRlbnRpY2FsbHkpLgorPiBHaXZlbiB0aGF0IGNvbXBsZXRlX2NvbW1hbmQg ZG9lc24ndCBkbyB0aGUgdHdvIHBoYXNlIGRhbmNlLAorPiBkb2VzIGl0IHdvcmsgd2l0aCB5b3Vy IHBhdGNoPworPiBNYXliZSBpdCBkb2VzLCBidXQgSVdCTiB0byBjb25maXJtIHRoYXQuCisKK1Ro ZSAnY29tcGxldGUnIGNvbW1hbmQgZG9lcyBub3Qgd29yayBhcyBpdCBzaG91bGQgd2l0aCBteSBw YXRjaDoKKworICAoZ2RiKSBjb21wbGV0ZSBjb21wbGV0ZWZpbGVpbml0IC9ob20KKyAgY29tcGxl dGVmaWxlaW5pdCAvaG9tZQorICAoZ2RiKSBjb21wbGV0ZSBjb21wbGV0ZWZpbGVtZXRob2QgL2hv bQorICBjb21wbGV0ZWZpbGVtZXRob2QgL2hvbWUKKworQnV0IHRoZW4sIGl0IGFsc28gZG9lcyBu b3Qgd29yayB3aXRob3V0IG15IHBhdGNoIGVpdGhlcjoKKworICAoZ2RiKSBjb21wbGV0ZSBmaWxl IC9ob20KKyAgZmlsZSAvaG9tZQorCitTbyBJIGFtIG5vdCBleHRlbmRpbmcgdGhlIHRlc3RjYXNl IGZvciBub3csIGJlY2F1c2UgdGhpcyBidWcgbmVlZHMgdG8gYmUKK2ZpeGVkIGZpcnN0IChhbmQg aXQgaXMgdW5yZWxhdGVkIHRvIHRoZSBwYXRjaCBJIGFtIHByb3Bvc2luZykuCisKK1dEWVQgb2Yg dGhpcyB2ZXJzaW9uPworCitUaGFua3MsCisKKy0tIAorU2VyZ2lvCitHUEcga2V5IElEOiA2NUZD NUUzNgorUGxlYXNlIHNlbmQgZW5jcnlwdGVkIGUtbWFpbCBpZiBwb3NzaWJsZQoraHR0cDovL2Js b2cuc2VyZ2lvZGoubmV0LworCitnZGIvCisyMDE0LTA2LTMwICBTZXJnaW8gRHVyaWdhbiBKdW5p b3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgorCisJUFIgcHl0aG9uLzE2Njk5CisJKiBjbGkvY2xp LWRlY29kZS5jIChzZXRfY21kX2NvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMpOiBOZXcKKwlmdW5j dGlvbi4KKwkoYWRkX2NtZCk6IFNldCAiY29tcGxldGVyX2hhbmRsZV9icmtjaGFycyIgdG8gTlVM TC4KKwkqIGNsaS9jbGktZGVjb2RlLmggKHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50KQorCTxjb21w bGV0ZXJfaGFuZGxlX2Jya2NoYXJzPjogTmV3IGZpZWxkLgorCSogY29tbWFuZC5oIChjb21wbGV0 ZXJfZnR5cGVfdm9pZCk6IE5ldyB0eXBlZGVmLgorCShzZXRfY21kX2NvbXBsZXRlcl9oYW5kbGVf YnJrY2hhcnMpOiBOZXcgcHJvdG90eXBlLgorCSogY29tcGxldGVyLmMgKHNldF9nZGJfY29tcGxl dGlvbl93b3JkX2JyZWFrX2NoYXJhY3RlcnMpOiBOZXcKKwlmdW5jdGlvbi4KKwkoY29tcGxldGVf bGluZV9pbnRlcm5hbCk6IENhbGwgImNvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMiCisJY2FsbGJh Y2sgZnJvbSBjb21tYW5kLgorCSogY29tcGxldGVyLmg6IEluY2x1ZGUgImNvbW1hbmQuaCIuCisJ KHNldF9nZGJfY29tcGxldGlvbl93b3JkX2JyZWFrX2NoYXJhY3RlcnMpOiBOZXcgcHJvdG90eXBl LgorCSogcHl0aG9uL3B5LWNtZC5jIChjbWRweV9jb21wbGV0ZXJfaGVscGVyKTogTmV3IGZ1bmN0 aW9uLgorCShjbWRweV9jb21wbGV0ZXJfaGFuZGxlX2Jya2NoYXJzKTogTmV3IGZ1bmN0aW9uLgor CShjbWRweV9jb21wbGV0ZXIpOiBBZGp1c3QgdG8gdXNlIGNtZHB5X2NvbXBsZXRlcl9oZWxwZXIu CisJKGNtZHB5X2luaXQpOiBTZXQgY29tcGxldGVyX2hhbmRsZV9icmtjaGFycyB0bworCWNtZHB5 X2NvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMuCisKK2dkYi90ZXN0c3VpdGUvCisyMDE0LTA2LTMw ICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgorCisJUFIgcHl0 aG9uLzE2Njk5CisJKiBnZGIucHl0aG9uL3B5LWNvbXBsZXRpb24uZXhwOiBOZXcgZmlsZS4KKwkq IGdkYi5weXRob24vcHktY29tcGxldGlvbi5weTogTGlrZXdpc2UuCisKKworSW5kZXg6IGdkYi03 LjcuOTAuMjAxNDA2MjcvZ2RiL2NsaS9jbGktZGVjb2RlLmMKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny43LjkwLjIwMTQwNjI3Lm9yaWcvZ2RiL2NsaS9jbGktZGVjb2RlLmMJMjAxNC0wNy0wNyAyMDo1 Mzo1Mi42MzUxMDY5MTQgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjI3L2dkYi9jbGkvY2xp LWRlY29kZS5jCTIwMTQtMDctMDcgMjA6NTM6NTUuNDI5MTEwMjA3ICswMjAwCitAQCAtMTY0LDYg KzE2NCwxNSBAQCBzZXRfY21kX2NvbXBsZXRlciAoc3RydWN0IGNtZF9saXN0X2VsZW1lCisgICBj bWQtPmNvbXBsZXRlciA9IGNvbXBsZXRlcjsgLyogT2suICAqLworIH0KKyAKKysvKiBTZWUgZGVm aW5pdGlvbiBpbiBjb21tYW5kcy5oLiAgKi8KKysKKyt2b2lkCisrc2V0X2NtZF9jb21wbGV0ZXJf aGFuZGxlX2Jya2NoYXJzIChzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqY21kLAorKwkJCSAgICAg ICBjb21wbGV0ZXJfZnR5cGVfdm9pZCAqY29tcGxldGVyX2hhbmRsZV9icmtjaGFycykKKyt7Cisr ICBjbWQtPmNvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMgPSBjb21wbGV0ZXJfaGFuZGxlX2Jya2No YXJzOworK30KKysKKyAvKiBBZGQgZWxlbWVudCBuYW1lZCBOQU1FLgorICAgIFNwYWNlIGZvciBO QU1FIGFuZCBET0MgbXVzdCBiZSBhbGxvY2F0ZWQgYnkgdGhlIGNhbGxlci4KKyAgICBDTEFTUyBp cyB0aGUgdG9wIGxldmVsIGNhdGVnb3J5IGludG8gd2hpY2ggY29tbWFuZHMgYXJlIGJyb2tlbiBk b3duCitAQCAtMjM5LDYgKzI0OCw3IEBAIGFkZF9jbWQgKGNvbnN0IGNoYXIgKm5hbWUsIGVudW0g Y29tbWFuZF8KKyAgIGMtPnByZWZpeCA9IE5VTEw7CisgICBjLT5hYmJyZXZfZmxhZyA9IDA7Cisg ICBzZXRfY21kX2NvbXBsZXRlciAoYywgbWFrZV9zeW1ib2xfY29tcGxldGlvbl9saXN0X2ZuKTsK KysgIGMtPmNvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMgPSBOVUxMOworICAgYy0+ZGVzdHJveWVy ID0gTlVMTDsKKyAgIGMtPnR5cGUgPSBub3Rfc2V0X2NtZDsKKyAgIGMtPnZhciA9IE5VTEw7CitJ bmRleDogZ2RiLTcuNy45MC4yMDE0MDYyNy9nZGIvY2xpL2NsaS1kZWNvZGUuaAorPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjcuOTAuMjAxNDA2Mjcub3JpZy9nZGIvY2xpL2NsaS1kZWNvZGUuaAkyMDE0 LTA3LTA3IDIwOjUzOjUyLjYzNjEwNjkxNSArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2Mjcv Z2RiL2NsaS9jbGktZGVjb2RlLmgJMjAxNC0wNy0wNyAyMDo1Mzo1NS40MjkxMTAyMDcgKzAyMDAK K0BAIC0xNzYsNiArMTc2LDE1IEBAIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50CisgICAgICAgICJi YXovZm9vIiwgcmV0dXJuICJiYXovZm9vYmFyIi4gICovCisgICAgIGNvbXBsZXRlcl9mdHlwZSAq Y29tcGxldGVyOworIAorKyAgICAvKiBIYW5kbGUgdGhlIHdvcmQgYnJlYWsgY2hhcmFjdGVycyBm b3IgdGhpcyBjb21wbGV0ZXIuICBVc3VhbGx5CisrICAgICAgIHRoaXMgZnVuY3Rpb24gbmVlZCBu b3QgYmUgZGVmaW5lZCwgYnV0IGZvciBzb21lIHR5cGVzIG9mCisrICAgICAgIGNvbXBsZXRlcnMg KGUuZy4sIFB5dGhvbiBjb21wbGV0ZXJzIGRlY2xhcmVkIGFzIG1ldGhvZHMgaW5zaWRlCisrICAg ICAgIGEgY2xhc3MpIHRoZSB3b3JkIGJyZWFrIGNoYXJzIG1heSBuZWVkIHRvIGJlIHJlZGVmaW5l ZAorKyAgICAgICBkZXBlbmRpbmcgb24gdGhlIGNvbXBsZXRlciB0eXBlIChlLmcuLCBmb3IgZmls ZW5hbWUKKysgICAgICAgY29tcGxldGVycykuICAqLworKworKyAgICBjb21wbGV0ZXJfZnR5cGVf dm9pZCAqY29tcGxldGVyX2hhbmRsZV9icmtjaGFyczsKKysKKyAgICAgLyogRGVzdHJ1Y3Rpb24g cm91dGluZSBmb3IgdGhpcyBjb21tYW5kLiAgSWYgbm9uLU5VTEwsIHRoaXMgaXMKKyAgICAgICAg Y2FsbGVkIHdoZW4gdGhpcyBjb21tYW5kIGluc3RhbmNlIGlzIGRlc3Ryb3llZC4gIFRoaXMgbWF5 IGJlCisgICAgICAgIHVzZWQgdG8gZmluYWxpemUgdGhlIENPTlRFWFQgZmllbGQsIGlmIG5lZWRl ZC4gICovCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYyNy9nZGIvY29tbWFuZC5oCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gZ2RiLTcuNy45MC4yMDE0MDYyNy5vcmlnL2dkYi9jb21tYW5kLmgJMjAxNC0wNy0w NyAyMDo1Mzo1Mi42MzYxMDY5MTUgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjI3L2dkYi9j b21tYW5kLmgJMjAxNC0wNy0wNyAyMDo1Mzo1NS40MzAxMTAyMDggKzAyMDAKK0BAIC0xNTgsOCAr MTU4LDE2IEBAIGV4dGVybiB2b2lkIHNldF9jbWRfc2Z1bmMgKHN0cnVjdCBjbWRfbGkKKyB0eXBl ZGVmIFZFQyAoY2hhcl9wdHIpICpjb21wbGV0ZXJfZnR5cGUgKHN0cnVjdCBjbWRfbGlzdF9lbGVt ZW50ICosCisgCQkJCQkgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworIAorK3R5cGVkZWYg dm9pZCBjb21wbGV0ZXJfZnR5cGVfdm9pZCAoc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiwKKysJ CQkJICAgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworKworIGV4dGVybiB2b2lkIHNldF9j bWRfY29tcGxldGVyIChzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqLCBjb21wbGV0ZXJfZnR5cGUg Kik7CisgCisrLyogU2V0IHRoZSBjb21wbGV0ZXJfaGFuZGxlX2Jya2NoYXJzIGNhbGxiYWNrLiAg Ki8KKysKKytleHRlcm4gdm9pZCBzZXRfY21kX2NvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMgKHN0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICosCisrCQkJCQkgICAgICAgY29tcGxldGVyX2Z0eXBlX3Zv aWQgKik7CisrCisgLyogSEFDSzogY2FnbmV5LzIwMDItMDItMjM6IENvZGUsIG1vc3RseSBpbiB0 cmFjZXBvaW50cy5jLCBncnVicworICAgIGFyb3VuZCBpbiBjbWQgb2JqZWN0cyB0byB0ZXN0IHRo ZSB2YWx1ZSBvZiB0aGUgY29tbWFuZHMgc2Z1bmMoKS4gICovCisgZXh0ZXJuIGludCBjbWRfY2Z1 bmNfZXEgKHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjbWQsCitJbmRleDogZ2RiLTcuNy45MC4y MDE0MDYyNy9nZGIvY29tcGxldGVyLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy43LjkwLjIwMTQw NjI3Lm9yaWcvZ2RiL2NvbXBsZXRlci5jCTIwMTQtMDctMDcgMjA6NTM6NTIuNjM3MTA2OTE2ICsw MjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYyNy9nZGIvY29tcGxldGVyLmMJMjAxNC0wNy0wNyAy MDo1Mzo1NS40MzAxMTAyMDggKzAyMDAKK0BAIC00NTAsNiArNDUwLDIxIEBAIGV4cHJlc3Npb25f Y29tcGxldGVyIChzdHJ1Y3QgY21kX2xpc3RfZWwKKyAgIHJldHVybiBsb2NhdGlvbl9jb21wbGV0 ZXIgKGlnbm9yZSwgcCwgd29yZCk7CisgfQorIAorKy8qIFNlZSBkZWZpbml0aW9uIGluIGNvbXBs ZXRlci5oLiAgKi8KKysKKyt2b2lkCisrc2V0X2dkYl9jb21wbGV0aW9uX3dvcmRfYnJlYWtfY2hh cmFjdGVycyAoY29tcGxldGVyX2Z0eXBlICpmbikKKyt7CisrICAvKiBTbyBmYXIgd2UgYXJlIG9u bHkgaW50ZXJlc3RlZCBpbiBkaWZmZXJlbnRpYXRpbmcgZmlsZW5hbWUKKysgICAgIGNvbXBsZXRl cnMgZnJvbSBldmVyeXRoaW5nIGVsc2UuICAqLworKyAgaWYgKGZuID09IGZpbGVuYW1lX2NvbXBs ZXRlcikKKysgICAgcmxfY29tcGxldGVyX3dvcmRfYnJlYWtfY2hhcmFjdGVycworKyAgICAgID0g Z2RiX2NvbXBsZXRlcl9maWxlX25hbWVfYnJlYWtfY2hhcmFjdGVyczsKKysgIGVsc2UKKysgICAg cmxfY29tcGxldGVyX3dvcmRfYnJlYWtfY2hhcmFjdGVycworKyAgICAgID0gZ2RiX2NvbXBsZXRl cl9jb21tYW5kX3dvcmRfYnJlYWtfY2hhcmFjdGVyczsKKyt9CisrCisgLyogSGVyZSBhcmUgc29t ZSB1c2VmdWwgdGVzdCBjYXNlcyBmb3IgY29tcGxldGlvbi4gIEZJWE1FOiBUaGVzZQorICAgIHNo b3VsZCBiZSBwdXQgaW4gdGhlIHRlc3Qgc3VpdGUuICBUaGV5IHNob3VsZCBiZSB0ZXN0ZWQgd2l0 aCBib3RoCisgICAgTS0/IGFuZCBUQUIuCitAQCAtNjc4LDYgKzY5Myw5IEBAIGNvbXBsZXRlX2xp bmVfaW50ZXJuYWwgKGNvbnN0IGNoYXIgKnRleHQKKyAJCQkgICBwLS0pCisgCQkJOworIAkJICAg IH0KKysJCSAgaWYgKHJlYXNvbiA9PSBoYW5kbGVfYnJrY2hhcnMKKysJCSAgICAgICYmIGMtPmNv bXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMgIT0gTlVMTCkKKysJCSAgICAoKmMtPmNvbXBsZXRlcl9o YW5kbGVfYnJrY2hhcnMpIChjLCBwLCB3b3JkKTsKKyAJCSAgaWYgKHJlYXNvbiAhPSBoYW5kbGVf YnJrY2hhcnMgJiYgYy0+Y29tcGxldGVyICE9IE5VTEwpCisgCQkgICAgbGlzdCA9ICgqYy0+Y29t cGxldGVyKSAoYywgcCwgd29yZCk7CisgCQl9CitAQCAtNzUxLDYgKzc2OSw5IEBAIGNvbXBsZXRl X2xpbmVfaW50ZXJuYWwgKGNvbnN0IGNoYXIgKnRleHQKKyAJCSAgICAgICBwLS0pCisgCQkgICAg OworIAkJfQorKwkgICAgICBpZiAocmVhc29uID09IGhhbmRsZV9icmtjaGFycworKwkJICAmJiBj LT5jb21wbGV0ZXJfaGFuZGxlX2Jya2NoYXJzICE9IE5VTEwpCisrCQkoKmMtPmNvbXBsZXRlcl9o YW5kbGVfYnJrY2hhcnMpIChjLCBwLCB3b3JkKTsKKyAJICAgICAgaWYgKHJlYXNvbiAhPSBoYW5k bGVfYnJrY2hhcnMgJiYgYy0+Y29tcGxldGVyICE9IE5VTEwpCisgCQlsaXN0ID0gKCpjLT5jb21w bGV0ZXIpIChjLCBwLCB3b3JkKTsKKyAJICAgIH0KK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjI3 L2dkYi9jb21wbGV0ZXIuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjcuOTAuMjAxNDA2Mjcub3Jp Zy9nZGIvY29tcGxldGVyLmgJMjAxNC0wNy0wNyAyMDo1Mzo1Mi42MzcxMDY5MTYgKzAyMDAKKysr KyBnZGItNy43LjkwLjIwMTQwNjI3L2dkYi9jb21wbGV0ZXIuaAkyMDE0LTA3LTA3IDIwOjU0OjEz LjI5NzEzMTgzMSArMDIwMAorQEAgLTE4LDYgKzE4LDcgQEAKKyAjZGVmaW5lIENPTVBMRVRFUl9I IDEKKyAKKyAjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKKysjaW5jbHVkZSAiY29tbWFuZC5oIgorIAor IGV4dGVybiBWRUMgKGNoYXJfcHRyKSAqY29tcGxldGVfbGluZSAoY29uc3QgY2hhciAqdGV4dCwK KyAJCQkJICAgICAgY2hhciAqbGluZV9idWZmZXIsCitAQCAtNDgsNiArNDksMTMgQEAgZXh0ZXJu IGNoYXIgKmdldF9nZGJfY29tcGxldGVyX3F1b3RlX2NoYQorIAorIGV4dGVybiBjaGFyICpnZGJf Y29tcGxldGlvbl93b3JkX2JyZWFrX2NoYXJhY3RlcnMgKHZvaWQpOworIAorKy8qIFNldCB0aGUg d29yZCBicmVhayBjaGFyYWN0ZXJzIGFycmF5IHRvIHRoZSBjb3JyZXNwb25kaW5nIHNldCBvZgor KyAgIGNoYXJzLCBiYXNlZCBvbiBGTi4gIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIGZvciBjYXNl cyB3aGVuIHRoZQorKyAgIGNvbXBsZXRlciBkb2Vzbid0IGtub3cgdGhlIHR5cGUgb2YgdGhlIGNv bXBsZXRpb24gdW50aWwgc29tZQorKyAgIGNhbGN1bGF0aW9uIGlzIGRvbmUgKGUuZy4sIGZvciBQ eXRob24gZnVuY3Rpb25zKS4gICovCisrCisrZXh0ZXJuIHZvaWQgc2V0X2dkYl9jb21wbGV0aW9u X3dvcmRfYnJlYWtfY2hhcmFjdGVycyAoY29tcGxldGVyX2Z0eXBlICpmbik7CisrCisgLyogRXhw b3J0ZWQgdG8gbGluZXNwZWMuYyAqLworIAorIGV4dGVybiBjb25zdCBjaGFyICpza2lwX3F1b3Rl ZF9jaGFycyAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosCitJbmRleDogZ2RiLTcuNy45MC4y MDE0MDYyNy9nZGIvcHl0aG9uL3B5LWNtZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNy45MC4y MDE0MDYyNy5vcmlnL2dkYi9weXRob24vcHktY21kLmMJMjAxNC0wNy0wNyAyMDo1Mzo1Mi42Mzcx MDY5MTYgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjI3L2dkYi9weXRob24vcHktY21kLmMJ MjAxNC0wNy0wNyAyMDo1Mzo1NS40MzExMTAyMDkgKzAyMDAKK0BAIC0yMDgsNDUgKzIwOCwxNTUg QEAgY21kcHlfZnVuY3Rpb24gKHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50CisgICBkb19jbGVhbnVw cyAoY2xlYW51cCk7CisgfQorIAorKy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgdGhlIFB5dGhvbiBj b21tYW5kIGNvbXBsZXRlcnMgKGJvdGggInB1cmUiCisrICAgY29tcGxldGVyIGFuZCBicmtjaGFy IGhhbmRsZXIpLiAgVGhpcyBmdW5jdGlvbiB0YWtlcyBDT01NQU5ELCBURVhUCisrICAgYW5kIFdP UkQgYW5kIHRyaWVzIHRvIGNhbGwgdGhlIFB5dGhvbiBtZXRob2QgZm9yIGNvbXBsZXRpb24gd2l0 aAorKyAgIHRoZXNlIGFyZ3VtZW50cy4gIEl0IGFsc28gdGFrZXMgSEFORExFX0JSS0NIQVJTX1As IGFuIGFyZ3VtZW50IHRvCisrICAgaWRlbnRpZnkgd2hldGhlciBpdCBpcyBiZWluZyBjYWxsZWQg ZnJvbSB0aGUgYnJrY2hhciBoYW5kbGVyIG9yCisrICAgZnJvbSB0aGUgInB1cmUiIGNvbXBsZXRl ci4gIEluIHRoZSBmaXJzdCBjYXNlLCBpdCBlZmZlY3RpdmVseSBjYWxscworKyAgIHRoZSBQeXRo b24gbWV0aG9kIGZvciBjb21wbGV0aW9uLCBhbmQgcmVjb3JkcyB0aGUgUHlPYmplY3QgaW4gYQor KyAgIHN0YXRpYyB2YXJpYWJsZSAodXNlZCBhcyBhICJjYWNoZSIpLiAgSW4gdGhlIHNlY29uZCBj YXNlLCBpdCBqdXN0CisrICAgcmV0dXJucyB0aGF0IHZhcmlhYmxlLCB3aXRob3V0IGFjdHVhbGx5 IGNhbGxpbmcgdGhlIFB5dGhvbiBtZXRob2QKKysgICBhZ2Fpbi4gIFRoaXMgc2F2ZXMgdXMgb25l IFB5dGhvbiBtZXRob2QgY2FsbC4KKysKKysgICBJdCBpcyBpbXBvcnRhbnQgdG8gbWVudGlvbiB0 aGF0IHRoaXMgZnVuY3Rpb24gaXMgYnVpbHQgb24gdGhlCisrICAgYXNzdW1wdGlvbiB0aGF0IHRo ZSBjYWxscyB0byBjbWRweV9jb21wbGV0ZXJfaGFuZGxlX2Jya2NoYXJzIGFuZAorKyAgIGNtZHB5 X2NvbXBsZXRlciB3aWxsIGJlIHN1YnNlcXVlbnQgd2l0aCBub3RoaW5nIGludGVydmVuaW5nLiAg VGhpcworKyAgIGlzIHRydWUgZm9yIG91ciBjb21wbGV0ZXIgbWVjaGFuaXNtLgorKworKyAgIFRo aXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgUHlPYmplY3QgcmVwcmVzZW50aW5nIHRoZSBQeXRob24g bWV0aG9kCisrICAgY2FsbC4gICovCisrCisrc3RhdGljIFB5T2JqZWN0ICoKKytjbWRweV9jb21w bGV0ZXJfaGVscGVyIChzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqY29tbWFuZCwKKysJCQljb25z dCBjaGFyICp0ZXh0LCBjb25zdCBjaGFyICp3b3JkLAorKwkJCWludCBoYW5kbGVfYnJrY2hhcnNf cCkKKyt7CisrICBjbWRweV9vYmplY3QgKm9iaiA9IChjbWRweV9vYmplY3QgKikgZ2V0X2NtZF9j b250ZXh0IChjb21tYW5kKTsKKysgIFB5T2JqZWN0ICp0ZXh0b2JqLCAqd29yZG9iajsKKysgIC8q IFRoaXMgc3RhdGljIHZhcmlhYmxlIHdpbGwgc2VydmVyIGFzIGEgImNhY2hlIiBmb3IgdXMsIGlu IG9yZGVyIHRvCisrICAgICBzdG9yZSB0aGUgUHlPYmplY3QgdGhhdCByZXN1bHRzIGZyb20gY2Fs bGluZyB0aGUgUHl0aG9uCisrICAgICBmdW5jdGlvbi4gICovCisrICBzdGF0aWMgUHlPYmplY3Qg KnJlc3VsdG9iaiA9IE5VTEw7CisrCisrICBpZiAoaGFuZGxlX2Jya2NoYXJzX3ApCisrICAgIHsK KysgICAgICAvKiBJZiB3ZSB3ZXJlIGNhbGxlZCB0byBoYW5kbGUgYnJrY2hhcnMsIGl0IG1lYW5z IHRoaXMgaXMgdGhlCisrCSBmaXJzdCBmdW5jdGlvbiBjYWxsIG9mIHR3byB0aGF0IHdpbGwgaGFw cGVuIGluIGEgcm93LgorKwkgVGhlcmVmb3JlLCB3ZSBuZWVkIHRvIGNhbGwgdGhlIGNvbXBsZXRl ciBvdXJzZWx2ZXMsIGFuZCBjYWNoZQorKwkgdGhlIHJldHVybiB2YWx1ZSBpbiB0aGUgc3RhdGlj IHZhcmlhYmxlIFJFU1VMVE9CSi4gIFRoZW4sIGluCisrCSB0aGUgc2Vjb25kIGNhbGwsIHdlIGNh biBqdXN0IHVzZSB0aGUgdmFsdWUgb2YgUkVTVUxUT0JKIHRvIGRvCisrCSBvdXIgam9iLiAgKi8K KysgICAgICBpZiAocmVzdWx0b2JqICE9IE5VTEwpCisrCVB5X0RFQ1JFRiAocmVzdWx0b2JqKTsK KysKKysgICAgICByZXN1bHRvYmogPSBOVUxMOworKyAgICAgIGlmICghb2JqKQorKwllcnJvciAo XygiSW52YWxpZCBpbnZvY2F0aW9uIG9mIFB5dGhvbiBjb21tYW5kIG9iamVjdC4iKSk7CisrICAg ICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyICgoUHlPYmplY3QgKikgb2JqLCBjb21wbGV0ZV9jc3Qp KQorKwl7CisrCSAgLyogSWYgdGhlcmUgaXMgbm8gY29tcGxldGUgbWV0aG9kLCBkb24ndCBlcnJv ci4gICovCisrCSAgcmV0dXJuIE5VTEw7CisrCX0KKysKKysgICAgICB0ZXh0b2JqID0gUHlVbmlj b2RlX0RlY29kZSAodGV4dCwgc3RybGVuICh0ZXh0KSwgaG9zdF9jaGFyc2V0ICgpLCBOVUxMKTsK KysgICAgICBpZiAoIXRleHRvYmopCisrCWVycm9yIChfKCJDb3VsZCBub3QgY29udmVydCBhcmd1 bWVudCB0byBQeXRob24gc3RyaW5nLiIpKTsKKysgICAgICB3b3Jkb2JqID0gUHlVbmljb2RlX0Rl Y29kZSAod29yZCwgc2l6ZW9mICh3b3JkKSwgaG9zdF9jaGFyc2V0ICgpLCBOVUxMKTsKKysgICAg ICBpZiAoIXdvcmRvYmopCisrCXsKKysJICBQeV9ERUNSRUYgKHRleHRvYmopOworKwkgIGVycm9y IChfKCJDb3VsZCBub3QgY29udmVydCBhcmd1bWVudCB0byBQeXRob24gc3RyaW5nLiIpKTsKKysJ fQorKworKyAgICAgIHJlc3VsdG9iaiA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzICgoUHlP YmplY3QgKikgb2JqLCBjb21wbGV0ZV9jc3QsCisrCQkJCQkgICAgICB0ZXh0b2JqLCB3b3Jkb2Jq LCBOVUxMKTsKKysgICAgICBQeV9ERUNSRUYgKHRleHRvYmopOworKyAgICAgIFB5X0RFQ1JFRiAo d29yZG9iaik7CisrICAgICAgaWYgKCFyZXN1bHRvYmopCisrCXsKKysJICAvKiBKdXN0IHN3YWxs b3cgZXJyb3JzIGhlcmUuICAqLworKwkgIFB5RXJyX0NsZWFyICgpOworKwl9CisrCisrICAgICAg UHlfWElOQ1JFRiAocmVzdWx0b2JqKTsKKysgICAgfQorKworKyAgcmV0dXJuIHJlc3VsdG9iajsK Kyt9CisrCisrLyogUHl0aG9uIGZ1bmN0aW9uIGNhbGxlZCB0byBkZXRlcm1pbmUgdGhlIGJyZWFr IGNoYXJhY3RlcnMgb2YgYQorKyAgIGNlcnRhaW4gY29tcGxldGVyLiAgV2UgYXJlIG9ubHkgaW50 ZXJlc3RlZCBpbiBrbm93aW5nIGlmIHRoZQorKyAgIGNvbXBsZXRlciByZWdpc3RlcmVkIGJ5IHRo ZSB1c2VyIHdpbGwgcmV0dXJuIG9uZSBvZiB0aGUgaW50ZWdlcgorKyAgIGNvZGVzIChzZWUgQ09N UExFVEVSXyogc3ltYm9scykuICAqLworKworK3N0YXRpYyB2b2lkCisrY21kcHlfY29tcGxldGVy X2hhbmRsZV9icmtjaGFycyAoc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNvbW1hbmQsCisrCQkJ CSBjb25zdCBjaGFyICp0ZXh0LCBjb25zdCBjaGFyICp3b3JkKQorK3sKKysgIFB5T2JqZWN0ICpy ZXN1bHRvYmogPSBOVUxMOworKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7CisrCisrICBjbGVh bnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFu Z3VhZ2UpOworKworKyAgLyogQ2FsbGluZyBvdXIgaGVscGVyIHRvIG9idGFpbiB0aGUgUHlPYmpl Y3Qgb2YgdGhlIFB5dGhvbgorKyAgICAgZnVuY3Rpb24uICAqLworKyAgcmVzdWx0b2JqID0gY21k cHlfY29tcGxldGVyX2hlbHBlciAoY29tbWFuZCwgdGV4dCwgd29yZCwgMSk7CisrCisrICAvKiBD aGVjayBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuICAqLworKyAgaWYgKHJlc3VsdG9iaiA9PSBOVUxM KQorKyAgICBnb3RvIGRvbmU7CisrCisrICBpZiAoUHlJbnRfQ2hlY2sgKHJlc3VsdG9iaikpCisr ICAgIHsKKysgICAgICAvKiBVc2VyIGNvZGUgbWF5IGFsc28gcmV0dXJuIG9uZSBvZiB0aGUgY29t cGxldGlvbiBjb25zdGFudHMsCisrCSB0aHVzIHJlcXVlc3RpbmcgdGhhdCBzb3J0IG9mIGNvbXBs ZXRpb24uICBXZSBhcmUgb25seQorKwkgaW50ZXJlc3RlZCBpbiB0aGlzIGtpbmQgb2YgcmV0dXJu LiAgKi8KKysgICAgICBsb25nIHZhbHVlOworKworKyAgICAgIGlmICghZ2RiX3B5X2ludF9hc19s b25nIChyZXN1bHRvYmosICZ2YWx1ZSkpCisrCXsKKysJICAvKiBJZ25vcmUuICAqLworKwkgIFB5 RXJyX0NsZWFyICgpOworKwl9CisrICAgICAgZWxzZSBpZiAodmFsdWUgPj0gMCAmJiB2YWx1ZSA8 IChsb25nKSBOX0NPTVBMRVRFUlMpCisrCXsKKysJICAvKiBUaGlzIGlzIHRoZSBjb3JlIG9mIHRo aXMgZnVuY3Rpb24uICBEZXBlbmRpbmcgb24gd2hpY2gKKysJICAgICBjb21wbGV0ZXIgdHlwZSB0 aGUgUHl0aG9uIGZ1bmN0aW9uIHJldHVybnMsIHdlIGhhdmUgdG8KKysJICAgICBhZGp1c3QgdGhl IGJyZWFrIGNoYXJhY3RlcnMgYWNjb3JkaW5nbHkuICAqLworKwkgIHNldF9nZGJfY29tcGxldGlv bl93b3JkX2JyZWFrX2NoYXJhY3RlcnMKKysJICAgIChjb21wbGV0ZXJzW3ZhbHVlXS5jb21wbGV0 ZXIpOworKwl9CisrICAgIH0KKysKKysgZG9uZToKKysKKysgIC8qIFdlIGRvIG5vdCBjYWxsIFB5 X1hERUNSRUYgaGVyZSBiZWNhdXNlIFJFU1VMVE9CSiB3aWxsIGJlIHVzZWQgaW4KKysgICAgIHRo ZSBzdWJzZXF1ZW50IGNhbGwgdG8gY21kcHlfY29tcGxldGVyIGZ1bmN0aW9uLiAgKi8KKysgIGRv X2NsZWFudXBzIChjbGVhbnVwKTsKKyt9CisrCisgLyogQ2FsbGVkIGJ5IGdkYiBmb3IgY29tbWFu ZCBjb21wbGV0aW9uLiAgKi8KKyAKKyBzdGF0aWMgVkVDIChjaGFyX3B0cikgKgorIGNtZHB5X2Nv bXBsZXRlciAoc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNvbW1hbmQsCisgCQkgY29uc3QgY2hh ciAqdGV4dCwgY29uc3QgY2hhciAqd29yZCkKKyB7CistICBjbWRweV9vYmplY3QgKm9iaiA9IChj bWRweV9vYmplY3QgKikgZ2V0X2NtZF9jb250ZXh0IChjb21tYW5kKTsKKy0gIFB5T2JqZWN0ICp0 ZXh0b2JqLCAqd29yZG9iaiwgKnJlc3VsdG9iaiA9IE5VTEw7CisrICBQeU9iamVjdCAqcmVzdWx0 b2JqID0gTlVMTDsKKyAgIFZFQyAoY2hhcl9wdHIpICpyZXN1bHQgPSBOVUxMOworICAgc3RydWN0 IGNsZWFudXAgKmNsZWFudXA7CisgCisgICBjbGVhbnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdl dF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOworIAorLSAgaWYgKCEgb2JqKQor LSAgICBlcnJvciAoXygiSW52YWxpZCBpbnZvY2F0aW9uIG9mIFB5dGhvbiBjb21tYW5kIG9iamVj dC4iKSk7CistICBpZiAoISBQeU9iamVjdF9IYXNBdHRyICgoUHlPYmplY3QgKikgb2JqLCBjb21w bGV0ZV9jc3QpKQorLSAgICB7CistICAgICAgLyogSWYgdGhlcmUgaXMgbm8gY29tcGxldGUgbWV0 aG9kLCBkb24ndCBlcnJvciAtLSBpbnN0ZWFkLCBqdXN0CistCSBzYXkgdGhhdCB0aGVyZSBhcmUg bm8gY29tcGxldGlvbnMuICAqLworLSAgICAgIGdvdG8gZG9uZTsKKy0gICAgfQorLQorLSAgdGV4 dG9iaiA9IFB5VW5pY29kZV9EZWNvZGUgKHRleHQsIHN0cmxlbiAodGV4dCksIGhvc3RfY2hhcnNl dCAoKSwgTlVMTCk7CistICBpZiAoISB0ZXh0b2JqKQorLSAgICBlcnJvciAoXygiQ291bGQgbm90 IGNvbnZlcnQgYXJndW1lbnQgdG8gUHl0aG9uIHN0cmluZy4iKSk7CistICB3b3Jkb2JqID0gUHlV bmljb2RlX0RlY29kZSAod29yZCwgc3RybGVuICh3b3JkKSwgaG9zdF9jaGFyc2V0ICgpLCBOVUxM KTsKKy0gIGlmICghIHdvcmRvYmopCistICAgIGVycm9yIChfKCJDb3VsZCBub3QgY29udmVydCBh cmd1bWVudCB0byBQeXRob24gc3RyaW5nLiIpKTsKKy0KKy0gIHJlc3VsdG9iaiA9IFB5T2JqZWN0 X0NhbGxNZXRob2RPYmpBcmdzICgoUHlPYmplY3QgKikgb2JqLCBjb21wbGV0ZV9jc3QsCistCQkJ CQkgIHRleHRvYmosIHdvcmRvYmosIE5VTEwpOworLSAgUHlfREVDUkVGICh0ZXh0b2JqKTsKKy0g IFB5X0RFQ1JFRiAod29yZG9iaik7CistICBpZiAoISByZXN1bHRvYmopCistICAgIHsKKy0gICAg ICAvKiBKdXN0IHN3YWxsb3cgZXJyb3JzIGhlcmUuICAqLworLSAgICAgIFB5RXJyX0NsZWFyICgp OworLSAgICAgIGdvdG8gZG9uZTsKKy0gICAgfQorKyAgLyogQ2FsbGluZyBvdXIgaGVscGVyIHRv IG9idGFpbiB0aGUgUHlPYmplY3Qgb2YgdGhlIFB5dGhvbgorKyAgICAgZnVuY3Rpb24uICAqLwor KyAgcmVzdWx0b2JqID0gY21kcHlfY29tcGxldGVyX2hlbHBlciAoY29tbWFuZCwgdGV4dCwgd29y ZCwgMCk7CisrCisrICAvKiBJZiB0aGUgcmVzdWx0IG9iamVjdCBvZiBjYWxsaW5nIHRoZSBQeXRo b24gZnVuY3Rpb24gaXMgTlVMTCwgaXQKKysgICAgIG1lYW5zIHRoYXQgdGhlcmUgd2FzIGFuIGVy cm9yLiAgSW4gdGhpcyBjYXNlLCBqdXN0IGdpdmUgdXAgYW5kCisrICAgICByZXR1cm4gTlVMTC4g ICovCisrICBpZiAocmVzdWx0b2JqID09IE5VTEwpCisrICAgIGdvdG8gZG9uZTsKKyAKKyAgIHJl c3VsdCA9IE5VTEw7CisgICBpZiAoUHlJbnRfQ2hlY2sgKHJlc3VsdG9iaikpCitAQCAtMzAyLDcg KzQxMiw2IEBAIGNtZHB5X2NvbXBsZXRlciAoc3RydWN0IGNtZF9saXN0X2VsZW1lbnQKKyAKKyAg ZG9uZToKKyAKKy0gIFB5X1hERUNSRUYgKHJlc3VsdG9iaik7CisgICBkb19jbGVhbnVwcyAoY2xl YW51cCk7CisgCisgICByZXR1cm4gcmVzdWx0OworQEAgLTU0OCw2ICs2NTcsOSBAQCBjbWRweV9p bml0IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyCisgICAgICAgc2V0X2NtZF9jb250ZXh0 IChjbWQsIHNlbGYpOworICAgICAgIHNldF9jbWRfY29tcGxldGVyIChjbWQsICgoY29tcGxldGV0 eXBlID09IC0xKSA/IGNtZHB5X2NvbXBsZXRlcgorIAkJCSAgICAgICA6IGNvbXBsZXRlcnNbY29t cGxldGV0eXBlXS5jb21wbGV0ZXIpKTsKKysgICAgICBpZiAoY29tcGxldGV0eXBlID09IC0xKQor KwlzZXRfY21kX2NvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMgKGNtZCwKKysJCQkJCSAgIGNtZHB5 X2NvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMpOworICAgICB9CisgICBpZiAoZXhjZXB0LnJlYXNv biA8IDApCisgICAgIHsKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjI3L2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1jb21wbGV0aW9uLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2 MjcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNvbXBsZXRpb24uZXhwCTIwMTQtMDctMDcg MjA6NTM6NTUuNDMxMTEwMjA5ICswMjAwCitAQCAtMCwwICsxLDcwIEBACisrIyBDb3B5cmlnaHQg KEMpIDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorKworK3NldCB0ZXN0ZmlsZSAicHktY29tcGxldGlvbiIKKysKKyts b2FkX2xpYiBnZGItcHl0aG9uLmV4cAorKworK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrCisrIyBT a2lwIGFsbCB0ZXN0cyBpZiBQeXRob24gc2NyaXB0aW5nIGlzIG5vdCBlbmFibGVkLgorK2lmIHsg W3NraXBfcHl0aG9uX3Rlc3RzXSB9IHsgY29udGludWUgfQorKworK2dkYl90ZXN0X25vX291dHB1 dCAic291cmNlICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0ucHkiCisrCisrIyBDcmVh dGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5Cisrc2V0IHRlc3RkaXIgIiR7b2JqZGlyfS8ke3N1YmRp cn0vcHktY29tcGxldGlvbi10ZXN0ZGlyLyIKKytzZXQgdGVzdGRpcl9yZWdleCBbc3RyaW5nX3Rv X3JlZ2V4cCAkdGVzdGRpcl0KKytzZXQgdGVzdGRpcl9jb21wbGV0ZSAiJHtvYmpkaXJ9LyR7c3Vi ZGlyfS9weS1jb21wbGV0aW9uLXRlc3QiCisrZmlsZSBta2RpciAkdGVzdGRpcgorKworKyMgVGhp cyBvbmUgc2hvdWxkIGFsd2F5cyBwYXNzLgorK3NlbmRfZ2RiICJjb21wbGV0ZWZpbGVpbml0ICR7 dGVzdGRpcl9jb21wbGV0ZX1cdCIKKytnZGJfdGVzdF9tdWx0aXBsZSAiIiAiY29tcGxldGVmaWxl aW5pdCBjb21wbGV0aW9uIiB7CisrICAgIC1yZSAiXmNvbXBsZXRlZmlsZWluaXQgJHt0ZXN0ZGly X3JlZ2V4fSQiIHsKKysgICAgICAgIHBhc3MgImNvbXBsZXRlZmlsZWluaXQgY29tcGxldGlvbiIK KysgICAgfQorK30KKysKKysjIEp1c3QgZGlzY2FyZGluZyB3aGF0ZXZlciB3ZSB0eXBlZC4KKytz ZW5kX2dkYiAiXG4iCisrZ2RiX3Rlc3QgInByaW50IiAiLioiCisrCisrIyBUaGlzIGlzIHRoZSBw cm9ibGVtYXRpYyBvbmUuCisrc2VuZF9nZGIgImNvbXBsZXRlZmlsZW1ldGhvZCAke3Rlc3RkaXJf Y29tcGxldGV9XHQiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgImNvbXBsZXRlZmlsZW1ldGhvZCBj b21wbGV0aW9uIiB7CisrICAgIC1yZSAiXmNvbXBsZXRlZmlsZW1ldGhvZCAke3Rlc3RkaXJfcmVn ZXh9ICQiIHsKKysgICAgICAgIGZhaWwgImNvbXBsZXRlZmlsZW1ldGhvZCBjb21wbGV0aW9uIChj b21wbGV0ZWQgZmlsZW5hbWUgYXMgd3JvbmcgY29tbWFuZCBhcmcpIgorKyAgICB9CisrICAgIC1y ZSAiXmNvbXBsZXRlZmlsZW1ldGhvZCAke3Rlc3RkaXJfcmVnZXh9JCIgeworKyAgICAgICAgcGFz cyAiY29tcGxldGVmaWxlbWV0aG9kIGNvbXBsZXRpb24iCisrICAgIH0KKyt9CisrCisrIyBEaXNj YXJkaW5nIGFnYWluCisrc2VuZF9nZGIgIlxuIgorK2dkYl90ZXN0ICJwcmludCIgIi4qIgorKwor KyMgQW5vdGhlciBwcm9ibGVtYXRpYworK3NlbmRfZ2RiICJjb21wbGV0ZWZpbGVjb21tYW5kY29u ZCAke29iamRpcn0vJHtzdWJkaXJ9L3B5LWNvbXBsZXRpb24tdFx0IgorK2dkYl90ZXN0X211bHRp cGxlICIiICJjb21wbGV0ZWZpbGVjb21tYW5kY29uZCBjb21wbGV0aW9uIiB7CisrICAgIC1yZSAi XmNvbXBsZXRlZmlsZWNvbW1hbmRjb25kICR7dGVzdGRpcn0kIiB7CisrCWZhaWwgImNvbXBsZXRl ZmlsZWNvbW1hbmRjb25kIGNvbXBsZXRpb24gKGNvbXBsZXRlZCBmaWxlbmFtZSBpbnN0ZWFkIG9m IGNvbW1hbmQpIgorKyAgICB9CisrICAgIC1yZSAiXmNvbXBsZXRlZmlsZWNvbW1hbmRjb25kICR7 b2JqZGlyfS8ke3N1YmRpcn0vcHktY29tcGxldGlvbi10JCIgeworKwlwYXNzICJjb21wbGV0ZWZp bGVjb21tYW5kY29uZCBjb21wbGV0aW9uIgorKyAgICB9CisrfQorSW5kZXg6IGdkYi03LjcuOTAu MjAxNDA2MjcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNvbXBsZXRpb24ucHkKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAK KysrKyBnZGItNy43LjkwLjIwMTQwNjI3L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jb21w bGV0aW9uLnB5CTIwMTQtMDctMDcgMjA6NTM6NTUuNDMxMTEwMjA5ICswMjAwCitAQCAtMCwwICsx LDU4IEBACisrIyBDb3B5cmlnaHQgKEMpIDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyMgVGhpcyB0ZXN0Y2Fz ZSB0ZXN0cyBQUiBweXRob24vMTY2OTkKKysKKytpbXBvcnQgZ2RiCisrCisrY2xhc3MgQ29tcGxl dGVGaWxlSW5pdChnZGIuQ29tbWFuZCk6CisrCWRlZiBfX2luaXRfXyhzZWxmKToKKysJCWdkYi5D b21tYW5kLl9faW5pdF9fKHNlbGYsJ2NvbXBsZXRlZmlsZWluaXQnLGdkYi5DT01NQU5EX1VTRVIs Z2RiLkNPTVBMRVRFX0ZJTEVOQU1FKQorKworKwlkZWYgaW52b2tlKHNlbGYsYXJndW1lbnQsZnJv bV90dHkpOgorKwkJcmFpc2UgZ2RiLkdkYkVycm9yKCdub3QgaW1wbGVtZW50ZWQnKQorKworK2Ns YXNzIENvbXBsZXRlRmlsZU1ldGhvZChnZGIuQ29tbWFuZCk6CisrCWRlZiBfX2luaXRfXyhzZWxm KToKKysJCWdkYi5Db21tYW5kLl9faW5pdF9fKHNlbGYsJ2NvbXBsZXRlZmlsZW1ldGhvZCcsZ2Ri LkNPTU1BTkRfVVNFUikKKysKKysJZGVmIGludm9rZShzZWxmLGFyZ3VtZW50LGZyb21fdHR5KToK KysJCXJhaXNlIGdkYi5HZGJFcnJvcignbm90IGltcGxlbWVudGVkJykKKysKKysJZGVmIGNvbXBs ZXRlKHNlbGYsdGV4dCx3b3JkKToKKysJCXJldHVybiBnZGIuQ09NUExFVEVfRklMRU5BTUUKKysK KytjbGFzcyBDb21wbGV0ZUZpbGVDb21tYW5kQ29uZChnZGIuQ29tbWFuZCk6CisrCWRlZiBfX2lu aXRfXyhzZWxmKToKKysJCWdkYi5Db21tYW5kLl9faW5pdF9fKHNlbGYsJ2NvbXBsZXRlZmlsZWNv bW1hbmRjb25kJyxnZGIuQ09NTUFORF9VU0VSKQorKworKwlkZWYgaW52b2tlKHNlbGYsYXJndW1l bnQsZnJvbV90dHkpOgorKwkJcmFpc2UgZ2RiLkdkYkVycm9yKCdub3QgaW1wbGVtZW50ZWQnKQor KworKwlkZWYgY29tcGxldGUoc2VsZix0ZXh0LHdvcmQpOgorKwkJIyBUaGlzIGlzIGEgdGVzdCBt YWRlIHRvIGtub3cgaWYgdGhlIGNvbW1hbmQKKysJCSMgY29tcGxldGlvbiBzdGlsbCB3b3JrcyBm aW5lLiAgV2hlbiB0aGUgdXNlciBhc2tzIHRvCisrCQkjIGNvbXBsZXRlIHNvbWV0aGluZyBsaWtl ICJjb21wbGV0ZWZpbGVjb21tYW5kY29uZAorKwkJIyAvcGF0aC90by9weS1jb21wbGV0aW9uLXQi LCBpdCBzaG91bGQgbm90IGNvbXBsZXRlIHRvCisrCQkjICIvcGF0aC90by9weS1jb21wbGV0aW9u LXRlc3QvIiwgYnV0IGluc3RlYWQganVzdAorKwkJIyB3YWl0IGZvciBpbnB1dC4KKysJCWlmICJw eS1jb21wbGV0aW9uLXQiIGluIHRleHQ6CisrCQkJcmV0dXJuIGdkYi5DT01QTEVURV9DT01NQU5E CisrCQllbHNlOgorKwkJCXJldHVybiBnZGIuQ09NUExFVEVfRklMRU5BTUUKKysKKytDb21wbGV0 ZUZpbGVJbml0KCkKKytDb21wbGV0ZUZpbGVNZXRob2QoKQorK0NvbXBsZXRlRmlsZUNvbW1hbmRD b25kKCkKCmRpZmYgLS1naXQgYS9nZGItcHl0aG9uLWNvbXBsZXRlci0yb2YyLnBhdGNoIGIvZ2Ri LXB5dGhvbi1jb21wbGV0ZXItMm9mMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5lYzNjNjJmCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXB5dGhvbi1jb21wbGV0ZXIt Mm9mMi5wYXRjaApAQCAtMCwwICsxLDcyIEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LXBhdGNoZXMvMjAxNC0wNy9tc2cwMDE1NC5odG1sCitTdWJqZWN0OiBSZTogW1BBVENIXSBQUiBw eXRob24vMTY2OTk6IEdEQiBQeXRob24gY29tbWFuZCBjb21wbGV0aW9uIHdpdGggb3ZlcnJpZGVu IGNvbXBsZXRlIHZzLiBjb21wbGV0ZXIgY2xhc3MKKworCistLXBXeWlFZ0pZbTVmOXY1NS8KK0Nv bnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQorQ29udGVudC1EaXNwb3Np dGlvbjogaW5saW5lCisKK09uIFR1ZSwgMDggSnVsIDIwMTQgMTc6MzI6MjEgKzAyMDAsIEphbiBL cmF0b2NodmlsIHdyb3RlOgorPiAtICAgIC1yZSAiXmNvbXBsZXRlZmlsZWNvbW1hbmRjb25kICR7 b2JqZGlyfS8ke3N1YmRpcn0vcHktY29tcGxldGlvbi10JCIgeworPiArICAgIC1yZSAiXmNvbXBs ZXRlZmlsZWNvbW1hbmRjb25kICR7Y29tcGxldGlvbl9yZWdleH0kIiB7CisKK1RoZXJlIHdhcyBh IHJhY3kgYnVnIGhlcmUgLSBhbmQgZXZlbiBpbiB0aGUgZm9ybWVyIHRlc3QgLSBoZXJlIHNob3Vs ZCBiZToKKyAgKyAgICAtcmUgIl5jb21wbGV0ZWZpbGVjb21tYW5kY29uZCAke2NvbXBsZXRpb25f cmVnZXh9XDAwNyQiIHsKKworVXBkYXRlZCBmaXggYXR0YWNoZWQuCisKKworSmFuCisKKy0tcFd5 aUVnSlltNWY5djU1LworQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lp CitDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7IGZpbGVuYW1lPSJweS1jb21wbGV0aW9uLXJh Y2UyLnBhdGNoIgorCistLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktY29tcGxldGlv bi5leHAtb3JpZwkyMDE0LTA3LTA3IDIxOjMyOjE3Ljg5MTA0NTA1OCArMDIwMAorKysrIC4vZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNvbXBsZXRpb24uZXhwCTIwMTQtMDctMDggMjA6MTQ6 NTcuMTg5NzkxOTI4ICswMjAwCitAQCAtMjYsOSArMjYsOSBAQCBpZiB7IFtza2lwX3B5dGhvbl90 ZXN0c10gfSB7IGNvbnRpbnVlIH0KKyBnZGJfdGVzdF9ub19vdXRwdXQgInNvdXJjZSAke3NyY2Rp cn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LnB5IgorIAorICMgQ3JlYXRlIGEgdGVtcG9yYXJ5IGRp cmVjdG9yeQorLXNldCB0ZXN0ZGlyICIke29iamRpcn0vJHtzdWJkaXJ9L3B5LWNvbXBsZXRpb24t dGVzdGRpci8iCisrc2V0IHRlc3RkaXIgIltzdGFuZGFyZF9vdXRwdXRfZmlsZSAicHktY29tcGxl dGlvbi10ZXN0ZGlyIl0vIgorIHNldCB0ZXN0ZGlyX3JlZ2V4IFtzdHJpbmdfdG9fcmVnZXhwICR0 ZXN0ZGlyXQorLXNldCB0ZXN0ZGlyX2NvbXBsZXRlICIke29iamRpcn0vJHtzdWJkaXJ9L3B5LWNv bXBsZXRpb24tdGVzdCIKKytzZXQgdGVzdGRpcl9jb21wbGV0ZSBbc3RhbmRhcmRfb3V0cHV0X2Zp bGUgInB5LWNvbXBsZXRpb24tdGVzdCJdCisgZmlsZSBta2RpciAkdGVzdGRpcgorIAorICMgVGhp cyBvbmUgc2hvdWxkIGFsd2F5cyBwYXNzLgorQEAgLTQwLDggKzQwLDcgQEAgZ2RiX3Rlc3RfbXVs dGlwbGUgIiIgImNvbXBsZXRlZmlsZWluaXQgYworIH0KKyAKKyAjIEp1c3QgZGlzY2FyZGluZyB3 aGF0ZXZlciB3ZSB0eXBlZC4KKy1zZW5kX2dkYiAiXG4iCistZ2RiX3Rlc3QgInByaW50IiAiLioi CisrZ2RiX3Rlc3QgIiAiICIuKiIgImRpc2NhcmQgIzEiCisgCisgIyBUaGlzIGlzIHRoZSBwcm9i bGVtYXRpYyBvbmUuCisgc2VuZF9nZGIgImNvbXBsZXRlZmlsZW1ldGhvZCAke3Rlc3RkaXJfY29t cGxldGV9XHQiCitAQCAtNTUsMTYgKzU0LDE2IEBAIGdkYl90ZXN0X211bHRpcGxlICIiICJjb21w bGV0ZWZpbGVtZXRob2QKKyB9CisgCisgIyBEaXNjYXJkaW5nIGFnYWluCistc2VuZF9nZGIgIlxu IgorLWdkYl90ZXN0ICJwcmludCIgIi4qIgorK2dkYl90ZXN0ICIgIiAiLioiICJkaXNjYXJkICMy IgorIAorICMgQW5vdGhlciBwcm9ibGVtYXRpYworLXNlbmRfZ2RiICJjb21wbGV0ZWZpbGVjb21t YW5kY29uZCAke29iamRpcn0vJHtzdWJkaXJ9L3B5LWNvbXBsZXRpb24tdFx0IgorK3NldCBjb21w bGV0aW9uX3JlZ2V4ICJbc3RyaW5nX3RvX3JlZ2V4cCBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgInB5 LWNvbXBsZXRpb24tdCJdXSIKKytzZW5kX2dkYiAiY29tcGxldGVmaWxlY29tbWFuZGNvbmQgW3N0 YW5kYXJkX291dHB1dF9maWxlICJweS1jb21wbGV0aW9uLXRcdCJdIgorIGdkYl90ZXN0X211bHRp cGxlICIiICJjb21wbGV0ZWZpbGVjb21tYW5kY29uZCBjb21wbGV0aW9uIiB7CisgICAgIC1yZSAi XmNvbXBsZXRlZmlsZWNvbW1hbmRjb25kICR7dGVzdGRpcn0kIiB7CisgCWZhaWwgImNvbXBsZXRl ZmlsZWNvbW1hbmRjb25kIGNvbXBsZXRpb24gKGNvbXBsZXRlZCBmaWxlbmFtZSBpbnN0ZWFkIG9m IGNvbW1hbmQpIgorICAgICB9CistICAgIC1yZSAiXmNvbXBsZXRlZmlsZWNvbW1hbmRjb25kICR7 b2JqZGlyfS8ke3N1YmRpcn0vcHktY29tcGxldGlvbi10JCIgeworKyAgICAtcmUgIl5jb21wbGV0 ZWZpbGVjb21tYW5kY29uZCAke2NvbXBsZXRpb25fcmVnZXh9XDAwNyQiIHsKKyAJcGFzcyAiY29t cGxldGVmaWxlY29tbWFuZGNvbmQgY29tcGxldGlvbiIKKyAgICAgfQorIH0KKworLS1wV3lpRWdK WW01Zjl2NTUvLS0KKwoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMDFvZjIzLnBhdGNoIGIv Z2RiLXZsYS1pbnRlbC0wMW9mMjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDBiMzc4YTQuLjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC0wMW9mMjMucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwyNzAgKzAsMCBAQAotU3ViamVjdDogW1BBVENIIDAxLzIzXSBkd2FyZjog YWRkIGR3YXJmMyBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzIG9wY29kZQotTWVzc2FnZS1JZDog PDE0MDE4NjEyNjYtNjI0MC0yLWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4K LQotVGhlIG9wY29kZSBwdXNoZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIG9iamVjdCBiZWluZyBldmFs dWF0ZWQuIFRoZSBzZW1hbnRpYyBpcwotZXF1aXZhbGVudCB0byB0aGUgaW1wbGljaXQgcHVzaCBv ZiB0aGUgYmFzZSBhZGRyZXNzIG9mIGEgZGF0YSBtZW1iZXIgbG9jYXRpb24uCi0KLTIwMTQtMDUt MjggIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgotICAgICAgICAg ICAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLQkqIGR3YXJmMmV4cHIu YyAoZXhlY3V0ZV9zdGFja19vcCkgPERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3M+OiBOZXcgY2Fz ZS4KLQkqIGR3YXJmMmV4cHIuaCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dF9mdW5jcykKLQk8 RFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcz46IE5ldyBmdW5jdGlvbiBwb2ludGVyIGdldF9vYmpl Y3RfYWRkci4KLQkqIGR3YXJmMmxvYy5jIChzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbik6IEFkZCBv YmpfYWRkcmVzcy4KLQkoZHdhcmZfZXhwcl9nZXRfb2JqX2FkZHIpOiBOZXcgZnVuY3Rpb24uCi0J KHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MpOiBBZGQKLQlkd2FyZl9leHByX2dldF9v YmpfYWRkciB0byBkd2FyZl9leHByX2N0eF9mdW5jcy4KLQkoZHdhcmYyX2V2YWx1YXRlX2xvY19k ZXNjX2Z1bGwpOiBJbml0aWFsaXplIGJhdG9uLm9ial9hZGRyZXNzLgotCShkd2FyZjJfbG9jZXhw cl9iYXRvbl9ldmFsKTogU2V0IGJhdG9uLm9ial9hZGRyZXNzIHRvIGFkZHIuCi0JKG5lZWRzX2dl dF9vYmpfYWRkcik6IE5ldyBmdW5jdGlvbi4KLQkoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dF9m dW5jcyk6IEFkZCBuZWVkc19nZXRfb2JqX2FkZHIgdG8KLQluZWVkc19mcmFtZV9jdHhfZnVuY3Mu Ci0KLUNoYW5nZS1JZDogSWVkOWUxYmE2MzJlOGQzNWQwZWMwMGNjODMyYjk2ZDQzMjQ0OWZkODIK LQotU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLS0t LQotIGdkYi9kd2FyZjJleHByLmMgfCAgICA2ICsrKysrKwotIGdkYi9kd2FyZjJleHByLmggfCAg ICA0IC0tLS0KLSBnZGIvZHdhcmYybG9jLmMgIHwgICA0MSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLQotIGdkYi9kd2FyZjJsb2MuaCAgfCAgICAxICsKLSBnZGIvZ2Ri dHlwZXMuYyAgIHwgICAxNiArKysrKysrKy0tLS0tLS0tCi0gNSBmaWxlcyBjaGFuZ2VkLCA1MiBp bnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2 MTMvZ2RiL2R3YXJmMmV4cHIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMu b3JpZy9nZGIvZHdhcmYyZXhwci5jCTIwMTQtMDYtMTQgMTU6MDI6MjEuNDg0NTUxMTMyICswMjAw Ci0rKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYyZXhwci5jCTIwMTQtMDYtMTQgMTU6 MDI6NTIuMjk5NTc1MzY5ICswMjAwCi1AQCAtMTQ3OCw2ICsxNDc4LDEyIEBAIGV4ZWN1dGVfc3Rh Y2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnQKLSAJICB9Ci0gCSAgYnJlYWs7Ci0gCi0rICAg ICAgICBjYXNlIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3M6Ci0rCSAgLyogUmV0dXJuIHRoZSBh ZGRyZXNzIG9mIHRoZSBvYmplY3Qgd2UgYXJlIGN1cnJlbnRseSBvYnNlcnZpbmcuICAqLwotKwkg IHJlc3VsdCA9IChjdHgtPmZ1bmNzLT5nZXRfb2JqZWN0X2FkZHJlc3MpIChjdHgtPmJhdG9uKTsK LSsJICByZXN1bHRfdmFsID0gdmFsdWVfZnJvbV91bG9uZ2VzdCAoYWRkcmVzc190eXBlLCByZXN1 bHQpOwotKwkgIGJyZWFrOwotKwotIAlkZWZhdWx0OgotIAkgIGVycm9yIChfKCJVbmhhbmRsZWQg ZHdhcmYgZXhwcmVzc2lvbiBvcGNvZGUgMHgleCIpLCBvcCk7Ci0gCX0KLUluZGV4OiBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJleHByLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43Ljkw LjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMmV4cHIuaAkyMDE0LTA2LTE0IDE1OjAyOjIxLjQ4NTU1 MTEzMyArMDIwMAotKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2R3YXJmMmV4cHIuaAkyMDE0 LTA2LTE0IDE1OjAyOjUyLjI5OTU3NTM2OSArMDIwMAotQEAgLTg0LDEyICs4NCw4IEBAIHN0cnVj dCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MKLSAgICAgIFRoaXMgY2FuIHRocm93IGFuIGV4Y2Vw dGlvbiBpZiB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLiAgKi8KLSAgIENPUkVfQUREUiAoKmdl dF9hZGRyX2luZGV4KSAodm9pZCAqYmF0b24sIHVuc2lnbmVkIGludCBpbmRleCk7Ci0gCi0tI2lm IDAKLS0gIC8qIE5vdCB5ZXQgaW1wbGVtZW50ZWQuICAqLwotLQotICAgLyogUmV0dXJuIHRoZSBg b2JqZWN0IGFkZHJlc3MnIGZvciBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzLiAgKi8KLSAgIENP UkVfQUREUiAoKmdldF9vYmplY3RfYWRkcmVzcykgKHZvaWQgKmJhdG9uKTsKLS0jZW5kaWYKLSB9 OwotIAotIC8qIFRoZSBsb2NhdGlvbiBvZiBhIHZhbHVlLiAgKi8KLUluZGV4OiBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi9kd2FyZjJsb2MuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuOTAuMjAx NDA2MTMub3JpZy9nZGIvZHdhcmYybG9jLmMJMjAxNC0wNi0xNCAxNTowMjoyMS40ODc1NTExMzUg KzAyMDAKLSsrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJsb2MuYwkyMDE0LTA2LTE0 IDE1OjAyOjUyLjMwMTU3NTM3MCArMDIwMAotQEAgLTMwNiw2ICszMDYsNyBAQCBzdHJ1Y3QgZHdh cmZfZXhwcl9iYXRvbgotIHsKLSAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKLSAgIHN0cnVj dCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdTsKLSsgIENPUkVfQUREUiBvYmpfYWRkcmVzczsK LSB9OwotIAotIC8qIEhlbHBlciBmdW5jdGlvbnMgZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVz Yy4gICovCi1AQCAtMTIwOSw2ICsxMjEwLDcgQEAgZHdhcmZfZXhwcl9wdXNoX2R3YXJmX3JlZ19l bnRyeV92YWx1ZSAocwotIAotICAgYmF0b25fbG9jYWwuZnJhbWUgPSBjYWxsZXJfZnJhbWU7Ci0g ICBiYXRvbl9sb2NhbC5wZXJfY3UgPSBjYWxsZXJfcGVyX2N1OwotKyAgYmF0b25fbG9jYWwub2Jq X2FkZHJlc3MgPSAwOwotIAotICAgc2F2ZWRfY3R4LmdkYmFyY2ggPSBjdHgtPmdkYmFyY2g7Ci0g ICBzYXZlZF9jdHguYWRkcl9zaXplID0gY3R4LT5hZGRyX3NpemU7Ci1AQCAtMTIzOCw2ICsxMjQw LDIyIEBAIGR3YXJmX2V4cHJfZ2V0X2FkZHJfaW5kZXggKHZvaWQgKmJhdG9uLAotICAgcmV0dXJu IGR3YXJmMl9yZWFkX2FkZHJfaW5kZXggKGRlYmF0b24tPnBlcl9jdSwgaW5kZXgpOwotIH0KLSAK LSsvKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgZ2V0X29iamVjdF9hZGRyZXNzLiBSZXR1cm4gdGhl IGFkZHJlc3Mgb2YgdGhlIFZMQQotKyAgIG9iamVjdC4gICovCi0rCi0rc3RhdGljIENPUkVfQURE UgotK2R3YXJmX2V4cHJfZ2V0X29ial9hZGRyICh2b2lkICpiYXRvbikKLSt7Ci0rICBzdHJ1Y3Qg ZHdhcmZfZXhwcl9iYXRvbiAqZGViYXRvbiA9IGJhdG9uOwotKwotKyAgZ2RiX2Fzc2VydCAoZGVi YXRvbiAhPSBOVUxMKTsKLSsKLSsgIGlmIChkZWJhdG9uLT5vYmpfYWRkcmVzcyA9PSAwKQotKyAg ICBlcnJvciAoXygiTG9jYXRpb24gYWRkcmVzcyBpcyBub3Qgc2V0LiIpKTsKLSsKLSsgIHJldHVy biBkZWJhdG9uLT5vYmpfYWRkcmVzczsKLSt9Ci0rCi0gLyogVkFMVUUgbXVzdCBiZSBvZiB0eXBl IGx2YWxfY29tcHV0ZWQgd2l0aCBlbnRyeV9kYXRhX3ZhbHVlX2Z1bmNzLiAgUGVyZm9ybQotICAg IHRoZSBpbmRpcmVjdCBtZXRob2Qgb24gaXQsIHRoYXQgaXMgdXNlIGl0cyBzdG9yZWQgdGFyZ2V0 IHZhbHVlLCB0aGUgc29sZQotICAgIHB1cnBvc2Ugb2YgZW50cnlfZGF0YV92YWx1ZV9mdW5jcy4u ICAqLwotQEAgLTIyMDYsNyArMjIyNCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdhcmZfZXhw cl9jb250ZXh0X2YKLSAgIGR3YXJmX2V4cHJfZHdhcmZfY2FsbCwKLSAgIGR3YXJmX2V4cHJfZ2V0 X2Jhc2VfdHlwZSwKLSAgIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUsCi0t ICBkd2FyZl9leHByX2dldF9hZGRyX2luZGV4Ci0rICBkd2FyZl9leHByX2dldF9hZGRyX2luZGV4 LAotKyAgZHdhcmZfZXhwcl9nZXRfb2JqX2FkZHIKLSB9OwotIAotIC8qIEV2YWx1YXRlIGEgbG9j YXRpb24gZGVzY3JpcHRpb24sIHN0YXJ0aW5nIGF0IERBVEEgYW5kIHdpdGggbGVuZ3RoCi1AQCAt MjIzNSw2ICsyMjU0LDcgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0 eQotIAotICAgYmF0b24uZnJhbWUgPSBmcmFtZTsKLSAgIGJhdG9uLnBlcl9jdSA9IHBlcl9jdTsK LSsgIGJhdG9uLm9ial9hZGRyZXNzID0gMDsKLSAKLSAgIGN0eCA9IG5ld19kd2FyZl9leHByX2Nv bnRleHQgKCk7Ci0gICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZnJlZV9kd2FyZl9leHByX2Nv bnRleHQgKGN0eCk7Ci1AQCAtMjQ0MCw2ICsyNDYwLDcgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19k ZXNjIChzdHJ1Y3QgdHlwZSAqdAotIAotIHN0YXRpYyBpbnQKLSBkd2FyZjJfbG9jZXhwcl9iYXRv bl9ldmFsIChjb25zdCBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmRsYmF0b24sCi0rICAg ICAgICAgQ09SRV9BRERSIGFkZHIsCi0gCQkJICAgQ09SRV9BRERSICp2YWxwKQotIHsKLSAgIHN0 cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eDsKLUBAIC0yNDU1LDYgKzI0NzYsNyBAQCBkd2Fy ZjJfbG9jZXhwcl9iYXRvbl9ldmFsIChjb25zdCBzdHJ1Y3QKLSAKLSAgIGJhdG9uLmZyYW1lID0g Z2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKTsKLSAgIGJhdG9uLnBlcl9jdSA9IGRsYmF0b24tPnBl cl9jdTsKLSsgIGJhdG9uLm9ial9hZGRyZXNzID0gYWRkcjsKLSAKLSAgIG9iamZpbGUgPSBkd2Fy ZjJfcGVyX2N1X29iamZpbGUgKGRsYmF0b24tPnBlcl9jdSk7Ci0gCi1AQCAtMjQ5NSw3ICsyNTE3 LDggQEAgZHdhcmYyX2xvY2V4cHJfYmF0b25fZXZhbCAoY29uc3Qgc3RydWN0Ci0gLyogU2VlIGR3 YXJmMmxvYy5oLiAgKi8KLSAKLSBpbnQKLS1kd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKGNvbnN0 IHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3AsIENPUkVfQUREUiAqdmFsdWUpCi0rZHdhcmYyX2V2 YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLCBDT1JFX0FE RFIgYWRkcmVzcywKLSsgICAgICAgIENPUkVfQUREUiAqdmFsdWUpCi0gewotICAgaWYgKHByb3Ag PT0gTlVMTCkKLSAgICAgcmV0dXJuIDA7Ci1AQCAtMjUwNiw3ICsyNTI5LDcgQEAgZHdhcmYyX2V2 YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZAotICAgICAgIHsKLSAJY29uc3Qgc3RydWN0 IGR3YXJmMl9wcm9wZXJ0eV9iYXRvbiAqYmF0b24gPSBwcm9wLT5kYXRhLmJhdG9uOwotIAotLQlp ZiAoZHdhcmYyX2xvY2V4cHJfYmF0b25fZXZhbCAoJmJhdG9uLT5sb2NleHByLCB2YWx1ZSkpCi0r CWlmIChkd2FyZjJfbG9jZXhwcl9iYXRvbl9ldmFsICgmYmF0b24tPmxvY2V4cHIsIGFkZHJlc3Ms IHZhbHVlKSkKLSAJICB7Ci0gCSAgICBpZiAoYmF0b24tPnJlZmVyZW5jZWRfdHlwZSkKLSAJICAg ICAgewotQEAgLTI2NTcsNiArMjY4MCwxNSBAQCBuZWVkc19nZXRfYWRkcl9pbmRleCAodm9pZCAq YmF0b24sIHVuc2lnCi0gICByZXR1cm4gMTsKLSB9Ci0gCi0rLyogRFdfT1BfcHVzaF9vYmplY3Rf YWRkcmVzcyBoYXMgYSBmcmFtZSBhbHJlYWR5IHBhc3NlZCB0aHJ1LiAgKi8KLSsKLStzdGF0aWMg Q09SRV9BRERSCi0rbmVlZHNfZ2V0X29ial9hZGRyICh2b2lkICpiYXRvbikKLSt7Ci0rICAvKiBO b3RoaW5nIHRvIGRvLiAgKi8KLSsgIHJldHVybiAxOwotK30KLSsKLSAvKiBWaXJ0dWFsIG1ldGhv ZCB0YWJsZSBmb3IgZHdhcmYyX2xvY19kZXNjX25lZWRzX2ZyYW1lIGJlbG93LiAgKi8KLSAKLSBz dGF0aWMgY29uc3Qgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dF9mdW5jcyBuZWVkc19mcmFtZV9j dHhfZnVuY3MgPQotQEAgLTI2NzEsNyArMjcwMyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdh cmZfZXhwcl9jb250ZXh0X2YKLSAgIG5lZWRzX2ZyYW1lX2R3YXJmX2NhbGwsCi0gICBOVUxMLAkJ CQkvKiBnZXRfYmFzZV90eXBlICovCi0gICBuZWVkc19kd2FyZl9yZWdfZW50cnlfdmFsdWUsCi0t ICBuZWVkc19nZXRfYWRkcl9pbmRleAotKyAgbmVlZHNfZ2V0X2FkZHJfaW5kZXgsCi0rICBuZWVk c19nZXRfb2JqX2FkZHIKLSB9OwotIAotIC8qIFJldHVybiBub24temVybyBpZmYgdGhlIGxvY2F0 aW9uIGV4cHJlc3Npb24gYXQgREFUQSAobGVuZ3RoIFNJWkUpCi1JbmRleDogZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvZHdhcmYybG9jLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjkwLjIwMTQw NjEzLm9yaWcvZ2RiL2R3YXJmMmxvYy5oCTIwMTQtMDYtMTQgMTU6MDI6MjEuNDg4NTUxMTM1ICsw MjAwCi0rKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmgJMjAxNC0wNi0xNCAx NTowMjo1Mi4zMDE1NzUzNzAgKzAyMDAKLUBAIC05Niw2ICs5Niw3IEBAIHN0cnVjdCB2YWx1ZSAq ZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjICgKLSAgICBpbnRvIFZBTFVFLCBvdGhlcndpc2UgcmV0 dXJucyAwLiAgKi8KLSAKLSBpbnQgZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1 Y3QgZHluYW1pY19wcm9wICpwcm9wLAotKwkJCSAgICAgIENPUkVfQUREUiBhZGRyZXNzLAotIAkJ CSAgICAgIENPUkVfQUREUiAqdmFsdWUpOwotIAotIENPUkVfQUREUiBkd2FyZjJfcmVhZF9hZGRy X2luZGV4IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UsCi1JbmRleDogZ2RiLTcu Ny45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuOTAu MjAxNDA2MTMub3JpZy9nZGIvZ2RidHlwZXMuYwkyMDE0LTA2LTE0IDE1OjAyOjIxLjQ5MDU1MTEz NyArMDIwMAotKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5cGVzLmMJMjAxNC0wNi0x NCAxNTowMzozNy45MTk2MDk5NTUgKzAyMDAKLUBAIC0xNjU3LDcgKzE2NTcsNyBAQCBpc19keW5h bWljX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQotICAgIG9mIHRoYXQgdHlwZS4gICovCi0gCi0g c3RhdGljIHN0cnVjdCB0eXBlICoKLS1yZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHN0cnVjdCB0eXBl ICpkeW5fcmFuZ2VfdHlwZSkKLStyZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHN0cnVjdCB0eXBlICpk eW5fcmFuZ2VfdHlwZSwgQ09SRV9BRERSIGFkZHIpCi0gewotICAgQ09SRV9BRERSIHZhbHVlOwot ICAgc3RydWN0IHR5cGUgKnN0YXRpY19yYW5nZV90eXBlOwotQEAgLTE2NjgsNyArMTY2OCw3IEBA IHJlc29sdmVfZHluYW1pY19yYW5nZSAoc3RydWN0IHR5cGUgKmR5bl8KLSAgIGdkYl9hc3NlcnQg KFRZUEVfQ09ERSAoZHluX3JhbmdlX3R5cGUpID09IFRZUEVfQ09ERV9SQU5HRSk7Ci0gCi0gICBw cm9wID0gJlRZUEVfUkFOR0VfREFUQSAoZHluX3JhbmdlX3R5cGUpLT5sb3c7Ci0tICBpZiAoZHdh cmYyX2V2YWx1YXRlX3Byb3BlcnR5IChwcm9wLCAmdmFsdWUpKQotKyAgaWYgKGR3YXJmMl9ldmFs dWF0ZV9wcm9wZXJ0eSAocHJvcCwgYWRkciwgJnZhbHVlKSkKLSAgICAgewotICAgICAgIGxvd19i b3VuZC5raW5kID0gUFJPUF9DT05TVDsKLSAgICAgICBsb3dfYm91bmQuZGF0YS5jb25zdF92YWwg PSB2YWx1ZTsKLUBAIC0xNjgwLDcgKzE2ODAsNyBAQCByZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHN0 cnVjdCB0eXBlICpkeW5fCi0gICAgIH0KLSAKLSAgIHByb3AgPSAmVFlQRV9SQU5HRV9EQVRBIChk eW5fcmFuZ2VfdHlwZSktPmhpZ2g7Ci0tICBpZiAoZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChw cm9wLCAmdmFsdWUpKQotKyAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgYWRk ciwgJnZhbHVlKSkKLSAgICAgewotICAgICAgIGhpZ2hfYm91bmQua2luZCA9IFBST1BfQ09OU1Q7 Ci0gICAgICAgaGlnaF9ib3VuZC5kYXRhLmNvbnN0X3ZhbCA9IHZhbHVlOwotQEAgLTE3MDcsNyAr MTcwNyw3IEBAIHJlc29sdmVfZHluYW1pY19yYW5nZSAoc3RydWN0IHR5cGUgKmR5bl8KLSAgICBv ZiB0aGUgYXNzb2NpYXRlZCBhcnJheS4gICovCi0gCi0gc3RhdGljIHN0cnVjdCB0eXBlICoKLS1y ZXNvbHZlX2R5bmFtaWNfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlKQotK3Jlc29sdmVfZHluYW1p Y19hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyKQotIHsKLSAgIENPUkVf QUREUiB2YWx1ZTsKLSAgIHN0cnVjdCB0eXBlICplbHRfdHlwZTsKLUBAIC0xNzE4LDEyICsxNzE4 LDEyIEBAIHJlc29sdmVfZHluYW1pY19hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUKLSAKLSAgIGVs dF90eXBlID0gdHlwZTsKLSAgIHJhbmdlX3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX0lOREVY X1RZUEUgKGVsdF90eXBlKSk7Ci0tICByYW5nZV90eXBlID0gcmVzb2x2ZV9keW5hbWljX3Jhbmdl IChyYW5nZV90eXBlKTsKLSsgIHJhbmdlX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHJh bmdlX3R5cGUsIGFkZHIpOwotIAotICAgYXJ5X2RpbSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFS R0VUX1RZUEUgKGVsdF90eXBlKSk7Ci0gCi0gICBpZiAoYXJ5X2RpbSAhPSBOVUxMICYmIFRZUEVf Q09ERSAoYXJ5X2RpbSkgPT0gVFlQRV9DT0RFX0FSUkFZKQotLSAgICBlbHRfdHlwZSA9IHJlc29s dmVfZHluYW1pY19hcnJheSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotKyAgICBlbHRfdHlw ZSA9IHJlc29sdmVfZHluYW1pY19hcnJheSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIGFkZHIp OwotICAgZWxzZQotICAgICBlbHRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOwotIAot QEAgLTE4NTMsMTEgKzE4NTMsMTEgQEAgcmVzb2x2ZV9keW5hbWljX3R5cGUgKHN0cnVjdCB0eXBl ICp0eXBlLAotIAl9Ci0gCi0gICAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6Ci0tCXJlc29sdmVk X3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfYXJyYXkgKHR5cGUpOwotKwlyZXNvbHZlZF90eXBlID0g cmVzb2x2ZV9keW5hbWljX2FycmF5ICh0eXBlLCBhZGRyKTsKLSAJYnJlYWs7Ci0gCi0gICAgICAg Y2FzZSBUWVBFX0NPREVfUkFOR0U6Ci0tCXJlc29sdmVkX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNf cmFuZ2UgKHR5cGUpOwotKwlyZXNvbHZlZF90eXBlID0gcmVzb2x2ZV9keW5hbWljX3JhbmdlICh0 eXBlLCBhZGRyKTsKLSAJYnJlYWs7Ci0gCi0gICAgIGNhc2UgVFlQRV9DT0RFX1VOSU9OOgoKZGlm ZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMDJvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0wMm9m MjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3OTdlY2UuLjAwMDAwMDAK LS0tIGEvZ2RiLXZsYS1pbnRlbC0wMm9mMjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIg KzAsMCBAQAotU3ViamVjdDogW1BBVENIIDAyLzIzXSBkd2FyZjogYWRkIERXX0FUX2RhdGFfbG9j YXRpb24gc3VwcG9ydAotTWVzc2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC0zLWdpdC1zZW5kLWVt YWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4KLQotQW4gb2JqZWN0IG1pZ2h0IGhhdmUgYSBkZXNj cmlwdG9yIHByb2NlZWRpbmcgdGhlIGFjdHVhbCB2YWx1ZS4KLVRvIHBvaW50IHRoZSBkZWJ1Z2dl ciB0byB0aGUgYWN0dWFsbHkgdmFsdWUgb2YgYW4gb2JqZWN0Ci1EV19BVF9kYXRhX2xvY2F0aW9u IGlzIHVzZWQgZm9yLiBGb3IgZXhhbXBsZSB0aGUgY29tcGlsZSBtYXkKLWVtaXQgZm9yIHRoaXMg ZW50aXR5OgotCi0gIDF8IGludCBmb29bTl07Ci0KLXRoZSBmb2xsb3dpbmcgZGVzY3JpcHRvcjoK LQotc3RydWN0IGFycmF5IHsKLSAgc2l6ZV90IHNpemU7Ci0gIHZvaWQqICBkYXRhOyAvLyBEV19B VF9kYXRhX2xvY2F0aW9uIGRlc2NyaWJlcyB0aGlzIGxvY2F0aW9uCi19Ci0KLVRoaXMgYWxsb3dz IEdEQiB0byBwcmludCB0aGUgYWN0dWFsIGRhdGEgb2YgYW4gdHlwZS4KLQotMjAxNC0wNS0yOCAg U2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+Ci0gICAgICAgICAgICBL ZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLQotCSogZHdhcmYycmVhZC5jIChz ZXRfZGllX3R5cGUpOiBQYXJzZSBhbmQgc2F2ZSBEV19BVF9kYXRhX2xvY2F0aW9uCi0JYXR0cmli dXRlLgotCSogZ2RidHlwZXMuYyAoaXNfZHluYW1pY190eXBlKTogQ29uc2lkZXIgYSB0eXBlIGJl aW5nIGR5bmFtaWMgaWYKLQl0aGUgZGF0YSBsb2NhdGlvbiBoYXMgbm90IHlldCBiZWVuIHJlc29s dmVkLgotCShyZXNvbHZlX2R5bmFtaWNfdHlwZSk6IEV2YWx1YXRlIGRhdGEgbG9jYXRpb24gYmF0 b24KLQlpZiBwcmVzZW50IGFuZCBzYXZlIGl0cyB2YWx1ZS4KLQkqIGdkYnR5cGVzLmggPG1haW5f dHlwZT46IEFkZCBkYXRhX2xvY2F0aW9uLgotCShUWVBFX0RBVEFfTE9DQVRJT04pOiBOZXcgbWFj cm8uCi0JKFRZUEVfREFUQV9MT0NBVElPTl9BRERSKTogTmV3IG1hY3JvLgotCShUWVBFX0RBVEFf TE9DQVRJT05fSVNfQUREUkVTUyk6IE5ldyBtYWNyby4KLQkqIHZhbHVlLmM6IEluY2x1ZGUgZHdh cmYybG9jLmguCi0JKHZhbHVlX2ZldGNoX2xhenkpOiBVc2UgZGF0YSBsb2NhdGlvbiBhZGRyZXMg dG8gcmVhZCB2YWx1ZSBmcm9tCi0JbWVtb3J5LgotCShjb2VyY2VfcmVmKTogQ29uc3RydWN0IG5l dyB2YWx1ZSBmcm9tIGRhdGEgbG9jYXRpb24uCi0KLUNoYW5nZS1JZDogSWM2MzNmYTEyNWVmZGI1 ZTQzODIwNGU0ZjgwYmIzYTFjOTc3NThiMTIKLQotU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwg PGtldmVuLmJvZWxsQGludGVsLmNvbT4KLS0tLQotIGdkYi9kd2FyZjJyZWFkLmMgfCAgIDE1ICsr KysrKysrKysrKysrKwotIGdkYi9nZGJ0eXBlcy5jICAgfCAgIDI5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKy0tCi0gZ2RiL2dkYnR5cGVzLmggICB8ICAgMTQgKysrKysrKysrKysrKysKLSBn ZGIvdmFsdWUuYyAgICAgIHwgICAgOCArKysrKysrLQotIDQgZmlsZXMgY2hhbmdlZCwgNjMgaW5z ZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL2R3YXJmMnJlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3Jp Zy9nZGIvZHdhcmYycmVhZC5jCTIwMTQtMDYtMTQgMTU6MDY6MDAuODM0NzE0NDA5ICswMjAwCi0r KysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYycmVhZC5jCTIwMTQtMDYtMTQgMTU6MDY6 MDguMzI2NzE5NzUzICswMjAwCi1AQCAtMjE2NDIsNiArMjE2NDIsNyBAQCBzZXRfZGllX3R5cGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Ci0gewotICAgc3RydWN0IGR3YXJmMl9wZXJfY3Vf b2Zmc2V0X2FuZF90eXBlICoqc2xvdCwgb2ZzOwotICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUg PSBjdS0+b2JqZmlsZTsKLSsgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0gCi0gICAvKiBGb3Ig QWRhIHR5cGVzLCBtYWtlIHN1cmUgdGhhdCB0aGUgZ25hdC1zcGVjaWZpYyBkYXRhIGlzIGFsd2F5 cwotICAgICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCkuICBUaGVyZSBhcmUgYSBm ZXcgdHlwZXMgd2hlcmUKLUBAIC0yMTY1Niw2ICsyMTY1NywyMCBAQCBzZXRfZGllX3R5cGUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Ci0gICAgICAgJiYgIUhBVkVfR05BVF9BVVhfSU5GTyAo dHlwZSkpCi0gICAgIElOSVRfR05BVF9TUEVDSUZJQyAodHlwZSk7Ci0gCi0rICAvKiBSZWFkIERX X0FUX2RhdGFfbG9jYXRpb24gYW5kIHNldCBpbiB0eXBlLiAgKi8KLSsgIGF0dHIgPSBkd2FyZjJf YXR0ciAoZGllLCBEV19BVF9kYXRhX2xvY2F0aW9uLCBjdSk7Ci0rICBpZiAoYXR0cl9mb3JtX2lz X2Jsb2NrIChhdHRyKSkKLSsgICAgewotKyAgICAgIHN0cnVjdCBkeW5hbWljX3Byb3AgcHJvcDsK LSsKLSsgICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZwcm9w KSkKLSsJewotKwkgIFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSkKLSsJICAgID0gb2JzdGFja19h bGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc2l6ZW9mIChwcm9wKSk7Ci0rCSAgKlRZ UEVfREFUQV9MT0NBVElPTiAodHlwZSkgPSBwcm9wOwotKwl9Ci0rICAgIH0KLSsKLSAgIGlmIChk d2FyZjJfcGVyX29iamZpbGUtPmRpZV90eXBlX2hhc2ggPT0gTlVMTCkKLSAgICAgewotICAgICAg IGR3YXJmMl9wZXJfb2JqZmlsZS0+ZGllX3R5cGVfaGFzaCA9Ci1JbmRleDogZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvZ2RidHlwZXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuOTAuMjAxNDA2 MTMub3JpZy9nZGIvZ2RidHlwZXMuYwkyMDE0LTA2LTE0IDE1OjA2OjAwLjgzNjcxNDQxMCArMDIw MAotKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5cGVzLmMJMjAxNC0wNi0xNCAxNTox MjoyOC45NjM5ODYzNDQgKzAyMDAKLUBAIC0xNjM0LDcgKzE2MzQsMTIgQEAgaXNfZHluYW1pY190 eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAJICAgb3IgdGhlIGVsZW1lbnRzIGl0IGNvbnRhaW5z IGhhdmUgYSBkeW5hbWljIGNvbnRlbnRzLiAgKi8KLSAJaWYgKGlzX2R5bmFtaWNfdHlwZSAoVFlQ RV9JTkRFWF9UWVBFICh0eXBlKSkpCi0gCSAgcmV0dXJuIDE7Ci0tCXJldHVybiBpc19keW5hbWlj X3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLSsJZWxzZSBpZiAoVFlQRV9EQVRBX0xP Q0FUSU9OICh0eXBlKSAhPSBOVUxMCi0rICAgICAgICAgICYmIChUWVBFX0RBVEFfTE9DQVRJT05f S0lORCAodHlwZSkgPT0gUFJPUF9MT0NFWFBSCi0rICAgICAgICAgICAgICB8fCBUWVBFX0RBVEFf TE9DQVRJT05fS0lORCAodHlwZSkgPT0gUFJPUF9MT0NMSVNUKSkKLSsgICAgcmV0dXJuIDE7Ci0r ICBlbHNlCi0rICAgIHJldHVybiBpc19keW5hbWljX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpKTsKLSAgICAgICB9Ci0gCi0gICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoKLUBAIC0xODMw LDYgKzE4MzUsOCBAQCByZXNvbHZlX2R5bmFtaWNfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsCi0g ewotICAgc3RydWN0IHR5cGUgKnJlYWxfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOwotICAg c3RydWN0IHR5cGUgKnJlc29sdmVkX3R5cGUgPSB0eXBlOwotKyAgY29uc3Qgc3RydWN0IGR5bmFt aWNfcHJvcCAqcHJvcDsKLSsgIENPUkVfQUREUiB2YWx1ZTsKLSAKLSAgIGlmICghaXNfZHluYW1p Y190eXBlIChyZWFsX3R5cGUpKQotICAgICByZXR1cm4gdHlwZTsKLUBAIC0xODY5LDYgKzE4NzYs MTggQEAgcmVzb2x2ZV9keW5hbWljX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLAotICAgICAgIGJy ZWFrOwotICAgICB9Ci0gCi0rICB0eXBlID0gcmVzb2x2ZWRfdHlwZTsKLSsKLSsgIC8qIFJlc29s dmUgZGF0YV9sb2NhdGlvbiBhdHRyaWJ1dGUuICAqLwotKyAgcHJvcCA9IFRZUEVfREFUQV9MT0NB VElPTiAodHlwZSk7Ci0rICBpZiAoZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChwcm9wLCBhZGRy LCAmdmFsdWUpKQotKyAgICB7Ci0rICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIgKHR5cGUp ID0gdmFsdWU7Ci0rICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQgKHR5cGUpID0gUFJPUF9D T05TVDsKLSsgICAgfQotKyAgZWxzZQotKyAgICBUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUpID0g TlVMTDsKLSsKLSAgIHJldHVybiByZXNvbHZlZF90eXBlOwotIH0KLSAKLUBAIC00MDc4LDYgKzQw OTcsMTMgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iagotICAgICAg ICpUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKSA9ICpUWVBFX1JBTkdFX0RBVEEgKHR5cGUpOwot ICAgICB9Ci0gCi0rICAvKiBDb3B5IHRoZSBkYXRhIGxvY2F0aW9uIGluZm9ybWF0aW9uLiAgKi8K LSsgIGlmIChUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUpICE9IE5VTEwpCi0rICAgIHsKLSsgICAg ICBUWVBFX0RBVEFfTE9DQVRJT04gKG5ld190eXBlKSA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0 IGR5bmFtaWNfcHJvcCkpOwotKyAgICAgICpUWVBFX0RBVEFfTE9DQVRJT04gKG5ld190eXBlKSA9 ICpUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUpOwotKyAgICB9Ci0rCi0gICAvKiBDb3B5IHBvaW50 ZXJzIHRvIG90aGVyIHR5cGVzLiAgKi8KLSAgIGlmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkK LSAgICAgVFlQRV9UQVJHRVRfVFlQRSAobmV3X3R5cGUpID0gCi1JbmRleDogZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvZ2RidHlwZXMuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuOTAuMjAxNDA2 MTMub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDE0LTA2LTE0IDE1OjA2OjAwLjgzNzcxNDQxMSArMDIw MAotKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5cGVzLmgJMjAxNC0wNi0xNCAxNTow NjowOC4zMjg3MTk3NTQgKzAyMDAKLUBAIC03MjUsNiArNzI1LDEwIEBAIHN0cnVjdCBtYWluX3R5 cGUKLSAKLSAgICAgc3RydWN0IGZ1bmNfdHlwZSAqZnVuY19zdHVmZjsKLSAgIH0gdHlwZV9zcGVj aWZpYzsKLSsKLSsgIC8qICogSW5kaXJlY3Rpb24gdG8gYWN0dWFsIGRhdGEuICAqLwotKwotKyAg c3RydWN0IGR5bmFtaWNfcHJvcCAqZGF0YV9sb2NhdGlvbjsKLSB9OwotIAotIC8qICogQSBgYHN0 cnVjdCB0eXBlJycgZGVzY3JpYmVzIGEgcGFydGljdWxhciBpbnN0YW5jZSBvZiBhIHR5cGUsIHdp dGgKLUBAIC0xMjA0LDYgKzEyMDgsMTYgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhf dHlwZSAoc3RydQotICNkZWZpbmUgVFlQRV9MT1dfQk9VTkRfS0lORChyYW5nZV90eXBlKSBcCi0g ICBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxvdy5raW5kCi0gCi0rLyogQXR0cmlidXRl IGFjY2Vzc29ycyBmb3IgVkxBIHN1cHBvcnQuICAqLwotKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FU SU9OKHRoaXN0eXBlKSBcCi0rICBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmRhdGFfbG9jYXRp b24KLSsjZGVmaW5lIFRZUEVfREFUQV9MT0NBVElPTl9CQVRPTih0aGlzdHlwZSkgXAotKyAgVFlQ RV9EQVRBX0xPQ0FUSU9OICh0aGlzdHlwZSktPmRhdGEuYmF0b24KLSsjZGVmaW5lIFRZUEVfREFU QV9MT0NBVElPTl9BRERSKHRoaXN0eXBlKSBcCi0rICBUWVBFX0RBVEFfTE9DQVRJT04gKHRoaXN0 eXBlKS0+ZGF0YS5jb25zdF92YWwKLSsjZGVmaW5lIFRZUEVfREFUQV9MT0NBVElPTl9LSU5EKHRo aXN0eXBlKSBcCi0rICBUWVBFX0RBVEFfTE9DQVRJT04gKHRoaXN0eXBlKS0+a2luZAotKwotIC8q IE1vdG8tc3BlY2lmaWMgc3R1ZmYgZm9yIEZPUlRSQU4gYXJyYXlzLiAgKi8KLSAKLSAjZGVmaW5l IFRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEKGFycmF5dHlwZSkgXAotSW5kZXg6 IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbHVlLmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43 LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3ZhbHVlLmMJMjAxNC0wNi0xNCAxNTowNjowMC44Mzg3MTQ0 MTIgKzAyMDAKLSsrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi92YWx1ZS5jCTIwMTQtMDYtMTQg MTU6MDY6MDguMzI5NzE5NzU1ICswMjAwCi1AQCAtMzY5OSw4ICszNjk5LDE0IEBAIHZhbHVlX2Zl dGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAqdmFsKQotICAgICB9Ci0gICBlbHNlIGlmIChWQUxVRV9M VkFMICh2YWwpID09IGx2YWxfbWVtb3J5KQotICAgICB7Ci0tICAgICAgQ09SRV9BRERSIGFkZHIg PSB2YWx1ZV9hZGRyZXNzICh2YWwpOwotICAgICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tf dHlwZWRlZiAodmFsdWVfZW5jbG9zaW5nX3R5cGUgKHZhbCkpOwotKyAgICAgIENPUkVfQUREUiBh ZGRyOwotKwotKyAgICAgIGlmIChUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUpICE9IE5VTEwKLSsJ ICAmJiBUWVBFX0RBVEFfTE9DQVRJT05fS0lORCAodHlwZSkgPT0gUFJPUF9DT05TVCkKLSsJYWRk ciA9IFRZUEVfREFUQV9MT0NBVElPTl9BRERSICh0eXBlKTsKLSsgICAgICBlbHNlCi0rCWFkZHIg PSB2YWx1ZV9hZGRyZXNzICh2YWwpOwotIAotICAgICAgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkp Ci0gCXJlYWRfdmFsdWVfbWVtb3J5ICh2YWwsIDAsIHZhbHVlX3N0YWNrICh2YWwpLAoKZGlmZiAt LWdpdCBhL2dkYi12bGEtaW50ZWwtMDNvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0wM29mMjMu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMjg0ZTkuLjAwMDAwMDAKLS0t IGEvZ2RiLXZsYS1pbnRlbC0wM29mMjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAs MCBAQAotU3ViamVjdDogW1BBVENIIDAzLzIzXSB2bGE6IGludHJvZHVjZSBhbGxvY2F0ZWQvYXNz b2NpYXRlZCBmbGFncwotTWVzc2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC00LWdpdC1zZW5kLWVt YWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4KLQotRm9ydHJhbiA5MCBwcm92aWRlIHR5cGVzIHdo b3NlIHZhbHVlcyBtYXkgYmUgZHluYW1pY2FsbHkKLWFsbG9jYXRlZCBvciBhc3NvY2lhdGVkIHdp dGggYSB2YXJpYWJsZSB1bmRlciBleHBsaWNpdAotcHJvZ3JhbSBjb250cm9sLiBUaGUgcHVycG9z ZSBvZiB0aGlzIGNvbW1pdCBpcyB0byByZWFkCi1hbGxvY2F0ZWQvYXNzb2NpYXRlZCBEV0FSRiB0 YWdzIGFuZCBzdG9yZSB0aGVtIHRvIHRoZQotbWFpbl90eXBlLgotCi0yMDE0LTA1LTI4ICBLZXZl biBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLSAgICAgICAgICAgIFNhbmltaXIgQWdv dmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgotCi0JKiBkd2FyZjJyZWFkLmMgKHNldF9k aWVfdHlwZSk6IEFkZCByZWFkaW5nIG9mCi0JYWxsb2NhdGVkL2Fzc29jaWF0ZWQgZmxhZ3MuCi0J KiBnZGJ0eXBlcy5oIChzdHJ1Y3QgbWFpbl90eXBlKTogQWRkIGFsbG9jYXRlZC8KLQlhc3NvY2lh dGVkIGR3YXJmMl9wcm9wIGF0dHJpYnV0ZXMuCi0JKFRZUEVfQUxMT0NBVEVEX1BST1ApOiBOZXcg bWFjcm8uCi0JKFRZUEVfQVNTT0NJQVRFRF9QUk9QKTogTmV3IG1hY3JvLgotCShUWVBFX05PVF9B TExPQ0FURUQpOiBOZXcgbWFjcm8uCi0JKFRZUEVfTk9UX0FTU09DSUFURUQpOiBOZXcgbWFjcm8u Ci0KLUNoYW5nZS1JZDogSTQ0YTllMjE5ODZkZTE2ZGUwNjFiM2VhMmE3Njg5ZjFiZmEyOGVkMmUK LQotU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLS0t LQotIGdkYi9kd2FyZjJyZWFkLmMgfCAgIDI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysK LSBnZGIvZ2RidHlwZXMuaCAgIHwgICAyNiArKysrKysrKysrKysrKysrKysrKysrKysrKwotIDIg ZmlsZXMgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJm MnJlYWQuYyBiL2dkYi9kd2FyZjJyZWFkLmMKLWluZGV4IDdhMGY3ZjQuLmVhNjY2MDIgMTAwNjQ0 Ci0tLS0gYS9nZGIvZHdhcmYycmVhZC5jCi0rKysgYi9nZGIvZHdhcmYycmVhZC5jCi1AQCAtMjE1 MTQsNiArMjE1MTQsMzQgQEAgc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICAgICYmICFIQVZFX0dO QVRfQVVYX0lORk8gKHR5cGUpKQotICAgICBJTklUX0dOQVRfU1BFQ0lGSUMgKHR5cGUpOwotIAot KyAgLyogUmVhZCBEV19BVF9hbGxvY2F0ZWQgYW5kIHNldCBpbiB0eXBlLiAgKi8KLSsgIGF0dHIg PSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9hbGxvY2F0ZWQsIGN1KTsKLSsgIGlmIChhdHRyX2Zv cm1faXNfYmxvY2sgKGF0dHIpKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGR5bmFtaWNfcHJvcCBw cm9wOwotKwotKyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwg JnByb3ApKQotKyAgICAgICAgewotKyAgICAgICAgICBUWVBFX0FMTE9DQVRFRF9QUk9QICh0eXBl KQotKyAgICAgICAgICAgID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFj aywgc2l6ZW9mIChwcm9wKSk7Ci0rICAgICAgICAgICpUWVBFX0FMTE9DQVRFRF9QUk9QICh0eXBl KSA9IHByb3A7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgIC8qIFJlYWQgRFdfQVRfYXNzb2Np YXRlZCBhbmQgc2V0IGluIHR5cGUuICAqLwotKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERX X0FUX2Fzc29jaWF0ZWQsIGN1KTsKLSsgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQot KyAgICB7Ci0rICAgICAgc3RydWN0IGR5bmFtaWNfcHJvcCBwcm9wOwotKwotKyAgICAgIGlmIChh dHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJnByb3ApKQotKyAgICAgICAgewot KyAgICAgICAgICBUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSkKLSsgICAgICAgICAgICA9IG9i c3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAocHJvcCkpOwot KyAgICAgICAgICAqVFlQRV9BU1NPQ0lBVEVEX1BST1AgKHR5cGUpID0gcHJvcDsKLSsgICAgICAg IH0KLSsgICAgfQotKwotICAgLyogUmVhZCBEV19BVF9kYXRhX2xvY2F0aW9uIGFuZCBzZXQgaW4g dHlwZS4gICovCi0gICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfZGF0YV9sb2NhdGlv biwgY3UpOwotICAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi1kaWZmIC0tZ2l0IGEv Z2RiL2dkYnR5cGVzLmggYi9nZGIvZ2RidHlwZXMuaAotaW5kZXggYzZkMTRkMi4uNTJlNjIzMyAx MDA2NDQKLS0tLSBhL2dkYi9nZGJ0eXBlcy5oCi0rKysgYi9nZGIvZ2RidHlwZXMuaAotQEAgLTcy Niw2ICs3MjYsMTggQEAgc3RydWN0IG1haW5fdHlwZQotICAgLyogKiBJbmRpcmVjdGlvbiB0byBh Y3R1YWwgZGF0YS4gICovCi0gCi0gICBzdHJ1Y3QgZHluYW1pY19wcm9wICpkYXRhX2xvY2F0aW9u OwotKwotKyAgLyogU3RydWN0dXJlIGZvciBEV19BVF9hbGxvY2F0ZWQuCi0rICAgICBUaGUgcHJl c2VuY2Ugb2YgdGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBvZiB0aGUg dHlwZQotKyAgICAgY2FuIGJlIGFsbG9jYXRlZC9kZWFsbG9jYXRlZC4gIFRoZSB2YWx1ZSBjYW4g YmUgYSBkd2FyZiBleHByZXNzaW9uLAotKyAgICAgcmVmZXJlbmNlLCBvciBhIGNvbnN0YW50LiAg Ki8KLSsgIHN0cnVjdCBkeW5hbWljX3Byb3AgKmFsbG9jYXRlZDsKLSsKLSsgIC8qIFN0cnVjdHVy ZSBmb3IgRFdfQVRfYXNzb2NpYXRlZC4KLSsgICAgIFRoZSBwcmVzZW5jZSBvZiB0aGlzIGF0dHJp YnV0ZSBpbmRpY2F0ZWQgdGhhdCB0aGUgb2JqZWN0IG9mIHRoZSB0eXBlCi0rICAgICBjYW4gYmUg YXNzb2NpYXRlZC4gIFRoZSB2YWx1ZSBjYW4gYmUgYSBkd2FyZiBleHByZXNzaW9uLAotKyAgICAg cmVmZXJlbmNlLCBvciBhIGNvbnN0YW50LiAgKi8KLSsgIHN0cnVjdCBkeW5hbWljX3Byb3AgKmFz c29jaWF0ZWQ7Ci0gfTsKLSAKLSAvKiAqIEEgYGBzdHJ1Y3QgdHlwZScnIGRlc2NyaWJlcyBhIHBh cnRpY3VsYXIgaW5zdGFuY2Ugb2YgYSB0eXBlLCB3aXRoCi1AQCAtMTIxNCw2ICsxMjI2LDIwIEBA IGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwotICAg VFlQRV9EQVRBX0xPQ0FUSU9OICh0aGlzdHlwZSktPmRhdGEuY29uc3RfdmFsCi0gI2RlZmluZSBU WVBFX0RBVEFfTE9DQVRJT05fS0lORCh0aGlzdHlwZSkgXAotICAgVFlQRV9EQVRBX0xPQ0FUSU9O ICh0aGlzdHlwZSktPmtpbmQKLSsjZGVmaW5lIFRZUEVfQUxMT0NBVEVEX1BST1AodGhpc3R5cGUp IFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+YWxsb2NhdGVkCi0rI2RlZmluZSBUWVBFX0FTU09D SUFURURfUFJPUCh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT5hc3NvY2lhdGVk Ci0rCi0rLyogQWxsb2NhdGVkIHN0YXR1cyBvZiB0eXBlIG9iamVjdC4gIElmIHNldCB0byBub24t emVybyBpdCBtZWFucyB0aGUgb2JqZWN0Ci0rICAgaXMgYWxsb2NhdGVkLiBBIHplcm8gdmFsdWUg bWVhbnMgaXQgaXMgbm90IGFsbG9jYXRlZC4gICovCi0rI2RlZmluZSBUWVBFX05PVF9BTExPQ0FU RUQodCkgIChUWVBFX0FMTE9DQVRFRF9QUk9QICh0KSBcCi0rICAmJiBUWVBFX0FMTE9DQVRFRF9Q Uk9QICh0KS0+a2luZCA9PSBQUk9QX0NPTlNUIFwKLSsgICYmICFUWVBFX0FMTE9DQVRFRF9QUk9Q ICh0KS0+ZGF0YS5jb25zdF92YWwpCi0rCi0rLyogQXNzb2NpYXRlZCBzdGF0dXMgb2YgdHlwZSBv YmplY3QuICBJZiBzZXQgdG8gbm9uLXplcm8gaXQgbWVhbnMgdGhlIG9iamVjdAotKyAgIGlzIGFz c29jaWF0ZWQuIEEgemVybyB2YWx1ZSBtZWFucyBpdCBpcyBub3QgYXNzb2NpYXRlZC4gICovCi0r I2RlZmluZSBUWVBFX05PVF9BU1NPQ0lBVEVEKHQpICAoVFlQRV9BU1NPQ0lBVEVEX1BST1AgKHQp IFwKLSsgICYmIFRZUEVfQVNTT0NJQVRFRF9QUk9QICh0KS0+a2luZCA9PSBQUk9QX0NPTlNUIFwK LSsgICYmICFUWVBFX0FTU09DSUFURURfUFJPUCAodCktPmRhdGEuY29uc3RfdmFsKQotIAotIC8q IE1vdG8tc3BlY2lmaWMgc3R1ZmYgZm9yIEZPUlRSQU4gYXJyYXlzLiAgKi8KLSAKLS0tIAotMS43 LjkuNQotCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0wNG9mMjMtZml4LnBhdGNoIGIvZ2Ri LXZsYS1pbnRlbC0wNG9mMjMtZml4LnBhdGNoCmluZGV4IDMwNWM1NDEuLmFkMjM5YjUgMTAwNjQ0 Ci0tLSBhL2dkYi12bGEtaW50ZWwtMDRvZjIzLWZpeC5wYXRjaAorKysgYi9nZGItdmxhLWludGVs LTA0b2YyMy1maXgucGF0Y2gKQEAgLTEsMTYgKzEsMTcgQEAKIFJlOiBbUEFUQ0ggMDQvMjNdIHZs YTogbWFrZSBkeW5hbWljIGZvcnRyYW4gYXJyYXlzIGZ1bmN0aW9uYWwuCiBodHRwczovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTQtMDYvbXNnMDA1NzAuaHRtbAogCi1JbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsYXJpdGguYworSW5kZXg6IGdkYi03LjcuOTAuMjAx NDA2MjcvZ2RiL3ZhbGFyaXRoLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjkwLjIwMTQwNjEz Lm9yaWcvZ2RiL3ZhbGFyaXRoLmMJMjAxNC0wNi0xNiAyMzoxNjo0OC4xMjkxNjQ2NDQgKzAyMDAK LSsrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi92YWxhcml0aC5jCTIwMTQtMDYtMTYgMjM6MTc6 NTIuNTQ0MjI1NDUyICswMjAwCi1AQCAtMTk1LDE5ICsxOTUsMTkgQEAgdmFsdWVfc3Vic2NyaXB0 ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKgorLS0tIGdkYi03LjcuOTAuMjAxNDA2Mjcub3JpZy9n ZGIvdmFsYXJpdGguYwkyMDE0LTA3LTA3IDIwOjQ0OjAzLjEzNjM5NDUyNSArMDIwMAorKysrIGdk Yi03LjcuOTAuMjAxNDA2MjcvZ2RiL3ZhbGFyaXRoLmMJMjAxNC0wNy0wNyAyMDo0NTo0MS41ODg1 MzY0NTkgKzAyMDAKK0BAIC0xOTUsMTAgKzE5NSwxNyBAQCB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFs dWUgKHN0cnVjdCB2YWx1ZSAqCiAgICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5 cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7CiAgICBzdHJ1Y3QgdHlwZSAqZWx0X3R5cGUgPSBj aGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKSk7CiAgICB1bnNpZ25l ZCBpbnQgZWx0X3NpemUgPSBUWVBFX0xFTkdUSCAoZWx0X3R5cGUpOwotLSAgdW5zaWduZWQgaW50 IGVsdF9vZmZzID0gZWx0X3NpemUgKiBsb25nZXN0X3RvX2ludCAoaW5kZXggLSBsb3dlcmJvdW5k KTsKKy0gIHVuc2lnbmVkIGludCBlbHRfb2ZmcyA9IGxvbmdlc3RfdG9faW50IChpbmRleCAtIGxv d2VyYm91bmQpOwogKyAgdW5zaWduZWQgaW50IGVsdF9vZmZzOworICAgTE9OR0VTVCBlbHRfc3Ry aWRlID0gVFlQRV9CWVRFX1NUUklERSAoVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKSk7CiAg ICBzdHJ1Y3QgdmFsdWUgKnY7CiAgCiArICBpZiAoVFlQRV9OT1RfQVNTT0NJQVRFRCAoYXJyYXlf dHlwZSkpCkBAIC0xOCw4ICsxOSwxMyBAQCBJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv dmFsYXJpdGguYwogKyAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAoYXJyYXlfdHlwZSkpCiArICAg IGVycm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIp KTsKICsKLSsgIGVsdF9vZmZzID0gZWx0X3NpemUgKiBsb25nZXN0X3RvX2ludCAoaW5kZXggLSBs b3dlcmJvdW5kKTsKKysgIGVsdF9vZmZzID0gbG9uZ2VzdF90b19pbnQgKGluZGV4IC0gbG93ZXJi b3VuZCk7CiArCisgICBpZiAoZWx0X3N0cmlkZSA+IDApCisgICAgIGVsdF9vZmZzICo9IGVsdF9z dHJpZGU7CisgICBlbHNlIGlmIChlbHRfc3RyaWRlIDwgMCkKK0BAIC0yMTIsMTQgKzIxOSw3IEBA IHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZhbHVlICoKKyAKICAgIGlmIChpbmRl eCA8IGxvd2VyYm91bmQgfHwgKCFUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAo YXJyYXlfdHlwZSkKICAJCQkgICAgICYmIGVsdF9vZmZzID49IFRZUEVfTEVOR1RIIChhcnJheV90 eXBlKSkpCiAtICAgIHsKCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTA0b2YyMy5wYXRjaCBi L2dkYi12bGEtaW50ZWwtMDRvZjIzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBmMDAzYWIzLi4wMDAwMDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtMDRvZjIzLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsNjE0ICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSCAwNC8yM10gdmxhOiBt YWtlIGR5bmFtaWMgZm9ydHJhbiBhcnJheXMgZnVuY3Rpb25hbC4KLU1lc3NhZ2UtSWQ6IDwxNDAx ODYxMjY2LTYyNDAtNS1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLVRo aXMgcGF0Y2ggZW5hYmxlcyBHREIgdG8gcHJpbnQgdGhlIHZhbHVlIG9mIGEgZHluYW1pYwotYXJy YXkgKFZMQSkgaWYgYWxsb2NhdGVkL2Fzc29jaWF0ZWQgaW4gZm9ydHJhbi4gSWYgbm90IHRoZQot YWxsb2NhdGlvbiBzdGF0dXMgd2lsbCBiZSBwcmludGVkIHRvIHRoZSBjb21tYW5kIGxpbmUuCi0K LShnZGIpIHAgdmxhX25vdF9hbGxvY2F0ZWQKLSQxID0gPG5vdCBhbGxvY2F0ZWQ+Ci0KLShnZGIp IHAgdmxhX2FsbG9jYXRlZAotJDEgPSAoMSwgMiwgMykKLQotKGdkYikgcCB2bGFfbm90X2Fzc29j aWF0ZWQKLSQxID0gPG5vdCBhc3NvY2lhdGVkPgotCi0oZ2RiKSBwIHZsYV9hc3NvY2lhdGVkCi0k MSA9ICgzLCAyLCAxKQotCi1UaGUgcGF0Y2ggY292ZXJzIHZhcmlvdXMgbG9jYXRpb25zIHdoZXJl IHRoZSBhbGxvY2F0aW9uLwotYXNzb2NpYXRpb24gc3RhdHVzIG1ha2VzIHNlbnNlIHRvIHByaW50 LgotCi0yMDE0LTA1LTI4ICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLSAg ICAgICAgICAgIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgotCi0J KiBkd2FyZjJsb2MuYyAoZHdhcmYyX2FkZHJlc3NfZGF0YV92YWxpZCk6IE5ldwotCWZ1bmN0aW9u LgotCSogZHdhcmYybG9jLmggKGR3YXJmMl9hZGRyZXNzX2RhdGFfdmFsaWQpOiBOZXcKLQlmdW5j dGlvbi4KLQkqIGYtdHlwZXByaW50LmMgKGZfcHJpbnRfdHlwZSk6IFByaW50IGFsbG9jYXRpb24v Ci0JYXNzb2NpYXRpb24gc3RhdHVzLgotCShmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXgpOiBQ cmludCBhbGxvY2F0aW9uLwotCWFzc29jaWF0aW9uIHN0YXR1cyBmb3IgJi1vcGVyYXRvciB1c2Fn ZXMuCi0JKiBnZGJ0eXBlcy5jIChjcmVhdGVfYXJyYXlfdHlwZV93aXRoX3N0cmlkZSk6IEFkZAot CXF1ZXJ5IGZvciB2YWxpZCBkYXRhIGxvY2F0aW9uLgotCShpc19keW5hbWljX3R5cGUpOiBFeHRl bmQgZHluYW1pYyB0eXBlIGRldGVjdGlvbgotCXdpdGggYWxsb2NhdGVkL2Fzc29jaWF0ZWQuIEFk ZCB0eXBlIGRldGVjdGlvbiBmb3IKLQlmaWVsZHMuCi0JKHJlc29sdmVfZHluYW1pY19yYW5nZSk6 IENvcHkgdHlwZSBiZWZvcmUgcmVzb2x2aW5nCi0JaXQgYXMgZHluYW1pYyBhdHRyaWJ1dGVzIG5l ZWQgdG8gYmUgcHJlc2VydmVkLgotCShyZXNvbHZlX2R5bmFtaWNfYXJyYXkpOiBDb3B5IHR5cGUg YmVmb3JlIHJlc29sdmluZwotCWl0IGFzIGR5bmFtaWMgYXR0cmlidXRlcyBuZWVkIHRvIGJlIHBy ZXNlcnZlZC4gQWRkCi0JcmVzb2x2aW5nIG9mIGFsbG9jYXRlZC9hc3NvY2lhdGVkIGF0dHJpYnV0 ZXMuCi0JKHJlc29sdmVfZHluYW1pY190eXBlKTogQWRkIGNhbGwgdG8gbmVzdGVkCi0JdHlwZSBy ZXNvbHZpbmcuCi0JKGNvcHlfdHlwZV9yZWN1cnNpdmUpOiBBZGQgYWxsb2NhdGVkL2Fzc29jaWF0 ZWQKLQlhdHRyaWJ1dGVzIHRvIGJlIGNvcGllZC4KLQkoY29weV90eXBlKTogQ29weSBhbGxvY2F0 ZWQvYXNzb2NpYXRlZC9kYXRhX2xvY2F0aW9uCi0JYXMgd2VsbCBhcyB0aGUgZmllbGRzIHN0cnVj dHVyZSBpZiBhdmFpbGFibGUuCi0JKHJlc29sdmVfZHluYW1pY19jb21wb3VuZCk6IE5ldyBmdW5j dGlvbi4KLQkqIHZhbGFyaXRoLmMgKHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSk6IFByaW50IGFs bG9jYXRlZC8KLQlhc3NvY2lhdGVkIHN0YXR1cyB3aGVuIGluZGV4aW5nIGEgVkxBLgotCSogdmFs cHJpbnQuYyAodmFscHJpbnRfY2hlY2tfdmFsaWRpdHkpOiBQcmludCBhbGxvY2F0ZWQvCi0JYXNz b2NpYXRlZCBzdGF0dXMuCi0JKHZhbF9wcmludF9ub3RfYWxsb2NhdGVkKTogTmV3IGZ1bmN0aW9u LgotCSh2YWxfcHJpbnRfbm90X2Fzc29jaWF0ZWQpOiBOZXcgZnVuY3Rpb24uCi0JKiB2YWxwcmlu dC5oICh2YWxfcHJpbnRfbm90X2FsbG9jYXRlZCk6IE5ldyBmdW5jdGlvbi4KLQkodmFsX3ByaW50 X25vdF9hc3NvY2lhdGVkKTogTmV3IGZ1bmN0aW9uLgotCSogdmFsdWUuYyAoc2V0X3ZhbHVlX2Nv bXBvbmVudF9sb2NhdGlvbik6IEFkanVzdCB0aGUgdmFsdWUKLQlhZGRyZXNzIGZvciBzaW5nbGUg dmFsdWUgcHJpbnRzLgotCi1DaGFuZ2UtSWQ6IElkZmI0NGM4YTZiMzgwMDhmOGUyYzg0Y2IwZmRi MTM3MjllYzE2MGY0Ci0KLVNpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxrZXZlbi5ib2VsbEBp bnRlbC5jb20+Ci0tLS0KLSBnZGIvZHdhcmYybG9jLmMgICB8ICAgMTQgKysrKysKLSBnZGIvZHdh cmYybG9jLmggICB8ICAgIDYgKysKLSBnZGIvZi10eXBlcHJpbnQuYyB8ICAgNjIgKysrKysrKysr KysrKy0tLS0tLS0KLSBnZGIvZ2RidHlwZXMuYyAgICB8ICAxNjUgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSBnZGIvdmFsYXJpdGguYyAgICB8 ICAgIDkgKystCi0gZ2RiL3ZhbHByaW50LmMgICAgfCAgIDQwICsrKysrKysrKysrKysKLSBnZGIv dmFscHJpbnQuaCAgICB8ICAgIDQgKysKLSBnZGIvdmFsdWUuYyAgICAgICB8ICAgMjAgKysrKysr KwotIDggZmlsZXMgY2hhbmdlZCwgMjkyIGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQot Ci1JbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMmxvYy5jCTIwMTQtMDYtMTQg MTU6MTI6NDMuNzk3OTk2ODg1ICswMjAwCi0rKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdh cmYybG9jLmMJMjAxNC0wNi0xNCAxNToxMjo0NS40ODU5OTgwNDkgKzAyMDAKLUBAIC0yNTY5LDYg KzI1NjksMjAgQEAgZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZAotICAg cmV0dXJuIDA7Ci0gfQotIAotKy8qIFNlZSBkd2FyZjJsb2MuaC4gICovCi0rCi0raW50Ci0rZHdh cmYyX2FkZHJlc3NfZGF0YV92YWxpZCAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpCi0rewotKyAg aWYgKFRZUEVfTk9UX0FTU09DSUFURUQgKHR5cGUpKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlm IChUWVBFX05PVF9BTExPQ0FURUQgKHR5cGUpKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIHJldHVy biAxOwotK30KLSsKLSAMCi0gLyogSGVscGVyIGZ1bmN0aW9ucyBhbmQgYmF0b24gZm9yIGR3YXJm Ml9sb2NfZGVzY19uZWVkc19mcmFtZS4gICovCi0gCi1JbmRleDogZ2RiLTcuNy45MC4yMDE0MDYx My9nZGIvZHdhcmYybG9jLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9y aWcvZ2RiL2R3YXJmMmxvYy5oCTIwMTQtMDYtMTQgMTU6MTI6NDMuNzk3OTk2ODg1ICswMjAwCi0r KysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmgJMjAxNC0wNi0xNCAxNToxMjo0 NS40ODY5OTgwNjQgKzAyMDAKLUBAIC0xMDIsNiArMTAyLDEyIEBAIGludCBkd2FyZjJfZXZhbHVh dGVfcHJvcGVydHkgKGNvbnN0IHN0cnUKLSBDT1JFX0FERFIgZHdhcmYyX3JlYWRfYWRkcl9pbmRl eCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAotIAkJCQkgIHVuc2lnbmVkIGlu dCBhZGRyX2luZGV4KTsKLSAKLSsvKiBDaGVja3MgaWYgYSBkd2FyZiBsb2NhdGlvbiBkZWZpbml0 aW9uIGlzIHZhbGlkLgotKyAgIFJldHVybnMgMSBpZiB2YWxpZDsgMCBvdGhlcndpc2UuICAqLwot KwotK2V4dGVybiBpbnQgZHdhcmYyX2FkZHJlc3NfZGF0YV92YWxpZCAoY29uc3Qgc3RydWN0IHR5 cGUgKnR5cGUpOwotKwotKwotIC8qIFRoZSBzeW1ib2wgbG9jYXRpb24gYmF0b24gdHlwZXMgdXNl ZCBieSB0aGUgRFdBUkYtMiByZWFkZXIgKGkuZS4KLSAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04g Zm9yIGEgTE9DX0NPTVBVVEVEIHN5bWJvbCkuICAic3RydWN0Ci0gICAgZHdhcmYyX2xvY2V4cHJf YmF0b24iIGlzIGZvciBhIHN5bWJvbCB3aXRoIGEgc2luZ2xlIGxvY2F0aW9uCi1JbmRleDogZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvZi10eXBlcHJpbnQuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZi10eXBlcHJpbnQuYwkyMDE0LTA2LTE0IDE1OjEyOjQz Ljc5ODk5Njg4NiArMDIwMAotKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2YtdHlwZXByaW50 LmMJMjAxNC0wNi0xNCAxNToxMjo0NS40ODY5OTgwNjQgKzAyMDAKLUBAIC0zMCw2ICszMCw3IEBA Ci0gI2luY2x1ZGUgImdkYmNvcmUuaCIKLSAjaW5jbHVkZSAidGFyZ2V0LmgiCi0gI2luY2x1ZGUg ImYtbGFuZy5oIgotKyNpbmNsdWRlICJ2YWxwcmludC5oIgotIAotICNpbmNsdWRlIDxzdHJpbmcu aD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLUBAIC01Niw2ICs1NywxNyBAQCBmX3ByaW50X3R5cGUg KHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBjCi0gICBlbnVtIHR5cGVfY29kZSBjb2RlOwotICAg aW50IGRlbWFuZ2xlZF9hcmdzOwotIAotKyAgaWYgKFRZUEVfTk9UX0FTU09DSUFURUQgKHR5cGUp KQotKyAgICB7Ci0rICAgICAgdmFsX3ByaW50X25vdF9hc3NvY2lhdGVkIChzdHJlYW0pOwotKyAg ICAgIHJldHVybjsKLSsgICAgfQotKyAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAodHlwZSkpCi0r ICAgIHsKLSsgICAgICB2YWxfcHJpbnRfbm90X2FsbG9jYXRlZCAoc3RyZWFtKTsKLSsgICAgICBy ZXR1cm47Ci0rICAgIH0KLSsKLSAgIGZfdHlwZV9wcmludF9iYXNlICh0eXBlLCBzdHJlYW0sIHNo b3csIGxldmVsKTsKLSAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOwotICAgaWYgKCh2YXJzdHJp bmcgIT0gTlVMTCAmJiAqdmFyc3RyaW5nICE9ICdcMCcpCi1AQCAtMTcwLDI4ICsxODIsMzYgQEAg Zl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZQotICAgICAgIGlmIChhcnJh eXByaW50X3JlY3Vyc2VfbGV2ZWwgPT0gMSkKLSAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAi KCIpOwotIAotLSAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSA9 PSBUWVBFX0NPREVfQVJSQVkpCi0tCWZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9U QVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCwgMCwKLS0JCQkJICAgICBhcnJheXByaW50 X3JlY3Vyc2VfbGV2ZWwpOwotLQotLSAgICAgIGxvd2VyX2JvdW5kID0gZjc3X2dldF9sb3dlcmJv dW5kICh0eXBlKTsKLS0gICAgICBpZiAobG93ZXJfYm91bmQgIT0gMSkJLyogTm90IHRoZSBkZWZh dWx0LiAgKi8KLS0JZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQ6IiwgbG93ZXJfYm91bmQp OwotLQotLSAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0LCBpZiB3ZSBoYXZlIGFuIGFzc3VtZWQgc2l6 ZSBhcnJheSwgd2UKLS0gICAgICAgICBwcmludCBvdXQgYSB3YXJuaW5nIGFuZCBwcmludCB0aGUg dXBwZXJib3VuZCBhcyAnKicuICAqLwotLQotLSAgICAgIGlmIChUWVBFX0FSUkFZX1VQUEVSX0JP VU5EX0lTX1VOREVGSU5FRCAodHlwZSkpCi0tCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIioi KTsKLSsgICAgICBpZiAoVFlQRV9OT1RfQVNTT0NJQVRFRCAodHlwZSkpCi0rICAgICAgICB2YWxf cHJpbnRfbm90X2Fzc29jaWF0ZWQgKHN0cmVhbSk7Ci0rICAgICAgZWxzZSBpZiAoVFlQRV9OT1Rf QUxMT0NBVEVEICh0eXBlKSkKLSsgICAgICAgIHZhbF9wcmludF9ub3RfYWxsb2NhdGVkIChzdHJl YW0pOwotICAgICAgIGVsc2UKLS0JewotLQkgIHVwcGVyX2JvdW5kID0gZjc3X2dldF91cHBlcmJv dW5kICh0eXBlKTsKLS0JICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZCIsIHVwcGVyX2Jv dW5kKTsKLS0JfQotLQotLSAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpKSAhPSBUWVBFX0NPREVfQVJSQVkpCi0tCWZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAo VFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCwgMCwKLS0JCQkJICAgICBhcnJh eXByaW50X3JlY3Vyc2VfbGV2ZWwpOwotKyAgICAgICAgewotKwotKyAgICAgICAgICBpZiAoVFlQ RV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgPT0gVFlQRV9DT0RFX0FSUkFZKQotKyAg ICAgICAgICAgIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSksIHN0cmVhbSwgMCwgMCwgMCwKLSsgICAgICAgICAgICAgICAgIGFycmF5cHJpbnRfcmVj dXJzZV9sZXZlbCk7Ci0rCi0rICAgICAgICAgIGxvd2VyX2JvdW5kID0gZjc3X2dldF9sb3dlcmJv dW5kICh0eXBlKTsKLSsgICAgICAgICAgaWYgKGxvd2VyX2JvdW5kICE9IDEpCS8qIE5vdCB0aGUg ZGVmYXVsdC4gICovCi0rICAgICAgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQ6 IiwgbG93ZXJfYm91bmQpOwotKwotKyAgICAgICAgICAvKiBNYWtlIHN1cmUgdGhhdCwgaWYgd2Ug aGF2ZSBhbiBhc3N1bWVkIHNpemUgYXJyYXksIHdlCi0rICAgICAgICAgICAgIHByaW50IG91dCBh IHdhcm5pbmcgYW5kIHByaW50IHRoZSB1cHBlcmJvdW5kIGFzICcqJy4gICovCi0rCi0rICAgICAg ICAgIGlmIChUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAodHlwZSkpCi0rICAg ICAgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKiIpOwotKyAgICAgICAgICBlbHNl Ci0rICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgdXBwZXJfYm91bmQgPSBmNzdfZ2V0X3Vw cGVyYm91bmQgKHR5cGUpOwotKyAgICAgICAgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt LCAiJWQiLCB1cHBlcl9ib3VuZCk7Ci0rICAgICAgICAgICAgfQotKwotKyAgICAgICAgICBpZiAo VFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgIT0gVFlQRV9DT0RFX0FSUkFZKQot KyAgICAgICAgICAgIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9UQVJHRVRfVFlQ RSAodHlwZSksIHN0cmVhbSwgMCwgMCwgMCwKLSsgICAgICAgICAgICAgICAgIGFycmF5cHJpbnRf cmVjdXJzZV9sZXZlbCk7Ci0rICAgICAgfQotICAgICAgIGlmIChhcnJheXByaW50X3JlY3Vyc2Vf bGV2ZWwgPT0gMSkKLSAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSIpOwotICAgICAgIGVs c2UKLUluZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9nZGJ0eXBlcy5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9nZGJ0eXBlcy5jCTIwMTQtMDYtMTQg MTU6MTI6NDMuODAxOTk2ODg4ICswMjAwCi0rKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZ2Ri dHlwZXMuYwkyMDE0LTA2LTE0IDE1OjE0OjM0LjgzNzEwMjM2OSArMDIwMAotQEAgLTEwMDMsNyAr MTAwMyw4IEBAIGNyZWF0ZV9hcnJheV90eXBlX3dpdGhfc3RyaWRlIChzdHJ1Y3QgdHkKLSAKLSAg IFRZUEVfQ09ERSAocmVzdWx0X3R5cGUpID0gVFlQRV9DT0RFX0FSUkFZOwotICAgVFlQRV9UQVJH RVRfVFlQRSAocmVzdWx0X3R5cGUpID0gZWxlbWVudF90eXBlOwotLSAgaWYgKGhhc19zdGF0aWNf cmFuZ2UgKFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSkpKQotKyAgaWYgKGhhc19zdGF0aWNf cmFuZ2UgKFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSkpCi0rICAgICAgJiYgZHdhcmYyX2Fk ZHJlc3NfZGF0YV92YWxpZCAocmVzdWx0X3R5cGUpKQotICAgICB7Ci0gICAgICAgTE9OR0VTVCBs b3dfYm91bmQsIGhpZ2hfYm91bmQ7Ci0gCi1AQCAtMTYxNiwxMSArMTYxNywzMCBAQCBzdHViX25v bmFtZV9jb21wbGFpbnQgKHZvaWQpCi0gaW50Ci0gaXNfZHluYW1pY190eXBlIChzdHJ1Y3QgdHlw ZSAqdHlwZSkKLSB7Ci0rICBpbnQgaW5kZXg7Ci0rCi0rICBpZiAoIXR5cGUpCi0rICAgIHJldHVy biAwOwotKwotICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOwotIAotICAgaWYgKFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRikKLSAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYg KFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLSAKLSsgIGlmIChUWVBFX0FTU09DSUFURURfUFJP UCAodHlwZSkpCi0rICAgIHJldHVybiAxOwotKwotKyAgaWYgKFRZUEVfQUxMT0NBVEVEX1BST1Ag KHR5cGUpKQotKyAgICByZXR1cm4gMTsKLSsKLSsgIC8qIFNjYW4gZmllbGQgdHlwZXMgaW4gdGhl IEZvcnRyYW4gY2FzZSBmb3IgbmVzdGVkIGR5bmFtaWMgdHlwZXMuCi0rICAgICBUaGlzIHdpbGwg YmUgZG9uZSBvbmx5IGZvciBGb3J0cmFuIGFzIGluIHRoZSBDKysgY2FzZSBhbiBlbmRsZXNzIHJl Y3Vyc2lvbgotKyAgICAgY2FuIG9jY3VyIGluIHRoZSBhcmVhIG9mIGNsYXNzZXMuICAqLwotKyAg aWYgKGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlID09IGxhbmd1YWdlX2ZvcnRyYW4pCi0r ICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IFRZUEVfTkZJRUxEUyAodHlwZSk7IGluZGV4Kysp Ci0rICAgICAgaWYgKGlzX2R5bmFtaWNfdHlwZSAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpbmRl eCkpKQotKyAgICAgICAgcmV0dXJuIDE7Ci0rCi0gICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkp Ci0gICAgIHsKLSAgICAgY2FzZSBUWVBFX0NPREVfUkFOR0U6Ci1AQCAtMTY2OSw2ICsxNjg5LDcg QEAgcmVzb2x2ZV9keW5hbWljX3JhbmdlIChzdHJ1Y3QgdHlwZSAqZHluXwotICAgY29uc3Qgc3Ry dWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKLSAgIGNvbnN0IHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9i YXRvbiAqYmF0b247Ci0gICBzdHJ1Y3QgZHluYW1pY19wcm9wIGxvd19ib3VuZCwgaGlnaF9ib3Vu ZDsKLSsgIHN0cnVjdCB0eXBlICpyYW5nZV9jb3B5ID0gY29weV90eXBlIChkeW5fcmFuZ2VfdHlw ZSk7Ci0gCi0gICBnZGJfYXNzZXJ0IChUWVBFX0NPREUgKGR5bl9yYW5nZV90eXBlKSA9PSBUWVBF X0NPREVfUkFOR0UpOwotIAotQEAgLTE3MDAsOCArMTcyMSw4IEBAIHJlc29sdmVfZHluYW1pY19y YW5nZSAoc3RydWN0IHR5cGUgKmR5bl8KLSAgICAgICBoaWdoX2JvdW5kLmRhdGEuY29uc3RfdmFs ID0gMDsKLSAgICAgfQotIAotLSAgc3RhdGljX3JhbmdlX3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlw ZSAoY29weV90eXBlIChkeW5fcmFuZ2VfdHlwZSksCi0tCQkJCQkgVFlQRV9UQVJHRVRfVFlQRSAo ZHluX3JhbmdlX3R5cGUpLAotKyAgc3RhdGljX3JhbmdlX3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlw ZSAocmFuZ2VfY29weSwKLSsJCQkJCSBUWVBFX1RBUkdFVF9UWVBFIChyYW5nZV9jb3B5KSwKLSAJ CQkJCSAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCk7Ci0gICBUWVBFX1JBTkdFX0RBVEEgKHN0YXRp Y19yYW5nZV90eXBlKS0+ZmxhZ19ib3VuZF9ldmFsdWF0ZWQgPSAxOwotICAgcmV0dXJuIHN0YXRp Y19yYW5nZV90eXBlOwotQEAgLTE3MTgsNiArMTczOSw4IEBAIHJlc29sdmVfZHluYW1pY19hcnJh eSAoc3RydWN0IHR5cGUgKnR5cGUKLSAgIHN0cnVjdCB0eXBlICplbHRfdHlwZTsKLSAgIHN0cnVj dCB0eXBlICpyYW5nZV90eXBlOwotICAgc3RydWN0IHR5cGUgKmFyeV9kaW07Ci0rICBzdHJ1Y3Qg ZHluYW1pY19wcm9wICpwcm9wOwotKyAgc3RydWN0IHR5cGUgKmNvcHkgPSBjb3B5X3R5cGUgKHR5 cGUpOwotIAotICAgZ2RiX2Fzc2VydCAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJS QVkpOwotIAotQEAgLTE3MjUsMTggKzE3NDgsOTMgQEAgcmVzb2x2ZV9keW5hbWljX2FycmF5IChz dHJ1Y3QgdHlwZSAqdHlwZQotICAgcmFuZ2VfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfSU5E RVhfVFlQRSAoZWx0X3R5cGUpKTsKLSAgIHJhbmdlX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfcmFu Z2UgKHJhbmdlX3R5cGUsIGFkZHIpOwotIAotKyAgcHJvcCA9IFRZUEVfQUxMT0NBVEVEX1BST1Ag KHR5cGUpOwotKyAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgYWRkciwgJnZh bHVlKSkKLSsgICAgewotKyAgICAgIFRZUEVfQUxMT0NBVEVEX1BST1AgKGNvcHkpLT5raW5kID0g UFJPUF9DT05TVDsKLSsgICAgICBUWVBFX0FMTE9DQVRFRF9QUk9QIChjb3B5KS0+ZGF0YS5jb25z dF92YWwgPSB2YWx1ZTsKLSsgICAgfQotKwotKyAgcHJvcCA9IFRZUEVfQVNTT0NJQVRFRF9QUk9Q ICh0eXBlKTsKLSsgIGlmIChkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKHByb3AsIGFkZHIsICZ2 YWx1ZSkpCi0rICAgIHsKLSsgICAgICBUWVBFX0FTU09DSUFURURfUFJPUCAoY29weSktPmtpbmQg PSBQUk9QX0NPTlNUOwotKyAgICAgIFRZUEVfQVNTT0NJQVRFRF9QUk9QIChjb3B5KS0+ZGF0YS5j b25zdF92YWwgPSB2YWx1ZTsKLSsgICAgfQotKwotICAgYXJ5X2RpbSA9IGNoZWNrX3R5cGVkZWYg KFRZUEVfVEFSR0VUX1RZUEUgKGVsdF90eXBlKSk7Ci0gCi0gICBpZiAoYXJ5X2RpbSAhPSBOVUxM ICYmIFRZUEVfQ09ERSAoYXJ5X2RpbSkgPT0gVFlQRV9DT0RFX0FSUkFZKQotLSAgICBlbHRfdHlw ZSA9IHJlc29sdmVfZHluYW1pY19hcnJheSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIGFkZHIp OwotKyAgICBlbHRfdHlwZSA9IHJlc29sdmVfZHluYW1pY19hcnJheSAoVFlQRV9UQVJHRVRfVFlQ RSAoY29weSksIGFkZHIpOwotICAgZWxzZQotICAgICBlbHRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpOwotIAotLSAgcmV0dXJuIGNyZWF0ZV9hcnJheV90eXBlIChjb3B5X3R5cGUgKHR5 cGUpLAotKyAgcmV0dXJuIGNyZWF0ZV9hcnJheV90eXBlIChjb3B5LAotIAkJCSAgICBlbHRfdHlw ZSwKLSAJCQkgICAgcmFuZ2VfdHlwZSk7Ci0gfQotIAotKy8qIFJlc29sdmVzIGR5bmFtaWMgY29t cG91bmQgdHlwZXMsIGUuZy4gU1RSVUNUUydzIHRvIHN0YXRpYyBvbmVzLgotKyAgIEFERFJFU1Mg aXMgbmVlZGVkIHRvIHJlc29sdmUgdGhlIGNvbXBvdW5kIHR5cGUgZGF0YSBsb2NhdGlvbi4gICov Ci0rCi0rc3RhdGljIHN0cnVjdCB0eXBlICoKLStyZXNvbHZlX2R5bmFtaWNfY29tcG91bmQgKHN0 cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcikKLSt7Ci0rICBzdHJ1Y3QgdHlwZSAqY3Vy X3R5cGUsICpwcmV2X3R5cGUsICpjb3B5OwotKyAgaW50IGluZGV4LCBkZXB0aCA9IDA7Ci0rCi0r ICBjdXJfdHlwZSA9IHR5cGU7Ci0rICBwcmV2X3R5cGUgPSBjdXJfdHlwZTsKLSsgIHdoaWxlIChj dXJfdHlwZSkKLSsgICAgewotKyAgICAgIHN3aXRjaCAoVFlQRV9DT0RFIChjdXJfdHlwZSkpCi0r ICAgICAgICB7Ci0rICAgICAgICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoKLSsgICAgICAgICAg ICB7Ci0rICAgICAgICAgICAgICBjb3B5ID0gY29weV90eXBlIChjdXJfdHlwZSk7Ci0rICAgICAg ICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBUWVBFX05GSUVMRFMgKGNvcHkpOyBpbmRl eCsrKQotKyAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgc3RydWN0IHR5cGUg KmluZGV4X3R5cGUgPSBUWVBFX0ZJRUxEX1RZUEUgKGNvcHksIGluZGV4KTsKLSsKLSsgICAgICAg ICAgICAgICAgICBpZiAoaW5kZXhfdHlwZSA9PSBOVUxMKQotKyAgICAgICAgICAgICAgICAgICAg Y29udGludWU7Ci0rCi0rICAgICAgICAgICAgICAgICAgaWYgKFRZUEVfQ09ERSAoaW5kZXhfdHlw ZSkgPT0gVFlQRV9DT0RFX0FSUkFZCi0rICAgICAgICAgICAgICAgICAgICAgIHx8IFRZUEVfQ09E RSAoaW5kZXhfdHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVDVCkKLSsgICAgICAgICAgICAgICAgICAg IHsKLSsgICAgICAgICAgICAgICAgICAgICAgaWYgKFRZUEVfQ09ERSAoaW5kZXhfdHlwZSkgIT0g VFlQRV9DT0RFX1JBTkdFKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIgKz0KLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUWVBFX0ZJRUxEX0JJVFBPUyAoY29weSwgaW5k ZXgpIC8gOCk7Ci0rCi0rICAgICAgICAgICAgICAgICAgICAgIFRZUEVfRklFTERfVFlQRSAoY29w eSwgaW5kZXgpID0KLSsgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlX2R5bmFtaWNfdHlw ZSAoVFlQRV9GSUVMRF9UWVBFIChjb3B5LCBpbmRleCksCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYWRkcik7Ci0rICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAg IH0KLSsKLSsgICAgICAgICAgICAgIC8qIElmIGEgc3RydWN0IHR5cGUgd2lsbCBiZSByZXNvbHZl ZCBhcyB0aGUgZmlyc3QgdHlwZSwgd2UgbmVlZAotKyAgICAgICAgICAgICAgICAgdG8gYXNzaWdu IGl0IGJhY2sgdGhlIHJlc29sdmVkX3R5cGUuIEluIHRoZSBvdGhlciBjYXNlIGl0IGNhbgotKyAg ICAgICAgICAgICAgICAgYmUgdGhhdCB3ZSBoYXZlIGEgc3RydWN0LCB3aGljaCBpcyBuZXN0ZWQg aW4gYW5vdGhlciB0eXBlLgotKyAgICAgICAgICAgICAgICAgVGhlcmVmb3JlIHdlIG5lZWQgdG8g cHJlc2VydmUgdGhlIHByZXZpb3VzIHR5cGUsIHRvIGFzc2lnbiB0aGUKLSsgICAgICAgICAgICAg ICAgIG5ldyByZXNvbHZlZCB0eXBlIGFzIHRoZSBwcmV2aW91cycgdGFyZ2V0IHR5cGUuICAqLwot KyAgICAgICAgICAgICAgaWYgKGRlcHRoID09IDApCi0rICAgICAgICAgICAgICAgIHR5cGUgPSBj b3B5OwotKyAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICBUWVBFX1RBUkdFVF9U WVBFIChwcmV2X3R5cGUpID0gY29weTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgIGJyZWFr OwotKyAgICAgICAgfQotKwotKyAgICAgIC8qIFN0b3JlIHRoZSBwcmV2aW91cyB0eXBlLCBpbiBv cmRlciB0byBhc3NpZ24gcmVzb2x2ZWQgdHlwZXMgYmFjayB0bwotKyAgICAgICAgdGhlIHJpZ2h0 IHRhcmdldCB0eXBlLiAgKi8KLSsgICAgICBwcmV2X3R5cGUgPSBjdXJfdHlwZTsKLSsgICAgICBj dXJfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGN1cl90eXBlKTsKLSsgICAgICBkZXB0aCsrOwot KyAgICB9OwotKwotKyAgICByZXR1cm4gdHlwZTsKLSt9Ci0rCi0gLyogUmVzb2x2ZSBkeW5hbWlj IGJvdW5kcyBvZiBtZW1iZXJzIG9mIHRoZSB1bmlvbiBUWVBFIHRvIHN0YXRpYwotICAgIGJvdW5k cy4gICovCi0gCi1AQCAtMTgzNiw3ICsxOTM0LDcgQEAgcmVzb2x2ZV9keW5hbWljX3R5cGUgKHN0 cnVjdCB0eXBlICp0eXBlLAotICAgc3RydWN0IHR5cGUgKnJlYWxfdHlwZSA9IGNoZWNrX3R5cGVk ZWYgKHR5cGUpOwotICAgc3RydWN0IHR5cGUgKnJlc29sdmVkX3R5cGUgPSB0eXBlOwotICAgY29u c3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKLS0gIENPUkVfQUREUiB2YWx1ZTsKLSsgIENP UkVfQUREUiB2YWx1ZSwgYWRqdXN0ZWRfYWRkcmVzcyA9IGFkZHI7Ci0gCi0gICBpZiAoIWlzX2R5 bmFtaWNfdHlwZSAocmVhbF90eXBlKSkKLSAgICAgcmV0dXJuIHR5cGU7Ci1AQCAtMTg4MiwxMiAr MTk4MCwxNSBAQCByZXNvbHZlX2R5bmFtaWNfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsCi0gICBw cm9wID0gVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKTsKLSAgIGlmIChkd2FyZjJfZXZhbHVhdGVf cHJvcGVydHkgKHByb3AsIGFkZHIsICZ2YWx1ZSkpCi0gICAgIHsKLSsgICAgICBhZGp1c3RlZF9h ZGRyZXNzID0gdmFsdWU7Ci0gICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIgKHR5cGUpID0g dmFsdWU7Ci0gICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQgKHR5cGUpID0gUFJPUF9DT05T VDsKLSAgICAgfQotICAgZWxzZQotICAgICBUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUpID0gTlVM TDsKLSAKLSsgIHJlc29sdmVkX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfY29tcG91bmQgKHR5cGUs IGFkanVzdGVkX2FkZHJlc3MpOwotKwotICAgcmV0dXJuIHJlc29sdmVkX3R5cGU7Ci0gfQotIAot QEAgLTQxMDQsNiArNDIwNSwyMCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqCi0gICAgICAgKlRZUEVfREFUQV9MT0NBVElPTiAobmV3X3R5cGUpID0gKlRZUEVfREFU QV9MT0NBVElPTiAodHlwZSk7Ci0gICAgIH0KLSAKLSsgIC8qIENvcHkgYWxsb2NhdGVkIGluZm9y bWF0aW9uLiAgKi8KLSsgIGlmIChUWVBFX0FMTE9DQVRFRF9QUk9QICh0eXBlKSAhPSBOVUxMKQot KyAgICB7Ci0rICAgICAgVFlQRV9BTExPQ0FURURfUFJPUCAobmV3X3R5cGUpID0geG1hbGxvYyAo c2l6ZW9mIChzdHJ1Y3QgZHluYW1pY19wcm9wKSk7Ci0rICAgICAgKlRZUEVfQUxMT0NBVEVEX1BS T1AgKG5ld190eXBlKSA9ICpUWVBFX0FMTE9DQVRFRF9QUk9QICh0eXBlKTsKLSsgICAgfQotKwot KyAgLyogQ29weSBhc3NvY2lhdGVkIGluZm9ybWF0aW9uLiAgKi8KLSsgIGlmIChUWVBFX0FTU09D SUFURURfUFJPUCAodHlwZSkgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIFRZUEVfQVNTT0NJQVRF RF9QUk9QIChuZXdfdHlwZSkgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBkeW5hbWljX3Byb3Ap KTsKLSsgICAgICAqVFlQRV9BU1NPQ0lBVEVEX1BST1AgKG5ld190eXBlKSA9ICpUWVBFX0FTU09D SUFURURfUFJPUCAodHlwZSk7Ci0rICAgIH0KLSsKLSAgIC8qIENvcHkgcG9pbnRlcnMgdG8gb3Ro ZXIgdHlwZXMuICAqLwotICAgaWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKQotICAgICBUWVBF X1RBUkdFVF9UWVBFIChuZXdfdHlwZSkgPSAKLUBAIC00MTUwLDYgKzQyNjUsNDQgQEAgY29weV90 eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAgIG1lbWNweSAoVFlQRV9NQUlOX1RZUEUg KG5ld190eXBlKSwgVFlQRV9NQUlOX1RZUEUgKHR5cGUpLAotIAkgIHNpemVvZiAoc3RydWN0IG1h aW5fdHlwZSkpOwotIAotKyAgaWYgKFRZUEVfQUxMT0NBVEVEX1BST1AgKHR5cGUpKQotKyAgICB7 Ci0rICAgICAgVFlQRV9BTExPQ0FURURfUFJPUCAobmV3X3R5cGUpCi0rICAgICAgICAgICAgICA9 IE9CU1RBQ0tfWkFMTE9DICgmVFlQRV9PV05FUiAodHlwZSkub2JqZmlsZS0+b2JqZmlsZV9vYnN0 YWNrLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGR5bmFtaWNfcHJv cCk7Ci0rICAgICAgbWVtY3B5IChUWVBFX0FMTE9DQVRFRF9QUk9QIChuZXdfdHlwZSksIFRZUEVf QUxMT0NBVEVEX1BST1AgKHR5cGUpLAotKyAgICAgICAgc2l6ZW9mIChzdHJ1Y3QgZHluYW1pY19w cm9wKSk7Ci0rICAgIH0KLSsKLSsgIGlmIChUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSkpCi0r ICAgIHsKLSsgICAgICBUWVBFX0FTU09DSUFURURfUFJPUCAobmV3X3R5cGUpCi0rICAgICAgICAg ICAgICA9IE9CU1RBQ0tfWkFMTE9DICgmVFlQRV9PV05FUiAodHlwZSkub2JqZmlsZS0+b2JqZmls ZV9vYnN0YWNrLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGR5bmFt aWNfcHJvcCk7Ci0rICAgICAgbWVtY3B5IChUWVBFX0FTU09DSUFURURfUFJPUCAobmV3X3R5cGUp LCBUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSksCi0rICAgICAgICBzaXplb2YgKHN0cnVjdCBk eW5hbWljX3Byb3ApKTsKLSsgICAgfQotKwotKyAgaWYgKFRZUEVfREFUQV9MT0NBVElPTiAodHlw ZSkpCi0rICAgIHsKLSsgICAgICBUWVBFX0RBVEFfTE9DQVRJT04gKG5ld190eXBlKQotKyAgICAg ICAgICAgICAgPSBPQlNUQUNLX1pBTExPQyAoJlRZUEVfT1dORVIgKHR5cGUpLm9iamZpbGUtPm9i amZpbGVfb2JzdGFjaywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBk eW5hbWljX3Byb3ApOwotKyAgICAgIG1lbWNweSAoVFlQRV9EQVRBX0xPQ0FUSU9OIChuZXdfdHlw ZSksIFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSksCi0rICAgICAgICBzaXplb2YgKHN0cnVjdCBk eW5hbWljX3Byb3ApKTsKLSsgICAgfQotKwotKyAgaWYgKFRZUEVfTkZJRUxEUyAodHlwZSkpCi0r ICAgIHsKLSsgICAgICBpbnQgbmZpZWxkcyA9IFRZUEVfTkZJRUxEUyAodHlwZSk7Ci0rCi0rICAg ICAgVFlQRV9GSUVMRFMgKG5ld190eXBlKQotKyAgICAgICAgICAgICAgPSBPQlNUQUNLX0NBTExP QyAoJlRZUEVfT1dORVIgKHR5cGUpLm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5maWVsZHMsIHN0cnVjdCBmaWVsZCk7Ci0rICAgICAg bWVtY3B5IChUWVBFX0ZJRUxEUyAobmV3X3R5cGUpLCBUWVBFX0ZJRUxEUyAodHlwZSksCi0rICAg ICAgICBuZmllbGRzICogc2l6ZW9mIChzdHJ1Y3QgZmllbGQpKTsKLSsgICB9Ci0rCi0gICByZXR1 cm4gbmV3X3R5cGU7Ci0gfQotIAwKLUluZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi92YWxh cml0aC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi92YWxh cml0aC5jCTIwMTQtMDYtMTQgMTU6MTI6NDMuODAxOTk2ODg4ICswMjAwCi0rKysgZ2RiLTcuNy45 MC4yMDE0MDYxMy9nZGIvdmFsYXJpdGguYwkyMDE0LTA2LTE0IDE1OjEyOjQ1LjQ4ODk5ODA3NSAr MDIwMAotQEAgLTIwMCw3ICsyMDAsMTQgQEAgdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChzdHJ1 Y3QgdmFsdWUgKgotIAotICAgaWYgKGluZGV4IDwgbG93ZXJib3VuZCB8fCAoIVRZUEVfQVJSQVlf VVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEIChhcnJheV90eXBlKQotIAkJCSAgICAgJiYgZWx0X29m ZnMgPj0gVFlQRV9MRU5HVEggKGFycmF5X3R5cGUpKSkKLS0gICAgZXJyb3IgKF8oIm5vIHN1Y2gg dmVjdG9yIGVsZW1lbnQiKSk7Ci0rICAgIHsKLSsgICAgICBpZiAoVFlQRV9OT1RfQVNTT0NJQVRF RCAoYXJyYXlfdHlwZSkpCi0rICAgICAgICBlcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVu dCBiZWNhdXNlIG5vdCBhc3NvY2lhdGVkIikpOwotKyAgICAgIGVsc2UgaWYgKFRZUEVfTk9UX0FM TE9DQVRFRCAoYXJyYXlfdHlwZSkpCi0rICAgICAgICBlcnJvciAoXygibm8gc3VjaCB2ZWN0b3Ig ZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiKSk7Ci0rICAgICAgZWxzZQotKyAgICAgICAg ZXJyb3IgKF8oIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiKSk7Ci0rICAgIH0KLSAKLSAgIGlmIChW QUxVRV9MVkFMIChhcnJheSkgPT0gbHZhbF9tZW1vcnkgJiYgdmFsdWVfbGF6eSAoYXJyYXkpKQot ICAgICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAoZWx0X3R5cGUpOwotSW5kZXg6IGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL3ZhbHByaW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjkwLjIw MTQwNjEzLm9yaWcvZ2RiL3ZhbHByaW50LmMJMjAxNC0wNi0xNCAxNToxMjo0My44MDI5OTY4ODgg KzAyMDAKLSsrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi92YWxwcmludC5jCTIwMTQtMDYtMTQg MTU6MTI6NDUuNDg4OTk4MDc1ICswMjAwCi1AQCAtMzA3LDYgKzMwNywxOCBAQCB2YWxwcmludF9j aGVja192YWxpZGl0eSAoc3RydWN0IHVpX2ZpbGUKLSB7Ci0gICBDSEVDS19UWVBFREVGICh0eXBl KTsKLSAKLSsgIGlmIChUWVBFX05PVF9BU1NPQ0lBVEVEICh0eXBlKSkKLSsgICAgewotKyAgICAg IHZhbF9wcmludF9ub3RfYXNzb2NpYXRlZCAoc3RyZWFtKTsKLSsgICAgICByZXR1cm4gMDsKLSsg ICAgfQotKwotKyAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAodHlwZSkpCi0rICAgIHsKLSsgICAg ICB2YWxfcHJpbnRfbm90X2FsbG9jYXRlZCAoc3RyZWFtKTsKLSsgICAgICByZXR1cm4gMDsKLSsg ICAgfQotKwotICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1VOSU9OCi0gICAg ICAgJiYgVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfU1RSVUNUCi0gICAgICAgJiYgVFlQ RV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfQVJSQVkpCi1AQCAtMzYyLDYgKzM3NCwxOCBAQCB2 YWxfcHJpbnRfaW52YWxpZF9hZGRyZXNzIChzdHJ1Y3QgdWlfZmlsCi0gICBmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sIF8oIjxpbnZhbGlkIGFkZHJlc3M+IikpOwotIH0KLSAKLSt2b2lkCi0rdmFs X3ByaW50X25vdF9hbGxvY2F0ZWQgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCi0rewotKyAgZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCBfKCI8bm90IGFsbG9jYXRlZD4iKSk7Ci0rfQotKwotK3Zv aWQKLSt2YWxfcHJpbnRfbm90X2Fzc29jaWF0ZWQgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCi0r ewotKyAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCBfKCI8bm90IGFzc29jaWF0ZWQ+IikpOwot K30KLSsKLSAvKiBBIGdlbmVyaWMgdmFsX3ByaW50IHRoYXQgaXMgc3VpdGFibGUgZm9yIHVzZSBi eSBsYW5ndWFnZQotICAgIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgbGFfdmFsX3ByaW50IG1ldGhv ZC4gIFRoaXMgZnVuY3Rpb24gY2FuCi0gICAgaGFuZGxlIG1vc3QgdHlwZSBjb2RlcywgdGhvdWdo IG5vdCBhbGwsIG5vdGFibHkgZXhjZXB0aW9uCi1AQCAtODAzLDEyICs4MjcsMTYgQEAgc3RhdGlj IGludAotIHZhbHVlX2NoZWNrX3ByaW50YWJsZSAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdCB1 aV9maWxlICpzdHJlYW0sCi0gCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlv bnMgKm9wdGlvbnMpCi0gewotKyAgY29uc3Qgc3RydWN0IHR5cGUgKnR5cGU7Ci0rCi0gICBpZiAo dmFsID09IDApCi0gICAgIHsKLSAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sIF8oIjxh ZGRyZXNzIG9mIHZhbHVlIHVua25vd24+IikpOwotICAgICAgIHJldHVybiAwOwotICAgICB9Ci0g Ci0rICB0eXBlID0gdmFsdWVfdHlwZSAodmFsKTsKLSsKLSAgIGlmICh2YWx1ZV9lbnRpcmVseV9v cHRpbWl6ZWRfb3V0ICh2YWwpKQotICAgICB7Ci0gICAgICAgaWYgKG9wdGlvbnMtPnN1bW1hcnkg JiYgIXZhbF9wcmludF9zY2FsYXJfdHlwZV9wICh2YWx1ZV90eXBlICh2YWwpKSkKLUBAIC04MzQs NiArODYyLDE4IEBAIHZhbHVlX2NoZWNrX3ByaW50YWJsZSAoc3RydWN0IHZhbHVlICp2YWwKLSAg ICAgICByZXR1cm4gMDsKLSAgICAgfQotIAotKyAgaWYgKFRZUEVfTk9UX0FTU09DSUFURUQgKHR5 cGUpKQotKyAgICB7Ci0rICAgICAgdmFsX3ByaW50X25vdF9hc3NvY2lhdGVkIChzdHJlYW0pOwot KyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICBpZiAoVFlQRV9OT1RfQUxMT0NBVEVEICh0 eXBlKSkKLSsgICAgewotKyAgICAgIHZhbF9wcmludF9ub3RfYWxsb2NhdGVkIChzdHJlYW0pOwot KyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0gICByZXR1cm4gMTsKLSB9Ci0gCi1JbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFscHJpbnQuaAotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdmFscHJpbnQuaAkyMDE0LTA2LTE0IDE1OjEyOjQzLjgw Mzk5Njg4OSArMDIwMAotKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbHByaW50LmgJMjAx NC0wNi0xNCAxNToxMjo0NS40ODk5OTgwNzMgKzAyMDAKLUBAIC0yMTcsNCArMjE3LDggQEAgZXh0 ZXJuIHZvaWQgb3V0cHV0X2NvbW1hbmRfY29uc3QgKGNvbnN0Ci0gCi0gZXh0ZXJuIGludCB2YWxf cHJpbnRfc2NhbGFyX3R5cGVfcCAoc3RydWN0IHR5cGUgKnR5cGUpOwotIAotK2V4dGVybiB2b2lk IHZhbF9wcmludF9ub3RfYWxsb2NhdGVkIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKTsKLSsKLStl eHRlcm4gdm9pZCB2YWxfcHJpbnRfbm90X2Fzc29jaWF0ZWQgKHN0cnVjdCB1aV9maWxlICpzdHJl YW0pOwotKwotICNlbmRpZgotSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbHVlLmMK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3ZhbHVlLmMJMjAx NC0wNi0xNCAxNToxMjo0My44MDQ5OTY4OTAgKzAyMDAKLSsrKyBnZGItNy43LjkwLjIwMTQwNjEz L2dkYi92YWx1ZS5jCTIwMTQtMDYtMTQgMTU6MTI6NDUuNDkwOTk4MDY5ICswMjAwCi1AQCAtNDMs NiArNDMsNyBAQAotICNpbmNsdWRlICJ0cmFjZXBvaW50LmgiCi0gI2luY2x1ZGUgImNwLWFiaS5o IgotICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKLSsjaW5jbHVkZSAiZHdhcmYybG9jLmgiCi0gCi0g LyogUHJvdG90eXBlcyBmb3IgZXhwb3J0ZWQgZnVuY3Rpb25zLiAgKi8KLSAKLUBAIC0xNjQ2LDYg KzE2NDcsMjUgQEAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbAotICAg ICAgIGlmIChmdW5jcy0+Y29weV9jbG9zdXJlKQotICAgICAgICAgY29tcG9uZW50LT5sb2NhdGlv bi5jb21wdXRlZC5jbG9zdXJlID0gZnVuY3MtPmNvcHlfY2xvc3VyZSAod2hvbGUpOwotICAgICB9 Ci0rCi0rICAvKiBGb3IgZHluYW1pYyB0eXBlcyBjb21wdXRlIHRoZSBhZGRyZXNzIG9mIHRoZSBj b21wb25lbnQgdmFsdWUgbG9jYXRpb24gaW4KLSsgICAgIHN1YiByYW5nZSB0eXBlcyBiYXNlZCBv biB0aGUgbG9jYXRpb24gb2YgdGhlIHN1YiByYW5nZSB0eXBlLCBpZiBub3QgYmVpbmcKLSsgICAg IGFuIGludGVybmFsIEdEQiB2YXJpYWJsZSBvciBwYXJ0cyBvZiBpdC4gICovCi0rICBpZiAoVkFM VUVfTFZBTCAoY29tcG9uZW50KSAhPSBsdmFsX2ludGVybmFsdmFyCi0rICAgICAgJiYgVkFMVUVf TFZBTCAoY29tcG9uZW50KSAhPSBsdmFsX2ludGVybmFsdmFyX2NvbXBvbmVudCkKLSsgICAgewot KyAgICAgIENPUkVfQUREUiBhZGRyOwotKyAgICAgIHN0cnVjdCB0eXBlICp0eXBlID0gdmFsdWVf dHlwZSAod2hvbGUpOwotKwotKyAgICAgIGFkZHIgPSB2YWx1ZV9yYXdfYWRkcmVzcyAoY29tcG9u ZW50KTsKLSsKLSsgICAgICBpZiAoVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKQotKyAgICAgICAg ICAmJiBUWVBFX0RBVEFfTE9DQVRJT05fS0lORCAodHlwZSkgPT0gUFJPUF9DT05TVCkKLSsgICAg ICAgIHsKLSsgICAgICAgICAgYWRkciA9IFRZUEVfREFUQV9MT0NBVElPTl9BRERSICh0eXBlKTsK LSsgICAgICAgICAgc2V0X3ZhbHVlX2FkZHJlc3MgKGNvbXBvbmVudCwgYWRkcik7Ci0rICAgICAg ICB9Ci0rICAgIH0KLSB9Ci0gCi0gDAoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMDVvZjIz LnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0wNW9mMjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDNiMDk5MzcuLjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC0wNW9mMjMucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0ggMDUvMjNd IHZsYTogbWFrZSBmaWVsZCBzZWxlY3Rpb24gd29yayB3aXRoIHZsYQotTWVzc2FnZS1JZDogPDE0 MDE4NjEyNjYtNjI0MC02LWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4KLQot SW4gRm9ydHJhbiB2bGEgYXJlIHBvaW50ZXJzIHRvIGFycmF5cy4gVGh1cyBhCi10eXBlIG9ubHkg Y29udGFpbnMgYSBwb2ludGVyIHRvIHN1Y2ggYXJyYXkgYW5kCi13ZSBuZWVkIHRvIHJlLXJlYWQg dGhlIGZpZWxkIHRvIHJldHJpZXZlIHRoZQotY29ycmVjdCB2bGEuCi0KLW9sZCAod3JvbmcgdmFs dWUpOgotKGdkYikgcCB0eXBlX3ZhciV2bGEoMTQpCi0kMSA9IDEKLQotbmV3IChjb3JyZWN0IHZh bHVlKToKLShnZGIpIHAgdHlwZV92YXIldmxhKDE0KQotJDEgPSA0MgotCi0yMDE0LTA1LTI4ICBT YW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNvbT4KLSAgICAgICAgICAgIEtl dmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotCi0JKiB2YWx1ZS5jICh2YWx1ZV9w cmltaXRpdmVfZmllbGQpOiBSZS1ldmFsdWF0ZQotCWZpZWxkIHZhbHVlIHRvIGdldCB0aGUgYWN0 dWFsIHZhbHVlLgotCi1DaGFuZ2UtSWQ6IEljMjJjMzczMjQ5NjNhY2E1MjBjNTJhODBmYmJkMDA0 MmQxZmRkYzA1Ci0KLVNpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxrZXZlbi5ib2VsbEBpbnRl bC5jb20+Ci0tLS0KLSBnZGIvdmFsdWUuYyB8ICAgMjEgKysrKysrKysrKysrKysrLS0tLS0tCi0g MSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYg LS1naXQgYS9nZGIvdmFsdWUuYyBiL2dkYi92YWx1ZS5jCi1pbmRleCAwODU5M2I2Li4xZjBkOWE0 IDEwMDY0NAotLS0tIGEvZ2RiL3ZhbHVlLmMKLSsrKyBiL2dkYi92YWx1ZS5jCi1AQCAtMjkyOSwx MyArMjkyOSwyMiBAQCB2YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnMSwg aW50IG9mZnNldCwKLSAJdiA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHR5cGUpOwotICAgICAgIGVs c2UKLSAJewotLQkgIHYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7Ci0tCSAgdmFsdWVfY29udGVu dHNfY29weV9yYXcgKHYsIHZhbHVlX2VtYmVkZGVkX29mZnNldCAodiksCi0tCQkJCSAgIGFyZzEs IHZhbHVlX2VtYmVkZGVkX29mZnNldCAoYXJnMSkgKyBvZmZzZXQsCi0tCQkJCSAgIFRZUEVfTEVO R1RIICh0eXBlKSk7Ci0rCSAgaWYgKFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSkKLSsJICAgICAg JiYgVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQgKHR5cGUpID09IFBST1BfQ09OU1QpCi0rCSAgICB2 ID0gdmFsdWVfYXRfbGF6eSAodHlwZSwgdmFsdWVfYWRkcmVzcyAoYXJnMSkgKyBvZmZzZXQpOwot KwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLSsJ ICAgICAgdmFsdWVfY29udGVudHNfY29weV9yYXcgKHYsIHZhbHVlX2VtYmVkZGVkX29mZnNldCAo diksCi0rCQkJCSAgICAgICBhcmcxLCB2YWx1ZV9lbWJlZGRlZF9vZmZzZXQgKGFyZzEpICsgb2Zm c2V0LAotKwkJCQkgICAgICAgVFlQRV9MRU5HVEggKHR5cGUpKTsKLSsJICAgIH0KLSAJfQotLSAg ICAgIHYtPm9mZnNldCA9ICh2YWx1ZV9vZmZzZXQgKGFyZzEpICsgb2Zmc2V0Ci0tCQkgICArIHZh bHVlX2VtYmVkZGVkX29mZnNldCAoYXJnMSkpOwotKwotKyAgICAgIGlmICghVFlQRV9EQVRBX0xP Q0FUSU9OICh0eXBlKQotKyAgICAgICAgICB8fCAhVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQgKHR5 cGUpID09IFBST1BfQ09OU1QpCi0rCXYtPm9mZnNldCA9ICh2YWx1ZV9vZmZzZXQgKGFyZzEpICsg b2Zmc2V0Ci0rCQkgICAgICsgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0IChhcmcxKSk7Ci0gICAgIH0K LSAgIHNldF92YWx1ZV9jb21wb25lbnRfbG9jYXRpb24gKHYsIGFyZzEpOwotICAgVkFMVUVfUkVH TlVNICh2KSA9IFZBTFVFX1JFR05VTSAoYXJnMSk7Ci0tLSAKLTEuNy45LjUKLQoKZGlmZiAtLWdp dCBhL2dkYi12bGEtaW50ZWwtMDZvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0wNm9mMjMucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5YzJkMDUuLjAwMDAwMDAKLS0tIGEv Z2RiLXZsYS1pbnRlbC0wNm9mMjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBA Ci1TdWJqZWN0OiBbUEFUQ0ggMDYvMjNdIHZsYTogcmVjb25zdHJ1Y3QgdmFsdWUgdG8gY29tcHV0 ZSBib3VuZHMgb2YgdGFyZ2V0IHR5cGUKLU1lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtNy1n aXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLVByaW50aW5nIGEgcG9pbnRl ciB0byBhbiBhcnJheSwgZ2RiIHRyaWVzIHRvIHByaW50IHRoZQotdGFyZ2V0IHR5cGUgaW5jbHVk aW5nIGl0cyBib3VuZHMuIFRvIGZvbGxvdyB0aGlzCi1zZW1hbnRpYyB3aXRoIHZsYSwgdGhpcyBw YXRjaCByZS1jb25zdHJ1Y3RzIHRoZSB2YWx1ZSB0bwotcmVzb2x2ZSB0aGUgYm91bmRzIG9mIHRo ZSB0YXJnZXQgdHlwZS4KLQotMjAxNC0wNS0yOCAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFn b3ZpY0BpbnRlbC5jb20+Ci0gICAgICAgICAgICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGlu dGVsLmNvbT4KLQotCSogdHlwZXByaW50LmMgKHdoYXRpc19leHApOiBSZS1jb25zdHJ1Y3QgdmFs dWUgdG8KLQljb21wdXRlIGJvdW5kcyBvZiB0YXJnZXQgdHlwZS4KLQkqIGMtdmFscHJpbnQuYyAo Y192YWx1ZV9wcmludCk6IFJlLWNvbnN0cnVjdCB2YWx1ZQotCXRvIGNvbXB1dGUgYm91bmRzIG9m IHRhcmdldCB0eXBlLgotCi1DaGFuZ2UtSWQ6IElhOGEyNTAyMWM3Y2MyMDY3MTFjYTZmMzU5YWU1 NTY2YTM2N2UzYjNkCi0KLVNpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxrZXZlbi5ib2VsbEBp bnRlbC5jb20+Ci0tLS0KLSBnZGIvYy12YWxwcmludC5jIHwgICAxMSArKysrKysrKysrLQotIGdk Yi90eXBlcHJpbnQuYyAgfCAgICA3ICsrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDE3IGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2dkYi9jLXZhbHByaW50LmMg Yi9nZGIvYy12YWxwcmludC5jCi1pbmRleCBmNDY5NGIwLi44YzQ1Mjc2IDEwMDY0NAotLS0tIGEv Z2RiL2MtdmFscHJpbnQuYwotKysrIGIvZ2RiL2MtdmFscHJpbnQuYwotQEAgLTUzOCw3ICs1Mzgs MTYgQEAgY192YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdCB1aV9maWxlICpz dHJlYW0sCi0gCXsKLSAJICAvKiBub3JtYWwgY2FzZSAqLwotIAkgIGZwcmludGZfZmlsdGVyZWQg KHN0cmVhbSwgIigiKTsKLS0JICB0eXBlX3ByaW50ICh2YWx1ZV90eXBlICh2YWwpLCAiIiwgc3Ry ZWFtLCAtMSk7Ci0rCSAgaWYgKGlzX2R5bmFtaWNfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSkpKQotKwkgICAgewotKwkgICAgICBzdHJ1Y3QgdmFsdWUgKnY7Ci0rCi0rCSAgICAgIHYgPSB2 YWx1ZV9pbmQgKHZhbCk7Ci0rCSAgICAgIHYgPSB2YWx1ZV9hZGRyICh2KTsKLSsJICAgICAgdHlw ZV9wcmludCAodmFsdWVfdHlwZSAodiksICIiLCBzdHJlYW0sIC0xKTsKLSsJICAgIH0KLSsJICBl bHNlCi0rCSAgICB0eXBlX3ByaW50ICh2YWx1ZV90eXBlICh2YWwpLCAiIiwgc3RyZWFtLCAtMSk7 Ci0gCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSAiKTsKLSAJfQotICAgICB9Ci1kaWZm IC0tZ2l0IGEvZ2RiL3R5cGVwcmludC5jIGIvZ2RiL3R5cGVwcmludC5jCi1pbmRleCBiNGFkNDMx Li5iM2M3M2E4IDEwMDY0NAotLS0tIGEvZ2RiL3R5cGVwcmludC5jCi0rKysgYi9nZGIvdHlwZXBy aW50LmMKLUBAIC00NTksNiArNDU5LDEzIEBAIHdoYXRpc19leHAgKGNoYXIgKmV4cCwgaW50IHNo b3cpCi0gCi0gICB0eXBlID0gdmFsdWVfdHlwZSAodmFsKTsKLSAKLSsgIGlmIChUWVBFX0NPREUg KHR5cGUpID09IFRZUEVfQ09ERV9QVFIpCi0rICAgIGlmIChpc19keW5hbWljX3R5cGUgKFRZUEVf VEFSR0VUX1RZUEUgKHR5cGUpKSkKLSsgICAgICB7Ci0rCXZhbCA9IHZhbHVlX2FkZHIgKHZhbHVl X2luZCAodmFsKSk7Ci0rCXR5cGUgPSB2YWx1ZV90eXBlICh2YWwpOwotKyAgICAgIH0KLSsKLSAg IGdldF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsKLSAgIGlmIChvcHRzLm9iamVjdHByaW50 KQotICAgICB7Ci0tLSAKLTEuNy45LjUKLQoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMDdv ZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0wN29mMjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDFlZWViZTIuLjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC0wN29mMjMu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTEgKzAsMCBAQAotU3ViamVjdDogW1BBVENIIDA3 LzIzXSB2bGE6IHVzZSB2YWx1ZSBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIHJhdy1idWZmZXIgbWFu aXB1bGF0aW9uCi1NZXNzYWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQwLTgtZ2l0LXNlbmQtZW1haWwt a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotCi1JbnN0ZWFkIG9mIHByZS1jb21wdXRpbmcgaW5kaWNl cyBpbnRvIGEgZm9ydHJhbiBhcnJheSByZS11c2UKLXRoZSB2YWx1ZV8qIGludGVyZmFjZXMgdG8g c3Vic2NyaXB0IGEgZm9ydHJhbiBhcnJheS4KLQotMjAxNC0wNS0yOCAgU2FuaW1pciBBZ292aWMg IDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+Ci0gICAgICAgICAgICBLZXZlbiBCb2VsbCAgPGtl dmVuLmJvZWxsQGludGVsLmNvbT4KLQotCSogZi12YWxwcmludC5jIChmNzdfY3JlYXRlX2FycmF5 cHJpbnRfb2Zmc2V0X3RibCk6IFJlbW92ZQotCWZ1bmN0aW9uLgotCShGNzdfRElNX1NJWkUsIEY3 N19ESU1fT0ZGU0VUKTogUmVtb3ZlIG1hY3JvLgotCShmNzdfcHJpbnRfYXJyYXlfMSk6IFVzZSB2 YWx1ZV9zdWJzY3JpcHQgdG8gc3Vic2NyaXB0IGEKLQl2YWx1ZSBhcnJheS4KLQkoZjc3X3ByaW50 X2FycmF5KTogUmVtb3ZlIGNhbGwgdG8gZjc3X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90Ymwu Ci0JKGZfdmFsX3ByaW50KTogVXNlIHZhbHVlX2ZpZWxkIHRvIGNvbnN0cnVjdCBhIGZpZWxkIHZh bHVlLgotCi1DaGFuZ2UtSWQ6IEkwOWU0ODJjZWIxMTRlZWIwZjA4YjU1MjhkNDBmZmVkOGQ3OTEx OWVlCi0KLVNpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+ Ci0tLS0KLSBnZGIvZi12YWxwcmludC5jIHwgIDExOCArKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMzkgaW5zZXJ0 aW9ucygrKSwgNzkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nZGIvZi12YWxwcmludC5j IGIvZ2RiL2YtdmFscHJpbnQuYwotaW5kZXggZDhjNzY3Zi4uMWFiNWJkOCAxMDA2NDQKLS0tLSBh L2dkYi9mLXZhbHByaW50LmMKLSsrKyBiL2dkYi9mLXZhbHByaW50LmMKLUBAIC0zOSw4ICszOSw2 IEBACi0gCi0gZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZl92YWxwcmludCAodm9pZCk7Ci0gc3Rh dGljIHZvaWQgaW5mb19jb21tb25fY29tbWFuZCAoY2hhciAqLCBpbnQpOwotLXN0YXRpYyB2b2lk IGY3N19jcmVhdGVfYXJyYXlwcmludF9vZmZzZXRfdGJsIChzdHJ1Y3QgdHlwZSAqLAotLQkJCQkJ ICAgICAgc3RydWN0IHVpX2ZpbGUgKik7Ci0gc3RhdGljIHZvaWQgZjc3X2dldF9keW5hbWljX2xl bmd0aF9vZl9hZ2dyZWdhdGUgKHN0cnVjdCB0eXBlICopOwotIAotIGludCBmNzdfYXJyYXlfb2Zm c2V0X3RibFtNQVhfRk9SVFJBTl9ESU1TICsgMV1bMl07Ci1AQCAtNDgsMTUgKzQ2LDYgQEAgaW50 IGY3N19hcnJheV9vZmZzZXRfdGJsW01BWF9GT1JUUkFOX0RJTVMgKyAxXVsyXTsKLSAvKiBBcnJh eSB3aGljaCBob2xkcyBvZmZzZXRzIHRvIGJlIGFwcGxpZWQgdG8gZ2V0IGEgcm93J3MgZWxlbWVu dHMKLSAgICBmb3IgYSBnaXZlbiBhcnJheS4gIEFycmF5IGFsc28gaG9sZHMgdGhlIHNpemUgb2Yg ZWFjaCBzdWJhcnJheS4gICovCi0gCi0tLyogVGhlIGZvbGxvd2luZyBtYWNybyBnaXZlcyB1cyB0 aGUgc2l6ZSBvZiB0aGUgbnRoIGRpbWVuc2lvbiwgV2hlcmUgCi0tICAgbiBpcyAxIGJhc2VkLiAg Ki8KLS0KLS0jZGVmaW5lIEY3N19ESU1fU0laRShuKSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1b MV0pCi0tCi0tLyogVGhlIGZvbGxvd2luZyBnaXZlcyB1cyB0aGUgb2Zmc2V0IGZvciByb3cgbiB3 aGVyZSBuIGlzIDEtYmFzZWQuICAqLwotLQotLSNkZWZpbmUgRjc3X0RJTV9PRkZTRVQobikgKGY3 N19hcnJheV9vZmZzZXRfdGJsW25dWzBdKQotLQotIGludAotIGY3N19nZXRfbG93ZXJib3VuZCAo c3RydWN0IHR5cGUgKnR5cGUpCi0gewotQEAgLTExNCw0NyArMTAzLDYgQEAgZjc3X2dldF9keW5h bWljX2xlbmd0aF9vZl9hZ2dyZWdhdGUgKHN0cnVjdCB0eXBlICp0eXBlKQotICAgICAqIFRZUEVf TEVOR1RIIChjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkpOwotIH0KLSAK LS0vKiBGdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIGFycmF5IG9mZnNldCxzaXplIHRhYmxlIGZv ciB0aGUgYXJyYXkgCi0tICAgdHlwZSAidHlwZSIuICAqLwotLQotLXN0YXRpYyB2b2lkCi0tZjc3 X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90YmwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtKQotLXsKLS0gIHN0cnVjdCB0eXBlICp0bXBfdHlwZTsKLS0gIGludCBl bHRsZW47Ci0tICBpbnQgbmRpbWVuID0gMTsKLS0gIGludCB1cHBlciwgbG93ZXI7Ci0tCi0tICB0 bXBfdHlwZSA9IHR5cGU7Ci0tCi0tICB3aGlsZSAoVFlQRV9DT0RFICh0bXBfdHlwZSkgPT0gVFlQ RV9DT0RFX0FSUkFZKQotLSAgICB7Ci0tICAgICAgdXBwZXIgPSBmNzdfZ2V0X3VwcGVyYm91bmQg KHRtcF90eXBlKTsKLS0gICAgICBsb3dlciA9IGY3N19nZXRfbG93ZXJib3VuZCAodG1wX3R5cGUp OwotLQotLSAgICAgIEY3N19ESU1fU0laRSAobmRpbWVuKSA9IHVwcGVyIC0gbG93ZXIgKyAxOwot LQotLSAgICAgIHRtcF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5cGUpOwotLSAgICAg IG5kaW1lbisrOwotLSAgICB9Ci0tCi0tICAvKiBOb3cgd2UgbXVsdGlwbHkgZWx0bGVuIGJ5IGFs bCB0aGUgb2Zmc2V0cywgc28gdGhhdCBsYXRlciB3ZSAKLS0gICAgIGNhbiBwcmludCBvdXQgYXJy YXkgZWxlbWVudHMgY29ycmVjdGx5LiAgVXAgdGlsbCBub3cgd2UgCi0tICAgICBrbm93IGFuIG9m ZnNldCB0byBhcHBseSB0byBnZXQgdGhlIGl0ZW0gYnV0IHdlIGFsc28gCi0tICAgICBoYXZlIHRv IGtub3cgaG93IG11Y2ggdG8gYWRkIHRvIGdldCB0byB0aGUgbmV4dCBpdGVtLiAgKi8KLS0KLS0g IG5kaW1lbi0tOwotLSAgZWx0bGVuID0gVFlQRV9MRU5HVEggKHRtcF90eXBlKTsKLS0gIEY3N19E SU1fT0ZGU0VUIChuZGltZW4pID0gZWx0bGVuOwotLSAgd2hpbGUgKC0tbmRpbWVuID4gMCkKLS0g ICAgewotLSAgICAgIGVsdGxlbiAqPSBGNzdfRElNX1NJWkUgKG5kaW1lbiArIDEpOwotLSAgICAg IEY3N19ESU1fT0ZGU0VUIChuZGltZW4pID0gZWx0bGVuOwotLSAgICB9Ci0tfQotLQotLQotLQot IC8qIEFjdHVhbCBmdW5jdGlvbiB3aGljaCBwcmludHMgb3V0IEY3NyBhcnJheXMsIFZhbGFkZHIg PT0gYWRkcmVzcyBpbiAKLSAgICB0aGUgc3VwZXJpb3IuICBBZGRyZXNzID09IHRoZSBhZGRyZXNz IGluIHRoZSBpbmZlcmlvci4gICovCi0gCi1AQCAtMTY3LDQxICsxMTUsNTYgQEAgZjc3X3ByaW50 X2FycmF5XzEgKGludCBuc3MsIGludCBuZGltZW5zaW9ucywgc3RydWN0IHR5cGUgKnR5cGUsCi0g CQkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywKLSAJCSAgIGlu dCAqZWx0cykKLSB7Ci0rICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQ RSAoY2hlY2tfdHlwZWRlZiAodHlwZSkpOwotKyAgQ09SRV9BRERSIGFkZHIgPSBhZGRyZXNzICsg ZW1iZWRkZWRfb2Zmc2V0OwotKyAgTE9OR0VTVCBsb3dlcmJvdW5kLCB1cHBlcmJvdW5kOwotICAg aW50IGk7Ci0gCi0rICBnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93ZXJib3Vu ZCwgJnVwcGVyYm91bmQpOwotKwotICAgaWYgKG5zcyAhPSBuZGltZW5zaW9ucykKLSAgICAgewot LSAgICAgIGZvciAoaSA9IDA7Ci0tCSAgIChpIDwgRjc3X0RJTV9TSVpFIChuc3MpICYmICgqZWx0 cykgPCBvcHRpb25zLT5wcmludF9tYXgpOwotKyAgICAgIHNpemVfdCBkaW1fc2l6ZSA9IFRZUEVf TEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0rICAgICAgc2l6ZV90IG9mZnMgPSAw OwotKwotKyAgICAgIGZvciAoaSA9IGxvd2VyYm91bmQ7Ci0rCSAgIChpIDwgdXBwZXJib3VuZCAr IDEgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7Ci0gCSAgIGkrKykKLSAJewotKwkg IHN0cnVjdCB2YWx1ZSAqc3ViYXJyYXkgPSB2YWx1ZV9mcm9tX2NvbnRlbnRzX2FuZF9hZGRyZXNz Ci0rCSAgICAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHZhbHVlX2NvbnRlbnRzX2Zvcl9wcmlu dGluZ19jb25zdCAodmFsKQotKwkgICAgICsgb2ZmcywgYWRkciArIG9mZnMpOwotKwotIAkgIGZw cmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiggIik7Ci0tCSAgZjc3X3ByaW50X2FycmF5XzEgKG5z cyArIDEsIG5kaW1lbnNpb25zLCBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKLS0JCQkgICAgIHZh bGFkZHIsCi0tCQkJICAgICBlbWJlZGRlZF9vZmZzZXQgKyBpICogRjc3X0RJTV9PRkZTRVQgKG5z cyksCi0tCQkJICAgICBhZGRyZXNzLAotLQkJCSAgICAgc3RyZWFtLCByZWN1cnNlLCB2YWwsIG9w dGlvbnMsIGVsdHMpOwotKwkgIGY3N19wcmludF9hcnJheV8xIChuc3MgKyAxLCBuZGltZW5zaW9u cywgdmFsdWVfdHlwZSAoc3ViYXJyYXkpLAotKwkJCSAgICAgdmFsdWVfY29udGVudHNfZm9yX3By aW50aW5nIChzdWJhcnJheSksCi0rCQkJICAgICB2YWx1ZV9lbWJlZGRlZF9vZmZzZXQgKHN1YmFy cmF5KSwKLSsJCQkgICAgIHZhbHVlX2FkZHJlc3MgKHN1YmFycmF5KSwKLSsJCQkgICAgIHN0cmVh bSwgcmVjdXJzZSwgc3ViYXJyYXksIG9wdGlvbnMsIGVsdHMpOwotKwkgIG9mZnMgKz0gZGltX3Np emU7Ci0gCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSAiKTsKLSAJfQotLSAgICAgIGlm ICgqZWx0cyA+PSBvcHRpb25zLT5wcmludF9tYXggJiYgaSA8IEY3N19ESU1fU0laRSAobnNzKSkg Ci0rICAgICAgaWYgKCplbHRzID49IG9wdGlvbnMtPnByaW50X21heCAmJiBpIDwgdXBwZXJib3Vu ZCkKLSAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7Ci0gICAgIH0KLSAgIGVsc2UK LSAgICAgewotLSAgICAgIGZvciAoaSA9IDA7IGkgPCBGNzdfRElNX1NJWkUgKG5zcykgJiYgKCpl bHRzKSA8IG9wdGlvbnMtPnByaW50X21heDsKLSsgICAgICBmb3IgKGkgPSBsb3dlcmJvdW5kOyBp IDwgdXBwZXJib3VuZCArIDEgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heDsKLSAJICAg aSsrLCAoKmVsdHMpKyspCi0gCXsKLS0JICB2YWxfcHJpbnQgKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpLAotLQkJICAgICB2YWxhZGRyLAotLQkJICAgICBlbWJlZGRlZF9vZmZzZXQgKyBpICogRjc3 X0RJTV9PRkZTRVQgKG5kaW1lbnNpb25zKSwKLS0JCSAgICAgYWRkcmVzcywgc3RyZWFtLCByZWN1 cnNlLAotLQkJICAgICB2YWwsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwotKwkgIHN0cnVj dCB2YWx1ZSAqZWx0ID0gdmFsdWVfc3Vic2NyaXB0ICgoc3RydWN0IHZhbHVlICopdmFsLCBpKTsK LSsKLSsJICB2YWxfcHJpbnQgKHZhbHVlX3R5cGUgKGVsdCksCi0rCQkgICAgIHZhbHVlX2NvbnRl bnRzX2Zvcl9wcmludGluZyAoZWx0KSwKLSsJCSAgICAgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0IChl bHQpLAotKwkJICAgICB2YWx1ZV9hZGRyZXNzIChlbHQpLCBzdHJlYW0sIHJlY3Vyc2UsCi0rCQkg ICAgIGVsdCwgb3B0aW9ucywgY3VycmVudF9sYW5ndWFnZSk7Ci0gCi0tCSAgaWYgKGkgIT0gKEY3 N19ESU1fU0laRSAobnNzKSAtIDEpKQotKwkgIGlmIChpICE9IHVwcGVyYm91bmQpCi0gCSAgICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIsICIpOwotIAotIAkgIGlmICgoKmVsdHMgPT0gb3B0 aW9ucy0+cHJpbnRfbWF4IC0gMSkKLS0JICAgICAgJiYgKGkgIT0gKEY3N19ESU1fU0laRSAobnNz KSAtIDEpKSkKLSsJICAgICAgJiYgKGkgIT0gdXBwZXJib3VuZCkpCi0gCSAgICBmcHJpbnRmX2Zp bHRlcmVkIChzdHJlYW0sICIuLi4iKTsKLSAJfQotICAgICB9Ci1AQCAtMjI4LDEyICsxOTEsNiBA QCBmNzdfcHJpbnRfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFs YWRkciwKLSBUeXBlIG5vZGUgY29ycnVwdCEgRjc3IGFycmF5cyBjYW5ub3QgaGF2ZSAlZCBzdWJz Y3JpcHRzICglZCBNYXgpIiksCi0gCSAgIG5kaW1lbnNpb25zLCBNQVhfRk9SVFJBTl9ESU1TKTsK LSAKLS0gIC8qIFNpbmNlIEY3NyBhcnJheXMgYXJlIHN0b3JlZCBjb2x1bW4tbWFqb3IsIHdlIHNl dCB1cCBhbiAKLS0gICAgIG9mZnNldCB0YWJsZSB0byBnZXQgYXQgdGhlIHZhcmlvdXMgcm93J3Mg ZWxlbWVudHMuICBUaGUgCi0tICAgICBvZmZzZXQgdGFibGUgY29udGFpbnMgZW50cmllcyBmb3Ig Ym90aCBvZmZzZXQgYW5kIHN1YmFycmF5IHNpemUuICAqLwotLQotLSAgZjc3X2NyZWF0ZV9hcnJh eXByaW50X29mZnNldF90YmwgKHR5cGUsIHN0cmVhbSk7Ci0tCi0gICBmNzdfcHJpbnRfYXJyYXlf MSAoMSwgbmRpbWVuc2lvbnMsIHR5cGUsIHZhbGFkZHIsIGVtYmVkZGVkX29mZnNldCwKLSAJCSAg ICAgYWRkcmVzcywgc3RyZWFtLCByZWN1cnNlLCB2YWwsIG9wdGlvbnMsICZlbHRzKTsKLSB9Ci1A QCAtMzc4LDEyICszMzUsMTUgQEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25z dCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKLSAgICAgICBmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sICIoICIpOwotICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8 IFRZUEVfTkZJRUxEUyAodHlwZSk7IGluZGV4KyspCi0gICAgICAgICB7Ci0tICAgICAgICAgIGlu dCBvZmZzZXQgPSBUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaW5kZXgpIC8gODsKLSsJICBzdHJ1 Y3QgdmFsdWUgKmZpZWxkID0gdmFsdWVfZmllbGQKLSsJICAgICgoc3RydWN0IHZhbHVlICopb3Jp Z2luYWxfdmFsdWUsIGluZGV4KTsKLSsKLSsgICAgICAgICAgdmFsX3ByaW50ICh2YWx1ZV90eXBl IChmaWVsZCksCi0rCQkgICAgIHZhbHVlX2NvbnRlbnRzX2Zvcl9wcmludGluZyAoZmllbGQpLAot KwkJICAgICB2YWx1ZV9lbWJlZGRlZF9vZmZzZXQgKGZpZWxkKSwKLSsJCSAgICAgdmFsdWVfYWRk cmVzcyAoZmllbGQpLCBzdHJlYW0sIHJlY3Vyc2UgKyAxLAotKwkJICAgICBmaWVsZCwgb3B0aW9u cywgY3VycmVudF9sYW5ndWFnZSk7Ci0gCi0tICAgICAgICAgIHZhbF9wcmludCAoVFlQRV9GSUVM RF9UWVBFICh0eXBlLCBpbmRleCksIHZhbGFkZHIsCi0tCQkgICAgIGVtYmVkZGVkX29mZnNldCAr IG9mZnNldCwKLS0JCSAgICAgYWRkcmVzcywgc3RyZWFtLCByZWN1cnNlICsgMSwKLS0JCSAgICAg b3JpZ2luYWxfdmFsdWUsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwotICAgICAgICAgICBp ZiAoaW5kZXggIT0gVFlQRV9ORklFTERTICh0eXBlKSAtIDEpCi0gICAgICAgICAgICAgZnB1dHNf ZmlsdGVyZWQgKCIsICIsIHN0cmVhbSk7Ci0gICAgICAgICB9Ci0tLSAKLTEuNy45LjUKLQoKZGlm ZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMDhvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0wOG9m MjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NTlkMDAuLjAwMDAwMDAK LS0tIGEvZ2RiLXZsYS1pbnRlbC0wOG9mMjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSAr MCwwIEBACi1TdWJqZWN0OiBbUEFUQ0ggMDgvMjNdIHZsYTogZ2V0IGR5bmFtaWMgYXJyYXkgY29y bmVyIGNhc2VzIHRvIHdvcmsKLU1lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtOS1naXQtc2Vu ZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLVRoaXMgcGF0Y2ggZG9lcyBub3Qgb3Zl cndyaXRlIHRoZSB2YWx1ZSB0eXBlIGluCi1jYXNlIGl0IGlzIGEgZHluYW1pYyB0eXBlLiBGb3Ig ZHluYW1pYyB0eXBlcyBHREIKLXJlc29sdmVkIGl0cyBkeW5hbWljIHZhbHVlcyBpbiBhIGNvcHkg b2YgdGhlIHR5cGUuCi1UaGUgY2FsbCB0byBkZXByZWNhdGVkX3NldF92YWx1ZV90eXBlIG92ZXJ3 cml0ZXMgdGhlCi1yZXNvbHZlZCB0eXBlIHdpdGggdGhlIG9yaWdpbmFsIHR5cGUsIHdoaWNoIGJy ZWFrcwotZS5nLiBwb2ludGVyIHRvIGEgRm9ydHJhbiB0eXBlLCB3aGljaCBjb250YWlucyBhIGR5 bmFtaWMKLWFycmF5LgotCi1PbGQ6Ci0oZ2RiKSBwcmludCAmdmxhMQotKFBUUiBUTyAtPiAoIHJl YWwoa2luZD00KSAoMjM5NTkxMzY6MjM5NTkxODQpKSkgMHg3ZmZmZmZmZmQ0OTAKLQotTmV3Ogot KGdkYikgcHJpbnQgJnZsYTEKLShQVFIgVE8gLT4gKCByZWFsKGtpbmQ9NCkgKDUpKSkgMHg3ZmZm ZmZmZmQ0OTAKLQotMjAxNC0wNS0yOCAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5j b20+Ci0gICAgICAgICAgICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNv bT4KLQotCSogdmFsdWUuYyAocmVhZGp1c3RfaW5kaXJlY3RfdmFsdWVfdHlwZSk6IEFkZAotCWNo ZWNrIGZvciBkeW5hbWljIHR5cGVzLgotCi1DaGFuZ2UtSWQ6IElmMWM2ZmIwYmQzYzFkMDQ2MTll ODlhMWI1ODg1MGVkYjY5YmJmZGUwCi0KLVNpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxrZXZl bi5ib2VsbEBpbnRlbC5jb20+Ci0tLS0KLSBnZGIvdmFsdWUuYyB8ICAgIDMgKystCi0gMSBmaWxl IGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEv Z2RiL3ZhbHVlLmMgYi9nZGIvdmFsdWUuYwotaW5kZXggMWYwZDlhNC4uN2FiYjIwYSAxMDA2NDQK LS0tLSBhL2dkYi92YWx1ZS5jCi0rKysgYi9nZGIvdmFsdWUuYwotQEAgLTM1MDQsNyArMzUwNCw4 IEBAIHJlYWRqdXN0X2luZGlyZWN0X3ZhbHVlX3R5cGUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0 cnVjdCB0eXBlICplbmNfdHlwZSwKLSAJCQkgICAgICBzdHJ1Y3QgdmFsdWUgKm9yaWdpbmFsX3Zh bHVlKQotIHsKLSAgIC8qIFJlLWFkanVzdCB0eXBlLiAgKi8KLS0gIGRlcHJlY2F0ZWRfc2V0X3Zh bHVlX3R5cGUgKHZhbHVlLCBUWVBFX1RBUkdFVF9UWVBFIChvcmlnaW5hbF90eXBlKSk7Ci0rICBp ZiAoIWlzX2R5bmFtaWNfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAob3JpZ2luYWxfdHlwZSkpKQot KyAgICBkZXByZWNhdGVkX3NldF92YWx1ZV90eXBlICh2YWx1ZSwgVFlQRV9UQVJHRVRfVFlQRSAo b3JpZ2luYWxfdHlwZSkpOwotIAotICAgLyogQWRkIGVtYmVkZGluZyBpbmZvLiAgKi8KLSAgIHNl dF92YWx1ZV9lbmNsb3NpbmdfdHlwZSAodmFsdWUsIGVuY190eXBlKTsKLS0tIAotMS43LjkuNQot CgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0wOW9mMjMucGF0Y2ggYi9nZGItdmxhLWludGVs LTA5b2YyMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjcyYmNjNS4uMDAw MDAwMAotLS0gYS9nZGItdmxhLWludGVsLTA5b2YyMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDMxNiArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0ggMDkvMjNdIHZsYTogY2hhbmdlZCBzdHJpbmcg bGVuZ3RoIHNlbWFudGljLgotTWVzc2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC0xMC1naXQtc2Vu ZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLVRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUg c2VtYW50aWMgb2YgdGhlIER3YXJmIHN0cmluZyBsZW5ndGgKLWF0dHJpYnV0ZSB0byByZWZsZWN0 IHRoZSBzdGFuZGFyZC4gVGhpcyBzZXJ2ZXMgYXMgcHJlLXdvcmsKLXRvIGdldCB2YXJpYWJsZSBz dHJpbmdzIGluIEZvcnRyYW4gdG8gd29yay4KLQotMjAxNC0wNS0yOCAgS2V2ZW4gQm9lbGwgIDxr ZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0gICAgICAgICAgICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmlt aXIuYWdvdmljQGludGVsLmNvbT4KLQotCSogZHdhcmYycmVhZC5jIChyZWFkX3RhZ19zdHJpbmdf dHlwZSk6IGNoYW5nZWQKLQlzZW1hbnRpYyBvZiBEV19BVF9zdHJpbmdfbGVuZ3RoIHRvIGJlIGFi bGUgdG8KLQloYW5kbGUgRHdhcmYgYmxvY2tzIGFzIHdlbGwuIFN1cHBvcnQgZm9yCi0JRFdfQVRf Ynl0ZV9sZW5ndGggYWRkZWQgdG8gZ2V0IGNvcnJlY3QgbGVuZ3RoCi0JaWYgc3BlY2lmaWVkIGlu IGNvbWJpbmF0aW9uIHdpdGgKLQlEV19BVF9zdHJpbmdfbGVuZ3RoLgotCShhdHRyX3RvX2R5bmFt aWNfcHJvcCk6IGFkZGVkCi0JZnVuY3Rpb25hbGl0eSB0byBhZGQgRHdhcmYgb3BlcmF0b3JzIHRv IGJhdG9uCi0JZGF0YSBhdHRyaWJ1dGUuIEFkZGVkIHBvc3QgdmFsdWVzIHRvIGJhdG9uCi0JYXMg cmVxdWlyZWQgYnkgdGhlIHN0cmluZyBldmFsdWF0aW9uIGNhc2UuCi0JKHJlYWRfc3VicmFuZ2Vf dHlwZSk6IEFkYXB0IGNhbGxlci4KLQkoc2V0X2RpZV90eXBlKTogQWRhcHQgY2FsbGVyLgotCShh ZGRfcG9zdF92YWx1ZXNfdG9fYmF0b24pOiBOZXcgZnVuY3Rpb24uCi0JKiBkd2FyZjJsb2MuYyAo ZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5KTogRXZhbHVhdGUKLQlwb3N0IHByb2Nlc3NpbmcgZHdh cmYuCi0JKiBkd2FyZjJsb2MuaCAoc3RydWN0IGR3YXJmMl9wcm9wZXJ0eV9iYXRvbik6IEFkZAot CXBvc3QgZHdhcmYgdmFsdWVzIGF0dHJpYnV0ZS4KLQotQ2hhbmdlLUlkOiBJNmVkZmEwMDVmNDE2 Y2RkYzhlMzY0ZDM0ODkxYjlhYmY2YjQ0Zjc1NwotCi1TaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2Vs bCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotLS0tCi0gZ2RiL2R3YXJmMmxvYy5jICB8ICAgMTAg KysrKysKLSBnZGIvZHdhcmYybG9jLmggIHwgICAgMyArKwotIGdkYi9kd2FyZjJyZWFkLmMgfCAg MTI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LQotIDMgZmlsZXMgY2hhbmdlZCwgMTI3IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQot Ci1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmxvYy5jIGIvZ2RiL2R3YXJmMmxvYy5jCi1pbmRleCA3 YWI3MzRkLi4yNDczZjgwIDEwMDY0NAotLS0tIGEvZ2RiL2R3YXJmMmxvYy5jCi0rKysgYi9nZGIv ZHdhcmYybG9jLmMKLUBAIC0yNTMzLDYgKzI1MzMsMTEgQEAgZHdhcmYyX2V2YWx1YXRlX3Byb3Bl cnR5IChjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLCBDT1JFX0FERFIgYWRkcmVzcywK LSAKLSAJCSp2YWx1ZSA9IHZhbHVlX2FzX2FkZHJlc3MgKHZhbCk7Ci0gCSAgICAgIH0KLSsJICAg IGlmIChiYXRvbi0+cG9zdF92YWx1ZXMuZGF0YSAmJiBiYXRvbi0+cG9zdF92YWx1ZXMuc2l6ZSA+ IDApCi0rCSAgICAgIHsKLSsJICAgICAgICBDT1JFX0FERFIgbmV3X2FkZHIgPSAqdmFsdWU7Ci0r CSAgICAgICAgZHdhcmYyX2xvY2V4cHJfYmF0b25fZXZhbCAoJmJhdG9uLT5wb3N0X3ZhbHVlcywg bmV3X2FkZHIsIHZhbHVlKTsKLSsJICAgICAgfQotIAkgICAgcmV0dXJuIDE7Ci0gCSAgfQotICAg ICAgIH0KLUBAIC0yNTU1LDYgKzI1NjAsMTEgQEAgZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChj b25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLCBDT1JFX0FERFIgYWRkcmVzcywKLSAJICAg IGlmICghdmFsdWVfb3B0aW1pemVkX291dCAodmFsKSkKLSAJICAgICAgewotIAkJKnZhbHVlID0g dmFsdWVfYXNfYWRkcmVzcyAodmFsKTsKLSsJCWlmIChiYXRvbi0+cG9zdF92YWx1ZXMuZGF0YSAm JiBiYXRvbi0+cG9zdF92YWx1ZXMuc2l6ZSA+IDApCi0rCQkgIHsKLSsJCSAgICBDT1JFX0FERFIg bmV3X2FkZHIgPSAqdmFsdWU7Ci0rCQkgICAgZHdhcmYyX2xvY2V4cHJfYmF0b25fZXZhbCAoJmJh dG9uLT5wb3N0X3ZhbHVlcywgbmV3X2FkZHIsIHZhbHVlKTsKLSsJCSAgfQotIAkJcmV0dXJuIDE7 Ci0gCSAgICAgIH0KLSAJICB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmxvYy5oIGIvZ2RiL2R3 YXJmMmxvYy5oCi1pbmRleCBmYjY1YzVjLi5jZjY0OGViIDEwMDY0NAotLS0tIGEvZ2RiL2R3YXJm MmxvYy5oCi0rKysgYi9nZGIvZHdhcmYybG9jLmgKLUBAIC0xNjgsNiArMTY4LDkgQEAgc3RydWN0 IGR3YXJmMl9wcm9wZXJ0eV9iYXRvbgotICAgICAvKiBMb2NhdGlvbiBsaXN0IHRvIGJlIGV2YWx1 YXRlZCBpbiB0aGUgY29udGV4dCBvZiBSRUZFUkVOQ0VEX1RZUEUuICAqLwotICAgICBzdHJ1Y3Qg ZHdhcmYyX2xvY2xpc3RfYmF0b24gbG9jbGlzdDsKLSAgIH07Ci0rCi0rICAvKiBBdHRyaWJ1dGVz LCB3aGljaCB3aWxsIGJlIHB1c2hlZCBhZnRlciBldmFsdWF0aW5nIGxvY2V4cHIgb3IgbG9jbGlz dC4gICovCi0rICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gcG9zdF92YWx1ZXM7Ci0gfTsK LSAKLSBleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMgZHdhcmYyX2xvY2V4 cHJfZnVuY3M7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMnJlYWQuYyBiL2dkYi9kd2FyZjJyZWFk LmMKLWluZGV4IGVhNjY2MDIuLjBiMjM3MDEgMTAwNjQ0Ci0tLS0gYS9nZGIvZHdhcmYycmVhZC5j Ci0rKysgYi9nZGIvZHdhcmYycmVhZC5jCi1AQCAtMTg0Miw2ICsxODQyLDE1IEBAIHN0YXRpYyB2 b2lkIGZyZWVfZHdvX2ZpbGVfY2xlYW51cCAodm9pZCAqKTsKLSBzdGF0aWMgdm9pZCBwcm9jZXNz X2N1X2luY2x1ZGVzICh2b2lkKTsKLSAKLSBzdGF0aWMgdm9pZCBjaGVja19wcm9kdWNlciAoc3Ry dWN0IGR3YXJmMl9jdSAqY3UpOwotKwotK3N0YXRpYyBpbnQKLSthdHRyX3RvX2R5bmFtaWNfcHJv cCAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGRpZV9pbmZvICpkaWUsCi0r CQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwK LSsJCSAgICAgIGNvbnN0IGdkYl9ieXRlICphZGRpdGlvbmFsX2RhdGEsIGludCBhZGRpdGlvbmFs X2RhdGFfc2l6ZSk7Ci0rCi0rc3RhdGljIHZvaWQgYWRkX3Bvc3RfdmFsdWVzX3RvX2JhdG9uIChz dHJ1Y3QgZHdhcmYyX3Byb3BlcnR5X2JhdG9uICpiYXRvbiwKLSsgICAgICAgIGNvbnN0IGdkYl9i eXRlICpkYXRhLCBpbnQgc2l6ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwotKwotIAwKLSAvKiBW YXJpb3VzIGNvbXBsYWludHMgYWJvdXQgc3ltYm9sIHJlYWRpbmcgdGhhdCBkb24ndCBhYm9ydCB0 aGUgcHJvY2Vzcy4gICovCi0gCi1AQCAtMTQwMjksMjkgKzE0MDM4LDkwIEBAIHJlYWRfdGFnX3N0 cmluZ190eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0g ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwot ICAgc3RydWN0IHR5cGUgKnR5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZSwgKmNoYXJfdHlw ZTsKLSAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0tICB1bnNpZ25lZCBpbnQgbGVuZ3RoOwot KyAgdW5zaWduZWQgaW50IGxlbmd0aCA9IFVJTlRfTUFYOwotKwotKyAgaW5kZXhfdHlwZSA9IG9i amZpbGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0aW5faW50OwotKyAgcmFuZ2VfdHlwZSA9IGNyZWF0 ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwgaW5kZXhfdHlwZSwgMSwgbGVuZ3RoKTsKLSAKLSsg IC8qIElmIERXX0FUX3N0cmluZ19sZW5ndGggaXMgZGVmaW5lZCwgdGhlIGxlbmd0aCBpcyBzdG9y ZWQgYXQgc29tZSBsb2NhdGlvbgotKyAgICogaW4gbWVtb3J5LiAqLwotICAgYXR0ciA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX3N0cmluZ19sZW5ndGgsIGN1KTsKLSAgIGlmIChhdHRyKQotICAg ICB7Ci0tICAgICAgbGVuZ3RoID0gRFdfVU5TTkQgKGF0dHIpOwotKyAgICAgIGlmIChhdHRyX2Zv cm1faXNfYmxvY2sgKGF0dHIpKQotKyAgICAgICAgewotKyAgICAgICAgICBzdHJ1Y3QgYXR0cmli dXRlICpieXRlX3NpemUsICpiaXRfc2l6ZTsKLSsgICAgICAgICAgc3RydWN0IGR5bmFtaWNfcHJv cCBoaWdoOwotKwotKyAgICAgICAgICBieXRlX3NpemUgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19B VF9ieXRlX3NpemUsIGN1KTsKLSsgICAgICAgICAgYml0X3NpemUgPSBkd2FyZjJfYXR0ciAoZGll LCBEV19BVF9iaXRfc2l6ZSwgY3UpOwotKwotKyAgICAgICAgICAvKiBEV19BVF9ieXRlX3NpemUg c2hvdWxkIG5ldmVyIG9jY3VyIHRvZ2V0aGVyIGluIGNvbWJpbmF0aW9uIHdpdGgKLSsgICAgICAg ICAgICAgRFdfQVRfc3RyaW5nX2xlbmd0aC4gICovCi0rICAgICAgICAgIGlmICgoYnl0ZV9zaXpl ID09IE5VTEwgJiYgYml0X3NpemUgIT0gTlVMTCkgfHwKLSsgICAgICAgICAgICAgICAgICAoYnl0 ZV9zaXplICE9IE5VTEwgJiYgYml0X3NpemUgPT0gTlVMTCkpCi0rICAgICAgICAgICAgY29tcGxh aW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJEV19BVF9ieXRlX3NpemUgQU5EICIKLSsgICAg ICAgICAgICAgICAgICAgICAgIkRXX0FUX2JpdF9zaXplIGZvdW5kIHRvZ2V0aGVyIGF0IHRoZSBz YW1lIHRpbWUuIikpOwotKwotKyAgICAgICAgICAvKiBJZiBEV19BVF9zdHJpbmdfbGVuZ3RoIEFO RCBEV19BVF9ieXRlX3NpemUgZXhpc3QgdG9nZXRoZXIsIGl0Ci0rICAgICAgICAgICAgIGRlc2Ny aWJlcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgc2hvdWxkIGJlIHJlYWQgZnJvbSB0aGUgbGVu Z3RoCi0rICAgICAgICAgICAgIG1lbW9yeSBsb2NhdGlvbi4gICovCi0rICAgICAgICAgIGlmIChi eXRlX3NpemUgIT0gTlVMTCAmJiBiaXRfc2l6ZSA9PSBOVUxMKQotKyAgICAgICAgICAgIHsKLSsg ICAgICAgICAgICAgIC8qIEJ1aWxkIG5ldyBkd2FyZjJfbG9jZXhwcl9iYXRvbiBzdHJ1Y3R1cmUg d2l0aCBhZGRpdGlvbnMgdG8gdGhlCi0rICAgICAgICAgICAgICAgICBkYXRhIGF0dHJpYnV0ZSwg dG8gcmVmbGVjdCBEV0FSRiBzcGVjaWFsaXRpZXMgdG8gZ2V0IGFkZHJlc3MKLSsgICAgICAgICAg ICAgICAgIHNpemVzLiAgKi8KLSsgICAgICAgICAgICAgIGNvbnN0IGdkYl9ieXRlIGFwcGVuZF9v cHNbXSA9IHsKLSsgICAgICAgICAgICAgICAgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcywKLSsg ICAgICAgICAgICAgICAgLyogRFdfT1BfZGVyZWZfc2l6ZTogc2l6ZSBvZiBhbiBhZGRyZXNzIG9u IHRoZSB0YXJnZXQgbWFjaGluZQotKyAgICAgICAgICAgICAgICAgICAoYnl0ZXMpLCB3aGVyZSB0 aGUgc2l6ZSB3aWxsIGJlIHNwZWNpZmllZCBieSB0aGUgbmV4dAotKyAgICAgICAgICAgICAgICAg ICBvcGVyYW5kLiAgKi8KLSsgICAgICAgICAgICAgICAgRFdfT1BfZGVyZWZfc2l6ZSwKLSsgICAg ICAgICAgICAgICAgLyogT3BlcmFuZCBmb3IgRFdfT1BfZGVyZWZfc2l6ZS4gICovCi0rICAgICAg ICAgICAgICAgIERXX1VOU05EIChieXRlX3NpemUpIH07Ci0rCi0rICAgICAgICAgICAgICBpZiAo IWF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmaGlnaCwKLSsgICAgICAgICAg ICAgICAgICAgICAgYXBwZW5kX29wcywgQVJSQVlfU0laRSAoYXBwZW5kX29wcykpKQotKyAgICAg ICAgICAgICAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgXygiQ291bGQgbm90IHBhcnNlIERXX0FUX2J5dGVfc2l6ZSIpKTsKLSsgICAg ICAgICAgICB9Ci0rICAgICAgICAgIGVsc2UgaWYgKGJpdF9zaXplICE9IE5VTEwgJiYgYnl0ZV9z aXplID09IE5VTEwpCi0rICAgICAgICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRz LCBfKCJEV19BVF9zdHJpbmdfbGVuZ3RoIEFORCAiCi0rICAgICAgICAgICAgICAgICAgICAgICJE V19BVF9iaXRfc2l6ZSBmb3VuZCBidXQgbm90IHN1cHBvcnRlZCB5ZXQuIikpOwotKyAgICAgICAg ICAvKiBJZiBEV19BVF9zdHJpbmdfbGVuZ3RoIFdJVEhPVVQgRFdfQVRfYnl0ZV9zaXplIGV4aXN0 LCB0aGUgZGVmYXVsdAotKyAgICAgICAgICAgICBpcyB0aGUgYWRkcmVzcyBzaXplIG9mIHRoZSB0 YXJnZXQgbWFjaGluZS4gICovCi0rICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICB7Ci0rICAg ICAgICAgICAgICBpZiAoIWF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmaGln aCwgTlVMTCwgMCkpCi0rICAgICAgICAgICAgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxh aW50cywKLSsgICAgICAgICAgICAgICAgICAgICAgICBfKCJDb3VsZCBub3QgcGFyc2UgRFdfQVRf c3RyaW5nX2xlbmd0aCIpKTsKLSsgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgIFRZUEVfUkFO R0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2ggPSBoaWdoOwotKyAgICAgICAgfQotKyAgICAgIGVs c2UKLSsgICAgICAgIHsKLSsgICAgICAgICAgVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9 IERXX1VOU05EIChhdHRyKTsKLSsgICAgICAgICAgVFlQRV9ISUdIX0JPVU5EX0tJTkQgKHJhbmdl X3R5cGUpID0gUFJPUF9DT05TVDsKLSsgICAgICAgIH0KLSAgICAgfQotICAgZWxzZQotICAgICB7 Ci0tICAgICAgLyogQ2hlY2sgZm9yIHRoZSBEV19BVF9ieXRlX3NpemUgYXR0cmlidXRlLiAgKi8K LSsgICAgICAvKiBDaGVjayBmb3IgdGhlIERXX0FUX2J5dGVfc2l6ZSBhdHRyaWJ1dGUsIHdoaWNo IHJlcHJlc2VudHMgdGhlIGxlbmd0aAotKyAgICAgICAgIGluIHRoaXMgY2FzZS4gICovCi0gICAg ICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5dGVfc2l6ZSwgY3UpOwotICAgICAg IGlmIChhdHRyKQotICAgICAgICAgewotLSAgICAgICAgICBsZW5ndGggPSBEV19VTlNORCAoYXR0 cik7Ci0rICAgICAgICAgIFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgPSBEV19VTlNORCAo YXR0cik7Ci0rICAgICAgICAgIFRZUEVfSElHSF9CT1VORF9LSU5EIChyYW5nZV90eXBlKSA9IFBS T1BfQ09OU1Q7Ci0gICAgICAgICB9Ci0gICAgICAgZWxzZQotICAgICAgICAgewotLSAgICAgICAg ICBsZW5ndGggPSAxOwotKyAgICAgICAgICBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0g MTsKLSsgICAgICAgICAgVFlQRV9ISUdIX0JPVU5EX0tJTkQgKHJhbmdlX3R5cGUpID0gUFJPUF9D T05TVDsKLSAgICAgICAgIH0KLSAgICAgfQotIAotLSAgaW5kZXhfdHlwZSA9IG9iamZpbGVfdHlw ZSAob2JqZmlsZSktPmJ1aWx0aW5faW50OwotLSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9zdGF0aWNf cmFuZ2VfdHlwZSAoTlVMTCwgaW5kZXhfdHlwZSwgMSwgbGVuZ3RoKTsKLSAgIGNoYXJfdHlwZSA9 IGxhbmd1YWdlX3N0cmluZ19jaGFyX3R5cGUgKGN1LT5sYW5ndWFnZV9kZWZuLCBnZGJhcmNoKTsK LSAgIHR5cGUgPSBjcmVhdGVfc3RyaW5nX3R5cGUgKE5VTEwsIGNoYXJfdHlwZSwgcmFuZ2VfdHlw ZSk7Ci0gCi1AQCAtMTQzNjgsMTMgKzE0NDM4LDM2IEBAIHJlYWRfYmFzZV90eXBlIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICByZXR1cm4gc2V0X2RpZV90 eXBlIChkaWUsIHR5cGUsIGN1KTsKLSB9Ci0gCi0rLyogQWRkIHBvc3QgcHJvY2Vzc2luZyBvcC1j b2RlcyB0byBhIGR3YXJmMl9wcm9wZXJ0eV9iYXRvbi4gICovCi0rCi0rc3RhdGljIHZvaWQgYWRk X3Bvc3RfdmFsdWVzX3RvX2JhdG9uIChzdHJ1Y3QgZHdhcmYyX3Byb3BlcnR5X2JhdG9uICpiYXRv biwKLSsgICAgICAgIGNvbnN0IGdkYl9ieXRlICpkYXRhLCBpbnQgc2l6ZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCi0rewotKyAgaWYgKGRhdGEgIT0gTlVMTCAmJiBzaXplID4gMCkKLSsgICAgewot KyAgICAgIHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrID0gJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29i c3RhY2s7Ci0rICAgICAgZ2RiX2J5dGUgKnBvc3RfZGF0YTsKLSsKLSsgICAgICBwb3N0X2RhdGEg PSBvYnN0YWNrX2FsbG9jIChvYnN0YWNrLCBzaXplKTsKLSsgICAgICBtZW1jcHkocG9zdF9kYXRh LCBkYXRhLCBzaXplKTsKLSsgICAgICBiYXRvbi0+cG9zdF92YWx1ZXMuZGF0YSA9IHBvc3RfZGF0 YTsKLSsgICAgICBiYXRvbi0+cG9zdF92YWx1ZXMuc2l6ZSA9IHNpemU7Ci0rICAgICAgYmF0b24t PnBvc3RfdmFsdWVzLnBlcl9jdSA9IGN1LT5wZXJfY3U7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAg YmF0b24tPnBvc3RfdmFsdWVzLmRhdGEgPSBOVUxMOwotKyAgICAgIGJhdG9uLT5wb3N0X3ZhbHVl cy5zaXplID0gMDsKLSsgICAgICBiYXRvbi0+cG9zdF92YWx1ZXMucGVyX2N1ID0gTlVMTDsKLSsg ICAgfQotK30KLSsKLSAvKiBQYXJzZSBkd2FyZiBhdHRyaWJ1dGUgaWYgaXQncyBhIGJsb2NrLCBy ZWZlcmVuY2Ugb3IgY29uc3RhbnQgYW5kIHB1dCB0aGUKLSAgICByZXN1bHRpbmcgdmFsdWUgb2Yg dGhlIGF0dHJpYnV0ZSBpbnRvIHN0cnVjdCBib3VuZF9wcm9wLgotICAgIFJldHVybnMgMSBpZiBB VFRSIGNvdWxkIGJlIHJlc29sdmVkIGludG8gUFJPUCwgMCBvdGhlcndpc2UuICAqLwotIAotIHN0 YXRpYyBpbnQKLSBhdHRyX3RvX2R5bmFtaWNfcHJvcCAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAq YXR0ciwgc3RydWN0IGRpZV9pbmZvICpkaWUsCi0tCQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSwgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCkKLSsJCSAgICAgIHN0cnVjdCBkd2FyZjJfY3Ug KmN1LCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLAotKwkJICAgICAgY29uc3QgZ2RiX2J5dGUg KmFkZGl0aW9uYWxfZGF0YSwgaW50IGFkZGl0aW9uYWxfZGF0YV9zaXplKQotIHsKLSAgIHN0cnVj dCBkd2FyZjJfcHJvcGVydHlfYmF0b24gKmJhdG9uOwotICAgc3RydWN0IG9ic3RhY2sgKm9ic3Rh Y2sgPSAmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjazsKLUBAIC0xNDM4Nyw4ICsxNDQ4MCwx MCBAQCBhdHRyX3RvX2R5bmFtaWNfcHJvcCAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwg c3RydWN0IGRpZV9pbmZvICpkaWUsCi0gICAgICAgYmF0b24gPSBvYnN0YWNrX2FsbG9jIChvYnN0 YWNrLCBzaXplb2YgKCpiYXRvbikpOwotICAgICAgIGJhdG9uLT5yZWZlcmVuY2VkX3R5cGUgPSBO VUxMOwotICAgICAgIGJhdG9uLT5sb2NleHByLnBlcl9jdSA9IGN1LT5wZXJfY3U7Ci0tICAgICAg YmF0b24tPmxvY2V4cHIuc2l6ZSA9IERXX0JMT0NLIChhdHRyKS0+c2l6ZTsKLSAgICAgICBiYXRv bi0+bG9jZXhwci5kYXRhID0gRFdfQkxPQ0sgKGF0dHIpLT5kYXRhOwotKyAgICAgIGJhdG9uLT5s b2NleHByLnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7Ci0rICAgICAgYWRkX3Bvc3RfdmFs dWVzX3RvX2JhdG9uIChiYXRvbiwgYWRkaXRpb25hbF9kYXRhLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYWRkaXRpb25hbF9kYXRhX3NpemUsIGN1KTsKLSAgICAgICBwcm9wLT5k YXRhLmJhdG9uID0gYmF0b247Ci0gICAgICAgcHJvcC0+a2luZCA9IFBST1BfTE9DRVhQUjsKLSAg ICAgICBnZGJfYXNzZXJ0IChwcm9wLT5kYXRhLmJhdG9uICE9IE5VTEwpOwotQEAgLTE0NDA5LDYg KzE0NTA0LDggQEAgYXR0cl90b19keW5hbWljX3Byb3AgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHIsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAotIAkgIGJhdG9uID0gb2JzdGFja19hbGxvYyAo b2JzdGFjaywgc2l6ZW9mICgqYmF0b24pKTsKLSAJICBiYXRvbi0+cmVmZXJlbmNlZF90eXBlID0g ZGllX3R5cGUgKHRhcmdldF9kaWUsIHRhcmdldF9jdSk7Ci0gCSAgZmlsbF9pbl9sb2NsaXN0X2Jh dG9uIChjdSwgJmJhdG9uLT5sb2NsaXN0LCB0YXJnZXRfYXR0cik7Ci0rCSAgYWRkX3Bvc3RfdmFs dWVzX3RvX2JhdG9uIChiYXRvbiwgYWRkaXRpb25hbF9kYXRhLAotKwkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWRkaXRpb25hbF9kYXRhX3NpemUsIGN1KTsKLSAJICBwcm9wLT5kYXRhLmJh dG9uID0gYmF0b247Ci0gCSAgcHJvcC0+a2luZCA9IFBST1BfTE9DTElTVDsKLSAJICBnZGJfYXNz ZXJ0IChwcm9wLT5kYXRhLmJhdG9uICE9IE5VTEwpOwotQEAgLTE0NDIwLDYgKzE0NTE3LDggQEAg YXR0cl90b19keW5hbWljX3Byb3AgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVj dCBkaWVfaW5mbyAqZGllLAotIAkgIGJhdG9uLT5sb2NleHByLnBlcl9jdSA9IGN1LT5wZXJfY3U7 Ci0gCSAgYmF0b24tPmxvY2V4cHIuc2l6ZSA9IERXX0JMT0NLICh0YXJnZXRfYXR0ciktPnNpemU7 Ci0gCSAgYmF0b24tPmxvY2V4cHIuZGF0YSA9IERXX0JMT0NLICh0YXJnZXRfYXR0ciktPmRhdGE7 Ci0rCSAgYWRkX3Bvc3RfdmFsdWVzX3RvX2JhdG9uIChiYXRvbiwgYWRkaXRpb25hbF9kYXRhLAot KwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9kYXRhX3NpemUsIGN1KTsK LSAJICBwcm9wLT5kYXRhLmJhdG9uID0gYmF0b247Ci0gCSAgcHJvcC0+a2luZCA9IFBST1BfTE9D RVhQUjsKLSAJICBnZGJfYXNzZXJ0IChwcm9wLT5kYXRhLmJhdG9uICE9IE5VTEwpOwotQEAgLTE0 NTA5LDE3ICsxNDYwOCwxNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAKLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGll LCBEV19BVF9sb3dlcl9ib3VuZCwgY3UpOwotICAgaWYgKGF0dHIpCi0tICAgIGF0dHJfdG9fZHlu YW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmbG93KTsKLSsgICAgYXR0cl90b19keW5hbWljX3By b3AgKGF0dHIsIGRpZSwgY3UsICZsb3csIE5VTEwsIDApOwotICAgZWxzZSBpZiAoIWxvd19kZWZh dWx0X2lzX3ZhbGlkKQotICAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsIF8oIk1p c3NpbmcgRFdfQVRfbG93ZXJfYm91bmQgIgotIAkJCQkgICAgICAiLSBESUUgYXQgMHgleCBbaW4g bW9kdWxlICVzXSIpLAotIAkgICAgICAgZGllLT5vZmZzZXQuc2VjdF9vZmYsIG9iamZpbGVfbmFt ZSAoY3UtPm9iamZpbGUpKTsKLSAKLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF91 cHBlcl9ib3VuZCwgY3UpOwotLSAgaWYgKCFhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGll LCBjdSwgJmhpZ2gpKQotKyAgaWYgKCFhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBj dSwgJmhpZ2gsIE5VTEwsIDApKQotICAgICB7Ci0gICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChk aWUsIERXX0FUX2NvdW50LCBjdSk7Ci0tICAgICAgaWYgKGF0dHJfdG9fZHluYW1pY19wcm9wIChh dHRyLCBkaWUsIGN1LCAmaGlnaCkpCi0rICAgICAgaWYgKGF0dHJfdG9fZHluYW1pY19wcm9wIChh dHRyLCBkaWUsIGN1LCAmaGlnaCwgTlVMTCwgMCkpCi0gCXsKLSAJICAvKiBJZiBib3VuZHMgYXJl IGNvbnN0YW50IGRvIHRoZSBmaW5hbCBjYWxjdWxhdGlvbiBoZXJlLiAgKi8KLSAJICBpZiAobG93 LmtpbmQgPT0gUFJPUF9DT05TVCAmJiBoaWdoLmtpbmQgPT0gUFJPUF9DT05TVCkKLUBAIC0yMTUy MCw3ICsyMTYxOSw3IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgewotICAgICAgIHN0cnVj dCBkeW5hbWljX3Byb3AgcHJvcDsKLSAKLS0gICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3Ag KGF0dHIsIGRpZSwgY3UsICZwcm9wKSkKLSsgICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3Ag KGF0dHIsIGRpZSwgY3UsICZwcm9wLCBOVUxMLCAwKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAg VFlQRV9BTExPQ0FURURfUFJPUCAodHlwZSkKLSAgICAgICAgICAgICA9IG9ic3RhY2tfYWxsb2Mg KCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAocHJvcCkpOwotQEAgLTIxNTM0LDcg KzIxNjMzLDcgQEAgc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5 cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICB7Ci0gICAgICAgc3RydWN0IGR5 bmFtaWNfcHJvcCBwcm9wOwotIAotLSAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0 ciwgZGllLCBjdSwgJnByb3ApKQotKyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0 ciwgZGllLCBjdSwgJnByb3AsIE5VTEwsIDApKQotICAgICAgICAgewotICAgICAgICAgICBUWVBF X0FTU09DSUFURURfUFJPUCAodHlwZSkKLSAgICAgICAgICAgICA9IG9ic3RhY2tfYWxsb2MgKCZv YmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAocHJvcCkpOwotQEAgLTIxNTQ4LDcgKzIx NjQ3LDcgQEAgc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICB7Ci0gICAgICAgc3RydWN0IGR5bmFt aWNfcHJvcCBwcm9wOwotIAotLSAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwg ZGllLCBjdSwgJnByb3ApKQotKyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwg ZGllLCBjdSwgJnByb3AsIE5VTEwsIDApKQotIAl7Ci0gCSAgVFlQRV9EQVRBX0xPQ0FUSU9OICh0 eXBlKQotIAkgICAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBz aXplb2YgKHByb3ApKTsKLS0tIAotMS43LjkuNQotCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRl bC0xMG9mMjMucGF0Y2ggYi9nZGItdmxhLWludGVsLTEwb2YyMy5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMTQ1NTk3OC4uMDAwMDAwMAotLS0gYS9nZGItdmxhLWludGVsLTEw b2YyMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLVN1YmplY3Q6IFtQQVRD SCAxMC8yM10gdmxhOiBnZXQgRm9ydHJhbiBkeW5hbWljIHN0cmluZ3Mgd29ya2luZy4KLU1lc3Nh Z2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtMTEtZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50 ZWwuY29tPgotCi1UaGlzIHBhdGNoIGVuYWJsZXMgdGhlIGNvcnJlY3QgY2FsY3VsYXRpb24gb2Yg ZHluYW1pYwotc3RyaW5nIGxlbmd0aC4KLQotT2xkOgotKGdkYikgcCBteV9keW5fc3RyaW5nCi0k MSA9IChQVFIgVE8gLT4gKCBjaGFyYWN0ZXIqMjM5NTkxMzYgKSkgMHg2MDVmYzAKLQotKGdkYikg cCAqbXlfZHluX3N0cmluZwotQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVzcyAweDYwNWZj MAotCi1OZXc6Ci0oZ2RiKSBwIG15X2R5bl9zdHJpbmcKLSQxID0gKFBUUiBUTyAtPiAoIGNoYXJh Y3RlcioxMCApKSAweDYwNWZjMAotCi0oZ2RiKSBwICpteV9keW5fc3RyaW5nCi0kMiA9ICdmb28n Ci0KLTIwMTQtMDUtMjggIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotICAg ICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+Ci0KLQkq IGdkYnR5cGVzLmMgKHJlc29sdmVfZHluYW1pY190eXBlKTogQWRkCi0JY29uZGl0aW9ucyB0byBz dXBwb3J0IHN0cmluZyB0eXBlcy4KLQkocmVzb2x2ZV9keW5hbWljX2FycmF5KTogQWRkIGNvbmRp dGlvbnMgZm9yIGR5bmFtaWMKLQlzdHJpbmdzIGFuZCBjcmVhdGUgYSBuZXcgc3RyaW5nIHR5cGUu Ci0JKGlzX2R5bmFtaWNfdHlwZSk6IEZvbGxvdyBwb2ludGVyIGlmIGEgc3RyaW5nIHR5cGUKLQl3 YXMgZGV0ZWN0ZWQsIGFzIEZvcnRyYW4gc3RyaW5ncyBhcmUgcmVwcmVzZW50ZWQKLQlhcyBwb2lu dGVycyB0byBzdHJpbmdzIGludGVybmFsbHkuCi0KLUNoYW5nZS1JZDogSTdkNTRkNzYyYTA4MWNl MDM0YmUzN2FjM2UzNjhiYWM4MTExZGM0ZTYKLQotU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwg PGtldmVuLmJvZWxsQGludGVsLmNvbT4KLS0tLQotIGdkYi9nZGJ0eXBlcy5jIHwgICAyNCArKysr KysrKysrKysrKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwg NCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5cGVz LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2dkYnR5cGVz LmMJMjAxNC0wNi0xNCAxNToxNDo0OC42MjMxMTU1OTcgKzAyMDAKLSsrKyBnZGItNy43LjkwLjIw MTQwNjEzL2dkYi9nZGJ0eXBlcy5jCTIwMTQtMDYtMTQgMTU6MTU6MjYuODc2MTUxMTg3ICswMjAw Ci1AQCAtMTY2Miw2ICsxNjYyLDE1IEBAIGlzX2R5bmFtaWNfdHlwZSAoc3RydWN0IHR5cGUgKnR5 cGUpCi0gICAgIHJldHVybiBpc19keW5hbWljX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp KTsKLSAgICAgICB9Ci0gCi0rICAgIGNhc2UgVFlQRV9DT0RFX1BUUjoKLSsgICAgICB7Ci0rICAg ICAgICBpZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkKLSsgICAgICAgICAgICAmJiBUWVBFX0NP REUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSA9PSBUWVBFX0NPREVfU1RSSU5HKQotKyAgICAg ICAgICByZXR1cm4gaXNfZHluYW1pY190eXBlIChjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9U WVBFICh0eXBlKSkpOwotKwotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICBicmVhazsKLSsg ICAgICB9Ci0gICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoKLSAgICAgY2FzZSBUWVBFX0NPREVf VU5JT046Ci0gICAgICAgewotQEAgLTE3NDIsNyArMTc1MSw4IEBAIHJlc29sdmVfZHluYW1pY19h cnJheSAoc3RydWN0IHR5cGUgKnR5cGUKLSAgIHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3A7Ci0g ICBzdHJ1Y3QgdHlwZSAqY29weSA9IGNvcHlfdHlwZSAodHlwZSk7Ci0gCi0tICBnZGJfYXNzZXJ0 IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWSk7Ci0rICBnZGJfYXNzZXJ0IChU WVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQotKyAgICAgICAgICAgICAgfHwgVFlQ RV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSSU5HKTsKLSAKLSAgIGVsdF90eXBlID0gdHlw ZTsKLSAgIHJhbmdlX3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX0lOREVYX1RZUEUgKGVsdF90 eXBlKSk7Ci1AQCAtMTc2OSw5ICsxNzc5LDE0IEBAIHJlc29sdmVfZHluYW1pY19hcnJheSAoc3Ry dWN0IHR5cGUgKnR5cGUKLSAgIGVsc2UKLSAgICAgZWx0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBF ICh0eXBlKTsKLSAKLS0gIHJldHVybiBjcmVhdGVfYXJyYXlfdHlwZSAoY29weSwKLS0JCQkgICAg ZWx0X3R5cGUsCi0tCQkJICAgIHJhbmdlX3R5cGUpOwotKyAgaWYgKFRZUEVfQ09ERSAodHlwZSkg PT0gVFlQRV9DT0RFX1NUUklORykKLSsgICAgcmV0dXJuIGNyZWF0ZV9zdHJpbmdfdHlwZSAoY29w eSwKLSsgICAgICAgICAgICBlbHRfdHlwZSwKLSsgICAgICAgICAgICByYW5nZV90eXBlKTsKLSsg IGVsc2UKLSsgICAgcmV0dXJuIGNyZWF0ZV9hcnJheV90eXBlIChjb3B5LAotKyAgICAgICAgICAg IGVsdF90eXBlLAotKyAgICAgICAgICAgIHJhbmdlX3R5cGUpOwotIH0KLSAKLSAvKiBSZXNvbHZl cyBkeW5hbWljIGNvbXBvdW5kIHR5cGVzLCBlLmcuIFNUUlVDVFMncyB0byBzdGF0aWMgb25lcy4K LUBAIC0xOTU4LDYgKzE5NzMsNyBAQCByZXNvbHZlX2R5bmFtaWNfdHlwZSAoc3RydWN0IHR5cGUg KnR5cGUsCi0gCX0KLSAKLSAgICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKLSsgICAgICBjYXNl IFRZUEVfQ09ERV9TVFJJTkc6Ci0gCXJlc29sdmVkX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfYXJy YXkgKHR5cGUsIGFkZHIpOwotIAlicmVhazsKLSAKCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVs LTExb2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMTFvZjIzLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA2YjE4Y2YzLi4wMDAwMDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtMTFv ZjIzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcyICswLDAgQEAKLVN1YmplY3Q6IFtQQVRD SCAxMS8yM10gdmxhOiBhZGQgc3RyaWRlIHN1cHBvcnQgdG8gZm9ydHJhbiBhcnJheXMuCi1NZXNz YWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQwLTEyLWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGlu dGVsLmNvbT4KLQotMjAxNC0wNS0yOCAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0Bp bnRlbC5jb20+Ci0gICAgICAgICAgICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNv bT4KLQotCSogZHdhcmYycmVhZC5jIChyZWFkX3N1YnJhbmdlX3R5cGUpOiBSZWFkIGR5bmFtaWMK LQlzdHJpZGUgYXR0cmlidXRlcy4KLQkqIGdkYnR5cGVzLmMgKGNyZWF0ZV9hcnJheV90eXBlX3dp dGhfc3RyaWRlKTogQWRkCi0Jc3RyaWRlIHN1cHBvcnQKLQkoY3JlYXRlX3JhbmdlX3R5cGUpOiBB ZGQgc3RyaWRlIHBhcmFtZXRlci4KLQkoY3JlYXRlX3N0YXRpY19yYW5nZV90eXBlKTogUGFzcyBk ZWZhdWx0IHN0cmlkZQotCXBhcmFtZXRlci4KLQkocmVzb2x2ZV9keW5hbWljX3JhbmdlKTogRXZh bHVhdGUgc3RyaWRlIGJhdG9uLgotCShyZXNvbHZlX2R5bmFtaWNfdHlwZSk6IEFkanVzdCBkYXRh IGxvY2F0aW9uIHdpdGgKLQl0aGUgdmFsdWUgb2YgYnl0ZSBzdHJpZGUuCi0JKiBnZGJ0eXBlcy5o IChUWVBFX0JZVEVfU1RSSURFKTogTmV3IG1hY3JvLgotCShUWVBFX0JZVEVfU1RSSURFX0JMT0NL KTogTmV3IG1hY3JvLgotCShUWVBFX0JZVEVfU1RSSURFX0xPQ0xJU1QpOiBOZXcgbWFjcm8uCi0J KFRZUEVfQllURV9TVFJJREVfS0lORCk6IE5ldyBtYWNyby4KLQkqIHZhbGFyaXRoLmMgKHZhbHVl X3N1YnNjcmlwdGVkX3J2YWx1ZSk6IFVzZSBzdHJpZGUuCi0KLUNoYW5nZS1JZDogSTNkODEwYzBk YzM3ZjlkOWZkODRkYmE0Yzc2NGNkZWZjNTJkODUwMWUKLQotU2lnbmVkLW9mZi1ieTogS2V2ZW4g Qm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLS0tLQotIGdkYi9kd2FyZjJyZWFkLmMgfCAg IDEzICsrKysrKysrKysrLS0KLSBnZGIvZ2RidHlwZXMuYyAgIHwgICA0MCArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tCi0gZ2RiL2dkYnR5cGVzLmggICB8ICAgMTcgKysr KysrKysrKysrKysrKysKLSBnZGIvdmFsYXJpdGguYyAgIHwgICAxNCArKysrKysrKysrKysrLQot IDQgZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotSW5k ZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2R3YXJmMnJlYWQuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTQtMDYtMTYgMjM6 MjQ6MTIuNzQxNTg0MzE1ICswMjAwCi0rKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYy cmVhZC5jCTIwMTQtMDYtMTYgMjM6MjU6MTIuNzAyNjQwOTEwICswMjAwCi1AQCAtMTQ2OTYsNyAr MTQ2OTYsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllCi0gICBz dHJ1Y3QgdHlwZSAqYmFzZV90eXBlLCAqb3JpZ19iYXNlX3R5cGU7Ci0gICBzdHJ1Y3QgdHlwZSAq cmFuZ2VfdHlwZTsKLSAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0tICBzdHJ1Y3QgZHluYW1p Y19wcm9wIGxvdywgaGlnaDsKLSsgIHN0cnVjdCBkeW5hbWljX3Byb3AgbG93LCBoaWdoLCBzdHJp ZGU7Ci0gICBpbnQgbG93X2RlZmF1bHRfaXNfdmFsaWQ7Ci0gICBpbnQgaGlnaF9ib3VuZF9pc19j b3VudCA9IDA7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotQEAgLTE0NzE2LDcgKzE0NzE2LDkgQEAg cmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZQotIAotICAgbG93LmtpbmQg PSBQUk9QX0NPTlNUOwotICAgaGlnaC5raW5kID0gUFJPUF9DT05TVDsKLSsgIHN0cmlkZS5raW5k ID0gUFJPUF9DT05TVDsKLSAgIGhpZ2guZGF0YS5jb25zdF92YWwgPSAwOwotKyAgc3RyaWRlLmRh dGEuY29uc3RfdmFsID0gMDsKLSAKLSAgIC8qIFNldCBMT1dfREVGQVVMVF9JU19WQUxJRCBpZiBj dXJyZW50IGxhbmd1YWdlIGFuZCBEV0FSRiB2ZXJzaW9uIGFsbG93Ci0gICAgICBvbWl0dGluZyBE V19BVF9sb3dlcl9ib3VuZC4gICovCi1AQCAtMTQ3NDksNiArMTQ3NTEsMTMgQEAgcmVhZF9zdWJy YW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZQotICAgICAgIGJyZWFrOwotICAgICB9Ci0g Ci0rICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9zdHJpZGUsIGN1KTsKLSsg IGlmIChhdHRyKQotKyAgICBpZiAoIWF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1 LCAmc3RyaWRlLCBOVUxMLCAwKSkKLSsgICAgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxh aW50cywgXygiTWlzc2luZyBEV19BVF9ieXRlX3N0cmlkZSAiCi0rICAgICAgICAgICAgICAgICAg Ii0gRElFIGF0IDB4JXggW2luIG1vZHVsZSAlc10iKSwKLSsgICAgICAgICAgICAgZGllLT5vZmZz ZXQuc2VjdF9vZmYsIG9iamZpbGVfbmFtZSAoY3UtPm9iamZpbGUpKTsKLSsKLSAgIGF0dHIgPSBk d2FyZjJfYXR0ciAoZGllLCBEV19BVF9sb3dlcl9ib3VuZCwgY3UpOwotICAgaWYgKGF0dHIpCi0g ICAgIGF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmbG93LCBOVUxMLCAwKTsK LUBAIC0xNDgyNSw3ICsxNDgzNCw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9p bmZvICpkaWUKLSAgICAgICAmJiAhVFlQRV9VTlNJR05FRCAoYmFzZV90eXBlKSAmJiAoaGlnaC5k YXRhLmNvbnN0X3ZhbCAmIG5lZ2F0aXZlX21hc2spKQotICAgICBoaWdoLmRhdGEuY29uc3RfdmFs IHw9IG5lZ2F0aXZlX21hc2s7Ci0gCi0tICByYW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUg KE5VTEwsIG9yaWdfYmFzZV90eXBlLCAmbG93LCAmaGlnaCk7Ci0rICByYW5nZV90eXBlID0gY3Jl YXRlX3JhbmdlX3R5cGUgKE5VTEwsIG9yaWdfYmFzZV90eXBlLCAmbG93LCAmaGlnaCwgJnN0cmlk ZSk7Ci0gCi0gICBpZiAoaGlnaF9ib3VuZF9pc19jb3VudCkKLSAgICAgVFlQRV9SQU5HRV9EQVRB IChyYW5nZV90eXBlKS0+ZmxhZ191cHBlcl9ib3VuZF9pc19jb3VudCA9IDE7Ci1JbmRleDogZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03Ljcu OTAuMjAxNDA2MTMub3JpZy9nZGIvZ2RidHlwZXMuYwkyMDE0LTA2LTE2IDIzOjI0OjEyLjc0MTU4 NDMxNSArMDIwMAotKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5cGVzLmMJMjAxNC0w Ni0xNiAyMzoyNToxMi43MDQ2NDA5MTEgKzAyMDAKLUBAIC04MDUsNyArODA1LDggQEAgYWxsb2Nh dGVfc3R1Yl9tZXRob2QgKHN0cnVjdCB0eXBlICp0eXBlKQotIHN0cnVjdCB0eXBlICoKLSBjcmVh dGVfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlLCBzdHJ1Y3QgdHlwZSAqaW5k ZXhfdHlwZSwKLSAJCSAgIGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKmxvd19ib3VuZCwKLS0J CSAgIGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKmhpZ2hfYm91bmQpCi0rCQkgICBjb25zdCBz dHJ1Y3QgZHluYW1pY19wcm9wICpoaWdoX2JvdW5kLAotKwkJICAgY29uc3Qgc3RydWN0IGR5bmFt aWNfcHJvcCAqc3RyaWRlKQotIHsKLSAgIGlmIChyZXN1bHRfdHlwZSA9PSBOVUxMKQotICAgICBy ZXN1bHRfdHlwZSA9IGFsbG9jX3R5cGVfY29weSAoaW5kZXhfdHlwZSk7Ci1AQCAtODIwLDYgKzgy MSw3IEBAIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3QKLSAgICAgVFlQ RV9aQUxMT0MgKHJlc3VsdF90eXBlLCBzaXplb2YgKHN0cnVjdCByYW5nZV9ib3VuZHMpKTsKLSAg IFRZUEVfUkFOR0VfREFUQSAocmVzdWx0X3R5cGUpLT5sb3cgPSAqbG93X2JvdW5kOwotICAgVFlQ RV9SQU5HRV9EQVRBIChyZXN1bHRfdHlwZSktPmhpZ2ggPSAqaGlnaF9ib3VuZDsKLSsgIFRZUEVf UkFOR0VfREFUQSAocmVzdWx0X3R5cGUpLT5zdHJpZGUgPSAqc3RyaWRlOwotIAotICAgaWYgKGxv d19ib3VuZC0+a2luZCA9PSBQUk9QX0NPTlNUICYmIGxvd19ib3VuZC0+ZGF0YS5jb25zdF92YWwg Pj0gMCkKLSAgICAgVFlQRV9VTlNJR05FRCAocmVzdWx0X3R5cGUpID0gMTsKLUBAIC04NDEsNyAr ODQzLDcgQEAgc3RydWN0IHR5cGUgKgotIGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoc3RydWN0 IHR5cGUgKnJlc3VsdF90eXBlLCBzdHJ1Y3QgdHlwZSAqaW5kZXhfdHlwZSwKLSAJCQkgIExPTkdF U1QgbG93X2JvdW5kLCBMT05HRVNUIGhpZ2hfYm91bmQpCi0gewotLSAgc3RydWN0IGR5bmFtaWNf cHJvcCBsb3csIGhpZ2g7Ci0rICBzdHJ1Y3QgZHluYW1pY19wcm9wIGxvdywgaGlnaCwgc3RyaWRl OwotIAotICAgbG93LmtpbmQgPSBQUk9QX0NPTlNUOwotICAgbG93LmRhdGEuY29uc3RfdmFsID0g bG93X2JvdW5kOwotQEAgLTg0OSw3ICs4NTEsMTEgQEAgY3JlYXRlX3N0YXRpY19yYW5nZV90eXBl IChzdHJ1Y3QgdHlwZSAqcgotICAgaGlnaC5raW5kID0gUFJPUF9DT05TVDsKLSAgIGhpZ2guZGF0 YS5jb25zdF92YWwgPSBoaWdoX2JvdW5kOwotIAotLSAgcmVzdWx0X3R5cGUgPSBjcmVhdGVfcmFu Z2VfdHlwZSAocmVzdWx0X3R5cGUsIGluZGV4X3R5cGUsICZsb3csICZoaWdoKTsKLSsgIHN0cmlk ZS5raW5kID0gUFJPUF9DT05TVDsKLSsgIHN0cmlkZS5kYXRhLmNvbnN0X3ZhbCA9IDA7Ci0rCi0r ICByZXN1bHRfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChyZXN1bHRfdHlwZSwgaW5kZXhfdHlw ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb3csICZoaWdoLCAmc3Ry aWRlKTsKLSAKLSAgIHJldHVybiByZXN1bHRfdHlwZTsKLSB9Ci1AQCAtMTAwNiwxNiArMTAxMiwy MSBAQCBjcmVhdGVfYXJyYXlfdHlwZV93aXRoX3N0cmlkZSAoc3RydWN0IHR5Ci0gICBpZiAoaGFz X3N0YXRpY19yYW5nZSAoVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKSkKLSAgICAgICAmJiBk d2FyZjJfYWRkcmVzc19kYXRhX3ZhbGlkIChyZXN1bHRfdHlwZSkpCi0gICAgIHsKLS0gICAgICBM T05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKLSsgICAgICBMT05HRVNUIGxvd19ib3VuZCwg aGlnaF9ib3VuZCwgYnl0ZV9zdHJpZGU7Ci0gCi0gICAgICAgaWYgKGdldF9kaXNjcmV0ZV9ib3Vu ZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDApCi0gCWxvd19ib3Vu ZCA9IGhpZ2hfYm91bmQgPSAwOwotICAgICAgIENIRUNLX1RZUEVERUYgKGVsZW1lbnRfdHlwZSk7 Ci0rCi0rICAgICAgYnl0ZV9zdHJpZGUgPSBhYnMgKFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5 cGUpKTsKLSsKLSAgICAgICAvKiBCZSBjYXJlZnVsIHdoZW4gc2V0dGluZyB0aGUgYXJyYXkgbGVu Z3RoLiAgQWRhIGFycmF5cyBjYW4gYmUKLSAJIGVtcHR5IGFycmF5cyB3aXRoIHRoZSBoaWdoX2Jv dW5kIGJlaW5nIHNtYWxsZXIgdGhhbiB0aGUgbG93X2JvdW5kLgotIAkgSW4gc3VjaCBjYXNlcywg dGhlIGFycmF5IGxlbmd0aCBzaG91bGQgYmUgemVyby4gICovCi0gICAgICAgaWYgKGhpZ2hfYm91 bmQgPCBsb3dfYm91bmQpCi0gCVRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSAwOwotKyAgICAg IGVsc2UgaWYgKGJ5dGVfc3RyaWRlID4gMCkKLSsJVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9 IGJ5dGVfc3RyaWRlICogKGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsKLSAgICAgICBlbHNl IGlmIChiaXRfc3RyaWRlID4gMCkKLSAJVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9Ci0gCSAg KGJpdF9zdHJpZGUgKiAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpICsgNykgLyA4OwotQEAg LTE2OTcsNyArMTcwOCw3IEBAIHJlc29sdmVfZHluYW1pY19yYW5nZSAoc3RydWN0IHR5cGUgKmR5 bl8KLSAgIHN0cnVjdCB0eXBlICpzdGF0aWNfcmFuZ2VfdHlwZTsKLSAgIGNvbnN0IHN0cnVjdCBk eW5hbWljX3Byb3AgKnByb3A7Ci0gICBjb25zdCBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24g KmJhdG9uOwotLSAgc3RydWN0IGR5bmFtaWNfcHJvcCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7Ci0r ICBzdHJ1Y3QgZHluYW1pY19wcm9wIGxvd19ib3VuZCwgaGlnaF9ib3VuZCwgc3RyaWRlOwotICAg c3RydWN0IHR5cGUgKnJhbmdlX2NvcHkgPSBjb3B5X3R5cGUgKGR5bl9yYW5nZV90eXBlKTsKLSAK LSAgIGdkYl9hc3NlcnQgKFRZUEVfQ09ERSAoZHluX3JhbmdlX3R5cGUpID09IFRZUEVfQ09ERV9S QU5HRSk7Ci1AQCAtMTcyOSwxMCArMTc0MCwxNyBAQCByZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHN0 cnVjdCB0eXBlICpkeW5fCi0gICAgICAgaGlnaF9ib3VuZC5raW5kID0gUFJPUF9VTkRFRklORUQ7 Ci0gICAgICAgaGlnaF9ib3VuZC5kYXRhLmNvbnN0X3ZhbCA9IDA7Ci0gICAgIH0KLSsgIAotKyAg cHJvcCA9ICZUWVBFX1JBTkdFX0RBVEEgKGR5bl9yYW5nZV90eXBlKS0+c3RyaWRlOwotKyAgaWYg KGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgYWRkciwgJnZhbHVlKSkKLSsgICAgewot KyAgICAgIHN0cmlkZS5raW5kID0gUFJPUF9DT05TVDsKLSsgICAgICBzdHJpZGUuZGF0YS5jb25z dF92YWwgPSB2YWx1ZTsKLSsgICAgfQotIAotICAgc3RhdGljX3JhbmdlX3R5cGUgPSBjcmVhdGVf cmFuZ2VfdHlwZSAocmFuZ2VfY29weSwKLSAJCQkJCSBUWVBFX1RBUkdFVF9UWVBFIChyYW5nZV9j b3B5KSwKLS0JCQkJCSAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCk7Ci0rCQkJCQkgJmxvd19ib3Vu ZCwgJmhpZ2hfYm91bmQsICZzdHJpZGUpOwotICAgVFlQRV9SQU5HRV9EQVRBIChzdGF0aWNfcmFu Z2VfdHlwZSktPmZsYWdfYm91bmRfZXZhbHVhdGVkID0gMTsKLSAgIHJldHVybiBzdGF0aWNfcmFu Z2VfdHlwZTsKLSB9Ci1AQCAtMTk5Niw3ICsyMDE0LDE3IEBAIHJlc29sdmVfZHluYW1pY190eXBl IChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSAgIHByb3AgPSBUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUp OwotICAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgYWRkciwgJnZhbHVlKSkK LSAgICAgewotKyAgICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlID0gVFlQRV9JTkRFWF9UWVBF ICh0eXBlKTsKLSsKLSsgICAgICAvKiBBZGp1c3QgdGhlIGRhdGEgbG9jYXRpb24gd2l0aCB0aGUg dmFsdWUgb2YgYnl0ZSBzdHJpZGUgaWYgc2V0LCB3aGljaAotKyAgICAgICAgIGNhbiBkZXNjcmli ZSB0aGUgc2VwYXJhdGlvbiBiZXR3ZWVuIHN1Y2Nlc3NpdmUgZWxlbWVudHMgYWxvbmcgdGhlCi0r ICAgICAgICAgZGltZW5zaW9uLiAgKi8KLSsgICAgICBpZiAoVFlQRV9CWVRFX1NUUklERSAocmFu Z2VfdHlwZSkgPCAwKQotKyAgICAgICAgdmFsdWUgKz0gKFRZUEVfSElHSF9CT1VORCAocmFuZ2Vf dHlwZSkgLSBUWVBFX0xPV19CT1VORCAocmFuZ2VfdHlwZSkpCi0rICAgICAgICAgICAgICAgICAg KiBUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKTsKLSsKLSAgICAgICBhZGp1c3RlZF9hZGRy ZXNzID0gdmFsdWU7Ci0rCi0gICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIgKHR5cGUpID0g dmFsdWU7Ci0gICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQgKHR5cGUpID0gUFJPUF9DT05T VDsKLSAgICAgfQotSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5cGVzLmgKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAx NC0wNi0xNiAyMzoyNDoxMi43NDE1ODQzMTUgKzAyMDAKLSsrKyBnZGItNy43LjkwLjIwMTQwNjEz L2dkYi9nZGJ0eXBlcy5oCTIwMTQtMDYtMTYgMjM6MjU6MTIuNzA0NjQwOTExICswMjAwCi1AQCAt NjcwLDYgKzY3MCwxMCBAQCBzdHJ1Y3QgbWFpbl90eXBlCi0gCi0gICAgICAgc3RydWN0IGR5bmFt aWNfcHJvcCBoaWdoOwotIAotKyAgICAgIC8qICogU3RyaWRlIG9mIHJhbmdlLiAgKi8KLSsKLSsg ICAgICBzdHJ1Y3QgZHluYW1pY19wcm9wIHN0cmlkZTsKLSsKLSAgICAgICAvKiBUcnVlIGlmIEhJ R0ggcmFuZ2UgYm91bmQgY29udGFpbnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUKLSAJ IHN1YnJhbmdlLiBUaGlzIGFmZmVjdHMgaG93IHRoZSBmaW5hbCBoaWdodCBib3VuZCBpcyBjb21w dXRlZC4gICovCi0gCi1AQCAtMTIxOSw2ICsxMjIzLDE1IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRl X2duYXRfYXV4X3R5cGUgKHN0cnUKLSAgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+aGln aC5raW5kCi0gI2RlZmluZSBUWVBFX0xPV19CT1VORF9LSU5EKHJhbmdlX3R5cGUpIFwKLSAgIFRZ UEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93LmtpbmQKLSsjZGVmaW5lIFRZUEVfQllURV9T VFJJREUocmFuZ2VfdHlwZSkgXAotKyAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5zdHJp ZGUuZGF0YS5jb25zdF92YWwKLSsjZGVmaW5lIFRZUEVfQllURV9TVFJJREVfQkxPQ0socmFuZ2Vf dHlwZSkgXAotKyAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5zdHJpZGUuZGF0YS5sb2Nl eHByCi0rI2RlZmluZSBUWVBFX0JZVEVfU1RSSURFX0xPQ0xJU1QocmFuZ2VfdHlwZSkgXAotKyAg VFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5zdHJpZGUuZGF0YS5sb2NsaXN0Ci0rI2RlZmlu ZSBUWVBFX0JZVEVfU1RSSURFX0tJTkQocmFuZ2VfdHlwZSkgXAotKyAgVFlQRV9SQU5HRV9EQVRB KHJhbmdlX3R5cGUpLT5zdHJpZGUua2luZAotKwotIAotIC8qIEF0dHJpYnV0ZSBhY2Nlc3NvcnMg Zm9yIFZMQSBzdXBwb3J0LiAgKi8KLSAjZGVmaW5lIFRZUEVfREFUQV9MT0NBVElPTih0aGlzdHlw ZSkgXAotQEAgLTEyNTAsNiArMTI2Myw5IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4 X3R5cGUgKHN0cnUKLSAgICBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEKFRZUEVfSU5ERVhfVFlQ RShhcnJheXR5cGUpKQotICNkZWZpbmUgVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9JU19VTkRFRklO RUQoYXJyYXl0eXBlKSBcCi0gICAgVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEKFRZUEVfSU5ERVhf VFlQRShhcnJheXR5cGUpKQotKyNkZWZpbmUgVFlQRV9BUlJBWV9TVFJJREVfSVNfVU5ERUZJTkVE KGFycmF5dHlwZSkgXAotKyAgIChUWVBFX0JZVEVfU1RSSURFKFRZUEVfSU5ERVhfVFlQRShhcnJh eXR5cGUpKSA9PSAwKQotKwotIAotICNkZWZpbmUgVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9WQUxV RShhcnJheXR5cGUpIFwKLSAgICAoVFlQRV9ISUdIX0JPVU5EKFRZUEVfSU5ERVhfVFlQRSgoYXJy YXl0eXBlKSkpKQotQEAgLTE3MTgsNiArMTczNCw3IEBAIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3Jl YXRlX2FycmF5X3R5cGVfd2kKLSAKLSBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9yYW5nZV90 eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAotIAkJCQkgICAgICAgY29uc3Qgc3Ry dWN0IGR5bmFtaWNfcHJvcCAqLAotKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJv cCAqLAotIAkJCQkgICAgICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqKTsKLSAKLSBleHRl cm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3Qg dHlwZSAqLAotSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbGFyaXRoLmMKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3ZhbGFyaXRoLmMJMjAxNC0w Ni0xNiAyMzoyNDoxMi43NDE1ODQzMTUgKzAyMDAKLSsrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dk Yi92YWxhcml0aC5jCTIwMTQtMDYtMTYgMjM6MjY6NDIuNTQxNzI1ODg2ICswMjAwCi1AQCAtMTk2 LDYgKzE5Niw3IEBAIHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZhbHVlICoKLSAg IHN0cnVjdCB0eXBlICplbHRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUg KGFycmF5X3R5cGUpKTsKLSAgIHVuc2lnbmVkIGludCBlbHRfc2l6ZSA9IFRZUEVfTEVOR1RIIChl bHRfdHlwZSk7Ci0gICB1bnNpZ25lZCBpbnQgZWx0X29mZnM7Ci0rICBMT05HRVNUIGVsdF9zdHJp ZGUgPSBUWVBFX0JZVEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5X3R5cGUpKTsKLSAg IHN0cnVjdCB2YWx1ZSAqdjsKLSAKLSAgIGlmIChUWVBFX05PVF9BU1NPQ0lBVEVEIChhcnJheV90 eXBlKSkKLUBAIC0yMDMsNyArMjA0LDE4IEBAIHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3Ry dWN0IHZhbHVlICoKLSAgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKGFycmF5X3R5cGUpKQotICAg ICBlcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQi KSk7Ci0gCi0tICBlbHRfb2ZmcyA9IGVsdF9zaXplICogbG9uZ2VzdF90b19pbnQgKGluZGV4IC0g bG93ZXJib3VuZCk7Ci0rICBlbHRfb2ZmcyA9IGxvbmdlc3RfdG9faW50IChpbmRleCAtIGxvd2Vy Ym91bmQpOwotKwotKyAgaWYgKGVsdF9zdHJpZGUgPiAwKQotKyAgICBlbHRfb2ZmcyAqPSBlbHRf c3RyaWRlOwotKyAgZWxzZSBpZiAoZWx0X3N0cmlkZSA8IDApCi0rICAgIHsKLSsgICAgICBpbnQg b2ZmcyA9IChlbHRfb2ZmcyArIDEpICogZWx0X3N0cmlkZTsKLSsKLSsgICAgICBlbHRfb2ZmcyA9 IFRZUEVfTEVOR1RIIChhcnJheV90eXBlKSArIG9mZnM7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAg ZWx0X29mZnMgKj0gZWx0X3NpemU7Ci0gCi0gICBpZiAoaW5kZXggPCBsb3dlcmJvdW5kIHx8ICgh VFlQRV9BUlJBWV9VUFBFUl9CT1VORF9JU19VTkRFRklORUQgKGFycmF5X3R5cGUpCi0gCQkJICAg ICAmJiBlbHRfb2ZmcyA+PSBUWVBFX0xFTkdUSCAoYXJyYXlfdHlwZSkpKQoKZGlmZiAtLWdpdCBh L2dkYi12bGEtaW50ZWwtMTJvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0xMm9mMjMucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMmVhYjAuLjAwMDAwMDAKLS0tIGEvZ2Ri LXZsYS1pbnRlbC0xMm9mMjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNDMgKzAsMCBAQAot U3ViamVjdDogW1BBVENIIDEyLzIzXSB0ZXN0OiBiYXNpYyB0ZXN0cyBmb3IgZHluYW1pYyBhcnJh eSBldmFsdWF0aW9ucyBpbiBGb3J0cmFuLgotTWVzc2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC0x My1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLVRlc3RzIGVuc3VyZSB0 aGF0IHZhbHVlcyBvZiBGb3J0cmFuIGR5bmFtaWMgYXJyYXlzCi1jYW4gYmUgZXZhbHVhdGVkIGNv cnJlY3RseSBpbiB2YXJpb3VzIHdheXMgYW5kIHN0YXRlcy4KLQotMjAxNC0wNS0yOCAgS2V2ZW4g Qm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0gICAgICAgICAgICBTYW5pbWlyIEFnb3Zp YyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNvbT4KLQotdGVzdHN1aXRlL2dkYi5mb3J0cmFuLzoK LQotCSogdmxhLmY5MDogTmV3IGZpbGUuCi0JKiB2bGEtdmFsdWUuZXhwOiBOZXcgZmlsZS4KLQot Q2hhbmdlLUlkOiBJMDIyOWMzYjU4ZjcyYWU4OWMyZWU0MmQxMjE5ZTQ1MzhjYjZiZjAyMwotCi1T aWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotLS0tCi0g Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUuZXhwIHwgIDE0OCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEuZjkw ICAgICAgIHwgICA1NiArKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDIwNCBpbnNlcnRp b25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxh LXZhbHVlLmV4cAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3ZsYS5mOTAKLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZh bHVlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLmV4cAotbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQ3YjhhMWUKLS0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLmV4cAotQEAgLTAsMCArMSwx NDggQEAKLSsjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzdGFuZGFyZF90ZXN0ZmlsZSAi dmxhLmY5MCIKLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAk e3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKLSsgICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKLSsg ICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVy cm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0r fQotKwotKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gbm9uIGFsbG9jYXRlZCBWTEEKLStnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1pbml0Il0KLStnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAidmxhMS1pbml0IgotK2dkYl90ZXN0ICJwcmludCB2bGExIiAiID0g PG5vdCBhbGxvY2F0ZWQ+IiAicHJpbnQgbm9uLWFsbG9jYXRlZCB2bGExIgotK2dkYl90ZXN0ICJw cmludCAmdmxhMSIgXAotKyAgIiA9IFxcXChQVFIgVE8gLT4gXFxcKCByZWFsXFxcKGtpbmQ9NFxc XCkgXFxcKDxub3QgYWxsb2NhdGVkPlxcXClcXFwpXFxcKSAkaGV4IiBcCi0rICAicHJpbnQgbm9u LWFsbG9jYXRlZCAmdmxhMSIKLStnZGJfdGVzdCAicHJpbnQgdmxhMSgxLDEsMSkiICJubyBzdWNo IHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIgXAotKyAgInByaW50IG1lbWJl ciBpbiBub24tYWxsb2NhdGVkIHZsYTEgKDEpIgotK2dkYl90ZXN0ICJwcmludCB2bGExKDEwMSwy MDIsMzAzKSIgXAotKyAgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYWxsb2Nh dGVkIiBcCi0rICAicHJpbnQgbWVtYmVyIGluIG5vbi1hbGxvY2F0ZWQgdmxhMSAoMikiCi0rZ2Ri X3Rlc3QgInByaW50IHZsYTEoNSwyLDE4KT0xIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNh dXNlIG5vdCBhbGxvY2F0ZWQiIFwKLSsgICJzZXQgbWVtYmVyIGluIG5vbi1hbGxvY2F0ZWQgdmxh MSIKLSsKLSsjIFRyeSB0byBhY2Nlc3MgdmFsdWUgaW4gYWxsb2NhdGVkIFZMQQotK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWFsbG9jYXRlZCJdCi0rZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgInZsYTItYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJuZXh0IiAiXFxk KyhcXHR8XFxzKSt2bGExXFxcKDMsIDYsIDlcXFwpID0gNDIiIFwKLSsgICJzdGVwIG92ZXIgdmFs dWUgYXNzaWdubWVudCBvZiB2bGExIgotK2dkYl90ZXN0ICJwcmludCAmdmxhMSIgXAotKyAgIiA9 IFxcXChQVFIgVE8gLT4gXFxcKCByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDEwLDEwLDEwXFxcKVxc XClcXFwpICRoZXgiIFwKLSsgICJwcmludCBhbGxvY2F0ZWQgJnZsYTEiCi0rZ2RiX3Rlc3QgInBy aW50IHZsYTEoMywgNiwgOSkiICIgPSAxMzExIiAicHJpbnQgYWxsb2NhdGVkIHZsYTEoMyw2LDkp IgotK2dkYl90ZXN0ICJwcmludCB2bGExKDEsIDMsIDgpIiAiID0gMTMxMSIgInByaW50IGFsbG9j YXRlZCB2bGExKDEsMyw4KSIKLStnZGJfdGVzdCAicHJpbnQgdmxhMSg5LCA5LCA5KSA9IDk5OSIg IiA9IDk5OSIgXAotKyAgInByaW50IGFsbG9jYXRlZCB2bGExKDksOSw5KT0xIgotKwotKyMgVHJ5 IHRvIGFjY2VzcyB2YWx1ZXMgaW4gYWxsb2NhdGVkIFZMQSBhZnRlciBzcGVjaWZpYyBhc3NpZ25t ZW50Ci0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtZmlsbGVkIl0K LStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMS1maWxsZWQiCi0rZ2RiX3Rlc3QgInBy aW50IHZsYTEoMywgNiwgOSkiICIgPSA0MiIgXAotKyAgInByaW50IGFsbG9jYXRlZCB2bGExKDMs Niw5KSBhZnRlciBzcGVjaWZpYyBhc3NpZ25tZW50IChmaWxsZWQpIgotK2dkYl90ZXN0ICJwcmlu dCB2bGExKDEsIDMsIDgpIiAiID0gMTAwMSIgXAotKyAgInByaW50IGFsbG9jYXRlZCB2bGExKDEs Myw4KSBhZnRlciBzcGVjaWZpYyBhc3NpZ25tZW50IChmaWxsZWQpIgotK2dkYl90ZXN0ICJwcmlu dCB2bGExKDksIDksIDkpIiAiID0gOTk5IiBcCi0rICAicHJpbnQgYWxsb2NhdGVkIHZsYTEoOSw5 LDkpIGFmdGVyIGFzc2lnbm1lbnQgaW4gZGVidWdnZXIgKGZpbGxlZCkiCi0rCi0rIyBUcnkgdG8g YWNjZXNzIHZhbHVlcyBpbiB1bmRlZmluZWQgcG9pbnRlciB0byBWTEEgKGRhbmdsaW5nKQotK2dk Yl90ZXN0ICJwcmludCBwdmxhIiAiID0gPG5vdCBhc3NvY2lhdGVkPiIgInByaW50IHVuZGVmaW5l ZCBwdmxhIgotK2dkYl90ZXN0ICJwcmludCAmcHZsYSIgXAotKyAgIiA9IFxcXChQVFIgVE8gLT4g XFxcKCByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDxub3QgYXNzb2NpYXRlZD5cXFwpXFxcKVxcXCkg JGhleCIgXAotKyAgInByaW50IG5vbi1hc3NvY2lhdGVkICZwdmxhIgotK2dkYl90ZXN0ICJwcmlu dCBwdmxhKDEsIDMsIDgpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhc3Nv Y2lhdGVkIiBcCi0rICAicHJpbnQgdW5kZWZpbmVkIHB2bGEoMSwzLDgpIgotKwotKyMgVHJ5IHRv IGFjY2VzcyB2YWx1ZXMgaW4gcG9pbnRlciB0byBWTEEgYW5kIGNvbXBhcmUgdGhlbQotK2dkYl9i cmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLWFzc29jaWF0ZWQiXQotK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInByaW50 ICZwdmxhIiBcCi0rICAiID0gXFxcKFBUUiBUTyAtPiBcXFwoIHJlYWxcXFwoa2luZD00XFxcKSBc XFwoMTAsMTAsMTBcXFwpXFxcKVxcXCkgJGhleCIgXAotKyAgInByaW50IGFzc29jaWF0ZWQgJnB2 bGEiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEoMywgNiwgOSkiICIgPSA0MiIgInByaW50IGFzc29j aWF0ZWQgcHZsYSgzLDYsOSkiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEoMSwgMywgOCkiICIgPSAx MDAxIiAicHJpbnQgYXNzb2NpYXRlZCBwdmxhKDEsMyw4KSIKLStnZGJfdGVzdCAicHJpbnQgcHZs YSg5LCA5LCA5KSIgIiA9IDk5OSIgInByaW50IGFzc29jaWF0ZWQgcHZsYSg5LDksOSkiCi0rCi0r IyBGaWxsIHZhbHVlcyB0byBWTEEgdXNpbmcgcG9pbnRlciBhbmQgY2hlY2sKLStnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1yZS1hc3NvY2lhdGVkIl0KLStnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAicHZsYS1yZS1hc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwcmlu dCBwdmxhKDUsIDQ1LCAyMCkiIFwKLSsgICIgPSAxIiAicHJpbnQgcHZsYSg1LCA0NSwgMjApIGFm dGVyIGZpbGxlZCB1c2luZyBwb2ludGVyIgotK2dkYl90ZXN0ICJwcmludCB2bGEyKDUsIDQ1LCAy MCkiIFwKLSsgICIgPSAxIiAicHJpbnQgdmxhMig1LCA0NSwgMjApIGFmdGVyIGZpbGxlZCB1c2lu ZyBwb2ludGVyIgotK2dkYl90ZXN0ICJwcmludCBwdmxhKDcsIDQ1LCAxNCkiICIgPSAyIiBcCi0r ICAicHJpbnQgcHZsYSg3LCA0NSwgMTQpIGFmdGVyIGZpbGxlZCB1c2luZyBwb2ludGVyIgotK2dk Yl90ZXN0ICJwcmludCB2bGEyKDcsIDQ1LCAxNCkiICIgPSAyIiBcCi0rICAicHJpbnQgdmxhMig3 LCA0NSwgMTQpIGFmdGVyIGZpbGxlZCB1c2luZyBwb2ludGVyIgotKwotKyMgVHJ5IHRvIGFjY2Vz cyB2YWx1ZXMgb2YgZGVhc3NvY2lhdGVkIFZMQSBwb2ludGVyCi0rZ2RiX2JyZWFrcG9pbnQgW2dk Yl9nZXRfbGluZV9udW1iZXIgInB2bGEtZGVhc3NvY2lhdGVkIl0KLStnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAicHZsYS1kZWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEoNSwg NDUsIDIwKSIgXAotKyAgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYXNzb2Np YXRlZCIgXAotKyAgInByaW50IHB2bGEoNSwgNDUsIDIwKSBhZnRlciBkZWFzc29jaWF0ZWQiCi0r Z2RiX3Rlc3QgInByaW50IHB2bGEoNywgNDUsIDE0KSIgXAotKyAgIm5vIHN1Y2ggdmVjdG9yIGVs ZW1lbnQgYmVjYXVzZSBub3QgYXNzb2NpYXRlZCIgXAotKyAgInByaW50IHB2bGEoNywgNDUsIDE0 KSBhZnRlciBkaXNzYXNvY2lhdGVkIgotK2dkYl90ZXN0ICJwcmludCBwdmxhIiAiID0gPG5vdCBh c3NvY2lhdGVkPiIgXAotKyAgInByaW50IHZsYTEgYWZ0ZXIgZGVhc3NvY2lhdGVkIgotKwotKyMg VHJ5IHRvIGFjY2VzcyB2YWx1ZXMgb2YgZGVhbGxvY2F0ZWQgVkxBCi0rZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtZGVhbGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90 b19icmVha3BvaW50ICJ2bGExLWRlYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwcmludCB2bGExKDMs IDYsIDkpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwK LSsgICJwcmludCBhbGxvY2F0ZWQgdmxhMSgzLDYsOSkgYWZ0ZXIgc3BlY2lmaWMgYXNzaWdubWVu dCAoZGVhbGxvY2F0ZWQpIgotK2dkYl90ZXN0ICJwcmludCB2bGExKDEsIDMsIDgpIiAibm8gc3Vj aCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKLSsgICJwcmludCBhbGxv Y2F0ZWQgdmxhMSgxLDMsOCkgYWZ0ZXIgc3BlY2lmaWMgYXNzaWdubWVudCAoZGVhbGxvY2F0ZWQp IgotK2dkYl90ZXN0ICJwcmludCB2bGExKDksIDksIDkpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVu dCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKLSsgICJwcmludCBhbGxvY2F0ZWQgdmxhMSg5LDks OSkgYWZ0ZXIgYXNzaWdubWVudCBpbiBkZWJ1Z2dlciAoZGVhbGxvY2F0ZWQpIgotKwotKwotKyMg VHJ5IHRvIGFzc2lnbiBWTEEgdG8gdXNlciB2YXJpYWJsZQotK2NsZWFuX3Jlc3RhcnQgJHt0ZXN0 ZmlsZX0KLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRu J3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KLStnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMi1hbGxvY2F0ZWQiXQotK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJ2bGEyLWFsbG9jYXRlZCIKLStnZGJfdGVzdCAibmV4dCIgIlxc ZCsuKnZsYTFcXCgzLCA2LCA5XFwpID0gNDIiICJuZXh0ICgxKSIKLSsKLStnZGJfdGVzdF9ub19v dXRwdXQgInNldCBcJG15dmFyID0gdmxhMSIgInNldCBcJG15dmFyID0gdmxhMSIKLStnZGJfdGVz dCAicHJpbnQgXCRteXZhciIgXAotKyAgIiA9IFxcKCAqXFwoICpcXCggKjEzMTEsICoxMzExLCAq MTMxMSxcWygpMTMxMSwgLlxdKlxcKSIgXAotKyAgInByaW50IFwkbXl2YXIgc2V0IHRvIHZsYTEi Ci0rCi0rZ2RiX3Rlc3QgIm5leHQiICJcXGQrLip2bGExXFwoMSwgMywgOFxcKSA9IDEwMDEiICJu ZXh0ICgyKSIKLStnZGJfdGVzdCAicHJpbnQgXCRteXZhcigzLDYsOSkiICIgPSAxMzExIiAicHJp bnQgXCRteXZhcigzLDYsOSkiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgInB2bGEtYXNzb2NpYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2bGEt YXNzb2NpYXRlZCIKLStnZGJfdGVzdF9ub19vdXRwdXQgInNldCBcJG15cHZhciA9IHB2bGEiICJz ZXQgXCRteXB2YXIgPSBwdmxhIgotK2dkYl90ZXN0ICJwcmludCBcJG15cHZhcigxLDMsOCkiICIg PSAxMDAxIiAicHJpbnQgXCRteXB2YXIoMSwzLDgpIgotKwotKyMgZGVhbGxvY2F0ZSBwb2ludGVy IGFuZCBtYWtlIHN1cmUgdXNlciBkZWZpbmVkIHZhcmlhYmxlIHN0aWxsIGhhcyB0aGUKLSsjIHJp Z2h0IHZhbHVlLgotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLWRl YXNzb2NpYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2bGEtZGVhc3NvY2lh dGVkIgotK2dkYl90ZXN0ICJwcmludCBcJG15cHZhcigxLDMsOCkiICIgPSAxMDAxIiBcCi0rICAi cHJpbnQgXCRteXB2YXIoMSwzLDgpIGFmdGVyIGRlYWxsb2NhdGVkIgotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vdmxhLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjczNDI1ZjMK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLmY5MAot QEAgLTAsMCArMSw1NiBAQAotKyEgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStwcm9ncmFt IHZsYQotKyAgcmVhbCwgdGFyZ2V0LCBhbGxvY2F0YWJsZSA6OiB2bGExICg6LCA6LCA6KQotKyAg cmVhbCwgdGFyZ2V0LCBhbGxvY2F0YWJsZSA6OiB2bGEyICg6LCA6LCA6KQotKyAgcmVhbCwgdGFy Z2V0LCBhbGxvY2F0YWJsZSA6OiB2bGEzICg6LCA6KQotKyAgcmVhbCwgcG9pbnRlciA6OiBwdmxh ICg6LCA6LCA6KQotKyAgbG9naWNhbCA6OiBsCi0rCi0rICBhbGxvY2F0ZSAodmxhMSAoMTAsMTAs MTApKSAgICAgICAgICAhIHZsYTEtaW5pdAotKyAgbCA9IGFsbG9jYXRlZCh2bGExKQotKwotKyAg YWxsb2NhdGUgKHZsYTIgKDE6Nyw0Mjo1MCwxMzozNSkpICAgISB2bGExLWFsbG9jYXRlZAotKyAg bCA9IGFsbG9jYXRlZCh2bGEyKQotKwotKyAgdmxhMSg6LCA6LCA6KSA9IDEzMTEgICAgICAgICAg ICAgICAgISB2bGEyLWFsbG9jYXRlZAotKyAgdmxhMSgzLCA2LCA5KSA9IDQyCi0rICB2bGExKDEs IDMsIDgpID0gMTAwMQotKyAgdmxhMSg2LCAyLCA3KSA9IDEzCi0rCi0rICB2bGEyKDosIDosIDop ID0gMTMxMSAgICAgICAgICAgICAgICAhIHZsYTEtZmlsbGVkCi0rICB2bGEyKDUsIDQ1LCAyMCkg PSA0MgotKwotKyAgcHZsYSA9PiB2bGExICAgICAgICAgICAgICAgICAgICAgICAgISB2bGEyLWZp bGxlZAotKyAgbCA9IGFzc29jaWF0ZWQocHZsYSkKLSsKLSsgIHB2bGEgPT4gdmxhMiAgICAgICAg ICAgICAgICAgICAgICAgICEgcHZsYS1hc3NvY2lhdGVkCi0rICBsID0gYXNzb2NpYXRlZChwdmxh KQotKyAgcHZsYSg1LCA0NSwgMjApID0gMQotKyAgcHZsYSg3LCA0NSwgMTQpID0gMgotKwotKyAg cHZsYSA9PiBudWxsKCkgICAgICAgICAgICAgICAgICAgICAgISBwdmxhLXJlLWFzc29jaWF0ZWQK LSsgIGwgPSBhc3NvY2lhdGVkKHB2bGEpCi0rCi0rICBkZWFsbG9jYXRlICh2bGExKSAgICAgICAg ICAgICAgICAgICAhIHB2bGEtZGVhc3NvY2lhdGVkCi0rICBsID0gYWxsb2NhdGVkKHZsYTEpCi0r Ci0rICBkZWFsbG9jYXRlICh2bGEyKSAgICAgICAgICAgICAgICAgICAhIHZsYTEtZGVhbGxvY2F0 ZWQKLSsgIGwgPSBhbGxvY2F0ZWQodmxhMikKLSsKLSsgIGFsbG9jYXRlICh2bGEzICgyLDIpKSAg ICAgICAgICAgICAgICEgdmxhMi1kZWFsbG9jYXRlZAotKyAgdmxhMyg6LDopID0gMTMKLStlbmQg cHJvZ3JhbSB2bGEKLS0tIAotMS43LjkuNQotCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0x M29mMjMucGF0Y2ggYi9nZGItdmxhLWludGVsLTEzb2YyMy5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMzE0ZmRjOC4uMDAwMDAwMAotLS0gYS9nZGItdmxhLWludGVsLTEzb2Yy My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3MyArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0gg MTMvMjNdIHRlc3Q6IGV2YWx1YXRlIEZvcnRyYW4gZHluYW1pYyBhcnJheXMgb2YgdHlwZXMuCi1N ZXNzYWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQwLTE0LWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxs QGludGVsLmNvbT4KLQotVGVzdHMgZW5zdXJlIHRoYXQgZHluYW1pYyBhcnJheXMgb2YgdmFyaW91 cyBGb3J0cmFuCi1kYXRhdHlwZXMgY2FuIGJlIGV2YWx1YXRlZCBjb3JyZWN0bHkuCi0KLTIwMTQt MDUtMjggIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotICAgICAgICAgICAg U2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+Ci0KLXRlc3RzdWl0ZS9n ZGIuZm9ydHJhbi86Ci0KLQkqIHZsYS10eXBlLmV4cDogTmV3IGZpbGUuCi0JKiB2bGEtdHlwZS5m OTA6IE5ldyBmaWxlLgotCi1DaGFuZ2UtSWQ6IEk3YzFhMzgxYzVjYjBhZDQ4ODcyYjc3OTkzZTdj N2ZkYWM4NWJjNzU2Ci0KLVNpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxrZXZlbi5ib2VsbEBp bnRlbC5jb20+Ci0tLS0KLSBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmV4cCB8 ICAxMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBnZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3ZsYS10eXBlLmY5MCB8ICAxMDcgKysrKysrKysrKysrKysrKysrKysrKysrKysr Ci0gMiBmaWxlcyBjaGFuZ2VkLCAyMzQgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmV4cAotIGNyZWF0ZSBtb2RlIDEw MDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmY5MAotCi1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS10eXBlLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAuLmFkNTBkOWMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vdmxhLXR5cGUuZXhwCi1AQCAtMCwwICsxLDEyNyBAQAotKyMgQ29weXJpZ2h0IDIwMTQg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgotKwotK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgotKwotK2lmIHsgW3ByZXBhcmVf Zm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAotKyAg ICAge2RlYnVnIGY5MCBxdWlldH1dIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVty dW50byBNQUlOX19dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3Bv aW50IE1BSU5fXyIKLSsgICAgY29udGludWUKLSt9Ci0rCi0rIyBDaGVjayBpZiBub3QgYWxsb2Nh dGVkIFZMQSBpbiB0eXBlIGRvZXMgbm90IGJyZWFrCi0rIyB0aGUgZGVidWdnZXIgd2hlbiBhY2Nl c3NpbmcgaXQuCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImJlZm9yZS1h bGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJiZWZvcmUtYWxsb2NhdGVk IgotK2dkYl90ZXN0ICJwcmludCB0d292IiAiID0gXFxcKCA8bm90IGFsbG9jYXRlZD4sIDxub3Qg YWxsb2NhdGVkPiBcXFwpIiBcCi0rICAicHJpbnQgdHdvdiBiZWZvcmUgYWxsb2NhdGVkIgotK2dk Yl90ZXN0ICJwcmludCB0d292JWl2bGExIiAiID0gPG5vdCBhbGxvY2F0ZWQ+IiBcCi0rICAicHJp bnQgdHdvdiVpdmxhMSBiZWZvcmUgYWxsb2NhdGVkIgotKwotKyMgQ2hlY2sgdHlwZSB3aXRoIG9u ZSBWTEEncyBpbnNpZGUKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAib25l di1maWxsZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJvbmV2LWZpbGxlZCIKLStn ZGJfdGVzdCAicHJpbnQgb25ldiVpdmxhKDUsIDExLCAyMykiICIgPSAxIiAicHJpbnQgb25ldiVp dmxhKDUsIDExLCAyMykiCi0rZ2RiX3Rlc3QgInByaW50IG9uZXYlaXZsYSgxLCAyLCAzKSIgIiA9 IDEyMyIgInByaW50IG9uZXYlaXZsYSgxLCAyLCAzKSIKLStnZGJfdGVzdCAicHJpbnQgb25ldiVp dmxhKDMsIDIsIDEpIiAiID0gMzIxIiAicHJpbnQgb25ldiVpdmxhKDMsIDIsIDEpIgotK2dkYl90 ZXN0ICJwdHlwZSBvbmV2IiBcCi0rICAidHlwZSA9IFR5cGUgb25lXHJcblxccytyZWFsXFxcKGtp bmQ9NFxcXCkgOjogaXZsYVxcXCgxMSwyMiwzM1xcXClcclxuRW5kIFR5cGUgb25lIiBcCi0rICAi cHR5cGUgb25ldiIKLSsKLSsjIENoZWNrIHR5cGUgd2l0aCB0d28gVkxBJ3MgaW5zaWRlCi0rZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInR3b3YtZmlsbGVkIl0KLStnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAidHdvdi1maWxsZWQiCi0rZ2RiX3Rlc3QgInByaW50IHR3b3Yl aXZsYTEoNSwgMTEsIDIzKSIgIiA9IDEiIFwKLSsgICJwcmludCB0d292JWl2bGExKDUsIDExLCAy MykiCi0rZ2RiX3Rlc3QgInByaW50IHR3b3YlaXZsYTEoMSwgMiwgMykiICIgPSAxMjMiIFwKLSsg ICJwcmludCB0d292JWl2bGExKDEsIDIsIDMpIgotK2dkYl90ZXN0ICJwcmludCB0d292JWl2bGEx KDMsIDIsIDEpIiAiID0gMzIxIiBcCi0rICAicHJpbnQgdHdvdiVpdmxhMSgzLCAyLCAxKSIKLStn ZGJfdGVzdCAicHR5cGUgdHdvdiIgXAotKyAgInR5cGUgPSBUeXBlIHR3b1xyXG5cXHMrcmVhbFxc XChraW5kPTRcXFwpIDo6IGl2bGExXFxcKDUsMTIsOTlcXFwpXHJcblxccytyZWFsXFxcKGtpbmQ9 NFxcXCkgOjogaXZsYTJcXFwoOSwxMlxcXClcclxuRW5kIFR5cGUgdHdvIiBcCi0rICAicHR5cGUg dHdvdiIKLSsKLSsjIENoZWNrIHR5cGUgd2l0aCBhdHRyaWJ1dGUgYXQgYmVnaW5uIG9mIHR5cGUK LStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidGhyZWV2LWZpbGxlZCJdCi0r Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInRocmVldi1maWxsZWQiCi0rZ2RiX3Rlc3QgInBy aW50IHRocmVldiVpdmxhKDEpIiAiID0gMSIgInByaW50IHRocmVldiVpdmxhKDEpIgotK2dkYl90 ZXN0ICJwcmludCB0aHJlZXYlaXZsYSg1KSIgIiA9IDQyIiAicHJpbnQgdGhyZWV2JWl2bGEoNSki Ci0rZ2RiX3Rlc3QgInByaW50IHRocmVldiVpdmxhKDE0KSIgIiA9IDI0IiAicHJpbnQgdGhyZWV2 JWl2bGEoMTQpIgotK2dkYl90ZXN0ICJwcmludCB0aHJlZXYlaXZhciIgIiA9IDMuMTRcXGQrPyIg InByaW50IHRocmVldiVpdmFyIgotK2dkYl90ZXN0ICJwdHlwZSB0aHJlZXYiIFwKLSsgICJ0eXBl ID0gVHlwZSB0aHJlZVxyXG5cXHMrcmVhbFxcXChraW5kPTRcXFwpIDo6IGl2YXJcclxuXFxzK3Jl YWxcXFwoa2luZD00XFxcKSA6OiBpdmxhXFxcKDIwXFxcKVxyXG5FbmQgVHlwZSB0aHJlZSIgXAot KyAgInB0eXBlIHRocmVldiIKLSsKLSsjIENoZWNrIHR5cGUgd2l0aCBhdHRyaWJ1dGUgYXQgZW5k IG9mIHR5cGUKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZm91cnYtZmls bGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiZm91cnYtZmlsbGVkIgotK2dkYl90 ZXN0ICJwcmludCBmb3VydiVpdmxhKDEpIiAiID0gMSIgInByaW50IGZvdXJ2JWl2bGEoMSkiCi0r Z2RiX3Rlc3QgInByaW50IGZvdXJ2JWl2bGEoMikiICIgPSAyIiAicHJpbnQgZm91cnYlaXZsYSgy KSIKLStnZGJfdGVzdCAicHJpbnQgZm91cnYlaXZsYSg3KSIgIiA9IDciICJwcmludCBmb3VydiVp dmxhKDcpIgotK2dkYl90ZXN0ICJwcmludCBmb3VydiVpdmxhKDEyKSIgIm5vIHN1Y2ggdmVjdG9y IGVsZW1lbnQiICJwcmludCBmb3VydiVpdmxhKDEyKSIKLStnZGJfdGVzdCAicHJpbnQgZm91cnYl aXZhciIgIiA9IDMuMTRcXGQrPyIgInByaW50IGZvdXJ2JWl2YXIiCi0rZ2RiX3Rlc3QgInB0eXBl IGZvdXJ2IiBcCi0rICAidHlwZSA9IFR5cGUgZm91clxyXG5cXHMrcmVhbFxcXChraW5kPTRcXFwp IDo6IGl2bGFcXFwoMTBcXFwpXHJcblxccytyZWFsXFxcKGtpbmQ9NFxcXCkgOjogaXZhclxyXG5F bmQgVHlwZSBmb3VyIiBcCi0rICAicHR5cGUgZm91cnYiCi0rCi0rIyBDaGVjayBWTEEgb2YgdHlw ZXMKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAib25ldmxhLWZpbGxlZCJd Ci0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm9uZXZsYS1maWxsZWQiCi0rZ2RiX3Rlc3Qg InByaW50IG9uZXZsYSgyLDIpJWl2bGEoMywgNiwgOSkiIFwKLSsgICIgPSAzNjkiICJwcmludCBv bmV2bGEoMiwyKSVpdmxhKDMsIDYsIDkpIgotK2dkYl90ZXN0ICJwcmludCBvbmV2bGEoMiwyKSVp dmxhKDksIDMsIDYpIiBcCi0rICAiID0gOTM2IiAicHJpbnQgb25ldmxhKDIsMiklaXZsYSg5LCAz LCA2KSIKLSsKLSsjIENoZWNrIG5lc3RlZCB0eXBlcyBjb250YWluaW5nIGEgVkxBCi0rZ2RiX2Jy ZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImZpdmV2LWZpbGxlZCJdCi0rZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgImZpdmV2LWZpbGxlZCIKLStnZGJfdGVzdCAicHJpbnQgZml2ZXYl dG9uZSVpdmxhKDUsIDUsIDEpIiAiID0gMSIgXAotKyAgInByaW50IGZpdmV2JXRvbmUlaXZsYSg1 LCA1LCAxKSIKLStnZGJfdGVzdCAicHJpbnQgZml2ZXYldG9uZSVpdmxhKDEsIDIsIDMpIiAiID0g MTIzIiBcCi0rICAicHJpbnQgZml2ZXYldG9uZSVpdmxhKDEsIDIsIDMpIgotK2dkYl90ZXN0ICJw cmludCBmaXZldiV0b25lJWl2bGEoMywgMiwgMSkiICIgPSAzMjEiIFwKLSsgICJwcmludCBmaXZl diV0b25lJWl2bGEoMywgMiwgMSkiCi0rZ2RiX3Rlc3QgInB0eXBlIGZpdmV2IiBcCi0rICAidHlw ZSA9IFR5cGUgZml2ZVxyXG5cXHMrVHlwZSBvbmVcclxuXFxzK3JlYWxcXFwoa2luZD00XFxcKSA6 OiBpdmxhXFxcKDEwLDEwLDEwXFxcKVxyXG5cXHMrRW5kIFR5cGUgb25lIDo6IHRvbmVcclxuRW5k IFR5cGUgZml2ZSIgXAotKyAgInB0eXBlIGZpdmV2IgotKwotKyMgQ2hlY2sgcG9pbnRlciB0byB0 eXBlLCBjb250YWluaW5nIGEgVkxBCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgIm9uZXAtYXNzb2NpYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm9uZXAt YXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgb25ldiIgIi4qcmVhbFxcXChraW5kPTRcXFwp IDo6IGl2bGFcXFwoMTEsMjIsMzNcXFwpLioiIFwKLSsgICJwdHlwZSBvbmV2IgotK2dkYl90ZXN0 ICJwdHlwZSBvbmVwIiAiLipyZWFsXFxcKGtpbmQ9NFxcXCkgOjogaXZsYVxcXCgxMSwyMiwzM1xc XCkuKiIgXAotKyAgInB0eXBlIG9uZXAiCi0rCi0rZ2RiX3Rlc3QgInByaW50IG9uZXYlaXZsYSIg IiA9IFxcKCAqXFwoICpcXCggKjIsICoyLCAqMixcWygpMiwgLlxdKlxcKSIgXAotKyAgInByaW50 IG9uZXYlaXZsYSIKLStnZGJfdGVzdCAicHJpbnQgb25ldiIgIiA9IFxcKCAqXFwoICpcXCggKlxc KCAqMiwgKjIsICoyLFxbKCkyLCAuXF0qXFwpIiBcCi0rICAicHJpbnQgb25ldiIKLStnZGJfdGVz dCAicHJpbnQgb25lcCIgIi4qcmVhbFxcXChraW5kPTRcXFwpIDo6IGl2bGFcXFwoMTEsMjIsMzNc XFwpLioiIFwKLSsgICJwcmludCBvbmVwIgotKwotK2dkYl90ZXN0ICJwdHlwZSBvbmV2JWl2bGEi ICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIFxcXCgxMSwyMiwzM1xcXCkiIFwKLSsgICJwdHlw ZSBvbmV2JWl2bGEiCi0rZ2RiX3Rlc3QgInB0eXBlIG9uZXAlaXZsYSIgInR5cGUgPSByZWFsXFxc KGtpbmQ9NFxcXCkgXFxcKDExLDIyLDMzXFxcKSIgXAotKyAgInB0eXBlIG9uZXAlaXZsYSIKLSsK LStnZGJfdGVzdCAicHR5cGUgb25ldiVpdmxhKDEsMSwxKSIgInR5cGUgPSByZWFsXFxcKGtpbmQ9 NFxcXCkiIFwKLSsgICJwdHlwZSBvbmV2JWl2bGEoMSwxLDEpIgotK2dkYl90ZXN0ICJwdHlwZSBv bmVwJWl2bGEoMSwxLDEpIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSIgXAotKyAgInB0eXBl IG9uZXAlaXZsYSgxLDEsMSkiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi92bGEtdHlwZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmY5MAot bmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjA2NjAwYzkKLS0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXR5cGUuZjkwCi1AQCAtMCww ICsxLDEwNyBAQAotKyEgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90 LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt cGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsKLStw cm9ncmFtIHZsYV9zdHJ1Y3QKLSsgIHR5cGUgOjogb25lCi0rICAgIHJlYWwsIGFsbG9jYXRhYmxl IDo6IGl2bGEgKDosIDosIDopCi0rICBlbmQgdHlwZSBvbmUKLSsgIHR5cGUgOjogdHdvCi0rICAg IHJlYWwsIGFsbG9jYXRhYmxlIDo6IGl2bGExICg6LCA6LCA6KQotKyAgICByZWFsLCBhbGxvY2F0 YWJsZSA6OiBpdmxhMiAoOiwgOikKLSsgIGVuZCB0eXBlIHR3bwotKyAgdHlwZSA6OiB0aHJlZQot KyAgICByZWFsIDo6IGl2YXIKLSsgICAgcmVhbCwgYWxsb2NhdGFibGUgOjogaXZsYSAoOikKLSsg IGVuZCB0eXBlIHRocmVlCi0rICB0eXBlIDo6IGZvdXIKLSsgICAgcmVhbCwgYWxsb2NhdGFibGUg OjogaXZsYSAoOikKLSsgICAgcmVhbCA6OiBpdmFyCi0rICBlbmQgdHlwZSBmb3VyCi0rICB0eXBl IDo6IGZpdmUKLSsgICAgdHlwZShvbmUpIDo6IHRvbmUKLSsgIGVuZCB0eXBlIGZpdmUKLSsKLSsg IHR5cGUob25lKSwgdGFyZ2V0ICAgICAgICA6OiBvbmV2Ci0rICB0eXBlKHR3bykgICAgICAgICAg ICAgICAgOjogdHdvdgotKyAgdHlwZSh0aHJlZSkgICAgICAgICAgICAgIDo6IHRocmVldgotKyAg dHlwZShmb3VyKSAgICAgICAgICAgICAgIDo6IGZvdXJ2Ci0rICB0eXBlKGZpdmUpICAgICAgICAg ICAgICAgOjogZml2ZXYKLSsgIHR5cGUob25lKSwgYWxsb2NhdGFibGUgICA6OiBvbmV2bGEoOiwg OikKLSsgIHR5cGUob25lKSwgcG9pbnRlciAgICAgICA6OiBvbmVwCi0rICBsb2dpY2FsICAgICAg ICAgICAgICAgICAgOjogbAotKyAgaW50ZWdlciAgICAgICAgICAgICAgICAgIDo6IGksIGoKLSsK LSsgIGFsbG9jYXRlIChvbmV2JWl2bGEgKDExLDIyLDMzKSkgICAgICAgICAhIGJlZm9yZS1hbGxv Y2F0ZWQKLSsgIGwgPSBhbGxvY2F0ZWQob25ldiVpdmxhKQotKwotKyAgb25ldiVpdmxhKDosIDos IDopID0gMQotKyAgb25ldiVpdmxhKDEsIDIsIDMpID0gMTIzCi0rICBvbmV2JWl2bGEoMywgMiwg MSkgPSAzMjEKLSsKLSsgIGFsbG9jYXRlICh0d292JWl2bGExICg1LDEyLDk5KSkgICAgICAgICAh IG9uZXYtZmlsbGVkCi0rICBsID0gYWxsb2NhdGVkKHR3b3YlaXZsYTEpCi0rICBhbGxvY2F0ZSAo dHdvdiVpdmxhMiAoOSwxMikpCi0rICBsID0gYWxsb2NhdGVkKHR3b3YlaXZsYTIpCi0rCi0rICB0 d292JWl2bGExKDosIDosIDopID0gMQotKyAgdHdvdiVpdmxhMSgxLCAyLCAzKSA9IDEyMwotKyAg dHdvdiVpdmxhMSgzLCAyLCAxKSA9IDMyMQotKwotKyAgdHdvdiVpdmxhMig6LCA6KSA9IDEKLSsg IHR3b3YlaXZsYTIoMSwgMikgPSAxMgotKyAgdHdvdiVpdmxhMigyLCAxKSA9IDIxCi0rCi0rICB0 aHJlZXYlaXZhciA9IDMuMTQgICAgICAgICAgICAgICAgICAgICAgISB0d292LWZpbGxlZAotKyAg YWxsb2NhdGUgKHRocmVldiVpdmxhICgyMCkpCi0rICBsID0gYWxsb2NhdGVkKHRocmVldiVpdmxh KQotKwotKyAgdGhyZWV2JWl2bGEoOikgPSAxCi0rICB0aHJlZXYlaXZsYSg1KSA9IDQyCi0rICB0 aHJlZXYlaXZsYSgxNCkgPSAyNAotKwotKyAgYWxsb2NhdGUgKGZvdXJ2JWl2bGEgKDEwKSkgICAg ICAgICAgICAgISB0aHJlZXYtZmlsbGVkCi0rICBsID0gYWxsb2NhdGVkKGZvdXJ2JWl2bGEpCi0r Ci0rICBmb3VydiVpdmFyID0gMy4xNAotKyAgZm91cnYlaXZsYSg6KSA9IDEKLSsgIGZvdXJ2JWl2 bGEoMikgPSAyCi0rICBmb3VydiVpdmxhKDcpID0gNwotKwotKwotKyAgYWxsb2NhdGUgKG9uZXZs YSAoMTAsIDEwKSkgICAgICAgICAgICAgISBmb3Vydi1maWxsZWQKLSsgIGRvIGkgPSAxLCAxMAot KyAgICBkbyBqID0gMSwgMTAKLSsgICAgICBhbGxvY2F0ZSAob25ldmxhKGksaiklaXZsYSgxMCwx MCwxMCkpCi0rICAgICAgbCA9IGFsbG9jYXRlZChvbmV2bGEoaSxqKSVpdmxhKQotKwotKyAgICAg IG9uZXZsYShpLGopJWl2bGEoMywgNiwgOSkgPSAzNjkKLSsgICAgICBvbmV2bGEoaSxqKSVpdmxh KDksIDMsIDYpID0gOTM2Ci0rICAgIGVuZCBkbwotKyAgZW5kIGRvCi0rCi0rICBhbGxvY2F0ZSAo Zml2ZXYldG9uZSVpdmxhICgxMCwgMTAsIDEwKSkgICAgICAgICAhIG9uZXZsYS1maWxsZWQKLSsg IGwgPSBhbGxvY2F0ZWQoZml2ZXYldG9uZSVpdmxhKQotKyAgZml2ZXYldG9uZSVpdmxhKDosIDos IDopID0gMQotKyAgZml2ZXYldG9uZSVpdmxhKDEsIDIsIDMpID0gMTIzCi0rICBmaXZldiV0b25l JWl2bGEoMywgMiwgMSkgPSAzMjEKLSsKLSsKLSsgIG9uZXYlaXZsYSg6LDosOikgPSAyICAgICAg ICAgICAgICAgICAgICAgICAgICAgICEgZml2ZXYtZmlsbGVkCi0rICBvbmVwID0+IG9uZXYKLSsK LSsgICEgZHVtbXkgc3RhdGVtZW50IGZvciBicAotKyAgbCA9IGFsbG9jYXRlZChmaXZldiV0b25l JWl2bGEpICAgICAgICAgICAgICAgICAgISBvbmVwLWFzc29jaWF0ZWQKLStlbmQgcHJvZ3JhbSB2 bGFfc3RydWN0Ci0tLSAKLTEuNy45LjUKLQoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMTRv ZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0xNG9mMjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDY1ZGQ4ZjQuLjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC0xNG9mMjMu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotU3ViamVjdDogW1BBVENIIDE0 LzIzXSB0ZXN0OiBldmFsdWF0ZSBkeW5hbWljIGFycmF5cyB1c2luZyBGb3J0cmFuIHByaW1pdGl2 ZXMuCi1NZXNzYWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQwLTE1LWdpdC1zZW5kLWVtYWlsLWtldmVu LmJvZWxsQGludGVsLmNvbT4KLQotVGVzdHMgZW5zdXJlIHRoYXQgRm9ydHJhbiBwcmltaXRpdmVz IGNhbiBiZSBldmFsdWF0ZWQKLWNvcnJlY3RseSB3aGVuIHVzZWQgYXMgYSBkeW5hbWljIGFycmF5 LgotCi0yMDE0LTA1LTI4ICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLSAg ICAgICAgICAgIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgotCi10 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vOgotCi0JKiB2bGEtZGF0YXR5cGVzLmY5MDogTmV3IGZpbGUu Ci0JKiB2bGEtZGF0YXR5cGVzLmV4cDogTmV3IGZpbGUuCi0KLUNoYW5nZS1JZDogSThlODJmYTM4 MzNkNzdiZmQ3ZTliNGJkYzQwZTNmOTZjZTVlNzJkYTIKLQotU2lnbmVkLW9mZi1ieTogS2V2ZW4g Qm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLS0tLQotIGdkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vdmxhLWRhdGF0eXBlcy5leHAgfCAgIDgyICsrKysrKysrKysrKysrKysrKysrKysrKysr KwotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWRhdGF0eXBlcy5mOTAgfCAgIDUxICsr KysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMzMgaW5zZXJ0aW9ucygrKQotIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1kYXRhdHlwZXMu ZXhwCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWRh dGF0eXBlcy5mOTAKLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxh LWRhdGF0eXBlcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1kYXRhdHlwZXMu ZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjAyNzZkNgotLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZGF0YXR5cGVzLmV4 cAotQEAgLTAsMCArMSw4MiBAQAotKyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3N0YW5k YXJkX3Rlc3RmaWxlICIuZjkwIgotKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0 ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAotKyAgICB7ZGVidWcgZjkwIHF1aWV0 fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIGNoZWNrIHRoYXQgYWxsIGZvcnRyYW4g c3RhbmRhcmQgZGF0YXR5cGVzIHdpbGwgYmUKLSsjIGhhbmRsZWQgY29ycmVjdGx5IHdoZW4gdXNp bmcgYXMgVkxBJ3MKLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAi Y291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KLSsK LStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhcy1hbGxvY2F0ZWQiXQot K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGFzLWFsbG9jYXRlZCIKLStnZGJfdGVzdCAi bmV4dCIgIiA9IGFsbG9jYXRlZFxcXChyZWFsdmxhXFxcKSIgXAotKyAgIm5leHQgdG8gYWxsb2Nh dGlvbiBzdGF0dXMgb2YgaW50dmxhIgotK2dkYl90ZXN0ICJwcmludCBsIiAiID0gXFwuVFJVRVxc LiIgImludHZsYSBhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgIm5leHQiICIgPSBhbGxvY2F0ZWRcXFwo Y29tcGxleHZsYVxcXCkiIFwKLSsgICJuZXh0IHRvIGFsbG9jYXRpb24gc3RhdHVzIG9mIHJlYWx2 bGEiCi0rZ2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5UUlVFXFwuIiAicmVhbHZsYSBhbGxvY2F0 ZWQiCi0rZ2RiX3Rlc3QgIm5leHQiICIgPSBhbGxvY2F0ZWRcXFwobG9naWNhbHZsYVxcXCkiIFwK LSsgICJuZXh0IHRvIGFsbG9jYXRpb24gc3RhdHVzIG9mIGNvbXBsZXh2bGEiCi0rZ2RiX3Rlc3Qg InByaW50IGwiICIgPSBcXC5UUlVFXFwuIiAiY29tcGxleHZsYSBhbGxvY2F0ZWQiCi0rZ2RiX3Rl c3QgIm5leHQiICIgPSBhbGxvY2F0ZWRcXFwoY2hhcmFjdGVydmxhXFxcKSIgXAotKyAgIm5leHQg dG8gYWxsb2NhdGlvbiBzdGF0dXMgb2YgbG9naWNhbHZsYSIKLStnZGJfdGVzdCAicHJpbnQgbCIg IiA9IFxcLlRSVUVcXC4iICJsb2dpY2FsdmxhIGFsbG9jYXRlZCIKLStnZGJfdGVzdCAibmV4dCIg ImludHZsYVxcXCg6LDosOlxcXCkgPSAxIiBcCi0rICAibmV4dCB0byBhbGxvY2F0aW9uIHN0YXR1 cyBvZiBjaGFyYWN0ZXJ2bGEiCi0rZ2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5UUlVFXFwuIiAi Y2hhcmFjdGVydmxhIGFsbG9jYXRlZCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAidmxhcy1pbml0aWFsaXplZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg InZsYXMtaW5pdGlhbGl6ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIGludHZsYSIgInR5cGUgPSBpbnRl Z2VyXFxcKGtpbmQ9NFxcXCkgXFxcKDExLDIyLDMzXFxcKSIgXAotKyAgInB0eXBlIGludHZsYSIK LStnZGJfdGVzdCAicHR5cGUgcmVhbHZsYSIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkgXFxc KDExLDIyLDMzXFxcKSIgXAotKyAgInB0eXBlIHJlYWx2bGEiCi0rZ2RiX3Rlc3QgInB0eXBlIGNv bXBsZXh2bGEiICJ0eXBlID0gY29tcGxleFxcXChraW5kPTRcXFwpIFxcXCgxMSwyMiwzM1xcXCki IFwKLSsgICJwdHlwZSBjb21wbGV4dmxhIgotK2dkYl90ZXN0ICJwdHlwZSBsb2dpY2FsdmxhIiAi dHlwZSA9IGxvZ2ljYWxcXFwoa2luZD00XFxcKSBcXFwoMTEsMjIsMzNcXFwpIiBcCi0rICAicHR5 cGUgbG9naWNhbHZsYSIKLStnZGJfdGVzdCAicHR5cGUgY2hhcmFjdGVydmxhIiAidHlwZSA9IGNo YXJhY3RlclxcXCoxIFxcXCgxMSwyMiwzM1xcXCkiIFwKLSsgICJwdHlwZSBjaGFyYWN0ZXJ2bGEi Ci0rCi0rZ2RiX3Rlc3QgInByaW50IGludHZsYSg1LDUsNSkiICIgPSAxIiAicHJpbnQgaW50dmxh KDUsNSw1KSAoMXN0KSIKLStnZGJfdGVzdCAicHJpbnQgcmVhbHZsYSg1LDUsNSkiICIgPSAzLjE0 XFxkKyIgXAotKyAgInByaW50IHJlYWx2bGEoNSw1LDUpICgxc3QpIgotK2dkYl90ZXN0ICJwcmlu dCBjb21wbGV4dmxhKDUsNSw1KSIgIiA9IFxcXCgyLC0zXFxcKSIgXAotKyAgInByaW50IGNvbXBs ZXh2bGEoNSw1LDUpICgxc3QpIgotK2dkYl90ZXN0ICJwcmludCBsb2dpY2FsdmxhKDUsNSw1KSIg IiA9IFxcLlRSVUVcXC4iIFwKLSsgICJwcmludCBsb2dpY2FsdmxhKDUsNSw1KSAoMXN0KSIKLStn ZGJfdGVzdCAicHJpbnQgY2hhcmFjdGVydmxhKDUsNSw1KSIgIiA9ICdLJyIgXAotKyAgInByaW50 IGNoYXJhY3RlcnZsYSg1LDUsNSkgKDFzdCkiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgInZsYXMtbW9kaWZpZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50 ICJ2bGFzLW1vZGlmaWVkIgotK2dkYl90ZXN0ICJwcmludCBpbnR2bGEoNSw1LDUpIiAiID0gNDIi ICJwcmludCBpbnR2bGEoNSw1LDUpICgybmQpIgotK2dkYl90ZXN0ICJwcmludCByZWFsdmxhKDUs NSw1KSIgIiA9IDQuMTNcXGQrIiBcCi0rICAicHJpbnQgcmVhbHZsYSg1LDUsNSkgKDJuZCkiCi0r Z2RiX3Rlc3QgInByaW50IGNvbXBsZXh2bGEoNSw1LDUpIiAiID0gXFxcKC0zLDJcXFwpIiBcCi0r ICAicHJpbnQgY29tcGxleHZsYSg1LDUsNSkgKDJuZCkiCi0rZ2RiX3Rlc3QgInByaW50IGxvZ2lj YWx2bGEoNSw1LDUpIiAiID0gXFwuRkFMU0VcXC4iIFwKLSsgICJwcmludCBsb2dpY2FsdmxhKDUs NSw1KSAoMm5kKSIKLStnZGJfdGVzdCAicHJpbnQgY2hhcmFjdGVydmxhKDUsNSw1KSIgIiA9ICdY JyIgXAotKyAgInByaW50IGNoYXJhY3RlcnZsYSg1LDUsNSkgKDJuZCkiCi1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZGF0YXR5cGVzLmY5MCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vdmxhLWRhdGF0eXBlcy5mOTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1p bmRleCAwMDAwMDAwLi5iMTE4NzlhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS1kYXRhdHlwZXMuZjkwCi1AQCAtMCwwICsxLDUxIEBACi0rISBDb3B5 cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSshCi0rISBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlCi0rISBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz MzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKwotK3Byb2dyYW0gdmxhX3ByaW1pdGl2 ZXMKLSsgIGludGVnZXIsIGFsbG9jYXRhYmxlICAgIDo6IGludHZsYSg6LCA6LCA6KQotKyAgcmVh bCwgYWxsb2NhdGFibGUgICAgICAgOjogcmVhbHZsYSg6LCA6LCA6KQotKyAgY29tcGxleCwgYWxs b2NhdGFibGUgICAgOjogY29tcGxleHZsYSg6LCA6LCA6KQotKyAgbG9naWNhbCwgYWxsb2NhdGFi bGUgICAgOjogbG9naWNhbHZsYSg6LCA6LCA6KQotKyAgY2hhcmFjdGVyLCBhbGxvY2F0YWJsZSAg OjogY2hhcmFjdGVydmxhKDosIDosIDopCi0rICBsb2dpY2FsICAgICAgICAgICAgICAgICA6OiBs Ci0rCi0rICBhbGxvY2F0ZSAoaW50dmxhICgxMSwyMiwzMykpCi0rICBhbGxvY2F0ZSAocmVhbHZs YSAoMTEsMjIsMzMpKQotKyAgYWxsb2NhdGUgKGNvbXBsZXh2bGEgKDExLDIyLDMzKSkKLSsgIGFs bG9jYXRlIChsb2dpY2FsdmxhICgxMSwyMiwzMykpCi0rICBhbGxvY2F0ZSAoY2hhcmFjdGVydmxh ICgxMSwyMiwzMykpCi0rCi0rICBsID0gYWxsb2NhdGVkKGludHZsYSkgICAgICAgICAgICAgICAg ICAgISB2bGFzLWFsbG9jYXRlZAotKyAgbCA9IGFsbG9jYXRlZChyZWFsdmxhKQotKyAgbCA9IGFs bG9jYXRlZChjb21wbGV4dmxhKQotKyAgbCA9IGFsbG9jYXRlZChsb2dpY2FsdmxhKQotKyAgbCA9 IGFsbG9jYXRlZChjaGFyYWN0ZXJ2bGEpCi0rCi0rICBpbnR2bGEoOiw6LDopID0gMQotKyAgcmVh bHZsYSg6LDosOikgPSAzLjE0Ci0rICBjb21wbGV4dmxhKDosOiw6KSA9IGNtcGx4KDIuMCwtMy4w KQotKyAgbG9naWNhbHZsYSg6LDosOikgPSAuVFJVRS4KLSsgIGNoYXJhY3RlcnZsYSg6LDosOikg PSBjaGFyKDc1KQotKwotKyAgaW50dmxhKDUsNSw1KSA9IDQyICAgICAgICAgICAgICAgICAgICAg ICEgdmxhcy1pbml0aWFsaXplZAotKyAgcmVhbHZsYSg1LDUsNSkgPSA0LjEzCi0rICBjb21wbGV4 dmxhKDUsNSw1KSA9IGNtcGx4KC0zLjAsMi4wKQotKyAgbG9naWNhbHZsYSg1LDUsNSkgPSAuRkFM U0UuCi0rICBjaGFyYWN0ZXJ2bGEoNSw1LDUpID0gJ1gnCi0rCi0rICAhIGR1bW15IHN0YXRlbWVu dCBmb3IgYnAKLSsgIGwgPSAuRkFMU0UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZs YXMtbW9kaWZpZWQKLStlbmQgcHJvZ3JhbSB2bGFfcHJpbWl0aXZlcwotLS0gCi0xLjcuOS41Ci0K CmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTE1b2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwt MTVvZjIzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDZkNWFlLi4wMDAw MDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtMTVvZjIzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs NDA5ICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSCAxNS8yM10gdGVzdDogZHluYW1pYyBhcnJheXMg cGFzc2VkIHRvIHN1YnJvdXRpbmVzLgotTWVzc2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC0xNi1n aXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLVRlc3RzIGR5bmFtaWMgYXJy YXlzIHBhc3NlZCB0byBzdWJyb3V0aW5lcyBhbmQgaGFuZGxlZAotaW4gZGlmZmVyZW50IHdheXMg aW5zaWRlIHRoZSByb3V0aW5lLgotCi0yMDE0LTA1LTI4ICBLZXZlbiBCb2VsbCAgPGtldmVuLmJv ZWxsQGludGVsLmNvbT4KLSAgICAgICAgICAgIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292 aWNAaW50ZWwuY29tPgotCi10ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vOgotCi0JKiB2bGEtc3ViLmY5 MDogTmV3IGZpbGUuCi0JKiB2bGEtcHR5cGUtc3ViLmV4cDogTmV3IGZpbGUuCi0JKiB2bGEtdmFs dWUtc3ViLWFyYml0cmFyeS5leHA6IE5ldyBmaWxlLgotCSogdmxhLXZhbHVlLXN1Yi1maW5pc2gu ZXhwOiBOZXcgZmlsZS4KLQkqIHZsYS12YWx1ZS1zdWIuZXhwOiBOZXcgZmlsZS4KLQotQ2hhbmdl LUlkOiBJNzZkYjk1MGZiYWNiZjE1YjFmNWU4ODdiZmQxNjRlYjhmODVjNTVkMQotCi1TaWduZWQt b2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotLS0tCi0gZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUtc3ViLmV4cCAgICAgICAgfCAgIDg3ICsrKysr KysrKysrKysrKysrKysKLSBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdWIuZjkwICAg ICAgICAgICAgICB8ICAgODIgKysrKysrKysrKysrKysrKysrCi0gLi4uL2dkYi5mb3J0cmFuL3Zs YS12YWx1ZS1zdWItYXJiaXRyYXJ5LmV4cCAgICAgICAgfCAgIDM1ICsrKysrKysrCi0gZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLWZpbmlzaC5leHAgfCAgIDQ5ICsrKysr KysrKysrCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLmV4cCAgICAg ICAgfCAgIDkwICsrKysrKysrKysrKysrKysrKysrCi0gNSBmaWxlcyBjaGFuZ2VkLCAzNDMgaW5z ZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3ZsYS1wdHlwZS1zdWIuZXhwCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vdmxhLXN1Yi5mOTAKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLWFyYml0cmFyeS5leHAKLSBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLWZpbmlzaC5leHAKLSBj cmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3Vi LmV4cAotCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUt c3ViLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXB0eXBlLXN1Yi5leHAKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yZWUyOTE0Ci0tLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS1zdWIuZXhwCi1AQCAt MCwwICsxLDg3IEBACi0rIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc3RhbmRhcmRfdGVz dGZpbGUgInZsYS1zdWIuZjkwIgotKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0 ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAotKyAgICB7ZGVidWcgZjkwIHF1aWV0 fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7 Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBj b250aW51ZQotK30KLSsKLSsjIFBhc3MgZml4ZWQgYXJyYXkgdG8gZnVuY3Rpb24gYW5kIGhhbmRs ZSB0aGVtIGFzIHZsYSBpbiBmdW5jdGlvbi4KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAibm90LWZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5vdC1m aWxsZWQgKDFzdCkiCi0rZ2RiX3Rlc3QgInB0eXBlIGFycmF5MSIgInR5cGUgPSBpbnRlZ2VyXFxc KGtpbmQ9NFxcXCkgXFxcKDQyLDQyXFxcKSIgXAotKyAgInB0eXBlIGFycmF5MSAocGFzc2VkIGZp eGVkKSIKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkyIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxc KSBcXFwoNDIsNDIsNDJcXFwpIiBcCi0rICAicHR5cGUgYXJyYXkyIChwYXNzZWQgZml4ZWQpIgot K2dkYl90ZXN0ICJwdHlwZSBhcnJheTEoNDAsIDEwKSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9 NFxcXCkiIFwKLSsgICJwdHlwZSBhcnJheTEoNDAsIDEwKSAocGFzc2VkIGZpeGVkKSIKLStnZGJf dGVzdCAicHR5cGUgYXJyYXkyKDEzLCAxMSwgNSkiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwp IiBcCi0rICAicHR5cGUgYXJyYXkyKDEzLCAxMSwgNSkgKHBhc3NlZCBmaXhlZCkiCi0rCi0rIyBQ YXNzIHN1YiBhcnJheXMgdG8gZnVuY3Rpb24gYW5kIGhhbmRsZSB0aGVtIGFzIHZsYSBpbiBmdW5j dGlvbi4KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibm90LWZpbGxlZCAoMm5kKSIKLStn ZGJfdGVzdCAicHR5cGUgYXJyYXkxIiAidHlwZSA9IGludGVnZXJcXFwoa2luZD00XFxcKSBcXFwo Niw2XFxcKSIgXAotKyAgInB0eXBlIGFycmF5MSAocGFzc2VkIHN1Yi1hcnJheSkiCi0rZ2RiX3Rl c3QgInB0eXBlIGFycmF5MiIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDYsNiw2XFxc KSIgXAotKyAgInB0eXBlIGFycmF5MiAocGFzc2VkIHN1Yi1hcnJheSkiCi0rZ2RiX3Rlc3QgInB0 eXBlIGFycmF5MSgzLCAzKSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkiIFwKLSsgICJw dHlwZSBhcnJheTEoMywgMykgKHBhc3NlZCBzdWItYXJyYXkpIgotK2dkYl90ZXN0ICJwdHlwZSBh cnJheTIoNCwgNCwgNCkiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIiBcCi0rICAicHR5cGUg YXJyYXkyKDQsIDQsIDQpIChwYXNzZWQgc3ViLWFycmF5KSIKLSsKLSsjIENoZWNrIHB0eXBlIG91 dHNpZGUgb2YgYm91bmRzLiBUaGlzIHNob3VsZCBub3QgY3Jhc2ggR0RCLgotK2dkYl90ZXN0ICJw dHlwZSBhcnJheTEoMTAwLCAxMDApIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCIgXAotKyAgInB0 eXBlIGFycmF5MSgxMDAsIDEwMCkgc3ViYXJyYXkgZG8gbm90IGNyYXNoIChwYXNzZWQgc3ViLWFy cmF5KSIKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkyKDEwMCwgMTAwLCAxMDApIiAibm8gc3VjaCB2 ZWN0b3IgZWxlbWVudCIgXAotKyAgInB0eXBlIGFycmF5MigxMDAsIDEwMCwgMTAwKSBzdWJhcnJh eSBkbyBub3QgY3Jhc2ggKHBhc3NlZCBzdWItYXJyYXkpIgotKwotKyMgUGFzcyB2bGEgdG8gZnVu Y3Rpb24uCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5vdC1maWxsZWQgKDNyZCkiCi0r Z2RiX3Rlc3QgInB0eXBlIGFycmF5MSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkgXFxc KDIwLDIwXFxcKSIgXAotKyAgInB0eXBlIGFycmF5MSAocGFzc2VkIHZsYSkiCi0rZ2RiX3Rlc3Qg InB0eXBlIGFycmF5MiIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDEwLDEwLDEwXFxc KSIgXAotKyAgInB0eXBlIGFycmF5MiAocGFzc2VkIHZsYSkiCi0rZ2RiX3Rlc3QgInB0eXBlIGFy cmF5MSgzLCAzKSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkiIFwKLSsgICJwdHlwZSBh cnJheTEoMywgMykgKHBhc3NlZCB2bGEpIgotK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIoNCwgNCwg NCkiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIiBcCi0rICAicHR5cGUgYXJyYXkyKDQsIDQs IDQpIChwYXNzZWQgdmxhKSIKLSsKLSsjIENoZWNrIHB0eXBlIG91dHNpZGUgb2YgYm91bmRzLiBU aGlzIHNob3VsZCBub3QgY3Jhc2ggR0RCLgotK2dkYl90ZXN0ICJwdHlwZSBhcnJheTEoMTAwLCAx MDApIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCIgXAotKyAgInB0eXBlIGFycmF5MSgxMDAsIDEw MCkgVkxBIGRvIG5vdCBjcmFzaCAocGFzc2VkIHZsYSkiCi0rZ2RiX3Rlc3QgInB0eXBlIGFycmF5 MigxMDAsIDEwMCwgMTAwKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiIFwKLSsgICJwdHlwZSBh cnJheTIoMTAwLCAxMDAsIDEwMCkgVkxBIGRvIG5vdCBjcmFzaCAocGFzc2VkIHZsYSkiCi0rCi0r IyBQYXNzIGZpeGVkIGFycmF5IHRvIGZ1bmN0aW9uIGFuZCBoYW5kbGUgaXQgYXMgVkxBIG9mIGFy Yml0cmFyeSBsZW5ndGggaW4KLSsjIGZ1bmN0aW9uLgotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJlbmQtb2YtYmFyIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi ZW5kLW9mLWJhciIKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkxIiBcCi0rICAidHlwZSA9IChQVFIg VE8gLT4gXFwoICk/aW50ZWdlcihcXChraW5kPTRcXCl8XFwqNCkgXFwoXFwqXFwpXFwpPyIgXAot KyAgInB0eXBlIGFycmF5MSAoYXJiaXRyYXJ5IGxlbmd0aCkiCi0rZ2RiX3Rlc3QgInB0eXBlIGFy cmF5MiIgXAotKyAgInR5cGUgPSAoUFRSIFRPIC0+IFxcKCApP2ludGVnZXIoXFwoa2luZD00XFwp fFxcKjQpIFxcKDQ6OSwxMDpcXCpcXClcXCk/IiBcCi0rICAicHR5cGUgYXJyYXkyIChhcmJpdHJh cnkgbGVuZ3RoKSIKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkxKDEwMCkiICJ0eXBlID0gaW50ZWdl clxcXChraW5kPTRcXFwpIiBcCi0rICAicHR5cGUgYXJyYXkxKDEwMCkgKGFyYml0cmFyeSBsZW5n dGgpIgotK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIoNCwxMDApIiAidHlwZSA9IGludGVnZXJcXFwo a2luZD00XFxcKSIgXAotKyAgInB0eXBlIGFycmF5Mig0LDEwMCkgKGFyYml0cmFyeSBsZW5ndGgp IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN1Yi5mOTAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdWIuZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0 NAotaW5kZXggMDAwMDAwMC4uOGMyYzlmZgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi92bGEtc3ViLmY5MAotQEAgLTAsMCArMSw4MiBAQAotKyEgQ29weXJp Z2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw LCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBPcmlnaW5hbCBmaWxlIHdyaXR0 ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gYW5kCi0rISBKYW4gS3JhdG9j aHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCi0rISBNb2RpZmllZCBmb3IgdGhlIEdE QiB0ZXN0Y2FzZXMgYnkgS2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4uCi0rCi0r c3Vicm91dGluZSBmb28gKGFycmF5MSwgYXJyYXkyKQotKyAgaW50ZWdlciA6OiBhcnJheTEgKDos IDopCi0rICByZWFsICAgIDo6IGFycmF5MiAoOiwgOiwgOikKLSsKLSsgIGFycmF5MSg6LDopID0g NSAgICAgICAgICAgICAgICAgICAgICAgISBub3QtZmlsbGVkCi0rICBhcnJheTEoMSwgMSkgPSAz MAotKwotKyAgYXJyYXkyKDosOiw6KSA9IDYgICAgICAgICAgICAgICAgICAgICAhIGFycmF5MS1m aWxsZWQKLSsgIGFycmF5Mig6LDosOikgPSAzCi0rICBhcnJheTIoMSwxLDEpID0gMzAKLSsgIGFy cmF5MigzLDMsMykgPSA5MCAgICAgICAgICAgICAgICAgICAgISBhcnJheTItYWxtb3N0LWZpbGxl ZAotK2VuZCBzdWJyb3V0aW5lCi0rCi0rc3Vicm91dGluZSBiYXIgKGFycmF5MSwgYXJyYXkyKQot KyAgaW50ZWdlciA6OiBhcnJheTEgKCopCi0rICBpbnRlZ2VyIDo6IGFycmF5MiAoNDo5LCAxMDoq KQotKwotKyAgYXJyYXkxKDU6MTApID0gMTMxMQotKyAgYXJyYXkxKDcpID0gMQotKyAgYXJyYXkx KDEwMCkgPSAxMDAKLSsgIGFycmF5Mig0LDEwKSA9IGFycmF5MSg3KQotKyAgYXJyYXkyKDQsMTAw KSA9IGFycmF5MSg3KQotKyAgcmV0dXJuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAh IGVuZC1vZi1iYXIKLStlbmQgc3Vicm91dGluZQotKwotK3Byb2dyYW0gdmxhX3N1YgotKyAgaW50 ZXJmYWNlCi0rICAgIHN1YnJvdXRpbmUgZm9vIChhcnJheTEsIGFycmF5MikKLSsgICAgICBpbnRl Z2VyIDo6IGFycmF5MSAoOiwgOikKLSsgICAgICByZWFsIDo6IGFycmF5MiAoOiwgOiwgOikKLSsg ICAgZW5kIHN1YnJvdXRpbmUKLSsgIGVuZCBpbnRlcmZhY2UKLSsgIGludGVyZmFjZQotKyAgICBz dWJyb3V0aW5lIGJhciAoYXJyYXkxLCBhcnJheTIpCi0rICAgICAgaW50ZWdlciA6OiBhcnJheTEg KCopCi0rICAgICAgaW50ZWdlciA6OiBhcnJheTIgKDQ6OSwgMTA6KikKLSsgICAgZW5kIHN1YnJv dXRpbmUKLSsgIGVuZCBpbnRlcmZhY2UKLSsKLSsgIHJlYWwsIGFsbG9jYXRhYmxlIDo6IHZsYTEg KDosIDosIDopCi0rICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiB2bGEyICg6LCA6KQotKwotKyAg ISB1c2VkIGZvciBzdWJyb3V0aW5lCi0rICBpbnRlZ2VyIDo6IHN1Yl9hcnIxKDQyLCA0MikKLSsg IHJlYWwgICAgOjogc3ViX2FycjIoNDIsIDQyLCA0MikKLSsgIGludGVnZXIgOjogc3ViX2FycjMo NDIpCi0rCi0rICBzdWJfYXJyMSg6LDopID0gMSAgICAgICAgICAgICAgICAgICAhIHZsYTItZGVh bGxvY2F0ZWQKLSsgIHN1Yl9hcnIyKDosOiw6KSA9IDIKLSsgIHN1Yl9hcnIzKDopID0gMwotKwot KyAgY2FsbCBmb28oc3ViX2FycjEsIHN1Yl9hcnIyKQotKyAgY2FsbCBmb28oc3ViX2FycjEoNTox MCwgNToxMCksIHN1Yl9hcnIyKDEwOjE1LDEwOjE1LDEwOjE1KSkKLSsKLSsgIGFsbG9jYXRlICh2 bGExICgxMCwxMCwxMCkpCi0rICBhbGxvY2F0ZSAodmxhMiAoMjAsMjApKQotKyAgdmxhMSg6LDos OikgPSAxMzExCi0rICB2bGEyKDosOikgPSA0MgotKyAgY2FsbCBmb28odmxhMiwgdmxhMSkKLSsK LSsgIGNhbGwgYmFyKHN1Yl9hcnIzLCBzdWJfYXJyMSkKLStlbmQgcHJvZ3JhbSB2bGFfc3ViCi1k aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLWFyYml0 cmFyeS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS1zdWItYXJiaXRy YXJ5LmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmZkMTFhZGIKLS0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1 Yi1hcmJpdHJhcnkuZXhwCi1AQCAtMCwwICsxLDM1IEBACi0rIyBDb3B5cmlnaHQgMjAxNCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCi0rCi0rc3RhbmRhcmRfdGVzdGZpbGUgInZsYS1zdWIuZjkwIgotKwotK2lmIHsgW3ByZXBh cmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAot KyAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStpZiAh W3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFr cG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLSsjIENoZWNrIFZMQSB3aXRoIGFy Yml0YXJ5IGxlbmd0aCBhbmQgY2hlY2sgdGhhdCBlbGVtZW50cyBvdXRzaWRlIG9mCi0rIyBib3Vu ZHMgb2YgdGhlIHBhc3NlZCBWTEEgY2FuIGJlIGFjY2Vzc2VkIGNvcnJlY3RseS4KLStnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZW5kLW9mLWJhciJdCi0rZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgImVuZC1vZi1iYXIiCi0rZ2RiX3Rlc3QgInAgYXJyYXkxKDQyKSIgIiA9 IDMiICJwcmludCBhcmJpdGFyeSBhcnJheTEoNDIpIgotK2dkYl90ZXN0ICJwIGFycmF5MSgxMDAp IiAiID0gMTAwIiAicHJpbnQgYXJiaXRhcnkgYXJyYXkxKDEwMCkiCi0rZ2RiX3Rlc3QgInAgYXJy YXkyKDQsMTApIiAiID0gMSIgInByaW50IGFyYml0YXJ5IGFycmF5Mig0LDEwKSIKLStnZGJfdGVz dCAicCBhcnJheTIoNCwxMDApIiAiID0gMSIgInByaW50IGFyYml0YXJ5IGFycmF5Mig0LDEwMCki Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLWZp bmlzaC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS1zdWItZmluaXNo LmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmExNjM2MTcKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi1m aW5pc2guZXhwCi1AQCAtMCwwICsxLDQ5IEBACi0rIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwot KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0r Ci0rc3RhbmRhcmRfdGVzdGZpbGUgInZsYS1zdWIuZjkwIgotKwotK2lmIHsgW3ByZXBhcmVfZm9y X3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAotKyAgICB7 ZGVidWcgZjkwIHF1aWV0fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStpZiAhW3J1bnRv IE1BSU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQg TUFJTl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLSsjICJ1cCIgd29ya3Mgd2l0aCBHQ0MgYnV0 IG90aGVyIEZvcnRyYW4gY29tcGlsZXJzIG1heSBjb3B5IHRoZSB2YWx1ZXMgaW50byB0aGUKLSsj IG91dGVyIGZ1bmN0aW9uIG9ubHkgb24gdGhlIGV4aXQgb2YgdGhlIGlubmVyIGZ1bmN0aW9uLgot KyMgV2UgbmVlZCBib3RoIHZhcmlhbnRzIGFzIGRlcGVuZGluZyBvbiB0aGUgYXJjaCB3ZSBvcHRp b25hbGx5IG1heSBzdGlsbCBiZQotKyMgZXhlY3V0aW5nIHRoZSBjYWxsZXIgbGluZSBvciBub3Qg YWZ0ZXIgYGZpbmlzaCcuCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg ImFycmF5Mi1hbG1vc3QtZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYXJy YXkyLWFsbW9zdC1maWxsZWQiCi0rZ2RiX3Rlc3QgInByaW50IGFycmF5MiIgIiA9IFxcKCAqXFwo ICpcXCggKjMwLCAqMywgKjMsXFsoKTMsIC5cXSpcXCkiIFwKLSsgICJwcmludCBhcnJheTIgaW4g Zm9vIGFmdGVyIGl0IHdhcyBmaWxsZWQiCi0rZ2RiX3Rlc3QgInByaW50IGFycmF5MigyLDEsMSk9 MjAiICIgPSAyMCIgXAotKyAgInNldCBhcnJheSgyLDIsMikgdG8gMjAgaW4gc3Vicm91dGluZSIK LStnZGJfdGVzdCAicHJpbnQgYXJyYXkyIiAiID0gXFwoICpcXCggKlxcKCAqMzAsICoyMCwgKjMs XFsoKTMsIC5cXSpcXCkiIFwKLSsgICJwcmludCBhcnJheTIgaW4gZm9vIGFmdGVyIGl0IHdhcyBt b2ZpZmllZCBpbiBkZWJ1Z2dlciIKLSsKLStnZGJfdGVzdCAiZmluaXNoIiBcCi0rICAiLipmb29c XFwoc3ViX2FycjFcXFwoNToxMCwgNToxMFxcXCksIHN1Yl9hcnIyXFxcKDEwOjE1LDEwOjE1LDEw OjE1XFxcKVxcXCkiIFwKLSsgICJmaW5pc2ggZnVuY3Rpb24iCi0rZ2RiX3Rlc3QgInAgc3ViX2Fy cjEoNSwgNykiICIgPSA1IiAic3ViX2FycjEoNSwgNykgYWZ0ZXIgZmluaXNoIgotK2dkYl90ZXN0 ICJwIHN1Yl9hcnIxKDEsIDEpIiAiID0gMzAiICJzdWJfYXJyMSgxLCAxKSBhZnRlciBmaW5pc2gi Ci0rZ2RiX3Rlc3QgInAgc3ViX2FycjIoMSwgMSwgMSkiICIgPSAzMCIgInN1Yl9hcnIyKDEsIDEs IDEpIGFmdGVyIGZpbmlzaCIKLStnZGJfdGVzdCAicCBzdWJfYXJyMigyLCAxLCAxKSIgIiA9IDIw IiAic3ViX2FycjIoMiwgMSwgMSkgYWZ0ZXIgZmluaXNoIgotKwotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3ZsYS12YWx1ZS1zdWIuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg MDAwMDAwMC4uODQ4ZjlkNwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi92bGEtdmFsdWUtc3ViLmV4cAotQEAgLTAsMCArMSw5MCBAQAotKyMgQ29weXJpZ2h0 IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgotKwotK3N0YW5kYXJkX3Rlc3RmaWxlICJ2bGEtc3ViLmY5MCIKLSsKLStp ZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3Ny Y2ZpbGV9IFwKLSsgICAge2RlYnVnIGY5MCBxdWlldH1dIH0gewotKyAgICByZXR1cm4gLTEKLSt9 Ci0rCi0raWYgIVtydW50byBNQUlOX19dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1 biB0byBicmVha3BvaW50IE1BSU5fXyIKLSsgICAgY29udGludWUKLSt9Ci0rCi0rIyBDaGVjayB0 aGUgdmFsdWVzIG9mIFZMQSdzIGluIHN1YnJvdXRpbmUgY2FuIGJlIGV2YWx1YXRlZCBjb3JyZWN0 bHkKLSsKLSsjIFRyeSB0byBhY2Nlc3MgdmFsdWVzIGZyb20gYSBmaXhlZCBhcnJheSBoYW5kbGVk IGFzIFZMQSBpbiBzdWJyb3V0aW5lLgotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJub3QtZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibm90LWZpbGxl ZCAoMXN0KSIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkxIiAiID0gXFwoXFsoKTEsIC5cXSpcXCki IFwKLSsgICJwcmludCBwYXNzZWQgYXJyYXkxIGluIGZvbyAocGFzc2VkIGZpeGVkIGFycmF5KSIK LSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYXJyYXkxLWZpbGxlZCJd Ci0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImFycmF5MS1maWxsZWQgKDFzdCkiCi0rZ2Ri X3Rlc3QgInByaW50IGFycmF5MSg1LCA3KSIgIiA9IDUiIFwKLSsgICJwcmludCBhcnJheTEoNSwg NykgYWZ0ZXIgZmlsbGVkIGluIGZvbyAocGFzc2VkIGZpeGVkIGFycmF5KSIKLStnZGJfdGVzdCAi cHJpbnQgYXJyYXkxKDEsIDEpIiAiID0gMzAiIFwKLSsgICJwcmludCBhcnJheTEoMSwgMSkgYWZ0 ZXIgZmlsbGVkIGluIGZvbyAocGFzc2VkIGZpeGVkIGFycmF5KSIKLSsKLStnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAiYXJyYXkyLWFsbW9zdC1maWxsZWQiXQotK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJhcnJheTItYWxtb3N0LWZpbGxlZCAoMXN0KSIKLStnZGJfdGVz dCAicHJpbnQgYXJyYXkyIiAiID0gXFwoICpcXCggKlxcKCAqMzAsICozLCAqMyxcWygpMywgLlxd KlxcKSIgXAotKyAgInByaW50IGFycmF5MiBpbiBmb28gYWZ0ZXIgaXQgd2FzIGZpbGxlZCAocGFz c2VkIGZpeGVkIGFycmF5KSIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkyKDIsMSwxKT0yMCIgIiA9 IDIwIiBcCi0rICAic2V0IGFycmF5KDIsMiwyKSB0byAyMCBpbiBzdWJyb3V0aW5lIChwYXNzZWQg Zml4ZWQgYXJyYXkpIgotK2dkYl90ZXN0ICJwcmludCBhcnJheTIiICIgPSBcXCggKlxcKCAqXFwo ICozMCwgKjIwLCAqMyxcWygpMywgLlxdKlxcKSIgXAotKyAgInByaW50IGFycmF5MiBpbiBmb28g YWZ0ZXIgaXQgd2FzIG1vZmlmaWVkIGluIGRlYnVnZ2VyIChwYXNzZWQgZml4ZWQgYXJyYXkpIgot KwotKwotKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgZnJvbSBhIGZpeGVkIHN1Yi1hcnJheSBoYW5k bGVkIGFzIFZMQSBpbiBzdWJyb3V0aW5lLgotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJu b3QtZmlsbGVkICgybmQpIgotK2dkYl90ZXN0ICJwcmludCBhcnJheTEiICIgPSBcXChcWygpNSwg LlxdKlxcKSIgXAotKyAgInByaW50IHBhc3NlZCBhcnJheTEgaW4gZm9vIChwYXNzZWQgc3ViLWFy cmF5KSIKLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYXJyYXkxLWZpbGxlZCAoMm5k KSIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkxKDUsIDUpIiAiID0gNSIgXAotKyAgInByaW50IGFy cmF5MSg1LCA1KSBhZnRlciBmaWxsZWQgaW4gZm9vIChwYXNzZWQgc3ViLWFycmF5KSIKLStnZGJf dGVzdCAicHJpbnQgYXJyYXkxKDEsIDEpIiAiID0gMzAiIFwKLSsgICJwcmludCBhcnJheTEoMSwg MSkgYWZ0ZXIgZmlsbGVkIGluIGZvbyAocGFzc2VkIHN1Yi1hcnJheSkiCi0rCi0rZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgImFycmF5Mi1hbG1vc3QtZmlsbGVkICgybmQpIgotK2dkYl90ZXN0 ICJwcmludCBhcnJheTIiICIgPSBcXCggKlxcKCAqXFwoICozMCwgKjMsICozLFxbKCkzLCAuXF0q XFwpIiBcCi0rICAicHJpbnQgYXJyYXkyIGluIGZvbyBhZnRlciBpdCB3YXMgZmlsbGVkIChwYXNz ZWQgc3ViLWFycmF5KSIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkyKDIsMSwxKT0yMCIgIiA9IDIw IiBcCi0rICAic2V0IGFycmF5KDIsMiwyKSB0byAyMCBpbiBzdWJyb3V0aW5lIChwYXNzZWQgc3Vi LWFycmF5KSIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkyIiAiID0gXFwoICpcXCggKlxcKCAqMzAs ICoyMCwgKjMsXFsoKTMsIC5cXSpcXCkiIFwKLSsgICJwcmludCBhcnJheTIgaW4gZm9vIGFmdGVy IGl0IHdhcyBtb2ZpZmllZCBpbiBkZWJ1Z2dlciAocGFzc2VkIHN1Yi1hcnJheSkiCi0rCi0rCi0r IyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBmcm9tIGEgVkxBIHBhc3NlZCB0byBzdWJyb3V0aW5lLgot K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJub3QtZmlsbGVkICgzcmQpIgotK2dkYl90ZXN0 ICJwcmludCBhcnJheTEiICIgPSBcXChcWygpNDIsIC5cXSpcXCkiIFwKLSsgICJwcmludCBwYXNz ZWQgYXJyYXkxIGluIGZvbyAocGFzc2VkIHZsYSkiCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgImFycmF5MS1maWxsZWQgKDNyZCkiCi0rZ2RiX3Rlc3QgInByaW50IGFycmF5MSg1LCA1 KSIgIiA9IDUiIFwKLSsgICJwcmludCBhcnJheTEoNSwgNSkgYWZ0ZXIgZmlsbGVkIGluIGZvbyAo cGFzc2VkIHZsYSkiCi0rZ2RiX3Rlc3QgInByaW50IGFycmF5MSgxLCAxKSIgIiA9IDMwIiBcCi0r ICAicHJpbnQgYXJyYXkxKDEsIDEpIGFmdGVyIGZpbGxlZCBpbiBmb28gKHBhc3NlZCB2bGEpIgot KwotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJhcnJheTItYWxtb3N0LWZpbGxlZCAoM3Jk KSIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkyIiAiID0gXFwoICpcXCggKlxcKCAqMzAsICozLCAq MyxcWygpMywgLlxdKlxcKSIgXAotKyAgInByaW50IGFycmF5MiBpbiBmb28gYWZ0ZXIgaXQgd2Fz IGZpbGxlZCAocGFzc2VkIHZsYSkiCi0rZ2RiX3Rlc3QgInByaW50IGFycmF5MigyLDEsMSk9MjAi ICIgPSAyMCIgXAotKyAgInNldCBhcnJheSgyLDIsMikgdG8gMjAgaW4gc3Vicm91dGluZSAocGFz c2VkIHZsYSkiCi0rZ2RiX3Rlc3QgInByaW50IGFycmF5MiIgIiA9IFxcKCAqXFwoICpcXCggKjMw LCAqMjAsICozLFxbKCkzLCAuXF0qXFwpIiBcCi0rICAicHJpbnQgYXJyYXkyIGluIGZvbyBhZnRl ciBpdCB3YXMgbW9maWZpZWQgaW4gZGVidWdnZXIgKHBhc3NlZCB2bGEpIgotLS0gCi0xLjcuOS41 Ci0KCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTE2b2YyMy5wYXRjaCBiL2dkYi12bGEtaW50 ZWwtMTZvZjIzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGZjYWZhLi4w MDAwMDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtMTZvZjIzLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMTI2ICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSCAxNi8yM10gdGVzdDogY29ycmVjdCBwdHlw ZSBvZiBkeW5hbWljIGFycmF5cyBpbiBGb3J0cmFuLgotTWVzc2FnZS1JZDogPDE0MDE4NjEyNjYt NjI0MC0xNy1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLVRlc3RzIGVu c3VyZSB0aGF0IHRoZSBwdHlwZSBvZiBkeW5hbWljIGFycmF5cyBpbgotRm9ydHJhbiBjYW4gYmUg cHJpbnRlZCBpbiBHREIgY29ycmVjdGx5LgotCi0yMDE0LTA1LTI4ICBLZXZlbiBCb2VsbCAgPGtl dmVuLmJvZWxsQGludGVsLmNvbT4KLSAgICAgICAgICAgIFNhbmltaXIgQWdvdmljICA8c2FuaW1p ci5hZ292aWNAaW50ZWwuY29tPgotCi10ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vOgotCi0JKiB2bGEt cHR5cGUuZXhwOiBOZXcgZmlsZS4KLQotQ2hhbmdlLUlkOiBJNTA4YTA1MzdiZTdjYWM1NzM5YTI2 Mzc4OGJlODliMThlODRkOGY4ZgotCi1TaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4u Ym9lbGxAaW50ZWwuY29tPgotLS0tCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5 cGUuZXhwIHwgICA5NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNo YW5nZWQsIDk2IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUuZXhwCi0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3Zs YS1wdHlwZS5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45MjY3NzIz Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlw ZS5leHAKLUBAIC0wLDAgKzEsOTYgQEAKLSsjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStz dGFuZGFyZF90ZXN0ZmlsZSAidmxhLmY5MCIKLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5n ICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKLSsgICAge2RlYnVnIGY5 MCBxdWlldH1dIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtydW50byBNQUlOX19d IHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIK LSsgICAgY29udGludWUKLSt9Ci0rCi0rIyBDaGVjayB0aGUgcHR5cGUgb2YgdmFyaW91cyBWTEEg c3RhdGVzIGFuZCBwb2ludGVyIHRvIFZMQSdzLgotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJ2bGExLWluaXQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEx LWluaXQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZsYTEiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAi cHR5cGUgdmxhMSBub3QgaW5pdGlhbGl6ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZsYTIiICJ0eXBl ID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmxhMiBub3QgaW5pdGlhbGl6ZWQiCi0rZ2RiX3Rl c3QgInB0eXBlIHB2bGEiICJ0eXBlID0gPG5vdCBhc3NvY2lhdGVkPiIgInB0eXBlIHB2bGEgbm90 IGluaXRpYWxpemVkIgotK2dkYl90ZXN0ICJwdHlwZSB2bGExKDMsIDYsIDkpIiAibm8gc3VjaCB2 ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKLSsgICJwdHlwZSB2bGExKDMs IDYsIDkpIG5vdCBpbml0aWFsaXplZCIKLStnZGJfdGVzdCAicHR5cGUgdmxhMig1LCA0NSwgMjAp IiBcCi0rICAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwK LSsgICJwdHlwZSB2bGExKDUsIDQ1LCAyMCkgbm90IGluaXRpYWxpemVkIgotKwotK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWFsbG9jYXRlZCJdCi0rZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2bGEx IiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSBcXFwoMTAsMTAsMTBcXFwpIiBcCi0rICAicHR5 cGUgdmxhMSBhbGxvY2F0ZWQiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgInZsYTItYWxsb2NhdGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMi1h bGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZsYTIiICJ0eXBlID0gcmVhbFxcXChraW5kPTRc XFwpIFxcXCg3LDQyOjUwLDEzOjM1XFxcKSIgXAotKyAgInB0eXBlIHZsYTIgYWxsb2NhdGVkIgot KwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWZpbGxlZCJdCi0r Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtZmlsbGVkIgotK2dkYl90ZXN0ICJwdHlw ZSB2bGExIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSBcXFwoMTAsMTAsMTBcXFwpIiBcCi0r ICAicHR5cGUgdmxhMSBmaWxsZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZsYTEoMywgNiwgOSkiICJ0 eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIiBcCi0rICAicHR5cGUgdmxhMSgzLCA2LCA5KSIKLSsK LStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMi1maWxsZWQiXQotK2dk Yl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEyLWZpbGxlZCIKLStnZGJfdGVzdCAicHR5cGUg dmxhMiIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDcsNDI6NTAsMTM6MzVcXFwpIiBc Ci0rICAicHR5cGUgdmxhMiBmaWxsZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZsYTIoNSwgNDUsIDIw KSIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkiIFwKLSsgICJwdHlwZSB2bGExKDUsIDQ1LCAy MCkgZmlsbGVkIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxh LWFzc29jaWF0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWFzc29jaWF0 ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHB2bGEiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIFxc XCgxMCwxMCwxMFxcXCkiIFwKLSsgICJwdHlwZSBwdmxhIGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3Qg InB0eXBlIHB2bGEoMywgNiwgOSkiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIiBcCi0rICAi cHR5cGUgcHZsYSgzLCA2LCA5KSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAicHZsYS1yZS1hc3NvY2lhdGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi cHZsYS1yZS1hc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSBwdmxhIiAidHlwZSA9IHJlYWxc XFwoa2luZD00XFxcKSBcXFwoNyw0Mjo1MCwxMzozNVxcXCkiIFwKLSsgICJwdHlwZSBwdmxhIHJl LWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZsYTIoNSwgNDUsIDIwKSIgInR5cGUgPSBy ZWFsXFxcKGtpbmQ9NFxcXCkiIFwKLSsgICJwdHlwZSB2bGExKDUsIDQ1LCAyMCkgcmUtYXNzb2Np YXRlZCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1kZWFz c29jaWF0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWRlYXNzb2NpYXRl ZCIKLStnZGJfdGVzdCAicHR5cGUgcHZsYSIgInR5cGUgPSA8bm90IGFzc29jaWF0ZWQ+IiAicHR5 cGUgcHZsYSBkZWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHB2bGEoNSwgNDUsIDIwKSIg XAotKyAgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYXNzb2NpYXRlZCIgXAot KyAgInB0eXBlIHB2bGEoNSwgNDUsIDIwKSBub3QgYXNzb2NpYXRlZCIKLSsKLStnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1kZWFsbG9jYXRlZCJdCi0rZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtZGVhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZs YTEiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmxhMSBub3QgYWxsb2NhdGVkIgot K2dkYl90ZXN0ICJwdHlwZSB2bGExKDMsIDYsIDkpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBi ZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKLSsgICJwdHlwZSB2bGExKDMsIDYsIDkpIG5vdCBhbGxv Y2F0ZWQiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTItZGVh bGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEyLWRlYWxsb2NhdGVk IgotK2dkYl90ZXN0ICJwdHlwZSB2bGEyIiAidHlwZSA9IDxub3QgYWxsb2NhdGVkPiIgInB0eXBl IHZsYTIgbm90IGFsbG9jYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgdmxhMig1LCA0NSwgMjApIiBc Ci0rICAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKLSsg ICJwdHlwZSB2bGEyKDUsIDQ1LCAyMCkgbm90IGFsbG9jYXRlZCIKLS0tIAotMS43LjkuNQotCgpk aWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0xN29mMjMucGF0Y2ggYi9nZGItdmxhLWludGVsLTE3 b2YyMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzZhMTYzMy4uMDAwMDAw MAotLS0gYS9nZGItdmxhLWludGVsLTE3b2YyMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk1 ICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSCAxNy8yM10gdGVzdDogZXZhbHVhdGluZyBhbGxvY2F0 aW9uL2Fzc29jaWF0aW9uIHN0YXR1cwotTWVzc2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC0xOC1n aXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLVRlc3RzIGVuc3VyZSB0aGF0 IGR5bmFtaWMgYXJyYXlzIGluIGRpZmZlcmVudCBzdGF0ZXMKLShhbGxvY2F0ZWQvYXNzb2NpYXRl ZCkgY2FuIGJlIGV2YWx1YXRlZC4KLQotMjAxNC0wNS0yOCAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5i b2VsbEBpbnRlbC5jb20+Ci0gICAgICAgICAgICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdv dmljQGludGVsLmNvbT4KLQotdGVzdHN1aXRlL2dkYi5mb3J0cmFuLzoKLQotCSogdmxhLWFsbG9j LWFzc29jLmV4cDogTmV3IGZpbGUuCi0KLUNoYW5nZS1JZDogSTY5NTA0NzNjM2YxNzI0ZWJmNWM3 YjAzNzcwNjE4NmIyY2Q2YWY1ZjAKLQotU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVu LmJvZWxsQGludGVsLmNvbT4KLS0tLQotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWFs bG9jLWFzc29jLmV4cCB8ICAgNjUgKysrKysrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBj aGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vdmxhLWFsbG9jLWFzc29jLmV4cAotCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtYWxsb2MtYXNzb2MuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi92bGEtYWxsb2MtYXNzb2MuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5k ZXggMDAwMDAwMC4uMjA2MDdjMwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi92bGEtYWxsb2MtYXNzb2MuZXhwCi1AQCAtMCwwICsxLDY1IEBACi0rIyBDb3B5 cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc3RhbmRhcmRfdGVzdGZpbGUgInZsYS5mOTAiCi0rCi0r aWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtz cmNmaWxlfSBcCi0rICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0r fQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBy dW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQotKwotKyMgQ2hlY2sg dGhlIGFzc29jaWF0aW9uIHN0YXR1cyBvZiB2YXJpb3VzIHR5cGVzIG9mIFZMQSdzCi0rIyBhbmQg cG9pbnRlciB0byBWTEEncy4KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi dmxhMS1hbGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWFsbG9j YXRlZCIKLStnZGJfdGVzdCAicHJpbnQgbCIgIiA9IFxcLlRSVUVcXC4iIFwKLSsgICJwcmludCB2 bGExIGFsbG9jYXRpb24gc3RhdHVzIChhbGxvY2F0ZWQpIgotKwotK2dkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWFsbG9jYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgInZsYTItYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwcmludCBsIiAiID0gXFwuVFJV RVxcLiIgXAotKyAgInByaW50IHZsYTIgYWxsb2NhdGlvbiBzdGF0dXMgKGFsbG9jYXRlZCkiCi0r Ci0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInB2bGEtYXNzb2NpYXRlZCJd Ci0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2bGEtYXNzb2NpYXRlZCIKLStnZGJfdGVz dCAicHJpbnQgbCIgIiA9IFxcLlRSVUVcXC4iIFwKLSsgICJwcmludCBwdmxhIGFzc29jaWF0ZWQg c3RhdHVzIChhc3NvY2lhdGVkKSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAicHZsYS1yZS1hc3NvY2lhdGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi cHZsYS1yZS1hc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwcmludCBsIiAiID0gXFwuVFJVRVxcLiIg XAotKyAgInByaW50IHB2bGEgYXNzb2NpYXRlZCBzdGF0dXMgKHJlLWFzc29jaWF0ZWQpIgotKwot K2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLWRlYXNzb2NpYXRlZCJd Ci0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2bGEtZGVhc3NvY2lhdGVkIgotK2dkYl90 ZXN0ICJwcmludCBsIiAiID0gXFwuRkFMU0VcXC4iIFwKLSsgICJwcmludCBwdmxhIGFsbG9jYXRp b24gc3RhdHVzIChkZWFzc29jaWF0ZWQpIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJ2bGExLWRlYWxsb2NhdGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAidmxhMS1kZWFsbG9jYXRlZCIKLStnZGJfdGVzdCAicHJpbnQgbCIgIiA9IFxcLkZBTFNFXFwu IiBcCi0rICAicHJpbnQgdmxhMSBhbGxvY2F0aW9uIHN0YXR1cyAoZGVhbGxvY2F0ZWQpIgotK2dk Yl90ZXN0ICJwcmludCB2bGExIiAiID0gPG5vdCBhbGxvY2F0ZWQ+IiBcCi0rICAicHJpbnQgZGVh bGxvY2F0ZWQgdmxhMSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi dmxhMi1kZWFsbG9jYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTItZGVh bGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5GQUxTRVxcLiIgInByaW50IHZs YTIgZGVhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInByaW50IHZsYTIiICIgPSA8bm90IGFsbG9jYXRl ZD4iICJwcmludCBkZWFsbG9jYXRlZCB2bGEyIgotLS0gCi0xLjcuOS41Ci0KCmRpZmYgLS1naXQg YS9nZGItdmxhLWludGVsLTE4b2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMThvZjIzLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTViMzJmLi4wMDAwMDAwCi0tLSBhL2dk Yi12bGEtaW50ZWwtMThvZjIzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAK LVN1YmplY3Q6IFtQQVRDSCAxOC8yM10gdGVzdDogZHluYW1pYyBhcnJheXMgcGFzc2VkIHRvIGZ1 bmN0aW9ucy4KLU1lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtMTktZ2l0LXNlbmQtZW1haWwt a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotCi1UZXN0cyBmb3IgZHluYW1pYyBhcnJheXMgcGFzc2Vk IHRvIGZ1bmN0aW9ucwotYW5kIHJldHVybmVkIGZyb20gZnVuY3Rpb25zLgotCi0yMDE0LTA1LTI4 ICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLSAgICAgICAgICAgIFNhbmlt aXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgotCi10ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vOgotCi0JKiB2bGEtZnVuYy5mOTA6IE5ldyBmaWxlLgotCSogdmxhLWZ1bmMuZXhwOiBO ZXcgZmlsZS4KLQotQ2hhbmdlLUlkOiBJYzNlYjIxMmYzNWY1OTllNGMxMGEyODRjMjMxMjU0OTE2 NTNiMTdkZgotCi1TaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwu Y29tPgotLS0tCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZnVuYy5leHAgfCAgIDYx ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v dmxhLWZ1bmMuZjkwIHwgICA3MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDIg ZmlsZXMgY2hhbmdlZCwgMTMyIGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZnVuYy5leHAKLSBjcmVhdGUgbW9kZSAxMDA2NDQg Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZnVuYy5mOTAKLQotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1bmMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi92bGEtZnVuYy5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAw Li5mMGYyMzZiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3ZsYS1mdW5jLmV4cAotQEAgLTAsMCArMSw2MSBAQAotKyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgotKwotK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgotKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rl c3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAotKyAgICB7ZGVi dWcgZjkwIHF1aWV0fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStpZiAhW3J1bnRvIE1B SU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJ Tl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLSsjIENoZWNrIFZMQSBwYXNzZWQgdG8gZmlyc3Qg Rm9ydHJhbiBmdW5jdGlvbi4KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi ZnVuYzEtdmxhLXBhc3NlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImZ1bmMxLXZs YS1wYXNzZWQiCi0rZ2RiX3Rlc3QgInByaW50IHZsYSIgIiA9IFxcKCAqXFwoICoyMiwgKjIyLCAq MjIsXFsoKTIyLCAuXF0qXFwpIiBcCi0rICAicHJpbnQgdmxhIChmdW5jMSkiCi0rZ2RiX3Rlc3Qg InB0eXBlIHZsYSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkgXFxcKDEwLDEwXFxcKSIg XAotKyAgInB0eXBlIHZsYSAoZnVuYzEpIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJmdW5jMS12bGEtbW9kaWZpZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJmdW5jMS12bGEtbW9kaWZpZWQiCi0rZ2RiX3Rlc3QgInByaW50IHZsYSg1LDUpIiAiID0g NTUiICJwcmludCB2bGEoNSw1KSAoZnVuYzEpIgotK2dkYl90ZXN0ICJwcmludCB2bGEoNyw3KSIg IiA9IDc3IiAicHJpbnQgdmxhKDUsNSkgKGZ1bmMxKSIKLSsKLSsjIENoZWNrIGlmIHRoZSB2YWx1 ZXMgYXJlIGNvcnJlY3QgYWZ0ZXIgcmV0dXJuaW5nIGZyb20gZnVuYzEKLStnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAiZnVuYzEtcmV0dXJuZWQiXQotK2dkYl9jb250aW51ZV90 b19icmVha3BvaW50ICJmdW5jMS1yZXR1cm5lZCIKLStnZGJfdGVzdCAicHJpbnQgcmV0IiAiID0g LlRSVUUuIiAicHJpbnQgcmV0IGFmdGVyIGZ1bmMxIHJldHVybmVkIgotKwotKyMgQ2hlY2sgVkxB IHBhc3NlZCB0byBzZWNvbmQgRm9ydHJhbiBmdW5jdGlvbgotK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJmdW5jMi12bGEtcGFzc2VkIl0KLStnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAiZnVuYzItdmxhLXBhc3NlZCIKLStnZGJfdGVzdCAicHJpbnQgdmxhIiBcCi0rICAi ID0gXFxcKDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0XFxcKSIgXAotKyAg InByaW50IHZsYSAoZnVuYzIpIgotK2dkYl90ZXN0ICJwdHlwZSB2bGEiICJ0eXBlID0gaW50ZWdl clxcXChraW5kPTRcXFwpIFxcXCgxMFxcXCkiIFwKLSsgICJwdHlwZSB2bGEgKGZ1bmMyKSIKLSsK LSsjIENoZWNrIGlmIHRoZSByZXR1cm5lZCBWTEEgaGFzIHRoZSBjb3JyZWN0IHZhbHVlcyBhbmQg cHR5cGUuCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImZ1bmMyLXJldHVy bmVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiZnVuYzItcmV0dXJuZWQiCi0rZ2Ri X3Rlc3QgInByaW50IHZsYTMiICIgPSBcXFwoMSwgMiwgNDQsIDQsIDQ0LCA0NCwgNDQsIDgsIDQ0 LCA0NFxcXCkiIFwKLSsgICJwcmludCB2bGEzIChhZnRlciBmdW5jMikiCi0rZ2RiX3Rlc3QgInB0 eXBlIHZsYTMiICJ0eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIFxcXCgxMFxcXCkiIFwKLSsg ICJwdHlwZSB2bGEzIChhZnRlciBmdW5jMikiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi92bGEtZnVuYy5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1m dW5jLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjRmNDVkYTEKLS0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1bmMuZjkw Ci1AQCAtMCwwICsxLDcxIEBACi0rISBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us IG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEKLSshIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rISBGb3VuZGF0aW9uLCBJbmMu LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNB LgotKwotK2xvZ2ljYWwgZnVuY3Rpb24gZnVuYzEgKHZsYSkKLSsgIGltcGxpY2l0IG5vbmUKLSsg IGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IHZsYSAoOiwgOikKLSsgIGZ1bmMxID0gYWxsb2NhdGVk KHZsYSkKLSsgIHZsYSg1LDUpID0gNTUgICAgICAgICAgICAgICAhIGZ1bmMxLXZsYS1wYXNzZWQK LSsgIHZsYSg3LDcpID0gNzcKLSsgIHJldHVybiAgICAgICAgICAgICAgICAgICAgICAhIGZ1bmMx LXZsYS1tb2RpZmllZAotK2VuZCBmdW5jdGlvbiBmdW5jMQotKwotK2Z1bmN0aW9uIGZ1bmMyKHZs YSkKLSsgIGltcGxpY2l0IG5vbmUKLSsgIGludGVnZXIgOjogdmxhICg6KQotKyAgaW50ZWdlciA6 OiBmdW5jMihzaXplKHZsYSkpCi0rICBpbnRlZ2VyIDo6IGsKLSsKLSsgIHZsYSgxKSA9IDEgICAg ICAgICAgICAgICAgICAgICEgZnVuYzItdmxhLXBhc3NlZAotKyAgdmxhKDIpID0gMgotKyAgdmxh KDQpID0gNAotKyAgdmxhKDgpID0gOAotKwotKyAgZnVuYzIgPSB2bGEKLStlbmQgZnVuY3Rpb24g ZnVuYzIKLSsKLStwcm9ncmFtIHZsYV9mdW5jCi0rICBpbXBsaWNpdCBub25lCi0rICBpbnRlcmZh Y2UKLSsgICAgbG9naWNhbCBmdW5jdGlvbiBmdW5jMSAodmxhKQotKyAgICAgIGludGVnZXIgOjog dmxhICg6LCA6KQotKyAgICBlbmQgZnVuY3Rpb24KLSsgIGVuZCBpbnRlcmZhY2UKLSsgIGludGVy ZmFjZQotKyAgICBmdW5jdGlvbiBmdW5jMiAodmxhKQotKyAgICAgIGludGVnZXIgOjogdmxhICg6 KQotKyAgICAgIGludGVnZXIgZnVuYzIoc2l6ZSh2bGEpKQotKyAgICBlbmQgZnVuY3Rpb24KLSsg IGVuZCBpbnRlcmZhY2UKLSsKLSsgIGxvZ2ljYWwgOjogcmV0Ci0rICBpbnRlZ2VyLCBhbGxvY2F0 YWJsZSA6OiB2bGExICg6LCA6KQotKyAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjogdmxhMiAoOikK LSsgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IHZsYTMgKDopCi0rCi0rICByZXQgPSAuRkFMU0Uu Ci0rCi0rICBhbGxvY2F0ZSAodmxhMSAoMTAsMTApKQotKyAgdmxhMSg6LDopID0gMjIKLSsKLSsg IGFsbG9jYXRlICh2bGEyICgxMCkpCi0rICB2bGEyKDopID0gNDQKLSsKLSsgIHJldCA9IGZ1bmMx KHZsYTEpCi0rICB2bGEzID0gZnVuYzIodmxhMikgICAgICAgICAgISBmdW5jMS1yZXR1cm5lZAot KwotKyAgcmV0ID0gLlRSVUUuICAgICAgICAgICAgICAgICEgZnVuYzItcmV0dXJuZWQKLStlbmQg cHJvZ3JhbSB2bGFfZnVuYwotLS0gCi0xLjcuOS41Ci0KCmRpZmYgLS1naXQgYS9nZGItdmxhLWlu dGVsLTE5b2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMTlvZjIzLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA2MWY5MWI4Li4wMDAwMDAwCi0tLSBhL2dkYi12bGEtaW50ZWwt MTlvZjIzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotU3ViamVjdDogW1BB VENIIDE5LzIzXSB0ZXN0OiBhY2Nlc3NpbmcgZHluYW1pYyBhcnJheSBoaXN0b3J5IHZhbHVlcy4K LU1lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtMjAtZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9l bGxAaW50ZWwuY29tPgotCi1UZXN0cyBpZiB0aGUgaGlzdG9yeSB2YWx1ZXMgb2YgZHluYW1pYyBh cnJheXMgY2FuIGJlCi1hY2Nlc3NlZCBhbmQgcHJpbnRlZCBhZ2FpbiB3aXRoIHRoZSBjb3JyZWN0 IHZhbHVlcy4KLQotMjAxNC0wNS0yOCAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5j b20+Ci0gICAgICAgICAgICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNv bT4KLQotdGVzdHN1aXRlL2dkYi5mb3J0cmFuLzoKLQotCSogdmxhLWhpc3RvcnkuZXhwOiBOZXcg ZmlsZS4KLQotQ2hhbmdlLUlkOiBJYjZkMmQzMDI3MmFlZmMyNGI2ZGI1ZmEwNjMzZmU3MjI3NDM5 MGU5MQotCi1TaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29t PgotLS0tCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtaGlzdG9yeS5leHAgfCAgIDYy ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDYyIGluc2Vy dGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEtaGlzdG9yeS5leHAKLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v dmxhLWhpc3RvcnkuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtaGlzdG9yeS5l eHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xNzBlMWViCi0tLS0gL2Rl di9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1oaXN0b3J5LmV4cAot QEAgLTAsMCArMSw2MiBAQAotKyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3N0YW5kYXJk X3Rlc3RmaWxlICJ2bGEuZjkwIgotKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0 ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAotKyAgICB7ZGVidWcgZjkwIHF1aWV0 fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7 Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBj b250aW51ZQotK30KLSsKLSsjIFNldCBzb21lIGJyZWFrcG9pbnRzIGFuZCBwcmludCBjb21wbGV0 ZSB2bGEuCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtaW5pdCJd Ci0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtaW5pdCIKLStnZGJfdGVzdCAicHJp bnQgdmxhMSIgIiA9IDxub3QgYWxsb2NhdGVkPiIgInByaW50IG5vbi1hbGxvY2F0ZWQgdmxhMSIK LSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMi1hbGxvY2F0ZWQi XQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEyLWFsbG9jYXRlZCIKLStnZGJfdGVz dCAicHJpbnQgdmxhMSIgIiA9IFxcKCAqXFwoICpcXCggKjAsICowLCAqMCxcWygpMCwgLlxdKlxc KSIgXAotKyAgInByaW50IHZsYTEgYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwcmludCB2bGEyIiAi ID0gXFwoICpcXCggKlxcKCAqMCwgKjAsICowLFxbKCkwLCAuXF0qXFwpIiBcCi0rICAicHJpbnQg dmxhMiBhbGxvY2F0ZWQiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg InZsYTEtZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMS1maWxsZWQi Ci0rZ2RiX3Rlc3QgInByaW50IHZsYTEiIFwKLSsgICIgPSBcXCggKlxcKCAqXFwoICoxMzExLCAq MTMxMSwgKjEzMTEsXFsoKTEzMTEsIC5cXSpcXCkiIFwKLSsgICJwcmludCB2bGExIGZpbGxlZCIK LSsKLSsjIFRyeSB0byBhY2Nlc3MgaGlzdG9yeSB2YWx1ZXMgZm9yIGZ1bGwgdmxhIHByaW50cy4K LStnZGJfdGVzdCAicHJpbnQgXCQxIiAiID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHJpbnQgXCQxIgot K2dkYl90ZXN0ICJwcmludCBcJDIiICIgPSBcXCggKlxcKCAqXFwoICowLCAqMCwgKjAsXFsoKTAs IC5cXSpcXCkiIFwKLSsgICJwcmludCBcJDIiCi0rZ2RiX3Rlc3QgInByaW50IFwkMyIgIiA9IFxc KCAqXFwoICpcXCggKjAsICowLCAqMCxcWygpMCwgLlxdKlxcKSIgXAotKyAgInByaW50IFwkMyIK LStnZGJfdGVzdCAicHJpbnQgXCQ0IiBcCi0rICAiID0gXFwoICpcXCggKlxcKCAqMTMxMSwgKjEz MTEsICoxMzExLFxbKCkxMzExLCAuXF0qXFwpIiAicHJpbnQgXCQ0IgotKwotK2dkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgInZsYTItZmlsbGVkIgotK2dkYl90ZXN0ICJwcmludCB2bGEyKDEsNDMsMjAp IiAiID0gMTMxMSIgInByaW50IHZsYTIoMSw0MywyMCkiCi0rZ2RiX3Rlc3QgInByaW50IHZsYTEo MSwzLDgpIiAiID0gMTAwMSIgInByaW50IHZsYTIoMSwzLDgpIgotKwotKyMgVHJ5IHRvIGFjY2Vz cyBoaXN0b3J5IHZhbHVlcyBmb3IgdmxhIHZhbHVlcy4KLStnZGJfdGVzdCAicHJpbnQgXCQ5IiAi ID0gMTMxMSIgInByaW50IFwkOSIKLStnZGJfdGVzdCAicHJpbnQgXCQxMCIgIiA9IDEwMDEiICJw cmludCBcJDEwIgotLS0gCi0xLjcuOS41Ci0KCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTIw b2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMjBvZjIzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAxYWY1YWM5Li4wMDAwMDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtMjBvZjIz LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSCAy MC8yM10gdGVzdDogZHluYW1pYyBzdHJpbmcgZXZhbHVhdGlvbnMuCi1NZXNzYWdlLUlkOiA8MTQw MTg2MTI2Ni02MjQwLTIxLWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4KLQot VGVzdHMgdmFyaW91cyBkeW5hbWljIHN0cmluZyBldmFsdWF0aW9ucy4gRHluYW1pYyBzdHJpbmdz Ci13aWxsIGJlIGhhbmRsZWQgaW50ZXJuYWxseSB0aGUgc2FtZSB3YXkgYXMgZHluYW1pYyBhcnJh eXMuCi0KLTIwMTQtMDUtMjggIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgot ICAgICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+Ci0K LXRlc3RzdWl0ZS9nZGIuZm9ydHJhbi86Ci0KLQkqIHZsYS1zdHJpbmdzLmY5MDogTmV3IGZpbGUu Ci0JKiB2bGEtc3RyaW5ncy5leHA6IE5ldyBmaWxlLgotCi1DaGFuZ2UtSWQ6IEliMmYzZGRlZDJm YmM1ZjBhOTY4NDA1MGM1Y2ZhMjJhNDUwZTE4MzU4Ci0KLVNpZ25lZC1vZmYtYnk6IEtldmVuIEJv ZWxsIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0tLS0KLSBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3ZsYS1zdHJpbmdzLmV4cCB8ICAxMDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK LSBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmY5MCB8ICAgMzggKysrKysr KysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDE0MiBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUg MTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3MuZXhwCi0gY3JlYXRl IG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3MuZjkwCi0K LWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmV4cCBi L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3MuZXhwCi1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMC4uN2ZjMTczNAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5ncy5leHAKLUBAIC0wLDAgKzEsMTA0IEBA Ci0rIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0r IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc3RhbmRhcmRfdGVzdGZpbGUgIi5mOTAi Ci0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0Zmls ZX0gJHtzcmNmaWxlfSBcCi0rICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKLSsgICAgcmV0dXJu IC0xCi0rfQotKwotKyMgY2hlY2sgdGhhdCBhbGwgZm9ydHJhbiBzdGFuZGFyZCBkYXRhdHlwZXMg d2lsbCBiZQotKyMgaGFuZGxlZCBjb3JyZWN0bHkgd2hlbiB1c2luZyBhcyBWTEEncwotKwotK2lm ICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJl YWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJfY2hhci1hbGxvY2F0ZWQtMSJdCi0rZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgInZhcl9jaGFyLWFsbG9jYXRlZC0xIgotK2dkYl90ZXN0ICJwcmludCB2 YXJfY2hhciIgXAotKyAgIiA9IFxcKFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMTAgXFwpXFwp ICR7aGV4fSIgXAotKyAgInByaW50IHZhcl9jaGFyIGFmdGVyIGFsbG9jYXRlZCBmaXJzdCB0aW1l IgotK2dkYl90ZXN0ICJwcmludCAqdmFyX2NoYXIiIFwKLSsgICIgPSAnXFxcXDAwMFxcXFwwMDBc XFxcMDAwXFxcXDAwMFxcXFwwMDBcXFxcMDAwXFxcXDAwMFxcXFwwMDBcXFxcMDAwXFxcXDAwMCci IFwKLSsgICJwcmludCAqdmFyX2NoYXIgYWZ0ZXIgYWxsb2NhdGVkIGZpcnN0IHRpbWUiCi0rZ2Ri X3Rlc3QgIndoYXRpcyB2YXJfY2hhciIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3Rlclxc KjEwIFxcKSIgXAotKyAgIndoYXRpcyB2YXJfY2hhciBmaXJzdCB0aW1lIgotK2dkYl90ZXN0ICJw dHlwZSB2YXJfY2hhciIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjEwIFxcKSIg XAotKyAgInB0eXBlIHZhcl9jaGFyIGZpcnN0IHRpbWUiCi0rZ2RiX3Rlc3QgIm5leHQiICJcXGQr Lip2YXJfY2hhciA9ICdmb28nLioiIFwKLSsgICJuZXh0IHRvIGFsbG9jYXRpb24gc3RhdHVzIG9m IHZhcl9jaGFyIgotK2dkYl90ZXN0ICJwcmludCBsIiAiID0gLlRSVUUuIiAicHJpbnQgYWxsb2Nh dGlvbiBzdGF0dXMgZmlyc3QgdGltZSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAidmFyX2NoYXItZmlsbGVkLTEiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50 ICJ2YXJfY2hhci1maWxsZWQtMSIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2NoYXIiIFwKLSsgICIg PSBcXChQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjMgXFwpXFwpICR7aGV4fSIgXAotKyAgInBy aW50IHZhcl9jaGFyIGFmdGVyIGZpbGxlZCBmaXJzdCB0aW1lIgotK2dkYl90ZXN0ICJwcmludCAq dmFyX2NoYXIiICIgPSAnZm9vJyIgXAotKyAgInByaW50ICp2YXJfY2hhciBhZnRlciBmaWxsZWQg Zmlyc3QgdGltZSIKLStnZGJfdGVzdCAid2hhdGlzIHZhcl9jaGFyIiAidHlwZSA9IFBUUiBUTyAt PiBcXCggY2hhcmFjdGVyXFwqMyBcXCkiIFwKLSsgICJ3aGF0aXMgdmFyX2NoYXIgYWZ0ZXIgZmls bGVkIGZpcnN0IHRpbWUiCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcl9jaGFyIiAidHlwZSA9IFBUUiBU TyAtPiBcXCggY2hhcmFjdGVyXFwqMyBcXCkiIFwKLSsgICJwdHlwZSB2YXJfY2hhciBhZnRlciBm aWxsZWQgZmlyc3QgdGltZSIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2NoYXIoMSkiICIgPSAxMDIg J2YnIiAicHJpbnQgdmFyX2NoYXIoMSkiCi0rZ2RiX3Rlc3QgInByaW50IHZhcl9jaGFyKDMpIiAi ID0gMTExICdvJyIgInByaW50IHZhcl9jaGFyKDMpIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJ2YXJfY2hhci1maWxsZWQtMiJdCi0rZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgInZhcl9jaGFyLWZpbGxlZC0yIgotK2dkYl90ZXN0ICJwcmludCB2YXJfY2hhciIg XAotKyAgIiA9IFxcKFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqNiBcXClcXCkgJHtoZXh9IiBc Ci0rICAicHJpbnQgdmFyX2NoYXIgYWZ0ZXIgYWxsb2NhdGVkIHNlY29uZCB0aW1lIgotK2dkYl90 ZXN0ICJwcmludCAqdmFyX2NoYXIiICIgPSAnZm9vYmFyJyIgXAotKyAgInByaW50ICp2YXJfY2hh ciBhZnRlciBhbGxvY2F0ZWQgc2Vjb25kIHRpbWUiCi0rZ2RiX3Rlc3QgIndoYXRpcyB2YXJfY2hh ciIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjYgXFwpIiBcCi0rICAid2hhdGlz IHZhcl9jaGFyIHNlY29uZCB0aW1lIgotK2dkYl90ZXN0ICJwdHlwZSB2YXJfY2hhciIgInR5cGUg PSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjYgXFwpIiBcCi0rICAicHR5cGUgdmFyX2NoYXIg c2Vjb25kIHRpbWUiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZh cl9jaGFyLWVtcHR5Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyX2NoYXItZW1w dHkiCi0rZ2RiX3Rlc3QgInByaW50IHZhcl9jaGFyIiBcCi0rICAiID0gXFwoUFRSIFRPIC0+IFxc KCBjaGFyYWN0ZXJcXCowIFxcKVxcKSAke2hleH0iIFwKLSsgICJwcmludCB2YXJfY2hhciBhZnRl ciBzZXQgZW1wdHkiCi0rZ2RiX3Rlc3QgInByaW50ICp2YXJfY2hhciIgIiA9IFwiXCIiICJwcmlu dCAqdmFyX2NoYXIgYWZ0ZXIgc2V0IGVtcHR5IgotK2dkYl90ZXN0ICJ3aGF0aXMgdmFyX2NoYXIi ICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCowIFxcKSIgXAotKyAgIndoYXRpcyB2 YXJfY2hhciBhZnRlciBzZXQgZW1wdHkiCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcl9jaGFyIiAidHlw ZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMCBcXCkiIFwKLSsgICJwdHlwZSB2YXJfY2hh ciBhZnRlciBzZXQgZW1wdHkiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgInZhcl9jaGFyLWFsbG9jYXRlZC0zIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi dmFyX2NoYXItYWxsb2NhdGVkLTMiCi0rZ2RiX3Rlc3QgInByaW50IHZhcl9jaGFyIiBcCi0rICAi ID0gXFwoUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCoyMSBcXClcXCkgJHtoZXh9IiBcCi0rICAi cHJpbnQgdmFyX2NoYXIgYWZ0ZXIgYWxsb2NhdGVkIHRoaXJkIHRpbWUiCi0rZ2RiX3Rlc3QgIndo YXRpcyB2YXJfY2hhciIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjIxIFxcKSIg XAotKyAgIndoYXRpcyB2YXJfY2hhciBhZnRlciBhbGxvY2F0ZWQgdGhpcmQgdGltZSIKLStnZGJf dGVzdCAicHR5cGUgdmFyX2NoYXIiICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCoy MSBcXCkiIFwKLSsgICJwdHlwZSB2YXJfY2hhciBhZnRlciBhbGxvY2F0ZWQgdGhpcmQgdGltZSIK LSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyX2NoYXJfcC1hc3Nv Y2lhdGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyX2NoYXJfcC1hc3NvY2lh dGVkIgotK2dkYl90ZXN0ICJwcmludCB2YXJfY2hhcl9wIiBcCi0rICAiID0gXFwoUFRSIFRPIC0+ IFxcKCBjaGFyYWN0ZXJcXCo3IFxcKVxcKSAke2hleH0iIFwKLSsgICJwcmludCB2YXJfY2hhcl9w IGFmdGVyIGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInByaW50ICp2YXJfY2hhcl9wIiAiID0gJ2pv aG5kb2UnIiBcCi0rICAicHJpbnQgKnZhcl9jaGFyXyBhZnRlciBhc3NvY2lhdGVkIgotK2dkYl90 ZXN0ICJ3aGF0aXMgdmFyX2NoYXJfcCIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3Rlclxc KjcgXFwpIiBcCi0rICAid2hhdGlzIHZhcl9jaGFyX3AgYWZ0ZXIgYXNzb2NpYXRlZCIKLStnZGJf dGVzdCAicHR5cGUgdmFyX2NoYXJfcCIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3Rlclxc KjcgXFwpIiBcCi0rICAicHR5cGUgdmFyX2NoYXJfcCBhZnRlciBhc3NvY2lhdGVkIgotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3MuZjkwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5ncy5mOTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0 Ci1pbmRleCAwMDAwMDAwLi42Njc5MDQzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmY5MAotQEAgLTAsMCArMSwzOCBAQAotKyEgQ29w eXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg MzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsKLStwcm9ncmFtIHZsYV9zdHJpbmdz Ci0rICBjaGFyYWN0ZXIobGVuPTopLCB0YXJnZXQsIGFsbG9jYXRhYmxlICAgOjogdmFyX2NoYXIK LSsgIGNoYXJhY3RlcihsZW49OiksIHBvaW50ZXIgICAgICAgICAgICAgICA6OiB2YXJfY2hhcl9w Ci0rICBsb2dpY2FsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogbAotKwotKyAg YWxsb2NhdGUoY2hhcmFjdGVyKGxlbj0xMCkgOjogdmFyX2NoYXIpCi0rICBsID0gYWxsb2NhdGVk KHZhcl9jaGFyKSAgICAgICAgICAgICAgICAgISB2YXJfY2hhci1hbGxvY2F0ZWQtMQotKyAgdmFy X2NoYXIgPSAnZm9vJwotKyAgZGVhbGxvY2F0ZSh2YXJfY2hhcikgICAgICAgICAgICAgICAgICAg ICEgdmFyX2NoYXItZmlsbGVkLTEKLSsgIGwgPSBhbGxvY2F0ZWQodmFyX2NoYXIpICAgICAgICAg ICAgICAgICAhIHZhcl9jaGFyLWRlYWxsb2NhdGVkCi0rICBhbGxvY2F0ZShjaGFyYWN0ZXIobGVu PTQyKSA6OiB2YXJfY2hhcikKLSsgIGwgPSBhbGxvY2F0ZWQodmFyX2NoYXIpCi0rICB2YXJfY2hh ciA9ICdmb29iYXInCi0rICB2YXJfY2hhciA9ICcnICAgICAgICAgICAgICAgICAgICAgICAgICAg ISB2YXJfY2hhci1maWxsZWQtMgotKyAgYWxsb2NhdGUoY2hhcmFjdGVyKGxlbj0yMSkgOjogdmFy X2NoYXIpICEgdmFyX2NoYXItZW1wdHkKLSsgIGwgPSBhbGxvY2F0ZWQodmFyX2NoYXIpICAgICAg ICAgICAgICAgICAhIHZhcl9jaGFyLWFsbG9jYXRlZC0zCi0rICB2YXJfY2hhciA9ICdqb2huZG9l JwotKyAgdmFyX2NoYXJfcCA9PiB2YXJfY2hhcgotKyAgbCA9IGFzc29jaWF0ZWQodmFyX2NoYXJf cCkgICAgICAgICAgICAgICEgdmFyX2NoYXJfcC1hc3NvY2lhdGVkCi0rICB2YXJfY2hhcl9wID0+ IG51bGwoKQotKyAgbCA9IGFzc29jaWF0ZWQodmFyX2NoYXJfcCkgICAgICAgICAgICAgICEgdmFy X2NoYXJfcC1ub3QtYXNzb2NpYXRlZAotK2VuZCBwcm9ncmFtIHZsYV9zdHJpbmdzCi0tLSAKLTEu Ny45LjUKLQoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMjFvZjIzLnBhdGNoIGIvZ2RiLXZs YS1pbnRlbC0yMW9mMjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0OTRi OTIuLjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC0yMW9mMjMucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwyNjIgKzAsMCBAQAotU3ViamVjdDogW1BBVENIIDIxLzIzXSB0ZXN0OiBiYXNpYyBN SSB0ZXN0IGZvciB0aGUgZHluYW1pYyBhcnJheSBzdXBwb3J0LgotTWVzc2FnZS1JZDogPDE0MDE4 NjEyNjYtNjI0MC0yMi1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLVRl c3RzIGR5bmFtaWMgYXJyYXkgZXZhbHVhdGlvbnMgdXNpbmcgTUkgcHJvdG9jb2wuCi0KLTIwMTQt MDUtMjggIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotICAgICAgICAgICAg U2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+Ci0KLXRlc3RzdWl0ZS9n ZGIubWkvOgotCi0JKiBtaS12bGEtZm9ydHJhbi5leHA6IE5ldyBmaWxlLgotCSogdmxhLmY5MDog TmV3IGZpbGUuCi0KLUNoYW5nZS1JZDogSTM3Y2FhODViMTQ5ODQ3OGY1ZWZmMGY1MmQzZmQ0MzEz ODhhYWFiNmYKLQotU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxsQGludGVs LmNvbT4KLS0tLQotIGdkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4cCB8ICAx ODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGdkYi90ZXN0c3VpdGUvZ2RiLm1p L3ZsYS5mOTAgICAgICAgICAgICB8ICAgNDIgKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjI0 IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIubWkv bWktdmxhLWZvcnRyYW4uZXhwCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2Ri Lm1pL3ZsYS5mOTAKLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1m b3J0cmFuLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4cAotbmV3 IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjcyYjBiZTIKLS0tLSAvZGV2L251bGwK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4cAotQEAgLTAsMCAr MSwxODIgQEAKLSsjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFZlcmlmeSB0aGF0LCB1 c2luZyB0aGUgTUksIHdlIGNhbiBldmFsdWF0ZSBhIHNpbXBsZSBDIFZhcmlhYmxlIExlbmd0aAot KyMgQXJyYXkgKFZMQSkuCi0rCi0rbG9hZF9saWIgbWktc3VwcG9ydC5leHAKLStzZXQgTUlGTEFH UyAiLWk9bWkiCi0rCi0rZ2RiX2V4aXQKLStpZiBbbWlfZ2RiX3N0YXJ0XSB7Ci0rICAgIGNvbnRp bnVlCi0rfQotKwotK3N0YW5kYXJkX3Rlc3RmaWxlIHZsYS5mOTAKLSsKLStpZiB7IFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0 YWJsZSBcCi0rICAgICB7ZGVidWcgZjkwfV0gIT0gIiIgfSB7Ci0rICAgICB1bnRlc3RlZCBtaS12 bGEtZm9ydHJhbi5leHAKLSsgICAgIHJldHVybiAtMQotK30KLSsKLSttaV9kZWxldGVfYnJlYWtw b2ludHMKLSttaV9nZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLSttaV9nZGJf bG9hZCAke2JpbmZpbGV9Ci0rCi0rc2V0IGJwX2xpbmVubyBbZ2RiX2dldF9saW5lX251bWJlciAi dmxhMS1ub3QtYWxsb2NhdGVkIl0KLSttaV9jcmVhdGVfYnJlYWtwb2ludCAiLXQgdmxhLmY5MDok YnBfbGluZW5vIiAxICJkZWwiICJ2bGEiIFwKLSsgICIuKnZsYS5mOTAiICRicF9saW5lbm8gJGhl eCBcCi0rICAiaW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vICh2bGEgbm90IGFs bG9jYXRlZCkiCi0rbWlfcnVuX2NtZAotK21pX2V4cGVjdF9zdG9wICJicmVha3BvaW50LWhpdCIg InZsYSIgIiIgIi4qdmxhLmY5MCIgIiRicF9saW5lbm8iIFwKLSsgIHsgIiIgImRpc3A9XCJkZWxc IiIgfSAicnVuIHRvIGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgotK21pX2dkYl90ZXN0 ICI1MDAtZGF0YS1ldmFsdWF0ZS1leHByZXNzaW9uIHZsYTEiIFwKLSsgICI1MDBcXF5kb25lLHZh bHVlPVwiPG5vdCBhbGxvY2F0ZWQ+XCIiICJldmFsdWF0ZSBub3QgYWxsb2NhdGVkIHZsYSIKLSsK LSttaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgdmxhMV9ub3RfYWxsb2NhdGVkIHZsYTEgIjxub3Qg YWxsb2NhdGVkPiIgXAotKyAgImNyZWF0ZSBsb2NhbCB2YXJpYWJsZSB2bGExX25vdF9hbGxvY2F0 ZWQiCi0rbWlfZ2RiX3Rlc3QgIjUwMS12YXItaW5mby10eXBlIHZsYTFfbm90X2FsbG9jYXRlZCIg XAotKyAgIjUwMVxcXmRvbmUsdHlwZT1cIjxub3QgYWxsb2NhdGVkPlwiIiBcCi0rICAiaW5mbyB0 eXBlIHZhcmlhYmxlIHZsYTFfbm90X2FsbG9jYXRlZCIKLSttaV9nZGJfdGVzdCAiNTAyLXZhci1z aG93LWZvcm1hdCB2bGExX25vdF9hbGxvY2F0ZWQiIFwKLSsgICI1MDJcXF5kb25lLGZvcm1hdD1c Im5hdHVyYWxcIiIgXAotKyAgInNob3cgZm9ybWF0IHZhcmlhYmxlIHZsYTFfbm90X2FsbG9jYXRl ZCIKLSttaV9nZGJfdGVzdCAiNTAzLXZhci1ldmFsdWF0ZS1leHByZXNzaW9uIHZsYTFfbm90X2Fs bG9jYXRlZCIgXAotKyAgIjUwM1xcXmRvbmUsdmFsdWU9XCJcXFxbMFxcXF1cIiIgXAotKyAgImV2 YWwgdmFyaWFibGUgdmxhMV9ub3RfYWxsb2NhdGVkIgotK21pX2xpc3RfYXJyYXlfdmFyb2JqX2No aWxkcmVuX3dpdGhfaW5kZXggInZsYTFfbm90X2FsbG9jYXRlZCIgIjAiICIxIiBcCi0rICAgICJy ZWFsXFxcKGtpbmQ9NFxcXCkiICJnZXQgY2hpbGRyZW4gb2YgdmxhMV9ub3RfYWxsb2NhdGVkIgot KwotKwotKwotK3NldCBicF9saW5lbm8gW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtYWxsb2Nh dGVkIl0KLSttaV9jcmVhdGVfYnJlYWtwb2ludCAiLXQgdmxhLmY5MDokYnBfbGluZW5vIiAyICJk ZWwiICJ2bGEiICIuKnZsYS5mOTAiIFwKLSsgICRicF9saW5lbm8gJGhleCAiaW5zZXJ0IGJyZWFr cG9pbnQgYXQgbGluZSAkYnBfbGluZW5vICh2bGEgYWxsb2NhdGVkKSIKLSttaV9ydW5fY21kCi0r bWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2bGEuZjkwIiAiJGJw X2xpbmVubyIgXAotKyAgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJydW4gdG8gYnJlYWtwb2ludCBh dCBsaW5lICRicF9saW5lbm8iCi0rbWlfZ2RiX3Rlc3QgIjUxMC1kYXRhLWV2YWx1YXRlLWV4cHJl c3Npb24gdmxhMSIgXAotKyAgIjUxMFxcXmRvbmUsdmFsdWU9XCJcXCgwLCAwLCAwLCAwLCAwXFwp XCIiICJldmFsdWF0ZSBhbGxvY2F0ZWQgdmxhIgotKwotK21pX2NyZWF0ZV92YXJvYmpfY2hlY2tl ZCB2bGExX2FsbG9jYXRlZCB2bGExICJyZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDVcXFwpIiBcCi0r ICAiY3JlYXRlIGxvY2FsIHZhcmlhYmxlIHZsYTFfYWxsb2NhdGVkIgotK21pX2dkYl90ZXN0ICI1 MTEtdmFyLWluZm8tdHlwZSB2bGExX2FsbG9jYXRlZCIgXAotKyAgIjUxMVxcXmRvbmUsdHlwZT1c InJlYWxcXFwoa2luZD00XFxcKSBcXFwoNVxcXClcIiIgXAotKyAgImluZm8gdHlwZSB2YXJpYWJs ZSB2bGExX2FsbG9jYXRlZCIKLSttaV9nZGJfdGVzdCAiNTEyLXZhci1zaG93LWZvcm1hdCB2bGEx X2FsbG9jYXRlZCIgXAotKyAgIjUxMlxcXmRvbmUsZm9ybWF0PVwibmF0dXJhbFwiIiBcCi0rICAi c2hvdyBmb3JtYXQgdmFyaWFibGUgdmxhMV9hbGxvY2F0ZWQiCi0rbWlfZ2RiX3Rlc3QgIjUxMy12 YXItZXZhbHVhdGUtZXhwcmVzc2lvbiB2bGExX2FsbG9jYXRlZCIgXAotKyAgIjUxM1xcXmRvbmUs dmFsdWU9XCJcXFxbNVxcXF1cIiIgXAotKyAgImV2YWwgdmFyaWFibGUgdmxhMV9hbGxvY2F0ZWQi Ci0rbWlfbGlzdF9hcnJheV92YXJvYmpfY2hpbGRyZW5fd2l0aF9pbmRleCAidmxhMV9hbGxvY2F0 ZWQiICI1IiAiMSIgXAotKyAgICAicmVhbFxcXChraW5kPTRcXFwpIiAiZ2V0IGNoaWxkcmVuIG9m IHZsYTFfYWxsb2NhdGVkIgotKwotKwotK3NldCBicF9saW5lbm8gW2dkYl9nZXRfbGluZV9udW1i ZXIgInZsYTEtZmlsbGVkIl0KLSttaV9jcmVhdGVfYnJlYWtwb2ludCAiLXQgdmxhLmY5MDokYnBf bGluZW5vIiAzICJkZWwiICJ2bGEiICIuKnZsYS5mOTAiIFwKLSsgICRicF9saW5lbm8gJGhleCAi aW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgotK21pX3J1bl9jbWQKLSttaV9l eHBlY3Rfc3RvcCAiYnJlYWtwb2ludC1oaXQiICJ2bGEiICIiICIuKnZsYS5mOTAiICIkYnBfbGlu ZW5vIiBcCi0rICB7ICIiICJkaXNwPVwiZGVsXCIiIH0gInJ1biB0byBicmVha3BvaW50IGF0IGxp bmUgJGJwX2xpbmVubyIKLSttaV9nZGJfdGVzdCAiNTIwLWRhdGEtZXZhbHVhdGUtZXhwcmVzc2lv biB2bGExIiBcCi0rICAiNTIwXFxeZG9uZSx2YWx1ZT1cIlxcKDEsIDEsIDEsIDEsIDFcXClcIiIg ImV2YWx1YXRlIGZpbGxlZCB2bGEiCi0rCi0rCi0rc2V0IGJwX2xpbmVubyBbZ2RiX2dldF9saW5l X251bWJlciAidmxhMS1tb2RpZmllZCJdCi0rbWlfY3JlYXRlX2JyZWFrcG9pbnQgIi10IHZsYS5m OTA6JGJwX2xpbmVubyIgNCAiZGVsIiAidmxhIiAiLip2bGEuZjkwIiBcCi0rICAkYnBfbGluZW5v ICRoZXggImluc2VydCBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKLSttaV9ydW5fY21k Ci0rbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2bGEuZjkwIiAi JGJwX2xpbmVubyIgXAotKyAgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJydW4gdG8gYnJlYWtwb2lu dCBhdCBsaW5lICRicF9saW5lbm8iCi0rbWlfZ2RiX3Rlc3QgIjUzMC1kYXRhLWV2YWx1YXRlLWV4 cHJlc3Npb24gdmxhMSIgXAotKyAgIjUzMFxcXmRvbmUsdmFsdWU9XCJcXCgxLCA0MiwgMSwgMjQs IDFcXClcIiIgImV2YWx1YXRlIGZpbGxlZCB2bGEiCi0rbWlfZ2RiX3Rlc3QgIjU0MC1kYXRhLWV2 YWx1YXRlLWV4cHJlc3Npb24gdmxhMSgxKSIgXAotKyAgIjU0MFxcXmRvbmUsdmFsdWU9XCIxXCIi ICJldmFsdWF0ZSBmaWxsZWQgdmxhIgotK21pX2dkYl90ZXN0ICI1NTAtZGF0YS1ldmFsdWF0ZS1l eHByZXNzaW9uIHZsYTEoMikiIFwKLSsgICI1NTBcXF5kb25lLHZhbHVlPVwiNDJcIiIgImV2YWx1 YXRlIGZpbGxlZCB2bGEiCi0rbWlfZ2RiX3Rlc3QgIjU2MC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Np b24gdmxhMSg0KSIgXAotKyAgIjU2MFxcXmRvbmUsdmFsdWU9XCIyNFwiIiAiZXZhbHVhdGUgZmls bGVkIHZsYSIKLSsKLSsKLStzZXQgYnBfbGluZW5vIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEx LWRlYWxsb2NhdGVkIl0KLSttaV9jcmVhdGVfYnJlYWtwb2ludCAiLXQgdmxhLmY5MDokYnBfbGlu ZW5vIiA1ICJkZWwiICJ2bGEiICIuKnZsYS5mOTAiIFwKLSsgICRicF9saW5lbm8gJGhleCAiaW5z ZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgotK21pX3J1bl9jbWQKLSttaV9leHBl Y3Rfc3RvcCAiYnJlYWtwb2ludC1oaXQiICJ2bGEiICIiICIuKnZsYS5mOTAiICIkYnBfbGluZW5v IiBcCi0rICB7ICIiICJkaXNwPVwiZGVsXCIiIH0gInJ1biB0byBicmVha3BvaW50IGF0IGxpbmUg JGJwX2xpbmVubyIKLSttaV9nZGJfdGVzdCAiNTcwLWRhdGEtZXZhbHVhdGUtZXhwcmVzc2lvbiB2 bGExIiBcCi0rICAiNTcwXFxeZG9uZSx2YWx1ZT1cIjxub3QgYWxsb2NhdGVkPlwiIiAiZXZhbHVh dGUgbm90IGFsbG9jYXRlZCB2bGEiCi0rCi0rCi0rc2V0IGJwX2xpbmVubyBbZ2RiX2dldF9saW5l X251bWJlciAicHZsYTItbm90LWFzc29jaWF0ZWQiXQotK21pX2NyZWF0ZV9icmVha3BvaW50ICIt dCB2bGEuZjkwOiRicF9saW5lbm8iIDYgImRlbCIgInZsYSIgIi4qdmxhLmY5MCIgXAotKyAgJGJw X2xpbmVubyAkaGV4ICJpbnNlcnQgYnJlYWtwb2ludCBhdCBsaW5lICRicF9saW5lbm8iCi0rbWlf cnVuX2NtZAotK21pX2V4cGVjdF9zdG9wICJicmVha3BvaW50LWhpdCIgInZsYSIgIiIgIi4qdmxh LmY5MCIgIiRicF9saW5lbm8iIFwKLSsgIHsgIiIgImRpc3A9XCJkZWxcIiIgfSAicnVuIHRvIGJy ZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgotK21pX2dkYl90ZXN0ICI1ODAtZGF0YS1ldmFs dWF0ZS1leHByZXNzaW9uIHB2bGEyIiBcCi0rICAiNTgwXFxeZG9uZSx2YWx1ZT1cIjxub3QgYXNz b2NpYXRlZD5cIiIgImV2YWx1YXRlIG5vdCBhc3NvY2lhdGVkIHZsYSIKLSsKLSttaV9jcmVhdGVf dmFyb2JqX2NoZWNrZWQgcHZsYTJfbm90X2Fzc29jaWF0ZWQgcHZsYTIgIjxub3QgYXNzb2NpYXRl ZD4iIFwKLSsgICJjcmVhdGUgbG9jYWwgdmFyaWFibGUgcHZsYTJfbm90X2Fzc29jaWF0ZWQiCi0r bWlfZ2RiX3Rlc3QgIjU4MS12YXItaW5mby10eXBlIHB2bGEyX25vdF9hc3NvY2lhdGVkIiBcCi0r ICAiNTgxXFxeZG9uZSx0eXBlPVwiPG5vdCBhc3NvY2lhdGVkPlwiIiBcCi0rICAiaW5mbyB0eXBl IHZhcmlhYmxlIHB2bGEyX25vdF9hc3NvY2lhdGVkIgotK21pX2dkYl90ZXN0ICI1ODItdmFyLXNo b3ctZm9ybWF0IHB2bGEyX25vdF9hc3NvY2lhdGVkIiBcCi0rICAiNTgyXFxeZG9uZSxmb3JtYXQ9 XCJuYXR1cmFsXCIiIFwKLSsgICJzaG93IGZvcm1hdCB2YXJpYWJsZSBwdmxhMl9ub3RfYXNzb2Np YXRlZCIKLSttaV9nZGJfdGVzdCAiNTgzLXZhci1ldmFsdWF0ZS1leHByZXNzaW9uIHB2bGEyX25v dF9hc3NvY2lhdGVkIiBcCi0rICAiNTgzXFxeZG9uZSx2YWx1ZT1cIlxcXFswXFxcXVwiIiBcCi0r ICAiZXZhbCB2YXJpYWJsZSBwdmxhMl9ub3RfYXNzb2NpYXRlZCIKLSttaV9saXN0X2FycmF5X3Zh cm9ial9jaGlsZHJlbl93aXRoX2luZGV4ICJwdmxhMl9ub3RfYXNzb2NpYXRlZCIgIjAiICIxIiBc Ci0rICAgICJyZWFsXFxcKGtpbmQ9NFxcXCkiICJnZXQgY2hpbGRyZW4gb2YgcHZsYTJfbm90X2Fz c29jaWF0ZWQiCi0rCi0rCi0rc2V0IGJwX2xpbmVubyBbZ2RiX2dldF9saW5lX251bWJlciAicHZs YTItYXNzb2NpYXRlZCJdCi0rbWlfY3JlYXRlX2JyZWFrcG9pbnQgIi10IHZsYS5mOTA6JGJwX2xp bmVubyIgNyAiZGVsIiAidmxhIiAiLip2bGEuZjkwIiBcCi0rICAkYnBfbGluZW5vICRoZXggImlu c2VydCBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKLSttaV9ydW5fY21kCi0rbWlfZXhw ZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2bGEuZjkwIiAiJGJwX2xpbmVu byIgXAotKyAgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJydW4gdG8gYnJlYWtwb2ludCBhdCBsaW5l ICRicF9saW5lbm8iCi0rbWlfZ2RiX3Rlc3QgIjU5MC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Npb24g cHZsYTIiIFwKLSsgICI1OTBcXF5kb25lLHZhbHVlPVwiXFwoXFwoIDIsIDIsIDIsIDIsIDJcXCkg XFwoIDIsIDIsIDIsIDIsIDJcXCkgXFwpXCIiIFwKLSsgICJldmFsdWF0ZSBhc3NvY2lhdGVkIHZs YSIKLSsKLSttaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgcHZsYTJfYXNzb2NpYXRlZCBwdmxhMiBc Ci0rICAicmVhbFxcXChraW5kPTRcXFwpIFxcXCg1LDJcXFwpIiAiY3JlYXRlIGxvY2FsIHZhcmlh YmxlIHB2bGEyX2Fzc29jaWF0ZWQiCi0rbWlfZ2RiX3Rlc3QgIjU5MS12YXItaW5mby10eXBlIHB2 bGEyX2Fzc29jaWF0ZWQiIFwKLSsgICI1OTFcXF5kb25lLHR5cGU9XCJyZWFsXFxcKGtpbmQ9NFxc XCkgXFxcKDUsMlxcXClcIiIgXAotKyAgImluZm8gdHlwZSB2YXJpYWJsZSBwdmxhMl9hc3NvY2lh dGVkIgotK21pX2dkYl90ZXN0ICI1OTItdmFyLXNob3ctZm9ybWF0IHB2bGEyX2Fzc29jaWF0ZWQi IFwKLSsgICI1OTJcXF5kb25lLGZvcm1hdD1cIm5hdHVyYWxcIiIgXAotKyAgInNob3cgZm9ybWF0 IHZhcmlhYmxlIHB2bGEyX2Fzc29jaWF0ZWQiCi0rbWlfZ2RiX3Rlc3QgIjU5My12YXItZXZhbHVh dGUtZXhwcmVzc2lvbiBwdmxhMl9hc3NvY2lhdGVkIiBcCi0rICAiNTkzXFxeZG9uZSx2YWx1ZT1c IlxcXFsyXFxcXVwiIiBcCi0rICAiZXZhbCB2YXJpYWJsZSBwdmxhMl9hc3NvY2lhdGVkIgotKwot KwotK3NldCBicF9saW5lbm8gW2dkYl9nZXRfbGluZV9udW1iZXIgInB2bGEyLXNldC10by1udWxs Il0KLSttaV9jcmVhdGVfYnJlYWtwb2ludCAiLXQgdmxhLmY5MDokYnBfbGluZW5vIiA4ICJkZWwi ICJ2bGEiICIuKnZsYS5mOTAiIFwKLSsgICRicF9saW5lbm8gJGhleCAiaW5zZXJ0IGJyZWFrcG9p bnQgYXQgbGluZSAkYnBfbGluZW5vIgotK21pX3J1bl9jbWQKLSttaV9leHBlY3Rfc3RvcCAiYnJl YWtwb2ludC1oaXQiICJ2bGEiICIiICIuKnZsYS5mOTAiICIkYnBfbGluZW5vIiBcCi0rICB7ICIi ICJkaXNwPVwiZGVsXCIiIH0gInJ1biB0byBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIK LSttaV9nZGJfdGVzdCAiNjAwLWRhdGEtZXZhbHVhdGUtZXhwcmVzc2lvbiBwdmxhMiIgXAotKyAg IjYwMFxcXmRvbmUsdmFsdWU9XCI8bm90IGFzc29jaWF0ZWQ+XCIiICJldmFsdWF0ZSB2bGEgcG9p bnRlciBzZXQgdG8gbnVsbCIKLSsKLSttaV9nZGJfZXhpdAotK3JldHVybiAwCi1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvdmxhLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL3Zs YS5mOTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi40NmVkYWQyCi0tLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS92bGEuZjkwCi1AQCAtMCwwICsx LDQyIEBACi0rISBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3Byb2dyYW0gdmxhCi0rICBy ZWFsLCBhbGxvY2F0YWJsZSA6OiB2bGExICg6KQotKyAgcmVhbCwgdGFyZ2V0LCBhbGxvY2F0YWJs ZSA6OiB2bGEyKDosIDopCi0rICByZWFsLCBwb2ludGVyIDo6IHB2bGEyICg6LCA6KQotKyAgbG9n aWNhbCA6OiBsCi0rCi0rICBhbGxvY2F0ZSAodmxhMSAoNSkpICAgICAgICAgISB2bGExLW5vdC1h bGxvY2F0ZWQKLSsgIGwgPSBhbGxvY2F0ZWQodmxhMSkgICAgICAgICAhIHZsYTEtYWxsb2NhdGVk Ci0rCi0rICB2bGExKDopID0gMQotKyAgdmxhMSgyKSA9IDQyICAgICAgICAgICAgICAgICEgdmxh MS1maWxsZWQKLSsgIHZsYTEoNCkgPSAyNAotKwotKyAgZGVhbGxvY2F0ZSAodmxhMSkgICAgICAg ICAgICEgdmxhMS1tb2RpZmllZAotKyAgbCA9IGFsbG9jYXRlZCh2bGExKSAgICAgICAgICEgdmxh MS1kZWFsbG9jYXRlZAotKwotKyAgYWxsb2NhdGUgKHZsYTIgKDUsIDIpKQotKyAgdmxhMig6LCA6 KSA9IDIKLSsKLSsgIHB2bGEyID0+IHZsYTIgICAgICAgICAgICAgICAhIHB2bGEyLW5vdC1hc3Nv Y2lhdGVkCi0rICBsID0gYXNzb2NpYXRlZChwdmxhMikgICAgICAgISBwdmxhMi1hc3NvY2lhdGVk Ci0rCi0rICBwdmxhMigyLCAxKSA9IDQyCi0rCi0rICBwdmxhMiA9PiBudWxsKCkKLSsgIGwgPSBh c3NvY2lhdGVkKHB2bGEyKSAgICAgICAhIHB2bGEyLXNldC10by1udWxsCi0rZW5kIHByb2dyYW0g dmxhCi0tLSAKLTEuNy45LjUKLQoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMjJvZjIzLnBh dGNoIGIvZ2RiLXZsYS1pbnRlbC0yMm9mMjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDFhMDY3NGMuLjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC0yMm9mMjMucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0ggMjIvMjNdIHRl c3Q6IHRlc3Qgc2l6ZW9mIGZvciBkeW5hbWljIGZvcnRyYW4gYXJyYXlzLgotTWVzc2FnZS1JZDog PDE0MDE4NjEyNjYtNjI0MC0yMy1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+ Ci0KLVRlc3RzIHNpemVvZiBvdXRwdXQgb2YgZHluYW1pYyBhcnJheXMgaW4gdmFyaW91cyBzdGF0 ZXMuCi0KLTIwMTQtMDUtMjggIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgot ICAgICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+Ci0K LXRlc3RzdWl0ZS9nZGIuZm9ydHJhbi86Ci0KLQkqIHZsYS1zaXplb2YuZXhwOiBOZXcgZmlsZS4K LQotQ2hhbmdlLUlkOiBJNjhkODFkMDNmZjJkYWEzMmFiODdkMjc1MDg3MzY1MmQ2ODRlNzM4OQot Ci1TaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotLS0t Ci0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6ZW9mLmV4cCB8ICAgNDYgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMo KykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6 ZW9mLmV4cAotCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6 ZW9mLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXNpemVvZi5leHAKLW5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42MDUzYzE3Ci0tLS0gL2Rldi9udWxsCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zaXplb2YuZXhwCi1AQCAtMCwwICsx LDQ2IEBACi0rIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc3RhbmRhcmRfdGVzdGZpbGUg InZsYS5mOTAiCi0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAg JHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCi0rICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKLSsg ICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVy cm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0r fQotKwotKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gbm9uIGFsbG9jYXRlZCBWTEEKLStnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1pbml0Il0KLStnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAidmxhMS1pbml0IgotK2dkYl90ZXN0ICJwcmludCBzaXplb2Yodmxh MSkiICIgPSAwIiAicHJpbnQgc2l6ZW9mIG5vbi1hbGxvY2F0ZWQgdmxhMSIKLSsKLSsjIFRyeSB0 byBhY2Nlc3MgdmFsdWUgaW4gYWxsb2NhdGVkIFZMQQotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJ2bGEyLWFsbG9jYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgInZsYTItYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwcmludCBzaXplb2YodmxhMSkiICIgPSA0 MDAwIiAicHJpbnQgc2l6ZW9mIGFsbG9jYXRlZCB2bGExIgotKwotKyMgVHJ5IHRvIGFjY2VzcyB2 YWx1ZXMgaW4gdW5kZWZpbmVkIHBvaW50ZXIgdG8gVkxBIChkYW5nbGluZykKLStnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1maWxsZWQiXQotK2dkYl9jb250aW51ZV90 b19icmVha3BvaW50ICJ2bGExLWZpbGxlZCIKLStnZGJfdGVzdCAicHJpbnQgc2l6ZW9mKHB2bGEp IiAiID0gMCIgInByaW50IHNpemVvZiBub24tYXNzb2NpYXRlZCBwdmxhIgotKwotKyMgVHJ5IHRv IGFjY2VzcyB2YWx1ZXMgaW4gcG9pbnRlciB0byBWTEEgYW5kIGNvbXBhcmUgdGhlbQotK2dkYl9i cmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLWFzc29jaWF0ZWQiXQotK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInByaW50 IHNpemVvZihwdmxhKSIgIiA9IDQwMDAiICJwcmludCBzaXplb2YgYXNzb2NpYXRlZCBwdmxhIgot LS0gCi0xLjcuOS41Ci0KCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTIzb2YyMy5wYXRjaCBi L2dkYi12bGEtaW50ZWwtMjNvZjIzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBjOTY1N2QwLi4wMDAwMDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtMjNvZjIzLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSCAyMy8yM10gdGVzdDog c3RyaWRlIHN1cHBvcnQgZm9yIGR5bmFtaWMgYXJyYXlzLgotTWVzc2FnZS1JZDogPDE0MDE4NjEy NjYtNjI0MC0yNC1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLVRlc3Rz IHRoZSB1c2FnZSBvZiBzdHJpZGUgdmFsdWVzIGluIGR5bmFtaWMgYXJyYXlzLgotCi0yMDE0LTA1 LTI4ICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNvbT4KLSAgICAgICAg ICAgIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotCi10ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vOgotCi0JKiB2bGEtc3RyaWRlLmV4cDogTmV3IGZpbGUuCi0JKiB2bGEtc3RyaWRl LmY5MDogTmV3IGZpbGUuCi0KLUNoYW5nZS1JZDogSWM0ZjY4Y2Y5NzA0NmNjOWY1ZjM2NjRmZTRj MTJkMmI3NTI4YzIyZWUKLQotU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxs QGludGVsLmNvbT4KLS0tLQotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5l eHAgfCAgIDUxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGdkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAgfCAgIDMwICsrKysrKysrKysrKysrKysrKwotIDIg ZmlsZXMgY2hhbmdlZCwgODEgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZXhwCi0gY3JlYXRlIG1vZGUgMTAwNjQ0 IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAKLQotZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg MDAwMDAwMC4uZTc5MTExNQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi92bGEtc3RyaWRlLmV4cAotQEAgLTAsMCArMSw1MSBAQAotKyMgQ29weXJpZ2h0IDIw MTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgotKwotK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgotKwotK2lmIHsgW3ByZXBh cmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAot KyAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStpZiAh W3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFr cG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLStnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAicmV2ZXJzZS1lbGVtZW50cyJdCi0rZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgInJldmVyc2UtZWxlbWVudHMiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEiICIgPSBc XFwoMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDFcXFwpIiBcCi0rICAicHJpbnQgcmV2ZXJz ZS1lbGVtZW50cyIKLStnZGJfdGVzdCAicHJpbnQgcHZsYSgxKSIgIiA9IDEwIiAicHJpbnQgZmly c3QgcmV2ZXJzZS1lbGVtZW50IgotK2dkYl90ZXN0ICJwcmludCBwdmxhKDEwKSIgIiA9IDEiICJw cmludCBsYXN0IHJldmVyc2UtZWxlbWVudCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAicmUtcmV2ZXJzZS1lbGVtZW50cyJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgInJlLXJldmVyc2UtZWxlbWVudHMiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEiICIgPSBc XFwoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBcXFwpIiBcCi0rICAicHJpbnQgcmUtcmV2 ZXJzZS1lbGVtZW50cyIKLStnZGJfdGVzdCAicHJpbnQgcHZsYSgxKSIgIiA9IDEiICJwcmludCBm aXJzdCByZS1yZXZlcnNlLWVsZW1lbnQiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEoMTApIiAiID0g MTAiICJwcmludCBsYXN0IHJlLXJldmVyc2UtZWxlbWVudCIKLSsKLStnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAib2RkLWVsZW1lbnRzIl0KLStnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAib2RkLWVsZW1lbnRzIgotK2dkYl90ZXN0ICJwcmludCBwdmxhIiAiID0gXFxcKDEs IDMsIDUsIDcsIDlcXFwpIiAicHJpbnQgb2RkLWVsZW1lbnRzIgotK2dkYl90ZXN0ICJwcmludCBw dmxhKDEpIiAiID0gMSIgInByaW50IGZpcnN0IG9kZC1lbGVtZW50IgotK2dkYl90ZXN0ICJwcmlu dCBwdmxhKDUpIiAiID0gOSIgInByaW50IGxhc3Qgb2RkLWVsZW1lbnQiCi0rCi0rZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInNpbmdsZS1lbGVtZW50Il0KLStnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAic2luZ2xlLWVsZW1lbnQiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEi ICIgPSBcXFwoNVxcXCkiICJwcmludCBzaW5nbGUtZWxlbWVudCIKLStnZGJfdGVzdCAicHJpbnQg cHZsYSgxKSIgIiA9IDUiICJwcmludCBvbmUgc2luZ2xlLWVsZW1lbnQiCi1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MCBiL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwLi4xZjhjYzU1Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3ZsYS1zdHJpZGUuZjkwCi1AQCAtMCwwICsxLDMwIEBACi0rISBDb3B5cmlnaHQgMjAx NCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl Ci0rISBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3Rv biwgTUEgMDIxMTEtMTMwNywgVVNBLgotKwotK3Byb2dyYW0gdmxhX3N0cmlkZQotKyAgaW50ZWdl ciwgdGFyZ2V0LCBhbGxvY2F0YWJsZSA6OiB2bGEgKDopCi0rICBpbnRlZ2VyLCBwb2ludGVyIDo6 IHB2bGEgKDopCi0rCi0rICBhbGxvY2F0ZSh2bGEoMTApKQotKyAgdmxhID0gKC8gKEksIEkgPSAx LDEwKSAvKQotKwotKyAgcHZsYSA9PiB2bGEoMTA6MTotMSkKLSsgIHB2bGEgPT4gcHZsYSgxMDox Oi0xKSAhIHJldmVyc2UtZWxlbWVudHMKLSsgIHB2bGEgPT4gdmxhKDE6MTA6MikgICAhIHJlLXJl dmVyc2UtZWxlbWVudHMKLSsgIHB2bGEgPT4gdmxhKDU6NDotMikgICAhIG9kZC1lbGVtZW50cwot KwotKyAgcHZsYSA9PiBudWxsKCkgICAgICAgICEgc2luZ2xlLWVsZW1lbnQKLStlbmQgcHJvZ3Jh bSB2bGFfc3RyaWRlCi0tLSAKLTEuNy45LjUKLQoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwu cGF0Y2ggYi9nZGItdmxhLWludGVsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjBhNjQ2YWIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdmxhLWludGVsLnBhdGNoCkBA IC0wLDAgKzEsMzI2NCBAQAorW1BBVENIIDAwLzIzXSBGb3J0cmFuIGR5bmFtaWMgYXJyYXkgc3Vw cG9ydAoraHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDE0LTA2L21zZzAw MTA4Lmh0bWwKK2h0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC1nZGIvdmxhL3RyZWUvdmxhLWZvcnRy YW4KKworR0lUIHNuYXBzaG90OgorY29tbWl0IGM2MjJhMDQ3ZDIzYmNiYzRkYzY4Mzk4ZmM3MGI1 MzFjZWJkOGY1ZWUKKworCitkaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUworaW5kZXgg ZDlhMTlhZS4uMWYyMmZlYSAxMDA2NDQKKyMjIyBhL2dkYi9ORVdTCisjIyMgYi9nZGIvTkVXUwor QEAgLTMsNiArMywxMCBAQAorIAorICoqKiBDaGFuZ2VzIHNpbmNlIEdEQiA3LjgKKyAKKysqIEZv cnRyYW4gZHluYW1pYyBhcnJheSBzdXBwb3J0OiBHREIgaGFzIG5vdyBzdXBwb3J0IGZvcgorKyAg ZHluYW1pYyBhcnJheXMgaW4gRm9ydHJhbi4gSXQgYWxsb3dzIHRoZSB1c2VyIHRvIGV2YWx1YXRl CisrICBkeW5hbWljIGFycmF5cyBsaWtlIGFuIG9yZGluYXJ5IHN0YXRpYyBhcnJheS4KKysKKyAq KiogQ2hhbmdlcyBpbiBHREIgNy44CisgCisgKiBOZXcgY29tbWFuZCBsaW5lIG9wdGlvbnMKK2Rp ZmYgLS1naXQgYS9nZGIvYy12YWxwcmludC5jIGIvZ2RiL2MtdmFscHJpbnQuYworaW5kZXggZjQ2 OTRiMC4uOGM0NTI3NiAxMDA2NDQKKy0tLSBhL2dkYi9jLXZhbHByaW50LmMKKysrKyBiL2dkYi9j LXZhbHByaW50LmMKK0BAIC01MzgsNyArNTM4LDE2IEBAIGNfdmFsdWVfcHJpbnQgKHN0cnVjdCB2 YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAorIAl7CisgCSAgLyogbm9ybWFsIGNh c2UgKi8KKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoIik7CistCSAgdHlwZV9wcmlu dCAodmFsdWVfdHlwZSAodmFsKSwgIiIsIHN0cmVhbSwgLTEpOworKwkgIGlmIChpc19keW5hbWlj X3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSkKKysJICAgIHsKKysJICAgICAgc3RydWN0 IHZhbHVlICp2OworKworKwkgICAgICB2ID0gdmFsdWVfaW5kICh2YWwpOworKwkgICAgICB2ID0g dmFsdWVfYWRkciAodik7CisrCSAgICAgIHR5cGVfcHJpbnQgKHZhbHVlX3R5cGUgKHYpLCAiIiwg c3RyZWFtLCAtMSk7CisrCSAgICB9CisrCSAgZWxzZQorKwkgICAgdHlwZV9wcmludCAodmFsdWVf dHlwZSAodmFsKSwgIiIsIHN0cmVhbSwgLTEpOworIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgIikgIik7CisgCX0KKyAgICAgfQorZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJleHByLmMgYi9n ZGIvZHdhcmYyZXhwci5jCitpbmRleCAzNmM5ZjY2Li4yNzRiYTYyIDEwMDY0NAorLS0tIGEvZ2Ri L2R3YXJmMmV4cHIuYworKysrIGIvZ2RiL2R3YXJmMmV4cHIuYworQEAgLTE0NzgsNiArMTQ3OCwx MiBAQCBleGVjdXRlX3N0YWNrX29wIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCisg CSAgfQorIAkgIGJyZWFrOworIAorKyAgICAgICAgY2FzZSBEV19PUF9wdXNoX29iamVjdF9hZGRy ZXNzOgorKwkgIC8qIFJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgb2JqZWN0IHdlIGFyZSBjdXJy ZW50bHkgb2JzZXJ2aW5nLiAgKi8KKysJICByZXN1bHQgPSAoY3R4LT5mdW5jcy0+Z2V0X29iamVj dF9hZGRyZXNzKSAoY3R4LT5iYXRvbik7CisrCSAgcmVzdWx0X3ZhbCA9IHZhbHVlX2Zyb21fdWxv bmdlc3QgKGFkZHJlc3NfdHlwZSwgcmVzdWx0KTsKKysJICBicmVhazsKKysKKyAJZGVmYXVsdDoK KyAJICBlcnJvciAoXygiVW5oYW5kbGVkIGR3YXJmIGV4cHJlc3Npb24gb3Bjb2RlIDB4JXgiKSwg b3ApOworIAl9CitkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuaCBiL2dkYi9kd2FyZjJleHBy LmgKK2luZGV4IDM5ZGFkZjMuLjhjZWJiZTggMTAwNjQ0CistLS0gYS9nZGIvZHdhcmYyZXhwci5o CisrKysgYi9nZGIvZHdhcmYyZXhwci5oCitAQCAtODQsMTIgKzg0LDggQEAgc3RydWN0IGR3YXJm X2V4cHJfY29udGV4dF9mdW5jcworICAgICAgVGhpcyBjYW4gdGhyb3cgYW4gZXhjZXB0aW9uIGlm IHRoZSBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuICAqLworICAgQ09SRV9BRERSICgqZ2V0X2FkZHJf aW5kZXgpICh2b2lkICpiYXRvbiwgdW5zaWduZWQgaW50IGluZGV4KTsKKyAKKy0jaWYgMAorLSAg LyogTm90IHlldCBpbXBsZW1lbnRlZC4gICovCistCisgICAvKiBSZXR1cm4gdGhlIGBvYmplY3Qg YWRkcmVzcycgZm9yIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MuICAqLworICAgQ09SRV9BRERS ICgqZ2V0X29iamVjdF9hZGRyZXNzKSAodm9pZCAqYmF0b24pOworLSNlbmRpZgorIH07CisgCisg LyogVGhlIGxvY2F0aW9uIG9mIGEgdmFsdWUuICAqLworZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJs b2MuYyBiL2dkYi9kd2FyZjJsb2MuYworaW5kZXggZmNhYjliOS4uNGFhYzI3OCAxMDA2NDQKKy0t LSBhL2dkYi9kd2FyZjJsb2MuYworKysrIGIvZ2RiL2R3YXJmMmxvYy5jCitAQCAtMzA2LDYgKzMw Niw3IEBAIHN0cnVjdCBkd2FyZl9leHByX2JhdG9uCisgeworICAgc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lOworICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1OworKyAgQ09SRV9B RERSIG9ial9hZGRyZXNzOworIH07CisgCisgLyogSGVscGVyIGZ1bmN0aW9ucyBmb3IgZHdhcmYy X2V2YWx1YXRlX2xvY19kZXNjLiAgKi8KK0BAIC0xMjA5LDYgKzEyMTAsNyBAQCBkd2FyZl9leHBy X3B1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpj dHgsCisgCisgICBiYXRvbl9sb2NhbC5mcmFtZSA9IGNhbGxlcl9mcmFtZTsKKyAgIGJhdG9uX2xv Y2FsLnBlcl9jdSA9IGNhbGxlcl9wZXJfY3U7CisrICBiYXRvbl9sb2NhbC5vYmpfYWRkcmVzcyA9 IDA7CisgCisgICBzYXZlZF9jdHguZ2RiYXJjaCA9IGN0eC0+Z2RiYXJjaDsKKyAgIHNhdmVkX2N0 eC5hZGRyX3NpemUgPSBjdHgtPmFkZHJfc2l6ZTsKK0BAIC0xMjM4LDYgKzEyNDAsMjIgQEAgZHdh cmZfZXhwcl9nZXRfYWRkcl9pbmRleCAodm9pZCAqYmF0b24sIHVuc2lnbmVkIGludCBpbmRleCkK KyAgIHJldHVybiBkd2FyZjJfcmVhZF9hZGRyX2luZGV4IChkZWJhdG9uLT5wZXJfY3UsIGluZGV4 KTsKKyB9CisgCisrLyogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIGdldF9vYmplY3RfYWRkcmVzcy4g UmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBWTEEKKysgICBvYmplY3QuICAqLworKworK3N0YXRp YyBDT1JFX0FERFIKKytkd2FyZl9leHByX2dldF9vYmpfYWRkciAodm9pZCAqYmF0b24pCisrewor KyAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24gKmRlYmF0b24gPSBiYXRvbjsKKysKKysgIGdkYl9h c3NlcnQgKGRlYmF0b24gIT0gTlVMTCk7CisrCisrICBpZiAoZGViYXRvbi0+b2JqX2FkZHJlc3Mg PT0gMCkKKysgICAgZXJyb3IgKF8oIkxvY2F0aW9uIGFkZHJlc3MgaXMgbm90IHNldC4iKSk7Cisr CisrICByZXR1cm4gZGViYXRvbi0+b2JqX2FkZHJlc3M7CisrfQorKworIC8qIFZBTFVFIG11c3Qg YmUgb2YgdHlwZSBsdmFsX2NvbXB1dGVkIHdpdGggZW50cnlfZGF0YV92YWx1ZV9mdW5jcy4gIFBl cmZvcm0KKyAgICB0aGUgaW5kaXJlY3QgbWV0aG9kIG9uIGl0LCB0aGF0IGlzIHVzZSBpdHMgc3Rv cmVkIHRhcmdldCB2YWx1ZSwgdGhlIHNvbGUKKyAgICBwdXJwb3NlIG9mIGVudHJ5X2RhdGFfdmFs dWVfZnVuY3MuLiAgKi8KK0BAIC0yMjAyLDcgKzIyMjAsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGR3YXJmX2V4cHJfY29udGV4dF9mdW5jcyBkd2FyZl9leHByX2N0eF9mdW5jcyA9CisgICBkd2Fy Zl9leHByX2R3YXJmX2NhbGwsCisgICBkd2FyZl9leHByX2dldF9iYXNlX3R5cGUsCisgICBkd2Fy Zl9leHByX3B1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlLAorLSAgZHdhcmZfZXhwcl9nZXRfYWRk cl9pbmRleAorKyAgZHdhcmZfZXhwcl9nZXRfYWRkcl9pbmRleCwKKysgIGR3YXJmX2V4cHJfZ2V0 X29ial9hZGRyCisgfTsKKyAKKyAvKiBFdmFsdWF0ZSBhIGxvY2F0aW9uIGRlc2NyaXB0aW9uLCBz dGFydGluZyBhdCBEQVRBIGFuZCB3aXRoIGxlbmd0aAorQEAgLTIyMzEsNiArMjI1MCw3IEBAIGR3 YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZy YW1lX2luZm8gKmZyYW1lLAorIAorICAgYmF0b24uZnJhbWUgPSBmcmFtZTsKKyAgIGJhdG9uLnBl cl9jdSA9IHBlcl9jdTsKKysgIGJhdG9uLm9ial9hZGRyZXNzID0gMDsKKyAKKyAgIGN0eCA9IG5l d19kd2FyZl9leHByX2NvbnRleHQgKCk7CisgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZnJl ZV9kd2FyZl9leHByX2NvbnRleHQgKGN0eCk7CitAQCAtMjQzNiw2ICsyNDU2LDcgQEAgZHdhcmYy X2V2YWx1YXRlX2xvY19kZXNjIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lLAorIAorIHN0YXRpYyBpbnQKKyBkd2FyZjJfbG9jZXhwcl9iYXRvbl9ldmFsIChjb25z dCBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmRsYmF0b24sCisrICAgICAgICAgQ09SRV9B RERSIGFkZHIsCisgCQkJICAgQ09SRV9BRERSICp2YWxwKQorIHsKKyAgIHN0cnVjdCBkd2FyZl9l eHByX2NvbnRleHQgKmN0eDsKK0BAIC0yNDUxLDYgKzI0NzIsNyBAQCBkd2FyZjJfbG9jZXhwcl9i YXRvbl9ldmFsIChjb25zdCBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmRsYmF0b24sCisg CisgICBiYXRvbi5mcmFtZSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoTlVMTCk7CisgICBiYXRvbi5w ZXJfY3UgPSBkbGJhdG9uLT5wZXJfY3U7CisrICBiYXRvbi5vYmpfYWRkcmVzcyA9IGFkZHI7Cisg CisgICBvYmpmaWxlID0gZHdhcmYyX3Blcl9jdV9vYmpmaWxlIChkbGJhdG9uLT5wZXJfY3UpOwor IAorQEAgLTI0OTEsNyArMjUxMyw4IEBAIGR3YXJmMl9sb2NleHByX2JhdG9uX2V2YWwgKGNvbnN0 IHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZGxiYXRvbiwKKyAvKiBTZWUgZHdhcmYybG9j LmguICAqLworIAorIGludAorLWR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAoY29uc3Qgc3RydWN0 IGR5bmFtaWNfcHJvcCAqcHJvcCwgQ09SRV9BRERSICp2YWx1ZSkKKytkd2FyZjJfZXZhbHVhdGVf cHJvcGVydHkgKGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3AsIENPUkVfQUREUiBhZGRy ZXNzLAorKyAgICAgICAgQ09SRV9BRERSICp2YWx1ZSkKKyB7CisgICBpZiAocHJvcCA9PSBOVUxM KQorICAgICByZXR1cm4gMDsKK0BAIC0yNTAyLDcgKzI1MjUsNyBAQCBkd2FyZjJfZXZhbHVhdGVf cHJvcGVydHkgKGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3AsIENPUkVfQUREUiAqdmFs dWUpCisgICAgICAgeworIAljb25zdCBzdHJ1Y3QgZHdhcmYyX3Byb3BlcnR5X2JhdG9uICpiYXRv biA9IHByb3AtPmRhdGEuYmF0b247CisgCistCWlmIChkd2FyZjJfbG9jZXhwcl9iYXRvbl9ldmFs ICgmYmF0b24tPmxvY2V4cHIsIHZhbHVlKSkKKysJaWYgKGR3YXJmMl9sb2NleHByX2JhdG9uX2V2 YWwgKCZiYXRvbi0+bG9jZXhwciwgYWRkcmVzcywgdmFsdWUpKQorIAkgIHsKKyAJICAgIGlmIChi YXRvbi0+cmVmZXJlbmNlZF90eXBlKQorIAkgICAgICB7CitAQCAtMjUxMCw2ICsyNTMzLDExIEBA IGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAoY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJv cCwgQ09SRV9BRERSICp2YWx1ZSkKKyAKKyAJCSp2YWx1ZSA9IHZhbHVlX2FzX2FkZHJlc3MgKHZh bCk7CisgCSAgICAgIH0KKysJICAgIGlmIChiYXRvbi0+cG9zdF92YWx1ZXMuZGF0YSAmJiBiYXRv bi0+cG9zdF92YWx1ZXMuc2l6ZSA+IDApCisrCSAgICAgIHsKKysJICAgICAgICBDT1JFX0FERFIg bmV3X2FkZHIgPSAqdmFsdWU7CisrCSAgICAgICAgZHdhcmYyX2xvY2V4cHJfYmF0b25fZXZhbCAo JmJhdG9uLT5wb3N0X3ZhbHVlcywgbmV3X2FkZHIsIHZhbHVlKTsKKysJICAgICAgfQorIAkgICAg cmV0dXJuIDE7CisgCSAgfQorICAgICAgIH0KK0BAIC0yNTMyLDYgKzI1NjAsMTEgQEAgZHdhcmYy X2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLCBDT1JF X0FERFIgKnZhbHVlKQorIAkgICAgaWYgKCF2YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2YWwpKQorIAkg ICAgICB7CisgCQkqdmFsdWUgPSB2YWx1ZV9hc19hZGRyZXNzICh2YWwpOworKwkJaWYgKGJhdG9u LT5wb3N0X3ZhbHVlcy5kYXRhICYmIGJhdG9uLT5wb3N0X3ZhbHVlcy5zaXplID4gMCkKKysJCSAg eworKwkJICAgIENPUkVfQUREUiBuZXdfYWRkciA9ICp2YWx1ZTsKKysJCSAgICBkd2FyZjJfbG9j ZXhwcl9iYXRvbl9ldmFsICgmYmF0b24tPnBvc3RfdmFsdWVzLCBuZXdfYWRkciwgdmFsdWUpOwor KwkJICB9CisgCQlyZXR1cm4gMTsKKyAJICAgICAgfQorIAkgIH0KK0BAIC0yNTQ2LDYgKzI1Nzks MjAgQEAgZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9w ICpwcm9wLCBDT1JFX0FERFIgKnZhbHVlKQorICAgcmV0dXJuIDA7CisgfQorIAorKy8qIFNlZSBk d2FyZjJsb2MuaC4gICovCisrCisraW50CisrZHdhcmYyX2FkZHJlc3NfZGF0YV92YWxpZCAoY29u c3Qgc3RydWN0IHR5cGUgKnR5cGUpCisreworKyAgaWYgKFRZUEVfTk9UX0FTU09DSUFURUQgKHR5 cGUpKQorKyAgICByZXR1cm4gMDsKKysKKysgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKHR5cGUp KQorKyAgICByZXR1cm4gMDsKKysKKysgIHJldHVybiAxOworK30KKysKKyAMCisgLyogSGVscGVy IGZ1bmN0aW9ucyBhbmQgYmF0b24gZm9yIGR3YXJmMl9sb2NfZGVzY19uZWVkc19mcmFtZS4gICov CisgCitAQCAtMjY1Myw2ICsyNzAwLDE1IEBAIG5lZWRzX2dldF9hZGRyX2luZGV4ICh2b2lkICpi YXRvbiwgdW5zaWduZWQgaW50IGluZGV4KQorICAgcmV0dXJuIDE7CisgfQorIAorKy8qIERXX09Q X3B1c2hfb2JqZWN0X2FkZHJlc3MgaGFzIGEgZnJhbWUgYWxyZWFkeSBwYXNzZWQgdGhyb3VnaC4g ICovCisrCisrc3RhdGljIENPUkVfQUREUgorK25lZWRzX2dldF9vYmpfYWRkciAodm9pZCAqYmF0 b24pCisreworKyAgLyogTm90aGluZyB0byBkby4gICovCisrICByZXR1cm4gMTsKKyt9CisrCisg LyogVmlydHVhbCBtZXRob2QgdGFibGUgZm9yIGR3YXJmMl9sb2NfZGVzY19uZWVkc19mcmFtZSBi ZWxvdy4gICovCisgCisgc3RhdGljIGNvbnN0IHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVu Y3MgbmVlZHNfZnJhbWVfY3R4X2Z1bmNzID0KK0BAIC0yNjY3LDcgKzI3MjMsOCBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dF9mdW5jcyBuZWVkc19mcmFtZV9jdHhfZnVu Y3MgPQorICAgbmVlZHNfZnJhbWVfZHdhcmZfY2FsbCwKKyAgIE5VTEwsCQkJCS8qIGdldF9iYXNl X3R5cGUgKi8KKyAgIG5lZWRzX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSwKKy0gIG5lZWRzX2dldF9h ZGRyX2luZGV4CisrICBuZWVkc19nZXRfYWRkcl9pbmRleCwKKysgIG5lZWRzX2dldF9vYmpfYWRk cgorIH07CisgCisgLyogUmV0dXJuIG5vbi16ZXJvIGlmZiB0aGUgbG9jYXRpb24gZXhwcmVzc2lv biBhdCBEQVRBIChsZW5ndGggU0laRSkKK0BAIC0zMzE2LDYgKzMzNzMsMTAgQEAgZHdhcmYyX2Nv bXBpbGVfZXhwcl90b19heCAoc3RydWN0IGFnZW50X2V4cHIgKmV4cHIsIHN0cnVjdCBheHNfdmFs dWUgKmxvYywKKyAJICB1bmltcGxlbWVudGVkIChvcCk7CisgCSAgYnJlYWs7CisgCisrICBjYXNl IERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3M6CisrICAgIHVuaW1wbGVtZW50ZWQgKG9wKTsKKysg ICAgYnJlYWs7CisrCisgCWNhc2UgRFdfT1Bfc2tpcDoKKyAJICBvZmZzZXQgPSBleHRyYWN0X3Np Z25lZF9pbnRlZ2VyIChvcF9wdHIsIDIsIGJ5dGVfb3JkZXIpOworIAkgIG9wX3B0ciArPSAyOwor ZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2MuaCBiL2dkYi9kd2FyZjJsb2MuaAoraW5kZXggOGFk NWZhOS4uY2Y2NDhlYiAxMDA2NDQKKy0tLSBhL2dkYi9kd2FyZjJsb2MuaAorKysrIGIvZ2RiL2R3 YXJmMmxvYy5oCitAQCAtOTYsMTEgKzk2LDE4IEBAIHN0cnVjdCB2YWx1ZSAqZHdhcmYyX2V2YWx1 YXRlX2xvY19kZXNjIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAgICBpbnRvIFZBTFVFLCBvdGhlcndp c2UgcmV0dXJucyAwLiAgKi8KKyAKKyBpbnQgZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChjb25z dCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLAorKwkJCSAgICAgIENPUkVfQUREUiBhZGRyZXNz LAorIAkJCSAgICAgIENPUkVfQUREUiAqdmFsdWUpOworIAorIENPUkVfQUREUiBkd2FyZjJfcmVh ZF9hZGRyX2luZGV4IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UsCisgCQkJCSAg dW5zaWduZWQgaW50IGFkZHJfaW5kZXgpOworIAorKy8qIENoZWNrcyBpZiBhIGR3YXJmIGxvY2F0 aW9uIGRlZmluaXRpb24gaXMgdmFsaWQuCisrICAgUmV0dXJucyAxIGlmIHZhbGlkOyAwIG90aGVy d2lzZS4gICovCisrCisrZXh0ZXJuIGludCBkd2FyZjJfYWRkcmVzc19kYXRhX3ZhbGlkIChjb25z dCBzdHJ1Y3QgdHlwZSAqdHlwZSk7CisrCisrCisgLyogVGhlIHN5bWJvbCBsb2NhdGlvbiBiYXRv biB0eXBlcyB1c2VkIGJ5IHRoZSBEV0FSRi0yIHJlYWRlciAoaS5lLgorICAgIFNZTUJPTF9MT0NB VElPTl9CQVRPTiBmb3IgYSBMT0NfQ09NUFVURUQgc3ltYm9sKS4gICJzdHJ1Y3QKKyAgICBkd2Fy ZjJfbG9jZXhwcl9iYXRvbiIgaXMgZm9yIGEgc3ltYm9sIHdpdGggYSBzaW5nbGUgbG9jYXRpb24K K0BAIC0xNjEsNiArMTY4LDkgQEAgc3RydWN0IGR3YXJmMl9wcm9wZXJ0eV9iYXRvbgorICAgICAv KiBMb2NhdGlvbiBsaXN0IHRvIGJlIGV2YWx1YXRlZCBpbiB0aGUgY29udGV4dCBvZiBSRUZFUkVO Q0VEX1RZUEUuICAqLworICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gbG9jbGlzdDsK KyAgIH07CisrCisrICAvKiBBdHRyaWJ1dGVzLCB3aGljaCB3aWxsIGJlIHB1c2hlZCBhZnRlciBl dmFsdWF0aW5nIGxvY2V4cHIgb3IgbG9jbGlzdC4gICovCisrICBzdHJ1Y3QgZHdhcmYyX2xvY2V4 cHJfYmF0b24gcG9zdF92YWx1ZXM7CisgfTsKKyAKKyBleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJv bF9jb21wdXRlZF9vcHMgZHdhcmYyX2xvY2V4cHJfZnVuY3M7CitkaWZmIC0tZ2l0IGEvZ2RiL2R3 YXJmMnJlYWQuYyBiL2dkYi9kd2FyZjJyZWFkLmMKK2luZGV4IDI3NmQyZjEuLmY1YjM1ZDcgMTAw NjQ0CistLS0gYS9nZGIvZHdhcmYycmVhZC5jCisrKysgYi9nZGIvZHdhcmYycmVhZC5jCitAQCAt MTg0Nyw2ICsxODQ3LDE1IEBAIHN0YXRpYyB2b2lkIGZyZWVfZHdvX2ZpbGVfY2xlYW51cCAodm9p ZCAqKTsKKyBzdGF0aWMgdm9pZCBwcm9jZXNzX2N1X2luY2x1ZGVzICh2b2lkKTsKKyAKKyBzdGF0 aWMgdm9pZCBjaGVja19wcm9kdWNlciAoc3RydWN0IGR3YXJmMl9jdSAqY3UpOworKworK3N0YXRp YyBpbnQKKythdHRyX3RvX2R5bmFtaWNfcHJvcCAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0 ciwgc3RydWN0IGRpZV9pbmZvICpkaWUsCisrCQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwg c3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwKKysJCSAgICAgIGNvbnN0IGdkYl9ieXRlICphZGRp dGlvbmFsX2RhdGEsIGludCBhZGRpdGlvbmFsX2RhdGFfc2l6ZSk7CisrCisrc3RhdGljIHZvaWQg YWRkX3Bvc3RfdmFsdWVzX3RvX2JhdG9uIChzdHJ1Y3QgZHdhcmYyX3Byb3BlcnR5X2JhdG9uICpi YXRvbiwKKysgICAgICAgIGNvbnN0IGdkYl9ieXRlICpkYXRhLCBpbnQgc2l6ZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpOworKworIAwKKyAvKiBWYXJpb3VzIGNvbXBsYWludHMgYWJvdXQgc3ltYm9s IHJlYWRpbmcgdGhhdCBkb24ndCBhYm9ydCB0aGUgcHJvY2Vzcy4gICovCisgCitAQCAtMTQyMDEs MjkgKzE0MjEwLDkwIEBAIHJlYWRfdGFnX3N0cmluZ190eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdl dF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworICAgc3RydWN0IHR5cGUgKnR5cGUsICpyYW5nZV90 eXBlLCAqaW5kZXhfdHlwZSwgKmNoYXJfdHlwZTsKKyAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7 CistICB1bnNpZ25lZCBpbnQgbGVuZ3RoOworKyAgdW5zaWduZWQgaW50IGxlbmd0aCA9IFVJTlRf TUFYOworKworKyAgaW5kZXhfdHlwZSA9IG9iamZpbGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0aW5f aW50OworKyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwgaW5k ZXhfdHlwZSwgMSwgbGVuZ3RoKTsKKyAKKysgIC8qIElmIERXX0FUX3N0cmluZ19sZW5ndGggaXMg ZGVmaW5lZCwgdGhlIGxlbmd0aCBpcyBzdG9yZWQgYXQgc29tZSBsb2NhdGlvbgorKyAgICogaW4g bWVtb3J5LiAqLworICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX3N0cmluZ19sZW5n dGgsIGN1KTsKKyAgIGlmIChhdHRyKQorICAgICB7CistICAgICAgbGVuZ3RoID0gRFdfVU5TTkQg KGF0dHIpOworKyAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorKyAgICAgICAg eworKyAgICAgICAgICBzdHJ1Y3QgYXR0cmlidXRlICpieXRlX3NpemUsICpiaXRfc2l6ZTsKKysg ICAgICAgICAgc3RydWN0IGR5bmFtaWNfcHJvcCBoaWdoOworKworKyAgICAgICAgICBieXRlX3Np emUgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3NpemUsIGN1KTsKKysgICAgICAgICAg Yml0X3NpemUgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9iaXRfc2l6ZSwgY3UpOworKworKyAg ICAgICAgICAvKiBEV19BVF9ieXRlX3NpemUgc2hvdWxkIG5ldmVyIG9jY3VyIHRvZ2V0aGVyIGlu IGNvbWJpbmF0aW9uIHdpdGgKKysgICAgICAgICAgICAgRFdfQVRfc3RyaW5nX2xlbmd0aC4gICov CisrICAgICAgICAgIGlmICgoYnl0ZV9zaXplID09IE5VTEwgJiYgYml0X3NpemUgIT0gTlVMTCkg fHwKKysgICAgICAgICAgICAgICAgICAoYnl0ZV9zaXplICE9IE5VTEwgJiYgYml0X3NpemUgPT0g TlVMTCkpCisrICAgICAgICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJE V19BVF9ieXRlX3NpemUgQU5EICIKKysgICAgICAgICAgICAgICAgICAgICAgIkRXX0FUX2JpdF9z aXplIGZvdW5kIHRvZ2V0aGVyIGF0IHRoZSBzYW1lIHRpbWUuIikpOworKworKyAgICAgICAgICAv KiBJZiBEV19BVF9zdHJpbmdfbGVuZ3RoIEFORCBEV19BVF9ieXRlX3NpemUgZXhpc3QgdG9nZXRo ZXIsIGl0CisrICAgICAgICAgICAgIGRlc2NyaWJlcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQg c2hvdWxkIGJlIHJlYWQgZnJvbSB0aGUgbGVuZ3RoCisrICAgICAgICAgICAgIG1lbW9yeSBsb2Nh dGlvbi4gICovCisrICAgICAgICAgIGlmIChieXRlX3NpemUgIT0gTlVMTCAmJiBiaXRfc2l6ZSA9 PSBOVUxMKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgIC8qIEJ1aWxkIG5ldyBkd2Fy ZjJfbG9jZXhwcl9iYXRvbiBzdHJ1Y3R1cmUgd2l0aCBhZGRpdGlvbnMgdG8gdGhlCisrICAgICAg ICAgICAgICAgICBkYXRhIGF0dHJpYnV0ZSwgdG8gcmVmbGVjdCBEV0FSRiBzcGVjaWFsaXRpZXMg dG8gZ2V0IGFkZHJlc3MKKysgICAgICAgICAgICAgICAgIHNpemVzLiAgKi8KKysgICAgICAgICAg ICAgIGNvbnN0IGdkYl9ieXRlIGFwcGVuZF9vcHNbXSA9IHsKKysgICAgICAgICAgICAgICAgRFdf T1BfcHVzaF9vYmplY3RfYWRkcmVzcywKKysgICAgICAgICAgICAgICAgLyogRFdfT1BfZGVyZWZf c2l6ZTogc2l6ZSBvZiBhbiBhZGRyZXNzIG9uIHRoZSB0YXJnZXQgbWFjaGluZQorKyAgICAgICAg ICAgICAgICAgICAoYnl0ZXMpLCB3aGVyZSB0aGUgc2l6ZSB3aWxsIGJlIHNwZWNpZmllZCBieSB0 aGUgbmV4dAorKyAgICAgICAgICAgICAgICAgICBvcGVyYW5kLiAgKi8KKysgICAgICAgICAgICAg ICAgRFdfT1BfZGVyZWZfc2l6ZSwKKysgICAgICAgICAgICAgICAgLyogT3BlcmFuZCBmb3IgRFdf T1BfZGVyZWZfc2l6ZS4gICovCisrICAgICAgICAgICAgICAgIERXX1VOU05EIChieXRlX3NpemUp IH07CisrCisrICAgICAgICAgICAgICBpZiAoIWF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBk aWUsIGN1LCAmaGlnaCwKKysgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kX29wcywgQVJSQVlf U0laRSAoYXBwZW5kX29wcykpKQorKyAgICAgICAgICAgICAgICBjb21wbGFpbnQgKCZzeW1maWxl X2NvbXBsYWludHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgXygiQ291bGQgbm90IHBhcnNl IERXX0FUX2J5dGVfc2l6ZSIpKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgIGVsc2UgaWYg KGJpdF9zaXplICE9IE5VTEwgJiYgYnl0ZV9zaXplID09IE5VTEwpCisrICAgICAgICAgICAgY29t cGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJEV19BVF9zdHJpbmdfbGVuZ3RoIEFORCAi CisrICAgICAgICAgICAgICAgICAgICAgICJEV19BVF9iaXRfc2l6ZSBmb3VuZCBidXQgbm90IHN1 cHBvcnRlZCB5ZXQuIikpOworKyAgICAgICAgICAvKiBJZiBEV19BVF9zdHJpbmdfbGVuZ3RoIFdJ VEhPVVQgRFdfQVRfYnl0ZV9zaXplIGV4aXN0LCB0aGUgZGVmYXVsdAorKyAgICAgICAgICAgICBp cyB0aGUgYWRkcmVzcyBzaXplIG9mIHRoZSB0YXJnZXQgbWFjaGluZS4gICovCisrICAgICAgICAg IGVsc2UKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBpZiAoIWF0dHJfdG9fZHluYW1p Y19wcm9wIChhdHRyLCBkaWUsIGN1LCAmaGlnaCwgTlVMTCwgMCkpCisrICAgICAgICAgICAgICAg IGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKysgICAgICAgICAgICAgICAgICAgICAg ICBfKCJDb3VsZCBub3QgcGFyc2UgRFdfQVRfc3RyaW5nX2xlbmd0aCIpKTsKKysgICAgICAgICAg ICB9CisrCisrICAgICAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2ggPSBo aWdoOworKyAgICAgICAgfQorKyAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAgVFlQ RV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IERXX1VOU05EIChhdHRyKTsKKysgICAgICAgICAg VFlQRV9ISUdIX0JPVU5EX0tJTkQgKHJhbmdlX3R5cGUpID0gUFJPUF9DT05TVDsKKysgICAgICAg IH0KKyAgICAgfQorICAgZWxzZQorICAgICB7CistICAgICAgLyogQ2hlY2sgZm9yIHRoZSBEV19B VF9ieXRlX3NpemUgYXR0cmlidXRlLiAgKi8KKysgICAgICAvKiBDaGVjayBmb3IgdGhlIERXX0FU X2J5dGVfc2l6ZSBhdHRyaWJ1dGUsIHdoaWNoIHJlcHJlc2VudHMgdGhlIGxlbmd0aAorKyAgICAg ICAgIGluIHRoaXMgY2FzZS4gICovCisgICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERX X0FUX2J5dGVfc2l6ZSwgY3UpOworICAgICAgIGlmIChhdHRyKQorICAgICAgICAgeworLSAgICAg ICAgICBsZW5ndGggPSBEV19VTlNORCAoYXR0cik7CisrICAgICAgICAgIFRZUEVfSElHSF9CT1VO RCAocmFuZ2VfdHlwZSkgPSBEV19VTlNORCAoYXR0cik7CisrICAgICAgICAgIFRZUEVfSElHSF9C T1VORF9LSU5EIChyYW5nZV90eXBlKSA9IFBST1BfQ09OU1Q7CisgICAgICAgICB9CisgICAgICAg ZWxzZQorICAgICAgICAgeworLSAgICAgICAgICBsZW5ndGggPSAxOworKyAgICAgICAgICBUWVBF X0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gMTsKKysgICAgICAgICAgVFlQRV9ISUdIX0JPVU5E X0tJTkQgKHJhbmdlX3R5cGUpID0gUFJPUF9DT05TVDsKKyAgICAgICAgIH0KKyAgICAgfQorIAor LSAgaW5kZXhfdHlwZSA9IG9iamZpbGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0aW5faW50OworLSAg cmFuZ2VfdHlwZSA9IGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwgaW5kZXhfdHlwZSwg MSwgbGVuZ3RoKTsKKyAgIGNoYXJfdHlwZSA9IGxhbmd1YWdlX3N0cmluZ19jaGFyX3R5cGUgKGN1 LT5sYW5ndWFnZV9kZWZuLCBnZGJhcmNoKTsKKyAgIHR5cGUgPSBjcmVhdGVfc3RyaW5nX3R5cGUg KE5VTEwsIGNoYXJfdHlwZSwgcmFuZ2VfdHlwZSk7CisgCitAQCAtMTQ1NDAsMTMgKzE0NjEwLDM2 IEBAIHJlYWRfYmFzZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCisgICByZXR1cm4gc2V0X2RpZV90eXBlIChkaWUsIHR5cGUsIGN1KTsKKyB9CisgCisr LyogQWRkIHBvc3QgcHJvY2Vzc2luZyBvcC1jb2RlcyB0byBhIGR3YXJmMl9wcm9wZXJ0eV9iYXRv bi4gICovCisrCisrc3RhdGljIHZvaWQgYWRkX3Bvc3RfdmFsdWVzX3RvX2JhdG9uIChzdHJ1Y3Qg ZHdhcmYyX3Byb3BlcnR5X2JhdG9uICpiYXRvbiwKKysgICAgICAgIGNvbnN0IGdkYl9ieXRlICpk YXRhLCBpbnQgc2l6ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisreworKyAgaWYgKGRhdGEgIT0g TlVMTCAmJiBzaXplID4gMCkKKysgICAgeworKyAgICAgIHN0cnVjdCBvYnN0YWNrICpvYnN0YWNr ID0gJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2s7CisrICAgICAgZ2RiX2J5dGUgKnBvc3Rf ZGF0YTsKKysKKysgICAgICBwb3N0X2RhdGEgPSBvYnN0YWNrX2FsbG9jIChvYnN0YWNrLCBzaXpl KTsKKysgICAgICBtZW1jcHkocG9zdF9kYXRhLCBkYXRhLCBzaXplKTsKKysgICAgICBiYXRvbi0+ cG9zdF92YWx1ZXMuZGF0YSA9IHBvc3RfZGF0YTsKKysgICAgICBiYXRvbi0+cG9zdF92YWx1ZXMu c2l6ZSA9IHNpemU7CisrICAgICAgYmF0b24tPnBvc3RfdmFsdWVzLnBlcl9jdSA9IGN1LT5wZXJf Y3U7CisrICAgIH0gZWxzZSB7CisrICAgICAgYmF0b24tPnBvc3RfdmFsdWVzLmRhdGEgPSBOVUxM OworKyAgICAgIGJhdG9uLT5wb3N0X3ZhbHVlcy5zaXplID0gMDsKKysgICAgICBiYXRvbi0+cG9z dF92YWx1ZXMucGVyX2N1ID0gTlVMTDsKKysgICAgfQorK30KKysKKyAvKiBQYXJzZSBkd2FyZiBh dHRyaWJ1dGUgaWYgaXQncyBhIGJsb2NrLCByZWZlcmVuY2Ugb3IgY29uc3RhbnQgYW5kIHB1dCB0 aGUKKyAgICByZXN1bHRpbmcgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBpbnRvIHN0cnVjdCBib3Vu ZF9wcm9wLgorICAgIFJldHVybnMgMSBpZiBBVFRSIGNvdWxkIGJlIHJlc29sdmVkIGludG8gUFJP UCwgMCBvdGhlcndpc2UuICAqLworIAorIHN0YXRpYyBpbnQKKyBhdHRyX3RvX2R5bmFtaWNfcHJv cCAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGRpZV9pbmZvICpkaWUsCist CQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCkK KysJCSAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1LCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9w LAorKwkJICAgICAgY29uc3QgZ2RiX2J5dGUgKmFkZGl0aW9uYWxfZGF0YSwgaW50IGFkZGl0aW9u YWxfZGF0YV9zaXplKQorIHsKKyAgIHN0cnVjdCBkd2FyZjJfcHJvcGVydHlfYmF0b24gKmJhdG9u OworICAgc3RydWN0IG9ic3RhY2sgKm9ic3RhY2sgPSAmY3UtPm9iamZpbGUtPm9iamZpbGVfb2Jz dGFjazsKK0BAIC0xNDU1OSw4ICsxNDY1MiwxMCBAQCBhdHRyX3RvX2R5bmFtaWNfcHJvcCAoY29u c3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGRpZV9pbmZvICpkaWUsCisgICAgICAg YmF0b24gPSBvYnN0YWNrX2FsbG9jIChvYnN0YWNrLCBzaXplb2YgKCpiYXRvbikpOworICAgICAg IGJhdG9uLT5yZWZlcmVuY2VkX3R5cGUgPSBOVUxMOworICAgICAgIGJhdG9uLT5sb2NleHByLnBl cl9jdSA9IGN1LT5wZXJfY3U7CistICAgICAgYmF0b24tPmxvY2V4cHIuc2l6ZSA9IERXX0JMT0NL IChhdHRyKS0+c2l6ZTsKKyAgICAgICBiYXRvbi0+bG9jZXhwci5kYXRhID0gRFdfQkxPQ0sgKGF0 dHIpLT5kYXRhOworKyAgICAgIGJhdG9uLT5sb2NleHByLnNpemUgPSBEV19CTE9DSyAoYXR0cikt PnNpemU7CisrICAgICAgYWRkX3Bvc3RfdmFsdWVzX3RvX2JhdG9uIChiYXRvbiwgYWRkaXRpb25h bF9kYXRhLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9kYXRh X3NpemUsIGN1KTsKKyAgICAgICBwcm9wLT5kYXRhLmJhdG9uID0gYmF0b247CisgICAgICAgcHJv cC0+a2luZCA9IFBST1BfTE9DRVhQUjsKKyAgICAgICBnZGJfYXNzZXJ0IChwcm9wLT5kYXRhLmJh dG9uICE9IE5VTEwpOworQEAgLTE0NTgxLDYgKzE0Njc2LDggQEAgYXR0cl90b19keW5hbWljX3By b3AgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAor IAkgIGJhdG9uID0gb2JzdGFja19hbGxvYyAob2JzdGFjaywgc2l6ZW9mICgqYmF0b24pKTsKKyAJ ICBiYXRvbi0+cmVmZXJlbmNlZF90eXBlID0gZGllX3R5cGUgKHRhcmdldF9kaWUsIHRhcmdldF9j dSk7CisgCSAgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChjdSwgJmJhdG9uLT5sb2NsaXN0LCB0YXJn ZXRfYXR0cik7CisrCSAgYWRkX3Bvc3RfdmFsdWVzX3RvX2JhdG9uIChiYXRvbiwgYWRkaXRpb25h bF9kYXRhLAorKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9kYXRhX3Np emUsIGN1KTsKKyAJICBwcm9wLT5kYXRhLmJhdG9uID0gYmF0b247CisgCSAgcHJvcC0+a2luZCA9 IFBST1BfTE9DTElTVDsKKyAJICBnZGJfYXNzZXJ0IChwcm9wLT5kYXRhLmJhdG9uICE9IE5VTEwp OworQEAgLTE0NTkyLDYgKzE0Njg5LDggQEAgYXR0cl90b19keW5hbWljX3Byb3AgKGNvbnN0IHN0 cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAorIAkgIGJhdG9uLT5s b2NleHByLnBlcl9jdSA9IGN1LT5wZXJfY3U7CisgCSAgYmF0b24tPmxvY2V4cHIuc2l6ZSA9IERX X0JMT0NLICh0YXJnZXRfYXR0ciktPnNpemU7CisgCSAgYmF0b24tPmxvY2V4cHIuZGF0YSA9IERX X0JMT0NLICh0YXJnZXRfYXR0ciktPmRhdGE7CisrCSAgYWRkX3Bvc3RfdmFsdWVzX3RvX2JhdG9u IChiYXRvbiwgYWRkaXRpb25hbF9kYXRhLAorKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAg YWRkaXRpb25hbF9kYXRhX3NpemUsIGN1KTsKKyAJICBwcm9wLT5kYXRhLmJhdG9uID0gYmF0b247 CisgCSAgcHJvcC0+a2luZCA9IFBST1BfTE9DRVhQUjsKKyAJICBnZGJfYXNzZXJ0IChwcm9wLT5k YXRhLmJhdG9uICE9IE5VTEwpOworQEAgLTE0NjI2LDcgKzE0NzI1LDcgQEAgcmVhZF9zdWJyYW5n ZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICBz dHJ1Y3QgdHlwZSAqYmFzZV90eXBlLCAqb3JpZ19iYXNlX3R5cGU7CisgICBzdHJ1Y3QgdHlwZSAq cmFuZ2VfdHlwZTsKKyAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CistICBzdHJ1Y3QgZHluYW1p Y19wcm9wIGxvdywgaGlnaDsKKysgIHN0cnVjdCBkeW5hbWljX3Byb3AgbG93LCBoaWdoLCBzdHJp ZGU7CisgICBpbnQgbG93X2RlZmF1bHRfaXNfdmFsaWQ7CisgICBpbnQgaGlnaF9ib3VuZF9pc19j b3VudCA9IDA7CisgICBjb25zdCBjaGFyICpuYW1lOworQEAgLTE0NjQ2LDcgKzE0NzQ1LDkgQEAg cmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCisgCisgICBsb3cua2luZCA9IFBST1BfQ09OU1Q7CisgICBoaWdoLmtpbmQgPSBQUk9Q X0NPTlNUOworKyAgc3RyaWRlLmtpbmQgPSBQUk9QX0NPTlNUOworICAgaGlnaC5kYXRhLmNvbnN0 X3ZhbCA9IDA7CisrICBzdHJpZGUuZGF0YS5jb25zdF92YWwgPSAwOworIAorICAgLyogU2V0IExP V19ERUZBVUxUX0lTX1ZBTElEIGlmIGN1cnJlbnQgbGFuZ3VhZ2UgYW5kIERXQVJGIHZlcnNpb24g YWxsb3cKKyAgICAgIG9taXR0aW5nIERXX0FUX2xvd2VyX2JvdW5kLiAgKi8KK0BAIC0xNDY3OSwx OSArMTQ3ODAsMjYgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAgICAgYnJlYWs7CisgICAgIH0KKyAKKysgIGF0dHIg PSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3N0cmlkZSwgY3UpOworKyAgaWYgKGF0dHIp CisrICAgIGlmICghYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZzdHJpZGUs IE5VTEwsIDApKQorKyAgICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJN aXNzaW5nIERXX0FUX2J5dGVfc3RyaWRlICIKKysgICAgICAgICAgICAgICAgICAiLSBESUUgYXQg MHgleCBbaW4gbW9kdWxlICVzXSIpLAorKyAgICAgICAgICAgICBkaWUtPm9mZnNldC5zZWN0X29m Ziwgb2JqZmlsZV9uYW1lIChjdS0+b2JqZmlsZSkpOworKworICAgYXR0ciA9IGR3YXJmMl9hdHRy IChkaWUsIERXX0FUX2xvd2VyX2JvdW5kLCBjdSk7CisgICBpZiAoYXR0cikKKy0gICAgYXR0cl90 b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZsb3cpOworKyAgICBhdHRyX3RvX2R5bmFt aWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmxvdywgTlVMTCwgMCk7CisgICBlbHNlIGlmICghbG93 X2RlZmF1bHRfaXNfdmFsaWQpCisgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywg XygiTWlzc2luZyBEV19BVF9sb3dlcl9ib3VuZCAiCisgCQkJCSAgICAgICItIERJRSBhdCAweCV4 IFtpbiBtb2R1bGUgJXNdIiksCisgCSAgICAgICBkaWUtPm9mZnNldC5zZWN0X29mZiwgb2JqZmls ZV9uYW1lIChjdS0+b2JqZmlsZSkpOworIAorICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERX X0FUX3VwcGVyX2JvdW5kLCBjdSk7CistICBpZiAoIWF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRy LCBkaWUsIGN1LCAmaGlnaCkpCisrICBpZiAoIWF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBk aWUsIGN1LCAmaGlnaCwgTlVMTCwgMCkpCisgICAgIHsKKyAgICAgICBhdHRyID0gZHdhcmYyX2F0 dHIgKGRpZSwgRFdfQVRfY291bnQsIGN1KTsKKy0gICAgICBpZiAoYXR0cl90b19keW5hbWljX3By b3AgKGF0dHIsIGRpZSwgY3UsICZoaWdoKSkKKysgICAgICBpZiAoYXR0cl90b19keW5hbWljX3By b3AgKGF0dHIsIGRpZSwgY3UsICZoaWdoLCBOVUxMLCAwKSkKKyAJeworIAkgIC8qIElmIGJvdW5k cyBhcmUgY29uc3RhbnQgZG8gdGhlIGZpbmFsIGNhbGN1bGF0aW9uIGhlcmUuICAqLworIAkgIGlm IChsb3cua2luZCA9PSBQUk9QX0NPTlNUICYmIGhpZ2gua2luZCA9PSBQUk9QX0NPTlNUKQorQEAg LTE0NzU1LDcgKzE0ODYzLDcgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAgICAgJiYgIVRZUEVfVU5TSUdORUQgKGJh c2VfdHlwZSkgJiYgKGhpZ2guZGF0YS5jb25zdF92YWwgJiBuZWdhdGl2ZV9tYXNrKSkKKyAgICAg aGlnaC5kYXRhLmNvbnN0X3ZhbCB8PSBuZWdhdGl2ZV9tYXNrOworIAorLSAgcmFuZ2VfdHlwZSA9 IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBvcmlnX2Jhc2VfdHlwZSwgJmxvdywgJmhpZ2gpOwor KyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBvcmlnX2Jhc2VfdHlwZSwg JmxvdywgJmhpZ2gsICZzdHJpZGUpOworIAorICAgaWYgKGhpZ2hfYm91bmRfaXNfY291bnQpCisg ICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmZsYWdfdXBwZXJfYm91bmRfaXNfY291 bnQgPSAxOworQEAgLTIxNjczLDYgKzIxNzgxLDggQEAgc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIHsK KyAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X29mZnNldF9hbmRfdHlwZSAqKnNsb3QsIG9mczsKKyAg IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gY3UtPm9iamZpbGU7CisrICBzdHJ1Y3QgYXR0cmli dXRlICphdHRyOworKyAgc3RydWN0IGR5bmFtaWNfcHJvcCBwcm9wOworIAorICAgLyogRm9yIEFk YSB0eXBlcywgbWFrZSBzdXJlIHRoYXQgdGhlIGduYXQtc3BlY2lmaWMgZGF0YSBpcyBhbHdheXMK KyAgICAgIGluaXRpYWxpemVkIChpZiBub3QgYWxyZWFkeSBzZXQpLiAgVGhlcmUgYXJlIGEgZmV3 IHR5cGVzIHdoZXJlCitAQCAtMjE2ODcsNiArMjE3OTcsNDMgQEAgc2V0X2RpZV90eXBlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQorICAgICAgICYmICFIQVZFX0dOQVRfQVVYX0lORk8gKHR5cGUpKQorICAgICBJTklUX0dOQVRf U1BFQ0lGSUMgKHR5cGUpOworIAorKyAgLyogUmVhZCBEV19BVF9hbGxvY2F0ZWQgYW5kIHNldCBp biB0eXBlLiAgKi8KKysgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9hbGxvY2F0ZWQs IGN1KTsKKysgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorKyAgICB7CisrICAgICAg c3RydWN0IGR5bmFtaWNfcHJvcCBwcm9wOworKworKyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNf cHJvcCAoYXR0ciwgZGllLCBjdSwgJnByb3AsIE5VTEwsIDApKQorKyAgICAgICAgeworKyAgICAg ICAgICBUWVBFX0FMTE9DQVRFRF9QUk9QICh0eXBlKQorKyAgICAgICAgICAgID0gb2JzdGFja19h bGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc2l6ZW9mIChwcm9wKSk7CisrICAgICAg ICAgICpUWVBFX0FMTE9DQVRFRF9QUk9QICh0eXBlKSA9IHByb3A7CisrICAgICAgICB9CisrICAg IH0KKysKKysgIC8qIFJlYWQgRFdfQVRfYXNzb2NpYXRlZCBhbmQgc2V0IGluIHR5cGUuICAqLwor KyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2Fzc29jaWF0ZWQsIGN1KTsKKysgIGlm IChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorKyAgICB7CisrICAgICAgc3RydWN0IGR5bmFt aWNfcHJvcCBwcm9wOworKworKyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwg ZGllLCBjdSwgJnByb3AsIE5VTEwsIDApKQorKyAgICAgICAgeworKyAgICAgICAgICBUWVBFX0FT U09DSUFURURfUFJPUCAodHlwZSkKKysgICAgICAgICAgICA9IG9ic3RhY2tfYWxsb2MgKCZvYmpm aWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAocHJvcCkpOworKyAgICAgICAgICAqVFlQRV9B U1NPQ0lBVEVEX1BST1AgKHR5cGUpID0gcHJvcDsKKysgICAgICAgIH0KKysgICAgfQorKworKyAg LyogUmVhZCBEV19BVF9kYXRhX2xvY2F0aW9uIGFuZCBzZXQgaW4gdHlwZS4gICovCisrICBhdHRy ID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfZGF0YV9sb2NhdGlvbiwgY3UpOworKyAgaWYgKGF0 dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmcHJvcCwgTlVMTCwgMCkpCisrICAg IHsKKysgICAgICBUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUpCisrICAgICAgICA9IG9ic3RhY2tf YWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAocHJvcCkpOworKyAgICAg ICpUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUpID0gcHJvcDsKKysgICAgfQorKworICAgaWYgKGR3 YXJmMl9wZXJfb2JqZmlsZS0+ZGllX3R5cGVfaGFzaCA9PSBOVUxMKQorICAgICB7CisgICAgICAg ZHdhcmYyX3Blcl9vYmpmaWxlLT5kaWVfdHlwZV9oYXNoID0KK2RpZmYgLS1naXQgYS9nZGIvZi10 eXBlcHJpbnQuYyBiL2dkYi9mLXR5cGVwcmludC5jCitpbmRleCA4MzU2YWFiLi42OWU2N2Y0IDEw MDY0NAorLS0tIGEvZ2RiL2YtdHlwZXByaW50LmMKKysrKyBiL2dkYi9mLXR5cGVwcmludC5jCitA QCAtMzAsNiArMzAsNyBAQAorICNpbmNsdWRlICJnZGJjb3JlLmgiCisgI2luY2x1ZGUgInRhcmdl dC5oIgorICNpbmNsdWRlICJmLWxhbmcuaCIKKysjaW5jbHVkZSAidmFscHJpbnQuaCIKKyAKKyAj aW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CitAQCAtNTYsNiArNTcsMTcg QEAgZl9wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgY2hhciAqdmFyc3RyaW5n LCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAorICAgZW51bSB0eXBlX2NvZGUgY29kZTsKKyAgIGlu dCBkZW1hbmdsZWRfYXJnczsKKyAKKysgIGlmIChUWVBFX05PVF9BU1NPQ0lBVEVEICh0eXBlKSkK KysgICAgeworKyAgICAgIHZhbF9wcmludF9ub3RfYXNzb2NpYXRlZCAoc3RyZWFtKTsKKysgICAg ICByZXR1cm47CisrICAgIH0KKysgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKHR5cGUpKQorKyAg ICB7CisrICAgICAgdmFsX3ByaW50X25vdF9hbGxvY2F0ZWQgKHN0cmVhbSk7CisrICAgICAgcmV0 dXJuOworKyAgICB9CisrCisgICBmX3R5cGVfcHJpbnRfYmFzZSAodHlwZSwgc3RyZWFtLCBzaG93 LCBsZXZlbCk7CisgICBjb2RlID0gVFlQRV9DT0RFICh0eXBlKTsKKyAgIGlmICgodmFyc3RyaW5n ICE9IE5VTEwgJiYgKnZhcnN0cmluZyAhPSAnXDAnKQorQEAgLTE3MCwyOCArMTgyLDM2IEBAIGZf dHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sCisgICAgICAgaWYgKGFycmF5cHJpbnRfcmVjdXJzZV9sZXZlbCA9PSAxKQor IAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoIik7CisgCistICAgICAgaWYgKFRZUEVfQ09E RSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpID09IFRZUEVfQ09ERV9BUlJBWSkKKy0JZl90eXBl X3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLCAw LCAwLCAwLAorLQkJCQkgICAgIGFycmF5cHJpbnRfcmVjdXJzZV9sZXZlbCk7CistCistICAgICAg bG93ZXJfYm91bmQgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHR5cGUpOworLSAgICAgIGlmIChsb3dl cl9ib3VuZCAhPSAxKQkvKiBOb3QgdGhlIGRlZmF1bHQuICAqLworLQlmcHJpbnRmX2ZpbHRlcmVk IChzdHJlYW0sICIlZDoiLCBsb3dlcl9ib3VuZCk7CistCistICAgICAgLyogTWFrZSBzdXJlIHRo YXQsIGlmIHdlIGhhdmUgYW4gYXNzdW1lZCBzaXplIGFycmF5LCB3ZQorLSAgICAgICAgIHByaW50 IG91dCBhIHdhcm5pbmcgYW5kIHByaW50IHRoZSB1cHBlcmJvdW5kIGFzICcqJy4gICovCistCist ICAgICAgaWYgKFRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEICh0eXBlKSkKKy0J ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKiIpOworKyAgICAgIGlmIChUWVBFX05PVF9BU1NP Q0lBVEVEICh0eXBlKSkKKysgICAgICAgIHZhbF9wcmludF9ub3RfYXNzb2NpYXRlZCAoc3RyZWFt KTsKKysgICAgICBlbHNlIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKHR5cGUpKQorKyAgICAgICAg dmFsX3ByaW50X25vdF9hbGxvY2F0ZWQgKHN0cmVhbSk7CisgICAgICAgZWxzZQorLQl7CistCSAg dXBwZXJfYm91bmQgPSBmNzdfZ2V0X3VwcGVyYm91bmQgKHR5cGUpOworLQkgIGZwcmludGZfZmls dGVyZWQgKHN0cmVhbSwgIiVkIiwgdXBwZXJfYm91bmQpOworLQl9CistCistICAgICAgaWYgKFRZ UEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpICE9IFRZUEVfQ09ERV9BUlJBWSkKKy0J Zl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3Ry ZWFtLCAwLCAwLCAwLAorLQkJCQkgICAgIGFycmF5cHJpbnRfcmVjdXJzZV9sZXZlbCk7CisrICAg ICAgICB7CisrCisrICAgICAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpKSA9PSBUWVBFX0NPREVfQVJSQVkpCisrICAgICAgICAgICAgZl90eXBlX3ByaW50X3ZhcnNw ZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLCAwLCAwLCAwLAorKyAg ICAgICAgICAgICAgICAgYXJyYXlwcmludF9yZWN1cnNlX2xldmVsKTsKKysKKysgICAgICAgICAg bG93ZXJfYm91bmQgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHR5cGUpOworKyAgICAgICAgICBpZiAo bG93ZXJfYm91bmQgIT0gMSkJLyogTm90IHRoZSBkZWZhdWx0LiAgKi8KKysgICAgICAgICAgICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZDoiLCBsb3dlcl9ib3VuZCk7CisrCisrICAgICAg ICAgIC8qIE1ha2Ugc3VyZSB0aGF0LCBpZiB3ZSBoYXZlIGFuIGFzc3VtZWQgc2l6ZSBhcnJheSwg d2UKKysgICAgICAgICAgICAgcHJpbnQgb3V0IGEgd2FybmluZyBhbmQgcHJpbnQgdGhlIHVwcGVy Ym91bmQgYXMgJyonLiAgKi8KKysKKysgICAgICAgICAgaWYgKFRZUEVfQVJSQVlfVVBQRVJfQk9V TkRfSVNfVU5ERUZJTkVEICh0eXBlKSkKKysgICAgICAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sICIqIik7CisrICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICB7CisrICAgICAgICAg ICAgICB1cHBlcl9ib3VuZCA9IGY3N19nZXRfdXBwZXJib3VuZCAodHlwZSk7CisrICAgICAgICAg ICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZCIsIHVwcGVyX2JvdW5kKTsKKysgICAg ICAgICAgICB9CisrCisrICAgICAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVfVEFSR0VUX1RZUEUg KHR5cGUpKSAhPSBUWVBFX0NPREVfQVJSQVkpCisrICAgICAgICAgICAgZl90eXBlX3ByaW50X3Zh cnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLCAwLCAwLCAwLAor KyAgICAgICAgICAgICAgICAgYXJyYXlwcmludF9yZWN1cnNlX2xldmVsKTsKKysgICAgICB9Cisg ICAgICAgaWYgKGFycmF5cHJpbnRfcmVjdXJzZV9sZXZlbCA9PSAxKQorIAlmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sICIpIik7CisgICAgICAgZWxzZQorZGlmZiAtLWdpdCBhL2dkYi9mLXZhbHBy aW50LmMgYi9nZGIvZi12YWxwcmludC5jCitpbmRleCA0MDhjOGNjLi4zOGYzMmUwIDEwMDY0NAor LS0tIGEvZ2RiL2YtdmFscHJpbnQuYworKysrIGIvZ2RiL2YtdmFscHJpbnQuYworQEAgLTM5LDgg KzM5LDYgQEAKKyAKKyBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9mX3ZhbHByaW50ICh2b2lkKTsK KyBzdGF0aWMgdm9pZCBpbmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICosIGludCk7Cistc3RhdGlj IHZvaWQgZjc3X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90YmwgKHN0cnVjdCB0eXBlICosCist CQkJCQkgICAgICBzdHJ1Y3QgdWlfZmlsZSAqKTsKKyBzdGF0aWMgdm9pZCBmNzdfZ2V0X2R5bmFt aWNfbGVuZ3RoX29mX2FnZ3JlZ2F0ZSAoc3RydWN0IHR5cGUgKik7CisgCisgaW50IGY3N19hcnJh eV9vZmZzZXRfdGJsW01BWF9GT1JUUkFOX0RJTVMgKyAxXVsyXTsKK0BAIC00OCwxNSArNDYsNiBA QCBpbnQgZjc3X2FycmF5X29mZnNldF90YmxbTUFYX0ZPUlRSQU5fRElNUyArIDFdWzJdOworIC8q IEFycmF5IHdoaWNoIGhvbGRzIG9mZnNldHMgdG8gYmUgYXBwbGllZCB0byBnZXQgYSByb3cncyBl bGVtZW50cworICAgIGZvciBhIGdpdmVuIGFycmF5LiAgQXJyYXkgYWxzbyBob2xkcyB0aGUgc2l6 ZSBvZiBlYWNoIHN1YmFycmF5LiAgKi8KKyAKKy0vKiBUaGUgZm9sbG93aW5nIG1hY3JvIGdpdmVz IHVzIHRoZSBzaXplIG9mIHRoZSBudGggZGltZW5zaW9uLCBXaGVyZSAKKy0gICBuIGlzIDEgYmFz ZWQuICAqLworLQorLSNkZWZpbmUgRjc3X0RJTV9TSVpFKG4pIChmNzdfYXJyYXlfb2Zmc2V0X3Ri bFtuXVsxXSkKKy0KKy0vKiBUaGUgZm9sbG93aW5nIGdpdmVzIHVzIHRoZSBvZmZzZXQgZm9yIHJv dyBuIHdoZXJlIG4gaXMgMS1iYXNlZC4gICovCistCistI2RlZmluZSBGNzdfRElNX09GRlNFVChu KSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1bMF0pCistCisgaW50CisgZjc3X2dldF9sb3dlcmJv dW5kIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyB7CitAQCAtMTE0LDQ3ICsxMDMsNiBAQCBmNzdfZ2V0 X2R5bmFtaWNfbGVuZ3RoX29mX2FnZ3JlZ2F0ZSAoc3RydWN0IHR5cGUgKnR5cGUpCisgICAgICog VFlQRV9MRU5HVEggKGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSk7Cisg fQorIAorLS8qIEZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgYXJyYXkgb2Zmc2V0LHNpemUgdGFi bGUgZm9yIHRoZSBhcnJheSAKKy0gICB0eXBlICJ0eXBlIi4gICovCistCistc3RhdGljIHZvaWQK Ky1mNzdfY3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0X3RibCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0 cnVjdCB1aV9maWxlICpzdHJlYW0pCisteworLSAgc3RydWN0IHR5cGUgKnRtcF90eXBlOworLSAg aW50IGVsdGxlbjsKKy0gIGludCBuZGltZW4gPSAxOworLSAgaW50IHVwcGVyLCBsb3dlcjsKKy0K Ky0gIHRtcF90eXBlID0gdHlwZTsKKy0KKy0gIHdoaWxlIChUWVBFX0NPREUgKHRtcF90eXBlKSA9 PSBUWVBFX0NPREVfQVJSQVkpCistICAgIHsKKy0gICAgICB1cHBlciA9IGY3N19nZXRfdXBwZXJi b3VuZCAodG1wX3R5cGUpOworLSAgICAgIGxvd2VyID0gZjc3X2dldF9sb3dlcmJvdW5kICh0bXBf dHlwZSk7CistCistICAgICAgRjc3X0RJTV9TSVpFIChuZGltZW4pID0gdXBwZXIgLSBsb3dlciAr IDE7CistCistICAgICAgdG1wX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0bXBfdHlwZSk7Cist ICAgICAgbmRpbWVuKys7CistICAgIH0KKy0KKy0gIC8qIE5vdyB3ZSBtdWx0aXBseSBlbHRsZW4g YnkgYWxsIHRoZSBvZmZzZXRzLCBzbyB0aGF0IGxhdGVyIHdlIAorLSAgICAgY2FuIHByaW50IG91 dCBhcnJheSBlbGVtZW50cyBjb3JyZWN0bHkuICBVcCB0aWxsIG5vdyB3ZSAKKy0gICAgIGtub3cg YW4gb2Zmc2V0IHRvIGFwcGx5IHRvIGdldCB0aGUgaXRlbSBidXQgd2UgYWxzbyAKKy0gICAgIGhh dmUgdG8ga25vdyBob3cgbXVjaCB0byBhZGQgdG8gZ2V0IHRvIHRoZSBuZXh0IGl0ZW0uICAqLwor LQorLSAgbmRpbWVuLS07CistICBlbHRsZW4gPSBUWVBFX0xFTkdUSCAodG1wX3R5cGUpOworLSAg Rjc3X0RJTV9PRkZTRVQgKG5kaW1lbikgPSBlbHRsZW47CistICB3aGlsZSAoLS1uZGltZW4gPiAw KQorLSAgICB7CistICAgICAgZWx0bGVuICo9IEY3N19ESU1fU0laRSAobmRpbWVuICsgMSk7Cist ICAgICAgRjc3X0RJTV9PRkZTRVQgKG5kaW1lbikgPSBlbHRsZW47CistICAgIH0KKy19CistCist CistCisgLyogQWN0dWFsIGZ1bmN0aW9uIHdoaWNoIHByaW50cyBvdXQgRjc3IGFycmF5cywgVmFs YWRkciA9PSBhZGRyZXNzIGluIAorICAgIHRoZSBzdXBlcmlvci4gIEFkZHJlc3MgPT0gdGhlIGFk ZHJlc3MgaW4gdGhlIGluZmVyaW9yLiAgKi8KKyAKK0BAIC0xNjcsNDEgKzExNSw2MiBAQCBmNzdf cHJpbnRfYXJyYXlfMSAoaW50IG5zcywgaW50IG5kaW1lbnNpb25zLCBzdHJ1Y3QgdHlwZSAqdHlw ZSwKKyAJCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAorIAkJ ICAgaW50ICplbHRzKQorIHsKKysgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlID0gVFlQRV9JTkRF WF9UWVBFIChjaGVja190eXBlZGVmICh0eXBlKSk7CisrICBDT1JFX0FERFIgYWRkciA9IGFkZHJl c3MgKyBlbWJlZGRlZF9vZmZzZXQ7CisrICBMT05HRVNUIGxvd2VyYm91bmQsIHVwcGVyYm91bmQ7 CisgICBpbnQgaTsKKyAKKysgIGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dl cmJvdW5kLCAmdXBwZXJib3VuZCk7CisrCisgICBpZiAobnNzICE9IG5kaW1lbnNpb25zKQorICAg ICB7CistICAgICAgZm9yIChpID0gMDsKKy0JICAgKGkgPCBGNzdfRElNX1NJWkUgKG5zcykgJiYg KCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7CisrICAgICAgc2l6ZV90IGRpbV9zaXplOwor KyAgICAgIHNpemVfdCBvZmZzID0gMDsKKysgICAgICBMT05HRVNUIGJ5dGVfc3RyaWRlID0gYWJz IChUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKSk7CisrCisrICAgICAgaWYgKGJ5dGVfc3Ry aWRlKQorKyAgICAgICAgZGltX3NpemUgPSBieXRlX3N0cmlkZTsKKysgICAgICBlbHNlCisrICAg ICAgICBkaW1fc2l6ZSA9IFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Cisr CisrICAgICAgZm9yIChpID0gbG93ZXJib3VuZDsKKysJICAgKGkgPCB1cHBlcmJvdW5kICsgMSAm JiAoKmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4KTsKKyAJICAgaSsrKQorIAl7CisrCSAgc3Ry dWN0IHZhbHVlICpzdWJhcnJheSA9IHZhbHVlX2Zyb21fY29udGVudHNfYW5kX2FkZHJlc3MKKysJ ICAgIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgdmFsdWVfY29udGVudHNfZm9yX3ByaW50aW5n X2NvbnN0ICh2YWwpCisrCSAgICAgKyBvZmZzLCBhZGRyICsgb2Zmcyk7CisrCisgCSAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKCAiKTsKKy0JICBmNzdfcHJpbnRfYXJyYXlfMSAobnNzICsg MSwgbmRpbWVuc2lvbnMsIFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLAorLQkJCSAgICAgdmFsYWRk ciwKKy0JCQkgICAgIGVtYmVkZGVkX29mZnNldCArIGkgKiBGNzdfRElNX09GRlNFVCAobnNzKSwK Ky0JCQkgICAgIGFkZHJlc3MsCistCQkJICAgICBzdHJlYW0sIHJlY3Vyc2UsIHZhbCwgb3B0aW9u cywgZWx0cyk7CisrCSAgZjc3X3ByaW50X2FycmF5XzEgKG5zcyArIDEsIG5kaW1lbnNpb25zLCB2 YWx1ZV90eXBlIChzdWJhcnJheSksCisrCQkJICAgICB2YWx1ZV9jb250ZW50c19mb3JfcHJpbnRp bmcgKHN1YmFycmF5KSwKKysJCQkgICAgIHZhbHVlX2VtYmVkZGVkX29mZnNldCAoc3ViYXJyYXkp LAorKwkJCSAgICAgdmFsdWVfYWRkcmVzcyAoc3ViYXJyYXkpLAorKwkJCSAgICAgc3RyZWFtLCBy ZWN1cnNlLCBzdWJhcnJheSwgb3B0aW9ucywgZWx0cyk7CisrCSAgb2ZmcyArPSBkaW1fc2l6ZTsK KyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpICIpOworIAl9CistICAgICAgaWYgKCpl bHRzID49IG9wdGlvbnMtPnByaW50X21heCAmJiBpIDwgRjc3X0RJTV9TSVpFIChuc3MpKSAKKysg ICAgICBpZiAoKmVsdHMgPj0gb3B0aW9ucy0+cHJpbnRfbWF4ICYmIGkgPCB1cHBlcmJvdW5kKQor IAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKKyAgICAgfQorICAgZWxzZQorICAg ICB7CistICAgICAgZm9yIChpID0gMDsgaSA8IEY3N19ESU1fU0laRSAobnNzKSAmJiAoKmVsdHMp IDwgb3B0aW9ucy0+cHJpbnRfbWF4OworKyAgICAgIGZvciAoaSA9IGxvd2VyYm91bmQ7IGkgPCB1 cHBlcmJvdW5kICsgMSAmJiAoKmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4OworIAkgICBpKyss ICgqZWx0cykrKykKKyAJeworLQkgIHZhbF9wcmludCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSks CistCQkgICAgIHZhbGFkZHIsCistCQkgICAgIGVtYmVkZGVkX29mZnNldCArIGkgKiBGNzdfRElN X09GRlNFVCAobmRpbWVuc2lvbnMpLAorLQkJICAgICBhZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2Us CistCQkgICAgIHZhbCwgb3B0aW9ucywgY3VycmVudF9sYW5ndWFnZSk7CisrCSAgc3RydWN0IHZh bHVlICplbHQgPSB2YWx1ZV9zdWJzY3JpcHQgKChzdHJ1Y3QgdmFsdWUgKil2YWwsIGkpOworKwor KwkgIHZhbF9wcmludCAodmFsdWVfdHlwZSAoZWx0KSwKKysJCSAgICAgdmFsdWVfY29udGVudHNf Zm9yX3ByaW50aW5nIChlbHQpLAorKwkJICAgICB2YWx1ZV9lbWJlZGRlZF9vZmZzZXQgKGVsdCks CisrCQkgICAgIHZhbHVlX2FkZHJlc3MgKGVsdCksIHN0cmVhbSwgcmVjdXJzZSwKKysJCSAgICAg ZWx0LCBvcHRpb25zLCBjdXJyZW50X2xhbmd1YWdlKTsKKyAKKy0JICBpZiAoaSAhPSAoRjc3X0RJ TV9TSVpFIChuc3MpIC0gMSkpCisrCSAgaWYgKGkgIT0gdXBwZXJib3VuZCkKKyAJICAgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIiwgIik7CisgCisgCSAgaWYgKCgqZWx0cyA9PSBvcHRpb25z LT5wcmludF9tYXggLSAxKQorLQkgICAgICAmJiAoaSAhPSAoRjc3X0RJTV9TSVpFIChuc3MpIC0g MSkpKQorKwkgICAgICAmJiAoaSAhPSB1cHBlcmJvdW5kKSkKKyAJICAgIGZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgIi4uLiIpOworIAl9CisgICAgIH0KK0BAIC0yMjgsMTIgKzE5Nyw2IEBAIGY3 N19wcmludF9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRy LAorIFR5cGUgbm9kZSBjb3JydXB0ISBGNzcgYXJyYXlzIGNhbm5vdCBoYXZlICVkIHN1YnNjcmlw dHMgKCVkIE1heCkiKSwKKyAJICAgbmRpbWVuc2lvbnMsIE1BWF9GT1JUUkFOX0RJTVMpOworIAor LSAgLyogU2luY2UgRjc3IGFycmF5cyBhcmUgc3RvcmVkIGNvbHVtbi1tYWpvciwgd2Ugc2V0IHVw IGFuIAorLSAgICAgb2Zmc2V0IHRhYmxlIHRvIGdldCBhdCB0aGUgdmFyaW91cyByb3cncyBlbGVt ZW50cy4gIFRoZSAKKy0gICAgIG9mZnNldCB0YWJsZSBjb250YWlucyBlbnRyaWVzIGZvciBib3Ro IG9mZnNldCBhbmQgc3ViYXJyYXkgc2l6ZS4gICovCistCistICBmNzdfY3JlYXRlX2FycmF5cHJp bnRfb2Zmc2V0X3RibCAodHlwZSwgc3RyZWFtKTsKKy0KKyAgIGY3N19wcmludF9hcnJheV8xICgx LCBuZGltZW5zaW9ucywgdHlwZSwgdmFsYWRkciwgZW1iZWRkZWRfb2Zmc2V0LAorIAkJICAgICBh ZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2UsIHZhbCwgb3B0aW9ucywgJmVsdHMpOworIH0KK0BAIC0z NzgsMTIgKzM0MSwxNSBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAorICAgICAgIGZwcmludGZfZmls dGVyZWQgKHN0cmVhbSwgIiggIik7CisgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgVFlQ RV9ORklFTERTICh0eXBlKTsgaW5kZXgrKykKKyAgICAgICAgIHsKKy0gICAgICAgICAgaW50IG9m ZnNldCA9IFRZUEVfRklFTERfQklUUE9TICh0eXBlLCBpbmRleCkgLyA4OworKwkgIHN0cnVjdCB2 YWx1ZSAqZmllbGQgPSB2YWx1ZV9maWVsZAorKwkgICAgKChzdHJ1Y3QgdmFsdWUgKilvcmlnaW5h bF92YWx1ZSwgaW5kZXgpOworKworKyAgICAgICAgICB2YWxfcHJpbnQgKHZhbHVlX3R5cGUgKGZp ZWxkKSwKKysJCSAgICAgdmFsdWVfY29udGVudHNfZm9yX3ByaW50aW5nIChmaWVsZCksCisrCQkg ICAgIHZhbHVlX2VtYmVkZGVkX29mZnNldCAoZmllbGQpLAorKwkJICAgICB2YWx1ZV9hZGRyZXNz IChmaWVsZCksIHN0cmVhbSwgcmVjdXJzZSArIDEsCisrCQkgICAgIGZpZWxkLCBvcHRpb25zLCBj dXJyZW50X2xhbmd1YWdlKTsKKyAKKy0gICAgICAgICAgdmFsX3ByaW50IChUWVBFX0ZJRUxEX1RZ UEUgKHR5cGUsIGluZGV4KSwgdmFsYWRkciwKKy0JCSAgICAgZW1iZWRkZWRfb2Zmc2V0ICsgb2Zm c2V0LAorLQkJICAgICBhZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2UgKyAxLAorLQkJICAgICBvcmln aW5hbF92YWx1ZSwgb3B0aW9ucywgY3VycmVudF9sYW5ndWFnZSk7CisgICAgICAgICAgIGlmIChp bmRleCAhPSBUWVBFX05GSUVMRFMgKHR5cGUpIC0gMSkKKyAgICAgICAgICAgICBmcHV0c19maWx0 ZXJlZCAoIiwgIiwgc3RyZWFtKTsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9nZGIvZ2RidHlw ZXMuYyBiL2dkYi9nZGJ0eXBlcy5jCitpbmRleCBkMGMwMDJmLi4zZjUyZDYxIDEwMDY0NAorLS0t IGEvZ2RiL2dkYnR5cGVzLmMKKysrKyBiL2dkYi9nZGJ0eXBlcy5jCitAQCAtODA1LDcgKzgwNSw4 IEBAIGFsbG9jYXRlX3N0dWJfbWV0aG9kIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyBzdHJ1Y3QgdHlw ZSAqCisgY3JlYXRlX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwgc3RydWN0 IHR5cGUgKmluZGV4X3R5cGUsCisgCQkgICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpsb3df Ym91bmQsCistCQkgICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpoaWdoX2JvdW5kKQorKwkJ ICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqaGlnaF9ib3VuZCwKKysJCSAgIGNvbnN0IHN0 cnVjdCBkeW5hbWljX3Byb3AgKnN0cmlkZSkKKyB7CisgICBpZiAocmVzdWx0X3R5cGUgPT0gTlVM TCkKKyAgICAgcmVzdWx0X3R5cGUgPSBhbGxvY190eXBlX2NvcHkgKGluZGV4X3R5cGUpOworQEAg LTgyMCw2ICs4MjEsNyBAQCBjcmVhdGVfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90 eXBlLCBzdHJ1Y3QgdHlwZSAqaW5kZXhfdHlwZSwKKyAgICAgVFlQRV9aQUxMT0MgKHJlc3VsdF90 eXBlLCBzaXplb2YgKHN0cnVjdCByYW5nZV9ib3VuZHMpKTsKKyAgIFRZUEVfUkFOR0VfREFUQSAo cmVzdWx0X3R5cGUpLT5sb3cgPSAqbG93X2JvdW5kOworICAgVFlQRV9SQU5HRV9EQVRBIChyZXN1 bHRfdHlwZSktPmhpZ2ggPSAqaGlnaF9ib3VuZDsKKysgIFRZUEVfUkFOR0VfREFUQSAocmVzdWx0 X3R5cGUpLT5zdHJpZGUgPSAqc3RyaWRlOworIAorICAgaWYgKGxvd19ib3VuZC0+a2luZCA9PSBQ Uk9QX0NPTlNUICYmIGxvd19ib3VuZC0+ZGF0YS5jb25zdF92YWwgPj0gMCkKKyAgICAgVFlQRV9V TlNJR05FRCAocmVzdWx0X3R5cGUpID0gMTsKK0BAIC04NDEsNyArODQzLDcgQEAgc3RydWN0IHR5 cGUgKgorIGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBl LCBzdHJ1Y3QgdHlwZSAqaW5kZXhfdHlwZSwKKyAJCQkgIExPTkdFU1QgbG93X2JvdW5kLCBMT05H RVNUIGhpZ2hfYm91bmQpCisgeworLSAgc3RydWN0IGR5bmFtaWNfcHJvcCBsb3csIGhpZ2g7Cisr ICBzdHJ1Y3QgZHluYW1pY19wcm9wIGxvdywgaGlnaCwgc3RyaWRlOworIAorICAgbG93LmtpbmQg PSBQUk9QX0NPTlNUOworICAgbG93LmRhdGEuY29uc3RfdmFsID0gbG93X2JvdW5kOworQEAgLTg0 OSw3ICs4NTEsMTEgQEAgY3JlYXRlX3N0YXRpY19yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVz dWx0X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBlLAorICAgaGlnaC5raW5kID0gUFJPUF9D T05TVDsKKyAgIGhpZ2guZGF0YS5jb25zdF92YWwgPSBoaWdoX2JvdW5kOworIAorLSAgcmVzdWx0 X3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAocmVzdWx0X3R5cGUsIGluZGV4X3R5cGUsICZsb3cs ICZoaWdoKTsKKysgIHN0cmlkZS5raW5kID0gUFJPUF9DT05TVDsKKysgIHN0cmlkZS5kYXRhLmNv bnN0X3ZhbCA9IDA7CisrCisrICByZXN1bHRfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChyZXN1 bHRfdHlwZSwgaW5kZXhfdHlwZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZsb3csICZoaWdoLCAmc3RyaWRlKTsKKyAKKyAgIHJldHVybiByZXN1bHRfdHlwZTsKKyB9CitA QCAtMTAwMywxOCArMTAwOSwyNCBAQCBjcmVhdGVfYXJyYXlfdHlwZV93aXRoX3N0cmlkZSAoc3Ry dWN0IHR5cGUgKnJlc3VsdF90eXBlLAorIAorICAgVFlQRV9DT0RFIChyZXN1bHRfdHlwZSkgPSBU WVBFX0NPREVfQVJSQVk7CisgICBUWVBFX1RBUkdFVF9UWVBFIChyZXN1bHRfdHlwZSkgPSBlbGVt ZW50X3R5cGU7CistICBpZiAoaGFzX3N0YXRpY19yYW5nZSAoVFlQRV9SQU5HRV9EQVRBIChyYW5n ZV90eXBlKSkpCisrICBpZiAoaGFzX3N0YXRpY19yYW5nZSAoVFlQRV9SQU5HRV9EQVRBIChyYW5n ZV90eXBlKSkKKysgICAgICAmJiBkd2FyZjJfYWRkcmVzc19kYXRhX3ZhbGlkIChyZXN1bHRfdHlw ZSkpCisgICAgIHsKKy0gICAgICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKKysgICAg ICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZCwgYnl0ZV9zdHJpZGU7CisgCisgICAgICAg aWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91bmQsICZoaWdoX2Jv dW5kKSA8IDApCisgCWxvd19ib3VuZCA9IGhpZ2hfYm91bmQgPSAwOworICAgICAgIENIRUNLX1RZ UEVERUYgKGVsZW1lbnRfdHlwZSk7CisrCisrICAgICAgYnl0ZV9zdHJpZGUgPSBhYnMgKFRZUEVf QllURV9TVFJJREUgKHJhbmdlX3R5cGUpKTsKKysKKyAgICAgICAvKiBCZSBjYXJlZnVsIHdoZW4g c2V0dGluZyB0aGUgYXJyYXkgbGVuZ3RoLiAgQWRhIGFycmF5cyBjYW4gYmUKKyAJIGVtcHR5IGFy cmF5cyB3aXRoIHRoZSBoaWdoX2JvdW5kIGJlaW5nIHNtYWxsZXIgdGhhbiB0aGUgbG93X2JvdW5k LgorIAkgSW4gc3VjaCBjYXNlcywgdGhlIGFycmF5IGxlbmd0aCBzaG91bGQgYmUgemVyby4gICov CisgICAgICAgaWYgKGhpZ2hfYm91bmQgPCBsb3dfYm91bmQpCisgCVRZUEVfTEVOR1RIIChyZXN1 bHRfdHlwZSkgPSAwOworKyAgICAgIGVsc2UgaWYgKGJ5dGVfc3RyaWRlID4gMCkKKysJVFlQRV9M RU5HVEggKHJlc3VsdF90eXBlKSA9IGJ5dGVfc3RyaWRlICogKGhpZ2hfYm91bmQgLSBsb3dfYm91 bmQgKyAxKTsKKyAgICAgICBlbHNlIGlmIChiaXRfc3RyaWRlID4gMCkKKyAJVFlQRV9MRU5HVEgg KHJlc3VsdF90eXBlKSA9CisgCSAgKGJpdF9zdHJpZGUgKiAoaGlnaF9ib3VuZCAtIGxvd19ib3Vu ZCArIDEpICsgNykgLyA4OworQEAgLTE2MTYsMTEgKzE2MjgsMzAgQEAgc3R1Yl9ub25hbWVfY29t cGxhaW50ICh2b2lkKQorIGludAorIGlzX2R5bmFtaWNfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUp CisgeworKyAgaW50IGluZGV4OworKworKyAgaWYgKCF0eXBlKQorKyAgICByZXR1cm4gMDsKKysK KyAgIHR5cGUgPSBjaGVja190eXBlZGVmICh0eXBlKTsKKyAKKyAgIGlmIChUWVBFX0NPREUgKHR5 cGUpID09IFRZUEVfQ09ERV9SRUYpCisgICAgIHR5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RB UkdFVF9UWVBFICh0eXBlKSk7CisgCisrICBpZiAoVFlQRV9BU1NPQ0lBVEVEX1BST1AgKHR5cGUp KQorKyAgICByZXR1cm4gMTsKKysKKysgIGlmIChUWVBFX0FMTE9DQVRFRF9QUk9QICh0eXBlKSkK KysgICAgcmV0dXJuIDE7CisrCisrICAvKiBTY2FuIGZpZWxkIHR5cGVzIGluIHRoZSBGb3J0cmFu IGNhc2UgZm9yIG5lc3RlZCBkeW5hbWljIHR5cGVzLgorKyAgICAgVGhpcyB3aWxsIGJlIGRvbmUg b25seSBmb3IgRm9ydHJhbiBhcyBpbiB0aGUgQysrIGNhc2UgYW4gZW5kbGVzcyByZWN1cnNpb24K KysgICAgIGNhbiBvY2N1ciBpbiB0aGUgYXJlYSBvZiBjbGFzc2VzLiAgKi8KKysgIGlmIChjdXJy ZW50X2xhbmd1YWdlLT5sYV9sYW5ndWFnZSA9PSBsYW5ndWFnZV9mb3J0cmFuKQorKyAgICBmb3Ig KGluZGV4ID0gMDsgaW5kZXggPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBpbmRleCsrKQorKyAgICAg IGlmIChpc19keW5hbWljX3R5cGUgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaW5kZXgpKSkKKysg ICAgICAgIHJldHVybiAxOworKworICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQorICAgICB7 CisgICAgIGNhc2UgVFlQRV9DT0RFX1JBTkdFOgorQEAgLTE2MzAsMTEgKzE2NjEsMTkgQEAgaXNf ZHluYW1pY190eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyAgICAgICB7CisgCWdkYl9hc3NlcnQg KFRZUEVfTkZJRUxEUyAodHlwZSkgPT0gMSk7CisgCistCS8qIFRoZSBhcnJheSBpcyBkeW5hbWlj IGlmIGVpdGhlciB0aGUgYm91bmRzIGFyZSBkeW5hbWljLAorLQkgICBvciB0aGUgZWxlbWVudHMg aXQgY29udGFpbnMgaGF2ZSBhIGR5bmFtaWMgY29udGVudHMuICAqLworKwkvKiBUaGUgYXJyYXkg aXMgZHluYW1pYyBpZiBlaXRoZXIKKysgICAgIC0gdGhlIGJvdW5kcyBhcmUgZHluYW1pYywKKysJ ICAgLSB0aGUgZWxlbWVudHMgaXQgY29udGFpbnMgaGF2ZSBhIGR5bmFtaWMgY29udGVudHMKKysg ICAgIC0gYSBkYXRhX2xvY2F0b24gYXR0cmlidXRlIHdhcyBmb3VuZC4gICovCisgCWlmIChpc19k eW5hbWljX3R5cGUgKFRZUEVfSU5ERVhfVFlQRSAodHlwZSkpKQorIAkgIHJldHVybiAxOworLQly ZXR1cm4gaXNfZHluYW1pY190eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CisrCWVsc2Ug aWYgKFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSkgIT0gTlVMTAorKwkgICAgICAgICAmJiAoVFlQ RV9EQVRBX0xPQ0FUSU9OX0tJTkQgKHR5cGUpID09IFBST1BfTE9DRVhQUgorKwkgICAgICAgICAg ICAgfHwgVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQgKHR5cGUpID09IFBST1BfTE9DTElTVCkpCisr ICAgIHJldHVybiAxOworKyAgZWxzZQorKyAgICByZXR1cm4gaXNfZHluYW1pY190eXBlIChUWVBF X1RBUkdFVF9UWVBFICh0eXBlKSk7CisrCWJyZWFrOworICAgICAgIH0KKyAKKyAgICAgY2FzZSBU WVBFX0NPREVfU1RSVUNUOgorQEAgLTE2NDcsMjggKzE2ODYsNDAgQEAgaXNfZHluYW1pY190eXBl IChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyAJICAgICAgJiYgaXNfZHluYW1pY190eXBlIChUWVBFX0ZJ RUxEX1RZUEUgKHR5cGUsIGkpKSkKKyAJICAgIHJldHVybiAxOworICAgICAgIH0KKysgICAgY2Fz ZSBUWVBFX0NPREVfUFRSOgorKyAgICAgIHsKKysgICAgICAgIGlmIChUWVBFX1RBUkdFVF9UWVBF ICh0eXBlKQorKyAgICAgICAgICAgICYmIFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSkpID09IFRZUEVfQ09ERV9TVFJJTkcpCisrICAgICAgICAgIHJldHVybiBpc19keW5hbWljX3R5 cGUgKGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSk7CisrCisrICAgICAg ICByZXR1cm4gMDsKKysgICAgICAgIGJyZWFrOworKyAgICAgIH0KKysgICAgZGVmYXVsdDoKKysg ICAgICByZXR1cm4gMDsKKyAgICAgICBicmVhazsKKyAgICAgfQorIAorICAgcmV0dXJuIDA7Cisg fQorIAorLS8qIEdpdmVuIGEgZHluYW1pYyByYW5nZSB0eXBlIChkeW5fcmFuZ2VfdHlwZSksIHJl dHVybiBhIHN0YXRpYyB2ZXJzaW9uCistICAgb2YgdGhhdCB0eXBlLiAgKi8KKysvKiBHaXZlbiBh IGR5bmFtaWMgcmFuZ2UgdHlwZSAoZHluX3JhbmdlX3R5cGUpIGFuZCBhZGRyZXNzLAorKyAgIHJl dHVybiBhIHN0YXRpYyB2ZXJzaW9uIG9mIHRoYXQgdHlwZS4gICovCisgCisgc3RhdGljIHN0cnVj dCB0eXBlICoKKy1yZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHN0cnVjdCB0eXBlICpkeW5fcmFuZ2Vf dHlwZSkKKytyZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHN0cnVjdCB0eXBlICpkeW5fcmFuZ2VfdHlw ZSwgQ09SRV9BRERSIGFkZHIpCisgeworICAgQ09SRV9BRERSIHZhbHVlOworICAgc3RydWN0IHR5 cGUgKnN0YXRpY19yYW5nZV90eXBlOworICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJv cDsKKyAgIGNvbnN0IHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYmF0b247CistICBzdHJ1 Y3QgZHluYW1pY19wcm9wIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKKysgIHN0cnVjdCBkeW5hbWlj X3Byb3AgbG93X2JvdW5kLCBoaWdoX2JvdW5kLCBzdHJpZGU7CisrICBzdHJ1Y3QgdHlwZSAqcmFu Z2VfY29weSA9IGNvcHlfdHlwZSAoZHluX3JhbmdlX3R5cGUpOworIAorICAgZ2RiX2Fzc2VydCAo VFlQRV9DT0RFIChkeW5fcmFuZ2VfdHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdFKTsKKyAKKyAgIHBy b3AgPSAmVFlQRV9SQU5HRV9EQVRBIChkeW5fcmFuZ2VfdHlwZSktPmxvdzsKKy0gIGlmIChkd2Fy ZjJfZXZhbHVhdGVfcHJvcGVydHkgKHByb3AsICZ2YWx1ZSkpCisrICBpZiAoZHdhcmYyX2V2YWx1 YXRlX3Byb3BlcnR5IChwcm9wLCBhZGRyLCAmdmFsdWUpKQorICAgICB7CisgICAgICAgbG93X2Jv dW5kLmtpbmQgPSBQUk9QX0NPTlNUOworICAgICAgIGxvd19ib3VuZC5kYXRhLmNvbnN0X3ZhbCA9 IHZhbHVlOworQEAgLTE2ODAsNyArMTczMSw3IEBAIHJlc29sdmVfZHluYW1pY19yYW5nZSAoc3Ry dWN0IHR5cGUgKmR5bl9yYW5nZV90eXBlKQorICAgICB9CisgCisgICBwcm9wID0gJlRZUEVfUkFO R0VfREFUQSAoZHluX3JhbmdlX3R5cGUpLT5oaWdoOworLSAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9w cm9wZXJ0eSAocHJvcCwgJnZhbHVlKSkKKysgIGlmIChkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkg KHByb3AsIGFkZHIsICZ2YWx1ZSkpCisgICAgIHsKKyAgICAgICBoaWdoX2JvdW5kLmtpbmQgPSBQ Uk9QX0NPTlNUOworICAgICAgIGhpZ2hfYm91bmQuZGF0YS5jb25zdF92YWwgPSB2YWx1ZTsKK0BA IC0xNjk0LDEwICsxNzQ1LDE3IEBAIHJlc29sdmVfZHluYW1pY19yYW5nZSAoc3RydWN0IHR5cGUg KmR5bl9yYW5nZV90eXBlKQorICAgICAgIGhpZ2hfYm91bmQua2luZCA9IFBST1BfVU5ERUZJTkVE OworICAgICAgIGhpZ2hfYm91bmQuZGF0YS5jb25zdF92YWwgPSAwOworICAgICB9CisrICAKKysg IHByb3AgPSAmVFlQRV9SQU5HRV9EQVRBIChkeW5fcmFuZ2VfdHlwZSktPnN0cmlkZTsKKysgIGlm IChkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKHByb3AsIGFkZHIsICZ2YWx1ZSkpCisrICAgIHsK KysgICAgICBzdHJpZGUua2luZCA9IFBST1BfQ09OU1Q7CisrICAgICAgc3RyaWRlLmRhdGEuY29u c3RfdmFsID0gdmFsdWU7CisrICAgIH0KKyAKKy0gIHN0YXRpY19yYW5nZV90eXBlID0gY3JlYXRl X3JhbmdlX3R5cGUgKGNvcHlfdHlwZSAoZHluX3JhbmdlX3R5cGUpLAorLQkJCQkJIFRZUEVfVEFS R0VUX1RZUEUgKGR5bl9yYW5nZV90eXBlKSwKKy0JCQkJCSAmbG93X2JvdW5kLCAmaGlnaF9ib3Vu ZCk7CisrICBzdGF0aWNfcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChyYW5nZV9jb3B5 LAorKwkJCQkJIFRZUEVfVEFSR0VUX1RZUEUgKHJhbmdlX2NvcHkpLAorKwkJCQkJICZsb3dfYm91 bmQsICZoaWdoX2JvdW5kLCAmc3RyaWRlKTsKKyAgIFRZUEVfUkFOR0VfREFUQSAoc3RhdGljX3Jh bmdlX3R5cGUpLT5mbGFnX2JvdW5kX2V2YWx1YXRlZCA9IDE7CisgICByZXR1cm4gc3RhdGljX3Jh bmdlX3R5cGU7CisgfQorQEAgLTE3MDcsMjkgKzE3NjUsNTIgQEAgcmVzb2x2ZV9keW5hbWljX3Jh bmdlIChzdHJ1Y3QgdHlwZSAqZHluX3JhbmdlX3R5cGUpCisgICAgb2YgdGhlIGFzc29jaWF0ZWQg YXJyYXkuICAqLworIAorIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqCistcmVzb2x2ZV9keW5hbWljX2Fy cmF5IChzdHJ1Y3QgdHlwZSAqdHlwZSkKKytyZXNvbHZlX2R5bmFtaWNfYXJyYXkgKHN0cnVjdCB0 eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcikKKyB7CisgICBDT1JFX0FERFIgdmFsdWU7CisgICBz dHJ1Y3QgdHlwZSAqZWx0X3R5cGU7CisgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKKyAgIHN0 cnVjdCB0eXBlICphcnlfZGltOworKyAgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKKysgIHN0 cnVjdCB0eXBlICpjb3B5ID0gY29weV90eXBlICh0eXBlKTsKKyAKKy0gIGdkYl9hc3NlcnQgKFRZ UEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZKTsKKysgIGdkYl9hc3NlcnQgKFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCisrICAgICAgICAgICAgICB8fCBUWVBFX0NP REUgKHR5cGUpID09IFRZUEVfQ09ERV9TVFJJTkcpOworIAorICAgZWx0X3R5cGUgPSB0eXBlOwor ICAgcmFuZ2VfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfSU5ERVhfVFlQRSAoZWx0X3R5cGUp KTsKKy0gIHJhbmdlX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHJhbmdlX3R5cGUpOwor KyAgcmFuZ2VfdHlwZSA9IHJlc29sdmVfZHluYW1pY19yYW5nZSAocmFuZ2VfdHlwZSwgYWRkcik7 CisrCisrICBwcm9wID0gVFlQRV9BTExPQ0FURURfUFJPUCAodHlwZSk7CisrICBpZiAoZHdhcmYy X2V2YWx1YXRlX3Byb3BlcnR5IChwcm9wLCBhZGRyLCAmdmFsdWUpKQorKyAgICB7CisrICAgICAg VFlQRV9BTExPQ0FURURfUFJPUCAoY29weSktPmtpbmQgPSBQUk9QX0NPTlNUOworKyAgICAgIFRZ UEVfQUxMT0NBVEVEX1BST1AgKGNvcHkpLT5kYXRhLmNvbnN0X3ZhbCA9IHZhbHVlOworKyAgICB9 CisrCisrICBwcm9wID0gVFlQRV9BU1NPQ0lBVEVEX1BST1AgKHR5cGUpOworKyAgaWYgKGR3YXJm Ml9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgYWRkciwgJnZhbHVlKSkKKysgICAgeworKyAgICAg IFRZUEVfQVNTT0NJQVRFRF9QUk9QIChjb3B5KS0+a2luZCA9IFBST1BfQ09OU1Q7CisrICAgICAg VFlQRV9BU1NPQ0lBVEVEX1BST1AgKGNvcHkpLT5kYXRhLmNvbnN0X3ZhbCA9IHZhbHVlOworKyAg ICB9CisgCisgICBhcnlfZGltID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAoZWx0 X3R5cGUpKTsKKyAKKy0gIGlmIChhcnlfZGltICE9IE5VTEwgJiYgVFlQRV9DT0RFIChhcnlfZGlt KSA9PSBUWVBFX0NPREVfQVJSQVkpCistICAgIGVsdF90eXBlID0gcmVzb2x2ZV9keW5hbWljX2Fy cmF5IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CisrICBpZiAoYXJ5X2RpbSAhPSBOVUxMICYm IChUWVBFX0NPREUgKGFyeV9kaW0pID09IFRZUEVfQ09ERV9BUlJBWQorKyAgICAgICAgICB8fCBU WVBFX0NPREUgKGFyeV9kaW0pID09IFRZUEVfQ09ERV9TVFJJTkcpKQorKyAgICBlbHRfdHlwZSA9 IHJlc29sdmVfZHluYW1pY19hcnJheSAoVFlQRV9UQVJHRVRfVFlQRSAoY29weSksIGFkZHIpOwor ICAgZWxzZQorICAgICBlbHRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOworIAorLSAg cmV0dXJuIGNyZWF0ZV9hcnJheV90eXBlIChjb3B5X3R5cGUgKHR5cGUpLAorLQkJCSAgICBlbHRf dHlwZSwKKy0JCQkgICAgcmFuZ2VfdHlwZSk7CisrICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBU WVBFX0NPREVfU1RSSU5HKQorKyAgICByZXR1cm4gY3JlYXRlX3N0cmluZ190eXBlIChjb3B5LAor KyAgICAgICAgICAgIGVsdF90eXBlLAorKyAgICAgICAgICAgIHJhbmdlX3R5cGUpOworKyAgZWxz ZQorKyAgICByZXR1cm4gY3JlYXRlX2FycmF5X3R5cGUgKGNvcHksCisrICAgICAgICAgICAgZWx0 X3R5cGUsCisrICAgICAgICAgICAgcmFuZ2VfdHlwZSk7CisgfQorIAorIC8qIFJlc29sdmUgZHlu YW1pYyBib3VuZHMgb2YgbWVtYmVycyBvZiB0aGUgdW5pb24gVFlQRSB0byBzdGF0aWMKK0BAIC0x ODIzLDYgKzE5MDQsNyBAQCByZXNvbHZlX2R5bmFtaWNfc3RydWN0IChzdHJ1Y3QgdHlwZSAqdHlw ZSwgQ09SRV9BRERSIGFkZHIpCisgICByZXR1cm4gcmVzb2x2ZWRfdHlwZTsKKyB9CisgCisrCisg LyogU2VlIGdkYnR5cGVzLmggICovCisgCisgc3RydWN0IHR5cGUgKgorQEAgLTE4MzAsNiArMTkx Miw4IEBAIHJlc29sdmVfZHluYW1pY190eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERS IGFkZHIpCisgeworICAgc3RydWN0IHR5cGUgKnJlYWxfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5 cGUpOworICAgc3RydWN0IHR5cGUgKnJlc29sdmVkX3R5cGUgPSB0eXBlOworKyAgY29uc3Qgc3Ry dWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKKysgIENPUkVfQUREUiB2YWx1ZTsKKyAKKyAgIGlmICgh aXNfZHluYW1pY190eXBlIChyZWFsX3R5cGUpKQorICAgICByZXR1cm4gdHlwZTsKK0BAIC0xODUz LDExICsxOTM3LDEyIEBAIHJlc29sdmVfZHluYW1pY190eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwg Q09SRV9BRERSIGFkZHIpCisgCX0KKyAKKyAgICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKKy0J cmVzb2x2ZWRfdHlwZSA9IHJlc29sdmVfZHluYW1pY19hcnJheSAodHlwZSk7CisrICAgICAgY2Fz ZSBUWVBFX0NPREVfU1RSSU5HOgorKwlyZXNvbHZlZF90eXBlID0gcmVzb2x2ZV9keW5hbWljX2Fy cmF5ICh0eXBlLCBhZGRyKTsKKyAJYnJlYWs7CisgCisgICAgICAgY2FzZSBUWVBFX0NPREVfUkFO R0U6CistCXJlc29sdmVkX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHR5cGUpOworKwly ZXNvbHZlZF90eXBlID0gcmVzb2x2ZV9keW5hbWljX3JhbmdlICh0eXBlLCBhZGRyKTsKKyAJYnJl YWs7CisgCisgICAgIGNhc2UgVFlQRV9DT0RFX1VOSU9OOgorQEAgLTE4NjksNiArMTk1NCwyNSBA QCByZXNvbHZlX2R5bmFtaWNfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRy KQorICAgICAgIGJyZWFrOworICAgICB9CisgCisrICAvKiBSZXNvbHZlIGRhdGFfbG9jYXRpb24g YXR0cmlidXRlLiAgKi8KKysgIHByb3AgPSBUWVBFX0RBVEFfTE9DQVRJT04gKHJlc29sdmVkX3R5 cGUpOworKyAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgYWRkciwgJnZhbHVl KSkKKysgICAgeworKyAgICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlID0gVFlQRV9JTkRFWF9U WVBFIChyZXNvbHZlZF90eXBlKTsKKysKKysgICAgICAvKiBBZGp1c3QgdGhlIGRhdGEgbG9jYXRp b24gd2l0aCB0aGUgdmFsdWUgb2YgYnl0ZSBzdHJpZGUgaWYgc2V0LCB3aGljaAorKyAgICAgICAg IGNhbiBkZXNjcmliZSB0aGUgc2VwYXJhdGlvbiBiZXR3ZWVuIHN1Y2Nlc3NpdmUgZWxlbWVudHMg YWxvbmcgdGhlCisrICAgICAgICAgZGltZW5zaW9uLiAgKi8KKysgICAgICBpZiAoVFlQRV9CWVRF X1NUUklERSAocmFuZ2VfdHlwZSkgPCAwKQorKyAgICAgICAgdmFsdWUgKz0gKFRZUEVfSElHSF9C T1VORCAocmFuZ2VfdHlwZSkgLSBUWVBFX0xPV19CT1VORCAocmFuZ2VfdHlwZSkpCisrICAgICAg ICAgICAgICAgICAgKiBUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKTsKKysKKysgICAgICBU WVBFX0RBVEFfTE9DQVRJT05fQUREUiAocmVzb2x2ZWRfdHlwZSkgPSB2YWx1ZTsKKysgICAgICBU WVBFX0RBVEFfTE9DQVRJT05fS0lORCAocmVzb2x2ZWRfdHlwZSkgPSBQUk9QX0NPTlNUOworKyAg ICB9CisrICBlbHNlCisrICAgIFRZUEVfREFUQV9MT0NBVElPTiAocmVzb2x2ZWRfdHlwZSkgPSBO VUxMOworKworICAgcmV0dXJuIHJlc29sdmVkX3R5cGU7CisgfQorIAorQEAgLTQwNzgsNiArNDE4 MiwyNyBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAg ICAgICAqVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSkgPSAqVFlQRV9SQU5HRV9EQVRBICh0eXBl KTsKKyAgICAgfQorIAorKyAgLyogQ29weSB0aGUgZGF0YSBsb2NhdGlvbiBpbmZvcm1hdGlvbi4g ICovCisrICBpZiAoVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKSAhPSBOVUxMKQorKyAgICB7Cisr ICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9OIChuZXdfdHlwZSkgPSB4bWFsbG9jIChzaXplb2YgKHN0 cnVjdCBkeW5hbWljX3Byb3ApKTsKKysgICAgICAqVFlQRV9EQVRBX0xPQ0FUSU9OIChuZXdfdHlw ZSkgPSAqVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKTsKKysgICAgfQorKworKyAgLyogQ29weSBh bGxvY2F0ZWQgaW5mb3JtYXRpb24uICAqLworKyAgaWYgKFRZUEVfQUxMT0NBVEVEX1BST1AgKHR5 cGUpICE9IE5VTEwpCisrICAgIHsKKysgICAgICBUWVBFX0FMTE9DQVRFRF9QUk9QIChuZXdfdHlw ZSkgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBkeW5hbWljX3Byb3ApKTsKKysgICAgICAqVFlQ RV9BTExPQ0FURURfUFJPUCAobmV3X3R5cGUpID0gKlRZUEVfQUxMT0NBVEVEX1BST1AgKHR5cGUp OworKyAgICB9CisrCisrICAvKiBDb3B5IGFzc29jaWF0ZWQgaW5mb3JtYXRpb24uICAqLworKyAg aWYgKFRZUEVfQVNTT0NJQVRFRF9QUk9QICh0eXBlKSAhPSBOVUxMKQorKyAgICB7CisrICAgICAg VFlQRV9BU1NPQ0lBVEVEX1BST1AgKG5ld190eXBlKSA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0 IGR5bmFtaWNfcHJvcCkpOworKyAgICAgICpUWVBFX0FTU09DSUFURURfUFJPUCAobmV3X3R5cGUp ID0gKlRZUEVfQVNTT0NJQVRFRF9QUk9QICh0eXBlKTsKKysgICAgfQorKworICAgLyogQ29weSBw b2ludGVycyB0byBvdGhlciB0eXBlcy4gICovCisgICBpZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSkpCisgICAgIFRZUEVfVEFSR0VUX1RZUEUgKG5ld190eXBlKSA9IAorQEAgLTQxMjQsNiArNDI0 OSw0NCBAQCBjb3B5X3R5cGUgKGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKQorICAgbWVtY3B5IChU WVBFX01BSU5fVFlQRSAobmV3X3R5cGUpLCBUWVBFX01BSU5fVFlQRSAodHlwZSksCisgCSAgc2l6 ZW9mIChzdHJ1Y3QgbWFpbl90eXBlKSk7CisgCisrICBpZiAoVFlQRV9BTExPQ0FURURfUFJPUCAo dHlwZSkpCisrICAgIHsKKysgICAgICBUWVBFX0FMTE9DQVRFRF9QUk9QIChuZXdfdHlwZSkKKysg ICAgICAgICAgICAgID0gT0JTVEFDS19aQUxMT0MgKCZUWVBFX09XTkVSICh0eXBlKS5vYmpmaWxl LT5vYmpmaWxlX29ic3RhY2ssCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZHluYW1pY19wcm9wKTsKKysgICAgICBtZW1jcHkgKFRZUEVfQUxMT0NBVEVEX1BST1AgKG5l d190eXBlKSwgVFlQRV9BTExPQ0FURURfUFJPUCAodHlwZSksCisrICAgICAgICBzaXplb2YgKHN0 cnVjdCBkeW5hbWljX3Byb3ApKTsKKysgICAgfQorKworKyAgaWYgKFRZUEVfQVNTT0NJQVRFRF9Q Uk9QICh0eXBlKSkKKysgICAgeworKyAgICAgIFRZUEVfQVNTT0NJQVRFRF9QUk9QIChuZXdfdHlw ZSkKKysgICAgICAgICAgICAgID0gT0JTVEFDS19aQUxMT0MgKCZUWVBFX09XTkVSICh0eXBlKS5v YmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZHluYW1pY19wcm9wKTsKKysgICAgICBtZW1jcHkgKFRZUEVfQVNTT0NJQVRFRF9Q Uk9QIChuZXdfdHlwZSksIFRZUEVfQVNTT0NJQVRFRF9QUk9QICh0eXBlKSwKKysgICAgICAgIHNp emVvZiAoc3RydWN0IGR5bmFtaWNfcHJvcCkpOworKyAgICB9CisrCisrICBpZiAoVFlQRV9EQVRB X0xPQ0FUSU9OICh0eXBlKSkKKysgICAgeworKyAgICAgIFRZUEVfREFUQV9MT0NBVElPTiAobmV3 X3R5cGUpCisrICAgICAgICAgICAgICA9IE9CU1RBQ0tfWkFMTE9DICgmVFlQRV9PV05FUiAodHlw ZSkub2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGR5bmFtaWNfcHJvcCk7CisrICAgICAgbWVtY3B5IChUWVBFX0RBVEFfTE9D QVRJT04gKG5ld190eXBlKSwgVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKSwKKysgICAgICAgIHNp emVvZiAoc3RydWN0IGR5bmFtaWNfcHJvcCkpOworKyAgICB9CisrCisrICBpZiAoVFlQRV9ORklF TERTICh0eXBlKSkKKysgICAgeworKyAgICAgIGludCBuZmllbGRzID0gVFlQRV9ORklFTERTICh0 eXBlKTsKKysKKysgICAgICBUWVBFX0ZJRUxEUyAobmV3X3R5cGUpCisrICAgICAgICAgICAgICA9 IE9CU1RBQ0tfQ0FMTE9DICgmVFlQRV9PV05FUiAodHlwZSkub2JqZmlsZS0+b2JqZmlsZV9vYnN0 YWNrLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmZpZWxkcywgc3RydWN0IGZp ZWxkKTsKKysgICAgICBtZW1jcHkgKFRZUEVfRklFTERTIChuZXdfdHlwZSksIFRZUEVfRklFTERT ICh0eXBlKSwKKysgICAgICAgIG5maWVsZHMgKiBzaXplb2YgKHN0cnVjdCBmaWVsZCkpOworKyAg IH0KKysKKyAgIHJldHVybiBuZXdfdHlwZTsKKyB9CisgDAorZGlmZiAtLWdpdCBhL2dkYi9nZGJ0 eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgKK2luZGV4IGJiNjM1MmQuLjU4MThmNzkgMTAwNjQ0Cist LS0gYS9nZGIvZ2RidHlwZXMuaAorKysrIGIvZ2RiL2dkYnR5cGVzLmgKK0BAIC02NzAsNiArNjcw LDEwIEBAIHN0cnVjdCBtYWluX3R5cGUKKyAKKyAgICAgICBzdHJ1Y3QgZHluYW1pY19wcm9wIGhp Z2g7CisgCisrICAgICAgLyogKiBTdHJpZGUgb2YgcmFuZ2UuICAqLworKworKyAgICAgIHN0cnVj dCBkeW5hbWljX3Byb3Agc3RyaWRlOworKworICAgICAgIC8qIFRydWUgaWYgSElHSCByYW5nZSBi b3VuZCBjb250YWlucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZQorIAkgc3VicmFuZ2Uu IFRoaXMgYWZmZWN0cyBob3cgdGhlIGZpbmFsIGhpZ2h0IGJvdW5kIGlzIGNvbXB1dGVkLiAgKi8K KyAKK0BAIC03MjUsNiArNzI5LDIzIEBAIHN0cnVjdCBtYWluX3R5cGUKKyAKKyAgICAgc3RydWN0 IGZ1bmNfdHlwZSAqZnVuY19zdHVmZjsKKyAgIH0gdHlwZV9zcGVjaWZpYzsKKysKKysgIC8qICog Q29udGFpbnMgYSBsb2NhdGlvbiBkZXNjcmlwdGlvbiB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgdHlw ZS4gRXZhbHVhdGluZworKyAgICAgdGhpcyBmaWVsZCB5aWVsZHMgdG8gdGhlIGxvY2F0aW9uIG9m IHRoZSBkYXRhIGZvciBhbiBvYmplY3QuICAqLworKworKyAgc3RydWN0IGR5bmFtaWNfcHJvcCAq ZGF0YV9sb2NhdGlvbjsKKysKKysgIC8qIFN0cnVjdHVyZSBmb3IgRFdfQVRfYWxsb2NhdGVkLgor KyAgICAgVGhlIHByZXNlbmNlIG9mIHRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBv YmplY3Qgb2YgdGhlIHR5cGUKKysgICAgIGNhbiBiZSBhbGxvY2F0ZWQvZGVhbGxvY2F0ZWQuICBU aGUgdmFsdWUgY2FuIGJlIGEgZHdhcmYgZXhwcmVzc2lvbiwKKysgICAgIHJlZmVyZW5jZSwgb3Ig YSBjb25zdGFudC4gICovCisrICBzdHJ1Y3QgZHluYW1pY19wcm9wICphbGxvY2F0ZWQ7CisrCisr ICAvKiBTdHJ1Y3R1cmUgZm9yIERXX0FUX2Fzc29jaWF0ZWQuCisrICAgICBUaGUgcHJlc2VuY2Ug b2YgdGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVkIHRoYXQgdGhlIG9iamVjdCBvZiB0aGUgdHlwZQor KyAgICAgY2FuIGJlIGFzc29jaWF0ZWQuICBUaGUgdmFsdWUgY2FuIGJlIGEgZHdhcmYgZXhwcmVz c2lvbiwKKysgICAgIHJlZmVyZW5jZSwgb3IgYSBjb25zdGFudC4gICovCisrICBzdHJ1Y3QgZHlu YW1pY19wcm9wICphc3NvY2lhdGVkOworIH07CisgCisgLyogKiBBIGBgc3RydWN0IHR5cGUnJyBk ZXNjcmliZXMgYSBwYXJ0aWN1bGFyIGluc3RhbmNlIG9mIGEgdHlwZSwgd2l0aAorQEAgLTEyMDMs NiArMTIyNCwzOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3Qg dHlwZSAqKTsKKyAgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+aGlnaC5raW5kCisgI2Rl ZmluZSBUWVBFX0xPV19CT1VORF9LSU5EKHJhbmdlX3R5cGUpIFwKKyAgIFRZUEVfUkFOR0VfREFU QShyYW5nZV90eXBlKS0+bG93LmtpbmQKKysjZGVmaW5lIFRZUEVfQllURV9TVFJJREUocmFuZ2Vf dHlwZSkgXAorKyAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5zdHJpZGUuZGF0YS5jb25z dF92YWwKKysjZGVmaW5lIFRZUEVfQllURV9TVFJJREVfQkxPQ0socmFuZ2VfdHlwZSkgXAorKyAg VFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5zdHJpZGUuZGF0YS5sb2NleHByCisrI2RlZmlu ZSBUWVBFX0JZVEVfU1RSSURFX0xPQ0xJU1QocmFuZ2VfdHlwZSkgXAorKyAgVFlQRV9SQU5HRV9E QVRBKHJhbmdlX3R5cGUpLT5zdHJpZGUuZGF0YS5sb2NsaXN0CisrI2RlZmluZSBUWVBFX0JZVEVf U1RSSURFX0tJTkQocmFuZ2VfdHlwZSkgXAorKyAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUp LT5zdHJpZGUua2luZAorKworKworKy8qIEF0dHJpYnV0ZSBhY2Nlc3NvcnMgZm9yIHRoZSB0eXBl IGRhdGEgbG9jYXRpb24uICAqLworKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OKHRoaXN0eXBl KSBcCisrICBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmRhdGFfbG9jYXRpb24KKysjZGVmaW5l IFRZUEVfREFUQV9MT0NBVElPTl9CQVRPTih0aGlzdHlwZSkgXAorKyAgVFlQRV9EQVRBX0xPQ0FU SU9OICh0aGlzdHlwZSktPmRhdGEuYmF0b24KKysjZGVmaW5lIFRZUEVfREFUQV9MT0NBVElPTl9B RERSKHRoaXN0eXBlKSBcCisrICBUWVBFX0RBVEFfTE9DQVRJT04gKHRoaXN0eXBlKS0+ZGF0YS5j b25zdF92YWwKKysjZGVmaW5lIFRZUEVfREFUQV9MT0NBVElPTl9LSU5EKHRoaXN0eXBlKSBcCisr ICBUWVBFX0RBVEFfTE9DQVRJT04gKHRoaXN0eXBlKS0+a2luZAorKyNkZWZpbmUgVFlQRV9BTExP Q0FURURfUFJPUCh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT5hbGxvY2F0ZWQK KysjZGVmaW5lIFRZUEVfQVNTT0NJQVRFRF9QUk9QKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0 aGlzdHlwZSktPmFzc29jaWF0ZWQKKysKKysvKiBBbGxvY2F0ZWQgc3RhdHVzIG9mIHR5cGUgb2Jq ZWN0LiAgSWYgc2V0IHRvIG5vbi16ZXJvIGl0IG1lYW5zIHRoZSBvYmplY3QKKysgICBpcyBhbGxv Y2F0ZWQuIEEgemVybyB2YWx1ZSBtZWFucyBpdCBpcyBub3QgYWxsb2NhdGVkLiAgKi8KKysjZGVm aW5lIFRZUEVfTk9UX0FMTE9DQVRFRCh0KSAgKFRZUEVfQUxMT0NBVEVEX1BST1AgKHQpIFwKKysg ICYmIFRZUEVfQUxMT0NBVEVEX1BST1AgKHQpLT5raW5kID09IFBST1BfQ09OU1QgXAorKyAgJiYg IVRZUEVfQUxMT0NBVEVEX1BST1AgKHQpLT5kYXRhLmNvbnN0X3ZhbCkKKysKKysvKiBBc3NvY2lh dGVkIHN0YXR1cyBvZiB0eXBlIG9iamVjdC4gIElmIHNldCB0byBub24temVybyBpdCBtZWFucyB0 aGUgb2JqZWN0CisrICAgaXMgYXNzb2NpYXRlZC4gQSB6ZXJvIHZhbHVlIG1lYW5zIGl0IGlzIG5v dCBhc3NvY2lhdGVkLiAgKi8KKysjZGVmaW5lIFRZUEVfTk9UX0FTU09DSUFURUQodCkgIChUWVBF X0FTU09DSUFURURfUFJPUCAodCkgXAorKyAgJiYgVFlQRV9BU1NPQ0lBVEVEX1BST1AgKHQpLT5r aW5kID09IFBST1BfQ09OU1QgXAorKyAgJiYgIVRZUEVfQVNTT0NJQVRFRF9QUk9QICh0KS0+ZGF0 YS5jb25zdF92YWwpCisgCisgLyogTW90by1zcGVjaWZpYyBzdHVmZiBmb3IgRk9SVFJBTiBhcnJh eXMuICAqLworIAorQEAgLTEyMTAsNiArMTI2NCw5IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2du YXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOworICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklO RUQoVFlQRV9JTkRFWF9UWVBFKGFycmF5dHlwZSkpCisgI2RlZmluZSBUWVBFX0FSUkFZX0xPV0VS X0JPVU5EX0lTX1VOREVGSU5FRChhcnJheXR5cGUpIFwKKyAgICBUWVBFX0xPV19CT1VORF9VTkRF RklORUQoVFlQRV9JTkRFWF9UWVBFKGFycmF5dHlwZSkpCisrI2RlZmluZSBUWVBFX0FSUkFZX1NU UklERV9JU19VTkRFRklORUQoYXJyYXl0eXBlKSBcCisrICAgKFRZUEVfQllURV9TVFJJREUoVFlQ RV9JTkRFWF9UWVBFKGFycmF5dHlwZSkpID09IDApCisrCisgCisgI2RlZmluZSBUWVBFX0FSUkFZ X1VQUEVSX0JPVU5EX1ZBTFVFKGFycmF5dHlwZSkgXAorICAgIChUWVBFX0hJR0hfQk9VTkQoVFlQ RV9JTkRFWF9UWVBFKChhcnJheXR5cGUpKSkpCitAQCAtMTY3OCw2ICsxNzM1LDcgQEAgZXh0ZXJu IHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZV93aXRoX3N0cmlkZQorIAorIGV4dGVybiBz dHJ1Y3QgdHlwZSAqY3JlYXRlX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBl ICosCisgCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICosCisrCQkJCSAgICAg ICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICosCisgCQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qg ZHluYW1pY19wcm9wICopOworIAorIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX2FycmF5X3R5 cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi92bGEtYWxsb2MtYXNzb2MuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi92bGEtYWxsb2MtYXNzb2MuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMC4uMjA2MDdjMworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi92bGEtYWxsb2MtYXNzb2MuZXhwCitAQCAtMCwwICsxLDY1IEBACisrIyBDb3B5cmln aHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgInZsYS5mOTAiCisrCisraWYg eyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNm aWxlfSBcCisrICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQor KworK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4g dG8gYnJlYWtwb2ludCBNQUlOX18iCisrICAgIGNvbnRpbnVlCisrfQorKworKyMgQ2hlY2sgdGhl IGFzc29jaWF0aW9uIHN0YXR1cyBvZiB2YXJpb3VzIHR5cGVzIG9mIFZMQSdzCisrIyBhbmQgcG9p bnRlciB0byBWTEEncy4KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxh MS1hbGxvY2F0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWFsbG9jYXRl ZCIKKytnZGJfdGVzdCAicHJpbnQgbCIgIiA9IFxcLlRSVUVcXC4iIFwKKysgICJwcmludCB2bGEx IGFsbG9jYXRpb24gc3RhdHVzIChhbGxvY2F0ZWQpIgorKworK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJ2bGEyLWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgInZsYTItYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwcmludCBsIiAiID0gXFwuVFJVRVxc LiIgXAorKyAgInByaW50IHZsYTIgYWxsb2NhdGlvbiBzdGF0dXMgKGFsbG9jYXRlZCkiCisrCisr Z2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInB2bGEtYXNzb2NpYXRlZCJdCisr Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2bGEtYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAi cHJpbnQgbCIgIiA9IFxcLlRSVUVcXC4iIFwKKysgICJwcmludCBwdmxhIGFzc29jaWF0ZWQgc3Rh dHVzIChhc3NvY2lhdGVkKSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAicHZsYS1yZS1hc3NvY2lhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicHZs YS1yZS1hc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwcmludCBsIiAiID0gXFwuVFJVRVxcLiIgXAor KyAgInByaW50IHB2bGEgYXNzb2NpYXRlZCBzdGF0dXMgKHJlLWFzc29jaWF0ZWQpIgorKworK2dk Yl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLWRlYXNzb2NpYXRlZCJdCisr Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2bGEtZGVhc3NvY2lhdGVkIgorK2dkYl90ZXN0 ICJwcmludCBsIiAiID0gXFwuRkFMU0VcXC4iIFwKKysgICJwcmludCBwdmxhIGFsbG9jYXRpb24g c3RhdHVzIChkZWFzc29jaWF0ZWQpIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJ2bGExLWRlYWxsb2NhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi dmxhMS1kZWFsbG9jYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgbCIgIiA9IFxcLkZBTFNFXFwuIiBc CisrICAicHJpbnQgdmxhMSBhbGxvY2F0aW9uIHN0YXR1cyAoZGVhbGxvY2F0ZWQpIgorK2dkYl90 ZXN0ICJwcmludCB2bGExIiAiID0gPG5vdCBhbGxvY2F0ZWQ+IiBcCisrICAicHJpbnQgZGVhbGxv Y2F0ZWQgdmxhMSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxh Mi1kZWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTItZGVhbGxv Y2F0ZWQiCisrZ2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5GQUxTRVxcLiIgInByaW50IHZsYTIg ZGVhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInByaW50IHZsYTIiICIgPSA8bm90IGFsbG9jYXRlZD4i ICJwcmludCBkZWFsbG9jYXRlZCB2bGEyIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vdmxhLWRhdGF0eXBlcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3Zs YS1kYXRhdHlwZXMuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMjAy NzZkNgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEt ZGF0YXR5cGVzLmV4cAorQEAgLTAsMCArMSw4MiBAQAorKyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor KyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorKworK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgorKworK2lmIHsgW3ByZXBhcmVfZm9yX3Rl c3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorKyAgICB7ZGVi dWcgZjkwIHF1aWV0fV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKysjIGNoZWNrIHRoYXQg YWxsIGZvcnRyYW4gc3RhbmRhcmQgZGF0YXR5cGVzIHdpbGwgYmUKKysjIGhhbmRsZWQgY29ycmVj dGx5IHdoZW4gdXNpbmcgYXMgVkxBJ3MKKysKKytpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Cisr ICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgorKyAgICBjb250 aW51ZQorK30KKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhcy1h bGxvY2F0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGFzLWFsbG9jYXRlZCIK KytnZGJfdGVzdCAibmV4dCIgIiA9IGFsbG9jYXRlZFxcXChyZWFsdmxhXFxcKSIgXAorKyAgIm5l eHQgdG8gYWxsb2NhdGlvbiBzdGF0dXMgb2YgaW50dmxhIgorK2dkYl90ZXN0ICJwcmludCBsIiAi ID0gXFwuVFJVRVxcLiIgImludHZsYSBhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgIm5leHQiICIgPSBh bGxvY2F0ZWRcXFwoY29tcGxleHZsYVxcXCkiIFwKKysgICJuZXh0IHRvIGFsbG9jYXRpb24gc3Rh dHVzIG9mIHJlYWx2bGEiCisrZ2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5UUlVFXFwuIiAicmVh bHZsYSBhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgIm5leHQiICIgPSBhbGxvY2F0ZWRcXFwobG9naWNh bHZsYVxcXCkiIFwKKysgICJuZXh0IHRvIGFsbG9jYXRpb24gc3RhdHVzIG9mIGNvbXBsZXh2bGEi CisrZ2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5UUlVFXFwuIiAiY29tcGxleHZsYSBhbGxvY2F0 ZWQiCisrZ2RiX3Rlc3QgIm5leHQiICIgPSBhbGxvY2F0ZWRcXFwoY2hhcmFjdGVydmxhXFxcKSIg XAorKyAgIm5leHQgdG8gYWxsb2NhdGlvbiBzdGF0dXMgb2YgbG9naWNhbHZsYSIKKytnZGJfdGVz dCAicHJpbnQgbCIgIiA9IFxcLlRSVUVcXC4iICJsb2dpY2FsdmxhIGFsbG9jYXRlZCIKKytnZGJf dGVzdCAibmV4dCIgImludHZsYVxcXCg6LDosOlxcXCkgPSAxIiBcCisrICAibmV4dCB0byBhbGxv Y2F0aW9uIHN0YXR1cyBvZiBjaGFyYWN0ZXJ2bGEiCisrZ2RiX3Rlc3QgInByaW50IGwiICIgPSBc XC5UUlVFXFwuIiAiY2hhcmFjdGVydmxhIGFsbG9jYXRlZCIKKysKKytnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAidmxhcy1pbml0aWFsaXplZCJdCisrZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgInZsYXMtaW5pdGlhbGl6ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIGludHZsYSIg InR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkgXFxcKDExLDIyLDMzXFxcKSIgXAorKyAgInB0 eXBlIGludHZsYSIKKytnZGJfdGVzdCAicHR5cGUgcmVhbHZsYSIgInR5cGUgPSByZWFsXFxcKGtp bmQ9NFxcXCkgXFxcKDExLDIyLDMzXFxcKSIgXAorKyAgInB0eXBlIHJlYWx2bGEiCisrZ2RiX3Rl c3QgInB0eXBlIGNvbXBsZXh2bGEiICJ0eXBlID0gY29tcGxleFxcXChraW5kPTRcXFwpIFxcXCgx MSwyMiwzM1xcXCkiIFwKKysgICJwdHlwZSBjb21wbGV4dmxhIgorK2dkYl90ZXN0ICJwdHlwZSBs b2dpY2FsdmxhIiAidHlwZSA9IGxvZ2ljYWxcXFwoa2luZD00XFxcKSBcXFwoMTEsMjIsMzNcXFwp IiBcCisrICAicHR5cGUgbG9naWNhbHZsYSIKKytnZGJfdGVzdCAicHR5cGUgY2hhcmFjdGVydmxh IiAidHlwZSA9IGNoYXJhY3RlclxcXCoxIFxcXCgxMSwyMiwzM1xcXCkiIFwKKysgICJwdHlwZSBj aGFyYWN0ZXJ2bGEiCisrCisrZ2RiX3Rlc3QgInByaW50IGludHZsYSg1LDUsNSkiICIgPSAxIiAi cHJpbnQgaW50dmxhKDUsNSw1KSAoMXN0KSIKKytnZGJfdGVzdCAicHJpbnQgcmVhbHZsYSg1LDUs NSkiICIgPSAzLjE0XFxkKyIgXAorKyAgInByaW50IHJlYWx2bGEoNSw1LDUpICgxc3QpIgorK2dk Yl90ZXN0ICJwcmludCBjb21wbGV4dmxhKDUsNSw1KSIgIiA9IFxcXCgyLC0zXFxcKSIgXAorKyAg InByaW50IGNvbXBsZXh2bGEoNSw1LDUpICgxc3QpIgorK2dkYl90ZXN0ICJwcmludCBsb2dpY2Fs dmxhKDUsNSw1KSIgIiA9IFxcLlRSVUVcXC4iIFwKKysgICJwcmludCBsb2dpY2FsdmxhKDUsNSw1 KSAoMXN0KSIKKytnZGJfdGVzdCAicHJpbnQgY2hhcmFjdGVydmxhKDUsNSw1KSIgIiA9ICdLJyIg XAorKyAgInByaW50IGNoYXJhY3RlcnZsYSg1LDUsNSkgKDFzdCkiCisrCisrZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYXMtbW9kaWZpZWQiXQorK2dkYl9jb250aW51ZV90 b19icmVha3BvaW50ICJ2bGFzLW1vZGlmaWVkIgorK2dkYl90ZXN0ICJwcmludCBpbnR2bGEoNSw1 LDUpIiAiID0gNDIiICJwcmludCBpbnR2bGEoNSw1LDUpICgybmQpIgorK2dkYl90ZXN0ICJwcmlu dCByZWFsdmxhKDUsNSw1KSIgIiA9IDQuMTNcXGQrIiBcCisrICAicHJpbnQgcmVhbHZsYSg1LDUs NSkgKDJuZCkiCisrZ2RiX3Rlc3QgInByaW50IGNvbXBsZXh2bGEoNSw1LDUpIiAiID0gXFxcKC0z LDJcXFwpIiBcCisrICAicHJpbnQgY29tcGxleHZsYSg1LDUsNSkgKDJuZCkiCisrZ2RiX3Rlc3Qg InByaW50IGxvZ2ljYWx2bGEoNSw1LDUpIiAiID0gXFwuRkFMU0VcXC4iIFwKKysgICJwcmludCBs b2dpY2FsdmxhKDUsNSw1KSAoMm5kKSIKKytnZGJfdGVzdCAicHJpbnQgY2hhcmFjdGVydmxhKDUs NSw1KSIgIiA9ICdYJyIgXAorKyAgInByaW50IGNoYXJhY3RlcnZsYSg1LDUsNSkgKDJuZCkiCitk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZGF0YXR5cGVzLmY5MCBi L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWRhdGF0eXBlcy5mOTAKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5iMTE4NzlhCistLS0gL2Rldi9udWxsCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1kYXRhdHlwZXMuZjkwCitAQCAtMCwwICsxLDUx IEBACisrISBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysh CisrISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyshIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrISAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysh IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisr IQorKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrISBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh Y2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKworK3Byb2dyYW0g dmxhX3ByaW1pdGl2ZXMKKysgIGludGVnZXIsIGFsbG9jYXRhYmxlICAgIDo6IGludHZsYSg6LCA6 LCA6KQorKyAgcmVhbCwgYWxsb2NhdGFibGUgICAgICAgOjogcmVhbHZsYSg6LCA6LCA6KQorKyAg Y29tcGxleCwgYWxsb2NhdGFibGUgICAgOjogY29tcGxleHZsYSg6LCA6LCA6KQorKyAgbG9naWNh bCwgYWxsb2NhdGFibGUgICAgOjogbG9naWNhbHZsYSg6LCA6LCA6KQorKyAgY2hhcmFjdGVyLCBh bGxvY2F0YWJsZSAgOjogY2hhcmFjdGVydmxhKDosIDosIDopCisrICBsb2dpY2FsICAgICAgICAg ICAgICAgICA6OiBsCisrCisrICBhbGxvY2F0ZSAoaW50dmxhICgxMSwyMiwzMykpCisrICBhbGxv Y2F0ZSAocmVhbHZsYSAoMTEsMjIsMzMpKQorKyAgYWxsb2NhdGUgKGNvbXBsZXh2bGEgKDExLDIy LDMzKSkKKysgIGFsbG9jYXRlIChsb2dpY2FsdmxhICgxMSwyMiwzMykpCisrICBhbGxvY2F0ZSAo Y2hhcmFjdGVydmxhICgxMSwyMiwzMykpCisrCisrICBsID0gYWxsb2NhdGVkKGludHZsYSkgICAg ICAgICAgICAgICAgICAgISB2bGFzLWFsbG9jYXRlZAorKyAgbCA9IGFsbG9jYXRlZChyZWFsdmxh KQorKyAgbCA9IGFsbG9jYXRlZChjb21wbGV4dmxhKQorKyAgbCA9IGFsbG9jYXRlZChsb2dpY2Fs dmxhKQorKyAgbCA9IGFsbG9jYXRlZChjaGFyYWN0ZXJ2bGEpCisrCisrICBpbnR2bGEoOiw6LDop ID0gMQorKyAgcmVhbHZsYSg6LDosOikgPSAzLjE0CisrICBjb21wbGV4dmxhKDosOiw6KSA9IGNt cGx4KDIuMCwtMy4wKQorKyAgbG9naWNhbHZsYSg6LDosOikgPSAuVFJVRS4KKysgIGNoYXJhY3Rl cnZsYSg6LDosOikgPSBjaGFyKDc1KQorKworKyAgaW50dmxhKDUsNSw1KSA9IDQyICAgICAgICAg ICAgICAgICAgICAgICEgdmxhcy1pbml0aWFsaXplZAorKyAgcmVhbHZsYSg1LDUsNSkgPSA0LjEz CisrICBjb21wbGV4dmxhKDUsNSw1KSA9IGNtcGx4KC0zLjAsMi4wKQorKyAgbG9naWNhbHZsYSg1 LDUsNSkgPSAuRkFMU0UuCisrICBjaGFyYWN0ZXJ2bGEoNSw1LDUpID0gJ1gnCisrCisrICAhIGR1 bW15IHN0YXRlbWVudCBmb3IgYnAKKysgIGwgPSAuRkFMU0UuICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAhIHZsYXMtbW9kaWZpZWQKKytlbmQgcHJvZ3JhbSB2bGFfcHJpbWl0aXZlcworZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1bmMuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZnVuYy5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi5mMGYyMzZiCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS1mdW5jLmV4cAorQEAgLTAsMCArMSw2MSBAQAorKyMgQ29weXJpZ2h0 IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorKworK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgorKworK2lmIHsgW3By ZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0g XAorKyAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytp ZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJy ZWFrcG9pbnQgTUFJTl9fIgorKyAgICBjb250aW51ZQorK30KKysKKysjIENoZWNrIFZMQSBwYXNz ZWQgdG8gZmlyc3QgRm9ydHJhbiBmdW5jdGlvbi4KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAiZnVuYzEtdmxhLXBhc3NlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgImZ1bmMxLXZsYS1wYXNzZWQiCisrZ2RiX3Rlc3QgInByaW50IHZsYSIgIiA9IFxcKCAqXFwo ICoyMiwgKjIyLCAqMjIsXFsoKTIyLCAuXF0qXFwpIiBcCisrICAicHJpbnQgdmxhIChmdW5jMSki CisrZ2RiX3Rlc3QgInB0eXBlIHZsYSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkgXFxc KDEwLDEwXFxcKSIgXAorKyAgInB0eXBlIHZsYSAoZnVuYzEpIgorKworK2dkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmdW5jMS12bGEtbW9kaWZpZWQiXQorK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJmdW5jMS12bGEtbW9kaWZpZWQiCisrZ2RiX3Rlc3QgInByaW50IHZs YSg1LDUpIiAiID0gNTUiICJwcmludCB2bGEoNSw1KSAoZnVuYzEpIgorK2dkYl90ZXN0ICJwcmlu dCB2bGEoNyw3KSIgIiA9IDc3IiAicHJpbnQgdmxhKDUsNSkgKGZ1bmMxKSIKKysKKysjIENoZWNr IGlmIHRoZSB2YWx1ZXMgYXJlIGNvcnJlY3QgYWZ0ZXIgcmV0dXJuaW5nIGZyb20gZnVuYzEKKytn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZnVuYzEtcmV0dXJuZWQiXQorK2dk Yl9jb250aW51ZV90b19icmVha3BvaW50ICJmdW5jMS1yZXR1cm5lZCIKKytnZGJfdGVzdCAicHJp bnQgcmV0IiAiID0gLlRSVUUuIiAicHJpbnQgcmV0IGFmdGVyIGZ1bmMxIHJldHVybmVkIgorKwor KyMgQ2hlY2sgVkxBIHBhc3NlZCB0byBzZWNvbmQgRm9ydHJhbiBmdW5jdGlvbgorK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmdW5jMi12bGEtcGFzc2VkIl0KKytnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAiZnVuYzItdmxhLXBhc3NlZCIKKytnZGJfdGVzdCAicHJpbnQg dmxhIiBcCisrICAiID0gXFxcKDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0 XFxcKSIgXAorKyAgInByaW50IHZsYSAoZnVuYzIpIgorK2dkYl90ZXN0ICJwdHlwZSB2bGEiICJ0 eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIFxcXCgxMFxcXCkiIFwKKysgICJwdHlwZSB2bGEg KGZ1bmMyKSIKKysKKysjIENoZWNrIGlmIHRoZSByZXR1cm5lZCBWTEEgaGFzIHRoZSBjb3JyZWN0 IHZhbHVlcyBhbmQgcHR5cGUuCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg ImZ1bmMyLXJldHVybmVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiZnVuYzItcmV0 dXJuZWQiCisrZ2RiX3Rlc3QgInByaW50IHZsYTMiICIgPSBcXFwoMSwgMiwgNDQsIDQsIDQ0LCA0 NCwgNDQsIDgsIDQ0LCA0NFxcXCkiIFwKKysgICJwcmludCB2bGEzIChhZnRlciBmdW5jMikiCisr Z2RiX3Rlc3QgInB0eXBlIHZsYTMiICJ0eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIFxcXCgx MFxcXCkiIFwKKysgICJwdHlwZSB2bGEzIChhZnRlciBmdW5jMikiCitkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZnVuYy5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3ZsYS1mdW5jLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAu LjRmNDVkYTEKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v dmxhLWZ1bmMuZjkwCitAQCAtMCwwICsxLDcxIEBACisrISBDb3B5cmlnaHQgMjAxNCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKyshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yCisrISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor KyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIQorKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrISBGb3Vu ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIx MTEtMTMwNywgVVNBLgorKworK2xvZ2ljYWwgZnVuY3Rpb24gZnVuYzEgKHZsYSkKKysgIGltcGxp Y2l0IG5vbmUKKysgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IHZsYSAoOiwgOikKKysgIGZ1bmMx ID0gYWxsb2NhdGVkKHZsYSkKKysgIHZsYSg1LDUpID0gNTUgICAgICAgICAgICAgICAhIGZ1bmMx LXZsYS1wYXNzZWQKKysgIHZsYSg3LDcpID0gNzcKKysgIHJldHVybiAgICAgICAgICAgICAgICAg ICAgICAhIGZ1bmMxLXZsYS1tb2RpZmllZAorK2VuZCBmdW5jdGlvbiBmdW5jMQorKworK2Z1bmN0 aW9uIGZ1bmMyKHZsYSkKKysgIGltcGxpY2l0IG5vbmUKKysgIGludGVnZXIgOjogdmxhICg6KQor KyAgaW50ZWdlciA6OiBmdW5jMihzaXplKHZsYSkpCisrICBpbnRlZ2VyIDo6IGsKKysKKysgIHZs YSgxKSA9IDEgICAgICAgICAgICAgICAgICAgICEgZnVuYzItdmxhLXBhc3NlZAorKyAgdmxhKDIp ID0gMgorKyAgdmxhKDQpID0gNAorKyAgdmxhKDgpID0gOAorKworKyAgZnVuYzIgPSB2bGEKKytl bmQgZnVuY3Rpb24gZnVuYzIKKysKKytwcm9ncmFtIHZsYV9mdW5jCisrICBpbXBsaWNpdCBub25l CisrICBpbnRlcmZhY2UKKysgICAgbG9naWNhbCBmdW5jdGlvbiBmdW5jMSAodmxhKQorKyAgICAg IGludGVnZXIgOjogdmxhICg6LCA6KQorKyAgICBlbmQgZnVuY3Rpb24KKysgIGVuZCBpbnRlcmZh Y2UKKysgIGludGVyZmFjZQorKyAgICBmdW5jdGlvbiBmdW5jMiAodmxhKQorKyAgICAgIGludGVn ZXIgOjogdmxhICg6KQorKyAgICAgIGludGVnZXIgZnVuYzIoc2l6ZSh2bGEpKQorKyAgICBlbmQg ZnVuY3Rpb24KKysgIGVuZCBpbnRlcmZhY2UKKysKKysgIGxvZ2ljYWwgOjogcmV0CisrICBpbnRl Z2VyLCBhbGxvY2F0YWJsZSA6OiB2bGExICg6LCA6KQorKyAgaW50ZWdlciwgYWxsb2NhdGFibGUg OjogdmxhMiAoOikKKysgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IHZsYTMgKDopCisrCisrICBy ZXQgPSAuRkFMU0UuCisrCisrICBhbGxvY2F0ZSAodmxhMSAoMTAsMTApKQorKyAgdmxhMSg6LDop ID0gMjIKKysKKysgIGFsbG9jYXRlICh2bGEyICgxMCkpCisrICB2bGEyKDopID0gNDQKKysKKysg IHJldCA9IGZ1bmMxKHZsYTEpCisrICB2bGEzID0gZnVuYzIodmxhMikgICAgICAgICAgISBmdW5j MS1yZXR1cm5lZAorKworKyAgcmV0ID0gLlRSVUUuICAgICAgICAgICAgICAgICEgZnVuYzItcmV0 dXJuZWQKKytlbmQgcHJvZ3JhbSB2bGFfZnVuYworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vdmxhLWhpc3RvcnkuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEtaGlzdG9yeS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xNzBl MWViCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1o aXN0b3J5LmV4cAorQEAgLTAsMCArMSw2MiBAQAorKyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMK KysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgor KworK3N0YW5kYXJkX3Rlc3RmaWxlICJ2bGEuZjkwIgorKworK2lmIHsgW3ByZXBhcmVfZm9yX3Rl c3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorKyAgICB7ZGVi dWcgZjkwIHF1aWV0fV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytpZiAhW3J1bnRvIE1B SU5fX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJ Tl9fIgorKyAgICBjb250aW51ZQorK30KKysKKysjIFNldCBzb21lIGJyZWFrcG9pbnRzIGFuZCBw cmludCBjb21wbGV0ZSB2bGEuCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg InZsYTEtaW5pdCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtaW5pdCIKKytn ZGJfdGVzdCAicHJpbnQgdmxhMSIgIiA9IDxub3QgYWxsb2NhdGVkPiIgInByaW50IG5vbi1hbGxv Y2F0ZWQgdmxhMSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxh Mi1hbGxvY2F0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEyLWFsbG9jYXRl ZCIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSIgIiA9IFxcKCAqXFwoICpcXCggKjAsICowLCAqMCxc WygpMCwgLlxdKlxcKSIgXAorKyAgInByaW50IHZsYTEgYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJw cmludCB2bGEyIiAiID0gXFwoICpcXCggKlxcKCAqMCwgKjAsICowLFxbKCkwLCAuXF0qXFwpIiBc CisrICAicHJpbnQgdmxhMiBhbGxvY2F0ZWQiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgInZsYTEtZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi dmxhMS1maWxsZWQiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEiIFwKKysgICIgPSBcXCggKlxcKCAq XFwoICoxMzExLCAqMTMxMSwgKjEzMTEsXFsoKTEzMTEsIC5cXSpcXCkiIFwKKysgICJwcmludCB2 bGExIGZpbGxlZCIKKysKKysjIFRyeSB0byBhY2Nlc3MgaGlzdG9yeSB2YWx1ZXMgZm9yIGZ1bGwg dmxhIHByaW50cy4KKytnZGJfdGVzdCAicHJpbnQgXCQxIiAiID0gPG5vdCBhbGxvY2F0ZWQ+IiAi cHJpbnQgXCQxIgorK2dkYl90ZXN0ICJwcmludCBcJDIiICIgPSBcXCggKlxcKCAqXFwoICowLCAq MCwgKjAsXFsoKTAsIC5cXSpcXCkiIFwKKysgICJwcmludCBcJDIiCisrZ2RiX3Rlc3QgInByaW50 IFwkMyIgIiA9IFxcKCAqXFwoICpcXCggKjAsICowLCAqMCxcWygpMCwgLlxdKlxcKSIgXAorKyAg InByaW50IFwkMyIKKytnZGJfdGVzdCAicHJpbnQgXCQ0IiBcCisrICAiID0gXFwoICpcXCggKlxc KCAqMTMxMSwgKjEzMTEsICoxMzExLFxbKCkxMzExLCAuXF0qXFwpIiAicHJpbnQgXCQ0IgorKwor K2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWZpbGxlZCJdCisrZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTItZmlsbGVkIgorK2dkYl90ZXN0ICJwcmludCB2 bGEyKDEsNDMsMjApIiAiID0gMTMxMSIgInByaW50IHZsYTIoMSw0MywyMCkiCisrZ2RiX3Rlc3Qg InByaW50IHZsYTEoMSwzLDgpIiAiID0gMTAwMSIgInByaW50IHZsYTIoMSwzLDgpIgorKworKyMg VHJ5IHRvIGFjY2VzcyBoaXN0b3J5IHZhbHVlcyBmb3IgdmxhIHZhbHVlcy4KKytnZGJfdGVzdCAi cHJpbnQgXCQ5IiAiID0gMTMxMSIgInByaW50IFwkOSIKKytnZGJfdGVzdCAicHJpbnQgXCQxMCIg IiA9IDEwMDEiICJwcmludCBcJDEwIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vdmxhLXB0eXBlLXN1Yi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1w dHlwZS1zdWIuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMmVlMjkx NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5 cGUtc3ViLmV4cAorQEAgLTAsMCArMSw4NyBAQAorKyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMK KysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgor KworK3N0YW5kYXJkX3Rlc3RmaWxlICJ2bGEtc3ViLmY5MCIKKysKKytpZiB7IFtwcmVwYXJlX2Zv cl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKKysgICAg e2RlYnVnIGY5MCBxdWlldH1dIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYgIVtydW50 byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50 IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrCisrIyBQYXNzIGZpeGVkIGFycmF5IHRvIGZ1 bmN0aW9uIGFuZCBoYW5kbGUgdGhlbSBhcyB2bGEgaW4gZnVuY3Rpb24uCisrZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm5vdC1maWxsZWQiXQorK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJub3QtZmlsbGVkICgxc3QpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTEiICJ0 eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIFxcXCg0Miw0MlxcXCkiIFwKKysgICJwdHlwZSBh cnJheTEgKHBhc3NlZCBmaXhlZCkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5MiIgInR5cGUgPSBy ZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDQyLDQyLDQyXFxcKSIgXAorKyAgInB0eXBlIGFycmF5MiAo cGFzc2VkIGZpeGVkKSIKKytnZGJfdGVzdCAicHR5cGUgYXJyYXkxKDQwLCAxMCkiICJ0eXBlID0g aW50ZWdlclxcXChraW5kPTRcXFwpIiBcCisrICAicHR5cGUgYXJyYXkxKDQwLCAxMCkgKHBhc3Nl ZCBmaXhlZCkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5MigxMywgMTEsIDUpIiAidHlwZSA9IHJl YWxcXFwoa2luZD00XFxcKSIgXAorKyAgInB0eXBlIGFycmF5MigxMywgMTEsIDUpIChwYXNzZWQg Zml4ZWQpIgorKworKyMgUGFzcyBzdWIgYXJyYXlzIHRvIGZ1bmN0aW9uIGFuZCBoYW5kbGUgdGhl bSBhcyB2bGEgaW4gZnVuY3Rpb24uCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5vdC1m aWxsZWQgKDJuZCkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5MSIgInR5cGUgPSBpbnRlZ2VyXFxc KGtpbmQ9NFxcXCkgXFxcKDYsNlxcXCkiIFwKKysgICJwdHlwZSBhcnJheTEgKHBhc3NlZCBzdWIt YXJyYXkpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIiICJ0eXBlID0gcmVhbFxcXChraW5kPTRc XFwpIFxcXCg2LDYsNlxcXCkiIFwKKysgICJwdHlwZSBhcnJheTIgKHBhc3NlZCBzdWItYXJyYXkp IgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTEoMywgMykiICJ0eXBlID0gaW50ZWdlclxcXChraW5k PTRcXFwpIiBcCisrICAicHR5cGUgYXJyYXkxKDMsIDMpIChwYXNzZWQgc3ViLWFycmF5KSIKKytn ZGJfdGVzdCAicHR5cGUgYXJyYXkyKDQsIDQsIDQpIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxc KSIgXAorKyAgInB0eXBlIGFycmF5Mig0LCA0LCA0KSAocGFzc2VkIHN1Yi1hcnJheSkiCisrCisr IyBDaGVjayBwdHlwZSBvdXRzaWRlIG9mIGJvdW5kcy4gVGhpcyBzaG91bGQgbm90IGNyYXNoIEdE Qi4KKytnZGJfdGVzdCAicHR5cGUgYXJyYXkxKDEwMCwgMTAwKSIgIm5vIHN1Y2ggdmVjdG9yIGVs ZW1lbnQiIFwKKysgICJwdHlwZSBhcnJheTEoMTAwLCAxMDApIHN1YmFycmF5IGRvIG5vdCBjcmFz aCAocGFzc2VkIHN1Yi1hcnJheSkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5MigxMDAsIDEwMCwg MTAwKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiIFwKKysgICJwdHlwZSBhcnJheTIoMTAwLCAx MDAsIDEwMCkgc3ViYXJyYXkgZG8gbm90IGNyYXNoIChwYXNzZWQgc3ViLWFycmF5KSIKKysKKysj IFBhc3MgdmxhIHRvIGZ1bmN0aW9uLgorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJub3Qt ZmlsbGVkICgzcmQpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTEiICJ0eXBlID0gaW50ZWdlclxc XChraW5kPTRcXFwpIFxcXCgyMCwyMFxcXCkiIFwKKysgICJwdHlwZSBhcnJheTEgKHBhc3NlZCB2 bGEpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwp IFxcXCgxMCwxMCwxMFxcXCkiIFwKKysgICJwdHlwZSBhcnJheTIgKHBhc3NlZCB2bGEpIgorK2dk Yl90ZXN0ICJwdHlwZSBhcnJheTEoMywgMykiICJ0eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwp IiBcCisrICAicHR5cGUgYXJyYXkxKDMsIDMpIChwYXNzZWQgdmxhKSIKKytnZGJfdGVzdCAicHR5 cGUgYXJyYXkyKDQsIDQsIDQpIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSIgXAorKyAgInB0 eXBlIGFycmF5Mig0LCA0LCA0KSAocGFzc2VkIHZsYSkiCisrCisrIyBDaGVjayBwdHlwZSBvdXRz aWRlIG9mIGJvdW5kcy4gVGhpcyBzaG91bGQgbm90IGNyYXNoIEdEQi4KKytnZGJfdGVzdCAicHR5 cGUgYXJyYXkxKDEwMCwgMTAwKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiIFwKKysgICJwdHlw ZSBhcnJheTEoMTAwLCAxMDApIFZMQSBkbyBub3QgY3Jhc2ggKHBhc3NlZCB2bGEpIgorK2dkYl90 ZXN0ICJwdHlwZSBhcnJheTIoMTAwLCAxMDAsIDEwMCkiICJubyBzdWNoIHZlY3RvciBlbGVtZW50 IiBcCisrICAicHR5cGUgYXJyYXkyKDEwMCwgMTAwLCAxMDApIFZMQSBkbyBub3QgY3Jhc2ggKHBh c3NlZCB2bGEpIgorKworKyMgUGFzcyBmaXhlZCBhcnJheSB0byBmdW5jdGlvbiBhbmQgaGFuZGxl IGl0IGFzIFZMQSBvZiBhcmJpdHJhcnkgbGVuZ3RoIGluCisrIyBmdW5jdGlvbi4KKytnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZW5kLW9mLWJhciJdCisrZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgImVuZC1vZi1iYXIiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5MSIgXAor KyAgInR5cGUgPSAoUFRSIFRPIC0+IFxcKCApP2ludGVnZXIoXFwoa2luZD00XFwpfFxcKjQpIFxc KFxcKlxcKVxcKT8iIFwKKysgICJwdHlwZSBhcnJheTEgKGFyYml0cmFyeSBsZW5ndGgpIgorK2dk Yl90ZXN0ICJwdHlwZSBhcnJheTIiIFwKKysgICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9pbnRl Z2VyKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg0OjksMTA6XFwqXFwpXFwpPyIgXAorKyAgInB0eXBl IGFycmF5MiAoYXJiaXRyYXJ5IGxlbmd0aCkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5MSgxMDAp IiAidHlwZSA9IGludGVnZXJcXFwoa2luZD00XFxcKSIgXAorKyAgInB0eXBlIGFycmF5MSgxMDAp IChhcmJpdHJhcnkgbGVuZ3RoKSIKKytnZGJfdGVzdCAicHR5cGUgYXJyYXkyKDQsMTAwKSIgInR5 cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkiIFwKKysgICJwdHlwZSBhcnJheTIoNCwxMDApIChh cmJpdHJhcnkgbGVuZ3RoKSIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3ZsYS1wdHlwZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS5leHAK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi45MjY3NzIzCistLS0gL2Rldi9u dWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS5leHAKK0BAIC0w LDAgKzEsOTYgQEAKKysjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzdGFuZGFyZF90ZXN0 ZmlsZSAidmxhLmY5MCIKKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9 LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKKysgICAge2RlYnVnIGY5MCBxdWlldH1dIH0g eworKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAg ICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGlu dWUKKyt9CisrCisrIyBDaGVjayB0aGUgcHR5cGUgb2YgdmFyaW91cyBWTEEgc3RhdGVzIGFuZCBw b2ludGVyIHRvIFZMQSdzLgorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2 bGExLWluaXQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWluaXQiCisrZ2Ri X3Rlc3QgInB0eXBlIHZsYTEiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmxhMSBu b3QgaW5pdGlhbGl6ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTIiICJ0eXBlID0gPG5vdCBhbGxv Y2F0ZWQ+IiAicHR5cGUgdmxhMiBub3QgaW5pdGlhbGl6ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHB2 bGEiICJ0eXBlID0gPG5vdCBhc3NvY2lhdGVkPiIgInB0eXBlIHB2bGEgbm90IGluaXRpYWxpemVk IgorK2dkYl90ZXN0ICJwdHlwZSB2bGExKDMsIDYsIDkpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVu dCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKKysgICJwdHlwZSB2bGExKDMsIDYsIDkpIG5vdCBp bml0aWFsaXplZCIKKytnZGJfdGVzdCAicHR5cGUgdmxhMig1LCA0NSwgMjApIiBcCisrICAibm8g c3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKKysgICJwdHlwZSB2 bGExKDUsIDQ1LCAyMCkgbm90IGluaXRpYWxpemVkIgorKworK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJ2bGExLWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgInZsYTEtYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2bGExIiAidHlwZSA9IHJl YWxcXFwoa2luZD00XFxcKSBcXFwoMTAsMTAsMTBcXFwpIiBcCisrICAicHR5cGUgdmxhMSBhbGxv Y2F0ZWQiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTItYWxs b2NhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMi1hbGxvY2F0ZWQiCisr Z2RiX3Rlc3QgInB0eXBlIHZsYTIiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIFxcXCg3LDQy OjUwLDEzOjM1XFxcKSIgXAorKyAgInB0eXBlIHZsYTIgYWxsb2NhdGVkIgorKworK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWZpbGxlZCJdCisrZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgInZsYTEtZmlsbGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2bGExIiAidHlw ZSA9IHJlYWxcXFwoa2luZD00XFxcKSBcXFwoMTAsMTAsMTBcXFwpIiBcCisrICAicHR5cGUgdmxh MSBmaWxsZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTEoMywgNiwgOSkiICJ0eXBlID0gcmVhbFxc XChraW5kPTRcXFwpIiBcCisrICAicHR5cGUgdmxhMSgzLCA2LCA5KSIKKysKKytnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMi1maWxsZWQiXQorK2dkYl9jb250aW51ZV90 b19icmVha3BvaW50ICJ2bGEyLWZpbGxlZCIKKytnZGJfdGVzdCAicHR5cGUgdmxhMiIgInR5cGUg PSByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDcsNDI6NTAsMTM6MzVcXFwpIiBcCisrICAicHR5cGUg dmxhMiBmaWxsZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTIoNSwgNDUsIDIwKSIgInR5cGUgPSBy ZWFsXFxcKGtpbmQ9NFxcXCkiIFwKKysgICJwdHlwZSB2bGExKDUsIDQ1LCAyMCkgZmlsbGVkIgor KworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLWFzc29jaWF0ZWQi XQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWFzc29jaWF0ZWQiCisrZ2RiX3Rl c3QgInB0eXBlIHB2bGEiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIFxcXCgxMCwxMCwxMFxc XCkiIFwKKysgICJwdHlwZSBwdmxhIGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHB2bGEo MywgNiwgOSkiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIiBcCisrICAicHR5cGUgcHZsYSgz LCA2LCA5KSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1y ZS1hc3NvY2lhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicHZsYS1yZS1hc3Nv Y2lhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSBwdmxhIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxc KSBcXFwoNyw0Mjo1MCwxMzozNVxcXCkiIFwKKysgICJwdHlwZSBwdmxhIHJlLWFzc29jaWF0ZWQi CisrZ2RiX3Rlc3QgInB0eXBlIHZsYTIoNSwgNDUsIDIwKSIgInR5cGUgPSByZWFsXFxcKGtpbmQ9 NFxcXCkiIFwKKysgICJwdHlwZSB2bGExKDUsIDQ1LCAyMCkgcmUtYXNzb2NpYXRlZCIKKysKKytn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1kZWFzc29jaWF0ZWQiXQor K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWRlYXNzb2NpYXRlZCIKKytnZGJfdGVz dCAicHR5cGUgcHZsYSIgInR5cGUgPSA8bm90IGFzc29jaWF0ZWQ+IiAicHR5cGUgcHZsYSBkZWFz c29jaWF0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHB2bGEoNSwgNDUsIDIwKSIgXAorKyAgIm5vIHN1 Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYXNzb2NpYXRlZCIgXAorKyAgInB0eXBlIHB2 bGEoNSwgNDUsIDIwKSBub3QgYXNzb2NpYXRlZCIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAidmxhMS1kZWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgInZsYTEtZGVhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTEiICJ0eXBlID0g PG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmxhMSBub3QgYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJw dHlwZSB2bGExKDMsIDYsIDkpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBh bGxvY2F0ZWQiIFwKKysgICJwdHlwZSB2bGExKDMsIDYsIDkpIG5vdCBhbGxvY2F0ZWQiCisrCisr Z2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTItZGVhbGxvY2F0ZWQiXQor K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEyLWRlYWxsb2NhdGVkIgorK2dkYl90ZXN0 ICJwdHlwZSB2bGEyIiAidHlwZSA9IDxub3QgYWxsb2NhdGVkPiIgInB0eXBlIHZsYTIgbm90IGFs bG9jYXRlZCIKKytnZGJfdGVzdCAicHR5cGUgdmxhMig1LCA0NSwgMjApIiBcCisrICAibm8gc3Vj aCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKKysgICJwdHlwZSB2bGEy KDUsIDQ1LCAyMCkgbm90IGFsbG9jYXRlZCIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3ZsYS1zaXplb2YuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEt c2l6ZW9mLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjYwNTNjMTcK Ky0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXNpemVv Zi5leHAKK0BAIC0wLDAgKzEsNDYgQEAKKysjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytz dGFuZGFyZF90ZXN0ZmlsZSAidmxhLmY5MCIKKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5n ICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKKysgICAge2RlYnVnIGY5 MCBxdWlldH1dIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYgIVtydW50byBNQUlOX19d IHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIK KysgICAgY29udGludWUKKyt9CisrCisrIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBpbiBub24gYWxs b2NhdGVkIFZMQQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWlu aXQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWluaXQiCisrZ2RiX3Rlc3Qg InByaW50IHNpemVvZih2bGExKSIgIiA9IDAiICJwcmludCBzaXplb2Ygbm9uLWFsbG9jYXRlZCB2 bGExIgorKworKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZSBpbiBhbGxvY2F0ZWQgVkxBCisrZ2RiX2Jy ZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTItYWxsb2NhdGVkIl0KKytnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAidmxhMi1hbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInByaW50IHNp emVvZih2bGExKSIgIiA9IDQwMDAiICJwcmludCBzaXplb2YgYWxsb2NhdGVkIHZsYTEiCisrCisr IyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBpbiB1bmRlZmluZWQgcG9pbnRlciB0byBWTEEgKGRhbmds aW5nKQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWZpbGxlZCJd CisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtZmlsbGVkIgorK2dkYl90ZXN0ICJw cmludCBzaXplb2YocHZsYSkiICIgPSAwIiAicHJpbnQgc2l6ZW9mIG5vbi1hc3NvY2lhdGVkIHB2 bGEiCisrCisrIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBpbiBwb2ludGVyIHRvIFZMQSBhbmQgY29t cGFyZSB0aGVtCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInB2bGEtYXNz b2NpYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2bGEtYXNzb2NpYXRlZCIK KytnZGJfdGVzdCAicHJpbnQgc2l6ZW9mKHB2bGEpIiAiID0gNDAwMCIgInByaW50IHNpemVvZiBh c3NvY2lhdGVkIHB2bGEiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEtc3RyaWRlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5leHAK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lNzkxMTE1CistLS0gL2Rldi9u dWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZXhwCitAQCAt MCwwICsxLDUxIEBACisrIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRfdGVz dGZpbGUgIi5mOTAiCisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5l eHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCisrICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsK KysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKKysgICAg cGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCisrICAgIGNvbnRpbnVl CisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJyZXZlcnNlLWVs ZW1lbnRzIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicmV2ZXJzZS1lbGVtZW50cyIK KytnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IFxcXCgxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywg MiwgMVxcXCkiIFwKKysgICJwcmludCByZXZlcnNlLWVsZW1lbnRzIgorK2dkYl90ZXN0ICJwcmlu dCBwdmxhKDEpIiAiID0gMTAiICJwcmludCBmaXJzdCByZXZlcnNlLWVsZW1lbnQiCisrZ2RiX3Rl c3QgInByaW50IHB2bGEoMTApIiAiID0gMSIgInByaW50IGxhc3QgcmV2ZXJzZS1lbGVtZW50Igor KworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJyZS1yZXZlcnNlLWVsZW1l bnRzIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicmUtcmV2ZXJzZS1lbGVtZW50cyIK KytnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IFxcXCgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5 LCAxMFxcXCkiIFwKKysgICJwcmludCByZS1yZXZlcnNlLWVsZW1lbnRzIgorK2dkYl90ZXN0ICJw cmludCBwdmxhKDEpIiAiID0gMSIgInByaW50IGZpcnN0IHJlLXJldmVyc2UtZWxlbWVudCIKKytn ZGJfdGVzdCAicHJpbnQgcHZsYSgxMCkiICIgPSAxMCIgInByaW50IGxhc3QgcmUtcmV2ZXJzZS1l bGVtZW50IgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJvZGQtZWxl bWVudHMiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJvZGQtZWxlbWVudHMiCisrZ2Ri X3Rlc3QgInByaW50IHB2bGEiICIgPSBcXFwoMSwgMywgNSwgNywgOVxcXCkiICJwcmludCBvZGQt ZWxlbWVudHMiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoMSkiICIgPSAxIiAicHJpbnQgZmlyc3Qg b2RkLWVsZW1lbnQiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoNSkiICIgPSA5IiAicHJpbnQgbGFz dCBvZGQtZWxlbWVudCIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi c2luZ2xlLWVsZW1lbnQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJzaW5nbGUtZWxl bWVudCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IFxcXCg1XFxcKSIgInByaW50IHNpbmds ZS1lbGVtZW50IgorK2dkYl90ZXN0ICJwcmludCBwdmxhKDEpIiAiID0gNSIgInByaW50IG9uZSBz aW5nbGUtZWxlbWVudCIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3Zs YS1zdHJpZGUuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MAor bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjFmOGNjNTUKKy0tLSAvZGV2L251 bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAKK0BAIC0w LDAgKzEsMzAgQEAKKyshIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysh IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisrCisr cHJvZ3JhbSB2bGFfc3RyaWRlCisrICBpbnRlZ2VyLCB0YXJnZXQsIGFsbG9jYXRhYmxlIDo6IHZs YSAoOikKKysgIGludGVnZXIsIHBvaW50ZXIgOjogcHZsYSAoOikKKysKKysgIGFsbG9jYXRlKHZs YSgxMCkpCisrICB2bGEgPSAoLyAoSSwgSSA9IDEsMTApIC8pCisrCisrICBwdmxhID0+IHZsYSgx MDoxOi0xKQorKyAgcHZsYSA9PiBwdmxhKDEwOjE6LTEpICEgcmV2ZXJzZS1lbGVtZW50cworKyAg cHZsYSA9PiB2bGEoMToxMDoyKSAgICEgcmUtcmV2ZXJzZS1lbGVtZW50cworKyAgcHZsYSA9PiB2 bGEoNTo0Oi0yKSAgICEgb2RkLWVsZW1lbnRzCisrCisrICBwdmxhID0+IG51bGwoKSAgICAgICAg ISBzaW5nbGUtZWxlbWVudAorK2VuZCBwcm9ncmFtIHZsYV9zdHJpZGUKK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vdmxhLXN0cmluZ3MuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMC4uN2ZjMTczNAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi92bGEtc3RyaW5ncy5leHAKK0BAIC0wLDAgKzEsMTA0IEBACisrIyBDb3B5cmlnaHQg MjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgIi5mOTAiCisrCisraWYgeyBbcHJl cGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBc CisrICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworKyMg Y2hlY2sgdGhhdCBhbGwgZm9ydHJhbiBzdGFuZGFyZCBkYXRhdHlwZXMgd2lsbCBiZQorKyMgaGFu ZGxlZCBjb3JyZWN0bHkgd2hlbiB1c2luZyBhcyBWTEEncworKworK2lmICFbcnVudG8gTUFJTl9f XSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18i CisrICAgIGNvbnRpbnVlCisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJ2YXJfY2hhci1hbGxvY2F0ZWQtMSJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg InZhcl9jaGFyLWFsbG9jYXRlZC0xIgorK2dkYl90ZXN0ICJwcmludCB2YXJfY2hhciIgXAorKyAg IiA9IFxcKFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMTAgXFwpXFwpICR7aGV4fSIgXAorKyAg InByaW50IHZhcl9jaGFyIGFmdGVyIGFsbG9jYXRlZCBmaXJzdCB0aW1lIgorK2dkYl90ZXN0ICJw cmludCAqdmFyX2NoYXIiIFwKKysgICIgPSAnXFxcXDAwMFxcXFwwMDBcXFxcMDAwXFxcXDAwMFxc XFwwMDBcXFxcMDAwXFxcXDAwMFxcXFwwMDBcXFxcMDAwXFxcXDAwMCciIFwKKysgICJwcmludCAq dmFyX2NoYXIgYWZ0ZXIgYWxsb2NhdGVkIGZpcnN0IHRpbWUiCisrZ2RiX3Rlc3QgIndoYXRpcyB2 YXJfY2hhciIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjEwIFxcKSIgXAorKyAg IndoYXRpcyB2YXJfY2hhciBmaXJzdCB0aW1lIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJfY2hhciIg InR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjEwIFxcKSIgXAorKyAgInB0eXBlIHZh cl9jaGFyIGZpcnN0IHRpbWUiCisrZ2RiX3Rlc3QgIm5leHQiICJcXGQrLip2YXJfY2hhciA9ICdm b28nLioiIFwKKysgICJuZXh0IHRvIGFsbG9jYXRpb24gc3RhdHVzIG9mIHZhcl9jaGFyIgorK2dk Yl90ZXN0ICJwcmludCBsIiAiID0gLlRSVUUuIiAicHJpbnQgYWxsb2NhdGlvbiBzdGF0dXMgZmly c3QgdGltZSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyX2No YXItZmlsbGVkLTEiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJfY2hhci1maWxs ZWQtMSIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2NoYXIiIFwKKysgICIgPSBcXChQVFIgVE8gLT4g XFwoIGNoYXJhY3RlclxcKjMgXFwpXFwpICR7aGV4fSIgXAorKyAgInByaW50IHZhcl9jaGFyIGFm dGVyIGZpbGxlZCBmaXJzdCB0aW1lIgorK2dkYl90ZXN0ICJwcmludCAqdmFyX2NoYXIiICIgPSAn Zm9vJyIgXAorKyAgInByaW50ICp2YXJfY2hhciBhZnRlciBmaWxsZWQgZmlyc3QgdGltZSIKKytn ZGJfdGVzdCAid2hhdGlzIHZhcl9jaGFyIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVy XFwqMyBcXCkiIFwKKysgICJ3aGF0aXMgdmFyX2NoYXIgYWZ0ZXIgZmlsbGVkIGZpcnN0IHRpbWUi CisrZ2RiX3Rlc3QgInB0eXBlIHZhcl9jaGFyIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFj dGVyXFwqMyBcXCkiIFwKKysgICJwdHlwZSB2YXJfY2hhciBhZnRlciBmaWxsZWQgZmlyc3QgdGlt ZSIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2NoYXIoMSkiICIgPSAxMDIgJ2YnIiAicHJpbnQgdmFy X2NoYXIoMSkiCisrZ2RiX3Rlc3QgInByaW50IHZhcl9jaGFyKDMpIiAiID0gMTExICdvJyIgInBy aW50IHZhcl9jaGFyKDMpIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJ2YXJfY2hhci1maWxsZWQtMiJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcl9j aGFyLWZpbGxlZC0yIgorK2dkYl90ZXN0ICJwcmludCB2YXJfY2hhciIgXAorKyAgIiA9IFxcKFBU UiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqNiBcXClcXCkgJHtoZXh9IiBcCisrICAicHJpbnQgdmFy X2NoYXIgYWZ0ZXIgYWxsb2NhdGVkIHNlY29uZCB0aW1lIgorK2dkYl90ZXN0ICJwcmludCAqdmFy X2NoYXIiICIgPSAnZm9vYmFyJyIgXAorKyAgInByaW50ICp2YXJfY2hhciBhZnRlciBhbGxvY2F0 ZWQgc2Vjb25kIHRpbWUiCisrZ2RiX3Rlc3QgIndoYXRpcyB2YXJfY2hhciIgInR5cGUgPSBQVFIg VE8gLT4gXFwoIGNoYXJhY3RlclxcKjYgXFwpIiBcCisrICAid2hhdGlzIHZhcl9jaGFyIHNlY29u ZCB0aW1lIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJfY2hhciIgInR5cGUgPSBQVFIgVE8gLT4gXFwo IGNoYXJhY3RlclxcKjYgXFwpIiBcCisrICAicHR5cGUgdmFyX2NoYXIgc2Vjb25kIHRpbWUiCisr CisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcl9jaGFyLWVtcHR5Il0K KytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyX2NoYXItZW1wdHkiCisrZ2RiX3Rlc3Qg InByaW50IHZhcl9jaGFyIiBcCisrICAiID0gXFwoUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCow IFxcKVxcKSAke2hleH0iIFwKKysgICJwcmludCB2YXJfY2hhciBhZnRlciBzZXQgZW1wdHkiCisr Z2RiX3Rlc3QgInByaW50ICp2YXJfY2hhciIgIiA9IFwiXCIiICJwcmludCAqdmFyX2NoYXIgYWZ0 ZXIgc2V0IGVtcHR5IgorK2dkYl90ZXN0ICJ3aGF0aXMgdmFyX2NoYXIiICJ0eXBlID0gUFRSIFRP IC0+IFxcKCBjaGFyYWN0ZXJcXCowIFxcKSIgXAorKyAgIndoYXRpcyB2YXJfY2hhciBhZnRlciBz ZXQgZW1wdHkiCisrZ2RiX3Rlc3QgInB0eXBlIHZhcl9jaGFyIiAidHlwZSA9IFBUUiBUTyAtPiBc XCggY2hhcmFjdGVyXFwqMCBcXCkiIFwKKysgICJwdHlwZSB2YXJfY2hhciBhZnRlciBzZXQgZW1w dHkiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcl9jaGFyLWFs bG9jYXRlZC0zIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyX2NoYXItYWxsb2Nh dGVkLTMiCisrZ2RiX3Rlc3QgInByaW50IHZhcl9jaGFyIiBcCisrICAiID0gXFwoUFRSIFRPIC0+ IFxcKCBjaGFyYWN0ZXJcXCoyMSBcXClcXCkgJHtoZXh9IiBcCisrICAicHJpbnQgdmFyX2NoYXIg YWZ0ZXIgYWxsb2NhdGVkIHRoaXJkIHRpbWUiCisrZ2RiX3Rlc3QgIndoYXRpcyB2YXJfY2hhciIg InR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjIxIFxcKSIgXAorKyAgIndoYXRpcyB2 YXJfY2hhciBhZnRlciBhbGxvY2F0ZWQgdGhpcmQgdGltZSIKKytnZGJfdGVzdCAicHR5cGUgdmFy X2NoYXIiICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCoyMSBcXCkiIFwKKysgICJw dHlwZSB2YXJfY2hhciBhZnRlciBhbGxvY2F0ZWQgdGhpcmQgdGltZSIKKysKKytnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyX2NoYXJfcC1hc3NvY2lhdGVkIl0KKytnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAidmFyX2NoYXJfcC1hc3NvY2lhdGVkIgorK2dkYl90ZXN0 ICJwcmludCB2YXJfY2hhcl9wIiBcCisrICAiID0gXFwoUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJc XCo3IFxcKVxcKSAke2hleH0iIFwKKysgICJwcmludCB2YXJfY2hhcl9wIGFmdGVyIGFzc29jaWF0 ZWQiCisrZ2RiX3Rlc3QgInByaW50ICp2YXJfY2hhcl9wIiAiID0gJ2pvaG5kb2UnIiBcCisrICAi cHJpbnQgKnZhcl9jaGFyXyBhZnRlciBhc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJ3aGF0aXMgdmFy X2NoYXJfcCIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjcgXFwpIiBcCisrICAi d2hhdGlzIHZhcl9jaGFyX3AgYWZ0ZXIgYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHR5cGUgdmFy X2NoYXJfcCIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjcgXFwpIiBcCisrICAi cHR5cGUgdmFyX2NoYXJfcCBhZnRlciBhc3NvY2lhdGVkIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3MuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi92bGEtc3RyaW5ncy5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw Li4wYTFkNTIyCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3ZsYS1zdHJpbmdzLmY5MAorQEAgLTAsMCArMSw0MCBAQAorKyEgQ29weXJpZ2h0IDIwMTQgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyEg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1B IDAyMTExLTEzMDcsIFVTQS4KKysKKytwcm9ncmFtIHZsYV9zdHJpbmdzCisrICBjaGFyYWN0ZXIo bGVuPTopLCB0YXJnZXQsIGFsbG9jYXRhYmxlICAgOjogdmFyX2NoYXIKKysgIGNoYXJhY3Rlcihs ZW49OiksIHBvaW50ZXIgICAgICAgICAgICAgICA6OiB2YXJfY2hhcl9wCisrICBsb2dpY2FsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogbAorKworKyAgYWxsb2NhdGUoY2hhcmFj dGVyKGxlbj0xMCkgOjogdmFyX2NoYXIpCisrICBsID0gYWxsb2NhdGVkKHZhcl9jaGFyKSAgICAg ICAgICAgICAgICAgISB2YXJfY2hhci1hbGxvY2F0ZWQtMQorKyAgdmFyX2NoYXIgPSAnZm9vJwor KyAgZGVhbGxvY2F0ZSh2YXJfY2hhcikgICAgICAgICAgICAgICAgICAgICEgdmFyX2NoYXItZmls bGVkLTEKKysgIGwgPSBhbGxvY2F0ZWQodmFyX2NoYXIpICAgICAgICAgICAgICAgICAhIHZhcl9j aGFyLWRlYWxsb2NhdGVkCisrICBhbGxvY2F0ZShjaGFyYWN0ZXIobGVuPTQyKSA6OiB2YXJfY2hh cikKKysgIGwgPSBhbGxvY2F0ZWQodmFyX2NoYXIpCisrICB2YXJfY2hhciA9ICdmb29iYXInCisr ICB2YXJfY2hhciA9ICcnICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJfY2hhci1maWxs ZWQtMgorKyAgdmFyX2NoYXIgPSAnYmFyJyAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyX2No YXItZW1wdHkKKysgIGRlYWxsb2NhdGUodmFyX2NoYXIpCisrICBhbGxvY2F0ZShjaGFyYWN0ZXIo bGVuPTIxKSA6OiB2YXJfY2hhcikKKysgIGwgPSBhbGxvY2F0ZWQodmFyX2NoYXIpICAgICAgICAg ICAgICAgICAhIHZhcl9jaGFyLWFsbG9jYXRlZC0zCisrICB2YXJfY2hhciA9ICdqb2huZG9lJwor KyAgdmFyX2NoYXJfcCA9PiB2YXJfY2hhcgorKyAgbCA9IGFzc29jaWF0ZWQodmFyX2NoYXJfcCkg ICAgICAgICAgICAgICEgdmFyX2NoYXJfcC1hc3NvY2lhdGVkCisrICB2YXJfY2hhcl9wID0+IG51 bGwoKQorKyAgbCA9IGFzc29jaWF0ZWQodmFyX2NoYXJfcCkgICAgICAgICAgICAgICEgdmFyX2No YXJfcC1ub3QtYXNzb2NpYXRlZAorK2VuZCBwcm9ncmFtIHZsYV9zdHJpbmdzCitkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3ViLmY5MCBiL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vdmxhLXN1Yi5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwLi44YzJjOWZmCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3ZsYS1zdWIuZjkwCitAQCAtMCwwICsxLDgyIEBACisrISBDb3B5cmlnaHQgMjAxNCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKyshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIg b2YgdGhlIExpY2Vuc2UsIG9yCisrISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIQorKyEgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrISBG b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg MDIxMTEtMTMwNywgVVNBLgorKyEKKyshIE9yaWdpbmFsIGZpbGUgd3JpdHRlbiBieSBKYWt1YiBK ZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiBhbmQKKyshIEphbiBLcmF0b2NodmlsIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPi4KKyshIE1vZGlmaWVkIGZvciB0aGUgR0RCIHRlc3RjYXNlcyBi eSBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPi4KKysKKytzdWJyb3V0aW5lIGZv byAoYXJyYXkxLCBhcnJheTIpCisrICBpbnRlZ2VyIDo6IGFycmF5MSAoOiwgOikKKysgIHJlYWwg ICAgOjogYXJyYXkyICg6LCA6LCA6KQorKworKyAgYXJyYXkxKDosOikgPSA1ICAgICAgICAgICAg ICAgICAgICAgICAhIG5vdC1maWxsZWQKKysgIGFycmF5MSgxLCAxKSA9IDMwCisrCisrICBhcnJh eTIoOiw6LDopID0gNiAgICAgICAgICAgICAgICAgICAgICEgYXJyYXkxLWZpbGxlZAorKyAgYXJy YXkyKDosOiw6KSA9IDMKKysgIGFycmF5MigxLDEsMSkgPSAzMAorKyAgYXJyYXkyKDMsMywzKSA9 IDkwICAgICAgICAgICAgICAgICAgICAhIGFycmF5Mi1hbG1vc3QtZmlsbGVkCisrZW5kIHN1YnJv dXRpbmUKKysKKytzdWJyb3V0aW5lIGJhciAoYXJyYXkxLCBhcnJheTIpCisrICBpbnRlZ2VyIDo6 IGFycmF5MSAoKikKKysgIGludGVnZXIgOjogYXJyYXkyICg0OjksIDEwOiopCisrCisrICBhcnJh eTEoNToxMCkgPSAxMzExCisrICBhcnJheTEoNykgPSAxCisrICBhcnJheTEoMTAwKSA9IDEwMAor KyAgYXJyYXkyKDQsMTApID0gYXJyYXkxKDcpCisrICBhcnJheTIoNCwxMDApID0gYXJyYXkxKDcp CisrICByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgZW5kLW9mLWJhcgor K2VuZCBzdWJyb3V0aW5lCisrCisrcHJvZ3JhbSB2bGFfc3ViCisrICBpbnRlcmZhY2UKKysgICAg c3Vicm91dGluZSBmb28gKGFycmF5MSwgYXJyYXkyKQorKyAgICAgIGludGVnZXIgOjogYXJyYXkx ICg6LCA6KQorKyAgICAgIHJlYWwgOjogYXJyYXkyICg6LCA6LCA6KQorKyAgICBlbmQgc3Vicm91 dGluZQorKyAgZW5kIGludGVyZmFjZQorKyAgaW50ZXJmYWNlCisrICAgIHN1YnJvdXRpbmUgYmFy IChhcnJheTEsIGFycmF5MikKKysgICAgICBpbnRlZ2VyIDo6IGFycmF5MSAoKikKKysgICAgICBp bnRlZ2VyIDo6IGFycmF5MiAoNDo5LCAxMDoqKQorKyAgICBlbmQgc3Vicm91dGluZQorKyAgZW5k IGludGVyZmFjZQorKworKyAgcmVhbCwgYWxsb2NhdGFibGUgOjogdmxhMSAoOiwgOiwgOikKKysg IGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IHZsYTIgKDosIDopCisrCisrICAhIHVzZWQgZm9yIHN1 YnJvdXRpbmUKKysgIGludGVnZXIgOjogc3ViX2FycjEoNDIsIDQyKQorKyAgcmVhbCAgICA6OiBz dWJfYXJyMig0MiwgNDIsIDQyKQorKyAgaW50ZWdlciA6OiBzdWJfYXJyMyg0MikKKysKKysgIHN1 Yl9hcnIxKDosOikgPSAxICAgICAgICAgICAgICAgICAgICEgdmxhMi1kZWFsbG9jYXRlZAorKyAg c3ViX2FycjIoOiw6LDopID0gMgorKyAgc3ViX2FycjMoOikgPSAzCisrCisrICBjYWxsIGZvbyhz dWJfYXJyMSwgc3ViX2FycjIpCisrICBjYWxsIGZvbyhzdWJfYXJyMSg1OjEwLCA1OjEwKSwgc3Vi X2FycjIoMTA6MTUsMTA6MTUsMTA6MTUpKQorKworKyAgYWxsb2NhdGUgKHZsYTEgKDEwLDEwLDEw KSkKKysgIGFsbG9jYXRlICh2bGEyICgyMCwyMCkpCisrICB2bGExKDosOiw6KSA9IDEzMTEKKysg IHZsYTIoOiw6KSA9IDQyCisrICBjYWxsIGZvbyh2bGEyLCB2bGExKQorKworKyAgY2FsbCBiYXIo c3ViX2FycjMsIHN1Yl9hcnIxKQorK2VuZCBwcm9ncmFtIHZsYV9zdWIKK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS1zdWItYXJiaXRyYXJ5LmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi1hcmJpdHJhcnkuZXhwCituZXcg ZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZmQxMWFkYgorLS0tIC9kZXYvbnVsbAor KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLWFyYml0cmFyeS5l eHAKK0BAIC0wLDAgKzEsMzUgQEAKKysjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzdGFu ZGFyZF90ZXN0ZmlsZSAidmxhLXN1Yi5mOTAiCisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGlu ZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCisrICAgIHtkZWJ1ZyBm OTAgcXVpZXR9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFbcnVudG8gTUFJTl9f XSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18i CisrICAgIGNvbnRpbnVlCisrfQorKworKyMgQ2hlY2sgVkxBIHdpdGggYXJiaXRhcnkgbGVuZ3Ro IGFuZCBjaGVjayB0aGF0IGVsZW1lbnRzIG91dHNpZGUgb2YKKysjIGJvdW5kcyBvZiB0aGUgcGFz c2VkIFZMQSBjYW4gYmUgYWNjZXNzZWQgY29ycmVjdGx5LgorK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJlbmQtb2YtYmFyIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAiZW5kLW9mLWJhciIKKytnZGJfdGVzdCAicCBhcnJheTEoNDIpIiAiID0gMyIgInByaW50IGFy Yml0YXJ5IGFycmF5MSg0MikiCisrZ2RiX3Rlc3QgInAgYXJyYXkxKDEwMCkiICIgPSAxMDAiICJw cmludCBhcmJpdGFyeSBhcnJheTEoMTAwKSIKKytnZGJfdGVzdCAicCBhcnJheTIoNCwxMCkiICIg PSAxIiAicHJpbnQgYXJiaXRhcnkgYXJyYXkyKDQsMTApIgorK2dkYl90ZXN0ICJwIGFycmF5Mig0 LDEwMCkiICIgPSAxIiAicHJpbnQgYXJiaXRhcnkgYXJyYXkyKDQsMTAwKSIKK2RpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS1zdWItZmluaXNoLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi1maW5pc2guZXhwCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYTE2MzYxNworLS0tIC9kZXYvbnVsbAorKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLWZpbmlzaC5leHAKK0BA IC0wLDAgKzEsNDkgQEAKKysjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor KyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysj IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzdGFuZGFyZF90 ZXN0ZmlsZSAidmxhLXN1Yi5mOTAiCisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rl c3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCisrICAgIHtkZWJ1ZyBmOTAgcXVp ZXR9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFbcnVudG8gTUFJTl9fXSB0aGVu IHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCisrICAg IGNvbnRpbnVlCisrfQorKworKyMgInVwIiB3b3JrcyB3aXRoIEdDQyBidXQgb3RoZXIgRm9ydHJh biBjb21waWxlcnMgbWF5IGNvcHkgdGhlIHZhbHVlcyBpbnRvIHRoZQorKyMgb3V0ZXIgZnVuY3Rp b24gb25seSBvbiB0aGUgZXhpdCBvZiB0aGUgaW5uZXIgZnVuY3Rpb24uCisrIyBXZSBuZWVkIGJv dGggdmFyaWFudHMgYXMgZGVwZW5kaW5nIG9uIHRoZSBhcmNoIHdlIG9wdGlvbmFsbHkgbWF5IHN0 aWxsIGJlCisrIyBleGVjdXRpbmcgdGhlIGNhbGxlciBsaW5lIG9yIG5vdCBhZnRlciBgZmluaXNo Jy4KKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYXJyYXkyLWFsbW9z dC1maWxsZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJhcnJheTItYWxtb3N0LWZp bGxlZCIKKytnZGJfdGVzdCAicHJpbnQgYXJyYXkyIiAiID0gXFwoICpcXCggKlxcKCAqMzAsICoz LCAqMyxcWygpMywgLlxdKlxcKSIgXAorKyAgInByaW50IGFycmF5MiBpbiBmb28gYWZ0ZXIgaXQg d2FzIGZpbGxlZCIKKytnZGJfdGVzdCAicHJpbnQgYXJyYXkyKDIsMSwxKT0yMCIgIiA9IDIwIiBc CisrICAic2V0IGFycmF5KDIsMiwyKSB0byAyMCBpbiBzdWJyb3V0aW5lIgorK2dkYl90ZXN0ICJw cmludCBhcnJheTIiICIgPSBcXCggKlxcKCAqXFwoICozMCwgKjIwLCAqMyxcWygpMywgLlxdKlxc KSIgXAorKyAgInByaW50IGFycmF5MiBpbiBmb28gYWZ0ZXIgaXQgd2FzIG1vZmlmaWVkIGluIGRl YnVnZ2VyIgorKworK2dkYl90ZXN0ICJmaW5pc2giIFwKKysgICIuKmZvb1xcXChzdWJfYXJyMVxc XCg1OjEwLCA1OjEwXFxcKSwgc3ViX2FycjJcXFwoMTA6MTUsMTA6MTUsMTA6MTVcXFwpXFxcKSIg XAorKyAgImZpbmlzaCBmdW5jdGlvbiIKKytnZGJfdGVzdCAicCBzdWJfYXJyMSg1LCA3KSIgIiA9 IDUiICJzdWJfYXJyMSg1LCA3KSBhZnRlciBmaW5pc2giCisrZ2RiX3Rlc3QgInAgc3ViX2FycjEo MSwgMSkiICIgPSAzMCIgInN1Yl9hcnIxKDEsIDEpIGFmdGVyIGZpbmlzaCIKKytnZGJfdGVzdCAi cCBzdWJfYXJyMigxLCAxLCAxKSIgIiA9IDMwIiAic3ViX2FycjIoMSwgMSwgMSkgYWZ0ZXIgZmlu aXNoIgorK2dkYl90ZXN0ICJwIHN1Yl9hcnIyKDIsIDEsIDEpIiAiID0gMjAiICJzdWJfYXJyMigy LCAxLCAxKSBhZnRlciBmaW5pc2giCisrCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi92bGEtdmFsdWUtc3ViLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxh LXZhbHVlLXN1Yi5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi44NDhm OWQ3CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12 YWx1ZS1zdWIuZXhwCitAQCAtMCwwICsxLDkwIEBACisrIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisr IworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisrCisrc3RhbmRhcmRfdGVzdGZpbGUgInZsYS1zdWIuZjkwIgorKworK2lmIHsgW3ByZXBhcmVf Zm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorKyAg ICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytpZiAhW3J1 bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9p bnQgTUFJTl9fIgorKyAgICBjb250aW51ZQorK30KKysKKysjIENoZWNrIHRoZSB2YWx1ZXMgb2Yg VkxBJ3MgaW4gc3Vicm91dGluZSBjYW4gYmUgZXZhbHVhdGVkIGNvcnJlY3RseQorKworKyMgVHJ5 IHRvIGFjY2VzcyB2YWx1ZXMgZnJvbSBhIGZpeGVkIGFycmF5IGhhbmRsZWQgYXMgVkxBIGluIHN1 YnJvdXRpbmUuCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm5vdC1maWxs ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJub3QtZmlsbGVkICgxc3QpIgorK2dk Yl90ZXN0ICJwcmludCBhcnJheTEiICIgPSBcXChcWygpMSwgLlxdKlxcKSIgXAorKyAgInByaW50 IHBhc3NlZCBhcnJheTEgaW4gZm9vIChwYXNzZWQgZml4ZWQgYXJyYXkpIgorKworK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJhcnJheTEtZmlsbGVkIl0KKytnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAiYXJyYXkxLWZpbGxlZCAoMXN0KSIKKytnZGJfdGVzdCAicHJpbnQg YXJyYXkxKDUsIDcpIiAiID0gNSIgXAorKyAgInByaW50IGFycmF5MSg1LCA3KSBhZnRlciBmaWxs ZWQgaW4gZm9vIChwYXNzZWQgZml4ZWQgYXJyYXkpIgorK2dkYl90ZXN0ICJwcmludCBhcnJheTEo MSwgMSkiICIgPSAzMCIgXAorKyAgInByaW50IGFycmF5MSgxLCAxKSBhZnRlciBmaWxsZWQgaW4g Zm9vIChwYXNzZWQgZml4ZWQgYXJyYXkpIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJhcnJheTItYWxtb3N0LWZpbGxlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgImFycmF5Mi1hbG1vc3QtZmlsbGVkICgxc3QpIgorK2dkYl90ZXN0ICJwcmludCBhcnJh eTIiICIgPSBcXCggKlxcKCAqXFwoICozMCwgKjMsICozLFxbKCkzLCAuXF0qXFwpIiBcCisrICAi cHJpbnQgYXJyYXkyIGluIGZvbyBhZnRlciBpdCB3YXMgZmlsbGVkIChwYXNzZWQgZml4ZWQgYXJy YXkpIgorK2dkYl90ZXN0ICJwcmludCBhcnJheTIoMiwxLDEpPTIwIiAiID0gMjAiIFwKKysgICJz ZXQgYXJyYXkoMiwyLDIpIHRvIDIwIGluIHN1YnJvdXRpbmUgKHBhc3NlZCBmaXhlZCBhcnJheSki CisrZ2RiX3Rlc3QgInByaW50IGFycmF5MiIgIiA9IFxcKCAqXFwoICpcXCggKjMwLCAqMjAsICoz LFxbKCkzLCAuXF0qXFwpIiBcCisrICAicHJpbnQgYXJyYXkyIGluIGZvbyBhZnRlciBpdCB3YXMg bW9maWZpZWQgaW4gZGVidWdnZXIgKHBhc3NlZCBmaXhlZCBhcnJheSkiCisrCisrCisrIyBUcnkg dG8gYWNjZXNzIHZhbHVlcyBmcm9tIGEgZml4ZWQgc3ViLWFycmF5IGhhbmRsZWQgYXMgVkxBIGlu IHN1YnJvdXRpbmUuCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5vdC1maWxsZWQgKDJu ZCkiCisrZ2RiX3Rlc3QgInByaW50IGFycmF5MSIgIiA9IFxcKFxbKCk1LCAuXF0qXFwpIiBcCisr ICAicHJpbnQgcGFzc2VkIGFycmF5MSBpbiBmb28gKHBhc3NlZCBzdWItYXJyYXkpIgorKworK2dk Yl9jb250aW51ZV90b19icmVha3BvaW50ICJhcnJheTEtZmlsbGVkICgybmQpIgorK2dkYl90ZXN0 ICJwcmludCBhcnJheTEoNSwgNSkiICIgPSA1IiBcCisrICAicHJpbnQgYXJyYXkxKDUsIDUpIGFm dGVyIGZpbGxlZCBpbiBmb28gKHBhc3NlZCBzdWItYXJyYXkpIgorK2dkYl90ZXN0ICJwcmludCBh cnJheTEoMSwgMSkiICIgPSAzMCIgXAorKyAgInByaW50IGFycmF5MSgxLCAxKSBhZnRlciBmaWxs ZWQgaW4gZm9vIChwYXNzZWQgc3ViLWFycmF5KSIKKysKKytnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAiYXJyYXkyLWFsbW9zdC1maWxsZWQgKDJuZCkiCisrZ2RiX3Rlc3QgInByaW50IGFycmF5 MiIgIiA9IFxcKCAqXFwoICpcXCggKjMwLCAqMywgKjMsXFsoKTMsIC5cXSpcXCkiIFwKKysgICJw cmludCBhcnJheTIgaW4gZm9vIGFmdGVyIGl0IHdhcyBmaWxsZWQgKHBhc3NlZCBzdWItYXJyYXkp IgorK2dkYl90ZXN0ICJwcmludCBhcnJheTIoMiwxLDEpPTIwIiAiID0gMjAiIFwKKysgICJzZXQg YXJyYXkoMiwyLDIpIHRvIDIwIGluIHN1YnJvdXRpbmUgKHBhc3NlZCBzdWItYXJyYXkpIgorK2dk Yl90ZXN0ICJwcmludCBhcnJheTIiICIgPSBcXCggKlxcKCAqXFwoICozMCwgKjIwLCAqMyxcWygp MywgLlxdKlxcKSIgXAorKyAgInByaW50IGFycmF5MiBpbiBmb28gYWZ0ZXIgaXQgd2FzIG1vZmlm aWVkIGluIGRlYnVnZ2VyIChwYXNzZWQgc3ViLWFycmF5KSIKKysKKysKKysjIFRyeSB0byBhY2Nl c3MgdmFsdWVzIGZyb20gYSBWTEEgcGFzc2VkIHRvIHN1YnJvdXRpbmUuCisrZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgIm5vdC1maWxsZWQgKDNyZCkiCisrZ2RiX3Rlc3QgInByaW50IGFycmF5 MSIgIiA9IFxcKFxbKCk0MiwgLlxdKlxcKSIgXAorKyAgInByaW50IHBhc3NlZCBhcnJheTEgaW4g Zm9vIChwYXNzZWQgdmxhKSIKKysKKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYXJyYXkx LWZpbGxlZCAoM3JkKSIKKytnZGJfdGVzdCAicHJpbnQgYXJyYXkxKDUsIDUpIiAiID0gNSIgXAor KyAgInByaW50IGFycmF5MSg1LCA1KSBhZnRlciBmaWxsZWQgaW4gZm9vIChwYXNzZWQgdmxhKSIK KytnZGJfdGVzdCAicHJpbnQgYXJyYXkxKDEsIDEpIiAiID0gMzAiIFwKKysgICJwcmludCBhcnJh eTEoMSwgMSkgYWZ0ZXIgZmlsbGVkIGluIGZvbyAocGFzc2VkIHZsYSkiCisrCisrZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgImFycmF5Mi1hbG1vc3QtZmlsbGVkICgzcmQpIgorK2dkYl90ZXN0 ICJwcmludCBhcnJheTIiICIgPSBcXCggKlxcKCAqXFwoICozMCwgKjMsICozLFxbKCkzLCAuXF0q XFwpIiBcCisrICAicHJpbnQgYXJyYXkyIGluIGZvbyBhZnRlciBpdCB3YXMgZmlsbGVkIChwYXNz ZWQgdmxhKSIKKytnZGJfdGVzdCAicHJpbnQgYXJyYXkyKDIsMSwxKT0yMCIgIiA9IDIwIiBcCisr ICAic2V0IGFycmF5KDIsMiwyKSB0byAyMCBpbiBzdWJyb3V0aW5lIChwYXNzZWQgdmxhKSIKKytn ZGJfdGVzdCAicHJpbnQgYXJyYXkyIiAiID0gXFwoICpcXCggKlxcKCAqMzAsICoyMCwgKjMsXFso KTMsIC5cXSpcXCkiIFwKKysgICJwcmludCBhcnJheTIgaW4gZm9vIGFmdGVyIGl0IHdhcyBtb2Zp ZmllZCBpbiBkZWJ1Z2dlciAocGFzc2VkIHZsYSkiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEtdmFsdWUuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZDdiOGEx ZQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFs dWUuZXhwCitAQCAtMCwwICsxLDE0OCBAQAorKyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKwor K3N0YW5kYXJkX3Rlc3RmaWxlICJ2bGEuZjkwIgorKworK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3Rp bmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorKyAgICAge2RlYnVn IGY5MCBxdWlldH1dIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYgIVtydW50byBNQUlO X19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5f XyIKKysgICAgY29udGludWUKKyt9CisrCisrIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBpbiBub24g YWxsb2NhdGVkIFZMQQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEx LWluaXQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWluaXQiCisrZ2RiX3Rl c3QgInByaW50IHZsYTEiICIgPSA8bm90IGFsbG9jYXRlZD4iICJwcmludCBub24tYWxsb2NhdGVk IHZsYTEiCisrZ2RiX3Rlc3QgInByaW50ICZ2bGExIiBcCisrICAiID0gXFxcKFBUUiBUTyAtPiBc XFwoIHJlYWxcXFwoa2luZD00XFxcKSBcXFwoPG5vdCBhbGxvY2F0ZWQ+XFxcKVxcXClcXFwpICRo ZXgiIFwKKysgICJwcmludCBub24tYWxsb2NhdGVkICZ2bGExIgorK2dkYl90ZXN0ICJwcmludCB2 bGExKDEsMSwxKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYWxsb2NhdGVk IiBcCisrICAicHJpbnQgbWVtYmVyIGluIG5vbi1hbGxvY2F0ZWQgdmxhMSAoMSkiCisrZ2RiX3Rl c3QgInByaW50IHZsYTEoMTAxLDIwMiwzMDMpIiBcCisrICAibm8gc3VjaCB2ZWN0b3IgZWxlbWVu dCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKKysgICJwcmludCBtZW1iZXIgaW4gbm9uLWFsbG9j YXRlZCB2bGExICgyKSIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSg1LDIsMTgpPTEiICJubyBzdWNo IHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIgXAorKyAgInNldCBtZW1iZXIg aW4gbm9uLWFsbG9jYXRlZCB2bGExIgorKworKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZSBpbiBhbGxv Y2F0ZWQgVkxBCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTItYWxs b2NhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMi1hbGxvY2F0ZWQiCisr Z2RiX3Rlc3QgIm5leHQiICJcXGQrKFxcdHxcXHMpK3ZsYTFcXFwoMywgNiwgOVxcXCkgPSA0MiIg XAorKyAgInN0ZXAgb3ZlciB2YWx1ZSBhc3NpZ25tZW50IG9mIHZsYTEiCisrZ2RiX3Rlc3QgInBy aW50ICZ2bGExIiBcCisrICAiID0gXFxcKFBUUiBUTyAtPiBcXFwoIHJlYWxcXFwoa2luZD00XFxc KSBcXFwoMTAsMTAsMTBcXFwpXFxcKVxcXCkgJGhleCIgXAorKyAgInByaW50IGFsbG9jYXRlZCAm dmxhMSIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSgzLCA2LCA5KSIgIiA9IDEzMTEiICJwcmludCBh bGxvY2F0ZWQgdmxhMSgzLDYsOSkiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEoMSwgMywgOCkiICIg PSAxMzExIiAicHJpbnQgYWxsb2NhdGVkIHZsYTEoMSwzLDgpIgorK2dkYl90ZXN0ICJwcmludCB2 bGExKDksIDksIDkpID0gOTk5IiAiID0gOTk5IiBcCisrICAicHJpbnQgYWxsb2NhdGVkIHZsYTEo OSw5LDkpPTEiCisrCisrIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBpbiBhbGxvY2F0ZWQgVkxBIGFm dGVyIHNwZWNpZmljIGFzc2lnbm1lbnQKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAidmxhMS1maWxsZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWZp bGxlZCIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSgzLCA2LCA5KSIgIiA9IDQyIiBcCisrICAicHJp bnQgYWxsb2NhdGVkIHZsYTEoMyw2LDkpIGFmdGVyIHNwZWNpZmljIGFzc2lnbm1lbnQgKGZpbGxl ZCkiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEoMSwgMywgOCkiICIgPSAxMDAxIiBcCisrICAicHJp bnQgYWxsb2NhdGVkIHZsYTEoMSwzLDgpIGFmdGVyIHNwZWNpZmljIGFzc2lnbm1lbnQgKGZpbGxl ZCkiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEoOSwgOSwgOSkiICIgPSA5OTkiIFwKKysgICJwcmlu dCBhbGxvY2F0ZWQgdmxhMSg5LDksOSkgYWZ0ZXIgYXNzaWdubWVudCBpbiBkZWJ1Z2dlciAoZmls bGVkKSIKKysKKysjIFRyeSB0byBhY2Nlc3MgdmFsdWVzIGluIHVuZGVmaW5lZCBwb2ludGVyIHRv IFZMQSAoZGFuZ2xpbmcpCisrZ2RiX3Rlc3QgInByaW50IHB2bGEiICIgPSA8bm90IGFzc29jaWF0 ZWQ+IiAicHJpbnQgdW5kZWZpbmVkIHB2bGEiCisrZ2RiX3Rlc3QgInByaW50ICZwdmxhIiBcCisr ICAiID0gXFxcKFBUUiBUTyAtPiBcXFwoIHJlYWxcXFwoa2luZD00XFxcKSBcXFwoPG5vdCBhc3Nv Y2lhdGVkPlxcXClcXFwpXFxcKSAkaGV4IiBcCisrICAicHJpbnQgbm9uLWFzc29jaWF0ZWQgJnB2 bGEiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoMSwgMywgOCkiICJubyBzdWNoIHZlY3RvciBlbGVt ZW50IGJlY2F1c2Ugbm90IGFzc29jaWF0ZWQiIFwKKysgICJwcmludCB1bmRlZmluZWQgcHZsYSgx LDMsOCkiCisrCisrIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBpbiBwb2ludGVyIHRvIFZMQSBhbmQg Y29tcGFyZSB0aGVtCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInB2bGEt YXNzb2NpYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2bGEtYXNzb2NpYXRl ZCIKKytnZGJfdGVzdCAicHJpbnQgJnB2bGEiIFwKKysgICIgPSBcXFwoUFRSIFRPIC0+IFxcXCgg cmVhbFxcXChraW5kPTRcXFwpIFxcXCgxMCwxMCwxMFxcXClcXFwpXFxcKSAkaGV4IiBcCisrICAi cHJpbnQgYXNzb2NpYXRlZCAmcHZsYSIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSgzLCA2LCA5KSIg IiA9IDQyIiAicHJpbnQgYXNzb2NpYXRlZCBwdmxhKDMsNiw5KSIKKytnZGJfdGVzdCAicHJpbnQg cHZsYSgxLCAzLCA4KSIgIiA9IDEwMDEiICJwcmludCBhc3NvY2lhdGVkIHB2bGEoMSwzLDgpIgor K2dkYl90ZXN0ICJwcmludCBwdmxhKDksIDksIDkpIiAiID0gOTk5IiAicHJpbnQgYXNzb2NpYXRl ZCBwdmxhKDksOSw5KSIKKysKKysjIEZpbGwgdmFsdWVzIHRvIFZMQSB1c2luZyBwb2ludGVyIGFu ZCBjaGVjaworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLXJlLWFz c29jaWF0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLXJlLWFzc29jaWF0 ZWQiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoNSwgNDUsIDIwKSIgXAorKyAgIiA9IDEiICJwcmlu dCBwdmxhKDUsIDQ1LCAyMCkgYWZ0ZXIgZmlsbGVkIHVzaW5nIHBvaW50ZXIiCisrZ2RiX3Rlc3Qg InByaW50IHZsYTIoNSwgNDUsIDIwKSIgXAorKyAgIiA9IDEiICJwcmludCB2bGEyKDUsIDQ1LCAy MCkgYWZ0ZXIgZmlsbGVkIHVzaW5nIHBvaW50ZXIiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoNywg NDUsIDE0KSIgIiA9IDIiIFwKKysgICJwcmludCBwdmxhKDcsIDQ1LCAxNCkgYWZ0ZXIgZmlsbGVk IHVzaW5nIHBvaW50ZXIiCisrZ2RiX3Rlc3QgInByaW50IHZsYTIoNywgNDUsIDE0KSIgIiA9IDIi IFwKKysgICJwcmludCB2bGEyKDcsIDQ1LCAxNCkgYWZ0ZXIgZmlsbGVkIHVzaW5nIHBvaW50ZXIi CisrCisrIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBvZiBkZWFzc29jaWF0ZWQgVkxBIHBvaW50ZXIK KytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1kZWFzc29jaWF0ZWQi XQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWRlYXNzb2NpYXRlZCIKKytnZGJf dGVzdCAicHJpbnQgcHZsYSg1LCA0NSwgMjApIiBcCisrICAibm8gc3VjaCB2ZWN0b3IgZWxlbWVu dCBiZWNhdXNlIG5vdCBhc3NvY2lhdGVkIiBcCisrICAicHJpbnQgcHZsYSg1LCA0NSwgMjApIGFm dGVyIGRlYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSg3LCA0NSwgMTQpIiBcCisr ICAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhc3NvY2lhdGVkIiBcCisrICAi cHJpbnQgcHZsYSg3LCA0NSwgMTQpIGFmdGVyIGRpc3Nhc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInBy aW50IHB2bGEiICIgPSA8bm90IGFzc29jaWF0ZWQ+IiBcCisrICAicHJpbnQgdmxhMSBhZnRlciBk ZWFzc29jaWF0ZWQiCisrCisrIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBvZiBkZWFsbG9jYXRlZCBW TEEKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1kZWFsbG9jYXRl ZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtZGVhbGxvY2F0ZWQiCisrZ2Ri X3Rlc3QgInByaW50IHZsYTEoMywgNiwgOSkiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1 c2Ugbm90IGFsbG9jYXRlZCIgXAorKyAgInByaW50IGFsbG9jYXRlZCB2bGExKDMsNiw5KSBhZnRl ciBzcGVjaWZpYyBhc3NpZ25tZW50IChkZWFsbG9jYXRlZCkiCisrZ2RiX3Rlc3QgInByaW50IHZs YTEoMSwgMywgOCkiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRl ZCIgXAorKyAgInByaW50IGFsbG9jYXRlZCB2bGExKDEsMyw4KSBhZnRlciBzcGVjaWZpYyBhc3Np Z25tZW50IChkZWFsbG9jYXRlZCkiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEoOSwgOSwgOSkiICJu byBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIgXAorKyAgInByaW50 IGFsbG9jYXRlZCB2bGExKDksOSw5KSBhZnRlciBhc3NpZ25tZW50IGluIGRlYnVnZ2VyIChkZWFs bG9jYXRlZCkiCisrCisrCisrIyBUcnkgdG8gYXNzaWduIFZMQSB0byB1c2VyIHZhcmlhYmxlCisr Y2xlYW5fcmVzdGFydCAke3Rlc3RmaWxlfQorKworK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsK KysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCisrICAgIGNv bnRpbnVlCisrfQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWFs bG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTItYWxsb2NhdGVkIgor K2dkYl90ZXN0ICJuZXh0IiAiXFxkKy4qdmxhMVxcKDMsIDYsIDlcXCkgPSA0MiIgIm5leHQgKDEp IgorKworK2dkYl90ZXN0X25vX291dHB1dCAic2V0IFwkbXl2YXIgPSB2bGExIiAic2V0IFwkbXl2 YXIgPSB2bGExIgorK2dkYl90ZXN0ICJwcmludCBcJG15dmFyIiBcCisrICAiID0gXFwoICpcXCgg KlxcKCAqMTMxMSwgKjEzMTEsICoxMzExLFxbKCkxMzExLCAuXF0qXFwpIiBcCisrICAicHJpbnQg XCRteXZhciBzZXQgdG8gdmxhMSIKKysKKytnZGJfdGVzdCAibmV4dCIgIlxcZCsuKnZsYTFcXCgx LCAzLCA4XFwpID0gMTAwMSIgIm5leHQgKDIpIgorK2dkYl90ZXN0ICJwcmludCBcJG15dmFyKDMs Niw5KSIgIiA9IDEzMTEiICJwcmludCBcJG15dmFyKDMsNiw5KSIKKysKKytnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1hc3NvY2lhdGVkIl0KKytnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAicHZsYS1hc3NvY2lhdGVkIgorK2dkYl90ZXN0X25vX291dHB1dCAic2V0 IFwkbXlwdmFyID0gcHZsYSIgInNldCBcJG15cHZhciA9IHB2bGEiCisrZ2RiX3Rlc3QgInByaW50 IFwkbXlwdmFyKDEsMyw4KSIgIiA9IDEwMDEiICJwcmludCBcJG15cHZhcigxLDMsOCkiCisrCisr IyBkZWFsbG9jYXRlIHBvaW50ZXIgYW5kIG1ha2Ugc3VyZSB1c2VyIGRlZmluZWQgdmFyaWFibGUg c3RpbGwgaGFzIHRoZQorKyMgcmlnaHQgdmFsdWUuCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgInB2bGEtZGVhc3NvY2lhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAicHZsYS1kZWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInByaW50IFwkbXlwdmFyKDEsMyw4 KSIgIiA9IDEwMDEiIFwKKysgICJwcmludCBcJG15cHZhcigxLDMsOCkgYWZ0ZXIgZGVhbGxvY2F0 ZWQiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEuZjkwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEuZjkwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5k ZXggMDAwMDAwMC4uNzM0MjVmMworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi92bGEuZjkwCitAQCAtMCwwICsxLDU2IEBACisrISBDb3B5cmlnaHQgMjAxNCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKyshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIQorKyEgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorKworK3Byb2dyYW0gdmxhCisrICByZWFsLCB0YXJnZXQsIGFsbG9jYXRhYmxlIDo6 IHZsYTEgKDosIDosIDopCisrICByZWFsLCB0YXJnZXQsIGFsbG9jYXRhYmxlIDo6IHZsYTIgKDos IDosIDopCisrICByZWFsLCB0YXJnZXQsIGFsbG9jYXRhYmxlIDo6IHZsYTMgKDosIDopCisrICBy ZWFsLCBwb2ludGVyIDo6IHB2bGEgKDosIDosIDopCisrICBsb2dpY2FsIDo6IGwKKysKKysgIGFs bG9jYXRlICh2bGExICgxMCwxMCwxMCkpICAgICAgICAgICEgdmxhMS1pbml0CisrICBsID0gYWxs b2NhdGVkKHZsYTEpCisrCisrICBhbGxvY2F0ZSAodmxhMiAoMTo3LDQyOjUwLDEzOjM1KSkgICAh IHZsYTEtYWxsb2NhdGVkCisrICBsID0gYWxsb2NhdGVkKHZsYTIpCisrCisrICB2bGExKDosIDos IDopID0gMTMxMSAgICAgICAgICAgICAgICAhIHZsYTItYWxsb2NhdGVkCisrICB2bGExKDMsIDYs IDkpID0gNDIKKysgIHZsYTEoMSwgMywgOCkgPSAxMDAxCisrICB2bGExKDYsIDIsIDcpID0gMTMK KysKKysgIHZsYTIoOiwgOiwgOikgPSAxMzExICAgICAgICAgICAgICAgICEgdmxhMS1maWxsZWQK KysgIHZsYTIoNSwgNDUsIDIwKSA9IDQyCisrCisrICBwdmxhID0+IHZsYTEgICAgICAgICAgICAg ICAgICAgICAgICAhIHZsYTItZmlsbGVkCisrICBsID0gYXNzb2NpYXRlZChwdmxhKQorKworKyAg cHZsYSA9PiB2bGEyICAgICAgICAgICAgICAgICAgICAgICAgISBwdmxhLWFzc29jaWF0ZWQKKysg IGwgPSBhc3NvY2lhdGVkKHB2bGEpCisrICBwdmxhKDUsIDQ1LCAyMCkgPSAxCisrICBwdmxhKDcs IDQ1LCAxNCkgPSAyCisrCisrICBwdmxhID0+IG51bGwoKSAgICAgICAgICAgICAgICAgICAgICAh IHB2bGEtcmUtYXNzb2NpYXRlZAorKyAgbCA9IGFzc29jaWF0ZWQocHZsYSkKKysKKysgIGRlYWxs b2NhdGUgKHZsYTEpICAgICAgICAgICAgICAgICAgICEgcHZsYS1kZWFzc29jaWF0ZWQKKysgIGwg PSBhbGxvY2F0ZWQodmxhMSkKKysKKysgIGRlYWxsb2NhdGUgKHZsYTIpICAgICAgICAgICAgICAg ICAgICEgdmxhMS1kZWFsbG9jYXRlZAorKyAgbCA9IGFsbG9jYXRlZCh2bGEyKQorKworKyAgYWxs b2NhdGUgKHZsYTMgKDIsMikpICAgICAgICAgICAgICAgISB2bGEyLWRlYWxsb2NhdGVkCisrICB2 bGEzKDosOikgPSAxMworK2VuZCBwcm9ncmFtIHZsYQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZs YS1mb3J0cmFuLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjcyYjBi ZTIKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0 cmFuLmV4cAorQEAgLTAsMCArMSwxODIgQEAKKysjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisr IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisr IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysK KysjIFZlcmlmeSB0aGF0LCB1c2luZyB0aGUgTUksIHdlIGNhbiBldmFsdWF0ZSBhIHNpbXBsZSBD IFZhcmlhYmxlIExlbmd0aAorKyMgQXJyYXkgKFZMQSkuCisrCisrbG9hZF9saWIgbWktc3VwcG9y dC5leHAKKytzZXQgTUlGTEFHUyAiLWk9bWkiCisrCisrZ2RiX2V4aXQKKytpZiBbbWlfZ2RiX3N0 YXJ0XSB7CisrICAgIGNvbnRpbnVlCisrfQorKworK3N0YW5kYXJkX3Rlc3RmaWxlIHZsYS5mOTAK KysKKytpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAi JHtiaW5maWxlfSIgZXhlY3V0YWJsZSBcCisrICAgICB7ZGVidWcgZjkwfV0gIT0gIiIgfSB7Cisr ICAgICB1bnRlc3RlZCBtaS12bGEtZm9ydHJhbi5leHAKKysgICAgIHJldHVybiAtMQorK30KKysK KyttaV9kZWxldGVfYnJlYWtwb2ludHMKKyttaV9nZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGly LyRzdWJkaXIKKyttaV9nZGJfbG9hZCAke2JpbmZpbGV9CisrCisrc2V0IGJwX2xpbmVubyBbZ2Ri X2dldF9saW5lX251bWJlciAidmxhMS1ub3QtYWxsb2NhdGVkIl0KKyttaV9jcmVhdGVfYnJlYWtw b2ludCAiLXQgdmxhLmY5MDokYnBfbGluZW5vIiAxICJkZWwiICJ2bGEiIFwKKysgICIuKnZsYS5m OTAiICRicF9saW5lbm8gJGhleCBcCisrICAiaW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBf bGluZW5vICh2bGEgbm90IGFsbG9jYXRlZCkiCisrbWlfcnVuX2NtZAorK21pX2V4cGVjdF9zdG9w ICJicmVha3BvaW50LWhpdCIgInZsYSIgIiIgIi4qdmxhLmY5MCIgIiRicF9saW5lbm8iIFwKKysg IHsgIiIgImRpc3A9XCJkZWxcIiIgfSAicnVuIHRvIGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGlu ZW5vIgorK21pX2dkYl90ZXN0ICI1MDAtZGF0YS1ldmFsdWF0ZS1leHByZXNzaW9uIHZsYTEiIFwK KysgICI1MDBcXF5kb25lLHZhbHVlPVwiPG5vdCBhbGxvY2F0ZWQ+XCIiICJldmFsdWF0ZSBub3Qg YWxsb2NhdGVkIHZsYSIKKysKKyttaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgdmxhMV9ub3RfYWxs b2NhdGVkIHZsYTEgIjxub3QgYWxsb2NhdGVkPiIgXAorKyAgImNyZWF0ZSBsb2NhbCB2YXJpYWJs ZSB2bGExX25vdF9hbGxvY2F0ZWQiCisrbWlfZ2RiX3Rlc3QgIjUwMS12YXItaW5mby10eXBlIHZs YTFfbm90X2FsbG9jYXRlZCIgXAorKyAgIjUwMVxcXmRvbmUsdHlwZT1cIjxub3QgYWxsb2NhdGVk PlwiIiBcCisrICAiaW5mbyB0eXBlIHZhcmlhYmxlIHZsYTFfbm90X2FsbG9jYXRlZCIKKyttaV9n ZGJfdGVzdCAiNTAyLXZhci1zaG93LWZvcm1hdCB2bGExX25vdF9hbGxvY2F0ZWQiIFwKKysgICI1 MDJcXF5kb25lLGZvcm1hdD1cIm5hdHVyYWxcIiIgXAorKyAgInNob3cgZm9ybWF0IHZhcmlhYmxl IHZsYTFfbm90X2FsbG9jYXRlZCIKKyttaV9nZGJfdGVzdCAiNTAzLXZhci1ldmFsdWF0ZS1leHBy ZXNzaW9uIHZsYTFfbm90X2FsbG9jYXRlZCIgXAorKyAgIjUwM1xcXmRvbmUsdmFsdWU9XCJcXFxb MFxcXF1cIiIgXAorKyAgImV2YWwgdmFyaWFibGUgdmxhMV9ub3RfYWxsb2NhdGVkIgorK21pX2xp c3RfYXJyYXlfdmFyb2JqX2NoaWxkcmVuX3dpdGhfaW5kZXggInZsYTFfbm90X2FsbG9jYXRlZCIg IjAiICIxIiBcCisrICAgICJyZWFsXFxcKGtpbmQ9NFxcXCkiICJnZXQgY2hpbGRyZW4gb2Ygdmxh MV9ub3RfYWxsb2NhdGVkIgorKworKworKworK3NldCBicF9saW5lbm8gW2dkYl9nZXRfbGluZV9u dW1iZXIgInZsYTEtYWxsb2NhdGVkIl0KKyttaV9jcmVhdGVfYnJlYWtwb2ludCAiLXQgdmxhLmY5 MDokYnBfbGluZW5vIiAyICJkZWwiICJ2bGEiICIuKnZsYS5mOTAiIFwKKysgICRicF9saW5lbm8g JGhleCAiaW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vICh2bGEgYWxsb2NhdGVk KSIKKyttaV9ydW5fY21kCisrbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAi IiAiLip2bGEuZjkwIiAiJGJwX2xpbmVubyIgXAorKyAgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJy dW4gdG8gYnJlYWtwb2ludCBhdCBsaW5lICRicF9saW5lbm8iCisrbWlfZ2RiX3Rlc3QgIjUxMC1k YXRhLWV2YWx1YXRlLWV4cHJlc3Npb24gdmxhMSIgXAorKyAgIjUxMFxcXmRvbmUsdmFsdWU9XCJc XCgwLCAwLCAwLCAwLCAwXFwpXCIiICJldmFsdWF0ZSBhbGxvY2F0ZWQgdmxhIgorKworK21pX2Ny ZWF0ZV92YXJvYmpfY2hlY2tlZCB2bGExX2FsbG9jYXRlZCB2bGExICJyZWFsXFxcKGtpbmQ9NFxc XCkgXFxcKDVcXFwpIiBcCisrICAiY3JlYXRlIGxvY2FsIHZhcmlhYmxlIHZsYTFfYWxsb2NhdGVk IgorK21pX2dkYl90ZXN0ICI1MTEtdmFyLWluZm8tdHlwZSB2bGExX2FsbG9jYXRlZCIgXAorKyAg IjUxMVxcXmRvbmUsdHlwZT1cInJlYWxcXFwoa2luZD00XFxcKSBcXFwoNVxcXClcIiIgXAorKyAg ImluZm8gdHlwZSB2YXJpYWJsZSB2bGExX2FsbG9jYXRlZCIKKyttaV9nZGJfdGVzdCAiNTEyLXZh ci1zaG93LWZvcm1hdCB2bGExX2FsbG9jYXRlZCIgXAorKyAgIjUxMlxcXmRvbmUsZm9ybWF0PVwi bmF0dXJhbFwiIiBcCisrICAic2hvdyBmb3JtYXQgdmFyaWFibGUgdmxhMV9hbGxvY2F0ZWQiCisr bWlfZ2RiX3Rlc3QgIjUxMy12YXItZXZhbHVhdGUtZXhwcmVzc2lvbiB2bGExX2FsbG9jYXRlZCIg XAorKyAgIjUxM1xcXmRvbmUsdmFsdWU9XCJcXFxbNVxcXF1cIiIgXAorKyAgImV2YWwgdmFyaWFi bGUgdmxhMV9hbGxvY2F0ZWQiCisrbWlfbGlzdF9hcnJheV92YXJvYmpfY2hpbGRyZW5fd2l0aF9p bmRleCAidmxhMV9hbGxvY2F0ZWQiICI1IiAiMSIgXAorKyAgICAicmVhbFxcXChraW5kPTRcXFwp IiAiZ2V0IGNoaWxkcmVuIG9mIHZsYTFfYWxsb2NhdGVkIgorKworKworK3NldCBicF9saW5lbm8g W2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtZmlsbGVkIl0KKyttaV9jcmVhdGVfYnJlYWtwb2lu dCAiLXQgdmxhLmY5MDokYnBfbGluZW5vIiAzICJkZWwiICJ2bGEiICIuKnZsYS5mOTAiIFwKKysg ICRicF9saW5lbm8gJGhleCAiaW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgor K21pX3J1bl9jbWQKKyttaV9leHBlY3Rfc3RvcCAiYnJlYWtwb2ludC1oaXQiICJ2bGEiICIiICIu KnZsYS5mOTAiICIkYnBfbGluZW5vIiBcCisrICB7ICIiICJkaXNwPVwiZGVsXCIiIH0gInJ1biB0 byBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKKyttaV9nZGJfdGVzdCAiNTIwLWRhdGEt ZXZhbHVhdGUtZXhwcmVzc2lvbiB2bGExIiBcCisrICAiNTIwXFxeZG9uZSx2YWx1ZT1cIlxcKDEs IDEsIDEsIDEsIDFcXClcIiIgImV2YWx1YXRlIGZpbGxlZCB2bGEiCisrCisrCisrc2V0IGJwX2xp bmVubyBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1tb2RpZmllZCJdCisrbWlfY3JlYXRlX2Jy ZWFrcG9pbnQgIi10IHZsYS5mOTA6JGJwX2xpbmVubyIgNCAiZGVsIiAidmxhIiAiLip2bGEuZjkw IiBcCisrICAkYnBfbGluZW5vICRoZXggImluc2VydCBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xp bmVubyIKKyttaV9ydW5fY21kCisrbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxh IiAiIiAiLip2bGEuZjkwIiAiJGJwX2xpbmVubyIgXAorKyAgeyAiIiAiZGlzcD1cImRlbFwiIiB9 ICJydW4gdG8gYnJlYWtwb2ludCBhdCBsaW5lICRicF9saW5lbm8iCisrbWlfZ2RiX3Rlc3QgIjUz MC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Npb24gdmxhMSIgXAorKyAgIjUzMFxcXmRvbmUsdmFsdWU9 XCJcXCgxLCA0MiwgMSwgMjQsIDFcXClcIiIgImV2YWx1YXRlIGZpbGxlZCB2bGEiCisrbWlfZ2Ri X3Rlc3QgIjU0MC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Npb24gdmxhMSgxKSIgXAorKyAgIjU0MFxc XmRvbmUsdmFsdWU9XCIxXCIiICJldmFsdWF0ZSBmaWxsZWQgdmxhIgorK21pX2dkYl90ZXN0ICI1 NTAtZGF0YS1ldmFsdWF0ZS1leHByZXNzaW9uIHZsYTEoMikiIFwKKysgICI1NTBcXF5kb25lLHZh bHVlPVwiNDJcIiIgImV2YWx1YXRlIGZpbGxlZCB2bGEiCisrbWlfZ2RiX3Rlc3QgIjU2MC1kYXRh LWV2YWx1YXRlLWV4cHJlc3Npb24gdmxhMSg0KSIgXAorKyAgIjU2MFxcXmRvbmUsdmFsdWU9XCIy NFwiIiAiZXZhbHVhdGUgZmlsbGVkIHZsYSIKKysKKysKKytzZXQgYnBfbGluZW5vIFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJ2bGExLWRlYWxsb2NhdGVkIl0KKyttaV9jcmVhdGVfYnJlYWtwb2ludCAi LXQgdmxhLmY5MDokYnBfbGluZW5vIiA1ICJkZWwiICJ2bGEiICIuKnZsYS5mOTAiIFwKKysgICRi cF9saW5lbm8gJGhleCAiaW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgorK21p X3J1bl9jbWQKKyttaV9leHBlY3Rfc3RvcCAiYnJlYWtwb2ludC1oaXQiICJ2bGEiICIiICIuKnZs YS5mOTAiICIkYnBfbGluZW5vIiBcCisrICB7ICIiICJkaXNwPVwiZGVsXCIiIH0gInJ1biB0byBi cmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKKyttaV9nZGJfdGVzdCAiNTcwLWRhdGEtZXZh bHVhdGUtZXhwcmVzc2lvbiB2bGExIiBcCisrICAiNTcwXFxeZG9uZSx2YWx1ZT1cIjxub3QgYWxs b2NhdGVkPlwiIiAiZXZhbHVhdGUgbm90IGFsbG9jYXRlZCB2bGEiCisrCisrCisrc2V0IGJwX2xp bmVubyBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYTItbm90LWFzc29jaWF0ZWQiXQorK21pX2Ny ZWF0ZV9icmVha3BvaW50ICItdCB2bGEuZjkwOiRicF9saW5lbm8iIDYgImRlbCIgInZsYSIgIi4q dmxhLmY5MCIgXAorKyAgJGJwX2xpbmVubyAkaGV4ICJpbnNlcnQgYnJlYWtwb2ludCBhdCBsaW5l ICRicF9saW5lbm8iCisrbWlfcnVuX2NtZAorK21pX2V4cGVjdF9zdG9wICJicmVha3BvaW50LWhp dCIgInZsYSIgIiIgIi4qdmxhLmY5MCIgIiRicF9saW5lbm8iIFwKKysgIHsgIiIgImRpc3A9XCJk ZWxcIiIgfSAicnVuIHRvIGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgorK21pX2dkYl90 ZXN0ICI1ODAtZGF0YS1ldmFsdWF0ZS1leHByZXNzaW9uIHB2bGEyIiBcCisrICAiNTgwXFxeZG9u ZSx2YWx1ZT1cIjxub3QgYXNzb2NpYXRlZD5cIiIgImV2YWx1YXRlIG5vdCBhc3NvY2lhdGVkIHZs YSIKKysKKyttaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgcHZsYTJfbm90X2Fzc29jaWF0ZWQgcHZs YTIgIjxub3QgYXNzb2NpYXRlZD4iIFwKKysgICJjcmVhdGUgbG9jYWwgdmFyaWFibGUgcHZsYTJf bm90X2Fzc29jaWF0ZWQiCisrbWlfZ2RiX3Rlc3QgIjU4MS12YXItaW5mby10eXBlIHB2bGEyX25v dF9hc3NvY2lhdGVkIiBcCisrICAiNTgxXFxeZG9uZSx0eXBlPVwiPG5vdCBhc3NvY2lhdGVkPlwi IiBcCisrICAiaW5mbyB0eXBlIHZhcmlhYmxlIHB2bGEyX25vdF9hc3NvY2lhdGVkIgorK21pX2dk Yl90ZXN0ICI1ODItdmFyLXNob3ctZm9ybWF0IHB2bGEyX25vdF9hc3NvY2lhdGVkIiBcCisrICAi NTgyXFxeZG9uZSxmb3JtYXQ9XCJuYXR1cmFsXCIiIFwKKysgICJzaG93IGZvcm1hdCB2YXJpYWJs ZSBwdmxhMl9ub3RfYXNzb2NpYXRlZCIKKyttaV9nZGJfdGVzdCAiNTgzLXZhci1ldmFsdWF0ZS1l eHByZXNzaW9uIHB2bGEyX25vdF9hc3NvY2lhdGVkIiBcCisrICAiNTgzXFxeZG9uZSx2YWx1ZT1c IlxcXFswXFxcXVwiIiBcCisrICAiZXZhbCB2YXJpYWJsZSBwdmxhMl9ub3RfYXNzb2NpYXRlZCIK KyttaV9saXN0X2FycmF5X3Zhcm9ial9jaGlsZHJlbl93aXRoX2luZGV4ICJwdmxhMl9ub3RfYXNz b2NpYXRlZCIgIjAiICIxIiBcCisrICAgICJyZWFsXFxcKGtpbmQ9NFxcXCkiICJnZXQgY2hpbGRy ZW4gb2YgcHZsYTJfbm90X2Fzc29jaWF0ZWQiCisrCisrCisrc2V0IGJwX2xpbmVubyBbZ2RiX2dl dF9saW5lX251bWJlciAicHZsYTItYXNzb2NpYXRlZCJdCisrbWlfY3JlYXRlX2JyZWFrcG9pbnQg Ii10IHZsYS5mOTA6JGJwX2xpbmVubyIgNyAiZGVsIiAidmxhIiAiLip2bGEuZjkwIiBcCisrICAk YnBfbGluZW5vICRoZXggImluc2VydCBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKKytt aV9ydW5fY21kCisrbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2 bGEuZjkwIiAiJGJwX2xpbmVubyIgXAorKyAgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJydW4gdG8g YnJlYWtwb2ludCBhdCBsaW5lICRicF9saW5lbm8iCisrbWlfZ2RiX3Rlc3QgIjU5MC1kYXRhLWV2 YWx1YXRlLWV4cHJlc3Npb24gcHZsYTIiIFwKKysgICI1OTBcXF5kb25lLHZhbHVlPVwiXFwoXFwo IDIsIDIsIDIsIDIsIDJcXCkgXFwoIDIsIDIsIDIsIDIsIDJcXCkgXFwpXCIiIFwKKysgICJldmFs dWF0ZSBhc3NvY2lhdGVkIHZsYSIKKysKKyttaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgcHZsYTJf YXNzb2NpYXRlZCBwdmxhMiBcCisrICAicmVhbFxcXChraW5kPTRcXFwpIFxcXCg1LDJcXFwpIiAi Y3JlYXRlIGxvY2FsIHZhcmlhYmxlIHB2bGEyX2Fzc29jaWF0ZWQiCisrbWlfZ2RiX3Rlc3QgIjU5 MS12YXItaW5mby10eXBlIHB2bGEyX2Fzc29jaWF0ZWQiIFwKKysgICI1OTFcXF5kb25lLHR5cGU9 XCJyZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDUsMlxcXClcIiIgXAorKyAgImluZm8gdHlwZSB2YXJp YWJsZSBwdmxhMl9hc3NvY2lhdGVkIgorK21pX2dkYl90ZXN0ICI1OTItdmFyLXNob3ctZm9ybWF0 IHB2bGEyX2Fzc29jaWF0ZWQiIFwKKysgICI1OTJcXF5kb25lLGZvcm1hdD1cIm5hdHVyYWxcIiIg XAorKyAgInNob3cgZm9ybWF0IHZhcmlhYmxlIHB2bGEyX2Fzc29jaWF0ZWQiCisrbWlfZ2RiX3Rl c3QgIjU5My12YXItZXZhbHVhdGUtZXhwcmVzc2lvbiBwdmxhMl9hc3NvY2lhdGVkIiBcCisrICAi NTkzXFxeZG9uZSx2YWx1ZT1cIlxcXFsyXFxcXVwiIiBcCisrICAiZXZhbCB2YXJpYWJsZSBwdmxh Ml9hc3NvY2lhdGVkIgorKworKworK3NldCBicF9saW5lbm8gW2dkYl9nZXRfbGluZV9udW1iZXIg InB2bGEyLXNldC10by1udWxsIl0KKyttaV9jcmVhdGVfYnJlYWtwb2ludCAiLXQgdmxhLmY5MDok YnBfbGluZW5vIiA4ICJkZWwiICJ2bGEiICIuKnZsYS5mOTAiIFwKKysgICRicF9saW5lbm8gJGhl eCAiaW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgorK21pX3J1bl9jbWQKKytt aV9leHBlY3Rfc3RvcCAiYnJlYWtwb2ludC1oaXQiICJ2bGEiICIiICIuKnZsYS5mOTAiICIkYnBf bGluZW5vIiBcCisrICB7ICIiICJkaXNwPVwiZGVsXCIiIH0gInJ1biB0byBicmVha3BvaW50IGF0 IGxpbmUgJGJwX2xpbmVubyIKKyttaV9nZGJfdGVzdCAiNjAwLWRhdGEtZXZhbHVhdGUtZXhwcmVz c2lvbiBwdmxhMiIgXAorKyAgIjYwMFxcXmRvbmUsdmFsdWU9XCI8bm90IGFzc29jaWF0ZWQ+XCIi ICJldmFsdWF0ZSB2bGEgcG9pbnRlciBzZXQgdG8gbnVsbCIKKysKKyttaV9nZGJfZXhpdAorK3Jl dHVybiAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvdmxhLmY5MCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLm1pL3ZsYS5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwLi40NmVkYWQyCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS92 bGEuZjkwCitAQCAtMCwwICsxLDQyIEBACisrISBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysh IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisrISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyEKKysh IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrIQorKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKwor K3Byb2dyYW0gdmxhCisrICByZWFsLCBhbGxvY2F0YWJsZSA6OiB2bGExICg6KQorKyAgcmVhbCwg dGFyZ2V0LCBhbGxvY2F0YWJsZSA6OiB2bGEyKDosIDopCisrICByZWFsLCBwb2ludGVyIDo6IHB2 bGEyICg6LCA6KQorKyAgbG9naWNhbCA6OiBsCisrCisrICBhbGxvY2F0ZSAodmxhMSAoNSkpICAg ICAgICAgISB2bGExLW5vdC1hbGxvY2F0ZWQKKysgIGwgPSBhbGxvY2F0ZWQodmxhMSkgICAgICAg ICAhIHZsYTEtYWxsb2NhdGVkCisrCisrICB2bGExKDopID0gMQorKyAgdmxhMSgyKSA9IDQyICAg ICAgICAgICAgICAgICEgdmxhMS1maWxsZWQKKysgIHZsYTEoNCkgPSAyNAorKworKyAgZGVhbGxv Y2F0ZSAodmxhMSkgICAgICAgICAgICEgdmxhMS1tb2RpZmllZAorKyAgbCA9IGFsbG9jYXRlZCh2 bGExKSAgICAgICAgICEgdmxhMS1kZWFsbG9jYXRlZAorKworKyAgYWxsb2NhdGUgKHZsYTIgKDUs IDIpKQorKyAgdmxhMig6LCA6KSA9IDIKKysKKysgIHB2bGEyID0+IHZsYTIgICAgICAgICAgICAg ICAhIHB2bGEyLW5vdC1hc3NvY2lhdGVkCisrICBsID0gYXNzb2NpYXRlZChwdmxhMikgICAgICAg ISBwdmxhMi1hc3NvY2lhdGVkCisrCisrICBwdmxhMigyLCAxKSA9IDQyCisrCisrICBwdmxhMiA9 PiBudWxsKCkKKysgIGwgPSBhc3NvY2lhdGVkKHB2bGEyKSAgICAgICAhIHB2bGEyLXNldC10by1u dWxsCisrZW5kIHByb2dyYW0gdmxhCitkaWZmIC0tZ2l0IGEvZ2RiL3R5cGVwcmludC5jIGIvZ2Ri L3R5cGVwcmludC5jCitpbmRleCAwMjZmM2EyLi40Yzg2MWFjIDEwMDY0NAorLS0tIGEvZ2RiL3R5 cGVwcmludC5jCisrKysgYi9nZGIvdHlwZXByaW50LmMKK0BAIC00NTksNiArNDU5LDEzIEBAIHdo YXRpc19leHAgKGNoYXIgKmV4cCwgaW50IHNob3cpCisgCisgICB0eXBlID0gdmFsdWVfdHlwZSAo dmFsKTsKKyAKKysgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9QVFIpCisrICAg IGlmIChpc19keW5hbWljX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSkKKysgICAgICB7 CisrCXZhbCA9IHZhbHVlX2FkZHIgKHZhbHVlX2luZCAodmFsKSk7CisrCXR5cGUgPSB2YWx1ZV90 eXBlICh2YWwpOworKyAgICAgIH0KKysKKyAgIGdldF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRz KTsKKyAgIGlmIChvcHRzLm9iamVjdHByaW50KQorICAgICB7CitkaWZmIC0tZ2l0IGEvZ2RiL3Zh bGFyaXRoLmMgYi9nZGIvdmFsYXJpdGguYworaW5kZXggNGRhNDFjYi4uZmI5NjcxYiAxMDA2NDQK Ky0tLSBhL2dkYi92YWxhcml0aC5jCisrKysgYi9nZGIvdmFsYXJpdGguYworQEAgLTE5NSwxMiAr MTk1LDMxIEBAIHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZhbHVlICphcnJheSwg TE9OR0VTVCBpbmRleCwgaW50IGxvd2VyYm91bmQpCisgICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlw ZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7CisgICBzdHJ1Y3QgdHlwZSAq ZWx0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKSk7 CisgICB1bnNpZ25lZCBpbnQgZWx0X3NpemUgPSBUWVBFX0xFTkdUSCAoZWx0X3R5cGUpOworLSAg dW5zaWduZWQgaW50IGVsdF9vZmZzID0gZWx0X3NpemUgKiBsb25nZXN0X3RvX2ludCAoaW5kZXgg LSBsb3dlcmJvdW5kKTsKKysgIHVuc2lnbmVkIGludCBlbHRfb2ZmcyA9IGxvbmdlc3RfdG9faW50 IChpbmRleCAtIGxvd2VyYm91bmQpOworKyAgTE9OR0VTVCBlbHRfc3RyaWRlID0gVFlQRV9CWVRF X1NUUklERSAoVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKSk7CisgICBzdHJ1Y3QgdmFsdWUg KnY7CisgCisrICBpZiAoZWx0X3N0cmlkZSA+IDApCisrICAgIGVsdF9vZmZzICo9IGVsdF9zdHJp ZGU7CisrICBlbHNlIGlmIChlbHRfc3RyaWRlIDwgMCkKKysgICAgeworKyAgICAgIGludCBvZmZz ID0gKGVsdF9vZmZzICsgMSkgKiBlbHRfc3RyaWRlOworKworKyAgICAgIGVsdF9vZmZzID0gVFlQ RV9MRU5HVEggKGFycmF5X3R5cGUpICsgb2ZmczsKKysgICAgfQorKyAgZWxzZQorKyAgICBlbHRf b2ZmcyAqPSBlbHRfc2l6ZTsKKysKKyAgIGlmIChpbmRleCA8IGxvd2VyYm91bmQgfHwgKCFUWVBF X0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAoYXJyYXlfdHlwZSkKKyAJCQkgICAgICYm IGVsdF9vZmZzID49IFRZUEVfTEVOR1RIIChhcnJheV90eXBlKSkpCistICAgIGVycm9yIChfKCJu byBzdWNoIHZlY3RvciBlbGVtZW50IikpOworKyAgICB7CisrICAgICAgaWYgKFRZUEVfTk9UX0FT U09DSUFURUQgKGFycmF5X3R5cGUpKQorKyAgICAgICAgZXJyb3IgKF8oIm5vIHN1Y2ggdmVjdG9y IGVsZW1lbnQgYmVjYXVzZSBub3QgYXNzb2NpYXRlZCIpKTsKKysgICAgICBlbHNlIGlmIChUWVBF X05PVF9BTExPQ0FURUQgKGFycmF5X3R5cGUpKQorKyAgICAgICAgZXJyb3IgKF8oIm5vIHN1Y2gg dmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYWxsb2NhdGVkIikpOworKyAgICAgIGVsc2UKKysg ICAgICAgIGVycm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50IikpOworKyAgICB9CisgCisg ICBpZiAoVkFMVUVfTFZBTCAoYXJyYXkpID09IGx2YWxfbWVtb3J5ICYmIHZhbHVlX2xhenkgKGFy cmF5KSkKKyAgICAgdiA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKGVsdF90eXBlKTsKK2RpZmYgLS1n aXQgYS9nZGIvdmFscHJpbnQuYyBiL2dkYi92YWxwcmludC5jCitpbmRleCA4NjAwYjM0Li4yZjhl YWMxIDEwMDY0NAorLS0tIGEvZ2RiL3ZhbHByaW50LmMKKysrKyBiL2dkYi92YWxwcmludC5jCitA QCAtMzA3LDYgKzMwNywxOCBAQCB2YWxwcmludF9jaGVja192YWxpZGl0eSAoc3RydWN0IHVpX2Zp bGUgKnN0cmVhbSwKKyB7CisgICBDSEVDS19UWVBFREVGICh0eXBlKTsKKyAKKysgIGlmIChUWVBF X05PVF9BU1NPQ0lBVEVEICh0eXBlKSkKKysgICAgeworKyAgICAgIHZhbF9wcmludF9ub3RfYXNz b2NpYXRlZCAoc3RyZWFtKTsKKysgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAgaWYgKFRZ UEVfTk9UX0FMTE9DQVRFRCAodHlwZSkpCisrICAgIHsKKysgICAgICB2YWxfcHJpbnRfbm90X2Fs bG9jYXRlZCAoc3RyZWFtKTsKKysgICAgICByZXR1cm4gMDsKKysgICAgfQorKworICAgaWYgKFRZ UEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1VOSU9OCisgICAgICAgJiYgVFlQRV9DT0RFICh0 eXBlKSAhPSBUWVBFX0NPREVfU1RSVUNUCisgICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAhPSBU WVBFX0NPREVfQVJSQVkpCitAQCAtMzYyLDYgKzM3NCwxOCBAQCB2YWxfcHJpbnRfaW52YWxpZF9h ZGRyZXNzIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQorICAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCBfKCI8aW52YWxpZCBhZGRyZXNzPiIpKTsKKyB9CisgCisrdm9pZAorK3ZhbF9wcmludF9u b3RfYWxsb2NhdGVkIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQorK3sKKysgIGZwcmludGZfZmls dGVyZWQgKHN0cmVhbSwgXygiPG5vdCBhbGxvY2F0ZWQ+IikpOworK30KKysKKyt2b2lkCisrdmFs X3ByaW50X25vdF9hc3NvY2lhdGVkIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQorK3sKKysgIGZw cmludGZfZmlsdGVyZWQgKHN0cmVhbSwgXygiPG5vdCBhc3NvY2lhdGVkPiIpKTsKKyt9CisrCisg LyogQSBnZW5lcmljIHZhbF9wcmludCB0aGF0IGlzIHN1aXRhYmxlIGZvciB1c2UgYnkgbGFuZ3Vh Z2UKKyAgICBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGxhX3ZhbF9wcmludCBtZXRob2QuICBUaGlz IGZ1bmN0aW9uIGNhbgorICAgIGhhbmRsZSBtb3N0IHR5cGUgY29kZXMsIHRob3VnaCBub3QgYWxs LCBub3RhYmx5IGV4Y2VwdGlvbgorQEAgLTgwMywxMiArODI3LDE2IEBAIHN0YXRpYyBpbnQKKyB2 YWx1ZV9jaGVja19wcmludGFibGUgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmlsZSAq c3RyZWFtLAorIAkJICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRp b25zKQorIHsKKysgIGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlOworKworICAgaWYgKHZhbCA9PSAw KQorICAgICB7CisgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCBfKCI8YWRkcmVzcyBv ZiB2YWx1ZSB1bmtub3duPiIpKTsKKyAgICAgICByZXR1cm4gMDsKKyAgICAgfQorIAorKyAgdHlw ZSA9IHZhbHVlX3R5cGUgKHZhbCk7CisrCisgICBpZiAodmFsdWVfZW50aXJlbHlfb3B0aW1pemVk X291dCAodmFsKSkKKyAgICAgeworICAgICAgIGlmIChvcHRpb25zLT5zdW1tYXJ5ICYmICF2YWxf cHJpbnRfc2NhbGFyX3R5cGVfcCAodmFsdWVfdHlwZSAodmFsKSkpCitAQCAtODM0LDYgKzg2Miwx OCBAQCB2YWx1ZV9jaGVja19wcmludGFibGUgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtLAorICAgICAgIHJldHVybiAwOworICAgICB9CisgCisrICBpZiAoVFlQRV9O T1RfQVNTT0NJQVRFRCAodHlwZSkpCisrICAgIHsKKysgICAgICB2YWxfcHJpbnRfbm90X2Fzc29j aWF0ZWQgKHN0cmVhbSk7CisrICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKysgIGlmIChUWVBF X05PVF9BTExPQ0FURUQgKHR5cGUpKQorKyAgICB7CisrICAgICAgdmFsX3ByaW50X25vdF9hbGxv Y2F0ZWQgKHN0cmVhbSk7CisrICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKyAgIHJldHVybiAx OworIH0KKyAKK2RpZmYgLS1naXQgYS9nZGIvdmFscHJpbnQuaCBiL2dkYi92YWxwcmludC5oCitp bmRleCA2Njk4MjQ3Li43YTQxNWNmIDEwMDY0NAorLS0tIGEvZ2RiL3ZhbHByaW50LmgKKysrKyBi L2dkYi92YWxwcmludC5oCitAQCAtMjE3LDQgKzIxNyw4IEBAIGV4dGVybiB2b2lkIG91dHB1dF9j b21tYW5kX2NvbnN0IChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpOworIAorIGV4dGVy biBpbnQgdmFsX3ByaW50X3NjYWxhcl90eXBlX3AgKHN0cnVjdCB0eXBlICp0eXBlKTsKKyAKKytl eHRlcm4gdm9pZCB2YWxfcHJpbnRfbm90X2FsbG9jYXRlZCAoc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSk7CisrCisrZXh0ZXJuIHZvaWQgdmFsX3ByaW50X25vdF9hc3NvY2lhdGVkIChzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtKTsKKysKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nZGIvdmFsdWUuYyBiL2dk Yi92YWx1ZS5jCitpbmRleCA1NTcwNTZmLi40ZTkxYTQzIDEwMDY0NAorLS0tIGEvZ2RiL3ZhbHVl LmMKKysrKyBiL2dkYi92YWx1ZS5jCitAQCAtNDMsNiArNDMsNyBAQAorICNpbmNsdWRlICJ0cmFj ZXBvaW50LmgiCisgI2luY2x1ZGUgImNwLWFiaS5oIgorICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIK KysjaW5jbHVkZSAiZHdhcmYybG9jLmgiCisgCisgLyogUHJvdG90eXBlcyBmb3IgZXhwb3J0ZWQg ZnVuY3Rpb25zLiAgKi8KKyAKK0BAIC0xNjQ2LDYgKzE2NDcsMjUgQEAgc2V0X3ZhbHVlX2NvbXBv bmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbHVlICpjb21wb25lbnQsCisgICAgICAgaWYgKGZ1bmNz LT5jb3B5X2Nsb3N1cmUpCisgICAgICAgICBjb21wb25lbnQtPmxvY2F0aW9uLmNvbXB1dGVkLmNs b3N1cmUgPSBmdW5jcy0+Y29weV9jbG9zdXJlICh3aG9sZSk7CisgICAgIH0KKysKKysgIC8qIEZv ciBkeW5hbWljIHR5cGVzIGNvbXB1dGUgdGhlIGFkZHJlc3Mgb2YgdGhlIGNvbXBvbmVudCB2YWx1 ZSBsb2NhdGlvbiBpbgorKyAgICAgc3ViIHJhbmdlIHR5cGVzIGJhc2VkIG9uIHRoZSBsb2NhdGlv biBvZiB0aGUgc3ViIHJhbmdlIHR5cGUsIGlmIG5vdCBiZWluZworKyAgICAgYW4gaW50ZXJuYWwg R0RCIHZhcmlhYmxlIG9yIHBhcnRzIG9mIGl0LiAgKi8KKysgIGlmIChWQUxVRV9MVkFMIChjb21w b25lbnQpICE9IGx2YWxfaW50ZXJuYWx2YXIKKysgICAgICAmJiBWQUxVRV9MVkFMIChjb21wb25l bnQpICE9IGx2YWxfaW50ZXJuYWx2YXJfY29tcG9uZW50KQorKyAgICB7CisrICAgICAgQ09SRV9B RERSIGFkZHI7CisrICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSB2YWx1ZV90eXBlICh3aG9sZSk7 CisrCisrICAgICAgYWRkciA9IHZhbHVlX3Jhd19hZGRyZXNzIChjb21wb25lbnQpOworKworKyAg ICAgIGlmIChUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUpCisrICAgICAgICAgICYmIFRZUEVfREFU QV9MT0NBVElPTl9LSU5EICh0eXBlKSA9PSBQUk9QX0NPTlNUKQorKyAgICAgICAgeworKyAgICAg ICAgICBhZGRyID0gVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIgKHR5cGUpOworKyAgICAgICAgICBz ZXRfdmFsdWVfYWRkcmVzcyAoY29tcG9uZW50LCBhZGRyKTsKKysgICAgICAgIH0KKysgICAgfQor IH0KKyAKKyAMCitAQCAtMjk1MCwxMyArMjk3MCwyMiBAQCB2YWx1ZV9wcmltaXRpdmVfZmllbGQg KHN0cnVjdCB2YWx1ZSAqYXJnMSwgaW50IG9mZnNldCwKKyAJdiA9IGFsbG9jYXRlX3ZhbHVlX2xh enkgKHR5cGUpOworICAgICAgIGVsc2UKKyAJeworLQkgIHYgPSBhbGxvY2F0ZV92YWx1ZSAodHlw ZSk7CistCSAgdmFsdWVfY29udGVudHNfY29weV9yYXcgKHYsIHZhbHVlX2VtYmVkZGVkX29mZnNl dCAodiksCistCQkJCSAgIGFyZzEsIHZhbHVlX2VtYmVkZGVkX29mZnNldCAoYXJnMSkgKyBvZmZz ZXQsCistCQkJCSAgIFRZUEVfTEVOR1RIICh0eXBlKSk7CisrCSAgaWYgKFRZUEVfREFUQV9MT0NB VElPTiAodHlwZSkKKysJICAgICAgJiYgVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQgKHR5cGUpID09 IFBST1BfQ09OU1QpCisrCSAgICB2ID0gdmFsdWVfYXRfbGF6eSAodHlwZSwgdmFsdWVfYWRkcmVz cyAoYXJnMSkgKyBvZmZzZXQpOworKwkgIGVsc2UKKysJICAgIHsKKysJICAgICAgdiA9IGFsbG9j YXRlX3ZhbHVlICh0eXBlKTsKKysJICAgICAgdmFsdWVfY29udGVudHNfY29weV9yYXcgKHYsIHZh bHVlX2VtYmVkZGVkX29mZnNldCAodiksCisrCQkJCSAgICAgICBhcmcxLCB2YWx1ZV9lbWJlZGRl ZF9vZmZzZXQgKGFyZzEpICsgb2Zmc2V0LAorKwkJCQkgICAgICAgVFlQRV9MRU5HVEggKHR5cGUp KTsKKysJICAgIH0KKyAJfQorLSAgICAgIHYtPm9mZnNldCA9ICh2YWx1ZV9vZmZzZXQgKGFyZzEp ICsgb2Zmc2V0CistCQkgICArIHZhbHVlX2VtYmVkZGVkX29mZnNldCAoYXJnMSkpOworKworKyAg ICAgIGlmICghVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKQorKyAgICAgICAgICB8fCAhVFlQRV9E QVRBX0xPQ0FUSU9OX0tJTkQgKHR5cGUpID09IFBST1BfQ09OU1QpCisrCXYtPm9mZnNldCA9ICh2 YWx1ZV9vZmZzZXQgKGFyZzEpICsgb2Zmc2V0CisrCQkgICAgICsgdmFsdWVfZW1iZWRkZWRfb2Zm c2V0IChhcmcxKSk7CisgICAgIH0KKyAgIHNldF92YWx1ZV9jb21wb25lbnRfbG9jYXRpb24gKHYs IGFyZzEpOworICAgVkFMVUVfUkVHTlVNICh2KSA9IFZBTFVFX1JFR05VTSAoYXJnMSk7CitAQCAt MzUzOSw3ICszNTY4LDggQEAgcmVhZGp1c3RfaW5kaXJlY3RfdmFsdWVfdHlwZSAoc3RydWN0IHZh bHVlICp2YWx1ZSwgc3RydWN0IHR5cGUgKmVuY190eXBlLAorIAkJCSAgICAgIHN0cnVjdCB2YWx1 ZSAqb3JpZ2luYWxfdmFsdWUpCisgeworICAgLyogUmUtYWRqdXN0IHR5cGUuICAqLworLSAgZGVw cmVjYXRlZF9zZXRfdmFsdWVfdHlwZSAodmFsdWUsIFRZUEVfVEFSR0VUX1RZUEUgKG9yaWdpbmFs X3R5cGUpKTsKKysgIGlmICghaXNfZHluYW1pY190eXBlIChUWVBFX1RBUkdFVF9UWVBFIChvcmln aW5hbF90eXBlKSkpCisrICAgIGRlcHJlY2F0ZWRfc2V0X3ZhbHVlX3R5cGUgKHZhbHVlLCBUWVBF X1RBUkdFVF9UWVBFIChvcmlnaW5hbF90eXBlKSk7CisgCisgICAvKiBBZGQgZW1iZWRkaW5nIGlu Zm8uICAqLworICAgc2V0X3ZhbHVlX2VuY2xvc2luZ190eXBlICh2YWx1ZSwgZW5jX3R5cGUpOwor QEAgLTM1NTYsNiArMzU4NiwxMiBAQCBjb2VyY2VfcmVmIChzdHJ1Y3QgdmFsdWUgKmFyZykKKyAg IHN0cnVjdCB2YWx1ZSAqcmV0dmFsOworICAgc3RydWN0IHR5cGUgKmVuY190eXBlOworIAorKyAg aWYgKGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlICE9IGxhbmd1YWdlX2ZvcnRyYW4KKysg ICAgICAmJiBUWVBFX0RBVEFfTE9DQVRJT04gKHZhbHVlX3R5cGVfYXJnX3RtcCkgIT0gTlVMTAor KyAgICAgICYmIFRZUEVfREFUQV9MT0NBVElPTl9LSU5EICh2YWx1ZV90eXBlX2FyZ190bXApID09 IFBST1BfQ09OU1QpCisrICAgIGFyZyA9IHZhbHVlX2F0X2xhenkgKHZhbHVlX3R5cGVfYXJnX3Rt cCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIgKHZh bHVlX3R5cGVfYXJnX3RtcCkpOworKworICAgcmV0dmFsID0gY29lcmNlX3JlZl9pZl9jb21wdXRl ZCAoYXJnKTsKKyAgIGlmIChyZXR2YWwpCisgICAgIHJldHVybiByZXR2YWw7CitAQCAtMzY5OSw4 ICszNzM1LDE0IEBAIHZhbHVlX2ZldGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAqdmFsKQorICAgICB9 CisgICBlbHNlIGlmIChWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfbWVtb3J5KQorICAgICB7Cist ICAgICAgQ09SRV9BRERSIGFkZHIgPSB2YWx1ZV9hZGRyZXNzICh2YWwpOworICAgICAgIHN0cnVj dCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfZW5jbG9zaW5nX3R5cGUgKHZhbCkp OworKyAgICAgIENPUkVfQUREUiBhZGRyOworKworKyAgICAgIGlmIChUWVBFX0RBVEFfTE9DQVRJ T04gKHR5cGUpICE9IE5VTEwKKysJICAmJiBUWVBFX0RBVEFfTE9DQVRJT05fS0lORCAodHlwZSkg PT0gUFJPUF9DT05TVCkKKysJYWRkciA9IFRZUEVfREFUQV9MT0NBVElPTl9BRERSICh0eXBlKTsK KysgICAgICBlbHNlCisrCWFkZHIgPSB2YWx1ZV9hZGRyZXNzICh2YWwpOworIAorICAgICAgIGlm IChUWVBFX0xFTkdUSCAodHlwZSkpCisgCXJlYWRfdmFsdWVfbWVtb3J5ICh2YWwsIDAsIHZhbHVl X3N0YWNrICh2YWwpLAoKZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggYmEy MmE0ZS4uZDY0NDQzYyAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTI1 LDcgKzI1LDcgQEAgVmVyc2lvbjogNy43LjkwLiV7c25hcHNyY30KIAogIyBUaGUgcmVsZWFzZSBh bHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQgaXQgYXQgMS4K ICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5IGZ1bGx5IHJwbSBk ZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxlYXNlOiA4JXs/ZGlz dH0KK1JlbGVhc2U6IDklez9kaXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRo IGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BM KyBhbmQgTEdQTHYyKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9tYWluIGFuZCBHRkRMCiBHcm91cDog RGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC01MDYsMzAgKzUwNiw4IEBAIFBhdGNoODUyOiBnZGIt Z25hdC1kd2FyZi1jcmFzaC0zb2YzLnBhdGNoCiAKICMgVkxBIChGb3J0cmFuIGR5bmFtaWMgYXJy YXlzKSBmcm9tIEludGVsICsgYXJjaGVyLWphbmtyYXRvY2h2aWwtdmxhIHRlc3RzLgogUGF0Y2g4 ODc6IGdkYi1hcmNoZXItdmxhLXRlc3RzLnBhdGNoCi1QYXRjaDg4ODogZ2RiLXZsYS1pbnRlbC0w MW9mMjMucGF0Y2gKLVBhdGNoODg5OiBnZGItdmxhLWludGVsLTAyb2YyMy5wYXRjaAotUGF0Y2g4 OTA6IGdkYi12bGEtaW50ZWwtMDNvZjIzLnBhdGNoCi1QYXRjaDg5MTogZ2RiLXZsYS1pbnRlbC0w NG9mMjMucGF0Y2gKK1BhdGNoODg4OiBnZGItdmxhLWludGVsLnBhdGNoCiBQYXRjaDkxMjogZ2Ri LXZsYS1pbnRlbC0wNG9mMjMtZml4LnBhdGNoCi1QYXRjaDg5MjogZ2RiLXZsYS1pbnRlbC0wNW9m MjMucGF0Y2gKLVBhdGNoODkzOiBnZGItdmxhLWludGVsLTA2b2YyMy5wYXRjaAotUGF0Y2g4OTQ6 IGdkYi12bGEtaW50ZWwtMDdvZjIzLnBhdGNoCi1QYXRjaDg5NTogZ2RiLXZsYS1pbnRlbC0wOG9m MjMucGF0Y2gKLVBhdGNoODk2OiBnZGItdmxhLWludGVsLTA5b2YyMy5wYXRjaAotUGF0Y2g4OTc6 IGdkYi12bGEtaW50ZWwtMTBvZjIzLnBhdGNoCi1QYXRjaDg5ODogZ2RiLXZsYS1pbnRlbC0xMW9m MjMucGF0Y2gKLVBhdGNoODk5OiBnZGItdmxhLWludGVsLTEyb2YyMy5wYXRjaAotUGF0Y2g5MDA6 IGdkYi12bGEtaW50ZWwtMTNvZjIzLnBhdGNoCi1QYXRjaDkwMTogZ2RiLXZsYS1pbnRlbC0xNG9m MjMucGF0Y2gKLVBhdGNoOTAyOiBnZGItdmxhLWludGVsLTE1b2YyMy5wYXRjaAotUGF0Y2g5MDM6 IGdkYi12bGEtaW50ZWwtMTZvZjIzLnBhdGNoCi1QYXRjaDkwNDogZ2RiLXZsYS1pbnRlbC0xN29m MjMucGF0Y2gKLVBhdGNoOTA1OiBnZGItdmxhLWludGVsLTE4b2YyMy5wYXRjaAotUGF0Y2g5MDY6 IGdkYi12bGEtaW50ZWwtMTlvZjIzLnBhdGNoCi1QYXRjaDkwNzogZ2RiLXZsYS1pbnRlbC0yMG9m MjMucGF0Y2gKLVBhdGNoOTA4OiBnZGItdmxhLWludGVsLTIxb2YyMy5wYXRjaAotUGF0Y2g5MDk6 IGdkYi12bGEtaW50ZWwtMjJvZjIzLnBhdGNoCi1QYXRjaDkxMDogZ2RiLXZsYS1pbnRlbC0yM29m MjMucGF0Y2gKIAogIyBGaXggLS13aXRoLXN5c3RlbS1yZWFkbGluZSB3aXRoIHJlYWRsaW5lLTYu MyBwYXRjaCA1LgogUGF0Y2g5MTQ6IGdkYi1yZWFkbGluZS02LjMuNS5wYXRjaApAQCAtNTQwLDYg KzUxOCwxMCBAQCBQYXRjaDkxODogZ2RiLWJ0cm9idXN0LnBhdGNoCiAjIEZpeCBjcmFzaCBvbiBv cHRpbWl6ZWQtb3V0IGVudHJ5IGRhdGEgdmFsdWVzIChCWiAxMTExOTEwKS4KIFBhdGNoOTE5OiBn ZGItZW50cnlkYXRhb3B0aW1pemVkb3V0LnBhdGNoCiAKKyMgUHl0aG9uIGNvbXBsZXRpb24gdy9v dmVycmlkZW4gY29tcGxldGVyIChTZXJnaW8gRHVyaWdhbiBKdW5pb3IsIEJaIDEwNzUxOTkpLgor UGF0Y2g5MjA6IGdkYi1weXRob24tY29tcGxldGVyLTFvZjIucGF0Y2gKK1BhdGNoOTIxOiBnZGIt cHl0aG9uLWNvbXBsZXRlci0yb2YyLnBhdGNoCisKICVpZiAwJXshP3JoZWw6MX0gfHwgMCV7P3Jo ZWx9ID4gNgogIyBSTF9TVEFURV9GRURPUkFfR0RCIHdvdWxkIG5vdCBiZSBmb3VuZCBmb3I6CiAj IFBhdGNoNjQyOiBnZGItcmVhZGxpbmU2Mi1hc2stbW9yZS1yaC5wYXRjaApAQCAtNzE1LDI5ICs2 OTcsNyBAQCBmaW5kIC1uYW1lICIqLmluZm8qInx4YXJncyBybSAtZgogJXBhdGNoMzQ5IC1wMQog I3BhdGNoMjMyIC1wMQogJXBhdGNoODg4IC1wMQotJXBhdGNoODg5IC1wMQotJXBhdGNoODkwIC1w MQotJXBhdGNoODkxIC1wMQogJXBhdGNoOTEyIC1wMQotJXBhdGNoODkyIC1wMQotJXBhdGNoODkz IC1wMQotJXBhdGNoODk0IC1wMQotJXBhdGNoODk1IC1wMQotJXBhdGNoODk2IC1wMQotJXBhdGNo ODk3IC1wMQotJXBhdGNoODk4IC1wMQotJXBhdGNoODk5IC1wMQotJXBhdGNoOTAwIC1wMQotJXBh dGNoOTAxIC1wMQotJXBhdGNoOTAyIC1wMQotJXBhdGNoOTAzIC1wMQotJXBhdGNoOTA0IC1wMQot JXBhdGNoOTA1IC1wMQotJXBhdGNoOTA2IC1wMQotJXBhdGNoOTA3IC1wMQotJXBhdGNoOTA4IC1w MQotJXBhdGNoOTA5IC1wMQotJXBhdGNoOTEwIC1wMQogJXBhdGNoMSAtcDEKIAogJXBhdGNoMTA1 IC1wMQpAQCAtODM5LDYgKzc5OSw4IEBAIGZpbmQgLW5hbWUgIiouaW5mbyoifHhhcmdzIHJtIC1m CiAlcGF0Y2g5MTQgLXAxCiAlcGF0Y2g5MTggLXAxCiAlcGF0Y2g5MTkgLXAxCislcGF0Y2g5MjAg LXAxCislcGF0Y2g5MjEgLXAxCiAKICVwYXRjaDg0OCAtcDEKICVpZiAwJXshP2VsNjoxfQpAQCAt OTYwLDkgKzkyMiw4IEBAICQoOiBwcGM2NCBob3N0IGJ1aWxkIGNyYXNoZXMgb24gcHBjIHZhcmlh bnQgb2YgbGliZXhwYXQuc28gKQlcCiAlZWxzZQogCS0tZGlzYWJsZS1pbnByb2Nlc3MtYWdlbnQJ CQkJXAogJWVuZGlmCi0kKDogJXtfYmluZGlyfS9tb25vLWdkYi5weSBpcyB3b3JrYXJvdW5kIGZv ciBtb25vIEJaIDgxNTUwMS4gKQkJCQkJCQkJCQlcCi0JICAgICAgLS13aXRoLWF1dG8tbG9hZC1k aXI9JyRkZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWQlez9zY2w6OiV7X3Jvb3RfZGF0YWRpcn0v Z2RiL2F1dG8tbG9hZH0nCQkJCVwKLQktLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD0nJGRlYnVn ZGlyOiRkYXRhZGlyL2F1dG8tbG9hZCV7P3NjbDo6JXtfcm9vdF9kYXRhZGlyfS9nZGIvYXV0by1s b2FkfTole19yb290X2JpbmRpcn0vbW9uby1nZGIucHknCVwKKwkgICAgICAtLXdpdGgtYXV0by1s b2FkLWRpcj0nJGRlYnVnZGlyOiRkYXRhZGlyL2F1dG8tbG9hZCV7P3NjbDo6JXtfcm9vdF9kYXRh ZGlyfS9nZGIvYXV0by1sb2FkfScJXAorCS0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPSckZGVi dWdkaXI6JGRhdGFkaXIvYXV0by1sb2FkJXs/c2NsOjole19yb290X2RhdGFkaXJ9L2dkYi9hdXRv LWxvYWR9JwlcCiAlaWZhcmNoIHNwYXJjIHNwYXJjdjkKIAlzcGFyYy0le192ZW5kb3J9LSV7X3Rh cmdldF9vc30lez9fZ251fQogJWVsc2UKQEAgLTEzMzAsNiArMTI5MSwxMSBAQCB0aGVuCiBmaQog CiAlY2hhbmdlbG9nCisqIFR1ZSBKdWwgIDggMjAxNCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4gLSA3LjcuOTAuMjAxNDA2MjctOS5mYzIxCistIFJlYmFzZSB0aGUg SW50ZWwgVkxBIHBhdGNoc2V0LgorLSBQeXRob24gY29tcGxldGlvbiB3L292ZXJyaWRlbiBjb21w bGV0ZXIgKFNlcmdpbyBEdXJpZ2FuIEp1bmlvciwgQlogMTA3NTE5OSkuCistIFJlbW92ZSAle19i aW5kaXJ9L21vbm8tZ2RiLnB5IHdvcmthcm91bmQgb2YgbW9ubyBCWiA4MTU1MDEuCisKICogVHVl IEp1bCAgMSAyMDE0IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAt IDcuNy45MC4yMDE0MDYyNy04LmZjMjEKIC0gRG8gbm90IHJlbW92ZSAle19kYXRhZGlyfS9nZGIv c3lzY2FsbHMvcHBjKi54bWwgYXMgaXQgaXMgc2Vjb25kYXJ5IHRhcmdldC4KIC0gUmVtb3ZlOiAl e19kYXRhZGlyfS9nZGIvZ3VpbGUK