[#106341] [Ruby master Bug#18369] users.detect(:name, "Dorian") as shorthand for users.detect { |user| user.name == "Dorian" } — dorianmariefr <noreply@...>
SXNzdWUgIzE4MzY5IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGRvcmlhbm1hcmllZnIgKERvcmlhbiBN
14 messages
2021/11/30
[#106351] [Ruby master Bug#18371] Release branches (release information in general) — "tenderlovemaking (Aaron Patterson)" <noreply@...>
SXNzdWUgIzE4MzcxIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IHRlbmRlcmxvdmVtYWtpbmcgKEFhcm9u
7 messages
2021/11/30
[ruby-core:106001] [Ruby master Feature#18020] Introduce `IO::Buffer` for fiber scheduler.
From:
"ioquatix (Samuel Williams)" <noreply@...>
Date:
2021-11-10 09:04:07 UTC
List:
ruby-core #106001
SXNzdWUgIzE4MDIwIGhhcyBiZWVuIHVwZGF0ZWQgYnkgaW9xdWF0aXggKFNhbXVlbCBXaWxsaWFt cykuCgoKVGhhbmtzIEBtYW1lLCB5ZXMgdGhpcyBjaGFuZ2UgYWRkcyBmaWJlciBzY2hlZHVsZXIg aG9va3MgZm9yIGxvdyBsZXZlbCBmaWxlIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBhbmQgdGhpcyBu ZWNlc3NpdGF0ZXMgcGFzc2luZyB0aGUgSU8gb2JqZWN0IGFyb3VuZCByYXRoZXIgdGhhbiBqdXN0 IHRoZSBmaWxlIGRlc2NyaXB0b3IgaW50ZWdlci4gVGhlIGNoYW5nZXMgYXJlIG1vc3RseSBjb3Nt ZXRpYyB0aG91Z2ggYW5kIHRoZSBhY2Nlc3NlcyB0byBmaWxlIGRlc2NyaXB0b3Igc2hvdWxkIG9u bHkgb2NjdXIgaW4gdGhlIHNhbWUgY29udGV4dCB3aGVyZSBpdCB3YXMgdmFsaWQgcHJldmlvdXNs eSwgaXQgd2FzIG1vc3RseSBhIG1lY2hhbmljYWwgY2hhbmdlIHRvIHBhc3MgdGhlIGByYl9pb190 ICpgIHJhdGhlciB0aGFuIHJhdyBmaWxlIGRlc2NyaXB0b3IuIEluIGFueSBjYXNlLCBJJ2xsIGNo ZWNrIHdoYXQgaXMgdGhlIHByb2JsZW0uCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCkZlYXR1cmUgIzE4MDIwOiBJbnRyb2R1Y2UgYElPOjpCdWZmZXJgIGZvciBmaWJl ciBzY2hlZHVsZXIuCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xODAyMCNjaGFu Z2UtOTQ1NDgKCiogQXV0aG9yOiBpb3F1YXRpeCAoU2FtdWVsIFdpbGxpYW1zKQoqIFN0YXR1czog Q2xvc2VkCiogUHJpb3JpdHk6IE5vcm1hbAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCkFmdGVyIGNvbnRpbnVpbmcgdG8gYnVpbGQgb3V0IHRoZSBmaWJlciBzY2hlZHVs ZXIgaW50ZXJmYWNlIGFuZCB0aGUgc3BlY2lmaWMgaG9va3MgcmVxdWlyZWQgZm9yIGBpb191cmlu Z2AsIEkgZm91bmQgc29tZSB0cm91YmxlIHdpdGhpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgYElP YC4KCkkgZm91bmQgdGhhdCBpbiBzb21lIGNhc2VzLCB3ZSBuZWVkIHRvIHJlYWQgaW50byB0aGUg aW50ZXJuYWwgSU8gYnVmZmVycyBkaXJlY3RseS4gSSB0cmllZCBjcmVhdGluZyBhICJmYWtlIHN0 cmluZyIgaW4gb3JkZXIgdG8gdHJhbnNpdCBiYWNrIGludG8gdGhlIFJ1YnkgZmliZXIgc2NoZWR1 bGVyIGludGVyZmFjZSBhbmQgdGhpcyBkaWQgd29yayB0byBhIGNlcnRhaW4gZXh0ZW50LCBidXQg SSB3YXMgdG9sZCB3ZSBjYW5ub3QgZXhwb3NlIGZha2Ugc3RyaW5nIHRvIFJ1Ynkgc2NoZWR1bGVy IGludGVyZmFjZS4KClNvLCBhZnRlciB0aGlzLCBhbmQgbWFueSBvdGhlciBmcnVzdHJhdGlvbnMg d2l0aCB1c2luZyBgU3RyaW5nYCBhcyBhIElPIGJ1ZmZlciwgSSBkZWNpZGVkIHRvIGltcGxlbWVu dCBhIGxvdyBsZXZlbCBgSU86OkJ1ZmZlcmAgYmFzZWQgb24gbXkgbmVlZHMgZm9yIGhpZ2ggcGVy Zm9ybWFuY2UgSU8sIGFuZCBhcyBwYXJ0IG9mIHRoZSBmaWJlciBzY2hlZHVsZXIgaW50ZXJmYWNl LgoKSGVyZSBpcyByb3VnaGx5IHRoZSBpbnRlcmZhY2UgaW1wbGVtZW50ZWQgYnkgdGhlIHNjaGVk dWxlciB3LnIudC4gdGhlIGJ1ZmZlcjoKCmBgYHJ1YnkKY2xhc3MgU2NoZWR1bGVyCiAgIyBAcGFy YW1ldGVyIGJ1ZmZlciBbSU86OkJ1ZmZlcl0gQnVmZmVyIGZvciByZWFkaW5nIGludG8uCiAgZGVm IGlvX3JlYWQoaW8sIGJ1ZmZlciwgbGVuZ3RoKQogICAgIyBpbXBsZW1lbnRhdGlvbiBwcm92aWRl ZCBieSBgcmVhZGAgc3lzdGVtIGNhbGwsIElPX1VSSU5HX1JFQURWLCBldGMuCiAgZW5kCgogICMg QHBhcmFtZXRlciBidWZmZXIgW0lPOjpCdWZmZXJdIEJ1ZmZlciBmb3Igd3JpdGluZyBmcm9tLgog IGRlZiBpb193cml0ZShpbywgYnVmZmVyLCBsZW5ndGgpCiAgICAjIGltcGxlbWVudGF0aW9uIHBy b3ZpZGVkIGJ5IGB3cml0ZWAgc3lzdGVtIGNhbGwsIElPX1VSSU5HX1dSSVRFViwgZXRjLgogIGVu ZAoKICAjIFBvdGVudGlhbCBuZXcgaG9va3MgKFNvY2tldCNyZWN2bXNnLCBzZW5kbXNnLCBldGMp OgogIGRlZiBpb19yZWN2bXNnKGlvLCBidWZmZXIsIGxlbmd0aCkKICBlbmQKZW5kCmBgYAoKSW4g cmV2aWV3aW5nIG90aGVyIGxhbmd1YWdlIGRlc2lnbnMsIEkgZm91bmQgdGhhdCB0aGlzIGRlc2ln biBpcyB2ZXJ5IHNpbWlsYXIgdG8gQ3J5c3RhbCdzIElPIGJ1ZmZlcmluZyBzdHJhdGVneS4KClRo ZSBwcm9wb3NlZCBpbXBsZW1lbnRhdGlvbiBwcm92aWRlcyBlbm91Z2ggb2YgYW4gaW50ZXJmYWNl IHRvIGltcGxlbWVudCBib3RoIG5hdGl2ZSBzY2hlZHVsZXJzIGFzIHdlbGwgYXMgcHVyZSBSdWJ5 IHNjaGVkdWxlcnMuIEl0IGFsc28gcHJvdmlkZXMgc29tZSBleHRyYSBmdW5jdGlvbmFsaXR5IGZv ciBpbnRlcnByZXRpbmcgdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlci4gVGhpcyBpcyBtb3N0bHkgZm9y IHRlc3RpbmcgYW5kIGV4cGVyaW1lbnRhdGlvbiwgYWx0aG91Z2ggaXQgbWlnaHQgbWFrZSBzZW5z ZSB0byBleHBvc2UgdGhpcyBpbnRlcmZhY2UgZm9yIGJpbmFyeSBwcm90b2NvbHMgbGlrZSBIVFRQ LzIsIFFVSUMsIFdlYlNvY2tldHMsIGV0Yy4KCiMjIFByb3Bvc2VkIFNvbHV0aW9uCgpXZSBpbnRy b2R1Y2UgbmV3IGNsYXNzIGBJTzo6QnVmZmVyYC4KCmBgYHJ1YnkKY2xhc3MgSU86OkJ1ZmZlcgog ICMgQHJldHVybnMgW0lPOjpCdWZmZXJdIEEgYnVmZmVyIHdpdGggdGhlIGNvbnRlbnRzIG9mIHRo ZSBzdHJpbmcgZGF0YS4KICBkZWYgc2VsZi5mb3Ioc3RyaW5nKQogIGVuZAoKICBQQUdFX1NJWkUg PSAjIC4uLiBvcGVyYXRpbmcgc3lzdGVtIHBhZ2Ugc2l6ZQoKICAjIEByZXR1cm5zIFtJTzo6QnVm ZmVyXSBBIGJ1ZmZlciB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBtYXBwZWQgdG8gbWVt b3J5LgogIGRlZiBzZWxmLm1hcChmaWxlKQogIGVuZAoKICAjIEZsYWdzIGZvciBidWZmZXIgc3Rh dGUuCiAgRVhURVJOQUwgPSAjIFRoZSBidWZmZXIgaXMgZnJvbSBleHRlcm5hbCBtZW1vcnkuCiAg SU5URVJOQUwgPSAjIFRoZSBidWZmZXIgaXMgZnJvbSBpbnRlcm5hbCBtZW1vcnkgKG1hbGxvYyku CiAgTUFQUEVEID0gIyBUaGUgYnVmZmVyIGlzIGZyb20gbWFwcGVkIG1lbW9yeSAobW1hcCwgVmly dHVhbEFsbG9jLCBldGMpCiAgTE9DS0VEID0gIyBUaGUgYnVmZmVyIGlzIGxvY2tlZCBmb3IgdXNh Z2UgKGNhbm5vdCBiZSByZXNpemVkKQogIFBSSVZBVEUgPSAjIFRoZSBidWZmZXIgaXMgbWFwcGVk IGFzIGNvcHktb24td3JpdGUuCiAgSU1NVVRBQkxFID0gIyBUaGUgYnVmZmVyIGNhbm5vdCBiZSBt b2RpZmllZC4KCiAgIyBAcmV0dXJucyBbSU86OkJ1ZmZlcl0gQSBidWZmZXIgd2l0aCB0aGUgc3Bl Y2lmaWVkIHNpemUsIGFsbG9jYXRlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGZsYWdzLgogIGRl ZiBpbml0aWFsaXplKHNpemUsIGZsYWdzKQogIGVuZAoKICAjIEByZXR1cm5zIFtJbnRlZ3JhbF0g VGhlIHNpemUgb2YgdGhlIGJ1ZmZlcgogIGF0dHIgOnNpemUKCiAgIyBAcmV0dXJucyBbU3RyaW5n XSBBIGJyaWVmIHN1bW1hcnkgYW5kIGhleCBkdW1wIG9mIHRoZSBidWZmZXIuCiAgZGVmIGluc3Bl Y3QKICBlbmQKCiAgIyBAcmV0dXJucyBbU3RyaW5nXSBBIGJyaWVmIHN1bW1hcnkgb2YgdGhlIGJ1 ZmZlci4KICBkZWYgdG9fcwogIGVuZAoKICAjIEZsYWcgcHJlZGljYXRlczoKICBkZWYgZXh0ZXJu YWw/CiAgZW5kCgogIGRlZiBpbnRlcm5hbD8KICBlbmQKCiAgZGVmIG1hcHBlZD8KICBlbmQKCiAg ZGVmIGxvY2tlZD8KICBlbmQKCiAgZGVmIGltbXV0YWJsZT8KICBlbmQKCiAgIyBGbGFncyBmb3Ig ZW5kaWFuL2J5dGUgb3JkZXI6CiAgTElUVExFX0VORElBTiA9ICMgLi4uCiAgQklHX0VORElBTiA9 ICMgLi4uCiAgSE9TVF9FTkRJQU4gPSAjIC4uLgogIE5FVFdPUktfRU5ESUFOPSAjIC4uLgoKICAj IExvY2sgdGhlIGJ1ZmZlciAocHJldmVudCByZXNpemUsIHVubWFwLCBjaGFuZ2VzIHRvIGJhc2Ug YW5kIHNpemUpLgogIGRlZiBsb2NrCiAgICByYWlzZSAiQWxyZWFkeSBsb2NrZWQhIiBpZiBmbGFn cyAmIExPQ0tFRAogICAgCiAgICBmbGFncyB8PSBMT0NLRUQKICBlbmQKCiAgIyBVbmxvY2sgdGhl IGJ1ZmZlci4KICBkZWYgdW5sb2NrCiAgICByYWlzZSAiTm90IGxvY2tlZCEiIHVubGVzcyBmbGFn cyAmIExPQ0tFRAogICAgCiAgICBmbGFncyB8PSB+TE9DS0VECiAgZW5kCgogIC8vIE1hbmlwdWxh dGlvbjoKICAjIEByZXR1cm5zIFtJTzo6QnVmZmVyXSBBIHNsaWNlIG9mIHRoZSBidWZmZXIncyBk YXRhLiBEb2VzIG5vdCBjb3B5LgogIGRlZiBzbGljZShvZmZzZXQsIGxlbmd0aCkKICBlbmQKCiAg IyBAcmV0dXJucyBbU3RyaW5nXSBBIGJpbmFyeSBzdHJpbmcgc3RhcnRpbmcgYXQgb2Zmc2V0LCBs ZW5ndGggYnl0ZXMuCiAgZGVmIHRvX3N0cihvZmZzZXQsIGxlbmd0aCkKICBlbmQKCiAgIyBDb3B5 IHRoZSBzcGVjaWZpZWQgc3RyaW5nIGludG8gdGhlIGJ1ZmZlciBhdCB0aGUgZ2l2ZW4gb2Zmc2V0 LgogIGRlZiBjb3B5KHN0cmluZywgb2Zmc2V0KQogIGVuZAoKICAjIENvbXBhcmUgdHdvIGJ1ZmZl cnMuCiAgZGVmIDw9PihvdGhlcikKICBlbmQKCiAgaW5jbHVkZSBDb21wYXJhYmxlCgogICMgUmVz aXplIHRoZSBidWZmZXIsIHByZXNlcnZpbmcgdGhlIGdpdmVuIGxlbmd0aCAoaWYgbm9uLXplcm8p LgogIGRlZiByZXNpemUoc2l6ZSwgcHJlc2VydmUgPSAwKQogIGVuZAoKICAjIENsZWFyIHRoZSBi dWZmZXIgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4KICBkZWYgY2xlYXIodmFsdWUgPSAwLCBvZmZz ZXQgPSAwLCBsZW5ndGggPSAoQHNpemUgLSBvZmZzZXQpKQogIGVuZAoKICAjIERhdGEgVHlwZXM6 CiAgIyBMb3dlciBjYXNlOiBsaXR0bGUgZW5kaWFuLgogICMgVXBwZXIgY2FzZTogYmlnIGVuZGlh biAobmV0d29yayBlbmRpYW4pLgogICMKICAjIDpVOCAgICAgICAgfCB1bnNpZ25lZCA4LWJpdCBp bnRlZ2VyLgogICMgOlM4ICAgICAgICB8IHNpZ25lZCA4LWJpdCBpbnRlZ2VyLgogICMKICAjIDp1 MTYsIDpVMTYgfCB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlci4KICAjIDpzMTYsIDpTMTYgfCBzaWdu ZWQgMTYtYml0IGludGVnZXIuCiAgIwogICMgOnUzMiwgOlUzMiB8IHVuc2lnbmVkIDMyLWJpdCBp bnRlZ2VyLgogICMgOnMzMiwgOlMzMiB8IHNpZ25lZCAzMi1iaXQgaW50ZWdlci4KICAjCiAgIyA6 dTY0LCA6VTY0IHwgdW5zaWduZWQgNjQtYml0IGludGVnZXIuCiAgIyA6czY0LCA6UzY0IHwgc2ln bmVkIDY0LWJpdCBpbnRlZ2VyLgogICMKICAjIDpmMzIsIDpGMzIgfCAzMi1iaXQgZmxvYXRpbmcg cG9pbnQgbnVtYmVyLgogICMgOmY2NCwgOkY2NCB8IDY0LWJpdCBmbG9hdGluZyBwb2ludCBudW1i ZXIuCgogICMgR2V0IHRoZSBnaXZlbiBkYXRhIHR5cGUgYXQgdGhlIHNwZWNpZmllZCBvZmZzZXQu CiAgZGVmIGdldCh0eXBlLCBvZmZzZXQpCiAgZW5kCgogICMgU2V0IHRoZSBnaXZlbiB2YWx1ZSBh cyB0aGUgc3BlY2lmaWVkIGRhdGEgdHlwZSBhdCB0aGUgc3BlY2lmaWVkIG9mZnNldC4KICBkZWYg c2V0KHR5cGUsIG9mZnNldCwgdmFsdWUpCiAgZW5kCmVuZApgYGAKClRoZSBDIGludGVyZmFjZSBw cm92aWRlcyBhIGZldyBjb252ZW5pZW50IG1ldGhvZHMgZm9yIGFjY2Vzc2luZyB0aGUgdW5kZXJs eWluZyBkYXRhIGJ1ZmZlcjoKCmBgYGMKdm9pZCByYl9pb19idWZmZXJfZ2V0X211dGFibGUoVkFM VUUgc2VsZiwgdm9pZCAqKmJhc2UsIHNpemVfdCAqc2l6ZSk7CnZvaWQgcmJfaW9fYnVmZmVyX2dl dF9pbW11dGFibGUoVkFMVUUgc2VsZiwgY29uc3Qgdm9pZCAqKmJhc2UsIHNpemVfdCAqc2l6ZSk7 CmBgYAoKSW4gdGhlIGZpYmVyIHNjaGVkdWxlciwgaXQgaXMgdXNlZCBsaWtlIHRoaXM6CgpgYGBj ClZBTFVFCnJiX2ZpYmVyX3NjaGVkdWxlcl9pb19yZWFkX21lbW9yeShWQUxVRSBzY2hlZHVsZXIs IFZBTFVFIGlvLCB2b2lkICpiYXNlLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGxlbmd0aCkKewogICAg VkFMVUUgYnVmZmVyID0gcmJfaW9fYnVmZmVyX25ldyhiYXNlLCBzaXplLCBSQl9JT19CVUZGRVJf TE9DS0VEKTsKCiAgICBWQUxVRSByZXN1bHQgPSByYl9maWJlcl9zY2hlZHVsZXJfaW9fcmVhZChz Y2hlZHVsZXIsIGlvLCBidWZmZXIsIGxlbmd0aCk7CgogICAgcmJfaW9fYnVmZmVyX2ZyZWUoYnVm ZmVyKTsKCiAgICByZXR1cm4gcmVzdWx0Owp9CmBgYAoKVGhpcyBmdW5jdGlvbiBpcyBpbnZva2Vk IGZyb20gYGlvLmNgIGF0IHZhcmlvdXMgcGxhY2VzIHRvIGZpbGwgdGhlIGJ1ZmZlci4gV2Ugc3Bl Y2lmaWNhbGx5IHRoZSBgKGJhc2UsIHNpemUpYCB0dXBsZSwgYWxvbmcgd2l0aCBgbGVuZ3RoYCB3 aGljaCBpcyB0aGUgKm1pbmltdW0qIGxlbmd0aCByZXF1aXJlZCBhbmQgYXNzaXN0cyB3aXRoIGVm ZmljaWVudCBub24tYmxvY2tpbmcgaW1wbGVtZW50YXRpb24uCgpUaGUgYHVyaW5nLmNgIGltcGxl bWVudGF0aW9uIGluIHRoZSBldmVudCBnZW0gdXNlcyB0aGlzIGludGVyZmFjZSBsaWtlIHNvOgoK YGBgYwpWQUxVRSBFdmVudF9CYWNrZW5kX1VSaW5nX2lvX3JlYWQoVkFMVUUgc2VsZiwgVkFMVUUg ZmliZXIsIFZBTFVFIGlvLCBWQUxVRSBidWZmZXIsIFZBTFVFIF9sZW5ndGgpIHsKCXN0cnVjdCBF dmVudF9CYWNrZW5kX1VSaW5nICpkYXRhID0gTlVMTDsKCVR5cGVkRGF0YV9HZXRfU3RydWN0KHNl bGYsIHN0cnVjdCBFdmVudF9CYWNrZW5kX1VSaW5nLCAmRXZlbnRfQmFja2VuZF9VUmluZ19UeXBl LCBkYXRhKTsKCQoJaW50IGRlc2NyaXB0b3IgPSBSQl9OVU0ySU5UKHJiX2Z1bmNhbGwoaW8sIGlk X2ZpbGVubywgMCkpOwoJCgl2b2lkICpiYXNlOwoJc2l6ZV90IHNpemU7CglyYl9pb19idWZmZXJf Z2V0X211dGFibGUoYnVmZmVyLCAmYmFzZSwgJnNpemUpOwoJCglzaXplX3Qgb2Zmc2V0ID0gMDsK CXNpemVfdCBsZW5ndGggPSBOVU0yU0laRVQoX2xlbmd0aCk7CgkKCXdoaWxlIChsZW5ndGggPiAw KSB7CgkJc2l6ZV90IG1heGltdW1fc2l6ZSA9IHNpemUgLSBvZmZzZXQ7CgkJaW50IHJlc3VsdCA9 IGlvX3JlYWQoZGF0YSwgZmliZXIsIGRlc2NyaXB0b3IsIChjaGFyKiliYXNlK29mZnNldCwgbWF4 aW11bV9zaXplKTsKCQkKCQlpZiAocmVzdWx0ID09IDApIHsKCQkJYnJlYWs7CgkJfSBlbHNlIGlm IChyZXN1bHQgPiAwKSB7CgkJCW9mZnNldCArPSByZXN1bHQ7CgkJCWlmICgoc2l6ZV90KXJlc3Vs dCA+IGxlbmd0aCkgYnJlYWs7CgkJCWxlbmd0aCAtPSByZXN1bHQ7CgkJfSBlbHNlIGlmICgtcmVz dWx0ID09IEVBR0FJTiB8fCAtcmVzdWx0ID09IEVXT1VMREJMT0NLKSB7CgkJCUV2ZW50X0JhY2tl bmRfVVJpbmdfaW9fd2FpdChzZWxmLCBmaWJlciwgaW8sIFJCX0lOVDJOVU0oUkVBREFCTEUpKTsK CQl9IGVsc2UgewoJCQlyYl9zeXNlcnJfZmFpbCgtcmVzdWx0LCBzdHJlcnJvcigtcmVzdWx0KSk7 CgkJfQoJfQoJCglyZXR1cm4gU0laRVQyTlVNKG9mZnNldCk7Cn0KYGBgCgojIyBCdWZmZXIgQWxs b2NhdGlvbgoKVGhlIExpbnV4IGtlcm5lbCBwcm92aWRlcyBzb21lIGFkdmFuY2VkIG1lY2hhbmlz bXMgZm9yIHJlZ2lzdGVyaW5nIGJ1ZmZlcnMgZm9yIGFzeW5jaHJvbm91cyBJL08gdG8gcmVkdWNl IHBlci1vcGVyYXRpb24gb3ZlcmhlYWQuCgo+IFRoZSBpb191cmluZ19yZWdpc3RlcigpIHN5c3Rl bSBjYWxsIHJlZ2lzdGVycyB1c2VyIGJ1ZmZlcnMgb3IgZmlsZXMgZm9yIHVzZSBpbiBhbiBpb191 cmluZyg3KSBpbnN0YW5jZSByZWZlcmVuY2VkIGJ5IGZkLiBSZWdpc3RlcmluZyBmaWxlcyBvciB1 c2VyIGJ1ZmZlcnMgYWxsb3dzIHRoZSBrZXJuZWwgdG8gdGFrZSBsb25nIHRlcm0gcmVmZXJlbmNl cyB0byBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgb3IgY3JlYXRlIGxvbmcgdGVybSBtYXBwaW5n cyBvZiBhcHBsaWNhdGlvbiBtZW1vcnksIGdyZWF0bHkgcmVkdWNpbmcgcGVyLUkvTyBvdmVyaGVh ZC4KCldpdGggYXBwcm9wcmlhdGUgc3VwcG9ydCwgd2UgY2FuIHVzZSBgSU9SSU5HX09QX1BST1ZJ REVfQlVGRkVSU2AgdG8gZWZmaWNpZW50bHkgbWFuYWdlIGJ1ZmZlcnMgaW4gYXBwbGljYXRpb25z IHdoaWNoIGFyZSBkZWFsaW5nIHdpdGggbG90cyBvZiBzb2NrZXRzLiBTZWUgPGh0dHBzOi8vbG9y ZS5rZXJuZWwub3JnL2lvLXVyaW5nLzIwMjAwMjI4MjAzMDUzLjI1MDIzLTEtYXhib2VAa2VybmVs LmRrL1QvPiBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IGhvdyBpdCB3b3Jrcy4gSSdtIHN0aWxsIGV4 cGxvcmluZyB0aGUgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zIG9mIHRoaXMsIGJ1dCB0aGUgcHJv cG9zZWQgaW1wbGVtZW50YXRpb24gcHJvdmlkZXMgc3VmZmljaWVudCBtZXRhLWRhdGEgZm9yIHVz IHRvIGV4cGxvcmUgdGhpcyBpbiByZWFsIHdvcmxkIHNjaGVkdWxlcnMuCgpQUjogaHR0cHM6Ly9n aXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzQ2MjEKCgoKLS0gCmh0dHBzOi8vYnVncy5ydWJ5LWxh bmcub3JnLwoKVW5zdWJzY3JpYmU6IDxtYWlsdG86cnVieS1jb3JlLXJlcXVlc3RAcnVieS1sYW5n Lm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgo8aHR0cDovL2xpc3RzLnJ1YnktbGFuZy5vcmcvY2dp LWJpbi9tYWlsbWFuL29wdGlvbnMvcnVieS1jb3JlPgo=