[MonoDevelop] Goto class patch

Jacob Ilsų Christensen Jacob Ilsų Christensen
Thu, 12 May 2005 21:21:32 +0200


------=_Part_641_30309446.1115925692293
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hi.

I have attached a patch which lets you jump to a class definition. If
you position the cursor on a class name, and hit Ctrl+. (hardcoded for
now) the editor will jump to the definition of that class.

The code is very proof-of-concept-like :-) It definately needs some
refactoring and cleaning up. I just wanted someone to try it out and
firstly see if it works and secondly let me know if this is desired
functionality.

So let me know, if I should add more functionality like methods,
fields, etc. or maybe do thing another way?

/Jacob

------=_Part_641_30309446.1115925692293
Content-Type: text/x-patch; name="GotoClassDefinition.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="GotoClassDefinition.patch"

SW5kZXg6IENvcmUvc3JjL01vbm9EZXZlbG9wLkJhc2UvU2VydmljZXMvUGFyc2VyU2VydmljZS9E
ZWZhdWx0UGFyc2VyU2VydmljZS5jcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDb3JlL3NyYy9Nb25vRGV2ZWxv
cC5CYXNlL1NlcnZpY2VzL1BhcnNlclNlcnZpY2UvRGVmYXVsdFBhcnNlclNlcnZpY2UuY3MJKHJl
dmlzaW9uIDI1MjcpCisrKyBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL1NlcnZpY2VzL1BhcnNl
clNlcnZpY2UvRGVmYXVsdFBhcnNlclNlcnZpY2UuY3MJKHdvcmtpbmcgY29weSkKQEAgLTEyNzAs
NiArMTI3MCwyMCBAQAogCQkJCXJldHVybiBudWxsOwogCQkJfQogCQl9CisKKwkJcHVibGljIElD
bGFzcyBHb3RvRGVmaW5pdGlvblJlc29sdmVyIChQcm9qZWN0IHByb2plY3QsIHN0cmluZyBleHBy
ZXNzaW9uLCBpbnQgY2FyZXRMaW5lTnVtYmVyLCBpbnQgY2FyZXRDb2x1bW4sIHN0cmluZyBmaWxl
TmFtZSwgc3RyaW5nIGZpbGVDb250ZW50KQorCQl7CisJCQl0cnkgeworCQkJCUlQYXJzZXIgcGFy
c2VyID0gR2V0UGFyc2VyIChmaWxlTmFtZSk7CisJCQkJaWYgKHBhcnNlciAhPSBudWxsKSB7CisJ
CQkJCXJldHVybiBwYXJzZXIuR290b0RlZmluaXRpb25SZXNvbHZlciAodGhpcywgcHJvamVjdCwg
ZXhwcmVzc2lvbiwgY2FyZXRMaW5lTnVtYmVyLCBjYXJldENvbHVtbiwgZmlsZU5hbWUsIGZpbGVD
b250ZW50KTsKKwkJCQl9CisJCQkJcmV0dXJuIG51bGw7CisJCQl9IGNhdGNoIHsKKwkJCQlyZXR1
cm4gbnVsbDsKKwkJCX0KKwkJfQorCiAJCQogCQlwdWJsaWMgdm9pZCBOb3RpZnlQYXJzZUluZm9D
aGFuZ2UgKHN0cmluZyBmaWxlLCBDbGFzc1VwZGF0ZUluZm9ybWF0aW9uIHJlcywgUHJvamVjdCBw
cm9qZWN0KQogCQl7CkluZGV4OiBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL1NlcnZpY2VzL1Bh
cnNlclNlcnZpY2UvSVBhcnNlclNlcnZpY2UuY3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ29yZS9zcmMvTW9u
b0RldmVsb3AuQmFzZS9TZXJ2aWNlcy9QYXJzZXJTZXJ2aWNlL0lQYXJzZXJTZXJ2aWNlLmNzCShy
ZXZpc2lvbiAyNTI3KQorKysgQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9TZXJ2aWNlcy9QYXJz
ZXJTZXJ2aWNlL0lQYXJzZXJTZXJ2aWNlLmNzCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3
IEBACiAJCSAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgZmlsZU5hbWUsCiAJCSAgICAgICAg
ICAgICAgICAgICAgICBzdHJpbmcgZmlsZUNvbnRlbnQpOwogCQlzdHJpbmcgTW9ub2RvY1Jlc29s
dmVyIChQcm9qZWN0IHByb2plY3QsIHN0cmluZyBleHByZXNzaW9uLCBpbnQgY2FyZXRMaW5lTnVt
YmVyLCBpbnQgY2FyZXRDb2x1bW4sIHN0cmluZyBmaWxlTmFtZSwgc3RyaW5nIGZpbGVDb250ZW50
KTsKKwkJSUNsYXNzIEdvdG9EZWZpbml0aW9uUmVzb2x2ZXIgKFByb2plY3QgcHJvamVjdCwgc3Ry
aW5nIGV4cHJlc3Npb24sIGludCBjYXJldExpbmVOdW1iZXIsIGludCBjYXJldENvbHVtbiwgc3Ry
aW5nIGZpbGVOYW1lLCBzdHJpbmcgZmlsZUNvbnRlbnQpOwogCQlBcnJheUxpc3QgSXNBc1Jlc29s
dmUgKFByb2plY3QgcHJvamVjdCwgc3RyaW5nIGV4cHJlc3Npb24sIGludCBjYXJldExpbmVOdW1i
ZXIsIGludCBjYXJldENvbHVtbiwgc3RyaW5nIGZpbGVOYW1lLCBzdHJpbmcgZmlsZUNvbnRlbnQp
OwogCQlBcnJheUxpc3QgQ3RybFNwYWNlKElQYXJzZXJTZXJ2aWNlIHBhcnNlclNlcnZpY2UsIFBy
b2plY3QgcHJvamVjdCwgaW50IGNhcmV0TGluZSwgaW50IGNhcmV0Q29sdW1uLCBzdHJpbmcgZmls
ZU5hbWUpOwogCQlzdHJpbmcgTG9hZEFzc2VtYmx5RnJvbUdhYyAoc3RyaW5nIG5hbWUpOwpJbmRl
eDogQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9JbnRlcm5hbC9QYXJzZXIvSVBhcnNlci5jcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBDb3JlL3NyYy9Nb25vRGV2ZWxvcC5CYXNlL0ludGVybmFsL1BhcnNlci9J
UGFyc2VyLmNzCShyZXZpc2lvbiAyNTI3KQorKysgQ29yZS9zcmMvTW9ub0RldmVsb3AuQmFzZS9J
bnRlcm5hbC9QYXJzZXIvSVBhcnNlci5jcwkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDYgKzE0Niw4
IEBACiAKIAkJc3RyaW5nIE1vbm9kb2NSZXNvbHZlciAoSVBhcnNlclNlcnZpY2UgcGFyc2VyU2Vy
dmljZSwgUHJvamVjdF8gcHJvamVjdCwgc3RyaW5nIGV4cHJlc3Npb24sIGludCBjYXJldExpbmVO
dW1iZXIsIGludCBjYXJldENvbHVtbiwgc3RyaW5nIGZpbGVOYW1lLCBzdHJpbmcgZmlsZUNvbnRl
bnQpOwogCisJCUlDbGFzcyBHb3RvRGVmaW5pdGlvblJlc29sdmVyIChJUGFyc2VyU2VydmljZSBw
YXJzZXJTZXJ2aWNlLCBQcm9qZWN0XyBwcm9qZWN0LCBzdHJpbmcgZXhwcmVzc2lvbiwgaW50IGNh
cmV0TGluZU51bWJlciwgaW50IGNhcmV0Q29sdW1uLCBzdHJpbmcgZmlsZU5hbWUsIHN0cmluZyBm
aWxlQ29udGVudCk7CisKIAkJQXJyYXlMaXN0IElzQXNSZXNvbHZlIChJUGFyc2VyU2VydmljZSBw
YXJzZXJTZXJ2aWNlLCBQcm9qZWN0XyBwcm9qZWN0LCBzdHJpbmcgZXhwcmVzc2lvbiwgaW50IGNh
cmV0TGluZU51bWJlciwgaW50IGNhcmV0Q29sdW1uLCBzdHJpbmcgZmlsZU5hbWUsIHN0cmluZyBm
aWxlQ29udGVudCk7CiAJCQogCQlBcnJheUxpc3QgQ3RybFNwYWNlKElQYXJzZXJTZXJ2aWNlIHBh
cnNlclNlcnZpY2UsIFByb2plY3RfIHByb2plY3QsIGludCBjYXJldExpbmUsIGludCBjYXJldENv
bHVtbiwgc3RyaW5nIGZpbGVOYW1lKTsKSW5kZXg6IENvcmUvc3JjL0FkZElucy9EaXNwbGF5Qmlu
ZGluZ3MvU291cmNlRWRpdG9yL0d1aS9Tb3VyY2VFZGl0b3JWaWV3LmNzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IENvcmUvc3JjL0FkZElucy9EaXNwbGF5QmluZGluZ3MvU291cmNlRWRpdG9yL0d1aS9Tb3VyY2VF
ZGl0b3JWaWV3LmNzCShyZXZpc2lvbiAyNTI3KQorKysgQ29yZS9zcmMvQWRkSW5zL0Rpc3BsYXlC
aW5kaW5ncy9Tb3VyY2VFZGl0b3IvR3VpL1NvdXJjZUVkaXRvclZpZXcuY3MJKHdvcmtpbmcgY29w
eSkKQEAgLTMyNyw2ICszMjcsMTMgQEAKIAkJCQkJU2Nyb2xsRG93biAoKTsKIAkJCQkJcmV0dXJu
IHRydWU7CiAJCQkJfQorCisJCQkJc3dpdGNoICgoY2hhcilrZXkpCisJCQkJeworCQkJCWNhc2Ug
Jy4nOgorCQkJCSAgICBHb3RvRGVmaW5pdGlvbigpOworCQkJCSAgICByZXR1cm4gdHJ1ZTsKKwkJ
CQl9CiAJCQkJYnJlYWs7CiAJCQl9CiAKQEAgLTY1OCw2ICs2NjUsMTA4IEBACiAJCQkJcmV0dXJu
IFN5c3RlbS5DaGFyLklzV2hpdGVTcGFjZSAodGV4dFswXSkgfHwgdGV4dFswXSA9PSAnLyc7CiAJ
CQlyZXR1cm4gdHJ1ZTsKIAkJfQorCSAgICAKKwkgICAgdm9pZCBHb3RvRGVmaW5pdGlvbigpCisJ
ICAgIHsKKwkJVGV4dEl0ZXIgaW5zZXJ0SXRlciA9IGJ1Zi5HZXRJdGVyQXRNYXJrIChidWYuSW5z
ZXJ0TWFyayk7CisJCVRleHRJdGVyIHRyaWdnZXJJdGVyID0gVGV4dEl0ZXIuWmVybzsKKworCQlD
b25zb2xlLldyaXRlTGluZShpbnNlcnRJdGVyLlRvU3RyaW5nKCkpOworCisJCXRyeQorCQl7CisJ
CSAgICBkbworCQkgICAgeworCQkJc3dpdGNoIChpbnNlcnRJdGVyLkNoYXJbMF0pCisJCQl7CisJ
CQljYXNlICcgJzoKKwkJCWNhc2UgJ1x0JzoKKwkJCWNhc2UgJy4nOgorCQkJY2FzZSAnKCc6CisJ
CQljYXNlICdbJzoKKwkJCSAgICB0cmlnZ2VySXRlciA9IGluc2VydEl0ZXI7CisJCQkgICAgYnJl
YWs7CisJCQl9CisJCQlpZiAoIXRyaWdnZXJJdGVyLkVxdWFscyAoVGV4dEl0ZXIuWmVybykpCisJ
CQl7CisJCQkgICAgYnJlYWs7CisJCQl9CisJCQlpbnNlcnRJdGVyLkZvcndhcmRDaGFyKCk7CisJ
CSAgICB9CisJCSAgICB3aGlsZSAoaW5zZXJ0SXRlci5MaW5lT2Zmc2V0ICE9IDApOworCisJCSAg
ICB0cmlnZ2VySXRlci5Gb3J3YXJkQ2hhcigpOworCQl9CisJCWNhdGNoCisJCXsKKwkJICAgIHJl
dHVybjsKKwkJfQorCQkKKwkJaW5zZXJ0SXRlciA9IHRyaWdnZXJJdGVyOworCQkJCQorCQlJUGFy
c2VyU2VydmljZSBwYXJzZXIgPSAoSVBhcnNlclNlcnZpY2UpU2VydmljZU1hbmFnZXIuR2V0U2Vy
dmljZSAodHlwZW9mIChJUGFyc2VyU2VydmljZSkpOworCQlzdHJpbmcgZmlsZU5hbWUgPSBQYXJl
bnRFZGl0b3IuRGlzcGxheUJpbmRpbmcuQ29udGVudE5hbWU7CisKKwkJSUV4cHJlc3Npb25GaW5k
ZXIgZXhwcmVzc2lvbkZpbmRlciA9IHBhcnNlci5HZXRFeHByZXNzaW9uRmluZGVyKGZpbGVOYW1l
KTsKKwkJc3RyaW5nIGV4cHJlc3Npb24gICAgPSBleHByZXNzaW9uRmluZGVyID09IG51bGwgPyBU
ZXh0VXRpbGl0aWVzLkdldEV4cHJlc3Npb25CZWZvcmVPZmZzZXQodGhpcywgaW5zZXJ0SXRlci5P
ZmZzZXQpIDogZXhwcmVzc2lvbkZpbmRlci5GaW5kRXhwcmVzc2lvbihidWYuR2V0VGV4dChidWYu
U3RhcnRJdGVyLCBpbnNlcnRJdGVyLCB0cnVlKSwgaW5zZXJ0SXRlci5PZmZzZXQgLSAyKTsKKwor
CQlpZiAoZXhwcmVzc2lvbiA9PSBudWxsKQorCQl7CisJCSAgICByZXR1cm47CisJCX0KKworCQlD
b25zb2xlLldyaXRlTGluZSgiR29pbmcgdG8gZGVmaW5pdGlvbiBvZjogIiArIGV4cHJlc3Npb24p
OyAKKworCQlmb3VuZENsYXNzID0gcGFyc2VyLkdvdG9EZWZpbml0aW9uUmVzb2x2ZXIgKFBhcmVu
dEVkaXRvci5EaXNwbGF5QmluZGluZy5Qcm9qZWN0LCBleHByZXNzaW9uLCBpbnNlcnRJdGVyLkxp
bmUgKyAxLCBpbnNlcnRJdGVyLkxpbmVPZmZzZXQgKyAxLCBmaWxlTmFtZSwgYnVmLlRleHQpOwor
CisKKwkJaWYgKGZvdW5kQ2xhc3MgPT0gbnVsbCkKKwkJeworCQkgICAgcmV0dXJuOworCQl9CisK
KwkJLy8gQ2xhc3NlcyBkZWZpbmVkIGluIGFzc2VtYmxpZXMgd2lsbCBoYXZlIGEgbnVsbCBSZWdp
b24KKwkJaWYgKGZvdW5kQ2xhc3MuUmVnaW9uID09IG51bGwpCisJCXsKKwkJICAgIHJldHVybjsK
KwkJfQorCisJCUFjdGl2YXRlSXRlbShmb3VuZENsYXNzLlJlZ2lvbi5GaWxlTmFtZSk7CQkgICAg
CisJICAgIH0KKwkgICAgCisJICAgIElDbGFzcyBmb3VuZENsYXNzOworCisJICAgIHB1YmxpYyB2
b2lkIEFjdGl2YXRlSXRlbSAoc3RyaW5nIGZpbGVOYW1lKQorCSAgICB7CisJCUlBc3luY09wZXJh
dGlvbiBvcCA9IFJ1bnRpbWUuRmlsZVNlcnZpY2UuT3BlbkZpbGUgKGZpbGVOYW1lKTsKKwkJb3Au
Q29tcGxldGVkICs9IG5ldyBPcGVyYXRpb25IYW5kbGVyIChPbkZpbGVPcGVuZWQpOworCSAgICB9
CisJICAgIAorCSAgICBwcml2YXRlIHZvaWQgT25GaWxlT3BlbmVkIChJQXN5bmNPcGVyYXRpb24g
b3ApCisJICAgIHsKKwkJaWYgKCFvcC5TdWNjZXNzKQorCQl7CisJCSAgICByZXR1cm47CisJCX0K
KwkJCisKKwkJaW50IGxpbmUgPSBmb3VuZENsYXNzLlJlZ2lvbi5CZWdpbkxpbmU7CisJCQorCQlz
dHJpbmcgZmlsZSA9IGZvdW5kQ2xhc3MuUmVnaW9uLkZpbGVOYW1lOworCQkKKwkJSVdvcmtiZW5j
aFdpbmRvdyB3aW5kb3cgPSBSdW50aW1lLkZpbGVTZXJ2aWNlLkdldE9wZW5GaWxlIChmaWxlKTsK
KwkJaWYgKHdpbmRvdyA9PSBudWxsKQorCQl7CisJCSAgICByZXR1cm47CisJCX0KKwkJCisJCUlW
aWV3Q29udGVudCBjb250ZW50ID0gd2luZG93LlZpZXdDb250ZW50OworCQlpZiAoY29udGVudCBp
cyBJUG9zaXRpb25hYmxlKQorCQl7CisJCSAgICAoKElQb3NpdGlvbmFibGUpY29udGVudCkuSnVt
cFRvIChNYXRoLk1heCAoMCwgbGluZSksIDApOworCQl9CisJICAgIH0KKwkgICAgCSAgICAKICNl
bmRyZWdpb24KIAl9CiB9CkluZGV4OiBDb3JlL3NyYy9BZGRJbnMvQmFja2VuZEJpbmRpbmdzL1ZC
TmV0QmluZGluZy9QYXJzZXIvUGFyc2VyLmNzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIENvcmUvc3JjL0FkZElu
cy9CYWNrZW5kQmluZGluZ3MvVkJOZXRCaW5kaW5nL1BhcnNlci9QYXJzZXIuY3MJKHJldmlzaW9u
IDI1MjcpCisrKyBDb3JlL3NyYy9BZGRJbnMvQmFja2VuZEJpbmRpbmdzL1ZCTmV0QmluZGluZy9Q
YXJzZXIvUGFyc2VyLmNzCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksOSArMTQ5LDEyIEBACiAJCXsK
IAkJCXJldHVybiBuZXcgUmVzb2x2ZXIgKHByb2plY3QpLk1vbm9kb2NSZXNvbHZlciAocGFyc2Vy
U2VydmljZSwgZXhwcmVzc2lvbiwgY2FyZXRMaW5lTnVtYmVyLCBjYXJldENvbHVtbiwgZmlsZU5h
bWUsIGZpbGVDb250ZW50KTsKIAkJfQotCQkKLQ0KLQkJDQorCisJCXB1YmxpYyBJQ2xhc3MgR290
b0RlZmluaXRpb25SZXNvbHZlciAoSVBhcnNlclNlcnZpY2UgcGFyc2VyU2VydmljZSwgUHJvamVj
dCBwcm9qZWN0LCBzdHJpbmcgZXhwcmVzc2lvbiwgaW50IGNhcmV0TGluZU51bWJlciwgaW50IGNh
cmV0Q29sdW1uLCBzdHJpbmcgZmlsZU5hbWUsIHN0cmluZyBmaWxlQ29udGVudCkKKwkJeworCQkg
ICAgcmV0dXJuIG51bGw7CisJCX0KKwogCQkvLy8vLy8vLy8gSVBhcnNlciBJbnRlcmZhY2UgRU5E
DQogCX0NCiB9DQpJbmRleDogQ29yZS9zcmMvQWRkSW5zL0JhY2tlbmRCaW5kaW5ncy9DU2hhcnBC
aW5kaW5nL1BhcnNlci9QYXJzZXIuY3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ29yZS9zcmMvQWRkSW5zL0Jh
Y2tlbmRCaW5kaW5ncy9DU2hhcnBCaW5kaW5nL1BhcnNlci9QYXJzZXIuY3MJKHJldmlzaW9uIDI1
MjcpCisrKyBDb3JlL3NyYy9BZGRJbnMvQmFja2VuZEJpbmRpbmdzL0NTaGFycEJpbmRpbmcvUGFy
c2VyL1BhcnNlci5jcwkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCwxMyBAQAogCQl7CiAJ
CQlyZXR1cm4gbmV3IFJlc29sdmVyIChwcm9qZWN0KS5Nb25vZG9jUmVzb2x2ZXIgKHBhcnNlclNl
cnZpY2UsIGV4cHJlc3Npb24sIGNhcmV0TGluZU51bWJlciwgY2FyZXRDb2x1bW4sIGZpbGVOYW1l
LCBmaWxlQ29udGVudCk7CiAJCX0KKworCQlwdWJsaWMgSUNsYXNzIEdvdG9EZWZpbml0aW9uUmVz
b2x2ZXIgKElQYXJzZXJTZXJ2aWNlIHBhcnNlclNlcnZpY2UsIFByb2plY3QgcHJvamVjdCwgc3Ry
aW5nIGV4cHJlc3Npb24sIGludCBjYXJldExpbmVOdW1iZXIsIGludCBjYXJldENvbHVtbiwgc3Ry
aW5nIGZpbGVOYW1lLCBzdHJpbmcgZmlsZUNvbnRlbnQpCisJCXsKKwkJCXJldHVybiBuZXcgUmVz
b2x2ZXIgKHByb2plY3QpLkdvdG9EZWZpbml0aW9uUmVzb2x2ZXIgKHBhcnNlclNlcnZpY2UsIGV4
cHJlc3Npb24sIGNhcmV0TGluZU51bWJlciwgY2FyZXRDb2x1bW4sIGZpbGVOYW1lLCBmaWxlQ29u
dGVudCk7CisJCX0KKworCiAJCS8vLy8vLy8vLyBJUGFyc2VyIEludGVyZmFjZSBFTkQKIAl9CiB9
CkluZGV4OiBDb3JlL3NyYy9BZGRJbnMvQmFja2VuZEJpbmRpbmdzL0NTaGFycEJpbmRpbmcvUGFy
c2VyL1Jlc29sdmVyLmNzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIENvcmUvc3JjL0FkZElucy9CYWNrZW5kQmlu
ZGluZ3MvQ1NoYXJwQmluZGluZy9QYXJzZXIvUmVzb2x2ZXIuY3MJKHJldmlzaW9uIDI1MjcpCisr
KyBDb3JlL3NyYy9BZGRJbnMvQmFja2VuZEJpbmRpbmdzL0NTaGFycEJpbmRpbmcvUGFyc2VyL1Jl
c29sdmVyLmNzCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNiArMTc4LDI4IEBACiAJCQlDb25zb2xl
LldyaXRlTGluZSAocmV0Q2xhc3MuRnVsbHlRdWFsaWZpZWROYW1lKTsKIAkJCXJldHVybiAiVDoi
ICsgcmV0Q2xhc3MuRnVsbHlRdWFsaWZpZWROYW1lOwogCQl9CisKKwkJcHVibGljIElDbGFzcyBH
b3RvRGVmaW5pdGlvblJlc29sdmVyIChJUGFyc2VyU2VydmljZSBwYXJzZXJTZXJ2aWNlLCBzdHJp
bmcgZXhwcmVzc2lvbiwgaW50IGNhcmV0TGluZU51bWJlciwgaW50IGNhcmV0Q29sdW1uLCBzdHJp
bmcgZmlsZU5hbWUsIHN0cmluZyBmaWxlQ29udGVudCkgCisJCXsKKwkJCWlmIChleHByZXNzaW9u
ID09IG51bGwpIHsKKwkJCQlyZXR1cm4gbnVsbDsKKwkJCX0KKwkJCWV4cHJlc3Npb24gPSBleHBy
ZXNzaW9uLlRyaW1TdGFydCAobnVsbCk7CisJCQlpZiAoZXhwcmVzc2lvbiA9PSAiIikgeworCQkJ
CXJldHVybiBudWxsOworCQkJfQorCisJCQlJUmV0dXJuVHlwZSByZXRUeXBlID0gaW50ZXJuYWxS
ZXNvbHZlIChwYXJzZXJTZXJ2aWNlLCBleHByZXNzaW9uLCBjYXJldExpbmVOdW1iZXIsIGNhcmV0
Q29sdW1uLCBmaWxlTmFtZSwgZmlsZUNvbnRlbnQpOworCisJCQlJQ2xhc3MgcmV0Q2xhc3MgPSBw
YXJzZXJTZXJ2aWNlLlNlYXJjaFR5cGUgKHByb2plY3QsIHJldFR5cGUuRnVsbHlRdWFsaWZpZWRO
YW1lLCBudWxsLCBjdSk7CisJCQlpZiAocmV0Q2xhc3MgPT0gbnVsbCkgeworCQkJCUNvbnNvbGUu
V3JpdGVMaW5lICgiUmV0Y2xhc3Mgd2FzIG51bGwiKTsKKwkJCQlyZXR1cm4gbnVsbDsKKwkJCX0K
KworCQkJcmV0dXJuIHJldENsYXNzOworCQl9CisKIAkJCiAJCXB1YmxpYyBSZXNvbHZlUmVzdWx0
IFJlc29sdmUoSVBhcnNlclNlcnZpY2UgcGFyc2VyU2VydmljZSwgc3RyaW5nIGV4cHJlc3Npb24s
IGludCBjYXJldExpbmVOdW1iZXIsIGludCBjYXJldENvbHVtbiwgc3RyaW5nIGZpbGVOYW1lLCBz
dHJpbmcgZmlsZUNvbnRlbnQpIAogCQl7Cg==
------=_Part_641_30309446.1115925692293--