[ruby-core:121614] [Ruby Feature#21254] Inlining Class#new
From:
"tenderlovemaking (Aaron Patterson) via ruby-core" <ruby-core@...>
Date:
2025-04-09 22:18:32 UTC
List:
ruby-core #121614
SXNzdWUgIzIxMjU0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGVuZGVybG92ZW1ha2luZyAoQWFyb24g UGF0dGVyc29uKS4NCg0KDQpqZXogKEpha2UgWmltbWVybWFuKSB3cm90ZSBpbiAjbm90ZS02Og0K PiBJJ20gY3VyaW91czogY291bGQgd2UgYWRkIGEgc2Vjb25kIGNoZWNrIGFmdGVyIFt0aGlzIGNo ZWNrXShodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L2NvbXBhcmUvbWFzdGVyLi4uU2hvcGlm eTpydWJ5OmlubGluZS1uZXcjZGlmZi03ZTk4N2YxM2U3NThhNTFiZTIwZDljZTFlMzhhZDQ2Y2Fi YWUyYWViZGZlNjk2ODcyMGYwZDU3MGRiNjE3NzJhUjkxOCkgc3VjaCB0aGF0IGlmIHRoZSBtZXRo b2QgZW50cnkgaXMgYFZNX01FVEhPRF9UWVBFX1pTVVBFUmAsIHdlIGtlZXAgc2VhcmNoaW5nIHRv IGZpbmQgdGhlIGBzdXBlcmAgbWV0aG9kIHRoYXQgd291bGQgYmUgY2FsbGVkIGFuZCBzZWUgaWYg dGhlIGBzdXBlcmAgbWV0aG9kIGlzIGByYl9jbGFzc19uZXdfaW5zdGFuY2VfcGFzc19rd2A/IFBs dXMgYWxzbyBpbmxpbmUgdGhlIGxvZ2ljIHRvIGNoZWNrIHdoZXRoZXIgdGhlIHByaXZhdGUgbWV0 aG9kIGNhbGwgaXMgb2theSBpbiB0aGF0IHNlY29uZCBjb25kaXRpb24gKGJlZm9yZSB0aGUgZmlu YWwgZGVvcHRpbWl6YXRpb24ganVtcCkuDQoNClllcywgSSB0aGluayB3ZSBjYW4gYWRkIGEgc3Bl Y2lhbCBjaGVjayBmb3IgWlNVUEVSIG1ldGhvZHMsIGJ1dCBvbmx5IGZvciBjYWxsIHNpdGVzIHdo ZXJlIHRoZSByZWNlaXZlciBpcyBgc2VsZmA6DQoNCmBgYHJ1YnkNCmNsYXNzIEENCiAgcHJpdmF0 ZV9jbGFzc19tZXRob2QgOm5ldw0KDQogIGRlZiBzZWxmLm1ha2UNCiAgICBuZXcgIyBmYXN0IHBh dGgNCiAgZW5kDQplbmQNCg0KY2xhc3MgQg0KICBwcml2YXRlX2NsYXNzX21ldGhvZCA6bmV3DQoN CiAgZGVmIHNlbGYubWFrZQ0KICAgIHNlbGYubmV3ICMgZmFzdCBwYXRoDQogIGVuZA0KZW5kDQoN CmNsYXNzIEMNCiAgZGVmIHNlbGYubWFrZSBtDQogICAgbS5uZXcgIyBmYXN0IHBhdGggZGVwZW5k cyBvbiBtDQogIGVuZA0KZW5kDQoNCkMubWFrZShPYmplY3QpICMgRmFzdCBQYXRoDQpDLm1ha2Uo QSkgIyBTbG93IFBhdGggKGV4Y2VwdGlvbikNCkMubWFrZShCKSAjIFNsb3cgUGF0aCAoYWxzbyBl eGNlcHRpb24pDQpgYGANCg0KSSBtYWRlIGEgcGF0Y2ggZm9yIGl0IFtoZXJlXShodHRwczovL2dp dGh1Yi5jb20vcnVieS9ydWJ5L2NvbW1pdC9iOGUzN2ZkNWNjNTg4ZDA1NTc2YjI0YzEzZjk0YzU0 NDA5YjJhOWRiKSwgYnV0IEkgaGF2ZW4ndCB0ZXN0ZWQgaXQgaW4gQ0kgeWV0Lg0KDQotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGZWF0dXJlICMyMTI1NDogSW5saW5p bmcgQ2xhc3MjbmV3DQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMjEyNTQjY2hh bmdlLTExMjY2Ng0KDQoqIEF1dGhvcjogdGVuZGVybG92ZW1ha2luZyAoQWFyb24gUGF0dGVyc29u KQ0KKiBTdGF0dXM6IE9wZW4NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCldlIHdvdWxkIGxpa2UgdG8gcHJvcG9zZSBpbmxpbmluZyBZQVJWIGJ5dGVjb2RlIGZvciBz cGVlZGluZyB1cCBvYmplY3QgYWxsb2NhdGlvbnMsIHNwZWNpZmljYWxseSBpbmxpbmluZyB0aGUg YENsYXNzI25ld2AgbWV0aG9kLiAgSW4gb3JkZXIgdG8gc3VwcG9ydCBpbmxpbmluZyB0aGlzIG1l dGhvZCwgd2Ugd291bGQgbGlrZSB0byBpbnRyb2R1Y2UgYSBuZXcgWUFSViBpbnN0cnVjdGlvbiBg b3B0X25ld2AuICBUaGlzIGluc3RydWN0aW9uIHdpbGwgYWxsb2NhdGUgYW4gb2JqZWN0IGlmIHRo ZSBkZWZhdWx0IGFsbG9jYXRvciBpcyBub3Qgb3ZlcnJpZGRlbiwgb3RoZXJ3aXNlIGl0IHdpbGwg anVtcCB0byBhIOKAnHNsb3cgcGF0aOKAnSBmb3IgY2FsbGluZyBhIG1ldGhvZC4NCg0KYENsYXNz I25ld2AgZXNwZWNpYWxseSBiZW5lZml0cyBmcm9tIGlubGluaW5nIGZvciB0d28gcmVhc29uczoN CjEuIENhbGxpbmcgYGluaXRpYWxpemVgIGRpcmVjdGx5IG1lYW5zIHdlIGRvbid0IG5lZWQgdG8g YWxsb2NhdGUgYSB0ZW1wb3JhcnkgaGFzaCBmb3Iga2V5d29yZCBhcmd1bWVudHMNCjIuIFdlIGFy ZSBhYmxlIHRvIHVzZSBhbiBpbmxpbmUgY2FjaGUgd2hlbiBjYWxsaW5nIHRoZSBgaW5pdGlhbGl6 ZWAgbWV0aG9kDQoNClRoZSBwYXRjaCBjYW4gYmUgZm91bmQgW2hlcmVdKGh0dHBzOi8vZ2l0aHVi LmNvbS9ydWJ5L3J1YnkvcHVsbC8xMzA4MCksIGJ1dCBwbGVhc2UgZmluZCBpbXBsZW1lbnRhdGlv biBkZXRhaWxzIGJlbG93Lg0KDQojIyBJbXBsZW1lbnRhdGlvbiBEZXRhaWxzDQpUaGlzIHBhdGNo IG1vZGlmaWVzIHRoZSBjb21waWxlciB0byBlbWl0IHNwZWNpYWwgaW5zdHJ1Y3Rpb25zIHdoZW4g aXQgc2VlcyBhIGNhbGxzaXRlIHRoYXQgdXNlcyDigJxuZXfigJ0uICBCZWZvcmUgdGhpcyBwYXRj aCwgY2FsbGluZyBgT2JqZWN0Lm5ld2Agd291bGQgcmVzdWx0IGluIGJ5dGVjb2RlIGxpa2UgdGhp czoNCg0KYGBgDQpydWJ5IC0tZHVtcD1pbnNucyAtZSdPYmplY3QubmV3Jw0KPT0gZGlzYXNtOiAj PElTZXE6PG1haW4+QC1lOjEgKDEsMCktKDEsMTApPg0KMDAwMCBvcHRfZ2V0Y29uc3RhbnRfcGF0 aCAgICAgICAgICAgICAgICAgICA8aWM6MCBPYmplY3Q+ICAgICAgICAgICAgICggICAxKVtMaV0N CjAwMDIgb3B0X3NlbmRfd2l0aG91dF9ibG9jayAgICAgICAgICAgICAgICAgPGNhbGxkYXRhIW1p ZDpuZXcsIGFyZ2M6MCwgQVJHU19TSU1QTEU+DQowMDA0IGxlYXZlDQpgYGANCg0KV2l0aCB0aGlz IHBhdGNoLCB0aGUgYnl0ZWNvZGUgbG9va3MgbGlrZSB0aGlzOg0KDQpgYGANCi4vcnVieSAtLWR1 bXA9aW5zbnMgLWUnT2JqZWN0Lm5ldycNCj09IGRpc2FzbTogIzxJU2VxOjxtYWluPkAtZToxICgx LDApLSgxLDEwKT4NCjAwMDAgb3B0X2dldGNvbnN0YW50X3BhdGggICAgICAgICAgICAgICAgICAg PGljOjAgT2JqZWN0PiAgICAgICAgICAgICAoICAgMSlbTGldDQowMDAyIHB1dG5pbA0KMDAwMyBz d2FwDQowMDA0IG9wdF9uZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjYWxsZGF0 YSFtaWQ6bmV3LCBhcmdjOjAsIEFSR1NfU0lNUExFPiwgMTENCjAwMDcgb3B0X3NlbmRfd2l0aG91 dF9ibG9jayAgICAgICAgICAgICAgICAgPGNhbGxkYXRhIW1pZDppbml0aWFsaXplLCBhcmdjOjAs IEZDQUxMfEFSR1NfU0lNUExFPg0KMDAwOSBqdW1wICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAxNA0KMDAxMSBvcHRfc2VuZF93aXRob3V0X2Jsb2NrICAgICAgICAgICAgICAgICA8 Y2FsbGRhdGEhbWlkOm5ldywgYXJnYzowLCBBUkdTX1NJTVBMRT4NCjAwMTMgc3dhcA0KMDAxNCBw b3ANCjAwMTUgbGVhdmUNCmBgYA0KDQpUaGUgbmV3IGBvcHRfbmV3YCBpbnN0cnVjdGlvbiBjaGVj a3Mgd2hldGhlciBvciBub3QgdGhlIGBuZXdgIGltcGxlbWVudGF0aW9uIGlzIHRoZSBkZWZhdWx0 IOKAnGFsbG9jYXRvcuKAnSBpbXBsZW1lbnRhdGlvbi4gIElmIGl0IGlzIHRoZSBkZWZhdWx0IGFs bG9jYXRvciwgdGhlbiB0aGUgaW5zdHJ1Y3Rpb24gd2lsbCBhbGxvY2F0ZSB0aGUgb2JqZWN0IGFu ZCBjYWxsIGluaXRpYWxpemUgcGFzc2luZyBwYXJhbWV0ZXJzIHRvIGluaXRpYWxpemUgYnV0IG5v dCB0byBgbmV3YC4gIElmIHRoZSBtZXRob2QgaXMgbm90IHRoZSBkZWZhdWx0IGFsbG9jYXRvciBp bXBsZW1lbnRhdGlvbiwgaXQgd2lsbCBqdW1wIHRvIHRoZSBub3JtYWwgbWV0aG9kIGRpc3BhdGNo IGluc3RydWN0aW9ucy4NClBlcmZvcm1hbmNlIEltcHJvdmVtZW50cw0KVGhpcyBwYXRjaCBpbXBy b3ZlcyBwZXJmb3JtYW5jZSBvZiBhbGwgYWxsb2NhdGlvbnMgdGhhdCB1c2UgdGhlIG5vcm1hbCDi gJxuZXfigJ0gbWV0aG9kIGZvciBhbGxvY2F0aW9uLiAgSGVyZSBhcmUgdHdvIGV4YW1wbGVzIChh bGwgb2YgdGhlc2UgYmVuY2htYXJrcyBjb21wYXJlIFJ1YnkgMy40LjIgYWdhaW5zdCBSdWJ5IG1h c3RlciB3aXRoIGlubGluaW5nIHBhdGNoKToNCg0KQSBzaW1wbGUgYE9iamVjdC5uZXdgIGluIGEg aG90IGxvb3AgaW1wcm92ZXMgYnkgYWJvdXQgMjQlOg0KDQpgYGANCmh5cGVyZmluZSAicnVieSAt LWRpc2FibGUtZ2VtcyAtZSdpID0gMDsgd2hpbGUgaSA8IDEwXzAwMF8wMDA7IE9iamVjdC5uZXc7 IGkgKz0gMTsgZW5kJyIgIi4vcnVieSAtLWRpc2FibGUtZ2VtcyAtZSdpID0gMDsgd2hpbGUgaSA8 IDEwXzAwMF8wMDA7IE9iamVjdC5uZXc7IGkgKz0gMTsgZW5kJyINCkJlbmNobWFyayAxOiBydWJ5 IC0tZGlzYWJsZS1nZW1zIC1lJ2kgPSAwOyB3aGlsZSBpIDwgMTBfMDAwXzAwMDsgT2JqZWN0Lm5l dzsgaSArPSAxOyBlbmQnDQogIFRpbWUgKG1lYW4gwrEgz4MpOiAgICAgNDM2LjYgbXMgwrEgICAz LjMgbXMgICAgW1VzZXI6IDQzMi4zIG1zLCBTeXN0ZW06IDMuOCBtc10NCiAgUmFuZ2UgKG1pbiDi gKYgbWF4KTogICA0MzAuNSBtcyDigKYgNDQyLjYgbXMgICAgMTAgcnVucw0KIA0KQmVuY2htYXJr IDI6IC4vcnVieSAtLWRpc2FibGUtZ2VtcyAtZSdpID0gMDsgd2hpbGUgaSA8IDEwXzAwMF8wMDA7 IE9iamVjdC5uZXc7IGkgKz0gMTsgZW5kJw0KICBUaW1lIChtZWFuIMKxIM+DKTogICAgIDM1MS4x IG1zIMKxICAgMy42IG1zICAgIFtVc2VyOiAzNDcuNCBtcywgU3lzdGVtOiAzLjMgbXNdDQogIFJh bmdlIChtaW4g4oCmIG1heCk6ICAgMzQzLjkgbXMg4oCmIDM1Ny40IG1zICAgIDEwIHJ1bnMNCiAN ClN1bW1hcnkNCiAgLi9ydWJ5IC0tZGlzYWJsZS1nZW1zIC1lJ2kgPSAwOyB3aGlsZSBpIDwgMTBf MDAwXzAwMDsgT2JqZWN0Lm5ldzsgaSArPSAxOyBlbmQnIHJhbg0KICAgIDEuMjQgwrEgMC4wMiB0 aW1lcyBmYXN0ZXIgdGhhbiBydWJ5IC0tZGlzYWJsZS1nZW1zIC1lJ2kgPSAwOyB3aGlsZSBpIDwg MTBfMDAwXzAwMDsgT2JqZWN0Lm5ldzsgaSArPSAxOyBlbmQnDQpgYGANCg0KVXNpbmcgYSBzaW5n bGUga2V5d29yZCBhcmd1bWVudCBpcyBpbXByb3ZlZCBieSBhYm91dCA3MiU6DQoNCmBgYA0KPiBo eXBlcmZpbmUgInJ1YnkgLS1kaXNhYmxlLWdlbXMgLWUnaSA9IDA7IHdoaWxlIGkgPCAxMF8wMDBf MDAwOyBIYXNoLm5ldyhjYXBhY2l0eTogMCk7IGkgKz0gMTsgZW5kJyIgIi4vcnVieSAtLWRpc2Fi bGUtZ2VtcyAtZSdpID0gMDsgd2hpbGUgaSA8IDEwXzAwMF8wMDA7IEhhc2gubmV3KGNhcGFjaXR5 OiAwKTsgaSArPSAxOyBlbmQnIg0KQmVuY2htYXJrIDE6IHJ1YnkgLS1kaXNhYmxlLWdlbXMgLWUn aSA9IDA7IHdoaWxlIGkgPCAxMF8wMDBfMDAwOyBIYXNoLm5ldyhjYXBhY2l0eTogMCk7IGkgKz0g MTsgZW5kJw0KICBUaW1lIChtZWFuIMKxIM+DKTogICAgICAxLjA4MiBzIMKxICAwLjAwNyBzICAg IFtVc2VyOiAxLjA3NCBzLCBTeXN0ZW06IDAuMDA4IHNdDQogIFJhbmdlIChtaW4g4oCmIG1heCk6 ICAgIDEuMDcxIHMg4oCmICAxLjA5MSBzICAgIDEwIHJ1bnMNCiANCkJlbmNobWFyayAyOiAuL3J1 YnkgLS1kaXNhYmxlLWdlbXMgLWUnaSA9IDA7IHdoaWxlIGkgPCAxMF8wMDBfMDAwOyBIYXNoLm5l dyhjYXBhY2l0eTogMCk7IGkgKz0gMTsgZW5kJw0KICBUaW1lIChtZWFuIMKxIM+DKTogICAgIDYy Ny42IG1zIMKxICAgNC44IG1zICAgIFtVc2VyOiA2MjIuNiBtcywgU3lzdGVtOiA0LjUgbXNdDQog IFJhbmdlIChtaW4g4oCmIG1heCk6ICAgNjIyLjEgbXMg4oCmIDYzNy4yIG1zICAgIDEwIHJ1bnMN CiANClN1bW1hcnkNCiAgLi9ydWJ5IC0tZGlzYWJsZS1nZW1zIC1lJ2kgPSAwOyB3aGlsZSBpIDwg MTBfMDAwXzAwMDsgSGFzaC5uZXcoY2FwYWNpdHk6IDApOyBpICs9IDE7IGVuZCcgcmFuDQogICAg MS43MiDCsSAwLjAyIHRpbWVzIGZhc3RlciB0aGFuIHJ1YnkgLS1kaXNhYmxlLWdlbXMgLWUnaSA9 IDA7IHdoaWxlIGkgPCAxMF8wMDBfMDAwOyBIYXNoLm5ldyhjYXBhY2l0eTogMCk7IGkgKz0gMTsg ZW5kJw0KYGBgDQoNClRoZSBwZXJmb3JtYW5jZSBpbmNyZWFzZSBkZXBlbmRzIG9uIHRoZSBudW1i ZXIgYW5kIHR5cGUgb2YgcGFyYW1ldGVycyBwYXNzZWQgdG8gYGluaXRpYWxpemVgLiAgRm9yIGV4 YW1wbGUsIGFuIGBpbml0aWFsaXplYCBtZXRob2QgdGhhdCB0YWtlcyAzIHBhcmFtZXRlcnMgY2Fu IHNlZSBhIHNwZWVkIGltcHJvdmVtZW50IG9mIH4zeDoNCg0KYGBgDQphYXJvbkB0Yy1sYW4tYWRh cHRlciB+L2cvcnVieSAoaW5saW5lLW5ldyk+IGNhdCB0ZXN0LnJiDQpjbGFzcyBGb28NCiAgZGVm IGluaXRpYWxpemUgYTosIGI6LCBjOg0KICBlbmQNCmVuZA0KaSA9IDANCndoaWxlIGkgPCAxMF8w MDBfMDAwDQogIEZvby5uZXcoYTogMSwgYjogMiwgYzogMykNCiAgRm9vLm5ldyhhOiAxLCBiOiAy LCBjOiAzKQ0KICBGb28ubmV3KGE6IDEsIGI6IDIsIGM6IDMpDQogIGkgKz0gMQ0KZW5kDQphYXJv bkB0Yy1sYW4tYWRhcHRlciB+L2cvcnVieSAoaW5saW5lLW5ldyk+IGh5cGVyZmluZSAicnVieSAt LWRpc2FibGUtZ2VtcyB0ZXN0LnJiIiAiLi9ydWJ5IC0tZGlzYWJsZS1nZW1zIHRlc3QucmIiDQpC ZW5jaG1hcmsgMTogcnVieSAtLWRpc2FibGUtZ2VtcyB0ZXN0LnJiDQogIFRpbWUgKG1lYW4gwrEg z4MpOiAgICAgIDMuNzAwIHMgwrEgIDAuMDMzIHMgICAgW1VzZXI6IDMuNjgxIHMsIFN5c3RlbTog MC4wMTggc10NCiAgUmFuZ2UgKG1pbiDigKYgbWF4KTogICAgMy42MzYgcyDigKYgIDMuNzUxIHMg ICAgMTAgcnVucw0KIA0KQmVuY2htYXJrIDI6IC4vcnVieSAtLWRpc2FibGUtZ2VtcyB0ZXN0LnJi DQogIFRpbWUgKG1lYW4gwrEgz4MpOiAgICAgIDEuMTgyIHMgwrEgIDAuMDEzIHMgICAgW1VzZXI6 IDEuMTczIHMsIFN5c3RlbTogMC4wMDggc10NCiAgUmFuZ2UgKG1pbiDigKYgbWF4KTogICAgMS4x NjUgcyDigKYgIDEuMjAzIHMgICAgMTAgcnVucw0KIA0KU3VtbWFyeQ0KICAuL3J1YnkgLS1kaXNh YmxlLWdlbXMgdGVzdC5yYiByYW4NCiAgICAzLjEzIMKxIDAuMDQgdGltZXMgZmFzdGVyIHRoYW4g cnVieSAtLWRpc2FibGUtZ2VtcyB0ZXN0LnJiDQpgYGANCg0KT25lIGZhY3RvciBpbiB0aGUgcGVy Zm9ybWFuY2UgaW5jcmVhc2UgZm9yIGtleXdvcmQgYXJndW1lbnRzIGlzIHRoYXQgaW5saW5pbmcg aXMgYWJsZSB0byBlbGltaW5hdGUgdGhlIGhhc2ggYWxsb2NhdGlvbiB3aGVuIGNhbGxpbmcg4oCc dGhyb3VnaOKAnSB0aGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBgQ2xhc3MjbmV3YDoNCg0KYGBgDQph YXJvbkB0Yy1sYW4tYWRhcHRlciB+L2cvcnVieSAoaW5saW5lLW5ldyk+IGNhdCB0ZXN0LnJiDQpj bGFzcyBGb28NCiAgZGVmIGluaXRpYWxpemUgYTosIGI6LCBjOg0KICBlbmQNCmVuZA0KZGVmIGFs bG9jcw0KICB4ID0gR0Muc3RhdCg6dG90YWxfYWxsb2NhdGVkX29iamVjdHMpDQogIHlpZWxkDQog IEdDLnN0YXQoOnRvdGFsX2FsbG9jYXRlZF9vYmplY3RzKSAtIHgNCmVuZA0KZGVmIHRlc3Q7IGFs bG9jcyB7IEZvby5uZXcoYTogMSwgYjogMiwgYzogMykgfTsgZW5kDQp0ZXN0DQpwIHRlc3QNCmFh cm9uQHRjLWxhbi1hZGFwdGVyIH4vZy9ydWJ5IChpbmxpbmUtbmV3KT4gcnVieSAtdiB0ZXN0LnJi DQpydWJ5IDMuNC4yICgyMDI1LTAyLTE1IHJldmlzaW9uIGQyOTMwZjhlN2EpICtQUklTTSBbYXJt NjQtZGFyd2luMjRdDQoyDQphYXJvbkB0Yy1sYW4tYWRhcHRlciB+L2cvcnVieSAoaW5saW5lLW5l dyk+IC4vcnVieSAtdiB0ZXN0LnJiDQpydWJ5IDMuNS4wZGV2ICgyMDI1LTA0LTAzVDEzOjAzOjE5 WiBpbmxpbmUtbmV3IDU2N2M1NDIwOGMpICtQUklTTSBbYXJtNjQtZGFyd2luMjRdDQoxDQpgYGAN Cg0KIyMgTWVtb3J5IEluY3JlYXNlDQoNCk9mIGNvdXJzZSB0aGlzIHBhdGNoIGlzIG5vdCDigJxm cmVl4oCdLiAgSW5saW5pbmcgdGhlIG1ldGhvZCBjYWxsIGFkZHMgZXh0cmEgWUFSViBpbnN0cnVj dGlvbnMuICBXZSBlc3RpbWF0ZSB0aGlzIHBhdGNoIGluY3JlYXNlcyBgbmV3YCBjYWxsIHNpdGVz IGJ5IGFib3V0IDEyMiBieXRlczoNCg0KYGBgDQphYXJvbkB0Yy1sYW4tYWRhcHRlciB+L2cvcnVi eSAoaW5saW5lLW5ldyk+IGNhdCB0ZXN0LnJiDQpyZXF1aXJlICJvYmpzcGFjZSINCmNsYXNzIEZv bw0KICBkZWYgaW5pdGlhbGl6ZQ0KICBlbmQNCmVuZA0KZGVmIHRlc3QNCiAgRm9vLm5ldw0KZW5k DQpwdXRzIE9iamVjdFNwYWNlLm1lbXNpemVfb2YoUnVieVZNOjpJbnN0cnVjdGlvblNlcXVlbmNl Lm9mKG1ldGhvZCg6dGVzdCkpKQ0KYWFyb25AdGMtbGFuLWFkYXB0ZXIgfi9nL3J1YnkgKGlubGlu ZS1uZXcpPiBydWJ5IC12IHRlc3QucmINCnJ1YnkgMy40LjIgKDIwMjUtMDItMTUgcmV2aXNpb24g ZDI5MzBmOGU3YSkgK1BSSVNNIFthcm02NC1kYXJ3aW4yNF0NCjU0NA0KYWFyb25AdGMtbGFuLWFk YXB0ZXIgfi9nL3J1YnkgKGlubGluZS1uZXcpPiAuL3J1YnkgLXYgdGVzdC5yYg0KcnVieSAzLjUu MGRldiAoMjAyNS0wNC0wM1QxMzowMzoxOVogaW5saW5lLW5ldyA1NjdjNTQyMDhjKSArUFJJU00g W2FybTY0LWRhcndpbjI0XQ0KNjU2DQpgYGANCg0KV2XigJl2ZSB0ZXN0ZWQgdGhpcyBpbiBTaG9w aWZ54oCZcyBtb25vbGl0aCwgY29tcGFyaW5nIFJ1YnkgMy40LjIgYW5kIFJ1YnkgMy41K2lubGlu aW5nLCBhbmQgaXQgc2VlbXMgdG8gaW5jcmVhc2UgdG90YWwgSVNFUSBtZW1lc2l6ZSBieSBhYm91 dCAzLjhtYiAocm91Z2hseSAwLjUlIGluY3JlYXNlIGluIElTRVEgc2l6ZSk6DQoNCmBgYA0KaXJi KG1haW4pOjAwMT4gNzM3MTkxOTcyIC0gNzMzMzU0Mzg4DQo9PiAzODM3NTg0DQpgYGANCg0KSG93 ZXZlciwgUnVieSAzLjUgaGFzIG1vcmUgb3ZlcmFsbCBJU0VRIG9iamVjdHMgdGhhbiBSdWJ5IDMu NC4yOg0KDQpgYGANCmFhcm9uQEFhcm9ucy1NYWNCb29rLVBybyB+L0Rvd25sb2Fkcz4gd2MgLWwg c2l6ZXMtaW5saW5lLnR4dA0KICA3ODk1NDUgc2l6ZXMtaW5saW5lLnR4dA0KYWFyb25AQWFyb25z LU1hY0Jvb2stUHJvIH4vRG93bmxvYWRzPiB3YyAtbCBzaXplcy0zLjQudHh0DQogIDc4OTQ3OSBz aXplcy0zLjQudHh0DQpgYGANCg0KV2Ugc2VlIHRvdGFsIGhlYXAgc2l6ZSBhcyByZXBvcnRlZCBi eSBgbWVtc2l6ZWAgdG8gb25seSBpbmNyZWFzZSBieSBhYm91dCAxTUI6DQoNCmBgYA0KaXJiKG1h aW4pOjAwMT4gMzk4MTA3NTYxNyAtIDM5Nzk5MjY1MDUNCj0+IDExNDkxMTINCmBgYA0KDQojIyBD aGFuZ2VzIHRvIGBjYWxsZXJgDQoNClRoaXMgcGF0Y2ggY2hhbmdlcyBgY2FsbGVyYCByZXBvcnRp bmcgaW4gdGhlIGBpbml0aWFsaXplYCBtZXRob2Q6DQoNCmBgYA0KYWFyb25AdGMtbGFuLWFkYXB0 ZXIgfi9nL3J1YnkgKGlubGluZS1uZXcpPiBjYXQgdGVzdC5yYg0KcmVxdWlyZSAib2Jqc3BhY2Ui DQoNCmNsYXNzIEZvbw0KICBkZWYgaW5pdGlhbGl6ZQ0KICAgIHB1dHMgY2FsbGVyDQogIGVuZA0K ZW5kDQoNCmRlZiB0ZXN0DQogIEZvby5uZXcNCmVuZA0KDQp0ZXN0DQphYXJvbkB0Yy1sYW4tYWRh cHRlciB+L2cvcnVieSAoaW5saW5lLW5ldyk+IHJ1YnkgLXYgdGVzdC5yYg0KcnVieSAzLjQuMiAo MjAyNS0wMi0xNSByZXZpc2lvbiBkMjkzMGY4ZTdhKSArUFJJU00gW2FybTY0LWRhcndpbjI0XQ0K dGVzdC5yYjoxMDppbiAnQ2xhc3MjbmV3Jw0KdGVzdC5yYjoxMDppbiAnT2JqZWN0I3Rlc3QnDQp0 ZXN0LnJiOjEzOmluICc8bWFpbj4nDQphYXJvbkB0Yy1sYW4tYWRhcHRlciB+L2cvcnVieSAoaW5s aW5lLW5ldyk+IC4vcnVieSAtdiB0ZXN0LnJiDQpydWJ5IDMuNS4wZGV2ICgyMDI1LTA0LTAzVDEz OjAzOjE5WiBpbmxpbmUtbmV3IDU2N2M1NDIwOGMpICtQUklTTSBbYXJtNjQtZGFyd2luMjRdDQp0 ZXN0LnJiOjEwOmluICdPYmplY3QjdGVzdCcNCnRlc3QucmI6MTM6aW4gJzxtYWluPicNCmBgYA0K DQpBcyB5b3UgY2FuIHNlZSBpbiB0aGUgYWJvdmUgb3V0cHV0LCB0aGUgYENsYXNzI25ld2AgZnJh bWUgaXMgZWxpbWluYXRlZC4gIEknbSBub3Qgc3VyZSBpZiBhbnlvbmUgcmVhbGx5IGNhcmVzIGFi b3V0IHRoaXMgZnJhbWUuICBXZSd2ZSB0ZXN0ZWQgdGhpcyBwYXRjaCBpbiBTaG9waWZ5J3MgQ0ks IGFuZCBkaWRuJ3QgZmluZCBhbnkgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhpcyBjYWxsc3RhY2su ICBIb3dldmVyLCB0aGlzIHBhdGNoIGRpZCByZXF1aXJlIFtjaGFuZ2VzIHRvIEVSQiBmb3IgZW1p dHRpbmcgd2FybmluZ3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC8xMzA4MC9m aWxlcyNkaWZmLTc2MjRmOTVmNTIxYjMzMzNkZThjNjg3ZDcwYzI1NzRhYTMxNjE2Y2ViZjk1MDRk OGJjZjY3Mzg2NWZiZjZlY2RSNDc1LVI0ODYpLg0KDQpUaGF0IHNhaWQsIGVsaW1pbmF0aW5nIHRo ZSBmcmFtZSBhbHNvIGhhcyB0aGUgc2lkZS1lZmZlY3Qgb2YgbWFraW5nIHNvbWUgb2Ygb3VyIGFs bG9jYXRpb24gdHJhY2luZyB0b29scyBhIGxpdHRsZSBtb3JlIHVzZWZ1bDoNCg0KYGBgDQphYXJv bkB0Yy1sYW4tYWRhcHRlciB+L2cvcnVieSAoaW5saW5lLW5ldyk+IGNhdCB0ZXN0LnJiDQpyZXF1 aXJlICJvYmpzcGFjZSINCg0KY2xhc3MgRm9vDQogIGRlZiB0ZXN0DQogICAgT2JqZWN0Lm5ldw0K ICBlbmQNCmVuZA0KDQpPYmplY3RTcGFjZS50cmFjZV9vYmplY3RfYWxsb2NhdGlvbnMgZG8NCiAg b2JqID0gRm9vLm5ldy50ZXN0DQogIHB1dHMgT2JqZWN0U3BhY2UuYWxsb2NhdGlvbl9jbGFzc19w YXRoKG9iaikNCiAgcHV0cyBPYmplY3RTcGFjZS5hbGxvY2F0aW9uX21ldGhvZF9pZChvYmopDQpl bmQNCmFhcm9uQHRjLWxhbi1hZGFwdGVyIH4vZy9ydWJ5IChpbmxpbmUtbmV3KT4gcnVieSAtdiB0 ZXN0LnJiDQpydWJ5IDMuNC4yICgyMDI1LTAyLTE1IHJldmlzaW9uIGQyOTMwZjhlN2EpICtQUklT TSBbYXJtNjQtZGFyd2luMjRdDQpDbGFzcw0KbmV3DQphYXJvbkB0Yy1sYW4tYWRhcHRlciB+L2cv cnVieSAoaW5saW5lLW5ldyk+IC4vcnVieSAtdiB0ZXN0LnJiDQpydWJ5IDMuNS4wZGV2ICgyMDI1 LTA0LTA3VDE5OjQwOjU5WiBpbmxpbmUtbmV3IDJjZjBlZmExOGUpICtQUklTTSBbYXJtNjQtZGFy d2luMjRdDQpGb28NCnRlc3QNCmBgYA0KDQpCZWZvcmUgaW5saW5pbmcsIGBPYmplY3RTcGFjZWAg d291bGQgcmVwb3J0IHRoZSBhbGxvY2F0aW9uIGNsYXNzIHBhdGggYW5kIG1ldGhvZCBpZCBhcyBg Q2xhc3MjbmV3YCB3aGljaCBpc24ndCB2ZXJ5IGhlbHBmdWwuIFdpdGggdGhlIGlubGluaW5nIHBh dGNoLCB3ZSBjYW4gc2VlIHRoYXQgdGhlIG9iamVjdCBpcyBhbGxvY2F0ZWQgaW4gYEZvbyN0ZXN0 YC4NCg0KIyMgU3VtbWFyeQ0KDQpJIHRoaW5rIHRoZSBvdmVyYWxsIG1lbW9yeSBpbmNyZWFzZSBp cyBtb2Rlc3QsIGFuZCB0aGUgY2hhbmdlIHRvIGBjYWxsZXJgIGlzIGFjY2VwdGFibGUgZXNwZWNp YWxseSBnaXZlbiB0aGUgcGVyZm9ybWFuY2UgaW5jcmVhc2UgdGhpcyBwYXRjaCBwcm92aWRlcy4N Cg0KDQoNCi0tIA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQogX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogcnVieS1jb3JlIG1haWxpbmcgbGlzdCAt LSBydWJ5LWNvcmVAbWwucnVieS1sYW5nLm9yZwogVG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBlbWFp bCB0byBydWJ5LWNvcmUtbGVhdmVAbWwucnVieS1sYW5nLm9yZwogcnVieS1jb3JlIGluZm8gLS0g aHR0cHM6Ly9tbC5ydWJ5LWxhbmcub3JnL21haWxtYW4zL2xpc3RzL3J1YnktY29yZS5tbC5ydWJ5 LWxhbmcub3JnLw==