[ruby-core:76019] [Ruby trunk Feature#12361] Proposal: add Geo::Coord class to standard library

From: duerst@...
Date: 2016-06-14 09:40:07 UTC
List: ruby-core #76019
SXNzdWUgIzEyMzYxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgTWFydGluIETDvHJzdC4KCgpHcmVhdCB0
byBzZWUgdGhlIGdlbS4gV2l0aCByZXNwZWN0IHRvCgo+IEFuZCB0aGVuLCBwcm9wb3NhbCB3YXMg
ZmFpbGVkIGFuZCByZWplY3RlZCBiZWNhdXNlIGl0IGlzIGltcGxlbWVudGVkIDopIFRoYXQncyBr
aW5kIG9mIGZ1bm55LgoKSSB0aGluayB5b3UgbWlzdW5kZXJzdG9vZCBNYXR6LiBXZSBjb3VsZCBo
YXZlIHBpY2tlZCBqdXN0IHlvdXIgYmFzaWMgZGF0YSByZXByZXNlbnRhdGlvbiwgd2l0aG91dCBz
b21lIG9yIGFsbCBvZiB0aGUgbWV0aG9kcy4gQnV0IHdoYXQgd2Ugd291bGQgbGlrZSB0byBzZWUg
aXMgbW9yZSBidXktaW4gZnJvbSB0aGUgZ2VvY29tbXV0aW5nIGNvbW11bml0eS4gVGhlIGJlc3Qg
d2F5IHRvIHNob3cgc3VjaCBidXktaW4gaXMgdG8gc2VlIHlvdXIgZ2VtIGFkb3B0ZWQuCgotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkZlYXR1cmUgIzEyMzYxOiBQcm9w
b3NhbDogYWRkIEdlbzo6Q29vcmQgY2xhc3MgdG8gc3RhbmRhcmQgbGlicmFyeQpodHRwczovL2J1
Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTIzNjEjY2hhbmdlLTU5MjE5CgoqIEF1dGhvcjogVmlj
dG9yIFNoZXBlbGV2CiogU3RhdHVzOiBSZWplY3RlZAoqIFByaW9yaXR5OiBOb3JtYWwKKiBBc3Np
Z25lZTogCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyMgUHJvcG9z
YWwKCkFkZCBgR2VvOjpDb29yZGAgY2xhc3MgdG8gUnVieSBzdGFuZGFyZCBsaWJyYXJ5LCByZXBy
ZXNlbnRpbmcgYFtsYXRpdHVkZSwgbG9uZ2l0dWRlXWAgcGFpciArIGNvbnZlbmllbmNlIG1ldGhv
ZHMuIEFkZCBgR2VvYCBzdGFuZGFyZCBsaWJyYXJ5IHdpdGggYWRkaXRpb25hbCBjYWxjdWxhdGlv
bnMgYW5kIGNvbnZlbmllbmNlIG1ldGhvZHMuCgojIyBSYXRpb25hbGUKCkluIG1vZGVybiBhcHBs
aWNhdGlvbnMsIHdvcmtpbmcgd2l0aCBnZW9ncmFwaGljYWwgY29vcmRpbmF0ZXMgaXMgZnJlcXVl
bnQuIFdlIHByb3Bvc2UgdG8gdGhpbmsgb2Ygc3VjaCBjb29yZGluYXRlcyAobmFtZWx5LCBgbGF0
aXR1ZGUsIGxvbmdpdHVkZWAgcGFpcikgYXMgb2YgImJhc2ljIiB0eXBlIHRoYXQgc2hvdWxkIGJl
IHN1cHBvcnRlZCBieSBzdGFuZGFyZCBsaWJyYXJ5IC0gdGhlIHNhbWUgd2F5IGFzIHdlIHN1cHBv
cnQgYFRpbWVgL2BEYXRlYC9gRGF0ZVRpbWVgIGluc3RlYWQgb2YgaGF2aW5nIGl0IGRlZmluZWQK
YnkgdXNlci9nZW1zLgoKVGhpcyB0eXBlIGlzIHRvbyAic21hbGwiIHRvIGJlIGRlZmluZWQgYnkg
c2VwYXJhdGUgZ2VtLCBzbywgYWxsIG9mIGV4aXN0aW5nIGdlbyBnZW1zIChHZW9LaXQsIFJHZW8s
IEdlb1J1YnksIEdyYXRpY3VsZSBldGMuKSBkZWZpbmUgdGhlaXIgb3duIGBMYXRMbmdgLCBvciBg
TG9jYXRpb25gLCBvciBgUG9pbnRgLCB3aGF0ZXZlci4KCk9uIG90aGVyIGhhbmQsIEFQSSBkZXNp
Z24gZm9yIHRoaXMgInNtYWxsIiB0eXBlIGlzIHZhZ3VlIGVub3VnaCBmb3IgYWxsIHRob3NlIHNp
bWlsYXIgdHlwZXMgdG8gYmUgaW5jb21wYXRpYmxlIGFuZCBicmVhayBzbWFsbCBoYWJpdHMgYW5k
IGNvbnZlbnRpb25zIHdoZW4geW91IGNoYW5nZSBmcm9tIG9uZSBnZW8gbGlicmFyeSB0byBhbm90
aGVyLCBvciB0cnkgdG8gdXNlIHNldmVyYWwKc2ltdWx0YW5lb3VzbHkuCgpBZGRpdGlvbmFseSwg
bWFueSBnZW1zIHNvbWVob3cgd29ya2luZyB3aXRoIGdlbyBjb29yZGluYXRlcyAoZm9yIHdlYXRo
ZXIsIG9yIHRpbWV6b25lLCBvciBhbm90aGVyIHRhc2tzKSBnZW5lcmFsbHkgcHJlZmVyIG5vdCB0
byBpbnRyb2R1Y2UgdHlwZSwgYW5kIGp1c3Qgd29yayB3aXRoIGBbbGF0LCBsbmddYCBhcnJheSwg
d2hpY2ggaXMgbm90IHZlcnkgY29udmVuaWVudCwgZmFpdGhmdWxseS4KClNvLCBoYXZpbmcgImdl
byBjb29yZGluYXRlcyIgZnVuY3Rpb25hbGl0eSBpbiBzdGFuZGFyZCBsaWJyYXJ5IHNlZW1zIHJl
YXNvbmFibGUgYW5kIHZhbHVhYmxlLgoKIyMgRXhpc3RpbmcvcmVmZXJlbmNlIHNvbHV0aW9ucwoK
UnVieToKCiogW0dlb0tpdDo6TGF0TG5nXShodHRwOi8vd3d3LnJ1Ynlkb2MuaW5mby9naXRodWIv
Z2Vva2l0L2dlb2tpdC9tYXN0ZXIvR2Vva2l0L0xhdExuZyk7CiogW1JHZW86OkZlYXR1cmU6OlBv
aW50XShodHRwOi8vd3d3LnJ1Ynlkb2MuaW5mby9nZW1zL3JnZW8vUkdlby9GZWF0dXJlL1BvaW50
KSAod2l0aCBzZXZlcmFsICJwcml2YXRlIiBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzKTsgUkdlbyBp
bXBsZW1lbnRzIGZ1bGwgW09HQyBTaW1wbGUgRmVhdHVyZXNdKGh0dHBzOi8vZW4ud2lraXBlZGlh
Lm9yZy93aWtpL1NpbXBsZV9GZWF0dXJlcykgc3BlY2lmaWNhdGlvbiwgc28sIGl0cyBwb2ludHMg
aGF2ZSBgemAgYW5kIGBtYCBjb29yZGluYXRlcywgcHJvamVjdGlvbiBhbmQgbXVjaCBtb3JlOwoq
IFtHcmF0aWN1bGU6OkxvY2F0aW9uXShodHRwOi8vd3d3LnJ1Ynlkb2MuaW5mby9naXRodWIvY29s
bGVjdGl2ZWlkZWEvZ3JhdGljdWxlL0dyYXRpY3VsZS9Mb2NhdGlvbikgKG5vdCBzdHJpY3RseSBh
IGBbbGF0LGxuZ11gIHdyYXBwZXIpOwoqIFtSb3NhbWFyeTo6Tm9kZV0oaHR0cDovL3d3dy5ydWJ5
ZG9jLmluZm8vZ2Vtcy9yb3NlbWFyeS8wLjQuNC9Sb3NlbWFyeS9Ob2RlKSAoZm9sbG93cyBuYW1p
bmcgY29udmVudGlvbiBvZiB1bmRlcmx5aW5nIE9wZW5TdHJlZXRNYXAgQVBJKTsKCk90aGVyIHNv
dXJjZXM6CgoqIFB5dGhvbjogW2dlb3B5LlBvaW50XShodHRwOi8vZ2VvcHkucmVhZHRoZWRvY3Mu
b3JnL2VuL2xhdGVzdC8jZ2VvcHkucG9pbnQuUG9pbnQpOwoqIFtFbGFzdGljU2VhcmNoXShodHRw
czovL3d3dy5lbGFzdGljLmNvL2Jsb2cvZ2VvLWxvY2F0aW9uLWFuZC1zZWFyY2gpIHVzZXMgaGFz
aCB3aXRoICJsYXQiIGFuZCAibG9uIiBrZXlzOwoqIEdvb2dsZSBNYXBzIFtHZW9jb2RpbmcgQVBJ
XShodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vZ2VvY29k
aW5nL2ludHJvI0dlb2NvZGluZ1Jlc3BvbnNlcykgdXNlcyBoYXNoIHdpdGggImxhdCIgYW5kICJs
bmciIGtleXM7CiogUG9zdEdJUzogW3ByZXR0eSBjb21wbGljYXRlZF0oaHR0cDovL3Bvc3RnaXMu
bmV0L2RvY3MvbWFudWFsLTIuMi91c2luZ19wb3N0Z2lzX2RibWFuYWdlbWVudC5odG1sI1JlZk9i
amVjdCkgIGhhcyBfZ2VvbWV0cmljYWxfIChwcm9qZWN0ZWQpIGFuZCBfZ2VvZ3JhcGhpY2FsXyAo
bGF0LCBsbmcpIHBvaW50cyBhbmQgc3R1ZmYuCgojIyBEZXNpZ24gZGVjaXNpb25zCgpXaGlsZSBk
ZXNpZ25pbmcgYEdlb2AgbGlicmFyeSwgb3VyIHJlZmVyZW5jZSBwb2ludCB3YXMgc3RhbmRhcmQg
YFRpbWVgIGNsYXNzIChhbmQsIHRvIGxlc3NlciBleHRlbnQsIGBEYXRlYC9gRGF0ZVRpbWVgKS4g
SXQgaGFzIHRoaXMgcmVzcG9uc2liaWxpdGllczoKCiogc3RvcmVzIGRhdGEgaW4gc2ltcGxlIGlu
dGVybmFsIGZvcm07CiogaGVscHMgdG8gcGFyc2UgYW5kIGZvcm1hdCBkYXRhIHRvIGFuZCBmcm9t
IHN0cmluZ3M7CiogcHJvdmlkZXMgZWFzeSBhY2Nlc3MgdG8gbG9naWNhbCBjb21wb25lbnRzIG9m
IGRhdGE7CiogYWxsb3dzIG1vc3Qgc2ltcGxlIGFuZCB1bmFtYmlndW91cyBjYWxjdWxhdGlvbnMu
CgoqKk1haW4gdHlwZSBuYW1lKio6IGFzIGZhciBhcyB3ZSBjYW4gc2VlLCB0aGVyZSdzIG5vIGdv
b2Qgc2luZ3VsYXIgbmFtZSBmb3IgYChsYXQsIGxuZylgIHBhaXIgY29uY2VwdC4gQXMgbWVudGlv
bmVkIGFib3ZlLCB0aGVyZSBjYW4gYmUgc2VlbiBuYW1lcyBsaWtlIGBMYXRMbmdgLCBvciBgTG9j
YXRpb25gLCBvciBgUG9pbnRgOyBhbmQgaW4gbmF0dXJhbCBsYW5ndWFnZQpqdXN0ICJjb29yZGlu
YXRlcyIgdXNlZCBmcmVxdWVudGx5LiBXZSBwcm9wb3NlIHRoZSBuYW1lIGBDb29yZGAsIHdoaWNo
IGlzIHByZXR0eSBzaG9ydCwgZWFzeSB0byByZW1lbWJlciwgZGVtb25zdHJhdGVzIGludGVudGlv
bnMgKGFuZCBsb29rcyBsaWtlIHNpbmd1bGFyLCBzbyB5b3UgY2FuIGhhdmUgIm9uZSBjb29yZCBv
YmplY3QiIGFuZCAiYXJyYXkgb2YgY29vcmRzIiwKd2hpY2ggaXMgbm90IDEwMCUgbGluZ3Vpc3Rp
Y2FsbHkgY29ycmVjdCwgeWV0IGNvbnZlbmllbnQpLiBBbHRlcm5hdGl2ZSBgUG9pbnRgIG5hbWUg
c2VlbXMgdG8gYmUgdG9vIGFtYmlnb3VzLCBiZWluZyB1c2VkIGluIG1hbnkgY29udGV4dHMuCgpg
R2VvOjpDb29yZGAgb2JqZWN0IGlzICoqaW1tdXRhYmxlKiosIHRoZXJlJ3Mgbm8gc2VtYW50aWNh
bCBzZW5zZSBpbiBgbG9jYXRpb24ubGF0aXR1ZGUgPSAuLi5gIG9yIHNvbWV0aGluZyBsaWtlIHRo
aXMuCgoqKlVuaXRzKio6IGBHZW9gIGNhbGN1bGF0aW9ucyAoanVzdCBsaWtlIGBUaW1lYCBjYWxj
dWxhdGlvbnMpIHByb3ZpZGUgbm8gdW5pdHMgb3B0aW9ucywganVzdCByZXR1cm5pbmcgbnVtYmVy
cyBtZWFzdXJlZCBpbiAiZGVmYXVsdCIgdW5pdHM6IG1ldHJlcyBmb3IgZGlzdGFuY2VzIChhcyB0
aGV5IGFyZSBTSSB1bml0KSBhbmQgZGVncmVlcyBmb3IgYXppbXV0aC4gTGF0aXR1ZGUgYW5kIGxv
bmdpdHVkZSBhcmUgc3RvcmVkIGluIGRlZ3JlZXMsIGJ1dCByYWRpYW5zIHZhbHVlcyBhY2Nlc3Nv
cnMgYXJlIHByb3ZpZGVkIChiZWluZyB3aWRlbHkgdXNlZCBpbiBnZW9kZXN5IG1hdGgpLgoKQWxs
IGNvb3JkaW5hdGVzIGFuZCBjYWxjdWxhdGlvbnMgYXJlIHRob3VnaHQgdG8gYmUgaW4gV0dTIDg0
IGNvb3JkaW5hdGVzIHJlZmVyZW5jZSBzeXN0ZW0sIGJlaW5nIGN1cnJlbnQgc3RhbmRhcmQgZm9y
IG1hcHMgYW5kIEdQUy4KClRoZXJlJ3MgaW50cm9kdWNlZCAqKmNvbmNlcHQgb2YgZ2xvYmUqKiB1
c2VkIGludGVybmFsbHkgZm9yIGNhbGN1bGF0aW9ucy4gT25seSBnZW5lcmljIChzcGhlcmUpIGFu
ZCBFYXJ0aCBnbG9iZXMgYXJlIGltcGxlbWVudGVkLCBidXQgZm9yIDIwMTYgd2UgZmVlbCBsaWtl
IGN1cnJlbnQgZGVzaWduIG9mIGJhc2ljIHR5cGVzIHNob3VsZCB0YWtlIGluIGNvbnNpZGVyYXRp
b24KcG9zc2liaWxpdHkgb2Ygd3JpdGluZyBSdWJ5IHNjcmlwdHMgZm9yIE1hcnMgbWFwcyBhbmFs
eXNpcy4gT25seSBvbmUgZ2VvZGVzeSBmb3JtdWxhIGlzIGltcGxlbWVudGVkIChWaW5jZW50eSwg
Z2VuZXJhbGx5IGNvbnNpZGVyZWQgb25lIG9mIHRoZSBtb3N0IHByZWNpc2UpLCBhcyBmb3Igc3Rh
bmRhcmQgbGlicmFyeSBjbGFzcyBpdCBjb25zaWRlcmVkIHVubmVjZXNzYXJ5IHRvIHByb3ZpZGUg
dXNlciB3aXRoIGdlb2Rlc3kgZm9ybXVsYWUgb3B0aW9ucy4KCk5vICoqbWFwIHByb2plY3Rpb24q
KiBtYXRoIHdhcyBhZGRlZCBpbnRvIGN1cnJlbnQgcHJvcG9zYWwsIGJ1dCBpdCBtYXkgYmUgYSBn
b29kIGRpcmVjdGlvbiBmb3IgZnVydGhlciB3b3JrLiBObyAqKmVsZXZhdGlvbioqIGRhdGEgY29u
c2lkZXJlZCBlaXRoZXIuCgojIyBQcm9wb3NhbCBkZXRhaWxzCgojIyMgYEdlbzo6Q29vcmRgIGNs
YXNzCgpSZXByZXNlbnRzIGBbbGF0aXR1ZGUsIGxvbmdpdHVkZV1gIHBhaXIuIExhdGl0dWRlIGlz
IC05MCB0byArOTAgKGRlZ3JlZXMpLiBMb25naXR1ZGUgaXMgLTE4MCB0byArMTgwLgoKQ2xhc3Mg
bWV0aG9kczoKCiogYG5ldyhsYXQsIGxuZylgIGNyZWF0ZXMgaW5zdGFuY2UgZnJvbSB0d28gTnVt
ZXJpY3MgKGluIGRlZ3JlZXMpOwoqIGBuZXcobGF0OiwgbG5nOilgIGtleXdvcmQgYXJndW1lbnRz
IGZvcm0gb2YgYWJvdmU7CiogYG5ldyhsYXRkOiwgbGF0bTosIGxhdHM6LCBsYXRoOiwgbG5nZDog
bG5nbTosIGxuZ3M6IGxuZ2g6KWAgY3JlYXRlcyBpbnN0YW5jZSBmcm9tIGNvb3JkaW5hdGVzIGlu
IChkZWcsIG1pbiwgc2VjLCBoZW1pc3BoZXJlKSBmb3JtOyBoZW1pc3BoZXJlcyBhcmUgIk4iLyJT
IiBmb3IgbGF0aXR1ZGUgYW5kICJXIi9FIiBmb3IgbG9uZ2l0dWRlOyBhbnkgY29tcG9uZW50IGV4
Y2VwdCBmb3IgZGVncmVlcyBjYW4gYmUgb21pdHRlZDsgaWYgaGVtaXNwaGVyZSBpcyBvbWl0dGVk
LCBpdCBpcyBkZWNpZGVkIGJ5IGRlZ3JlZXMgc2lnbiAobGF0OiBwb3NpdGl2ZSBpcyAiTiIsIGxu
ZzogcG9zaXRpdmUgaXMgIkUiKTsKKiBgZnJvbV9oKGhhc2gpYCBjcmVhdGVzIGluc3RhbmNlIGZy
b20gaGFzaCB3aXRoIGAibGF0ImAgb3IgYCJsYXRpdHVkZSJgIGtleSBhbmQgYCJsb24iYCBvciBg
ImxuZyJgIG9yIGAibG9uZ2l0dWRlImAga2V5IChjYXNlLWluZGVwZW5kZW50KTsKKiBgZnJvbV9y
YWRpYW5zKHBoaSwgbGEpYCBjcmVhdGVzIGluc3RhbmNlIGZyb20gcmFkaWFuIHZhbHVlczsKKiBg
c3RycGNvb3JkYCBwYXJzZXMgc3RyaW5nIGludG8gY29vcmRpbmF0ZXMgYnkgcHJvdmlkZWQgcGF0
dGVybiAoc2VlIGJlbG93IGZvciBwYXR0ZXJuIGRlc2NyaXB0aW9uKTsKKiBgcGFyc2VfbGxgIHBh
cnNlcyBjb29yZGluYXRlcyBzdHJpbmcgaW4gYCJmbG9hdCwgZmxvYXQiYCBmb3JtOwoqIGBwYXJz
ZV9kbXNgIHBhcnNlcyBjb29yZGluYXRlcyBzdHJpbmcgaW4gYGQgbSBzIGgsIGQgbSBzIGhgIGZv
cm1hdCAoY29uc2lkZXJpbmcgc2V2ZXJhbCB3aWRlbHkgdXNlZCBzeW1ib2xzIGZvciBkZWdyZWVz
LCBtaW51dGVzIGFuZCBzZWNvbmRzKTsKKiBgcGFyc2VgIHRyaWVzIHRvIHBhcnNlIHN0cmluZyBp
bnRvIGNvb3JkaW5hdGVzIGZyb20gdmFyaW91cyBmb3JtYXRzLgoKSW5zdGFuY2UgbWV0aG9kczoK
CiogYGxhdGAgYW5kIGBsbmdgLCByZXR1cm5pbmcgYEZsb2F0YHMsIHNpZ25lZDsKKiBgbGF0aXR1
ZGVgIGFuZCBgbG9uZ2l0dWRlYCBhcyBhbiBhbGlhc2VzOyBgbG9uYCBhcyBhbiBhZGRpdGlvbmFs
IGFsaWFzZXMgZm9yIGxvbmdpdHVkZTsKKiBgbGF0ZGAsIGBsYXRtYCwgYGxhdHNgLCBgbGF0aGA6
IGRlZ3JlZSwgbWludXRlLCBzZWNvbmQsIGhlbWlzcGhlcmU7IGBsYXRkYCBhbmQgYGxhdG1gIGFy
ZSBgRml4bnVtYCwgYGxhdHNgIGlzIGBGbG9hdGAsIGBsYXRoYCBpcyAiTiIvIlMiOyBhbGwgbnVt
YmVycyBhcmUgdW5zaWduZWQ7CiogYGxuZ2RgLCBgbG5nbWAsIGBsbmdzYCwgYGxuZ2hgOiB0aGUg
c2FtZSBmb3IgbG9uZ2l0dWRlIChoZW1pc3BoZXJlIGlzICJXIi8iRSIpOwoqIGBsYXRkbXMobm9o
ZW1pc3BoZXJlID0gZmFsc2UpYCByZXR1cm5zIGBbbGF0ZCwgbGF0bSwgbGF0cywgbGF0aF1gIHdp
dGggYG5vaGVtaXNwaGVyZWAgcGFyYW0gZXF1YWwgdG8gYGZhbHNlYCwgYW5kIGBbwrFsYXRkLCBs
YXRtLCBsYXRzXWAgd2l0aCBgdHJ1ZWA7IHNhbWUgd2l0aCBgbG5nZG1zYCBmb3IgbG9uZ2l0dWRl
OwoqIGBwaGlgIGFuZCBgz4ZgIGlzIGxhdGl0dWRlIGluIHJhZGlhbnMgKGhlbHBmdWwgZm9yIG1h
dGgpLCBgbGFgIG9yIGDOu2AgaXMgbG9uZ2l0dWRlIGluIHJhZGlhbnMgKG5vdCBgbGFtYmRhYCB0
byBub3QgY29uZnVzZSB3aXRoIEtlcm5lbCBtZXRob2QpOwoqIGB0b19zYCByZXR1cm5pbmcgc3Ry
aW5nIGxpa2UgIjUwLjAwNDQ0NCwzNi4yMzEzODkiIChnb29kIGZvciBtYXAgVVJMcyBjb25zdHJ1
Y3Rpb24sIGZvciBleGFtcGxlKTsKKiBgdG9faChsYXQ6IDpsYXQsIGxuZzogOmxuZylgIGNvbnZl
cnRzIGNvb3JkIHRvIGhhc2ggKHdpdGggZGVzaXJlZCBrZXkgbmFtZXMpOwoqIGB0b19hYCBjb252
ZXJ0cyBjb29yZCB0byBzaW1wbGUgYFtsYXQsIGxuZ11gIHBhaXI7CiogYHN0cmZjb29yZChmb3Jt
YXRzdHIpYCBmb3IgY29tcGxleCBjb29yZGluYXRlIGZvcm1hdHRpbmcgKHNlZSBiZWxvdyBmb3Ig
Zm9ybWF0IHN0cmluZyBkZXNjcmlwdGlvbik7CiogYGRpc3RhbmNlKG90aGVyKWAgY2FsY3VsYXRl
cyBkaXN0YW5jZSB0byBhbm90aGVyIHBvaW50IChpbiBtZXRyZXMpOwoqIGBhemltdXRoKG90aGVy
KWAgY2FsY3VsYXRlcyBkaXJlY3Rpb24gdG8gdGFyZ2V0IChpbiBkZWdyZWVzKTsKKiBgZW5kcG9p
bnQoZGlyZWN0aW9uLCBhemltdXRoKWAgY2FsY3VsYXRlcyBmaW5hbCBwb2ludCBvZiB0aGUgbGlu
ZSBvZiBgZGlzdGFuY2VgIG1ldHJlcyBnb2luZyBpbiBgYXppbXV0aGAgZGlyZWN0aW9uIGZyb20g
Y3VycmVudCBwb2ludC4KCiMjIyMgYHN0cnBjb29yZGAvYHN0cmZjb29yZGAKCkV4YW1wbGU6Cgp+
fn5ydWJ5CmtoYXJraXYuc3RyZmNvb3JkKCclbGF0ZHXCsCVsYXRt4oCyJWxhdHPigLMgJWxhdGgs
ICVsbmdkdcKwJWxuZ23igLIlbG5nc+KAsyAlbG5naCcpCiMgPT4gIjUwwrAw4oCyMTbigLMgTiwg
MzbCsDEz4oCyNTPigLMgRSIKfn5+CgpEaXJlY3RpdmVzOgoKKiBgJWxhdGAgLSBmdWxsIGxhdGl0
dWRlLCBmbG9hdDsgY2FuIGJlIGZvcm1hdHRlZCB3aXRoIG1vcmUgY29udHJvbCBsaWtlIGAlLjRs
YXRgIChmb3VyIGRpZ2l0cyBhZnRlciBwb2ludCkgb3IgYCUrbGF0YCAoZXhwbGljaXQgcGx1cyBz
aWduIGZvciBwb3NpdGl2ZSBsYXRpdHVkZXMpOwoqIGAlbGF0ZGAgLSBsYXRpdHVkZSBkZWdyZWVz
LCB1bnNpZ25lZCwgaW50ZWdlcgoqIGAlbGF0ZHNgIC0gbGF0aXR1ZGUgZGVncmVlcywgc2lnbmVk
CiogYCVsYXRtYCAtIGxhdGl0dWRlIG1pbnV0ZXMsIHVuc2lnbmVkLCBpbnRlZ2VyCiogYCVsYXRz
YCAtIGxhdGl0dWRlIHNlY29uZHMsIHVuc2lnbmVkLCBpbnRlZ2VyLCBidXQgY2FuIGJlIGZvcm1h
dHRlZCBhcyBmbG9hdDogYCUuMmxhdHNgCiogYCVsYXRoYCAtIGxhdGl0dWRlIGhlbWlzcGhlcmUs
IG9uZSBsZXR0ZXIgKCJOIi8iUyIpCiogYCVsbmdgLCBgJWxuZ2RgLCBgJWxuZ2RzYCwgYCVsbmdz
YCwgYCVsbmdoYCwgYCVsbmdIYCAtIHNhbWUgZm9yIGxvbmdpdHVkZQoqIGAlJWAgbGl0ZXJhbCBg
JWAgc2lnbgoKIyMjIEN1cnJlbnQgaW1wbGVtZW50YXRpb24KClByb3Bvc2VkIGltcGxlbWVudGF0
aW9uIGNhbiBiZSBmb3VuZCBhdCBodHRwczovL2dpdGh1Yi5jb20venZlcm9rL2dlb19jb29yZC4K
Ckl0IHdhcyBjcmVhdGVkIHdpdGggdGhvdWdodHMgb2Ygc3RhbmRhcmQgbGlicmFyeSwgc28sIGFs
bCBkb2NzIGFyZSBpbiBSRG9jIGZvcm1hdCwgYW5kIHRlc3RzL3NwZWNzIGFyZSBpbiBtc3BlYy1j
b21wYXRpYmxlIHJzcGVjIGZsYXZvdXIuCgoKCgotLSAKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5v
cmcvCgpVbnN1YnNjcmliZTogPG1haWx0bzpydWJ5LWNvcmUtcmVxdWVzdEBydWJ5LWxhbmcub3Jn
P3N1YmplY3Q9dW5zdWJzY3JpYmU+CjxodHRwOi8vbGlzdHMucnVieS1sYW5nLm9yZy9jZ2ktYmlu
L21haWxtYW4vb3B0aW9ucy9ydWJ5LWNvcmU+Cg==

In This Thread

Prev Next