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: Nikita Popov To: git-commits@fedoraproject.org Subject: [rpms/llvm] rawhide: Remove support for old LLVM versions Date: Fri, 25 Sep 2026 06:36:26 GMT Message-ID: <179031818630.1.10590922879815527483.rpms-llvm-d46ee69d9c9d@fedoraproject.org> List-ID: X-Git-Repo: rpms/llvm X-Git-Branch: rawhide X-Git-Rev: d46ee69d9c9db7f8ac2ff81adf0522fc2522a43a ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvbGx2bQogICAgICAgICAgICBCcmFuY2ggOiByYXdoaWRlCiAgICAgICAgICAg IENvbW1pdCA6IGQ0NmVlNjlkOWM5ZGI3ZjhhYzJmZjgxYWRmMDUyMmZjMjUyMmE0M2EKICAgICAg ICAgICAgQXV0aG9yIDogTmlraXRhIFBvcG92IDxucG9wb3ZAcmVkaGF0LmNvbT4KICAgICAgICAg ICAgRGF0ZSAgIDogMjAyNi0wOS0yNFQxNTowMTo1OSswMDowMAogICAgICAgICAgICBTdGF0cyAg OiArMTYvLTIzMDkgaW4gOSBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0dHBzOi8vc3Jj LmZlZG9yYXByb2plY3Qub3JnL3JwbXMvbGx2bS9jL2Q0NmVlNjlkOWM5ZGI3ZjhhYzJmZjgxYWRm MDUyMmZjMjUyMmE0M2E/YnJhbmNoPXJhd2hpZGUKCiAgICAgICAgICAgIExvZzoKICAgICAgICAg ICAgUmVtb3ZlIHN1cHBvcnQgZm9yIG9sZCBMTFZNIHZlcnNpb25zCgpUaGlzIGRyb3BzIHN1cHBv cnQgZm9yCiAqIGNvbXBhdF9tYWpfdmVyIDIxLCB3aGljaCBtZWFucyB3ZSBjYW4gZHJvcCBhbGwg dGhlIExMVk0gMjEgc3BlY2lmaWMKICAgcGF0Y2hlcywgYW5kCiAqIG1hal92ZXIgMjIsIHdoaWNo IG1lYW5zIHdlIGNhbiBkcm9wIHZhcmlvdXMgY29uZGl0aW9uYWxzLgoKSSBoYXZlIHJldGFpbmVk IG9uZSBkZWFkIGNvbmRpdGlvbmFsIGZvciB0aGUgYnVpbGRfZG9jcyB0b2dnbGUuIFRoZQpyZWFz b24gaXMgdGhhdCBwcmUtYnVpbHQgbWFuIHBhZ2VzIGFyZSBpbmNvbXBhdGlibGUgd2l0aCB0aGUK R0lUX1RSRUUgYnVpbGQgbW9kZS4gV2UnbGwgd2FudCB0byByZXRhaW4gKnNvbWUqIHN1cHBvcnQg Zm9yIG5vdApoYXZpbmcgcHJlLWJ1aWx0IG1hbiBwYWdlcyB0byBrZWVwIHRoYXQgd29ya2luZy4g SSdtIG5vdCB0b3VjaGluZwppdCBpbiB0aGlzIFBSIHRvIGtlZXAgdGhlIGNoYW5nZSBoZXJlIG1v c3RseSBtZWNoYW5pY2FsLgoKLS0tCmRpZmYgLS1naXQgYS8wMDAxLTIwLXBvbGx5LXNoYXJlZC1s aWJzLnBhdGNoIGIvMDAwMS0yMC1wb2xseS1zaGFyZWQtbGlicy5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggYjBjOTBkYS4uMDAwMDAwMAotLS0gYS8wMDAxLTIwLXBvbGx5LXNo YXJlZC1saWJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSBjZWNi OThmNTZlN2Q2NjE5ZDA0MjdmYmRiYzJmMjAwY2UyMTJmMGM2IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogS29ucmFkIEtsZWluZSA8a2tsZWluZUByZWRoYXQuY29tPgotRGF0ZTogVHVl LCAyOCBKYW4gMjAyNSAwODozNDowOSArMDAwMAotU3ViamVjdDogW1BBVENIXSBbcG9sbHldIHNo YXJlZCBsaWJzCi0KLS0tLQotIHBvbGx5L2NtYWtlL3BvbGx5X21hY3Jvcy5jbWFrZSAgICB8IDUg KysrKy0KLSBwb2xseS9saWIvQ01ha2VMaXN0cy50eHQgICAgICAgICAgfCAxICsKLSBwb2xseS9s aWIvRXh0ZXJuYWwvQ01ha2VMaXN0cy50eHQgfCAxICsKLSAzIGZpbGVzIGNoYW5nZWQsIDYgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcG9sbHkvY21ha2UvcG9s bHlfbWFjcm9zLmNtYWtlIGIvcG9sbHkvY21ha2UvcG9sbHlfbWFjcm9zLmNtYWtlCi1pbmRleCA5 YmQ3YjBiMGVhNTkuLmZjMmMzYTc2OTAxZiAxMDA2NDQKLS0tLSBhL3BvbGx5L2NtYWtlL3BvbGx5 X21hY3Jvcy5jbWFrZQotKysrIGIvcG9sbHkvY21ha2UvcG9sbHlfbWFjcm9zLmNtYWtlCi1AQCAt MSw1ICsxLDUgQEAKLSBtYWNybyhhZGRfcG9sbHlfbGlicmFyeSBuYW1lKQotLSAgY21ha2VfcGFy c2VfYXJndW1lbnRzKEFSRyAiIiAiIiAiIiAke0FSR059KQotKyAgY21ha2VfcGFyc2VfYXJndW1l bnRzKEFSRyAiU0hBUkVEIiAiIiAiIiAke0FSR059KQotICAgc2V0KHNyY3MgJHtBUkdfVU5QQVJT RURfQVJHVU1FTlRTfSkKLSAgIGlmKE1TVkNfSURFIE9SIFhDT0RFKQotICAgICBmaWxlKCBHTE9C X1JFQ1VSU0UgaGVhZGVycyAqLmggKi50ZCAqLmRlZikKLUBAIC0xNyw2ICsxNyw5IEBAIG1hY3Jv KGFkZF9wb2xseV9saWJyYXJ5IG5hbWUpCi0gICBlbHNlKCkKLSAgICAgc2V0KGxpYmtpbmQpCi0g ICBlbmRpZigpCi0rICBpZiAoQVJHX1NIQVJFRCkKLSsgICAgc2V0KGxpYmtpbmQgU0hBUkVEKQot KyAgZW5kaWYoKQotICAgYWRkX2xpYnJhcnkoICR7bmFtZX0gJHtsaWJraW5kfSAke3NyY3N9ICkK LSAgIHNldF90YXJnZXRfcHJvcGVydGllcygke25hbWV9IFBST1BFUlRJRVMgRk9MREVSICJQb2xs eS9MaWJyYXJpZXMiKQotIAotZGlmZiAtLWdpdCBhL3BvbGx5L2xpYi9DTWFrZUxpc3RzLnR4dCBi L3BvbGx5L2xpYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggZDkxZjRlY2QzN2U2Li45NjVmNjM1Yjdm ZjYgMTAwNjQ0Ci0tLS0gYS9wb2xseS9saWIvQ01ha2VMaXN0cy50eHQKLSsrKyBiL3BvbGx5L2xp Yi9DTWFrZUxpc3RzLnR4dAotQEAgLTQxLDYgKzQxLDcgQEAgc2V0KFBPTExZX0NPTVBPTkVOVFMK LSAjIHRoZSBzb3VyY2VzIHRoZW0gdG8gYmUgcmVjb21waWxlZCBmb3IgZWFjaCBvZiB0aGVtLgot IGFkZF9sbHZtX3Bhc3NfcGx1Z2luKFBvbGx5Ci0gICBOT19NT0RVTEUKLSsgIFNIQVJFRAotICAg U1VCUFJPSkVDVCBQb2xseQotICAgQW5hbHlzaXMvRGVwZW5kZW5jZUluZm8uY3BwCi0gICBBbmFs eXNpcy9Qb2x5aGVkcmFsSW5mby5jcHAKLWRpZmYgLS1naXQgYS9wb2xseS9saWIvRXh0ZXJuYWwv Q01ha2VMaXN0cy50eHQgYi9wb2xseS9saWIvRXh0ZXJuYWwvQ01ha2VMaXN0cy50eHQKLWluZGV4 IDVkZDY5YjcxOTlkYy4uZjA2NWZiZDdiOTQyIDEwMDY0NAotLS0tIGEvcG9sbHkvbGliL0V4dGVy bmFsL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9wb2xseS9saWIvRXh0ZXJuYWwvQ01ha2VMaXN0cy50 eHQKLUBAIC0yODQsNiArMjg0LDcgQEAgaWYgKFBPTExZX0JVTkRMRURfSVNMKQotICAgICApCi0g Ci0gICBhZGRfcG9sbHlfbGlicmFyeShQb2xseUlTTAotKyAgICBTSEFSRUQKLSAgICAgJHtJU0xf RklMRVN9Ci0gICAgICkKLSAKLS0tIAotMi40Ni4wCi0KCmRpZmYgLS1naXQgYS8wMDAxLUJQRi1T dXBwb3J0LUp1bXAtVGFibGUtMTQ5NzE1LnBhdGNoIGIvMDAwMS1CUEYtU3VwcG9ydC1KdW1wLVRh YmxlLTE0OTcxNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFjYmMxMi4u MDAwMDAwMAotLS0gYS8wMDAxLUJQRi1TdXBwb3J0LUp1bXAtVGFibGUtMTQ5NzE1LnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMTM1NCArMCwwIEBACi1Gcm9tIDUyOGJhZjQ3NDBhZWQ4NjQ0M2Uz MDQxZWIzYjYwNDQ5NjNmOTZlMWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiB5b25n aG9uZy1zb25nIDx5aHNAZmIuY29tPgotRGF0ZTogVHVlLCAxNiBTZXAgMjAyNSAwOToyNzowOCAt MDcwMAotU3ViamVjdDogW1BBVENIXSBbQlBGXSBTdXBwb3J0IEp1bXAgVGFibGUgKCMxNDk3MTUp Ci0KLUFkZCBqdW1wIHRhYmxlIChzd2l0Y2ggc3RhdGVtZW50IGFuZCBjb21wdXRlZCBnb3RvKSBz dXBwb3J0IGZvciBCUEYKLWJhY2tlbmQuCi1BIGBnb3RveCA8cmVnPmAgaW5zbiBpcyBpbXBsZW1l bnRlZCBhbmQgdGhlIGA8cmVnPmAgaG9sZHMgdGhlIHRhcmdldAotaW5zbiB3aGVyZSB0aGUgZ290 b3ggd2lsbCBnby4KLQotRm9yIGEgc3dpdGNoIHN0YXRlbWVudCBsaWtlCi1gYGAKLS4uLgotICAg ICAgICAgICAgc3dpdGNoIChjdHgtPngpIHsKLSAgICAgICAgICAgIGNhc2UgMTogcmV0X3VzZXIg PSAxODsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDIwOiByZXRfdXNlciA9IDY7IGJyZWFrOwot ICAgICAgICAgICAgY2FzZSAxNjogcmV0X3VzZXIgPSA5OyBicmVhazsKLSAgICAgICAgICAgIGNh c2UgNjogcmV0X3VzZXIgPSAxNjsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDg6IHJldF91c2Vy ID0gMTQ7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAzMDogcmV0X3VzZXIgPSAyOyBicmVhazsK LSAgICAgICAgICAgIGRlZmF1bHQ6IHJldF91c2VyID0gMTsgYnJlYWs7Ci0gICAgICAgICAgICB9 Ci0uLi4KLWBgYAotYW5kIHRoZSBmaW5hbCBiaW5hcnkKLWBgYAotICAgIFRoZSBmaW5hbCBiaW5h cnk6Ci0gICAgICAgNDogICAgICAgNjcgMDEgMDAgMDAgMDMgMDAgMDAgMDAgcjEgPDw9IDB4Mwot ICAgICAgIDU6ICAgICAgIDE4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw IDAwIDAwIHIyID0gMHgwIGxsCi0gICAgICAgICAgICAgICAgMDAwMDAwMDAwMDAwMDAyODogIFJf QlBGXzY0XzY0ICBCUEYuSlQuMC4wCi0gICAgICAgNzogICAgICAgMGYgMTIgMDAgMDAgMDAgMDAg MDAgMDAgcjIgKz0gcjEKLSAgICAgICAgLi4uCi0gICAgU3ltYm9sIHRhYmxlOgotICAgICA0OiAw MDAwMDAwMDAwMDAwMDAwICAgMjQwIE9CSkVDVCAgR0xPQkFMIERFRkFVTFQgICAgIDQgQlBGLkpU LjAuMAotICAgICA1OiAwMDAwMDAwMDAwMDAwMDAwICAgICA0IE9CSkVDVCAgR0xPQkFMIERFRkFV TFQgICAgIDYgcmV0X3VzZXIKLSAgICAgNjogMDAwMDAwMDAwMDAwMDAwMCAgICAgMCBOT1RZUEUg IEdMT0JBTCBERUZBVUxUICAgVU5EIGJhcgotICAgICA3OiAwMDAwMDAwMDAwMDAwMGYwICAgMjU2 IE9CSkVDVCAgR0xPQkFMIERFRkFVTFQgICAgIDQgQlBGLkpULjAuMQotICAgIGFuZAotICBbIDRd IC5qdW1wdGFibGVzICAgICAgIFBST0dCSVRTICAgICAgICAwMDAwMDAwMDAwMDAwMDAwIDAwMDFj OCAwMDAxZjAgMDAgICAgICAwICAgMCAgMQotYGBgCi1Ob3RlIHRoYXQgZm9yIHRoZSBhYm92ZSBl eGFtcGxlLCBgLW1sbHZtIC1icGYtbWluLWp1bXAtdGFibGUtZW50cmllcz01YAotc2hvdWxkIGJl IGluIGNvbXBpbGF0aW9uIGZsYWdzIGFzIHRoZSBjdXJyZW50IGRlZmF1bHQKLWJwZi1taW4tanVt cC10YWJsZS1lbnRyaWVzIGlzIDEzLiBGb3IgZXhhbXBsZS4KLWBgYAotY2xhbmcgLS10YXJnZXQ9 YnBmIC1tY3B1PXY0IC1PMiAtbWxsdm0gLWJwZi1taW4tanVtcC10YWJsZS1lbnRyaWVzPTUgLVMg LWcgdGVzdC5jCi1gYGAKLQotRm9yIGNvbXB1dGVkIGdvdG8gbGlrZQotYGBgCi0gICAgICBpbnQg Zm9vKGludCBhLCBpbnQgYikgewotICAgICAgICBfX2xhYmVsX18gbDEsIGwyLCBsMywgbDQ7Ci0g ICAgICAgIHZvaWQgKmp0MVtdID0ge1swXT0mJmwxLCBbMV09JiZsMn07Ci0gICAgICAgIHZvaWQg Kmp0MltdID0ge1swXT0mJmwzLCBbMV09JiZsNH07Ci0gICAgICAgIGludCByZXQgPSAwOwotCi0g ICAgICAgIGdvdG8gKmp0MVthICUgMl07Ci0gICAgICAgIGwxOiByZXQgKz0gMTsKLSAgICAgICAg bDI6IHJldCArPSAzOwotICAgICAgICBnb3RvICpqdDJbYiAlIDJdOwotICAgICAgICBsMzogcmV0 ICs9IDU7Ci0gICAgICAgIGw0OiByZXQgKz0gNzsKLSAgICAgICAgcmV0dXJuIHJldDsKLSAgICAg IH0KLWBgYAotVGhlIGZpbmFsIGJpbmFyeToKLWBgYAotICAgICAgMTI6ICAgICAgIGJmIDIzIDIw IDAwIDAwIDAwIDAwIDAwIHIzID0gKHMzMilyMgotICAgICAgMTM6ICAgICAgIDY3IDAzIDAwIDAw IDAzIDAwIDAwIDAwIHIzIDw8PSAweDMKLSAgICAgIDE0OiAgICAgICAxOCAwMiAwMCAwMCAwMCAw MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCByMiA9IDB4MCBsbAotICAgICAgICAgICAg ICAgIDAwMDAwMDAwMDAwMDAwNzA6ICBSX0JQRl82NF82NCAgQlBGLkpULjAuMAotICAgICAgMTY6 ICAgICAgIDBmIDMyIDAwIDAwIDAwIDAwIDAwIDAwIHIyICs9IHIzCi0gICAgICAxNzogICAgICAg YmYgMTEgMjAgMDAgMDAgMDAgMDAgMDAgcjEgPSAoczMyKXIxCi0gICAgICAxODogICAgICAgNjcg MDEgMDAgMDAgMDMgMDAgMDAgMDAgcjEgPDw9IDB4MwotICAgICAgMTk6ICAgICAgIDE4IDAzIDAw IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIHIzID0gMHgwIGxsCi0gICAg ICAgICAgICAgICAgMDAwMDAwMDAwMDAwMDA5ODogIFJfQlBGXzY0XzY0ICBCUEYuSlQuMC4xCi0g ICAgICAyMTogICAgICAgMGYgMTMgMDAgMDAgMDAgMDAgMDAgMDAgcjMgKz0gcjEKLQotICBbIDRd IC5qdW1wdGFibGVzICAgICAgIFBST0dCSVRTICAgICAgICAwMDAwMDAwMDAwMDAwMDAwIDAwMDE2 MCAwMDAwMjAgMDAgICAgICAwICAgMCAgMQotCi0gICAgIDQ6IDAwMDAwMDAwMDAwMDAwMDAgICAg MTYgT0JKRUNUICBHTE9CQUwgREVGQVVMVCAgICAgNCBCUEYuSlQuMC4wCi0gICAgIDU6IDAwMDAw MDAwMDAwMDAwMTAgICAgMTYgT0JKRUNUICBHTE9CQUwgREVGQVVMVCAgICAgNCBCUEYuSlQuMC4x Ci1gYGAKLQotQSBtb3JlIGNvbXBsaWNhdGVkIHRlc3Qgd2l0aCBib3RoIHN3aXRjaC1zdGF0ZW1l bnQgdHJpZ2dlcmVkIGp1bXAgdGFibGUKLWFuZCBjb21wdXRlIGdvdG9zOgotCi1gYGAKLSQgY2F0 IHRlc3QzLmMKLXN0cnVjdCBzaW1wbGVfY3R4IHsKLSAgICAgICAgaW50IHg7Ci0gICAgICAgIGlu dCB5OwotICAgICAgICBpbnQgejsKLX07Ci0KLWludCByZXRfdXNlciwgcmV0X3VzZXIyOwotdm9p ZCBiYXIodm9pZCk7Ci1pbnQgZm9vKHN0cnVjdCBzaW1wbGVfY3R4ICpjdHgsIHN0cnVjdCBzaW1w bGVfY3R4ICpjdHgyLCBpbnQgYSwgaW50IGIpCi17Ci0gICAgICAgIF9fbGFiZWxfXyBsMSwgbDIs IGwzLCBsNDsKLSAgICAgICAgdm9pZCAqanQxW10gPSB7WzBdPSYmbDEsIFsxXT0mJmwyfTsKLSAg ICAgICAgdm9pZCAqanQyW10gPSB7WzBdPSYmbDMsIFsxXT0mJmw0fTsKLSAgICAgICAgaW50IHJl dCA9IDA7Ci0KLSAgICAgICAgZ290byAqanQxW2EgJSAyXTsKLSAgICAgICAgbDE6IHJldCArPSAx OwotICAgICAgICBsMjogcmV0ICs9IDM7Ci0gICAgICAgIGdvdG8gKmp0MltiICUgMl07Ci0gICAg ICAgIGwzOiByZXQgKz0gNTsKLSAgICAgICAgbDQ6IHJldCArPSA3OwotCi0gICAgICAgIGJhcigp OwotCi0gICAgICAgIHN3aXRjaCAoY3R4LT54KSB7Ci0gICAgICAgIGNhc2UgMTogcmV0X3VzZXIg PSAxODsgYnJlYWs7Ci0gICAgICAgIGNhc2UgMjA6IHJldF91c2VyID0gNjsgYnJlYWs7Ci0gICAg ICAgIGNhc2UgMTY6IHJldF91c2VyID0gOTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgNjogcmV0X3Vz ZXIgPSAxNjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgODogcmV0X3VzZXIgPSAxNDsgYnJlYWs7Ci0g ICAgICAgIGNhc2UgMzA6IHJldF91c2VyID0gMjsgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6IHJl dF91c2VyID0gMTsgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcmV0OwotfQot YGBgCi1Db21waWxlIHdpdGgKLWBgYAotICBjbGFuZyAtLXRhcmdldD1icGYgLW1jcHU9djQgLU8y IC1TIHRlc3QzLmMKLSAgY2xhbmcgLS10YXJnZXQ9YnBmIC1tY3B1PXY0IC1PMiAtYyB0ZXN0My5j Ci1gYGAKLSAgVGhlIGJpbmFyeToKLWBgYAotICAgICAvKiBGb3IgY29tcHV0ZWQgZ290byAqLwot ICAgICAgMTM6ICAgICAgIGJmIDQyIDIwIDAwIDAwIDAwIDAwIDAwIHIyID0gKHMzMilyNAotICAg ICAgMTQ6ICAgICAgIDY3IDAyIDAwIDAwIDAzIDAwIDAwIDAwIHIyIDw8PSAweDMKLSAgICAgIDE1 OiAgICAgICAxOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBy MSA9IDB4MCBsbAotICAgICAgICAgICAgICAgIDAwMDAwMDAwMDAwMDAwNzg6ICBSX0JQRl82NF82 NCAgQlBGLkpULjAuMQotICAgICAgMTc6ICAgICAgIDBmIDIxIDAwIDAwIDAwIDAwIDAwIDAwIHIx ICs9IHIyCi0gICAgICAxODogICAgICAgYmYgMzIgMjAgMDAgMDAgMDAgMDAgMDAgcjIgPSAoczMy KXIzCi0gICAgICAxOTogICAgICAgNjcgMDIgMDAgMDAgMDMgMDAgMDAgMDAgcjIgPDw9IDB4Mwot ICAgICAgMjA6ICAgICAgIDE4IDAzIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw IDAwIDAwIHIzID0gMHgwIGxsCi0gICAgICAgICAgICAgICAgMDAwMDAwMDAwMDAwMDBhMDogIFJf QlBGXzY0XzY0ICBCUEYuSlQuMC4yCi0gICAgICAyMjogICAgICAgMGYgMjMgMDAgMDAgMDAgMDAg MDAgMDAgcjMgKz0gcjIKLQotICAgICAgLyogRm9yIHN3aXRjaCBzdGF0ZW1lbnQgKi8KLSAgICAg IDM5OiAgICAgICA2NyAwMSAwMCAwMCAwMyAwMCAwMCAwMCByMSA8PD0gMHgzCi0gICAgICA0MDog ICAgICAgMTggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgcjIg PSAweDAgbGwKLSAgICAgICAgICAgICAgICAwMDAwMDAwMDAwMDAwMTQwOiAgUl9CUEZfNjRfNjQg IEJQRi5KVC4wLjAKLSAgICAgIDQyOiAgICAgICAwZiAxMiAwMCAwMCAwMCAwMCAwMCAwMCByMiAr PSByMQotYGBgCi1Zb3UgY2FuIHNlZSBqdW1wIHRhYmxlIHN5bWJvbHMgYXJlIGFsbCBkaWZmZXJl bnQuCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGMzZmIyZTFjZWU5NTQzMzhhY2I4Mzk1 NWIxNTdlMGEyZTgyYTQ4NDkpCi0tLS0KLSAuLi4vbGliL1RhcmdldC9CUEYvQXNtUGFyc2VyL0JQ RkFzbVBhcnNlci5jcHAgfCAgIDEgKwotIGxsdm0vbGliL1RhcmdldC9CUEYvQlBGQXNtUHJpbnRl ci5jcHAgICAgICAgICB8IDExNCArKysrKysrKysrKy0tLQotIGxsdm0vbGliL1RhcmdldC9CUEYv QlBGQXNtUHJpbnRlci5oICAgICAgICAgICB8ICA0OCArKysrKysKLSBsbHZtL2xpYi9UYXJnZXQv QlBGL0JQRklTZWxMb3dlcmluZy5jcHAgICAgICAgfCAxNDMgKysrKysrKysrKysrKysrKystCi0g bGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZJU2VsTG93ZXJpbmcuaCAgICAgICAgIHwgICA4ICstCi0g bGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZJbnN0ckluZm8uY3BwICAgICAgICAgIHwgIDQ1ICsrKysr KwotIGxsdm0vbGliL1RhcmdldC9CUEYvQlBGSW5zdHJJbmZvLmggICAgICAgICAgICB8ICAgMyAr Ci0gbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZJbnN0ckluZm8udGQgICAgICAgICAgIHwgIDI2ICsr Ky0KLSBsbHZtL2xpYi9UYXJnZXQvQlBGL0JQRk1DSW5zdExvd2VyLmNwcCAgICAgICAgfCAgIDYg KwotIGxsdm0vbGliL1RhcmdldC9CUEYvQlBGTUNJbnN0TG93ZXIuaCAgICAgICAgICB8ICAgNiAr LQotIGxsdm0vbGliL1RhcmdldC9CUEYvQlBGU3VidGFyZ2V0LmNwcCAgICAgICAgICB8ICAgNCAr Ci0gbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZTdWJ0YXJnZXQuaCAgICAgICAgICAgIHwgICAzICst Ci0gLi4uL0JQRi9CUEZUYXJnZXRMb3dlcmluZ09iamVjdEZpbGUuY3BwICAgICAgIHwgIDE5ICsr KwotIC4uLi9UYXJnZXQvQlBGL0JQRlRhcmdldExvd2VyaW5nT2JqZWN0RmlsZS5oICB8ICAyNSAr KysKLSBsbHZtL2xpYi9UYXJnZXQvQlBGL0JQRlRhcmdldE1hY2hpbmUuY3BwICAgICAgfCAgIDMg Ky0KLSBsbHZtL2xpYi9UYXJnZXQvQlBGL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgfCAgIDEg KwotIGxsdm0vdGVzdC9Db2RlR2VuL0JQRi9qdW1wX3RhYmxlX2Jsb2NrYWRkci5sbCB8ICA5MSAr KysrKysrKysrKwotIC4uLi90ZXN0L0NvZGVHZW4vQlBGL2p1bXBfdGFibGVfZ2xvYmFsX3Zhci5s bCB8ICA4MyArKysrKysrKysrCi0gLi4uL0NvZGVHZW4vQlBGL2p1bXBfdGFibGVfc3dpdGNoX3N0 bXQubGwgICAgIHwgMTI2ICsrKysrKysrKysrKysrKwotIDE5IGZpbGVzIGNoYW5nZWQsIDcxNiBp bnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGx2bS9s aWIvVGFyZ2V0L0JQRi9CUEZBc21QcmludGVyLmgKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGx2bS9s aWIvVGFyZ2V0L0JQRi9CUEZUYXJnZXRMb3dlcmluZ09iamVjdEZpbGUuY3BwCi0gY3JlYXRlIG1v ZGUgMTAwNjQ0IGxsdm0vbGliL1RhcmdldC9CUEYvQlBGVGFyZ2V0TG93ZXJpbmdPYmplY3RGaWxl LmgKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGx2bS90ZXN0L0NvZGVHZW4vQlBGL2p1bXBfdGFibGVf YmxvY2thZGRyLmxsCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxsdm0vdGVzdC9Db2RlR2VuL0JQRi9q dW1wX3RhYmxlX2dsb2JhbF92YXIubGwKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGx2bS90ZXN0L0Nv ZGVHZW4vQlBGL2p1bXBfdGFibGVfc3dpdGNoX3N0bXQubGwKLQotZGlmZiAtLWdpdCBhL2xsdm0v bGliL1RhcmdldC9CUEYvQXNtUGFyc2VyL0JQRkFzbVBhcnNlci5jcHAgYi9sbHZtL2xpYi9UYXJn ZXQvQlBGL0FzbVBhcnNlci9CUEZBc21QYXJzZXIuY3BwCi1pbmRleCBhMzQ3Nzk0YTlhMzAuLmQ5 NmY0MDNkMmY4MSAxMDA2NDQKLS0tLSBhL2xsdm0vbGliL1RhcmdldC9CUEYvQXNtUGFyc2VyL0JQ RkFzbVBhcnNlci5jcHAKLSsrKyBiL2xsdm0vbGliL1RhcmdldC9CUEYvQXNtUGFyc2VyL0JQRkFz bVBhcnNlci5jcHAKLUBAIC0yMzQsNiArMjM0LDcgQEAgcHVibGljOgotICAgICAgICAgLkNhc2Uo ImNhbGx4IiwgdHJ1ZSkKLSAgICAgICAgIC5DYXNlKCJnb3RvIiwgdHJ1ZSkKLSAgICAgICAgIC5D YXNlKCJnb3RvbCIsIHRydWUpCi0rICAgICAgICAuQ2FzZSgiZ290b3giLCB0cnVlKQotICAgICAg ICAgLkNhc2UoIm1heV9nb3RvIiwgdHJ1ZSkKLSAgICAgICAgIC5DYXNlKCIqIiwgdHJ1ZSkKLSAg ICAgICAgIC5DYXNlKCJleGl0IiwgdHJ1ZSkKLWRpZmYgLS1naXQgYS9sbHZtL2xpYi9UYXJnZXQv QlBGL0JQRkFzbVByaW50ZXIuY3BwIGIvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZBc21QcmludGVy LmNwcAotaW5kZXggZTM4NDNlMGUxMTJlLi43N2RjNGE3NWE3ZDYgMTAwNjQ0Ci0tLS0gYS9sbHZt L2xpYi9UYXJnZXQvQlBGL0JQRkFzbVByaW50ZXIuY3BwCi0rKysgYi9sbHZtL2xpYi9UYXJnZXQv QlBGL0JQRkFzbVByaW50ZXIuY3BwCi1AQCAtMTEsNTIgKzExLDM1IEBACi0gLy8KLSAvLz09PS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS09PT0vLwotIAotKyNpbmNsdWRlICJCUEZBc21QcmludGVyLmgiCi0gI2luY2x1 ZGUgIkJQRi5oIgotICNpbmNsdWRlICJCUEZJbnN0ckluZm8uaCIKLSAjaW5jbHVkZSAiQlBGTUNJ bnN0TG93ZXIuaCIKLSAjaW5jbHVkZSAiQlRGRGVidWcuaCIKLSAjaW5jbHVkZSAiTUNUYXJnZXRE ZXNjL0JQRkluc3RQcmludGVyLmgiCi0gI2luY2x1ZGUgIlRhcmdldEluZm8vQlBGVGFyZ2V0SW5m by5oIgotKyNpbmNsdWRlICJsbHZtL0JpbmFyeUZvcm1hdC9FTEYuaCIKLSAjaW5jbHVkZSAibGx2 bS9Db2RlR2VuL0FzbVByaW50ZXIuaCIKLSAjaW5jbHVkZSAibGx2bS9Db2RlR2VuL01hY2hpbmVD b25zdGFudFBvb2wuaCIKLSAjaW5jbHVkZSAibGx2bS9Db2RlR2VuL01hY2hpbmVJbnN0ci5oIgot KyNpbmNsdWRlICJsbHZtL0NvZGVHZW4vTWFjaGluZUp1bXBUYWJsZUluZm8uaCIKLSAjaW5jbHVk ZSAibGx2bS9Db2RlR2VuL01hY2hpbmVNb2R1bGVJbmZvLmgiCi0rI2luY2x1ZGUgImxsdm0vQ29k ZUdlbi9UYXJnZXRMb3dlcmluZy5oIgotICNpbmNsdWRlICJsbHZtL0lSL01vZHVsZS5oIgotICNp bmNsdWRlICJsbHZtL01DL01DQXNtSW5mby5oIgotKyNpbmNsdWRlICJsbHZtL01DL01DRXhwci5o IgotICNpbmNsdWRlICJsbHZtL01DL01DSW5zdC5oIgotICNpbmNsdWRlICJsbHZtL01DL01DU3Ry ZWFtZXIuaCIKLSAjaW5jbHVkZSAibGx2bS9NQy9NQ1N5bWJvbC5oIgotKyNpbmNsdWRlICJsbHZt L01DL01DU3ltYm9sRUxGLmgiCi0gI2luY2x1ZGUgImxsdm0vTUMvVGFyZ2V0UmVnaXN0cnkuaCIK LSAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0NvbXBpbGVyLmgiCi0gI2luY2x1ZGUgImxsdm0vU3Vw cG9ydC9yYXdfb3N0cmVhbS5oIgotKyNpbmNsdWRlICJsbHZtL1RhcmdldC9UYXJnZXRMb3dlcmlu Z09iamVjdEZpbGUuaCIKLSB1c2luZyBuYW1lc3BhY2UgbGx2bTsKLSAKLSAjZGVmaW5lIERFQlVH X1RZUEUgImFzbS1wcmludGVyIgotIAotLW5hbWVzcGFjZSB7Ci0tY2xhc3MgQlBGQXNtUHJpbnRl ciA6IHB1YmxpYyBBc21QcmludGVyIHsKLS1wdWJsaWM6Ci0tICBleHBsaWNpdCBCUEZBc21Qcmlu dGVyKFRhcmdldE1hY2hpbmUgJlRNLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVu aXF1ZV9wdHI8TUNTdHJlYW1lcj4gU3RyZWFtZXIpCi0tICAgICAgOiBBc21QcmludGVyKFRNLCBz dGQ6Om1vdmUoU3RyZWFtZXIpLCBJRCksIEJURihudWxscHRyKSB7fQotLQotLSAgU3RyaW5nUmVm IGdldFBhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkJQRiBBc3NlbWJseSBQcmlu dGVyIjsgfQotLSAgYm9vbCBkb0luaXRpYWxpemF0aW9uKE1vZHVsZSAmTSkgb3ZlcnJpZGU7Ci0t ICB2b2lkIHByaW50T3BlcmFuZChjb25zdCBNYWNoaW5lSW5zdHIgKk1JLCBpbnQgT3BOdW0sIHJh d19vc3RyZWFtICZPKTsKLS0gIGJvb2wgUHJpbnRBc21PcGVyYW5kKGNvbnN0IE1hY2hpbmVJbnN0 ciAqTUksIHVuc2lnbmVkIE9wTm8sCi0tICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICpFeHRyYUNvZGUsIHJhd19vc3RyZWFtICZPKSBvdmVycmlkZTsKLS0gIGJvb2wgUHJpbnRBc21N ZW1vcnlPcGVyYW5kKGNvbnN0IE1hY2hpbmVJbnN0ciAqTUksIHVuc2lnbmVkIE9wTnVtLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqRXh0cmFDb2RlLCByYXdfb3N0 cmVhbSAmTykgb3ZlcnJpZGU7Ci0tCi0tICB2b2lkIGVtaXRJbnN0cnVjdGlvbihjb25zdCBNYWNo aW5lSW5zdHIgKk1JKSBvdmVycmlkZTsKLS0KLS0gIHN0YXRpYyBjaGFyIElEOwotLQotLXByaXZh dGU6Ci0tICBCVEZEZWJ1ZyAqQlRGOwotLX07Ci0tfSAvLyBuYW1lc3BhY2UKLS0KLSBib29sIEJQ RkFzbVByaW50ZXI6OmRvSW5pdGlhbGl6YXRpb24oTW9kdWxlICZNKSB7Ci0gICBBc21QcmludGVy Ojpkb0luaXRpYWxpemF0aW9uKE0pOwotIAotQEAgLTY5LDYgKzUyLDQ1IEBAIGJvb2wgQlBGQXNt UHJpbnRlcjo6ZG9Jbml0aWFsaXphdGlvbihNb2R1bGUgJk0pIHsKLSAgIHJldHVybiBmYWxzZTsK LSB9Ci0gCi0rY29uc3QgQlBGVGFyZ2V0TWFjaGluZSAmQlBGQXNtUHJpbnRlcjo6Z2V0QlRNKCkg Y29uc3QgewotKyAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEJQRlRhcmdldE1hY2hpbmUgJj4o VE0pOwotK30KLSsKLStib29sIEJQRkFzbVByaW50ZXI6OmRvRmluYWxpemF0aW9uKE1vZHVsZSAm TSkgewotKyAgLy8gUmVtb3ZlIHVudXNlZCBnbG9iYWxzIHdoaWNoIGFyZSBwcmV2aW91c2x5IHVz ZWQgZm9yIGp1bXAgdGFibGUuCi0rICBjb25zdCBCUEZTdWJ0YXJnZXQgKlN1YnRhcmdldCA9IGdl dEJUTSgpLmdldFN1YnRhcmdldEltcGwoKTsKLSsgIGlmIChTdWJ0YXJnZXQtPmhhc0dvdG94KCkp IHsKLSsgICAgc3RkOjp2ZWN0b3I8R2xvYmFsVmFyaWFibGUgKj4gVGFyZ2V0czsKLSsgICAgZm9y IChHbG9iYWxWYXJpYWJsZSAmR2xvYmFsIDogTS5nbG9iYWxzKCkpIHsKLSsgICAgICBpZiAoR2xv YmFsLmdldExpbmthZ2UoKSAhPSBHbG9iYWxWYWx1ZTo6UHJpdmF0ZUxpbmthZ2UpCi0rICAgICAg ICBjb250aW51ZTsKLSsgICAgICBpZiAoIUdsb2JhbC5pc0NvbnN0YW50KCkgfHwgIUdsb2JhbC5o YXNJbml0aWFsaXplcigpKQotKyAgICAgICAgY29udGludWU7Ci0rCi0rICAgICAgQ29uc3RhbnQg KkNWID0gZHluX2Nhc3Q8Q29uc3RhbnQ+KEdsb2JhbC5nZXRJbml0aWFsaXplcigpKTsKLSsgICAg ICBpZiAoIUNWKQotKyAgICAgICAgY29udGludWU7Ci0rICAgICAgQ29uc3RhbnRBcnJheSAqQ0Eg PSBkeW5fY2FzdDxDb25zdGFudEFycmF5PihDVik7Ci0rICAgICAgaWYgKCFDQSkKLSsgICAgICAg IGNvbnRpbnVlOwotKwotKyAgICAgIGZvciAodW5zaWduZWQgaSA9IDEsIGUgPSBDQS0+Z2V0TnVt T3BlcmFuZHMoKTsgaSAhPSBlOyArK2kpIHsKLSsgICAgICAgIGlmICghZHluX2Nhc3Q8QmxvY2tB ZGRyZXNzPihDQS0+Z2V0T3BlcmFuZChpKSkpCi0rICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAg IH0KLSsgICAgICBUYXJnZXRzLnB1c2hfYmFjaygmR2xvYmFsKTsKLSsgICAgfQotKwotKyAgICBm b3IgKEdsb2JhbFZhcmlhYmxlICpHViA6IFRhcmdldHMpIHsKLSsgICAgICBHVi0+cmVwbGFjZUFs bFVzZXNXaXRoKFBvaXNvblZhbHVlOjpnZXQoR1YtPmdldFR5cGUoKSkpOwotKyAgICAgIEdWLT5k cm9wQWxsUmVmZXJlbmNlcygpOwotKyAgICAgIEdWLT5lcmFzZUZyb21QYXJlbnQoKTsKLSsgICAg fQotKyAgfQotKwotKyAgcmV0dXJuIEFzbVByaW50ZXI6OmRvRmluYWxpemF0aW9uKE0pOwotK30K LSsKLSB2b2lkIEJQRkFzbVByaW50ZXI6OnByaW50T3BlcmFuZChjb25zdCBNYWNoaW5lSW5zdHIg Kk1JLCBpbnQgT3BOdW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3X29z dHJlYW0gJk8pIHsKLSAgIGNvbnN0IE1hY2hpbmVPcGVyYW5kICZNTyA9IE1JLT5nZXRPcGVyYW5k KE9wTnVtKTsKLUBAIC0xNTAsNiArMTcyLDUwIEBAIHZvaWQgQlBGQXNtUHJpbnRlcjo6ZW1pdElu c3RydWN0aW9uKGNvbnN0IE1hY2hpbmVJbnN0ciAqTUkpIHsKLSAgIEVtaXRUb1N0cmVhbWVyKCpP dXRTdHJlYW1lciwgVG1wSW5zdCk7Ci0gfQotIAotK01DU3ltYm9sICpCUEZBc21QcmludGVyOjpn ZXRKVFB1YmxpY1N5bWJvbCh1bnNpZ25lZCBKVEkpIHsKLSsgIFNtYWxsU3RyaW5nPDYwPiBOYW1l OwotKyAgcmF3X3N2ZWN0b3Jfb3N0cmVhbShOYW1lKQotKyAgICAgIDw8ICJCUEYuSlQuIiA8PCBN Ri0+Z2V0RnVuY3Rpb25OdW1iZXIoKSA8PCAnLicgPDwgSlRJOwotKyAgTUNTeW1ib2wgKlMgPSBP dXRDb250ZXh0LmdldE9yQ3JlYXRlU3ltYm9sKE5hbWUpOwotKyAgaWYgKGF1dG8gKkVTID0gc3Rh dGljX2Nhc3Q8TUNTeW1ib2xFTEYgKj4oUykpIHsKLSsgICAgRVMtPnNldEJpbmRpbmcoRUxGOjpT VEJfR0xPQkFMKTsKLSsgICAgRVMtPnNldFR5cGUoRUxGOjpTVFRfT0JKRUNUKTsKLSsgIH0KLSsg IHJldHVybiBTOwotK30KLSsKLSt2b2lkIEJQRkFzbVByaW50ZXI6OmVtaXRKdW1wVGFibGVJbmZv KCkgewotKyAgY29uc3QgTWFjaGluZUp1bXBUYWJsZUluZm8gKk1KVEkgPSBNRi0+Z2V0SnVtcFRh YmxlSW5mbygpOwotKyAgaWYgKCFNSlRJKQotKyAgICByZXR1cm47Ci0rCi0rICBjb25zdCBzdGQ6 OnZlY3RvcjxNYWNoaW5lSnVtcFRhYmxlRW50cnk+ICZKVCA9IE1KVEktPmdldEp1bXBUYWJsZXMo KTsKLSsgIGlmIChKVC5lbXB0eSgpKQotKyAgICByZXR1cm47Ci0rCi0rICBjb25zdCBUYXJnZXRM b3dlcmluZ09iamVjdEZpbGUgJlRMT0YgPSBnZXRPYmpGaWxlTG93ZXJpbmcoKTsKLSsgIGNvbnN0 IEZ1bmN0aW9uICZGID0gTUYtPmdldEZ1bmN0aW9uKCk7Ci0rICBNQ1NlY3Rpb24gKkpUUyA9IFRM T0YuZ2V0U2VjdGlvbkZvckp1bXBUYWJsZShGLCBUTSk7Ci0rICBhc3NlcnQoTUpUSS0+Z2V0RW50 cnlLaW5kKCkgPT0gTWFjaGluZUp1bXBUYWJsZUluZm86OkVLX0Jsb2NrQWRkcmVzcyk7Ci0rICB1 bnNpZ25lZCBFbnRyeVNpemUgPSBNSlRJLT5nZXRFbnRyeVNpemUoZ2V0RGF0YUxheW91dCgpKTsK LSsgIE91dFN0cmVhbWVyLT5zd2l0Y2hTZWN0aW9uKEpUUyk7Ci0rICBmb3IgKHVuc2lnbmVkIEpU SSA9IDA7IEpUSSA8IEpULnNpemUoKTsgSlRJKyspIHsKLSsgICAgQXJyYXlSZWY8TWFjaGluZUJh c2ljQmxvY2sgKj4gSlRCQnMgPSBKVFtKVEldLk1CQnM7Ci0rICAgIGlmIChKVEJCcy5lbXB0eSgp KQotKyAgICAgIGNvbnRpbnVlOwotKwotKyAgICBNQ1N5bWJvbCAqSlRTdGFydCA9IGdldEpUUHVi bGljU3ltYm9sKEpUSSk7Ci0rICAgIE91dFN0cmVhbWVyLT5lbWl0TGFiZWwoSlRTdGFydCk7Ci0r ICAgIGZvciAoY29uc3QgTWFjaGluZUJhc2ljQmxvY2sgKk1CQiA6IEpUQkJzKSB7Ci0rICAgICAg Y29uc3QgTUNFeHByICpMSFMgPSBNQ1N5bWJvbFJlZkV4cHI6OmNyZWF0ZShNQkItPmdldFN5bWJv bCgpLCBPdXRDb250ZXh0KTsKLSsgICAgICBPdXRTdHJlYW1lci0+ZW1pdFZhbHVlKExIUywgRW50 cnlTaXplKTsKLSsgICAgfQotKyAgICBjb25zdCBNQ0V4cHIgKkpUU2l6ZSA9Ci0rICAgICAgICBN Q0NvbnN0YW50RXhwcjo6Y3JlYXRlKEpUQkJzLnNpemUoKSAqIEVudHJ5U2l6ZSwgT3V0Q29udGV4 dCk7Ci0rICAgIE91dFN0cmVhbWVyLT5lbWl0RUxGU2l6ZShKVFN0YXJ0LCBKVFNpemUpOwotKyAg fQotK30KLSsKLSBjaGFyIEJQRkFzbVByaW50ZXI6OklEID0gMDsKLSAKLSBJTklUSUFMSVpFX1BB U1MoQlBGQXNtUHJpbnRlciwgImJwZi1hc20tcHJpbnRlciIsICJCUEYgQXNzZW1ibHkgUHJpbnRl ciIsIGZhbHNlLAotZGlmZiAtLWdpdCBhL2xsdm0vbGliL1RhcmdldC9CUEYvQlBGQXNtUHJpbnRl ci5oIGIvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZBc21QcmludGVyLmgKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAuLjBjZmIyODM5YzhmZgotLS0tIC9kZXYvbnVsbAot KysrIGIvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZBc21QcmludGVyLmgKLUBAIC0wLDAgKzEsNDgg QEAKLSsvLz09PS0tIEJQRkZyYW1lTG93ZXJpbmcuaCAtIERlZmluZSBmcmFtZSBsb3dlcmluZyBm b3IgQlBGIC0tLS0tKi0gQysrIC0qLS09PT0vLwotKy8vCi0rLy8gUGFydCBvZiB0aGUgTExWTSBQ cm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9u cy4KLSsvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZv cm1hdGlvbi4KLSsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExM Vk0tZXhjZXB0aW9uCi0rLy8KLSsvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotKwotKyNpZm5kZWYg TExWTV9MSUJfVEFSR0VUX0JQRl9CUEZBU01QUklOVEVSX0gKLSsjZGVmaW5lIExMVk1fTElCX1RB UkdFVF9CUEZfQlBGQVNNUFJJTlRFUl9ICi0rCi0rI2luY2x1ZGUgIkJQRlRhcmdldE1hY2hpbmUu aCIKLSsjaW5jbHVkZSAiQlRGRGVidWcuaCIKLSsjaW5jbHVkZSAibGx2bS9Db2RlR2VuL0FzbVBy aW50ZXIuaCIKLSsKLStuYW1lc3BhY2UgbGx2bSB7Ci0rCi0rY2xhc3MgQlBGQXNtUHJpbnRlciA6 IHB1YmxpYyBBc21QcmludGVyIHsKLStwdWJsaWM6Ci0rICBleHBsaWNpdCBCUEZBc21QcmludGVy KFRhcmdldE1hY2hpbmUgJlRNLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1 ZV9wdHI8TUNTdHJlYW1lcj4gU3RyZWFtZXIpCi0rICAgICAgOiBBc21QcmludGVyKFRNLCBzdGQ6 Om1vdmUoU3RyZWFtZXIpLCBJRCksIEJURihudWxscHRyKSwgVE0oVE0pIHt9Ci0rCi0rICBTdHJp bmdSZWYgZ2V0UGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiQlBGIEFzc2VtYmx5 IFByaW50ZXIiOyB9Ci0rICBib29sIGRvSW5pdGlhbGl6YXRpb24oTW9kdWxlICZNKSBvdmVycmlk ZTsKLSsgIGJvb2wgZG9GaW5hbGl6YXRpb24oTW9kdWxlICZNKSBvdmVycmlkZTsKLSsgIHZvaWQg cHJpbnRPcGVyYW5kKGNvbnN0IE1hY2hpbmVJbnN0ciAqTUksIGludCBPcE51bSwgcmF3X29zdHJl YW0gJk8pOwotKyAgYm9vbCBQcmludEFzbU9wZXJhbmQoY29uc3QgTWFjaGluZUluc3RyICpNSSwg dW5zaWduZWQgT3BObywKLSsgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKkV4dHJh Q29kZSwgcmF3X29zdHJlYW0gJk8pIG92ZXJyaWRlOwotKyAgYm9vbCBQcmludEFzbU1lbW9yeU9w ZXJhbmQoY29uc3QgTWFjaGluZUluc3RyICpNSSwgdW5zaWduZWQgT3BOdW0sCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpFeHRyYUNvZGUsIHJhd19vc3RyZWFtICZP KSBvdmVycmlkZTsKLSsKLSsgIHZvaWQgZW1pdEluc3RydWN0aW9uKGNvbnN0IE1hY2hpbmVJbnN0 ciAqTUkpIG92ZXJyaWRlOwotKyAgTUNTeW1ib2wgKmdldEpUUHVibGljU3ltYm9sKHVuc2lnbmVk IEpUSSk7Ci0rICB2aXJ0dWFsIHZvaWQgZW1pdEp1bXBUYWJsZUluZm8oKSBvdmVycmlkZTsKLSsK LSsgIHN0YXRpYyBjaGFyIElEOwotKwotK3ByaXZhdGU6Ci0rICBCVEZEZWJ1ZyAqQlRGOwotKyAg VGFyZ2V0TWFjaGluZSAmVE07Ci0rCi0rICBjb25zdCBCUEZUYXJnZXRNYWNoaW5lICZnZXRCVE0o KSBjb25zdDsKLSt9OwotKwotK30gLy8gbmFtZXNwYWNlIGxsdm0KLSsKLSsjZW5kaWYgLyogTExW TV9MSUJfVEFSR0VUX0JQRl9CUEZBU01QUklOVEVSX0ggKi8KLWRpZmYgLS1naXQgYS9sbHZtL2xp Yi9UYXJnZXQvQlBGL0JQRklTZWxMb3dlcmluZy5jcHAgYi9sbHZtL2xpYi9UYXJnZXQvQlBGL0JQ RklTZWxMb3dlcmluZy5jcHAKLWluZGV4IGY0ZjQxNGQxOTJkZi4uNmU1NTIwYzNkYmIxIDEwMDY0 NAotLS0tIGEvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZJU2VsTG93ZXJpbmcuY3BwCi0rKysgYi9s bHZtL2xpYi9UYXJnZXQvQlBGL0JQRklTZWxMb3dlcmluZy5jcHAKLUBAIC0xOCw2ICsxOCw3IEBA Ci0gI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9NYWNoaW5lRnJhbWVJbmZvLmgiCi0gI2luY2x1ZGUg Imxsdm0vQ29kZUdlbi9NYWNoaW5lRnVuY3Rpb24uaCIKLSAjaW5jbHVkZSAibGx2bS9Db2RlR2Vu L01hY2hpbmVJbnN0ckJ1aWxkZXIuaCIKLSsjaW5jbHVkZSAibGx2bS9Db2RlR2VuL01hY2hpbmVK dW1wVGFibGVJbmZvLmgiCi0gI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9NYWNoaW5lUmVnaXN0ZXJJ bmZvLmgiCi0gI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9UYXJnZXRMb3dlcmluZ09iamVjdEZpbGVJ bXBsLmgiCi0gI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9WYWx1ZVR5cGVzLmgiCi1AQCAtMzgsNiAr MzksMTAgQEAgc3RhdGljIGNsOjpvcHQ8Ym9vbD4gQlBGRXhwYW5kTWVtY3B5SW5PcmRlcigiYnBm LWV4cGFuZC1tZW1jcHktaW4tb3JkZXIiLAotICAgY2w6OkhpZGRlbiwgY2w6OmluaXQoZmFsc2Up LAotICAgY2w6OmRlc2MoIkV4cGFuZCBtZW1jcHkgaW50byBsb2FkL3N0b3JlIHBhaXJzIGluIG9y ZGVyIikpOwotIAotK3N0YXRpYyBjbDo6b3B0PHVuc2lnbmVkPiBCUEZNaW5pbXVtSnVtcFRhYmxl RW50cmllcygKLSsgICAgImJwZi1taW4tanVtcC10YWJsZS1lbnRyaWVzIiwgY2w6OmluaXQoMTMp LCBjbDo6SGlkZGVuLAotKyAgICBjbDo6ZGVzYygiU2V0IG1pbmltdW0gbnVtYmVyIG9mIGVudHJp ZXMgdG8gdXNlIGEganVtcCB0YWJsZSBvbiBCUEYiKSk7Ci0rCi0gc3RhdGljIHZvaWQgZmFpbChj b25zdCBTRExvYyAmREwsIFNlbGVjdGlvbkRBRyAmREFHLCBjb25zdCBUd2luZSAmTXNnLAotICAg ICAgICAgICAgICAgICAgU0RWYWx1ZSBWYWwgPSB7fSkgewotICAgc3RkOjpzdHJpbmcgU3RyOwot QEAgLTY3LDEyICs3MiwxNiBAQCBCUEZUYXJnZXRMb3dlcmluZzo6QlBGVGFyZ2V0TG93ZXJpbmco Y29uc3QgVGFyZ2V0TWFjaGluZSAmVE0sCi0gCi0gICBzZXRPcGVyYXRpb25BY3Rpb24oSVNEOjpC Ul9DQywgTVZUOjppNjQsIEN1c3RvbSk7Ci0gICBzZXRPcGVyYXRpb25BY3Rpb24oSVNEOjpCUl9K VCwgTVZUOjpPdGhlciwgRXhwYW5kKTsKLS0gIHNldE9wZXJhdGlvbkFjdGlvbihJU0Q6OkJSSU5E LCBNVlQ6Ok90aGVyLCBFeHBhbmQpOwotICAgc2V0T3BlcmF0aW9uQWN0aW9uKElTRDo6QlJDT05E LCBNVlQ6Ok90aGVyLCBFeHBhbmQpOwotIAotKyAgaWYgKCFTVEkuaGFzR290b3goKSkKLSsgICAg c2V0T3BlcmF0aW9uQWN0aW9uKElTRDo6QlJJTkQsIE1WVDo6T3RoZXIsIEV4cGFuZCk7Ci0rCi0g ICBzZXRPcGVyYXRpb25BY3Rpb24oSVNEOjpUUkFQLCBNVlQ6Ok90aGVyLCBDdXN0b20pOwotIAot ICAgc2V0T3BlcmF0aW9uQWN0aW9uKHtJU0Q6Okdsb2JhbEFkZHJlc3MsIElTRDo6Q29uc3RhbnRQ b29sfSwgTVZUOjppNjQsIEN1c3RvbSk7Ci0rICBpZiAoU1RJLmhhc0dvdG94KCkpCi0rICAgIHNl dE9wZXJhdGlvbkFjdGlvbih7SVNEOjpKdW1wVGFibGUsIElTRDo6QmxvY2tBZGRyZXNzfSwgTVZU OjppNjQsIEN1c3RvbSk7Ci0gCi0gICBzZXRPcGVyYXRpb25BY3Rpb24oSVNEOjpEWU5BTUlDX1NU QUNLQUxMT0MsIE1WVDo6aTY0LCBDdXN0b20pOwotICAgc2V0T3BlcmF0aW9uQWN0aW9uKElTRDo6 U1RBQ0tTQVZFLCBNVlQ6Ok90aGVyLCBFeHBhbmQpOwotQEAgLTE1OSw2ICsxNjgsNyBAQCBCUEZU YXJnZXRMb3dlcmluZzo6QlBGVGFyZ2V0TG93ZXJpbmcoY29uc3QgVGFyZ2V0TWFjaGluZSAmVE0s Ci0gCi0gICBzZXRCb29sZWFuQ29udGVudHMoWmVyb09yT25lQm9vbGVhbkNvbnRlbnQpOwotICAg c2V0TWF4QXRvbWljU2l6ZUluQml0c1N1cHBvcnRlZCg2NCk7Ci0rICBzZXRNaW5pbXVtSnVtcFRh YmxlRW50cmllcyhCUEZNaW5pbXVtSnVtcFRhYmxlRW50cmllcyk7Ci0gCi0gICAvLyBGdW5jdGlv biBhbGlnbm1lbnRzCi0gICBzZXRNaW5GdW5jdGlvbkFsaWdubWVudChBbGlnbig4KSk7Ci1AQCAt MjQ2LDYgKzI1NiwxMCBAQCBib29sIEJQRlRhcmdldExvd2VyaW5nOjppc1pFeHRGcmVlKFNEVmFs dWUgVmFsLCBFVlQgVlQyKSBjb25zdCB7Ci0gICByZXR1cm4gVGFyZ2V0TG93ZXJpbmdCYXNlOjpp c1pFeHRGcmVlKFZhbCwgVlQyKTsKLSB9Ci0gCi0rdW5zaWduZWQgQlBGVGFyZ2V0TG93ZXJpbmc6 OmdldEp1bXBUYWJsZUVuY29kaW5nKCkgY29uc3QgewotKyAgcmV0dXJuIE1hY2hpbmVKdW1wVGFi bGVJbmZvOjpFS19CbG9ja0FkZHJlc3M7Ci0rfQotKwotIEJQRlRhcmdldExvd2VyaW5nOjpDb25z dHJhaW50VHlwZQotIEJQRlRhcmdldExvd2VyaW5nOjpnZXRDb25zdHJhaW50VHlwZShTdHJpbmdS ZWYgQ29uc3RyYWludCkgY29uc3QgewotICAgaWYgKENvbnN0cmFpbnQuc2l6ZSgpID09IDEpIHsK LUBAIC0zMTYsMTAgKzMzMCwxNCBAQCBTRFZhbHVlIEJQRlRhcmdldExvd2VyaW5nOjpMb3dlck9w ZXJhdGlvbihTRFZhbHVlIE9wLCBTZWxlY3Rpb25EQUcgJkRBRykgY29uc3QgewotICAgICByZXBv cnRfZmF0YWxfZXJyb3IoInVuaW1wbGVtZW50ZWQgb3Bjb2RlOiAiICsgVHdpbmUoT3AuZ2V0T3Bj b2RlKCkpKTsKLSAgIGNhc2UgSVNEOjpCUl9DQzoKLSAgICAgcmV0dXJuIExvd2VyQlJfQ0MoT3As IERBRyk7Ci0rICBjYXNlIElTRDo6SnVtcFRhYmxlOgotKyAgICByZXR1cm4gTG93ZXJKdW1wVGFi bGUoT3AsIERBRyk7Ci0gICBjYXNlIElTRDo6R2xvYmFsQWRkcmVzczoKLSAgICAgcmV0dXJuIExv d2VyR2xvYmFsQWRkcmVzcyhPcCwgREFHKTsKLSAgIGNhc2UgSVNEOjpDb25zdGFudFBvb2w6Ci0g ICAgIHJldHVybiBMb3dlckNvbnN0YW50UG9vbChPcCwgREFHKTsKLSsgIGNhc2UgSVNEOjpCbG9j a0FkZHJlc3M6Ci0rICAgIHJldHVybiBMb3dlckJsb2NrQWRkcmVzcyhPcCwgREFHKTsKLSAgIGNh c2UgSVNEOjpTRUxFQ1RfQ0M6Ci0gICAgIHJldHVybiBMb3dlclNFTEVDVF9DQyhPcCwgREFHKTsK LSAgIGNhc2UgSVNEOjpTRElWOgotQEAgLTc4MCw2ICs3OTgsMTEgQEAgU0RWYWx1ZSBCUEZUYXJn ZXRMb3dlcmluZzo6TG93ZXJUUkFQKFNEVmFsdWUgT3AsIFNlbGVjdGlvbkRBRyAmREFHKSBjb25z dCB7Ci0gICByZXR1cm4gTG93ZXJDYWxsKENMSSwgSW5WYWxzKTsKLSB9Ci0gCi0rU0RWYWx1ZSBC UEZUYXJnZXRMb3dlcmluZzo6TG93ZXJKdW1wVGFibGUoU0RWYWx1ZSBPcCwgU2VsZWN0aW9uREFH ICZEQUcpIGNvbnN0IHsKLSsgIEp1bXBUYWJsZVNETm9kZSAqTiA9IGNhc3Q8SnVtcFRhYmxlU0RO b2RlPihPcCk7Ci0rICByZXR1cm4gZ2V0QWRkcihOLCBEQUcpOwotK30KLSsKLSBjb25zdCBjaGFy ICpCUEZUYXJnZXRMb3dlcmluZzo6Z2V0VGFyZ2V0Tm9kZU5hbWUodW5zaWduZWQgT3Bjb2RlKSBj b25zdCB7Ci0gICBzd2l0Y2ggKChCUEZJU0Q6Ok5vZGVUeXBlKU9wY29kZSkgewotICAgY2FzZSBC UEZJU0Q6OkZJUlNUX05VTUJFUjoKLUBAIC04MDAsMTcgKzgyMywxNyBAQCBjb25zdCBjaGFyICpC UEZUYXJnZXRMb3dlcmluZzo6Z2V0VGFyZ2V0Tm9kZU5hbWUodW5zaWduZWQgT3Bjb2RlKSBjb25z dCB7Ci0gICByZXR1cm4gbnVsbHB0cjsKLSB9Ci0gCi0tc3RhdGljIFNEVmFsdWUgZ2V0VGFyZ2V0 Tm9kZShHbG9iYWxBZGRyZXNzU0ROb2RlICpOLCBjb25zdCBTRExvYyAmREwsIEVWVCBUeSwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkRBRyAmREFHLCB1bnNpZ25lZCBG bGFncykgewotLSAgcmV0dXJuIERBRy5nZXRUYXJnZXRHbG9iYWxBZGRyZXNzKE4tPmdldEdsb2Jh bCgpLCBETCwgVHksIDAsIEZsYWdzKTsKLS19Ci0tCi0gc3RhdGljIFNEVmFsdWUgZ2V0VGFyZ2V0 Tm9kZShDb25zdGFudFBvb2xTRE5vZGUgKk4sIGNvbnN0IFNETG9jICZETCwgRVZUIFR5LAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uREFHICZEQUcsIHVuc2lnbmVkIEZs YWdzKSB7Ci0gICByZXR1cm4gREFHLmdldFRhcmdldENvbnN0YW50UG9vbChOLT5nZXRDb25zdFZh bCgpLCBUeSwgTi0+Z2V0QWxpZ24oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE4tPmdldE9mZnNldCgpLCBGbGFncyk7Ci0gfQotIAotK3N0YXRpYyBTRFZhbHVlIGdldFRh cmdldE5vZGUoSnVtcFRhYmxlU0ROb2RlICpOLCBjb25zdCBTRExvYyAmREwsIEVWVCBUeSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkRBRyAmREFHLCB1bnNpZ25lZCBG bGFncykgewotKyAgcmV0dXJuIERBRy5nZXRUYXJnZXRKdW1wVGFibGUoTi0+Z2V0SW5kZXgoKSwg VHksIEZsYWdzKTsKLSt9Ci0rCi0gdGVtcGxhdGUgPGNsYXNzIE5vZGVUeT4KLSBTRFZhbHVlIEJQ RlRhcmdldExvd2VyaW5nOjpnZXRBZGRyKE5vZGVUeSAqTiwgU2VsZWN0aW9uREFHICZEQUcsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBGbGFncykgY29uc3Qg ewotQEAgLTgyNyw3ICs4NTAsMTUgQEAgU0RWYWx1ZSBCUEZUYXJnZXRMb3dlcmluZzo6TG93ZXJH bG9iYWxBZGRyZXNzKFNEVmFsdWUgT3AsCi0gICBpZiAoTi0+Z2V0T2Zmc2V0KCkgIT0gMCkKLSAg ICAgcmVwb3J0X2ZhdGFsX2Vycm9yKCJpbnZhbGlkIG9mZnNldCBmb3IgZ2xvYmFsIGFkZHJlc3M6 ICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgVHdpbmUoTi0+Z2V0T2Zmc2V0KCkpKTsKLS0g IHJldHVybiBnZXRBZGRyKE4sIERBRyk7Ci0rCi0rICBjb25zdCBHbG9iYWxWYWx1ZSAqR1ZhbCA9 IE4tPmdldEdsb2JhbCgpOwotKyAgU0RMb2MgREwoT3ApOwotKwotKyAgLy8gV3JhcCBpdCBpbiBh IFRhcmdldEdsb2JhbEFkZHJlc3MKLSsgIFNEVmFsdWUgQWRkciA9IERBRy5nZXRUYXJnZXRHbG9i YWxBZGRyZXNzKEdWYWwsIERMLCBNVlQ6Omk2NCk7Ci0rCi0rICAvLyBFbWl0IHBzZXVkbyBpbnN0 cnVjdGlvbgotKyAgcmV0dXJuIFNEVmFsdWUoREFHLmdldE1hY2hpbmVOb2RlKEJQRjo6TERJTU02 NCwgREwsIE1WVDo6aTY0LCBBZGRyKSwgMCk7Ci0gfQotIAotIFNEVmFsdWUgQlBGVGFyZ2V0TG93 ZXJpbmc6Okxvd2VyQ29uc3RhbnRQb29sKFNEVmFsdWUgT3AsCi1AQCAtODM3LDYgKzg2OCwxOCBA QCBTRFZhbHVlIEJQRlRhcmdldExvd2VyaW5nOjpMb3dlckNvbnN0YW50UG9vbChTRFZhbHVlIE9w LAotICAgcmV0dXJuIGdldEFkZHIoTiwgREFHKTsKLSB9Ci0gCi0rU0RWYWx1ZSBCUEZUYXJnZXRM b3dlcmluZzo6TG93ZXJCbG9ja0FkZHJlc3MoU0RWYWx1ZSBPcCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25EQUcgJkRBRykgY29uc3Qgewot KyAgY29uc3QgQmxvY2tBZGRyZXNzICpCQSA9IGNhc3Q8QmxvY2tBZGRyZXNzU0ROb2RlPihPcCkt PmdldEJsb2NrQWRkcmVzcygpOwotKyAgU0RMb2MgREwoT3ApOwotKwotKyAgLy8gV3JhcCBpdCBp biBhIFRhcmdldEJsb2NrQWRkcmVzcwotKyAgU0RWYWx1ZSBBZGRyID0gREFHLmdldFRhcmdldEJs b2NrQWRkcmVzcyhCQSwgTVZUOjppNjQpOwotKwotKyAgLy8gRW1pdCBwc2V1ZG8gaW5zdHJ1Y3Rp b24KLSsgIHJldHVybiBTRFZhbHVlKERBRy5nZXRNYWNoaW5lTm9kZShCUEY6OkxESU1NNjQsIERM LCBNVlQ6Omk2NCwgQWRkciksIDApOwotK30KLSsKLSB1bnNpZ25lZAotIEJQRlRhcmdldExvd2Vy aW5nOjpFbWl0U3VicmVnRXh0KE1hY2hpbmVJbnN0ciAmTUksIE1hY2hpbmVCYXNpY0Jsb2NrICpC QiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBSZWcsIGJvb2wg aXNTaWduZWQpIGNvbnN0IHsKLUBAIC05MDAsNiArOTQzLDg2IEBAIEJQRlRhcmdldExvd2VyaW5n OjpFbWl0SW5zdHJXaXRoQ3VzdG9tSW5zZXJ0ZXJNZW1jcHkoTWFjaGluZUluc3RyICZNSSwKLSAg IHJldHVybiBCQjsKLSB9Ci0gCi0rTWFjaGluZUJhc2ljQmxvY2sgKkJQRlRhcmdldExvd2VyaW5n OjpFbWl0SW5zdHJXaXRoQ3VzdG9tSW5zZXJ0ZXJMRGltbTY0KAotKyAgICBNYWNoaW5lSW5zdHIg Jk1JLCBNYWNoaW5lQmFzaWNCbG9jayAqQkIpIGNvbnN0IHsKLSsgIE1hY2hpbmVGdW5jdGlvbiAq TUYgPSBCQi0+Z2V0UGFyZW50KCk7Ci0rICBjb25zdCBCUEZJbnN0ckluZm8gKlRJSSA9IE1GLT5n ZXRTdWJ0YXJnZXQ8QlBGU3VidGFyZ2V0PigpLmdldEluc3RySW5mbygpOwotKyAgY29uc3QgVGFy Z2V0UmVnaXN0ZXJDbGFzcyAqUkMgPSBnZXRSZWdDbGFzc0ZvcihNVlQ6Omk2NCk7Ci0rICBNYWNo aW5lUmVnaXN0ZXJJbmZvICZSZWdJbmZvID0gTUYtPmdldFJlZ0luZm8oKTsKLSsgIERlYnVnTG9j IERMID0gTUkuZ2V0RGVidWdMb2MoKTsKLSsKLSsgIC8vIEJ1aWxkIGFkZHJlc3MgdGFrZW4gbWFw IGZvciBHbG9iYWwgVmFyYWlibGVzIGFuZCBCbG9ja0FkZHJlc3NlcwotKyAgRGVuc2VNYXA8Y29u c3QgQmFzaWNCbG9jayAqLCBNYWNoaW5lQmFzaWNCbG9jayAqPiBBZGRyZXNzVGFrZW5CQnM7Ci0r ICBmb3IgKE1hY2hpbmVCYXNpY0Jsb2NrICZNQkIgOiAqTUYpIHsKLSsgICAgaWYgKGNvbnN0IEJh c2ljQmxvY2sgKkJCID0gTUJCLmdldEJhc2ljQmxvY2soKSkKLSsgICAgICBpZiAoQkItPmhhc0Fk ZHJlc3NUYWtlbigpKQotKyAgICAgICAgQWRkcmVzc1Rha2VuQkJzW0JCXSA9ICZNQkI7Ci0rICB9 Ci0rCi0rICBNYWNoaW5lT3BlcmFuZCAmTU8gPSBNSS5nZXRPcGVyYW5kKDEpOwotKyAgYXNzZXJ0 KE1PLmlzQmxvY2tBZGRyZXNzKCkgfHwgTU8uaXNHbG9iYWwoKSk7Ci0rCi0rICBNQ1JlZ2lzdGVy IFJlc3VsdFJlZyA9IE1JLmdldE9wZXJhbmQoMCkuZ2V0UmVnKCk7Ci0rICBSZWdpc3RlciBUbXBS ZWcgPSBSZWdJbmZvLmNyZWF0ZVZpcnR1YWxSZWdpc3RlcihSQyk7Ci0rCi0rICBzdGQ6OnZlY3Rv cjxNYWNoaW5lQmFzaWNCbG9jayAqPiBUYXJnZXRzOwotKyAgdW5zaWduZWQgSlRJOwotKwotKyAg aWYgKE1PLmlzQmxvY2tBZGRyZXNzKCkpIHsKLSsgICAgYXV0byAqQkEgPSBNTy5nZXRCbG9ja0Fk ZHJlc3MoKTsKLSsgICAgTWFjaGluZUJhc2ljQmxvY2sgKlRndE1CQiA9IEFkZHJlc3NUYWtlbkJC c1tCQS0+Z2V0QmFzaWNCbG9jaygpXTsKLSsgICAgYXNzZXJ0KFRndE1CQik7Ci0rCi0rICAgIFRh cmdldHMucHVzaF9iYWNrKFRndE1CQik7Ci0rICAgIEpUSSA9IE1GLT5nZXRPckNyZWF0ZUp1bXBU YWJsZUluZm8oZ2V0SnVtcFRhYmxlRW5jb2RpbmcoKSkKLSsgICAgICAgICAgICAgIC0+Y3JlYXRl SnVtcFRhYmxlSW5kZXgoVGFyZ2V0cyk7Ci0rCi0rICAgIEJ1aWxkTUkoKkJCLCBNSSwgREwsIFRJ SS0+Z2V0KEJQRjo6TERfaW1tNjQpLCBUbXBSZWcpCi0rICAgICAgICAuYWRkSnVtcFRhYmxlSW5k ZXgoSlRJKTsKLSsgICAgQnVpbGRNSSgqQkIsIE1JLCBETCwgVElJLT5nZXQoQlBGOjpMREQpLCBS ZXN1bHRSZWcpCi0rICAgICAgICAuYWRkUmVnKFRtcFJlZykKLSsgICAgICAgIC5hZGRJbW0oMCk7 Ci0rICAgIE1JLmVyYXNlRnJvbVBhcmVudCgpOwotKyAgICByZXR1cm4gQkI7Ci0rICB9Ci0rCi0r ICAvLyBIZWxwZXI6IGVtaXQgTERfaW1tNjQgd2l0aCBvcGVyYW5kIEdsb2JhbEFkZHJlc3Mgb3Ig SnVtcFRhYmxlCi0rICBhdXRvIGVtaXRMREltbTY0ID0gWyZdKGNvbnN0IEdsb2JhbFZhbHVlICpH ViA9IG51bGxwdHIsIHVuc2lnbmVkIEpUSSA9IC0xKSB7Ci0rICAgIGF1dG8gTUlCID0gQnVpbGRN SSgqQkIsIE1JLCBETCwgVElJLT5nZXQoQlBGOjpMRF9pbW02NCksIFJlc3VsdFJlZyk7Ci0rICAg IGlmIChHVikKLSsgICAgICBNSUIuYWRkR2xvYmFsQWRkcmVzcyhHVik7Ci0rICAgIGVsc2UKLSsg ICAgICBNSUIuYWRkSnVtcFRhYmxlSW5kZXgoSlRJKTsKLSsgICAgTUkuZXJhc2VGcm9tUGFyZW50 KCk7Ci0rICAgIHJldHVybiBCQjsKLSsgIH07Ci0rCi0rICAvLyBNdXN0IGJlIGEgZ2xvYmFsIGF0 IHRoaXMgcG9pbnQKLSsgIGNvbnN0IEdsb2JhbFZhbHVlICpHVmFsID0gTU8uZ2V0R2xvYmFsKCk7 Ci0rICBjb25zdCBhdXRvICpHViA9IGR5bl9jYXN0PEdsb2JhbFZhcmlhYmxlPihHVmFsKTsKLSsK LSsgIGlmICghR1YgfHwgR1YtPmdldExpbmthZ2UoKSAhPSBHbG9iYWxWYWx1ZTo6UHJpdmF0ZUxp bmthZ2UgfHwKLSsgICAgICAhR1YtPmlzQ29uc3RhbnQoKSB8fCAhR1YtPmhhc0luaXRpYWxpemVy KCkpCi0rICAgIHJldHVybiBlbWl0TERJbW02NChHVmFsKTsKLSsKLSsgIGNvbnN0IGF1dG8gKkNB ID0gZHluX2Nhc3Q8Q29uc3RhbnRBcnJheT4oR1YtPmdldEluaXRpYWxpemVyKCkpOwotKyAgaWYg KCFDQSkKLSsgICAgcmV0dXJuIGVtaXRMREltbTY0KEdWYWwpOwotKwotKyAgZm9yIChjb25zdCBV c2UgJk9wIDogQ0EtPm9wZXJhbmRzKCkpIHsKLSsgICAgaWYgKCFpc2E8QmxvY2tBZGRyZXNzPihP cCkpCi0rICAgICAgcmV0dXJuIGVtaXRMREltbTY0KEdWYWwpOwotKyAgICBhdXRvICpCQSA9IGNh c3Q8QmxvY2tBZGRyZXNzPihPcCk7Ci0rICAgIE1hY2hpbmVCYXNpY0Jsb2NrICpUZ3RNQkIgPSBB ZGRyZXNzVGFrZW5CQnNbQkEtPmdldEJhc2ljQmxvY2soKV07Ci0rICAgIGFzc2VydChUZ3RNQkIp OwotKyAgICBUYXJnZXRzLnB1c2hfYmFjayhUZ3RNQkIpOwotKyAgfQotKwotKyAgSlRJID0gTUYt PmdldE9yQ3JlYXRlSnVtcFRhYmxlSW5mbyhnZXRKdW1wVGFibGVFbmNvZGluZygpKQotKyAgICAg ICAgICAgIC0+Y3JlYXRlSnVtcFRhYmxlSW5kZXgoVGFyZ2V0cyk7Ci0rICByZXR1cm4gZW1pdExE SW1tNjQobnVsbHB0ciwgSlRJKTsKLSt9Ci0rCi0gTWFjaGluZUJhc2ljQmxvY2sgKgotIEJQRlRh cmdldExvd2VyaW5nOjpFbWl0SW5zdHJXaXRoQ3VzdG9tSW5zZXJ0ZXIoTWFjaGluZUluc3RyICZN SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY2hp bmVCYXNpY0Jsb2NrICpCQikgY29uc3QgewotQEAgLTkxMiw2ICsxMDM1LDcgQEAgQlBGVGFyZ2V0 TG93ZXJpbmc6OkVtaXRJbnN0cldpdGhDdXN0b21JbnNlcnRlcihNYWNoaW5lSW5zdHIgJk1JLAot ICAgICAgICAgICAgICAgICAgICAgICAgT3BjID09IEJQRjo6U2VsZWN0XzMyXzY0KTsKLSAKLSAg IGJvb2wgaXNNZW1jcHlPcCA9IE9wYyA9PSBCUEY6Ok1FTUNQWTsKLSsgIGJvb2wgaXNMRGltbTY0 T3AgPSBPcGMgPT0gQlBGOjpMRElNTTY0OwotIAotICNpZm5kZWYgTkRFQlVHCi0gICBib29sIGlz U2VsZWN0UklPcCA9IChPcGMgPT0gQlBGOjpTZWxlY3RfUmkgfHwKLUBAIC05MTksMTMgKzEwNDMs MTYgQEAgQlBGVGFyZ2V0TG93ZXJpbmc6OkVtaXRJbnN0cldpdGhDdXN0b21JbnNlcnRlcihNYWNo aW5lSW5zdHIgJk1JLAotICAgICAgICAgICAgICAgICAgICAgICAgT3BjID09IEJQRjo6U2VsZWN0 X1JpXzMyIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICBPcGMgPT0gQlBGOjpTZWxlY3RfUmlf MzJfNjQpOwotIAotLSAgaWYgKCEoaXNTZWxlY3RSUk9wIHx8IGlzU2VsZWN0UklPcCB8fCBpc01l bWNweU9wKSkKLSsgIGlmICghKGlzU2VsZWN0UlJPcCB8fCBpc1NlbGVjdFJJT3AgfHwgaXNNZW1j cHlPcCB8fCBpc0xEaW1tNjRPcCkpCi0gICAgIHJlcG9ydF9mYXRhbF9lcnJvcigidW5oYW5kbGVk IGluc3RydWN0aW9uIHR5cGU6ICIgKyBUd2luZShPcGMpKTsKLSAjZW5kaWYKLSAKLSAgIGlmIChp c01lbWNweU9wKQotICAgICByZXR1cm4gRW1pdEluc3RyV2l0aEN1c3RvbUluc2VydGVyTWVtY3B5 KE1JLCBCQik7Ci0gCi0rICBpZiAoaXNMRGltbTY0T3ApCi0rICAgIHJldHVybiBFbWl0SW5zdHJX aXRoQ3VzdG9tSW5zZXJ0ZXJMRGltbTY0KE1JLCBCQik7Ci0rCi0gICBib29sIGlzMzJCaXRDbXAg PSAoT3BjID09IEJQRjo6U2VsZWN0XzMyIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgT3BjID09 IEJQRjo6U2VsZWN0XzMyXzY0IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgT3BjID09IEJQRjo6 U2VsZWN0X1JpXzMyIHx8Ci1kaWZmIC0tZ2l0IGEvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZJU2Vs TG93ZXJpbmcuaCBiL2xsdm0vbGliL1RhcmdldC9CUEYvQlBGSVNlbExvd2VyaW5nLmgKLWluZGV4 IDhmNjAyNjFjMTBlOS4uNTI0M2Q0OTQ0NjY3IDEwMDY0NAotLS0tIGEvbGx2bS9saWIvVGFyZ2V0 L0JQRi9CUEZJU2VsTG93ZXJpbmcuaAotKysrIGIvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZJU2Vs TG93ZXJpbmcuaAotQEAgLTY2LDYgKzY2LDggQEAgcHVibGljOgotIAotICAgTVZUIGdldFNjYWxh clNoaWZ0QW1vdW50VHkoY29uc3QgRGF0YUxheW91dCAmLCBFVlQpIGNvbnN0IG92ZXJyaWRlOwot IAotKyAgdW5zaWduZWQgZ2V0SnVtcFRhYmxlRW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKLSsK LSBwcml2YXRlOgotICAgLy8gQ29udHJvbCBJbnN0cnVjdGlvbiBTZWxlY3Rpb24gRmVhdHVyZXMK LSAgIGJvb2wgSGFzQWx1MzI7Ci1AQCAtODEsNiArODMsOCBAQCBwcml2YXRlOgotICAgU0RWYWx1 ZSBMb3dlckNvbnN0YW50UG9vbChTRFZhbHVlIE9wLCBTZWxlY3Rpb25EQUcgJkRBRykgY29uc3Q7 Ci0gICBTRFZhbHVlIExvd2VyR2xvYmFsQWRkcmVzcyhTRFZhbHVlIE9wLCBTZWxlY3Rpb25EQUcg JkRBRykgY29uc3Q7Ci0gICBTRFZhbHVlIExvd2VyVFJBUChTRFZhbHVlIE9wLCBTZWxlY3Rpb25E QUcgJkRBRykgY29uc3Q7Ci0rICBTRFZhbHVlIExvd2VyQmxvY2tBZGRyZXNzKFNEVmFsdWUgT3As IFNlbGVjdGlvbkRBRyAmREFHKSBjb25zdDsKLSsgIFNEVmFsdWUgTG93ZXJKdW1wVGFibGUoU0RW YWx1ZSBPcCwgU2VsZWN0aW9uREFHICZEQUcpIGNvbnN0OwotIAotICAgdGVtcGxhdGUgPGNsYXNz IE5vZGVUeT4KLSAgIFNEVmFsdWUgZ2V0QWRkcihOb2RlVHkgKk4sIFNlbGVjdGlvbkRBRyAmREFH LCB1bnNpZ25lZCBGbGFncyA9IDApIGNvbnN0OwotQEAgLTE2Myw3ICsxNjcsOSBAQCBwcml2YXRl OgotICAgTWFjaGluZUJhc2ljQmxvY2sgKiBFbWl0SW5zdHJXaXRoQ3VzdG9tSW5zZXJ0ZXJNZW1j cHkoTWFjaGluZUluc3RyICZNSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVCYXNpY0Jsb2NrICpCQikKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0OwotLQot KyAgTWFjaGluZUJhc2ljQmxvY2sgKgotKyAgRW1pdEluc3RyV2l0aEN1c3RvbUluc2VydGVyTERp bW02NChNYWNoaW5lSW5zdHIgJk1JLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBNYWNoaW5lQmFzaWNCbG9jayAqQkIpIGNvbnN0OwotIH07Ci0gfQotIAotZGlmZiAtLWdp dCBhL2xsdm0vbGliL1RhcmdldC9CUEYvQlBGSW5zdHJJbmZvLmNwcCBiL2xsdm0vbGliL1Rhcmdl dC9CUEYvQlBGSW5zdHJJbmZvLmNwcAotaW5kZXggNzBiYzE2MzYxNWY2Li5iZjJiNDIxMzIwMWQg MTAwNjQ0Ci0tLS0gYS9sbHZtL2xpYi9UYXJnZXQvQlBGL0JQRkluc3RySW5mby5jcHAKLSsrKyBi L2xsdm0vbGliL1RhcmdldC9CUEYvQlBGSW5zdHJJbmZvLmNwcAotQEAgLTE4MSw2ICsxODEsMTEg QEAgYm9vbCBCUEZJbnN0ckluZm86OmFuYWx5emVCcmFuY2goTWFjaGluZUJhc2ljQmxvY2sgJk1C QiwKLSAgICAgaWYgKCFpc1VucHJlZGljYXRlZFRlcm1pbmF0b3IoKkkpKQotICAgICAgIGJyZWFr OwotIAotKyAgICAvLyBGcm9tIGJhc2UgbWV0aG9kIGRvYzogLi4uIHJldHVybmluZyB0cnVlIGlm IGl0IGNhbm5vdCBiZSB1bmRlcnN0b29kIC4uLgotKyAgICAvLyBJbmRpcmVjdCBicmFuY2ggaGFz IG11bHRpcGxlIGRlc3RpbmF0aW9ucyBhbmQgbm8gdHJ1ZS9mYWxzZSBjb25jZXB0cy4KLSsgICAg aWYgKEktPmlzSW5kaXJlY3RCcmFuY2goKSkKLSsgICAgICByZXR1cm4gdHJ1ZTsKLSsKLSAgICAg Ly8gQSB0ZXJtaW5hdG9yIHRoYXQgaXNuJ3QgYSBicmFuY2ggY2FuJ3QgZWFzaWx5IGJlIGhhbmRs ZWQKLSAgICAgLy8gYnkgdGhpcyBhbmFseXNpcy4KLSAgICAgaWYgKCFJLT5pc0JyYW5jaCgpKQot QEAgLTI1OSwzICsyNjQsNDMgQEAgdW5zaWduZWQgQlBGSW5zdHJJbmZvOjpyZW1vdmVCcmFuY2go TWFjaGluZUJhc2ljQmxvY2sgJk1CQiwKLSAKLSAgIHJldHVybiBDb3VudDsKLSB9Ci0rCi0raW50 IEJQRkluc3RySW5mbzo6Z2V0SnVtcFRhYmxlSW5kZXgoY29uc3QgTWFjaGluZUluc3RyICZNSSkg Y29uc3QgewotKyAgaWYgKE1JLmdldE9wY29kZSgpICE9IEJQRjo6SlgpCi0rICAgIHJldHVybiAt MTsKLSsKLSsgIC8vIFRoZSBwYXR0ZXJuIGxvb2tzIGxpa2U6Ci0rICAvLyAlMCA9IExEX2ltbTY0 ICVqdW1wLXRhYmxlLjAgICA7IGxvYWQganVtcC10YWJsZSBhZGRyZXNzCi0rICAvLyAlMSA9IEFE RF9yciAlMCwgJGFub3RoZXJfcmVnICA7IGFkZHJlc3MgKyBvZmZzZXQKLSsgIC8vICUyID0gTERE ICUxLCAwICAgICAgICAgICAgICAgIDsgbG9hZCB0aGUgYWN0dWFsIGxhYmVsCi0rICAvLyBKWCAl MgotKyAgY29uc3QgTWFjaGluZUZ1bmN0aW9uICZNRiA9ICpNSS5nZXRQYXJlbnQoKS0+Z2V0UGFy ZW50KCk7Ci0rICBjb25zdCBNYWNoaW5lUmVnaXN0ZXJJbmZvICZNUkkgPSBNRi5nZXRSZWdJbmZv KCk7Ci0rCi0rICBSZWdpc3RlciBSZWcgPSBNSS5nZXRPcGVyYW5kKDApLmdldFJlZygpOwotKyAg aWYgKCFSZWcuaXNWaXJ0dWFsKCkpCi0rICAgIHJldHVybiAtMTsKLSsgIE1hY2hpbmVJbnN0ciAq TGRkID0gTVJJLmdldFVuaXF1ZVZSZWdEZWYoUmVnKTsKLSsgIGlmIChMZGQgPT0gbnVsbHB0ciB8 fCBMZGQtPmdldE9wY29kZSgpICE9IEJQRjo6TEREKQotKyAgICByZXR1cm4gLTE7Ci0rCi0rICBS ZWcgPSBMZGQtPmdldE9wZXJhbmQoMSkuZ2V0UmVnKCk7Ci0rICBpZiAoIVJlZy5pc1ZpcnR1YWwo KSkKLSsgICAgcmV0dXJuIC0xOwotKyAgTWFjaGluZUluc3RyICpBZGQgPSBNUkkuZ2V0VW5pcXVl VlJlZ0RlZihSZWcpOwotKyAgaWYgKEFkZCA9PSBudWxscHRyIHx8IEFkZC0+Z2V0T3Bjb2RlKCkg IT0gQlBGOjpBRERfcnIpCi0rICAgIHJldHVybiAtMTsKLSsKLSsgIFJlZyA9IEFkZC0+Z2V0T3Bl cmFuZCgxKS5nZXRSZWcoKTsKLSsgIGlmICghUmVnLmlzVmlydHVhbCgpKQotKyAgICByZXR1cm4g LTE7Ci0rICBNYWNoaW5lSW5zdHIgKkxEaW1tNjQgPSBNUkkuZ2V0VW5pcXVlVlJlZ0RlZihSZWcp OwotKyAgaWYgKExEaW1tNjQgPT0gbnVsbHB0ciB8fCBMRGltbTY0LT5nZXRPcGNvZGUoKSAhPSBC UEY6OkxEX2ltbTY0KQotKyAgICByZXR1cm4gLTE7Ci0rCi0rICBjb25zdCBNYWNoaW5lT3BlcmFu ZCAmTU8gPSBMRGltbTY0LT5nZXRPcGVyYW5kKDEpOwotKyAgaWYgKCFNTy5pc0pUSSgpKQotKyAg ICByZXR1cm4gLTE7Ci0rCi0rICByZXR1cm4gTU8uZ2V0SW5kZXgoKTsKLSt9Ci1kaWZmIC0tZ2l0 IGEvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZJbnN0ckluZm8uaCBiL2xsdm0vbGliL1RhcmdldC9C UEYvQlBGSW5zdHJJbmZvLmgKLWluZGV4IGQ4YmJhZDQ0ZTMxNC4uZDg4ZTM3OTc1OTgwIDEwMDY0 NAotLS0tIGEvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZJbnN0ckluZm8uaAotKysrIGIvbGx2bS9s aWIvVGFyZ2V0L0JQRi9CUEZJbnN0ckluZm8uaAotQEAgLTU4LDYgKzU4LDkgQEAgcHVibGljOgot ICAgICAgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVCYXNpY0Jsb2NrICpGQkIsIEFycmF5UmVm PE1hY2hpbmVPcGVyYW5kPiBDb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERl YnVnTG9jICZETCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKkJ5dGVzQWRkZWQgPSBu dWxscHRyKSBjb25zdCBvdmVycmlkZTsKLSsKLSsgIGludCBnZXRKdW1wVGFibGVJbmRleChjb25z dCBNYWNoaW5lSW5zdHIgJk1JKSBjb25zdCBvdmVycmlkZTsKLSsKLSBwcml2YXRlOgotICAgdm9p ZCBleHBhbmRNRU1DUFkoTWFjaGluZUJhc2ljQmxvY2s6Oml0ZXJhdG9yKSBjb25zdDsKLSAKLWRp ZmYgLS1naXQgYS9sbHZtL2xpYi9UYXJnZXQvQlBGL0JQRkluc3RySW5mby50ZCBiL2xsdm0vbGli L1RhcmdldC9CUEYvQlBGSW5zdHJJbmZvLnRkCi1pbmRleCBiMjFmMWEwZWVlM2IuLjlkM2FjN2Zm YTZmZiAxMDA2NDQKLS0tLSBhL2xsdm0vbGliL1RhcmdldC9CUEYvQlBGSW5zdHJJbmZvLnRkCi0r KysgYi9sbHZtL2xpYi9UYXJnZXQvQlBGL0JQRkluc3RySW5mby50ZAotQEAgLTYxLDYgKzYxLDcg QEAgZGVmIEJQRk5vTW92c3ggOiBQcmVkaWNhdGU8IiFTdWJ0YXJnZXQtPmhhc01vdnN4KCkiPjsK LSBkZWYgQlBGTm9Cc3dhcCA6IFByZWRpY2F0ZTwiIVN1YnRhcmdldC0+aGFzQnN3YXAoKSI+Owot IGRlZiBCUEZIYXNTdG9yZUltbSA6IFByZWRpY2F0ZTwiU3VidGFyZ2V0LT5oYXNTdG9yZUltbSgp Ij47Ci0gZGVmIEJQRkhhc0xvYWRBY3FTdG9yZVJlbCA6IFByZWRpY2F0ZTwiU3VidGFyZ2V0LT5o YXNMb2FkQWNxU3RvcmVSZWwoKSI+OwotK2RlZiBCUEZIYXNHb3RveCA6IFByZWRpY2F0ZTwiU3Vi dGFyZ2V0LT5oYXNHb3RveCgpIj47Ci0gCi0gY2xhc3MgSW1tZWRpYXRlQXNtT3BlcmFuZDxzdHJp bmcgbmFtZT4gOiBBc21PcGVyYW5kQ2xhc3MgewotICAgbGV0IE5hbWUgPSBuYW1lOwotQEAgLTIx Niw2ICsyMTcsMTggQEAgY2xhc3MgSk1QX1JJPEJQRkp1bXBPcCBPcGMsIHN0cmluZyBPcGNvZGVT dHIsIFBhdExlYWYgQ29uZD4KLSAgIGxldCBCUEZDbGFzcyA9IEJQRl9KTVA7Ci0gfQotIAotK2Ns YXNzIEpNUF9JTkQ8QlBGSnVtcE9wIE9wYywgc3RyaW5nIE9wY29kZVN0ciwgbGlzdDxkYWc+IFBh dHRlcm4+Ci0rICAgIDogVFlQRV9BTFVfSk1QPE9wYy5WYWx1ZSwgQlBGX1guVmFsdWUsCi0rICAg ICAgICAgICAgICAgICAgIChvdXRzKSwKLSsgICAgICAgICAgICAgICAgICAgKGlucyBHUFI6JGRz dCksCi0rICAgICAgICAgICAgICAgICAgICFzdHJjb25jYXQoT3Bjb2RlU3RyLCAiICRkc3QiKSwK LSsgICAgICAgICAgICAgICAgICAgUGF0dGVybj4gewotKyAgYml0czw0PiBkc3Q7Ci0rCi0rICBs ZXQgSW5zdHs1MS00OH0gPSBkc3Q7Ci0rICBsZXQgQlBGQ2xhc3MgPSBCUEZfSk1QOwotK30KLSsK LSBjbGFzcyBKTVBfSkNPTkQ8QlBGSnVtcE9wIE9wYywgc3RyaW5nIE9wY29kZVN0ciwgbGlzdDxk YWc+IFBhdHRlcm4+Ci0gICAgIDogVFlQRV9BTFVfSk1QPE9wYy5WYWx1ZSwgQlBGX0suVmFsdWUs Ci0gICAgICAgICAgICAgICAgICAgIChvdXRzKSwKLUBAIC0yODEsNiArMjk0LDEyIEBAIGRlZm0g SlNMVCA6IEo8QlBGX0pTTFQsICJzPCIsIEJQRl9DQ19MVCwgQlBGX0NDX0xUXzMyPjsKLSBkZWZt IEpTTEUgOiBKPEJQRl9KU0xFLCAiczw9IiwgQlBGX0NDX0xFLCBCUEZfQ0NfTEVfMzI+OwotIGRl Zm0gSlNFVCA6IEo8QlBGX0pTRVQsICImIiwgTm9Db25kLCBOb0NvbmQ+OwotIGRlZiBKQ09ORCA6 IEpNUF9KQ09ORDxCUEZfSkNPTkQsICJtYXlfZ290byIsIFtdPjsKLSsKLStsZXQgUHJlZGljYXRl cyA9IFtCUEZIYXNHb3RveF0gaW4gewotKyAgbGV0IGlzSW5kaXJlY3RCcmFuY2ggPSAxLCBpc0Jh cnJpZXIgPSAxIGluIHsKLSsgICAgZGVmIEpYIDogSk1QX0lORDxCUEZfSkEsICJnb3RveCIsIFso YnJpbmQgaTY0OiRkc3QpXT47Ci0rICB9Ci0rfQotIH0KLSAKLSAvLyBBTFUgaW5zdHJ1Y3Rpb25z Ci1AQCAtODQ5LDggKzg2OCw4IEBAIGxldCB1c2VzQ3VzdG9tSW5zZXJ0ZXIgPSAxLCBpc0NvZGVH ZW5Pbmx5ID0gMSBpbiB7Ci0gfQotIAotIC8vIGxvYWQgNjQtYml0IGdsb2JhbCBhZGRyIGludG8g cmVnaXN0ZXIKLS1kZWYgOiBQYXQ8KEJQRldyYXBwZXIgdGdsb2JhbGFkZHI6JGluKSwgKExEX2lt bTY0IHRnbG9iYWxhZGRyOiRpbik+OwotIGRlZiA6IFBhdDwoQlBGV3JhcHBlciB0Y29uc3Rwb29s OiRpbiksIChMRF9pbW02NCB0Y29uc3Rwb29sOiRpbik+OwotK2RlZiA6IFBhdDwoQlBGV3JhcHBl ciB0anVtcHRhYmxlOiRpbiksIChMRF9pbW02NCB0anVtcHRhYmxlOiRpbik+OwotIAotIC8vIDB4 ZmZmZkZGRkYgZG9lc24ndCBmaXQgaW50byBzaW1tMzIsIG9wdGltaXplIGNvbW1vbiBjYXNlCi0g ZGVmIDogUGF0PChpNjQgKGFuZCAoaTY0IEdQUjokc3JjKSwgMHhmZmZmRkZGRikpLAotQEAgLTEz NzIsMyArMTM5MSw4IEBAIGxldCB1c2VzQ3VzdG9tSW5zZXJ0ZXIgPSAxLCBpc0NvZGVHZW5Pbmx5 ID0gMSBpbiB7Ci0gICAgICAgIiNtZW1jcHkgZHN0OiAkZHN0LCBzcmM6ICRzcmMsIGxlbjogJGxl biwgYWxpZ246ICRhbGlnbiIsCi0gICAgICAgWyhCUEZtZW1jcHkgR1BSOiRkc3QsIEdQUjokc3Jj LCBpbW06JGxlbiwgaW1tOiRhbGlnbildPjsKLSB9Ci0rCi0rLy8gRm9yIEdsb2JhbFZhbHVlIGFu ZCBCbG9ja0FkZHJlc3MuCi0rbGV0IHVzZXNDdXN0b21JbnNlcnRlciA9IDEsIGlzQ29kZUdlbk9u bHkgPSAxIGluIHsKLSsgIGRlZiBMRElNTTY0IDogUHNldWRvPChvdXRzIEdQUjokZHN0KSwgKGlu cyBpNjRpbW06JGFkZHIpLCAiIiwgW10+OwotK30KLWRpZmYgLS1naXQgYS9sbHZtL2xpYi9UYXJn ZXQvQlBGL0JQRk1DSW5zdExvd2VyLmNwcCBiL2xsdm0vbGliL1RhcmdldC9CUEYvQlBGTUNJbnN0 TG93ZXIuY3BwCi1pbmRleCAwNDBhMWZiNzUwNzAuLjdkNjcxZDJjNDY0ZSAxMDA2NDQKLS0tLSBh L2xsdm0vbGliL1RhcmdldC9CUEYvQlBGTUNJbnN0TG93ZXIuY3BwCi0rKysgYi9sbHZtL2xpYi9U YXJnZXQvQlBGL0JQRk1DSW5zdExvd2VyLmNwcAotQEAgLTEyLDYgKzEyLDggQEAKLSAvLz09PS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS09PT0vLwotIAotICNpbmNsdWRlICJCUEZNQ0luc3RMb3dlci5oIgotKyNpbmNs dWRlICJCUEZBc21QcmludGVyLmgiCi0rI2luY2x1ZGUgIkJQRklTZWxMb3dlcmluZy5oIgotICNp bmNsdWRlICJsbHZtL0NvZGVHZW4vQXNtUHJpbnRlci5oIgotICNpbmNsdWRlICJsbHZtL0NvZGVH ZW4vTWFjaGluZUJhc2ljQmxvY2suaCIKLSAjaW5jbHVkZSAibGx2bS9Db2RlR2VuL01hY2hpbmVJ bnN0ci5oIgotQEAgLTE5LDYgKzIxLDcgQEAKLSAjaW5jbHVkZSAibGx2bS9NQy9NQ0NvbnRleHQu aCIKLSAjaW5jbHVkZSAibGx2bS9NQy9NQ0V4cHIuaCIKLSAjaW5jbHVkZSAibGx2bS9NQy9NQ0lu c3QuaCIKLSsjaW5jbHVkZSAibGx2bS9NQy9NQ1N0cmVhbWVyLmgiCi0gI2luY2x1ZGUgImxsdm0v U3VwcG9ydC9FcnJvckhhbmRsaW5nLmgiCi0gI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9yYXdfb3N0 cmVhbS5oIgotIHVzaW5nIG5hbWVzcGFjZSBsbHZtOwotQEAgLTc3LDYgKzgwLDkgQEAgdm9pZCBC UEZNQ0luc3RMb3dlcjo6TG93ZXIoY29uc3QgTWFjaGluZUluc3RyICpNSSwgTUNJbnN0ICZPdXRN SSkgY29uc3QgewotICAgICBjYXNlIE1hY2hpbmVPcGVyYW5kOjpNT19Db25zdGFudFBvb2xJbmRl eDoKLSAgICAgICBNQ09wID0gTG93ZXJTeW1ib2xPcGVyYW5kKE1PLCBQcmludGVyLkdldENQSVN5 bWJvbChNTy5nZXRJbmRleCgpKSk7Ci0gICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgTWFjaGluZU9w ZXJhbmQ6Ok1PX0p1bXBUYWJsZUluZGV4OgotKyAgICAgIE1DT3AgPSBMb3dlclN5bWJvbE9wZXJh bmQoTU8sIFByaW50ZXIuZ2V0SlRQdWJsaWNTeW1ib2woTU8uZ2V0SW5kZXgoKSkpOwotKyAgICAg IGJyZWFrOwotICAgICB9Ci0gCi0gICAgIE91dE1JLmFkZE9wZXJhbmQoTUNPcCk7Ci1kaWZmIC0t Z2l0IGEvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZNQ0luc3RMb3dlci5oIGIvbGx2bS9saWIvVGFy Z2V0L0JQRi9CUEZNQ0luc3RMb3dlci5oCi1pbmRleCA0YmQwZjFmMGJmMWMuLjQ4M2VkZDlhMDI4 MyAxMDA2NDQKLS0tLSBhL2xsdm0vbGliL1RhcmdldC9CUEYvQlBGTUNJbnN0TG93ZXIuaAotKysr IGIvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZNQ0luc3RMb3dlci5oCi1AQCAtMTIsNyArMTIsNyBA QAotICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvQ29tcGlsZXIuaCIKLSAKLSBuYW1lc3BhY2UgbGx2 bSB7Ci0tY2xhc3MgQXNtUHJpbnRlcjsKLStjbGFzcyBCUEZBc21QcmludGVyOwotIGNsYXNzIE1D Q29udGV4dDsKLSBjbGFzcyBNQ0luc3Q7Ci0gY2xhc3MgTUNPcGVyYW5kOwotQEAgLTI0LDEwICsy NCwxMCBAQCBjbGFzcyBNYWNoaW5lT3BlcmFuZDsKLSBjbGFzcyBMTFZNX0xJQlJBUllfVklTSUJJ TElUWSBCUEZNQ0luc3RMb3dlciB7Ci0gICBNQ0NvbnRleHQgJkN0eDsKLSAKLS0gIEFzbVByaW50 ZXIgJlByaW50ZXI7Ci0rICBCUEZBc21QcmludGVyICZQcmludGVyOwotIAotIHB1YmxpYzoKLS0g IEJQRk1DSW5zdExvd2VyKE1DQ29udGV4dCAmY3R4LCBBc21QcmludGVyICZwcmludGVyKQotKyAg QlBGTUNJbnN0TG93ZXIoTUNDb250ZXh0ICZjdHgsIEJQRkFzbVByaW50ZXIgJnByaW50ZXIpCi0g ICAgICAgOiBDdHgoY3R4KSwgUHJpbnRlcihwcmludGVyKSB7fQotICAgdm9pZCBMb3dlcihjb25z dCBNYWNoaW5lSW5zdHIgKk1JLCBNQ0luc3QgJk91dE1JKSBjb25zdDsKLSAKLWRpZmYgLS1naXQg YS9sbHZtL2xpYi9UYXJnZXQvQlBGL0JQRlN1YnRhcmdldC5jcHAgYi9sbHZtL2xpYi9UYXJnZXQv QlBGL0JQRlN1YnRhcmdldC5jcHAKLWluZGV4IDQxNjc1NDc2ODBiMS4uYTExYWE2OTMzMTQ3IDEw MDY0NAotLS0tIGEvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZTdWJ0YXJnZXQuY3BwCi0rKysgYi9s bHZtL2xpYi9UYXJnZXQvQlBGL0JQRlN1YnRhcmdldC5jcHAKLUBAIC00Myw2ICs0Myw4IEBAIHN0 YXRpYyBjbDo6b3B0PGJvb2w+Ci0gc3RhdGljIGNsOjpvcHQ8Ym9vbD4gRGlzYWJsZV9sb2FkX2Fj cV9zdG9yZV9yZWwoCi0gICAgICJkaXNhYmxlLWxvYWQtYWNxLXN0b3JlLXJlbCIsIGNsOjpIaWRk ZW4sIGNsOjppbml0KGZhbHNlKSwKLSAgICAgY2w6OmRlc2MoIkRpc2FibGUgbG9hZC1hY3F1aXJl IGFuZCBzdG9yZS1yZWxlYXNlIGluc25zIikpOwotK3N0YXRpYyBjbDo6b3B0PGJvb2w+IERpc2Fi bGVfZ290b3goImRpc2FibGUtZ290b3giLCBjbDo6SGlkZGVuLCBjbDo6aW5pdChmYWxzZSksCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbDo6ZGVzYygiRGlzYWJsZSBnb3Rv eCBpbnNuIikpOwotIAotIHZvaWQgQlBGU3VidGFyZ2V0OjphbmNob3IoKSB7fQotIAotQEAgLTY2 LDYgKzY4LDcgQEAgdm9pZCBCUEZTdWJ0YXJnZXQ6OmluaXRpYWxpemVFbnZpcm9ubWVudCgpIHsK LSAgIEhhc0dvdG9sID0gZmFsc2U7Ci0gICBIYXNTdG9yZUltbSA9IGZhbHNlOwotICAgSGFzTG9h ZEFjcVN0b3JlUmVsID0gZmFsc2U7Ci0rICBIYXNHb3RveCA9IGZhbHNlOwotIH0KLSAKLSB2b2lk IEJQRlN1YnRhcmdldDo6aW5pdFN1YnRhcmdldEZlYXR1cmVzKFN0cmluZ1JlZiBDUFUsIFN0cmlu Z1JlZiBGUykgewotQEAgLTk2LDYgKzk5LDcgQEAgdm9pZCBCUEZTdWJ0YXJnZXQ6OmluaXRTdWJ0 YXJnZXRGZWF0dXJlcyhTdHJpbmdSZWYgQ1BVLCBTdHJpbmdSZWYgRlMpIHsKLSAgICAgSGFzR290 b2wgPSAhRGlzYWJsZV9nb3RvbDsKLSAgICAgSGFzU3RvcmVJbW0gPSAhRGlzYWJsZV9TdG9yZUlt bTsKLSAgICAgSGFzTG9hZEFjcVN0b3JlUmVsID0gIURpc2FibGVfbG9hZF9hY3Ffc3RvcmVfcmVs OwotKyAgICBIYXNHb3RveCA9ICFEaXNhYmxlX2dvdG94OwotICAgICByZXR1cm47Ci0gICB9Ci0g fQotZGlmZiAtLWdpdCBhL2xsdm0vbGliL1RhcmdldC9CUEYvQlBGU3VidGFyZ2V0LmggYi9sbHZt L2xpYi9UYXJnZXQvQlBGL0JQRlN1YnRhcmdldC5oCi1pbmRleCBhZWQyMjExMjY1ZTIuLmU4NzBk ZmRjODVlYyAxMDA2NDQKLS0tLSBhL2xsdm0vbGliL1RhcmdldC9CUEYvQlBGU3VidGFyZ2V0LmgK LSsrKyBiL2xsdm0vbGliL1RhcmdldC9CUEYvQlBGU3VidGFyZ2V0LmgKLUBAIC02NSw3ICs2NSw3 IEBAIHByb3RlY3RlZDoKLSAKLSAgIC8vIHdoZXRoZXIgY3B1IHY0IGluc25zIGFyZSBlbmFibGVk LgotICAgYm9vbCBIYXNMZHN4LCBIYXNNb3ZzeCwgSGFzQnN3YXAsIEhhc1NkaXZTbW9kLCBIYXNH b3RvbCwgSGFzU3RvcmVJbW0sCi0tICAgICAgSGFzTG9hZEFjcVN0b3JlUmVsOwotKyAgICAgIEhh c0xvYWRBY3FTdG9yZVJlbCwgSGFzR290b3g7Ci0gCi0gICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExv d2VyaW5nPiBDYWxsTG93ZXJpbmdJbmZvOwotICAgc3RkOjp1bmlxdWVfcHRyPEluc3RydWN0aW9u U2VsZWN0b3I+IEluc3RTZWxlY3RvcjsKLUBAIC05NCw2ICs5NCw3IEBAIHB1YmxpYzoKLSAgIGJv b2wgaGFzR290b2woKSBjb25zdCB7IHJldHVybiBIYXNHb3RvbDsgfQotICAgYm9vbCBoYXNTdG9y ZUltbSgpIGNvbnN0IHsgcmV0dXJuIEhhc1N0b3JlSW1tOyB9Ci0gICBib29sIGhhc0xvYWRBY3FT dG9yZVJlbCgpIGNvbnN0IHsgcmV0dXJuIEhhc0xvYWRBY3FTdG9yZVJlbDsgfQotKyAgYm9vbCBo YXNHb3RveCgpIGNvbnN0IHsgcmV0dXJuIEhhc0dvdG94OyB9Ci0gCi0gICBib29sIGlzTGl0dGxl RW5kaWFuKCkgY29uc3QgeyByZXR1cm4gSXNMaXR0bGVFbmRpYW47IH0KLSAKLWRpZmYgLS1naXQg YS9sbHZtL2xpYi9UYXJnZXQvQlBGL0JQRlRhcmdldExvd2VyaW5nT2JqZWN0RmlsZS5jcHAgYi9s bHZtL2xpYi9UYXJnZXQvQlBGL0JQRlRhcmdldExvd2VyaW5nT2JqZWN0RmlsZS5jcHAKLW5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAuLjk5N2YwOTg3MGJhZAotLS0tIC9k ZXYvbnVsbAotKysrIGIvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZUYXJnZXRMb3dlcmluZ09iamVj dEZpbGUuY3BwCi1AQCAtMCwwICsxLDE5IEBACi0rLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0gQlBG VGFyZ2V0TG93ZXJpbmdPYmplY3RGaWxlLmNwcCAtLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLSsv LwotKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl IHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCi0rLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElD RU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCi0rLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgotKy8vCi0rLy89PT0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tPT09Ly8KLSsKLSsjaW5jbHVkZSAiQlBGVGFyZ2V0TG93ZXJpbmdPYmplY3RGaWxlLmgi Ci0rI2luY2x1ZGUgImxsdm0vTUMvTUNDb250ZXh0LmgiCi0rI2luY2x1ZGUgImxsdm0vTUMvTUNT ZWN0aW9uRUxGLmgiCi0rCi0rdXNpbmcgbmFtZXNwYWNlIGxsdm07Ci0rCi0rTUNTZWN0aW9uICpC UEZUYXJnZXRMb3dlcmluZ09iamVjdEZpbGVFTEY6OmdldFNlY3Rpb25Gb3JKdW1wVGFibGUoCi0r ICAgIGNvbnN0IEZ1bmN0aW9uICZGLCBjb25zdCBUYXJnZXRNYWNoaW5lICZUTSwKLSsgICAgY29u c3QgTWFjaGluZUp1bXBUYWJsZUVudHJ5ICpKVEUpIGNvbnN0IHsKLSsgIHJldHVybiBnZXRDb250 ZXh0KCkuZ2V0RUxGU2VjdGlvbigiLmp1bXB0YWJsZXMiLCBFTEY6OlNIVF9QUk9HQklUUywgMCk7 Ci0rfQotZGlmZiAtLWdpdCBhL2xsdm0vbGliL1RhcmdldC9CUEYvQlBGVGFyZ2V0TG93ZXJpbmdP YmplY3RGaWxlLmggYi9sbHZtL2xpYi9UYXJnZXQvQlBGL0JQRlRhcmdldExvd2VyaW5nT2JqZWN0 RmlsZS5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMDAwLi5mMzA2NGMw YzhjYjgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xsdm0vbGliL1RhcmdldC9CUEYvQlBGVGFyZ2V0 TG93ZXJpbmdPYmplY3RGaWxlLmgKLUBAIC0wLDAgKzEsMjUgQEAKLSsvLz09PT09PT09PT09PT09 PS0gIEJQRlRhcmdldExvd2VyaW5nT2JqZWN0RmlsZS5oICAtKi0gQysrIC0qLT09PT09PT09PT09 PT09PT0vLwotKy8vCi0rLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBh Y2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KLSsvLyBTZWUgaHR0cHM6Ly9s bHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KLSsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCi0rLy8KLSsv Lz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS09PT0vLwotKwotKyNpZm5kZWYgTExWTV9MSUJfVEFSR0VUX0JQRl9C UEZUQVJHRVRMT1dFUklOR09CSkVDVEZJTEUKLSsjZGVmaW5lIExMVk1fTElCX1RBUkdFVF9CUEZf QlBGVEFSR0VUTE9XRVJJTkdPQkpFQ1RGSUxFCi0rCi0rI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9U YXJnZXRMb3dlcmluZ09iamVjdEZpbGVJbXBsLmgiCi0rI2luY2x1ZGUgImxsdm0vVGFyZ2V0L1Rh cmdldExvd2VyaW5nT2JqZWN0RmlsZS5oIgotKwotK25hbWVzcGFjZSBsbHZtIHsKLStjbGFzcyBC UEZUYXJnZXRMb3dlcmluZ09iamVjdEZpbGVFTEYgOiBwdWJsaWMgVGFyZ2V0TG93ZXJpbmdPYmpl Y3RGaWxlRUxGIHsKLSsKLStwdWJsaWM6Ci0rICB2aXJ0dWFsIE1DU2VjdGlvbiAqCi0rICBnZXRT ZWN0aW9uRm9ySnVtcFRhYmxlKGNvbnN0IEZ1bmN0aW9uICZGLCBjb25zdCBUYXJnZXRNYWNoaW5l ICZUTSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWFjaGluZUp1bXBUYWJsZUVu dHJ5ICpKVEUpIGNvbnN0IG92ZXJyaWRlOwotK307Ci0rfSAvLyBuYW1lc3BhY2UgbGx2bQotKwot KyNlbmRpZiAvLyBMTFZNX0xJQl9UQVJHRVRfQlBGX0JQRlRBUkdFVExPV0VSSU5HT0JKRUNURklM RQotZGlmZiAtLWdpdCBhL2xsdm0vbGliL1RhcmdldC9CUEYvQlBGVGFyZ2V0TWFjaGluZS5jcHAg Yi9sbHZtL2xpYi9UYXJnZXQvQlBGL0JQRlRhcmdldE1hY2hpbmUuY3BwCi1pbmRleCA1MjdhNDgw MzU0NTcuLmQ1MzhiNmZlMTE2NyAxMDA2NDQKLS0tLSBhL2xsdm0vbGliL1RhcmdldC9CUEYvQlBG VGFyZ2V0TWFjaGluZS5jcHAKLSsrKyBiL2xsdm0vbGliL1RhcmdldC9CUEYvQlBGVGFyZ2V0TWFj aGluZS5jcHAKLUBAIC0xMiw2ICsxMiw3IEBACi0gCi0gI2luY2x1ZGUgIkJQRlRhcmdldE1hY2hp bmUuaCIKLSAjaW5jbHVkZSAiQlBGLmgiCi0rI2luY2x1ZGUgIkJQRlRhcmdldExvd2VyaW5nT2Jq ZWN0RmlsZS5oIgotICNpbmNsdWRlICJCUEZUYXJnZXRUcmFuc2Zvcm1JbmZvLmgiCi0gI2luY2x1 ZGUgIk1DVGFyZ2V0RGVzYy9CUEZNQ0FzbUluZm8uaCIKLSAjaW5jbHVkZSAiVGFyZ2V0SW5mby9C UEZUYXJnZXRJbmZvLmgiCi1AQCAtODAsNyArODEsNyBAQCBCUEZUYXJnZXRNYWNoaW5lOjpCUEZU YXJnZXRNYWNoaW5lKGNvbnN0IFRhcmdldCAmVCwgY29uc3QgVHJpcGxlICZUVCwKLSAgICAgOiBD b2RlR2VuVGFyZ2V0TWFjaGluZUltcGwoVCwgY29tcHV0ZURhdGFMYXlvdXQoVFQpLCBUVCwgQ1BV LCBGUywgT3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RWZmZWN0 aXZlUmVsb2NNb2RlbChSTSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEVm ZmVjdGl2ZUNvZGVNb2RlbChDTSwgQ29kZU1vZGVsOjpTbWFsbCksIE9MKSwKLS0gICAgICBUTE9G KHN0ZDo6bWFrZV91bmlxdWU8VGFyZ2V0TG93ZXJpbmdPYmplY3RGaWxlRUxGPigpKSwKLSsgICAg ICBUTE9GKHN0ZDo6bWFrZV91bmlxdWU8QlBGVGFyZ2V0TG93ZXJpbmdPYmplY3RGaWxlRUxGPigp KSwKLSAgICAgICBTdWJ0YXJnZXQoVFQsIHN0ZDo6c3RyaW5nKENQVSksIHN0ZDo6c3RyaW5nKEZT KSwgKnRoaXMpIHsKLSAgIGlmICghRGlzYWJsZUNoZWNrVW5yZWFjaGFibGUpIHsKLSAgICAgdGhp cy0+T3B0aW9ucy5UcmFwVW5yZWFjaGFibGUgPSB0cnVlOwotZGlmZiAtLWdpdCBhL2xsdm0vbGli L1RhcmdldC9CUEYvQ01ha2VMaXN0cy50eHQgYi9sbHZtL2xpYi9UYXJnZXQvQlBGL0NNYWtlTGlz dHMudHh0Ci1pbmRleCBlYWRlNGNhY2I3MTAuLjM2NzhmMTMzNWNhMyAxMDA2NDQKLS0tLSBhL2xs dm0vbGliL1RhcmdldC9CUEYvQ01ha2VMaXN0cy50eHQKLSsrKyBiL2xsdm0vbGliL1RhcmdldC9C UEYvQ01ha2VMaXN0cy50eHQKLUBAIC0zNyw2ICszNyw3IEBAIGFkZF9sbHZtX3RhcmdldChCUEZD b2RlR2VuCi0gICBCUEZSZWdpc3RlckluZm8uY3BwCi0gICBCUEZTZWxlY3Rpb25EQUdJbmZvLmNw cAotICAgQlBGU3VidGFyZ2V0LmNwcAotKyAgQlBGVGFyZ2V0TG93ZXJpbmdPYmplY3RGaWxlLmNw cAotICAgQlBGVGFyZ2V0TWFjaGluZS5jcHAKLSAgIEJQRk1JUGVlcGhvbGUuY3BwCi0gICBCUEZN SUNoZWNraW5nLmNwcAotZGlmZiAtLWdpdCBhL2xsdm0vdGVzdC9Db2RlR2VuL0JQRi9qdW1wX3Rh YmxlX2Jsb2NrYWRkci5sbCBiL2xsdm0vdGVzdC9Db2RlR2VuL0JQRi9qdW1wX3RhYmxlX2Jsb2Nr YWRkci5sbAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAwMC4uZDVhMWQ2 M2I2NDRhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9sbHZtL3Rlc3QvQ29kZUdlbi9CUEYvanVtcF90 YWJsZV9ibG9ja2FkZHIubGwKLUBAIC0wLDAgKzEsOTEgQEAKLSs7IENoZWNrcyBnZW5lcmF0ZWQg dXNpbmcgY29tbWFuZDoKLSs7ICAgIGxsdm0vdXRpbHMvdXBkYXRlX3Rlc3RfYm9keS5weSBsbHZt L3Rlc3QvQ29kZUdlbi9CUEYvanVtcF90YWJsZV9ibG9ja2FkZHIubGwKLSsKLSs7IFJVTjogcm0g LXJmICV0ICYmIHNwbGl0LWZpbGUgJXMgJXQgJiYgY2QgJXQKLSs7IFJVTjogbGxjIC1tYXJjaD1i cGYgLW1jcHU9djQgPCB0ZXN0LmxsIHwgRmlsZUNoZWNrICVzCi0rOwotKzsgU291cmNlIGNvZGU6 Ci0rOyAgICBpbnQgYmFyKGludCBhKSB7Ci0rOyAgICAgICBfX2xhYmVsX18gbDEsIGwyOwotKzsg ICAgICAgdm9pZCAqIHZvbGF0aWxlIHRndDsKLSs7ICAgICAgIGludCByZXQgPSAwOwotKzsgICAg ICAgaWYgKGEpCi0rOyAgICAgICAgIHRndCA9ICYmbDE7IC8vIHN5bnRoZXRpYyBqdW1wIHRhYmxl IGdlbmVyYXRlZCBoZXJlCi0rOyAgICAgICBlbHNlCi0rOyAgICAgICAgIHRndCA9ICYmbDI7IC8v IGFub3RoZXIgc3ludGhldGljIGp1bXAgdGFibGUKLSs7ICAgICAgIGdvdG8gKnRndDsKLSs7ICAg bDE6IHJldCArPSAxOwotKzsgICBsMjogcmV0ICs9IDI7Ci0rOyAgICAgICByZXR1cm4gcmV0Owot KzsgICAgIH0KLSs7Ci0rOyBDb21waWxhdGlvbiBGbGFnczoKLSs7ICAgY2xhbmcgLS10YXJnZXQ9 YnBmIC1tY3B1PXY0IC1PMiAtZW1pdC1sbHZtIC1TIHRlc3QuYwotKwotKy5pZmRlZiBHRU4KLSs7 LS0tIHRlc3QubGwKLStkZWZpbmUgZHNvX2xvY2FsIHJhbmdlKGkzMiAyLCA0KSBpMzIgQGJhcihp MzIgbm91bmRlZiAlYSkgbG9jYWxfdW5uYW1lZF9hZGRyewotK2VudHJ5OgotKyAgJXRndCA9IGFs bG9jYSBwdHIsIGFsaWduIDgKLSsgICV0b2Jvb2wubm90ID0gaWNtcCBlcSBpMzIgJWEsIDAKLSsg ICUuID0gc2VsZWN0IGkxICV0b2Jvb2wubm90LCBwdHIgYmxvY2thZGRyZXNzKEBiYXIsICVsMiks IHB0ciBibG9ja2FkZHJlc3MoQGJhciwgJWwxKQotKyAgc3RvcmUgdm9sYXRpbGUgcHRyICUuLCBw dHIgJXRndCwgYWxpZ24gOAotKyAgJXRndC4wLnRndC4wLnRndC4wLnRndC4wLiA9IGxvYWQgdm9s YXRpbGUgcHRyLCBwdHIgJXRndCwgYWxpZ24gOAotKyAgaW5kaXJlY3RiciBwdHIgJXRndC4wLnRn dC4wLnRndC4wLnRndC4wLiwgW2xhYmVsICVsMSwgbGFiZWwgJWwyXQotKwotK2wxOiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICVlbnRyeQot KyAgYnIgbGFiZWwgJWwyCi0rCi0rbDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7IHByZWRzID0gJWwxLCAlZW50cnkKLSsgICVyZXQuMCA9IHBoaSBpMzIg WyAzLCAlbDEgXSwgWyAyLCAlZW50cnkgXQotKyAgcmV0IGkzMiAlcmV0LjAKLSt9Ci0rCi0rOy0t LSBnZW4KLStlY2hvICIiCi0rZWNobyAiOyBHZW5lcmF0ZWQgY2hlY2tzIGZvbGxvdyIKLStlY2hv ICI7IgotK2xsYyAtbWFyY2g9YnBmIC1tY3B1PXY0IDwgdGVzdC5sbCBcCi0rICB8IGF3ayAnLyMg LS0gRW5kIGZ1bmN0aW9uLyB7cD0wfSAvQGZ1bmN0aW9uLyB7cD0xfSBwIHtwcmludCAiOyBDSEVD SyIgIjogIiAkMH0nCi0rCi0rLmVuZGlmCi0rCi0rOyBHZW5lcmF0ZWQgY2hlY2tzIGZvbGxvdwot KzsKLSs7IENIRUNLOiAJLnR5cGUJYmFyLEBmdW5jdGlvbgotKzsgQ0hFQ0s6IGJhcjogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEBiYXIKLSs7IENIRUNLOiAuTGJhciRsb2Nh bDoKLSs7IENIRUNLOiAJLnR5cGUJLkxiYXIkbG9jYWwsQGZ1bmN0aW9uCi0rOyBDSEVDSzogCS5j Zmlfc3RhcnRwcm9jCi0rOyBDSEVDSzogIyAlYmIuMDogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgJWVudHJ5Ci0rOyBDSEVDSzogCXIyID0gQlBGLkpULjAuMCBsbAotKzsgQ0hFQ0s6 IAlyMiA9ICoodTY0ICopKHIyICsgMCkKLSs7IENIRUNLOiAJcjMgPSBCUEYuSlQuMC4xIGxsCi0r OyBDSEVDSzogCXIzID0gKih1NjQgKikocjMgKyAwKQotKzsgQ0hFQ0s6IAlpZiB3MSA9PSAwIGdv dG8gTEJCMF8yCi0rOyBDSEVDSzogIyAlYmIuMTogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgJWVudHJ5Ci0rOyBDSEVDSzogCXIzID0gcjIKLSs7IENIRUNLOiBMQkIwXzI6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAlZW50cnkKLSs7IENIRUNLOiAJKih1NjQgKiko cjEwIC0gOCkgPSByMwotKzsgQ0hFQ0s6IAlyMSA9ICoodTY0ICopKHIxMCAtIDgpCi0rOyBDSEVD SzogCWdvdG94IHIxCi0rOyBDSEVDSzogLkx0bXAwOiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgQmxvY2sgYWRkcmVzcyB0YWtlbgotKzsgQ0hFQ0s6IExCQjBfMzogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjICVsMQotKzsgQ0hFQ0s6IAl3MCA9IDMKLSs7IENIRUNL OiAJZ290byBMQkIwXzUKLSs7IENIRUNLOiAuTHRtcDE6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBCbG9jayBhZGRyZXNzIHRha2VuCi0rOyBDSEVDSzogTEJCMF80OiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgJWwyCi0rOyBDSEVDSzogCXcwID0gMgotKzsgQ0hF Q0s6IExCQjBfNTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICUuc3BsaXQKLSs7 IENIRUNLOiAJZXhpdAotKzsgQ0hFQ0s6IC5MZnVuY19lbmQwOgotKzsgQ0hFQ0s6IAkuc2l6ZQli YXIsIC5MZnVuY19lbmQwLWJhcgotKzsgQ0hFQ0s6IAkuc2l6ZQkuTGJhciRsb2NhbCwgLkxmdW5j X2VuZDAtYmFyCi0rOyBDSEVDSzogCS5jZmlfZW5kcHJvYwotKzsgQ0hFQ0s6IAkuc2VjdGlvbgku anVtcHRhYmxlcywiIixAcHJvZ2JpdHMKLSs7IENIRUNLOiBCUEYuSlQuMC4wOgotKzsgQ0hFQ0s6 IAkucXVhZAlMQkIwXzMKLSs7IENIRUNLOiAJLnNpemUJQlBGLkpULjAuMCwgOAotKzsgQ0hFQ0s6 IEJQRi5KVC4wLjE6Ci0rOyBDSEVDSzogCS5xdWFkCUxCQjBfNAotKzsgQ0hFQ0s6IAkuc2l6ZQlC UEYuSlQuMC4xLCA4Ci1kaWZmIC0tZ2l0IGEvbGx2bS90ZXN0L0NvZGVHZW4vQlBGL2p1bXBfdGFi bGVfZ2xvYmFsX3Zhci5sbCBiL2xsdm0vdGVzdC9Db2RlR2VuL0JQRi9qdW1wX3RhYmxlX2dsb2Jh bF92YXIubGwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAuLmJiY2E0 Njg1MDg0MwotLS0tIC9kZXYvbnVsbAotKysrIGIvbGx2bS90ZXN0L0NvZGVHZW4vQlBGL2p1bXBf dGFibGVfZ2xvYmFsX3Zhci5sbAotQEAgLTAsMCArMSw4MyBAQAotKzsgQ2hlY2tzIGdlbmVyYXRl ZCB1c2luZyBjb21tYW5kOgotKzsgICAgbGx2bS91dGlscy91cGRhdGVfdGVzdF9ib2R5LnB5IGxs dm0vdGVzdC9Db2RlR2VuL0JQRi9qdW1wX3RhYmxlX2dsb2JhbF92YXIubGwKLSsKLSs7IFJVTjog cm0gLXJmICV0ICYmIHNwbGl0LWZpbGUgJXMgJXQgJiYgY2QgJXQKLSs7IFJVTjogbGxjIC1tYXJj aD1icGYgLW1jcHU9djQgPCB0ZXN0LmxsIHwgRmlsZUNoZWNrICVzCi0rOwotKzsgU291cmNlIGNv ZGU6Ci0rOyAgIGludCBmb28odW5zaWduZWQgYSkgewotKzsgICAgIF9fbGFiZWxfXyBsMSwgbDI7 Ci0rOyAgICAgdm9pZCAqanQxW10gPSB7WzBdPSYmbDEsIFsxXT0mJmwyfTsKLSs7ICAgICBpbnQg cmV0ID0gMDsKLSs7Ci0rOyAgICAgZ290byAqanQxW2EgJSAyXTsKLSs7ICAgICBsMTogcmV0ICs9 IDE7Ci0rOyAgICAgbDI6IHJldCArPSAzOwotKzsgICAgIHJldHVybiByZXQ7Ci0rOyAgIH0KLSs7 Ci0rOyBDb21waWxhdGlvbiBGbGFnczoKLSs7ICAgY2xhbmcgLS10YXJnZXQ9YnBmIC1tY3B1PXY0 IC1PMiAtZW1pdC1sbHZtIC1TIHRlc3QuYwotKwotKy5pZmRlZiBHRU4KLSs7LS0tIHRlc3QubGwK LStAX19jb25zdC5mb28uanQxID0gcHJpdmF0ZSB1bm5hbWVkX2FkZHIgY29uc3RhbnQgWzIgeCBw dHJdIFtwdHIgYmxvY2thZGRyZXNzKEBmb28sICVsMSksIHB0ciBibG9ja2FkZHJlc3MoQGZvbywg JWwyKV0sIGFsaWduIDgKLSsKLStkZWZpbmUgZHNvX2xvY2FsIHJhbmdlKGkzMiAzLCA1KSBpMzIg QGZvbyhpMzIgbm91bmRlZiAlYSkgbG9jYWxfdW5uYW1lZF9hZGRyIHsKLStlbnRyeToKLSsgICVy ZW0gPSBhbmQgaTMyICVhLCAxCi0rICAlaWR4cHJvbSA9IHpleHQgbm5lZyBpMzIgJXJlbSB0byBp NjQKLSsgICVhcnJheWlkeCA9IGdldGVsZW1lbnRwdHIgaW5ib3VuZHMgbnV3IFsyIHggcHRyXSwg cHRyIEBfX2NvbnN0LmZvby5qdDEsIGk2NCAwLCBpNjQgJWlkeHByb20KLSsgICUwID0gbG9hZCBw dHIsIHB0ciAlYXJyYXlpZHgsIGFsaWduIDgKLSsgIGluZGlyZWN0YnIgcHRyICUwLCBbbGFiZWwg JWwxLCBsYWJlbCAlbDJdCi0rCi0rbDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7IHByZWRzID0gJWVudHJ5Ci0rICBiciBsYWJlbCAlbDIKLSsKLStsMjog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAl bDEsICVlbnRyeQotKyAgJXJldC4wID0gcGhpIGkzMiBbIDQsICVsMSBdLCBbIDMsICVlbnRyeSBd Ci0rICByZXQgaTMyICVyZXQuMAotK30KLSsKLSs7LS0tIGdlbgotK2VjaG8gIiIKLStlY2hvICI7 IEdlbmVyYXRlZCBjaGVja3MgZm9sbG93IgotK2VjaG8gIjsiCi0rbGxjIC1tYXJjaD1icGYgLW1j cHU9djQgPCB0ZXN0LmxsIFwKLSsgIHwgYXdrICcvIyAtLSBFbmQgZnVuY3Rpb24vIHtwPTB9IC9A ZnVuY3Rpb24vIHtwPTF9IHAge3ByaW50ICI7IENIRUNLIiAiOiAiICQwfScKLSsKLSsuZW5kaWYK LSsKLSs7IEdlbmVyYXRlZCBjaGVja3MgZm9sbG93Ci0rOwotKzsgQ0hFQ0s6IAkudHlwZQlmb28s QGZ1bmN0aW9uCi0rOyBDSEVDSzogZm9vOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgQGZvbwotKzsgQ0hFQ0s6IC5MZm9vJGxvY2FsOgotKzsgQ0hFQ0s6IAkudHlwZQkuTGZv byRsb2NhbCxAZnVuY3Rpb24KLSs7IENIRUNLOiAJLmNmaV9zdGFydHByb2MKLSs7IENIRUNLOiAj ICViYi4wOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAlZW50cnkKLSs7IENIRUNL OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBraWxsOiBkZWYgJHcx IGtpbGxlZCAkdzEgZGVmICRyMQotKzsgQ0hFQ0s6IAl3MSAmPSAxCi0rOyBDSEVDSzogCXIxIDw8 PSAzCi0rOyBDSEVDSzogCXIyID0gQlBGLkpULjAuMCBsbAotKzsgQ0hFQ0s6IAlyMiArPSByMQot KzsgQ0hFQ0s6IAlyMSA9ICoodTY0ICopKHIyICsgMCkKLSs7IENIRUNLOiAJZ290b3ggcjEKLSs7 IENIRUNLOiAuTHRtcDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBCbG9jayBh ZGRyZXNzIHRha2VuCi0rOyBDSEVDSzogTEJCMF8xOiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgJWwxCi0rOyBDSEVDSzogCXcwID0gNAotKzsgQ0hFQ0s6IAlnb3RvIExCQjBfMwot KzsgQ0hFQ0s6IC5MdG1wMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEJsb2Nr IGFkZHJlc3MgdGFrZW4KLSs7IENIRUNLOiBMQkIwXzI6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyAlbDIKLSs7IENIRUNLOiAJdzAgPSAzCi0rOyBDSEVDSzogTEJCMF8zOiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJS5zcGxpdAotKzsgQ0hFQ0s6IAlleGl0Ci0r OyBDSEVDSzogLkxmdW5jX2VuZDA6Ci0rOyBDSEVDSzogCS5zaXplCWZvbywgLkxmdW5jX2VuZDAt Zm9vCi0rOyBDSEVDSzogCS5zaXplCS5MZm9vJGxvY2FsLCAuTGZ1bmNfZW5kMC1mb28KLSs7IENI RUNLOiAJLmNmaV9lbmRwcm9jCi0rOyBDSEVDSzogCS5zZWN0aW9uCS5qdW1wdGFibGVzLCIiLEBw cm9nYml0cwotKzsgQ0hFQ0s6IEJQRi5KVC4wLjA6Ci0rOyBDSEVDSzogCS5xdWFkCUxCQjBfMQot KzsgQ0hFQ0s6IAkucXVhZAlMQkIwXzIKLSs7IENIRUNLOiAJLnNpemUJQlBGLkpULjAuMCwgMTYK LWRpZmYgLS1naXQgYS9sbHZtL3Rlc3QvQ29kZUdlbi9CUEYvanVtcF90YWJsZV9zd2l0Y2hfc3Rt dC5sbCBiL2xsdm0vdGVzdC9Db2RlR2VuL0JQRi9qdW1wX3RhYmxlX3N3aXRjaF9zdG10LmxsCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMDAwLi42ODJiMDI1ZDY2NWQKLS0t LSAvZGV2L251bGwKLSsrKyBiL2xsdm0vdGVzdC9Db2RlR2VuL0JQRi9qdW1wX3RhYmxlX3N3aXRj aF9zdG10LmxsCi1AQCAtMCwwICsxLDEyNiBAQAotKzsgQ2hlY2tzIGdlbmVyYXRlZCB1c2luZyBj b21tYW5kOgotKzsgICAgbGx2bS91dGlscy91cGRhdGVfdGVzdF9ib2R5LnB5IGxsdm0vdGVzdC9D b2RlR2VuL0JQRi9qdW1wX3RhYmxlX3N3aXRjaF9zdG10LmxsCi0rCi0rOyBSVU46IHJtIC1yZiAl dCAmJiBzcGxpdC1maWxlICVzICV0ICYmIGNkICV0Ci0rOyBSVU46IGxsYyAtbWFyY2g9YnBmIC1t Y3B1PXY0IC1icGYtbWluLWp1bXAtdGFibGUtZW50cmllcz0zIDwgdGVzdC5sbCB8IEZpbGVDaGVj ayAlcwotKzsKLSs7IFNvdXJjZSBjb2RlOgotKzsgICBpbnQgcmV0X3VzZXI7Ci0rOyAgIGludCBm b28oaW50IGEpCi0rOyAgIHsKLSs7ICAgICAgc3dpdGNoIChhKSB7Ci0rOyAgICAgIGNhc2UgMTog cmV0X3VzZXIgPSAxODsgYnJlYWs7Ci0rOyAgICAgIGNhc2UgMjA6IHJldF91c2VyID0gNjsgYnJl YWs7Ci0rOyAgICAgIGNhc2UgMzA6IHJldF91c2VyID0gMjsgYnJlYWs7Ci0rOyAgICAgIGRlZmF1 bHQ6IGJyZWFrOwotKzsgICAgICB9Ci0rOyAgICAgIHJldHVybiAwOwotKzsgICB9Ci0rOwotKzsg Q29tcGlsYXRpb24gRmxhZ3M6Ci0rOyAgIGNsYW5nIC0tdGFyZ2V0PWJwZiAtbWNwdT12NCAtTzIg LWVtaXQtbGx2bSAtUyB0ZXN0LmMKLSsKLSsuaWZkZWYgR0VOCi0rOy0tLSB0ZXN0LmxsCi0rQHJl dF91c2VyID0gZHNvX2xvY2FsIGxvY2FsX3VubmFtZWRfYWRkciBnbG9iYWwgaTMyIDAsIGFsaWdu IDQKLSsKLStkZWZpbmUgZHNvX2xvY2FsIG5vdW5kZWYgaTMyIEBmb28oaTMyIG5vdW5kZWYgJWEp IGxvY2FsX3VubmFtZWRfYWRkciB7Ci0rZW50cnk6Ci0rICBzd2l0Y2ggaTMyICVhLCBsYWJlbCAl c3cuZXBpbG9nIFsKLSsgICAgaTMyIDEsIGxhYmVsICVzdy5lcGlsb2cuc2luay5zcGxpdAotKyAg ICBpMzIgMjAsIGxhYmVsICVzdy5iYjEKLSsgICAgaTMyIDMwLCBsYWJlbCAlc3cuYmIyCi0rICBd Ci0rCi0rc3cuYmIxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 IHByZWRzID0gJWVudHJ5Ci0rICBiciBsYWJlbCAlc3cuZXBpbG9nLnNpbmsuc3BsaXQKLSsKLStz dy5iYjI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMg PSAlZW50cnkKLSsgIGJyIGxhYmVsICVzdy5lcGlsb2cuc2luay5zcGxpdAotKwotK3N3LmVwaWxv Zy5zaW5rLnNwbGl0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICVlbnRy eSwgJXN3LmJiMSwgJXN3LmJiMgotKyAgJS5zaW5rID0gcGhpIGkzMiBbIDIsICVzdy5iYjIgXSwg WyA2LCAlc3cuYmIxIF0sIFsgMTgsICVlbnRyeSBdCi0rICBzdG9yZSBpMzIgJS5zaW5rLCBwdHIg QHJldF91c2VyLCBhbGlnbiA0Ci0rICBiciBsYWJlbCAlc3cuZXBpbG9nCi0rCi0rc3cuZXBpbG9n OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJXN3LmVw aWxvZy5zaW5rLnNwbGl0LCAlZW50cnkKLSsgIHJldCBpMzIgMAotK30KLSsKLSs7LS0tIGdlbgot K2VjaG8gIiIKLStlY2hvICI7IEdlbmVyYXRlZCBjaGVja3MgZm9sbG93IgotK2VjaG8gIjsiCi0r bGxjIC1tYXJjaD1icGYgLW1jcHU9djQgLWJwZi1taW4tanVtcC10YWJsZS1lbnRyaWVzPTMgPCB0 ZXN0LmxsIFwKLSsgIHwgYXdrICcvIyAtLSBFbmQgZnVuY3Rpb24vIHtwPTB9IC9AZnVuY3Rpb24v IHtwPTF9IHAge3ByaW50ICI7IENIRUNLIiAiOiAiICQwfScKLSsKLSsuZW5kaWYKLSsKLSs7IEdl bmVyYXRlZCBjaGVja3MgZm9sbG93Ci0rOwotKzsgQ0hFQ0s6IAkudHlwZQlmb28sQGZ1bmN0aW9u Ci0rOyBDSEVDSzogZm9vOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQGZv bwotKzsgQ0hFQ0s6IC5MZm9vJGxvY2FsOgotKzsgQ0hFQ0s6IAkudHlwZQkuTGZvbyRsb2NhbCxA ZnVuY3Rpb24KLSs7IENIRUNLOiAJLmNmaV9zdGFydHByb2MKLSs7IENIRUNLOiAjICViYi4wOiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAlZW50cnkKLSs7IENIRUNLOiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBraWxsOiBkZWYgJHcxIGtpbGxlZCAk dzEgZGVmICRyMQotKzsgQ0hFQ0s6IAl3MSArPSAtMQotKzsgQ0hFQ0s6IAlpZiB3MSA+IDI5IGdv dG8gTEJCMF81Ci0rOyBDSEVDSzogIyAlYmIuMTogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgJWVudHJ5Ci0rOyBDSEVDSzogCXcyID0gMTgKLSs7IENIRUNLOiAJcjEgPDw9IDMKLSs7 IENIRUNLOiAJcjMgPSBCUEYuSlQuMC4wIGxsCi0rOyBDSEVDSzogCXI0ID0gQlBGLkpULjAuMCBs bAotKzsgQ0hFQ0s6IAlyNCArPSByMQotKzsgQ0hFQ0s6IAlyMSA9ICoodTY0ICopKHI0ICsgMCkK LSs7IENIRUNLOiAJcjMgKz0gcjEKLSs7IENIRUNLOiAJZ290b3ggcjMKLSs7IENIRUNLOiBMQkIw XzI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAlc3cuYmIxCi0rOyBDSEVDSzog CXcyID0gNgotKzsgQ0hFQ0s6IAlnb3RvIExCQjBfNAotKzsgQ0hFQ0s6IExCQjBfMzogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjICVzdy5iYjIKLSs7IENIRUNLOiAJdzIgPSAyCi0r OyBDSEVDSzogTEJCMF80OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJXN3LmVw aWxvZy5zaW5rLnNwbGl0Ci0rOyBDSEVDSzogCXIxID0gcmV0X3VzZXIgbGwKLSs7IENIRUNLOiAJ Kih1MzIgKikocjEgKyAwKSA9IHcyCi0rOyBDSEVDSzogTEJCMF81OiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgJXN3LmVwaWxvZwotKzsgQ0hFQ0s6IAl3MCA9IDAKLSs7IENIRUNL OiAJZXhpdAotKzsgQ0hFQ0s6IC5MZnVuY19lbmQwOgotKzsgQ0hFQ0s6IAkuc2l6ZQlmb28sIC5M ZnVuY19lbmQwLWZvbwotKzsgQ0hFQ0s6IAkuc2l6ZQkuTGZvbyRsb2NhbCwgLkxmdW5jX2VuZDAt Zm9vCi0rOyBDSEVDSzogCS5jZmlfZW5kcHJvYwotKzsgQ0hFQ0s6IAkuc2VjdGlvbgkuanVtcHRh YmxlcywiIixAcHJvZ2JpdHMKLSs7IENIRUNLOiBCUEYuSlQuMC4wOgotKzsgQ0hFQ0s6IAkucXVh ZAlMQkIwXzQKLSs7IENIRUNLOiAJLnF1YWQJTEJCMF81Ci0rOyBDSEVDSzogCS5xdWFkCUxCQjBf NQotKzsgQ0hFQ0s6IAkucXVhZAlMQkIwXzUKLSs7IENIRUNLOiAJLnF1YWQJTEJCMF81Ci0rOyBD SEVDSzogCS5xdWFkCUxCQjBfNQotKzsgQ0hFQ0s6IAkucXVhZAlMQkIwXzUKLSs7IENIRUNLOiAJ LnF1YWQJTEJCMF81Ci0rOyBDSEVDSzogCS5xdWFkCUxCQjBfNQotKzsgQ0hFQ0s6IAkucXVhZAlM QkIwXzUKLSs7IENIRUNLOiAJLnF1YWQJTEJCMF81Ci0rOyBDSEVDSzogCS5xdWFkCUxCQjBfNQot KzsgQ0hFQ0s6IAkucXVhZAlMQkIwXzUKLSs7IENIRUNLOiAJLnF1YWQJTEJCMF81Ci0rOyBDSEVD SzogCS5xdWFkCUxCQjBfNQotKzsgQ0hFQ0s6IAkucXVhZAlMQkIwXzUKLSs7IENIRUNLOiAJLnF1 YWQJTEJCMF81Ci0rOyBDSEVDSzogCS5xdWFkCUxCQjBfNQotKzsgQ0hFQ0s6IAkucXVhZAlMQkIw XzUKLSs7IENIRUNLOiAJLnF1YWQJTEJCMF8yCi0rOyBDSEVDSzogCS5xdWFkCUxCQjBfNQotKzsg Q0hFQ0s6IAkucXVhZAlMQkIwXzUKLSs7IENIRUNLOiAJLnF1YWQJTEJCMF81Ci0rOyBDSEVDSzog CS5xdWFkCUxCQjBfNQotKzsgQ0hFQ0s6IAkucXVhZAlMQkIwXzUKLSs7IENIRUNLOiAJLnF1YWQJ TEJCMF81Ci0rOyBDSEVDSzogCS5xdWFkCUxCQjBfNQotKzsgQ0hFQ0s6IAkucXVhZAlMQkIwXzUK LSs7IENIRUNLOiAJLnF1YWQJTEJCMF81Ci0rOyBDSEVDSzogCS5xdWFkCUxCQjBfMwotKzsgQ0hF Q0s6IAkuc2l6ZQlCUEYuSlQuMC4wLCAyNDAKLS0tIAotMi41MC4xCi0KCmRpZmYgLS1naXQgYS8w MDAxLVBvd2VyUEMtQWRkLWNoZWNrLWZvci1jYXN0LXdoZW4tc2h1ZmZsZXZlY3Rvci0xNzI0NDMu cGF0Y2ggYi8wMDAxLVBvd2VyUEMtQWRkLWNoZWNrLWZvci1jYXN0LXdoZW4tc2h1ZmZsZXZlY3Rv ci0xNzI0NDMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmNmMwYWQuLjAw MDAwMDAKLS0tIGEvMDAwMS1Qb3dlclBDLUFkZC1jaGVjay1mb3ItY2FzdC13aGVuLXNodWZmbGV2 ZWN0b3ItMTcyNDQzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLUZyb20g OThiODJmOTBkZmI3ODY1YWU0ZGJmY2I1YTgzYTllODE3ZTc4OTRhMSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IEtldmluIFBlciA8a2V2aW4ucGVyQHByb3Rvbm1haWwuY29tPgotRGF0 ZTogVGh1LCAxOCBEZWMgMjAyNSAxMDoxNDowMSArMDEwMAotU3ViamVjdDogW1BBVENIXSBbUG93 ZXJQQ106IEFkZCBjaGVjayBmb3IgY2FzdCB3aGVuIHNodWZmbGV2ZWN0b3IgKCMxNzI0NDMpCi0K LVRoZSBjcmFzaCBoYXBwZW5zIGJlY2F1c2UgdGhlIGNhc3QgZm9yIGBNYXNrID0KLWNhc3Q8U2h1 ZmZsZVZlY3RvclNETm9kZT4oUmVzKS0+Z2V0TWFzaygpO2AgZmFpbHMgZm9yIG5vZGUgYHQxOTc6 IHYxNmk4Ci09IHZlY3Rvcl9zaHVmZmxlPDE2LDE3LDE4LDE5LDQsNSw2LDcsOCw5LDEwLDExLHUs dSx1LHU+IHQxOTYsIHQxOTZgLgotSG93ZXZlciwgYm90aCBgTEhTYCBhbmQgYFJIU2AgYXJlIHRo ZSBzYW1lIG5vZGUsIHNvCi1gREFHLmdldENvbW11dGVkVmVjdG9yU2h1ZmZsZWAgZG9lc24ndCBy ZXR1cm4gYSBgU2h1ZmZsZVZlY3RvclNETm9kZWAKLWFuZCBjcmFzaGVzLiBUaGUgZml4IGlzIHRv IGFkZCBhIGNoZWNrIGJlZm9yZSB0aGUgY2FzdCBpcyBwZXJmb3JtZWQuCi0KLUNsb3NlcyBodHRw czovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvaXNzdWVzLzE3MjI2NQotLS0tCi0gbGx2 bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDSVNlbExvd2VyaW5nLmNwcCAgIHwgIDQgKwotIC4uLi90 ZXN0L0NvZGVHZW4vUG93ZXJQQy92ZWNfc2h1ZmZsZV9sZV9iZS5sbCB8IDk0ICsrKysrKysrKysr KysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDk4IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9k ZSAxMDA2NDQgbGx2bS90ZXN0L0NvZGVHZW4vUG93ZXJQQy92ZWNfc2h1ZmZsZV9sZV9iZS5sbAot Ci1kaWZmIC0tZ2l0IGEvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDSVNlbExvd2VyaW5nLmNw cCBiL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ0lTZWxMb3dlcmluZy5jcHAKLWluZGV4IDVi MWQ5ZjgxNDgwNi4uMjEyOTdiODEyOTY4IDEwMDY0NAotLS0tIGEvbGx2bS9saWIvVGFyZ2V0L1Bv d2VyUEMvUFBDSVNlbExvd2VyaW5nLmNwcAotKysrIGIvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMv UFBDSVNlbExvd2VyaW5nLmNwcAotQEAgLTE2ODg2LDYgKzE2ODg2LDEwIEBAIFNEVmFsdWUgUFBD VGFyZ2V0TG93ZXJpbmc6OmNvbWJpbmVWZWN0b3JTaHVmZmxlKFNodWZmbGVWZWN0b3JTRE5vZGUg KlNWTiwKLSAgICAgICBSSFMuZ2V0T3Bjb2RlKCkgIT0gSVNEOjpWRUNUT1JfU0hVRkZMRSkgewot ICAgICBzdGQ6OnN3YXAoTEhTLCBSSFMpOwotICAgICBSZXMgPSBEQUcuZ2V0Q29tbXV0ZWRWZWN0 b3JTaHVmZmxlKCpTVk4pOwotKwotKyAgICBpZiAoIWlzYTxTaHVmZmxlVmVjdG9yU0ROb2RlPihS ZXMpKQotKyAgICAgIHJldHVybiBSZXM7Ci0rCi0gICAgIE1hc2sgPSBjYXN0PFNodWZmbGVWZWN0 b3JTRE5vZGU+KFJlcyktPmdldE1hc2soKTsKLSAgIH0KLSAKLWRpZmYgLS1naXQgYS9sbHZtL3Rl c3QvQ29kZUdlbi9Qb3dlclBDL3ZlY19zaHVmZmxlX2xlX2JlLmxsIGIvbGx2bS90ZXN0L0NvZGVH ZW4vUG93ZXJQQy92ZWNfc2h1ZmZsZV9sZV9iZS5sbAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IDAwMDAwMDAwMDAwMC4uMjRjMWU1NGRkOTUyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9sbHZt L3Rlc3QvQ29kZUdlbi9Qb3dlclBDL3ZlY19zaHVmZmxlX2xlX2JlLmxsCi1AQCAtMCwwICsxLDk0 IEBACi0rOyBOT1RFOiBBc3NlcnRpb25zIGhhdmUgYmVlbiBhdXRvZ2VuZXJhdGVkIGJ5IHV0aWxz L3VwZGF0ZV9sbGNfdGVzdF9jaGVja3MucHkKLSs7IFJVTjogbGxjIC12ZXJpZnktbWFjaGluZWlu c3RycyA8ICVzIC1tdHJpcGxlPXBvd2VycGM2NGxlLXVua25vd24tbGludXgtZ251IHwgRmlsZUNo ZWNrIC1jaGVjay1wcmVmaXg9Q0hFQ0stTEUgJXMKLSs7IFJVTjogbGxjIC12ZXJpZnktbWFjaGlu ZWluc3RycyA8ICVzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudSB8IEZpbGVD aGVjayAtY2hlY2stcHJlZml4PUNIRUNLLUJFICVzCi0rCi0rZGVmaW5lIDwzMiB4IGkzMj4gQGlz c3VlXzE3MjI2NSg8MzIgeCBpMzI+ICVCU19BUkdfMSwgPDMgeCBpMzI+ICUwKSB7Ci0rOyBDSEVD Sy1MQUJFTDogaXNzdWVfMTcyMjY1OgotKzsgQ0hFQ0s6ICAgICAgICMgJWJiLjA6ICMgJWVudHJ5 Ci0rOyBDSEVDSy1ORVhUOiAgICBhZGRpcyAzLCAyLCAuTENQSTE4XzBAdG9jQGhhCi0rOyBDSEVD Sy1ORVhUOiAgICB2c3BsdHcgMywgMTAsIDEKLSs7IENIRUNLLU5FWFQ6ICAgIGFkZGkgMywgMywg LkxDUEkxOF8wQHRvY0BsCi0rOyBDSEVDSy1ORVhUOiAgICB2bXIgNywgMwotKzsgQ0hFQ0stTkVY VDogICAgbHZ4IDQsIDAsIDMKLSs7IENIRUNLLU5FWFQ6ICAgIGFkZGlzIDMsIDIsIC5MQ1BJMThf MUB0b2NAaGEKLSs7IENIRUNLLU5FWFQ6ICAgIGFkZGkgMywgMywgLkxDUEkxOF8xQHRvY0BsCi0r OyBDSEVDSy1ORVhUOiAgICB2bXIgOCwgMwotKzsgQ0hFQ0stTkVYVDogICAgdm1yIDksIDMKLSs7 IENIRUNLLU5FWFQ6ICAgIHZwZXJtIDQsIDMsIDMsIDQKLSs7IENIRUNLLU5FWFQ6ICAgIGx2eCAx LCAwLCAzCi0rOyBDSEVDSy1ORVhUOiAgICBhZGRpcyAzLCAyLCAuTENQSTE4XzJAdG9jQGhhCi0r OyBDSEVDSy1ORVhUOiAgICBhZGRpIDMsIDMsIC5MQ1BJMThfMkB0b2NAbAotKzsgQ0hFQ0stTkVY VDogICAgbHZ4IDUsIDAsIDMKLSs7IENIRUNLLU5FWFQ6ICAgIGFkZGlzIDMsIDIsIC5MQ1BJMThf M0B0b2NAaGEKLSs7IENIRUNLLU5FWFQ6ICAgIGFkZGkgMywgMywgLkxDUEkxOF8zQHRvY0BsCi0r OyBDSEVDSy1ORVhUOiAgICBsdnggNiwgMCwgMwotKzsgQ0hFQ0stTkVYVDogICAgYWRkaXMgMywg MiwgLkxDUEkxOF80QHRvY0BoYQotKzsgQ0hFQ0stTkVYVDogICAgYWRkaSAzLCAzLCAuTENQSTE4 XzRAdG9jQGwKLSs7IENIRUNLLU5FWFQ6ICAgIHZwZXJtIDQsIDIsIDQsIDEKLSs7IENIRUNLLU5F WFQ6ICAgIGx2eCAyLCAwLCAzCi0rOyBDSEVDSy1ORVhUOiAgICB2cGVybSAwLCAzLCAzLCA1Ci0r OyBDSEVDSy1ORVhUOiAgICB2cGVybSA1LCAzLCAzLCA2Ci0rOyBDSEVDSy1ORVhUOiAgICB2cGVy bSA2LCAzLCAzLCAyCi0rOyBDSEVDSy1ORVhUOiAgICB2bXIgMiwgMAotKzsgQ0hFQ0stTkVYVDog ICAgYmxyCi0rOyBDSEVDSy1MRS1MQUJFTDogaXNzdWVfMTcyMjY1OgotKzsgQ0hFQ0stTEU6ICAg ICAgICMgJWJiLjA6ICMgJWVudHJ5Ci0rOyBDSEVDSy1MRS1ORVhUOiAgICBhZGRpcyAzLCAyLCAu TENQSTBfMEB0b2NAaGEKLSs7IENIRUNLLUxFLU5FWFQ6ICAgIHh4c3BsdHcgMzUsIDQyLCAxCi0r OyBDSEVDSy1MRS1ORVhUOiAgICBhZGRpIDMsIDMsIC5MQ1BJMF8wQHRvY0BsCi0rOyBDSEVDSy1M RS1ORVhUOiAgICB2bXIgNywgMwotKzsgQ0hFQ0stTEUtTkVYVDogICAgdm1yIDgsIDMKLSs7IENI RUNLLUxFLU5FWFQ6ICAgIHZtciA5LCAzCi0rOyBDSEVDSy1MRS1ORVhUOiAgICBseHZkMnggMCwg MCwgMwotKzsgQ0hFQ0stTEUtTkVYVDogICAgYWRkaXMgMywgMiwgLkxDUEkwXzFAdG9jQGhhCi0r OyBDSEVDSy1MRS1ORVhUOiAgICBhZGRpIDMsIDMsIC5MQ1BJMF8xQHRvY0BsCi0rOyBDSEVDSy1M RS1ORVhUOiAgICBseHZkMnggMSwgMCwgMwotKzsgQ0hFQ0stTEUtTkVYVDogICAgYWRkaXMgMywg MiwgLkxDUEkwXzJAdG9jQGhhCi0rOyBDSEVDSy1MRS1ORVhUOiAgICBhZGRpIDMsIDMsIC5MQ1BJ MF8yQHRvY0BsCi0rOyBDSEVDSy1MRS1ORVhUOiAgICBseHZkMnggMiwgMCwgMwotKzsgQ0hFQ0st TEUtTkVYVDogICAgYWRkaXMgMywgMiwgLkxDUEkwXzNAdG9jQGhhCi0rOyBDSEVDSy1MRS1ORVhU OiAgICBhZGRpIDMsIDMsIC5MQ1BJMF8zQHRvY0BsCi0rOyBDSEVDSy1MRS1ORVhUOiAgICB4eHN3 YXBkIDM2LCAwCi0rOyBDSEVDSy1MRS1ORVhUOiAgICBseHZkMnggMCwgMCwgMwotKzsgQ0hFQ0st TEUtTkVYVDogICAgdnBlcm0gNCwgMiwgMywgNAotKzsgQ0hFQ0stTEUtTkVYVDogICAgeHhzd2Fw ZCAzNywgMQotKzsgQ0hFQ0stTEUtTkVYVDogICAgdnBlcm0gMiwgMywgMywgNQotKzsgQ0hFQ0st TEUtTkVYVDogICAgeHhzd2FwZCAzMiwgMgotKzsgQ0hFQ0stTEUtTkVYVDogICAgdnBlcm0gNSwg MywgMywgMAotKzsgQ0hFQ0stTEUtTkVYVDogICAgeHhzd2FwZCAzMywgMAotKzsgQ0hFQ0stTEUt TkVYVDogICAgdnBlcm0gNiwgMywgMywgMQotKzsgQ0hFQ0stTEUtTkVYVDogICAgYmxyCi0rOwot KzsgQ0hFQ0stQkUtTEFCRUw6IGlzc3VlXzE3MjI2NToKLSs7IENIRUNLLUJFOiAgICAgICAjICVi Yi4wOiAjICVlbnRyeQotKzsgQ0hFQ0stQkUtTkVYVDogICAgYWRkaXMgMywgMiwgLkxDUEkwXzBA dG9jQGhhCi0rOyBDSEVDSy1CRS1ORVhUOiAgICB2c3BsdHcgMywgMTAsIDIKLSs7IENIRUNLLUJF LU5FWFQ6ICAgIGFkZGkgMywgMywgLkxDUEkwXzBAdG9jQGwKLSs7IENIRUNLLUJFLU5FWFQ6ICAg IHZtciA3LCAzCi0rOyBDSEVDSy1CRS1ORVhUOiAgICBsdnggNCwgMCwgMwotKzsgQ0hFQ0stQkUt TkVYVDogICAgYWRkaXMgMywgMiwgLkxDUEkwXzJAdG9jQGhhCi0rOyBDSEVDSy1CRS1ORVhUOiAg ICBhZGRpIDMsIDMsIC5MQ1BJMF8yQHRvY0BsCi0rOyBDSEVDSy1CRS1ORVhUOiAgICBsdnggNSwg MCwgMwotKzsgQ0hFQ0stQkUtTkVYVDogICAgYWRkaXMgMywgMiwgLkxDUEkwXzNAdG9jQGhhCi0r OyBDSEVDSy1CRS1ORVhUOiAgICBhZGRpIDMsIDMsIC5MQ1BJMF8zQHRvY0BsCi0rOyBDSEVDSy1C RS1ORVhUOiAgICB2cGVybSAwLCAzLCAzLCA1Ci0rOyBDSEVDSy1CRS1ORVhUOiAgICBsdnggNSwg MCwgMwotKzsgQ0hFQ0stQkUtTkVYVDogICAgYWRkaXMgMywgMiwgLkxDUEkwXzFAdG9jQGhhCi0r OyBDSEVDSy1CRS1ORVhUOiAgICBhZGRpIDMsIDMsIC5MQ1BJMF8xQHRvY0BsCi0rOyBDSEVDSy1C RS1ORVhUOiAgICBsdnggMSwgMCwgMwotKzsgQ0hFQ0stQkUtTkVYVDogICAgYWRkaXMgMywgMiwg LkxDUEkwXzRAdG9jQGhhCi0rOyBDSEVDSy1CRS1ORVhUOiAgICBhZGRpIDMsIDMsIC5MQ1BJMF80 QHRvY0BsCi0rOyBDSEVDSy1CRS1ORVhUOiAgICB2cGVybSA0LCAzLCAzLCA0Ci0rOyBDSEVDSy1C RS1ORVhUOiAgICB2cGVybSA0LCA0LCAyLCAxCi0rOyBDSEVDSy1CRS1ORVhUOiAgICBsdnggMiwg MCwgMwotKzsgQ0hFQ0stQkUtTkVYVDogICAgdnBlcm0gNSwgMywgMywgNQotKzsgQ0hFQ0stQkUt TkVYVDogICAgdnBlcm0gNiwgMywgMywgMgotKzsgQ0hFQ0stQkUtTkVYVDogICAgdm1yIDIsIDAK LSs7IENIRUNLLUJFLU5FWFQ6ICAgIHZtciA4LCAzCi0rOyBDSEVDSy1CRS1ORVhUOiAgICB2bXIg OSwgMwotKzsgQ0hFQ0stQkUtTkVYVDogICAgYmxyCi0rZW50cnk6Ci0rICAldmVjaW5pdDM3ID0g c2h1ZmZsZXZlY3RvciA8MyB4IGkzMj4gJTAsIDwzIHggaTMyPiB6ZXJvaW5pdGlhbGl6ZXIsIDwz MiB4IGkzMj4gPGkzMiAyLCBpMzIgMiwgaTMyIDIsIGkzMiAyLCBpMzIgMiwgaTMyIDIsIGkzMiAy LCBpMzIgMiwgaTMyIDIsIGkzMiAyLCBpMzIgcG9pc29uLCBpMzIgcG9pc29uLCBpMzIgcG9pc29u LCBpMzIgcG9pc29uLCBpMzIgcG9pc29uLCBpMzIgcG9pc29uLCBpMzIgMiwgaTMyIHBvaXNvbiwg aTMyIHBvaXNvbiwgaTMyIHBvaXNvbiwgaTMyIHBvaXNvbiwgaTMyIHBvaXNvbiwgaTMyIHBvaXNv biwgaTMyIHBvaXNvbiwgaTMyIHBvaXNvbiwgaTMyIHBvaXNvbiwgaTMyIHBvaXNvbiwgaTMyIHBv aXNvbiwgaTMyIHBvaXNvbiwgaTMyIHBvaXNvbiwgaTMyIHBvaXNvbiwgaTMyIHBvaXNvbj4KLSsg ICVzaHVmZmxlNTYgPSBzaHVmZmxldmVjdG9yIDwzMiB4IGkzMj4gJXZlY2luaXQzNywgPDMyIHgg aTMyPiAlQlNfQVJHXzEsIDwzMiB4IGkzMj4gPGkzMiA0LCBpMzIgOSwgaTMyIDMsIGkzMiAzLCBp MzIgNCwgaTMyIDEsIGkzMiAxLCBpMzIgMCwgaTMyIDE2LCBpMzIgNSwgaTMyIDUsIGkzMiAzNCwg aTMyIDMsIGkzMiAwLCBpMzIgOCwgaTMyIDIsIGkzMiA4LCBpMzIgMSwgaTMyIDAsIGkzMiAwLCBp MzIgMCwgaTMyIDEsIGkzMiAwLCBpMzIgMCwgaTMyIDcsIGkzMiA1LCBpMzIgMywgaTMyIDYsIGkz MiAwLCBpMzIgMywgaTMyIDQsIGkzMiA3PgotKyAgcmV0IDwzMiB4IGkzMj4gJXNodWZmbGU1Ngot K30KLS0tIAotMi41Mi4wCi0KCmRpZmYgLS1naXQgYS8wMDAxLVN5c3RlbVotRml4LWNvZGUtaW4t d2lkZW5pbmctdmVjdG9yLW11bHRpcGxpY2F0aW9uLTEucGF0Y2ggYi8wMDAxLVN5c3RlbVotRml4 LWNvZGUtaW4td2lkZW5pbmctdmVjdG9yLW11bHRpcGxpY2F0aW9uLTEucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkZTJkYzkuLjAwMDAwMDAKLS0tIGEvMDAwMS1TeXN0ZW1a LUZpeC1jb2RlLWluLXdpZGVuaW5nLXZlY3Rvci1tdWx0aXBsaWNhdGlvbi0xLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMTkxICswLDAgQEAKLUZyb20gZmMxMmZjNjM1Yjk2ZTlmYTUyMWEzM2Vi MzEzMzZjNTM5ZWVkMTkxOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHN1amlhbklC TSA8OTg0ODgwNjArc3VqaWFuSUJNQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IFRo dSwgMzEgSnVsIDIwMjUgMTM6MTg6MjMgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gW1N5c3RlbVpd IEZpeCBjb2RlIGluIHdpZGVuaW5nIHZlY3RvciBtdWx0aXBsaWNhdGlvbgotICgjMTUwODM2KQot Ci1Db21taXQgY2RjNzg2NCBoYXMgYW4gZXJyb3Igd2hpY2ggd291bGQgd3JvbmdseSBmb2xkIHdp ZGVuaW5nCi1tdWx0aXBsaWNhdGlvbnMgaW50byBhbiBldmVuL29kZCB3aWRlbmluZyBvcGVyYXRp b24uCi1UaGlzIFBSIGZpeGVzIGl0IGFuZCBhZGRzIHRlc3RzIHRvIGNoZWNrIHNjZW5hcmlvcyB3 aGljaCBzaG91bGQgbm90IGJlCi1mb2xkZWQgaW50byBhbiBldmVuL29kZCB3aWRlbmluZyBvcGVy YXRpb24gYXJlIGFjdHVhbGx5IG5vdC4KLS0tLQotIC4uLi9UYXJnZXQvU3lzdGVtWi9TeXN0ZW1a SVNlbExvd2VyaW5nLmNwcCAgICB8ICAgMiArLQotIGxsdm0vdGVzdC9Db2RlR2VuL1N5c3RlbVov dmVjLW11bC0wNy5sbCAgICAgICB8IDExNCArKysrKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNo YW5nZWQsIDExNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9s bHZtL2xpYi9UYXJnZXQvU3lzdGVtWi9TeXN0ZW1aSVNlbExvd2VyaW5nLmNwcCBiL2xsdm0vbGli L1RhcmdldC9TeXN0ZW1aL1N5c3RlbVpJU2VsTG93ZXJpbmcuY3BwCi1pbmRleCBlMzBkNzIzNWI4 MWIuLmZiMGE0N2RjOWRjNCAxMDA2NDQKLS0tLSBhL2xsdm0vbGliL1RhcmdldC9TeXN0ZW1aL1N5 c3RlbVpJU2VsTG93ZXJpbmcuY3BwCi0rKysgYi9sbHZtL2xpYi9UYXJnZXQvU3lzdGVtWi9TeXN0 ZW1aSVNlbExvd2VyaW5nLmNwcAotQEAgLTkwNDQsNyArOTA0NCw3IEBAIHN0YXRpYyB1bnNpZ25l ZCBkZXRlY3RFdmVuT2RkTXVsdGlwbHlPcGVyYW5kKGNvbnN0IFNlbGVjdGlvbkRBRyAmREFHLAot ICAgICAgICAgaWYgKHVuc2lnbmVkKFNodWZmbGVNYXNrW0VsdF0pICE9IDIgKiBFbHQpCi0gICAg ICAgICAgIENhblVzZUV2ZW4gPSBmYWxzZTsKLSAgICAgICAgIGlmICh1bnNpZ25lZChTaHVmZmxl TWFza1tFbHRdKSAhPSAyICogRWx0ICsgMSkKLS0gICAgICAgICAgQ2FuVXNlRXZlbiA9IHRydWU7 Ci0rICAgICAgICAgIENhblVzZU9kZCA9IGZhbHNlOwotICAgICAgIH0KLSAgICAgICBPcCA9IE9w LmdldE9wZXJhbmQoMCk7Ci0gICAgICAgaWYgKENhblVzZUV2ZW4pCi1kaWZmIC0tZ2l0IGEvbGx2 bS90ZXN0L0NvZGVHZW4vU3lzdGVtWi92ZWMtbXVsLTA3LmxsIGIvbGx2bS90ZXN0L0NvZGVHZW4v U3lzdGVtWi92ZWMtbXVsLTA3LmxsCi1pbmRleCA3M2M3YThkZWM1ZGYuLjU4MzU2MTYyNWNmYyAx MDA2NDQKLS0tLSBhL2xsdm0vdGVzdC9Db2RlR2VuL1N5c3RlbVovdmVjLW11bC0wNy5sbAotKysr IGIvbGx2bS90ZXN0L0NvZGVHZW4vU3lzdGVtWi92ZWMtbXVsLTA3LmxsCi1AQCAtMyw2ICszLDIz IEBACi0gOwotIDsgUlVOOiBsbGMgPCAlcyAtbXRyaXBsZT1zMzkweC1saW51eC1nbnUgLW1jcHU9 ejEzIHwgRmlsZUNoZWNrICVzCi0gCi0rOyBUZXN0IGEgdjE2aTggLT4gdjhpMTYgdW5zaWduZWQg d2lkZW5pbmcgbXVsdGlwbGljYXRpb24KLSs7IHdoaWNoIGlzIG5vdCBmb2xkZWQgaW50byBhbiBl dmVuL29kZCB3aWRlbmluZyBvcGVyYXRpb24uCi0rZGVmaW5lIDw4IHggaTE2PiBAZjFfbm90KDwx NiB4IGk4PiAldmFsMSwgPDE2IHggaTg+ICV2YWwyKSB7Ci0rOyBDSEVDSy1MQUJFTDogZjFfbm90 OgotKzsgQ0hFQ0s6ICAgICAgICMgJWJiLjA6Ci0rOyBDSEVDSy1ORVhUOiAgICB2dXBsaGIgJXYw LCAldjI0Ci0rOyBDSEVDSy1ORVhUOiAgICB2dXBsaGIgJXYxLCAldjI2Ci0rOyBDSEVDSy1ORVhU OiAgICB2bWxodyAldjI0LCAldjAsICV2MQotKzsgQ0hFQ0stTkVYVDogICAgYnIgJXIxNAotKyAg JXNodWYxID0gc2h1ZmZsZXZlY3RvciA8MTYgeCBpOD4gJXZhbDEsIDwxNiB4IGk4PiBwb2lzb24s IDw4IHggaTMyPiA8aTMyIDAsIGkzMiAxLCBpMzIgMiwgaTMyIDMsIGkzMiA0LCBpMzIgNSwgaTMy IDYsIGkzMiA3PgotKyAgJXpleHQxID0gemV4dCA8OCB4IGk4PiAlc2h1ZjEgdG8gPDggeCBpMTY+ Ci0rICAlc2h1ZjIgPSBzaHVmZmxldmVjdG9yIDwxNiB4IGk4PiAldmFsMiwgPDE2IHggaTg+IHBv aXNvbiwgPDggeCBpMzI+IDxpMzIgMCwgaTMyIDEsIGkzMiAyLCBpMzIgMywgaTMyIDQsIGkzMiA1 LCBpMzIgNiwgaTMyIDc+Ci0rICAlemV4dDIgPSB6ZXh0IDw4IHggaTg+ICVzaHVmMiB0byA8OCB4 IGkxNj4KLSsgICVyZXQgPSBtdWwgPDggeCBpMTY+ICV6ZXh0MSwgJXpleHQyCi0rICByZXQgPDgg eCBpMTY+ICVyZXQKLSt9Ci0rCi0gOyBUZXN0IGEgdjE2aTggKGV2ZW4pIC0+IHY4aTE2IHVuc2ln bmVkIHdpZGVuaW5nIG11bHRpcGxpY2F0aW9uLgotIGRlZmluZSA8OCB4IGkxNj4gQGYxKDwxNiB4 IGk4PiAldmFsMSwgPDE2IHggaTg+ICV2YWwyKSB7Ci0gOyBDSEVDSy1MQUJFTDogZjE6Ci1AQCAt MzEsNiArNDgsMjMgQEAgZGVmaW5lIDw4IHggaTE2PiBAZjIoPDE2IHggaTg+ICV2YWwxLCA8MTYg eCBpOD4gJXZhbDIpIHsKLSAgIHJldCA8OCB4IGkxNj4gJXJldAotIH0KLSAKLSs7IFRlc3QgYSB2 MTZpOCAtPiB2OGkxNiBzaWduZWQgd2lkZW5pbmcgbXVsdGlwbGljYXRpb24KLSs7IHdoaWNoIGlz IG5vdCBmb2xkZWQgaW50byBhbiBldmVuL29kZCB3aWRlbmluZyBvcGVyYXRpb24uCi0rZGVmaW5l IDw4IHggaTE2PiBAZjNfbm90KDwxNiB4IGk4PiAldmFsMSwgPDE2IHggaTg+ICV2YWwyKSB7Ci0r OyBDSEVDSy1MQUJFTDogZjNfbm90OgotKzsgQ0hFQ0s6ICAgICAgICMgJWJiLjA6Ci0rOyBDSEVD Sy1ORVhUOiAgICB2dXBoYiAldjAsICV2MjYKLSs7IENIRUNLLU5FWFQ6ICAgIHZ1cGhiICV2MSwg JXYyNAotKzsgQ0hFQ0stTkVYVDogICAgdm1saHcgJXYyNCwgJXYxLCAldjAKLSs7IENIRUNLLU5F WFQ6ICAgIGJyICVyMTQKLSsgICVzaHVmMSA9IHNodWZmbGV2ZWN0b3IgPDE2IHggaTg+ICV2YWwx LCA8MTYgeCBpOD4gcG9pc29uLCA8OCB4IGkzMj4gPGkzMiAwLCBpMzIgMSwgaTMyIDIsIGkzMiAz LCBpMzIgNCwgaTMyIDUsIGkzMiA2LCBpMzIgNz4KLSsgICVzZXh0MSA9IHNleHQgPDggeCBpOD4g JXNodWYxIHRvIDw4IHggaTE2PgotKyAgJXNodWYyID0gc2h1ZmZsZXZlY3RvciA8MTYgeCBpOD4g JXZhbDIsIDwxNiB4IGk4PiBwb2lzb24sIDw4IHggaTMyPiA8aTMyIDAsIGkzMiAxLCBpMzIgMiwg aTMyIDMsIGkzMiA0LCBpMzIgNSwgaTMyIDYsIGkzMiA3PgotKyAgJXNleHQyID0gc2V4dCA8OCB4 IGk4PiAlc2h1ZjIgdG8gPDggeCBpMTY+Ci0rICAlcmV0ID0gbXVsIDw4IHggaTE2PiAlc2V4dDEs ICVzZXh0MgotKyAgcmV0IDw4IHggaTE2PiAlcmV0Ci0rfQotKwotIDsgVGVzdCBhIHYxNmk4IChl dmVuKSAtPiB2OGkxNiBzaWduZWQgd2lkZW5pbmcgbXVsdGlwbGljYXRpb24uCi0gZGVmaW5lIDw4 IHggaTE2PiBAZjMoPDE2IHggaTg+ICV2YWwxLCA8MTYgeCBpOD4gJXZhbDIpIHsKLSA7IENIRUNL LUxBQkVMOiBmMzoKLUBAIC01OSw2ICs5MywyMyBAQCBkZWZpbmUgPDggeCBpMTY+IEBmNCg8MTYg eCBpOD4gJXZhbDEsIDwxNiB4IGk4PiAldmFsMikgewotICAgcmV0IDw4IHggaTE2PiAlcmV0Ci0g fQotIAotKzsgVGVzdCBhIHY4aTE2IC0+IHY0aTMyIHVuc2lnbmVkIHdpZGVuaW5nIG11bHRpcGxp Y2F0aW9uCi0rOyB3aGljaCBpcyBub3QgZm9sZGVkIGludG8gYW4gZXZlbi9vZGQgd2lkZW5pbmcg b3BlcmF0aW9uLgotK2RlZmluZSA8NCB4IGkzMj4gQGY1X25vdCg8OCB4IGkxNj4gJXZhbDEsIDw4 IHggaTE2PiAldmFsMikgewotKzsgQ0hFQ0stTEFCRUw6IGY1X25vdDoKLSs7IENIRUNLOiAgICAg ICAjICViYi4wOgotKzsgQ0hFQ0stTkVYVDogICAgdnVwbGhoICV2MCwgJXYyNAotKzsgQ0hFQ0st TkVYVDogICAgdnVwbGhoICV2MSwgJXYyNgotKzsgQ0hFQ0stTkVYVDogICAgdm1sZiAldjI0LCAl djAsICV2MQotKzsgQ0hFQ0stTkVYVDogICAgYnIgJXIxNAotKyAgJXNodWYxID0gc2h1ZmZsZXZl Y3RvciA8OCB4IGkxNj4gJXZhbDEsIDw4IHggaTE2PiBwb2lzb24sIDw0IHggaTMyPiA8aTMyIDAs IGkzMiAxLCBpMzIgMiwgaTMyIDM+Ci0rICAlemV4dDEgPSB6ZXh0IDw0IHggaTE2PiAlc2h1ZjEg dG8gPDQgeCBpMzI+Ci0rICAlc2h1ZjIgPSBzaHVmZmxldmVjdG9yIDw4IHggaTE2PiAldmFsMiwg PDggeCBpMTY+IHBvaXNvbiwgPDQgeCBpMzI+IDxpMzIgMCwgaTMyIDEsIGkzMiAyLCBpMzIgMz4K LSsgICV6ZXh0MiA9IHpleHQgPDQgeCBpMTY+ICVzaHVmMiB0byA8NCB4IGkzMj4KLSsgICVyZXQg PSBtdWwgPDQgeCBpMzI+ICV6ZXh0MSwgJXpleHQyCi0rICByZXQgPDQgeCBpMzI+ICVyZXQKLSt9 Ci0rCi0gOyBUZXN0IGEgdjhpMTYgKGV2ZW4pIC0+IHY0aTMyIHVuc2lnbmVkIHdpZGVuaW5nIG11 bHRpcGxpY2F0aW9uLgotIGRlZmluZSA8NCB4IGkzMj4gQGY1KDw4IHggaTE2PiAldmFsMSwgPDgg eCBpMTY+ICV2YWwyKSB7Ci0gOyBDSEVDSy1MQUJFTDogZjU6Ci1AQCAtODcsNiArMTM4LDIzIEBA IGRlZmluZSA8NCB4IGkzMj4gQGY2KDw4IHggaTE2PiAldmFsMSwgPDggeCBpMTY+ICV2YWwyKSB7 Ci0gICByZXQgPDQgeCBpMzI+ICVyZXQKLSB9Ci0gCi0rOyBUZXN0IGEgdjhpMTYgLT4gdjRpMzIg c2lnbmVkIHdpZGVuaW5nIG11bHRpcGxpY2F0aW9uCi0rOyB3aGljaCBpcyBub3QgZm9sZGVkIGlu dG8gYW4gZXZlbi9vZGQgd2lkZW5pbmcgb3BlcmF0aW9uLgotK2RlZmluZSA8NCB4IGkzMj4gQGY3 X25vdCg8OCB4IGkxNj4gJXZhbDEsIDw4IHggaTE2PiAldmFsMikgewotKzsgQ0hFQ0stTEFCRUw6 IGY3X25vdDoKLSs7IENIRUNLOiAgICAgICAjICViYi4wOgotKzsgQ0hFQ0stTkVYVDogICAgdnVw aGggJXYwLCAldjI2Ci0rOyBDSEVDSy1ORVhUOiAgICB2dXBoaCAldjEsICV2MjQKLSs7IENIRUNL LU5FWFQ6ICAgIHZtbGYgJXYyNCwgJXYxLCAldjAKLSs7IENIRUNLLU5FWFQ6ICAgIGJyICVyMTQK LSsgICVzaHVmMSA9IHNodWZmbGV2ZWN0b3IgPDggeCBpMTY+ICV2YWwxLCA8OCB4IGkxNj4gcG9p c29uLCA8NCB4IGkzMj4gPGkzMiAwLCBpMzIgMSwgaTMyIDIsIGkzMiAzPgotKyAgJXNleHQxID0g c2V4dCA8NCB4IGkxNj4gJXNodWYxIHRvIDw0IHggaTMyPgotKyAgJXNodWYyID0gc2h1ZmZsZXZl Y3RvciA8OCB4IGkxNj4gJXZhbDIsIDw4IHggaTE2PiBwb2lzb24sIDw0IHggaTMyPiA8aTMyIDAs IGkzMiAxLCBpMzIgMiwgaTMyIDM+Ci0rICAlc2V4dDIgPSBzZXh0IDw0IHggaTE2PiAlc2h1ZjIg dG8gPDQgeCBpMzI+Ci0rICAlcmV0ID0gbXVsIDw0IHggaTMyPiAlc2V4dDEsICVzZXh0MgotKyAg cmV0IDw0IHggaTMyPiAlcmV0Ci0rfQotKwotIDsgVGVzdCBhIHY4aTE2IChldmVuKSAtPiB2NGkz MiBzaWduZWQgd2lkZW5pbmcgbXVsdGlwbGljYXRpb24uCi0gZGVmaW5lIDw0IHggaTMyPiBAZjco PDggeCBpMTY+ICV2YWwxLCA8OCB4IGkxNj4gJXZhbDIpIHsKLSA7IENIRUNLLUxBQkVMOiBmNzoK LUBAIC0xMTUsNiArMTgzLDI5IEBAIGRlZmluZSA8NCB4IGkzMj4gQGY4KDw4IHggaTE2PiAldmFs MSwgPDggeCBpMTY+ICV2YWwyKSB7Ci0gICByZXQgPDQgeCBpMzI+ICVyZXQKLSB9Ci0gCi0rOyBU ZXN0IGEgdjRpMzIgLT4gdjJpNjQgdW5zaWduZWQgd2lkZW5pbmcgbXVsdGlwbGljYXRpb24KLSs7 IHdoaWNoIGlzIG5vdCBmb2xkZWQgaW50byBhbiBldmVuL29kZCB3aWRlbmluZyBvcGVyYXRpb24u Ci0rZGVmaW5lIDwyIHggaTY0PiBAZjlfbm90KDw0IHggaTMyPiAldmFsMSwgPDQgeCBpMzI+ICV2 YWwyKSB7Ci0rOyBDSEVDSy1MQUJFTDogZjlfbm90OgotKzsgQ0hFQ0s6ICAgICAgICMgJWJiLjA6 Ci0rOyBDSEVDSy1ORVhUOiAgICB2dXBsaGYgJXYwLCAldjI0Ci0rOyBDSEVDSy1ORVhUOiAgICB2 dXBsaGYgJXYxLCAldjI2Ci0rOyBDSEVDSy1ORVhUOiAgICB2bGd2ZyAlcjAsICV2MSwgMQotKzsg Q0hFQ0stTkVYVDogICAgdmxndmcgJXIxLCAldjAsIDEKLSs7IENIRUNLLU5FWFQ6ICAgIG1zZ3Ig JXIxLCAlcjAKLSs7IENIRUNLLU5FWFQ6ICAgIHZsZ3ZnICVyMCwgJXYxLCAwCi0rOyBDSEVDSy1O RVhUOiAgICB2bGd2ZyAlcjIsICV2MCwgMAotKzsgQ0hFQ0stTkVYVDogICAgbXNnciAlcjIsICVy MAotKzsgQ0hFQ0stTkVYVDogICAgdmx2Z3AgJXYyNCwgJXIyLCAlcjEKLSs7IENIRUNLLU5FWFQ6 ICAgIGJyICVyMTQKLSsgICVzaHVmMSA9IHNodWZmbGV2ZWN0b3IgPDQgeCBpMzI+ICV2YWwxLCA8 NCB4IGkzMj4gcG9pc29uLCA8MiB4IGkzMj4gPGkzMiAwLCBpMzIgMT4KLSsgICV6ZXh0MSA9IHpl eHQgPDIgeCBpMzI+ICVzaHVmMSB0byA8MiB4IGk2ND4KLSsgICVzaHVmMiA9IHNodWZmbGV2ZWN0 b3IgPDQgeCBpMzI+ICV2YWwyLCA8NCB4IGkzMj4gcG9pc29uLCA8MiB4IGkzMj4gPGkzMiAwLCBp MzIgMT4KLSsgICV6ZXh0MiA9IHpleHQgPDIgeCBpMzI+ICVzaHVmMiB0byA8MiB4IGk2ND4KLSsg ICVyZXQgPSBtdWwgPDIgeCBpNjQ+ICV6ZXh0MSwgJXpleHQyCi0rICByZXQgPDIgeCBpNjQ+ICVy ZXQKLSt9Ci0rCi0gOyBUZXN0IGEgdjRpMzIgKGV2ZW4pIC0+IHYyaTY0IHVuc2lnbmVkIHdpZGVu aW5nIG11bHRpcGxpY2F0aW9uLgotIGRlZmluZSA8MiB4IGk2ND4gQGY5KDw0IHggaTMyPiAldmFs MSwgPDQgeCBpMzI+ICV2YWwyKSB7Ci0gOyBDSEVDSy1MQUJFTDogZjk6Ci1AQCAtMTQzLDYgKzIz NCwyOSBAQCBkZWZpbmUgPDIgeCBpNjQ+IEBmMTAoPDQgeCBpMzI+ICV2YWwxLCA8NCB4IGkzMj4g JXZhbDIpIHsKLSAgIHJldCA8MiB4IGk2ND4gJXJldAotIH0KLSAKLSs7IFRlc3QgYSB2NGkzMiAt PiB2Mmk2NCBzaWduZWQgd2lkZW5pbmcgbXVsdGlwbGljYXRpb24KLSs7IHdoaWNoIGlzIG5vdCBm b2xkZWQgaW50byBhbiBldmVuL29kZCB3aWRlbmluZyBvcGVyYXRpb24uCi0rZGVmaW5lIDwyIHgg aTY0PiBAZjExX25vdCg8NCB4IGkzMj4gJXZhbDEsIDw0IHggaTMyPiAldmFsMikgewotKzsgQ0hF Q0stTEFCRUw6IGYxMV9ub3Q6Ci0rOyBDSEVDSzogICAgICAgIyAlYmIuMDoKLSs7IENIRUNLLU5F WFQ6ICAgIHZ1cGhmICV2MCwgJXYyNAotKzsgQ0hFQ0stTkVYVDogICAgdnVwaGYgJXYxLCAldjI2 Ci0rOyBDSEVDSy1ORVhUOiAgICB2bGd2ZyAlcjAsICV2MSwgMQotKzsgQ0hFQ0stTkVYVDogICAg dmxndmcgJXIxLCAldjAsIDEKLSs7IENIRUNLLU5FWFQ6ICAgIG1zZ3IgJXIxLCAlcjAKLSs7IENI RUNLLU5FWFQ6ICAgIHZsZ3ZnICVyMCwgJXYxLCAwCi0rOyBDSEVDSy1ORVhUOiAgICB2bGd2ZyAl cjIsICV2MCwgMAotKzsgQ0hFQ0stTkVYVDogICAgbXNnciAlcjIsICVyMAotKzsgQ0hFQ0stTkVY VDogICAgdmx2Z3AgJXYyNCwgJXIyLCAlcjEKLSs7IENIRUNLLU5FWFQ6ICAgIGJyICVyMTQKLSsg ICVzaHVmMSA9IHNodWZmbGV2ZWN0b3IgPDQgeCBpMzI+ICV2YWwxLCA8NCB4IGkzMj4gcG9pc29u LCA8MiB4IGkzMj4gPGkzMiAwLCBpMzIgMT4KLSsgICVzZXh0MSA9IHNleHQgPDIgeCBpMzI+ICVz aHVmMSB0byA8MiB4IGk2ND4KLSsgICVzaHVmMiA9IHNodWZmbGV2ZWN0b3IgPDQgeCBpMzI+ICV2 YWwyLCA8NCB4IGkzMj4gcG9pc29uLCA8MiB4IGkzMj4gPGkzMiAwLCBpMzIgMT4KLSsgICVzZXh0 MiA9IHNleHQgPDIgeCBpMzI+ICVzaHVmMiB0byA8MiB4IGk2ND4KLSsgICVyZXQgPSBtdWwgPDIg eCBpNjQ+ICVzZXh0MSwgJXNleHQyCi0rICByZXQgPDIgeCBpNjQ+ICVyZXQKLSt9Ci0rCi0gOyBU ZXN0IGEgdjRpMzIgKGV2ZW4pIC0+IHYyaTY0IHNpZ25lZCB3aWRlbmluZyBtdWx0aXBsaWNhdGlv bi4KLSBkZWZpbmUgPDIgeCBpNjQ+IEBmMTEoPDQgeCBpMzI+ICV2YWwxLCA8NCB4IGkzMj4gJXZh bDIpIHsKLSA7IENIRUNLLUxBQkVMOiBmMTE6Ci0tLSAKLTIuNTIuMAotCgpkaWZmIC0tZ2l0IGEv MDAwMS1sbGQtQWRqdXN0LWNvbXByZXNzZWQtZGVidWctbGV2ZWwtdGVzdC1mb3ItczM5MHgtd2l0 LnBhdGNoIGIvMDAwMS1sbGQtQWRqdXN0LWNvbXByZXNzZWQtZGVidWctbGV2ZWwtdGVzdC1mb3It czM5MHgtd2l0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGRkMTQ2Li4w MDAwMDAwCi0tLSBhLzAwMDEtbGxkLUFkanVzdC1jb21wcmVzc2VkLWRlYnVnLWxldmVsLXRlc3Qt Zm9yLXMzOTB4LXdpdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20g NGZiYmRiNGY2Yjk1MTU4Yjg3ZTFiMDcyYjNhMjQ2NzIyY2NmM2I3ZCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IE5pa2l0YSBQb3BvdiA8bnBvcG92QHJlZGhhdC5jb20+Ci1EYXRlOiBG cmksIDE5IERlYyAyMDI1IDE3OjAyOjI0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFtsbGRdIEFk anVzdCBjb21wcmVzc2VkLWRlYnVnLWxldmVsIHRlc3QgZm9yIHMzOTB4IHdpdGgKLSBERkxUQ0Mg KCMxNzI5NzIpCi0KLUFmdGVyIGVuYWJsaW5nIERGTFRDQyBpbiB6bGliLW5nIGZvciBzMzkweCB0 aGlzIHRlc3Qgc3RhcnRzIGZhaWxpbmcsCi1iZWNhdXNlIHNsaWdodGx5IGJldHRlciBjb21wcmVz c2lvbiBpcyBwcm9kdWNlZCBhdCBsZXZlbCAxLiBBZGQgMWMgYXMgYQotcGVybWlzc2libGUgb3V0 cHV0LgotLS0tCi0gbGxkL3Rlc3QvRUxGL2NvbXByZXNzZWQtZGVidWctbGV2ZWwudGVzdCB8IDIg Ky0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlm ZiAtLWdpdCBhL2xsZC90ZXN0L0VMRi9jb21wcmVzc2VkLWRlYnVnLWxldmVsLnRlc3QgYi9sbGQv dGVzdC9FTEYvY29tcHJlc3NlZC1kZWJ1Zy1sZXZlbC50ZXN0Ci1pbmRleCA1YTRkMzdlMzFlY2Eu LjdkNjQyOThlNTE4ZiAxMDA2NDQKLS0tLSBhL2xsZC90ZXN0L0VMRi9jb21wcmVzc2VkLWRlYnVn LWxldmVsLnRlc3QKLSsrKyBiL2xsZC90ZXN0L0VMRi9jb21wcmVzc2VkLWRlYnVnLWxldmVsLnRl c3QKLUBAIC0xOCw3ICsxOCw3IEBACi0gIyBSVU46IGxsdm0tcmVhZGVsZiAtLXNlY3Rpb25zICV0 LjYgfCBGaWxlQ2hlY2sgLWNoZWNrLXByZWZpeGVzPUhFQURFUixMRVZFTDYgJXMKLSAKLSAjIEhF QURFUjogW05yXSBOYW1lICAgICAgICBUeXBlICAgICBBZGRyZXNzICBPZmYgICAgU2l6ZQotLSMg TEVWRUwxOiBbIDFdIC5kZWJ1Z19pbmZvIFBST0dCSVRTIDAwMDAwMDAwIDAwMDA5NCAwMDAwe3sx W2RlZl18MjF9fQotKyMgTEVWRUwxOiBbIDFdIC5kZWJ1Z19pbmZvIFBST0dCSVRTIDAwMDAwMDAw IDAwMDA5NCAwMDAwe3sxW2NkZWZdfDIxfX0KLSAjIExFVkVMNjogWyAxXSAuZGVidWdfaW5mbyBQ Uk9HQklUUyAwMDAwMDAwMCAwMDAwOTQgMDAwMDF7e1thYmNdfX0KLSAKLSAjIyBBIGxpdHRsZSBh cmJpdHJhcnkgZGVidWcgc2VjdGlvbiB3aGljaCBoYXMgYSBkaWZmZXJlbnQgc2l6ZSBhZnRlcgot LS0gCi0yLjUwLjEKLQoKZGlmZiAtLWdpdCBhLzAwMDItQlBGLVJlbW92ZS11bnVzZWQtd2Vhay1z eW1ib2wtX19icGZfdHJhcC0xNjYwMDMucGF0Y2ggYi8wMDAyLUJQRi1SZW1vdmUtdW51c2VkLXdl YWstc3ltYm9sLV9fYnBmX3RyYXAtMTY2MDAzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwYzdlMDE4Li4wMDAwMDAwCi0tLSBhLzAwMDItQlBGLVJlbW92ZS11bnVzZWQtd2Vh ay1zeW1ib2wtX19icGZfdHJhcC0xNjYwMDMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAg KzAsMCBAQAotRnJvbSBiZTRmYTE5ZWNmOTVkOTRkM2VmNDZiZTE4M2QzZDRiNGViYjZiYjQ3IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogeW9uZ2hvbmctc29uZyA8eWhzQGZiLmNvbT4K LURhdGU6IE1vbiwgMyBOb3YgMjAyNSAxMToxMTo0NyAtMDgwMAotU3ViamVjdDogW1BBVENIXSBb QlBGXSBSZW1vdmUgdW51c2VkIHdlYWsgc3ltYm9sIF9fYnBmX3RyYXAgKCMxNjYwMDMpCi0KLU5p a2l0YSBQb3BvdiByZXBvcnRlZCBhbiBpc3N1ZSAoWzFdKSB3aGVyZSBhIGRhbmdsaW5nIHdlYWsg c3ltYm9sCi1fX2JwZl90cmFwIGlzIGluIHRoZSBmaW5hbCBiaW5hcnkgYW5kIHRoaXMgY2F1c2Vk IGxpYmJwZiBmYWlsaW5nIGxpa2UKLWJlbG93OgotCi0gICQgdmVyaXN0YXQgLXYgLi90Lm8KLSAg UHJvY2Vzc2luZyAndC5vJy4uLgotICBsaWJicGY6IGVsZjogc2tpcHBpbmcgdW5yZWNvZ25pemVk IGRhdGEgc2VjdGlvbig0KSAuZWhfZnJhbWUKLSAgbGliYnBmOiBlbGY6IHNraXBwaW5nIHJlbG8g c2VjdGlvbig1KSAucmVsLmVoX2ZyYW1lIGZvciBzZWN0aW9uKDQpIC5laF9mcmFtZQotICBsaWJi cGY6IGZhaWxlZCB0byBmaW5kIEJURiBmb3IgZXh0ZXJuICdfX2JwZl90cmFwJzogLTMKLSAgRmFp bGVkIHRvIG9wZW4gJy4vdC5vJzogLTMKLQotSW4gbGx2bSwgdGhlIGRhZyBzZWxlY3Rpb24gcGhh c2UgZ2VuZXJhdGVzIF9fYnBmX3RyYXAgaW4gY29kZS4gTGF0ZXIgdGhlCi1VbnJlYWNoYWJsZUJs b2NrRWxpbSBwYXNzIHJlbW92ZWQgX19icGZfdHJhcCBmcm9tIHRoZSBjb2RlLCBidXQKLV9fYnBm X3RyYXAgc3ltYm9sIHN1cnZpdmVzIGluIHRoZSBzeW1ib2wgdGFibGUuCi0KLUhhdmluZyBhIGRh bmdsaW5nIF9fYnBmX3RyYXAgd2VhayBzeW1ib2wgaXMgbm90IGdvb2QgZm9yIG9sZCBrZXJuZWxz IGFzCi1zZWVuIGluIHRoZSBhYm92ZSB2ZXJpc3RhdCBmYWlsdXJlLiBBbHRob3VnaCB1c2VycyBj b3VsZCB1c2UgY29tcGlsZXIKLWZsYWcgYC1tbGx2bSAtYnBmLWRpc2FibGUtdHJhcC11bnJlYWNo YWJsZWAgdG8gd29ya2Fyb3VuZCB0aGUgaXNzdWUsCi10aGlzIHBhdGNoIGZpeGVkIHRoZSBpc3N1 ZSBieSByZW1vdmluZyB0aGUgZGFuZ2xpbmcgX19icGZfdHJhcC4KLQotICBbMV0gaHR0cHM6Ly9n aXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L2lzc3Vlcy8xNjU2OTYKLQotKGNoZXJyeSBwaWNr ZWQgZnJvbSBjb21taXQgOGZkMWJmMmY4YzllNmU3YzRiYzVmNjkxNWE5ZDUyYmIzNjcyNjAxYikK LS0tLQotIGxsdm0vbGliL1RhcmdldC9CUEYvQlBGQXNtUHJpbnRlci5jcHAgfCAyNCArKysrKysr KysrKysrKysrKysrKwotIGxsdm0vbGliL1RhcmdldC9CUEYvQlBGQXNtUHJpbnRlci5oICAgfCAg MSArCi0gbGx2bS90ZXN0L0NvZGVHZW4vQlBGL2JwZl90cmFwLmxsICAgICB8IDMyICsrKysrKysr KysrKysrKysrKysrKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKQot IGNyZWF0ZSBtb2RlIDEwMDY0NCBsbHZtL3Rlc3QvQ29kZUdlbi9CUEYvYnBmX3RyYXAubGwKLQot ZGlmZiAtLWdpdCBhL2xsdm0vbGliL1RhcmdldC9CUEYvQlBGQXNtUHJpbnRlci5jcHAgYi9sbHZt L2xpYi9UYXJnZXQvQlBGL0JQRkFzbVByaW50ZXIuY3BwCi1pbmRleCA3N2RjNGE3NWE3ZDYuLmIy YTgyMDQwZWU4MiAxMDA2NDQKLS0tLSBhL2xsdm0vbGliL1RhcmdldC9CUEYvQlBGQXNtUHJpbnRl ci5jcHAKLSsrKyBiL2xsdm0vbGliL1RhcmdldC9CUEYvQlBGQXNtUHJpbnRlci5jcHAKLUBAIC04 OCw2ICs4OCwxNiBAQCBib29sIEJQRkFzbVByaW50ZXI6OmRvRmluYWxpemF0aW9uKE1vZHVsZSAm TSkgewotICAgICB9Ci0gICB9Ci0gCi0rICBmb3IgKEdsb2JhbE9iamVjdCAmR08gOiBNLmdsb2Jh bF9vYmplY3RzKCkpIHsKLSsgICAgaWYgKCFHTy5oYXNFeHRlcm5hbFdlYWtMaW5rYWdlKCkpCi0r ICAgICAgY29udGludWU7Ci0rCi0rICAgIGlmICghU2F3VHJhcENhbGwgJiYgR08uZ2V0TmFtZSgp ID09IEJQRl9UUkFQKSB7Ci0rICAgICAgR08uZXJhc2VGcm9tUGFyZW50KCk7Ci0rICAgICAgYnJl YWs7Ci0rICAgIH0KLSsgIH0KLSsKLSAgIHJldHVybiBBc21QcmludGVyOjpkb0ZpbmFsaXphdGlv bihNKTsKLSB9Ci0gCi1AQCAtMTYwLDYgKzE3MCwyMCBAQCBib29sIEJQRkFzbVByaW50ZXI6OlBy aW50QXNtTWVtb3J5T3BlcmFuZChjb25zdCBNYWNoaW5lSW5zdHIgKk1JLAotIH0KLSAKLSB2b2lk IEJQRkFzbVByaW50ZXI6OmVtaXRJbnN0cnVjdGlvbihjb25zdCBNYWNoaW5lSW5zdHIgKk1JKSB7 Ci0rICBpZiAoTUktPmlzQ2FsbCgpKSB7Ci0rICAgIGZvciAoY29uc3QgTWFjaGluZU9wZXJhbmQg Jk9wIDogTUktPm9wZXJhbmRzKCkpIHsKLSsgICAgICBpZiAoT3AuaXNHbG9iYWwoKSkgewotKyAg ICAgICAgaWYgKGNvbnN0IEdsb2JhbFZhbHVlICpHViA9IE9wLmdldEdsb2JhbCgpKQotKyAgICAg ICAgICBpZiAoR1YtPmdldE5hbWUoKSA9PSBCUEZfVFJBUCkKLSsgICAgICAgICAgICBTYXdUcmFw Q2FsbCA9IHRydWU7Ci0rICAgICAgfSBlbHNlIGlmIChPcC5pc1N5bWJvbCgpKSB7Ci0rICAgICAg ICBpZiAoY29uc3QgTUNTeW1ib2wgKlN5bSA9IE9wLmdldE1DU3ltYm9sKCkpCi0rICAgICAgICAg IGlmIChTeW0tPmdldE5hbWUoKSA9PSBCUEZfVFJBUCkKLSsgICAgICAgICAgICBTYXdUcmFwQ2Fs bCA9IHRydWU7Ci0rICAgICAgfQotKyAgICB9Ci0rICB9Ci0rCi0gICBCUEZfTUM6OnZlcmlmeUlu c3RydWN0aW9uUHJlZGljYXRlcyhNSS0+Z2V0T3Bjb2RlKCksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnZXRTdWJ0YXJnZXRJbmZvKCkuZ2V0RmVhdHVyZUJpdHMoKSk7 Ci0gCi1kaWZmIC0tZ2l0IGEvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZBc21QcmludGVyLmggYi9s bHZtL2xpYi9UYXJnZXQvQlBGL0JQRkFzbVByaW50ZXIuaAotaW5kZXggMGNmYjI4MzljOGZmLi42 MGEyODVlYTJiN2QgMTAwNjQ0Ci0tLS0gYS9sbHZtL2xpYi9UYXJnZXQvQlBGL0JQRkFzbVByaW50 ZXIuaAotKysrIGIvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZBc21QcmludGVyLmgKLUBAIC0zOSw2 ICszOSw3IEBAIHB1YmxpYzoKLSBwcml2YXRlOgotICAgQlRGRGVidWcgKkJURjsKLSAgIFRhcmdl dE1hY2hpbmUgJlRNOwotKyAgYm9vbCBTYXdUcmFwQ2FsbCA9IGZhbHNlOwotIAotICAgY29uc3Qg QlBGVGFyZ2V0TWFjaGluZSAmZ2V0QlRNKCkgY29uc3Q7Ci0gfTsKLWRpZmYgLS1naXQgYS9sbHZt L3Rlc3QvQ29kZUdlbi9CUEYvYnBmX3RyYXAubGwgYi9sbHZtL3Rlc3QvQ29kZUdlbi9CUEYvYnBm X3RyYXAubGwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAuLmFiOGRm NWZmN2NiMAotLS0tIC9kZXYvbnVsbAotKysrIGIvbGx2bS90ZXN0L0NvZGVHZW4vQlBGL2JwZl90 cmFwLmxsCi1AQCAtMCwwICsxLDMyIEBACi0rOyBSVU46IGxsYyA8ICVzIHwgRmlsZUNoZWNrICVz Ci0rOwotK3RhcmdldCB0cmlwbGUgPSAiYnBmIgotKwotK2RlZmluZSBpMzIgQHRlc3QoaTggJXgp IHsKLStlbnRyeToKLSsgICUwID0gYW5kIGk4ICV4LCAzCi0rICBzd2l0Y2ggaTggJTAsIGxhYmVs ICVkZWZhdWx0LnVucmVhY2hhYmxlNCBbCi0rICAgIGk4IDAsIGxhYmVsICVyZXR1cm4KLSsgICAg aTggMSwgbGFiZWwgJXN3LmJiMQotKyAgICBpOCAyLCBsYWJlbCAlc3cuYmIyCi0rICAgIGk4IDMs IGxhYmVsICVzdy5iYjMKLSsgIF0KLSsKLStzdy5iYjE6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlZW50cnkKLSsgIGJyIGxhYmVsICVyZXR1cm4K LSsKLStzdy5iYjI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsg cHJlZHMgPSAlZW50cnkKLSsgIGJyIGxhYmVsICVyZXR1cm4KLSsKLStzdy5iYjM6ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlZW50cnkKLSsgIGJy IGxhYmVsICVyZXR1cm4KLSsKLStkZWZhdWx0LnVucmVhY2hhYmxlNDogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsgcHJlZHMgPSAlZW50cnkKLSsgIHVucmVhY2hhYmxlCi0rCi0rcmV0dXJu OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJWVu dHJ5LCAlc3cuYmIzLCAlc3cuYmIyLCAlc3cuYmIxCi0rICAlcmV0dmFsLjAgPSBwaGkgaTMyIFsg MTIsICVzdy5iYjEgXSwgWyA0MywgJXN3LmJiMiBdLCBbIDU0LCAlc3cuYmIzIF0sIFsgMzIsICVl bnRyeSBdCi0rICByZXQgaTMyICVyZXR2YWwuMAotK30KLSsKLSs7IENIRUNLLU5PVDogX19icGZf dHJhcAotLS0gCi0yLjUwLjEKLQoKZGlmZiAtLWdpdCBhLzAwMDMtQlBGLVJlbW92ZS1kZWFkLWNv ZGUtcmVsYXRlZC10by1fX2JwZl90cmFwLWdsb2JhbC12YS5wYXRjaCBiLzAwMDMtQlBGLVJlbW92 ZS1kZWFkLWNvZGUtcmVsYXRlZC10by1fX2JwZl90cmFwLWdsb2JhbC12YS5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhkZTMxZS4uMDAwMDAwMAotLS0gYS8wMDAzLUJQRi1S ZW1vdmUtZGVhZC1jb2RlLXJlbGF0ZWQtdG8tX19icGZfdHJhcC1nbG9iYWwtdmEucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGFjNWI2MTUxOTc2YzcwYzhiNjc2ZDNi YzZmZjgyODk1ZmUwZTFkMDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiB5b25naG9u Zy1zb25nIDx5aHNAZmIuY29tPgotRGF0ZTogVHVlLCA0IE5vdiAyMDI1IDE1OjE1OjMzIC0wODAw Ci1TdWJqZWN0OiBbUEFUQ0hdIFtCUEZdIFJlbW92ZSBkZWFkIGNvZGUgcmVsYXRlZCB0byBfX2Jw Zl90cmFwIGdsb2JhbCB2YXIKLSAoIzE2NjQ0MCkKLQotSW4gWzFdLCB0aGUgc3ltYm9sIF9fYnBm X3RyYXAgKG1hY3JvIEJQRl9UUkFQKSBpcyByZW1vdmVkIGlmIGl0IGlzIG5vdAotdXNlZCBpbiB0 aGUgY29kZS4gSW4gdGhlIGRpc2N1c3Npb24gaW4gWzFdLCBpdCBpcyBmb3VuZCB0aGF0IHRoZSBi cmFuY2gKLSJpZiAoT3AuaXNTeW1ib2woKSkiIGlzIGFjdHVhbGx5IGFsd2F5cyBmYWxzZS4gUmVt b3ZlIGl0IHRvIGF2b2lkCi1jb25mdXNpb24uCi0KLSAgWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9s bHZtL2xsdm0tcHJvamVjdC9wdWxsLzE2NjAwMwotLS0tCi0gbGx2bS9saWIvVGFyZ2V0L0JQRi9C UEZBc21QcmludGVyLmNwcCB8IDQgLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGRlbGV0aW9ucygt KQotCi1kaWZmIC0tZ2l0IGEvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZBc21QcmludGVyLmNwcCBi L2xsdm0vbGliL1RhcmdldC9CUEYvQlBGQXNtUHJpbnRlci5jcHAKLWluZGV4IDM3OGE3MmFiMjdk ZC4uYWJlMDgxYzBjNzZmIDEwMDY0NAotLS0tIGEvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZBc21Q cmludGVyLmNwcAotKysrIGIvbGx2bS9saWIvVGFyZ2V0L0JQRi9CUEZBc21QcmludGVyLmNwcAot QEAgLTE3NiwxMCArMTc2LDYgQEAgdm9pZCBCUEZBc21QcmludGVyOjplbWl0SW5zdHJ1Y3Rpb24o Y29uc3QgTWFjaGluZUluc3RyICpNSSkgewotICAgICAgICAgaWYgKGNvbnN0IEdsb2JhbFZhbHVl ICpHViA9IE9wLmdldEdsb2JhbCgpKQotICAgICAgICAgICBpZiAoR1YtPmdldE5hbWUoKSA9PSBC UEZfVFJBUCkKLSAgICAgICAgICAgICBTYXdUcmFwQ2FsbCA9IHRydWU7Ci0tICAgICAgfSBlbHNl IGlmIChPcC5pc1N5bWJvbCgpKSB7Ci0tICAgICAgICBpZiAoY29uc3QgTUNTeW1ib2wgKlN5bSA9 IE9wLmdldE1DU3ltYm9sKCkpCi0tICAgICAgICAgIGlmIChTeW0tPmdldE5hbWUoKSA9PSBCUEZf VFJBUCkKLS0gICAgICAgICAgICBTYXdUcmFwQ2FsbCA9IHRydWU7Ci0gICAgICAgfQotICAgICB9 Ci0gICB9Ci0tLSAKLTIuNTAuMQotCgpkaWZmIC0tZ2l0IGEvNDNjYjQ2MzFjMWY0MmRiZmNlNzgy ODhiOGFlMzBiNTg0MGVkNTliMy5wYXRjaCBiLzQzY2I0NjMxYzFmNDJkYmZjZTc4Mjg4YjhhZTMw YjU4NDBlZDU5YjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3YjMzM2Iu LjAwMDAwMDAKLS0tIGEvNDNjYjQ2MzFjMWY0MmRiZmNlNzgyODhiOGFlMzBiNTg0MGVkNTliMy5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3NiArMCwwIEBACi1Gcm9tIDQzY2I0NjMxYzFmNDJk YmZjZTc4Mjg4YjhhZTMwYjU4NDBlZDU5YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBFYnVrYSBFemlrZSA8eWVyaW15YWgxQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgOCBKYW4gMjAy NiAxODo0NjowMyArMDAwMAotU3ViamVjdDogW1BBVENIXSBbbGxkYl0gRml4IHR5cGVkIGNvbW1h bmRzIG5vdCBzaG93biBvbiB0aGUgc2NyZWVuICgjMTc0MjE2KQotCi1UaGUgY2F1c2UgaXMgdGhh dCBpbiBgcHl0aG9uMy4xNGAsIGBmY250bC5pb2N0bGAgbm93IHRocm93cyBhIGJ1ZmZlcgotb3Zl cmZsb3cgZXJyb3IKLXdoZW4gdGhlIGJ1ZmZlciBpcyB0b28gc21hbGwgb3IgdG9vIGxhcmdlIChz ZWUKLWh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9wdWxsLzEzMjkxOSkuIFRoaXMg Y2F1c2VkIHRoZSBQeXRob24KLWludGVycHJldGVyIHRvIGZhaWwgdGVybWluYWwgZGV0ZWN0aW9u IGFuZCBub3QgcHJvcGVybHkgZWNobyB1c2VyCi1jb21tYW5kcyBiYWNrIHRvIHRoZSBzY3JlZW4u Ci0KLUZpeCBieSBkcm9wcGluZyB0aGUgY3VzdG9tIHRlcm1pbmFsIHNpemUgY2hlY2sgZW50aXJl bHkgYW5kIHVzaW5nIHRoZQotYnVpbHQtaW4gYHN5cy5zdGRpbi5pc2F0dHkoKWAgaW5zdGVhZC4K LQotRml4ZXMgIzE3MzMwMgotLS0tCi0gLi4uL1B5dGhvbi9sbGRic3VpdGUvdGVzdC9sbGRicGV4 cGVjdC5weSAgICAgIHwgIDEgKwotIC4uLi9JbnRlcnByZXRlci9lbWJlZGRlZF9pbnRlcnByZXRl ci5weSAgICAgICB8IDU5ICsrKy0tLS0tLS0tLS0tLS0tLQotIC4uLi9weXRob25fYXBpL2ZpbGVf aGFuZGxlL1Rlc3RGaWxlSGFuZGxlLnB5ICB8IDQ4ICsrKysrKysrKysrKystCi0gLi4uL0FQSS90 ZXJtaW5hbC9UZXN0UHl0aG9uSW50ZXJwcmV0ZXJFY2hvLnB5IHwgNjIgKysrKysrKysrKysrKysr KysrKwotIC4uLi9TaGVsbC9TY3JpcHRJbnRlcnByZXRlci9QeXRob24vaW8udGVzdCAgICB8IDEy ICsrKysKLSA1IGZpbGVzIGNoYW5nZWQsIDEzMSBpbnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMo LSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGxkYi90ZXN0L0FQSS90ZXJtaW5hbC9UZXN0UHl0aG9u SW50ZXJwcmV0ZXJFY2hvLnB5Ci0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxsZGIvdGVzdC9TaGVsbC9T Y3JpcHRJbnRlcnByZXRlci9QeXRob24vaW8udGVzdAotCi1kaWZmIC0tZ2l0IGEvbGxkYi9wYWNr YWdlcy9QeXRob24vbGxkYnN1aXRlL3Rlc3QvbGxkYnBleHBlY3QucHkgYi9sbGRiL3BhY2thZ2Vz L1B5dGhvbi9sbGRic3VpdGUvdGVzdC9sbGRicGV4cGVjdC5weQotaW5kZXggMzI3OWUxZmQzOWY4 Yy4uMDNiMjUwMGZiZGE1MiAxMDA2NDQKLS0tLSBhL2xsZGIvcGFja2FnZXMvUHl0aG9uL2xsZGJz dWl0ZS90ZXN0L2xsZGJwZXhwZWN0LnB5Ci0rKysgYi9sbGRiL3BhY2thZ2VzL1B5dGhvbi9sbGRi c3VpdGUvdGVzdC9sbGRicGV4cGVjdC5weQotQEAgLTEwLDYgKzEwLDcgQEAKLSAKLSAKLSBAc2tp cElmUmVtb3RlCi0rQHNraXBJZldpbmRvd3MKLSBAYWRkX3Rlc3RfY2F0ZWdvcmllcyhbInBleHBl Y3QiXSkKLSBjbGFzcyBQRXhwZWN0VGVzdChUZXN0QmFzZSk6Ci0gICAgIE5PX0RFQlVHX0lORk9f VEVTVENBU0UgPSBUcnVlCi1kaWZmIC0tZ2l0IGEvbGxkYi9zb3VyY2UvSW50ZXJwcmV0ZXIvZW1i ZWRkZWRfaW50ZXJwcmV0ZXIucHkgYi9sbGRiL3NvdXJjZS9JbnRlcnByZXRlci9lbWJlZGRlZF9p bnRlcnByZXRlci5weQotaW5kZXggNDJhOWFiNWZjMzY3YS4uMTJjNDdiZDcxMjgxNiAxMDA2NDQK LS0tLSBhL2xsZGIvc291cmNlL0ludGVycHJldGVyL2VtYmVkZGVkX2ludGVycHJldGVyLnB5Ci0r KysgYi9sbGRiL3NvdXJjZS9JbnRlcnByZXRlci9lbWJlZGRlZF9pbnRlcnByZXRlci5weQotQEAg LTMyLDE4ICszMiw2IEBAIGRlZiBpc19saWJlZGl0KCk6Ci0gZ19ydW5fb25lX2xpbmVfc3RyID0g Tm9uZQotIAotIAotLWRlZiBnZXRfdGVybWluYWxfc2l6ZShmZCk6Ci0tICAgIHRyeToKLS0gICAg ICAgIGltcG9ydCBmY250bAotLSAgICAgICAgaW1wb3J0IHRlcm1pb3MKLS0gICAgICAgIGltcG9y dCBzdHJ1Y3QKLS0KLS0gICAgICAgIGh3ID0gc3RydWN0LnVucGFjaygiaGgiLCBmY250bC5pb2N0 bChmZCwgdGVybWlvcy5USU9DR1dJTlNaLCAiMTIzNCIpKQotLSAgICBleGNlcHQ6Ci0tICAgICAg ICBodyA9ICgwLCAwKQotLSAgICByZXR1cm4gaHcKLS0KLS0KLSBjbGFzcyBMTERCRXhpdChTeXN0 ZW1FeGl0KToKLSAgICAgcGFzcwotIAotQEAgLTc0LDUwICs2MiwyMSBAQCBkZWYgcmVhZGZ1bmNf c3RkaW8ocHJvbXB0KToKLSBkZWYgcnVuX3B5dGhvbl9pbnRlcnByZXRlcihsb2NhbF9kaWN0KToK LSAgICAgIyBQYXNzIGluIHRoZSBkaWN0aW9uYXJ5LCBmb3IgY29udGludWl0eSBmcm9tIG9uZSBz ZXNzaW9uIHRvIHRoZSBuZXh0LgotICAgICB0cnk6Ci0tICAgICAgICBmZCA9IHN5cy5zdGRpbi5m aWxlbm8oKQotLSAgICAgICAgaW50ZXJhY3RlZCA9IEZhbHNlCi0tICAgICAgICBpZiBnZXRfdGVy bWluYWxfc2l6ZShmZClbMV0gPT0gMDoKLS0gICAgICAgICAgICB0cnk6Ci0tICAgICAgICAgICAg ICAgIGltcG9ydCB0ZXJtaW9zCi0tCi0tICAgICAgICAgICAgICAgIG9sZCA9IHRlcm1pb3MudGNn ZXRhdHRyKGZkKQotLSAgICAgICAgICAgICAgICBpZiBvbGRbM10gJiB0ZXJtaW9zLkVDSE86Ci0t ICAgICAgICAgICAgICAgICAgICAjIE5lZWQgdG8gdHVybiBvZmYgZWNob2luZyBhbmQgcmVzdG9y ZQotLSAgICAgICAgICAgICAgICAgICAgbmV3ID0gdGVybWlvcy50Y2dldGF0dHIoZmQpCi0tICAg ICAgICAgICAgICAgICAgICBuZXdbM10gPSBuZXdbM10gJiB+dGVybWlvcy5FQ0hPCi0tICAgICAg ICAgICAgICAgICAgICB0cnk6Ci0tICAgICAgICAgICAgICAgICAgICAgICAgdGVybWlvcy50Y3Nl dGF0dHIoZmQsIHRlcm1pb3MuVENTQURSQUlOLCBuZXcpCi0tICAgICAgICAgICAgICAgICAgICAg ICAgaW50ZXJhY3RlZCA9IFRydWUKLS0gICAgICAgICAgICAgICAgICAgICAgICBjb2RlLmludGVy YWN0KAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYW5uZXI9IlB5dGhvbiBJbnRlcmFj dGl2ZSBJbnRlcnByZXRlci4gVG8gZXhpdCwgdHlwZSAncXVpdCgpJywgJ2V4aXQoKScuIiwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGZ1bmM9cmVhZGZ1bmNfc3RkaW8sCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsPWxvY2FsX2RpY3QsCi0tICAgICAgICAgICAg ICAgICAgICAgICAgKQotLSAgICAgICAgICAgICAgICAgICAgZmluYWxseToKLS0gICAgICAgICAg ICAgICAgICAgICAgICB0ZXJtaW9zLnRjc2V0YXR0cihmZCwgdGVybWlvcy5UQ1NBRFJBSU4sIG9s ZCkKLS0gICAgICAgICAgICBleGNlcHQ6Ci0tICAgICAgICAgICAgICAgIHBhc3MKLS0gICAgICAg ICAgICAjIERvbid0IG5lZWQgdG8gdHVybiBvZmYgZWNob2luZwotLSAgICAgICAgICAgIGlmIG5v dCBpbnRlcmFjdGVkOgotLSAgICAgICAgICAgICAgICBjb2RlLmludGVyYWN0KAotLSAgICAgICAg ICAgICAgICAgICAgYmFubmVyPSJQeXRob24gSW50ZXJhY3RpdmUgSW50ZXJwcmV0ZXIuIFRvIGV4 aXQsIHR5cGUgJ3F1aXQoKScsICdleGl0KCknIG9yIEN0cmwtRC4iLAotLSAgICAgICAgICAgICAg ICAgICAgcmVhZGZ1bmM9cmVhZGZ1bmNfc3RkaW8sCi0tICAgICAgICAgICAgICAgICAgICBsb2Nh bD1sb2NhbF9kaWN0LAotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICBlbHNlOgotLSAgICAg ICAgICAgICMgV2UgaGF2ZSBhIHJlYWwgaW50ZXJhY3RpdmUgdGVybWluYWwKLS0gICAgICAgICAg ICBjb2RlLmludGVyYWN0KAotLSAgICAgICAgICAgICAgICBiYW5uZXI9IlB5dGhvbiBJbnRlcmFj dGl2ZSBJbnRlcnByZXRlci4gVG8gZXhpdCwgdHlwZSAncXVpdCgpJywgJ2V4aXQoKScgb3IgQ3Ry bC1ELiIsCi0tICAgICAgICAgICAgICAgIHJlYWRmdW5jPXJlYWRmdW5jLAotLSAgICAgICAgICAg ICAgICBsb2NhbD1sb2NhbF9kaWN0LAotLSAgICAgICAgICAgICkKLSsgICAgICAgIGJhbm5lciA9 ICJQeXRob24gSW50ZXJhY3RpdmUgSW50ZXJwcmV0ZXIuIFRvIGV4aXQsIHR5cGUgJ3F1aXQoKScs ICdleGl0KCknLiIKLSsgICAgICAgIGlucHV0X2Z1bmMgPSByZWFkZnVuY19zdGRpbwotKwotKyAg ICAgICAgaXNfYXR0eSA9IHN5cy5zdGRpbi5pc2F0dHkoKQotKyAgICAgICAgaWYgaXNfYXR0eToK LSsgICAgICAgICAgICBiYW5uZXIgPSAiUHl0aG9uIEludGVyYWN0aXZlIEludGVycHJldGVyLiBU byBleGl0LCB0eXBlICdxdWl0KCknLCAnZXhpdCgpJyBvciBDdHJsLUQuIgotKyAgICAgICAgICAg IGlucHV0X2Z1bmMgPSByZWFkZnVuYwotKwotKyAgICAgICAgY29kZS5pbnRlcmFjdChiYW5uZXI9 YmFubmVyLCByZWFkZnVuYz1pbnB1dF9mdW5jLCBsb2NhbD1sb2NhbF9kaWN0KQotICAgICBleGNl cHQgTExEQkV4aXQ6Ci0gICAgICAgICBwYXNzCi0gICAgIGV4Y2VwdCBTeXN0ZW1FeGl0IGFzIGU6 Ci0gICAgICAgICBpZiBlLmNvZGU6Ci0gICAgICAgICAgICAgcHJpbnQoIlNjcmlwdCBleGl0ZWQg d2l0aCBjb2RlICVzIiAlIGUuY29kZSkKLSAKLS0KLSBkZWYgcnVuX29uZV9saW5lKGxvY2FsX2Rp Y3QsIGlucHV0X3N0cmluZyk6Ci0gICAgIGdsb2JhbCBnX3J1bl9vbmVfbGluZV9zdHIKLSAgICAg dHJ5OgotZGlmZiAtLWdpdCBhL2xsZGIvdGVzdC9BUEkvcHl0aG9uX2FwaS9maWxlX2hhbmRsZS9U ZXN0RmlsZUhhbmRsZS5weSBiL2xsZGIvdGVzdC9BUEkvcHl0aG9uX2FwaS9maWxlX2hhbmRsZS9U ZXN0RmlsZUhhbmRsZS5weQotaW5kZXggYjM4NTg1NTc3ZjZmNi4uNzA3MDQ0YTNhZmIwZiAxMDA2 NDQKLS0tLSBhL2xsZGIvdGVzdC9BUEkvcHl0aG9uX2FwaS9maWxlX2hhbmRsZS9UZXN0RmlsZUhh bmRsZS5weQotKysrIGIvbGxkYi90ZXN0L0FQSS9weXRob25fYXBpL2ZpbGVfaGFuZGxlL1Rlc3RG aWxlSGFuZGxlLnB5Ci1AQCAtMTExLDEwICsxMTEsMTEgQEAgZGVmIHNldFVwKHNlbGYpOgotICAg ICAgICAgc3VwZXIoRmlsZUhhbmRsZVRlc3RDYXNlLCBzZWxmKS5zZXRVcCgpCi0gICAgICAgICBz ZWxmLm91dF9maWxlbmFtZSA9IHNlbGYuZ2V0QnVpbGRBcnRpZmFjdCgib3V0cHV0IikKLSAgICAg ICAgIHNlbGYuaW5fZmlsZW5hbWUgPSBzZWxmLmdldEJ1aWxkQXJ0aWZhY3QoImlucHV0IikKLSsg ICAgICAgIHNlbGYuZXJyX2ZpbGVuYW1lID0gc2VsZi5nZXRCdWlsZEFydGlmYWN0KCJlcnJvciIp Ci0gCi0gICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgIHN1cGVyKEZpbGVIYW5kbGVU ZXN0Q2FzZSwgc2VsZikudGVhckRvd24oKQotLSAgICAgICAgZm9yIG5hbWUgaW4gKHNlbGYub3V0 X2ZpbGVuYW1lLCBzZWxmLmluX2ZpbGVuYW1lKToKLSsgICAgICAgIGZvciBuYW1lIGluIChzZWxm Lm91dF9maWxlbmFtZSwgc2VsZi5pbl9maWxlbmFtZSwgc2VsZi5lcnJfZmlsZW5hbWUpOgotICAg ICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG5hbWUpOgotICAgICAgICAgICAgICAgICBvcy51 bmxpbmsobmFtZSkKLSAKLUBAIC02NzksNiArNjgwLDUxIEBAIGRlZiB0ZXN0X3N0ZG91dF9maWxl KHNlbGYpOgotICAgICAgICAgICAgIGxpbmVzID0gW3ggZm9yIHggaW4gZi5yZWFkKCkuc3RyaXAo KS5zcGxpdCgpIGlmIHggIT0gIjciXQotICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlu ZXMsIFsiZm9vYmFyIl0pCi0gCi0rICAgIGRlZiB0ZXN0X3N0ZG91dF9maWxlX2ludGVyYWN0aXZl KHNlbGYpOgotKyAgICAgICAgIiIiRW5zdXJlIHdoZW4gd2UgcmVhZCBzdGRpbiBmcm9tIGEgZmls ZSwgb3V0cHV0cyBmcm9tIHB5dGhvbiBnb2VzIHRvIHRoZSByaWdodCBJL08gc3RyZWFtLiIiIgot KyAgICAgICAgd2l0aCBvcGVuKHNlbGYuaW5fZmlsZW5hbWUsICJ3IikgYXMgZjoKLSsgICAgICAg ICAgICBmLndyaXRlKAotKyAgICAgICAgICAgICAgICAic2NyaXB0IC0tbGFuZ3VhZ2UgcHl0aG9u IC0tXG52YWx1ZSA9IDI1MCArIDVcbnByaW50KHZhbHVlKVxucHJpbnQodmVsKSIKLSsgICAgICAg ICAgICApCi0rCi0rICAgICAgICB3aXRoIG9wZW4oc2VsZi5vdXRfZmlsZW5hbWUsICJ3IikgYXMg b3V0Ziwgb3BlbigKLSsgICAgICAgICAgICBzZWxmLmluX2ZpbGVuYW1lLCAiciIKLSsgICAgICAg ICkgYXMgaW5mLCBvcGVuKHNlbGYuZXJyX2ZpbGVuYW1lLCAidyIpIGFzIGVycmY6Ci0rICAgICAg ICAgICAgc3RhdHVzID0gc2VsZi5kYmcuU2V0T3V0cHV0RmlsZShsbGRiLlNCRmlsZShvdXRmKSkK LSsgICAgICAgICAgICBzZWxmLmFzc2VydFN1Y2Nlc3Moc3RhdHVzKQotKyAgICAgICAgICAgIHN0 YXR1cyA9IHNlbGYuZGJnLlNldEVycm9yRmlsZShsbGRiLlNCRmlsZShlcnJmKSkKLSsgICAgICAg ICAgICBzZWxmLmFzc2VydFN1Y2Nlc3Moc3RhdHVzKQotKyAgICAgICAgICAgIHN0YXR1cyA9IHNl bGYuZGJnLlNldElucHV0RmlsZShsbGRiLlNCRmlsZShpbmYpKQotKyAgICAgICAgICAgIHNlbGYu YXNzZXJ0U3VjY2VzcyhzdGF0dXMpCi0rICAgICAgICAgICAgYXV0b19oYW5kbGVfZXZlbnRzID0g VHJ1ZQotKyAgICAgICAgICAgIHNwYXduX3RocmVhZCA9IEZhbHNlCi0rICAgICAgICAgICAgbnVt X2VycnMgPSAwCi0rICAgICAgICAgICAgcXVpdF9yZXF1ZXN0ZWQgPSBGYWxzZQotKyAgICAgICAg ICAgIHN0b3BwZWRfZm9yX2NyYXNoID0gRmFsc2UKLSsgICAgICAgICAgICBvcHRzID0gbGxkYi5T QkNvbW1hbmRJbnRlcnByZXRlclJ1bk9wdGlvbnMoKQotKyAgICAgICAgICAgIHNlbGYuZGJnLlJ1 bkNvbW1hbmRJbnRlcnByZXRlcigKLSsgICAgICAgICAgICAgICAgYXV0b19oYW5kbGVfZXZlbnRz LAotKyAgICAgICAgICAgICAgICBzcGF3bl90aHJlYWQsCi0rICAgICAgICAgICAgICAgIG9wdHMs Ci0rICAgICAgICAgICAgICAgIG51bV9lcnJzLAotKyAgICAgICAgICAgICAgICBxdWl0X3JlcXVl c3RlZCwKLSsgICAgICAgICAgICAgICAgc3RvcHBlZF9mb3JfY3Jhc2gsCi0rICAgICAgICAgICAg KQotKyAgICAgICAgICAgIHNlbGYuZGJnLkdldE91dHB1dEZpbGUoKS5GbHVzaCgpCi0rICAgICAg ICBleHBlY3RlZF9vdXRfdGV4dCA9ICIyNTUiCi0rICAgICAgICBleHBlY3RlZF9lcnJfdGV4dCA9 ICJOYW1lRXJyb3IiCi0rICAgICAgICAjIGNoZWNrIHN0ZG91dAotKyAgICAgICAgd2l0aCBvcGVu KHNlbGYub3V0X2ZpbGVuYW1lLCAiciIpIGFzIGY6Ci0rICAgICAgICAgICAgb3V0X3RleHQgPSBm LnJlYWQoKQotKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWRfb3V0X3RleHQsIG91 dF90ZXh0KQotKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oZXhwZWN0ZWRfZXJyX3RleHQs IG91dF90ZXh0KQotKwotKyAgICAgICAgIyBjaGVjayBzdGRlcnIKLSsgICAgICAgIHdpdGggb3Bl bihzZWxmLmVycl9maWxlbmFtZSwgInIiKSBhcyBmOgotKyAgICAgICAgICAgIGVycl90ZXh0ID0g Zi5yZWFkKCkKLSsgICAgICAgICAgICBzZWxmLmFzc2VydEluKGV4cGVjdGVkX2Vycl90ZXh0LCBl cnJfdGV4dCkKLSsgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKGV4cGVjdGVkX291dF90ZXh0 LCBlcnJfdGV4dCkKLSsKLSAgICAgZGVmIHRlc3RfaWRlbnRpdHkoc2VsZik6Ci0gICAgICAgICBm ID0gaW8uU3RyaW5nSU8oKQotICAgICAgICAgc2JmID0gbGxkYi5TQkZpbGUoZikKLWRpZmYgLS1n aXQgYS9sbGRiL3Rlc3QvQVBJL3Rlcm1pbmFsL1Rlc3RQeXRob25JbnRlcnByZXRlckVjaG8ucHkg Yi9sbGRiL3Rlc3QvQVBJL3Rlcm1pbmFsL1Rlc3RQeXRob25JbnRlcnByZXRlckVjaG8ucHkKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAwLi43NThhNGY5Y2VkZTVhCi0t LS0gL2Rldi9udWxsCi0rKysgYi9sbGRiL3Rlc3QvQVBJL3Rlcm1pbmFsL1Rlc3RQeXRob25JbnRl cnByZXRlckVjaG8ucHkKLUBAIC0wLDAgKzEsNjIgQEAKLSsiIiIKLStUZXN0IHRoYXQgdHlwaW5n IHB5dGhvbiBleHByZXNzaW9uIGluIHRoZSB0ZXJtaW5hbCBpcyBlY2hvZWQgYmFjayB0byBzdGRv dXQuCi0rIiIiCi0rCi0rZnJvbSBsbGRic3VpdGUudGVzdC5kZWNvcmF0b3JzIGltcG9ydCBza2lw SWZBc2FuCi0rZnJvbSBsbGRic3VpdGUudGVzdC5sbGRicGV4cGVjdCBpbXBvcnQgUEV4cGVjdFRl c3QKLSsKLSsKLStAc2tpcElmQXNhbgotK2NsYXNzIFB5dGhvbkludGVycHJldGVyRWNob1Rlc3Qo UEV4cGVjdFRlc3QpOgotKyAgICBQWVRIT05fUFJPTVBUID0gIj4+PiAiCi0rCi0rICAgIGRlZiB2 ZXJpZnlfY29tbWFuZF9lY2hvKAotKyAgICAgICAgc2VsZiwgY29tbWFuZDogc3RyLCBleHBlY3Rl ZF9vdXRwdXQ6IHN0ciA9ICIiLCBpc19yZWdleDogYm9vbCA9IEZhbHNlCi0rICAgICk6Ci0rICAg ICAgICBhc3NlcnQgc2VsZi5jaGlsZCAhPSBOb25lCi0rICAgICAgICBjaGlsZCA9IHNlbGYuY2hp bGQKLSsgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNlbGYuY2hpbGQsICJleHBlY3RlZCBh IHJ1bm5pbmcgbGxkYiBwcm9jZXNzLiIpCi0rCi0rICAgICAgICBjaGlsZC5zZW5kbGluZShjb21t YW5kKQotKwotKyAgICAgICAgIyBCdWlsZCBwYXR0ZXJuIGxpc3Q6IG1hdGNoIHdoaWNoZXZlciBj b21lcyBmaXJzdCAob3V0cHV0IG9yIHByb21wdCkuCi0rICAgICAgICAjIFRoaXMgcHJldmVudHMg d2FpdGluZyBmb3IgYSB0aW1lb3V0IGlmIHRoZXJlJ3Mgbm8gbWF0Y2guCi0rICAgICAgICBwYXR0 ZXJuID0gW10KLSsgICAgICAgIG1hdGNoX2V4cGVjdGVkID0gZXhwZWN0ZWRfb3V0cHV0IGFuZCBs ZW4oZXhwZWN0ZWRfb3V0cHV0KSA+IDAKLSsKLSsgICAgICAgIGlmIG1hdGNoX2V4cGVjdGVkOgot KyAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kKGV4cGVjdGVkX291dHB1dCkKLSsgICAgICAgIHBh dHRlcm4uYXBwZW5kKHNlbGYuUFlUSE9OX1BST01QVCkKLSsKLSsgICAgICAgIGV4cGVjdF9mdW5j ID0gY2hpbGQuZXhwZWN0IGlmIGlzX3JlZ2V4IGVsc2UgY2hpbGQuZXhwZWN0X2V4YWN0Ci0rICAg ICAgICBtYXRjaF9pZHggPSBleHBlY3RfZnVuYyhwYXR0ZXJuKQotKyAgICAgICAgaWYgbWF0Y2hf ZXhwZWN0ZWQ6Ci0rICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSsgICAgICAgICAgICAg ICAgbWF0Y2hfaWR4LCAwLCAiRXhwZWN0ZWQgb3V0cHV0IGB7ZXhwZWN0ZWRfb3V0cHV0fWAgaW4g c3Rkb3V0LiIKLSsgICAgICAgICAgICApCi0rCi0rICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9u ZShzZWxmLmNoaWxkLmJlZm9yZSwgIkV4cGVjdGVkIG91dHB1dCBiZWZvcmUgcHJvbXB0IikKLSsg ICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLmNoaWxkLmJlZm9yZSwgYnl0ZXMpCi0r ICAgICAgICBlY2hvZWRfdGV4dDogc3RyID0gc2VsZi5jaGlsZC5iZWZvcmUuZGVjb2RlKCJhc2Np aSIpLnN0cmlwKCkKLSsgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0rICAgICAgICAgICAgY29t bWFuZCwgZWNob2VkX3RleHQsIGYiQ29tbWFuZCAne2NvbW1hbmR9JyBzaG91bGQgYmUgZWNob2Vk IHRvIHN0ZG91dC4iCi0rICAgICAgICApCi0rCi0rICAgICAgICBpZiBtYXRjaF9leHBlY3RlZDoK LSsgICAgICAgICAgICBjaGlsZC5leHBlY3RfZXhhY3Qoc2VsZi5QWVRIT05fUFJPTVBUKQotKwot KyAgICBkZWYgdGVzdF9weXRob25faW50ZXJwcmV0ZXJfZWNobyhzZWxmKToKLSsgICAgICAgICIi IlRlc3QgdGhhdCB0aGF0IHRoZSB1c2VyIHR5cGVkIGNvbW1hbmRzIGlzIGVjaG9lZCB0byBzdGRv dXQiIiIKLSsKLSsgICAgICAgIHNlbGYubGF1bmNoKHVzZV9jb2xvcnM9RmFsc2UsIGRpbWVuc2lv bnM9KDEwMCwgMTAwKSkKLSsKLSsgICAgICAgICMgRW50ZXIgdGhlIHB5dGhvbiBpbnRlcnByZXRl ci4KLSsgICAgICAgIHNlbGYudmVyaWZ5X2NvbW1hbmRfZWNobygKLSsgICAgICAgICAgICAic2Ny aXB0IC0tbGFuZ3VhZ2UgcHl0aG9uIC0tIiwgZXhwZWN0ZWRfb3V0cHV0PSJQeXRob24uKlxcLiIs IGlzX3JlZ2V4PVRydWUKLSsgICAgICAgICkKLSsgICAgICAgIHNlbGYuY2hpbGRfaW5fc2NyaXB0 X2ludGVycHJldGVyID0gVHJ1ZQotKwotKyAgICAgICAgc2VsZi52ZXJpZnlfY29tbWFuZF9lY2hv KCJ2YWwgPSAzMDAiKQotKyAgICAgICAgc2VsZi52ZXJpZnlfY29tbWFuZF9lY2hvKAotKyAgICAg ICAgICAgICJwcmludCgncmVzdWx0ID0nLCAzMDApIiwgZXhwZWN0ZWRfb3V0cHV0PSJyZXN1bHQg PSAzMDAiCi0rICAgICAgICApCi1kaWZmIC0tZ2l0IGEvbGxkYi90ZXN0L1NoZWxsL1NjcmlwdElu dGVycHJldGVyL1B5dGhvbi9pby50ZXN0IGIvbGxkYi90ZXN0L1NoZWxsL1NjcmlwdEludGVycHJl dGVyL1B5dGhvbi9pby50ZXN0Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAw MDAwMC4uMjVlM2RlNDE3MjRlMAotLS0tIC9kZXYvbnVsbAotKysrIGIvbGxkYi90ZXN0L1NoZWxs L1NjcmlwdEludGVycHJldGVyL1B5dGhvbi9pby50ZXN0Ci1AQCAtMCwwICsxLDEyIEBACi0rIyBS VU46IHJtIC1yZiAldC5zdGRvdXQgJXQuc3RkZXJyCi0rIyBSVU46IGNhdCAlcyB8ICVsbGRiIC0t c2NyaXB0LWxhbmd1YWdlIHB5dGhvbiA+ICV0LnN0ZG91dCAyPiAldC5zdGRlcnIKLSsjIFJVTjog Y2F0ICV0LnN0ZG91dCB8IEZpbGVDaGVjayAlcyAtLWNoZWNrLXByZWZpeCBTVERPVVQKLSsjIFJV TjogY2F0ICV0LnN0ZGVyciB8IEZpbGVDaGVjayAlcyAtLWNoZWNrLXByZWZpeCBTVERFUlIKLStz Y3JpcHQKLSt2YXJpYWJsZSA9IDMwMAotK3ByaW50KHZhcmlhYmxlKQotK3ByaW50KG5vdF92YWx1 ZSkKLStxdWl0Ci0rCi0rIyBTVERPVVQ6IDMwMAotKyMgU1RERVJSOiBOYW1lRXJyb3J7ey4qfX1p cyBub3QgZGVmaW5lZAoKZGlmZiAtLWdpdCBhL2xsdm0uc3BlYyBiL2xsdm0uc3BlYwppbmRleCA0 MjQ4ZWRiLi4xZTFmZjA2IDEwMDY0NAotLS0gYS9sbHZtLnNwZWMKKysrIGIvbGx2bS5zcGVjCkBA IC01Myw3ICs1Myw3IEBACiAlYmNvbmRfd2l0aG91dCBjaGVjawogCiAlaWYgJXt3aXRoIGJ1bmRs ZV9jb21wYXRfbGlifQotJWdsb2JhbCBjb21wYXRfbWFqX3ZlciAyMQorJWdsb2JhbCBjb21wYXRf bWFqX3ZlciAyMgogJWdsb2JhbCBjb21wYXRfdmVyICV7Y29tcGF0X21hal92ZXJ9LjEuOAogJWVu ZGlmCiAKQEAgLTIwNSw3ICsyMDUsNyBAQCBlbmQKICVlbHNlCiAjIERpc2FibGUgUEdPIG9uIHMz OTB4IHRlbXBvcmFyaWx5IGluIG9yZGVyIHRvIHJlZHVjZSBMTFZNIGJ1aWxkIHRpbWUgYW5kCiAj IGRpc2sgdXNhZ2UuCi0laWYgJXttYWpfdmVyfSA+PSAyMyAmJiAiJXtfYXJjaH0iID09ICJzMzkw eCIKKyVpZmFyY2ggczM5MHgKICViY29uZF93aXRoIHBnbwogJWVsc2UKICVpZiAwJXs/ZmVkb3Jh fSA+PSA0MyB8fCAwJXs/cmhlbH0gPj0gOQpAQCAtMjMxLDcgKzIzMSw3IEBAIGVuZAogJWJjb25k X3dpdGggbHRvX2J1aWxkCiAlZWxzZQogIyBEaXNhYmxlIExUTyBvbiBzMzkweCBpbiBvcmRlciB0 byByZWR1Y2UgTExWTSBidWlsZCB0aW1lLgotJWlmICV7bWFqX3Zlcn0gPj0gMjMgJiYgIiV7X2Fy Y2h9IiA9PSAiczM5MHgiCislaWZhcmNoIHMzOTB4CiAlYmNvbmRfd2l0aCBwZ28KICVlbHNlCiAl aWYgJXtkZWZpbmVkIHJoZWx9ICYmIDAlez9yaGVsfSA8PSA4CkBAIC0yNTcsNyArMjU3LDcgQEAg ZW5kCiAlZ2xvYmFsIF9sdG9fY2ZsYWdzICVuaWwKICVlbmRpZgogCi0laWYgJXttYWpfdmVyfSA+ PSAyMyAmJiAwJXt1bmRlZmluZWQgcmhlbH0gJiYgJXt3aXRob3V0IGNvbXBhdF9idWlsZH0KKyVp ZiAwJXt1bmRlZmluZWQgcmhlbH0gJiYgJXt3aXRob3V0IGNvbXBhdF9idWlsZH0KICViY29uZF93 aXRob3V0IGxpYmNsYwogJWVsc2UKICViY29uZF93aXRoIGxpYmNsYwpAQCAtNTQ1LDcgKzU0NSw2 IEBAIFNvdXJjZTEwMDE6IGNoYW5nZWxvZwogIyBiZWhpbmQgdGhlIGxhdGVzdCBwYWNrYWdlZCBM TFZNIHZlcnNpb24uCiAKICNyZWdpb24gQ0xBTkcgcGF0Y2hlcwotUGF0Y2gyMTAwOiAwMDAxLVBB VENILWNsYW5nLU1ha2UtZnVud2luZC10YWJsZXMtdGhlLWRlZmF1bHQtb24tYWxsLWEucGF0Y2gK IFBhdGNoMjIwMDogMDAwMS1QQVRDSC1jbGFuZy1NYWtlLWZ1bndpbmQtdGFibGVzLXRoZS1kZWZh dWx0LW9uLWFsbC1hLnBhdGNoCiBQYXRjaDIzMDA6IDAwMDEtMjMtUEFUQ0gtY2xhbmctTWFrZS1m dW53aW5kLXRhYmxlcy10aGUtZGVmYXVsdC1vbi1hbGwtYS5wYXRjaAogUGF0Y2gyNDAwOiAwMDAx LTIzLVBBVENILWNsYW5nLU1ha2UtZnVud2luZC10YWJsZXMtdGhlLWRlZmF1bHQtb24tYWxsLWEu cGF0Y2gKQEAgLTU1Myw3ICs1NTIsNiBAQCBQYXRjaDEwMjogMDAwMy1QQVRDSC1jbGFuZy1Eb24t dC1pbnN0YWxsLXN0YXRpYy1saWJyYXJpZXMucGF0Y2gKIAogIyBXb3JrYXJvdW5kIGEgYnVnIGlu IE9SQyBvbiBwcGM2NGxlLgogIyBNb3JlIGluZm8gaXMgYXZhaWxhYmxlIGhlcmU6IGh0dHBzOi8v cmV2aWV3cy5sbHZtLm9yZy9EMTU5MTE1IzQ2NDE4MjYKLVBhdGNoMjEwNzogMDAwMS0yMS1Xb3Jr YXJvdW5kLWEtYnVnLWluLU9SQy1vbi1wcGM2NGxlLnBhdGNoCiBQYXRjaDIyMTg6IDAwMDEtMjEt V29ya2Fyb3VuZC1hLWJ1Zy1pbi1PUkMtb24tcHBjNjRsZS5wYXRjaAogUGF0Y2gyMzAzOiAwMDAx LTIxLVdvcmthcm91bmQtYS1idWctaW4tT1JDLW9uLXBwYzY0bGUucGF0Y2gKIFBhdGNoMjQwMjog MDAwMS0yNC1Xb3JrYXJvdW5kLWEtYnVnLWluLU9SQy1vbi1wcGM2NGxlLnBhdGNoCkBAIC01ODEs NyArNTc5LDYgQEAgUGF0Y2gyMjEzOiAwMDAxLVg4Ni1GaXgtRVZFWC1jb21wcmVzc2lvbi1mb3It VlBNT1YtMk0tS01PVi13aXRoLXRpZWQucGF0Y2gKIAogI3JlZ2lvbiBMTEQgcGF0Y2hlcwogUGF0 Y2gxMDY6IDAwMDEtMTktQWx3YXlzLWJ1aWxkLXNoYXJlZC1saWJzLWZvci1MTEQucGF0Y2gKLVBh dGNoMjEwMzogMDAwMS1sbGQtQWRqdXN0LWNvbXByZXNzZWQtZGVidWctbGV2ZWwtdGVzdC1mb3It czM5MHgtd2l0LnBhdGNoCiBQYXRjaDIyMTQ6IDAwMDEtRUxGLVNpbXBsaWZ5LUFBcmNoNjQtcmVs b2NhdGVBbGxvYy4tTkZDLnBhdGNoCiBQYXRjaDIyMTU6IDAwMDEtTExELUFBcmNoNjQtTWFrZS1h ZHJwLWxkci1yZWxheGF0aW9uLXBlci1zeW1ib2wtYWxsLS5wYXRjaAogUGF0Y2gyMjE2OiAwMDAx LWxsZC1FTEYtQ29uY2F0ZW5hdGUtLmdudS5idWlsZC5hdHRyaWJ1dGVzLi1zZWN0aW9ucy0ucGF0 Y2gKQEAgLTU4OSwxMCArNTg2LDcgQEAgUGF0Y2gyMzA0OiAyMjQ5NDYucGF0Y2gKICNlbmRyZWdp b24gTExEIHBhdGNoZXMKIAogI3JlZ2lvbiBwb2xseSBwYXRjaGVzCi1QYXRjaDIxMDI6IDAwMDEt MjAtcG9sbHktc2hhcmVkLWxpYnMucGF0Y2gKLVBhdGNoMjIwMjogMDAwMS0yMi1wb2xseS1zaGFy ZWQtbGlicy5wYXRjaAotUGF0Y2gyMzAyOiAwMDAxLTIyLXBvbGx5LXNoYXJlZC1saWJzLnBhdGNo Ci1QYXRjaDI0MDE6IDAwMDEtMjItcG9sbHktc2hhcmVkLWxpYnMucGF0Y2gKK1BhdGNoMTA3OiAw MDAxLTIyLXBvbGx5LXNoYXJlZC1saWJzLnBhdGNoCiAjZW5kcmVnaW9uIHBvbGx5IHBhdGNoZXMK IAogI3JlZ2lvbiBsaWJjbGMgcGF0Y2hlcwpAQCAtNjAyLDMwICs1OTYsMTMgQEAgUGF0Y2gyMjE3 OiAyMDcyNjQucGF0Y2gKICNyZWdpb24gUkhFTCBwYXRjaGVzCiAjIFJIRUwgOCBvbmx5CiBQYXRj aDUwMTogMDAwMS1GaXgtcGFnZS1zaXplLWNvbnN0YW50LW9uLWFhcmNoNjQtYW5kLXBwYzY0bGUu cGF0Y2gKLSMgQmFja3BvcnQgYSBmaXggZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0t cHJvamVjdC9pc3N1ZXMvMTY1Njk2IGZyb20KLSMgTExWTSAyMi4gVGhlIGZpcnN0IHBhdGNoIGlz IGEgcmVxdWlyZW1lbnQgb2YgdGhlIHNlY29uZCBwYXRjaC4KLSMgQXBwbHkgdGhlIGZpeCB0byBS SEVMOCBvbmx5IGJlY2F1c2UgdGhlIG90aGVyIGRpc3Ryb3MgZG8gbm90IG5lZWQgdGhpcyBmaXgK LSMgYmVjYXVzZSB0aGV5IGFscmVhZHkgc3VwcG9ydCBrZnVuYyBfX2JwZl90cmFwLgotUGF0Y2g1 MDI6IDAwMDEtQlBGLVN1cHBvcnQtSnVtcC1UYWJsZS0xNDk3MTUucGF0Y2gKLVBhdGNoNTAzOiAw MDAyLUJQRi1SZW1vdmUtdW51c2VkLXdlYWstc3ltYm9sLV9fYnBmX3RyYXAtMTY2MDAzLnBhdGNo Ci1QYXRjaDUwNDogMDAwMy1CUEYtUmVtb3ZlLWRlYWQtY29kZS1yZWxhdGVkLXRvLV9fYnBmX3Ry YXAtZ2xvYmFsLXZhLnBhdGNoCiAjZW5kcmVnaW9uIFJIRUwgcGF0Y2hlcwogCiAjIEZpeCBmb3Ig b2ZmbG9hZCBidWlsZHM6IFRoZSBEZXZpY2VSVEwgbGlicmFyaWVzIHRhcmdldCBkZXZpY2UgY29k ZSBhbmQKICMgZG9uJ3Qgc3VwcG9ydCB0aGUgbXRscy1kaWFsZWN0IGZsYWcsIHNvIHdlIG5lZWQg dG8gcGF0Y2ggdGhlIGNsYW5nIGRyaXZlcgogIyB0byBpZ25vcmUgaXQgZm9yIHRoZXNlIHRhcmdl dHMuCi1QYXRjaDIxMDE6IDAwMDEtY2xhbmctQWRkLWEtaGFjay10by1maXgtdGhlLW9mZmxvYWQt YnVpbGQtd2l0aC10aGUtbS5wYXRjaAogUGF0Y2gyMjAxOiAwMDAxLWNsYW5nLUFkZC1hLWhhY2st dG8tZml4LXRoZS1vZmZsb2FkLWJ1aWxkLXdpdGgtdGhlLW0ucGF0Y2gKIAotIyBGaXggc2VnZmF1 bHQgY29tcGlsaW5nIHBsb3R0ZXJzIHJ1c3QgY3JhdGUgb24gcHBjNjRsZQotUGF0Y2gyMTA0OiAw MDAxLVBvd2VyUEMtQWRkLWNoZWNrLWZvci1jYXN0LXdoZW4tc2h1ZmZsZXZlY3Rvci0xNzI0NDMu cGF0Y2gKLQotIyBGaXggZm9yIGxsZGIgcHl0aG9uIHNoZWxsIHdpdGggcHl0aG9uIDMuMTQgKHJi aHojMjQyODYwOCkKLVBhdGNoMjEwNTogNDNjYjQ2MzFjMWY0MmRiZmNlNzgyODhiOGFlMzBiNTg0 MGVkNTliMy5wYXRjaAotCi0jIEZpeCBmb3IgczM5MHggdmVjdG9yIG1pc2NvbXBpbGF0aW9uIChy aGJ6IzI0MzAwMTcpCi1QYXRjaDIxMDY6IDAwMDEtU3lzdGVtWi1GaXgtY29kZS1pbi13aWRlbmlu Zy12ZWN0b3ItbXVsdGlwbGljYXRpb24tMS5wYXRjaAotCiAjIERpc2FibGUgdGVzdHMgd2hlbiB0 aGUgZXhlY3V0aW9uIGVuZ2luZSBpcyBkaXNhYmxlZC4KICMgaHR0cHM6Ly9naXRodWIuY29tL2xs dm0vbGx2bS1wcm9qZWN0L3B1bGwvMjIwNzQxCiBQYXRjaDIyMDM6IDAwMDEtbWxpci1EaXNhYmxl LXNvbWUtdGVzdHMtd2hlbi10aGUtZXhlY3V0aW9uLWVuZ2luZS1pcy5wYXRjaApAQCAtMTQ2Miwx MyArMTQzOSw2IEBAIE1lc2EgT3BlbkNMIHN1cHBvcnQgd2l0aCBSdXN0aUNMLgogIyBhdXRvbWF0 aWNhbGx5IGFwcGx5IHBhdGNoZXMgYmFzZWQgb24gTExWTSB2ZXJzaW9uCiAlYXV0b3BhdGNoIC1t JXtjb21wYXRfbWFqX3Zlcn0wMCAtTSV7Y29tcGF0X21hal92ZXJ9OTkgLXAxCiAKLSVpZiAwJXs/ cmhlbH0gPT0gOCAmJiAle2NvbXBhdF9tYWpfdmVyfSA8IDIyCi0jIFRoZSBmb2xsb3dpbmcgcGF0 Y2hlcyBoYXZlIGJlZW4gYmFja3BvcnRlZCBmcm9tIExMVk0gMjIuCi0lcGF0Y2ggLXAxIC1QNTAy Ci0lcGF0Y2ggLXAxIC1QNTAzCi0lcGF0Y2ggLXAxIC1QNTA0Ci0lZW5kaWYKLQogJWVuZGlmCiAK ICMgVW5wYWNrIHRoZSBtYW4gcGFnZXMgZmlyc3QKQEAgLTE4ODEsMTUgKzE4NTEsNiBAQCBwb3Bk CiAgIC1EUlVOVElNRVNfYW1kZ2NuLWFtZC1hbWRoc2FfQ01BS0VfU1RBVElDX0xJTktFUl9GTEFH Uz0iIiBcXFwKICAgLURSVU5USU1FU19udnB0eDY0LW52aWRpYS1jdWRhX0NNQUtFX1NUQVRJQ19M SU5LRVJfRkxBR1M9IiIgXFxcCiAgIC1EUlVOVElNRVNfYW1kZ2NuLWFtZC1hbWRoc2FfTExWTV9F TkFCTEVfUlVOVElNRVM9Im9wZW5tcCIKLQotJWlmIDAlez9fX2lzYV9iaXRzfSA9PSA2NCAmJiAl e21hal92ZXJ9IDw9IDIyCi0jIFRoZSBmb2xsb3dpbmcgc2hvdWxkbid0IGJlIHJlcXVpcmVkLCBi dXQgZHVlIHRvIGEgYnVnLCB3ZSBoYXZlIHRvIGJlCi0jIGV4cGxpY2l0IGFib3V0IExMVk1fTElC RElSX1NVRkZJWCBmb3IgbnZwdHg2NC1udmlkaWEtY3VkYS4KLSMgVGhpcyBnb3QgZml4ZWQgaW4g TExWTSAyMy4KLSMgaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L2lzc3Vlcy8x NTk3NjIKLSVnbG9iYWwgY21ha2VfY29uZmlnX2FyZ3MgJXtjbWFrZV9jb25maWdfYXJnc30gXFxc Ci0JLURSVU5USU1FU19udnB0eDY0LW52aWRpYS1jdWRhX0xMVk1fTElCRElSX1NVRkZJWD02NAot JWVuZGlmCiAlZW5kaWYKICNlbmRyZWdpb24gb3Blbm1wIG9wdGlvbnMKIApAQCAtMjE5MywxMiAr MjE1NCw2IEBAIGNkIC4uCiAKICVpZiAle3dpdGggYnVuZGxlX2NvbXBhdF9saWJ9CiAKLSVpZiAl e2NvbXBhdF9tYWpfdmVyfSA+PSAyMgotJWdsb2JhbCBjb21wYXRfbGliX2NtYWtlX2FyZ3MgLURM TFZNX0VOQUJMRV9FSD1PRkYKLSVlbHNlCi0lZ2xvYmFsIGNvbXBhdF9saWJfY21ha2VfYXJncyAt RExMVk1fRU5BQkxFX0VIPU9OCi0lZW5kaWYKLQogIyBNSVBTIGFuZCBBcm0gdGFyZ2V0cyB3ZXJl IGRpc2FibGVkIGluIExMVk0gMjAsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRoZW0KICMgZW5hYmxlZCBm b3IgdGhlIGNvbXBhdCBsaWJyYXJpZXMuCiAlY21ha2UgLVMgLi4vbGx2bS1wcm9qZWN0LSV7Y29t cGF0X3Zlcn0uc3JjL2xsdm0gLUIgLi4vbGx2bS1jb21wYXQtbGlicyAtRyBOaW5qYSBcCkBAIC0y MjA3LDggKzIxNjIsNyBAQCBjZCAuLgogICAgIC1ETExWTV9FTkFCTEVfUFJPSkVDVFM9ImNsYW5n O2xsZGIiIFwKICAgICAtRExMVk1fSU5DTFVERV9CRU5DSE1BUktTPU9GRiBcCiAgICAgLURMTFZN X0lOQ0xVREVfVEVTVFM9T0ZGIFwKLSAgICAle2NtYWtlX2NvbW1vbl9hcmdzfSBcCi0gICAgJXtj b21wYXRfbGliX2NtYWtlX2FyZ3N9CisgICAgJXtjbWFrZV9jb21tb25fYXJnc30KIAogCiAKQEAg LTI1NDUsMTMgKzI0OTksOSBAQCBybSAtdiAle2J1aWxkcm9vdH0le2luc3RhbGxfbGliZGlyfS9s aWJGSVJBbmFseXNpcy5hIFwKICAgICAgICV7YnVpbGRyb290fSV7aW5zdGFsbF9saWJkaXJ9L2xp Yk1JRkRpYWxlY3QuYQogCiAKLSVpZiAle21hal92ZXJ9IDwgMjMKLWZpbmQgJXtidWlsZHJvb3R9 JXtpbnN0YWxsX2luY2x1ZGVkaXJ9L2ZsYW5nIC10eXBlIGYgLWEgISAtaW5hbWUgJyoubW9kJyAt ZGVsZXRlCi0lZWxzZQogIyBSZW1vdmUgaGVhZGVyIGZpbGVzIHRoYXQgYXJlIG9ubHkgbmVlZGVk IGZvciB3cml0aW5nIHBsdWdpbnMuCiAjIFRPRE86IE1heWJlIHdlIHNob3VsZCBwYWNrYWdlIHRo ZXNlIGluIHRoZSBmdXR1cmUuCiBybSAtUmYgJXtidWlsZHJvb3R9JXtpbnN0YWxsX2luY2x1ZGVk aXJ9L2ZsYW5nCi0lZW5kaWYKIAogIyB0aGlzIGlzIGEgdGVzdCBiaW5hcnkKIHJtIC12ICV7YnVp bGRyb290fSV7aW5zdGFsbF9iaW5kaXJ9L2YxOC1wYXJzZS1kZW1vCkBAIC0zMzI1LDYgKzMyNzUs NyBAQCBmaQogICAgIEZpbGVDaGVjawogICAgIGxsYwogICAgIGxsaQorICAgIGxsdWJpCiAgICAg bGx2bS1hZGRyMmxpbmUKICAgICBsbHZtLWFyCiAgICAgbGx2bS1hcwpAQCAtMzM1Miw2ICszMzAz LDggQEAgZmkKICAgICBsbHZtLWR3cAogICAgIGxsdm0tZXhlZ2VzaXMKICAgICBsbHZtLWV4dHJh Y3QKKyAgICBsbHZtLWV4dHJhY3QtYnVuZGxlLWVudHJ5CisgICAgbGx2bS1ncHUtbG9hZGVyCiAg ICAgbGx2bS1nc3ltdXRpbAogICAgIGxsdm0taWZzCiAgICAgbGx2bS1pbnN0YWxsLW5hbWUtdG9v bApAQCAtMzQxMSwxOCArMzM2NCw2IEBAIGZpCiAgICAgeWFtbDJvYmoKIH19CiAKLSVpZiAle21h al92ZXJ9ID49IDIzCi0le2V4cGFuZF9iaW5zICV7ZXhwYW5kOgotICAgIGxsdWJpCi0gICAgbGx2 bS1leHRyYWN0LWJ1bmRsZS1lbnRyeQotICAgIGxsdm0tZ3B1LWxvYWRlcgotfX0KLSVlbHNlCi0l e2V4cGFuZF9iaW5zICV7ZXhwYW5kOgotICAgIGJ1Z3BvaW50Ci19fQotJWVuZGlmCi0KICVpZiAl e21hal92ZXJ9IDwgMjQKICV7ZXhwYW5kX2JpbnMgJXtleHBhbmQ6CiAgICAgbGx2bS1zaW0KQEAg LTM0NDEsNiArMzM4Miw3IEBAIGZpCiAgICAgbGxjCiAgICAgbGxkYi10YmxnZW4KICAgICBsbGkK KyAgICBsbHViaQogICAgIGxsdm0tYWRkcjJsaW5lCiAgICAgbGx2bS1hcgogICAgIGxsdm0tYXMK QEAgLTM0NTYsNiArMzM5OCw3IEBAIGZpCiAgICAgbGx2bS1kd2FyZnV0aWwKICAgICBsbHZtLWV4 ZWdlc2lzCiAgICAgbGx2bS1leHRyYWN0CisgICAgbGx2bS1leHRyYWN0LWJ1bmRsZS1lbnRyeQog ICAgIGxsdm0taWZzCiAgICAgbGx2bS1pbnN0YWxsLW5hbWUtdG9vbAogICAgIGxsdm0taXIydmVj CkBAIC0zNDkyLDE3ICszNDM1LDYgQEAgZmkKICAgICB0YmxnZW4KIH19CiAKLSVpZiAle21hal92 ZXJ9ID49IDIzCi0le2V4cGFuZF9tYW5zICV7ZXhwYW5kOgotICAgIGxsdWJpCi0gICAgbGx2bS1l eHRyYWN0LWJ1bmRsZS1lbnRyeQotfX0KLSVlbHNlCi0le2V4cGFuZF9tYW5zICV7ZXhwYW5kOgot ICAgIGJ1Z3BvaW50Ci19fQotJWVuZGlmCi0KICVpZiAle21hal92ZXJ9ID49IDI0CiAle2V4cGFu ZF9tYW5zICV7ZXhwYW5kOgogICBsbHZtLWNhbGMtb2NjdXBhbmN5CkBAIC0zNzE5LDYgKzM2NTEs OSBAQCBmaQogICAgIGNsYW5nLXJlZmFjdG9yCiAgICAgY2xhbmctcmVvcmRlci1maWVsZHMKICAg ICBjbGFuZy1yZXBsCisgICAgY2xhbmctc3NhZi1hbmFseXplcgorICAgIGNsYW5nLXNzYWYtZm9y bWF0CisgICAgY2xhbmctc3NhZi1saW5rZXIKICAgICBjbGFuZy1zeWNsLWxpbmtlcgogICAgIGNs YW5nLXRpZHkKICAgICBjbGFuZ2QKQEAgLTM3MzQsMTQgKzM2NjksNiBAQCBmaQogICAgIG9mZmxv YWQtYXJjaAogfX0KIAotJWlmICV7bWFqX3Zlcn0gPj0gMjMKLSV7ZXhwYW5kX2JpbnMgJXtleHBh bmQ6Ci0gICAgY2xhbmctc3NhZi1hbmFseXplcgotICAgIGNsYW5nLXNzYWYtZm9ybWF0Ci0gICAg Y2xhbmctc3NhZi1saW5rZXIKLX19Ci0lZW5kaWYKLQogJWlmICV7bWFqX3Zlcn0gPj0gMjQKICV7 ZXhwYW5kX2JpbnMgJXtleHBhbmQ6CiAgICAgY2xhbmctc3NhZi1zcmMtZWRpdC1tZXJnZQpAQCAt Mzk2NCw2ICszODkxLDcgQEAgZmkKIAogJWZpbGVzIC1uICV7cGtnX25hbWVfbWxpcn0tZGV2ZWwK ICV7ZXhwYW5kX2JpbnMgJXtleHBhbmQ6CisgICAgbWxpci1pcmRsLXRvLWNwcAogICAgIG1saXIt bGluYWxnLW9kcy15YW1sLWdlbgogICAgIG1saXItbHNwLXNlcnZlcgogICAgIG1saXItb3B0CkBA IC0zOTcyLDYgKzM5MDAsNyBAQCBmaQogICAgIG1saXItcXVlcnkKICAgICBtbGlyLXJlZHVjZQog ICAgIG1saXItcmV3cml0ZQorICAgIG1saXItc3JjLXNoYXJkZXIKICAgICBtbGlyLXRibGdlbgog ICAgIG1saXItdHJhbnNsYXRlCiAgICAgdGJsZ2VuLWxzcC1zZXJ2ZXIKQEAgLTM5ODIsMTIgKzM5 MTEsNiBAQCBmaQogICAgIG1saXItcnVubmVyCiB9fQogJWVuZGlmCi0laWYgJXttYWpfdmVyfSA+ PSAyMwotJXtleHBhbmRfYmlucyAle2V4cGFuZDoKLSAgICBtbGlyLWlyZGwtdG8tY3BwCi0gICAg bWxpci1zcmMtc2hhcmRlcgotfX0KLSVlbmRpZgogJWV4cGFuZF9pbmNsdWRlcyBtbGlyIG1saXIt YwogJXtleHBhbmRfbGlicyAle2V4cGFuZDoKICAgICBjbWFrZS9tbGlyCkBAIC00MDI3LDE0ICsz OTUwLDggQEAgZmkKIH19CiAle2luc3RhbGxfYmluZGlyfS9mbGFuZy0le21hal92ZXJ9CiAKLSVp ZiAle21hal92ZXJ9IDwgMjMKLSV7ZXhwYW5kX2luY2x1ZGVzICV7ZXhwYW5kOgotICAgIGZsYW5n LyoubW9kCi19fQotJWVsc2UKICV7X3ByZWZpeH0vbGliL2NsYW5nLyV7bWFqX3Zlcn0vZmluY2x1 ZGUvZmxhbmcvJXtsbHZtX3RyaXBsZX0vKi5tb2QKICV7X3ByZWZpeH0vbGliL2NsYW5nLyV7bWFq X3Zlcn0vZmluY2x1ZGUvZmxhbmcvJXtsbHZtX3RyaXBsZX0vb21wX2xpYi5oCi0lZW5kaWYKIAog JXtfc3lzY29uZmRpcn0vJXtwa2dfbmFtZV9jbGFuZ30vJXtfdGFyZ2V0X3BsYXRmb3JtfS1mbGFu Zy5jZmcKICVpZmFyY2ggeDg2XzY0Cg==