[Sigia-l] Agile, Scrum and UX Wrap-up
Tom Donehower <[email protected]> Mon, 30 Mar 2015 10:36:21 -0700
| Newsgroups | gmane.comp.web.sigia |
|---|---|
| Message-ID | <CAHR8aLBGAWMNz1PY7nGu3D-kJGcuZa8_FXyfRqQC7hNtyN5ZmA@mail.gmail.com> |
SSByZWNlaXZlZCBzbyBtYW55IGludmFsdWFibGUgcmVzcG9uc2VzIHRvIG15IHF1ZXN0aW9uIGFi b3V0IEFnaWxlIGFuZAp3aGVyZSBVWCBhbmQgdmlzdWFsIGRlc2lnbiBmaXQgaW4gdGhhdCBJIHdh bnRlZCB0byBjb25zb2xpZGF0ZSBhbmQgc2hhcmUKd2l0aCB0aGUgZ3JvdXAuIFRoYW5rcyB0byBh bGwgd2hvIHNoYXJlZC4gSXQgaXQgZ3JlYXRseSBhcHByZWNpYXRlZC4KCkxvb29uZyBidXQgdmFs dWFibGUgbGlzdCBvZiByZXBsaWVzIGZvbGxvd3M6Cgo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CgpBZHJpYW4gSG93YXJkIHdyb3RlOgoKPGFzaWRlPiBJdOKAmXMgbm90IGFuIGFj cm9ueW0gc28gIlNjcnVtIiBub3QgIlNDUlVNIi4gSXTigJlzIGEgYml0IG9mIGEKc2hpYmJvbGV0 aCBpbiB0aGUgYWdpbGUgY29tbXVuaXR5IDstKSA8L2FzaWRlPgoKPiBJ4oCZbSB0cnlpbmcgdG8g dW5kZXJzdGFuZCB3aGVyZSB0aGVzZSBvdGhlciByb2xlcyBhbmQgdGhlaXIgZGVsaXZlcmFibGVz CmZpdCBpbiByZWxhdGlvbiB0byBhIHNwcmludCBmcm9tIG90aGVycyBwYXN0IGV4cGVyaWVuY2Vz Lgo+Cj4gU2hhcmVkIGV4cGVyaWVuY2VzLCB3YXIgc3RvcmllcywgYW5kIGluc2lnaHQgZ3JlYXRs eSBhcHByZWNpYXRlZC4KClRoaXMgaXMgYSBmZXcgeWVhcnMgb2xkIGJ1dCBzdGlsbCBhIHJlbGV2 YW50IHJlYWQKCmh0dHA6Ly93d3cuYWdpbGVwcm9kdWN0ZGVzaWduLmNvbS9ibG9nL2VtZXJnaW5n X2Jlc3RfYWdpbGVfdXhfcHJhY3RpY2UuaHRtbAoKVW5mb3J0dW5hdGVseSBpdOKAmXMgcmVhbGx5 IG9uZSBvZiB0aG9zZSBpdC1kZXBlbmRzIHF1ZXN0aW9ucyBJ4oCZbSBhZnJhaWQuIE15CmFkdmlj ZSB3b3VsZCBjaGFuZ2UgcXVpdGUgYSBiaXQgZGVwZW5kaW5nIG9uIHRoZSBVWCBmb2xrIGludm9s dmVkLCB0aGUKdGVhbSwgaG93IGdvb2QgdGhleSBhcmUgYXQgYWN0dWFsbHkgZG9pbmcgU2NydW0s IGV0Yy4KCkZvciBleGFtcGxlIGF0IHRoZSBtb3JlIGdlbmVyYXRpdmUgZW5kICh1c2VyIHJlc2Vh cmNoLCBpbnRlcnZpZXdpbmcsIGV0Yy4pCnRoZXJlIGlzIGEgc3Ryb25nIG92ZXJsYXAgYmV0d2Vl biBVWCBhbmQgdGhlIFByb2R1Y3QgT3duZXIgcm9sZSBpbiBTY3J1bS4KU28gSeKAmXZlIHNlZW4g c29tZSB0ZWFtcyB3b3JrIHZlcnkgZWZmZWN0aXZlbHkgYnkgaGF2aW5nIGEgVVggcGVyc29uCmJh c2ljYWxseSBmaWxsIHRoYXQgcm9sZSwgb3IgYmUgYSBoZWF2eSBzdXBwb3J0IHJvbGUgZm9yIHRo ZSBhY3R1YWwgUE8uCgpPbiB0aGUgb3RoZXIgaGFuZCBtYW55IG9mIHRoZSBtb3N0IGVmZmVjdGl2 ZSBhZ2lsZSB0ZWFtcyBJ4oCZdmUgd29ya2VkIHdpdGgKdGVuZCB0byBlbWJlZCBVWCBpbiB0aGUg dGVhbS4gVGhlIGVtYmVkZGVkIHJvbGUgdGVuZHMgdG93YXJkcyBkb2luZyBhIGxvdAptb3JlIGZh Y2lsaXRhdGluZyBvZiBVWCB3b3JrIGJ5IHRoZSB3aG9sZSB0ZWFtLCBhcyB3ZWxsIGFzIGRvaW5n IGhhbmRzLW9uCndvcmsuCgpJZiB5b3UgY2FuIHRhbGsgYSBiaXQgbW9yZSBhYm91dCBhbnkgcGFy dGljdWxhciBpc3N1ZXMgeW914oCZcmUgaGF2aW5nIEkKbWlnaHQgYmUgYWJsZSB0byBnaXZlIHNv bWUgbW9yZSBzcGVjaWZpYyBhZHZpY2UuCgpGb3IgZnVydGhlciByZWFkaW5nIGhhdmUgYSBHb29n bGUgYXJvdW5kICJBZ2lsZSBVWCIgJiAiTGVhbiBVWCIuIFRoZSBMZWFuClVYIHN0dWZmIGdyZXcg b3V0IG9mIGZvbGsgYXBwbHlpbmcgVVhpc2ggdGhpbmdzIGluIExlYW4gU3RhcnR1cCBjb250ZXh0 IOKAlApidXQgaXTigJlzIGJpZ2dlciB0aGFuIHRoYXQgbm93LCBiZWluZyB1c2VkIGluIGxvdHMg b2Ygbm9uLXN0YXJ0dXAgY29udGV4dHMsCmFuZCBpcyBhIGdvb2QgZml0IGZvciBhZ2lsZS4KCkJv b2sgd2lzZSBJ4oCZZCBhdCBsZWFzdCBnbGFuY2UgYXQgdGhlc2U6CgoqIEFnaWxlIFVzZXIgRXhw ZXJpZW5jZSBEZXNpZ24sIERpYW5hIEJyb3duIC0gVGhpcyBpcyBncmVhdCBmb3IgVVggZm9sawp3 YW50aW5nIHRvIGdyb2sgYWdpbGUgbW9yZSwgYW5kIGhhcyBzZXZlcmFsIGNhc2Ugc3R1ZGllcyBv biBhZ2lsZS91eCB0ZWFtcy4KSG93ZXZlciwgaXQgZG9lc27igJl0IHJlYWxseSBkaXZlIGRlZXAg aW50byBzcGVjaWZpYyBBZ2lsZSBVWCBwcmFjdGljZXMuIEdvb2QKb3ZlcnZpZXcgYm9vay4gRXNw ZWNpYWxseSBmb3Igbm9uLWFnaWxlIFVYIGZvbGsuCgoqIEFnaWxlIEV4cGVyaWVuY2UgRGVzaWdu LCBMaW5kc2F5IFJhdGNsaWZmZSAmIE1hcmMgTWNOZWlsbCAtIE11Y2ggbW9yZSBvZgphIHRvb2xi b3ggb2YgdGVjaG5pcXVlcy9hcHByb2FjaGVzIGJvb2suIFRoZSBsYXN0IHRoaXJkLWlzaCBvZiB0 aGUgYm9vayBpcwpiYXNpY2FsbHkgYSBsaXN0IG9mIHRlY2huaXF1ZXMuIFRoZXJl4oCZcyBzb21l IHN0dWZmIEnigJlkIG5pZ2dsZSB3aXRoIGluIGhlcmUuCkVzcGVjaWFsbHkgb24gc29tZSBvZiB0 aGUgd2F5cyB0aGV5IHRhbGsgYWJvdXQgQWdpbGUgLSBidXQgaXTigJlzIGtpbmRhCmhhaXItc3Bs aXR0aW5nIHN0dWZmIGlmIHlvdeKAmXJlIGp1c3QgZ2V0dGluZyBzdGFydGVkIDstKQoKKiBVc2Vy LUNlbnRlcmVkIEFnaWxlIE1ldGhvZHMsIEh1Z2ggQmV5ZXIg4oCUIFRoaXMgaXMgbW9yZSBvZiBh IFVYLXBlcnNvbgpjb21pbmcgdG8gQWdpbGUgYm9vaywgdGhhbiBhbiBBZ2lsZSBmb2xrIGFkb3B0 aW5nIFVYIGJvb2sgKGlmIHlvdSBzZWUgd2hhdApJIG1lYW4pLiBNeSBwZXJzb25hbCBhcHByb2Fj aCBpcyBhIGxpdHRsZSBiaXQgZGlmZmVyZW50IGZyb20gSHVnaOKAmXMgLSBidXQKdGhlcmXigJlz IGRlZmluaXRlbHkgc3R1ZmYgd29ydGggdGhpbmtpbmcgYWJvdXQgaGVyZS4gSWYgeW914oCZcmUg ZGVhbGluZyB3aXRoCmEgbW9yZSB0cmFkaXRpb25hbCBVQ0QgZ3JvdXAgdGhlbiB0aGlzIHdvdWxk IGJlIHZlcnkgYXBwcm9hY2hhYmxlIGZvciB0aGVtLgoKKiBMZWFuIFVYLCBKZWZmIEdvdGhlbGYg JiBKb3NoIFNlaWRlbiAtICJUaGUiIGJvb2sgb24gTGVhbiBVWC4gR29vZAppbnRyb2R1Y3Rvcnkg cmVhZCBvbiBMZWFuIFVYLCBidXQgY2FuIG9ubHkgZG8gc28gbXVjaCBmb3IgdGhlIHNpemUgb2Yg Ym9vay4KSXTigJlzIGFsc28gYSBiaXQgbGlnaHQgb24gc29tZSBvZiB0aGUgbW9yZSBnZW5lcmF0 aXZlIHVzZXIgcmVzZWFyY2gKYXBwcm9hY2hlcyBmcm9tIG15IHBlcnNvbmFsIHBlcnNwZWN0aXZl LiBTdGlsbCBhIHVzZWZ1bCByZWFkIHRob3VnaC4KCiogVVggZm9yIExlYW4gU3RhcnR1cHMsIExh dXJhIEtsZWluIC0gSSB0aGluayB0aGlzIGZpbGxzIHNvbWUgZ2FwcyBpbiBKZWZmCiYgSm9zaOKA mXMgTGVhbiBVWCBib29rLiBFc3BlY2lhbGx5IG9uIHRoZSB1c2VyIHJlc2VhcmNoIHNpZGUuIEkg YWxzbyB0aGluawppdOKAmXMgYSAqbXVjaCogbW9yZSBhcHByb2FjaGFibGUgcmVhZCB0byBub24t VVggZm9say4gU29tZXRoaW5nIHRoYXQgeW91IGNhbgpnaXZlIHRvIHRoZSByZXN0IG9mIHRoZSB0 ZWFtLgoKKiBMZWFuIEN1c3RvbWVyIERldmVsb3BtZW50LCBDaW5keSBBbHZhcmV6IC0gQWdhaW4s IHNvbWV0aGluZyB2ZXJ5CmFwcHJvYWNoYWJsZSB0byBub24tVVggZm9sayBpbiBsYW5ndWFnZSBh bmQgdG9uZS4gTGlrZSBKZWZmLCBKb3No4oCZcyAmCkxhdXJh4oCZcyBib29rcyBpdCBkb2VzbuKA mXQgc3BlbmQgYSBsb3Qgb2YgdGltZSB0YWxraW5nIGFib3V0IGludGVncmF0aW9uIHdpdGgKYWdp bGUgdGVhbXMgc3BlY2lmaWNhbGx5LCBidXQgdGhlIHRlY2huaXF1ZXMgZml0IGluIHdpdGggYWdp bGUgYXBwcm9hY2hlcwp2ZXJ5IHdlbGwgKGluZGVlZCwgYWdpbGUgYXBwcm9hY2hlcyBhcmUgcmVx dWlyZWQgZm9yIHRoaXMgc29ydCBvZiBVWAphcHByb2FjaCB0byB3b3JrIHdlbGwuKS4gVGhpcyBp cyBtb3JlIHJlbGV2YW50IHRvIFBPIGZvbGsuCgpKdXN0IG9uIHRoZSB0b3BpYyBvZiB1c2FiaWxp dHkgdGVzdGluZywgdGhlIHN0dWZmIGluIFN0ZXZlIEtydWfigJlzICJSb2NrZXQKU3VyZ2VyeSBN YWRlIEVhc3kiIGZpdHMgaW4gcmVhbGx5IG5pY2VseSB3aXRoIGFnaWxlIC0gYW5kIHZlcnkgYXBw cm9hY2hhYmxlCmZvciBub24tVVggZm9say4KCknigJlkIGFsc28ga2VlcCBhbiBleWUgb24gVG9t ZXIgU2hhcm9u4oCZcyB1cGNvbWluZyBMZWFuIFVzZXIgUmVzZWFyY2ggYm9vawpmcm9tIFJvc2Vu ZmVsZApodHRwOi8vcm9zZW5mZWxkbWVkaWEuY29tL2Jvb2tzL2xlYW4tdXNlci1yZXNlYXJjaC1w cm9kdWN0LWRldmVsb3BtZW50LwoKT3V0c2lkZSBvZiBib29rcyBJ4oCZZCBhbHNvIHRha2UgYSBw b2tlIGF0IHRoZXNlIHR3byBvbmxpbmUgY29tbXVuaXRpZXMuCgoqIEJhbGFuY2VkIFRlYW0gKGJh bGFuY2VkdGVhbS5vcmcpIC0gVGhpcyBjb21tdW5pdHkgZ3JldyBvdXQgb2Ygc29tZSBVWCBhbmQK QWdpbGUgZm9sayB0cnlpbmcgdG8gcGxheSBuaWNlIHRvZ2V0aGVyLCBidXQgaGFzIGEgYml0IG9m IGEgYnJvYWRlciBzY29wZQpub3cuIFRoZXkgZG8gb25saW5lL29mZmxpbmUgbWVldHVwcywgY29u ZmVyZW5jZXMsIGFuZCB0aGUgbWFpbGluZyBsaXN0IGlzCmFzIHVzZWZ1bCBhcyByZXNwZWN0ZnVs IGFzIHRoaXMgb25lIGlzIElNSE8uIEkgZmlyc3QgaGVhcmQgYWJvdXQgdGhlIHN0dWZmCkphbmlj ZSBGcmFzZXIgZXQgYWwgd2VyZSBkb2luZyBhcm91bmQgTGVhbiBVWCBoZXJlLCBsb25nIGJlZm9y ZSBpdCB3YXMgY29vbAphbmQgc2V4eSA7LSkKCiogaHR0cHM6Ly9ncm91cHMueWFob28uY29tL2dy b3Vwcy9hZ2lsZS11c2FiaWxpdHkvaW5mbyAtIFRoaXMgaXMgQUZBSUsgdGhlCm9sZGVzdCBjb21t dW5pdHkgb2YgZm9sayB0aGF0IGhhdmUgYmVlbiBwb2tpbmcgYXQgQWdpbGUgJiBVWC4gQWxtb3N0 IG5vCnRyYWZmaWMgbm93LCBidXQgaGFzIGEgYnVuY2ggb2Ygc21hcnQgZm9sayBzdWJzY3JpYmVk IGFuZCBzb21lIGdvbGQgaW4gdGhlCmFyY2hpdmVzLgoKVG8gYmUgaG9uZXN0IEkgdGhpbmsgcGx1 Z2dpbmcgaW50byB0aGUgb25saW5lIGNvbW11bml0aWVzIGFyb3VuZCBhZ2lsZSB1eCAmCmxlYW4g dXggd2lsbCBiZSBtb3JlIGhlbHBmdWwgdG8geW91IHRoYW4gdGhlIGJvb2tzLiBEZXNwaXRlIGZv bGsgaGF2aW5nCmJlZW4gcG9raW5nIGFyb3VuZCB0aGlzIGZvciBtb3JlIHRoYW4gdGVuIHllYXJz IG5vdywgbm90IGVub3VnaCBvZiBpdCBoYXMKYmVlbiB3cml0dGVuIGRvd24uCgpBbHNvLCB3aGls ZSBJIGRvbuKAmXQgcmVhbGx5IGFjdGl2ZWx5IGN1cmF0ZSB0aGVzZSBhbnltb3JlIHlvdSBtYXkg ZmluZCBzb21lCm9mIHRoZSBsaW5rcyBvbgoKICAgIGh0dHBzOi8vcGluYm9hcmQuaW4vdTphZHJp YW5oL3Q6bGVhbnV4CiAgICBodHRwczovL3BpbmJvYXJkLmluL3U6YWRyaWFuaC90OmFnaWxldXgK ICAgIGh0dHBzOi8vcGluYm9hcmQuaW4vdTphZHJpYW5oL3Q6YWdpbGUrdXgKCm9mIGludGVyZXN0 IChhbHRob3VnaCB0aGUgcmVsZXZhbmNlIHRvIHRoZSB0b3BpYyBtYXksIG9uIG9jY2FzaW9uLCBu ZWVkCmZpbHRlcmluZyB0aHJvdWdoIG15IGJyYWluIGZpcnN0IDstKQoKPGJpYXNlZD4KT2ggeWVz LiBJIG1heSBwdXQgb3V0IGEgbmV3c2xldHRlciBvbiB0aGUgdG9waWMgb2NjYXNpb25hbGx5IHRo YXQgbWlnaHQgYmUKdXNlZnVsLiBQcmV2aW91cyBpc3N1ZXMgLyBzdWJzY3JpcHRpb24gYXQgaHR0 cDovL2lzLmdkL0hOejVUTgo8L2JpYXNlZD4KCj4gV291bGQgYWxzbyBiZSBjdXJpb3VzIGlmIHlv dSd2ZSB1c2VkIGEgc2NydW0gdG9vbCB5b3Ugd291bGQgcmVjb21tZW5kIGxpa2UKPiBQaXZvdGFs IFRyYWNrZXIgb3IgQXhvc29mdCBPblRpbWUuCgpIYXZlIGhhcHBpbHkgdXNlZCBQaXZvdGFsLCBK aXJhICYgVHJlbGxvIG9uIHByb2plY3RzLiBIYXZlIGFsc28gd29ya2VkIG9uCnByb2plY3RzIHdo ZXJlIHRoZXnigJl2ZSBiZWVuIGEgdGVycmlibGUgaGluZGVyYW5jZS4gVGhleeKAmXJlIGp1c3Qg dG9vbHMuIEkKdGVuZCB0b3dhcmRzIHN0YXJ0aW5nIHdpdGggcG9zdC1pdCBub3RlcyBvciBpbmRl eCBjYXJkcywgYW5kIG1vdmUgdG8KZGlnaXRhbCB0b29scyBpZi93aGVuIG5lY2Vzc2FyeS4KCj09 PT09PT09PT09PQpBbHNvIGEgYml0IGRhdGVkIGJlaW5nIGZyb20gMjAxMCwgYnV0IGhlcmUncyBt eSBleHBlcmllbmNlIGZyb20gdGhlIFVYCmVuZCBvZiB0aGluZ3M6CgpodHRwOi8vd2VidG9ycXVl Lm9yZy9zY3J1bS1kaWRudC13b3JrLWZvci11cy8KCkkgaGF2ZSBubyBkb3VidCB0aGF0IFNjcnVt IHdvcmtzLiBJdOKAmXMganVzdCB0aGF0IGl0IHdvcmtzIGZvciBvdGhlciBwZW9wbGUuCkRhdmUg RXBzdGVpbiB3b25kZXJwdXBAZ21haWwuY29tIHZpYQo8aHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5j b20vbWFpbC9hbnN3ZXIvMTMxMTE4Mj9obD1lbj4gYXNpcy5vcmcKTWFyIDIwICgxMCBkYXlzIGFn bykKdG8gU0lHCkkgZmluZCB0aGF0IGl0IGNhbiBhbmQgZG9lcyB3b3JrICh3ZSB1c2UgaXQgYXQg bXkgam9iKSBidXQgaXQgcmVxdWlyZXMgdGhlCmVudGlyZSBvcmdhbml6YXRpb24gdG8gYnV5IGlu IC0gZnJvbSBob3cgcHJvamVjdHMgYXJlIGRlZmluZWQgYW5kIGhvdyB0aGV5CmFyZSByb2xsZWQg b3V0LiBUaGF0J3MgdGhlIGhhcmQgcGFydC4KSm9uYXRoYW4gQmFrZXItQmF0ZXMgdmlhCjxodHRw czovL3N1cHBvcnQuZ29vZ2xlLmNvbS9tYWlsL2Fuc3dlci8xMzExMTgyP2hsPWVuPiBhc2lzLm9y ZwpNYXIgMjAgKDEwIGRheXMgYWdvKQp0byBTSUcKTXkgZXhwZXJpZW5jZSB3b3VsZCBpbmRpY2F0 ZSB0aGF0IHlvdSdyZSBjb3JyZWN0LiBJbiBsYXJnZXIKb3JnYW5pc2F0aW9ucywgSSB0aGluayBz Y3J1bSBpcyBwcm9iYWJseSBkb29tZWQgdG8gZmFpbCBiZWNhdXNlCnRlY2huaWNhbCBkZXBhcnRt ZW50cyB1c3VhbGx5IGRvbid0IGhhdmUgdGhlIGluZmx1ZW5jZSBuZWVkZWQgdG8gcHVzaAp0aGUg YWdlbmRhIG5lZWRlZCBmb3Igc2NydW0gdG8gd29yay4gRm9yIGV4YW1wbGUsIHNjcnVtIGlzIGJh c2ljYWxseQphYm91dCBpbmNyZWFzaW5nIHF1YWxpdHksIGFuZCBpc24ndCBuZWNlc3NhcmlseSBh Ym91dCBpbmNyZWFzaW5nIHNwZWVkCihpbiBmYWN0IHByb2plY3RzIG9mdGVuIHN0YXJ0IHNsb3dl ciB3aGlsZSByaXNrcyBhcmUgZmx1c2hlZCBvdXQgYXQKdGhlIHN0YXJ0KS4gSG93ZXZlciwgd2Ug Zm91bmQgd2UgaGFkIHRvIHByZXNlbnQgc2N1bSBhcyBhIHdheSBvZgphY2NlbGVyYXRpbmcgZGV2 ZWxvcG1lbnQgaW4gb3JkZXIgdG8gZ2V0IHRoZSBDRU8gdG8gYWdyZWUgdG8gdHJ5IGl0LgpNeSB1 bmVhc2UgYWJvdXQgdGhhdCBkZWNlcHRpb24gdHVybmVkIG91dCB0byBiZSBqdXN0aWZpZWQuClRo b21hcyBEb25laG93ZXIgPHRkb25laG93ZXJAZ21haWwuY29tPgpNYXIgMjAgKDEwIGRheXMgYWdv KQp0byBTSUcKRmFudGFzdGljIGZlZWRiYWNrISBUaGFuayB5b3UuIENvdWxkIEkgYXNrIGZvciBl YWNoIG9mIHlvdSB3aG8gaGF2ZQpyZXNwb25kZWQgd2hlcmUgZGlkIFVYIGFuZCB2aXN1YWwgZGVz aWduIGZpdCBpbiB3aXRoIHlvdXIgc2NydW0gZXhwZXJpZW5jZT8KSm9uYXRoYW4gQmFrZXItQmF0 ZXMgdmlhCjxodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS9tYWlsL2Fuc3dlci8xMzExMTgyP2hs PWVuPiBhc2lzLm9yZwpNYXIgMjAgKDEwIGRheXMgYWdvKQp0byBTSUcKV2Ugc3RhcnRlZCBieSBo YXZpbmcgVVggYW5kIFZEIG91dHNpZGUgc2NydW0gaW4gYSAicmVzb3VyY2UgcG9vbCIKYmVjYXVz ZSB0aGUgZGV2cyB3ZW50IGludG8gc2NydW0gZmlyc3QuIFVYIHRoZW4gYWxsb2NhdGVkIHBlb3Bs ZSB0byBiZQpwYXJ0IG9mIGVhY2ggc2NydW0gdGVhbSBpbiAib3J0aG9kb3giIHNjcnVtIHN0eWxl LiBUaGV5IGFsbCB0aGVuCndvcmtlZCBpbiAyIG9yIDMtd2VlayBzcHJpbnRzLCBkZXBlbmRpbmcg b24gd2hpY2ggdGVhbSB0aGV5IHdlcmUgaW4uClNvbWV0aW1lcyB0aGUgZGV2cyBkaWQgc29tZSBV WCB3b3JrLCBidXQgbW9zdGx5IGRpZG4ndCBoYXZlIHRoZSB0aW1lCmFzIHRoZXkgd2VyZSB0b28g YnVzeSB3b3JraW5nIG9uIHN0b3JpZXMgdGhlIFVYIGd1eXMgaGFkIHdvcmtlZCB1cCBpbgpwcmV2 aW91cyBzcHJpbnRzLiBUaGUgcHJvZHVjdCBvd25lcnMgKHRvZ2V0aGVyIHdpdGggVVgpIGhhZCB0 aGUKY2FwYWNpdHkgdG8gZ2VuZXJhdGUgY29tcGxleCBzdG9yaWVzIHRoYXQgbWF4ZWQgb3V0IHRo ZWlyIGRldmVsb3BlcnMKdmVyeSBlYXNpbHkuIE91ciBVWCBndXlzIHdlcmUgYWxzbyBub3QgcXVh bGlmaWVkIHRvIHdyaXRlIHByb2R1Y3Rpb24KY29kZSBvZiBhbnkga2luZCwgc28gdGhlcmUgd2Fz IG5vIHF1ZXN0aW9uIG9mIHJvbGVzIGJsdXJyaW5nIHRoZXJlCmVpdGhlci4KCkJUVyB3ZSBhbHNv IGRpdGNoZWQgbW9zdCBvZiB0aGUgZXhwbG9yYXRvcnkgY3VzdG9tZXIgcmVzZWFyY2ggd2UgdXNl ZAp0byBkbywgYW5kIGp1c3Qgd2VudCBmb3IgZ3V0IGZlZWxpbmcgaW4gdGhlIGhvcGUgd2UgY291 bGQgInRhY2siIGxhdGVyCm9uIG9uY2UgdGhpbmdzIHNoaXBwZWQgYW5kIHdlIGNvdWxkIHB1dCB3 b3JraW5nIHN5c3RlbXMgaW4gZnJvbnQgb2YKdXNlcnMuIEknZCBzYXkgdGhhdCB3aGlsZSB0aGF0 IG1pZ2h0IGhhdmUgd29ya2VkIGluIHRoZW9yeSwgaW4KcHJhY3RpY2Ugd2UgZm91bmQgaXQgd2Fz IHNjdXBwZXJlZCBieSB0aGUgZXh0cmVtZSByZWx1Y3RhbmNlIG9mIHRoZQpkZXZzIHRvIHRocm93 IGF3YXkgcHJvZHVjdGlvbiBjb2RlIGVhcmx5IG9uIGluIHRoZSBuYW1lIG9mIGFnaWxpdHkuCkkn dmUgYWxzbyBzdWJzZXF1ZW50bHkgZW5jb3VudGVyZWQgdGhpcyBpbiBvdGhlciBwbGFjZXMgKEkg Y3VycmVudGx5CndvcmsgaW4gInByb2dyYW1tZXIgYW5hcmNoeSIgLSBHb29nbGUgd2lsbCBleHBs YWluKS4gV2hpbGUgZGV2cyBhcmUKZmluZSB3aXRoIHJlZmFjdG9yaW5nIGNvZGUgb24gdGhlaXIg b3duIHRlcm1zLCBpdCdzIG11Y2ggaGFyZGVyIHRvCmNvbnZpbmNlIHRoZW0gdG8gcmVmYWN0b3Ig dGhlIFVYIGJlY2F1c2UgaXQgbWlnaHQgd2VsbCBpbnZvbHZlZCB2ZXJ5CmxhcmdlIHRlY2huaWNh bCBjaGFuZ2VzLiBUaGlzIG1heSBiZSBhIGZ1bmRhbWVudGFsIGRpZmZlcmVuY2UgYmV0d2Vlbgp0 aGUgVVggYW5kIGRldmVsb3BtZW50IG1pbmRzZXRzIHRob3VnaC4gTm90IHN1cmUuCgpXaGlsZSBJ J20gb24gdGhlIHN1YmplY3Qgb2YgVVggYW5kIFZEIGluIHNjcnVtLCB0aGVyZSBpcyBhbHNvIGFu IGlzc3VlCmFyb3VuZCB0aGUgaW50ZXJwcmV0YXRpb24gb2YgIm1pbmltdW0gdmlhYmxlIHByb2R1 Y3QiIHdoZW4gc2l6aW5nCnN0b3JpZXMuIFZlcnkgb2Z0ZW4sIEkndmUgc2VlbiBNVlAgYmVpbmcg dXNlZCBhcyBhIGNvdmVyIGZvciBjcmFwcHkKVVguIFdoZW4gdGhpcyBnb2VzIGludG8gcHJvZHVj dGlvbiwgaXQgaXMgcXVpdGUgcmlnaHRseSBzZWVuIGFzIHN1Y2gKYnkgc3Rha2Vob2xkZXJzIGFu ZCBiZWNvbWVzIHNvbWV0aGluZyB0aGF0IGRlLW1vdGl2YXRlcywgYW5nZXJzIGFuZApmcnVzdHJh dGVzIG1hbnkgcGVvcGxlLiBQZXJoYXBzIHRoYXQgZnJ1c3RyYXRpb24gaXMgaW4gZmFjdCBuZWNl c3NhcnkKaW4gdGhlIG5hbWUgb2YgYWdpbGl0eS4gSWYgZG9uZSB3ZWxsIGl0IG1lYW5zIHlvdSB3 b24ndCB3YXN0ZSB0aW1lIG9uCnRoZSB3cm9uZyB0aGluZ3MuIEJ1dCB3ZSBqdXN0IGNvdWxkbid0 IHN0b21hY2ggdGhlIGVtb3Rpb25hbCByZWFsaXR5Cm9mIGl0LgoKSSBzaG91bGQgYWxzbyBwb2lu dCBvdXQgdGhhdCBvdXIgInBvc3Qtc2NydW0iIGV4cGVyaWVuY2Ugd2FzIHJhdGhlcgpiZXR0ZXIu IFRoZSBkZXZzIHdlbnQgaW50byBhIGZvcm0gb2Ygc2NydW1iYW4sIHdoaWxlIFVYIGFuZCBWRCB3 ZW50CmludG8gZnVsbCBrYW5iYW4sIGFsYmVpdCAidGhyb3dpbmcgaXQgb3ZlciB0aGUgd2FsbCIg dG8gdGhlIGRldnMgYXQKdGhlIGVuZC4gS2FuYmFuIHdhcyBtdWNoLCBtdWNoIGJldHRlciBmb3Ig dXMuIE5vIHNwcmludHMsIGVzdGltYXRpb24Kb3IgY2VyZW1vbmllcywgd2UganVzdCBjb25jZW50 cmF0ZWQgb24gIndhc3RlIi4gSXQgd2FzIHNpbXBsZSwgYW5kIHdlCmNvdWxkIGtlZXAgdG8gdGhl IHF1YWxpdHkgd2Ugd2FudGVkIHdpdGhvdXQgc2xvd2luZyBkb3duLiBCdXQgSSBndWVzcwp0aGF0 J3MgYSBzdG9yeSBmb3IgYW5vdGhlciB0aW1lLgpNYXR0aGV3IEhvZGdzb24gbWFnaWEzZUBnbWFp bC5jb20gdmlhCjxodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS9tYWlsL2Fuc3dlci8xMzExMTgy P2hsPWVuPiBhc2lzLm9yZwpNYXIgMjAgKDEwIGRheXMgYWdvKQp0byBTSUcsIGlhLTU1CkkgdXNl ZCB0byBiZSBhIFVYIHByYWN0aXRpb25lciwgdGhlbiBJIHN0YXJ0ZWQgdXNpbmcgYWdpbGUgbWV0 aG9kcyB0bwpkZWxpdmVyIHByb2R1Y3RzIChhYm91dCAxMCB5ZWFycyBhZ28pLiBOb3cgSSdtIGFu IEFnaWxlIENvYWNoIChmb3IgdGhlIGxhc3QKNiB5ZWFycy4gU2NydW0sIExlYW4gYW5kIEthbmJh biBhcmUgbXkgZmF2IG1ldGhvZHMpCgoqV2hlcmUgZG9lcyBVWCAvIFZpc3VhbCBEZXNpZ24gZml0 IGludG8gU2NydW0/KgoKSWYgeW91IGxvb2sgYXQgY29tcGFuaWVzIGxpa2UgZUJheSwgWWFob28s IEF0bGFzc2lhbiBvciBldmVuIFNwb2ZpdHksIHRoZQphZ2lsZSB0ZWFtIGRvZXMgYWxsIHRoZSBk ZXNpZ24gKGluY2x1ZGluZyB1c2VyLWV4cGVyaWVuY2UgYW5kIHZpc3VhbApkZXNpZ24pIGFzIHdl bGwgYXMgZGV2ZWxvcG1lbnQgYW5kIHRlc3RpbmcuIFRoZXkgcGxhbiB0b2dldGhlciwgdGhleSBj cmVhdGUKYW4gSW5jcmVtZW50IHRvZ2V0aGVyIHRoYXQgaXMgcHJvZHVjdGlvbiByZWFkeSBlYWNo IFNwcmludC4gVHlwaWNhbGx5LCBhcyBhCnJlc3VsdCwgdGhlcmUgaXMgc29tZSBzb3J0IG9mIFVY IHNraWxsZWQgcGVyc29uIGFzIGFuIGludGVncmF0ZWQgcGFydCBvZgp0aGUgdGVhbS4gVGhpcyBp cyBhbHNvIG15IHByZWZlcmVuY2UgZm9yIHRlYWNoaW5nIHRlYW1zIHRvIHdvcmsgaW4gYWdpbGUK d2F5cy4KCkkgZmluZCB0aGlzIGhpZ2hseSBjb2xsYWJvcmF0aXZlIGFwcHJvYWNoIGVtcG93ZXJz IHRoZSB3aG9sZSB0ZWFtIHRvIHRha2UKY29udHJvbCBvZiB0aGUgZGVzaWduIHRoZW1zZWx2ZXMu IFRoYXQncyBub3QgdG8gc2F5IHRoYXQgdGhleSBkb24ndCBkZXNpZ24Kd2l0aGluIGEgc2V0IG9m IHN0YW5kYXJkcyBvciBndWlkZWxpbmVzLCB0aG91Z2guIEUuZy4gd2l0aGluIFdDQUcgMi4wIEFB LApvciBhIHZpc3VhbCBicmFuZGluZyBzdHlsZSBndWlkZS4gVGhlc2Ugc3RhbmRhcmRzIGZvcm0g cGFydCBvZiB0aGVpcgpEZWZpbml0aW9uIG9mIERvbmUuIFdoZW4gc2NhbGluZyBhY3Jvc3MgbGFy Z2UgbnVtYmVycyBvZiB0ZWFtLCB0aGlzCidndWlkYW5jZScgYmVjb21lcyB2ZXJ5IGhhbmR5LiBJ IGZpbmQgdGhhdCB0aGUgZ3VpZGFuY2UgdGhhdCB0aGUgU0FGZSBndXlzCmFyZSBwcm9kdWNpbmcg aW4gdGhlIGFyZWEgb2YgVVggYW5kIHNjYWxlIHF1aXRlIHVzZWZ1bC4KaHR0cDovL3d3dy5zY2Fs ZWRhZ2lsZWZyYW1ld29yay5jb20vdXgvCgpXaXRoIG9uZSB0ZWFtIHRoYXQgSSdtIGNvYWNoaW5n IG5vdywgdGhlaXIgVVggcGVyc29uIGlzIHVzaW5nIEF4dXJlIHRvCmNvbW11bmljYXRlIGludGVy YWN0aW9uIGRlc2lnbnMgdGhhdCBhcmUgYmVpbmcgaW1wbGVtZW50ZWQgaW4gdGhlIHNhbWUKU3By aW50LiBIZSBqdXN0IGZpbmRzIHRoaXMgaXMgdGhlIGJlc3Qgd2F5IHRvIGNvbW11bmljYXRlIHRo ZSBpbnRlbnRpb24gb2YKdGhlIGRlc2lnbiB0byB0aGUgcmVzdCBvZiB0aGUgdGVhbS4gSWYgSSdt IGRvaW5nIFVYIHdvcmsgYXMgYSB0ZWFtIG1lbWJlciwKSSBkb24ndCB0ZW5kIHRvIHVzZSB0aGlz IGFwcHJvYWNoLCBJIHRlbmQgdG8gZG8gYSBsb3Qgb2Ygd2hpdGVib2FyZApzZXNzaW9ucyB3aXRo IHRoZSByZXN0IG9mIHRoZSB0ZWFtLgoKVGhpcyBpcyBhIHRlYW0gc2VwYXJhdGVkIGFjcm9zcyAz IGNpdGllcyBhbmQgdHdvIHRpbWV6b25lcy4gVGhlIHBoeXNpY2FsCnNlcGFyYXRpb24ganVzdCBt YWtlcyB0aGluZ3MgaGFyZGVyLiBXZSB1c2UgdGhlIFF1YW50dW0gRW50YW5nbGVtZW50CnBhdHRl cm4gdG8gY29tcGVuc2F0ZSAoCmh0dHBzOi8vc2l0ZXMuZ29vZ2xlLmNvbS9hL3NjcnVtcGxvcC5v cmcvcHVibGlzaGVkLXBhdHRlcm5zL2Rpc3RyaWJ1dGVkLXNjcnVtLXBhdHRlcm4tbGFuZ3VhZ2Uv cXVhbnR1bS1lbnRhbmdsZW1lbnQKKS4KCipEZWxpdmVyYWJsZXM/KgoKV2UgZG8gc3RvcnkgbWFw cGluZyB0byBoZWxwIHJhcGlkbHkgY3JlYXRlIHRoZSBQcm9kdWN0IEJhY2tsb2cgYW5kIHByb2R1 Y2UKdXNlciBzdG9yaWVzIHJhdGhlciB0aGFuIGRvIGV4dGVuc2l2ZSBTcGlrZXMgb3IgU3ByaW50 IDAgKApodHRwOi8vd3d3LnVpZS5jb20vYnJhaW5zcGFya3MvMjAxMS8xMC8wNy9qZWZmLXBhdHRv bi1zdG9yeS1tYXBwaW5nLWZvci11eC1wcmFjdGl0aW9uZXJzLXR5aW5nLWFnaWxlLWFuZC11eC10 b2dldGhlci8KKQoKV2UgZG9uJ3QgZG8gd2lyZWZyYW1lcyBhcyBkZWxpdmVyYWJsZXMsIGJ1dCB1 c2UgdGhlbSB0byBjb21tdW5pY2F0ZSBhbmQKY2xhcmlmeSBkZXNpZ24gd2l0aGluIHRoZSB0ZWFt LiBJdCBhbHNvIGhlbHBzIGtlZXAgdXMgZm9jdXNzZWQgaW4gdGVybXMgb2YKd2hhdCB3YXMgc3Vn Z2VzdGVkLgoKV2UgZG8gUHJhZ21hdGljIFBlcnNvbmFzICgKaHR0cDovL3d3dy5zdGlja3ltaW5k cy5jb20vYXJ0aWNsZS9wcmFnbWF0aWMtcGVyc29uYXMpIHRvIGhlbHAgb3VyIHVzZXIKc3Rvcmll cyBhbmQgdGhlIEluY3JlbWVudCBiZSB1c2VyLWZvY3Vzc2VkLgoKV2UgZG8gdXNlciBqb3VybmV5 cyB0byBoZWxwIGNvbW11bmljYXRlIHdoZXJlIEVwaWNzLCBGZWF0dXJlcyBhbmQgVXNlcgpTdG9y aWVzIGZpdCBpbnRvIHRoZSB1c2VyIGV4cGVyaWVuY2UuCgpXZSB0ZW5kIHRvIHVwZGF0ZSBvdXIg ZG9jdW1lbnRhdGlvbiBhcyB3ZSBnbyBhcyBwYXJ0IG9mIHRoZSBEZWZpbml0aW9uIG9mCkRvbmUu IFRoaXMgbWVhbnMgYWxsIHN5c3RlbXMsIGRhdGEgYXJjaGl0ZWN0dXJlIGFuZCBVWCBkb2NvIGdl dCB1cGRhdGVkIGluCmFuIGl0ZXJhdGl2ZSBmYXNoaW9uIGVhY2ggU3ByaW50IGFzIHBhcnQgb2Yg dGhlIEluY3JlbWVudCAocHJvZHVjdGlvbgpyZWFkeSwgd29ya2luZyBzb2Z0d2FyZSkuCgoqUm9s ZXMqCgpJbiB0ZXJtcyBvZiByb2xlcywgSSBmaW5kIHRoYXQgYSBTZW5pb3IgVVggcGVyc29uIGNh biBiZSBhbiBleGNlbGxlbnQgU2NydW0KUHJvZHVjdCBPd25lciBhcyBjYW4gYSBTZW5pb3IgQkEu IEEgcGVyc29uIHdpdGggZ29vZCBVWCBleHBlcmllbmNlIGNhbiBhbHNvCmJlIGEgZ3JlYXRlIFNj cnVtIE1hc3RlciBiZWNhdXNlIGl0IGNhbiBoZWxwIHRoZSB0ZWFtIGZvY3VzIG9uIHNsaWNpbmcg dXNlcgpzdG9yaWVzIHRvIGJlc3QgcmVwcmVzZW50IGEgbWluaW1hbCB2aWFibGUgKGxvdmFibGUp IHByb2R1Y3QgKE1WUCkgKG5vdAp0aGF0IE1WUCBpcyBub3Qgc3VwcG9zZWQgdG8gYmUganVzdCBt aW5pbWFsIGJ1dCBpbXBvcnRhbnRseSB2aWFibGUgLi4uIHRvCndob20gaXMgb2Z0ZW4gdGhlIGlz c3VlLiBJdCdzIG5vdCBtaW5pbWFsIGFuZCB2aWFibGUgZm9yIHRoZSB0ZWFtLCBpdCBpcwpmb3Ig dGhlIGVuZC11c2VyKS4gQXBhcnQgZnJvbSBTY3J1bSdzIDMgcm9sZXMgKFNjcnVtIE1hc3Rlciwg UHJvZHVjdCBPd25lcgphbmQgVGVhbSksIHdlIGRvbid0IGhhdmUgb3RoZXIgZm9ybWFsIHJvbGVz LiBXZSBkb24ndCBldmVuIGhhdmUgYSBkZXYgb3IKdGVzdCAibGVhZCIgcm9sZSBsZXQgYWxvbmUg YSAidXggZGVzaWduZXIiIHJvbGUuCgoqV2FyIFN0b3JpZXMqCgpJIHVzZWQgdG8gZW1wbG95IHRo ZSBwYXJhbGxlbCBwYXR0ZXJuIGZyb20gTHlubiBNaWxsZXIgKApodHRwOi8vd3d3LmFnaWxlcHJv ZHVjdGRlc2lnbi5jb20vYmxvZy9lbWVyZ2luZ19iZXN0X2FnaWxlX3V4X3ByYWN0aWNlLmh0bWwK KS4KVGhlIFVYIHBlb3BsZSBhbHdheXMgc2VlbSB0byBnZXQgYWhlYWQgb2YgdGhlaXIgdGVhbXMs IHdhc3RlIGFsd2F5cyByZXN1bHRzCihMZWFuIHdvdWxkIGNsYXNzaWZ5IGl0IGFzICJvdmVyIHBy b2R1Y3Rpb24iKSwgYW5kIHdoaWxlIHRoZXJlIHdhcwpjb29yZGluYXRpb24gdGhlcmUgd2FzIGxp dHRsZSBkZWVwIGRpc2N1c3Npb24gYW5kIGNvbGxhYm9yYXRpb24uIFRoZSBmb3JtZXIKaXMgaW1w b3J0YW50IHRvIG5vdGUgYmVjYXVzZSB5b3UgY291bGQgaW50ZXJwcmV0IGFzIGFuIGFudGktcGF0 dGVybi4gVGhlClNwcmludCAwIHJlcXVpcmVkIHRvIGdldCB3b3JrIGdvaW5nIGlzIGFsc28gY29u c2lkZXJlZCBhbiBhbnRpLXBhdHRlcm4gYnkKbW9zdCBzY3J1bSBjb2FjaGVzIGFuZCB0cmFpbmVy cy4KCipUb29scyoKCkkgc2VlbSB0byBlbmQgdXAgdXNpbmcgd2l0aCBKaXJhIEFnaWxlIG9yIExl YW5LaXQuIEkgZG9uJ3QgZmluZCB0aGVtIHVzZWZ1bApvciBhcyBhZGFwdGFibGUgYXMgYSBwaHlz aWNhbCBLYW5iYW4gYm9hcmQgdGhvdWdoLgpKb25hdGhhbiBCYWtlci1CYXRlcyB2aWEKPGh0dHBz Oi8vc3VwcG9ydC5nb29nbGUuY29tL21haWwvYW5zd2VyLzEzMTExODI/aGw9ZW4+IGFzaXMub3Jn Ck1hciAyMSAoOSBkYXlzIGFnbykKdG8gU0lHCiIuLi4gdGhleSBjcmVhdGUgYW4gSW5jcmVtZW50 IHRvZ2V0aGVyIHRoYXQgaXMgcHJvZHVjdGlvbiByZWFkeSBlYWNoClNwcmludC4iCgpJIGFzc3Vt ZSB0aGlzIG9ubHkgcmVhbGx5IHdvcmtzIHdoZW4gdGhlIHRlYW0gbWVtYmVycyBjYW4gYWxsIChv cgptb3N0bHkpIGRvIHRoZSBVWCBhbmQgVkQgd29yayBhcyB3ZWxsIHRoZWlyIG90aGVyIHJvbGVz LiBCeSAiVVggd29yayIsCkkgbWVhbiB0aGluZ3MgbGlrZSB1c2VyIHJlc2VhcmNoLCBwcm90b3R5 cGluZywgdmlzdWFsIGFuZCBpbnRlcmFjdGlvbgpkZXNpZ24sIGV0Yy4gVGhpcyB3b3VsZCBtZWFu IHRoYXQgZHVyaW5nIHN1Y2ggc3ByaW50cywgZGV2ZWxvcGVycwp3b3VsZG4ndCBiZSBjb2Rpbmcg KG90aGVyIHRoYW4gcGVyaGFwcyBsb29raW5nIGF0IHRlY2huaWNhbCBkZWJ0IG9yCmJ1ZyBmaXhl cyBmcm9tIHRoZSBsYXN0IHNwcmludCkuIFRoZSBjb21wYW5pZXMgeW91IG1lbnRpb24gYWxzbyBo YXZlCm1hdHVyZSBwcm9kdWN0cyAob3IgYXQgbGVhc3QgYnJhbmRzKSBhbHJlYWR5LCB3aGljaCBt YWtlcyBpdCBsZXNzCmxpa2VseSB0aGF0IHRoZSB2aXN1YWwgZGVzaWduLCBpZiBub3QgdGhlIGlu dGVyYWN0aW9uIGRlc2lnbiwgd291bGQgZ28Kb2ZmIHRoZSByYWlscy4gSWYgeW91J3JlIGEgc3Rh cnR1cCwgdGhpbmdzIHdvdWxkIGJlIHJhdGhlciBkaWZmZXJlbnQgSQp3b3VsZCBzdXBwb3NlLgoK T25lIG9mIHRoZSBtYWpvciBwcm9ibGVtcyBJJ3ZlIGZvdW5kIHdpdGggc3ByaW50LWJhc2VkIGFj dGl2aXR5IGlzCndoZW4gdGVhbSBtZW1iZXJzIGNhbid0IChvciB3b24ndCkgZG8gVVggd29yayBi ZWNhdXNlIHRoZXkncmUgd29ya2luZwp0byBkZWxpdmVyIHRoZWlyIHBhcnQgb24gc3RvcmllcyBm cm9tIGEgcHJldmlvdXMgc3ByaW50LiBJIHRha2UgaXQKdGhhdCB5b3UgcHJldmVudCB0aGlzIGJ5 IG1ha2luZyBzdXJlIGFsbCBzdG9yaWVzIGFyZSBkb25lIGluIGEgc2luZ2xlCnNwcmludCwgaXMg dGhhdCByaWdodD8gRG9lcyB0aGF0IG5vdCBsZWFkIHRvIGVuZGxlc3MgZGlzY3Vzc2lvbnMgYWJv dXQKaG93IHRvIGN1dCBzdG9yaWVzIGRvd24gdG8gZml0IHRob3VnaD8KCkludGVyZXN0aW5nIGFs c28gdGhhdCB5b3Ugc2F5IHRoYXQgYSBVWCBwZXJzb24gbWlnaHQgYmUgdGhlIHByb2R1Y3QKb3du ZXIgb3Igc2NydW0gbWFzdGVyICh0aGV5J3JlIHZlcnkgZGlmZmVyZW50IHJvbGVzIGluIG9ydGhv ZG94IHNjcnVtLApvZiBjb3Vyc2UpLiBBc3N1bWluZyBVWCBkZXNpZ25lcnMgaGF2ZSB0aGUgbmVj ZXNzYXJ5IHNlbmlvcml0eSBpbiB0aGUKb3JnYW5pc2F0aW9uIHRvIHRha2UgdGhlIHBsYWNlIG9m IHByb2R1Y3QgbWFuYWdlciwgSSB3b3VsZCB0aGluawpoYXZpbmcgVVggaW4gdGhhdCBwb3NpdGlv biB3b3VsZCBsZWFkIHRvIGxhcmdlICJzcHJpbnQgemVyb3MiLCBubz8KVGhvbWFzIERvbmVob3dl ciA8dGRvbmVob3dlckBnbWFpbC5jb20+Ck1hciAyMSAoOSBkYXlzIGFnbykKdG8gU0lHCkpvbmF0 aGFuLAoKWW91IG1lbnRpb24gYmVsb3cgInN1Y2ggc3ByaW50cyBkZXZlbG9wZXJzIHdvdWxkbid0 IGJlIGNvZGluZy4iIERvZXNuJ3QKdGhhdCBnbyBhZ2FpbnN0IHRoZSBwcmluY2lwZSBvZiBlYWNo IHNwcmludCB5aWVsZHMgcHJvZHVjdGlvbiByZWFkeQpzb2Z0d2FyZT8gIEFyZSB5b3Ugc2F5aW5n IHRoZXJlIGNvdWxkIGJlIHNwcmludHMgdGhhdCBhcmUgZGV2b3RlZCB0byBqdXN0CnByb3RvdHlw aW5nIGZvciBleGFtcGxlPwpTa290IE5lbHNvbiBza290QHBlbmd1aW5zdG9ybS5jb20gdmlhCjxo dHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS9tYWlsL2Fuc3dlci8xMzExMTgyP2hsPWVuPiBhc2lz Lm9yZwpNYXIgMjEgKDkgZGF5cyBhZ28pCnRvIFNJRwpZZXMuCgpUaGVyZSBub3Rpb24gdGhhdCAi ZXZlcnkgc3ByaW50IHJlc3VsdHMgaW4gcHJvZHVjdGlvbiByZWFkeSBjb2RlIiBzZWVtcwphbnRp dGhldGljYWwgdG8gYWdpbGUgaXRzZWxmLgotLQpTa290IE5lbHNvbgpodHRwOi8vd3d3LnBlbmd1 aW5zdG9ybS5jb20vCnR3aXR0ZXIuIHBlbmd1aW5zdG9ybQpKb25hdGhhbiBCYWtlci1CYXRlcyB2 aWEKPGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL21haWwvYW5zd2VyLzEzMTExODI/aGw9ZW4+ IGFzaXMub3JnCk1hciAyMSAoOSBkYXlzIGFnbykKdG8gU0lHCkBTa290IC0gSSB3b3VsZG4ndCBn byBhcyBmYXIgdG8gc2F5IGl0IHdhcyBhbnRpdGhldGljYWwuIFRoZSBBZ2lsZQpQcmluY2lwbGVz IHNheSB0aGUgZGVsaXZlcnkgb2Ygd29ya2luZyBzb2Z0d2FyZSBzaG91bGQgYmUgImZyZXF1ZW50 IgphbmQgdGhhdCBpdCBzaG91bGQgYmUgdGhlICJwcmltYXJ5IG1lYXN1cmUgb2YgcHJvZ3Jlc3Mi LiBCdXQgSSBrbm93CndoYXQgeW91IG1lYW4uIEFnaWxlIHNob3VsZCBiZSBmcmVlIHRvIGRvIHdo YXQncyBhcHByb3ByaWF0ZSwgcmVhbGx5LgoKQFRob21hczogQXMgeW91IGNhbiBwcm9iYWJseSB0 ZWxsLCB0aGVyZSBhcmUgc29tZSBkaWZmaWN1bHRpZXMgd2l0aApzY3J1bSBvcnRob2RveHkgd2hl biBpdCBjb21lcyB0byBVWCA6LSkgSSB0aGluayB0aGlzIGlzIGJlY2F1c2UgYWdpbGUKbWV0aG9k cyAobm90IGp1c3Qgc2NydW0gYnV0IG1vc3Qgb3RoZXJzIGFzIHdlbGwpIGF0dGVtcHQgdG8gc29s dmUKcHJvYmxlbXMgdGhhdCBVWCBkZXNpZ25lcnMgZG9uJ3QgcmVhbGx5IGhhdmUgLSBvciBhdCBs YXN0IGRvbid0IGhhdmUKdG8gbmVhcmx5IHRoZSBzYW1lIGV4dGVudCBhcyBkZXZlbG9wZXJzIGhh dmUuIFVYIGlzbid0IHJlZHVjaWJsZSBpbgp0aGUgd2F5IHNvZnR3YXJlIGlzLCBhbmQgY2VydGFp bmx5IHRoZSAiZm91bmRpbmcgZmF0aGVycyIgb2Ygc2NydW0Kd2VyZW4ndCB0aGlua2luZyBhYm91 dCBVWCB3aGVuIHRoZXkgZm9ybXVsYXRlZCB0aGVpciBtYW5pZmVzdG8gLSB0aGUKdGVybSAiY3Vz dG9tZXIiIGlzIHRoZSAxOTgwJ3MgbWVhbmluZzogc29tZWJvZHkgd2hvIHBheXMgZm9yIHRoZQpz b2Z0d2FyZSB0byBiZSBidWlsdC4gSGVyZSdzIHRoZSBmYW1vdXMgInByaW5jaXBsZXMiIHBhZ2U6 Cmh0dHA6Ly9hZ2lsZW1hbmlmZXN0by5vcmcvcHJpbmNpcGxlcy5odG1sICh0aGUgYmFja2dyb3Vu ZCBwaG90bwp0ZXh0dXJlIC0gUUVEKS4KCkkgdGhpbmsgdGhlcmUncyBhIHdvcmxkIG9mIGRpZmZl cmVuY2UgYmV0d2VlbiB3cml0aW5nIGNvZGUgdGhhdCBydW5zCm9uIGNvbXB1dGVycywgYW5kIGNy ZWF0aW5nIHRoaW5ncyB0aGF0IHJ1biBpbiBwZW9wbGUncyBoZWFkcy4gQmVjYXVzZQpvZiB0aGlz LCBJIHRoaW5rIGl0J3MgdW5mYWlyIG9uIGJvdGggZGVzaWduZXJzIGFuZCBkZXZlbG9wZXJzIHRv IGFkb3B0CnRoZSBzYW1lIG1ldGhvZHMuIFdlcmUgSSB0byBqb2luIGEgZGV2ZWxvcG1lbnQgdGVh bSB3aG8gaGFkIGFkb3B0ZWQKc2NydW0sIEkgd291bGQgbm90IGRpc2NvdXJhZ2UgdGhlbSwgYnV0 IGVxdWFsbHkgSSB3b3VsZCBub3Qgd29yawpleGNsdXNpdmVseSBvbiB0aGVpciB0ZXJtcy4gSXQg d291bGRuJ3QgYmUgd29ydGggdXMgYWxsIHBheWluZyB0aGUgdGhlCnByaWNlIGZvciB0aGF0IGxh dGVyIGlmIEkgZGlkLgpTa290IE5lbHNvbiBza290QHBlbmd1aW5zdG9ybS5jb20gdmlhCjxodHRw czovL3N1cHBvcnQuZ29vZ2xlLmNvbS9tYWlsL2Fuc3dlci8xMzExMTgyP2hsPWVuPiBhc2lzLm9y ZwpNYXIgMjEgKDkgZGF5cyBhZ28pCnRvIFNJRwpSaWdodC4gIldvcmtpbmciIGFuZCAiUHJvZHVj dGlvbiBSZWFkeSIgYXJlIHRvdGFsbHkgZGlmZmVyZW50IHRoaW5ncy4KCkkgYWx3YXlzIGhhdmUg dGhlIGZvcm1lciwgYnV0IGl0IHRha2VzIG1hbnkgc3ByaW50cyB0byBnZXQgdG8gdGhlIGxhdHRl ci4KbWFnaWEzZUBnbWFpbC5jb20gbWFnaWEzZUBnbWFpbC5jb20gdmlhCjxodHRwczovL3N1cHBv cnQuZ29vZ2xlLmNvbS9tYWlsL2Fuc3dlci8xMzExMTgyP2hsPWVuPiBhc2lzLm9yZwpNYXIgMjEg KDkgZGF5cyBhZ28pCnRvIFNJRwpTY3J1bSdzIFNwcmludHMgZG9uJ3QgaGF2ZSB0byBmb2N1cyBv biBzb2Z0d2FyZS4gSXQgY2FuIGJlIHVzZWQgdG8gZGVsaXZlcgphbnl0aGluZyB0aGF0IHRoZSBQ cm9kdWN0IE93bmVyIGRlZGljZXMgaXMgb2YgdmFsdWUuIEEgd2hvbGUgU3ByaW50J3MKSW5jcmVt ZW50IG1heSBqdXN0IGJlIGRlZGljYXRlZCB0byBsZWFybmluZyB3aXRoICdrbm93bGVkZ2UgcHJv ZHVjdHMnLgoKVGhlIGlkZWEgYmVoaW5kICdwcm9kdWN0aW9uIHJlYWR5JyBpcyB0aGF0IHdoYXQg ZXZlciBpcyBjcmVhdGVkIGlzIGZ1bGx5CmNvbXBsZXRlIHdpdGhpbiB0aGUgY29uZmluZXMgb2Yg dGhlIFNwcmludCB0byB3aGF0IGV2ZXIgc3RhbmRhcmQgdGhlCnF1YWxpdHkvc2F0aXNmYWN0aW9u IGNyaXRlcmlhIChEZWZpbml0aW9uIG9mIERvbmUpIHNwZWNpZmllcy4KClRoaW5ncyB0aGF0IGFy ZSBub3Qgc29mdHdhcmUgaGF2ZSBiZWVuIGRlbGl2ZXJlZCB1c2luZyBTY3J1bQoKKiBUaGUgU0FB QiBHcmlwZW4gZmlnaHRlciBqZXQgd2FzIG1hZGUgd2l0aCBTY3J1bS4KCiogVGhlIHdpa2lzcGVl ZCBjYXIKCkkndmUgZGVsaXZlcmVkIFVYIGNvbnN1bHRpbmcgcmVjb21tZW5kYXRpb25zIHBhcGVy cyB1c2luZyBTY3J1bSB3aG9zZSB0cmFtCndhcyBvbmx5IHV4IHBlb3BsZS4gRWFjaCBJbmNyZW1l bnQgY29uc2lzdGVkIG9mICdwcm9kdWN0aW9uIHJlYWR5JwpwZXJzb25hcywgdHJlZSBzdHJ1Y3R1 cmVzIGFuZCBwcm90b3R5cGVzIGJlY2F1c2UgdGhhdCB3YXMgdGhlIG91dGNvbWUKc291Z2h0IGJ5 IHRoZSBQcm9kdWN0IE93bmVyIGJ5IHRoZSBjbGllbnQuIFRoZXNlIHdvdWxkIGJlIHVzZWQgbXVj aCBsYXRlcgp0byBoZWxwIGd1aWRlIGEgd2ViIHByb2plY3QuCgpNCgoKU2VudCBmcm9tIG15IEhU QwpKb25hdGhhbiBCYWtlci1CYXRlcyB2aWEKPGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL21h aWwvYW5zd2VyLzEzMTExODI/aGw9ZW4+IGFzaXMub3JnCk1hciAyMSAoOSBkYXlzIGFnbykKdG8g U0lHCkFzIGEgb25lLXRpbWUgQWdpbGUgQWxsaWFuY2UgQ2VydGlmaWVkIFNjcnVtIE1hc3Rlciwg SSB3b3VsZCBzYXkgdGhhdAphcyBsb25nIGFzIGJvdGggdGhlIHBpZ3MgYW5kIHRoZSBjaGlja2Vu cyBhbGwgYWdyZWUgd2l0aCB0aGUKZGVmaW5pdGlvbiBvZiAiZG9uZSIsIHRoZW4gdGhhdCdzIGZp bmUuIEhvd2V2ZXIsIHRoZSBkZWZhdWx0IGluIHNjcnVtCmlzIGFsd2F5cyB0byBwcm9kdWNlIHBy b2R1Y3Rpb24gcmVhZHkgKmNvZGUqIChub3Qgd2lyZWZyYW1lcyBvcgpwZXJzb25hcykgYXQgdGhl IGVuZCBvZiBldmVyeSBzcHJpbnQsIGFuZCBmcm9tIHRoZSB2ZXJ5IGZpcnN0IHNwcmludC4KU2Vl IGFudGlwYXR0ZXJuIDE2IChmcm9tIHRoZSBzdGFuZGFyZCB0ZXh0cyBvbiB0aGUgc3ViamVjdCk6 CgpodHRwOi8vd3d3LmFnaWxlYWR2aWNlLmNvbS8yMDExLzEyLzA1L3JlZmVyZW5jZWluZm9ybWF0 aW9uLzI0LWNvbW1vbi1zY3J1bS1waXRmYWxscy1zdW1tYXJpemVkLwoKLi4uIGFuZCBvZiBjb3Vy c2UgdGhlIGVuZGxlc3MgZGViYXRlcyB0aGF0IHByb2R1Y2VzIQoKaHR0cHM6Ly93d3cuc2NydW0u b3JnL0ZvcnVtcy9hZnQvMTI3MwoKQnV0IHdlIGRpZ3Jlc3MgaGVyZS4KCkBUb206IGFyZSB3ZSBo ZWxwaW5nIGF0IGFsbCwgb3Igc2hvdWxkIHdlIGp1c3QgY2FuIGl0PwptYWdpYTNlQGdtYWlsLmNv bSBtYWdpYTNlQGdtYWlsLmNvbSB2aWEKPGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL21haWwv YW5zd2VyLzEzMTExODI/aGw9ZW4+IGFzaXMub3JnCk1hciAyMSAoOSBkYXlzIGFnbykKdG8gU0lH CkdldHRpbmcgKmFsbCogdGhlIHdvcmsgbmVlZGVkIHRvIGRlbGl2ZXIgYSB1c2VyIHN0b3J5LCBm cm9tIGFuYWx5c2lzIGFuZApkZXNpZ24gdGhydSB0byBkZXZlbG9wbWVudCBhbmQgdGVzdGluZyBy ZXF1aXJlcyAnc21hbGwnIHNpemVkIHVzZXIgc3RvcmllcwpzbyB0aGF0IHRoZSB3b3JrIGZpdHMg aW50byBhIHNpbmdsZSBTcHJpbnQuCgpUaGUgc2xpY2luZyBtZXRob2QgZGVwZW5kcyBvbiBhIGRp c2N1c3Npb24gYmV0d2VlbiB0aGUgUHJvZHVjdCBPd25lciBhbmQKdGhlIFRlYW0gd2l0aCB0aGUg cmVzdWx0YW50IHNsaWNlcyBqdXN0IGJlaW5nIHNtYWxsZXIgdXNlciBzdG9yaWVzLiBUaGUKb3Jk ZXIgaXMgbmVnb3RpYXRlZCBiZXR3ZWVuIHRoZSBUZWFtIGFuZCB0aGUgUE8uIEluIGEgbm9ybWFs IHNvZnR3YXJlCnByb2plY3QgZWFjaCB1c2VyIHN0b3J5IHdpbGwgYmUgYSBzbWFsbCBmZWF0dXJl LWxpa2UgZWxlbWVudC4KClNvbWUgb2YgdGhvc2Ugc2xpY2VzIHdpbGwgbGlrZWx5IHJlcXVpcmUg bW9yZSBVWCBlZmZvcnQsIHNvbWUgbGVzcywgc29tZQpub25lIGF0IGFsbC4gQnV0IGVhY2ggc2xp Y2Ugd2lsbCByZXByZXNlbnQgc29tZXRoaW5nIHRoYXQgaXMgb2YgdmFsdWUgdG8KdGhlIFByb2R1 Y3QgT3duZXIuIEEgd2lyZWZyYW1lIG9yIHByb3RvdHlwZSBhcyB0aGUgZW5kIHJlc3VsdCBvZiBh IHVzZXIKc3RvcnkgaWEgb25seSBsaWtlbHkgdG8gYmUgJ29mIHZhbHVlJyBpZiBpdCBoZWxwcyBj bGFyaWZ5IHNvbWUgaGlnaCByaXNrCnVua25vd24gdGhhdCB3aWxsIGJlIGxvb2tlZCBhdCBpbiBh IGxhdGVyIFNwcmludC4gQXJjaGl0ZWN0dXJlIGlzIHNvbWUKdGltZXMgdGFja2xlZCB0aGlzIHdh eS4gSXRzIG9mdGVuIHJlZmVycmVkIHRvIGFzIGEgU3Bpa2UuCgpUaGUgVGVhbSBjb2xsZWN0aXZl bHkgZGVjaWRlIGhvdyB0aGV5IHdpbGwgdGFja2xlIHRoZWlyIFNwcmludCBHb2FsIGFuZCB0aGUK SW5jcmVtZW50IHRvZ2V0aGVyLiBUaGV5IGFsc28gZGVjaWRlIGhvdyBtdWNoIHdvcmsgdGhleSB0 YWtlIG9uLiBCdXQgdGhlClByb2R1Y3QgT3duZXIgc3RpbGwgaGFzIHRoZSBmaW5hbCBzYXkgaW4g dGVybXMgb2Ygd2hldGhlciB0aGVpciBhcHByb2FjaApyZXByZXNlbnRzIHZhbHVlLiBJZiBldmVy eW9uZSBpcyBnb2luZyB0byBzaXQgYXJvdW5kIGFuZCBkbyBub3RoaW5nIHVudGlsCnRoZSBVWCB3 b3JrIGlzIGNvbXBsZXRlIHRoYXQncyBvYnZpb3VzbHkgbm90IG9mIHZhbHVlCgpUaGUgU2NydW0g TWFzdGVyJ3Mgcm9sZSBpbiB0aGlzIGlzIHRvIGhlbHAgdGhlIHRlYW0gd29yayBvdXQgYSBwbGFu IG9mCmF0dGFjayBhbmQgZW5zdXJlIHRoYXQgdGhlIHRlYW0gZG9lc24ndCAid2F0ZXJmYWxsIHRo ZWlyIHNwcmludHMiCmh0dHA6Ly93d3cuc2NhbGVkYWdpbGVmcmFtZXdvcmsuY29tL3NwcmludC1l eGVjdXRpb24vCgpXaGVuIFVYIHdvcmsgc3RhcnRzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBTcHJp bnQgLS0gcHJvdG90eXBpbmcsCmludGVyYWN0aW9uIGRlc2lnbiwgd2lyZWZyYW1lcyBldGMgLSBp cyBnb2luZyBvbiwgSSBvZnRlbiBmaW5kIG90aGVyIHRlYW0KbWVtYmVycyBhcmUgZG9pbmcgdGhp bmdzIGxpa2U6CgoqIFdyaXRpbmcgdGVzdCBzY3JpcHRzCiogRW5nYWdpbmcgYnVzaW5lc3Mgc3Rh a2Vob2xkZXJzLCBjbGllbnRzLCBlbmQgdXNlcnMgZmFjZS10by1mYWNlIHRvCmNsYXJpZnkgZnVu Y3Rpb25hbCByZXF1aXJlbWVudHMKKiBEb2luZyBjcm9zcyBhIGZ1bmN0aW9uYWwgcGFpcmluZyB3 aXRoIHRoZSBVWCBndXkgdG8gdW5kZXJzdGFuZCB0aGUKaW50ZXJhY3Rpb24gZGVzaWduIGFuZCBn aXZlIGZlZWRiYWNrIG9uIGFyZWFzIHdoZXJlIHRoZSB0ZWNobm9sb2d5IGlzCmxpbWl0ZWQKKiBB bmFseXppbmcgcmVxdWlyZW1lbnRzIGZvciB0aGF0IHVzZXIgc3RvcnkKKiBEb2luZyB0ZWNobmlj YWwgZGVzaWduIGZvciB0aGF0IHVzZXIgc3RvcnkKKiBSZXNlYXJjaGluZyB3aGF0IHRoZSBjb2Rp bmcgY29tbXVuaXR5IHNheXMgYWJvdXQgdGhlIGZlYXR1cmVzIGluIHRoZSB1c2VyCnN0b3J5Ciog RG9pbmcgdGhlIGJhY2sgZW5kIGNvbXBvbmVudHMgb2YgdGhhdCB1c2VyIHN0b3J5CgpPcgoKKiBE ZWxpdmVyaW5nIG90aGVyIHVzZXIgc3RvcmllcyB0aGF0IGhhdmUgbm8gcmVhbCBVWCBjb21wb25l bnRzCgpUaGUgU2NydW0gTWFzdGVyIG1ha2VzLnN1cmUgdGhlcmUgaXMgYSBwbGFuIG9mIGF0dGFj ayBlYWNoIGRheSBhdCB0aGUgRGFpbHkKU2NydW0gYW5kIGVuc3VyZXMgZXZlcnlvbmUgaXMgY29s bGFib3JhdGluZyB0b3dhcmQgdGhlIHRlYW0ncyBnb2FsLiBObyBvbmUKaXMgaWRsZS4KCi0tLS0t IFJlcGx5IG1lc3NhZ2UgLS0tLS0KRnJvbTogIlRob21hcyBEb25laG93ZXIiIDx0ZG9uZWhvd2Vy QGdtYWlsLmNvbT4KVG86ICJTSUcgSW5mb3JtYXRpb24gQXJjaGl0ZWN0dXJlIiA8c2lnaWEtbEBh c2lzLm9yZz4KU3ViamVjdDogW1NpZ2lhLWxdIEFnaWxlLCBTY3J1bSBhbmQgVVg/Cj4gSm9uYXRo YW4KPgo+Cj4KPgptYWdpYTNlQGdtYWlsLmNvbSBtYWdpYTNlQGdtYWlsLmNvbSB2aWEKPGh0dHBz Oi8vc3VwcG9ydC5nb29nbGUuY29tL21haWwvYW5zd2VyLzEzMTExODI/aGw9ZW4+IGFzaXMub3Jn Ck1hciAyMSAoOSBkYXlzIGFnbykKdG8gU0lHCj4gIi4uLiB0aGV5IGNyZWF0ZSBhbiBJbmNyZW1l bnQgdG9nZXRoZXIgdGhhdCBpcyBwcm9kdWN0aW9uIHJlYWR5IGVhY2gKU3ByaW50LiIKPgo+IEkg YXNzdW1lIHRoaXMgb25seSByZWFsbHkgd29ya3Mgd2hlbiB0aGUgdGVhbSBtZW1iZXJzIGNhbiBh bGwgKG9yCj4gbW9zdGx5KSBkbyB0aGUgVVggYW5kIFZEIHdvcmsgYXMgd2VsbCB0aGVpciBvdGhl ciByb2xlcy4KCkkgdHlwaWNhbGx5IGhhdmUgb25lIFVYIGV4cGVydCBpbiBteSB0ZWFtLiBBIGZl dyBmcm9udCBlbmQgYW5kIGEgZmV3IGJhY2sKZW5kIGRldnMuIEEgdGVzdGVyIGFuZCBhIEJBLgoK SW4gU2NydW0sIEkgd2FudCB0ZWFtIG1lbWJlcnMgd2hvIGFyZSB3aWxsaW5nIHRvIGhlbHAgZWFj aCBvdGhlciBhbmQgZG8Kd2hhdCBldmVyIGlzIG5lZWRlZCB0byBhY2hpZXZlIHRoZSBnb2FsLiBU aGlzIGlzIHdoeSBTcHJpbnQgUGxhbm5pbmcgZm9yIGEKMiB3ZWVrIFNwcmludCBpcyB0eXBpY2Fs bHkgNCBob3VycyBpbiBsZW5ndGggLS0gMiBob3VycyB0byBoZWFyICp3aGF0KiBpcwpyZXF1aXJl ZCBhbmQgMiBob3VycyB0byBmaWd1cmUgb3V0ICpob3cqIHRvIHdvcmsgYmVzdCB0byBkZWxpdmVy IGl0LgoKSWYgdGhlIHByb2plY3QgaXMgYWJvdXQgYnVpbGRpbmcgYSB3ZWJzaXRlLCB0aGVuIHRo ZSBmb2N1cyBvZiBzcHJpbnRzIHdpbGwKbmVhcmx5IGFsd2F5cyBiZSBmZWF0dXJlcyB0aGF0IGFy ZSBwcm9kdWN0aW9uIHJlYWR5LiBUaGlzIG1lYW5zIG15IFVYIGd1eXMKYXJlIG9mdGVuIHRoaW5r ZXJzIHdobyBkbyBhIGxvdCBvZiB0aGVpciB3b3JrIGluIHNob3J0IGJ1cnN0cyB3aXRoCndoaXRl Ym9hcmRzIGFuZCB0aGVuIGhhdmUgY29udmVyc2F0aW9ucyB3aXRoIG90aGVyIHRlYW0gbWVtYmVy cyB0byBkaXNjdXNzCmhvdyB0byBpbXBsZW1lbnQgaXQuCgpVc2VyIHJlc2VhcmNoIGZvciB0aGUg bmV4dCBmZXcgdXBjb21pbmcgU3ByaW50cyBjb25zdW1lIGFib3V0IDEwJSBvZiB0aGUKY3VycmVu dCBzcHJpbnQuIFVzZXIgcmVzZWFyY2ggdGhlbiBidWlsZHMgb3ZlciBTcHJpbnRzIHRvIGhlbHAg aW5mb3JtIHRoZQpvdmVyYWxsIHByb2R1Y3QgZGVzaWduLiBTeXN0ZW0gYXJjaGl0ZWN0cyBjYWxs IHRoaXMgZW1lcmdlbnQgZGVzaWduIGFuZApoYXZlIGJlZW4gd29ya2luZyB0aGlzIHdheSBmb3Ig YSB3aGlsZS4KClRoYXQgc2FpZCwgYWxsIHRlYW0gbWVtYmVycyBpbiBTY3J1bSBzcGVuZCB1cCAx MCUgb2YgdGhlIFNwcmludCBsb29raW5nIGF0CnVwY29taW5nIFNwcmludHMgdG8gZ2V0IGlkZWFz IGFib3V0IGhvdyB0aGV5IG1pZ2h0IHRhY2tsZSBmdXR1cmUgd29yayBhbmQKY2xhcmlmeSByZXF1 aXJlbWVudHMuIEl0cyBjYWxsZWQgQmFja2xvZyBSZWZpbmVtZW50LgpNYXR0aGV3IEhvZGdzb24g bWFnaWEzZUBnbWFpbC5jb20gdmlhCjxodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS9tYWlsL2Fu c3dlci8xMzExMTgyP2hsPWVuPiBhc2lzLm9yZwpNYXIgMjEgKDkgZGF5cyBhZ28pCnRvIFNJRwpS ZWZlcmVuY2VzIHRvICJwaWdzIGFuZCBjaGlja2VucyIgaGFzIGxvbmcgYmVlbiBzaW5jZSByZW1v dmVkIGZyb20gdGhlClNjcnVtIEd1aWRlIDopCgpCdXQgaXQgaXMgbW9yZSB0aGUgZG9tYWluIG9m IHRoZSBQcm9kdWN0IE93bmVyLCBub3QgdGhlIFRlYW0uIFRoYXQncyBub3QgdG8Kc2F5LCB0aG91 Z2gsIHRoYXQgYSBkaXNjdXNzaW9uIGNhbid0IGJlIGhhZCBvbiB0aGUgY29uc2VxdWVuY2VzIG9m IHRvbyBtYW55CmNyaXRlcmlhIGluIGEgRE9EIGFuZCB0aGF0IHBlcmhhcHMgYSB0ZWFtIHNob3Vs ZCBiZSBhaW1pbmcgZm9yIFdDQUcgMi4wIEEKb24gYSBmaXJzdCBwYXNzIHRvIGVuc3VyZSB0aGF0 IGEgc3BlY2lmaWMgdXNlciBzdG9yeSBmaXRzIGludG8gYSBTcHJpbnQuCgoKCk9uIDIyIE1hcmNo IDIwMTUgYXQgMDk6MzYsIEpvbmF0aGFuIEJha2VyLUJhdGVzIDxqb25hdGhhbkBiYWtlcmJhdGVz LmNvbT4Kd3JvdGU6Ck1hdHRoZXcgSG9kZ3NvbiBtYWdpYTNlQGdtYWlsLmNvbSB2aWEKPGh0dHBz Oi8vc3VwcG9ydC5nb29nbGUuY29tL21haWwvYW5zd2VyLzEzMTExODI/aGw9ZW4+IGFzaXMub3Jn Ck1hciAyMSAoOSBkYXlzIGFnbykKdG8gU0lHClRoZXJlIGFyZSBsb3RzIG9mIHJlYXNvbnMgd2h5 IGFuIGFnaWxlIGFkb3B0aW9uIGZhaWxzLgoKaHR0cDovL3d3dy52ZXJzaW9ub25lLmNvbS9wZGYv MjAxMy1zdGF0ZS1vZi1hZ2lsZS1zdXJ2ZXkucGRmCgpJdCdzIG5vdCBiZWNhdXNlIFNjcnVtIGRv ZXNuJ3Qgd29yaywgaXQgZGVmaW5pdGVseSBkb2VzLiAyMiUgb2YgZmFpbHVyZSBpcwpib3JuIG91 dCBvZiBhIGxhY2sgb2YgdW5kZXJzdGFuZGluZyBhYm91dCBhZ2lsZSBhbmQgd2h5IGl0IHdvcmtz IHRoZSB3YXkgaXQKZG9lcy4gRXh0ZXJuYWwgY3VsdHVyYWwgYW5kIHBvbGl0aWNhbCByZWFzb25z IGNvbXJwcmlzZSBhYm91dCAzMCUgb2YKcmVhc29ucyB3aHkgYWdpbGUgcHJvamVjdHMgZmFpbC4K CkdldHRpbmcgYW4gZXhwZXJpZW5jZWQgY29hY2ggd2hvIGtub3dzIGhvdyBiZXN0IHRvIGhlbHAg YW4gb3JnYW5pc2F0aW9uCndpdGggdGhpcyBjaGFuZ2UgaXMga2V5IHRvIHN1Y2Nlc3MgSU1ITy4K CgoKCgoKCk9uIDIxIE1hcmNoIDIwMTUgYXQgMDg6MDYsIEpvbmF0aGFuIEJha2VyLUJhdGVzIDxq b25hdGhhbkBiYWtlcmJhdGVzLmNvbT4Kd3JvdGU6Ck1hdHRoZXcgSG9kZ3NvbiBtYWdpYTNlQGdt YWlsLmNvbSB2aWEKPGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL21haWwvYW5zd2VyLzEzMTEx ODI/aGw9ZW4+IGFzaXMub3JnCk1hciAyMSAoOSBkYXlzIGFnbykKdG8gU0lHCk1hbnkgYWdpbGUg cHJvamVjdHMgZmFpbCBiZWNhdXNlIG9mIG1pc2NvbmNlcHRpb25zIGFib3V0IHJvbGVzIGFuZApy ZXNwb25zaWJpbGl0aWVzLgoKQSBwcm9kdWN0IG1hbmFnZXIgaXMgbm90IHRoZSBzYW1lIGFzIGEg U2NydW0gUHJvZHVjdCBPd25lci4gVGhlIHNhbWUgZ29lcwpmb3IgeW91ciBjbGllbnQgb3IgeW91 ciBidXNpbmVzcyBzdGFrZWhvbGRlci4gVGhleSBkb24ndCBjYXJlIGFib3V0IHlvdXIKYWdpbGUg cHJvY2VzcyBhbmQgc28gd2lsbCBicmVhayB0aGUgcnVsZXMgb2YgdGhlIHByb2Nlc3Mgd2hlbiBp dCBzdWl0cwp0aGVtLiBNb3N0IHByb2R1Y3QgbWFuYWdlcnMgSSBrbm93IGFyZSB0b28gaGlnaCBh IGxldmVsIHRvIGJlIGEgU2NydW0KUHJvZHVjdCBPd25lci4KCkJ1dCB5ZXMsIHRoZSBQcm9kdWN0 IE93bmVyIGdldHMgdG8gc2F5IHdoYXQgaXMgcHJvZHVjZWQgYW5kIGl0cyBzZXF1ZW5jZSBpbgp0 aGUgU3ByaW50cy4gVGhhdCByZXF1aXJlcyBldmVyeW9uZSB0byB1bmRlcnN0YW5kIHRoZWlyIHJv bGUuIEl0IHJlcXVpcmVzCnRoZSBQcm9kdWN0IE93bmVyIHRvIHdvcmsgY2xvc2VseSB3aXRoIG90 aGVyIHN0YWtlaG9sZGVycyBpbmNsdWRpbmcgdGhlCnByb2R1Y3QgbWFuYWdlci4gVGhpcyBpcyB3 aHkgdGhlIFBPIHJvbGUgaXMgdmVyeSBzaW1pbGFyIGluIGl0cyBkZWZpbml0aW9uCnRvZGF5IGFz IHRoZSB3YXkgUE1Cb0sgZGVmaW5lIGEgUE0ncyByb2xlLgoKSSBuZXZlciBoYXZlIGEgU3ByaW50 IDAuIEl0J3MgYW4gYW50aS1wYXR0ZXJuIGJlY2F1c2UgaXQgbmV2ZXIgbG9va3MgbGlrZSBhClNw cmludC4gSSBvZnRlbiB3b3JrIGluIFBSSU5DRTIgZW52aXJvbm1lbnRzIHRoYXQgcmVxdWlyZSBs b3RzIG9mIHBhcGVyd29yawphbmQgc2V0dXAgYmVmb3JlIGEgcHJvamVjdCBpcyBhbGxvd2VkIHRv IGNvbW1lbmNlLCBidXQgSSBkbyBhbGwgdGhpcyB3b3JrCnVzaW5nIFNjcnVtLiBJbiBteSBjdXJy ZW50IHdlYiBwcm9qZWN0IGl0IG1lYW50IDQgU3ByaW50cyBvZiBlZmZvcnQgYW5kIGF0CnRoZSA1 dGggU3ByaW50IEkgb25ib2FyZGVkIHRoZSB0ZWFtIC0tIDMgZGV2cywgMSBmcm9udCBlbmQgc3Bl Y2lhbGlzdCwgMQp1eCwgMSB3ZWIgY29udGVudCB3cml0ZXIuIG9uZSBvZiB0aGUgZGV2cyBpcyBh bHNvIHRoZSBTTS4gSSB3YXMgdGhlIFBPLCBidXQKSSBjb2FjaGVkIG15IEJBIHRvIHRha2Ugb3Zl ciBmcm9tIG1lIGFzIEkndmUgaGFkIHRvIGZvY3VzIG9uICdvdGhlcgp0aGluZ3MnLiBBbnlvbmUg Y2FuIGJlIHRoZSBQTyBvciB0aGUgU00sIGJ1dCBpZiB5b3UgaGF2ZSBubyBleHBlcmllbmNlLAp0 cmFpbmluZyArIGNvYWNoaW5nIGlzIGVzc2VudGlhbCB0byBjcmVhdGluZyBzdWNjZXNzLgoKCk9u IDIyIE1hcmNoIDIwMTUgYXQgMDM6NTQsIEpvbmF0aGFuIEJha2VyLUJhdGVzIDxqb25hdGhhbkBi YWtlcmJhdGVzLmNvbT4Kd3JvdGU6Cgo+ICIuLi4gdGhleSBjcmVhdGUgYW4gSW5jcmVtZW50IHRv Z2V0aGVyIHRoYXQgaXMgcHJvZHVjdGlvbiByZWFkeSBlYWNoCj4gU3ByaW50LiIKPgo+IFtzbmlw XQpNYXR0aGV3IEhvZGdzb24gbWFnaWEzZUBnbWFpbC5jb20gdmlhCjxodHRwczovL3N1cHBvcnQu Z29vZ2xlLmNvbS9tYWlsL2Fuc3dlci8xMzExMTgyP2hsPWVuPiBhc2lzLm9yZwpNYXIgMjEgKDkg ZGF5cyBhZ28pCnRvIFNJRwpTY3J1bSByZXF1aXJlcyBhbGwgVXNlciBTdG9yaWVzIGFyZSBkb25l IGluIHRoZSBTcHJpbnQuIFRoZSBTY3J1bSBNYXN0ZXIncwpyb2xlIGlzIHRvIHJlaW5mb3JjZSB0 aGlzIHJ1bGUgKHRoZXkgIm93biIgdGhlIHJ1bGVzKSBhbmQgaXRzIHByb2Nlc3MuClNwcmludCBQ bGFubmluZyBpcyBkZXNpZ25lZCB0byBhbGxvdyB0aW1lIHRvIGhhdmUganVzdCBlbm91Z2ggb2Yg YQpkaXNjdXNzaW9uIHRvIHVuZGVyc3RhbmQgdGhlIHNpemUgb2YgYSBVc2VyIFN0b3J5LCB0byBi cmVhayBpdCBkb3duLCBhbmQKYWdyZWUgKGFzIGEgYmFzZWxpbmUpIG9uIGhvdyB0aGUgdGVhbSB3 aWxsIGFwcHJvYWNoIGl0cyBkZWxpdmVyeS4gSWYgVVggaXMKcmVxdWlyZWQgYXMgcGFydCBvZiB0 aGUgZGVsaXZlcnkgb2YgdGhlIFVzZXIgU3RvcnksIEknZCBleHBlY3QgYSBkaXNjdXNzaW9uCm9u IGhvdyBtdWNoIGlzIG5lZWRlZCB0byBjcmVhdGUgYSB1c2FibGUsIGFjY2Vzc2libGUsIGxvdmFi bGUgcmVzdWx0LCBub3QgYQptaW5pbWFsIGVmZm9ydCBhcyBwYXJ0IG9mIGFuIE1WUC4KClRoZXJl IGFyZSBsb3RzIG9mIHdheXMgdG8gc2xpY2UgYSBzdG9yeS4gU29tZXRpbWVzIHRoZSB0ZWFtIGRv ZXNuJ3QgYWdyZWUKb24gaG93LiBEZXZzIHRlbmQgdG8gd2FudCB0byBzZXBhcmF0ZSBvdXQgdGhl IGZyb250IGVuZCBmcm9tIHRoZSBiYWNrZW5kLApidXQgdGhpcyBpcyBhbiBhbnRpLXBhdHRlcm4u IEkgZmluZCBoYXZpbmcgZG9uZSB1c2VyIGpvdXJuZXlzIG9yIHN0b3J5Cm1hcHBpbmcgcHJvdmlk ZXMgYSB1c2VmdWwgdXNlciBmb2N1c3NlZCBwZXJzcGVjdGl2ZSBvbiBzbGljaW5nLiBZb3UKdWx0 aW1hdGVseSB3YW50IHRvIHNsaWNlIGEgc3Rvcnkgc28gdGhhdCBpdCByZXByZXNlbnRzIHRoZSBz bWFsbGVzdCB1bml0IG9mCnZhbHVlIHRvIHRoZSB1c2VyIGluIGEgd2F5IHRoYXQgZW5hYmxlcyBp dCB0byBiZSBkZWxpdmVyZWQgaW4gMS0yIGRheXMgKGluCml0cyBlbnRpcmV0eSkgYnkgdGhlIHRl YW0uIFRoaXMgbWF5IG1lYW4gYSBwYWdlIG9mIG1hbnkgZmVhdHVyZXMgZ2V0cwpicm9rZW4gZG93 biBpbnRvIHNtYWxsZXIgc2V0cyBvZiBmZWF0dXJlcy4KCklmIGl0J3MgY2xlYXIgdGhhdCB0aGVy ZSBpcyBzdGlsbCBubyBhZ3JlZW1lbnQsIHRoZSBTTSB3aWxsIHBhcmsgdGhlCmRpc2N1c3Npb24s IHRoZSBVc2VyIFN0b3J5IHdpbGwgYmUgcHV0IGFzaWRlIHRpbCBuZXh0IFNwcmludCwgYW5kIHRo ZSB0ZWFtCndpbGwgc3BlbmQgdGltZSAoQmFja2xvZyBSZWZpbmVtZW50KSBkb2luZyBzb21lIGFu YWx5c2lzIGFuZCBkcmFmdCBkZXNpZ24Kb24gdGhlIFVzZXIgU3RvcnkgdW50aWwgY2xhcml0eSBp cyBhY2hpZXZlZC4gU29tZXRpbWVzLCBhcyBhIGNvYWNoLCBJIGVuZAp1cCBtYWtpbmcgdGhlIGRl Y2lzaW9uIG9uIGhvdyB0byBiZXN0IHNsaWNlIGEgVXNlciBTdG9yeSBiZWNhdXNlIGEgdGVhbQp0 eXBpY2FsbHkgaGFzIHZlcnkgbGl0dGxlIGV4cGVyaWVuY2UgaW4ga25vd2luZyBob3cgYmVzdCB0 byBkbyB0aGlzLiBUaGVyZQphcmUgZG96ZW5zIG9mIHBhdHRlcm5zIHRvIHVzZSwgYnV0IGtub3dp bmcgd2hpY2ggaXMgYSBnb29kIG9uZSB0byBhcHBseQoodGhlcmUgaXMgbmV2ZXIgb25lICJiZXN0 IiB3YXkpIHRha2VzIGV4cGVyaWVuY2UuCgpTb21ldGltZXMgdGhlcmUgbWlnaHQgYmUgYSBVc2Vy IFN0b3J5IGxlZnQgb3ZlciBmcm9tIGEgcHJldmlvdXMgU3ByaW50IHRoYXQKdGhlIHRlYW0gbmVl ZHMgdG8gd29yayBvbiwgYnV0IGlmIHRoZSBydWxlIG9mIGlzIHRoYXQgYWxsIFVzZXIgU3Rvcmll cyBtdXN0CmJlIGZpbmlzaGVkIGluIGEgc2luZ2xlIFNwcmludCwgdGhlbiBTcHJpbnQgUGxhbm5p bmcgYW5kIEJhY2tsb2cgUmVmaW5lbWVudAphcmUgbWVjaGFuaXNtcyB0byBlbnN1cmUgdGhhdCBh bGwgVXNlciBTdG9yaWVzIGFyZSBzbGljZWQgaW50byBzbWFsbApwaWVjZXMuIFRoaXMgaXMganVz dCBhcHBsaWNhdGlvbiBvZiBCYXRjaCBUaGVvcnkuCk1hdHRoZXcgSG9kZ3NvbiBtYWdpYTNlQGdt YWlsLmNvbSB2aWEKPGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL21haWwvYW5zd2VyLzEzMTEx ODI/aGw9ZW4+IGFzaXMub3JnCk1hciAyMSAoOSBkYXlzIGFnbykKdG8gU0lHCkBUb206IFNvbWUg ZXhwZXJpZW5jZXMgdG8gY29uc2lkZXIKCmh0dHA6Ly96ZW5leG1hY2hpbmEud29yZHByZXNzLmNv bS8yMDEzLzAzLzEyL3V4LXdvcmtpbmctYS1zcHJpbnQtYWhlYWQtaXMtZnVsbC1vZi1mYWlsLXdv cmstYXMtYS1zaW5nbGUtdGVhbS1pbnN0ZWFkLwoKTWF0dApNYXR0aGV3IEhvZGdzb24gbWFnaWEz ZUBnbWFpbC5jb20gdmlhCjxodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS9tYWlsL2Fuc3dlci8x MzExMTgyP2hsPWVuPiBhc2lzLm9yZwpNYXIgMjEgKDkgZGF5cyBhZ28pCnRvIFNJRwpTdWNjZWVk aW5nIHdpdGggQWdpbGUgaXMgb25lIG9mIG15IGZhdiBib29rcyBmcm9tIHRoaXMgcGVyc3BlY3Rp dmUuCmh0dHA6Ly93d3cuc3VjY2VlZGluZ3dpdGhhZ2lsZS5jb20vCgpDaGFuZ2UgZG9lc24ndCBh bHdheXMgaGF2ZSB0byBjb21lIGZyb20gdGhlIHRvcC1kb3duLiBHZXR0aW5nIGJ1eS1pbiBmaXJz dApmcm9tIHRoZSBDRU8gaXNuJ3QgbmVlZGVkIGluIGFsbCBjb21wYW5pZXMuCgpHZXR0aW5nIGNv YWNoaW5nIGZyb20gYSBjaGFuZ2UgYWdlbnQgd2l0aCBleHBlcmllbmNlIGluIGxlYWRpbmcgdGhp cyB0eXBlCm9mIHRyYW5zZm9ybWF0aW9uIGRvZXMgZGVmaW5pdGVseSBoZWxwIHRob3VnaCA6KQpN YXR0aGV3IEhvZGdzb24gbWFnaWEzZUBnbWFpbC5jb20gdmlhCjxodHRwczovL3N1cHBvcnQuZ29v Z2xlLmNvbS9tYWlsL2Fuc3dlci8xMzExMTgyP2hsPWVuPiBhc2lzLm9yZwpNYXIgMjEgKDkgZGF5 cyBhZ28pCnRvIFNJRwpASm9obmF0aGFuOiBJJ20gbm90IHN1cmUgd2h5IHlvdSBmZWVsIHVuZWFz ZSBhYm91dCAiYWNjZWxlcmF0aW5nCmRldmVsb3BtZW50Ii4KClRoZXJlJ3MgYSBsb3Qgb2YgZ29v ZCByZXNlYXJjaCB0aGF0IGluZGljYXRlcyB3aGVuIFNjcnVtIGlzIGRvbmUgd2VsbCwgaXRzCmZv Y3VzIG9uIGJ1aWxkaW5nIHRoZSByaWdodCB0aGluZyBhbmQgYnVpbGRpbmcgdGhlIHRoaW5nIHJp Z2h0LCByZW1vdmVzCmFib3V0IDUwJSBvZiB0aGUgcmV3b3JrIHRoYXQgaXMgb2Z0ZW4gYXNzb2Np YXRlZCB3aXRoIGRldmVsb3BtZW50IHByb2plY3RzLgpUaGUgY29udGludW91cyBsZWFybmluZyBh bHNvIHN1cHBvcnRzIHJlbW92aW5nIHdhc3RlIChmcm9tIGEgTGVhbiBzZW5zZSAuLi4KYSBsb3Qg b2YgbXkgY29hY2hpbmcgb2YgU2NydW0gaXMgaGVhdmlseSBpbmZsdWVuY2VkIGJ5IExlYW4pIGFu ZCBzbyBmYXN0ZXIKZGVsaXZlcnkgb2YgdGhlIHJpZ2h0IHRoaW5nIHRvIHVzZXJzIGFuZCBjbGll bnRzLgoKTXkgb3duIGV4cGVyaWVuY2Ugc3VwcG9ydHMgdGhpcyB2aWV3LiBUZWFtcyBhYmlsaXR5 IHRvIGRlbGl2ZXIgZ2V0cyBmYXN0ZXIsCm1vcmUgZWZmaWNpZW50LCBsZXNzIGJ1Z2d5IG92ZXIg YXMgbGl0dGxlIGFzIDMgbW9udGhzIGlmIHRoZXkgaGF2ZSBmb2N1cwphbmQgZGlzY2lwbGluZSBp biB0aGVpciBTY3J1bSBwcmFjdGljZS4gQ3JlYXRpbmcgZm9jdXMgYW5kIGRpc2NpcGxpbmUgaXMK bm90IGFzIGVhc3kgYXMgaXQgc291bmRzIHRob3VnaCA6KQoKU2NydW0gaXMgbGlrZSBjaGVzcy4g VGhlIHJ1bGVzIGFyZSBzaW1wbGUsIGJ1dCB0byBtYXN0ZXIgaXQgaXMgaGFyZC4gVGhpcwppcyB3 aHkgU2NydW0gQ29hY2hlcyBleGlzdCA6KQpKb25hdGhhbiBCYWtlci1CYXRlcyB2aWEKPGh0dHBz Oi8vc3VwcG9ydC5nb29nbGUuY29tL21haWwvYW5zd2VyLzEzMTExODI/aGw9ZW4+IGFzaXMub3Jn Ck1hciAyMSAoOSBkYXlzIGFnbykKdG8gU0lHCkBUb206IFNvIGluIE1hdHQncyBsaW5rIHlvdSBt YXkgaGF2ZSBhbiBhbnN3ZXIgdG8geW91ciBtYWluIHF1ZXN0aW9uLApJIHRoaW5rIDotKQoKSXQg d291bGQgYmUgdmVyeSBraW5kIG9mIHlvdSB0byByZXBvcnQgYmFjayBvbiB5b3VyIGV4cGVyaWVu Y2VzCmltcGxlbWVudGluZyBVWCBpbiBzY3J1bS4KTWF0dGhldyBIb2Rnc29uIG1hZ2lhM2VAZ21h aWwuY29tIHZpYQo8aHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vbWFpbC9hbnN3ZXIvMTMxMTE4 Mj9obD1lbj4gYXNpcy5vcmcKTWFyIDIxICg5IGRheXMgYWdvKQp0byBTSUcKSSdkIHNheSB0aGF0 ICpkZWxpdmVyeSogaXMgdGhlIG1lYXN1cmUgb2Ygc3VjY2Vzcy4gQnV0IHlvdSBhcmUgcmlnaHQg YWJvdXQKd29ya2luZyBzb2Z0d2FyZSB2cyB2YWx1ZSBpbiB0ZXJtcyBvZiBpdHMgZGVsaXZlcnkg dG8gZW5kLXVzZXJzLiBUaGlzIGlzCndoZXJlIEkgc2VlIFVYIGJyaW5ncyBhIG11Y2ggbmVlZGVk IHJlZm9jdXNzaW5nIG9mIGhvdyBhIHRlYW0gd29ya3MgdG8KZGVsaXZlciB0aGF0IHZhbHVlLgoK VGhpcyBpcyB3aHkgSSBmZWVsIGl0cyBpbXBvcnRhbnQgdG8gdGhpbmsgYWJvdXQgU2NydW0ncyBJ bmNyZW1lbnQgaW4gdGVybXMKb2YgTGVhbiBwcmluY2lwbGVzLiBUaGF0IGlzLCB0byBjcmVhdGUg dmFsdWUgKG5vdCBqdXN0IHdvcmtpbmcgc29mdHdhcmUpLgoKT24gMjIgTWFyY2ggMjAxNSBhdCAw OTowNSwgSm9uYXRoYW4gQmFrZXItQmF0ZXMgPGpvbmF0aGFuQGJha2VyYmF0ZXMuY29tPgp3cm90 ZToKTWF0dGhldyBIb2Rnc29uIG1hZ2lhM2VAZ21haWwuY29tIHZpYQo8aHR0cHM6Ly9zdXBwb3J0 Lmdvb2dsZS5jb20vbWFpbC9hbnN3ZXIvMTMxMTE4Mj9obD1lbj4gYXNpcy5vcmcKTWFyIDIxICg5 IGRheXMgYWdvKQp0byBTSUcKQHNrb3Q6IGlmIHlvdSdyZSB1c2luZyBTY3J1bSB0aGF0J3Mgbm90 IHN1cHBvc2VkIHRvIGhhcHBlbi4gSSB3b3VsZCBiZQp0cnlpbmcgdG8gdW5kZXJzdGFuZCBhbmQg bGVhcm4gd2h5ICJwcm9kdWN0aW9uIHJlYWR5IiBpc24ndCB3b3JraW5nIGFuZAp0aGVuIHJlY3Rp ZnkgaXQuCgpJZiB0aGlzIGlzIG5vdCBoYXBwZW5pbmcsIHRoZW4gZmlyZSB5b3VyIFNjcnVtIE1h c3RlciBhbmQgZ2V0IG9uZSB0aGF0IGNhbgpoZWxwIHRoZSB0ZWFtIGxlYXJuIGFuZCBmaXggdGhp cyBwcm9ibGVtIChjb250aW51b3VzIGxlYXJuaW5nIGFuZAppbXByb3ZlbWVudCBpcyB0aGUgbWFp biB3YXkgdG8gZ2F1Z2UgYSBTY3J1bSBNYXN0ZXIncyBwZXJmb3JtYW5jZSkuIE9yLCBnZXQKYSBT Y3J1bSBDb2FjaCB0byBoZWxwIGlkZW50aWZ5IHdoeSB0aGlzIGlzIG5vdCBvY2N1cnJpbmcgYW5k IHRvIGhlbHAgdGhlClNjcnVtIE1hc3RlciBsZWFybiBob3cgdG8gZG8gdGhpcyBieSBoaW1zZWxm LgpUaG9tYXMgRG9uZWhvd2VyIDx0ZG9uZWhvd2VyQGdtYWlsLmNvbT4KTWFyIDIxICg5IGRheXMg YWdvKQp0byBTSUcKVmVyeSBoZWxwZnVsLiBJIHRoaW5rIHRoZSBkZWJhdGUgYW5kIGV4cGxvcmF0 aW9uIGlzIHdvcnRoIGl0IGFuZCBlbmNvdXJhZ2UKYW55b25lIHRvIGNvbnRyaWJ1dGUgdG8gdGhp cyBkaXNjdXNzaW9uLiBJIHRoaW5rIHRoZSBtb3N0IGludGVyZXN0aW5nCmNvbW1lbnQgSSd2ZSBz ZWVuIGlzIHRoZSBpZGVhIHRoYXQgd2hlbiB0aGUgYWdpbGUgbWFuaWZlc3RvIHdhcyB3cml0dGVu CnRoZXkgZGlkIG5vdCBoYXZlIFVYIGluIG1pbmQgYW5kIG92ZXIgdGltZSBpdCBzZWVtcyB0aGF0 IGxvb3NlciBkZWZpbml0aW9ucwpvZiBhZ2lsZSBhbmQgYWdpbGUgbWV0aG9kcyBoYXZlIGJlZW4g YWRvcHRlZCB0byBhY2NvdW50IGZvciB0aGlzLiBJIGFsc28KdGhpbmsgdGhpcyBwb2ludHMgdG8g dGhlIGlkZWEgdGhhdCBldmVyeSBzcHJpbnQgeWllbGRpbmcgcHJvZHVjdGlvbiByZWFkeQpjb2Rl IG1heSBub3QgYWN0dWFsbHkgeWllbGQgdGhlIGJlc3QgcHJvZHVjdC9zb2Z0d2FyZSBhbmQgdGhh dCB0aGVyZSBpcwpyb29tIGZvciBpbXByb3Zpbmcgb3IgZXZvbHZpbmcgdGhlIG9yaWdpbmFsIHRo aW5raW5nLiBBZ3JlZT8KTWF0dGhldyBIb2Rnc29uIG1hZ2lhM2VAZ21haWwuY29tIHZpYQo8aHR0 cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vbWFpbC9hbnN3ZXIvMTMxMTE4Mj9obD1lbj4gYXNpcy5v cmcKTWFyIDIxICg5IGRheXMgYWdvKQp0byBTSUcKQXQgdGhlIGFubml2ZXJzYXJ5IG9mIHRoZSBz aWduaW5nIG9mIHRoZSBhZ2lsZSBtYW5pZmVzdG8sIHRoZXkgZGlzY3Vzc2VkCndoZXRoZXIgdGhl cmUgd2FzIGFueXRoaW5nIHRoZXkgd291bGQgY2hhbmdlLiBPdmVyYWxsLCB0aGV5IGFncmVlZCB0 aGF0IGl0CndhcyBzdGlsbCByZWxldmFudCwgYnV0IHRoZSBwaHJhc2UgIndvcmtpbmcgc29mdHdh cmUiIGlzIHN0aWxsIHNvbWV0aGluZwp0aGF0IHNvbWUgY29uc2lkZXIgYSBiYXJyaWVyIHRvIGl0 cyBmdXJ0aGVyIGFkb3B0aW9uIGludG8gZGlzY2lwbGluZXMgb3RoZXIKdGhhbiBzb2Z0d2FyZSBk ZXZlbG9wbWVudC4KClRoYXQgc2FpZCwgbXVjaCBvZiAiYWdpbGUiIGlzIHZlcnkgb2xkLiBFdmVu IFNjcnVtIHdhcyBib3JuIG91dCBvZiBwcm9kdWN0CmRldmVsb3BtZW50IGFuZCB0aGUgYXJ0aWNs ZSBpbiB0aGUgSGFydmFyZCBCdXNpbmVzcyBSZXZpZXcgJ1RoZSBOZXcgTmV3ClByb2R1Y3QgRGV2 ZWxvcG1lbnQgR2FtZSIuCgpOb3cgdGhlcmUgYXJlIGRvemVucyBvZiBhZ2lsZSBtZXRob2RzLiBT b21lIGNvbnRpbnVlIHRvIGV2b2x2ZSBvdmVyIHRpbWUuClRoZSBpbXBvcnRhbnQgdGhpbmcgaXMg dG8gcmVtZW1iZXIgdGhhdCBhZ2lsZSBpc24ndCBvbmUgdGhpbmcuIEl0J3MgbW9yZQppbXBvcnRh bnQgdG8gZW5zdXJlIHRoYXQgdGhlIHJpZ2h0IG1ldGhvZCBpcyBzZWxlY3RlZCBmb3IgdGhlIHJp Z2h0IHRlYW0sCml0cyBlbnZpcm9ubWVudCBhbmQgaXRzIG5lZWRzLgoKVGhpcyBpcyBvbmUgcmVh c29uIEkgY2hhbmdlZCBmcm9tIGEgcHJpbWFyeSBmb2N1cyBpbiBteSBwcm9mZXNzaW9uYWwgbGlm ZQpmcm9tIFVYIHRvIEFnaWxlLiBUaGVyZSdzIGEgbG90IHRoYXQgdGhlIGFnaWxlIGNhbXAgY2Fu IGxlYXJuIGZyb20gVVguIEkKdGhpbmsgdGhlIGNvbW11bml0eSBpcyBiZXR0ZXIgZnJvbSB0aGF0 IG1peCBvZiBwZXJzcGVjdGl2ZXMuCi0tLS0tLS0tLS0tLQoyMDE1ICBJQSBTdW1taXQKQXByaWwg MjItMjYsIDIwMTUKTWlubmVhcG9saXMsIE1OCi0tLS0tCldoZW4gcmVwbHlpbmcsIHBsZWFzZSAq dHJpbSB5b3VyIHBvc3QqIGFzIG11Y2ggYXMgcG9zc2libGUuCipQbGFpbiB0ZXh0LCBwbGVhc2U7 IE5PIEF0dGFjaG1lbnRzCgpTZWFyY2hhYmxlIEFyY2hpdmUgYXQgaHR0cDovL3d3dy5pbmZvLWFy Y2gub3JnL2xpc3RzL3NpZ2lhLWwvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KU2lnaWEtbCBtYWlsaW5nIGxpc3QgLS0gcG9zdCB0bzogU2lnaWEtbEBhc2lzLm9yZwpD aGFuZ2VzIHRvIHN1YnNjcmlwdGlvbjogaHR0cDovL21haWwuYXNpcy5vcmcvbWFpbG1hbi9saXN0 aW5mby9zaWdpYS1sCg==