Re: A deficiency in lucene code that affects memory footprint and GC
"Misha Dmitriev via java-user" <[email protected]> Tue, 27 Jan 2026 00:25:25 +0000
| Newsgroups | gmane.comp.jakarta.lucene.user |
|---|---|
| Message-ID | <CH9PR21MB58564C5EA6067BA3B381C22CC290A@CH9PR21MB5856.namprd21.prod.outlook.com> |
--_000_CH9PR21MB58564C5EA6067BA3B381C22CC290ACH9PR21MB5856namp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QW5kIHRvIGNsb3NlIHRoZSBsb29wLCBoZXJlIGlzIG15IFBSOiBodHRwczovL2dpdGh1Yi5jb20v YXBhY2hlL2x1Y2VuZS9wdWxsLzE1NjE4DQoNClRoYW5rIHlvdSBhZ2FpbiBmb3IgeW91ciBoZWxw IGV2ZXJ5Ym9keSwgYW5kIGxvb2tpbmcgZm9yd2FyZCB0byB5b3VyIHJldmlld3MhDQoNCk1pc2hh DQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQpGcm9tOiBNaXNoYSBEbWl0cmll diB2aWEgamF2YS11c2VyIDxqYXZhLXVzZXJAbHVjZW5lLmFwYWNoZS5vcmc+DQpTZW50OiBNb25k YXksIEphbnVhcnkgMjYsIDIwMjYgMTo1MyBQTQ0KVG86IGphdmEtdXNlckBsdWNlbmUuYXBhY2hl Lm9yZyA8amF2YS11c2VyQGx1Y2VuZS5hcGFjaGUub3JnPg0KQ2M6IE1pc2hhIERtaXRyaWV2IDxt ZG1pdHJpZXZAbGlua2VkaW4uY29tPg0KU3ViamVjdDogUmU6IEEgZGVmaWNpZW5jeSBpbiBsdWNl bmUgY29kZSB0aGF0IGFmZmVjdHMgbWVtb3J5IGZvb3RwcmludCBhbmQgR0MNCg0KVGhhbmsgeW91 IHZlcnkgbXVjaCwgYWxsLCBmb3IgeW91ciBxdWljayByZXNwb25zZXMhIEkndmUgYmVlbiBidXN5 IHdpdGggb3RoZXIgc3R1ZmYgcmVjZW50bHksIGJ1dCB3aWxsIHJlc3VtZSBteSBhdHRlbXB0cyB0 byBnZW5lcmF0ZSBhIGx1Y2VuZSBQUiBzb29uLg0KDQpJbiB0aGUgbWVhbnRpbWUsIG91ciBlYXJs eSBleHBlcmltZW50cyBzZWVtIHRvIHN1Z2dlc3QgdGhhdCB3aXRoIG15IHByb3Bvc2VkIGNoYW5n ZSwgd2UgY2FuIGltcHJvdmUgcGVyZm9ybWFuY2Ugb2Ygb25lIG9mIG91ciBTZWFyY2ggYXBwcyBi eSAyMC4uMjUgcGVyIGNlbnQuIFNvIGF0IGxlYXN0IGZvciBvdXIgY29tcGFueSB0aGlzIG9wdGlt aXphdGlvbiBpcyB2ZXJ5IHdvcnRod2hpbGUuDQoNCk1pc2hhDQoNCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fDQpGcm9tOiBEYXdpZCBXZWlzcyA8ZGF3aWQud2Vpc3NAZ21haWwuY29t Pg0KU2VudDogRnJpZGF5LCBKYW51YXJ5IDIzLCAyMDI2IDE6NTUgQU0NClRvOiBqYXZhLXVzZXJA bHVjZW5lLmFwYWNoZS5vcmcgPGphdmEtdXNlckBsdWNlbmUuYXBhY2hlLm9yZz4NCkNjOiBNaXNo YSBEbWl0cmlldiA8bWRtaXRyaWV2QGxpbmtlZGluLmNvbT4NClN1YmplY3Q6IFJlOiBBIGRlZmlj aWVuY3kgaW4gbHVjZW5lIGNvZGUgdGhhdCBhZmZlY3RzIG1lbW9yeSBmb290cHJpbnQgYW5kIEdD DQoNCg0KSGkgTWlzaGEsDQoNClVzaW5nIGEgZ2l0aHViIGZvcmsgYW5kIHB1bGwgcmVxdWVzdCBp cyBieSBmYXIgdGhlIGJlc3Qgd2F5IHRvIGRvIGl0IGJlY2F1c2UgaXQgYWxsb3dzIGF1dG9tYXRl ZCBjaGVja3MgdG8gYmUgcnVuLCBlYXNpZXIgcmV2aWV3cywgZXRjLiBJdCBpcyBhbHNvIGEgZ29v ZCBsZWFybmluZyBleGVyY2lzZSB0byBnZXQgdXAgdG8gc3BlZWQgd2l0aCB3b3JraW5nIHdpdGgg bXVsdGlwbGUgcmVtb3RlcyBpbiBnaXQsIGlmIHlvdSdyZSB3aWxsaW5nIHRvIGludmVzdCBzb21l IHRpbWUgaW4gaXQgKHlvdSBjYW4gaGF2ZSBib3RoIHRoZSB1cHN0cmVhbSBsdWNlbmUgcmVwbyBh bmQgeW91ciBvd24gZm9yayBhcyB0d28gcmVtb3RlcyBpbiB0aGUgc2FtZSBsb2NhbCBnaXQgY2xv bmUpLg0KDQpEYXdpZA0KDQpPbiBGcmksIEphbiAyMywgMjAyNiBhdCAyOjMw4oCvQU0gTWlzaGEg RG1pdHJpZXYgdmlhIGphdmEtdXNlciA8amF2YS11c2VyQGx1Y2VuZS5hcGFjaGUub3JnPG1haWx0 bzpqYXZhLXVzZXJAbHVjZW5lLmFwYWNoZS5vcmc+PiB3cm90ZToNCkhpIGFnYWluIERhdmlkLA0K DQpGb3JnaXZlIG15IGlnbm9yYW5jZSwgc2luY2UgSSd2ZSBuZXZlciBjb250cmlidXRlZCB0byBs dWNlbmUgb3IgYXBhY2hlIGJlZm9yZS4gSSBjcmVhdGVkIGEgZ2l0IGJyYW5jaCBiYXNlZCBvbiBs dWNlbmUgbWFpbiBicmFuY2ggbG9jYWxseSwgbWFkZSwgYnVpbGQsIGNoZWNrZWQgYW5kIGNvbW1p dGVkIG15IGZpeCwgYW5kIHRoZW4gdHJpZWQgdG8gY3JlYXRlIGEgUFIgYnkgcHVzaGluZyB0aGF0 IGJyYW5jaCwgc2VlIGJlbG93LiBVbmZvcnR1bmF0ZWx5LCBJIGdldCBhbiBlcnJvci4gSSB1c2Vk IGEgY2xhc3NpYyBQQVQgYXMgYSBwYXNzd29yZCwgc28gdGhlIHByb2JsZW0gc2VlbXMgdG8gYmUg bm90IHdpdGggcGFzc3dvcmQgaXRzZWxmLCBidXQgd2l0aCBub3QgaGF2aW5nIHNvbWUgImFjY2Vz cyByaWdodHMiLiBDb3VsZCB5b3UgcGxlYXNlIHRha2UgYSBsb29rPyBJIGFtIHVzaW5nIG15IGdp dGh1YiBsb2dpbiBjb3VudG1kbSwgZW1haWwgY291bnRtZG1AZ21haWwuY29tPG1haWx0bzpjb3Vu dG1kbUBnbWFpbC5jb20+DQoNCk1pc2hhDQoNCg0KJCBnaXQgcHVzaCAtdSBvcmlnaW4gb3B0aW1p emUtU1RFRi1tYWluDQpVc2VybmFtZSBmb3IgJ2h0dHBzOi8vbmFtMDYuc2FmZWxpbmtzLnByb3Rl Y3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmdpdGh1Yi5jb20lMkYmZGF0YT0w NSU3QzAyJTdDbWRtaXRyaWV2JTQwbGlua2VkaW4uY29tJTdDNDAzMWIyYzkyOWNlNGY4OWM1Mjgw OGRlNWQyNTUzOGUlN0M3MmY5ODhiZjg2ZjE0MWFmOTFhYjJkN2NkMDExZGI0NyU3QzAlN0MwJTdD NjM5MDUwNjEyMDc5NzEyNDUyJTdDVW5rbm93biU3Q1RXRnBiR1pzYjNkOGV5SkZiWEIwZVUxaGNH a2lPblJ5ZFdVc0lsWWlPaUl3TGpBdU1EQXdNQ0lzSWxBaU9pSlhhVzR6TWlJc0lrRk9Jam9pVFdG cGJDSXNJbGRVSWpveWZRJTNEJTNEJTdDMCU3QyU3QyU3QyZzZGF0YT1LaXJRRjE4SXRnU1pHZ1BW YzBhQ3NlSloyUzlhVU53dU95VHNLektUQUVjJTNEJnJlc2VydmVkPTA8aHR0cHM6Ly9uYW0wNi5z YWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHBzJTNBJTJGJTJGZ2l0aHVi LmNvbSUyRiZkYXRhPTA1JTdDMDIlN0NtZG1pdHJpZXYlNDBsaW5rZWRpbi5jb20lN0M0MDMxYjJj OTI5Y2U0Zjg5YzUyODA4ZGU1ZDI1NTM4ZSU3QzcyZjk4OGJmODZmMTQxYWY5MWFiMmQ3Y2QwMTFk YjQ3JTdDMCU3QzAlN0M2MzkwNTA2MTIwNzk3NDIxNTIlN0NVbmtub3duJTdDVFdGcGJHWnNiM2Q4 ZXlKRmJYQjBlVTFoY0draU9uUnlkV1VzSWxZaU9pSXdMakF1TURBd01DSXNJbEFpT2lKWGFXNHpN aUlzSWtGT0lqb2lUV0ZwYkNJc0lsZFVJam95ZlElM0QlM0QlN0MwJTdDJTdDJTdDJnNkYXRhPVo2 ZEtMdzQxTDdPJTJGM3dsTCUyRjV2VGVhOUlZM3Y0U3BTcVpFb1RVdUtsdHIwJTNEJnJlc2VydmVk PTA8aHR0cHM6Ly9naXRodWIuY29tLz4+JzogY291bnRtZG0NClBhc3N3b3JkIGZvciAnaHR0cHM6 Ly9uYW0wNi5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHBzJTNBJTJG JTJGY291bnRtZG0lNDBnaXRodWIuY29tJTJGJmRhdGE9MDUlN0MwMiU3Q21kbWl0cmlldiU0MGxp bmtlZGluLmNvbSU3QzQwMzFiMmM5MjljZTRmODljNTI4MDhkZTVkMjU1MzhlJTdDNzJmOTg4YmY4 NmYxNDFhZjkxYWIyZDdjZDAxMWRiNDclN0MwJTdDMCU3QzYzOTA1MDYxMjA3OTc1OTc4NiU3Q1Vu a25vd24lN0NUV0ZwYkdac2IzZDhleUpGYlhCMGVVMWhjR2tpT25SeWRXVXNJbFlpT2lJd0xqQXVN REF3TUNJc0lsQWlPaUpYYVc0ek1pSXNJa0ZPSWpvaVRXRnBiQ0lzSWxkVUlqb3lmUSUzRCUzRCU3 QzAlN0MlN0MlN0Mmc2RhdGE9QWtVMk9IcnhQY0k2Uk00cnNqVEd0NWh5cVlLekkxR05wRmdBQkh1 NERzOCUzRCZyZXNlcnZlZD0wPGh0dHBzOi8vbmFtMDYuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0 bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmNvdW50bWRtJTQwZ2l0aHViLmNvbSUyRiZkYXRh PTA1JTdDMDIlN0NtZG1pdHJpZXYlNDBsaW5rZWRpbi5jb20lN0M0MDMxYjJjOTI5Y2U0Zjg5YzUy ODA4ZGU1ZDI1NTM4ZSU3QzcyZjk4OGJmODZmMTQxYWY5MWFiMmQ3Y2QwMTFkYjQ3JTdDMCU3QzAl N0M2MzkwNTA2MTIwNzk3NzU3MjglN0NVbmtub3duJTdDVFdGcGJHWnNiM2Q4ZXlKRmJYQjBlVTFo Y0draU9uUnlkV1VzSWxZaU9pSXdMakF1TURBd01DSXNJbEFpT2lKWGFXNHpNaUlzSWtGT0lqb2lU V0ZwYkNJc0lsZFVJam95ZlElM0QlM0QlN0MwJTdDJTdDJTdDJnNkYXRhPWw1ZTlTJTJGWCUyQkhl JTJCV0UwNkVaWVRBMVVLaHp6UHpudzVSMTk4YllqY05OblklM0QmcmVzZXJ2ZWQ9MDxodHRwczov L2NvdW50bWRtQGdpdGh1Yi5jb20vPj4nOg0KcmVtb3RlOiBQZXJtaXNzaW9uIHRvIGFwYWNoZS9s dWNlbmUuZ2l0IGRlbmllZCB0byBjb3VudG1kbS4NCmZhdGFsOiB1bmFibGUgdG8gYWNjZXNzICdo dHRwczovL25hbTA2LnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cHMl M0ElMkYlMkZnaXRodWIuY29tJTJGYXBhY2hlJTJGbHVjZW5lLmdpdCUyRiZkYXRhPTA1JTdDMDIl N0NtZG1pdHJpZXYlNDBsaW5rZWRpbi5jb20lN0M0MDMxYjJjOTI5Y2U0Zjg5YzUyODA4ZGU1ZDI1 NTM4ZSU3QzcyZjk4OGJmODZmMTQxYWY5MWFiMmQ3Y2QwMTFkYjQ3JTdDMCU3QzAlN0M2MzkwNTA2 MTIwNzk3OTI2MTQlN0NVbmtub3duJTdDVFdGcGJHWnNiM2Q4ZXlKRmJYQjBlVTFoY0draU9uUnlk V1VzSWxZaU9pSXdMakF1TURBd01DSXNJbEFpT2lKWGFXNHpNaUlzSWtGT0lqb2lUV0ZwYkNJc0ls ZFVJam95ZlElM0QlM0QlN0MwJTdDJTdDJTdDJnNkYXRhPUtyUE5oRDByR0hOek03SkFpMmdZalk0 OTQwMXoxcXduakRRRnhoemdpNEElM0QmcmVzZXJ2ZWQ9MDxodHRwczovL2dpdGh1Yi5jb20vYXBh Y2hlL2x1Y2VuZS5naXQvPic6IFRoZSByZXF1ZXN0ZWQgVVJMIHJldHVybmVkIGVycm9yOiA0MDMN Cg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCkZyb206IERhd2lkIFdlaXNzIDxk YXdpZC53ZWlzc0BnbWFpbC5jb208bWFpbHRvOmRhd2lkLndlaXNzQGdtYWlsLmNvbT4+DQpTZW50 OiBXZWRuZXNkYXksIEphbnVhcnkgMjEsIDIwMjYgMTA6MjEgUE0NClRvOiBqYXZhLXVzZXJAbHVj ZW5lLmFwYWNoZS5vcmc8bWFpbHRvOmphdmEtdXNlckBsdWNlbmUuYXBhY2hlLm9yZz4gPGphdmEt dXNlckBsdWNlbmUuYXBhY2hlLm9yZzxtYWlsdG86amF2YS11c2VyQGx1Y2VuZS5hcGFjaGUub3Jn Pj4NCkNjOiBNaXNoYSBEbWl0cmlldiA8bWRtaXRyaWV2QGxpbmtlZGluLmNvbTxtYWlsdG86bWRt aXRyaWV2QGxpbmtlZGluLmNvbT4+DQpTdWJqZWN0OiBSZTogQSBkZWZpY2llbmN5IGluIGx1Y2Vu ZSBjb2RlIHRoYXQgYWZmZWN0cyBtZW1vcnkgZm9vdHByaW50IGFuZCBHQw0KDQoNCkhpIE1pc2hh LA0KDQpQbGVhc2UgcHJvdmlkZSBhIHB1bGwgcmVxdWVzdC4gU21hbGwsIGlzb2xhdGVkIGltcHJv dmVtZW50cyBhcmUgZWFzaWVyIHRvIHJldmlldyBhbmQgcGFyc2UgYnkgdXMgdGhhbiBsYXJnZSBj aGFuZ2VzIGJ1dCBhbGwgYXJlIHdlbGNvbWUuDQoNCkFsc28sIGEgbG90IG9mICh0cmFpbmVkKSBl eWVzIGFyZSBsb29raW5nIGF0IHRoaXMgY29kZS4uLiB2ZXJ5IG9mdGVuIHRoZSByZXBvcnRzIG9m IEx1Y2VuZSBub3QgcGVyZm9ybWluZyB3ZWxsIGFyZSBjYXVzZWQgYnkgd3JvbmcgdXNhZ2UgcmF0 aGVyIHRoYW4gcHJvYmxlbXMgd2l0aGluIHRoZSBpbXBsZW1lbnRhdGlvbiAtIGl0IHdvdWxkIGJl IGdvb2QgdG8gc2hhcmUgdGhlIGVudGlyZSBjb250ZXh0IG9mIHdoZW4gdGhlIHByb2JsZW0gaXMg aGFwcGVuaW5nIGFuZCB0aGUgY29udGV4dCBvZiBvY2N1cnJlbmNlLg0KDQpEYXdpZA0KDQpPbiBX ZWQsIEphbiAyMSwgMjAyNiBhdCAxMToxM+KAr1BNIE1pc2hhIERtaXRyaWV2IHZpYSBqYXZhLXVz ZXIgPGphdmEtdXNlckBsdWNlbmUuYXBhY2hlLm9yZzxtYWlsdG86amF2YS11c2VyQGx1Y2VuZS5h cGFjaGUub3JnPjxtYWlsdG86amF2YS11c2VyQGx1Y2VuZS5hcGFjaGUub3JnPG1haWx0bzpqYXZh LXVzZXJAbHVjZW5lLmFwYWNoZS5vcmc+Pj4gd3JvdGU6DQpIaSBMdWNlbmUgY29tbXVuaXR5LA0K DQpBdCBMaW5rZWRJbiwgd2UgdXNlIGx1Y2VuZSBpbiBzb21lIGltcG9ydGFudCBzZWFyY2ggYXBw cy4gV2UgcmVjZW50bHkgZm91bmQgc29tZSBwcm9ibGVtcyB3aXRoIEdDIGFuZCBtZW1vcnkgZm9v dHByaW5nIGluIG9uZSBvZiB0aGVtLiBXZSB0b29rIGEgaGVhcCBkdW1wIGFuZCBhbmFseXplZCBp dCB3aXRoIEpYUmF5IChodHRwczovL25hbTA2LnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2su Y29tLz91cmw9aHR0cHMlM0ElMkYlMkZqeHJheS5jb20lMkYmZGF0YT0wNSU3QzAyJTdDbWRtaXRy aWV2JTQwbGlua2VkaW4uY29tJTdDNDAzMWIyYzkyOWNlNGY4OWM1MjgwOGRlNWQyNTUzOGUlN0M3 MmY5ODhiZjg2ZjE0MWFmOTFhYjJkN2NkMDExZGI0NyU3QzAlN0MwJTdDNjM5MDUwNjEyMDc5ODA4 NjAxJTdDVW5rbm93biU3Q1RXRnBiR1pzYjNkOGV5SkZiWEIwZVUxaGNHa2lPblJ5ZFdVc0lsWWlP aUl3TGpBdU1EQXdNQ0lzSWxBaU9pSlhhVzR6TWlJc0lrRk9Jam9pVFdGcGJDSXNJbGRVSWpveWZR JTNEJTNEJTdDMCU3QyU3QyU3QyZzZGF0YT1IM3B5REtMNExKdTUlMkJxOGc0aXo3N1NtY3JqRkxF d0lSVmJkQTBjNnFqOUklM0QmcmVzZXJ2ZWQ9MDxodHRwczovL25hbTA2LnNhZmVsaW5rcy5wcm90 ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cHMlM0ElMkYlMkZqeHJheS5jb20lMkYmZGF0YT0w NSU3QzAyJTdDbWRtaXRyaWV2JTQwbGlua2VkaW4uY29tJTdDNDAzMWIyYzkyOWNlNGY4OWM1Mjgw OGRlNWQyNTUzOGUlN0M3MmY5ODhiZjg2ZjE0MWFmOTFhYjJkN2NkMDExZGI0NyU3QzAlN0MwJTdD NjM5MDUwNjEyMDc5ODIxODI2JTdDVW5rbm93biU3Q1RXRnBiR1pzYjNkOGV5SkZiWEIwZVUxaGNH a2lPblJ5ZFdVc0lsWWlPaUl3TGpBdU1EQXdNQ0lzSWxBaU9pSlhhVzR6TWlJc0lrRk9Jam9pVFdG cGJDSXNJbGRVSWpveWZRJTNEJTNEJTdDMCU3QyU3QyU3QyZzZGF0YT1hTXc3czhEbldXek5VNnRv dlF1U3A0Nk9RUGlqcFhqbHBWRVo3Nll5V0FvJTNEJnJlc2VydmVkPTA+PGh0dHBzOi8vbmFtMDYu c2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmp4cmF5 LmNvbSUyRiZkYXRhPTA1JTdDMDIlN0NtZG1pdHJpZXYlNDBsaW5rZWRpbi5jb20lN0M0MDMxYjJj OTI5Y2U0Zjg5YzUyODA4ZGU1ZDI1NTM4ZSU3QzcyZjk4OGJmODZmMTQxYWY5MWFiMmQ3Y2QwMTFk YjQ3JTdDMCU3QzAlN0M2MzkwNTA2MTIwNzk4MzUzMDAlN0NVbmtub3duJTdDVFdGcGJHWnNiM2Q4 ZXlKRmJYQjBlVTFoY0draU9uUnlkV1VzSWxZaU9pSXdMakF1TURBd01DSXNJbEFpT2lKWGFXNHpN aUlzSWtGT0lqb2lUV0ZwYkNJc0lsZFVJam95ZlElM0QlM0QlN0MwJTdDJTdDJTdDJnNkYXRhPTRM b0dZMGR1ZmpaQ2VIUDBZWGR6WkhES0drZVM4NjI4RERTUGRtcDJDNm8lM0QmcmVzZXJ2ZWQ9MDxo dHRwczovL2p4cmF5LmNvbS8+PikuIFVuZm9ydHVuYXRlbHksIHdlIGNhbm5vdCBzaGFyZSB0aGUg ZW50aXJlIGp4cmF5IGFuYWx5c2lzIGR1ZSB0byBzZWN1cml0eSByZXN0cmljdGlvbnMsIGJ1dCB3 ZSBjYW4gc2hhcmUgb25lIGV4Y2VycHQgZnJvbSBpdCwgc2VlIGJlbG93LiBJdCBjb21lcyBmcm9t IHNlY3Rpb24gMTEgb2YganhyYXkgcmVwb3J0LCDigJxCYWQgUHJpbWl0aXZlIEFycmF5c+KAnSwg d2hpY2ggdGVsbHMgdXMgaG93IG11Y2ggbWVtb3J5IGlzIHdhc3RlZCBkdWUgdG8gZW1wdHkgb3Ig dW5kZXItdXRpbGl6ZWQgcHJpbWl0aXZlIGFycmF5cy4gVGhhdCBzZWN0aW9uIHNheXMgdGhhdCBu ZWFybHkgNEcgb2YgbWVtb3J5ICgyNS42JSBvZiB1c2VkIGhlYXApIGlzIHdhc3RlZC4gQW5kIGl0 IHR1cm5zIG91dCB0aGF0IG1vc3Qgb2YgdGhhdCBpcyBkdWUgdG8gYnl0ZVtdIGFycmF5cyBtYW5h Z2VkIGJ5IFNlZ21lbnRUZXJtc0VudW1GcmFtZSBjbGFzcy4NCg0KW1hdDQoNClRvIGNsYXJpZnk6 IGZyb20gdGhlIGFib3ZlIHNjcmVlbnNob3QsIGUuZy4gODAlIG9mIGFsbCBhcnJheXMgcG9pbnRl ZCBieSBzdWZmaXhCeXRlcyBkYXRhIGZpZWxkIGFyZSBqdXN0IGVtcHR5LCBpLmUuIGNvbnRhaW4g b25seSB6ZXJvZXMsIHdoaWNoIGxpa2VseSBtZWFucyB0aGF0IHRoZXkgaGF2ZSBuZXZlciBiZWVu IHVzZWQuIE9mIHRoZSByZW1haW5pbmcgYXJyYXlzLCAzJSBhcmUg4oCcdHJhaWwtMHPigJ0sIGku ZS4gaGF2ZSBtb3JlIHRoYW4gYSBoYWxmIG9mIHRyYWlsaW5nIHplcm8gZWxlbWVudHMsIGkuZS4g d2VyZSBvbmx5IHBhcnRpYWxseSB1dGlsaXplZC4gU28gb25seSAxNyUgb2YgdGhlc2UgYXJyYXlz IGhhdmUgYmVlbiB1dGlsaXplZCBtb3JlIG9yIGxlc3MgZnVsbHkuIFRoZSBzYW1lIGlzIHRydWUg Zm9yIGFsbCBvdGhlciBieXRlW10gYXJyYXlzIG1hbmFnZWQgYnkgU2VnbWVudFRlcm1zRW51bUZy YW1lLiBOb3RlIHRoYXQgZnJvbSBvdGhlciBzZWN0aW9ucyBvZiB0aGUgaGVhcCBkdW1wIGl04oCZ cyBjbGVhciB0aGF0IHRoZSBtYWpvcml0eSBvZiB0aGVzZSBvYmplY3RzIGFyZSBnYXJiYWdlLCBp LmUuIHRoZXkgaGF2ZSBhbHJlYWR5IGJlZW4gdXNlZCBhbmQgZGlzY2FyZGVkLiBUaHVzLCBhdCBs ZWFzdCA4MCUgb2YgbWVtb3J5IHRoYXQgd2FzIGFsbG9jYXRlZCBmb3IgdGhlc2UgYnl0ZVtdIGFy cmF5cyBoYXMgbm90IGJlZW4gdXNlZCBhbmQgd2FzIHdhc3RlZC4gRnJvbSBzZXBhcmF0ZSBtZW1v cnkgYWxsb2NhdGlvbiBwcm9maWxpbmcsIHdlIGVzdGltYXRlZCB0aGF0IHRoZXNlIGFycmF5cyBh cmUgcmVzcG9uc2libGUgZm9yIH4yRy9zZWMgb2YgbWVtb3J5IGFsbG9jYXRpb24uIElmIHRoZXkg d2VyZSBhbGxvY2F0ZWQgbGF6aWx5IHJhdGhlciB0aGFuIGVhZ2VybHksIGkuZS4ganVzdCBiZWZv cmUgdGhleSB3b3VsZCBiZSByZWFsbHkgdXNlZCwgd2UgY291bGQgcG90ZW50aWFsbHkgcmVkdWNl IHRoZWlyIG1lbW9yeSBhbGxvY2F0aW9uIHJhdGUgc2hhcmUgZnJvbSAyRy9zZWMgdG8gKDEgLSAw LjgpKjIgPSAwLjQgRy9zZWMuDQoNCkEgc3dpdGNoIGZyb20gZWFnZXIgdG8gbGF6eSBhbGxvY2F0 aW9uIG9mIHNvbWUgZGF0YSBzdHJ1Y3R1cmUgaXMgdXN1YWxseSBlYXN5IHRvIGltcGxlbWVudC4g TGV04oCZcyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgc291cmNlIGNvZGU8aHR0cHM6Ly9uYW0w Ni5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHBzJTNBJTJGJTJGZm9z c2llcy5vcmclMkZsaW51eCUyRnd3dyUyRmx1Y2VuZS0xMC4zLjItc3JjLnRneiUyRmx1Y2VuZS0x MC4zLjIlMkZsdWNlbmUlMkZiYWNrd2FyZC1jb2RlY3MlMkZzcmMlMkZqYXZhJTJGb3JnJTJGYXBh Y2hlJTJGbHVjZW5lJTJGYmFja3dhcmRfY29kZWNzJTJGbHVjZW5lOTAlMkZibG9ja3RyZWUlMkZT ZWdtZW50VGVybXNFbnVtRnJhbWUuamF2YSZkYXRhPTA1JTdDMDIlN0NtZG1pdHJpZXYlNDBsaW5r ZWRpbi5jb20lN0M0MDMxYjJjOTI5Y2U0Zjg5YzUyODA4ZGU1ZDI1NTM4ZSU3QzcyZjk4OGJmODZm MTQxYWY5MWFiMmQ3Y2QwMTFkYjQ3JTdDMCU3QzAlN0M2MzkwNTA2MTIwNzk4NDg2NjklN0NVbmtu b3duJTdDVFdGcGJHWnNiM2Q4ZXlKRmJYQjBlVTFoY0draU9uUnlkV1VzSWxZaU9pSXdMakF1TURB d01DSXNJbEFpT2lKWGFXNHpNaUlzSWtGT0lqb2lUV0ZwYkNJc0lsZFVJam95ZlElM0QlM0QlN0Mw JTdDJTdDJTdDJnNkYXRhPWs0cEFHQ1lxcXdXU1p0UmZJQncwYSUyRmNpRmxSZGVTcEZBa1BpYWZW QjZKRSUzRCZyZXNlcnZlZD0wPGh0dHBzOi8vZm9zc2llcy5vcmcvbGludXgvd3d3L2x1Y2VuZS0x MC4zLjItc3JjLnRnei9sdWNlbmUtMTAuMy4yL2x1Y2VuZS9iYWNrd2FyZC1jb2RlY3Mvc3JjL2ph dmEvb3JnL2FwYWNoZS9sdWNlbmUvYmFja3dhcmRfY29kZWNzL2x1Y2VuZTkwL2Jsb2NrdHJlZS9T ZWdtZW50VGVybXNFbnVtRnJhbWUuamF2YT4+LiBUaGUgc3VmZml4Qnl0ZXMgYXJyYXkgdXNhZ2Ug aGFzIHRoZSBmb2xsb3dpbmcgcGF0dGVybjoNCg0KLy8gRWFnZXIgY29uc3RydWN0aW9uIHdpdGgg aGFyZGNvZGVkIHNpemUNCmJ5dGVbXSBzdWZmaXhCeXRlcyA9IG5ldyBieXRlWzEyOF07DQoNCuKA piAgLy8gRmFzdCBmb3J3YXJkIHRvIHRoZSBsb2FkQmxvY2soKSBtZXRob2QNCuKApg0KaWYgKHN1 ZmZpeEJ5dGVzLmxlbmd0aCA8IG51bVN1ZmZpeEJ5dGVzKSB7DQogIC8vIElmIHdlIG5lZWQgdG8g cmVhZCBtb3JlIHRoYW4gMTI4IGJ5dGVzLCBpbmNyZWFzZSB0aGUgYXJyYXnigKYNCiAgLy8g4oCm IG9yIG1vcmUgcHJlY2lzZWx5LCB0aHJvdyBhd2F5IHRoZSBvbGQgYXJyYXkgYW5kIGFsbG9jYXRl IGFub3RoZXIgb25lDQogIHN1ZmZpeEJ5dGVzID0gbmV3IGJ5dGVbQXJyYXlVdGlsLm92ZXJzaXpl KG51bVN1ZmZpeEJ5dGVzLCAxKV07DQp9DQoNCkZyb20gdGhpcyBjb2RlLCBpdOKAmXMgY2xlYXIg dGhhdCB0d28gbmVnYXRpdmUgdGhpbmdzIGNhbiBoYXBwZW46DQoNCiAgMS4NCnN1ZmZpeEJ5dGVz IG1heSBub3QgYmUgdXNlZCBhdCBhbGwgKHRoZSBsb2FkQmxvY2soKSBtZXRob2QgbWF5IG5vdCBi ZSBjYWxsZWQgb3IgbWF5IHJldHVybiBlYXJseSkuIFRoZSBtZW1vcnkgdXNlZCBieSB0aGUgYXJy YXkgd2lsbCBiZSBjb21wbGV0ZWx5IHdhc3RlZA0KICAyLg0KSWYgbnVtU3VmZml4Qnl0ZXMgaGFw cGVucyB0byBiZSBncmVhdGVyIHRoYW4gMTI4LCB0aGUgY3VycmVudCBlYWdlcmx5IGFsbG9jYXRl ZCBhcnJheSB3aWxsIGJlIGRpc2NhcmRlZC4gVGhlIG1lbW9yeSB1c2VkIGJ5IGl0IHdpbGwgYmUg d2FzdGVkLg0KDQpBbmQgYXMgb3VyIGhlYXAgZHVtcCBpbGx1c3RyYXRlcywgdGhlc2UgdGhpbmdz IGxpa2VseSBoYXBwZW4gdmVyeSBvZnRlbi4gVG8gYWRkcmVzcyB0aGlzIHByb2JsZW0sIGl0IHdv dWxkIGJlIHN1ZmZpY2llbnQgdG8gY2hhbmdlIHRoZSBjb2RlIGFzIGZvbGxvd3M6DQoNCi8vIEF2 b2lkIGVhZ2VyIGNvbnN0cnVjdGlvbg0KYnl0ZVtdIHN1ZmZpeEJ5dGVzOw0K4oCmDQppZiAoc3Vm Zml4Qnl0ZSA9PSBudWxsIHx8IHN1ZmZpeEJ5dGVzLmxlbmd0aCA8IG51bVN1ZmZpeEJ5dGVzKSB7 DQogIC8vIElmIHdlIG5lZWQgdG8gcmVhZCBtb3JlIHRoYW4gMTI4IGJ5dGVzLCBpbmNyZWFzZSB0 aGUgYXJyYXnigKYNCiAgLy8g4oCmIG9yIG1vcmUgcHJlY2lzZWx5LCB0aHJvdyBhd2F5IHRoZSBv bGQgYXJyYXkgYW5kIGFsbG9jYXRlIGFub3RoZXIgb25lDQogIHN1ZmZpeEJ5dGVzID0gbmV3IGJ5 dGVbQXJyYXlVdGlsLm92ZXJzaXplKG51bVN1ZmZpeEJ5dGVzLCAxKV07DQp9DQoNCk5vdGUgdGhh dCByZWR1Y2luZyBtZW1vcnkgYWxsb2NhdGlvbiByYXRlIHJlc3VsdHMgcHJpbWFyaWx5IGluIHJl ZHVjdGlvbiBvZiBDUFUgdXNhZ2UgYW5kL29yIGltcHJvdmVkIGxhdGVuY3kuIFRoYXTigJlzIGJl Y2F1c2UgZWFjaCBvYmplY3QgYWxsb2NhdGlvbiByZXF1aXJlcyB3b3JrIGZyb20gdGhlIEpWTSAt IHVwZGF0aW5nIHBvaW50ZXJzIGFuZCBzZXR0aW5nIGFsbCBvYmplY3QgYnl0ZXMgdG8gemVyby4g QW5kIHRoZW4gR0NpbmcgdGhlc2Ugb2JqZWN0cyBpcyBhbHNvIENQVS1pbnRlbnNpdmUsIGFuZCBy ZXN1bHRzIGluIHBhdXNpbmcgYXBwIHRocmVhZHMsIHdoaWNoIGFmZmVjdHMgbGF0ZW5jeS4gSG93 ZXZlciwgb25jZSBtZW1vcnkgYWxsb2NhdGlvbiByYXRlIGlzIHJlZHVjZWQsIGl0IG1heSBiZSBw b3NzaWJsZSB0byBhbHNvIHJlZHVjZSB0aGUgSlZNIGhlYXAgbWVtb3J5LiBTbyB0aGUgdWx0aW1h dGUgd2luIGlzIGdvaW5nIHRvIGJlIGluIGJvdGggQ1BVIGFuZCBtZW1vcnkuDQoNClBsZWFzZSBs ZXQgdXMga25vdyBob3cgd2UgY2FuIHByb2NlZWQgd2l0aCB0aGlzLiBUaGUgcHJvcG9zZWQgY2hh bmdlIGlzIHRyaXZpYWwsIGFuZCB0aHVzIG1heWJlIGl0IGNhbiBiZSBkb25lIHF1aWNrbHkgYnkg c29tZSBlc3RhYmxpc2hlZCBMdWNlbmUgY29udHJpYnV0b3IuIElmIG5vdCwgSSBndWVzcyBJIGNh biBtYWtlIGl0IG15c2VsZiBhbmQgdGhlbiBob3BlIHRoYXQgaXQgZ29lcyB0aHJvdWdoIHJldmll dyBhbmQgcmVsZWFzZSBpbiByZWFzb25hYmxlIHRpbWUuDQoNCk1pc2hhDQoNCg== --_000_CH9PR21MB58564C5EA6067BA3B381C22CC290ACH9PR21MB5856namp_--