From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id AAB5EA0545; Tue, 21 Jun 2022 18:50:22 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 522DF4069C; Tue, 21 Jun 2022 18:50:22 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 3C1A540151 for ; Tue, 21 Jun 2022 18:50:21 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 25LAEgvR008696; Tue, 21 Jun 2022 09:50:18 -0700 Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2177.outbound.protection.outlook.com [104.47.55.177]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3gse7nmpvk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 21 Jun 2022 09:50:17 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LpF/V8JOeo2KjxQS3Gr9fzMch1PnzryPhowaRMh96JkVBR9orvGN2leDxVAYzGkybFKTGw8HkxbSpw6+8gyfjDUte85oj5lxLRloXcjM6VywT14sPL3pymvtrtbK0dfdYCzL+B1eqb0UZprt2pcolS1VuiMJy9vrK+j9NSccxrs/oxmgVsSYgWcHzpLGzO37/YJqzAzVovK4faQbV3u20lheWD+pueigYN9U3E2nGSp0DXjJpRSJT2DPPBJdB6Bg880NRLzrSYPju3OE9Vbov6K2+ylPL4Pz1AgKjRNdn85M9pN7KUH7+dnqphappD24EUw5Fw47gvVYgm+fgrwbrg== 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=IkEb34p/oeRspPM7/B76r4E28F2FE5tsrV6MpL9Tlpw=; b=eVXZVQgYTDx1WWPR1QtxzKHar+8Ki3JJfTtujNogKkhuH+4aDTPQTRlkKk9YrjIk1ZI+fggDxPvRR64DE3YK6TN0OphEBxlbaOaFDmUhl3A2RR4Kn1vWqWWlBEFjtZ6x7F+ZqIRYCYTb7PVUCw1JHB/AzPqRkwoovJvILaNLqHVgIpL4N6hVuzC342UEoLEr5dFfi03L8aAAhuBpGU4iWFJGSesWVAvr+2ZT9n2NLuoddsxsQFFhRtnFzlloWNtvtZZN9RjoyDIU045uQXzyWVtQ8jHqL5xtqAjOOamDFeLM6GvbDV4WpspACVmk9EfPBTpcfU6AcE2Ia5DXZ/r2Qw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IkEb34p/oeRspPM7/B76r4E28F2FE5tsrV6MpL9Tlpw=; b=pjUeDwYQG79pKZoiL71qnob0VN5424BNoM5CZGthIcORiSkZj8s96KySs2d1odA/Uc/GTBIULjpyg6jo6tzShBSQORkSzmdaLemk8x4vieo/vk3jYP70zj3cgTrM1vQ5c1JihOZ23B6nEgfcVv1KiQMwTKyqnNbUxaW/vD+MSv0= Received: from CO6PR18MB3844.namprd18.prod.outlook.com (2603:10b6:5:340::7) by CH2PR18MB3125.namprd18.prod.outlook.com (2603:10b6:610:23::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.22; Tue, 21 Jun 2022 16:50:15 +0000 Received: from CO6PR18MB3844.namprd18.prod.outlook.com ([fe80::49a2:55d5:e27b:7038]) by CO6PR18MB3844.namprd18.prod.outlook.com ([fe80::49a2:55d5:e27b:7038%4]) with mapi id 15.20.5353.022; Tue, 21 Jun 2022 16:50:15 +0000 From: Rahul Bhansali To: Konstantin Ananyev CC: Jerin Jacob Kollanukkaran , "dev@dpdk.org" , Ruifeng Wang Subject: RE: [EXT] Re: [PATCH v2 1/2] examples/l3fwd: common packet group functionality Thread-Topic: [EXT] Re: [PATCH v2 1/2] examples/l3fwd: common packet group functionality Thread-Index: AQHYgh3mNRY3eOMteUWi8zAJsAPeuq1TOXOAgAW48wCAARoiIA== Date: Tue, 21 Jun 2022 16:50:15 +0000 Message-ID: References: <20220524095717.3875284-1-rbhansali@marvell.com> <20220617074241.3260496-1-rbhansali@marvell.com> <96dac197-a384-f14c-3704-26239a5781ae@yandex.ru> In-Reply-To: <96dac197-a384-f14c-3704-26239a5781ae@yandex.ru> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1613369c-7129-4d2d-431e-08da53a61d9f x-ms-traffictypediagnostic: CH2PR18MB3125:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ey2xcNoeIkvYu/5n3NkgmGvQX1GHjZsqk0gmrj0RgikUKrP3hA4jyJ3+Bc7E7Tovx8DBtD4ze1ouOmBRrJ1ZZnOzXaQj7FYgnB6v5tlW7zqoouAQQTJb0G8fGvqVeIlCuFYPYXIyxo3AfI7ZgiYOWuO+y3CBu5erpiUvmFx4hV4aVJB65ogM0N1+00oAvXGr0x13jjxCQZqkHeBbwWHg0gkDruZUBE2Nb/4Dfeb1qP8gajRL406/IaH47A2v5uOlKDw6Za24AITk4UkXPWy/Kvbq83oIkFG/yC82OvNIm/A9VAFbiPWqaO+jRT+UBQaM2rDxgTKEwJ/k1m5c8vqnwjbeBsY+4tcQi0+geIzsB6I5YA55HkRaxMbpYVHBrQn6Udu+kb214nO5QX6vfQUXJUg55A+uympD/KfHb6lqF8UYggWwG8nLjRPeyDCMPxSkrFfd+5x+92CnR4UM82BUdY0Fr+ZXGkNCNSjaU4+rf9yOrn8wpOxhBrA2Oq4M+SgOfzbIanrLne3P5j75hxjO81PWEBoA8C9uFyZm1VB2bNxGZY7dVuuw6rdeeeniI2qLYMSmIJOso6uTo8vRuFy00Q+pvDrRUZM4IMNokD20poSBft1I1JIBHJmTyStI5J3rb39GLVksgl2IDpuyMxl6u0jwuxFf1wT/EUvvmiw4fsepQnKLQFIBN+HXXpAbGsm0gItBkXOvibh6Pz/qxegwww== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CO6PR18MB3844.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(39860400002)(376002)(366004)(396003)(346002)(136003)(38100700002)(8676002)(38070700005)(122000001)(83380400001)(186003)(30864003)(33656002)(5660300002)(4326008)(52536014)(2906002)(55016003)(8936002)(316002)(53546011)(66556008)(64756008)(7696005)(6506007)(9686003)(66476007)(41300700001)(66946007)(66446008)(6916009)(71200400001)(478600001)(86362001)(76116006)(54906003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 2 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RUd2cGdjdEU4bTcybzdHWjl3bGlOeDlVK1lEY2t0MzlSREtsTDRkUWZvOHBN?= =?utf-8?B?SkVmYmRJOVlmNVl6TXV5UHhMR2dYWWppUE41NHBiWC8zaE5LZVl6RXBEc2d2?= =?utf-8?B?c0dlZVg3TE9KS0FZNm8yMEFIbnYwQ0kxNko2VUdTZGo0TGh6eGxTaTFNSzhR?= =?utf-8?B?RjRqSTRmcXlUdVp6bThUU25XQklCQVZ3eC9DK25GR0M5QllwNnV1eElhOTdi?= =?utf-8?B?N2JsMjV5Yit4NVprOUM1ZWlmMkNNWFFFUVpRL3A3aHNuTHhSQzRGK3JtVHVO?= =?utf-8?B?bGc1RERqcG8zZlVFNTk3Wkp5S3NjakhxekMrRXB3QUpIc1MvOU9uUGRvT29h?= =?utf-8?B?UHlBWHNLYkNXK3NFd3pua1FQcWNKdVozYXlPWTMvQWZUN0dGUWZrcDZQdndq?= =?utf-8?B?MWtTY0Z5QnpmdHVCV1psakRpa3AvWXRqSTUvWW42UEUrc1pVZkZ3dlhEWXJC?= =?utf-8?B?QkR2QjRCeFRoMlVkUVhwY2VIMXYwekdlaU15S3psUzAzNXlJNExKL2xkb3hN?= =?utf-8?B?eStkWWJOQ3FHSWxRVGI2ZWFQS2JmRXZPdlJ5a1prSUhMbEJ6Wjd4WUlCV1Nq?= =?utf-8?B?R1dZOFBBODdRVWYxeW9EQ0NFc0R6cDVNSnZvVDVRTlVLYVJFZzllL1JRWVdX?= =?utf-8?B?dUk0QzlkQmFFOFVPNkoxRkNBNG9OOUFvY1NnaDZaNlowVjVmQmN6bGs4VzNJ?= =?utf-8?B?Q3RXaXZyUEZHWStHbFhkdkdSNGlMYkpVV0pwMWdyNUNiTXJFV1pyeTliNkQ3?= =?utf-8?B?WnpIaGkvV2o2R3ZwcGU0ajFaaC9iN09WRERabTNJSHU2NENVbzlOQkJQUVhO?= =?utf-8?B?clFIclc5cW1BZ09jL1ZFUjlRdGxIelY5dUV0eWF3cTVEWkFacnNHMHR1UDJm?= =?utf-8?B?cWNGdDRkYVJzL2p1WkZnVTJ4by9DeHJEdG9HbFplUkNmekNaS01BZFBVVUh4?= =?utf-8?B?ZlBNc2NqRXIzTDZ4QmRYYkNyeThPMjlBYjI4c1M0OFlhUFJyWGh6cDZmeVFj?= =?utf-8?B?MXk4SGJlTHk0YmJRbStTYjdza3YwWElZRXpTbXNBVWF4cFJWMVNGTWtqd3BF?= =?utf-8?B?eEdWekFVN08yTlFrL2hLMEFBdVdNTXlGTjVnT0JkRkk3bHpCNmpYVUNVcWtx?= =?utf-8?B?aEc2ZWdZbDFsZjNBUjNpSFd4WG5xQTVNdUcveElCWHROOUcwVzRsUno2S1I1?= =?utf-8?B?cm5jbnNXUE1SQ0ZZRjhaWGQ2a0x3Q0lqbGw0cGsrYWx3ZlNsY0tRQnBaQnJu?= =?utf-8?B?M0l2S0JHZFVFdW5scUtPWWlPd2hBeDdyTEltMENlUzhpYXpBenVuTUtJNFNH?= =?utf-8?B?VU9iaVNWWTdwcS8wRjFBYjM2R09aZEYyQ0JNaVJ6UkJiQlRjbEk0ZWJBM1JS?= =?utf-8?B?SFNscWhVK0d6SmJsN3RwWlBFRDlML3ZEQldIMGx0Y3I5ck0rU0YvNVk3cVFs?= =?utf-8?B?OUxKbmVuV3NVTEY2ZUJ4cFR2LzlXcVE3K2tYeWNmYnlZcFRQbWZ5djhWd2J5?= =?utf-8?B?TUhJMGV4cUxTMlpaL3JRTlMwZUFyWEVya1cvU3o4bDdiNFZJTmpiZW8ycXVT?= =?utf-8?B?ZTZJUWpWTHRIUHEyTWk5czUzbXA5bmViTU5ueURweW9sMGI4UWxVcmVSbG9J?= =?utf-8?B?V2JkT0trd0NZTi85SzVrQ0w3ZTV5dXpkVFZkeCtSd09waUNZdUpYclhhTnpp?= =?utf-8?B?eGdudDFMaUR4c2JGMkpkQXo0TFRNVnM2c0RzbExhYXBVek9EditML3RERjln?= =?utf-8?B?dGJZNEE2Q292aEZJKy9qQkZ4OVZQbzlmWGxjYjdjR3ZPdkNZbFhLSC84MnNN?= =?utf-8?B?ZFZ5RFJtT3NHMkNRcGprMjhjcHFMa1oyRC9DcG8zUmpQdjQ1eGRVbDdueFZT?= =?utf-8?B?T05LUGdrWmFWazZURGZzQnVheFJ4WjhtSEtlSnorVkRDYi9FU0pFQWtUZXJU?= =?utf-8?B?SkVwb3dURGlrQjRPcEV0TklWUWRNSHN6dVBFYVU0eHVLcEJBemRJbmVsenB4?= =?utf-8?B?a0s1Y3Q3a2VnUHN6dEtYMVVTSzZ1WWE1T01TQUx6V0F0QloxUytCU0NGNTdB?= =?utf-8?B?OVgyY2RCM2J1cGVoY2xVVzdMaE9INExEWHI0WTNiN2lSYmNmRUpxQnNQdlh6?= =?utf-8?B?cE9Eeld1eFJDbWVhcjRoZnpQYXFzM1R6QkU2TWRqaEtsaDNyV3FyeXBBYUZV?= =?utf-8?B?c2hrM2xBazVCajB6QkxNRmIxRTBmeFBFVXIzWm8rZEduUUM4OU1TdXl4dEZC?= =?utf-8?B?RWRlRlM3QXl5YmVtQi9pdDBHVE9kV0hoamNIYyttY0VYbEMrbnl1RE1qeVo2?= =?utf-8?B?L0RPSThqSUorUlNHb1lZc0lCcXVBdWhSTHN6WEhyNkFpV1FGWjRBckpRenVr?= =?utf-8?Q?b4zLn8DZd+hAZdLDT4usWRCCTl9xkm+DsLKdB7OrAcG+Y?= x-ms-exchange-antispam-messagedata-1: WsH11DD2fnmeRw== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO6PR18MB3844.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1613369c-7129-4d2d-431e-08da53a61d9f X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Jun 2022 16:50:15.2843 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mZJThAoPYaeZyJ85rirG/iTLmw642Q681OnXO5ii9vtipWOuot65hy2y+xO7JEtSZvN9tVmokaokKCOXiKXcew== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR18MB3125 X-Proofpoint-GUID: WGLqw0yB1YYPoeo_ntGpoLZol7oS6wOu X-Proofpoint-ORIG-GUID: WGLqw0yB1YYPoeo_ntGpoLZol7oS6wOu X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.64.514 definitions=2022-06-21_08,2022-06-21_01,2022-02-23_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS29uc3RhbnRpbiBBbmFu eWV2IDxrb25zdGFudGluLnYuYW5hbnlldkB5YW5kZXgucnU+DQo+IFNlbnQ6IFR1ZXNkYXksIEp1 bmUgMjEsIDIwMjIgNDo0MyBBTQ0KPiBUbzogUmFodWwgQmhhbnNhbGkgPHJiaGFuc2FsaUBtYXJ2 ZWxsLmNvbT47IGRldkBkcGRrLm9yZzsgUnVpZmVuZyBXYW5nDQo+IDxydWlmZW5nLndhbmdAYXJt LmNvbT4NCj4gQ2M6IEplcmluIEphY29iIEtvbGxhbnVra2FyYW4gPGplcmluakBtYXJ2ZWxsLmNv bT4NCj4gU3ViamVjdDogW0VYVF0gUmU6IFtQQVRDSCB2MiAxLzJdIGV4YW1wbGVzL2wzZndkOiBj b21tb24gcGFja2V0IGdyb3VwDQo+IGZ1bmN0aW9uYWxpdHkNCj4gDQo+IEV4dGVybmFsIEVtYWls DQo+IA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IDE3LzA2LzIwMjIgMDg6NTAsIFJhaHVsIEJoYW5zYWxp INC/0LjRiNC10YI6DQo+ID4gQ0M6IEtvbnN0YW50aW4gQW5hbnlldg0KPiA+DQo+ID4+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IFJhaHVsIEJoYW5zYWxpIDxyYmhhbnNh bGlAbWFydmVsbC5jb20+DQo+ID4+IFNlbnQ6IEZyaWRheSwgSnVuZSAxNywgMjAyMiAxOjEzIFBN DQo+ID4+IFRvOiBkZXZAZHBkay5vcmc7IFJ1aWZlbmcgV2FuZyA8cnVpZmVuZy53YW5nQGFybS5j b20+DQo+ID4+IENjOiBKZXJpbiBKYWNvYiBLb2xsYW51a2thcmFuIDxqZXJpbmpAbWFydmVsbC5j b20+OyBSYWh1bCBCaGFuc2FsaQ0KPiA+PiA8cmJoYW5zYWxpQG1hcnZlbGwuY29tPg0KPiA+PiBT dWJqZWN0OiBbUEFUQ0ggdjIgMS8yXSBleGFtcGxlcy9sM2Z3ZDogY29tbW9uIHBhY2tldCBncm91 cA0KPiA+PiBmdW5jdGlvbmFsaXR5DQo+ID4+DQo+ID4+IFRoaXMgd2lsbCBtYWtlIHRoZSBwYWNr ZXQgZ3JvdXBpbmcgZnVuY3Rpb24gY29tbW9uLCBzbyB0aGF0IG90aGVyDQo+ID4+IGV4YW1wbGVz IGNhbiB1dGlsaXplIGFzIHBlciBuZWVkLg0KPiA+Pg0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBSYWh1 bCBCaGFuc2FsaSA8cmJoYW5zYWxpQG1hcnZlbGwuY29tPg0KPiA+PiAtLS0NCj4gPj4gQ2hhbmdl cyBpbiB2MjogTmV3IHBhdGNoIHRvIGFkZHJlc3MgcmV2aWV3IGNvbW1lbnQuDQo+ID4+DQo+ID4+ ICAgZXhhbXBsZXMvY29tbW9uL25lb25fY29tbW9uLmggfCAgNTAgKysrKysrKysrKysrDQo+ID4+ ICAgZXhhbXBsZXMvY29tbW9uL3BrdF9ncm91cC5oICAgfCAxMzkNCj4gPj4gKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKw0KPiA+PiAgIGV4YW1wbGVzL2wzZndkL01ha2VmaWxlICAg ICAgIHwgICA1ICstDQo+ID4+ICAgZXhhbXBsZXMvbDNmd2QvbDNmd2QuaCAgICAgICAgfCAgIDIg LQ0KPiA+PiAgIGV4YW1wbGVzL2wzZndkL2wzZndkX2NvbW1vbi5oIHwgMTI5ICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPj4gICBleGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9uZW9uLmgg ICB8ICA0MyArLS0tLS0tLS0tLQ0KPiA+PiAgIGV4YW1wbGVzL21lc29uLmJ1aWxkICAgICAgICAg IHwgICAyICstDQo+ID4+ICAgNyBmaWxlcyBjaGFuZ2VkLCAxOTggaW5zZXJ0aW9ucygrKSwgMTcy IGRlbGV0aW9ucygtKSAgY3JlYXRlIG1vZGUNCj4gPj4gMTAwNjQ0IGV4YW1wbGVzL2NvbW1vbi9u ZW9uX2NvbW1vbi5oICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPj4gZXhhbXBsZXMvY29tbW9uL3Br dF9ncm91cC5oDQo+ID4+DQo+ID4+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9jb21tb24vbmVvbl9j b21tb24uaA0KPiA+PiBiL2V4YW1wbGVzL2NvbW1vbi9uZW9uX2NvbW1vbi5oIG5ldyBmaWxlIG1v ZGUgMTAwNjQ0IGluZGV4DQo+ID4+IDAwMDAwMDAwMDAuLmYwMWI1YWI2YmMNCj4gPj4gLS0tIC9k ZXYvbnVsbA0KPiA+PiArKysgYi9leGFtcGxlcy9jb21tb24vbmVvbl9jb21tb24uaA0KPiA+PiBA QCAtMCwwICsxLDUwIEBADQo+ID4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMt Q2xhdXNlDQo+ID4+ICsgKiBDb3B5cmlnaHQoYykgMjAxNi0yMDE4IEludGVsIENvcnBvcmF0aW9u Lg0KPiA+PiArICogQ29weXJpZ2h0KGMpIDIwMTctMjAxOCBMaW5hcm8gTGltaXRlZC4NCj4gPj4g KyAqIENvcHlyaWdodChDKSAyMDIyIE1hcnZlbGwuDQo+ID4+ICsgKi8NCj4gPj4gKw0KPiA+PiAr I2lmbmRlZiBfTkVPTl9DT01NT05fSF8NCj4gPj4gKyNkZWZpbmUgX05FT05fQ09NTU9OX0hfDQo+ ID4+ICsNCj4gPj4gKyNpbmNsdWRlICJwa3RfZ3JvdXAuaCINCj4gPj4gKw0KPiA+PiArLyoNCj4g Pj4gKyAqIEdyb3VwIGNvbnNlY3V0aXZlIHBhY2tldHMgd2l0aCB0aGUgc2FtZSBkZXN0aW5hdGlv biBwb3J0IGluIGJ1cnN0cyBvZiA0Lg0KPiA+PiArICogU3VwcG9zZSB3ZSBoYXZlIGFycmF5IG9m IGRlc3RpbmF0aW9uIHBvcnRzOg0KPiA+PiArICogZHN0X3BvcnRbXSA9IHthLCBiLCBjLCBkLCwg ZSwgLi4uIH0NCj4gPj4gKyAqIGRwMSBzaG91bGQgY29udGFpbjogPGEsIGIsIGMsIGQ+LCBkcDI6 IDxiLCBjLCBkLCBlPi4NCj4gPj4gKyAqIFdlIGRvaW5nIDQgY29tcGFyaXNvbnMgYXQgb25jZSBh bmQgdGhlIHJlc3VsdCBpcyA0IGJpdCBtYXNrLg0KPiA+PiArICogVGhpcyBtYXNrIGlzIHVzZWQg YXMgYW4gaW5kZXggaW50byBwcmVidWlsZCBhcnJheSBvZiBwbnVtIHZhbHVlcy4NCj4gPj4gKyAq Lw0KPiA+PiArc3RhdGljIGlubGluZSB1aW50MTZfdCAqDQo+ID4+ICtuZW9uX3BvcnRfZ3JvdXB4 NCh1aW50MTZfdCBwbltGV0RTVEVQICsgMV0sIHVpbnQxNl90ICpscCwgdWludDE2eDhfdA0KPiBk cDEsDQo+ID4+ICsJCSAgdWludDE2eDhfdCBkcDIpDQo+ID4+ICt7DQo+ID4+ICsJdW5pb24gew0K PiA+PiArCQl1aW50MTZfdCB1MTZbRldEU1RFUCArIDFdOw0KPiA+PiArCQl1aW50NjRfdCB1NjQ7 DQo+ID4+ICsJfSAqcG51bSA9ICh2b2lkICopcG47DQo+ID4+ICsNCj4gPj4gKwl1aW50MTZ4OF90 IG1hc2sgPSB7MSwgMiwgNCwgOCwgMCwgMCwgMCwgMH07DQo+ID4+ICsJaW50MzJfdCB2Ow0KPiA+ PiArDQo+ID4+ICsJZHAxID0gdmNlcXFfdTE2KGRwMSwgZHAyKTsNCj4gPj4gKwlkcDEgPSB2YW5k cV91MTYoZHAxLCBtYXNrKTsNCj4gPj4gKwl2ID0gdmFkZHZxX3UxNihkcDEpOw0KPiA+PiArDQo+ ID4+ICsJLyogdXBkYXRlIGxhc3QgcG9ydCBjb3VudGVyLiAqL2hoDQo+ID4+ICsJbHBbMF0gKz0g Z3B0Ymxbdl0ubHB2Ow0KPiA+PiArCXJ0ZV9jb21waWxlcl9iYXJyaWVyKCk7DQo+ID4+ICsNCj4g Pj4gKwkvKiBpZiBkZXN0IHBvcnQgdmFsdWUgaGFzIGNoYW5nZWQuICovDQo+ID4+ICsJaWYgKHYg IT0gR1JQTVNLKSB7DQo+ID4+ICsJCXBudW0tPnU2NCA9IGdwdGJsW3ZdLnBudW07DQo+ID4+ICsJ CXBudW0tPnUxNltGV0RTVEVQXSA9IDE7DQo+ID4+ICsJCWxwID0gcG51bS0+dTE2ICsgZ3B0Ymxb dl0uaWR4Ow0KPiA+PiArCX0NCj4gPj4gKw0KPiA+PiArCXJldHVybiBscDsNCj4gPj4gK30NCj4g DQo+IFRoYW5rcyBmb3IgdGhlIGVmZm9ydC4NCj4gQXMgSSBjYW4gc2VlIHRoaXMgZnVuY3Rpb246 IHBvcnRfZ3JvdXB4NCgpIGlzIG5lYXJseSBpZGVudGljYWwgZm9yIGFsbCAzDQo+IHBsYXRmb3Jt czogc3NlL25lbm9uL2FsdGl2ZWMgKGV4Y2VwdCBvZiBjb3Vyc2UgYnVpbHQtaW4gYXJjaC1zcGVj aWZpYyBpbnN0aW5jdHMpLg0KPiBJbiBmYWN0LCBldmVuIGNvbWVtbnRzIGFyZSBpZGVudGljYWwu DQo+IEkgd29uZGVyIGNhbiB3ZSBoYXZlIHNvbWV0aGluZyBsaWtlOg0KPiBleGFtcGxlcy9jb21t b24vPGFyY2g+L3BvcnRfZ3JvdXAuaA0KPiBhbmQgZm9yIGVhY2ggYXJjaCB3aWxsIGhhdmUgZGVm aW5lZCBwb3J0X2dyb3VweDQoLi4uKSA/DQo+IA0KWWVzLCBJdOKAmXMgYSBnb29kIHBvaW50LiBJ IHdhcyB0aGlua2luZyB0byBoYXZlIGFyY2ggaW4gZmlsZSBuYW1lIGl0c2VsZi4gQnV0IHdlIGNh biBoYXZlIGFyY2ggc3BlY2lmaWMgZGlyZWN0b3J5IGFuZCBoYXZlIGRpZmZlcmVudCBoZWFkZXIg ZmlsZXMuDQpEbyB5b3Ugd2FudCBtZSB0byBtYWtlIGNoYW5nZXMgZm9yIGFsbCAzIHNzZS9uZW9u L2FsdGl2ZWMgb3IganVzdCBuZW9uID8NCkkgY2FuIGNoZWNrIGNvbXBpbGF0aW9uIGZvciBhbGwg YnV0IGZ1bmN0aW9uYWxpdHkvcGVyZiB2YWxpZGF0ZSBmb3IgTmVvbiBvbmx5Lg0KDQo+ID4+ICsN Cj4gPj4gKyNlbmRpZiAvKiBfTkVPTl9DT01NT05fSF8gKi8NCj4gPj4gZGlmZiAtLWdpdCBhL2V4 YW1wbGVzL2NvbW1vbi9wa3RfZ3JvdXAuaA0KPiA+PiBiL2V4YW1wbGVzL2NvbW1vbi9wa3RfZ3Jv dXAuaCBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleA0KPiA+PiAwMDAwMDAwMDAwLi44YjI2ZDkz ODBmDQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrIGIvZXhhbXBsZXMvY29tbW9uL3BrdF9n cm91cC5oDQo+ID4+IEBAIC0wLDAgKzEsMTM5IEBADQo+ID4+ICsvKiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4+ICsgKiBDb3B5cmlnaHQoYykgMjAxNi0yMDE4IElu dGVsIENvcnBvcmF0aW9uLg0KPiA+PiArICogQ29weXJpZ2h0KGMpIDIwMTctMjAxOCBMaW5hcm8g TGltaXRlZC4NCj4gPj4gKyAqIENvcHlyaWdodChDKSAyMDIyIE1hcnZlbGwuDQo+ID4+ICsgKi8N Cj4gPj4gKw0KPiA+PiArI2lmbmRlZiBfUEtUX0dST1VQX0hfDQo+ID4+ICsjZGVmaW5lIF9QS1Rf R1JPVVBfSF8NCj4gPj4gKw0KPiA+PiArI2RlZmluZSBGV0RTVEVQCTQNCj4gPj4gKw0KPiA+PiAr LyoNCj4gPj4gKyAqIEdyb3VwIGNvbnNlY3V0aXZlIHBhY2tldHMgd2l0aCB0aGUgc2FtZSBkZXN0 aW5hdGlvbiBwb3J0IGludG8gb25lIGJ1cnN0Lg0KPiA+PiArICogVG8gYXZvaWQgZXh0cmEgbGF0 ZW5jeSB0aGlzIGlzIGRvbmUgdG9nZXRoZXIgd2l0aCBzb21lIG90aGVyDQo+ID4+ICtwYWNrZXQN Cj4gPj4gKyAqIHByb2Nlc3NpbmcsIGJ1dCBhZnRlciB3ZSBtYWRlIGEgZmluYWwgZGVjaXNpb24g YWJvdXQgcGFja2V0J3MgZGVzdGluYXRpb24uDQo+ID4+ICsgKiBUbyBkbyB0aGlzIHdlIG1haW50 YWluOg0KPiA+PiArICogcG51bSAtIGFycmF5IG9mIG51bWJlciBvZiBjb25zZWN1dGl2ZSBwYWNr ZXRzIHdpdGggdGhlIHNhbWUgZGVzdA0KPiA+PiArcG9ydCBmb3INCj4gPj4gKyAqIGVhY2ggcGFj a2V0IGluIHRoZSBpbnB1dCBidXJzdC4NCj4gPj4gKyAqIGxwIC0gcG9pbnRlciB0byB0aGUgbGFz dCB1cGRhdGVkIGVsZW1lbnQgaW4gdGhlIHBudW0uDQo+ID4+ICsgKiBkbHAgLSBkZXN0IHBvcnQg dmFsdWUgbHAgY29ycmVzcG9uZHMgdG8uDQo+ID4+ICsgKi8NCj4gPj4gKw0KPiA+PiArI2RlZmlu ZQlHUlBTWgkoMSA8PCBGV0RTVEVQKQ0KPiA+PiArI2RlZmluZQlHUlBNU0sJKEdSUFNaIC0gMSkN Cj4gPj4gKw0KPiA+PiArI2RlZmluZSBHUk9VUF9QT1JUX1NURVAoZGxwLCBkY3AsIGxwLCBwbiwg aWR4KQlkbyB7IFwNCj4gPj4gKwlpZiAobGlrZWx5KChkbHApID09IChkY3ApWyhpZHgpXSkpIHsg ICAgICAgICBcDQo+ID4+ICsJCShscClbMF0rKzsgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ID4+ICsJfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiA+PiArCQkoZGxwKSA9IChkY3ApW2lkeF07ICAgICAgICAgICAgICAgICAgXA0KPiA+PiArCQko bHApID0gKHBuKSArIChpZHgpOyAgICAgICAgICAgICAgICAgXA0KPiA+PiArCQkobHApWzBdID0g MTsgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+PiArCX0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gPj4gK30gd2hpbGUgKDApDQo+ID4+ICsNCj4g Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgew0KPiA+PiArCXVpbnQ2NF90IHBudW07IC8qIHByZWJ1 aWxkIDQgdmFsdWVzIGZvciBwbnVtW10uICovDQo+ID4+ICsJaW50MzJfdCAgaWR4OyAgLyogaW5k ZXggZm9yIG5ldyBsYXN0IHVwZGF0ZWQgZWxlbW5ldC4gKi8NCj4gPj4gKwl1aW50MTZfdCBscHY7 ICAvKiBhZGQgdmFsdWUgdG8gdGhlIGxhc3QgdXBkYXRlZCBlbGVtZW50LiAqLyB9DQo+ID4+ICtn cHRibFtHUlBTWl0gPSB7DQo+ID4+ICsJew0KPiA+PiArCQkvKiAwOiBhICE9IGIsIGIgIT0gYywg YyAhPSBkLCBkICE9IGUgKi8NCj4gPj4gKwkJLnBudW0gPSBVSU5UNjRfQygweDAwMDEwMDAxMDAw MTAwMDEpLA0KPiA+PiArCQkuaWR4ID0gNCwNCj4gPj4gKwkJLmxwdiA9IDAsDQo+ID4+ICsJfSwN Cj4gPj4gKwl7DQo+ID4+ICsJCS8qIDE6IGEgPT0gYiwgYiAhPSBjLCBjICE9IGQsIGQgIT0gZSAq Lw0KPiA+PiArCQkucG51bSA9IFVJTlQ2NF9DKDB4MDAwMTAwMDEwMDAxMDAwMiksDQo+ID4+ICsJ CS5pZHggPSA0LA0KPiA+PiArCQkubHB2ID0gMSwNCj4gPj4gKwl9LA0KPiA+PiArCXsNCj4gPj4g KwkJLyogMjogYSAhPSBiLCBiID09IGMsIGMgIT0gZCwgZCAhPSBlICovDQo+ID4+ICsJCS5wbnVt ID0gVUlOVDY0X0MoMHgwMDAxMDAwMTAwMDIwMDAxKSwNCj4gPj4gKwkJLmlkeCA9IDQsDQo+ID4+ ICsJCS5scHYgPSAwLA0KPiA+PiArCX0sDQo+ID4+ICsJew0KPiA+PiArCQkvKiAzOiBhID09IGIs IGIgPT0gYywgYyAhPSBkLCBkICE9IGUgKi8NCj4gPj4gKwkJLnBudW0gPSBVSU5UNjRfQygweDAw MDEwMDAxMDAwMjAwMDMpLA0KPiA+PiArCQkuaWR4ID0gNCwNCj4gPj4gKwkJLmxwdiA9IDIsDQo+ ID4+ICsJfSwNCj4gPj4gKwl7DQo+ID4+ICsJCS8qIDQ6IGEgIT0gYiwgYiAhPSBjLCBjID09IGQs IGQgIT0gZSAqLw0KPiA+PiArCQkucG51bSA9IFVJTlQ2NF9DKDB4MDAwMTAwMDIwMDAxMDAwMSks DQo+ID4+ICsJCS5pZHggPSA0LA0KPiA+PiArCQkubHB2ID0gMCwNCj4gPj4gKwl9LA0KPiA+PiAr CXsNCj4gPj4gKwkJLyogNTogYSA9PSBiLCBiICE9IGMsIGMgPT0gZCwgZCAhPSBlICovDQo+ID4+ ICsJCS5wbnVtID0gVUlOVDY0X0MoMHgwMDAxMDAwMjAwMDEwMDAyKSwNCj4gPj4gKwkJLmlkeCA9 IDQsDQo+ID4+ICsJCS5scHYgPSAxLA0KPiA+PiArCX0sDQo+ID4+ICsJew0KPiA+PiArCQkvKiA2 OiBhICE9IGIsIGIgPT0gYywgYyA9PSBkLCBkICE9IGUgKi8NCj4gPj4gKwkJLnBudW0gPSBVSU5U NjRfQygweDAwMDEwMDAyMDAwMzAwMDEpLA0KPiA+PiArCQkuaWR4ID0gNCwNCj4gPj4gKwkJLmxw diA9IDAsDQo+ID4+ICsJfSwNCj4gPj4gKwl7DQo+ID4+ICsJCS8qIDc6IGEgPT0gYiwgYiA9PSBj LCBjID09IGQsIGQgIT0gZSAqLw0KPiA+PiArCQkucG51bSA9IFVJTlQ2NF9DKDB4MDAwMTAwMDIw MDAzMDAwNCksDQo+ID4+ICsJCS5pZHggPSA0LA0KPiA+PiArCQkubHB2ID0gMywNCj4gPj4gKwl9 LA0KPiA+PiArCXsNCj4gPj4gKwkJLyogODogYSAhPSBiLCBiICE9IGMsIGMgIT0gZCwgZCA9PSBl ICovDQo+ID4+ICsJCS5wbnVtID0gVUlOVDY0X0MoMHgwMDAyMDAwMTAwMDEwMDAxKSwNCj4gPj4g KwkJLmlkeCA9IDMsDQo+ID4+ICsJCS5scHYgPSAwLA0KPiA+PiArCX0sDQo+ID4+ICsJew0KPiA+ PiArCQkvKiA5OiBhID09IGIsIGIgIT0gYywgYyAhPSBkLCBkID09IGUgKi8NCj4gPj4gKwkJLnBu dW0gPSBVSU5UNjRfQygweDAwMDIwMDAxMDAwMTAwMDIpLA0KPiA+PiArCQkuaWR4ID0gMywNCj4g Pj4gKwkJLmxwdiA9IDEsDQo+ID4+ICsJfSwNCj4gPj4gKwl7DQo+ID4+ICsJCS8qIDB4YTogYSAh PSBiLCBiID09IGMsIGMgIT0gZCwgZCA9PSBlICovDQo+ID4+ICsJCS5wbnVtID0gVUlOVDY0X0Mo MHgwMDAyMDAwMTAwMDIwMDAxKSwNCj4gPj4gKwkJLmlkeCA9IDMsDQo+ID4+ICsJCS5scHYgPSAw LA0KPiA+PiArCX0sDQo+ID4+ICsJew0KPiA+PiArCQkvKiAweGI6IGEgPT0gYiwgYiA9PSBjLCBj ICE9IGQsIGQgPT0gZSAqLw0KPiA+PiArCQkucG51bSA9IFVJTlQ2NF9DKDB4MDAwMjAwMDEwMDAy MDAwMyksDQo+ID4+ICsJCS5pZHggPSAzLA0KPiA+PiArCQkubHB2ID0gMiwNCj4gPj4gKwl9LA0K PiA+PiArCXsNCj4gPj4gKwkJLyogMHhjOiBhICE9IGIsIGIgIT0gYywgYyA9PSBkLCBkID09IGUg Ki8NCj4gPj4gKwkJLnBudW0gPSBVSU5UNjRfQygweDAwMDIwMDAzMDAwMTAwMDEpLA0KPiA+PiAr CQkuaWR4ID0gMiwNCj4gPj4gKwkJLmxwdiA9IDAsDQo+ID4+ICsJfSwNCj4gPj4gKwl7DQo+ID4+ ICsJCS8qIDB4ZDogYSA9PSBiLCBiICE9IGMsIGMgPT0gZCwgZCA9PSBlICovDQo+ID4+ICsJCS5w bnVtID0gVUlOVDY0X0MoMHgwMDAyMDAwMzAwMDEwMDAyKSwNCj4gPj4gKwkJLmlkeCA9IDIsDQo+ ID4+ICsJCS5scHYgPSAxLA0KPiA+PiArCX0sDQo+ID4+ICsJew0KPiA+PiArCQkvKiAweGU6IGEg IT0gYiwgYiA9PSBjLCBjID09IGQsIGQgPT0gZSAqLw0KPiA+PiArCQkucG51bSA9IFVJTlQ2NF9D KDB4MDAwMjAwMDMwMDA0MDAwMSksDQo+ID4+ICsJCS5pZHggPSAxLA0KPiA+PiArCQkubHB2ID0g MCwNCj4gPj4gKwl9LA0KPiA+PiArCXsNCj4gPj4gKwkJLyogMHhmOiBhID09IGIsIGIgPT0gYywg YyA9PSBkLCBkID09IGUgKi8NCj4gPj4gKwkJLnBudW0gPSBVSU5UNjRfQygweDAwMDIwMDAzMDAw NDAwMDUpLA0KPiA+PiArCQkuaWR4ID0gMCwNCj4gPj4gKwkJLmxwdiA9IDQsDQo+ID4+ICsJfSwN Cj4gPj4gK307DQo+ID4+ICsNCj4gPj4gKyNlbmRpZiAvKiBfUEtUX0dST1VQX0hfICovDQo+ID4+ IGRpZmYgLS1naXQgYS9leGFtcGxlcy9sM2Z3ZC9NYWtlZmlsZSBiL2V4YW1wbGVzL2wzZndkL01h a2VmaWxlIGluZGV4DQo+ID4+IDhlZmU2Mzc4ZTIuLjhkYmU4NWMyZTYgMTAwNjQ0DQo+ID4+IC0t LSBhL2V4YW1wbGVzL2wzZndkL01ha2VmaWxlDQo+ID4+ICsrKyBiL2V4YW1wbGVzL2wzZndkL01h a2VmaWxlDQo+ID4+IEBAIC0yMiw2ICsyMiw3IEBAIHNoYXJlZDogYnVpbGQvJChBUFApLXNoYXJl ZA0KPiA+PiAgIHN0YXRpYzogYnVpbGQvJChBUFApLXN0YXRpYw0KPiA+PiAgIAlsbiAtc2YgJChB UFApLXN0YXRpYyBidWlsZC8kKEFQUCkNCj4gPj4NCj4gPj4gK0lOQ0xVREVTID0tSS4uL2NvbW1v bg0KPiA+PiAgIFBDX0ZJTEUgOj0gJChzaGVsbCAkKFBLR0NPTkYpIC0tcGF0aCBsaWJkcGRrIDI+ L2Rldi9udWxsKSAgQ0ZMQUdTDQo+ID4+ICs9IC1PMyAkKHNoZWxsICQoUEtHQ09ORikgLS1jZmxh Z3MgbGliZHBkaykgICMgQWRkZWQgZm9yDQo+ICdydGVfZXRoX2xpbmtfdG9fc3RyKCknDQo+ID4+ IEBAIC0zOCwxMCArMzksMTAgQEAgZW5kaWYNCj4gPj4gICBlbmRpZg0KPiA+Pg0KPiA+PiAgIGJ1 aWxkLyQoQVBQKS1zaGFyZWQ6ICQoU1JDUy15KSBNYWtlZmlsZSAkKFBDX0ZJTEUpIHwgYnVpbGQN Cj4gPj4gLQkkKENDKSAkKENGTEFHUykgJChTUkNTLXkpIC1vICRAICQoTERGTEFHUykgJChMREZM QUdTX1NIQVJFRCkNCj4gPj4gKwkkKENDKSAkKENGTEFHUykgJChTUkNTLXkpICQoSU5DTFVERVMp IC1vICRAICQoTERGTEFHUykNCj4gPj4gKyQoTERGTEFHU19TSEFSRUQpDQo+ID4+DQo+ID4+ICAg YnVpbGQvJChBUFApLXN0YXRpYzogJChTUkNTLXkpIE1ha2VmaWxlICQoUENfRklMRSkgfCBidWls ZA0KPiA+PiAtCSQoQ0MpICQoQ0ZMQUdTKSAkKFNSQ1MteSkgLW8gJEAgJChMREZMQUdTKSAkKExE RkxBR1NfU1RBVElDKQ0KPiA+PiArCSQoQ0MpICQoQ0ZMQUdTKSAkKFNSQ1MteSkgJChJTkNMVURF UykgLW8gJEAgJChMREZMQUdTKQ0KPiA+PiArJChMREZMQUdTX1NUQVRJQykNCj4gPj4NCj4gPj4g ICBidWlsZDoNCj4gPj4gICAJQG1rZGlyIC1wICRADQo+ID4+IGRpZmYgLS1naXQgYS9leGFtcGxl cy9sM2Z3ZC9sM2Z3ZC5oIGIvZXhhbXBsZXMvbDNmd2QvbDNmd2QuaCBpbmRleA0KPiA+PiA4YTUy YzkwNzU1Li40MGI1ZjMyYTllIDEwMDY0NA0KPiA+PiAtLS0gYS9leGFtcGxlcy9sM2Z3ZC9sM2Z3 ZC5oDQo+ID4+ICsrKyBiL2V4YW1wbGVzL2wzZndkL2wzZndkLmgNCj4gPj4gQEAgLTQ0LDggKzQ0 LDYgQEANCj4gPj4gICAvKiBVc2VkIHRvIG1hcmsgZGVzdGluYXRpb24gcG9ydCBhcyAnaW52YWxp ZCcuICovDQo+ID4+ICAgI2RlZmluZQlCQURfUE9SVCAoKHVpbnQxNl90KS0xKQ0KPiA+Pg0KPiA+ PiAtI2RlZmluZSBGV0RTVEVQCTQNCj4gPj4gLQ0KPiA+PiAgIC8qIHJlcGxhY2UgZmlyc3QgMTJC IG9mIHRoZSBldGhlcm5ldCBoZWFkZXIuICovDQo+ID4+ICAgI2RlZmluZQlNQVNLX0VUSCAweDNm DQo+ID4+DQo+ID4+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9jb21tb24uaA0K PiA+PiBiL2V4YW1wbGVzL2wzZndkL2wzZndkX2NvbW1vbi5oIGluZGV4IDhlNGMyNzIxOGYuLjIy NGIxYzA4ZTggMTAwNjQ0DQo+ID4+IC0tLSBhL2V4YW1wbGVzL2wzZndkL2wzZndkX2NvbW1vbi5o DQo+ID4+ICsrKyBiL2V4YW1wbGVzL2wzZndkL2wzZndkX2NvbW1vbi5oDQo+ID4+IEBAIC03LDYg KzcsOCBAQA0KPiA+PiAgICNpZm5kZWYgX0wzRldEX0NPTU1PTl9IXw0KPiA+PiAgICNkZWZpbmUg X0wzRldEX0NPTU1PTl9IXw0KPiA+Pg0KPiA+PiArI2luY2x1ZGUgInBrdF9ncm91cC5oIg0KPiA+ PiArDQo+ID4+ICAgI2lmZGVmIERPX1JGQ18xODEyX0NIRUNLUw0KPiA+Pg0KPiA+PiAgICNkZWZp bmUJSVBWNF9NSU5fVkVSX0lITAkweDQ1DQo+ID4+IEBAIC01MCwxMzMgKzUyLDYgQEAgcmZjMTgx Ml9wcm9jZXNzKHN0cnVjdCBydGVfaXB2NF9oZHIgKmlwdjRfaGRyLA0KPiA+PiB1aW50MTZfdCAq ZHAsIHVpbnQzMl90IHB0eXBlKQ0KPiA+PiAgICNkZWZpbmUJcmZjMTgxMl9wcm9jZXNzKG1iLCBk cCwgcHR5cGUpCWRvIHsgfSB3aGlsZSAoMCkNCj4gPj4gICAjZW5kaWYgLyogRE9fUkZDXzE4MTJf Q0hFQ0tTICovDQo+ID4+DQo+ID4+IC0vKg0KPiA+PiAtICogV2UgZ3JvdXAgY29uc2VjdXRpdmUg cGFja2V0cyB3aXRoIHRoZSBzYW1lIGRlc3RpbmF0aW9uIHBvcnQgaW50byBvbmUNCj4gYnVyc3Qu DQo+ID4+IC0gKiBUbyBhdm9pZCBleHRyYSBsYXRlbmN5IHRoaXMgaXMgZG9uZSB0b2dldGhlciB3 aXRoIHNvbWUgb3RoZXINCj4gPj4gcGFja2V0DQo+ID4+IC0gKiBwcm9jZXNzaW5nLCBidXQgYWZ0 ZXIgd2UgbWFkZSBhIGZpbmFsIGRlY2lzaW9uIGFib3V0IHBhY2tldCdzIGRlc3RpbmF0aW9uLg0K PiA+PiAtICogVG8gZG8gdGhpcyB3ZSBtYWludGFpbjoNCj4gPj4gLSAqIHBudW0gLSBhcnJheSBv ZiBudW1iZXIgb2YgY29uc2VjdXRpdmUgcGFja2V0cyB3aXRoIHRoZSBzYW1lIGRlc3QNCj4gPj4g cG9ydCBmb3INCj4gPj4gLSAqIGVhY2ggcGFja2V0IGluIHRoZSBpbnB1dCBidXJzdC4NCj4gPj4g LSAqIGxwIC0gcG9pbnRlciB0byB0aGUgbGFzdCB1cGRhdGVkIGVsZW1lbnQgaW4gdGhlIHBudW0u DQo+ID4+IC0gKiBkbHAgLSBkZXN0IHBvcnQgdmFsdWUgbHAgY29ycmVzcG9uZHMgdG8uDQo+ID4+ IC0gKi8NCj4gPj4gLQ0KPiA+PiAtI2RlZmluZQlHUlBTWgkoMSA8PCBGV0RTVEVQKQ0KPiA+PiAt I2RlZmluZQlHUlBNU0sJKEdSUFNaIC0gMSkNCj4gPj4gLQ0KPiA+PiAtI2RlZmluZSBHUk9VUF9Q T1JUX1NURVAoZGxwLCBkY3AsIGxwLCBwbiwgaWR4KQlkbyB7IFwNCj4gPj4gLQlpZiAobGlrZWx5 KChkbHApID09IChkY3ApWyhpZHgpXSkpIHsgICAgICAgICAgICAgXA0KPiA+PiAtCQkobHApWzBd Kys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ID4+IC0JfSBlbHNlIHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gPj4gLQkJKGRscCkg PSAoZGNwKVtpZHhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+PiAtCQkobHApID0g KHBuKSArIChpZHgpOyAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ID4+IC0JCShscClbMF0g PSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gPj4gLQl9ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+PiAtfSB3aGlsZSAo MCkNCj4gPj4gLQ0KPiA+PiAtc3RhdGljIGNvbnN0IHN0cnVjdCB7DQo+ID4+IC0JdWludDY0X3Qg cG51bTsgLyogcHJlYnVpbGQgNCB2YWx1ZXMgZm9yIHBudW1bXS4gKi8NCj4gPj4gLQlpbnQzMl90 ICBpZHg7ICAvKiBpbmRleCBmb3IgbmV3IGxhc3QgdXBkYXRlZCBlbGVtZW50LiAqLw0KPiA+PiAt CXVpbnQxNl90IGxwdjsgIC8qIGFkZCB2YWx1ZSB0byB0aGUgbGFzdCB1cGRhdGVkIGVsZW1lbnQu ICovDQo+ID4+IC19IGdwdGJsW0dSUFNaXSA9IHsNCj4gPj4gLQl7DQo+ID4+IC0JCS8qIDA6IGEg IT0gYiwgYiAhPSBjLCBjICE9IGQsIGQgIT0gZSAqLw0KPiA+PiAtCQkucG51bSA9IFVJTlQ2NF9D KDB4MDAwMTAwMDEwMDAxMDAwMSksDQo+ID4+IC0JCS5pZHggPSA0LA0KPiA+PiAtCQkubHB2ID0g MCwNCj4gPj4gLQl9LA0KPiA+PiAtCXsNCj4gPj4gLQkJLyogMTogYSA9PSBiLCBiICE9IGMsIGMg IT0gZCwgZCAhPSBlICovDQo+ID4+IC0JCS5wbnVtID0gVUlOVDY0X0MoMHgwMDAxMDAwMTAwMDEw MDAyKSwNCj4gPj4gLQkJLmlkeCA9IDQsDQo+ID4+IC0JCS5scHYgPSAxLA0KPiA+PiAtCX0sDQo+ ID4+IC0Jew0KPiA+PiAtCQkvKiAyOiBhICE9IGIsIGIgPT0gYywgYyAhPSBkLCBkICE9IGUgKi8N Cj4gPj4gLQkJLnBudW0gPSBVSU5UNjRfQygweDAwMDEwMDAxMDAwMjAwMDEpLA0KPiA+PiAtCQku aWR4ID0gNCwNCj4gPj4gLQkJLmxwdiA9IDAsDQo+ID4+IC0JfSwNCj4gPj4gLQl7DQo+ID4+IC0J CS8qIDM6IGEgPT0gYiwgYiA9PSBjLCBjICE9IGQsIGQgIT0gZSAqLw0KPiA+PiAtCQkucG51bSA9 IFVJTlQ2NF9DKDB4MDAwMTAwMDEwMDAyMDAwMyksDQo+ID4+IC0JCS5pZHggPSA0LA0KPiA+PiAt CQkubHB2ID0gMiwNCj4gPj4gLQl9LA0KPiA+PiAtCXsNCj4gPj4gLQkJLyogNDogYSAhPSBiLCBi ICE9IGMsIGMgPT0gZCwgZCAhPSBlICovDQo+ID4+IC0JCS5wbnVtID0gVUlOVDY0X0MoMHgwMDAx MDAwMjAwMDEwMDAxKSwNCj4gPj4gLQkJLmlkeCA9IDQsDQo+ID4+IC0JCS5scHYgPSAwLA0KPiA+ PiAtCX0sDQo+ID4+IC0Jew0KPiA+PiAtCQkvKiA1OiBhID09IGIsIGIgIT0gYywgYyA9PSBkLCBk ICE9IGUgKi8NCj4gPj4gLQkJLnBudW0gPSBVSU5UNjRfQygweDAwMDEwMDAyMDAwMTAwMDIpLA0K PiA+PiAtCQkuaWR4ID0gNCwNCj4gPj4gLQkJLmxwdiA9IDEsDQo+ID4+IC0JfSwNCj4gPj4gLQl7 DQo+ID4+IC0JCS8qIDY6IGEgIT0gYiwgYiA9PSBjLCBjID09IGQsIGQgIT0gZSAqLw0KPiA+PiAt CQkucG51bSA9IFVJTlQ2NF9DKDB4MDAwMTAwMDIwMDAzMDAwMSksDQo+ID4+IC0JCS5pZHggPSA0 LA0KPiA+PiAtCQkubHB2ID0gMCwNCj4gPj4gLQl9LA0KPiA+PiAtCXsNCj4gPj4gLQkJLyogNzog YSA9PSBiLCBiID09IGMsIGMgPT0gZCwgZCAhPSBlICovDQo+ID4+IC0JCS5wbnVtID0gVUlOVDY0 X0MoMHgwMDAxMDAwMjAwMDMwMDA0KSwNCj4gPj4gLQkJLmlkeCA9IDQsDQo+ID4+IC0JCS5scHYg PSAzLA0KPiA+PiAtCX0sDQo+ID4+IC0Jew0KPiA+PiAtCQkvKiA4OiBhICE9IGIsIGIgIT0gYywg YyAhPSBkLCBkID09IGUgKi8NCj4gPj4gLQkJLnBudW0gPSBVSU5UNjRfQygweDAwMDIwMDAxMDAw MTAwMDEpLA0KPiA+PiAtCQkuaWR4ID0gMywNCj4gPj4gLQkJLmxwdiA9IDAsDQo+ID4+IC0JfSwN Cj4gPj4gLQl7DQo+ID4+IC0JCS8qIDk6IGEgPT0gYiwgYiAhPSBjLCBjICE9IGQsIGQgPT0gZSAq Lw0KPiA+PiAtCQkucG51bSA9IFVJTlQ2NF9DKDB4MDAwMjAwMDEwMDAxMDAwMiksDQo+ID4+IC0J CS5pZHggPSAzLA0KPiA+PiAtCQkubHB2ID0gMSwNCj4gPj4gLQl9LA0KPiA+PiAtCXsNCj4gPj4g LQkJLyogMHhhOiBhICE9IGIsIGIgPT0gYywgYyAhPSBkLCBkID09IGUgKi8NCj4gPj4gLQkJLnBu dW0gPSBVSU5UNjRfQygweDAwMDIwMDAxMDAwMjAwMDEpLA0KPiA+PiAtCQkuaWR4ID0gMywNCj4g Pj4gLQkJLmxwdiA9IDAsDQo+ID4+IC0JfSwNCj4gPj4gLQl7DQo+ID4+IC0JCS8qIDB4YjogYSA9 PSBiLCBiID09IGMsIGMgIT0gZCwgZCA9PSBlICovDQo+ID4+IC0JCS5wbnVtID0gVUlOVDY0X0Mo MHgwMDAyMDAwMTAwMDIwMDAzKSwNCj4gPj4gLQkJLmlkeCA9IDMsDQo+ID4+IC0JCS5scHYgPSAy LA0KPiA+PiAtCX0sDQo+ID4+IC0Jew0KPiA+PiAtCQkvKiAweGM6IGEgIT0gYiwgYiAhPSBjLCBj ID09IGQsIGQgPT0gZSAqLw0KPiA+PiAtCQkucG51bSA9IFVJTlQ2NF9DKDB4MDAwMjAwMDMwMDAx MDAwMSksDQo+ID4+IC0JCS5pZHggPSAyLA0KPiA+PiAtCQkubHB2ID0gMCwNCj4gPj4gLQl9LA0K PiA+PiAtCXsNCj4gPj4gLQkJLyogMHhkOiBhID09IGIsIGIgIT0gYywgYyA9PSBkLCBkID09IGUg Ki8NCj4gPj4gLQkJLnBudW0gPSBVSU5UNjRfQygweDAwMDIwMDAzMDAwMTAwMDIpLA0KPiA+PiAt CQkuaWR4ID0gMiwNCj4gPj4gLQkJLmxwdiA9IDEsDQo+ID4+IC0JfSwNCj4gPj4gLQl7DQo+ID4+ IC0JCS8qIDB4ZTogYSAhPSBiLCBiID09IGMsIGMgPT0gZCwgZCA9PSBlICovDQo+ID4+IC0JCS5w bnVtID0gVUlOVDY0X0MoMHgwMDAyMDAwMzAwMDQwMDAxKSwNCj4gPj4gLQkJLmlkeCA9IDEsDQo+ ID4+IC0JCS5scHYgPSAwLA0KPiA+PiAtCX0sDQo+ID4+IC0Jew0KPiA+PiAtCQkvKiAweGY6IGEg PT0gYiwgYiA9PSBjLCBjID09IGQsIGQgPT0gZSAqLw0KPiA+PiAtCQkucG51bSA9IFVJTlQ2NF9D KDB4MDAwMjAwMDMwMDA0MDAwNSksDQo+ID4+IC0JCS5pZHggPSAwLA0KPiA+PiAtCQkubHB2ID0g NCwNCj4gPj4gLQl9LA0KPiA+PiAtfTsNCj4gPj4gLQ0KPiA+PiAgIHN0YXRpYyBfX3J0ZV9hbHdh eXNfaW5saW5lIHZvaWQNCj4gPj4gICBzZW5kX3BhY2tldHN4NChzdHJ1Y3QgbGNvcmVfY29uZiAq cWNvbmYsIHVpbnQxNl90IHBvcnQsIHN0cnVjdCBydGVfbWJ1Zg0KPiAqbVtdLA0KPiA+PiAgIAkJ dWludDMyX3QgbnVtKQ0KPiA+PiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvbDNmd2QvbDNmd2RfbmVv bi5oDQo+ID4+IGIvZXhhbXBsZXMvbDNmd2QvbDNmd2RfbmVvbi5oIGluZGV4IGUzZDMzYTUyMjku LjVmYTc2NWI2NDAgMTAwNjQ0DQo+ID4+IC0tLSBhL2V4YW1wbGVzL2wzZndkL2wzZndkX25lb24u aA0KPiA+PiArKysgYi9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9uZW9uLmgNCj4gPj4gQEAgLTcsNiAr Nyw3IEBADQo+ID4+ICAgI2RlZmluZSBfTDNGV0RfTkVPTl9IXw0KPiA+Pg0KPiA+PiAgICNpbmNs dWRlICJsM2Z3ZC5oIg0KPiA+PiArI2luY2x1ZGUgIm5lb25fY29tbW9uLmgiDQo+ID4+ICAgI2lu Y2x1ZGUgImwzZndkX2NvbW1vbi5oIg0KPiA+Pg0KPiA+PiAgIC8qDQo+ID4+IEBAIC02Miw0NCAr NjMsNiBAQCBwcm9jZXNzeDRfc3RlcDMoc3RydWN0IHJ0ZV9tYnVmICpwa3RbRldEU1RFUF0sDQo+ ID4+IHVpbnQxNl90IGRzdF9wb3J0W0ZXRFNURVBdKQ0KPiA+PiAgIAkJCSZkc3RfcG9ydFszXSwg cGt0WzNdLT5wYWNrZXRfdHlwZSk7DQo+ID4+ICAgfQ0KPiA+Pg0KPiA+PiAtLyoNCj4gPj4gLSAq IEdyb3VwIGNvbnNlY3V0aXZlIHBhY2tldHMgd2l0aCB0aGUgc2FtZSBkZXN0aW5hdGlvbiBwb3J0 IGluIGJ1cnN0cyBvZiA0Lg0KPiA+PiAtICogU3VwcG9zZSB3ZSBoYXZlIGFycmF5IG9mIGRlc3Rp bmF0aW9uIHBvcnRzOg0KPiA+PiAtICogZHN0X3BvcnRbXSA9IHthLCBiLCBjLCBkLCwgZSwgLi4u IH0NCj4gPj4gLSAqIGRwMSBzaG91bGQgY29udGFpbjogPGEsIGIsIGMsIGQ+LCBkcDI6IDxiLCBj LCBkLCBlPi4NCj4gPj4gLSAqIFdlIGRvaW5nIDQgY29tcGFyaXNvbnMgYXQgb25jZSBhbmQgdGhl IHJlc3VsdCBpcyA0IGJpdCBtYXNrLg0KPiA+PiAtICogVGhpcyBtYXNrIGlzIHVzZWQgYXMgYW4g aW5kZXggaW50byBwcmVidWlsZCBhcnJheSBvZiBwbnVtIHZhbHVlcy4NCj4gPj4gLSAqLw0KPiA+ PiAtc3RhdGljIGlubGluZSB1aW50MTZfdCAqDQo+ID4+IC1wb3J0X2dyb3VweDQodWludDE2X3Qg cG5bRldEU1RFUCArIDFdLCB1aW50MTZfdCAqbHAsIHVpbnQxNng4X3QgZHAxLA0KPiA+PiAtCSAg ICAgdWludDE2eDhfdCBkcDIpDQo+ID4+IC17DQo+ID4+IC0JdW5pb24gew0KPiA+PiAtCQl1aW50 MTZfdCB1MTZbRldEU1RFUCArIDFdOw0KPiA+PiAtCQl1aW50NjRfdCB1NjQ7DQo+ID4+IC0JfSAq cG51bSA9ICh2b2lkICopcG47DQo+ID4+IC0NCj4gPj4gLQlpbnQzMl90IHY7DQo+ID4+IC0JdWlu dDE2eDhfdCBtYXNrID0gezEsIDIsIDQsIDgsIDAsIDAsIDAsIDB9Ow0KPiA+PiAtDQo+ID4+IC0J ZHAxID0gdmNlcXFfdTE2KGRwMSwgZHAyKTsNCj4gPj4gLQlkcDEgPSB2YW5kcV91MTYoZHAxLCBt YXNrKTsNCj4gPj4gLQl2ID0gdmFkZHZxX3UxNihkcDEpOw0KPiA+PiAtDQo+ID4+IC0JLyogdXBk YXRlIGxhc3QgcG9ydCBjb3VudGVyLiAqLw0KPiA+PiAtCWxwWzBdICs9IGdwdGJsW3ZdLmxwdjsN Cj4gPj4gLQlydGVfY29tcGlsZXJfYmFycmllcigpOw0KPiA+PiAtDQo+ID4+IC0JLyogaWYgZGVz dCBwb3J0IHZhbHVlIGhhcyBjaGFuZ2VkLiAqLw0KPiA+PiAtCWlmICh2ICE9IEdSUE1TSykgew0K PiA+PiAtCQlwbnVtLT51NjQgPSBncHRibFt2XS5wbnVtOw0KPiA+PiAtCQlwbnVtLT51MTZbRldE U1RFUF0gPSAxOw0KPiA+PiAtCQlscCA9IHBudW0tPnUxNiArIGdwdGJsW3ZdLmlkeDsNCj4gPj4g LQl9DQo+ID4+IC0NCj4gPj4gLQlyZXR1cm4gbHA7DQo+ID4+IC19DQo+ID4+IC0NCj4gPj4gICAv KioNCj4gPj4gICAgKiBQcm9jZXNzIG9uZSBwYWNrZXQ6DQo+ID4+ICAgICogVXBkYXRlIHNvdXJj ZSBhbmQgZGVzdGluYXRpb24gTUFDIGFkZHJlc3NlcyBpbiB0aGUgZXRoZXJuZXQgaGVhZGVyLg0K PiA+PiBAQCAtMTYxLDcgKzEyNCw3IEBAIHNlbmRfcGFja2V0c19tdWx0aShzdHJ1Y3QgbGNvcmVf Y29uZiAqcWNvbmYsDQo+ID4+IHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHNfYnVyc3QsDQo+ID4+ICAg CQkJICogPGRbai0zXSwgZFtqLTJdLCBkW2otMV0sIGRbal0sIC4uLiA+DQo+ID4+ICAgCQkJICov DQo+ID4+ICAgCQkJZHAyID0gdmxkMXFfdTE2KCZkc3RfcG9ydFtqIC0gRldEU1RFUCArIDFdKTsN Cj4gPj4gLQkJCWxwICA9IHBvcnRfZ3JvdXB4NCgmcG51bVtqIC0gRldEU1RFUF0sIGxwLCBkcDEs IGRwMik7DQo+ID4+ICsJCQlscCAgPSBuZW9uX3BvcnRfZ3JvdXB4NCgmcG51bVtqIC0gRldEU1RF UF0sIGxwLCBkcDEsDQo+ID4+IGRwMik7DQo+ID4+DQo+ID4+ICAgCQkJLyoNCj4gPj4gICAJCQkg KiBkcDE6DQo+ID4+IEBAIC0xNzUsNyArMTM4LDcgQEAgc2VuZF9wYWNrZXRzX211bHRpKHN0cnVj dCBsY29yZV9jb25mICpxY29uZiwNCj4gPj4gc3RydWN0IHJ0ZV9tYnVmICoqcGt0c19idXJzdCwN Cj4gPj4gICAJCSAqLw0KPiA+PiAgIAkJZHAyID0gdmV4dHFfdTE2KGRwMSwgZHAxLCAxKTsNCj4g Pj4gICAJCWRwMiA9IHZzZXRxX2xhbmVfdTE2KHZnZXRxX2xhbmVfdTE2KGRwMiwgMiksIGRwMiwg Myk7DQo+ID4+IC0JCWxwICA9IHBvcnRfZ3JvdXB4NCgmcG51bVtqIC0gRldEU1RFUF0sIGxwLCBk cDEsIGRwMik7DQo+ID4+ICsJCWxwICA9IG5lb25fcG9ydF9ncm91cHg0KCZwbnVtW2ogLSBGV0RT VEVQXSwgbHAsIGRwMSwgZHAyKTsNCj4gPj4NCj4gPj4gICAJCS8qDQo+ID4+ICAgCQkgKiByZW1v dmUgdmFsdWVzIGFkZGVkIGJ5IHRoZSBsYXN0IHJlcGVhdGVkIGRpZmYgLS1naXQNCj4gPj4gYS9l eGFtcGxlcy9tZXNvbi5idWlsZCBiL2V4YW1wbGVzL21lc29uLmJ1aWxkIGluZGV4DQo+ID4+IDc4 ZGUwZTFmMzcuLjgxZTkzNzk5ZjIgMTAwNjQ0DQo+ID4+IC0tLSBhL2V4YW1wbGVzL21lc29uLmJ1 aWxkDQo+ID4+ICsrKyBiL2V4YW1wbGVzL21lc29uLmJ1aWxkDQo+ID4+IEBAIC05Nyw3ICs5Nyw3 IEBAIGZvcmVhY2ggZXhhbXBsZTogZXhhbXBsZXMNCj4gPj4gICAgICAgbGRmbGFncyA9IGRlZmF1 bHRfbGRmbGFncw0KPiA+Pg0KPiA+PiAgICAgICBleHRfZGVwcyA9IFtdDQo+ID4+IC0gICAgaW5j bHVkZXMgPSBbaW5jbHVkZV9kaXJlY3RvcmllcyhleGFtcGxlKV0NCj4gPj4gKyAgICBpbmNsdWRl cyA9IFtpbmNsdWRlX2RpcmVjdG9yaWVzKGV4YW1wbGUsICdjb21tb24nKV0NCj4gPj4gICAgICAg ZGVwcyA9IFsnZWFsJywgJ21lbXBvb2wnLCAnbmV0JywgJ21idWYnLCAnZXRoZGV2JywgJ2NtZGxp bmUnXQ0KPiA+PiAgICAgICBzdWJkaXIoZXhhbXBsZSkNCj4gPj4NCj4gPj4gLS0NCj4gPj4gMi4y NS4xDQo+ID4NCg0K