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.94.2) (envelope-from ) id 1thZBk-0041Zu-Gl for pgsql-hackers@arkaria.postgresql.org; Mon, 10 Feb 2025 19:11:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1thZBi-003qXf-Sh for pgsql-hackers@arkaria.postgresql.org; Mon, 10 Feb 2025 19:11:22 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1thZBi-003qXW-Er for pgsql-hackers@lists.postgresql.org; Mon, 10 Feb 2025 19:11:22 +0000 Received: from smtp-fw-6001.amazon.com ([52.95.48.154]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1thZBe-0005T1-1r for pgsql-hackers@postgresql.org; Mon, 10 Feb 2025 19:11:22 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1739214679; x=1770750679; h=from:to:cc:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version:subject; bh=g5awB+e95lWmGSXDcVX2uXOwQ3CVQL8Yiqp/9pfUSyY=; b=UiVYCRiScvmuwkonf5cf+piXQyZC3Ba3TmBZtwKysZ63TpvF6wCYJmom xU3BMigi7CLrJvFJ9bwmKsLf0kBlcXwiLN62K5rIWUOo2RxKs4S8H0eql ESOnm8rf1uwSWBuEnxQcOgcOgPSNEe/mxySyyn5uk1eW0iKYl5OUCiRtI Y=; X-IronPort-AV: E=Sophos;i="6.13,275,1732579200"; d="scan'208";a="461328950" Subject: Re: Expanding HOT updates for expression and partial indexes Thread-Topic: Expanding HOT updates for expression and partial indexes Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev) ([10.43.8.2]) by smtp-border-fw-6001.iad6.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Feb 2025 19:11:14 +0000 Received: from EX19MTAUEA001.ant.amazon.com [10.0.44.209:10165] by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.10.217:2525] with esmtp (Farcaster) id 0c6538ba-d370-4c00-93ba-63f9a7968e70; Mon, 10 Feb 2025 19:11:14 +0000 (UTC) X-Farcaster-Flow-ID: 0c6538ba-d370-4c00-93ba-63f9a7968e70 Received: from EX19D018UEC004.ant.amazon.com (10.252.135.223) by EX19MTAUEA001.ant.amazon.com (10.252.134.203) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.39; Mon, 10 Feb 2025 19:11:13 +0000 Received: from EX19D018UEC003.ant.amazon.com (10.252.135.218) by EX19D018UEC004.ant.amazon.com (10.252.135.223) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1544.14; Mon, 10 Feb 2025 19:11:13 +0000 Received: from EX19D018UEC003.ant.amazon.com ([fe80::ea09:1bf7:c4d8:3004]) by EX19D018UEC003.ant.amazon.com ([fe80::ea09:1bf7:c4d8:3004%3]) with mapi id 15.02.1544.014; Mon, 10 Feb 2025 19:11:13 +0000 From: "Burd, Greg" To: Matthias van de Meent CC: "pgsql-hackers@postgresql.org" Thread-Index: AQHbeOXmdtbUqSdSp0SlUCqonUkHPbNAzZYAgAAfqwA= Date: Mon, 10 Feb 2025 19:11:13 +0000 Message-ID: References: <78574B24-BE0A-42C5-8075-3FA9FA63B8FC@amazon.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.106.178.24] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk DQoNCj4gT24gRmViIDEwLCAyMDI1LCBhdCAxMjoxN+KAr1BNLCBNYXR0aGlhcyB2YW4gZGUgTWVl bnQgPGJvZWtld3VybStwb3N0Z3Jlc0BnbWFpbC5jb20+IHdyb3RlOg0KPiANCj4+IA0KPj4gSSBo YXZlIGEgZmV3IGNvbmNlcm5zIHdpdGggdGhlIHBhdGNoLCB0aGluZ3MgSeKAmWQgZ3JlYXRseSBh cHByZWNpYXRlIHlvdXIgdGhvdWdodHMgb246DQo+PiANCj4+IEZpcnN0LCBJIHBhc3MgYW4gRVN0 YXRlIGFsb25nIHRoZSB1cGRhdGUgcGF0aCB0byBlbmFibGUgcnVubmluZyB0aGUgY2hlY2tzIGlu IGhlYXBhbSwgdGhpcyB3b3JrcyBidXQgbGVhdmVzIG1lIGZlZWxpbmcgYXMgaWYgSSB2aW9sYXRl ZCBzZXBhcmF0aW9uIG9mIGNvbmNlcm5zLiBJZiB0aGVyZSBpcyBhIGJldHRlciB3YXkgdG8gZG8g dGhpcyBsZXQgbWUga25vdyBvciBpZiB5b3UgdGhpbmsgdGhlIGNvc3Qgb2YgY3JlYXRpbmcgb25l IGluIHRoZSBleGVjSW5kZXhpbmcuYyBFeGVjSW5kZXhlc1JlcXVpcmluZ1VwZGF0ZXMoKSBpcyBv a2F5IHRoYXTigJlzIGFub3RoZXIgcG9zc2liaWxpdHkuDQo+IA0KPiBJIHRoaW5rIHRoYXQgZG9l c24ndCBoYXZlIHRvIGJlIGJhZC4NCg0KTWVhbmluZyB0aGF0IHRoZSBhcHByb2FjaCBJ4oCZdmUg dGFrZW4gaXMgb2theSB3aXRoIHlvdT8NCg0KPj4gVGhpcmQsIHRoZXJlIGlzIG92ZXJoZWFkIHRv IHRoaXMgcGF0Y2gsIGl0IGlzIG5vIGxvbmdlciBhIHNpbmdsZSBzaW1wbGUgYml0bWFwIHRlc3Qg dG8gY2hvb3NlIEhPVCBvciBub3QgaW4gaGVhcF91cGRhdGUoKS4NCj4gDQo+IFdoeSBjYW4ndCBp dCBtb3N0bHkgYmUgdGhhdCBzaW1wbGUgaW4gc2ltcGxlIGNhc2VzPw0KDQpJdCBjYW4gcmVtYWlu IHRoYXQgc2ltcGxlIGluIHRoZSBjYXNlcyB5b3UgbWVudGlvbi4gIEluIHJlbGNhY2hlIHRoZSBo b3QgYmxvY2tpbmcgYXR0cmlidXRlcyBhcmUgbmVhcmx5IHRoZSBzYW1lLCBvbmx5IHRoZSBzdW1t YXJpemluZyBhdHRyaWJ1dGVzIGFyZSByZW1vdmVkLiAgVGhlIGZpcnN0IHRlc3QgdGhlbiBpbiBo ZWFwX3VwZGF0ZSgpIGlzIGZvciBvdmVybGFwIHdpdGggdGhlIG1vZGlmaWVkIHNldC4gIFdoZW4g dGhlcmUgaXMgbm9uZSwgdGhlIHVwZGF0ZSB3aWxsIHByb2NlZWQgb24gdGhlIEhPVCBwYXRoLg0K DQpUaGUgcHJlc2VuY2Ugb2YgYSBzdW1tYXJpemluZyBpbmRleCBpcyBkZXRlcm1pbmVkIGluIEV4 ZWNJbmRleGVzUmVxdWlyaW5nVXBkYXRlcygpIGluIGV4ZWNJbmRleGluZy5jLCBzbyBhIHNsaWdo dGx5IGxvbmdlciBjb2RlIHBhdGggYnV0IG5vdCBtdWNoIG5ldyBvdmVyaGVhZC4NCg0KPiBJIG1l YW4sIGl0J3MgY2xlYXIgdGhhdCAidXBkYXRlZCBpbmRleGVkIGNvbHVtbidzIHZhbHVlID09IG5v bi1IT1QNCj4gdXBkYXRlIi4gQW5kIHRoYXQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gdXBkYXRl ZCAqcHJvamVjdGVkKiBjb2x1bW4ncw0KPiB2YWx1ZSAoaS5lLiwgZXhwcmVzc2lvbiBpbmRleCBj b2x1bW4ncyB2YWx1ZSkgd2FzIGFjdHVhbGx5IHVwZGF0ZWQgd2UNCj4gbmVlZCB0byBjYWxjdWxh dGUgdGhlIHByZXZpb3VzIGFuZCBjdXJyZW50IGluZGV4IHZhbHVlLCB0aHVzIGV4ZWN1dGUNCj4g dGhlIHByb2plY3Rpb24gdHdpY2UuIEJ1dCB3aHkgd291bGQgd2UgaGF2ZSBzaWduaWZpY2FudCBh ZGRpdGlvbmFsDQo+IG92ZXJoZWFkIGlmIHRoZXJlIGFyZSBubyBleHByZXNzaW9uIGluZGV4ZXMs IG9yIHdoZW4gd2UgY2FuIGtub3cgYnkNCj4gYml0bWFwIG92ZXJsYXAgdGhhdCB0aGUgb25seSBp bnRlcmVzdGluZyBjYXNlcyBhcmUgc3VtbWFyaXppbmcNCj4gaW5kZXhlcz8NCg0KWW914oCZcmUg cmlnaHQsIHRoZXJl4oCZcyBub3QgYSBsb3Qgb2YgbmV3IG92ZXJoZWFkIGluIHRoYXQgY2FzZSBl eGNlcHQgd2hhdCBoYXBwZW5zIGluIEV4ZWNJbmRleGVzUmVxdWlyaW5nVXBkYXRlcygpIHRvIHNj YW4gb3ZlciB0aGUgbGlzdCBvZiBJbmRleEluZm8uICBJdCBpcyByZWFsbHkgb25seSB3aGVuIHRo ZXJlIGFyZSBtYW55IGV4cHJlc3Npb25zL3ByZWRpY2F0ZXMgcmVxdWlyaW5nIGV4YW1pbmF0aW9u IHRoYXQgdGhlcmUgaXMgYW55IHNpZ25pZmljYW50IGNvc3QgdG8gdGhpcyBhcHByb2FjaCBBRkFJ Q1QgKGJ1dCBpZiB5b3Ugc2VlIHNvbWV0aGluZyBwbGVhc2UgcG9pbnQgaXQgb3V0KS4NCg0KPiBJ IHdvdWxkJ3ZlIGltcGxlbWVudGVkIHRoaXMgd2l0aCAoMSkgdHdvIG5ldyBiaXRtYXBzLCBvbmUg ZWFjaCBmb3INCj4gbm9ybWFsIGFuZCBzdW1tYXJpemluZyBpbmRleGVzLCBlYWNoIGNvbnRhaW5p bmcgd2hpY2ggY29sdW1ucyBhcmUNCj4gZXhjbHVzaXZlbHkgdXNlZCBpbiBleHByZXNzaW9uIGlu ZGV4ZXMgKGFuZCB3aGljaCBzaG91bGQgdGh1cyBiZSB1c2VkDQo+IHRvIHRyaWdnZXIgdGhlIChj b21wYXJhdGl2ZWx5KSBleHBlbnNpdmUgcmVjYWxjdWxhdGlvbikuDQoNClRoYXQgd2FzIG9uZSB3 aGVyZSBJIHN0YXJ0ZWQsIG92ZXIgdGltZSB0aGF0IGJlY2FtZSBoYXJkZXIgdG8gd29yayBhcyB0 aGUgYml0bWFwcyBjb250YWluIHRoZSB1bmlvbiBvZiBpbmRleCBhdHRyaWJ1dGVzIGZvciB0aGUg dGFibGUgbm90IHBlci1jb2x1bW4uICBOb3cgdGhlcmUgaXMgb25lIGJpdG1hcCB0byBjb3ZlciB0 aGUgYnJvYWRlc3QgY2FzZSBhbmQgdGhlbiBhIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIG1vZGlmaWVk IHNldCBvZiBpbmRleGVzIHdoZXJlIGVhY2ggaXMgZXhhbWluZWQgYWdhaW5zdCBiaXRtYXBzIHRo YXQgY29udGFpbiBvbmx5IGF0dHJpYnV0ZXMgc3BlY2lmaWMgdG8gdGhlIGluZGV4IGluIHF1ZXN0 aW9uLiAgVGhpcyBoZWxwZWQgaW4gY2FzZXMgd2hlcmUgdGhlcmUgd2VyZSBib3RoIGV4cHJlc3Np b24gYW5kIG5vbi1leHByZXNzaW9uIGluZGV4ZXMgb24gdGhlIHNhbWUgYXR0cmlidXRlLg0KDQo+ IFRoZW4sIEknZCBtYWludGFpbiBhIChjYWNoZWQpIGxpc3Qgb2YgdW5pcXVlIHByb2plY3Rpb25z L2V4cHJlc3Npb25zDQo+IGZvdW5kIGluIGluZGV4ZXMsIHNvIHRoYXQgMzAgaW5kZXhlcyBvbiBl LmcuDQo+ICgobXljb2x1bW46Ompzb25iKS0+PidtZXRhZGF0YScpIG9ubHkgZXh0ZW5kIHRvIDEg Y2hlY2sgZm9yDQo+IGRpZmZlcmVuY2VzLCByYXRoZXIgdGhhbiAzMC4NCg0KQW4gb3B0aW1pemF0 aW9uIHRvIGF2b2lkIHJlY2hlY2tpbmcgaXNu4oCZdCBhIGJhZCBpZGVhLiAgSSB3b25kZXIgaG93 IGhhcmQgaXQgd291bGQgYmUgdG8gc3VyZmFjZSB0aGUgZmllbGQgKC0+PuKAmW1ldGFkYXRh4oCZ KSBmcm9tIHRoZSBpbmRleCBleHByZXNzaW9uIHRvIHRyYWNrIGZvciByZWR1bmRhbmN5LCBJ4oCZ bGwgaGF2ZSB0byBsb29rIGludG8gdGhhdC4NCg0KPiBUaGUgIm5ldyIgb3V0cHV0IG9mIHRoZXNl IGV4cHJlc3Npb24NCj4gZXZhbHVhdGlvbnMgd291bGQgYmUgc3RvcmVkIHRvIGJlIHVzZWQgbGF0 ZXIgYXMgaW5kZXggZGF0dW1zLCByZWR1Y2luZw0KPiB0aGUgbnVtYmVyIG9mIHBlci1leHByZXNz aW9uIGV2YWx1YXRpb25zIGRvd24gdG8gMiBhdCBtb3N0LCByYXRoZXINCj4gdGhhbiAyKzEgd2hl biB0aGUgaW5kZXggbmVlZHMgYW4gaW5zZXJ0aW9uIGJ1dCB0aGUgZXhwcmVzc2lvbiBpdHNlbGYN Cj4gd2Fzbid0IHVwZGF0ZWQuDQoNCk5vdCByZWZvcm1pbmcgdGhlIG5ldyBpbmRleCB0dXBsZXMg aXMgYWxzbyBhbiBpbnRlcmVzdGluZyBvcHRpbWl6YXRpb24uICBJIHdvbmRlciBob3cgdGhhdCBj YW4gYmUgcGFzc2VkIGZyb20gd2l0aGluIGhlYXBhbeKAmXMgY2FsbCBpbnRvIGEgZnVuY3Rpb24g aW4gZXhlY0luZGV4aW5nIHVwIGludG8gbm9kZU1vZGlmaXlUYWJsZSBhbmQgYmFjayBkb3duIGlu dG8gZXhlY0luZGV4aW5nIGFuZCBvbiB0byB0aGUgaW5kZXggYWNjZXNzIG1ldGhvZD8gIEnigJls bCBoYXZlIHRvIHRoaW5rIGFib3V0IHRoYXQsIGlkZWFzIHdlbGNvbWUuDQoNCj4gU28sIGl0J2Qg YmUgc29tZXRoaW5nIGxpa2UgKHBzZXVkb2NvZGUpOg0KPiANCj4gaWYgKGJtc19vdmVybGFwKHVw ZGF0ZWRfY29sdW1ucywgaG90YmxvY2tpbmcpKQ0KPiAgICAvKiBpZiBjb2x1bW5zIG9ubHkgaW5k ZXhlZCB0aHJvdWdoIGV4cHJlc3Npb25zIHdlcmUgdXBkYXRlZCwgZG8NCj4gZXhwZW5zaXZlIHN0 dWZmLiBPdGhlcndpc2UsIGl0J3MgYSBub3JtYWwgbm9uLUhPVCB1cGRhdGUuICovDQo+ICAgIGlm IChibXNfc3Vic2V0X2NvbXBhcmUodXBkYXRlZF9jb2x1bW5zLCBob3RfZXhwcmVzc2lvbl9jb2x1 bW5zKSBpbg0KPiAoQk1TX0VRVUFMLCBCTVNfU1VCU0VUMSkpDQo+ICAgICAgICBleHBlbnNpdmUg Y2hlY2sgZm9yIGV4cHJlc3Npb24gY2hhbmdlcyArIHBvcHVsYXRlIGluZGV4IGNvbHVtbiBkYXRh DQo+ICAgIGVsc2UNCj4gICAgICAgIG5vcm1hbF91cGRhdGUNCj4gZWxzZSBpZiAoYm1zX292ZXJs YXAodXBkYXRlZF9jb2x1bW5zLCBzdW1tYXJpemluZykpDQo+ICAgIC8qIHNhbWUgYXMgYWJvdmUg Zm9yIGhvdGJsb2NraW5nLCBidXQgbm93IHN1bW1hcml6aW5nICovDQo+ICAgIGlmIChibXNfc3Vi c2V0X2NvbXBhcmUodXBkYXRlZF9jb2x1bW5zLCBzdW1fZXhwcmVzc2lvbl9jb2x1bW5zKSBpbg0K PiAoQk1TX0VRVUFMLCBCTVNfU1VCU0VUMSkpDQo+ICAgICAgICBleHBlbnNpdmUgY2hlY2sgZm9y IHN1bW1hcml6ZWQgZXhwcmVzc2lvbiBjaGFuZ2VzICsgcG9wdWxhdGUNCj4gc3VtbWFyaXplZCBp bmRleCBjb2x1bW4gZGF0YQ0KPiAgICBlbHNlDQo+ICAgICAgICBzdW1tYXJpemluZ191cGRhdGUN Cj4gZWxzZQ0KPiAgICBob3RfdXBkYXRlDQo+IA0KPiBOb3RlIHRoYXQgaXQgaXMgcmVsYXRpdmVs eSBleHBlbnNpdmUgdG8gZG8gY2hlY2sgd2hldGhlciBhbnkgb25lIGluZGV4DQo+IG5lZWRzIHRv IGJlIHVwZGF0ZWQuIEl0J3MgZ2VuZXJhbGx5IGNoZWFwZXIgdG8gZG8gYWxsIHRob3NlIGNoZWNr cyBhdA0KPiBvbmNlLCB3aGVyZSBwb3NzaWJsZTsgdXNpbmcgb25lIG9yIDIgbW9yZSBiaXRtYXBz IHdvdWxkIGJlIHN1ZmZpY2llbnQuDQo+IA0KPiBBbHNvIG5vdGUgdGhhdCB0aGlzIGFwcHJvYWNo IGRvZXNuJ3QgdXBkYXRlIHNwZWNpZmljIHN1bW1hcml6aW5nDQo+IGluZGV4ZXMsIGp1c3QgYWxs IG9mIHRoZW0gb3Igbm9uZS4gSSB0aGluayB0aGF0ICJ1cGRhdGUgb25seQ0KPiBzdW1tYXJpemlu ZyBpbmRleGVzIHRoYXQgd2VyZSB1cGRhdGVkIiBzaG91bGQgYmUgYSBzZXBhcmF0ZSBwYXRjaCBm cm9tDQo+ICJjaGVjayBpZiBpbmRleGVkIGV4cHJlc3Npb25zJyB2YWx1ZXMgY2hhbmdlZCIsIHBv dGVudGlhbGx5IGluIHRoZQ0KPiBwYXRjaHNldCwgYnV0IG5vdCBhcyBwYXJ0IG9mIHRoZSBtYWlu IGJ1bGsuDQo+IA0KPj4gRm91cnRoLCBJ4oCZZCBsaWtlIHRvIGtub3cgd2hpY2ggdmVyc2lvbiB0 aGUgY29tbXVuaXR5IHByZWZlcnMgKHYzIG9yIHY0KS4gIEkgdGhpbmsgdjQgbW92ZXMgdGhlIGNv ZGUgaW4gYSBkaXJlY3Rpb24gdGhhdCBpcyBjbGVhbmVyIG92ZXJhbGwsIGJ1dCB5b3UgbWF5IGRp c2FncmVlLiAgSSByZWFsaXplIHRoYXQgdGhlIHdheSBJIHVzZSB0aGUgbW9kaWZpZWRfaW5kZXhl cyBiaXRtYXBzZXQgaXMgYSB0YWQgb3ZlcmxvYWRlZCAoTlVMTCBtZWFucyBhbGwgaW5kZXhlcyBz aG91bGQgYmUgdXBkYXRlZCwgb3RoZXJ3aXNlIG9ubHkgdXBkYXRlIHRoZSBpbmRleGVzIGluIHRo ZSBzZXQgd2hpY2ggbWF5IGJlIGFsbC9zb21lL25vbmUgb2YgdGhlIGluZGV4ZXMpIGFuZCB0aGF0 IG1heSB2aW9sYXRlIHRoZSBwcmluY2lwYWwgb2YgbGVhc3Qgc3VycHJpc2UgYnV0IEkgZmVlbCB0 aGF0IGl0IGlzIGJldHRlciB0aGFuIHRoZSBUVV9VcGRhdGVJbmRleGVzIGVudW0gaW4gdGhlIGNv ZGUgdG9kYXkuDQo+IA0KPiBJIHdvdWxkIGJlIGhlc2l0YW50IHRvIGxldCB0YWJsZSBBTXMgZGVj aWRlIHdoaWNoIGluZGV4ZXMgdG8gdXBkYXRlIGF0DQo+IHRoYXQgcHJlY2lzaW9uLiBOb3RlIHRo YXQgdGhpcyBBUEkgd291bGQgYWxsb3cgdGhlIEFNIHRvIHVwZGF0ZSBvbmx5DQo+IChzYXkpIHRo ZSBQSyBpbmRleCBhbmQgbm8gb3RoZXIgaW5kZXhlcywgd2hpY2ggaXMgbm90IGFsbG93ZWQgdG8N Cj4gaGFwcGVuIGlmIGluZGV4IGNvbnNpc3RlbnRjeSBpcyByZXF1aXJlZCAod2hpY2ggaXQgaXMp Lg0KDQpJbnRlcmVzdGluZywgdGhhbmtzIGZvciB0aGUgZmVlZGJhY2suICBJ4oCZbGwgdGhpbmsg b24gdGhpcyBhIGJpdCBtb3JlIGFuZCBwcm92aWRlIG1vcmUgZGV0YWlsIHdpdGggdGhlIG5leHQg dXBkYXRlLg0KDQo+IC0tLS0tPjgtLS0tLQ0KPiANCj4gRG8geW91IGhhdmUgYW55IGRvY3VtZW50 YXRpb24gb24gdGhlIGFwcHJvYWNoZXMgdXNlZCwgYW5kIHRoZSBzcGVjaWZpYw0KPiBkaWZmZXJl bmNlcyBiZXR3ZWVuIHYzIGFuZCB2ND8gSSBkb24ndCBzZWUgbXVjaCBvZiB0aGF0IGluIHlvdXIN Cj4gaW5pdGlhbCBtYWlsLCBhbmQgdGhlIHBhdGNoZXMgdGhlbXNlbHZlcyBhbHNvIGRvbid0IHNo b3cgbXVjaCBvZiB0aGF0DQo+IGluIHRoZWlyIGRldGFpbHMuIEknZCBsaWtlIGF0IGxlYXN0IHNv bWUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgbmV3DQo+IGJlaGF2aW91ciBpbiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9UIGF0IHNvbWUgcG9pbnQgYmVmb3JlDQo+IHRoaXMgZ290IG1h cmtlZCBhcyBSRkMgaW4gdGhlIGNvbW1pdGZlc3QgYXBwLCB0aG91Z2ggcHJlZmVyYWJseSBzb29u ZXINCj4gcmF0aGVyIHRoYW4gbGF0ZXIuDQoNCkdvb2QgcG9pbnQsIEkgc2hvdWxkIGhhdmUgdXBk YXRlZCBSRUFETUUuSE9UIHdpdGggdGhlIGluaXRpYWwgcGF0Y2hzZXQuICBJ4oCZbGwganVtcCBv biB0aGF0IGFuZCB1cGRhdGUgQVNBUC4NCg0KPiBLaW5kIHJlZ2FyZHMsDQo+IA0KPiBNYXR0aGlh cyB2YW4gZGUgTWVlbnQNCj4gTmVvbiAoaHR0cHM6Ly9uZW9uLnRlY2gpDQoNCnRoYW5rcyBmb3Ig dGhlIHRob3VnaHRmdWwgcmVwbHkuDQoNCi1ncmVnDQoNCg==