Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vYEtm-00GfWW-1I for pgpool-hackers@arkaria.postgresql.org; Wed, 24 Dec 2025 02:46:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vYEtk-003B7O-2I for pgpool-hackers@arkaria.postgresql.org; Wed, 24 Dec 2025 02:46:49 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vYEtk-003B7G-0s for pgpool-hackers@lists.postgresql.org; Wed, 24 Dec 2025 02:46:49 +0000 Received: from meldrar.postgresql.org ([2a02:c0:301:0:ffff::31]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vYEth-002IXh-2s for pgpool-hackers@lists.postgresql.org; Wed, 24 Dec 2025 02:46:48 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=postgresql.org; s=20171124; h=Content-Transfer-Encoding:Content-Type: Mime-Version:References:In-Reply-To:From:Subject:Cc:To:Message-Id:Date:Sender :Reply-To:Content-ID:Content-Description; bh=vqdaWevpr7NK6F4c8gxmnBHpt2TXVzKDInDGiig9ZZk=; b=Lu9XhCOYQK7i1Drwwh/qQwu/Sq ZWqMnJ/seJx8zDOet5XIPtS8N4GAapf4t6+GMESk6ZaBoBooVDWwwEM+IQDs0jcDMYYiWQWz44by3 bbtNJU5GOd9vrW+rrsR4vYzsCqTowR4gZy8YbB7s9NCBnLYPT+ksvjPhICZ2nNyNGDzRI8LcyzRSX Gs2meWJG2qY0zcJxrBkVXvrYnPh05ZxmNr/ruP6NF7sCYJ+dFFPbKQ2lVcy7SThk1Z9+0ukZqeRPp rKHdnB76a5ZTr9y3eRDgl/NtCGRMS39CZH0HRBoYBHgp/cxE++U2CwoRGYs1Sk2EFa/eN8a1APKpJ DTfSk0cw==; Received: from [2409:11:4120:300:92e8:6825:c3ad:c45b] (helo=localhost) by meldrar.postgresql.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vYEtd-005B4q-2J; Wed, 24 Dec 2025 02:46:44 +0000 Date: Wed, 24 Dec 2025 11:46:36 +0900 (JST) Message-Id: <20251224.114636.2037102177156277413.ishii@postgresql.org> To: nadav@tailorbrands.com Cc: pgpool-hackers@lists.postgresql.org Subject: Re: Proposal: recent access based routing for primary-replica setups From: Tatsuo Ishii In-Reply-To: References: <20251223.174625.653233061559427537.ishii@postgresql.org> X-Mailer: Mew version 6.8 on Emacs 29.3 Mime-Version: 1.0 Content-Type: Text/Plain; charset=utf-8 Content-Transfer-Encoding: base64 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2409:11:4120:300:92e8:6825:c3ad:c45b (failed) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk SGkgTmFkYXYsDQoNClRoYW5rIHlvdSBmb3IgdGhlIHVwZGF0ZWQgcGF0Y2guIFVuZm9ydHVuYXRl bHkgaXQgY29udGludWVzIHRvDQpmYWlsLiBMb29raW5nIGludG8gdGhlIGNvZGUgYW5kIGxvZywg aXQgc2VlbXMgc3JfY2hlY2tfd29ya2VyIGZhaWxzIGF0DQpoZXJlOg0KDQoJCWVsc2UgaWYgKFdJ RlNJR05BTEVEKHN0YXR1cykpDQoJCXsNCgkJCWVyZXBvcnQoRVJST1IsDQoJCQkJCShlcnJtc2co InJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQgdGVybWluYXRlZCBieSBzaWduYWwgJWQ6ICVzIiwN CgkJCQkJCQlXVEVSTVNJRyhzdGF0dXMpLCBjb21tYW5kKSkpOw0KCQl9DQoNCkEgc3RyYW5nZSB0 aGluZyBpcywgdGhlIHRoZSBzaWduYWwgbnVtYmVyIGxvb2tzIHJhbmRvbTogNiwgOSwgNjIuLi4u IEkNCmhhdmUgbm8gaWRlYSB3aHkgdGhpcyBjb3VsZCBoYXBwZW4uICBJZiBJIGNoYW5nZSBFUlJP UiB0byBERUJVRzEsIHRoZQ0KdGVzdCBzb21ldGltZXMgc3VjY2VlZHMgYW5kIHNvbWV0aW1lcyBm YWlscy4gIEkgd2lsbCBsb29rIGludG8gdGhpcy4NCg0KQmVzdCByZWdhcmRzLA0KLS0NClRhdHN1 byBJc2hpaQ0KU1JBIE9TUyBLLksuDQpFbmdsaXNoOiBodHRwOi8vd3d3LnNyYW9zcy5jby5qcC9p bmRleF9lbi8NCkphcGFuZXNlOmh0dHA6Ly93d3cuc3Jhb3NzLmNvLmpwDQoNCj4gSGkgVGF0c3Vv LA0KPiANCj4gVGhhbmsgeW91IGZvciB0aGUgbm90ZS4NCj4gDQo+IEkndmUgcmVtb3ZlZCB0aGUg ZG9ja2VyIHN0dWZmLiBzdGFydGVkIHdvcmtpbmcgaW4gYW4gdWJ1bnR1IDI0IFZNIHRvIG1hdGNo DQo+IHRoZSBzZXR1cC4gaG9wZWZ1bGx5IHRoZSByZXN1bHRzIHdpbGwgYmUgYmV0dGVyLCBoYWQg c28gbWFueSBpc3N1ZXMNCj4gY29tcGlsaW5nIGFuZCB0ZXN0aW5nIGJlZm9yZSB0aGF0IHN0dWZm IHdhc24ndCBwcm9wZXJseSBmb3JtdWxhdGVkLg0KPiANCj4gQXR0YWNoaW5nIHRoZSBsYXRlc3Qg cGF0Y2guDQo+IA0KPiB0aGlzIGlzIHdoYXQgaSdtIHNlZWluZzoNCj4gYWRhdkBsaW1hLWRldjov c3JjL3BncG9vbDIvc3JjL3Rlc3QvcmVncmVzc2lvbiQgUEdIT1NUPS90bXAgLi9yZWdyZXNzLnNo IC1wDQo+IC91c3IvYmluIDA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheQ0KPiBjcmVhdGlu ZyBwZ3Bvb2wtSUkgdGVtcG9yYXJ5IGluc3RhbGxhdGlvbiAuLi4NCj4gbW92aW5nIHBncG9vbF9z ZXR1cCB0byB0ZW1wb3JhcnkgaW5zdGFsbGF0aW9uIHBhdGggLi4uDQo+IG1vdmluZyB3YXRjaGRv Z19zZXR1cCB0byB0ZW1wb3JhcnkgaW5zdGFsbGF0aW9uIHBhdGggLi4uDQo+IHVzaW5nIHBncG9v bC1JSSBhdCAvc3JjL3BncG9vbDIvc3JjL3Rlc3QvcmVncmVzc2lvbi90ZW1wL2luc3RhbGxlZA0K PiAqKioqKioqKioqKioqKioqKioqKioqKioqDQo+IFJFR1JFU1NJT04gTU9ERSAgICAgICAgICA6 IGluc3RhbGwNCj4gUGdwb29sLUlJIHZlcnNpb24gICAgICAgIDogcGdwb29sLUlJIHZlcnNpb24g NC44ZGV2ZWwgKG1pdHN1a2FrZWJvc2hpKQ0KPiBQZ3Bvb2wtSUkgaW5zdGFsbCBwYXRoICAgOiAv c3JjL3BncG9vbDIvc3JjL3Rlc3QvcmVncmVzc2lvbi90ZW1wL2luc3RhbGxlZA0KPiBQb3N0Z3Jl U1FMIGJpbiAgICAgICAgICAgOiAvdXNyL2xpYi9wb3N0Z3Jlc3FsLzE2L2Jpbg0KPiBQb3N0Z3Jl U1FMIE1ham9yIHZlcnNpb24gOiAxNg0KPiBwZ2JlbmNoICAgICAgICAgICAgICAgICAgOiAvdXNy L2xpYi9wb3N0Z3Jlc3FsLzE2L2Jpbi9wZ2JlbmNoDQo+IFBvc3RncmVTUUwgamRiYyAgICAgICAg ICA6DQo+IC91c3IvbG9jYWwvcGdzcWwvc2hhcmUvcG9zdGdyZXNxbC05LjItMTAwMy5qZGJjNC5q YXINCj4gKioqKioqKioqKioqKioqKioqKioqKioqKg0KPiB0ZXN0aW5nIDA0MS5leHRlcm5hbF9y ZXBsaWNhdGlvbl9kZWxheS4uLm9rLg0KPiBvdXQgb2YgMSBvazoxIGZhaWxlZDowIHRpbWVvdXQ6 MA0KPiANCj4gDQo+IA0KPiBPbiBUdWUsIERlYyAyMywgMjAyNSBhdCAxMDo0NuKAr0FNIFRhdHN1 byBJc2hpaSA8aXNoaWlAcG9zdGdyZXNxbC5vcmc+IHdyb3RlOg0KPiANCj4+ID4gSGkgVGF0c3Vv LA0KPj4gPg0KPj4gPiBJJ2ttIHJ1bm5pbmcgaW50byBpc3N1ZXMgdGVzdGluZyB0aGlzIGFuZCBo YXZlIGNyZWF0ZWQgYSBmdWxsIGRvY2tlcg0KPj4gPiBjb21wb3NlIHNldHVwIC0gY2FuIHlvdSBw bGVhc2UgcG9pbnQgbWUgdG8gdXAgdG8gZGF0ZSBndWlkZXMgb24gdGhlIGJlc3QNCj4+ID4gd2F5 IHRvIHJ1biB0aGUgdGVzdHMgc28gaSBrbm93IHdlJ3JlIGRvaW5nIGl0IHRoZSBzYW1lIHdheT8N Cj4+ID4NCj4+ID4gVGhhbmsgeW91IGZvciBhbGwgeW91ciBoZWxwIQ0KPj4NCj4+IEkgaGF2ZSBy dW4gdGhlIHJlZ3Jlc3Npb24gdGVzdCBvbiB0aGUgUGdwb29sLUlJIG1hc3RlciBicmFuY2ggb24g bXkNCj4+IFVidW50dSAyNCBib3guDQo+Pg0KPj4gY2QgcGdwb29sMi9zcmMvdGVzdC9yZWdyZXNz aW9uDQo+PiAuL3JlZ3Jlc3Muc2ggMDQxDQo+Pg0KPj4gVGhpcyB0aW1lIEkgbm90aWNlZDoNCj4+ DQo+PiAtIFRoZSBwYXRjaCBkb2VzIG5vdCBuYW1lZCB3aXRoIHZlcnNpb24gbnVtYmVyDQo+PiAt IFRoZSBwYXRjaCBjcmVhdGVzIC5kb2NrZXJpZ25vcmUgYW5kIGRvY2tlci8gZGlyZWN0b3J5Lg0K Pj4NCj4+IEFyZSB0aGV5IGludGVuZGVkPyBJIGFtIGFza2luZyBiZWNhdXNlIHRoZXkgYXJlIGRp ZmZlcmVudCBmcm9tIHRoZQ0KPj4gcHJldmlvdXMgdmVyc2lvbi4NCj4+DQo+PiA+IE9uIFR1ZSwg RGVjIDIzLCAyMDI1IGF0IDI6MTPigK9BTSBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwu b3JnPg0KPj4gd3JvdGU6DQo+PiA+DQo+PiA+PiA+IEkgdGhpbmsgZXZlcnl0aGluZyBpcyBwYXNz aW5nIG5vdy4gbmV3IHZlcnNpb24gYXR0YWNoZWQuDQo+PiA+Pg0KPj4gPj4gVW5mb3J0dW5hdGVs eSBUZXN0MSBkaWQgbm90IHBhc3MuDQo+PiA+Pg0KPj4gPj4gPT09IFRlc3QxOiBCYXNpYyBleHRl cm5hbCBjb21tYW5kIHdpdGggaW50ZWdlciBtaWxsaXNlY29uZCB2YWx1ZXMgPT09DQo+PiA+PiB3 YWl0aW5nIGZvciBzZXJ2ZXIgdG8gc3RhcnQuLi4uMTQzODYwMCAyMDI1LTEyLTIzIDA5OjA5OjQ4 LjMzNyBKU1QgTE9HOg0KPj4gPj4gcmVkaXJlY3RpbmcgbG9nIG91dHB1dCB0byBsb2dnaW5nIGNv bGxlY3RvciBwcm9jZXNzDQo+PiA+PiAxNDM4NjAwIDIwMjUtMTItMjMgMDk6MDk6NDguMzM3IEpT VCBISU5UOiAgRnV0dXJlIGxvZyBvdXRwdXQgd2lsbCBhcHBlYXINCj4+ID4+IGluIGRpcmVjdG9y eSAibG9nIi4NCj4+ID4+ICBkb25lDQo+PiA+PiBzZXJ2ZXIgc3RhcnRlZA0KPj4gPj4gd2FpdGlu ZyBmb3Igc2VydmVyIHRvIHN0YXJ0Li4uLjE0Mzg2MTcgMjAyNS0xMi0yMyAwOTowOTo0OC40NDMg SlNUIExPRzoNCj4+ID4+IHJlZGlyZWN0aW5nIGxvZyBvdXRwdXQgdG8gbG9nZ2luZyBjb2xsZWN0 b3IgcHJvY2Vzcw0KPj4gPj4gMTQzODYxNyAyMDI1LTEyLTIzIDA5OjA5OjQ4LjQ0MyBKU1QgSElO VDogIEZ1dHVyZSBsb2cgb3V0cHV0IHdpbGwgYXBwZWFyDQo+PiA+PiBpbiBkaXJlY3RvcnkgImxv ZyIuDQo+PiA+PiAgZG9uZQ0KPj4gPj4gc2VydmVyIHN0YXJ0ZWQNCj4+ID4+IHdhaXRpbmcgZm9y IHNlcnZlciB0byBzdGFydC4uLi4xNDM4NjM0IDIwMjUtMTItMjMgMDk6MDk6NDguNTYxIEpTVCBM T0c6DQo+PiA+PiByZWRpcmVjdGluZyBsb2cgb3V0cHV0IHRvIGxvZ2dpbmcgY29sbGVjdG9yIHBy b2Nlc3MNCj4+ID4+IDE0Mzg2MzQgMjAyNS0xMi0yMyAwOTowOTo0OC41NjEgSlNUIEhJTlQ6ICBG dXR1cmUgbG9nIG91dHB1dCB3aWxsIGFwcGVhcg0KPj4gPj4gaW4gZGlyZWN0b3J5ICJsb2ciLg0K Pj4gPj4gIGRvbmUNCj4+ID4+IHNlcnZlciBzdGFydGVkDQo+PiA+PiBDUkVBVEUgVEFCTEUNCj4+ ID4+IFdhaXRpbmcgZm9yIHNyX2NoZWNrIHRvIHJ1bi4uLg0KPj4gPj4gQ29tbWFuZCBleGVjdXRl ZCBhZnRlciAxIHNlY29uZHMNCj4+ID4+ICBub2RlX2lkIHwgaG9zdG5hbWUgIHwgcG9ydCAgfCBz dGF0dXMgfCBwZ19zdGF0dXMgfCBsYl93ZWlnaHQgfCAgcm9sZQ0KPj4gIHwNCj4+ID4+IHBnX3Jv bGUgfCBzZWxlY3RfY250IHwgbG9hZF9iYWxhbmNlX25vZGUgfCByZXBsaWNhdGlvbl9kZWxheSB8 DQo+PiA+PiByZXBsaWNhdGlvbl9zdGF0ZSB8IHJlcGxpY2F0aW9uX3N5bmNfc3RhdGUgfCBsYXN0 X3N0YXR1c19jaGFuZ2UNCj4+ID4+DQo+PiA+Pg0KPj4gLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPj4gPj4gIDAgICAgICAgfCBsb2NhbGhvc3QgfCAxMTAwMiB8IHVwICAgICB8IHVw ICAgICAgICB8IDAuMzMzMzMzICB8IHByaW1hcnkNCj4+IHwNCj4+ID4+IHByaW1hcnkgfCAwICAg ICAgICAgIHwgdHJ1ZSAgICAgICAgICAgICAgfCAwICAgICAgICAgICAgICAgICB8DQo+PiA+PiAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMTItMjMgMDk6MDk6NDkNCj4+ID4+ ICAxICAgICAgIHwgbG9jYWxob3N0IHwgMTEwMDMgfCB1cCAgICAgfCB1cCAgICAgICAgfCAwLjMz MzMzMyAgfCBzdGFuZGJ5DQo+PiB8DQo+PiA+PiBzdGFuZGJ5IHwgMCAgICAgICAgICB8IGZhbHNl ICAgICAgICAgICAgIHwgMCAgICAgICAgICAgICAgICAgfA0KPj4gPj4gICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgfCAyMDI1LTEyLTIzIDA5OjA5OjQ5DQo+PiA+PiAgMiAgICAgICB8IGxv Y2FsaG9zdCB8IDExMDA0IHwgdXAgICAgIHwgdXAgICAgICAgIHwgMC4zMzMzMzMgIHwgc3RhbmRi eQ0KPj4gfA0KPj4gPj4gc3RhbmRieSB8IDAgICAgICAgICAgfCBmYWxzZSAgICAgICAgICAgICB8 IDAgICAgICAgICAgICAgICAgIHwNCj4+ID4+ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg IHwgMjAyNS0xMi0yMyAwOTowOTo0OQ0KPj4gPj4gKDMgcm93cykNCj4+ID4+DQo+PiA+PiBmYWls OiBleHRlcm5hbCBjb21tYW5kIGRlbGF5IGxvZ2dpbmcgbm90IGZvdW5kDQo+PiA+Pg0KPj4gPj4g PiBPbiBNb24sIE5vdiAyNCwgMjAyNSBhdCA5OjQx4oCvQU0gVGF0c3VvIElzaGlpIDxpc2hpaUBw b3N0Z3Jlc3FsLm9yZz4NCj4+ID4+IHdyb3RlOg0KPj4gPj4gPg0KPj4gPj4gPj4gVGhhbmsgeW91 IGZvciB1cGRhdGluZyB0aGUgcGF0Y2ghIFRoaXMgdGltZSB0aGUgcGF0Y2ggYXBwbGllcyB3aXRo b3V0DQo+PiA+PiA+PiBhbnkgaXNzdWUgYW5kIGNvbXBpbGVzIGZpbmUuIFVuZm9ydHVuYXRlbHkg cmVncmVzc2lvbiB0ZXN0IGZhaWxlZC4NCj4+ID4+ID4+DQo+PiA+PiA+PiB0ZXN0aW5nIDA0MS5l eHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheS4uLmZhaWxlZC4NCj4+ID4+ID4+DQo+PiA+PiA+PiBG cm9tIHRoZSByZWdyZXNzaW9uIGxvZywgaXQgc2VlbXMgVGVzdDcgZmFpbGVkLg0KPj4gPj4gPj4N Cj4+ID4+ID4+DQo+PiA+Pg0KPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+PiA+PiA+PiA9PT0g VGVzdDc6IENvbW1hbmQgdGltZW91dCBoYW5kbGluZyA9PT0NCj4+ID4+ID4+IHdhaXRpbmcgZm9y IHNlcnZlciB0byBzdGFydC4uLi40MTExODEgMjAyNS0xMS0yNCAxNjozMTowNS4yNDQgSlNUDQo+ PiBMT0c6DQo+PiA+PiA+PiByZWRpcmVjdGluZyBsb2cgb3V0cHV0IHRvIGxvZ2dpbmcgY29sbGVj dG9yIHByb2Nlc3MNCj4+ID4+ID4+IDQxMTE4MSAyMDI1LTExLTI0IDE2OjMxOjA1LjI0NCBKU1Qg SElOVDogIEZ1dHVyZSBsb2cgb3V0cHV0IHdpbGwNCj4+IGFwcGVhcg0KPj4gPj4gaW4NCj4+ID4+ ID4+IGRpcmVjdG9yeSAibG9nIi4NCj4+ID4+ID4+ICBkb25lDQo+PiA+PiA+PiBzZXJ2ZXIgc3Rh cnRlZA0KPj4gPj4gPj4gd2FpdGluZyBmb3Igc2VydmVyIHRvIHN0YXJ0Li4uLjQxMTE5NiAyMDI1 LTExLTI0IDE2OjMxOjA1LjM1MiBKU1QNCj4+IExPRzoNCj4+ID4+ID4+IHJlZGlyZWN0aW5nIGxv ZyBvdXRwdXQgdG8gbG9nZ2luZyBjb2xsZWN0b3IgcHJvY2Vzcw0KPj4gPj4gPj4gNDExMTk2IDIw MjUtMTEtMjQgMTY6MzE6MDUuMzUyIEpTVCBISU5UOiAgRnV0dXJlIGxvZyBvdXRwdXQgd2lsbA0K Pj4gYXBwZWFyDQo+PiA+PiBpbg0KPj4gPj4gPj4gZGlyZWN0b3J5ICJsb2ciLg0KPj4gPj4gPj4g IGRvbmUNCj4+ID4+ID4+IHNlcnZlciBzdGFydGVkDQo+PiA+PiA+PiB3YWl0aW5nIGZvciBzZXJ2 ZXIgdG8gc3RhcnQuLi4uNDExMjEzIDIwMjUtMTEtMjQgMTY6MzE6MDUuNDYxIEpTVA0KPj4gTE9H Og0KPj4gPj4gPj4gcmVkaXJlY3RpbmcgbG9nIG91dHB1dCB0byBsb2dnaW5nIGNvbGxlY3RvciBw cm9jZXNzDQo+PiA+PiA+PiA0MTEyMTMgMjAyNS0xMS0yNCAxNjozMTowNS40NjEgSlNUIEhJTlQ6 ICBGdXR1cmUgbG9nIG91dHB1dCB3aWxsDQo+PiBhcHBlYXINCj4+ID4+IGluDQo+PiA+PiA+PiBk aXJlY3RvcnkgImxvZyIuDQo+PiA+PiA+PiAgZG9uZQ0KPj4gPj4gPj4gc2VydmVyIHN0YXJ0ZWQN Cj4+ID4+ID4+IFdhaXRpbmcgZm9yIGNvbW1hbmQgdGltZW91dC4uLg0KPj4gPj4gPj4gZmFpbDog Y29tbWFuZCB0aW1lb3V0IG5vdCBkZXRlY3RlZA0KPj4gPj4gPj4NCj4+ID4+ID4+DQo+PiA+Pg0K Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+PiA+PiA+Pg0KPj4gPj4gPj4gQXR0YWNoZWQgaXMg dGhlIHBncG9vbC5sb2cuIElmIHlvdSBuZWVkIG1vcmUgaW5mbywgcGxlYXNlIGxldCBtZQ0KPj4g a25vdy4NCj4+ID4+ID4+DQo+PiA+PiA+PiBCZXN0IHJlZ2FyZHMsDQo+PiA+PiA+PiAtLQ0KPj4g Pj4gPj4gVGF0c3VvIElzaGlpDQo+PiA+PiA+PiBTUkEgT1NTIEsuSy4NCj4+ID4+ID4+IEVuZ2xp c2g6IGh0dHA6Ly93d3cuc3Jhb3NzLmNvLmpwL2luZGV4X2VuLw0KPj4gPj4gPj4gSmFwYW5lc2U6 aHR0cDovL3d3dy5zcmFvc3MuY28uanANCj4+ID4+ID4+DQo+PiA+PiA+Pg0KPj4gPj4gPj4gPiBI aSBUYXRzdW8sDQo+PiA+PiA+PiA+DQo+PiA+PiA+PiA+IFNvcnJ5IGFnYWluLCB0aGlzIHdhcyBk dWUgdG8gdGhlIHNlcGFyYXRpb24gb2YgMiBwYXRjaGVzIGFuZCBpIG9ubHkNCj4+ID4+IHNlbnQN Cj4+ID4+ID4+ID4gdGhlIG9uZS4NCj4+ID4+ID4+ID4NCj4+ID4+ID4+ID4gSSd2ZSBtZXJnZWQg aXQgaW50byAxIGNvbW1pdCBhbmQgMSBwYXRjaCBhbmQgcmViYXNlZCBvdmVyIG1hc3RlciB0bw0K Pj4gPj4gYXZvaWQNCj4+ID4+ID4+ID4gdGhlc2UgaXNzdWVzIG1vdmluZyBmb3J3YXJkLg0KPj4g Pj4gPj4gPg0KPj4gPj4gPj4gPiBQRkEgbGF0ZXN0IHZlcnNpb24NCj4+ID4+ID4+ID4NCj4+ID4+ ID4+ID4gT24gVGh1LCBOb3YgMjAsIDIwMjUgYXQgMTowOeKAr0FNIFRhdHN1byBJc2hpaSA8aXNo aWlAcG9zdGdyZXNxbC5vcmcNCj4+ID4NCj4+ID4+ID4+IHdyb3RlOg0KPj4gPj4gPj4gPg0KPj4g Pj4gPj4gPj4gSGkgTmFkYXYsDQo+PiA+PiA+PiA+Pg0KPj4gPj4gPj4gPj4gVGhhbmsgeW91IGZv ciBuZXcgcGF0Y2guDQo+PiA+PiA+PiA+PiBVbmZvcnR1bmF0ZWx5IHRoZSBwYXRjaCBkaWQgbm90 IGFwcGx5IHRvIGN1cnJlbnQgbWFzdGVyLg0KPj4gPj4gPj4gPj4NCj4+ID4+ID4+ID4+ICQgZ2l0 IGFwcGx5DQo+PiA+PiA+PiA+PiB+LzAwMDEtRml4LW11bHRpcGxlLWlzc3Vlcy1pbi1leHRlcm5h bC1yZXBsaWNhdGlvbi1kZWxheS1mZS5wYXRjaA0KPj4gPj4gPj4gPj4gZXJyb3I6IHBhdGNoIGZh aWxlZDoNCj4+ID4+IHNyYy9zdHJlYW1pbmdfcmVwbGljYXRpb24vcG9vbF93b3JrZXJfY2hpbGQu Yzo2OTQNCj4+ID4+ID4+ID4+IGVycm9yOiBzcmMvc3RyZWFtaW5nX3JlcGxpY2F0aW9uL3Bvb2xf d29ya2VyX2NoaWxkLmM6IHBhdGNoIGRvZXMNCj4+IG5vdA0KPj4gPj4gPj4gYXBwbHkNCj4+ID4+ ID4+ID4+DQo+PiA+PiA+PiA+PiBNYXliZSB0aGUgcGF0Y2ggaXMgb24gdG9wIG9mIHlvdXIgcHJl dmlvdXMgcGF0Y2g/DQo+PiA+PiA+PiA+Pg0KPj4gPj4gPj4gPj4gQWxzbyBJIHN1Z2dlc3QgdG8g dXNlICItdiIgb3B0aW9uIG9mICJnaXQgZm9ybWF0LXBhdGNoIiB0byBhZGQgdGhlDQo+PiA+PiA+ PiA+PiBwYXRjaCB2ZXJzaW9uIG51bWJlciBzbyB0aGF0IHdlIGNhbiBlYXNpbHkga25vdyB3aGlj aCBwYXRjaCBpcyB0aGUNCj4+ID4+ID4+ID4+IGxhdGVzdC4NCj4+ID4+ID4+ID4+DQo+PiA+PiA+ PiA+PiBCZXN0IHJlZ2FyZHMsDQo+PiA+PiA+PiA+PiAtLQ0KPj4gPj4gPj4gPj4gVGF0c3VvIElz aGlpDQo+PiA+PiA+PiA+PiBTUkEgT1NTIEsuSy4NCj4+ID4+ID4+ID4+IEVuZ2xpc2g6IGh0dHA6 Ly93d3cuc3Jhb3NzLmNvLmpwL2luZGV4X2VuLw0KPj4gPj4gPj4gPj4gSmFwYW5lc2U6aHR0cDov L3d3dy5zcmFvc3MuY28uanANCj4+ID4+ID4+ID4+DQo+PiA+PiA+PiA+PiA+IEhpIFRhdHN1bywN Cj4+ID4+ID4+ID4+ID4NCj4+ID4+ID4+ID4+ID4gUGxlYXNlIHNlZSBhdHRhY2hlZCBhbiB1cGRh dGVkIHZlcnNpb24uDQo+PiA+PiA+PiA+PiA+DQo+PiA+PiA+PiA+PiA+IHRoYW5rIHlvdQ0KPj4g Pj4gPj4gPj4gPg0KPj4gPj4gPj4gPj4gPiBPbiBGcmksIE5vdiA3LCAyMDI1IGF0IDI6MDfigK9B TSBUYXRzdW8gSXNoaWkgPA0KPj4gaXNoaWlAcG9zdGdyZXNxbC5vcmc+DQo+PiA+PiA+PiA+PiB3 cm90ZToNCj4+ID4+ID4+ID4+ID4NCj4+ID4+ID4+ID4+ID4+ID4gU29ycnkgZm9yIHRoYXQgLSB0 aGFua3MgZm9yIHRoZSBwYXRjaC4NCj4+ID4+ID4+ID4+ID4+ID4NCj4+ID4+ID4+ID4+ID4+ID4g UGxlYXNlIGZpbmQgYXR0YWNoZWQgYSBuZXcgdmVyc2lvbg0KPj4gPj4gPj4gPj4gPj4NCj4+ID4+ ID4+ID4+ID4+IFRoYW5rcyBmb3IgdGhlIG5ldyB2ZXJzaW9uLiBVbmZvcnR1bmF0ZWx5IHRoaXMg dGltZSByZWdyZXNzaW9uDQo+PiA+PiB0ZXN0DQo+PiA+PiA+PiA+PiA+PiBmYWlscyBhdDoNCj4+ ID4+ID4+ID4+ID4+DQo+PiA+PiA+PiA+PiA+PiA+IFdhaXRpbmcgZm9yIGNvbW1hbmQgdGltZW91 dC4uLg0KPj4gPj4gPj4gPj4gPj4gPiBmYWlsOiBjb21tYW5kIHRpbWVvdXQgbm90IGRldGVjdGVk DQo+PiA+PiA+PiA+PiA+Pg0KPj4gPj4gPj4gPj4gPj4gQXR0YWNoZWQgaXMgdGhlIHBncG9vbC5s b2cuDQo+PiA+PiA+PiA+PiA+Pg0KPj4gPj4gPj4gPj4gPj4gQmVzdCByZWdhcmRzLA0KPj4gPj4g Pj4gPj4gPj4gLS0NCj4+ID4+ID4+ID4+ID4+IFRhdHN1byBJc2hpaQ0KPj4gPj4gPj4gPj4gPj4g U1JBIE9TUyBLLksuDQo+PiA+PiA+PiA+PiA+PiBFbmdsaXNoOiBodHRwOi8vd3d3LnNyYW9zcy5j by5qcC9pbmRleF9lbi8NCj4+ID4+ID4+ID4+ID4+IEphcGFuZXNlOmh0dHA6Ly93d3cuc3Jhb3Nz LmNvLmpwDQo+PiA+PiA+PiA+PiA+Pg0KPj4gPj4gPj4gPj4gPj4gPiBPbiBNb24sIE5vdiAzLCAy MDI1IGF0IDk6MDXigK9BTSBUYXRzdW8gSXNoaWkgPA0KPj4gPj4gaXNoaWlAcG9zdGdyZXNxbC5v cmc+DQo+PiA+PiA+PiA+PiA+PiB3cm90ZToNCj4+ID4+ID4+ID4+ID4+ID4NCj4+ID4+ID4+ID4+ ID4+ID4+ID4gdGhhbmtzIGFuZCBzb3JyeSBmb3IgdGhlIGlzc3VlcywgcGxlYXNlIGZpbmQgYXR0 YWNoZWQNCj4+IHVwZGF0ZWQNCj4+ID4+ID4+ID4+IHZlcnNpb24uDQo+PiA+PiA+PiA+PiA+PiA+ Pg0KPj4gPj4gPj4gPj4gPj4gPj4gTm8gcHJvYmxlbS4NCj4+ID4+ID4+ID4+ID4+ID4+DQo+PiA+ PiA+PiA+PiA+PiA+PiBUaGlzIHRpbWUgdGhlIHBhdGNoIGFwcGxpZXMgZmluZSwgbm8gY29tcGls ZXIgd2FybmluZ3MuDQo+PiA+PiBIb3dldmVyLA0KPj4gPj4gPj4gPj4gPj4gPj4gcmVncmVzc2lv biB0ZXN0IGRpZCBub3QgcGFzc2VkIGhlcmUgKG9uIFVidW50dSAyNCBMVFMgaWYNCj4+IHRoaXMN Cj4+ID4+ID4+ID4+ID4+ID4+IG1hdHRlcnMpLiAgU28gSSBsb29rZWQgaW50bw0KPj4gPj4gPj4g Pj4gPj4gPj4NCj4+ID4+IHNyYy90ZXN0L3JlZ3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVybmFsX3Jl cGxpY2F0aW9uX2RlbGF5L3Rlc3Quc2ggYQ0KPj4gPj4gPj4gPj4gPj4gPj4gbGl0dGxlIGJpdCBh bmQgYXBwbHkgYXR0YWNoZWQgcGF0Y2ggKHRlc3Quc2gucGF0Y2gpLiBJdA0KPj4gbW92ZWQNCj4+ ID4+ID4+IGZvcndhcmQNCj4+ID4+ID4+ID4+ID4+ID4+IHBhcnRpYWxseSBidXQgZmFpbGVkIGF0 Og0KPj4gPj4gPj4gPj4gPj4gPj4NCj4+ID4+ID4+ID4+ID4+ID4+IGZhaWw6IGNvbW1hbmQgZXhl Y3V0aW9uIGZhaWx1cmUgbm90IGRldGVjdGVkDQo+PiA+PiA+PiA+PiA+PiA+Pg0KPj4gPj4gPj4g Pj4gPj4gPj4gUGxlYXNlIGZpbmQgYXR0YWNoZWQNCj4+ID4+ID4+ID4+ID4+ID4+DQo+PiA+PiA+ PiA+PiA+Pg0KPj4gPj4gPj4gPj4NCj4+ID4+ID4+DQo+PiA+Pg0KPj4gc3JjL3Rlc3QvcmVncmVz c2lvbi90ZXN0cy8wNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkvdGVzdGRpci9wZ3Bvb2wu bG9nDQo+PiA+PiA+PiA+PiA+PiA+PiBhbmQgc3JjL3Rlc3QvcmVncmVzc2lvbi9sb2cvMDQxLmV4 dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5Lg0KPj4gPj4gPj4gPj4gPj4gPj4NCj4+ID4+ID4+ID4+ ID4+ID4+IEJlc3QgcmVnYXJkcywNCj4+ID4+ID4+ID4+ID4+ID4+IC0tDQo+PiA+PiA+PiA+PiA+ PiA+PiBUYXRzdW8gSXNoaWkNCj4+ID4+ID4+ID4+ID4+ID4+IFNSQSBPU1MgSy5LLg0KPj4gPj4g Pj4gPj4gPj4gPj4gRW5nbGlzaDogaHR0cDovL3d3dy5zcmFvc3MuY28uanAvaW5kZXhfZW4vDQo+ PiA+PiA+PiA+PiA+PiA+PiBKYXBhbmVzZTpodHRwOi8vd3d3LnNyYW9zcy5jby5qcA0KPj4gPj4g Pj4gPj4gPj4gPj4NCj4+ID4+ID4+ID4+ID4+ID4NCj4+ID4+ID4+ID4+ID4+ID4NCj4+ID4+ID4+ ID4+ID4+ID4gLS0NCj4+ID4+ID4+ID4+ID4+ID4gTmFkYXYgU2hhdHoNCj4+ID4+ID4+ID4+ID4+ ID4gVGFpbG9yIEJyYW5kcyB8IENUTw0KPj4gPj4gPj4gPj4gPj4NCj4+ID4+ID4+ID4+ID4NCj4+ ID4+ID4+ID4+ID4NCj4+ID4+ID4+ID4+ID4gLS0NCj4+ID4+ID4+ID4+ID4gTmFkYXYgU2hhdHoN Cj4+ID4+ID4+ID4+ID4gVGFpbG9yIEJyYW5kcyB8IENUTw0KPj4gPj4gPj4gPj4NCj4+ID4+ID4+ ID4NCj4+ID4+ID4+ID4NCj4+ID4+ID4+ID4gLS0NCj4+ID4+ID4+ID4gTmFkYXYgU2hhdHoNCj4+ ID4+ID4+ID4gVGFpbG9yIEJyYW5kcyB8IENUTw0KPj4gPj4gPj4NCj4+ID4+ID4NCj4+ID4+ID4N Cj4+ID4+ID4gLS0NCj4+ID4+ID4gTmFkYXYgU2hhdHoNCj4+ID4+ID4gVGFpbG9yIEJyYW5kcyB8 IENUTw0KPj4gPj4NCj4+ID4NCj4+ID4NCj4+ID4gLS0NCj4+ID4gTmFkYXYgU2hhdHoNCj4+ID4g VGFpbG9yIEJyYW5kcyB8IENUTw0KPj4NCj4gDQo+IA0KPiAtLSANCj4gTmFkYXYgU2hhdHoNCj4g VGFpbG9yIEJyYW5kcyB8IENUTw0K