[ruby-core:95039] [Ruby master Feature#16168] Add keyword argument separation to C functions using rb_scan_args
From:
merch-redmine@...
Date:
2019-09-22 22:21:32 UTC
List:
ruby-core #95039
SXNzdWUgIzE2MTY4IGhhcyBiZWVuIHVwZGF0ZWQgYnkgamVyZW15ZXZhbnMwIChKZXJlbXkgRXZh bnMpLg0KDQoNCkF0IHRoZSBsYXN0IGRldmVsb3BlciBtZWV0aW5nLCBtYXR6IHJlcXVlc3RlZCB0 aGF0IGluc3RlYWQgb2YgImsiLCAiZSIsIGFuZCAibiIgbW9kaWZpZXJzIHRvIGByYl9zY2FuX2Fy Z3NgLCBhIG5ldyBgcmJfc2Nhbl9hcmdzX2t3YCBtZXRob2QgYmUgYWRkZWQgZm9yIHRoYXQgYmVo YXZpb3IuICBJIGhhdmUgdXBkYXRlZCB0aGUgcHVsbCByZXF1ZXN0IHRvIGFkZCB0aGF0IG1ldGhv ZC4NCg0KbWF0eiBhbHNvIGhhZCBhIHF1ZXN0aW9uOg0KDQpgYGANCldoeSBpcyByYl9zY2FuX2Fy Z3MoIjoiKSB0cmVhdGVkIGFzIGRlZiBmb28ob3B0ID0ge30pPyBJZiB0aGVyZSBpcyBubyBzcGVj aWFsIHJlYXNvbiwgSeKAmWQgbGlrZSB0byBoYW5kbGUgaXQgYXMgZGVmIGZvbygqKm9wdCkNCmBg YA0KDQpUaGUgYmVuZWZpdCBvZiB0cmVhdGluZyBpdCBhcyBgb3B0ID0ge31gIGlzIHRoYXQgaXQg aXMgYmV0dGVyIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIGNvZGUs IGJlY2F1c2UgeW91IGNhbiBjb250aW51ZSB0byBwYXNzIGluIGEgaGFzaCBpbnN0ZWFkIG9mIGEg a2V5d29yZCBzcGxhdC4gIFBhc3NpbmcgaW4gYSBoYXNoIGlzIGFsc28gYmV0dGVyIGZvciBwZXJm b3JtYW5jZSwgYXMgYSBrZXl3b3JkIHNwbGF0IHJlcXVpcmVzIGEgaGFzaCBhbGxvY2F0aW9uLg0K DQpUaGUgYmVuZWZpdCBvZiB0cmVhdGluZyBpdCBhcyBgKipvcHRgIGlzIHRoYXQgeW91IGNvdWxk IGFkZCBvcHRpb25hbCBvciB2YXJpYWJsZSBhcmd1bWVudHMgdG8gdGhlIG1ldGhvZCBsYXRlciBh bmQgcmV0YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiAgSWYgeW91IHRyZWF0IGl0IGFzIGBv cHQgPSB7fWAsIHRoZW4gYWRkaW5nIG9wdGlvbmFsIG9yIHZhcmlhYmxlIGFyZ3VtZW50cyB3b3Vs ZCBub3QgYmUgYmFja3dhcmRzIGNvbXBhdGlibGUuDQoNCklmIGEgbWV0aG9kIGFjY2VwdHMgb3B0 aW9uYWwgb3IgdmFyaWFibGUgYXJndW1lbnRzIGFuZCB0aGUgbWV0aG9kIGFjY2VwdHMga2V5d29y ZCBhcmd1bWVudHMsIHlvdSBjYW5ub3QgdHJlYXQgYDpgIGFzIGBvcHQgPSB7fWAgYXMgaXQgd291 bGQgbm90IGJlIGJhY2t3YXJkcyBjb21wYXRpYmxlLiAgQWxzbywgbWV0aG9kcyB0aGF0IGFjY2Vw dCBvcHRpb25hbCBvciB2YXJpYWJsZSBhcmd1bWVudHMgYW5kIGtleXdvcmQgYXJndW1lbnRzIGFy ZSB0aGUgbWFpbiBzb3VyY2Ugb2YgaXNzdWVzIHdpdGgga2V5d29yZHMsIGFuZCB0aGUgcHJpbWFy eSByZWFzb24gd2UgYXJlIGludHJvZHVjaW5nIGtleXdvcmQgYXJndW1lbnQgc2VwYXJhdGlvbi4N Cg0KVHJlYXRpbmcgYDpgIGFzIGAqKm9wdGAgaW4gbWV0aG9kcyB0aGF0IG90aGVyd2lzZSBvbmx5 IGFjY2VwdCBtYW5kYXRvcnkgYXJndW1lbnRzIHJlcXVpcmVzIGNoYW5naW5nIGFsbCBjYWxsIHNp dGVzIHRoYXQgcGFzcyBpbiBhIHBvc2l0aW9uYWwgaGFzaCB0byBwYXNzIGEga2V5d29yZCBzcGxh dC4gIFRoaXMgY2F1c2VzIGFkZGl0aW9uYWwgd29yayB3aGVuIHVwZ3JhZGluZyBSdWJ5LCBpdCBo dXJ0cyBwZXJmb3JtYW5jZSwgYW5kIGl0IGNhbiBhY3R1YWxseSBjaGFuZ2UgYmVoYXZpb3IsIGJl Y2F1c2UgdGhlIGVtcHR5IGtleXdvcmQgc3BsYXQgYW5kIGFuIGVtcHR5IGhhc2ggY2FuIGJlIHRy ZWF0ZWQgZGlmZmVyZW50bHkgYnkgdGhlIGNvZGUuICBUaGF0J3MgbGlrZWx5IHRvIGJlIGEgYnVn IGluIHRoZSByZWxhdGVkIGNvZGUsIGJ1dCBpdCBpcyBnb2luZyB0byBoYXBwZW4sIGFuZCBhY3R1 YWxseSBkb2VzIGhhcHBlbiBpbiBzdGRsaWIgKGluIHRoZSBqc29uIGxpYnJhcnkpLg0KDQpBcyBh IHRlc3QsIEkgd29ya2VkIG9uIGFsd2F5cyB0cmVhdGluZyBgOmAgYXMgYCoqb3B0YCwgYW5kIHRo ZSBjaGFuZ2VzIG5lY2Vzc2FyeSB0byBnZXQgYG1ha2UgY2hlY2tgIHBhc3Npbmcgd2VyZSBub3Qg dGhhdCBleHRlbnNpdmUgKHdoaWNoIHN1cnByaXNlZCBtZSkuICBJZiB5b3Ugd2FudCB0byB0cnkg b3V0IHRoaXMgYmVoYXZpb3IsIEkgaGF2ZSBhZGRlZCBhIGJyYW5jaCBvbiBHaXRIdWIgZm9yIGl0 OiBodHRwczovL2dpdGh1Yi5jb20vamVyZW15ZXZhbnMvcnVieS90cmVlL3JiX3NjYW5fYXJncy1j b2xvbi1hbHdheXMta2V5d29yZA0KDQpJIHN0aWxsIHJlY29tbWVuZCB0cmVhdGluZyBgOmAgYXMg YG9wdD17fWAgZm9yIG1ldGhvZHMgdGhhdCBkbyBub3QgYWNjZXB0IG9wdGlvbmFsIG9yIHZhcmlh YmxlIGFyZ3VtZW50cywgYXMgSSB0aGluayBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGV4 aXN0aW5nIGNvZGUgYW5kIGJldHRlciBwZXJmb3JtYW5jZSBvdXR3ZWlnaCB0aGUgYWJpbGl0eSB0 byBhZGQgb3B0aW9uYWwgb3IgdmFyaWFibGUgYXJndW1lbnRzIGxhdGVyIGluIGEgYmFja3dhcmRz IGNvbXBhdGlibGUgbWFubmVyLiAgSG93ZXZlciwgdHJlYXRpbmcgYDpgIGFsd2F5cyBhcyBgKipv cHRgIG1heSBiZSBtb3JlIGNvbnNpc3RlbnQuICBXaGF0ZXZlciB0aGUgZGVjaXNpb24gaXMsIGhv cGVmdWxseSB0aGUgZGVjaXNpb24gb24gdGhpcyBjYW4gYmUgbWFkZSBiZWZvcmUgMi43LjAgcHJl dmlldzIgaXMgcmVsZWFzZWQuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCkZlYXR1cmUgIzE2MTY4OiBBZGQga2V5d29yZCBhcmd1bWVudCBzZXBhcmF0aW9uIHRv IEMgZnVuY3Rpb25zIHVzaW5nIHJiX3NjYW5fYXJncw0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5v cmcvaXNzdWVzLzE2MTY4I2NoYW5nZS04MTY3MA0KDQoqIEF1dGhvcjogamVyZW15ZXZhbnMwIChK ZXJlbXkgRXZhbnMpDQoqIFN0YXR1czogT3Blbg0KKiBQcmlvcml0eTogTm9ybWFsDQoqIEFzc2ln bmVlOiANCiogVGFyZ2V0IHZlcnNpb246IA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KTW9zdCBSdWJ5IG1ldGhvZHMgaW1wbGVtZW50ZWQgYXMgQyBmdW5jdGlvbnMg dGhhdCBhY2NlcHQgYSB2YXJpYWJsZSBudW1iZXIgb2YgYXJndW1lbnRzIHVzZSByYl9zY2FuX2Fy Z3MgZm9yIGFyZ3VtZW50IGhhbmRsaW5nLiAgcmJfc2Nhbl9hcmdzIHN1cHBvcnRzIGEgYDpgIGNo YXJhY3RlciBmb3Igb3B0aW9uIGhhc2gva2V5d29yZCBhcmd1bWVudHMsIHRoYXQgb3BlcmF0ZXMg c2ltaWxhcmx5IHRvIGhvdyBrZXl3b3JkIGFyZ3VtZW50cyB3b3JrIGZvciBSdWJ5IG1ldGhvZHMg aW4gUnVieSAyLjYuDQoNCklmIGEgQyBmdW5jdGlvbiBhY2NlcHRzIG9wdGlvbmFsIG9yIHZhcmlh YmxlIGFyZ3VtZW50cyBpbiBhZGRpdGlvbiB0byB0aGUgb3B0aW9uIGhhc2gva2V5d29yZCBhcmd1 bWVudHMsIHRoZSBrZXl3b3JkIGFyZ3VtZW50IGlzc3VlcyBkaXNjdXNzZWQgaW4gIzE0MTgzIGFs c28gYXBwbHkuICBJZiB0aGUgQyBmdW5jdGlvbiBvbmx5IGFjY2VwdHMgbWFuZGF0b3J5IGFyZ3Vt ZW50cyBhbmQgYW4gb3B0aW9uIGhhc2gsIHRoZW4gdGhlIGFyZ3VtZW50IGhhbmRsaW5nIGlzIG5v dCBhbWJpZ3VvdXMsIGFuZCB0aGVyZSBzaG91bGRuJ3QgYmUgaXNzdWVzIHdpdGggaXQuICBGb3Ig dGhpcyByZWFzb24sIEkgcHJvcG9zZSB0byBjaGFuZ2UgcmJfc2Nhbl9hcmdzIHNvIHRoYXQgaWYg YDpgIGlzIHVzZWQgd2l0aCBvcHRpb25hbCBvciB2YXJpYWJsZSBhcmd1bWVudHMsIGl0IGlzIHRy ZWF0ZWQgYXMga2V5d29yZHMgKGtleXdvcmQgbW9kZSksIHdoZXJlYXMgaWYgb25seSB1c2VkIHdp dGggbWFuZGF0b3J5IGFyZ3VtZW50cywgaXQgaXMgdHJlYXRlZCBhcyBhbiBvcHRpb25hbCBwb3Np dGlvbmFsIGFyZ3VtZW50IChyZWd1bGFyIG1vZGUpLg0KDQpGb3IgZXhhbXBsZSwgSSB3b3VsZCBs aWtlIHRvIHRyZWF0IHRoZSBmb2xsb3dpbmcgcmJfc2Nhbl9hcmdzIGNhbGxzIHNpbWlsYXIgdG8g dGhlIGZvbGxvd2luZyBSdWJ5IG1ldGhvZCBkZWZpbml0aW9uczoNCg0KYGBgDQpyYl9zY2FuX2Fy Z3MoYXJnYywgYXJndiwgIjoiLCAuLi4pICAgICAjIGRlZiBmb28ob3B0cyA9IHt9KQ0KcmJfc2Nh bl9hcmdzKGFyZ2MsIGFyZ3YsICIxOiIsIC4uLikgICAgIyBkZWYgZm9vKHYxLCBvcHRzID0ge30p DQoNCnJiX3NjYW5fYXJncyhhcmdjLCBhcmd2LCAiMDE6IiwgLi4uKSAgICMgZGVmIGZvbyh2MT1u aWwsICoqb3B0cykNCnJiX3NjYW5fYXJncyhhcmdjLCBhcmd2LCAiMTE6IiwgLi4uKSAgICMgZGVm IGZvbyh2MSwgdjI9bmlsLCAqKm9wdHMpDQoNCnJiX3NjYW5fYXJncyhhcmdjLCBhcmd2LCAiKjoi LCAuLi4pICAgICMgZGVmIGZvbygqYXJncywgKipvcHRzKQ0KcmJfc2Nhbl9hcmdzKGFyZ2MsIGFy Z3YsICIxKjoiLCAuLi4pICAgIyBkZWYgZm9vKHYxLCAqYXJncywgKipvcHRzKQ0KcmJfc2Nhbl9h cmdzKGFyZ2MsIGFyZ3YsICIwMSo6IiwgLi4uKSAgIyBkZWYgZm9vKHYxPW5pbCwgKmFyZ3MsICoq b3B0cykNCnJiX3NjYW5fYXJncyhhcmdjLCBhcmd2LCAiMTEqOiIsIC4uLikgICMgZGVmIGZvbyh2 MSwgdjI9bmlsLCAqYXJncywgKipvcHRzKQ0KYGBgDQoNCkluIDIuNywgSSB3b3VsZCBsaWtlIHRv IGtlZXAgcmJfc2Nhbl9hcmdzIGJlaGF2aW9yIHRoZSBzYW1lIGFzIGl0IGlzIG5vdywgYnV0IGFk ZCB3YXJuaW5ncyBmb3IgY2FzZXMgdGhhdCB3aWxsIGNoYW5nZSBpbiAzLjAuICBUaGVzZSBtaXJy b3IgdGhlIGhhbmRsaW5nIG9mIGtleXdvcmQgYXJndW1lbnRzIGZvciBSdWJ5IG1ldGhvZHMgaW4g Mi43IGFuZCAzLjAuDQoNCk9uZSBiZWhhdmlvciBjaGFuZ2UgaW4gMi43IGNvbXBhcmVkIHRvIHBy ZXZpb3VzIHZlcnNpb25zIGlzIHRoYXQgaW4ga2V5d29yZCBtb2RlLCBjYWxsaW5nIHRoZSBDIG1l dGhvZCB3aXRoIGFuIGVtcHR5IGtleXdvcmQgc3BsYXQgKGUuZy4gYCoqe31gKSB3aWxsIG1ha2Ug cmJfc2Nhbl9hcmdzIG5vdCBjb25zaWRlciB0aGUgbGFzdCBwb3NpdGlvbmFsIGFyZ3VtZW50IGFz IHBvc3NpYmxlIGtleXdvcmQgYXJndW1lbnRzLiBUaGlzIGlzIGFuIGltcG9ydGFudCBjaGFuZ2Ug dG8gbWFrZSwgc28gdGhhdCB5b3UgY2FuIGNhbGwgdGhlIEMgbWV0aG9kIHdpdGggYSB3YXkgdG8g ZGlzYWJsZSB0aGUgb3B0aW9uIHBhcnNpbmcuDQoNClRoZXJlIGFyZSBhbHNvIHNvbWUgcmVsYXRl ZCBpc3N1ZXMgaW4gcmJfc2Nhbl9hcmdzIHRoYXQgSSB3b3VsZCBsaWtlIHRvIGZpeCAod2l0aCB3 YXJuaW5ncyBpbiAyLjcgYW5kIGJlaGF2aW9yIGNoYW5nZXMgaW4gMy4wOg0KDQoqIHJiX3NjYW5f YXJncyBjdXJyZW50bHkgc3BsaXRzIGhhc2hlcywgc2VwYXJhdGluZyB0aGUgbm9uLXN5bWJvbCBr ZXlzIGludG8gYSBzZXBhcmF0ZSBwb3NpdGlvbmFsIGFyZ3VtZW50LiAgSSB3b3VsZCBsaWtlIHRv IHJlbW92ZSB0aGlzIHNwbGl0dGluZyBpbiBib3RoIGtleXdvcmQgbW9kZSBhbmQgcmVndWxhciBt b2RlLCBhcyBSdWJ5IHdpbGwgbm8gbG9uZ2VyIHNwbGl0IGhhc2hlcyBpbiAzLjAgZm9yIFJ1Ynkg bWV0aG9kcy4NCg0KKiByYl9zY2FuX2FyZ3MgY3VycmVudGx5IHdpbGwgdHJlYXQgYSBuaWwgdmFs dWUgYXMgYW4gZW1wdHkgaGFzaCBpbiBzb21lIGNhc2VzLiAgUnVieSBtZXRob2RzIGRvIG5vdCBk byB0aGlzLCBhbmQgSSB0aGluayBpdCB3b3VsZCBiZSBiZXN0IGlmIEMgbWV0aG9kcyBzdG9wcGVk IGRvaW5nIHRoaXMgZG8gdGhpcyBpbiBib3RoIHJlZ3VsYXIgbW9kZSBhbmQga2V5d29yZCBtb2Rl Lg0KDQoqIHJiX3NjYW5fYXJncyB3aWxsIHVzZSBrZXl3b3JkIGFyZ3VtZW50cyBpZiBuZWNlc3Nh cnkgdG8gZmlsbCBhIG1hbmRhdG9yeSBwb3NpdGlvbmFsIGFyZ3VtZW50LiAgSSB0aGluayB3ZSBz aG91bGQga2VlcCB0aGlzIGJlaGF2aW9yIGluIHJlZ3VsYXIgbW9kZSBhbmQgcmVtb3ZlIGl0IGlu IGtleXdvcmQgbW9kZSwgc2ltaWxhciB0byBob3cgUnVieSBtZXRob2RzIGhhbmRsZSB0aGUgc2l0 dWF0aW9uLg0KDQoqIHJiX3NjYW5fYXJncyB3aGVuIGNhbGxlZCB3aXRoIGFuIGVtcHR5IGtleXdv cmQgc3BsYXQgY3VycmVudGx5IGJyZWFrcyBjb21wYXRpYmlsaXR5IHdpdGggUnVieSAyLjYsIHdo aWNoIHBhc3NlZCBhbiBlbXB0eSBoYXNoIGluIHRoaXMgY2FzZS4gIFJlc3RvcmUgYmFja3dhcmRz IGNvbXBhdGliaWxpdHkgYnkgYWRkaW5nIHRoZSBlbXB0eSBoYXNoIGlmIG5lZWRlZCBmb3IgYSBt YW5kYXRvcnkgcG9zaXRpb25hbCBhcmd1bWVudCwgYnV0IHRoaXMgYmVoYXZpb3Igc2hvdWxkIGJl IHJlbW92ZWQgaW4gMy4wLg0KDQpUaGVyZSBhcmUgYSBmZXcgcGxhY2VzIGluIFJ1Ynkgd2hlcmUg cmJfc2Nhbl9hcmdzIGlzIGNhbGxlZCBpbmRpcmVjdGx5LCB3aGVyZSBhIFJ1YnkgbWV0aG9kIGlz IGltcGxlbWVudGVkIGluIEMsIGFuZCBpdCBjYWxscyByYl9zY2FuX2FyZ3Mgd2l0aCB0aGUgYXJn dW1lbnRzIHBhc3NlZCBmcm9tIFJ1YnksIGJ1dCB0aGVuIGl0IGNhbGxzIGFub3RoZXIgQyBmdW5j dGlvbiB3aXRoIGEgZGlmZmVyZW50IHNldCBvZiBhcmd1bWVudHMuICBJbiB0aGlzIGNhc2UsIHdl IGNhbm5vdCB1c2UgdGhlIHJiX2tleXdvcmRfZ2l2ZW5fcCBhbmQgcmJfZW1wdHlfa2V5d29yZF9n aXZlbl9wIGZ1bmN0aW9ucyB0byBkZXRlcm1pbmUgaG93IHRoZSBhcmd1bWVudHMgc2hvdWxkIGJl IGhhbmRsZWQsIGFzIHRoZXNlIHJlbHkgb24gVk0gZnJhbWUgZmxhZ3MsIGFuZCB0aGUgZnJhbWUg ZmxhZ3MgbWF5IG5vdCBtYXRjaCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byByYl9zY2FuX2FyZ3Mu ICBIYW5kbGUgdGhpcyBjYXNlIGJ5IGFsbG93aW5nIHByZXBlbmRpbmcgdGhlIHJiX3NjYW5fYXJn cyBzdHJpbmcgd2l0aCBhIGBrYCwgYGVgLCBvciBgbmAgcHJlZml4Og0KDQoqIGs6IFRyZWF0IGFz IGlmIHRoZSBrZXl3b3JkIGdpdmVuIGZsYWcgaXMgc2V0IChsYXN0IGFyZ3VtZW50IHNob3VsZCBi ZSBhIGhhc2gpLg0KICAgIA0KKiBlOiBUcmVhdCBhcyBpZiB0aGUgZW1wdHkga2V5d29yZCBnaXZl biBmbGFnIGlzIHNldCAoaW4ga2V5d29yZCBtb2RlLCBkbyBub3QgbG9vayBmb3IgYSBsYXN0IHBv c2l0aW9uYWwgaGFzaCkuDQogICAgDQoqIG46IEluIGtleXdvcmQgbW9kZSwgYXNzdW1lIHRoZSBj YWxsIGRpZCBub3Qgc2V0IHRoZSBrZXl3b3JkIG9yIGVtcHR5IGtleXdvcmQgZmxhZ3MsIGJ1dCBk byBub3QgaXNzdWUgYSB3YXJuaW5nIGlmIHRoZSBsYXN0IGFyZ3VtZW50IGlzIGEgaGFzaCB0aGF0 IGlzIHRyZWF0ZWQgYXMga2V5d29yZHMuDQogICAgDQpXaXRoIHRoaXMgYXBwcm9hY2gsIGV4dGVy bmFsIEMgZXh0ZW5zaW9ucyB3aWxsIGJlIGFibGUgdG8gZ2V0IGJhY2t3YXJkcyBjb21wYXRpYmxl IGJlaGF2aW9yIG9uIFJ1YnkgPDIuNyBieSB1c2luZyBhIG1hY3JvLiBPbiAyLjcrLCB0aGUgbWFj cm8gY2FuIGJlIGRlZmluZWQgdG8gImsiLCAiZSIsIG9yICJuIiwgYW5kIG9uIDwyLjcsIGl0IGNh biBiZSBkZWZpbmVkIHRvICIiLg0KDQpJIGhhdmUgYSBwdWxsIHJlcXVlc3QgdGhhdCBoYXMgcGFz c2VkIENJIChodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L3B1bGwvMjQ2MCkgdGhhdCBpbXBs ZW1lbnRzIGFsbCBvZiB0aGUgYWJvdmUuICBJdCBpcyBhbHNvIGF0dGFjaGVkIGFzIHBhdGNoLiBJ dCBmaXhlcyBhbGwgY2FzZXMgaW4gdGhlIHRlc3RzLCBjb3JlLCBleHRlbnNpb25zLCBzdGRsaWIg d2hlcmUgd2FybmluZ3Mgd2VyZSByYWlzZWQgZHVlIHRvIGNoYW5nZXMuICBUaGUgc3RkbGliIGFu ZCB0ZXN0IGZpeGVzIChSdWJ5IGxldmVsKSBhcmUgbW9zdGx5IGFkZGluZyBrZXl3b3JkIHNwbGF0 cyBpbnN0ZWFkIG9mIHBhc3NpbmcgYXMgcG9zaXRpb25hbCBhcmd1bWVudHMsIG9yIG1ha2luZyBz dXJlIHRvIHVzZSBhbiBlbXB0eSBoYXNoIGluc3RlYWQgb2YgbmlsIGFzIGFuIG9wdGlvbiBoYXNo LiBUaGUgY29yZSBhbmQgZXh0ZW5zaW9uIGNoYW5nZXMgYXJlIG1vc3RseSBzd2l0Y2hpbmcgdG8g YCpfa3dgIGZ1bmN0aW9ucyB0byBhcHByb3ByaWF0ZWx5IHBhc3MgdGhhdCBhcmd1bWVudHMgc2hv dWxkIGJlIHRyZWF0ZWQgYXMga2V5d29yZHMgaWYgY2FsbGVkIHdpdGgga2V5d29yZHMuDQoNCi0t LUZpbGVzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnJiX3NjYW5fYXJncy1rZXl3 b3JkLWFyZ3VtZW50LXNlcGFyYXRpb24ucGF0Y2ggKDYxLjggS0IpDQoNCg0KLS0gDQpodHRwczov L2J1Z3MucnVieS1sYW5nLm9yZy8NCgpVbnN1YnNjcmliZTogPG1haWx0bzpydWJ5LWNvcmUtcmVx dWVzdEBydWJ5LWxhbmcub3JnP3N1YmplY3Q9dW5zdWJzY3JpYmU+CjxodHRwOi8vbGlzdHMucnVi eS1sYW5nLm9yZy9jZ2ktYmluL21haWxtYW4vb3B0aW9ucy9ydWJ5LWNvcmU+Cg==