From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 375C9C43603 for ; Fri, 20 Dec 2019 06:52:39 +0000 (UTC) Received: from dpdk.org (dpdk.org [92.243.14.124]) by mail.kernel.org (Postfix) with ESMTP id 8A7592465E for ; Fri, 20 Dec 2019 06:52:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.b="I86EanAG"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.b="I86EanAG" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8A7592465E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=dev-bounces@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 627E5330; Fri, 20 Dec 2019 07:52:37 +0100 (CET) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30040.outbound.protection.outlook.com [40.107.3.40]) by dpdk.org (Postfix) with ESMTP id A420A1F5 for ; Fri, 20 Dec 2019 07:52:35 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4x6/f3PoTUR/zLRVbYjQimZA50GKTf+Bjocm7z+hiI8=; b=I86EanAGgzCq8DtdDh4WreStW4gTtHMCt51edZlUuOdd90J2dWNXxsQhMIW/japj73L73wR4WAky2D6RXLRaaok96FwPCrXKYb3roQO7UIz603BLWO0g0OrtqP0sGpW2STcn4FFOSfax1zwL77Eej8LxftHI5UzBmtxN+3sCyIY= Received: from VI1PR0801CA0081.eurprd08.prod.outlook.com (2603:10a6:800:7d::25) by AM0PR08MB3266.eurprd08.prod.outlook.com (2603:10a6:208:66::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2559.16; Fri, 20 Dec 2019 06:52:33 +0000 Received: from AM5EUR03FT052.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e08::200) by VI1PR0801CA0081.outlook.office365.com (2603:10a6:800:7d::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2559.14 via Frontend Transport; Fri, 20 Dec 2019 06:52:32 +0000 Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dpdk.org; dmarc=bestguesspass 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 AM5EUR03FT052.mail.protection.outlook.com (10.152.17.161) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2559.14 via Frontend Transport; Fri, 20 Dec 2019 06:52:32 +0000 Received: ("Tessian outbound 4f3bc9719026:v40"); Fri, 20 Dec 2019 06:52:32 +0000 X-CR-MTA-TID: 64aa7808 Received: from a01c1f600496.3 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 2E6BA224-3ED6-4D06-AA1F-81D8E5DC902C.1; Fri, 20 Dec 2019 06:52:27 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id a01c1f600496.3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 20 Dec 2019 06:52:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZRqpSrNd0kMoGRA91m2nJlT5lChbTnq+XAfDL3ZGqsQ077hTlJMqfKI/FRGFQWhd6PEZRhc23dMFYX/F8r0Cud3yaKDtl7Q98MkLiWbsPR9d/7u5eJlHUDGOEztoDnFFgK3FkAb52qisuSPlc6QrydiAmcMOdoWUOhWQqJMTUcRYldq5lc/rCCYYW4FRxhuRI0QvsONoFKAyavYMC0PBdApXlOiIV/yo0r9MXB5BnH7vKZ7244m5ZkU0kjUiWc12Z6NSgpKulJXlYFK1sScUKjHAlWMyxbwNM9qNTuEVW+fX3u8Ntkfc6NLGabWzmGVO4of5zBkzY0KWs3UlojuyTQ== 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=4x6/f3PoTUR/zLRVbYjQimZA50GKTf+Bjocm7z+hiI8=; b=aRoQV6/H+71iu3tKRM4aUAeZ+56apOShldolfUtjyQ2OB+o2u03U1OfGRVD1mxHgV3m7zOcn5zZ07tVfUsv+gAQ3mAH2E7DeVS1KAnuysqQ7K918xVqF0B7LDJUCS7kqc0oqjcfdeX7p13Y66EKo4+2WuhzHs09YQLLee35R+NKUNeFJ0nGuHornrDYR0+d51KySkFPckZdImO53HVvtXy88rjnWOg482lXJNWfUXeTveu4aiIWq7EQCSFJeyiwAszkgzyAwPEEDayrO6sASTPhLVmg1XOeyzkTIyskt62y8KIv3yO6qDLi9P88i9+iuVKZZ2hRXkFEbUprHx602Vw== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4x6/f3PoTUR/zLRVbYjQimZA50GKTf+Bjocm7z+hiI8=; b=I86EanAGgzCq8DtdDh4WreStW4gTtHMCt51edZlUuOdd90J2dWNXxsQhMIW/japj73L73wR4WAky2D6RXLRaaok96FwPCrXKYb3roQO7UIz603BLWO0g0OrtqP0sGpW2STcn4FFOSfax1zwL77Eej8LxftHI5UzBmtxN+3sCyIY= Received: from VE1PR08MB5149.eurprd08.prod.outlook.com (20.179.30.27) by VE1PR08MB4896.eurprd08.prod.outlook.com (10.255.27.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2559.15; Fri, 20 Dec 2019 06:52:24 +0000 Received: from VE1PR08MB5149.eurprd08.prod.outlook.com ([fe80::9df4:7af6:b62d:f94e]) by VE1PR08MB5149.eurprd08.prod.outlook.com ([fe80::9df4:7af6:b62d:f94e%7]) with mapi id 15.20.2538.019; Fri, 20 Dec 2019 06:52:24 +0000 From: Honnappa Nagarahalli To: Joyce Kong , "thomas@monjalon.net" , "stephen@networkplumber.org" , "david.marchand@redhat.com" , "mb@smartsharesystems.com" , "jerinj@marvell.com" , "bruce.richardson@intel.com" , "ravi1.kumar@amd.com" , "rmody@marvell.com" , "shshaikh@marvell.com" , "xuanziyang2@huawei.com" , "cloud.wangxiaoyun@huawei.com" , "zhouguoyang@huawei.com" , Phil Yang , Gavin Hu , Honnappa Nagarahalli CC: nd , "dev@dpdk.org" , nd Thread-Topic: [PATCH v6 1/6] lib/eal: implement the family of rte bit operation APIs Thread-Index: AQHVtWiBQ1n0Dk5tDEKroTViQBZDeKfCfMMA Date: Fri, 20 Dec 2019 06:52:23 +0000 Message-ID: References: <1571125801-45773-1-git-send-email-joyce.kong@arm.com> <1576648808-24765-2-git-send-email-joyce.kong@arm.com> In-Reply-To: <1576648808-24765-2-git-send-email-joyce.kong@arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 2f0c46d2-271d-4656-82df-62a2d71c4e3a.0 x-checkrecipientchecked: true Authentication-Results-Original: spf=none (sender IP is ) smtp.mailfrom=Honnappa.Nagarahalli@arm.com; x-originating-ip: [217.140.111.135] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: fab5fa64-f929-408f-3b0d-08d785193054 X-MS-TrafficTypeDiagnostic: VE1PR08MB4896:|VE1PR08MB4896:|AM0PR08MB3266: x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true x-ms-oob-tlc-oobclassifiers: OLM:4125;OLM:4125; x-forefront-prvs: 025796F161 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM; SFS:(10009020)(4636009)(396003)(376002)(136003)(346002)(366004)(39860400002)(13464003)(199004)(189003)(66574012)(9686003)(71200400001)(4326008)(52536014)(86362001)(8676002)(478600001)(2906002)(5660300002)(54906003)(110136005)(316002)(6506007)(53546011)(81156014)(186003)(81166006)(26005)(8936002)(7696005)(33656002)(30864003)(55016002)(66476007)(7416002)(66556008)(64756008)(66446008)(66946007)(76116006)(87944003)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR08MB4896; H:VE1PR08MB5149.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: NxdlQm4DI/f9uM0TXW3ENrsYj258CUxWE69/lc201vEX13AlJmPI6fnp/bz9jRNDgUGuvWAGjUtLVjWjDVhYfKMwLBVhjudfGcFPL/TvumyMrgmmAbuT0CINy9AYVbH3mRd1nayJirnbSDmPBidFlMRUjO71w9G53nCP8+56k8KlrHmumkno4z4k3fr/SmL4VVSS/IMUkbRLebqWTaETzb5xJ1iOsbKZmSYCoTD/iG5LP0Yxiq75z7IYX5ivXReOeCEJzrBGebNvAKxVPSjqAvHbUsAqLKXSDwSiX7JmsB8cfT8iXPygLiKYl4qrZxPeRKic4fXgvQ8WZyR4qwpNHgI6nblxX5BsElwLE2zMZoZs1ExVOaXocV4WC6OFBJQP8+lO7us4kMV3eyjdeHjX3bKW1LWdYHVFyZUdX3fUE0jykZ3JeofMye4+8t9HkMEzsMYu+ftFXHdfSin85IHtXyuo5fseceZcH2VdReBh7bsMEy5I9uMNM2FG/qAfnE/HXYsM0wgIbdgP2EDmbkNBYh2wPm1GGOfrlogd//PlebwBSBnalcYmcm0iJyAAt2Nn Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB4896 Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Honnappa.Nagarahalli@arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT052.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123; IPV:CAL; SCL:-1; CTRY:IE; EFV:NLI; SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(396003)(376002)(136003)(346002)(189003)(199004)(13464003)(54906003)(6506007)(53546011)(55016002)(356004)(36906005)(110136005)(81156014)(81166006)(8676002)(9686003)(33656002)(7696005)(26005)(2906002)(336012)(86362001)(30864003)(76130400001)(52536014)(66574012)(8936002)(4326008)(5660300002)(478600001)(316002)(26826003)(70586007)(70206006)(186003)(87944003)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR08MB3266; H:64aa7808-outbound-1.mta.getcheckrecipient.com; FPR:; SPF:Pass; LANG:en; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; MX:1; A:1; X-MS-Office365-Filtering-Correlation-Id-Prvs: 929ec893-c421-4804-8e1e-08d785192b44 NoDisclaimer: True X-Forefront-PRVS: 025796F161 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: y4C62M0/l/sKKYWzxMQrunbg0xjEtuOm755ID1Dq05wh/orPZFaTOpbnO2tg/D9JQramOZchuwEnOtpVbd0PJTGXmLLH5R0GyrqGkcgTQawllV3om6Vdg95riuaO/tufm7Tv5fQU0DYk/ABBiYI9mnpAcasbQt/zZXnWYfC3krIVTbICdRqs1E7gC5E2XY5FJci5OkfoIBrIttNrA0xn6es/RO+HlNtza+GNv2pHqf2/rbKoe0VW3/NzF5VA/0AqE+cdvyCVuJGsG9YkGU3/V+oO83F/hrtgp2U2vPoiN7BYBo4wOuEWYrQqb/3+SkGvSb/JPzmEN77magnupEYMhGjp0iZv8PpgdjlVtar0ATjrd6W4Lv40ropwdD8WGKn8lS4ATcz5sBK+kLY6wWaaxBpDAjKA2jkizA1hxFvv/44PytBTljzsC3SIWlqbsc3NlEMqShkAKkN9ERfxC7eC7gt9e3D+VOS+8IZXkeqLdBtsmbWgtq+V4Pot7oOhpfLAy6biUhYpi6YJxh0qnFVqN9b/zlPM0LzoS8kYn9nRB0XArPAsTNHvLjBnhPR74j3U X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Dec 2019 06:52:32.6937 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fab5fa64-f929-408f-3b0d-08d785193054 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-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3266 Subject: Re: [dpdk-dev] [PATCH v6 1/6] lib/eal: implement the family of rte bit operation APIs X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgSm95Y2UsDQoJVGhlc2UgQVBJcyBzZWVtIHRvIGJlIHdyaXR0ZW4gY29uc2lkZXJpbmcgdGhl IFBNRCByZXF1aXJlbWVudHMuIElzIHRoZXJlIGEgbmVlZCB0byBleHBvc2UgdGhlc2UgdG8gYXBw bGljYXRpb25zIChleHRlcm5hbCB0byBEUERLPykuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gRnJvbTogSm95Y2UgS29uZyA8am95Y2Uua29uZ0Bhcm0uY29tPg0KPiBTZW50OiBX ZWRuZXNkYXksIERlY2VtYmVyIDE4LCAyMDE5IDEyOjAwIEFNDQo+IFRvOiB0aG9tYXNAbW9uamFs b24ubmV0OyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsNCj4gZGF2aWQubWFyY2hhbmRAcmVk aGF0LmNvbTsgbWJAc21hcnRzaGFyZXN5c3RlbXMuY29tOw0KPiBqZXJpbmpAbWFydmVsbC5jb207 IGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tOyByYXZpMS5rdW1hckBhbWQuY29tOw0KPiBybW9k eUBtYXJ2ZWxsLmNvbTsgc2hzaGFpa2hAbWFydmVsbC5jb207IHh1YW56aXlhbmcyQGh1YXdlaS5j b207DQo+IGNsb3VkLndhbmd4aWFveXVuQGh1YXdlaS5jb207IHpob3VndW95YW5nQGh1YXdlaS5j b207IEhvbm5hcHBhDQo+IE5hZ2FyYWhhbGxpIDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29t PjsgUGhpbCBZYW5nDQo+IDxQaGlsLllhbmdAYXJtLmNvbT47IEdhdmluIEh1IDxHYXZpbi5IdUBh cm0uY29tPg0KPiBDYzogbmQgPG5kQGFybS5jb20+OyBkZXZAZHBkay5vcmcNCj4gU3ViamVjdDog W1BBVENIIHY2IDEvNl0gbGliL2VhbDogaW1wbGVtZW50IHRoZSBmYW1pbHkgb2YgcnRlIGJpdCBv cGVyYXRpb24NCj4gQVBJcw0KPiANCj4gVGhlcmUgYXJlIGEgbG90IGZ1bmN0aW9ucyBvZiBiaXQg b3BlcmF0aW9ucyBzY2F0dGVyZWQgYW5kIGR1cGxpY2F0ZWQgaW4gUE1EcywNCj4gY29uc29saWRh dGluZyB0aGVtIGludG8gYSBjb21tb24gQVBJIGZhbWlseSBpcyBuZWNlc3NhcnkuIEZ1cnRoZXJt b3JlLA0KPiB3aGVuIHRoZSBiaXQgb3BlcmF0aW9uIGlzIGFwcGxpZWQgdG8gdGhlIElPIGRldmlj ZXMsIHVzZSBfX0FUT01JQ19BQ1FfUkVMDQo+IHRvIGVuc3VyZSB0aGUgb3JkZXJpbmcgZm9yIGlv IGJpdCBvcGVyYXRpb24uDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBKb3ljZSBLb25nIDxqb3ljZS5r b25nQGFybS5jb20+DQo+IFJldmlld2VkLWJ5OiBHYXZpbiBIdSA8Z2F2aW4uaHVAYXJtLmNvbT4N Cj4gUmV2aWV3ZWQtYnk6IFBoaWwgWWFuZyA8cGhpbC55YW5nQGFybS5jb20+DQo+IEFja2VkLWJ5 OiBNb3J0ZW4gQnLDuHJ1cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPg0KPiAtLS0NCj4gIE1B SU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArDQo+ICBkb2Mv YXBpL2RveHktYXBpLWluZGV4Lm1kICAgICAgICAgICAgICAgICAgfCAgIDUgKy0NCj4gIGxpYi9s aWJydGVfZWFsL2NvbW1vbi9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMSArDQo+ICBsaWIvbGli cnRlX2VhbC9jb21tb24vaW5jbHVkZS9ydGVfYml0b3BzLmggfCA0NzQNCj4gKysrKysrKysrKysr KysrKysrKysrKysrKysrKysNCj4gIGxpYi9saWJydGVfZWFsL2NvbW1vbi9tZXNvbi5idWlsZCAg ICAgICAgICB8ICAgMyArLQ0KPiAgNSBmaWxlcyBjaGFuZ2VkLCA0ODUgaW5zZXJ0aW9ucygrKSwg MyBkZWxldGlvbnMoLSkgIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBsaWIvbGlicnRlX2VhbC9jb21t b24vaW5jbHVkZS9ydGVfYml0b3BzLmgNCj4gDQo+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBi L01BSU5UQUlORVJTDQo+IGluZGV4IDQzOTVkOGQuLmQyYTI5YTIgMTAwNjQ0DQo+IC0tLSBhL01B SU5UQUlORVJTDQo+ICsrKyBiL01BSU5UQUlORVJTDQo+IEBAIC0yMzYsNiArMjM2LDExIEBAIE06 IENyaXN0aWFuIER1bWl0cmVzY3UNCj4gPGNyaXN0aWFuLmR1bWl0cmVzY3VAaW50ZWwuY29tPg0K PiAgRjogbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2luY2x1ZGUvcnRlX2JpdG1hcC5oDQo+ICBGOiBh cHAvdGVzdC90ZXN0X2JpdG1hcC5jDQo+IA0KPiArQml0b3BzDQo+ICtNOiBKb3ljZSBLb25nIDxq b3ljZS5rb25nQGFybS5jb20+DQo+ICtGOiBsaWIvbGlicnRlX2VhbC9jb21tb24vaW5jbHVkZS9y dGVfYml0b3BzLmgNCj4gK0Y6IGFwcC90ZXN0L3Rlc3RfYml0b3BzLmMNCj4gKw0KPiAgTUNTbG9j ayAtIEVYUEVSSU1FTlRBTA0KPiAgTTogUGhpbCBZYW5nIDxwaGlsLnlhbmdAYXJtLmNvbT4NCj4g IEY6IGxpYi9saWJydGVfZWFsL2NvbW1vbi9pbmNsdWRlL2dlbmVyaWMvcnRlX21jc2xvY2suaA0K PiBkaWZmIC0tZ2l0IGEvZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZCBiL2RvYy9hcGkvZG94eS1h cGktaW5kZXgubWQgaW5kZXgNCj4gZGZmNDk2Yi4uYWRlN2MwMSAxMDA2NDQNCj4gLS0tIGEvZG9j L2FwaS9kb3h5LWFwaS1pbmRleC5tZA0KPiArKysgYi9kb2MvYXBpL2RveHktYXBpLWluZGV4Lm1k DQo+IEBAIC0xMzMsMTIgKzEzMywxMyBAQCBUaGUgcHVibGljIEFQSSBoZWFkZXJzIGFyZSBncm91 cGVkIGJ5IHRvcGljczoNCj4gICAgW0JQRl0gICAgICAgICAgICAgICAgKEByZWYgcnRlX2JwZi5o KQ0KPiANCj4gIC0gKipjb250YWluZXJzKio6DQo+ICsgIFtiaXRtYXBdICAgICAgICAgICAgIChA cmVmIHJ0ZV9iaXRtYXAuaCksDQo+ICsgIFtiaXRvcHNdICAgICAgICAgICAgIChAcmVmIHJ0ZV9i aXRvcHMuaCksDQo+ICAgIFttYnVmXSAgICAgICAgICAgICAgIChAcmVmIHJ0ZV9tYnVmLmgpLA0K PiAgICBbbWJ1ZiBwb29sIG9wc10gICAgICAoQHJlZiBydGVfbWJ1Zl9wb29sX29wcy5oKSwNCj4g ICAgW3JpbmddICAgICAgICAgICAgICAgKEByZWYgcnRlX3JpbmcuaCksDQo+ICAgIFtzdGFja10g ICAgICAgICAgICAgIChAcmVmIHJ0ZV9zdGFjay5oKSwNCj4gLSAgW3RhaWxxXSAgICAgICAgICAg ICAgKEByZWYgcnRlX3RhaWxxLmgpLA0KPiAtICBbYml0bWFwXSAgICAgICAgICAgICAoQHJlZiBy dGVfYml0bWFwLmgpDQo+ICsgIFt0YWlscV0gICAgICAgICAgICAgIChAcmVmIHJ0ZV90YWlscS5o KQ0KPiANCj4gIC0gKipwYWNrZXQgZnJhbWV3b3JrKio6DQo+ICAgICogW3BvcnRdICAgICAgICAg ICAgIChAcmVmIHJ0ZV9wb3J0LmgpOg0KPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9lYWwvY29t bW9uL01ha2VmaWxlDQo+IGIvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL01ha2VmaWxlIGluZGV4IGMy YzZkOTIuLmRkMDI1YzEgMTAwNjQ0DQo+IC0tLSBhL2xpYi9saWJydGVfZWFsL2NvbW1vbi9NYWtl ZmlsZQ0KPiArKysgYi9saWIvbGlicnRlX2VhbC9jb21tb24vTWFrZWZpbGUNCj4gQEAgLTE5LDYg KzE5LDcgQEAgSU5DICs9IHJ0ZV9tYWxsb2MuaCBydGVfa2VlcGFsaXZlLmggcnRlX3RpbWUuaCAg SU5DICs9DQo+IHJ0ZV9zZXJ2aWNlLmggcnRlX3NlcnZpY2VfY29tcG9uZW50LmggIElOQyArPSBy dGVfYml0bWFwLmggcnRlX3ZmaW8uaA0KPiBydGVfaHlwZXJ2aXNvci5oIHJ0ZV90ZXN0LmggIElO QyArPSBydGVfcmVjaXByb2NhbC5oIHJ0ZV9mYmFycmF5LmggcnRlX3V1aWQuaA0KPiArSU5DICs9 IHJ0ZV9iaXRvcHMuaA0KPiANCj4gIEdFTkVSSUNfSU5DIDo9IHJ0ZV9hdG9taWMuaCBydGVfYnl0 ZW9yZGVyLmggcnRlX2N5Y2xlcy5oIHJ0ZV9wcmVmZXRjaC5oDQo+IEdFTkVSSUNfSU5DICs9IHJ0 ZV9tZW1jcHkuaCBydGVfY3B1ZmxhZ3MuaCBkaWZmIC0tZ2l0DQo+IGEvbGliL2xpYnJ0ZV9lYWwv Y29tbW9uL2luY2x1ZGUvcnRlX2JpdG9wcy5oDQo+IGIvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2lu Y2x1ZGUvcnRlX2JpdG9wcy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAw MDAuLjM0MTU4ZDENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9saWIvbGlicnRlX2VhbC9jb21t b24vaW5jbHVkZS9ydGVfYml0b3BzLmgNCj4gQEAgLTAsMCArMSw0NzQgQEANCj4gKy8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gKyAqIENvcHlyaWdodChjKSAyMDE5 IEFybSBMaW1pdGVkDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfUlRFX0JJVE9QU19IXw0KPiAr I2RlZmluZSBfUlRFX0JJVE9QU19IXw0KPiArDQo+ICsvKioNCj4gKyAqIEBmaWxlDQo+ICsgKiBC aXQgT3BlcmF0aW9ucw0KPiArICoNCj4gKyAqIFRoaXMgZmlsZSBkZWZpbmVzIGEgQVBJIGZvciBi aXQgb3BlcmF0aW9ucyB3aXRob3V0L3dpdGggbWVtb3J5IG9yZGVyaW5nLg0KPiArICovDQo+ICsN Cj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gKyNpbmNsdWRlIDxydGVfZGVidWcuaD4NCj4gKyNp bmNsdWRlIDxydGVfY29tcGF0Lmg+DQo+ICsNCj4gKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSAzMiBiaXQgb3BlcmF0aW9ucw0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov DQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhp cyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvcg0KPiArbm90aWNl DQo+ICsgKg0KPiArICogR2V0IHRoZSB0YXJnZXQgYml0IGZyb20gYSAzMi1iaXQgdmFsdWUgd2l0 aG91dCBtZW1vcnkgb3JkZXJpbmcuDQo+ICsgKg0KPiArICogQHBhcmFtIG5yDQo+ICsgKiAgIFRo ZSB0YXJnZXQgYml0IHRvIGdldC4NCj4gKyAqIEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRoZSBhZGRy ZXNzIGhvbGRpbmcgdGhlIGJpdC4NCj4gKyAqIEByZXR1cm4NCj4gKyAqICAgVGhlIHRhcmdldCBi aXQuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiArc3RhdGljIGlubGluZSB1aW50 MzJfdA0KPiArcnRlX2dldF9iaXQzMl9yZWxheGVkKHVuc2lnbmVkIGludCBuciwgdWludDMyX3Qg KmFkZHIpIHsNCldoeSBub3QgcGFzcyB0aGUgbWVtb3J5IG9yZGVyIGFzIGEgcGFyYW1ldGVyPyBJ dCB3b3VsZCByZWR1Y2UgdGhlIG51bWJlciBvZiBBUEkgY2FsbHMgYnkgaGFsZi4NCg0KPiArCVJU RV9BU1NFUlQobnIgPCAzMik7DQo+ICsNCj4gKwl1aW50MzJfdCBtYXNrID0gVUlOVDMyX0MoMSkg PDwgbnI7DQo+ICsJcmV0dXJuIF9fYXRvbWljX2xvYWRfbihhZGRyLCBfX0FUT01JQ19SRUxBWEVE KSAmIG1hc2s7IH0NCj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJ TUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlLCBvciBiZSByZW1vdmVkLCB3aXRob3V0IHByaW9y DQo+ICtub3RpY2UNCj4gKyAqDQo+ICsgKiBTZXQgdGhlIHRhcmdldCBiaXQgaW4gYSAzMi1iaXQg dmFsdWUgdG8gMSB3aXRob3V0IG1lbW9yeSBvcmRlcmluZy4NCj4gKyAqDQo+ICsgKiBAcGFyYW0g bnINCj4gKyAqICAgVGhlIHRhcmdldCBiaXQgdG8gc2V0Lg0KPiArICogQHBhcmFtIGFkZHINCj4g KyAqICAgVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYml0Lg0KPiArICovDQo+ICtfX3J0ZV9leHBl cmltZW50YWwNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiArcnRlX3NldF9iaXQzMl9yZWxheGVk KHVuc2lnbmVkIGludCBuciwgdWludDMyX3QgKmFkZHIpIHsNCj4gKwlSVEVfQVNTRVJUKG5yIDwg MzIpOw0KPiArDQo+ICsJdWludDMyX3QgbWFzayA9IFVJTlQzMl9DKDEpIDw8IG5yOw0KPiArCV9f YXRvbWljX2ZldGNoX29yKGFkZHIsIG1hc2ssIF9fQVRPTUlDX1JFTEFYRUQpOyB9DQo+ICsNCj4g Ky8qKg0KPiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5 IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvcg0KPiArbm90aWNlDQo+ICsgKg0K PiArICogQ2xlYXIgdGhlIHRhcmdldCBiaXQgaW4gYSAzMi1iaXQgdmFsdWUgdG8gMCB3aXRob3V0 IG1lbW9yeSBvcmRlcmluZy4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gbnINCj4gKyAqICAgVGhlIHRh cmdldCBiaXQgdG8gY2xlYXIuDQo+ICsgKiBAcGFyYW0gYWRkcg0KPiArICogICBUaGUgYWRkcmVz cyBob2xkaW5nIHRoZSBiaXQuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiArc3Rh dGljIGlubGluZSB2b2lkDQo+ICtydGVfY2xlYXJfYml0MzJfcmVsYXhlZCh1bnNpZ25lZCBpbnQg bnIsIHVpbnQzMl90ICphZGRyKSB7DQo+ICsJUlRFX0FTU0VSVChuciA8IDMyKTsNCj4gKw0KPiAr CXVpbnQzMl90IG1hc2sgPSBVSU5UMzJfQygxKSA8PCBucjsNCj4gKwlfX2F0b21pY19mZXRjaF9h bmQoYWRkciwgfm1hc2ssIF9fQVRPTUlDX1JFTEFYRUQpOyB9DQo+ICsNCj4gKy8qKg0KPiArICog QHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSwgb3Ig YmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvcg0KPiArbm90aWNlDQo+ICsgKg0KPiArICogUmV0dXJu IHRoZSBvcmlnaW5hbCBiaXQgZnJvbSBhIDMyLWJpdCB2YWx1ZSwgdGhlbiBzZXQgaXQgdG8gMQ0K PiArd2l0aG91dA0KPiArICogbWVtb3J5IG9yZGVyaW5nLg0KPiArICoNCj4gKyAqIEBwYXJhbSBu cg0KPiArICogICBUaGUgdGFyZ2V0IGJpdCB0byBnZXQgYW5kIHNldC4NCj4gKyAqIEBwYXJhbSBh ZGRyDQo+ICsgKiAgIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJpdC4NCj4gKyAqIEByZXR1cm4N Cj4gKyAqICAgVGhlIG9yaWdpbmFsIGJpdC4NCj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVudGFs DQo+ICtzdGF0aWMgaW5saW5lIHVpbnQzMl90DQo+ICtydGVfdGVzdF9hbmRfc2V0X2JpdDMyX3Jl bGF4ZWQodW5zaWduZWQgaW50IG5yLCB1aW50MzJfdCAqYWRkcikgew0KPiArCVJURV9BU1NFUlQo bnIgPCAzMik7DQo+ICsNCj4gKwl1aW50MzJfdCBtYXNrID0gVUlOVDMyX0MoMSkgPDwgbnI7DQo+ ICsJcmV0dXJuIF9fYXRvbWljX2ZldGNoX29yKGFkZHIsIG1hc2ssIF9fQVRPTUlDX1JFTEFYRUQp ICYgbWFzazsgfQ0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklN RU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdpdGhvdXQgcHJpb3IN Cj4gK25vdGljZQ0KPiArICoNCj4gKyAqIFJldHVybiB0aGUgb3JpZ2luYWwgYml0IGZyb20gYSAz Mi1iaXQgdmFsdWUsIHRoZW4gY2xlYXIgaXQgdG8gMA0KPiArd2l0aG91dA0KPiArICogbWVtb3J5 IG9yZGVyaW5nLg0KPiArICoNCj4gKyAqIEBwYXJhbSBucg0KPiArICogICBUaGUgdGFyZ2V0IGJp dCB0byBnZXQgYW5kIGNsZWFyLg0KPiArICogQHBhcmFtIGFkZHINCj4gKyAqICAgVGhlIGFkZHJl c3MgaG9sZGluZyB0aGUgYml0Lg0KPiArICogQHJldHVybg0KPiArICogICBUaGUgb3JpZ2luYWwg Yml0Lg0KPiArICovDQo+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gK3N0YXRpYyBpbmxpbmUgdWlu dDMyX3QNCj4gK3J0ZV90ZXN0X2FuZF9jbGVhcl9iaXQzMl9yZWxheGVkKHVuc2lnbmVkIGludCBu ciwgdWludDMyX3QgKmFkZHIpIHsNCj4gKwlSVEVfQVNTRVJUKG5yIDwgMzIpOw0KPiArDQo+ICsJ dWludDMyX3QgbWFzayA9IFVJTlQzMl9DKDEpIDw8IG5yOw0KPiArCXJldHVybiBfX2F0b21pY19m ZXRjaF9hbmQoYWRkciwgfm1hc2ssIF9fQVRPTUlDX1JFTEFYRUQpICYNCj4gbWFzazsgfQ0KPiAr DQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJ IG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdpdGhvdXQgcHJpb3INCj4gK25vdGljZQ0KPiAr ICoNCj4gKyAqIEdldCB0aGUgdGFyZ2V0IGJpdCBmcm9tIGEgMzItYml0IHZhbHVlIHdpdGggbWVt b3J5IG9yZGVyaW5nLg0KPiArICoNCj4gKyAqIEBwYXJhbSBucg0KPiArICogICBUaGUgdGFyZ2V0 IGJpdCB0byBnZXQuDQo+ICsgKiBAcGFyYW0gYWRkcg0KPiArICogICBUaGUgYWRkcmVzcyBob2xk aW5nIHRoZSBiaXQuDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIFRoZSB0YXJnZXQgYml0Lg0KPiAr ICovDQo+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gK3N0YXRpYyBpbmxpbmUgdWludDMyX3QNCj4g K3J0ZV9nZXRfYml0MzIodW5zaWduZWQgaW50IG5yLCB1aW50MzJfdCAqYWRkcikgew0KX19hdG9t aWNfbG9hZF9uIHRha2VzIG90aGVyIG1lbW9yeSBvcmRlcnMgYWxvbmcgd2l0aCByZWxheGVkIGFu ZCBhY3F1aXJlLiBUaGUgQVBJIG5hbWUgbmVlZHMgdG8gY2hhbmdlIHRvIGluZGljYXRlIGFjcXVp cmUgbWVtb3J5IG9yZGVyIGhlcmU/DQoNCj4gKwlSVEVfQVNTRVJUKG5yIDwgMzIpOw0KPiArDQo+ ICsJdWludDMyX3QgbWFzayA9IFVJTlQzMl9DKDEpIDw8IG5yOw0KPiArCXJldHVybiBfX2F0b21p Y19sb2FkX24oYWRkciwgX19BVE9NSUNfQUNRVUlSRSkgJiBtYXNrOyB9DQo+ICsNCj4gKy8qKg0K PiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5n ZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvcg0KPiArbm90aWNlDQo+ICsgKg0KPiArICog U2V0IHRoZSB0YXJnZXQgYml0IGluIGEgMzItYml0IHZhbHVlIHRvIDEgd2l0aCBtZW1vcnkgb3Jk ZXJpbmcuDQo+ICsgKg0KPiArICogQHBhcmFtIG5yDQo+ICsgKiAgIFRoZSB0YXJnZXQgYml0IHRv IHNldC4NCj4gKyAqIEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhl IGJpdC4NCj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ICtzdGF0aWMgaW5saW5lIHZv aWQNCj4gK3J0ZV9zZXRfYml0MzIodW5zaWduZWQgaW50IG5yLCB1aW50MzJfdCAqYWRkcikgew0K PiArCVJURV9BU1NFUlQobnIgPCAzMik7DQo+ICsNCj4gKwl1aW50MzJfdCBtYXNrID0gVUlOVDMy X0MoMSkgPDwgbnI7DQo+ICsJX19hdG9taWNfZmV0Y2hfb3IoYWRkciwgbWFzaywgX19BVE9NSUNf QUNRX1JFTCk7IH0NCldoeSBub3QgdXNlIGp1c3QgJ19fQVRPTUlDX1JFTEVBU0UnIGhlcmU/IFRo ZSBmdWxsIGJhcnJpZXIgbWlnaHQgbm90IGJlIHJlcXVpcmVkIGluIGFsbCB1c2UgY2FzZXMuDQoN Cj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlz IEFQSSBtYXkgY2hhbmdlLCBvciBiZSByZW1vdmVkLCB3aXRob3V0IHByaW9yDQo+ICtub3RpY2UN Cj4gKyAqDQo+ICsgKiBDbGVhciB0aGUgdGFyZ2V0IGJpdCBpbiBhIDMyLWJpdCB2YWx1ZSB0byAw IHdpdGggbWVtb3J5IG9yZGVyaW5nLg0KPiArICoNCj4gKyAqIEBwYXJhbSBucg0KPiArICogICBU aGUgdGFyZ2V0IGJpdCB0byBjbGVhci4NCj4gKyAqIEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRoZSBh ZGRyZXNzIGhvbGRpbmcgdGhlIGJpdC4NCj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gK3J0ZV9jbGVhcl9iaXQzMih1bnNpZ25lZCBpbnQgbnIs IHVpbnQzMl90ICphZGRyKSB7DQo+ICsJUlRFX0FTU0VSVChuciA8IDMyKTsNCj4gKw0KPiArCXVp bnQzMl90IG1hc2sgPSBVSU5UMzJfQygxKSA8PCBucjsNCj4gKwlfX2F0b21pY19mZXRjaF9hbmQo YWRkciwgfm1hc2ssIF9fQVRPTUlDX0FDUV9SRUwpOyB9DQpXaHkgbm90IHVzZSBqdXN0ICdfX0FU T01JQ19SRUxFQVNFJyBoZXJlPyBUaGUgZnVsbCBiYXJyaWVyIG1pZ2h0IG5vdCBiZSByZXF1aXJl ZCBpbiBhbGwgdXNlIGNhc2VzLiBJIHNlZSBzaW1pbGFyIGlzc3VlIGluIG90aGVyIEFQSXMgYmVs b3cuDQoNCj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFM OiB0aGlzIEFQSSBtYXkgY2hhbmdlLCBvciBiZSByZW1vdmVkLCB3aXRob3V0IHByaW9yDQo+ICtu b3RpY2UNCj4gKyAqDQo+ICsgKiBSZXR1cm4gdGhlIG9yaWdpbmFsIGJpdCBmcm9tIGEgMzItYml0 IHZhbHVlLCB0aGVuIHNldCBpdCB0byAxIHdpdGgNCj4gKyAqIG1lbW9yeSBvcmRlcmluZy4NCj4g KyAqDQo+ICsgKiBAcGFyYW0gbnINCj4gKyAqICAgVGhlIHRhcmdldCBiaXQgdG8gZ2V0IGFuZCBz ZXQuDQo+ICsgKiBAcGFyYW0gYWRkcg0KPiArICogICBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBi aXQuDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIFRoZSBvcmlnaW5hbCBiaXQuDQo+ICsgKi8NCj4g K19fcnRlX2V4cGVyaW1lbnRhbA0KPiArc3RhdGljIGlubGluZSB1aW50MzJfdA0KPiArcnRlX3Rl c3RfYW5kX3NldF9iaXQzMih1bnNpZ25lZCBpbnQgbnIsIHVpbnQzMl90ICphZGRyKSB7DQo+ICsJ UlRFX0FTU0VSVChuciA8IDMyKTsNCj4gKw0KPiArCXVpbnQzMl90IG1hc2sgPSBVSU5UMzJfQygx KSA8PCBucjsNCj4gKwlyZXR1cm4gX19hdG9taWNfZmV0Y2hfb3IoYWRkciwgbWFzaywgX19BVE9N SUNfQUNRX1JFTCkgJg0KPiBtYXNrOyB9DQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5pbmcNCj4g KyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwg d2l0aG91dCBwcmlvcg0KPiArbm90aWNlDQo+ICsgKg0KPiArICogUmV0dXJuIHRoZSBvcmlnaW5h bCBiaXQgZnJvbSBhIDMyLWJpdCB2YWx1ZSwgdGhlbiBjbGVhciBpdCB0byAwIHdpdGgNCj4gKyAq IG1lbW9yeSBvcmRlcmluZy4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gbnINCj4gKyAqICAgVGhlIHRh cmdldCBiaXQgdG8gZ2V0IGFuZCBjbGVhci4NCj4gKyAqIEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRo ZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJpdC4NCj4gKyAqIEByZXR1cm4NCj4gKyAqICAgVGhlIG9y aWdpbmFsIGJpdC4NCj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ICtzdGF0aWMgaW5s aW5lIHVpbnQzMl90DQo+ICtydGVfdGVzdF9hbmRfY2xlYXJfYml0MzIodW5zaWduZWQgaW50IG5y LCB1aW50MzJfdCAqYWRkcikgew0KPiArCVJURV9BU1NFUlQobnIgPCAzMik7DQo+ICsNCj4gKwl1 aW50MzJfdCBtYXNrID0gVUlOVDMyX0MoMSkgPDwgbnI7DQo+ICsJcmV0dXJuIF9fYXRvbWljX2Zl dGNoX2FuZChhZGRyLCB+bWFzaywgX19BVE9NSUNfQUNRX1JFTCkgJg0KPiBtYXNrOyB9DQo+ICsN Cj4gKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSA2NCBiaXQgb3BlcmF0aW9ucw0KPiAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5p bmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVt b3ZlZCwgd2l0aG91dCBwcmlvcg0KPiArbm90aWNlDQo+ICsgKg0KPiArICogR2V0IHRoZSB0YXJn ZXQgYml0IGZyb20gYSA2NC1iaXQgdmFsdWUgd2l0aG91dCBtZW1vcnkgb3JkZXJpbmcuDQo+ICsg Kg0KPiArICogQHBhcmFtIG5yDQo+ICsgKiAgIFRoZSB0YXJnZXQgYml0IHRvIGdldC4NCj4gKyAq IEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJpdC4NCj4gKyAq IEByZXR1cm4NCj4gKyAqICAgVGhlIHRhcmdldCBiaXQuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVy aW1lbnRhbA0KPiArc3RhdGljIGlubGluZSB1aW50NjRfdA0KPiArcnRlX2dldF9iaXQ2NF9yZWxh eGVkKHVuc2lnbmVkIGludCBuciwgdWludDY0X3QgKmFkZHIpIHsNCj4gKwlSVEVfQVNTRVJUKG5y IDwgNjQpOw0KPiArDQo+ICsJdWludDY0X3QgbWFzayA9IFVJTlQ2NF9DKDEpIDw8IG5yOw0KPiAr CXJldHVybiBfX2F0b21pY19sb2FkX24oYWRkciwgX19BVE9NSUNfUkVMQVhFRCkgJiBtYXNrOyB9 DQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhp cyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvcg0KPiArbm90aWNl DQo+ICsgKg0KPiArICogU2V0IHRoZSB0YXJnZXQgYml0IGluIGEgNjQtYml0IHZhbHVlIHRvIDEg d2l0aG91dCBtZW1vcnkgb3JkZXJpbmcuDQo+ICsgKg0KPiArICogQHBhcmFtIG5yDQo+ICsgKiAg IFRoZSB0YXJnZXQgYml0IHRvIHNldC4NCj4gKyAqIEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRoZSBh ZGRyZXNzIGhvbGRpbmcgdGhlIGJpdC4NCj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gK3J0ZV9zZXRfYml0NjRfcmVsYXhlZCh1bnNpZ25lZCBp bnQgbnIsIHVpbnQ2NF90ICphZGRyKSB7DQo+ICsJUlRFX0FTU0VSVChuciA8IDY0KTsNCj4gKw0K PiArCXVpbnQ2NF90IG1hc2sgPSBVSU5UNjRfQygxKSA8PCBucjsNCj4gKwlfX2F0b21pY19mZXRj aF9vcihhZGRyLCBtYXNrLCBfX0FUT01JQ19SRUxBWEVEKTsgfQ0KPiArDQo+ICsvKioNCj4gKyAq IEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2UsIG9y IGJlIHJlbW92ZWQsIHdpdGhvdXQgcHJpb3INCj4gK25vdGljZQ0KPiArICoNCj4gKyAqIENsZWFy IHRoZSB0YXJnZXQgYml0IGluIGEgNjQtYml0IHZhbHVlIHRvIDAgd2l0aG91dCBtZW1vcnkgb3Jk ZXJpbmcuDQo+ICsgKg0KPiArICogQHBhcmFtIG5yDQo+ICsgKiAgIFRoZSB0YXJnZXQgYml0IHRv IGNsZWFyLg0KPiArICogQHBhcmFtIGFkZHINCj4gKyAqICAgVGhlIGFkZHJlc3MgaG9sZGluZyB0 aGUgYml0Lg0KPiArICovDQo+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gK3N0YXRpYyBpbmxpbmUg dm9pZA0KPiArcnRlX2NsZWFyX2JpdDY0X3JlbGF4ZWQodW5zaWduZWQgaW50IG5yLCB1aW50NjRf dCAqYWRkcikgew0KPiArCVJURV9BU1NFUlQobnIgPCA2NCk7DQo+ICsNCj4gKwl1aW50NjRfdCBt YXNrID0gVUlOVDY0X0MoMSkgPDwgbnI7DQo+ICsJX19hdG9taWNfZmV0Y2hfYW5kKGFkZHIsIH5t YXNrLCBfX0FUT01JQ19SRUxBWEVEKTsgfQ0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQs IHdpdGhvdXQgcHJpb3INCj4gK25vdGljZQ0KPiArICoNCj4gKyAqIFJldHVybiB0aGUgb3JpZ2lu YWwgYml0IGZyb20gYSA2NC1iaXQgdmFsdWUsIHRoZW4gc2V0IGl0IHRvIDENCj4gK3dpdGhvdXQN Cj4gKyAqIG1lbW9yeSBvcmRlcmluZy4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gbnINCj4gKyAqICAg VGhlIHRhcmdldCBiaXQgdG8gZ2V0IGFuZCBzZXQuDQo+ICsgKiBAcGFyYW0gYWRkcg0KPiArICog ICBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiaXQuDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIFRo ZSBvcmlnaW5hbCBiaXQuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiArc3RhdGlj IGlubGluZSB1aW50NjRfdA0KPiArcnRlX3Rlc3RfYW5kX3NldF9iaXQ2NF9yZWxheGVkKHVuc2ln bmVkIGludCBuciwgdWludDY0X3QgKmFkZHIpIHsNCj4gKwlSVEVfQVNTRVJUKG5yIDwgNjQpOw0K PiArDQo+ICsJdWludDY0X3QgbWFzayA9IFVJTlQ2NF9DKDEpIDw8IG5yOw0KPiArCXJldHVybiBf X2F0b21pY19mZXRjaF9vcihhZGRyLCBtYXNrLCBfX0FUT01JQ19SRUxBWEVEKSAmIG1hc2s7IH0N Cj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlz IEFQSSBtYXkgY2hhbmdlLCBvciBiZSByZW1vdmVkLCB3aXRob3V0IHByaW9yDQo+ICtub3RpY2UN Cj4gKyAqDQo+ICsgKiBSZXR1cm4gdGhlIG9yaWdpbmFsIGJpdCBmcm9tIGEgNjQtYml0IHZhbHVl LCB0aGVuIGNsZWFyIGl0IHRvIDANCj4gK3dpdGhvdXQNCj4gKyAqIG1lbW9yeSBvcmRlcmluZy4N Cj4gKyAqDQo+ICsgKiBAcGFyYW0gbnINCj4gKyAqICAgVGhlIHRhcmdldCBiaXQgdG8gZ2V0IGFu ZCBjbGVhci4NCj4gKyAqIEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRoZSBhZGRyZXNzIGhvbGRpbmcg dGhlIGJpdC4NCj4gKyAqIEByZXR1cm4NCj4gKyAqICAgVGhlIG9yaWdpbmFsIGJpdC4NCj4gKyAq Lw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ICtzdGF0aWMgaW5saW5lIHVpbnQ2NF90DQo+ICty dGVfdGVzdF9hbmRfY2xlYXJfYml0NjRfcmVsYXhlZCh1bnNpZ25lZCBpbnQgbnIsIHVpbnQ2NF90 ICphZGRyKSB7DQo+ICsJUlRFX0FTU0VSVChuciA8IDY0KTsNCj4gKw0KPiArCXVpbnQ2NF90IG1h c2sgPSBVSU5UNjRfQygxKSA8PCBucjsNCj4gKwlyZXR1cm4gX19hdG9taWNfZmV0Y2hfYW5kKGFk ZHIsIH5tYXNrLCBfX0FUT01JQ19SRUxBWEVEKSAmDQo+IG1hc2s7IH0NCj4gKw0KPiArLyoqDQo+ ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdl LCBvciBiZSByZW1vdmVkLCB3aXRob3V0IHByaW9yDQo+ICtub3RpY2UNCj4gKyAqDQo+ICsgKiBH ZXQgdGhlIHRhcmdldCBiaXQgZnJvbSBhIDY0LWJpdCB2YWx1ZSB3aXRoIG1lbW9yeSBvcmRlcmlu Zy4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gbnINCj4gKyAqICAgVGhlIHRhcmdldCBiaXQgdG8gZ2V0 Lg0KPiArICogQHBhcmFtIGFkZHINCj4gKyAqICAgVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYml0 Lg0KPiArICogQHJldHVybg0KPiArICogICBUaGUgdGFyZ2V0IGJpdC4NCj4gKyAqLw0KPiArX19y dGVfZXhwZXJpbWVudGFsDQo+ICtzdGF0aWMgaW5saW5lIHVpbnQ2NF90DQo+ICtydGVfZ2V0X2Jp dDY0KHVuc2lnbmVkIGludCBuciwgdWludDY0X3QgKmFkZHIpIHsNCj4gKwlSVEVfQVNTRVJUKG5y IDwgNjQpOw0KPiArDQo+ICsJdWludDY0X3QgbWFzayA9IFVJTlQ2NF9DKDEpIDw8IG5yOw0KPiAr CXJldHVybiBfX2F0b21pY19sb2FkX24oYWRkciwgX19BVE9NSUNfQUNRVUlSRSkgJiBtYXNrOyB9 DQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhp cyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvcg0KPiArbm90aWNl DQo+ICsgKg0KPiArICogU2V0IHRoZSB0YXJnZXQgYml0IGluIGEgNjQtYml0IHZhbHVlIHRvIDEg d2l0aCBtZW1vcnkgb3JkZXJpbmcuDQo+ICsgKg0KPiArICogQHBhcmFtIG5yDQo+ICsgKiAgIFRo ZSB0YXJnZXQgYml0IHRvIHNldC4NCj4gKyAqIEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRoZSBhZGRy ZXNzIGhvbGRpbmcgdGhlIGJpdC4NCj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ICtz dGF0aWMgaW5saW5lIHZvaWQNCj4gK3J0ZV9zZXRfYml0NjQodW5zaWduZWQgaW50IG5yLCB1aW50 NjRfdCAqYWRkcikgew0KPiArCVJURV9BU1NFUlQobnIgPCA2NCk7DQo+ICsNCj4gKwl1aW50NjRf dCBtYXNrID0gVUlOVDY0X0MoMSkgPDwgbnI7DQo+ICsJX19hdG9taWNfZmV0Y2hfb3IoYWRkciwg bWFzaywgX19BVE9NSUNfQUNRX1JFTCk7IH0NCj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0K PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlLCBvciBiZSByZW1vdmVk LCB3aXRob3V0IHByaW9yDQo+ICtub3RpY2UNCj4gKyAqDQo+ICsgKiBDbGVhciB0aGUgdGFyZ2V0 IGJpdCBpbiBhIDY0LWJpdCB2YWx1ZSB0byAwIHdpdGggbWVtb3J5IG9yZGVyaW5nLg0KPiArICoN Cj4gKyAqIEBwYXJhbSBucg0KPiArICogICBUaGUgdGFyZ2V0IGJpdCB0byBjbGVhci4NCj4gKyAq IEBwYXJhbSBhZGRyDQo+ICsgKiAgIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJpdC4NCj4gKyAq Lw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gK3J0ZV9j bGVhcl9iaXQ2NCh1bnNpZ25lZCBpbnQgbnIsIHVpbnQ2NF90ICphZGRyKSB7DQo+ICsJUlRFX0FT U0VSVChuciA8IDY0KTsNCj4gKw0KPiArCXVpbnQ2NF90IG1hc2sgPSBVSU5UNjRfQygxKSA8PCBu cjsNCj4gKwlfX2F0b21pY19mZXRjaF9hbmQoYWRkciwgfm1hc2ssIF9fQVRPTUlDX0FDUV9SRUwp OyB9DQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDog dGhpcyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvcg0KPiArbm90 aWNlDQo+ICsgKg0KPiArICogUmV0dXJuIHRoZSBvcmlnaW5hbCBiaXQgZnJvbSBhIDY0LWJpdCB2 YWx1ZSwgdGhlbiBzZXQgaXQgdG8gMSB3aXRoDQo+ICsgKiBtZW1vcnkgb3JkZXJpbmcuDQo+ICsg Kg0KPiArICogQHBhcmFtIG5yDQo+ICsgKiAgIFRoZSB0YXJnZXQgYml0IHRvIGdldCBhbmQgc2V0 Lg0KPiArICogQHBhcmFtIGFkZHINCj4gKyAqICAgVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYml0 Lg0KPiArICogQHJldHVybg0KPiArICogICBUaGUgb3JpZ2luYWwgYml0Lg0KPiArICovDQo+ICtf X3J0ZV9leHBlcmltZW50YWwNCj4gK3N0YXRpYyBpbmxpbmUgdWludDY0X3QNCj4gK3J0ZV90ZXN0 X2FuZF9zZXRfYml0NjQodW5zaWduZWQgaW50IG5yLCB1aW50NjRfdCAqYWRkcikgew0KPiArCVJU RV9BU1NFUlQobnIgPCA2NCk7DQo+ICsNCj4gKwl1aW50NjRfdCBtYXNrID0gVUlOVDY0X0MoMSkg PDwgbnI7DQo+ICsJcmV0dXJuIF9fYXRvbWljX2ZldGNoX29yKGFkZHIsIG1hc2ssIF9fQVRPTUlD X0FDUV9SRUwpICYNCj4gbWFzazsgfQ0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsg KiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdp dGhvdXQgcHJpb3INCj4gK25vdGljZQ0KPiArICoNCj4gKyAqIFJldHVybiB0aGUgb3JpZ2luYWwg Yml0IGZyb20gYSA2NC1iaXQgdmFsdWUsIHRoZW4gY2xlYXIgaXQgdG8gMCB3aXRoDQo+ICsgKiBt ZW1vcnkgb3JkZXJpbmcuDQo+ICsgKg0KPiArICogQHBhcmFtIG5yDQo+ICsgKiAgIFRoZSB0YXJn ZXQgYml0IHRvIGdldCBhbmQgY2xlYXIuDQo+ICsgKiBAcGFyYW0gYWRkcg0KPiArICogICBUaGUg YWRkcmVzcyBob2xkaW5nIHRoZSBiaXQuDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIFRoZSBvcmln aW5hbCBiaXQuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiArc3RhdGljIGlubGlu ZSB1aW50NjRfdA0KPiArcnRlX3Rlc3RfYW5kX2NsZWFyX2JpdDY0KHVuc2lnbmVkIGludCBuciwg dWludDY0X3QgKmFkZHIpIHsNCj4gKwlSVEVfQVNTRVJUKG5yIDwgNjQpOw0KPiArDQo+ICsJdWlu dDY0X3QgbWFzayA9IFVJTlQ2NF9DKDEpIDw8IG5yOw0KPiArCXJldHVybiBfX2F0b21pY19mZXRj aF9hbmQoYWRkciwgfm1hc2ssIF9fQVRPTUlDX0FDUV9SRUwpICYNCj4gbWFzazsgfQ0KPiArI2Vu ZGlmIC8qIF9SVEVfQklUT1BTX0hfICovDQo+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2VhbC9j b21tb24vbWVzb24uYnVpbGQNCj4gYi9saWIvbGlicnRlX2VhbC9jb21tb24vbWVzb24uYnVpbGQN Cj4gaW5kZXggMmI5NzcxNS4uNzY2ZWRiZCAxMDA2NDQNCj4gLS0tIGEvbGliL2xpYnJ0ZV9lYWwv Y29tbW9uL21lc29uLmJ1aWxkDQo+ICsrKyBiL2xpYi9saWJydGVfZWFsL2NvbW1vbi9tZXNvbi5i dWlsZA0KPiBAQCAtNTAsOSArNTAsMTAgQEAgY29tbW9uX29ianMgKz0gZWFsX2NvbW1vbl9hcmNo X29ianMNCj4gDQo+ICBjb21tb25faGVhZGVycyA9IGZpbGVzKA0KPiAgCSdpbmNsdWRlL3J0ZV9h bGFybS5oJywNCj4gKwknaW5jbHVkZS9ydGVfYml0bWFwLmgnLA0KPiArCSdpbmNsdWRlL3J0ZV9i aXRvcHMuaCcsDQo+ICAJJ2luY2x1ZGUvcnRlX2JyYW5jaF9wcmVkaWN0aW9uLmgnLA0KPiAgCSdp bmNsdWRlL3J0ZV9idXMuaCcsDQo+IC0JJ2luY2x1ZGUvcnRlX2JpdG1hcC5oJywNCj4gIAknaW5j bHVkZS9ydGVfY2xhc3MuaCcsDQo+ICAJJ2luY2x1ZGUvcnRlX2NvbW1vbi5oJywNCj4gIAknaW5j bHVkZS9ydGVfY29tcGF0LmgnLA0KPiAtLQ0KPiAyLjcuNA0KDQo=