[#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:111778] [Ruby master Feature#19322] Support spawning "private" child processes
From:
"kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" <ruby-core@...>
Date:
2023-01-11 08:01:11 UTC
List:
ruby-core #111778
SXNzdWUgIzE5MzIyIGhhcyBiZWVuIHVwZGF0ZWQgYnkga2p0c2FuYWt0c2lkaXMgKEtKIFRzYW5h a3RzaWRpcykuDQ0KDQ0KDQ0KU28gSSByYW4gaW50byBhIHByZXR0eSBzZXJpb3VzIHNuYWcgd2hl biB0cnlpbmcgdG8gaW1wbGVtZW50IG15IGlkZWEgd2l0aCBMaW51eCBwaWRmZHMgLSB5b3UgY2Fu IG1ha2UgYSBoaWRkZW4gcHJvY2VzcyB3aGljaCBpcyB1bndhaXRhYmxlICYgZG9lc24ndCByYWlz ZSBTSUdDSExELCBidXQgaWYgdGhhdCBwcm9jZXNzIGV4ZWMncywgdGhvc2Ugc3BlY2lhbCBwcm9w ZXJ0aWVzIGdvIGF3YXkgYW5kIGl0IGdvZXMgYmFjayB0byBiZWhhdmluZyBqdXN0IGxpa2UgYSBu b3JtYWwgY2hpbGQgcHJvY2Vzcy4NDQoNDQpUaGF0IGxlZCBtZSB0byBsb29rIG1vcmUgY2FyZWZ1 bGx5IGF0IFJ1YnkncyBjdXJyZW50IGhhbmRsaW5nIG9mIFNJR0NITEQvd2FpdHBpZCwgYW5kIEkg dGhpbmsgdGhlcmUncyByb29tIGluIHRoZXJlIHRvIGltcGxlbWVudCB0aGUgQVBJIEkgcHJvcG9z ZWQgd2l0aG91dCBsZWFuaW5nIG9uIGFueSBuZXcgc3lzdGVtIEFQSSdzIGJleW9uZCBTSUdDSExE ICYgd2FpdHBpZC4gUGx1cywgbXkgcHJvcG9zYWwgd291bGQgY2xlYW4gdXAgYSBiaXQgb2Ygc3Bl Y2lhbC1jYXNpbmcgZm9yIG1qaXQgd2hpY2ggaXMgY3VycmVudGx5IGZsb2F0aW5nIGFyb3VuZCBp bnNpZGUgYHByb2Nlc3MuY2AuDQ0KDQ0KV0RZVCBAbm9idT8NDQoNDQotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0KRmVhdHVyZSAjMTkzMjI6IFN1cHBvcnQgc3Bhd25p bmcgInByaXZhdGUiIGNoaWxkIHByb2Nlc3Nlcw0NCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3Jn L2lzc3Vlcy8xOTMyMiNjaGFuZ2UtMTAxMTkyDQ0KDQ0KKiBBdXRob3I6IGtqdHNhbmFrdHNpZGlz IChLSiBUc2FuYWt0c2lkaXMpDQ0KKiBTdGF0dXM6IE9wZW4NDQoqIFByaW9yaXR5OiBOb3JtYWwN DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0KIyMgQmFja2dyb3Vu ZA0NCg0NClRoZSB0cmFkaXRpb25hbCBVbml4IHByb2Nlc3MgQVBJcyAoYGZvcmtgIGV0YykgYXJl IHBvb3JseSBpc29sYXRlZC4gSWYgYSBsaWJyYXJ5IHNwYXducyBhIGNoaWxkIHByb2Nlc3MsIHRo aXMgaXMgbm90IHRyYW5zcGFyZW50IHRvIHRoZSBwcm9ncmFtIHVzaW5nIHRoZSBsaWJyYXJ5LiBB bnkgc2lnbmFsIGhhbmRsZXIgZm9yIGBTSUdDSExEYCBpbiB0aGUgcHJvZ3JhbSB3aWxsIGJlIGNh bGxlZCB3aGVuIHRoZSBzcGF3bmVkIHByb2Nlc3MgZXhpdHMsIGFuZCBldmVuIHdvcnNlLCBpZiB0 aGUgcGFyZW50IGNhbGxzIGBQcm9jZXNzLndhaXRwaWQyKC0xKWAsIGl0IHdpbGwgY29uc3VtZSB0 aGUgcmV0dXJuZWQgc3RhdHVzIGNvZGUsIHN0ZWFsaW5nIGl0IGZyb20gdGhlIGxpYnJhcnkhDQ0K DQ0KVW5mb3J0dW5hdGVseSwgdGhlIHByYWN0aWNlIG9mIHJlc3BvbmRpbmcgdG8gYFNJR0NITERg IGJ5IGNhbGxpbmcgYHdhaXRwaWQyKC0xKWAgaW4gYSBsb29wIGlzIGEgcHJldHR5IGNvbW1vbiB1 bml4aXNtLiBGb3IgZXhhbXBsZSwgVW5pY29ybiBkb2VzIGl0IFtoZXJlXShodHRwczovL3loYnQu bmV0L3VuaWNvcm4uZ2l0L3RyZWUvbGliL3VuaWNvcm4vaHR0cF9zZXJ2ZXIucmIjbjQwMSkuIElu IHNob3J0LCB0aGVyZSBpcyBubyByZWxpYWJsZSB3YXkgZm9yIGEgZ2VtIHRvIHNwYXduIGEgY2hp bGQgcHJvY2VzcyBpbiBhIHdheSB0aGF0IGNhbuKAmXQgKHVuaW50ZW50aW9uYWxseSkgYmUgaW50 ZXJmZXJlZCB3aXRoIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBwcm9ncmFtLg0NCg0NCiMjIFByb2Js ZW0gc3RhdGVtZW50DQ0KDQ0KQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBwcm9ncmFtLg0NCg0NCmBg YHJ1YnkNDQojIEltYWdpbmUgdGhpcyBwYXJ0IG9mIHRoZSBwcm9ncmFtIGlzIGluIHNvbWUgdG9w LWxldmVsIGFwcGxpY2F0aW9uIGV2ZW50IGxvb3ANDQojIG9yIHNvbWV0aGluZyAtIHNpbWlsYXIg dG8gaG93IFVuaWNvcm4gd29ya3MuIEl0IGRldGVjdHMgY2hpbGQgcHJvY2Vzc2VzIGV4aXRpbmcN DQojIGFuZCB0YWtlcyBzb21lIGFjdGlvbiAocG9zc2libHkgcmVzdGFydGluZyBhIGNyYXNoZWQg d29ya2VyLCBmb3IgZXhhbXBsZSkuDQ0KU2lnbmFsLnRyYXAoOkNITEQpIGRvDQ0KICBsb29wIGRv DQ0KICAgIGJlZ2luDQ0KICAgICAgcGlkLCBzdGF0dXMgPSBQcm9jZXNzLndhaXRwaWQyIC0xDQ0K ICAgICAgcHV0cyAiU2lnbmFsIGhhbmRsZXIgcmVhcGVkICN7cGlkfSAje3N0YXR1cy5pbnNwZWN0 fSINDQogICAgcmVzY3VlIEVycm5vOjpFQ0hJTEQNDQogICAgICBwdXRzICJTaWduYWwgaGFuZGxl ciByZWFwZWQgbm90aGluZyINDQogICAgICBicmVhaw0NCiAgICBlbmQNDQogIGVuZA0NCmVuZA0N Cg0NCiMgSW1hZ2luZSB0aGF0IF90aGlzXyBwYXJ0IG9mIHRoZSBwcm9ncmFtIGlzIGJ1cmllZCBk ZWVwIGluIHNvbWUgZ2VtLiBJdCBrbm93cw0NCiMgbm90aGluZyBhYm91dCB0aGUgYXBwbGljYXRp b24gU0lHQ0hMRCBoYW5kbGluZywgYW5kIHF1aXRlIHBvc3NpYmx5IHRoZSBhcHBsaWNhdGlvbg0N CiMgYXV0aG9yIG1pZ2h0IG5vdCBldmVuIGtub3cgdGhpcyBnZW0gc3Bhd25zIGEgY2hpbGQgcHJv Y2VzcyB0byBkbyBpdHMgd29yayENDQpyZXF1aXJlICdvcGVuMycNDQpsb29wIGRvDQ0KICBvLCBz dGF0dXMgPSBPcGVuMy5jYXB0dXJlMigiL2Jpbi9zaCIsICItYyIsICJlY2hvICdoZWxsbyciKQ0N CiAgcHV0cyAicmFuIGNvbW1hbmQsIGdvdCAje28uY2hvbXB9ICN7c3RhdHVzLmluc3BlY3R9Ig0N CmVuZA0NCmBgYA0NCg0NCkluIGN1cnJlbnQgdmVyc2lvbnMgb2YgUnVieSwgX3NvbWVfIGxvb3Ag aXRlcmF0aW9ucyB3aWxsIGZ1bmN0aW9uIGNvcnJlY3RseSwgYW5kIHByaW50IHNvbWV0aGluZyBs aWtlIHRoaXMuIFRoZSBnZW0gZ2V0cyB0aGUgYFByb2Nlc3M6OlN0YXR1c2Agb2JqZWN0IGZyb20g aXRzIGNvbW1hbmQgYW5kIGNhbiBrbm93IGlmIGUuZy4gaXQgZXhpdGVkIGFibm9ybWFsbHkuDQ0K DQ0KYGBgDQ0KcmFuIGNvbW1hbmQsIGdvdCBvaGFpdGhhciAjPFByb2Nlc3M6OlN0YXR1czogcGlk IDExNTM2ODcgZXhpdCAwPg0NClNpZ25hbCBoYW5kbGVyIHJlYXBlZCBub3RoaW5nDQ0KYGBgDQ0K DQ0KSG93ZXZlciwgb3RoZXIgaXRlcmF0aW9ucyBvZiB0aGUgbG9vcCBwcmludCB0aGlzLiBUaGUg c2lnbmFsIGhhbmRsZXIgcnVucyBhbmQgY2FsbHMgYFByb2Nlc3Mud2FpdHBpZDIoLTEpYCBiZWZv cmUgdGhlIGNvZGUgaW4gb3BlbjMgY2FuIGRvIHNvLiBUaGVuLCB0aGUgZ2VtIGNvZGUgZG9lcyBu b3QgZ2V0IGEgYFByb2Nlc3M6OlN0YXR1c2Agb2JqZWN0ISBUaGlzIGlzIGFsc28gcG90ZW50aWFs bHkgYmFkIGZvciB0aGUgYXBwbGljYXRpb247IGl0IHJlYXBlZCBhIGNoaWxkIHByb2Nlc3MgaXQg ZGlkbid0IGV2ZW4ga25vdyBleGlzdGVkLCBhbmQgaXQgbWlnaHQgY2F1c2Ugc29tZSBzdXJwcmlz aW5nIGJ1Z3MgaWYgdGhlIGFwcGxpY2F0aW9uIGF1dGhvciBkaWRuJ3Qga25vdyB0aGlzIHdhcyBh IHBvc3NpYmlsaXR5Lg0NCg0NCmBgYA0NClNpZ25hbCBoYW5kbGVyIHJlYXBlZCAxMTUzNTk2ICM8 UHJvY2Vzczo6U3RhdHVzOiBwaWQgMTE1MzU5NiBleGl0IDA+DQ0KU2lnbmFsIGhhbmRsZXIgcmVh cGVkIG5vdGhpbmcNDQpyYW4gY29tbWFuZCwgZ290IG9oYWl0aGFyIG5pbA0NCmBgYA0NCg0NCldl IHdvdWxkIGxpa2UgYSBmYW1pbHkgb2YgQVBJcyB3aGljaCBhbGxvdyBhIGdlbSB0byBzcGF3biBh IGNoaWxkIHByb2Nlc3MgYW5kIGd1YXJhbnRlZXMgdGhhdCB0aGUgZ2VtIGNhbiB3YWl0IG9uIGl0 LiBTb21lIGNvbmN1cnJlbnQgY2FsbCB0byBgUHJvY2Vzcy53YWl0cGlkMigtMSlgIChvciBldmVu IGBQcm9jZXNzLndhaXRwaWQyKCRzb21lX2x1Y2t5X2d1ZXNzX2Zvcl90aGVfcGlkKWApIHNob3Vs ZCBub3Qgc3RlYWwgdGhlIHN0YXR1cyBvdXQgZnJvbSB1bmRlcm5lYXRoIHRoZSBjb2RlIHdoaWNo IGNyZWF0ZWQgdGhlIHByb2Nlc3MuIElkZWFsbHksIHdlIHNob3VsZCBldmVuIHN1cHByZXNzIHRo ZSBgU0lHQ0hMRGAgc2lnbmFsIHRvIGF2b2lkIHRoZSBhcHBsaWNhdGlvbiBzaWduYWwgaGFuZGxl ciBuZWVkbGVzc2x5IHdha2luZyB1cC4NDQoNDQoNDQojIyBQcm9wb3NlZCBSdWJ5LWxldmVsIEFQ SXMuDQ0KDQ0KSSBwcm9wb3NlIHdlIGNyZWF0ZSB0aGUgZm9sbG93aW5nIG5ldyBtZXRob2RzIGlu IFJ1YnkuDQ0KDQ0KKiBgUHJvY2Vzcy5zcGF3bl9wcml2YXRlYA0NCiogYFByb2Nlc3MuZm9ya19w cml2YXRlYA0NCg0NClRoZXNlIG1ldGhvZHMgYmVoYXZlIGlkZW50aWNhbGx5IHRvIHRoZWlyIG5v bi1fcHJpdmF0ZSB2ZXJzaW9ucyBpbiBhbGwgcmVzcGVjdCwgZXhjZXB0IGluc3RlYWQgb2YgcmV0 dXJuaW5nIGEgcGlkLCB0aGV5IHJldHVybiBhbiBvYmplY3Qgb2YgdHlwZSBgUHJvY2Vzczo6UHJp dmF0ZUhhbmRsZWAuDQ0KDQ0KYFByb2Nlc3M6OlByaXZhdGVIYW5kbGVgIHdvdWxkIGhhdmUgdGhl IGZvbGxvd2luZyBtZXRob2RzOg0NCg0NCiogYHBpZCgpYCAtIHJldHVybnMgdGhlIHBpZCBmb3Ig dGhlIGNyZWF0ZWQgcHJvY2Vzcw0NCiogYHdhaXQoKWAgLSBibG9ja3MgdGhlIGNhbGxlciB1bnRp bCB0aGUgY3JlYXRlZCBwcm9jZXNzIGhhcyBleGl0ZWQsIGFuZCByZXR1cm5zIGEgYFByb2Nlc3M6 OlN0YXR1c2Agb2JqZWN0LiBJZiB0aGUgaGFuZGxlIGhhcyBfYWxyZWFkeV8gaGFkIGAjd2FpdGAg Y2FsbGVkIG9uIGl0LCBpdCByZXR1cm5zIHRoZSBzYW1lIGBQcm9jZXNzOjpTdGF0dXNgIG9iamVj dCBhcyB3YXMgcmV0dXJuZWQgdGhlbiBpbW1lZGlhdGVseS4gVGhpcyBpcyB1bmxpa2UgYFByb2Nl c3Mud2FpdHBpZGAgYW5kIGZyaWVuZHMsIHdoaWNoIHdvdWxkIHJhaXNlIGFuIEVDSElMRCBpbiB0 aGlzIGNhc2UgKG9yLCBpbiB0aGUgZmFjZSBvZiBwaWQgd3JhcGFyb3VuZCwgcG90ZW50aWFsbHkg d2FpdCBvbiBzb21lIG90aGVyIHRvdGFsbHkgdW5yZWxhdGVkIGNoaWxkIHByb2Nlc3Mgd2l0aCB0 aGUgc2FtZSBwaWQpLg0NCiogYHdhaXRfbm9uYmxvY2soKWAgLSBpZiB0aGUgY3JlYXRlZCBwcm9j ZXNzIGhhcyBleGl0ZWQsIGJlaGF2ZXMgbGlrZSBgI3dhaXRgOyBvdGhlcndpc2UsIGl0IHJldHVy bnMgYSBgUHJvY2Vzczo6U3RhdHVzYCBvYmplY3QgZm9yIHdoaWNoIGAjZXhpdGVkP2AgcmV0dXJu cyBmYWxzZS4NDQoqIGBraWxsKC4uLilgIC0gaWYgdGhlIGNyZWF0ZWQgcHJvY2VzcyBoYXMgbm90 IGJlZW4gcmVhcGVkIHZpYSBhIGNhbGwgdG8gYCN3YWl0YCwgcGVyZm9ybXMgaWRlbnRpY2FsbHkg dG8gYFByb2Nlc3Mua2lsbCAuLi4sIHBpZGAuIE90aGVyd2lzZSwgaWYgdGhlIHByb2Nlc3MgX2hh c18gYmVlbiByZWFwZWQsIHJhaXNlcyBgRXJybm86OkVTUkNIYCBpbW1lZGlhdGVseSB3aXRob3V0 IGlzc3VpbmcgYSBzeXN0ZW0gY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQsIGlmIHBpZHMgd3JhcCBh cm91bmQsIHRoYXQgdGhlIHdyb25nIHByb2Nlc3MgaXMgbm90IHNpZ25hbGVkIGJ5IG1pc3Rha2Uu DQ0KDQ0KQSBjYWxsIHRvIGBQcm9jZXNzLndhaXRgLCBgUHJvY2Vzcy53YWl0cGlkYCwgb3IgYFBy b2Nlc3Mud2FpdHBpZDJgIHdpbGwgX25ldmVyXyByZXR1cm4gYSBgUHJvY2Vzczo6U3RhdHVzYCBm b3IgYSBwcm9jZXNzIHN0YXJ0ZWQgd2l0aCBhIGBfcHJpdmF0ZWAgbWV0aG9kLCBldmVuIGlmIHRo YXQgY2FsbCBpcyBtYWRlIHdpdGggdGhlIHBpZCBvZiB0aGUgY2hpbGQgcHJvY2Vzcy4gVGhlIF9v bmx5XyB3YXkgdG8gcmVhcCBhIHByaXZhdGUgY2hpbGQgcHJvY2VzcyBpcyB0aHJvdWdoIGBQcm9j ZXNzOjpQcml2YXRlSGFuZGxlYC4NDQoNDQpUaGUgaW1wbGVtZW50YXRpb24gb2YgYElPLnBvcGVu YCwgYEtlcm5lbCNzeXN0ZW1gLCBgS2VybmVsI3BvcGVuYCwgYmFja3RpY2tzLCBhbmQgdGhlIGBP cGVuM2AgbW9kdWxlIHdvdWxkIGJlIGNoYW5nZWQgdG8gdXNlIHRoaXMgcHJpdmF0ZSBwcm9jZXNz IG1lY2hhbmlzbSBpbnRlcm5hbGx5LCBhbHRob3VnaCB0aGV5IGRvIG5vdCByZXR1cm4gcGlkcyBz byB0aGV5IGRvIG5vdCBuZWVkIHRvIGhhdmUgdGhlaXIgaW50ZXJmYWNlcyBjaGFuZ2VkLiAobm90 ZSB0aG91Z2ggLSBJIGRvbid0IGJlbGlldmUgYEtlcm5lbCNzeXN0ZW1gIHN1ZmZlcnMgZnJvbSB0 aGUgc2FtZSBwcm9ibGVtIGFzIHRoZSBgb3BlbjNgIGV4YW1wbGUgYWJvdmUsIGJlY2F1c2UgaXQg ZG9lcyBub3QgeWllbGQgdGhlIEdWTCBub3IgY2hlY2sgaW50ZXJydXB0cyBpbiBiZXR3ZWVuIHNw YXduaW5nIHRoZSBjaGlsZCBhbmQgd2FpdGluZyBvbiBpdCkNDQoNDQojIyBJbXBsZW1lbnRhdGlv biBzdHJhdGVneQ0NCg0NCkkgYmVsaWV2ZSB0aGlzIGNhbiBiZSBpbXBsZW1lbnRlZCwgaW4gYnJv YWQgc3Ryb2tlcywgd2l0aCBhbiBhcHByb2FjaCBsaWtlIHRoaXM6DQ0KDQ0KKiBLZWVwIGEgZ2xv YmFsIHRhYmxlIG1hcHBpbmcgcGlkcyAtPiBoYW5kbGVzIGZvciBwcm9jZXNzZXMgY3JlYXRlZCB3 aXRoIGBmb3JrX3ByaXZhdGVgIG9yIGBzcGF3bl9wcml2YXRlYC4NDQoqIFdoZW4gYSBjaGlsZCBw cm9jZXNzIGlzIHdhaXRlZCBvbiwgY29uc3VsdCB0aGUgaGFuZGxlIHRhYmxlLiBJZiB0aGVyZSBp cyBhIGhhbmRsZSByZWdpc3RlcmVkLCBhbmQgdGhlIHdhaXQgY2FsbCB3YXMgbWFkZSB3aXRob3V0 IHRoZSBoYW5kbGUsIGRvIE5PVCByZXR1cm4gdGhlIHJlYXBlZCBzdGF0dXMuIEluc3RlYWQsIHNh dmUgdGhlIHN0YXR1cyBhZ2FpbnN0IHRoZSBoYW5kbGUsIGFuZCByZXBlYXQgdGhlIGNhbGwgdG8g YHdhaXRwaWRgLg0NCiogSWYgdGhlIHdhaXQgY2FsbCBfd2FzXyBtYWRlIHdpdGggdGhlIGhhbmRs ZSwgd2UgY2FuIHJldHVybiB0aGUgDQ0KKiBPbmNlIGEgaGFuZGxlIGhhcyBoYWQgdGhlIGNoaWxk IHN0YXR1cyBzYXZlZCBhZ2FpbnN0IGl0LCBpdCBpcyByZW1vdmVkIGZyb20gdGhlIHRhYmxlLg0N CiogQSBzdWJzZXF1ZW50IGNhbGwgdG8gd2FpdCBvbiB0aGF0IHBpIHRoZSBoYW5kbGUgd2lsbCBs b29rIHVwIHRoZSBzYXZlZCBpbmZvcm1hdGlvbiBhbmQgcmV0dXJuIGl0IHdpdGhvdXQgbWFraW5n IGEgc3lzdGVtIGNhbGwuDQ0KDQ0KSW4gZmFjdCwgbW9zdCBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUg dG8gZG8gdGhpcyBjb3JyZWN0bHkgaXMgYWxyZWFkeSBpbiBwbGFjZSAtIGl0IHdhcyBhZGRlZCBi eSBAazBrdWJ1biBhbmQgQG5vcm1hbHBlcnNvbiBmb3VyIHllYXJzIGFnbyAtIGh0dHBzOi8vYnVn cy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xNDg2Ny4gTUpJVCBoYWQgYSBzaW1pbGFyIHByb2JsZW0g dG8gdGhlIG9uZSBkZXNjcmliZWQgaW4gdGhpcyBpc3N1ZTsgaXQgbmVlZHMgdG8gZm9yayBhIEMg Y29tcGlsZXIsIGJ1dCBpZiB0aGUgYXBwbGljYXRpb24gcGVyZm9ybXMgYSBgUHJvY2Vzcy53YWl0 cGlkMigtMSlgLCBpdCBjb3VsZCB3aW5kIHVwIHJlYXBpbmcgdGhlIGdjYyBwcm9jZXNzIG91dCBm cm9tIHVuZGVybmVhdGggbWppdC4gVGhpcyBjb2RlIGhhcyBjaGFuZ2VkIGNvbnNpZGVyYWJseSBv dmVyIHRoZSBjb3Vyc2Ugb2YgbGFzdCB5ZWFyLCBidXQgbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0 IG1qaXQgc3RpbGwgdXNlcyB0aGlzIGluZnJhc3RydWN0dXJlIHRvIHByb3RlY3QgaXRzIFJ1Ynkg Y2hpbGQtcHJvY2VzcyBmcm9tIGJlY29taW5nIHZpc2libGUgdG8gUnVieSBjb2RlLg0NCg0NCklu IGFueSBjYXNlLCB0aGUgd2F5IHdhaXRwaWQgd29ya3MgX2N1cnJlbnRseV8sIGlzIHRoYXQuLi4N DQoNDQoqIFJ1YnkgYWN0dWFsbHkgZG9lcyBhbGwgY2FsbHMgdG8gYHdhaXRwaWRgIGFzIGBXTk9I QU5HYCAoaS5lLiBub25ibG9ja2luZykgaW50ZXJuYWxseS4NDQoqIElmIGEgY2FsbCB0byBgd2Fp dHBpZGAgZmluZHMgbm8gY2hpbGRyZW4sIGl0IGJsb2NrcyB0aGUgdGhyZWFkLCByZXByZXNlbnRp bmcgdGhlIHN0YXRlIGluIGEgc3RydWN0dXJlIG9mIHR5cGUgYHN0cnVjdCB3YWl0cGlkX3N0YXRl YC4NDQoqIFJ1YnkgYWxzbyBrZWVwcyBhIGxpc3Qgb2YgYWxsIGB3YWl0cGlkX3N0YXRlYCdzIHRo YXQgYXJlIGN1cnJlbnRseSBiZWluZyB3YWl0ZWQgZm9yLCBgdm0tPndhaXRpbmdfcGlkc2AgYW5k IGB2bS0+d2FpdGluZ19ncnBzYC4NDQoqIFRoZXNlIHN0cnVjdHVyZXMgYXJlIHByb3RlY3RlZCB3 aXRoIGEgc3BlY2lmaWMgbXV0ZXgsIGB2bS0+d2FpdHBpZF9sb2NrYC4NDQoqIFJ1YnkgaW50ZXJu YWxseSB1c2VzIHRoZSBTSUdDSExEIHNpZ25hbCB0byByZWFwIHRoZSBkZWFkIGNoaWxkcmVuLCBh bmQgdGhlbiBmaW5kIGEgd2FpdGluZyBjYWxsIHRvIGB3YWl0cGlkYCAodmlhIHRoZSB0d28gbGlz dHMpIHRvIGFjdHVhbGx5IGRpc3BhdGNoIHRoZSByZWFwZWQgc3RhdHVzIHRvLiANDQoqIElmIHNv bWUgY2FsbGVyIGlzIHdhaXRpbmcgZm9yIGEgc3BlY2lmaWMgcGlkLCB0aGF0IF9hbHdheXNfIHRh a2VzIHByaW9yaXR5IG92ZXIgc29tZSBvdGhlciBjYWxsZXIgdGhhdCdzIHdhaXRpbmcgZm9yIGEg cGlkLWdyb3VwIChlLmcuIGAtMWApLg0NCg0NCm1qaXQncyBjaGlsZCBwcm9jZXNzIGlzIHByb3Rl Y3RlZCwgYmVjYXVzZToNDQoNDQoqIFdoZW4gbWppdCBmb3JrcywgaXQgdXNlcyBhIG1ldGhvZCBg cmJfbWppdF9mb3JrYCB0byBkbyBzby4NDQoqIFRoYXQgY2FsbHMgdGhlIGFjdHVhbCBgZm9ya2Ag aW1wbGVtZW50YXRpb24gX3doaWxzdCBzdGlsbCBob2xkaW5nXyBgdm0tPndhaXRwaWRfbG9ja2AN DQoqIEJlZm9yZSB5aWVsZGluZyB0aGUgbG9jaywgaXQgaW5zZXJ0cyBhbiBlbnRyeSBpbiBgdm0t PndhaXRpbmdfcGlkc2Agc2F5aW5nIHRoYXQgbWppdCBpcyB3YWl0aW5nIGZvciB0aGUganVzdC1j cmVhdGVkIGNoaWxkLg0NCiogU2luY2UgZGlyZWN0IHdhaXRzIGZvciBwaWRzIGFsd2F5cyB0YWtl IHByZWNlZGVuY2Ugb3ZlciBwaWQtZ3JvdXBzLCB0aGlzIGVuc3VyZXMgdGhhdCBtaml0IHdpbGwg YWx3YXlzIHJlYXAgaXRzIG93biBjaGlsZHJlbi4NDQoNDQpJIGJlbGlldmUgdGhpcyBtZWNoYW5p c20gY2FuIGJlIGV4dGVuZGVkIGFuZCBnZW5lcmFsaXNlZCB0byBwb3dlciB0aGUgcHJvcG9zZWQg QVBJLCBhbmQgbWppdCBjb3VsZCBpdHNlbGYgdXNlIHRoYXQgcmF0aGVyIHRoYW4gaGF2aW5nIG1q aXQtc3BlY2lmaWMgaGFuZGxpbmcgaW4gYHByb2Nlc3MuY2AuDQ0KDQ0KIyMgUE9DIGltcGxlbWVu dGF0aW9uDQ0KDQ0KSSBza2V0Y2hlZCBvdXQgYSBfdmVyeV8gcm91Z2ggUE9DIHRvIHNlZSBpZiB3 aGF0IEkgc2FpZCBhYm92ZSB3b3VsZCBiZSBwb3NzaWJsZSwgYW5kIEkgdGhpbmsgaXQgaXM6DQ0K DQ0KaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9jb21taXQvNjAwOWM1NjRiMTY4NjIwMDE1 MzVmMmI1NjFmMWExMmY2ZTdlMGM1Nw0NCg0NClRoZSBmb2xsb3dpbmcgc2NyaXB0IGJlaGF2ZXMg aG93IEkgZXhwZWN0IHdpdGggdGhpcyBwYXRjaDoNDQoNDQpgYGBydWJ5DQ0KcGlkLCBoID0gUHJv Y2Vzcy5zcGF3bl9wcml2YXRlICIvYmluL3NoIiwgIi1jIiwgInNsZWVwIDE7IGV4aXQgNjkiDQ0K cHV0cyAicGlkIC0+ICN7cGlkfSINDQpwdXRzICJoIC0+ICN7aH0iDQ0KDQ0KIyBzaG91bGQgRVNS Q0guDQ0Kc2xlZXAgMg0NCmJlZ2luDQ0KICAgIFByb2Nlc3Mud2FpdHBpZDIgLTENDQpyZXNjdWUg PT4gZQ0NCiAgICBwdXRzICJ3YWl0cGlkIGVyciAtPiAje2V9Ig0NCmVuZA0NCndwaWQsIHN0YXR1 cyA9IGgud2FpdA0NCnB1dHMgIndwaWQgLT4gI3t3cGlkfSINDQpwdXRzICJzdGF0dXMgLT4gI3tz dGF0dXMuaW5zcGVjdH0iDQ0KYGBgDQ0KDQ0KYGBgDQ0Ka3RzYW5ha3RzaWRpc0BsaW1hLWxpbnV4 MSBydWJ5ICUgLi90b29sL3J1bnJ1YnkucmIgLS0gLi90c3QxLnJiDQ0KcGlkIC0+IDExNTQxMDUN DQpoIC0+ICM8UHJvY2Vzczo6UHJpdmF0ZUhhbmRsZToweDAwMDBmZmZmOTQwMTQwOTg+DQ0Kd2Fp dHBpZCBlcnIgLT4gTm8gY2hpbGQgcHJvY2Vzc2VzDQ0Kd3BpZCAtPiAxMTU0MTA1DQ0Kc3RhdHVz IC0+ICM8UHJvY2Vzczo6U3RhdHVzOiBwaWQgMTE1NDEwNSBleGl0IDQ+DQ0KYGBgDQ0KDQ0KVGhl IGNoaWxkIHByb2Nlc3MgY2FuIGJlIHdhaXRlZCBvbiB3aXRoIHRoZSBoYW5kbGUsIGFuZCB0aGUg Y2FsbCB0byBgd2FpdHBpZDIoLTEpYCBmaW5kcyBub3RoaW5nLg0NCg0NCiMjIFByZXZpb3VzIGlk ZWE6IE9TLXNwZWNpZmljIGhhbmRsZXMNDQoNDQpNeSBmaXJzdCB2ZXJzaW9uIG9mIHRoaXMgcHJv cG9zYWwgaW52b2x2ZWQgYSBzaW1pbGFyIEFQSSwgYnV0IHBvd2VyaW5nIGl0IHdpdGggcGxhdGZv cm0tc3BlY2lmaWMgY29uY2VwdHMgYXZhaWxhYmxlIG9uIExpbnV4LCBXaW5kb3dzLCBhbmQgRnJl ZUJTRCB3aGljaCBvZmZlciByaWNoZXIgY29udHJvbCB0aGFuIGp1c3QgcGlkcyAmIHRoZSBgd2Fp dGAgc3lzY2FsbC4gSW4gcGFydGljdWxhciwgSSBoYWQgYmVsaWV2ZWQgdGhhdCB3ZSBjb3VsZCB1 c2UgdGhlIGBjbG9uZWAgc3lzY2FsbCBpbiBMaW51eCB0byBjcmVhdGUgYSBjaGlsZCBwcm9jZXNz IHdoaWNoOg0NCg0NCiogQ291bGQgYmUgcmVmZXJyZWQgdG8gYnkgYSB1bmlxdWUgZmlsZSBkZXNj cmlwdG9yIChhIHBpZGZkKSB3aGljaCB3b3VsZCBiZSBndWFyYW50ZWVkIG5ldmVyIHRvIGJlIHJl LXVzZWQgKHVubGlrZSBhIHBpZCksDQ0KKiBXb3VsZCBub3QgZ2VuZXJhdGUgYSBzaWduYWwgd2hl biBpdCBleGl0ZWQgKGkuZS4gbm8gU0lHQ0hMRCkuDQ0KKiBDb3VsZCBub3QgYmUgd2FpdGVkIG9u IGJ5IGFuIHVuc3BlY3RpbmcgdG8gYHdhaXRwaWRgIChleGNlcHQgaWYgYSBzcGVjaWFsIGZsYWcg YF9fV0NMT05FYCBhcyBwYXNzZWQpLg0NCg0NClVuZm9ydHVuYXRlbHksIHdoZW4gSSB0cmllZCB0 byBpbXBsZW1lbnQgdGhpcywgSSByYW4gaW50byBhIHByZXR0eSBzZXJpb3VzIHNuYWcuIEl0IGlz IHBvc3NpYmxlIHRvIGNyZWF0ZSBzdWNoIGEgcHJvY2VzcyAtIEJVVCwgd2hlbiB0aGUgcHJvY2Vz cyBleGVjJ3MsIGl0IGdvZXMgX2JhY2tfIHRvICJyYWlzZS1TSUdDSExELW9uLWV4aXQiIGFuZCAi YWxsb3ctd2FpdGluZy13aXRob3V0LV9fV0NMT05FIiBtb2Rlcy4gSSBndWVzcyB0aGlzIGZ1bmN0 aW9uYWxpdHkgaW4gdGhlIGNsb25lIHN5c2NhbGwgaXMgcmVhbGx5IGRlc2lnbmVkIHRvIHBvd2Vy IHRocmVhZHMgaW4gTGludXgsIHJhdGhlciB0aGFuIGJlaW5nIGEgZ2VuZXJhbC1wdXJwb3NlICJo aWRkZW4gcHJvY2VzcyIgQVBJLg0NCg0NClNvLCBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCB1c2Ug cGlkZmRzIGluIHRoaXMgcHJvcG9zYWwuDQ0KDQ0KIyMgTW90aXZhdGlvbg0NCg0NCk15IHVzZS1j YXNlIGZvciB0aGlzIGlzIHRoYXQgSeKAmW0gd29ya2luZyBvbiBhIHBlcmYtYmFzZWQgcHJvZmls aW5nIHRvb2wgZm9yIFJ1YnkuIFRvIGdldCBhcm91bmQgc29tZSBMaW51eCBjYXBhYmlsaXR5IGlz c3VlcywgSSB3YW50IG15IHByb2ZpbGVyIGdlbSAob3IgQ1J1YnkgcGF0Y2gsIHdoYXRldmVyIGl0 IHdpbmRzIHVwIGJlaW5nISkgdG8gZm9yayBhIHByaXZpbGVnZWQgaGVscGVyIGJpbmFyeSB0byBk byBzb21lIGVCUEYgdHdpZGRsaW5nLiBCdXQsIGlmIHlvdeKAmXJlIHByb2ZpbGluZyBlLmcuIGEg VW5pY29ybiBtYXN0ZXIgcHJvY2VzcywgdGhlIHJlc3VsdCBvZiB0aGF0IGJpbmFyeSBleGl0aW5n IG1pZ2h0IGJlIGNhdWdodCBieSBVbmljb3JuIGl0c2VsZiwgcmF0aGVyIHRoYW4gbXkgKGdlbSB8 IGludGVycHJldGVyIGZlYXR1cmUpLg0NCg0NCkluIG15IGNhc2UsIEknbSBzbyBkZWVwIGluIGxp bnV4IHNwZWNpZmljIHN0dWZmIHRoYXQganVzdCBjYWxsaW5nIGBjbG9uZSgyKWAgZnJvbSBteSBl eHRlbnNpb24gaXMgcHJvYmFibHkgZmluZSwgYnV0IEkgaGFkIGVub3VnaCBvZiBhIGxvb2sgYXQg dGhpcyBwcm9jZXNzIG1hbmFnZW1lbnQgc3R1ZmYgSSB0aG91Z2h0IGl0IHdvdWxkIGJlIHdvcnRo IGFza2luZyB0aGUgcXVlc3Rpb24gaWYgdGhpcyBtaWdodCBiZSB1c2VmdWwgdG8gb3RoZXIsIG1v cmUgbm9ybWFsLCBnZW1zLg0NCg0NCg0NCg0NCg0NCi0tIA0NCmh0dHBzOi8vYnVncy5ydWJ5LWxh bmcub3JnLw0NCiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBU byB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxh bmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1h bjMvcG9zdG9yaXVzL2xpc3RzL3J1YnktY29yZS5tbC5ydWJ5LWxhbmcub3JnLw==