[Insight-developers] KmeansUnsupervisedClassifier check in issues

Sayan Pathak spathak@insightful.com
Fri, 14 Dec 2001 17:05:42 -0800


This is a multi-part message in MIME format.

------_=_NextPart_001_01C18504.9E0907F0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hi,
I renamed=20
itkKMeansUnsupervisedClassifier.h & .txx to
itkKmeansUnsupervisedClassifier.h & .txx as per the architecture
assessment suggestion.
As a first step, I have successfully removed the
itkKMeansUnsupervisedClassifier.h & .txx files.
Then I did successfully add itkKmeansUnsupervisedClassifier.h & .txx

Then when I go to commit the changes I get the following errors:

E:\Insight-clean\Insight\Code\Algorithms>cvs commit -m"File name
changed" itkKme
ansUnsupervisedClassifier.txx
RCS file:
/insight/cvsroot/Insight/Code/Algorithms/itkKmeansUnsupervisedClassifi
er.txx,v
done
assertion "*rcsnode =3D=3D NULL" failed: file
"/usr/src/gnu/usr.bin/cvs/cvs/../../..
/../contrib/cvs/src/commit.c", line 2057
cvs [server aborted]: received abort signal

E:\Insight-clean\Insight\Code\Algorithms>cvs commit -m"File name
changed" itkKme
ansUnsupervisedClassifier.h
cvs server: cannot add file `itkKmeansUnsupervisedClassifier.h' when RCS
file `/
insight/cvsroot/Insight/Code/Algorithms/itkKmeansUnsupervisedClassifier.
h,v' alr
eady exists
cvs [server aborted]: correct above errors first!

I am attaching the new files I would like to see in the repository. I
would appreciate if someone could help me get these two files checked
into the repository.
Thanks,
Sayan

------_=_NextPart_001_01C18504.9E0907F0
Content-Type: application/octet-stream;
	name="itkKmeansUnsupervisedClassifier.h"
Content-Transfer-Encoding: base64
Content-Description: itkKmeansUnsupervisedClassifier.h
Content-Disposition: attachment;
	filename="itkKmeansUnsupervisedClassifier.h"

Lyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQoNCiAgUHJvZ3JhbTogICBJbnNpZ2h0IFNlZ21lbnRhdGlvbiAm
IFJlZ2lzdHJhdGlvbiBUb29sa2l0DQogIE1vZHVsZTogICAgJFJDU2ZpbGU6IGl0a0tNZWFuc1Vu
c3VwZXJ2aXNlZENsYXNzaWZpZXIuaCx2ICQNCiAgTGFuZ3VhZ2U6ICBDKysNCiAgRGF0ZTogICAg
ICAkRGF0ZTogMjAwMS8xMi8xNSAwMDoyMDozMCAkDQogIFZlcnNpb246ICAgJFJldmlzaW9uOiAx
LjEyICQNCg0KQ29weXJpZ2h0IChjKSAyMDAxIEluc2lnaHQgQ29uc29ydGl1bQ0KQWxsIHJpZ2h0
cyByZXNlcnZlZC4NCg0KUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCg0KICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlLA0KICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4NCg0KICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLA0KICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbg0KICAg
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQoN
CiAqIFRoZSBuYW1lIG9mIHRoZSBJbnNpZ2h0IENvbnNvcnRpdW0sIG5vciB0aGUgbmFtZXMgb2Yg
YW55IGNvbnNvcnRpdW0gbWVtYmVycywNCiAgIG5vciBvZiBhbnkgY29udHJpYnV0b3JzLCBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0K
DQogICogTW9kaWZpZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMg
c3VjaCwgYW5kIG11c3Qgbm90IGJlDQogICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9y
aWdpbmFsIHNvZnR3YXJlLg0KDQpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnDQpBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
DQpJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQ0KQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBBVVRIT1JTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SDQpBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMDQpE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUg0KU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVINCkNBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
DQpPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCg0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSov
DQojaWZuZGVmIF9pdGtLbWVhbnNVbnN1cGVydmlzZWRDbGFzc2lmaWVyX2gNCiNkZWZpbmUgX2l0
a0ttZWFuc1Vuc3VwZXJ2aXNlZENsYXNzaWZpZXJfaA0KDQojaW5jbHVkZSAiaXRrT2JqZWN0Lmgi
DQojaW5jbHVkZSAidm5sL3ZubF92ZWN0b3IuaCINCiNpbmNsdWRlICJ2bmwvdm5sX21hdHJpeC5o
Ig0KI2luY2x1ZGUgInZubC92bmxfbWF0aC5oIg0KLy8jaW5jbHVkZSAidm5sL3ZubF9udW1lcmlj
X2xpbWl0cy5oIg0KDQojaW5jbHVkZSAiaXRrVW5zdXBlcnZpc2VkQ2xhc3NpZmllci5oIg0KDQoj
aW5jbHVkZSA8c3RkbGliLmg+DQojaW5jbHVkZSA8c3RkaW8uaD4NCiNpbmNsdWRlIDx0aW1lLmg+
DQojaW5jbHVkZSA8bWF0aC5oPg0KI2luY2x1ZGUgPGZsb2F0Lmg+DQoNCiNpbmNsdWRlICJpdGtW
ZWN0b3IuaCINCiNpbmNsdWRlIDx2ZWN0b3I+DQojaW5jbHVkZSAidm5sL3ZubF92ZWN0b3JfcmVm
LmgiDQojaW5jbHVkZSAidm5sL3ZubF9tYXRyaXguaCINCg0KI2RlZmluZSAgT05FQkFORCAgICAg
ICAgMQ0KI2RlZmluZSAgR0xBX0NPTlZFUkdFRCAgICAgMQ0KI2RlZmluZSAgR0xBX05PVF9DT05W
RVJHRUQgMg0KI2RlZmluZSAgTEJHX0NPTVBMRVRFRCAgICAgMw0KDQoNCg0KbmFtZXNwYWNlIGl0
aw0Kew0KDQovKiogXGNsYXNzIEttZWFuc1Vuc3VwZXJ2aXNlZENsYXNzaWZpZXINCiAqIFxicmll
ZiBJbXBsZW1lbnRhdGlvbiBLbWVhbnNVbnN1cGVydmlzZWRDbGFzc2lmaWVyIG9iamVjdA0KICoN
CiAqIFRoaXMgb2JqZWN0IHBlcmZvcm1zIGNsdXN0ZXJpbmcgb2YgZGF0YSBzZXRzIGludG8gZGlm
ZmVyZW50IGNsdXN0ZXJzDQogKiBlaXRoZXIgdXNpbmcgYSB1c2VyIHByb3ZpZGVkIHNlZWQgcG9p
bnRzIGFzIGluaXRpYWwgZ3Vlc3Mgb3IgZ2VuZXJhdGVzDQogKiB0aGUgY2x1c3RlcnMgdXNpbmcg
YSByZWN1cnNpdmUgYXBwcm9hY2ggd2hlbiB0aGUgdXNlciBwcm92aWRlcyB0aGUNCiAqIG51bWJl
ciBvZiBkZXNpcmVkIGNsdXN0ZXJzLiBFYWNoIGNsdXN0ZXIgaXMgcmVwcmVzZW50ZWQgYnkgaXRz
IGNsdXN0ZXINCiAqIGNlbnRlci4gVGhlIHR3byBhbGdvcml0aG1zIHVzZWQgYXJlIHRoZSBnZW5l
cmFsaXplZCBMbG95ZA0KICogYWxnb3JpdGhtIChHTEEpIGFuZCB0aGUgTGluZGUtQnV6by1HcmF5
IGFsZ29yaXRobXMuIFRoZSBjbHVzdGVyIGNlbnRlcnMNCiAqIGFyZSBhbHNvIHJlZmVycmVkIHRv
IGFzIGNvZGV3b3JkcyBhbmQgYSB0YWJsZSBvZiBjbHVzdGVyIGNlbnRlcnMgaXMgDQogKiBpcyBy
ZWZlcnJlZCBhcyBhIGNvZGVib29rLg0KICoNCiAqIEFzIHJlcXVpcmVkIGJ5IHRoZSBHTEEgYWxn
b3JpdGhtLCB0aGUgaW5pdGlhbCBzZWVkIGNsdXN0ZXIgc2hvdWxkIGNvbnRhaW4gDQogKiBhcHBy
b3hpbWF0ZSBjZW50ZXJzIG9mIGNsdXN0ZXJzLiAgVGhlIEdMQSBhbGdvcml0aG0gZ2VucmF0ZXMg
YW4gdXBkYXRlZA0KICogY2x1c3RlciBjZW50ZXJzIHRoYXQgcmVzdWx0IGluIGEgbG93ZXIgZGlz
dG9ydGlvbiB0aGFuIHRoZSBpbnB1dCBzZWVkIA0KICogY2x1c3RlciB3aGVuIHRoZSBpbnB1dCB2
ZWN0b3JzIGFyZSBtYXBwZWQvY2xhc3NpZmllZC9sYWJlbGxlZCB1c2luZyB0aGUgDQogKiBnaXZl
biBjb2RlYm9va3MuDQogKg0KICogSWYgbm8gY29kZWJvb2sgaXMgcHJvdmlkZWQsIHRoZSBMaW5k
ZS1CdXpvLUdyYXkgYWxnb3JpdGhtIGlzIHVzZWQuDQogKiBUaGlzIGFsZ29yaXRobSB1c2VzIHRo
ZSBHTEEgYWxnb3JpdGhtIGF0IGl0cyBjb3JlIHRvIGdlbmVyYXRlIHRoZQ0KICogY2VudHJvaWRz
IG9mIHRoZSBpbnB1dCB2ZWN0b3JzIChkYXRhKS4gSG93ZXZlciwgc2luY2UgdGhlcmUgaXMgbm8g
aW5pdGlhbA0KICogY29kZWJvb2ssIExCRyBmaXJzdCBjcmVhdGVzIGEgb25lIHdvcmQgY29kZWJv
b2sgKG9yIGNlbnRyb2lkIG9mIG9uZQ0KICogY2x1c3RlciBjb21wcmlzaW5nIG9mIGFsbCB0aGUg
aW5wdXQgdHJhaW5pbmcgdmVjdG9ycykuIFRoZSBMQkcgdXNlcyANCiAqIGNvZGV3b3JkL29yIGNl
bnRyb2lkIHNwbGl0dGluZyB0byBjcmVhdGUgaW5jcmVhc2luZyBudW1iZXIgb2YgY2x1c3RlcnMu
DQogKiBFYWNoIG5ldyBzZXQgb2YgY2x1c3RlcnMgYXJlIG9wdGltaXplZCB1c2luZyB0aGUgR0xB
IGFsZ29yaXRobS4gDQogKiBUaGUgbnVtYmVyIG9mIGNsdXN0ZXJzIGluY3JlYXNlcyBhcyAkMl57
bn0kIG49IDAsIDEsIC4uLiBUaGUgY29kZWJvb2sgDQogKiBpcyBleHBlY3RlZCB0byBiZSBpbiB0
aGUgZm9ybSBvZiBhIHZubCBtYXRyaXgsIHdoZXJlIHRoZXJlIGFyZSBOIHJvd3MuDQogKiBlYWNo
IHJvdyByZXByZXNlbnRpbmcgdGhlIGNsdXN0ZXIgbWVhbiBvZiBhIGdpdmVuIGNsdXN0ZXIuIFRo
ZSBudW1iZXINCiAqIG9mIGNvbHVtbnMgaW4gYSB0aGUgY29kZWJvb2sgc2hvdWxkIGJlIGVxdWFs
IHRvIHRoZSBpbnB1dCBpbWFnZSB2ZWN0b3INCiAqIGRpbWVuc2lvbi4NCiAqDQogKiBUaGUgdGhy
ZXNob2xkIHBhcmFtZXRlciBjb250cm9scyB0aGUgYGBvcHRpbWFsaXR5Jycgb2YgdGhlIHJldHVy
bmVkDQogKiBjb2RlYm9vayB3aGVyZSBvcHRpbWFsaXR5IGlzIHJlbGF0ZWQgdG8gdGhlIGxlYXN0
IHBvc3NpYmxlDQogKiBtZWFuLXNxdWFyZWQgZXJyb3IgZGlzdG9ydGlvbiB0aGF0IGNhbiBiZSBm
b3VuZCBieSB0aGUgYWxnb3JpdGhtLg0KICogRm9yIGxhcmdlciB0aHJlc2hvbGRzLCB0aGUgcmVz
dWx0IHdpbGwgYmUgbGVzcyBvcHRpbWFsLiAgRm9yDQogKiBzbWFsbGVyIHRocmVzaG9sZHMsIHRo
ZSByZXN1bHQgd2lsbCBiZSBtb3JlIG9wdGltYWwuICBJZiBhIG1vcmUNCiAqIG9wdGltYWwgcmVz
dWx0IGlzIGRlc2lyZWQsIHRoZW4gdGhlIGFsZ29yaXRobSB3aWxsIHRha2UgbG9uZ2VyIHRvDQog
KiBjb21wbGV0ZS4gQSByZWFzb25hYmxlIHRocmVzaG9sZCB2YWx1ZSBpcyAwLjAxLg0KICoNCiAq
IElmLCBkdXJpbmcgdGhlIG9wZXJhdGlvbiBvZiB0aGUgYWxnb3JpdGhtLCB0aGVyZSBhcmUgYW55
IHVudXNlZA0KICogY2x1c3RlcnMgb3IgY2VsbHMsIHRoZSBtX09mZnNldEFkZCBhbmQgbV9PZmZz
ZXRNdWx0aXBseSBwYXJhbWV0ZXJzIGlzDQogKiB1c2VkIHRvIHNwbGl0IHRoZSBjZWxscyB3aXRo
IHRoZSBoaWdoZXN0IGRpc3RvcnRpb24uICBUaGlzDQogKiBmdW5jdGlvbnMgd2lsbCBhdHRlbXB0
IHRvIGZpbGwgZW1wdHkgY2VsbHMgdXAgdG8gMTAgdGltZXMgKHVubGVzcw0KICogdGhlIG92ZXJh
bGwgZGlzdG9ydGlvbiBpcyB6ZXJvKS4gVXNpbmcgMC4wMSBpcyBhIHJlYXNvbmFibGUgZGVmYXVs
dCAgDQogKiB2YWx1ZXMgZm9yIHRoZSBtX09mZnNldEFkZCBhbmQgbV9PZmZzZXRNdWx0aXBseSBw
YXJhbWV0ZXJzLg0KICoNCiAqIElmIHRoZSBHTEEgaXMgdW5hYmxlIHRvIHJlc29sdmUgdGhlIGRh
dGEgaW50byB0aGUgZGVzaXJlZCBudW1iZXIgb2YNCiAqIGNsdXN0ZXJzIG9yIGNlbGxzLCBvbmx5
IHRoZSBjb2Rld29yZHMgd2hpY2ggd2VyZSB1c2VkIHdpbGwgYmUNCiAqIHJldHVybmVkLiANCiAq
DQogKiBJbiB0ZXJtcyBvZiBjbHVzdGVyaW5nLCBjb2Rld29yZHMgYXJlIGNsdXN0ZXIgY2VudGVy
cywgYW5kIGEgY29kZWJvb2sNCiAqIGlzIGEgdGFibGUgY29udGFpbmluZyBhbGwgY2x1c3RlciBj
ZW50ZXJzLiAgVGhlIEdMQSBwcm9kdWNlcyByZXN1bHRzDQogKiB0aGF0IGFyZSBlcXVpdmFsZW50
IHRvIHRoZSBLLW1lYW5zIGNsdXN0ZXJpbmcgYWxnb3JpdGhtLg0KICoNCiAqIEZvciBtb3JlIGlu
Zm9ybWF0aW9uIGFib3V0IHRoZSBhbGdvcml0aG1zLCBzZWUgQS4gR2Vyc2hvIGFuZCBSLiBNLiBH
cmF5LA0KICoge1xlbSBWZWN0b3IgUXVhbnRpemF0aW9uIGFuZCBTaWduYWwgQ29tcHJlc3Npb259
LA0KICogS2x1d2VyIEFjYWRlbWljIFB1Ymxpc2hlcnMsIEJvc3RvbiwgTUEsIDE5OTIuDQogKg0K
ICogVGhpcyBvYmplY3Qgc3VwcG9ydHMgZGF0YSBoYW5kbGluZyBvZiBtdWx0aWJhbmQgaW1hZ2Vz
LiBUaGUgb2JqZWN0DQogKiBhY2NlcHRzIHRoZSBpbnB1dCBpbWFnZSBpbiB2ZWN0b3IgZm9ybWF0
IG9ubHksIHdoZXJlIGVhY2ggcGl4ZWwgaXMgYSANCiAqIHZlY3RvciBhbmQgZWFjaCBlbGVtZW50
IG9mIHRoZSB2ZWN0b3IgY29ycmVzcG9uZHMgdG8gYW4gZW50cnkgZnJvbQ0KICogMSBwYXJ0aWN1
bGFyIGJhbmQgb2YgYSBtdWx0aWJhbmQgZGF0YXNldC4gQSBzaW5nbGUgYmFuZCBpbWFnZSBpcyB0
cmVhdGVkIA0KICogYXMgYSB2ZWN0b3IgaW1hZ2Ugd2l0aCBhIHNpbmdsZSBlbGVtZW50IGZvciBl
dmVyeSB2ZWN0b3IuIFRoZSBjbGFzc2lmaWVkDQogKiBpbWFnZSBpcyB0cmVhdGVkIGFzIGEgc2lu
Z2xlIGJhbmQgc2NhbGFyIGltYWdlLiBDdXJyZW50bHkgdGhlcmUgaXMgbm8NCiAqIHN1cHBvcnQg
Zm9yIGdlbmVyYXRpbmcgYSBjbGFzc2lmaWVkIGltYWdlLiBUaGlzIGNsYXNzIGNhbiBiZSBleHRl
bmRlZCBieQ0KICogb3ZlcnJpZGluZyB0aGUgdmlydHVhbCBHZXRQaXhlbERpc3RhbmNlKCkgZnVu
Y3Rpb24uDQogKg0KICogXGluZ3JvdXAgVW5TdXBlcnZpc2VkQ2xhc3NpZmljYXRpb25GaWx0ZXJz
IA0KICovDQp0ZW1wbGF0ZSA8Y2xhc3MgVElucHV0SW1hZ2UsIGNsYXNzIFRDbGFzc2lmaWVkSW1h
Z2U+DQpjbGFzcyBJVEtfRVhQT1JUIEttZWFuc1Vuc3VwZXJ2aXNlZENsYXNzaWZpZXIgDQo6IHB1
YmxpYyBVbnN1cGVydmlzZWRDbGFzc2lmaWVyIDxUSW5wdXRJbWFnZSxUQ2xhc3NpZmllZEltYWdl
Pg0Kew0KcHVibGljOg0KICAvKiogU3RhbmRhcmQgY2xhc3MgdHlwZWRlZnMuICovDQogIHR5cGVk
ZWYgS21lYW5zVW5zdXBlcnZpc2VkQ2xhc3NpZmllciAgIFNlbGY7DQogIHR5cGVkZWYgVW5zdXBl
cnZpc2VkQ2xhc3NpZmllcjxUSW5wdXRJbWFnZSxUQ2xhc3NpZmllZEltYWdlPiBTdXBlcmNsYXNz
Ow0KICB0eXBlZGVmIFNtYXJ0UG9pbnRlcjxTZWxmPiAgUG9pbnRlcjsNCiAgdHlwZWRlZiBTbWFy
dFBvaW50ZXI8Y29uc3QgU2VsZj4gIENvbnN0UG9pbnRlcjsNCg0KICAvKiogTWV0aG9kIGZvciBj
cmVhdGlvbiB0aHJvdWdoIHRoZSBvYmplY3QgZmFjdG9yeS4gKi8NCiAgaXRrTmV3TWFjcm8oU2Vs
Zik7DQoNCiAgLyoqIFJ1bi10aW1lIHR5cGUgaW5mb3JtYXRpb24gKGFuZCByZWxhdGVkIG1ldGhv
ZHMpLiAqLw0KICBpdGtUeXBlTWFjcm8oS21lYW5zVW5zdXBlcnZpc2VkQ2xhc3NpZmllcixVbnN1
cGVydmlzZWRDbGFzc2lmaWVyKTsNCg0KICAvKiogVHlwZSBkZWZpbml0aW9uIGZvciB0aGUgaW5w
dXQgaW1hZ2UuICovDQogIHR5cGVkZWYgdHlwZW5hbWUgVElucHV0SW1hZ2U6OlBvaW50ZXIgICBJ
bnB1dEltYWdlVHlwZTsNCg0KICAvKiogVHlwZSBkZWZpbml0aW9uIGZvciB0aGUgdmVjdG9yIGFz
c29jaWF0ZWQgd2l0aA0KICAgKiBpbnB1dCBpbWFnZSBwaXhlbCB0eXBlLiAqLyAgICAgDQogIHR5
cGVkZWYgdHlwZW5hbWUgVElucHV0SW1hZ2U6OlBpeGVsVHlwZTo6VmVjdG9yVHlwZSAgICANCiAg
ICBJbnB1dEltYWdlVmVjdG9yVHlwZTsNCg0KICAvKiogVHlwZSBkZWZpbml0aW9uIGZvciB0aGUg
aW5wdXQgaW1hZ2UgcGl4ZWwgdHlwZS4gKi8NCiAgdHlwZWRlZiB0eXBlbmFtZSBUSW5wdXRJbWFn
ZTo6UGl4ZWxUeXBlICAgICBJbnB1dEltYWdlUGl4ZWxUeXBlOw0KDQogIC8qKiBUeXBlIGRlZmlu
aXRpb24gZm9yIGEgZG91YmxlIG1hdHJpeC4gKi8NCiAgdHlwZWRlZiB2bmxfbWF0cml4PGRvdWJs
ZT4gQ29kZWJvb2tNYXRyaXhPZkRvdWJsZVR5cGU7IA0KDQogIC8qKiBUeXBlIGRlZmluaXRpb24g
Zm9yIGFuIGludGVnZXIgdmVjdG9yLiAqLw0KICB0eXBlZGVmIHZubF9tYXRyaXg8aW50PiAgICBD
b2RlYm9va01hdHJpeE9mSW50ZWdlclR5cGU7DQoNCiAgLyoqIFNldCB0aGUgY2x1c3RlciBjZW50
ZXJzLiAqLw0KICB2b2lkIFNldENvZGVib29rKENvZGVib29rTWF0cml4T2ZEb3VibGVUeXBlIElu
Q29kZWJvb2spOw0KDQogIC8qKiBHZXQgdGhlIGNsdXN0ZXIgY2VudGVycy4gKi8NCiAgaXRrR2V0
TWFjcm8oQ29kZWJvb2ssQ29kZWJvb2tNYXRyaXhPZkRvdWJsZVR5cGUpOw0KDQogIC8qKiBHZXQg
dGhlIG9wdGltaXplZCBjb2RlYm9vayBvciB0aGUgY2VudHJvaWRzIG9mIHRoZSBjbHVzdGVycy4g
Ki8NCiAgQ29kZWJvb2tNYXRyaXhPZkRvdWJsZVR5cGUgR2V0T3V0Q29kZWJvb2soKQ0KICAgIHsg
cmV0dXJuIG1fQ29kZWJvb2s7IH0NCg0KICAvKiogU2V0IHRoZSB0aHJlc2hvbGQgcGFyYW1ldGVy
LiAqLw0KICBpdGtTZXRNYWNybyhUaHJlc2hvbGQsZG91YmxlKTsNCg0KICAvKiogR2V0IHRoZSB0
aHJlc2hvbGQgcGFyYW1ldGVyLiAqLw0KICBpdGtHZXRNYWNybyhUaHJlc2hvbGQsZG91YmxlKTsN
Cg0KICAvKiogU2V0IHRoZSBvZmZzZXQgYWRkIHBhcmFtZXRlci4gKi8NCiAgaXRrU2V0TWFjcm8o
T2Zmc2V0QWRkLGRvdWJsZSk7DQoNCiAgLyoqIEdldCB0aGUgb2Zmc2V0IGFkZCBwYXJhbWV0ZXIu
ICovDQogIGl0a0dldE1hY3JvKE9mZnNldEFkZCxkb3VibGUpOw0KDQogIC8qKiBTZXQgdGhlIG9m
ZnNldCBtdWx0aXBsaWNhdGlvbiBwYXJhbWV0ZXIuICovDQogIGl0a1NldE1hY3JvKE9mZnNldE11
bHRpcGx5LGRvdWJsZSk7DQoNCiAgLyoqIEdldCB0aGUgb2Zmc2V0IG11bHRpcGxpY2F0aW9uIHBh
cmFtZXRlci4gKi8NCiAgaXRrR2V0TWFjcm8oT2Zmc2V0TXVsdGlwbHksZG91YmxlKTsNCg0KICAv
KiogU2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBhdHRlbXB0cyB0byBzcGxpdCBhIGNvZGV3b3Jk
LiAqLw0KICBpdGtTZXRNYWNybyhNYXhTcGxpdEF0dGVtcHRzLGludCk7DQoNCiAgLyoqIEdldCB0
aGUgbWFuaW11bSBudW1iZXIgb2YgYXR0ZW1wdHMgdG8gc3BsaXQgYSBjb2Rld29yZC4gKi8NCiAg
aXRrR2V0TWFjcm8oTWF4U3BsaXRBdHRlbXB0cyxpbnQpOw0KDQogIC8qKiBSZXR1cm4gdGhlIGNv
ZGVib29rL2NsdXN0ZXIgY2VudGVycy4gKi8NCiAgQ29kZWJvb2tNYXRyaXhPZkRvdWJsZVR5cGUg
R2V0S21lYW5zUmVzdWx0cygpDQogICAgeyByZXR1cm4gbV9DZW50cm9pZDsgfQ0KDQogIC8qKiBH
ZW5lcmF0ZSB0aGUgY2x1c3RlciBjZW50ZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGluaXRpYWwg
Y29kZWJvb2suDQogICAqIElmIG5vIGNvZGVib29rIGlzIHByb3ZpZGVkLCB0aGVuIHVzZSB0aGUg
bnVtYmVyIG9mIGNsYXNzZXMgdG8gDQogICAqIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGNsdXN0
ZXIgY2VudGVycyBkZXNpcmVkLiBUaGlzIGlzIHRoZQ0KICAgKiB0aGUgYmFzZSBmdW5jdGlvbiB0
byBjYWxsIHRoZSBLLW1lYW5zIGNsYXNzaWZpZXIuICovDQogIHZvaWQgQ2x1c3RlcigpOw0KDQog
IC8qKiBHaXZlbiBhIHBpeGVsIHZhbHVlIHJldHVybiB0aGUgcHJvYmFiaWxpdHkgIA0KICAgKiBv
ZiB0aGUgcGl4ZWwgYmVsb25naW5nIHRvIGRpZmZlcmVudCBjbGFzc2VzDQogICAqIGFzIGEgZGlz
dGFuY2UgbWV0cmljLiBUaGUgaGlnaGVyIHRoZSBkaXN0YW5jZSANCiAgICogdGhlIGxvd2VyIGlz
IHRoZSBwcm9iYWJpbGl0eSBvZiBhIHRoZSBwaXhlbCANCiAgICogYmVsb25naW5nIHRvIHRoYXQg
Y2xhc3MuDQogICAqIEZvciB0aGUgdW5zdXBlcnZpc2VkIGNsYXNzaWZpZXIgdGhpcyBmdW5jdGlv
bg0KICAgKiBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgYW5kIHJldHVybnMgYSBudWxsIA0KICAg
KiB2YWx1ZS4gICovDQogIHZpcnR1YWwgdm9pZCBHZXRQaXhlbERpc3RhbmNlKElucHV0SW1hZ2VW
ZWN0b3JUeXBlICZpblBpeGVsVmVjdG9yLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlICogcmVzdWx0cyApIHt9DQoNCiAgLyoqIFByaW50IG91dCB0aGUgcmVzdWx0cyBv
biB0aGUgc2NyZWVuIGZvciB2aXN1YWwgZmVlZGJhY2suICovDQogIHZvaWQgUHJpbnRLbWVhbnNB
bGdvcml0aG1SZXN1bHRzKCk7DQoNCnByb3RlY3RlZDoNCiAgS21lYW5zVW5zdXBlcnZpc2VkQ2xh
c3NpZmllcigpOw0KICB+S21lYW5zVW5zdXBlcnZpc2VkQ2xhc3NpZmllcigpOw0KICB2b2lkIFBy
aW50U2VsZihzdGQ6Om9zdHJlYW0mIG9zLCBJbmRlbnQgaW5kZW50KSBjb25zdDsNCg0KICAvKiog
QWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgb3V0cHV0IG1vZGVsLiAqLw0KICB2b2lkIEFsbG9jYXRl
KCk7DQoNCnByaXZhdGU6DQogIEttZWFuc1Vuc3VwZXJ2aXNlZENsYXNzaWZpZXIoY29uc3QgU2Vs
ZiYpOyAvL3B1cnBvc2VseSBub3QgaW1wbGVtZW50ZWQNCiAgdm9pZCBvcGVyYXRvcj0oY29uc3Qg
U2VsZiYpOyAvL3B1cnBvc2VseSBub3QgaW1wbGVtZW50ZWQNCiAgDQogIHR5cGVkZWYgdHlwZW5h
bWUgVElucHV0SW1hZ2U6OlNpemVUeXBlIEltYWdlU2l6ZVR5cGU7DQoNCiAgLyoqIFNldCB1cCB0
aGUgdmVjdG9yIHRvIHN0b3JlIHRoZSBpbWFnZSAgZGF0YS4gKi8NCiAgdHlwZWRlZiB0eXBlbmFt
ZSBUSW5wdXRJbWFnZTo6UGl4ZWxUeXBlOjpWZWN0b3JUeXBlIElucHV0UGl4ZWxWZWN0b3JUeXBl
Ow0KDQogIHZvaWQgUmVhbGxvY2F0ZShpbnQgb2xkU2l6ZSwgaW50IG5ld1NpemUpOw0KDQogIC8v
TG9jYWwgZnVuY3Rpb25zDQogIGludCAgV2l0aENvZGVib29rVXNlR0xBKCk7IC8vIEdMQSBzdGFu
ZHMgZm9yIHRoZSBHZW5lcmFsaXplZCBMbG95ZCBBbGdvcml0aG0NCiAgaW50ICBXaXRob3V0Q29k
ZWJvb2tVc2VMQkcoKTsgLy9MQkcgc3RhbmRzIGZvciB0aGUgTGluZG8gQnV6byBHcmF5IEFsZ29y
aXRobQ0KDQogIHZvaWQgbmVhcmVzdF9uZWlnaGJvcl9zZWFyY2hfYmFzaWMoZG91YmxlICpkaXN0
b3J0aW9uKTsNCiAgDQogIHZvaWQgc3BsaXRjb2Rld29yZHMoaW50IGN1cnJlbnRTaXplLCANCiAg
ICAgICAgICAgICAgICAgICAgICBpbnQgbnVtRGVzaXJlZCwgDQogICAgICAgICAgICAgICAgICAg
ICAgaW50IHNjYWxlKTsNCiAgDQogIHZvaWQgcGVydHVyYihkb3VibGUgKm9sZENvZGV3b3JkLCAN
CiAgICAgICAgICAgICAgICAgICAgICAgaW50IHNjYWxlLCANCiAgICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlICpuZXdDb2Rld29yZCk7DQoNCiAgQ29kZWJvb2tNYXRyaXhPZkRvdWJsZVR5cGUg
IG1fQ29kZWJvb2s7DQoNCiAgLy8gQnVmZmVyIGZvciBLLW1lYW5zIGNhbGN1YWx0aW9ucw0KICBD
b2RlYm9va01hdHJpeE9mRG91YmxlVHlwZSAgbV9DZW50cm9pZDsNCg0KICBkb3VibGUgICAgICAg
ICAgICAgIG1fVGhyZXNob2xkOw0KICBkb3VibGUgICAgICAgICAgICAgIG1fT2Zmc2V0QWRkOw0K
ICBkb3VibGUgICAgICAgICAgICAgIG1fT2Zmc2V0TXVsdGlwbHk7DQogIGludCAgICAgICAgICAg
ICAgICAgbV9NYXhTcGxpdEF0dGVtcHRzOw0KDQogIHVuc2lnbmVkIGxvbmcgICAgICAgbV9OdW1i
ZXJPZkNsYXNzZXM7DQogIGJvb2wgICAgICAgICAgICAgICAgbV9WYWxpZEluQ29kZWJvb2s7DQog
IGRvdWJsZSAgICAgICAgICAgICAgbV9Eb3VibGVNYXhpbXVtOw0KICBkb3VibGUgICAgICAgICAg
ICAgIG1fT3V0cHV0RGlzdG9ydGlvbjsNCiAgaW50ICAgICAgICAgICAgICAgICBtX091dHB1dE51
bWJlck9mRW1wdHlDZWxsczsNCg0KICB1bnNpZ25lZCBsb25nICAgICAgIG1fVmVjdG9yRGltZW5z
aW9uOw0KICB1bnNpZ25lZCBsb25nICAgICAgIG1fTnVtYmVyT2ZDb2Rld29yZHM7DQogIHVuc2ln
bmVkIGxvbmcgICAgICAgbV9DdXJyZW50TnVtYmVyT2ZDb2Rld29yZHM7DQogIA0KICBDb2RlYm9v
a01hdHJpeE9mSW50ZWdlclR5cGUgIG1fQ29kZXdvcmRIaXN0b2dyYW07DQogIENvZGVib29rTWF0
cml4T2ZEb3VibGVUeXBlICBtX0NvZGV3b3JkRGlzdG9ydGlvbjsNCg0KfTsgLy8gY2xhc3MgS21l
YW5zVW5zdXBlcnZpc2VkQ2xhc3NpZmllcg0KDQoNCn0gLy8gbmFtZXNwYWNlIGl0aw0KDQojaWZu
ZGVmIElUS19NQU5VQUxfSU5TVEFOVElBVElPTg0KI2luY2x1ZGUgIml0a0ttZWFuc1Vuc3VwZXJ2
aXNlZENsYXNzaWZpZXIudHh4Ig0KI2VuZGlmDQoNCg0KDQojZW5kaWYNCg0KDQoNCg0KDQoNCg0K
DQoNCg0K

