[#110736] Can't sign in to bugs.ruby-lang.org — Daniel Berger <djberg96@...>
Hi,
4 messages
2022/11/13
[ruby-core:110776] [Ruby master Feature#19104] Introduce the cache-based optimization for Regexp matching
From:
"byroot (Jean Boussier)" <noreply@...>
Date:
2022-11-16 14:09:22 UTC
List:
ruby-core #110776
SXNzdWUgIzE5MTA0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgYnlyb290IChKZWFuIEJvdXNzaWVyKS4N Cg0KDQpOb3Qgc3VyZSBpZiBoZWxwZnVsLCBidXQgYWZ0ZXIgd29ya2luZyBhcm91bmQgdGhpcyBi dWcsIHdlIHJlYWxpemVkIHRoYXQgaXQgd2Fzbid0IGp1c3QgcmV0dXJuaW5nIHRoZSB3cm9uZyB2 YWx1ZS4gDQoNCkF2b2lkaW5nIHRoaXMgY29kZXBhdGggYWxzbyBjYXVzZWQgYSBsb3Qgb2Ygd2Vp cmQgY3Jhc2hlcyB0byB2YW5pc2ggKGUuZy4gYFNlZ21lbnRhdGlvbiBmYXVsdCBhdCAweDAwMDAw MDAwMDAwMDAwMDBgIGFuZCBgW0JVR10gVHJpZWQgdG8gbWFyayBUX05PTkVgKS4gU28gSSBoZWF2 aWx5IHN1c3BlY3QgdGhhdCBvbmUgb2YgdGhlIHNpZGUgZWZmZWN0cyBvZiB0aGlzIGJ1ZyBpcyB0 byBvdmVyd3JpdGUgcGFydHMgb2YgdGhlIGhlYXAgd2l0aCBgMGBzLg0KDQotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGZWF0dXJlICMxOTEwNDogSW50cm9kdWNlIHRo ZSBjYWNoZS1iYXNlZCBvcHRpbWl6YXRpb24gZm9yIFJlZ2V4cCBtYXRjaGluZw0KaHR0cHM6Ly9i dWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE5MTA0I2NoYW5nZS0xMDAxMjENCg0KKiBBdXRob3I6 IG1ha2Vfbm93X2p1c3QgKEtpdHN1bmUgVFNVWVVTQVRPKQ0KKiBTdGF0dXM6IE9wZW4NCiogUHJp b3JpdHk6IE5vcm1hbA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K UmVnZXhwIG1hdGNoaW5nIGNhdXNlcyBhIHRpbWUtY29tcGxleGl0eSBleHBsb3Npb24gcHJvYmxl bSBhcyBrbm93biBhcyBSZURvUyAoW2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlRG9T XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZURvUykpLiBSZURvUyBoYXMgYmVjb21l IHNlcmlvdXMgdnVsbmVyYWJpbGl0eSBpbiBtYW55IHBsYWNlcyBpbiByZWNlbnQgeWVhcnMsIGFu ZCBSdWJ5IGlzIG5vIGV4Y2VwdGlvbi4gVGhlIGZvbGxvd2luZyBpcyB0aGUgaW5jb21wbGV0ZSBs aXN0IG9mIHN1Y2ggdnVsbmVyYWJpbGl0eSByZXBvcnRzOg0KDQotIFtodHRwczovL2dpdGh1Yi5j b20vc2luYXRyYS9zaW5hdHJhL3B1bGwvMTgyM10oaHR0cHM6Ly9naXRodWIuY29tL3NpbmF0cmEv c2luYXRyYS9wdWxsLzE4MjMpDQotIFtodHRwczovL2dpdGh1Yi5jb20vbG9zdGlzbGFuZC9mYXJh ZGF5LW5ldF9odHRwL3B1bGwvMjddKGh0dHBzOi8vZ2l0aHViLmNvbS9sb3N0aXNsYW5kL2ZhcmFk YXktbmV0X2h0dHAvcHVsbC8yNykNCg0KVGhlc2UgcmVwb3J0cyBoYXZlIGJlZW4gYWRkcmVzc2Vk IGJ5IGZpeGluZyB0aGUgbGlicmFyeS9zb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbi4gQnV0LCBpZiB0 aGUgbGFuZ3VhZ2XigJlzIFJlZ2V4cCBpbXBsZW1lbnRhdGlvbiBiZWNvbWVzIHNhZmUsIHRoZSB2 dWxuZXJhYmlsaXR5IGlzIGZ1bmRhbWVudGFsbHkgYXJjaGl2ZWQuDQoNCkZvciBhIGZldyBtb250 aHMsIFJ1YnkgaGFzIGltcGxlbWVudGVkIGEgUmVnZXhwIG1hdGNoaW5nIHRpbWVvdXQgKFtodHRw czovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTc4MzddKGh0dHBzOi8vYnVncy5ydWJ5LWxh bmcub3JnL2lzc3Vlcy8xNzgzNykpLiBJdCBpcyBvbmUgb2YgdGhlIHVzZWZ1bCBtZXRob2RzIGZv ciBwcmV2ZW50aW5nIFJlRG9TIHZ1bG5lcmFiaWxpdHksIGJ1dCBpdCBpcyBhIHByb2JsZW0gdGhh dCBzZXR0aW5nIGEgY29ycmVjdCB0aW1lb3V0IHZhbHVlIGlzIGhhcmQuIFRoaXMgdmFsdWUgaXMg ZGVwZW5kaW5nIG9uIGlucHV0IGxlbmd0aCwgZW52aXJvbm1lbnQsIG5ldHdvcmsgc3RhdHVzLCBz eXN0ZW0gbG9hZCwgZXRjLiBXaGVuIHRoZSB2YWx1ZSBpcyB0b28gc21hbGwsIGEgc3lzdGVtIG1h eSBiZSBicm9rZW4sIGJ1dCB3aGVuIHRoZSB2YWx1ZSBpcyB0b28gbGFyZ2UsIGl0IGlzIG5vdCB1 c2VmdWwgZm9yIHByZXZlbnRpbmcgUmVEb1MuDQoNClRoZXJlZm9yZSwgYXMgYSBuZXcgd2F5IHRv IHByZXZlbnQgUmVEb1MsIHdlIHByb3Bvc2UgdG8gaW50cm9kdWNlIGNhY2hlLWJhc2VkIG9wdGlt aXphdGlvbiBmb3IgUmVnZXhwIG1hdGNoaW5nLiBBcyBDUyBmdW5kYW1lbnRhbCBrbm93bGVkZ2Us IGF1dG9tYXRvbiBtYXRjaGluZyByZXN1bHQgZGVwZW5kcyBvbiB0aGUgcG9zaXRpb24gb2YgaW5w dXQgYW5kIHN0YXRlLiBJbiBhZGRpdGlvbiwgbWF0Y2hpbmcgdGltZSBleHBsb3Npb24gaXMgY2F1 c2VkIGZvciByZXBlYXRpbmcgdG8gYXJyaXZlIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGFuZCBzdGF0 ZSBtYW55IHRpbWVzLiBUaGVuLCBSZURvUyBjYW4gYmUgcHJldmVudGVkIHdoZW4gcGFpcnMgb2Yg cG9zaXRpb24sIGFuZCBzdGF0ZSBhcnJpdmVkIG9uY2UgaXMgcmVjb3JkZWQgKGNhY2hlZCkuIElu IGZhY3QsIHVuZGVyIHN1Y2ggYW4gb3B0aW1pemF0aW9uLCBpdCBpcyBrbm93biBhcyB0aGUgbWF0 Y2hpbmcgdGltZSBjb21wbGV4aXR5IGlzIGxpbmVhciBhZ2FpbnN0IGlucHV0IHNpemUgWzFdLg0K DQpbMV06IERhdmlzLCBKYW1lcyBDLiwgRnJhbmNpc2NvIFNlcnZhbnQsIGFuZCBEb25neW9vbiBM ZWUuICJVc2luZyBzZWxlY3RpdmUgbWVtb2l6YXRpb24gdG8gZGVmZWF0IHJlZ3VsYXIgZXhwcmVz c2lvbiBkZW5pYWwgb2Ygc2VydmljZSAoUmVEb1MpLiIgKjIwMjEgSUVFRSBzeW1wb3NpdW0gb24g c2VjdXJpdHkgYW5kIHByaXZhY3kgKFNQKSouIElFRUUsIDIwMjEuIFtodHRwczovL3d3dy5jb21w dXRlci5vcmcvY3NkbC9wcm9jZWVkaW5ncy1hcnRpY2xlL3NwLzIwMjEvODkzNDAwYTU0My8xb2Fr OTg4VGh2T10oaHR0cHM6Ly93d3cuY29tcHV0ZXIub3JnL2NzZGwvcHJvY2VlZGluZ3MtYXJ0aWNs ZS9zcC8yMDIxLzg5MzQwMGE1NDMvMW9hazk4OFRodk8pDQoNClNlZSB0aGUgZm9sbG93aW5nIGV4 YW1wbGUuDQoNCmBgYGJhc2gNCiQgcnVieSAtLXZlcnNpb24NCnJ1YnkgMy4yLjBwcmV2aWV3MiAo MjAyMi0wOS0wOSBtYXN0ZXIgMzVjZmM5YTNiYikgW2FybTY0LWRhcndpbjIxXQ0KDQokIHRpbWUg cnVieSAtZSAnL14oYXxhKSokLyA9fiAiYSIgKiAyOCArICJiIicNCnJ1YnkgLWUgJy9eKGF8YSkq JC8gPX4gImEiICogMjggKyAiYiInICA4LjQ5cyB1c2VyIDAuMDRzIHN5c3RlbSA5OCUgY3B1IDgu NjYzIHRvdGFsDQoNCiQgLi9taW5pcnVieSAtLXZlcnNpb24NCnJ1YnkgMy4yLjBkZXYgKDIwMjIt MTAtMjdUMTM6Mzk6NTZaIHJlY2FjaGUgYmM1OWI3Y2MxZSkgW2FybTY0LWRhcndpbjIxXQ0KDQok IHRpbWUgLi9taW5pcnVieSAtZSAnL14oYXxhKSokLyA9fiAiYSIgKiAyOCArICJiIicNCi4vbWlu aXJ1YnkgLWUgJy9eKGF8YSkqJC8gPX4gImEiICogMjggKyAiYiInICAwLjAxcyB1c2VyIDAuMDFz IHN5c3RlbSA4JSBjcHUgMC4zMTAgdG90YWwNCmBgYA0KDQpJbiB0aGlzIGV4YW1wbGUsIHVzaW5n IHJ1YnkgdjMuMi4wLXByZXZpZXcyLCBtYXRjaGluZyBgL14oYXxhKSokL2AgYWdhaW5zdCBgImEi ICogMjggKyAiYiJgIHRha2VzIDguNiBzZWNvbmRzIGJlY2F1c2UgbWF0Y2hpbmcgdGltZSBvZiB0 aGlzIFJlZ2V4cCB0YWtlcyBleHBvbmVudGlhbGx5IGFnYWluc3QgYCJhIiAqIE4gKyAiYiJgIGZv cm0gc3RyaW5nLiBCdXQsIHVzaW5nIHRoZSBwYXRjaGVkIHZlcnNpb24gb2YgcnVieSwgaXQgdGFr ZXMgMC4wMSBzZWNvbmRzLiBJbmNyZWRpYmx5IGl0IGlzIDg2MCB0aW1lcyBmYXN0ZXIgYmVjYXVz ZSBtYXRjaGluZyBpcyBkb25lIGluIGxpbmVhciB0aW1lLg0KDQpCeSB0aGlzIG9wdGltaXphdGlv biwgdGhlIG1hdGNoaW5nIHRpbWUgaXMgbGluZWFyIHRvIHRoZSBpbnB1dCBzaXplLiBJdCBzb3Vu ZHMgc2VjdXJlIGFuZCBnb29kLiBVbmZvcnR1bmF0ZWx5LCB3aGVuIFJlZ2V4cCB1c2VzIHNvbWUg ZXh0ZW5zaW9uIChlLmcuIGxvb2stYXJvdW5kLCBiYWNrLXJlZmVyZW5jZSwgc3ViZXhwcmVzc2lv biBjYWxsKSwgdGhlIG9wdGltaXphdGlvbiBpcyBub3QgYXBwbGllZC4gQWxzbywgdGhlIG9wdGlt aXphdGlvbiBuZWVkcyBhIGJpdCBtb3JlIG1lbW9yeSBmb3IgY2FjaGluZy4gSG93ZXZlciwgd2Ug aGF2ZSBhbHJlYWR5IGludmVzdGlnYXRlZCB0aGF0IHRoZXkgYXJlIG5vdCBzbyB0aGUgbWFqb3Ig cHJvYmxlbXMgKFNlZSB0aGUgIkxpbWl0YXRpb24iIHNlY3Rpb24pLg0KDQojIyBJbXBsZW1lbnRh dGlvbg0KDQpUaGUgYmFzaWMgY2FjaGUgaW1wbGVtZW50YXRpb24gaXMgY29tcGxldGUgYXQgdGhp cyB0aW1lIGFuZCBjYW4gYmUgZm91bmQgaW4gdGhlIGZvbGxvd2luZyBQdWxsIFJlcXVlc3QuDQoN CltodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L3B1bGwvNjQ4Nl0oaHR0cHM6Ly9naXRodWIu Y29tL3J1YnkvcnVieS9wdWxsLzY0ODYpDQoNClNvbWUgdGVzdHMgc2VlbSB0byBiZSBmYWlsZWQs IGJ1dCBpdCBpcyBubyBwcm9ibGVtISBCZWNhdXNlIHRoZSBmYWlsZWQgdGVzdHMgYXJlIGZvciBS ZWdleHAgdGltZW91dCwgb3B0aW1pemF0aW9uIHdvcmtzIGNvcnJlY3RseSBhbmQgc28gdGhleSBm YWlsZWQgYXMgZXhwZWN0ZWQuIE9mIGNvdXJzZSwgd2UgbmVlZCB0byBmaXggdGhlc2UgdGVzdHMg YmVmb3JlIG1lcmdpbmcuDQoNCkltcGxlbWVudGF0aW9uIG5vdGVzOg0KDQotIEEgbnVsbC1jaGVj ayBvbiBsb29wIGNhdXNlcyBub24tbGluZWFyIGJlaGF2aW9yLCBzbyB0aGUgZmllbGQgdG8gaW5k ZXggdGhlIGxhdGVzdCBudWxsLWNoZWNrIGl0ZW0gb24gdGhlIHN0YWNrIGlzIGFkZGVkIHRvIE9u aWdTdGFja1R5cGUuIChbaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzY0ODYvZmls ZXMjZGlmZi00MzQ3NDYwZTM3OWNkOTcwYmEwYjg4YjRhY2IyMTVlYTYwY2JhZTMwODEyNDY3NWRl ODgxMWVlZDM3NzM2N2FhUjgzMV0oaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzY0 ODYvZmlsZXMjZGlmZi00MzQ3NDYwZTM3OWNkOTcwYmEwYjg4YjRhY2IyMTVlYTYwY2JhZTMwODEy NDY3NWRlODgxMWVlZDM3NzM2N2FhUjgzMSkpDQotIFdoZW4gdGhlIGxvb3AgaXMgbnVsbCBhbmQg dGhpcyBsb29wIGhhcyBhIGNhcHR1cmUsIG1hdGNoaW5nIGJlaGF2ZXMgYXMgYSBtb25vbWFuaWFj LiBUbyByZXByb2R1Y2UgdGhpcyBiZWhhdmlvciwgY2FjaGVzIGluIHRoZSBsb29wIGlzIGNsZWFy ZWQgYXMgbmVjZXNzYXJ5LiAoW2h0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC82NDg2 L2ZpbGVzI2RpZmYtYzNjZmUxOWVmZmYwY2M1MTgxMzg0NzQxMzg2MDY3YjgxZWFkYjI1MDViOGI5 YjNmOTgwZDEwZjgxNTAzNzM5NVIzNDMzXShodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L3B1 bGwvNjQ4Ni9maWxlcyNkaWZmLWMzY2ZlMTllZmZmMGNjNTE4MTM4NDc0MTM4NjA2N2I4MWVhZGIy NTA1YjhiOWIzZjk4MGQxMGY4MTUwMzczOTVSMzQzMykpDQpMaWtlIGEgZmxpcC1mbG9wIG9wZXJh dG9yLCB3ZSBob3BlIHRvIGRyb3AgdGhpcyBpZiBwb3NzaWJsZS4gQnV0IGl0IHN0aWxsIHJlbWFp bnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4NCg0KIyMjIExpbWl0YXRpb24NCg0KQ2FjaGUtYmFz ZWQgb3B0aW1pemF0aW9uIGlzIG5vdCBhcHBsaWVkIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6DQoN CjEuIFJlZ2V4cCB1c2luZyBzb21lIGV4dGVuc2lvbnMgKGJhY2stcmVmZXJlbmNlIGFuZCBzdWJl eHByZXNzaW9uIGNhbGwsIGxvb2stYXJvdW5kLCBhdG9taWMsIGFic2VudCBvcGVyYXRvcnMpIGlz IG5vdCBvcHRpbWl6ZWQgYmVjYXVzZSBpdCBpcyBpbXBvc3NpYmxlIG9yIGhhcmQuIEhvd2V2ZXIs IGl0IG1heSBiZSBwb3NzaWJsZSBmb3IgbG9vay1hcm91bmQgb3BlcmF0b3JzLg0KMi4gQSBib3Vu ZGVkIG9yIGZpeGVkIHRpbWVzIHJlcGV0aXRpb24gbmVzdGluZyBpbiBhbm90aGVyIHJlcGV0aXRp b24gKGUuZy4gYC8oYXsyLDN9KSovYCkuIEl0IGlzIGFuIGltcGxlbWVudGF0aW9uIGlzc3VlIGVu dGlyZWx5LCBidXQgd2UgYmVsaWV2ZSBpdCBpcyBoYXJkIHRvIHN1cHBvcnQgdGhpcyBjYXNlIGNv cnJlY3RseS4NCjMuIEJvdW5kZWQgb3IgZml4ZWQgdGltZXMgcmVwZXRpdGlvbiBpcyB0b28gbGFy Z2UgKGUuZy4gYC8oYXxiKXsxMDAwMDAsMjAwMDAwfS9gKS4gVGhlIGNhY2hlIHRhYmxlIHNpemUg aXMgcHJvcG9ydGlvbmFsIHRvIHRoZSBwcm9kdWN0IG9mIHRoZSBudW1iZXIgb2YgY2FjaGUgcG9p bnRzIG9mIHJlZ2V4IGFuZCBpbnB1dCBzaXplLiBJbiB0aGlzIGNhc2UsIHNpbmNlIHRoZSBudW1i ZXIgb2YgY2FjaGUgcG9pbnRzIGJlY29tZXMgdG9vIGxhcmdlLCB0aGUgb3B0aW1pemF0aW9uIGNh bm5vdCBiZSBhcHBsaWVkLg0KDQpFeHBlcmltZW50cyB3ZXJlIGNvbmR1Y3RlZCB0byBpbnZlc3Rp Z2F0ZSBob3cgdGhlc2UgbGltaXRhdGlvbnMgYXJlIHByb2JsZW1hdGljIGluIHByYWN0aWNlLiBX ZSB1c2VkIE9iamVjdFNwYWNlIHRvIGNvbGxlY3QgUmVnZXhwcyBhbmQgaW52ZXN0aWdhdGUgd2hl dGhlciB0aGV5IGNvdWxkIGJlIG9wdGltaXplZCBhbmQgdGhlIG51bWJlciBvZiBjYWNoZSBwb2lu dHMuIFJlZ2V4cHMgd2VyZSBjb2xsZWN0ZWQgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSwgV2Vi cmljaywgYW5kIFJhaWxzLiBTZWUgdGhlIGZvbGxvd2luZyBnaXN0IGZvciB0aGUgZGV0YWlscyAo W2h0dHBzOi8vZ2lzdC5naXRodWIuY29tL21ha2Vub3dqdXN0LzgzZTFlNzVhMmQ3ZGU4Yjk1NmU5 M2JkYWMwMDRhMDZiXShodHRwczovL2dpc3QuZ2l0aHViLmNvbS9tYWtlbm93anVzdC84M2UxZTc1 YTJkN2RlOGI5NTZlOTNiZGFjMDA0YTA2YikpLg0KDQpUaGUgZXhwZXJpbWVudHMgcmVzdWx0IGlz IHNob3duIGluIHRoZSBmb2xsb3dpbmcgdGFibGUuDQoNCnwgQ29sbGVjdGVkIGZyb20gfCAjIFJl Z2V4cCB8ICMgbm9uLW9wdGltaXphYmxlIHwgTWF4aW11bSBudW1iZXIgb2YgY2FjaGUgcG9pbnRz IHwNCnwgLS0tIHwgLS0tIHwgLS0tIHwgLS0tIHwNCnwgc3RkbGliIHwgMTAwOSB8IDg2ICg4LjUy JSkgfCA4MSB8DQp8IFdlYnJpY2sgfCAzNTYgfCA0NCAoMTIuMzYlKSB8IDIwIHwNCnwgUmFpbHMg fCA3NTkgfCA3NCAoNy43NSUpIHwgMjcgfA0KfCBUb3RhbCA8YnI+IChEdXBsaWNhdGlvbnMgYXJl IHJlZHVjZWQpIHwgMTUwNiB8IDExOCAoNy44NCUpIHwgODEgfA0KDQpUaGlzIHJlc3VsdCBzaG93 cyB0aGF0IHRoZSBwZXJjZW50YWdlIG9mIG5vbi1vcHRpbWl6YWJsZSBSZWdleHAgaXMgbGVzcyB0 aGFuIDEwJSwgYW5kIHRoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQgZm9yIG9wdGltaXphdGlvbiBp cyBhYm91dCAxMCB0aW1lcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgKDgxLzgsIGZvciBhIGJp dCBhcnJheSkgYXQgd29yc3QgaW4gdGhpcyBjYXNlLiBJdCBpcyBjb25zaWRlcmVkIHRoYXQgYSBz dWZmaWNpZW50IG51bWJlciBvZiBSZWdleHAgY2FuIGJlIG9wdGltaXplZCBpbiBwcmFjdGljZS4N Cg0KIyMgU3BlY2lmaWNhdGlvbg0KDQpUaGUgZGV0YWlsZWQgc3BlY2lmaWNhdGlvbiBoYXMgYmVl biBmaXhlZCB5ZXQuIFdlIGhhdmUgc29tZSBpZGVhcyBhbmQgd2Ugd291bGQgbGlrZSB0byBkaXNj dXNzIHRoZW0uDQoNCi0gV2hlbiBpcyBvcHRpbWl6YXRpb24gZW5hYmxlZD8gQ3VycmVudGx5LCBp dCB0dXJucyBvbiB3aGVuIHRoZSBiYWNrdHJhY2sgY2F1c2VzIGFzIG1hbnkgYXMgdGhlIGlucHV0 IGxlbmd0aC4NCi0gSG93IHRoZSBudW1iZXIgb2YgY2FjaGUgcG9pbnRzIGlzIGFsbG93ZWQsIGFu ZCBob3cgbWVtb3J5IGNhbiBiZSBhbGxvY2F0ZWQ/IEl0IGlzIG5vdCBkZXRlcm1pbmVkIGZvciBu b3cuDQotIElmIHRoZSBhYm92ZSBwYXJhbWV0ZXJzIGNhbiBiZSBzcGVjaWZpZWQgYnkgdXNlcnMs IGhvdyBhcmUgdGhleSBzcGVjaWZpZWQ/ICh2aWEgY29tbWFuZC1saW5lIGZsYWdzLCBvciBzdGF0 aWMgLyBpbnN0YW5jZSBwYXJhbWV0ZXJzIGxpa2UgYFJlZ2V4cCMudGltZW91dD1gIGFuZCBgUmVn ZXhwI3RpbWVvdXQ9YCkNCi0gVW5sZXNzIHRoZSBpbnB1dCBzaXplIGlzIHRvbyBsYXJnZSwgdGhl IGF2YWlsYWJpbGl0eSBvZiBvcHRpbWl6YXRpb24gY2FuIGJlIGRldGVybWluZWQgb24gY29tcGls ZS10aW1lLiBTbywgd2Ugd291bGQgbGlrZSB0byBhZGQgYSBuZXcgZmxhZyB0byBSZWdleHAgdG8g ZGV0ZXJtaW5lIHdoZXRoZXIgYSBjYWNoZSBpcyBhdmFpbGFibGUuIEl0IGJlY29tZXMgb25lIG9m IHRoZSBjcml0ZXJpYSBmb3Igd2hldGhlciBSZWdleHAgaXMgZWZmaWNpZW50bHkgZXhlY3V0YWJs ZSBvciBub3QuIFdlIGJlbGlldmUgaXQgaGVscHMgdXNlcnMuIFRodXMsIHdoaWNoIGxldHRlciBp cyBwcmVmZXJyZWQgZm9yIHRoaXMgcHVycG9zZT8gYGxgIChsaW5lYXIpIG9yIGByYCAocmVndWxh cikgc291bmRzIGdvb2QsIGJ1dCBJIGFtIG5vdCBzdXJlIHdoaWNoIGlzIHRoZSBiZXN0Lg0KDQpU aGFuayB5b3UuDQoNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0KClVuc3Vi c2NyaWJlOiA8bWFpbHRvOnJ1YnktY29yZS1yZXF1ZXN0QHJ1YnktbGFuZy5vcmc/c3ViamVjdD11 bnN1YnNjcmliZT4KPGh0dHA6Ly9saXN0cy5ydWJ5LWxhbmcub3JnL2NnaS1iaW4vbWFpbG1hbi9v cHRpb25zL3J1YnktY29yZT4K