[#75687] [Ruby trunk Bug#12416] struct rb_id_table lacks mark function — shyouhei@...
Issue #12416 has been reported by Shyouhei Urabe.
3 messages
2016/05/23
[#75763] [Ruby trunk Feature#12435] Using connect_nonblock to open TCP connections in Net::HTTP#connect — mohamed.m.m.hafez@...
Issue #12435 has been reported by Mohamed Hafez.
3 messages
2016/05/28
[#75774] Errno::EAGAIN thrown by OpenSSL::SSL::SSLSocket#connect_nonblock — Mohamed Hafez <mohamed.m.m.hafez@...>
Hi all, every now and then in my production server, I'm
4 messages
2016/05/30
[#75775] Re: Errno::EAGAIN thrown by OpenSSL::SSL::SSLSocket#connect_nonblock
— Mohamed Hafez <mohamed.m.m.hafez@...>
2016/05/30
Or does MRI's OpenSSL::SSL::SSLSocket#connect_nonblock just return
[#75782] Important: Somewhat backwards-incompatible change (Fwd: [ruby-cvs:62388] duerst:r55225 (trunk): * string.c: Activate full Unicode case mapping for UTF-8) — Martin J. Dürst <duerst@...>
V2l0aCB0aGUgY2hhbmdlIGJlbG93LCBJIGhhdmUgYWN0aXZhdGVkIGZ1bGwgVW5pY29kZSBjYXNl
4 messages
2016/05/31
[ruby-core:75437] [Ruby trunk Feature#12361] Proposal: add Geo::Coord class to standard library
From:
zverok.offline@...
Date:
2016-05-10 08:02:10 UTC
List:
ruby-core #75437
SXNzdWUgIzEyMzYxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgVmljdG9yIFNoZXBlbGV2LgoKCk1hcnRp biBEw7xyc3Qgd3JvdGU6Cj4gT24gcnVieWdlbXMsIEkgc2VlIGEgbG90IG9mIGdlbXMgd2l0aCAn Z2VvJyBpbiB0aGVpciBuYW1lLiBXaGljaCBvbmUgaXMgeW91cnM/IEhvdyBwb3B1bGFyIGlzIGl0 PyBUaGVzZSBkYXlzLCBpdCdzIGVhc3kgdG8gdXNlIHNvbWV0aGluZyBhcyBhIGdlbSwgc28gaXQn cyBub3QgdGhhdCBuZWNlc3NhcnkgdG8gaW5jbHVkZSB0aGluZ3MgaW50byB0aGUgc3RhbmRhcmQg bGlicmFyeS4KPiAKCkkgcmVmZXJlbmNlZCAiZ2VtIHF1ZXN0aW9uIiBpbiBvcmlnaW5hbCBwcm9w b3NhbDogIlRoaXMgdHlwZSBpcyB0b28gInNtYWxsIiB0byBiZSBkZWZpbmVkIGJ5IHNlcGFyYXRl IGdlbSwgc28sIGFsbCBvZiBleGlzdGluZyBnZW8gZ2VtcyAoR2VvS2l0LCBSR2VvLCBHZW9SdWJ5 LCBHcmF0aWN1bGUgZXRjLikgZGVmaW5lIHRoZWlyIG93biBMYXRMbmcsIG9yIExvY2F0aW9uLCBv ciBQb2ludCwgd2hhdGV2ZXIuIi4gCgpJIHByb3Bvc2VkIGl0IHRoaXMgd2F5LCBiZWNhdXNlIHN0 YW5kYXJkIGxpYnJhcnkgaXMgYSAiY29tbW9uIGRlbm9taW5hdG9yIiBmb3IgYWxsIGdlbXMgYW5k IGxpYnJhcmllcy4gSWYgc29tZSBSdWJ5IGxpYnJhcnkgd29ya3Mgd2l0aCB0aW1lIHZhbHVlcywg aXQgcmV0dXJucyBlaXRoZXIgVGltZSBvciBEYXRlVGltZSwgYW5kIGlmIGl0IGlzIG5vdCAtLSB0 aGF0IHdvdWxkIGJlIGEgY29tbW9uIGZpcnN0IHN1Z2dlc3Rpb24gZm9yIGxpYnJhcnkgZGVzaWdu LgoKQnV0IGFib3V0IGdlb2dyYXBoaWNhbCBjb29yZGluYXRlcywgY3VycmVudCBzdGF0ZSBpczog dGhlcmUgaXMgbm8gZ2VtIHdoaWNoIGlzICJqdXN0IGdlb2dyYXBoaWNhbCBjb29yZGluYXRlcyIs IHdlbGwtZGVzaWduZWQgYW5kIGNvbmNpc2UuIEFsbCBwb3B1bGFyIGdlby0qIGdlbXMgYXJlIHNv bWUgY29tYmluZXMgb2YgY29vcmRpbmF0ZSByZWZlcmVuY2Ugc3lzdGVtcywgZGF0YWJhc2UgYWNj ZXNzLCBmaWxlIGZvcm1hdHMgcGFyc2luZywgZ2VvY29kaW5nIHRocm91Z2ggc29tZSBBUElzIGFu ZCBzbyBvbiBhbmQgc28gb24uIEFsbCBvZiB0aGVtIChhbmQgbWFueSBvdGhlciBnZW9ncmFwaHkt YXdhcmUgZ2VtcykgZnJlcXVlbnRseSBhY2NlcHQgYW5kIHJldHVybiAicGFpciBvZiBjb29yZGlu YXRlcyIgdHlwZSwgYW5kIGFsbCBvZiB0aGVtIHVzZSBpbmNvbXBhdGlibGUgImJhc2ljIHR5cGUi LCBvciBqdXN0IGEgdHVwbGUgb2YgdHdvIHZhbHVlcy4KCldoZXRoZXIgQ29vcmQgdHlwZSB3b3Vs ZCBiZSBpbiBzdGFuZGFyZCBsaWJyYXJ5LCBpdCBjYW4gYmVjYW1lIGNvbW1vbiBkYXRhIGV4Y2hh bmdlIGZvcm1hdDsgaWYgaXQgd291bGQgYmUgc2VwYXJhdGUgZ2VtLCBpdCB3b3VsZCBkZWZpbml0 ZWx5IG5vdC4KClNvLCBpdHMganVzdCBhIHJlcG8gd2l0aCBwcm9wb3NhbCwgbm90IGEgZ2VtLgoK PiBZb3UgbWFrZSBhIGxvdCBvZiBjb21wYXJpc29ucyB3aXRoIFRpbWUuIFRpbWUgaGFzIHRoaW5n cyBzdWNoIGFzIHRpbWV6b25lcy4gR2VvIGNvb3JkaW5hdGVzIGFsc28gaGF2ZSBhbGwga2luZHMg b2YgY29tcGxpY2F0ZWQgZGV0YWlscy4gSSBoYXBwZW4gdG8gbHVyayBvbiB0aGUgSUVURiBnZW9q c29uIGxpc3QsIGFuZCB0aGVyZSBzdWNoIHRoaW5ncyBnZXQgZGlzY3Vzc2VkLgoKQ3VycmVudGx5 LCBJJ20ganVzdCBmb2xsb3dpbmcgInByaW5jaXBsZSBvZiBsZWFzdCBzdXJwaXNlIiBhbmQgd2Fp dGluZyBmb3IgaW5wdXQgZnJvbSB0aGUgY29tbXVuaXR5LgoKPiBGb3IgZXhhbXBsZSwgdGhlcmUg c2VlbXMgdG8gYmUgTGF0L0xvbmcgZm9ybWF0cyBhbmQgTG9uZy9MYXQgZm9ybWF0cy4gV2h5IGRp ZCB5b3UgY2hvb3NlIExhdC9Mb25nPyAKCkJlY2F1c2UgZm9yICJjb21tb24gdXNlciIgdGhlIHF1 ZXN0aW9uIG9mIHJpZ2h0IG9yZGVyIHNlZW1zIG9ic29sZXRlIG5vdywgd2l0aCBzcHJlYWRpbmcg b2YgY2FzdWFsIEdQUyBzb2Z0d2FyZSBhbmQgb25saW5lIG1hcHMsIGFsbCBvZiB0aGVtIHNlZW1p bmdseSB1c2luZyBsYXQvbG9uZyBvcmRlci4KCj4gQWxzbywgcGVvcGxlIHRoZXJlIG9mdGVuIHRh bGsgYWJvdXQgc29tZXRoaW5nIGNhbGxlZCBDUlMgKGNvb3JkaW5hdGUgcmVmZXJlbmNlIHN5c3Rl bSwgSSBndWVzcykuIFdoaWNoIG9uZSBkbyB5b3UgdXNlLgoKU2FtZSBhcyB3aXRoIGNvb3JkaW5h dGVzIG9yZGVyLCBqdXN0IGEgImNvbW1vbiIgV0dTLTg0LiBbQWRkZWQgbWVudGlvbl0oaHR0cHM6 Ly9naXRodWIuY29tL3p2ZXJvay9nZW9fY29vcmQvY29tbWl0L2YxZjUwMzczYzU2OWI3ZjE5MTk5 YTZkNWRjYzcwNzc2ZDU4ZmVhMWUpIG9mIGl0IHRvIFJFQURNRSBhbmQgY29kZS4KCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRmVhdHVyZSAjMTIzNjE6IFByb3Bvc2Fs OiBhZGQgR2VvOjpDb29yZCBjbGFzcyB0byBzdGFuZGFyZCBsaWJyYXJ5Cmh0dHBzOi8vYnVncy5y dWJ5LWxhbmcub3JnL2lzc3Vlcy8xMjM2MSNjaGFuZ2UtNTg1NTQKCiogQXV0aG9yOiBWaWN0b3Ig U2hlcGVsZXYKKiBTdGF0dXM6IE9wZW4KKiBQcmlvcml0eTogTm9ybWFsCiogQXNzaWduZWU6IAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMjIFByb3Bvc2FsCgpBZGQg YEdlbzo6Q29vcmRgIGNsYXNzIHRvIFJ1Ynkgc3RhbmRhcmQgbGlicmFyeSwgcmVwcmVzZW50aW5n IGBbbGF0aXR1ZGUsIGxvbmdpdHVkZV1gIHBhaXIgKyBjb252ZW5pZW5jZSBtZXRob2RzLiBBZGQg YEdlb2Agc3RhbmRhcmQgbGlicmFyeSB3aXRoIGFkZGl0aW9uYWwgY2FsY3VsYXRpb25zIGFuZCBj b252ZW5pZW5jZSBtZXRob2RzLgoKIyMgUmF0aW9uYWxlCgpJbiBtb2Rlcm4gYXBwbGljYXRpb25z LCB3b3JraW5nIHdpdGggZ2VvZ3JhcGhpY2FsIGNvb3JkaW5hdGVzIGlzIGZyZXF1ZW50LiBXZSBw cm9wb3NlIHRvIHRoaW5rIG9mIHN1Y2ggY29vcmRpbmF0ZXMgKG5hbWVseSwgYGxhdGl0dWRlLCBs b25naXR1ZGVgIHBhaXIpIGFzIG9mICJiYXNpYyIgdHlwZSB0aGF0IHNob3VsZCBiZSBzdXBwb3J0 ZWQgYnkgc3RhbmRhcmQgbGlicmFyeSAtIHRoZSBzYW1lIHdheSBhcyB3ZSBzdXBwb3J0IGBUaW1l YC9gRGF0ZWAvYERhdGVUaW1lYCBpbnN0ZWFkIG9mIGhhdmluZyBpdCBkZWZpbmVkCmJ5IHVzZXIv Z2Vtcy4KClRoaXMgdHlwZSBpcyB0b28gInNtYWxsIiB0byBiZSBkZWZpbmVkIGJ5IHNlcGFyYXRl IGdlbSwgc28sIGFsbCBvZiBleGlzdGluZyBnZW8gZ2VtcyAoR2VvS2l0LCBSR2VvLCBHZW9SdWJ5 LCBHcmF0aWN1bGUgZXRjLikgZGVmaW5lIHRoZWlyIG93biBgTGF0TG5nYCwgb3IgYExvY2F0aW9u YCwgb3IgYFBvaW50YCwgd2hhdGV2ZXIuCgpPbiBvdGhlciBoYW5kLCBBUEkgZGVzaWduIGZvciB0 aGlzICJzbWFsbCIgdHlwZSBpcyB2YWd1ZSBlbm91Z2ggZm9yIGFsbCB0aG9zZSBzaW1pbGFyIHR5 cGVzIHRvIGJlIGluY29tcGF0aWJsZSBhbmQgYnJlYWsgc21hbGwgaGFiaXRzIGFuZCBjb252ZW50 aW9ucyB3aGVuIHlvdSBjaGFuZ2UgZnJvbSBvbmUgZ2VvIGxpYnJhcnkgdG8gYW5vdGhlciwgb3Ig dHJ5IHRvIHVzZSBzZXZlcmFsCnNpbXVsdGFuZW91c2x5LgoKQWRkaXRpb25hbHksIG1hbnkgZ2Vt cyBzb21laG93IHdvcmtpbmcgd2l0aCBnZW8gY29vcmRpbmF0ZXMgKGZvciB3ZWF0aGVyLCBvciB0 aW1lem9uZSwgb3IgYW5vdGhlciB0YXNrcykgZ2VuZXJhbGx5IHByZWZlciBub3QgdG8gaW50cm9k dWNlIHR5cGUsIGFuZCBqdXN0IHdvcmsgd2l0aCBgW2xhdCwgbG5nXWAgYXJyYXksIHdoaWNoIGlz IG5vdCB2ZXJ5IGNvbnZlbmllbnQsIGZhaXRoZnVsbHkuCgpTbywgaGF2aW5nICJnZW8gY29vcmRp bmF0ZXMiIGZ1bmN0aW9uYWxpdHkgaW4gc3RhbmRhcmQgbGlicmFyeSBzZWVtcyByZWFzb25hYmxl IGFuZCB2YWx1YWJsZS4KCiMjIEV4aXN0aW5nL3JlZmVyZW5jZSBzb2x1dGlvbnMKClJ1Ynk6Cgoq IFtHZW9LaXQ6OkxhdExuZ10oaHR0cDovL3d3dy5ydWJ5ZG9jLmluZm8vZ2l0aHViL2dlb2tpdC9n ZW9raXQvbWFzdGVyL0dlb2tpdC9MYXRMbmcpOwoqIFtSR2VvOjpGZWF0dXJlOjpQb2ludF0oaHR0 cDovL3d3dy5ydWJ5ZG9jLmluZm8vZ2Vtcy9yZ2VvL1JHZW8vRmVhdHVyZS9Qb2ludCkgKHdpdGgg c2V2ZXJhbCAicHJpdmF0ZSIgaW1wbGVtZW50YXRpb24gY2xhc3Nlcyk7IFJHZW8gaW1wbGVtZW50 cyBmdWxsIFtPR0MgU2ltcGxlIEZlYXR1cmVzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lr aS9TaW1wbGVfRmVhdHVyZXMpIHNwZWNpZmljYXRpb24sIHNvLCBpdHMgcG9pbnRzIGhhdmUgYHpg IGFuZCBgbWAgY29vcmRpbmF0ZXMsIHByb2plY3Rpb24gYW5kIG11Y2ggbW9yZTsKKiBbR3JhdGlj dWxlOjpMb2NhdGlvbl0oaHR0cDovL3d3dy5ydWJ5ZG9jLmluZm8vZ2l0aHViL2NvbGxlY3RpdmVp ZGVhL2dyYXRpY3VsZS9HcmF0aWN1bGUvTG9jYXRpb24pIChub3Qgc3RyaWN0bHkgYSBgW2xhdCxs bmddYCB3cmFwcGVyKTsKKiBbUm9zYW1hcnk6Ok5vZGVdKGh0dHA6Ly93d3cucnVieWRvYy5pbmZv L2dlbXMvcm9zZW1hcnkvMC40LjQvUm9zZW1hcnkvTm9kZSkgKGZvbGxvd3MgbmFtaW5nIGNvbnZl bnRpb24gb2YgdW5kZXJseWluZyBPcGVuU3RyZWV0TWFwIEFQSSk7CgpPdGhlciBzb3VyY2VzOgoq IFB5dGhvbjogW2dlb3B5LlBvaW50XShodHRwOi8vZ2VvcHkucmVhZHRoZWRvY3Mub3JnL2VuL2xh dGVzdC8jZ2VvcHkucG9pbnQuUG9pbnQpOwoqIFtFbGFzdGljU2VhcmNoXShodHRwczovL3d3dy5l bGFzdGljLmNvL2Jsb2cvZ2VvLWxvY2F0aW9uLWFuZC1zZWFyY2gpIHVzZXMgaGFzaCB3aXRoICJs YXQiIGFuZCAibG9uIiBrZXlzOwoqIEdvb2dsZSBNYXBzIFtHZW9jb2RpbmcgQVBJXShodHRwczov L2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vZ2VvY29kaW5nL2ludHJv I0dlb2NvZGluZ1Jlc3BvbnNlcykgdXNlcyBoYXNoIHdpdGggImxhdCIgYW5kICJsbmciIGtleXM7 CiogUG9zdEdJUzogW3ByZXR0eSBjb21wbGljYXRlZF0oaHR0cDovL3Bvc3RnaXMubmV0L2RvY3Mv bWFudWFsLTIuMi91c2luZ19wb3N0Z2lzX2RibWFuYWdlbWVudC5odG1sI1JlZk9iamVjdCkgIGhh cyBfZ2VvbWV0cmljYWxfIChwcm9qZWN0ZWQpIGFuZCBfZ2VvZ3JhcGhpY2FsXyAobGF0LCBsbmcp IHBvaW50cyBhbmQgc3R1ZmYuCgojIyBEZXNpZ24gZGVjaXNpb25zCgpXaGlsZSBkZXNpZ25pbmcg YEdlb2AgbGlicmFyeSwgb3VyIHJlZmVyZW5jZSBwb2ludCB3YXMgc3RhbmRhcmQgYFRpbWVgIGNs YXNzIChhbmQsIHRvIGxlc3NlciBleHRlbnQsIGBEYXRlYC9gRGF0ZVRpbWVgKS4gSXQgaGFzIHRo aXMgcmVzcG9uc2liaWxpdGllczoKKiBzdG9yZXMgZGF0YSBpbiBzaW1wbGUgaW50ZXJuYWwgZm9y bTsKKiBoZWxwcyB0byBwYXJzZSBhbmQgZm9ybWF0IGRhdGEgdG8gYW5kIGZyb20gc3RyaW5nczsK KiBwcm92aWRlcyBlYXN5IGFjY2VzcyB0byBsb2dpY2FsIGNvbXBvbmVudHMgb2YgZGF0YTsKKiBh bGxvd3MgbW9zdCBzaW1wbGUgYW5kIHVuYW1iaWd1b3VzIGNhbGN1bGF0aW9ucy4KCioqTWFpbiB0 eXBlIG5hbWUqKjogYXMgZmFyIGFzIHdlIGNhbiBzZWUsIHRoZXJlJ3Mgbm8gZ29vZCBzaW5ndWxh ciBuYW1lIGZvciBgKGxhdCwgbG5nKWAgcGFpciBjb25jZXB0LiBBcyBtZW50aW9uZWQgYWJvdmUs IHRoZXJlIGNhbiBiZSBzZWVuIG5hbWVzIGxpa2UgYExhdExuZ2AsIG9yIGBMb2NhdGlvbmAsIG9y IGBQb2ludGA7IGFuZCBpbiBuYXR1cmFsIGxhbmd1YWdlCmp1c3QgImNvb3JkaW5hdGVzIiB1c2Vk IGZyZXF1ZW50bHkuIFdlIHByb3Bvc2UgdGhlIG5hbWUgYENvb3JkYCwgd2hpY2ggaXMgcHJldHR5 IHNob3J0LCBlYXN5IHRvIHJlbWVtYmVyLCBkZW1vbnN0cmF0ZXMgaW50ZW50aW9ucyAoYW5kIGxv b2tzIGxpa2Ugc2luZ3VsYXIsIHNvIHlvdSBjYW4gaGF2ZSAib25lIGNvb3JkIG9iamVjdCIgYW5k ICJhcnJheSBvZiBjb29yZHMiLAp3aGljaCBpcyBub3QgMTAwJSBsaW5ndWlzdGljYWxseSBjb3Jy ZWN0LCB5ZXQgY29udmVuaWVudCkuIEFsdGVybmF0aXZlIGBQb2ludGAgbmFtZSBzZWVtcyB0byBi ZSB0b28gYW1iaWdvdXMsIGJlaW5nIHVzZWQgaW4gbWFueSBjb250ZXh0cy4KCmBHZW86OkNvb3Jk YCBvYmplY3QgaXMgKippbW11dGFibGUqKiwgdGhlcmUncyBubyBzZW1hbnRpY2FsIHNlbnNlIGlu IGBsb2NhdGlvbi5sYXRpdHVkZSA9IC4uLmAgb3Igc29tZXRoaW5nIGxpa2UgdGhpcy4KCioqVW5p dHMqKjogYEdlb2AgY2FsY3VsYXRpb25zIChqdXN0IGxpa2UgYFRpbWVgIGNhbGN1bGF0aW9ucykg cHJvdmlkZSBubyB1bml0cyBvcHRpb25zLCBqdXN0IHJldHVybmluZyBudW1iZXJzIG1lYXN1cmVk IGluICJkZWZhdWx0IiB1bml0czogbWV0cmVzIGZvciBkaXN0YW5jZXMgKGFzIHRoZXkgYXJlIFNJ IHVuaXQpIGFuZCBkZWdyZWVzIGZvciBhemltdXRoLiBMYXRpdHVkZSBhbmQgbG9uZ2l0dWRlIGFy ZSBzdG9yZWQgaW4gZGVncmVlcywgYnV0IHJhZGlhbnMgdmFsdWVzIGFjY2Vzc29ycyBhcmUgcHJv dmlkZWQgKGJlaW5nIHdpZGVseSB1c2VkIGluIGdlb2Rlc3kgbWF0aCkuCgpUaGVyZSdzIGludHJv ZHVjZWQgKipjb25jZXB0IG9mIGdsb2JlKiogdXNlZCBpbnRlcm5hbGx5IGZvciBjYWxjdWxhdGlv bnMuIE9ubHkgZ2VuZXJpYyAoc3BoZXJlKSBhbmQgRWFydGggZ2xvYmVzIGFyZSBpbXBsZW1lbnRl ZCwgYnV0IGZvciAyMDE2IHdlIGZlZWwgbGlrZSBjdXJyZW50IGRlc2lnbiBvZiBiYXNpYyB0eXBl cyBzaG91bGQgdGFrZSBpbiBjb25zaWRlcmF0aW9uCnBvc3NpYmlsaXR5IG9mIHdyaXRpbmcgUnVi eSBzY3JpcHRzIGZvciBNYXJzIG1hcHMgYW5hbHlzaXMuIE9ubHkgb25lIGdlb2Rlc3kgZm9ybXVs YSBpcyBpbXBsZW1lbnRlZCAoVmluY2VudHksIGdlbmVyYWxseSBjb25zaWRlcmVkIG9uZSBvZiB0 aGUgbW9zdCBwcmVjaXNlKSwgYXMgZm9yIHN0YW5kYXJkIGxpYnJhcnkgY2xhc3MgaXQgY29uc2lk ZXJlZCB1bm5lY2Vzc2FyeSB0byBwcm92aWRlIHVzZXIgd2l0aCBnZW9kZXN5IGZvcm11bGFlIG9w dGlvbnMuCgpObyAqKm1hcCBwcm9qZWN0aW9uKiogbWF0aCB3YXMgYWRkZWQgaW50byBjdXJyZW50 IHByb3Bvc2FsLCBidXQgaXQgbWF5IGJlIGEgZ29vZCBkaXJlY3Rpb24gZm9yIGZ1cnRoZXIgd29y ay4gTm8gKiplbGV2YXRpb24qKiBkYXRhIGNvbnNpZGVyZWQgZWl0aGVyLgoKIyMgUHJvcG9zYWwg ZGV0YWlscwoKIyMjIGBHZW86OkNvb3JkYCBjbGFzcwoKUmVwcmVzZW50cyBgW2xhdGl0dWRlLCBs b25naXR1ZGVdYCBwYWlyLiBMYXRpdHVkZSBpcyAtOTAgdG8gKzkwIChkZWdyZWVzKS4gTG9uZ2l0 dWRlIGlzIC0xODAgdG8gKzE4MC4KCkNsYXNzIG1ldGhvZHM6CiogYG5ldyhsYXQsIGxuZylgIGNy ZWF0ZXMgaW5zdGFuY2UgZnJvbSB0d28gTnVtZXJpY3MgKGluIGRlZ3JlZXMpOwoqIGBuZXcobGF0 OiwgbG5nOilgIGtleXdvcmQgYXJndW1lbnRzIGZvcm0gb2YgYWJvdmU7CiogYG5ldyhsYXRkOiwg bGF0bTosIGxhdHM6LCBsYXRoOiwgbG5nZDogbG5nbTosIGxuZ3M6IGxuZ2g6KWAgY3JlYXRlcyBp bnN0YW5jZSBmcm9tIGNvb3JkaW5hdGVzIGluIChkZWcsIG1pbiwgc2VjLCBoZW1pc3BoZXJlKSBm b3JtOyBoZW1pc3BoZXJlcyBhcmUgIk4iLyJTIiBmb3IgbGF0aXR1ZGUgYW5kICJXIi9FIiBmb3Ig bG9uZ2l0dWRlOyBhbnkgY29tcG9uZW50IGV4Y2VwdCBmb3IgZGVncmVlcyBjYW4gYmUgb21pdHRl ZDsgaWYgaGVtaXNwaGVyZSBpcyBvbWl0dGVkLCBpdCBpcyBkZWNpZGVkIGJ5IGRlZ3JlZXMgc2ln biAobGF0OiBwb3NpdGl2ZSBpcyAiTiIsIGxuZzogcG9zaXRpdmUgaXMgIkUiKTsKKiBgZnJvbV9o KGhhc2gpYCBjcmVhdGVzIGluc3RhbmNlIGZyb20gaGFzaCB3aXRoIGAibGF0ImAgb3IgYCJsYXRp dHVkZSJgIGtleSBhbmQgYCJsb24iYCBvciBgImxuZyJgIG9yIGAibG9uZ2l0dWRlImAga2V5IChj YXNlLWluZGVwZW5kZW50KTsKKiBgZnJvbV9yYWRpYW5zKHBoaSwgbGEpYCBjcmVhdGVzIGluc3Rh bmNlIGZyb20gcmFkaWFuIHZhbHVlczsKKiBgc3RycGNvb3JkYCBwYXJzZXMgc3RyaW5nIGludG8g Y29vcmRpbmF0ZXMgYnkgcHJvdmlkZWQgcGF0dGVybiAoc2VlIGJlbG93IGZvciBwYXR0ZXJuIGRl c2NyaXB0aW9uKTsKKiBgcGFyc2VfbGxgIHBhcnNlcyBjb29yZGluYXRlcyBzdHJpbmcgaW4gYCJm bG9hdCwgZmxvYXQiYCBmb3JtOwoqIGBwYXJzZV9kbXNgIHBhcnNlcyBjb29yZGluYXRlcyBzdHJp bmcgaW4gYGQgbSBzIGgsIGQgbSBzIGhgIGZvcm1hdCAoY29uc2lkZXJpbmcgc2V2ZXJhbCB3aWRl bHkgdXNlZCBzeW1ib2xzIGZvciBkZWdyZWVzLCBtaW51dGVzIGFuZCBzZWNvbmRzKTsKKiBgcGFy c2VgIHRyaWVzIHRvIHBhcnNlIHN0cmluZyBpbnRvIGNvb3JkaW5hdGVzIGZyb20gdmFyaW91cyBm b3JtYXRzLgoKSW5zdGFuY2UgbWV0aG9kczoKKiBgbGF0YCBhbmQgYGxuZ2AsIHJldHVybmluZyBg RmxvYXRgcywgc2lnbmVkOwoqIGBsYXRpdHVkZWAgYW5kIGBsb25naXR1ZGVgIGFzIGFuIGFsaWFz ZXM7IGBsb25gIGFzIGFuIGFkZGl0aW9uYWwgYWxpYXNlcyBmb3IgbG9uZ2l0dWRlOwoqIGBsYXRk YCwgYGxhdG1gLCBgbGF0c2AsIGBsYXRoYDogZGVncmVlLCBtaW51dGUsIHNlY29uZCwgaGVtaXNw aGVyZTsgYGxhdGRgIGFuZCBgbGF0bWAgYXJlIGBGaXhudW1gLCBgbGF0c2AgaXMgYEZsb2F0YCwg YGxhdGhgIGlzICJOIi8iUyI7IGFsbCBudW1iZXJzIGFyZSB1bnNpZ25lZDsKKiBgbG5nZGAsIGBs bmdtYCwgYGxuZ3NgLCBgbG5naGA6IHRoZSBzYW1lIGZvciBsb25naXR1ZGUgKGhlbWlzcGhlcmUg aXMgIlciLyJFIik7CiogYGxhdGRtcyhub2hlbWlzcGhlcmUgPSBmYWxzZSlgIHJldHVybnMgYFts YXRkLCBsYXRtLCBsYXRzLCBsYXRoXWAgd2l0aCBgbm9oZW1pc3BoZXJlYCBwYXJhbSBlcXVhbCB0 byBgZmFsc2VgLCBhbmQgYFvCsWxhdGQsIGxhdG0sIGxhdHNdYCB3aXRoIGB0cnVlYDsgc2FtZSB3 aXRoIGBsbmdkbXNgIGZvciBsb25naXR1ZGU7CiogYHBoaWAgYW5kIGDPhmAgaXMgbGF0aXR1ZGUg aW4gcmFkaWFucyAoaGVscGZ1bCBmb3IgbWF0aCksIGBsYWAgb3IgYM67YCBpcyBsb25naXR1ZGUg aW4gcmFkaWFucyAobm90IGBsYW1iZGFgIHRvIG5vdCBjb25mdXNlIHdpdGggS2VybmVsIG1ldGhv ZCk7CiogYHRvX3NgIHJldHVybmluZyBzdHJpbmcgbGlrZSAiNTAuMDA0NDQ0LDM2LjIzMTM4OSIg KGdvb2QgZm9yIG1hcCBVUkxzIGNvbnN0cnVjdGlvbiwgZm9yIGV4YW1wbGUpOwoqIGB0b19oKGxh dDogOmxhdCwgbG5nOiA6bG5nKWAgY29udmVydHMgY29vcmQgdG8gaGFzaCAod2l0aCBkZXNpcmVk IGtleSBuYW1lcyk7CiogYHRvX2FgIGNvbnZlcnRzIGNvb3JkIHRvIHNpbXBsZSBgW2xhdCwgbG5n XWAgcGFpcjsKKiBgc3RyZmNvb3JkKGZvcm1hdHN0cilgIGZvciBjb21wbGV4IGNvb3JkaW5hdGUg Zm9ybWF0dGluZyAoc2VlIGJlbG93IGZvciBmb3JtYXQgc3RyaW5nIGRlc2NyaXB0aW9uKTsKKiBg ZGlzdGFuY2Uob3RoZXIpYCBjYWxjdWxhdGVzIGRpc3RhbmNlIHRvIGFub3RoZXIgcG9pbnQgKGlu IG1ldHJlcyk7CiogYGF6aW11dGgob3RoZXIpYCBjYWxjdWxhdGVzIGRpcmVjdGlvbiB0byB0YXJn ZXQgKGluIGRlZ3JlZXMpOwoqIGBlbmRwb2ludChkaXJlY3Rpb24sIGF6aW11dGgpYCBjYWxjdWxh dGVzIGZpbmFsIHBvaW50IG9mIHRoZSBsaW5lIG9mIGBkaXN0YW5jZWAgbWV0cmVzIGdvaW5nIGlu IGBhemltdXRoYCBkaXJlY3Rpb24gZnJvbSBjdXJyZW50IHBvaW50LgoKIyMjIyBgc3RycGNvb3Jk YC9gc3RyZmNvb3JkYAoKRXhhbXBsZToKCn5+fnJ1YnkKa2hhcmtpdi5zdHJmY29vcmQoJyVsYXRk dcKwJWxhdG3igLIlbGF0c+KAsyAlbGF0aCwgJWxuZ2R1wrAlbG5nbeKAsiVsbmdz4oCzICVsbmdo JykKIyA9PiAiNTDCsDDigLIxNuKAsyBOLCAzNsKwMTPigLI1M+KAsyBFIgp+fn4KCkRpcmVjdGl2 ZXM6CiogYCVsYXRgIC0gZnVsbCBsYXRpdHVkZSwgZmxvYXQ7IGNhbiBiZSBmb3JtYXR0ZWQgd2l0 aCBtb3JlIGNvbnRyb2wgbGlrZSBgJS40bGF0YCAoZm91ciBkaWdpdHMgYWZ0ZXIgcG9pbnQpIG9y IGAlK2xhdGAgKGV4cGxpY2l0IHBsdXMgc2lnbiBmb3IgcG9zaXRpdmUgbGF0aXR1ZGVzKTsKKiBg JWxhdGRgIC0gbGF0aXR1ZGUgZGVncmVlcywgdW5zaWduZWQsIGludGVnZXIKKiBgJWxhdGRzYCAt IGxhdGl0dWRlIGRlZ3JlZXMsIHNpZ25lZAoqIGAlbGF0bWAgLSBsYXRpdHVkZSBtaW51dGVzLCB1 bnNpZ25lZCwgaW50ZWdlcgoqIGAlbGF0c2AgLSBsYXRpdHVkZSBzZWNvbmRzLCB1bnNpZ25lZCwg aW50ZWdlciwgYnV0IGNhbiBiZSBmb3JtYXR0ZWQgYXMgZmxvYXQ6IGAlLjJsYXRzYAoqIGAlbGF0 aGAgLSBsYXRpdHVkZSBoZW1pc3BoZXJlLCBvbmUgbGV0dGVyICgiTiIvIlMiKQoqIGAlbG5nYCwg YCVsbmdkYCwgYCVsbmdkc2AsIGAlbG5nc2AsIGAlbG5naGAsIGAlbG5nSGAgLSBzYW1lIGZvciBs b25naXR1ZGUKKiBgJSVgIGxpdGVyYWwgYCVgIHNpZ24KCiMjIyBDdXJyZW50IGltcGxlbWVudGF0 aW9uCgpQcm9wb3NlZCBpbXBsZW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgYXQgaHR0cHM6Ly9naXRo dWIuY29tL3p2ZXJvay9nZW9fY29vcmQuCgpJdCB3YXMgY3JlYXRlZCB3aXRoIHRob3VnaHRzIG9m IHN0YW5kYXJkIGxpYnJhcnksIHNvLCBhbGwgZG9jcyBhcmUgaW4gUkRvYyBmb3JtYXQsIGFuZCB0 ZXN0cy9zcGVjcyBhcmUgaW4gbXNwZWMtY29tcGF0aWJsZSByc3BlYyBmbGF2b3VyLgoKCgoKLS0g Cmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLwoKVW5zdWJzY3JpYmU6IDxtYWlsdG86cnVieS1j b3JlLXJlcXVlc3RAcnVieS1sYW5nLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgo8aHR0cDovL2xp c3RzLnJ1YnktbGFuZy5vcmcvY2dpLWJpbi9tYWlsbWFuL29wdGlvbnMvcnVieS1jb3JlPgo=