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 1wOuwd-000HYW-1t for pgpool-hackers@arkaria.postgresql.org; Mon, 18 May 2026 10:11:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wOuwa-001cCu-1e for pgpool-hackers@arkaria.postgresql.org; Mon, 18 May 2026 10:11:29 +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 1wOuwZ-001cCm-32 for pgpool-hackers@lists.postgresql.org; Mon, 18 May 2026 10:11:29 +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.98.2) (envelope-from ) id 1wOuwW-000000009es-2sqJ for pgpool-hackers@lists.postgresql.org; Mon, 18 May 2026 10:11:28 +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=yP7UkfkQdKb2IPANviMDbuXieUNtwb0xuH53sb+x4XA=; b=Ih+ZaGkmEqe95SpcMR3ieX3C4O 62sUWyOFq7XVHVG/0b4clbNaF3nyh1Y9EMyIoyF3Jr3SGAqUJ4huuRqMPcxT3sOQZoOxZY5nPPjgQ wZAnpcFkNMY/QRN6oI3Vj9Gds+h7Nh5yOoxHzrwkke+GuFhOWP3A3ljIjWbpip9iHFFCDtlvrOXv3 E6Kq8TfO2NxJFBLdUwFoE1fFnOYHTVKeomXxDf68YYsbKKwEubj+i8Dz5moFRYdSA8eAmRHWk3Pqo qhLT2h7z4rhZxeRegcssJBhcVb/MOvMu47O1xao5O3qGiYql+y1Lve4uiYRnTLurgYOoHQ34VQ0Qc eVoIuTYw==; Received: from [2409:11:4120:300:356e:90b7:ad1d:2644] (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 1wOuwO-000L2t-1h; Mon, 18 May 2026 10:11:19 +0000 Date: Mon, 18 May 2026 19:11:05 +0900 (JST) Message-Id: <20260518.191105.282754674107940178.ishii@postgresql.org> To: nadav@tailorbrands.com Cc: pgpool-hackers@lists.postgresql.org Subject: Re: Proposal: Recent mutated table tracking in memory From: Tatsuo Ishii In-Reply-To: References: <20260423.171408.1934918588656421138.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:356e:90b7:ad1d:2644 (failed) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk SGkgTmFkYXYsDQoNClNvcnJ5LCBJIG1pc3NlZCB5b3VyIGxhc3QgZW1haWwuDQpXaWxsIGNoZWNr ICYgdGVzdCB0b21vcnJvdy4NCg0KUmVnYXJkcywNCi0tDQpUYXRzdW8gSXNoaWkNClNSQSBPU1Mg Sy5LLg0KRW5nbGlzaDogaHR0cDovL3d3dy5zcmFvc3MuY28uanAvaW5kZXhfZW4vDQpKYXBhbmVz ZTpodHRwOi8vd3d3LnNyYW9zcy5jby5qcA0KDQo+IEhpIFRhdHN1bywNCj4gDQo+IEFueSB1cGRh dGUgb24gdGhpcyBwcm9wb3NhbD8NCj4gDQo+IFRoYW5rcw0KPiANCj4gT24gVGh1LCBBcHIgMjMs IDIwMjYgYXQgNToxNuKAr1BNIE5hZGF2IFNoYXR6IDxuYWRhdkB0YWlsb3JicmFuZHMuY29tPiB3 cm90ZToNCj4gDQo+PiBIaSBUYXRzdW8sDQo+Pg0KPj4gR29vZCBjYXRjaCBvbiB0aGUgMDA2Lm1l bXFjYWNoZSB0aW1lb3V0LiBNeSBwcmV2aW91cyBmaXggaGFkDQo+PiB3cm9uZyBzaWRlIGVmZmVj dHMgLS0gc2V0dGluZyB3cml0aW5nX3RyYW5zYWN0aW9uIGZvcg0KPj4gZG1sX2FkYXB0aXZlX2ds b2JhbCBhbHNvIGNoYW5nZWQgcm91dGluZyBiZWhhdmlvciAoaXQgZm9yY2VkIHRoZQ0KPj4gd2hv bGUgdHJhbnNhY3Rpb24gdG8gcHJpbWFyeSwgZWZmZWN0aXZlbHkgcmVkdWNpbmcgdGhlIGZlYXR1 cmUgdG8NCj4+ICd0cmFuc2FjdGlvbicgbW9kZSkuIFRoYXQncyB3aGF0IGNhdXNlZCB0aGUgaGFu Zy4NCj4+DQo+PiBGaXhlZCBwcm9wZXJseSBpbiB2MzogaW5zdGVhZCBvZiB0b3VjaGluZyB3cml0 aW5nX3RyYW5zYWN0aW9uLA0KPj4gYWRkZWQgYSBtZW1xY2FjaGUtc3BlY2lmaWMgZ3VhcmQgdGhh dCBjaGVja3Mgd2hldGhlciB0aGUgY3VycmVudA0KPj4gZG1sX2FkYXB0aXZlKiBzZXNzaW9uIGhh cyB0cmFja2VkIHdyaXRlcyBpbiB0aGUgY3VycmVudA0KPj4gdHJhbnNhY3Rpb24sIGFuZCBza2lw cyB0aGUgY2FjaGUgZmV0Y2ggaWYgc28uDQo+Pg0KPj4gQXR0YWNoZWQ6IHYzLTAwMDEtRmVhdHVy ZS1sb2FkLWJhbGFuY2luZy1jb250cm9sLWJ5LXRhYmxlLXRyYWNraW5nLnBhdGNoDQo+Pg0KPj4g Q2hhbmdlcyBpbiB2MyB2cyB2MjoNCj4+DQo+PiAtIHBvb2xfc2V0X3dyaXRpbmdfdHJhbnNhY3Rp b24oKSByZXZlcnRlZCB0byBvcmlnaW5hbCBiZWhhdmlvcg0KPj4gICAoZG1sX2FkYXB0aXZlX2ds b2JhbCBubyBsb25nZXIgc2V0cyB3cml0aW5nX3RyYW5zYWN0aW9uLCBzbw0KPj4gICByb3V0aW5n IHN0YXlzIHBlci10YWJsZSBhcyBpbnRlbmRlZCkuDQo+Pg0KPj4gLSBBZGRlZCBuZXcgaGVscGVy IHBvb2xfaGFzX2RtbF9hZGFwdGl2ZV93cml0ZV9pbl90cmFuc2FjdGlvbigpDQo+PiAgIGluIHBv b2xfc2Vzc2lvbl9jb250ZXh0LmMuIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSBjdXJyZW50IHNlc3Np b24NCj4+ICAgaXMgaW4gZG1sX2FkYXB0aXZlKiBtb2RlLCBpcyBpbnNpZGUgYW4gZXhwbGljaXQg dHJhbnNhY3Rpb24sIGFuZA0KPj4gICBoYXMgYWxyZWFkeSB0cmFja2VkIGF0IGxlYXN0IG9uZSB3 cml0ZSAodmlhDQo+PiAgIHRyYW5zYWN0aW9uX3RlbXBfd3JpdGVfbGlzdCkuDQo+Pg0KPj4gLSBU aGUgdHdvIG1lbXFjYWNoZSBmZXRjaCBndWFyZHMgaW4gcG9vbF9wcm90b19tb2R1bGVzLmMNCj4+ ICAgKHNpbXBsZSBxdWVyeSBhdCBsaW5lIDI3MCwgZXh0ZW5kZWQgcXVlcnkgYXQgbGluZSAxMDI4 KSBub3cNCj4+ICAgYWxzbyBjYWxsICFwb29sX2hhc19kbWxfYWRhcHRpdmVfd3JpdGVfaW5fdHJh bnNhY3Rpb24oKS4NCj4+ICAgQXV0b2NvbW1pdCB3cml0ZXMgaW4gZG1sX2FkYXB0aXZlX2dsb2Jh bCBhcmUgc3RpbGwgaGFuZGxlZCBieQ0KPj4gICB0aGUgZXhpc3RpbmcgcG9vbF9pbnZhbGlkYXRl X3F1ZXJ5X2NhY2hlKCkgYXQgQ09NTUlUIHRpbWUgLS0NCj4+ICAgbm8gY2hhbmdlIG5lZWRlZCB0 aGVyZS4NCj4+DQo+PiBWZXJpZmllZCBsb2NhbGx5IGJ5IG11dGF0aW5nIDAwNi5tZW1xY2FjaGUg d2l0aA0KPj4gZGlzYWJsZV9sb2FkX2JhbGFuY2Vfb25fd3JpdGUgPSAnZG1sX2FkYXB0aXZlX2ds b2JhbCcgaW4gdGhlDQo+PiBzdHJlYW1pbmcgcmVwbGljYXRpb24gbW9kZSAodGhlIG9ubHkgbW9k ZSB3aGVyZSBkbWxfYWRhcHRpdmUNCj4+IGFwcGxpZXMpIGFuZCB0aGUgamRiY3Rlc3Qgbm93IGNv cnJlY3RseSByZXR1cm5zICIyIiBpbnN0ZWFkIG9mDQo+PiB0aGUgc3RhbGUgY2FjaGVkICIxIi4g Qm90aCAwMDYubWVtcWNhY2hlIGFuZCAwNDMudHJhY2tfdGFibGVfbXV0YXRpb24NCj4+IHBhc3Mu DQo+Pg0KPj4gVGhhbmtzIQ0KPj4NCj4+IE9uIFRodSwgQXByIDIzLCAyMDI2IGF0IDExOjE04oCv QU0gVGF0c3VvIElzaGlpIDxpc2hpaUBwb3N0Z3Jlc3FsLm9yZz4NCj4+IHdyb3RlOg0KPj4NCj4+ PiBIaSBOYWRhdiwNCj4+Pg0KPj4+IFVuZm9ydHVuYXRlbHkgdGhlIG11dGF0ZWQgMDA2Lm1lbXFj YWNoZSBmYWlsZWQgKHRpbWVvdXQpLg0KPj4+DQo+Pj4gPj4gPiBtZW1xY2FjaGUgYnVnIGZpeA0K Pj4+ID4+ID4gLS0tLS0tLS0tLS0tLS0tLS0NCj4+PiA+PiA+DQo+Pj4gPj4gPiBHb29kIGNhdGNo LiBUaGUgcm9vdCBjYXVzZTogcG9vbF9zZXRfd3JpdGluZ190cmFuc2FjdGlvbigpIHdhcw0KPj4+ ID4+ID4gZXhwbGljaXRseSBza2lwcGluZyBkbWxfYWRhcHRpdmVfZ2xvYmFsLCBzbw0KPj4+ID4+ ID4gcG9vbF9pc193cml0aW5nX3RyYW5zYWN0aW9uKCkgYWx3YXlzIHJldHVybmVkIGZhbHNlIGlu IHRoaXMgbW9kZS4NCj4+PiA+PiA+IFRoZSBxdWVyeSBjYWNoZSBmZXRjaCBndWFyZCBhdCBwb29s X3Byb3RvX21vZHVsZXMuYzoyNzANCj4+PiA+PiA+ICghcG9vbF9pc193cml0aW5nX3RyYW5zYWN0 aW9uKCkpIHRoZW4gc2VydmVkIHN0YWxlIGNhY2hlZCByZXN1bHRzDQo+Pj4gPj4gPiBhZnRlciBE TUwgaW4gdGhlIHNhbWUgdHJhbnNhY3Rpb24uDQo+Pj4gPj4gPg0KPj4+ID4+ID4gRml4OiBwb29s X3NldF93cml0aW5nX3RyYW5zYWN0aW9uKCkgbm93IHNldHMgdGhlIGZsYWcgZm9yDQo+Pj4gPj4g PiBkbWxfYWRhcHRpdmVfZ2xvYmFsIChvbmx5ICdvZmYnIGFuZCAnZG1sX2FkYXB0aXZlJyBza2lw IGl0KS4gVGhpcw0KPj4+ID4+ID4gZW5zdXJlcyB0aGUgcXVlcnkgY2FjaGUgaXMgcHJvcGVybHkg YnlwYXNzZWQgYWZ0ZXIgd3JpdGVzIHdpdGhpbg0KPj4+ID4+ID4gdGhlIHNhbWUgdHJhbnNhY3Rp b24uDQo+Pj4NCj4+PiBSZWdhcmRzLA0KPj4+IC0tDQo+Pj4gVGF0c3VvIElzaGlpDQo+Pj4gU1JB IE9TUyBLLksuDQo+Pj4gRW5nbGlzaDogaHR0cDovL3d3dy5zcmFvc3MuY28uanAvaW5kZXhfZW4v DQo+Pj4gSmFwYW5lc2U6aHR0cDovL3d3dy5zcmFvc3MuY28uanANCj4+Pg0KPj4+ID4gSGkgVGF0 c3VvLA0KPj4+ID4NCj4+PiA+IFJlYmFzZWQgb250byBjdXJyZW50IG1hc3RlciwgcmVudW1iZXJl ZCB0aGUgcmVncmVzc2lvbiB0ZXN0cw0KPj4+ID4gKDA0My8wNDQgdG8gYXZvaWQgY29sbGlzaW9u IHdpdGggdGhlIG5ldyAwNDIuc3NsX3JlbG9hZCksIGFuZA0KPj4+ID4gY29tYmluZWQgZXZlcnl0 aGluZyBpbnRvIGEgc2luZ2xlIGNvbW1pdC4NCj4+PiA+DQo+Pj4gPiBBdHRhY2hlZDogdjItMDAw MS1GZWF0dXJlLWxvYWQtYmFsYW5jaW5nLWNvbnRyb2wtYnktdGFibGUtdHJhY2tpbmcucGF0Y2gN Cj4+PiA+DQo+Pj4gPiBMb29raW5nIGZvcndhcmQgdG8geW91ciByZXZpZXcuDQo+Pj4gPg0KPj4+ ID4NCj4+PiA+IE9uIFN1biwgQXByIDE5LCAyMDI2IGF0IDEwOjI14oCvQU0gVGF0c3VvIElzaGlp IDxpc2hpaUBwb3N0Z3Jlc3FsLm9yZz4NCj4+PiB3cm90ZToNCj4+PiA+DQo+Pj4gPj4gPiBIaSBU YXRzdW8sDQo+Pj4gPj4gPg0KPj4+ID4+ID4gaGFuayB5b3UgZm9yIHRoZSBkZXRhaWxlZCByZXZp ZXcuIEF0dGFjaGVkIHBhdGNoIGFkZHJlc3NlcyBhbGwgaXRlbXMuDQo+Pj4gPj4NCj4+PiA+PiBJ IGd1ZXNzIHRoZSBhdHRhY2hlZCBwYXRjaCBpcyBvbiB0b3Agb2YNCj4+PiA+PiB2MS0wMDAxLUZl YXR1cmUtbG9hZC1iYWxhbmNpbmctY29udHJvbC1ieS10YWJsZS10cmFja2luZy5wYXRjaC4gIFRv DQo+Pj4gPj4gYXBwbHkgdjItMDAwMS1hZGRyZXNzLXJldmlldy5wYXRjaCwgd2UgbmVlZCB0byBh cHBseQ0KPj4+ID4+IHYxLTAwMDEtRmVhdHVyZS1sb2FkLWJhbGFuY2luZy1jb250cm9sLWJ5LXRh YmxlLXRyYWNraW5nLnBhdGNoIGZpcnN0Lg0KPj4+ID4+IFVuZm9ydHVuYXRlbHkgZHVlIHRvIHJl Y2VudCBjb21taXQsIGl0IGRvZXMgbm90IGFwcGx5IGFueW1vcmUuIENhbiB5b3UNCj4+PiA+PiBw bGVhc2UgcHJvdmlkZSB2MSArIHYyIHRoYXQgYXJlIHJlYmFzZWQgYWdhaW5zdCBsYXRlc3QgbWFz dGVyIGJyYW5jaD8NCj4+PiA+PiBBbHNvIDA0MiByZWdyZXNzaW9uIHRlc3QgaXMgYWxyZWFkeSB1 c2VkIGJ5IHJlY2VudCBjb21taXQuIENhbiB5b3UNCj4+PiA+PiByZW51bWJlciAwNDIudHJhY2tf dGFibGVfbXV0YXRpb24gYW5kDQo+Pj4gPj4gMDQzLnRyYWNrX3RhYmxlX211dGF0aW9uX3dhdGNo ZG9nIHRvIDA0My50cmFja190YWJsZV9tdXRhdGlvbiBhbmQNCj4+PiA+PiAwNDQudHJhY2tfdGFi bGVfbXV0YXRpb25fd2F0Y2hkb2cgYWNjb3JkaW5nbHk/DQo+Pj4gPj4NCj4+PiA+PiBMb29raW5n IGZvcndhcmQgdG8gc2VlaW5nIG5ldyBwYXRjaC4NCj4+PiA+Pg0KPj4+ID4+IFJlZ2FyZHMsDQo+ Pj4gPj4gLS0NCj4+PiA+PiBUYXRzdW8gSXNoaWkNCj4+PiA+PiBTUkEgT1NTIEsuSy4NCj4+PiA+ PiBFbmdsaXNoOiBodHRwOi8vd3d3LnNyYW9zcy5jby5qcC9pbmRleF9lbi8NCj4+PiA+PiBKYXBh bmVzZTpodHRwOi8vd3d3LnNyYW9zcy5jby5qcA0KPj4+ID4+DQo+Pj4gPj4NCj4+PiA+PiA+IG1l bXFjYWNoZSBidWcgZml4DQo+Pj4gPj4gPiAtLS0tLS0tLS0tLS0tLS0tLQ0KPj4+ID4+ID4NCj4+ PiA+PiA+IEdvb2QgY2F0Y2guIFRoZSByb290IGNhdXNlOiBwb29sX3NldF93cml0aW5nX3RyYW5z YWN0aW9uKCkgd2FzDQo+Pj4gPj4gPiBleHBsaWNpdGx5IHNraXBwaW5nIGRtbF9hZGFwdGl2ZV9n bG9iYWwsIHNvDQo+Pj4gPj4gPiBwb29sX2lzX3dyaXRpbmdfdHJhbnNhY3Rpb24oKSBhbHdheXMg cmV0dXJuZWQgZmFsc2UgaW4gdGhpcyBtb2RlLg0KPj4+ID4+ID4gVGhlIHF1ZXJ5IGNhY2hlIGZl dGNoIGd1YXJkIGF0IHBvb2xfcHJvdG9fbW9kdWxlcy5jOjI3MA0KPj4+ID4+ID4gKCFwb29sX2lz X3dyaXRpbmdfdHJhbnNhY3Rpb24oKSkgdGhlbiBzZXJ2ZWQgc3RhbGUgY2FjaGVkIHJlc3VsdHMN Cj4+PiA+PiA+IGFmdGVyIERNTCBpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbi4NCj4+PiA+PiA+DQo+ Pj4gPj4gPiBGaXg6IHBvb2xfc2V0X3dyaXRpbmdfdHJhbnNhY3Rpb24oKSBub3cgc2V0cyB0aGUg ZmxhZyBmb3INCj4+PiA+PiA+IGRtbF9hZGFwdGl2ZV9nbG9iYWwgKG9ubHkgJ29mZicgYW5kICdk bWxfYWRhcHRpdmUnIHNraXAgaXQpLiBUaGlzDQo+Pj4gPj4gPiBlbnN1cmVzIHRoZSBxdWVyeSBj YWNoZSBpcyBwcm9wZXJseSBieXBhc3NlZCBhZnRlciB3cml0ZXMgd2l0aGluDQo+Pj4gPj4gPiB0 aGUgc2FtZSB0cmFuc2FjdGlvbi4NCj4+PiA+PiA+DQo+Pj4gPj4gPiBSZW1vdmVkIGRlYWQgcXVl cnkgcGFyc2UgY2FjaGUgY29kZSAofjcwMCBsaW5lcykNCj4+PiA+PiA+IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+PiA+PiA+DQo+Pj4gPj4gPiBZ b3UncmUgcmlnaHQgLS0gcG9vbF90cmFja190YWJsZV9tdXRhdGlvbl9nZXRfY2FjaGVkX3BhcnNl LA0KPj4+ID4+ID4gcG9vbF90cmFja190YWJsZV9tdXRhdGlvbl9jYWNoZV9wYXJzZSwgYW5kDQo+ Pj4gPj4gPiBwb29sX3RyYWNrX3RhYmxlX211dGF0aW9uX25vcm1hbGl6ZV9hbmRfaGFzaCB3ZXJl IG5ldmVyIGNhbGxlZC4NCj4+PiA+PiA+IFRoZXNlIHdlcmUgbGVmdG92ZXIgZnJvbSBhbiBlYXJs aWVyIGRlc2lnbiB3aGVyZSB3ZSBwbGFubmVkIHRvDQo+Pj4gPj4gPiBjYWNoZSBTUUwgcGFyc2Ug cmVzdWx0cyBpbiBzaGFyZWQgbWVtb3J5LiBUaGUgZmVhdHVyZSBlbmRlZCB1cA0KPj4+ID4+ID4g dXNpbmcgcGdwb29sJ3MgZXhpc3RpbmcgcGFyc2VyIGRpcmVjdGx5LCBhbmQgdGhpcyBjb2RlIHdh cyBuZXZlcg0KPj4+ID4+ID4gd2lyZWQgdXAuDQo+Pj4gPj4gPg0KPj4+ID4+ID4gUmVtb3ZlZDog UXVlcnlQYXJzZUNhY2hlIGFuZCBRdWVyeVBhcnNlRW50cnkgc3RydWN0cywgYWxsIHJlbGF0ZWQN Cj4+PiA+PiA+IHN0YXRpYyBmdW5jdGlvbnMsIHRoZSBUUkFDS19UQUJMRV9NVVRBVElPTl9RVUVS WV9TRU0gc2VtYXBob3JlLA0KPj4+ID4+ID4gYW5kIHRoZSB0cmFja190YWJsZV9tdXRhdGlvbl9x dWVyeV9idWNrZXRzIC8NCj4+PiA+PiA+IHRyYWNrX3RhYmxlX211dGF0aW9uX3F1ZXJ5X3BhcnNl X2NhY2hlX3NpemUgY29uZmlndXJhdGlvbg0KPj4+ID4+ID4gcGFyYW1ldGVycy4gVGhpcyBhbHNv IHJlZHVjZXMgc2hhcmVkIG1lbW9yeSB1c2FnZSBmcm9tIH42LjQgTUINCj4+PiA+PiA+IHRvIH44 MCBLQiB3aXRoIGRlZmF1bHQgc2V0dGluZ3MuDQo+Pj4gPj4gPg0KPj4+ID4+ID4gY2hlY2tfb2Jq ZWN0X3JlbGF0aW9uc2hpcF9saXN0IHNjb3BlDQo+Pj4gPj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+Pj4gPj4gPg0KPj4+ID4+ID4gWW91J3JlIGNvcnJlY3QgLS0g ZG1sX2FkYXB0aXZlX2dsb2JhbCBkb2VzIG5vdCB1c2UNCj4+PiA+PiA+IGRtbF9hZGFwdGl2ZV9v YmplY3RfcmVsYXRpb25zaGlwX2xpc3QuIENoYW5nZWQNCj4+PiA+PiA+IGNoZWNrX29iamVjdF9y ZWxhdGlvbnNoaXBfbGlzdCgpIHRvIGNoZWNrIGZvciBETEJPV19ETUxfQURBUFRJVkUNCj4+PiA+ PiA+IG9ubHksIG5vdCBETEJPV19JU19ETUxfQURBUFRJVkUgKHdoaWNoIGluY2x1ZGVzIGdsb2Jh bCkuDQo+Pj4gPj4gPg0KPj4+ID4+ID4gRG9jdW1lbnRhdGlvbiBmaXhlcw0KPj4+ID4+ID4gLS0t LS0tLS0tLS0tLS0tLS0tLQ0KPj4+ID4+ID4NCj4+PiA+PiA+IC0gUmVtb3ZlZCAiKExhZ2xlc3Mg UmVwbGljYSBSZWFkcykiIGZyb20gc2VjdGlvbiB0aXRsZSBhbmQNCj4+PiA+PiA+ICAgImxhZ2xl c3MiIGxhbmd1YWdlIGZyb20gZGVzY3JpcHRpb24uDQo+Pj4gPj4gPg0KPj4+ID4+ID4gLSBEZXNj cmliZWQgZmFsbGJhY2sgYmVoYXZpb3Igd2hlbiBuZWl0aGVyDQo+Pj4gPj4gPiAgIHJlcGxpY2F0 aW9uX2RlbGF5X3NvdXJjZV9jbWQgbm9yIGRlbGF5X3RocmVzaG9sZF9ieV90aW1lIGlzDQo+Pj4g Pj4gPiAgIGNvbmZpZ3VyZWQgKFRUTCBzdGF5cyBhdCAxMDBtcyBkZWZhdWx0IG1pbmltdW0pLg0K Pj4+ID4+ID4NCj4+PiA+PiA+IC0gInF1ZXJ5IGNhY2hlIiByZWZlcmVuY2VzIHJlbW92ZWQgKHRo ZSBxdWVyeSBwYXJzZSBjYWNoZSBpcyBnb25lKS4NCj4+PiA+PiA+DQo+Pj4gPj4gPiAtIEFkZGVk IDEyOC10YWJsZS1wZXItU0VMRUNUIGxpbWl0IHRvIExpbWl0YXRpb25zIHNlY3Rpb24NCj4+PiA+ PiA+ICAgKHVzZXMgUE9PTF9NQVhfU0VMRUNUX09JRFMpLg0KPj4+ID4+ID4NCj4+PiA+PiA+IENv ZGUgc3R5bGUgZml4ZXMNCj4+PiA+PiA+IC0tLS0tLS0tLS0tLS0tLS0NCj4+PiA+PiA+DQo+Pj4g Pj4gPiAtIERMQk9XX0lTX0RNTF9BREFQVElWRSgpIGNhbGxzIG5vIGxvbmdlciBzcGxpdCBhY3Jv c3MgbGluZXMuDQo+Pj4gPj4gPg0KPj4+ID4+ID4gLSBTcGxpdCB0aGUgbG9uZyBlcnJtc2cgbGlu ZSBpbg0KPj4+ID4+ID4gICBpc19zZWxlY3Rfb2JqZWN0X2luX3RlbXBfd3JpdGVfbGlzdC4NCj4+ PiA+PiA+DQo+Pj4gPj4gPiAtIFJlbW92ZWQgcmVkdW5kYW50IGlzX2FkYXB0aXZlIHZhcmlhYmxl IGluDQo+Pj4gPj4gPiAgIGlzX3NlbGVjdF9vYmplY3RfaW5fdGVtcF93cml0ZV9saXN0ICh0aGUg Y2hlY2sgYXQgZnVuY3Rpb24NCj4+PiA+PiA+ICAgZW50cnkgYWxyZWFkeSBndWFyYW50ZWVzIGl0 KS4NCj4+PiA+PiA+DQo+Pj4gPj4gPiBUaGFua3MhDQo+Pj4gPj4gPg0KPj4+ID4+ID4gT24gV2Vk LCBBcHIgMTUsIDIwMjYgYXQgMTo0M+KAr0FNIFRhdHN1byBJc2hpaSA8aXNoaWlAcG9zdGdyZXNx bC5vcmc+DQo+Pj4gPj4gd3JvdGU6DQo+Pj4gPj4gPg0KPj4+ID4+ID4+IEhpIE5hZGF2LA0KPj4+ ID4+ID4+DQo+Pj4gPj4gPj4gPiBIaSBUYXRzdW8sDQo+Pj4gPj4gPj4gPg0KPj4+ID4+ID4+ID4g TG9va3MgZ29vZCB0byBtZSB0aGFua3MhDQo+Pj4gPj4gPj4gPg0KPj4+ID4+ID4+ID4gUGxlYXNl IGdvIGFoZWFkIHdpdGggeW91ciByZXZpZXcuIHdhaXRpbmcgdG8gaGVhciBiYWNrIGZyb20geW91 Lg0KPj4+ID4+ID4+DQo+Pj4gPj4gPj4gSGVyZSBhcmUgdGhlIGNvZGUgcmV2aWV3IHJlc3VsdHMu DQo+Pj4gPj4gPj4NCj4+PiA+PiA+PiBkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvYWRiYWxh bmNlLnNnbWwNCj4+PiA+PiBiL2RvYy9zcmMvc2dtbC9sb2FkYmFsYW5jZS5zZ21sDQo+Pj4gPj4g Pj4gaW5kZXggOWUxZTdiMzliLi43Mzg0Y2U4MWEgMTAwNjQ0DQo+Pj4gPj4gPj4gLS0tIGEvZG9j L3NyYy9zZ21sL2xvYWRiYWxhbmNlLnNnbWwNCj4+PiA+PiA+PiArKysgYi9kb2Mvc3JjL3NnbWwv bG9hZGJhbGFuY2Uuc2dtbA0KPj4+ID4+ID4+IDoNCj4+PiA+PiA+PiArIDxzZWN0MiBpZD0icnVu dGltZS1jb25maWctdGFibGUtbXV0YXRpb24tbWFwIj4NCj4+PiA+PiA+PiArICA8dGl0bGU+VGFi bGUgTXV0YXRpb24gTWFwIENvbmZpZ3VyYXRpb24gKExhZ2xlc3MgUmVwbGljYQ0KPj4+ID4+IFJl YWRzKTwvdGl0bGU+DQo+Pj4gPj4gPj4NCj4+PiA+PiA+PiAiKExhZ2xlc3MgUmVwbGljYSBSZWFk cykiIHNvdW5kcyBsaWtlIGFuIGFkdmVydGlzZW1lbnQgdG8gbWUuIEl0DQo+Pj4gPj4gPj4gc2hv dWxkIGJlIHJlbW92ZWQuDQo+Pj4gPj4gPj4NCj4+PiA+PiA+PiArICA8cGFyYT4NCj4+PiA+PiA+ PiArICAgVGhlc2UgcGFyYW1ldGVycyBjb25maWd1cmUgdGhlIHRyYWNrIHRhYmxlIG11dGF0aW9u IGZlYXR1cmUsDQo+Pj4gd2hpY2gNCj4+PiA+PiBpcw0KPj4+ID4+ID4+IGFjdGl2YXRlZCBieSBz ZXR0aW5nDQo+Pj4gPj4gPj4gKyAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1kaXNhYmxlLWxvYWQtYmFs YW5jZS1vbi13cml0ZSI+IHRvDQo+Pj4gPj4gPj4gPGxpdGVyYWw+ZG1sX2FkYXB0aXZlX2dsb2Jh bDwvbGl0ZXJhbD4uDQo+Pj4gPj4gPj4gKyAgIFRoZSBmZWF0dXJlIHRyYWNrcyByZWNlbnRseSB3 cml0dGVuIHRhYmxlcyB0byBwcmV2ZW50IHN0YWxlDQo+Pj4gcmVhZHMNCj4+PiA+PiBmcm9tDQo+ Pj4gPj4gPj4gcmVwbGljYSBub2RlcyBkdXJpbmcNCj4+PiA+PiA+PiArICAgcmVwbGljYXRpb24g bGFnLCBpbXBsZW1lbnRpbmcgdGhlICJsYWdsZXNzIiBhcmNoaXRlY3R1cmUNCj4+PiBwYXR0ZXJu IGZvcg0KPj4+ID4+ID4+IGRpc3RyaWJ1dGVkIHN5c3RlbXMNCj4+PiA+PiA+PiArICAgd2l0aCBy ZWFkIHJlcGxpY2FzLg0KPj4+ID4+ID4+DQo+Pj4gPj4gPj4gSSB0aGluayB0aGUgZmVhdHVyZSBk b2VzIG5vdCBndWFyYW50ZWUgImxhZ2xlc3MiIGFueXRpbWUsIGluIGFsbA0KPj4+IGNhc2VzLg0K Pj4+ID4+ID4+DQo+Pj4gPj4gPj4gKyAgPHBhcmE+DQo+Pj4gPj4gPj4gKyAgIFRoaXMgZmVhdHVy ZSByZXF1aXJlcyB0aW1lLWJhc2VkIHJlcGxpY2F0aW9uIGRlbGF5IG1vbml0b3JpbmcuDQo+Pj4g VGhpcw0KPj4+ID4+ID4+IGNhbiBiZSBwcm92aWRlZCBieSBlaXRoZXINCj4+PiA+PiA+PiArICAg PHhyZWYgbGlua2VuZD0iZ3VjLXJlcGxpY2F0aW9uLWRlbGF5LXNvdXJjZS1jbWQiPiAoZXh0ZXJu YWwNCj4+PiBjb21tYW5kDQo+Pj4gPj4gPj4gbW9kZSkgb3IgYnkgc2V0dGluZw0KPj4+ID4+ID4+ ICsgICA8eHJlZiBsaW5rZW5kPSJndWMtZGVsYXktdGhyZXNob2xkLWJ5LXRpbWUiPiAod2hpY2gg dXNlcw0KPj4+ID4+ID4+IDxsaXRlcmFsPnBnX3N0YXRfcmVwbGljYXRpb24ucmVwbGF5X2xhZzwv bGl0ZXJhbD4NCj4+PiA+PiA+PiArICAgZnJvbSBQb3N0Z3JlU1FMIDEwKykuIEF0IGxlYXN0IG9u ZSBvZiB0aGVzZSBtdXN0IGJlIGNvbmZpZ3VyZWQNCj4+PiBmb3INCj4+PiA+PiB0aGUNCj4+PiA+ PiA+PiBUVEwgY2FsY3VsYXRpb24gdG8gd29yay4NCj4+PiA+PiA+Pg0KPj4+ID4+ID4+IElmIG9u ZSBvZiB0aGVzZSBpcyBub3Qgc2V0LCB3aGF0IGhhcHBlbnM/IEVycm9yPyBOZWVkIHRvIGRlc2Ny aWJlDQo+Pj4gaXQuDQo+Pj4gPj4gPj4NCj4+PiA+PiA+PiArICA8L3BhcmE+DQo+Pj4gPj4gPj4g Kw0KPj4+ID4+ID4+ICsgIDx3YXJuaW5nPg0KPj4+ID4+ID4+ICsgICA8cGFyYT4NCj4+PiA+PiA+ PiArICAgIEVuYWJsaW5nIDxsaXRlcmFsPmRtbF9hZGFwdGl2ZV9nbG9iYWw8L2xpdGVyYWw+IGlu Y3JlYXNlcw0KPj4+IHNoYXJlZA0KPj4+ID4+ID4+IG1lbW9yeSBjb25zdW1wdGlvbi4gV2l0aCBk ZWZhdWx0IHNldHRpbmdzLA0KPj4+ID4+ID4+ICsgICAgdGhlIGZlYXR1cmUgcmVxdWlyZXMgYXBw cm94aW1hdGVseSA2LjQgTUIgb2Ygc2hhcmVkIG1lbW9yeQ0KPj4+ICgwLjEgTUINCj4+PiA+PiA+ PiBmb3IgdGFibGUgdHJhY2tpbmcgKyA2LjMgTUIgZm9yIHF1ZXJ5IGNhY2hlKS4NCj4+PiA+PiA+ Pg0KPj4+ID4+ID4+ICJxdWVyeSBjYWNoZSIgc2hvdWxkIGJlICJxdWVyeSBwYXJzZSBjYWNoZSIu DQo+Pj4gPj4gPj4NCj4+PiA+PiA+PiArICAgIE1lbW9yeSB1c2FnZSBzY2FsZXMgd2l0aCBjb25m aWd1cmF0aW9uIHBhcmFtZXRlcnM6DQo+Pj4gPj4gPj4gKyAgIDwvcGFyYT4NCj4+PiA+PiA+PiAr ICAgPGl0ZW1pemVkbGlzdD4NCj4+PiA+PiA+PiArICAgIDxsaXN0aXRlbT4NCj4+PiA+PiA+PiAr ICAgICA8cGFyYT4NCj4+PiA+PiA+PiArICAgICAgVGFibGUgdHJhY2tpbmc6IDxsaXRlcmFsPnRy YWNrX3RhYmxlX211dGF0aW9uX3RhYmxlX3NpemUgKiA0MA0KPj4+ID4+ID4+IGJ5dGVzPC9saXRl cmFsPiAoZGVmYXVsdDogMjA0OCAqIDQwID0gfjgwIEtCKQ0KPj4+ID4+ID4+ICsgICAgIDwvcGFy YT4NCj4+PiA+PiA+PiArICAgIDwvbGlzdGl0ZW0+DQo+Pj4gPj4gPj4gKyAgICA8bGlzdGl0ZW0+ DQo+Pj4gPj4gPj4gKyAgICAgPHBhcmE+DQo+Pj4gPj4gPj4gKyAgICAgIFF1ZXJ5IGNhY2hlOg0K Pj4+ID4+IDxsaXRlcmFsPnRyYWNrX3RhYmxlX211dGF0aW9uX3F1ZXJ5X3BhcnNlX2NhY2hlX3Np emUgKg0KPj4+ID4+ID4+IDY0MCBieXRlczwvbGl0ZXJhbD4gKGRlZmF1bHQ6IDEwMDAwICogNjQw ID0gfjYuMyBNQikNCj4+PiA+PiA+Pg0KPj4+ID4+ID4+ICJxdWVyeSBjYWNoZSIgc2hvdWxkIGJl ICJxdWVyeSBwYXJzZSBjYWNoZSIuDQo+Pj4gPj4gPj4NCj4+PiA+PiA+PiArICAgPHRpdGxlPkxp bWl0YXRpb25zPC90aXRsZT4NCj4+PiA+PiA+Pg0KPj4+ID4+ID4+IEkgdGhpbmsgbnVtYmVyIG9m IHRhYmxlcyB0YWNrZWQgaW4gYSBTRUxFQ1QgaXMgbGltaXRlZCB0byA4LiBJdA0KPj4+IHNob3Vs ZA0KPj4+ID4+ID4+IGJlIG1lbnRpb25lZC4NCj4+PiA+PiA+Pg0KPj4+ID4+ID4+IGRpZmYgLS1n aXQgYS9zcmMvY29udGV4dC9wb29sX3F1ZXJ5X2NvbnRleHQuYw0KPj4+ID4+ID4+IGIvc3JjL2Nv bnRleHQvcG9vbF9xdWVyeV9jb250ZXh0LmMNCj4+PiA+PiA+PiBpbmRleCBhMDU2YWM1OTYuLjAx OTBkMzY3MyAxMDA2NDQNCj4+PiA+PiA+PiAtLS0gYS9zcmMvY29udGV4dC9wb29sX3F1ZXJ5X2Nv bnRleHQuYw0KPj4+ID4+ID4+ICsrKyBiL3NyYy9jb250ZXh0L3Bvb2xfcXVlcnlfY29udGV4dC5j DQo+Pj4gPj4gPj4gQEAgLTE4MjgsMTUgKzE4MjksMjMgQEAgaXNfaW5fbGlzdChjaGFyICpuYW1l LCBMaXN0ICpsaXN0KQ0KPj4+ID4+ID4+ICBzdGF0aWMgYm9vbA0KPj4+ID4+ID4+ICBpc19zZWxl Y3Rfb2JqZWN0X2luX3RlbXBfd3JpdGVfbGlzdChOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQ0K Pj4+ID4+ID4+ICB7DQo+Pj4gPj4gPj4gLSAgICAgICBpZiAobm9kZSA9PSBOVUxMIHx8DQo+Pj4g cG9vbF9jb25maWctPmRpc2FibGVfbG9hZF9iYWxhbmNlX29uX3dyaXRlDQo+Pj4gPj4gIT0NCj4+ PiA+PiA+PiBETEJPV19ETUxfQURBUFRJVkUpDQo+Pj4gPj4gPj4gKyAgICAgICBpZiAobm9kZSA9 PSBOVUxMIHx8DQo+Pj4gPj4gPj4gKyAgICAgICAgICAgICAgICFETEJPV19JU19ETUxfQURBUFRJ VkUoDQo+Pj4gPj4gPj4gKw0KPj4+ID4+ID4+IHBvb2xfY29uZmlnLT5kaXNhYmxlX2xvYWRfYmFs YW5jZV9vbl93cml0ZSkpDQo+Pj4gPj4gPj4NCj4+PiA+PiA+PiBZb3UgZG9uJ3QgbmVlZCB0byBz cGxpdCB0aGUgbGluZS4NCj4+PiA+PiA+Pg0KPj4+ID4+ID4+ICsgICAgICAgICAgICAgICBpc19h ZGFwdGl2ZSA9IERMQk9XX0lTX0RNTF9BREFQVElWRSgNCj4+PiA+PiA+PiArDQo+Pj4gPj4gPj4g ICAgICAgICAgICAgIHBvb2xfY29uZmlnLT5kaXNhYmxlX2xvYWRfYmFsYW5jZV9vbl93cml0ZSk7 DQo+Pj4gPj4gPj4NCj4+PiA+PiA+PiBZb3UgZG9uJ3QgbmVlZCB0byBzcGxpdCB0aGUgbGluZS4N Cj4+PiA+PiA+Pg0KPj4+ID4+ID4+IC0gICAgICAgICAgICAgICBpZiAocG9vbF9jb25maWctPmRp c2FibGVfbG9hZF9iYWxhbmNlX29uX3dyaXRlID09DQo+Pj4gPj4gPj4gRExCT1dfRE1MX0FEQVBU SVZFICYmIHNlc3Npb25fY29udGV4dC0+aXNfaW5fdHJhbnNhY3Rpb24pDQo+Pj4gPj4gPj4gKyAg ICAgICAgICAgICAgIGlmIChpc19hZGFwdGl2ZSAmJg0KPj4+ID4+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgIHNlc3Npb25fY29udGV4dC0+aXNfaW5fdHJhbnNhY3Rpb24pDQo+Pj4gPj4gPj4g ICAgICAgICAgICAgICAgIHsNCj4+PiA+PiA+PiAgICAgICAgICAgICAgICAgICAgICAgICBlcmVw b3J0KERFQlVHMSwNCj4+PiA+PiA+Pg0KPj4+ID4+ID4+IChlcnJtc2coImlzX3NlbGVjdF9vYmpl Y3RfaW5fdGVtcF93cml0ZV9saXN0OiBcIiVzXCIsIGZvdW5kIHJlbGF0aW9uDQo+Pj4gPj4gPj4g XCIlc1wiIiwgKGNoYXIgKikgY29udGV4dCwgcmd2LT5yZWxuYW1lKSkpOw0KPj4+ID4+ID4+IFRo aXMgbGluZSBpcyB0b28gbG9uZy4gUGxlYXNlIHNwbGl0Lg0KPj4+ID4+ID4+DQo+Pj4gPj4gPj4g QEAgLTE4ODAsNyArMTg4OSwxMyBAQCBzdGF0aWMgY2hhcg0KPj4+ID4+ID4+ICpnZXRfYXNzb2Np YXRlZF9vYmplY3RfZnJvbV9kbWxfYWRhcHRpdmVfcmVsYXRpb25zDQo+Pj4gPj4gPj4gIHZvaWQN Cj4+PiA+PiA+PiAgY2hlY2tfb2JqZWN0X3JlbGF0aW9uc2hpcF9saXN0KGNoYXIgKm5hbWUsIGJv b2wgaXNfZnVuY19uYW1lKQ0KPj4+ID4+ID4+ICB7DQo+Pj4gPj4gPj4gLSAgICAgICBpZiAocG9v bF9jb25maWctPmRpc2FibGVfbG9hZF9iYWxhbmNlX29uX3dyaXRlID09DQo+Pj4gPj4gPj4gRExC T1dfRE1MX0FEQVBUSVZFICYmDQo+Pj4gPj4gPj4gcG9vbF9jb25maWctPnBhcnNlZF9kbWxfYWRh cHRpdmVfb2JqZWN0X3JlbGF0aW9uc2hpcF9saXN0KQ0KPj4+ID4+ID4+ICsgICAgICAgYm9vbCAg ICAgICAgICAgIGlzX2FkYXB0aXZlOw0KPj4+ID4+ID4+ICsNCj4+PiA+PiA+PiArICAgICAgIGlz X2FkYXB0aXZlID0gRExCT1dfSVNfRE1MX0FEQVBUSVZFKA0KPj4+ID4+ID4+ICsNCj4+PiA+PiA+ PiAgICAgIHBvb2xfY29uZmlnLT5kaXNhYmxlX2xvYWRfYmFsYW5jZV9vbl93cml0ZSk7DQo+Pj4g Pj4gPj4NCj4+PiA+PiA+PiBJIHdyb3RlIGluIHRoZSBjb21taXQgbWVzc2FnZToNCj4+PiA+PiA+ Pg0KPj4+ID4+ID4+IG1vZGlmaWNhdGlvbnMgYXJlIG9ubHkgZGV0ZWN0ZWQgaW4gdGhlIHNhbWUg dHJhbnNhY3Rpb24pLiBOb3RlLA0KPj4+ID4+ID4+IGhvd2V2ZXIsIHlvdSBjYW5ub3QgdXNlIGRt bF9hZGFwdGl2ZV9vYmplY3RfcmVsYXRpb25zaGlwX2xpc3QgdG8NCj4+PiB0cmFjaw0KPj4+ID4+ ID4+IGRlcGVuZGVuY3kgYW1vbmcgdGFibGUgYW5kIG90aGVyIG9iamVjdHMuDQo+Pj4gPj4gPj4N Cj4+PiA+PiA+PiBJbiBteSB1bmRlcnN0YW5kaW5nIHRoZSBmZWF0dXJlIGRvZXMgbm90IHVzZQ0K Pj4+ID4+ID4+IGRtbF9hZGFwdGl2ZV9vYmplY3RfcmVsYXRpb25zaGlwX2xpc3QuIElmIHRoaXMg aXMgY29ycmVjdCwgd2h5DQo+Pj4gPj4gPj4gY2hlY2tfb2JqZWN0X3JlbGF0aW9uc2hpcF9saXN0 KCkgaXMgY2FsbGVkIGhlcmUgaW4gY2FzZQ0KPj4+ID4+ID4+IGRtbF9hZGFwdGl2ZV9nbG9iYWw/ ICBJZiB0aGUgZmVhdHVyZSB1c2VzDQo+Pj4gPj4gPj4gZG1sX2FkYXB0aXZlX29iamVjdF9yZWxh dGlvbnNoaXBfbGlzdCwgdGVzdCBjYXNlcyBzaG91bGQgYmUNCj4+PiBpbmNsdWRlZC4NCj4+PiA+ PiA+Pg0KPj4+ID4+ID4+IGRpZmYgLS1naXQgYS9zcmMvdXRpbHMvcG9vbF90cmFja190YWJsZV9t dXRhdGlvbi5jDQo+Pj4gPj4gPj4gYi9zcmMvdXRpbHMvcG9vbF90cmFja190YWJsZV9tdXRhdGlv bi5jDQo+Pj4gPj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+PiA+PiA+PiBpbmRleCAwMDAw MDAwMDAuLjliZTQ2YjI4Zg0KPj4+ID4+ID4+IC0tLSAvZGV2L251bGwNCj4+PiA+PiA+PiArKysg Yi9zcmMvdXRpbHMvcG9vbF90cmFja190YWJsZV9tdXRhdGlvbi5jDQo+Pj4gPj4gPj4NCj4+PiA+ PiA+PiBJdCBzZWVtcyBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBub3QgdXNlZCBhbnl3aGVyZS4g SSB3b25kZXIgaWYgdGhpcw0KPj4+ID4+ID4+IGZlYXR1cmUgYWN0dWFsbHkgdXNlICJxdWVyeSBw YXJzZSBjYWNoZSIuDQo+Pj4gPj4gPj4NCj4+PiA+PiA+PiBwb29sX3RyYWNrX3RhYmxlX211dGF0 aW9uX2dldF9jYWNoZWRfcGFyc2UNCj4+PiA+PiA+PiBwb29sX3RyYWNrX3RhYmxlX211dGF0aW9u X2NhY2hlX3BhcnNlDQo+Pj4gPj4gPj4gcG9vbF90cmFja190YWJsZV9tdXRhdGlvbl9ub3JtYWxp emVfYW5kX2hhc2gNCj4+PiA+PiA+Pg0KPj4+ID4+ID4+IEJlc2lkZXMgdGhlIGNvZGUgcmV2aWV3 LCBJIG11dGF0ZWQgb25lIG9mIHJlZ3Jlc3Npb24gdGVzdHMgdG8gY2hlY2sNCj4+PiA+PiA+PiB3 aGV0aGVyIHRoZSBmZWF0dXJlIGNvIGV4aXN0cyB3aXRoIGluIHRoZSBleGlzdGluZyBtZW1vcnkg cXVlcnkNCj4+PiBjYWNoZQ0KPj4+ID4+ID4+IGZlYXR1cmUuIEFmdGVyIGF0dGFjaGVkIHBhdGNo IGFwcGxpZWQsIEkgcmFuIDAwNi5tZW1xY2FjaGUgYW5kIGdvdA0KPj4+IHRoZQ0KPj4+ID4+ID4+ IGZvbGxvd2luZyByZXN1bHQuDQo+Pj4gPj4gPj4NCj4+PiA+PiA+PiBjZCBzcmMvdGVzdC9yZWdy ZXNzaW9uDQo+Pj4gPj4gPj4gLi9yZWdyZXNzLnNoIDAwNg0KPj4+ID4+ID4+IGNyZWF0aW5nIHBn cG9vbC1JSSB0ZW1wb3JhcnkgaW5zdGFsbGF0aW9uIC4uLg0KPj4+ID4+ID4+IG1vdmluZyBwZ3Bv b2xfc2V0dXAgdG8gdGVtcG9yYXJ5IGluc3RhbGxhdGlvbiBwYXRoIC4uLg0KPj4+ID4+ID4+IG1v dmluZyB3YXRjaGRvZ19zZXR1cCB0byB0ZW1wb3JhcnkgaW5zdGFsbGF0aW9uIHBhdGggLi4uDQo+ Pj4gPj4gPj4gdXNpbmcgcGdwb29sLUlJIGF0DQo+Pj4gPj4gPj4NCj4+PiA+Pg0KPj4+IC9ob21l L3QtaXNoaWkvd29yay9QZ3Bvb2wtSUkvY3VycmVudC9wZ3Bvb2wyL3NyYy90ZXN0L3JlZ3Jlc3Np b24vdGVtcC9pbnN0YWxsZWQNCj4+PiA+PiA+PiAqKioqKioqKioqKioqKioqKioqKioqKioqDQo+ Pj4gPj4gPj4gUkVHUkVTU0lPTiBNT0RFICAgICAgICAgIDogaW5zdGFsbA0KPj4+ID4+ID4+IFBn cG9vbC1JSSB2ZXJzaW9uICAgICAgICA6IHBncG9vbC1JSSB2ZXJzaW9uIDQuOGRldmVsDQo+Pj4g KG1pdHN1a2FrZWJvc2hpKQ0KPj4+ID4+ID4+IFBncG9vbC1JSSBpbnN0YWxsIHBhdGggICA6DQo+ Pj4gPj4gPj4NCj4+PiA+Pg0KPj4+IC9ob21lL3QtaXNoaWkvd29yay9QZ3Bvb2wtSUkvY3VycmVu dC9wZ3Bvb2wyL3NyYy90ZXN0L3JlZ3Jlc3Npb24vdGVtcC9pbnN0YWxsZWQNCj4+PiA+PiA+PiBQ b3N0Z3JlU1FMIGJpbiAgICAgICAgICAgOiAvdXNyL2xvY2FsL3Bnc3FsL2Jpbg0KPj4+ID4+ID4+ IFBvc3RncmVTUUwgTWFqb3IgdmVyc2lvbiA6IDE4DQo+Pj4gPj4gPj4gcGdiZW5jaCAgICAgICAg ICAgICAgICAgIDogL3Vzci9sb2NhbC9wZ3NxbC9iaW4vcGdiZW5jaA0KPj4+ID4+ID4+IFBvc3Rn cmVTUUwgamRiYyAgICAgICAgICA6DQo+Pj4gPj4gPj4gL3Vzci9sb2NhbC9wZ3NxbC9zaGFyZS9w b3N0Z3Jlc3FsLTkuMi0xMDAzLmpkYmM0Lmphcg0KPj4+ID4+ID4+ICoqKioqKioqKioqKioqKioq KioqKioqKioNCj4+PiA+PiA+PiB0ZXN0aW5nIDAwNi5tZW1xY2FjaGUuLi5mYWlsZWQuDQo+Pj4g Pj4gPj4gb3V0IG9mIDEgb2s6MCBmYWlsZWQ6MSB0aW1lb3V0OjANCj4+PiA+PiA+Pg0KPj4+ID4+ ID4+IGxvZy8wMDYubWVtcWNhY2hlIHNob3dzOg0KPj4+ID4+ID4+DQo+Pj4gPj4gPj4gLi4vZXhw ZWN0ZWQudHh0IHJlc3VsdC50eHQgZGlmZmVyOiBjaGFyIDEsIGxpbmUgMQ0KPj4+ID4+ID4+DQo+ Pj4gPj4gPj4gU28gSSBjaGVja2VkIHRoZSB0ZXN0IHNjcmlwdCBhbmQgZm91bmQgdGhlIGVycm9y IHdhcyBnZW5lcmF0ZWQgYnkgYQ0KPj4+ID4+ID4+IEphdmEgcHJvZ3JhbSB0ZXN0Lg0KPj4+ID4+ ID4+DQo+Pj4gPj4gPj4gICAgICAgICBqYXZhIGpkYmN0ZXN0ID4gcmVzdWx0LnR4dCAyPiYxDQo+ Pj4gPj4gPj4gICAgICAgICBjbXAgLi4vZXhwZWN0ZWQudHh0IHJlc3VsdC50eHQNCj4+PiA+PiA+ PiAgICAgICAgIGlmIFsgJD8gIT0gMCBdO3RoZW4NCj4+PiA+PiA+PiAgICAgICAgICAgICAgICAg Li9zaHV0ZG93bmFsbA0KPj4+ID4+ID4+ICAgICAgICAgICAgICAgICBleGl0IDENCj4+PiA+PiA+ PiAgICAgICAgIGZpDQo+Pj4gPj4gPj4NCj4+PiA+PiA+PiBJbiBqZGJjdGVzdC5qYXZhOg0KPj4+ ID4+ID4+DQo+Pj4gPj4gPj4gICAgICAgICAgICAgICAgIC8qDQo+Pj4gPj4gPj4gICAgICAgICAg ICAgICAgICAqIENhY2hlIHRlc3QgaW4gYW4gZXhwbGljaXQgdHJhbnNhY3Rpb24NCj4+PiA+PiA+ PiAgICAgICAgICAgICAgICAgICovDQo+Pj4gPj4gPj4gICAgICAgICAgICAgICAgIGNvbm4uc2V0 QXV0b0NvbW1pdChmYWxzZSk7DQo+Pj4gPj4gPj4gICAgICAgICAgICAgICAgIC8vIGV4ZWN1dGUg RE1MLiBUaGlzIHNob3VsZCBwcmV2ZW50IFNFTEVDVHMgZnJvbQ0KPj4+IHVzaW5nDQo+Pj4gPj4g Pj4gcXVlcnkgY2FjaGUgaW4gdGhlIHRyYW5zYWN0aW9uLg0KPj4+ID4+ID4+ICAgICAgICAgICAg ICAgICBzcWwgPSAiVVBEQVRFIHQxIFNFVCBpID0gMjsiOw0KPj4+ID4+ID4+ICAgICAgICAgICAg ICAgICBwc3QgPSBjb25uLmNyZWF0ZVN0YXRlbWVudCgpOw0KPj4+ID4+ID4+ICAgICAgICAgICAg ICAgICBwc3QuZXhlY3V0ZVVwZGF0ZShzcWwpOw0KPj4+ID4+ID4+ICAgICAgICAgICAgICAgICBw c3QuY2xvc2UoKTsNCj4+PiA+PiA+PiAgICAgICAgICAgICAgICAgLy8gc2hvdWxkIG5vdCB1c2Ug dGhlIGNhY2hlIGFuZCBzaG91bGQgcmV0dXJuICIyIiwNCj4+PiA+PiByYXRoZXINCj4+PiA+PiA+ PiB0aGFuICIxIg0KPj4+ID4+ID4+ICAgICAgICAgICAgICAgICBwcmVzdCA9IGNvbm4ucHJlcGFy ZVN0YXRlbWVudCgiU0VMRUNUICogRlJPTSB0MSIpOw0KPj4+ID4+ID4+ICAgICAgICAgICAgICAg ICBycyA9IHByZXN0LmV4ZWN1dGVRdWVyeSgpOw0KPj4+ID4+ID4+DQo+Pj4gPj4gPj4gVGhlIGV4 cGVjdGVkIGZpbGUgKGV4cGVjdGVkLnR4dCkgaGFzICIyIiBidXQgdGhlIHJlc3VsdCBmaWxlDQo+ Pj4gPj4gPj4gKHRlc3RkaXIvcmVzdWx0LnR4dCkgd2FzICIxIi4gIFRoaXMgaXMgdGhlIHJlYXNv biB3aHkgdGhlIHRlc3QNCj4+PiA+PiA+PiBmYWlsZWQuIEkgd29uZGVyIGlmIHRoZXJlJ3Mgc29t ZXRoaW5nIHdyb25nIHdpdGggdGhlIGZlYXR1cmUgd2hlbg0KPj4+IHRoZQ0KPj4+ID4+ID4+IHF1 ZXJ5IGNhY2hlIGlzIGVuYWJsZWQuIENhbiB5b3UgbG9vayBpbnRvIHRoaXM/DQo+Pj4gPj4gPj4N Cj4+PiA+PiA+PiBSZWdhcmRzLA0KPj4+ID4+ID4+IC0tDQo+Pj4gPj4gPj4gVGF0c3VvIElzaGlp DQo+Pj4gPj4gPj4gU1JBIE9TUyBLLksuDQo+Pj4gPj4gPj4gRW5nbGlzaDogaHR0cDovL3d3dy5z cmFvc3MuY28uanAvaW5kZXhfZW4vDQo+Pj4gPj4gPj4gSmFwYW5lc2U6aHR0cDovL3d3dy5zcmFv c3MuY28uanANCj4+PiA+PiA+Pg0KPj4+ID4+ID4NCj4+PiA+PiA+DQo+Pj4gPj4gPiAtLQ0KPj4+ ID4+ID4gTmFkYXYgU2hhdHoNCj4+PiA+PiA+IFRhaWxvciBCcmFuZHMgfCBDVE8NCj4+PiA+Pg0K Pj4+ID4NCj4+PiA+DQo+Pj4gPiAtLQ0KPj4+ID4gTmFkYXYgU2hhdHoNCj4+PiA+IFRhaWxvciBC cmFuZHMgfCBDVE8NCj4+Pg0KPj4NCj4+DQo+PiAtLQ0KPj4gTmFkYXYgU2hhdHoNCj4+IFRhaWxv ciBCcmFuZHMgfCBDVE8NCj4+DQo+IA0KPiANCj4gLS0gDQo+IE5hZGF2IFNoYXR6DQo+IFRhaWxv ciBCcmFuZHMgfCBDVE8NCg==