[#112457] [Ruby master Feature#19443] Cache `Process.pid` — "byroot (Jean Boussier) via ruby-core" <ruby-core@...>
Issue #19443 has been reported by byroot (Jean Boussier).
16 messages
2023/02/16
[#112584] [Ruby master Feature#19465] [PATCH] reuse open(2) from rb_file_load_ok on POSIX-like system — "normalperson (Eric Wong) via ruby-core" <ruby-core@...>
Issue #19465 has been reported by normalperson (Eric Wong).
9 messages
2023/02/25
[#112595] [Ruby master Feature#19465] [PATCH] reuse open(2) from rb_file_load_ok on POSIX-like system
— "nobu (Nobuyoshi Nakada) via ruby-core" <ruby-core@...>
2023/02/25
SXNzdWUgIzE5NDY1IGhhcyBiZWVuIHVwZGF0ZWQgYnkgbm9idSAoTm9idXlvc2hpIE5ha2FkYSku
[#112613] Re: [Ruby master Feature#19465] [PATCH] reuse open(2) from rb_file_load_ok on POSIX-like system
— Eric Wong via ruby-core <ruby-core@...>
2023/02/26
"nobu (Nobuyoshi Nakada) via ruby-core" <ruby-core@ml.ruby-lang.org> wrote:
[#112615] Re: [Ruby master Feature#19465] [PATCH] reuse open(2) from rb_file_load_ok on POSIX-like system
— SHIBATA Hiroshi via ruby-core <ruby-core@...>
2023/02/27
MzUxMzZlMWU5YzIzMmFkN2EwMzQwN2I5OTJiMmU4NmI2ZGY0M2Y2MyBpcyBicm9rZW4gd2l0aCBg
[#112626] Re: [Ruby master Feature#19465] [PATCH] reuse open(2) from rb_file_load_ok on POSIX-like system
— Eric Wong via ruby-core <ruby-core@...>
2023/02/28
```
[ruby-core:112390] [Ruby master Feature#19322] Support spawning "private" child processes
From:
"kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" <ruby-core@...>
Date:
2023-02-13 01:01:36 UTC
List:
ruby-core #112390
SXNzdWUgIzE5MzIyIGhhcyBiZWVuIHVwZGF0ZWQgYnkga2p0c2FuYWt0c2lkaXMgKEtKIFRzYW5h a3RzaWRpcykuDQ0KDQ0KDQ0KPiBBbHNvIHRoaXMgbmV3IEFQSSB3b3VsZG4ndCBiZSBhZG9wdGVk IGJlZm9yZSBhIHZlcnkgbG9uZyB0aW1lIGJ5IHRoZSBtYW55IHVzYWdlcyBvZiBLZXJuZWwjc3Bh d24vZXRjIChmYXIgbW9yZSB0aGFuIHVzYWdlcyBvZiBQcm9jZXNzLndhaXRhbGwpLg0NCg0NClRo aXMgc2VlbXMgbGlrZSBhIGZhaXJseSBjb21wZWxsaW5nIGFyZ3VtZW50IGFjdHVhbGx5LiBZb3Un cmUgcmlnaHQsIEkgd2FudCB0byB3cml0ZSBzb21lIGNvZGUgdGhhdCBJIGNhbiB1c2Ugc2FmZWx5 IGluIFVuaWNvcm4sIGJ1dCB0aGVyZSdzIHByb2JhYmx5IGEgbGFyZ2UgYm9keSBvZiBleGlzdGlu ZyBjb2RlIGNhbGxpbmcgYFByb2Nlc3Mjc3Bhd25gIGV0IGFsIHRoYXQgcGVvcGxlIGFyZSBhbHNv IHJ1bm5pbmcgaW5zaWRlIGZvcmtpbmcgc2VydmVycyBhbmQgaXMgIm1vc3RseSB3b3JraW5nIi4g U28gbWF5YmUgSSBzaG91bGQgaGF2ZSBhIGxvb2sgYXQgc29sdmluZyB0aGlzIG9uIHRoZSBVbmlj b3JuIHNpZGUgcmF0aGVyIHRoYW4gdGhlIFJ1Ynkgc2lkZS4NDQoNDQpJIHdvbmRlciwgdGhlbiwg aWYgd2Ugc2hvdWxkIGFpbSB0byBfZGVwcmVjYXRlXyBgUHJvY2Vzcy53YWl0YWxsYCBhbmQgZnJp ZW5kcywgZ2l2ZW4gdGhhdCBpdCBjYW4gaW50ZWZlcmUgd2l0aCBzdGFuZGFyZCBsaWJyYXJ5IG1v ZHVsZXMgbGlrZSBvcGVuMy4NDQoNDQo+ICogVGhlcmUgaXMgUHJvY2Vzcy5kZXRhY2gocGlkKS4g VGhhdCBjcmVhdGVzIG9uZSB0aHJlYWQgcGVyIHBpZCwgaWYgdGhhdCdzIHRvbyBtdWNoIG92ZXJo ZWFkIG9uZSBjb3VsZCBtYWtlIHRoZWlyIG93biB3aXRoIFdOT0hBTkcgYW5kIHNsZWVwLCB0aGVu IGl0J3MganVzdCAxIGV4dHJhIHRocmVhZC4NDQo+ICogQWx0ZXJuYXRpdmVseSwganVzdCBkbyB0 aGUgUHJvY2Vzcy53YWl0IGZvcmsge30gaW4gYSB0aHJlYWQsIGFuZCBpdCdzIGV2ZW4gc2ltcGxl ciBhbmQgZWFzaWVyIHRvIGhhbmRsZSBhIGNoaWxkIHByb2Nlc3MgdGVybWluYXRpbmcuDQ0KDQ0K SSB0aGluayBpdCdkIGJlIG5pY2UgdG8gYXZvaWQgaGF2aW5nIHRvIG1ha2UgdGhyZWFkcyBqdXN0 IHRvIG1hbmFnZSBzdWJwcm9jZXNzZXMgdGhyb3VnaCBibG9ja2luZyBBUEkgY2FsbHMgaWYgcG9z c2libGUNDQoNDQo+ICogVGhlIHBpcGUgdHJpY2ssIEkgc3VwcG9zZSB0aGlzIGNvdWxkIGJlIHVz ZWQgd2l0aCBvbmUgcGlwZSBwZXIgcGlkLCB0aGVuIGl0J3MgYWxzbyBlYXN5IHRvIGRldGVjdCB3 aGljaCBwcm9jZXNzIGlzIHJlYWR5IHRvIGJlIHdhaXRlZCBvbi4NDQoNDQpDb3VsZCBkZWZpbml0 ZWx5IHdvcmssIGFuZCBzZWVtcyBsaWtlIHRoZSBiZXN0IHNvbHV0aW9uIGZvciBVbmljb3JuIHNw ZWNpZmljYWxseSwgYWxsIHRoaW5ncyBjb25zaWRlcmVkLg0NCg0NCj4gKiBJc24ndCBvbmUgb2Yg dGhlIG1haW4gcG9pbnRzIG9mIHByb2Nlc3MgZ3JvdXBzIHRvIGRlYWwgd2l0aCBzdWNoIGEgY2Fz ZT8gSSBndWVzcyB3ZSdkIG5lZWQgdG8gcGxhY2UgdGhlIGZvcmtzIGluIGEgbmV3IHByb2Nlc3Mg Z3JvdXAgYW5kIHRoZW4gd2UgY291bGQgd2FpdCBvbiB0aGF0IHdob2xlIHByb2Nlc3MgZ3JvdXAg KFByb2Nlc3Mud2FpdCAtZ3JvdXApLiBNYXliZSB3aXRoIGFuIGV4dHJhIGNoaWxkIHByb2Nlc3Mg aW4gYmV0d2VlbiB0byBzZXR1cCB0aGUgcHJvY2VzcyBncm91cCBvciBzby4NDQoNDQpUaGlzIHdh cyBhY3R1YWxseSBxdWl0ZSBpbnRlcmVzdGluZywgSSBoYWQgYSBsb29rIGF0IHRoaXMuIFRoZSBl eHRyYSBjaGlsZCBwcm9jZXNzIHdvdWxkIG5lZWQgdG8gYmUgYSBzaWJsaW5nIHRvIHRoZSBwcm9j ZXNzZXMgdG8gYmUgd2FpdGVkIG9uIChiZWNhdXNlIHRoZSBwYXJlbnQgY2FuIG9ubHkgd2FpdCBv biBjaGlsZHJlbiwgbm90IGdyYW5kY2hpbGRyZW4pLiBUaGVuLCB3aGVuIGZvcmtpbmcgcHJvY2Vz c2VzLCBlYWNoIGZvcmsgY291bGQgY2FsbCBgc2V0cGdpZCgyKWAgdG8gbW92ZSBpdHNlbGYgaW50 byB0aGF0IHNpYmxpbmcncyBwcm9jZXNzIGdyb3VwOyB0aGVuLCBhcyB5b3Ugc2F5LCBgUHJvY2Vz cy53YWl0IC1ncm91cGAgY291bGQgYmUgdXNlZCB0byB3YWl0IGZvciBvbmx5IHRob3NlIHN1YnBy b2Nlc3NlcyB0aGF0IGpvaW5lZCB0aGUgZ3JvdXAuDQ0KDQ0KVW5mb3J0dW5hdGVseSB0aGVyZSdz IGEgcmFjZSBjb25kaXRpb24gLSBhIGZvcmsgY291bGQgY3Jhc2ggYWZ0ZXIgZm9ya2luZyBhbmQg YmVmb3JlIGNhbGxpbmcgYHNldHBnaWQoMilgLCBpbiB3aGljaCBjYXNlIGl0IHdvdWxkIG5ldmVy IGdldCByZWFwZWQuIA0NCg0NCj4gKiBNYXliZSBpb191cmluZyBvciBzaW1pbGFyIEFQSSBjYW4g d2FpdCBmb3IgYW55IG9mIG11bHRpcGxlIHByb2Nlc3NlcyB0byB0ZXJtaW5hdGU/IA0NCg0NCkxp bnV4IGFuZCBGcmVlQlNEIGhhdmUgcGlkZmRzIHdoaWNoIGNhbiBkbyB0aGlzLCBhbmQgSSB0aGlu ayBgV2FpdEZvck11bHRpcGxlT2JqZWN0c2AgY2FuIGRvIHRoaXMgb24gV2luZG93cywgYnV0IEkg Y291bGRuJ3QgZmluZCBhbnkgZXF1aXZhbGVudCBmb3IgTWFjT1Mgb3IgT3BlbkJTRCB1bmZvcnR1 bmF0ZWx5Lg0NCg0NCg0NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N DQpGZWF0dXJlICMxOTMyMjogU3VwcG9ydCBzcGF3bmluZyAicHJpdmF0ZSIgY2hpbGQgcHJvY2Vz c2VzDQ0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE5MzIyI2NoYW5nZS0xMDE4 MzINDQoNDQoqIEF1dGhvcjoga2p0c2FuYWt0c2lkaXMgKEtKIFRzYW5ha3RzaWRpcykNDQoqIFN0 YXR1czogT3Blbg0NCiogUHJpb3JpdHk6IE5vcm1hbA0NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NDQojIyBCYWNrZ3JvdW5kDQ0KDQ0KVGhlIHRyYWRpdGlvbmFsIFVu aXggcHJvY2VzcyBBUElzIChgZm9ya2AgZXRjKSBhcmUgcG9vcmx5IGlzb2xhdGVkLiBJZiBhIGxp YnJhcnkgc3Bhd25zIGEgY2hpbGQgcHJvY2VzcywgdGhpcyBpcyBub3QgdHJhbnNwYXJlbnQgdG8g dGhlIHByb2dyYW0gdXNpbmcgdGhlIGxpYnJhcnkuIEFueSBzaWduYWwgaGFuZGxlciBmb3IgYFNJ R0NITERgIGluIHRoZSBwcm9ncmFtIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIHNwYXduZWQgcHJv Y2VzcyBleGl0cywgYW5kIGV2ZW4gd29yc2UsIGlmIHRoZSBwYXJlbnQgY2FsbHMgYFByb2Nlc3Mu d2FpdHBpZDIoLTEpYCwgaXQgd2lsbCBjb25zdW1lIHRoZSByZXR1cm5lZCBzdGF0dXMgY29kZSwg c3RlYWxpbmcgaXQgZnJvbSB0aGUgbGlicmFyeSENDQoNDQpVbmZvcnR1bmF0ZWx5LCB0aGUgcHJh Y3RpY2Ugb2YgcmVzcG9uZGluZyB0byBgU0lHQ0hMRGAgYnkgY2FsbGluZyBgd2FpdHBpZDIoLTEp YCBpbiBhIGxvb3AgaXMgYSBwcmV0dHkgY29tbW9uIHVuaXhpc20uIEZvciBleGFtcGxlLCBVbmlj b3JuIGRvZXMgaXQgW2hlcmVdKGh0dHBzOi8veWhidC5uZXQvdW5pY29ybi5naXQvdHJlZS9saWIv dW5pY29ybi9odHRwX3NlcnZlci5yYiNuNDAxKS4gSW4gc2hvcnQsIHRoZXJlIGlzIG5vIHJlbGlh YmxlIHdheSBmb3IgYSBnZW0gdG8gc3Bhd24gYSBjaGlsZCBwcm9jZXNzIGluIGEgd2F5IHRoYXQg Y2Fu4oCZdCAodW5pbnRlbnRpb25hbGx5KSBiZSBpbnRlcmZlcmVkIHdpdGggYnkgb3RoZXIgcGFy dHMgb2YgdGhlIHByb2dyYW0uDQ0KDQ0KIyMgUHJvYmxlbSBzdGF0ZW1lbnQNDQoNDQpDb25zaWRl ciB0aGUgZm9sbG93aW5nIHByb2dyYW0uDQ0KDQ0KYGBgcnVieQ0NCiMgSW1hZ2luZSB0aGlzIHBh cnQgb2YgdGhlIHByb2dyYW0gaXMgaW4gc29tZSB0b3AtbGV2ZWwgYXBwbGljYXRpb24gZXZlbnQg bG9vcA0NCiMgb3Igc29tZXRoaW5nIC0gc2ltaWxhciB0byBob3cgVW5pY29ybiB3b3Jrcy4gSXQg ZGV0ZWN0cyBjaGlsZCBwcm9jZXNzZXMgZXhpdGluZw0NCiMgYW5kIHRha2VzIHNvbWUgYWN0aW9u IChwb3NzaWJseSByZXN0YXJ0aW5nIGEgY3Jhc2hlZCB3b3JrZXIsIGZvciBleGFtcGxlKS4NDQpT aWduYWwudHJhcCg6Q0hMRCkgZG8NDQogIGxvb3AgZG8NDQogICAgYmVnaW4NDQogICAgICBwaWQs IHN0YXR1cyA9IFByb2Nlc3Mud2FpdHBpZDIgLTENDQogICAgICBwdXRzICJTaWduYWwgaGFuZGxl ciByZWFwZWQgI3twaWR9ICN7c3RhdHVzLmluc3BlY3R9Ig0NCiAgICByZXNjdWUgRXJybm86OkVD SElMRA0NCiAgICAgIHB1dHMgIlNpZ25hbCBoYW5kbGVyIHJlYXBlZCBub3RoaW5nIg0NCiAgICAg IGJyZWFrDQ0KICAgIGVuZA0NCiAgZW5kDQ0KZW5kDQ0KDQ0KIyBJbWFnaW5lIHRoYXQgX3RoaXNf IHBhcnQgb2YgdGhlIHByb2dyYW0gaXMgYnVyaWVkIGRlZXAgaW4gc29tZSBnZW0uIEl0IGtub3dz DQ0KIyBub3RoaW5nIGFib3V0IHRoZSBhcHBsaWNhdGlvbiBTSUdDSExEIGhhbmRsaW5nLCBhbmQg cXVpdGUgcG9zc2libHkgdGhlIGFwcGxpY2F0aW9uDQ0KIyBhdXRob3IgbWlnaHQgbm90IGV2ZW4g a25vdyB0aGlzIGdlbSBzcGF3bnMgYSBjaGlsZCBwcm9jZXNzIHRvIGRvIGl0cyB3b3JrIQ0NCnJl cXVpcmUgJ29wZW4zJw0NCmxvb3AgZG8NDQogIG8sIHN0YXR1cyA9IE9wZW4zLmNhcHR1cmUyKCIv YmluL3NoIiwgIi1jIiwgImVjaG8gJ2hlbGxvJyIpDQ0KICBwdXRzICJyYW4gY29tbWFuZCwgZ290 ICN7by5jaG9tcH0gI3tzdGF0dXMuaW5zcGVjdH0iDQ0KZW5kDQ0KYGBgDQ0KDQ0KSW4gY3VycmVu dCB2ZXJzaW9ucyBvZiBSdWJ5LCBfc29tZV8gbG9vcCBpdGVyYXRpb25zIHdpbGwgZnVuY3Rpb24g Y29ycmVjdGx5LCBhbmQgcHJpbnQgc29tZXRoaW5nIGxpa2UgdGhpcy4gVGhlIGdlbSBnZXRzIHRo ZSBgUHJvY2Vzczo6U3RhdHVzYCBvYmplY3QgZnJvbSBpdHMgY29tbWFuZCBhbmQgY2FuIGtub3cg aWYgZS5nLiBpdCBleGl0ZWQgYWJub3JtYWxseS4NDQoNDQpgYGANDQpyYW4gY29tbWFuZCwgZ290 IG9oYWl0aGFyICM8UHJvY2Vzczo6U3RhdHVzOiBwaWQgMTE1MzY4NyBleGl0IDA+DQ0KU2lnbmFs IGhhbmRsZXIgcmVhcGVkIG5vdGhpbmcNDQpgYGANDQoNDQpIb3dldmVyLCBvdGhlciBpdGVyYXRp b25zIG9mIHRoZSBsb29wIHByaW50IHRoaXMuIFRoZSBzaWduYWwgaGFuZGxlciBydW5zIGFuZCBj YWxscyBgUHJvY2Vzcy53YWl0cGlkMigtMSlgIGJlZm9yZSB0aGUgY29kZSBpbiBvcGVuMyBjYW4g ZG8gc28uIFRoZW4sIHRoZSBnZW0gY29kZSBkb2VzIG5vdCBnZXQgYSBgUHJvY2Vzczo6U3RhdHVz YCBvYmplY3QhIFRoaXMgaXMgYWxzbyBwb3RlbnRpYWxseSBiYWQgZm9yIHRoZSBhcHBsaWNhdGlv bjsgaXQgcmVhcGVkIGEgY2hpbGQgcHJvY2VzcyBpdCBkaWRuJ3QgZXZlbiBrbm93IGV4aXN0ZWQs IGFuZCBpdCBtaWdodCBjYXVzZSBzb21lIHN1cnByaXNpbmcgYnVncyBpZiB0aGUgYXBwbGljYXRp b24gYXV0aG9yIGRpZG4ndCBrbm93IHRoaXMgd2FzIGEgcG9zc2liaWxpdHkuDQ0KDQ0KYGBgDQ0K U2lnbmFsIGhhbmRsZXIgcmVhcGVkIDExNTM1OTYgIzxQcm9jZXNzOjpTdGF0dXM6IHBpZCAxMTUz NTk2IGV4aXQgMD4NDQpTaWduYWwgaGFuZGxlciByZWFwZWQgbm90aGluZw0NCnJhbiBjb21tYW5k LCBnb3Qgb2hhaXRoYXIgbmlsDQ0KYGBgDQ0KDQ0KV2Ugd291bGQgbGlrZSBhIGZhbWlseSBvZiBB UElzIHdoaWNoIGFsbG93IGEgZ2VtIHRvIHNwYXduIGEgY2hpbGQgcHJvY2VzcyBhbmQgZ3VhcmFu dGVlcyB0aGF0IHRoZSBnZW0gY2FuIHdhaXQgb24gaXQuIFNvbWUgY29uY3VycmVudCBjYWxsIHRv IGBQcm9jZXNzLndhaXRwaWQyKC0xKWAgKG9yIGV2ZW4gYFByb2Nlc3Mud2FpdHBpZDIoJHNvbWVf bHVja3lfZ3Vlc3NfZm9yX3RoZV9waWQpYCkgc2hvdWxkIG5vdCBzdGVhbCB0aGUgc3RhdHVzIG91 dCBmcm9tIHVuZGVybmVhdGggdGhlIGNvZGUgd2hpY2ggY3JlYXRlZCB0aGUgcHJvY2Vzcy4gSWRl YWxseSwgd2Ugc2hvdWxkIGV2ZW4gc3VwcHJlc3MgdGhlIGBTSUdDSExEYCBzaWduYWwgdG8gYXZv aWQgdGhlIGFwcGxpY2F0aW9uIHNpZ25hbCBoYW5kbGVyIG5lZWRsZXNzbHkgd2FraW5nIHVwLg0N Cg0NCg0NCiMjIFByb3Bvc2VkIFJ1YnktbGV2ZWwgQVBJcy4NDQoNDQpJIHByb3Bvc2Ugd2UgY3Jl YXRlIHRoZSBmb2xsb3dpbmcgbmV3IG1ldGhvZHMgaW4gUnVieS4NDQoNDQoqIGBQcm9jZXNzLnNw YXduX3ByaXZhdGVgDQ0KKiBgUHJvY2Vzcy5mb3JrX3ByaXZhdGVgDQ0KDQ0KVGhlc2UgbWV0aG9k cyBiZWhhdmUgaWRlbnRpY2FsbHkgdG8gdGhlaXIgbm9uLV9wcml2YXRlIHZlcnNpb25zIGluIGFs bCByZXNwZWN0LCBleGNlcHQgaW5zdGVhZCBvZiByZXR1cm5pbmcgYSBwaWQsIHRoZXkgcmV0dXJu IGFuIG9iamVjdCBvZiB0eXBlIGBQcm9jZXNzOjpQcml2YXRlSGFuZGxlYC4NDQoNDQpgUHJvY2Vz czo6UHJpdmF0ZUhhbmRsZWAgd291bGQgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6DQ0KDQ0K KiBgcGlkKClgIC0gcmV0dXJucyB0aGUgcGlkIGZvciB0aGUgY3JlYXRlZCBwcm9jZXNzDQ0KKiBg d2FpdCgpYCAtIGJsb2NrcyB0aGUgY2FsbGVyIHVudGlsIHRoZSBjcmVhdGVkIHByb2Nlc3MgaGFz IGV4aXRlZCwgYW5kIHJldHVybnMgYSBgUHJvY2Vzczo6U3RhdHVzYCBvYmplY3QuIElmIHRoZSBo YW5kbGUgaGFzIF9hbHJlYWR5XyBoYWQgYCN3YWl0YCBjYWxsZWQgb24gaXQsIGl0IHJldHVybnMg dGhlIHNhbWUgYFByb2Nlc3M6OlN0YXR1c2Agb2JqZWN0IGFzIHdhcyByZXR1cm5lZCB0aGVuIGlt bWVkaWF0ZWx5LiBUaGlzIGlzIHVubGlrZSBgUHJvY2Vzcy53YWl0cGlkYCBhbmQgZnJpZW5kcywg d2hpY2ggd291bGQgcmFpc2UgYW4gRUNISUxEIGluIHRoaXMgY2FzZSAob3IsIGluIHRoZSBmYWNl IG9mIHBpZCB3cmFwYXJvdW5kLCBwb3RlbnRpYWxseSB3YWl0IG9uIHNvbWUgb3RoZXIgdG90YWxs eSB1bnJlbGF0ZWQgY2hpbGQgcHJvY2VzcyB3aXRoIHRoZSBzYW1lIHBpZCkuDQ0KKiBgd2FpdF9u b25ibG9jaygpYCAtIGlmIHRoZSBjcmVhdGVkIHByb2Nlc3MgaGFzIGV4aXRlZCwgYmVoYXZlcyBs aWtlIGAjd2FpdGA7IG90aGVyd2lzZSwgaXQgcmV0dXJucyBhIGBQcm9jZXNzOjpTdGF0dXNgIG9i amVjdCBmb3Igd2hpY2ggYCNleGl0ZWQ/YCByZXR1cm5zIGZhbHNlLg0NCiogYGtpbGwoLi4uKWAg LSBpZiB0aGUgY3JlYXRlZCBwcm9jZXNzIGhhcyBub3QgYmVlbiByZWFwZWQgdmlhIGEgY2FsbCB0 byBgI3dhaXRgLCBwZXJmb3JtcyBpZGVudGljYWxseSB0byBgUHJvY2Vzcy5raWxsIC4uLiwgcGlk YC4gT3RoZXJ3aXNlLCBpZiB0aGUgcHJvY2VzcyBfaGFzXyBiZWVuIHJlYXBlZCwgcmFpc2VzIGBF cnJubzo6RVNSQ0hgIGltbWVkaWF0ZWx5IHdpdGhvdXQgaXNzdWluZyBhIHN5c3RlbSBjYWxsLiBU aGlzIGVuc3VyZXMgdGhhdCwgaWYgcGlkcyB3cmFwIGFyb3VuZCwgdGhhdCB0aGUgd3JvbmcgcHJv Y2VzcyBpcyBub3Qgc2lnbmFsZWQgYnkgbWlzdGFrZS4NDQoNDQpBIGNhbGwgdG8gYFByb2Nlc3Mu d2FpdGAsIGBQcm9jZXNzLndhaXRwaWRgLCBvciBgUHJvY2Vzcy53YWl0cGlkMmAgd2lsbCBfbmV2 ZXJfIHJldHVybiBhIGBQcm9jZXNzOjpTdGF0dXNgIGZvciBhIHByb2Nlc3Mgc3RhcnRlZCB3aXRo IGEgYF9wcml2YXRlYCBtZXRob2QsIGV2ZW4gaWYgdGhhdCBjYWxsIGlzIG1hZGUgd2l0aCB0aGUg cGlkIG9mIHRoZSBjaGlsZCBwcm9jZXNzLiBUaGUgX29ubHlfIHdheSB0byByZWFwIGEgcHJpdmF0 ZSBjaGlsZCBwcm9jZXNzIGlzIHRocm91Z2ggYFByb2Nlc3M6OlByaXZhdGVIYW5kbGVgLg0NCg0N ClRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgSU8ucG9wZW5gLCBgS2VybmVsI3N5c3RlbWAsIGBLZXJu ZWwjcG9wZW5gLCBiYWNrdGlja3MsIGFuZCB0aGUgYE9wZW4zYCBtb2R1bGUgd291bGQgYmUgY2hh bmdlZCB0byB1c2UgdGhpcyBwcml2YXRlIHByb2Nlc3MgbWVjaGFuaXNtIGludGVybmFsbHksIGFs dGhvdWdoIHRoZXkgZG8gbm90IHJldHVybiBwaWRzIHNvIHRoZXkgZG8gbm90IG5lZWQgdG8gaGF2 ZSB0aGVpciBpbnRlcmZhY2VzIGNoYW5nZWQuIChub3RlIHRob3VnaCAtIEkgZG9uJ3QgYmVsaWV2 ZSBgS2VybmVsI3N5c3RlbWAgc3VmZmVycyBmcm9tIHRoZSBzYW1lIHByb2JsZW0gYXMgdGhlIGBv cGVuM2AgZXhhbXBsZSBhYm92ZSwgYmVjYXVzZSBpdCBkb2VzIG5vdCB5aWVsZCB0aGUgR1ZMIG5v ciBjaGVjayBpbnRlcnJ1cHRzIGluIGJldHdlZW4gc3Bhd25pbmcgdGhlIGNoaWxkIGFuZCB3YWl0 aW5nIG9uIGl0KQ0NCg0NCiMjIEltcGxlbWVudGF0aW9uIHN0cmF0ZWd5DQ0KDQ0KSSBiZWxpZXZl IHRoaXMgY2FuIGJlIGltcGxlbWVudGVkLCBpbiBicm9hZCBzdHJva2VzLCB3aXRoIGFuIGFwcHJv YWNoIGxpa2UgdGhpczoNDQoNDQoqIEtlZXAgYSBnbG9iYWwgdGFibGUgbWFwcGluZyBwaWRzIC0+ IGhhbmRsZXMgZm9yIHByb2Nlc3NlcyBjcmVhdGVkIHdpdGggYGZvcmtfcHJpdmF0ZWAgb3IgYHNw YXduX3ByaXZhdGVgLg0NCiogV2hlbiBhIGNoaWxkIHByb2Nlc3MgaXMgd2FpdGVkIG9uLCBjb25z dWx0IHRoZSBoYW5kbGUgdGFibGUuIElmIHRoZXJlIGlzIGEgaGFuZGxlIHJlZ2lzdGVyZWQsIGFu ZCB0aGUgd2FpdCBjYWxsIHdhcyBtYWRlIHdpdGhvdXQgdGhlIGhhbmRsZSwgZG8gTk9UIHJldHVy biB0aGUgcmVhcGVkIHN0YXR1cy4gSW5zdGVhZCwgc2F2ZSB0aGUgc3RhdHVzIGFnYWluc3QgdGhl IGhhbmRsZSwgYW5kIHJlcGVhdCB0aGUgY2FsbCB0byBgd2FpdHBpZGAuDQ0KKiBJZiB0aGUgd2Fp dCBjYWxsIF93YXNfIG1hZGUgd2l0aCB0aGUgaGFuZGxlLCB3ZSBjYW4gcmV0dXJuIHRoZSANDQoq IE9uY2UgYSBoYW5kbGUgaGFzIGhhZCB0aGUgY2hpbGQgc3RhdHVzIHNhdmVkIGFnYWluc3QgaXQs IGl0IGlzIHJlbW92ZWQgZnJvbSB0aGUgdGFibGUuDQ0KKiBBIHN1YnNlcXVlbnQgY2FsbCB0byB3 YWl0IG9uIHRoYXQgcGkgdGhlIGhhbmRsZSB3aWxsIGxvb2sgdXAgdGhlIHNhdmVkIGluZm9ybWF0 aW9uIGFuZCByZXR1cm4gaXQgd2l0aG91dCBtYWtpbmcgYSBzeXN0ZW0gY2FsbC4NDQoNDQpJbiBm YWN0LCBtb3N0IG9mIHRoZSBpbmZyYXN0cnVjdHVyZSB0byBkbyB0aGlzIGNvcnJlY3RseSBpcyBh bHJlYWR5IGluIHBsYWNlIC0gaXQgd2FzIGFkZGVkIGJ5IEBrMGt1YnVuIGFuZCBAbm9ybWFscGVy c29uIGZvdXIgeWVhcnMgYWdvIC0gaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE0 ODY3LiBNSklUIGhhZCBhIHNpbWlsYXIgcHJvYmxlbSB0byB0aGUgb25lIGRlc2NyaWJlZCBpbiB0 aGlzIGlzc3VlOyBpdCBuZWVkcyB0byBmb3JrIGEgQyBjb21waWxlciwgYnV0IGlmIHRoZSBhcHBs aWNhdGlvbiBwZXJmb3JtcyBhIGBQcm9jZXNzLndhaXRwaWQyKC0xKWAsIGl0IGNvdWxkIHdpbmQg dXAgcmVhcGluZyB0aGUgZ2NjIHByb2Nlc3Mgb3V0IGZyb20gdW5kZXJuZWF0aCBtaml0LiBUaGlz IGNvZGUgaGFzIGNoYW5nZWQgY29uc2lkZXJhYmx5IG92ZXIgdGhlIGNvdXJzZSBvZiBsYXN0IHll YXIsIGJ1dCBteSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgbWppdCBzdGlsbCB1c2VzIHRoaXMgaW5m cmFzdHJ1Y3R1cmUgdG8gcHJvdGVjdCBpdHMgUnVieSBjaGlsZC1wcm9jZXNzIGZyb20gYmVjb21p bmcgdmlzaWJsZSB0byBSdWJ5IGNvZGUuDQ0KDQ0KSW4gYW55IGNhc2UsIHRoZSB3YXkgd2FpdHBp ZCB3b3JrcyBfY3VycmVudGx5XywgaXMgdGhhdC4uLg0NCg0NCiogUnVieSBhY3R1YWxseSBkb2Vz IGFsbCBjYWxscyB0byBgd2FpdHBpZGAgYXMgYFdOT0hBTkdgIChpLmUuIG5vbmJsb2NraW5nKSBp bnRlcm5hbGx5Lg0NCiogSWYgYSBjYWxsIHRvIGB3YWl0cGlkYCBmaW5kcyBubyBjaGlsZHJlbiwg aXQgYmxvY2tzIHRoZSB0aHJlYWQsIHJlcHJlc2VudGluZyB0aGUgc3RhdGUgaW4gYSBzdHJ1Y3R1 cmUgb2YgdHlwZSBgc3RydWN0IHdhaXRwaWRfc3RhdGVgLg0NCiogUnVieSBhbHNvIGtlZXBzIGEg bGlzdCBvZiBhbGwgYHdhaXRwaWRfc3RhdGVgJ3MgdGhhdCBhcmUgY3VycmVudGx5IGJlaW5nIHdh aXRlZCBmb3IsIGB2bS0+d2FpdGluZ19waWRzYCBhbmQgYHZtLT53YWl0aW5nX2dycHNgLg0NCiog VGhlc2Ugc3RydWN0dXJlcyBhcmUgcHJvdGVjdGVkIHdpdGggYSBzcGVjaWZpYyBtdXRleCwgYHZt LT53YWl0cGlkX2xvY2tgLg0NCiogUnVieSBpbnRlcm5hbGx5IHVzZXMgdGhlIFNJR0NITEQgc2ln bmFsIHRvIHJlYXAgdGhlIGRlYWQgY2hpbGRyZW4sIGFuZCB0aGVuIGZpbmQgYSB3YWl0aW5nIGNh bGwgdG8gYHdhaXRwaWRgICh2aWEgdGhlIHR3byBsaXN0cykgdG8gYWN0dWFsbHkgZGlzcGF0Y2gg dGhlIHJlYXBlZCBzdGF0dXMgdG8uIA0NCiogSWYgc29tZSBjYWxsZXIgaXMgd2FpdGluZyBmb3Ig YSBzcGVjaWZpYyBwaWQsIHRoYXQgX2Fsd2F5c18gdGFrZXMgcHJpb3JpdHkgb3ZlciBzb21lIG90 aGVyIGNhbGxlciB0aGF0J3Mgd2FpdGluZyBmb3IgYSBwaWQtZ3JvdXAgKGUuZy4gYC0xYCkuDQ0K DQ0KbWppdCdzIGNoaWxkIHByb2Nlc3MgaXMgcHJvdGVjdGVkLCBiZWNhdXNlOg0NCg0NCiogV2hl biBtaml0IGZvcmtzLCBpdCB1c2VzIGEgbWV0aG9kIGByYl9taml0X2ZvcmtgIHRvIGRvIHNvLg0N CiogVGhhdCBjYWxscyB0aGUgYWN0dWFsIGBmb3JrYCBpbXBsZW1lbnRhdGlvbiBfd2hpbHN0IHN0 aWxsIGhvbGRpbmdfIGB2bS0+d2FpdHBpZF9sb2NrYA0NCiogQmVmb3JlIHlpZWxkaW5nIHRoZSBs b2NrLCBpdCBpbnNlcnRzIGFuIGVudHJ5IGluIGB2bS0+d2FpdGluZ19waWRzYCBzYXlpbmcgdGhh dCBtaml0IGlzIHdhaXRpbmcgZm9yIHRoZSBqdXN0LWNyZWF0ZWQgY2hpbGQuDQ0KKiBTaW5jZSBk aXJlY3Qgd2FpdHMgZm9yIHBpZHMgYWx3YXlzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHBpZC1ncm91 cHMsIHRoaXMgZW5zdXJlcyB0aGF0IG1qaXQgd2lsbCBhbHdheXMgcmVhcCBpdHMgb3duIGNoaWxk cmVuLg0NCg0NCkkgYmVsaWV2ZSB0aGlzIG1lY2hhbmlzbSBjYW4gYmUgZXh0ZW5kZWQgYW5kIGdl bmVyYWxpc2VkIHRvIHBvd2VyIHRoZSBwcm9wb3NlZCBBUEksIGFuZCBtaml0IGNvdWxkIGl0c2Vs ZiB1c2UgdGhhdCByYXRoZXIgdGhhbiBoYXZpbmcgbWppdC1zcGVjaWZpYyBoYW5kbGluZyBpbiBg cHJvY2Vzcy5jYC4NDQoNDQojIyBQT0MgaW1wbGVtZW50YXRpb24NDQoNDQpJIHNrZXRjaGVkIG91 dCBhIF92ZXJ5XyByb3VnaCBQT0MgdG8gc2VlIGlmIHdoYXQgSSBzYWlkIGFib3ZlIHdvdWxkIGJl IHBvc3NpYmxlLCBhbmQgSSB0aGluayBpdCBpczoNDQoNDQpodHRwczovL2dpdGh1Yi5jb20vcnVi eS9ydWJ5L2NvbW1pdC82MDA5YzU2NGIxNjg2MjAwMTUzNWYyYjU2MWYxYTEyZjZlN2UwYzU3DQ0K DQ0KVGhlIGZvbGxvd2luZyBzY3JpcHQgYmVoYXZlcyBob3cgSSBleHBlY3Qgd2l0aCB0aGlzIHBh dGNoOg0NCg0NCmBgYHJ1YnkNDQpwaWQsIGggPSBQcm9jZXNzLnNwYXduX3ByaXZhdGUgIi9iaW4v c2giLCAiLWMiLCAic2xlZXAgMTsgZXhpdCA2OSINDQpwdXRzICJwaWQgLT4gI3twaWR9Ig0NCnB1 dHMgImggLT4gI3tofSINDQoNDQojIHNob3VsZCBFU1JDSC4NDQpzbGVlcCAyDQ0KYmVnaW4NDQog ICAgUHJvY2Vzcy53YWl0cGlkMiAtMQ0NCnJlc2N1ZSA9PiBlDQ0KICAgIHB1dHMgIndhaXRwaWQg ZXJyIC0+ICN7ZX0iDQ0KZW5kDQ0Kd3BpZCwgc3RhdHVzID0gaC53YWl0DQ0KcHV0cyAid3BpZCAt PiAje3dwaWR9Ig0NCnB1dHMgInN0YXR1cyAtPiAje3N0YXR1cy5pbnNwZWN0fSINDQpgYGANDQoN DQpgYGANDQprdHNhbmFrdHNpZGlzQGxpbWEtbGludXgxIHJ1YnkgJSAuL3Rvb2wvcnVucnVieS5y YiAtLSAuL3RzdDEucmINDQpwaWQgLT4gMTE1NDEwNQ0NCmggLT4gIzxQcm9jZXNzOjpQcml2YXRl SGFuZGxlOjB4MDAwMGZmZmY5NDAxNDA5OD4NDQp3YWl0cGlkIGVyciAtPiBObyBjaGlsZCBwcm9j ZXNzZXMNDQp3cGlkIC0+IDExNTQxMDUNDQpzdGF0dXMgLT4gIzxQcm9jZXNzOjpTdGF0dXM6IHBp ZCAxMTU0MTA1IGV4aXQgND4NDQpgYGANDQoNDQpUaGUgY2hpbGQgcHJvY2VzcyBjYW4gYmUgd2Fp dGVkIG9uIHdpdGggdGhlIGhhbmRsZSwgYW5kIHRoZSBjYWxsIHRvIGB3YWl0cGlkMigtMSlgIGZp bmRzIG5vdGhpbmcuDQ0KDQ0KIyMgUHJldmlvdXMgaWRlYTogT1Mtc3BlY2lmaWMgaGFuZGxlcw0N Cg0NCk15IGZpcnN0IHZlcnNpb24gb2YgdGhpcyBwcm9wb3NhbCBpbnZvbHZlZCBhIHNpbWlsYXIg QVBJLCBidXQgcG93ZXJpbmcgaXQgd2l0aCBwbGF0Zm9ybS1zcGVjaWZpYyBjb25jZXB0cyBhdmFp bGFibGUgb24gTGludXgsIFdpbmRvd3MsIGFuZCBGcmVlQlNEIHdoaWNoIG9mZmVyIHJpY2hlciBj b250cm9sIHRoYW4ganVzdCBwaWRzICYgdGhlIGB3YWl0YCBzeXNjYWxsLiBJbiBwYXJ0aWN1bGFy LCBJIGhhZCBiZWxpZXZlZCB0aGF0IHdlIGNvdWxkIHVzZSB0aGUgYGNsb25lYCBzeXNjYWxsIGlu IExpbnV4IHRvIGNyZWF0ZSBhIGNoaWxkIHByb2Nlc3Mgd2hpY2g6DQ0KDQ0KKiBDb3VsZCBiZSBy ZWZlcnJlZCB0byBieSBhIHVuaXF1ZSBmaWxlIGRlc2NyaXB0b3IgKGEgcGlkZmQpIHdoaWNoIHdv dWxkIGJlIGd1YXJhbnRlZWQgbmV2ZXIgdG8gYmUgcmUtdXNlZCAodW5saWtlIGEgcGlkKSwNDQoq IFdvdWxkIG5vdCBnZW5lcmF0ZSBhIHNpZ25hbCB3aGVuIGl0IGV4aXRlZCAoaS5lLiBubyBTSUdD SExEKS4NDQoqIENvdWxkIG5vdCBiZSB3YWl0ZWQgb24gYnkgYW4gdW5zcGVjdGluZyB0byBgd2Fp dHBpZGAgKGV4Y2VwdCBpZiBhIHNwZWNpYWwgZmxhZyBgX19XQ0xPTkVgIGFzIHBhc3NlZCkuDQ0K DQ0KVW5mb3J0dW5hdGVseSwgd2hlbiBJIHRyaWVkIHRvIGltcGxlbWVudCB0aGlzLCBJIHJhbiBp bnRvIGEgcHJldHR5IHNlcmlvdXMgc25hZy4gSXQgaXMgcG9zc2libGUgdG8gY3JlYXRlIHN1Y2gg YSBwcm9jZXNzIC0gQlVULCB3aGVuIHRoZSBwcm9jZXNzIGV4ZWMncywgaXQgZ29lcyBfYmFja18g dG8gInJhaXNlLVNJR0NITEQtb24tZXhpdCIgYW5kICJhbGxvdy13YWl0aW5nLXdpdGhvdXQtX19X Q0xPTkUiIG1vZGVzLiBJIGd1ZXNzIHRoaXMgZnVuY3Rpb25hbGl0eSBpbiB0aGUgY2xvbmUgc3lz Y2FsbCBpcyByZWFsbHkgZGVzaWduZWQgdG8gcG93ZXIgdGhyZWFkcyBpbiBMaW51eCwgcmF0aGVy IHRoYW4gYmVpbmcgYSBnZW5lcmFsLXB1cnBvc2UgImhpZGRlbiBwcm9jZXNzIiBBUEkuDQ0KDQ0K U28sIEkgZG9uJ3QgdGhpbmsgd2Ugc2hvdWxkIHVzZSBwaWRmZHMgaW4gdGhpcyBwcm9wb3NhbC4N DQoNDQojIyBNb3RpdmF0aW9uDQ0KDQ0KTXkgdXNlLWNhc2UgZm9yIHRoaXMgaXMgdGhhdCBJ4oCZ bSB3b3JraW5nIG9uIGEgcGVyZi1iYXNlZCBwcm9maWxpbmcgdG9vbCBmb3IgUnVieS4gVG8gZ2V0 IGFyb3VuZCBzb21lIExpbnV4IGNhcGFiaWxpdHkgaXNzdWVzLCBJIHdhbnQgbXkgcHJvZmlsZXIg Z2VtIChvciBDUnVieSBwYXRjaCwgd2hhdGV2ZXIgaXQgd2luZHMgdXAgYmVpbmchKSB0byBmb3Jr IGEgcHJpdmlsZWdlZCBoZWxwZXIgYmluYXJ5IHRvIGRvIHNvbWUgZUJQRiB0d2lkZGxpbmcuIEJ1 dCwgaWYgeW914oCZcmUgcHJvZmlsaW5nIGUuZy4gYSBVbmljb3JuIG1hc3RlciBwcm9jZXNzLCB0 aGUgcmVzdWx0IG9mIHRoYXQgYmluYXJ5IGV4aXRpbmcgbWlnaHQgYmUgY2F1Z2h0IGJ5IFVuaWNv cm4gaXRzZWxmLCByYXRoZXIgdGhhbiBteSAoZ2VtIHwgaW50ZXJwcmV0ZXIgZmVhdHVyZSkuDQ0K DQ0KSW4gbXkgY2FzZSwgSSdtIHNvIGRlZXAgaW4gbGludXggc3BlY2lmaWMgc3R1ZmYgdGhhdCBq dXN0IGNhbGxpbmcgYGNsb25lKDIpYCBmcm9tIG15IGV4dGVuc2lvbiBpcyBwcm9iYWJseSBmaW5l LCBidXQgSSBoYWQgZW5vdWdoIG9mIGEgbG9vayBhdCB0aGlzIHByb2Nlc3MgbWFuYWdlbWVudCBz dHVmZiBJIHRob3VnaHQgaXQgd291bGQgYmUgd29ydGggYXNraW5nIHRoZSBxdWVzdGlvbiBpZiB0 aGlzIG1pZ2h0IGJlIHVzZWZ1bCB0byBvdGhlciwgbW9yZSBub3JtYWwsIGdlbXMuDQ0KDQ0KDQ0K DQ0KDQ0KLS0gDQ0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQ0KIF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIHJ1YnktY29yZSBtYWlsaW5nIGxpc3Qg LS0gcnVieS1jb3JlQG1sLnJ1YnktbGFuZy5vcmcKIFRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1h aWwgdG8gcnVieS1jb3JlLWxlYXZlQG1sLnJ1YnktbGFuZy5vcmcKIHJ1YnktY29yZSBpbmZvIC0t IGh0dHBzOi8vbWwucnVieS1sYW5nLm9yZy9tYWlsbWFuMy9wb3N0b3JpdXMvbGlzdHMvcnVieS1j b3JlLm1sLnJ1YnktbGFuZy5vcmcv