QmFzZWQgb2ZmIG9mIG15IGxpbWl0ZWQgZXhwZXJpZW5jZSBQSUMzMiBkZXZlbG9wbWVudCBpcyBu b3QgdG9vIGRpZmZlcmVudApmcm9tIFNUTTMyIGRldmVsb3BtZW50LiBUaHJvdWdoLCBJIHdvdWxk IHN1c3BlY3QgdGhlIHRvb2xzIGFyZSBBVE0gYXJlIGEKc3RpbGwgbGl0dGxlIGJldHRlciBkZXZl bG9wZWQuCgpPbiBNb25kYXksIE5vdmVtYmVyIDExLCAyMDE5LCBOZWlsIDxwaWNkdWRlM0BuYXJ3 YW5pLm9yZz4gd3JvdGU6Cgo+IE15IGFuc3dlciBpcyBmcm9tIG15IGV4cGVyaWVuY2VzIGEgY291 cGxlL2ZldyB5ZWFycyBhZ28uLi4KPgo+IFdoZW4gSSBkZWNpZGVkIHRvIHVzZSBQSUMzMidzLCBJ IGRlY2lkZWQgdG8gc3RvcCBiZWluZyBzbyBodW5nIHVwIG9uCj4gZXh0cmFjdGluZyBldmVyeSBs YXN0IG91bmNlIG9mIHBlcmZvcm1hbmNlIGZyb20gdGhlIGNoaXBzIChhcyBJIGRpZCB3aXRoCj4g UElDMTYncyBhbmQgUElDMTgncykgYW5kIHVzZSB0aGUgdG9vbHMgKEhhcm1vbnkpIGFuZCBsaWJy YXJpZXMgYXZhaWxhYmxlCj4gdG8gbWFrZSB0aGluZ3MgZWFzaWVyIG9uIG15c2VsZi4gIEl0IHdh cyBhIGZydXN0cmF0aW5nIHByb2Nlc3MgYmVjYXVzZQo+IGRvY3VtZW50YXRpb24gd2FzIHNjYXR0 ZXJlZCBhbmQgbG90cyBvZiB0aGUgc29mdHdhcmUgd2FzIGluIGxpbWJvLiAgVGhlCj4gaGVscCB3 aXRoaW4gdGhlIHRvb2wgd2FzIHRlbGxpbmcgbWUgdG8gdXNlIG9uZSBvZiB0aGUgbGlicmFyaWVz IChQTElCIG9yCj4gSEFMKSwgd2hpbGUgdGhlIHBkZiBoZWxwIGRvYyB3aXRoaW4gdGhlIGZvbGRl ciBvZiB0aGUgc2FtZSBpbnN0YWxsYXRpb24KPiB3YXMgdGVsbGluZyBtZSB0byB1c2UgdGhlIG90 aGVyLiBMb3RzIG9mIGNvZGUganVzdCBkaWRuJ3Qgd29yayBhcwo+IGV4cGVjdGVkIGFuZCBJIHNh dCBkb3duIGZvciBjb2ZmZWUgd2l0aCBteSBsb2NhbCBGQUUgYW5kIHByb3ZlZCBpdCB0bwo+IGhp bS4gIEkgaGFkIGFsc28ganVzdCBzdGFydGVkIHVzaW5nIE1QTEFCIFggYW5kIHRoYXQgYWRkZWQg dG8gdGhlIHBhaW4sCj4gYXMgSSB3YXMgb24gYSAxNDQwLWxpbmUgcmVzb2x1dGlvbiBsYXB0b3Ag YW5kIHRoZSBmb250cyBkaWQgbm90IHNjYWxlCj4gcHJvcGVybHkuICBBcHBhcmVudGx5IHRoZXkg d2VyZSBoYXJkY29kZWQgaW4gc29tZSBwYXJ0cyBvZiB0aGUgSURFIGFuZAo+IHNjYWxhYmxlIGlu IG90aGVyIHBhcnRzLiAgU29tZSB0b29scyAoc3VjaCBhcyB0aGUgZ3JhcGhpY3MgZ2VuZXJhdG9y KQo+IGp1c3QgZmxhdCBvdXQgZGlkIG5vdCB3b3JrLiAgQWxzbyB2ZXJpZmllZCBieSBteSBGQUUu ICBVcGRhdGVzIHdlcmUKPiBoYXBwZW5pbmcgcmFwaWRseSBhbmQgdGhlIGNoYW5nZXMgd2VyZSBz aWduaWZpY2FudC4gIEFyb3VuZCB0aGlzIHRpbWUsCj4gdGhlcmUgd2FzIGEgY2hpcCBmYW1pbHkg Y2FsbGVkIHRoZSBQSUMzMk1aLi5FQywgd2hpY2ggd2FzIGFwcGFyZW50bHkKPiBWRVJZIGJ1Z2d5 LiAgRXZlbiBteSBGQUUgdG9sZCBtZSB0byBhdm9pZCBpdC4KPgo+IE15IGltcHJlc3Npb24gd2Fz IE1pY3JvY2hpcCB3YXMgc2NyYW1ibGluZyB0byBnZXQgYSBwcm9kdWN0IChIYXJtb255KQo+IG91 dCB0aGVyZSB0byBjb21wZXRlIHdpdGggb3RoZXJzIGFuZCB3YXMgdGhyb3dpbmcgb3V0IHZlcnkg dW5maW5pc2hlZAo+IGNvZGUsIHdoaWxlIGFsc28gY2hhbmdpbmcgZGlyZWN0aW9ucyBkdXJpbmcg dGhhdCB0aW1lLCBzbyBJIHdhcyBwbGF5aW5nCj4gYWxwaGEtdGVzdGVyLiAgQW5kIGl0IG1hZGUg bm8gc2Vuc2UgdG8gc3RhcnQgbGVhcm5pbmcgYW4gb2xkZXIKPiBjb2RlL2xpYnJhcnkgc3lzdGVt IChQTElCKSBhcyBpdCB3b3VsZCBub3QgYmUgc3VwcG9ydGVkIGFueW1vcmUuCj4KPiBOb3cgcHJp b3IgdG8gdGhpcywgSSB1c2VkIHRoZSBDaGlwa2l0IGJvYXJkcyBmb3IgUElDMzIgY29kZSwgYW5k IHRoaW5ncwo+IHdlcmUgc2ltcGxlciBhbmQgd29ya2VkIHdlbGwsIHRob3VnaCBhIGJpdCBsaW1p dGluZywgIFNvIEkgY29udGludWVkIHRvCj4gdXNlZCB0aGUgUElDMzIgaW4gdGhhdCBwbGF0Zm9y bSBmb3Igb3RoZXIgdGhpbmdzLgo+Cj4gQXJvdW5kIHRoYXQgdGltZSBJIGdvdCBhIGN1c3RvbWVy IGdpZyB0byBkZXZlbG9wIGEgcHJvZHVjdCB1c2luZyBhbiBBUk0KPiBwcm9jZXNzb3IgKHRoZXkg d2FudGVkIEFSTSBiZWNhdXNlIG9mIHRoZSBidXp6d29yZCkgYW5kIGFsc28gc3RhcnRlZAo+IHBs YXlpbmcgd2l0aCBTVE0zMidzLCB3aGljaCB3YXMgYSBtdWNoIGJldHRlciBleHBlcmllbmNlLiBJ dCB3YXMgc28gbXVjaAo+IG1vcmUgbWF0dXJlLiAgU2luY2UgdGhlbiBJJ3ZlIHN0dWNrIHdpdGgg U1RNMzIgcHJvY2Vzc29ycy4KPgo+IEkgaGF2ZW4ndCB0b3VjaGVkIFBJQzMyJ3MgZm9yIG92ZXIg YSB5ZWFyIG9yIHR3byBub3cgc28gY2FuJ3QgcHJvdmlkZSBhCj4gcmVjZW50IGV4cGVyaWVuY2Us IGJ1dCBJIHdvdWxkIGV4cGVjdC9ob3BlIHRoZXkgaGF2ZSB0aGVpciBhY3QgdG9nZXRoZXIKPiBh IGJpdCBtb3JlIGJ5IG5vdy4gIElzYWFjIChvbiBoZXJlKSBpcyBhIGJpZyBQSUMzMiBmYW4gc28g Y2hlY2sgd2l0aCBoaW0KPiBmb3IgYSBkaWZmZXJlbnQgcGVyc3BlY3RpdmUuCj4KPiBDaGVlcnMs Cj4gLU5laWwuCj4KPgo+Cj4KPiBPbiAxMS8xMC8yMDE5IDk6MjUgUE0sIEpvc2ggS29mZm1hbiB3 cm90ZToKPiA+IEhpIGFsbCwKPiA+Cj4gPiBJ4oCZbSBjb25zaWRlcmluZyBzdGFydGluZyBteSBm aXJzdCBwcm9qZWN0IHRhcmdldGluZyB0aGUgUElDMzIgc2VyaWVzLgo+IEnigJl2ZQo+ID4gbG9u ZyBiZWVuIHVzaW5nIHRoZSA4IGJpdCBjaGlwcywgYW5kIEnigJlkIGxpa2UgdG8gdHJ5IHRoZSAz MiBiaXQgb25lcy4gVGhlCj4gPiBtYWluIHJlYXNvbiBpcyB0aGF0IEnigJltIGNvbm5lY3Rpbmcg dG8gYSBtb2R1bGUgdGhhdCB0aGUgbWFudWZhY3R1cmVyCj4gPiBwcm92aWRlcyBleGFtcGxlIFBJ QzMyIGNvZGUgZm9yLiBQbHVzIEnigJltIGhvcGluZyBJIGNhbiBnZXQgc29tZSBmYXN0ZXIKPiBQ V00KPiA+IHBlcmlwaGVyYWwgc3BlZWRzIGR1ZSB0byBmYXN0ZXIgY2xvY2sgKGhhdmUgdG8gY2hl Y2sgdGhpcyB0aG91Z2gpLiBBbHNvCj4gPiBmZWVscyBsaWtlIGl0IG1pZ2h0IG5vdCBiZSBhIGJh ZCBpZGVhIHRvIG1vdmUgdG8gYSBwcm9jZXNzb3IgYSBiaXQgbW9yZQo+ID4gb3B0aW1pemVkIGZv ciBDIHByb2dyYW1taW5nLgo+ID4KPiA+IE15IGN1cnJlbnQgcGxhbiBpcyB0byBwcm9ncmFtIGlu IFhDMzIuIEnigJltIGxvb2tpbmcgYXQgdGhlIFBJQzMyTVgyNzAKPiA+IGZhbWlseSwgYnV0IEkg YW0gb3BlbiB0byBzdWdnZXN0aW9ucyBpZiB0aGVyZSBhcmUgbmV3ZXIvYmV0dGVyIGNob2ljZXMK PiA+IChwYXJ0aWN1bGFybHkgaWYgdGhleSBoYXZlIG5ld2VyIFBXTSBwZXJpcGhlcmFscykuCj4g Pgo+ID4gTXkgcmVxdWlyZW1lbnRzIG9uIHRoaXMgZmlyc3QgcHJvamVjdCBhcmUgZmFpcmx5IHNp bXBsZSAtIGhhbmRsZSBzb21lCj4gc2V0dXAKPiA+IG9mIHRoZSBtb2R1bGUsIHB1bGwgZGF0YSB2 aWEgSTJDLCBhbmQgZG8gc29tZSBQV00uIEZ1dHVyZSBwcm9qZWN0cyB3aWxsCj4gZ2V0Cj4gPiBt b3JlIGNvbXBsZXguCj4gPgo+ID4gU28gb24gdG8gdGhlIHF1ZXN0aW9uczoKPiA+Cj4gPiBXaGF0 IGRldiB0b29scyBhcmUgcGVvcGxlIGN1cnJlbnRseSB1c2luZz8gSeKAmXZlIGJlZW4gbG9va2lu ZyBhdCB0aGUKPiBTZWdnZXIKPiA+IEotTGluayBkZXZpY2VzLiBJIGJlbGlldmUgdGhleSBpbnRl Z3JhdGUgaW50byBNUExBQiwgdGhvdWdoIEkgbmVlZCB0bwo+ID4gdmVyaWZ5IHRoYXQuIEkgaGF2 ZSBuZXZlciB1c2VkIEpUQUcgYmVmb3JlLCBidXQgZnJvbSB0aGUgYnJpZWYgYml0cyBJ4oCZdmUK PiA+IHJlYWQgSSBiZWxpZXZlIGl0IHdvdWxkIGJlIGZhc3RlciB0aGFuIElDU1Agb24gdGhlc2Ug Y2hpcHMuIFdvdWxkIEkgYWxzbwo+ID4gbmVlZCBzb21ldGhpbmcgbGlrZSBhIFBJQ2tpdCBvciBJ Q0QgdG8gcHJvZ3JhbSBmb3Igc3RhbmRhbG9uZSBydW5uaW5nPwo+ID4KPiA+IEFueSBnZW5lcmFs IGFkdmljZSBvbiBYQzMyIG9yIHRoZSBjaGlwcyBpbiBnZW5lcmFsPyBJIGtub3cgSSBuZWVkIHRv Cj4gY2hlY2sKPiA+IGVycmF0YSBjYXJlZnVsbHkuIEFueXRoaW5nIGVsc2U/IFdoYXQgdG9vbGNo YWlucyBhcmUgb3RoZXIgcGVvcGxlIHVzaW5nPwo+ID4KPiA+IFRoYW5rIHlvdSEKPiA+Cj4gPiBK b3NoCj4KPiAtLQo+IGh0dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNsaXN0IFBJQy9T WCBGQVEgJiBsaXN0IGFyY2hpdmUKPiBWaWV3L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9u cyBhdAo+IGh0dHA6Ly9tYWlsbWFuLm1pdC5lZHUvbWFpbG1hbi9saXN0aW5mby9waWNsaXN0Cj4K CgotLSAKSmFzb24gV2hpdGUKLS0gCmh0dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNs aXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJzaGlw IG9wdGlvbnMgYXQKaHR0cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xp c3QK .