Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oM3Cs-0001Am-OE for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Aug 2022 08:06:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oM3Cq-0003lI-W7 for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Aug 2022 08:06:17 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oM3Cq-0003l4-Jf for pgsql-hackers@lists.postgresql.org; Thu, 11 Aug 2022 08:06:16 +0000 Received: from esa18.fujitsucc.c3s2.iphmx.com ([216.71.158.38]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oM3Cn-0001SY-S4 for pgsql-hackers@lists.postgresql.org; Thu, 11 Aug 2022 08:06:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1660205174; x=1691741174; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=HtdQbLpLNEBfnwSd7DxJsv9/PKs+8GgteKarW6Ntt08=; b=zlwYJW+Rh2QdRRswYnHrEpMGnJcFFlIi+FpA0K3Zobim7qQZhFJVZi0t gwGeWCmev1nxyPl1hKGAn8Pta1UCjifG+qjdDzS9i+mhgDx3emJgovLh4 Kmfsn7pXf4/mPyLxssBbxZfAm4TtYnOfI/VjpmTTNOTHbX8Up7S0fWc5H 6yGgiT/O5TJSIXfjPPz806UDifDXZokzzCtFN0TvatTqLjtZNUSFFSpWL f38o0gIxqVzaqlMLoUfVp4tq4kMwwZMEqMIv6BeaSt1zYSoHgto9Nzg+E E1rD3C+3ohPCg6UhOuyjH20zbap7evj+JIqkyJ12TsY65y4qrn0d7PzhM g==; X-IronPort-AV: E=McAfee;i="6400,9594,10435"; a="64127247" X-IronPort-AV: E=Sophos;i="5.93,228,1654527600"; d="scan'208";a="64127247" Received: from mail-os0jpn01lp2113.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.113]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2022 17:06:12 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P1nwuNn5hKy/47Fuq0Wt2dwp7tP9D53faCVWAEXVAFYM7QNpQplnGruktfKWfH8vRC22RDES1wPyh8fcZq8Hg72REJJiHjpn75YqJzgQ3SDk2ybtgbHP6n0uMQZeOcZB5MsI+SfMkw5Cm+izWjPaNMr2zQhhMtqLEdTa3mkGfTWfpv6VyKhuyJuohppuyZYT/U/XuC1JeLi0F24C6YgOl23iSTHxqAqgJvstXDFI7Kr5VGMaoZAqgCEuja6IUmDXOnH5oat/8HRmaxXQA/6WDpBspiBrrXuL7412QsBX2RM0i0tjnoiEkPvbS2g/pLXl42Whbu0xE39ATQIsrLPJIg== 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=HtdQbLpLNEBfnwSd7DxJsv9/PKs+8GgteKarW6Ntt08=; b=oUM1h5T95bXaMTxqYbMnbQpIoFCz/1cdimexEziWtcDYvt478MZJXn6UelSwcjRBOoXjIAwiB7H2GzT4O/TqaBw7wUI3KxuFhyzjnUlOabu+3R485/hbuO0eaWHedjzG+Vyb/c9TeVOs2+bVPab6tMD0atwHMGNThAVlKnLRQwTlTPtCKBf+d/PoPdbuDSYKcxEXWpEwV0aw1Nya/NWyMMvXEux7bwIJtMCqewNYK7hMVvWToHmaJASUTWwNfPHtSLG0artNrHjhGP6Bv3uwK33wnDdTMvNpUl34t40pCq/sIMReNYhzbPAR9DO39Lsjj/QQ/Y2h1qy0Yqa4A7uMZg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by OS0PR01MB6100.jpnprd01.prod.outlook.com (2603:1096:604:ca::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.22; Thu, 11 Aug 2022 08:06:08 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::558e:85ac:20d8:d8c4]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::558e:85ac:20d8:d8c4%5]) with mapi id 15.20.5504.020; Thu, 11 Aug 2022 08:06:08 +0000 From: "houzj.fnst@fujitsu.com" To: Peter Smith , "wangw.fnst@fujitsu.com" CC: Amit Kapila , Dilip Kumar , Masahiko Sawada , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX5zhPsn/DiHU+5DFLHlN8Fn6zlu9SQgAkSooCACBQ0gIABsTcwgAA1vECAAqHFgIAE/jVwgAXct9CAADkRgIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABq7mgIABSJUAgAAOtoCAACghoIAB8TqAgAqL+oCACaGXAIABbzIw Date: Thu, 11 Aug 2022 08:06:07 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9MWI1YWMyMjktZWI3My00Mzk3LWFhNzQtYzJkZGI3OTY5?= =?utf-8?B?ZjY3O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMi0wOC0xMVQwNzozNDo0MFo7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a8d64195-98b5-4d44-50bd-08da7b7058b1 x-ms-traffictypediagnostic: OS0PR01MB6100:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 5YJXuwjvI2ctwoCMlje3vEhF0VCNBCjM0wq82Gkk6SLQcKsX611PNwpLj7MoICIb/Y5G66lt7LcxpMvvoHaJM0J9CwSot7CCQabPoThlD1Kww2DP0l3qd26OYkxNHcKLem8MvADmYFQCggeMnnqhp7KRoblxUqLNF0TVFauOxTblBAXxIsYB+Kj1VfJHYLXwA8rurohSD/WaPBpf6YxnVvWwSqsp3AvyCmtXoUN+3bjZdbsUyUo3owMM0DGsRBRQosnM0/R8ZS0A9b/v3QMKHmcEUuqkAonJWd3xiPu2cbEsqhZpPRBaMqq00wxgzWkj7i7CIuQv++L2Gwkml+XjdR0uM9Hbc7rJXhOw4itS9k9Aqa5Vr/7+0KeilFocRA4aVnWXlcLERCtOX7PD0gtYxkvPZLmJs8SiYI0FrZE6FOGxV/q+GKog327Czki69c9U5jTA/WMo/e5hzm9nmJY9/0MXGEsol4GL6rwBbCNw88HknOJo/ttChdOmmuhx0Y/5ME7jdHBMqoasinNjC98TZimSN5VW1+V2hc8fjnylepSS+FGqQ1YhE0N9WMOF7iLPLCqaT4LZlkSBDW+AbfI/RlkddLKs17Xj3MnqJ2hLJZ+rotPS9g4wNjCDivbsb0VbV+HaY0MffAhCRAxJ262nCO13U2VS0d4UJndPArM3fJE8QL6vTHz/yi9BDFZSe6TXeftlS+lGFOAy7Mi6y1TXS6T+acxNfEOafkDjHsa6N8jyoP1bXn/0bYwHRpt7U+wsTGaL07dZdRIS+GTAMFnn5WEuQX0F1gj3MPggjpeFb6UhnFlQ0f4KxPoWtRweEhGc x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(366004)(136003)(346002)(39860400002)(376002)(396003)(122000001)(478600001)(83380400001)(38100700002)(9686003)(7696005)(26005)(6506007)(53546011)(186003)(71200400001)(52536014)(8676002)(55016003)(5660300002)(8936002)(64756008)(66946007)(66556008)(76116006)(66476007)(41300700001)(4326008)(86362001)(2906002)(33656002)(66446008)(85182001)(82960400001)(38070700005)(110136005)(54906003)(316002)(6636002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SU1ROG55bE41STh2NXFPTDZwMzBLZUJSbG1iSW1tNVVjUEhwY29teFBsbE9r?= =?utf-8?B?NkVzYXJneHljakZqazMybDNnN2NpNUxhTUNqZFp1N0tOeUZHYVZwbzVrU2Ex?= =?utf-8?B?dFY1b2xEeHFSYlZVNjZGZEdqSTR3QWcrODZYL24rUVJXTTVBaGVLUE1RcHBK?= =?utf-8?B?ZFlPeStxeTNEcGhGQ2VwUXlsK0xkeUg0c0JYdUNQMWtLQk1FQWxpK09oYWlj?= =?utf-8?B?RkY5eGozOEl4QWVEWkVBM2xYQU53Q3dlZU1CdFB1TTlLRnNKbUROOXJHTWtS?= =?utf-8?B?SnZtRzVwVEdTYlgzdUJ6Zmc1eEkza013cEplWmU2dTd5bzZnVEoyYUNheEtn?= =?utf-8?B?aG41aVdRVGJLOUVBQnQwaDBFRnNPWXArK1ZmSGRvVm9vdGlIZ2Y1NHR1cENs?= =?utf-8?B?SVFOY2UvOHRnVEIwMmR5Si96dDFCbGVKUTg0SXFCSjhwK2ZXTlMvOWZkZldM?= =?utf-8?B?UksvUHB1dTZGYUd3RkwzMzU5OG4zdXJSTkNNWk9tVVMzSDVnNTRuVjFGQnV2?= =?utf-8?B?NGROVi9OcmJZRG9OUEhBRGxJV0UyS2NTSFFjNFVXcnR6NTBoMFN1ZnhMVGNX?= =?utf-8?B?eVZoR1NKbWtBT3RVaUJnVm40U0tlT1B1WXdaR0ZEajFjZ0ZBV0pDRzV4RHBE?= =?utf-8?B?eTBUYko1N1pOWHdNSDFQVjIzRWhtMEZNdy9pazNJSGU4TzE0L1NBSUdNdW9q?= =?utf-8?B?R2RHUURWdW51RXg2WUJHOE82M3c5TUZESHRGRHFaK3N5ODVzZ1RWeXArV1B4?= =?utf-8?B?VkZyWUV1T2EzLzN3ZllSaHBnVVlBdzhZemhpaFR5Rm5zRDZ3TVJLNGdIT3By?= =?utf-8?B?N0wxbU5nRlc4N2JvVnRDbHZwWWF2cEZlRktQdm56RUp2MkxhZVdyWjZwTVpZ?= =?utf-8?B?bkhZUGhxeDgzUUZUWlRWd2hTaVhzb2ZnWFZtY3lNZjdmbEtiOVF5YVZsb3Fx?= =?utf-8?B?WlE5aEpIT2tKRENROHRNV1luVitrU2pSQzlFOTJNbkZmd0JBY0lTWnI3WG9r?= =?utf-8?B?QnVHTnhFTzhoYTNob3YzNXdZM1V3dDNqTHJCRG9pd1hLSUQ5ZDl1b1JJL0dn?= =?utf-8?B?Njd3ODFRaTFNUmxXaG9pVEJEZVkyTFdYS0FteWcwMmxOOGlRUmxDNDhxK3hI?= =?utf-8?B?SFBqd1NJNmNLZEpwbk9aMTZqbDBMb0dKVVc3N2tRL1NWVkprMFEyVXpyMSt6?= =?utf-8?B?aTJFTVZ2alhnTVhUUWNFOWJMOEFKU1FsVyt4TzdSZHgrbGRCQ0hqVDNxVHE0?= =?utf-8?B?WnBrZUpkM1RRZWFkVVJuS0k5UDlRVUdSUkJrb1FpeC9aMEM5d1JlRnl4OHpQ?= =?utf-8?B?M0I2eE1lbTBMSXJIaDQyclVwY0MyMUxXTDNRdTNGcGY4Z2tRRWhQMktrRjha?= =?utf-8?B?Ui9jVlFnOXRWNjlEa3NldStLUGdqaGhXc2dMZy8zYk43N0dnTFZJdzVUNE5q?= =?utf-8?B?c3ZqcE94KzkvaTlLSVRPQkRVM0dRZFR3Rk1hWVlOaWJRSjRPYm44MitkamR2?= =?utf-8?B?REg2YWUyd29vT1ozUmpFZTlkQm9UODhwdGliV1ZhYWtpcEthVzNpZFpHbjVl?= =?utf-8?B?bEtsUFY4UmdJRnZLNHNSMDcycGpwbVZ4ZTF0WkpUNnJPa091Q1JXNnVOZU5H?= =?utf-8?B?anlyVTVNOWt6NU1adkF1UVJqVkgrRk11YVRzNmVQbkRLUktaeW80ZWpPRUFI?= =?utf-8?B?alovOTJFaGplTUp2bXBpWlcwMjVjQjlXcWRsRWtieng5LzVzSkNhcFNySWth?= =?utf-8?B?Tk5UMVNRTE1EWnlFZCsvZGIxMFVkTEt2dC9NSHNvNmlZU3RRcjdEZHNHZXFW?= =?utf-8?B?Rmg0S1M4L1dkR00wNWIxazYxRVQwS1IzUFRhdDI1bjUwNVFwamNHQnBiWDhD?= =?utf-8?B?aGxtOUJrSEtFUnByc2pqRUJTMFprc3hxeCtPcGJOUlRUeTJ2ZTRLcGZkSSti?= =?utf-8?B?NzdWRittZnpVdTA3U0ZYa0pLQVBvVmNoc25YM0x0SW5xQVFiZVFYL3haNE1t?= =?utf-8?B?a3FuaHpOVXY2TFdkbytJWkZzYWxFdUZmTnR5cVN1aWpKejdNd2JvYUVId3V6?= =?utf-8?B?aGFjMisyWGRmemZJdWduRER5UEdrUmRnVUFaOUhwU29nUWMrRXgrK2RrOWN2?= =?utf-8?Q?b2FSyyUdAOrwarakI635IZ6zg?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a8d64195-98b5-4d44-50bd-08da7b7058b1 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Aug 2022 08:06:08.0291 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: pndalcgfwBEPRy+dZeUBaEa7uFnbfAYYzkvsOWJQ8mG0KSghC51OUNxDCM7KFN13cykk6FFQxJ3OmRl5693GjA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS0PR01MB6100 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk T24gV2VkbmVzZGF5LCBBdWd1c3QgMTAsIDIwMjIgNTo0MCBQTSBQZXRlciBTbWl0aCA8c21pdGhw YjIyNTBAZ21haWwuY29tPiB3cm90ZToNCj4gDQo+IEhlcmUgYXJlIHNvbWUgcmV2aWV3IGNvbW1l bnRzIGZvciB0aGUgcGF0Y2ggdjIwLTAwMDE6DQo+ID09PT09PQ0KPiANCj4gMS4gZG9jL3NyYy9z Z21sL2NhdGFsb2dzLnNnbWwNCj4gDQo+ICsgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBh cHBseSBjaGFuZ2VzIGRpcmVjdGx5IHVzaW5nIGEgYmFja2dyb3VuZA0KPiArICAgICAgIHdvcmtl ciwgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UsIGl0IGJlaGF2ZXMgdGhlIHNhbWUgYXMgJ3QnDQo+ IA0KPiBUaGUgZGlmZmVyZW50IGNoYXIgdmFsdWVzICdmJywndCcsJ3AnIGFyZSBzZXBhcmF0ZWQg YnkgY29tbWEgKCwpIGluDQo+IHRoZSBsaXN0LCB3aGljaCBpcyBub3JtYWwgZm9yIHRoZSBwZ2Rv Y3MgQUZBSUsuIEhvd2V2ZXIsIGJlY2F1c2Ugb2YNCj4gdGhpcyBJIGRvbid0IHRoaW5rIGl0IGlz IGEgZ29vZCBpZGVhIHRvIHVzZSB0aG9zZSBvdGhlciBjb21tYXMgd2l0aGluDQo+IHRoZSBkZXNj cmlwdGlvbiBmb3IgICdwJywgSSBzdWdnZXN0IHlvdSByZW1vdmUgdGhvc2Ugb25lcyB0byBhdm9p ZA0KPiBhbWJpZ3VpdHkgd2l0aCB0aGUgc2VwYXJhdG9ycy4NCg0KQ2hhbmdlZC4NCg0KPiA9PT09 PT0NCj4gDQo+IDIuIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sDQo+IA0KPiBAQCAtMzA5Niw3 ICszMDk2LDcgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAt Yw0KPiAiSURFTlRJRllfU1lTVEVNOyINCj4gICAgICAgPGxpc3RpdGVtPg0KPiAgICAgICAgPHBh cmE+DQo+ICAgICAgICAgUHJvdG9jb2wgdmVyc2lvbi4gQ3VycmVudGx5IHZlcnNpb25zIDxsaXRl cmFsPjE8L2xpdGVyYWw+LA0KPiA8bGl0ZXJhbD4yPC9saXRlcmFsPiwNCj4gLSAgICAgICBhbmQg PGxpdGVyYWw+MzwvbGl0ZXJhbD4gYXJlIHN1cHBvcnRlZC4NCj4gKyAgICAgICA8bGl0ZXJhbD4z PC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+NDwvbGl0ZXJhbD4gYXJlIHN1cHBvcnRlZC4NCj4gICAg ICAgIDwvcGFyYT4NCj4gDQo+IFB1dCBhIGNvbW1hIGFmdGVyIHRoZSBwZW51bHRpbWF0ZSB2YWx1 ZSBsaWtlIGl0IGhhZCBiZWZvcmUuDQo+IA0KDQoNCkNoYW5nZWQuDQoNCj4gPT09PT09DQo+IA0K PiAzLiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYyAtIDxn ZW5lcmFsPg0KPiANCj4gVGhlcmUgYXJlIG11bHRpcGxlIGZ1bmN0aW9uIGNvbW1lbnRzIGFuZCBv dGhlciBjb2RlIGNvbW1lbnRzIGluIHRoaXMNCj4gZmlsZSB0aGF0IGFyZSBtaXNzaW5nIGEgdGVy bWluYXRpbmcgcGVyaW9kICguKQ0KPiANCj4gPT09PT09DQo+IA0KDQpDaGFuZ2VkLg0KDQo+IDQu IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jIC0gYXBwbHlf Ymd3b3JrZXJfc3RhcnQNCj4gDQo+ICsvKg0KPiArICogVHJ5IHRvIGdldCBhIGZyZWUgYXBwbHkg YmFja2dyb3VuZCB3b3JrZXIuDQo+ICsgKg0KPiArICogSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25l IHdvcmtlciBpbiB0aGUgZnJlZSBsaXN0LCB0aGVuIHRha2Ugb25lLiBPdGhlcndpc2UsDQo+ICsg KiB0cnkgdG8gc3RhcnQgYSBuZXcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuIElmIHN1Y2Nlc3Nm dWwsIGNhY2hlIGl0IGluDQo+ICsgKiBBcHBseUJnd29ya2Vyc0hhc2gga2V5ZWQgYnkgdGhlIHNw ZWNpZmllZCB4aWQuDQo+ICsgKi8NCj4gK0FwcGx5Qmd3b3JrZXJTdGF0ZSAqDQo+ICthcHBseV9i Z3dvcmtlcl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCkNCj4gDQo+IFNVR0dFU1RJT04gKGZvciBm dW5jdGlvbiBjb21tZW50KQ0KPiBSZXR1cm4gdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHRo YXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgc3BlY2lmaWVkIHhpZC4NCj4gDQo+IElmIGFuIGFwcGx5 IGJhY2tncm91bmQgd29ya2VyIGlzIGZvdW5kIGluIHRoZSBmcmVlIGxpc3QgdGhlbiByZS11c2UN Cj4gaXQsIG90aGVyd2lzZSBzdGFydCBhIGZyZXNoIG9uZS4gQ2FjaGUgdGhlIHdvcmtlciBBcHBs eUJnd29ya2Vyc0hhc2gNCj4ga2V5ZWQgYnkgdGhlIHNwZWNpZmllZCB4aWQuDQo+IA0KPiB+fn4N Cj4gDQoNCkNoYW5nZWQuDQoNCj4gNS4NCj4gDQo+ICsgLyogVHJ5IHRvIGdldCBhIGZyZWUgYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIgKi8NCj4gKyBpZiAobGlzdF9sZW5ndGgoQXBwbHlCZ3dvcmtl cnNGcmVlTGlzdCkgPiAwKQ0KPiANCj4gaWYgKGxpc3RfbGVuZ3RoKEFwcGx5Qmd3b3JrZXJzRnJl ZUxpc3QpID4gMCkNCj4gDQo+IEFGQUlLIGEgbm9uLWVtcHR5IGxpc3QgaXMgZ3VhcmFudGVlZCB0 byBiZSBub3QgTklMLCBhbmQgYW4gZW1wdHkgbGlzdA0KPiBpcyBndWFyYW50ZWVkIHRvIGJlIE5J TC4gU28gaWYgeW91IHdhbnQgdG8gdGhlIGFib3ZlIGNhbiBzaW1wbHkgYmUNCj4gd3JpdHRlbiBh czoNCj4gDQo+IGlmIChBcHBseUJnd29ya2Vyc0ZyZWVMaXN0KQ0KPiANCg0KQm90aCB3YXlzIGFy ZSBmaW5lIHRvIG1lLCBzbyBJIGtlcHQgdGhlIGN1cnJlbnQgc3R5bGUuDQoNCj4gfn5+DQo+IA0K PiA2LiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYyAtIGFw cGx5X2Jnd29ya2VyX2ZpbmQNCj4gDQo+ICsvKg0KPiArICogVHJ5IHRvIGxvb2sgdXAgd29ya2Vy IGFzc2lnbmVkIGJlZm9yZSAoc2VlIGZ1bmN0aW9uDQo+IGFwcGx5X2Jnd29ya2VyX2dldF9mcmVl KQ0KPiArICogaW5zaWRlIEFwcGx5Qmd3b3JrZXJzSGFzaCBmb3IgcmVxdWVzdGVkIHhpZC4NCj4g KyAqLw0KPiArQXBwbHlCZ3dvcmtlclN0YXRlICoNCj4gK2FwcGx5X2Jnd29ya2VyX2ZpbmQoVHJh bnNhY3Rpb25JZCB4aWQpDQo+IA0KPiBTVUdHRVNUSU9OIChmb3IgZnVuY3Rpb24gY29tbWVudCkN Cj4gRmluZCB0aGUgd29ya2VyIHByZXZpb3VzbHkgYXNzaWduZWQvY2FjaGVkIGZvciB0aGlzIHhp ZC4gKHNlZSBmdW5jdGlvbg0KPiBhcHBseV9iZ3dvcmtlcl9zdGFydCkNCj4gDQoNCkNoYW5nZWQu DQoNCj4gfn5+DQo+IA0KPiA3Lg0KPiANCj4gKyBBc3NlcnQoc3RhdHVzID09IEFQUExZX0JHV09S S0VSX0JVU1kpOw0KPiArDQo+ICsgcmV0dXJuIGVudHJ5LT53c3RhdGU7DQo+ICsgfQ0KPiArIGVs c2UNCj4gKyByZXR1cm4gTlVMTDsNCj4gDQo+IElNTyBoZXJlIGl0IGlzIGJldHRlciB0byBqdXN0 IHJlbW92ZSB0aGF0ICdlbHNlJyBhbmQgdW5jb25kaXRpb25hbGx5DQo+IHJldHVybiBOVUxMIGF0 IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbi4NCj4gDQoNCkNoYW5nZWQuDQoNCj4gfn5+DQo+IA0K PiA4LiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYyAtDQo+ IGFwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQNCj4gDQo+ICsgKiBJbnNpZGUgYXBwbHkg YmFja2dyb3VuZCB3b3JrZXIgd2UgY2FuIGZpZ3VyZSBvdXQgdGhhdCBuZXcgc3VidHJhbnNhY3Rp b24NCj4gd2FzDQo+ICsgKiBzdGFydGVkIGlmIG5ldyBjaGFuZ2UgYXJyaXZlZCB3aXRoIGRpZmZl cmVudCB4aWQuIEluIHRoYXQgY2FzZSB3ZSBjYW4gZGVmaW5lDQo+ICsgKiBuYW1lZCBzYXZlcG9p bnQsIHNvIHRoYXQgd2Ugd2VyZSBhYmxlIHRvIGNvbW1pdC9yb2xsYmFjayBpdCBzZXBhcmF0ZWx5 DQo+ICsgKiBsYXRlci4NCj4gKyAqIFNwZWNpYWwgY2FzZSBpcyBpZiB0aGUgZmlyc3QgY2hhbmdl IGNvbWVzIGZyb20gc3VidHJhbnNhY3Rpb24sIHRoZW4NCj4gKyAqIHdlIGNoZWNrIHRoYXQgY3Vy cmVudF94aWQgZGlmZmVycyBmcm9tIHN0cmVhbV94aWQuDQo+ICsgKi8NCj4gK3ZvaWQNCj4gK2Fw cGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCkN Cj4gDQo+IEl0IGlzIG5vdCBxdWl0ZSBFbmdsaXNoLiBDYW4geW91IGltcHJvdmUgaXQgYSBiaXQ/ DQo+IA0KPiBTVUdHRVNUSU9OIChtYXliZSBsaWtlIHRoaXM/KQ0KPiBUaGUgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIgY2FuIGZpZ3VyZSBvdXQgaWYgYSBuZXcgc3VidHJhbnNhY3Rpb24gd2FzDQo+ IHN0YXJ0ZWQgYnkgY2hlY2tpbmcgaWYgdGhlIG5ldyBjaGFuZ2UgYXJyaXZlZCB3aXRoIGRpZmZl cmVudCB4aWQuIEluDQo+IHRoYXQgY2FzZSBkZWZpbmUgYSBuYW1lZCBzYXZlcG9pbnQsIHNvIHRo YXQgd2UgYXJlIGFibGUgdG8NCj4gY29tbWl0L3JvbGxiYWNrIGl0IHNlcGFyYXRlbHkgbGF0ZXIu IEEgc3BlY2lhbCBjYXNlIGlzIHdoZW4gdGhlIGZpcnN0DQo+IGNoYW5nZSBjb21lcyBmcm9tIHN1 YnRyYW5zYWN0aW9uIOKAkyB0aGlzIGlzIGRldGVybWluZWQgYnkgY2hlY2tpbmcgaWYNCj4gdGhl IGN1cnJlbnRfeGlkIGRpZmZlcnMgZnJvbSBzdHJlYW1feGlkLg0KPiANCg0KQ2hhbmdlZC4NCg0K PiA9PT09PT0NCj4gDQo+IDkuIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNo ZXIuYyAtDQo+IFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaA0KPiANCj4gKyAqDQo+ICsg KiBSZXR1cm4gZmFsc2UgaWYgdGhlIGF0dGFjaCBmYWlscy4gT3RoZXJ3aXNlIHJldHVybiB0cnVl Lg0KPiAgICovDQo+IC1zdGF0aWMgdm9pZA0KPiArc3RhdGljIGJvb2wNCj4gIFdhaXRGb3JSZXBs aWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsDQo+IA0KPiBXaHkg bm90IGp1c3Qgc2F5ICJSZXR1cm4gd2hldGhlciB0aGUgYXR0YWNoIHdhcyBzdWNjZXNzZnVsLiIN Cj4gDQoNCkNoYW5nZWQuDQoNCj4gfn5+DQo+IA0KPiAxMC4gc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9sYXVuY2hlci5jIC0gbG9naWNhbHJlcF93b3JrZXJfc3RvcA0KPiANCj4gKyAv KiBGb3VuZCB0aGUgbWFpbiB3b3JrZXIsIHRoZW4gdHJ5IHRvIHN0b3AgaXQuICovDQo+ICsgaWYg KHdvcmtlcikNCj4gKyBsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdvcmtlcik7DQo+ IA0KPiBJTU8gdGhlIGNvbW1lbnQgaXMga2luZCBvZiBwb2ludGxlc3MgYmVjYXVzZSBpdCBvbmx5 IHNheXMgd2hhdCB0aGUNCj4gY29kZSBpcyBjbGVhcmx5IGRvaW5nLiBJZiB5b3UgcmVhbGx5IHdh bnRlZCB0byByZWluZm9yY2UgdGhpcyB3b3JrZXINCj4gaXMgYSBtYWluIGFwcGx5IHdvcmtlciB0 aGVuIHlvdSBjYW4gZG8gdGhhdCB3aXRoIGNvZGUgbGlrZToNCj4gDQo+IGlmICh3b3JrZXIpDQo+ IHsNCj4gQXNzZXJ0KCF3b3JrZXItPnN1Yndvcmtlcik7DQo+IGxvZ2ljYWxyZXBfd29ya2VyX3N0 b3BfaW50ZXJuYWwod29ya2VyKTsNCj4gfQ0KPiANCg0KQ2hhbmdlZC4NCg0KPiB+fn4NCj4gDQo+ IDExLiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgLSBsb2dpY2Fs cmVwX3dvcmtlcl9kZXRhY2gNCj4gDQo+IEBAIC01OTksNiArNjMyLDI5IEBAIGxvZ2ljYWxyZXBf d29ya2VyX2F0dGFjaChpbnQgc2xvdCkNCj4gIHN0YXRpYyB2b2lkDQo+ICBsb2dpY2FscmVwX3dv cmtlcl9kZXRhY2godm9pZCkNCj4gIHsNCj4gKyAvKg0KPiArICogVGhpcyBpcyB0aGUgbWFpbiBh cHBseSB3b3JrZXIsIHN0b3AgYWxsIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgd2UNCj4g KyAqIHN0YXJ0ZWQgYmVmb3JlLg0KPiArICovDQo+ICsgaWYgKCFNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YndvcmtlcikNCj4gDQo+IFNVR0dFU1RJT04gKGZvciBjb21tZW50KQ0KPiBUaGlzIGlzIHRo ZSBtYWluIGFwcGx5IHdvcmtlci4gU3RvcCBhbGwgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzDQo+ IHByZXZpb3VzbHkgc3RhcnRlZCBmcm9tIGhlcmUuDQo+IA0KDQpDaGFuZ2VkLg0KDQo+IH5+fg0K PiANCj4gMTIgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIC0NCj4g bG9naWNhbHJlcF9hcHBseV9iZ3dvcmtlcl9jb3VudA0KPiANCj4gKy8qDQo+ICsgKiBDb3VudCB0 aGUgbnVtYmVyIG9mIHJlZ2lzdGVyZWQgKG5vdCBuZWNlc3NhcmlseSBydW5uaW5nKSBhcHBseSBi YWNrZ3JvdW5kDQo+ICsgKiB3b3JrZXJzIGZvciBhIHN1YnNjcmlwdGlvbi4NCj4gKyAqLw0KPiAr aW50DQo+ICtsb2dpY2FscmVwX2FwcGx5X2Jnd29ya2VyX2NvdW50KE9pZCBzdWJpZCkNCj4gDQo+ IFNVR0dFU1RJT04NCj4gQ291bnQgdGhlIG51bWJlciBvZiByZWdpc3RlcmVkIChidXQgbm90IG5l Y2Vzc2FyaWx5IHJ1bm5pbmcpIGFwcGx5DQo+IGJhY2tncm91bmQgd29ya2VycyBmb3IgYSBzdWJz Y3JpcHRpb24uDQo+IA0KDQpDaGFuZ2VkLg0KDQo+IH5+fg0KPiANCj4gMTMuDQo+IA0KPiArIC8q IFNlYXJjaCBmb3IgYXR0YWNoZWQgd29ya2VyIGZvciBhIGdpdmVuIHN1YnNjcmlwdGlvbiBpZC4g Ki8NCj4gKyBmb3IgKGkgPSAwOyBpIDwgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vyczsg aSsrKQ0KPiANCj4gU1VHR0VTVElPTg0KPiBTY2FuIGFsbCBhdHRhY2hlZCBhcHBseSBiYWNrZ3Jv dW5kIHdvcmtlcnMsIG9ubHkgY291bnRpbmcgdGhvc2Ugd2hpY2gNCj4gaGF2ZSB0aGUgZ2l2ZW4g c3Vic2NyaXB0aW9uIGlkLg0KPiANCg0KQ2hhbmdlZC4NCg0KPiA9PT09PT0NCj4gDQo+IDE0LiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIC0gYXBwbHlfZXJyb3JfY2Fs bGJhY2sNCj4gDQo+ICsgew0KPiArIGlmIChlcnJhcmctPnJlbW90ZV9hdHRudW0gPCAwKQ0KPiAr IHsNCj4gKyBpZiAoWExvZ1JlY1B0cklzSW52YWxpZChlcnJhcmctPmZpbmlzaF9sc24pKQ0KPiAr IGVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdp biBcIiVzXCINCj4gZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9u IFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbg0KPiAldSIsDQo+ICsgICAgZXJyYXJnLT5vcmlnaW5f bmFtZSwNCj4gKyAgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLA0K PiArICAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwNCj4gKyAgICBlcnJhcmctPnJl bC0+cmVtb3RlcmVsLnJlbG5hbWUsDQo+ICsgICAgZXJyYXJnLT5yZW1vdGVfeGlkKTsNCj4gKyBl bHNlDQo+ICsgZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRp b24gb3JpZ2luIFwiJXNcIg0KPiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQg cmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uDQo+ICV1IGZpbmlzaGVkIGF0ICVYLyVY IiwNCj4gKyAgICBlcnJhcmctPm9yaWdpbl9uYW1lLA0KPiArICAgIGxvZ2ljYWxyZXBfbWVzc2Fn ZV90eXBlKGVycmFyZy0+Y29tbWFuZCksDQo+ICsgICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5u c3BuYW1lLA0KPiArICAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwNCj4gKyAgICBl cnJhcmctPnJlbW90ZV94aWQsDQo+ICsgICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNo X2xzbikpOw0KPiArIH0NCj4gKyBlbHNlDQo+ICsgew0KPiArIGlmIChYTG9nUmVjUHRySXNJbnZh bGlkKGVycmFyZy0+ZmluaXNoX2xzbikpDQo+ICsgZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1v dGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIg0KPiBkdXJpbmcgXCIlc1wiIGZv ciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVtbiBcIiVzXCINCj4g aW4gdHJhbnNhY3Rpb24gJXUiLA0KPiArICAgIGVycmFyZy0+b3JpZ2luX25hbWUsDQo+ICsgICAg bG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwNCj4gKyAgICBlcnJhcmct PnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsDQo+ICsgICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5y ZWxuYW1lLA0KPiArICAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwuYXR0bmFtZXNbZXJyYXJnLT5y ZW1vdGVfYXR0bnVtXSwNCj4gKyAgICBlcnJhcmctPnJlbW90ZV94aWQpOw0KPiArIGVsc2UNCj4g KyBlcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmln aW4gXCIlc1wiDQo+IGR1cmluZyBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlv biBcIiVzLiVzXCIgY29sdW1uIFwiJXNcIg0KPiBpbiB0cmFuc2FjdGlvbiAldSBmaW5pc2hlZCBh dCAlWC8lWCIsDQo+ICsgICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwNCj4gKyAgICBsb2dpY2FscmVw X21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLA0KPiArICAgIGVycmFyZy0+cmVsLT5yZW1v dGVyZWwubnNwbmFtZSwNCj4gKyAgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsDQo+ ICsgICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRu dW1dLA0KPiArICAgIGVycmFyZy0+cmVtb3RlX3hpZCwNCj4gKyAgICBMU05fRk9STUFUX0FSR1Mo ZXJyYXJnLT5maW5pc2hfbHNuKSk7DQo+ICsgfQ0KPiArIH0NCj4gDQo+IFRoZXJlIGlzIHF1aXRl IGEgbG90IG9mIGNvbW1vbiBjb2RlIGhlcmU6DQo+IA0KPiAicHJvY2Vzc2luZyByZW1vdGUgZGF0 YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiDQo+IGZvciByZXBs aWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiDQo+IA0KPiAgICBlcnJhcmctPm9yaWdp bl9uYW1lLA0KPiAgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLA0K PiAgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsDQo+ICAgIGVycmFyZy0+cmVsLT5y ZW1vdGVyZWwucmVsbmFtZSwNCj4gDQo+IElzIGl0IHdvcnRoIHRyeWluZyB0byBleHRyYWN0IHRo YXQgY29tbW9uIHBhcnQgdG8ga2VlcCB0aGlzIGNvZGUNCj4gc2hvcnRlcj8gRS5nLiBJdCBjb3Vs ZCBiZSBlYXNpbHkgZG9uZSBqdXN0IHdpdGggc29tZSAjZGVmaW5lcw0KPiANCg0KSSBhbSBub3Qg c3VyZSBkbyB3ZSBoYXZlIGEgY2xlYW4gd2F5IHRvIGNoYW5nZSB0aGlzLCBhbnkgc3VnZ2VzdGlv bnMgPw0KDQo+ID09PT09PQ0KPiANCj4gMTUuIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtl cl9pbnRlcm5hbC5oDQo+IA0KPiArIC8qIHByb3RvIHZlcnNpb24gb2YgcHVibGlzaGVyLiAqLw0K PiArIHVpbnQzMiBwcm90b192ZXJzaW9uOw0KPiANCj4gU1VHR0VTVElPTg0KPiBQcm90b2NvbCB2 ZXJzaW9uIG9mIHB1Ymxpc2hlcg0KPiANCj4gfn5+DQo+IA0KDQpDaGFuZ2VkLg0KDQo+IDE2Lg0K PiANCj4gKyAvKiBpZCBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciAqLw0KPiArIHVpbnQzMiB3 b3JrZXJfaWQ7DQo+IA0KPiBVcHBlcmNhc2UgY29tbWVudA0KPiANCg0KQ2hhbmdlZC4NCg0KPiAN Cj4gMTcuDQo+IA0KPiArLyoNCj4gKyAqIFN0cnVjdCBmb3IgbWFpbnRhaW5pbmcgYW4gYXBwbHkg YmFja2dyb3VuZCB3b3JrZXIuDQo+ICsgKi8NCj4gK3R5cGVkZWYgc3RydWN0IEFwcGx5Qmd3b3Jr ZXJTdGF0ZQ0KPiANCj4gSSdtIG5vdCBzdXJlIHdoYXQgdGhpcyBjb21tZW50IG1lYW5zLiBQZXJo YXBzIHRoZXJlIGFyZSBzb21lIHdvcmRzIG1pc3Npbmc/DQo+IA0KDQpJIHJlbmFtZWQgdGhlIHN0 cnVjdCB0byBBcHBseUJnd29ya2VySW5mbyB3aGljaCBzb3VuZHMgYmV0dGVyIHRvIG1lIGFuZCBj aGFuZ2VkIHRoZSBjb21tZW50cy4NCg0KQmVzdCByZWdhcmRzLA0KSG91IHpqDQo=