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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9DD54ECAAA2 for ; Mon, 29 Aug 2022 01:14:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229457AbiH2BO0 (ORCPT ); Sun, 28 Aug 2022 21:14:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229447AbiH2BOZ (ORCPT ); Sun, 28 Aug 2022 21:14:25 -0400 Received: from esa20.fujitsucc.c3s2.iphmx.com (esa20.fujitsucc.c3s2.iphmx.com [216.71.158.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 79197220FB for ; Sun, 28 Aug 2022 18:14:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1661735663; x=1693271663; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=84y8Tcwqggb+gY2AhvP9Bb+T2C758SFSsUp8/kuzZTM=; b=C599Ip1ipfqHAFui1A/g675yd9OUavBcEUt8I87B+6WCpsWykH3iuG/K mn/4JBot+k5uf0gNWu5ylgLTjnAur7H3IBV+1X+FevNKwArrsHZmo8N6h tO7f+8QeobWbgGMlim/0E63lW2UravcoiA6yWLH4tEarZPqwb2qY9bVi/ 8PNzGxcY8ucuPh7whQurGkDCogImfX0ihAL7WwPx2BeRfH1hrRUdSweFo Nu3U40ZgdHm4YF4ryn1dp2555NDfj8SGgNIF5x5Az5Lp7d/LaWPD8UX88 GEcBDOG64wLXR5OsJdShHT+4dy2duVseE5O+4Z0V8UPdMXaM/pNWOv5Mm A==; X-IronPort-AV: E=McAfee;i="6500,9779,10453"; a="63674632" X-IronPort-AV: E=Sophos;i="5.93,271,1654527600"; d="scan'208";a="63674632" Received: from mail-tycjpn01lp2172.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.172]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Aug 2022 10:14:19 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WVkGZCK95kTaHqFOP/a+PICDdIWB0M9MFePeBQl1EiUrEZ0Jd3QF4BNgYmB8o6RQ4xRxPonGx+qN7LSoWHhfDfJ2rvB9N6Ly98C3Q0etqMWom5V6lVBwkaNyslXHkL43Gngg3rOQXOTuY5JO7fhtA9CG2SZ39JLln3rIKKiWpKJYnjXx/P9oMkkLMsxQDWJOu+nDf4AWjqjLQTsKM8YypuqCVfrSQ9aR4YkPPJ92lIMvHkhwZErRw3mZA+MrvnqXH6KVRgeJb9N5/dtJNaUaEoo0+ydp78/oVIv29M0P75lncbYnk3n0Tsr/w2s+P8dIdhpdeFSRp3ardPvQsbzasw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=84y8Tcwqggb+gY2AhvP9Bb+T2C758SFSsUp8/kuzZTM=; b=Npd+3HT4uTekm6knJSknp+loHtwI/SOr5eJLTdoyGdy8Uo73HIL4ED6qp2g5hfWuXAE040CKWJMYVrONE6l0OqBou9Bsege7QlwX3x1vM/0vhpXr5Jcma42rixxVZA2BEQoJ6lO1HVjqmFAzy5IMaoC3KCJQDAhyXS5KthJvFzrSDER2b4cOXBnqgCPnqwd43d0F9MwQY9F/STtU1v0eBUUolI1QK2jXJ6R2lPk5TtMST0yhpzv5NV5EQLb/M9UpQT+o+DyaDKihaNRCn4mp1TZPOTwegvpnVKBRM19CoFoTNj1ZB/niv7QKmH5I0uK/4E8Wg/tE2gQkOAY15qRJbQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from TY2PR01MB4427.jpnprd01.prod.outlook.com (2603:1096:404:10d::20) by OS3PR01MB9497.jpnprd01.prod.outlook.com (2603:1096:604:1ca::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Mon, 29 Aug 2022 01:14:15 +0000 Received: from TY2PR01MB4427.jpnprd01.prod.outlook.com ([fe80::a9fe:6054:eadc:7ef8]) by TY2PR01MB4427.jpnprd01.prod.outlook.com ([fe80::a9fe:6054:eadc:7ef8%5]) with mapi id 15.20.5566.021; Mon, 29 Aug 2022 01:14:14 +0000 From: "xuyang2018.jy@fujitsu.com" To: "fstests@vger.kernel.org" CC: "brauner@kernel.org" , Zorro Lang Subject: Re: [PATCH v2 1/2] vfs: Add new setgid_create_umask test Thread-Topic: [PATCH v2 1/2] vfs: Add new setgid_create_umask test Thread-Index: AQHYoMoJ/tBaIKGE+ku2Q/fpstZMba2v66+AgBVtC4A= Date: Mon, 29 Aug 2022 01:14:14 +0000 Message-ID: References: <20220725142020.rtc2mgfhcw47v4t4@wittgenstein> <1658827881-2347-1-git-send-email-xuyang2018.jy@fujitsu.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1bd591be-7c50-47ec-96c2-08da895bc9e0 x-ms-traffictypediagnostic: OS3PR01MB9497:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: J8/krVVSSfjkK2MziiXIHY1gn8xwiiczYLMW3XVg+yrw5KV2Dv9I76TJhkVtB6f3uFXAjMCYOYAFx1cj6Xp7GQuErWdBppUWuZdXPryz4lVzCF2fR7Gq7jvZBTv46039yaWt7Ot1A+Jryga4tuY3UpryeFiYdSEWl/FGv5o7QJLxQYmymOXTteXYso5CDRGLpcV19dDajUroVGpmNBVdhdZyH2XR9CCouP4LQP4tk2iXqrl6U5+S7ylvRj9HpjASU5+l7Zc8TSFG9lZcFZiTpflYTZ96Wr28wvxcb6+NctWr3eUKVZsLWz3KiFnAGgKz1cLWIxGL/9mDGiKq+iLiQpNbcDsfjPbvhKAyW8kU6ZNi+y6C+uZQxwCGeGfvdsnGs9JbwfB7vdSAJMP+KzFlsFUg3xmVJ1bdUH4muEdKbhPfTAIrH8DQXWJMjERn1GPz5+55zPc9Ig0bTt78ZIkP5VrBhyonGa1RY4bOe3rAsLPIpTe5MRhYl9FDsdL0YNPiDPR5ZJQN1UTUYOL+ecQ6IQQMwdHahIz7X8ZN6G0ZyEpw698ozTWyu9cMlLG3GsumN/E5YkIAAU4hb0V41yW2RM3nDgOLxRJmWUNbgjkDi9EePWTbP+o0QYd0oZewRK95qBdHtREMgcANkhbqwrn64b7nHa9wqpB33bAhZwCrlwVvU/aFWQi85/ngU3EWpT23zrFDfIE94VipVwUHoCQi+gyPsL+3ET8rhgE041S3hW8nyIjcXAcyM9dkziVaMllfmpbJN6BlkMmTT/X6C5HJiqm+NeBjuecrz3DXYaWh1Djw8okYyMtvjDQxc2XusBalxPTsSjHuHTifE1uKYE3rGZzNn7/Lvhie0hmsjGAZlsY= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY2PR01MB4427.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(346002)(39860400002)(366004)(136003)(396003)(376002)(1590799006)(66946007)(76116006)(64756008)(478600001)(6486002)(8676002)(66476007)(4326008)(66446008)(91956017)(41300700001)(83380400001)(66556008)(5660300002)(30864003)(54906003)(2906002)(6506007)(31686004)(8936002)(26005)(6512007)(6916009)(316002)(71200400001)(1580799003)(186003)(86362001)(31696002)(38100700002)(2616005)(82960400001)(38070700005)(122000001)(36756003)(85182001)(45980500001)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?elFxbDhUL0VtNUNZV3o4alQxTGk3SnRNcWQ4Q1VNMjlOSU9BTEJ6NDZKaXhB?= =?utf-8?B?UUk2Z1JlWE80VFArNGpoRnZZY2QrQXRobWRMR1RldGRlMVo2Yk1uVEVOTnFv?= =?utf-8?B?aWhyYnFCc1VwWTB5Wk9KcjI4Tnp3R0FYWWJVZm1GSU5sSnlSb1k2MktMdk55?= =?utf-8?B?eVIya3J0ZFhJcldWcTB5RnFPb3VQUjBkcVdrYUYzaGN1M2hZQWZSQStlWHlt?= =?utf-8?B?RHp3Z0crU3pPdmkxTUZQcTMyZDRPQ3MyY213R3ViVnR2bStrcFlYWUJKN0dQ?= =?utf-8?B?bGVmbnpDSXc4SFVvYW5vZ1NoNVpZWkEydGNhTGtoYzVUdHp6Rk5JelpOU09o?= =?utf-8?B?cHRtaEdzQ2MxbFlBSmJBaGVycnRvcWFtVDQyMDFnc2hjSXh1MmljQ1kvOG1m?= =?utf-8?B?N08vbmpyMHg5aXBqN0hqWFp4ZkJkbjU5U295YzJ1ak52emZJSkNpc1RFUStC?= =?utf-8?B?UTZwREJ0azhtY0JnWkhXM0JabFUva0lzWWpFMjN3cjh1Z0Jqb09seDVUb2x0?= =?utf-8?B?dXBqUnRvWHNpMnZHVGRxQjJ5cUxFNUU5OXoxa2E5elFKSzFhRHRhMGdyYUZj?= =?utf-8?B?dkhjSUtaN0lsMnR1eGZlQjlleXRRSm9Wa2JhVFNPQ3dBVEtaTUtheWtRMGtI?= =?utf-8?B?V2RobUdBeWlLNU1idWYxb0JMb0VjbC92MWRQRkRpMTQ2OWttL0pmcGl6akpK?= =?utf-8?B?Tk5paVA3V2xobkU2M3A1ckFUK2E2ZGxMU1ZCV3IrenJuVDFzTmNDT2NxdHVZ?= =?utf-8?B?eWpXdmhhY28vRTdyS0toM1cvT0M5b1laT3JoU3c1WGJOekhGeFAxY2NqWHlx?= =?utf-8?B?c05iQkdxM3o5TGVlR0M1Q2M3U1lhdGJRL2krdktyOW9nbm8rUDFRcTlqUHBM?= =?utf-8?B?WEl2VjdBeVp3SWREZERrR3FKYysvMmZyR3d5L0EwWGsxd0ltQkZPcVU2b2Fi?= =?utf-8?B?czA5U01rbDNYNnZOblVyRzNncng3N0lIQlNaVUswa3V2RHJyMFUyclpmV3I2?= =?utf-8?B?ZnlhcmZVdkkrSEJTb3pkc3R3OFliZjlycEJMSHRnWkRnc1pOQlMwOEJzWjl6?= =?utf-8?B?Mi9oMGlaSlZwemk0ditvTjVFRWxWMWxZUHlTWEs3Uy9rMDlrUzk0RmFsaTlK?= =?utf-8?B?aUFmN2k0OXF0b1NJVzlMLytBUmptUzVna2pMcTRjeXJiZFR0K01FNzMwcGVM?= =?utf-8?B?M01KbHY4ekVPZWxxV2d6SzNKYVFSeDhyV2szWmw0ck9mOGFYS0xmbk4wUkox?= =?utf-8?B?YnY2NTR5L0ROcno2aU5xenAxS3Q5Z1JjTmJJMVh0cys0SGlidVdYSWNVUnY2?= =?utf-8?B?ZjBsRXdoZnNvSkNMWWF3S3llK1I3OTNjSjRJYUNZN3IzVE84dENIdmVRQk0x?= =?utf-8?B?d25jNHhrMnMwcWcwcFRnZzY3bXdFcVZMeWkvamJOTEdWdGxWTDJ6emF6Qlkx?= =?utf-8?B?RHlaQkdpdFVtazhVZTNqRnc0dklibmVVeDlSOHI5NmpObGNwREN2MUdEM015?= =?utf-8?B?Smt2QzVpcFkzWjVFY0tmaXFYVlNNTHNTUWRoRjg3NTZyOXU3TS83UDNCMEF5?= =?utf-8?B?OXJZNTlObk5oVkcxSXowdGJ2b2ZtRlMxTyt1Tjltb1EvQ0JBdFl2eGNxTzZ1?= =?utf-8?B?eEQvVkRkdy9UWnQ1Q1IwMURXWFhLQ3dlQzRtYnUxeE84STJyQ29JOVY3Vlkz?= =?utf-8?B?enhOYmkwaGNSVWVybmdJOG5zYkVQUXlPenI1RGx1SksrblpvY0Iwem4yaWlR?= =?utf-8?B?NjhZRU1paktmL2NlNDVscGduMzk3Sit5MFI2OHErMHJlRFBsSzVUL3NLbXh4?= =?utf-8?B?WG5oUVd0M0RXWWJSbUlaWHUxaHhuUm50TlBYUURBTXlwSThqODBVd3FNTVU5?= =?utf-8?B?US9xQk8wL293dFZmZFcxRGRYT2laQkJJT0M4NHhkeU54WE9mcVNUVkFVU1RV?= =?utf-8?B?Vjgvd0pzNE1rUW9qd2FYTy80bDJCSDFRTXpTajlSdzI4SThtSDVaMVJoSHNp?= =?utf-8?B?bTRQM2pVOFh1dFlWcW5aOHBFNzFyVERyelVadlpxNC8xUWFQaFFJN3UzbDZN?= =?utf-8?B?cWMxMUJIRUdTeEcyZi8zbTF6R0V5VlhpVDZhVWJLL1RDV2FmOElmTTNOaVpL?= =?utf-8?B?TVVGRHFGc2RBRTRzZ0ZRMUVhMmV4VGladTlOMDRtbEFMT2JGWDZ1RnMvVG1h?= =?utf-8?B?ZVE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <2A9A92D93BECDA448AF9D385808FF0D0@jpnprd01.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TY2PR01MB4427.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1bd591be-7c50-47ec-96c2-08da895bc9e0 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2022 01:14:14.7846 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: RaUBGEQzFev80N2hPXQh8KIbQ7l7iLypbw3uquVrcKxipb3Nag1bjcR1ypYWE6aO3Y88na/GZhpFOIoeNgjlWaG6iqrMsqfWrHJ09KEuAho= X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB9497 Precedence: bulk List-ID: X-Mailing-List: fstests@vger.kernel.org DQpvbiAyMDIyLzA4LzE1IDE4OjAyLCB4dXlhbmcyMDE4Lmp5QGZ1aml0c3UuY29tIHdyb3RlOg0K PiANCj4gDQo+IG9uIDIwMjIvMDcvMjYgMTc6MzEsIFlhbmcgWHUgd3JvdGU6DQo+IA0KPj4gVGhl IGN1cnJlbnRfdW1hc2soKSBpcyBzdHJpcHBlZCBmcm9tIHRoZSBtb2RlIGRpcmVjdGx5IGluIHRo ZSB2ZnMgaWYgdGhlDQo+PiBmaWxlc3lzdGVtIGVpdGhlciBkb2Vzbid0IHN1cHBvcnQgYWNscyBv ciB0aGUgZmlsZXN5c3RlbSBoYXMgYmVlbg0KPj4gbW91bnRlZCB3aXRob3V0IHBvc2ljIGFjbCBz dXBwb3J0Lg0KPj4NCj4+IElmIHRoZSBmaWxlc3lzdGVtIGRvZXMgc3VwcG9ydCBhY2xzIHRoZW4g Y3VycmVudF91bWFzaygpIHN0cmlwcGluZyBpcw0KPj4gZGVmZXJyZWQgdG8gcG9zaXhfYWNsX2Ny ZWF0ZSgpLiBTbyB3aGVuIHRoZSBmaWxlc3lzdGVtIGNhbGxzDQo+PiBwb3NpeF9hY2xfY3JlYXRl KCkgYW5kIHRoZXJlIGFyZSBubyBhY2xzIHNldCBvciBub3Qgc3VwcG9ydGVkIHRoZW4NCj4+IGN1 cnJlbnRfdW1hc2soKSB3aWxsIGJlIHN0cmlwcGVkLg0KPj4NCj4+IFRoaXMgcGF0Y2ggaXMgYWxz byBkZXNpZ25lZCB0byB0ZXN0IGtlcm5lbCBwYXRjaCBiZWhhdmlvdXINCj4+ICJtb3ZlIFNfSVNH SUQgc3RyaXBwaW5nIGludG8gdGhlIHZmcyogaGVscGVyIg0KPj4NCj4gVGhlIGtlcm5lbCBwYXRj aHNldFsxXSBoYXMgYmVlbiBtZXJnZWQgaW50byA2LjAtcmMxIGtlcm5lbCwgSSBndWVzcyB3ZQ0K PiBjYW4gcmV2aWV3IHRoaXMgcGF0Y2guDQoNClBpbmcgYWdhaW4uIEFueSBjb21tZW50Pw0KDQpC ZXN0IFJlZ2FyZHMNCllhbmcgWHUNCj4gDQo+IFsxXWh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHVi L3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC9jb21taXQvP2lkPTE2Mzlh NDljY2RjZTU4ZWEyNDg4NDFlZDliMjNiYWJjY2U2ZGJiMGINCj4gQmVzdCBSZWdhcmRzDQo+IFlh bmcgWHUNCj4+IEhlcmUgd2Ugb25seSB1c2UgdW1hc2soU19JWEdSUCkgdG8gY2hlY2sgU19JU0dJ RCBzdHJpcHBpbmcgd2hldGhlciB3b3Jrcw0KPj4gY29ycmVjdGx5IGFuZCBTX0lYR1JQIG1vZGUg c3RpbGwgZXhpc3RzLg0KPj4NCj4+IEFsc28gdXNlIG5vYWNsIG1vdW50IG9wdGlvbiB0byB0ZXN0 IGFub3RoZXIga2VybmVsIGJ1Zw0KPj4gZnM6IEFkZCBtaXNzaW5nIHVtYXNrIHN0cmlwIGluIHZm c190bXBmaWxlDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogWWFuZyBYdSA8eHV5YW5nMjAxOC5qeUBm dWppdHN1LmNvbT4NCj4+IC0tLQ0KPj4gMS5hZGQga2VybmVsIGNvbW1pdCBpZA0KPj4gMi51c2Ug c19zZXRnaWRfY3JlYXRlX3VtYXNrX2lkbWFwcGVkX21vdW50cyBpbnN0ZWFkIG9mIGNvbmZ1c2Vk IHNfc2V0Z2lkX2NyZWF0ZV91bWFza19pZG1hcHBlZA0KPj4gICAgc3JjL3Zmcy9pZG1hcHBlZC1t b3VudHMuYyB8IDQyOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPj4g ICAgc3JjL3Zmcy9pZG1hcHBlZC1tb3VudHMuaCB8ICAgMSArDQo+PiAgICBzcmMvdmZzL3V0aWxz LmMgICAgICAgICAgIHwgIDE0ICsrDQo+PiAgICBzcmMvdmZzL3V0aWxzLmggICAgICAgICAgIHwg ICAxICsNCj4+ICAgIHNyYy92ZnMvdmZzdGVzdC5jICAgICAgICAgfCAyMDUgKysrKysrKysrKysr KysrKystDQo+PiAgICB0ZXN0cy9nZW5lcmljLzk5OCAgICAgICAgIHwgIDQ2ICsrKysNCj4+ICAg IHRlc3RzL2dlbmVyaWMvOTk4Lm91dCAgICAgfCAgIDIgKw0KPj4gICAgNyBmaWxlcyBjaGFuZ2Vk LCA2OTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPj4gICAgY3JlYXRlIG1vZGUgMTAw NzU1IHRlc3RzL2dlbmVyaWMvOTk4DQo+PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvZ2Vu ZXJpYy85OTgub3V0DQo+Pg0KPj4gZGlmZiAtLWdpdCBhL3NyYy92ZnMvaWRtYXBwZWQtbW91bnRz LmMgYi9zcmMvdmZzL2lkbWFwcGVkLW1vdW50cy5jDQo+PiBpbmRleCA2MzI5N2Q1Zi4uZjYzYWM0 NGIgMTAwNjQ0DQo+PiAtLS0gYS9zcmMvdmZzL2lkbWFwcGVkLW1vdW50cy5jDQo+PiArKysgYi9z cmMvdmZzL2lkbWFwcGVkLW1vdW50cy5jDQo+PiBAQCAtNzY2NCw2ICs3NjY0LDQyNSBAQCBvdXQ6 DQo+PiAgICAJcmV0dXJuIGZyZXQ7DQo+PiAgICB9DQo+PiAgICANCj4+ICtzdGF0aWMgaW50IHNl dGdpZF9jcmVhdGVfdW1hc2tfaWRtYXBwZWQoY29uc3Qgc3RydWN0IHZmc3Rlc3RfaW5mbyAqaW5m bykNCj4+ICt7DQo+PiArCWludCBmcmV0ID0gLTE7DQo+PiArCWludCBmaWxlMV9mZCA9IC1FQkFE Riwgb3Blbl90cmVlX2ZkID0gLUVCQURGOw0KPj4gKwlzdHJ1Y3QgbW91bnRfYXR0ciBhdHRyID0g ew0KPj4gKwkJLmF0dHJfc2V0ID0gTU9VTlRfQVRUUl9JRE1BUCwNCj4+ICsJfTsNCj4+ICsJcGlk X3QgcGlkOw0KPj4gKwlpbnQgdG1wZmlsZV9mZCA9IC1FQkFERjsNCj4+ICsJYm9vbCBzdXBwb3J0 ZWQgPSBmYWxzZTsNCj4+ICsJY2hhciBwYXRoW1BBVEhfTUFYXTsNCj4+ICsJbW9kZV90IG1vZGU7 DQo+PiArDQo+PiArCWlmICghY2Fwc19zdXBwb3J0ZWQoKSkNCj4+ICsJCXJldHVybiAwOw0KPj4g Kw0KPj4gKwlpZiAoZmNobW9kKGluZm8tPnRfZGlyMV9mZCwgU19JUlVTUiB8DQo+PiArCQkJICAg ICAgU19JV1VTUiB8DQo+PiArCQkJICAgICAgU19JUkdSUCB8DQo+PiArCQkJICAgICAgU19JV0dS UCB8DQo+PiArCQkJICAgICAgU19JUk9USCB8DQo+PiArCQkJICAgICAgU19JV09USCB8DQo+PiAr CQkJICAgICAgU19JWFVTUiB8DQo+PiArCQkJICAgICAgU19JWEdSUCB8DQo+PiArCQkJICAgICAg U19JWE9USCB8DQo+PiArCQkJICAgICAgU19JU0dJRCksIDApIHsNCj4+ICsJCWxvZ19zdGRlcnIo ImZhaWx1cmU6IGZjaG1vZCIpOw0KPj4gKwkJZ290byBvdXQ7DQo+PiArCX0NCj4+ICsNCj4+ICsJ LyogVmVyaWZ5IHRoYXQgdGhlIHNpZCBiaXRzIGdvdCByYWlzZWQuICovDQo+PiArCWlmICghaXNf c2V0Z2lkKGluZm8tPnRfZGlyMV9mZCwgIiIsIEFUX0VNUFRZX1BBVEgpKSB7DQo+PiArCQlsb2df c3RkZXJyKCJmYWlsdXJlOiBpc19zZXRnaWQiKTsNCj4+ICsJCWdvdG8gb3V0Ow0KPj4gKwl9DQo+ PiArDQo+PiArCS8qIENoYW5naW5nIG1vdW50IHByb3BlcnRpZXMgb24gYSBkZXRhY2hlZCBtb3Vu dC4gKi8NCj4+ICsJYXR0ci51c2VybnNfZmQJPSBnZXRfdXNlcm5zX2ZkKDAsIDEwMDAwLCAxMDAw MCk7DQo+PiArCWlmIChhdHRyLnVzZXJuc19mZCA8IDApIHsNCj4+ICsJCWxvZ19zdGRlcnIoImZh aWx1cmU6IGdldF91c2VybnNfZmQiKTsNCj4+ICsJCWdvdG8gb3V0Ow0KPj4gKwl9DQo+PiArDQo+ PiArCW9wZW5fdHJlZV9mZCA9IHN5c19vcGVuX3RyZWUoaW5mby0+dF9kaXIxX2ZkLCAiIiwNCj4+ ICsJCQkJICAgICBBVF9FTVBUWV9QQVRIIHwNCj4+ICsJCQkJICAgICBBVF9OT19BVVRPTU9VTlQg fA0KPj4gKwkJCQkgICAgIEFUX1NZTUxJTktfTk9GT0xMT1cgfA0KPj4gKwkJCQkgICAgIE9QRU5f VFJFRV9DTE9FWEVDIHwNCj4+ICsJCQkJICAgICBPUEVOX1RSRUVfQ0xPTkUpOw0KPj4gKwlpZiAo b3Blbl90cmVlX2ZkIDwgMCkgew0KPj4gKwkJbG9nX3N0ZGVycigiZmFpbHVyZTogc3lzX29wZW5f dHJlZSIpOw0KPj4gKwkJZ290byBvdXQ7DQo+PiArCX0NCj4+ICsNCj4+ICsJaWYgKHN5c19tb3Vu dF9zZXRhdHRyKG9wZW5fdHJlZV9mZCwgIiIsIEFUX0VNUFRZX1BBVEgsICZhdHRyLCBzaXplb2Yo YXR0cikpKSB7DQo+PiArCQlsb2dfc3RkZXJyKCJmYWlsdXJlOiBzeXNfbW91bnRfc2V0YXR0ciIp Ow0KPj4gKwkJZ290byBvdXQ7DQo+PiArCX0NCj4+ICsNCj4+ICsJc3VwcG9ydGVkID0gb3BlbmF0 X3RtcGZpbGVfc3VwcG9ydGVkKG9wZW5fdHJlZV9mZCk7DQo+PiArDQo+PiArCS8qIE9ubHkgdW1h c2sgd2l0aCBTX0lYR1JQIGJlY2F1c2UgaW5vZGUgc3RyaXAgU19JU0dJRCB3aWxsIGNoZWNrIG1v ZGUNCj4+ICsJICogd2hldGhlciBoYXMgZ3JvdXAgZXhlY3V0ZSBvciBzZWFyY2ggcGVybWlzc2lv bi4NCj4+ICsJICovDQo+PiArCXVtYXNrKFNfSVhHUlApOw0KPj4gKwltb2RlID0gdW1hc2soU19J WEdSUCk7DQo+PiArCWlmICghKG1vZGUgJiBTX0lYR1JQKSkNCj4+ICsJCWRpZSgiZmFpbHVyZTog dW1hc2siKTsNCj4+ICsNCj4+ICsJcGlkID0gZm9yaygpOw0KPj4gKwlpZiAocGlkIDwgMCkgew0K Pj4gKwkJbG9nX3N0ZGVycigiZmFpbHVyZTogZm9yayIpOw0KPj4gKwkJZ290byBvdXQ7DQo+PiAr CX0NCj4+ICsJaWYgKHBpZCA9PSAwKSB7DQo+PiArCQlpZiAoIXN3aXRjaF9pZHMoMTAwMDAsIDEx MDAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IHN3aXRjaCBmc2lkcyIpOw0KPj4gKw0KPj4gKwkJ LyogY3JlYXRlIHJlZ3VsYXIgZmlsZSB2aWEgb3BlbigpICovDQo+PiArCQlmaWxlMV9mZCA9IG9w ZW5hdChvcGVuX3RyZWVfZmQsIEZJTEUxLCBPX0NSRUFUIHwgT19FWENMIHwgT19DTE9FWEVDLCBT X0lYR1JQIHwgU19JU0dJRCk7DQo+PiArCQlpZiAoZmlsZTFfZmQgPCAwKQ0KPj4gKwkJCWRpZSgi ZmFpbHVyZTogY3JlYXRlIik7DQo+PiArDQo+PiArCQkvKiBOZWl0aGVyIGluX2dyb3VwX3AoKSBu b3IgY2FwYWJsZV93cnRfaW5vZGVfdWlkZ2lkKCkgc28gc2V0Z2lkDQo+PiArCQkgKiBiaXQgbmVl ZHMgdG8gYmUgc3RyaXBwZWQuDQo+PiArCQkgKi8NCj4+ICsJCWlmIChpc19zZXRnaWQob3Blbl90 cmVlX2ZkLCBGSUxFMSwgMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBpc19zZXRnaWQiKTsNCj4+ ICsNCj4+ICsJCWlmIChpc19peGdycChvcGVuX3RyZWVfZmQsIEZJTEUxLCAwKSkNCj4+ICsJCQlk aWUoImZhaWx1cmU6IGlzX2l4Z3JwIik7DQo+PiArDQo+PiArCQkvKiBjcmVhdGUgZGlyZWN0b3J5 ICovDQo+PiArCQlpZiAobWtkaXJhdChvcGVuX3RyZWVfZmQsIERJUjEsIDAwMDApKQ0KPj4gKwkJ CWRpZSgiZmFpbHVyZTogY3JlYXRlIik7DQo+PiArDQo+PiArCQlpZiAoeGZzX2lyaXhfc2dpZF9p bmhlcml0X2VuYWJsZWQoaW5mby0+dF9mc3R5cGUpKSB7DQo+PiArCQkJLyogV2UncmUgbm90IGlu X2dyb3VwX3AoKS4gKi8NCj4+ICsJCQlpZiAoaXNfc2V0Z2lkKG9wZW5fdHJlZV9mZCwgRElSMSwg MCkpDQo+PiArCQkJCWRpZSgiZmFpbHVyZTogaXNfc2V0Z2lkIik7DQo+PiArCQl9IGVsc2Ugew0K Pj4gKwkJCS8qIERpcmVjdG9yaWVzIGFsd2F5cyBpbmhlcml0IHRoZSBzZXRnaWQgYml0LiAqLw0K Pj4gKwkJCWlmICghaXNfc2V0Z2lkKG9wZW5fdHJlZV9mZCwgRElSMSwgMCkpDQo+PiArCQkJCWRp ZSgiZmFpbHVyZTogaXNfc2V0Z2lkIik7DQo+PiArCQl9DQo+PiArDQo+PiArCQlpZiAoaXNfaXhn cnAob3Blbl90cmVlX2ZkLCBESVIxLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGlzX2l4Z3Jw Iik7DQo+PiArDQo+PiArCQkvKiBjcmVhdGUgYSBzcGVjaWFsIGZpbGUgdmlhIG1rbm9kYXQoKSB2 ZnNfY3JlYXRlICovDQo+PiArCQlpZiAobWtub2RhdChvcGVuX3RyZWVfZmQsIEZJTEUyLCBTX0lG UkVHIHwgU19JU0dJRCB8IFNfSVhHUlAsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogbWtub2Rh dCIpOw0KPj4gKw0KPj4gKwkJaWYgKGlzX3NldGdpZChvcGVuX3RyZWVfZmQsIEZJTEUyLCAwKSkN Cj4+ICsJCQlkaWUoImZhaWx1cmU6IGlzX3NldGdpZCIpOw0KPj4gKw0KPj4gKwkJaWYgKGlzX2l4 Z3JwKG9wZW5fdHJlZV9mZCwgRklMRTIsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogaXNfaXhn cnAiKTsNCj4+ICsNCj4+ICsJCS8qIGNyZWF0ZSBhIHdoaXRlb3V0IGRldmljZSB2aWEgbWtub2Rh dCgpIHZmc19ta25vZCAqLw0KPj4gKwkJaWYgKG1rbm9kYXQob3Blbl90cmVlX2ZkLCBDSFJERVYx LCBTX0lGQ0hSIHwgU19JU0dJRCB8IFNfSVhHUlAsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTog bWtub2RhdCIpOw0KPj4gKw0KPj4gKwkJaWYgKGlzX3NldGdpZChvcGVuX3RyZWVfZmQsIENIUkRF VjEsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogaXNfc2V0Z2lkIik7DQo+PiArDQo+PiArCQlp ZiAoaXNfaXhncnAob3Blbl90cmVlX2ZkLCBDSFJERVYxLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1 cmU6IGlzX2l4Z3JwIik7DQo+PiArDQo+PiArCQkvKg0KPj4gKwkJICogSW4gc2V0Z2lkIGRpcmVj dG9yaWVzIG5ld2x5IGNyZWF0ZWQgZmlsZXMgYWx3YXlzIGluaGVyaXQgdGhlDQo+PiArCQkgKiBn aWQgZnJvbSB0aGUgcGFyZW50IGRpcmVjdG9yeS4gVmVyaWZ5IHRoYXQgdGhlIGZpbGUgaXMgb3du ZWQNCj4+ICsJCSAqIGJ5IGdpZCAxMDAwMCwgbm90IGJ5IGdpZCAxMTAwMC4NCj4+ICsJCSAqLw0K Pj4gKwkJaWYgKCFleHBlY3RlZF91aWRfZ2lkKG9wZW5fdHJlZV9mZCwgRklMRTEsIDAsIDEwMDAw LCAxMDAwMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBjaGVjayBvd25lcnNoaXAiKTsNCj4+ICsN Cj4+ICsJCS8qDQo+PiArCQkgKiBJbiBzZXRnaWQgZGlyZWN0b3JpZXMgbmV3bHkgY3JlYXRlZCBk aXJlY3RvcmllcyBhbHdheXMNCj4+ICsJCSAqIGluaGVyaXQgdGhlIGdpZCBmcm9tIHRoZSBwYXJl bnQgZGlyZWN0b3J5LiBWZXJpZnkgdGhhdCB0aGUNCj4+ICsJCSAqIGRpcmVjdG9yeSBpcyBvd25l ZCBieSBnaWQgMTAwMDAsIG5vdCBieSBnaWQgMTEwMDAuDQo+PiArCQkgKi8NCj4+ICsJCWlmICgh ZXhwZWN0ZWRfdWlkX2dpZChvcGVuX3RyZWVfZmQsIERJUjEsIDAsIDEwMDAwLCAxMDAwMCkpDQo+ PiArCQkJZGllKCJmYWlsdXJlOiBjaGVjayBvd25lcnNoaXAiKTsNCj4+ICsNCj4+ICsJCWlmICgh ZXhwZWN0ZWRfdWlkX2dpZChvcGVuX3RyZWVfZmQsIEZJTEUyLCAwLCAxMDAwMCwgMTAwMDApKQ0K Pj4gKwkJCWRpZSgiZmFpbHVyZTogY2hlY2sgb3duZXJzaGlwIik7DQo+PiArDQo+PiArCQlpZiAo IWV4cGVjdGVkX3VpZF9naWQob3Blbl90cmVlX2ZkLCBDSFJERVYxLCAwLCAxMDAwMCwgMTAwMDAp KQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogY2hlY2sgb3duZXJzaGlwIik7DQo+PiArDQo+PiArCQlp ZiAodW5saW5rYXQob3Blbl90cmVlX2ZkLCBGSUxFMSwgMCkpDQo+PiArCQkJZGllKCJmYWlsdXJl OiBkZWxldGUiKTsNCj4+ICsNCj4+ICsJCWlmICh1bmxpbmthdChvcGVuX3RyZWVfZmQsIERJUjEs IEFUX1JFTU9WRURJUikpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBkZWxldGUiKTsNCj4+ICsNCj4+ ICsJCWlmICh1bmxpbmthdChvcGVuX3RyZWVfZmQsIEZJTEUyLCAwKSkNCj4+ICsJCQlkaWUoImZh aWx1cmU6IGRlbGV0ZSIpOw0KPj4gKw0KPj4gKwkJaWYgKHVubGlua2F0KG9wZW5fdHJlZV9mZCwg Q0hSREVWMSwgMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBkZWxldGUiKTsNCj4+ICsNCj4+ICsJ CS8qIGNyZWF0ZSB0bXBmaWxlIHZpYSBmaWxlc3lzdGVtIHRtcGZpbGUgYXBpICovDQo+PiArCQlp ZiAoc3VwcG9ydGVkKSB7DQo+PiArCQkJdG1wZmlsZV9mZCA9IG9wZW5hdChvcGVuX3RyZWVfZmQs ICIuIiwgT19UTVBGSUxFIHwgT19SRFdSLCBTX0lYR1JQIHwgU19JU0dJRCk7DQo+PiArCQkJaWYg KHRtcGZpbGVfZmQgPCAwKQ0KPj4gKwkJCQlkaWUoImZhaWx1cmU6IGNyZWF0ZSIpOw0KPj4gKwkJ CS8qIGxpbmsgdGhlIHRlbXBvcmFyeSBmaWxlIGludG8gdGhlIGZpbGVzeXN0ZW0sIG1ha2luZyBp dCBwZXJtYW5lbnQgKi8NCj4+ICsJCQlzbnByaW50ZihwYXRoLCBQQVRIX01BWCwgICIvcHJvYy9z ZWxmL2ZkLyVkIiwgdG1wZmlsZV9mZCk7DQo+PiArCQkJaWYgKGxpbmthdChBVF9GRENXRCwgcGF0 aCwgb3Blbl90cmVlX2ZkLCBGSUxFMywgQVRfU1lNTElOS19GT0xMT1cpKQ0KPj4gKwkJCQlkaWUo ImZhaWx1cmU6IGxpbmthdCIpOw0KPj4gKwkJCWlmIChjbG9zZSh0bXBmaWxlX2ZkKSkNCj4+ICsJ CQkJZGllKCJmYWlsdXJlOiBjbG9zZSIpOw0KPj4gKwkJCWlmIChpc19zZXRnaWQob3Blbl90cmVl X2ZkLCBGSUxFMywgMCkpDQo+PiArCQkJCWRpZSgiZmFpbHVyZTogaXNfc2V0Z2lkIik7DQo+PiAr CQkJaWYgKGlzX2l4Z3JwKG9wZW5fdHJlZV9mZCwgRklMRTMsIDApKQ0KPj4gKwkJCQlkaWUoImZh aWx1cmU6IGlzX2l4Z3JwIik7DQo+PiArCQkJaWYgKCFleHBlY3RlZF91aWRfZ2lkKG9wZW5fdHJl ZV9mZCwgRklMRTMsIDAsIDEwMDAwLCAxMDAwMCkpDQo+PiArCQkJCWRpZSgiZmFpbHVyZTogY2hl Y2sgb3duZXJzaGlwIik7DQo+PiArCQkJaWYgKHVubGlua2F0KG9wZW5fdHJlZV9mZCwgRklMRTMs IDApKQ0KPj4gKwkJCQlkaWUoImZhaWx1cmU6IGRlbGV0ZSIpOw0KPj4gKwkJfQ0KPj4gKw0KPj4g KwkJZXhpdChFWElUX1NVQ0NFU1MpOw0KPj4gKwl9DQo+PiArCWlmICh3YWl0X2Zvcl9waWQocGlk KSkNCj4+ICsJCWdvdG8gb3V0Ow0KPj4gKw0KPj4gKwlmcmV0ID0gMDsNCj4+ICsJbG9nX2RlYnVn KCJSYW4gdGVzdCIpOw0KPj4gK291dDoNCj4+ICsJc2FmZV9jbG9zZShhdHRyLnVzZXJuc19mZCk7 DQo+PiArCXNhZmVfY2xvc2UoZmlsZTFfZmQpOw0KPj4gKwlzYWZlX2Nsb3NlKG9wZW5fdHJlZV9m ZCk7DQo+PiArDQo+PiArCXJldHVybiBmcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50 IHNldGdpZF9jcmVhdGVfdW1hc2tfaWRtYXBwZWRfaW5fdXNlcm5zKGNvbnN0IHN0cnVjdCB2ZnN0 ZXN0X2luZm8gKmluZm8pDQo+PiArew0KPj4gKwlpbnQgZnJldCA9IC0xOw0KPj4gKwlpbnQgZmls ZTFfZmQgPSAtRUJBREYsIG9wZW5fdHJlZV9mZCA9IC1FQkFERjsNCj4+ICsJc3RydWN0IG1vdW50 X2F0dHIgYXR0ciA9IHsNCj4+ICsJCS5hdHRyX3NldCA9IE1PVU5UX0FUVFJfSURNQVAsDQo+PiAr CX07DQo+PiArCXBpZF90IHBpZDsNCj4+ICsJaW50IHRtcGZpbGVfZmQgPSAtRUJBREY7DQo+PiAr CWJvb2wgc3VwcG9ydGVkID0gZmFsc2U7DQo+PiArCWNoYXIgcGF0aFtQQVRIX01BWF07DQo+PiAr CW1vZGVfdCBtb2RlOw0KPj4gKw0KPj4gKwlpZiAoIWNhcHNfc3VwcG9ydGVkKCkpDQo+PiArCQly ZXR1cm4gMDsNCj4+ICsNCj4+ICsJaWYgKGZjaG1vZChpbmZvLT50X2RpcjFfZmQsIFNfSVJVU1Ig fA0KPj4gKwkJCSAgICAgIFNfSVdVU1IgfA0KPj4gKwkJCSAgICAgIFNfSVJHUlAgfA0KPj4gKwkJ CSAgICAgIFNfSVdHUlAgfA0KPj4gKwkJCSAgICAgIFNfSVJPVEggfA0KPj4gKwkJCSAgICAgIFNf SVdPVEggfA0KPj4gKwkJCSAgICAgIFNfSVhVU1IgfA0KPj4gKwkJCSAgICAgIFNfSVhHUlAgfA0K Pj4gKwkJCSAgICAgIFNfSVhPVEggfA0KPj4gKwkJCSAgICAgIFNfSVNHSUQpLCAwKSB7DQo+PiAr CQlsb2dfc3RkZXJyKCJmYWlsdXJlOiBmY2htb2QiKTsNCj4+ICsJCWdvdG8gb3V0Ow0KPj4gKwl9 DQo+PiArDQo+PiArCS8qIFZlcmlmeSB0aGF0IHRoZSBzaWQgYml0cyBnb3QgcmFpc2VkLiAqLw0K Pj4gKwlpZiAoIWlzX3NldGdpZChpbmZvLT50X2RpcjFfZmQsICIiLCBBVF9FTVBUWV9QQVRIKSkg ew0KPj4gKwkJbG9nX3N0ZGVycigiZmFpbHVyZTogaXNfc2V0Z2lkIik7DQo+PiArCQlnb3RvIG91 dDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwkvKiBDaGFuZ2luZyBtb3VudCBwcm9wZXJ0aWVzIG9uIGEg ZGV0YWNoZWQgbW91bnQuICovDQo+PiArCWF0dHIudXNlcm5zX2ZkCT0gZ2V0X3VzZXJuc19mZCgw LCAxMDAwMCwgMTAwMDApOw0KPj4gKwlpZiAoYXR0ci51c2VybnNfZmQgPCAwKSB7DQo+PiArCQls b2dfc3RkZXJyKCJmYWlsdXJlOiBnZXRfdXNlcm5zX2ZkIik7DQo+PiArCQlnb3RvIG91dDsNCj4+ ICsJfQ0KPj4gKw0KPj4gKwlvcGVuX3RyZWVfZmQgPSBzeXNfb3Blbl90cmVlKGluZm8tPnRfZGly MV9mZCwgIiIsDQo+PiArCQkJCSAgICAgQVRfRU1QVFlfUEFUSCB8DQo+PiArCQkJCSAgICAgQVRf Tk9fQVVUT01PVU5UIHwNCj4+ICsJCQkJICAgICBBVF9TWU1MSU5LX05PRk9MTE9XIHwNCj4+ICsJ CQkJICAgICBPUEVOX1RSRUVfQ0xPRVhFQyB8DQo+PiArCQkJCSAgICAgT1BFTl9UUkVFX0NMT05F KTsNCj4+ICsJaWYgKG9wZW5fdHJlZV9mZCA8IDApIHsNCj4+ICsJCWxvZ19zdGRlcnIoImZhaWx1 cmU6IHN5c19vcGVuX3RyZWUiKTsNCj4+ICsJCWdvdG8gb3V0Ow0KPj4gKwl9DQo+PiArDQo+PiAr CWlmIChzeXNfbW91bnRfc2V0YXR0cihvcGVuX3RyZWVfZmQsICIiLCBBVF9FTVBUWV9QQVRILCAm YXR0ciwgc2l6ZW9mKGF0dHIpKSkgew0KPj4gKwkJbG9nX3N0ZGVycigiZmFpbHVyZTogc3lzX21v dW50X3NldGF0dHIiKTsNCj4+ICsJCWdvdG8gb3V0Ow0KPj4gKwl9DQo+PiArDQo+PiArCXN1cHBv cnRlZCA9IG9wZW5hdF90bXBmaWxlX3N1cHBvcnRlZChvcGVuX3RyZWVfZmQpOw0KPj4gKw0KPj4g KwkvKiBPbmx5IHVtYXNrIHdpdGggU19JWEdSUCBiZWNhdXNlIGlub2RlIHN0cmlwIFNfSVNHSUQg d2lsbCBjaGVjayBtb2RlDQo+PiArCSAqIHdoZXRoZXIgaGFzIGdyb3VwIGV4ZWN1dGUgb3Igc2Vh cmNoIHBlcm1pc3Npb24uDQo+PiArCSAqLw0KPj4gKwl1bWFzayhTX0lYR1JQKTsNCj4+ICsJbW9k ZSA9IHVtYXNrKFNfSVhHUlApOw0KPj4gKwlpZiAoIShtb2RlICYgU19JWEdSUCkpDQo+PiArCQlk aWUoImZhaWx1cmU6IHVtYXNrIik7DQo+PiArDQo+PiArCS8qDQo+PiArCSAqIEJlbG93IHdlIHZl cmlmeSB0aGF0IHNldGdpZCBpbmhlcml0YW5jZSBmb3IgYSBuZXdseSBjcmVhdGVkIGZpbGUgb3IN Cj4+ICsJICogZGlyZWN0b3J5IHdvcmtzIGNvcnJlY3RseS4gQXMgcGFydCBvZiB0aGlzIHdlIG5l ZWQgdG8gdmVyaWZ5IHRoYXQNCj4+ICsJICogbmV3bHkgY3JlYXRlZCBmaWxlcyBvciBkaXJlY3Rv cmllcyBpbmhlcml0IHRoZWlyIGdpZCBmcm9tIHRoZWlyDQo+PiArCSAqIHBhcmVudCBkaXJlY3Rv cnkuIFNvIHdlIGNoYW5nZSB0aGUgcGFyZW50IGRpcmVjdG9yaWUncyBnaWQgdG8gMTAwMA0KPj4g KwkgKiBhbmQgY3JlYXRlIGEgZmlsZSB3aXRoIGZze2csdX1pZCAwIGFuZCB2ZXJpZnkgdGhhdCB0 aGUgbmV3bHkgY3JlYXRlZA0KPj4gKwkgKiBmaWxlIGFuZCBkaXJlY3RvcnkgaW5oZXJpdCBnaWQg MTAwMCwgbm90IDAuDQo+PiArCSAqLw0KPj4gKwlpZiAoZmNob3duYXQoaW5mby0+dF9kaXIxX2Zk LCAiIiwgLTEsIDEwMDAsIEFUX1NZTUxJTktfTk9GT0xMT1cgfCBBVF9FTVBUWV9QQVRIKSkgew0K Pj4gKwkJbG9nX3N0ZGVycigiZmFpbHVyZTogZmNob3duYXQiKTsNCj4+ICsJCWdvdG8gb3V0Ow0K Pj4gKwl9DQo+PiArDQo+PiArCXBpZCA9IGZvcmsoKTsNCj4+ICsJaWYgKHBpZCA8IDApIHsNCj4+ ICsJCWxvZ19zdGRlcnIoImZhaWx1cmU6IGZvcmsiKTsNCj4+ICsJCWdvdG8gb3V0Ow0KPj4gKwl9 DQo+PiArCWlmIChwaWQgPT0gMCkgew0KPj4gKwkJaWYgKCFjYXBzX3N1cHBvcnRlZCgpKSB7DQo+ PiArCQkJbG9nX2RlYnVnKCJza2lwOiBjYXBhYmlsaXR5IGxpYnJhcnkgbm90IGluc3RhbGxlZCIp Ow0KPj4gKwkJCWV4aXQoRVhJVF9TVUNDRVNTKTsNCj4+ICsJCX0NCj4+ICsNCj4+ICsJCWlmICgh c3dpdGNoX3VzZXJucyhhdHRyLnVzZXJuc19mZCwgMCwgMCwgZmFsc2UpKQ0KPj4gKwkJCWRpZSgi ZmFpbHVyZTogc3dpdGNoX3VzZXJucyIpOw0KPj4gKw0KPj4gKwkJaWYgKCFjYXBzX2Rvd25fZnNl dGlkKCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBjYXBzX2Rvd25fZnNldGlkIik7DQo+PiArDQo+ PiArCQkvKiBjcmVhdGUgcmVndWxhciBmaWxlIHZpYSBvcGVuKCkgKi8NCj4+ICsJCWZpbGUxX2Zk ID0gb3BlbmF0KG9wZW5fdHJlZV9mZCwgRklMRTEsIE9fQ1JFQVQgfCBPX0VYQ0wgfCBPX0NMT0VY RUMsIFNfSVhHUlAgfCBTX0lTR0lEKTsNCj4+ICsJCWlmIChmaWxlMV9mZCA8IDApDQo+PiArCQkJ ZGllKCJmYWlsdXJlOiBjcmVhdGUiKTsNCj4+ICsNCj4+ICsJCS8qIE5laXRoZXIgaW5fZ3JvdXBf cCgpIG5vciBjYXBhYmxlX3dydF9pbm9kZV91aWRnaWQoKSBzbyBzZXRnaWQNCj4+ICsJCSAqIGJp dCBuZWVkcyB0byBiZSBzdHJpcHBlZC4NCj4+ICsJCSAqLw0KPj4gKwkJaWYgKGlzX3NldGdpZChv cGVuX3RyZWVfZmQsIEZJTEUxLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGlzX3NldGdpZCIp Ow0KPj4gKw0KPj4gKwkJaWYgKGlzX2l4Z3JwKG9wZW5fdHJlZV9mZCwgRklMRTEsIDApKQ0KPj4g KwkJCWRpZSgiZmFpbHVyZTogaXNfaXhncnAiKTsNCj4+ICsNCj4+ICsJCS8qIGNyZWF0ZSBkaXJl Y3RvcnkgKi8NCj4+ICsJCWlmIChta2RpcmF0KG9wZW5fdHJlZV9mZCwgRElSMSwgMDAwMCkpDQo+ PiArCQkJZGllKCJmYWlsdXJlOiBjcmVhdGUiKTsNCj4+ICsNCj4+ICsJCWlmICh4ZnNfaXJpeF9z Z2lkX2luaGVyaXRfZW5hYmxlZChpbmZvLT50X2ZzdHlwZSkpIHsNCj4+ICsJCQkvKiBXZSdyZSBu b3QgaW5fZ3JvdXBfcCgpLiAqLw0KPj4gKwkJCWlmIChpc19zZXRnaWQob3Blbl90cmVlX2ZkLCBE SVIxLCAwKSkNCj4+ICsJCQkJZGllKCJmYWlsdXJlOiBpc19zZXRnaWQiKTsNCj4+ICsJCX0gZWxz ZSB7DQo+PiArCQkJLyogRGlyZWN0b3JpZXMgYWx3YXlzIGluaGVyaXQgdGhlIHNldGdpZCBiaXQu ICovDQo+PiArCQkJaWYgKCFpc19zZXRnaWQob3Blbl90cmVlX2ZkLCBESVIxLCAwKSkNCj4+ICsJ CQkJZGllKCJmYWlsdXJlOiBpc19zZXRnaWQiKTsNCj4+ICsJCX0NCj4+ICsNCj4+ICsJCWlmIChp c19peGdycChvcGVuX3RyZWVfZmQsIERJUjEsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogaXNf aXhncnAiKTsNCj4+ICsNCj4+ICsJCS8qIGNyZWF0ZSBhIHNwZWNpYWwgZmlsZSB2aWEgbWtub2Rh dCgpIHZmc19jcmVhdGUgKi8NCj4+ICsJCWlmIChta25vZGF0KG9wZW5fdHJlZV9mZCwgRklMRTIs IFNfSUZSRUcgfCBTX0lTR0lEIHwgU19JWEdSUCwgMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBt a25vZGF0Iik7DQo+PiArDQo+PiArCQlpZiAoaXNfc2V0Z2lkKG9wZW5fdHJlZV9mZCwgRklMRTIs IDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogaXNfc2V0Z2lkIik7DQo+PiArDQo+PiArCQlpZiAo aXNfaXhncnAob3Blbl90cmVlX2ZkLCBGSUxFMiwgMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBp c19peGdycCIpOw0KPj4gKw0KPj4gKwkJLyogY3JlYXRlIGEgd2hpdGVvdXQgZGV2aWNlIHZpYSBt a25vZGF0KCkgdmZzX21rbm9kICovDQo+PiArCQlpZiAobWtub2RhdChvcGVuX3RyZWVfZmQsIENI UkRFVjEsIFNfSUZDSFIgfCBTX0lTR0lEIHwgU19JWEdSUCwgMCkpDQo+PiArCQkJZGllKCJmYWls dXJlOiBta25vZGF0Iik7DQo+PiArDQo+PiArCQlpZiAoaXNfc2V0Z2lkKG9wZW5fdHJlZV9mZCwg Q0hSREVWMSwgMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBpc19zZXRnaWQiKTsNCj4+ICsNCj4+ ICsJCWlmIChpc19peGdycChvcGVuX3RyZWVfZmQsIENIUkRFVjEsIDApKQ0KPj4gKwkJCWRpZSgi ZmFpbHVyZTogaXNfaXhncnAiKTsNCj4+ICsNCj4+ICsJCS8qDQo+PiArCQkgKiBJbiBzZXRnaWQg ZGlyZWN0b3JpZXMgbmV3bHkgY3JlYXRlZCBmaWxlcyBhbHdheXMgaW5oZXJpdCB0aGUNCj4+ICsJ CSAqIGdpZCBmcm9tIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiBWZXJpZnkgdGhhdCB0aGUgZmlsZSBp cyBvd25lZA0KPj4gKwkJICogYnkgZ2lkIDEwMDAsIG5vdCBieSBnaWQgMC4NCj4+ICsJCSAqLw0K Pj4gKwkJaWYgKCFleHBlY3RlZF91aWRfZ2lkKG9wZW5fdHJlZV9mZCwgRklMRTEsIDAsIDAsIDEw MDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogY2hlY2sgb3duZXJzaGlwIik7DQo+PiArDQo+PiAr CQkvKg0KPj4gKwkJICogSW4gc2V0Z2lkIGRpcmVjdG9yaWVzIG5ld2x5IGNyZWF0ZWQgZGlyZWN0 b3JpZXMgYWx3YXlzDQo+PiArCQkgKiBpbmhlcml0IHRoZSBnaWQgZnJvbSB0aGUgcGFyZW50IGRp cmVjdG9yeS4gVmVyaWZ5IHRoYXQgdGhlDQo+PiArCQkgKiBkaXJlY3RvcnkgaXMgb3duZWQgYnkg Z2lkIDEwMDAsIG5vdCBieSBnaWQgMC4NCj4+ICsJCSAqLw0KPj4gKwkJaWYgKCFleHBlY3RlZF91 aWRfZ2lkKG9wZW5fdHJlZV9mZCwgRElSMSwgMCwgMCwgMTAwMCkpDQo+PiArCQkJZGllKCJmYWls dXJlOiBjaGVjayBvd25lcnNoaXAiKTsNCj4+ICsNCj4+ICsJCWlmICghZXhwZWN0ZWRfdWlkX2dp ZChvcGVuX3RyZWVfZmQsIEZJTEUyLCAwLCAwLCAxMDAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6 IGNoZWNrIG93bmVyc2hpcCIpOw0KPj4gKw0KPj4gKwkJaWYgKCFleHBlY3RlZF91aWRfZ2lkKG9w ZW5fdHJlZV9mZCwgQ0hSREVWMSwgMCwgMCwgMTAwMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBj aGVjayBvd25lcnNoaXAiKTsNCj4+ICsNCj4+ICsJCWlmICh1bmxpbmthdChvcGVuX3RyZWVfZmQs IEZJTEUxLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGRlbGV0ZSIpOw0KPj4gKw0KPj4gKwkJ aWYgKHVubGlua2F0KG9wZW5fdHJlZV9mZCwgRElSMSwgQVRfUkVNT1ZFRElSKSkNCj4+ICsJCQlk aWUoImZhaWx1cmU6IGRlbGV0ZSIpOw0KPj4gKw0KPj4gKwkJaWYgKHVubGlua2F0KG9wZW5fdHJl ZV9mZCwgRklMRTIsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogZGVsZXRlIik7DQo+PiArDQo+ PiArCQlpZiAodW5saW5rYXQob3Blbl90cmVlX2ZkLCBDSFJERVYxLCAwKSkNCj4+ICsJCQlkaWUo ImZhaWx1cmU6IGRlbGV0ZSIpOw0KPj4gKw0KPj4gKwkJLyogY3JlYXRlIHRtcGZpbGUgdmlhIGZp bGVzeXN0ZW0gdG1wZmlsZSBhcGkgKi8NCj4+ICsJCWlmIChzdXBwb3J0ZWQpIHsNCj4+ICsJCQl0 bXBmaWxlX2ZkID0gb3BlbmF0KG9wZW5fdHJlZV9mZCwgIi4iLCBPX1RNUEZJTEUgfCBPX1JEV1Is IFNfSVhHUlAgfCBTX0lTR0lEKTsNCj4+ICsJCQlpZiAodG1wZmlsZV9mZCA8IDApDQo+PiArCQkJ CWRpZSgiZmFpbHVyZTogY3JlYXRlIik7DQo+PiArCQkJLyogbGluayB0aGUgdGVtcG9yYXJ5IGZp bGUgaW50byB0aGUgZmlsZXN5c3RlbSwgbWFraW5nIGl0IHBlcm1hbmVudCAqLw0KPj4gKwkJCXNu cHJpbnRmKHBhdGgsIFBBVEhfTUFYLCAgIi9wcm9jL3NlbGYvZmQvJWQiLCB0bXBmaWxlX2ZkKTsN Cj4+ICsJCQlpZiAobGlua2F0KEFUX0ZEQ1dELCBwYXRoLCBvcGVuX3RyZWVfZmQsIEZJTEUzLCBB VF9TWU1MSU5LX0ZPTExPVykpDQo+PiArCQkJCWRpZSgiZmFpbHVyZTogbGlua2F0Iik7DQo+PiAr CQkJaWYgKGNsb3NlKHRtcGZpbGVfZmQpKQ0KPj4gKwkJCQlkaWUoImZhaWx1cmU6IGNsb3NlIik7 DQo+PiArCQkJaWYgKGlzX3NldGdpZChvcGVuX3RyZWVfZmQsIEZJTEUzLCAwKSkNCj4+ICsJCQkJ ZGllKCJmYWlsdXJlOiBpc19zZXRnaWQiKTsNCj4+ICsJCQlpZiAoaXNfaXhncnAob3Blbl90cmVl X2ZkLCBGSUxFMywgMCkpDQo+PiArCQkJCWRpZSgiZmFpbHVyZTogaXNfaXhncnAiKTsNCj4+ICsJ CQlpZiAoIWV4cGVjdGVkX3VpZF9naWQob3Blbl90cmVlX2ZkLCBGSUxFMywgMCwgMCwgMTAwMCkp DQo+PiArCQkJCWRpZSgiZmFpbHVyZTogY2hlY2sgb3duZXJzaGlwIik7DQo+PiArCQkJaWYgKHVu bGlua2F0KG9wZW5fdHJlZV9mZCwgRklMRTMsIDApKQ0KPj4gKwkJCQlkaWUoImZhaWx1cmU6IGRl bGV0ZSIpOw0KPj4gKwkJfQ0KPj4gKw0KPj4gKwkJZXhpdChFWElUX1NVQ0NFU1MpOw0KPj4gKwl9 DQo+PiArCWlmICh3YWl0X2Zvcl9waWQocGlkKSkNCj4+ICsJCWdvdG8gb3V0Ow0KPj4gKw0KPj4g KwlmcmV0ID0gMDsNCj4+ICsJbG9nX2RlYnVnKCJSYW4gdGVzdCIpOw0KPj4gK291dDoNCj4+ICsJ c2FmZV9jbG9zZShhdHRyLnVzZXJuc19mZCk7DQo+PiArCXNhZmVfY2xvc2UoZmlsZTFfZmQpOw0K Pj4gKwlzYWZlX2Nsb3NlKG9wZW5fdHJlZV9mZCk7DQo+PiArDQo+PiArCXJldHVybiBmcmV0Ow0K Pj4gK30NCj4+ICsNCj4+ICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdF9zdHJ1Y3QgdF9pZG1h cHBlZF9tb3VudHNbXSA9IHsNCj4+ICAgIAl7IGFjbHMsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgICAicG9zaXggYWNscyBvbiBy ZWd1bGFyIG1vdW50cyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9LA0KPj4gICAgCXsgY3JlYXRlX2luX3VzZXJucywgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCAgICJjcmVhdGUg b3BlcmF0aW9ucyBpbiB1c2VyIG5hbWVzcGFjZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sDQo+PiBAQCAtNzc0NSwzICs4MTY0LDEz IEBAIGNvbnN0IHN0cnVjdCB0ZXN0X3N1aXRlIHNfc2V0eGF0dHJfZml4XzcwNTE5MWIwM2Q1MCA9 IHsNCj4+ICAgIAkudGVzdHMgPSB0X3NldHhhdHRyX2ZpeF83MDUxOTFiMDNkNTAsDQo+PiAgICAJ Lm5yX3Rlc3RzID0gQVJSQVlfU0laRSh0X3NldHhhdHRyX2ZpeF83MDUxOTFiMDNkNTApLA0KPj4g ICAgfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3Rfc3RydWN0IHRfc2V0Z2lk X2NyZWF0ZV91bWFza19pZG1hcHBlZF9tb3VudHNbXSA9IHsNCj4+ICsJeyBzZXRnaWRfY3JlYXRl X3VtYXNrX2lkbWFwcGVkLAkJCQkJVF9SRVFVSVJFX0lETUFQUEVEX01PVU5UUywJImNyZWF0ZSBv cGVyYXRpb25zIGJ5IHVzaW5nIHVtYXNrIGluIGRpcmVjdG9yaWVzIHdpdGggc2V0Z2lkIGJpdCBz ZXQgb24gaWRtYXBwZWQgbW91bnQiLAkJfSwNCj4+ICsJeyBzZXRnaWRfY3JlYXRlX3VtYXNrX2lk bWFwcGVkX2luX3VzZXJucywJCQlUX1JFUVVJUkVfSURNQVBQRURfTU9VTlRTLAkiY3JlYXRlIG9w ZXJhdGlvbnMgYnkgdXNpbmcgdW1hc2sgaW4gZGlyZWN0b3JpZXMgd2l0aCBzZXRnaWQgYml0IHNl dCBvbiBpZG1hcHBlZCBtb3VudCBpbnNpZGUgdXNlcm5zIiwJfSwNCj4+ICt9Ow0KPj4gKw0KPj4g K2NvbnN0IHN0cnVjdCB0ZXN0X3N1aXRlIHNfc2V0Z2lkX2NyZWF0ZV91bWFza19pZG1hcHBlZF9t b3VudHMgPSB7DQo+PiArCS50ZXN0cyA9IHRfc2V0Z2lkX2NyZWF0ZV91bWFza19pZG1hcHBlZF9t b3VudHMsDQo+PiArCS5ucl90ZXN0cyA9IEFSUkFZX1NJWkUodF9zZXRnaWRfY3JlYXRlX3VtYXNr X2lkbWFwcGVkX21vdW50cyksDQo+PiArfTsNCj4+IGRpZmYgLS1naXQgYS9zcmMvdmZzL2lkbWFw cGVkLW1vdW50cy5oIGIvc3JjL3Zmcy9pZG1hcHBlZC1tb3VudHMuaA0KPj4gaW5kZXggZmYyMWVh MmMuLmE5ZmIzMWVhIDEwMDY0NA0KPj4gLS0tIGEvc3JjL3Zmcy9pZG1hcHBlZC1tb3VudHMuaA0K Pj4gKysrIGIvc3JjL3Zmcy9pZG1hcHBlZC1tb3VudHMuaA0KPj4gQEAgLTE0LDUgKzE0LDYgQEAg ZXh0ZXJuIGNvbnN0IHN0cnVjdCB0ZXN0X3N1aXRlIHNfZnNjYXBzX2luX2FuY2VzdG9yX3VzZXJu czsNCj4+ICAgIGV4dGVybiBjb25zdCBzdHJ1Y3QgdGVzdF9zdWl0ZSBzX25lc3RlZF91c2VybnM7 DQo+PiAgICBleHRlcm4gY29uc3Qgc3RydWN0IHRlc3Rfc3VpdGUgc19zZXRhdHRyX2ZpeF85Njgy MTk3MDgxMDg7DQo+PiAgICBleHRlcm4gY29uc3Qgc3RydWN0IHRlc3Rfc3VpdGUgc19zZXR4YXR0 cl9maXhfNzA1MTkxYjAzZDUwOw0KPj4gK2V4dGVybiBjb25zdCBzdHJ1Y3QgdGVzdF9zdWl0ZSBz X3NldGdpZF9jcmVhdGVfdW1hc2tfaWRtYXBwZWRfbW91bnRzOw0KPj4gICAgDQo+PiAgICAjZW5k aWYgLyogX19JRE1BUFBFRF9NT1VOVFNfSCAqLw0KPj4gZGlmZiAtLWdpdCBhL3NyYy92ZnMvdXRp bHMuYyBiL3NyYy92ZnMvdXRpbHMuYw0KPj4gaW5kZXggMTM4OGVkZGEuLjZkYjdhMTFkIDEwMDY0 NA0KPj4gLS0tIGEvc3JjL3Zmcy91dGlscy5jDQo+PiArKysgYi9zcmMvdmZzL3V0aWxzLmMNCj4+ IEBAIC04MDksNiArODA5LDIwIEBAIGJvb2wgaXNfc3RpY2t5KGludCBkZmQsIGNvbnN0IGNoYXIg KnBhdGgsIGludCBmbGFncykNCj4+ICAgIAlyZXR1cm4gKHN0LnN0X21vZGUgJiBTX0lTVlRYKSA+ IDA7DQo+PiAgICB9DQo+PiAgICANCj4+ICsvKmlzX2l4Z3JwIC0gY2hlY2sgd2hldGhlciBmaWxl IG9yIGRpcmVjdG9yeSBpcyBTX0lYR1JQICovDQo+PiArYm9vbCBpc19peGdycChpbnQgZGZkLCBj b25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpDQo+PiArew0KPj4gKwlpbnQgcmV0Ow0KPj4gKwlz dHJ1Y3Qgc3RhdCBzdDsNCj4+ICsNCj4+ICsJcmV0ID0gZnN0YXRhdChkZmQsIHBhdGgsICZzdCwg ZmxhZ3MpOw0KPj4gKwlpZiAocmV0IDwgMCkNCj4+ICsJCXJldHVybiBmYWxzZTsNCj4+ICsNCj4+ ICsJZXJybm8gPSAwOyAvKiBEb24ndCByZXBvcnQgbWlzbGVhZGluZyBlcnJuby4gKi8NCj4+ICsJ cmV0dXJuIChzdC5zdF9tb2RlICYgU19JWEdSUCk7DQo+PiArfQ0KPj4gKw0KPj4gICAgYm9vbCBz d2l0Y2hfcmVzaWRzKHVpZF90IHVpZCwgZ2lkX3QgZ2lkKQ0KPj4gICAgew0KPj4gICAgCWlmIChz ZXRyZXNnaWQoZ2lkLCBnaWQsIGdpZCkpDQo+PiBkaWZmIC0tZ2l0IGEvc3JjL3Zmcy91dGlscy5o IGIvc3JjL3Zmcy91dGlscy5oDQo+PiBpbmRleCA3ZmI3MDJmZC4uYzBkYmUzNzAgMTAwNjQ0DQo+ PiAtLS0gYS9zcmMvdmZzL3V0aWxzLmgNCj4+ICsrKyBiL3NyYy92ZnMvdXRpbHMuaA0KPj4gQEAg LTM2OCw2ICszNjgsNyBAQCBleHRlcm4gYm9vbCBleHBlY3RlZF9maWxlX3NpemUoaW50IGRmZCwg Y29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzLA0KPj4gICAgZXh0ZXJuIGJvb2wgaXNfc2V0aWQo aW50IGRmZCwgY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKTsNCj4+ICAgIGV4dGVybiBib29s IGlzX3NldGdpZChpbnQgZGZkLCBjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpOw0KPj4gICAg ZXh0ZXJuIGJvb2wgaXNfc3RpY2t5KGludCBkZmQsIGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFn cyk7DQo+PiArZXh0ZXJuIGJvb2wgaXNfaXhncnAoaW50IGRmZCwgY29uc3QgY2hhciAqcGF0aCwg aW50IGZsYWdzKTsNCj4+ICAgIGV4dGVybiBib29sIG9wZW5hdF90bXBmaWxlX3N1cHBvcnRlZChp bnQgZGlyZmQpOw0KPj4gICAgDQo+PiAgICAjZW5kaWYgLyogX19JRE1BUF9VVElMU19IICovDQo+ PiBkaWZmIC0tZ2l0IGEvc3JjL3Zmcy92ZnN0ZXN0LmMgYi9zcmMvdmZzL3Zmc3Rlc3QuYw0KPj4g aW5kZXggMjlhYzBiZWMuLmU5MjhhMWY1IDEwMDY0NA0KPj4gLS0tIGEvc3JjL3Zmcy92ZnN0ZXN0 LmMNCj4+ICsrKyBiL3NyYy92ZnMvdmZzdGVzdC5jDQo+PiBAQCAtMTczMyw2ICsxNzMzLDE4NiBA QCBvdXQ6DQo+PiAgICAJcmV0dXJuIGZyZXQ7DQo+PiAgICB9DQo+PiAgICANCj4+ICsvKiBUaGUg Y3VycmVudF91bWFzaygpIGlzIHN0cmlwcGVkIGZyb20gdGhlIG1vZGUgZGlyZWN0bHkgaW4gdGhl IHZmcyBpZiB0aGUNCj4+ICsgKiBmaWxlc3lzdGVtIGVpdGhlciBkb2Vzbid0IHN1cHBvcnQgYWNs cyBvciB0aGUgZmlsZXN5c3RlbSBoYXMgYmVlbg0KPj4gKyAqIG1vdW50ZWQgd2l0aG91dCBwb3Np YyBhY2wgc3VwcG9ydC4NCj4+ICsgKg0KPj4gKyAqIElmIHRoZSBmaWxlc3lzdGVtIGRvZXMgc3Vw cG9ydCBhY2xzIHRoZW4gY3VycmVudF91bWFzaygpIHN0cmlwcGluZyBpcw0KPj4gKyAqIGRlZmVy cmVkIHRvIHBvc2l4X2FjbF9jcmVhdGUoKS4gU28gd2hlbiB0aGUgZmlsZXN5c3RlbSBjYWxscw0K Pj4gKyAqIHBvc2l4X2FjbF9jcmVhdGUoKSBhbmQgdGhlcmUgYXJlIG5vIGFjbHMgc2V0IG9yIG5v dCBzdXBwb3J0ZWQgdGhlbg0KPj4gKyAqIGN1cnJlbnRfdW1hc2soKSB3aWxsIGJlIHN0cmlwcGVk Lg0KPj4gKyAqDQo+PiArICogVXNlIHVtYXNrKFNfSVhHUlApIHRvIGNoZWNrIHdoZXRoZXIgaW5v ZGUgc3RyaXAgU19JU0dJRCB3b3JrcyBjb3JyZWN0bHkuDQo+PiArICoNCj4+ICsgKiB0ZXN0IGZv ciBjb21taXQgYWM2ODAwZTI3OWEyICgiZnM6IEFkZCBtaXNzaW5nIHVtYXNrIHN0cmlwIGluIHZm c190bXBmaWxlIikNCj4+ICsgKiBhbmQgMTYzOWE0OWNjZGNlICgiZnM6IG1vdmUgU19JU0dJRCBz dHJpcHBpbmcgaW50byB0aGUgdmZzXyooKSBoZWxwZXJzIikuDQo+PiArICovDQo+PiArDQo+PiAr c3RhdGljIGludCBzZXRnaWRfY3JlYXRlX3VtYXNrKGNvbnN0IHN0cnVjdCB2ZnN0ZXN0X2luZm8g KmluZm8pDQo+PiArew0KPj4gKwlpbnQgZnJldCA9IC0xOw0KPj4gKwlpbnQgZmlsZTFfZmQgPSAt RUJBREY7DQo+PiArCWludCB0bXBmaWxlX2ZkID0gLUVCQURGOw0KPj4gKwlwaWRfdCBwaWQ7DQo+ PiArCWJvb2wgc3VwcG9ydGVkID0gZmFsc2U7DQo+PiArCW1vZGVfdCBtb2RlOw0KPj4gKw0KPj4g KwlpZiAoIWNhcHNfc3VwcG9ydGVkKCkpDQo+PiArCQlyZXR1cm4gMDsNCj4+ICsNCj4+ICsJaWYg KGZjaG1vZChpbmZvLT50X2RpcjFfZmQsIFNfSVJVU1IgfA0KPj4gKwkJCSAgICAgIFNfSVdVU1Ig fA0KPj4gKwkJCSAgICAgIFNfSVJHUlAgfA0KPj4gKwkJCSAgICAgIFNfSVdHUlAgfA0KPj4gKwkJ CSAgICAgIFNfSVJPVEggfA0KPj4gKwkJCSAgICAgIFNfSVdPVEggfA0KPj4gKwkJCSAgICAgIFNf SVhVU1IgfA0KPj4gKwkJCSAgICAgIFNfSVhHUlAgfA0KPj4gKwkJCSAgICAgIFNfSVhPVEggfA0K Pj4gKwkJCSAgICAgIFNfSVNHSUQpLCAwKSB7DQo+PiArCQlsb2dfc3RkZXJyKCJmYWlsdXJlOiBm Y2htb2QiKTsNCj4+ICsJCWdvdG8gb3V0Ow0KPj4gKwl9DQo+PiArDQo+PiArCS8qIFZlcmlmeSB0 aGF0IHRoZSBzZXRnaWQgYml0IGdvdCByYWlzZWQuICovDQo+PiArCWlmICghaXNfc2V0Z2lkKGlu Zm8tPnRfZGlyMV9mZCwgIiIsIEFUX0VNUFRZX1BBVEgpKSB7DQo+PiArCQlsb2dfc3RkZXJyKCJm YWlsdXJlOiBpc19zZXRnaWQiKTsNCj4+ICsJCWdvdG8gb3V0Ow0KPj4gKwl9DQo+PiArDQo+PiAr CXN1cHBvcnRlZCA9IG9wZW5hdF90bXBmaWxlX3N1cHBvcnRlZChpbmZvLT50X2RpcjFfZmQpOw0K Pj4gKw0KPj4gKwl1bWFzayhTX0lYR1JQKTsNCj4+ICsJbW9kZSA9IHVtYXNrKFNfSVhHUlApOw0K Pj4gKwlpZiAoIShtb2RlICYgU19JWEdSUCkpDQo+PiArCQlkaWUoImZhaWx1cmU6IHVtYXNrIik7 DQo+PiArDQo+PiArCXBpZCA9IGZvcmsoKTsNCj4+ICsJaWYgKHBpZCA8IDApIHsNCj4+ICsJCWxv Z19zdGRlcnIoImZhaWx1cmU6IGZvcmsiKTsNCj4+ICsJCWdvdG8gb3V0Ow0KPj4gKwl9DQo+PiAr CWlmIChwaWQgPT0gMCkgew0KPj4gKwkJaWYgKCFzd2l0Y2hfaWRzKDAsIDEwMDAwKSkNCj4+ICsJ CQlkaWUoImZhaWx1cmU6IHN3aXRjaF9pZHMiKTsNCj4+ICsNCj4+ICsJCWlmICghY2Fwc19kb3du X2ZzZXRpZCgpKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogY2Fwc19kb3duX2ZzZXRpZCIpOw0KPj4g Kw0KPj4gKwkJLyogY3JlYXRlIHJlZ3VsYXIgZmlsZSB2aWEgb3BlbigpICovDQo+PiArCQlmaWxl MV9mZCA9IG9wZW5hdChpbmZvLT50X2RpcjFfZmQsIEZJTEUxLCBPX0NSRUFUIHwgT19FWENMIHwg T19DTE9FWEVDLCBTX0lYR1JQIHwgU19JU0dJRCk7DQo+PiArCQlpZiAoZmlsZTFfZmQgPCAwKQ0K Pj4gKwkJCWRpZSgiZmFpbHVyZTogY3JlYXRlIik7DQo+PiArDQo+PiArCQkvKiBOZWl0aGVyIGlu X2dyb3VwX3AoKSBub3IgY2FwYWJsZV93cnRfaW5vZGVfdWlkZ2lkKCkgc28gc2V0Z2lkDQo+PiAr CQkgKiBiaXQgbmVlZHMgdG8gYmUgc3RyaXBwZWQuDQo+PiArCQkgKi8NCj4+ICsJCWlmIChpc19z ZXRnaWQoaW5mby0+dF9kaXIxX2ZkLCBGSUxFMSwgMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBp c19zZXRnaWQiKTsNCj4+ICsNCj4+ICsJCWlmIChpc19peGdycChpbmZvLT50X2RpcjFfZmQsIEZJ TEUxLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGlzX2l4Z3JwIik7DQo+PiArDQo+PiArCQlp ZiAobWtkaXJhdChpbmZvLT50X2RpcjFfZmQsIERJUjEsIDAwMDApKQ0KPj4gKwkJCWRpZSgiZmFp bHVyZTogY3JlYXRlIik7DQo+PiArDQo+PiArCQlpZiAoeGZzX2lyaXhfc2dpZF9pbmhlcml0X2Vu YWJsZWQoaW5mby0+dF9mc3R5cGUpKSB7DQo+PiArCQkJLyogV2UncmUgbm90IGluX2dyb3VwX3Ao KS4gKi8NCj4+ICsJCQlpZiAoaXNfc2V0Z2lkKGluZm8tPnRfZGlyMV9mZCwgRElSMSwgMCkpDQo+ PiArCQkJCWRpZSgiZmFpbHVyZTogaXNfc2V0Z2lkIik7DQo+PiArCQl9IGVsc2Ugew0KPj4gKwkJ CS8qIERpcmVjdG9yaWVzIGFsd2F5cyBpbmhlcml0IHRoZSBzZXRnaWQgYml0LiAqLw0KPj4gKwkJ CWlmICghaXNfc2V0Z2lkKGluZm8tPnRfZGlyMV9mZCwgRElSMSwgMCkpDQo+PiArCQkJCWRpZSgi ZmFpbHVyZTogaXNfc2V0Z2lkIik7DQo+PiArCQl9DQo+PiArDQo+PiArCQlpZiAoaXNfaXhncnAo aW5mby0+dF9kaXIxX2ZkLCBESVIxLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGlzX2l4Z3Jw Iik7DQo+PiArDQo+PiArCQkvKiBjcmVhdGUgYSBzcGVjaWFsIGZpbGUgdmlhIG1rbm9kYXQoKSB2 ZnNfY3JlYXRlICovDQo+PiArCQlpZiAobWtub2RhdChpbmZvLT50X2RpcjFfZmQsIEZJTEUyLCBT X0lGUkVHIHwgU19JU0dJRCB8IFNfSVhHUlAsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogbWtu b2RhdCIpOw0KPj4gKw0KPj4gKwkJaWYgKGlzX3NldGdpZChpbmZvLT50X2RpcjFfZmQsIEZJTEUy LCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IGlzX3NldGdpZCIpOw0KPj4gKw0KPj4gKwkJaWYg KGlzX2l4Z3JwKGluZm8tPnRfZGlyMV9mZCwgRklMRTIsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVy ZTogaXNfaXhncnAiKTsNCj4+ICsNCj4+ICsJCS8qIGNyZWF0ZSBhIGNoYXJhY3RlciBkZXZpY2Ug dmlhIG1rbm9kYXQoKSB2ZnNfbWtub2QgKi8NCj4+ICsJCWlmIChta25vZGF0KGluZm8tPnRfZGly MV9mZCwgQ0hSREVWMSwgU19JRkNIUiB8IFNfSVNHSUQgfCBTX0lYR1JQLCBtYWtlZGV2KDUsIDEp KSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6IG1rbm9kYXQiKTsNCj4+ICsNCj4+ICsJCWlmIChpc19z ZXRnaWQoaW5mby0+dF9kaXIxX2ZkLCBDSFJERVYxLCAwKSkNCj4+ICsJCQlkaWUoImZhaWx1cmU6 IGlzX3NldGdpZCIpOw0KPj4gKw0KPj4gKwkJaWYgKGlzX2l4Z3JwKGluZm8tPnRfZGlyMV9mZCwg Q0hSREVWMSwgMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBpc19peGdycCIpOw0KPj4gKw0KPj4g KwkJLyoNCj4+ICsJCSAqIEluIHNldGdpZCBkaXJlY3RvcmllcyBuZXdseSBjcmVhdGVkIGZpbGVz IGFsd2F5cyBpbmhlcml0IHRoZQ0KPj4gKwkJICogZ2lkIGZyb20gdGhlIHBhcmVudCBkaXJlY3Rv cnkuIFZlcmlmeSB0aGF0IHRoZSBmaWxlIGlzIG93bmVkDQo+PiArCQkgKiBieSBnaWQgMCwgbm90 IGJ5IGdpZCAxMDAwMC4NCj4+ICsJCSAqLw0KPj4gKwkJaWYgKCFleHBlY3RlZF91aWRfZ2lkKGlu Zm8tPnRfZGlyMV9mZCwgRklMRTEsIDAsIDAsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogY2hl Y2sgb3duZXJzaGlwIik7DQo+PiArDQo+PiArCQkvKg0KPj4gKwkJICogSW4gc2V0Z2lkIGRpcmVj dG9yaWVzIG5ld2x5IGNyZWF0ZWQgZGlyZWN0b3JpZXMgYWx3YXlzDQo+PiArCQkgKiBpbmhlcml0 IHRoZSBnaWQgZnJvbSB0aGUgcGFyZW50IGRpcmVjdG9yeS4gVmVyaWZ5IHRoYXQgdGhlDQo+PiAr CQkgKiBkaXJlY3RvcnkgaXMgb3duZWQgYnkgZ2lkIDAsIG5vdCBieSBnaWQgMTAwMDAuDQo+PiAr CQkgKi8NCj4+ICsJCWlmICghZXhwZWN0ZWRfdWlkX2dpZChpbmZvLT50X2RpcjFfZmQsIERJUjEs IDAsIDAsIDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogY2hlY2sgb3duZXJzaGlwIik7DQo+PiAr DQo+PiArCQlpZiAoIWV4cGVjdGVkX3VpZF9naWQoaW5mby0+dF9kaXIxX2ZkLCBGSUxFMiwgMCwg MCwgMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBjaGVjayBvd25lcnNoaXAiKTsNCj4+ICsNCj4+ ICsJCWlmICghZXhwZWN0ZWRfdWlkX2dpZChpbmZvLT50X2RpcjFfZmQsIENIUkRFVjEsIDAsIDAs IDApKQ0KPj4gKwkJCWRpZSgiZmFpbHVyZTogY2hlY2sgb3duZXJzaGlwIik7DQo+PiArDQo+PiAr CQlpZiAodW5saW5rYXQoaW5mby0+dF9kaXIxX2ZkLCBGSUxFMSwgMCkpDQo+PiArCQkJZGllKCJm YWlsdXJlOiBkZWxldGUiKTsNCj4+ICsNCj4+ICsJCWlmICh1bmxpbmthdChpbmZvLT50X2RpcjFf ZmQsIERJUjEsIEFUX1JFTU9WRURJUikpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBkZWxldGUiKTsN Cj4+ICsNCj4+ICsJCWlmICh1bmxpbmthdChpbmZvLT50X2RpcjFfZmQsIEZJTEUyLCAwKSkNCj4+ ICsJCQlkaWUoImZhaWx1cmU6IGRlbGV0ZSIpOw0KPj4gKw0KPj4gKwkJaWYgKHVubGlua2F0KGlu Zm8tPnRfZGlyMV9mZCwgQ0hSREVWMSwgMCkpDQo+PiArCQkJZGllKCJmYWlsdXJlOiBkZWxldGUi KTsNCj4+ICsNCj4+ICsJCS8qIGNyZWF0ZSB0bXBmaWxlIHZpYSBmaWxlc3lzdGVtIHRtcGZpbGUg YXBpICovDQo+PiArCQlpZiAoc3VwcG9ydGVkKSB7DQo+PiArCQkJdG1wZmlsZV9mZCA9IG9wZW5h dChpbmZvLT50X2RpcjFfZmQsICIuIiwgT19UTVBGSUxFIHwgT19SRFdSLCBTX0lYR1JQIHwgU19J U0dJRCk7DQo+PiArCQkJaWYgKHRtcGZpbGVfZmQgPCAwKQ0KPj4gKwkJCQlkaWUoImZhaWx1cmU6 IGNyZWF0ZSIpOw0KPj4gKwkJCS8qIGxpbmsgdGhlIHRlbXBvcmFyeSBmaWxlIGludG8gdGhlIGZp bGVzeXN0ZW0sIG1ha2luZyBpdCBwZXJtYW5lbnQgKi8NCj4+ICsJCQlpZiAobGlua2F0KHRtcGZp bGVfZmQsICIiLCBpbmZvLT50X2RpcjFfZmQsIEZJTEUzLCBBVF9FTVBUWV9QQVRIKSkNCj4+ICsJ CQkJZGllKCJmYWlsdXJlOiBsaW5rYXQiKTsNCj4+ICsJCQlpZiAoY2xvc2UodG1wZmlsZV9mZCkp DQo+PiArCQkJCWRpZSgiZmFpbHVyZTogY2xvc2UiKTsNCj4+ICsJCQlpZiAoaXNfc2V0Z2lkKGlu Zm8tPnRfZGlyMV9mZCwgRklMRTMsIDApKQ0KPj4gKwkJCQlkaWUoImZhaWx1cmU6IGlzX3NldGdp ZCIpOw0KPj4gKwkJCWlmIChpc19peGdycChpbmZvLT50X2RpcjFfZmQsIEZJTEUzLCAwKSkNCj4+ ICsJCQkJZGllKCJmYWlsdXJlOiBpc19peGdycCIpOw0KPj4gKwkJCWlmICh1bmxpbmthdChpbmZv LT50X2RpcjFfZmQsIEZJTEUzLCAwKSkNCj4+ICsJCQkJZGllKCJmYWlsdXJlOiBkZWxldGUiKTsN Cj4+ICsJCX0NCj4+ICsNCj4+ICsJCWV4aXQoRVhJVF9TVUNDRVNTKTsNCj4+ICsJfQ0KPj4gKwlp ZiAod2FpdF9mb3JfcGlkKHBpZCkpDQo+PiArCQlnb3RvIG91dDsNCj4+ICsNCj4+ICsJZnJldCA9 IDA7DQo+PiArCWxvZ19kZWJ1ZygiUmFuIHRlc3QiKTsNCj4+ICtvdXQ6DQo+PiArCXNhZmVfY2xv c2UoZmlsZTFfZmQpOw0KPj4gKwlyZXR1cm4gZnJldDsNCj4+ICt9DQo+PiArDQo+PiAgICBzdGF0 aWMgaW50IHNldGF0dHJfdHJ1bmNhdGUoY29uc3Qgc3RydWN0IHZmc3Rlc3RfaW5mbyAqaW5mbykN Cj4+ICAgIHsNCj4+ICAgIAlpbnQgZnJldCA9IC0xOw0KPj4gQEAgLTE4MDcsNiArMTk4Nyw3IEBA IHN0YXRpYyB2b2lkIHVzYWdlKHZvaWQpDQo+PiAgICAJZnByaW50ZihzdGRlcnIsICItLXRlc3Qt YnRyZnMgICAgICAgICAgICAgICAgICAgICAgICBSdW4gYnRyZnMgc3BlY2lmaWMgaWRtYXBwZWQg bW91bnQgdGVzdHN1aXRlXG4iKTsNCj4+ICAgIAlmcHJpbnRmKHN0ZGVyciwgIi0tdGVzdC1zZXRh dHRyLWZpeC05NjgyMTk3MDgxMDggICAgIFJ1biBzZXRhdHRyIHJlZ3Jlc3Npb24gdGVzdHNcbiIp Ow0KPj4gICAgCWZwcmludGYoc3RkZXJyLCAiLS10ZXN0LXNldHhhdHRyLWZpeC03MDUxOTFiMDNk NTAgICAgUnVuIHNldHhhdHRyIHJlZ3Jlc3Npb24gdGVzdHNcbiIpOw0KPj4gKwlmcHJpbnRmKHN0 ZGVyciwgIi0tdGVzdC1zZXRnaWQtY3JlYXRlLXVtYXNrICAgICAgICAgIFJ1biBzZXRnaWQgd2l0 aCB1bWFzayB0ZXN0c1xuIik7DQo+PiAgICANCj4+ICAgIAlfZXhpdChFWElUX1NVQ0NFU1MpOw0K Pj4gICAgfQ0KPj4gQEAgLTE4MjUsNiArMjAwNiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0 aW9uIGxvbmdvcHRzW10gPSB7DQo+PiAgICAJeyJ0ZXN0LWJ0cmZzIiwJCQkJbm9fYXJndW1lbnQs CQkwLAknYid9LA0KPj4gICAgCXsidGVzdC1zZXRhdHRyLWZpeC05NjgyMTk3MDgxMDgiLAlub19h cmd1bWVudCwJCTAsCSdpJ30sDQo+PiAgICAJeyJ0ZXN0LXNldHhhdHRyLWZpeC03MDUxOTFiMDNk NTAiLAlub19hcmd1bWVudCwJCTAsCSdqJ30sDQo+PiArCXsidGVzdC1zZXRnaWQtY3JlYXRlLXVt YXNrIiwJCW5vX2FyZ3VtZW50LAkJMCwJJ3UnfSwNCj4+ICAgIAl7TlVMTCwJCQkJCTAsCQkJMCwJ ICAwfSwNCj4+ICAgIH07DQo+PiAgICANCj4+IEBAIC0xODUwLDYgKzIwMzIsMTUgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCB0ZXN0X3N1aXRlIHNfYmFzaWMgPSB7DQo+PiAgICAJLm5yX3Rlc3RzID0g QVJSQVlfU0laRSh0X2Jhc2ljKSwNCj4+ICAgIH07DQo+PiAgICANCj4+ICtzdGF0aWMgY29uc3Qg c3RydWN0IHRlc3Rfc3RydWN0IHRfc2V0Z2lkX2NyZWF0ZV91bWFza1tdID0gew0KPj4gKwl7IHNl dGdpZF9jcmVhdGVfdW1hc2ssCQkJCQkJMCwJCQkiY3JlYXRlIG9wZXJhdGlvbnMgaW4gZGlyZWN0 b3JpZXMgd2l0aCBzZXRnaWQgYml0IHNldCB1bmRlciB1bWFzayIsCQkJCX0sDQo+PiArfTsNCj4+ ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3Rfc3VpdGUgc19zZXRnaWRfY3JlYXRlX3Vt YXNrID0gew0KPj4gKwkudGVzdHMgPSB0X3NldGdpZF9jcmVhdGVfdW1hc2ssDQo+PiArCS5ucl90 ZXN0cyA9IEFSUkFZX1NJWkUodF9zZXRnaWRfY3JlYXRlX3VtYXNrKSwNCj4+ICt9Ow0KPj4gKw0K Pj4gICAgc3RhdGljIGJvb2wgcnVuX3Rlc3Qoc3RydWN0IHZmc3Rlc3RfaW5mbyAqaW5mbywgY29u c3Qgc3RydWN0IHRlc3Rfc3RydWN0IHN1aXRlW10sIHNpemVfdCBzdWl0ZV9zaXplKQ0KPj4gICAg ew0KPj4gICAgCWludCBpOw0KPj4gQEAgLTE5NDcsNyArMjEzOCw4IEBAIGludCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pDQo+PiAgICAJYm9vbCBpZG1hcHBlZF9tb3VudHNfc3VwcG9ydGVk ID0gZmFsc2UsIHRlc3RfYnRyZnMgPSBmYWxzZSwNCj4+ICAgIAkgICAgIHRlc3RfY29yZSA9IGZh bHNlLCB0ZXN0X2ZzY2Fwc19yZWdyZXNzaW9uID0gZmFsc2UsDQo+PiAgICAJICAgICB0ZXN0X25l c3RlZF91c2VybnMgPSBmYWxzZSwgdGVzdF9zZXRhdHRyX2ZpeF85NjgyMTk3MDgxMDggPSBmYWxz ZSwNCj4+IC0JICAgICB0ZXN0X3NldHhhdHRyX2ZpeF83MDUxOTFiMDNkNTAgPSBmYWxzZTsNCj4+ ICsJICAgICB0ZXN0X3NldHhhdHRyX2ZpeF83MDUxOTFiMDNkNTAgPSBmYWxzZSwNCj4+ICsJICAg ICB0ZXN0X3NldGdpZF9jcmVhdGVfdW1hc2sgPSBmYWxzZTsNCj4+ICAgIA0KPj4gICAgCWluaXRf dmZzdGVzdF9pbmZvKCZpbmZvKTsNCj4+ICAgIA0KPj4gQEAgLTE5ODksNiArMjE4MSw5IEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQo+PiAgICAJCWNhc2UgJ2onOg0KPj4gICAg CQkJdGVzdF9zZXR4YXR0cl9maXhfNzA1MTkxYjAzZDUwID0gdHJ1ZTsNCj4+ICAgIAkJCWJyZWFr Ow0KPj4gKwkJY2FzZSAndSc6DQo+PiArCQkJdGVzdF9zZXRnaWRfY3JlYXRlX3VtYXNrID0gdHJ1 ZTsNCj4+ICsJCQlicmVhazsNCj4+ICAgIAkJY2FzZSAnaCc6DQo+PiAgICAJCQkvKiBmYWxsdGhy b3VnaCAqLw0KPj4gICAgCQlkZWZhdWx0Og0KPj4gQEAgLTIwNjYsNiArMjI2MSwxNCBAQCBpbnQg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQ0KPj4gICAgCSAgICAhcnVuX3N1aXRlKCZpbmZv LCAmc19zZXR4YXR0cl9maXhfNzA1MTkxYjAzZDUwKSkNCj4+ICAgIAkJZ290byBvdXQ7DQo+PiAg ICANCj4+ICsJaWYgKHRlc3Rfc2V0Z2lkX2NyZWF0ZV91bWFzaykgew0KPj4gKwkJaWYgKCFydW5f c3VpdGUoJmluZm8sICZzX3NldGdpZF9jcmVhdGVfdW1hc2spKQ0KPj4gKwkJCWdvdG8gb3V0Ow0K Pj4gKw0KPj4gKwkJaWYgKCFydW5fc3VpdGUoJmluZm8sICZzX3NldGdpZF9jcmVhdGVfdW1hc2tf aWRtYXBwZWRfbW91bnRzKSkNCj4+ICsJCQlnb3RvIG91dDsNCj4+ICsJfQ0KPj4gKw0KPj4gICAg CWZyZXQgPSBFWElUX1NVQ0NFU1M7DQo+PiAgICANCj4+ICAgIG91dDoNCj4+IGRpZmYgLS1naXQg YS90ZXN0cy9nZW5lcmljLzk5OCBiL3Rlc3RzL2dlbmVyaWMvOTk4DQo+PiBuZXcgZmlsZSBtb2Rl IDEwMDc1NQ0KPj4gaW5kZXggMDAwMDAwMDAuLjVmNzM2YjZkDQo+PiAtLS0gL2Rldi9udWxsDQo+ PiArKysgYi90ZXN0cy9nZW5lcmljLzk5OA0KPj4gQEAgLTAsMCArMSw0NiBAQA0KPj4gKyMhIC9i aW4vYmFzaA0KPj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4+ICsjIENv cHlyaWdodCAoYykgMjAyMiBGdWppdHN1IExpbWl0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQo+ PiArIw0KPj4gKyMgRlMgUUEgVGVzdCBOby4gOTk4DQo+PiArIw0KPj4gKyMgVGVzdCBTX0lTR0lE IHN0cmlwcGluZyB3aGV0aGVyIHdvcmtzIGNvcnJlY3RseSB3aGVuIGNhbGwgcHJvY2Vzcw0KPj4g KyMgdXNlcyB1bWFzayhTX0lYR1JQKS4NCj4+ICsjDQo+PiArIyBJdCBpcyBhbHNvIGEgcmVncmVz c2lvbiB0ZXN0IGZvcg0KPj4gKyMgY29tbWl0IGFjNjgwMGUyNzlhMiAoImZzOiBBZGQgbWlzc2lu ZyB1bWFzayBzdHJpcCBpbiB2ZnNfdG1wZmlsZSIpDQo+PiArIyBjb21taXQgMTYzOWE0OWNjZGNl ICgiZnM6IG1vdmUgU19JU0dJRCBzdHJpcHBpbmcgaW50byB0aGUgdmZzXyooKSBoZWxwZXJzIikN Cj4+ICsNCj4+ICsuIC4vY29tbW9uL3ByZWFtYmxlDQo+PiArX2JlZ2luX2ZzdGVzdCBhdXRvIHF1 aWNrIGNhcCBpZG1hcHBlZCBtb3VudCBwZXJtcyBydyB1bmxpbmsNCj4+ICsNCj4+ICsjIEltcG9y dCBjb21tb24gZnVuY3Rpb25zLg0KPj4gKy4gLi9jb21tb24vZmlsdGVyDQo+PiArDQo+PiArIyBy ZWFsIFFBIHRlc3Qgc3RhcnRzIGhlcmUNCj4+ICsNCj4+ICtfc3VwcG9ydGVkX2ZzIGdlbmVyaWMN Cj4+ICtfcmVxdWlyZV90ZXN0DQo+PiArX3JlcXVpcmVfc2NyYXRjaA0KPj4gK19maXhlZF9ieV9r ZXJuZWxfY29tbWl0IGFjNjgwMGUyNzlhMiBcDQo+PiArCSJmczogQWRkIG1pc3NpbmcgdW1hc2sg c3RyaXAgaW4gdmZzX3RtcGZpbGUiIFwNCj4+ICsxNjM5YTQ5Y2NkY2UgImZzOiBtb3ZlIFNfSVNH SUQgc3RyaXBwaW5nIGludG8gdGhlIHZmc18qKCkgaGVscGVycyINCj4+ICsNCj4+ICtfc2NyYXRj aF9ta2ZzID4kc2VxcmVzLmZ1bGwgMj4mMQ0KPj4gKw0KPj4gKyRoZXJlL3NyYy92ZnMvdmZzdGVz dCAtLXRlc3Qtc2V0Z2lkLWNyZWF0ZS11bWFzayBcDQo+PiArICAgICAgICAtLWRldmljZSAiJFRF U1RfREVWIiAtLW1vdW50ICIkVEVTVF9ESVIiIC0tZnN0eXBlICIkRlNUWVAiDQo+PiArDQo+PiAr ZXhwb3J0IE1PVU5UX09QVElPTlM9Ii1vIG5vYWNsIg0KPj4gKw0KPj4gKyMgQWxzbyB0ZXN0IFNf SVNHSUQgc3RyaXBwaW5nIHdoZXRoZXIgd29ya3MgY29ycmVjdGx5IG9uIHVuZGVyZmx5aW5nIGZp bGVzeXN0ZW0NCj4+ICsjIHRoYXQgc3VwcG9ydHMgbm9hY2wgZmVhdHVyZS4NCj4+ICsjIG5vYWNs IHdpbGwgZWFyc2UgYWNsIGZsYWcgaW4gc3VwZXJibG9jaywgc28ga2VybmVsIHdpbGwgdXNlIGN1 cnJlbnRfdW1hc2sgaW4NCj4+ICsjIHZmcyBkaXJlY3RseSBpbnN0ZWFkIG9mIGNhbGxpbmcgcG9z aXhfYWNsX2NyZWF0ZSBvbiB1bmRlcmZseWluZyBmaWxlc3lzdGVtLg0KPj4gK190cnlfc2NyYXRj aF9tb3VudCA+PiRzZXFyZXMuZnVsbCAyPiYxICYmIFwNCj4+ICsJJGhlcmUvc3JjL3Zmcy92ZnN0 ZXN0IC0tdGVzdC1zZXRnaWQtY3JlYXRlLXVtYXNrIFwNCj4+ICsgICAgICAgIC0tZGV2aWNlICIk U0NSQVRDSF9ERVYiIC0tbW91bnQgIiRTQ1JBVENIX01OVCIgLS1mc3R5cGUgIiRGU1RZUCINCj4+ ICsNCj4+ICtlY2hvICJTaWxlbmNlIGlzIGdvbGRlbiINCj4+ICtzdGF0dXM9MA0KPj4gK2V4aXQN Cj4+IGRpZmYgLS1naXQgYS90ZXN0cy9nZW5lcmljLzk5OC5vdXQgYi90ZXN0cy9nZW5lcmljLzk5 OC5vdXQNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMC4uZDI2Nzlh ZTANCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL3Rlc3RzL2dlbmVyaWMvOTk4Lm91dA0KPj4g QEAgLTAsMCArMSwyIEBADQo+PiArUUEgb3V0cHV0IGNyZWF0ZWQgYnkgOTk4DQo+PiArU2lsZW5j ZSBpcyBnb2xkZW4=