Geolocation/E911
T3V0IG9mIGN1cmlvc2l0eSwgaXMgdGhlcmUgYW55IGRvY3VtZW50YXRpb24gb24gd2hhdCBpcyBw bGFubmVkIGZvciB0aGUgR2VvbG9jYXRpb24vRTkxMT8NCg0KSXMgdGhlIHBsYW4gZm9yIEFzdGVy aXNrIHRvIGV4cG9zZSB0aGUgU0lQIGJvZHkgYW5kIGxlYXZlIGl0IHRvIGRpYWwgcGxhbiwgQVJJ
LCBBTUkgdG8gcHJvY2VzcyB0aGUgZGF0YT8NCkZvciBleGFtcGxlLCBtaW1lIHBpZGYreG1sIHNl Y3Rpb24/DQoNCk9yIGlzIHRoZXJlIGEgZGlmZmVyZW50IGFwcHJvYWNoIGJlaW5nIHdvcmtlZCBv biAob3IgcGxhbm5lZCB0byBiZSB3b3JrZWQgb24pPw0KDQpEYW4NCg=
8 thoughts on - Geolocation/E911
What are you talking about exactly?
What I have understand, E911 geo information is sent “out of band” when 911 is called.
So the question is, is you operating a 911 call centre – then you should have this information at hand already how to access this information.
Or are it the opposite, you want to send geocoded information about SIP handset location to a E911 service when 911 is called? (that you want to embed in the outgoing body when 911 is called)?
I think gaining access to these types of E911 API’s requires you being a SIP operator – and if you are a SIP operator with a number plan already, you should already have access to these types of API from the beginning and how to use them.
Från: asterisk-users-bounces@lists.digium.com För Dan Cropp Skickat: den 23 maj 2022 22:01
Till: Asterisk Users Mailing List – Non-Commercial Discussion
Ämne: [asterisk-users] Geolocation/E911
Out of curiosity, is there any documentation on what is planned for the Geolocation/E911?
Is the plan for Asterisk to expose the SIP body and leave it to dial plan, ARI, AMI to process the data?
For example, mime pidf+xml section?
Or is there a different approach being worked on (or planned to be worked on)?
Dan
There is a review up on Gerrit[1] with the documentation in markdown. There’s also a branch in Gerrit with the work. We are planning to do interop testing, so it hasn’t been merged into main and may change.
No. It will be modules for Geolocation/E911 that understand the XML, with configuration as well as by reference. The PIDF+XML won’t be exposed, the code handles it. You create profiles and tell the PJSIP endpoint to use it, and that’s that. Can also be dynamically done in the dialplan.
Whoops, review is at https://gerrit.asterisk.org/c/asterisk/+/18360
There are specifications for conveying location information dynamically in the SIP INVITE to an upstream provider, which uses pidf+xml alongside SDP
in the INVITE. This allows you to provide the address, floor, room, longitude/latitude dynamically with the call. You can see what it looks like on the Bandwidth site[1]. It is a standard though, not specific to them.
[1]
https://support.bandwidth.com/hc/en-us/articles/360006080074-E911-Dynamic-Location-Routing-integration-and-testing-guide
V2UgaGF2ZSBhIGN1c3RvbWVyIHdobyB3YW50cyB0byBwZXJmb3JtIGJvdGggZGlyZWN0aW9ucy4N
Cg0KRm9yIGluYm91bmQgY2FsbHMsIHRoZXkgaGF2ZSBpbmRpY2F0ZWQgdGhlaXIgc3dpdGNoIHdp bGwgcHJvdmlkZSBHZW9sb2NhdGlvbi9FOTExIGluZm9ybWF0aW9uIHVzaW5nIHR3byBkaWZmZXJl bnQgd2F5cy4gIFNvdW5kcyBsaWtlIGl0IGRlcGVuZHMgb24gdGhlIGVxdWlwbWVudCBiZWZvcmUg dGhlIFNJUCBwcm94eS4NCkl0IHdpbGwgZWl0aGVyIGJlIGluIFNJUCBoZWFkZXJzICh3aGljaCB3
ZSByZXRyaWV2ZSB0aHJvdWdoIFBKU0lQX0hFQURFUiBpbiB0aGUgZGlhbCBwbGFuKS4gIFRyaXZp YWwgZm9yIHVzIHRvIGRvIHRoaXMgYXBwcm9hY2guDQpTZWNvbmQgYXBwcm9hY3kgaXMgdGhlaXIg U0lQIHByb3h5IHdpbGwgYXBwZW5kIGluZm9ybWF0aW9uIHRvIHRoZSBib2R5IHdpdGggbWltZSBk ZWxpbWl0ZXJzIChpbmRpY2F0aW5nIGNvbnRlbnQgdHlwZSBvZiBwaWRmK3htbCkuDQoNClRoZXkg d2FudCB1cyB0byByZXRyaWV2ZSB0aGlzIGluZm9ybWF0aW9uICh2aWEgQXN0ZXJpc2spIGFuZCBz dG9yZSBpdCBpbnRvIHRoZWlyIGRhdGFiYXNlLiAgV2hlbiBhIDkxMSBhZ2VudCBhbnN3ZXJzIHRo ZSBjYWxsLCB0aGV5IHJldHJpZXZlIHRoZSBkYXRhIGZyb20gdGhlIGRhdGFiYXNlIGFuZCB1c2Ug aXQgYXMgbmVlZGVkIGZvciBhc3Npc3RpbmcgdGhlIGZpcnN0IHJlc3BvbmRlcnMuDQoNCklmIEFz dGVyaXNrIGNhbuKAmXQgZG8gdGhpcyBhbmQgaXNu4oCZdCBwbGFubmVkIHRvIGJlIGFibGUgdG8g c3VwcG9ydCB0aGlzLCB3ZeKAmXJlIGxvb2tpbmcgdG8gbWFrZSBLYW1haWxpbyBhYmxlIHRvIHBy b2Nlc3MgdGhlIElOVklURSBpbiBmcm9udCBvZiBBc3Rlcmlzay4gIElkZWEgYmVpbmcgS2FtYWls aW8gY291bGQgY29tbXVuaWNhdGUgdGhlIGluZm9ybWF0aW9uIG91ciBjdXN0b21lciByZXF1aXJl cyBhbmQgd2Ugc3RvcmUgaXQgaW4gdGhlIGRhdGFiYXNlLiAgV2hlbiBBZ2VudCBhbnN3ZXJzIHRo ZSBjYWxsLCB1c2UgdGhlIENhbGwtSUQgcHJvdmlkZWQgYnkgQXN0ZXJpc2sgdG8gbWF0Y2ggaXQg d2l0aCB0aGUgS2FtYWlsaW8gSU5WSVRFIGRhdGHigJlzIENhbGwtSUQuDQoNCg0KV2UgYXJlIHN0
aWxsIHRyeWluZyB0byBnYXRoZXIgZGV0YWlscyBvbiBob3cgdGhlIGN1c3RvbWVyIHdhbnRzIHRo ZSBvdXRib3VuZCBjYWxscyB0byB3b3JrLg0KDQpEYW4NCg0KRnJvbTogYXN0ZXJpc2stdXNlcnMg PGFzdGVyaXNrLXVzZXJzLWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbT4gT24gQmVoYWxmIE9mIFNl YmFzdGlhbiBOaWVsc2VuDQpTZW50OiBNb25kYXksIE1heSAyMywgMjAyMiAzOjE5IFBNDQpUbzog J01haWxpbmcgTGlzdCcgPGFzdGVyaXNrLXVzZXJzQGxpc3RzLmRpZ2l1bS5jb20+DQpTdWJqZWN0
OiBSZTogW0V4dGVybmFsXSBbYXN0ZXJpc2stdXNlcnNdIEdlb2xvY2F0aW9uL0U5MTENCg0KV2hh dCBhcmUgeW91IHRhbGtpbmcgYWJvdXQgZXhhY3RseT8NCg0KV2hhdCBJIGhhdmUgdW5kZXJzdGFu ZCwgRTkxMSBnZW8gaW5mb3JtYXRpb24gaXMgc2VudCDigJxvdXQgb2YgYmFuZOKAnSB3aGVuIDkx MSBpcyBjYWxsZWQuDQoNClNvIHRoZSBxdWVzdGlvbiBpcywgaXMgeW91IG9wZXJhdGluZyBhIDkx MSBjYWxsIGNlbnRyZSDigJMgdGhlbiB5b3Ugc2hvdWxkIGhhdmUgdGhpcyBpbmZvcm1hdGlvbiBh dCBoYW5kIGFscmVhZHkgaG93IHRvIGFjY2VzcyB0aGlzIGluZm9ybWF0aW9uLg0KDQpPciBhcmUg aXQgdGhlIG9wcG9zaXRlLCB5b3Ugd2FudCB0byBzZW5kIGdlb2NvZGVkIGluZm9ybWF0aW9uIGFi b3V0IFNJUCBoYW5kc2V0IGxvY2F0aW9uIHRvIGEgRTkxMSBzZXJ2aWNlIHdoZW4gOTExIGlzIGNh bGxlZD8gKHRoYXQgeW91IHdhbnQgdG8gZW1iZWQgaW4gdGhlIG91dGdvaW5nIGJvZHkgd2hlbiA5
MTEgaXMgY2FsbGVkKT8NCg0KSSB0aGluayBnYWluaW5nIGFjY2VzcyB0byB0aGVzZSB0eXBlcyBv ZiBFOTExIEFQSeKAmXMgcmVxdWlyZXMgeW91IGJlaW5nIGEgU0lQIG9wZXJhdG9yIOKAkyBhbmQg aWYgeW91IGFyZSBhIFNJUCBvcGVyYXRvciB3aXRoIGEgbnVtYmVyIHBsYW4gYWxyZWFkeSwgeW91
IHNob3VsZCBhbHJlYWR5IGhhdmUgYWNjZXNzIHRvIHRoZXNlIHR5cGVzIG9mIEFQSSBmcm9tIHRo ZSBiZWdpbm5pbmcgYW5kIGhvdyB0byB1c2UgdGhlbS4NCg0KRnLDpW46IGFzdGVyaXNrLXVzZXJz LWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbTxtYWlsdG86YXN0ZXJpc2stdXNlcnMtYm91bmNlc0Bs aXN0cy5kaWdpdW0uY29tPiA8YXN0ZXJpc2stdXNlcnMtYm91bmNlc0BsaXN0cy5kaWdpdW0uY29t PG1haWx0bzphc3Rlcmlzay11c2Vycy1ib3VuY2VzQGxpc3RzLmRpZ2l1bS5jb20+PiBGw7ZyIERh biBDcm9wcA0KU2tpY2thdDogZGVuIDIzIG1haiAyMDIyIDIyOjAxDQpUaWxsOiBBc3RlcmlzayBV
c2VycyBNYWlsaW5nIExpc3QgLSBOb24tQ29tbWVyY2lhbCBEaXNjdXNzaW9uIDxhc3Rlcmlzay11
c2Vyc0BsaXN0cy5kaWdpdW0uY29tPG1haWx0bzphc3Rlcmlzay11c2Vyc0BsaXN0cy5kaWdpdW0u Y29tPj4NCsOEbW5lOiBbYXN0ZXJpc2stdXNlcnNdIEdlb2xvY2F0aW9uL0U5MTENCg0KT3V0IG9m IGN1cmlvc2l0eSwgaXMgdGhlcmUgYW55IGRvY3VtZW50YXRpb24gb24gd2hhdCBpcyBwbGFubmVk IGZvciB0aGUgR2VvbG9jYXRpb24vRTkxMT8NCg0KSXMgdGhlIHBsYW4gZm9yIEFzdGVyaXNrIHRv IGV4cG9zZSB0aGUgU0lQIGJvZHkgYW5kIGxlYXZlIGl0IHRvIGRpYWwgcGxhbiwgQVJJLCBBTUkg dG8gcHJvY2VzcyB0aGUgZGF0YT8NCkZvciBleGFtcGxlLCBtaW1lIHBpZGYreG1sIHNlY3Rpb24/
DQoNCk9yIGlzIHRoZXJlIGEgZGlmZmVyZW50IGFwcHJvYWNoIGJlaW5nIHdvcmtlZCBvbiAob3Ig cGxhbm5lZCB0byBiZSB3b3JrZWQgb24pPw0KDQpEYW4NCg=
Both directions will be supported according to the specification and standard. The information will be accessible from the dialplan using a dialplan function, but not the pidf+xml itself. If they’re doing something outside of the standard, then it likely wouldn’t work. The code is not written for 911 PSAPs/handlers specifically, it’s written for receiving the information from an endpoint, and for sending it out.
VGhhbmsgeW91IEpvc2h1YS4NCg0KSSB3aWxsIHJlYWQgYm90aCBsaW5rcyB5b3UgcHJvdmlkZWQu DQoNCkFzIG1lbnRpb25lZCBpbiBhbm90aGVyIHJlc3BvbnNlLiAgSWYgd2hhdCBvdXIgY3VzdG9t ZXIgcmVxdWlyZXMgZG9lc27igJl0IGZpdCB3ZWxsIHdpdGggQXN0ZXJpc2sgZGV2ZWxvcG1lbnQs IHdlIGJlbGlldmUgd2UgY2FuIGRvIHRoaXMgd29yayB3aXRoIEthbWFpbGlvIGZyb250IGVuZGlu ZyB0aGUgY2FsbHMuICBTb21ldGhpbmcgY3VzdG9tZXIgaXMgYWxyZWFkeSByZXF1aXJpbmcgdXMg dG8gZG8gZm9yIGhpZ2ggYXZhaWxhYmlsaXR5IHJlcXVpcmVtZW50cyAoOTExIGNhbGwgY2VudGVy KS4gIEFzdGVyaXNrIHdvdWxkIGJlIGZhciBjbGVhbmVyIHNpbmNlIHRoZXJlIHdvdWxkIGJlIG5v IHRpbWluZyBpc3N1ZXMgb2YgY2FsbCBpbmZvcm1hdGlvbiBmcm9tIDIgYm94ZXMuDQoNCkRhbg0K
DQoNCkZyb206IGFzdGVyaXNrLXVzZXJzIDxhc3Rlcmlzay11c2Vycy1ib3VuY2VzQGxpc3RzLmRp Z2l1bS5jb20+IE9uIEJlaGFsZiBPZiBKb3NodWEgQy4gQ29scA0KU2VudDogTW9uZGF5LCBNYXkg MjMsIDIwMjIgMzoyNiBQTQ0KVG86IEFzdGVyaXNrIFVzZXJzIE1haWxpbmcgTGlzdCAtIE5vbi1D
b21tZXJjaWFsIERpc2N1c3Npb24gPGFzdGVyaXNrLXVzZXJzQGxpc3RzLmRpZ2l1bS5jb20+DQpT
dWJqZWN0OiBSZTogW0V4dGVybmFsXSBbYXN0ZXJpc2stdXNlcnNdIEdlb2xvY2F0aW9uL0U5MTEN
Cg0KT24gTW9uLCBNYXkgMjMsIDIwMjIgYXQgNToxOCBQTSBTZWJhc3RpYW4gTmllbHNlbiA8c2Vi YXN0aWFuQHNlYmJlLmV1PG1haWx0bzpzZWJhc3RpYW5Ac2ViYmUuZXU+PiB3cm90ZToNCldoYXQg YXJlIHlvdSB0YWxraW5nIGFib3V0IGV4YWN0bHk/DQoNCldoYXQgSSBoYXZlIHVuZGVyc3RhbmQs IEU5MTEgZ2VvIGluZm9ybWF0aW9uIGlzIHNlbnQg4oCcb3V0IG9mIGJhbmTigJ0gd2hlbiA5MTEg aXMgY2FsbGVkLg0KDQpTbyB0aGUgcXVlc3Rpb24gaXMsIGlzIHlvdSBvcGVyYXRpbmcgYSA5MTEg Y2FsbCBjZW50cmUg4oCTIHRoZW4geW91IHNob3VsZCBoYXZlIHRoaXMgaW5mb3JtYXRpb24gYXQg aGFuZCBhbHJlYWR5IGhvdyB0byBhY2Nlc3MgdGhpcyBpbmZvcm1hdGlvbi4NCg0KT3IgYXJlIGl0
IHRoZSBvcHBvc2l0ZSwgeW91IHdhbnQgdG8gc2VuZCBnZW9jb2RlZCBpbmZvcm1hdGlvbiBhYm91
dCBTSVAgaGFuZHNldCBsb2NhdGlvbiB0byBhIEU5MTEgc2VydmljZSB3aGVuIDkxMSBpcyBjYWxs ZWQ/ICh0aGF0IHlvdSB3YW50IHRvIGVtYmVkIGluIHRoZSBvdXRnb2luZyBib2R5IHdoZW4gOTEx IGlzIGNhbGxlZCk/DQoNCkkgdGhpbmsgZ2FpbmluZyBhY2Nlc3MgdG8gdGhlc2UgdHlwZXMgb2Yg RTkxMSBBUEnigJlzIHJlcXVpcmVzIHlvdSBiZWluZyBhIFNJUCBvcGVyYXRvciDigJMgYW5kIGlm IHlvdSBhcmUgYSBTSVAgb3BlcmF0b3Igd2l0aCBhIG51bWJlciBwbGFuIGFscmVhZHksIHlvdSBz aG91bGQgYWxyZWFkeSBoYXZlIGFjY2VzcyB0byB0aGVzZSB0eXBlcyBvZiBBUEkgZnJvbSB0aGUg YmVnaW5uaW5nIGFuZCBob3cgdG8gdXNlIHRoZW0uDQoNClRoZXJlIGFyZSBzcGVjaWZpY2F0aW9u cyBmb3IgY29udmV5aW5nIGxvY2F0aW9uIGluZm9ybWF0aW9uIGR5bmFtaWNhbGx5IGluIHRoZSBT
SVAgSU5WSVRFIHRvIGFuIHVwc3RyZWFtIHByb3ZpZGVyLCB3aGljaCB1c2VzIHBpZGYreG1sIGFs b25nc2lkZSBTRFAgaW4gdGhlIElOVklURS4gVGhpcyBhbGxvd3MgeW91IHRvIHByb3ZpZGUgdGhl IGFkZHJlc3MsIGZsb29yLCByb29tLCBsb25naXR1ZGUvbGF0aXR1ZGUgZHluYW1pY2FsbHkgd2l0
aCB0aGUgY2FsbC4gWW91IGNhbiBzZWUgd2hhdCBpdCBsb29rcyBsaWtlIG9uIHRoZSBCYW5kd2lk dGggc2l0ZVsxXS4gSXQgaXMgYSBzdGFuZGFyZCB0aG91Z2gsIG5vdCBzcGVjaWZpYyB0byB0aGVt Lg0KDQpbMV0gaHR0cHM6Ly9zdXBwb3J0LmJhbmR3aWR0aC5jb20vaGMvZW4tdXMvYXJ0aWNsZXMv MzYwMDA2MDgwMDc0LUU5MTEtRHluYW1pYy1Mb2NhdGlvbi1Sb3V0aW5nLWludGVncmF0aW9uLWFu ZC10ZXN0aW5nLWd1aWRlDQoNCi0tDQpKb3NodWEgQy4gQ29scA0KQXN0ZXJpc2sgVGVjaG5pY2Fs IExlYWQNClNhbmdvbWEgVGVjaG5vbG9naWVzDQpDaGVjayB1cyBvdXQgYXQgd3d3LnNhbmdvbWEu Y29tPGh0dHA6Ly93d3cuc2FuZ29tYS5jb20+IGFuZCB3d3cuYXN0ZXJpc2sub3JnPGh0dHA6Ly93
d3cuYXN0ZXJpc2sub3JnPg0K
VGhhbmsgeW91IEpvc2h1YS4NCg0KDQpGcm9tOiBhc3Rlcmlzay11c2VycyA8YXN0ZXJpc2stdXNl cnMtYm91bmNlc0BsaXN0cy5kaWdpdW0uY29tPiBPbiBCZWhhbGYgT2YgSm9zaHVhIEMuIENvbHAN
ClNlbnQ6IE1vbmRheSwgTWF5IDIzLCAyMDIyIDM6NTggUE0NClRvOiBBc3RlcmlzayBVc2VycyBN
YWlsaW5nIExpc3QgLSBOb24tQ29tbWVyY2lhbCBEaXNjdXNzaW9uIDxhc3Rlcmlzay11c2Vyc0Bs aXN0cy5kaWdpdW0uY29tPg0KU3ViamVjdDogUmU6IFtFeHRlcm5hbF0gW2FzdGVyaXNrLXVzZXJz XSBbRXh0ZXJuYWxdIEdlb2xvY2F0aW9uL0U5MTENCg0KT24gTW9uLCBNYXkgMjMsIDIwMjIgYXQg NTo1MiBQTSBEYW4gQ3JvcHAgPGRhbkBhbXRlbGNvLmNvbTxtYWlsdG86ZGFuQGFtdGVsY28uY29t Pj4gd3JvdGU6DQpXZSBoYXZlIGEgY3VzdG9tZXIgd2hvIHdhbnRzIHRvIHBlcmZvcm0gYm90aCBk aXJlY3Rpb25zLg0KDQpGb3IgaW5ib3VuZCBjYWxscywgdGhleSBoYXZlIGluZGljYXRlZCB0aGVp ciBzd2l0Y2ggd2lsbCBwcm92aWRlIEdlb2xvY2F0aW9uL0U5MTEgaW5mb3JtYXRpb24gdXNpbmcg dHdvIGRpZmZlcmVudCB3YXlzLiAgU291bmRzIGxpa2UgaXQgZGVwZW5kcyBvbiB0aGUgZXF1aXBt ZW50IGJlZm9yZSB0aGUgU0lQIHByb3h5Lg0KSXQgd2lsbCBlaXRoZXIgYmUgaW4gU0lQIGhlYWRl cnMgKHdoaWNoIHdlIHJldHJpZXZlIHRocm91Z2ggUEpTSVBfSEVBREVSIGluIHRoZSBkaWFsIHBs YW4pLiAgVHJpdmlhbCBmb3IgdXMgdG8gZG8gdGhpcyBhcHByb2FjaC4NClNlY29uZCBhcHByb2Fj eSBpcyB0aGVpciBTSVAgcHJveHkgd2lsbCBhcHBlbmQgaW5mb3JtYXRpb24gdG8gdGhlIGJvZHkg d2l0aCBtaW1lIGRlbGltaXRlcnMgKGluZGljYXRpbmcgY29udGVudCB0eXBlIG9mIHBpZGYreG1s KS4NCg0KVGhleSB3YW50IHVzIHRvIHJldHJpZXZlIHRoaXMgaW5mb3JtYXRpb24gKHZpYSBBc3Rl cmlzaykgYW5kIHN0b3JlIGl0IGludG8gdGhlaXIgZGF0YWJhc2UuICBXaGVuIGEgOTExIGFnZW50
IGFuc3dlcnMgdGhlIGNhbGwsIHRoZXkgcmV0cmlldmUgdGhlIGRhdGEgZnJvbSB0aGUgZGF0YWJh c2UgYW5kIHVzZSBpdCBhcyBuZWVkZWQgZm9yIGFzc2lzdGluZyB0aGUgZmlyc3QgcmVzcG9uZGVy cy4NCg0KSWYgQXN0ZXJpc2sgY2Fu4oCZdCBkbyB0aGlzIGFuZCBpc27igJl0IHBsYW5uZWQgdG8g YmUgYWJsZSB0byBzdXBwb3J0IHRoaXMsIHdl4oCZcmUgbG9va2luZyB0byBtYWtlIEthbWFpbGlv IGFibGUgdG8gcHJvY2VzcyB0aGUgSU5WSVRFIGluIGZyb250IG9mIEFzdGVyaXNrLiAgSWRlYSBi ZWluZyBLYW1haWxpbyBjb3VsZCBjb21tdW5pY2F0ZSB0aGUgaW5mb3JtYXRpb24gb3VyIGN1c3Rv bWVyIHJlcXVpcmVzIGFuZCB3ZSBzdG9yZSBpdCBpbiB0aGUgZGF0YWJhc2UuICBXaGVuIEFnZW50
IGFuc3dlcnMgdGhlIGNhbGwsIHVzZSB0aGUgQ2FsbC1JRCBwcm92aWRlZCBieSBBc3RlcmlzayB0
byBtYXRjaCBpdCB3aXRoIHRoZSBLYW1haWxpbyBJTlZJVEUgZGF0YeKAmXMgQ2FsbC1JRC4NCg0K
DQpXZSBhcmUgc3RpbGwgdHJ5aW5nIHRvIGdhdGhlciBkZXRhaWxzIG9uIGhvdyB0aGUgY3VzdG9t ZXIgd2FudHMgdGhlIG91dGJvdW5kIGNhbGxzIHRvIHdvcmsuDQoNCkJvdGggZGlyZWN0aW9ucyB3
aWxsIGJlIHN1cHBvcnRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24gYW5kIHN0YW5k YXJkLiBUaGUgaW5mb3JtYXRpb24gd2lsbCBiZSBhY2Nlc3NpYmxlIGZyb20gdGhlIGRpYWxwbGFu IHVzaW5nIGEgZGlhbHBsYW4gZnVuY3Rpb24sIGJ1dCBub3QgdGhlIHBpZGYreG1sIGl0c2VsZi4g SWYgdGhleSdyZSBkb2luZyBzb21ldGhpbmcgb3V0c2lkZSBvZiB0aGUgc3RhbmRhcmQsIHRoZW4g aXQgbGlrZWx5IHdvdWxkbid0IHdvcmsuIFRoZSBjb2RlIGlzIG5vdCB3cml0dGVuIGZvciA5MTEg UFNBUHMvaGFuZGxlcnMgc3BlY2lmaWNhbGx5LCBpdCdzIHdyaXR0ZW4gZm9yIHJlY2VpdmluZyB0
aGUgaW5mb3JtYXRpb24gZnJvbSBhbiBlbmRwb2ludCwgYW5kIGZvciBzZW5kaW5nIGl0IG91dC4N
Cg0KLS0NCkpvc2h1YSBDLiBDb2xwDQpBc3RlcmlzayBUZWNobmljYWwgTGVhZA0KU2FuZ29tYSBU
ZWNobm9sb2dpZXMNCkNoZWNrIHVzIG91dCBhdCB3d3cuc2FuZ29tYS5jb208aHR0cDovL3d3dy5z YW5nb21hLmNvbT4gYW5kIHd3dy5hc3Rlcmlzay5vcmc8aHR0cDovL3d3dy5hc3Rlcmlzay5vcmc+
DQo