From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id US07Hwz2z2IrqhIAWB0awg (envelope-from ) for ; Thu, 14 Jul 2022 06:55:08 -0400 Received: by simark.ca (Postfix, from userid 112) id 6D3561E5EA; Thu, 14 Jul 2022 06:55:08 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=k7KNgC4f; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RDNS_DYNAMIC,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id DEF911E21F for ; Thu, 14 Jul 2022 06:55:06 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0613E3888C59 for ; Thu, 14 Jul 2022 10:55:06 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0613E3888C59 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1657796106; bh=6YhvEZ0PK72lM+XfpyhMCd3GExxW9ZYFd6MbRczcUk4=; h=To:Subject:Date:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=k7KNgC4f2MUWQODb3AriybUw9DzKgpQHGQ+GjDXJrvr+p4I7vu32h9ksxBEQBIf68 4GaR1bQCNpVpUZ+K1vYtdDFSbWsGFdZzGI/SPvxL4tFwqDNO0msLe9J39JmYm2/sXx QcvA2EJc7f8IztmDEWpUdgdCTgm95LzUm70l5gAw= Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by sourceware.org (Postfix) with ESMTPS id 60C6C3856271 for ; Thu, 14 Jul 2022 10:54:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 60C6C3856271 X-IronPort-AV: E=McAfee;i="6400,9594,10407"; a="349447056" X-IronPort-AV: E=Sophos;i="5.92,271,1650956400"; d="scan'208";a="349447056" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jul 2022 03:54:41 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,271,1650956400"; d="scan'208";a="600081362" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga007.fm.intel.com with ESMTP; 14 Jul 2022 03:54:40 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Thu, 14 Jul 2022 03:54:40 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Thu, 14 Jul 2022 03:54:40 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Thu, 14 Jul 2022 03:54:40 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=giZVex1jdeXTz1bZ5tpQ7U/61p9LQ0anhZzgHnoHjEv/Y+K+hCBvC/OkKUZHnb1M59UNkRZbN2rBegeHRZlD1nJnrFu1pvXefDCmFTz6Kj5XXZj3mNATTI1KPkXeA7if6uJ26kllZuy0/cyE+je7gnN/tDi7jghCGTYQBxV1yUcR++KV6bxVJeA0xT38z+Cee9pOMMq1C+NX0hi3Aqdyrgk/2AhLzyKbt/8BXR8TpuQoAtWaGzJipZhLyFQTmeQE9qXT8gCIW/mB3/nes75iQylR+bylPeJB06/BUQ2gC1GUv+UL5vIOv+MqpKjACvETEG3rjv/BVT/jG8hRT8dccg== 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=R6cz+KymgIaVSwVw2B7JMYKZwCTkCMDcoqE213ACe60=; b=KaZN0ofckR7+eAmlIznM1GadAd9x8Zlh9uSwdbrC0wcTcj9fqD94bcM3yR2YzNWBfVXw4m48ElclItrXVWnXnPFH/tik5HZNKvFfpfRvcePegfihOBKlURuEVOwDp1T0jSX0M+tWpXK0HszddQGUpJLBm37KtXBpzRhbqKB0pE9VTQbVOAlPtXRir1V3/oyXDcvdhN/n4aoISMf9kgIt7Pc+3pwab/ifarHlVr2CMZTtTBupOfMC1yk8AVPVM/6Hf2tZtjsR00pocmM8JLE9CP5Qjh8wHIOC5EKEdDUNCtLySeVecfvQ168MhOtS4dR9TnUogFs+rOgH1yRvm2CmOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from MN2PR11MB4566.namprd11.prod.outlook.com (2603:10b6:208:24e::16) by BL1PR11MB5352.namprd11.prod.outlook.com (2603:10b6:208:311::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.21; Thu, 14 Jul 2022 10:54:38 +0000 Received: from MN2PR11MB4566.namprd11.prod.outlook.com ([fe80::857:c128:2e8a:8802]) by MN2PR11MB4566.namprd11.prod.outlook.com ([fe80::857:c128:2e8a:8802%3]) with mapi id 15.20.5417.026; Thu, 14 Jul 2022 10:54:38 +0000 To: Pedro Alves , "gdb-patches@sourceware.org" Subject: RE: [PATCH 2/4] gdb, gdbserver: Add AMX registers. Thread-Topic: [PATCH 2/4] gdb, gdbserver: Add AMX registers. Thread-Index: AQHYYUKe8CSex2bIlU2PtnV256l02q1j4EkAgAL9N9A= Date: Thu, 14 Jul 2022 10:54:37 +0000 Message-ID: References: <20220506121226.137608-1-felix.willgerodt@intel.com> <20220506121226.137608-3-felix.willgerodt@intel.com> <8059d2c0-9b9d-e420-fe95-bc4150dfa164@palves.net> In-Reply-To: <8059d2c0-9b9d-e420-fe95-bc4150dfa164@palves.net> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.6.500.17 dlp-reaction: no-action x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: dbf39345-e4b3-437e-191b-08da65873f15 x-ms-traffictypediagnostic: BL1PR11MB5352:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 1xsKGEbVDKDvmC0nx8cYHJbZMT83TFblM6tGZSX/3KdyKHmgeWNLxIx33h4L1jNfRoEH0MlLeS1+zm967F7eLZwE1Ms+sz8l1T16UQO77zbYGoSAwSaTb768vxOeC1XgnzP9Rn9eYvzySn51ETCbkEgup9YwXuE5xrz148g9TsuIL7tLisyUhfuQ0coeqsswMRZytDEi92Hmj76eO3k6BifVgxRS8Rz1LRLF+TnE9IfQgxq2PbXkXf73u8gZrMs9t80EbNc5w3CyhGWUuD2GktctavNTJtVRkvZntAdBQiD5fsRMfi+MIFOsT47V75u0ZfjxSv7e1f2eRZLbRe8lOt7FDLAH5xKOkz2Qsu56mmi6aLXmpxu+NyhWu0LTThY7gemEBYJUsz9blXB7fJBKa1D0L7eic2VOHRAjwGkxqLn248jq2r+a2Rx1gNgcS/H2sARIOEcT6qMv7DoW28oLkuO6u5DQieEibZfRi3sGLThCcJUZlNPe4eNBU5x1frB33jZSr7b+74Cju9ymTQlDhKgd34DBQ01ib+NiHjgIxwJU/sutuYi2CQrFQe0XZuk2gTCu8Qz5WeqNfYAK9/p3Fq5O3mo9CYfeu65MpsrxVXYFCJycfjFJ/yOWAvLy4vYQAF//NYrP2C8bpRZSwEISbiXb/MfLS+lvCm5E2m9VCn2sTEU+iX+JHqjFowutl5L8qohpIvdx17WQZSO3bmRCn08eZbSuZcwOsYWltpCg3pURDUn2Bo8tFxf/ofElRNjOlywXwHgkl6fTdj7c0XGusZb0M7zW9uahTnUuBkVAqkCt2sjObgwSd1HziKPW7J7iywvSnAeFVK7ahBVEdOc9HYkIQlkRUP4DH/sM/lxc5rA= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR11MB4566.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(346002)(136003)(376002)(39860400002)(396003)(366004)(5660300002)(7696005)(2906002)(316002)(55016003)(53546011)(52536014)(38070700005)(6506007)(41300700001)(30864003)(110136005)(26005)(9686003)(71200400001)(478600001)(66946007)(64756008)(122000001)(66446008)(8676002)(83380400001)(38100700002)(33656002)(86362001)(82960400001)(8936002)(84970400001)(66556008)(76116006)(186003)(66476007); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?K2pKanhWMjlCUTJ0b1E3dCtNTllzWHpEOURUaVNZeS8xRmE2MnpsakljbGRn?= =?utf-8?B?NXlYQzF5RCtua3Zqbk1XbUpwVEt6Q01KQld5K0hEcTJ6Z1A5UGhYemp2b25q?= =?utf-8?B?cmhHRTkxbnBFQzBMc2tpVklXK0tKa2JnTkN6bXpqcjAvNGJzK2N6SS9BQUtx?= =?utf-8?B?SFJOWjhJd1BXVWc3L28zYjdTL1p6Q2RXWlRwSVVNUHZVdU5KY3ZaN0lKWXVi?= =?utf-8?B?bS85WTUySFU0allmckRMc09ySzU1V1JzTWFKTDgyS0p5K0d0c1BGd2NUNTBl?= =?utf-8?B?RFczaTROa3dMWnFVeXlaTGVTUVU3MzFHSlM4ekVCYkxsNlMrdkptRTh4YlV3?= =?utf-8?B?TUxJKzJwajhDRzI1OTFTeHg3NU1XU2FQMWZ4RGFNdE5sYkh1TGJTYVdUTVFP?= =?utf-8?B?b0FQTll4ekczcFcwZHZ2VHM3RmtVSnFheW4vZ200VEppUUhJM0NvcHczU01I?= =?utf-8?B?ZHYrWVV1alM2emdzR3I3QlRYOEtLcDVmMUJGOWV0RXJwR2dkYnBobnlVVFZu?= =?utf-8?B?ZnU3ZEpyN245aCszeTl3RWYrVTU0RnRRQnYydjVVelIxekZTWmo1NTI2eis3?= =?utf-8?B?OTFRbllSVVdIZkgvdWlLN1RLZlIzSUZXU29Bb3VkZDY2bnRtUGMxS04vamI0?= =?utf-8?B?RFNRVUttSkJUSE1oaytaYUNxSFlWT3p6WHNNVmlhN0w5SElXZkJXQmJRTFEr?= =?utf-8?B?Nmp6VCtKSWF6S3c4WC9hYzI3NVJId2VMZHRWR3FZbTMxNm5RZUp1MEVjZWVN?= =?utf-8?B?NXp6NFJucEVCenRISHhEZll4eUl4R2wyOUlKVVNMUkw2MmZVdHM1RWZpaS9s?= =?utf-8?B?dlIvTGh4OVlOQzhoakRnSkduTmRYZ09nMUNaVi80MGw5bHRlOTZPVlRzQnVq?= =?utf-8?B?ZlBldnhnM2xoeXhMK1BFS25iUStxbW9MMS90ZWF5RnlhTVpjelMyeGZ5WkMr?= =?utf-8?B?dDBpd09Rb2d2ZFM4cmUvT3F3cWxGek0xZWNnSmthOGlkQlE5Ynk0L1ZkSVRG?= =?utf-8?B?VkcvTm9ERUt3c1o2UEhDMzNxYktpRjN5Z1liaVhCS3RUVkZxc0FITllubVI3?= =?utf-8?B?cjU1K2lQbm9BY0hEMnRrS09kZTRiL1FxVHN2VXFYQWJjZm9ETVJMd2MzV2ND?= =?utf-8?B?Y2duRjVqRjNYR3NmSklucnhMVG1iUGNKdmtZb0g5WXVoZTNTUFp3Mm0yaksx?= =?utf-8?B?c0FFMjZrR00rb3BYczlvTXpJakZOWnNnT2VqUm1iazA1QlN4N2dHSjJUV3Fk?= =?utf-8?B?Q3BNcitrQ0hKK1NaOFJZWGd2OVRqUkhjQ0ovdDNDeUVqdWtTOGZqRkZ4WGc1?= =?utf-8?B?ODZlQTg5TnY0dEtoSGQyMi9NdGw5MWExWnFSVWx6aXlrMDBveGRJWEd5N1Bj?= =?utf-8?B?dHBxcXErLzlVcmt5c2QwSk5Pb3ZzbHlWaE5ENTFZaFJvNyswekphOUk0RmN5?= =?utf-8?B?d29IQ2daeHFXT0h0TnJBdkFiUytZamg2SU1qcndubFQ0TSsyaWZsQmFPYzk2?= =?utf-8?B?QlRGUXBLcmdqeDhENi9QOXk4bE9jV1I1RWNhRXpzcVVMdXdYMWhSTFJLR1VF?= =?utf-8?B?Rm1xclljUXFlZUhOc3BFTU85Q3V6dHhoWE1MeWhZN0dBV0ZXUEJlSEEzK2hZ?= =?utf-8?B?RXpGYmxMVm1iNERlYU91c0ZsTE5XYUt4Ry9veWQ3ZFRhclRzQTNCdk5VTVFL?= =?utf-8?B?dVQxUVpTcytlQWVwMkM1b3FQNGNGaytScWFyMDhsY0d1anpOa08wMVRDYzJU?= =?utf-8?B?eUsxT1JDNHZBV1l4YkdMWTRjRFhkMVVJZ0UzZnZHc0U4MWJ1UnF3OTJDMUhB?= =?utf-8?B?bVQ0bytpY1V6bWMyREZ0eVBqYzR4ekx0czQ4NGcvU3FWZnhCSHJFSkFjbDVW?= =?utf-8?B?VjhaZ1o1cTBxUEFRRGd1Slpza0RES051aXNkVWNkaC9PdDlYRFJpajF4L2dT?= =?utf-8?B?MG04TzF5NWk4djczK205ZFl3M2VBTFVRTXFlQXBEZmQvZVVZQU1LNmZ6V1hZ?= =?utf-8?B?WDNsQndiNnZ3a0lWU2VLdHg0a3VRSVViQzNBNzh5S1RsMHA1S21SWHhZcG9Y?= =?utf-8?B?dUEySnFrRzdLUUxlVkNTMzExdGxrSFlFUHZqZWdTRnA2Zy82RWVBK0lNeWRR?= =?utf-8?B?d3hkUXpFSysvazhNc3RKWWZTZUlGSnprZlZ4OGtCZWVIOW5Pa1RlQ2gvT0dU?= =?utf-8?B?MXc9PQ==?= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB4566.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dbf39345-e4b3-437e-191b-08da65873f15 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jul 2022 10:54:37.9202 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: jFAotg1M3CEP0wvQoZsZwF0taJuHLHLhtHWieKkrl1U4O5sDCwqeG4pbJw7QvwSG3dGnIrFamgzFISZWpo6maClUv+QLFMS6CTWt05Lihyw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR11MB5352 X-OriginatorOrg: intel.com Content-Transfer-Encoding: base64 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: , From: "Willgerodt, Felix via Gdb-patches" Reply-To: "Willgerodt, Felix" Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBQZWRybyBBbHZlcyA8cGVkcm9A cGFsdmVzLm5ldD4NCj4gU2VudDogTW9udGFnLCAyNy4gSnVuaSAyMDIyIDIwOjEyDQo+IFRvOiBX aWxsZ2Vyb2R0LCBGZWxpeCA8ZmVsaXgud2lsbGdlcm9kdEBpbnRlbC5jb20+OyBnZGItDQo+IHBh dGNoZXNAc291cmNld2FyZS5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCAyLzRdIGdkYiwgZ2Ri c2VydmVyOiBBZGQgQU1YIHJlZ2lzdGVycy4NCj4gDQo+IEhpIEZlbGl4LA0KPiANCj4gVGhpcyBs YXJnZWx5IGxvb2tzIGdvb2QgdG8gbWUsIHRob3VnaCBJIGhhdmUgYSBjb3VwbGUgcXVlc3Rpb25z LiAgU2VlIGJlbG93Lg0KPiANCg0KSGkgUGVkcm8sDQoNClRoYW5rcyBmb3IgeW91ciByZXZpZXcu IFNvcnJ5IGZvciB0YWtpbmcgc28gbG9uZyB0byByZXBseSwgc2VlIG15IGNvbW1lbnRzDQpiZWxv dy4NCg0KPiBPbiAyMDIyLTA1LTA2IDEzOjEyLCBGZWxpeCBXaWxsZ2Vyb2R0IHZpYSBHZGItcGF0 Y2hlcyB3cm90ZToNCj4gDQo+ID4NCj4gPiArLyogQSBoZWxwZXIgZnVuY3Rpb24gdG8gcmUtc2l6 ZSBBTVggcHNldWRvIHJlZ2lzdGVycyBkdXJpbmcgcmVhZHMuICBDb3BpZXMNCj4gPiArICAgdGhl IGNvbnRlbnRzIGZyb20gUkFXX0JVRiB0byBCVUYgYW5kIHJlLXNpemVzIHRoZSB2YWx1ZS4gICov DQo+IA0KPiBJIHRoaW5rIHRoaXMgc2hvdWxkIHNheSB3aGF0IGRvZXMgaXQgbWVhbiB3aGVuIFRJ TEVDRkcgaXMgTlVMTC4NCg0KVGhlIG5leHQgdmVyc2lvbiB3aWxsIGFkZCBhIHNlbnRlbmNlLg0K DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZA0KPiA+ICthbWQ2NF90bW1fcmVzaXplX3JlYWQgKGNv bnN0IHRpbGVjZmdfcmVnICp0aWxlY2ZnLCBjb25zdCBnZGJfYnl0ZQ0KPiAqcmF3X2J1ZiwNCj4g PiArCQkgICAgICAgZ2RiX2J5dGUgKmJ1ZiwgdmFsdWUgKnJlc3VsdF92YWx1ZSwgY29uc3QgaW50 IHRtbW51bSkNCj4gPiArew0KPiA+ICsgIHVpbnQxNl90IGNvbHVtbnMgPSA2NDsNCj4gPiArICB1 aW50OF90IHJvd3MgPSAxNjsNCj4gPiArDQo+ID4gKyAgaWYgKHRpbGVjZmcgIT0gbnVsbHB0cikN Cj4gPiArICAgIHsNCj4gPiArICAgICAgY29sdW1ucyA9IHRpbGVjZmctPmJ5dGVzX3Blcl9yb3cg KHRtbW51bSk7DQo+ID4gKyAgICAgIHJvd3MgPSB0aWxlY2ZnLT5yb3dzICh0bW1udW0pOw0KPiA+ ICsgICAgICBpZiAoY29sdW1ucyA9PSAwKQ0KPiA+ICsJY29sdW1ucyA9IDY0Ow0KPiA+ICsgICAg ICBpZiAocm93cyA9PSAwKQ0KPiA+ICsJcm93cyA9IDE2Ow0KPiA+ICsgICAgfQ0KPiA+ICsNCj4g PiArICBnZGJfYXNzZXJ0IChUWVBFX0xFTkdUSCAodmFsdWVfdHlwZSAocmVzdWx0X3ZhbHVlKSkg Pj0gcm93cyAqDQo+IGNvbHVtbnMpOw0KPiA+ICsNCj4gPiArICAvKiBDb3B5IGVhY2ggcm93IGZy b20gcmF3X2J1ZiBpbnRvIGJ1Zi4gIFRoZSByb3dzIGFyZSBub3QgY29uc2VjdXRpdmUNCj4gPiAr ICAgICBidXQgdGhleSBhcmUgb24gTUFYX0JZVEVTX1BFUl9ST1cgKiBpUm93IHBvc2l0aW9uLiAg Ki8NCj4gPiArICBjb25zdCBnZGJfYnl0ZSAqcmF3X2J1Zl9vZmZzZXQNCj4gPiArICAgID0gcmF3 X2J1ZiArIHRtbW51bSAqIHRpbGVjZmctPk1BWF9CWVRFU19QRVJfVElMRTsNCj4gPiArICBmb3Ig KHVpbnQ4X3QgaVJvdyA9IDA7IGlSb3cgPCByb3dzOyArK2lSb3cpDQo+ID4gKyAgICB7DQo+ID4g KyAgICAgIG1lbWNweSAoYnVmICsgY29sdW1ucyAqIGlSb3csDQo+ID4gKwkgICAgICByYXdfYnVm X29mZnNldCArIHRpbGVjZmctPk1BWF9CWVRFU19QRVJfUk9XICogaVJvdywNCj4gPiArCSAgICAg IGNvbHVtbnMpOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAvKiBBZGp1c3QgdGhlIHJlc3Vs dF92YWx1ZS4gIFRoZSB2YWx1ZSBpcyBhIHVuaW9uIG9mIG1hdHJpY2VzIG9mIGRpZmZlcmVudA0K PiA+ICsgICAgIHR5cGVzLiAgU2VlIGkzODZfdG1tX3R5cGUgKCkuICBUaGlzIGl0ZXJhdGVzIG92 ZXIgZWFjaCBtZW1iZXIgYW5kDQo+ID4gKyAgICAgYWRqdXN0cyB0aGUgZGltZW5zaW9ucyBhY2Nv cmRpbmcgdG8gdGhlIHR5cGUuICAqLw0KPiA+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWVf dHlwZSAocmVzdWx0X3ZhbHVlKS0+bnVtX2ZpZWxkcyAoKTsgKytpKQ0KPiA+ICsgICAgew0KPiA+ ICsgICAgICB0eXBlICpyb3dzX3R5cGUgPSB2YWx1ZV90eXBlIChyZXN1bHRfdmFsdWUpLT5maWVs ZHMgKClbaV0ubV90eXBlOw0KPiA+ICsgICAgICB0eXBlICpjb2xzX3R5cGUgPSByb3dzX3R5cGUt Pm1haW5fdHlwZS0+dGFyZ2V0X3R5cGU7DQo+ID4gKw0KPiA+ICsgICAgICAvKiBBZGp1c3QgYXJy YXkgYml0IGxlbmd0aHMuICAqLw0KPiA+ICsgICAgICByb3dzX3R5cGUtPmxlbmd0aCA9IGNvbHVt bnMgKiByb3dzOw0KPiA+ICsgICAgICBjb2xzX3R5cGUtPmxlbmd0aCA9IGNvbHVtbnM7DQo+ID4g Kw0KPiA+ICsgICAgICAvKiBBZGp1c3QgYXJyYXkgZGltZW5zaW9ucy4gICovDQo+ID4gKyAgICAg IHJvd3NfdHlwZS0+Ym91bmRzICgpLT5oaWdoLnNldF9jb25zdF92YWwgKHJvd3MgLSAxKTsNCj4g PiArICAgICAgaW50IG51bV9ieXRlcyA9IGNvbHNfdHlwZS0+bWFpbl90eXBlLT50YXJnZXRfdHlw ZS0+bGVuZ3RoOw0KPiA+ICsgICAgICBjb2xzX3R5cGUtPmJvdW5kcyAoKS0+aGlnaC5zZXRfY29u c3RfdmFsIChjb2x1bW5zIC8gbnVtX2J5dGVzIC0gMSk7DQo+IA0KPiBEb2VzIGFueSBvdGhlciB0 YXJnZXQgZG8gaW4tcGxhY2UgdHlwZSByZXdyaXRpbmcgbGlrZSB0aGlzPw0KDQpJIGFtIG5vdCBh d2FyZSBvZiBhbnlvbmUgZWxzZSB0aGF0IGhhcyBkb25lIHRoaXMgZXhhY3RseS4gQVJNIFNWRSBo YXMgdGhlDQplYXNpZXIgY2FzZSBvZiBoYXZpbmcgb25seSBhIHZlY3RvciwgdGhhdCB5b3UgY2Fu IGp1c3QgY3V0IG9mZiBvciBleHRlbmQgYXQgdGhlIGVuZC4NCg0KDQo+ICBUaGF0IHNlZW1zIGZp c2h5Lg0KPiBXaGF0IGhhcHBlbnMgZS5nLiwNCj4gdG8gdmFsdWVzIGFscmVhZHkgaW4gdGhlIHZh bHVlIGhpc3RvcnkgdGhhdCB3ZXJlIHJlY29yZGVkIGJlZm9yZSB0aGUNCj4gZGltZW5zaW9ucyBj aGFuZ2VkLCBmb3INCj4gaW5zdGFuY2U/ICBXaWxsIHRoZXkgc3VkZGVubHkgc3RhcnQgcmUtcHJp bnRpbmcgZGlmZmVyZW50bHkgLyBpbmNvcnJlY3RseSB3aXRoDQo+IHRoZWlyIHR5cGUgY2hhbmdl ZA0KPiBiZWhpbmQgdGhlaXIgYmFjaz8NCj4gDQo+IExpa2U6DQo+IA0KPiAgKGdkYikgcHJpbnQg JHJlZyAgIyBzb21lIHJlZ2lzdGVyIG9yIHZhbHVlIG1hcHBlZCB0byBhIHJlZ2lzdGVyIHRoYXQg dGhhdCBlbmRzDQo+IHVwIGluIHRoZSBmdW5jdGlvbiBhYm92ZQ0KPiAgJDEgPSAuLi4gICMgYmVm b3JlIHR5cGUgY2hhbmdlcw0KPiAgIyBzb21ldGhpbmcgaGFwcGVucyBhbmQgdGhlIEFNWCB0eXBl IGNoYW5nZXMuDQo+ICAoZ2RiKSBwcmludCAkcmVnDQo+ICAkMiA9IC4uLiAgIyByZWZsZWN0cyB0 eXBlIGNoYW5nZQ0KPiAgKGdkYikgcHJpbnQgJDENCj4gICQzID0gLi4uICAjIHdoYXQgdHlwZSBk b2VzIEdEQiB1c2UgaGVyZT8NCj4gDQo+IERvIHRoZSBuZXcgdGVzdHMgY292ZXIgc29tZXRoaW5n IGxpa2UgdGhpcyBhbHJlYWR5Pw0KDQpObyB0aGV5IGRvbid0IGNvdmVyIHRoaXMuIEEgdGlsZWNm ZyBjaGFuZ2UgZmx1c2hlcyB0aGUgdG1tIHJlZ2lzdGVyIHRob3VnaC4NCldoZW4gSSBzZXQgdGhl IHRpbGVjZmcgbWFudWFsbHkgaW4gR0RCLCBpbmRlZWQgJDEgY2hhbmdlcyBhcyB3ZWxsLg0KDQoJ KGdkYikgcCAkdG1tMC5tX2ludDgNCgkkMSA9IHt7NSwgNSwgNSwgNSwgNiwgNiwgNiwgNn19DQoJ KGdkYikgcCAkdGlsZWNmZy50aWxlMF9jb2xzYg0KCSQyID0gOA0KCShnZGIpIHAgJHRpbGVjZmcu dGlsZTBfY29sc2IgPSA0DQoJJDMgPSA0DQoJKGdkYikgcCAkdG1tMC5tX2ludDgNCgkkNSA9IHt7 NSwgNSwgNSwgNX19DQoJKGdkYikgcCAkMQ0KCSQ2ID0ge3s1LCA1LCA1LCA1fX0NCg0KR29vZCBj YXRjaCwgSSBkaWRuJ3QgdGhpbmsgb2YgdGhpcy4gV2Ugc2hvdWxkIGZpeCB0aGF0Lg0KDQo+IFRo aXMgbWF5IGxpa2V3aXNlIGFmZmVjdCwgZS5nLiwgd2F0Y2hwb2ludHMgYW5kIGRpc3BsYXlzLg0K PiANCj4gSSBoYXZlbid0IHRyYWNlZCB0aGUgbmV3IGNvZGUgdG8gY2hlY2sgd2hlcmUgZG8gdGhv c2UgdHlwZXMgb3JpZ2luYWxseSBjb21lDQo+IGZyb20sIGJ1dCBtYXliZSBpdA0KPiB3b3VsZCB3 b3JrIHRvIHJldXNlL2V4dGVuZCB0aGUgdmxhIHN1cHBvcnQgdG8gbWFrZSB0aG9zZSB0eXBlcyBo YXZlDQo+IGR5bmFtaWMgbGVuZ3RoIGFuZA0KPiBib3VuZHMgKFRZUEVfRFlOQU1JQ19MRU5HVEgs IERZTl9QUk9QX0JZVEVfU0laRSwgZXRjLikuDQoNCkkgaGF2ZSBsb29rZWQgYSBiaXQgYXQgdGhl IGR5bmFtaWMgbGVuZ3RoIGZvciB0eXBlcyBub3csIGJ1dCB0aGF0IGRvZXNuJ3QNCnNlZW0gdG8g YWNjb3VudCBmb3IgZGltZW5zaW9ucywganVzdCAoYnl0ZSkgbGVuZ3RoIG9yIHJhbmsuDQpPciBh dCBsZWFzdCBJIGRvbid0IHNlZSBob3cgd2UgY291bGQgdXNlIGl0IGhlcmUuDQoNCj4gT3IgbWF5 YmUganVzdCB0d2VhayB0aGVzZSBmdW5jdGlvbnMgc3VjaCB0aGF0IHlvdSBjcmVhdGUgYSBuZXcg dHlwZQ0KPiBpbnN0ZWFkIG9mIGNoYW5naW5nIHRoZQ0KPiBvcmlnaW5hbCB0eXBlLiAgSSBkb24n dCBrbm93IGhvdyBmcmVxdWVudGx5IHRoZSBhcnJheSBkaW1lbnRpb25zIGNoYW5nZSBhbmQNCj4g aG93IG9wZW4NCj4gZW5kZWQgdGhlIGRpbWVuc2lvbnMgYXJlLCBidXQgY2FjaGluZyB0aGUgdHlw ZSBrZXllZCBvbiByb3cvY29sIHNpemVzIG1heQ0KPiB3b3JrIHdlbGwgdG8NCj4gc3BhcmUgY3Jl YXRpbmcgdG9vIG1hbnkgdHlwZXMsIG9yIGFjdHVhbGx5IGNyZWF0aW5nIHRoZW0gYWxsIHRoZSB0 aW1lLg0KDQpJIHRyaWVkIGltcGxlbWVudGluZyB0aGlzIGFwcHJvYWNoIGEgd2hpbGUgYWdvICh3 aXRob3V0IGFueSB0eXBlIGNhY2hpbmcpLg0KSGF2aW5nIGEgaTM4Nl90bW1fdHlwZSgpIGFjY2Vw dCBkaW1lbnNpb25zLCBjcmVhdGluZyB0aGUgdHlwZSBkaXJlY3RseS4NCkFuZCByZXR1cm5pbmcg dGhhdCBpbnN0ZWFkIG9mIHRoZSBtYW51YWwgcmVzaXplLg0KVGhlIHByb2JsZW0gd2FzIHRoYXQg aW4gdmFsdWUuYzp2YWx1ZV9mZXRjaF9sYXp5X3JlZ2lzdGVyKCksIGdkYiBqdXN0DQpjb3BpZXMg dGhlIGNvbnRlbnRzIG9mIE5FV19WQUwgdG8gVkFMLCBhc3N1bWluZyB0aGUgc2FtZQ0KdHlwZS9s ZW5ndGgvZGltZW5zaW9ucy4gVGhlICJvbGQiIFZBTCBjb21lcyBmcm9tDQpmaW5kdmFyLmM6dmFs dWVfb2ZfcmVnaXN0ZXJfbGF6eSgpLCB3aGVyZSBpdCBpcyBmZXRjaGVkIHVzaW5nIHJlZ2NhY2hl LmM6cmVnaXN0ZXJfdHlwZSgpLg0KV2hpY2ggbG9va3MgYXQgcmVnY2FjaGVfZGVzY3ItPnJlZ2lz dGVyX3R5cGUuDQpJbiByZWdjYWNoZS5jLCBJIHNlZSB0aGlzIG9sZCBjb21tZW50Og0KDQogIC8q IExheSBvdXQgdGhlIHJlZ2lzdGVyIGNhY2hlLg0KDQogICAgIE5PVEU6IGNhZ25leS8yMDAyLTA1 LTIyOiBPbmx5IHJlZ2lzdGVyX3R5cGUgKCkgaXMgdXNlZCB3aGVuDQogICAgIGNvbnN0cnVjdGlu ZyB0aGUgcmVnaXN0ZXIgY2FjaGUuICBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlDQogICAgIHJlZ2lz dGVyJ3MgcmF3IHNpemUsIHZpcnR1YWwgc2l6ZSBhbmQgdHlwZSBsZW5ndGggYXJlIGFsbCB0aGUN CiAgICAgc2FtZS4gICovDQoNCihXaGF0IGV2ZW4gaXMgYSB2aXJ0dWFsIHNpemU/KQ0KDQpJIHN0 cnVnZ2xlIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGJlc3QgYWRkcmVzcyB0aGlzLg0KTWF5YmUgYWxs b3dpbmcgZm9yIG11bHRpcGxlIGVudHJpZXMgcGVyIHJlZ2lzdGVyIGluIHRoZSByZWdpc3Rlcl90 eXBlIHRhYmxlIGluIHJlZ2NhY2hlPw0KTm90IHN1cmUgaG93IG11Y2ggZWZmb3J0IHRoYXQgaXMg b3IgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBpbXBsaWNhdGlvbnMuDQoNCk9yIEkgY291bGQgY2Fs bCBnZGJhcmNoX3JlZ2lzdGVyX3R5cGUgaW4gcmVnY2FjaGUuYzpyZWdpc3Rlcl90eXBlKCkgYWdh aW4/DQpNYXliZSBvbmx5IGNvbmRpdGlvbmFsbHksIGlmIHRoZSByZWdpc3Rlcl90eXBlIHdhcyBt YXJrZWQgd2l0aCBhIGR5bmFtaWMgcHJvcGVydHk/DQpJbmRpY2F0aW5nIHRoYXQgaXQgY2FuIGNo YW5nZSBhdCBydW50aW1lIGFuZCBvbmx5IHRoZSBhcmNoIGNhbiBmaWd1cmUgaXQgb3V0Lg0KQnV0 IHdvdWxkIHRoYXQgZXZlbiBzb2x2ZSB0aGUgIiQxIGlzc3VlIj8NCg0KSSBhbSByZWFsbHkgaGFw cHkgYWJvdXQgYW55IHBvaW50ZXJzLg0KDQo+ID4gKyAgICB9DQo+ID4gK30NCj4gPiArDQo+IA0K PiANCj4gPiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqDQo+ID4gIGFtZDY0X3BzZXVkb19yZWdpc3Rl cl9yZWFkX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwNCj4gPiAgCQkJCSAgcmVhZGFi bGVfcmVnY2FjaGUgKnJlZ2NhY2hlLA0KPiA+IEBAIC00MDEsNiArNTExLDU4IEBAIGFtZDY0X3Bz ZXVkb19yZWdpc3Rlcl9yZWFkX3ZhbHVlIChzdHJ1Y3QNCj4gZ2RiYXJjaCAqZ2RiYXJjaCwNCj4g PiAgCW1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFpbGFibGUgKHJlc3VsdF92YWx1ZSwgMCwNCj4gPiAg CQkJCSAgICAgIFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlDQo+IChyZXN1bHRfdmFsdWUpKSk7DQo+ ID4gICAgICB9DQo+ID4gKyAgZWxzZSBpZiAoaTM4Nl90aWxlY2ZnX3JlZ251bV9wIChnZGJhcmNo LCByZWdudW0pKQ0KPiA+ICsgICAgew0KPiA+ICsgICAgICAvKiBSZWFkIHRpbGVjZmcuICAqLw0K PiA+ICsgICAgICBnZGJfYnl0ZSByYXdfYnVmW3JlZ2lzdGVyX3NpemUgKGdkYmFyY2gsIHRkZXAt DQo+ID50aWxlY2ZnX3Jhd19yZWdudW0pXTsNCj4gPiArICAgICAgcmVnaXN0ZXJfc3RhdHVzIHN0 YXR1cyA9IHJlZ2NhY2hlLT5yYXdfcmVhZCAodGRlcC0NCj4gPnRpbGVjZmdfcmF3X3JlZ251bSwN Cj4gPiArCQkJCQkJICAgcmF3X2J1Zik7DQo+ID4gKyAgICAgIGlmIChzdGF0dXMgIT0gUkVHX1ZB TElEKQ0KPiA+ICsJew0KPiA+ICsJICBtYXJrX3ZhbHVlX2J5dGVzX3VuYXZhaWxhYmxlICgNCj4g PiArCSAgICByZXN1bHRfdmFsdWUsIDAsIFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlIChyZXN1bHRf dmFsdWUpKSk7DQo+IA0KPiBGb3JtYXR0aW5nLCAiKCIgbmV2ZXIgZW5kcyBhIGxpbmUuICBUaGlz IGFwcGVhcnMgbXVsdGlwbGUgdGltZXMgaW4gdGhlIHBhdGNoDQo+IHRocm91Z2hvdXQuDQoNCkkg aGF2ZSBhZGRyZXNzZWQgYWxsIG9jY3VycmVuY2VzIGxvY2FsbHksIHdpbGwgYmUgZml4ZWQgaW4g dGhlIG5leHQgcmV2aXNpb24uDQoNCj4gPiArCX0NCj4gPiArICAgICAgZWxzZQ0KPiA+ICsJew0K PiA+ICsJICAvKiBDb3B5IHBhbGV0dGUgYW5kIHN0YXJ0X3Jvdy4gIFNlZSB0aWxlY2ZnX3R5cGUg KCkuICAqLw0KPiA+ICsJICBtZW1jcHkgKGJ1ZiwgcmF3X2J1ZiwgMiAqIDEpOw0KPiA+ICsJICAv KiBDb3B5IGFsbCBjb2xzYi4gICovDQo+ID4gKwkgIG1lbWNweSAoYnVmICsgMiwgcmF3X2J1ZiAr IDE2LCAyICogOCk7DQo+ID4gKwkgIC8qIENvcHkgYWxsIHJvd3MuICAqLw0KPiA+ICsJICBtZW1j cHkgKGJ1ZiArIDE4LCByYXdfYnVmICsgNDgsIDEgKiA4KTsNCj4gPiArCX0NCj4gPiArICAgIH0N Cj4gPiArICBlbHNlIGlmIChpMzg2X3RtbV9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkNCj4g PiArICAgIHsNCj4gPiArICAgICAgLyogUmVhZCB0aWxlY2ZnLiAgKi8NCj4gPiArICAgICAgZ2Ri X2J5dGUgdGlsZWNmZ19idWZbcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgdGRlcC0NCj4gPnRpbGVj ZmdfcmF3X3JlZ251bSldOw0KPiA+ICsgICAgICByZWdpc3Rlcl9zdGF0dXMgc3RhdHVzID0gcmVn Y2FjaGUtPnJhd19yZWFkICh0ZGVwLQ0KPiA+dGlsZWNmZ19yYXdfcmVnbnVtLA0KPiA+ICsJCQkJ CQkgICB0aWxlY2ZnX2J1Zik7DQo+ID4gKyAgICAgIGlmIChzdGF0dXMgIT0gUkVHX1ZBTElEKQ0K PiA+ICsJew0KPiA+ICsJICBtYXJrX3ZhbHVlX2J5dGVzX3VuYXZhaWxhYmxlICgNCj4gPiArCSAg ICByZXN1bHRfdmFsdWUsIDAsIFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlIChyZXN1bHRfdmFsdWUp KSk7DQo+IA0KPiBEaXR0by4NCg0KU2FtZS4NCg0KPiA+ICsJfQ0KPiA+ICsgICAgICBlbHNlDQo+ ID4gKwl7DQo+ID4gKwkgIHRpbGVjZmdfcmVnIHRpbGVjZmd7IHRpbGVjZmdfYnVmIH07DQo+IA0K PiBHREIgcHJlZmVycyB1c2luZyAoKXMgZm9yIGN0b3JzLiAgQWxzbyBzcGFjZSBiZWZvcmUgJygn IC8gJ3snLiAgVGh1czoNCj4gDQo+IAkgIHRpbGVjZmdfcmVnIHRpbGVjZmcgKHRpbGVjZmdfYnVm KTsNCg0KU2FtZS4NCg0KPiA+ICsJICBnZGJfYnl0ZSByYXdfYnVmW3JlZ2lzdGVyX3NpemUgKGdk YmFyY2gsIHRkZXAtDQo+ID50aWxlZGF0YV9yZWdudW0pXTsNCj4gPiArCSAgc3RhdHVzID0gcmVn Y2FjaGUtPnJhd19yZWFkICh0ZGVwLT50aWxlZGF0YV9yZWdudW0sIHJhd19idWYpOw0KPiA+ICsN Cj4gPiArCSAgaWYgKHN0YXR1cyAhPSBSRUdfVkFMSUQpDQo+ID4gKwkgICAgew0KPiA+ICsJICAg ICAgbWFya192YWx1ZV9ieXRlc191bmF2YWlsYWJsZSAoDQo+ID4gKwkJcmVzdWx0X3ZhbHVlLCAw LCBUWVBFX0xFTkdUSCAodmFsdWVfdHlwZSAocmVzdWx0X3ZhbHVlKSkpOw0KPiANCj4gRm9ybWF0 dGluZy4gIChJJ2xsIHN0b3AgcG9pbnRpbmcgdGhlc2Ugb3V0LikNCg0KU2FtZS4NCg0KPiA+ICsJ ICAgIH0NCj4gPiArCSAgZWxzZQ0KPiA+ICsJICAgIHsNCj4gPiArCSAgICAgIC8qIFJlLXNpemUg dmFsdWUgYW5kIGNvcHkgZGF0YS4gICovDQo+ID4gKwkgICAgICBhbWQ2NF90bW1fcmVzaXplX3Jl YWQgKCZ0aWxlY2ZnLCByYXdfYnVmLA0KPiA+ICsJCQkJICAgICBidWYsIHJlc3VsdF92YWx1ZSwN Cj4gPiArCQkJCSAgICAgcmVnbnVtIC0gdGRlcC0+dG1tX3JlZ251bSk7DQo+ID4gKwkgICAgfQ0K PiA+ICsJfQ0KPiA+ICsgICAgfQ0KPiA+ICAgIGVsc2UNCj4gPiAgICAgIGkzODZfcHNldWRvX3Jl Z2lzdGVyX3JlYWRfaW50b192YWx1ZSAoZ2RiYXJjaCwgcmVnY2FjaGUsIHJlZ251bSwNCj4gPiAg CQkJCQkgIHJlc3VsdF92YWx1ZSk7DQo+IA0KPiA+DQo+ID4gKy8qIEFNWCB0aWxlY2ZnX3JlZyBj b25zdHJ1Y3Rvci4gICovDQo+ID4gKw0KPiA+ICt0aWxlY2ZnX3JlZzo6dGlsZWNmZ19yZWcgKHVp bnQ4X3QgKnJhd190aWxlY2ZnKSA6IHRpbGVjZmdfcmVnICgpDQo+ID4gK3sNCj4gDQo+IFBsZWFz ZSB3cml0ZToNCj4gDQo+IHRpbGVjZmdfcmVnOjp0aWxlY2ZnX3JlZyAodWludDhfdCAqcmF3X3Rp bGVjZmcpDQo+ICAgOiB0aWxlY2ZnX3JlZyAoKQ0KPiB7DQo+DQo+IFRob3VnaCB0aGF0IGlzIGp1 c3QgY2FsbGluZyB0aGUgZGVmYXVsdCBjdG9yLiAgSSBkb24ndCB0aGluayB5b3UgbmVlZA0KPiB0 byB0aGF0IGV4cGxpY2l0bHkgaGVyZS4NCg0KSSBmb3JtYXR0ZWQgaXQgdGhlIHdheSB5b3Ugc3Vn Z2VzdGVkLiBCdXQgd2UgY2FuJ3QgZHJvcCB0aGUgdGlsZWNmZ19yZWcgKCkNCihhdCBsZWFzdCBp biB0aGlzIHJldmlzaW9uKS4gVGhhdCB3b3VsZCBtYWtlIEdEQiBzZWdmYXVsdC4NCkl0IGlzIG5l ZWRlZCB0byBpbml0aWFsaXplIChhbmQgc2l6ZSkgY29sdW1uc19hbmRfcm93cy4NCldlIGNhbiBv bmx5IGNoYW5nZSBpdCB0byBhbiBleHBsaWNpdCBpbml0aWFsaXphdGlvbi4NCg0KPiA+ICsgIC8q IFVzZSBkZWZhdWx0IHZhbHVlcy4gICovDQo+ID4gKyAgaWYgKHJhd190aWxlY2ZnID09IG51bGxw dHIpDQo+ID4gKyAgICByZXR1cm47DQo+ID4gKw0KPiA+ICsgIHBhbGV0dGUgPSByYXdfdGlsZWNm Z1swXTsNCj4gPiArICBzdGFydF9yb3cgPSByYXdfdGlsZWNmZ1sxXTsNCj4gPiArDQo+ID4gKyAg LyogUmVhZCBUSUxFQ0ZHIGNvbHVtbiBhbmQgcm93IHZhbHVlcyB2aWEgcG9pbnRlcnMuDQo+ID4g KyAgICAgQ29sdW1ucyBhcmUgcmVwcmVzZW50ZWQgYnkgMiBieXRlcyBhbmQgcm93cyBhcmUgcmVw cmVzZW50ZWQNCj4gPiArICAgICBieSAxIGJ5dGUuICBDb2x1bW4gcG9pbnRlciB3aGljaCBpcyAq dWludDhfdCBuZWVkcyB0byBiZSBjb252ZXJ0ZWQNCj4gPiArICAgICB0byAqdWludDE2X3QgcG9p bnRlci4gICovDQo+ID4gKyAgdWludDE2X3QgKnZlY19jb2xfcG9zDQo+ID4gKyAgICAgID0gcmVp bnRlcnByZXRfY2FzdDx1aW50MTZfdCAqPiAocmF3X3RpbGVjZmcgKw0KPiBDT0xVTU5fTUVNT1JZ X09GRlNFVCk7DQo+ID4gKyAgdWludDhfdCAqdmVjX3Jvd19wb3MgPSByYXdfdGlsZWNmZyArIFJP V19NRU1PUllfT0ZGU0VUOw0KPiA+ICsNCj4gPiArICBmb3IgKGludCBpID0gMDsgaSA8IE1BWF9O QU1FUzsgaSsrKQ0KPiA+ICsgICAgY29sdW1uc19hbmRfcm93c1tpXSA9IHsgdmVjX2NvbF9wb3Nb aV0sIHZlY19yb3dfcG9zW2ldIH07DQo+IA0KPiBXaGVyZSB3YXMgY29sdW1uc19hbmRfcm93cyBy ZXNpemVkIHRvIE1BWF9OQU1FUz8NCg0KSW4gdGhlIGRlZmF1bHQgY3RvciwgdGhhdCBpcyBhbHdh eXMgY2FsbGVkIGZvciB0aGUgY3Rvci4NClRoYXQgaXMgd2h5IEkgbmVlZCB0aGUgaW5pdGlhbGl6 ZXIgbGluZSB3aXRoIHRoZSBleHBsaWNpdCBjYWxsIGFib3ZlLg0KDQo+ID4gK30NCj4gPiArDQo+ ID4gIC8qIENvbnZlcnQgYSBkYnggcmVnaXN0ZXIgbnVtYmVyIFJFRyB0byB0aGUgYXBwcm9wcmlh dGUgcmVnaXN0ZXINCj4gPiAgICAgbnVtYmVyIHVzZWQgYnkgR0RCLiAgKi8NCj4gPg0KPiA+IEBA IC0zMzA3LDYgKzMzODksMTQyIEBAIGkzODZfbW14X3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoKQ0KPiA+ICAgIHJldHVybiB0ZGVwLT5pMzg2X21teF90eXBlOw0KPiA+ICB9DQo+ID4NCj4g PiArLyogQ29uc3RydWN0IHZlY3RvciB0eXBlIGZvciBUTU0gcmVnaXN0ZXJzLiAgKi8NCj4gPiAr DQo+ID4gK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqDQo+ID4gK2kzODZfdG1tX3R5cGUgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoKQ0KPiA+ICt7DQo+ID4gKyAgaTM4Nl9nZGJhcmNoX3RkZXAgKnRkZXAg PSAoaTM4Nl9nZGJhcmNoX3RkZXAgKikgZ2RiYXJjaF90ZGVwDQo+IChnZGJhcmNoKTsNCj4gPiAr DQo+ID4gKyAgaWYgKCF0ZGVwLT5pMzg2X3RtbV90eXBlKQ0KPiA+ICsgICAgew0KPiA+ICsgICAg ICBjb25zdCBzdHJ1Y3QgYnVpbHRpbl90eXBlICpidCA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCk7 DQo+ID4gKw0KPiA+ICsgICAgICB1aW50OF90IGJ5dGVzX3Blcl9yb3cgPSB0aWxlY2ZnX3JlZzo6 TUFYX0JZVEVTX1BFUl9ST1c7DQo+ID4gKyAgICAgIHVpbnQ4X3QgbWF4X3Jvd3MgPSB0aWxlY2Zn X3JlZzo6TUFYX1JPV1M7DQo+ID4gKw0KPiA+ICsgICAgICAvKiBUaGUgdHlwZSB3ZSdyZSBidWls ZGluZyBpcyB0aGlzOiAgKi8NCj4gPiArI2lmIDANCj4gPiArICAgICAgdW5pb24gX19nZGJfYnVp bHRpbl90eXBlX21hdHJpeDEwMjRpDQo+ID4gKyAgICAgIHsNCj4gPiArCWludDhfdCBtX2ludDhb bWF4X3Jvd3NdW2J5dGVzX3Blcl9yb3ddOw0KPiA+ICsJdWludDhfdCBtX3VpbnQ4W21heF9yb3dz XVtieXRlc19wZXJfcm93XTsNCj4gPiArCWludDMyX3QgbV9pbnQzMlttYXhfcm93c11bYnl0ZXNf cGVyX3Jvdy80XTsNCj4gPiArCWJmbG9hdDE2X3QgbV9iZmxvYXQxNlttYXhfcm93c11bYnl0ZXNf cGVyX3Jvdy8yXTsNCj4gPiArCWZsb2F0IG1faW50MzJbbWF4X3Jvd3NdW2J5dGVzX3Blcl9yb3cv NF07DQo+ID4gKyAgICAgIH07DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArICAgICAgc3RydWN0 IHR5cGUgKnQ7DQo+ID4gKyAgICAgIHQgPSBhcmNoX2NvbXBvc2l0ZV90eXBlIChnZGJhcmNoLCAi YnVpbHRpbl90eXBlX3RpbGUiLA0KPiBUWVBFX0NPREVfVU5JT04pOw0KPiA+ICsNCj4gPiArICAg ICAgYXBwZW5kX2NvbXBvc2l0ZV90eXBlX2ZpZWxkICgNCj4gDQo+IEZvcm1hdHRpbmcuICAoc2Ft ZSBiZWxvdy4pDQoNCkkgc3RydWdnbGUgYSBiaXQgd2l0aCBmb3JtYXR0aW5nIHRoZXNlIGxpbmVz IG5pY2VseS4gSSBjaGFuZ2VkIHRoZW0NCnNvIHRoYXQgbm8gbGluZSBldmVyIGVuZHMgb24gIigi Lg0KDQo+ID4gKwkgIHQsICJtX2ludDgiLA0KPiA+ICsJICBpbml0X3ZlY3Rvcl90eXBlIChpbml0 X3ZlY3Rvcl90eXBlIChidC0+YnVpbHRpbl9pbnQ4LA0KPiBieXRlc19wZXJfcm93KSwNCj4gPiAr CQkJICAgIG1heF9yb3dzKSk7DQo+ID4gKw0KPiA+ICsgICAgICBhcHBlbmRfY29tcG9zaXRlX3R5 cGVfZmllbGQgKA0KPiA+ICsJICB0LCAibV91aW50OCIsDQo+ID4gKwkgIGluaXRfdmVjdG9yX3R5 cGUgKA0KPiA+ICsJICAgICAgaW5pdF92ZWN0b3JfdHlwZSAoYnQtPmJ1aWx0aW5fdWludDgsIGJ5 dGVzX3Blcl9yb3cpLA0KPiBtYXhfcm93cykpOw0KPiA+ICsNCj4gPiArICAgICAgYXBwZW5kX2Nv bXBvc2l0ZV90eXBlX2ZpZWxkICgNCj4gPiArCSAgdCwgIm1faW50MzIiLA0KPiA+ICsJICBpbml0 X3ZlY3Rvcl90eXBlICgNCj4gPiArCSAgICAgIGluaXRfdmVjdG9yX3R5cGUgKGJ0LT5idWlsdGlu X2ludDMyLCBieXRlc19wZXJfcm93IC8gNCksDQo+ID4gKwkgICAgICBtYXhfcm93cykpOw0KPiA+ ICsNCj4gPiArICAgICAgYXBwZW5kX2NvbXBvc2l0ZV90eXBlX2ZpZWxkICgNCj4gPiArCSAgdCwg Im1fYmYxNiIsDQo+ID4gKwkgIGluaXRfdmVjdG9yX3R5cGUgKA0KPiA+ICsJICAgICAgaW5pdF92 ZWN0b3JfdHlwZSAoYnQtPmJ1aWx0aW5fYmZsb2F0MTYsIGJ5dGVzX3Blcl9yb3cgLyAyKSwNCj4g PiArCSAgICAgIG1heF9yb3dzKSk7DQo+ID4gKw0KPiA+ICsgICAgICBhcHBlbmRfY29tcG9zaXRl X3R5cGVfZmllbGQgKA0KPiA+ICsJICB0LCAibV9mcDMyIiwNCj4gPiArCSAgaW5pdF92ZWN0b3Jf dHlwZSAoDQo+ID4gKwkgICAgICBpbml0X3ZlY3Rvcl90eXBlIChidC0+YnVpbHRpbl9mbG9hdCwg Ynl0ZXNfcGVyX3JvdyAvIDQpLA0KPiA+ICsJICAgICAgbWF4X3Jvd3MpKTsNCj4gPiArDQo+ID4g KyAgICAgIHQtPnNldF9pc192ZWN0b3IgKHRydWUpOw0KPiA+ICsgICAgICB0LT5zZXRfbmFtZSAo ImJ1aWx0aW5fdHlwZV90aWxlIik7DQo+ID4gKyAgICAgIHRkZXAtPmkzODZfdG1tX3R5cGUgPSB0 Ow0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gdGRlcC0+aTM4Nl90bW1fdHlwZTsN Cj4gPiArfQ0KPiANCj4gDQo+ID4gQEAgLTM0OCw3ICszNzYsNyBAQCBlbnVtIHJlY29yZF9pMzg2 X3JlZ251bQ0KPiA+ICAjZGVmaW5lIEkzODZfTlVNX1JFR1MJCShJMzg2X0dTQkFTRV9SRUdOVU0g KyAxKQ0KPiA+DQo+ID4gIC8qIFNpemUgb2YgdGhlIGxhcmdlc3QgcmVnaXN0ZXIuICAqLw0KPiA+ IC0jZGVmaW5lIEkzODZfTUFYX1JFR0lTVEVSX1NJWkUJNjQNCj4gPiArI2RlZmluZSBJMzg2X01B WF9SRUdJU1RFUl9TSVpFCTgxOTINCj4gPg0KPiANCj4gKkVlayoNCg0KU29ycnkuIFRoYXQgaXMg d2h5IFBhdGNoIDQgZXhpc3RzIDspDQoNCj4gPiAgLyogVHlwZXMgZm9yIGkzODYtc3BlY2lmaWMg cmVnaXN0ZXJzLiAgKi8NCj4gPiAgZXh0ZXJuIHN0cnVjdCB0eXBlICppMzg3X2V4dF90eXBlIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7DQo+ID4gQEAgLTM2Niw2ICszOTQsOCBAQCBleHRlcm4g aW50IGkzODZfa19yZWdudW1fcCAoc3RydWN0IGdkYmFyY2gNCj4gKmdkYmFyY2gsIGludCByZWdu dW0pOw0KPiA+ICBleHRlcm4gaW50IGkzODZfem1tX3JlZ251bV9wIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwgaW50IHJlZ251bSk7DQo+ID4gIGV4dGVybiBpbnQgaTM4Nl96bW1oX3JlZ251bV9w IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSk7DQo+ID4gIGV4dGVybiBib29s IGkzODZfcGtydV9yZWdudW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0p Ow0KPiA+ICtleHRlcm4gYm9vbCBpMzg2X3RpbGVjZmdfcmVnbnVtX3AgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLCBpbnQNCj4gcmVnbnVtKTsNCj4gPiArZXh0ZXJuIGJvb2wgaTM4Nl90bW1fcmVn bnVtX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtKTsNCj4gPg0KPiA+ICBl eHRlcm4gY29uc3QgY2hhciAqaTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfbmFtZSAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsDQo+ID4gIAkJCQkJICAgICAgaW50IHJlZ251bSk7DQo+ID4gQEAgLTQ4NSw0 ICs1MTUsOTQgQEAgZXh0ZXJuIGludCBpMzg2X3N0YXBfaXNfc2luZ2xlX29wZXJhbmQgKHN0cnVj dA0KPiBnZGJhcmNoICpnZGJhcmNoLA0KPiA+ICBleHRlcm4gZXhwcjo6b3BlcmF0aW9uX3VwIGkz ODZfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuDQo+ID4gICAgICAgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLCBzdHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvICpwKTsNCj4gPg0KPiA+ICsvKiBBTVggdXRp bGl0aWVzLiAgKi8NCj4gPiArDQo+ID4gKy8qIFRJTEVDRkcgcmVnaXN0ZXIuDQo+ID4gKyAgIDAg ICAgICAgcGFsZXR0ZQ0KPiA+ICsgICAxICAgICAgIHN0YXJ0X3Jvdw0KPiA+ICsgICAyLTE1ICAg IHJlc2VydmVkLCBtdXN0IGJlIHplcm8NCj4gPiArICAgMTYtMTcgICB0aWxlMC5jb2xzYiBUaWxl IDAgYnl0ZXMgcGVyIHJvdy4NCj4gPiArICAgMTgtMTkgICB0aWxlMS5jb2xzYiBUaWxlIDEgYnl0 ZXMgcGVyIHJvdy4NCj4gPiArICAgMjAtMjEgICB0aWxlMi5jb2xzYiBUaWxlIDIgYnl0ZXMgcGVy IHJvdy4NCj4gPiArICAgLi4uICAgICAoc2VxdWVuY2UgY29udGludWVzKQ0KPiA+ICsgICAzMC0z MSAgIHRpbGU3LmNvbHNiIFRpbGUgNyBieXRlcyBwZXIgcm93Lg0KPiA+ICsgICAzMi00NyAgIHJl c2VydmVkLCBtdXN0IGJlIHplcm8NCj4gPiArICAgNDggICAgICB0aWxlMC5yb3dzIFRpbGUgMCBy b3dzLg0KPiA+ICsgICA0OSAgICAgIHRpbGUxLnJvd3MgVGlsZSAxIHJvd3MuDQo+ID4gKyAgIDUw ICAgICAgdGlsZTIucm93cyBUaWxlIDIgcm93cy4NCj4gPiArICAgLi4uICAgICAoc2VxdWVuY2Ug Y29udGludWVzKQ0KPiA+ICsgICA1NSAgICAgIHRpbGU3LnJvd3MgVGlsZSA3IHJvd3MuDQo+ID4g KyAgIDU2LTYzICAgcmVzZXJ2ZWQsIG11c3QgYmUgemVyby4gICovDQo+ID4gKw0KPiA+ICsvKiBU SUxFQ0ZHIGNsYXNzIHJlcHJlc2VudGluZyB0aGUgQU1YIFRpbGVjZmcgcmVnaXN0ZXIuICAqLw0K PiA+ICsNCj4gPiArY2xhc3MgdGlsZWNmZ19yZWcNCj4gPiArew0KPiA+ICtwdWJsaWM6DQo+ID4g KyAgdGlsZWNmZ19yZWcgKCkNCj4gPiArICAgICAgOiBjb2x1bW5zX2FuZF9yb3dzICgNCj4gPiAr CSAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHVpbnQxNl90LCB1aW50OF90Pj4gKE1BWF9OQU1FUywg eyAwLCAwIH0pKQ0KPiANCj4gV291bGQgaXQgYmUgcG9zc2libGUgdG8gdXNlIGEgc3RydWN0IGlu c3RlYWQgb2YgYSBwYWlyPyAgUGFpcnMgYXJlIGtpbmQgb2YNCj4gaG9ycmlibGUNCj4gZm9yIHJl YWRhYmlsaXR5LiAgU29tZSBwcm9wZXIgZmllbGQgbmFtZXMgd291bGQgYmUgbXVjaCBjbGVhcmVy IHRoYW4gImZpcnN0Ig0KPiBhbmQgInNlY29uZCIuDQo+IHN0ZDo6cGFpciBpcyBncmVhdCBmb3Ig Z2VuZXJhbCBwdXJwb3NlIHRlbXBsYXRlcywgbm90IHNvIG11Y2ggb3RoZXJ3aXNlLg0KDQpJIGRv IGFncmVlLCB5ZXQgaGVyZSBpdCBpcyBub3QgdG9vIGJhZCB0byByZWFkIElNTy4NClRoZSBwYWly IGhhcyB0aGUgYWR2YW50YWdlIG9mIG5vdCBoYXZpbmcgdG8gd3JpdGUgbW9yZSBvcGVyYXRvcnMg YW5kIGN0b3JzLg0KQXMgdGhleSBhcmUgYWxyZWFkeSBkZWZpbmVkIGZvciBwYWlycy4gTm90IGZv ciBhIHZlY3RvciBvZiBzdHJ1Y3RzLg0KV2UgbmVlZCB0byBiZSBhYmxlIHRvIGNvbXBhcmUgdGhl bS4NClRoYXQgc2FpZCwgSSB3b24ndCBpbnNpc3QgaWYgeW91IHN0aWxsIHdhbnQgaXQgdG8gYmUg YSBzdHJ1Y3QuIEl0IGlzIHN0cmFpZ2h0Zm9yd2FyZC4NCg0KPiBBbHNvLCBob3cgYWJvdXQgZG9p bmcgdGhpcyBjb2x1bW5zX2FuZF9yb3dzIGluaXRpYWxpemF0aW9uIHdoZXJlIHRoZQ0KPiBmaWVs ZCBpcyBkZWNsYXJlZD8NCg0KSSBkb24ndCBzZWUgbXVjaCB3cm9uZyB3aXRoIHRoZSBjdXJyZW50 IHdheS4gSSBjYW4gYWxzbyBhZGQgYW4gZXhwbGljaXQNCmluaXRpYWxpemVyIGluc3RlYWQgb2Yg dGhlIGRlZmF1bHQgY3RvciBjYWxsLiBJIGRvbid0IHRoaW5rIEkgY2FuIGFkZCBpdCBpbiB0aGUN CmNsYXNzIGRlZmluaXRpb24gd2hlcmUgaXQgaXMgZGVjbGFyZWQuIFRoYXQgZG9lc24ndCBjb21w aWxlLg0KDQo+ID4gKyAgew0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLyogQ29uc3RydWN0IGl0 IGZyb20gcmF3IHRpbGVjZmcgZGF0YS4gICovDQo+ID4gKyAgZXhwbGljaXQgdGlsZWNmZ19yZWcg KHVpbnQ4X3QgKnJhd190aWxlY2ZnKTsNCj4gDQo+IEFzIHBvaW50ZWQgb3V0IGFib3ZlLCB0aGUg aW1wbGVtZW50YXRpb24gb2YgdGhpcyBjdG9yIGRvZXNuJ3Qgc2VlbSB0byByZXNpemUNCj4gdGhl DQo+IGNvbHVtbnNfYW5kX3Jvd3MgdmVjdG9yLCBhbmQganVzdCBhY2Nlc3NlcyB0aGUgZWxlbWVu dHMgc3RyYWlnaHQgYXdheToNCj4gDQo+ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX05BTUVT OyBpKyspDQo+ICAgICAgY29sdW1uc19hbmRfcm93c1tpXSA9IHsgdmVjX2NvbF9wb3NbaV0sIHZl Y19yb3dfcG9zW2ldIH07DQo+ICB9DQo+IA0KPiBNb3ZpbmcgdGhlIGluaXRpYWxpemF0aW9uIHRv IHRoZSBtZW1iZXIgZGVjbGFyYXRpb24gd291bGQgZml4IGl0LA0KPiBidXQgbWF5YmUgSSdtIG1p c3Npbmcgc29tZXRoaW5nLg0KDQpTZWUgYWJvdmUuIFRoZSBkZWZhdWx0IGN0b3IgaXMgY2FsbGVk IGJlZm9yZSB0aGUgY3Rvci4NCg0KPiA+ICsNCj4gPiArcHJpdmF0ZToNCj4gPiArICAvKiBUaGlz IHN0b3JlcyB0aGUgY29sc2IgYW5kIHJvd3MgZW50cmllcy4gICovDQo+IA0KPiBJIGd1ZXNzICJj b2xzYiIgaXMgYSB0eXBvIGZvciAiY29scyI/DQoNCkl0IGlzbid0LiBJdCBjb21lcyBmcm9tIHRo ZSBJbnRlbCBEb2N1bWVudGF0aW9uIHdvcmRpbmcuIEluZGljYXRpbmcgYnl0ZQ0KY29sdW1ucyBJ IHN1cHBvc2UuIEkgd2lsbCB0cnkgdG8gdW5pZnkgaXQuIFByb2JhYmx5IG1vcmUgY29uZnVzaW5n IHRoYW4gaGVscGluZy4NCg0KPiA+ICsgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjx1aW50MTZfdCwg dWludDhfdD4+IGNvbHVtbnNfYW5kX3Jvd3M7DQo+ID4gK307DQo+ID4gKw0KPiANCj4gPiArc2V0 IGxpbmUxIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJCUDEiXQ0KPiA+ICtzZXQgbGluZTIgW2dkYl9n ZXRfbGluZV9udW1iZXIgIkJQMiJdDQo+ID4gK2dkYl9icmVha3BvaW50ICRsaW5lMQ0KPiA+ICtn ZGJfYnJlYWtwb2ludCAkbGluZTINCj4gPiArDQo+ID4gKyMgUmVnaXN0ZXJzIHNob3VsZCBiZSBk aXNwbGF5ZWQgYXMgemVyb2VkIGJlZm9yZSBBTVggZW5hYmxlbWVudC4NCj4gPiArd2l0aF90ZXN0 X3ByZWZpeCAiQmVmb3JlIEFNWCBpcyBlbmFibGVkIiB7DQo+IA0KPiBMb3dlcmNhc2UgIkJlZm9y ZSIuDQoNCkRvbmUNCg0KPiA+ICsgICAgZ2RiX3Rlc3QgInByaW50IFwkdGlsZWNmZ19yYXciICI9 IDAiDQo+ID4gKyAgICBmb3Ige3NldCBpIDB9IHskaSA8IDh9IHtpbmNyIGl9IHsNCj4gPiArCXRl c3RfemVyb2VkX3RpbGUgIlwkdG1tJGkiDQo+ID4gKyAgICB9DQo+ID4gK30NCj4gPiArDQo+ID4g Kw0KPiANCj4gPiArZ2RiX3Rlc3QgImNvbnRpbnVlIiBcDQo+ID4gKyAgICAiLipcXFxbSW5mZXJp b3IgJGRlY2ltYWwgXFxcKHByb2Nlc3MgJGRlY2ltYWxcXFwpIGV4aXRlZCBub3JtYWxseVxcXSIN Cj4gDQo+IGdkYl9jb250aW51ZV90b19lbmQNCg0KVGhpcyBvbmUgd291bGQgYmUgYSBnb29kIGFu ZCBvYnZpb3VzIHN1Z2dlc3Rpb24uIEJ1dCBmb3IgbWUgdGhpcw0KbWFrZXMgdGhlIHRlc3QgZmFp bCB3aXRoIHRoZSBuYXRpdmUtZ2Ric2VydmVyIGJvYXJkLg0KDQooZ2RiKSBQQVNTOiBnZGIuYXJj aC9hbWQ2NC1hbXguZXhwOiBzZXQgdGlsZWNmZzogcHJpbnQgJHRpbGVjZmcNCmNvbnRpbnVlXk0N CkNvbnRpbnVpbmcuXk0NClJlbW90ZSBjb25uZWN0aW9uIGNsb3NlZF5NDQooZ2RiKSBGQUlMOiBn ZGIuYXJjaC9hbWQ2NC1hbXguZXhwOiBjb250aW51ZSB1bnRpbCBleGl0DQoNClRoaXMgc2VlbXMg bGlrZSBhIGJ1ZyB3aXRoIGdkYl9jb250aW51ZV90b19lbmQuDQpJIGxvb2tlZCBhdCB0aGUgZnVu Y3Rpb24gYW5kIGNvdWxkbid0IHF1aWNrbHkgZmlndXJlIG91dCBob3cgdG8gYmVzdA0KYWRkcmVz cyB0aGlzLg0KDQo+ID4gZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAgYi9n ZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwDQo+ID4gaW5kZXggNDdjYjJiMjM2NzYuLjk3NjY0MTkx MjQ0IDEwMDY0NA0KPiA+IC0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHANCj4gPiArKysg Yi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwDQo+ID4gQEAgLTM0MjksNiArMzQyOSw3MyBAQCBn ZGJfY2FjaGluZ19wcm9jIHNraXBfdHN4X3Rlc3RzIHsNCj4gPiAgICAgIHJldHVybiAkc2tpcF90 c3hfdGVzdHMNCj4gPiAgfQ0KPiA+DQo+ID4gKyMgUnVuIGEgdGVzdCBvbiB0aGUgdGFyZ2V0IHRv IHNlZSBpZiBpdCBzdXBwb3J0cyBBTVguICBSZXR1cm4gMCBpZiBzbywNCj4gPiArIyAxIGlmIGl0 IGRvZXMgbm90LiAgQmFzZWQgb24gJ2NoZWNrX3ZteF9od19hdmFpbGFibGUnIGZyb20gdGhlIEdD Qw0KPiB0ZXN0c3VpdGUuDQo+ID4gKw0KPiA+ICtnZGJfY2FjaGluZ19wcm9jIHNraXBfYW14X3Rl c3RzIHsNCj4gPiArICAgIGdsb2JhbCBzcmNkaXIgc3ViZGlyIGdkYl9wcm9tcHQgaW5mZXJpb3Jf ZXhpdGVkX3JlDQo+ID4gKw0KPiA+ICsgICAgc2V0IG1lICJza2lwX2FteF90ZXN0cyINCj4gPiAr ICAgIGlmIHsgIVtpc3RhcmdldCAieDg2XzY0LSotKiJdIH0gew0KPiA+ICsJdmVyYm9zZSAiJG1l OiAgdGFyZ2V0IGRvZXMgbm90IHN1cHBvcnQgQU1YLCByZXR1cm5pbmcgMSIgMg0KPiANCj4gU3Vw cmlvdXMgZG91YmxlIHNwYWNlIGFmdGVyICJtZToiLg0KDQpUaGlzIGlzbid0IHNwdXJpb3VzLCBi dXQgdGhlIHN0eWxlIG9mIGFsbCB0aGVzZSBza2lwX2ZlYXR1cmVfdGVzdHMgZnVuY3Rpb25zLg0K Tm90IHRoYXQgSSBsaWtlIHRoZSBzdHlsZSwgYnV0IEkgd291bGQgcHJlZmVyIHRvIGtlZXAgaXQg Y29uc2lzdGVudC4NCg0KVGhhbmtzLA0KRmVsaXgNCkludGVsIERldXRzY2hsYW5kIEdtYkgKUmVn aXN0ZXJlZCBBZGRyZXNzOiBBbSBDYW1wZW9uIDEwLCA4NTU3OSBOZXViaWJlcmcsIEdlcm1hbnkK VGVsOiArNDkgODkgOTkgODg1My0wLCB3d3cuaW50ZWwuZGUgPGh0dHA6Ly93d3cuaW50ZWwuZGU+ Ck1hbmFnaW5nIERpcmVjdG9yczogQ2hyaXN0aW4gRWlzZW5zY2htaWQsIFNoYXJvbiBIZWNrLCBU aWZmYW55IERvb24gU2lsdmEgIApDaGFpcnBlcnNvbiBvZiB0aGUgU3VwZXJ2aXNvcnkgQm9hcmQ6 IE5pY29sZSBMYXUKUmVnaXN0ZXJlZCBPZmZpY2U6IE11bmljaApDb21tZXJjaWFsIFJlZ2lzdGVy OiBBbXRzZ2VyaWNodCBNdWVuY2hlbiBIUkIgMTg2OTI4Cg==