From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A856AC54EAA for ; Fri, 27 Jan 2023 13:43:49 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2CC5F10E47C; Fri, 27 Jan 2023 13:43:48 +0000 (UTC) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2D3E110E47A for ; Fri, 27 Jan 2023 13:43:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1674827025; x=1706363025; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=AC2mLBl67wsOgVnJJgt05FdTrSr45DBseX16PCXVa3g=; b=FVRtSQdvxdzK+bkk5SzNTrcLWC6JQ8KmV4qNqv65nsmGkXbmZEVX0F9k nkrViNHT0EaOU7qVAf56Dkobc1raiUlGNWVLM9mh68N/p+7uCf/4F2zsm gb9Kyzd1TeJopg5tLWOWuF0hr/GnLKxQDDw5y5jVWq+HzER4HZylB2GQX jBFbzHxBRDi+kME3mK9lsfsieDWhyyXBFUYmKjjqc2T6lLyE3cflwMqTm GN+o1UjKBB4vr6klO54R1Dwu/51iyJJMQQyPIHTRbU5WcL3eIWiNw70LV ncSMUWy25Mq2oxYNwEy7SqVN4rjIWTGSwAOc0CQZKpKl8N+CJ5T3PP1w3 g==; X-IronPort-AV: E=McAfee;i="6500,9779,10602"; a="310708291" X-IronPort-AV: E=Sophos;i="5.97,251,1669104000"; d="scan'208";a="310708291" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jan 2023 05:43:44 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10602"; a="613190161" X-IronPort-AV: E=Sophos;i="5.97,251,1669104000"; d="scan'208";a="613190161" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga003.jf.intel.com with ESMTP; 27 Jan 2023 05:43:44 -0800 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Fri, 27 Jan 2023 05:43:43 -0800 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Fri, 27 Jan 2023 05:43:43 -0800 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Fri, 27 Jan 2023 05:43:43 -0800 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.176) 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.2507.16; Fri, 27 Jan 2023 05:43:41 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Wmk+38LCe8OiTwLvfWktqX9v3mUBJ87kTZs+XYHSgCbSHzixWSYikKvs53do7xjKCYAqC6z0LRPXtp9YIsWIWeaAIHrsh/b/fBKqd3XOMmveoYP17qUg2p6Bhv7rRP6eUuaMvbNGpc8/ylv9O4+YqFs27Lez2sxoKlmbCB5cL9oq3C7/5o/4J8DMQgFOYWdSi8gS4o1QrXSrQ+Y7BXgavOMVW/Rt1MUGOjJNuwuDZIu4hwHDZMsDakZEk2y2oWgPx7MJFPhgEK2uNklxATsuusAc0PJZq84JTeJtV46j2dFk2aR9AFVhOBsF5FsL4tUcQvSeZN6OCOEA2aEpuHj6hQ== 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=AC2mLBl67wsOgVnJJgt05FdTrSr45DBseX16PCXVa3g=; b=ab1qLfudUKNPTNqH55ZTWQl3Yi68nQGFSingRhPzJ4o4APS/eeTw4953nf/pY8LTzFYXxBb87ehTHMeOcpU49q3MLelxuIEJXbgypIhW+zjWj8XnCeKGfEkpg08+I7tK7IISQvBcDCGSThvs/VvcOkUxbl3wPh+Iy7Ar9PCuFRMn0qmPbRQpRWaoHLLwQHh0WHlxhbEWpOF7AHfklWW4v4rilIuj0YpkIibmDjJiGp8/8zbypaNSL7dPx97Sw//jLH9QPf1qDewJzg+ScOM+bJPZ525WV7pGivbVPGCzgcWyF57cg494tDCrLiw12dGIQRXJQXDI3LfP7lat2/HyDA== 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 DM8PR11MB5751.namprd11.prod.outlook.com (2603:10b6:8:12::16) by CO1PR11MB4770.namprd11.prod.outlook.com (2603:10b6:303:94::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.25; Fri, 27 Jan 2023 13:43:38 +0000 Received: from DM8PR11MB5751.namprd11.prod.outlook.com ([fe80::8901:2af2:6e02:c95c]) by DM8PR11MB5751.namprd11.prod.outlook.com ([fe80::8901:2af2:6e02:c95c%5]) with mapi id 15.20.6043.022; Fri, 27 Jan 2023 13:43:38 +0000 From: "Teres Alexis, Alan Previn" To: "Kandpal, Suraj" , "intel-gfx@lists.freedesktop.org" Thread-Topic: [PATCH v8 5/6] drm/i915/mtl: Add function to send command to GSC CS Thread-Index: AQHZL9hhuLCtTmVtC0WKtt2q1XBONK6ySwQA Date: Fri, 27 Jan 2023 13:43:38 +0000 Message-ID: <79750ec6f446a501ad5bfdc6cc175bdd603faef4.camel@intel.com> References: <20230124094224.2714023-1-suraj.kandpal@intel.com> <20230124094224.2714023-6-suraj.kandpal@intel.com> In-Reply-To: <20230124094224.2714023-6-suraj.kandpal@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.46.1-0ubuntu1 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: DM8PR11MB5751:EE_|CO1PR11MB4770:EE_ x-ms-office365-filtering-correlation-id: b1ecb2fe-7495-489b-f329-08db006c7eb4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: +JNeVGP5T7yWAcLLWQuhXOtQO2jSBI4urljJbSCI+1IK+iso/pWqsWj4O2h9DtMbLCD9X7RWm4mfHgiU+gQZxXFTYLyNot860UfiTK61qyH/V8yR65EUWUhluLu/pifk5wEFhUcYgjaBMqaIqbVkz1bzldSe3pOR3hry4VG6D9RvfAS/dOv12JlDaxk6F+0m9RHYHeldUpdS6JaS6E+agbPlAGLSsbuqd0KAkciE8aWKjbtBrNXA88qZGlLD6Aiu/g8GS08MnWo/HmLWbQJvCujP8WlKeIlDJ6G0yWf4QuWsxCGrsVpjEqrTBWZLeNB244KH4R+Kyq0mFQAA9tjowmz6YMjrXU6ApGUj4eQ5hMR3IysL766ELx9ZPtndyrxIZIdWi27aDwwya7b9dbhwcy6P45A4rEWFgu6iKdSVXuweLvPbh+S4wzri5VWpD6/pWJWat6iFpoc69DlQvGLbhdWZ/IiQQ1pWJhcelKHEoXfhnip3IxTGJ2BFtmD+4LYB0T/5uAgQA4h7fwaZaKOvNRamnSPoga0LKKHHAoXqRFBB0Ll1HRACmGZfe9lh2bE1Tnj6j0NU3ww7n16JQDpUTtN5ynK9REZY1RUenY6bf1SMO5V6yx5tnV53PrHx5byi0hQc8G9XqldFmboz9ihG4Wi8T1B3Y7PhQiGjG1fQUKfllQKmTsqA4sLY8LhjvCRhfGUGABY5+ske1oaJxlzddQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR11MB5751.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(396003)(346002)(376002)(136003)(366004)(39860400002)(451199018)(66556008)(66476007)(64756008)(66899018)(66446008)(76116006)(91956017)(4326008)(8676002)(82960400001)(2616005)(8936002)(41300700001)(54906003)(316002)(110136005)(36756003)(6506007)(38070700005)(186003)(6512007)(26005)(107886003)(122000001)(38100700002)(66946007)(5660300002)(2906002)(83380400001)(30864003)(71200400001)(86362001)(6486002)(478600001)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YlVrY3IrdUdVcU14MmNUQVlhVzJlU0hqclZITXl3djRKN1hhYjFCRUJHdlRT?= =?utf-8?B?WjhScDh6Nnp5eXJlbUhtTUhpY28wZkR4SjFmRDNDMkVyeTZrZ0Q5VXpoZm5M?= =?utf-8?B?bDJwOWZwY3laWmpic1RrVENBMkZWWHRNb3VBVXBHZERHZHJ0V3RGRTRwZGp0?= =?utf-8?B?QXR5aCt5MVNVTE1vZ1ErbFZFTXdTZnc4S29RbXlQY3NpWlg0WW1HV1Rwejkz?= =?utf-8?B?N1RVd0tvRWNhb0c2bzZ4Y1hpUGlIUmNiZE4zNGVRRldFTVBqdTRJRW1GaUs5?= =?utf-8?B?MXZ5MnNScFFYUGl1QU9ibGtrd3Nzb2Q3RGdIWGVENzY3eEtCNGt3eGpkRkR4?= =?utf-8?B?TERJK1JXNlVHM2svRkJwQXdKSVRrQ2pvOUdlVTV2dVIzaUJUTW96K0U5aFQ1?= =?utf-8?B?NHlJM1hkckJxcVFXM2owS2lJNjhUbGpSazJ3bTRIZXpPS0t4SXloaFJua1JZ?= =?utf-8?B?RmVBU3I3a3BPYVgvS01aRm5vdUFNWkRTQzVjaFBOelFFS3NTT0hOTTduUVQ5?= =?utf-8?B?QlpJQy9NaGptZjBGeldEK3RaZDdKdjYweDRHalkwbmZ4V0I1clBVeGVObUxM?= =?utf-8?B?cHlMVjgzL3QyczdlcVd5QVp4Ry9nWVVwdUFrUlNibEIrQmdqOVF1VEZycDg3?= =?utf-8?B?U05KcThucHk5SVJ4YjJhd3NpRFRDcDJmNTA0MFU2M3Y2dGlGUWkwVDM5WnRI?= =?utf-8?B?eWJpeTIxR1NPWW5jdEVlN25Kb1NpTGdHZzdndGhLeFlMcklXU0ZZc1FpTk05?= =?utf-8?B?ajZPcUc2WWc1VzlUNU9mTWlGQ01LN0tJL25URElUZnhkcllQeUdxOFJOdnNl?= =?utf-8?B?SUE5NDZsMzlQU1dNRGdTbG5VTHIyNjNaaDIwSkRCUGY1Z2hMOWtqeDRYVnhC?= =?utf-8?B?eHRMaTIvSHgzdnV1cUtNckljTkNMdDE3Q2lIaVdxTkFPUzZhUVlGRUczSXBt?= =?utf-8?B?TUh5ZnZ6citZSVNCRk0rOXhZWkZwcE4yWWJPL2REdEVja3dBUllobHk0Y21C?= =?utf-8?B?SUxlU2xVWmtkbWUwNUthOFVHU29vWmwvbmR4RDFFdy80c0pRQnEwRFNScEhB?= =?utf-8?B?cTRyM05PWW14enRHREVFMzlnbDhENG9iR1NxNFE4SmQ4WnQyaGdrNlhrdVNk?= =?utf-8?B?VmdoN3lnWCsrWXFXU0ptUkU3bkE3cGl5d3NMYkkrRXpMTFZmNWpzc2N1OXZ5?= =?utf-8?B?TndvU0R0V08wc2J0Y2w3aXFvOS9KTWIzVlV0ZUpKSDlnbW12T1hraHc2WEJu?= =?utf-8?B?YXRSSFNOY0RWeHNmeUt3K3BhdlR3S0twRzBKQXJTMDRzTXYvZHBZelZENHB1?= =?utf-8?B?YnFGQ1B6RS83UHlIcVRMWTdYbUpiUS9VUDJyR0FOME5FMmY3QzRUNDVVb1V3?= =?utf-8?B?cXVjREFWOVZtMUFpOGFESkF3eUNLa1lTY0pxZlFPUmJPVndRY2M1cEM5bmNw?= =?utf-8?B?am52Yi9sdWFuU2VpSGJvbUhoM0t4VnFwcU12d1pKa1Q1eWFtZUsvWTVwU1hH?= =?utf-8?B?eTd5TE9NYzZQWXpVTkF4ZkMvbVhYWGxvOTJOck5yVk83VTNsa2tRVzB1ZHlE?= =?utf-8?B?aDFGUUJzMWNUUjFJNEtGZ2tiS05NbDJuamxuekQvYndib1RsNUZtckpWMGx0?= =?utf-8?B?ZzJnSXA2QS91YzZveUpYb1gxT0NDU2Nub3dUemVWVVNwVnpxdDNqcnBEYTlu?= =?utf-8?B?MmtMZE1ZZ1ZCNURXVWw5ZDhXZjhMZXJSSzIyK0V4a1dBMTJZbGZjYWVCQVkx?= =?utf-8?B?QWM3MFdJS1VzZFhJOE81VkVGY0ExR2xDMnlmL3ZESE5TQlkva21ZRHZKY3p2?= =?utf-8?B?YUl6UlpSMWw4UjcwdHpCRmRkTWdWa2JtYTlVRG4ycFllOE5URW80Zkc4TUQz?= =?utf-8?B?Ym5HM1NFS09CZG5RWHZCVEYyZStqTEtHM0V6VEk2SXJYR2lTbkRnUHd2QytJ?= =?utf-8?B?MHd0YmFOYTM4dFhLaU90WUZ2UURDWGRCaU5MaVpQVEdwMC90dit1bFRLbnRl?= =?utf-8?B?WG53Uld4TDhSZ1JZTmduTzdBSTJ3eEdLOWdOTTVZQSsyMGV2QWNCc2xWV2Zz?= =?utf-8?B?RUtsa0pzQTEwTCtWUEpISWpwejY0dm9TeDdBaG9CZzhWV0hSS2d2Z00vWWJ0?= =?utf-8?B?ZGZnRXlyNGQyVDZGdFR5R0xaOGFRMXh6YTVtK3pBN3VwUXFzN3luYmpsODZI?= =?utf-8?Q?Vvu5ZKweSdx7r/l4hMbRAd8OlJhDRjcr0iD+o/NzH2OA?= Content-Type: text/plain; charset="utf-8" Content-ID: <12A12752131F3945BBED40A9BA874C39@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR11MB5751.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b1ecb2fe-7495-489b-f329-08db006c7eb4 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jan 2023 13:43:38.4844 (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: iyCiqtMqiAWEwkLv4bAymDkTfszgFqlc3TljYKOvTceyNTswPH0HMW2fw8namjm5rQOZH6CzqECXqQRC3BONS8CxowVvIkVngCFbwnslxWOaVKgqTTWESExGVOLxr79M X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR11MB4770 X-OriginatorOrg: intel.com Subject: Re: [Intel-gfx] [PATCH v8 5/6] drm/i915/mtl: Add function to send command to GSC CS X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gVHVlLCAyMDIzLTAxLTI0IGF0IDE1OjEyICswNTMwLCBLYW5kcGFsLCBTdXJhaiB3cm90ZToK PiBBZGQgZnVuY3Rpb24gdGhhdCB0YWtlcyBjYXJlIG9mIHNlbmRpbmcgY29tbWFuZCB0byBnc2Mg Y3MuIFdlIHN0YXJ0Cj4gb2Ygd2l0aCBhbGxvY2F0aW9uIG9mIG1lbW9yeSBmb3Igb3VyIGNvbW1h bmQgaW50ZWxfaGRjcF9nc2NfbWVzc2FnZSB0aGF0Cj4gY29udGFpbnMgZ3NjIGNzIG1lbW9yeSBo ZWFkZXIgYXMgZGlyZWN0ZWQgaW4gc3BlY3MgZm9sbG93ZWQgYnkgdGhlCj4gYWN0dWFsIHBheWxv YWQgaGRjcCBtZXNzYWdlIHRoYXQgd2Ugd2FudCB0byBzZW5kLgo+IFNwZWMgc3RhdGVzIHRoYXQg d2UgbmVlZCB0byBwb2xsIHBlbmRpbmcgYml0IG9mIHJlc3BvbnNlIGhlYWRlciBhcm91bmQKPiAy MCB0aW1lcyBlYWNoIHRyeSBiZWluZyA1MG1zIGFwYXJ0IGhlbmNlIGFkZGluZyB0aGF0IHRvIGN1 cnJlbnQKPiBnc2NfbXNnX3NlbmQgZnVuY3Rpb24KPiBBbHNvIHdlIHVzZSB0aGUgc2FtZSBmdW5j dGlvbiB0byB0YWtlIGNhcmUgb2YgYm90aCBzZW5kaW5nIGFuZCByZWNlaXZpbmcKPiBoZW5jZSBu byBzZXBhcmF0ZSBmdW5jdGlvbiB0byBnZXQgdGhlIHJlc3BvbnNlLgo+IAo+IC0tdjQKPiAtQ3Jl YXRlIGNvbW1vbiBmdW5jdGlvbiB0byBmaWxsIGluIGdzY19tdGxfaGVhZGVyIFtBbGFuXQo+IC1k ZWZpbmUgaG9zdCBzZXNzaW9uIGJpdG1hc2sgW0FsYW5dCj4gCj4gLS12NQo+IC11c2UgaTkxNSBk aXJlY3RseSBpbnN0ZWFkIG9mIGd0LT5pOTE1IFtBbGFuXQo+IC1ObyBuZWVkIHRvIG1ha2UgZmll bGRzIE5VTEwgYXMgd2UgYXJlIGFscmVhZHkKPiB1c2luZyBremFsbG9jIFtBbGFuXQo+IAo+IC0t djgKPiAtY2hhbmdlIG1lY2hhbmlzbSB0byByZXVzZSB0aGUgc2FtZSBtZW1vcnkgZm9yIG9uZSBo ZGNwIHNlc3Npb25bQWxhbl0KPiAtZml4IGhlYWRlciBvcmRlcmluZwo+IC1hZGQgY29tbWVudHMg dG8gZXhwbGFpbiBmbGFncyBhbmQgaG9zdCBzZXNzaW9uIG1hc2sgW0FsYW5dCj4gCj4gQ2M6IEFu a2l0IE5hdXRpeWFsIDxhbmtpdC5rLm5hdXRpeWFsQGludGVsLmNvbT4KPiBDYzogRGFuaWVsZSBD ZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KPiBDYzogQWxh biBQZXJ2aW4gVGVyZXMgPGFsYW4ucHJldmluLnRlcmVzLmFsZXhpc0BpbnRlbC5jb20+Cj4gQ2M6 IFVtYSBTaGFua2FyIDx1bWEuc2hhbmthckBpbnRlbC5jb20+Cj4gQ2M6IEFuc2h1bWFuIEd1cHRh IDxhbnNodW1hbi5ndXB0YUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogU3VyYWogS2FuZHBh bCA8c3VyYWoua2FuZHBhbEBpbnRlbC5jb20+Cj4gLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+IMKg Li4uL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfY29yZS5oIHzCoMKgIDUgKwo+ IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZGNwLmPCoMKgwqDCoCB8wqAg MjAgKysKPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRjcF9nc2MuYyB8 IDE4NSArKysrKysrKysrKysrKysrKysKPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfaGRjcF9nc2MuaCB8wqAgMjcgKysrCj4gwqAuLi4vaTkxNS9ndC91Yy9pbnRlbF9nc2Nf dWNfaGVjaV9jbWRfc3VibWl0LmMgfMKgIDE1ICsrCj4gwqAuLi4vaTkxNS9ndC91Yy9pbnRlbF9n c2NfdWNfaGVjaV9jbWRfc3VibWl0LmggfMKgIDE2ICsrCj4gwqA3IGZpbGVzIGNoYW5nZWQsIDI2 OSBpbnNlcnRpb25zKCspCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9oZGNwX2dzYy5jCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZGNwX2dzYy5oCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUKPiBpbmRleCA0NjFkNmI0MDY1NmQuLjE5NGFhZTkyYzM1NCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlCj4gQEAgLTI1NCw2ICsyNTQsNyBAQCBpOTE1LXkgKz0gXAo+IMKgwqDCoMKgwqDC oMKgwqBkaXNwbGF5L2ludGVsX2Zyb250YnVmZmVyLm8gXAo+IMKgwqDCoMKgwqDCoMKgwqBkaXNw bGF5L2ludGVsX2dsb2JhbF9zdGF0ZS5vIFwKPiDCoMKgwqDCoMKgwqDCoMKgZGlzcGxheS9pbnRl bF9oZGNwLm8gXAo+ICvCoMKgwqDCoMKgwqDCoGRpc3BsYXkvaW50ZWxfaGRjcF9nc2MubyBcCj4g wqDCoMKgwqDCoMKgwqDCoGRpc3BsYXkvaW50ZWxfaG90cGx1Zy5vIFwKPiDCoMKgwqDCoMKgwqDC oMKgZGlzcGxheS9pbnRlbF9odGkubyBcCj4gwqDCoMKgwqDCoMKgwqDCoGRpc3BsYXkvaW50ZWxf bHBlX2F1ZGlvLm8gXAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXlfY29yZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kaXNwbGF5X2NvcmUuaAo+IGluZGV4IDEzMmU5MTM0YmEwNS4uN2U5ZjNmODdjNzY3IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9jb3Jl LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfY29y ZS5oCj4gQEAgLTM3Miw2ICszNzIsMTEgQEAgc3RydWN0IGludGVsX2Rpc3BsYXkgewo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGk5MTVfaGRjcF9tYXN0ZXIgKm1hc3Rl cjsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJvb2wgY29tcF9hZGRlZDsKPiDC oAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKkhEQ1AgbWVzc2FnZSBzdHJ1Y3Qg Zm9yIGFsbG9jYXRpb24gb2YgbWVtb3J5IHdoaWNoIGNhbiBiZSByZXVzZWQKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICogd2hlbiBzZW5kaW5nIG1lc3NhZ2UgdG8gZ3NjIGNzCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHRoaXMgaXMgb25seSBwb3B1bGF0ZWQg cG9zdCBNZXRlb3JsYWtlCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfaGRjcF9nc2NfbWVzc2Fn ZSAqaGRjcF9tZXNzYWdlOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogTXV0 ZXggdG8gcHJvdGVjdCB0aGUgYWJvdmUgaGRjcCBjb21wb25lbnQgcmVsYXRlZCB2YWx1ZXMuICov Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbXV0ZXggY29tcF9tdXRl eDsKYWxhbjogYXBvbG9naWVzIGZvciB0aGVzZSBhZGRpdGlvbmFsIHNlbGYtbmFycmF0aW9uIGRy aXp6bGVkIHdpdGggcXVlc3Rpb25zIGFmdGVyCmFuIDh0aCByZXYgLSBwbGVhc2UgYmVhciB3aXRo IG1lOgoKMS4gRmlyc3RseSB0aGFua3MgZm9yIGNoYW5naW5nIHRoZSBjb2RlcyBmcm9tIGFsbG9j YXRpbmcgJ3N0cnVjdCBpbnRlbF9oZGNwX2dzY19tZXNzYWdlJwogICBkeW5hbWljYWxseS1hcy13 ZS1uZWVkLXNlbmQtYS1tc2cgaXQgdG/CoGFuIGluaXQtdGltZSBhbGxvY2F0aW9uIHRoYXQgd2Ug Y2FuIGNvbnRpbnVlCiAgIHRvIHVzZSBvdmVyIGxpZmUgb2YgYSBoZGNwLWVuYWJsZWQtY29ubmVj dG9yIChzbyB3ZSBkb250IGhhdmUgdG8ga2VlcCBhbGxvY2F0aW5nIGFuZAogICBmcmVlaW5nIGV2 ZXJ5IGZldyBzZWNvbmRzKS4KMi4gV2l0aCB0aGlzIG5ldyBjb2RlIGkgd2FzIGxlYWQgdG8gbG9v ayBhdCAiaW50ZWxfZGlzcGxheS0+aGRjcCIgdXNhZ2UuIGludGVsX2Rpc3BsYXkKICAgaXMgYSBn bG9iYWwgY29udGV4dCBpLmUuIChub3QgcGVyIGNydGMpIGFuZCB0aGUgaGRjcCBzdWJzdHJ1Y3Qg aW4gaW50ZWxfZGlzcGxheSBpcwogICBob2xkaW5nIGdsb2JhbCBzdHJ1Y3R1cmVzIHRvbyAod2l0 aCBjb21wX211dGV4IHByb3RlY3RpbmcgbWFzdGVyKS4gSG93ZXZlcgogICAnc3RydWN0IGludGVs X2hkY3BfZ3NjX21lc3NhZ2UnIGlzIHVzZWQgYXQgYSBwZXItY29ubmVjdG9yIGxldmVsIChidXQg b25seSBmb3IgYWN0aXZlCiAgIGNvbm5lY3RvcnMgd2hpY2ggY2Fubm90IGV4aXN0IHdpdGhvdXQg YW4gYXR0YWNoZWQgY3J0YykuCjMuIFRoYXQgc2FpZCwgYWx0aG91Z2ggd2UgZG8gdXNlIGNvbXBf bXV0ZXggZm9yIGFsbCB0aGUgY29ubmVjdG9yIGxldmVsIGhkY3AgYWN0aXZpdHksCiAgIHRob3Nl IGFjdGl2aXRpZXMgc2l0IGJlaGluZCBhIGdsb2JhbCBsb2NrIGFuZCBjb21wb25lbnQgaW50ZXJm YWNlLiBUbyBtZSB0aGlzIGxvb2tzCiAgIGluZWZmaWNpZW50IGJlY2F1c2Ugd2UgYXJlIGZvcmNp bmcgc2VyaWFsaXphdGlvbiBvZiBoZGNwIG9wZXJhdGlvbnMgYWNyb3NzIGFsbCB0aGUKICAgY29u bmVjdG9ycyB3aXRoIGFjdGl2ZSBoZGNwIG9wZXJhdG9pbi4gUHV0dGluZyBhbiBpbnN0YW5jZSBv ZiBoZGNwX21lc3NhZ2UgcGVyIGNvbm5lY3RvcgogICB3aWxsIGFsbG93IHBhcmFsbGVsaXNtIGFu ZCByZWR1Y2Ugb3ZlcmFsbCBsYXRlbmNpZXMuIChwZXJoYXBzIGF0dGFjaGluZyBoZGNwX21lc3Nh Z2UKICAgdG8gY3J0YyB3b3JrcyBiZXR0ZXIgYXMgd2UgbWlnaHQgaGF2ZSBtb3JlIGxvZ2ljYWwg Y29ubmVjdG9ycyB0aGFuIGFjdGl2ZSAtIGNhcHBlZAogICBzdHJpY3RseSBieSBuby4gb2YgY3J0 Y3MpLgo0LiBJIGFtIGF3YXJlIHRoYXQgaW4gdGhlIHBhc3Qgd2Ugd291bGRuJ3QgaGF2ZSBnYWlu ZWQgYW55dGhpbmcgYnkgc3VjaCBwYXJhbGVsbGlzbSBzaW5jZQogICB0aGUgaGRjcCBpbnRlcmFj dGlvbnMgd291bGQgaGF2ZSB0byBiZSBzZXJpYWxpemVkIGJlaGluZCB0aGUgaGRjcCBjb21wb25l bnQgaW50ZXJmYWNlCiAgIGFueXdheS4gVG9kYXksIHdpdGggdGhlIGdzYyBlbmdpbmUsIHdlIGNv dWxkIHRyeSB0byBwYXJhbGxlbGl6ZSBzdHVmZiBhIGJpdCBtb3JlPwogICAoYnV0IG5vdCBjb21w bGV0ZWx5IHNpbmNlIHRoZXJlIGlzIG9ubHkgb25lIGdzYyBmaXJtd2FyZSBhbmQgSSBjYW4ndCBy ZWNhbGwgaWYgdGhlIEdTQyBmdwogICBjYW4gb3BlcmF0ZSBvbiBoZGNwIHJlcXVlc3RzIGluIHBh cmFsbGVsIGFuZCBpZiB0aGV5IHN1cHBvcnQgZGlmZmVyZW50IGhvc3Qtc2Vzc2lvbi0KICAgaGFu ZGxlcyBwZXIgZGlzcGxheSBwaXBlKS4gQXMgc3VjaCwgSSBhbSBub3Qgc3VyZSBpZiB0aGlzIGFz ayBjYW4gZ2FpbiBhbnkgdmFsdWUgZWZmb3J0CiAgICh0aGlua2luZyBhYm91dCBkZWFsaW5nIHdp dGggMiAzIG9yIG1vcmUgY3J0Y3MgYWxsIHdpdGggSERDUCBlbmFibGVkIGFuZCBkb2luZyBsb25n ZXIKICAgb3BlcmF0aW9ucyBsaWtlIHJlLWVzdGFibGlzaGluZyB0aGUgaGRjcCBsaW5rKS4gRG8g eW91IHRoaW5rIGl0cyB3b3J0aCBpdD8KICAgQnV0IGkgYW0gbm90IHN1cmUgYWJvdXQgd2hldGhl ciB0aGlzIHdpbGwgd29yayB3aXRoIGRpc3BsYXkgdGVhbSBkaXJlY3Rpb24gKGkuZS4ga2VlcGlu ZwogICB0aGUgaGRjcCBpbnN0cnVjdGlvbnMgYXMgcGFydCBvZiB0aGUgY29tcG9uZW50IGRyaXZl cikuCiAgIFRodXMsIHRoaXMgd291bGQgYmUgeW91ciBhbmQgZGlzcGxheSB0ZWFtJ3MgY2FsbCwg bm90IG1pbmUuCjUuIEV2ZW50IGlmICM0IGlzICJsZXRzIG5vdCBtb3ZlIGhkY3BfbWVzc2FnZSB0 byBjb25uZWN0b3IgbGV2ZWwiLCBpIGJlbGlldmUgaXQgbG9va3MgbGlrZQogICB5b3UgY2FuIGFs bG9jYXRlIGFuZCBmcmVlIHRoZSBoZGNwX21lc3NhZ2UgYXQgY29ubmVjdG9yIGxldmVsIGhkY3Ag aW5pdCBhbmQgdGVhcmRvd24gd2l0aG91dAogICBjaGVja2luZyBpZiBpdHMgYmVlbiBhbGxvY2F0 ZWQgYmVmb3JlIGlmIG11bHRpcGxlIGNvbm5lY3RvcnMgYXJlIGN1cnJlbnRseSBiZWluZyBlbmFi bGVkIG9yCiAgIGFscmVhZHkgYWN0aXZlLiBQbGVhc2UgY29ycmVjdCBtZSBpZiBpIGFtIG1pc3Rh a2VuLgoKCj4gwqDCoMKgwqDCoMKgwqDCoH0gaGRjcDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZGNwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2hkY3AuYwo+IGluZGV4IDBkNmFlZDFlYjE3MS4uYzU3OGZjYzM0YmZkIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRjcC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZGNwLmMKPiBAQCAtMjMs NiArMjMsNyBAQAo+IMKgI2luY2x1ZGUgImludGVsX2Rpc3BsYXlfcG93ZXJfd2VsbC5oIgo+IMKg I2luY2x1ZGUgImludGVsX2Rpc3BsYXlfdHlwZXMuaCIKPiDCoCNpbmNsdWRlICJpbnRlbF9oZGNw LmgiCj4gKyNpbmNsdWRlICJpbnRlbF9oZGNwX2dzYy5oIgo+IMKgI2luY2x1ZGUgImludGVsX2hk Y3BfcmVncy5oIgo+IMKgI2luY2x1ZGUgImludGVsX3Bjb2RlLmgiCj4gwqAKPiBAQCAtMTk2Niwx MiArMTk2NywyOCBAQCBzdGF0aWMgaW50IF9pbnRlbF9oZGNwMl9lbmFibGUoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsK PiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfaGRjcF9nc2NfbWVzc2FnZSAqaGRjcF9tZXNz YWdlOwo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGRy bV9kYmdfa21zKCZpOTE1LT5kcm0sICJbJXM6JWRdIEhEQ1AyLjIgaXMgYmVpbmcgZW5hYmxlZC4g VHlwZTogJWRcbiIsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29u bmVjdG9yLT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+YmFzZS5iYXNlLmlkLAo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGhkY3AtPmNvbnRlbnRfdHlwZSk7Cj4gwqAKPiAr wqDCoMKgwqDCoMKgwqBpZiAoRElTUExBWV9WRVIoaTkxNSkgPj0gMTQpIHsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaGRjcF9tZXNzYWdlID0ga3phbGxvYyhzaXplb2YoKmhkY3Bf bWVzc2FnZSksIEdGUF9LRVJORUwpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKCFoZGNwX21lc3NhZ2UpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gLUVOT01FTTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGk5MTUtPmRpc3BsYXkuaGRjcC5oZGNwX21lc3NhZ2UgPSBoZGNwX21lc3NhZ2U7 CmFsYW46IG5vbi1ibG9ja2VyOiBob25lc3RseSwganVzdCByZWFkaW5nIHRoaXMgY29kZSBsb29r cyBhIGJpdCBvZiBhbiBpc3N1ZSAod2UgYXJlCm92ZXJyaWRpbmcgYSBnbG9iYWwncyBtZW1iZXIt cHRyIGZyb20gaW5zaWRlIGEgY29ubmVjdG9yIGxldmVsIGZ1bmN0aW9uKS4gUGVyaGFwcyBhCmNv bW1lbnQgdGhhdCBzYXlzIHNvbWV0aGluZyBsaWtlIDogTm90ZTogYW55IGNvbm5lY3RvciBsZXZl bCBoZGNwIGZ1bmN0aW9uIHdvdWxkIGhhdmUKYWxyZWFkeSB0YWtlbiBkaXNwbGF5LT5oZGNwLT5j b21wX211dGV4IGZhcnRoZXIgdXAgdGhlIHN0YWNrIHNvIHdlIGNhbiBuZXZlciB0cmFtcGxlCmhk Y3BfbWVzc2FnZSBiZXR3ZWVuIGNvbm5lY3RvciBsZXZlbCBoZGNwIGZ1bmN0aW9ucyBjb25jdXJy ZW50bHkuIHRoaXMgaXMgcmVsYXRlZAp0byB0aGUgbGFzdCBxdWVzdGlvbiBpbiBteSBwb2ludCAj NSBhYm92ZS4KCgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSBpbnRlbF9o ZGNwX2dzY19pbml0aWFsaXplX21lc3NhZ2UoaTkxNSwgaGRjcF9tZXNzYWdlKTsKPiArCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQpIHsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRybV9lcnIoJmk5MTUtPmRybSwgIkNvdWxk IG5vdCBpbml0aWFsaXplIGhkY3BfbWVzc2FnZVxuIik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICsKPiDCoMKgwqDCoMKgwqDCoMKg cmV0ID0gaGRjcDJfYXV0aGVudGljYXRlX2FuZF9lbmNyeXB0KGNvbm5lY3Rvcik7Cj4gwqDCoMKg wqDCoMKgwqDCoGlmIChyZXQpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRy bV9kYmdfa21zKCZpOTE1LT5kcm0sICJIRENQMiBUeXBlJWTCoCBFbmFibGluZyBGYWlsZWQuICgl ZClcbiIsCj4gQEAgLTIwMTgsNiArMjAzNSw5IEBAIF9pbnRlbF9oZGNwMl9kaXNhYmxlKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBoZGNwMl9saW5rX3JlY292ZXJ5Cj4g wqDCoMKgwqDCoMKgwqDCoGlmIChoZGNwMl9kZWF1dGhlbnRpY2F0ZV9wb3J0KGNvbm5lY3Rvcikg PCAwKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtX2RiZ19rbXMoJmk5MTUt PmRybSwgIlBvcnQgZGVhdXRoIGZhaWxlZC5cbiIpOwo+IMKgCj4gK8KgwqDCoMKgwqDCoMKgaWYg KERJU1BMQVlfVkVSKGk5MTUpID49IDE0KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpbnRlbF9oZGNwX2dzY19mcmVlX21lc3NhZ2UoaTkxNSk7Cj4gKwo+IMKgwqDCoMKgwqDCoMKg wqBjb25uZWN0b3ItPmhkY3AuaGRjcDJfZW5jcnlwdGVkID0gZmFsc2U7Cj4gwqDCoMKgwqDCoMKg wqDCoGRpZ19wb3J0LT5oZGNwX2F1dGhfc3RhdHVzID0gZmFsc2U7Cj4gwqDCoMKgwqDCoMKgwqDC oGRhdGEtPmsgPSAwOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2hkY3BfZ3NjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hk Y3BfZ3NjLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uOGRh NGZhZjliMTBjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfaGRjcF9nc2MuYwo+IEBAIC0wLDAgKzEsMTg1IEBACj4gKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBNSVQKPiArLyoKPiArICogQ29weXJpZ2h0IDIwMjMsIEludGVsIENv cnBvcmF0aW9uLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJkaXNwbGF5L2ludGVsX2hkY3BfZ3Nj LmgiCj4gKyNpbmNsdWRlICJnZW0vaTkxNV9nZW1fcmVnaW9uLmgiCj4gKyNpbmNsdWRlICJndC91 Yy9pbnRlbF9nc2NfdWNfaGVjaV9jbWRfc3VibWl0LmgiCj4gKyNpbmNsdWRlICJpOTE1X2Rydi5o Igo+ICsjaW5jbHVkZSAiaTkxNV91dGlscy5oIgo+ICsKPiArLypUaGlzIGZ1bmN0aW9uIGhlbHBz IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGNvbW1hbmQgdGhhdCB3ZSB3aWxsIHNlbmQgdG8gZ3Nj IGNzICovCj4gK2ludCBpbnRlbF9oZGNwX2dzY19pbml0aWFsaXplX21lc3NhZ2Uoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgaW50ZWxfaGRj cF9nc2NfbWVzc2FnZSAqaGRjcF9tZXNzYWdlKQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0 IGludGVsX2d0ICpndCA9IGk5MTUtPm1lZGlhX2d0Owo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBOVUxMOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBp OTE1X3ZtYSAqdm1hID0gTlVMTDsKPiArwqDCoMKgwqDCoMKgwqB2b2lkICpjbWQ7Cj4gK8KgwqDC oMKgwqDCoMKgaW50IGVycjsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogYWxsb2NhdGUgb2JqZWN0 IG9mIG9uZSBwYWdlIGZvciBIRENQIGNvbW1hbmQgbWVtb3J5IGFuZCBzdG9yZSBpdCAqLwo+ICvC oMKgwqDCoMKgwqDCoG9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc2htZW0oaTkxNSwgUEFH RV9TSVpFKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaWYgKElTX0VSUihvYmopKSB7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRybV9lcnIoJmk5MTUtPmRybSwgIkZhaWxlZCB0byBh bGxvY2F0ZSBIRENQIHN0cmVhbWluZyBjb21tYW5kIVxuIik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHJldHVybiBQVFJfRVJSKG9iaik7Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICsK PiArwqDCoMKgwqDCoMKgwqBjbWQgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcF91bmxvY2tlZChv YmosIGk5MTVfY29oZXJlbnRfbWFwX3R5cGUoaTkxNSwgb2JqLCB0cnVlKSk7Cj4gK8KgwqDCoMKg wqDCoMKgaWYgKElTX0VSUihjbWQpKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRybV9lcnIoJmk5MTUtPmRybSwgIkZhaWxlZCB0byBtYXAgZ3NjIG1lc3NhZ2UgcGFnZSFcbiIp Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSBQVFJfRVJSKGNtZCk7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0X3VucGluOwo+ICvCoMKgwqDC oMKgwqDCoH0KPiArCj4gK8KgwqDCoMKgwqDCoMKgdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2Jq LCAmZ3QtPmdndHQtPnZtLCBOVUxMKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfRVJSKHZtYSkp IHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0gUFRSX0VSUih2bWEpOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG91dF91bm1hcDsKPiArwqDCoMKg wqDCoMKgwqB9Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGVyciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAs IDAsIFBJTl9HTE9CQUwpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChlcnIpCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0X3VubWFwOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBt ZW1zZXQoY21kLCAwLCBvYmotPmJhc2Uuc2l6ZSk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGhkY3Bf bWVzc2FnZS0+b2JqID0gb2JqOwpzZWUgYmVsb3cgY29tbWVudCBhYm91dCBwb3NzaWJsZSBvcHRp b24gdG8gZWxpbWluYXRlIGtlZXBpbmcgb2JqCj4gK8KgwqDCoMKgwqDCoMKgaGRjcF9tZXNzYWdl LT5oZGNwX2NtZCA9IGNtZDsKPiArwqDCoMKgwqDCoMKgwqBoZGNwX21lc3NhZ2UtPnZtYSA9IHZt YTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gKwo+ICtvdXRfdW5tYXA6Cj4gK8Kg wqDCoMKgwqDCoMKgaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmopOwo+ICtvdXRfdW5waW46 Cj4gK8KgwqDCoMKgwqDCoMKgaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ICvCoMKgwqDCoMKg wqDCoHJldHVybiBlcnI7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfaGRjcF9nc2NfZnJlZV9tZXNz YWdlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKg c3RydWN0IGludGVsX2hkY3BfZ3NjX21lc3NhZ2UgKmhkY3BfbWVzc2FnZSA9Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGk5MTUtPmRpc3BsYXkuaGRjcC5oZGNwX21lc3NhZ2U7Cj4gK8KgwqDCoMKg wqDCoMKgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGZldGNoX2FuZF96ZXJvKCZo ZGNwX21lc3NhZ2UtPm9iaik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmICghb2JqKQo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlm IChoZGNwX21lc3NhZ2UtPnZtYSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaTkx NV92bWFfdW5waW4oZmV0Y2hfYW5kX3plcm8oJmhkY3BfbWVzc2FnZS0+dm1hKSk7Cj4gKwo+ICvC oMKgwqDCoMKgwqDCoGk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAob2JqKTsKPiArwqDCoMKgwqDC oMKgwqBpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4gK8KgwqDCoMKgwqDCoMKga2ZyZWUoaGRj cF9tZXNzYWdlKTsKPiAKYWJvdmUgY2xlYW51cCBjb2RlIG1pZ2h0IGJlIHNpZ25pZmljYW50bHkg bWluaW1pemVkIC8gY2xlYW5lZCB1cCBieSB1c2luZwpqdXN0IGk5MTVfdm1hX3VucGluX2FuZF9y ZWxlYXNlKHZtYSwgSTkxNV9WTUFfUkVMRUFTRV9NQVApIHdoaWNoIHdpbGwgYWxzbwp1bm1hcCwg dW5waXQgYW5kIHJlbGVhc2UgdGhlIG9iamVjdCBpbnRlcm5hbGx5IGFuZCB3aXRoIHRoYXQKeW91 IGRvbid0IG5lZWQgdG8gY2FycnkgIm9iaiIgaW4gaGRjcF9tZXNzYWdlIGFueW1vcmUuCgo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IGludGVsX2dzY19zZW5kX3N5bmMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGludGVsX2dzY19tdGxfaGVhZGVyICpoZWFkZXIsIHU2 NCBhZGRyLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHNpemVfdCBtc2dfb3V0X2xlbikKPiArewo+ICvCoMKgwqDCoMKgwqDCoHN0 cnVjdCBpbnRlbF9ndCAqZ3QgPSBpOTE1LT5tZWRpYV9ndDsKPiArwqDCoMKgwqDCoMKgwqBpbnQg cmV0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqBoZWFkZXItPmZsYWdzID0gMDsKPiArwqDCoMKgwqDC oMKgwqByZXQgPSBpbnRlbF9nc2NfdWNfaGVjaV9jbWRfc3VibWl0X3BhY2tldCgmZ3QtPnVjLmdz YywgYWRkciwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGhlYWRl ci0+bWVzc2FnZV9zaXplLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgYWRkciwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1zZ19v dXRfbGVuICsgc2l6ZW9mKCpoZWFkZXIpKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAocmV0KSB7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRybV9lcnIoJmk5MTUtPmRybSwgImZhaWxl ZCB0byBzZW5kIGdzYyBIRENQIG1zZyAoJWQpXG4iLCByZXQpOwo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ICvCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDC oMKgwqAvKgo+ICvCoMKgwqDCoMKgwqDCoCAqIENoZWNraW5nIHZhbGlkaXR5IG1hcmtlciBmb3Ig bWVtb3J5IHNhbml0eQo+ICvCoMKgwqDCoMKgwqDCoCAqLwo+ICvCoMKgwqDCoMKgwqDCoGlmICho ZWFkZXItPnZhbGlkaXR5X21hcmtlciAhPSBHU0NfSEVDSV9WQUxJRElUWV9NQVJLRVIpIHsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtX2VycigmaTkxNS0+ZHJtLCAiaW52YWxp ZCB2YWxpZGl0eSBtYXJrZXJcbiIpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gLUVJTlZBTDsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlm IChoZWFkZXItPnN0YXR1cyAhPSAwKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRybV9lcnIoJmk5MTUtPmRybSwgImhlYWRlciBzdGF0dXMgaW5kaWNhdGVzIGVycm9yICVkXG4i LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaGVhZGVy LT5zdGF0dXMpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZB TDsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmIChoZWFkZXItPmZs YWdzICYgR1NDX09VVEZMQUdfTVNHX1BFTkRJTkcpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiAtRUFHQUlOOwo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiAr fQo+ICsKPiArLyoKPiArICogVGhpcyBmdW5jdGlvbiBjYW4gbm93IGJlIHVzZWQgZm9yIHNlbmRp bmcgcmVxdWVzdHMgYW5kIHdpbGwgYWxzbyBoYW5kbGUKPiArICogcmVjZWlwdCBvZiByZXBseSBt ZXNzYWdlcyBoZW5jZSBubyBkaWZmZXJlbnQgZnVuY3Rpb24gb2YgbWVzc2FnZSByZXRyaWV2YWwK PiArICogaXMgcmVxdWlyZWQuIFdlIHdpbGwgaW5pdGlhbGl6ZSBpbnRlbF9oZGNwX2dzY19tZXNz YWdlIHN0cnVjdHVyZSB0aGVuIGFkZAo+ICsgKiBnc2MgY3MgbWVtb3J5IGhlYWRlciBhcyBzdGF0 ZWQgaW4gc3BlY3MgYWZ0ZXIgd2hpY2ggdGhlIG5vcm1hbCBIRENQIHBheWxvYWQKPiArICogd2ls bCBmb2xsb3cKPiArICovCj4gK3NzaXplX3QgaW50ZWxfaGRjcF9nc2NfbXNnX3NlbmQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU4ICptc2dfaW4sCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2l6ZV90IG1zZ19p bl9sZW4sIHU4ICptc2dfb3V0LCBzaXplX3QgbXNnX291dF9sZW4pCj4gK3sKPiArwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaTkxNS0+bWVkaWFfZ3Q7Cj4gK8KgwqDCoMKgwqDC oMKgc3RydWN0IGludGVsX2dzY19tdGxfaGVhZGVyICpoZWFkZXI7Cj4gK8KgwqDCoMKgwqDCoMKg Y29uc3Qgc2l6ZV90IG1heF9tc2dfc2l6ZSA9IFBBR0VfU0laRSAtIHNpemVvZigqaGVhZGVyKTsK PiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfaGRjcF9nc2NfbWVzc2FnZSAqaGRjcF9tZXNz YWdlOwo+ICvCoMKgwqDCoMKgwqDCoHU2NCBhZGRyLCBob3N0X3Nlc3Npb25faWQ7Cj4gK8KgwqDC oMKgwqDCoMKgdTMyIHJlcGx5X3NpemUsIG1zZ19zaXplOwo+ICvCoMKgwqDCoMKgwqDCoGludCBy ZXQsIHRyaWVzID0gMDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaWYgKCFpbnRlbF91Y191c2VzX2dz Y191YygmZ3QtPnVjKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1F Tk9ERVY7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmIChtc2dfaW5fbGVuID4gbWF4X21zZ19zaXpl IHx8IG1zZ19vdXRfbGVuID4gbWF4X21zZ19zaXplKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gLUVOT1NQQzsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaGRjcF9tZXNzYWdl ID0gaTkxNS0+ZGlzcGxheS5oZGNwLmhkY3BfbWVzc2FnZTsKPiArwqDCoMKgwqDCoMKgwqBoZWFk ZXIgPSBoZGNwX21lc3NhZ2UtPmhkY3BfY21kOwo+ICvCoMKgwqDCoMKgwqDCoGFkZHIgPSBpOTE1 X2dndHRfb2Zmc2V0KGhkY3BfbWVzc2FnZS0+dm1hKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgbXNn X3NpemUgPSBtc2dfaW5fbGVuICsgc2l6ZW9mKCpoZWFkZXIpOwo+ICvCoMKgwqDCoMKgwqDCoG1l bXNldChoZWFkZXIsIDAsIG1zZ19zaXplKTsKPiArwqDCoMKgwqDCoMKgwqBnZXRfcmFuZG9tX2J5 dGVzKCZob3N0X3Nlc3Npb25faWQsIHNpemVvZih1NjQpKTsKPiArwqDCoMKgwqDCoMKgwqBpbnRl bF9nc2NfdWNfaGVjaV9jbWRfZW1pdF9tdGxfaGVhZGVyKGhlYWRlciwgSEVDSV9NRUFERFJFU1Nf SERDUCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtc2dfc2l6ZSwgaG9zdF9z ZXNzaW9uX2lkKTsKPiArwqDCoMKgwqDCoMKgwqBtZW1jcHkoaGRjcF9tZXNzYWdlLT5oZGNwX2Nt ZCArIHNpemVvZigqaGVhZGVyKSwgbXNnX2luLCBtc2dfaW5fbGVuKTsKPiArCj4gK8KgwqDCoMKg wqDCoMKgLyoKPiArwqDCoMKgwqDCoMKgwqAgKiBLZWVwIHNlbmRpbmcgcmVxdWVzdCBpbiBjYXNl IHRoZSBwZW5kaW5nIGJpdCBpcyBzZXQgbm8gbmVlZCB0byBhZGQKPiArwqDCoMKgwqDCoMKgwqAg KiBtZXNzYWdlIGhhbmRsZSBhcyB3ZSBhcmUgdXNpbmcgc2FtZSBhZGRyZXNzIGhlbmNlIGxvYy4g b2YgaGVhZGVyIGlzCj4gK8KgwqDCoMKgwqDCoMKgICogc2FtZSBhbmQgaXQgd2lsbCBjb250YWlu IHRoZSBtZXNzYWdlIGhhbmRsZS4gd2Ugd2lsbCBzZW5kIHRoZSBtZXNzYWdlCj4gK8KgwqDCoMKg wqDCoMKgICogMjAgdGltZXMgZWFjaCBtZXNzYWdlIDUwIG1zIGFwYXJ0Cj4gK8KgwqDCoMKgwqDC oMKgICovCj4gK8KgwqDCoMKgwqDCoMKgZG8gewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXQgPSBpbnRlbF9nc2Nfc2VuZF9zeW5jKGk5MTUsIGhlYWRlciwgYWRkciwgbXNnX291 dF9sZW4pOwo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogT25seSB0cnkg YWdhaW4gaWYgZ3NjIHNheXMgc28gKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKHJldCAhPSAtRUFHQUlOKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgYnJlYWs7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBt c2xlZXAoNTApOwo+ICsKPiArwqDCoMKgwqDCoMKgwqB9IHdoaWxlICgrK3RyaWVzIDwgMjApOwo+ ICsKPiArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBnb3RvIGVycjsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogd2UgdXNlIHRoZSBzYW1lIG1l bSBmb3IgdGhlIHJlcGx5LCBzbyBoZWFkZXIgaXMgaW4gdGhlIHNhbWUgbG9jICovCj4gK8KgwqDC oMKgwqDCoMKgcmVwbHlfc2l6ZSA9IGhlYWRlci0+bWVzc2FnZV9zaXplIC0gc2l6ZW9mKCpoZWFk ZXIpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXBseV9zaXplID4gbXNnX291dF9sZW4pIHsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtX3dhcm4oJmk5MTUtPmRybSwgImNhbGxl ciB3aXRoIGluc3VmZmljaWVudCBIRENQIHJlcGx5IHNpemUgJXUgKCVkKVxuIiwKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXBseV9zaXplLCAodTMy KW1zZ19vdXRfbGVuKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVwbHlfc2l6 ZSA9IG1zZ19vdXRfbGVuOwo+ICvCoMKgwqDCoMKgwqDCoH0gZWxzZSBpZiAocmVwbHlfc2l6ZSAh PSBtc2dfb3V0X2xlbikgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkcm1fZGJn X2ttcygmaTkxNS0+ZHJtLCAiY2FsbGVyIHVuZXhwZWN0ZWQgSENEUCByZXBseSBzaXplICV1ICgl ZClcbiIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmVwbHlfc2l6ZSwgKHUzMiltc2dfb3V0X2xlbik7Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ ICsKPiArwqDCoMKgwqDCoMKgwqBtZW1jcHkobXNnX291dCwgaGRjcF9tZXNzYWdlLT5oZGNwX2Nt ZCArIHNpemVvZigqaGVhZGVyKSwgbXNnX291dF9sZW4pOwo+ICsKPiArZXJyOgo+ICvCoMKgwqDC oMKgwqDCoHJldHVybiByZXQ7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9oZGNwX2dzYy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9oZGNwX2dzYy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw MDAwMDAuLjgzNTJiMzFhN2U0YQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkY3BfZ3NjLmgKPiBAQCAtMCwwICsxLDI3IEBACj4gKy8q IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KPiArLyoKPiArICogQ29weXJpZ2h0IMKp IDIwMjMgSW50ZWwgQ29ycG9yYXRpb24KPiArICovCj4gKwo+ICsjaWZuZGVmIF9fSU5URUxfSERD UF9HU0NfSF9fCj4gKyNkZWZpbmUgX19JTlRFTF9IRENQX0dTQ19IX18KPiArCj4gKyNpbmNsdWRl IDxsaW51eC9lcnIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gKwo+ICtzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZTsKPiArCj4gK3N0cnVjdCBpbnRlbF9oZGNwX2dzY19tZXNzYWdlIHsK PiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICvCoMKg wqDCoMKgwqDCoHN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICvCoMKgwqDCoMKgwqDCoHZvaWQgKmhk Y3BfY21kOwo+ICt9Owo+ICsKPiAraW50IGludGVsX2hkY3BfZ3NjX2luaXRpYWxpemVfbWVzc2Fn ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVj dCBpbnRlbF9oZGNwX2dzY19tZXNzYWdlICpoZGNwX21lc3NhZ2UpOwo+ICt2b2lkIGludGVsX2hk Y3BfZ3NjX2ZyZWVfbWVzc2FnZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gK3Nz aXplX3QgaW50ZWxfaGRjcF9nc2NfbXNnX3NlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIHU4ICptc2dfaW4sCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2l6ZV90IG1zZ19pbl9sZW4sIHU4ICptc2dfb3V0LAo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHNpemVfdCBtc2dfb3V0X2xlbik7Cj4gKwo+ICsjZW5kaWYgLyogX19JTlRFTF9IRENQ X0dDU19IX18gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfZ3NjX3VjX2hlY2lfY21kX3N1Ym1pdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMv aW50ZWxfZ3NjX3VjX2hlY2lfY21kX3N1Ym1pdC5jCj4gaW5kZXggYmUyNDI0YWY1MjFkLi5lYTBk YTA2ZTJmMzkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf Z3NjX3VjX2hlY2lfY21kX3N1Ym1pdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv dWMvaW50ZWxfZ3NjX3VjX2hlY2lfY21kX3N1Ym1pdC5jCj4gQEAgLTkyLDMgKzkyLDE4IEBAIGlu dCBpbnRlbF9nc2NfdWNfaGVjaV9jbWRfc3VibWl0X3BhY2tldChzdHJ1Y3QgaW50ZWxfZ3NjX3Vj ICpnc2MsIHU2NCBhZGRyX2luLAo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBlcnI7Cj4g wqB9Cj4gKwo+ICt2b2lkIGludGVsX2dzY191Y19oZWNpX2NtZF9lbWl0X210bF9oZWFkZXIoc3Ry dWN0IGludGVsX2dzY19tdGxfaGVhZGVyICpoZWFkZXIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdTggaGVjaV9jbGllbnRfaWQsIHUzMiBtZXNzYWdlX3NpemUsCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdTY0IGhvc3Rfc2Vzc2lvbl9pZCkKPiArewo+ICvCoMKgwqDCoMKgwqDC oGhvc3Rfc2Vzc2lvbl9pZCAmPSB+SE9TVF9TRVNTSU9OX01BU0s7Cj4gK8KgwqDCoMKgwqDCoMKg aWYgKGhlY2lfY2xpZW50X2lkID09IEhFQ0lfTUVBRERSRVNTX1BYUCkKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaG9zdF9zZXNzaW9uX2lkIHw9IEhPU1RfU0VTU0lPTl9QWFBfU0lO R0xFOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBoZWFkZXItPnZhbGlkaXR5X21hcmtlciA9IEdTQ19I RUNJX1ZBTElESVRZX01BUktFUjsKPiArwqDCoMKgwqDCoMKgwqBoZWFkZXItPmhlY2lfY2xpZW50 X2lkID0gaGVjaV9jbGllbnRfaWQ7Cj4gK8KgwqDCoMKgwqDCoMKgaGVhZGVyLT5ob3N0X3Nlc3Np b25faGFuZGxlID0gaG9zdF9zZXNzaW9uX2lkOwo+ICvCoMKgwqDCoMKgwqDCoGhlYWRlci0+aGVh ZGVyX3ZlcnNpb24gPSBNVExfR1NDX0hFQURFUl9WRVJTSU9OOwo+ICvCoMKgwqDCoMKgwqDCoGhl YWRlci0+bWVzc2FnZV9zaXplID0gbWVzc2FnZV9zaXplOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2dzY191Y19oZWNpX2NtZF9zdWJtaXQuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2dzY191Y19oZWNpX2NtZF9zdWJtaXQu aAo+IGluZGV4IGNmNjEwZGZjYTdhNS4uM2Q1NmFlNTAxOTkxIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2dzY191Y19oZWNpX2NtZF9zdWJtaXQuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2dzY191Y19oZWNpX2NtZF9zdWJt aXQuaAo+IEBAIC0yMiw3ICsyMiwxNyBAQCBzdHJ1Y3QgaW50ZWxfZ3NjX210bF9oZWFkZXIgewo+ IMKgwqDCoMKgwqDCoMKgwqB1MTYgaGVhZGVyX3ZlcnNpb247Cj4gwqAjZGVmaW5lIE1UTF9HU0Nf SEVBREVSX1ZFUlNJT04gMQo+IMKgCj4gK8KgwqDCoMKgwqDCoMKgLyoKPiArwqDCoMKgwqDCoMKg wqAgKiBGVyBhbGxvd3MgaG9zdCB0byBkZWNpZGUgaG9zdF9zZXNzaW9uIGhhbmRsZQo+ICvCoMKg wqDCoMKgwqDCoCAqIGFzIGl0IHNlZXMgZml0Lgo+ICvCoMKgwqDCoMKgwqDCoCAqIEZvciBpbnRl cnRyYWNlYmlsaXR5IHJlc2VydmluZyBzZWxlY3QgYml0cyg2MC02MykKPiArwqDCoMKgwqDCoMKg wqAgKiB0byBkaWZmZXJlbnRpYXRlIGNhbGxlci10YXJnZXQgc3Vic3lzdGVtCj4gK8KgwqDCoMKg wqDCoMKgICogMDAwMCAtIEhEQ1AKPiArwqDCoMKgwqDCoMKgwqAgKiAwMDAxIC0gUFhQIFNpbmds ZSBTZXNzaW9uCj4gK8KgwqDCoMKgwqDCoMKgICovCj4gwqDCoMKgwqDCoMKgwqDCoHU2NCBob3N0 X3Nlc3Npb25faGFuZGxlOwo+ICsjZGVmaW5lIEhPU1RfU0VTU0lPTl9NQVNLwqDCoMKgwqDCoMKg UkVHX0dFTk1BU0s2NCg2MywgNjApCj4gKyNkZWZpbmUgSE9TVF9TRVNTSU9OX1BYUF9TSU5HTEUg QklUX1VMTCg2MCkKPiDCoMKgwqDCoMKgwqDCoMKgdTY0IGdzY19tZXNzYWdlX2hhbmRsZTsKPiDC oAo+IMKgwqDCoMKgwqDCoMKgwqB1MzIgbWVzc2FnZV9zaXplOyAvKiBsb3dlciAyMCBiaXRzIG9u bHksIHVwcGVyIDEyIGFyZSByZXNlcnZlZCAqLwo+IEBAIC0zMyw4ICs0MywxMSBAQCBzdHJ1Y3Qg aW50ZWxfZ3NjX210bF9oZWFkZXIgewo+IMKgwqDCoMKgwqDCoMKgwqAgKiBCaXQgMTogU2Vzc2lv biBDbGVhbnVwOwo+IMKgwqDCoMKgwqDCoMKgwqAgKiBCaXRzIDItMTU6IEZsYWdzCj4gwqDCoMKg wqDCoMKgwqDCoCAqIEJpdHMgMTYtMzE6IEV4dGVuc2lvbiBTaXplCj4gK8KgwqDCoMKgwqDCoMKg ICogQWNjb3JkaW5nIHRvIGludGVybmFsIHNwZWMgZmxhZ3MgYXJlIGVpdGhlciBpbnB1dCBvciBv dXRwdXQKPiArwqDCoMKgwqDCoMKgwqAgKiB3ZSBkaXN0aW5ndWlzaCB0aGUgZmxhZ3MgdXNpbmcg T1VURkxBRyBvciBJTkZMQUcKPiDCoMKgwqDCoMKgwqDCoMKgICovCj4gwqDCoMKgwqDCoMKgwqDC oHUzMiBmbGFnczsKPiArI2RlZmluZSBHU0NfT1VURkxBR19NU0dfUEVORElOR8KgwqDCoMKgwqDC oMKgwqAxCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdTMyIHN0YXR1czsKPiDCoH0gX19wYWNrZWQ7 Cj4gQEAgLTQyLDQgKzU1LDcgQEAgc3RydWN0IGludGVsX2dzY19tdGxfaGVhZGVyIHsKPiDCoGlu dCBpbnRlbF9nc2NfdWNfaGVjaV9jbWRfc3VibWl0X3BhY2tldChzdHJ1Y3QgaW50ZWxfZ3NjX3Vj ICpnc2MsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1NjQgYWRkcl9pbiwgdTMyIHNpemVfaW4s Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1NjQgYWRkcl9vdXQsIHUzMiBzaXplX291dCk7Cj4g K3ZvaWQgaW50ZWxfZ3NjX3VjX2hlY2lfY21kX2VtaXRfbXRsX2hlYWRlcihzdHJ1Y3QgaW50ZWxf Z3NjX210bF9oZWFkZXIgKmhlYWRlciwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1OCBo ZWNpX2NsaWVudF9pZCwgdTMyIG1lc3NhZ2Vfc2l6ZSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1NjQgaG9zdF9zZXNzaW9uX2lkKTsKPiDCoCNlbmRpZgo+IC0tIAo+IDIuMjUuMQo+IAoK