[#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:75439] [Ruby trunk Feature#12361] Proposal: add Geo::Coord class to standard library
From:
zverok.offline@...
Date:
2016-05-10 08:15:29 UTC
List:
ruby-core #75439
SXNzdWUgIzEyMzYxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgVmljdG9yIFNoZXBlbGV2LgoKRGVzY3Jp cHRpb24gdXBkYXRlZAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpG ZWF0dXJlICMxMjM2MTogUHJvcG9zYWw6IGFkZCBHZW86OkNvb3JkIGNsYXNzIHRvIHN0YW5kYXJk IGxpYnJhcnkKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzEyMzYxI2NoYW5nZS01 ODU1NgoKKiBBdXRob3I6IFZpY3RvciBTaGVwZWxldgoqIFN0YXR1czogT3BlbgoqIFByaW9yaXR5 OiBOb3JtYWwKKiBBc3NpZ25lZTogCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIyMgUHJvcG9zYWwKCkFkZCBgR2VvOjpDb29yZGAgY2xhc3MgdG8gUnVieSBzdGFuZGFy ZCBsaWJyYXJ5LCByZXByZXNlbnRpbmcgYFtsYXRpdHVkZSwgbG9uZ2l0dWRlXWAgcGFpciArIGNv bnZlbmllbmNlIG1ldGhvZHMuIEFkZCBgR2VvYCBzdGFuZGFyZCBsaWJyYXJ5IHdpdGggYWRkaXRp b25hbCBjYWxjdWxhdGlvbnMgYW5kIGNvbnZlbmllbmNlIG1ldGhvZHMuCgojIyBSYXRpb25hbGUK CkluIG1vZGVybiBhcHBsaWNhdGlvbnMsIHdvcmtpbmcgd2l0aCBnZW9ncmFwaGljYWwgY29vcmRp bmF0ZXMgaXMgZnJlcXVlbnQuIFdlIHByb3Bvc2UgdG8gdGhpbmsgb2Ygc3VjaCBjb29yZGluYXRl cyAobmFtZWx5LCBgbGF0aXR1ZGUsIGxvbmdpdHVkZWAgcGFpcikgYXMgb2YgImJhc2ljIiB0eXBl IHRoYXQgc2hvdWxkIGJlIHN1cHBvcnRlZCBieSBzdGFuZGFyZCBsaWJyYXJ5IC0gdGhlIHNhbWUg d2F5IGFzIHdlIHN1cHBvcnQgYFRpbWVgL2BEYXRlYC9gRGF0ZVRpbWVgIGluc3RlYWQgb2YgaGF2 aW5nIGl0IGRlZmluZWQKYnkgdXNlci9nZW1zLgoKVGhpcyB0eXBlIGlzIHRvbyAic21hbGwiIHRv IGJlIGRlZmluZWQgYnkgc2VwYXJhdGUgZ2VtLCBzbywgYWxsIG9mIGV4aXN0aW5nIGdlbyBnZW1z IChHZW9LaXQsIFJHZW8sIEdlb1J1YnksIEdyYXRpY3VsZSBldGMuKSBkZWZpbmUgdGhlaXIgb3du IGBMYXRMbmdgLCBvciBgTG9jYXRpb25gLCBvciBgUG9pbnRgLCB3aGF0ZXZlci4KCk9uIG90aGVy IGhhbmQsIEFQSSBkZXNpZ24gZm9yIHRoaXMgInNtYWxsIiB0eXBlIGlzIHZhZ3VlIGVub3VnaCBm b3IgYWxsIHRob3NlIHNpbWlsYXIgdHlwZXMgdG8gYmUgaW5jb21wYXRpYmxlIGFuZCBicmVhayBz bWFsbCBoYWJpdHMgYW5kIGNvbnZlbnRpb25zIHdoZW4geW91IGNoYW5nZSBmcm9tIG9uZSBnZW8g bGlicmFyeSB0byBhbm90aGVyLCBvciB0cnkgdG8gdXNlIHNldmVyYWwKc2ltdWx0YW5lb3VzbHku CgpBZGRpdGlvbmFseSwgbWFueSBnZW1zIHNvbWVob3cgd29ya2luZyB3aXRoIGdlbyBjb29yZGlu YXRlcyAoZm9yIHdlYXRoZXIsIG9yIHRpbWV6b25lLCBvciBhbm90aGVyIHRhc2tzKSBnZW5lcmFs bHkgcHJlZmVyIG5vdCB0byBpbnRyb2R1Y2UgdHlwZSwgYW5kIGp1c3Qgd29yayB3aXRoIGBbbGF0 LCBsbmddYCBhcnJheSwgd2hpY2ggaXMgbm90IHZlcnkgY29udmVuaWVudCwgZmFpdGhmdWxseS4K ClNvLCBoYXZpbmcgImdlbyBjb29yZGluYXRlcyIgZnVuY3Rpb25hbGl0eSBpbiBzdGFuZGFyZCBs aWJyYXJ5IHNlZW1zIHJlYXNvbmFibGUgYW5kIHZhbHVhYmxlLgoKIyMgRXhpc3RpbmcvcmVmZXJl bmNlIHNvbHV0aW9ucwoKUnVieToKCiogW0dlb0tpdDo6TGF0TG5nXShodHRwOi8vd3d3LnJ1Ynlk b2MuaW5mby9naXRodWIvZ2Vva2l0L2dlb2tpdC9tYXN0ZXIvR2Vva2l0L0xhdExuZyk7CiogW1JH ZW86OkZlYXR1cmU6OlBvaW50XShodHRwOi8vd3d3LnJ1Ynlkb2MuaW5mby9nZW1zL3JnZW8vUkdl by9GZWF0dXJlL1BvaW50KSAod2l0aCBzZXZlcmFsICJwcml2YXRlIiBpbXBsZW1lbnRhdGlvbiBj bGFzc2VzKTsgUkdlbyBpbXBsZW1lbnRzIGZ1bGwgW09HQyBTaW1wbGUgRmVhdHVyZXNdKGh0dHBz Oi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpbXBsZV9GZWF0dXJlcykgc3BlY2lmaWNhdGlvbiwg c28sIGl0cyBwb2ludHMgaGF2ZSBgemAgYW5kIGBtYCBjb29yZGluYXRlcywgcHJvamVjdGlvbiBh bmQgbXVjaCBtb3JlOwoqIFtHcmF0aWN1bGU6OkxvY2F0aW9uXShodHRwOi8vd3d3LnJ1Ynlkb2Mu aW5mby9naXRodWIvY29sbGVjdGl2ZWlkZWEvZ3JhdGljdWxlL0dyYXRpY3VsZS9Mb2NhdGlvbikg KG5vdCBzdHJpY3RseSBhIGBbbGF0LGxuZ11gIHdyYXBwZXIpOwoqIFtSb3NhbWFyeTo6Tm9kZV0o aHR0cDovL3d3dy5ydWJ5ZG9jLmluZm8vZ2Vtcy9yb3NlbWFyeS8wLjQuNC9Sb3NlbWFyeS9Ob2Rl KSAoZm9sbG93cyBuYW1pbmcgY29udmVudGlvbiBvZiB1bmRlcmx5aW5nIE9wZW5TdHJlZXRNYXAg QVBJKTsKCk90aGVyIHNvdXJjZXM6CgoqIFB5dGhvbjogW2dlb3B5LlBvaW50XShodHRwOi8vZ2Vv cHkucmVhZHRoZWRvY3Mub3JnL2VuL2xhdGVzdC8jZ2VvcHkucG9pbnQuUG9pbnQpOwoqIFtFbGFz dGljU2VhcmNoXShodHRwczovL3d3dy5lbGFzdGljLmNvL2Jsb2cvZ2VvLWxvY2F0aW9uLWFuZC1z ZWFyY2gpIHVzZXMgaGFzaCB3aXRoICJsYXQiIGFuZCAibG9uIiBrZXlzOwoqIEdvb2dsZSBNYXBz IFtHZW9jb2RpbmcgQVBJXShodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3Vt ZW50YXRpb24vZ2VvY29kaW5nL2ludHJvI0dlb2NvZGluZ1Jlc3BvbnNlcykgdXNlcyBoYXNoIHdp dGggImxhdCIgYW5kICJsbmciIGtleXM7CiogUG9zdEdJUzogW3ByZXR0eSBjb21wbGljYXRlZF0o aHR0cDovL3Bvc3RnaXMubmV0L2RvY3MvbWFudWFsLTIuMi91c2luZ19wb3N0Z2lzX2RibWFuYWdl bWVudC5odG1sI1JlZk9iamVjdCkgIGhhcyBfZ2VvbWV0cmljYWxfIChwcm9qZWN0ZWQpIGFuZCBf Z2VvZ3JhcGhpY2FsXyAobGF0LCBsbmcpIHBvaW50cyBhbmQgc3R1ZmYuCgojIyBEZXNpZ24gZGVj aXNpb25zCgpXaGlsZSBkZXNpZ25pbmcgYEdlb2AgbGlicmFyeSwgb3VyIHJlZmVyZW5jZSBwb2lu dCB3YXMgc3RhbmRhcmQgYFRpbWVgIGNsYXNzIChhbmQsIHRvIGxlc3NlciBleHRlbnQsIGBEYXRl YC9gRGF0ZVRpbWVgKS4gSXQgaGFzIHRoaXMgcmVzcG9uc2liaWxpdGllczoKCiogc3RvcmVzIGRh dGEgaW4gc2ltcGxlIGludGVybmFsIGZvcm07CiogaGVscHMgdG8gcGFyc2UgYW5kIGZvcm1hdCBk YXRhIHRvIGFuZCBmcm9tIHN0cmluZ3M7CiogcHJvdmlkZXMgZWFzeSBhY2Nlc3MgdG8gbG9naWNh bCBjb21wb25lbnRzIG9mIGRhdGE7CiogYWxsb3dzIG1vc3Qgc2ltcGxlIGFuZCB1bmFtYmlndW91 cyBjYWxjdWxhdGlvbnMuCgoqKk1haW4gdHlwZSBuYW1lKio6IGFzIGZhciBhcyB3ZSBjYW4gc2Vl LCB0aGVyZSdzIG5vIGdvb2Qgc2luZ3VsYXIgbmFtZSBmb3IgYChsYXQsIGxuZylgIHBhaXIgY29u Y2VwdC4gQXMgbWVudGlvbmVkIGFib3ZlLCB0aGVyZSBjYW4gYmUgc2VlbiBuYW1lcyBsaWtlIGBM YXRMbmdgLCBvciBgTG9jYXRpb25gLCBvciBgUG9pbnRgOyBhbmQgaW4gbmF0dXJhbCBsYW5ndWFn ZQpqdXN0ICJjb29yZGluYXRlcyIgdXNlZCBmcmVxdWVudGx5LiBXZSBwcm9wb3NlIHRoZSBuYW1l IGBDb29yZGAsIHdoaWNoIGlzIHByZXR0eSBzaG9ydCwgZWFzeSB0byByZW1lbWJlciwgZGVtb25z dHJhdGVzIGludGVudGlvbnMgKGFuZCBsb29rcyBsaWtlIHNpbmd1bGFyLCBzbyB5b3UgY2FuIGhh dmUgIm9uZSBjb29yZCBvYmplY3QiIGFuZCAiYXJyYXkgb2YgY29vcmRzIiwKd2hpY2ggaXMgbm90 IDEwMCUgbGluZ3Vpc3RpY2FsbHkgY29ycmVjdCwgeWV0IGNvbnZlbmllbnQpLiBBbHRlcm5hdGl2 ZSBgUG9pbnRgIG5hbWUgc2VlbXMgdG8gYmUgdG9vIGFtYmlnb3VzLCBiZWluZyB1c2VkIGluIG1h bnkgY29udGV4dHMuCgpgR2VvOjpDb29yZGAgb2JqZWN0IGlzICoqaW1tdXRhYmxlKiosIHRoZXJl J3Mgbm8gc2VtYW50aWNhbCBzZW5zZSBpbiBgbG9jYXRpb24ubGF0aXR1ZGUgPSAuLi5gIG9yIHNv bWV0aGluZyBsaWtlIHRoaXMuCgoqKlVuaXRzKio6IGBHZW9gIGNhbGN1bGF0aW9ucyAoanVzdCBs aWtlIGBUaW1lYCBjYWxjdWxhdGlvbnMpIHByb3ZpZGUgbm8gdW5pdHMgb3B0aW9ucywganVzdCBy ZXR1cm5pbmcgbnVtYmVycyBtZWFzdXJlZCBpbiAiZGVmYXVsdCIgdW5pdHM6IG1ldHJlcyBmb3Ig ZGlzdGFuY2VzIChhcyB0aGV5IGFyZSBTSSB1bml0KSBhbmQgZGVncmVlcyBmb3IgYXppbXV0aC4g TGF0aXR1ZGUgYW5kIGxvbmdpdHVkZSBhcmUgc3RvcmVkIGluIGRlZ3JlZXMsIGJ1dCByYWRpYW5z IHZhbHVlcyBhY2Nlc3NvcnMgYXJlIHByb3ZpZGVkIChiZWluZyB3aWRlbHkgdXNlZCBpbiBnZW9k ZXN5IG1hdGgpLgoKQWxsIGNvb3JkaW5hdGVzIGFuZCBjYWxjdWxhdGlvbnMgYXJlIHRob3VnaHQg dG8gYmUgaW4gV0dTIDg0IGNvb3JkaW5hdGVzIHJlZmVyZW5jZSBzeXN0ZW0sIGJlaW5nIGN1cnJl bnQgc3RhbmRhcmQgZm9yIG1hcHMgYW5kIEdQUy4KClRoZXJlJ3MgaW50cm9kdWNlZCAqKmNvbmNl cHQgb2YgZ2xvYmUqKiB1c2VkIGludGVybmFsbHkgZm9yIGNhbGN1bGF0aW9ucy4gT25seSBnZW5l cmljIChzcGhlcmUpIGFuZCBFYXJ0aCBnbG9iZXMgYXJlIGltcGxlbWVudGVkLCBidXQgZm9yIDIw MTYgd2UgZmVlbCBsaWtlIGN1cnJlbnQgZGVzaWduIG9mIGJhc2ljIHR5cGVzIHNob3VsZCB0YWtl IGluIGNvbnNpZGVyYXRpb24KcG9zc2liaWxpdHkgb2Ygd3JpdGluZyBSdWJ5IHNjcmlwdHMgZm9y IE1hcnMgbWFwcyBhbmFseXNpcy4gT25seSBvbmUgZ2VvZGVzeSBmb3JtdWxhIGlzIGltcGxlbWVu dGVkIChWaW5jZW50eSwgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgb25lIG9mIHRoZSBtb3N0IHByZWNp c2UpLCBhcyBmb3Igc3RhbmRhcmQgbGlicmFyeSBjbGFzcyBpdCBjb25zaWRlcmVkIHVubmVjZXNz YXJ5IHRvIHByb3ZpZGUgdXNlciB3aXRoIGdlb2Rlc3kgZm9ybXVsYWUgb3B0aW9ucy4KCk5vICoq bWFwIHByb2plY3Rpb24qKiBtYXRoIHdhcyBhZGRlZCBpbnRvIGN1cnJlbnQgcHJvcG9zYWwsIGJ1 dCBpdCBtYXkgYmUgYSBnb29kIGRpcmVjdGlvbiBmb3IgZnVydGhlciB3b3JrLiBObyAqKmVsZXZh dGlvbioqIGRhdGEgY29uc2lkZXJlZCBlaXRoZXIuCgojIyBQcm9wb3NhbCBkZXRhaWxzCgojIyMg YEdlbzo6Q29vcmRgIGNsYXNzCgpSZXByZXNlbnRzIGBbbGF0aXR1ZGUsIGxvbmdpdHVkZV1gIHBh aXIuIExhdGl0dWRlIGlzIC05MCB0byArOTAgKGRlZ3JlZXMpLiBMb25naXR1ZGUgaXMgLTE4MCB0 byArMTgwLgoKQ2xhc3MgbWV0aG9kczoKCiogYG5ldyhsYXQsIGxuZylgIGNyZWF0ZXMgaW5zdGFu Y2UgZnJvbSB0d28gTnVtZXJpY3MgKGluIGRlZ3JlZXMpOwoqIGBuZXcobGF0OiwgbG5nOilgIGtl eXdvcmQgYXJndW1lbnRzIGZvcm0gb2YgYWJvdmU7CiogYG5ldyhsYXRkOiwgbGF0bTosIGxhdHM6 LCBsYXRoOiwgbG5nZDogbG5nbTosIGxuZ3M6IGxuZ2g6KWAgY3JlYXRlcyBpbnN0YW5jZSBmcm9t IGNvb3JkaW5hdGVzIGluIChkZWcsIG1pbiwgc2VjLCBoZW1pc3BoZXJlKSBmb3JtOyBoZW1pc3Bo ZXJlcyBhcmUgIk4iLyJTIiBmb3IgbGF0aXR1ZGUgYW5kICJXIi9FIiBmb3IgbG9uZ2l0dWRlOyBh bnkgY29tcG9uZW50IGV4Y2VwdCBmb3IgZGVncmVlcyBjYW4gYmUgb21pdHRlZDsgaWYgaGVtaXNw aGVyZSBpcyBvbWl0dGVkLCBpdCBpcyBkZWNpZGVkIGJ5IGRlZ3JlZXMgc2lnbiAobGF0OiBwb3Np dGl2ZSBpcyAiTiIsIGxuZzogcG9zaXRpdmUgaXMgIkUiKTsKKiBgZnJvbV9oKGhhc2gpYCBjcmVh dGVzIGluc3RhbmNlIGZyb20gaGFzaCB3aXRoIGAibGF0ImAgb3IgYCJsYXRpdHVkZSJgIGtleSBh bmQgYCJsb24iYCBvciBgImxuZyJgIG9yIGAibG9uZ2l0dWRlImAga2V5IChjYXNlLWluZGVwZW5k ZW50KTsKKiBgZnJvbV9yYWRpYW5zKHBoaSwgbGEpYCBjcmVhdGVzIGluc3RhbmNlIGZyb20gcmFk aWFuIHZhbHVlczsKKiBgc3RycGNvb3JkYCBwYXJzZXMgc3RyaW5nIGludG8gY29vcmRpbmF0ZXMg YnkgcHJvdmlkZWQgcGF0dGVybiAoc2VlIGJlbG93IGZvciBwYXR0ZXJuIGRlc2NyaXB0aW9uKTsK KiBgcGFyc2VfbGxgIHBhcnNlcyBjb29yZGluYXRlcyBzdHJpbmcgaW4gYCJmbG9hdCwgZmxvYXQi YCBmb3JtOwoqIGBwYXJzZV9kbXNgIHBhcnNlcyBjb29yZGluYXRlcyBzdHJpbmcgaW4gYGQgbSBz IGgsIGQgbSBzIGhgIGZvcm1hdCAoY29uc2lkZXJpbmcgc2V2ZXJhbCB3aWRlbHkgdXNlZCBzeW1i b2xzIGZvciBkZWdyZWVzLCBtaW51dGVzIGFuZCBzZWNvbmRzKTsKKiBgcGFyc2VgIHRyaWVzIHRv IHBhcnNlIHN0cmluZyBpbnRvIGNvb3JkaW5hdGVzIGZyb20gdmFyaW91cyBmb3JtYXRzLgoKSW5z dGFuY2UgbWV0aG9kczoKCiogYGxhdGAgYW5kIGBsbmdgLCByZXR1cm5pbmcgYEZsb2F0YHMsIHNp Z25lZDsKKiBgbGF0aXR1ZGVgIGFuZCBgbG9uZ2l0dWRlYCBhcyBhbiBhbGlhc2VzOyBgbG9uYCBh cyBhbiBhZGRpdGlvbmFsIGFsaWFzZXMgZm9yIGxvbmdpdHVkZTsKKiBgbGF0ZGAsIGBsYXRtYCwg YGxhdHNgLCBgbGF0aGA6IGRlZ3JlZSwgbWludXRlLCBzZWNvbmQsIGhlbWlzcGhlcmU7IGBsYXRk YCBhbmQgYGxhdG1gIGFyZSBgRml4bnVtYCwgYGxhdHNgIGlzIGBGbG9hdGAsIGBsYXRoYCBpcyAi TiIvIlMiOyBhbGwgbnVtYmVycyBhcmUgdW5zaWduZWQ7CiogYGxuZ2RgLCBgbG5nbWAsIGBsbmdz YCwgYGxuZ2hgOiB0aGUgc2FtZSBmb3IgbG9uZ2l0dWRlIChoZW1pc3BoZXJlIGlzICJXIi8iRSIp OwoqIGBsYXRkbXMobm9oZW1pc3BoZXJlID0gZmFsc2UpYCByZXR1cm5zIGBbbGF0ZCwgbGF0bSwg bGF0cywgbGF0aF1gIHdpdGggYG5vaGVtaXNwaGVyZWAgcGFyYW0gZXF1YWwgdG8gYGZhbHNlYCwg YW5kIGBbwrFsYXRkLCBsYXRtLCBsYXRzXWAgd2l0aCBgdHJ1ZWA7IHNhbWUgd2l0aCBgbG5nZG1z YCBmb3IgbG9uZ2l0dWRlOwoqIGBwaGlgIGFuZCBgz4ZgIGlzIGxhdGl0dWRlIGluIHJhZGlhbnMg KGhlbHBmdWwgZm9yIG1hdGgpLCBgbGFgIG9yIGDOu2AgaXMgbG9uZ2l0dWRlIGluIHJhZGlhbnMg KG5vdCBgbGFtYmRhYCB0byBub3QgY29uZnVzZSB3aXRoIEtlcm5lbCBtZXRob2QpOwoqIGB0b19z YCByZXR1cm5pbmcgc3RyaW5nIGxpa2UgIjUwLjAwNDQ0NCwzNi4yMzEzODkiIChnb29kIGZvciBt YXAgVVJMcyBjb25zdHJ1Y3Rpb24sIGZvciBleGFtcGxlKTsKKiBgdG9faChsYXQ6IDpsYXQsIGxu ZzogOmxuZylgIGNvbnZlcnRzIGNvb3JkIHRvIGhhc2ggKHdpdGggZGVzaXJlZCBrZXkgbmFtZXMp OwoqIGB0b19hYCBjb252ZXJ0cyBjb29yZCB0byBzaW1wbGUgYFtsYXQsIGxuZ11gIHBhaXI7Ciog YHN0cmZjb29yZChmb3JtYXRzdHIpYCBmb3IgY29tcGxleCBjb29yZGluYXRlIGZvcm1hdHRpbmcg KHNlZSBiZWxvdyBmb3IgZm9ybWF0IHN0cmluZyBkZXNjcmlwdGlvbik7CiogYGRpc3RhbmNlKG90 aGVyKWAgY2FsY3VsYXRlcyBkaXN0YW5jZSB0byBhbm90aGVyIHBvaW50IChpbiBtZXRyZXMpOwoq IGBhemltdXRoKG90aGVyKWAgY2FsY3VsYXRlcyBkaXJlY3Rpb24gdG8gdGFyZ2V0IChpbiBkZWdy ZWVzKTsKKiBgZW5kcG9pbnQoZGlyZWN0aW9uLCBhemltdXRoKWAgY2FsY3VsYXRlcyBmaW5hbCBw b2ludCBvZiB0aGUgbGluZSBvZiBgZGlzdGFuY2VgIG1ldHJlcyBnb2luZyBpbiBgYXppbXV0aGAg ZGlyZWN0aW9uIGZyb20gY3VycmVudCBwb2ludC4KCiMjIyMgYHN0cnBjb29yZGAvYHN0cmZjb29y ZGAKCkV4YW1wbGU6Cgp+fn5ydWJ5CmtoYXJraXYuc3RyZmNvb3JkKCclbGF0ZHXCsCVsYXRt4oCy JWxhdHPigLMgJWxhdGgsICVsbmdkdcKwJWxuZ23igLIlbG5nc+KAsyAlbG5naCcpCiMgPT4gIjUw wrAw4oCyMTbigLMgTiwgMzbCsDEz4oCyNTPigLMgRSIKfn5+CgpEaXJlY3RpdmVzOgoKKiBgJWxh dGAgLSBmdWxsIGxhdGl0dWRlLCBmbG9hdDsgY2FuIGJlIGZvcm1hdHRlZCB3aXRoIG1vcmUgY29u dHJvbCBsaWtlIGAlLjRsYXRgIChmb3VyIGRpZ2l0cyBhZnRlciBwb2ludCkgb3IgYCUrbGF0YCAo ZXhwbGljaXQgcGx1cyBzaWduIGZvciBwb3NpdGl2ZSBsYXRpdHVkZXMpOwoqIGAlbGF0ZGAgLSBs YXRpdHVkZSBkZWdyZWVzLCB1bnNpZ25lZCwgaW50ZWdlcgoqIGAlbGF0ZHNgIC0gbGF0aXR1ZGUg ZGVncmVlcywgc2lnbmVkCiogYCVsYXRtYCAtIGxhdGl0dWRlIG1pbnV0ZXMsIHVuc2lnbmVkLCBp bnRlZ2VyCiogYCVsYXRzYCAtIGxhdGl0dWRlIHNlY29uZHMsIHVuc2lnbmVkLCBpbnRlZ2VyLCBi dXQgY2FuIGJlIGZvcm1hdHRlZCBhcyBmbG9hdDogYCUuMmxhdHNgCiogYCVsYXRoYCAtIGxhdGl0 dWRlIGhlbWlzcGhlcmUsIG9uZSBsZXR0ZXIgKCJOIi8iUyIpCiogYCVsbmdgLCBgJWxuZ2RgLCBg JWxuZ2RzYCwgYCVsbmdzYCwgYCVsbmdoYCwgYCVsbmdIYCAtIHNhbWUgZm9yIGxvbmdpdHVkZQoq IGAlJWAgbGl0ZXJhbCBgJWAgc2lnbgoKIyMjIEN1cnJlbnQgaW1wbGVtZW50YXRpb24KClByb3Bv c2VkIGltcGxlbWVudGF0aW9uIGNhbiBiZSBmb3VuZCBhdCBodHRwczovL2dpdGh1Yi5jb20venZl cm9rL2dlb19jb29yZC4KCkl0IHdhcyBjcmVhdGVkIHdpdGggdGhvdWdodHMgb2Ygc3RhbmRhcmQg bGlicmFyeSwgc28sIGFsbCBkb2NzIGFyZSBpbiBSRG9jIGZvcm1hdCwgYW5kIHRlc3RzL3NwZWNz IGFyZSBpbiBtc3BlYy1jb21wYXRpYmxlIHJzcGVjIGZsYXZvdXIuCgoKCgotLSAKaHR0cHM6Ly9i dWdzLnJ1YnktbGFuZy5vcmcvCgpVbnN1YnNjcmliZTogPG1haWx0bzpydWJ5LWNvcmUtcmVxdWVz dEBydWJ5LWxhbmcub3JnP3N1YmplY3Q9dW5zdWJzY3JpYmU+CjxodHRwOi8vbGlzdHMucnVieS1s YW5nLm9yZy9jZ2ktYmluL21haWxtYW4vb3B0aW9ucy9ydWJ5LWNvcmU+Cg==