|
From: <jue...@we...> - 2003-10-07 23:46:30
|
SSd2ZSBqdXN0IGNvbW1pdHRlZCB0aGUgcmV2aXNlZCB2ZXJzaW9uLiBJJ3ZlIHN0aWxsIHJlZmlu ZWQgdGhlIHByb3Bvc2FsIGEgYml0OyBmb3IgZXhhbXBsZSwgdGhlcmUncyBhIEphdmFNYWlsU2Vu ZGVyIGludGVyZmFjZSBub3cgKGV4dGVuZHMgTWFpbFNlbmRlcikgcGx1cyBhIEphdmFNYWlsU2Vu ZGVySW1wbCBpbXBsZW1lbnRhdGlvbi4NCiANCkZ1cnRoZXJtb3JlLCBJJ3ZlIHR1cm5lZCBNYWls RXhjZXB0aW9uIGludG8gYSBjaGVja2VkIGV4Y2VwdGlvbiwgYXMgZmFpbGVkIHNlbmRpbmcgY2Fu IHR5cGljYWxseSBiZSBoYW5kbGVkIGJ5IGFwcGxpY2F0aW9ucywgZS5nLiBhcyAic2VuZCBmYWls ZWQgLSBkbyB5b3Ugd2FudCB0byByZXRyeT8iIG1lc3NhZ2VzLiBUaGlzIG1pZ2h0IGJlIGNvbnRy b3ZlcnNpYWw7IGFueSBzdHJvbmcgb2JqZWN0aW9ucyBhZ2FpbnN0IHRoaXM/DQogDQpJJ3ZlIGFs c28gcmV2aXNlZCB0aGUgdGVzdCBzdWl0ZS4gV2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlv biBzdHJhdGVneSwgaXQncyBiZWVuIGVhc3kgdG8gdGVzdCBKYXZhTWFpbFNlbmRlckltcGwgd2l0 aCBhIFRyYW5zcG9ydCBtb2NrIChhcHBsaWVkIGJ5IG92ZXJyaWRpbmcgYSBwcm90ZWN0ZWQgZ2V0 VHJhbnNwb3J0IG1ldGhvZCkuIEkgZ3Vlc3Mgd2Ugd29uJ3QgbmVlZCBmdXJ0aGVyIHRlc3RzIHdp dGggYW4gU01UUCBzZXJ2ZXI7IGFmdGVyIGFsbCwgdGhhdCB3b3VsZCB0ZXN0IEphdmFNYWlsIHJh dGhlciB0aGFuIG91ciB3cmFwcGVyLg0KIA0KSnVlcmdlbg0KIA0KIA0KDQoJLS0tLS1VcnNwcsO8 bmdsaWNoZSBOYWNocmljaHQtLS0tLSANCglWb246IEtvcHlsZW5rbywgRG1pdHJ5IFttYWlsdG86 ZGtvcHlsZW5rb0BhY3MucnV0Z2Vycy5lZHVdIA0KCUdlc2VuZGV0OiBNbyAwNi4xMC4yMDAzIDEz OjUxIA0KCUFuOiBqw7xyZ2VuIGjDtmxsZXIgW3dlcmszQVRdOyAnUm9kIEpvaG5zb24nIA0KCUNj OiAnc3ByaW5nZnJhbWV3b3JrLWRldmVsb3BlckBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQnIA0KCUJl dHJlZmY6IFJFOiBbU3ByaW5nZnJhbWV3b3JrLWRldmVsb3Blcl0gTWFpbCBzdXBwb3J0DQoJDQoJ DQoNCglKdWVyZ2VuLA0KCQ0KCVRoZSBwcm9wb3NlZCBBUEkgbG9va3MgZ29vZCB0byBtZS4NCgkN CglSZWdhcmRzLA0KCURtaXRyaXkuDQoJDQoJLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCglG cm9tOiBqw7xyZ2VuIGjDtmxsZXIgW3dlcmszQVRdIFttYWlsdG86anVlcmdlbi5ob2VsbGVyQHdl cmszYXQuY29tXQ0KCVNlbnQ6IE1vbmRheSwgT2N0b2JlciAwNiwgMjAwMyAyOjQ4IEFNDQoJVG86 IFJvZCBKb2huc29uOyBLb3B5bGVua28sIERtaXRyeQ0KCUNjOiBzcHJpbmdmcmFtZXdvcmstZGV2 ZWxvcGVyQGxpc3RzLnNvdXJjZWZvcmdlLm5ldA0KCVN1YmplY3Q6IFJlOiBbU3ByaW5nZnJhbWV3 b3JrLWRldmVsb3Blcl0gTWFpbCBzdXBwb3J0DQoJDQoJDQoJUm9kLCBEbWl0cml5LA0KCQ0KCUkg YWdyZWUgaW4gdGVybXMgb2YgU3RvcmUgc3VwcG9ydCAtIGxldCdzIGNvbmNlbnRyYXRlIG9uIG1h aWwgc2VuZGluZyBmb3INCglub3cuIEkgYWxzbyB0ZW5kIHRvIGFncmVlIGluIHRlcm1zIG9mIGFi c3RyYWN0aW5nIEphdmFNYWlsIGZvciBzaW1wbGUgZW5vdWdoDQoJbWFpbCBzZW5kaW5nIHJlcXVp cmVtZW50cy4gSSBmb3Jnb3QgdGhhdCBTZXNzaW9uIGlzIGZpbmFsLCBCVFcuIEphdmFNYWlsIGlz DQoJcmVhbGx5IG1lc3N5IC0gQVBJIGRlc2lnbiBzZWVtcyB0byBiZSBhbiBhcnQuLi4gOy0pDQoJ DQoJU28gbGV0IG1lIHN1Z2dlc3QgYSBtZWV0LWluLXRoZS1taWRkbGUgc29sdXRpb246IEFzIEkn dmUgaW5pdGlhbGx5IGludGVuZGVkLA0KCWxldCdzIHNlcGFyYXRlIHRyYW5zcG9ydC1yZWxhdGVk IChob3N0LCB1c2VybmFtZSwgcGFzc3dvcmQpIGFuZA0KCW1lc3NhZ2UtcmVsYXRlZCBwcm9wZXJ0 aWVzLCBpLmUuIGRyb3AgTWFpbFNldHRpbmdzIGluIGl0cyBjdXJyZW50IGZvcm0sIG1vdmUNCgl0 cmFuc3BvcnQgc2V0dGluZ3MgdG8gdGhlIE1haWxTZW5kZXIgaW1wbGVtZW50YXRpb24sIGFuZCBp bnRyb2R1Y2UgYQ0KCVNpbXBsZU1lc3NhZ2UgY2xhc3MuDQoJDQoJQXMgdGhlIGVmZmVjdCBvZiB0 aGUgY3VycmVudCBNYWlsVGVtcGxhdGUvTWFpbENhbGxiYWNrIGNvbWJvIChvdmVycmlkaW5nDQoJ Y2VydGFpbiBwcmUtZGVmaW5lZCBtYWlsIHNldHRpbmdzKSBjYW4gYmUgYWNoaWV2ZWQgd2l0aCB1 c2luZyBhDQoJU2ltcGxlTWVzc2FnZSBjb3B5IGNvbnN0cnVjdG9yLCBJIHN1Z2dlc3QgdG8gZHJv cCBNYWlsVGVtcGxhdGUgYW5kDQoJTWFpbENhbGxiYWNrLiBUaGlzIGxlYXZlcyBTaW1wbGVNZXNz YWdlLCBNYWlsU2VuZGVyLCBhbmQgYSBKYXZhTWFpbFNlbmRlcg0KCWltcGxlbWVudGF0aW9uLg0K CQ0KCVRvIG9mZmVyIG1vcmUgcG93ZXIgZm9yIHRob3NlIHdobyBuZWVkIGl0LCBJIHN1Z2dlc3Qg dG8gb2ZmZXIgYWRkaXRpb25hbA0KCW1ldGhvZHMgaW4gSmF2YU1haWxTZW5kZXIuIFdob2V2ZXIg d2FudHMgdG8gdXNlIHRob3NlIHNob3VsZCBjYXN0IHRvDQoJSmF2YU1haWxTZW5kZXIsIHJlc3Bl Y3RpdmVseSBvZmZlciBhIGJlYW4gcHJvcGVydHkgb2YgdHlwZSBKYXZhTWFpbFNlbmRlciB0bw0K CWJlIHBvcHVsYXRlZCBieSBhIGJlYW4gcmVmZXJlbmNlLiBBbGwgb3RoZXIgYXBwbGljYXRpb24g Y2xhc3NlcyBjYW4gd29yaw0KCXdpdGggdGhlIE1haWxTZW5kZXIgaW50ZXJmYWNlLg0KCQ0KCU1h aWxTZW5kZXIgaW50ZXJmYWNlIHVzZXJzIGFyZSBlYXNpbHkgdGVzdGFibGUgd2l0aCBhIG1vY2sg TWFpbFNlbmRlcg0KCWltcGxlbWVudGF0aW9uLiBJdCB3aWxsIGJlIGEgYml0IGhhcmRlciB3aXRo IEphdmFNYWlsU2VuZGVyIHVzZXJzLCBidXQgc3RpbGwNCglwb3NzaWJsZTogQSBtb2NrIEphdmFN YWlsU2VuZGVyIHN1YmNsYXNzIHRoYXQgb3ZlcnJpZGVzIHNlbmQoTWltZU1lc3NhZ2UpDQoJYW5k IHNlbmQoTWltZU1lc3NhZ2VbXSkgc2hvdWxkIGFsbG93IGZvciBlYXN5IHRlc3RpbmcgdG9vLiBO b3RlIHRoYXQgYQ0KCWNvbm5lY3Rpb24gdG8gdGhlIG1haWwgc2VydmVyIGlzIG9ubHkgcmVxdWly ZWQgZm9yIGFjdHVhbCBtYWlsIHNlbmRpbmcsIG5vdA0KCWZvciBTZXNzaW9uIHNldHVwLg0KCQ0K CXB1YmxpYyBjbGFzcyBTaW1wbGVNZXNzYWdlew0KCSAgcHJpdmF0ZSBTdHJpbmcgZnJvbTsNCgkg IHByaXZhdGUgU3RyaW5nIHRvOw0KCSAgcHJpdmF0ZSBTdHJpbmdbXSBjYzsNCgkgIHByaXZhdGUg U3RyaW5nIHN1YmplY3Q7DQoJICBwcml2YXRlIFN0cmluZyB0ZXh0Ow0KCSANCgkgIHB1YmxpYyBT aW1wbGVNZXNzYWdlKFNpbXBsZU1lc3NhZ2Ugb3JpZ2luYWwpIHsNCgkgICAgLy8gY29weSBjb25z dHJ1Y3Rvcg0KCSAgfQ0KCQ0KCSAgKGdldHRlcnMgYW5kIHNldHRlcnMpDQoJfQ0KCQ0KCXB1Ymxp YyBpbnRlcmZhY2UgTWFpbFNlbmRlciB7DQoJICB2b2lkIHNlbmQoU2ltcGxlTWVzc2FnZSBtZXNz YWdlKTsNCgl9DQoJDQoJcHVibGljIGNsYXNzIEphdmFNYWlsU2VuZGVyIGltcGxlbWVudHMgTWFp bFNlbmRlciwgSW5pdGlhbGl6aW5nQmVhbiB7DQoJICBwcml2YXRlIFN0cmluZyBob3N0Ow0KCSAg cHJpdmF0ZSBTdHJpbmcgdXNlcm5hbWU7DQoJICBwcml2YXRlIFN0cmluZyBwYXNzd29yZDsNCgkN CgkgIChnZXR0ZXJzIGFuZCBzZXR0ZXJzKQ0KCQ0KCSAgcHVibGljIHZvaWQgYWZ0ZXJQcm9wZXJ0 aWVzU2V0KCkgew0KCSAgICAvLyBjcmVhdGUgYW5kIGtlZXAgU2Vzc2lvbiBpbnN0YW5jZQ0KCSAg fQ0KCQ0KCSAgcHVibGljIHZvaWQgc2VuZChTaW1wbGVNZXNzYWdlIG1lc3NhZ2UpIHsNCgkgICAg Ly8gc2VuZCBTaW1wbGVNZXNzYWdlIHZpYSBKYXZhTWFpbA0KCSAgICAvLyBjcmVhdGluZyBhIE1p bWVNZXNzYWdlIGludGVybmFsbHkgYW5kIGRlbGVnYXRpbmcgdG8gc2VuZChNaW1lTWVzc2FnZSkN Cgl9DQoJDQoJICBwdWJsaWMgdm9pZCBzZW5kKE1pbWVNZXNzYWdlIG1lc3NhZ2UpIHsNCgkgICAg Ly8gc2VuZCBKYXZhTWFpbCBNaW1lTWVzc2FnZQ0KCSAgICAvLyB1c2luZyBhIFRyYW5zcG9ydCBp bnN0YW5jZTogY29ubmVjdCwgc2VuZE1lc3NhZ2UsIGRpc2Nvbm5lY3QNCgkgIH0NCgkNCgkgIHB1 YmxpYyB2b2lkIHNlbmQoTWltZU1lc3NhZ2VbXSBtZXNzYWdlcykgew0KCSAgICAvLyBzZW5kIG11 bHRpcGxlIEphdmFNYWlsIE1pbWVNZXNzYWdlcyBpbiBvbmUgYmF0Y2gNCgkgICAgLy8gdXNpbmcg YSBUcmFuc3BvcnQgaW5zdGFuY2U6IGNvbm5lY3QsIG11bHRpcGxlIHNlbmRNZXNzYWdlLCBkaXNj b25uZWN0DQoJICB9DQoJDQoJICBwdWJsaWMgTWltZU1lc3NhZ2UgY3JlYXRlTWltZU1lc3NhZ2Uo KSB7DQoJICAgIC8vIGNyZWF0ZSBKYXZhTWFpbCBNaW1lTWVzc2FnZSBmb3IgdGhlIFNlc3Npb24g b2YgdGhpcyBzZW5kZXINCgkgICAgLy8gbmVjZXNzYXJ5IGJlY2F1c2Ugb2YgTWltZU1lc3NhZ2Uo U2Vzc2lvbikgY29uc3RydWN0b3INCgkgIH0NCgl9DQoJDQoJSSBjb25zaWRlciB0aGlzIHRoZSBi ZXN0IG9mIGJvdGggd29ybGRzLiBBcHBsaWNhdGlvbnMgY2FuIGNob29zZSB0byB1c2UgdGhlDQoJ ZnVsbCBhYnN0cmFjdGlvbiAoTWFpbFNlbmRlcikgZm9yIHNpbXBsZSBwdXJwb3Nlcywgb3IgdXNl IEphdmFNYWlsU2VuZGVyIGZvcg0KCW1vcmUgc29waGlzdGljYXRlZCByZXF1aXJlbWVudHMuIEFz IHRlc3Rpbmcgc3VjaCBhcHBzIGRvZXMgbm90IHJlcXVpcmUNCgltb2NraW5nIEphdmFNYWlsIGl0 c2VsZiBpbiBhbnkgY2FzZSwgd2Ugc2hvdWxkIGhhdmUgcmVhY2hlZCBhbGwgb3VyIGdvYWxzLg0K CQ0KCVdoYXQgZG8geW91IHRoaW5rPyBJZiB3ZSBhZ3JlZSBvbiB0aGUgQVBJIGRlc2lnbiwgSSds bCBiZSBoYXBweSB0byByZXdvcmsNCglvdXIgbWFpbCBzdXBwb3J0IHRoYXQgd2F5IGZvciAxLjAg TTIuDQoJDQoJUmVnYXJkcywNCglKdWVyZ2VuDQoJDQoJDQoJDQoJICAgICAgICAtLS0tLVVyc3By w7xuZ2xpY2hlIE5hY2hyaWNodC0tLS0tDQoJICAgICAgICBWb246IFJvZCBKb2huc29uIFttYWls dG86cm9kLmpvaG5zb25AaW50ZXJmYWNlMjEuY29tXQ0KCSAgICAgICAgR2VzZW5kZXQ6IFNvIDA1 LjEwLjIwMDMgMTE6MzgNCgkgICAgICAgIEFuOiBqw7xyZ2VuIGjDtmxsZXIgW3dlcmszQVRdOyBL b3B5bGVua28sIERtaXRyeQ0KCSAgICAgICAgQ2M6DQoJICAgICAgICBCZXRyZWZmOiBSZTogW1Nw cmluZ2ZyYW1ld29yay1kZXZlbG9wZXJdIE1haWwgc3VwcG9ydA0KCSAgICAgICANCgkgICAgICAg DQoJDQoJICAgICAgICA+IEFmdGVyIGluLWRlcHRoIGNvbnNpZGVyYXRpb24gb2YgdGhlIG1haWwg c2VuZGluZyByZXF1aXJlbWVudHMgaW4NCgl3ZXJrM0FUDQoJICAgICAgICBwcm9kdWN0cyBhbmQg c3R1ZHkgb2YgdGhlIEphdmFNYWlsIHNwZWMsIEknbSBpbmNsaW5lZCB0byBzdWdnZXN0IGENCgkg ICAgICAgIHNpZ25pZmljYW50bHkgZGlmZmVyZW50IGtpbmQgb2YgbWFpbCBzdXBwb3J0IHRoYW4g dGhlIGN1cnJlbnQgb25lLg0KCVRoZSBtYWluDQoJICAgICAgICByZWFzb25zIGFyZSBjZXJ0YWlu IGxpbWl0YXRpb25zIG9mIHRoZSBjdXJyZW50IFNwcmluZyBtYWlsIHNlbmRlciwNCglub3QNCgkg ICAgICAgIGFsbG93aW5nIGZvciBxdWl0ZSBhIGxvdCBvZiBKYXZhTWFpbCBmdW5jdGlvbmFsaXR5 Og0KCSAgICAgICAgPg0KCSAgICAgICAgPiAxLiBIb3cgdG8gc2VuZCBibGluZCBjb3BpZXMgKGJj Yyk/DQoJICAgICAgICA+IDIuIEhvdyB0byBzcGVjaWZ5IGEgbmFtZSBmb3Igc2VuZGVyIG9yIHJl Y2lwaWVudCBhZGRyZXNzZXMgKHRvDQoJbWFrZSBtYWlsDQoJICAgICAgICBjbGllbnRzIHNob3cg c29tZXRoaW5nIGxpa2UgIkp1ZXJnZW4gSG9lbGxlciA8amhvQHdlcmszYXQuY29tPiIpPw0KCSAg ICAgICAgPiAzLiBIb3cgdG8gc2V0IGEgY2hhcnNldCBmb3Igc3ViamVjdCBhbmQgdGV4dCAodmVy eSBpbXBvcnRhbnQgZm9yDQoJbG9jYWxpemVkDQoJICAgICAgICBtYWlscyk/DQoJICAgICAgICA+ IDQuIEhvdyB0byBhdXRoZW50aWNhdGUgYWdhaW5zdCB0aGUgU01UUCBzZXJ2ZXIgaWYgbmVjZXNz YXJ5DQoJKHVzZXJuYW1lLA0KCSAgICAgICAgcGFzc3dvcmQpPw0KCSAgICAgICAgPiA1LiBIb3cg dG8gc2VuZCBtdWx0aXBsZSBtZXNzYWdlcyBpbiBiYXRjaCwgd2l0aGluIGEgc2luZ2xlIG1haWwN CglzZXJ2ZXINCgkgICAgICAgIGNvbm5lY3Rpb24/DQoJICAgICAgICA+IDYuIEhvdyB0byBhY2Nl c3MgYSBtYWlsIHN0b3JlLCBpLmUuIGFuIGluYm94IGZvciByZWFkaW5nIG1haWxzPw0KCSAgICAg ICAgPg0KCSAgICAgICAgPiBUaGUgZmlyc3QgdGhyZWUgcmVxdWlyZSB0aGUgb3B0aW9uIHRvIGNv bmZpZ3VyZSBhIE1pbWVNZXNzYWdlDQoJZGlyZWN0bHksDQoJICAgICAgICBpbnN0ZWFkIG9mIGp1 c3QgY3JlYXRpbmcgb25lIGludGVybmFsbHkgZnJvbSBzaW1wbGlmaWVkIGFyZ3VtZW50cy4NCglU aGVyZSdzIGENCgkgICAgICAgIGxvdCBvZiB1c2VmdWwgZnVuY3Rpb25hbGl0eSBpbiB0aGVyZSwg d2Ugc2hvdWxkIG5vdCB0cnkgdG8gYWJzdHJhY3QNCgl0aGF0IC0NCgkgICAgICAgIGp1c3Qgb2Zm ZXIgc2ltcGxlIGNvbnZlbmllbmNlIG1ldGhvZHMgYXMgc2hvcnRjdXRzLg0KCSAgICAgICAgPg0K CSAgICAgICAgPiBOci4gNCBjYW4gYmUgb3ZlcmNvbWUgYnkgdHdvIG1lY2hhbmlzbXMsIGVpdGhl ciBwYXNzaW5nIGFuDQoJQXV0aGVudGljYXRvcg0KCSAgICAgICAgaW1wbGVtZW50YXRpb24gb24g U2Vzc2lvbi5nZXRJbnN0YW5jZSwgb3IgdXNpbmcgYSBUcmFuc3BvcnQgaW5zdGFuY2UNCgkgICAg ICAgIGV4cGxpY2l0bHksIHBhc3NpbmcgaG9zdCwgdXNlcm5hbWUsIGFuZCBwYXNzd29yZCBvbiB0 aGUgY29ubmVjdA0KCWNhbGwuDQoJICAgICAgICBGdXJ0aGVybW9yZSwgYW4gZXhwbGljaXQgVHJh bnNwb3J0IGluc3RhbmNlIGFsbG93cyB0byBzZW5kIG11bHRpcGxlDQoJbWVzc2FnZXMNCgkgICAg ICAgIHdpdGhpbiBvbmUgY29ubmVjdGlvbiAtIE5yLiA1Lg0KCSAgICAgICAgPg0KCSAgICAgICAg PiBOci4gNiBuZWVkcyB0aGUgb3B0aW9uIHRvIHdvcmsgd2l0aGluIGEgU3RvcmUsIGFzIG9wcG9z ZWQgdG8gYQ0KCVRyYW5zcG9ydA0KCSAgICAgICAgZm9yIHNlbmRpbmcuDQoJICAgICAgIA0KCSAg ICAgICAgSSdtIG5vdCBzdXJlIHdlIG5lZWQgdG8gd29ycnkgYWJvdXQgNiBub3csIHNvIGxvbmcg YXMgd2UgY2FuIHN1cHBvcnQNCglpdA0KCSAgICAgICAgZXZlbnR1YWxseS4gSSB0aGluayBtb3N0 IHBlb3BsZSBhcmUgaW50ZXJlc3RlZCBwcmltYXJpbHkgaW4gc2VuZGluZw0KCW1haWwuDQoJICAg ICAgIA0KCSAgICAgICAgPiBTbyB0aGUgbW9zdCBhcHByb3ByaWF0ZSBtYWlsIHN1cHBvcnQgc2Vl bXMgdG8gbWUgYSBNYWlsVGVtcGxhdGUNCgljbGFzcw0KCSAgICAgICAgdGhhdCdzIGZvY3VzZWQg b24gbWFraW5nIEphdmFNYWlsIHVzYWdlIGVhc2llciByYXRoZXIgdGhhbiBnZW5lcmFsDQoJICAg ICAgICBhYnN0cmFjdGlvbi4gSSBlbnZpc2FnZSB0aGUgZm9sbG93aW5nIGJlYW4gcHJvcGVydGll czoNCgkgICAgICAgID4NCgkgICAgICAgID4gLSB0cmFuc3BvcnRQcm90b2NvbCAoZGVmYXVsdCAi c210cCIpOw0KCSAgICAgICAgPiAtIHN0b3JlUHJvdG9jb2wgKGRlZmF1bHQgInBvcDMiKTsNCgkg ICAgICAgID4gLSB0cmFuc3BvcnRIb3N0IChha2EgIm1haWwuc210cC5ob3N0Iik7DQoJICAgICAg ICA+IC0gc3RvcmVIb3N0IChha2EgIm1haWwucG9wMy5ob3N0Iik7DQoJICAgICAgICA+IC0gdXNl cm5hbWUgKGRlZmF1bHQgZW1wdHkpOw0KCSAgICAgICAgPiAtIHBhc3N3b3JkIChkZWZhdWx0IGVt cHR5KS4NCgkgICAgICAgID4NCgkgICAgICAgID4gVGhlIGZvbGxvd2luZyBtZXRob2RzIGFsbG93 IHRvIHdvcmsgd2l0aGluIGEgcHJvcGVybHkgbWFuYWdlZA0KCVRyYW5zcG9ydCBvcg0KCSAgICAg ICAgU3RvcmUgcmVzb3VyY2UsIGFuYWxvZ291cyB0byBIaWJlcm5hdGVUZW1wbGF0ZSB3aXRoIGEg SGliZXJuYXRlDQoJU2Vzc2lvbjoNCgkgICAgICAgID4NCgkgICAgICAgID4gLSBleGVjdXRlSW5U cmFuc3BvcnQoTWFpbFRyYW5zcG9ydENhbGxiYWNrKTsNCgkgICAgICAgID4gLSBleGVjdXRlSW5T dG9yZShNYWlsU3RvcmVDYWxsYmFjayk7DQoJICAgICAgICA+DQoJICAgICAgICA+IHdpdGggdGhl IGZvbGxvd2luZyBjYWxsYmFjayBpbnRlcmZhY2VzOg0KCSAgICAgICAgPg0KCSAgICAgICAgPiAg IHB1YmxpYyBpbnRlcmZhY2UgTWFpbFRyYW5zcG9ydENhbGxiYWNrKCkgew0KCSAgICAgICAgPiAg ICAgZG9JblRyYW5zcG9ydChTZXNzaW9uIHNlc3Npb24sIFRyYW5zcG9ydCB0cmFuc3BvcnQpOw0K CSAgICAgICAgPiAgIH0NCgkgICAgICAgID4NCgkgICAgICAgID4gICBwdWJsaWMgaW50ZXJmYWNl IE1haWxTdG9yZUNhbGxiYWNrKCkgew0KCSAgICAgICAgPiAgICAgZG9JblN0b3JlKFNlc3Npb24g c2Vzc2lvbiwgU3RvcmUgc3RvcmUpOw0KCSAgICAgICAgPiAgIH0NCgkgICAgICAgID4NCgkgICAg ICAgID4gT2YgY291cnNlLCBsaWtlIHdpdGggSGliZXJuYXRlVGVtcGxhdGUsIHRoZXJlJ3MgYSBs b3Qgb2YNCglvcHBvcnR1bml0eSBmb3INCgkgICAgICAgIGNvbnZlbmllbmNlIG1ldGhvZHMgb24g TWFpbFRlbXBsYXRlLCB0byBhdm9pZCBoYXZpbmcgdG8gaW1wbGVtZW50IGENCgkgICAgICAgIGNh bGxiYWNrOiBqdXN0IGZvciB0cmFuc3BvcnQgdGhvdWdoLCBhcyBzdG9yZS1yZWxhdGVkIHdvcmsg d2lsbA0KCWFsd2F5cyBiZQ0KCSAgICAgICAgY3VzdG9tLg0KCSAgICAgICAgPg0KCSAgICAgICAg PiAtIHNlbmRNZXNzYWdlKE1pbWVNZXNzYWdlKTsNCgkgICAgICAgID4gLSBzZW5kTWVzc2FnZXMo TWltZU1lc3NhZ2VbXSk7DQoJICAgICAgICA+IC0gc2VuZE1lc3NhZ2UoU2ltcGxlTWVzc2FnZSBt ZXNzYWdlKTsNCgkgICAgICAgID4gLSBzZW5kTWVzc2FnZShTdHJpbmcgZnJvbSwgU3RyaW5nIHRv LCBTdHJpbmcgc3ViamVjdCwgU3RyaW5nDQoJdGV4dCk7DQoJICAgICAgICA+IC0gc2VuZE1lc3Nh Z2UoU3RyaW5nIGZyb20sIFN0cmluZyB0bywgU3RyaW5nW10gY2MsIFN0cmluZyBzdWJqZWN0LA0K CVN0cmluZw0KCSAgICAgICAgdGV4dCk7DQoJICAgICAgICA+IC0gZXRjLg0KCSAgICAgICAgPg0K CSAgICAgICAgPiBTbyBzZW5kaW5nIGEgcGxhaW4gbWVzc2FnZSBpcyBzdHJhaWdodGZvcndhcmQ6 IFBvcHVsYXRlIGENCglNYWlsVGVtcGxhdGUNCgkgICAgICAgIHdpdGggdHJhbnNwb3J0SG9zdCwg dXNlcm5hbWUsIGFuZCBwYXNzd29yZCAoZS5nLiBpbiB0aGUgYXBwbGljYXRpb24NCgkgICAgICAg IGNvbnRleHQpLCBwYXNzIGl0IHRvIHlvdXIgYXBwbGljYXRpb24gb2JqZWN0OyBpbnZva2Ugb25l IG9mIHRoZQ0KCXNlbmRNZXNzYWdlDQoJICAgICAgICBtZXRob2RzLiBCdXQgaWYgeW91IG5lZWQg aXQsIHRoZSBmdWxsIHBvd2VyIG9mIEphdmFNYWlsIGlzIGF0IHlvdXINCgkgICAgICAgIGZpbmdl cnRpcHMgaW4gYSBjdXN0b20gY2FsbGJhY2sgaW1wbGVtZW50YXRpb24hDQoJICAgICAgICA+DQoJ ICAgICAgICA+IFByZWNvbmZpZ3VyaW5nIG1haWwgc2V0dGluZ3MgaXMgc3RpbGwgcG9zc2libGU6 IHRoZQ0KCSJ0cmFuc3BvcnRIb3N0IiBpbiB0aGUNCgkgICAgICAgIE1haWxUZW1wbGF0ZSBpbnN0 YW5jZSwgdGhlIG1haWwgYWRkcmVzc2VzIGFuZCBjb250ZW50cyB2aWENCglTaW1wbGVNZXNzYWdl Lg0KCSAgICAgICAgVGhlIGxhdHRlciB3aXRoICJmcm9tIiwgInRvIiwgInN1YmplY3QiLCAidGV4 dCIsIGFuZCBhIGNvcHkNCgljb25zdHJ1Y3RvciBjYW4NCgkgICAgICAgIHNlcnZlIHRoZSByb2xl IG9mIHRoZSBjdXJyZW50IE1haWxTZXR0aW5ncywganVzdCB3aXRob3V0ICJob3N0IjogYQ0KCSAg ICAgICAgc2ltcGxpZmllZCBvYmplY3QgcmVwcmVzZW50YXRpb24gb2YgYSBwbGFpbiBtZXNzYWdl Lg0KCSAgICAgICAgPg0KCSAgICAgICAgPiAgIFNpbXBsZU1lc3NhZ2UgbXNnID0gbmV3IFNpbXBs ZU1lc3NhZ2UocHJlY29uZmlndXJlZE1lc3NhZ2UpOw0KCSAgICAgICAgPiAgIG1zZy5zZXRYWFgo Li4uKTsNCgkgICAgICAgID4gICBtYWlsVGVtcGxhdGUuc2VuZE1lc3NhZ2UobXNnKTsNCgkgICAg ICAgID4NCgkgICAgICAgID4gLS0tLS0NCgkgICAgICAgDQoJICAgICAgICBJIGFncmVlIHJlZ2Fy ZGluZyB1dGlsaXR5IG1ldGhvZHMuIEkgbGlrZSB0aGUgcHJvcG9zZWQgQVBJIG1vZGVsDQoJKGNh bGxiYWNrcw0KCSAgICAgICAgb25seSBmb3IgY3VzdG9tIHN0dWZmKS4NCgkgICAgICAgDQoJICAg ICAgICA+IEkga25vdyB0aGF0IHRoaXMgaXMgY29tcGxldGVseSBkaWZmZXJlbnQgdGhhbiB0aGUg Y3VycmVudCBtYWlsDQoJc3VwcG9ydA0KCSAgICAgICAgbW9kZWwuIFRoZSBtYWluIGRpZmZlcmVu Y2UgaXMgdGhhdCB0aGVyZSBpcyBubyBhdHRlbXB0IHRvIGFic3RyYWN0DQoJSmF2YU1haWwNCgkg ICAgICAgIGNvbXBsZXRlbHksIHJhdGhlciBhIGhlbHBlciBmb3Igc2ltcGxpZmllZCB1c2FnZSBs aWtlDQoJSGliZXJuYXRlVGVtcGxhdGUuIEkNCgkgICAgICAgIGRvbid0IHNlZSBtdWNoIHZhbHVl IGluIGNvbXBsZXRlIGFic3RyYWN0aW9uIGFueXdheTogV2hhdA0KCWFsdGVybmF0aXZlDQoJICAg ICAgICBpbXBsZW1lbnRhdGlvbnMgbWlnaHQgdGhlcmUgYmU/DQoJICAgICAgIA0KCSAgICAgICAg SmF2YU1haWwgaXMgYSBtZXNzeSBBUEkuIFRoZXJlIGFyZSBhbHRlcm5hdGl2ZXMgc3VjaCBhcyB0 aGUgb2xkIFN1bg0KCW1haWwNCgkgICAgICAgIHBhY2thZ2VzLCB3aGljaCBJJ3ZlIHVzZWQgc3Vj Y2Vzc2Z1bGx5LCB3aGljaCBhcmUgdXN1YWxseSBlYXNpZXIgdG8NCgkgICAgICAgIGNvbmZpZ3Vy ZS4gSSBkb24ndCB0aGluayBKYXZhTWFpbCBpcyBhIGdyZWF0IGFic3RyYWN0aW9uLg0KCSAgICAg ICANCgkgICAgICAgID4gUmVnYXJkaW5nIHRlc3RpbmcsIHRoYXQgc2hvdWxkIGJlIGVhc2llciB3 aXRoIHRoZSBhYm92ZSBtb2RlbDoNCglCZXNpZGVzDQoJICAgICAgICBTZXNzaW9uLmdldEluc3Rh bmNlLCBubyBzdGF0aWMgSmF2YU1haWwgbWV0aG9kcyBhcmUgaW52b2x2ZWQsIGFzDQoJVHJhbnNw b3J0DQoJICAgICAgICBhbmQgU3RvcmUgYW5kIGhhbmRsZWQgYXMgaW5zdGFuY2VzLiBUaHVzLCBp ZiB3ZSBpc29sYXRlIHRoZQ0KCSAgICAgICAgU2Vzc2lvbi5nZXRJbnN0YW5jZSBjYWxsIGluIGEg cHJvdGVjdGVkIG1ldGhvZCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8NCgl0ZXN0DQoJICAgICAgICBv dXIgbWFpbCBzdXBwb3J0IHdpdGggbW9jayBvYmplY3RzLCBpLmUuIG1vY2sgc3ViY2xhc3NlcyBv ZiBTZXNzaW9uLA0KCSAgICAgICAgVHJhbnNwb3J0LCBhbmQgU3RvcmUuDQoJICAgICAgIA0KCSAg ICAgICAgU2Vzc2lvbiBpcyBmaW5hbC4gVHJhbnNwb3J0IGlzIG5vdCBhIHJlYWwgb2JqZWN0LS1p ZSB0aGUgbW9zdA0KCWltcG9ydGFudA0KCSAgICAgICAgbWV0aG9kcyBhcmUgc3RhdGljLiBKYXZh TWFpbCBzdWNrcyBmcm9tIGEgdGVzdGFiaWxpdHkgcGVyc3BlY3RpdmUsDQoJc28gSSdtDQoJICAg ICAgICBub3Qgc3VyZSB3ZSBjYW4gYXZvaWQgdGhvc2UgbGltaXRhdGlvbnMgd2l0aG91dCBncmVh dGVyIGFic3RyYWN0aW9uLg0KCSAgICAgICANCgkgICAgICAgID4gVGhlIG1haW4gcmVhc29uIHdo eSBJJ20gdmVyeSBrZWVuIG9uIGltcGxlbWVudGluZyB0aGUgYWJvdmUNCglzdXBwb3J0IGlzDQoJ ICAgICAgICB0aGF0IHRoZSBjdXJyZW50IGFic3RyYWN0aW9uIGlzIHRvbyBzaW1wbGU6IEl0IGxv c2VzIG11Y2ggb2YNCglKYXZhTWFpbCdzDQoJICAgICAgICBwb3dlci4gSU1PLCB0aGUgYmV0dGVy IHRyYWRlb2ZmIGlzIHRvIHdvcmsgd2l0aCBKYXZhTWFpbCBleGNsdXNpdmVseQ0KCWFuZA0KCSAg ICAgICAgbWFrZSBpdHMgdXNhZ2Ugc2ltcGxlci4NCgkgICAgICAgDQoJICAgICAgICBJIHRoaW5r IG1vcmUgcG93ZXIgaXMgbmVlZGVkLiBJJ20gc3RpbGwgbm90IGNvbnZpbmNlZCB0aGF0IHdlIG5l ZWQNCgl0byBiZQ0KCSAgICAgICAgSmF2YU1haWwgb25seSB0byBkZWxpdmVyIHRoYXQuDQoJICAg ICAgIA0KCSAgICAgICAgUmVnYXJkcywNCgkgICAgICAgIFJvZA0KCSAgICAgICANCgkgICAgICAg DQoJICAgICAgIA0KCQ0KCQ0KDQo= |