[Mono-list] VisualBasic.FileSystem

danielcampos danielcampos@myway.com
Fri, 17 Jan 2003 12:07:26 -0500 (EST)



--MYWAYBOUNDARY_000__83a7c86491a5072c40e4b63f95f63cd4
Content-Type: multipart/alternative; boundary="MYWAYBOUNDARY_001__f581cc4b5f431e8387b1cc9b500ca10b";


--MYWAYBOUNDARY_001__f581cc4b5f431e8387b1cc9b500ca10b
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

 Hi Again!

 I've been adding some code to the actual FileSystem.cs
, into Microsoft.VisualBasic dll. I've took original
FileSystem.cs from CVS ( all functions are stubs),
and added functions that I had already implemented :


- ChDir --> OK
- CurDir --> OK, but overloaded ChDir(System.Char Drive)
- MkDir --> OK
- RmDir --> OK
- FileCopy --> OK
- FileDateTime --> OK
- Kill --> OK
- FileOpen --> OK for Append, Input and Output modes, otherwise "Not Implemented exception"
- FileClose --> OK
- LineInput --> OK , but needs more testing
- FreeFile --> OK
- EOF --> OK


Here I send you the modified file

Greetings






_______________________________________________
No banners. No pop-ups. No kidding.
Introducing My Way - http://www.myway.com

--MYWAYBOUNDARY_001__f581cc4b5f431e8387b1cc9b500ca10b
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: 7bit

 Hi Again!<br><br> I've been adding some code to the actual FileSystem.cs<br>, into Microsoft.VisualBasic dll. I've took original<br>FileSystem.cs from CVS ( all functions are stubs),<br>and added functions that I had already implemented :<br><br><br>- ChDir --> OK<br>- CurDir --> OK, but overloaded ChDir(System.Char Drive)<br>- MkDir --> OK<br>- RmDir --> OK<br>- FileCopy --> OK<br>- FileDateTime --> OK<br>- Kill --> OK<br>- FileOpen --> OK for Append, Input and Output modes, otherwise "Not Implemented exception"<br>- FileClose --> OK<br>- LineInput --> OK , but needs more testing<br>- FreeFile --> OK<br>- EOF --> OK<br><br><br>Here I send you the modified file<br><br>Greetings<br><br><br><br><br><p><hr><font size=2 face=verdana><b>No banners. No pop-ups. No kidding.</b><br>Introducing My Way - <a href=http://www.myway.com target=_blank>http://www.myway.com</a></font>

--MYWAYBOUNDARY_001__f581cc4b5f431e8387b1cc9b500ca10b--

--MYWAYBOUNDARY_000__83a7c86491a5072c40e4b63f95f63cd4
Content-Type: application/octet-stream; name="FIleSystem.cs";
Content-Disposition: attachment; filename="FIleSystem.cs"
Content-Transfer-Encoding: base64

