[#97086] [Ruby master Bug#16612] Enumerator::ArithmeticSequence#last with float range produces incorrect value — muraken@...
Issue #16612 has been updated by mrkn (Kenta Murata).
4 messages
2020/02/07
[#97095] [PATCH] Modify shebang of libexec/y2racc and libexec/racc2y. — Wang Mingyu <wangmy@...>
change /usr/local/bin/ruby to /usr/bin/env ruby.
3 messages
2020/02/08
[#97307] [Ruby master Feature#16663] Add block or filtered forms of Kernel#caller to allow early bail-out — headius@...
Issue #16663 has been reported by headius (Charles Nutter).
29 messages
2020/02/28
[ruby-core:97262] [Ruby master Feature#16511] Staged warnings and better compatibility for keyword arguments in 2.7.1
From:
daniel@...42.com
Date:
2020-02-25 18:54:22 UTC
List:
ruby-core #97262
SXNzdWUgIzE2NTExIGhhcyBiZWVuIHVwZGF0ZWQgYnkgRGFuMDA0MiAoRGFuaWVsIERlTG9ybWUp Lg0KDQoNCkBFcmVnb24gdGhhbmtzIGZvciB5b3VyIHJlcGx5Lg0KDQpJIHdvbid0IGJvdGhlciBt YWtpbmcgYSBwb2ludC1ieS1wb2ludCBjb3VudGVyYXJndW1lbnQgYmVjYXVzZSBpdCB3b3VsZCBi ZSByZWR1bmRhbnQgYW5kIGJvcmluZyBhdCB0aGlzIHBvaW50LiBTdWZmaWNlIGl0IHRvIHNheSB0 aGF0IEkgZmluZCBhbG1vc3QgZXZlcnkgc2luZ2xlIGxpbmUgeW91IHdyb3RlIHRvIGJlIGVpdGhl ciBmbGF3ZWQgb3IgZmFjdHVhbGx5IGluY29ycmVjdCBvciBzb21ldGhpbmcgSSBkaXNhZ3JlZSB3 aXRoLiBXZSBib3RoIGtub3cgd2hlcmUgd2Ugc3RhbmQsIHNvIGxldCdzIHNheSB3ZSBhZ3JlZSB0 byBkaXNhZ3JlZS4gRXhjZXB0IGZvciB0aGlzOg0KDQo+IEluIGdlbmVyYWwsIEkgZG91YnQgc3Vj aCBhIGxhcmdlIGNoYW5nZSB3b3VsZCBldmVuIGJlIGNvbnNpZGVyZWQgZm9yIDIuNyBvciBsYXRl ciBieSBtb3N0IE1SSSBjb21taXR0ZXJzDQoNCkluZGVlZCBJIGFncmVlLiBJJ20gbm90IGV4cGVj dGluZyB0byBoYXZlIGFueSBpbXBhY3QuIEkgb25seSBhZGRlZCB0aGlzIHByb3Bvc2FsIHRvIHRo ZSBkZXYgbWVldGluZyBsaXN0IGJlY2F1c2UsIGFmdGVyIHNwZW5kaW5nIHNvIG11Y2ggdGltZSBh bmQgZWZmb3J0IG9uIHRoaXMgKGRpZ2dpbmcgaW50byB0aGUgVk0gaW50ZXJuYWxzIHdhcyBzdXJw cmlzaW5nbHkgYWRkaWN0aXZlKSwgaXQgd291bGQgYmUgYWJzdXJkIG5vdCB0byBzZWUgaXQgdGhy b3VnaCB0byB0aGUgYml0dGVyIGVuZC4gQXQgbGVhc3QgbXkgY29uc2NpZW5jZSB3aWxsIGJlIGNs ZWFyIGFuZCBJJ2xsIGJlIGFibGUgdG8gc2F5IEkgZGlkIGV2ZXJ5dGhpbmcgSSBjb3VsZCBpZiB0 aGluZ3MgdHVybiBzb3VyLiBTaW5jZXJlbHkgaG9waW5nIHRoYXQgdGhleSBkb24ndC4NCg0KDQot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGZWF0dXJlICMxNjUxMTog U3RhZ2VkIHdhcm5pbmdzIGFuZCBiZXR0ZXIgY29tcGF0aWJpbGl0eSBmb3Iga2V5d29yZCBhcmd1 bWVudHMgaW4gMi43LjENCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xNjUxMSNj aGFuZ2UtODQzNzcNCg0KKiBBdXRob3I6IERhbjAwNDIgKERhbmllbCBEZUxvcm1lKQ0KKiBTdGF0 dXM6IE9wZW4NCiogUHJpb3JpdHk6IE5vcm1hbA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KQXMgYW4gYWx0ZXJuYXRpdmUgdG8gIzE2NDYzIGFuZCAjMTY0OTQgSSdk IGxpa2UgdG8gcHJvcG9zZSB0aGlzIGFwcHJvYWNoLCB3aGljaCBJIGJlbGlldmUgYWxsb3dzIGEg KiptdWNoKiogbW9yZSBmbGV4aWJsZSBwYXRoIGZvciBtaWdyYXRpb24gb2Yga2V5d29yZCBhcmd1 bWVudHMuDQoNClRoZSBpZGVhIGlzIHRvIGluZGljYXRlIGZvciBldmVyeSBIYXNoIG9iamVjdCBp ZiBpdCdzIGludGVuZGVkIHRvIHJlcHJlc2VudCBhIF9rZXl3b3JkXyBoYXNoIG9yIGEgX2RhdGFf IGhhc2guIFRoaXMgZXh0cmEgaW5mb3JtYXRpb24gaXMgdGhlbiB1c2VkIHRvIGdlbmVyYXRlIG1v cmUgZ3JhbnVsYXIgd2FybmluZ3MgZGVwZW5kaW5nIG9uIGEgdXNlcidzIGNvbXBhdGliaWxpdHkg bmVlZHMuDQoNClRoZSAia2V5d29yZG5lc3MiIG9mIGEgaGFzaCB3b3VsZCBiZSBpbmRpY2F0ZWQg YnkgYSAqKmZsYWcqKiBvbiB0aGUgSGFzaCBvYmplY3Q7IHRoaXMgaXMgYWxyZWFkeSBpbXBsZW1l bnRlZCBpbiAyLjcgYW5kIGlzIHRoZSBhcHByb2FjaCBmYXZvcmVkIGJ5IE1hdHouIExldCdzIGNh bGwgdGhpcyBmbGFnZ2VkIGhhc2ggYSAiS3dIYXNoIiwgYW5kIGEgbm9uLWZsYWdnZWQgaGFzaCBp cyBqdXN0IGEgIkhhc2giLiBOb3RlOiB0aGlzIGNvdWxkIGFsc28gYmUgaW1wbGVtZW50ZWQgdmlh IGEgKipzdWJjbGFzcyoqIG9mIEhhc2ggKEkgcGVyc29uYWxseSBmYXZvciB0aGlzIG9iamVjdC1v cmllbnRlZCBhcHByb2FjaCkgd2hpY2ggd2FzIHRoZSBvcmlnaW5hbCBpZGVhIGluIHRoaXMgcHJv cG9zYWwuDQoNCkknbGwgdHJ5IHRvIGRlc2NyaWJlIHRoZSBpZGVhIGluIGRldGFpbCBieSBicmVh a2luZyBpdCBkb3duIGludG8gZmlndXJhdGl2ZSBzdGVwcy4gKFNraXAgdG8gIlB1dHRpbmcgaXQg YWxsIHRvZ2V0aGVyIiBmb3IgdGhlIFRMO0RSIHZlcnNpb24uKSBJbWFnaW5lIHN0YXJ0aW5nIHdp dGggcnVieSAyLjYgYW5kIHRoZW46DQoNCiMjIyBTdGVwIDENCg0KV2hlbiBhIGRvdWJsZS1zcGxh dCBvciBhIGJyYWNlLWxlc3MgaGFzaCBpcyB1c2VkLCBpbnN0ZWFkIG9mIGEgSGFzaCBpdCBjcmVh dGVzIGEgS3dIYXNoLg0KDQpgYGBydWJ5DQpkZWYgZm9vKHgpIHggZW5kDQpmb28oazoxKS5jbGFz cyAgICAgICM9PiBLd0hhc2gNCmZvbygqKmhhc2gpLmNsYXNzICAgIz0+IEt3SGFzaA0KW2s6MV0u bGFzdC5jbGFzcyAgICAjPT4gS3dIYXNoDQpbKipoYXNoXS5sYXN0LmNsYXNzICM9PiBLd0hhc2gN CnsqKmhhc2h9LmNsYXNzICAgICAgIz0+IEhhc2gNCmBgYA0KDQpBdCB0aGlzIHBvaW50IHdlIGhh dmVuJ3QgaW50cm9kdWNlZCBhbnkgcmVhbCBjaGFuZ2UuIEV2ZXJ5dGhpbmcgdGhhdCB3b3JrZWQg YmVmb3JlIGlzIHN0aWxsIHdvcmtpbmcgdGhlIHNhbWUgd2F5Lg0KKFdpdGggYSBtaW5vciBleGNl cHRpb24gaWYgdXNpbmcgdGhlIHN1YmNsYXNzIGFwcHJvYWNoOiB1bnVzdWFsIGNvZGUgbGlrZSBg a3cuY2xhc3MgPT0gSGFzaGAgd291bGQgbm93IHJldHVybiBmYWxzZS4pDQoNCiMjIyBTdGVwIDIN Cg0KV2hlbiB0aGVyZSBpcyBhbWJpZ3VpdHkgZHVlIHRvIG9wdGlvbmFsIHZzIGtleXdvcmQgYXJn dW1lbnQsIHdlIHJlbHkgb24gdGhlIGxhc3QgYXJndW1lbnQgYmVpbmcgSGFzaCBvciBLd0hhc2gg dG8gZGlzYW1iaWd1YXRlLg0KDQpgYGBydWJ5DQpkZWYgZm9vKHg9bmlsLCAqKmt3KQ0KICBbeCxr d10NCmVuZA0KZm9vKHtrOjF9KSAjPT4gW3trOjF9LHt9XQ0KZm9vKGs6MSkgICAjPT4gW25pbCx7 azoxfV0NCmBgYA0KDQpUaGlzIGlzIHRoZSBfbWluaW11bV8gYW1vdW50IG9mIGluY29tcGF0aWJp bGl0eSByZXF1aXJlZCB0byBzb2x2ZSBBTEwgYnVncyBwcmV2aW91c2x5IHJlcG9ydGVkIHdpdGgg a2V5d29yZCBhcmd1bWVudHMuICgjODA0MCwgIzgzMTYsICM5ODk4LCAjMTA4NTYsICMxMTIzNiwg IzExOTY3LCAjMTIxMDQsICMxMjcxNywgIzEyODIxLCAjMTMzMzYsICMxMzY0NywgIzE0MTMwLCBl dGMuKSANCg0KVGhlIHdhcm5pbmdzIGZvciB0aGlzIHdvdWxkIGJlIGFib3V0IGFuIGltcGVuZGlu ZyBfY2hhbmdlIG9mIGJlaGF2aW9yXyBpbiB0aGUgX25leHQgcnVieSB2ZXJzaW9uXywgd2hlcmUg YGZvbyh7azoxfSlgIGlzIG5vIGxvbmdlciBpbnRlcnByZXRlZCBhcyBrZXl3b3JkIGFyZ3VtZW50 Lg0KDQojIyMgU3RlcCAzDQoNCkludHJvZHVjZSBhZGRpdGlvbmFsIGluY29tcGF0aWJpbGl0eSB0 byBpbXByb3ZlIGNsYXJpdHkgb2YgZGVzaWduLiBIZXJlIHdlIGRlcHJlY2F0ZSB0aGUgYXV0b21h dGljIGNvbnZlcnNpb24gb2YgSGFzaCB0byBrZXl3b3JkIGFyZ3VtZW50OyBvbmx5IEt3SGFzaCBp cyBhY2NlcHRlZC4gV2l0aCBhIGRlcHJlY2F0aW9uL3dhcm5pbmcgcGhhc2UsIG9mIGNvdXJzZS4g VGhlICJhdXRvbWF0aWMiIHByb21vdGlvbiBvZiBhIEt3SGFzaCB0byBhIGtleXdvcmQgYXJndW1l bnQgZm9sbG93cyB0aGUgc2FtZSBydWxlcyBhcyBhIEhhc2ggaW4gMi42OyBzaW5jZSB0aGUgS3dI YXNoIGlzIGNvbmNlcHR1YWxseSBpbnRlbmRlZCB0byByZXByZXNlbnQga2V5d29yZCBhcmd1bWVu dHMsIHRoaXMgY29udmVyc2lvbiBtYWtlcyBzZW5zZSBpbiBhIHdheSB0aGF0IGEgbm9ybWFsIGRh dGEgSGFzaCBkb2Vzbid0LiBXZSd2ZSB0YWtlbiB0aGUgImxhc3QgcG9zaXRpb25hbCBoYXNoIiBj b25jZXB0IGFuZCBzcGxpdCBpdCBpbnRvICJjb25jZXB0dWFsbHkgYSBoYXNoIiBhbmQgImNvbmNl cHR1YWxseSBrZXl3b3JkIGFyZ3VtZW50cyIuIF9Nb3N0IGltcG9ydGFudGx5XywgYWxsIHRoZSBj aGFuZ2VzIHJlcXVpcmVkIHRvIHNpbGVuY2UgdGhlc2Ugd2FybmluZ3MgYXJlIF9jb21wYXRpYmxl IHdpdGggMi42Xy4NCg0KYGBgcnVieQ0KZGVmIGZvbyh4LCAqKmt3KTsgZW5kDQpmb28oazoxKSAg ICAgICMgQXJndW1lbnRFcnJvciBiZWNhdXNlIHggbm90IHNwZWNpZmllZA0KZm9vKDEsIHtrOjF9 KSAjIEFyZ3VtZW50RXJyb3IgYmVjYXVzZSB0b28gbWFueSBhcmd1bWVudHM7IEhhc2ggY2Fubm90 IGJlIGNvbnZlcnRlZCB0byBLd0hhc2hzDQpvcHRzID0gW2s6MV0uZmlyc3QNCmZvbyhvcHRzKSAg ICAgIyBvcHRzIGlzIGEgS3dIYXNoIHRoZXJlZm9yZSB1c2VkIGFzIGtleXdvcmQgYXJndW1lbnQ7 IEFyZ3VtZW50RXJyb3IgYmVjYXVzZSB4IG5vdCBzcGVjaWZpZWQNCmZvbygxLCBvcHRzKSAgIyBv cHRzIGlzIGEgS3dIYXNoIHRoZXJlZm9yZSB1c2VkIGFzIGtleXdvcmQgYXJndW1lbnQNCmBgYA0K DQpUaGUgd2FybmluZ3MgZm9yIHRoaXMgd291bGQgYmUgYWJvdXQgdXBjb21pbmcgX2Vycm9yc18g Zm9yIHBvc2l0aW9uYWwgYXJndW1lbnRzOiBgZm9vKHg6MSlgIHdpbGwgYmUgImdpdmVuIDAsIGV4 cGVjdGVkIDEiIGFuZCBgZm9vKDEse3g6Mn0pYCB3aWxsIGJlICJnaXZlbiAyLCBleHBlY3RlZCAx Ii4gU3VjaCBlcnJvcnMgYXJlIHVzZWZ1bCB3aGVuIGRldmVsb3BpbmcsIGJ1dCB0aGVyZSBpcyBu byBuZXcgZnVuY3Rpb25hbGl0eSBwZXIgc2UsIGp1c3QgYSBzdHJpY3RlciBzeW50YXguIFNvIGl0 J3MgbGVzcyBpbXBvcnRhbnQgdG8gZXNjYWxhdGUgdG8gYW4gZXJyb3IgYW5kIHdlIGNhbiBrZWVw IHRoZSB3YXJuaW5ncyBmb3IgbG9uZ2VyIHRoYW4gU3RlcCAyLg0KDQpBdCB0aGlzIHBvaW50IHdl IGhhdmUgYWNoaWV2ZWQgX2FsbW9zdC1mdWxsXyAqKmR5bmFtaWMqKiBrZXl3b3JkIHNlcGFyYXRp b24sIGFzIG9wcG9zZWQgdG8gdGhlIGN1cnJlbnQgX2FsbW9zdC1mdWxsXyAqKnN0YXRpYyoqIGFw cHJvYWNoLiBJIHdhbnQgdG8gbWFrZSB0aGUgcG9pbnQgaGVyZSB0aGF0LCB5ZXMsIGtleXdvcmQg YXJndW1lbnRzICoqYXJlKiogc2VwYXJhdGVkLCBpdCdzIGp1c3QgYSBkaWZmZXJlbnQgcGFyYWRp Z20uIFdpdGggc3RhdGljIHNlcGFyYXRpb24sIGEga2V5d29yZCBhcmd1bWVudCBpcyBkZWZpbmVk IGxleGljYWxseSBieSBhIGRvdWJsZS1zcGxhdC4gV2l0aCBkeW5hbWljIHNlcGFyYXRpb24sIGEg a2V5d29yZCBhcmd1bWVudCBpcyB3aGVuIHRoZSBsYXN0IGFyZ3VtZW50IGlzIGEgS3dIYXNoLiB7 e05vdGU6IEknbSBzYXlpbmcgImFsbW9zdC1mdWxsIiBiZWNhdXNlIEt3SGFzaCBpcyBub3QgcHJv bW90ZWQgdG8ga2V5d29yZHMgaW4gYGRlZiBmb28oYSwqKmt3KTtlbmQ7Zm9vKHg6MSlgIGFuZCBi ZWNhdXNlIHN0YXRpYyBrZXl3b3JkcyBhcmUgYXV0by1kZW1vdGVkIHRvIHBvc2l0aW9uYWwgaW4g YGRlZiBmb28oYSk7ZW5kO2Zvbyh4OjEpYH19DQoNCkFueSBmb3JtIG9mIGRlbGVnYXRpb24gd29y a3Mgd2l0aCBubyBjaGFuZ2UgcmVxdWlyZWQuIFRoaXMgcHJlc2VydmVzIHRoZSBiZWhhdmlvciBv ZiAyLjYgYnV0IG9ubHkgZm9yIEt3SGFzaCBvYmplY3RzLiBUaGlzIGlzIHNpbWlsYXIgdG8gaGF2 aW5nIDIuNyB3aXRoIGBydWJ5Ml9rZXl3b3Jkc2AgZW5hYmxlZCBieSBkZWZhdWx0LiBCdXQgYWxz byBkaWZmZXJlbnQgaW4gc29tZSB3YXlzOyBtb3N0IG5vdGFibHkgaXQgYWxsb3dzIHRoZSBjYXNl IHNob3duIGluICMxNjQ5NCB0byB3b3JrIGJ5IGRlZmF1bHQ6DQoNCmBgYHJ1YnkNCmFycmF5ID0g W3g6MV0NCmFycmF5LnB1c2goeDoyKQ0KYXJyYXkubWFweyB8eDp8IHggfSAjPT4gWzEsMl0NClt7 eDozfV0ubWFweyB8eDp8IHggfSAjPT4gYnV0IHRoaXMgd2FybnMsIGFzIGl0IHNob3VsZA0KYGBg DQoNClRoZSBjdXJyZW50IGFwcHJvYWNoIGRvZXMgbm90IGFsbG93IHRoaXMgdG8gd29yayBhdCBh bGwuIFRoZSBzb2x1dGlvbiBwcm9wb3NlZCBpbiAjMTY0OTQgaGFzIGFsbCB0aGUgc2FtZSBmbGF3 cyBhcyBIYXNoLWJhc2VkIGtleXdvcmQgYXJndW1lbnRzOyB3aGF0IGhhcHBlbnMgdG8gYGVhY2h7 IHx4PW5pbCwqKmt3fCB9YCA/IFRoaXMgc29sdXRpb24gYWxsb3dzIGEgS3dIYXNoIHRvIGJlIGNv bnZlcnRlZCB0by4uLiBrZXl3b3Jkcy4gVmVyeSB1bnN1cnByaXNpbmcuDQoNCkdpdmVuIHRoYXQg cnVieSBpcyBhIGR5bmFtaWNhbGx5LXR5cGVkIGxhbmd1YWdlIEkgZmVlbCB0aGF0IGR5bmFtaWMg dHlwaW5nIG9mIGtleXdvcmRzIGlmIGEgbW9yZSBuYXR1cmFsIGZpdCB0aGFuIHN0YXRpYyB0eXBp bmcuIEJ1dCBJIHJlYWxpemUgdGhhdCBtYW55IGRpc2FncmVlIHdpdGggdGhhdCwgd2hpY2ggaXMg d2h5IHdlIGNvbnRpbnVlIHRvLi4uDQoNCiMjIyBTdGVwIDQNCg0KSW50cm9kdWNlIGFkZGl0aW9u YWwgaW5jb21wYXRpYmlsaXR5IHRvIHJlYWNoIHN0YXRpYy9sZXhpY2FsIHNlcGFyYXRpb24gb2Yg a2V5d29yZCBhcmd1bWVudHMuIEhlcmUgd2UgcmVxdWlyZSB0aGF0IGV2ZW4gYSBLd0hhc2ggc2hv dWxkIGJlIHBhc3NlZCB3aXRoIGEgZG91YmxlLXNwbGF0IGluIG9yZGVyIHRvIHF1YWxpZnkgYXMg YSBrZXl3b3JkIGFyZ3VtZW50Lg0KDQpgYGBydWJ5DQpkZWYgYmFyKCoqa3cpDQplbmQNCmRlZiBm b28oKiprdykNCiAgYmFyKGt3KSAgICM9PiBlcnJvcjsgS3dIYXNoIHBhc3NlZCB3aXRob3V0ICoq DQogIGJhcigqKmt3KSAjPT4gb2sNCmVuZA0KYGBgDQoNCkF0IHRoaXMgcG9pbnQgd2UndmUgcmVh Y2hlZCB0aGUgc2FtZSBiZWhhdmlvciBhcyAyLjcuIERlbGVnYXRpb24gbmVlZHMgdG8gYmUgZml4 ZWQsIGJ1dCBhcyB3ZSBrbm93IHRoZSBjaGFuZ2VzIHJlcXVpcmVkIHRvIHNpbGVuY2UgdGhlc2Ug d2FybmluZ3MgYXJlICoqbm90KiogY29tcGF0aWJsZSB3aXRoIDIuNiBvciAyLjcuIFRoZSB3YXJu aW5ncyBmb3IgdGhpcyBhcmUgX2Z1bmRhbWVudGFsbHkgbm90IGZpeGFibGVfIGFzIGxvbmcgYXMg U3RlcCAyIGhhcyBub3QgYmVlbiBmaXhlZC4gVGhpcyBpcyB0aGUgY29yZSByZWFzb24gd2h5IGBy dWJ5Ml9rZXl3b3Jkc2AgaXMgY3VycmVudGx5IG5lY2Vzc2FyeSBpbiAyLjcuIFNvIGluIHRoZSB2 ZXJzaW9uIGFmdGVyIDIuNyB3ZSBjYW4gZW5hYmxlIHRoZXNlIHdhcm5pbmdzIGJ5IGRlZmF1bHQg c2luY2UgaXQncyBub3cgcG9zc2libGUgdG8gZml4IGRlbGVnYXRpb24gdG8gdXNlIHN0YXRpYyBr ZXl3b3Jkcy4gRXhjZXB0IHRoYXQgZ2VtIGF1dGhvcnMgd2hvIG5lZWQgdG8gc3RheSBjb21wYXRp YmxlIHdpdGgg4omkMi43IGNhbm5vdCB5ZXQgbWFrZSB0aGVzZSBjaGFuZ2VzLCBzbyB3ZSBpbnRy b2R1Y2UgYSB3YXkgdG8gX3NpbGVuY2UgKipvbmx5KiogdGhlc2UgIlN0ZXAgNCIgd2FybmluZ3Nf LCBmb3IgcGVvcGxlIHdobyBuZWVkIHRvIHJlbWFpbiBjb21wYXRpYmxlIHdpdGgg4omkMi43LiBB bmQgd2Uga2VlcCB0aGVtIGFzIHdhcm5pbmdzIGluc3RlYWQgb2YgZXJyb3JzIHVudGlsIHJ1Ynkg Mi43IGlzIEVPTC4NCg0KU28gaW5zdGVhZCBvZiBoYXZpbmcgdG8gdXBkYXRlIGEgYnVuY2ggb2Yg cGxhY2VzIHdpdGggYHJ1YnkyX2tleXdvcmRzYCBqdXN0IHRvIHRlbXBvcmFyaWx5IHNpbGVuY2Ug d2FybmluZ3MsIGl0J3MgYSBzaW5nbGUgZmxhZyBsaWtlIGBXYXJuaW5nWzpydWJ5M19rZXl3b3Jk c11gLiBPbmNlIHJ1YnkgMi43IGlzIEVPTCB0aGVzZSBiZWNvbWUgY29udHJvbGxlZCBieSBgV2Fy bmluZ1s6ZGVwcmVjYXRlZF1gIHdoaWNoIHRlbGxzIHBlb3BsZSB0aGV5ICoqaGF2ZSoqIHRvIGZp eCB0aGVpciBjb2RlLiBXaGljaCBpcyBqdXN0IGxpa2UgdGhlIGV2ZW50dWFsIGRlcHJlY2F0aW9u IG9mIGBydWJ5Ml9rZXl3b3Jkc2AsIGp1c3Qgd2l0aG91dCB0aGUgYnVzeSB3b3JrIG9mIGFkZGlu ZyBgcnVieTJfa2V5d29yZHNgIHN0YXRlbWVudHMgaW4gdGhlIGZpcnN0IHBsYWNlLiBCdXQgYWdh aW4sIHRoaXMgaW50cm9kdWNlcyBubyBuZXcgZnVuY3Rpb25hbGl0eSwganVzdCBhIHN0cmljdGVy IHN5bnRheC4gU28gd2UgY2FuIHBsYXkgbmljZSBhbmQgbGVhdmUgdGhlIHdhcm5pbmdzIGZvciBh IGZldyB5ZWFycyBiZWZvcmUgY2hhbmdpbmcgdG8gZXJyb3JzLg0KDQpUaGUgcXVlc3Rpb24gcmVt YWlucyBvZiBob3cgdG8gaGFuZGxlICMxNjQ5NCBoZXJlLiBFaXRoZXIgZGlzYWxsb3cgaXQgZW50 aXJlbHksIGJ1dCBJIHRoaW5rIHRoYXQgd291bGQgYmUgYSBzaGFtZS4gT3IganVzdCBsaWtlICMx NjQ5NCBzdWdnZXN0cywgYWxsb3cgaGFzaCB1bnBhY2tpbmcgaW4gbm9uLWxhbWJkYSBQcm9jLiBF eGNlcHQgdGhhdCBub3cgaXQgY2FuIGJlIGEgS3dIYXNoIGluc3RlYWQgb2YgYSBIYXNoLCB3aGlj aCBhdCBsZWFzdCBwcmVzZXJ2ZXMgZHluYW1pYyBrZXl3b3JkIHNlcGFyYXRpb24uDQoNCiMjIFB1 dHRpbmcgaXQgYWxsIHRvZ2V0aGVyIChUTDtEUikNCg0KVGhlIGlkZWEgaXMgX25vdF8gdG8gcmVp bXBsZW1lbnQga2V5d29yZCBhcmd1bWVudCBzZXBhcmF0aW9uOyBhbGwgdGhhdCBpcyBuZWVkZWQg aXMgdG8gaW1wbGVtZW50IHRoZSB0aGluZ3MgYWJvdmUgdGhhdCBhcmUgbm90IGluIDIuNzoNCiog Q3JlYXRlIGEgS3dIYXNoIG9iamVjdCBmb3IgYnJhY2UtbGVzcyBhbmQgZG91YmxlLXNwbGF0dGVk IGhhc2hlcy4NCiogRGlmZmVyZW50aWF0ZSB0aGUgdmFyaW91cyB0eXBlcyBvZiB3YXJuaW5ncyBh bmQgYWxsb3cgdG8gdG9nZ2xlIG9uL29mZiBzZXBhcmF0ZWx5DQogICogU3RlcCAyIHdhcm5pbmdz IF9tdXN0XyBiZSBmaXhlZCBub3c7IGNhbm5vdCB0b2dnbGUgb2ZmDQogICogU3RlcCAzIHdhcm5p bmdzIF9zaG91bGRfIGJlIGZpeGVkIG5vdyBidXQgeW91IGRvbid0IGFic29sdXRlbHkgbmVlZCB0 byB1cGdyYWRlIHlvdXIgZ2VtcyBqdXN0IGZvciB0aGF0DQogICogU3RlcCA0IHdhcm5pbmdzIF9z aG91bGRfIGJlIGZpeGVkIGluIG5leHQgdmVyc2lvbiB1bmxlc3MgeW91IG5lZWQgdG8gc3VwcG9y dCDiiaQyLjcNCg0KSSB0aGluayB0aGF0J3MgYWxsLCByZWFsbHkuLi4NCg0KIyMjIFByb3MNCiog Q2xlYW5lciB3YXkgdG8gc29sdmUgIzE2NDk0DQoqIEJldHRlciBjb21wYXRpYmlsaXR5IChhdCBs ZWFzdCB1bnRpbCAyLjYgaXMgRU9MKQ0KICAgKiBkZWxlZ2F0aW9uDQogICAqIHN0b3JpbmcgYW4g YXJndW1lbnQgbGlzdCB0aGF0IGVuZHMgd2l0aCBhIEt3SGFzaA0KICAgKiBkZXN0cnVjdHVyaW5n IGl0ZXJhdGlvbiAoIzE2NDk0KQ0KKiBXZSBjYW4gYXZvaWQgdGhlICJ1bmZvcnR1bmF0ZSBjb3Ju ZXIgY2FzZSIgYXMgZGVzY3JpYmVkIGluIHRoZSBbcmVsZWFzZSBub3Rlc10oaHR0cHM6Ly93d3cu cnVieS1sYW5nLm9yZy9lbi9uZXdzLzIwMTkvMTIvMTIvc2VwYXJhdGlvbi1vZi1wb3NpdGlvbmFs LWFuZC1rZXl3b3JkLWFyZ3VtZW50cy1pbi1ydWJ5LTMtMC8pDQogICAqIGluIDIuNyBvbmx5IGRv IG5vdCBvdXRwdXQgIlN0ZXAgNCIgd2FybmluZ3MsIGxlYXZlIGRlbGVnYXRpb24gbGlrZSBpdCB3 YXMNCiAgICogaW4gMi44IHRoZSAiU3RlcCAzIiB3YXJuaW5ncyBoYXZlIGJlZW4gZml4ZWQgYW5k IGEgSGFzaCB3aWxsIG5vdCBiZSBjb252ZXJ0ZWQgdG8ga2V5d29yZCBhcmd1bWVudHMNCiAgICog ZGVsZWdhdGlvbiBjYW4gbm93IHNhZmVseSBiZSBmaXhlZCB0byB1c2UgdGhlIGAqKmAgc3ludGF4 DQoqIHJ1YnkyX2tleXdvcmRzIGlzIG5vdCByZXF1aXJlZCwgd2hpY2ggaXMgZGVzaXJhYmxlIGJl Y2F1c2UNCiAgICogaXQncyBhIGhpZGRlbiBmbGFnIF9oYWNrXw0KICAgKiBpdCByZXF1aXJlcyB0 byBjaGFuZ2UgdGhlIGNvZGUgbm93LCBhbmQgY2hhbmdlIGl0IF9hZ2Fpbl8gd2hlbiBydWJ5Ml9r ZXl3b3JkcyBpcyBkZXByZWNhdGVkOyB0d2ljZSB0aGUgd29yazsgdHdpY2UgdGhlIGdlbSB1cGdy YWRlcw0KICAgKiBpdCB3YXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBvbmx5IGZvciBwZW9wbGUgd2hv IG5lZWQgdG8gc3VwcG9ydCAyLjYgb3IgYmVsb3csIGJ1dCBpdCdzIGJlaW5nIG1pc3VuZGVyc3Rv b2QgYXMgYW4gYWNjZXB0YWJsZSB3YXkgdG8gZml4IGRlbGVnYXRpb24gaW4gZ2VuZXJhbA0KICAg KiB0aGVyZSdzIHRoZSBub24temVybyByaXNrIHRoYXQgcnVieTJfa2V5d29yZHMgd2lsbCBuZXZl ciBiZSByZW1vdmVkLCBsZWF2aW5nIHVzIHdpdGggYSBwZXJtYW5lbnQgImhhY2sgbW9kZSINCiAg ICAgICogZHluYW1pYyBrZXl3b3JkcyBhcmUgYnkgZmFyIHByZWZlcmFibGUgdG8gc3VwcG9ydGlu ZyBydWJ5Ml9rZXl3b3JkcyBmb3JldmVyDQoqIExpa2VseSBfYmV0dGVyIHBlcmZvcm1hbmNlXywg YXMgdGhlIEt3SGFzaCBjbGFzcyBjYW4gYmUgb3B0aW1pemVkIHNwZWNpZmljYWxseSBmb3IgdGhl IGNoYXJhY3RlcmlzdGljcyBvZiBrZXl3b3JkIGFyZ3VtZW50cy4NCiogTW9yZSBmbGV4aWJsZSBt aWdyYXRpb24NCiAgICogQWxsb3cgbW9yZSB0aW1lIHRvIHVwZ3JhZGUgdGhlIGhhcmQgc3R1ZmYg aW4gU3RlcCA0DQogICAqIENhbiByZWFjaCB0aGUgX3NhbWVfIGdvYWwgYXMgdGhlIGN1cnJlbnQg c3RhdGljIGFwcHJvYWNoDQogICAqIExhcmdlciAic3VwcG9ydCB6b25lIiBodHRwczovL3hrY2Qu Y29tLzIyMjQvDQogICAqIEluc3RlYWQgb2Ygd2lkZS1yYW5naW5nIGluY29tcGF0aWJpbGl0aWVz IGFsbCBhdCBvbmNlLCB0aGVyZSdzIHRoZSBfcG9zc2liaWxpdHlfIG9mIG1ha2luZyBpdCBmaW5l ci1ncmFpbmVkIGFuZCBtb3JlIGdyYWR1YWwNCiAgICAgICogcnVieWlzdHMgY2FuIF9jaG9vc2Vf IHRvIG1pZ3JhdGUgYWxsIGF0IG9uY2Ugb3IgaW4gc21hbGxlciBjaHVua3MNCiAgICogSXQgaGVk Z2VzIHRoZSByaXNrcyBieSBrZWVwaW5nIG1vcmUgcG9zc2liaWxpdGllcyBvcGVuIGZvciBub3cu DQogICAqIEl0IGFsbG93cyB0byBjb3Atb3V0IGF0IFN0ZXAgMyBpZiBTdGVwIDQgdHVybnMgb3V0 IHRvbyBoYXJkIGJlY2F1c2UgaXQgYnJlYWtzIHRvbyBtdWNoIHN0dWZmDQoNCiMjIyBDb25zDQoq IEl0IGFsbG93cyB0byBjb3Atb3V0IGF0IFN0ZXAgMyBpZiBTdGVwIDQgdHVybnMgb3V0IHRvbyBo YXJkIGJlY2F1c2UgaXQgYnJlYWtzIHRvbyBtdWNoIHN0dWZmDQoNCg0KDQoNCi0tIA0KaHR0cHM6 Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQoKVW5zdWJzY3JpYmU6IDxtYWlsdG86cnVieS1jb3JlLXJl cXVlc3RAcnVieS1sYW5nLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgo8aHR0cDovL2xpc3RzLnJ1 YnktbGFuZy5vcmcvY2dpLWJpbi9tYWlsbWFuL29wdGlvbnMvcnVieS1jb3JlPgo=