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 0DD5745B99; Tue, 22 Oct 2024 05:52:18 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F3013402CA; Tue, 22 Oct 2024 05:52:17 +0200 (CEST) Received: from mx0a-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 95CBA402A3; Tue, 22 Oct 2024 05:52:16 +0200 (CEST) Received: from pps.filterd (m0431384.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49M3ToZ8020935; Mon, 21 Oct 2024 20:52:15 -0700 Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2044.outbound.protection.outlook.com [104.47.70.44]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 42dt1f1enp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Oct 2024 20:52:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ey9dqzy55Tn/D678fBcc9THqQQqYLSMKxqLkve4NP2IDRikxPH9OirmbFVtuddfe3n6FYdivxES9eI1ofEs+YsrMI8fuDLttDe7ydOuOBBqwrNSL2dX96/mMi3LdupI8nB0UEedX7sLDD67Q1nyWXXAh7vjSdXhMunI/SbEt3TVi6jcSAKj5GZuaouW7EInEir0VmyAepiOUkaf1aRkTdCQ2oZeEM+vXTxcYMnmDuthEAINeCJMtGtqBgKrIbuLJZXDfi7cPZq4Dhwys++hsziEQAyQj+wvjFaRMlMV2YTLNSbqzl092YsKUm1ujLKLElZbSLnTgjMV3N0ft5n6C+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=u96BQw+GKXXbMURRd2G33v1DjhI6ErM34RVrKg+Txng=; b=yDtRALuFI0xDvnzq1pgSFsStPuisqaH1nD6+TtUh4EUUF0eVE/WJNUR0xDohaxsipIYYV/WNniI39kiH9nHA9gLApH+VdKKl+kWHcQzvmLROnKqVTUMi6Ll0fT6Mzgt09tHxZlPqbzkJO5STkjm4Qy6pICYjokpEO28ucYPBzLMW5Cart/po9pagJ+sZ9woBgpZIXKqBgKg0Vp5iMzKOpUss5WusQ6rdcv2MHmYqwnvcDfaYxT/D3wsh9Nxva6VaAplbzhCdpV+GsS2YDdW5FEIKu2G+4T9Q9FuAk3V9QhowGfBHzsJ4Q/l/q9PJUPxnP2lrg3rdpmlbT3wn+GXIlA== 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.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u96BQw+GKXXbMURRd2G33v1DjhI6ErM34RVrKg+Txng=; b=LLwp8peGA10SzCMgd716L1z3hD9arm9UFG8BwrZI6pnZgUnZ5h9wm31ViXpsu8fvDsRJ8jOxi1e6NE+8BLvdgcwp/3wSFjqmfpTXMDt+m2wpcferm8H0VXwqBXBmgyOpKVvknOnjBKl6lezVcvy0kpWDembCPiT0ECci3Fbt0dI= Received: from SJ0PR18MB5111.namprd18.prod.outlook.com (2603:10b6:a03:43a::22) by MN2PR18MB3671.namprd18.prod.outlook.com (2603:10b6:208:26a::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.29; Tue, 22 Oct 2024 03:52:12 +0000 Received: from SJ0PR18MB5111.namprd18.prod.outlook.com ([fe80::d5aa:18b:1998:77b7]) by SJ0PR18MB5111.namprd18.prod.outlook.com ([fe80::d5aa:18b:1998:77b7%4]) with mapi id 15.20.8069.027; Tue, 22 Oct 2024 03:52:12 +0000 From: Nitin Saxena To: Robin Jarry , "dev@dpdk.org" , "grout@dpdk.org" CC: Jerin Jacob , David Marchand , Christophe Fontaine , Nitin Saxena Subject: RE: [EXTERNAL] graph: make the in-built nodes better reusable Thread-Topic: [EXTERNAL] graph: make the in-built nodes better reusable Thread-Index: AQHbI7g7YP2YXCTN30SI0Dv+eIwqj7KRRweg Date: Tue, 22 Oct 2024 03:52:11 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ0PR18MB5111:EE_|MN2PR18MB3671:EE_ x-ms-office365-filtering-correlation-id: 30a0d14c-24e4-43e9-24fb-08dcf24ce8fd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?Z3VxaDMxc2dzMThmZWNoRVJtVkkvK2p4MHpMOXJGU0NDY0VESyttUWFscENz?= =?utf-8?B?ZEYvK0ZBKzkyVlJKTDZ2Z0dZWFh1a2ZDamM3ODhtbEFnWHN1VUlwVTdRNFQw?= =?utf-8?B?MkVLQkN0eXR5TktOWVZjZklvRDVMM1BIMWllSzFLNjFVdVE5dGRCYlNlTVVE?= =?utf-8?B?T2liemc0UzMyYlAxRk5MS1loVm1ML0pWTHlBcUhnbCtWZUxZSENMY3p3cHhs?= =?utf-8?B?T3N2U0tDWCtaTVdRcXhBblZ2QmI4dk1QNG56OXgzWmlFK0x4T1c2SDRXcmth?= =?utf-8?B?UlFldjJnMm5DY0RMM1ZaWWgzTXhJV0VwZFBSK09XWWptdU9WSEhwMEl5N2ts?= =?utf-8?B?YTIxcDR0V1BrNHMvWG9xR1lxMCs5aG1yUkhEWkdpbU5QOEZvTVp4MXoyTlpj?= =?utf-8?B?K1ZNa1M2QURBdW5XVkZONXU1U0hSUWw1ZjJINWtrR2d6OVc2bCt2ZEJxZitp?= =?utf-8?B?UjRuY0VycFhXNER1akNZbDluTUwxMGZNak4xOHF2ZCtJWTg0WExDMkExNHFz?= =?utf-8?B?eG05dFppbHVFVitvS3JmUXdSYlVJR2lqSGVjUGZIS1AzRHY3bEdsaVpwZkN0?= =?utf-8?B?bkxDc0w2Wlpsa041ZTh2dnZ6Y3FaeHM4Z29uRGdYaWVHYXU0dXRBYW81Q3g4?= =?utf-8?B?V3M2c1FXYUFPOHd0b1hwVjl0cm05UHl4enBpMTZUQi9oU2pMblYrQ2dlQXp5?= =?utf-8?B?anNibXVZRnByQzE5MXkyOWIrQ0RMeE0yeC9IeFRTc3ZjbFlSVUV2VVlkSHZz?= =?utf-8?B?OG1sbzBNWERvVEdJMGMvVlVVN3FmODEzUWtOODBidW53eDJmejBFTm9BWmlZ?= =?utf-8?B?Tml2VU8rWjBMRjBCNzZhQVBNZk92ZSs4T0Z6Zlk4Z1lWenZnZDBaZHEzZGdB?= =?utf-8?B?Q1RINjJINVdHL1laOFhCN0REb0FPbjBIME15UlNUdFlScGlFcGJkL3ZBLzNP?= =?utf-8?B?aVhZSyt1VHk4aWJMS1hIaENuZW81V0JwZDU2ZU9OazRzanFzajVGZ0VlUTJO?= =?utf-8?B?T1laUlZQMWZ6TUpQVkh5NUpBQUdKbGdUcTdqbll5bjRxeXpuaUJock5kejhM?= =?utf-8?B?MU5idnl4VXZGVWYzbi82Nk1qeE80S1lhUGF2RlNORmQ0UzFwYWhETzY4RTd2?= =?utf-8?B?LzFIeTVlcmZwSXZNRXhnVndBcDVNYVhXaGZYSWd1dnBhNG9DWENWMmRGOHhR?= =?utf-8?B?cmlEQnNDdTl1bnEwd09MeVQyZFZiQ0dScEhacUM3dGMrSDZiODhRSUlHellO?= =?utf-8?B?MEZmU0g1Q1cyREJTOFMweURteGd2cThod1daN0wxL3duQ2VIRnpEM1MrWSt5?= =?utf-8?B?QnpLbTJ0RmQ5cVVHWmZudTRHRWRwd01TSmdiRnJEV0JacXp5c3d4ek1yQUxE?= =?utf-8?B?OTR4cjYweDdNZnBoVzVaODJWOXZFOStic2ptdkFGb1R5Z0tBREVPMlVnY2c5?= =?utf-8?B?R1F2VUZKcHAva0hFSDJtRGdXb2drYkFSSVhHQmR0YWt1RmlYZVQ5RUt3SUtY?= =?utf-8?B?aXVHYmFXL1U4aDIvUXQyVXFEaUJXaThSZ0p2TFpYK0VQQkJnUXpBTzhMejl6?= =?utf-8?B?TENUdER3RENCZnZnbXF5dklleThNM3pMZnZnMjJIYWE5dWdaOXQwNVZXRjFr?= =?utf-8?B?ZUZPdCtHS3NvdkJGTXNaSjAvR1VUV0hBbUF0eTgzcDZQYTdCbVF3UVRpd1ha?= =?utf-8?B?a1NMVThTRklOMWVYaTVRNWlZOWppYUJZbkdJR3pyWWJKN1d6Q2RxQW5wY3Zm?= =?utf-8?B?cjhkaWZTYi9MSUc1eUpZZnVFV2NKcVJ2TGdrY1VNckpSRGpOQWlrcWlkVTg0?= =?utf-8?B?cDk3WVl3QStxdFFsSUtkUT09?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR18MB5111.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(376014)(38070700018); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?clJMTEtFNHByNUFnejc2OG93WGhvZFhMZUJZMmdMN0FkYkVyakwvdytLbzFL?= =?utf-8?B?WEJMSWJaS1NRNUw2SWcrTlRkYzdkRURlU0hxbmYrZXpnaVU4VVJJTHYzQmpP?= =?utf-8?B?bkhMcnNBUXBhZWI3bmE1TDUwYnNjWXBWVCtlTWtOU0VTYTJTUkNWVUFEMklR?= =?utf-8?B?VnVFbEFLOCtDSXlnZXN5ekpLKzhkY2xpdWh5WlJSUXZidlZ6RlVwaUpVVUd4?= =?utf-8?B?SUF5UG9LRnk2MnBZVGRROSs1S0Rwd05BQlZHMm1UTnN4OUVGc1VMLzRMRERI?= =?utf-8?B?QzJtdzF0YmlPai9tSUdEWjlCbjdybVV3dzZDcmQxYkJGZVRHNU9NVDMxdzRD?= =?utf-8?B?VHk4dTBlMitwa2xnWVpocE96SXR4VXdUNmR1NGI0dmpHVWw5OFpmcDRlV0Jw?= =?utf-8?B?V3pkUE5mSHZVeE9BQUdaWElKWnpqYzhxaUJsamJIMWpkeXpkVGhPeEUwWjlH?= =?utf-8?B?dFNIN2FqeVh3RVJidGJOd05DY2Z5Wi9XVy83M0RKNFJ2SU1LcU9WaXRrQmI2?= =?utf-8?B?bjJrUFVFU29QZE11N1JqNEh3eTBOcDdDejI4bW90Wlg1Um9CRS9UZmRhaXVG?= =?utf-8?B?RVBvc0F6RFJpM21qY1ZRVWxZTkdSNTlteGx1VGlpWHJGOHhlN2RQSXJtYXNp?= =?utf-8?B?M0JiaGd0Tnd4STAzeXNYZGRTdzM5S3drTXhydjRxVlJtRkMwNG9tTXRBdyt5?= =?utf-8?B?Tk5CTE16OWU2MTJtbnRsSE4ycDZ3eUEyTk9kelFsYmFQRjZTSVpVbFVYbmQw?= =?utf-8?B?a0V3MDR1cDNYY3hvc3Vpc0IzaDNrMHl5QXBoaG9zMWZNekxac3doaFF3M0RB?= =?utf-8?B?VVo3R0wxTmdnR3BBRXBnRnlBMlFjY1ZKVDVXMUhiSXhpbStabXRRSnVqMW1v?= =?utf-8?B?Y0JheWlhcHBCeFhWbG9WSmplT0JBZWdva1BkZG1NZysxUXc1bnhoN29FZUpN?= =?utf-8?B?ZStvb2xiQW5XdEl0Tis3eit5K2Z2MndrRlF2TE50aERQaUtiT21MYndpQnhM?= =?utf-8?B?Ris4bG9jdHRRWFJOaWxxNU9LbHpkY1ZRbDRZcTRCQXhhQVpMY3BOWHFhUlJY?= =?utf-8?B?eXVNZFVFTnFNSzZRN0I0NEV3b2hBaExVM2JBSms0RmZCTDhPY0JxUXVBMzhD?= =?utf-8?B?dXc4cjMxeXlzYmlWWmhDVDNkQ21sTDczZE53YWxYRWRFWnpLUXdJS05hclhl?= =?utf-8?B?d2lVT29EUHVCRE1HZHNiNXVIQllpSk1CaEQ0M0xoRU5LSFgrZSt3Yng3U01m?= =?utf-8?B?aGJPeHIvdjlBU2pCVGtyQVNGZTBISFI0YUU4V1N1cDg4dUtLdW91bHNnSXlh?= =?utf-8?B?YjNXVjV4LzNWaUFoK0l6UHpCb2JEMzc1Q3pGZjYwRjc2ZzhBN1FOME1lTUcw?= =?utf-8?B?T3hzMkFLNy9TQTF3eWo4eVFMd0RYRXN3UzZtQk1aNmo4VENkTGwxc1h5Qmxt?= =?utf-8?B?Y1VNbzUzaE05T0FVaE1UNWVKWUZ0cXV6VUduYko4UkJ2dTlXblo1SHVQTVZ2?= =?utf-8?B?U1I4VUJIQ3hvUGZZWlhjbTM0QTlweEMrdUdkcFR3bnRkdnJoK0FTMUl0ZHFN?= =?utf-8?B?TVhzN00rYTA1b3NnQUFJdFFsN2lFS042NXIyQ01kSVUwSFMxK01pN3lJR3VN?= =?utf-8?B?a0Z0WlF5RzltaVAvcmRENkdoS1d1SEhtYXZNMWRPNGkvQVVYb2dKRU84V1Z3?= =?utf-8?B?cHB4WHc4R1NlNEFTR25YS004dndzdkZIRVMyRzJmbmtpRHhGb21lZ2ozQU90?= =?utf-8?B?WEJmTWJqeUNTVHZpUXJIRENXekllTnhsWDlYQVdoNlFHNHA2OGR1N2RaQ2lN?= =?utf-8?B?bHE1UmVEeWRJc0c3bmwrbFRVRERiZ1RJWUp3anh6bWttZ0xuWlZmODJQZmhi?= =?utf-8?B?SHFGblBzN3ZhWEVvM2FpZ25wVnRORWdFRFBlY240UTBaZE5pbDdLSWdkakdS?= =?utf-8?B?emtlVXNibWtOWHVXN0U2MDNOOUM4Q1BRamNHcVl5U2s4Z2R4cWJ1ZmVIZ1BE?= =?utf-8?B?bktRZ3Zkbm9OOWsvbTdCcHpxRUhPakdqbE5qaWJaUkRwRWFHZUtqbzRKT1Vt?= =?utf-8?B?YnRBQk1lWUxOMk5zYXJES3o2YmdDeFlGaHc1ZVc3TGNPejVkTlQyZEdTUFBB?= =?utf-8?Q?zIkCkElqMKAe4y9KdDgPKsRv2?= 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: SJ0PR18MB5111.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 30a0d14c-24e4-43e9-24fb-08dcf24ce8fd X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Oct 2024 03:52:11.9784 (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: PF+QjDrdHww9EIzwhXTlB9ChZvtcIzJC31HgTF8LChf/gwZrO2vfSk66VEbhivZS3AILO8EXO2nfwM7zRDhsjg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR18MB3671 X-Proofpoint-GUID: aRHe_31vQ-zi3xxuBF3RLXgmTvlvrVA6 X-Proofpoint-ORIG-GUID: aRHe_31vQ-zi3xxuBF3RLXgmTvlvrVA6 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.687,Hydra:6.0.235,FMLib:17.0.607.475 definitions=2020-10-13_15,2020-10-13_02,2020-04-07_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 SGkgUm9iaW4sDQoNClRoYW5rcyBmb3IgaW5pdGlhdGluZyB0aGlzIHRocmVhZC4gSSBhZ3JlZSB3 aXRoIG1ham9yaXR5IG9mIHlvdXIgcG9pbnRzIHRoYXQgeW91IGhpZ2hsaWdodGVkDQpXZShNYXJ2 ZWxsKSBhbHNvIHN0YXJ0ZWQgaW50ZWdyYXRpbmcgKnJ0ZV9ncmFwaCogaW4gdmFyaW91cyB1c2Ut Y2FzZXMgYW5kIGZvdW5kIG5lZWQgb2YgZm9sbG93aW5nIGl0ZW1zOg0KDQoxLiBIb3QtcGx1Z2dp bmcgb2YgcG9ydHMgYXQgcnVudGltZS4gKEV4YW1wbGUgbGluayBzdGF0dXMgY2hhbmdlIGZyb20g RE9XTiAtPiBVUCBhbmQgdmljZS12ZXJzYSBPUiBhZGRpdGlvbiBvZiBuZXcgcG9ydCBhdCBydW50 aW1lKQ0KSW5zdGVhZCBvZiBjcmVhdGluZyBzb3VyY2Ugbm9kZShldGhkZXYtcngtPHBvcnQ+LTxx dWV1ZT59IGZvciBlYWNoIHBvcnQvcXVldWUgcGVyIHdvcmtlciwgd2UgY2FuIGhhdmUgc2luZ2xl ICJldGhkZXYtcngiIG5vZGUgZm9yIGV2ZXJ5IHdvcmtlci4gRWFjaCBpbnN0YW5jZSBvZiAiZXRo ZGV2LXJ4IiB3b3VsZCBwb2xsIGxpc3Qgb2YgYWxsIChwb3J0cywgcXVldWUpIG1hcHBlZCB0byBp dCBieSBjb250cm9sIHBsYW5lIGF0IHJ1bnRpbWUuIFdpdGggUkNVIHByaW1pdGl2ZXMsIGNvbnRy b2wgcGxhbmUgY2FuIHJ1bnRpbWUgdXBkYXRlIGxpc3Qgb2YgYWxsIHtwb3J0cywgcXVldWV9IGZv ciBlYWNoICJldGhkZXYtcngnIGluc3RhbmNlLiBUaGlzIHdvdWxkIGVuYWJsZSBob3QtcGx1Z2dp bmcgZmVhdHVyZSBhbmQgc2hvdWxkIGF2b2lkIGZvbGxvd2luZyBpc3N1ZXMgdGhhdCB5b3UgaGln aGxpZ2h0ZWQ6DQotIFJlY3JlYXRpb24gb2YgZ3JhcGggaW5zdGFuY2UgZHVlIHRvIHBvcnQgaG90 LXBsdWdnaW5nIGZlYXR1cmUNCi0gU3RhdGlzdGljcyBpc3N1ZSB3aGVyZSBvYnNjdXJlIHZlcnNp b24gb2YgImV0aGRldi1yeC1YIiBzaG93cyB1cCBkdWUgdG8gcG9ydCBkZWxldGUgaW4gY29udHJv bCBwbGFuZQ0KLSBEdWUgdG8gc2luZ2xlIGluc3RhbmNlIG9mIG5vZGUsIGFueSBhZGRpdGlvbiBj bG9uaW5nIHBlciAocG9ydCwgcXVldWUpIHBlciB3b3JrZXIgY2FuIGJlIGF2b2lkZWQgKHRoYXQg ZXhpc3RzIHRvZGF5KQ0KLSBBbnkgbmFtaW5nIGNvbmNlcm5zIHJlZ2FyZGluZyAiZXRoZGV2LXJ4 LTxwb3J0Pi08cXVldWU+Iiwgc2luY2UgZWFjaCB3b3JrZXIgd291bGQgaGF2ZSBzaW5nbGUgImV0 aGRldi1yeCIgaW5zdGFuY2UNCg0KMi4gTm9kZSBtYnVmIGR5bmFtaWMgZmllbGQgKG5vZGVfbWJ1 Zl9wcml2MSkgcmVmYWN0b3INCkl0IGlzIGJldHRlciB0byBoYXZlIGZvbGxvd2luZyBmaWVsZHMg aW4gbm9kZV9tYnVmX3ByaXYxKCkgc3RydWN0dXJlDQotIHVpbnQxNl90IHJ4X2ludGVyZmFjZSBm b3IgYW55IGluY29taW5nIGRlY2lzaW9uIHBlciBpbnRlcmZhY2UuIFRoaXMgY29ycmVzcG9uZHMg dG8gdmlydHVhbCBpbnRlcmZhY2VzIGFzIHdlbGwgbGlrZSBJUElQIGludGVyZmFjZQ0KLSB1aW50 MTZfdCB0eF9pbnRlcmZhY2UgZm9yIGFueSBvdXRnb2luZyBkZWNpc2lvbiBwZXIgaW50ZXJmYWNl LiBBcHBsaWVzIHRvIHZpcnR1YWwgaW50ZXJmYWNlcyBhcyB3ZWxsDQotIEZpZWxkcyByZWxhdGVk IHRvIGZlYXR1cmVfYXJjLCBpZiBpdCBnZXRzIGFjY2VwdGVkDQoNCjMuIFJ1bnRpbWUgZW5hYmxl L2Rpc2FibGUgb2Ygc3ViLWdyYXBocyBwZXIgaW50ZXJmYWNlDQotIEZlYXR1cmUgYXJjIHBhdGNo IHNlcmllc1swXSBzb2x2ZXMgdGhpcyBpc3N1ZS4NCg0KNC4gUmV1c2FiaWxpdHkgb2YgaW4tYnVp bHQgbm9kZXMgYnkgb3V0LW9mLXRyZWUgYXBwbGljYXRpb25zDQotIEZlYXR1cmUgYXJjIHBhdGNo IHNlcmllc1swXSBzb2x2ZXMgdGhpcyBpc3N1ZQ0KDQo1LiBIYXJkIGNvZGVzIHN0YXRpYyBuZXh0 X25vZGVzDQotIEZlYXR1cmUgYXJjIHBhdGNoIHNlcmllcyBzb2x2ZXMgdGhpcyBieSBhZGRpbmcg c3RhdGljIGVkZ2VzIChidXQgbm90IGhhcmQtY29kZWQpLiBGZWF0dXJlIGFyYyBtYW5hZ2VzIG5l eHRfbm9kZXMoKSBhY3Jvc3MgdmFyaW91cyBzdWItZ3JhcGhzDQoNCjYuIElQIHJvdXRlIGxvb2t1 cA0KYSkgQ2hhbmdpbmcgaXAgbG9va3VwIGltcGxlbWVudGF0aW9uIGZyb20gY3VycmVudCBMUE0g dG8gUkNVIGJhc2VkIHJ0ZV9maWIgZm9yIHBlcmZvcm1hbmNlIGFuZCBmdW5jdGlvbmFsIHJlYXNv bnMNCmIpIEFueSBjb250cm9sIHBsYW5lIHJvdXRlIHVwZGF0ZSBzaG91bGQgYWxzbyB1cGRhdGUg ZmFzdCBwYXRoIGZpYg0KLSBXaGVuIHVzZXIgdXBkYXRlcyBNQUMgYWRkcmVzcyBvZiBsb2NhbCBw b3J0LCByZXdyaXRlLWRhdGEgbXVzdCBjaGFuZ2UgdGhhdCByZXNpZGVzIGluIG5leHRfaG9wIHN0 cnVjdHVyZQ0KLSByZXdyaXRlIGRhdGEgc2hvdWxkIGFsc28gYmUgY2hhbmdlZCB3aGVuIGNvbm5l Y3RlZCBuZXh0LWhvcCBoYXMgY2hhbmdlZCBpdHMgTUFDDQotIFdoZW4gYW55IHBvcnQgbGluayBz dGF0dXMgZ29lcyBkb3duLCBmaWIgZW50cnkgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbSBmYXN0IHBh dGgNCmMpIFBvbGxpbmcgZm9yIHBhcnRpYWwgcm91dGVzIGluIGNvbnRyb2wgcGxhbmUuIFBhcnRp YWwgcm91dGVzIChvciBpbmNvbXBsZXRlIHJvdXRlcykgYXJlIHRob3NlIHdob3NlIEFSUCBoYXMg bm90IGJlZW4geWV0IHJlc29sdmVkLiBPbmx5IGNvbXBsZXRlIHJvdXRlcyBtdXN0IGJlIGFkZGVk IHRvIGZpYg0KZCkgTm90aW9uIG9mIHN3X3R4X3BvcnQgaW5zdGVhZCBvZiBldGhkZXZfdHhfcG9y dCBpbiBpcFgtbG9va3VwIHRvIGVuYWJsZSB0dW5uZWwgcHJvdG9jb2xzIGxpa2UgSVAtSVAuDQpl KSBBZGRpbmcgcHVudCBmZWF0dXJlIHRvIHNlbmQgcGFja2V0cyB0byBMSU5VWCBjb250cm9sIHBs YW5lDQpmKSBWUkYgYW5kIE11bHRpLXBhdGggcm91dGluZyAoTmljZSB0byBoYXZlIGZlYXR1cmVz KQ0KDQo3LiBPcHRpbWl6ZWQgVURQIGludGVncmF0aW9uIHdpdGggTDcgcHJvdG9jb2xzDQoNCjgu IE5pY2UgdG8gaGF2ZSBmZWF0dXJlOiBNaW5pbWFsaXN0aWMgY29udHJvbCBwbGFuZSBpbiBhcHAv Z3JhcGggd2l0aCBzaW5nbGUgZXBvbGxfZmQoKSBpbnRlcmZhY2UgZm9yIGhhbmRsaW5nIGV4dGVy bmFsIGFzeW5jaHJvbm91cyBldmVudHMNCi0gQ0xJIHNvY2tldA0KLSBsaWJldmVudCBzb2NrZXQg bGlrZSBpbiBncm91dA0KLSBBbnkgb3RoZXIgc29ja2V0IHBvbGxpbmcgbGlrZSBOZXRsaW5rIG9y IGFwcGxpY2F0aW9uIHNvY2tldA0KDQo5LiBMSU5VWCBjb250cm9sIHBsYW5lIGludGVncmF0aW9u IHdpdGggc3RhbmRhcmQgZGFlbW9ucyBsaWtlIFN0cm9uZ3N3YW4sIEZSUiBldGMNCg0KOC4gVkxB TiBub2RlcyAoTm90IGltbWVkaWF0ZSBpdGVtIGZvciB1cyBidXQgaW4gcm9hZG1hcCkNCg0KQWxz byBzZWUgaW5saW5lIGNvbW1lbnRzIGJlbG93Lg0KDQpbMF06IGh0dHBzOi8vcGF0Y2hlcy5kcGRr Lm9yZy9wcm9qZWN0L2RwZGsvY292ZXIvMjAyNDEwMTQxNDM0MDEuMzEzNTg5Ny0xLW5zYXhlbmFA bWFydmVsbC5jb20vDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUm9i aW4gSmFycnkgPHJqYXJyeUByZWRoYXQuY29tPg0KPiBTZW50OiBNb25kYXksIE9jdG9iZXIgMjEs IDIwMjQgNjoyMyBQTQ0KPiBUbzogZGV2QGRwZGsub3JnOyBncm91dEBkcGRrLm9yZw0KPiBDYzog SmVyaW4gSmFjb2IgPGplcmluakBtYXJ2ZWxsLmNvbT47IE5pdGluIFNheGVuYQ0KPiA8bml0aW4u c2F4ZW5hQGNhdml1bW5ldHdvcmtzLmNvbT47IERhdmlkIE1hcmNoYW5kDQo+IDxkYXZpZC5tYXJj aGFuZEByZWRoYXQuY29tPjsgQ2hyaXN0b3BoZSBGb250YWluZQ0KPiA8Y2ZvbnRhaW5AcmVkaGF0 LmNvbT4NCj4gU3ViamVjdDogW0VYVEVSTkFMXSBncmFwaDogbWFrZSB0aGUgaW4tYnVpbHQgbm9k ZXMgYmV0dGVyIHJldXNhYmxlDQo+DQo+IEhpIGFsbCwNCj4NCj4gSSBhbSBzdGFydGluZyB0aGlz IGRpc2N1c3Npb24gdG8gc2VlIHdoYXQgY2FuIGJlIGRvbmUgaW4gb3JkZXIgdG8gbWFrZSB0aGUg aW4tDQo+IGJ1aWx0IG5vZGVzIChpLmUuIGh0dHBzOi8vdXJsZGVmZW5zZS5wcm9vZnBvaW50LmNv bS92Mi91cmw/dT1odHRwcy0NCj4gM0FfX2dpdC5kcGRrLm9yZ19kcGRrX3RyZWVfbGliX25vZGUm ZD1Ed0lGYVEmYz1uS2pXZWMyYjZSMG1PeVBhejcNCj4geHRmUSZyPWN5MEFrQUt6eTYtaUViRGdM UEo4dGhyeVF5RUtMTGVWeUNqczk3MENaYWsmbT1mbE5pVUg5Ri0NCj4gYUg3S3pza0V2Ujc1Wloy bEhJd2tSSjlqX1BoQmEzZ2NRT2ZtekhKcXdFbkhMS04tT09BUXp5LQ0KPiAmcz05Vl9pd0otSTdZ TmJKTnBjNlVFWmhrVjdmRTd4WElPdklYUGQ5T3pxa3lzJmU9KSBlYXNpZXIgdG8gcmV1c2UgaW4N Cj4gZXh0ZXJuYWwgYXBwbGljYXRpb25zLg0KPg0KPiBTbyBmYXIgaGVyZSBhcmUgdGhlIGxpbWl0 YXRpb25zIEkgaGF2ZSBmb3VuZCB3aGVuIHdvcmtpbmcgb24gZ3JvdXQuIFNvbWUgb2YNCj4gdGhl c2UgbGltaXRhdGlvbnMgYXJlIHRyaXZpYWwsIHNvbWUgb3RoZXJzIGFyZSBtb3JlIHRyaWNreS4g SSBob3BlIHdlIGNhbiBnZXQNCj4gY2xlYW4gc29sdXRpb25zLg0KPg0KPiBldGhkZXZfcnggYW5k IGV0aGRldl90eCByZXF1aXJlIGNsb25pbmcNCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQo+DQo+IFRoZXNlIG5vZGVzIGhhdmUgYmVlbiB3cml0dGVuIHRvIHJlY2Vp dmUgZnJvbSBvciB0cmFuc21pdCB0byBhIHNpbmdsZSBxdWV1ZS4NCj4gV2hlbiBjaGFuZ2luZyB0 aGUgbnVtYmVyIG9mIHBvcnRzIGFuZC9vciByeC90eCBxdWV1ZXMuIFRoZSBncmFwaCBuZWVkcyB0 bw0KPiBiZSByZWNyZWF0ZWQuDQo+DQo+ICogTm9kZSBuYW1lcyBtdXN0IGFsbCBiZSB1bmlxdWUg KGhlbmNlLCBub2RlIGNsb25lcyBuZWVkIHRvIGhhdmUNCj4gICBkaWZmZXJlbnQgbmFtZXMgdGhh biB0aGVpciBvcmlnaW5hbCkuDQo+DQo+ICAgPT4gVGhlcmUgaXMgYSByb3V0aW5lIHRoYXQgYXV0 b21hdGljYWxseSBhZGRzIGEgInVuaXF1ZSIgc3VmZml4IHRvIHRoZQ0KPiAgIGNsb25lZCBldGhk ZXZfcnggYW5kIGV0aGRldl90eCBuYW1lcy4gVGhlICJldGhkZXZfcngtPHBvcnQ+LTxxdWV1ZT4i DQo+ICAgYW5kICJldGhkZXZfcngtPHBvcnQ+IiBuYW1lIHBhdHRlcm5zIGFyZSB1c2VkLg0KPg0K PiAgID0+IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBwcmVwYXJlIHRoZSBuZXcgbm9kZXMgaW4gYWR2 YW5jZSB3aXRob3V0DQo+ICAgZGVzdHJveWluZyB0aGUgYWN0aXZlIGdyYXBoLiBGb3IgZXhhbXBs ZSwgaWYgb25lIHBvcnQrcXVldWUgaXNuJ3QNCj4gICBjaGFuZ2VkLCB0aGUgImV0aGRldl9yeC08 cG9ydD4tPHF1ZXVlPiIgbmFtZSB3aWxsIGFscmVhZHkgZXhpc3QgYW5kIGJlDQo+ICAgYWN0aXZl IGluIHRoZSBncmFwaC4gUmV1c2luZyB0aGUgc2FtZSBuYW1lIGNvdWxkIGxlYWQgdG8gZGF0YSBy YWNlcy4NCg0KQW5zd2VyZWQgYWJvdmUNCg0KPg0KPiAqIE5vZGUgY29udGV4dCBkYXRhIGNhbm5v dCBiZSBwYXNzZWQgZHVyaW5nIHJ0ZV9ncmFwaF9jcmVhdGUoKSBvcg0KPiAgIHJ0ZV9ncmFwaF9j bG9uZSgpLg0KPg0KPiAgIEluc3RlYWQsIGVhY2ggbm9kZSBpbml0KCkgY2FsbGJhY2sgbXVzdCBk ZXRlcm1pbmUgaXRzIG93biBjb250ZXh0IGRhdGENCj4gICBiYXNlZCBvbiB0aGUgZ3JhcGggYW5k IG5vZGUgcG9pbnRlcnMgaXQgaGFzLiBJbiBtb3N0IGNhc2VzLCBpdCBpcw0KPiAgIHRyaXZpYWws IGJ1dCBub3QgZm9yIG5vZGVzIHRoYXQgaGF2ZSBtdWx0aXBsZSBjb3BpZXMgcGVyIGdyYXBoLg0K DQpOb2RlIGNvbnRleHQgZGF0YSBtZWFucyBpdCBpcyB1bmlxdWUgcGVyIG5vZGUuIFdoYXQgd291 bGQgYmUgdGhlIHVzZS1jYXNlIHdoZXJlIHlvdSB3b3VsZCBsaWtlIHBhc3MgZGF0YSBmcm9tIHJ0 ZV9ncmFwaF9jcmVhdGUoKS9jbG9uZSgpIHRvIGVhY2ggbm9kZSBjdHg/DQoNCj4NCj4gKiBPbmNl IGNyZWF0ZWQvY2xvbmVkLCBub2RlcyBjYW5ub3QgYmUgZGVzdHJveWVkLg0KPg0KPiAgID0+IFJl bW92aW5nIHBvcnRzIGFuZC9vciByZWR1Y2luZyB0aGUgbnVtYmVyIHF1ZXVlcywgcmVzdWx0cyBp biBub2RlDQo+ICAgY2xvbmVzIHJlbWFpbmluZy4gSXQgaXNuJ3QgdGhlIGVuZCBvZiB0aGUgd29y bGQgYnV0IGl0IHdvdWxkIGJlIG5pY2UNCj4gICB0byBhbGxvdyBkZXN0cm95aW5nIHRoZW0gZm9y IGNsYXJpdHkuDQoNCkFncmVlZC4NCg0KPg0KPiAqIEdyYXBoIHN0YXRpc3RpY3MgYXJlIHBlci1u b2RlLg0KPg0KPiAgID0+IFdoZW4gY2xvbmluZyBub2Rlcywgd2UgZW5kIHVwIHdpdGggb2JzY3Vy ZSBub2RlIG5hbWVzIHN1Y2ggYXMNCj4gICAiZXRoZGV2X3J4LTQtNyIgaW4gZ3JhcGggc3RhdGlz dGljcy4gSXQgd291bGQgYmUgY2xlYXJlciBpZiB0aGUgY2xvbmVzDQo+ICAgd291bGQgYmUgY29s bGFwc2VkIGluIHRoZSBzdGF0aXN0aWNzLiBIYXZpbmcgY2xvbmVzIGlzIGFuDQo+ICAgaW1wbGVt ZW50YXRpb24gZGV0YWlsIHdoaWNoIHNob3VsZG4ndCByZWZsZWN0IGluIHRoZSByZXN1bHRzLg0K DQpBbnN3ZXJlZCBhYm92ZQ0KPg0KPiAgIFNhbWUgd2l0aCB0aGUgRE9UIGdyYXBoIGR1bXAsIGl0 IG1ha2VzIHRoZSBncmFwaCBpbWFnZXMgYmxvYXRlZCBhbmQNCj4gICBhbHNvIGdpdmVzIGEgZGlm ZmVyZW50IGltYWdlIHBlciB3b3JrZXIuIEl0IHdvdWxkIGJlIGNsZWFyZXIgaWYgdGhlDQo+ICAg b3JpZ2luYWwgbm9kZSBuYW1lIHdhcyB1c2VkIG9ubHkuDQo+DQo+IGlwKiBub2RlcyBhc3N1bWUg dGhlIG1idWYgZGF0YSBvZmZzZXQgaXMgYXQgMA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4NCj4gTDMgYW5kIEw0IG5vZGVzIGFzc3VtZSB0aGF0IHRo ZSBtYnVmIHRoZXkgcHJvY2VzcyBoYXZlIHRoZWlyIGRhdGEgb2Zmc2V0cw0KPiBwb2ludGluZyB0 byBhbiBldGhlcm5ldCBoZWFkZXIuDQo+DQo+IFRoaXMgcHJldmVudHMgaW1wbGVtZW50aW5nIElQ IHR1bm5lbHMgb3IgY29udHJvbCB0byBkYXRhIHBsYW5lDQo+IGNvbW11bmljYXRpb24gd2hlcmUg dGhlIGRhdGEgcG9pbnRlciBtYXkgbmVlZCB0byBiZSBhdCB0aGUgZW5kIG9mIHRoZQ0KPiBMMyBo ZWFkZXIsIGZvciBleGFtcGxlLg0KPg0KPiBJZiB3ZSBjaGFuZ2UgdGhhdCB0byBhZGp1c3QgdGhl IGRhdGEgcG9pbnRlciB0byB0aGUgY29ycmVjdCBPU0kgbGF5ZXIsIGl0IHdvdWxkDQo+IGFsc28g bWFuZGF0ZSB0aGF0IGVhY2ggaW5kaXZpZHVhbCBub2RlIG9ubHkgZGVhbHMgd2l0aCBhIHNpbmds ZSBPU0kgbGF5ZXIuDQo+DQo+IFRoaXMgbWVhbnMgdGhhdCB0aGUgY3VycmVudCBpcCpfcmV3cml0 ZSBub2RlcyB3b3VsZCBuZWVkIHRvIGJlIHNwbGl0IGluDQo+IHR3bzogaXAqX291dHB1dCBhbmQg ZXRoX291dHB1dC4gVGhpcyBtYXkgaGF2ZSBiaWcgaW1wbGljYXRpb25zIG9uIHRoZQ0KPiBvcHRp bWl6YXRpb25zIHRoYXQgd2VyZSBtYWRlIGluIHRoZXNlIG5vZGVzLg0KDQpBZ3JlZWQuIEluLWJ1 aWx0IG5vZGVzIHNob3VsZCBvYmV5IGxheWVyIGRhdGEgb2Zmc2V0cy4gSSBkaWRuJ3QgZ2l2ZSBt dWNoIHRob3VnaHQgYWJvdXQgaXQgYnV0IEkgd2FzIHRoaW5raW5nIHRvIHVzZSBydGVfcGt0bWJ1 Zl94eHgoKSBBUElzIHdoaWNoIGFscmVhZHkgZXhpc3RzLg0KUGVyZm9ybWFuY2UgaW1wYWN0IGlz IGFub3RoZXIgaXNzdWUgd2hpY2ggd2UgaGF2ZSB0byBjYXJlIGFib3V0Lg0KDQo+DQo+IE5vIGV4 cGxpY2l0IEFQSSB0byBwYXNzIGFwcGxpY2F0aW9uIHNwZWNpZmljIGRhdGEgYXJvdW5kDQo+IC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ DQo+IFRoaXMgb25lIGlzIG1vcmUgYSBkb2N1bWVudGF0aW9uIGlzc3VlLiBJdCB3b3VsZCBoZWxw IGlmIHRoZXJlIHdhcyBhIGNsZWFyDQo+IGRlc2NyaXB0aW9uIG9mIGhvdyB0aGUgaW4tYnVpbHQg bm9kZXMgd29yayB0b2dldGhlciBhbmQgd2hhdCBraW5kIG9mIG1idWYNCj4gcHJpdmF0ZSBkYXRh IHRoZXkgcmVxdWlyZSBpbiBvcmRlciB0byBmdW5jdGlvbiBwcm9wZXJseS4NCg0Kbm9kZV9tYnVm X3ByaXYxIGR5bmFtaWMgc3RydWN0dXJlIG11c3QgaG9sZHMgdGhvc2UgZmllbGRzIHdoaWNoIGlz IHBlciBwYWNrZXQuIElmIGRhdGEgaXMgbm90IHVuaXF1ZSBwZXIgcGFja2V0LCBnbG9iYWwgdmFy aWFibGVzIGNhbiBiZSB1c2VkLg0KSWYgaXQgaXMgYSBtYXR0ZXIgb2YgZG9jdW1lbnRhdGlvbiwg d2Ugc2hvdWxkIGJlIGFkZGluZyBpdC4NCg0KPg0KPiBOZXh0IG5vZGVzIGFyZSBoYXJkIGNvZGVk DQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4NCj4gQWxsIG5leHQtbm9kZXMgYXJlIHNl dCBpbiB0aGUgaW4tYnVpbHQgbm9kZXMuIFRoaXMgcHJldmVudHMgZnJvbSByZXVzaW5nIG9ubHkg YQ0KPiBzdWJzZXQgb2YgdGhlbS4NCg0KRmVhdHVyZSBhcmMgc29sdmVzIHRoaXMuIFRoZXJlIGlz IG5vIHJlc3RyaWN0aW9uIGluIHJ0ZV9ub2RlX2VkZ2VfdXBkYXRlKCkgQVBJIHdoaWNoIGZlYXR1 cmUgYXJjIGV4cGxvaXRzIGkuZS4gbmV4dF9ub2RlcyBhcnJheSBjYW4gZ3JvdywgbW9yZSB0aGFu ICJuYl9lZGdlcyIgcHJvdmlkZWQgaW4gInN0cnVjdCBydGVfbm9kZV9yZWdpc3RlciINCg0KPg0K PiBObyBzdXBwb3J0IGZvciBsb2dpY2FsIGludGVyZmFjZXMNCj4gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQo+DQo+IEFsbCBpbnRlcmZhY2VzIGFyZSBzdXBwb3NlZCB0byBiZSBE UERLIHBvcnRzIChlLmcuIElQIG5leHQgaG9wcyBjb250YWluDQo+IGRlc3RpbmF0aW9uIEV0aGVy bmV0IGFkZHJlc3NlcyBhbmQgRFBESyBwb3J0IElEcykuIFRoaXMgcHJldmVudHMgc3VwcG9ydCBv Zg0KPiBsb2dpY2FsIGludGVyZmFjZXMgc3VjaCBhcyBJUCB0dW5uZWxzLg0KDQpBZ3JlZQ0KDQo+ DQo+IE5vIHN1cHBvcnQgZm9yIG11bHRpcGxlIFZSRg0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4NCj4gVGhlcmUgaXMgYSBzaW5nbGUgbHBtL2xwbTYgaW5zdGFuY2UgZm9yIGFsbCBw b3J0cy4gVGhpcyBpcyBzb3J0IG9mIGxpbmtlZCB0byB0aGUNCj4gcHJldmlvdXMgbGltaXRhdGlv biBhYm91dCBubyBoYXZpbmcgc3VwcG9ydCBmb3IgbG9naWNhbCBpbnRlcmZhY2VzLiBJZGVhbGx5 LCB0aGUNCj4gbHBtL2xwbTYgaW5zdGFuY2Ugc2hvdWxkIGJlIGRldGVybWluZWQgZnJvbSB0aGUg VlJGIGlkZW50aWZpZXIgb2YgdGhlIGlucHV0DQo+IGludGVyZmFjZSAobmI6IE5PVCB0aGUgc2Ft ZSB0aGluZyBhcyByZWNlaXZpbmcgRFBESyBwb3J0KS4NCg0KQWdyZWUuIFZSRiB0YWJsZSBpcyBh IGZ1bmN0aW9uIG9mIHJlY2VpdmVkIGludGVyZmFjZSAobm90IGp1c3QgZXRoZGV2KSBidXQgYWxz byB2aXJ0dWFsIGludGVyZmFjZXMgbGlrZSBJUC1JUA0KDQo+DQo+IENoZWVycyENCj4NCj4gLS0N Cj4gUm9iaW4NCg0K