Ly8NCi8vIEZpbGVTeXN0ZW0uY3MNCi8vDQovLyBBdXRob3I6DQovLyAgIA0KLy8gRGFuaWVsIENh
bXBvcyAoIGRhbmllbGNhbXBvc0BteXdheS5jb20gKQ0KLy8gDQovLw0KDQp1c2luZyBTeXN0ZW07
DQp1c2luZyBTeXN0ZW0uSU87DQpuYW1lc3BhY2UgTWljcm9zb2Z0LlZpc3VhbEJhc2ljIA0Kew0K
ICAgICAgICBbTWljcm9zb2Z0LlZpc3VhbEJhc2ljLkNvbXBpbGVyU2VydmljZXMuU3RhbmRhcmRN
b2R1bGVBdHRyaWJ1dGVdIA0KICAgICAgICBzZWFsZWQgcHVibGljIGNsYXNzIEZpbGVTeXN0ZW0g
ew0KICAgICAgICAgICAgICAgIHByaXZhdGUgc3RhdGljIFN5c3RlbS5JTy5GaWxlU3RyZWFtW10g
RkhhbmRsZT1uZXcgRmlsZVN0cmVhbVsyNTVdOw0KICAgICAgICAgICAgICAgIC8vIERlY2xhcmF0
aW9ucw0KICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdG9ycw0KICAgICAgICAgICAgICAgIC8v
IFByb3BlcnRpZXMNCiAgICAgICAgICAgICAgICAvLyBNZXRob2RzDQogICAgICAgICAgICAgICAg
W01vbm9UT0RPKCJOZWVkcyB0ZXN0aW5nIildDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRp
YyB2b2lkIENoRGlyIChTeXN0ZW0uU3RyaW5nIFBhdGgpIA0KICAgICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAJaWYgKCAoUGF0aD09IiIpIHx8IChQYXRoPT1udWxsKSkNCiAgICAgICAg
ICAgICAgICAJCXRocm93IG5ldyBTeXN0ZW0uQXJndW1lbnRFeGNlcHRpb24oIlBhdGggaXMgZW1w
dHkiKTsgDQogICAgICAgICAgICAgICAgCXRyeQ0KICAgICAgICAgICAgICAgIAl7DQogICAgICAg
ICAgICAgICAgCQlFbnZpcm9ubWVudC5DdXJyZW50RGlyZWN0b3J5PVBhdGg7DQogICAgICAgICAg
ICAgICAgCX0NCiAgICAgICAgICAgICAgICAJY2F0Y2ggKCBFeGNlcHRpb24gZSl7IHRocm93IG5l
dyBTeXN0ZW0uSU8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uICgiSW52YWxpZCBkcml2ZSBpcyBzcGVj
aWZpZWQsIG9yIGRyaXZlIGlzIHVuYXZhaWxhYmxlIik7fQ0KICAgICAgICAgICAgICAgIAkNCiAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgW01vbm9U
T0RPXQ0KICAgICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBDaERyaXZlIChTeXN0ZW0u
Q2hhciBEcml2ZSkgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7IH0NCiAg
ICAgICAgICAgICAgICBbTW9ub1RPRE9dDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyB2
b2lkIENoRHJpdmUgKFN5c3RlbS5TdHJpbmcgRHJpdmUpIHsgdGhyb3cgbmV3IE5vdEltcGxlbWVu
dGVkRXhjZXB0aW9uICgpOyB9DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgW01v
bm9UT0RPKCJOZWVkcyB0ZXN0aW5nIildDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyBT
eXN0ZW0uU3RyaW5nIEN1ckRpciAoKSANCiAgICAgICAgICAgICAgICB7IA0KICAgICAgICAgICAg
ICAgIAlyZXR1cm4gRW52aXJvbm1lbnQuQ3VycmVudERpcmVjdG9yeTsNCiAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgW01vbm9UT0RPXQ0KICAgICAg
ICAgICAgICAgIHB1YmxpYyBzdGF0aWMgU3lzdGVtLlN0cmluZyBDdXJEaXIgKFN5c3RlbS5DaGFy
IERyaXZlKSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0KICAgICAg
ICAgICAgICAgIFtNb25vVE9ET10NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIFN5c3Rl
bS5TdHJpbmcgRGlyICgpIHsgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOyB9
DQogICAgICAgICAgICAgICAgW01vbm9UT0RPXQ0KICAgICAgICAgICAgICAgIHB1YmxpYyBzdGF0
aWMgU3lzdGVtLlN0cmluZyBEaXIgKFN5c3RlbS5TdHJpbmcgUGF0aG5hbWUsIFtTeXN0ZW0uUnVu
dGltZS5JbnRlcm9wU2VydmljZXMuT3B0aW9uYWxdIFtTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVm
YXVsdFZhbHVlKDApXSBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuRmlsZUF0dHJpYnV0ZSBBdHRyaWJ1
dGVzKSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0KICAgICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgIFtNb25vVE9ETygiTmVlZHMgdGVzdGluZyIpXQ0KICAg
ICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBNa0RpciAoU3lzdGVtLlN0cmluZyBQYXRo
KSANCiAgICAgICAgICAgICAgICB7IA0KICAgICAgICAgICAgCQkvLyBpZiBhIGZpbGUgY2FsbGVk
IGxpa2UgJ3BhdGgnIGRvZXMgZXhpc3QNCiAgICAgICAgICAgIAkJLy8gbm8gZXhjZXB0aW9uIGlz
IGdlbmVyYXRlZCB1c2luZyAubmV0DQogICAgICAgICAgICAJCS8vIEEgbGl0dGxlIGV4dHJhbmdl
Pw0KICAgICAgICAgICAgCQlpZiAoUGF0aD09bnVsbCB8fCBQYXRoPT0iIikNCiAgICAgICAgICAg
IAkJew0KICAgICAgICAgICAgCQkJdGhyb3cgbmV3IFN5c3RlbS5Bcmd1bWVudEV4Y2VwdGlvbigp
OyANCiAgICAgICAgICAgIAkJfQ0KICAgICAgICAgICAgCQllbHNlDQogICAgICAgICAgICAJCXsN
CiAgICAgICAgICAgIAkJCWlmIChTeXN0ZW0uSU8uRGlyZWN0b3J5LkV4aXN0cyAoUGF0aCkpDQog
ICAgICAgICAgICAJCQkJdGhyb3cgbmV3IFN5c3RlbS5JTy5JT0V4Y2VwdGlvbigiRGlyZWN0b3J5
IGFscmVhZHkgZXhpc3RzIik7DQogICAgICAgICAgICAJCQllbHNlDQogICAgICAgICAgICAJCQkJ
U3lzdGVtLklPLkRpcmVjdG9yeS5DcmVhdGVEaXJlY3RvcnkoUGF0aCk7DQogICAgICAgICAgICAJ
CX0NCiAgICAgICAgICAgIAl9DQogICAgICAgICAgICAJDQogICAgICAgICAgICAJW01vbm9UT0RP
KCJOZWVkcyB0ZXN0aW5nIildDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIFJt
RGlyIChTeXN0ZW0uU3RyaW5nIFBhdGgpIA0KICAgICAgICAgICAgICAgIHsgDQogICAgICAgICAg
ICAgICAgCVN5c3RlbS5JTy5EaXJlY3RvcnkuRGVsZXRlKFBhdGgpOyANCiAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgW01vbm9UT0RPKCJOZWVkcyB0
ZXN0aW5nIildDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIEZpbGVDb3B5IChT
eXN0ZW0uU3RyaW5nIFNvdXJjZSwgU3lzdGVtLlN0cmluZyBEZXN0aW5hdGlvbikgDQogICAgICAg
ICAgICAgICAgeyANCiAgICAgICAgICAgICAgICAJLy8gdXNpbmcgVkIsIGZpbGVjb3B5IGFsd2F5
cyBvdmVyd3JpdGVzIERlc3RpbmF0aW9uDQogICAgICAgICAgICAgICAgCVN5c3RlbS5JTy5GaWxl
LkNvcHkoU291cmNlLERlc3RpbmF0aW9uLHRydWUpOyANCiAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgW01vbm9UT0RPKCJOZWVkcyB0ZXN0aW5nIild
DQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyBTeXN0ZW0uRGF0ZVRpbWUgRmlsZURhdGVU
aW1lIChTeXN0ZW0uU3RyaW5nIFBhdGhOYW1lKSANCiAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgCS8vIEEgYmV0dGVyIGV4Y2VwdGlvbiBoYW5kbGluZyBpcyBuZWVkZWQgOiBleGNl
cHRpb25zDQogICAgICAgICAgICAgICAgCS8vIGFyZSBub3QgdGhlIHNhbWUgYXMgJ0dldExhc3RX
cml0ZVRpbWUnDQogICAgICAgICAgICAgICAgIAlyZXR1cm4gU3lzdGVtLklPLkZpbGUuR2V0TGFz
dFdyaXRlVGltZSAoUGF0aE5hbWUpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICANCiAgICAgICAgICAgICAgICBbTW9ub1RPRE9dDQogICAgICAgICAgICAgICAgcHVibGljIHN0
YXRpYyBTeXN0ZW0uSW50NjQgRmlsZUxlbiAoU3lzdGVtLlN0cmluZyBQYXRoTmFtZSkgeyAgdGhy
b3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOyB9DQogICAgICAgICAgICAgICAgW01v
bm9UT0RPXQ0KICAgICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgTWljcm9zb2Z0LlZpc3VhbEJh
c2ljLkZpbGVBdHRyaWJ1dGUgR2V0QXR0ciAoU3lzdGVtLlN0cmluZyBQYXRoTmFtZSkgeyB0aHJv
dyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7IH0NCiAgICAgICAgICAgICAgICANCiAg
ICAgICAgICAgICAgICBbTW9ub1RPRE8oIk5lZWRzIHRlc3RpbmciKV0NCiAgICAgICAgICAgICAg
ICBwdWJsaWMgc3RhdGljIHZvaWQgS2lsbCAoU3lzdGVtLlN0cmluZyBQYXRoTmFtZSkgDQogICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIAlpZiAoIVN5c3RlbS5JTy5GaWxlLkV4aXN0
cyhQYXRoTmFtZSkpDQogICAgICAgICAgICAgICAgCQl0aHJvdyBuZXcgU3lzdGVtLklPLkZpbGVO
b3RGb3VuZEV4Y2VwdGlvbigpOw0KICAgICAgICAgICAgICAgIAllbHNlDQogICAgICAgICAgICAg
ICAgCQlTeXN0ZW0uSU8uRmlsZS5EZWxldGUoUGF0aE5hbWUpOw0KICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBbTW9ub1RPRE9dDQogICAgICAgICAg
ICAgICAgcHVibGljIHN0YXRpYyB2b2lkIFNldEF0dHIgKFN5c3RlbS5TdHJpbmcgUGF0aE5hbWUs
IE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5GaWxlQXR0cmlidXRlIEF0dHJpYnV0ZXMpIHsgdGhyb3cg
bmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOyB9DQogICAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgICBbTW9ub1RPRE8oIk5lZWRzIHRlc3RpbmciKV0NCiAgICAgICAgICAgICAgICBw
dWJsaWMgc3RhdGljIHZvaWQgRmlsZU9wZW4gKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyLCBTeXN0
ZW0uU3RyaW5nIEZpbGVOYW1lLCBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuT3Blbk1vZGUgTW9kZSwg
W1N5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcy5PcHRpb25hbF0gW1N5c3RlbS5Db21wb25l
bnRNb2RlbC5EZWZhdWx0VmFsdWUoLTEpXSBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuT3BlbkFjY2Vz
cyBBY2Nlc3MsIFtTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuT3B0aW9uYWxdIFtTeXN0
ZW0uQ29tcG9uZW50TW9kZWwuRGVmYXVsdFZhbHVlKC0xKV0gTWljcm9zb2Z0LlZpc3VhbEJhc2lj
Lk9wZW5TaGFyZSBTaGFyZSwgW1N5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcy5PcHRpb25h
bF0gW1N5c3RlbS5Db21wb25lbnRNb2RlbC5EZWZhdWx0VmFsdWUoLTEpXSBTeXN0ZW0uSW50MzIg
UmVjb3JkTGVuZ3RoKQ0KICAgICAgICAgICAgICAgIHsgIA0KICAgICAgICAgICAgICAgIAkvLyBh
dCB0aGlzIG1vbWVudCB5b3UgY2FuIG9wZW4gYSBmaWxlDQogICAgICAgICAgICAgICAgCS8vIG9u
bHkgZm9yIEFwcGVuZCwgSW5wdXQgb3IgT3V0cHV0DQogICAgICAgICAgICAgICAgCVN5c3RlbS5J
Ty5GaWxlTW9kZSBNeU1vZGU7DQogICAgICAgICAgICAgICAgCVN5c3RlbS5JTy5GaWxlQWNjZXNz
IE15QWNjZXNzOyANCiAgICAgICAgICAgICAgICAJU3lzdGVtLklPLkZpbGVTaGFyZSBNeVNoYXJl
Ow0KICAgICAgICAgICAgICAgIAlpZiAoIFJlY29yZExlbmd0aCA8IC0xICkNCiAgICAgICAgICAg
ICAgICAJCXRocm93IG5ldyBTeXN0ZW0uQXJndW1lbnRFeGNlcHRpb24oIlJlY29yZCBMZW5ndGgg
aXMgbmVnYXRpdmUgKG5hZCBub3QgZXF1YWwgdG8gLTEpIik7DQogICAgICAgICAgICAgICAgCWlm
ICggUmVjb3JkTGVuZ3RoID4gMzI3NjcpDQogICAgICAgICAgICAgICAgCQl0aHJvdyBuZXcgU3lz
dGVtLkFyZ3VtZW50RXhjZXB0aW9uICgiSW52YWxpZCBSZWNvcmQgTGVuZ3RoIik7DQogICAgICAg
ICAgICAgICAgCWlmIChGaWxlTnVtYmVyIDwwIHx8IEZpbGVOdW1iZXIgPiAyNTUpDQogICAgICAg
ICAgICAgICAgICAgCQl0aHJvdyBuZXcgU3lzdGVtLklPLklPRXhjZXB0aW9uKEZpbGVOdW1iZXIu
VG9TdHJpbmcoKSArICIgaXMgaW52YWxpZCAoPC0xIG9yID4yNTUpIiw1KTsgDQogICAgICAgICAg
ICAgICAgCQ0KICAgICAgICAgICAgICAgIAlGaWxlTnVtYmVyLS07DQogICAgICAgICAgICAJCWlm
IChGSGFuZGxlW0ZpbGVOdW1iZXJdICE9IG51bGwpDQogICAgICAgICAgICAJCQl0aHJvdyBuZXcg
U3lzdGVtLklPLklPRXhjZXB0aW9uIChGaWxlTnVtYmVyLlRvU3RyaW5nKCkgKyAiIGlzIGluIHVz
ZSIsNSk7IAkNCiAgICAgICAgICAgIAkJDQogICAgICAgIAkJCXN3aXRjaCAoTW9kZSkNCiAgICAg
ICAgCQkJew0KICAgICAgICAJCQkJY2FzZSBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuT3Blbk1vZGUu
QXBwZW5kIDoNCiAgICAgICAgCQkJCQlNeU1vZGU9U3lzdGVtLklPLkZpbGVNb2RlLkFwcGVuZCAg
OyAgDQogICAgICAgIAkJCQkJYnJlYWs7DQogICAgICAgIAkJCQljYXNlIE1pY3Jvc29mdC5WaXN1
YWxCYXNpYy5PcGVuTW9kZS5CaW5hcnkgOg0KICAgICAgICAJCQkJCXRocm93IG5ldyBOb3RJbXBs
ZW1lbnRlZEV4Y2VwdGlvbiAoKTsNCiAgICAgICAgCQkJCQkNCiAgICAgICAgCQkJCWNhc2UgTWlj
cm9zb2Z0LlZpc3VhbEJhc2ljLk9wZW5Nb2RlLklucHV0ICA6DQogICAgICAgIAkJCQkJTXlNb2Rl
PVN5c3RlbS5JTy5GaWxlTW9kZS5PcGVuICA7DQogICAgICAgIAkJCQkJYnJlYWs7DQogICAgICAg
IAkJCQljYXNlIE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5PcGVuTW9kZS5PdXRwdXQgIDoNCiAgICAg
ICAgCQkJCQlNeU1vZGU9U3lzdGVtLklPLkZpbGVNb2RlLk9wZW5PckNyZWF0ZSAgOw0KICAgICAg
ICAJCQkJCWJyZWFrOw0KICAgICAgICAJCQkJY2FzZSBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuT3Bl
bk1vZGUuUmFuZG9tICA6DQogICAgICAgIAkJCQkJIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4
Y2VwdGlvbiAoKTsJDQogICAgICAgIAkJCQlkZWZhdWx0Og0KICAgICAgICAJCQkJCXRocm93IG5l
dyBTeXN0ZW0uQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgU2hhcmUiKTsgDQogICAgICAgIAkJ
CX0NCiAgICAgICAgCQkJc3dpdGNoIChBY2Nlc3MpDQogICAgICAgIAkJCXsNCiAgICAgICAgCQkJ
CWNhc2UgTWljcm9zb2Z0LlZpc3VhbEJhc2ljLk9wZW5BY2Nlc3MuUmVhZFdyaXRlIDogIA0KICAg
ICAgICAJCQkJY2FzZSBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuT3BlbkFjY2Vzcy5EZWZhdWx0IDoN
CiAgICAgICAgCQkJCQlNeUFjY2Vzcz1TeXN0ZW0uSU8uRmlsZUFjY2Vzcy5SZWFkV3JpdGU7DQog
ICAgICAgIAkJCQkJYnJlYWs7DQogICAgICAgIAkJCQljYXNlIE1pY3Jvc29mdC5WaXN1YWxCYXNp
Yy5PcGVuQWNjZXNzLlJlYWQgOg0KICAgICAgICAJCQkJCU15QWNjZXNzPVN5c3RlbS5JTy5GaWxl
QWNjZXNzLlJlYWQ7DQogICAgICAgIAkJCQkJYnJlYWs7DQogICAgICAgIAkJCQljYXNlIE1pY3Jv
c29mdC5WaXN1YWxCYXNpYy5PcGVuQWNjZXNzLldyaXRlIDoNCiAgICAgICAgCQkJCQlNeUFjY2Vz
cz1TeXN0ZW0uSU8uRmlsZUFjY2Vzcy5Xcml0ZTsNCiAgICAgICAgCQkJCQlicmVhazsNCiAgICAg
ICAgCQkJCWRlZmF1bHQ6DQogICAgICAgIAkJCQkJdGhyb3cgbmV3IFN5c3RlbS5Bcmd1bWVudEV4
Y2VwdGlvbigiSW52YWxpZCBBY2Nlc3MiKTsNCiAgICAgICAgCQkJCQ0KICAgICAgICAJCQl9DQog
ICAgICAgIAkJCXN3aXRjaChTaGFyZSkNCiAgICAgICAgCQkJew0KICAgICAgICAJCQkJY2FzZSBN
aWNyb3NvZnQuVmlzdWFsQmFzaWMuT3BlblNoYXJlLkRlZmF1bHQgOg0KICAgICAgICAJCQkJY2Fz
ZSBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuT3BlblNoYXJlLlNoYXJlZCA6DQogICAgICAgIAkJCQkJ
TXlTaGFyZT1TeXN0ZW0uSU8uRmlsZVNoYXJlLlJlYWRXcml0ZSA7ICANCiAgICAgICAgCQkJCQli
cmVhazsNCiAgICAgICAgCQkJCWNhc2UgTWljcm9zb2Z0LlZpc3VhbEJhc2ljLk9wZW5TaGFyZS5M
b2NrUmVhZCAgOg0KICAgICAgICAJCQkJCU15U2hhcmU9U3lzdGVtLklPLkZpbGVTaGFyZS5Xcml0
ZTsgDQogICAgICAgIAkJCQkJYnJlYWs7DQogICAgICAgIAkJCQljYXNlIE1pY3Jvc29mdC5WaXN1
YWxCYXNpYy5PcGVuU2hhcmUuTG9ja1JlYWRXcml0ZSA6DQogICAgICAgIAkJCQkJTXlTaGFyZT1T
eXN0ZW0uSU8uRmlsZVNoYXJlLk5vbmUgOw0KICAgICAgICAJCQkJCWJyZWFrOw0KICAgICAgICAJ
CQkJY2FzZSBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuT3BlblNoYXJlLkxvY2tXcml0ZSA6DQogICAg
ICAgIAkJCQkJTXlTaGFyZT1TeXN0ZW0uSU8uRmlsZVNoYXJlLlJlYWQ7DQogICAgICAgIAkJCQkJ
YnJlYWs7DQogICAgICAgIAkJCQlkZWZhdWx0Og0KICAgICAgICAJCQkJCXRocm93IG5ldyBTeXN0
ZW0uQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgU2hhcmUiKTsNCiAgICAgICAgCQkJfQ0KICAg
ICAgICAJCQlGSGFuZGxlW0ZpbGVOdW1iZXJdPW5ldyBTeXN0ZW0uSU8uRmlsZVN0cmVhbSAoRmls
ZU5hbWUsTXlNb2RlLE15QWNjZXNzLE15U2hhcmUpOw0KICAgICAgICAgICAgCQkJDQogICAgICAg
ICAgICAJCQ0KICAgICAgICAgICAgICAgIAkJDQogICAgICAgICAgICAgICAgCQ0KICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBbTW9ub1RPRE8oIk5l
ZWRzIHRlc3RpbmciKV0NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgRmlsZUNs
b3NlIChwYXJhbXMgU3lzdGVtLkludDMyW10gRmlsZU51bWJlcnMpIA0KICAgICAgICAgICAgICAg
IHsgDQogICAgICAgICAgICAgICAgCWludCBidWNsZT0wOw0KICAgICAgICAgICAgICAgIAlpZiAo
RmlsZU51bWJlcnMuTGVuZ3RoICA9PSAwKQ0KICAgICAgICAgICAgICAgIAl7DQogICAgICAgICAg
ICAgICAgCQlmb3IoYnVjbGU9MDtidWNsZTwyNTU7YnVjbGUrKykNCiAgICAgICAgICAgICAgICAJ
CXsNCiAgICAgICAgICAgICAgICAJCQlpZiAoRkhhbmRsZVtidWNsZV0hPW51bGwpDQogICAgICAg
ICAgICAgICAgCQkJCXRyeQ0KICAgICAgICAgICAgICAgIAkJCQl7DQogICAgICAgICAgICAgICAg
CQkJCQlGSGFuZGxlW2J1Y2xlXS5DbG9zZSgpOwkNCiAgICAgICAgICAgICAgICAJCQkJfQ0KICAg
ICAgICAgICAgICAgIAkJCQljYXRjaCAoRXhjZXB0aW9uIGUpIHtlLkdldFR5cGUgKCk7IEZIYW5k
bGVbYnVjbGVdPW51bGwgO30NCiAgICAgICAgICAgICAgICAJCX0NCiAgICAgICAgICAgICAgICAJ
fQ0KICAgICAgICAgICAgICAgIAllbHNlDQogICAgICAgICAgICAgICAgCXsNCiAgICAgICAgICAg
ICAgICAJCWZvcihidWNsZT0wO2J1Y2xlPEZpbGVOdW1iZXJzLkxlbmd0aDtidWNsZSsrKQ0KICAg
ICAgICAgICAgICAgIAkJew0KICAgICAgICAgICAgICAgIAkJCWlmICggRkhhbmRsZSBbIEZpbGVO
dW1iZXJzW2J1Y2xlXSAtIDEgXSAhPSBudWxsICkNCiAgICAgICAgICAgICAgICAJCQl7DQogICAg
ICAgICAgICAgICAgCQkJCWlmIChGaWxlTnVtYmVyc1tidWNsZV0+MCAmJiBGaWxlTnVtYmVyc1ti
dWNsZV08MjU2KQ0KICAgICAgICAgICAgICAgIAkJCQl7DQogICAgICAgICAgICAgICAgCQkJCQl0
cnkNCiAgICAgICAgICAgICAgICAJCQkJCXsNCiAgICAgICAgICAgICAgICAJCQkJCQlGSGFuZGxl
WyBGaWxlTnVtYmVyc1tidWNsZV0gLSAxXS5DbG9zZSgpOw0KICAgICAgICAgICAgICAgIAkJCQkJ
CUZIYW5kbGVbIEZpbGVOdW1iZXJzW2J1Y2xlXSAtIDFdPW51bGw7DQogICAgICAgICAgICAgICAg
CQkJCQl9DQogICAgICAgICAgICAgICAgCQkJCQljYXRjaCAoRXhjZXB0aW9uIGUpe2UuR2V0VHlw
ZSAoKTsgRkhhbmRsZVsgRmlsZU51bWJlcnNbYnVjbGVdIC0gMV09IG51bGwgO30NCiAgICAgICAg
ICAgICAgICAJCQkJfQ0KICAgICAgICAgICAgICAgIAkJCQllbHNlDQogICAgICAgICAgICAgICAg
CQkJCQl0aHJvdyBuZXcgU3lzdGVtLklPLklPRXhjZXB0aW9uIChGaWxlTnVtYmVyc1tidWNsZV0u
VG9TdHJpbmcoKSArICIgRG9lcyBub3QgZXhpc3QiLDUyKTsNCiAgICAgICAgICAgICAgICAJCQl9
DQogICAgICAgICAgICAgICAgCQkJZWxzZQ0KICAgICAgICAgICAgICAgIAkJCQl0aHJvdyBuZXcg
U3lzdGVtLklPLklPRXhjZXB0aW9uIChGaWxlTnVtYmVyc1tidWNsZV0uVG9TdHJpbmcoKSArICIg
RG9lcyBub3QgZXhpc3QiLDUyKTsgDQogICAgICAgICAgICAgICAgCQl9DQogICAgICAgICAgICAg
ICAgCX0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICAgW01vbm9UT0RPXQ0KICAgICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBGaWxlR2V0
T2JqZWN0IChTeXN0ZW0uSW50MzIgRmlsZU51bWJlciwgcmVmIFN5c3RlbS5PYmplY3QgVmFsdWUs
IFtTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuT3B0aW9uYWxdIFtTeXN0ZW0uQ29tcG9u
ZW50TW9kZWwuRGVmYXVsdFZhbHVlKC0xKV0gcmVmIFN5c3RlbS5JbnQ2NCBSZWNvcmROdW1iZXIp
IHsgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOyB9DQogICAgICAgICAgICAg
ICAgW01vbm9UT0RPXQ0KICAgICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBGaWxlR2V0
IChTeXN0ZW0uSW50MzIgRmlsZU51bWJlciwgcmVmIFN5c3RlbS5WYWx1ZVR5cGUgVmFsdWUsIFtT
eXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuT3B0aW9uYWxdIFtTeXN0ZW0uQ29tcG9uZW50
TW9kZWwuRGVmYXVsdFZhbHVlKC0xKV0gcmVmIFN5c3RlbS5JbnQ2NCBSZWNvcmROdW1iZXIpIHsg
dGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOyB9DQogICAgICAgICAgICAgICAg
W01vbm9UT0RPXQ0KICAgICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBGaWxlR2V0IChT
eXN0ZW0uSW50MzIgRmlsZU51bWJlciwgcmVmIFN5c3RlbS5BcnJheSBWYWx1ZSwgW1N5c3RlbS5S
dW50aW1lLkludGVyb3BTZXJ2aWNlcy5PcHRpb25hbF0gW1N5c3RlbS5Db21wb25lbnRNb2RlbC5E
ZWZhdWx0VmFsdWUoLTEpXSByZWYgU3lzdGVtLkludDY0IFJlY29yZE51bWJlciwgW1N5c3RlbS5S
dW50aW1lLkludGVyb3BTZXJ2aWNlcy5PcHRpb25hbF0gW1N5c3RlbS5Db21wb25lbnRNb2RlbC5E
ZWZhdWx0VmFsdWUoZmFsc2UpXSByZWYgU3lzdGVtLkJvb2xlYW4gQXJyYXlJc0R5bmFtaWMsIFtT
eXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuT3B0aW9uYWxdIFtTeXN0ZW0uQ29tcG9uZW50
TW9kZWwuRGVmYXVsdFZhbHVlKGZhbHNlKV0gcmVmIFN5c3RlbS5Cb29sZWFuIFN0cmluZ0lzRml4
ZWRMZW5ndGgpIHsgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOyB9DQogICAg
ICAgICAgICAgICAgW01vbm9UT0RPXQ0KICAgICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9p
ZCBGaWxlR2V0IChTeXN0ZW0uSW50MzIgRmlsZU51bWJlciwgcmVmIFN5c3RlbS5Cb29sZWFuIFZh
bHVlLCBbU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzLk9wdGlvbmFsXSBbU3lzdGVtLkNv
bXBvbmVudE1vZGVsLkRlZmF1bHRWYWx1ZSgtMSldIHJlZiBTeXN0ZW0uSW50NjQgUmVjb3JkTnVt
YmVyKSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0KICAgICAgICAg
ICAgICAgIFtNb25vVE9ET10NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgRmls
ZUdldCAoU3lzdGVtLkludDMyIEZpbGVOdW1iZXIsIHJlZiBTeXN0ZW0uQnl0ZSBWYWx1ZSwgW1N5
c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcy5PcHRpb25hbF0gW1N5c3RlbS5Db21wb25lbnRN
b2RlbC5EZWZhdWx0VmFsdWUoLTEpXSByZWYgU3lzdGVtLkludDY0IFJlY29yZE51bWJlcikgeyB0
aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7IH0NCiAgICAgICAgICAgICAgICBb
TW9ub1RPRE9dDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIEZpbGVHZXQgKFN5
c3RlbS5JbnQzMiBGaWxlTnVtYmVyLCByZWYgU3lzdGVtLkludDE2IFZhbHVlLCBbU3lzdGVtLlJ1
bnRpbWUuSW50ZXJvcFNlcnZpY2VzLk9wdGlvbmFsXSBbU3lzdGVtLkNvbXBvbmVudE1vZGVsLkRl
ZmF1bHRWYWx1ZSgtMSldIHJlZiBTeXN0ZW0uSW50NjQgUmVjb3JkTnVtYmVyKSB7IHRocm93IG5l
dyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0KICAgICAgICAgICAgICAgIFtNb25vVE9E
T10NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgRmlsZUdldCAoU3lzdGVtLklu
dDMyIEZpbGVOdW1iZXIsIHJlZiBTeXN0ZW0uSW50MzIgVmFsdWUsIFtTeXN0ZW0uUnVudGltZS5J
bnRlcm9wU2VydmljZXMuT3B0aW9uYWxdIFtTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVmYXVsdFZh
bHVlKC0xKV0gcmVmIFN5c3RlbS5JbnQ2NCBSZWNvcmROdW1iZXIpIHsgdGhyb3cgbmV3IE5vdElt
cGxlbWVudGVkRXhjZXB0aW9uICgpOyB9DQogICAgICAgICAgICAgICAgW01vbm9UT0RPXQ0KICAg
ICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBGaWxlR2V0IChTeXN0ZW0uSW50MzIgRmls
ZU51bWJlciwgcmVmIFN5c3RlbS5JbnQ2NCBWYWx1ZSwgW1N5c3RlbS5SdW50aW1lLkludGVyb3BT
ZXJ2aWNlcy5PcHRpb25hbF0gW1N5c3RlbS5Db21wb25lbnRNb2RlbC5EZWZhdWx0VmFsdWUoLTEp
XSByZWYgU3lzdGVtLkludDY0IFJlY29yZE51bWJlcikgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50
ZWRFeGNlcHRpb24gKCk7IH0NCiAgICAgICAgICAgICAgICBbTW9ub1RPRE9dDQogICAgICAgICAg
ICAgICAgcHVibGljIHN0YXRpYyB2b2lkIEZpbGVHZXQgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVy
LCByZWYgU3lzdGVtLkNoYXIgVmFsdWUsIFtTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMu
T3B0aW9uYWxdIFtTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVmYXVsdFZhbHVlKC0xKV0gcmVmIFN5
c3RlbS5JbnQ2NCBSZWNvcmROdW1iZXIpIHsgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0
aW9uICgpOyB9DQogICAgICAgICAgICAgICAgW01vbm9UT0RPXQ0KICAgICAgICAgICAgICAgIHB1
YmxpYyBzdGF0aWMgdm9pZCBGaWxlR2V0IChTeXN0ZW0uSW50MzIgRmlsZU51bWJlciwgcmVmIFN5
c3RlbS5TaW5nbGUgVmFsdWUsIFtTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuT3B0aW9u
YWxdIFtTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVmYXVsdFZhbHVlKC0xKV0gcmVmIFN5c3RlbS5J
bnQ2NCBSZWNvcmROdW1iZXIpIHsgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgp
OyB9DQogICAgICAgICAgICAgICAgW01vbm9UT0RPXQ0KICAgICAgICAgICAgICAgIHB1YmxpYyBz
dGF0aWMgdm9pZCBGaWxlR2V0IChTeXN0ZW0uSW50MzIgRmlsZU51bWJlciwgcmVmIFN5c3RlbS5E
b3VibGUgVmFsdWUsIFtTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuT3B0aW9uYWxdIFtT
eXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVmYXVsdFZhbHVlKC0xKV0gcmVmIFN5c3RlbS5JbnQ2NCBS
ZWNvcmROdW1iZXIpIHsgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOyB9DQog
ICAgICAgICAgICAgICAgW01vbm9UT0RPXQ0KICAgICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMg
dm9pZCBGaWxlR2V0IChTeXN0ZW0uSW50MzIgRmlsZU51bWJlciwgcmVmIFN5c3RlbS5EZWNpbWFs
IFZhbHVlLCBbU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzLk9wdGlvbmFsXSBbU3lzdGVt
LkNvbXBvbmVudE1vZGVsLkRlZmF1bHRWYWx1ZSgtMSldIHJlZiBTeXN0ZW0uSW50NjQgUmVjb3Jk
TnVtYmVyKSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0KICAgICAg
ICAgICAgICAgIFtNb25vVE9ET10NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQg
RmlsZUdldCAoU3lzdGVtLkludDMyIEZpbGVOdW1iZXIsIHJlZiBTeXN0ZW0uU3RyaW5nIFZhbHVl
LCBbU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzLk9wdGlvbmFsXSBbU3lzdGVtLkNvbXBv
bmVudE1vZGVsLkRlZmF1bHRWYWx1ZSgtMSldIHJlZiBTeXN0ZW0uSW50NjQgUmVjb3JkTnVtYmVy
LCBbU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzLk9wdGlvbmFsXSBbU3lzdGVtLkNvbXBv
bmVudE1vZGVsLkRlZmF1bHRWYWx1ZShmYWxzZSldIHJlZiBTeXN0ZW0uQm9vbGVhbiBTdHJpbmdJ
c0ZpeGVkTGVuZ3RoKSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0K
ICAgICAgICAgICAgICAgIFtNb25vVE9ET10NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGlj
IHZvaWQgRmlsZUdldCAoU3lzdGVtLkludDMyIEZpbGVOdW1iZXIsIHJlZiBTeXN0ZW0uRGF0ZVRp
bWUgVmFsdWUsIFtTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuT3B0aW9uYWxdIFtTeXN0
ZW0uQ29tcG9uZW50TW9kZWwuRGVmYXVsdFZhbHVlKC0xKV0gcmVmIFN5c3RlbS5JbnQ2NCBSZWNv
cmROdW1iZXIpIHsgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOyB9DQogICAg
ICAgICAgICAgICAgW01vbm9UT0RPXQ0KICAgICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9p
ZCBGaWxlUHV0T2JqZWN0IChTeXN0ZW0uSW50MzIgRmlsZU51bWJlciwgU3lzdGVtLk9iamVjdCBW
YWx1ZSwgW1N5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcy5PcHRpb25hbF0gW1N5c3RlbS5D
b21wb25lbnRNb2RlbC5EZWZhdWx0VmFsdWUoLTEpXSBTeXN0ZW0uSW50NjQgUmVjb3JkTnVtYmVy
KSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0KICAgICAgICAgICAg
ICAgIFtNb25vVE9ET10NCiAgICAgICAgICAgICAgICBbU3lzdGVtLk9ic29sZXRlQXR0cmlidXRl
KCJVc2UgRmlsZVB1dE9iamVjdCB0byB3cml0ZSBPYmplY3QgdHlwZXMsIG9yIGNvZXJjZSBGaWxl
TnVtYmVyIGFuZCBSZWNvcmROdW1iZXIgdG8gSW50ZWdlciBmb3Igd3JpdGluZyBub24tT2JqZWN0
IHR5cGVzIiwgZmFsc2UpXSANCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgRmls
ZVB1dCAoU3lzdGVtLk9iamVjdCBGaWxlTnVtYmVyLCBTeXN0ZW0uT2JqZWN0IFZhbHVlLCBbU3lz
dGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzLk9wdGlvbmFsXSBbU3lzdGVtLkNvbXBvbmVudE1v
ZGVsLkRlZmF1bHRWYWx1ZSgtMSldIFN5c3RlbS5PYmplY3QgUmVjb3JkTnVtYmVyKSB7IHRocm93
IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0KICAgICAgICAgICAgICAgIFtNb25v
VE9ET10NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgRmlsZVB1dCAoU3lzdGVt
LkludDMyIEZpbGVOdW1iZXIsIFN5c3RlbS5WYWx1ZVR5cGUgVmFsdWUsIFtTeXN0ZW0uUnVudGlt
ZS5JbnRlcm9wU2VydmljZXMuT3B0aW9uYWxdIFtTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVmYXVs
dFZhbHVlKC0xKV0gU3lzdGVtLkludDY0IFJlY29yZE51bWJlcikgeyB0aHJvdyBuZXcgTm90SW1w
bGVtZW50ZWRFeGNlcHRpb24gKCk7IH0NCiAgICAgICAgICAgICAgICBbTW9ub1RPRE9dDQogICAg
ICAgICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIEZpbGVQdXQgKFN5c3RlbS5JbnQzMiBGaWxl
TnVtYmVyLCBTeXN0ZW0uQXJyYXkgVmFsdWUsIFtTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2Vydmlj
ZXMuT3B0aW9uYWxdIFtTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVmYXVsdFZhbHVlKC0xKV0gU3lz
dGVtLkludDY0IFJlY29yZE51bWJlciwgW1N5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcy5P
cHRpb25hbF0gW1N5c3RlbS5Db21wb25lbnRNb2RlbC5EZWZhdWx0VmFsdWUoZmFsc2UpXSBTeXN0
ZW0uQm9vbGVhbiBBcnJheUlzRHluYW1pYywgW1N5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNl
cy5PcHRpb25hbF0gW1N5c3RlbS5Db21wb25lbnRNb2RlbC5EZWZhdWx0VmFsdWUoZmFsc2UpXSBT
eXN0ZW0uQm9vbGVhbiBTdHJpbmdJc0ZpeGVkTGVuZ3RoKSB7IHRocm93IG5ldyBOb3RJbXBsZW1l
bnRlZEV4Y2VwdGlvbiAoKTsgfQ0KICAgICAgICAgICAgICAgIFtNb25vVE9ET10NCiAgICAgICAg
ICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgRmlsZVB1dCAoU3lzdGVtLkludDMyIEZpbGVOdW1i
ZXIsIFN5c3RlbS5Cb29sZWFuIFZhbHVlLCBbU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2Vz
Lk9wdGlvbmFsXSBbU3lzdGVtLkNvbXBvbmVudE1vZGVsLkRlZmF1bHRWYWx1ZSgtMSldIFN5c3Rl
bS5JbnQ2NCBSZWNvcmROdW1iZXIpIHsgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9u
ICgpOyB9DQogICAgICAgICAgICAgICAgW01vbm9UT0RPXQ0KICAgICAgICAgICAgICAgIHB1Ymxp
YyBzdGF0aWMgdm9pZCBGaWxlUHV0IChTeXN0ZW0uSW50MzIgRmlsZU51bWJlciwgU3lzdGVtLkJ5
dGUgVmFsdWUsIFtTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuT3B0aW9uYWxdIFtTeXN0
ZW0uQ29tcG9uZW50TW9kZWwuRGVmYXVsdFZhbHVlKC0xKV0gU3lzdGVtLkludDY0IFJlY29yZE51
bWJlcikgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7IH0NCiAgICAgICAg
ICAgICAgICBbTW9ub1RPRE9dDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIEZp
bGVQdXQgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyLCBTeXN0ZW0uSW50MTYgVmFsdWUsIFtTeXN0
ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuT3B0aW9uYWxdIFtTeXN0ZW0uQ29tcG9uZW50TW9k
ZWwuRGVmYXVsdFZhbHVlKC0xKV0gU3lzdGVtLkludDY0IFJlY29yZE51bWJlcikgeyB0aHJvdyBu
ZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7IH0NCiAgICAgICAgICAgICAgICBbTW9ub1RP
RE9dDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIEZpbGVQdXQgKFN5c3RlbS5J
bnQzMiBGaWxlTnVtYmVyLCBTeXN0ZW0uSW50MzIgVmFsdWUsIFtTeXN0ZW0uUnVudGltZS5JbnRl
cm9wU2VydmljZXMuT3B0aW9uYWxdIFtTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVmYXVsdFZhbHVl
KC0xKV0gU3lzdGVtLkludDY0IFJlY29yZE51bWJlcikgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50
ZWRFeGNlcHRpb24gKCk7IH0NCiAgICAgICAgICAgICAgICBbTW9ub1RPRE9dDQogICAgICAgICAg
ICAgICAgcHVibGljIHN0YXRpYyB2b2lkIEZpbGVQdXQgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVy
LCBTeXN0ZW0uSW50NjQgVmFsdWUsIFtTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuT3B0
aW9uYWxdIFtTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVmYXVsdFZhbHVlKC0xKV0gU3lzdGVtLklu
dDY0IFJlY29yZE51bWJlcikgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7
IH0NCiAgICAgICAgICAgICAgICBbTW9ub1RPRE9dDQogICAgICAgICAgICAgICAgcHVibGljIHN0
YXRpYyB2b2lkIEZpbGVQdXQgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyLCBTeXN0ZW0uQ2hhciBW
YWx1ZSwgW1N5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcy5PcHRpb25hbF0gW1N5c3RlbS5D
b21wb25lbnRNb2RlbC5EZWZhdWx0VmFsdWUoLTEpXSBTeXN0ZW0uSW50NjQgUmVjb3JkTnVtYmVy
KSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0KICAgICAgICAgICAg
ICAgIFtNb25vVE9ET10NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgRmlsZVB1
dCAoU3lzdGVtLkludDMyIEZpbGVOdW1iZXIsIFN5c3RlbS5TaW5nbGUgVmFsdWUsIFtTeXN0ZW0u
UnVudGltZS5JbnRlcm9wU2VydmljZXMuT3B0aW9uYWxdIFtTeXN0ZW0uQ29tcG9uZW50TW9kZWwu
RGVmYXVsdFZhbHVlKC0xKV0gU3lzdGVtLkludDY0IFJlY29yZE51bWJlcikgeyB0aHJvdyBuZXcg
Tm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7IH0NCiAgICAgICAgICAgICAgICBbTW9ub1RPRE9d
DQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIEZpbGVQdXQgKFN5c3RlbS5JbnQz
MiBGaWxlTnVtYmVyLCBTeXN0ZW0uRG91YmxlIFZhbHVlLCBbU3lzdGVtLlJ1bnRpbWUuSW50ZXJv
cFNlcnZpY2VzLk9wdGlvbmFsXSBbU3lzdGVtLkNvbXBvbmVudE1vZGVsLkRlZmF1bHRWYWx1ZSgt
MSldIFN5c3RlbS5JbnQ2NCBSZWNvcmROdW1iZXIpIHsgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVk
RXhjZXB0aW9uICgpOyB9DQogICAgICAgICAgICAgICAgW01vbm9UT0RPXQ0KICAgICAgICAgICAg
ICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBGaWxlUHV0IChTeXN0ZW0uSW50MzIgRmlsZU51bWJlciwg
U3lzdGVtLkRlY2ltYWwgVmFsdWUsIFtTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuT3B0
aW9uYWxdIFtTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVmYXVsdFZhbHVlKC0xKV0gU3lzdGVtLklu
dDY0IFJlY29yZE51bWJlcikgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7
IH0NCiAgICAgICAgICAgICAgICBbTW9ub1RPRE9dDQogICAgICAgICAgICAgICAgcHVibGljIHN0
YXRpYyB2b2lkIEZpbGVQdXQgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyLCBTeXN0ZW0uU3RyaW5n
IFZhbHVlLCBbU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzLk9wdGlvbmFsXSBbU3lzdGVt
LkNvbXBvbmVudE1vZGVsLkRlZmF1bHRWYWx1ZSgtMSldIFN5c3RlbS5JbnQ2NCBSZWNvcmROdW1i
ZXIsIFtTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuT3B0aW9uYWxdIFtTeXN0ZW0uQ29t
cG9uZW50TW9kZWwuRGVmYXVsdFZhbHVlKGZhbHNlKV0gU3lzdGVtLkJvb2xlYW4gU3RyaW5nSXNG
aXhlZExlbmd0aCkgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7IH0NCiAg
ICAgICAgICAgICAgICBbTW9ub1RPRE9dDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyB2
b2lkIEZpbGVQdXQgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyLCBTeXN0ZW0uRGF0ZVRpbWUgVmFs
dWUsIFtTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuT3B0aW9uYWxdIFtTeXN0ZW0uQ29t
cG9uZW50TW9kZWwuRGVmYXVsdFZhbHVlKC0xKV0gU3lzdGVtLkludDY0IFJlY29yZE51bWJlcikg
eyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7IH0NCiAgICAgICAgICAgICAg
ICBbTW9ub1RPRE9dDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIFByaW50IChT
eXN0ZW0uSW50MzIgRmlsZU51bWJlciwgcGFyYW1zIFN5c3RlbS5PYmplY3RbXSBPdXRwdXQpIHsg
dGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOyB9DQogICAgICAgICAgICAgICAg
W01vbm9UT0RPXQ0KICAgICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBQcmludExpbmUg
KFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyLCBwYXJhbXMgU3lzdGVtLk9iamVjdFtdIE91dHB1dCkg
eyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7IH0NCiAgICAgICAgICAgICAg
ICBbTW9ub1RPRE9dDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIElucHV0IChT
eXN0ZW0uSW50MzIgRmlsZU51bWJlciwgcmVmIFN5c3RlbS5PYmplY3QgVmFsdWUpIHsgdGhyb3cg
bmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOyB9DQogICAgICAgICAgICAgICAgW01vbm9U
T0RPXQ0KICAgICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBJbnB1dCAoU3lzdGVtLklu
dDMyIEZpbGVOdW1iZXIsIHJlZiBTeXN0ZW0uQm9vbGVhbiBWYWx1ZSkgeyB0aHJvdyBuZXcgTm90
SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7IH0NCiAgICAgICAgICAgICAgICBbTW9ub1RPRE9dDQog
ICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIElucHV0IChTeXN0ZW0uSW50MzIgRmls
ZU51bWJlciwgcmVmIFN5c3RlbS5CeXRlIFZhbHVlKSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRl
ZEV4Y2VwdGlvbiAoKTsgfQ0KICAgICAgICAgICAgICAgIFtNb25vVE9ET10NCiAgICAgICAgICAg
ICAgICBwdWJsaWMgc3RhdGljIHZvaWQgSW5wdXQgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyLCBy
ZWYgU3lzdGVtLkludDE2IFZhbHVlKSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlv
biAoKTsgfQ0KICAgICAgICAgICAgICAgIFtNb25vVE9ET10NCiAgICAgICAgICAgICAgICBwdWJs
aWMgc3RhdGljIHZvaWQgSW5wdXQgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyLCByZWYgU3lzdGVt
LkludDMyIFZhbHVlKSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0K
ICAgICAgICAgICAgICAgIFtNb25vVE9ET10NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGlj
IHZvaWQgSW5wdXQgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyLCByZWYgU3lzdGVtLkludDY0IFZh
bHVlKSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0KICAgICAgICAg
ICAgICAgIFtNb25vVE9ET10NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgSW5w
dXQgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyLCByZWYgU3lzdGVtLkNoYXIgVmFsdWUpIHsgdGhy
b3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOyB9DQogICAgICAgICAgICAgICAgW01v
bm9UT0RPXQ0KICAgICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBJbnB1dCAoU3lzdGVt
LkludDMyIEZpbGVOdW1iZXIsIHJlZiBTeXN0ZW0uU2luZ2xlIFZhbHVlKSB7IHRocm93IG5ldyBO
b3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0KICAgICAgICAgICAgICAgIFtNb25vVE9ET10N
CiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgSW5wdXQgKFN5c3RlbS5JbnQzMiBG
aWxlTnVtYmVyLCByZWYgU3lzdGVtLkRvdWJsZSBWYWx1ZSkgeyB0aHJvdyBuZXcgTm90SW1wbGVt
ZW50ZWRFeGNlcHRpb24gKCk7IH0NCiAgICAgICAgICAgICAgICBbTW9ub1RPRE9dDQogICAgICAg
ICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIElucHV0IChTeXN0ZW0uSW50MzIgRmlsZU51bWJl
ciwgcmVmIFN5c3RlbS5EZWNpbWFsIFZhbHVlKSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4
Y2VwdGlvbiAoKTsgfQ0KICAgICAgICAgICAgICAgIFtNb25vVE9ET10NCiAgICAgICAgICAgICAg
ICBwdWJsaWMgc3RhdGljIHZvaWQgSW5wdXQgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyLCByZWYg
U3lzdGVtLlN0cmluZyBWYWx1ZSkgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24g
KCk7IH0NCiAgICAgICAgICAgICAgICBbTW9ub1RPRE9dDQogICAgICAgICAgICAgICAgcHVibGlj
IHN0YXRpYyB2b2lkIElucHV0IChTeXN0ZW0uSW50MzIgRmlsZU51bWJlciwgcmVmIFN5c3RlbS5E
YXRlVGltZSBWYWx1ZSkgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7IH0N
CiAgICAgICAgICAgICAgICBbTW9ub1RPRE9dDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRp
YyB2b2lkIFdyaXRlIChTeXN0ZW0uSW50MzIgRmlsZU51bWJlciwgcGFyYW1zIFN5c3RlbS5PYmpl
Y3RbXSBPdXRwdXQpIHsgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOyB9DQog
ICAgICAgICAgICAgICAgW01vbm9UT0RPXQ0KICAgICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMg
dm9pZCBXcml0ZUxpbmUgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyLCBwYXJhbXMgU3lzdGVtLk9i
amVjdFtdIE91dHB1dCkgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7IH0N
CiAgICAgICAgICAgICAgICBbTW9ub1RPRE9dDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRp
YyBTeXN0ZW0uU3RyaW5nIElucHV0U3RyaW5nIChTeXN0ZW0uSW50MzIgRmlsZU51bWJlciwgU3lz
dGVtLkludDMyIENoYXJDb3VudCkgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24g
KCk7IH0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBbTW9ub1RPRE8oIk5lZWRz
IHRlc3RpbmciKV0NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIFN5c3RlbS5TdHJpbmcg
TGluZUlucHV0IChTeXN0ZW0uSW50MzIgRmlsZU51bWJlcikgDQogICAgICAgICAgICAgICAgeyAN
CiAgICAgICAgICAgICAgICAJc3RyaW5nIHJldHZhbD0iIjsNCiAJCQkJCWludCBidWY9J1x4MDAn
OyAgDQogICAgICAgICAgICAgICAgCWJvb2wgZm91bmQ9ZmFsc2U7DQogICAgICAgICAgICAgICAg
CWlmICggRmlsZU51bWJlcjwxIHx8IEZpbGVOdW1iZXI+MjU1KQ0KICAgICAgICAgICAgICAgIAkJ
dGhyb3cgbmV3IFN5c3RlbS5JTy5JT0V4Y2VwdGlvbiAoRmlsZU51bWJlci5Ub1N0cmluZygpICsg
IiBkb2VzIG5vdCBleGlzdHMiLDUyKTsNCiAgICAgICAgICAgICAgICAJaWYgKCBGSGFuZGxlW0Zp
bGVOdW1iZXIgLSAxXSA9PSBudWxsKQ0KICAgICAgICAgICAgICAgIAkJdGhyb3cgbmV3IFN5c3Rl
bS5JTy5JT0V4Y2VwdGlvbiAoRmlsZU51bWJlci5Ub1N0cmluZygpICsgIiBkb2VzIG5vdCBleGlz
dHMiLDUyKTsNCiAgICAgICAgICAgICAgICAJICAgICAgICAgIAkNCiAgICAgICAgICAgICAgICAJ
aWYgKCBFT0YoRmlsZU51bWJlcikgKQ0KICAgICAgICAgICAgICAgIAkJdGhyb3cgbmV3IFN5c3Rl
bS5JTy5FbmRPZlN0cmVhbUV4Y2VwdGlvbigpOw0KICAgICAgICAgICAgICAgIAkNCiAgICAgICAg
ICAgICAgICAJd2hpbGUgKCFmb3VuZCkNCiAgICAgICAgICAgICAgICAJew0KICAgICAgICAgICAg
ICAgIAkJIA0KICAgICAgICAgICAgICAgIAkJYnVmPUZIYW5kbGVbRmlsZU51bWJlciAtIDFdLlJl
YWRCeXRlKCk7DQogICAgICAgICAgICAgICAgCQlpZiAoIChidWYgPT0gLTEpIHx8IChidWYgPT0g
J1x4MEEnICkgKQ0KICAgICAgICAgICAgICAgIAkJCWZvdW5kPXRydWU7DQogICAgICAgICAgICAg
ICAgCQllbHNlDQogICAgICAgICAgICAgICAgCQkJcmV0dmFsKz0gKChjaGFyKWJ1ZikuVG9TdHJp
bmcoKTsNCiAgICAgICAgICAgICAgICAJfQ0KICAgICAgICAgICAgICAgIAlpZiAoIHJldHZhbC5M
ZW5ndGggPiAwICkNCiAgICAgICAgICAgICAgICAJCWlmICggKGJ1ZiA9PSAnXHgwQScpICYmIChy
ZXR2YWxbcmV0dmFsLkxlbmd0aCAtMSBdID09ICdceDBEJykgKQ0KICAgICAgICAgICAgICAgIAkJ
CXJldHZhbD1yZXR2YWwuU3Vic3RyaW5nKDAscmV0dmFsLkxlbmd0aCAtMSkgOw0KICAgICAgICAg
ICAgICAgIAlDb25zb2xlLldyaXRlTGluZSAocmV0dmFsKTsNCiAgICAgICAgICAgICAgICAJcmV0
dXJuIHJldHZhbDsNCiAgICAgICAgICAgICAgICAJICAgIA0KICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBbTW9ub1RPRE9dDQogICAgICAgICAgICAg
ICAgcHVibGljIHN0YXRpYyB2b2lkIExvY2sgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyKSB7IHRo
cm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0KICAgICAgICAgICAgICAgIFtN
b25vVE9ET10NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgTG9jayAoU3lzdGVt
LkludDMyIEZpbGVOdW1iZXIsIFN5c3RlbS5JbnQ2NCBSZWNvcmQpIHsgdGhyb3cgbmV3IE5vdElt
cGxlbWVudGVkRXhjZXB0aW9uICgpOyB9DQogICAgICAgICAgICAgICAgW01vbm9UT0RPXQ0KICAg
ICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBMb2NrIChTeXN0ZW0uSW50MzIgRmlsZU51
bWJlciwgU3lzdGVtLkludDY0IEZyb21SZWNvcmQsIFN5c3RlbS5JbnQ2NCBUb1JlY29yZCkgeyB0
aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7IH0NCiAgICAgICAgICAgICAgICBb
TW9ub1RPRE9dDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIFVubG9jayAoU3lz
dGVtLkludDMyIEZpbGVOdW1iZXIpIHsgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9u
ICgpOyB9DQogICAgICAgICAgICAgICAgW01vbm9UT0RPXQ0KICAgICAgICAgICAgICAgIHB1Ymxp
YyBzdGF0aWMgdm9pZCBVbmxvY2sgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyLCBTeXN0ZW0uSW50
NjQgUmVjb3JkKSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0KICAg
ICAgICAgICAgICAgIFtNb25vVE9ET10NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIHZv
aWQgVW5sb2NrIChTeXN0ZW0uSW50MzIgRmlsZU51bWJlciwgU3lzdGVtLkludDY0IEZyb21SZWNv
cmQsIFN5c3RlbS5JbnQ2NCBUb1JlY29yZCkgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNl
cHRpb24gKCk7IH0NCiAgICAgICAgICAgICAgICBbTW9ub1RPRE9dDQogICAgICAgICAgICAgICAg
cHVibGljIHN0YXRpYyB2b2lkIEZpbGVXaWR0aCAoU3lzdGVtLkludDMyIEZpbGVOdW1iZXIsIFN5
c3RlbS5JbnQzMiBSZWNvcmRXaWR0aCkgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRp
b24gKCk7IH0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBbTW9ub1RPRE8oIk5l
ZWRzIHRlc3RpbmciKV0gICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgcHVibGljIHN0
YXRpYyBTeXN0ZW0uSW50MzIgRnJlZUZpbGUgKCkgDQogICAgICAgICAgICAgICAgeyANCiAgICAg
ICAgICAgICAgICAJaW50IGJ1Y2xlPTA7DQogICAgICAgICAgICAgICAgCWJvb2wgZm91bmQ9ZmFs
c2U7DQogICAgICAgICAgICAgICAgCWZvciAoYnVjbGU9MDtidWNsZTwyNTU7YnVjbGUrKykNCiAg
ICAgICAgICAgICAgICAJCWlmIChGSGFuZGxlW2J1Y2xlXT09bnVsbCkNCiAgICAgICAgICAgICAg
ICAJCXsNCiAgICAgICAgICAgICAgICAJCQlmb3VuZD10cnVlOw0KICAgICAgICAgICAgICAgIAkJ
CWJyZWFrOw0KICAgICAgICAgICAgICAgIAkJfQ0KICAgICAgICAgICAgICAgIAlpZiAoIWZvdW5k
KQ0KICAgICAgICAgICAgICAgIAkJdGhyb3cgbmV3IFN5c3RlbS5JTy5JT0V4Y2VwdGlvbiAoIk1v
cmUgdGhhbiAyNTUgZmlsZXMgYXJlIGluIHVzZSIsNjcpOw0KICAgICAgICAgICAgICAgIAllbHNl
DQogICAgICAgICAgICAgICAgCQlyZXR1cm4gYnVjbGUrMTsNCiAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgW01vbm9UT0RPXQ0KICAgICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMg
dm9pZCBTZWVrIChTeXN0ZW0uSW50MzIgRmlsZU51bWJlciwgU3lzdGVtLkludDY0IFBvc2l0aW9u
KSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0KICAgICAgICAgICAg
ICAgIFtNb25vVE9ET10NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIFN5c3RlbS5JbnQ2
NCBTZWVrIChTeXN0ZW0uSW50MzIgRmlsZU51bWJlcikgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50
ZWRFeGNlcHRpb24gKCk7IH0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBbTW9u
b1RPRE8oIk5lZWRzIHRlc3RpbmciKV0NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIFN5
c3RlbS5Cb29sZWFuIEVPRiAoIFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyKSANCiAgICAgICAgICAg
ICAgICB7IA0KICAgICAgICAgICAgICAgIAlpZiAoRmlsZU51bWJlcjwxIHx8IEZpbGVOdW1iZXI+
MjU1KQ0KICAgICAgICAgICAgICAgIAkJdGhyb3cgbmV3IFN5c3RlbS5JTy5JT0V4Y2VwdGlvbiAo
RmlsZU51bWJlci5Ub1N0cmluZygpICsgIiBkb2VzIG5vdCBleGlzdHMiLDUyKTsNCiAgICAgICAg
ICAgICAgICAJaWYgKCBGSGFuZGxlW0ZpbGVOdW1iZXIgLSAxXSA9PSBudWxsKQ0KICAgICAgICAg
ICAgICAgIAkJdGhyb3cgbmV3IFN5c3RlbS5JTy5JT0V4Y2VwdGlvbiAoRmlsZU51bWJlci5Ub1N0
cmluZygpICsgIiBkb2VzIG5vdCBleGlzdHMiLDUyKTsNCiAgICAgICAgICAgICAgICAJaWYgKCBG
SGFuZGxlW0ZpbGVOdW1iZXIgLSAxXS5MZW5ndGggPT0gRkhhbmRsZVtGaWxlTnVtYmVyIC0gMV0u
UG9zaXRpb24pDQogICAgICAgICAgICAgICAgCQlyZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgICAg
ICAJZWxzZQ0KICAgICAgICAgICAgICAgIAkJcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAg
IAkJDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
IFtNb25vVE9ET10NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIFN5c3RlbS5JbnQ2NCBM
b2MgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyKSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4
Y2VwdGlvbiAoKTsgfQ0KICAgICAgICAgICAgICAgIFtNb25vVE9ET10NCiAgICAgICAgICAgICAg
ICBwdWJsaWMgc3RhdGljIFN5c3RlbS5JbnQ2NCBMT0YgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVy
KSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0KICAgICAgICAgICAg
ICAgIFtNb25vVE9ET10NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIE1pY3Jvc29mdC5W
aXN1YWxCYXNpYy5UYWJJbmZvIFRBQiAoKSB7IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2Vw
dGlvbiAoKTsgfQ0KICAgICAgICAgICAgICAgIFtNb25vVE9ET10NCiAgICAgICAgICAgICAgICBw
dWJsaWMgc3RhdGljIE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5UYWJJbmZvIFRBQiAoU3lzdGVtLklu
dDE2IENvbHVtbikgeyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7IH0NCiAg
ICAgICAgICAgICAgICBbTW9ub1RPRE9dDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyBN
aWNyb3NvZnQuVmlzdWFsQmFzaWMuU3BjSW5mbyBTUEMgKFN5c3RlbS5JbnQxNiBDb3VudCkgeyB0
aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7IH0NCiAgICAgICAgICAgICAgICBb
TW9ub1RPRE9dDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyBNaWNyb3NvZnQuVmlzdWFs
QmFzaWMuT3Blbk1vZGUgRmlsZUF0dHIgKFN5c3RlbS5JbnQzMiBGaWxlTnVtYmVyKSB7IHRocm93
IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAoKTsgfQ0KICAgICAgICAgICAgICAgIFtNb25v
VE9ET10NCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgUmVzZXQgKCkgeyB0aHJv
dyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7IH0NCiAgICAgICAgICAgICAgICBbTW9u
b1RPRE9dDQogICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIFJlbmFtZSAoU3lzdGVt
LlN0cmluZyBPbGRQYXRoLCBTeXN0ZW0uU3RyaW5nIE5ld1BhdGgpIHsgdGhyb3cgbmV3IE5vdElt
cGxlbWVudGVkRXhjZXB0aW9uICgpOyB9DQogICAgICAgICAgICAgICAgLy8gRXZlbnRzDQogICAg
ICAgICAgICAgICAgDQogICAgICAgIH07DQp9DQo=


--MYWAYBOUNDARY_000__83a7c86491a5072c40e4b63f95f63cd4--