[#99868] [Ruby master Bug#17144] Tempfile.open { ... } does not unlink the file — eregontp@...
Issue #17144 has been reported by Eregon (Benoit Daloze).
15 messages
2020/09/03
[ruby-core:99899] [Ruby master Feature#17100] Ractor: a proposal for a new concurrent abstraction without thread-safety issues
From:
ko1@...
Date:
2020-09-03 20:26:12 UTC
List:
ruby-core #99899
SXNzdWUgIzE3MTAwIGhhcyBiZWVuIHVwZGF0ZWQgYnkga28xIChLb2ljaGkgU2FzYWRhKS4NCg0K DQptYXJjYW5kcmUgKE1hcmMtQW5kcmUgTGFmb3J0dW5lKSB3cm90ZSBpbiAjbm90ZS0yNDoNCj4g SSBmaW5kIGBSYWN0b3JgIHZlcnkgcHJvbWlzaW5nIPCfjokNCg0KSSBob3BlIHNvLg0KDQo+IFRo ZSBpbXBhY3QgaXMgc2V2ZXJpbHkgbGltaXRlZCB3aXRob3V0IHN1cHBvcnQgZm9yIHVzZXItYmFz ZWQgaW1tdXRhYmxlIHR5cGVzLiBJcyB0aGF0IHBsYW5uZWQgZm9yIDMuMD8NCj4gDQo+IEknbSBj dXJpb3VzIHdoYXQgaXMgdGhlIHRlY2huaWNhbCBkaWZmaWN1bHR5LiBJIG1lYW4sIGNhbid0IGV4 aXN0aW5nIGJ1aWx0aW4gYGZyZWV6ZWAgY2hlY2sgZm9yIGFsbCBpbnN0YW5jZSB2YXJpYWJsZXMg YW5kIGlmIGFsbCBhcmUgaW1tdXRhYmxlIG9yIHNoYXJlYWJsZSwgdGhlbiBpdCBhbHNvIHNldHMg dGhlIGltbXV0YWJsZSBmbGFnIGZvciB0aGUgY3VycmVudCBvYmplY3Q/DQoNCkkgaW50cm9kdWNl ZCBgc2hhcmVhYmxlYCBmbGFnIGludG8gb2JqZWN0cyAoYEZMX1NIQVJFQUJMRWAgaW4gQyBsZXZl bCkuDQpPbmNlIHRoZSBpbnRlcnByZXRlciBmb3VuZCBpdCBpcyBpbW11dGFibGUsIHRoaXMgZmxh ZyB3aWxsIGJlIHNldCBhbmQgbm8gbmVlZCB0byBjaGVjayB0d2ljZS4NCg0KPiBIb3BlZnVsbHkg d2Ugd2lsbCBnZXQgYGRlZXBfZnJlZXplYC4gSSBjcmVhdGVkICMxNzE0NQ0KPiANCj4gV2Ugc2hv dWxkIHByb2JhYmx5IGhhdmUgYFJhY3Rvci5zaGFyZWFibGU/KG9iaikgIyA9PiB0cnVlIG9yIGZh bHNlYCwgcmlnaHQ/DQoNCkl0IGlzIGVhc3kgdG8gaW1wbGVtZW50LCBidXQgbm90IHN1cmUgaG93 IHRvIHVzZSB0aGVtLiBkZWJ1Z2dpbmcgcHVycG9zZT8NCihJIGRvbid0IGFnYWluc3QgdG8gaW50 cm9kdWNlIGl0KQ0KDQo+IGBSYWN0b3Iuc2VsZWN0YDogSG93IGFib3V0IHJldmVyc2luZyB0aGUg cmVzdWx0IG9yZGVyIChmcm9tIGBbcmFjdG9yLCBtZXNzYWdlXWAgdG8gYFttZXNzYWdlLCByYWN0 b3JdYCk/IEkgY2FuIGltYWdpbmUgbW9yZSBjYXNlcyB3ZXJlIHdlIGRvbid0IGNhcmUgYWJvdXQg d2hpY2ggcmFjdG9yIHdlIGdvdCB0aGUgcmVzdWx0IGZyb20gdGhhbiB0aGUgcmV2ZXJzZS4gYHJl c3VsdCwgPSBSYWN0b3Iuc2VsZWN0KCpyYWN0b3JfZmFybSlgIGlzIGVhc2llciB0byB3cml0ZS4N Cg0KR29vZCBpZGVhLg0KDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCkZlYXR1cmUgIzE3MTAwOiBSYWN0b3I6IGEgcHJvcG9zYWwgZm9yIGEgbmV3IGNvbmN1cnJl bnQgYWJzdHJhY3Rpb24gd2l0aG91dCB0aHJlYWQtc2FmZXR5IGlzc3Vlcw0KaHR0cHM6Ly9idWdz LnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE3MTAwI2NoYW5nZS04NzQzMQ0KDQoqIEF1dGhvcjoga28x IChLb2ljaGkgU2FzYWRhKQ0KKiBTdGF0dXM6IENsb3NlZA0KKiBQcmlvcml0eTogTm9ybWFsDQoq IEFzc2lnbmVlOiBrbzEgKEtvaWNoaSBTYXNhZGEpDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQojIFJhY3RvcjogYSBwcm9wb3NhbCBmb3IgYSBuZXcgY29uY3VycmVu dCBhYnN0cmFjdGlvbiB3aXRob3V0IHRocmVhZC1zYWZldHkgaXNzdWVzDQoNCiMjIEFic3RyYWN0 DQoNClRoaXMgdGlja2V0IHByb3Bvc2VzIGEgbmV3IGNvbmN1cnJlbnQgYWJzdHJhY3Rpb24gbmFt ZWQgIlJhY3RvciwiIFJ1YnkncyBBY3Rvci1saWtlIGZlYXR1cmUgKG5vdCBhbiBleGFjdCBBY3Rv ci1tb2RlbCkuDQoNClJhY3RvciBhY2hpZXZlcyB0aGUgZm9sbG93aW5nIGdvYWxzOg0KDQoqIFBh cmFsbGVsIGV4ZWN1dGlvbiBpbiBhIFJ1YnkgaW50ZXJwcmV0ZXIgcHJvY2Vzcw0KKiBBdm9pZGFu Y2Ugb2YgdGhyZWFkLXNhZmV0eSBpc3N1ZXMgKGVzcGVjaWFsbHkgcmFjZSBpc3N1ZXMpIGJ5IGxp bWl0aW5nIG9iamVjdCBzaGFyaW5nDQoqIENvbW11bmljYXRpb24gdmlhIGNvcHlpbmcgYW5kIG1v dmluZw0KDQpJIGhhdmUgYmVlbiB3b3JraW5nIG9uIHRoaXMgcHJvcG9zYWwgZm9yIGEgZmV3IHll YXJzLiBUaGUgcHJvamVjdCBuYW1lIGhhcyBiZWVuICJHdWlsZCwiIGJ1dCBJIHJlbmFtZWQgaXQg dG8gUmFjdG9yIGZvbGxvd2luZyBNYXR6JyBwcmVmZXJlbmNlLg0KDQpSZXNvdXJjZXM6DQoqIFBy b3Bvc2VkIHNwZWNpZmljYXRpb246IGh0dHBzOi8vZ2l0aHViLmNvbS9rbzEvcnVieS9ibG9iL3Jh Y3Rvcl9wYXJhbGxlbC9kb2MvcmFjdG9yLm1kDQoqIE15IHRhbGs6DQogICogKGxhdGVzdCwgYnV0 IHdyaXR0ZW4gaW4gSmFwYW5lc2UpIGh0dHA6Ly9hdGRvdC5uZXQvfmtvMS9hY3Rpdml0aWVzLzIw MjBfcnVieTNzdW1taXQucGRmDQogICogKG9sZCwgQVBJIGlzIGNoYW5nZWQpIGh0dHA6Ly9hdGRv dC5uZXQvfmtvMS9hY3Rpdml0aWVzLzIwMThfcnVieWthaWdpMjAxOC5wZGYNCiAgKiAob2xkLCBB UEkgaXMgY2hhbmdlZCkgaHR0cDovL2F0ZG90Lm5ldC9+a28xL2FjdGl2aXRpZXMvMjAxOF9ydWJ5 Y29uZjIwMTgucGRmDQoNCkN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgbm90IGNvbXBsZXRlIChj b250YWlucyBtYW55IGJ1Z3MpIGJ1dCBpdCBwYXNzZXMgdGhlIGN1cnJlbnQgQ0kuIEkgcHJvcG9z ZSB0byBtZXJnZSBpdCBzb29uIGFuZCB0cnkgdGhlIEFQSSwgYW5kIHRvIGNvbnRpbnVlIHdvcmtp bmcgb24gdGhlIGltcGxlbWVudGF0aW9uIG9uIG1hc3RlciBicmFuY2guDQoNCiMjIEJhY2tncm91 bmQNCg0KTVJJIGRvZXNuJ3QgcHJvdmlkZSBhbiBpbi1wcm9jZXNzIHBhcmFsbGVsIGNvbXB1dGF0 aW9uIGZlYXR1cmUgYmVjYXVzZSBwYXJhbGxlbCAiVGhyZWFkcyIgaGF2ZSBtYW55IGlzc3VlczoN Cg0KKiBSdWJ5IHByb2dyYW1tZXJzIG5lZWQgdG8gY29uc2lkZXIgYWJvdXQgVGhyZWFkLXNhZmV0 eSBtb3JlLg0KKiBJbnRlcnByZXRlciBkZXZlbG9wZXJzIG5lZWQgdG8gY29uc2lkZXIgYWJvdXQg VGhyZWFkLXNhZmV0eSBtb3JlLg0KKiBJbnRlcnByZXRlciB3aWxsIHNsb3cgZG93biBpbiBzaW5n bGUgdGhyZWFkIGV4ZWN1dGlvbiBiZWNhdXNlIG9mIGZpbmUtZ3JhaW4gc3luY2hyb25pemF0aW9u IHdpdGhvdXQgY2xldmVyIG9wdGltaXphdGlvbnMuDQoNClRoZSByZWFzb24gZm9yIHRoZXNlIGlz c3VlcyBpcyAic2hhcmVkLWV2ZXJ5dGhpbmciIHRocmVhZCBtb2RlbC4NCg0KIyMgUHJvcG9zYWwN Cg0KVG8gb3ZlcmNvbWUgdGhlIGlzc3VlcyBvbiBtdWx0aXBsZS10aHJlYWRzLCBSYWN0b3IgYWJz dHJhY3Rpb24gaXMgcHJvcG9zZWQuIFRoaXMgcHJvcG9zYWwgY29uc2lzdHMgb2YgdHdvIGxheWVy czogbWVtb3J5IG1vZGVsIGFuZCBjb21tdW5pY2F0aW9uIG1vZGVsLg0KDQpCYXNpY3M6DQoqIElu dHJvZHVjZSAiUmFjdG9yIiBhcyBhIG5ldyBjb25jdXJyZW50IGVudGl0eS4NCiogUmFjdG9ycyBy dW4gaW4gcGFyYWxsZWwuDQoNCk1lbW9yeSBtb2RlbDoNCiogU2VwYXJhdGUgInNoYXJlYWJsZSIg b2JqZWN0cyBhbmQgInVuLXNoYXJlYWJsZSIgb2JqZWN0cyBhbW9uZyByYWN0b3JzIHJ1bm5pbmcg aW4gcGFyYWxsZWwuDQogICAqIFNoYXJlYWJsZSBvYmplY3RzOg0KICAgICAqIEltbXV0YWJsZSBv YmplY3RzIChmcm96ZW4gb2JqZWN0cyBvbmx5IHJlZmVyIHRvIHNoYXJlYWJsZSBvYmplY3RzKQ0K ICAgICAqIENsYXNzL21vZHVsZSBvYmplY3RzDQogICAgICogU3BlY2lhbCBzaGFyZWFibGUgb2Jq ZWN0cyAoUmFjdG9yIG9iamVjdHMsIGFuZCBzbyBvbikNCiAgICogVW4tc2hhcmVhYmxlIG9iamVj dHM6IA0KICAgICAqIE90aGVyIG9iamVjdHMNCiogTW9zdCBvYmplY3RzIGFyZSAidW4tc2hhcmVh YmxlLCIgd2hpY2ggbWVhbnMgd2UgUnVieSBwcm9ncmFtbWVycyBhbmQgaW50ZXJwcmV0ZXIgZGV2 ZWxvcGVycyBkb24ndCBuZWVkIHRvIGNhcmUgYWJvdXQgdGhyZWFkLXNhZmV0eSBpbiBtb3N0IGNh c2VzLg0KKiBXZSBvbmx5IGNvbmNlbnRyYXRlIG9uIHN5bmNocm9uaXppbmcgInNoYXJlYWJsZSIg b2JqZWN0cy4NCiogQ29tcGFyZWQgd2l0aCBjb21wbGV0ZWx5IHNlcGFyYXRlZCBtZW1vcnkgbW9k ZWwgKGxpa2UgTVZNIHByb3Bvc2FsKSwgcHJvZ3JhbW1pbmcgd2lsbCBiZSBlYXNpZXIuDQoqIFRo aXMgbW9kZWwgaXMgc2ltaWxhciB0byBSYWNrZXQncyBgUGxhY2VgIGFic3RyYWN0aW9uLg0KDQpD b21tdW5pY2F0aW9uIG1vZGVsOg0KKiBBY3Rvci1saWtlIChub3QgdGhlIHNhbWUpIG1lc3NhZ2Ug cGFzc2luZyB1c2luZyBgUmFjdG9yI3NlbmQob2JqKWAgYW5kIGBSYWN0b3IucmVjdmANCiogUHVs bC10eXBlIGNvbW11bmljYXRpb24gdXNpbmcgYFJhY3Rvci55aWVsZChvYmopYCBhbmQgYFJhY3Rv ciN0YWtlYA0KKiBTdXBwb3J0IGZvciBtdWx0aXBsZSB3YWl0aW5nIHVzaW5nIGBSYWN0b3Iuc2Vs ZWN0KC4uLilgDQoNCkFjdG9yLWxpa2UgbW9kZWwgaXMgdGhlIG9yaWdpbiBvZiB0aGUgbmFtZSBv ZiBvdXIgcHJvcG9zYWwgIlJhY3RvciIgKFJ1YnkncyBhY3RvcikuIEhvd2V2ZXIsIGN1cnJlbnRs eSwgaXQgaXMgbm90IGFuIEFjdG9yIG1vZGVsIGJlY2F1c2Ugd2UgY2FuJ3Qgc2VsZWN0IHRoZSBt ZXNzYWdlICh1c2luZyBwYXR0ZXJuIG1hdGNoIGFzIGluIEVybGFuZywgRWxpeGlyLCAuLi4pLiBU aGlzIG1lYW5zIHRoYXQgd2UgY2FuJ3QgaGF2ZSBtdWx0aXBsZSBjb21tdW5pY2F0aW9uIGNoYW5u ZWxzLiBJbnN0ZWFkIG9mIGFkb3B0aW5nIGFuIGluY29tcGxldGUgYWN0b3IgbW9kZWwsIHRoaXMg cHJvcG9zYWwgcHJvdmlkZXMgYHlpZWxkYC9gdGFrZWAgcGFpciB0byBoYW5kbGUgbXVsdGlwbGUg Y2hhbm5lbHMuIFdlIGRpc2N1c3MgdGhpcyB0b3BpYyBsYXRlci4NCg0KSSBzdHJvbmdseSBiZWxp ZXZlIHRoZSBtZW1vcnkgbW9kZWwgaXMgcHJvbWlzaW5nLiBIb3dldmVyLCBJJ20gbm90IHN1cmUg aWYgdGhlIGNvbW11bmljYXRpb24gbW9kZWwgaXMgdGhlIGJlc3QuIFRoaXMgaXMgd2h5IEkgaW50 cm9kdWNlZCAiZXhwZXJpbWVudGFsIiB3YXJuaW5nLg0KDQpQcm9wb3NlZCBzcGVjaWZpY2F0aW9u OiBodHRwczovL2dpdGh1Yi5jb20va28xL3J1YnkvYmxvYi9yYWN0b3JfcGFyYWxsZWwvZG9jL3Jh Y3Rvci5tZA0KDQojIyBJbXBsZW1lbnRhdGlvbg0KDQpodHRwczovL2dpdGh1Yi5jb20vcnVieS9y dWJ5L3B1bGwvMzM2NQ0KQWxsIEdIIGFjdGlvbnMgcGFzcy4NCg0KSSBkZXNjcmliZSB0aGUgaW1w bGVtZW50YXRpb24gYnJpZWZseS4NCg0KIyMjIGByYl9yYWN0b3JfdGANCg0KV2l0aG91dCBSYWN0 b3IsIHRoZSBWTS1UaHJlYWQtRmliZXIgaGllcmFyY2h5IGlzIGxpa2UgdGhpczoNCg0KKiBUaGUg Vk0gYHJiX3ZtX3RgIG1hbmFnZXMgcnVubmluZyB0aHJlYWRzIChgcmJfdGhyZWFkX3RgKS4NCiog QSB0aHJlYWQgKGByYl90aHJlYWRfdGApIHBvaW50cyB0byBhIHJ1bm5pbmcgZmliZXIgKGByYl9m aWJlcl90YCkuDQoNCldpdGggUmFjdG9yLCB3ZSBpbnRyb2R1Y2UgYSBuZXcgbGF5ZXIgYHJiX3Jh Y3Rvcl90YDoNCg0KKiBUaGUgVk0gYHJiX3ZtX3RgIG1hbmFnZXMgcnVubmluZyByYWN0b3JzIChg cmJfcmFjdG9yX3RgKS4NCiogQSBSYWN0b3IgbWFuYWdlcyBydW5uaW5nIHRocmVhZHMgKGByYl90 aHJlYWRfdGApLg0KKiBBIHRocmVhZCAoYHJiX3RocmVhZF90YCkgcG9pbnRzIHRvIGEgcnVubmlu ZyBmaWJlciAoYHJiX2ZpYmVyX3RgKS4NCg0KYHJiX3JhY3Rvcl90YCBoYXMgYSBHVkwgdG8gbWFu YWdlIHRocmVhZHMgKG9ubHkgb25lIGFtb25nIGEgUmFjdG9yJ3MgdGhyZWFkcyBjYW4gcnVuKS4N Cg0KUmFjdG9yIGltcGxlbWVudGF0aW9uIGlzIGxvY2F0ZWQgaW4gYHJhY3Rvci5oYCwgYHJhY3Rv ci5jYCBhbmQgYHJhY3Rvci5yYmAuDQoNCiMjIyBWTS13aWRlIGxvY2sNCg0KVk0td2lkZSBsb2Nr IGlzIGludHJvZHVjZWQgdG8gcHJvdGVjdCBWTSBnbG9iYWwgcmVzb3VyY2VzIHN1Y2ggYXMgb2Jq ZWN0IHNwYWNlLiBJdCBzaG91bGQgYWxsb3cgcmVjdXJzaXZlIGxvY2ssIHNvIHRoZSBpbXBsZW1l bnRhdGlvbiBpcyBhIG1vbml0b3IuIFdlIHNoYWxsIGNhbGwgaXQgVk0td2lkZSBtb25pdG9yLiBG b3Igbm93LCBgUkJfVk1fTE9DS19FTlRFUigpYCBhbmQgYFJCX1ZNX0xPQ0tfTEVBVkUoKWAgYXJl IHByb3ZpZGVkIHRvIGFjcXVpcmUvcmVsZWFzZSB0aGUgbG9jay4NCg0KTm90ZSB0aGF0IGl0IGlz IGRpZmZlcmVudCBmcm9tIHRoZSAoY3VycmVudCkgR1ZMLiBBIEdWTCBpcyBhY3F1aXJlZCBhbnl0 aW1lIHlvdSBydW4gYSBSdWJ5IHRocmVhZC4gVk0td2lkZSBsb2NrIGlzIGFjcXVpcmVkIG9ubHkg d2hlbiBhY2Nlc3NpbmcgVk0td2lkZSByZXNvdXJjZXMuDQoNCk9uIHNpbmdsZSByYWN0b3IgbW9k ZSAoYWxsIFJ1Ynkgc2NyaXB0cyBleGNlcHQgbXkgdGVzdHMpIA0KDQojIyMgT2JqZWN0IG1hbmFn ZW1lbnQgYW5kIEdDDQoNCiogKDEpIEFsbCByYWN0b3JzIHNoYXJlIHRoZSBvYmplY3Qgc3BhY2Uu DQoqICgyKSBFYWNoIEdDIGV2ZW50IHdpbGwgc3RvcCBhbGwgcmFjdG9ycywgYW5kIGEgcmFjdG9y IEdDIHdvcmtzIHVuZGVyIGJhcnJpZXIgc3luY2hyb25pemF0aW9uLg0KICAqIEJhcnJpZXIgYXQg YGdjX2VudGVyKClgDQogICogbWFya2luZywgKGxhenkpIHN3ZWVwaW5nLCAuLi4NCiogKDMpIEJl Y2F1c2UgYWxsIG9mIHRoZSBvYmplY3Qgc3BhY2UgYXJlIHNoYXJlZCBieSByYWN0b3JzLCBvYmpl Y3QgY3JlYXRpb24gaXMgcHJvdGVjdGVkIGJ5IFZNLXdpZGUgbG9jay4NCg0KKDIpIGFuZCAoMykg aGF2ZSBodWdlIGltcGFjdCBvbiBwZXJmb3JtYW5jZS4gVGhlIHBsYW4gaXM6DQoNCiogRm9yICgy KSwgaW50cm9kdWNlIChzZW1pLSlzZXBhcmF0ZWQgb2JqZWN0IHNwYWNlLiBJdCB3b3VsZCByZXF1 aXJlIGEgbG9uZyB0aW1lIGFuZCBSdWJ5IDMuMCBjYW4ndCBlbXBsb3kgdGhpcyB0ZWNobmlxdWUu DQoqIEZvciAoMyksIGludHJvZHVjZSBmcmVlIHNsb3QgY2FjaGUgZm9yIGV2ZXJ5IHJhY3Rvcjsg dGhlbiBtb3N0IGNyZWF0aW9ucyBjYW4gYmUgZG9uZSB3aXRob3V0IHN5bmNocm9uaXphdGlvbi4g SXQgd2lsbCBiZSBlbXBsb3llZCBzb29uLg0KDQojIyMgRXhwZXJpbWVudGFsIHdhcm5pbmcNCg0K Q3VycmVudGx5LCBSYWN0b3IgaW1wbGVtZW50YXRpb24gYW5kIHNwZWNpZmljYXRpb24gYXJlIG5v dCBzdGFibGUuIFNvIHVwb24gaXRzIGZpcnN0IHVzYWdlLCBgUmFjdG9yLm5ld2Agd2lsbCBzaG93 IGEgd2FybmluZzoNCg0KYHdhcm5pbmc6IFJhY3RvciBpcyBleHBlcmltZW50YWwsIGFuZCB0aGUg YmVoYXZpb3IgbWF5IGNoYW5nZSBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUnVieSEgQWxzbyB0aGVy ZSBhcmUgbWFueSBpbXBsZW1lbnRhdGlvbiBpc3N1ZXMuYA0KDQojIyBEaXNjdXNzaW9uDQoNCiMj IyBBY3Rvci1iYXNlZCBhbmQgY2hhbm5lbC1iYXNlZA0KDQpJIHRoaW5rIHRoZXJlIGFyZSB0d28g bWVzc2FnZSBwYXNzaW5nIGFwcHJvYWNoZXM6IEFjdG9yLWJhc2VkIChhcyBpbiBFcmxhbmcsIC4u LikgYW5kIGNoYW5uZWwtYmFzZWQgKGFzIGluIEdvLCAuLi4pLg0KDQpXaXRoIGNoYW5uZWwtYmFz ZWQgYXBwcm9hY2gsIGl0IGlzIGVhc3kgdG8gbWFuaXB1bGF0ZSBtdWx0aXBsZSBjaGFubmVscyBi ZWNhdXNlIGl0IG1hbmFnZXMgdGhlbSBleHBsaWNpdGx5LiBBY3Rvci1iYXNlZCBhcHByb2FjaCBt YW5pcHVsYXRlcyBtdWx0aXBsZSBjaGFubmVscyB3aXRoIG1lc3NhZ2UgcGF0dGVybi4gVGhlIHJl Y2VpdmVyIGNhbiBpZ25vcmUgdW5leHBlY3RlZCBzdHJ1Y3R1cmVkIG1lc3NhZ2VzIG9yIHB1dCB0 aGVtIG9uIGhvbGQgYW5kIGNhbiBoYW5kbGUgdGhlbSBhZnRlciB0aGUgYmVoYXZpb3IgaGFzIGNo YW5nZWQgKHJvbGUgb2YgYWN0b3IgaGFzIGNoYW5nZWQpLg0KDQpSYWN0b3IgaGFzIGBzZW5kL3Jl Y3ZgIGxpa2UgQWN0b3ItbW9kZWwsIGJ1dCB0aGVyZSBpcyBubyBwYXR0ZXJuIG1hdGNoaW5nIGZl YXR1cmUuIFRoaXMgaXMgYmVjYXVzZSB3ZSBjYW4ndCBpbnRyb2R1Y2UgbmV3IHN5bnRheCwgYW5k IEkgY2FuJ3QgZGVzaWduIGEgZ29vZCBBUEkuDQoNCldpdGggY2hhbm5lbC1iYXNlZCBhcHByb2Fj aCwgaXQgaXMgZWFzeSB0byBkZXNpZ24gdGhlIEFQSSAoZm9yIGV4YW1wbGUsIGRvIGBjaCA9IFJh Y3Rvcjo6Q2hhbm5lbC5uZXdgIGFuZCBzaGFyZSB0aGUgYGNoYCB0aGF0IHJhY3RvcnMgY2FuIHBy b3ZpZGUpLiBIb3dldmVyLCBJIGNhbid0IGRlc2lnbiBhIGdvb2QgQVBJIHRvIGhhbmRsZSBleGNl cHRpb25zIGFtb25nIFJhY3RvcnMuDQoNClJlZ2FyZGluZyBlcnJvciBoYW5kbGluZywgd2UgcHJv cG9zZSBhIGh5YnJpZCBtb2RlbCB1c2luZyBgc2VuZC9yZWN2YCwgYHlpZWxkL3Rha2VgIHBhaXJz LiBgUmFjdG9yI3Rha2VgIGNhbiByZWNlaXZlIHRoZSBzb3VyY2UgcmFjdG9yJ3MgZXhjZXB0aW9u IChsaWtlIGBUaHJlYWQjam9pbmApLiBPbiBBY3RvciBhcHByb2FjaCwgd2UgY2FuIGRldGVjdCB3 aGVuIHRoZSBkZXN0aW5hdGlvbiBSYWN0b3IgaXMgbm90IHdvcmtpbmcgKGtpbGxlZCkgdXBvbiBg UmFjdG9yI3NlbmQob2JqKWAuIEEgcmVjZWl2ZXIgcmFjdG9yICh3YWl0aW5nIGZvciBgUmFjdG9y LnJlY3ZgKSBjYW5ub3QgZGV0ZWN0IHRoZSBzZW5kZXIncyB0cm91YmxlLCBidXQgbWF5YmUgdGhl IHByaW9yaXR5IGlzIG5vdCBoaWdoLiBgUmFjdG9yI3Rha2VgIGFsc28gZGV0ZWN0cyB0aGUgc2Vu ZGVyJ3MgKGBSYWN0b3IueWllbGQob2JqKWApIGVycm9yLCBzbyB0aGUgZXJyb3IgY2FuIGJlIHBy b3BhZ2F0ZWQuDQoNClRvIGhhbmRsZSBtdWx0aXBsZSBjb21tdW5pY2F0aW9uIGNoYW5uZWxzIG9u IFJhY3RvciwgaW5zdGVhZCBvZiB1c2luZyBtdWx0aXBsZSBjaGFubmVscywgd2UgdXNlICpwaXBl KiByYWN0b3JzLg0KDQpgYGANCiMgd29ya2VyLXBvb2wgKHJlY2VpdmUgYnkgc2VuZCkNCg0KbWFp biAjIHBpcGUuc2VuZChvYmopDQotPiBwaXBlICMgUmFjdG9yLnlpZWxkIFJhY3Rvci5yZWN2DQog IC0+DQogICAgd29ya2VyMSAjIFJhY3Rvci55aWVsZChzb21lX3Rhc2sgcGlwZS50YWtlKSkNCiAg ICB3b3JrZXIyICMgUmFjdG9yLnlpZWxkKHNvbWVfdGFzayBwaXBlLnRha2UpKQ0KICAgIHdvcmtl cjMgIyBSYWN0b3IueWllbGQoc29tZV90YXNrIHBpcGUudGFrZSkpDQotPiBtYWluICMgUmFjdG9y LnNlbGVjdCh3b3JrZXIxLCB3b3JrZXIyLCB3b3JrZXIzKQ0KDQojIGlmIHdvcmtlciogY2F1c2Vz IGFuIGVycm9yLCBtYWluIGNhbiBkZXRlY3QgdGhlIGVycm9yLg0KYGBgDQoNCipwaXBlKiByYWN0 b3JzIG1heSBsb29rIGxpa2UgY2hhbm5lbHMuIEhvd2V2ZXIsIHdlIGRvbid0IG5lZWQgdG8gaW50 cm9kdWNlIG5ldyBjbGFzc2VzIHdpdGggdGhpcyB0ZWNobmlxdWUgKHRoZSBpbXBsZW1lbnRhdGlv biBjYW4gb21pdCBSYWN0b3IgY3JlYXRpb24gZm9yIHBpcGUgcmFjdG9ycykuDQoNCk1heWJlIHRo ZXJlIGFyZSBvdGhlciBwb3NzaWJpbGl0aWVzLiBGb3IgZXhhbXBsZSwgaWYgd2UgY2FuIHByb3Bh Z2F0ZSB0aGUgZXJyb3JzIHdpdGggY2hhbm5lbHMsIHdlIGNhbiBhbHNvIGNvbnNpZGVyIGEgY2hh bm5lbC1tb2RlbCAod2UgbmVlZCB0byBjaGFuZ2UgdGhlIFJhY3RvciBuYW1lIDpwIHRoZW4pLg0K DQojIyMgTmFtZSBvZiBSYWN0b3IgKGFuZCBHdWlsZCkNCg0KV2hlbiBJIHByb3Bvc2VkIEd1aWxk IGluIDIwMTYsIEkgcmVnYXJkZWQgIm1vdmUiIG1lc3NhZ2UtcGFzc2luZyAoc2VlIHNwZWNpZmlj YXRpb24pIHRvIGJlIGNoYXJhY3RlcmlzdGljIG9mIGl0LCBhbmQgSSBjYWxsZWQgdGhpcyBmZWF0 dXJlICJtb3ZpbmcgbWVtYmVyc2hpcC4iIFRoaXMgaXMgd2h5IHRoZSBuYW1lICJHdWlsZCIgd2Fz IGNob3Nlbi4gSG93ZXZlciBNYXR6IHBvaW50ZWQgb3V0IHRoYXQgdGhpcyBtb3ZlIHNlbWFudGlj cyBpcyBub3QgdXNlZCBmcmVxdWVudGx5LCBhbmQgaGUgYXNrZWQgbWUgdG8gY2hhbmdlIHRoZSBu YW1lLiBBbHNvLCBzb21lb25lIGhhZCBhbHJlYWR5IGJlZW4gdXNpbmcgdGhlIGNsYXNzIG5hbWUg Ikd1aWxkLiINCg0KIlJhY3RvciIgaXMgc2hvcnQgYW5kIGlzIG5vdCBhbiBleGlzdGluZyBjbGFz czsgdGhpcyBpcyB3aHkgSSBjaG9vc2UgIlJhY3Rvci4iDQoNCkkgdW5kZXJzdGFuZCBwZW9wbGUg bWF5IGNvbmZ1c2UgaXQgd2l0aCAiUmVhY3Rvci4iDQoNCiMjIFRPRE8NCg0KVGhlcmUgYXJlIG1h bnkgcmVtYWluaW5nIHRhc2tzLg0KDQojIyMgUHJvdGVjdGlvbg0KDQpNYW55IFZNLXdpZGUgKHBy b2Nlc3Mtd2lkZSkgcmVzb3VyY2VzIGFyZSBub3QgcHJvdGVjdGVkIGNvcnJlY3RseSwgc28gdXNp bmcgUmFjdG9yIG9uIGEgY29tcGxpY2F0ZWQgcHJvZ3JhbSBjYW4gY2F1c2UgY3JpdGljYWwgYnVn cyAoYFtCVUddYCkuIE1vc3QgZ2xvYmFsIHJlc291cmNlIGFyZSBtYW5hZ2VkIGJ5IGdsb2JhbCB2 YXJpYWJsZXMsIHNvIHdlIG5lZWQgdG8gY2hlY2sgdGhlbSBjb3JyZWN0bHkuDQoNCiMjIyBDLW1l dGhvZHMNCg0KQ3VycmVudGx5LCBDLW1ldGhvZHMgKG1ldGhvZHMgd3JpdHRlbiBpbiBDIGFuZCBk ZWZpbmVkIHdpdGggYHJiX2RlZmluZV9tZXRob2QoKWApIHJ1biBpbiBwYXJhbGxlbC4gSXQgbWVh bnMgdGhhdCB0aHJlYWQtdW5zYWZlIGNvZGUgY2FuIHJ1biBpbiBwYXJhbGxlbC4gVG8gc29sdmUg dGhpcyBpc3N1ZSwgSSBwbGFuIHRoZSBmb2xsb3dpbmc6DQoNCigxKSBJbnRyb2R1Y2UgdGhyZWFk LXVuc2FmZSBsYWJlbCBmb3IgbWV0aG9kcw0KDQpJdCBpcyBpbXBvc3NpYmxlIHRvIG1ha2UgYWxs IEMtbWV0aG9kcyB0aHJlYWQtc2FmZSwgZXNwZWNpYWxseSBmb3IgQy1tZXRob2RzIGluIHRoaXJk IHBhcnR5IEMtZXh0ZW5zaW9ucy4gVG8gcHJvdGVjdCB0aGVtLCBsYWJlbCB0aGVzZSAocG9zc2li bHkpIHRocmVhZC11bnNhZmUgQy1tZXRob2RzIGFzICJ0aHJlYWQtdW5zYWZlLiINCg0KV2hlbiAi dW5zYWZlIi1sYWJlbGVkIEMgbWV0aG9kcyBhcmUgaW52b2tlZCwgdGhleSBhY3F1aXJlIGEgVk0t d2lkZSBsb2NrLiBUaGlzIFZNLXdpZGUgbG9jayBzaG91bGQgY2hlY2sgZm9yIHJlY3Vyc2l2ZW5l c3MgKHNvIHRoaXMgbG9jayBzaG91bGQgYmUgYSBtb25pdG9yKSBhbmQgZXNjYXBpbmcgKGV4Y2Vw dGlvbnMpLiBDdXJyZW50bHksIFZNLXdpZGUgbG9jayBkb2Vzbid0IGNoZWNrIGZvciBlc2NhcGlu ZywgYnV0IHRoYXQgc2hvdWxkIGJlIGltcGxlbWVudGVkIHNvb24uDQoNCigyKSBCdWlsdC1pbiBD LW1ldGhvZHMNCg0KSSdsbCBmaXggbW9zdCBvZiB0aGUgYnVpbHRpbiBDLW1ldGhvZHMgKFN0cmlu ZywgQXJyYXksIC4uLikgc28gdGhhdCB0aGV5IHdpbGwgYmVjb21lIHRocmVhZC1zYWZlLiBJZiBp dCBpcyBub3QgZWFzeSwgSSdsbCB1c2UgdGhyZWFkLXVuc2FmZSBsYWJlbC4NCg0KIyMjIENvcHlp bmcgYW5kIG1vdmluZw0KDQpDdXJyZW50bHksIE1hcnNoYWwgcHJvdG9jb2wgbWFrZXMgZGVlcCBj b3B5IG9uIG1lc3NhZ2UgY29tbXVuaWNhdGlvbi4gSG93ZXZlciwgTWFyc2hhbCBwcm90b2NvbCBk b2Vzbid0IHN1cHBvcnQgc29tZSBvYmplY3RzIGxpa2UgYFJhY3RvcmAgb2JqZWN0cywgc28gd2Ug bmVlZCB0byBtb2RpZnkgdGhlbS4NCg0KT25seSBhIGZldyB0eXBlcyBhcmUgc3VwcG9ydGVkIGZv ciBtb3ZpbmcsIHNvIHdlIG5lZWQgdG8gd3JpdGUgbW9yZS4NCg0KIyMjICJHVkwiIG5hbWluZw0K DQpDdXJyZW50bHksIHRoZSBzb3VyY2UgY29kZSBjb250YWlucyB0aGUgbmFtZSAiR1ZMIiBmb3Ig UmFjdG9yIGxvY2FsIGxvY2tzLiBNYXliZSB0aGV5IHNob3VsZCBiZSByZW5hbWVkLg0KDQojIyMg UGVyZm9ybWFuY2UNCg0KVG8gaW50cm9kdWNlIGZpbmUtZ3JhaW5lZCBsb2NrLCBwZXJmb3JtYW5j ZSB0dW5pbmcgaXMgbmVlZGVkLg0KDQojIyMgQnVnIGZpeGVzDQoNCm1hbnkgbWFueSAuLi4uDQoN CiMjIENvbmNsdXNpb24NCg0KVGhpcyB0aWNrZXQgcHJvcG9zZXMgYSBuZXcgY29uY3VycmVudCBh YnN0cmFjdGlvbiAiUmFjdG9yLiIgSSB0aGluayBSdWJ5IDMgY2FuIHNoaXAgd2l0aCBSYWN0b3Ig dW5kZXIgImV4cGVyaW1lbnRhbCIgc3RhdHVzLg0KDQoNCg0KDQotLSANCmh0dHBzOi8vYnVncy5y dWJ5LWxhbmcub3JnLw0KClVuc3Vic2NyaWJlOiA8bWFpbHRvOnJ1YnktY29yZS1yZXF1ZXN0QHJ1 YnktbGFuZy5vcmc/c3ViamVjdD11bnN1YnNjcmliZT4KPGh0dHA6Ly9saXN0cy5ydWJ5LWxhbmcu b3JnL2NnaS1iaW4vbWFpbG1hbi9vcHRpb25zL3J1YnktY29yZT4K