[#97678] [Ruby master Feature#16752] :private param for const_set — bughitgithub@...
Issue #16752 has been reported by bughit (bug hit).
5 messages
2020/04/02
[ruby-core:98023] [Ruby master Feature#16254] MRI internal: Define built-in classes in Ruby with `__intrinsic__` syntax
From:
ko1@...
Date:
2020-04-23 05:53:19 UTC
List:
ruby-core #98023
SXNzdWUgIzE2MjU0IGhhcyBiZWVuIHVwZGF0ZWQgYnkga28xIChLb2ljaGkgU2FzYWRhKS4NCg0K U3RhdHVzIGNoYW5nZWQgZnJvbSBDbG9zZWQgdG8gQXNzaWduZWQNCg0KRXJlZ29uOg0KDQpUaGVy ZSBhcmUgdHdvIHBvaW9udHM6ICgxKSBzaGFyaW5nIHRoZSBjb2RlIGJldHdlZW4gUnVieSBpbXBs ZW1lbnRhdGlvbnMgYW5kICgyKSBwcmV0dGllciBzeW50YXguDQoNCiMgKDEpIHNoYXJpbmcgdGhl IGNvZGUgYmV0d2VlbiBSdWJ5IGltcGxlbWVudGF0aW9ucw0KDQpJIGFzc3VtZSBpdCBpcyB1c2lu ZyBzYW1lIGAucmJgIGNvZGUgYmV0d2VlbiBSdWJ5IGltcGxlbWVudGF0aW9ucy4NCk15IGNvbmNs dXNpb24gaXMgaXQgaXMgYmFkIGlkZWEgdG8gc2hhcmUgdGhlIHNhbWUgY29kZSBiZXR3ZWVuIGlu dGVycHJldGVycy4NCg0KVGhlcmUgYXJlIHNvbWUgcG9pbnRzOg0KDQoqIChhKSBJZiB3ZSBuZWVk IHRvIHVuaWZ5IHRoZSBzb3VyY2UgY29kZSwgdGhlIGJvZHkgc2hvdWxkIGJlIGVtcHR5IGFuZCBj YWxsIGEgZnVuY3Rpb24gKG9yIEphdmEgbWV0aG9kLCBhbmQgc28gb24pIHdoaWNoIGlzIGRlY2lk ZWQgYnkgY29udmVudGlvbi4NCg0KRm9yIGV4YW1wbGUsIGEgbWV0aG9kIGBlbXB0eT9gIGluIFN0 cmluZyBjbGFzcyBzaG91bGQgYmUgZGVmaW5lZCBhczoNCg0KYGBgDQpjbGFzcyBTdHJpbmcNCiAg ZGVmIGVtcHR5Pw0KICBlbmQNCmVuZA0KYGBgDQoNCmFuZCBjYWxsIGByYl9idWlsdGluX3N0cl9l bXB0eV9wKClgIGltcGxpY2l0bHkuIFRoZSBuYW1lIGNvbnZlbnRpb24gc2hvdWxkIGJlIGN1c3Rv bWl6ZS4NCg0KKiAoYikgRWFjaCBpbnRlcnByZXRlciBzaG91bGQgdXNlIHRoZWlyIG93biBib2R5 Lg0KDQpIb3dldmVyLCBzb21ldGltZXMgd2Ugd2FudCB0byB3cml0ZSBhIGNvZGUgaW4gUnVieSBi ZWNhdXNlIGl0IGlzIGVhc3kgdG8gd3JpdGUgYSBjb2RlIHRoYW4gdG8gd3JpdGUgbmF0aXZlIGNv ZGUgKHRoaXMgaXMgb25lIG1vdGl2YXRpb24gb2YgdGhpcyBmZWF0dXJlKS4NCg0KVGhlIGJvZHkg aXMgd3JpdHRlbiBpbiBSdWJ5LCBidXQgYW4gaW50ZXJwcmV0ZXIgd2FudCB0byB1c2UgYSBydWJ5 IGNvZGUgaW4gYSBib2R5LCBidXQgYW5vdGhlciBpbnRlcnByZXRlciB3YW50IHRvIHdyaXRlIHRo ZSBjb2RlIGluIG5hdGl2ZSBjb2RlLCBiZWNhdXNlIG9mIHNldmVyYWwgcHJvYmxlbSBzdWNoIGFz IHBlcmZvcm1hbmNlIGludGVyZXN0Lg0KSSB0aGluayB0aGUgYWR2YW50YWdlIG9mIHNoYXJpbmcg dGhlIGNvcmUgcnVieSBjb2RlIGlzIGxlc3MgdGhhbiB0aGUgZGlzYWR2YW50YWdlIGJlY2F1c2Ug b2YgdGhpcyBwb2ludC4NCg0KKiAoYykgKE1SSS1zcGVjaWZpYykgDQoNCkFsc28gSSBwbGFuIHRv IHdyaXRlIGEgQyBjb2RlIHBhcnQgaW4gLnJiIGNvZGUsIHdoaWNoIGlzIGVhc3kgdG8gd3JpdGUg Zm9yIG1lLg0KRXhhbXBsZTogaHR0cHM6Ly9naXRodWIuY29tL2tvMS9ydWJ5L2Jsb2IvcmFjdG9y L3JhY3Rvci5yYiNMNjkNCg0KQW5kIGFsc28gd2Ugd2FudCB0byBpbnRyb2R1Y2UgYW5ub3RhdGlv biBtZXRob2RzICIoMikgQW5ub3RhdGlvbiBpc3N1ZXMgKGZvciBmdXJ0aGVyIG9wdGltaXphdGlv bikiIGFuZCBJIHRoaW5rIHRoZSBhbm5vdGF0aW9ucyBtYXliZSBiZSB0aGUgc2FtZSBhbmQgZGlm ZmVyZW50Lg0KDQpJIGtub3cgdGhlIHBvaW50IChjKSBjYW4gYmUgc29sdmVkIGJ5IGlnbm9yaW5n IHRoZW0uDQoNCiMgKDIpIHByZXR0aWVyIHN5bnRheA0KDQpIb25lc3RseSBzcGVha2luZywgSSBo YXZlIG5vIHN0cm9uZyBvcGluaW9uIGFib3V0IHRoZSBzeW50YXguDQpGb3IgZXhhbXBsZSwgSSBo YXZlIGEgZnJ1c3RyYXRpb24gdGhhdCBJIGNhbid0IHNlbGVjdCBhIGZ1bmN0aW9uIG5hbWUgYnkg ZG91YmxlIGNsaWNraW5nIGEgYF9fYnVpbHRpbl9mb28oKWAgKGBfX2J1aWx0aW5fZm9vYCBpcyBz ZWxlY3RlZC4pDQpBIChzbWFsbCkgY29uY2VybiBhYm91dCB0aGUgbmFtZSBgUHJpbWl0aXZlYCBp cywgaXQgaXMgdG9vIGNvbW1vbiBjbGFzcyBuYW1lIGFuZCBjb25mbGljdHMgd2l0aCBvdGhlciBj b2RlIChpZiB0aGVyZSBpcyBhIHJlYWRlcikuIFRoaXMgaXMgd2h5IEkgdXNlIGBfX2AgcHJlZml4 IGZvciBpdC4NCg0KQSBwcmFjdGljYWwgcmVhc29uIG9mIGBfX2J1aWx0aW5fZm9vYCBzeW50YXgg aXMsIGl0IGlzIGVhc3kgdG8gaW1wbGVtZW50Lg0KSSB1c2VkIFZNIGlzZXEgZGlzYXNzZW1ibGUg cmVzdWx0IHRvIGltcGxlbWVudCBhIGRldGVjdG9yIChhIHV0aWxpdHkgdG8gbGlzdCBhIGJ1aWx0 aW4gZnVuY3Rpb25zIGluIEMgY29kZSkuIEl0IGlzIGRpZmZpY3VsdCB0byBzcGVjaWZ5IHJlY2Vp dmVyIGNvZGUgZnJvbSBWTSBkaXNhc3NlbWJsZSBiZWNhdXNlIGl0IGlzIHN0YWNrIG1hY2hpbmUs IGluIGdlbmVyYWwuDQpXZSBjYW4gbWFrZSBhIGRldGVjdG9yIGJ5IHVzaW5nIFJ1YnlWTTo6QVNU IG9yIHJpcHBlciwgYnV0IHJpcHBlciBoYXMgc2V2ZXJhbCBtZXRob2QgY2FsbCBub2RlcyBhbmQg c28gb24uDQoNCk1heWJlIHRoZSBtb3N0IGNvcnJlY3QgYXBwcm9hY2ggdG8gbWFrZSBhIGRldGVj dG9yIGlzIHRvIGltcGxlbWVudCBpdCBieSBwYXJzZS55IGNvZGUgKHNlcGFyYXRlIGJpbmFyeSBm cm9tIG1pbmlydWJ5KS4NCldpdGggdGhpcyB0ZWNobmlxdWUsIGl0IGlzIGVhc3kgdG8gcGFyc2Ug KGJlY2F1c2Ugd2UgY2FuIG1vZGlmeSB0aGUgcGFyc2VyIGZvciB0aGlzIHB1cnBvc2UpIGFuZCBh bnkgbmV3ZXIgc3ludGF4IChzdWNoIGFzIHBhdHRlcm4gbWF0Y2hpbmcgaW4gUnVieSAyLjcpLg0K Tm93LCBhIGRldGVjdG9yIGlzIGltcGxlbWVudGVkIGJ5IGEgQkFTRVJVQlkgKHN5c3RlbSBpbnN0 YWxsZWQgcnVieSkgYW5kIGl0IHNob3VsZCBiZSBvbGRlciB0aGFuIG1hc3Rlci4NCg0KDQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGZWF0dXJlICMxNjI1NDogTVJJ IGludGVybmFsOiBEZWZpbmUgYnVpbHQtaW4gY2xhc3NlcyBpbiBSdWJ5IHdpdGggYF9faW50cmlu c2ljX19gIHN5bnRheA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE2MjU0I2No YW5nZS04NTI1Ng0KDQoqIEF1dGhvcjoga28xIChLb2ljaGkgU2FzYWRhKQ0KKiBTdGF0dXM6IEFz c2lnbmVkDQoqIFByaW9yaXR5OiBOb3JtYWwNCiogQXNzaWduZWU6IGtvMSAoS29pY2hpIFNhc2Fk YSkNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQWJzdHJhY3QN Cg0KTVJJIGRlZmluZXMgbW9zdCBvZiBidWlsdC1pbiBjbGFzc2VzIGluIEMgd2l0aCBDLUFQSXMg bGlrZSBgcmJfZGVmaW5lX21ldGhvZCgpYC4NCkhvd2V2ZXIsIHRoZXJlIGFyZSBzZXZlcmFsIGlz c3VlcyB1c2luZyBDLUFQSXMuDQoNCkEgZmV3IG1ldGhvZHMgYXJlIGRlZmluZWQgaW4gUnVieSB3 cml0dGVuIGluIGBwcmVsdWRlLnJiYC4NCkhvd2V2ZXIsIHdlIGNhbiBub3QgZGVmaW5lIGFsbCBv ZiBjbGFzc2VzIGJlY2F1c2Ugd2UgY2FuIG5vdCB0b3VjaCBkZWVwIGRhdGEgc3RydWN0dXJlIGlu IFJ1YnkuDQpGdXJ0aGVybW9yZSwgdGhlcmUgYXJlIHBlcmZvcm1hbmNlIGlzc3VlcyBpZiB3ZSB3 cml0ZSBhbGwgb2YgdGhlbSBpbiBSdWJ5Lg0KDQpUbyBzb2x2ZSB0aGlzIHNpdHVhdGlvbiwgSSB3 YW50IHRvIHN1Z2dlc3Qgd3JpdHRlbiBpbiBSdWJ5IHdpdGggQyBpbnRyaW5zaWMgZnVuY3Rpb25z Lg0KVGhpcyBwcm9wb3NhbCBpcyBzYW1lIGFzIG15IFJ1YnlLYWlnaSAyMDE5IHRhbGsgPGh0dHBz Oi8vcnVieWthaWdpLm9yZy8yMDE5L3ByZXNlbnRhdGlvbnMva28xLmh0bWw+Lg0KDQojIFRlcm1p bm9sb2d5DQoNCiogQy1tZXRob2RzOiBtZXRob2RzIGRlZmluZWQgaW4gQyAoZGVmaW5lZCB3aXRo IGByYl9kZWZpbmVfbWV0aG9kKClgLCBldGMpLg0KKiBSdWJ5LW1ldGhvZHM6IG1ldGhvZHMgZGVm aW5lZCBpbiBSdWJ5Lg0KKiBJU2VxOiBUaGUgYm9keSBvZiBgUlVieVZNOjpJbnN0cnVjdGlvblNl cXVlbmNlYCBvYmplY3Qgd2hpY2ggcmVwcmVzZW50cyBieXRlY29kZSBmb3IgVk0uDQoNCiMgQmFj a2dyb3VuZCAvIFByb2JsZW0gLyBJZGVhDQoNCiMjIFdyaXR0ZW4gaW4gQw0KDQpBcyB5b3UgTVJJ IGRldmVsb3BlcnMga25vdywgbW9zdCBvZiBtZXRob2RzIGFyZSB3cml0dGVuIGluIEMgd2l0aCBD LUFQSXMuDQpIb3dldmVyLCB0aGVyZSBhcmUgc2V2ZXJhbCBpc3N1ZXMuDQoNCiMjIyAoMSkgQW5u b3RhdGlvbiBpc3N1ZXMgKGNvbXBhcmUgd2l0aCBSdWJ5IG1ldGhvZHMpDQoNCkZvciBleGFtcGxl LCBDLW1ldGhvZHMgZGVmaW5lZCBieSBDLUFQSXMgZG9lc24ndCBoYXZlIGBwYXJhbWV0ZXJzYCBp bmZvcm1hdGlvbiB3aGljaCBhcmUgcmV0dXJuZWQgYnkgYE1ldGhvZCNwYXJhbWV0ZXJzYCwgYmVj YXVzZSB0aGVyZSBpcyB3YXkgdG8gZGVmaW5lIHBhcmFtZXRlcnMgZm9yIEMgbWV0aG9kcy4NClRo ZXJlIGFyZSBwcm9wb3NhbHMgdG8gYWRkIHBhcmFtZXRlciBuYW1lIGluZm9ybWF0aW9uIGZvciBD LW1ldGhvZHMsIGhvd2V2ZXIsIEkgdGhpbmsgaXQgd2lsbCBpbnRyb2R1Y2UgbmV3IGNvbXBsZXgg Qy1BUElzIGFuZCBpbnRyb2R1Y2UgYWRkaXRpb25hbCBvdmVyaGVhZCBvbiBib290IHRpbWUuDQoN Ci0+IElkZWE7IFdyaXRpbmcgbWV0aG9kcyBpbiBSdWJ5IHdpbGwgc29sdmUgdGhpcyBpc3N1ZS4N Cg0KIyMjICgyKSBBbm5vdGF0aW9uIGlzc3VlcyAoZm9yIGZ1cnRoZXIgb3B0aW1pemF0aW9uKQ0K DQpJdCBpcyB1c2VmdWwgdG8ga25vdyB0aGUgbWV0aG9kcyBhdHRyaWJ1dGUsIGZvciBleGFtcGxl LCB0aGUgbWV0aG9kIGNhdXNlcyBubyBzaWRlLWVmZmVjdCAoYSBwdXJlIG1ldGhvZCkuDQpMYWJl bGluZyBhbGwgb2YgbWV0aG9kcyBpbmNsdWRpbmcgdXNlciBwcm9ncmFtJ3MgbWV0aG9kcyBkb2Vz bid0IHNlZW0gZ29vZCBpZGVhIChub3QgUnVieS13YXkpLiBCdXQgSSB0aGluayBhbm5vdGF0aW5n IGJ1aWx0LWluIG1ldGhvZHMgaXMgZ29vZCB3YXkgYmVjYXVzZSB3ZSBjYW4gbWFuYWdlIChhbmQg d2UgY2FuIHJlbW92ZSB0aGVtIHdoZW4gd2UgY2FuIG1ha2UgZ29vZCBhbmFseXplcikuDQoNClRo ZXJlIGFyZSBubyB3YXkgdG8gYW5ub3RhdGUgdGhpcyBraW5kIG9mIGF0dHJpYnV0ZXMuDQoNCi0+ IElkZWE6IFdyaXRpbmcgbWV0aG9kcyBpbiBSdWJ5IHdpbGwgbWFrZSBpdCBlYXN5IHRvIGludHJv ZHVjZSBuZXcgYW5ub3RhdGlvbnMuDQoNCiMjIyAoMykgUGVyZm9ybWFuY2UgaXNzdWUNCg0KVGhl cmUgYXJlIHNldmVyYWwgZmVhdHVyZXMgd2hpY2ggYXJlIHNsb3dlciBpbiBDIHRoYW4gd3JpdHRl biBpbiBSdWJ5Lg0KDQoqIGV4Y2VwdGlvbiBoYW5kbGluZyAoYHJiX2Vuc3VyZSgpYCwgZXRjKSBi ZWNhdXNlIHdlIG5lZWQgdG8gY2FwdHVyZSBjb250ZXh0IHdpdGggYHNldGptcGAgb24gQy1tZXRo b2RzLiBSdWJ5LW1ldGhvZHMgZG9lc24ndCBuZWVkIHRvIGNhcHR1cmUgYW55IGNvbnRleHQgZm9y IGV4Y2VwdGlvbiBoYW5kbGluZy4NCiogUGFzc2luZyBrZXl3b3JkIHBhcmFtZXRlcnMgYmVjYXVz ZSBSdWJ5LW1ldGhvZHMgZG9lc24ndCBuZWVkIHRvIG1ha2UgYSBIYXNoIG9iamVjdCB0byBwYXNz IHRoZSBrZXl3b3JkIHBhcmFtZXRlcnMgaWYgdGhleSBhcmUgcGFzc2VkIHdpdGggZXhwbGljaXQg a2V5d29yZCBwYXJhbWV0ZXJzIChgZm9vKGsxOiB2MSwgazI6IHYyKWApLg0KDQotPiBJZGVhOiBX cml0aW5nIG1ldGhvZHMgaW4gUnVieSBtYWtlcyB0aGVtIGZhc3Rlci4NCg0KIyMjICg0KSBQcm9k dWN0aXZpdHkNCg0KSXQgaXMgdG91Z2ggdG8gd3JpdGUgc29tZSBmZWF0dXJlcyBpbiBDOg0KDQpG b3IgZXhhbXBsZSwgaXQgaXMgZWFzeSB0byB3cml0ZSBgcmVzY3VlYCBzeW50YXggaW4gUnVieToN Cg0KYGBgcnVieQ0KIyBpbiBSdWJ5DQpkZWYgZHVtbXlfZnVuY19yZXNjdWUNCiAgbmlsDQpyZXNj dWUNCiAgbmlsDQplbmQNCmBgYA0KDQpCdXQgaXQgaXMgZGlmZmljdWx0IHRvIHdyaXRlL3JlYWQg aW4gQzoNCg0KYGBgQw0Kc3RhdGljIFZBTFVFDQpkdW1teV9ib2R5KFZBTFVFIHNlbGYpDQp7DQog ICAgcmV0dXJuIFFuaWw7DQp9DQpzdGF0aWMgVkFMVUUNCmR1bW15X3Jlc2N1ZShWQUxVRSBzZWxm KQ0Kew0KICAgIHJldHVybiBRbmlsOw0KfQ0Kc3RhdGljIFZBTFVFDQp0ZHVtbXlfZnVuY19yZXNj dWUoVkFMVUUgc2VsZikNCnsNCiAgICByZXR1cm4gcmJfcmVzY3VlKGR1bW15X2JvZHksIHNlbGYs IGR1bW15X3Jlc2N1ZSwgc2VsZik7DQp9DQpgYGANCg0KKHRyYWluZWQgTVJJIGRldmVsb3BlciBj YW4gc2F5IGl0IGlzIG5vdCB0b3VnaCwgdGhvdWdoIDpwKQ0KDQotPiBJZGVhOiBXcml0aW5nIG1l dGhvZHMgaW4gUnVieSBtYWtlcyB0aGVtIGVhc3kuDQoNCiMjIyAoNSkgQVBJIGNoYW5nZQ0KDQpU byBpbnRyb2R1Y2UgYEd1aWxkYCwgSSB3YW50IHRvIHBhc3MgYSAiY29udGV4dCIgcGFyYW1ldGVy IChhcyBhIGZpcnN0IHBhcmFtZXRlcikgZm9yIGVhY2ggQy1mdW5jdGlvbnMgbGlrZSBgbXJiX3N0 YXRlYCBvbiBtcnVieS4NClRoaXMgaXMgYmVjYXVzZSBnZXR0aW5nIGl0IGZyb20gVExTIChUaHJl YWQtbG9jYWwtc3RvcmFnZSkgaXMgaGlnaC1jb3N0IG9wZXJhdGlvbiBvbiBkeW5hbWljIGxpYnJh cnkgKGxpYnJ1YnkpLg0KDQpNYXliZSBub2JvZHkgYWxsb3cgbWUgdG8gY2hhbmdlIHRoZSBzcGVj aWZpY2F0aW9uIG9mIGZ1bmN0aW9ucyB1c2VkIGJ5IGByYl9kZWZpbmVfbWV0aG9kKClgLg0KDQot PiBJZGVhOiBCdXQgaW50cm9kdWNlIG5ldyBtZXRob2QgZGVmaW5pdGlvbiBmcmFtZXdvcmssIHdl IGNhbiBtb3ZlIGFuZCBjaGFuZ2UgdGhlIHNwZWNpZmljYXRpb24sIEkgaG9wZS4NCk9mIGNvdXJz ZSwgd2UgY2FuIHJlbWFpbiBjdXJyZW50IGByYl9kZWZpbmVfbWV0aG9kKClgIEFQSXMgKHdpdGgg YWRkaXRpb25hbCBjb3N0IG9uIGBHdWlsZGAgYXZhaWxhYmxlIE1SSSkuDQoNCiMjIFdyaXR0ZW4g aW4gUnVieSBpbiBgcHJlbHVkZS5yYmANCg0KVGhlcmUgaXMgYSBmaWxlIGBwcmVsdWRlLnJiYCB3 aGljaCBhcmUgbG9hZGVkIGF0IGJvb3QgdGltZS4NClRoaXMgZmlsZSBpcyB1c2VkIHRvIGRlZmlu ZSBzZXZlcmFsIG1ldGhvZHMsIHRvIHJlZHVjZSBrZXl3b3JkIHBhcmFtZXRlcnMgb3ZlcmhlYWQs IGZvciBleGFtcGxlIChgSU8jcmVhZF9ub25ibG9ja2AsIGBUcmFjZVBvaW50I2VuYWJsZWApLg0K DQpIb3dldmVyLCB3cml0aW5nIGFsbCBvZiBtZXRob2RzIGluIFJ1YnkgaXMgbm90IHBvc3NpYmxl IGJlY2F1c2U6DQoNCiogKDEpIGZlYXNpYmlsaXR5IGlzc3VlICh3ZSBjYW4gbm90IGFjY2VzcyBp bnRlcm5hbCBkYXRhIHN0cnVjdHVyZSkNCiogKDIpIHBlcmZvcm1hbmNlIGlzc3VlIChzbG93IGlu IGdlbmVyYWwsIG9mIGNvdXJzZSkNCiogKDMpIGF0b21pY2l0eSBpc3N1ZSAoR1ZML0dJTCkNCg0K VG8gc29sdmUgKDEpLCB3ZSBjYW4gcHJvdmlkZSBsb3ctbGV2ZWwgQy1tZXRob2RzIHRvIGltcGxl bWVudCBoaWdoLWxldmVsIChub3JtYWwgYnVpbHQtaW4pIG1ldGhvZHMuIEhvd2V2ZXIgaXNzdWVz ICgyKSBhbmQgKDMpIGFyZSBub3Qgc29sdmVkLg0KKEZyb20gQ1MgcmVzZWFyY2hlcnMgcGVyc3Bl Y3RpdmUsIG1ha2luZyBjbGV2ZXIgY29tcGlsZXIgd2lsbCBzb2x2ZSB0aGVtLCBsaWtlIEpWTSwg ZXRjLCBCdXQgd2UgZG9uJ3QgaGF2ZSBpdCB5ZXQpDQoNCi0+IElkZWE6IFdyaXRpbmcgbWV0aG9k IGJvZHkgaW4gQyBpcyBmZWFzaWJsZS4NCg0KIyBQcm9wb3NhbA0KDQooMSkgSW50cm9kdWNpbmcg YGludHJpbnNpY2AgbWVjaGFuaXNtIHRvIGRlZmluZSBidWlsdC1pbiBtZXRob2RzIGluIFJ1Ynku DQooMikgTG9hZCBmcm9tIGJpbmFyeSBmb3JtYXQgdG8gcmVkdWNlIHN0YXJ0dXAgdGltZS4NCg0K IyMgKDEpIEludHJpbnNpYyBmdW5jdGlvbg0KDQojIyMgQ2FsbGluZyBpbnRyaW5zaWMgZnVuY3Rp b24gc3ludGF4IGluIFJ1YnkNCg0KVG8gZGVmaW5lIGJ1aWx0LWluIG1ldGhvZHMsIGludHJvZHVj ZSBzcGVjaWFsIFJ1Ynkgc3ludGF4IGBfX2ludHJpbnNpY19fLmZ1bmMoYXJncylgLg0KSW4gdGhp cyBjYXNlLCByZWdpc3RlcmVkIGludHJpbnNpYyBmdW5jdGlvbiBgZnVuYygpYCBpcyBjYWxsZWQg d2l0aCBgYXJnc2AuDQoNCkluIG5vcm1hbCBSdWJ5IHByb2dyYW0sIGBfX2ludHJpbnNpY19fYCBp cyBhIGxvY2FsIHZhcmlhYmxlIG9yIGEgbWV0aG9kLg0KSG93ZXZlciwgcnVubmluZyBvbiBzcGVj aWFsIG1vZGUsIHRoZXkgYXJlIHBhcnNlZCBhcyBpbnRyaW5zaWMgZnVuY3Rpb24gY2FsbC4NCg0K SW50cmluc2ljIGZ1bmN0aW9ucyBjYW4gbm90IGJlIGNhbGxlZCB3aXRoOg0KDQoqIGJsb2NrIA0K KiBrZXl3b3JkIGFyZ3VtZW50cw0KKiBzcGxhdCBhcmd1bWVudHMNCg0KIyMjIERldmVsb3BtZW50 IHN0ZXAgd2l0aCBpbnRyaW5zaWMgZnVuY3Rpb25zDQoNCigxKSBXcml0ZSBhIGNsYXNzL21vZHVs ZSBpbiBSdWJ5IHdpdGggaW50cmluc2ljIGZ1bmN0aW9uLg0KDQpgYGBydWJ5DQojIHN0cmluZy5y Yg0KY2xhc3MgU3RyaW5nDQogIGRlZiBsZW5ndGgNCiAgICBfX2ludHJpbnNpY19fLnN0cl9sZW5n dGgNCiAgZW5kDQplbmQNCmBgYA0KDQooMikgSW1wbGVtZW50IGludHJpbnNpYyBmdW5jdGlvbnMN Cg0KSXQgaXMgYWxtb3N0IHNhbWUgYXMgZnVuY3Rpb25zIHVzZWQgYnkgYHJiX2RlZmluZV9tZXRo b2QoKWAuDQpIb3dldmVyIGl0IHdpbGwgYWNjZXB0IGNvbnRleHQgcGFyYW1ldGVyIGFzIHRoZSBm aXJzdCBwYXJhbWV0ZXIuDQoNCihgcmJfZXhlY3V0aW9uX2NvbnRleHRfdGAgaXMgdG9vIGxvbmcs IHNvIHdlIGNhbiByZW5hbWUgaXQsIGByYl9zdGF0ZWAgZm9yIGV4YW1wbGUpDQoNCmBgYEMNCnN0 YXRpYyBWQUxVRQ0Kc3RyX2xlbmd0aChyYl9leGVjdXRpb25fY29udGV4dF90ICplYywgVkFMVUUg c2VsZikNCnsNCiAgcmV0dXJuIExPTkcyTlVNKFJTVFJJTkdfTEVOKHNlbGYpKTsNCn0NCmBgYA0K DQooMykgRGVmaW5lIGFuIGludHJpbnNpYyBmdW5jdGlvbiB0YWJsZSBhbmQgbG9hZCBgLnJiYCBm aWxlIHdpdGggdGhlIHRhYmxlLg0KDQpgYGBDDQpJbml0X1N0cmluZyh2b2lkKQ0Kew0KICAuLi4N CiAgc3RhdGljIGNvbnN0IHJiX2V4cG9ydF9pbnRyaW5zaWNfdCB0YWJsZVtdID0gew0KICAgIFJC X0VYUE9SVF9JTlRSSU5TSUMoc3RyX2xlbmd0aCwgMCksIC8vIDAgaXMgYXJpdHkNCiAgICAuLi4N CiAgfTsNCiAgcmJfdm1fYnVpbHRpbl9sb2FkKCJzdHJpbmciLCB0YWJsZSk7DQp9DQpgYGANCg0K IyMjIEV4YW1wbGUNCg0KVGhlcmUgYXJlIHR3byBleGFtcGxlczoNCg0KKDEpIENvbXBhcmFibGUg bW9kdWxlOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9rbzEvN2YxOGU2NmQxYWUyNWJiMzBjN2U4 MjNhYTU3ZjBkMzENCigyKSBUcmFjZVBvaW50IGNsYXNzOiBodHRwczovL2dpc3QuZ2l0aHViLmNv bS9rbzEvOTY5ZTU2OTBjZGE2MTgwZWQ5ODllYjc5NjE5Y2E2MTINCg0KIyMgKDIpIExvYWQgZnJv bSBiaW5hcnkgZmlsZSB3aXRoIGxhenkgbG9hZGluZw0KDQpMb2FkaW5nIG1hbnkgIi5yYiIgZmls ZXMgc2xvd3MgZG93biBzdGFydHVwIHRpbWUuDQoNCldlIGhhdmUgYElTZXEjdG9fYmluYXJ5YCBt ZXRob2QgdG8gZ2VuZXJhdGUgY29tcGlsZWQgYmluYXJ5IGRhdGEgc28gdGhhdCB3ZSBjYW4gZWxp bWluYXRlIHBhcnNlL2NvbXBpbGUgdGltZS4NCkZvcnR1bmF0ZWx5LCBbRmVhdHVyZSAjMTYxNjNd IG1ha2VzIGJpbmFyeSBkYXRhIHNtYWxsLg0KRnVydGhlcm1vcmUsIGVuYWJsaW5nICJsYXp5IGxv YWRpbmciIGZlYXR1cmUgaW1wcm92ZXMgc3RhcnR1cCB0aW1lIGJlY2F1c2Ugd2UgZG9uJ3QgbmVl ZCB0byBnZW5lcmF0ZSBjb21wbGV0ZSBJU2Vxcy4gYFVTRV9MQVpZX0xPQURgIGluIHZtX2NvcmUu aCBlbmFibGVzIHRoaXMgZmVhdHVyZS4NCg0KV2UgbmVlZCB0byBjb21iaW5lIGJpbmFyeS4gVGhl cmUgYXJlIHNldmVyYWwgd2F5IChjb252ZXJ0IGludG8gQydzIGFycmF5LCBjb25jYXQgd2l0aCBv Ympjb3B5IGlmIGF2YWlsYWJsZSBhbmQgc28gb24pLg0KDQojIEV2YWx1YXRpb24NCg0KRXZhbHVh dGlvbnMgYXJlIHdyaXR0ZW4gaW4gbXkgUnVieUthaWdpIDIwMTkgcHJlc2VudGF0aW9uOiA8aHR0 cHM6Ly9ydWJ5a2FpZ2kub3JnLzIwMTkvcHJlc2VudGF0aW9ucy9rbzEuaHRtbD4NCg0KUG9pbnRz Og0KDQoqIENhbGxpbmcgb3ZlcmhlYWQgb2YgUnVieSBtZWh0b2RzIHdpdGggaW50cmluc2ljIGZ1 bmN0aW9ucw0KICAqIE5vcm1hbCBjYXNlLCBpdCBpcyBhbG1vc3Qgc2FtZSBhcyBDLW1ldGhvZHMg dXNpbmcgb3B0aW1pemVkIFZNIGluc3RydWN0aW9ucy4NCiAgKiBXaXRoIGtleXdvcmQgcGFyYW1l dGVycywgaXQgaXMgZmFzdGVyIHRoYW4gQy1tZXRob2RzLg0KICAqIFdpdGggb3B0aW9uYWwgcGFy YW1ldGVycywgaXQgaXMgeDIgc2xvd2VyIHNvIGl0IHNob3VsZCBiZSBzb2x2ZWQgKCoxKS4NCg0K KiBMb2FkaW5nIG92ZXJoZWFkDQogICogUmVxdWlyaW5nICIucmIiIGZpbGVzIGlzIGFib3V0IHgx NSBzbG93ZXIgdGhhbiBkZWZpbmluZyBDIG1ldGhvZHMuDQogICogTG9hZGluZyBiaW5hcnkgZGF0 YSB3aXRoIGxhenkgbG9hZGluZyB0ZWNobmlxdWUgaXMgYWJvdXQgeDIgc2xvd2VyIHRoYW4gQyBt ZXRob2RzLiBOb3Qgc28gYmFkIHJlc3VsdC4NCiAgKiBBdCBSdWJ5S2FpZ2kgMjAxOSwgdGhlIGJp bmFyeSBkYXRhIHdhcyB2ZXJ5IGh1Z2UsIGJ1dCBbRmVhdHVyZSAjMTYxNjNdIHJlZHVjZXMgdGhl IHNpemUgb2YgYmluYXJ5IGRhdGEuDQoNClsqMV0gSW50cm9kdWNpbmcgc3BlY2lhbCAib3Zlcmxv YWRpbmciIHNwZWNpZmllciBjYW4gc29sdmUgaXQgYmVjYXVzZSB3ZSBkb24ndCBuZWVkIHRvIGFz c2lnbiBvcHRpb25hbCBwYXJhbWV0ZXJzLiBGaXJzdCBtZXRob2QgbG9va3VwIGNhbiBiZSBzbG93 ZWQgZG93biwgYnV0IHdlIGNhbiBjYWNoZSB0aGUgbWV0aG9kIGxvb2t1cCByZXN1bHRzICh3aXRo IGFyaXR5KS4NCg0KYGBgcnVieQ0KIyBleGFtcGxlIHN5bnRheA0Kb3ZlcmxvYWQgZGVmIGZvbyhh KQ0KICBfX2ludHJpbnNpY19fLmZvbzEoYSkNCmVuZA0Kb3ZlcmxvYWQgZGVmIGZvbyhhLCBiKQ0K ICBfX2ludHJpbnNpY19fLmZvbzIoYSwgYikNCmVuZA0KYGBgDQoNCiMgSW1wbGVtZW50YXRpb24N Cg0KRG9uZToNCiogQ29tcGlsZSBjYWxsaW5nIGludHJpbnNpYyBmdW5jdGlvbnMgKC5yYikNCiog RXhwb3J0aW5nIGludHJpbnNpYyBmdW5jdGlvbiB0YWJsZSAoLmMpDQoNCk5vdCB5ZXQ6DQoqIExv YWRpbmcgZnJvbSBiaW5hcnkgbWVjaGFuaXNtDQoqIEF0dHJpYnV0ZSBzeW50YXgNCiogbW9zdCBv ZiBidWlsdC1pbiBjbGFzcyByZXBsYWNlbWVudA0KDQpOb3csIG1pbmlydWJ5IGFuZCBydWJ5IChs aWJydWJ5KSBsb2FkICcqLnJiJyBmaWxlcyBkaXJlY3RseS4gSG93ZXZlciwgcnVieSAobGlicnVi eSkgc2hvdWxkIGxvYWQgY29tcGlsZWQgYmluYXJ5IGZpbGUuDQoNCiMgRGlzY3Vzc2lvbg0KDQoj IyBEbyB3ZSByZXdyaXRlIGFsbCBvZiBidWlsdC1pbiBjbGFzc2VzIGF0IG9uY2U/DQoNCk5vLiBX ZSBjYW4gdHJ5IGFuZCBtaWdyYXRlIHRoZW0uDQoNCiMjIERvIHdlIHN1cHBvcnQgaW50cmluc2lj IG1lY2hhbmlzbSBmb3IgQy1leHRlbnNpb24gbGlicmFyaWVzPw0KDQpNYXliZSBpbiBmdXR1cmUu IE5vdyB3ZSBjYW4gdHJ5IGl0IG9uIE1SSSBjb3Jlcy4NCg0KIyMgYF9faW50cmluc2ljX19gIGtl eXdvcmQNCg0KT24gbXkgUnVieUthaWdpIDIwMTkgdGFsaywgSSBwcm9wb3NlZCBgX19DX19gLCBi dXQgSSB0aGluayBgX19pbnRyaW5zaWNfX2AgaXMgbW9yZSBkZXNjcmlwdGl2ZSAoYnV0IGEgYml0 IGxvbmcpLg0KQW5vdGhlciBpZGVhIGlzIGBSdWJ5Vk06OmludHJpbnNpYy5mdW5jKC4uLilgLg0K DQpJIGhhdmUgbm8gc3Ryb25nIG9waW5pb24uIFdlIGNhbiBjaGFuZ2UgdGhpcyBzeW50YXggdW50 aWwgd2UgZXhwb3NlIHRoaXMgc3ludGF4IGZvciBDLWV4dGVuc2lvbnMuDQoNCiMjIENhbiB3ZSBz dXBwb3J0IGBfX2ludHJpbnNpY19fYCBpbiBub3JtYWwgUnVieSBzY3JpcHQ/DQoNCk5vLiBUaGlz IGZlYXR1cmUgaXMgb25seSBmb3IgYnVpbHQtaW4gZmVhdHVyZXMuDQpBcyBJIGRlc2NyaWJlZCzj gIBjYWxsaW5nIGludHJpbnNpYyBmdW5jdGlvbiBzeW50YXggaGFzIHNldmVyYWwgcmVzdHJpY3Rp b24gY29tcGFyZSB3aXRoIG5vcm1hbCBtZXRob2QgY2FsbHMsIHNvIHRoYXQgSSB0aGluayB0aGV5 IGFyZSBub3QgZXhwb3NlZCBhcyBub3JtYWwgUnVieSBwcm9ncmFtcywgSU1PLg0KDQojIyBTaG91 bGQgd2UgbWFpbnRhaW4gaW50cmluc2ljIGZ1bmN0aW9uIHRhYmxlPw0KDQpOb3csIHllcy4gQW5k IHdlIG5lZWQgdG8gbWFrZSB0aGlzIHRhYmxlIGF1dG9tYXRpY2FsbHkgYmVjYXVzZSBtYW51YWwg b3BlcmF0aW9ucyBjYW4gaW50cm9kdWNlIG1pc3Rha2UgdmVyeSBlYXNpbHkuDQoNCkNvcnJlc3Bv bmRpbmcgIi5yYiIgZmlsZSAoYHRyYWNlX3BvaW50LnJiYCwgZm9yIGV4YW1wbGUpIGtub3dzIHdo aWNoIGludHJpbnNpYyBmdW5jdGlvbnMgYXJlIG5lZWRlZC4NClBhcnNpbmcgIi5yYiIgZmlsZSBj YW4gZ2VuZXJhdGUgdGhlIHRhYmxlIGF1dG9tYXRpY2FsbHkuDQpIb3dldmVyLCB3ZSBuZWVkIGEg bGF0ZXN0IHZlcnNpb24gUnVieSB0byBwYXJzZSB0aGUgc2NyaXB0cyBpZiB0aGV5IHVzZXMgc3lu dGF4IHdoaWNoIGFyZSBzdXBwb3J0ZWQgYnkgbGF0ZXN0IHZlcnNpb24gb2YgUnVieS4NCg0KRm9y IGV4YW1wbGUsIHdlIG5lZWQgUnVieSAyLjcgbWFzdGVyIHRvIHBhcnNlIGEgc2NyaXB0IHdoaWNo IHVzZXMgcGF0dGVybiBtYXRjaGluZyBzeW50YXguDQpIb3dldmVyLCB0aGUgc3lzdGVtJ3MgcnVi eSAoYEJBU0VfUlVCWWApIHNob3VsZCBiZSBvbGRlciB2ZXJzaW9uLiBUaGlzIGlzIG9uZSBvZiBi b290c3RyYXAgcHJvYmxlbS4NClRoaXMgaXMgImNoaWNrZW4tYW5kLWVnZyIgcHJvYmxlbS4NCg0K VGhlcmUgYXJlIHNldmVyYWwgaWRlYXMuDQoNCigxKSBQYXJzZSBhICIuYyIgZmlsZSB0byBnZW5l cmF0ZSBhIHRhYmxlIHVzaW5nIGZ1bmN0aW9uIGF0dHJpYnV0ZS4NCg0KYGBgQw0KSU5UUklOU0lD X0ZVTkNUSU9OIHN0YXRpYyBWQUxVRQ0Kc3RyX2xlbmd0aCguLi4pDQouLi4NCmBgYA0KDQooMikg QnVpbGQgYW5vdGhlciBydWJ5IHBhcnNlciB3aXRoIHNvdXJjZSBjb2RlLCAicGFyc2UtcnVieSIu DQoNCiogMS4gZ2VuZXJhdGUgcGFyc2UtcnVieSB3aXRoIEMgY29kZS4NCiogMi4gcnVuIHBhcnNl LXJ1YnkgdG8gZ2VuZXJhdGUgdGFibGVzIGJ5IHBhcnNpbmcgIi5yYiIgZmlsZXMuIFRoaXMgcHJv Y2VzcyBpcyB3cml0dGVuIGluIEMuDQoqIDMuIGJ1aWxkIG1pbmlydWJ5IGFuZCBydWJ5IHdpdGgg Z2VuZXJhdGVkIHRhYmxlLg0KDQpXZSBjYW4gbWFrZSBpdCwgYnV0IGl0IGludHJvZHVjZXMgbmV3 IGNvbXBsZXggYnVpbGQgcHJvY2Vzcy4NCg0KKDMpIFJlc3RyaWN0ICIucmIiIHN5bnRheA0KDQpS ZXN0cmljdCBzeW50YXggd2hpY2ggY2FuIGJlIHVzZWQgYnkgYEJBU0VfUlVCWWAgZm9yIGJ1aWx0 LWluICIucmIiIGZpbGVzLg0KSXQgaXMgZWFzeSB0byBsaXN0IHVwIGludHJpbnNpYyBmdW5jdGlv bnMgdXNpbmcgUmlwcGVyIG9yIEFTVCBvciBgSVNlcSN0b19hYC4NCg0KKDMpIGlzIG1vc3QgZWFz eSBidXQgbm90IHNvIGNvb2wuDQooMikgaXMgZmxleGlibGUsIGJ1dCBpdCBuZWVkcyBpbXBsZW1l bnRhdGlvbiBjb3N0IGFuZCBpbmNyZWFzZXMgYnVpbGQgY29tcGxleGl0eS4NCg0KDQojIyBQYXRo IG9mICcqLnJiJyBmaWxlcyBhbmQgaW5zdGFsbCBvciBub3QNCg0KVGhlIHBhdGggb2YgYHByZWx1 ZGUucmJgIGlzIGA8aW50ZXJuYWw6cHJlbHVkZT5gLiBXZSBoYXZlIHNldmVyYWwgb3B0aW9ucy4N Cg0KKiAoMSkgRG9uJ3QgaW5zdGFsbCAiLnJiIiBmaWxlcyBhbmQgbWFrZSB0aGVzZSBwYXRoIGA8 aW50ZXJuYWw6dHJhY2VfcG9pbnQucmI+YCwgZm9yIGV4YW1wbGUuDQoqICgyKSBJbnN0YWxsICIu cmIiIGFuZCBtYWtlIHRoZXNlIHBhdGhzIG5vbi1leGlzdGluZyBwYXRocyBzdWNoIGFzIGA8aW50 ZXJuYWw+L2luc3RhbGxkaXIvbGliL2J1aWx0aW4vdHJhY2VfcG9pbnQucmJgLg0KKiAoMykgSW5z dGFsbCAiLnJiIiBhbmQgbWFrZSB0aGVzZSBwYXRocyByZWFsIHBhdGhzLg0KDQpXZSB3aWxsIHRy YW5zbGF0ZSAiLnJiIiBmaWxlcyBpbnRvIGJpbmFyeSBkYXRhIGFuZCBsaW5rIHRoZW0gaW50byBg cnVieWAgKGBsaWJydWJ5YCkuDQpTbyB0aGUgbW9kaWZpY2F0aW9uIG9mIGluc3RhbGxlZCAiLnJi IiBmaWxlcyBhcmUgbm90IGFmZmVjdCB0aGUgYmVoYXZpb3IuIEl0IGNhbiBpbnRyb2R1Y2UgY29u ZnVzaW9uIHNvIHRoYXQgSSB3cm90ZSAoMSkgYW5kICgyKS4NCg0KRm9yICgzKSwgaXQgaXMgcG9z c2libGUgdG8gbG9hZCAiLnJiIiBmaWxlcyBpZiB0aGVyZSBpcyBtb2RpZmljYXRpb24gKG1heWJl IGRldGVjdCBieSBtb2RpZmllZCBkYXRlKSBhbmQgbG9hZCBmcm9tIHRoZW0uIEJ1dCBpdCB3aWxs IGludHJvZHVjZSBhbiBvdmVyaGVhZCAoZGlzayBhY2Nlc3Mgb3ZlcmhlYWQpLg0KDQojIyBDb21w YXRpYmlsaXR5IGlzc3VlPw0KDQpUaGVyZSBhcmUgc2V2ZXJhbCBjb21wYXRpYmlsaXR5IGlzc3Vl cy4gRm9yIGV4YW1wbGUsIGBUcmFjZVBvaW50YCBgYy1jYWxsYCBldmVudHMgYXJlIGNoYW5nZWQg dG8gYGNhbGxgIGV2ZW50cy4NCkFuZCB0aGVyZSBhcmUgbW9yZSBpbmNvbXBhdGlibGVzLg0KV2Ug bmVlZCB0byBjaGVjayB0aGVtIGNhcmVmdWxseS4NCg0KIyMgQm9vdHN0cmFwIGlzc3VlPw0KDQpZ ZXMsIHRoZXJlIGFyZS4NCg0KTG9hZGluZyBgLnJiYCBmaWxlcyBhdCBib290IHRpbWluZyBvZiBh biBpbnRlcnByZXRlciBjYW4gY2F1c2UgcHJvYmxlbS4NCkZvciBleGFtcGxlLCBiZWZvcmUgaW5p dGlhbGl6aW5nIFN0cmluZyBjbGFzcywgdGhlIGNsYXNzIG9mIFN0cmluZyBsaXRlcmFsIGlzIDAg KGJlY2F1c2UgU3RyaW5nIGNsYXNzIGlzIG5vdCBnZW5lcmF0ZWQpLg0KDQpJIGludHJvZHVjZXMg c2V2ZXJhbCB3b3JrYXJvdW5kcyBidXQgd2UgbmVlZCB0byBtb2RpZnkgbW9yZS4NCg0KIyBDb25j bHVzaW9uDQoNCkhvdyBhYm91dCB0byBpbnRyb2R1Y2UgdGhpcyBtZWNoYW5pc20gYW5kIHRyeSBp dCBvbiBSdWJ5IDIuNz8NCldlIGNhbiByZXZlcnQgdGhlc2UgY2hhbmdlcyBpZiB3ZSBmb3VuZCBh bnkgdHJvdWJsZXMsIGlmIHdlIGRvbid0IGV4cG9zZSB0aGlzIG1lY2hhbmlzbSBhbmQgb25seSBp bnRlcm5hbCBjaGFuZ2VzLg0KDQoNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3Jn Lw0KClVuc3Vic2NyaWJlOiA8bWFpbHRvOnJ1YnktY29yZS1yZXF1ZXN0QHJ1YnktbGFuZy5vcmc/ c3ViamVjdD11bnN1YnNjcmliZT4KPGh0dHA6Ly9saXN0cy5ydWJ5LWxhbmcub3JnL2NnaS1iaW4v bWFpbG1hbi9vcHRpb25zL3J1YnktY29yZT4K