------_=_NextPart_001_01C18504.9E0907F0
Content-Type: application/octet-stream;
	name="itkKmeansUnsupervisedClassifier.txx"
Content-Transfer-Encoding: base64
Content-Description: itkKmeansUnsupervisedClassifier.txx
Content-Disposition: attachment;
	filename="itkKmeansUnsupervisedClassifier.txx"

Lyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQoNCiAgUHJvZ3JhbTogICBJbnNpZ2h0IFNlZ21lbnRhdGlvbiAm
IFJlZ2lzdHJhdGlvbiBUb29sa2l0DQogIE1vZHVsZTogICAgJFJDU2ZpbGU6IGl0a0ttZWFuc1Vu
c3VwZXJ2aXNlZENsYXNzaWZpZXIudHh4LHYgJA0KICBMYW5ndWFnZTogIEMrKw0KICBEYXRlOiAg
ICAgICREYXRlOiAyMDAxLzEyLzE1IDAwOjIwOjMwICQNCiAgVmVyc2lvbjogICAkUmV2aXNpb246
IDEuMTYgJA0KDQpDb3B5cmlnaHQgKGMpIDIwMDEgSW5zaWdodCBDb25zb3J0aXVtDQpBbGwgcmln
aHRzIHJlc2VydmVkLg0KDQpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCm1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KDQogKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UsDQogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLg0KDQogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsDQogICB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uDQog
ICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4N
Cg0KICogVGhlIG5hbWUgb2YgdGhlIEluc2lnaHQgQ29uc29ydGl1bSwgbm9yIHRoZSBuYW1lcyBv
ZiBhbnkgY29uc29ydGl1bSBtZW1iZXJzLA0KICAgbm9yIG9mIGFueSBjb250cmlidXRvcnMsIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQogICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
DQoNCiAgKiBNb2RpZmllZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBh
cyBzdWNoLCBhbmQgbXVzdCBub3QgYmUNCiAgICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUg
b3JpZ2luYWwgc29mdHdhcmUuDQoNClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVIgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycNCkFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUNCklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFDQpBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1INCkFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwN
CkRBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SDQpTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUg0KQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwNCk9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFDQpPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ki8NCiNpZm5kZWYgX2l0a0ttZWFuc1Vuc3VwZXJ2aXNlZENsYXNzaWZpZXJfdHh4DQojZGVmaW5l
IF9pdGtLbWVhbnNVbnN1cGVydmlzZWRDbGFzc2lmaWVyX3R4eA0KDQojaW5jbHVkZSAiaXRrTnVt
ZXJpY1RyYWl0cy5oIg0KDQpuYW1lc3BhY2UgaXRrDQp7DQoNCnRlbXBsYXRlPGNsYXNzIFRJbnB1
dEltYWdlLCBjbGFzcyBUQ2xhc3NpZmllZEltYWdlPg0KS21lYW5zVW5zdXBlcnZpc2VkQ2xhc3Np
ZmllcjxUSW5wdXRJbWFnZSxUQ2xhc3NpZmllZEltYWdlPg0KOjpLbWVhbnNVbnN1cGVydmlzZWRD
bGFzc2lmaWVyKHZvaWQpDQp7DQogIG1fVmFsaWRJbkNvZGVib29rICA9IGZhbHNlOyANCiAgbV9E
b3VibGVNYXhpbXVtICAgID0gTnVtZXJpY1RyYWl0czxkb3VibGU+OjptYXgoKTsNCiAgbV9UaHJl
c2hvbGQgICAgICAgID0gMC4wMTsNCiAgbV9PZmZzZXRBZGQgICAgICAgID0gMC4wMTsNCiAgbV9P
ZmZzZXRNdWx0aXBseSAgICAgICAgPSAwLjAxOw0KICBtX01heFNwbGl0QXR0ZW1wdHMgPSAxMDsN
CiAgbV9OdW1iZXJPZkNsYXNzZXMgICAgICAgPSAwOw0KfQ0KDQp0ZW1wbGF0ZTxjbGFzcyBUSW5w
dXRJbWFnZSwgY2xhc3MgVENsYXNzaWZpZWRJbWFnZT4NCkttZWFuc1Vuc3VwZXJ2aXNlZENsYXNz
aWZpZXI8VElucHV0SW1hZ2UsIFRDbGFzc2lmaWVkSW1hZ2U+DQo6On5LbWVhbnNVbnN1cGVydmlz
ZWRDbGFzc2lmaWVyKHZvaWQpDQp7DQoNCn0NCg0KLy8gUHJpbnRTZWxmDQoNCnRlbXBsYXRlIDxj
bGFzcyBUSW5wdXRJbWFnZSwgY2xhc3MgVENsYXNzaWZpZWRJbWFnZT4NCnZvaWQNCkttZWFuc1Vu
c3VwZXJ2aXNlZENsYXNzaWZpZXI8VElucHV0SW1hZ2UsVENsYXNzaWZpZWRJbWFnZT4NCjo6UHJp
bnRTZWxmKCBzdGQ6Om9zdHJlYW0mIG9zLCBJbmRlbnQgaW5kZW50ICkgY29uc3QNCnsNCiAgU3Vw
ZXJjbGFzczo6UHJpbnRTZWxmKCBvcyxpbmRlbnQgKTsNCiAgb3MgPDwgaW5kZW50IDw8ICJVbnN1
cGVydmlzZWQgQ2xhc3NpZmllciAvIENsdXN0ZXJlciIgPDwgc3RkOjplbmRsOw0KICBvcyA8PCBp
bmRlbnQgPDwgIk9mZnNldCB2YWx1ZSBmb3IgYWRkaXRpb246IiA8PCBtX09mZnNldEFkZCA8PCBz
dGQ6OmVuZGw7DQogIG9zIDw8IGluZGVudCA8PCAiT2Zmc2V0IHZhbHVlIGZvciBtdWx0aXBsaWNh
dGlvbjoiIDw8IG1fT2Zmc2V0TXVsdGlwbHkgPDwgc3RkOjplbmRsOw0KICBvcyA8PCBpbmRlbnQg
PDwgIk1heGltdW0gbnVtYmVyIG9mIGF0dGVtcHRzIHRvIHNwbGl0IGEgY2x1c3RlcjogIiA8PCBt
X01heFNwbGl0QXR0ZW1wdHMgPDwgc3RkOjplbmRsOyANCiAgb3MgPDwgaW5kZW50IDw8ICJDb2Rl
Ym9vayA6ICIgPDwgbV9Db2RlYm9vayA8PCBzdGQ6OmVuZGw7DQogIG9zIDw8IGluZGVudCA8PCAi
VGhyZXNob2xkIHZhbHVlIDoiIDw8IG1fVGhyZXNob2xkIDw8IHN0ZDo6ZW5kbDsNCg0KfS8vIGVu
ZCBQcmludFNlbGYNCg0KLy8gU2V0IHRoZSBpbnB1dCBjb2RlYm9vayBhbmQgYWxsb2NhdGUgbWVt
b3J5IA0KLy8gZm9yIHRoZSBvdXRwdXQgY29kZWJvb2sgYW5kIG90aGVyIHNjcmF0Y2ggbWVtb3J5
DQp0ZW1wbGF0ZTxjbGFzcyBUSW5wdXRJbWFnZSwgY2xhc3MgVENsYXNzaWZpZWRJbWFnZT4NCnZv
aWQNCkttZWFuc1Vuc3VwZXJ2aXNlZENsYXNzaWZpZXI8VElucHV0SW1hZ2UsVENsYXNzaWZpZWRJ
bWFnZT4NCjo6U2V0Q29kZWJvb2soIENvZGVib29rTWF0cml4T2ZEb3VibGVUeXBlIGluQ29kZWJv
b2sgKQ0Kew0KICBtX0NvZGVib29rICAgICAgICA9IGluQ29kZWJvb2s7DQoNCiAgLy9DaGVjayBp
ZiB0aGUgaW5wdXQgY29kZWJvb2sgaXMgYSB2YWxpZA0KICBpZiggSW5wdXRJbWFnZVBpeGVsVHlw
ZTo6R2V0VmVjdG9yRGltZW5zaW9uKCkgPT0gbV9Db2RlYm9vay5jb2xzKCkgKQ0KICAgIHsNCiAg
ICBtX1ZhbGlkSW5Db2RlYm9vayA9IHRydWU7DQogICAgdGhpcy0+QWxsb2NhdGUoKTsNCiAgICB9
DQoNCn0vL0VuZCBTZXRJbkNvZGVib29rDQoNCg0KdGVtcGxhdGU8Y2xhc3MgVElucHV0SW1hZ2Us
IGNsYXNzIFRDbGFzc2lmaWVkSW1hZ2U+DQp2b2lkDQpLbWVhbnNVbnN1cGVydmlzZWRDbGFzc2lm
aWVyPFRJbnB1dEltYWdlLFRDbGFzc2lmaWVkSW1hZ2U+DQo6OkFsbG9jYXRlKCkNCnsNCiAgdW5z
aWduZWQgbG9uZyBpbml0Q29kZWJvb2tTaXplLCBmaW5hbENvZGVib29rU2l6ZTs7DQoNCiAgbV9W
ZWN0b3JEaW1lbnNpb24gPSBJbnB1dEltYWdlUGl4ZWxUeXBlOjpHZXRWZWN0b3JEaW1lbnNpb24o
KTsNCg0KICBpZiggbV9WYWxpZEluQ29kZWJvb2sgKQ0KICAgIHsNCiAgICBtX051bWJlck9mQ29k
ZXdvcmRzID0gbV9Db2RlYm9vay5yb3dzKCk7DQogICAgbV9WZWN0b3JEaW1lbnNpb24gICAgID0g
bV9Db2RlYm9vay5jb2xzKCk7DQogICAgLy8gU2V0IHRoZSBpbml0aWFsIGFuZCBmaW5hbCBjb2Rl
Ym9vayBzaXplDQogICAgaW5pdENvZGVib29rU2l6ZSAgPSBtX051bWJlck9mQ29kZXdvcmRzOw0K
ICAgIGZpbmFsQ29kZWJvb2tTaXplID0gbV9OdW1iZXJPZkNvZGV3b3JkczsNCg0KICAgIH0vLyBl
bmQoaWYgdmFsaWQgY29kZWJvb2sgY2xhdXNlKQ0KICBlbHNlDQogICAgew0KICAgIG1fVmFsaWRJ
bkNvZGVib29rID0gdHJ1ZTsNCg0KICAgIC8vQ2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBuDQog
ICAgaWYoIHRoaXMtPkdldE51bWJlck9mQ2xhc3NlcygpIDw9IDApDQogICAgICB7DQogICAgICB0
aHJvdyBFeGNlcHRpb25PYmplY3QoX19GSUxFX18sIF9fTElORV9fKTsNCiAgICAgIH0NCg0KICAg
IG1fTnVtYmVyT2ZDb2Rld29yZHMgICAgICA9IHRoaXMtPkdldE51bWJlck9mQ2xhc3NlcygpOw0K
ICAgIG1fVmVjdG9yRGltZW5zaW9uICAgICAgICA9IElucHV0SW1hZ2VQaXhlbFR5cGU6OkdldFZl
Y3RvckRpbWVuc2lvbigpOw0KDQogICAgLy8gU2V0IHRoZSBpbml0aWFsIGFuZCBmaW5hbCBjb2Rl
Ym9vayBzaXplDQoNCiAgICBpbml0Q29kZWJvb2tTaXplID0gKHVuc2lnbmVkIGxvbmcpIDE7DQog
ICAgZmluYWxDb2RlYm9va1NpemU9ICh1bnNpZ25lZCBsb25nKW1fTnVtYmVyT2ZDb2Rld29yZHM7
DQoNCiAgICBtX0NvZGVib29rLnJlc2l6ZSggaW5pdENvZGVib29rU2l6ZSwgbV9WZWN0b3JEaW1l
bnNpb24gKTsNCg0KICAgIC8vIGluaXRpYWxpemUgbV9Db2RlYm9vayB0byAwIChpdCBub3cgaGFz
IG9ubHkgb25lIHJvdykgDQogICAgbV9Db2RlYm9vay5maWxsKE5VTEwpOw0KDQogICAgfSAvLyBl
bmQgKGVsc2Ugbm90IHZhbGlkIGNvZGVib29rIGNsYXVzZSkNCg0KICAvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgLy9BbGxvY2F0
ZSBzY3JhdGNoIG1lbW9yeSBmb3IgdGhlIGNlbnRyb2lkLCBjb2RlYm9vayBoaXN0b2dyYW0NCiAg
Ly9hbmQgdGhlIGNvZGVib29rIGRpc3RvcnNpb24NCg0KICBtX0NlbnRyb2lkLnJlc2l6ZSggZmlu
YWxDb2RlYm9va1NpemUsIG1fVmVjdG9yRGltZW5zaW9uICk7DQogIG1fQ2VudHJvaWQuZmlsbCgg
TlVMTCApOw0KDQogIG1fQ29kZXdvcmRIaXN0b2dyYW0ucmVzaXplKCBtX051bWJlck9mQ29kZXdv
cmRzLCAxICk7IA0KICBtX0NvZGV3b3JkSGlzdG9ncmFtLmZpbGwoIE5VTEwgKTsNCg0KICBtX0Nv
ZGV3b3JkRGlzdG9ydGlvbi5yZXNpemUoIG1fTnVtYmVyT2ZDb2Rld29yZHMsIDEgKTsgIA0KICBt
X0NvZGV3b3JkRGlzdG9ydGlvbi5maWxsKCBOVUxMICk7DQoNCn0gLy8gZW5kIEFsbG9jYXRlIGZ1
bmN0aW9uDQoNCg0KdGVtcGxhdGU8Y2xhc3MgVElucHV0SW1hZ2UsIGNsYXNzIFRDbGFzc2lmaWVk
SW1hZ2U+DQp2b2lkDQpLbWVhbnNVbnN1cGVydmlzZWRDbGFzc2lmaWVyPFRJbnB1dEltYWdlLFRD
bGFzc2lmaWVkSW1hZ2U+DQo6OlJlYWxsb2NhdGUoIGludCBvbGRTaXplLCBpbnQgbmV3U2l6ZSAp
DQp7DQogIC8vU2V0IHVwIGEgdGVtcG9yYXJ5IGNvZGVib29rDQogIENvZGVib29rTWF0cml4T2ZE
b3VibGVUeXBlIHRtcENvZGVib29rKCBvbGRTaXplLCBtX1ZlY3RvckRpbWVuc2lvbiApOyANCg0K
ICAvL1NhdmUgdGhlIGNvbnRlbnRzIG9mIG1fQ29kZWJvb2sgaW4gdGhlIHRtcENvZGVib29rDQog
IHRtcENvZGVib29rID0gbV9Db2RlYm9vazsNCiAgbV9Db2RlYm9vay5yZXNpemUoIG5ld1NpemUs
IG1fVmVjdG9yRGltZW5zaW9uICk7DQoNCiAgLy8gQ29weSBiYWNrIHRoZSBzYXZlZCBkYXRhIGlu
dG8gdGhlIGNvZGVib29rDQoNCiAgaWYoIG9sZFNpemUgPCBuZXdTaXplICkNCiAgICB7DQogICAg
Zm9yKCBpbnQgciA9IDA7IHIgPCBvbGRTaXplOyByKysgKQ0KICAgICAgZm9yKCB1bnNpZ25lZCBp
bnQgYyA9IDA7IGMgPCBtX1ZlY3RvckRpbWVuc2lvbjsgYysrICkNCiAgICAgICAgbV9Db2RlYm9v
a1tyXVtjXSA9IHRtcENvZGVib29rW3JdW2NdOyANCg0KICAgIGZvciggaW50IHIgPSBvbGRTaXpl
OyByIDwgbmV3U2l6ZTsgcisrICkNCiAgICAgIGZvcih1bnNpZ25lZCBpbnQgYyA9IDA7IGMgPCBt
X1ZlY3RvckRpbWVuc2lvbjsgYysrICkNCiAgICAgICAgbV9Db2RlYm9va1tyXVtjXSA9IDA7IA0K
DQogICAgfSAvLyBpZiBvbGRzaXplIGlzIHNtYWxsZXIgdGhhbiB0aGUgbmV3IHNpemUNCiAgZWxz
ZQ0KICAgIHsNCiAgICBmb3IoIGludCByID0gMDsgciA8IG5ld1NpemU7IHIrKyApDQogICAgICBm
b3IoIHVuc2lnbmVkIGludCBjID0gMDsgYyA8IG1fVmVjdG9yRGltZW5zaW9uOyBjKysgKQ0KICAg
ICAgICBtX0NvZGVib29rW3JdW2NdID0gdG1wQ29kZWJvb2tbcl1bY107IA0KDQogICAgfS8vIGVs
c2Ugb2xkc2l6ZSBpcyBncmVhdGVyIHRoYW4gdGhlIG5ldyBzaXplDQoNCn0vLyBlbmQgUmVhbGxv
Y2F0ZQ0KDQp0ZW1wbGF0ZTxjbGFzcyBUSW5wdXRJbWFnZSwgY2xhc3MgVENsYXNzaWZpZWRJbWFn
ZT4NCnZvaWQgDQpLbWVhbnNVbnN1cGVydmlzZWRDbGFzc2lmaWVyPFRJbnB1dEltYWdlLFRDbGFz
c2lmaWVkSW1hZ2U+DQo6OlByaW50S21lYW5zQWxnb3JpdGhtUmVzdWx0cygpDQp7DQoNCiAgaXRr
RGVidWdNYWNybyg8PCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKTsNCiAg
aXRrRGVidWdNYWNybyg8PCJSZXN1bHRzIG9mIHRoZSBjbHVzdGVyaW5nIGFsZ29yaXRobXMiKTsN
CiAgaXRrRGVidWdNYWNybyg8PCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0i
KTsNCg0KICBpdGtEZWJ1Z01hY3JvKDw8IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIpOw0KICBpdGtEZWJ1Z01hY3JvKDw8Ik1lYW5zIG9mIHRoZSBjbHVzdGVyZWQgdmVjdG9y
ICAgICAgICIpOw0KICBpdGtEZWJ1Z01hY3JvKDw8IisrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKyIpOw0KDQogIGl0a0RlYnVnTWFjcm8oPDxtX0NlbnRyb2lkKTsNCg0KICBpdGtE
ZWJ1Z01hY3JvKDw8IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOw0KICBp
dGtEZWJ1Z01hY3JvKDw8IkRpc3RvcnRpb24gbWVhc3VyZXMgICAgICAgICAgICAgICAgICIpOw0K
ICBpdGtEZWJ1Z01hY3JvKDw8IisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrICIp
Ow0KDQogIGl0a0RlYnVnTWFjcm8oPDxtX0NvZGV3b3JkRGlzdG9ydGlvbik7DQoNCiAgaXRrRGVi
dWdNYWNybyg8PCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKTsNCiAgaXRr
RGVidWdNYWNybyg8PCJIaXN0b2dyYW0gb2YgdGhlIHZlY3RvciAgICAgICAgICAgICAiKTsNCiAg
aXRrRGVidWdNYWNybyg8PCIrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyAiKTsN
Cg0KICBpdGtEZWJ1Z01hY3JvKDw8bV9Db2Rld29yZEhpc3QpOw0KDQp9Ly8gRW5kIFByaW50S21l
YW5zQWxnb3JpdGhtUmVzdWx0cw0KDQoNCi8vIFRha2VzIGEgc2V0IG9mIHRyYWluaW5nIGltYWdl
cyBhbmQgcmV0dXJucyB0aGUgbWVhbnMgDQovLyBhbmQgdmFyaWFuY2Ugb2YgdGhlIHZhcmlvdXMg
Y2xhc3NlcyBkZWZpbmVkIGluIHRoZQ0KLy8gdHJhaW5pbmcgc2V0Lg0KDQp0ZW1wbGF0ZTxjbGFz
cyBUSW5wdXRJbWFnZSwgY2xhc3MgVENsYXNzaWZpZWRJbWFnZT4NCnZvaWQgDQpLbWVhbnNVbnN1
cGVydmlzZWRDbGFzc2lmaWVyPFRJbnB1dEltYWdlLFRDbGFzc2lmaWVkSW1hZ2U+DQo6OkNsdXN0
ZXIoKQ0Kew0KDQogIC8vSWYgYSBjb2RlYm9vayBpcyBwcm92aWRlZCBieSB0aGUgdXNlciB0aGVu
IGNhbGwgdGhlIA0KICAvL0ttZW5hcyBhbGdvcml0aG0gZGlyZWN0bHkgdGhhdCBpcyBiYXNlZCBv
biB0aGUgDQogIC8vR2VuZXJhbGl6ZWQgTGxveWQgYWxnb3JpdGhtIChHTEEpIGlmIGEgdmFsaWQg
Y29kZWJvb2sNCiAgLy9pcyBwcm92aWRlZCBvciBtX051bWJlck9mQ2xhc3NlcyBpcyBzZXQgdG8g
MCwgZWxzZSANCiAgLy9MaW5kZS1CdXpvLUdyYXkgYWxnb3JpdGhtIGlzIHVzZWQgZm9yIGNsdXN0
ZXJpbmcNCiAgaWYobV9WYWxpZEluQ29kZWJvb2spDQogICAgew0KICAgIFdpdGhDb2RlYm9va1Vz
ZUdMQSgpOw0KICAgIH0NCiAgZWxzZQ0KICAgIHsNCiAgICAvL0Fzc2lnbiBtZW1vcnkgZm9yIHRo
ZSBpbml0aWFsIGNvZGVib29rDQogICAgLy9zaW5jZSBubyBpbnB1dCBjb2RlYm9vayBpcyBwcm92
aWRlZCBmb3IgdGhpcw0KICAgIC8vZnVuY3Rpb24NCiAgICBBbGxvY2F0ZSgpOw0KICAgIG1fQ3Vy
cmVudE51bWJlck9mQ29kZXdvcmRzID0gbV9Db2RlYm9vay5yb3dzKCk7DQogICAgV2l0aG91dENv
ZGVib29rVXNlTEJHKCk7DQogICAgfQ0KDQogIG1fVmFsaWRJbkNvZGVib29rID0gZmFsc2U7DQoN
Cn0vLyBlbmQgQXBwbHlLTWVhbnMNCg0KDQoNCnRlbXBsYXRlPGNsYXNzIFRJbnB1dEltYWdlLCBj
bGFzcyBUQ2xhc3NpZmllZEltYWdlPg0KaW50IA0KS21lYW5zVW5zdXBlcnZpc2VkQ2xhc3NpZmll
cjxUSW5wdXRJbWFnZSxUQ2xhc3NpZmllZEltYWdlPg0KOjpXaXRoQ29kZWJvb2tVc2VHTEEoKQ0K
ew0KICAvLyBEbyB0aGUgTGxveWQgaXRlcmF0aW9uLiAgVXNlIHRoZSBuZWFyZXN0IG5laWdoYm9y
IGNvbmRpdGlvbiB0bw0KICAvLyBmaW5kIHRoZSBjZWxscy4gIFRoZW4gZmluZCB0aGUgY2VudHJv
aWQgb2YgZWFjaCBjZWxsLg0KDQovLyBGaXJzdCBwYXNzIHJlcXVpcmVzIHZlcnkgbGFyZ2UgZGlz
dG9ydGlvbg0KDQogIGRvdWJsZSBvbGRkaXN0b3J0aW9uID0gbV9Eb3VibGVNYXhpbXVtOw0KICBk
b3VibGUgZGlzdG9ydGlvbiwgdGVtcGRpc3RvcnRpb247DQogIGludCAgICBwYXNzID0gMDsgLy8g
bm8gZW1wdHkgY2VsbHMgaGF2ZSBiZWVuIGZvdW5kIHlldCANCiAgaW50ICAgIGVtcHR5Y2VsbHM7
DQogIGludCAgICBiZXN0Y29kZXdvcmQ7DQoNCiAgbV9DdXJyZW50TnVtYmVyT2ZDb2Rld29yZHMg
PSBtX0NvZGVib29rLnJvd3MoKTsNCg0KICBkbyANCiAgICB7DQogICAgLy8gZW5jb2RlIGFsbCBv
ZiB0aGUgaW5wdXQgdmVjdG9ycyB1c2luZyB0aGUgZ2l2ZW4gY29kZWJvb2sgDQogICAgbmVhcmVz
dF9uZWlnaGJvcl9zZWFyY2hfYmFzaWMoJmRpc3RvcnRpb24pOw0KDQogICAgLy8gY2hlY2sgZm9y
IGxhY2sgb2YgY29udmVyZ2VuY2UgDQogICAgaWYgKCBvbGRkaXN0b3J0aW9uIDwgZGlzdG9ydGlv
biApIA0KICAgICAgew0KICAgICAgaXRrRXJyb3JNYWNybyg8PCJEaXN0b3J0aW9uIGlzIGluY3Jl
YXNpbmcsIG5vdCBkZWNyZWFzaW5nIik7DQogICAgICB0aHJvdyBFeGNlcHRpb25PYmplY3QoX19G
SUxFX18sIF9fTElORV9fKTsgLy8gR0xBX05PVF9DT05WRVJHRUQ7DQogICAgICB9DQoNCiAgICAv
LyBmaW5kIG51bWJlciBvZiBlbXB0eSBjZWxscw0KICAgIGVtcHR5Y2VsbHMgPSAwOw0KICAgIGZv
ciAoIHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG1fQ3VycmVudE51bWJlck9mQ29kZXdvcmRzOyBp
KysgKSANCiAgICAgIHsNCiAgICAgIGlmICggbV9Db2Rld29yZEhpc3RvZ3JhbVtpXVswXSA9PSAw
ICkgDQogICAgICAgIHsNCiAgICAgICAgZW1wdHljZWxscyArPSAxOw0KICAgICAgICBtX0NvZGV3
b3JkRGlzdG9ydGlvbltpXVswXSA9IDAuMDsNCiAgICAgICAgfQ0KICAgICAgfQ0KDQogICAgLy8g
aWYgZGlzdG9ydGlvbiA9IDAuMCwgb3INCiAgICAvLyBpZiBjaGFuZ2UgaW4gZGlzdG9ydGlvbiA8
IHRocmVzaG9sZCBBTkQgdGhlcmUgYXJlbid0IGFueSBlbXB0eSBjZWxscywNCiAgICAvLyBhbmQg
ZXhpdCANCiAgICBpZiAoIChkaXN0b3J0aW9uID09IDAuMCkgfHwgKCAoZW1wdHljZWxscyA9PSAw
KSAmJg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbGRkaXN0b3J0aW9uIC0g
ZGlzdG9ydGlvbikgLyBkaXN0b3J0aW9uIDwgbV9UaHJlc2hvbGQpICkgDQogICAgICB7DQogICAg
ICBtX091dHB1dE51bWJlck9mRW1wdHlDZWxscyAgID0gZW1wdHljZWxsczsNCiAgICAgIG1fT3V0
cHV0RGlzdG9ydGlvbiA9IGRpc3RvcnRpb247DQogICAgICByZXR1cm4gR0xBX0NPTlZFUkdFRDsN
CiAgICAgIH0NCg0KICAgIC8vIG5vIGVtcHR5IGNlbGxzLCBmaW5kIG5ldyBjZW50cm9pZHMgYW5k
IHJlaW5pdGlhbGl6ZSBmb3IgbmV4dCBwYXNzIA0KICAgIGlmICggZW1wdHljZWxscyA9PSAwICkg
DQogICAgICB7DQogICAgICBmb3IgKCB1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBtX0N1cnJlbnRO
dW1iZXJPZkNvZGV3b3JkczsgaSsrICkgDQogICAgICAgIGZvciggdW5zaWduZWQgaW50IGogPSAw
OyBqIDwgbV9WZWN0b3JEaW1lbnNpb247IGorKyApIA0KICAgICAgICAgIG1fQ29kZWJvb2tbaV1b
al0gPSBtX0NlbnRyb2lkW2ldW2pdOw0KDQogICAgICBvbGRkaXN0b3J0aW9uID0gZGlzdG9ydGlv
bjsNCiAgICAgIHBhc3MgPSAwOw0KICAgICAgfSAvLyBlbmQgaWYNCg0KICAgIC8vIHRoZXJlIGFy
ZSBlbXB0eSBjZWxscywgc3BsaXQgdGhlIGhpZ2hlc3QgZGlzdG9ydGlvbiBjb2Rld29yZHMuDQog
ICAgLy8gdHJ5IGFnYWluDQogICAgZWxzZSANCiAgICAgIHsNCiAgICAgIC8vIElmIHRoZXJlIGhh
dmUgYmVlbiB0b28gbWFueSBhdHRlbXB0cyB0byBmaWxsIGNlbGxzLCBzdG9wIGl0ZXJhdGlvbnMN
CiAgICAgIGlmICggcGFzcyA9PSBtX01heFNwbGl0QXR0ZW1wdHMgKSANCiAgICAgICAgew0KICAg
ICAgICBpdGtXYXJuaW5nTWFjcm8oPDwiVW5hYmxlIHRvIGZpbGwgYWxsIGVtcHR5IGNlbGxzIik7
DQogICAgICAgIG1fT3V0cHV0TnVtYmVyT2ZFbXB0eUNlbGxzID0gZW1wdHljZWxsczsNCiAgICAg
ICAgbV9PdXRwdXREaXN0b3J0aW9uID0gZGlzdG9ydGlvbjsNCiAgICAgICAgcmV0dXJuIEdMQV9D
T05WRVJHRUQ7DQogICAgICAgIH0gDQoNCiAgICAgIC8vIHRyeSBnZXR0aW5nIG5ldyBjb2Rld29y
ZHMsIHNlbmQgYSB3YXJuaW5nIHRvIHVzZXIgDQogICAgICBpdGtXYXJuaW5nTWFjcm8oPDwiQXR0
ZW1wdGluZyB0byBmaWxsIGVtcHR5IGNlbGxzIGluIHRoZSBjb2RlYm9vayIpOw0KDQogICAgICAv
LyBjb25zb2xpZGF0ZSB0aGUgaGlnaGVzdCBkaXN0b3J0aW9uIGNvZGV3b3JkcyBpbnRvIHRoZSBi
ZWdpbm5pbmcNCiAgICAgIC8vIG9mIHRoZSBhcnJheS4gIFRha2UgY2FyZSB0byBwcm90ZWN0IHpl
cm8gZGlzdG9ydGlvbiBjb2Rld29yZHMNCiAgICAgIC8vIHdoaWNoIGhhdmUgYSBwb3NpdGl2ZSBt
X0NvZGV3b3JkSGlzdC4gIG5vdGU6IHRoZXJlIG11c3QgYmUgYQ0KICAgICAgLy8gZmFzdGVyIHNv
cnQgYWxnb3JpdGhtLCBidXQgdGhpcyBldmVudCBzaG91bGQgYmUgdmVyeSB1bmxpa2VseQ0KICAg
ICAgZm9yICggdW5zaWduZWQgaW50IG4gPSAwOyBuIDwgbV9DdXJyZW50TnVtYmVyT2ZDb2Rld29y
ZHMgLSBlbXB0eWNlbGxzOyBuKysgKSANCiAgICAgICAgew0KICAgICAgICB0ZW1wZGlzdG9ydGlv
biA9IDAuMDsNCiAgICAgICAgYmVzdGNvZGV3b3JkID0gMDsNCiAgICAgICAgZm9yICggdW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgbV9OdW1iZXJPZkNvZGV3b3JkczsgaSsrICkgDQogICAgICAgICAg
ew0KICAgICAgICAgIGlmICggKCBtX0NvZGV3b3JkRGlzdG9ydGlvbltpXVswXSA+PSB0ZW1wZGlz
dG9ydGlvbiApICYmDQogICAgICAgICAgICAgICAoIG1fQ29kZXdvcmRIaXN0b2dyYW1baV1bMF0g
PiAwKSApIA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgdGVtcGRpc3RvcnRpb24gPSBtX0Nv
ZGV3b3JkRGlzdG9ydGlvbltpXVswXTsNCiAgICAgICAgICAgIGJlc3Rjb2Rld29yZCA9IGk7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgfQ0KDQogICAgICAgIC8vIHB1dCBoaWdoZXN0IGRpc3Rv
cnRpb24gY2VudHJvaWQgaW50byBudGggY29kZWJvb2sgcm93LA0KICAgICAgICAvLyBhbmQgZXJh
c2UgdGhlIHNldCB0aGUgaGlnaHRlc3QgY2VudHJvaWQgc3RhdHMgdG8gMCBzbw0KICAgICAgICAv
LyBpdCB3aWxsIG5vdCBiZSB1c2VkIGFnYWluLg0KDQogICAgICAgIC8vIGZpbmQgY2VudHJvaWQs
IHJlaW5pdGlhbGl6ZSANCg0KICAgICAgICBmb3IodW5zaWduZWQgaW50IGogPSAwOyBqIDwgbV9W
ZWN0b3JEaW1lbnNpb247IGorKyApDQogICAgICAgICAgbV9Db2RlYm9va1tuXVtqXSA9IG1fQ2Vu
dHJvaWRbYmVzdGNvZGV3b3JkXVtqXTsNCg0KICAgICAgICBtX0NvZGV3b3JkSGlzdG9ncmFtW2Jl
c3Rjb2Rld29yZF1bMF0gPSAwOw0KICAgICAgICBtX0NvZGV3b3JkRGlzdG9ydGlvbltiZXN0Y29k
ZXdvcmRdWzBdID0gMC4wOw0KICAgICAgICB9DQoNCiAgICAgIC8vIHNwbGl0IHRoZSByZXF1aXJl
ZCBudW1iZXIgb2YgY29kZXdvcmRzDQogICAgICBzcGxpdGNvZGV3b3JkcyggbV9DdXJyZW50TnVt
YmVyT2ZDb2Rld29yZHMgLSBlbXB0eWNlbGxzLCANCiAgICAgICAgICAgICAgICAgICAgICBlbXB0
eWNlbGxzLCBwYXNzICk7DQoNCiAgICAgIG9sZGRpc3RvcnRpb24gPSBkaXN0b3J0aW9uOw0KICAg
ICAgcGFzcysrOw0KICAgICAgfSAvLyBlbmQgZWxzZQ0KICAgIH0gd2hpbGUgKCBwYXNzIDw9IG1f
TWF4U3BsaXRBdHRlbXB0cyApOw0KICBpdGtFcnJvck1hY3JvKDw8IkZhdGFsIGVycm9yIik7DQog
IHRocm93IEV4Y2VwdGlvbk9iamVjdChfX0ZJTEVfXywgX19MSU5FX18pOyAvL3JldHVybiBHTEFf
Tk9UX0NPTlZFUkdFRDsNCg0KfS8vIGVuZCBsb2NhbGZuX0dMQQ0KDQp0ZW1wbGF0ZTxjbGFzcyBU
SW5wdXRJbWFnZSwgY2xhc3MgVENsYXNzaWZpZWRJbWFnZT4NCnZvaWQgDQpLbWVhbnNVbnN1cGVy
dmlzZWRDbGFzc2lmaWVyPFRJbnB1dEltYWdlLFRDbGFzc2lmaWVkSW1hZ2U+DQo6Om5lYXJlc3Rf
bmVpZ2hib3Jfc2VhcmNoX2Jhc2ljKCBkb3VibGUgKmRpc3RvcnRpb24gKQ0Kew0KICAvL2l0a0Rl
YnVnTWFjcm8oPDwiU3RhcnQgbmVhcmVzdF9uZWlnaGJvcl9zZWFyY2hfYmFzaWMoKSIpOw0KDQog
IGRvdWJsZSBiZXN0ZGlzdG9ydGlvbiwgdGVtcGRpc3RvcnRpb24sIGRpZmY7DQogIGludCAgICBi
ZXN0Y29kZXdvcmQ7DQogIGRvdWJsZSAqdGVtcFZlYyA9ICggZG91YmxlICogKSBuZXcgZG91Ymxl
W21fVmVjdG9yRGltZW5zaW9uXTsNCg0KLy8gdW51c2VkOiBkb3VibGUgKmNlbnRyb2lkVmVjVGVt
cCA9ICggZG91YmxlICogKSBuZXcgZG91YmxlW21fVmVjdG9yRGltZW5zaW9uXTsNCg0KLy8gaW5p
dGlhbGl6ZSBjb2Rld29yZCBoaXN0b2dyYW0gYW5kIGRpc3RvcnRpb24gDQogIGZvciAoIHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IG1fQ3VycmVudE51bWJlck9mQ29kZXdvcmRzOyBpKysgKSANCiAg
ICB7DQogICAgbV9Db2Rld29yZEhpc3RvZ3JhbVtpXVswXSA9IDA7DQogICAgbV9Db2Rld29yZERp
c3RvcnRpb25baV1bMF0gPSAwLjA7DQogICAgfQ0KDQogIC8vIGluaXRpYWxpemUgY2VudHJvaWQg
aWYgaXQgZXhpc3RzIA0KICBtX0NlbnRyb2lkLmZpbGwoIE5VTEwgKTsNCg0KICAvLyBwZXJmb3Jt
IGVuY29kaW5nIHVzaW5nIHBhcnRpYWwgZGlzdG9ydGlvbiBtZXRob2QgDQogICpkaXN0b3J0aW9u
ID0gMC4wOw0KDQogIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgLy8gRGVjbGFyZSB0aGUgaXRlcmF0b3JzIGZvciB0
aGUgaW1hZ2UgYW5kIHRoZSBjb2RlYm9vaw0KICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIElucHV0SW1hZ2VUeXBl
ICBpbnB1dEltYWdlID0gdGhpcy0+R2V0SW5wdXRJbWFnZSgpOw0KDQogIHR5cGVkZWYgdHlwZW5h
bWUgVElucHV0SW1hZ2U6OlBpeGVsVHlwZSAgICBJbnB1dFBpeGVsOw0KDQogIHR5cGVkZWYNCiAg
ICBJbWFnZVJlZ2lvbkl0ZXJhdG9yPFRJbnB1dEltYWdlPiBJbnB1dEl0ZXJhdG9yOw0KDQogIElu
cHV0SXRlcmF0b3IgaW5JdCggaW5wdXRJbWFnZSwgaW5wdXRJbWFnZS0+R2V0QnVmZmVyZWRSZWdp
b24oKSApOw0KDQogIElucHV0SXRlcmF0b3IgaW1nSXQgICAgID0gIGluSXQuQmVnaW4oKTsNCiAg
SW5wdXRQaXhlbCAqdGVtcEltZ0l0ICAgPSAmKGltZ0l0LlZhbHVlKCkpOyAvLyBkYW5nZXJvdXMh
DQogIElucHV0UGl4ZWwgKmluSW1nSXQgICAgID0gJihpbWdJdC5WYWx1ZSgpKTsgLy8gZGFuZ2Vy
b3VzIQ0KDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQovLyBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiB2ZWN0b3JzIGlu
IHRoZSBpbnB1dCBkYXRhIHNldA0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIEltYWdlU2l6ZVR5cGUgc2l6ZSA9
IGlucHV0SW1hZ2UtPkdldEJ1ZmZlcmVkUmVnaW9uKCkuR2V0U2l6ZSgpOw0KDQogIC8vIHVudXNl
ZDogIHVuc2lnbmVkIGxvbmcgKnRlbXAgPW5ldyB1bnNpZ25lZCBsb25nIFtUSW5wdXRJbWFnZTo6
SW1hZ2VEaW1lbnNpb25dOw0KDQogIHVuc2lnbmVkIGludCB0b3RhbE51bVZlY3NJbklucHV0ID0g
MTsNCiAgZm9yKCB1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBUSW5wdXRJbWFnZTo6SW1hZ2VEaW1l
bnNpb247IGkrKyApIA0KICAgIHRvdGFsTnVtVmVjc0luSW5wdXQgKj0gKHVuc2lnbmVkIGxvbmcp
IHNpemVbaV07DQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vTG9vcCB0aHJvdWdoIHRoZSBpbnB1dCBpbWFnZSB2
ZWN0b3JzDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgSW5wdXRQaXhlbFZlY3RvclR5cGUgICBpbnB1dEltYWdl
UGl4ZWxWZWN0b3I7IA0KDQogIGZvciAodW5zaWduZWQgaW50IG4gPSAwOyBuIDwgdG90YWxOdW1W
ZWNzSW5JbnB1dDsgbisrKSB7DQoNCiAgLy8gbWFrZSB0ZW1wdmVjdG9yIHBvaW50IHRvIG9uZSB2
ZWN0b3IgDQogIHRlbXBJbWdJdCA9IGluSW1nSXQgKyBuOw0KDQogIC8vIGtlZXAgY29udmVudGlv
biB0aGF0IHRpZXMgZ28gdG8gbG93ZXIgaW5kZXggDQogIGJlc3RkaXN0b3J0aW9uID0gbV9Eb3Vi
bGVNYXhpbXVtOw0KICBiZXN0Y29kZXdvcmQgPSAwOyAgICANCg0KICBmb3IgKCB1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBtX0N1cnJlbnROdW1iZXJPZkNvZGV3b3JkczsgaSsrICkgDQogICAgeyAN
CiAgICAvLyBmaW5kIHRoZSBiZXN0IGNvZGV3b3JkIA0KICAgIHRlbXBkaXN0b3J0aW9uID0gMC4w
Ow0KICAgIGlucHV0SW1hZ2VQaXhlbFZlY3RvciA9ICp0ZW1wSW1nSXQ7DQoNCiAgICBmb3IgKCB1
bnNpZ25lZCBpbnQgaiA9IDA7IGogPCBtX1ZlY3RvckRpbWVuc2lvbjsgaisrICkgDQogICAgICB7
DQogICAgICBkaWZmID0gKCBkb3VibGUgKSAoIGlucHV0SW1hZ2VQaXhlbFZlY3RvcltqXSAtIG1f
Q29kZWJvb2tbaV1bal0gKTsgDQogICAgICB0ZW1wZGlzdG9ydGlvbiArPSBkaWZmKmRpZmY7DQoN
CiAgICAgIGlmICggdGVtcGRpc3RvcnRpb24gPiBiZXN0ZGlzdG9ydGlvbiApIGJyZWFrOw0KICAg
ICAgfQ0KDQogICAgaWYgKCB0ZW1wZGlzdG9ydGlvbiA8IGJlc3RkaXN0b3J0aW9uICkgDQogICAg
ICB7DQogICAgICBiZXN0ZGlzdG9ydGlvbiA9IHRlbXBkaXN0b3J0aW9uOw0KICAgICAgYmVzdGNv
ZGV3b3JkID0gaTsNCiAgICAgIH0NCg0KICAgIC8vIGlmIHRoZSBiZXN0ZGlzdG9ydGlvbiBpcyAw
LjAsIHRoZSBiZXN0IGNvZGV3b3JkIGlzIGZvdW5kDQogICAgaWYgKCBiZXN0ZGlzdG9ydGlvbiA9
PSAwLjAgKSBicmVhazsNCiAgICB9DQoNCiAgbV9Db2Rld29yZEhpc3RvZ3JhbVtiZXN0Y29kZXdv
cmRdWzBdICs9IDE7DQogIG1fQ29kZXdvcmREaXN0b3J0aW9uW2Jlc3Rjb2Rld29yZF1bMF0gKz0g
YmVzdGRpc3RvcnRpb247DQogICpkaXN0b3J0aW9uICs9IGJlc3RkaXN0b3J0aW9uOw0KDQogIGlu
cHV0SW1hZ2VQaXhlbFZlY3RvciA9ICp0ZW1wSW1nSXQ7DQoNCiAgZm9yICh1bnNpZ25lZCBpbnQg
aiA9IDA7IGogPCBtX1ZlY3RvckRpbWVuc2lvbjsgaisrICkgDQogICAgbV9DZW50cm9pZFtiZXN0
Y29kZXdvcmRdW2pdICs9IGlucHV0SW1hZ2VQaXhlbFZlY3RvcltqXTsNCg0KICB9IC8vIGFsbCB0
cmFpbmluZyB2ZWN0b3JzIGhhdmUgYmVlbiBlbmNvZGVkIA0KDQogIC8vIGNvbXB1dGUgdGFibGUg
ZnJlcXVlbmN5IGFuZCBkaXN0b3J0aW9uIA0KICBmb3IgKCB1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBtX0N1cnJlbnROdW1iZXJPZkNvZGV3b3JkczsgaSsrICkgDQogICAgew0KICAgIGlmICggbV9D
b2Rld29yZEhpc3RvZ3JhbVtpXVswXSA+IDAgKSB7DQogICAgbV9Db2Rld29yZERpc3RvcnRpb25b
aV1bMF0gLz0gKGRvdWJsZSkgbV9Db2Rld29yZEhpc3RvZ3JhbVtpXVswXTsNCiAgICB9DQogICAg
fQ0KDQogIC8vIGNvbXB1dGUgY2VudHJvaWQgDQogIGZvciAoIHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IG1fQ3VycmVudE51bWJlck9mQ29kZXdvcmRzOyBpKysgKSANCiAgICB7DQogICAgaWYgKCBt
X0NvZGV3b3JkSGlzdG9ncmFtW2ldWzBdID4gMCApIA0KICAgICAgew0KICAgICAgZm9yICggdW5z
aWduZWQgaW50IGogPSAwOyBqIDwgbV9WZWN0b3JEaW1lbnNpb247IGorKyApIA0KICAgICAgICBt
X0NlbnRyb2lkW2ldW2pdIC89IChkb3VibGUpIG1fQ29kZXdvcmRIaXN0b2dyYW1baV1bMF07DQog
ICAgICB9DQogICAgfQ0KDQogIC8vIG5vcm1hbGl6ZSB0aGUgZGlzdG9ydGlvbnMgDQoNCiAgKmRp
c3RvcnRpb24gLz0gKCBkb3VibGUgKSB0b3RhbE51bVZlY3NJbklucHV0Ow0KDQogIC8vIGNoZWNr
IGZvciBiaXphcnJlIGVycm9ycyANCiAgaWYgKCAqZGlzdG9ydGlvbiA8IDAuMCApIA0KICAgIHsN
CiAgICBpdGtFcnJvck1hY3JvKDw8IkNvbXB1dGF0aW9uYWwgb3ZlcmZsb3ciKTsNCiAgICB0aHJv
dyBFeGNlcHRpb25PYmplY3QoX19GSUxFX18sIF9fTElORV9fKTsNCiAgICB9DQoNCiAgLy9pdGtE
ZWJ1Z01hY3JvKDw8IkRvbmUgbmVhcmVzdF9uZWlnaGJvcl9zZWFyY2hfYmFzaWMoKSIpOw0KICBk
ZWxldGUgW10gdGVtcFZlYzsNCg0KfS8vIEVuZCBuZWFyZXN0X25laWdoYm9yX3NlYXJjaF9iYXNp
Yw0KDQp0ZW1wbGF0ZTxjbGFzcyBUSW5wdXRJbWFnZSwgY2xhc3MgVENsYXNzaWZpZWRJbWFnZT4N
CnZvaWQgDQpLbWVhbnNVbnN1cGVydmlzZWRDbGFzc2lmaWVyPFRJbnB1dEltYWdlLFRDbGFzc2lm
aWVkSW1hZ2U+DQo6OnNwbGl0Y29kZXdvcmRzKCBpbnQgY3VycmVudFNpemUsIGludCBudW1EZXNp
cmVkLCBpbnQgc2NhbGUgKQ0Kew0KICBkb3VibGUgKm5ld0NvZGVib29rRGF0YSA9ICggZG91Ymxl
ICogKSBuZXcgZG91YmxlW21fVmVjdG9yRGltZW5zaW9uXTsNCiAgZG91YmxlICppbkNvZGVib29r
RGF0YSAgPSAoIGRvdWJsZSAqICkgbmV3IGRvdWJsZVttX1ZlY3RvckRpbWVuc2lvbl07DQoNCiAg
Zm9yICggaW50IGkgPSAwOyBpIDwgbnVtRGVzaXJlZDsgaSsrICkgDQogICAgew0KICAgIGZvcih1
bnNpZ25lZCBpbnQgaiA9IDA7IGogPCBtX1ZlY3RvckRpbWVuc2lvbjsgaisrICkNCiAgICAgIGlu
Q29kZWJvb2tEYXRhW2pdID0gbV9Db2RlYm9va1tpXVtqXTsNCg0KICAgIHBlcnR1cmIoaW5Db2Rl
Ym9va0RhdGEsIHNjYWxlLCBuZXdDb2RlYm9va0RhdGEpOw0KDQogICAgZm9yKHVuc2lnbmVkIGlu
dCBqPTA7IGo8IG1fVmVjdG9yRGltZW5zaW9uOyBqKyspDQogICAgICBtX0NvZGVib29rW2krY3Vy
cmVudFNpemVdW2pdID0gbmV3Q29kZWJvb2tEYXRhW2pdOw0KICAgIH0NCg0KICBkZWxldGUgW10g
aW5Db2RlYm9va0RhdGE7DQogIGRlbGV0ZSBbXSBuZXdDb2RlYm9va0RhdGE7DQoNCn0vLyBFbmQg
c3BsaXRjb2Rld29yZHMNCg0KdGVtcGxhdGU8Y2xhc3MgVElucHV0SW1hZ2UsIGNsYXNzIFRDbGFz
c2lmaWVkSW1hZ2U+DQp2b2lkIA0KS21lYW5zVW5zdXBlcnZpc2VkQ2xhc3NpZmllcjxUSW5wdXRJ
bWFnZSxUQ2xhc3NpZmllZEltYWdlPg0KOjpwZXJ0dXJiKGRvdWJsZSAqb2xkQ29kZXdvcmQsIA0K
ICAgICAgICAgIGludCBzY2FsZSwgDQogICAgICAgICAgZG91YmxlICpuZXdDb2Rld29yZCkNCnsN
CiAgdW5zaWduZWQgaW50ICBpOw0KICBkb3VibGUgICAgICAgIGFkZG9mZnNldDsNCiAgZG91Ymxl
ICAgICAgICBtdWxvZmZzZXQ7DQogIGRvdWJsZSAgICAgICAgcmFuZF9udW0gOw0KDQogIGFkZG9m
ZnNldCA9IG1fT2Zmc2V0QWRkIC8gcG93KCAyLjAsICggZG91YmxlICkgc2NhbGUgKTsNCiAgbXVs
b2Zmc2V0ID0gbV9PZmZzZXRNdWx0aXBseSAvIHBvdyggMi4wLCAoIGRvdWJsZSApIHNjYWxlICk7
DQoNCiAgZm9yICggaSA9IDA7IGkgPCBtX1ZlY3RvckRpbWVuc2lvbjsgaSsrICkgDQogICAgew0K
ICAgIHNyYW5kKCAodW5zaWduZWQpdGltZSggTlVMTCApICk7DQogICAgcmFuZF9udW0gPSAocmFu
ZCgpKS8oKGRvdWJsZSlSQU5EX01BWCk7DQoNCiAgICBpZiAoIG9sZENvZGV3b3JkW2ldID09IDAu
MCApIA0KICAgICAgew0KICAgICAgbmV3Q29kZXdvcmRbaV0gPSBhZGRvZmZzZXQgKiByYW5kX251
bTsNCiAgICAgIH0NCg0KICAgIGVsc2UgaWYgKCBmYWJzKG9sZENvZGV3b3JkW2ldKSA8IDAuOSAq
IGFkZG9mZnNldCApIA0KICAgICAgew0KICAgICAgbmV3Q29kZXdvcmRbaV0gPSBvbGRDb2Rld29y
ZFtpXTsNCg0KICAgICAgaWYgKCBvbGRDb2Rld29yZFtpXSA8IDAgKSANCiAgICAgICAgew0KICAg
ICAgICBuZXdDb2Rld29yZFtpXSAtPSAgYWRkb2Zmc2V0ICogcmFuZF9udW07DQogICAgICAgIH0N
CiAgICAgIGVsc2UgDQogICAgICAgIHsNCiAgICAgICAgbmV3Q29kZXdvcmRbaV0gKz0gIGFkZG9m
ZnNldCAqIHJhbmRfbnVtOw0KICAgICAgICB9DQogICAgICB9DQoNCiAgICBlbHNlIA0KICAgICAg
ew0KICAgICAgbmV3Q29kZXdvcmRbaV0gPSBvbGRDb2Rld29yZFtpXSArIG11bG9mZnNldCAqIG9s
ZENvZGV3b3JkW2ldICogcmFuZF9udW07DQogICAgICB9DQoNCiAgICB9IC8vIEVuZCBsb29waW5n
IHRocm91Z2ggdGhlIHZlY3Rvcg0KDQp9IC8vIEVuZCBwZXJ0dXJiDQoNCnRlbXBsYXRlPGNsYXNz
IFRJbnB1dEltYWdlLCBjbGFzcyBUQ2xhc3NpZmllZEltYWdlPg0KaW50IA0KS21lYW5zVW5zdXBl
cnZpc2VkQ2xhc3NpZmllcjxUSW5wdXRJbWFnZSxUQ2xhc3NpZmllZEltYWdlPg0KOjpXaXRob3V0
Q29kZWJvb2tVc2VMQkcoKQ0Kew0KICAvL2l0a0RlYnVnTWFjcm8oPDwiU3RhcnQgbG9jYWwgZnVu
Y3Rpb24gbGJnIGRlc2lnbigpIik7DQoNCiAgdW5zaWduZWQgaW50IHRtcF9uY29kZXdvcmRzLCBq
Ow0KDQovLyBkbyB0aGUgTEJHIGFsZ29yaXRobSANCi8vIGl0ZXJhdGlvbnMgYmVnaW5zIGhlcmUg
DQovLyBzdGFydCB3aXRoIG9uZSB3b3JkIGNvZGVib29rIA0KDQovLyBzZXQgaW5pdGlhbCBkaXN0
b3J0aW9uIA0KICBtX091dHB1dERpc3RvcnRpb24gPSBtX0RvdWJsZU1heGltdW07DQoNCiAgLy8g
QXBwbHkgdGhlIGdlbmVyYWxpemUgTGxveWQgYWxnb3JpdGhtIG9uIGFsbCBjb2RlYm9vayBzaXpl
cyANCiAgZm9yICggdG1wX25jb2Rld29yZHMgPSAxOyB0bXBfbmNvZGV3b3JkcyA8IG1fTnVtYmVy
T2ZDb2Rld29yZHM7ICkgDQogICAgew0KICAgIC8vIHJ1biB0aGUgR0xBIGZvciBjb2RlYm9vayBv
ZiBzaXplIGkgDQogICAgLy8gcnVuIGdsYSANCiAgICBXaXRoQ29kZWJvb2tVc2VHTEEoKTsNCg0K
ICAgIC8vIGlmIGVtcHR5IGNlbGxzLCBkbyBub3QgY29udGludWUgDQogICAgLy8gaWYgZGlzdG9y
dGlvbiBpcyB6ZXJvLCBubyBuZWVkIHRvIGNvbnRpbnVlLg0KICAgIGlmICggbV9PdXRwdXROdW1i
ZXJPZkVtcHR5Q2VsbHMgPiAwIHx8IG1fT3V0cHV0RGlzdG9ydGlvbiA9PSAwLjAgKSBicmVhazsN
Cg0KICAvLyBmaW5kIHRoZSBudW1iZXIgb2YgbmV3IGNvZGV3b3JkcyB0byBiZSBtYWRlIChqLXRt
cF9uY29kZXdvcmRzKQ0KICAgIGogPSAyICogdG1wX25jb2Rld29yZHM7DQogICAgaWYgKCBqID4g
bV9OdW1iZXJPZkNvZGV3b3JkcyApIHsgaiA9IG1fTnVtYmVyT2ZDb2Rld29yZHM7IH0NCg0KICAg
IC8vIHNwbGl0IHRoZSBjb2Rld29yZHMNCg0KICAvLyBpbmNyZWFzZSBzaXplIG9mIGNvZGVib29r
IA0KICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgb2xkU2l6ZT0gbV9Db2RlYm9vay5yb3dzKCk7DQog
ICAgUmVhbGxvY2F0ZSggb2xkU2l6ZSwgaik7DQoNCiAgLy8gaW5pdGlhbGl6ZSB0aGUgbmV3IGNv
ZGV3b3JkcyANCiAgICBzcGxpdGNvZGV3b3JkcyggdG1wX25jb2Rld29yZHMsICggaiAtIHRtcF9u
Y29kZXdvcmRzICksIChpbnQpIDAgKTsNCg0KICAgIC8vIGlmIGVycm9yLCBkbyBub3QgY29udGlu
dWUgDQoNCiAgLy8gaW5jcmVtZW50IHRoZSBjb2RlYm9vayBzaXplIA0KICAgIHRtcF9uY29kZXdv
cmRzID0gajsNCiAgICB9DQoNCiAgLy8gaWYgdGhlcmUgYXJlIG5vIGVycm9ycywgbm8gZW1wdHkg
Y2VsbHMgYW5kIHRoZSBkaXN0b3J0aW9uIGlzIHBvc2l0aXZlLA0KICAvLyBjcmVhdGUgdGhlIGZp
bmFsIGNvZGVib29rIA0KICBpZiAoIG1fT3V0cHV0TnVtYmVyT2ZFbXB0eUNlbGxzID09IDAgJiYg
bV9PdXRwdXREaXN0b3J0aW9uID4gMC4wICkgDQogICAgew0KICAgIC8vIHJ1biBnbGEgDQogICAg
V2l0aENvZGVib29rVXNlR0xBKCk7DQogICAgfQ0KDQogIC8vIGRvbmUgd2l0aCBhbGwgaXRlcmF0
aW9ucyANCg0KICBjb25zdCB1bnNpZ25lZCBsb25nIGNvZGVib29rU2l6ZSA9IG1fQ29kZWJvb2su
cm93cygpOyANCiAgaWYgKCBtX051bWJlck9mQ29kZXdvcmRzICE9IGNvZGVib29rU2l6ZSApIA0K
ICAgIHsNCiAgICBpdGtEZWJ1Z01hY3JvKDw8IlJldHVybmluZyBmZXdlciBjb2Rld29yZHMgdGhh
biByZXF1ZXN0ZWQiKTsNCiAgICB9Ly8gZW5kIGlmDQoNCiAgLy9pdGtEZWJ1Z01hY3JvKDw8IkRv
bmUgd2l0aCBsb2NhbCBmdW5jdGlvbiBMQkcgKCkiKTsNCg0KICByZXR1cm4gTEJHX0NPTVBMRVRF
RDsNCn0vLyBFbmQgTEJHKCkNCg0KfSAvLyBuYW1lc3BhY2UgaXRrDQoNCg0KDQoNCg0KDQoNCg0K
I2VuZGlmDQo=

------_=_NextPart_001_01C18504.9E0907F0--