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: Jiri Vanek To: git-commits@fedoraproject.org Subject: [rpms/java-25-openjdk-portable] f44: Updated to OpenJDK 25.0.4 (2026-07-21) Date: Fri, 24 Jul 2026 13:21:18 GMT Message-ID: <178489927804.1.2946838008358768204.rpms-java-25-openjdk-portable-5a268016ad90@fedoraproject.org> List-ID: X-Git-Repo: rpms/java-25-openjdk-portable X-Git-Branch: f44 X-Git-Rev: 5a268016ad909c415222f9453d4b2bcf17a48561 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvamF2YS0yNS1vcGVuamRrLXBvcnRhYmxlCiAgICAgICAgICAgIEJyYW5jaCA6 IGY0NAogICAgICAgICAgICBDb21taXQgOiA1YTI2ODAxNmFkOTA5YzQxNTIyMmY5NDUzZDRiMmJj ZjE3YTQ4NTYxCiAgICAgICAgICAgIEF1dGhvciA6IEppcmkgVmFuZWsgPGp2YW5la0ByZWRoYXQu Y29tPgogICAgICAgICAgICBEYXRlICAgOiAyMDI2LTA3LTI0VDE1OjE4OjMyKzAyOjAwCiAgICAg ICAgICAgIFN0YXRzICA6ICsxOTMzLy0zMTAgaW4gOSBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAg ICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvamF2YS0yNS1vcGVuamRrLXBv cnRhYmxlL2MvNWEyNjgwMTZhZDkwOWM0MTUyMjJmOTQ1M2Q0YjJiY2YxN2E0ODU2MT9icmFuY2g9 ZjQ0CgogICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIFVwZGF0ZWQgdG8gT3BlbkpESyAyNS4w LjQgKDIwMjYtMDctMjEpCgpSZWFycmFuZ2VkIHNwZWNmaWxlIGZvciBiZXR0ZXIgcmVhZGFiaWxp dHkgYW5kIHJlbW92ZWQgdW51c2VkIG1hY3JvcywKd2hpY2ggd2VyZSBrZXB0IG9ubHkgZm9yIHJw bXMgc3luY2hyb25pemF0aW9uIHdoaWNoIGlzIG9ic29sZXRlZC4KSW1wcm92ZWQgVGVzdFRyYW5z YWx0aW9ucyAoZ251X2FuZHJldykKCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRp Z25vcmUKaW5kZXggZjU3ZjI4ZS4uYTRiNDMyMiAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysg Yi8uZ2l0aWdub3JlCkBAIC02LDMgKzYsNCBAQAogL29wZW5qZGstMjUuMC4xKzgudGFyLnh6CiAv b3Blbmpkay0yNS4wLjIrMTAudGFyLnh6CiAvb3Blbmpkay0yNS4wLjMrOS50YXIueHoKKy9vcGVu amRrLTI1LjAuNCs3LnRhci54egoKZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCmluZGV4IGUwMDli YTguLjYyMmM4ZmEgMTAwNjQ0Ci0tLSBhL05FV1MKKysrIGIvTkVXUwpAQCAtMyw2ICszLDM2MSBA QCBLZXk6CiBKREstWCAgLSBodHRwczovL2J1Z3Mub3Blbmpkay5qYXZhLm5ldC9icm93c2UvSkRL LVgKIENWRS1YWFhYLVlZWVk6IGh0dHBzOi8vY3ZlLm1pdHJlLm9yZy9jZ2ktYmluL2N2ZW5hbWUu Y2dpP25hbWU9WFhYWC1ZWVlZCiAKK05ldyBpbiByZWxlYXNlIE9wZW5KREsgMjUuMC40ICgyMDI2 LTA3LTIxKToKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0xp dmUgdmVyc2lvbnMgb2YgdGhlc2UgcmVsZWFzZSBub3RlcyBjYW4gYmUgZm91bmQgYXQ6CisgICog aHR0cHM6Ly9iaXQubHkvb3BlbmpkazI1MDQKKworKiBDVkVzCisgIC0gQ1ZFLTIwMjYtNDY5NjgK KyAgLSBDVkUtMjAyNi00NjkxNworICAtIENWRS0yMDI2LTQ3MDEwCisgIC0gQ1ZFLTIwMjYtNDcw MjEKKyAgLSBDVkUtMjAyNi00NzAyNworICAtIENWRS0yMDI2LTYwMTQ3CisgIC0gQ1ZFLTIwMjYt NDcwNTkKKyAgLSBDVkUtMjAyNi00NzA2MworICAtIENWRS0yMDI2LTQxMjU0CisqIENoYW5nZXMK KyAgLSBKREstNzE4NDg5OTogVGVzdCBzdW4vamF2YTJkL1gxMVN1cmZhY2VEYXRhL1NoYXJlZE1l bW9yeVBpeG1hcHNUZXN0L1NoYXJlZE1lbW9yeVBpeG1hcHNUZXN0LnNoIGZhaWwKKyAgLSBKREst ODAxNTQ0NDogamF2YS9hd3QvRm9jdXMvS2V5U3Ryb2tlVGVzdC5qYXZhIHNvbWV0aW1lcyBmYWls cworICAtIEpESy04MDY0OTIyOiBbbWFjb3NdIFRlc3QgamF2YXgvc3dpbmcvSlRhYmJlZFBhbmUv NDYyNDIwNy9idWc0NjI0MjA3LmphdmEgZmFpbHMKKyAgLSBKREstODA2ODI5MzogW1RFU1RfQlVH XSBUZXN0IGNsb3NlZC9jb20vc3VuL2phdmEvc3dpbmcvcGxhZi9tb3RpZi9JbnRlcm5hbEZyYW1l LzQxNTA1OTEvYnVnNDE1MDU5MS5qYXZhIGZhaWxzIHdpdGggR1RLTG9va0FuZEZlZWwKKyAgLSBK REstODA2ODMxMDogW1RFU1RfQlVHXSBUZXN0IGphdmF4L3N3aW5nL0pDb2xvckNob29zZXIvVGVz dDQyMzQ3NjEuamF2YSBmYWlscyB3aXRoIEdUS0wmRgorICAtIEpESy04MTQ0MTI0OiBbbWFjb3N4 XSBUaGUgdGFicyBjYW4ndCBiZSBhbGlnbmVkIHdoZW4gd2UgcHJlc3NpbmcgdGhlIGtleSBvZiAn UicsJ0InLCdMJywnQycgb3IgJ1QnLgorICAtIEpESy04MjAzMDA0OiBVbml4TXVsdGlSZXNvbHV0 aW9uU3BsYXNoVGVzdC5qYXZhIGZhaWxzIG9uIFVidW50dTE2LjA0CisgIC0gSkRLLTgyMTM1MzA6 IFRlc3QgamF2YS9hd3QvTW9kYWwvVG9Gcm9udC9EaWFsb2dUb0Zyb250TW9kZWxlc3MxVGVzdC5q YXZhIGZhaWxzIG9uIExpbnV4CisgIC0gSkRLLTgyMjE0NTE6IFBJVDogc3VuL2phdmEyZC9YMTFT dXJmYWNlRGF0YS9TaGFyZWRNZW1vcnlQaXhtYXBzVGVzdC9TaGFyZWRNZW1vcnlQaXhtYXBzVGVz dC5zaCBmYWlscworICAtIEpESy04MjI1Nzg3OiBqYXZhL2F3dC9XaW5kb3cvR2V0U2NyZWVuTG9j YXRpb24vR2V0U2NyZWVuTG9jYXRpb25UZXN0LmphdmEgZmFpbHMgb24gVWJ1bnR1CisgIC0gSkRL LTgyNDEwNjY6IFNoZW5hbmRvYWg6IGZpeCBvciBjbGVhbnVwIFNIOjpkb19mdWxsX2NvbGxlY3Rp b24KKyAgLSBKREstODI2MTc0MzogU2hlbmFuZG9haDogZW5hYmxlIFN0cmluZyBkZWR1cGxpY2F0 aW9uIHdpdGggY29tcGFjdCBoZXVyaXN0aWNzCisgIC0gSkRLLTgyNjQ4NTE6IFNoZW5hbmRvYWg6 IFJld29yayBjb250cm9sIGxvb3AgbWVjaGFuaWNzIHRvIHVzZSB0aW1lZCB3YWl0cworICAtIEpE Sy04Mjc4MTAyOiBjb250YWluZXJzL2RvY2tlci9UZXN0SmNtZC5qYXZhIGZhaWxlZCB3aXRoICJS dW50aW1lRXhjZXB0aW9uOiBDb3VsZCBub3QgZmluZCBzcGVjaWZpZWQgcHJvY2VzcyIKKyAgLSBK REstODI3OTE5NjogVGVzdDogamRrL2pmci9ldmVudC9nYy9zdGFja3RyYWNlL1Rlc3RHMU9sZEFs bG9jYXRpb25QZW5kaW5nU3RhY2tUcmFjZS5qYXZhIHRpbWVkIG91dAorICAtIEpESy04Mjk3MTkx OiBbbWFjb3NdIFByaW50aW5nIGEgcGFnZSByYW5nZSB3aXRoIHN0YXJ0aW5nIHBhZ2UgPiAxIHJl c3VsdHMgaW4gbWlzc2luZyBwYWdlcworICAtIEpESy04Mjk4ODIzOiBbbWFjb3NdIGphdmEvYXd0 L01vdXNlL0VudGVyRXhpdEV2ZW50cy9EcmFnV2luZG93VGVzdC5qYXZhIGNvbnRpbnVlcyB0byBm YWlsIHdpdGggIk5vIE1vdXNlUmVsZWFzZWQgZXZlbnQgb24gbGFiZWwhIgorICAtIEpESy04MzE5 MzI2OiBHQzogTWFrZSBUZXN0UGFyYWxsZWxSZWZQcm9jIHVzZSBjcmVhdGVUZXN0SmF2YVByb2Nl c3NCdWlsZGVyCisgIC0gSkRLLTgzMTk1NDA6IEdDOiBNYWtlIFRlc3RTZWxlY3REZWZhdWx0R0Mg dXNlIGNyZWF0ZVRlc3RKYXZhUHJvY2Vzc0J1aWxkZXIKKyAgLSBKREstODMyMTMwMzogSW50ZXJt aXR0ZW50IG9wZW4vdGVzdC9qZGsvamF2YS9hd3QvS2V5Ym9hcmRGb2N1c21hbmFnZXIvQ29uc3Vt ZU5leHRNbmVtb25pY0tleVR5cGVkVGVzdC9Db25zdW1lTmV4dE1uZW1vbmljS2V5VHlwZWRUZXN0 LmphdmEgZmFpbHVyZSBvbiBMaW51eAorICAtIEpESy04MzIxNjg3OiBUZXN0IHZtVGVzdGJhc2Uv bnNrL2p2bXRpL3NjZW5hcmlvcy9jb250ZW50aW9uL1RDMDMvdGMwM3QwMDIvVGVzdERlc2NyaXB0 aW9uLmphdmEgZmFpbGVkOiBKVk1USV9FUlJPUl9USFJFQURfTk9UX0FMSVZFCisgIC0gSkRLLTgz MjM3OTI6IFRocmVhZFNuYXBzaG90Ojppbml0aWFsaXplIGNhbiBjYXVzZSBhc3NlcnQgaW4gVGhy ZWFkOjpjaGVja19mb3JfZGFuZ2xpbmdfdGhyZWFkX3BvaW50ZXIgKHBvc3NpYmlsaXR5IG9mIGRh bmdsaW5nIFRocmVhZCBwb2ludGVyKQorICAtIEpESy04MzI1NDgyOiBUZXN0IHRoYXQgZGlzdGlu Y3Qgc2VlZHMgcHJvZHVjZSBkaXN0aW5jdCB0cmFjZXMgZm9yIGNvbXBpbGVyIHN0cmVzcyBmbGFn cworICAtIEpESy04MzM1MzU1OiBTaGVuYW5kb2FoOiBGaXggcmFjZSBjb25kaXRpb24gaW4gZ2Mv c2hlbmFuZG9haC9teGJlYW5zL1Rlc3RQYXVzZU5vdGlmaWNhdGlvbnMuamF2YQorICAtIEpESy04 MzM5NTI2OiBDMjogc3RvcmUgaW5jb3JyZWN0bHkgcmVtb3ZlZCBmb3IgY2xvbmUoKSB0cmFuc2Zv cm1lZCB0byBzZXJpZXMgb2YgbG9hZHMvc3RvcmVzCisgIC0gSkRLLTgzNDAxODI6IEphdmEgSHR0 cENsaWVudCBkb2VzIG5vdCBmb2xsb3cgZGVmYXVsdCByZXRyeSBsaW1pdCBvZiAzIHJldHJpZXMK KyAgLSBKREstODM0MTczNTogUmV3cml0ZSB0aGUgYnVpbGQvQWJzUGF0aHNJbkltYWdlLmphdmEg dGVzdCB0byBub3QgbG9hZCB0aGUgZW50aXJlIGZpbGUgYXQgb25jZQorICAtIEpESy04MzQ0MzQ1 OiB0ZXN0L2hvdHNwb3QvZ3Rlc3QveDg2L3g4Ni1hc210ZXN0LnB5IGhhcyB0cmFpbGluZyB3aGl0 ZXNwYWNlcworICAtIEpESy04MzQ1NjMxOiBUZXN0UmVnaW9uU2FtcGxpbmdMb2dnaW5nLmphdmEj Z2VuZXJhdGlvbmFsLXJvdGF0aW9uIGludGVybWl0dGVudCBmYWlscworICAtIEpESy04MzQ3MTY3 OiBSZWR1Y2UgYWxsb2NhdGlvbiBpbiBjb20uc3VuLm5ldC5odHRwc2VydmVyLkhlYWRlcnM6Om5v cm1hbGl6ZQorICAtIEpESy04MzQ3OTM4OiBBZGQgU3VwcG9ydCBmb3IgdGhlIExhdGVzdCBNTC1L RU0gYW5kIE1MLURTQSBQcml2YXRlIEtleSBFbmNvZGluZ3MKKyAgLSBKREstODM1MTAxMDogVGVz dCBqYXZhL2lvL0ZpbGUvR2V0WFNwYWNlLmphdmEgZmFpbGVkOiAvIHVzYWJsZSBzcGFjZSA1NjM4 MDgwOTIxNiA+IGZyZWUgc3BhY2UgMTQ5MTIyNDQ5NDAKKyAgLSBKREstODM1MjkxNDogU2hlbmFu ZG9haDogQ2hhbmdlIGRlZmluaXRpb24gb2YgU2hlbmFuZG9haFNoYXJlZFZhbHVlIHRvIGludDMy X3QgdG8gbGV2ZXJhZ2UgcGxhdGZvcm0gYXRvbWljcworICAtIEpESy04MzUzMTE1OiBHZW5TaGVu OiBtaXhlZCBldmFjdWF0aW9uIGNhbmRpZGF0ZSByZWdpb25zIG5lZWQgYWNjdXJhdGUgbGl2ZV9k YXRhCisgIC0gSkRLLTgzNTQ2NTA6IFtQUEM2NF0gVHJ5IHRvIHJlZHVjZSByZWdpc3RlciBkZWZp bml0aW9ucworICAtIEpESy04MzU1MzM5OiBUZXN0IGphdmEvaW8vRmlsZS9HZXRDYW5vbmljYWxQ YXRoLmphdmEgZmFpbGVkOiBUaGUgc3BlY2lmaWVkIG5ldHdvcmsgbmFtZSBpcyBubyBsb25nZXIg YXZhaWxhYmxlCisgIC0gSkRLLTgzNTcwODY6IG9zOjp4eHggZnVuY3Rpb25zIHJldHVybmluZyBt ZW1vcnkgc2l6ZSBzaG91bGQgcmV0dXJuIHNpemVfdAorICAtIEpESy04MzU4NjAwOiBUZW1wbGF0 ZS1GcmFtZXdvcmsgTGlicmFyeTogVGVtcGxhdGUgZm9yIFRlc3RGcmFtZXdvcmsgdGVzdCBjbGFz cworICAtIEpESy04MzU4NzcyOiBUZW1wbGF0ZS1GcmFtZXdvcmsgTGlicmFyeTogUHJpbWl0aXZl IFR5cGVzCisgIC0gSkRLLTgzNTkwODM6IFRlc3QgamRrQ2hlY2tIdG1sLmphdmEgc2hvdWxkIHJl cG9ydCBTa2lwcGVkRXhjZXB0aW9uIHJhdGhlciB0aGFuIHJlcG9ydCBmYWlscyB3aGVuIG1pc3Mg dGlkeQorICAtIEpESy04MzU5MjIzOiBIdHRwQ2xpZW50OiBSZW1vdmUgbGVmdG92ZXJzIGZyb20g dGhlIFNlY3VyaXR5TWFuYWdlciBjbGVhbnVwCisgIC0gSkRLLTgzNTk0MTI6IFRlbXBsYXRlLUZy YW1ld29yayBMaWJyYXJ5OiBPcGVyYXRpb25zIGFuZCBFeHByZXNzaW9ucworICAtIEpESy04MzU5 NDMzOiBUaGUgZmluYWwgbW9kaWZpZXIgb24gV2luZG93cyBMJkYgaW50ZXJuYWwgVUkgY2xhc3Nl cyBwcmV2ZW50cyBleHRlbmRpbmcgdGhlbSBpbiBhcHBzCisgIC0gSkRLLTgzNjEzMzk6IFRlc3Qg Z2Mvc2hlbmFuZG9haC9UZXN0TGFyZ2VPYmplY3RBbGlnbm1lbnQuamF2YSNnZW5lcmF0aW9uYWwg ZmFpbHMgb24gbWFjT1MgYWFyY2g2NCB3aXRoIE9PTTogSmF2YSBoZWFwIHNwYWNlCisgIC0gSkRL LTgzNjE2MDY6IENvbnN1bWVOZXh0TW5lbW9uaWNLZXlUeXBlZFRlc3QuamF2YSBmYWlscyBvbiBX aW5kb3dzOiBjaGFyYWN0ZXIgdHlwZWQgd2l0aCBWS19BOiBhCisgIC0gSkRLLTgzNjE2OTk6IEMy OiBhc3NlcnQoY2FuX3JlZHVjZV9waGkobi0+YXNfUGhpKCkpKSBmYWlsZWQ6IFNhbml0eTogcHJl dmlvdXMgcmVkdWNpYmxlIFBoaSBpcyBubyBsb25nZXIgcmVkdWNpYmxlIGJlZm9yZSBTVVQKKyAg LSBKREstODM2MTcyNjogU2hlbmFuZG9haDogTW9yZSBkZXRhaWxlZCBldmFjdWF0aW9uIGluc3Ry dW1lbnRhdGlvbgorICAtIEpESy04MzYyNDI4OiBVcGRhdGUgSUFOQSBMYW5ndWFnZSBTdWJ0YWcg UmVnaXN0cnkgdG8gVmVyc2lvbiAyMDI1LTA4LTI1CisgIC0gSkRLLTgzNjM5NDM6IEFSTTMyOiBS ZXByZXNlbnQgUmVnaXN0ZXJzIGFzIHZhbHVlcworICAtIEpESy04MzYzOTQ5OiBJbmNvcnJlY3Qg anRyZWcgaGVhZGVyIGluIE1vbml0b3JXaXRoRGVhZE9iamVjdFRlc3QuamF2YQorICAtIEpESy04 MzYzOTg2OiBIZWFwIHJlZ2lvbiBpbiBDRFMgYXJjaGl2ZSBpcyBub3QgYXQgZGV0ZXJtaW5pc3Rp YyBhZGRyZXNzCisgIC0gSkRLLTgzNjQzMTU6IFJlbW92ZSB1bnVzZWQgeG1sIGZpbGVzIGZyb20g dGVzdC9qYXhwL2phdmF4L3htbC9qYXhwL2Z1bmN0aW9uYWwvamF2YXgveG1sL3RyYW5zZm9ybS94 bWxmaWxlcworICAtIEpESy04MzY0NjU3OiBDcmFzaCBmb3IgU2VjdXJlUmFuZG9tLmdlbmVyYXRl U2VlZCgwKSBvbiBXaW5kb3dzIHg4Ni02NAorICAtIEpESy04MzY0OTI3OiBBZGQgQHJlcXVpcmVz IGFubm90YXRpb24gdG8gVGVzdFJlY2xhaW1TdHJpbmdzTGVha3NNZW1vcnkuamF2YQorICAtIEpE Sy04MzY1MDU3OiBBZGQgc3VwcG9ydCBmb3IgamF2YS51dGlsLmNvbmN1cnJlbnQgbG9jayBpbmZv cm1hdGlvbiB0byBUaHJlYWQuZHVtcF90b19maWxlCisgIC0gSkRLLTgzNjUzNzk6IFNVMy5hcHBs eUluc2V0cyBtYXkgcHJvZHVjZSB3cm9uZyByZXN1bHRzCisgIC0gSkRLLTgzNjU0MjM6IFttYWNv czI2XSBqYXZhL2F3dC9NZW51QmFyLzgwMDcwMDYvYnVnODAwNzAwNi5qYXZhIGZhaWxzIG9uIG1h Y09TIDI2CisgIC0gSkRLLTgzNjU0MjQ6IFttYWNvczI2XSBqYXZhL2F3dC9GcmFtZS9EaXNwb3Nl VGVzdC5qYXZhIGZhaWxzIG9uIG1hY09TIDI2CisgIC0gSkRLLTgzNjU2MjM6IHRlc3QvamRrL3N1 bi9zZWN1cml0eS9wa2NzMTEvdGxzLyB0ZXN0cyBza2lwcGVkIHdpdGhvdXQgc2tpcCBleGNlcHRp b24KKyAgLSBKREstODM2NTYyNTogQ2FuJ3QgY2hhbmdlIGFjY2VsZXJhdG9yIGNvbG9ycyBpbiBX aW5kb3dzIEwmRgorICAtIEpESy04MzY1NzkyOiBHZW5TaGVuOiBhc3NlcnRpb24gIkdlbmVyYXRp b25zIGFyZW4ndCByZWNvbmNpbGVkIgorICAtIEpESy04MzY2NjkyOiBTZXZlcmFsIGdjL3NoZW5h bmRvYWggdGVzdHMgdGltZWQgb3V0CisgIC0gSkRLLTgzNjY2OTU6IFRlc3Qgc3VuL2p2bXN0YXQv bW9uaXRvci9Nb25pdG9yZWRWbS9Nb25pdG9yVm1TdGFydFRlcm1pbmF0ZS5qYXZhIHRpbWVkIG91 dAorICAtIEpESy04MzY2ODUyOiBqYXZhL2F3dC9DaG9pY2UvQ2hvaWNlTW91c2VXaGVlbFRlc3Qv Q2hvaWNlTW91c2VXaGVlbFRlc3QuamF2YSB0ZXN0IGlzIGZhaWxpbmcKKyAgLSBKREstODM2NzA5 NjogamRrL29wZW4vdGVzdC9qZGsvc3VuL3NlY3VyaXR5L3BrY3MxMS8gcnNhLCBlYywgY29uZmln LCBzZWNtb2QgYW5kIHNzbGVjYyB0ZXN0cyBhcmUgc2tpcHBpbmcgYnV0IHNob3dpbmcgYXMgcGFz cworICAtIEpESy04MzY3NDUwOiBTaGVuYW5kb2FoOiBMb2cgdGhlIGNvbXBvc2l0aW9uIG9mIHRo ZSBjb2xsZWN0aW9uIHNldAorICAtIEpESy04MzY3NDUxOiBHZW5TaGVuOiBSZW1vdmUgdGhlIG9w dGlvbiB0byBjb21wdXRlIGFnZSBjZW5zdXMgZHVyaW5nIGV2YWN1YXRpb24KKyAgLSBKREstODM2 NzQ3MzogU2hlbmFuZG9haDogTWFrZSB0aGUgZGV0YWlsZWQgZXZhY3VhdGlvbiBtZXRyaWNzIGEg cnVudGltZSBkaWFnbm9zdGljIG9wdGlvbgorICAtIEpESy04MzY3NDg1OiBvczo6cGh5c2ljYWxf bWVtb3J5IGlzIGJyb2tlbiBpbiAzMi1iaXQgSlZNcyB3aGVuIHJ1bm5pbmcgb24gNjQtYml0IE9T ZXMKKyAgLSBKREstODM2NzUzMTogVGVtcGxhdGUgRnJhbWV3b3JrOiB1c2Ugc2NvcGVzIGFuZCB0 b2tlbnMgaW5zdGVhZCBvZiBtaXNiZWhhdmluZyBpbW1lZGlhdGUtcmV0dXJuLXF1ZXJpZXMKKyAg LSBKREstODM2NzY0NjogW0dlblNoZW5dIENvbnRyb2wgdGhyZWFkIG1heSBvdmVyd3JpdGUgZ2Mg Y2FuY2VsbGF0aW9uIGNhdXNlIHNldCBieSBtdXRhdG9yCisgIC0gSkRLLTgzNjc3MDg6IEdlblNo ZW46IFJlZHVjZSB0b3RhbCBldmFjdWF0aW9uIGJ1cmRlbgorICAtIEpESy04MzY3NzA5OiBHZW5T aGVuOiBEaXJ0eSBjYXJkcyBmb3Igb2JqZWN0cyB0aGF0IGdldCBwcm9tb3RlZCBieSBzYWZlcG9p bnQgdGhhdCBpbnRlcnZlbmVzIGJldHdlZW4gYWxsb2NhdGlvbiBhbmQgc3RvcmVzCisgIC0gSkRL LTgzNjc3MjI6IFtHZW5TaGVuXSBTaGVuYW5kb2FoRXZhY3VhdGlvblN0YXRzIGlzIGFsd2F5cyBl bXB0eQorICAtIEpESy04MzY3OTQ5OiBKRlI6IE1ldGhvZFRyYWNlIGRvdWJsZS1jb3VudHMgbWV0 aG9kcyB0aGF0IGNhdGNoIHRoZWlyIG93biBleGNlcHRpb25zCisgIC0gSkRLLTgzNjgwMDE6IGph dmEvdGV4dC9Gb3JtYXQvTnVtYmVyRm9ybWF0L051bWJlclJvdW5kVHJpcC5qYXZhIHRpbWVkIG91 dAorICAtIEpESy04MzY4MDE1OiBTaGVuYW5kb2FoOiBmaXggZXJyb3IgaW4gY29tcHV0YXRpb24g b2YgYXZlcmFnZSBhbGxvY2F0aW9uIHJhdGUKKyAgLSBKREstODM2ODA0MTogRW5oYW5jZSBUTFMg Y2VydGlmaWNhdGUgaGFuZGxpbmcKKyAgLSBKREstODM2ODE1OTogU2lnbmlmaWNhbnQgcGVyZm9y bWFuY2Ugb3ZlcmhlYWQgd2hlbiBzdGFydGVkIHdpdGggamR3cCBhZ2VudCBhbmQgdW5hdHRhY2hl ZCBkZWJ1Z2dlcgorICAtIEpESy04MzY4MTgxOiBQcm9ibGVtTGlzdCBqYXZhL2F3dC9EaWFsb2cv TW9kYWxFeGNsdWRlZFRlc3QvTW9kYWxFeGNsdWRlZFRlc3QuamF2YQorICAtIEpESy04MzY4MzA3 OiBTaGVuYW5kb2FoOiBnZXRfbmV4dF9iaXRfaW1wbCBzaG91bGQgc3BlY2lhbCBjYXNlIHdlYWsg YW5kIHN0cm9uZyBtYXJrIGJpdHMKKyAgLSBKREstODM2ODQ5OTogR2VuU2hlbjogRG8gbm90IGNv bGxlY3QgYWdlIGNlbnN1cyBkdXJpbmcgZXZhYyB3aGVuIGFkYXB0aXZlIHRlbnVyaW5nIGlzIGRp c2FibGVkCisgIC0gSkRLLTgzNjg1MDE6IFNoZW5hbmRvYWg6IEdDIHByb2dyZXNzIGV2YWx1YXRp b24gZG9lcyBub3QgdXNlIGdlbmVyYXRpb24KKyAgLSBKREstODM2ODUyNDogVGVzdHMgYXJlIHNr aXBwZWQgYW5kIHNob3duIGFzIHBhc3NlZCBpbiB0ZXN0L2pkay9zdW4vc2VjdXJpdHkvcGtjczEx L0NpcGhlci9LZXlXcmFwCisgIC0gSkRLLTgzNjg2ODE6IFNoZW5hbmRvYWg6IEFkZCBkb2N1bWVu dGF0aW9uIGNvbW1lbnRzIGZvciBTaGVuYW5kb2FoQWxsb2NhdGlvblJhdGUKKyAgLSBKREstODM2 OTEyODogUHJvYmxlbUxpc3QgamRrL2pmci9ldmVudC9wcm9maWxpbmcvVGVzdENQVVRpbWVTYW1w bGVRdWV1ZUF1dG9TaXplcy5qYXZhIGluIFhjb21wIGNvbmZpZ3MKKyAgLSBKREstODM2OTEzMjog RGlzYWJsZSB2bVRlc3RiYXNlL2djL3ZlY3Rvci9DaXJjdWxhckxpc3RMb3cgYW5kIExpbmVhckxp c3RMb3cgd2l0aCBTZXJpYWxHQworICAtIEpESy04MzY5MTMzOiBEaXNhYmxlIGdjL2cxL1Rlc3RT aHJpbmtBdXhpbGlhcnlEYXRhUnVubmVyLmphdmEgd2l0aCBVc2VMYXJnZVBhZ2VzIG9wdGlvbgor ICAtIEpESy04MzY5MjUxOiBPcGVuc291cmNlIGZldyB0ZXN0cworICAtIEpESy04MzY5NTYxOiBz dW4vamF2YTJkL09wZW5HTC9EcmF3Qml0bWFza0ltYWdlLmphdmEjaWQwOiBJbmNvcnJlY3QgY29s b3IgZm9yIGZpcnN0IHBpeGVsIChhY3R1YWw9ZmYwMDAwMDApCisgIC0gSkRLLTgzNjk2ODM6IEV4 Y2x1ZGUgcnVudGltZS9Nb25pdG9yL01vbml0b3JXaXRoRGVhZE9iamVjdFRlc3QuamF2YSNEdW1w VGhyZWFkc0JlZm9yZURldGFjaCBvbiBBbHBpbmUgTGludXggZGVidWcKKyAgLSBKREstODM2OTcz NjogQWRkIG1hbmFnZW1lbnQgaW50ZXJmYWNlIGZvciBBT1QgY2FjaGUgY3JlYXRpb24KKyAgLSBK REstODM2OTgxNzogW1RFU1RCVUddIEVtcHR5UGF0aDo6dG9TdHJpbmcgaXMgaWdub3JlZAorICAt IEpESy04MzY5OTEyOiBbVEVTVEJVR10gdGVzdGxpYnJhcnlfdGVzdHMvdGVtcGxhdGVfZnJhbWV3 b3JrL2V4YW1wbGVzL1Rlc3RFeHByZXNzaW9ucy5qYXZhIGZhaWxzIHdpdGggQXJpdGhtZXRpY0V4 Y2VwdGlvbjogLyBieSB6ZXJvIC0gZm9yZ290IHRvIHJlc3BlY3QgRXhwcmVzc2lvbi5pbmZvCisg IC0gSkRLLTgzNjk5NTA6IFRMUyBjb25uZWN0aW9uIHRvIElQdjYgYWRkcmVzcyBmYWlscyB3aXRo IEJDSlNTRSBkdWUgdG8gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgIC0gSkRLLTgzNzAzNzA6 IEFkZCBzdGlsbCBtb3JlIGNhc2VzIHRvIFdvcnN0Q2FzZVRlc3RzCisgIC0gSkRLLTgzNzA0ODk6 IFNvbWUgY29tcGlsZXIgdGVzdHMgbWlzcyB0aGUgQGtleSByYW5kb21uZXNzCisgIC0gSkRLLTgz NzA1MDI6IEMyOiBzZWdmYXVsdCB3aGlsZSBhZGRpbmcgbm9kZSB0byBJR1ZOIHdvcmtsaXN0Cisg IC0gSkRLLTgzNzA1MjE6IEdlblNoZW46IFZhcmlvdXMgY29kZSBjbGVhbnVwIHJlbGF0ZWQgdG8g cHJvbW90aW9uCisgIC0gSkRLLTgzNzA5Mzk6IEMyOiBTSUdTRUdWIGluIFNhZmVQb2ludE5vZGU6 OnZlcmlmeV9pbnB1dCB3aGVuIHByb2Nlc3NpbmcgTUggY2FsbCBmcm9tIENvbXBpbGU6OnByb2Nl c3NfbGF0ZV9pbmxpbmVfY2FsbHNfbm9faW5saW5lKCkKKyAgLSBKREstODM3MTI4NDogR2VuU2hl bjogQXZvaWQgdW5uZWNlc3NhcnkgY2FyZCBtYXJraW5nCisgIC0gSkRLLTgzNzEzODE6IFtTaGVu YW5kb2FoXSBTZXR0aW5nIGVyZ28gZmxhZ3Mgc2hvdWxkIHVzZSBGTEFHX1NFVF9FUkdPCisgIC0g SkRLLTgzNzE1MDM6IFJFVEFJTl9JTUFHRV9BRlRFUl9URVNUIGRvIG5vdCB3b3JrIGZvciBzb21l IHRlc3RzCisgIC0gSkRLLTgzNzE3OTI6IFJlZmFjdG9yIGJhcnJpZXIgbG9vcCB0ZXN0cyBvdXQg b2YgVGVzdElmTWluTWF4CisgIC0gSkRLLTgzNzE4OTM6IFttYWNPU10gdXNlIGRlYWRfc3RyaXAg bGlua2VyIG9wdGlvbiB0byByZWR1Y2UgYmluYXJ5IHNpemUKKyAgLSBKREstODM3MjI3MjogSG90 c3BvdCBzaGFyZWQgbGliIGxvYWRpbmcgLSBhZGQgbG9hZCBhdHRlbXB0cyB0byBFdmVudHM6Omxv ZworICAtIEpESy04MzcyMzUxOiBBZGQgMiBXSVNlS2V5IHJvb3RzCisgIC0gSkRLLTgzNzIzODA6 IE1ha2UgaHNfZXJyIHJlcG9ydGluZyBtb3JlIHJvYnVzdCBmb3IgdW5hdHRhY2hlZCB0aHJlYWRz CisgIC0gSkRLLTgzNzI1MTM6IFNoZW5hbmRvYWg6IFNoZW5hbmRvYWhNYXhSZWdpb25TaXplIGNh biBwcm9kdWNlIGFuIHVuYWxpZ25lZCBoZWFwIGFsaWdubWVudAorICAtIEpESy04MzcyODUxOiBN b2RpZnkgamF2YS9pby9GaWxlL0dldFhTcGFjZS5qYXZhIHRvIHByaW50IHBhdGggb24gZmFpbHVy ZSBvZiBuYXRpdmUgY2FsbAorICAtIEpESy04MzcyODYxOiBHZW5zaGVuOiBPdmVycmlkZSBwYXJh bGxlbF9yZWdpb25fc3RyaWRlIG9mIFNoZW5hbmRvYWhSZXNldEJpdG1hcENsb3N1cmUgdG8gYSBy ZWFzb25hYmxlIHZhbHVlIGZvciBiZXR0ZXIgcGFyYWxsZWxpc20KKyAgLSBKREstODM3MzAzOTog UmVtb3ZlIEluY29ycmVjdCBBc3NlcnRzIGluIHNoZW5hbmRvYWhTY2FuUmVtZW1iZXJlZAorICAt IEpESy04MzczMTIwOiBWaXJ0dWFsIHRocmVhZCBzdHVjayBpbiBCTE9DS0VEIHN0YXRlCisgIC0g SkRLLTgzNzMyMzk6IFRlc3QgamF2YS9hd3QvcHJpbnQvUHJpbnRlckpvYi9QYWdlUmFuZ2VzLmph dmEgZmFpbHMgd2l0aCBpbmNvcnJlY3Qgc2VsZWN0aW9uIG9mIHByaW50ZWQgcGFnZXMKKyAgLSBK REstODM3MzI3NTogSW1wcm92ZSBEVExTIGhhbmRzaGFraW5nCisgIC0gSkRLLTgzNzM1MTU6IE1p Z3JhdGUgInRlc3QvamRrL2phdmEvbmV0L2h0dHBjbGllbnQvIiB0byBudWxsLXNhZmUgIlNpbXBs ZVNTTENvbnRleHQiIG1ldGhvZHMKKyAgLSBKREstODM3MzU3OTogUHJvYmxlbSBsaXN0IGNvbXBp bGVyL3J1bnRpbWUvVGVzdDcxOTYxOTkuamF2YQorICAtIEpESy04MzczNjUwOiBUZXN0ICJqYXZh eC9zd2luZy9KTWVudUl0ZW0vNjQ1ODEyMy9NYW51YWxCdWc2NDU4MTIzLmphdmEiIGZhaWxzIGJl Y2F1c2UgdGhlIGNoZWNrIGljb25zIGFyZSBub3QgYWxpZ25lZCBwcm9wZXJseSBhcyBleHBlY3Rl ZAorICAtIEpESy04MzczNjc2OiBUZXN0IGphdmF4L25ldC9zc2wvSHR0cHNVUkxDb25uZWN0aW9u L1N1YmplY3RBbHROYW1lSVAuamF2YSBmYWlscyBvbiBhIG1hY2hpbmUgd2l0aG91dCBJUFY2Cisg IC0gSkRLLTgzNzM2OTA6IFVuZXhwZWN0ZWQgS2V5c3RvcmUgbWVzc2FnZSB1c2luZyBqZGsuY3J5 cHRvLmRpc2FibGVkQWxnb3JpdGhtcworICAtIEpESy04MzczNzE0OiBTaGVuYW5kb2FoOiBSZWdp c3RlciBoZXVyaXN0aWMgcGVuYWx0aWVzIGZvbGxvd2luZyBhIGRlZ2VuZXJhdGVkIEdDCisgIC0g SkRLLTgzNzM3MTg6IGpkay9pbnRlcm5hbC9taXNjL1ZNL1J1bnRpbWVBcmd1bWVudHMuamF2YSB0 ZXN0IGZhaWxzIGluIFZpcnR1YWwgdGhyZWFkcyBtb2RlCisgIC0gSkRLLTgzNzM3OTY6IFJlZmFj dG9yIGphdmEvbmV0L2h0dHBjbGllbnQvVGhyb3dpbmdQdWJsaXNoZXJzKi5qYXZhIHRlc3RzIHRv IHVzZSBKVW5pdDUKKyAgLSBKREstODM3Mzg0NzogVGVzdCBqYXZheC9zd2luZy9KTWVudUl0ZW0v TWVudUl0ZW1UZXN0L2J1ZzYxOTc4MzAuamF2YSBmYWlsZWQgYmVjYXVzZSBUaGUgdGVzdCBjYXNl IGF1dG9tYXRpY2FsbHkgZmFpbHMgd2hlbiBjbGlja2luZyBhbnkgaXRlbXMgaW4gdGhlIOKAnE5v dGhpbmfigJ0gbWVudSBpbiBhbGwgZm91ciB3aW5kb3dzIChMZWZ0LXRvLXJpZ2h0KS1NZW51IEl0 ZW0gVGVzdCBhbmQgKFJpZ2h0LXRvLWxlZnQpLU1lbnUgSXRlbSBUZXN0CisgIC0gSkRLLTgzNzM4 NjY6IFJlZmFjdG9yIGphdmEvbmV0L2h0dHBjbGllbnQvVGhyb3dpbmdTdWJzY3JpYmVycyouamF2 YSB0ZXN0cyB0byB1c2UgSlVuaXQ1CisgIC0gSkRLLTgzNzM4OTM6IFJlZmFjdG9yIG5ldHdvcmtp bmcgaHR0cCBzZXJ2ZXIgdGVzdHMgdG8gdXNlIEpVbml0CisgIC0gSkRLLTgzNzM5MTM6IFJlZmFj dG9yIHNlcmlhbGl6YXRpb24gdGVzdHMgdG8gdXNlIEpVbml0CisgIC0gSkRLLTgzNzM5Mjg6IDQg RGFuZ2xpbmcgcG9pbnRlciBkZWZlY3QgZ3JvdXBzIGluIGphdmEuYworICAtIEpESy04Mzc0MDAx OiBzdW4vc2VjdXJpdHkvIHNraXAgd2l0aG91dCBFeGNlcHRpb25zCisgIC0gSkRLLTgzNzQwNTg6 IEVuaGFuY2UgSlBFRyBoYW5kbGluZworICAtIEpESy04Mzc0MTY4OiBSZXNvbHZlIGRpc2FibGVk IHdhcm5pbmdzIGluIEpEV1AgYWdlbnQKKyAgLSBKREstODM3NDMwNDogTXVsdGlSZXNvbHV0aW9u U3BsYXNoVGVzdC5qYXZhIGZhaWxzIGluIENJOiAiSW1hZ2Ugd2l0aCB3cm9uZyByZXNvbHV0aW9u IGlzIHVzZWQgZm9yIHNwbGFzaCBzY3JlZW4hIgorICAtIEpESy04Mzc0MzIyOiBUZXN0TWVtb3J5 V2l0aFN1Ymdyb3Vwcy5qYXZhIGZhaWxzIFBlcm1pc3Npb24gZGVuaWVkCisgIC0gSkRLLTgzNzQz NDM6IEZpeCBTSUdTRUdWIHdoZW4gbGliL21vZHVsZXMgaXMgdW5yZWFkYWJsZQorICAtIEpESy04 Mzc0NDQ5OiBTaGVuYW5kb2FoOiBMZWFmIGxvY2tzIHVzZWQgYnkgU2hlbmFuZG9haCBuZWVkIGxv d2VyIHJhbmtzCisgIC0gSkRLLTgzNzQ1MDY6IEluY29ycmVjdCBwb3NpdGlvbmluZyBvZiBhcnJv dyBpY29uIGluIHBhcmVudCBKTWVudSBpbiBXaW5kb3dzIEwmRgorICAtIEpESy04Mzc0NzEyOiBB T1RNYXBwZWRIZWFwV3JpdGVyOjpyZWxvY2F0ZV9maWVsZF9pbl9idWZmZXIgc2hvdWxkIHVzZSBD b21wcmVzc2VkT29wczo6bmFycm93X29vcF9jYXN0CisgIC0gSkRLLTgzNzQ3Mjc6IEF1ZGlvIGNv bmZpZ3VyYXRpb24gUGxhdGZvcm0gY2xhc3MgLSB1c2UgbmlvIGZvciBnZXR0aW5nIGVuZGlhbm5l c3Mgb2YgdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0KKyAgLSBKREstODM3NDc0NDogRW5hYmxlIGR1 bXBpbmcgb2YgQVBYIEVHUFJzIChSMTbigJNSMzEpIGluIEpWTSBmYXRhbCBlcnJvciBsb2dzCisg IC0gSkRLLTgzNzQ3Njk6IFBQQzogTUFTTTo6cG9wX2NvbnRfZmFzdHBhdGgoKSBzaG91bGQgcmVz ZXQgX2NvbnRfZmFzdHBhdGggaWYgU1AgPT0gX2NvbnRfZmFzdHBhdGgKKyAgLSBKREstODM3NDg4 ODogSW1wbGVtZW50IGludGVybmFsIHRlc3QgY2FjaGUgdG8gaGVscCBVc2VySXRlckNvdW50IHRl c3QgcGVyZm9ybWFuY2UKKyAgLSBKREstODM3NDk5ODogRmFpbGluZyBvczo6d3JpdGUgLSByZW1v dmUgYmFkIGZpbGUKKyAgLSBKREstODM3NTA2NTogVXBkYXRlIExDTVMgdG8gMi4xOAorICAtIEpE Sy04Mzc1MTc3OiBHdGVzdCBvc19saW51eC5kZWNvZGVyX2dldF9zb3VyY2VfaW5mb192YWxpZF92 bSBmYWlscyB3aXRoIC1mZnVuY3Rpb24tc2VjdGlvbnMKKyAgLSBKREstODM3NTI5NDogKGZzKSBG aWxlcy5jb3B5IGNhbiBmYWlsIHdpdGggRU9QTk9UU1VQUCB3aGVuIGNvcHlfZmlsZV9yYW5nZSBu b3Qgc3VwcG9ydGVkCisgIC0gSkRLLTgzNzYwMzE6IEh0dHBzVVJMQ29ubmVjdGlvbi5nZXRTZXJ2 ZXJDZXJ0aWZpY2F0ZXMoKSB0aHJvd3MgImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb246 IGNvbm5lY3Rpb24gbm90IHlldCBvcGVuIiBmb3IgdGhlIEhFQUQgbWV0aG9kCisgIC0gSkRLLTgz NzYxMDQ6IEMyIGNyYXNoZXMgaW4gUGhpTm9kZTo6SWRlYWwoUGhhc2VHVk4qLCBib29sKSBhY2Nl c3NpbmcgTlVMTCBwb2ludGVyCisgIC0gSkRLLTgzNzYxNTE6IFRlc3QgamF2YXgvc3dpbmcvSkZp bGVDaG9vc2VyLzQ5NjYxNzEvYnVnNDk2NjE3MS5qYXZhIGlzIGZhaWxpbmcgd2l0aCBPT01FCisg IC0gSkRLLTgzNzYxNTI6IFRlc3QgamF2YXgvc291bmQvc2FtcGxlZC9DbGlwL2J1ZzUwNzAwODEu amF2YSB0aW1lZCBvdXQgdGhlbiBjb21wbGV0ZWQKKyAgLSBKREstODM3NjE4NTogTm9TdWNoRmll bGRFcnJvciB0aHJvd24gYWZ0ZXIgYSByZWNvcmQgd2l0aCB0eXBlIGFubm90YXRpb24gcmV0cmFu c2Zvcm1lZAorICAtIEpESy04Mzc2MjMzOiBDbGVhbiB1cCBjb2RlIGluIERlc2t0b3AgbmF0aXZl IHBlZXIKKyAgLSBKREstODM3NjI4NzogQ3Jhc2hlcyB3aGVuIHVzaW5nIC1YWDpPYmpBcnJheU1h cmtpbmdTdHJpZGU9MAorICAtIEpESy04Mzc2NDAyOiBEZXBlbmRlbmNpZXM6OnByaW50X3N0YXRp c3RpY3MoKSBhbmQgQWJzdHJhY3RDbGFzc0hpZXJhcmNoeVdhbGtlcjo6cHJpbnRfc3RhdGlzdGlj cygpIGFyZSBub3QgY2FsbGVkIGZyb20gUFJPRFVDVCBjb2RlCisgIC0gSkRLLTgzNzY2ODQ6IENv bXBpbGUgT3BlbkpESyBpbiBoZWFkbGVzcyBtb2RlIHdpdGhvdXQgcmVxdWlyZWQgWDExIGxpYnJh cmllcworICAtIEpESy04Mzc2OTU2OiBBZGQgSlZNVEkgcGhhc2UgZW50ZXJpbmcvc2V0dGluZyB0 byBoc2VyciBldmVudCBsb2cKKyAgLSBKREstODM3Njk2OTogU2hlbmFuZG9haDogR0Mgc3RhdGUg Z2V0dGVycyBzaG91bGQgYmUgaW5saW5lYWJsZQorICAtIEpESy04Mzc2OTcwOiBTaGVuYW5kb2Fo OiBWZXJpZmllciBzaG91bGQgZG8gYmFzaWMgdmVyaWZpY2F0aW9uIGJlZm9yZSB0b3VjaGluZyBv b3BzCisgIC0gSkRLLTgzNzcxNTg6IEVuaGFuY2UgWEJNIGltYWdlIHN1cHBvcnQKKyAgLSBKREst ODM3NzE2NzogamF2YXgvaW1hZ2Vpby9SZWFkQWJvcnRUZXN0LmphdmEgdGhyb3cgTlBFIHdoZW4g eDExIHVuYXZhaWxhYmxlCisgIC0gSkRLLTgzNzc0OTg6IEltcHJvdmUgSHR0cFNlcnZlciBoYW5k bGluZworICAtIEpESy04Mzc3NTEyOiBBT1QgY2FjaGUgY3JlYXRpb24gZmFpbHMgd2l0aCBpbnZh bGlkIG5hdGl2ZSBwb2ludGVyCisgIC0gSkRLLTgzNzc2MDI6IENyZWF0ZSBhdXRvbWF0ZWQgdGVz dCBmb3IgUGFnZVJhbmdlCisgIC0gSkRLLTgzNzc3Mjc6IEdob3N0IGNhcmV0IGFuZCBmb2N1cyBh cHBlYXIgaW4gbm9u4oCRZWRpdGFibGUgdGV4dCBmaWVsZHMKKyAgLSBKREstODM3NzgzMzogRW5o YW5jZSBKYXIgZmlsZSBwcm9jZXNzaW5nCisgIC0gSkRLLTgzNzc5MDc6IChwcm9jZXNzKSBSYWNl IGluIFByb2Nlc3NCdWlsZGVyIGNhbiBjYXVzZSBKVk0gaGFuZ3MKKyAgLSBKREstODM3NzkxMDog TWlub3IgY2xlYW51cCBvZiBqYXZhL2lvL0ZpbGVEZXNjcmlwdG9yL1NoYXJpbmcuamF2YQorICAt IEpESy04Mzc3OTMyOiBBT1QgY2FjaGUgaXMgbm90IHJlamVjdGVkIHdoZW4gSkFSIGZpbGUgaGFz IGNoYW5nZWQKKyAgLSBKREstODM3Nzk0NDogTG93TWVtb3J5VGVzdDIuamF2YSNpZDEgaW50ZXJt aXR0ZW50IGZhaWxzIE9PTUU6IE1ldGFzcGFjZQorICAtIEpESy04Mzc3OTQ5OiBUZXN0WlJlbG9j YXRpb25TZXRFdmVudC5qYXZhIGludGVybWl0dGVudCBmYWlscyBPT01FCisgIC0gSkRLLTgzNzgw ODM6IE1hcmsgc2hlbmFuZG9haC9nZW5lcmF0aW9uYWwvVGVzdE9sZEdyb3d0aFRyaWdnZXJzLmph dmEgYXMgZmxhZ2xlc3MKKyAgLSBKREstODM3ODIwMTogW09HTF0gZ2xYTWFrZUNvbnRleHRDdXJy ZW50KCkgZHJvcHMgdGhlIGJ1ZmZlcnMgb2YgdGhlIHVuYm91bmQgZHJhd2FibGUKKyAgLSBKREst ODM3ODQxNzogUHJpbnRpbmcgQWxsIHBhZ2VzIHJlc3VsdHMgaW4gTlBFIGZvciAxLjEgUHJpbnRK b2IKKyAgLSBKREstODM3ODU2MTogTWFyayBnYy9zaGVuYW5kb2FoL2NvbXBpbGVyL1Rlc3RMaW5r VG9OYXRpdmVSQlAuamF2YSBhcyAvbmF0aXZlCisgIC0gSkRLLTgzNzg2ODc6IEltcHJvdmUgZGVs ZWdhdGlvbiBvZiBIdHRwVVJMQ29ubmVjdGlvbgorICAtIEpESy04Mzc4NzI3OiBbbWFjT1NdIE1p c3NpbmcgZGlzcGF0Y2hfcmVsZWFzZSBmb3Igc2VtYXBob3JlcyBpbiBDRGVza3RvcFBlZXIKKyAg LSBKREstODM3ODc0NjogWkdDOiBqZGsvamZyL2V2ZW50L2djL2RldGFpbGVkL1Rlc3RaUmVsb2Nh dGlvblNldEdyb3VwRXZlbnQuamF2YSBpbnRlcm1pdHRlbnQgT09NRQorICAtIEpESy04Mzc4NzY0 OiBmaWxlU3RyZWFtOjpmaWxlU2l6ZSgpIGZhaWxzIGZvciA+MkdCIGZpbGVzIG9uIFdpbmRvd3MK KyAgLSBKREstODM3ODc3NDogQnVtcCB1cGRhdGUgdmVyc2lvbiBmb3IgT3BlbkpESzogamRrLTI1 LjAuNAorICAtIEpESy04Mzc4ODEwOiBFbmFibGUgbWlzc2luZyBGRk0gdGVzdCB2aWEganRyZWcg cmVxdWlyZXMgZm9yIFJJU0MtVgorICAtIEpESy04Mzc4ODM2OiBFbmFibGUgbGlua3RpbWUtZ2Mg YnkgZGVmYXVsdCBvbiBMaW51eCBwcGM2NGxlCisgIC0gSkRLLTgzNzg4Nzg6IFJlZmFjdG9yIGph dmEvbmlvL2NoYW5uZWxzL0FzeW5jaHJvbm91c1NvY2tldENoYW5uZWwgdGVzdCB0byB1c2UgSlVu aXQKKyAgLSBKREstODM3ODg4ODogamRrL2luY3ViYXRvci92ZWN0b3IvRmxvYXQxNk9wZXJhdGlv bnNCZW5jaG1hcmsuamF2YSB1c2VzIHdyb25nIHBhY2thZ2UgbmFtZQorICAtIEpESy04Mzc5MDIx OiBTaGVuYW5kb2FoOiBTcGVlZHVwIFNoZW5hbmRvYWhTaW1wbGVCaXRNYXBUZXN0CisgIC0gSkRL LTgzNzkyMDI6IFN1cHBvcnQgbGlua3RpbWUtZ2Mgb24gTGludXggd2l0aCBjbGFuZworICAtIEpE Sy04Mzc5NDE2OiBBSVggYnVpbGQgZmFpbHMgaWYgc3lzdGVtIChub3QgR05VKSBkYXRlIHRvb2wg aXMgaW4gUEFUSAorICAtIEpESy04Mzc5NDI1OiBXaW5kb3dzIGFuZCBtYWNPUyBzaG91bGQgbm90 IGFsbG93IHVuc3VwcG9ydGVkIGhlYWRsZXNzLW9ubHkgYnVpbGQKKyAgLSBKREstODM3OTQ1Nzog VGVzdCBFQVRlc3RzLmphdmEjaWQwIEVSUk9SOiBtb25pdG9yIGxpc3QgZXJyb3JzOiBlcnJvcl9j bnQ9MQorICAtIEpESy04Mzc5NDY0OiBFbmFibGUgbWlzc2luZyBzdGFjayB3YWxraW5nIHRlc3Qg dmlhIGp0cmVnIHJlcXVpcmVzIGZvciBSSVNDLVYKKyAgLSBKREstODM3OTQ5OTogW0FJWF0gaGVh ZGxlc3Mtb25seSBidWlsZCBvZiBsaWJqYXd0LnNvIGZhaWxzCisgIC0gSkRLLTgzNzk1MTU6IGRy YWZ0LWlldGYtbGFtcHMta3liZXItY2VydGlmaWNhdGVzIGlzIG5vdyBSRkMgOTkzNQorICAtIEpE Sy04MzgwMDExOiBQYXRoLXRvLWdjcm9vdHMgc2VhcmNoIHNob3VsZCBub3QgdHJpZ2dlciBzdGFj ayBvdmVyZmxvd3MKKyAgLSBKREstODM4MDA0MTogUFBDOiByZW1vdmUgUE9XRVI2IHJlbW5hbnRz CisgIC0gSkRLLTgzODAyMjI6IFJlZmFjdG9yIHRlc3QvamRrL2phdmEvbGFuZy9DaGFyYWN0ZXIg VGVzdE5HIHRlc3RzIHRvIEpVbml0CisgIC0gSkRLLTgzODAzMTY6IFRlc3QgcnVudGltZS9vcy9B dmFpbGFibGVQcm9jZXNzb3JzLmphdmEgZmFpbHMgSW52YWxpZCBhcmd1bWVudAorICAtIEpESy04 MzgwNDA5OiBKVk0gY3Jhc2hlcyB3aGVuIC1YWDpBT1RNb2RlPWNyZWF0ZSB1c2VzIGFwcC5hb3Rj b25mIGdlbmVyYXRlZCB3aXRoIEpWTVRJIGFnZW50CisgIC0gSkRLLTgzODA0Mjg6IFByb2JsZW1M aXN0IGNvbnRhaW5lcnMvZG9ja2VyL1Rlc3RKY21kV2l0aFNpZGVDYXIuamF2YSBvbiBsaW51eC1h bGwKKyAgLSBKREstODM4MDQzMTogU2hlbmFuZG9haDogQ29uY3VycmVudCBtb2RpZmljYXRpb24g b2Ygc3RhY2stY2h1bmsgb2JqZWN0cyBkdXJpbmcgZXZhY3VhdGlvbgorICAtIEpESy04MzgwNDc0 OiBDcmFzaCBTRUdWIGluIFRocmVhZElkVGFibGU6OmxhenlfaW5pdGlhbGl6ZSAgYWZ0ZXIgSkRL LTgzMjM3OTIKKyAgLSBKREstODM4MDU2NTogUFBDNjQ6IGRlb3B0aW1pemF0aW9uIHN0dWIgc2hv dWxkIHNhdmUgdmVjdG9yIHJlZ2lzdGVycworICAtIEpESy04MzgwNjYzOiBVcGRhdGUgamNtZCBt YW4gcGFnZSB0byBpbmNsdWRlIEFPVC5lbmRfcmVjb3JkaW5nIGRpYWdub3N0aWMgY29tbWFuZAor ICAtIEpESy04MzgwNjcyOiBJbXByb3ZlIGNlcnRpZmljYXRpb24gY2hlY2tpbmcKKyAgLSBKREst ODM4MDg0NjogR2VuU2hlbjogUmVtb3ZlIHRoZSBleHBlcmltZW50YWwgb3B0aW9uIHRvIGRpc2Fi bGUgYWRhcHRpdmUgdGVudXJpbmcKKyAgLSBKREstODM4MDk0NzogQWRkIHB1bGwgcmVxdWVzdCB0 ZW1wbGF0ZQorICAtIEpESy04MzgxMDM5OiBFbmhhbmNlIEFXVCBJbWFnaW5nTGliCisgIC0gSkRL LTgzODEwNDk6IEVuaGFuY2UgSmFyIGhhbmRsaW5nCisgIC0gSkRLLTgzODEyMDU6IEdIQTogVXBn cmFkZSBOb2RlLmpzIDIwIHRvIDI0CisgIC0gSkRLLTgzODEzMTU6IGNvbXBpbGVyL3ZlY3RvcmFw aS9UZXN0VmVjdG9yUmVhbGxvY2F0aW9uLmphdmEgZmFpbHMgd2l0aCAtWFg6VXNlQVZYPTEgYWZ0 ZXIgSkRLLTgzODA1NjUKKyAgLSBKREstODM4MTM4MjogU2hlbmFuZG9haDogYXNzZXJ0KGNhcGFj aXR5ID4gMCkgZmFpbGVkOiBmcmVlIHJlZ2lvbnMgbXVzdCBoYXZlIGFsbG9jYXRpb24gY2FwYWNp dHkKKyAgLSBKREstODM4MTUxOTogRW5oYW5jZSBEZXIgVmFsdWUgSGFuZGxpbmcKKyAgLSBKREst ODM4MTc5NjogRW5oYW5jZSBDZXJ0aWZpY2F0ZSBwYXJzaW5nCisgIC0gSkRLLTgzODE4NzE6IEdl blNoZW46IFNoZW5hbmRvYWhHQ0hldXJpc3RpY3MgZmxhZyBub3QgcmVzZXQgYWZ0ZXIgaWdub3Jp bmcgbm9uLWFkYXB0aXZlIHZhbHVlCisgIC0gSkRLLTgzODE5MzU6IEltcHJvdmUgbnVtQ2h1bmtz IHJhbmdlIGluIHRoZSBQUEM2NCBDYWxsQXJhbmdlcgorICAtIEpESy04MzgxOTM3OiBNYWtlIGV4 Y2VwdGlvbnMgaW4gSmF2YV9zdW5fc2VjdXJpdHlfbXNjYXBpX0NLZXlQYWlyR2VuZXJhdG9yIGdl bmVyYXRlQ0tleVBhaXIgbW9yZSBzcGVjaWZpYworICAtIEpESy04MzgyMDE4OiB0ZXN0L2pkay9q YXZhL25pby9maWxlL3NwaS9TZXREZWZhdWx0UHJvdmlkZXIuamF2YSBsZWF2ZXMgYSBkaXJlY3Rv cnkgaW4gL3RtcAorICAtIEpESy04MzgyMDIwOiBUaW1lIFpvbmUgQWJicmV2aWF0aW9uIE5vdCBM b2NhbGl6ZWQgZm9yIE5vbi1FbmdsaXNoIExvY2FsZXMKKyAgLSBKREstODM4MjAzNTogW3Vic2Fu XSBVbmRlciBVQlNBTiBidWlsZHMsIGRpc2FibGUgdGVzdHMgdGhhdCByZWx5IG9uIHNpbXVsYXRl ZCBKVk0gY3Jhc2hlcworICAtIEpESy04MzgyMDkwOiBSZW1vdmUgLnJlaiBhbmQgLm9yaWcgZnJv bSAuZ2l0aWdub3JlCisgIC0gSkRLLTgzODIyNDI6IEpGUjogTWV0YWRhdGEgcmVjb25zdHJ1Y3Rp b24gaW52YWxpZGF0ZXMgQ29uc3RhbnRNYXAgZm9yIGphdmEubGFuZy5TdHJpbmcKKyAgLSBKREst ODM4MjI5NTogU2hlbmFuZG9haDogd3JvbmcgZGVub21pbmF0b3IgaW4gZnVsbCBnYyBzdW1tYXJ5 CisgIC0gSkRLLTgzODIzOTU6IERpc2FibGUgc3RyaW5nb3Atb3ZlcmZsb3cgaW4gc2hlbmFuZG9h aEdlbmVyYXRpb25hbEhlYXAuY3BwCisgIC0gSkRLLTgzODI0MTk6IEFkZCBtaXNzZWQgQGtleSBy YW5kb21uZXNzIGFmdGVyIEpESy04MzcwNDg5CisgIC0gSkRLLTgzODI1MjI6IERpc2FibGUgc3Ry aW5nb3Atb3ZlcmZsb3cgaW4gc2FmZXBvaW50TWVjaGFuaXNtLmNwcAorICAtIEpESy04MzgyNzQw OiBKRlI6IERpc2FibGUgamRrLk9sZE9iamVjdFNhbXBsZSBldmVudCBmb3IgZ2VuZXJhdGlvbmFs IFpHQworICAtIEpESy04MzgyODc4OiBSSVNDLVY6IE1pc3NpbmcgSW5saW5lU2tpcHBlZEluc3Ry dWN0aW9uc0NvdW50ZXIgaW4gWkdDIGJhcnJpZXJzIHN0dWJzCisgIC0gSkRLLTgzODI5MzI6IFsy NXVdIFRlc3QgamF2YS9sYW5nL2luc3RydW1lbnQvUmV0cmFuc2Zvcm1SZWNvcmRUeXBlQW5uL1Rl c3RSZXRyYW5zZm9ybVJlY29yZC5qYXZh4oCOIGZhaWxzIHdpdGggY29tcGlsYXRpb24gZXJyb3IK KyAgLSBKREstODM4MzE2MTogW1BQQzY0XSBNYWNoQ2FsbER5bmFtaWNKYXZhTm9kZTo6cmV0X2Fk ZHJfb2Zmc2V0KCkgbmVlZHMgYWRhcHRhdGlvbiBmb3IgQ09ICisgIC0gSkRLLTgzODMxNzU6ICh0 eikgVXBkYXRlIFRpbWV6b25lIERhdGEgdG8gMjAyNmIKKyAgLSBKREstODM4MzE4MzogU2hlbmFu ZG9haDogTWFuZ2xlIHRyYXNoZWQgcmVnaW9ucyB1cCB0byB0b3AgaW5zdGVhZCBvZiBlbmQKKyAg LSBKREstODM4MzM1NDogVXBkYXRlIExDTVMgdG8gMi4xOS4xCisgIC0gSkRLLTgzODM0NzM6IEZv bGxvdyBvbiBmcm9tIHR6ZGF0YTIwMjZiIHRpbWUgY2hhbmdlIHRvIGluY2x1ZGUgdGVtcG9yYXJ5 IGhhY2sgQkMgdGltZSBjaGFuZ2UKKyAgLSBKREstODM4MzYwMTogUklTQy1WOiBTaGVuYW5kb2Fo QmFycmllclNldEFzc2VtYmxlcjo6bG9hZF9yZWZlcmVuY2VfYmFycmllciBjYWxscyAid2VhayIg b24gInBoYW50b20iIHBhdGgKKyAgLSBKREstODM4MzYzMDogRml4IGl0ZXJhdGlvbiBpbiB0ZXN0 cyBkb2luZyBjbGFzcyByZWRlZmluaXRpb24KKyAgLSBKREstODM4NDA0MzogW1JFRE9dIEluY29y cmVjdCBoYW5kbGluZyBvZiBIYXdhaWlfQWxldXRpYW4gbWV0YXpvbmUKKyAgLSBKREstODM4NDE1 ODogR0hBOiBEb3duZ3JhZGUgV2luZG93cyBHSEEgcnVubmVycyB0byB3aW5kb3dzLTIwMjIgdGVt cG9yYXJpbHkKKyAgLSBKREstODM4NDE2MzogKHNvKSBTb2NrZXRDaGFubmVsLmNvbm5lY3QgYW5k IGZpbmlzaENvbm5lY3QoKSBleGNlcHRpb24gbWVzc2FnZXMgY291bGQgYmUgaW1wcm92ZWQKKyAg LSBKREstODM4NDIyMzogUklTQy1WOiBlbnRyeV9iYXJyaWVyX29mZnNldCBzaG91bGQgY29uc2lk ZXIgVXNlWnRzbworICAtIEpESy04Mzg0NDg2OiBOVExNIHRlc3RzIGZhaWwgb24gV2luZG93cyAx MSBhbmQgV2luZG93cyBTZXJ2ZXIgMjAyNQorICAtIEpESy04Mzg0NDk1OiBVcGRhdGUgTGlicG5n IHRvIDEuNi41OAorICAtIEpESy04Mzg0NTQwOiBbMjV1LCAyMXUsIDE3dV0gVXBkYXRlIEdIQSBK REtzIGFmdGVyIEFwci8yNiB1cGRhdGVzCisgIC0gSkRLLTgzODQ4MTU6IFNlbGVjdE9uZUtleU91 dE9mTWFueSBhbmQgUHJlZmVycmVkS2V5IGZhaWwgYWZ0ZXIgZXhwaXJlZCB0ZXN0IGNlcnRpZmlj YXRlCisgIC0gSkRLLTgzODQ5MDI6IFVwZGF0ZSBHSUZsaWIgdG8gNi4xLjMKKyAgLSBKREstODM4 NTM5MDogVXBkYXRlIEZyZWVUeXBlIHRvIDIuMTQuMworICAtIEpESy04Mzg1NDkwOiBVcGRhdGUg SGFyZkJ1enogdG8gMTQuMi4wCisgIC0gSkRLLTgzODY1NTE6IFdpbmRvd3MgYnVpbGQgYnJva2Vu IGJlY2F1c2Ugb2YgTVN5czIvTWFrZSB1cGRhdGUKKworTm90ZXMgb24gaW5kaXZpZHVhbCBpc3N1 ZXM6Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworaG90c3BvdC9zdmM6CisKK0pESy04 MzY1MDU3OiBBZGQgc3VwcG9ydCBmb3IgamF2YS51dGlsLmNvbmN1cnJlbnQgbG9jayBpbmZvcm1h dGlvbiB0byBUaHJlYWQuZHVtcF90b19maWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorQW4gQWJzdHJhY3RPd25hYmxlU3luY2hyb25pemVyIGxvY2sgb2JqZWN0IGhhcyBhIG5v dGlvbiBvZiBleGNsdXNpdmUKK293bmVyc2hpcCBieSBhIHBhcnRpY3VsYXIgdGhyZWFkLiAgV2hl biBhbm90aGVyIHRocmVhZCBpcyBwYXJrZWQKK3dhaXRpbmcgb24gdGhpcyBsb2NrLCB0aGlzIGlu Zm9ybWF0aW9uIGlzIG5vdyBvYnRhaW5lZCBhbmQgcHJlc2VudGVkCithcyBwYXJ0IG9mIHRoZSB0 aHJlYWQgZHVtcCBwcm92aWRlZCBieSB0aGUKK2NvbS5zdW4ubWFuYWdlbWVudC5Ib3RTcG90RGlh Z25vc3RpY01YQmVhbi5kdW1wVGhyZWFkcyBBUEkgYW5kIHRoZQorYGpjbWQgPHBpZD4gVGhyZWFk LmR1bXBfdG9fZmlsZWAgY29tbWFuZC4KKworc2VjdXJpdHktbGlicy9qYXZheC5jcnlwdG86CisK K0pESy04MzQ3OTM4OiBBZGQgU3VwcG9ydCBmb3IgdGhlIExhdGVzdCBNTC1LRU0gYW5kIE1MLURT QSBQcml2YXRlIEtleSBFbmNvZGluZ3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1RoaXMgcmVs ZWFzZSBvZiBPcGVuSkRLIGFkZHMgc3VwcG9ydCBmb3IgZW5jb2RpbmcgTUwtS0VNIGFuZCBNTC1E U0EKK2tleXMgdG8gUEtDUyM4IGZvcm1hdCB1c2luZyB0aGUgREVSLWVuY29kZWQgQVNOLjEgQ0hP SUNFIGZvcm1hdHMKK2RlZmluZWQgaW4gU2VjdGlvbiA2LCAiUHJpdmF0ZSBLZXkgRm9ybWF0IiBv ZiBSRkMgOTkzNSBbMF0gYW5kIFJGQworOTg4MSBbMV0uICBUaGlzIGZvcm1hdCBpcyByZWZlcnJl ZCB0byBhcyAic2VlZCIuCisKK1RoaXMgcmVsZWFzZSBhbHNvIGludHJvZHVjZXMgdHdvIG5ldyBz ZWN1cml0eSBhbmQgc3lzdGVtIHByb3BlcnRpZXMgdG8KK2NvbnRyb2wgd2hpY2ggUEtDUyM4IGVu Y29kaW5nIGlzIHVzZWQuICBUaGlzIGVuY29kaW5nIGlzIHVzZWQgd2hlbgorZ2VuZXJhdGluZyBu ZXcga2V5cyB3aXRoIGEgYEtleVBhaXJHZW5lcmF0b3JgIGFuZCBhcyB0aGUgb3V0cHV0IHdoZW4K K3RyYW5zbGF0aW5nIHRoZW0gd2l0aCBgS2V5RmFjdG9yeS50cmFuc2xhdGVLZXlgLiAgVGhlc2Ug cHJvcGVydGllcyBhcmUKK2BqZGsubWxrZW0ucGtjczguZW5jb2RpbmdgIGFuZCBgamRrLm1sZHNh LnBrY3M4LmVuY29kaW5nYC4KKworVGhlIHBvc3NpYmxlIGNhc2UtaW5zZW5zaXRpdmUgdmFsdWVz IG9mIHRoZXNlIHByb3BlcnRpZXMgYXJlOgorCisqIGBzZWVkYDsgdGhlIG5ldyBmb3JtYXQgaW50 cm9kdWNlZCBpbiB0aGlzIHJlbGVhc2UgYW5kIHRoZSBkZWZhdWx0LgorVGhpcyBpcyA2NCBieXRl cyBmb3IgTUwtS0VNIGFuZCAzMiBieXRlcyBmb3IgTUwtRFNBLgorKiBgZXhwYW5kZWRLZXlgOyB0 aGUgZm9ybWF0IHVzZWQgb24gaW50cm9kdWN0aW9uIG9mIE1MLUtFTSBhbmQgTUwtRFNBCitrZXlz IGluIE9wZW5KREsgMjQuCisqIGBib3RoYDsgYSBzZXF1ZW5jZSBjb250YWluaW5nIGJvdGggZW5j b2RpbmdzLgorCitBcyBvbGRlciBPcGVuSkRLIHJlbGVhc2VzIGRvIG5vdCBzdXBwb3J0IHRoZSBl bmNvZGluZyBpbnRyb2R1Y2VkIGJ5Cit0aGlzIHJlbGVhc2UsIHRoZXkgd2lsbCBub3QgYmUgYWJs ZSB0byBkZWNvZGUga2V5cyBnZW5lcmF0ZWQgdXNpbmcgdGhlCituZXcgZGVmYXVsdC4gIFRvIHBy b2R1Y2UgYSBrZXkgY29tcGF0aWJsZSB3aXRoIG9sZGVyIHJlbGVhc2VzLCB0aGUKK2VuY29kaW5n IHNob3VsZCBiZSBzZXQgdG8gYGVuY29kZWRLZXlgIGFuZCB0aGVuIHRoZSBrZXkgZWl0aGVyCitn ZW5lcmF0ZWQgb3IgYW4gZXhpc3Rpbmcga2V5IHBhc3NlZCB0byBgdHJhbnNsYXRlS2V5YC4KKwor QXMgd2l0aCBhbGwgc2VjdXJpdHkgYW5kIHN5c3RlbSBwcm9wZXJ0eSBwYWlycywgc3BlY2lmeWlu ZyBhIG5vbi1lbXB0eQordmFsdWUgZm9yIHRoZSBzeXN0ZW0gcHJvcGVydHkgdGFrZXMgcHJlY2Vk ZW5jZSBvdmVyIHRoZSBzZWN1cml0eQorcHJvcGVydHkuCisKK1swXSBodHRwczovL3d3dy5yZmMt ZWRpdG9yLm9yZy9yZmMvcmZjOTkzNS5odG1sI25hbWUtcHJpdmF0ZS1rZXktZm9ybWF0CitbMV0g aHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzk4ODEuaHRtbCNuYW1lLXByaXZhdGUt a2V5LWZvcm1hdAorCitob3RzcG90L2pmcjoKKworSkRLLTgzODI3NDA6IEpGUjogRGlzYWJsZSBq ZGsuT2xkT2JqZWN0U2FtcGxlIGV2ZW50IGZvciBnZW5lcmF0aW9uYWwgWkdDCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KK0xlYWsgcHJvZmlsaW5nIHVzaW5nIHRoZSBKRlIgZXZlbnQgYGpkay5PbGRPYmplY3RT YW1wbGVgIGlzIG5vdworZGlzYWJsZWQgZm9yIGdlbmVyYXRpb25hbCBaR0MgZHVlIHRvIHBlcmZv cm1hbmNlIGlzc3Vlcy4gIEdlbmVyYXRpb25hbAorWkdDIG9ubHkgZG9lcyB3ZWFrIHJlZmVyZW5j ZSBwcm9jZXNzaW5nIGluIHRoZSBvbGQgZ2VuZXJhdGlvbiwgc28KK3NhbXBsaW5nIHdpbGwgY2F1 c2UgZ2FyYmFnZSB0byBiZSBhcnRpZmljaWFsbHkga2VwdCBhbGl2ZSB1bnRpbCBhbiBvbGQKK2dl bmVyYXRpb24gY29sbGVjdGlvbi4KKworc2VjdXJpdHktbGlicy9qYXZhLnNlY3VyaXR5OgorCitK REstODM3MjM1MTogQWRkIDIgV0lTZUtleSByb290cworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KK1RoZSBmb2xsb3dpbmcgcm9vdCBjZXJ0aWZpY2F0ZXMgaGF2ZSBiZWVuIGFkZGVk IHRvIHRoZSBjYWNlcnRzCit0cnVzdHN0b3JlOgorCitBbGlhcyBOYW1lOiB3aXNla2V5Z2xvYmFs cm9vdGdiY2EKK0Rpc3Rpbmd1aXNoZWQgTmFtZTogQ049T0lTVEUgV0lTZUtleSBHbG9iYWwgUm9v dCBHQiBDQSwgT1U9T0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZCwgTz1XSVNlS2V5LCBDPUNICitT ZXJpYWwgTnVtYmVyOiA3NmIxMjA1Mjc0ZjA4NTg3NDZiM2Y4MjMxYWY2YzJjMAorVmFsaWQgRnJv bTogTW9uIERlYyAwMSAxNTowMDozMiBHTVQgMjAxNAorVmFsaWQgVW50aWw6IFRodSBEZWMgMDEg MTU6MTA6MzEgR01UIDIwMzkKKworQWxpYXMgTmFtZTogd2lzZWtleWdsb2JhbHJvb3RnY2NhCitE aXN0aW5ndWlzaGVkIE5hbWU6IENOPU9JU1RFIFdJU2VLZXkgR2xvYmFsIFJvb3QgR0MgQ0EsIE9V PU9JU1RFIEZvdW5kYXRpb24gRW5kb3JzZWQsIE89V0lTZUtleSwgQz1DSAorU2VyaWFsIE51bWJl cjogMjEyYTU2MGNhZWRhMGNhYjQwNDViZjJiYTIyZDNhZWEKK1ZhbGlkIEZyb206IFR1ZSBNYXkg MDkgMDk6NDg6MzQgR01UIDIwMTcKK1ZhbGlkIFVudGlsOiBGcmkgTWF5IDA5IDA5OjU4OjMzIEdN VCAyMDQyCisKK0pESy04MzgxNzk2OiBFbmhhbmNlIENlcnRpZmljYXRlIHBhcnNpbmcKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1dpdGggdGhpcyByZWxlYXNlIG9m IE9wZW5KREssIGEgc2VjdXJpdHkgYW5kIHN5c3RlbSBwcm9wZXJ0eQorYGNvbS5zdW4uc2VjdXJp dHkuY3JsLm1heFNpemVgIGlzIGludHJvZHVjZWQgd2hpY2ggYWN0cyBhcyBhIG1heGltdW0KK3Np emUgbGltaXQgb24gYSBDZXJ0aWZpY2F0ZSBSZXZvY2F0aW9uIExpc3QgKENSTCkgZG93bmxvYWRl ZCBvdmVyIHRoZQorbmV0d29yay4gIEZvciBVUklDZXJ0U3RvcmUgcmVxdWVzdHMsIHRoZSB2YWx1 ZSBpcyB0aGUgbWF4aW11bSBzaXplIGluCitieXRlcyBvZiB0aGUgREVSLWVuY29kZWQgQ1JMLiAg Rm9yIExEQVBDZXJ0U3RvcmUgcXVlcmllcywgdGhlCit0aHJlc2hvbGQgaXMgdGhlIHN1bSBvZiBh bGwgQ1JMcyBkb3dubG9hZGVkIGZyb20gYSBzaW5nbGUgc2VhcmNoLiAgQnkKK2RlZmF1bHQsIHRo ZSBtYXhpbXVtIHNpemUgaXMgMjBNaUIgKDIwOTcxNTIwIGJ5dGVzKSBhbmQgQ1JMcyBsYXJnZXIK K3RoYW4gdGhpcyB3aWxsIGJlIGRpc2NhcmRlZC4gIEEgdmFsdWUgbGVzcyB0aGFuIHplcm8gbWF5 IGJlIHVzZWQgdG8KK3R1cm4gb2ZmIHRoZSBzaXplIGxpbWl0IGFuZCBub24tbnVtZXJpYyB2YWx1 ZXMgd2lsbCBiZSBpZ25vcmVkLiAgQQorbm9uLWVtcHR5IHZhbHVlIGZvciB0aGUgc3lzdGVtIHBy b3BlcnR5IHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0aGUKK3NlY3VyaXR5IHByb3BlcnR5LiAgRW5h YmxpbmcgJ2NlcnRwYXRoJyBkZWJ1ZyBsb2dnaW5nIHdpbGwgb3V0cHV0IHRoZQorY3VycmVudCBz aXplIGxpbWl0IGFuZCBub3RlIGFueSBkaXNjYXJkZWQgQ1JMcy4KKwogTmV3IGluIHJlbGVhc2Ug T3BlbkpESyAyNS4wLjMgKDIwMjYtMDQtMjEpOgogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQogTGl2ZSB2ZXJzaW9ucyBvZiB0aGVzZSByZWxlYXNlIG5vdGVzIGNh biBiZSBmb3VuZCBhdDoKCmRpZmYgLS1naXQgYS9UZXN0VHJhbnNsYXRpb25zLmphdmEgYi9UZXN0 VHJhbnNsYXRpb25zLmphdmEKaW5kZXggMWIwMmMwNi4uOWU0MDAyYSAxMDA2NDQKLS0tIGEvVGVz dFRyYW5zbGF0aW9ucy5qYXZhCisrKyBiL1Rlc3RUcmFuc2xhdGlvbnMuamF2YQpAQCAtMSw1ICsx LDUgQEAKIC8qIFRlc3RUcmFuc2xhdGlvbnMgLS0gRW5zdXJlIHRyYW5zbGF0aW9ucyBhcmUgYXZh aWxhYmxlIGZvciBuZXcgdGltZXpvbmVzCi0gICBDb3B5cmlnaHQgKEMpIDIwMjIgUmVkIEhhdCwg SW5jLgorICAgQ29weXJpZ2h0IChDKSAyMDI2IFJlZCBIYXQsIEluYy4KIAogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzCkBAIC01MCwyNSArNTAsMzggQEAgcHVibGljIGNsYXNzIFRlc3RUcmFuc2xhdGlvbnMg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdW50YWluIERh eWxpZ2h0IFRpbWUiLCAiTURUIiwgIk1EVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiTW91bnRhaW4gVGltZSIsICJNVCIsICJNVCJ9KTsKICAgICAgICAgbWFw LnB1dChMb2NhbGUuRlJBTkNFLCBuZXcgU3RyaW5nW10geyAiaGV1cmUgbm9ybWFsZSBkZXMgUm9j aGV1c2VzIiwgIlVUQ1x1MjIxMjA3OjAwIiwgIk1TVCIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImhldXJlIGRcdTIwMTlcdTAwZTl0XHUwMGU5IGRlcyBS b2NoZXVzZXMiLCAiVVRDXHUyMjEyMDY6MDAiLCAiTVNUIiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiaGV1cmUgZGVzIFJvY2hldXNlcyIsICJVVENcdTIy MTIwNzowMCIsICJNU1QifSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImhldXJlIGRcdTIwMTlcdTAwZTl0XHUwMGU5IGRlcyBSb2NoZXVzZXMiLCAiVVRD XHUyMjEyMDY6MDAiLCAiTURUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiaGV1cmUgZGVzIFJvY2hldXNlcyIsICJVVENcdTIyMTIwNzowMCIsICJNVCJ9 KTsKICAgICAgICAgbWFwLnB1dChMb2NhbGUuR0VSTUFOWSwgbmV3IFN0cmluZ1tdIHsgIlJvY2t5 LU1vdW50YWlucy1Ob3JtYWx6ZWl0IiwgIkdNVC0wNzowMCIsICJNU1QiLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUm9ja3ktTW91bnRhaW5zLVNvbW1l cnplaXQiLCAiR01ULTA2OjAwIiwgIk1TVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJSb2NreS1Nb3VudGFpbnMtWmVpdCIsICJHTVQtMDc6MDAiLCAi TVNUIn0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi Um9ja3ktTW91bnRhaW5zLVNvbW1lcnplaXQiLCAiR01ULTA2OjAwIiwgIk1EVCIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSb2NreS1Nb3VudGFpbnMt WmVpdCIsICJHTVQtMDc6MDAiLCAiTVQifSk7CiAgICAgICAgIENJVURBRF9KVUFSRVogPSBDb2xs ZWN0aW9ucy51bm1vZGlmaWFibGVNYXAobWFwKTsKICAgICB9CiAKIAogICAgIHB1YmxpYyBzdGF0 aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKLSAgICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwg MSkgewotICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJUZXN0IG11c3QgYmUgc3RhcnRl ZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBsb2NhbGUgcHJvdmlkZXIuIik7Ci0gICAgICAgICAgICBT eXN0ZW0uZXhpdCgxKTsKKyAgICAgICAgYm9vbGVhbiBkZWJ1ZyA9IGZhbHNlOworCisgICAgICAg IGlmIChhcmdzLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIGRlYnVnID0gQm9vbGVhbi5wYXJz ZUJvb2xlYW4oYXJnc1swXSk7CiAgICAgICAgIH0KIAorICAgICAgICBTeXN0ZW0uZXJyLnByaW50 ZigiRGVidWdnaW5nOiAlc1xuIiwgZGVidWcpOworCisgICAgICAgIHRlc3Rab25lU3RyaW5ncyhk ZWJ1Zyk7CisKKyAgICAgICAgdGVzdFpvbmUoS1lJViwKKyAgICAgICAgICAgICAgICAgbmV3IFN0 cmluZ1tdIHsgIkV1cm9wZS9LaWV2IiwgIkV1cm9wZS9LeWl2IiwgIkV1cm9wZS9Vemhnb3JvZCIs ICJFdXJvcGUvWmFwb3Jvemh5ZSIgfSk7CisgICAgICAgIHRlc3Rab25lKENJVURBRF9KVUFSRVos CisgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7ICJBbWVyaWNhL0NhbWJyaWRnZV9CYXki LCAiQW1lcmljYS9DaXVkYWRfSnVhcmV6IiB9KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRp YyB2b2lkIHRlc3Rab25lU3RyaW5ncyhmaW5hbCBib29sZWFuIGRlYnVnKSB7CiAgICAgICAgIFN5 c3RlbS5vdXQucHJpbnRsbigiQ2hlY2tpbmcgc2FuaXR5IG9mIGZ1bGwgem9uZSBzdHJpbmcgc2V0 Li4uIik7CiAgICAgICAgIGJvb2xlYW4gaW52YWxpZCA9IEFycmF5cy5zdHJlYW0oTG9jYWxlLmdl dEF2YWlsYWJsZUxvY2FsZXMoKSkKLSAgICAgICAgICAgIC5wZWVrKGwgLT4gU3lzdGVtLm91dC5w cmludGxuKCJMb2NhbGU6ICIgKyBsKSkKKyAgICAgICAgICAgIC5wZWVrKGwgLT4gU3lzdGVtLm91 dC5wcmludGYoZGVidWcgPyAiTG9jYWxlOiAlc1xuIiA6ICIiLCBsKSkKICAgICAgICAgICAgIC5t YXAobCAtPiBEYXRlRm9ybWF0U3ltYm9scy5nZXRJbnN0YW5jZShsKS5nZXRab25lU3RyaW5ncygp KQorICAgICAgICAgICAgLnBlZWsoZGYgLT4gU3lzdGVtLm91dC5wcmludGYoZGVidWcgPyAiWm9u ZSBzdHJpbmcgc2l6ZTogJXNcbiIgOiAiIiwgZGYubGVuZ3RoKSkKICAgICAgICAgICAgIC5mbGF0 TWFwKHpzIC0+IEFycmF5cy5zdHJlYW0oenMpKQogICAgICAgICAgICAgLmZsYXRNYXAobmFtZXMg LT4gQXJyYXlzLnN0cmVhbShuYW1lcykpCiAgICAgICAgICAgICAuZmlsdGVyKG5hbWUgLT4gT2Jq ZWN0cy5pc051bGwobmFtZSkgfHwgbmFtZS5pc0VtcHR5KCkpCkBAIC03OCwxNSArOTEsOSBAQCBw dWJsaWMgY2xhc3MgVGVzdFRyYW5zbGF0aW9ucyB7CiAgICAgICAgICAgICBTeXN0ZW0uZXJyLnBy aW50bG4oIlpvbmUgc3RyaW5nIGZvciBhIGxvY2FsZSByZXR1cm5lZCBudWxsIG9yIGVtcHR5IHN0 cmluZyIpOwogICAgICAgICAgICAgU3lzdGVtLmV4aXQoMik7CiAgICAgICAgIH0KLQotICAgICAg ICBTdHJpbmcgbG9jYWxlUHJvdmlkZXIgPSBhcmdzWzBdOwotICAgICAgICB0ZXN0Wm9uZShsb2Nh bGVQcm92aWRlciwgS1lJViwKLSAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgIkV1cm9w ZS9LaWV2IiwgIkV1cm9wZS9LeWl2IiwgIkV1cm9wZS9Vemhnb3JvZCIsICJFdXJvcGUvWmFwb3Jv emh5ZSIgfSk7Ci0gICAgICAgIHRlc3Rab25lKGxvY2FsZVByb3ZpZGVyLCBDSVVEQURfSlVBUkVa LAotICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAiQW1lcmljYS9DYW1icmlkZ2VfQmF5 IiwgIkFtZXJpY2EvQ2l1ZGFkX0p1YXJleiIgfSk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBzdGF0 aWMgdm9pZCB0ZXN0Wm9uZShTdHJpbmcgbG9jYWxlUHJvdmlkZXIsIE1hcDxMb2NhbGUsU3RyaW5n W10+IGV4cCwgU3RyaW5nW10gaWRzKSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB0ZXN0Wm9u ZShNYXA8TG9jYWxlLFN0cmluZ1tdPiBleHAsIFN0cmluZ1tdIGlkcykgewogICAgICAgICBmb3Ig KExvY2FsZSBsIDogZXhwLmtleVNldCgpKSB7CiAgICAgICAgICAgICBTdHJpbmdbXSBleHBlY3Rl ZCA9IGV4cC5nZXQobCk7CiAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiRXhwZWN0ZWQg dmFsdWVzIGZvciAlcyBhcmUgJXNcbiIsIGwsIEFycmF5cy50b1N0cmluZyhleHBlY3RlZCkpOwpA QCAtOTcsMTYgKzEwNCwxMSBAQCBwdWJsaWMgY2xhc3MgVGVzdFRyYW5zbGF0aW9ucyB7CiAKICAg ICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiQ2hlY2tpbmcgbG9jYWxlICVzIGZvciAl cy4uLlxuIiwgbCwgaWQpOwogCi0gICAgICAgICAgICAgICAgaWYgKCJKUkUiLmVxdWFscyhsb2Nh bGVQcm92aWRlcikgfHwgIkNMRFIiLmVxdWFscyhsb2NhbGVQcm92aWRlcikpIHsKLSAgICAgICAg ICAgICAgICAgICAgZXhwZWN0ZWRTaG9ydFN0ZCA9IGV4cGVjdGVkWzJdOwotICAgICAgICAgICAg ICAgICAgICBleHBlY3RlZFNob3J0RFNUID0gZXhwZWN0ZWRbNV07Ci0gICAgICAgICAgICAgICAg ICAgIGV4cGVjdGVkU2hvcnRHZW4gPSBleHBlY3RlZFs4XTsKLSAgICAgICAgICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50ZigiSW52YWxpZCBsb2Nh bGUgcHJvdmlkZXIgJXNcbiIsIGxvY2FsZVByb3ZpZGVyKTsKLSAgICAgICAgICAgICAgICAgICAg U3lzdGVtLmV4aXQoMyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFN5c3Rl bS5vdXQucHJpbnRmKCJMb2NhbGUgUHJvdmlkZXIgaXMgJXMsIHVzaW5nIHNob3J0IHZhbHVlcyAl cywgJXMgYW5kICVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fs ZVByb3ZpZGVyLCBleHBlY3RlZFNob3J0U3RkLCBleHBlY3RlZFNob3J0RFNULCBleHBlY3RlZFNo b3J0R2VuKTsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFNob3J0U3RkID0gZXhwZWN0ZWRbMl07 CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRTaG9ydERTVCA9IGV4cGVjdGVkWzVdOworICAgICAg ICAgICAgICAgIGV4cGVjdGVkU2hvcnRHZW4gPSBleHBlY3RlZFs4XTsKKyAgICAgICAgICAgICAg ICBTeXN0ZW0ub3V0LnByaW50ZigiVXNpbmcgc2hvcnQgdmFsdWVzICVzLCAlcyBhbmQgJXNcbiIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRTaG9ydFN0ZCwgZXhw ZWN0ZWRTaG9ydERTVCwgZXhwZWN0ZWRTaG9ydEdlbik7CiAKICAgICAgICAgICAgICAgICBTdHJp bmcgbG9uZ1N0ZCA9IFRpbWVab25lLmdldFRpbWVab25lKGlkKS5nZXREaXNwbGF5TmFtZShmYWxz ZSwgVGltZVpvbmUuTE9ORywgbCk7CiAgICAgICAgICAgICAgICAgU3RyaW5nIHNob3J0U3RkID0g VGltZVpvbmUuZ2V0VGltZVpvbmUoaWQpLmdldERpc3BsYXlOYW1lKGZhbHNlLCBUaW1lWm9uZS5T SE9SVCwgbCk7CgpkaWZmIC0tZ2l0IGEvamF2YS0yNS1vcGVuamRrLXBvcnRhYmxlLnNwZWMgYi9q YXZhLTI1LW9wZW5qZGstcG9ydGFibGUuc3BlYwppbmRleCA4MzNmZDkxLi5jZWQ4ZDU2IDEwMDY0 NAotLS0gYS9qYXZhLTI1LW9wZW5qZGstcG9ydGFibGUuc3BlYworKysgYi9qYXZhLTI1LW9wZW5q ZGstcG9ydGFibGUuc3BlYwpAQCAtMSw0ICsxLDk4IEBACi0jIGRlYnVnX3BhY2thZ2UgJSV7bmls fSBpcyBwb3J0YWJsZS1qZGtzIHNwZWNpZmljCisjIE5ldyBWZXJzaW9uLVN0cmluZyBzY2hlbWUt c3R5bGUgZGVmaW5lcworJWdsb2JhbCBmZWF0dXJldmVyIDI1CislZ2xvYmFsIGludGVyaW12ZXIg MAorJWdsb2JhbCB1cGRhdGV2ZXIgNAorJWdsb2JhbCBwYXRjaHZlciAwCislZ2xvYmFsIGJ1aWxk dmVyIDcKKyVnbG9iYWwgcG9ydGFibGVyZWxlYXNlIDIKKyVnbG9iYWwgcnBtcmVsZWFzZSAwCisK KyMgRGVmaW5lIEljZWRUZWEgdmVyc2lvbiB1c2VkIGZvciBTeXN0ZW1UYXAgdGFwc2V0cyBhbmQg ZGVza3RvcCBmaWxlCislZ2xvYmFsIGljZWR0ZWF2ZXIgICAgICA2LjAuMHByZTAwLWM4NDhiOTNh ODU5OAorIyBEZWZpbmUgY3VycmVudCBHaXQgcmV2aXNpb24gZm9yIHRoZSBGSVBTIHN1cHBvcnQg cGF0Y2hlcworJWdsb2JhbCBmaXBzdmVyIDU3NzIyYWFiODAyCisjIERlZmluZSBKREsgdmVyc2lv bnMKKyVnbG9iYWwgbmV3amF2YXZlciAle2ZlYXR1cmV2ZXJ9LiV7aW50ZXJpbXZlcn0uJXt1cGRh dGV2ZXJ9LiV7cGF0Y2h2ZXJ9CislZ2xvYmFsIGphdmF2ZXIgICAgICAgICAle2ZlYXR1cmV2ZXJ9 CisjIFN0cmlwIHVwIHRvIDYgdHJhaWxpbmcgemVyb3MgaW4gbmV3amF2YXZlciwgYXMgdGhlIEpE SyBkb2VzLCB0byBnZXQgdGhlIGNvcnJlY3QgdmVyc2lvbiB1c2VkIGluIGZpbGVuYW1lcworJWds b2JhbCBmaWxldmVyICUoc3ZuPSV7bmV3amF2YXZlcn07IGZvciBpIGluIDEgMiAzIDQgNSA2IDsg ZG8gc3ZuPSR7c3ZuJSUuMH0gOyBkb25lOyBlY2hvICR7c3ZufSkKKyMgVGhlIHRhZyB1c2VkIHRv IGNyZWF0ZSB0aGUgT3BlbkpESyB0YXJiYWxsCislZ2xvYmFsIHZjc3RhZyBqZGstJXtmaWxldmVy fSsle2J1aWxkdmVyfSV7P3RhZ3N1ZmZpeDotJXt0YWdzdWZmaXh9fQorCisjIFN0YW5kYXJkIEpQ YWNrYWdlIG5hbWluZyBhbmQgdmVyc2lvbmluZyBkZWZpbmVzCislZ2xvYmFsIG9yaWdpbiAgICAg ICAgICBvcGVuamRrCislZ2xvYmFsIG9yaWdpbl9uaWNlICAgICBPcGVuSkRLCislZ2xvYmFsIHRv cF9sZXZlbF9kaXJfbmFtZSAgICV7dmNzdGFnfQorJWdsb2JhbCB0b3BfbGV2ZWxfZGlyX25hbWVf YmFja3VwICV7dG9wX2xldmVsX2Rpcl9uYW1lfS1iYWNrdXAKKyMgRGVmaW5lIGFuIG9wdGlvbmFs IHN1ZmZpeCBmb3IgdGhlIE9TIHRoaXMgcGFja2FnZSBpcyBidWlsdCBvbgorJWlmIDAlez9yaGVs fSA9PSA3CislZ2xvYmFsIHBrZ29zIHJoZWw3CislZW5kaWYKKworIyBEZWZpbmUgbWlsZXN0b25l IChFQSBmb3IgcHJlLXJlbGVhc2VzLCBHQSBmb3IgcmVsZWFzZXMpCisjIFJlbGVhc2Ugd2lsbCBi ZSAod2hlcmUgTiBpcyB1c3VhbGx5IGEgbnVtYmVyIHN0YXJ0aW5nIGF0IDEpOgorIyAtIDAuTi5l YTxkaXN0PiBmb3IgRUEgcmVsZWFzZXMsCisjIC0gTjxkaXN0PiBmb3IgR0EgcmVsZWFzZXMKKyVn bG9iYWwgaXNfZ2EgICAgICAgICAgIDEKKyVpZiAle2lzX2dhfQorJWdsb2JhbCBidWlsZF90eXBl IEdBCislZ2xvYmFsIGVhX2Rlc2lnbmF0b3IgIiIKKyVnbG9iYWwgZWFfZGVzaWduYXRvcl96aXAg JXtuaWx9CislZ2xvYmFsIGV4dHJhdmVyICV7bmlsfQorJWdsb2JhbCBlYXByZWZpeCAle25pbH0K KyVlbHNlCislZ2xvYmFsIGJ1aWxkX3R5cGUgRUEKKyVnbG9iYWwgZWFfZGVzaWduYXRvciBlYQor JWdsb2JhbCBlYV9kZXNpZ25hdG9yX3ppcCAtJXtlYV9kZXNpZ25hdG9yfQorJWdsb2JhbCBleHRy YXZlciAuJXtlYV9kZXNpZ25hdG9yfQorJWdsb2JhbCBlYXByZWZpeCAwLgorJWVuZGlmCisKKyVn bG9iYWwgY29tcGF0aWJsZW5hbWUgIGphdmEtJXtqYXZhdmVyfS0le29yaWdpbn0KKworTmFtZTog ICAgamF2YS0yNS0le29yaWdpbn0tcG9ydGFibGUlez9wa2dvczotJXtwa2dvc319CitWZXJzaW9u OiAle25ld2phdmF2ZXJ9LiV7YnVpbGR2ZXJ9CitSZWxlYXNlOiAlez9lYXByZWZpeH0le3BvcnRh YmxlcmVsZWFzZX0uJXtycG1yZWxlYXNlfSV7P2V4dHJhdmVyfSV7P2Rpc3R9CisKKyVnbG9iYWwg ZnVsbHZlcnNpb24gICAgICV7Y29tcGF0aWJsZW5hbWV9LSV7dmVyc2lvbn0tJXtyZWxlYXNlfQor CisjIGphdmEtMS41LjAtaWJtIGZyb20ganBhY2thZ2Uub3JnIHNldCBFcG9jaCB0byAxIGZvciB1 bmtub3duIHJlYXNvbnMKKyMgYW5kIHRoaXMgY2hhbmdlIHdhcyBicm91Z2h0IGludG8gUkhFTC00 LiBqYXZhLTEuNS4wLWlibSBwYWNrYWdlcworIyBhbHNvIGluY2x1ZGVkIHRoZSBlcG9jaCBpbiB0 aGVpciB2aXJ0dWFsIHByb3ZpZGVzLiBUaGlzIGNyZWF0ZWQgYQorIyBzaXR1YXRpb24gd2hlcmUg aW4tdGhlLXdpbGQgamF2YS0xLjUuMC1pYm0gcGFja2FnZXMgcHJvdmlkZWQgImphdmEgPQorIyAx OjEuNS4wIi4gSW4gUlBNIHRlcm1zLCAiMS42LjAgPCAxOjEuNS4wIiBzaW5jZSAxLjYuMCBpcwor IyBpbnRlcnByZXRlZCBhcyAwOjEuNi4wLiBTbyB0aGUgImphdmEgPj0gMS42LjAiIHJlcXVpcmVt ZW50IHdvdWxkIGJlCisjIHNhdGlzZmllZCBieSB0aGUgMToxLjUuMCBwYWNrYWdlcy4gVGh1cyB3 ZSBuZWVkIHRvIHNldCB0aGUgZXBvY2ggaW4KKyMgSkRLIHBhY2thZ2UgPj0gMS42LjAgdG8gMSwg YW5kIHBhY2thZ2VzIHJlZmVycmluZyB0byBKREsgdmlydHVhbAorIyBwcm92aWRlcyA+PSAxLjYu MCBtdXN0IHNwZWNpZnkgdGhlIGVwb2NoLCAiamF2YSA+PSAxOjEuNi4wIi4KK0Vwb2NoOiAgIDEK K1N1bW1hcnk6ICV7b3JpZ2luX25pY2V9ICV7ZmVhdHVyZXZlcn0gUnVudGltZSBFbnZpcm9ubWVu dCBwb3J0YWJsZSBlZGl0aW9uCisjIEdyb3VwcyBhcmUgb25seSB1c2VkIHVwIHRvIFJIRUwgOCBh bmQgb24gRmVkb3JhIHZlcnNpb25zIHByaW9yIHRvIEYzMAorJWlmICgwJXs/cmhlbH0gPiAwICYm IDAlez9yaGVsfSA8PSA4KSB8fCAoMCV7P2ZlZG9yYX0gPj0gMCAmJiAwJXs/ZmVkb3JhfSA8IDMw KQorR3JvdXA6ICAgRGV2ZWxvcG1lbnQvTGFuZ3VhZ2VzCislZW5kaWYKKworIyBIb3RTcG90IGNv ZGUgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIKKyMgSkRLIGxpYnJhcnkgY29kZSBpcyBsaWNlbnNl ZCB1bmRlciBHUEx2MiB3aXRoIHRoZSBDbGFzc3BhdGggZXhjZXB0aW9uCisjIFRoZSBBcGFjaGUg bGljZW5zZSBpcyB1c2VkIGluIGNvZGUgdGFrZW4gZnJvbSBBcGFjaGUgcHJvamVjdHMgKHByaW1h cmlseSB4YWxhbiAmIHhlcmNlcykKKyMgRE9NIGxldmVscyAyICYgMyBhbmQgdGhlIFhNTCBkaWdp dGFsIHNpZ25hdHVyZSBzY2hlbWFzIGFyZSBsaWNlbnNlZCB1bmRlciB0aGUgVzNDIFNvZnR3YXJl IExpY2Vuc2UKKyMgVGhlIEpTUjE2NiBjb25jdXJyZW5jeSBjb2RlIGlzIGluIHRoZSBwdWJsaWMg ZG9tYWluCisjIFRoZSBCU0QgYW5kIE1JVCBsaWNlbnNlcyBhcmUgdXNlZCBmb3IgYSBudW1iZXIg b2YgdGhpcmQtcGFydHkgbGlicmFyaWVzIChzZWUgQURESVRJT05BTF9MSUNFTlNFX0lORk8pCisj IFRoZSBPcGVuSkRLIHNvdXJjZSB0cmVlIGluY2x1ZGVzOgorIyAtIEpQRUcgbGlicmFyeSAoSUpH KSwgemxpYiAmIGxpYnBuZyAoemxpYiksIGdpZmxpYiAoTUlUKSwgaGFyZmJ1enogKElTQyksCisj IC0gZnJlZXR5cGUgKEZUTCksIGpsaW5lIChCU0QpIGFuZCBMQ01TIChNSVQpCisjIC0ganF1ZXJ5 IChNSVQpLCBqZGsuY3J5cHRvLmNyeXB0b2tpIFBLQ1MgMTEgd3JhcHBlciAoUlNBKQorIyAtIHB1 YmxpY19zdWZmaXhfbGlzdC5kYXQgZnJvbSBwdWJsaWNzdWZmaXgub3JnIChNUEx2Mi4wKQorIyBU aGUgdGVzdCBjb2RlIGluY2x1ZGVzIGNvcGllcyBvZiBOU1MgdW5kZXIgdGhlIE1vemlsbGEgUHVi bGljIExpY2Vuc2UgdjIuMAorIyBUaGUgUENTQ2xpdGUgaGVhZGVycyBhcmUgdW5kZXIgYSBCU0Qg d2l0aCBhZHZlcnRpc2luZyBsaWNlbnNlCisjIFRoZSBlbGxpcHRpYyBjdXJ2ZSBjcnlwdG9ncmFw aHkgKEVDQykgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIExHUEx2Mi4xIG9yIGFu eSBsYXRlciB2ZXJzaW9uCisjIEF1dG9tYXRpY2FsbHkgY29udmVydGVkIGZyb20gb2xkIGZvcm1h dDogQVNMIDEuMSBhbmQgQVNMIDIuMCBhbmQgQlNEIGFuZCBCU0Qgd2l0aCBhZHZlcnRpc2luZyBh bmQgR1BMKyBhbmQgR1BMdjIgYW5kIEdQTHYyIHdpdGggZXhjZXB0aW9ucyBhbmQgSUpHIGFuZCBM R1BMdjIrIGFuZCBNSVQgYW5kIE1QTHYyLjAgYW5kIFB1YmxpYyBEb21haW4gYW5kIFczQyBhbmQg emxpYiBhbmQgSVNDIGFuZCBGVEwgYW5kIFJTQSAtIHJldmlldyBpcyBoaWdobHkgcmVjb21tZW5k ZWQuCitMaWNlbnNlOiAgQXBhY2hlLTEuMSBBTkQgQXBhY2hlLTIuMCBBTkQgTGljZW5zZVJlZi1D YWxsYXdheS1CU0QgQU5EIExpY2Vuc2VSZWYtQ2FsbGF3YXktQlNELXdpdGgtYWR2ZXJ0aXNpbmcg QU5EIEdQTC0xLjAtb3ItbGF0ZXIgQU5EIEdQTC0yLjAtb25seSBBTkQgTGljZW5zZVJlZi1DYWxs YXdheS1HUEx2Mi13aXRoLWV4Y2VwdGlvbnMgQU5EIElKRyBBTkQgTGljZW5zZVJlZi1DYWxsYXdh eS1MR1BMdjIrIEFORCBMaWNlbnNlUmVmLUNhbGxhd2F5LU1JVCBBTkQgTVBMLTIuMCBBTkQgTGlj ZW5zZVJlZi1DYWxsYXdheS1QdWJsaWMtRG9tYWluIEFORCBXM0MgQU5EIFpsaWIgQU5EIElTQyBB TkQgRlRMIEFORCBMaWNlbnNlUmVmLVJTQQorVVJMOiAgICAgIGh0dHA6Ly9vcGVuamRrLmphdmEu bmV0LworCisjIFdlIGFyZSBwcm9kdWNpbmcgUlBNcyBjb250YWluaW5nIG9ubHkgdGFyYmFsbHMK KyMgYW5kIGNoZWNrc3VtcyBzbyB0aGVyZSBhcmUgbm8gYmluYXJpZXMgb3V0c2lkZQorIyB0aGUg dGFyYmFsbHMgdG8gYmUgcHJvY2Vzc2VkIGZvciBkZWJ1Z2luZm8KICVkZWZpbmUgZGVidWdfcGFj a2FnZSAle25pbH0KIAogIyBSUE0gY29uZGl0aW9uYWxzIHNvIGFzIHRvIGJlIGFibGUgdG8gZHlu YW1pY2FsbHkgcHJvZHVjZQpAQCAtMTUsNyArMTA5LDYgQEAKICMKICMgT25seSBwcm9kdWNlIGEg cmVsZWFzZSBidWlsZCBvbiB4ODZfNjQ6CiAjICQgZmVkcGtnIG1vY2tidWlsZCAtLXdpdGhvdXQg c2xvd2RlYnVnIC0td2l0aG91dCBmYXN0ZGVidWcKLQogIyBFbmFibGUgZmFzdGRlYnVnIGJ1aWxk cyBieSBkZWZhdWx0IG9uIHJlbGV2YW50IGFyY2hlcy4KICViY29uZF93aXRob3V0IGZhc3RkZWJ1 ZwogIyBFbmFibGUgc2xvd2RlYnVnIGJ1aWxkcyBieSBkZWZhdWx0IG9uIHJlbGV2YW50IGFyY2hl cy4KQEAgLTI0LDggKzExNyw2IEBACiAlYmNvbmRfd2l0aG91dCByZWxlYXNlCiAjIEVuYWJsZSBz dGF0aWMgbGlicmFyeSBidWlsZHMgYnkgZGVmYXVsdC4KICViY29uZF93aXRob3V0IHN0YXRpY2xp YnMKLSMgUmVtb3ZlIGJ1aWxkIGFydGlmYWN0cyBieSBkZWZhdWx0Ci0lYmNvbmRfd2l0aCBhcnRp ZmFjdHMKICMgQnVpbGQgYSBmcmVzaCBsaWJqdm0uc28gZm9yIHVzZSBpbiBhIGNvcHkgb2YgdGhl IGJvb3RzdHJhcCBKREsKICViY29uZF93aXRob3V0IGZyZXNoX2xpYmp2bQogIyBCdWlsZCB3aXRo IHN5c3RlbSBsaWJyYXJpZXMKQEAgLTk5LDI1ICsxOTAsNiBAQAogJWdsb2JhbCBub3JtYWxfYnVp bGQgJXtuaWx9CiAlZW5kaWYKIAotIyBXZSBoYXZlIGhhcmRjb2RlZCBsaXN0IG9mIGZpbGVzLCB3 aGljaCAgaXMgYXBwZWFyaW5nIGluIGFsdGVybmF0aXZlcywgYW5kIGluIGZpbGVzCi0jIGluIGFs dGVybmF0aXZlcyB0aG9zZSBhcmUgc2xhdmVzIGFuZCBtYXN0ZXIsIHZlcnkgb2Z0ZW4gdHJpcGxp Y2F0ZWQgYnkgbWFuIHBhZ2VzCi0jIGluIGZpbGVzIGFsbCBtYXN0ZXJzIGFuZCBzbGF2ZXMgYXJl IGdob3N0ZWQKLSMgdGhlIGdob3N0cyBhcmUgaGVyZSB0byBhbGxvdyBpbnN0YWxsYXRpb24gdmlh IHF1ZXJ5IGxpa2UgYGRuZiBpbnN0YWxsIC91c3IvYmluL2phdmFgCi0jIHlvdSBjYW4gbGlzdCB0 aG9zZSBmaWxlcywgd2l0aCBhcHByb3ByaWF0ZSBzZWN0aW9uczogY2F0ICouc3BlYyB8IGdyZXAg LWUgLS1pbnN0YWxsIC1lIC0tc2xhdmUgLWUgcG9zdF8gLWUgYWx0ZXJuYXRpdmVzCi0jIFRPRE8g LSBmaXggdGhvc2UgaGFyZGNvZGVkIGxpc3RzIHZpYSBzaW5nbGUgbGlzdAotIyBUaG9zZSBmaWxl cyBtdXN0ICpOT1QqIGJlIGdob3N0ZWQgZm9yICpzbG93ZGVidWcqIHBhY2thZ2VzCi0jIEZJWE1F IC0gaWYgeW91IGFyZSBtb3ZpbmcganNoZWxsIG9yIGpsaW5rIG9yIHNpbWlsYXIsIGFsd2F5cyBt b2RpZnkgYWxsIHRocmVlIHNlY3Rpb25zCi0jIHlvdSBjYW4gY2hlY2sgdmlhIGhlYWRsZXNzIGFu ZCBkZXZlbHM6Ci0jICAgIHJwbSAtcWwgLS1ub2dob3N0IGphdmEtMTEtb3Blbmpkay1oZWFkbGVz cy0xMS4wLjEuMTMtOC5mYzI5Lng4Nl82NC5ycG0gIHwgZ3JlcCBiaW4KLSMgPT0gcnBtIC1xbCAg ICAgICAgICAgamF2YS0xMS1vcGVuamRrLWhlYWRsZXNzLXNsb3dkZWJ1Zy0xMS4wLjEuMTMtOC5m YzI5Lng4Nl82NC5ycG0gIHwgZ3JlcCBiaW4KLSMgIT0gcnBtIC1xbCAgICAgICAgICAgamF2YS0x MS1vcGVuamRrLWhlYWRsZXNzLTExLjAuMS4xMy04LmZjMjkueDg2XzY0LnJwbSAgfCBncmVwIGJp bgotIyBzaW1pbGFybHkgZm9yIG90aGVyICUle19qdm1kaXJ9L3tqcmUsamF2YX0gYW5kICUle19q YXZhZG9jZGlyfS97amF2YSxqYXZhLXppcH0KLSVkZWZpbmUgaXNfcmVsZWFzZV9idWlsZCgpICUo IGlmIFsgIiV7PzF9IiA9PSAiJXtkZWJ1Z19zdWZmaXhfdW5xdW90ZWR9IiAtbyAiJXs/MX0iID09 ICIle2Zhc3RkZWJ1Z19zdWZmaXhfdW5xdW90ZWR9IiBdOyB0aGVuIGVjaG8gIjAiIDsgZWxzZSBl Y2hvICIxIjsgZmkgKQotCi0jIHdoaWxlIEpESyBpcyBhIHRlY2hwcmV2aWV3KGlzX3N5c3RlbV9q ZGs9MCksIHNvbWUgcHJvdmlkZXMgYXJlIHR1cm5lZCBvZmYuIE9uY2UgamRrIHN0b3BzIHRvIGJl IGFuIHRlY2hwcmV2aWV3LCBtb3ZlIGl0IHRvIDEKLSMgYXMgc3l0ZW0gSkRLLCB3ZSBtZWFuIGFu eSBKREsgd2hpY2ggY2FuIHJ1biB3aG9sZSBzeXN0ZW0gamF2YSBzdGFjayB3aXRob3V0IGlzc3Vl cyAobGlrZSBieXRlY29kZSBpc3N1ZXMsIG1vZHVsZSBpc3N1ZXMsIGRlcGVuZGVuY2llcy4uLikK LSVnbG9iYWwgaXNfc3lzdGVtX2pkayAwCi0KICVnbG9iYWwgYWFyY2g2NCAgICAgICAgIGFhcmNo NjQgYXJtNjQgYXJtdjgKICMgd2UgbmVlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGJpZyBhbmQg bGl0dGxlIGVuZGlhbiBQUEM2NAogJWdsb2JhbCBwcGM2NGxlICAgICAgICAgcHBjNjRsZQpAQCAt NDAzLDE3ICs0NzUsMTQgQEAgZXhpdCAxCiAlZ2xvYmFsIHdpdGhfc3lzdGVtdGFwIDAKICVlbmRp ZgogCi0jIE5ldyBWZXJzaW9uLVN0cmluZyBzY2hlbWUtc3R5bGUgZGVmaW5lcwotJWdsb2JhbCBm ZWF0dXJldmVyIDI1Ci0lZ2xvYmFsIGludGVyaW12ZXIgMAotJWdsb2JhbCB1cGRhdGV2ZXIgMwot JWdsb2JhbCBwYXRjaHZlciAwCi0jIGJ1aWxkamRrdmVyIGlzIHVzdWFsbHkgc2FtZSBhcyAlJXtm ZWF0dXJldmVyfSwKLSMgYnV0IGluIHRpbWUgb2YgYm9vdHN0cmFwIG9mIG5leHQgamRrLCBpdCBp cyBmZWF0dXJldmVyLTEsCisKKyMgYnVpbGRqZGt2ZXIgaXMgdXN1YWxseSBzYW1lIGFzIGZlYXR1 cmV2ZXIsCisjIGJ1dCBhdCB0aGUgdGltZSBvZiBib290c3RyYXAgb2YgdGhlIG5leHQgamRrLCBp dCBpcyBmZWF0dXJldmVyLTEsCiAjIGFuZCB0aGlzIGl0IGlzIGJldHRlciB0byBjaGFuZ2UgaXQg aGVyZSwgb24gc2luZ2xlIHBsYWNlCi0lZ2xvYmFsIGJ1aWxkamRrdmVyIDI1CislZ2xvYmFsIGJ1 aWxkamRrdmVyICV7ZmVhdHVyZXZlcn0KKwogIyBXZSBkb24ndCBhZGQgYW55IExUUyBkZXNpZ25h dG9yIGZvciBTVFMgcGFja2FnZXMgKEZlZG9yYSBhbmQgRVBFTCkuCi0jIFdlIG5lZWQgdG8gZXhw bGljaXRseSBleGNsdWRlIEVQRUwgYXMgaXQgd291bGQgaGF2ZSB0aGUgJSV7cmhlbH0gbWFjcm8g ZGVmaW5lZC4KKyMgV2UgbmVlZCB0byBleHBsaWNpdGx5IGV4Y2x1ZGUgRVBFTCBhcyBpdCBoYXMg dGhlIHJoZWwgbWFjcm8gZGVmaW5lZC4KICVpZiAwJXs/cmhlbH0gJiYgITAlez9lcGVsfQogICAl Z2xvYmFsIGx0c19kZXNpZ25hdG9yICJMVFMiCiAgICVnbG9iYWwgbHRzX2Rlc2lnbmF0b3Jfemlw IC0le2x0c19kZXNpZ25hdG9yfQpAQCAtNDI1LDcgKzQ5NCw4IEBAIGV4aXQgMQogIyBEZWZpbmUg dmVuZG9yIGluZm9ybWF0aW9uIHVzZWQgYnkgT3BlbkpESwogJWdsb2JhbCBval92ZW5kb3IgUmVk IEhhdCwgSW5jLgogJWdsb2JhbCBval92ZW5kb3JfdXJsIGh0dHBzOi8vd3d3LnJlZGhhdC5jb20v Ci0jIERlZmluZSB3aGF0IHVybCBzaG91bGQgSlZNIG9mZmVyIGluIGNhc2Ugb2YgYSBjcmFzaCBy ZXBvcnQKKworIyBEZWZpbmUgd2hhdCB1cmwgdGhlIEpWTSBzaG91bGQgb2ZmZXIgaW4gY2FzZSBv ZiBhIGNyYXNoIHJlcG9ydAogIyBvcmRlciBtYXkgYmUgaW1wb3J0YW50LCBlcGVsIG1heSBoYXZl IHJoZWwgZGVjbGFyZWQKICVpZiAwJXs/ZXBlbH0KICVnbG9iYWwgb2pfdmVuZG9yX2J1Z191cmwg IGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9RmVkb3Jh JTIwRVBFTCZjb21wb25lbnQ9JXtjb21wb25lbnR9JnZlcnNpb249ZXBlbCV7ZXBlbH0KQEAgLTQ0 MSw2NyArNTExLDEzIEBAIGV4aXQgMQogJWVuZGlmCiAlZW5kaWYKICVlbmRpZgotJWdsb2JhbCBv al92ZW5kb3JfdmVyc2lvbiAoUmVkX0hhdC0le3ZlcnNpb259LSV7cnBtcmVsZWFzZX0pCislZ2xv YmFsIG9qX3ZlbmRvcl92ZXJzaW9uIChSZWRfSGF0LSV7dmVyc2lvbn0tJXtwb3J0YWJsZXJlbGVh c2V9KQogCi0jIERlZmluZSBJY2VkVGVhIHZlcnNpb24gdXNlZCBmb3IgU3lzdGVtVGFwIHRhcHNl dHMgYW5kIGRlc2t0b3AgZmlsZQotJWdsb2JhbCBpY2VkdGVhdmVyICAgICAgNi4wLjBwcmUwMC1j ODQ4YjkzYTg1OTgKLSMgRGVmaW5lIGN1cnJlbnQgR2l0IHJldmlzaW9uIGZvciB0aGUgRklQUyBz dXBwb3J0IHBhdGNoZXMKLSVnbG9iYWwgZmlwc3ZlciA1NzcyMmFhYjgwMgotIyBEZWZpbmUgSkRL IHZlcnNpb25zCi0lZ2xvYmFsIG5ld2phdmF2ZXIgJXtmZWF0dXJldmVyfS4le2ludGVyaW12ZXJ9 LiV7dXBkYXRldmVyfS4le3BhdGNodmVyfQotJWdsb2JhbCBqYXZhdmVyICAgICAgICAgJXtmZWF0 dXJldmVyfQotIyBTdHJpcCB1cCB0byA2IHRyYWlsaW5nIHplcm9zIGluIG5ld2phdmF2ZXIsIGFz IHRoZSBKREsgZG9lcywgdG8gZ2V0IHRoZSBjb3JyZWN0IHZlcnNpb24gdXNlZCBpbiBmaWxlbmFt ZXMKLSVnbG9iYWwgZmlsZXZlciAlKHN2bj0le25ld2phdmF2ZXJ9OyBmb3IgaSBpbiAxIDIgMyA0 IDUgNiA7IGRvIHN2bj0ke3N2biUlLjB9IDsgZG9uZTsgZWNobyAke3N2bn0pCi0jIFRoZSB0YWcg dXNlZCB0byBjcmVhdGUgdGhlIE9wZW5KREsgdGFyYmFsbAotJWdsb2JhbCB2Y3N0YWcgamRrLSV7 ZmlsZXZlcn0rJXtidWlsZHZlcn0lez90YWdzdWZmaXg6LSV7dGFnc3VmZml4fX0KLQotIyBTdGFu ZGFyZCBKUGFja2FnZSBuYW1pbmcgYW5kIHZlcnNpb25pbmcgZGVmaW5lcwotJWdsb2JhbCBvcmln aW4gICAgICAgICAgb3BlbmpkawotJWdsb2JhbCBvcmlnaW5fbmljZSAgICAgT3BlbkpESwotJWds b2JhbCB0b3BfbGV2ZWxfZGlyX25hbWUgICAle3Zjc3RhZ30KLSVnbG9iYWwgdG9wX2xldmVsX2Rp cl9uYW1lX2JhY2t1cCAle3RvcF9sZXZlbF9kaXJfbmFtZX0tYmFja3VwCi0lZ2xvYmFsIGJ1aWxk dmVyICAgICAgICA5Ci0lZ2xvYmFsIHJwbXJlbGVhc2UgICAgICAxCi0jJSVnbG9iYWwgdGFnc3Vm Zml4ICAgICAlJXtuaWx9Ci0jIFByaW9yaXR5IG11c3QgYmUgOCBkaWdpdHMgaW4gdG90YWw7IHVw IHRvIG9wZW5qZGsgMS44LCB3ZSB3ZXJlIHVzaW5nIDE4Li4uLi4gc28gd2hlbiB3ZSBtb3ZlZCB0 byAxMSwgd2UgaGFkIHRvIGFkZCBhbm90aGVyIGRpZ2l0Ci0laWYgJWlzX3N5c3RlbV9qZGsKLSMg VXNpbmcgMTAgZGlnaXRzIG1heSBvdmVyZmxvdyB0aGUgaW50IHVzZWQgZm9yIHByaW9yaXR5LCBz byB3ZSBjb21iaW5lIHRoZSBwYXRjaCBhbmQgYnVpbGQgdmVyc2lvbnMKLSMgSXQgaXMgdmVyeSB1 bmxpa2VseSB3ZSB3aWxsIGV2ZXIgaGF2ZSBhIHBhdGNoIHZlcnNpb24gPiA0IG9yIGEgYnVpbGQg dmVyc2lvbiA+IDIwLCBzbyB3ZSBjb21iaW5lIGFzIChwYXRjaCAqIDIwKSArIGJ1aWxkLgotIyBU aGlzIG1lYW5zIDExLjAuOS4wKzExIHdvdWxkIGhhdmUgaGFkIGEgcHJpb3JpdHkgb2YgMTEwMDA5 MTEgYXMgYmVmb3JlCi0jIEEgMTEuMC45LjErMSB3b3VsZCBoYXZlIGhhZCBhIHByaW9yaXR5IG9m IDExMDAwOTIxICgyMCAqIDEgKyAxKSwgdGh1cyBlbnN1cmluZyBpdCBpcyBiaWdnZXIgdGhhbiAx MS4wLjkuMCsxMQotJWdsb2JhbCBjb21iaXZlciAkKCBleHByIDIwICcqJyAle3BhdGNodmVyfSAr ICV7YnVpbGR2ZXJ9ICkKLSVnbG9iYWwgcHJpb3JpdHkgJSggcHJpbnRmICclMDJkJTAyZCUwMmQl MDJkJyAle2ZlYXR1cmV2ZXJ9ICV7aW50ZXJpbXZlcn0gJXt1cGRhdGV2ZXJ9ICV7Y29tYml2ZXJ9 ICkKLSVlbHNlCi0jIGZvciB0ZWNocHJldmlldywgdXNpbmcgMSwgc28gc2xvd2RlYnVncyBjYW4g aGF2ZSAwCi0lZ2xvYmFsIHByaW9yaXR5ICUoIHByaW50ZiAnJTA4ZCcgMSApCi0lZW5kaWYKLQot IyBEZWZpbmUgbWlsZXN0b25lIChFQSBmb3IgcHJlLXJlbGVhc2VzLCBHQSBmb3IgcmVsZWFzZXMp Ci0jIFJlbGVhc2Ugd2lsbCBiZSAod2hlcmUgTiBpcyB1c3VhbGx5IGEgbnVtYmVyIHN0YXJ0aW5n IGF0IDEpOgotIyAtIDAuTiUlez9leHRyYXZlcn0lJXs/ZGlzdH0gZm9yIEVBIHJlbGVhc2VzLAot IyAtIE4lJXs/ZXh0cmF2ZXJ9ez9kaXN0fSBmb3IgR0EgcmVsZWFzZXMKLSVnbG9iYWwgaXNfZ2Eg ICAgICAgICAgIDEKLSVpZiAle2lzX2dhfQotJWdsb2JhbCBidWlsZF90eXBlIEdBCi0lZ2xvYmFs IGVhX2Rlc2lnbmF0b3IgIiIKLSVnbG9iYWwgZWFfZGVzaWduYXRvcl96aXAgJXtuaWx9Ci0lZ2xv YmFsIGV4dHJhdmVyICV7bmlsfQotJWdsb2JhbCBlYXByZWZpeCAle25pbH0KLSVlbHNlCi0lZ2xv YmFsIGJ1aWxkX3R5cGUgRUEKLSVnbG9iYWwgZWFfZGVzaWduYXRvciBlYQotJWdsb2JhbCBlYV9k ZXNpZ25hdG9yX3ppcCAtJXtlYV9kZXNpZ25hdG9yfQotJWdsb2JhbCBleHRyYXZlciAuJXtlYV9k ZXNpZ25hdG9yfQotJWdsb2JhbCBlYXByZWZpeCAwLgotJWVuZGlmCi0KLSMgcGFyYW1ldHJpemVk IG1hY3JvcyBhcmUgb3JkZXItc2Vuc2l0aXZlCi0lZ2xvYmFsIGNvbXBhdGlibGVuYW1lICBqYXZh LSV7ZmVhdHVyZXZlcn0tJXtvcmlnaW59Ci0lZ2xvYmFsIGZ1bGx2ZXJzaW9uICAgICAle2NvbXBh dGlibGVuYW1lfS0le3ZlcnNpb259LSV7cmVsZWFzZX0KICMgaW1hZ2VzIGRpcmVjdG9yaWVzIGZy b20gdXBzdHJlYW0gYnVpbGQKICVnbG9iYWwgamRraW1hZ2UgICAgICAgICAgICAgICAgamRrCiAl Z2xvYmFsIHN0YXRpY19saWJzX2ltYWdlICAgICAgIHN0YXRpYy1saWJzLWdyYWFsCiAjIG91dHB1 dCBkaXIgc3R1YgorIyBQYXJhbWV0ZXJpc2VkIG1hY3JvcyBhcmUgb3JkZXItc2Vuc2l0aXZlCiAl ZGVmaW5lIGJ1aWxkb3V0cHV0ZGlyKCkgJXtleHBhbmQ6YnVpbGQvamRrJXtmZWF0dXJldmVyfS5i dWlsZCV7PzF9fQogJWRlZmluZSBpbnN0YWxsb3V0cHV0ZGlyKCkgJXtleHBhbmQ6aW5zdGFsbC9q ZGsle2ZlYXR1cmV2ZXJ9Lmluc3RhbGwlez8xfX0KICVnbG9iYWwgbWlzY2luc3RhbGxvdXRwdXRk aXIgaW5zdGFsbApAQCAtNTIyLDMxICs1MzgsMzMgQEAgZXhpdCAxCiAlZGVmaW5lIGpka3BvcnRh YmxlbmFtZWltcGwoKSAlKGVjaG8gJXt1bmlxdWVzdWZmaXggIiJ9IHwgc2VkICJzOyV7cmVnZXhC YXNlfTtcXDAucG9ydGFibGUlezF9LmpkaztnIiB8IHNlZCAicztvcGVuamRrcG9ydGFibGU7ZWw7 ZyIpCiAlZGVmaW5lIGpka3BvcnRhYmxlc291cmNlc25hbWVpbXBsKCkgJShlY2hvICV7dW5pcXVl c3VmZml4ICIifSB8IHNlZCAiczsle3JlZ2V4QmFzZX07XFwwLnBvcnRhYmxlJXsxfS5zb3VyY2Vz O2ciIHwgc2VkICJzO29wZW5qZGtwb3J0YWJsZTtlbDtnIiB8IHNlZCAiczsuJXtfYXJjaH07Lm5v YXJjaDtnIikKICVkZWZpbmUgc3RhdGljbGlic3BvcnRhYmxlbmFtZWltcGwoKSAlKGVjaG8gJXt1 bmlxdWVzdWZmaXggIiJ9IHwgc2VkICJzOyV7cmVnZXhCYXNlfTtcXDAucG9ydGFibGUlezF9LnN0 YXRpYy1saWJzO2ciIHwgc2VkICJzO29wZW5qZGtwb3J0YWJsZTtlbDtnIikKKworIyBSUE0gNC4x OSBubyBsb25nZXIgYWNjZXB0IG91ciBkb3VibGUgcGVyY2VudGFnZWQgJSV7bmlsfSBwYXNzZWQg dG8gJSV7MX0KKyMgc28gd2UgaGF2ZSB0byBwYXNzIGluICIiIGJ1dCBldmFsdWF0ZSBpdCwgb3Ro ZXJ3aXNlIGZpbGVzIHdpbGwgaW5jbHVkZSBpdAogJWRlZmluZSBqbW9kc3BvcnRhYmxlbmFtZWlt cGwoKSAlKGVjaG8gJXt1bmlxdWVzdWZmaXggIiJ9IHwgc2VkICJzOyV7cmVnZXhCYXNlfTtcXDAu cG9ydGFibGUlezF9Lmptb2RzO2ciIHwgc2VkICJzO29wZW5qZGtwb3J0YWJsZTtlbDtnIikKICVk ZWZpbmUganJlcG9ydGFibGVhcmNoaXZlKCkgICV7ZXhwYW5kOiV7anJlcG9ydGFibGVuYW1laW1w bCAtLSAlJXsxfX0udGFyLnh6fQorJWRlZmluZSBqcmVwb3J0YWJsZWFyY2hpdmVfZm9yX2ZpbGVz KCkgICUoZWNobyAle2pyZXBvcnRhYmxlYXJjaGl2ZSAtLSAiIn0pCiAlZGVmaW5lIGpka3BvcnRh YmxlYXJjaGl2ZSgpICAle2V4cGFuZDole2pka3BvcnRhYmxlbmFtZWltcGwgLS0gJSV7MX19LnRh ci54en0KLSVkZWZpbmUgamRrcG9ydGFibGVzb3VyY2VzYXJjaGl2ZSgpICAle2V4cGFuZDole2pk a3BvcnRhYmxlc291cmNlc25hbWVpbXBsIC0tICUlezF9fS50YXIueHp9CislZGVmaW5lIGpka3Bv cnRhYmxlYXJjaGl2ZV9mb3JfZmlsZXMoKSAgJShlY2hvICV7amRrcG9ydGFibGVhcmNoaXZlIC0t ICIifSkKICVkZWZpbmUgc3RhdGljbGlic3BvcnRhYmxlYXJjaGl2ZSgpICAle2V4cGFuZDole3N0 YXRpY2xpYnNwb3J0YWJsZW5hbWVpbXBsIC0tICUlezF9fS50YXIueHp9CislZGVmaW5lIHN0YXRp Y2xpYnNwb3J0YWJsZWFyY2hpdmVfZm9yX2ZpbGVzKCkgICUoZWNobyAle3N0YXRpY2xpYnNwb3J0 YWJsZWFyY2hpdmUgLS0gIiJ9KQorJWRlZmluZSBqZGtwb3J0YWJsZXNvdXJjZXNhcmNoaXZlKCkg ICV7ZXhwYW5kOiV7amRrcG9ydGFibGVzb3VyY2VzbmFtZWltcGwgLS0gJSV7MX19LnRhci54en0K KyVkZWZpbmUgamRrcG9ydGFibGVzb3VyY2VzbmFtZSgpICAgICAle2V4cGFuZDole2pka3BvcnRh Ymxlc291cmNlc25hbWVpbXBsIC0tICUlezF9fX0KKyVkZWZpbmUgamRrcG9ydGFibGVzb3VyY2Vz YXJjaGl2ZV9mb3JfZmlsZXMoKSAgJShlY2hvICV7amRrcG9ydGFibGVzb3VyY2VzYXJjaGl2ZSAt LSAiIn0pCiAlZGVmaW5lIGptb2RzcG9ydGFibGVhcmNoaXZlKCkgICV7ZXhwYW5kOiV7am1vZHNw b3J0YWJsZW5hbWVpbXBsIC0tICUlezF9fS50YXIueHp9CislZGVmaW5lIGptb2RzcG9ydGFibGVh cmNoaXZlX2Zvcl9maWxlcygpICAlKGVjaG8gJXtqbW9kc3BvcnRhYmxlYXJjaGl2ZSAtLSAiIn0p CiAlZGVmaW5lIGpyZXBvcnRhYmxlbmFtZSgpICAgICAle2V4cGFuZDole2pyZXBvcnRhYmxlbmFt ZWltcGwgLS0gJSV7MX19fQogJWRlZmluZSBqZGtwb3J0YWJsZW5hbWUoKSAgICAgJXtleHBhbmQ6 JXtqZGtwb3J0YWJsZW5hbWVpbXBsIC0tICUlezF9fX0KLSVkZWZpbmUgamRrcG9ydGFibGVzb3Vy Y2VzbmFtZSgpICAgICAle2V4cGFuZDole2pka3BvcnRhYmxlc291cmNlc25hbWVpbXBsIC0tICUl ezF9fX0KLSMgSW50ZW50aW9uYWxseSB1c2UgamRrcG9ydGFibGVuYW1laW1wbCBoZXJlIHNpbmNl IHdlIHdhbnQgdG8gaGF2ZSBzdGF0aWMtbGlicyBmaWxlcyBvdmVybGF5ZWQgb24KLSMgdG9wIG9m IHRoZSBKREsgYXJjaGl2ZQorIyBXZSBpbnRlbnRpb25hbGx5IHVzZSBqZGtwb3J0YWJsZW5hbWVp bXBsIGhlcmUgc2luY2Ugd2Ugd2FudCB0byBoYXZlCisjIHN0YXRpYy1saWJzIGZpbGVzIG92ZXJs YXllZCBvbiB0b3Agb2YgdGhlIEpESyBhcmNoaXZlCiAlZGVmaW5lIHN0YXRpY2xpYnNwb3J0YWJs ZW5hbWUoKSAgICAgJXtleHBhbmQ6JXtqZGtwb3J0YWJsZW5hbWVpbXBsIC0tICUlezF9fX0KKwor IyBUaGVzZSBtYWNyb3MgYXJlIG5vdCBwYXJhbWV0ZXJpc2VkIGFzIHRoZSBzYW1lIGlzIHNoYXJl ZCBieSBhbGwgYnVpbGRzCiAlZGVmaW5lIGRvY3BvcnRhYmxlbmFtZSgpICUoZWNobyAle3VuaXF1 ZXN1ZmZpeCAiIn0gfCBzZWQgInM7JXtyZWdleEJhc2V9O1xcMC5wb3J0YWJsZS5kb2NzO2ciIHwg c2VkICJzO29wZW5qZGtwb3J0YWJsZTtlbDtnIikKICVkZWZpbmUgZG9jcG9ydGFibGVhcmNoaXZl KCkgICV7ZG9jcG9ydGFibGVuYW1lfS50YXIueHoKICVkZWZpbmUgbWlzY3BvcnRhYmxlbmFtZSgp ICUoZWNobyAle3VuaXF1ZXN1ZmZpeCAiIn0gfCBzZWQgInM7JXtyZWdleEJhc2V9O1xcMC5wb3J0 YWJsZS5taXNjO2ciIHwgc2VkICJzO29wZW5qZGtwb3J0YWJsZTtlbDtnIikKICVkZWZpbmUgbWlz Y3BvcnRhYmxlYXJjaGl2ZSgpICAle21pc2Nwb3J0YWJsZW5hbWV9LnRhci54egogCi0jIFJQTSA0 LjE5IG5vIGxvbmdlciBhY2NlcHQgb3VyIGRvdWJsZSBwZXJjZW50YWdlZCAlJXtuaWx9IHBhc3Nl ZCB0byAlJXsxfQotIyBzbyB3ZSBoYXZlIHRvIHBhc3MgaW4gIiIgYnV0IGV2YWx1YXRlIGl0LCBv dGhlcndpc2UgZmlsZXMgcmVjb3JkIHdpbGwgaW5jbHVkZSBpdAotJWRlZmluZSBqcmVwb3J0YWJs ZWFyY2hpdmVGb3JGaWxlcygpICAlKGVjaG8gJXtqcmVwb3J0YWJsZWFyY2hpdmUgLS0gIiJ9KQot JWRlZmluZSBqZGtwb3J0YWJsZWFyY2hpdmVGb3JGaWxlcygpICAlKGVjaG8gJXtqZGtwb3J0YWJs ZWFyY2hpdmUgLS0gIiJ9KQotJWRlZmluZSBqZGtwb3J0YWJsZXNvdXJjZXNhcmNoaXZlRm9yRmls ZXMoKSAgJShlY2hvICV7amRrcG9ydGFibGVzb3VyY2VzYXJjaGl2ZSAtLSAiIn0pCi0lZGVmaW5l IHN0YXRpY2xpYnNwb3J0YWJsZWFyY2hpdmVGb3JGaWxlcygpICAlKGVjaG8gJXtzdGF0aWNsaWJz cG9ydGFibGVhcmNoaXZlIC0tICIifSkKLSVkZWZpbmUgam1vZHNwb3J0YWJsZWFyY2hpdmVGb3JG aWxlcygpICAlKGVjaG8gJXtqbW9kc3BvcnRhYmxlYXJjaGl2ZSAtLSAiIn0pCi0KICMgSkRLIHRv IHVzZSBmb3IgYm9vdHN0cmFwcGluZwogJWlmYXJjaCAle2Zhc3RkZWJ1Z19hcmNoZXN9CiAlZ2xv YmFsIGJvb3RkZWJ1Z3BrZyBmYXN0ZGVidWcKQEAgLTU3MCwyNiArNTg4LDYgQEAgZXhpdCAxCiAl Z2xvYmFsIGJ1aWxkX2hvdHNwb3RfZmlyc3QgMAogJWVuZGlmCiAKLSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIGZpeCBm b3IgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xMTExMzQ5Ci0j ICAgICAgICAgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xNTkw Nzk2I2MxNAotIyAgICAgICAgIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5j Z2k/aWQ9MTY1NTkzOAotJWdsb2JhbCBfcHJpdmF0ZWxpYnMgbGlic3BsYXNoc2NyZWVuWy5dc28u KnxsaWJhd3RfeGF3dFsuXXNvLip8bGliamxpWy5dc28uKnxsaWJhdHRhY2hbLl1zby4qfGxpYmF3 dFsuXXNvLip8bGliZXh0bmV0Wy5dc28uKnxsaWJhd3RfaGVhZGxlc3NbLl1zby4qfGxpYmR0X3Nv Y2tldFsuXXNvLip8bGliZm9udG1hbmFnZXJbLl1zby4qfGxpYmluc3RydW1lbnRbLl1zby4qfGxp YmoyZ3NzWy5dc28uKnxsaWJqMnBjc2NbLl1zby4qfGxpYmoycGtjczExWy5dc28uKnxsaWJqYWFz Wy5dc28uKnxsaWJqYXZhanBlZ1suXXNvLip8bGliamR3cFsuXXNvLip8bGliamltYWdlWy5dc28u KnxsaWJqc291bmRbLl1zby4qfGxpYmxjbXNbLl1zby4qfGxpYm1hbmFnZW1lbnRbLl1zby4qfGxp Ym1hbmFnZW1lbnRfYWdlbnRbLl1zby4qfGxpYm1hbmFnZW1lbnRfZXh0Wy5dc28uKnxsaWJtbGli X2ltYWdlWy5dc28uKnxsaWJuZXRbLl1zby4qfGxpYm5pb1suXXNvLip8bGlicHJlZnNbLl1zby4q fGxpYnJtaVsuXXNvLip8bGlic2Fwcm9jWy5dc28uKnxsaWJzY3RwWy5dc28uKnxsaWJzeXN0ZW1j b25mWy5dc28uKnxsaWJ6aXBbLl1zby4qJXtmcmVldHlwZV9saWJ9Ci0lZ2xvYmFsIF9wdWJsaWNs aWJzIGxpYmphd3RbLl1zby4qfGxpYmphdmFbLl1zby4qfGxpYmp2bVsuXXNvLip8bGlidmVyaWZ5 Wy5dc28uKnxsaWJqc2lnWy5dc28uKgotJWlmICVpc19zeXN0ZW1famRrCi0lZ2xvYmFsIF9fcHJv dmlkZXNfZXhjbHVkZSBeKCV7X3ByaXZhdGVsaWJzfSkkCi0lZ2xvYmFsIF9fcmVxdWlyZXNfZXhj bHVkZSBeKCV7X3ByaXZhdGVsaWJzfSkkCi0jIE5ldmVyIGdlbmVyYXRlIGxpYi1zdHlsZSBwcm92 aWRlcy9yZXF1aXJlcyBmb3IgYW55IGRlYnVnIHBhY2thZ2VzCi0lZ2xvYmFsIF9fcHJvdmlkZXNf ZXhjbHVkZV9mcm9tIF4uKi8le3VuaXF1ZXN1ZmZpeCAtLSAle2RlYnVnX3N1ZmZpeF91bnF1b3Rl ZH19Ly4qJAotJWdsb2JhbCBfX3JlcXVpcmVzX2V4Y2x1ZGVfZnJvbSBeLiovJXt1bmlxdWVzdWZm aXggLS0gJXtkZWJ1Z19zdWZmaXhfdW5xdW90ZWR9fS8uKiQKLSVnbG9iYWwgX19wcm92aWRlc19l eGNsdWRlX2Zyb20gXi4qLyV7dW5pcXVlc3VmZml4IC0tICV7ZmFzdGRlYnVnX3N1ZmZpeF91bnF1 b3RlZH19Ly4qJAotJWdsb2JhbCBfX3JlcXVpcmVzX2V4Y2x1ZGVfZnJvbSBeLiovJXt1bmlxdWVz dWZmaXggLS0gJXtmYXN0ZGVidWdfc3VmZml4X3VucXVvdGVkfX0vLiokCi0lZWxzZQotIyBEb24n dCBnZW5lcmF0ZSBwcm92aWRlcy9yZXF1aXJlcyBmb3IgSkRLIHByb3ZpZGVkIHNoYXJlZCBsaWJy YXJpZXMgYXQgYWxsLgotJWdsb2JhbCBfX3Byb3ZpZGVzX2V4Y2x1ZGUgXigle19wcml2YXRlbGli c318JXtfcHVibGljbGlic30pJAotJWdsb2JhbCBfX3JlcXVpcmVzX2V4Y2x1ZGUgXigle19wcml2 YXRlbGlic318JXtfcHVibGljbGlic30pJAotJWVuZGlmCi0KICMgVk0gdmFyaWFudCBiZWluZyBi dWlsdAogJWlmYXJjaCAle3plcm9fYXJjaGVzfQogJWdsb2JhbCB2bV92YXJpYW50IHplcm8KQEAg LTU5NywyOCArNTk1LDExIEBAIGV4aXQgMQogJWdsb2JhbCB2bV92YXJpYW50IHNlcnZlcgogJWVu ZGlmCiAKLSVnbG9iYWwgZXRjamF2YXN1YmRpciAgICAgJXtfc3lzY29uZmRpcn0vamF2YS9qYXZh LSV7amF2YXZlcn0tJXtvcmlnaW59Ci0lZGVmaW5lIGV0Y2phdmFkaXIoKSAgICAgICV7ZXhwYW5k OiV7ZXRjamF2YXN1YmRpcn0vJXt1bmlxdWVzdWZmaXggLS0gJXs/MX19fQotIyBTdGFuZGFyZCBK UGFja2FnZSBkaXJlY3RvcmllcyBhbmQgc3ltYm9saWMgbGlua3MuCi0lZGVmaW5lIHNka2Rpcigp ICAgICAgICAle2V4cGFuZDole3VuaXF1ZXN1ZmZpeCAtLSAlez8xfX19Ci0lZGVmaW5lIGpyZWxu aygpICAgICAgICAle2V4cGFuZDpqcmUtJXtqYXZhdmVyfS0le29yaWdpbn0tJXt2ZXJzaW9ufS0l e3JlbGVhc2V9LiV7X2FyY2h9JXs/MX19Ci0KLSVkZWZpbmUgc2RrYmluZGlyKCkgICAgICV7ZXhw YW5kOiV7X2p2bWRpcn0vJXtzZGtkaXIgLS0gJXs/MX19L2Jpbn0KLSVkZWZpbmUganJlYmluZGly KCkgICAgICV7ZXhwYW5kOiV7X2p2bWRpcn0vJXtzZGtkaXIgLS0gJXs/MX19L2Jpbn0KLQogJWds b2JhbCBhbHRfamF2YV9uYW1lICAgICBhbHQtamF2YQogJWdsb2JhbCBnZW5lcmF0ZWRfc291cmNl c19uYW1lICAgICBnZW5lcmF0ZWRfc291cmNlcwogCiAlZ2xvYmFsIHJwbV9zdGF0ZV9kaXIgJXtf bG9jYWxzdGF0ZWRpcn0vbGliL3JwbS1zdGF0ZS8KIAotIyBGb3IgZmxhdHBhY2sgYnVpbGRzIGhh cmQtY29kZSAvdXNyL3NiaW4vYWx0ZXJuYXRpdmVzLAotIyBvdGhlcndpc2UgdXNlICUle19zYmlu ZGlyfSByZWxhdGl2ZSBwYXRoLgotJWlmIDAlez9mbGF0cGFrfQotJWdsb2JhbCBhbHRlcm5hdGl2 ZXNfcmVxdWlyZXMgL3Vzci9zYmluL2FsdGVybmF0aXZlcwotJWVsc2UKLSVnbG9iYWwgYWx0ZXJu YXRpdmVzX3JlcXVpcmVzICV7X3NiaW5kaXJ9L2FsdGVybmF0aXZlcwotJWVuZGlmCi0KICMgUG9y dGFibGVzIGhhdmUgbm8gcmVwbyAocmVxdWlyZXMvcHJvdmlkZXMpLCBidXQgdGhlc2UgYXJlIGF3 ZXNvbWUgZm9yIG9yaWVudGF0aW9uIGluIHNwZWMKICMgQWxzbyBzY3JpcHRsZXRzIGFyZSBoYXBw aWx5IG1pc3NpbmcgYW5kIGZpbGVzIGFyZSBoYW5kbGVkIG9sZCBmYXNoaW9uCiAjIG5vdC1kdXBs aWNhdGVkIHJlcXVpcmVzL3Byb3ZpZGVzL29ic29sZXRlcyBmb3Igbm9ybWFsL2RlYnVnIHBhY2th Z2VzCkBAIC02NTMsNTEgKzYzNCwxMyBAQCBFeGNsdWRlQXJjaDogJXtpeDg2fQogRXhjbHVzaXZl QXJjaDogICV7ZXhjbHVzaXZlX2FyY2hlc30KICVlbmRpZgogCi1OYW1lOiAgICBqYXZhLTI1LSV7 b3JpZ2lufS1wb3J0YWJsZSV7P3BrZ29zOi0le3BrZ29zfX0KLVZlcnNpb246ICV7bmV3amF2YXZl cn0uJXtidWlsZHZlcn0KLVJlbGVhc2U6ICV7P2VhcHJlZml4fSV7cnBtcmVsZWFzZX0lez9leHRy YXZlcn0lez9kaXN0fS4xCi0jIGphdmEtMS41LjAtaWJtIGZyb20ganBhY2thZ2Uub3JnIHNldCBF cG9jaCB0byAxIGZvciB1bmtub3duIHJlYXNvbnMKLSMgYW5kIHRoaXMgY2hhbmdlIHdhcyBicm91 Z2h0IGludG8gUkhFTC00LiBqYXZhLTEuNS4wLWlibSBwYWNrYWdlcwotIyBhbHNvIGluY2x1ZGVk IHRoZSBlcG9jaCBpbiB0aGVpciB2aXJ0dWFsIHByb3ZpZGVzLiBUaGlzIGNyZWF0ZWQgYQotIyBz aXR1YXRpb24gd2hlcmUgaW4tdGhlLXdpbGQgamF2YS0xLjUuMC1pYm0gcGFja2FnZXMgcHJvdmlk ZWQgImphdmEgPQotIyAxOjEuNS4wIi4gSW4gUlBNIHRlcm1zLCAiMS42LjAgPCAxOjEuNS4wIiBz aW5jZSAxLjYuMCBpcwotIyBpbnRlcnByZXRlZCBhcyAwOjEuNi4wLiBTbyB0aGUgImphdmEgPj0g MS42LjAiIHJlcXVpcmVtZW50IHdvdWxkIGJlCi0jIHNhdGlzZmllZCBieSB0aGUgMToxLjUuMCBw YWNrYWdlcy4gVGh1cyB3ZSBuZWVkIHRvIHNldCB0aGUgZXBvY2ggaW4KLSMgSkRLIHBhY2thZ2Ug Pj0gMS42LjAgdG8gMSwgYW5kIHBhY2thZ2VzIHJlZmVycmluZyB0byBKREsgdmlydHVhbAotIyBw cm92aWRlcyA+PSAxLjYuMCBtdXN0IHNwZWNpZnkgdGhlIGVwb2NoLCAiamF2YSA+PSAxOjEuNi4w Ii4KLQotRXBvY2g6ICAgMQotU3VtbWFyeTogJXtvcmlnaW5fbmljZX0gJXtmZWF0dXJldmVyfSBS dW50aW1lIEVudmlyb25tZW50IHBvcnRhYmxlIGVkaXRpb24KLSMgR3JvdXBzIGFyZSBvbmx5IHVz ZWQgdXAgdG8gUkhFTCA4IGFuZCBvbiBGZWRvcmEgdmVyc2lvbnMgcHJpb3IgdG8gRjMwCi0laWYg KDAlez9yaGVsfSA+IDAgJiYgMCV7P3JoZWx9IDw9IDgpIHx8ICgwJXs/ZmVkb3JhfSA+PSAwICYm IDAlez9mZWRvcmF9IDwgMzApCi1Hcm91cDogICBEZXZlbG9wbWVudC9MYW5ndWFnZXMKLSVlbmRp ZgotCi0jIEhvdFNwb3QgY29kZSBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MgotIyBKREsgbGlicmFy eSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyIHdpdGggdGhlIENsYXNzcGF0aCBleGNlcHRp b24KLSMgVGhlIEFwYWNoZSBsaWNlbnNlIGlzIHVzZWQgaW4gY29kZSB0YWtlbiBmcm9tIEFwYWNo ZSBwcm9qZWN0cyAocHJpbWFyaWx5IHhhbGFuICYgeGVyY2VzKQotIyBET00gbGV2ZWxzIDIgJiAz IGFuZCB0aGUgWE1MIGRpZ2l0YWwgc2lnbmF0dXJlIHNjaGVtYXMgYXJlIGxpY2Vuc2VkIHVuZGVy IHRoZSBXM0MgU29mdHdhcmUgTGljZW5zZQotIyBUaGUgSlNSMTY2IGNvbmN1cnJlbmN5IGNvZGUg aXMgaW4gdGhlIHB1YmxpYyBkb21haW4KLSMgVGhlIEJTRCBhbmQgTUlUIGxpY2Vuc2VzIGFyZSB1 c2VkIGZvciBhIG51bWJlciBvZiB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgKHNlZSBBRERJVElPTkFM X0xJQ0VOU0VfSU5GTykKLSMgVGhlIE9wZW5KREsgc291cmNlIHRyZWUgaW5jbHVkZXM6Ci0jIC0g SlBFRyBsaWJyYXJ5IChJSkcpLCB6bGliICYgbGlicG5nICh6bGliKSwgZ2lmbGliIChNSVQpLCBo YXJmYnV6eiAoSVNDKSwKLSMgLSBmcmVldHlwZSAoRlRMKSwgamxpbmUgKEJTRCkgYW5kIExDTVMg KE1JVCkKLSMgLSBqcXVlcnkgKE1JVCksIGpkay5jcnlwdG8uY3J5cHRva2kgUEtDUyAxMSB3cmFw cGVyIChSU0EpCi0jIC0gcHVibGljX3N1ZmZpeF9saXN0LmRhdCBmcm9tIHB1YmxpY3N1ZmZpeC5v cmcgKE1QTHYyLjApCi0jIFRoZSB0ZXN0IGNvZGUgaW5jbHVkZXMgY29waWVzIG9mIE5TUyB1bmRl ciB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZSB2Mi4wCi0jIFRoZSBQQ1NDbGl0ZSBoZWFkZXJz IGFyZSB1bmRlciBhIEJTRCB3aXRoIGFkdmVydGlzaW5nIGxpY2Vuc2UKLSMgVGhlIGVsbGlwdGlj IGN1cnZlIGNyeXB0b2dyYXBoeSAoRUNDKSBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0 aGUgTEdQTHYyLjEgb3IgYW55IGxhdGVyIHZlcnNpb24KLSMgQXV0b21hdGljYWxseSBjb252ZXJ0 ZWQgZnJvbSBvbGQgZm9ybWF0OiBBU0wgMS4xIGFuZCBBU0wgMi4wIGFuZCBCU0QgYW5kIEJTRCB3 aXRoIGFkdmVydGlzaW5nIGFuZCBHUEwrIGFuZCBHUEx2MiBhbmQgR1BMdjIgd2l0aCBleGNlcHRp b25zIGFuZCBJSkcgYW5kIExHUEx2MisgYW5kIE1JVCBhbmQgTVBMdjIuMCBhbmQgUHVibGljIERv bWFpbiBhbmQgVzNDIGFuZCB6bGliIGFuZCBJU0MgYW5kIEZUTCBhbmQgUlNBIC0gcmV2aWV3IGlz IGhpZ2hseSByZWNvbW1lbmRlZC4KLUxpY2Vuc2U6ICBBcGFjaGUtMS4xIEFORCBBcGFjaGUtMi4w IEFORCBMaWNlbnNlUmVmLUNhbGxhd2F5LUJTRCBBTkQgTGljZW5zZVJlZi1DYWxsYXdheS1CU0Qt d2l0aC1hZHZlcnRpc2luZyBBTkQgR1BMLTEuMC1vci1sYXRlciBBTkQgR1BMLTIuMC1vbmx5IEFO RCBMaWNlbnNlUmVmLUNhbGxhd2F5LUdQTHYyLXdpdGgtZXhjZXB0aW9ucyBBTkQgSUpHIEFORCBM aWNlbnNlUmVmLUNhbGxhd2F5LUxHUEx2MisgQU5EIExpY2Vuc2VSZWYtQ2FsbGF3YXktTUlUIEFO RCBNUEwtMi4wIEFORCBMaWNlbnNlUmVmLUNhbGxhd2F5LVB1YmxpYy1Eb21haW4gQU5EIFczQyBB TkQgWmxpYiBBTkQgSVNDIEFORCBGVEwgQU5EIExpY2Vuc2VSZWYtUlNBCi1VUkw6ICAgICAgaHR0 cDovL29wZW5qZGsuamF2YS5uZXQvCi0KICMgVGhlIHNvdXJjZSB0YXJiYWxsLCBnZW5lcmF0ZWQg dXNpbmcgZ2VuZXJhdGVfc291cmNlX3RhcmJhbGwuc2gKIFNvdXJjZTA6IGh0dHBzOi8vb3Blbmpk ay1zb3VyY2VzLm9zY2kuaW8vb3BlbmpkayV7ZmVhdHVyZXZlcn0vb3BlbiV7dmNzdGFnfSV7ZWFf ZGVzaWduYXRvcl96aXB9LnRhci54egogCiAjIFVzZSAnaWNlZHRlYV9zeW5jLnNoJyB0byB1cGRh dGUgdGhlIGZvbGxvd2luZwogIyBUaGV5IGFyZSBiYXNlZCBvbiBjb2RlIGNvbnRhaW5lZCBpbiB0 aGUgSWNlZFRlYSBwcm9qZWN0ICg2LngpLgogIyBTeXN0ZW10YXAgdGFwc2V0cy4gWmlwcGVkIHVw IHRvIGtlZXAgaXQgc21hbGwuCi0jIERpc2FibGVkIGluIHBvcnRhYmxlcworIyBEaXNhYmxlZCBp biBmZWRvcmEgcG9ydGFibGVzIChhcHBsaWVkIGluIGZlZG9yYSBycG1zKQogI1NvdXJjZTg6IHRh cHNldHMtaWNlZHRlYS0lJXtpY2VkdGVhdmVyfS50YXIueHoKIAogIyBEZXNrdG9wIGZpbGVzLiBB ZGFwdGVkIGZyb20gSWNlZFRlYQpAQCAtNzMzLDEyICs2NzYsMTMgQEAgU291cmNlMTg6IFRlc3RU cmFuc2xhdGlvbnMuamF2YQogIyBSUE0vZGlzdHJpYnV0aW9uIHNwZWNpZmljIHBhdGNoZXMKICMK ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKICMgQ3J5cHRv IHBvbGljeSBhbmQgRklQUyBzdXBwb3J0IHBhdGNoZXMKKwogIyBQYXRjaCBpcyBnZW5lcmF0ZWQg ZnJvbSB0aGUgZmlwcy0yNXUgdHJlZSBhdCBodHRwczovL2dpdGh1Yi5jb20vcmgtb3Blbmpkay9q ZGsvdHJlZS9maXBzLTI1dQotIyBhcyBmb2xsb3dzOiBnaXQgZGlmZiAlJXt2Y3N0YWd9IHNyYyBt YWtlIHRlc3QgPiBmaXBzLTI1dS0kKGdpdCBzaG93IC1zIC0tZm9ybWF0PSVoIEhFQUQpLnBhdGNo CisjIGFzIGZvbGxvd3M6IGdpdCBkaWZmIDx2Y3N0YWc+IHNyYyBtYWtlIHRlc3QgPiBmaXBzLTI1 dS0kKGdpdCBzaG93IC1zIC0tZm9ybWF0PSVoIEhFQUQpLnBhdGNoCiAjIERpZmYgaXMgbGltaXRl ZCB0byBzcmMgYW5kIG1ha2Ugc3ViZGlyZWN0b3JpZXMgdG8gZXhjbHVkZSAuZ2l0aHViIGNoYW5n ZXMKLSMgVGhlIGZvbGxvd2luZyBsaXN0IGlzIGdlbmVyYXRlZCBieToKLSMgZ2l0IGxvZyAlJXt2 Y3N0YWd9Li4gLS1uby1tZXJnZXMgLS1mb3JtYXQ9JXMgLS1yZXZlcnNlOgorCiAjIEZpeGVzIGN1 cnJlbnRseSBpbmNsdWRlZDoKICMgT1BFTkpESy0yMTA4OiBJbnRlcm5hbCBfX3JlZGhhdF9maXBz X18gcHJvcGVydHkKICMgT1BFTkpESy0yMTIzOiBBbGdvcml0aG1zIGxvY2tkb3duCkBAIC03NTEs OCArNjk1LDcgQEAgUGF0Y2gxMDAxOiBmaXBzLSV7ZmVhdHVyZXZlcn11LSV7Zmlwc3Zlcn0ucGF0 Y2gKICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi0j IEpESy04Mzc1Mjk0OiAoZnMpIEZpbGVzLmNvcHkgY2FuIGZhaWwgd2l0aCBFT1BOT1RTVVBQIHdo ZW4gY29weV9maWxlX3JhbmdlIG5vdCBzdXBwb3J0ZWQKLVBhdGNoMjAwMTogamRrODM3NTI5NC1o YW5kbGUtRU9QTk9UU1VQUC1pbi1jb3B5aW5nLnBhdGNoCisjIEN1cnJlbnRseSBlbXB0eQogCiAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMKQEAgLTc2MCw3 ICs3MDMsMTAgQEAgUGF0Y2gyMDAxOiBqZGs4Mzc1Mjk0LWhhbmRsZS1FT1BOT1RTVVBQLWluLWNv cHlpbmcucGF0Y2gKICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogCi0jIEN1cnJlbnRseSBlbXB0eQorIyBKREstODM0NzkwMTogQzIgc2hvdWxkIHJlbW92 ZSB1bnVzZWQgbGVhZiAvIHB1cmUgcnVudGltZSBjYWxscworUGF0Y2gyMDAyOiBqZGs4MzQ3OTAx LWMyX3VudXNlZF9sZWFmX3JlbW92YWwucGF0Y2gKKyMgSkRLLTgzNzg3MzEzOiBDMjogcGVyZm9y bWFuY2UgcmVncmVzc2lvbiBkdWUgdG8gbWlzc2luZyBjb25zdGFudCBmb2xkaW5nIGZvciBNYXRo LnBvdygpCitQYXRjaDIwMDM6IGpkazgzNzg3MTMtYzJfbWlzc2luZ19wb3dfY29uc3RhbnRfZm9s ZGluZy5wYXRjaAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKICMKQEAgLTgzMSwxNyArNzc3LDE3IEBAIEJ1aWxkUmVxdWlyZXM6IGxpYnBuZy1kZXZlbAog QnVpbGRSZXF1aXJlczogemxpYi1kZXZlbAogJWVsc2UKICMgVmVyc2lvbiBpbiBzcmMvamF2YS5k ZXNrdG9wL3NoYXJlL2xlZ2FsL2ZyZWV0eXBlLm1kCi1Qcm92aWRlczogYnVuZGxlZChmcmVldHlw ZSkgPSAyLjE0LjIKK1Byb3ZpZGVzOiBidW5kbGVkKGZyZWV0eXBlKSA9IDIuMTQuMwogIyBWZXJz aW9uIGluIHNyYy9qYXZhLmRlc2t0b3Avc2hhcmUvbmF0aXZlL2xpYnNwbGFzaHNjcmVlbi9naWZs aWIvZ2lmX2xpYi5oCi1Qcm92aWRlczogYnVuZGxlZChnaWZsaWIpID0gNi4xLjIKK1Byb3ZpZGVz OiBidW5kbGVkKGdpZmxpYikgPSA2LjEuMwogIyBWZXJzaW9uIGluIHNyYy9qYXZhLmRlc2t0b3Av c2hhcmUvbmF0aXZlL2xpYmhhcmZidXp6L2hiLXZlcnNpb24uaAotUHJvdmlkZXM6IGJ1bmRsZWQo aGFyZmJ1enopID0gMTIuMy4yCitQcm92aWRlczogYnVuZGxlZChoYXJmYnV6eikgPSAxNC4yLjAK ICMgVmVyc2lvbiBpbiBzcmMvamF2YS5kZXNrdG9wL3NoYXJlL25hdGl2ZS9saWJsY21zL2xjbXMy LmgKLVByb3ZpZGVzOiBidW5kbGVkKGxjbXMyKSA9IDIuMTcuMAorUHJvdmlkZXM6IGJ1bmRsZWQo bGNtczIpID0gMi4xOS4xCiAjIFZlcnNpb24gaW4gc3JjL2phdmEuZGVza3RvcC9zaGFyZS9uYXRp dmUvbGliamF2YWpwZWcvanBlZ2xpYi5oCiBQcm92aWRlczogYnVuZGxlZChsaWJqcGVnKSA9IDZi CiAjIFZlcnNpb24gaW4gc3JjL2phdmEuZGVza3RvcC9zaGFyZS9uYXRpdmUvbGlic3BsYXNoc2Ny ZWVuL2xpYnBuZy9wbmcuaAotUHJvdmlkZXM6IGJ1bmRsZWQobGlicG5nKSA9IDEuNi41NworUHJv dmlkZXM6IGJ1bmRsZWQobGlicG5nKSA9IDEuNi41OAogIyBWZXJzaW9uIGluIHNyYy9qYXZhLmJh c2Uvc2hhcmUvbmF0aXZlL2xpYnppcC96bGliL3psaWIuaAogUHJvdmlkZXM6IGJ1bmRsZWQoemxp YikgPSAxLjMuMgogJWVuZGlmCkBAIC0xMDI1LDM3ICs5NzEsMjIgQEAgZmkKIGV4cG9ydCBYWl9P UFQ9Ii1UMCIKICVzZXR1cCAtcSAtYyAtbiAle3VuaXF1ZXN1ZmZpeCAiIn0gLVQgLWEgMAogIyBo dHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTExODkwODQKLXByaW9y aXR5bGVuZ3RoPWBleHByIGxlbmd0aCAle3ByaW9yaXR5fWAKLWlmIFsgJHByaW9yaXR5bGVuZ3Ro IC1uZSA4IF0gOyB0aGVuCi0gZWNobyAicHJpb3JpdHkgbXVzdCBiZSA4IGRpZ2l0cyBpbiB0b3Rh bCwgdmlvbGF0ZWQiCi0gZXhpdCAxNAotZmkKIAogIyBPcGVuSkRLIHBhdGNoZXMKKwogJWlmICV7 c3lzdGVtX2xpYnN9CiAjIFJlbW92ZSBsaWJyYXJpZXMgdGhhdCBhcmUgbGlua2VkIGJ5IGJvdGgg c3RhdGljIGFuZCBkeW5hbWljIGJ1aWxkcwogc2ggJXtTT1VSQ0UxMn0gJXt0b3BfbGV2ZWxfZGly X25hbWV9CiAlZW5kaWYKIAogIyBQYXRjaCB0aGUgSkRLCi0jIFRoaXMgc3ludGF4IGlzIGRlcHJl Y2F0ZWQ6Ci0jICAgICUlcGF0Y2hOIFsuLi5dCi0jIGFuZCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0 aDoKLSMgICAgJSVwYXRjaCAtUE4gWy4uLl0KLSMgRm9yIGV4YW1wbGU6Ci0jICAgICUlcGF0Y2gx MDAxIC1wMQotIyBiZWNvbWVzOgotIyAgICAlJXBhdGNoIC1QMTAwMSAtcDEKLSMgVGhlIHJlcGxh Y2VtZW50IGZvcm1hdCBzdWdnZXN0ZWQgYnkgcmVjZW50IChjaXJjYSBGZWRvcmEgMzgpIFJQTQot IyBkZXByZWNhdGlvbiBtZXNzYWdlczoKLSMgICAgJSVwYXRjaCBOIFsuLi5dCi0jIGlzIG5vdCBi YWNrd2FyZC1jb21wYXRpYmxlIHdpdGggcHJpb3IgKGNpcmNhIFJIRUwtOCkgdmVyc2lvbnMgb2YK LSMgcnBtYnVpbGQuCisKIHB1c2hkICV7dG9wX2xldmVsX2Rpcl9uYW1lfQogIyBBZGQgY3J5cHRv IHBvbGljeSBhbmQgRklQUyBzdXBwb3J0CiAlcGF0Y2ggLVAxMDAxIC1wMQotIyBBZGQgRU9QTk9U U1VQUCBwYXRjaAotJXBhdGNoIC1QMjAwMSAtcDEKKyMgQWRkIEMyIHBhdGNoZXMKKyVwYXRjaCAt UDIwMDIgLXAxCislcGF0Y2ggLVAyMDAzIC1wMQogcG9wZCAjIG9wZW5qZGsKIAogZWNobyAiR2Vu ZXJhdGluZyAle2FsdF9qYXZhX25hbWV9IG1hbiBwYWdlIgpAQCAtMTEyNCw3ICsxMDU1LDYgQEAg ZmkKIGV4cG9ydCBOVU1fUFJPQz0lKC91c3IvYmluL2dldGNvbmYgX05QUk9DRVNTT1JTX09OTE4g Mj4gL2Rldi9udWxsIHx8IDopCiBleHBvcnQgTlVNX1BST0M9JHtOVU1fUFJPQzotMX0KICVpZiAw JXs/X3NtcF9uY3B1c19tYXh9Ci0jIEhvbm9yICUlX3NtcF9uY3B1c19tYXgKIFsgJHtOVU1fUFJP Q30gLWd0ICV7P19zbXBfbmNwdXNfbWF4fSBdICYmIGV4cG9ydCBOVU1fUFJPQz0lez9fc21wX25j cHVzX21heH0KICVlbmRpZgogZXhwb3J0IFhaX09QVD0iLVQwIgpAQCAtMTg2NCw4ICsxNzk0LDgg QEAgZG9uZQogJWlmICV7aW5jbHVkZV9ub3JtYWxfYnVpbGR9CiAlZmlsZXMKICMgbWFpbiBwYWNr YWdlIGJ1aWxkcyBhbHdheXMKLSV7X2p2bWRpcn0vJXtqcmVwb3J0YWJsZWFyY2hpdmVGb3JGaWxl c30KLSV7X2p2bWRpcn0vJXtqcmVwb3J0YWJsZWFyY2hpdmVGb3JGaWxlc30uc2hhMjU2c3VtCisl e19qdm1kaXJ9LyV7anJlcG9ydGFibGVhcmNoaXZlX2Zvcl9maWxlc30KKyV7X2p2bWRpcn0vJXtq cmVwb3J0YWJsZWFyY2hpdmVfZm9yX2ZpbGVzfS5zaGEyNTZzdW0KICVlbHNlCiAlZmlsZXMKICMg cGxhY2Vob2xkZXIKQEAgLTE4NzMsMTkgKzE4MDMsMTkgQEAgZG9uZQogCiAlaWYgJXtpbmNsdWRl X25vcm1hbF9idWlsZH0KICVmaWxlcyBkZXZlbAotJXtfanZtZGlyfS8le2pka3BvcnRhYmxlYXJj aGl2ZUZvckZpbGVzfQorJXtfanZtZGlyfS8le2pka3BvcnRhYmxlYXJjaGl2ZV9mb3JfZmlsZXN9 CiAle19qdm1kaXJ9LyV7amRrcG9ydGFibGVhcmNoaXZlIC0tIC5kZWJ1Z2luZm99Ci0le19qdm1k aXJ9LyV7amRrcG9ydGFibGVhcmNoaXZlRm9yRmlsZXN9LnNoYTI1NnN1bQorJXtfanZtZGlyfS8l e2pka3BvcnRhYmxlYXJjaGl2ZV9mb3JfZmlsZXN9LnNoYTI1NnN1bQogJXtfanZtZGlyfS8le2pk a3BvcnRhYmxlYXJjaGl2ZSAtLSAuZGVidWdpbmZvfS5zaGEyNTZzdW0KLSV7X2p2bWRpcn0vJXtq bW9kc3BvcnRhYmxlYXJjaGl2ZUZvckZpbGVzfQotJXtfanZtZGlyfS8le2ptb2RzcG9ydGFibGVh cmNoaXZlRm9yRmlsZXN9LnNoYTI1NnN1bQorJXtfanZtZGlyfS8le2ptb2RzcG9ydGFibGVhcmNo aXZlX2Zvcl9maWxlc30KKyV7X2p2bWRpcn0vJXtqbW9kc3BvcnRhYmxlYXJjaGl2ZV9mb3JfZmls ZXN9LnNoYTI1NnN1bQogJWVuZGlmCiAKICVpZiAle2luY2x1ZGVfbm9ybWFsX2J1aWxkfQogJWlm ICV7aW5jbHVkZV9zdGF0aWNsaWJzfQogJWZpbGVzIHN0YXRpYy1saWJzCi0le19qdm1kaXJ9LyV7 c3RhdGljbGlic3BvcnRhYmxlYXJjaGl2ZUZvckZpbGVzfQotJXtfanZtZGlyfS8le3N0YXRpY2xp YnNwb3J0YWJsZWFyY2hpdmVGb3JGaWxlc30uc2hhMjU2c3VtCisle19qdm1kaXJ9LyV7c3RhdGlj bGlic3BvcnRhYmxlYXJjaGl2ZV9mb3JfZmlsZXN9Cisle19qdm1kaXJ9LyV7c3RhdGljbGlic3Bv cnRhYmxlYXJjaGl2ZV9mb3JfZmlsZXN9LnNoYTI1NnN1bQogJWVuZGlmCiAlZW5kaWYKIApAQCAt MTkyNiw4ICsxODU2LDggQEAgZG9uZQogJWVuZGlmCiAKICVmaWxlcyBzb3VyY2VzCi0le19qdm1k aXJ9LyV7amRrcG9ydGFibGVzb3VyY2VzYXJjaGl2ZUZvckZpbGVzfQotJXtfanZtZGlyfS8le2pk a3BvcnRhYmxlc291cmNlc2FyY2hpdmVGb3JGaWxlc30uc2hhMjU2c3VtCisle19qdm1kaXJ9LyV7 amRrcG9ydGFibGVzb3VyY2VzYXJjaGl2ZV9mb3JfZmlsZXN9Cisle19qdm1kaXJ9LyV7amRrcG9y dGFibGVzb3VyY2VzYXJjaGl2ZV9mb3JfZmlsZXN9LnNoYTI1NnN1bQogCiAlaWYgJXtpbmNsdWRl X25vcm1hbF9idWlsZH0KICVmaWxlcyBkb2NzCgpkaWZmIC0tZ2l0IGEvamRrODM0NzkwMS1jMl91 bnVzZWRfbGVhZl9yZW1vdmFsLnBhdGNoIGIvamRrODM0NzkwMS1jMl91bnVzZWRfbGVhZl9yZW1v dmFsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZTEzNmIKLS0t IC9kZXYvbnVsbAorKysgYi9qZGs4MzQ3OTAxLWMyX3VudXNlZF9sZWFmX3JlbW92YWwucGF0Y2gK QEAgLTAsMCArMSw3NzIgQEAKK0Zyb20gMDk4NTM0NjFhNjg5NmFiMWYxNTQ2OWM3NTNjMjFjYTIx MmU3ZTY1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGR1a2UgPGR1a2VAb3Blbmpk ay5vcmc+CitEYXRlOiBUdWUsIDcgQXByIDIwMjYgMTU6MTQ6NTMgKzAwMDAKK1N1YmplY3Q6IFtQ QVRDSCAxLzJdIEJhY2twb3J0IGVkNzA5MTBiMGYzZTFiMTlkOTE1ZWMxM2FjMzQzNDQwN2QwMWJj NWQKKworLS0tCisgc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jYWxsbm9kZS5jcHAgICAgIHwgIDUz ICsrKysrKystCisgc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jYWxsbm9kZS5ocHAgICAgIHwgIDI5 ICsrKystCisgc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jbGFzc2VzLmhwcCAgICAgIHwgICAyICsK KyBzcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NvbXBpbGUuY3BwICAgICAgfCAgMTkgKysrCisgc3Jj L2hvdHNwb3Qvc2hhcmUvb3B0by9kaXZub2RlLmNwcCAgICAgIHwgMTU4ICsrKysrKysrKystLS0t LS0tLS0tLS0tLQorIHNyYy9ob3RzcG90L3NoYXJlL29wdG8vZGl2bm9kZS5ocHAgICAgICB8ICAz NSArKystLS0KKyBzcmMvaG90c3BvdC9zaGFyZS9vcHRvL2dyYXBoS2l0LmNwcCAgICAgfCAgMjkg KysrLS0KKyBzcmMvaG90c3BvdC9zaGFyZS9vcHRvL2dyYXBoS2l0LmhwcCAgICAgfCAgIDEgKwor IHNyYy9ob3RzcG90L3NoYXJlL29wdG8vbGlicmFyeV9jYWxsLmNwcCB8ICAgMiArLQorIHNyYy9o b3RzcG90L3NoYXJlL29wdG8vbWFjcm8uY3BwICAgICAgICB8ICAxNSArLS0KKyBzcmMvaG90c3Bv dC9zaGFyZS9vcHRvL211bHRub2RlLmNwcCAgICAgfCAgMTMgKysKKyBzcmMvaG90c3BvdC9zaGFy ZS9vcHRvL211bHRub2RlLmhwcCAgICAgfCAgNDYgKysrKysrKworIHNyYy9ob3RzcG90L3NoYXJl L29wdG8vbm9kZS5jcHAgICAgICAgICB8ICAxMiArLQorIHNyYy9ob3RzcG90L3NoYXJlL29wdG8v bm9kZS5ocHAgICAgICAgICB8ICAgNSArLQorIHNyYy9ob3RzcG90L3NoYXJlL29wdG8vcGFyc2Uy LmNwcCAgICAgICB8ICAgOCArLQorIDE1IGZpbGVzIGNoYW5nZWQsIDI4MiBpbnNlcnRpb25zKCsp LCAxNDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRv L2NhbGxub2RlLmNwcCBiL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vY2FsbG5vZGUuY3BwCitpbmRl eCA2ZjEzY2UwZjgwOS4uZmM0YjBjMzVkZmYgMTAwNjQ0CistLS0gYS9zcmMvaG90c3BvdC9zaGFy ZS9vcHRvL2NhbGxub2RlLmNwcAorKysrIGIvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jYWxsbm9k ZS5jcHAKK0BAIC05MzUsNyArOTM1LDcgQEAgTm9kZSAqQ2FsbE5vZGU6OnJlc3VsdF9jYXN0KCkg eworIH0KKyAKKyAKKy12b2lkIENhbGxOb2RlOjpleHRyYWN0X3Byb2plY3Rpb25zKENhbGxQcm9q ZWN0aW9ucyogcHJvanMsIGJvb2wgc2VwYXJhdGVfaW9fcHJvaiwgYm9vbCBkb19hc3NlcnRzKSB7 Cisrdm9pZCBDYWxsTm9kZTo6ZXh0cmFjdF9wcm9qZWN0aW9ucyhDYWxsUHJvamVjdGlvbnMqIHBy b2pzLCBib29sIHNlcGFyYXRlX2lvX3Byb2osIGJvb2wgZG9fYXNzZXJ0cykgY29uc3QgeworICAg cHJvanMtPmZhbGx0aHJvdWdoX3Byb2ogICAgICA9IG51bGxwdHI7CisgICBwcm9qcy0+ZmFsbHRo cm91Z2hfY2F0Y2hwcm9qID0gbnVsbHB0cjsKKyAgIHByb2pzLT5mYWxsdGhyb3VnaF9pb3Byb2og ICAgPSBudWxscHRyOworQEAgLTEzMTksNiArMTMxOSw1NyBAQCB2b2lkIENhbGxMZWFmVmVjdG9y Tm9kZTo6Y2FsbGluZ19jb252ZW50aW9uKCBCYXNpY1R5cGUqIHNpZ19idCwgVk1SZWdQYWlyICpw YXJtXworIAorIAorIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKytib29sIENhbGxMZWFmUHVyZU5v ZGU6OmlzX3VudXNlZCgpIGNvbnN0IHsKKysgIHJldHVybiBwcm9qX291dF9vcl9udWxsKFR5cGVG dW5jOjpQYXJtcykgPT0gbnVsbHB0cjsKKyt9CisrCisrYm9vbCBDYWxsTGVhZlB1cmVOb2RlOjpp c19kZWFkKCkgY29uc3QgeworKyAgcmV0dXJuIHByb2pfb3V0X29yX251bGwoVHlwZUZ1bmM6OkNv bnRyb2wpID09IG51bGxwdHI7CisrfQorKworKy8qIFdlIG1ha2UgYSB0dXBsZSBvZiB0aGUgZ2xv YmFsIGlucHV0IHN0YXRlICsgVE9QIGZvciB0aGUgb3V0cHV0IHZhbHVlcy4KKysgKiBXZSB1c2Ug dGhpcyB0byBkZWxldGUgYSBwdXJlIGZ1bmN0aW9uIHRoYXQgaXMgbm90IHVzZWQ6IGJ5IHJlcGxh Y2luZyB0aGUgY2FsbCB3aXRoCisrICogc3VjaCBhIHR1cGxlLCB3ZSBsZXQgb3V0cHV0IFByb2on cyBpZGVhbGl6YXRpb24gcGljayB0aGUgY29ycmVzcG9uZGluZyBpbnB1dCBvZiB0aGUKKysgKiBw dXJlIGNhbGwsIHNvIGp1bXBpbmcgb3ZlciBpdCwgYW5kIGVmZmVjdGl2ZWx5LCByZW1vdmluZyB0 aGUgY2FsbCBmcm9tIHRoZSBncmFwaC4KKysgKiBUaGlzIGF2b2lkcyBkb2luZyB0aGUgZ3JhcGgg c3VyZ2VyeSBtYW51YWxseSwgYnV0IGxlYXZlcyB0aGF0IHRvIElHVk4KKysgKiB0aGF0IGlzIHNw ZWNpYWxpemVkIGZvciBkb2luZyB0aGF0IHJpZ2h0LiBXZSBuZWVkIGFsc28gdHVwbGUgY29tcG9u ZW50cyBmb3Igb3V0cHV0CisrICogdmFsdWVzIG9mIHRoZSBmdW5jdGlvbiB0byByZXNwZWN0IHRo ZSByZXR1cm4gYXJpdHksIGFuZCBpbiBjYXNlIHRoZXJlIGlzIGEgcHJvamVjdGlvbgorKyAqIHRo YXQgd291bGQgcGljayBhbiBvdXRwdXQgKHdoaWNoIHNob3VsZG4ndCBoYXBwZW4gYXQgdGhlIG1v bWVudCkuCisrICovCisrVHVwbGVOb2RlKiBDYWxsTGVhZlB1cmVOb2RlOjptYWtlX3R1cGxlX29m X2lucHV0X3N0YXRlX2FuZF90b3BfcmV0dXJuX3ZhbHVlcyhjb25zdCBDb21waWxlKiBDKSBjb25z dCB7CisrICAvLyBUcmFuc3BhcmVudGx5IHByb3BhZ2F0ZSBpbnB1dCBzdGF0ZSBidXQgcGFyYW1l dGVycworKyAgVHVwbGVOb2RlKiB0dXBsZSA9IFR1cGxlTm9kZTo6bWFrZSgKKysgICAgICB0Zigp LT5yYW5nZSgpLAorKyAgICAgIGluKFR5cGVGdW5jOjpDb250cm9sKSwKKysgICAgICBpbihUeXBl RnVuYzo6SV9PKSwKKysgICAgICBpbihUeXBlRnVuYzo6TWVtb3J5KSwKKysgICAgICBpbihUeXBl RnVuYzo6RnJhbWVQdHIpLAorKyAgICAgIGluKFR5cGVGdW5jOjpSZXR1cm5BZHIpKTsKKysKKysg IC8vIEFuZCBhZGQgVE9QcyBmb3IgdGhlIHJldHVybiB2YWx1ZXMKKysgIGZvciAodWludCBpID0g VHlwZUZ1bmM6OlBhcm1zOyBpIDwgdGYoKS0+cmFuZ2UoKS0+Y250KCk7IGkrKykgeworKyAgICB0 dXBsZS0+c2V0X3JlcShpLCBDLT50b3AoKSk7CisrICB9CisrCisrICByZXR1cm4gdHVwbGU7Cisr fQorKworK05vZGUqIENhbGxMZWFmUHVyZU5vZGU6OklkZWFsKFBoYXNlR1ZOKiBwaGFzZSwgYm9v bCBjYW5fcmVzaGFwZSkgeworKyAgaWYgKGlzX2RlYWQoKSkgeworKyAgICByZXR1cm4gbnVsbHB0 cjsKKysgIH0KKysKKysgIC8vIFdlIG5lZWQgdG8gd2FpdCB1bnRpbCBJR1ZOIGJlY2F1c2UgZHVy aW5nIHBhcnNpbmcsIHVzYWdlcyBtaWdodCBzdGlsbCBiZSBtaXNzaW5nCisrICAvLyBhbmQgd2Ug d291bGQgcmVtb3ZlIHRoZSBjYWxsIGltbWVkaWF0ZWx5LgorKyAgaWYgKGNhbl9yZXNoYXBlICYm IGlzX3VudXNlZCgpKSB7CisrICAgIC8vIFRoZSByZXN1bHQgaXMgbm90IHVzZWQuIFdlIHJlbW92 ZSB0aGUgY2FsbCBieSByZXBsYWNpbmcgaXQgd2l0aCBhIHR1cGxlLCB0aGF0CisrICAgIC8vIGlz IGxhdGVyIGRpc2ludGVncmF0ZWQgYnkgdGhlIHByb2plY3Rpb25zLgorKyAgICByZXR1cm4gbWFr ZV90dXBsZV9vZl9pbnB1dF9zdGF0ZV9hbmRfdG9wX3JldHVybl92YWx1ZXMocGhhc2UtPkMpOwor KyAgfQorKworKyAgcmV0dXJuIENhbGxSdW50aW1lTm9kZTo6SWRlYWwocGhhc2UsIGNhbl9yZXNo YXBlKTsKKyt9CisrCisgI2lmbmRlZiBQUk9EVUNUCisgdm9pZCBDYWxsTGVhZk5vZGU6OmR1bXBf c3BlYyhvdXRwdXRTdHJlYW0gKnN0KSBjb25zdCB7CisgICBzdC0+cHJpbnQoIiMgIik7CitkaWZm IC0tZ2l0IGEvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jYWxsbm9kZS5ocHAgYi9zcmMvaG90c3Bv dC9zaGFyZS9vcHRvL2NhbGxub2RlLmhwcAoraW5kZXggMjEzZmJkYTRlODkuLjI0NjJhODgxNDNm IDEwMDY0NAorLS0tIGEvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jYWxsbm9kZS5ocHAKKysrKyBi L3NyYy9ob3RzcG90L3NoYXJlL29wdG8vY2FsbG5vZGUuaHBwCitAQCAtNzUyLDcgKzc1Miw3IEBA IGNsYXNzIENhbGxOb2RlIDogcHVibGljIFNhZmVQb2ludE5vZGUgeworICAgLy8gQ29sbGVjdCBh bGwgdGhlIGludGVyZXN0aW5nIGVkZ2VzIGZyb20gYSBjYWxsIGZvciB1c2UgaW4KKyAgIC8vIHJl cGxhY2luZyB0aGUgY2FsbCBieSBzb21ldGhpbmcgZWxzZS4gIFVzZWQgYnkgbWFjcm8gZXhwYW5z aW9uCisgICAvLyBhbmQgdGhlIGxhdGUgaW5saW5pbmcgc3VwcG9ydC4KKy0gIHZvaWQgZXh0cmFj dF9wcm9qZWN0aW9ucyhDYWxsUHJvamVjdGlvbnMqIHByb2pzLCBib29sIHNlcGFyYXRlX2lvX3By b2osIGJvb2wgZG9fYXNzZXJ0cyA9IHRydWUpOworKyAgdm9pZCBleHRyYWN0X3Byb2plY3Rpb25z KENhbGxQcm9qZWN0aW9ucyogcHJvanMsIGJvb2wgc2VwYXJhdGVfaW9fcHJvaiwgYm9vbCBkb19h c3NlcnRzID0gdHJ1ZSkgY29uc3Q7CisgCisgICB2aXJ0dWFsIHVpbnQgbWF0Y2hfZWRnZSh1aW50 IGlkeCkgY29uc3Q7CisgCitAQCAtOTI4LDYgKzkyOCwzMyBAQCBjbGFzcyBDYWxsTGVhZk5vZGUg OiBwdWJsaWMgQ2FsbFJ1bnRpbWVOb2RlIHsKKyAjZW5kaWYKKyB9OworIAorKy8qIEEgcHVyZSBm dW5jdGlvbiBjYWxsLCB0aGV5IGFyZSBhc3N1bWVkIG5vdCB0byBiZSBzYWZlcG9pbnRzLCBub3Qg dG8gcmVhZCBvciB3cml0ZSBtZW1vcnksCisrICogaGF2ZSBubyBleGNlcHRpb24uLi4gVGhleSBq dXN0IHRha2UgcGFyYW1ldGVycywgcmV0dXJuIGEgdmFsdWUgd2l0aG91dCBzaWRlIGVmZmVjdC4g SXQgaXMKKysgKiBhbHdheXMgY29ycmVjdCB0byBjcmVhdGUgc29tZSwgb3IgcmVtb3ZlIHRoZW0s IGlmIHRoZSByZXN1bHQgaXMgbm90IHVzZWQuCisrICoKKysgKiBUaGV5IHN0aWxsIGhhdmUgY29u dHJvbCBpbnB1dCB0byBhbGxvdyBlYXN5IGxvd2VyaW5nIGludG8gb3RoZXIga2luZCBvZiBjYWxs cyB0aGF0IHJlcXVpcmUKKysgKiBhIGNvbnRyb2wsIGJ1dCB0aGlzIGlzIG1vcmUgYSB0ZWNobmlj YWwgdGhhbiBhIG1vcmFsIGNvbnN0cmFpbnQuCisrICoKKysgKiBQdXJlIGNhbGxzIG11c3QgaGF2 ZSBvbmx5IGNvbnRyb2wgYW5kIGRhdGEgaW5wdXQgYW5kIG91dHB1dDogSS9PLCBNZW1vcnkgYW5k IHNvIG9uIG11c3QgYmUgdG9wLgorKyAqIE5ldmVydGhlbGVzcywgcHVyZSBjYWxscyBjYW4gdHlw aWNhbGx5IGJlIGV4cGVuc2l2ZSBtYXRoIG9wZXJhdGlvbnMgc28gY2FyZSBtdXN0IGJlIHRha2Vu CisrICogd2hlbiBsZXR0aW5nIHRoZSBub2RlIGZsb2F0LgorKyAqLworK2NsYXNzIENhbGxMZWFm UHVyZU5vZGUgOiBwdWJsaWMgQ2FsbExlYWZOb2RlIHsKKytwcm90ZWN0ZWQ6CisrICBib29sIGlz X3VudXNlZCgpIGNvbnN0OworKyAgYm9vbCBpc19kZWFkKCkgY29uc3Q7CisrICBUdXBsZU5vZGUq IG1ha2VfdHVwbGVfb2ZfaW5wdXRfc3RhdGVfYW5kX3RvcF9yZXR1cm5fdmFsdWVzKGNvbnN0IENv bXBpbGUqIEMpIGNvbnN0OworKworK3B1YmxpYzoKKysgIENhbGxMZWFmUHVyZU5vZGUoY29uc3Qg VHlwZUZ1bmMqIHRmLCBhZGRyZXNzIGFkZHIsIGNvbnN0IGNoYXIqIG5hbWUsCisrICAgICAgICAg ICAgICAgICAgIGNvbnN0IFR5cGVQdHIqIGFkcl90eXBlKQorKyAgICAgIDogQ2FsbExlYWZOb2Rl KHRmLCBhZGRyLCBuYW1lLCBhZHJfdHlwZSkgeworKyAgICBpbml0X2NsYXNzX2lkKENsYXNzX0Nh bGxMZWFmUHVyZSk7CisrICB9CisrICBpbnQgT3Bjb2RlKCkgY29uc3Qgb3ZlcnJpZGU7CisrICBO b2RlKiBJZGVhbChQaGFzZUdWTiogcGhhc2UsIGJvb2wgY2FuX3Jlc2hhcGUpIG92ZXJyaWRlOwor K307CisrCisgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1DYWxsTGVhZk5vRlBOb2Rl LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIC8vIENhbGxMZWFmTm9kZSwgbm90IHVz aW5nIGZsb2F0aW5nIHBvaW50IG9yIHVzaW5nIGl0IGluIHRoZSBzYW1lIG1hbm5lciBhcworIC8v IHRoZSBnZW5lcmF0ZWQgY29kZQorZGlmZiAtLWdpdCBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8v Y2xhc3Nlcy5ocHAgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NsYXNzZXMuaHBwCitpbmRleCBi YzI1OWVlZDJkMS4uNTg3ZDVmYWQ4ZjIgMTAwNjQ0CistLS0gYS9zcmMvaG90c3BvdC9zaGFyZS9v cHRvL2NsYXNzZXMuaHBwCisrKysgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NsYXNzZXMuaHBw CitAQCAtNjEsNiArNjEsNyBAQCBtYWNybyhDYWxsRHluYW1pY0phdmEpCisgbWFjcm8oQ2FsbEph dmEpCisgbWFjcm8oQ2FsbExlYWYpCisgbWFjcm8oQ2FsbExlYWZOb0ZQKQorK21hY3JvKENhbGxM ZWFmUHVyZSkKKyBtYWNybyhDYWxsTGVhZlZlY3RvcikKKyBtYWNybyhDYWxsUnVudGltZSkKKyBt YWNybyhDYWxsU3RhdGljSmF2YSkKK0BAIC0zNzIsNiArMzczLDcgQEAgbWFjcm8oU3ViSSkKKyBt YWNybyhTdWJMKQorIG1hY3JvKFRhaWxDYWxsKQorIG1hY3JvKFRhaWxKdW1wKQorK21hY3JvKFR1 cGxlKQorIG1hY3JvKE1hY3JvTG9naWNWKQorIG1hY3JvKFRocmVhZExvY2FsKQorIG1hY3JvKFVu bG9jaykKK2RpZmYgLS1naXQgYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NvbXBpbGUuY3BwIGIv c3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jb21waWxlLmNwcAoraW5kZXggMmI5NTZkY2I1ZDguLjlm N2Y0OGI5YTM0IDEwMDY0NAorLS0tIGEvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jb21waWxlLmNw cAorKysrIGIvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jb21waWxlLmNwcAorQEAgLTMyOTgsNiAr MzI5OCwyNSBAQCB2b2lkIENvbXBpbGU6OmZpbmFsX2dyYXBoX3Jlc2hhcGluZ19tYWluX3N3aXRj aChOb2RlKiBuLCBGaW5hbF9SZXNoYXBlX0NvdW50cyYgZgorICAgY2FzZSBPcF9PcGFxdWUxOiAg ICAgICAgICAgICAgLy8gUmVtb3ZlIE9wYXF1ZSBOb2RlcyBiZWZvcmUgbWF0Y2hpbmcKKyAgICAg bi0+c3Vic3VtZV9ieShuLT5pbigxKSwgdGhpcyk7CisgICAgIGJyZWFrOworKyAgY2FzZSBPcF9D YWxsTGVhZlB1cmU6IHsKKysgICAgLy8gSWYgdGhlIHB1cmUgY2FsbCBpcyBub3Qgc3VwcG9ydGVk LCB0aGVuIGxvd2VyIHRvIGEgQ2FsbExlYWYuCisrICAgIGlmICghTWF0Y2hlcjo6bWF0Y2hfcnVs ZV9zdXBwb3J0ZWQoT3BfQ2FsbExlYWZQdXJlKSkgeworKyAgICAgIENhbGxOb2RlKiBjYWxsID0g bi0+YXNfQ2FsbCgpOworKyAgICAgIENhbGxOb2RlKiBuZXdfY2FsbCA9IG5ldyBDYWxsTGVhZk5v ZGUoY2FsbC0+dGYoKSwgY2FsbC0+ZW50cnlfcG9pbnQoKSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwtPl9uYW1lLCBUeXBlUmF3UHRyOjpCT1RUT00p OworKyAgICAgIG5ld19jYWxsLT5pbml0X3JlcShUeXBlRnVuYzo6Q29udHJvbCwgY2FsbC0+aW4o VHlwZUZ1bmM6OkNvbnRyb2wpKTsKKysgICAgICBuZXdfY2FsbC0+aW5pdF9yZXEoVHlwZUZ1bmM6 OklfTywgQy0+dG9wKCkpOworKyAgICAgIG5ld19jYWxsLT5pbml0X3JlcShUeXBlRnVuYzo6TWVt b3J5LCBDLT50b3AoKSk7CisrICAgICAgbmV3X2NhbGwtPmluaXRfcmVxKFR5cGVGdW5jOjpSZXR1 cm5BZHIsIEMtPnRvcCgpKTsKKysgICAgICBuZXdfY2FsbC0+aW5pdF9yZXEoVHlwZUZ1bmM6OkZy YW1lUHRyLCBDLT50b3AoKSk7CisrICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IFR5cGVGdW5j OjpQYXJtczsgaSA8IGNhbGwtPnRmKCktPmRvbWFpbigpLT5jbnQoKTsgaSsrKSB7CisrICAgICAg ICBuZXdfY2FsbC0+aW5pdF9yZXEoaSwgY2FsbC0+aW4oaSkpOworKyAgICAgIH0KKysgICAgICBu LT5zdWJzdW1lX2J5KG5ld19jYWxsLCB0aGlzKTsKKysgICAgfQorKyAgICBmcmMuaW5jX2NhbGxf Y291bnQoKTsKKysgICAgYnJlYWs7CisrICB9CisgICBjYXNlIE9wX0NhbGxTdGF0aWNKYXZhOgor ICAgY2FzZSBPcF9DYWxsSmF2YToKKyAgIGNhc2UgT3BfQ2FsbER5bmFtaWNKYXZhOgorZGlmZiAt LWdpdCBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vZGl2bm9kZS5jcHAgYi9zcmMvaG90c3BvdC9z aGFyZS9vcHRvL2Rpdm5vZGUuY3BwCitpbmRleCBhNzAxOTQyNzRhNy4uNWRkOGJlODc3ZmYgMTAw NjQ0CistLS0gYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2Rpdm5vZGUuY3BwCisrKysgYi9zcmMv aG90c3BvdC9zaGFyZS9vcHRvL2Rpdm5vZGUuY3BwCitAQCAtNDIsMTkgKzQyLDE5IEBACisgCisg I2luY2x1ZGUgPG1hdGguaD4KKyAKKy1Nb2RGbG9hdGluZ05vZGU6Ok1vZEZsb2F0aW5nTm9kZShD b21waWxlKiBDLCBjb25zdCBUeXBlRnVuYyogdGYsIGNvbnN0IGNoYXIqIG5hbWUpIDogQ2FsbExl YWZOb2RlKHRmLCBudWxscHRyLCBuYW1lLCBUeXBlUmF3UHRyOjpCT1RUT00pIHsKKytNb2RGbG9h dGluZ05vZGU6Ok1vZEZsb2F0aW5nTm9kZShDb21waWxlKiBDLCBjb25zdCBUeXBlRnVuYyogdGYs IGFkZHJlc3MgYWRkciwgY29uc3QgY2hhciogbmFtZSkgOiBDYWxsTGVhZlB1cmVOb2RlKHRmLCBh ZGRyLCBuYW1lLCBUeXBlUmF3UHRyOjpCT1RUT00pIHsKKyAgIGFkZF9mbGFnKEZsYWdfaXNfbWFj cm8pOworICAgQy0+YWRkX21hY3JvX25vZGUodGhpcyk7CisgfQorIAorLU1vZEROb2RlOjpNb2RE Tm9kZShDb21waWxlKiBDLCBOb2RlKiBhLCBOb2RlKiBiKSA6IE1vZEZsb2F0aW5nTm9kZShDLCBP cHRvUnVudGltZTo6TWF0aF9ERF9EX1R5cGUoKSwgImRyZW0iKSB7CisrTW9kRE5vZGU6Ok1vZERO b2RlKENvbXBpbGUqIEMsIE5vZGUqIGEsIE5vZGUqIGIpIDogTW9kRmxvYXRpbmdOb2RlKEMsIE9w dG9SdW50aW1lOjpNYXRoX0REX0RfVHlwZSgpLCBDQVNUX0ZST01fRk5fUFRSKGFkZHJlc3MsIFNo YXJlZFJ1bnRpbWU6OmRyZW0pLCAiZHJlbSIpIHsKKyAgIGluaXRfcmVxKFR5cGVGdW5jOjpQYXJt cyArIDAsIGEpOworICAgaW5pdF9yZXEoVHlwZUZ1bmM6OlBhcm1zICsgMSwgQy0+dG9wKCkpOwor ICAgaW5pdF9yZXEoVHlwZUZ1bmM6OlBhcm1zICsgMiwgYik7CisgICBpbml0X3JlcShUeXBlRnVu Yzo6UGFybXMgKyAzLCBDLT50b3AoKSk7CisgfQorIAorLU1vZEZOb2RlOjpNb2RGTm9kZShDb21w aWxlKiBDLCBOb2RlKiBhLCBOb2RlKiBiKSA6IE1vZEZsb2F0aW5nTm9kZShDLCBPcHRvUnVudGlt ZTo6bW9kZl9UeXBlKCksICJmcmVtIikgeworK01vZEZOb2RlOjpNb2RGTm9kZShDb21waWxlKiBD LCBOb2RlKiBhLCBOb2RlKiBiKSA6IE1vZEZsb2F0aW5nTm9kZShDLCBPcHRvUnVudGltZTo6bW9k Zl9UeXBlKCksIENBU1RfRlJPTV9GTl9QVFIoYWRkcmVzcywgU2hhcmVkUnVudGltZTo6ZnJlbSks ICJmcmVtIikgeworICAgaW5pdF9yZXEoVHlwZUZ1bmM6OlBhcm1zICsgMCwgYSk7CisgICBpbml0 X3JlcShUeXBlRnVuYzo6UGFybXMgKyAxLCBiKTsKKyB9CitAQCAtMTUxNiwxMzcgKzE1MTYsMTA5 IEBAIGNvbnN0IFR5cGUqIFVNb2RMTm9kZTo6VmFsdWUoUGhhc2VHVk4qIHBoYXNlKSBjb25zdCB7 CisgICByZXR1cm4gdW5zaWduZWRfbW9kX3ZhbHVlPFR5cGVMb25nLCBqdWxvbmcsIGpsb25nPihw aGFzZSwgdGhpcyk7CisgfQorIAorLU5vZGUqIE1vZEZOb2RlOjpJZGVhbChQaGFzZUdWTiogcGhh c2UsIGJvb2wgY2FuX3Jlc2hhcGUpIHsKKy0gIGlmICghY2FuX3Jlc2hhcGUpIHsKKy0gICAgcmV0 dXJuIG51bGxwdHI7CistICB9CistICBQaGFzZUl0ZXJHVk4qIGlndm4gPSBwaGFzZS0+aXNfSXRl ckdWTigpOworLQorLSAgYm9vbCByZXN1bHRfaXNfdW51c2VkID0gcHJval9vdXRfb3JfbnVsbChU eXBlRnVuYzo6UGFybXMpID09IG51bGxwdHI7CistICBib29sIG5vdF9kZWFkID0gcHJval9vdXRf b3JfbnVsbChUeXBlRnVuYzo6Q29udHJvbCkgIT0gbnVsbHB0cjsKKy0gIGlmIChyZXN1bHRfaXNf dW51c2VkICYmIG5vdF9kZWFkKSB7CistICAgIHJldHVybiByZXBsYWNlX3dpdGhfY29uKGlndm4s IFR5cGVGOjptYWtlKDAuKSk7CistICB9CistCistICAvLyBFaXRoZXIgaW5wdXQgaXMgVE9QID09 PiB0aGUgcmVzdWx0IGlzIFRPUAorLSAgY29uc3QgVHlwZSogdDEgPSBwaGFzZS0+dHlwZShkaXZp ZGVuZCgpKTsKKy0gIGNvbnN0IFR5cGUqIHQyID0gcGhhc2UtPnR5cGUoZGl2aXNvcigpKTsKKy0g IGlmICh0MSA9PSBUeXBlOjpUT1AgfHwgdDIgPT0gVHlwZTo6VE9QKSB7CistICAgIHJldHVybiBw aGFzZS0+Qy0+dG9wKCk7CistICB9CistCisrY29uc3QgVHlwZSogTW9kRk5vZGU6OmdldF9yZXN1 bHRfaWZfY29uc3RhbnQoY29uc3QgVHlwZSogZGl2aWRlbmQsIGNvbnN0IFR5cGUqIGRpdmlzb3Ip IGNvbnN0IHsKKyAgIC8vIElmIGVpdGhlciBudW1iZXIgaXMgbm90IGEgY29uc3RhbnQsIHdlIGtu b3cgbm90aGluZy4KKy0gIGlmICgodDEtPmJhc2UoKSAhPSBUeXBlOjpGbG9hdENvbikgfHwgKHQy LT5iYXNlKCkgIT0gVHlwZTo6RmxvYXRDb24pKSB7CisrICBpZiAoKGRpdmlkZW5kLT5iYXNlKCkg IT0gVHlwZTo6RmxvYXRDb24pIHx8IChkaXZpc29yLT5iYXNlKCkgIT0gVHlwZTo6RmxvYXRDb24p KSB7CisgICAgIHJldHVybiBudWxscHRyOyAvLyBub3RlOiB4JXggY2FuIGJlIGVpdGhlciBOYU4g b3IgMAorICAgfQorIAorLSAgZmxvYXQgZjEgPSB0MS0+Z2V0ZigpOworLSAgZmxvYXQgZjIgPSB0 Mi0+Z2V0ZigpOworLSAgamludCB4MSA9IGppbnRfY2FzdChmMSk7IC8vIG5vdGU6ICAqKGludCop JmYxLCBub3QganVzdCAoaW50KWYxCistICBqaW50IHgyID0gamludF9jYXN0KGYyKTsKKysgIGZs b2F0IGRpdmlkZW5kX2YgPSBkaXZpZGVuZC0+Z2V0ZigpOworKyAgZmxvYXQgZGl2aXNvcl9mID0g ZGl2aXNvci0+Z2V0ZigpOworKyAgamludCBkaXZpZGVuZF9pID0gamludF9jYXN0KGRpdmlkZW5k X2YpOyAvLyBub3RlOiAgKihpbnQqKSZmMSwgbm90IGp1c3QgKGludClmMQorKyAgamludCBkaXZp c29yX2kgPSBqaW50X2Nhc3QoZGl2aXNvcl9mKTsKKyAKKyAgIC8vIElmIGVpdGhlciBpcyBhIE5h TiwgcmV0dXJuIGFuIGlucHV0IE5hTgorLSAgaWYgKGdfaXNuYW4oZjEpKSB7CistICAgIHJldHVy biByZXBsYWNlX3dpdGhfY29uKGlndm4sIHQxKTsKKysgIGlmIChnX2lzbmFuKGRpdmlkZW5kX2Yp KSB7CisrICAgIHJldHVybiBkaXZpZGVuZDsKKyAgIH0KKy0gIGlmIChnX2lzbmFuKGYyKSkgewor LSAgICByZXR1cm4gcmVwbGFjZV93aXRoX2NvbihpZ3ZuLCB0Mik7CisrICBpZiAoZ19pc25hbihk aXZpc29yX2YpKSB7CisrICAgIHJldHVybiBkaXZpc29yOworICAgfQorIAorICAgLy8gSWYgYW4g b3BlcmFuZCBpcyBpbmZpbml0eSBvciB0aGUgZGl2aXNvciBpcyArLy0gemVybywgcHVudC4KKy0g IGlmICghZ19pc2Zpbml0ZShmMSkgfHwgIWdfaXNmaW5pdGUoZjIpIHx8IHgyID09IDAgfHwgeDIg PT0gbWluX2ppbnQpIHsKKysgIGlmICghZ19pc2Zpbml0ZShkaXZpZGVuZF9mKSB8fCAhZ19pc2Zp bml0ZShkaXZpc29yX2YpIHx8IGRpdmlzb3JfaSA9PSAwIHx8IGRpdmlzb3JfaSA9PSBtaW5famlu dCkgeworICAgICByZXR1cm4gbnVsbHB0cjsKKyAgIH0KKyAKKyAgIC8vIFdlIG11c3QgYmUgbW9k dWxvJ2luZyAyIGZsb2F0IGNvbnN0YW50cy4KKyAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzaWdu IG9mIHRoZSBmbW9kIGlzIGVxdWFsIHRvIHRoZSBzaWduIG9mIHRoZSBkaXZpZGVuZAorLSAgamlu dCB4ciA9IGppbnRfY2FzdChmbW9kKGYxLCBmMikpOworLSAgaWYgKCh4MSBeIHhyKSA8IDApIHsK KysgIGppbnQgeHIgPSBqaW50X2Nhc3QoZm1vZChkaXZpZGVuZF9mLCBkaXZpc29yX2YpKTsKKysg IGlmICgoZGl2aWRlbmRfaSBeIHhyKSA8IDApIHsKKyAgICAgeHIgXj0gbWluX2ppbnQ7CisgICB9 CisgCistICByZXR1cm4gcmVwbGFjZV93aXRoX2NvbihpZ3ZuLCBUeXBlRjo6bWFrZShqZmxvYXRf Y2FzdCh4cikpKTsKKysgIHJldHVybiBUeXBlRjo6bWFrZShqZmxvYXRfY2FzdCh4cikpOworIH0K KyAKKy1Ob2RlKiBNb2RETm9kZTo6SWRlYWwoUGhhc2VHVk4qIHBoYXNlLCBib29sIGNhbl9yZXNo YXBlKSB7CistICBpZiAoIWNhbl9yZXNoYXBlKSB7CistICAgIHJldHVybiBudWxscHRyOworLSAg fQorLSAgUGhhc2VJdGVyR1ZOKiBpZ3ZuID0gcGhhc2UtPmlzX0l0ZXJHVk4oKTsKKy0KKy0gIGJv b2wgcmVzdWx0X2lzX3VudXNlZCA9IHByb2pfb3V0X29yX251bGwoVHlwZUZ1bmM6OlBhcm1zKSA9 PSBudWxscHRyOworLSAgYm9vbCBub3RfZGVhZCA9IHByb2pfb3V0X29yX251bGwoVHlwZUZ1bmM6 OkNvbnRyb2wpICE9IG51bGxwdHI7CistICBpZiAocmVzdWx0X2lzX3VudXNlZCAmJiBub3RfZGVh ZCkgeworLSAgICByZXR1cm4gcmVwbGFjZV93aXRoX2NvbihpZ3ZuLCBUeXBlRDo6bWFrZSgwLikp OworLSAgfQorLQorLSAgLy8gRWl0aGVyIGlucHV0IGlzIFRPUCA9PT4gdGhlIHJlc3VsdCBpcyBU T1AKKy0gIGNvbnN0IFR5cGUqIHQxID0gcGhhc2UtPnR5cGUoZGl2aWRlbmQoKSk7CistICBjb25z dCBUeXBlKiB0MiA9IHBoYXNlLT50eXBlKGRpdmlzb3IoKSk7CistICBpZiAodDEgPT0gVHlwZTo6 VE9QIHx8IHQyID09IFR5cGU6OlRPUCkgeworLSAgICByZXR1cm4gbnVsbHB0cjsKKy0gIH0KKy0K Kytjb25zdCBUeXBlKiBNb2RETm9kZTo6Z2V0X3Jlc3VsdF9pZl9jb25zdGFudChjb25zdCBUeXBl KiBkaXZpZGVuZCwgY29uc3QgVHlwZSogZGl2aXNvcikgY29uc3QgeworICAgLy8gSWYgZWl0aGVy IG51bWJlciBpcyBub3QgYSBjb25zdGFudCwgd2Uga25vdyBub3RoaW5nLgorLSAgaWYgKCh0MS0+ YmFzZSgpICE9IFR5cGU6OkRvdWJsZUNvbikgfHwgKHQyLT5iYXNlKCkgIT0gVHlwZTo6RG91Ymxl Q29uKSkgeworKyAgaWYgKChkaXZpZGVuZC0+YmFzZSgpICE9IFR5cGU6OkRvdWJsZUNvbikgfHwg KGRpdmlzb3ItPmJhc2UoKSAhPSBUeXBlOjpEb3VibGVDb24pKSB7CisgICAgIHJldHVybiBudWxs cHRyOyAvLyBub3RlOiB4JXggY2FuIGJlIGVpdGhlciBOYU4gb3IgMAorICAgfQorIAorLSAgZG91 YmxlIGYxID0gdDEtPmdldGQoKTsKKy0gIGRvdWJsZSBmMiA9IHQyLT5nZXRkKCk7CistICBqbG9u ZyB4MSA9IGpsb25nX2Nhc3QoZjEpOyAvLyBub3RlOiAgKihsb25nKikmZjEsIG5vdCBqdXN0IChs b25nKWYxCistICBqbG9uZyB4MiA9IGpsb25nX2Nhc3QoZjIpOworKyAgZG91YmxlIGRpdmlkZW5k X2QgPSBkaXZpZGVuZC0+Z2V0ZCgpOworKyAgZG91YmxlIGRpdmlzb3JfZCA9IGRpdmlzb3ItPmdl dGQoKTsKKysgIGpsb25nIGRpdmlkZW5kX2wgPSBqbG9uZ19jYXN0KGRpdmlkZW5kX2QpOyAvLyBu b3RlOiAgKihsb25nKikmZjEsIG5vdCBqdXN0IChsb25nKWYxCisrICBqbG9uZyBkaXZpc29yX2wg PSBqbG9uZ19jYXN0KGRpdmlzb3JfZCk7CisgCisgICAvLyBJZiBlaXRoZXIgaXMgYSBOYU4sIHJl dHVybiBhbiBpbnB1dCBOYU4KKy0gIGlmIChnX2lzbmFuKGYxKSkgeworLSAgICByZXR1cm4gcmVw bGFjZV93aXRoX2NvbihpZ3ZuLCB0MSk7CisrICBpZiAoZ19pc25hbihkaXZpZGVuZF9kKSkgewor KyAgICByZXR1cm4gZGl2aWRlbmQ7CisgICB9CistICBpZiAoZ19pc25hbihmMikpIHsKKy0gICAg cmV0dXJuIHJlcGxhY2Vfd2l0aF9jb24oaWd2biwgdDIpOworKyAgaWYgKGdfaXNuYW4oZGl2aXNv cl9kKSkgeworKyAgICByZXR1cm4gZGl2aXNvcjsKKyAgIH0KKyAKKyAgIC8vIElmIGFuIG9wZXJh bmQgaXMgaW5maW5pdHkgb3IgdGhlIGRpdmlzb3IgaXMgKy8tIHplcm8sIHB1bnQuCistICBpZiAo IWdfaXNmaW5pdGUoZjEpIHx8ICFnX2lzZmluaXRlKGYyKSB8fCB4MiA9PSAwIHx8IHgyID09IG1p bl9qbG9uZykgeworKyAgaWYgKCFnX2lzZmluaXRlKGRpdmlkZW5kX2QpIHx8ICFnX2lzZmluaXRl KGRpdmlzb3JfZCkgfHwgZGl2aXNvcl9sID09IDAgfHwgZGl2aXNvcl9sID09IG1pbl9qbG9uZykg eworICAgICByZXR1cm4gbnVsbHB0cjsKKyAgIH0KKyAKKyAgIC8vIFdlIG11c3QgYmUgbW9kdWxv J2luZyAyIGRvdWJsZSBjb25zdGFudHMuCisgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc2lnbiBv ZiB0aGUgZm1vZCBpcyBlcXVhbCB0byB0aGUgc2lnbiBvZiB0aGUgZGl2aWRlbmQKKy0gIGpsb25n IHhyID0gamxvbmdfY2FzdChmbW9kKGYxLCBmMikpOworLSAgaWYgKCh4MSBeIHhyKSA8IDApIHsK KysgIGpsb25nIHhyID0gamxvbmdfY2FzdChmbW9kKGRpdmlkZW5kX2QsIGRpdmlzb3JfZCkpOwor KyAgaWYgKChkaXZpZGVuZF9sIF4geHIpIDwgMCkgeworICAgICB4ciBePSBtaW5famxvbmc7Cisg ICB9CisgCistICByZXR1cm4gcmVwbGFjZV93aXRoX2NvbihpZ3ZuLCBUeXBlRDo6bWFrZShqZG91 YmxlX2Nhc3QoeHIpKSk7CisrICByZXR1cm4gVHlwZUQ6Om1ha2UoamRvdWJsZV9jYXN0KHhyKSk7 CisgfQorIAorLU5vZGUqIE1vZEZsb2F0aW5nTm9kZTo6cmVwbGFjZV93aXRoX2NvbihQaGFzZUl0 ZXJHVk4qIHBoYXNlLCBjb25zdCBUeXBlKiBjb24pIHsKKy0gIENvbXBpbGUqIEMgPSBwaGFzZS0+ QzsKKy0gIE5vZGUqIGNvbl9ub2RlID0gcGhhc2UtPm1ha2Vjb24oY29uKTsKKy0gIENhbGxQcm9q ZWN0aW9ucyBwcm9qczsKKy0gIGV4dHJhY3RfcHJvamVjdGlvbnMoJnByb2pzLCBmYWxzZSwgZmFs c2UpOworLSAgcGhhc2UtPnJlcGxhY2Vfbm9kZShwcm9qcy5mYWxsdGhyb3VnaF9wcm9qLCBpbihU eXBlRnVuYzo6Q29udHJvbCkpOworLSAgaWYgKHByb2pzLmZhbGx0aHJvdWdoX2NhdGNocHJvaiAh PSBudWxscHRyKSB7CistICAgIHBoYXNlLT5yZXBsYWNlX25vZGUocHJvanMuZmFsbHRocm91Z2hf Y2F0Y2hwcm9qLCBpbihUeXBlRnVuYzo6Q29udHJvbCkpOworLSAgfQorLSAgaWYgKHByb2pzLmZh bGx0aHJvdWdoX21lbXByb2ogIT0gbnVsbHB0cikgeworLSAgICBwaGFzZS0+cmVwbGFjZV9ub2Rl KHByb2pzLmZhbGx0aHJvdWdoX21lbXByb2osIGluKFR5cGVGdW5jOjpNZW1vcnkpKTsKKy0gIH0K Ky0gIGlmIChwcm9qcy5jYXRjaGFsbF9tZW1wcm9qICE9IG51bGxwdHIpIHsKKy0gICAgcGhhc2Ut PnJlcGxhY2Vfbm9kZShwcm9qcy5jYXRjaGFsbF9tZW1wcm9qLCBDLT50b3AoKSk7CistICB9Cist ICBpZiAocHJvanMuZmFsbHRocm91Z2hfaW9wcm9qICE9IG51bGxwdHIpIHsKKy0gICAgcGhhc2Ut PnJlcGxhY2Vfbm9kZShwcm9qcy5mYWxsdGhyb3VnaF9pb3Byb2osIGluKFR5cGVGdW5jOjpJX08p KTsKKy0gIH0KKy0gIGFzc2VydChwcm9qcy5jYXRjaGFsbF9pb3Byb2ogPT0gbnVsbHB0ciwgIm5v IGV4Y2VwdGlvbnMgZnJvbSBmbG9hdGluZyBtb2QiKTsKKy0gIGFzc2VydChwcm9qcy5jYXRjaGFs bF9jYXRjaHByb2ogPT0gbnVsbHB0ciwgIm5vIGV4Y2VwdGlvbnMgZnJvbSBmbG9hdGluZyBtb2Qi KTsKKy0gIGlmIChwcm9qcy5yZXNwcm9qICE9IG51bGxwdHIpIHsKKy0gICAgcGhhc2UtPnJlcGxh Y2Vfbm9kZShwcm9qcy5yZXNwcm9qLCBjb25fbm9kZSk7CisrTm9kZSogTW9kRmxvYXRpbmdOb2Rl OjpJZGVhbChQaGFzZUdWTiogcGhhc2UsIGJvb2wgY2FuX3Jlc2hhcGUpIHsKKysgIGlmIChjYW5f cmVzaGFwZSkgeworKyAgICBQaGFzZUl0ZXJHVk4qIGlndm4gPSBwaGFzZS0+aXNfSXRlckdWTigp OworKworKyAgICAvLyBFaXRoZXIgaW5wdXQgaXMgVE9QID09PiB0aGUgcmVzdWx0IGlzIFRPUAor KyAgICBjb25zdCBUeXBlKiBkaXZpZGVuZF90eXBlID0gcGhhc2UtPnR5cGUoZGl2aWRlbmQoKSk7 CisrICAgIGNvbnN0IFR5cGUqIGRpdmlzb3JfdHlwZSA9IHBoYXNlLT50eXBlKGRpdmlzb3IoKSk7 CisrICAgIGlmIChkaXZpZGVuZF90eXBlID09IFR5cGU6OlRPUCB8fCBkaXZpc29yX3R5cGUgPT0g VHlwZTo6VE9QKSB7CisrICAgICAgcmV0dXJuIHBoYXNlLT5DLT50b3AoKTsKKysgICAgfQorKyAg ICBjb25zdCBUeXBlKiBjb25zdGFudF9yZXN1bHQgPSBnZXRfcmVzdWx0X2lmX2NvbnN0YW50KGRp dmlkZW5kX3R5cGUsIGRpdmlzb3JfdHlwZSk7CisrICAgIGlmIChjb25zdGFudF9yZXN1bHQgIT0g bnVsbHB0cikgeworKyAgICAgIHJldHVybiBtYWtlX3R1cGxlX29mX2lucHV0X3N0YXRlX2FuZF9j b25zdGFudF9yZXN1bHQoaWd2biwgY29uc3RhbnRfcmVzdWx0KTsKKysgICAgfQorICAgfQorLSAg cGhhc2UtPnJlcGxhY2Vfbm9kZSh0aGlzLCBDLT50b3AoKSk7CistICBDLT5yZW1vdmVfbWFjcm9f bm9kZSh0aGlzKTsKKy0gIGRpc2Nvbm5lY3RfaW5wdXRzKEMpOworLSAgcmV0dXJuIG51bGxwdHI7 CisrCisrICByZXR1cm4gQ2FsbExlYWZQdXJlTm9kZTo6SWRlYWwocGhhc2UsIGNhbl9yZXNoYXBl KTsKKyt9CisrCisrLyogR2l2ZSBhIHR1cGxlIG5vZGUgZm9yIDo6SWRlYWwgdG8gcmV0dXJuLCBt YWRlIG9mIHRoZSBpbnB1dCBzdGF0ZSAoY29udHJvbCB0byByZXR1cm4gYWRkcikKKysgKiBhbmQg dGhlIGdpdmVuIGNvbnN0YW50IHJlc3VsdC4gSWRlYWxpemF0aW9uIG9mIHByb2plY3Rpb25zIHdp bGwgbWFrZSBzdXJlIHRvIHRyYW5zcGFyZW50bHkKKysgKiBwcm9wYWdhdGUgdGhlIGlucHV0IHN0 YXRlIGFuZCByZXBsYWNlIHRoZSByZXN1bHQgYnkgdGhlIHNhaWQgY29uc3RhbnQuCisrICovCisr VHVwbGVOb2RlKiBNb2RGbG9hdGluZ05vZGU6Om1ha2VfdHVwbGVfb2ZfaW5wdXRfc3RhdGVfYW5k X2NvbnN0YW50X3Jlc3VsdChQaGFzZUl0ZXJHVk4qIHBoYXNlLCBjb25zdCBUeXBlKiBjb24pIGNv bnN0IHsKKysgIE5vZGUqIGNvbl9ub2RlID0gcGhhc2UtPm1ha2Vjb24oY29uKTsKKysgIFR1cGxl Tm9kZSogdHVwbGUgPSBUdXBsZU5vZGU6Om1ha2UoCisrICAgICAgdGYoKS0+cmFuZ2UoKSwKKysg ICAgICBpbihUeXBlRnVuYzo6Q29udHJvbCksCisrICAgICAgaW4oVHlwZUZ1bmM6OklfTyksCisr ICAgICAgaW4oVHlwZUZ1bmM6Ok1lbW9yeSksCisrICAgICAgaW4oVHlwZUZ1bmM6OkZyYW1lUHRy KSwKKysgICAgICBpbihUeXBlRnVuYzo6UmV0dXJuQWRyKSwKKysgICAgICBjb25fbm9kZSk7Cisr CisrICByZXR1cm4gdHVwbGU7CisgfQorIAorIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2RpZmYg LS1naXQgYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2Rpdm5vZGUuaHBwIGIvc3JjL2hvdHNwb3Qv c2hhcmUvb3B0by9kaXZub2RlLmhwcAoraW5kZXggMTI3ZTI0MzFiMGIuLmIxMzQ2MGM4OWY1IDEw MDY0NAorLS0tIGEvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9kaXZub2RlLmhwcAorKysrIGIvc3Jj L2hvdHNwb3Qvc2hhcmUvb3B0by9kaXZub2RlLmhwcAorQEAgLTE1Niw0MCArMTU2LDQ1IEBAIGNs YXNzIE1vZExOb2RlIDogcHVibGljIE5vZGUgeworIH07CisgCisgLy8gQmFzZSBjbGFzcyBmb3Ig ZmxvYXQgYW5kIGRvdWJsZSBtb2R1bHVzCistY2xhc3MgTW9kRmxvYXRpbmdOb2RlIDogcHVibGlj IENhbGxMZWFmTm9kZSB7CisrY2xhc3MgTW9kRmxvYXRpbmdOb2RlIDogcHVibGljIENhbGxMZWFm UHVyZU5vZGUgeworKyAgVHVwbGVOb2RlKiBtYWtlX3R1cGxlX29mX2lucHV0X3N0YXRlX2FuZF9j b25zdGFudF9yZXN1bHQoUGhhc2VJdGVyR1ZOKiBwaGFzZSwgY29uc3QgVHlwZSogY29uKSBjb25z dDsKKysKKyBwcm90ZWN0ZWQ6CistICBOb2RlKiByZXBsYWNlX3dpdGhfY29uKFBoYXNlSXRlckdW TiogcGhhc2UsIGNvbnN0IFR5cGUqIGNvbik7CisrICB2aXJ0dWFsIE5vZGUqIGRpdmlkZW5kKCkg Y29uc3QgPSAwOworKyAgdmlydHVhbCBOb2RlKiBkaXZpc29yKCkgY29uc3QgPSAwOworKyAgdmly dHVhbCBjb25zdCBUeXBlKiBnZXRfcmVzdWx0X2lmX2NvbnN0YW50KGNvbnN0IFR5cGUqIGRpdmlk ZW5kLCBjb25zdCBUeXBlKiBkaXZpc29yKSBjb25zdCA9IDA7CisgCisgcHVibGljOgorLSAgTW9k RmxvYXRpbmdOb2RlKENvbXBpbGUqIEMsIGNvbnN0IFR5cGVGdW5jKiB0ZiwgY29uc3QgY2hhciAq bmFtZSk7CisrICBNb2RGbG9hdGluZ05vZGUoQ29tcGlsZSogQywgY29uc3QgVHlwZUZ1bmMqIHRm LCBhZGRyZXNzIGFkZHIsIGNvbnN0IGNoYXIqIG5hbWUpOworKyAgTm9kZSogSWRlYWwoUGhhc2VH Vk4qIHBoYXNlLCBib29sIGNhbl9yZXNoYXBlKSBvdmVycmlkZTsKKyB9OworIAorIC8vIEZsb2F0 IE1vZHVsdXMKKyBjbGFzcyBNb2RGTm9kZSA6IHB1YmxpYyBNb2RGbG9hdGluZ05vZGUgeworIHBy aXZhdGU6CistICBOb2RlKiBkaXZpZGVuZCgpIGNvbnN0IHsgcmV0dXJuIGluKFR5cGVGdW5jOjpQ YXJtcyArIDApOyB9CistICBOb2RlKiBkaXZpc29yKCkgY29uc3QgeyByZXR1cm4gaW4oVHlwZUZ1 bmM6OlBhcm1zICsgMSk7IH0KKysgIE5vZGUqIGRpdmlkZW5kKCkgY29uc3Qgb3ZlcnJpZGUgeyBy ZXR1cm4gaW4oVHlwZUZ1bmM6OlBhcm1zICsgMCk7IH0KKysgIE5vZGUqIGRpdmlzb3IoKSBjb25z dCBvdmVycmlkZSB7IHJldHVybiBpbihUeXBlRnVuYzo6UGFybXMgKyAxKTsgfQorKyAgY29uc3Qg VHlwZSogZ2V0X3Jlc3VsdF9pZl9jb25zdGFudChjb25zdCBUeXBlKiBkaXZpZGVuZCwgY29uc3Qg VHlwZSogZGl2aXNvcikgY29uc3Qgb3ZlcnJpZGU7CisgCisgcHVibGljOgorICAgTW9kRk5vZGUo Q29tcGlsZSogQywgTm9kZSogYSwgTm9kZSogYik7CistICB2aXJ0dWFsIGludCBPcGNvZGUoKSBj b25zdDsKKy0gIHZpcnR1YWwgdWludCBpZGVhbF9yZWcoKSBjb25zdCB7IHJldHVybiBPcF9SZWdG OyB9CistICB2aXJ0dWFsIHVpbnQgc2l6ZV9vZigpIGNvbnN0IHsgcmV0dXJuIHNpemVvZigqdGhp cyk7IH0KKy0gIHZpcnR1YWwgTm9kZSogSWRlYWwoUGhhc2VHVk4qIHBoYXNlLCBib29sIGNhbl9y ZXNoYXBlKTsKKysgIGludCBPcGNvZGUoKSBjb25zdCBvdmVycmlkZTsKKysgIHVpbnQgaWRlYWxf cmVnKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gT3BfUmVnRjsgfQorKyAgdWludCBzaXplX29m KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2l6ZW9mKCp0aGlzKTsgfQorIH07CisgCisgLy8g RG91YmxlIE1vZHVsdXMKKyBjbGFzcyBNb2RETm9kZSA6IHB1YmxpYyBNb2RGbG9hdGluZ05vZGUg eworIHByaXZhdGU6CistICBOb2RlKiBkaXZpZGVuZCgpIGNvbnN0IHsgcmV0dXJuIGluKFR5cGVG dW5jOjpQYXJtcyArIDApOyB9CistICBOb2RlKiBkaXZpc29yKCkgY29uc3QgeyByZXR1cm4gaW4o VHlwZUZ1bmM6OlBhcm1zICsgMik7IH0KKysgIE5vZGUqIGRpdmlkZW5kKCkgY29uc3Qgb3ZlcnJp ZGUgeyByZXR1cm4gaW4oVHlwZUZ1bmM6OlBhcm1zICsgMCk7IH0KKysgIE5vZGUqIGRpdmlzb3Io KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpbihUeXBlRnVuYzo6UGFybXMgKyAyKTsgfQorKyAg Y29uc3QgVHlwZSogZ2V0X3Jlc3VsdF9pZl9jb25zdGFudChjb25zdCBUeXBlKiBkaXZpZGVuZCwg Y29uc3QgVHlwZSogZGl2aXNvcikgY29uc3Qgb3ZlcnJpZGU7CisgCisgcHVibGljOgorICAgTW9k RE5vZGUoQ29tcGlsZSogQywgTm9kZSogYSwgTm9kZSogYik7CistICB2aXJ0dWFsIGludCBPcGNv ZGUoKSBjb25zdDsKKy0gIHZpcnR1YWwgdWludCBpZGVhbF9yZWcoKSBjb25zdCB7IHJldHVybiBP cF9SZWdEOyB9CistICB2aXJ0dWFsIHVpbnQgc2l6ZV9vZigpIGNvbnN0IHsgcmV0dXJuIHNpemVv ZigqdGhpcyk7IH0KKy0gIHZpcnR1YWwgTm9kZSogSWRlYWwoUGhhc2VHVk4qIHBoYXNlLCBib29s IGNhbl9yZXNoYXBlKTsKKysgIGludCBPcGNvZGUoKSBjb25zdCBvdmVycmlkZTsKKysgIHVpbnQg aWRlYWxfcmVnKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gT3BfUmVnRDsgfQorKyAgdWludCBz aXplX29mKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2l6ZW9mKCp0aGlzKTsgfQorIH07Cisg CisgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1VTW9kSU5vZGUtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RpZmYgLS1naXQgYS9zcmMvaG90c3BvdC9zaGFy ZS9vcHRvL2dyYXBoS2l0LmNwcCBiL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vZ3JhcGhLaXQuY3Bw CitpbmRleCAyMGZlY2EyNmVkZS4uMWI4YjcwMDg1NzggMTAwNjQ0CistLS0gYS9zcmMvaG90c3Bv dC9zaGFyZS9vcHRvL2dyYXBoS2l0LmNwcAorKysrIGIvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9n cmFwaEtpdC5jcHAKK0BAIC0xODgwLDE0ICsxODgwLDIwIEBAIE5vZGUqIEdyYXBoS2l0OjpzZXRf cmVzdWx0c19mb3JfamF2YV9jYWxsKENhbGxKYXZhTm9kZSogY2FsbCwgYm9vbCBzZXBhcmF0ZV9p b19wCisgLy8gYWZ0ZXIgdGhlIGNhbGwsIGlmIHRoaXMgY2FsbCBoYXMgcmVzdHJpY3RlZCBtZW1v cnkgZWZmZWN0cy4KKyBOb2RlKiBHcmFwaEtpdDo6c2V0X3ByZWRlZmluZWRfaW5wdXRfZm9yX3J1 bnRpbWVfY2FsbChTYWZlUG9pbnROb2RlKiBjYWxsLCBOb2RlKiBuYXJyb3dfbWVtKSB7CisgICAv LyBTZXQgZml4ZWQgcHJlZGVmaW5lZCBpbnB1dCBhcmd1bWVudHMKKy0gIE5vZGUqIG1lbW9yeSA9 IHJlc2V0X21lbW9yeSgpOworLSAgTm9kZSogbSA9IG5hcnJvd19tZW0gPT0gbnVsbHB0ciA/IG1l bW9yeSA6IG5hcnJvd19tZW07CistICBjYWxsLT5pbml0X3JlcSggVHlwZUZ1bmM6OkNvbnRyb2ws ICAgY29udHJvbCgpICApOworLSAgY2FsbC0+aW5pdF9yZXEoIFR5cGVGdW5jOjpJX08sICAgICAg IHRvcCgpICAgICAgKTsgLy8gZG9lcyBubyBpL28KKy0gIGNhbGwtPmluaXRfcmVxKCBUeXBlRnVu Yzo6TWVtb3J5LCAgICBtICAgICAgICAgICk7IC8vIG1heSBnYyBwdHJzCistICBjYWxsLT5pbml0 X3JlcSggVHlwZUZ1bmM6OkZyYW1lUHRyLCAgZnJhbWVwdHIoKSApOworLSAgY2FsbC0+aW5pdF9y ZXEoIFR5cGVGdW5jOjpSZXR1cm5BZHIsIHRvcCgpICAgICAgKTsKKy0gIHJldHVybiBtZW1vcnk7 CisrICBjYWxsLT5pbml0X3JlcShUeXBlRnVuYzo6Q29udHJvbCwgY29udHJvbCgpKTsKKysgIGNh bGwtPmluaXRfcmVxKFR5cGVGdW5jOjpJX08sIHRvcCgpKTsgLy8gZG9lcyBubyBpL28KKysgIGNh bGwtPmluaXRfcmVxKFR5cGVGdW5jOjpSZXR1cm5BZHIsIHRvcCgpKTsKKysgIGlmIChjYWxsLT5p c19DYWxsTGVhZlB1cmUoKSkgeworKyAgICBjYWxsLT5pbml0X3JlcShUeXBlRnVuYzo6TWVtb3J5 LCB0b3AoKSk7CisrICAgIGNhbGwtPmluaXRfcmVxKFR5cGVGdW5jOjpGcmFtZVB0ciwgdG9wKCkp OworKyAgICByZXR1cm4gbnVsbHB0cjsKKysgIH0gZWxzZSB7CisrICAgIE5vZGUqIG1lbW9yeSA9 IHJlc2V0X21lbW9yeSgpOworKyAgICBOb2RlKiBtID0gbmFycm93X21lbSA9PSBudWxscHRyID8g bWVtb3J5IDogbmFycm93X21lbTsKKysgICAgY2FsbC0+aW5pdF9yZXEoVHlwZUZ1bmM6Ok1lbW9y eSwgbSk7IC8vIG1heSBnYyBwdHJzCisrICAgIGNhbGwtPmluaXRfcmVxKFR5cGVGdW5jOjpGcmFt ZVB0ciwgZnJhbWVwdHIoKSk7CisrICAgIHJldHVybiBtZW1vcnk7CisrICB9CisgfQorIAorIC8v LS0tLS0tLS0tLS0tLS0tLS0tLXNldF9wcmVkZWZpbmVkX291dHB1dF9mb3JfcnVudGltZV9jYWxs LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0BAIC0xOTA1LDYgKzE5MTEsMTEgQEAgdm9pZCBHcmFwaEtp dDo6c2V0X3ByZWRlZmluZWRfb3V0cHV0X2Zvcl9ydW50aW1lX2NhbGwoTm9kZSogY2FsbCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBUeXBlUHRyKiBob29rX21lbSkgeworICAgLy8gbm8gaS9vCisgICBzZXRfY29udHJvbChfZ3Zu LnRyYW5zZm9ybSggbmV3IFByb2pOb2RlKGNhbGwsVHlwZUZ1bmM6OkNvbnRyb2wpICkpOworKyAg aWYgKGNhbGwtPmlzX0NhbGxMZWFmUHVyZSgpKSB7CisrICAgIC8vIFB1cmUgZnVuY3Rpb24gaGF2 ZSBvbmx5IGNvbnRyb2wgKGZvciBub3cpIGFuZCBkYXRhIG91dHB1dCwgaW4gcGFydGljdWxhcgor KyAgICAvLyB0aGV5IGRvbid0IHRvdWNoIHRoZSBtZW1vcnksIHNvIHdlIGRvbid0IHdhbnQgYSBt ZW1vcnkgcHJvaiB0aGF0IGlzIHNldCBhZnRlci4KKysgICAgcmV0dXJuOworKyAgfQorICAgaWYg KGtlZXBfbWVtKSB7CisgICAgIC8vIEZpcnN0IGNsb25lIHRoZSBleGlzdGluZyBtZW1vcnkgc3Rh dGUKKyAgICAgc2V0X2FsbF9tZW1vcnkoa2VlcF9tZW0pOworQEAgLTI0OTEsNiArMjUwMiw4IEBA IE5vZGUqIEdyYXBoS2l0OjptYWtlX3J1bnRpbWVfY2FsbChpbnQgZmxhZ3MsCisgICB9IGVsc2Ug IGlmIChmbGFncyAmIFJDX1ZFQ1RPUil7CisgICAgIHVpbnQgbnVtX2JpdHMgPSBjYWxsX3R5cGUt PnJhbmdlKCktPmZpZWxkX2F0KFR5cGVGdW5jOjpQYXJtcyktPmlzX3ZlY3QoKS0+bGVuZ3RoX2lu X2J5dGVzKCkgKiBCaXRzUGVyQnl0ZTsKKyAgICAgY2FsbCA9IG5ldyBDYWxsTGVhZlZlY3Rvck5v ZGUoY2FsbF90eXBlLCBjYWxsX2FkZHIsIGNhbGxfbmFtZSwgYWRyX3R5cGUsIG51bV9iaXRzKTsK KysgIH0gZWxzZSBpZiAoZmxhZ3MgJiBSQ19QVVJFKSB7CisrICAgIGNhbGwgPSBuZXcgQ2FsbExl YWZQdXJlTm9kZShjYWxsX3R5cGUsIGNhbGxfYWRkciwgY2FsbF9uYW1lLCBhZHJfdHlwZSk7Cisg ICB9IGVsc2UgeworICAgICBjYWxsID0gbmV3IENhbGxMZWFmTm9kZShjYWxsX3R5cGUsIGNhbGxf YWRkciwgY2FsbF9uYW1lLCBhZHJfdHlwZSk7CisgICB9CitkaWZmIC0tZ2l0IGEvc3JjL2hvdHNw b3Qvc2hhcmUvb3B0by9ncmFwaEtpdC5ocHAgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2dyYXBo S2l0LmhwcAoraW5kZXggMjg3NzNkNzUzMzMuLjgwNmEyMTFkN2UyIDEwMDY0NAorLS0tIGEvc3Jj L2hvdHNwb3Qvc2hhcmUvb3B0by9ncmFwaEtpdC5ocHAKKysrKyBiL3NyYy9ob3RzcG90L3NoYXJl L29wdG8vZ3JhcGhLaXQuaHBwCitAQCAtNzg0LDYgKzc4NCw3IEBAIGNsYXNzIEdyYXBoS2l0IDog cHVibGljIFBoYXNlIHsKKyAgICAgUkNfTkFSUk9XX01FTSA9IDE2LCAgICAgICAgIC8vIGlucHV0 IG1lbW9yeSBpcyBzYW1lIGFzIG91dHB1dAorICAgICBSQ19VTkNPTU1PTiA9IDMyLCAgICAgICAg ICAgLy8gZnJlcS4gZXhwZWN0ZWQgdG8gYmUgbGlrZSB1bmNvbW1vbiB0cmFwCisgICAgIFJDX1ZF Q1RPUiA9IDY0LCAgICAgICAgICAgICAvLyBDYWxsTGVhZlZlY3Rvck5vZGUKKysgICAgUkNfUFVS RSA9IDEyOCwgICAgICAgICAgICAgIC8vIENhbGxMZWFmIGlzIHB1cmUKKyAgICAgUkNfTEVBRiA9 IDAgICAgICAgICAgICAgICAgIC8vIG51bGwgdmFsdWU6ICBubyBmbGFncyBzZXQKKyAgIH07Cisg CitkaWZmIC0tZ2l0IGEvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9saWJyYXJ5X2NhbGwuY3BwIGIv c3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9saWJyYXJ5X2NhbGwuY3BwCitpbmRleCBmNzRhZjM4Mzg3 Yy4uMTI5NjBkMTAxYTggMTAwNjQ0CistLS0gYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2xpYnJh cnlfY2FsbC5jcHAKKysrKyBiL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vbGlicmFyeV9jYWxsLmNw cAorQEAgLTE4MDIsNyArMTgwMiw3IEBAIGJvb2wgTGlicmFyeUNhbGxLaXQ6OnJ1bnRpbWVfbWF0 aChjb25zdCBUeXBlRnVuYyogY2FsbF90eXBlLCBhZGRyZXNzIGZ1bmNBZGRyLCBjCisgICBOb2Rl KiBiID0gKGNhbGxfdHlwZSA9PSBPcHRvUnVudGltZTo6TWF0aF9ERF9EX1R5cGUoKSkgPyBhcmd1 bWVudCgyKSA6IG51bGxwdHI7CisgCisgICBjb25zdCBUeXBlUHRyKiBub19tZW1vcnlfZWZmZWN0 cyA9IG51bGxwdHI7CistICBOb2RlKiB0cmlnID0gbWFrZV9ydW50aW1lX2NhbGwoUkNfTEVBRiwg Y2FsbF90eXBlLCBmdW5jQWRkciwgZnVuY05hbWUsCisrICBOb2RlKiB0cmlnID0gbWFrZV9ydW50 aW1lX2NhbGwoUkNfTEVBRiB8IFJDX1BVUkUsIGNhbGxfdHlwZSwgZnVuY0FkZHIsIGZ1bmNOYW1l LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vX21lbW9yeV9lZmZlY3RzLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEsIHRvcCgpLCBiLCBiID8gdG9wKCkg OiBudWxscHRyKTsKKyAgIE5vZGUqIHZhbHVlID0gX2d2bi50cmFuc2Zvcm0obmV3IFByb2pOb2Rl KHRyaWcsIFR5cGVGdW5jOjpQYXJtcyswKSk7CitkaWZmIC0tZ2l0IGEvc3JjL2hvdHNwb3Qvc2hh cmUvb3B0by9tYWNyby5jcHAgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL21hY3JvLmNwcAoraW5k ZXggYWNmMWRiYWJmMTkuLmFhZmM1ZDNjMTcwIDEwMDY0NAorLS0tIGEvc3JjL2hvdHNwb3Qvc2hh cmUvb3B0by9tYWNyby5jcHAKKysrKyBiL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vbWFjcm8uY3Bw CitAQCAtMjYzOCwxNyArMjYzOCwxNCBAQCBib29sIFBoYXNlTWFjcm9FeHBhbmQ6OmV4cGFuZF9t YWNyb19ub2RlcygpIHsKKyAgICAgICBzd2l0Y2ggKG4tPk9wY29kZSgpKSB7CisgICAgICAgY2Fz ZSBPcF9Nb2REOgorICAgICAgIGNhc2UgT3BfTW9kRjogeworLSAgICAgICAgYm9vbCBpc19kcmVt ID0gbi0+T3Bjb2RlKCkgPT0gT3BfTW9kRDsKKyAgICAgICAgIENhbGxOb2RlKiBtb2RfbWFjcm8g PSBuLT5hc19DYWxsKCk7CistICAgICAgICBDYWxsTm9kZSogY2FsbCA9IG5ldyBDYWxsTGVhZk5v ZGUobW9kX21hY3JvLT50ZigpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlzX2RyZW0gPyBDQVNUX0ZST01fRk5fUFRSKGFkZHJlc3MsIFNoYXJlZFJ1bnRpbWU6 OmRyZW0pCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA6IENBU1RfRlJPTV9GTl9QVFIoYWRkcmVzcywgU2hhcmVkUnVudGltZTo6ZnJlbSksCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZHJlbSA/ICJkcmVtIiA6 ICJmcmVtIiwgVHlwZVJhd1B0cjo6Qk9UVE9NKTsKKysgICAgICAgIENhbGxOb2RlKiBjYWxsID0g bmV3IENhbGxMZWFmUHVyZU5vZGUobW9kX21hY3JvLT50ZigpLCBtb2RfbWFjcm8tPmVudHJ5X3Bv aW50KCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v ZF9tYWNyby0+X25hbWUsIFR5cGVSYXdQdHI6OkJPVFRPTSk7CisgICAgICAgICBjYWxsLT5pbml0 X3JlcShUeXBlRnVuYzo6Q29udHJvbCwgbW9kX21hY3JvLT5pbihUeXBlRnVuYzo6Q29udHJvbCkp OworLSAgICAgICAgY2FsbC0+aW5pdF9yZXEoVHlwZUZ1bmM6OklfTywgbW9kX21hY3JvLT5pbihU eXBlRnVuYzo6SV9PKSk7CistICAgICAgICBjYWxsLT5pbml0X3JlcShUeXBlRnVuYzo6TWVtb3J5 LCBtb2RfbWFjcm8tPmluKFR5cGVGdW5jOjpNZW1vcnkpKTsKKy0gICAgICAgIGNhbGwtPmluaXRf cmVxKFR5cGVGdW5jOjpSZXR1cm5BZHIsIG1vZF9tYWNyby0+aW4oVHlwZUZ1bmM6OlJldHVybkFk cikpOworLSAgICAgICAgY2FsbC0+aW5pdF9yZXEoVHlwZUZ1bmM6OkZyYW1lUHRyLCBtb2RfbWFj cm8tPmluKFR5cGVGdW5jOjpGcmFtZVB0cikpOworKyAgICAgICAgY2FsbC0+aW5pdF9yZXEoVHlw ZUZ1bmM6OklfTywgQy0+dG9wKCkpOworKyAgICAgICAgY2FsbC0+aW5pdF9yZXEoVHlwZUZ1bmM6 Ok1lbW9yeSwgQy0+dG9wKCkpOworKyAgICAgICAgY2FsbC0+aW5pdF9yZXEoVHlwZUZ1bmM6OlJl dHVybkFkciwgQy0+dG9wKCkpOworKyAgICAgICAgY2FsbC0+aW5pdF9yZXEoVHlwZUZ1bmM6OkZy YW1lUHRyLCBDLT50b3AoKSk7CisgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8 IG1vZF9tYWNyby0+dGYoKS0+ZG9tYWluKCktPmNudCgpIC0gVHlwZUZ1bmM6OlBhcm1zOyBpKysp IHsKKyAgICAgICAgICAgY2FsbC0+aW5pdF9yZXEoVHlwZUZ1bmM6OlBhcm1zICsgaSwgbW9kX21h Y3JvLT5pbihUeXBlRnVuYzo6UGFybXMgKyBpKSk7CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEv c3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9tdWx0bm9kZS5jcHAgYi9zcmMvaG90c3BvdC9zaGFyZS9v cHRvL211bHRub2RlLmNwcAoraW5kZXggNzM2ZTg0MzE1ZWUuLmY0MjlkNWRhYWMwIDEwMDY0NAor LS0tIGEvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9tdWx0bm9kZS5jcHAKKysrKyBiL3NyYy9ob3Rz cG90L3NoYXJlL29wdG8vbXVsdG5vZGUuY3BwCitAQCAtMTIwLDYgKzEyMCwxMCBAQCBjb25zdCBU eXBlUHRyICpQcm9qTm9kZTo6YWRyX3R5cGUoKSBjb25zdCB7CisgICBpZiAoYm90dG9tX3R5cGUo KSA9PSBUeXBlOjpNRU1PUlkpIHsKKyAgICAgLy8gaW4oMCkgbWlnaHQgYmUgYSBuYXJyb3cgTWVt QmFyOyBvdGhlcndpc2Ugd2Ugd2lsbCByZXBvcnQgVHlwZVB0cjo6Qk9UVE9NCisgICAgIE5vZGUq IGN0cmwgPSBpbigwKTsKKysgICAgaWYgKGN0cmwtPk9wY29kZSgpID09IE9wX1R1cGxlKSB7Cisr ICAgICAgLy8gSnVtcGluZyBvdmVyIFR1cGxlczogdGhlIGktdGggcHJvamVjdGlvbiBvZiBhIFR1 cGxlIGlzIHRoZSBpLXRoIGlucHV0IG9mIHRoZSBUdXBsZS4KKysgICAgICBjdHJsID0gY3RybC0+ aW4oX2Nvbik7CisrICAgIH0KKyAgICAgaWYgKGN0cmwgPT0gbnVsbHB0cikgIHJldHVybiBudWxs cHRyOyAvLyBub2RlIGlzIGRlYWQKKyAgICAgY29uc3QgVHlwZVB0ciogYWRyX3R5cGUgPSBjdHJs LT5hZHJfdHlwZSgpOworICAgICAjaWZkZWYgQVNTRVJUCitAQCAtMTYzLDYgKzE2NywxNSBAQCB2 b2lkIFByb2pOb2RlOjpjaGVja19jb24oKSBjb25zdCB7CisgICBhc3NlcnQoX2NvbiA8IHQtPmlz X3R1cGxlKCktPmNudCgpLCAiUHJvak5vZGU6Ol9jb24gbXVzdCBiZSBpbiByYW5nZSIpOworIH0K KyAKKysvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUlkZW50aXR5LS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrTm9kZSogUHJvak5vZGU6OklkZW50aXR5KFBo YXNlR1ZOKiBwaGFzZSkgeworKyAgaWYgKGluKDApICE9IG51bGxwdHIgJiYgaW4oMCktPk9wY29k ZSgpID09IE9wX1R1cGxlKSB7CisrICAgIC8vIEp1bXBpbmcgb3ZlciBUdXBsZXM6IHRoZSBpLXRo IHByb2plY3Rpb24gb2YgYSBUdXBsZSBpcyB0aGUgaS10aCBpbnB1dCBvZiB0aGUgVHVwbGUuCisr ICAgIHJldHVybiBpbigwKS0+aW4oX2Nvbik7CisrICB9CisrICByZXR1cm4gdGhpczsKKyt9Cisr CisgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WYWx1ZS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGNvbnN0IFR5cGUqIFByb2pOb2RlOjpWYWx1ZShQ aGFzZUdWTiogcGhhc2UpIGNvbnN0IHsKKyAgIGlmIChpbigwKSA9PSBudWxscHRyKSByZXR1cm4g VHlwZTo6VE9QOworZGlmZiAtLWdpdCBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vbXVsdG5vZGUu aHBwIGIvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9tdWx0bm9kZS5ocHAKK2luZGV4IGRmZjJjYWVk MzhkLi44MzRkY2ZkY2E2ZCAxMDA2NDQKKy0tLSBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vbXVs dG5vZGUuaHBwCisrKysgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL211bHRub2RlLmhwcAorQEAg LTgyLDYgKzgyLDcgQEAgY2xhc3MgUHJvak5vZGUgOiBwdWJsaWMgTm9kZSB7CisgICB2aXJ0dWFs IGNvbnN0IFR5cGUgKmJvdHRvbV90eXBlKCkgY29uc3Q7CisgICB2aXJ0dWFsIGNvbnN0IFR5cGVQ dHIgKmFkcl90eXBlKCkgY29uc3Q7CisgICB2aXJ0dWFsIGJvb2wgcGlubmVkKCkgY29uc3Q7Cisr ICB2aXJ0dWFsIE5vZGUqIElkZW50aXR5KFBoYXNlR1ZOKiBwaGFzZSk7CisgICB2aXJ0dWFsIGNv bnN0IFR5cGUqIFZhbHVlKFBoYXNlR1ZOKiBwaGFzZSkgY29uc3Q7CisgICB2aXJ0dWFsIHVpbnQg aWRlYWxfcmVnKCkgY29uc3Q7CisgICB2aXJ0dWFsIGNvbnN0IFJlZ01hc2sgJm91dF9SZWdNYXNr KCkgY29uc3Q7CitAQCAtMTA1LDQgKzEwNiw0OSBAQCBjbGFzcyBQcm9qTm9kZSA6IHB1YmxpYyBO b2RlIHsKKyAgIFByb2pOb2RlKiBvdGhlcl9pZl9wcm9qKCkgY29uc3Q7CisgfTsKKyAKKysvKiBU dXBsZXMgYXJlIHVzZWQgdG8gYXZvaWQgbWFudWFsIGdyYXBoIHN1cmdlcnkuIFdoZW4gYSBub2Rl IHdpdGggUHJvaiBvdXRwdXRzIChzdWNoIGFzIGEgY2FsbCkKKysgKiBtdXN0IGJlIHJlbW92ZWQg YW5kIGl0cyBvdXB1dHMgcmVwbGFjZWQgYnkgaXRzIGlucHV0LCBvciBzb21lIG90aGVyIHZhbHVl LCB3ZSBjYW4gbWFrZSBpdHMKKysgKiA6OklkZWFsIHJldHVybiBhIHR1cGxlIG9mIHdoYXQgd2Ug d2FudCBmb3IgZWFjaCBvdXRwdXQ6IHRoZSA6OklkZW50aXR5IG9mIG91dHB1dCBQcm9qIHdpbGwK KysgKiB0YWtlIGNhcmUgdG8ganVtcCBvdmVyIHRoZSBUdXBsZSBhbmQgZGlyZWN0bHkgcGljayB1 cCB0aGUgcmlnaHQgaW5wdXQgb2YgdGhlIFR1cGxlLgorKyAqCisrICogRm9yIGluc3RhbmNlLCBp ZiBhIGZ1bmN0aW9uIGNhbGwgaXMgcHJvdmVuIHRvIGhhdmUgbm8gc2lkZSBlZmZlY3QgYW5kIHJl dHVybiB0aGUgY29uc3RhbnQgMCwKKysgKiB3ZSBjYW4gcmVwbGFjZSBpdCB3aXRoIHRoZSA2LXR1 cGxlOgorKyAqIChjb250cm9sIGlucHV0LCBJTyBpbnB1dCwgbWVtb3J5IGlucHV0LCBmcmFtZSBw dHIgaW5wdXQsIHJldHVybiBhZGRyIGlucHV0LCBDb246MCkKKysgKiBhbGwgdGhlIG91dHB1dCBw cm9qZWN0aW9ucyB3aWxsIHBpY2sgdXAgdGhlIGlucHV0IG9mIHRoZSBub3cgZ29uZSBjYWxsLCBl eGNlcHQgZm9yIHRoZSByZXN1bHQKKysgKiBwcm9qZWN0aW9uIHRoYXQgaXMgcmVwbGFjZWQgYnkg MC4KKysgKgorKyAqIFVzaW5nIFR1cGxlTm9kZSBhdm9pZCBtYW51YWwgZ3JhcGggc3VyZ2VyeSBh bmQgbGVhdmUgdGhhdCB0byBvdXIgZXhwZXJ0IHN1cmdlb246IElHVk4uCisrICogU2luY2UgdGhl IHVzZXIgb2YgYSBUdXBsZSBhcmUgZXhwZWN0ZWQgdG8gYmUgUHJvaiwgd2hlbiBjcmVhdGluZyBh IHR1cGxlIGR1cmluZyBpZGVhbGl6YXRpb24sCisrICogdGhlIG91dHB1dCBQcm9qIHNob3VsZCBi ZSBlbnF1ZXVlZCBmb3IgSUdWTiBpbW1lZGlhdGVseSBhZnRlciwgYW5kIHRoZSB0dXBsZSBzaG91 bGQgbm90IHN1cnZpdmUKKysgKiBhZnRlciB0aGUgY3VycmVudCBJR1ZOLgorKyAqLworK2NsYXNz IFR1cGxlTm9kZSA6IHB1YmxpYyBNdWx0aU5vZGUgeworKyAgY29uc3QgVHlwZVR1cGxlKiBfdGY7 CisrCisrICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gTk4+CisrICBzdGF0aWMgdm9pZCBtYWtlX2hl bHBlcihUdXBsZU5vZGUqIHRuLCB1aW50IGksIE5vZGUqIG5vZGUsIE5OLi4uIG5uKSB7CisrICAg IHRuLT5zZXRfcmVxKGksIG5vZGUpOworKyAgICBtYWtlX2hlbHBlcih0biwgaSArIDEsIG5uLi4u KTsKKysgIH0KKysKKysgIHN0YXRpYyB2b2lkIG1ha2VfaGVscGVyKFR1cGxlTm9kZSosIHVpbnQp IHt9CisrCisrcHVibGljOgorKyAgVHVwbGVOb2RlKGNvbnN0IFR5cGVUdXBsZSogdGYpIDogTXVs dGlOb2RlKHRmLT5jbnQoKSksIF90Zih0Zikge30KKysKKysgIGludCBPcGNvZGUoKSBjb25zdCBv dmVycmlkZTsKKysgIGNvbnN0IFR5cGUqIGJvdHRvbV90eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy ZXR1cm4gX3RmOyB9CisrCisrICAvKiBHaXZlIGFzIG1hbnkgYE5vZGUqYCBhcyB5b3Ugd2FudCBp biB0aGUgYG5uYCBwYWNrOgorKyAgICogVHVwbGVOb2RlOjptYWtlKHRmLCBpbnB1dDEpCisrICAg KiBUdXBsZU5vZGU6Om1ha2UodGYsIGlucHV0MSwgaW5wdXQyLCBpbnB1dDMsIGlucHV0NCkKKysg ICAqLworKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIE5OPgorKyAgc3RhdGljIFR1cGxlTm9kZSog bWFrZShjb25zdCBUeXBlVHVwbGUqIHRmLCBOTi4uLiBubikgeworKyAgICBUdXBsZU5vZGUqIHRu ID0gbmV3IFR1cGxlTm9kZSh0Zik7CisrICAgIG1ha2VfaGVscGVyKHRuLCAwLCBubi4uLik7Cisr ICAgIHJldHVybiB0bjsKKysgIH0KKyt9OworKworICNlbmRpZiAvLyBTSEFSRV9PUFRPX01VTFRO T0RFX0hQUAorZGlmZiAtLWdpdCBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vbm9kZS5jcHAgYi9z cmMvaG90c3BvdC9zaGFyZS9vcHRvL25vZGUuY3BwCitpbmRleCA4ZjZjNjdjMTZmNS4uNWVjYzAz ODk1NGQgMTAwNjQ0CistLS0gYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL25vZGUuY3BwCisrKysg Yi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL25vZGUuY3BwCitAQCAtMjk0NiwyMyArMjk0NiwxMyBA QCBib29sIE5vZGU6OmlzX2RlYWRfbG9vcF9zYWZlKCkgY29uc3QgeworIGJvb2wgTm9kZTo6aXNf ZGl2X29yX21vZChCYXNpY1R5cGUgYnQpIGNvbnN0IHsgcmV0dXJuIE9wY29kZSgpID09IE9wX0Rp dihidCkgfHwgT3Bjb2RlKCkgPT0gT3BfTW9kKGJ0KSB8fAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wY29kZSgpID09IE9wX1VEaXYoYnQp IHx8IE9wY29kZSgpID09IE9wX1VNb2QoYnQpOyB9CisgCistYm9vbCBOb2RlOjppc19wdXJlX2Z1 bmN0aW9uKCkgY29uc3QgeworLSAgc3dpdGNoIChPcGNvZGUoKSkgeworLSAgY2FzZSBPcF9Nb2RE OgorLSAgY2FzZSBPcF9Nb2RGOgorLSAgICByZXR1cm4gdHJ1ZTsKKy0gIGRlZmF1bHQ6CistICAg IHJldHVybiBmYWxzZTsKKy0gIH0KKy19CistCisgLy8gYG1heWJlX3B1cmVfZnVuY3Rpb25gIGlz IGFzc3VtZWQgdG8gYmUgdGhlIGlucHV0IG9mIGB0aGlzYC4gVGhpcyBpcyBhIGJpdCByZWR1bmRh bnQsCisgLy8gYnV0IHdlIGFscmVhZHkgaGF2ZSBhbmQgbmVlZCBtYXliZV9wdXJlX2Z1bmN0aW9u IGluIGFsbCB0aGUgY2FsbCBzaXRlcywgc28KKyAvLyBpdCBtYWtlcyBpdCBvYnZpb3VzIHRoYXQg dGhlIGBtYXliZV9wdXJlX2Z1bmN0aW9uYCBpcyB0aGUgc2FtZSBub2RlIGFzIGluIHRoZSBjYWxs ZXIsCisgLy8gd2hpbGUgaXQgdGFrZXMgbW9yZSB0aGlua2luZyB0byByZWFsaXplIHRoYXQgYSBs b2NhbGx5IGNvbXB1dGVkIGluKDApIG11c3QgYmUgZXF1YWwgdG8KKyAvLyB0aGUgbG9jYWwgaW4g dGhlIGNhbGxlci4KKyBib29sIE5vZGU6OmlzX2RhdGFfcHJval9vZl9wdXJlX2Z1bmN0aW9uKGNv bnN0IE5vZGUqIG1heWJlX3B1cmVfZnVuY3Rpb24pIGNvbnN0IHsKKy0gIHJldHVybiBPcGNvZGUo KSA9PSBPcF9Qcm9qICYmIGFzX1Byb2ooKS0+X2NvbiA9PSBUeXBlRnVuYzo6UGFybXMgJiYgbWF5 YmVfcHVyZV9mdW5jdGlvbi0+aXNfcHVyZV9mdW5jdGlvbigpOworKyAgcmV0dXJuIE9wY29kZSgp ID09IE9wX1Byb2ogJiYgYXNfUHJvaigpLT5fY29uID09IFR5cGVGdW5jOjpQYXJtcyAmJiBtYXli ZV9wdXJlX2Z1bmN0aW9uLT5pc19DYWxsTGVhZlB1cmUoKTsKKyB9CisgCisgLy89PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorZGlmZiAtLWdpdCBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vbm9kZS5ocHAg Yi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL25vZGUuaHBwCitpbmRleCAyYmJiMTA4NzlmNS4uZGMw YWM0NzRjNGIgMTAwNjQ0CistLS0gYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL25vZGUuaHBwCisr KysgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL25vZGUuaHBwCitAQCAtNTQsNiArNTQsNyBAQCBj bGFzcyBDYWxsRHluYW1pY0phdmFOb2RlOworIGNsYXNzIENhbGxKYXZhTm9kZTsKKyBjbGFzcyBD YWxsTGVhZk5vZGU7CisgY2xhc3MgQ2FsbExlYWZOb0ZQTm9kZTsKKytjbGFzcyBDYWxsTGVhZlB1 cmVOb2RlOworIGNsYXNzIENhbGxOb2RlOworIGNsYXNzIENhbGxSdW50aW1lTm9kZTsKKyBjbGFz cyBDYWxsU3RhdGljSmF2YU5vZGU7CitAQCAtNjczLDYgKzY3NCw3IEBAIGNsYXNzIE5vZGUgewor ICAgICAgICAgICBERUZJTkVfQ0xBU1NfSUQoQ2FsbFJ1bnRpbWUsICAgICAgQ2FsbCwgMSkKKyAg ICAgICAgICAgICBERUZJTkVfQ0xBU1NfSUQoQ2FsbExlYWYsICAgICAgICAgQ2FsbFJ1bnRpbWUs IDApCisgICAgICAgICAgICAgICBERUZJTkVfQ0xBU1NfSUQoQ2FsbExlYWZOb0ZQLCAgICAgQ2Fs bExlYWYsIDApCisrICAgICAgICAgICAgICBERUZJTkVfQ0xBU1NfSUQoQ2FsbExlYWZQdXJlLCAg ICAgQ2FsbExlYWYsIDEpCisgICAgICAgICAgIERFRklORV9DTEFTU19JRChBbGxvY2F0ZSwgICAg ICAgICBDYWxsLCAyKQorICAgICAgICAgICAgIERFRklORV9DTEFTU19JRChBbGxvY2F0ZUFycmF5 LCAgICBBbGxvY2F0ZSwgMCkKKyAgICAgICAgICAgREVGSU5FX0NMQVNTX0lEKEFic3RyYWN0TG9j aywgICAgIENhbGwsIDMpCitAQCAtOTA3LDYgKzkwOSw3IEBAIGNsYXNzIE5vZGUgeworICAgREVG SU5FX0NMQVNTX1FVRVJZKENhbGxKYXZhKQorICAgREVGSU5FX0NMQVNTX1FVRVJZKENhbGxMZWFm KQorICAgREVGSU5FX0NMQVNTX1FVRVJZKENhbGxMZWFmTm9GUCkKKysgIERFRklORV9DTEFTU19R VUVSWShDYWxsTGVhZlB1cmUpCisgICBERUZJTkVfQ0xBU1NfUVVFUlkoQ2FsbFJ1bnRpbWUpCisg ICBERUZJTkVfQ0xBU1NfUVVFUlkoQ2FsbFN0YXRpY0phdmEpCisgICBERUZJTkVfQ0xBU1NfUVVF UlkoQ2F0Y2gpCitAQCAtMTI4OSw4ICsxMjkyLDYgQEAgY2xhc3MgTm9kZSB7CisgCisgICBib29s IGlzX2Rpdl9vcl9tb2QoQmFzaWNUeXBlIGJ0KSBjb25zdDsKKyAKKy0gIGJvb2wgaXNfcHVyZV9m dW5jdGlvbigpIGNvbnN0OworLQorICAgYm9vbCBpc19kYXRhX3Byb2pfb2ZfcHVyZV9mdW5jdGlv bihjb25zdCBOb2RlKiBtYXliZV9wdXJlX2Z1bmN0aW9uKSBjb25zdDsKKyAKKyAvLy0tLS0tLS0t LS0tLS0tLS0tIFByaW50aW5nLCBldGMKK2RpZmYgLS1naXQgYS9zcmMvaG90c3BvdC9zaGFyZS9v cHRvL3BhcnNlMi5jcHAgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL3BhcnNlMi5jcHAKK2luZGV4 IDFhNGMzYzkxYzRmLi4wNGI2ZTQ5YjYyMCAxMDA2NDQKKy0tLSBhL3NyYy9ob3RzcG90L3NoYXJl L29wdG8vcGFyc2UyLmNwcAorKysrIGIvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9wYXJzZTIuY3Bw CitAQCAtMTA5NywxMSArMTA5NywxMSBAQCB2b2lkIFBhcnNlOjpqdW1wX3N3aXRjaF9yYW5nZXMo Tm9kZSoga2V5X3ZhbCwgU3dpdGNoUmFuZ2UgKmxvLCBTd2l0Y2hSYW5nZSAqaGksCisgCisgTm9k ZSogUGFyc2U6OmZsb2F0aW5nX3BvaW50X21vZChOb2RlKiBhLCBOb2RlKiBiLCBCYXNpY1R5cGUg dHlwZSkgeworICAgYXNzZXJ0KHR5cGUgPT0gQmFzaWNUeXBlOjpUX0ZMT0FUIHx8IHR5cGUgPT0g QmFzaWNUeXBlOjpUX0RPVUJMRSwgIm9ubHkgZmxvYXQgYW5kIGRvdWJsZSBhcmUgZmxvYXRpbmcg cG9pbnRzIik7CistICBDYWxsTm9kZSogbW9kID0gdHlwZSA9PSBCYXNpY1R5cGU6OlRfRE9VQkxF ID8gc3RhdGljX2Nhc3Q8Q2FsbE5vZGUqPihuZXcgTW9kRE5vZGUoQywgYSwgYikpIDogbmV3IE1v ZEZOb2RlKEMsIGEsIGIpOworKyAgQ2FsbExlYWZQdXJlTm9kZSogbW9kID0gdHlwZSA9PSBCYXNp Y1R5cGU6OlRfRE9VQkxFID8gc3RhdGljX2Nhc3Q8Q2FsbExlYWZQdXJlTm9kZSo+KG5ldyBNb2RE Tm9kZShDLCBhLCBiKSkgOiBuZXcgTW9kRk5vZGUoQywgYSwgYik7CisgCistICBOb2RlKiBwcmV2 X21lbSA9IHNldF9wcmVkZWZpbmVkX2lucHV0X2Zvcl9ydW50aW1lX2NhbGwobW9kKTsKKy0gIG1v ZCA9IF9ndm4udHJhbnNmb3JtKG1vZCktPmFzX0NhbGwoKTsKKy0gIHNldF9wcmVkZWZpbmVkX291 dHB1dF9mb3JfcnVudGltZV9jYWxsKG1vZCwgcHJldl9tZW0sIFR5cGVSYXdQdHI6OkJPVFRPTSk7 CisrICBzZXRfcHJlZGVmaW5lZF9pbnB1dF9mb3JfcnVudGltZV9jYWxsKG1vZCk7CisrICBtb2Qg PSBfZ3ZuLnRyYW5zZm9ybShtb2QpLT5hc19DYWxsTGVhZlB1cmUoKTsKKysgIHNldF9wcmVkZWZp bmVkX291dHB1dF9mb3JfcnVudGltZV9jYWxsKG1vZCk7CisgICBOb2RlKiByZXN1bHQgPSBfZ3Zu LnRyYW5zZm9ybShuZXcgUHJvak5vZGUobW9kLCBUeXBlRnVuYzo6UGFybXMgKyAwKSk7CisgICBy ZWNvcmRfZm9yX2lndm4obW9kKTsKKyAgIHJldHVybiByZXN1bHQ7CistLSAKKzIuNTMuMAorCgpk aWZmIC0tZ2l0IGEvamRrODM3NTI5NC1oYW5kbGUtRU9QTk9UU1VQUC1pbi1jb3B5aW5nLnBhdGNo IGIvamRrODM3NTI5NC1oYW5kbGUtRU9QTk9UU1VQUC1pbi1jb3B5aW5nLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTgwNzZhLi4wMDAwMDAwCi0tLSBhL2pkazgzNzUyOTQt aGFuZGxlLUVPUE5PVFNVUFAtaW4tY29weWluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYz ICswLDAgQEAKLUZyb20gZGJiZGMxZGZmZDEwNjA4MTk1NDg3ZmExMzllNzdjNGE5MGM4MDY1OCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9KaT1DNT05OT1DMz1BRD0y MFZhbj1DND05Qms/PSA8anZhbmVrQG9wZW5qZGsub3JnPgotRGF0ZTogV2VkLCAxNSBBcHIgMjAy NiAxMjo1NDo0OSArMDAwMAotU3ViamVjdDogW1BBVENIXSA4Mzc1Mjk0OiAoZnMpIEZpbGVzLmNv cHkgY2FuIGZhaWwgd2l0aCBFT1BOT1RTVVBQIHdoZW4KLSBjb3B5X2ZpbGVfcmFuZ2Ugbm90IHN1 cHBvcnRlZAotCi1SZXZpZXdlZC1ieTogYW5kcmV3Ci1CYWNrcG9ydC1vZjogMzBjZGEwMDAxMDg4 OGI2ZTlhMmJmOGNkZWFlZGJiM2ViNGI2YTIyMgotLS0tCi0gc3JjL2phdmEuYmFzZS9saW51eC9u YXRpdmUvbGlibmlvL2NoL0ZpbGVEaXNwYXRjaGVySW1wbC5jICAgIHwgNSArKystLQotIHNyYy9q YXZhLmJhc2UvbGludXgvbmF0aXZlL2xpYm5pby9mcy9MaW51eE5hdGl2ZURpc3BhdGNoZXIuYyB8 IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p Ci0KLWRpZmYgLS1naXQgYS9zcmMvamF2YS5iYXNlL2xpbnV4L25hdGl2ZS9saWJuaW8vY2gvRmls ZURpc3BhdGNoZXJJbXBsLmMgYi9zcmMvamF2YS5iYXNlL2xpbnV4L25hdGl2ZS9saWJuaW8vY2gv RmlsZURpc3BhdGNoZXJJbXBsLmMKLWluZGV4IGVmYmQwY2E1Njg0Li41NGQ2NDBiMDNhNCAxMDA2 NDQKLS0tLSBhL3NyYy9qYXZhLmJhc2UvbGludXgvbmF0aXZlL2xpYm5pby9jaC9GaWxlRGlzcGF0 Y2hlckltcGwuYwotKysrIGIvc3JjL2phdmEuYmFzZS9saW51eC9uYXRpdmUvbGlibmlvL2NoL0Zp bGVEaXNwYXRjaGVySW1wbC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKgotLSAqIENvcHlyaWdodCAo YykgMjAwMCwgMjAyNCwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMjYsIE9yYWNsZSBhbmQvb3IgaXRz IGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gICogRE8gTk9UIEFMVEVSIE9SIFJF TU9WRSBDT1BZUklHSFQgTk9USUNFUyBPUiBUSElTIEZJTEUgSEVBREVSLgotICAqCi0gICogVGhp cyBjb2RlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkgaXQKLUBAIC02Myw3ICs2Myw3IEBAIEphdmFfc3VuX25pb19jaF9GaWxlRGlzcGF0Y2hl ckltcGxfdHJhbnNmZXJGcm9tMChKTklFbnYgKmVudiwgam9iamVjdCB0aGlzLAotICAgICBpZiAo biA8IDApIHsKLSAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pCi0gICAgICAgICAgICAgcmV0 dXJuIElPU19VTkFWQUlMQUJMRTsKLS0gICAgICAgIGlmIChlcnJubyA9PSBFTk9TWVMpCi0rICAg ICAgICBpZiAoZXJybm8gPT0gRU5PU1lTIHx8IGVycm5vID09IEVPUE5PVFNVUFApCi0gICAgICAg ICAgICAgcmV0dXJuIElPU19VTlNVUFBPUlRFRF9DQVNFOwotICAgICAgICAgaWYgKChlcnJubyA9 PSBFQkFERiB8fCBlcnJubyA9PSBFSU5WQUwgfHwgZXJybm8gPT0gRVhERVYpICYmCi0gICAgICAg ICAgICAgKChzc2l6ZV90KWNvdW50ID49IDApKQotQEAgLTEwMyw2ICsxMDMsNyBAQCBKYXZhX3N1 bl9uaW9fY2hfRmlsZURpc3BhdGNoZXJJbXBsX3RyYW5zZmVyVG8wKEpOSUVudiAqZW52LCBqb2Jq ZWN0IHRoaXMsCi0gICAgICAgICAgICAgICAgIGNhc2UgRUlOVkFMOgotICAgICAgICAgICAgICAg ICBjYXNlIEVOT1NZUzoKLSAgICAgICAgICAgICAgICAgY2FzZSBFWERFVjoKLSsgICAgICAgICAg ICAgICAgY2FzZSBFT1BOT1RTVVBQOgotICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIGFu ZCB0cnkgc2VuZGZpbGUoKQotICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg ICAgICAgIGRlZmF1bHQ6Ci1kaWZmIC0tZ2l0IGEvc3JjL2phdmEuYmFzZS9saW51eC9uYXRpdmUv bGlibmlvL2ZzL0xpbnV4TmF0aXZlRGlzcGF0Y2hlci5jIGIvc3JjL2phdmEuYmFzZS9saW51eC9u YXRpdmUvbGlibmlvL2ZzL0xpbnV4TmF0aXZlRGlzcGF0Y2hlci5jCi1pbmRleCBjOTBlOTlkZGEw Ny4uNDY3NzQxMWIwYmEgMTAwNjQ0Ci0tLS0gYS9zcmMvamF2YS5iYXNlL2xpbnV4L25hdGl2ZS9s aWJuaW8vZnMvTGludXhOYXRpdmVEaXNwYXRjaGVyLmMKLSsrKyBiL3NyYy9qYXZhLmJhc2UvbGlu dXgvbmF0aXZlL2xpYm5pby9mcy9MaW51eE5hdGl2ZURpc3BhdGNoZXIuYwotQEAgLTEsNSArMSw1 IEBACi0gLyoKLS0gKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMjQsIE9yYWNsZSBhbmQvb3IgaXRz IGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICogQ29weXJpZ2h0IChjKSAyMDA4 LCAyMDI2LCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVk LgotICAqIERPIE5PVCBBTFRFUiBPUiBSRU1PVkUgQ09QWVJJR0hUIE5PVElDRVMgT1IgVEhJUyBG SUxFIEhFQURFUi4KLSAgKgotICAqIFRoaXMgY29kZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci1AQCAtMTkzLDYgKzE5Myw3IEBAIEph dmFfc3VuX25pb19mc19MaW51eE5hdGl2ZURpc3BhdGNoZXJfZGlyZWN0Q29weTAKLSAgICAgICAg ICAgICAgICAgICAgIGNhc2UgRUlOVkFMOgotICAgICAgICAgICAgICAgICAgICAgY2FzZSBFTk9T WVM6Ci0gICAgICAgICAgICAgICAgICAgICBjYXNlIEVYREVWOgotKyAgICAgICAgICAgICAgICAg ICAgY2FzZSBFT1BOT1RTVVBQOgotICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZSBh bmQgdHJ5IHNlbmRmaWxlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg ICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0tLSAKLTIuNTIuMAotCgpkaWZmIC0tZ2l0IGEvamRr ODM3ODcxMy1jMl9taXNzaW5nX3Bvd19jb25zdGFudF9mb2xkaW5nLnBhdGNoIGIvamRrODM3ODcx My1jMl9taXNzaW5nX3Bvd19jb25zdGFudF9mb2xkaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjZlNmJiMTEKLS0tIC9kZXYvbnVsbAorKysgYi9qZGs4Mzc4NzEz LWMyX21pc3NpbmdfcG93X2NvbnN0YW50X2ZvbGRpbmcucGF0Y2gKQEAgLTAsMCArMSw2MjYgQEAK K0Zyb20gMWY2MWI2NzU0YjVhYmNlMDdkYjQ1ZmQzODVhMTljMmNmOTI5NmEwOCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthbmdjaGVuZyBYdSA8a3h1QHJlZGhhdC5jb20+CitEYXRl OiBNb24sIDI3IEFwciAyMDI2IDEwOjE0OjM5IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBC YWNrcG9ydCA3ZjYzMWVhOTU4ZTMwMjQ2YjkyN2YzNTI0ZjBmYmYzNzMzNDQyMmI5CisKKy0tLQor IHNyYy9ob3RzcG90L3NoYXJlL29wdG8vY2FsbG5vZGUuY3BwICAgICAgICAgICB8IDE3NSArKysr KysrKysrKysrKworIHNyYy9ob3RzcG90L3NoYXJlL29wdG8vY2FsbG5vZGUuaHBwICAgICAgICAg ICB8ICAxNyArKworIHNyYy9ob3RzcG90L3NoYXJlL29wdG8vY2xhc3Nlcy5ocHAgICAgICAgICAg ICB8ICAgMSArCisgc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9saWJyYXJ5X2NhbGwuY3BwICAgICAg IHwgIDYyICstLS0tCisgc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9tYWNyby5jcHAgICAgICAgICAg ICAgIHwgIDE5ICstCisgLi4uL2ludHJpbnNpY3MvbWF0aC9Qb3dETm9kZVRlc3RzLmphdmEgICAg ICAgIHwgMjE4ICsrKysrKysrKysrKysrKysrKworIC4uLi9jb21waWxlci9saWIvaXJfZnJhbWV3 b3JrL0lSTm9kZS5qYXZhICAgICB8ICAxMSArCisgNyBmaWxlcyBjaGFuZ2VkLCA0MzcgaW5zZXJ0 aW9ucygrKSwgNjYgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3QvaG90c3Bv dC9qdHJlZy9jb21waWxlci9pbnRyaW5zaWNzL21hdGgvUG93RE5vZGVUZXN0cy5qYXZhCisKK2Rp ZmYgLS1naXQgYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NhbGxub2RlLmNwcCBiL3NyYy9ob3Rz cG90L3NoYXJlL29wdG8vY2FsbG5vZGUuY3BwCitpbmRleCBmYzRiMGMzNWRmZi4uY2I2Y2MyMDgy YjMgMTAwNjQ0CistLS0gYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NhbGxub2RlLmNwcAorKysr IGIvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jYWxsbm9kZS5jcHAKK0BAIC00Miw2ICs0Miw3IEBA CisgI2luY2x1ZGUgIm9wdG8vcm9vdG5vZGUuaHBwIgorICNpbmNsdWRlICJvcHRvL3J1bnRpbWUu aHBwIgorICNpbmNsdWRlICJydW50aW1lL3NoYXJlZFJ1bnRpbWUuaHBwIgorKyNpbmNsdWRlICJy dW50aW1lL3N0dWJSb3V0aW5lcy5ocHAiCisgI2luY2x1ZGUgInV0aWxpdGllcy9wb3dlck9mVHdv LmhwcCIKKyAjaW5jbHVkZSAiY29kZS92bXJlZy5ocHAiCisgCitAQCAtMTM1NCw2ICsxMzU1LDI1 IEBAIFR1cGxlTm9kZSogQ2FsbExlYWZQdXJlTm9kZTo6bWFrZV90dXBsZV9vZl9pbnB1dF9zdGF0 ZV9hbmRfdG9wX3JldHVybl92YWx1ZXMoY29uCisgICByZXR1cm4gdHVwbGU7CisgfQorIAorK0Nh bGxMZWFmUHVyZU5vZGUqIENhbGxMZWFmUHVyZU5vZGU6OmlubGluZV9jYWxsX2xlYWZfcHVyZV9u b2RlKE5vZGUqIGNvbnRyb2wpIGNvbnN0IHsKKysgIE5vZGUqIHRvcCA9IENvbXBpbGU6OmN1cnJl bnQoKS0+dG9wKCk7CisrICBpZiAoY29udHJvbCA9PSBudWxscHRyKSB7CisrICAgIGNvbnRyb2wg PSBpbihUeXBlRnVuYzo6Q29udHJvbCk7CisrICB9CisrCisrICBDYWxsTGVhZlB1cmVOb2RlKiBj YWxsID0gbmV3IENhbGxMZWFmUHVyZU5vZGUodGYoKSwgZW50cnlfcG9pbnQoKSwgX25hbWUsIG51 bGxwdHIpOworKyAgY2FsbC0+aW5pdF9yZXEoVHlwZUZ1bmM6OkNvbnRyb2wsIGNvbnRyb2wpOwor KyAgY2FsbC0+aW5pdF9yZXEoVHlwZUZ1bmM6OklfTywgdG9wKTsKKysgIGNhbGwtPmluaXRfcmVx KFR5cGVGdW5jOjpNZW1vcnksIHRvcCk7CisrICBjYWxsLT5pbml0X3JlcShUeXBlRnVuYzo6UmV0 dXJuQWRyLCB0b3ApOworKyAgY2FsbC0+aW5pdF9yZXEoVHlwZUZ1bmM6OkZyYW1lUHRyLCB0b3Ap OworKyAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB0ZigpLT5kb21haW4oKS0+Y250KCkg LSBUeXBlRnVuYzo6UGFybXM7IGkrKykgeworKyAgICBjYWxsLT5pbml0X3JlcShUeXBlRnVuYzo6 UGFybXMgKyBpLCBpbihUeXBlRnVuYzo6UGFybXMgKyBpKSk7CisrICB9CisrCisrICByZXR1cm4g Y2FsbDsKKyt9CisrCisgTm9kZSogQ2FsbExlYWZQdXJlTm9kZTo6SWRlYWwoUGhhc2VHVk4qIHBo YXNlLCBib29sIGNhbl9yZXNoYXBlKSB7CisgICBpZiAoaXNfZGVhZCgpKSB7CisgICAgIHJldHVy biBudWxscHRyOworQEAgLTI0MjQsMyArMjQ0NCwxNTggQEAgYm9vbCBDYWxsTm9kZTo6bWF5X21v ZGlmeV9hcnJheWNvcHlfaGVscGVyKGNvbnN0IFR5cGVPb3BQdHIqIGRlc3RfdCwgY29uc3QgVHlw ZU8KKyAKKyAgIHJldHVybiB0cnVlOworIH0KKysKKytQb3dETm9kZTo6UG93RE5vZGUoQ29tcGls ZSogQywgTm9kZSogYmFzZSwgTm9kZSogZXhwKQorKyAgICA6IENhbGxMZWFmUHVyZU5vZGUoCisr ICAgICAgICBPcHRvUnVudGltZTo6TWF0aF9ERF9EX1R5cGUoKSwKKysgICAgICAgIFN0dWJSb3V0 aW5lczo6ZHBvdygpICE9IG51bGxwdHIgPyBTdHViUm91dGluZXM6OmRwb3coKSA6IENBU1RfRlJP TV9GTl9QVFIoYWRkcmVzcywgU2hhcmVkUnVudGltZTo6ZHBvdyksCisrICAgICAgICAicG93IiwK KysgICAgICAgIG51bGxwdHIpIHsKKysgIGFkZF9mbGFnKEZsYWdfaXNfbWFjcm8pOworKyAgQy0+ YWRkX21hY3JvX25vZGUodGhpcyk7CisrCisrICBpbml0X3JlcShUeXBlRnVuYzo6UGFybXMgKyAw LCBiYXNlKTsKKysgIGluaXRfcmVxKFR5cGVGdW5jOjpQYXJtcyArIDEsIEMtPnRvcCgpKTsgIC8v IGRvdWJsZSBzbG90IHBhZGRpbmcKKysgIGluaXRfcmVxKFR5cGVGdW5jOjpQYXJtcyArIDIsIGV4 cCk7CisrICBpbml0X3JlcShUeXBlRnVuYzo6UGFybXMgKyAzLCBDLT50b3AoKSk7ICAvLyBkb3Vi bGUgc2xvdCBwYWRkaW5nCisrfQorKworK2NvbnN0IFR5cGUqIFBvd0ROb2RlOjpWYWx1ZShQaGFz ZUdWTiogcGhhc2UpIGNvbnN0IHsKKysgIGNvbnN0IFR5cGUqIHRfYmFzZSA9IHBoYXNlLT50eXBl KGJhc2UoKSk7CisrICBjb25zdCBUeXBlKiB0X2V4cCAgPSBwaGFzZS0+dHlwZShleHAoKSk7Cisr CisrICBpZiAodF9iYXNlID09IFR5cGU6OlRPUCB8fCB0X2V4cCA9PSBUeXBlOjpUT1ApIHsKKysg ICAgcmV0dXJuIFR5cGU6OlRPUDsKKysgIH0KKysKKysgIGNvbnN0IFR5cGVEKiBiYXNlX2NvbiA9 IHRfYmFzZS0+aXNhX2RvdWJsZV9jb25zdGFudCgpOworKyAgY29uc3QgVHlwZUQqIGV4cF9jb24g ID0gdF9leHAtPmlzYV9kb3VibGVfY29uc3RhbnQoKTsKKysgIGNvbnN0IFR5cGVEKiByZXN1bHRf dCA9IG51bGxwdHI7CisrCisrICAvLyBjb25zdGFudCBmb2xkaW5nOiBib3RoIGlucHV0cyBhcmUg Y29uc3RhbnRzCisrICBpZiAoYmFzZV9jb24gIT0gbnVsbHB0ciAmJiBleHBfY29uICE9IG51bGxw dHIpIHsKKysgICAgcmVzdWx0X3QgPSBUeXBlRDo6bWFrZShTaGFyZWRSdW50aW1lOjpkcG93KGJh c2VfY29uLT5nZXRkKCksIGV4cF9jb24tPmdldGQoKSkpOworKyAgfQorKworKyAgLy8gU3BlY2lh bCBjYXNlcyB3aGVuIG9ubHkgdGhlIGV4cG9uZW50IGlzIGtub3duOgorKyAgaWYgKGV4cF9jb24g IT0gbnVsbHB0cikgeworKyAgICBkb3VibGUgZSA9IGV4cF9jb24tPmdldGQoKTsKKysKKysgICAg Ly8gSWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBwb3NpdGl2ZSBvciBuZWdhdGl2ZSB6ZXJvLCB0 aGVuIHRoZSByZXN1bHQgaXMgMS4wLgorKyAgICAvLyBpLmUuLCBwb3coeCwgKy8tMC4wRCkgPT4g MS4wCisrICAgIGlmIChlID09IDAuMCkgeyAvLyB0cnVlIGZvciBib3RoIC0wLjAgYW5kICswLjAK KysgICAgICByZXN1bHRfdCA9IFR5cGVEOjpPTkU7CisrICAgIH0KKysKKysgICAgLy8gSWYgdGhl IHNlY29uZCBhcmd1bWVudCBpcyBOYU4sIHRoZW4gdGhlIHJlc3VsdCBpcyBOYU4uCisrICAgIC8v IGkuZS4sIHBvdyh4LCBOYU4pID0+IE5hTgorKyAgICBpZiAoZ19pc25hbihlKSkgeworKyAgICAg IHJlc3VsdF90ID0gVHlwZUQ6Om1ha2UoTkFOKTsKKysgICAgfQorKyAgfQorKworKyAgaWYgKHJl c3VsdF90ICE9IG51bGxwdHIpIHsKKysgICAgLy8gV2UgY2FuJ3Qgc2ltcGx5IHJldHVybiBhIFR5 cGVEIGhlcmUsIGl0IG11c3QgYmUgYSB0dXBsZSB0eXBlIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBj YWxsIG5vZGVzLgorKyAgICBjb25zdCBUeXBlKiogZmllbGRzID0gVHlwZVR1cGxlOjpmaWVsZHMo Mik7CisrICAgIGZpZWxkc1tUeXBlRnVuYzo6UGFybXMgKyAwXSA9IHJlc3VsdF90OworKyAgICBm aWVsZHNbVHlwZUZ1bmM6OlBhcm1zICsgMV0gPSBUeXBlOjpIQUxGOworKyAgICByZXR1cm4gVHlw ZVR1cGxlOjptYWtlKFR5cGVGdW5jOjpQYXJtcyArIDIsIGZpZWxkcyk7CisrICB9CisrCisrICBy ZXR1cm4gdGYoKS0+cmFuZ2UoKTsKKyt9CisrCisrTm9kZSogUG93RE5vZGU6OklkZWFsKFBoYXNl R1ZOKiBwaGFzZSwgYm9vbCBjYW5fcmVzaGFwZSkgeworKyAgaWYgKCFjYW5fcmVzaGFwZSkgewor KyAgICByZXR1cm4gbnVsbHB0cjsgIC8vIHdhaXQgZm9yIGlndm4KKysgIH0KKysKKysgIFBoYXNl SXRlckdWTiogaWd2biA9IHBoYXNlLT5pc19JdGVyR1ZOKCk7CisrICBOb2RlKiBiYXNlID0gdGhp cy0+YmFzZSgpOworKyAgTm9kZSogZXhwICA9IHRoaXMtPmV4cCgpOworKworKyAgY29uc3QgVHlw ZSogdF9leHAgID0gcGhhc2UtPnR5cGUoZXhwKTsKKysgIGNvbnN0IFR5cGVEKiBleHBfY29uICA9 IHRfZXhwLT5pc2FfZG91YmxlX2NvbnN0YW50KCk7CisrCisrICAvLyBTcGVjaWFsIGNhc2VzIHdo ZW4gb25seSB0aGUgZXhwb25lbnQgaXMga25vd246CisrICBpZiAoZXhwX2NvbiAhPSBudWxscHRy KSB7CisrICAgIGRvdWJsZSBlID0gZXhwX2Nvbi0+Z2V0ZCgpOworKworKyAgICAvLyBJZiB0aGUg c2Vjb25kIGFyZ3VtZW50IGlzIDEuMCwgdGhlbiB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIGFzIHRo ZSBmaXJzdCBhcmd1bWVudC4KKysgICAgLy8gaS5lLiwgcG93KHgsIDEuMCkgPT4geAorKyAgICBp ZiAoZSA9PSAxLjApIHsKKysgICAgICByZXR1cm4gbWFrZV90dXBsZV9vZl9pbnB1dF9zdGF0ZV9h bmRfcmVzdWx0KGlndm4sIGJhc2UpOworKyAgICB9CisrCisrICAgIC8vIElmIHRoZSBzZWNvbmQg YXJndW1lbnQgaXMgMi4wLCB0aGVuIHN0cmVuZ3RoIHJlZHVjZSB0byBtdWx0aXBsaWNhdGlvbnMu CisrICAgIC8vIGkuZS4sIHBvdyh4LCAyLjApID0+IHggKiB4CisrICAgIGlmIChlID09IDIuMCkg eworKyAgICAgIE5vZGUqIG11bCA9IGlndm4tPnRyYW5zZm9ybShuZXcgTXVsRE5vZGUoYmFzZSwg YmFzZSkpOworKyAgICAgIHJldHVybiBtYWtlX3R1cGxlX29mX2lucHV0X3N0YXRlX2FuZF9yZXN1 bHQoaWd2biwgbXVsKTsKKysgICAgfQorKworKyAgICAvLyBJZiB0aGUgc2Vjb25kIGFyZ3VtZW50 IGlzIDAuNSwgdGhlIHN0cmVuZ3RoIHJlZHVjZSB0byBzcXVhcmUgcm9vdHMuCisrICAgIC8vIGku ZS4sIHBvdyh4LCAwLjUpID0+IHNxcnQoeCkgaWZmIHggPiAwCisrICAgIGlmIChlID09IDAuNSAm JiBNYXRjaGVyOjptYXRjaF9ydWxlX3N1cHBvcnRlZChPcF9TcXJ0RCkpIHsKKysgICAgICBOb2Rl KiBjdHJsID0gaW4oVHlwZUZ1bmM6OkNvbnRyb2wpOworKyAgICAgIE5vZGUqIHplcm8gPSBpZ3Zu LT56ZXJvY29uKFRfRE9VQkxFKTsKKysKKysgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIEFQSSBz cGVjcywgcG93KC0wLjAsIDAuNSkgPSAwLjAgYW5kIHNxcnQoLTAuMCkgPSAtMC4wLgorKyAgICAg IC8vIFNvIHBvdygtMC4wLCAwLjUpIHNob3VsZG4ndCBiZSByZXBsYWNlZCB3aXRoIHNxcnQoLTAu MCkuCisrICAgICAgLy8gLTAuMC8rMC4wIGFyZSBib3RoIGV4Y2x1ZGVkIHNpbmNlIGZsb2F0aW5n LXBvaW50IGNvbXBhcmlzb24gZG9lc24ndCBkaXN0aW5ndWlzaCAtMC4wIGZyb20gKzAuMC4KKysg ICAgICBOb2RlKiBjbXAgPSBpZ3ZuLT5yZWdpc3Rlcl9uZXdfbm9kZV93aXRoX29wdGltaXplcihu ZXcgQ21wRE5vZGUoYmFzZSwgemVybykpOworKyAgICAgIE5vZGUqIHRlc3QgPSBpZ3ZuLT5yZWdp c3Rlcl9uZXdfbm9kZV93aXRoX29wdGltaXplcihuZXcgQm9vbE5vZGUoY21wLCBCb29sVGVzdDo6 bGUpKTsKKysKKysgICAgICBJZk5vZGUqIGlmZiA9IG5ldyBJZk5vZGUoY3RybCwgdGVzdCwgUFJP Ql9VTkxJS0VMWV9NQUcoMyksIENPVU5UX1VOS05PV04pOworKyAgICAgIGlndm4tPnJlZ2lzdGVy X25ld19ub2RlX3dpdGhfb3B0aW1pemVyKGlmZik7CisrICAgICAgTm9kZSogaWZfc2xvdyA9IGln dm4tPnJlZ2lzdGVyX25ld19ub2RlX3dpdGhfb3B0aW1pemVyKG5ldyBJZlRydWVOb2RlKGlmZikp OyAgLy8geCA8PSAwCisrICAgICAgTm9kZSogaWZfZmFzdCA9IGlndm4tPnJlZ2lzdGVyX25ld19u b2RlX3dpdGhfb3B0aW1pemVyKG5ldyBJZkZhbHNlTm9kZShpZmYpKTsgLy8geCA+IDAKKysKKysg ICAgICAvLyBzbG93IHBhdGg6IGNhbGwgcG93KHgsIDAuNSkKKysgICAgICBOb2RlKiBjYWxsID0g aWd2bi0+cmVnaXN0ZXJfbmV3X25vZGVfd2l0aF9vcHRpbWl6ZXIoaW5saW5lX2NhbGxfbGVhZl9w dXJlX25vZGUoaWZfc2xvdykpOworKyAgICAgIE5vZGUqIGNhbGxfY3RybCA9IGlndm4tPnJlZ2lz dGVyX25ld19ub2RlX3dpdGhfb3B0aW1pemVyKG5ldyBQcm9qTm9kZShjYWxsLCBUeXBlRnVuYzo6 Q29udHJvbCkpOworKyAgICAgIE5vZGUqIGNhbGxfcmVzdWx0ID0gaWd2bi0+cmVnaXN0ZXJfbmV3 X25vZGVfd2l0aF9vcHRpbWl6ZXIobmV3IFByb2pOb2RlKGNhbGwsIFR5cGVGdW5jOjpQYXJtcyAr IDApKTsKKysKKysgICAgICAvLyBmYXN0IHBhdGg6IHNxcnQoeCkKKysgICAgICBOb2RlKiBzcXJ0 ID0gaWd2bi0+cmVnaXN0ZXJfbmV3X25vZGVfd2l0aF9vcHRpbWl6ZXIobmV3IFNxcnRETm9kZShp Z3ZuLT5DLCBpZl9mYXN0LCBiYXNlKSk7CisrCisrICAgICAgLy8gbWVyZ2UgcGF0aHMKKysgICAg ICBSZWdpb25Ob2RlKiByZWdpb24gPSBuZXcgUmVnaW9uTm9kZSgzKTsKKysgICAgICBpZ3ZuLT5y ZWdpc3Rlcl9uZXdfbm9kZV93aXRoX29wdGltaXplcihyZWdpb24pOworKyAgICAgIHJlZ2lvbi0+ aW5pdF9yZXEoMSwgY2FsbF9jdHJsKTsgLy8gc2xvdyBwYXRoCisrICAgICAgcmVnaW9uLT5pbml0 X3JlcSgyLCBpZl9mYXN0KTsgICAvLyBmYXN0IHBhdGgKKysKKysgICAgICBQaGlOb2RlKiBwaGkg PSBuZXcgUGhpTm9kZShyZWdpb24sIFR5cGU6OkRPVUJMRSk7CisrICAgICAgaWd2bi0+cmVnaXN0 ZXJfbmV3X25vZGVfd2l0aF9vcHRpbWl6ZXIocGhpKTsKKysgICAgICBwaGktPmluaXRfcmVxKDEs IGNhbGxfcmVzdWx0KTsgLy8gc2xvdzogcG93KCkgcmVzdWx0CisrICAgICAgcGhpLT5pbml0X3Jl cSgyLCBzcXJ0KTsgICAgICAgIC8vIGZhc3Q6IHNxcnQoKSByZXN1bHQKKysKKysgICAgICBpZ3Zu LT5DLT5zZXRfaGFzX3NwbGl0X2lmcyh0cnVlKTsgLy8gSGFzIGNoYW5jZSBmb3Igc3BsaXQtaWYg b3B0aW1pemF0aW9uCisrCisrICAgICAgcmV0dXJuIG1ha2VfdHVwbGVfb2ZfaW5wdXRfc3RhdGVf YW5kX3Jlc3VsdChpZ3ZuLCBwaGksIHJlZ2lvbik7CisrICAgIH0KKysgIH0KKysKKysgIHJldHVy biBDYWxsTGVhZlB1cmVOb2RlOjpJZGVhbChwaGFzZSwgY2FuX3Jlc2hhcGUpOworK30KKysKKysv LyBXZSBjYW4ndCBzaW1wbHkgaGF2ZSBJZGVhbCgpIHJldHVybmluZyBhIENvbiBvciBNdWxOb2Rl IHNpbmNlIHRoZSB1c2VycyBhcmUgc3RpbGwgZXhwZWN0aW5nIGEgQ2FsbCBub2RlLCBidXQgd2Ug Y291bGQKKysvLyBwcm9kdWNlIGEgdHVwbGUgdGhhdCBmb2xsb3dzIHRoZSBzYW1lIHBhdHRlcm4g c28gdXNlcnMgY2FuIHN0aWxsIGdldCBjb250cm9sLCBpbywgbWVtb3J5LCBldGMuLgorK1R1cGxl Tm9kZSogUG93RE5vZGU6Om1ha2VfdHVwbGVfb2ZfaW5wdXRfc3RhdGVfYW5kX3Jlc3VsdChQaGFz ZUl0ZXJHVk4qIHBoYXNlLCBOb2RlKiByZXN1bHQsIE5vZGUqIGNvbnRyb2wpIHsKKysgIGlmIChj b250cm9sID09IG51bGxwdHIpIHsKKysgICAgY29udHJvbCA9IGluKFR5cGVGdW5jOjpDb250cm9s KTsKKysgIH0KKysKKysgIENvbXBpbGUqIEMgPSBwaGFzZS0+QzsKKysgIEMtPnJlbW92ZV9tYWNy b19ub2RlKHRoaXMpOworKyAgVHVwbGVOb2RlKiB0dXBsZSA9IFR1cGxlTm9kZTo6bWFrZSgKKysg ICAgICB0ZigpLT5yYW5nZSgpLAorKyAgICAgIGNvbnRyb2wsCisrICAgICAgaW4oVHlwZUZ1bmM6 OklfTyksCisrICAgICAgaW4oVHlwZUZ1bmM6Ok1lbW9yeSksCisrICAgICAgaW4oVHlwZUZ1bmM6 OkZyYW1lUHRyKSwKKysgICAgICBpbihUeXBlRnVuYzo6UmV0dXJuQWRyKSwKKysgICAgICByZXN1 bHQsCisrICAgICAgQy0+dG9wKCkpOworKyAgcmV0dXJuIHR1cGxlOworK30KK2RpZmYgLS1naXQg YS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NhbGxub2RlLmhwcCBiL3NyYy9ob3RzcG90L3NoYXJl L29wdG8vY2FsbG5vZGUuaHBwCitpbmRleCAyNDYyYTg4MTQzZi4uYmI4Nzc0NmEzZjYgMTAwNjQ0 CistLS0gYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NhbGxub2RlLmhwcAorKysrIGIvc3JjL2hv dHNwb3Qvc2hhcmUvb3B0by9jYWxsbm9kZS5ocHAKK0BAIC05NTMsNiArOTUzLDggQEAgY2xhc3Mg Q2FsbExlYWZQdXJlTm9kZSA6IHB1YmxpYyBDYWxsTGVhZk5vZGUgeworICAgfQorICAgaW50IE9w Y29kZSgpIGNvbnN0IG92ZXJyaWRlOworICAgTm9kZSogSWRlYWwoUGhhc2VHVk4qIHBoYXNlLCBi b29sIGNhbl9yZXNoYXBlKSBvdmVycmlkZTsKKysKKysgIENhbGxMZWFmUHVyZU5vZGUqIGlubGlu ZV9jYWxsX2xlYWZfcHVyZV9ub2RlKE5vZGUqIGNvbnRyb2wgPSBudWxscHRyKSBjb25zdDsKKyB9 OworIAorIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tQ2FsbExlYWZOb0ZQTm9kZS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0BAIC0xMzA0LDQgKzEzMDYsMTkgQEAgY2xh c3MgVW5sb2NrTm9kZSA6IHB1YmxpYyBBYnN0cmFjdExvY2tOb2RlIHsKKyAgIEpWTVN0YXRlKiBk YmdfanZtcygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAjZW5kaWYKKyB9OworKworKy8v LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tUG93RE5vZGUtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorK2NsYXNzIFBvd0ROb2RlIDogcHVibGljIENhbGxMZWFmUHVy ZU5vZGUgeworKyAgVHVwbGVOb2RlKiBtYWtlX3R1cGxlX29mX2lucHV0X3N0YXRlX2FuZF9yZXN1 bHQoUGhhc2VJdGVyR1ZOKiBwaGFzZSwgTm9kZSogcmVzdWx0LCBOb2RlKiBjb250cm9sID0gbnVs bHB0cik7CisrCisrcHVibGljOgorKyAgUG93RE5vZGUoQ29tcGlsZSogQywgTm9kZSogYmFzZSwg Tm9kZSogZXhwKTsKKysgIGludCBPcGNvZGUoKSBjb25zdCBvdmVycmlkZTsKKysgIGNvbnN0IFR5 cGUqIFZhbHVlKFBoYXNlR1ZOKiBwaGFzZSkgY29uc3Qgb3ZlcnJpZGU7CisrICBOb2RlKiBJZGVh bChQaGFzZUdWTiogcGhhc2UsIGJvb2wgY2FuX3Jlc2hhcGUpIG92ZXJyaWRlOworKworKyAgTm9k ZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIGluKFR5cGVGdW5jOjpQYXJtcyArIDApOyB9CisrICBO b2RlKiBleHAoKSBjb25zdCAgeyByZXR1cm4gaW4oVHlwZUZ1bmM6OlBhcm1zICsgMik7IH0KKyt9 OworKworICNlbmRpZiAvLyBTSEFSRV9PUFRPX0NBTExOT0RFX0hQUAorZGlmZiAtLWdpdCBhL3Ny Yy9ob3RzcG90L3NoYXJlL29wdG8vY2xhc3Nlcy5ocHAgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRv L2NsYXNzZXMuaHBwCitpbmRleCA1ODdkNWZhZDhmMi4uYjdiYTE2ZTk5YTAgMTAwNjQ0CistLS0g YS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NsYXNzZXMuaHBwCisrKysgYi9zcmMvaG90c3BvdC9z aGFyZS9vcHRvL2NsYXNzZXMuaHBwCitAQCAtMjgzLDYgKzI4Myw3IEBAIG1hY3JvKE9wYXF1ZVpl cm9UcmlwR3VhcmQpCisgbWFjcm8oT3BhcXVlTm90TnVsbCkKKyBtYWNybyhPcGFxdWVJbml0aWFs aXplZEFzc2VydGlvblByZWRpY2F0ZSkKKyBtYWNybyhPcGFxdWVUZW1wbGF0ZUFzc2VydGlvblBy ZWRpY2F0ZSkKKyttYWNybyhQb3dEKQorIG1hY3JvKFByb2ZpbGVCb29sZWFuKQorIG1hY3JvKE9y SSkKKyBtYWNybyhPckwpCitkaWZmIC0tZ2l0IGEvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9saWJy YXJ5X2NhbGwuY3BwIGIvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9saWJyYXJ5X2NhbGwuY3BwCitp bmRleCAxMjk2MGQxMDFhOC4uNmM3MWE2MWJhNzUgMTAwNjQ0CistLS0gYS9zcmMvaG90c3BvdC9z aGFyZS9vcHRvL2xpYnJhcnlfY2FsbC5jcHAKKysrKyBiL3NyYy9ob3RzcG90L3NoYXJlL29wdG8v bGlicmFyeV9jYWxsLmNwcAorQEAgLTE4MTcsNjEgKzE4MTcsMTcgQEAgYm9vbCBMaWJyYXJ5Q2Fs bEtpdDo6cnVudGltZV9tYXRoKGNvbnN0IFR5cGVGdW5jKiBjYWxsX3R5cGUsIGFkZHJlc3MgZnVu Y0FkZHIsIGMKKyAKKyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLWlubGluZV9tYXRo X3Bvdy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgYm9vbCBMaWJyYXJ5Q2FsbEtpdDo6 aW5saW5lX21hdGhfcG93KCkgeworKyAgTm9kZSogYmFzZSA9IGFyZ3VtZW50KDApOworICAgTm9k ZSogZXhwID0gYXJndW1lbnQoMik7CistICBjb25zdCBUeXBlRCogZCA9IF9ndm4udHlwZShleHAp LT5pc2FfZG91YmxlX2NvbnN0YW50KCk7CistICBpZiAoZCAhPSBudWxscHRyKSB7CistICAgIGlm IChkLT5nZXRkKCkgPT0gMi4wKSB7CistICAgICAgLy8gU3BlY2lhbCBjYXNlOiBwb3coeCwgMi4w KSA9PiB4ICogeAorLSAgICAgIE5vZGUqIGJhc2UgPSBhcmd1bWVudCgwKTsKKy0gICAgICBzZXRf cmVzdWx0KF9ndm4udHJhbnNmb3JtKG5ldyBNdWxETm9kZShiYXNlLCBiYXNlKSkpOworLSAgICAg IHJldHVybiB0cnVlOworLSAgICB9IGVsc2UgaWYgKGQtPmdldGQoKSA9PSAwLjUgJiYgTWF0Y2hl cjo6bWF0Y2hfcnVsZV9zdXBwb3J0ZWQoT3BfU3FydEQpKSB7CistICAgICAgLy8gU3BlY2lhbCBj YXNlOiBwb3coeCwgMC41KSA9PiBzcXJ0KHgpCistICAgICAgTm9kZSogYmFzZSA9IGFyZ3VtZW50 KDApOworLSAgICAgIE5vZGUqIHplcm8gPSBfZ3ZuLnplcm9jb24oVF9ET1VCTEUpOworLQorLSAg ICAgIFJlZ2lvbk5vZGUqIHJlZ2lvbiA9IG5ldyBSZWdpb25Ob2RlKDMpOworLSAgICAgIE5vZGUq IHBoaSA9IG5ldyBQaGlOb2RlKHJlZ2lvbiwgVHlwZTo6RE9VQkxFKTsKKy0KKy0gICAgICBOb2Rl KiBjbXAgID0gX2d2bi50cmFuc2Zvcm0obmV3IENtcEROb2RlKGJhc2UsIHplcm8pKTsKKy0gICAg ICAvLyBBY2NvcmRpbmcgdG8gdGhlIEFQSSBzcGVjcywgcG93KC0wLjAsIDAuNSkgPSAwLjAgYW5k IHNxcnQoLTAuMCkgPSAtMC4wLgorLSAgICAgIC8vIFNvIHBvdygtMC4wLCAwLjUpIHNob3VsZG4n dCBiZSByZXBsYWNlZCB3aXRoIHNxcnQoLTAuMCkuCistICAgICAgLy8gLTAuMC8rMC4wIGFyZSBi b3RoIGV4Y2x1ZGVkIHNpbmNlIGZsb2F0aW5nLXBvaW50IGNvbXBhcmlzb24gZG9lc24ndCBkaXN0 aW5ndWlzaCAtMC4wIGZyb20gKzAuMC4KKy0gICAgICBOb2RlKiB0ZXN0ID0gX2d2bi50cmFuc2Zv cm0obmV3IEJvb2xOb2RlKGNtcCwgQm9vbFRlc3Q6OmxlKSk7CistCistICAgICAgTm9kZSogaWZf cG93ID0gZ2VuZXJhdGVfc2xvd19ndWFyZCh0ZXN0LCBudWxscHRyKTsKKy0gICAgICBOb2RlKiB2 YWx1ZV9zcXJ0ID0gX2d2bi50cmFuc2Zvcm0obmV3IFNxcnRETm9kZShDLCBjb250cm9sKCksIGJh c2UpKTsKKy0gICAgICBwaGktPmluaXRfcmVxKDEsIHZhbHVlX3NxcnQpOworLSAgICAgIHJlZ2lv bi0+aW5pdF9yZXEoMSwgY29udHJvbCgpKTsKKy0KKy0gICAgICBpZiAoaWZfcG93ICE9IG51bGxw dHIpIHsKKy0gICAgICAgIHNldF9jb250cm9sKGlmX3Bvdyk7CistICAgICAgICBhZGRyZXNzIHRh cmdldCA9IFN0dWJSb3V0aW5lczo6ZHBvdygpICE9IG51bGxwdHIgPyBTdHViUm91dGluZXM6OmRw b3coKSA6CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBDQVNUX0ZST01fRk5fUFRSKGFkZHJlc3MsIFNoYXJlZFJ1bnRpbWU6OmRwb3cpOwor LSAgICAgICAgY29uc3QgVHlwZVB0ciogbm9fbWVtb3J5X2VmZmVjdHMgPSBudWxscHRyOworLSAg ICAgICAgTm9kZSogdHJpZyA9IG1ha2VfcnVudGltZV9jYWxsKFJDX0xFQUYsIE9wdG9SdW50aW1l OjpNYXRoX0REX0RfVHlwZSgpLCB0YXJnZXQsICJQT1ciLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5vX21lbW9yeV9lZmZlY3RzLCBiYXNlLCB0b3AoKSwgZXhwLCB0 b3AoKSk7CistICAgICAgICBOb2RlKiB2YWx1ZV9wb3cgPSBfZ3ZuLnRyYW5zZm9ybShuZXcgUHJv ak5vZGUodHJpZywgVHlwZUZ1bmM6OlBhcm1zKzApKTsKKy0jaWZkZWYgQVNTRVJUCistICAgICAg ICBOb2RlKiB2YWx1ZV90b3AgPSBfZ3ZuLnRyYW5zZm9ybShuZXcgUHJvak5vZGUodHJpZywgVHlw ZUZ1bmM6OlBhcm1zKzEpKTsKKy0gICAgICAgIGFzc2VydCh2YWx1ZV90b3AgPT0gdG9wKCksICJz ZWNvbmQgdmFsdWUgbXVzdCBiZSB0b3AiKTsKKy0jZW5kaWYKKy0gICAgICAgIHBoaS0+aW5pdF9y ZXEoMiwgdmFsdWVfcG93KTsKKy0gICAgICAgIHJlZ2lvbi0+aW5pdF9yZXEoMiwgX2d2bi50cmFu c2Zvcm0obmV3IFByb2pOb2RlKHRyaWcsIFR5cGVGdW5jOjpDb250cm9sKSkpOworLSAgICAgIH0K Ky0KKy0gICAgICBDLT5zZXRfaGFzX3NwbGl0X2lmcyh0cnVlKTsgLy8gSGFzIGNoYW5jZSBmb3Ig c3BsaXQtaWYgb3B0aW1pemF0aW9uCistICAgICAgc2V0X2NvbnRyb2woX2d2bi50cmFuc2Zvcm0o cmVnaW9uKSk7CistICAgICAgcmVjb3JkX2Zvcl9pZ3ZuKHJlZ2lvbik7CistICAgICAgc2V0X3Jl c3VsdChfZ3ZuLnRyYW5zZm9ybShwaGkpKTsKKyAKKy0gICAgICByZXR1cm4gdHJ1ZTsKKy0gICAg fQorLSAgfQorLQorLSAgcmV0dXJuIFN0dWJSb3V0aW5lczo6ZHBvdygpICE9IG51bGxwdHIgPwor LSAgICBydW50aW1lX21hdGgoT3B0b1J1bnRpbWU6Ok1hdGhfRERfRF9UeXBlKCksIFN0dWJSb3V0 aW5lczo6ZHBvdygpLCAgImRwb3ciKSA6CistICAgIHJ1bnRpbWVfbWF0aChPcHRvUnVudGltZTo6 TWF0aF9ERF9EX1R5cGUoKSwgQ0FTVF9GUk9NX0ZOX1BUUihhZGRyZXNzLCBTaGFyZWRSdW50aW1l OjpkcG93KSwgICJQT1ciKTsKKysgIENhbGxOb2RlKiBwb3cgPSBuZXcgUG93RE5vZGUoQywgYmFz ZSwgZXhwKTsKKysgIHNldF9wcmVkZWZpbmVkX2lucHV0X2Zvcl9ydW50aW1lX2NhbGwocG93KTsK KysgIHBvdyA9IF9ndm4udHJhbnNmb3JtKHBvdyktPmFzX0NhbGxMZWFmUHVyZSgpOworKyAgc2V0 X3ByZWRlZmluZWRfb3V0cHV0X2Zvcl9ydW50aW1lX2NhbGwocG93KTsKKysgIE5vZGUqIHJlc3Vs dCA9IF9ndm4udHJhbnNmb3JtKG5ldyBQcm9qTm9kZShwb3csIFR5cGVGdW5jOjpQYXJtcyArIDAp KTsKKysgIHJlY29yZF9mb3JfaWd2bihwb3cpOworKyAgc2V0X3Jlc3VsdChyZXN1bHQpOworKyAg cmV0dXJuIHRydWU7CisgfQorIAorIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0taW5s aW5lX21hdGhfbmF0aXZlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RpZmYgLS1naXQg YS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL21hY3JvLmNwcCBiL3NyYy9ob3RzcG90L3NoYXJlL29w dG8vbWFjcm8uY3BwCitpbmRleCBhYWZjNWQzYzE3MC4uYTI4MDQzYzhkOGYgMTAwNjQ0CistLS0g YS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL21hY3JvLmNwcAorKysrIGIvc3JjL2hvdHNwb3Qvc2hh cmUvb3B0by9tYWNyby5jcHAKK0BAIC0yNDg0LDYgKzI0ODQsNyBAQCB2b2lkIFBoYXNlTWFjcm9F eHBhbmQ6OmVsaW1pbmF0ZV9tYWNyb19ub2RlcygpIHsKKyAgICAgICAgIGFzc2VydChuLT5PcGNv ZGUoKSA9PSBPcF9Mb29wTGltaXQgfHwKKyAgICAgICAgICAgICAgICBuLT5PcGNvZGUoKSA9PSBP cF9Nb2REIHx8CisgICAgICAgICAgICAgICAgbi0+T3Bjb2RlKCkgPT0gT3BfTW9kRiB8fAorKyAg ICAgICAgICAgICAgIG4tPk9wY29kZSgpID09IE9wX1Bvd0QgfHwKKyAgICAgICAgICAgICAgICBu LT5pc19PcGFxdWVOb3ROdWxsKCkgICAgICAgfHwKKyAgICAgICAgICAgICAgICBuLT5pc19PcGFx dWVJbml0aWFsaXplZEFzc2VydGlvblByZWRpY2F0ZSgpIHx8CisgICAgICAgICAgICAgICAgbi0+ T3Bjb2RlKCkgPT0gT3BfTWF4TCAgICAgIHx8CitAQCAtMjYzNywxOSArMjYzOCwxMSBAQCBib29s IFBoYXNlTWFjcm9FeHBhbmQ6OmV4cGFuZF9tYWNyb19ub2RlcygpIHsKKyAgICAgZGVmYXVsdDoK KyAgICAgICBzd2l0Y2ggKG4tPk9wY29kZSgpKSB7CisgICAgICAgY2FzZSBPcF9Nb2REOgorLSAg ICAgIGNhc2UgT3BfTW9kRjogeworLSAgICAgICAgQ2FsbE5vZGUqIG1vZF9tYWNybyA9IG4tPmFz X0NhbGwoKTsKKy0gICAgICAgIENhbGxOb2RlKiBjYWxsID0gbmV3IENhbGxMZWFmUHVyZU5vZGUo bW9kX21hY3JvLT50ZigpLCBtb2RfbWFjcm8tPmVudHJ5X3BvaW50KCksCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZF9tYWNyby0+X25hbWUsIFR5cGVS YXdQdHI6OkJPVFRPTSk7CistICAgICAgICBjYWxsLT5pbml0X3JlcShUeXBlRnVuYzo6Q29udHJv bCwgbW9kX21hY3JvLT5pbihUeXBlRnVuYzo6Q29udHJvbCkpOworLSAgICAgICAgY2FsbC0+aW5p dF9yZXEoVHlwZUZ1bmM6OklfTywgQy0+dG9wKCkpOworLSAgICAgICAgY2FsbC0+aW5pdF9yZXEo VHlwZUZ1bmM6Ok1lbW9yeSwgQy0+dG9wKCkpOworLSAgICAgICAgY2FsbC0+aW5pdF9yZXEoVHlw ZUZ1bmM6OlJldHVybkFkciwgQy0+dG9wKCkpOworLSAgICAgICAgY2FsbC0+aW5pdF9yZXEoVHlw ZUZ1bmM6OkZyYW1lUHRyLCBDLT50b3AoKSk7CistICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBp ID0gMDsgaSA8IG1vZF9tYWNyby0+dGYoKS0+ZG9tYWluKCktPmNudCgpIC0gVHlwZUZ1bmM6OlBh cm1zOyBpKyspIHsKKy0gICAgICAgICAgY2FsbC0+aW5pdF9yZXEoVHlwZUZ1bmM6OlBhcm1zICsg aSwgbW9kX21hY3JvLT5pbihUeXBlRnVuYzo6UGFybXMgKyBpKSk7CistICAgICAgICB9CistICAg ICAgICBfaWd2bi5yZXBsYWNlX25vZGUobW9kX21hY3JvLCBjYWxsKTsKKysgICAgICBjYXNlIE9w X01vZEY6CisrICAgICAgY2FzZSBPcF9Qb3dEOiB7CisrICAgICAgICBDYWxsTGVhZlB1cmVOb2Rl KiBjYWxsX21hY3JvID0gbi0+YXNfQ2FsbExlYWZQdXJlKCk7CisrICAgICAgICBDYWxsTGVhZlB1 cmVOb2RlKiBjYWxsID0gY2FsbF9tYWNyby0+aW5saW5lX2NhbGxfbGVhZl9wdXJlX25vZGUoKTsK KysgICAgICAgIF9pZ3ZuLnJlcGxhY2Vfbm9kZShjYWxsX21hY3JvLCBjYWxsKTsKKyAgICAgICAg IHRyYW5zZm9ybV9sYXRlcihjYWxsKTsKKyAgICAgICAgIGJyZWFrOworICAgICAgIH0KK2RpZmYg LS1naXQgYS90ZXN0L2hvdHNwb3QvanRyZWcvY29tcGlsZXIvaW50cmluc2ljcy9tYXRoL1Bvd0RO b2RlVGVzdHMuamF2YSBiL3Rlc3QvaG90c3BvdC9qdHJlZy9jb21waWxlci9pbnRyaW5zaWNzL21h dGgvUG93RE5vZGVUZXN0cy5qYXZhCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAw MDAwMDAuLmUyOGNjNWFiMzQ2CistLS0gL2Rldi9udWxsCisrKysgYi90ZXN0L2hvdHNwb3QvanRy ZWcvY29tcGlsZXIvaW50cmluc2ljcy9tYXRoL1Bvd0ROb2RlVGVzdHMuamF2YQorQEAgLTAsMCAr MSwyMTggQEAKKysvKgorKyAqIENvcHlyaWdodCAoYykgMjAyNiwgSUJNIGFuZC9vciBpdHMgYWZm aWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKiBETyBOT1QgQUxURVIgT1IgUkVNT1ZF IENPUFlSSUdIVCBOT1RJQ0VTIE9SIFRISVMgRklMRSBIRUFERVIuCisrICoKKysgKiBUaGlzIGNv ZGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eSBpdAorKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgdmVyc2lvbiAyIG9ubHksIGFzCisrICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24uCisrICoKKysgKiBUaGlzIGNvZGUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKysgKiBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IK KysgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysgKiB2ZXJzaW9uIDIgZm9yIG1vcmUgZGV0YWlscyAoYSBjb3B5 IGlzIGluY2x1ZGVkIGluIHRoZSBMSUNFTlNFIGZpbGUgdGhhdAorKyAqIGFjY29tcGFuaWVkIHRo aXMgY29kZSkuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uCisrICogMiBhbG9uZyB3aXRoIHRo aXMgd29yazsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAor KyAqIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0x MzAxIFVTQS4KKysgKgorKyAqIFBsZWFzZSBjb250YWN0IE9yYWNsZSwgNTAwIE9yYWNsZSBQYXJr d2F5LCBSZWR3b29kIFNob3JlcywgQ0EgOTQwNjUgVVNBCisrICogb3IgdmlzaXQgd3d3Lm9yYWNs ZS5jb20gaWYgeW91IG5lZWQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvciBoYXZlIGFueQorKyAq IHF1ZXN0aW9ucy4KKysgKgorKyAqLworK3BhY2thZ2UgY29tcGlsZXIuaW50cmluc2ljcy5tYXRo OworKworK2ltcG9ydCBqZGsudGVzdC5saWIuQXNzZXJ0czsKKysKKytpbXBvcnQgY29tcGlsZXIu bGliLmlyX2ZyYW1ld29yay4qOworK2ltcG9ydCBjb21waWxlci5saWIuZ2VuZXJhdG9ycy4qOwor K2ltcG9ydCBzdGF0aWMgY29tcGlsZXIubGliLmdlbmVyYXRvcnMuR2VuZXJhdG9ycy4qOworKwor K2ltcG9ydCBqYXZhLnV0aWwuUmFuZG9tOworKworKy8qCisrICogQHRlc3QKKysgKiBAYnVnIDgz Nzg3MTMKKysgKiBAa2V5IHJhbmRvbW5lc3MKKysgKiBAc3VtbWFyeSBNYXRoLnBvdyhiYXNlLCBl eHApIHNob3VsZCBjb25zdGFudCBwcm9wYWdhdGUKKysgKiBAbGlicmFyeSAvdGVzdC9saWIgLwor KyAqIEBydW4gZHJpdmVyICR7dGVzdC5tYWluLmNsYXNzfQorKyAqLworK3B1YmxpYyBjbGFzcyBQ b3dETm9kZVRlc3RzIHsKKysgICAgcHVibGljIHN0YXRpYyBmaW5hbCBHZW5lcmF0b3I8RG91Ymxl PiBVTklGT1JNUyA9IEcudW5pZm9ybURvdWJsZXMoKTsgLy8gWzAsIDEpCisrCisrICAgIHB1Ymxp YyBzdGF0aWMgZmluYWwgZG91YmxlIEIgPSBVTklGT1JNUy5uZXh0KCkgKiAxMDAwLjBkOworKyAg ICBwdWJsaWMgc3RhdGljIGZpbmFsIGRvdWJsZSBFID0gVU5JRk9STVMubmV4dCgpICogMTAwMC4w ZCArIDMuMGQ7IC8vIGUgPj0gMyB0byBhdm9pZCBzdHJlbmd0aCByZWR1Y3Rpb24gY29kZQorKwor KyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisrICAgICAgICBU ZXN0RnJhbWV3b3JrLnJ1bigpOworKworKyAgICAgICAgdGVzdENvcnJlY3RuZXNzKCk7CisrICAg IH0KKysKKysgICAgLy8gVGVzdCAxOiBwb3coMi4wLCAxMC4wKSAtPiAxMDI0LjAKKysgICAgQFRl c3QKKysgICAgQElSKGZhaWxPbiA9IHtJUk5vZGUuUE9XX0R9KQorKyAgICBwdWJsaWMgc3RhdGlj IGRvdWJsZSBjb25zdGFudExpdGVyYWxGb2xkaW5nKCkgeworKyAgICAgICAgcmV0dXJuIE1hdGgu cG93KDIuMCwgMTAuMCk7ICAvLyBzaG91bGQgZm9sZCB0byAxMDI0LjAKKysgICAgfQorKworKyAg ICAvLyBUZXN0IDI6IHBvdyhmaW5hbCBCLCBmaW5hbCBFKSAtPiBCXkUKKysgICAgQFRlc3QKKysg ICAgQElSKGZhaWxPbiA9IHtJUk5vZGUuUE9XX0R9KQorKyAgICBwdWJsaWMgc3RhdGljIGRvdWJs ZSBjb25zdGFudFN0YXRpY0ZvbGRpbmcoKSB7CisrICAgICAgICByZXR1cm4gTWF0aC5wb3coQiwg RSk7ICAvLyBzaG91bGQgZm9sZCB0byBCXkUKKysgICAgfQorKworKyAgICAvLyBUZXN0IDM6IHBv dyhiLCAwLjApIC0+IDEuMAorKyAgICBAVGVzdAorKyAgICBASVIoZmFpbE9uID0ge0lSTm9kZS5Q T1dfRH0pCisrICAgIEBBcmd1bWVudHModmFsdWVzID0ge0FyZ3VtZW50LlJBTkRPTV9FQUNIfSkK KysgICAgcHVibGljIHN0YXRpYyBkb3VibGUgZXhwWmVybyhkb3VibGUgYikgeworKyAgICAgICAg cmV0dXJuIE1hdGgucG93KGIsIDAuMCk7CisrICAgIH0KKysKKysgICAgLy8gVGVzdCA0OiBwb3co YiwgMS4wKSAtPiBiIChpZGVudGl0eSkKKysgICAgQFRlc3QKKysgICAgQElSKGZhaWxPbiA9IHtJ Uk5vZGUuUE9XX0R9KQorKyAgICBAQXJndW1lbnRzKHZhbHVlcyA9IHtBcmd1bWVudC5SQU5ET01f RUFDSH0pCisrICAgIHB1YmxpYyBzdGF0aWMgZG91YmxlIGV4cE9uZShkb3VibGUgYikgeworKyAg ICAgICAgcmV0dXJuIE1hdGgucG93KGIsIDEuMCk7CisrICAgIH0KKysKKysgICAgLy8gVGVzdCA1 OiBwb3coYiwgTmFOKSAtPiBOYU4KKysgICAgQFRlc3QKKysgICAgQElSKGZhaWxPbiA9IHtJUk5v ZGUuUE9XX0R9KQorKyAgICBAQXJndW1lbnRzKHZhbHVlcyA9IHtBcmd1bWVudC5SQU5ET01fRUFD SH0pCisrICAgIHB1YmxpYyBzdGF0aWMgZG91YmxlIGV4cE5hTihkb3VibGUgYikgeworKyAgICAg ICAgcmV0dXJuIE1hdGgucG93KGIsIERvdWJsZS5OYU4pOworKyAgICB9CisrCisrICAgIC8vIFRl c3QgNjogcG93KGIsIDIuMCkgLT4gYiAqIGIKKysgICAgLy8gTW9yZSB0ZXN0cyBpbiBUZXN0UG93 Mk9wdC5qYXZhCisrICAgIEBUZXN0CisrICAgIEBJUihmYWlsT24gPSB7SVJOb2RlLlBPV19EfSkK KysgICAgQElSKGNvdW50cyA9IHtJUk5vZGUuTVVMX0QsICIxIn0pCisrICAgIEBBcmd1bWVudHMo dmFsdWVzID0ge0FyZ3VtZW50LlJBTkRPTV9FQUNIfSkKKysgICAgcHVibGljIHN0YXRpYyBkb3Vi bGUgZXhwVHdvKGRvdWJsZSBiKSB7CisrICAgICAgICByZXR1cm4gTWF0aC5wb3coYiwgMi4wKTsK KysgICAgfQorKworKyAgICAvLyBUZXN0IDc6IHBvdyhiLCAwLjUpIC0+IGIgPD0gMC4wID8gcG93 KGIsIDAuNSkgOiBzcXJ0KGIpCisrICAgIC8vIE1vcmUgdGVzdHMgaW4gVGVzdFBvdzBEb3Q1T3B0 LmphdmEKKysgICAgQFRlc3QKKysgICAgQElSKGNvdW50cyA9IHtJUk5vZGUuSUYsICIxIn0pCisr ICAgIEBJUihjb3VudHMgPSB7SVJOb2RlLlNRUlRfRCwgIjEifSkKKysgICAgQElSKGNvdW50cyA9 IHsiLipDYWxsTGVhZi4qcG93LioiLCAiMSJ9LCBwaGFzZSA9IENvbXBpbGVQaGFzZS5CRUZPUkVf TUFUQ0hJTkcpCisrICAgIEBBcmd1bWVudHModmFsdWVzID0ge0FyZ3VtZW50LlJBTkRPTV9FQUNI fSkKKysgICAgcHVibGljIHN0YXRpYyBkb3VibGUgZXhwRG90NShkb3VibGUgYikgeworKyAgICAg ICAgcmV0dXJuIE1hdGgucG93KGIsIDAuNSk7IC8vIGV4cGFuZCB0bzogaWYgKGIgPiAwKSB7IHNx cnQoYikgfSBlbHNlIHsgY2FsbChiKSB9CisrICAgIH0KKysKKysgICAgLy8gVGVzdCA4OiBub24t Y29uc3RhbnQgZXhwb25lbnQgc3RheXMgYXMgY2FsbAorKyAgICBAVGVzdAorKyAgICBASVIoY291 bnRzID0ge0lSTm9kZS5QT1dfRCwgIjEifSkKKysgICAgQEFyZ3VtZW50cyh2YWx1ZXMgPSB7QXJn dW1lbnQuUkFORE9NX0VBQ0gsIEFyZ3VtZW50LlJBTkRPTV9FQUNIfSkKKysgICAgcHVibGljIHN0 YXRpYyBkb3VibGUgbm9uQ29uc3RhbnQoZG91YmxlIGIsIGRvdWJsZSBlKSB7CisrICAgICAgICBy ZXR1cm4gTWF0aC5wb3coYiwgZSk7CisrICAgIH0KKysKKysgICAgLy8gVGVzdCA5OiBsYXRlIGNv bnN0YW50IGRpc2NvdmVyeSBvbiBiYXNlIChhZnRlciBsb29wIG9wdHMpCisrICAgIEBUZXN0Cisr ICAgIEBJUihjb3VudHMgPSB7SVJOb2RlLlBPV19ELCAiMSJ9LCBwaGFzZSA9IENvbXBpbGVQaGFz ZS5BRlRFUl9QQVJTSU5HKQorKyAgICBASVIoZmFpbE9uID0ge0lSTm9kZS5QT1dfRH0pCisrICAg IHB1YmxpYyBzdGF0aWMgZG91YmxlIGxhdGVCYXNlQ29uc3RhbnQoKSB7CisrICAgICAgICBkb3Vi bGUgYmFzZSA9IDA7CisrICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgeworKyAg ICAgICAgICAgIGlmICgoaSAlIDIpID09IDApIHsKKysgICAgICAgICAgICAgICAgYmFzZSA9IEI7 CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAgICAgLy8gQWZ0ZXIgbG9vcCBvcHRz LCBiYXNlID09IEIgKGNvbnN0YW50KSwgc28gcG93KEIsIEUpIGZvbGRzCisrICAgICAgICByZXR1 cm4gTWF0aC5wb3coYmFzZSwgRSk7CisrICAgIH0KKysKKysgICAgLy8gVGVzdCAxMDogbGF0ZSBj b25zdGFudCBkaXNjb3Zlcnkgb24gZXhwIChhZnRlciBsb29wIG9wdHMpCisrICAgIEBUZXN0Cisr ICAgIEBJUihjb3VudHMgPSB7SVJOb2RlLlBPV19ELCAiMSJ9LCBwaGFzZSA9IENvbXBpbGVQaGFz ZS5BRlRFUl9QQVJTSU5HKQorKyAgICBASVIoZmFpbE9uID0ge0lSTm9kZS5QT1dfRH0pCisrICAg IHB1YmxpYyBzdGF0aWMgZG91YmxlIGxhdGVFeHBDb25zdGFudCgpIHsKKysgICAgICAgIGRvdWJs ZSBleHAgPSAwOworKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKKysgICAg ICAgICAgICBpZiAoKGkgJSAyKSA9PSAwKSB7CisrICAgICAgICAgICAgICAgIGV4cCA9IEU7Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAgICAgLy8gQWZ0ZXIgbG9vcCBvcHRzLCBl eHAgPT0gRSAoY29uc3RhbnQpLCBzbyBwb3coQiwgRSkgZm9sZHMKKysgICAgICAgIHJldHVybiBN YXRoLnBvdyhCLCBleHApOworKyAgICB9CisrCisrICAgIC8vIFRlc3QgMTE6IGxhdGUgY29uc3Rh bnQgZGlzY292ZXJpZXMgb24gYm90aCBiYXNlIGFuZCBleHAgKGFmdGVyIGxvb3Agb3B0cykKKysg ICAgQFRlc3QKKysgICAgQElSKGNvdW50cyA9IHtJUk5vZGUuUE9XX0QsICIxIn0sIHBoYXNlID0g Q29tcGlsZVBoYXNlLkFGVEVSX1BBUlNJTkcpCisrICAgIEBJUihmYWlsT24gPSB7SVJOb2RlLlBP V19EfSkKKysgICAgcHVibGljIHN0YXRpYyBkb3VibGUgbGF0ZUJvdGhDb25zdGFudCgpIHsKKysg ICAgICAgIGRvdWJsZSBiYXNlID0gMCwgZXhwID0gMDsKKysgICAgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgNDsgaSsrKSB7CisrICAgICAgICAgICAgaWYgKChpICUgMikgPT0gMCkgeworKyAgICAg ICAgICAgICAgICBiYXNlID0gQjsKKysgICAgICAgICAgICAgICAgZXhwID0gRTsKKysgICAgICAg ICAgICB9CisrICAgICAgICB9CisrICAgICAgICAvLyBBZnRlciBsb29wIG9wdHMsIGJhc2UgPSBC LCBleHAgPT0gRSwgc28gcG93KEIsIEUpIGZvbGRzCisrICAgICAgICByZXR1cm4gTWF0aC5wb3co YmFzZSwgZXhwKTsKKysgICAgfQorKworKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGFzc2VydEVR V2l0aGluT25lVWxwKGRvdWJsZSBleHBlY3RlZCwgZG91YmxlIG9ic2VydmVkKSB7CisrICAgICAg ICBpZiAoRG91YmxlLmlzTmFOKGV4cGVjdGVkKSAmJiBEb3VibGUuaXNOYU4ob2JzZXJ2ZWQpKSBy ZXR1cm47CisrCisrICAgICAgICAvLyBNYXRoLnBvdygpIHJlcXVpcmVzIHJlc3VsdCBtdXN0IGJl IHdpdGhpbiAxIHVscCBvZiB0aGUgcmVzcGVjdGl2ZSBtYWduaXR1ZGUKKysgICAgICAgIGRvdWJs ZSB1bHAgPSBNYXRoLm1heChNYXRoLnVscChleHBlY3RlZCksIE1hdGgudWxwKG9ic2VydmVkKSk7 CisrICAgICAgICBpZiAoTWF0aC5hYnMoZXhwZWN0ZWQgLSBvYnNlcnZlZCkgPiB1bHApIHsKKysg ICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoU3RyaW5nLmZvcm1hdCgKKysgICAg ICAgICAgICAgICAgICAgICJleHBlY3QgPSAleCwgb2JzZXJ2ZWQgPSAleCwgdWxwID0gJXgiLAor KyAgICAgICAgICAgICAgICAgICAgRG91YmxlLmRvdWJsZVRvUmF3TG9uZ0JpdHMoZXhwZWN0ZWQp LCBEb3VibGUuZG91YmxlVG9SYXdMb25nQml0cyhvYnNlcnZlZCksIERvdWJsZS5kb3VibGVUb1Jh d0xvbmdCaXRzKHVscCkKKysgICAgICAgICAgICApKTsKKysgICAgICAgIH0KKysgICAgfQorKwor KyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHRlc3RDb3JyZWN0bmVzcygpIHsKKysgICAgICAgIC8v IE5vIG5lZWQgdG8gd2FybSB1cCBmb3IgaW50cmluc2ljcworKyAgICAgICAgQXNzZXJ0cy5hc3Nl cnRFUSgxMDI0LjBkLCBjb25zdGFudExpdGVyYWxGb2xkaW5nKCkpOworKworKyAgICAgICAgZG91 YmxlIEJFID0gU3RyaWN0TWF0aC5wb3coQiwgRSk7CisrICAgICAgICBhc3NlcnRFUVdpdGhpbk9u ZVVscChCRSwgY29uc3RhbnRTdGF0aWNGb2xkaW5nKCkpOworKyAgICAgICAgYXNzZXJ0RVFXaXRo aW5PbmVVbHAoQkUsIGxhdGVCYXNlQ29uc3RhbnQoKSk7CisrICAgICAgICBhc3NlcnRFUVdpdGhp bk9uZVVscChCRSwgbGF0ZUV4cENvbnN0YW50KCkpOworKyAgICAgICAgYXNzZXJ0RVFXaXRoaW5P bmVVbHAoQkUsIGxhdGVCb3RoQ29uc3RhbnQoKSk7CisrCisrICAgICAgICBHZW5lcmF0b3I8RG91 YmxlPiBhbnlCaXRzID0gRy5hbnlCaXRzRG91YmxlKCk7CisrICAgICAgICBHZW5lcmF0b3I8RG91 YmxlPiBsYXJnZURvdWJsZXMgPSBHLnVuaWZvcm1Eb3VibGVzKExvbmcuTUFYX1ZBTFVFLCBEb3Vi bGUuTUFYX1ZBTFVFKTsKKysgICAgICAgIEdlbmVyYXRvcjxEb3VibGU+IGRvdWJsZXMgPSBHLmRv dWJsZXMoKTsKKysgICAgICAgIGRvdWJsZVtdIHZhbHVlcyA9IHsKKysgICAgICAgICAgICAgICAg RG91YmxlLk1JTl9WQUxVRSwgRG91YmxlLk1JTl9OT1JNQUwsIC00Mi4wZCwgLTEuMGQsIC0wLjBk LCArMC4wZCwgMC41ZCwgMS4wZCwgMi4wZCwgMTIzZCwgRG91YmxlLk1BWF9WQUxVRSwKKysgICAg ICAgICAgICAgICAgRG91YmxlLk5FR0FUSVZFX0lORklOSVRZLCBEb3VibGUuUE9TSVRJVkVfSU5G SU5JVFksIERvdWJsZS5OYU4sCisrICAgICAgICAgICAgICAgIFVOSUZPUk1TLm5leHQoKSwgVU5J Rk9STVMubmV4dCgpLAorKyAgICAgICAgICAgICAgICBsYXJnZURvdWJsZXMubmV4dCgpLCAtbGFy Z2VEb3VibGVzLm5leHQoKSwgLy8gc29tZSBzdWZmaWNpZW50bHkgbGFyZ2UgbWFnbml0dWRlcwor KyAgICAgICAgICAgICAgICBhbnlCaXRzLm5leHQoKSwgYW55Qml0cy5uZXh0KCksIC8vIGFueSBi aXRzIHdpdGggcG90ZW50aWFsbHkgbW9yZSBOYU4gcmVwcmVzZW50YXRpb24KKysgICAgICAgICAg ICAgICAgZG91Ymxlcy5uZXh0KCksIGRvdWJsZXMubmV4dCgpIC8vIGEgaGVhbHRoeSBzcHJpbmts ZSBvZiB3aGF0ZXZlciBlbHNlIGlzIHBvc3NpYmxlCisrICAgICAgICB9OworKworKyAgICAgICAg Zm9yIChkb3VibGUgYiA6IHZhbHVlcykgeworKyAgICAgICAgICAgIC8vIFN0cmVuZ3RoIHJlZHVj ZWQsIHNvIHdlIGtub3cgdGhlIGJpdHMgbWF0Y2hlcyBleGFjdGx5CisrICAgICAgICAgICAgQXNz ZXJ0cy5hc3NlcnRFUSgxLjBkLCBleHBaZXJvKGIpKTsKKysgICAgICAgICAgICBBc3NlcnRzLmFz c2VydEVRKGIsIGV4cE9uZShiKSk7CisrICAgICAgICAgICAgQXNzZXJ0cy5hc3NlcnRFUShiICog YiwgZXhwVHdvKGIpKTsKKysKKysgICAgICAgICAgICBhc3NlcnRFUVdpdGhpbk9uZVVscChEb3Vi bGUuTmFOLCBleHBOYU4oYikpOworKworKyAgICAgICAgICAgIC8vIFJ1bnRpbWUgY2FsbHMsIHNv IG1ha2Ugc3VyZSB0aGUgcmVzdWx0IGlzIHdpdGhpbiAxIHVscAorKyAgICAgICAgICAgIGFzc2Vy dEVRV2l0aGluT25lVWxwKFN0cmljdE1hdGgucG93KGIsIDAuNWQpLCBleHBEb3Q1KGIpKTsKKysK KysgICAgICAgICAgICBmb3IgKGRvdWJsZSBlIDogdmFsdWVzKSB7CisrICAgICAgICAgICAgICAg IGFzc2VydEVRV2l0aGluT25lVWxwKFN0cmljdE1hdGgucG93KGIsIGUpLCBub25Db25zdGFudChi LCBlKSk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICB9CisrfQorZGlmZiAtLWdp dCBhL3Rlc3QvaG90c3BvdC9qdHJlZy9jb21waWxlci9saWIvaXJfZnJhbWV3b3JrL0lSTm9kZS5q YXZhIGIvdGVzdC9ob3RzcG90L2p0cmVnL2NvbXBpbGVyL2xpYi9pcl9mcmFtZXdvcmsvSVJOb2Rl LmphdmEKK2luZGV4IDdiNzUxZjFhNzJjLi42YTk1YTJiNWRhNyAxMDA2NDQKKy0tLSBhL3Rlc3Qv aG90c3BvdC9qdHJlZy9jb21waWxlci9saWIvaXJfZnJhbWV3b3JrL0lSTm9kZS5qYXZhCisrKysg Yi90ZXN0L2hvdHNwb3QvanRyZWcvY29tcGlsZXIvbGliL2lyX2ZyYW1ld29yay9JUk5vZGUuamF2 YQorQEAgLTE4NTgsNiArMTg1OCwxMSBAQCBwdWJsaWMgY2xhc3MgSVJOb2RlIHsKKyAgICAgICAg YmVmb3JlTWF0Y2hpbmdOYW1lUmVnZXgoU1FSVF9IRiwgIlNxcnRIRiIpOworICAgICB9CisgCisr ICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNRUlRfRCA9IFBSRUZJWCArICJTUVJUX0Qi ICsgUE9TVEZJWDsKKysgICAgc3RhdGljIHsKKysgICAgICAgIGJlZm9yZU1hdGNoaW5nTmFtZVJl Z2V4KFNRUlRfRCwgIlNxcnREIik7CisrICAgIH0KKysKKyAgICAgcHVibGljIHN0YXRpYyBmaW5h bCBTdHJpbmcgU1FSVF9GID0gUFJFRklYICsgIlNRUlRfRiIgKyBQT1NURklYOworICAgICBzdGF0 aWMgeworICAgICAgICBiZWZvcmVNYXRjaGluZ05hbWVSZWdleChTUVJUX0YsICJTcXJ0RiIpOwor QEAgLTI4MjUsNiArMjgzMCwxMiBAQCBwdWJsaWMgY2xhc3MgSVJOb2RlIHsKKyAgICAgICAgIG1h Y3JvTm9kZXMoTU9EX0QsIHJlZ2V4KTsKKyAgICAgfQorIAorKyAgICBwdWJsaWMgc3RhdGljIGZp bmFsIFN0cmluZyBQT1dfRCA9IFBSRUZJWCArICJQT1dfRCIgKyBQT1NURklYOworKyAgICBzdGF0 aWMgeworKyAgICAgICAgU3RyaW5nIHJlZ2V4ID0gU1RBUlQgKyAiUG93RCIgKyBNSUQgKyBFTkQ7 CisrICAgICAgICBtYWNyb05vZGVzKFBPV19ELCByZWdleCk7CisrICAgIH0KKysKKyAgICAgcHVi bGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkxBQ0tIT0xFID0gUFJFRklYICsgIkJMQUNLSE9MRSIg KyBQT1NURklYOworICAgICBzdGF0aWMgeworICAgICAgICAgZnJvbUJlZm9yZVJlbW92ZVVzZWxl c3NUb0ZpbmFsQ29kZShCTEFDS0hPTEUsICJCbGFja2hvbGUiKTsKKy0tIAorMi41My4wCisKCmRp ZmYgLS1naXQgYS9zY3JpcHRzL2dlbmVyYXRlX3NvdXJjZV90YXJiYWxsLnNoIGIvc2NyaXB0cy9n ZW5lcmF0ZV9zb3VyY2VfdGFyYmFsbC5zaAppbmRleCBlZWRlZDVjLi41NmFmYjRkIDEwMDc1NQot LS0gYS9zY3JpcHRzL2dlbmVyYXRlX3NvdXJjZV90YXJiYWxsLnNoCisrKyBiL3NjcmlwdHMvZ2Vu ZXJhdGVfc291cmNlX3RhcmJhbGwuc2gKQEAgLTQ4LDcgKzQ4LDcgQEAKICMgVGhpcyB3aWxsIGNo ZWNrIG91dCB0aGUgc2FtZSB2ZXJzaW9uIGFzIGV4YW1wbGUgMSwgYnV0IGZyb20gdGhlCiAjIHVw c3RyZWFtIHJlcG9zaXRvcnk6CiAjCi0jICQgVkVSU0lPTj1qZGstMjUuMC4zKzkgUFJPSkVDVF9O QU1FPW9wZW5qZGsgUkVQT19OQU1FPWpkazI1dSBcCisjICQgVkVSU0lPTj1qZGstMjUuMC40Kzcg UFJPSkVDVF9OQU1FPW9wZW5qZGsgUkVQT19OQU1FPWpkazI1dSBcCiAjICAgQk9PVF9KREs9L3Vz ci9saWIvanZtL2phdmEtMjUtb3BlbmpkayBzaCBzY3JpcHRzL2dlbmVyYXRlX3NvdXJjZV90YXJi YWxsLnNoCiAjCiAjIEV4YW1wbGUgMzoKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwpp bmRleCAyNzhkNmY0Li5kZmIyYzA1IDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMK QEAgLTEgKzEgQEAKLVNIQTUxMiAob3Blbmpkay0yNS4wLjMrOS50YXIueHopID0gMzgyZGNmNDJl ZGUzNWM3ZTQ4ZTBmOTQwM2QzMDE3MmU2YmM2MzY3NTE3ZTBjNDkyMTFhYjlkMmU0MzM3M2MzZDdl NTg2OTY5YzI3Nzk1ZjBiZmQxN2FlNWM5ZjAwNzAyZTk1NTQ5NWEzMWQ3ZWE3NTdmNTRmMDZlOGE0 Y2YxMTMKK1NIQTUxMiAob3Blbmpkay0yNS4wLjQrNy50YXIueHopID0gNzM2OTQ5YmE1N2Q2ZTM2 ZGYxYjRmODU0MThiMmEyN2QzZTBhZWM3ZTRiNDkyZWY1ZDljMDA2MzU1ZWRlNjNkYjNmNWY5ZTBl MGVhMmQ2M2JlYTExOWQ5YmFhYTljZjVhOTJlMTRkYWQxOWU2OWU5MzUxMDcyZWYwOTU1ZWEyY2YK