From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2064.outbound.protection.outlook.com [40.107.20.64]) by sourceware.org (Postfix) with ESMTPS id D6BB13853C26 for ; Tue, 17 Aug 2021 15:30:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D6BB13853C26 Received: from AM6PR02CA0017.eurprd02.prod.outlook.com (2603:10a6:20b:6e::30) by PAXPR08MB6671.eurprd08.prod.outlook.com (2603:10a6:102:13b::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.14; Tue, 17 Aug 2021 15:30:32 +0000 Received: from AM5EUR03FT044.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:6e:cafe::c3) by AM6PR02CA0017.outlook.office365.com (2603:10a6:20b:6e::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4436.19 via Frontend Transport; Tue, 17 Aug 2021 15:30:32 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; sourceware.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;sourceware.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT044.mail.protection.outlook.com (10.152.17.56) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.16 via Frontend Transport; Tue, 17 Aug 2021 15:30:32 +0000 Received: ("Tessian outbound 5918cb94a4b5:v103"); Tue, 17 Aug 2021 15:30:32 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 33e610c234a6798e X-CR-MTA-TID: 64aa7808 Received: from 7daafee330cf.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id D3737B40-A842-4F35-A81C-9E3910844D2C.1; Tue, 17 Aug 2021 15:30:18 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 7daafee330cf.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 17 Aug 2021 15:30:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bFReeG+u31aMlCQSIcFnwHYTaL0cLrdzYHmMs5D7zzYwO0bQnKJn0IxycQeqOF6IZ6tr5pPoxlOAmUOIAQxlqHYhBdjHfxNdrpKaZ4b6QWxwDTYM26MREh/NWMuLUWN7bRUwa3cD3CxnAToFxtX8zm/ULIRS06AFrhwH+kFWmCrmio7egr5/Y5KSPcM0eSzzPZzSUjMW6w2EINTVgk2S0BlnD5Og0RnRGPFDQ5DZUIYL2JRUti3MENKiMkFDGO3H2y9I/F4QbUypp/8NPkZ9hs5JWeLPo8pJT9K32GvBdoaOEGIGGRVbAEkgGZj/tki8D4PeM/7Z5gBha/YCoVVBqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=o1I18clDI05NhTIAcezIGRe0rTzvX+l+Znq020AEhuc=; b=OjMdKXjk7cZV2/lAq2dSUigACFnbgEeDFykMhDHot5OyzCUNrt1rhNwvgDDCJ6C9BlFPMo8D1i+JIW5tYfICcrdBUDA5yzZ/00qMxQBtN12gSg8yg5Gf19nazky+J8LBUwVsfAOa2aiH1TeJ8i07mAX5IklOiNAzSe24OVLf3ndwdY9MqBPxK/C0Zx2TqxJFl+eUXwgPCQTli+I519BVZ538JkQjOznMBw0YjAC6PavGJAcRfdZ/7kz0wf9mhml9vtFU8DhLNblGnMQMcsprpoB7fMvrUP7ykRrpMTDlOHTXARXXjaySoDISjoI+oIfI9AVbz0LtLd869KRTUD8LlA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from AM6PR08MB3957.eurprd08.prod.outlook.com (2603:10a6:20b:a2::14) by AS8PR08MB6055.eurprd08.prod.outlook.com (2603:10a6:20b:293::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.15; Tue, 17 Aug 2021 15:30:16 +0000 Received: from AM6PR08MB3957.eurprd08.prod.outlook.com ([fe80::e08c:a939:4d7a:a5da]) by AM6PR08MB3957.eurprd08.prod.outlook.com ([fe80::e08c:a939:4d7a:a5da%6]) with mapi id 15.20.4415.024; Tue, 17 Aug 2021 15:30:16 +0000 From: Alan Hayward To: Luis Machado CC: "gdb-patches\\@sourceware.org" , nd Subject: Re: [PATCH, v2][AArch64] Fix missing watchpoint hits/endless loop Thread-Topic: [PATCH, v2][AArch64] Fix missing watchpoint hits/endless loop Thread-Index: AQHXf8YWYMWVh5xmL0KXCd2n5HbYNKt3+gGA Date: Tue, 17 Aug 2021 15:30:16 +0000 Message-ID: References: <20210602142745.2174-1-luis.machado@linaro.org> <20210723132420.368758-1-luis.machado@linaro.org> In-Reply-To: <20210723132420.368758-1-luis.machado@linaro.org> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3654.120.0.1.13) Authentication-Results-Original: linaro.org; dkim=none (message not signed) header.d=none;linaro.org; dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 546dabd9-00ad-4ac3-b33f-08d96193f383 x-ms-traffictypediagnostic: AS8PR08MB6055:|PAXPR08MB6671: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:8882;OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: kQIi5S6mn1Y5Bxc6yj2rC26FuuhpZ+wVpwQT7V+Sb4/6WNRlhDv+RpdpJJawTTefmGEShd4pOoAAxzv6bm70oKzbpDRYC2ekSHDtImriqqx8i2pTFdG43/jS/GiamboOEul7ryO7SeNI1QOyHtLS9lUPhzlH7X0bcv56uAk7ioPk3hmW3nRXlIPi2L2bntw9LqIF4HT5DpkAosUP6CSONDaWKIvlElu7vVFcRkxix0Qsdb2+JhNYowJRMU55vs1plTcwnA8JIRmyKsqZonKlJ4HxIG2afdy6mqRPQWHDnUFCAylPUqVKmXfwMeHzeavjFd+G6YXRXKohI1254ELZvIH90yLhKAmemzuCZxD2lILZTbZoT68XGsyZIkKL5UBjGmK+Ofm3s5WMbCdypzBlj9RQluViscinlZC1NK7a8w9cRy06b3hMo2j93MwS7AtIcwo8gUByYB3c5taZq3VcivSJxVkpArwGfD65e2mMutqXCzx6/ihmMjN0dWFLHtDp8kTDdsRB2C8aCLnv9aK9+QD5PPIceecnFwMdB1Nq5kf6xIsDWX2JUNGNU1beTxA2RkXgpgKYJGEhXC1dyb9jYseOB3UhlkoyRIDli7gzsBdZa8e1glplZQKoYFd4ozQM6NP/v1c/vCwSI3JYq6ydGxl/ZIdrUfDAd1JwteESb4S8SNdG9Yb3AyaCxYUgD/da3cbaEkb+I4SIVvt0dcpHO9o0ftHNiJ6/J96ol9FKCllnqKDjsM17I6abf5WI35FtvuMyFQ9LTxa+qrlNIXo/OWiKV5I5vFNDkPGHy0/QYDoXw5JNRXwLth+HjyaSDJ3M X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR08MB3957.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(39860400002)(346002)(396003)(136003)(366004)(6512007)(6486002)(478600001)(86362001)(26005)(53546011)(316002)(8936002)(6506007)(30864003)(4326008)(8676002)(71200400001)(83380400001)(36756003)(122000001)(38070700005)(66946007)(66446008)(64756008)(66556008)(66476007)(76116006)(2906002)(2616005)(91956017)(6916009)(54906003)(186003)(38100700002)(33656002)(5660300002)(45980500001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SWhSeW9sRmFvN3EzVTl0NEk5SXdzaHpMWFdMS01lQmw4OVNJRFBoZ24yQnFl?= =?utf-8?B?eE1xQ3Mwd3FYelhHKzcyWDcyVWxtMThyb1A2ZW9LYWpyOGdOQU9YNUd4QVk1?= =?utf-8?B?T2xSOXEvYkVXNmFtdWhabWpZMUJZZUZqaGlqa3JrTS91QjZCSHdSZmNnUTNF?= =?utf-8?B?cldpUDVoYmJ0Sk1rNjgyK1pzbmJSNEF1S3I1YWU2YWl4TXdXTlMybnVwRlFV?= =?utf-8?B?M285Rkxob0l1V2k5WWF5eFR4bmNJMGZQWmhYZG84VmNlK0tsWm8xQ2lnM1JK?= =?utf-8?B?VmtGUUtNaHF0R3hqb1RXYnI5RFlaNk16YUFyaDNSeGc4Rjl2UGpraHkxRm9B?= =?utf-8?B?SlA3QVcvd3dSeVliRDRPemo1bm9ON3FvaVltZ2M5TmQ2VHdRN1hwdFBGd0xk?= =?utf-8?B?Z0ZmWjVOTG94M1Fta3RyZVZMNW9wdHVQWkkybHE3NWpvVmtXcThYeWRIYlg4?= =?utf-8?B?NU1nL2VoQXhyRmZhcEdNcjFhRWozVm5Zdlg3QWo2SVFRK3dGYjgrMUVIaFhX?= =?utf-8?B?eVQwU2VSdHVUbjlrdXp5cU9iVjdwQW9Xc3MwbVFERGdMSFNzZVp2RVdyQ2NJ?= =?utf-8?B?Smw1dW1BY3FleTNGQ0xJei80cGJkQkVPYUorclRjZ3RnWUlZYjdIdFJNNzR4?= =?utf-8?B?ZlNydEdrUmszVTcxTThieTlEWVR2Y0FRcDZ6Rm96bHVZZFgxaC91VjVSTUpW?= =?utf-8?B?OWZlYlRpUTJvU0dHbERZanN4ZnVFSS9iMGRnQ2JiWjNxemJXb1BOSnlqTVhT?= =?utf-8?B?Tm8wdmNZaFp3UGp0VDJoQlpHVG5FaC84RGxFdmNNcGRNamMwNHNxcEQrY0wy?= =?utf-8?B?UnYyRFpnNnoxbDI3bVN5YUxuVGx4LzZxVjdybDhaTGg2b0szN2ZPYWZCcDF0?= =?utf-8?B?eTZyMVE3eEtKOFAwUHFNZHY3cGRMNmJWeUR5QkdCYkVEVUR5TlZidVcxYm5v?= =?utf-8?B?SG91Zk1TbW1pRXU1aHY4M0hHSU1FemgvNlhWVlZkSGhPUWdXQnAwaHlwZ2ZH?= =?utf-8?B?NmJOKzY5cG9qRDhkSUtTdU9ub2N2c0VleVY5UHNnd2hnU2t0TWI0NDVzS1RB?= =?utf-8?B?ejhENXJ5dzJjLzQvc0swUDFRV3hqUENTcmhkbTlvUWg5S1F2NkdhQ0pMcGY4?= =?utf-8?B?eXA2bElHZlltc1pZa1lzNzl4aW1TeHZDaUxWNkFidmVVam9yeFlvRGdLbjZr?= =?utf-8?B?bzlwYS9JY05LdndSTHBoNHFPUU1GaUROQXN0YlVqZ2JORktJVDRkWTFTSFZr?= =?utf-8?B?aTFHdzJLU2liN2tnWFJlNVN3NTBOczJpV20xTitmcTJ6QURLNTRxU2wxR2ZC?= =?utf-8?B?a29qQzdzeXl0U0lSRVlsZDd3OC9xdXJaN1BSZlUrZnlBblpGUnVmVDRzdVFT?= =?utf-8?B?SDlvMFk0bkVEekdvUnlIdnRJa2tET1JhZ0VzZlU3c2FNampqbGUyMjFHT0xN?= =?utf-8?B?UnFDRjM1Y3lqUUZuOFN1ZmVyNk1BZUk0RlUvSlZ3d0dVRkZzc3Q5eFFCRUh4?= =?utf-8?B?enBtdzVJcE1neHczVWV2WFJnQW1mdDBINTlIZXluV21CRXpMNFUyeHhudXFV?= =?utf-8?B?VzVHemFDU1kzSXpmQ2s3WTlhdUUyVXRvWUdCRUE4aFY5RmtJS21scEVrSUFv?= =?utf-8?B?ZHk4MjhQVGU1NU5ORmg3ejRWTStCa011STRZcGN4eHd1QVRHT1lhbkZLTXcx?= =?utf-8?B?RFdaaVJDWWxlbkp1R01vV0hFOFJRcnRYSi9aM2dsa1VHNk5BUXlKU2RKczlZ?= =?utf-8?Q?+n8hywwk0fxre0Cx8lUsIJxBahz9oXOAzYsvOjy?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <3BF4569115C09F4389A1F22C5CCED584@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6055 Original-Authentication-Results: linaro.org; dkim=none (message not signed) header.d=none;linaro.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT044.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: b8955be8-7c62-4d4d-331f-08d96193ea1f X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: U1zUIByMwZ2Gf1cNlrMZhfr9pm/ZRbl/wfPAiiUKTumkty/JBWD4yRDoqLAOJn4rsCbxZgn6Vpb8/27bl2gl6+X3v32lJIpuc0jK+hmaNmMIrd1SfrCYhmT2j8F/fO/Nv6PxeGOEgjAYiWrNxU97TXhbhpu3XttQ1k7WCwcvAHyIUcFKADTQlT6tYACAvRQNKzTez0MJlhoZb5deve2B2ORGkFUMdggRtnhagRbbfUti5KEB6vqwLJRg9BM3Yty5OSrdSpSz5k5eeWUOS/3bNO4XRzSmnoetnieki56apC/XhLVwPAjMP6sa+GjNIEPjFoSoCirN92b1R9FkgLvtcIdvQcIZwZ++vNE7qe7okEK8SyO9mRyVBq+MKLD8zt0TI818IiJXqVNmY7blw80PJ4jBoJ8De3ES3T4ii88w02n51n5ur1tYvPY1DXw8ifLOsnxBCZjXOUXDVdRPFFgS5lfmxZddD+giBQ2p4gaIioyiO39WNNae2atRkVDMGPsCYJ0eQwSrcTRh1KeSV7CEZqro1OPHJLNxb2YXQqwuPqbk7WkIky5bxmv9alxlqCapFmC0+naj0rVBTKN1pMrUp8kCIVA7WQzUhdpWvLOIZ6ktI1dk3MrwajRgDt/cXDDKkUbQmeX6iJZSOTwPzrrFpoLYXXw7HkCBpQhCQyGfo1ylJgjBotxCgjBw+9VvU77KbIhxz4BQNEZ8xwb+099daNuNjUuxZYwaQMWUQL+9qtmGJNgUV+M4/dmxHtajZBJ02+zbmPBbznVPQ3AggF7RmQ== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(39850400004)(136003)(376002)(396003)(346002)(46966006)(36840700001)(36860700001)(54906003)(336012)(81166007)(36756003)(70206006)(6862004)(70586007)(30864003)(2616005)(316002)(82310400003)(47076005)(8676002)(26005)(8936002)(6512007)(6486002)(6506007)(478600001)(53546011)(356005)(83380400001)(4326008)(5660300002)(2906002)(186003)(82740400003)(86362001)(33656002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Aug 2021 15:30:32.2407 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 546dabd9-00ad-4ac3-b33f-08d96193f383 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT044.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6671 X-Spam-Status: No, score=-13.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Aug 2021 15:30:45 -0000 DQoNCj4gT24gMjMgSnVsIDIwMjEsIGF0IDE0OjI0LCBMdWlzIE1hY2hhZG8gPGx1aXMubWFjaGFk b0BsaW5hcm8ub3JnPiB3cm90ZToNCj4gDQo+IFVwZGF0ZXMgb24gdjI6DQo+IA0KPiAtIEhhbmRs ZSBtb3JlIHR5cGVzIG9mIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zLCBpbmNsdWRpbmcgYSBjYXRj aCBhbGwNCj4gIGZvciBTVkUgbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMuDQo+IA0KPiAtLQ0KPiAN Cj4gSSByYW4gaW50byBhIHNpdHVhdGlvbiB3aGVyZSBhIGhhcmR3YXJlIHdhdGNocG9pbnQgaGl0 IGlzIG5vdCBkZXRlY3RlZA0KPiBjb3JyZWN0bHksIG1pc2xlYWRpbmcgR0RCIGludG8gdGhpbmtp bmcgaXQgd2FzIGEgZGVsYXllZCBicmVha3BvaW50IGhpdC4NCj4gDQo+IFRoZSBwcm9ibGVtIGlz IHRoYXQgaGFyZHdhcmUgd2F0Y2hwb2ludHMgYXJlIG5vdCBza2lwcGFibGUgb24gQUFyY2g2NCwg c28NCj4gdGhhdCBtYWtlcyBHREIgbG9vcCBlbmRsZXNzbHkgdHJ5aW5nIHRvIHJ1biBwYXN0IHRo ZSBpbnN0cnVjdGlvbi4NCj4gDQo+IFRoZSBtb3N0IG9idmlvdXMgY2FzZSB3aGVyZSB0aGlzIGhh cHBlbnMgaXMgd2hlbiB0aGUgbG9hZC9zdG9yZSBwYWlyDQo+IGluc3RydWN0aW9ucyBhY2Nlc3Mg MTYgYnl0ZXMgb2YgbWVtb3J5Lg0KPiANCj4gU3VwcG9zZSB3ZSBoYXZlIGEgc3RwIGluc3RydWN0 aW9uIHRoYXQgd2lsbCB3cml0ZSBhIGNvdXBsZSA2NC1iaXQgcmVnaXN0ZXJzDQo+IHRvIGFkZHJl c3MgMHgxMCAoc3RwIHgzLHg0IFt4Ml0pLiBJdCB3aWxsIHdyaXRlIGRhdGEgZnJvbSAweDEwIHVw IHRvIDB4MjAuDQo+IA0KPiBOb3cgc3VwcG9zZSBhIHdyaXRlIHdhdGNocG9pbnQgaXMgY3JlYXRl ZCB0byBtb25pdG9yIG1lbW9yeSBhZGRyZXNzIDB4MTgsDQo+IHdoaWNoIGlzIHRoZSBzdGFydCBv ZiB0aGUgc2Vjb25kIHJlZ2lzdGVyIHdyaXRlLiBJdCBjYW4gaGF2ZSB3aGF0ZXZlciBsZW5ndGgs DQo+IGJ1dCBsZXQncyBhc3N1bWUgaXQgaGFzIGxlbmd0aCA4Lg0KPiANCj4gV2hlbiB3ZSBleGVj dXRlIHRoYXQgc3RwIGluc3RydWN0aW9uLCBpdCB3aWxsIHRyYXAgYW5kIHRoZSByZXBvcnRlZCBz dG9wcGVkDQo+IGRhdGEgYWRkcmVzcyBmcm9tIHRoZSBrZXJuZWwgd2lsbCBiZSAweDEwICh0aGUg YmVnaW5uaW5nIG9mIHRoZSBtZW1vcnkgcmFuZ2UNCj4gYWNjZXNzZWQgYnkgdGhlIGluc3RydWN0 aW9uKS4NCj4gDQo+IFRoZSBjdXJyZW50IGNvZGUgd29uJ3QgYmUgYWJsZSB0byBkZXRlY3QgYSB2 YWxpZCB0cmlnZ2VyIGJlY2F1c2UgaXQgYXNzdW1lcyBhbg0KPiBhbGlnbm1lbnQgb2YgOCBieXRl cyBmb3IgdGhlIHdhdGNocG9pbnQgYWRkcmVzcy4gRm9yY2luZyB0aGF0IGtpbmQgb2YgYWxpZ25t ZW50DQo+IHdvbid0IGJlIGVub3VnaCB0byBkZXRlY3QgYSAxNi1ieXRlIGFjY2VzcyBpZiB0aGUg dHJhcCBhZGRyZXNzIGZhbGxzIG91dHNpZGUgb2YNCj4gdGhlIDgtYnl0ZSBhbGlnbm1lbnQgd2lu ZG93LiBXZSBuZWVkIHRvIGtub3cgaG93IG1hbnkgYnl0ZXMgdGhlIGluc3RydWN0aW9uDQo+IHdp bGwgYWNjZXNzLCBidXQgd2Ugd29uJ3QgaGF2ZSB0aGF0IGRhdGEgdW5sZXNzIHdlIGdvIHBhcnNp bmcgaW5zdHJ1Y3Rpb25zLg0KPiANCj4gQW5vdGhlciBpc3N1ZSB3aXRoIHRoZSBjdXJyZW50IGNv ZGUgc2VlbXMgdG8gYmUgdGhhdCBpdCBhc3N1bWVzIHRoZSBhY2Nlc3Nlcw0KPiB3aWxsIGFsd2F5 cyBiZSA4IGJ5dGVzIGluIHNpemUsIHNpbmNlIGl0IHdhbnRzIHRvIGFsaWduIHRoZSB3YXRjaHBv aW50IGFkZHJlc3MNCj4gdG8gdGhhdCBwYXJ0aWN1bGFyIGJvdW5kYXJ5LiBUaGlzIGxlYWRzIHRv IHByb2JsZW1zIHdoZW4gd2UgaGF2ZSB1bmFsaWduZWQNCj4gYWRkcmVzc2VzIGFuZCB1bmFsaWdu ZWQgd2F0Y2hwb2ludHMuDQo+IA0KPiBGb3IgZXhhbXBsZSwgc3VwcG9zZSB3ZSBoYXZlIGEgc3Ry IGluc3RydWN0aW9uIHN0b3JpbmcgOCBieXRlcyB0byBtZW1vcnkNCj4gYWRkcmVzcyAweGYuIE5v dyBzdXBwb3NlIHdlIGhhdmUgYSB3cml0ZSB3YXRjaHBvaW50IGF0IGFkZHJlc3MgMHgxNiwNCj4g bW9uaXRvcmluZyA4IGJ5dGVzLg0KPiANCj4gVGhlIHRyYXAgYWRkcmVzcyB3aWxsIGJlIDB4Ziwg YnV0IGZvcmNpbmcgMHgxNiB0byA4LWJ5dGUgYWxpZ25tZW50IHlpZWxkcw0KPiAweDEwLCBhbmQg c28gR0RCIGRvZXNuJ3QgdGhpbmsgdGhpcyBpcyBhIHdhdGNocG9pbnQgaGl0Lg0KPiANCj4gSSBi ZWxpZXZlIHlvdSBjYW4gdHJpZ2dlciB0aGUgc2FtZSBwcm9ibGVtIHdpdGggc21hbGxlciBtZW1v cnkgYWNjZXNzZXMsDQo+IGV4Y2VwdCBvbmUgdGhhdCBhY2Nlc3NlcyBhIHNpbmdsZSBieXRlLg0K PiANCj4gSW4gb3JkZXIgdG8gY292ZXIgbW9zdCBvZiB0aGUgY2FzZXMgY29ycmVjdGx5LCB3ZSBw YXJzZSB0aGUgbG9hZC9zdG9yZQ0KPiBpbnN0cnVjdGlvbnMgYW5kIGRldGVjdCBob3cgbWFueSBi eXRlcyB0aGV5J3JlIGFjY2Vzc2luZy4gVGhhdCB3aWxsIGdpdmUgdXMNCj4gZW5vdWdoIGluZm9y bWF0aW9uIHRvIHRlbGwgaWYgYSBoYXJkd2FyZSB3YXRjaHBvaW50IHRyaWdnZXJlZCBvciBub3Qu DQo+IA0KPiBUaGUgU1ZFIGxvYWQvc3RvcmUgc3VwcG9ydCBpcyBvbmx5IGEgcGxhY2Vob2xkZXIg Zm9yIG5vdywgYXMgd2UgbmVlZCB0bw0KPiBwYXJzZSB0aGUgaW5zdHJ1Y3Rpb25zIGFuZCB1c2Ug dGhlIHZhcmlhYmxlIGxlbmd0aCB0byBkZXRlcm1pbmUgdGhlIG1lbW9yeQ0KPiBhY2Nlc3Mgc2l6 ZSAocGxhbm5lZCBmb3IgdGhlIGZ1dHVyZSkuDQo+IA0KPiBUaGUgcGF0Y2ggYWxzbyBmaXhlcyB0 aGVzZSB0d28gZmFpbHVyZXMgaW4gdGhlIHRlc3RzdWl0ZToNCj4gDQo+IEZBSUw6IGdkYi5iYXNl L3dhdGNocG9pbnQtdW5hbGlnbmVkLmV4cDogY29udGludWUgKHRpbWVvdXQpDQo+IEZBSUw6IGdk Yi5iYXNlL3dhdGNocG9pbnQtdW5hbGlnbmVkLmV4cDogc2l6ZTh0d2ljZSB3cml0ZQ0KPiANCj4g UmVncmVzc2lvbiB0ZXN0ZWQgb24gYWFyY2g2NC1saW51eCBVYnVudHUvMjAuMDQgYW5kIFVidW50 dS8xOC4wNC4NCj4gDQo+IEkgYWxzbyB1c2VkIGEgdmVyeSBzbG93IGFhcmNoNjQgaGFyZHdhcmUg d2F0Y2hwb2ludCBzdHJlc3MgdGVzdCB0byB2YWxpZGF0ZQ0KPiB0aGlzIHBhdGNoLCBidXQgSSBk b24ndCB0aGluayB0aGF0IHBhcnRpY3VsYXIgdGVzdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhl DQo+IHRlc3RzdWl0ZS4gSXQgdGFrZXMgcXVpdGUgYSB3aGlsZSB0byBydW4gKDIwKyBtaW51dGVz KSwgYW5kIHNob3VsZG4ndCBiZQ0KPiByZXF1aXJlZCB1bmxlc3Mgd2Uga25vdyB0aGVyZSBhcmUg cHJvYmxlbXMgd2l0aCBoYXJkd2FyZSB3YXRjaHBvaW50IGhhbmRsaW5nLg0KDQpJdOKAmXMgYSBz aGFtZSB0aGVyZSBpc27igJl0IGFueXdoZXJlIGl0IGNhbiBnbywgYnV0IG9rLg0KDQo+IA0KPiBn ZGIvQ2hhbmdlTG9nOg0KPiANCj4gWVlZWS1NTS1ERCAgTHVpcyBNYWNoYWRvICA8bHVpcy5tYWNo YWRvQGxpbmFyby5vcmc+DQo+IA0KPiAJKiBhYXJjaDY0LWxpbnV4LW5hdC5jDQo+IAkoYWFyY2g2 NF9saW51eF9uYXRfdGFyZ2V0OjpzdG9wcGVkX2RhdGFfYWRkcmVzcyk6IFJlZmFjdG9yLg0KPiAJ KiBuYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5jIChnZXRfbG9hZF9zdG9yZV9hY2Nlc3Nfc2l6 ZSkNCj4gCShod193YXRjaF9yZWdpb25zX292ZXJsYXAsIGh3X3dhdGNoX2RldGVjdF90cmlnZ2Vy KTogTmV3IGZ1bmN0aW9ucy4NCj4gCSogbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuaCAoR0VO RVJBTF9MT0FEX1NUT1JFX1ApDQo+IAkoU1ZFX0xPQURfU1RPUkVfUCwgTE9BRF9TVE9SRV9QLCBM T0FEX1NUT1JFX1BBSVJfUCkNCj4gCShDT01QQVJFX1NXQVBfUEFJUl9QLCBMT0FEX1NUT1JFX0VY Q0xVU0lWRV9QQUlSX1ApDQo+IAkoTE9BRF9TVE9SRV9MSVRFUkFMX1AsIExPQURfU1RPUkVfTVMs IExPQURfU1RPUkVfU1MpOiBOZXcgY29uc3RhbnRzLg0KPiAJKGh3X3dhdGNoX3JlZ2lvbnNfb3Zl cmxhcCwgaHdfd2F0Y2hfZGV0ZWN0X3RyaWdnZXIpOiBOZXcgcHJvdG90eXBlcy4NCj4gCSogbmF0 L2FhcmNoNjQtbGludXgtaHctcG9pbnQuaDogSW5jbHVkZSBhcmNoL2FhcmNoNjQtaW5zbi5oLg0K PiANCj4gZ2Ric2VydmVyL0NoYW5nZUxvZzoNCj4gDQo+IFlZWVktTU0tREQgIEx1aXMgTWFjaGFk byAgPGx1aXMubWFjaGFkb0BsaW5hcm8ub3JnPg0KPiANCj4gCSogbGludXgtYWFyY2g2NC1sb3cu Y2MNCj4gCShhYXJjaDY0X3RhcmdldDo6bG93X3N0b3BwZWRfZGF0YV9hZGRyZXNzKTogUmVmYWN0 b3IuDQo+IC0tLQ0KPiBnZGIvYWFyY2g2NC1saW51eC1uYXQuYyAgICAgICAgICB8ICA0NSArLS0t LS0NCj4gZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmMgfCAyMzkgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKw0KPiBnZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuaCB8 ICA2OCArKysrKysrKysNCj4gZ2Ric2VydmVyL2xpbnV4LWFhcmNoNjQtbG93LmNjICAgfCAgNDkg KystLS0tLQ0KPiA0IGZpbGVzIGNoYW5nZWQsIDMyNSBpbnNlcnRpb25zKCspLCA3NiBkZWxldGlv bnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9nZGIvYWFyY2g2NC1saW51eC1uYXQuYyBiL2dkYi9h YXJjaDY0LWxpbnV4LW5hdC5jDQo+IGluZGV4IGM3Y2JlYmJjMzUxLi4yYzRiN2M1ZDEwZCAxMDA2 NDQNCj4gLS0tIGEvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMNCj4gKysrIGIvZ2RiL2FhcmNoNjQt bGludXgtbmF0LmMNCj4gQEAgLTk1MSw3ICs5NTEsNiBAQCBib29sDQo+IGFhcmNoNjRfbGludXhf bmF0X3RhcmdldDo6c3RvcHBlZF9kYXRhX2FkZHJlc3MgKENPUkVfQUREUiAqYWRkcl9wKQ0KPiB7 DQo+ICAgc2lnaW5mb190IHNpZ2luZm87DQo+IC0gIGludCBpOw0KPiAgIHN0cnVjdCBhYXJjaDY0 X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGU7DQo+IA0KPiAgIGlmICghbGludXhfbmF0X2dldF9zaWdp bmZvIChpbmZlcmlvcl9wdGlkLCAmc2lnaW5mbykpDQo+IEBAIC05NjksNDYgKzk2OCwxNCBAQCBh YXJjaDY0X2xpbnV4X25hdF90YXJnZXQ6OnN0b3BwZWRfZGF0YV9hZGRyZXNzIChDT1JFX0FERFIg KmFkZHJfcCkNCj4gICBjb25zdCBDT1JFX0FERFIgYWRkcl90cmFwDQo+ICAgICA9IGFkZHJlc3Nf c2lnbmlmaWNhbnQgKGdkYmFyY2gsIChDT1JFX0FERFIpIHNpZ2luZm8uc2lfYWRkcik7DQo+IA0K PiArICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ3MgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlICh0aGlzLCBp bmZlcmlvcl9wdGlkKTsNCj4gKyAgQ09SRV9BRERSIHRyaWdnZXJfcGMgPSByZWdjYWNoZV9yZWFk X3BjIChyZWdzKTsNCj4gKyAgdWludDMyX3QgaW5zbjsNCj4gKyAgcmVhZF9tZW1vcnkgKHRyaWdn ZXJfcGMsIChnZGJfYnl0ZSAqKSAmaW5zbiwgNCk7DQo+ICsNCj4gICAvKiBDaGVjayBpZiB0aGUg YWRkcmVzcyBtYXRjaGVzIGFueSB3YXRjaGVkIGFkZHJlc3MuICAqLw0KPiAgIHN0YXRlID0gYWFy Y2g2NF9nZXRfZGVidWdfcmVnX3N0YXRlIChpbmZlcmlvcl9wdGlkLnBpZCAoKSk7DQo+IC0gIGZv ciAoaSA9IGFhcmNoNjRfbnVtX3dwX3JlZ3MgLSAxOyBpID49IDA7IC0taSkNCj4gLSAgICB7DQo+ IC0gICAgICBjb25zdCB1bnNpZ25lZCBpbnQgb2Zmc2V0DQo+IC0JPSBhYXJjaDY0X3dhdGNocG9p bnRfb2Zmc2V0IChzdGF0ZS0+ZHJfY3RybF93cFtpXSk7DQo+IC0gICAgICBjb25zdCB1bnNpZ25l ZCBpbnQgbGVuID0gYWFyY2g2NF93YXRjaHBvaW50X2xlbmd0aCAoc3RhdGUtPmRyX2N0cmxfd3Bb aV0pOw0KPiAtICAgICAgY29uc3QgQ09SRV9BRERSIGFkZHJfd2F0Y2ggPSBzdGF0ZS0+ZHJfYWRk cl93cFtpXSArIG9mZnNldDsNCj4gLSAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX3dhdGNoX2Fs aWduZWQgPSBhbGlnbl9kb3duIChzdGF0ZS0+ZHJfYWRkcl93cFtpXSwgOCk7DQo+IC0gICAgICBj b25zdCBDT1JFX0FERFIgYWRkcl9vcmlnID0gc3RhdGUtPmRyX2FkZHJfb3JpZ193cFtpXTsNCj4g LQ0KPiAtICAgICAgaWYgKHN0YXRlLT5kcl9yZWZfY291bnRfd3BbaV0NCj4gLQkgICYmIERSX0NP TlRST0xfRU5BQkxFRCAoc3RhdGUtPmRyX2N0cmxfd3BbaV0pDQo+IC0JICAmJiBhZGRyX3RyYXAg Pj0gYWRkcl93YXRjaF9hbGlnbmVkDQo+IC0JICAmJiBhZGRyX3RyYXAgPCBhZGRyX3dhdGNoICsg bGVuKQ0KPiAtCXsNCj4gLQkgIC8qIEFERFJfVFJBUCByZXBvcnRzIHRoZSBmaXJzdCBhZGRyZXNz IG9mIHRoZSBtZW1vcnkgcmFuZ2UNCj4gLQkgICAgIGFjY2Vzc2VkIGJ5IHRoZSBDUFUsIHJlZ2Fy ZGxlc3Mgb2Ygd2hhdCB3YXMgdGhlIG1lbW9yeQ0KPiAtCSAgICAgcmFuZ2Ugd2F0Y2hlZC4gIFRo dXMsIGEgbGFyZ2UgQ1BVIGFjY2VzcyB0aGF0IHN0cmFkZGxlcw0KPiAtCSAgICAgdGhlIEFERFJf V0FUQ0guLkFERFJfV0FUQ0grTEVOIHJhbmdlIG1heSByZXN1bHQgaW4gYW4NCj4gLQkgICAgIEFE RFJfVFJBUCB0aGF0IGlzIGxvd2VyIHRoYW4gdGhlDQo+IC0JICAgICBBRERSX1dBVENILi5BRERS X1dBVENIK0xFTiByYW5nZS4gIEUuZy46DQo+IC0NCj4gLQkgICAgIGFkZHI6IHwgICA0ICAgfCAg IDUgICB8ICAgNiAgIHwgICA3ICAgfCAgIDggICB8DQo+IC0JCQkJICAgfC0tLS0gcmFuZ2Ugd2F0 Y2hlZCAtLS0tfA0KPiAtCQkgICB8LS0tLS0tLS0tLS0gcmFuZ2UgYWNjZXNzZWQgLS0tLS0tLS0t LS0tfA0KPiAtDQo+IC0JICAgICBJbiB0aGlzIGNhc2UsIEFERFJfVFJBUCB3aWxsIGJlIDQuDQo+ IC0NCj4gLQkgICAgIFRvIG1hdGNoIGEgd2F0Y2hwb2ludCBrbm93biB0byBHREIgY29yZSwgd2Ug bXVzdCBuZXZlcg0KPiAtCSAgICAgcmVwb3J0ICpBRERSX1Agb3V0c2lkZSBvZiBhbnkgQUREUl9X QVRDSC4uQUREUl9XQVRDSCtMRU4NCj4gLQkgICAgIHJhbmdlLiAgQUREUl9XQVRDSCA8PSBBRERS X1RSQVAgPCBBRERSX09SSUcgaXMgYSBmYWxzZQ0KPiAtCSAgICAgcG9zaXRpdmUgb24ga2VybmVs cyBvbGRlciB0aGFuIDQuMTAuICBTZWUgUFINCj4gLQkgICAgIGV4dGVybmFsLzIwMjA3LiAgKi8N Cj4gLQkgICphZGRyX3AgPSBhZGRyX29yaWc7DQo+IC0JICByZXR1cm4gdHJ1ZTsNCj4gLQl9DQo+ IC0gICAgfQ0KPiAtDQo+IC0gIHJldHVybiBmYWxzZTsNCj4gKyAgcmV0dXJuIGh3X3dhdGNoX2Rl dGVjdF90cmlnZ2VyIChzdGF0ZSwgaW5zbiwgYWRkcl90cmFwLCBhZGRyX3ApOw0KPiB9DQo+IA0K PiAvKiBJbXBsZW1lbnQgdGhlICJzdG9wcGVkX2J5X3dhdGNocG9pbnQiIHRhcmdldF9vcHMgbWV0 aG9kLiAgKi8NCj4gZGlmZiAtLWdpdCBhL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5j IGIvZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmMNCj4gaW5kZXggYWYyY2M0MjU0ZTIu LmQ5NDIwOWQwMDgxIDEwMDY0NA0KPiAtLS0gYS9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9p bnQuYw0KPiArKysgYi9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuYw0KPiBAQCAtODY1 LDMgKzg2NSwyNDIgQEAgYWFyY2g2NF9saW51eF9yZWdpb25fb2tfZm9yX3dhdGNocG9pbnQgKENP UkVfQUREUiBhZGRyLCBpbnQgbGVuKQ0KPiAgICAgIHRoZSBjaGVja2luZyBpcyBjb3N0bHkuICAq Lw0KPiAgIHJldHVybiAxOw0KPiB9DQo+ICsNCj4gKy8qIEFzc3VtaW5nIElOU04gaXMgYSBsb2Fk L3N0b3JlIGluc3RydWN0aW9uLCByZXR1cm4gdGhlIHNpemUgb2YgdGhlDQo+ICsgICBtZW1vcnkg YWNjZXNzLiAgVGhlIHBhdHRlcm5zIGFyZSBkb2N1bWVudGVkIGluIHRoZSBBUk0gQXJjaGl0ZWN0 dXJlDQo+ICsgICBSZWZlcmVuY2UgTWFudWFsIC0gSW5kZXggYnkgZW5jb2RpbmcuICAqLw0KPiAr DQo+ICt1bnNpZ25lZCBpbnQNCj4gK2dldF9sb2FkX3N0b3JlX2FjY2Vzc19zaXplIChDT1JFX0FE RFIgaW5zbikNCg0KTWF5YmUgdGhpcyBmdW5jdGlvbiBiZWxvbmdzIGluIGFyY2gtaW5zbj8NCg0K PiArew0KPiArICBpZiAoU1ZFX0xPQURfU1RPUkVfUCAoaW5zbikpDQo+ICsgICAgew0KPiArICAg ICAgLyogU1ZFIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zLiAgKi8NCj4gKw0KPiArICAgICAgLyog VGhpcyBpcyBub3QgYWx3YXlzIGNvcnJlY3QgZm9yIFNWRSBpbnN0cnVjdGlvbnMsIGJ1dCBpdCBp cyBhIHJlYXNvbmFibGUNCj4gKwkgZGVmYXVsdCBmb3Igbm93LiAgQ2FsY3VsYXRpbmcgdGhlIGV4 YWN0IG1lbW9yeSBhY2Nlc3Mgc2l6ZSBmb3IgU1ZFDQo+ICsJIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rp b25zIHJlcXVpcmVzIHBhcnNpbmcgaW5zdHJ1Y3Rpb25zIGFuZCBldmFsdWF0aW5nDQo+ICsJIHRo ZSB2ZWN0b3IgbGVuZ3RoLiAgKi8NCj4gKyAgICAgIHJldHVybiAxNjsNCg0K4oCmIG9rLiBEbyB3 ZSBzdGlsbCB1c2UgVE9ETyBpbiBjb21tZW50cz8NCg0KPiArICAgIH0NCj4gKw0KPiArICAvKiBO b24tU1ZFIGluc3RydWN0aW9ucy4gICovDQo+ICsNCj4gKyAgYm9vbCB2ZWN0b3IgPSAoYml0IChp bnNuLCAyNikgPT0gMSk7DQo+ICsgIGJvb2wgbGRzdF9wYWlyID0gTE9BRF9TVE9SRV9QQUlSX1Ag KGluc24pOw0KPiArDQo+ICsgIC8qIElzIHRoaXMgYW4gQWR2YW5jZWQgU0lNRCBsb2FkL3N0b3Jl IGluc3RydWN0aW9uPyAgKi8NCj4gKyAgaWYgKHZlY3RvcikNCj4gKyAgICB7DQo+ICsgICAgICB1 bnNpZ25lZCBpbnQgc2l6ZSA9IGJpdHMgKGluc24sIDMwLCAzMSk7DQo+ICsNCj4gKyAgICAgIGlm IChMT0FEX1NUT1JFX0xJVEVSQUxfUCAoaW5zbikpDQo+ICsJew0KPiArCSAgLyogQWR2YW5jZWQg U0lNRCBsb2FkL3N0b3JlIGxpdGVyYWwgKi8NCj4gKwkgIC8qIFNpemVzIDQsIDggYW5kIDE2IGJ5 dGVzLiAgKi8NCj4gKwkgIHJldHVybiA0IDw8IHNpemU7DQo+ICsJfQ0KPiArICAgICAgZWxzZSBp ZiAoTE9BRF9TVE9SRV9NUyAoaW5zbikpDQo+ICsJew0KPiArCSAgc2l6ZSA9IDggPDwgYml0IChp bnNuLCAzMCk7DQo+ICsNCj4gKwkgIHVuc2lnbmVkIGNoYXIgb3Bjb2RlID0gYml0cyAoaW5zbiwg MTIsIDE1KTsNCj4gKw0KPiArCSAgaWYgKG9wY29kZSA9PSAweDAgfHwgb3Bjb2RlID09IDB4MikN Cj4gKwkgICAgc2l6ZSAqPSA0Ow0KPiArCSAgZWxzZSBpZiAob3Bjb2RlID09IDB4NCB8fCBvcGNv ZGUgPT0gMHg2KQ0KPiArCSAgICBzaXplICo9IDM7DQo+ICsJICBlbHNlIGlmIChvcGNvZGUgPT0g MHg4IHx8IG9wY29kZSA9PSAweGEpDQo+ICsJICAgIHNpemUgKj0gMjsNCj4gKw0KPiArCSAgcmV0 dXJuIHNpemU7DQo+ICsJfQ0KPiArICAgICAgZWxzZSBpZiAoTE9BRF9TVE9SRV9TUyAoaW5zbikp DQo+ICsJew0KPiArCSAgc2l6ZSA9IDggPDwgYml0IChpbnNuLCAzMCk7DQo+ICsJICByZXR1cm4g c2l6ZTsNCj4gKwl9DQo+ICsgICAgICAvKiBBZHZhbmNlZCBTSU1EIGxvYWQvc3RvcmUgaW5zdHJ1 Y3Rpb25zLiAgKi8NCj4gKyAgICAgIGVsc2UgaWYgKGxkc3RfcGFpcikNCj4gKwl7DQo+ICsJICAv KiBBZHZhbmNlZCBTSU1EIGxvYWQvc3RvcmUgcGFpci4gICovDQo+ICsJICAvKiBTaXplcyA4LCAx NiBhbmQgMzIgYnl0ZXMuICAqLw0KPiArCSAgcmV0dXJuICg4IDw8IHNpemUpOw0KPiArCX0NCj4g KyAgICAgIGVsc2UNCj4gKwl7DQo+ICsJICAvKiBSZWd1bGFyIEFkdmFuY2VkIFNJTUQgbG9hZC9z dG9yZSBpbnN0cnVjdGlvbnMuICAqLw0KPiArCSAgc2l6ZSA9IHNpemUgfCAoYml0IChpbnNuLCAy MykgPDwgMik7DQo+ICsJICByZXR1cm4gMSA8PCBzaXplOw0KPiArCX0NCj4gKyAgICB9DQo+ICsN Cj4gKyAgLyogVGhpcyBtdXN0IGJlIGEgcmVndWxhciBHUFIgbG9hZC9zdG9yZSBpbnN0cnVjdGlv bi4gICovDQo+ICsNCj4gKyAgdW5zaWduZWQgaW50IHNpemUgPSBiaXRzIChpbnNuLCAzMCwgMzEp Ow0KPiArICBib29sIGNzX3BhaXIgPSBDT01QQVJFX1NXQVBfUEFJUl9QIChpbnNuKTsNCj4gKyAg Ym9vbCBsZHN0eF9wYWlyID0gTE9BRF9TVE9SRV9FWENMVVNJVkVfUEFJUl9QIChpbnNuKTsNCj4g Kw0KPiArICBpZiAobGRzdF9wYWlyKQ0KPiArICAgIHsNCj4gKyAgICAgIC8qIExvYWQvU3RvcmUg cGFpci4gICovDQo+ICsgICAgICBpZiAoc2l6ZSA9PSAweDEpDQo+ICsJew0KPiArCSAgaWYgKGJp dCAoaW5zbiwgMjIpID09IDApDQo+ICsJICAgIC8qIFNUR1AgLSAxNiBieXRlcy4gICovDQo+ICsJ ICAgIHJldHVybiAxNjsNCj4gKwkgIGVsc2UNCj4gKwkgICAgLyogTERQU1cgLSA4IGJ5dGVzLiAg Ki8NCj4gKwkgICAgcmV0dXJuIDg7DQo+ICsJfQ0KPiArICAgICAgLyogT3RoZXIgTG9hZC9TdG9y ZSBwYWlyLiAgKi8NCj4gKyAgICAgIHJldHVybiAoc2l6ZSA9PSAwKT8gOCA6IDE2Ow0KPiArICAg IH0NCj4gKyAgZWxzZSBpZiAoY3NfcGFpciB8fCBsZHN0eF9wYWlyKQ0KPiArICAgIHsNCj4gKyAg ICAgIC8qIENvbXBhcmUgU3dhcCBQYWlyIG9yIExvYWQgU3RvcmUgRXhjbHVzaXZlIFBhaXIuICAq Lw0KPiArICAgICAgLyogU2l6ZXMgOCBhbmQgMTYgYnl0ZXMuICAqLw0KPiArICAgICAgc2l6ZSA9 IGJpdCAoaW5zbiwgMzApOw0KPiArICAgICAgcmV0dXJuICg4IDw8IHNpemUpOw0KPiArICAgIH0N Cj4gKyAgZWxzZSBpZiAoTE9BRF9TVE9SRV9MSVRFUkFMX1AgKGluc24pKQ0KPiArICAgIHsNCj4g KyAgICAgIC8qIExvYWQvU3RvcmUgbGl0ZXJhbC4gICovDQo+ICsgICAgICAvKiBTaXplcyBiZXR3 ZWVuIDQgYW5kIDggYnl0ZXMuICAqLw0KPiArICAgICAgaWYgKHNpemUgPT0gMHgyKQ0KPiArCXJl dHVybiA0Ow0KPiArDQo+ICsgICAgICByZXR1cm4gNCA8PCBzaXplOw0KPiArICAgIH0NCj4gKyAg ZWxzZQ0KPiArICAgIHsNCj4gKyAgICAgIC8qIEdlbmVyYWwgbG9hZC9zdG9yZSBpbnN0cnVjdGlv bnMsIHdpdGggbWVtb3J5IGFjY2VzcyBzaXplcyBiZXR3ZWVuDQo+ICsJIDEgYW5kIDggYnl0ZXMu ICAqLw0KPiArICAgICAgcmV0dXJuICgxIDw8IHNpemUpOw0KPiArICAgIH0NCj4gK30NCj4gKw0K PiArLyogUmV0dXJuIHRydWUgaWYgdGhlIHJlZ2lvbnMgW21lbV9hZGRyLCBtZW1fYWRkciArIG1l bV9sZW4pIGFuZA0KPiArICAgW3dhdGNoX2FkZHIsIHdhdGNoX2FkZHIgKyB3YXRjaF9sZW4pIG92 ZXJsYXAuICBGYWxzZSBvdGhlcndpc2UuICAqLw0KPiArDQo+ICtib29sDQo+ICtod193YXRjaF9y ZWdpb25zX292ZXJsYXAgKENPUkVfQUREUiBtZW1fYWRkciwgc2l6ZV90IG1lbV9sZW4sDQo+ICsJ CQkgIENPUkVfQUREUiB3YXRjaF9hZGRyLCBzaXplX3Qgd2F0Y2hfbGVuKQ0KDQptZW1fcmFuZ2Vz X292ZXJsYXAoKSBpbiBtZW1yYW5nZS5jIGFscmVhZHkgZG9lcyB0aGUgc2FtZSBhcyB0aGlzLg0K DQo+ICt7DQo+ICsgIC8qIFF1aWNrIGNoZWNrIGZvciBub24tb3ZlcmxhcHBpbmcgY2FzZS4gICov DQo+ICsgIGlmICh3YXRjaF9hZGRyID49IChtZW1fYWRkciArIG1lbV9sZW4pDQo+ICsgICAgICB8 fCBtZW1fYWRkciA+PSAod2F0Y2hfYWRkciArIHdhdGNoX2xlbikpDQo+ICsgICAgcmV0dXJuIGZh bHNlOw0KPiArDQo+ICsgIENPUkVfQUREUiBzdGFydCA9IHN0ZDo6bWF4IChtZW1fYWRkciwgd2F0 Y2hfYWRkcik7DQo+ICsgIENPUkVfQUREUiBlbmQgPSBzdGQ6Om1pbiAobWVtX2FkZHIgKyBtZW1f bGVuLCB3YXRjaF9hZGRyICsgd2F0Y2hfbGVuKTsNCj4gKw0KPiArICByZXR1cm4gKChlbmQgLSBz dGFydCkgPiAwKTsNCj4gK30NCj4gKw0KPiArLyogQ2hlY2sgaWYgYSBoYXJkd2FyZSB3YXRjaHBv aW50IGhhcyB0cmlnZ2VyZWQuICBJZiBhIHRyaWdnZXIgaXMgZGV0ZWN0ZWQsDQo+ICsgICByZXR1 cm4gdHJ1ZSBhbmQgdXBkYXRlIEFERFJfUCB3aXRoIHRoZSBzdG9wcGVkIGRhdGEgYWRkcmVzcy4N Cj4gKyAgIE90aGVyd2lzZSByZXR1cm4gZmFsc2UuDQo+ICsNCj4gKyAgIFNUQVRFIGlzIHRoZSBk ZWJ1ZyByZWdpc3RlcidzIHN0YXRlLCBJTlNOIGlzIHRoZSBpbnN0cnVjdGlvbiB0aGUgaW5mZXJp b3INCj4gKyAgIHN0b3BwZWQgYXQgYW5kIEFERFJfVFJBUCBpcyB0aGUgcmVwb3J0ZWQgc3RvcHBl ZCBkYXRhIGFkZHJlc3MuICAqLw0KPiArDQo+ICtib29sDQo+ICtod193YXRjaF9kZXRlY3RfdHJp Z2dlciAoY29uc3Qgc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwNCj4gKwkJ CSBDT1JFX0FERFIgaW5zbiwgQ09SRV9BRERSIGFkZHJfdHJhcCwNCj4gKwkJCSBDT1JFX0FERFIg KmFkZHJfcCkNCj4gK3sNCj4gKyAgLyogVGhlcmUgYXJlIDYgdmFyaWF0aW9ucyBvZiB3YXRjaHBv aW50IHJhbmdlIGFuZCBtZW1vcnkgYWNjZXNzDQo+ICsgICAgIHJhbmdlIHBvc2l0aW9uaW5nOg0K PiArDQo+ICsgICAgIC0gVyBpcyB0aGUgYnl0ZSBpbiB0aGUgd2F0Y2hwb2ludCByYW5nZSBvbmx5 Lg0KPiArDQo+ICsgICAgIC0gQiBpcyB0aGUgYnl0ZSBpbiB0aGUgbWVtb3J5IGFjY2VzcyByYW5n ZSBvbnkuDQo+ICsNCj4gKyAgICAgLSBPIGlzIHRoZSBieXRlIGluIHRoZSBvdmVybGFwcGluZyBy ZWdpb24gb2YgdGhlIHdhdGNocG9pbnQgcmFuZ2UgYW5kDQo+ICsgICAgICAgdGhlIG1lbW9yeSBh Y2Nlc3MgcmFuZ2UuDQo+ICsNCj4gKyAgICAgMSAtIE5vbi1vdmVybGFwcGluZywgbm8gdHJpZ2dl cnMuDQo+ICsNCj4gKyAgICAgW1dXV1dXV1dXXS4uLltCQkJCQkJCQl0NCj4gKw0KPiArICAgICAy IC0gTm9uLW92ZXJsYXBwaW5nLCBubyB0cmlnZ2Vycy4NCj4gKw0KPiArICAgICBbQkJCQkJCQkJd Li4uW1dXV1dXV1dXXQ0KPiArDQo+ICsgICAgIDMgLSBPdmVybGFwcGluZyBwYXJ0aWFsbHksIHRy aWdnZXJzLg0KPiArDQo+ICsgICAgIFtCQkJCT09PT1dXV1ddDQo+ICsNCj4gKyAgICAgNCAtIE92 ZXJsYXBwaW5nIHBhcnRpYWxseSwgdHJpZ2dlcnMuDQo+ICsNCj4gKyAgICAgW1dXV1dPT09PQkJC Ql0NCj4gKw0KPiArICAgICA1IC0gTWVtb3J5IGFjY2VzcyBjb250YWluZWQgaW4gd2F0Y2hwb2lu dCByYW5nZSwgdHJpZ2dlcnMuDQo+ICsNCj4gKyAgICAgW1dXV1dPT09PT09PT1dXV1ddDQo+ICsN Cj4gKyAgICAgNiAtIE1lbW9yeSBhY2Nlc3MgY29udGFpbmluZyB3YXRjaHBvaW50IHJhbmdlLCB0 cmlnZ2Vycy4NCj4gKw0KPiArICAgICBbQkJCQk9PT09PT09PQkJCQl0NCj4gKyAgKi8NCj4gKw0K PiArICAvKiBJZiB0aGVyZSBhcmUgbm8gbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMgYXQgUEMsIHRo aXMgbXVzdCBiZSBhIGhhcmR3YXJlDQo+ICsgICAgIGJyZWFrcG9pbnQgaGl0LiAgUmV0dXJuIGVh cmx5Lg0KPiArDQo+ICsgICAgIElmIGEgaGFyZHdhcmUgYnJlYWtwb2ludCBpcyBwbGFjZWQgYXQg YSBQQyBjb250YWluaW5nIGEgbG9hZC9zdG9yZQ0KPiArICAgICBpbnN0cnVjdGlvbiwgd2Ugd2ls bCBnbyB0aHJvdWdoIHRoZSBtZW1vcnkgYWNjZXNzIHNpemUgY2hlY2sgYW55d2F5LCBidXQNCj4g KyAgICAgd2lsbCBldmVudHVhbGx5IGZpZ3VyZSBvdXQgdGhlcmUgYXJlIG5vIHdhdGNocG9pbnRz IG1hdGNoaW5nIHN1Y2ggYW4NCj4gKyAgICAgYWRkcmVzcy4NCj4gKw0KPiArICAgICBUaGVyZSBp cyBvbmUgY29ybmVyIGNhc2UgdGhvdWdoLCB3aGljaCBpcyBoYXZpbmcgYSBoYXJkd2FyZSBicmVh a3BvaW50IGFuZA0KPiArICAgICBhIGhhcmR3YXJlIHdhdGNocG9pbnQgYXQgUEMsIHdoZW4gUEMg Y29udGFpbnMgYSBsb2FkL3N0b3JlDQo+ICsgICAgIGluc3RydWN0aW9uLiAgVGhhdCBpcyBhbiBh bWJpZ3VvdXMgY2FzZSB0aGF0IGlzIGhhcmQgdG8gZGlmZmVyZW50aWF0ZS4NCj4gKw0KPiArICAg ICBUaGVyZSdzIG5vdCBtdWNoIHdlIGNhbiBkbyBhYm91dCB0aGF0IHVubGVzcyB0aGUga2VybmVs IHNlbmRzIHVzIGVub3VnaA0KPiArICAgICBpbmZvcm1hdGlvbiB0byB0ZWxsIHRoZW0gYXBhcnQu ICAqLw0KPiArICBpZiAoIUxPQURfU1RPUkVfUCAoaW5zbikpDQo+ICsgICAgcmV0dXJuIGZhbHNl Ow0KPiArDQo+ICsgIC8qIEdldCB0aGUgbWVtb3J5IGFjY2VzcyBzaXplIGZvciB0aGUgaW5zdHJ1 Y3Rpb24gYXQgUEMuICAqLw0KPiArICB1bnNpZ25lZCBpbnQgbWVtb3J5X2FjY2Vzc19zaXplID0g Z2V0X2xvYWRfc3RvcmVfYWNjZXNzX3NpemUgKGluc24pOw0KPiArDQo+ICsgIGZvciAoaW50IGkg PSBhYXJjaDY0X251bV93cF9yZWdzIC0gMTsgaSA+PSAwOyAtLWkpDQo+ICsgICAgew0KPiArICAg ICAgY29uc3QgdW5zaWduZWQgaW50IG9mZnNldA0KPiArCT0gYWFyY2g2NF93YXRjaHBvaW50X29m ZnNldCAoc3RhdGUtPmRyX2N0cmxfd3BbaV0pOw0KPiArICAgICAgY29uc3QgdW5zaWduZWQgaW50 IGxlbiA9IGFhcmNoNjRfd2F0Y2hwb2ludF9sZW5ndGggKHN0YXRlLT5kcl9jdHJsX3dwW2ldKTsN Cj4gKyAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX3dhdGNoID0gc3RhdGUtPmRyX2FkZHJfd3Bb aV0gKyBvZmZzZXQ7DQo+ICsgICAgICBjb25zdCBDT1JFX0FERFIgYWRkcl9vcmlnID0gc3RhdGUt PmRyX2FkZHJfb3JpZ193cFtpXTsNCj4gKw0KPiArICAgICAgaWYgKChzdGF0ZS0+ZHJfcmVmX2Nv dW50X3dwW2ldDQo+ICsJICAmJiBEUl9DT05UUk9MX0VOQUJMRUQgKHN0YXRlLT5kcl9jdHJsX3dw W2ldKSkNCj4gKwkgICYmIGh3X3dhdGNoX3JlZ2lvbnNfb3ZlcmxhcCAoYWRkcl90cmFwLCBtZW1v cnlfYWNjZXNzX3NpemUsDQo+ICsJCQkJICAgICAgIGFkZHJfd2F0Y2gsIGxlbikpDQo+ICsJew0K PiArCSAgLyogQUREUl9UUkFQIHJlcG9ydHMgdGhlIGZpcnN0IGFkZHJlc3Mgb2YgdGhlIG1lbW9y eSByYW5nZQ0KPiArCSAgICAgYWNjZXNzZWQgYnkgdGhlIENQVSwgcmVnYXJkbGVzcyBvZiB3aGF0 IHdhcyB0aGUgbWVtb3J5DQo+ICsJICAgICByYW5nZSB3YXRjaGVkLiAgVGh1cywgYSBsYXJnZSBD UFUgYWNjZXNzIHRoYXQgc3RyYWRkbGVzDQo+ICsJICAgICB0aGUgQUREUl9XQVRDSC4uQUREUl9X QVRDSCtMRU4gcmFuZ2UgbWF5IHJlc3VsdCBpbiBhbg0KPiArCSAgICAgQUREUl9UUkFQIHRoYXQg aXMgbG93ZXIgdGhhbiB0aGUNCj4gKwkgICAgIEFERFJfV0FUQ0guLkFERFJfV0FUQ0grTEVOIHJh bmdlLiAgRS5nLjoNCj4gKw0KPiArCSAgICAgYWRkcjogfCAgIDQgICB8ICAgNSAgIHwgICA2ICAg fCAgIDcgICB8ICAgOCAgIHwNCj4gKwkJCQkgICB8LS0tLSByYW5nZSB3YXRjaGVkIC0tLS18DQo+ ICsJCSAgIHwtLS0tLS0tLS0tLSByYW5nZSBhY2Nlc3NlZCAtLS0tLS0tLS0tLS18DQo+ICsNCj4g KwkgICAgIEluIHRoaXMgY2FzZSwgQUREUl9UUkFQIHdpbGwgYmUgNC4NCj4gKw0KPiArCSAgICAg VG8gbWF0Y2ggYSB3YXRjaHBvaW50IGtub3duIHRvIEdEQiBjb3JlLCB3ZSBtdXN0IG5ldmVyDQo+ ICsJICAgICByZXBvcnQgKkFERFJfUCBvdXRzaWRlIG9mIGFueSBBRERSX1dBVENILi5BRERSX1dB VENIK0xFTg0KPiArCSAgICAgcmFuZ2UuICBBRERSX1dBVENIIDw9IEFERFJfVFJBUCA8IEFERFJf T1JJRyBpcyBhIGZhbHNlDQo+ICsJICAgICBwb3NpdGl2ZSBvbiBrZXJuZWxzIG9sZGVyIHRoYW4g NC4xMC4gIFNlZSBQUg0KPiArCSAgICAgZXh0ZXJuYWwvMjAyMDcuICAqLw0KPiArCSAgKmFkZHJf cCA9IGFkZHJfb3JpZzsNCj4gKwkgIHJldHVybiB0cnVlOw0KPiArCX0NCj4gKyAgICB9DQo+ICsN Cj4gKyAgLyogTm8gaGFyZHdhcmUgd2F0Y2hwb2ludCBoaXRzIGRldGVjdGVkLiAgKi8NCj4gKyAg cmV0dXJuIGZhbHNlOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvZ2RiL25hdC9hYXJjaDY0LWxpbnV4 LWh3LXBvaW50LmggYi9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuaA0KPiBpbmRleCAy ZmM0YjQwMGVjZS4uMmEwOGY2YWQxMjIgMTAwNjQ0DQo+IC0tLSBhL2dkYi9uYXQvYWFyY2g2NC1s aW51eC1ody1wb2ludC5oDQo+ICsrKyBiL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5o DQo+IEBAIC0yMCw2ICsyMCw3IEBADQo+ICNkZWZpbmUgTkFUX0FBUkNINjRfTElOVVhfSFdfUE9J TlRfSA0KPiANCj4gI2luY2x1ZGUgImdkYnN1cHBvcnQvYnJlYWstY29tbW9uLmgiIC8qIEZvciBl bnVtIHRhcmdldF9od19icF90eXBlLiAgKi8NCj4gKyNpbmNsdWRlICJhcmNoL2FhcmNoNjQtaW5z bi5oIiAvKiBGb3IgYml0L2JpdHMuICAqLw0KPiANCj4gLyogTWFjcm8gZGVmaW5pdGlvbnMsIGRh dGEgc3RydWN0dXJlcywgYW5kIGNvZGUgZm9yIHRoZSBoYXJkd2FyZQ0KPiAgICBicmVha3BvaW50 IGFuZCBoYXJkd2FyZSB3YXRjaHBvaW50IHN1cHBvcnQgZm9sbG93LiAgV2UgdXNlIHRoZQ0KPiBA QCAtMTMyLDYgKzEzMyw2NCBAQCB0eXBlZGVmIFVMT05HRVNUIGRyX2NoYW5nZWRfdDsNCj4gI2Rl ZmluZSBEUl9IQVNfQ0hBTkdFRCh4KSAoKHgpICE9IDApDQo+ICNkZWZpbmUgRFJfTl9IQVNfQ0hB TkdFRCh4LCBuKSAoKHgpICYgKChkcl9jaGFuZ2VkX3QpMSA8PCAobikpKQ0KPiANCj4gKy8qIE1h Y3JvcyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHZhcmlvdXMgdHlwZXMgb2YgbG9hZC9zdG9yZSBp bnN0cnVjdGlvbnMuICAqLw0KPiArDQo+ICsvKiBSZWd1bGFyIGFuZCBBZHZhbmNlZCBTSU1EIGxv YWQvc3RvcmUgaW5zdHJ1Y3Rpb25zLiAgKi8NCj4gKyNkZWZpbmUgR0VORVJBTF9MT0FEX1NUT1JF X1AoaW5zbikgKGJpdCAoaW5zbiwgMjUpID09IDAgJiYgYml0IChpbnNuLCAyNykgPT0gMSkNCj4g Kw0KPiArLyogU1ZFIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb24uICAqLw0KPiArI2RlZmluZSBTVkVf TE9BRF9TVE9SRV9QKGluc24pIChiaXRzIChpbnNuLCAyNSwgMjgpID09IDB4MgkJICAgICAgXA0K PiArCQkJCSYmIChiaXRzIChpbnNuLCAyOSwgMzEpID09IDB4NAkJICAgICAgXA0KPiArCQkJCSAg ICB8fCBiaXRzIChpbnNuLCAyOSwgMzEpID09IDB4NQkgICAgICBcDQo+ICsJCQkJICAgIHx8IGJp dHMgKGluc24sIDI5LCAzMSkgPT0gMHg2CSAgICAgIFwNCj4gKwkJCQkgICAgfHwgKGJpdHMgKGlu c24sIDI5LCAzMSkgPT0gMHg3CSAgICAgIFwNCj4gKwkJCQkJJiYgKChiaXQgKGluc24sIDE1KSA9 PSAweDAJICAgICAgXA0KPiArCQkJCQkgICAgICYmIChiaXQgKGluc24sIDEzKSA9PSAweDAJICAg ICAgXA0KPiArCQkJCQkJIHx8IGJpdCAoaW5zbiwgMTMpID09IDB4MSkpICAgXA0KPiArCQkJCQkg ICAgIHx8IChiaXQgKGluc24sIDE1KSA9PSAweDEJICAgICAgXA0KPiArCQkJCQkJICYmIGJpdCAo aW5zbiwgMTMpID09IDB4MCkgICAgXA0KPiArCQkJCQkgICAgIHx8IGJpdHMgKGluc24sIDEzLCAx NSkgPT0gMHg2ICAgIFwNCj4gKwkJCQkJICAgICB8fCBiaXRzIChpbnNuLCAxMywgMTUpID09IDB4 NykpKSkNCj4gKw0KPiArLyogQW55IGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb24gKHJlZ3VsYXIsIEFk dmFuY2VkIFNJTUQgb3IgU1ZFKS4gICovDQo+ICsjZGVmaW5lIExPQURfU1RPUkVfUChpbnNuKSAo R0VORVJBTF9MT0FEX1NUT1JFX1AgKGluc24pCQkJICAgICAgXA0KPiArCQkJICAgIHx8IFNWRV9M T0FEX1NUT1JFX1AgKGluc24pKQ0KPiArDQo+ICsvKiBMb2FkL1N0b3JlIHBhaXIgKHJlZ3VsYXIg b3IgdmVjdG9yKS4gICovDQo+ICsjZGVmaW5lIExPQURfU1RPUkVfUEFJUl9QKGluc24pIChiaXQg KGluc24sIDI4KSA9PSAwICYmIGJpdCAoaW5zbiwgMjkpID09IDEpDQo+ICsNCj4gKyNkZWZpbmUg Q09NUEFSRV9TV0FQX1BBSVJfUChpbnNuKSAoYml0cyAoaW5zbiwgMzAsIDMxKSA9PSAwCQkgICAg ICBcDQo+ICsJCQkJICAgJiYgYml0cyAoaW5zbiwgMjgsIDI5KSA9PSAwCQkgICAgICBcDQo+ICsJ CQkJICAgJiYgYml0IChpbnNuLCAyNikgPT0gMAkJICAgICAgXA0KPiArCQkJCSAgICYmIGJpdHMg KGluc24sIDIzLCAyNCkgPT0gMAkJICAgICAgXA0KPiArCQkJCSAgICYmIGJpdCAoaW5zbiwgMTEp ID09IDEpDQo+ICsjZGVmaW5lIExPQURfU1RPUkVfRVhDTFVTSVZFX1BBSVJfUChpbnNuKSAoYml0 IChpbnNuLCAzMSkgPT0gMQkJICAgICAgXA0KPiArCQkJCQkgICAmJiBiaXRzIChpbnNuLCAyOCwg MjkpID09IDAJICAgICAgXA0KPiArCQkJCQkgICAmJiBiaXQgKGluc24sIDI2KSA9PSAwCSAgICAg IFwNCj4gKwkJCQkJICAgJiYgYml0cyAoaW5zbiwgMjMsIDI0KSA9PSAwCSAgICAgIFwNCj4gKwkJ CQkJICAgJiYgYml0IChpbnNuLCAxMSkgPT0gMSkNCj4gKw0KPiArI2RlZmluZSBMT0FEX1NUT1JF X0xJVEVSQUxfUChpbnNuKSAoYml0IChpbnNuLCAyOCkgPT0gMQkJCSAgICAgIFwNCj4gKwkJCQkg ICAgJiYgYml0IChpbnNuLCAyOSkgPT0gMAkJICAgICAgXA0KPiArCQkJCSAgICAmJiBiaXQgKGlu c24sIDI0KSA9PSAwKQ0KPiArDQo+ICsvKiBWZWN0b3IgTG9hZC9TdG9yZSBtdWx0aXBsZSBzdHJ1 Y3R1cmVzLiAgKi8NCj4gKyNkZWZpbmUgTE9BRF9TVE9SRV9NUyhpbnNuKSAoYml0cyAoaW5zbiwg MjgsIDI5KSA9PSAweDAJCQkgICAgICBcDQo+ICsJCQkgICAgICYmIGJpdCAoaW5zbiwgMzEpID09 IDB4MAkJCSAgICAgIFwNCj4gKwkJCSAgICAgJiYgYml0IChpbnNuLCAyNikgPT0gMHgxCQkJICAg ICAgXA0KPiArCQkJICAgICAmJiAoKGJpdHMgKGluc24sIDIzLCAyNCkgPT0gMHgwCQkgICAgICBc DQo+ICsJCQkJICAmJiBiaXRzIChpbnNuLCAxNiwgMjEpID09IDB4MCkJICAgICAgXA0KPiArCQkJ CSB8fCAoYml0cyAoaW5zbiwgMjMsIDI0KSA9PSAweDEJCSAgICAgIFwNCj4gKwkJCQkgICAgICYm IGJpdCAoaW5zbiwgMjEpID09IDB4MCkpKQ0KPiArDQo+ICsvKiBWZWN0b3IgTG9hZC9TdG9yZSBz aW5nbGUgc3RydWN0dXJlLiAgKi8NCj4gKyNkZWZpbmUgTE9BRF9TVE9SRV9TUyhpbnNuKSAoYml0 cyAoaW5zbiwgMjgsIDI5KSA9PSAweDAJCQkgICAgICBcDQo+ICsJCQkgICAgICYmIGJpdCAoaW5z biwgMzEpID09IDB4MAkJCSAgICAgIFwNCj4gKwkJCSAgICAgJiYgYml0IChpbnNuLCAyNikgPT0g MHgxCQkJICAgICAgXA0KPiArCQkJICAgICAmJiAoKGJpdHMgKGluc24sIDIzLCAyNCkgPT0gMHgy CQkgICAgICBcDQo+ICsJCQkJICAmJiBiaXRzIChpbnNuLCAxNiwgMjApID09IDB4MCkJICAgICAg XA0KPiArCQkJCSB8fCAoYml0cyAoaW5zbiwgMjMsIDI0KSA9PSAweDMpKSkNCj4gKw0KDQpJIGRv buKAmXQgbGlrZSB0aGVzZSBhdCBhbGwuIDopDQpJIHdhcyBsb29raW5nIGluIG9wY29kZXMvYWFy Y2g2NCogYW5kIGdkYi9hcmNoL2FhcmNoNjQtaW5zbi4qIHNlZSBpZiB0aGVyZSBpcyBzb21ldGhp bmcgdG8NCnJlc3VzZSwgYnV0IHRoZXJlIHdhcyBub3RoaW5nIG9idmlvdXMuIEFuZCB5b3UgY2Fu 4oCZdCBqdXN0IGNoZWNrIGFnYWluc3QsIHNheSwgdGhlIG9wY29kZXMgaW4NCmFhcmNoNjRfb3Bj b2RlcyBiZWNhdXNlIHlvdSBuZWVkIHRvIGNoZWNrIHNvbWUgYml0cyBmb3IgMC4gDQpJZiB0aGVy ZSBpc27igJl0IGFueXRoaW5nIHN1aXRhYmxlLCB0aGVuIG1heWJlIHRoZXNlIGRlZmluZXMgYmVs b25nIGluIGFhcmNoNjQtaW5zbi5oID8NCg0KDQo+IC8qIFN0cnVjdHVyZSBmb3IgbWFuYWdpbmcg dGhlIGhhcmR3YXJlIGJyZWFrcG9pbnQvd2F0Y2hwb2ludCByZXNvdXJjZXMuDQo+ICAgIERSX0FE RFJfKiBzdG9yZXMgdGhlIGFkZHJlc3MsIERSX0NUUkxfKiBzdG9yZXMgdGhlIGNvbnRyb2wgcmVn aXN0ZXINCj4gICAgY29udGVudCwgYW5kIERSX1JFRl9DT1VOVF8qIGNvdW50cyB0aGUgbnVtYmVy cyBvZiByZWZlcmVuY2VzIHRvIHRoZQ0KPiBAQCAtMTk3LDQgKzI1NiwxMyBAQCBzdHJ1Y3QgYWFy Y2g2NF9kZWJ1Z19yZWdfc3RhdGUgKmFhcmNoNjRfZ2V0X2RlYnVnX3JlZ19zdGF0ZSAocGlkX3Qg cGlkKTsNCj4gDQo+IGludCBhYXJjaDY0X2xpbnV4X3JlZ2lvbl9va19mb3Jfd2F0Y2hwb2ludCAo Q09SRV9BRERSIGFkZHIsIGludCBsZW4pOw0KPiANCj4gK3Vuc2lnbmVkIGludCBnZXRfbG9hZF9z dG9yZV9hY2Nlc3Nfc2l6ZSAoQ09SRV9BRERSIGluc24pOw0KPiArDQo+ICtib29sIGh3X3dhdGNo X3JlZ2lvbnNfb3ZlcmxhcCAoQ09SRV9BRERSIG1lbV9hZGRyLCBzaXplX3QgbWVtX2xlbiwNCj4g KwkJCSAgICAgICBDT1JFX0FERFIgd2F0Y2hfYWRkciwgc2l6ZV90IHdhdGNoX2xlbik7DQo+ICsN Cj4gK2Jvb2wgaHdfd2F0Y2hfZGV0ZWN0X3RyaWdnZXIgKGNvbnN0IHN0cnVjdCBhYXJjaDY0X2Rl YnVnX3JlZ19zdGF0ZSAqc3RhdGUsDQo+ICsJCQkgICAgICBDT1JFX0FERFIgaW5zbiwgQ09SRV9B RERSIHN0b3BwZWRfZGF0YV9hZGRyZXNzLA0KPiArCQkJICAgICAgQ09SRV9BRERSICphZGRyX3Ap Ow0KPiArDQo+ICNlbmRpZiAvKiBOQVRfQUFSQ0g2NF9MSU5VWF9IV19QT0lOVF9IICovDQo+IGRp ZmYgLS1naXQgYS9nZGJzZXJ2ZXIvbGludXgtYWFyY2g2NC1sb3cuY2MgYi9nZGJzZXJ2ZXIvbGlu dXgtYWFyY2g2NC1sb3cuY2MNCj4gaW5kZXggZGFjY2ZlZjc0NmUuLjVkZjYzMmZlNzI0IDEwMDY0 NA0KPiAtLS0gYS9nZGJzZXJ2ZXIvbGludXgtYWFyY2g2NC1sb3cuY2MNCj4gKysrIGIvZ2Ric2Vy dmVyL2xpbnV4LWFhcmNoNjQtbG93LmNjDQo+IEBAIC01MTgsNyArNTE4LDcgQEAgQ09SRV9BRERS DQo+IGFhcmNoNjRfdGFyZ2V0Ojpsb3dfc3RvcHBlZF9kYXRhX2FkZHJlc3MgKCkNCj4gew0KPiAg IHNpZ2luZm9fdCBzaWdpbmZvOw0KPiAtICBpbnQgcGlkLCBpOw0KPiArICBpbnQgcGlkOw0KPiAg IHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGU7DQo+IA0KPiAgIHBpZCA9IGx3 cGlkX29mIChjdXJyZW50X3RocmVhZCk7DQo+IEBAIC01MzgsNDUgKzUzOCwyMCBAQCBhYXJjaDY0 X3RhcmdldDo6bG93X3N0b3BwZWRfZGF0YV9hZGRyZXNzICgpDQo+ICAgY29uc3QgQ09SRV9BRERS IGFkZHJfdHJhcA0KPiAgICAgPSBhZGRyZXNzX3NpZ25pZmljYW50ICgoQ09SRV9BRERSKSBzaWdp bmZvLnNpX2FkZHIpOw0KPiANCj4gKyAgc3RydWN0IHJlZ2NhY2hlICpyZWdzID0gZ2V0X3RocmVh ZF9yZWdjYWNoZSAoY3VycmVudF90aHJlYWQsIDEpOw0KPiArICBDT1JFX0FERFIgdHJpZ2dlcl9w YyA9IHJlZ2NhY2hlX3JlYWRfcGMgKHJlZ3MpOw0KPiArICB1aW50MzJfdCBpbnNuOw0KPiArICBy ZWFkX21lbW9yeSAodHJpZ2dlcl9wYywgKGdkYl9ieXRlICopICZpbnNuLCA0KTsNCj4gKw0KPiAg IC8qIENoZWNrIGlmIHRoZSBhZGRyZXNzIG1hdGNoZXMgYW55IHdhdGNoZWQgYWRkcmVzcy4gICov DQo+ICAgc3RhdGUgPSBhYXJjaDY0X2dldF9kZWJ1Z19yZWdfc3RhdGUgKHBpZF9vZiAoY3VycmVu dF90aHJlYWQpKTsNCj4gLSAgZm9yIChpID0gYWFyY2g2NF9udW1fd3BfcmVncyAtIDE7IGkgPj0g MDsgLS1pKQ0KPiAtICAgIHsNCj4gLSAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBvZmZzZXQNCj4g LQk9IGFhcmNoNjRfd2F0Y2hwb2ludF9vZmZzZXQgKHN0YXRlLT5kcl9jdHJsX3dwW2ldKTsNCj4g LSAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBsZW4gPSBhYXJjaDY0X3dhdGNocG9pbnRfbGVuZ3Ro IChzdGF0ZS0+ZHJfY3RybF93cFtpXSk7DQo+IC0gICAgICBjb25zdCBDT1JFX0FERFIgYWRkcl93 YXRjaCA9IHN0YXRlLT5kcl9hZGRyX3dwW2ldICsgb2Zmc2V0Ow0KPiAtICAgICAgY29uc3QgQ09S RV9BRERSIGFkZHJfd2F0Y2hfYWxpZ25lZCA9IGFsaWduX2Rvd24gKHN0YXRlLT5kcl9hZGRyX3dw W2ldLCA4KTsNCj4gLSAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX29yaWcgPSBzdGF0ZS0+ZHJf YWRkcl9vcmlnX3dwW2ldOw0KPiAtDQo+IC0gICAgICBpZiAoc3RhdGUtPmRyX3JlZl9jb3VudF93 cFtpXQ0KPiAtCSAgJiYgRFJfQ09OVFJPTF9FTkFCTEVEIChzdGF0ZS0+ZHJfY3RybF93cFtpXSkN Cj4gLQkgICYmIGFkZHJfdHJhcCA+PSBhZGRyX3dhdGNoX2FsaWduZWQNCj4gLQkgICYmIGFkZHJf dHJhcCA8IGFkZHJfd2F0Y2ggKyBsZW4pDQo+IC0Jew0KPiAtCSAgLyogQUREUl9UUkFQIHJlcG9y dHMgdGhlIGZpcnN0IGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSByYW5nZQ0KPiAtCSAgICAgYWNjZXNz ZWQgYnkgdGhlIENQVSwgcmVnYXJkbGVzcyBvZiB3aGF0IHdhcyB0aGUgbWVtb3J5DQo+IC0JICAg ICByYW5nZSB3YXRjaGVkLiAgVGh1cywgYSBsYXJnZSBDUFUgYWNjZXNzIHRoYXQgc3RyYWRkbGVz DQo+IC0JICAgICB0aGUgQUREUl9XQVRDSC4uQUREUl9XQVRDSCtMRU4gcmFuZ2UgbWF5IHJlc3Vs dCBpbiBhbg0KPiAtCSAgICAgQUREUl9UUkFQIHRoYXQgaXMgbG93ZXIgdGhhbiB0aGUNCj4gLQkg ICAgIEFERFJfV0FUQ0guLkFERFJfV0FUQ0grTEVOIHJhbmdlLiAgRS5nLjoNCj4gLQ0KPiAtCSAg ICAgYWRkcjogfCAgIDQgICB8ICAgNSAgIHwgICA2ICAgfCAgIDcgICB8ICAgOCAgIHwNCj4gLQkJ CQkgICB8LS0tLSByYW5nZSB3YXRjaGVkIC0tLS18DQo+IC0JCSAgIHwtLS0tLS0tLS0tLSByYW5n ZSBhY2Nlc3NlZCAtLS0tLS0tLS0tLS18DQo+IC0NCj4gLQkgICAgIEluIHRoaXMgY2FzZSwgQURE Ul9UUkFQIHdpbGwgYmUgNC4NCj4gLQ0KPiAtCSAgICAgVG8gbWF0Y2ggYSB3YXRjaHBvaW50IGtu b3duIHRvIEdEQiBjb3JlLCB3ZSBtdXN0IG5ldmVyDQo+IC0JICAgICByZXBvcnQgKkFERFJfUCBv dXRzaWRlIG9mIGFueSBBRERSX1dBVENILi5BRERSX1dBVENIK0xFTg0KPiAtCSAgICAgcmFuZ2Uu ICBBRERSX1dBVENIIDw9IEFERFJfVFJBUCA8IEFERFJfT1JJRyBpcyBhIGZhbHNlDQo+IC0JICAg ICBwb3NpdGl2ZSBvbiBrZXJuZWxzIG9sZGVyIHRoYW4gNC4xMC4gIFNlZSBQUg0KPiAtCSAgICAg ZXh0ZXJuYWwvMjAyMDcuICAqLw0KPiAtCSAgcmV0dXJuIGFkZHJfb3JpZzsNCj4gLQl9DQo+IC0g ICAgfQ0KPiANCj4gLSAgcmV0dXJuIChDT1JFX0FERFIpIDA7DQo+ICsgIENPUkVfQUREUiB0cmln Z2VyX2FkZHI7DQo+ICsNCj4gKyAgaWYgKGh3X3dhdGNoX2RldGVjdF90cmlnZ2VyIChzdGF0ZSwg aW5zbiwgYWRkcl90cmFwLCAmdHJpZ2dlcl9hZGRyKSkNCj4gKyAgICByZXR1cm4gdHJpZ2dlcl9h ZGRyOw0KPiArDQo+ICsgIHJldHVybiAwOw0KPiB9DQo+IA0KPiAvKiBJbXBsZW1lbnRhdGlvbiBv ZiBsaW51eCB0YXJnZXQgb3BzIG1ldGhvZCAibG93X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCIuICAq Lw0KPiAtLSANCj4gMi4yNS4xDQo+IA0KDQo=