Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rhXhX-00C1yl-5K for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Mar 2024 16:31:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rhXhV-000iva-NE for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Mar 2024 16:31:34 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rhXhU-000is1-GI for pgsql-hackers@lists.postgresql.org; Tue, 05 Mar 2024 16:31:33 +0000 Received: from mgamail.intel.com ([198.175.65.13]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rhXhP-002zlA-HC for pgsql-hackers@lists.postgresql.org; Tue, 05 Mar 2024 16:31:31 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1709656288; x=1741192288; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=YWiM5aEbzy75CeC1KlrEjyALtbBnCAvHfBHSV59u9/0=; b=Xb7hb0/NbcAs3AWguidC0hyM3OU5qJwML22VGKEHTvMWQVuMZjibbfy7 9FV+KPVlpH6+yEgRboxjKWcqCgDnHH2gcoKfz8zKHhjH8wwRZ6TA7QXc4 48i/3GVWXAE/qnhNIIywnlYqR85n5tOx0G2a+0fDzM4Fy3pcHstFrSRCx as8iYG9L1rfxOCXhDYG7q8iOjQKq9CwEIKIVfGsJF2tndualzYedZk7tL ADV6LeXa29q45O26XD9qsEWvdbdR5It0DDAc1Dnjk9bWJUOEUw/KrYntm h3dN+XI28VtwDDO+533xDojXy+KXSCeZNoUkIaBcJh/OMqYjPMdfGsp/J Q==; X-IronPort-AV: E=McAfee;i="6600,9927,11003"; a="15359640" X-IronPort-AV: E=Sophos;i="6.06,205,1705392000"; d="scan'208";a="15359640" Received: from fmviesa009.fm.intel.com ([10.60.135.149]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Mar 2024 08:31:26 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,205,1705392000"; d="scan'208";a="9332021" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmviesa009.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 05 Mar 2024 08:31:26 -0800 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 5 Mar 2024 08:31:20 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 5 Mar 2024 08:31:19 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Tue, 5 Mar 2024 08:31:19 -0800 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.40) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Tue, 5 Mar 2024 08:31:18 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l6YaPIJHU2kuXGzmRMjskL8bUwN7dgtuTJUJxcwvOIA6TXpxI9qqUNaYfsYv5eEQAUsFKiHepuBHlSI0Q7Ik07LQwd9ZNVbDrb+hh7wK9FvmMFkofyKJp28hnweTQVn5OuMh4ceXJTFHBzC8bdI3EyzfxFKd1q+F318QIoHbLFTHKNW1hBXRRpjC2sr0tIevg3s7/Y5wjtgVFuobfALUHYZAVIvgccWO/HS1Ok61l+ndXOFArIxIQU46YtNEeBLaQKrlrfwPSg7MBhYk0Ax5b+YQrTRxs+iPe/NbnXI+n2FISFckYR8e4M9Z186CXkqrFXWVXN4mLe0Ua2LlScZJiw== 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=2nKjcDQoDAP+lvWqxSMIoDWp8Hy6U7cqOWujKQp6uJE=; b=Otoe8zvBD+exT+SA3SvuLv4FdarbSP8co9vw8iQJo2VPy/5WnIDC+x7dVh5f5OAfpmicRmaD8Km3diVTg7bvwYCuYFIqDvY4ylVHGxTKC9xmopaCJve2FEUaLXPAX4fEcOzz/eos4+zGeoHXsKkwtpixv92YCmsgvl0PwdjFN0pnhBQxzDKlAFIV8ahbUcpWQKBQa2xNlb+1qfDTshbI/jD7tme9vYimd6j+LkLGe+1vKmx6ecIukjkOWXy8l4OfyqBEuTCzIS1NM37o5PDdHCBNAC0uDy1pw36OcqN8s17YLPO+fUExTMbO8kpnoQQJK96oC+QQx39u2MvG25UwZg== 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 BL1PR11MB5304.namprd11.prod.outlook.com (2603:10b6:208:316::20) by DS7PR11MB7857.namprd11.prod.outlook.com (2603:10b6:8:da::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7339.22; Tue, 5 Mar 2024 16:31:15 +0000 Received: from BL1PR11MB5304.namprd11.prod.outlook.com ([fe80::c936:ecdc:757e:1a4b]) by BL1PR11MB5304.namprd11.prod.outlook.com ([fe80::c936:ecdc:757e:1a4b%5]) with mapi id 15.20.7362.019; Tue, 5 Mar 2024 16:31:15 +0000 From: "Amonson, Paul D" To: Nathan Bossart CC: Andres Freund , Alvaro Herrera , "Shankaran, Akash" , Noah Misch , Tom Lane , "Matthias van de Meent" , "pgsql-hackers@lists.postgresql.org" Subject: RE: Popcount optimization using AVX512 Thread-Topic: Popcount optimization using AVX512 Thread-Index: AdoNliAXaie8RHrzTICrAiLVKKiYCgAsQKyAALaJTAAAAQ7nAAAAxSWAAAGNHgAAA/mZgAAeFdGAAZKQbBAAAw6egA3NuLcAAAvVM4ACbQuxsAAhlXkAAHPWMbAAAkOrAACYCUjgAAMc3wABvefW4AD8TV6wADf+AoAAmWkVgACOpocAAAl+RwAAJXNxYA== Date: Tue, 5 Mar 2024 16:31:15 +0000 Message-ID: References: <202402071013.reqe3bdnjjuj@alvherre.pgsql> <20240209183450.snllkk7erharc73y@awork3.anarazel.de> <20240212203714.u4p7yeu7isuemmze@awork3.anarazel.de> <20240301214457.GA3024365@nathanxps13> <20240304222118.GB3367383@nathanxps13> In-Reply-To: <20240304222118.GB3367383@nathanxps13> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BL1PR11MB5304:EE_|DS7PR11MB7857:EE_ x-ms-office365-filtering-correlation-id: 7e23c598-3a9a-4afb-323a-08dc3d31ad8d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: PXRHWOzm1nvbst95APm3Re9OriOYr6R4hf52mWmEqIo557S+8OWMITdmjyvg28qsjG3xCJv51Q7m4Q6Z8xJ1UkzSimhKxfdNxejtorN3y+4hBXAT89qb4yrArdGvPiQbYnvotTgu6Y05ZCotpmvLes0GO2MFXEFZnZZyDe3z9J5bY9O3Lx+gu3iarKhlL08s1P8N4Pbig40nNWCjWvymaJlkZxKRvhkJ7H4hwjZ2jTU1eXaXnmPgsPKANW+/6hS+VHWdu2S6rG2Gq0w9I6wvl0z4O3y4CiB6s6ipyZuuBCLcOlBEbUq25mSnoVIzT1MOV/npLJHCpylaMG2Z4yHuIq389kcKnusRrLIT8I+TIbusumi38hgReghG7dUbrqQSSIn2m3vrafpW9DLPN9bUGUnWiuLmPbXRfyGTrcWfuUu4QxELzE625Kd9gMubHU2wlgKtUi7wqanG12lH3dkEoL9E3OWR7mW2oWb/b1fwNrkn6I9VHPPyeRWUvmDz2kl0g/4c6cFC3aXOMtjJGoVvwkCuD6l5t6fgIhBJqcljeq9yJ6sE7A6E4moHtnxGNNndxOM7r8VfgFXdDJ+rJ3mxffNAKBp8yhTfJyyuHIcKQdz7owliPBkrw9RtNLTsF35aoxaRV11wEpS0Ngw+Z4IVSSg4F2gVBltuIcbh0jUuJNU= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR11MB5304.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376005)(38070700009);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZnArVUtVRVA0dkw5QWpmcGU4ZjdERjk4MW9TV3ZZZFNySzA4MUQ4VVVDMVl3?= =?utf-8?B?b3RkcTlvZ1owNTNZRituWmZVbzVCd1NyZ3Mrbm9tbmFOcmN6ckRmV012RHJG?= =?utf-8?B?S0k3Wmh6L3Izdzc4OE0xVGVubmROQmgyaUEwMWtSY2ZCVjBSQzBQSmlVbkFt?= =?utf-8?B?a1g3bldqSHRkVm9YMmhMZGJRZDhlYTFscmllSjJ2V1F0cWR5a1RJR09ORDJk?= =?utf-8?B?S21tcVRVdHc4bDZEVFNXTnE4UjhWcFJqb1RZMWpCVEE4UGljQUVEWDdnOVo1?= =?utf-8?B?UDRsaUlPNTVyZlpTZXNJTStkUHhzYmJDQVhXdG05ZkVyc3Y3STd3OEVvYTRW?= =?utf-8?B?ODRhbFROdklwR01UY2lJTTBGb1AvRjZMb2ttVzE3UVcwT2c4aURoNWRDd2hk?= =?utf-8?B?dWdNdHhjOWdJZy9sVlM5N1kwTEgzMmNkbC9NSTRoWDR6bXE0b2ZPR2NWTXBS?= =?utf-8?B?dEZRZXhKRmxOendxT0lLTTRXc2FGRzUvWW1aN3ZDSkZSdkpFelltTnhHQXQx?= =?utf-8?B?MjZBeHp2bHp4L0RJVm1XZXF2RHRVNjFLNFZBanN2THNPbXRCTWdGaVJOamk0?= =?utf-8?B?NTgvWXBZQWRRZ2dFdEJPNkFuRXdFRzM3dFFQbDA1L0VlMTI1SSt5Z2pvRzdC?= =?utf-8?B?Tk0yV291TWV3Sk8rc1pISVROekZ2ODJEaDhEYzE3RDIxemNoL3RXZXFQSjBR?= =?utf-8?B?bitZbHZXaHloVUtEZUZrc3hMYlc3VTVUK2tObkl1S2FiQ0ZtamE4NWJzYkZt?= =?utf-8?B?VThuMEl1VWtJb1NCRmwydEIzdVpKUnNzSXFrN2hHQXNKc3E4TXBtTi84V0Zu?= =?utf-8?B?TFZub1F6cHdYOWsyTU9ZYXVBZTV2SXFvazNJTVM2S2x3UVl3MHpoQm5mZTdB?= =?utf-8?B?c3JZa05yZ2hoZEY2RW5sZjBWM3ZnTmNKclloaVVlSTFmR1Ezd3JrZUtuYllR?= =?utf-8?B?ZjQ2THFFK3J0bS9WeU1hS29WYkdEdDZ5enZraVhkK2VYeVFqVTVhS00veGI3?= =?utf-8?B?M3lPTENPU010UHpYcXY3NStnVkJwb216WTFiVUJMYlVkMENyUGdoSHZyR2RD?= =?utf-8?B?VGd3WXdnRnNBOEdrYVcwL3habERHNkdsUjdHZGRDTU1EVTA1K3ltdHJaMis3?= =?utf-8?B?bzhGVHBHUG9WVlJoNW8zaDZ2MW0yZDkvUzgzQmtWKzVRZDcvRUo4bjcxNXlD?= =?utf-8?B?YzhQS01EWVhQTmdXNkdVaW0wVHZlSHpXOWU0S3FzQnVzakE1VmxSajBLQTkv?= =?utf-8?B?alRSLy9WVGtCZDZWKzQwekliOXVOSVc3ZDZMNFdQaGkyNlBOTXhQamZjNFd2?= =?utf-8?B?d3BFWFZ0VFFKdml4YzB2TkxaZWFZYzhtVmg5ZjUwTWJENUZ0ZXZBVVJ6d0Q5?= =?utf-8?B?MXdxclNHRkVrSktEY0hrWDVRQnY1QTM0MTVSQ21ZMUhWMWQ5c0U2OXI5RkIz?= =?utf-8?B?VmRnVzNic2hKTTdrMG8zSjZraVVnYTcxN3dHTVZOejBINUJWbzdHdlhEaVdE?= =?utf-8?B?TVp4dnRWV013R1Y1SjFDSWVxbnQ4bEVDL3ByL0kyNEZzOEp0NU5QK1JZMUtL?= =?utf-8?B?M0l5N0FmbVZwM0x5TG5NTk1Xdi9Wb3dLR2oweFhkRk5odWRhVFBMS1JiSklO?= =?utf-8?B?UE50dmcrNHYxSzJsdDk3NmtqYllRenV0czZHc0V4NHFpL0ZTVjZxVXUvYTBS?= =?utf-8?B?b3NhTUlzNUJvbi83dmp0cWN6SEhzWHdDMWMzelc3UG9VNHhPYmpWaFIwQ1ow?= =?utf-8?B?ZXg4UEorcFFueVNTcktIWCtGcDVsc0dWdVoxaWNySjV1Y2p2R1UvblpQWlFj?= =?utf-8?B?STlWenM3WXhiOVdNbll4K0lWR2UwL1hFZTBMUDdEQXE2VEZXdWJoc2tGTHBu?= =?utf-8?B?dTFaVksvUFZoV21xNHpMUGdyeEVxbGRRUjVaeWpMQnlUVFRPeFFuN1pHZUQw?= =?utf-8?B?ZjRwTlN4K2RycHBZV3B3K2JPcHNSdlR6cVJmVHFraGlRV3U5RGhSbTBDWFls?= =?utf-8?B?bEtKM0NKWHhsRndkQy80SWgzTHVEc0hyS0g5dEIwZldiU00xQ2IwV2MzV054?= =?utf-8?B?ME9Ick10NWN3WFZGOTJlYkZxVW9uNTBrOGVPL29zbUtSN0dkTnMwZXZpSzFm?= =?utf-8?Q?R2IA=3D?= Content-Type: multipart/mixed; boundary="_002_BL1PR11MB53047C28DDBA6A2E77B9420ADC222BL1PR11MB5304namp_" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL1PR11MB5304.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7e23c598-3a9a-4afb-323a-08dc3d31ad8d X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Mar 2024 16:31:15.3941 (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: ZhElDsQFNZ4KAFgAXHU6gT2IOZA+3sb0wumra99jsODIYYshJdvOizk2p0bIuQBIvF5ZfXGcrXP5lhLIMTu7UwnWIxcOyVIX3kQ+S2mn2hE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR11MB7857 X-OriginatorOrg: intel.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_BL1PR11MB53047C28DDBA6A2E77B9420ADC222BL1PR11MB5304namp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksDQoNCkkgYW0gbm90IHN1cmUgd2hhdCAidG9wLXBvc3QiIG1lYW5zIGJ1dCBJIGFtIG5vdCBk b2luZyBhbnl0aGluZyBkaWZmZXJlbnQgYnV0IHVzaW5nICJyZXBseSB0byBhbGwiIGluIE91dGxv b2suIFBsZWFzZSBlbmxpZ2h0ZW4gbWUuIPCfmIoNCg0KVGhpcyBpcyB0aGUgbmV3IHBhdGNoIHdp dGggdGhlIGhhbmQgZWRpdCB0byByZW1vdmUgdGhlIG9mZmVuZGluZyBsaW5lcyBmcm9tIHRoZSBw YXRjaCBmaWxlLiBJIGRpZCBhIGJhc2ljIHRlc3QgdG8gbWFrZSB0aGUgcGF0Y2ggd291bGQgYXBw bHkgYW5kIGJ1aWxkLiBJdCBzdWNjZWVkZWQuDQoNClRoYW5rcywNClBhdWwNCg0KLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IE5hdGhhbiBCb3NzYXJ0IDxuYXRoYW5kYm9zc2FydEBn bWFpbC5jb20+IA0KU2VudDogTW9uZGF5LCBNYXJjaCA0LCAyMDI0IDI6MjEgUE0NClRvOiBBbW9u c29uLCBQYXVsIEQgPHBhdWwuZC5hbW9uc29uQGludGVsLmNvbT4NCkNjOiBBbmRyZXMgRnJldW5k IDxhbmRyZXNAYW5hcmF6ZWwuZGU+OyBBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAYWx2aC5uby1p cC5vcmc+OyBTaGFua2FyYW4sIEFrYXNoIDxha2FzaC5zaGFua2FyYW5AaW50ZWwuY29tPjsgTm9h aCBNaXNjaCA8bm9haEBsZWFkYm9hdC5jb20+OyBUb20gTGFuZSA8dGdsQHNzcy5wZ2gucGEudXM+ OyBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0Z3Jlc0BnbWFpbC5jb20+OyBw Z3NxbC1oYWNrZXJzQGxpc3RzLnBvc3RncmVzcWwub3JnDQpTdWJqZWN0OiBSZTogUG9wY291bnQg b3B0aW1pemF0aW9uIHVzaW5nIEFWWDUxMg0KDQooUGxlYXNlIGRvbid0IHRvcC1wb3N0IG9uIHRo ZSBQb3N0Z3JlcyBsaXN0cy4pDQoNCk9uIE1vbiwgTWFyIDA0LCAyMDI0IGF0IDA5OjM5OjM2UE0g KzAwMDAsIEFtb25zb24sIFBhdWwgRCB3cm90ZToNCj4gRmlyc3QsIGFwb2xvZ2llcyBvbiB0aGUg cGF0Y2guIEZpbmQgcmUtYXR0YWNoZWQgdXBkYXRlZCB2ZXJzaW9uLg0KDQpUaGFua3MgZm9yIHRo ZSBuZXcgdmVyc2lvbiBvZiB0aGUgcGF0Y2guDQoNCj4+IC0jZGVmaW5lIExBUkdFX09GRl9UICgo KG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkNCj4+ICsjZGVmaW5lIExB UkdFX09GRl9UICgoKChvZmZfdCkgMSA8PCAzMSkgPDwgMzEpIC0gMSArICgoKG9mZl90KSAxIDw8 IA0KPj4gKzMxKSA8PCAzMSkpDQo+Pg0KPj4gSU1FIHRoaXMgbWVhbnMgdGhhdCB0aGUgYXV0b2Nv bmYgeW91IGFyZSB1c2luZyBoYXMgYmVlbiBwYXRjaGVkLiAgQSANCj4+IHF1aWNrIHNlYXJjaCBv biB0aGUgbWFpbGluZyBsaXN0cyBzZWVtcyB0byBpbmRpY2F0ZSB0aGF0IGl0IG1pZ2h0IGJlIA0K Pj4gc3BlY2lmaWMgdG8gRGViaWFuIFsxXS4NCj4gIA0KPiBJIGFtIG5vdCBzdXJlIHdoYXQgdGhl IGFzayBpcyBoZXJlPyAgSSBtYWRlIGNoYW5nZXMgdG8gdGhlIA0KPiBjb25maWd1cmUuYWMgYW5k IHJhbiBhdXRvY29uZjIuNjkgdG8gZ2V0IGJ1aWxkcyB0byBzdWNjZWVkLiBEbyB5b3UgDQo+IGhh dmUgYSBzZXBhcmF0ZSBmZWVkYmFjayBoZXJlPw0KDQpUaGVzZSBMQVJHRV9PRkZfVCBjaGFuZ2Vz IGFyZSB1bnJlbGF0ZWQgdG8gdGhlIHBhdGNoIGF0IGhhbmQgYW5kIHNob3VsZCBiZSByZW1vdmVk LiAgVGhpcyBsaWtlbHkgbWVhbnMgdGhhdCB5b3UgYXJlIHVzaW5nIGEgcGF0Y2hlZCBhdXRvY29u ZiB0aGF0IGlzIG1ha2luZyB0aGVzZSBleHRyYSBjaGFuZ2VzLg0KIA0KPiBBcyBmb3IgdGhlIHJl ZmFjdG9yaW5nLCB0aGlzIHdhcyBkb25lIHRvIHNhdGlzZnkgcHJldmlvdXMgcmV2aWV3IA0KPiBm ZWVkYmFjayBhYm91dCBhcHBseWluZyB0aGUgQVZYNTEyIENGTEFHUyB0byB0aGUgZW50aXJlIHBn X2JpdHV0aWxzLmMgDQo+IGZpbGUuIE1haW5seSB0byBhdm9pZCBzZWdmYXVsdCBkdWUgdG8gdGhl IEFWWDUxMiBmbGFncy4gSWYgaXRzIG9rLCBJIA0KPiB3b3VsZCBwcmVmZXIgdG8gbWFrZSBhIHNp bmdsZSBjb21taXQgYXMgdGhlIGNoYW5nZSBpcyBwcmV0dHkgc21hbGwgYW5kIHN0cmFpZ2h0IGZv cndhcmQuDQoNCk9rYXkuICBUaGUgb25seSByZWFzb24gSSBzdWdnZXN0IHRoaXMgaXMgdG8gZWFz ZSByZXZpZXcuICBGb3IgZXhhbXBsZSwgaWYgdGhlcmUgaXMgc29tZSByZXF1aXJlZCByZWZhY3Rv cmluZyB0aGF0IGRvZXNuJ3QgaW52b2x2ZSBhbnkgZnVuY3Rpb25hbGl0eSBjaGFuZ2VzLCBpdCBj YW4gYmUgYWR2YW50YWdlb3VzIHRvIGdldCB0aGF0IHBhcnQgcmV2aWV3ZWQgYW5kIGNvbW1pdHRl ZCBmaXJzdCBzbyB0aGF0IHJldmlld2VycyBjYW4gYmV0dGVyIGZvY3VzIG9uIHRoZSBjb2RlIGZv ciB0aGUgbmV3IGZlYXR1cmUuDQpCdXQsIG9mIGNvdXJzZSwgdGhhdCBpc24ndCBuZWNlc3Nhcnkg YW5kL29yIGlzbid0IHBvc3NpYmxlIGluIGFsbCBjYXNlcy4NCg0KPiBJIGFtIG5vdCBzdXJlIEkg dW5kZXJzdGFuZCB0aGUgY29tbWVudCBhYm91dCB0aGUgU0laRV9WT0lEX1AgY2hlY2tzLg0KPiBB cmVuJ3QgdGhleSBuZWNlc3NhcnkgdG8gY2hvb3NlIHdoaWNoIGZ1bmN0aW9ucyB0byBjYWxsIGJh c2VkIG9uIDMyIG9yIA0KPiA2NCBiaXQgYXJjaGl0ZWN0dXJlcz8NCg0KWWVzLiAgTXkgY29tbWVu dCB3YXMgdGhhdCB0aGUgcGF0Y2ggYXBwZWFyZWQgdG8gbWFrZSB1bm5lY2Vzc2FyeSBjaGFuZ2Vz IHRvIHRoaXMgY29kZS4gIFBlcmhhcHMgSSBhbSBtaXN1bmRlcnN0YW5kaW5nIHNvbWV0aGluZyBo ZXJlLg0KDQo+IFdvdWxkIHRoaXMgY2hhbmdlIHF1YWxpZnkgZm9yIFdvcmtmbG93IEEgYXMgZGVz Y3JpYmVkIGluIFswXSBhbmQgY2FuIA0KPiBiZSBwaWNrZWQgdXAgYnkgYSBjb21taXR0ZXIsIGdp dmVuIGl0IGhhcyBiZWVuIHJldmlld2VkIGJ5IG11bHRpcGxlIA0KPiBjb21taXR0ZXJzIHNvIGZh cj8gVGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UgaXMgcHJldHR5IGNvbnRhaW5lZCBhcyB3ZWxsLg0K DQpJIHRoaW5rIHNvLiAgSSB3b3VsZCBzdGlsbCBlbmNvdXJhZ2UgeW91IHRvIGNyZWF0ZSBhbiBl bnRyeSBmb3IgdGhpcyBzbyB0aGF0IGl0IGlzIGF1dG9tYXRpY2FsbHkgdGVzdGVkIHZpYSBjZmJv dCBbMF0uDQoNClswXSBodHRwOi8vY29tbWl0ZmVzdC5jcHV0dWJlLm9yZy8NCg0KLS0NCk5hdGhh biBCb3NzYXJ0DQpBbWF6b24gV2ViIFNlcnZpY2VzOiBodHRwczovL2F3cy5hbWF6b24uY29tDQo= --_002_BL1PR11MB53047C28DDBA6A2E77B9420ADC222BL1PR11MB5304namp_ Content-Type: application/octet-stream; name="v6-0001-Add-support-for-AVX512-implemented-POPCNT.patch" Content-Description: v6-0001-Add-support-for-AVX512-implemented-POPCNT.patch Content-Disposition: attachment; filename="v6-0001-Add-support-for-AVX512-implemented-POPCNT.patch"; size=30007; creation-date="Tue, 05 Mar 2024 16:17:33 GMT"; modification-date="Tue, 05 Mar 2024 16:31:15 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbmZpZy9jLWNvbXBpbGVyLm00IGIvY29uZmlnL2MtY29tcGlsZXIubTQK aW5kZXggNWRiMDJiMmFiNy4uYTVhMzI0NjE5OSAxMDA2NDQKLS0tIGEvY29uZmlnL2MtY29tcGls ZXIubTQKKysrIGIvY29uZmlnL2MtY29tcGlsZXIubTQKQEAgLTY5NCwzICs2OTQsMzYgQEAgaWYg dGVzdCB4IiRBY19jYWNoZXZhciIgPSB4InllcyI7IHRoZW4KIGZpCiB1bmRlZmluZShbQWNfY2Fj aGV2YXJdKWRubAogXSkjIFBHQUNfTE9PTkdBUkNIX0NSQzMyQ19JTlRSSU5TSUNTCisKKyMgUEdB Q19BVlg1MTJfUE9QQ05UX0lOVFJJTlNJQ1MKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisjIENoZWNrIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyB0aGUgeDg2XzY0IEFWWDUxMiBQT1BD TlQgaW5zdHJ1Y3Rpb25zIHVzaW5nCisjIGludHJpbnNpY3MgdXNlZCBpbiBDUFVJRCBmZWF0dXJl cyBBVlg1MTJGIGFuZCBBVlg1MTJWUE9QQ05URFEuCisjCisjIE9wdGlvbmFsIGNvbXBpbGVyIGZs YWdzIGNhbiBiZSBwYXNzZWQgYXMgYXJndW1lbnQgKGUuZy4gLW1hdng1MTJ2cG9wY250ZHEpLgor IyBJZiB0aGUgaW50cmluc2ljcyBhcmUgc3VwcG9ydGVkIHRoZW4gcGdhY19hdng1MTJfcG9wY250 X2ludHJpbnNpY3MgYW5kCisjIENGTEFHU19BVlg1MTJfUE9QQ05UIGFyZSBzZXQuCitBQ19ERUZV TihbUEdBQ19BVlg1MTJfUE9QQ05UX0lOVFJJTlNJQ1NdLAorW2RlZmluZShbQWNfY2FjaGV2YXJd LCBbQVNfVFJfU0goW3BnYWNfY3ZfYXZ4NTEyX3BvcGNudF9pbnRyaW5zaWNzXyQxXSldKWRubAor QUNfQ0FDSEVfQ0hFQ0soW2ZvciBfbW01MTJfcG9wY250X2VwaTY0IHdpdGggQ0ZMQUdTPSQxXSwg W0FjX2NhY2hldmFyXSwKK1twZ2FjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKK0NGTEFHUz0iJHBnYWNf c2F2ZV9DRkxBR1MgJDEiCitBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFsjaW5jbHVk ZSA8aW1taW50cmluLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+XSwKKyAgW19fbTUxMmkgdG1wIF9f YXR0cmlidXRlX18oKGFsaWduZWQoNjQpKSk7CisgICBfX201MTJpIGlucHV0ID0gX21tNTEyX3Nl dHplcm9fc2k1MTIoKTsKKyAgIF9fbTUxMmkgb3V0cHV0ID0gX21tNTEyX3BvcGNudF9lcGk2NChp bnB1dCk7CisgICB1aW50NjRfdCBjbnQgPSA5OTk7CisgICBfbW01MTJfc3RvcmVfc2k1MTIoJnRt cCwgb3V0cHV0KTsKKyAgIGNudCA9IF9tbTUxMl9yZWR1Y2VfYWRkX2VwaTY0KHRtcCk7CisgICAv KiByZXR1cm4gY29tcHV0ZWQgdmFsdWUsIHRvIHByZXZlbnQgdGhlIGFib3ZlIGJlaW5nIG9wdGlt aXplZCBhd2F5ICovCisgICByZXR1cm4gY250ID09IDA7XSldLAorICBbQWNfY2FjaGV2YXI9eWVz XSwKKyAgW0FjX2NhY2hldmFyPW5vXSkKK0NGTEFHUz0iJHBnYWNfc2F2ZV9DRkxBR1MiXSkKK2lm IHRlc3QgeCIkQWNfY2FjaGV2YXIiID0geCJ5ZXMiOyB0aGVuCisgIENGTEFHU19BVlg1MTJfUE9Q Q05UPSIkMSIKKyAgcGdhY19hdng1MTJfcG9wY250X2ludHJpbnNpY3M9eWVzCitmaQordW5kZWZp bmUoW0FjX2NhY2hldmFyXSlkbmwKK10pIyBQR0FDX0FWWDUxMl9QT1BDTlRfSU5UUklOU0lDUwpk aWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDZiODdlNWM5YTguLjAyNTJk YWI2ZDUgMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTY0Nyw2ICs2 NDcsNyBAQCBNU0dGTVRfRkxBR1MKIE1TR0ZNVAogUEdfQ1JDMzJDX09CSlMKIENGTEFHU19DUkMK K0NGTEFHU19BVlg1MTJfUE9QQ05UCiBMSUJPQkpTCiBPUEVOU1NMCiBaU1RECkBAIC0xNzcwOCw2 ICsxNzcwOSw0MSBAQCAkYXNfZWNobyAiI2RlZmluZSBIQVZFX19HRVRfQ1BVSUQgMSIgPj5jb25m ZGVmcy5oCiAKIGZpCiAKKyMgQ2hlY2sgZm9yIHg4NiBjcHVpZF9jb3VudCBpbnN0cnVjdGlvbgor eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX19n ZXRfY3B1aWRfY291bnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9fZ2V0X2NwdWlk X2NvdW50Li4uICIgPiY2OyB9CitpZiAke3BnYWNfY3ZfX2dldF9jcHVpZF9jb3VudCs6fSBmYWxz ZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25m ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KKyNpbmNsdWRlIDxjcHVpZC5oPgoraW50CittYWluICgpCit7Cit1bnNpZ25lZCBpbnQgZXh4 WzRdID0gezAsIDAsIDAsIDB9OworICBfX2dldF9jcHVpZF9jb3VudCg3LCAwLCAmZXh4WzBdLCAm ZXh4WzFdLCAmZXh4WzJdLCAmZXh4WzNdKTsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9G CitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIHBnYWNfY3ZfX2dldF9j cHVpZF9jb3VudD0ieWVzIgorZWxzZQorICBwZ2FjX2N2X19nZXRfY3B1aWRfY291bnQ9Im5vIgor ZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNv bmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRwZ2FjX2N2X19nZXRfY3B1aWRfY291bnQi ID4mNQorJGFzX2VjaG8gIiRwZ2FjX2N2X19nZXRfY3B1aWRfY291bnQiID4mNjsgfQoraWYgdGVz dCB4IiRwZ2FjX2N2X19nZXRfY3B1aWRfY291bnQiID0geCJ5ZXMiOyB0aGVuCisKKyRhc19lY2hv ICIjZGVmaW5lIEhBVkVfX0dFVF9DUFVJRF9DT1VOVCAxIiA+PmNvbmZkZWZzLmgKKworZmkKKwog eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX19j cHVpZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgX19jcHVpZC4uLiAiID4mNjsgfQog aWYgJHtwZ2FjX2N2X19jcHVpZCs6fSBmYWxzZTsgdGhlbiA6CkBAIC0xNzc0Miw2ICsxNzc3OCwx NjQgQEAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9fQ1BVSUQgMSIgPj5jb25mZGVmcy5oCiAKIGZp CiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y IF9fY3B1aWRleCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgX19jcHVpZGV4Li4uICIg PiY2OyB9CitpZiAke3BnYWNfY3ZfX2NwdWlkZXgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNo b19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j b25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8aW50cmlu Lmg+CitpbnQKK21haW4gKCkKK3sKK3Vuc2lnbmVkIGludCBleHhbNF0gPSB7MCwgMCwgMCwgMH07 CisgIF9fZ2V0X2NwdWlkZXgoZXh4WzBdLCA3LCAwKTsKKworICA7CisgIHJldHVybiAwOworfQor X0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIHBnYWNfY3Zf X2NwdWlkZXg9InllcyIKK2Vsc2UKKyAgcGdhY19jdl9fY3B1aWRleD0ibm8iCitmaQorcm0gLWYg Y29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNf ZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogJHBnYWNfY3ZfX2NwdWlkZXgiID4mNQorJGFzX2VjaG8gIiRw Z2FjX2N2X19jcHVpZGV4IiA+JjY7IH0KK2lmIHRlc3QgeCIkcGdhY19jdl9fY3B1aWRleCIgPSB4 InllcyI7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9fQ1BVSURFWCAxIiA+PmNvbmZk ZWZzLmgKKworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj aGVja2luZyBmb3IgX19pbW1pbnRyaW4iID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9f aW1taW50cmluLi4uICIgPiY2OyB9CitpZiAke3BnYWNfY3ZfX2ltbWludHJpbis6fSBmYWxzZTsg dGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVm cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8K KyNpbmNsdWRlIDxpbW1pbnRyaW4uaD4KK2ludAorbWFpbiAoKQoreworLyogRG9uJ3QgZXhjbHVk ZSBjb2RlIHNvIGFkZGVkIHJldHVybi4gKi8KKyAgICByZXR1cm4gMTcwMTsKKworICA7CisgIHJl dHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6 CisgIHBnYWNfY3ZfX2ltbWludHJpbj0ieWVzIgorZWxzZQorICBwZ2FjX2N2X19pbW1pbnRyaW49 Im5vIgorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAor ICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRwZ2FjX2N2X19pbW1pbnRyaW4i ID4mNQorJGFzX2VjaG8gIiRwZ2FjX2N2X19pbW1pbnRyaW4iID4mNjsgfQoraWYgdGVzdCB4IiRw Z2FjX2N2X19pbW1pbnRyaW4iID0geCJ5ZXMiOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhB VkVfX0lNTUlOVFJJTiAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworIyBDaGVjayBmb3IgSW50ZWwg QVZYNTEyIGludHJpbnNpY3MgdG8gZG8gUE9QQ05UIGNhbGN1bGF0aW9ucy4KKyMKK3sgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9tbTUxMl9wb3Bj bnRfZXBpNjQgd2l0aCBDRkxBR1M9IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBfbW01 MTJfcG9wY250X2VwaTY0IHdpdGggQ0ZMQUdTPS4uLiAiID4mNjsgfQoraWYgJHtwZ2FjX2N2X2F2 eDUxMl9wb3BjbnRfaW50cmluc2ljc18rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIo Y2FjaGVkKSAiID4mNgorZWxzZQorICBwZ2FjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKK0NGTEFHUz0i JHBnYWNfc2F2ZV9DRkxBR1MgIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu JGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGltbWludHJpbi5oPgor I2luY2x1ZGUgPHN0ZGludC5oPgoraW50CittYWluICgpCit7CitfX201MTJpIHRtcCBfX2F0dHJp YnV0ZV9fKChhbGlnbmVkKDY0KSkpOworICAgX19tNTEyaSBpbnB1dCA9IF9tbTUxMl9zZXR6ZXJv X3NpNTEyKCk7CisgICBfX201MTJpIG91dHB1dCA9IF9tbTUxMl9wb3BjbnRfZXBpNjQoaW5wdXQp OworICAgdWludDY0X3QgY250ID0gOTk5OworICAgX21tNTEyX3N0b3JlX3NpNTEyKCZ0bXAsIG91 dHB1dCk7CisgICBjbnQgPSBfbW01MTJfcmVkdWNlX2FkZF9lcGk2NCh0bXApOworICAgLyogcmV0 dXJuIGNvbXB1dGVkIHZhbHVlLCB0byBwcmV2ZW50IHRoZSBhYm92ZSBiZWluZyBvcHRpbWl6ZWQg YXdheSAqLworICAgcmV0dXJuIGNudCA9PSAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9G CitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIHBnYWNfY3ZfYXZ4NTEy X3BvcGNudF9pbnRyaW5zaWNzXz15ZXMKK2Vsc2UKKyAgcGdhY19jdl9hdng1MTJfcG9wY250X2lu dHJpbnNpY3NfPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i amV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0NGTEFHUz0i JHBnYWNfc2F2ZV9DRkxBR1MiCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6ICRwZ2FjX2N2X2F2eDUxMl9wb3BjbnRfaW50cmluc2ljc18iID4mNQor JGFzX2VjaG8gIiRwZ2FjX2N2X2F2eDUxMl9wb3BjbnRfaW50cmluc2ljc18iID4mNjsgfQoraWYg dGVzdCB4IiRwZ2FjX2N2X2F2eDUxMl9wb3BjbnRfaW50cmluc2ljc18iID0geCJ5ZXMiOyB0aGVu CisgIENGTEFHU19BVlg1MTJfUE9QQ05UPSIiCisgIHBnYWNfYXZ4NTEyX3BvcGNudF9pbnRyaW5z aWNzPXllcworZmkKKworaWYgdGVzdCB4IiRwZ2FjX2F2eDUxMl9wb3BjbnRfaW50cmluc2ljcyIg IT0geCJ5ZXMiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgZm9yIF9tbTUxMl9wb3BjbnRfZXBpNjQgd2l0aCBDRkxBR1M9LW1hdng1MTJ2 cG9wY250ZHEgLW1hdng1MTJmIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBfbW01MTJf cG9wY250X2VwaTY0IHdpdGggQ0ZMQUdTPS1tYXZ4NTEydnBvcGNudGRxIC1tYXZ4NTEyZi4uLiAi ID4mNjsgfQoraWYgJHtwZ2FjX2N2X2F2eDUxMl9wb3BjbnRfaW50cmluc2ljc19fbWF2eDUxMnZw b3BjbnRkcV9fbWF2eDUxMmYrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVk KSAiID4mNgorZWxzZQorICBwZ2FjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKK0NGTEFHUz0iJHBnYWNf c2F2ZV9DRkxBR1MgLW1hdng1MTJ2cG9wY250ZHEgLW1hdng1MTJmIgorY2F0IGNvbmZkZWZzLmgg LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2lu Y2x1ZGUgPGltbWludHJpbi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgoraW50CittYWluICgpCit7 CitfX201MTJpIHRtcCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDY0KSkpOworICAgX19tNTEyaSBp bnB1dCA9IF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCk7CisgICBfX201MTJpIG91dHB1dCA9IF9tbTUx Ml9wb3BjbnRfZXBpNjQoaW5wdXQpOworICAgdWludDY0X3QgY250ID0gOTk5OworICAgX21tNTEy X3N0b3JlX3NpNTEyKCZ0bXAsIG91dHB1dCk7CisgICBjbnQgPSBfbW01MTJfcmVkdWNlX2FkZF9l cGk2NCh0bXApOworICAgLyogcmV0dXJuIGNvbXB1dGVkIHZhbHVlLCB0byBwcmV2ZW50IHRoZSBh Ym92ZSBiZWluZyBvcHRpbWl6ZWQgYXdheSAqLworICAgcmV0dXJuIGNudCA9PSAwOworICA7Cisg IHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhl biA6CisgIHBnYWNfY3ZfYXZ4NTEyX3BvcGNudF9pbnRyaW5zaWNzX19tYXZ4NTEydnBvcGNudGRx X19tYXZ4NTEyZj15ZXMKK2Vsc2UKKyAgcGdhY19jdl9hdng1MTJfcG9wY250X2ludHJpbnNpY3Nf X21hdng1MTJ2cG9wY250ZHFfX21hdng1MTJmPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5l cnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0 LiRhY19leHQKK0NGTEFHUz0iJHBnYWNfc2F2ZV9DRkxBR1MiCitmaQoreyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRwZ2FjX2N2X2F2eDUxMl9wb3BjbnRf aW50cmluc2ljc19fbWF2eDUxMnZwb3BjbnRkcV9fbWF2eDUxMmYiID4mNQorJGFzX2VjaG8gIiRw Z2FjX2N2X2F2eDUxMl9wb3BjbnRfaW50cmluc2ljc19fbWF2eDUxMnZwb3BjbnRkcV9fbWF2eDUx MmYiID4mNjsgfQoraWYgdGVzdCB4IiRwZ2FjX2N2X2F2eDUxMl9wb3BjbnRfaW50cmluc2ljc19f bWF2eDUxMnZwb3BjbnRkcV9fbWF2eDUxMmYiID0geCJ5ZXMiOyB0aGVuCisgIENGTEFHU19BVlg1 MTJfUE9QQ05UPSItbWF2eDUxMnZwb3BjbnRkcSAtbWF2eDUxMmYiCisgIHBnYWNfYXZ4NTEyX3Bv cGNudF9pbnRyaW5zaWNzPXllcworZmkKKworZmkKKworCiAjIENoZWNrIGZvciBJbnRlbCBTU0Ug NC4yIGludHJpbnNpY3MgdG8gZG8gQ1JDIGNhbGN1bGF0aW9ucy4KICMKICMgRmlyc3QgY2hlY2sg aWYgdGhlIF9tbV9jcmMzMl91OCBhbmQgX21tX2NyYzMyX3U2NCBpbnRyaW5zaWNzIGNhbiBiZSB1 c2VkCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggNmU2NGVj ZTExZC4uOGZjZjYzNWIwOCAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3Vy ZS5hYwpAQCAtMjA2OCw2ICsyMDY4LDE4IEBAIGlmIHRlc3QgeCIkcGdhY19jdl9fZ2V0X2NwdWlk IiA9IHgieWVzIjsgdGhlbgogICBBQ19ERUZJTkUoSEFWRV9fR0VUX0NQVUlELCAxLCBbRGVmaW5l IHRvIDEgaWYgeW91IGhhdmUgX19nZXRfY3B1aWQuXSkKIGZpCiAKKyMgQ2hlY2sgZm9yIHg4NiBj cHVpZF9jb3VudCBpbnN0cnVjdGlvbgorQUNfQ0FDSEVfQ0hFQ0soW2ZvciBfX2dldF9jcHVpZF9j b3VudF0sIFtwZ2FjX2N2X19nZXRfY3B1aWRfY291bnRdLAorW0FDX0xJTktfSUZFTFNFKFtBQ19M QU5HX1BST0dSQU0oWyNpbmNsdWRlIDxjcHVpZC5oPl0sCisgIFtbdW5zaWduZWQgaW50IGV4eFs0 XSA9IHswLCAwLCAwLCAwfTsKKyAgX19nZXRfY3B1aWRfY291bnQoNywgMCwgJmV4eFswXSwgJmV4 eFsxXSwgJmV4eFsyXSwgJmV4eFszXSk7CisgIF1dKV0sCisgIFtwZ2FjX2N2X19nZXRfY3B1aWRf Y291bnQ9InllcyJdLAorICBbcGdhY19jdl9fZ2V0X2NwdWlkX2NvdW50PSJubyJdKV0pCitpZiB0 ZXN0IHgiJHBnYWNfY3ZfX2dldF9jcHVpZF9jb3VudCIgPSB4InllcyI7IHRoZW4KKyAgQUNfREVG SU5FKEhBVkVfX0dFVF9DUFVJRF9DT1VOVCwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIF9f Z2V0X2NwdWlkLl0pCitmaQorCiBBQ19DQUNIRV9DSEVDSyhbZm9yIF9fY3B1aWRdLCBbcGdhY19j dl9fY3B1aWRdLAogW0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oWyNpbmNsdWRlIDxp bnRyaW4uaD5dLAogICBbW3Vuc2lnbmVkIGludCBleHhbNF0gPSB7MCwgMCwgMCwgMH07CkBAIC0y MDc5LDYgKzIwOTEsMzYgQEAgaWYgdGVzdCB4IiRwZ2FjX2N2X19jcHVpZCIgPSB4InllcyI7IHRo ZW4KICAgQUNfREVGSU5FKEhBVkVfX0NQVUlELCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg X19jcHVpZC5dKQogZmkKIAorQUNfQ0FDSEVfQ0hFQ0soW2ZvciBfX2NwdWlkZXhdLCBbcGdhY19j dl9fY3B1aWRleF0sCitbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbI2luY2x1ZGUg PGludHJpbi5oPl0sCisgIFtbdW5zaWduZWQgaW50IGV4eFs0XSA9IHswLCAwLCAwLCAwfTsKKyAg X19nZXRfY3B1aWRleChleHhbMF0sIDcsIDApOworICBdXSldLAorICBbcGdhY19jdl9fY3B1aWRl eD0ieWVzIl0sCisgIFtwZ2FjX2N2X19jcHVpZGV4PSJubyJdKV0pCitpZiB0ZXN0IHgiJHBnYWNf Y3ZfX2NwdWlkZXgiID0geCJ5ZXMiOyB0aGVuCisgIEFDX0RFRklORShIQVZFX19DUFVJREVYLCAx LCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgX19jcHVpZGV4Ll0pCitmaQorCitBQ19DQUNIRV9D SEVDSyhbZm9yIF9faW1taW50cmluXSwgW3BnYWNfY3ZfX2ltbWludHJpbl0sCitbQUNfTElOS19J RkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbI2luY2x1ZGUgPGltbWludHJpbi5oPl0sCisgIFtbLyog RG9uJ3QgZXhjbHVkZSBjb2RlIHNvIGFkZGVkIHJldHVybi4gKi8KKyAgICByZXR1cm4gMTcwMTsK KyAgXV0pXSwKKyAgW3BnYWNfY3ZfX2ltbWludHJpbj0ieWVzIl0sCisgIFtwZ2FjX2N2X19pbW1p bnRyaW49Im5vIl0pXSkKK2lmIHRlc3QgeCIkcGdhY19jdl9faW1taW50cmluIiA9IHgieWVzIjsg dGhlbgorICBBQ19ERUZJTkUoSEFWRV9fSU1NSU5UUklOLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91 IGhhdmUgaW1taW50cmluLl0pCitmaQorCisjIENoZWNrIGZvciBJbnRlbCBBVlg1MTIgaW50cmlu c2ljcyB0byBkbyBQT1BDTlQgY2FsY3VsYXRpb25zLgorIworUEdBQ19BVlg1MTJfUE9QQ05UX0lO VFJJTlNJQ1MoW10pCitpZiB0ZXN0IHgiJHBnYWNfYXZ4NTEyX3BvcGNudF9pbnRyaW5zaWNzIiAh PSB4InllcyI7IHRoZW4KKyAgUEdBQ19BVlg1MTJfUE9QQ05UX0lOVFJJTlNJQ1MoWy1tYXZ4NTEy dnBvcGNudGRxIC1tYXZ4NTEyZl0pCitmaQorQUNfU1VCU1QoQ0ZMQUdTX0FWWDUxMl9QT1BDTlQp CisKICMgQ2hlY2sgZm9yIEludGVsIFNTRSA0LjIgaW50cmluc2ljcyB0byBkbyBDUkMgY2FsY3Vs YXRpb25zLgogIwogIyBGaXJzdCBjaGVjayBpZiB0aGUgX21tX2NyYzMyX3U4IGFuZCBfbW1fY3Jj MzJfdTY0IGludHJpbnNpY3MgY2FuIGJlIHVzZWQKZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIv bWVzb24uYnVpbGQKaW5kZXggOGVkNTFiNmFhZS4uYmQyOTdkOWZhOSAxMDA2NDQKLS0tIGEvbWVz b24uYnVpbGQKKysrIGIvbWVzb24uYnVpbGQKQEAgLTE3NzMsNiArMTc3MywzNyBAQCBlbGlmIGNj LmxpbmtzKCcnJwogZW5kaWYKIAogCitpZiBjYy5saW5rcygnJycKKyAgICAjaW5jbHVkZSA8Y3B1 aWQuaD4KKyAgICBpbnQgbWFpbihpbnQgYXJnLCBjaGFyICoqYXJndikKKyAgICB7CisgICAgICAg IHVuc2lnbmVkIGludCBleHhbNF0gPSB7MCwgMCwgMCwgMH07CisgICAgICAgIF9fZ2V0X2NwdWlk X2NvdW50KDcsIDAsICZleHhbMF0sICZleHhbMV0sICZleHhbMl0sICZleHhbM10pOworICAgIH0K KyAgICAnJycsIG5hbWU6ICdfX2dldF9jcHVpZF9jb3VudCcsCisgICAgYXJnczogdGVzdF9jX2Fy Z3MpCisgIGNkYXRhLnNldCgnSEFWRV9fR0VUX0NQVUlEX0NPVU5UJywgMSkKK2VsaWYgY2MubGlu a3MoJycnCisgICAgI2luY2x1ZGUgPGludHJpbi5oPgorICAgIGludCBtYWluKGludCBhcmcsIGNo YXIgKiphcmd2KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGV4eFs0XSA9IHswLCAwLCAw LCAwfTsKKyAgICAgICAgX19jcHVpZGV4KGV4eCwgNywgMCk7CisgICAgfQorICAgICcnJywgbmFt ZTogJ19fY3B1aWRleCcsCisgICAgYXJnczogdGVzdF9jX2FyZ3MpCisgIGNkYXRhLnNldCgnSEFW RV9fQ1BVSURFWCcsIDEpCitlbmRpZgorCisKKyMgQ2hlY2sgZm9yIGhlYWRlciBpbW1pbnRyaW4u aAoraWYgY2MuaGFzX2hlYWRlcignaW1taW50cmluLmgnLAorICAgIGluY2x1ZGVfZGlyZWN0b3Jp ZXM6IHBvc3RncmVzX2luYywgYXJnczogdGVzdF9jX2FyZ3MpCisgIGNkYXRhLnNldCgnSEFWRV9f SU1NSU5UUklOJywgMSwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRGVmaW5lIHRvIDEgaWYg eW91IGhhdmUgdGhlIGltbWludHJpbi5oIGhlYWRlciBmaWxlLicpCitlbmRpZgorCisKICMgRGVm ZW5kIGFnYWluc3QgY2xhbmcgYmVpbmcgdXNlZCBvbiB4ODYtMzIgd2l0aG91dCBTU0UyIGVuYWJs ZWQuICBBcyBjdXJyZW50CiAjIHZlcnNpb25zIG9mIGNsYW5nIGRvIG5vdCB1bmRlcnN0YW5kIC1m ZXhjZXNzLXByZWNpc2lvbj1zdGFuZGFyZCwgdGhlIHVzZSBvZgogIyB4ODcgZmxvYXRpbmcgcG9p bnQgb3BlcmF0aW9ucyBsZWFkcyB0byBwcm9ibGVtcyBsaWtlIGlzaW5mIHBvc3NpYmx5IHJldHVy bmluZwpAQCAtMjE0Niw2ICsyMTc3LDQzIEBAIGVsaWYgaG9zdF9jcHUgPT0gJ3BwYycgb3IgaG9z dF9jcHUgPT0gJ3BwYzY0JwogICBlbmRpZgogZW5kaWYKIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEFWWCA1MTIgUE9Q Q05UIEludHJpbnNpYyBjaGVjaworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitoYXZlX2F2eDUxMl9wb3BjbnQgPSBmYWxzZQor Y2ZsYWdzX2F2eDUxMl9wb3BjbnQgPSBbXQoraWYgaG9zdF9jcHUgPT0gJ3g4Nl82NCcKKyAgdGVz dF9mbGFncyA9IFsnLW1hdng1MTJ2cG9wY250ZHEnLCAnLW1hdng1MTJmJ10KKyAgaWYgaG9zdF9z eXN0ZW0gPT0gJ3dpbmRvd3MnCisgICAgdGVzdF9mbGFncyA9IFsnL2FyY2g6QVZYNTEyJ10KKyAg ZW5kaWYKKyAgcHJvZyA9ICcnJworICAgICAgI2luY2x1ZGUgPGltbWludHJpbi5oPgorICAgICAg I2luY2x1ZGUgPHN0ZGludC5oPgorICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICB7CisgICAg ICAgIF9fbTUxMmkgdG1wIF9fYXR0cmlidXRlX18oKGFsaWduZWQoNjQpKSk7CisgICAgICAgIF9f bTUxMmkgaW5wdXQgPSBfbW01MTJfc2V0emVyb19zaTUxMigpOworICAgICAgICBfX201MTJpIG91 dHB1dCA9IF9tbTUxMl9wb3BjbnRfZXBpNjQoaW5wdXQpOworICAgICAgICB1aW50NjRfdCBjbnQg PSA5OTk7CisgICAgICAgIF9tbTUxMl9zdG9yZV9zaTUxMigmdG1wLCBvdXRwdXQpOworICAgICAg ICBjbnQgPSBfbW01MTJfcmVkdWNlX2FkZF9lcGk2NCh0bXApOworICAgICAgICAvKiByZXR1cm4g Y29tcHV0ZWQgdmFsdWUsIHRvIHByZXZlbnQgdGhlIGFib3ZlIGJlaW5nIG9wdGltaXplZCBhd2F5 ICovCisgICAgICAgIHJldHVybiBjbnQgPT0gMDsKKyAgICAgIH0nJycKKyAgaWYgY2MubGlua3Mo cHJvZywgbmFtZTogJ19tbTUxMl8qIG1ldGhvZHMgd2l0aCAtbWF2eDUxMnZwb3BjbnRkcSAtbWF2 eDUxMmYnLAorICAgICAgICAgICAgICBhcmdzOiB0ZXN0X2NfYXJncyArIHRlc3RfZmxhZ3MpCisg ICAgaGF2ZV9hdng1MTJfcG9wY250ID0gdHJ1ZQorICAgIGNkYXRhLnNldCgnVVNFX0FWWDUxMl9Q T1BDTlRfV0lUSF9SVU5USU1FX0NIRUNLJywgMSkKKyAgICBjZGF0YS5zZXQoJ0hBVkVfX0FWWDUx Ml9QT1BDTlQnLCAxKQorICAgIGNmbGFnc19hdng1MTJfcG9wY250ID0gdGVzdF9mbGFncworICBl bHNlCisgICAgaGF2ZV9hdng1MTJfcG9wY250ID0gZmFsc2UKKyAgICBjZGF0YS5zZXQoJ1VTRV9B Vlg1MTJfUE9QQ05UX1dJVEhfUlVOVElNRV9DSEVDSycsIDEpCisgICAgY2ZsYWdzX2F2eDUxMl9w b3BjbnQgPSBbXQorICBlbmRpZiAjIGNvbXBpbGUvbGluayB0ZXN0CitlbmRpZiAjIGhvc3RfY3B1 IGNoZWNrCisKIAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4g Yi9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluCmluZGV4IDhiM2Y4YzI0ZTAuLjA4OWY0OWI3ZjMgMTAw NjQ0Ci0tLSBhL3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4KKysrIGIvc3JjL01ha2VmaWxlLmdsb2Jh bC5pbgpAQCAtMjYzLDYgKzI2Myw3IEBAIENYWEZMQUdTX1NMX01PRFVMRSA9IEBDWFhGTEFHU19T TF9NT0RVTEVACiBDRkxBR1NfVU5ST0xMX0xPT1BTID0gQENGTEFHU19VTlJPTExfTE9PUFNACiBD RkxBR1NfVkVDVE9SSVpFID0gQENGTEFHU19WRUNUT1JJWkVACiBDRkxBR1NfQ1JDID0gQENGTEFH U19DUkNACitDRkxBR1NfQVZYNTEyX1BPUENOVCA9IEBDRkxBR1NfQVZYNTEyX1BPUENOVEAKIFBF Uk1JVF9ERUNMQVJBVElPTl9BRlRFUl9TVEFURU1FTlQgPSBAUEVSTUlUX0RFQ0xBUkFUSU9OX0FG VEVSX1NUQVRFTUVOVEAKIENYWEZMQUdTID0gQENYWEZMQUdTQAogCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wZ19jb25maWcuaC5pbiBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCmluZGV4 IDA3ZTczNTY3ZGMuLjIwZTE0YzY0OTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BnX2NvbmZp Zy5oLmluCisrKyBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCkBAIC01NTUsNiArNTU1LDEy IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBfX2dldF9jcHVpZC4gKi8KICN1bmRlZiBI QVZFX19HRVRfQ1BVSUQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgX19nZXRfY3B1aWRf Y291bnQuICovCisjdW5kZWYgSEFWRV9fR0VUX0NQVUlEX0NPVU5UCisKKy8qIERlZmluZSB0byAx IGlmIHlvdSBoYXZlICBpbW1pbnRyaW4uICovCisjdW5kZWYgSEFWRV9fSU1NSU5UUklOCisKIC8q IERlZmluZSB0byAxIGlmIHlvdXIgY29tcGlsZXIgdW5kZXJzdGFuZHMgX1N0YXRpY19hc3NlcnQu ICovCiAjdW5kZWYgSEFWRV9fU1RBVElDX0FTU0VSVAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9wb3J0L3BnX2JpdHV0aWxzLmggYi9zcmMvaW5jbHVkZS9wb3J0L3BnX2JpdHV0aWxzLmgKaW5k ZXggNzk5ZjcwZDA1Mi4uY2FjYTc4ZDgwNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9ydC9w Z19iaXR1dGlscy5oCisrKyBiL3NyYy9pbmNsdWRlL3BvcnQvcGdfYml0dXRpbHMuaApAQCAtMzAz LDE2ICszMDMsMjMgQEAgcGdfY2VpbF9sb2cyXzY0KHVpbnQ2NCBudW0pCiBleHRlcm4gaW50CSgq cGdfcG9wY291bnQzMikgKHVpbnQzMiB3b3JkKTsKIGV4dGVybiBpbnQJKCpwZ19wb3Bjb3VudDY0 KSAodWludDY0IHdvcmQpOwogCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKK2V4dGVybiB1aW50NjQg cGdfcG9wY291bnQoY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpOworZXh0ZXJuIHVpbnQ2NCAo KnBnX3BvcGNvdW50X2luZGlyZWN0KShjb25zdCBjaGFyICpidWYsIGludCBieXRlcyk7CisjZWxz ZQorZXh0ZXJuIHVpbnQ2NCAoKnBnX3BvcGNvdW50KShjb25zdCBjaGFyICpidWYsIGludCBieXRl cyk7CisjZW5kaWYKKwogI2Vsc2UKIC8qIFVzZSBhIHBvcnRhYmxlIGltcGxlbWVudGF0aW9uIC0t IG5vIG5lZWQgZm9yIGEgZnVuY3Rpb24gcG9pbnRlci4gKi8KIGV4dGVybiBpbnQJcGdfcG9wY291 bnQzMih1aW50MzIgd29yZCk7CiBleHRlcm4gaW50CXBnX3BvcGNvdW50NjQodWludDY0IHdvcmQp OwogCi0jZW5kaWYJCQkJCQkJLyogVFJZX1BPUENOVF9GQVNUICovCi0KIC8qIENvdW50IHRoZSBu dW1iZXIgb2Ygb25lLWJpdHMgaW4gYSBieXRlIGFycmF5ICovCiBleHRlcm4gdWludDY0IHBnX3Bv cGNvdW50KGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKTsKIAorI2VuZGlmCQkJCQkJCS8qIFRS WV9QT1BDTlRfRkFTVCAqLworCiAvKgogICogUm90YXRlIHRoZSBiaXRzIG9mICJ3b3JkIiB0byB0 aGUgcmlnaHQvbGVmdCBieSBuIGJpdHMuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9tYWtlZmlsZXMv bWVzb24uYnVpbGQgYi9zcmMvbWFrZWZpbGVzL21lc29uLmJ1aWxkCmluZGV4IGIwZjQxNzhiM2Qu LmVlMzY0NzI4MmUgMTAwNjQ0Ci0tLSBhL3NyYy9tYWtlZmlsZXMvbWVzb24uYnVpbGQKKysrIGIv c3JjL21ha2VmaWxlcy9tZXNvbi5idWlsZApAQCAtMTAwLDYgKzEwMCw3IEBAIHBneHNfa3YgPSB7 CiAgICAgJyAnLmpvaW4oY2ZsYWdzX25vX2RlY2xfYWZ0ZXJfc3RhdGVtZW50KSwKIAogICAnQ0ZM QUdTX0NSQyc6ICcgJy5qb2luKGNmbGFnc19jcmMpLAorICAnQ0ZMQUdTX0FWWDUxMl9QT1BDTlQn OiAnICcuam9pbihjZmxhZ3NfYXZ4NTEyX3BvcGNudCksCiAgICdDRkxBR1NfVU5ST0xMX0xPT1BT JzogJyAnLmpvaW4odW5yb2xsX2xvb3BzX2NmbGFncyksCiAgICdDRkxBR1NfVkVDVE9SSVpFJzog JyAnLmpvaW4odmVjdG9yaXplX2NmbGFncyksCiAKZGlmZiAtLWdpdCBhL3NyYy9wb3J0L01ha2Vm aWxlIGIvc3JjL3BvcnQvTWFrZWZpbGUKaW5kZXggZGNjODczN2U2OC4uZWY2YzAyYTZiZiAxMDA2 NDQKLS0tIGEvc3JjL3BvcnQvTWFrZWZpbGUKKysrIGIvc3JjL3BvcnQvTWFrZWZpbGUKQEAgLTQz LDYgKzQzLDggQEAgT0JKUyA9IFwKIAlpbmV0X25ldF9udG9wLm8gXAogCW5vYmxvY2subyBcCiAJ cGF0aC5vIFwKKwlwZ19wb3BjbnRfY2hvb3NlLm8gXAorCXBnX3BvcGNudF94ODZfNjRfYWNjZWwu byBcCiAJcGdfYml0dXRpbHMubyBcCiAJcGdfc3Ryb25nX3JhbmRvbS5vIFwKIAlwZ2NoZWNrZGly Lm8gXApAQCAtODcsNiArODksMTEgQEAgcGdfY3JjMzJjX3NzZTQyLm86IENGTEFHUys9JChDRkxB R1NfQ1JDKQogcGdfY3JjMzJjX3NzZTQyX3NobGliLm86IENGTEFHUys9JChDRkxBR1NfQ1JDKQog cGdfY3JjMzJjX3NzZTQyX3Nydi5vOiBDRkxBR1MrPSQoQ0ZMQUdTX0NSQykKIAorIyBOZXdlciBJ bnRlbCBwcm9jZXNzb3JzIGNhbiB1c2UgQVZYLTUxMiBQT1BDTlQgQ2FwYWJpbGl0aWVzICgwMS8z MC8yMDI0KQorcGdfcG9wY250X3g4Nl82NF9hY2NlbC5vOiBDRkxBR1MrPSQoQ0ZMQUdTX0FWWDUx Ml9QT1BDTlQpCitwZ19wb3BjbnRfeDg2XzY0X2FjY2VsX3NobGliLm86IENGTEFHUys9JChDRkxB R1NfQVZYNTEyX1BPUENOVCkKK3BnX3BvcGNudF94ODZfNjRfYWNjZWxfc3J2Lm86IENGTEFHUys9 JChDRkxBR1NfQVZYNTEyX1BPUENOVCkKKwogIyBhbGwgdmVyc2lvbnMgb2YgcGdfY3JjMzJjX2Fy bXY4Lm8gbmVlZCBDRkxBR1NfQ1JDCiBwZ19jcmMzMmNfYXJtdjgubzogQ0ZMQUdTKz0kKENGTEFH U19DUkMpCiBwZ19jcmMzMmNfYXJtdjhfc2hsaWIubzogQ0ZMQUdTKz0kKENGTEFHU19DUkMpCmRp ZmYgLS1naXQgYS9zcmMvcG9ydC9tZXNvbi5idWlsZCBiL3NyYy9wb3J0L21lc29uLmJ1aWxkCmlu ZGV4IDkyYjU5M2U2ZWYuLmQ3OTMwNjcyY2IgMTAwNjQ0Ci0tLSBhL3NyYy9wb3J0L21lc29uLmJ1 aWxkCisrKyBiL3NyYy9wb3J0L21lc29uLmJ1aWxkCkBAIC03LDYgKzcsNyBAQCBwZ3BvcnRfc291 cmNlcyA9IFsKICAgJ25vYmxvY2suYycsCiAgICdwYXRoLmMnLAogICAncGdfYml0dXRpbHMuYycs CisgICdwZ19wb3BjbnRfY2hvb3NlLmMnLAogICAncGdfc3Ryb25nX3JhbmRvbS5jJywKICAgJ3Bn Y2hlY2tkaXIuYycsCiAgICdwZ21rZGlycC5jJywKQEAgLTg0LDYgKzg1LDcgQEAgcmVwbGFjZV9m dW5jc19wb3MgPSBbCiAgIFsncGdfY3JjMzJjX3NzZTQyJywgJ1VTRV9TU0U0Ml9DUkMzMkNfV0lU SF9SVU5USU1FX0NIRUNLJywgJ2NyYyddLAogICBbJ3BnX2NyYzMyY19zc2U0Ml9jaG9vc2UnLCAn VVNFX1NTRTQyX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0snXSwKICAgWydwZ19jcmMzMmNfc2I4 JywgJ1VTRV9TU0U0Ml9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNLJ10sCisgIFsncGdfcG9wY250 X3g4Nl82NF9hY2NlbCcsICdVU0VfQVZYNTEyX1BPUENOVF9XSVRIX1JVTlRJTUVfQ0hFQ0snLCAn YXZ4NTEyJ10sCiAKICAgIyBhcm0gLyBhYXJjaDY0CiAgIFsncGdfY3JjMzJjX2FybXY4JywgJ1VT RV9BUk1WOF9DUkMzMkMnXSwKQEAgLTk4LDggKzEwMCw4IEBAIHJlcGxhY2VfZnVuY3NfcG9zID0g WwogICBbJ3BnX2NyYzMyY19zYjgnLCAnVVNFX1NMSUNJTkdfQllfOF9DUkMzMkMnXSwKIF0KIAot cGdwb3J0X2NmbGFncyA9IHsnY3JjJzogY2ZsYWdzX2NyY30KLXBncG9ydF9zb3VyY2VzX2NmbGFn cyA9IHsnY3JjJzogW119CitwZ3BvcnRfY2ZsYWdzID0geydjcmMnOiBjZmxhZ3NfY3JjLCAnYXZ4 NTEyJzogY2ZsYWdzX2F2eDUxMl9wb3BjbnR9CitwZ3BvcnRfc291cmNlc19jZmxhZ3MgPSB7J2Ny Yyc6IFtdLCAnYXZ4NTEyJzogW119CiAKIGZvcmVhY2ggZiA6IHJlcGxhY2VfZnVuY3NfbmVnCiAg IGZ1bmMgPSBmLmdldCgwKQpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvcGdfYml0dXRpbHMuYyBiL3Ny Yy9wb3J0L3BnX2JpdHV0aWxzLmMKaW5kZXggNjQwYTg5NTYxYS4uOTQyZTM5NjE0MSAxMDA2NDQK LS0tIGEvc3JjL3BvcnQvcGdfYml0dXRpbHMuYworKysgYi9zcmMvcG9ydC9wZ19iaXR1dGlscy5j CkBAIC0xMiwxNiArMTIsOCBAQAogICovCiAjaW5jbHVkZSAiYy5oIgogCi0jaWZkZWYgSEFWRV9f R0VUX0NQVUlECi0jaW5jbHVkZSA8Y3B1aWQuaD4KLSNlbmRpZgotI2lmZGVmIEhBVkVfX0NQVUlE Ci0jaW5jbHVkZSA8aW50cmluLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRp bHMuaCIKIAotCiAvKgogICogQXJyYXkgZ2l2aW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgbGVmdC1t b3N0IHNldCBiaXQgZm9yIGVhY2ggcG9zc2libGUKICAqIGJ5dGUgdmFsdWUuICBXZSBjb3VudCB0 aGUgcmlnaHQtbW9zdCBwb3NpdGlvbiBhcyB0aGUgMHRoIGJpdCwgYW5kIHRoZQpAQCAtNzgsNiAr NzAsNyBAQCBjb25zdCB1aW50OCBwZ19yaWdodG1vc3Rfb25lX3Bvc1syNTZdID0gewogCTQsIDAs IDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAKIH07CiAKKwogLyoKICAq IEFycmF5IGdpdmluZyB0aGUgbnVtYmVyIG9mIDEtYml0cyBpbiBlYWNoIHBvc3NpYmxlIGJ5dGUg dmFsdWUuCiAgKgpAQCAtMTAzLDEyMyArOTYsMzUgQEAgY29uc3QgdWludDggcGdfbnVtYmVyX29m X29uZXNbMjU2XSA9IHsKIAk0LCA1LCA1LCA2LCA1LCA2LCA2LCA3LCA1LCA2LCA2LCA3LCA2LCA3 LCA3LCA4CiB9OwogCi1zdGF0aWMgaW50CXBnX3BvcGNvdW50MzJfc2xvdyh1aW50MzIgd29yZCk7 Ci1zdGF0aWMgaW50CXBnX3BvcGNvdW50NjRfc2xvdyh1aW50NjQgd29yZCk7CitpbnQJcGdfcG9w Y291bnQzMl9zbG93KHVpbnQzMiB3b3JkKTsKK2ludAlwZ19wb3Bjb3VudDY0X3Nsb3codWludDY0 IHdvcmQpOwordWludDY0IHBnX3BvcGNvdW50X3Nsb3coY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0 ZXMpOwogCiAjaWZkZWYgVFJZX1BPUENOVF9GQVNUCi1zdGF0aWMgYm9vbCBwZ19wb3Bjb3VudF9h dmFpbGFibGUodm9pZCk7Ci1zdGF0aWMgaW50CXBnX3BvcGNvdW50MzJfY2hvb3NlKHVpbnQzMiB3 b3JkKTsKLXN0YXRpYyBpbnQJcGdfcG9wY291bnQ2NF9jaG9vc2UodWludDY0IHdvcmQpOwotc3Rh dGljIGludAlwZ19wb3Bjb3VudDMyX2Zhc3QodWludDMyIHdvcmQpOwotc3RhdGljIGludAlwZ19w b3Bjb3VudDY0X2Zhc3QodWludDY0IHdvcmQpOworZXh0ZXJuIGludAlwZ19wb3Bjb3VudDMyX2No b29zZSh1aW50MzIgd29yZCk7CitleHRlcm4gaW50CXBnX3BvcGNvdW50NjRfY2hvb3NlKHVpbnQ2 NCB3b3JkKTsKK2V4dGVybiB1aW50NjQgcGdfcG9wY291bnRfY2hvb3NlKGNvbnN0IGNoYXIgKmJ1 ZiwgaW50IGJ5dGVzKTsKIAogaW50CQkJKCpwZ19wb3Bjb3VudDMyKSAodWludDMyIHdvcmQpID0g cGdfcG9wY291bnQzMl9jaG9vc2U7CiBpbnQJCQkoKnBnX3BvcGNvdW50NjQpICh1aW50NjQgd29y ZCkgPSBwZ19wb3Bjb3VudDY0X2Nob29zZTsKLSNlbmRpZgkJCQkJCQkvKiBUUllfUE9QQ05UX0ZB U1QgKi8KLQotI2lmZGVmIFRSWV9QT1BDTlRfRkFTVAotCi0vKgotICogUmV0dXJuIHRydWUgaWYg Q1BVSUQgaW5kaWNhdGVzIHRoYXQgdGhlIFBPUENOVCBpbnN0cnVjdGlvbiBpcyBhdmFpbGFibGUu Ci0gKi8KLXN0YXRpYyBib29sCi1wZ19wb3Bjb3VudF9hdmFpbGFibGUodm9pZCkKLXsKLQl1bnNp Z25lZCBpbnQgZXh4WzRdID0gezAsIDAsIDAsIDB9OwotCi0jaWYgZGVmaW5lZChIQVZFX19HRVRf Q1BVSUQpCi0JX19nZXRfY3B1aWQoMSwgJmV4eFswXSwgJmV4eFsxXSwgJmV4eFsyXSwgJmV4eFsz XSk7Ci0jZWxpZiBkZWZpbmVkKEhBVkVfX0NQVUlEKQotCV9fY3B1aWQoZXh4LCAxKTsKLSNlbHNl Ci0jZXJyb3IgY3B1aWQgaW5zdHJ1Y3Rpb24gbm90IGF2YWlsYWJsZQotI2VuZGlmCi0KLQlyZXR1 cm4gKGV4eFsyXSAmICgxIDw8IDIzKSkgIT0gMDsJLyogUE9QQ05UICovCi19Ci0KLS8qCi0gKiBU aGVzZSBmdW5jdGlvbnMgZ2V0IGNhbGxlZCBvbiB0aGUgZmlyc3QgY2FsbCB0byBwZ19wb3Bjb3Vu dDMyIGV0Yy4KLSAqIFRoZXkgZGV0ZWN0IHdoZXRoZXIgd2UgY2FuIHVzZSB0aGUgYXNtIGltcGxl bWVudGF0aW9ucywgYW5kIHJlcGxhY2UKLSAqIHRoZSBmdW5jdGlvbiBwb2ludGVycyBzbyB0aGF0 IHN1YnNlcXVlbnQgY2FsbHMgYXJlIHJvdXRlZCBkaXJlY3RseSB0bwotICogdGhlIGNob3NlbiBp bXBsZW1lbnRhdGlvbi4KLSAqLwotc3RhdGljIGludAotcGdfcG9wY291bnQzMl9jaG9vc2UodWlu dDMyIHdvcmQpCi17Ci0JaWYgKHBnX3BvcGNvdW50X2F2YWlsYWJsZSgpKQotCXsKLQkJcGdfcG9w Y291bnQzMiA9IHBnX3BvcGNvdW50MzJfZmFzdDsKLQkJcGdfcG9wY291bnQ2NCA9IHBnX3BvcGNv dW50NjRfZmFzdDsKLQl9Ci0JZWxzZQotCXsKLQkJcGdfcG9wY291bnQzMiA9IHBnX3BvcGNvdW50 MzJfc2xvdzsKLQkJcGdfcG9wY291bnQ2NCA9IHBnX3BvcGNvdW50NjRfc2xvdzsKLQl9Ci0KLQly ZXR1cm4gcGdfcG9wY291bnQzMih3b3JkKTsKLX0KLQotc3RhdGljIGludAotcGdfcG9wY291bnQ2 NF9jaG9vc2UodWludDY0IHdvcmQpCi17Ci0JaWYgKHBnX3BvcGNvdW50X2F2YWlsYWJsZSgpKQot CXsKLQkJcGdfcG9wY291bnQzMiA9IHBnX3BvcGNvdW50MzJfZmFzdDsKLQkJcGdfcG9wY291bnQ2 NCA9IHBnX3BvcGNvdW50NjRfZmFzdDsKLQl9Ci0JZWxzZQotCXsKLQkJcGdfcG9wY291bnQzMiA9 IHBnX3BvcGNvdW50MzJfc2xvdzsKLQkJcGdfcG9wY291bnQ2NCA9IHBnX3BvcGNvdW50NjRfc2xv dzsKLQl9Ci0KLQlyZXR1cm4gcGdfcG9wY291bnQ2NCh3b3JkKTsKLX0KLQotLyoKLSAqIHBnX3Bv cGNvdW50MzJfZmFzdAotICoJCVJldHVybiB0aGUgbnVtYmVyIG9mIDEgYml0cyBzZXQgaW4gd29y ZAotICovCi1zdGF0aWMgaW50Ci1wZ19wb3Bjb3VudDMyX2Zhc3QodWludDMyIHdvcmQpCisjaWYg ZGVmaW5lZChfTVNDX1ZFUikKK3VpbnQ2NCAoKnBnX3BvcGNvdW50X2luZGlyZWN0KShjb25zdCBj aGFyICpidWYsIGludCBieXRlcykgPSBwZ19wb3Bjb3VudF9jaG9vc2U7Cit1aW50NjQgcGdfcG9w Y291bnQoY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpCiB7Ci0jaWZkZWYgX01TQ19WRVIKLQly ZXR1cm4gX19wb3BjbnQod29yZCk7Ci0jZWxzZQotCXVpbnQzMgkJcmVzOwotCi1fX2FzbV9fIF9f dm9sYXRpbGVfXygiIHBvcGNudGwgJTEsJTBcbiI6Ij1xIihyZXMpOiJybSIod29yZCk6ImNjIik7 Ci0JcmV0dXJuIChpbnQpIHJlczsKLSNlbmRpZgorCXJldHVybiBwZ19wb3Bjb3VudF9pbmRpcmVj dChidWYsIGJ5dGVzKTsKIH0KLQotLyoKLSAqIHBnX3BvcGNvdW50NjRfZmFzdAotICoJCVJldHVy biB0aGUgbnVtYmVyIG9mIDEgYml0cyBzZXQgaW4gd29yZAotICovCi1zdGF0aWMgaW50Ci1wZ19w b3Bjb3VudDY0X2Zhc3QodWludDY0IHdvcmQpCi17Ci0jaWZkZWYgX01TQ19WRVIKLQlyZXR1cm4g X19wb3BjbnQ2NCh3b3JkKTsKICNlbHNlCi0JdWludDY0CQlyZXM7Ci0KLV9fYXNtX18gX192b2xh dGlsZV9fKCIgcG9wY250cSAlMSwlMFxuIjoiPXEiKHJlcyk6InJtIih3b3JkKToiY2MiKTsKLQly ZXR1cm4gKGludCkgcmVzOwordWludDY0CQkoKnBnX3BvcGNvdW50KSAoY29uc3QgY2hhciAqYnVm LCBpbnQgYnl0ZXMpID0gcGdfcG9wY291bnRfY2hvb3NlOwogI2VuZGlmCi19Ci0KLSNlbmRpZgkJ CQkJCQkvKiBUUllfUE9QQ05UX0ZBU1QgKi8KLQorI2Vsc2UJCQkJCQkJCS8qIFRSWV9QT1BDTlRf RkFTVCAqLwordWludDY0IHBnX3BvcGNvdW50KGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKTsK KyNlbmRpZiAJCQkJCQkJCS8qIFRSWV9QT1BDTlRfRkFTVCAqLwogCiAvKgogICogcGdfcG9wY291 bnQzMl9zbG93CiAgKgkJUmV0dXJuIHRoZSBudW1iZXIgb2YgMSBiaXRzIHNldCBpbiB3b3JkCiAg Ki8KLXN0YXRpYyBpbnQKK2ludAogcGdfcG9wY291bnQzMl9zbG93KHVpbnQzMiB3b3JkKQogewog I2lmZGVmIEhBVkVfX0JVSUxUSU5fUE9QQ09VTlQKQEAgLTI0MSw3ICsxNDYsNyBAQCBwZ19wb3Bj b3VudDMyX3Nsb3codWludDMyIHdvcmQpCiAgKiBwZ19wb3Bjb3VudDY0X3Nsb3cKICAqCQlSZXR1 cm4gdGhlIG51bWJlciBvZiAxIGJpdHMgc2V0IGluIHdvcmQKICAqLwotc3RhdGljIGludAoraW50 CiBwZ19wb3Bjb3VudDY0X3Nsb3codWludDY0IHdvcmQpCiB7CiAjaWZkZWYgSEFWRV9fQlVJTFRJ Tl9QT1BDT1VOVApAQCAtMjg2LDIyICsxOTEsMjkgQEAgcGdfcG9wY291bnQ2NCh1aW50NjQgd29y ZCkKIAlyZXR1cm4gcGdfcG9wY291bnQ2NF9zbG93KHdvcmQpOwogfQogCit1aW50NjQKK3BnX3Bv cGNvdW50KGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKQoreworCXJldHVybiBwZ19wb3Bjb3Vu dF9zbG93KGJ1ZiwgYnl0ZXMpOworfQorCiAjZW5kaWYJCQkJCQkJLyogIVRSWV9QT1BDTlRfRkFT VCAqLwogCiAvKgogICogcGdfcG9wY291bnQKLSAqCQlSZXR1cm5zIHRoZSBudW1iZXIgb2YgMS1i aXRzIGluIGJ1ZgorICoJCVJldHVybnMgdGhlIG51bWJlciBvZiAxLWJpdHMgaW4gYnVmIHVzaW5n IGVpdGhlciAzMiBvciA2NCBiaXQgbG9vcHMKKyAqICAgICAgb3IgZmFsbGJhY2sgdG8gX19idWls dGluXyogb3IgcHVyZSBzb2Z0d2FyZS4KICAqLwogdWludDY0Ci1wZ19wb3Bjb3VudChjb25zdCBj aGFyICpidWYsIGludCBieXRlcykKK3BnX3BvcGNvdW50X3Nsb3coY29uc3QgY2hhciAqYnVmLCBp bnQgYnl0ZXMpCiB7CiAJdWludDY0CQlwb3BjbnQgPSAwOwogCi0jaWYgU0laRU9GX1ZPSURfUCA+ PSA4CisjaWYgU0laRU9GX1ZPSURfUCA9PSA4CiAJLyogUHJvY2VzcyBpbiA2NC1iaXQgY2h1bmtz IGlmIHRoZSBidWZmZXIgaXMgYWxpZ25lZC4gKi8KLQlpZiAoYnVmID09IChjb25zdCBjaGFyICop IFRZUEVBTElHTig4LCBidWYpKQorCWlmIChidWYgPT0gKGNvbnN0IGNoYXIgKilUWVBFQUxJR04o OCwgYnVmKSkKIAl7Ci0JCWNvbnN0IHVpbnQ2NCAqd29yZHMgPSAoY29uc3QgdWludDY0ICopIGJ1 ZjsKKwkJY29uc3QgdWludDY0ICp3b3JkcyA9IChjb25zdCB1aW50NjQgKilidWY7CiAKIAkJd2hp bGUgKGJ5dGVzID49IDgpCiAJCXsKQEAgLTMwOSw5ICsyMjEsOSBAQCBwZ19wb3Bjb3VudChjb25z dCBjaGFyICpidWYsIGludCBieXRlcykKIAkJCWJ5dGVzIC09IDg7CiAJCX0KIAotCQlidWYgPSAo Y29uc3QgY2hhciAqKSB3b3JkczsKKwkJYnVmID0gKGNvbnN0IGNoYXIgKil3b3JkczsKIAl9Ci0j ZWxzZQorI2VsaWYgU0laRU9GX1ZPSURfUCA9PSA0CiAJLyogUHJvY2VzcyBpbiAzMi1iaXQgY2h1 bmtzIGlmIHRoZSBidWZmZXIgaXMgYWxpZ25lZC4gKi8KIAlpZiAoYnVmID09IChjb25zdCBjaGFy ICopIFRZUEVBTElHTig0LCBidWYpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9wb3J0L3BnX3BvcGNu dF9jaG9vc2UuYyBiL3NyYy9wb3J0L3BnX3BvcGNudF9jaG9vc2UuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi5lMTcwZTE2ZmY5Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3BvcnQvcGdfcG9wY250X2Nob29zZS5jCkBAIC0wLDAgKzEsMTY4IEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiBwZ19wb3BjbnRfeDg2XzY0X2Nob29zZS5jCisgKgkgIE1pc2NlbGxhbmVv dXMgZnVuY3Rpb25zIGZvciBiaXQtd2lzZSBvcGVyYXRpb25zLgorICoKKyAqIENvcHlyaWdodCAo YykgMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVO VElGSUNBVElPTgorICoJICBzcmMvcG9ydC9wZ19wb3BjbnRfeDg2XzY0X2Nob29zZS5jCisgKgor ICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJjLmgiCisKKyNpbmNsdWRlICJwb3J0 L3BnX2JpdHV0aWxzLmgiCisKKyNpZmRlZiBUUllfUE9QQ05UX0ZBU1QKKworI2lmZGVmIEhBVkVf X0dFVF9DUFVJRAorI2luY2x1ZGUgPGNwdWlkLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfX0NQ VUlECisjaW5jbHVkZSA8aW50cmluLmg+CisjZW5kaWYKKworc3RhdGljIGJvb2wgcGdfcG9wY291 bnRfYXZhaWxhYmxlKHZvaWQpOworaW50IHBnX3BvcGNvdW50MzJfY2hvb3NlKHVpbnQzMiB3b3Jk KTsKK2ludCBwZ19wb3Bjb3VudDY0X2Nob29zZSh1aW50NjQgd29yZCk7Cit1aW50NjQgcGdfcG9w Y291bnRfY2hvb3NlKGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKTsKKworZXh0ZXJuIGludCBw Z19wb3Bjb3VudDMyX2Zhc3QodWludDMyIHdvcmQpOworZXh0ZXJuIGludCBwZ19wb3Bjb3VudDY0 X2Zhc3QodWludDY0IHdvcmQpOworZXh0ZXJuIGludCBwZ19wb3Bjb3VudDMyX3Nsb3codWludDMy IHdvcmQpOworZXh0ZXJuIGludCBwZ19wb3Bjb3VudDY0X3Nsb3codWludDY0IHdvcmQpOworZXh0 ZXJuIHVpbnQ2NCBwZ19wb3Bjb3VudDUxMl9mYXN0KGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVz KTsKK2V4dGVybiB1aW50NjQgcGdfcG9wY291bnRfc2xvdyhjb25zdCBjaGFyICpidWYsIGludCBi eXRlcyk7CitleHRlcm4gdWludDY0ICgqcGdfcG9wY291bnRfaW5kaXJlY3QpKGNvbnN0IGNoYXIg KmJ1ZiwgaW50IGJ5dGVzKTsKKworZXh0ZXJuIGludCAoKnBnX3BvcGNvdW50MzIpKHVpbnQzMiB3 b3JkKTsKK2V4dGVybiBpbnQgKCpwZ19wb3Bjb3VudDY0KSh1aW50NjQgd29yZCk7CisKKy8qCisg KiBSZXR1cm4gdHJ1ZSBpZiBDUFVJRCBpbmRpY2F0ZXMgdGhhdCB0aGUgUE9QQ05UIGluc3RydWN0 aW9uIGlzIGF2YWlsYWJsZS4KKyAqLworc3RhdGljIGJvb2wKK3BnX3BvcGNvdW50X2F2YWlsYWJs ZSh2b2lkKQoreworICAgIHVuc2lnbmVkIGludCBleHhbNF0gPSB7MCwgMCwgMCwgMH07CisKKyNp ZiBkZWZpbmVkKEhBVkVfX0dFVF9DUFVJRCkKKyAgICBfX2dldF9jcHVpZCgxLCAmZXh4WzBdLCAm ZXh4WzFdLCAmZXh4WzJdLCAmZXh4WzNdKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9fQ1BVSUQpCisg ICAgX19jcHVpZChleHgsIDEpOworI2Vsc2UKKyNlcnJvciBjcHVpZCBpbnN0cnVjdGlvbiBub3Qg YXZhaWxhYmxlCisjZW5kaWYKKworICAgIHJldHVybiAoZXh4WzJdICYgKDEgPDwgMjMpKSAhPSAw OyAvKiBQT1BDTlQgKi8KK30KKworLyoKKyAqIFJldHVybiB0cnVlIGlmIENQVUlEIGluZGljYXRl cyB0aGF0IHRoZSBBVlg1MTJfUE9QQ05UIGluc3RydWN0aW9uIGlzCisgKiBhdmFpbGFibGUuIFRo aXMgaXMgc2ltaWxhciB0byB0aGUgbWV0aG9kIGFib3ZlOyBzZWUKKyAqIGh0dHBzOi8vZW4ud2lr aXBlZGlhLm9yZy93aWtpL0NQVUlEI0VBWD03LF9FQ1g9MDpfRXh0ZW5kZWRfRmVhdHVyZXMKKyAq CisgKiBGaW5hbGx5LCB3ZSBtYWtlIHN1cmUgdGhlIHhnZXRidiByZXN1bHQgaXMgY29uc2lzdGVu dCB3aXRoIHRoZSBDUFVJRAorICogcmVzdWx0cy4KKyAqLworc3RhdGljIGJvb2wKK3BnX3BvcGNv dW50NTEyX2F2YWlsYWJsZSh2b2lkKQoreworICAgIHVuc2lnbmVkIGludCBleHhbNF0gPSB7MCwg MCwgMCwgMH07CisKKyAgICAvKiBDaGVjayBmb3IgQVZYNTEyVlBPUENOVERRIGFuZCBBVlg1MTJG ICovCisjaWYgZGVmaW5lZChIQVZFX19HRVRfQ1BVSURfQ09VTlQpCisgICAgX19nZXRfY3B1aWRf Y291bnQoNywgMCwgJmV4eFswXSwgJmV4eFsxXSwgJmV4eFsyXSwgJmV4eFszXSk7CisjZWxpZiBk ZWZpbmVkKEhBVkVfX0NQVUlERVgpCisgICAgX19jcHVpZGV4KGV4eCwgNywgMCk7CisjZW5kaWYK KworICAgIGlmICgoZXh4WzJdICYgKDB4MDAwMDQwMDApKSAhPSAwICYmIChleHhbMV0gJiAoMHgw MDAxMDAwMCkpICE9IDApCisgICAgeworICAgICAgICAvKgorICAgICAgICAgKiBDUFVJRCBzdWNj ZWVkZWQsIGRvZXMgdGhlIGN1cnJlbnQgcnVubmluZyBPUyBzdXBwb3J0IHRoZQorICAgICAgICAg KiBaTU0gcmVnaXN0ZXJzIHdoaWNoIGFyZSByZXF1aXJlZCBmb3IgQVZYNTEyPyBUaGlzIGNoZWNr IGlzCisgICAgICAgICAqIHJlcXVpcmVkIHRvIG1ha2Ugc3VyZSBhbiBvbGQgT1Mgb24gYSBuZXcg Q1BVIGlzIGNvcnJlY3RseQorICAgICAgICAgKiBjaGVja2VkIG9yIGEgVk0gaHlwZXJ2aXNvciBp cyBub3QgZXhjbHVkaW5nIEFWWDUxMiBaTU0KKyAgICAgICAgICogc3VwcG9ydCBpbiB0aGUgVk07 IHNlZSAiNS4xLjkgRGV0ZWN0aW9uIG9mIEFWWCBJbnN0cnVjdGlvbnMiCisgICAgICAgICAqIGh0 dHBzOi8vd3d3LmludGVsLmNvbS9jb250ZW50L3d3dy91cy9lbi9jb250ZW50LWRldGFpbHMvNjcx NDg4L2ludGVsLTY0LWFuZC1pYS0zMi1hcmNoaXRlY3R1cmVzLW9wdGltaXphdGlvbi1yZWZlcmVu Y2UtbWFudWFsLXZvbHVtZS0xLmh0bWwKKyAgICAgICAgICovCisgICAgICAgIHVpbnQ2NCB4Y3Ig PSAwOworI2lmZGVmIF9NU0NfVkVSCisgICAgICAgIHVpbnQ2NCBoaWdobG93ID0gX3hnZXRidih4 Y3IpOworCisgICAgICAgIHJldHVybiAoaGlnaGxvdyAmIDB4RTApICE9IDA7CisjZWxzZQorICAg ICAgICB1aW50MzIgaGlnaDsKKyAgICAgICAgdWludDMyIGxvdzsKKyAgICAgICAgCisgICAgICAg IF9fYXNtX18gX192b2xhdGlsZV9fKCJ4Z2V0YnZcdFxuIiA6ICI9YSIobG93KSwgIj1kIihoaWdo KSA6ICJjIih4Y3IpKTsKKyAgICAgICAgcmV0dXJuIChsb3cgJiAweEUwKSAhPSAwOworI2VuZGlm CisgICAgfSAvKiBQT1BDTlQgNTEyICovCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvKgorICog VGhlc2UgZnVuY3Rpb25zIGdldCBjYWxsZWQgb24gdGhlIGZpcnN0IGNhbGwgdG8gcGdfcG9wY291 bnQzMiBldGMuCisgKiBUaGV5IGRldGVjdCB3aGV0aGVyIHdlIGNhbiB1c2UgdGhlIGFzbSBpbXBs ZW1lbnRhdGlvbnMsIGFuZCByZXBsYWNlCisgKiB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgc28gdGhh dCBzdWJzZXF1ZW50IGNhbGxzIGFyZSByb3V0ZWQgZGlyZWN0bHkgdG8KKyAqIHRoZSBjaG9zZW4g aW1wbGVtZW50YXRpb24uCisgKi8KK3N0YXRpYyB2b2lkIHNldF91cF9mdW5jdGlvbl9wb2ludGVy cygpCit7CisgICAgaWYgKHBnX3BvcGNvdW50NTEyX2F2YWlsYWJsZSgpKQorICAgIHsKKyNpZiBk ZWZpbmVkKF9NU0NfVkVSKQorICAgICAgICBwZ19wb3Bjb3VudF9pbmRpcmVjdCA9IHBnX3BvcGNv dW50NTEyX2Zhc3Q7CisjZWxzZQorICAgICAgICBwZ19wb3Bjb3VudCA9IHBnX3BvcGNvdW50NTEy X2Zhc3Q7CisjZW5kaWYKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyNpZiBkZWZpbmVkKF9NU0Nf VkVSKQorICAgICAgICBwZ19wb3Bjb3VudF9pbmRpcmVjdCA9IHBnX3BvcGNvdW50X3Nsb3c7Cisj ZWxzZQorICAgICAgICBwZ19wb3Bjb3VudCA9IHBnX3BvcGNvdW50X3Nsb3c7CisjZW5kaWYKKyAg ICB9CisgICAgaWYgKHBnX3BvcGNvdW50X2F2YWlsYWJsZSgpKQorICAgIHsKKyAgICAgICAgcGdf cG9wY291bnQzMiA9IHBnX3BvcGNvdW50MzJfZmFzdDsKKyAgICAgICAgcGdfcG9wY291bnQ2NCA9 IHBnX3BvcGNvdW50NjRfZmFzdDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcGdf cG9wY291bnQzMiA9IHBnX3BvcGNvdW50MzJfc2xvdzsKKyAgICAgICAgcGdfcG9wY291bnQ2NCA9 IHBnX3BvcGNvdW50NjRfc2xvdzsKKyAgICB9Cit9CisKK2ludCBwZ19wb3Bjb3VudDMyX2Nob29z ZSh1aW50MzIgd29yZCkKK3sKKyAgICBzZXRfdXBfZnVuY3Rpb25fcG9pbnRlcnMoKTsKKyAgICBy ZXR1cm4gcGdfcG9wY291bnQzMih3b3JkKTsKK30KKworaW50CitwZ19wb3Bjb3VudDY0X2Nob29z ZSh1aW50NjQgd29yZCkKK3sKKyAgICBzZXRfdXBfZnVuY3Rpb25fcG9pbnRlcnMoKTsKKyAgICBy ZXR1cm4gcGdfcG9wY291bnQ2NCh3b3JkKTsKK30KKwordWludDY0CitwZ19wb3Bjb3VudF9jaG9v c2UoY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpCit7CisgICAgc2V0X3VwX2Z1bmN0aW9uX3Bv aW50ZXJzKCk7CisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgICByZXR1cm4gcGdfcG9wY291bnRf aW5kaXJlY3QoYnVmLCBieXRlcyk7CisjZWxzZQorICAgIHJldHVybiBwZ19wb3Bjb3VudChidWYs IGJ5dGVzKTsKKyNlbmRpZgorfQorCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiBUUllfUE9QQ05UX0ZBU1QgKi8KZGlmZiAtLWdpdCBhL3NyYy9wb3J0 L3BnX3BvcGNudF94ODZfNjRfYWNjZWwuYyBiL3NyYy9wb3J0L3BnX3BvcGNudF94ODZfNjRfYWNj ZWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5hZWYzMmMxMTc0Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjL3BvcnQvcGdfcG9wY250X3g4Nl82NF9hY2NlbC5jCkBAIC0w LDAgKzEsOTMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3BvcGNudF94ODZfNjRf YWNjZWwuYworICoJICBNaXNjZWxsYW5lb3VzIGZ1bmN0aW9ucyBmb3IgYml0LXdpc2Ugb3BlcmF0 aW9ucy4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL3BvcnQvcGdfcG9w Y250X3g4Nl82NF9hY2NlbC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRl ICJjLmgiCisKKyNpZiBkZWZpbmVkKEhBVkVfX0lNTUlOVFJJTikKKyNpbmNsdWRlIDxpbW1pbnRy aW4uaD4KKyNlbmRpZgorCisjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgorCisjaWZkZWYg VFJZX1BPUENOVF9GQVNUCitleHRlcm4gY29uc3QgdWludDggcGdfbnVtYmVyX29mX29uZXNbMjU2 XTsKK2V4dGVybiB1aW50NjQgcGdfcG9wY291bnRfc2xvdyhjb25zdCBjaGFyICpidWYsIGludCBi eXRlcyk7Cit1aW50NjQgcGdfcG9wY291bnQ1MTJfZmFzdChjb25zdCBjaGFyICpidWYsIGludCBi eXRlcyk7CitpbnQgcGdfcG9wY291bnQzMl9mYXN0KHVpbnQzMiB3b3JkKTsKK2ludCBwZ19wb3Bj b3VudDY0X2Zhc3QodWludDY0IHdvcmQpOworCisvKgorICogcGdfcG9wY291bnQzMl9mYXN0Cisg KgkJUmV0dXJuIHRoZSBudW1iZXIgb2YgMSBiaXRzIHNldCBpbiB3b3JkCisgKi8KK2ludCBwZ19w b3Bjb3VudDMyX2Zhc3QodWludDMyIHdvcmQpCit7CisjaWZkZWYgX01TQ19WRVIKKyAgICByZXR1 cm4gX19wb3BjbnQod29yZCk7CisjZWxzZQorICAgIHVpbnQzMiByZXM7CisgICAgCisgICAgX19h c21fXyBfX3ZvbGF0aWxlX18oIiBwb3BjbnRsICUxLCUwXG4iIDogIj1xIihyZXMpIDogInJtIih3 b3JkKSA6ICJjYyIpOworICAgIHJldHVybiAoaW50KXJlczsKKyNlbmRpZgorfQorCisvKgorICog cGdfcG9wY291bnQ2NF9mYXN0CisgKgkJUmV0dXJuIHRoZSBudW1iZXIgb2YgMSBiaXRzIHNldCBp biB3b3JkCisgKi8KK2ludAorcGdfcG9wY291bnQ2NF9mYXN0KHVpbnQ2NCB3b3JkKQoreworI2lm ZGVmIF9NU0NfVkVSCisgICAgcmV0dXJuIF9fcG9wY250NjQod29yZCk7CisjZWxzZQorICAgIHVp bnQ2NCByZXM7CisKKyAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIHBvcGNudHEgJTEsJTBcbiIg OiAiPXEiKHJlcykgOiAicm0iKHdvcmQpIDogImNjIik7CisgICAgcmV0dXJuIChpbnQpcmVzOwor I2VuZGlmCit9CisKKy8qCisgKiBVc2UgQVZYLTUxMiBJbnRyaW5zaWNzIGZvciBzdXBwb3J0ZWQg SW50ZWwgQ1BVcyBvciBmYWxsIGJhY2sgdGhlIHRoZSBzb2Z0d2FyZQorICogbG9vcCBpbiBwZ19i dW51dGlscy5jIGFuZCB1c2UgdGhlIGJlc3QgMzIgb3IgNjQgYml0IGZhc3QgbWV0aG9kcy4gSWYg bm8gZmFzdAorICogbWV0aG9kcyBhcmUgdXNlZCB0aGlzIHdpbGwgZmFsbCBiYWNrIHRvIF9fYnVp bHRpbl8qIG9yIHB1cmUgc29mdHdhcmUuCisgKi8KK3VpbnQ2NAorcGdfcG9wY291bnQ1MTJfZmFz dChjb25zdCBjaGFyICpidWYsIGludCBieXRlcykKK3sKKyNpZiBkZWZpbmVkKEhBVkVfX0lNTUlO VFJJTikgJiYgSEFWRV9fQVZYNTEyX1BPUENOVCA9PSAxCisgICAgdWludDY0IHBvcGNudCA9IDA7 CisgICAgX19tNTEyaSBhY2N1bXVsYXRvciA9IF9tbTUxMl9zZXR6ZXJvX3NpNTEyKCk7CisKKyAg ICB3aGlsZSAoYnl0ZXMgPj0gNjQpCisgICAgeworICAgICAgICBjb25zdCBfX201MTJpIHYgPSBf bW01MTJfbG9hZHVfc2k1MTIoKGNvbnN0IF9fbTUxMmkgKilidWYpOworICAgICAgICBjb25zdCBf X201MTJpIHAgPSBfbW01MTJfcG9wY250X2VwaTY0KHYpOworCisgICAgICAgIGFjY3VtdWxhdG9y ID0gX21tNTEyX2FkZF9lcGk2NChhY2N1bXVsYXRvciwgcCk7CisgICAgICAgIGJ5dGVzIC09IDY0 OworICAgICAgICBidWYgKz0gNjQ7CisgICAgfQorCisgICAgcG9wY250ID0gX21tNTEyX3JlZHVj ZV9hZGRfZXBpNjQoYWNjdW11bGF0b3IpOworCisgICAgLyogUHJvY2VzcyBhbnkgcmVtYWluaW5n IGJ5dGVzICovCisgICAgd2hpbGUgKGJ5dGVzLS0pCisgICAgICAgIHBvcGNudCArPSBwZ19udW1i ZXJfb2Zfb25lc1sodW5zaWduZWQgY2hhcikqYnVmKytdOworICAgIHJldHVybiBwb3BjbnQ7Cisj ZWxzZQorICAgIHJldHVybiBwZ19wb3Bjb3VudF9zbG93KGJ1ZiwgYnl0ZXMpOworI2VuZGlmIC8q IFVTRV9BVlg1MTJfQ09ERSAqLworfQorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogVFJZX1BPUENOVF9GQVNUICovCg== --_002_BL1PR11MB53047C28DDBA6A2E77B9420ADC222BL1PR11MB5304namp_--