[#111712] [Ruby master Feature#19322] Support spawning "private" child processes — "kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" <ruby-core@...>
SXNzdWUgIzE5MzIyIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGtqdHNhbmFrdHNpZGlzIChLSiBUc2Fu
14 messages
2023/01/07
[ruby-core:111712] [Ruby master Feature#19322] Support spawning "private" child processes
From:
"kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" <ruby-core@...>
Date:
2023-01-07 07:40:37 UTC
List:
ruby-core #111712
SXNzdWUgIzE5MzIyIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGtqdHNhbmFrdHNpZGlzIChLSiBUc2Fu YWt0c2lkaXMpLg0NCg0NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N DQpGZWF0dXJlICMxOTMyMjogU3VwcG9ydCBzcGF3bmluZyAicHJpdmF0ZSIgY2hpbGQgcHJvY2Vz c2VzDQ0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE5MzIyDQ0KDQ0KKiBBdXRo b3I6IGtqdHNhbmFrdHNpZGlzIChLSiBUc2FuYWt0c2lkaXMpDQ0KKiBTdGF0dXM6IE9wZW4NDQoq IFByaW9yaXR5OiBOb3JtYWwNDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQ0KIyMgQmFja2dyb3VuZA0NCg0NClRoZSB0cmFkaXRpb25hbCBVbml4IHByb2Nlc3MgQVBJ cyAoYGZvcmtgIGV0YykgYXJlIHBvb3JseSBpc29sYXRlZC4gSWYgYSBsaWJyYXJ5IHNwYXducyBh IGNoaWxkIHByb2Nlc3MsIHRoaXMgaXMgbm90IHRyYW5zcGFyZW50IHRvIHRoZSBwcm9ncmFtIHVz aW5nIHRoZSBsaWJyYXJ5LiBBbnkgc2lnbmFsIGhhbmRsZXIgZm9yIGBTSUdDSExEYCBpbiB0aGUg cHJvZ3JhbSB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBzcGF3bmVkIHByb2Nlc3MgZXhpdHMsIGFu ZCBldmVuIHdvcnNlLCBpZiB0aGUgcGFyZW50IGNhbGxzIGBQcm9jZXNzLndhaXRwaWQyKC0xKWAs IGl0IHdpbGwgY29uc3VtZSB0aGUgcmV0dXJuZWQgc3RhdHVzIGNvZGUsIHN0ZWFsaW5nIGl0IGZy b20gdGhlIGxpYnJhcnkhDQ0KDQ0KVW5mb3J0dW5hdGVseSwgdGhlIHByYWN0aWNlIG9mIHJlc3Bv bmRpbmcgdG8gYFNJR0NITERgIGJ5IGNhbGxpbmcgYHdhaXRwaWQyKC0xKWAgaW4gYSBsb29wIGlz IGEgcHJldHR5IGNvbW1vbiB1bml4aXNtLiBGb3IgZXhhbXBsZSwgVW5pY29ybiBkb2VzIGl0IFto ZXJlXShodHRwczovL3loYnQubmV0L3VuaWNvcm4uZ2l0L3RyZWUvbGliL3VuaWNvcm4vaHR0cF9z ZXJ2ZXIucmIjbjQwMSkuIEluIHNob3J0LCB0aGVyZSBpcyBubyByZWxpYWJsZSB3YXkgZm9yIGEg Z2VtIHRvIHNwYXduIGEgY2hpbGQgcHJvY2VzcyBpbiBhIHdheSB0aGF0IGNhbuKAmXQgKHVuaW50 ZW50aW9uYWxseSkgYmUgaW50ZXJmZXJlZCB3aXRoIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBwcm9n cmFtLg0NCg0NCiMjIEV4aXN0aW5nIHNvbHV0aW9ucyBpbiBPU+KAmXMNDQoNDQpTZXZlcmFsIG9w ZXJhdGluZyBzeXN0ZW1zIHByb3ZpZGUgYW4gaW1wcm92ZWQgQVBJIGZvciBzcGF3bmluZyBjaGls ZCBwcm9jZXNzZXMgd2hpY2ggYXJlIGZ1bGx5IGlzb2xhdGVkOyB0aGF0IGlzLCB0aGV5IGRvIG5v dCBnZW5lcmF0ZSBgU0lHQ0hMRGAgc2lnbmFscyBpbiB0aGUgcHJvZ3JhbSwgYW5kIGFyZSBpbnZp c2libGUgdG8gY2FsbHMgdG8gYHdhaXRwaWQoMilgDQ0KDQ0KKiBPbiBMaW51eCwgc3VjaCBpbnZp c2libGUgcHJvY2Vzc2VzIGNhbiBiZSBtYWRlIGJ5IGNhbGxpbmcgYGNsb25lKDIpYCB3aXRoIGEg emVybyB2YWx1ZSBpbiB0aGUgbG93IGJ5dGUgb2YgYGZsYWdzYC4gSWYgdGhlIENMT05FX1BJREZE IGZsYWcgaXMgYWxzbyBwcm92aWRlZCwgdGhlbiBhIGZpbGUgZGVzY3JpcHRvciByZXByZXNlbnRp bmcgdGhlIHByb2Nlc3MgaXMgYWxzbyByZXR1cm5lZDsgdGhpcyBjYW4gYmUgdXNlZCB0byB3YWl0 IGZvciBhbmQgc2lnbmFsIHRoZSBwcm9jZXNzIGluIGEgcmFjZS1mcmVlIHdheS4NDQoqIE9uIEZy ZWVCU0QsIHRoZSBgcGRmb3JrKDIpYCBzeXNjYWxsIG1ha2VzIGEgcHJvY2VzcyB0aGF0IGRvZXMg bm90IHNpZ25hbCBTSUdDSExEIGFuZCBpcyBpZ25vcmVkIGJ5IGB3YWl0cGlkKDIpYCBjYWxscyB0 aGF0IGRvIG5vdCBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIHBpZCAoaS5lLiBpdCBpcyBpZ25vcmVk IHdoZW4gLTEgaXMgcGFzc2VkKS4gSXQgYWxzbyByZXR1cm5zIGEgZmlsZSBkZXNjcmlwdG9yIHJl cHJlc2VudGluZyB0aGUgcHJvY2Vzcy4NDQoNDQpCb3RoIG9mIHRoZXNlIEFQSXMgY2VudGVyIGFy b3VuZCB0aGUgaWRlYSBvZiBhIHByb2Nlc3MgZmlsZSBkZXNjcmlwdG9yLiBSYXRoZXIgdGhhbiBt YW5hZ2luZyBhIGNoaWxkIHByb2Nlc3MgdXNpbmcgdGhlIG9sZCBwcm9jZXNzLWdsb2JhbCB3YWl0 L3NpZ25hbCBtZWNoYW5pc21zLCB0aGV5IHJldHVybiBhIGZpbGUgZGVzY3JpcHRvciByZXByZXNl bnRpbmcgdGhlIHByb2Nlc3MuIFN1Y2ggYSBmaWxlIGRlc2NyaXB0b3IgY2FuIHVuaXF1ZWx5IGlk ZW50aWZ5IHRoZSBzcGF3bmVkIHByb2Nlc3MsIGJlIHVzZWQgdG8gd2FpdCBvbiB0aGUgcHJvY2Vz cyBhbmQgZ2V0IHRoZSBzdGF0dXMsIHNlbmQgc2lnbmFscywgYW5kIGV2ZW4gcGFydGljaXBhdGUg aW4gYHBvbGwoMilgLiBUaGV5IGFsc28gcHJvdGVjdCBhZ2FpbnN0IHBpZC1yZXVzZSByYWNlIGNv bmRpdGlvbnM7IGFmdGVyIGEgcHJvY2VzcyBoYXMgdGVybWluYXRlZCBhbmQgYmVlbiByZWFwZWQs IHRoZSBwaWRmZCBiZWNvbWVzIGludmFsaWQsIGFuZCBjYW7igJl0IHJhbmRvbWx5IGJlZ2luIHRv IHJlZmVyIHRvIGEgZGlmZmVyZW50IHByb2Nlc3MuDQ0KDQ0KIyMgUHJvcG9zZWQgUnVieSBBUElz DQ0KDQ0KSSB0aGluayB3ZSBzaG91bGQgbWFrZSBhIG5ldyBBUEkgYFByb2Nlc3Muc3Bhd25faGFu ZGxlYCwgd2hpY2ggYWNjZXB0cyBhbGwgdGhlIHNhbWUgcGFyYW1ldGVycyBhcyBgUHJvY2Vzcy5z cGF3bmAuIEhvd2V2ZXIsIGl0IGRvZXMgX25vdF8gcmV0dXJuIGEgcGlkIGxpa2UgYFByb2Nlc3Mu c3Bhd25gLCBidXQgcmF0aGVyIGEgbmV3IHR5cGUgYFByb2Nlc3M6OkhhbmRsZWAuDQ0KDQ0KYFBy b2Nlc3M6OkhhbmRsZWAgd291bGQgaWRlbnRpZnkgYSBzaW5nbGUgc3Bhd25lZCBwcm9jZXNzLCB1 c2luZyBhIGR1cmFibGUgT1Mtc3VwcGxpZWQgaGFuZGxlIG5vdCBzdWJqZWN0IHRvIHJlLXVzZSBy aXNrcyAoZS5nLiBhIHBpZGZkKS4gSXQgd291bGQgcHJvdmlkZSB0aGUgZm9sbG93aW5nIG1ldGhv ZHM6DQ0KDQ0KKiBgI3BpZGAgLSBnZXQgdGhlIHBpZCB0aGF0IHRoZSBoYW5kbGUgaXMgZm9yLg0N CiogYCNzZW5kX3NpZ25hbChzaWduYWwpYCAtIHNlbmQgYSBzaWduYWwgdG8gdGhlIHdyYXBwZWQg cHJvY2VzcyAod2hlcmUgInNpZ25hbCIgaXMgYSBzeW1ib2wsIHN0cmluZywgb3IgbnVtYmVyIHdp dGggdGhlIHNhbWUgbWVhbmluZyBhcyBpbiBgUHJvY2Vzcy5raWxsYC4NDQoqIGAjd2FpdGAgLSBi bG9ja3Mgd2FpdGluZyBmb3IgdGhlIHByb2dyYW0gdG8gZXhpdCwgYW5kIHRoZW4gcmV0dXJucyBh IGBQcm9jZXNzOjpTdGF0dXNgIG9iamVjdCByZXByZXNlbnRpbmcgZS5nLiB0aGUgZXhpdCBjb2Rl LiBMaWtlIGNhbGxpbmcgYHdhaXRwaWRgLg0NCiogYCN3YWl0X25vbmJsb2NrYCAtIFJldHVybnMg YSBgUHJvY2Vzczo6U3RhdHVzYCBvYmplY3QgZm9yIHRoZSBjaGlsZCBwcm9jZXNzLiBJZiB0aGUg Y2hpbGQgaGFzIG5vdCBleGl0ZWQsIGl0IHdpbGwgYmUgYSBzdGF0dXMgb2JqZWN0IGZvciB3aGlj aCBgI2V4aXRlZD9gIGlzIGZhbHNlLiBEb2VzIG5vdCBibG9jay4gTGlrZSBjYWxsaW5nIGB3YWl0 cGlkKFdOT0hBTkcpYC4NDQoNDQpGaW5hbGx5LCB0aGUgYE9wZW4zYCBmYW1pbHkgb2YgbWV0aG9k cyB3b3VsZCBiZSBleHRlbmRlZCB0byBhY2NlcHQgYGhhbmRsZTpgIGFzIGFuIGFkZGl0aW9uYWwg a2V5d29yZCBhcmd1bWVudC4gV2hlbiBzZXQgdG8gdHJ1ZSwgYFByb2Nlc3Muc3Bhd25faGFuZGxl YCB3aWxsIGJlIHVzZWQgdG8gc3RhcnQgdGhlIGNoaWxkLCBhbmQgYFByb2Nlc3M6OkhhbmRsZWAg b2JqZWN0cyB3aWxsIGJlIHJldHVybmVkIGluIHBsYWNlIG9mIHBpZHMuDQ0KDQ0KTW9kaWZ5aW5n IGJhY2t0aWNrcywgYEtlcm5lbCNzeXN0ZW1gIGFuZCBvdGhlciBwcm9jZXNzLWNyZWF0aW5nIG1l dGhvZHMgd2hpY2ggZG9uJ3QgcmV0dXJuIHBpZHMgdG8gdXNlIGBzcGF3bl9oYW5kbGVgIGludGVy bmFsbHkgd291bGQgYWxzbyBiZSBwb3NzaWJsZSwgYnV0IG91dCBvZiBzY29wZSBmb3IgYW4gaW5p dGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHRpY2tldC4NDQoNDQojIyBPUyBjb21wYXRpYmls aXR5DQ0KDQ0KRm9yIHRoaXMgQVBJIHRvIGJlIHVzZWZ1bCB0byBnZW0gYXV0aG9ycywgaXQgaGFz IHRvIGJlIHdpZGVseSBhdmFpbGFibGUgb24gdGhlIHN5c3RlbXMgdGhhdCB0aGV5IGFuZCB0aGVp ciB1c2VycyBjYXJlIGFib3V0LiBBcyBkaXNjdXNzZWQsIHRoZSBgY2xvbmUoMilgIHN5c2NhbGwg YW5kIGBDTE9ORV9QSURGRGAgZmxhZyBjYW4gYmUgdXNlZCBvbiBMaW51eCA1LjIrIHRvIGltcGxl bWVudCBgUHJvY2Vzczo6SGFuZGxlYC4gRnJlZUJTRCBoYXMgYHBkZm9yaygyKWAgc2luY2Ugdjku DQ0KDQ0KSSBoYXZlbuKAmXQgaW52ZXN0aWdhdGVkIFdpbmRvd3MgX2RlZXBseV8sIGJ1dCBJIHRo aW5rIFdpbmRvd3MgZG9lc27igJl0IHJlYWxseSBoYXZlIHRoZSBub3Rpb24gb2YgcHJvY2Vzcy1n bG9iYWwgYHdhaXRwaWRgIG9yIGBTSUdDSExEYCBhbnl3YXkuIFRoZSBgQ3JlYXRlUHJvY2Vzc2Ag ZnVuY3Rpb24gcmV0dXJucyBhIGBQUk9DRVNTX0lORk9STUFUSU9OYCBzdHJ1Y3QsIHdoaWNoIHJl dHVybnMgYSBgSEFORExFYCBmb3IgdGhlIGNoaWxkIHByb2Nlc3MsIHdoaWNoIHNlZW1zIGFuYWxv Z291cyB0byBhIHByb2Nlc3MgRkQuDQ0KDQ0KSG93ZXZlciB0aGlzIGRvZXMgbGVhdmUgYSBsYXJn ZSBjaHVuayBvZiBvcGVyYXRpbmcgc3lzdGVtcyB3aGljaCBkb27igJl0IGhhdmUgdGhpcyBmdW5j dGlvbmFsaXR5IGJ1aWx0LWluLiBPZmYgdGhlIHRvcCBvZiBteSBoZWFkOg0NCg0NCiogTWFjT1Ms IE5ldEJTRCwgYW5kIE9wZW5CU0QgaGF2ZSBub3RoaW5nLiBJIHN0YXJlZCBwcmV0dHkgaGFyZCBh dCB0aGUgRGFyd2luIFhOVSBzb3VyY2UgYW5kIGNvdWxkbuKAmXQgZmluZCBhIHJhY2UtZnJlZSB3 YXkgdG8gY29udmluY2UgaXQgbm90IHRvIGRpc3BhdGNoIGBTSUdDSExEYCBmb3IgYSBwYXJ0aWN1 bGFyIHByb2Nlc3Mgb3Igc3RvcCBpdCBmcm9tIGJlaW5nIHJlYXBlZCBieSBwcm9jZXNzLXdpZGUg YHdhaXQ0YCBjYWxscy4NDQoqIExpbnV4IDwgNS4yIGlzIGluIHNvbWUgcHJvYmFibHktcHJldHR5 LXdpZGVseS1kZXBsb3llZC1zdGlsbCBkaXN0cm9zIC0gaXTigJlzIHRoZSByZWxlYXNlIGtlcm5l bCBpbiBVYnVudHUgMTguMDQgZm9yIGV4YW1wbGUuDQ0KDQ0KSSBoYXZlIHR3byBpZGVhcyBmb3Ig aG93IHRoZSBzZW1hbnRpY3Mgb2YgYFByb2Nlc3M6OkhhbmRsZWAgY291bGQgYmUgZW11bGF0ZWQg b24gc3VjaCBzeXN0ZW1zLiBIb3dldmVyIEkgcmVjb2duaXNlIHRoYXQgdGhleSBhcmVu4oCZdCBh bWF6aW5nIHNvIGlmIGFueWJvZHkgaGFzIHNvbWUgYmV0dGVyIGlkZWFzIEkgd291bGQgZGVhcmx5 IGxvdmUgdG8gaGVhciB0aGVtLg0NCg0NCiMjIyBMb25nLWxpdmVkIHByb3h5DQ0KDQ0KVGhlIGZp cnN0IHRpbWUgYFByb2Nlc3Muc3Bhd25faGFuZGxlYCBpcyB1c2VkLCB3ZSB3b3VsZCBmb3JrL2V4 ZWMgYSBsb25nLWxpdmVkIOKAnGZvcmstaGVscGVy4oCdIHByb2dyYW0uIFRoaXMgY291bGQgYmUg YSBzZXBhcmF0ZSBoZWxwZXIgYmluYXJ5IHdlIGNvbXBpbGUgd2l0aCB0aGUgYnVpbGQgc3lzdGVt LCBvciBwZXJoYXBzIGp1c3QgYSByZS1pbnZvY2F0aW9uIG9mIHRoZSBydWJ5IGludGVycHJldGVy IHdpdGggc29tZXRoaW5nIGxpa2UgYHJ1YnkgLWUg4oCcUHJvY2Vzcy5fZm9ya19oZWxwZXLigJ1g LiBUaGVyZSB3b3VsZCBiZSBhIHVuaXggc29ja2V0cGFpciBzaGFyZWQgYmV0d2VlbiB0aGUgcGFy ZW50IHByb2Nlc3MgJiB0aGUgaGVscGVyLg0NCg0NCkluc3RlYWQgb2YgYWN0dWFsbHkgZm9ya2lu ZyB3aGVuIHdl4oCZcmUgY2FsbGluZyBgUHJvY2Vzcy5zcGF3bl9oYW5kbGVgLCB3ZSB3b3VsZCBp bnN0ZWFkIHNlbmQgYSBtZXNzYWdlIG9uIHRoaXMgc29ja2V0IGFza2luZyB0aGUgaGVscGVyIHRv LCBfaXRzZWxmXywgZm9yayAmIGV4ZWMgdGhlIHNwZWNpZmllZCBwcm9ncmFtLiBBbnkgZmlsZSBk ZXNjcmlwdG9ycyBldGMgbmVlZGVkIGluIHRoZSBjaGlsZCBjb3VsZCBhbHNvIGJlIHNlbnQgb3Zl ciB0aGlzIHNvY2tldC4gQWxsIG9mIHRoZSBgUHJvY2Vzczo6SGFuZGxlYCBtZXRob2RzIHdvdWxk IGJlIHByb3hpZXMgd2hpY2ggY2FsbGVkIHRocm91Z2ggdG8gdGhlIGhlbHBlciBiaW5hcnkuDQ0K DQ0KVGhpcyB3YXksIHRoZSBydWJ5IHByb2Nlc3MgaXMgbmV2ZXIgYWN0dWFsbHkgdGhlIHBhcmVu dCBvZiB0aGUgc3Bhd25lZCBjaGlsZCwgc28gd2Ugd291bGQgbmV2ZXIgZ2V0IGFueSBTSUdDSExE IGV0YyBmcm9tIGl0LiBUaGUgZm9yay1oZWxwZXIgcHJvZ3JhbSBtaWdodCBnZW5lcmF0ZSBhIFNJ R0NITEQsIGJ1dCBpdCBzaG91bGQgcGVyc2lzdCB1bnRpbCB0aGUgcnVieSBwcm9jZXNzIGV4aXRz OyB3ZSB3b3VsZCBvbmx5IGdlbmVyYXRlIGEgU0lHQ0hMRCBzaWduYWwgaWYgaXQgY3Jhc2hlZCBh Ym5vcm1hbGx5Lg0NCg0NCiMjIyBGb3J3YXJkIG1pc2RpcmVjdGVkIHdhaXRzDQ0KDQ0KV2l0aCB0 aGlzIGFwcHJvYWNoLCBgUHJvY2Vzcy5zcGF3bl9oYW5kbGVgIHdvdWxkIGp1c3QgYGZvcmsoMilg L2BleGVjKDIpYCBvciBgcG9zaXhfc3Bhd24oMilgIHByb2Nlc3NlcyBsaWtlIG5vcm1hbC4gV2Ug d291bGQgaG93ZXZlciBrZWVwIGEgdGFibGUgb2YgcGlkcyAtPiBgUHJvY2Vzczo6SGFuZGxlYCBp bnN0YW5jZXMuDQ0KDQ0KV2hlbiBSdWJ54oCZcyBDLWxldmVsIFNJR0NITEQgaGFuZGxlciBpcyBp bnZva2VkLCB3ZSB3b3VsZCBpbnNwZWN0IHRoYXQgdGFibGUgYW5kIHNlZSBpZiB0aGUgcGlkIGhh cyBhbiBhc3NvY2lhdGVkIGBQcm9jZXNzOjpIYW5kbGVgLiBJZiBzbywgd2Ugd291bGQgc2tpcCBj YWxsaW5nIGFueSByZWdpc3RlcmVkIFJ1YnkgU0lHQ0hMRCBoYW5kbGVyOyBpbnN0ZWFkLCB3ZSB3 b3VsZCBjYWxsIGB3YWl0cGlkYCBvdXJzZWx2ZXMsIHVwZGF0ZSB0aGUgc3RhdHVzIGluZm8gb24g dGhlIGhhbmRsZSBvYmplY3QsIGFuZCB1bmJsb2NrIGFueWJvZHkgd2FpdGluZyBvbiBgUHJvY2Vz czo6SGFuZGxlI3dhaXRgLg0NCg0NCkxpa2V3aXNlLCBpbiB0aGUgQy1zaWRlIGltcGxlbWVudGF0 aW9uIG9mIGBQcm9jZXNzLndhaXRwaWQyYCBldGMsIHdlIHdvdWxkIGNoZWNrIHRoZSByZXR1cm5l ZCBwaWQgZnJvbSB0aGUgc3lzY2FsbCBhZ2FpbnN0IHRoZSBoYW5kbGUgdGFibGUuIElmIGl0IG1h dGNoZWQsIHdlIHdvdWxkIHBlcmZvcm0gdGhlIHNhbWUgd29yayBhcyBpbiB0aGUgU0lHQ0hMRCBj YXNlLCBhbmQgdGhlbiByZS1zdGFydCB0aGUgb3JpZ2luYWwgY2FsbCB0byBgUHJvY2Vzcy53YWl0 cGlkMmAuDQ0KDQ0KVGhpcyBhcHByb2FjaCBrZWVwcyB0aGUgcHJvY2VzcyB0cmVlIGNvcnJlY3Qg YW5kIGludm9sdmVzIGxlc3Mgc2lsbHkgcHJveHlpbmcsIGJ1dCBpdCB3b27igJl0IGhpZGUgdGhl IHByb2Nlc3MgZnJvbSBhbnkgY2FsbGVycyB0byB0aGUgcmF3IGB3YWl0cGlkYCBsaWJyYXJ5IGZ1 bmN0aW9ucyBpbiBDIGV4dGVuc2lvbnMuIERvaW5nIHRoYXQgc2VlbXMgbGlrZSBhIHNpbGx5IGlk ZWEgYW55d2F5IHRob3VnaCwgc28gbWF5YmUgdGhhdOKAmXMgT0s/DQ0KDQ0KIyMgTW90aXZhdGlv bg0NCg0NCk15IHVzZS1jYXNlIGZvciB0aGlzIGlzIHRoYXQgSeKAmW0gd29ya2luZyBvbiBhIHBl cmYtYmFzZWQgcHJvZmlsaW5nIHRvb2wgZm9yIFJ1YnkuIFRvIGdldCBhcm91bmQgc29tZSBMaW51 eCBjYXBhYmlsaXR5IGlzc3VlcywgSSB3YW50IG15IHByb2ZpbGVyIGdlbSAob3IgQ1J1YnkgcGF0 Y2gsIHdoYXRldmVyIGl0IHdpbmRzIHVwIGJlaW5nISkgdG8gZm9yayBhIHByaXZpbGVnZWQgaGVs cGVyIGJpbmFyeSB0byBkbyBzb21lIGVCUEYgdHdpZGRsaW5nLiBCdXQsIGlmIHlvdeKAmXJlIHBy b2ZpbGluZyBlLmcuIGEgVW5pY29ybiBtYXN0ZXIgcHJvY2VzcywgdGhlIHJlc3VsdCBvZiB0aGF0 IGJpbmFyeSBleGl0aW5nIG1pZ2h0IGJlIGNhdWdodCBieSBVbmljb3JuIGl0c2VsZiwgcmF0aGVy IHRoYW4gbXkgKGdlbSB8IGludGVycHJldGVyIGZlYXR1cmUpLg0NCg0NCkluIG15IGNhc2UsIEkn bSBzbyBkZWVwIGluIGxpbnV4IHNwZWNpZmljIHN0dWZmIHRoYXQganVzdCBjYWxsaW5nIGBjbG9u ZSgyKWAgZnJvbSBteSBleHRlbnNpb24gaXMgcHJvYmFibHkgZmluZSwgYnV0IEkgaGFkIGVub3Vn aCBvZiBhIGxvb2sgYXQgdGhpcyBwcm9jZXNzIG1hbmFnZW1lbnQgc3R1ZmYgSSB0aG91Z2h0IGl0 IHdvdWxkIGJlIHdvcnRoIGFza2luZyB0aGUgcXVlc3Rpb24gaWYgdGhpcyBtaWdodCBiZSB1c2Vm dWwgdG8gb3RoZXIsIG1vcmUgbm9ybWFsLCBnZW1zLg0NCg0NCg0NCg0NCg0NCi0tIA0NCmh0dHBz Oi8vYnVncy5ydWJ5LWxhbmcub3JnLw0NCiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5y dWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1s ZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1Ynkt bGFuZy5vcmcvbWFpbG1hbjMvcG9zdG9yaXVzL2xpc3RzL3J1YnktY29yZS5tbC5ydWJ5LWxhbmcu b3JnLw==