<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>12188</bug_id>
          
          <creation_ts>2007-01-09 18:59:58 -0800</creation_ts>
          <short_desc>[S60] Can&apos;t change input mode in WAP CSS formatted fields.</short_desc>
          <delta_ts>2011-03-21 11:52:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>420+</version>
          <rep_platform>S60 Emulator</rep_platform>
          <op_sys>S60 3rd edition</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Shyam Sareen">shyam.sareen</reporter>
          <assigned_to name="Shyam Sareen">shyam.sareen</assigned_to>
          <cc>bradley.morrison</cc>
    
    <cc>Sachin.Padma</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>35942</commentid>
    <comment_count>0</comment_count>
    <who name="Shyam Sareen">shyam.sareen</who>
    <bug_when>2007-01-09 18:59:58 -0800</bug_when>
    <thetext>TSW ID: TMCN-6S5HZR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35912</commentid>
    <comment_count>1</comment_count>
    <who name="Shyam Sareen">shyam.sareen</who>
    <bug_when>2007-01-10 06:19:47 -0800</bug_when>
    <thetext>TSW ID: TMCN-6S5HZR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35910</commentid>
    <comment_count>2</comment_count>
      <attachid>12344</attachid>
    <who name="Shyam Sareen">shyam.sareen</who>
    <bug_when>2007-01-10 06:23:06 -0800</bug_when>
    <thetext>Created attachment 12344
Patch-1 for 3.2/CCB</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35729</commentid>
    <comment_count>3</comment_count>
      <attachid>12370</attachid>
    <who name="Shyam Sareen">shyam.sareen</who>
    <bug_when>2007-01-11 14:32:17 -0800</bug_when>
    <thetext>Created attachment 12370
Patch-2 for CCB/3.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35384</commentid>
    <comment_count>4</comment_count>
      <attachid>12370</attachid>
    <who name="Sachin Padma">Sachin.Padma</who>
    <bug_when>2007-01-12 13:04:29 -0800</bug_when>
    <thetext>Comment on attachment 12370
Patch-2 for CCB/3.2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35386</commentid>
    <comment_count>5</comment_count>
    <who name="Sachin Padma">Sachin.Padma</who>
    <bug_when>2007-01-12 13:09:28 -0800</bug_when>
    <thetext>committed as r18809</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35319</commentid>
    <comment_count>6</comment_count>
    <who name="Sachin Padma">Sachin.Padma</who>
    <bug_when>2007-01-12 14:37:06 -0800</bug_when>
    <thetext>The fix is incorrect. Please resubmit a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34891</commentid>
    <comment_count>7</comment_count>
    <who name="Bradley Morrison">bradley.morrison</who>
    <bug_when>2007-01-14 22:10:36 -0800</bug_when>
    <thetext>Reverted in 18847</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76805</commentid>
    <comment_count>8</comment_count>
    <who name="Bradley Morrison">bradley.morrison</who>
    <bug_when>2008-04-09 11:31:58 -0700</bug_when>
    <thetext>Bulk update of s60 bugs - tagging and closing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77042</commentid>
    <comment_count>9</comment_count>
    <who name="Bradley Morrison">bradley.morrison</who>
    <bug_when>2008-04-09 11:39:49 -0700</bug_when>
    <thetext>Bulk closing of all s60 platform bugs. 

Sorry for the noise!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370650</commentid>
    <comment_count>10</comment_count>
    <who name="Joel Parks">joel.parks</who>
    <bug_when>2011-03-21 11:52:59 -0700</bug_when>
    <thetext>re-purposing InTSW keyword for use by QtWebkit team</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>12344</attachid>
            <date>2007-01-10 06:23:06 -0800</date>
            <delta_ts>2007-01-11 14:32:54 -0800</delta_ts>
            <desc>Patch-1 for 3.2/CCB</desc>
            <filename>wssFormat.patch</filename>
            <type>text/plain</type>
            <size>60248</size>
            <attacher name="Shyam Sareen">shyam.sareen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODczOCkNCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpA
QCAtMSwzICsxLDUxIEBADQorMjAwNy0wMS0xMCAgc2FyZWVuICA8c2h5YW0uc2FyZWVuQG5va2lh
LmNvbT4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IFNhY2hpbiBQYWRtYS4NCisgICAgICAgIERF
U0M6IENhbid0IGNoYW5nZSBpbnB1dCBtb2RlIGluIFdBUCBDU1MgZm9ybWF0dGVkIGZpZWxkcy4o
VFNXIElEOiBUTUNOLTZTNUhaUikNCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMTg4DQorDQorICAgICAgICAqIEJyb3dzZXJDb3JlL0Zvcm1jb250cm9s
cy9pbmMvRkNvbnRyb2xmb3JtYXRoYW5kbGVyLmg6DQorICAgICAgICAoVElucHV0Rm9ybWF0Q2hh
cjo6KToNCisgICAgICAgICogQnJvd3NlckNvcmUvRm9ybWNvbnRyb2xzL3NyYy9GQ29udHJvbGZv
cm1hdGhhbmRsZXIuY3BwOg0KKyAgICAgICAgKFRJbnB1dEZvcm1hdENoYXI6OlRJbnB1dEZvcm1h
dENoYXIpOg0KKyAgICAgICAgKFRJbnB1dEZvcm1hdENoYXI6OkZvcmNlZENhc2UpOg0KKyAgICAg
ICAgKFRJbnB1dEZvcm1hdENoYXI6OlN1Z2dlc3RlZENhc2UpOg0KKyAgICAgICAgKFRJbnB1dEZv
cm1hdENoYXI6OkFscGhhQWxsb3dlZCk6DQorICAgICAgICAoVElucHV0Rm9ybWF0Q2hhcjo6TnVt
ZXJpY0FsbG93ZWQpOg0KKyAgICAgICAgKFRJbnB1dEZvcm1hdENoYXI6OlNwZWNpYWxBbGxvd2Vk
KToNCisgICAgICAgIChUSW5wdXRGb3JtYXRDaGFyOjpDaGFyKToNCisgICAgICAgIChUSW5wdXRG
b3JtYXRDaGFyOjpTdGF0aWMpOg0KKyAgICAgICAgKFRTdGF0aWNDaGFyOjpUU3RhdGljQ2hhcik6
DQorICAgICAgICAoVFN0YXRpY0NoYXI6OkNoYXIpOg0KKyAgICAgICAgKFRTdGF0aWNDaGFyOjpQ
b3MpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OkNJbnB1dEZvcm1hdEhhbmRsZXIp
Og0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OkNvbnN0cnVjdEwpOg0KKyAgICAgICAg
KENJbnB1dEZvcm1hdEhhbmRsZXI6Ok5ld0xDKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5k
bGVyOjpOZXdMKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjp+Q0lucHV0Rm9ybWF0
SGFuZGxlcik6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6U2V0VGV4dEwpOg0KKyAg
ICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OlRleHRMQyk6DQorICAgICAgICAoQ0lucHV0Rm9y
bWF0SGFuZGxlcjo6SW5zZXJ0TCk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6RGVs
ZXRlKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpTdGF0aWNUZXh0TEMpOg0KKyAg
ICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6Ok51bWJlck9mU3RhdGljKToNCisgICAgICAgIChD
SW5wdXRGb3JtYXRIYW5kbGVyOjpHZXRGb3JtYXQpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhh
bmRsZXI6OlBvc3RGaXgpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6Ok1pbkxlbmd0
aCk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6TWF4TGVuZ3RoKToNCisgICAgICAg
IChDSW5wdXRGb3JtYXRIYW5kbGVyOjpWYWxpZGF0ZUNoYXIpOg0KKyAgICAgICAgKENJbnB1dEZv
cm1hdEhhbmRsZXI6OlZhbGlkYXRlVGV4dExDKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5k
bGVyOjpWYWxpZGF0ZVRleHRMKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpQb3NJ
bmNsdWRpbmdTdGF0aWMpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OlBvc0V4bHVk
aW5nU3RhdGljKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpQcmV2aW91c05vblN0
YXRpYyk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6TmV4dE5vblN0YXRpYyk6DQor
ICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6Rmlyc3RFbXB0eSk6DQorICAgICAgICAoQ0lu
cHV0Rm9ybWF0SGFuZGxlcjo6UHJldmlvdXNTdGF0aWMpOg0KKyAgICAgICAgKENJbnB1dEZvcm1h
dEhhbmRsZXI6OklzUG9zU3RhdGljKToNCisgICAgICAgICogQnJvd3NlckNvcmUvRm9ybWNvbnRy
b2xzL3NyYy9GSW5wdXRsRm9ybWF0dGVkRWRpdG9yLmNwcDoNCisgICAgICAgIChDSW5wdXRGb3Jt
YXR0ZWRFZGl0b3I6OlVwZGF0ZUVkaXRpbmdQYXJhbWV0ZXJzKToNCisNCiAyMDA3LTAxLTA5ICBz
YXJlZW4gIDxzaHlhbS5zYXJlZW5Abm9raWEuY29tPg0KIA0KICAgICAgICAgUmV2aWV3ZWQgYnkg
U2FjaGluIFBhZG1hLg0KSW5kZXg6IFdlYktpdC9Ccm93c2VyQ29yZS9Gb3JtY29udHJvbHMvaW5j
L0ZDb250cm9sZm9ybWF0aGFuZGxlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJD
b3JlL0Zvcm1jb250cm9scy9pbmMvRkNvbnRyb2xmb3JtYXRoYW5kbGVyLmgJKHJldmlzaW9uIDE4
NzM4KQ0KKysrIFdlYktpdC9Ccm93c2VyQ29yZS9Gb3JtY29udHJvbHMvaW5jL0ZDb250cm9sZm9y
bWF0aGFuZGxlci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtOSwzNCArOSwzNCBAQA0KICogICAgQ29w
eXJpZ2h0IChjKSAyMDA2LCBOb2tpYSBDb3Jwb3JhdGlvbg0KICogICAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4NCiAqICANCi0qICAJUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQotKiAgCW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KLSogIAlhcmUgbWV0
Og0KKyogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dA0KKyogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyogIGFyZSBtZXQ6DQogKiAgDQotKiAg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQNCisqICAgICAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KICogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCi0qICAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodA0KKyogICAgICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQogKiAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluDQogKiAgICAgICAg
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQ0KICogICAgICAgIGRpc3RyaWJ1dGlvbi4NCi0qICAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IHRoZSBOb2tpYSBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KKyogICAgICAgIE5l
aXRoZXIgdGhlIG5hbWUgb2YgdGhlIE5va2lhIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2Yg
aXRzDQogKiAgICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkDQogKiAgICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KICogIA0KLSogIAlUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTDQotKiAgCSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UDQotKiAgCUxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KLSogIAlBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVA0K
LSogIAlPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwNCi0qICAJU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVA0KLSogIAlMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwNCi0qICAJ
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZDQotKiAgCVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCi0qICAJKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUNCi0qICAJVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SA0KLSogIAlEQU1BR0UuDQorKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KKyogICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorKiAgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SDQorKiAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCisqICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisqICBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQor
KiAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsDQorKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQorKiAgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KKyogIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFDQorKiAgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSA0KKyogIERBTUFHRS4NCiAqICANCi0qICAgIFBsZWFzZSBzZWUg
ZmlsZSBwYXRlbnRsaWNlbnNlLnR4dCBmb3IgZnVydGhlciBncmFudHMuDQorKiAgUGxlYXNlIHNl
ZSBmaWxlIHBhdGVudGxpY2Vuc2UudHh0IGZvciBmdXJ0aGVyIGdyYW50cy4NCiAqID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KICovDQogDQpAQCAtNTYsMTkgKzU2LDE5IEBAIF9MSVQoIEtPYnNjdXJp
bmdDaGFyLCAiKiIgKTsNCiAvLyBEQVRBIFRZUEVTDQogDQogZW51bSBUV2FwRG9jVHlwZQ0KLQl7
DQotCUVJbnB1dERvY1R5cGVfSXNfTGl0ZXJhbF9TdHJpbmcsDQotCUVXbWxEb2NUeXBlX1Vua25v
d24sDQotCUVXbWxEb2NUeXBlX1dtbF8xXzAsDQotCUVXbWxEb2NUeXBlX1d0YV8xXzAsDQotCUVX
bWxEb2NUeXBlX1dtbF8xXzEsDQotCUVXbWxEb2NUeXBlX1NpXzFfMCwNCi0JRVdtbERvY1R5cGVf
U2xfMV8wLA0KLQlFV21sRG9jVHlwZV9Db18xXzAsDQotCUVXbWxEb2NUeXBlX0NoYW5uZWxfMV8w
LA0KLQlFV21sRG9jVHlwZV9XbWxfMV8yLA0KLQlFV21sRG9jVHlwZV9XbWxfMV8zDQotCX07DQor
ICB7DQorICBFSW5wdXREb2NUeXBlX0lzX0xpdGVyYWxfU3RyaW5nLA0KKyAgRVdtbERvY1R5cGVf
VW5rbm93biwNCisgIEVXbWxEb2NUeXBlX1dtbF8xXzAsDQorICBFV21sRG9jVHlwZV9XdGFfMV8w
LA0KKyAgRVdtbERvY1R5cGVfV21sXzFfMSwNCisgIEVXbWxEb2NUeXBlX1NpXzFfMCwNCisgIEVX
bWxEb2NUeXBlX1NsXzFfMCwNCisgIEVXbWxEb2NUeXBlX0NvXzFfMCwNCisgIEVXbWxEb2NUeXBl
X0NoYW5uZWxfMV8wLA0KKyAgRVdtbERvY1R5cGVfV21sXzFfMiwNCisgIEVXbWxEb2NUeXBlX1dt
bF8xXzMNCisgIH07DQogDQogDQogLy8gRk9SV0FSRCBERUNMQVJBVElPTlMNCkBAIC03OSwzNDEg
Kzc5LDM0MSBAQCBlbnVtIFRXYXBEb2NUeXBlDQogKiBUaW55IGNsYXNzIHRoYXQgZW5jYXBzdWxh
dGVzIGEgSW5wdXQgZm9ybWF0IGNoYXJhY3Rlci4NCiAqLw0KIGNsYXNzIFRJbnB1dEZvcm1hdENo
YXINCi0Jew0KLSAgICBwdWJsaWM6ICAvLyBDb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3INCi0g
ICAgICAgIA0KLSAgICAgICAgLyoqDQotICAgICAgICAqIEMrKyBkZWZhdWx0IGNvbnN0cnVjdG9y
Lg0KLQkJKiBAcGFyYW0gYUNoYXIgRm9ybWF0IGNoYXJhY3Rlci4NCi0JCSogQHBhcmFtIGFTdGF0
aWMgU3RhdGljIGNoYXJhY3Rlci4NCi0gICAgICAgICovDQotICAgICAgICBUSW5wdXRGb3JtYXRD
aGFyKCBUVWludCBhQ2hhciA9IDAsIFRVaW50IGFTdGF0aWMgPSAwICk7DQotDQotCXB1YmxpYzog
Ly8gTmV3IGZ1bmN0aW9ucw0KLQ0KLQkJZW51bSBUSW5wdXRDYXNlDQotCQkJew0KLQkJCUVJbnB1
dE5vbmUsDQotCQkJRUlucHV0VXBwZXJDYXNlLCAgDQotCQkJRUlucHV0TG93ZXJDYXNlLA0KLQkJ
CUVJbnB1dE51bWVyaWNDYXNlDQotCQkJfTsNCi0NCi0JCS8qKg0KLQkJKiBSZXR1cm5zIHRoZSBj
aGFyYWN0ZXIgY2FzZSBmb3JjZWQgYnkgdGhlIGZvcm1hdCBjaGFyYWN0ZXIuDQotCQkqIEByZXR1
cm4gQ2hhcmFjdGVyIGNhc2UuDQotCQkqLw0KLQkJVElucHV0Q2FzZSBGb3JjZWRDYXNlKCkgY29u
c3Q7DQotDQotCQkvKioNCi0JCSogUmV0dXJucyB0aGUgY2hhcmFjdGVyIGNhc2Ugc3VnZ2VzdGVk
IGJ5IHRoZSBmb3JtYXQgY2hhcmFjdGVyLg0KLQkJKiBAcmV0dXJuIENoYXJhY3RlciBjYXNlLg0K
LQkJKi8NCi0JCVRJbnB1dENhc2UgU3VnZ2VzdGVkQ2FzZSgpIGNvbnN0Ow0KLQ0KLQkJLyoqDQot
CQkqIFJldHVybnMgdHJ1ZSB3aGV0aGVyIGFscGhhYmV0aWNhbCBjaGFyYWN0ZXJzIGFyZSBhbGxv
d2VkLg0KLQkJKiBAcmV0dXJuIEFscGhhYmV0aWNhbCBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkLg0K
LQkJKi8NCi0JCVRCb29sIEFscGhhQWxsb3dlZCgpIGNvbnN0Ow0KLQ0KLQkJLyoqDQotCQkqIFJl
dHVybnMgdHJ1ZSB3aGV0aGVyIG51bWJlcnMgYXJlIGFsbG93ZWQuDQotCQkqIEByZXR1cm4gTnVt
ZXJpYyBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkLg0KLQkJKi8NCi0JCVRCb29sIE51bWVyaWNBbGxv
d2VkKCkgY29uc3Q7DQotDQotCQkvKioNCi0JCSogUmV0dXJucyB0cnVlIHdoZXRoZXIgc3BlY2lh
bCBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkLg0KLQkJKiBAcmV0dXJuIFNwZWNpYWwgY2hhcmFjdGVy
cyBhcmUgYWxsb3dlZC4NCi0JCSovDQotCQlUQm9vbCBTcGVjaWFsQWxsb3dlZCgpIGNvbnN0Ow0K
LQ0KLQlwdWJsaWM6CQkvLyBHZXR0ZXIgZnVuY3Rpb25zDQotDQotCQkvKioNCi0JCSogUmV0dXJu
cyBmb3JtYXQgY2hhcmFjdGVyLg0KLQkJKiBAcmV0dXJuIEZvcm1hdCBjaGFyYWN0ZXIuDQotCQkq
Lw0KLQkJVFVpbnQgQ2hhcigpIGNvbnN0Ow0KLQ0KLQkJLyoqDQotCQkqIFJldHVybnMgc3RhdGlj
IGNoYXJhY3RlciBpZiB0aGUgZm9ybWF0IHNwZWNpZmllcyBzdGF0aWMgdGV4dA0KLQkJKiAsIG90
aGVyd2lzZSAwLg0KLQkJKiBAcmV0dXJuIFN0YXRpYyBjaGFyYWN0ZXIuDQotCQkqLw0KLQkJVFVp
bnQgU3RhdGljKCkgY29uc3Q7DQotDQotCXByaXZhdGU6CS8vIERhdGENCi0NCi0JCVRVaW50IGlD
aGFyOw0KLQkJVFVpbnQgaVN0YXRpYzsNCi0JfTsNCisgIHsNCisgIHB1YmxpYzogIC8vIENvbnN0
cnVjdG9ycyBhbmQgZGVzdHJ1Y3Rvcg0KKw0KKyAgICAvKioNCisgICAgQysrIGRlZmF1bHQgY29u
c3RydWN0b3IuDQorICAgIEBwYXJhbSBhQ2hhciBGb3JtYXQgY2hhcmFjdGVyLg0KKyAgICBAcGFy
YW0gYVN0YXRpYyBTdGF0aWMgY2hhcmFjdGVyLg0KKyAgICAqLw0KKyAgICBUSW5wdXRGb3JtYXRD
aGFyKCBUVWludCBhQ2hhciA9IDAsIFRVaW50IGFTdGF0aWMgPSAwICk7DQorDQorICBwdWJsaWM6
IC8vIE5ldyBmdW5jdGlvbnMNCisNCisgICAgZW51bSBUSW5wdXRDYXNlDQorICAgICAgew0KKyAg
ICAgIEVJbnB1dE5vbmUsDQorICAgICAgRUlucHV0VXBwZXJDYXNlLCAgDQorICAgICAgRUlucHV0
TG93ZXJDYXNlLA0KKyAgICAgIEVJbnB1dE51bWVyaWNDYXNlLA0KKyAgICAgIEVJbnB1dERlZmF1
bHRDYXNlLA0KKyAgICAgIH07DQorDQorICAgIC8qKg0KKyAgICAqIFJldHVybnMgdGhlIGNoYXJh
Y3RlciBjYXNlIGZvcmNlZCBieSB0aGUgZm9ybWF0IGNoYXJhY3Rlci4NCisgICAgKiBAcmV0dXJu
IENoYXJhY3RlciBjYXNlLg0KKyAgICAqLw0KKyAgICBUSW5wdXRDYXNlIEZvcmNlZENhc2UoKSBj
b25zdDsNCisNCisgICAgLyoqDQorICAgICogUmV0dXJucyB0aGUgY2hhcmFjdGVyIGNhc2Ugc3Vn
Z2VzdGVkIGJ5IHRoZSBmb3JtYXQgY2hhcmFjdGVyLg0KKyAgICAqIEByZXR1cm4gQ2hhcmFjdGVy
IGNhc2UuDQorICAgICovDQorICAgIFRJbnB1dENhc2UgU3VnZ2VzdGVkQ2FzZSgpIGNvbnN0Ow0K
Kw0KKyAgICAvKioNCisgICAgKiBSZXR1cm5zIHRydWUgd2hldGhlciBhbHBoYWJldGljYWwgY2hh
cmFjdGVycyBhcmUgYWxsb3dlZC4NCisgICAgKiBAcmV0dXJuIEFscGhhYmV0aWNhbCBjaGFyYWN0
ZXJzIGFyZSBhbGxvd2VkLg0KKyAgICAqLw0KKyAgICBUQm9vbCBBbHBoYUFsbG93ZWQoKSBjb25z
dDsNCisNCisgICAgLyoqDQorICAgICogUmV0dXJucyB0cnVlIHdoZXRoZXIgbnVtYmVycyBhcmUg
YWxsb3dlZC4NCisgICAgKiBAcmV0dXJuIE51bWVyaWMgY2hhcmFjdGVycyBhcmUgYWxsb3dlZC4N
CisgICAgKi8NCisgICAgVEJvb2wgTnVtZXJpY0FsbG93ZWQoKSBjb25zdDsNCisNCisgICAgLyoq
DQorICAgICogUmV0dXJucyB0cnVlIHdoZXRoZXIgc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBhbGxv
d2VkLg0KKyAgICAqIEByZXR1cm4gU3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkLg0KKyAg
ICAqLw0KKyAgICBUQm9vbCBTcGVjaWFsQWxsb3dlZCgpIGNvbnN0Ow0KKw0KKyAgcHVibGljOiAg
IC8vIEdldHRlciBmdW5jdGlvbnMNCisNCisgICAgLyoqDQorICAgICogUmV0dXJucyBmb3JtYXQg
Y2hhcmFjdGVyLg0KKyAgICAqIEByZXR1cm4gRm9ybWF0IGNoYXJhY3Rlci4NCisgICAgKi8NCisg
ICAgVFVpbnQgQ2hhcigpIGNvbnN0Ow0KKw0KKyAgICAvKioNCisgICAgKiBSZXR1cm5zIHN0YXRp
YyBjaGFyYWN0ZXIgaWYgdGhlIGZvcm1hdCBzcGVjaWZpZXMgc3RhdGljIHRleHQNCisgICAgKiAs
IG90aGVyd2lzZSAwLg0KKyAgICAqIEByZXR1cm4gU3RhdGljIGNoYXJhY3Rlci4NCisgICAgKi8N
CisgICAgVFVpbnQgU3RhdGljKCkgY29uc3Q7DQorDQorICBwcml2YXRlOiAgLy8gRGF0YQ0KKw0K
KyAgICBUVWludCBpQ2hhcjsNCisgICAgVFVpbnQgaVN0YXRpYzsNCisgIH07DQogDQogY2xhc3Mg
VFN0YXRpY0NoYXINCi0Jew0KKyAgew0KICAgICBwdWJsaWM6ICAvLyBDb25zdHJ1Y3RvcnMgYW5k
IGRlc3RydWN0b3INCiAgICAgICAgIA0KLSAgICAgICAgLyoqDQotICAgICAgICAqIEMrKyBkZWZh
dWx0IGNvbnN0cnVjdG9yLg0KLQkJKiBAcGFyYW0gYUNoYXIgQ2hhcmFjdGVyIGNvZGUuDQotCQkq
IEBwYXJhbSBhUG9zIERvY3VtZW50IHBvc2l0aW9uLg0KLSAgICAgICAgKi8NCi0gICAgICAgIFRT
dGF0aWNDaGFyKCBUVWludCBhQ2hhciwgVEludCBhUG9zICk7DQotDQotCXB1YmxpYzoJCS8vIEdl
dHRlciBmdW5jdGlvbnMNCi0NCi0JCS8qKg0KLQkJKiBSZXR1cm5zIHN0YXRpYyBjaGFyYWN0ZXIu
DQotCQkqIEByZXR1cm4gU3RhdGljIGNoYXJhY3Rlci4NCi0JCSovDQotCQlUVWludCBDaGFyKCkg
Y29uc3Q7DQotDQotCQkvKioNCi0JCSogUmV0dXJucyBkb2N1bWVudCBwb3NpdGlvbi4NCi0JCSog
QHJldHVybiBEb2N1bWVudCBwb3NpdGlvbi4NCi0JCSovDQotCQlUSW50IFBvcygpIGNvbnN0Ow0K
LQ0KLQlwcml2YXRlOgkvLyBEYXRhDQotDQotCQlUVWludCBpQ2hhcjsNCi0JCVRJbnQgaVBvczsN
Ci0JfTsNCisgICAgLyoqDQorICAgIEMrKyBkZWZhdWx0IGNvbnN0cnVjdG9yLg0KKyAgICBAcGFy
YW0gYUNoYXIgQ2hhcmFjdGVyIGNvZGUuDQorICAgIEBwYXJhbSBhUG9zIERvY3VtZW50IHBvc2l0
aW9uLg0KKyAgICAqLw0KKyAgICBUU3RhdGljQ2hhciggVFVpbnQgYUNoYXIsIFRJbnQgYVBvcyAp
Ow0KKw0KKyAgcHVibGljOiAgIC8vIEdldHRlciBmdW5jdGlvbnMNCisNCisgICAgLyoqDQorICAg
ICogUmV0dXJucyBzdGF0aWMgY2hhcmFjdGVyLg0KKyAgICAqIEByZXR1cm4gU3RhdGljIGNoYXJh
Y3Rlci4NCisgICAgKi8NCisgICAgVFVpbnQgQ2hhcigpIGNvbnN0Ow0KKw0KKyAgICAvKioNCisg
ICAgKiBSZXR1cm5zIGRvY3VtZW50IHBvc2l0aW9uLg0KKyAgICAqIEByZXR1cm4gRG9jdW1lbnQg
cG9zaXRpb24uDQorICAgICovDQorICAgIFRJbnQgUG9zKCkgY29uc3Q7DQorDQorICBwcml2YXRl
OiAgLy8gRGF0YQ0KKw0KKyAgICBUVWludCBpQ2hhcjsNCisgICAgVEludCBpUG9zOw0KKyAgfTsN
CiANCiAvKioNCiAqICBIYW5kbGVzIElucHV0IGlucHV0IGZvcm1hdCBzdHJpbmcuDQogKi8NCiBj
bGFzcyBDSW5wdXRGb3JtYXRIYW5kbGVyIDogcHVibGljIENCYXNlDQotICAgIHsNCi0gICAgcHJv
dGVjdGVkOiAgLy8gQ29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9yDQotICAgICAgICANCi0gICAg
ICAgIC8qKg0KLSAgICAgICAgKiBDKysgZGVmYXVsdCBjb25zdHJ1Y3Rvci4NCi0gICAgICAgICov
DQotICAgICAgICBDSW5wdXRGb3JtYXRIYW5kbGVyKCk7DQotDQotICAgIHB1YmxpYzogIC8vIENv
bnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3Rvcg0KKyAgew0KKyAgcHJvdGVjdGVkOiAgLy8gQ29uc3Ry
dWN0b3JzIGFuZCBkZXN0cnVjdG9yDQogICAgICAgICANCi0JCS8qKg0KLSAgICAgICAgKiBUd28t
cGhhc2VkIGNvbnN0cnVjdG9yLg0KLQkJKiBAcGFyYW0gYUZvcm1hdFN0cmluZyBWYWxpZGF0ZWQg
Zm9ybWF0IHN0cmluZy4NCi0JCSogQHBhcmFtIGFXYXBEb2NUeXBlIERvY3VtZW50IHR5cGUuIEZv
cm1hdCBoYW5kbGluZyBpcyBkaWZmZXJlbnQNCi0JCSogaW4gZWFybGllciBJbnB1dCB2ZXJzaW9u
cy4gT3RoZXIgdGhhbiBFSW5wdXREb2NUeXBlX0lucHV0XzFfeCBpcyBoYW5kbGVkDQotCQkqIGFz
IEVJbnB1dERvY1R5cGVfSW5wdXRfMV8zLg0KLSAgICAgICAgKi8NCi0gICAgICAgIHN0YXRpYyBD
SW5wdXRGb3JtYXRIYW5kbGVyKiBOZXdMQw0KLQkJCSggY29uc3QgVERlc0MmIGFGb3JtYXRTdHJp
bmcpOw0KLQ0KLSAgICAgICAgLyoqDQotICAgICAgICAqIFR3by1waGFzZWQgY29uc3RydWN0b3Iu
DQotCQkqIEBwYXJhbSBhRm9ybWF0U3RyaW5nIFZhbGlkYXRlZCBmb3JtYXQgc3RyaW5nLg0KLQkJ
KiBAcGFyYW0gYVdhcERvY1R5cGUgRG9jdW1lbnQgdHlwZS4gRm9ybWF0IGhhbmRsaW5nIGlzIGRp
ZmZlcmVudA0KLQkJKiBpbiBlYXJsaWVyIElucHV0IHZlcnNpb25zLiBPdGhlciB0aGFuIEVJbnB1
dERvY1R5cGVfSW5wdXRfMV94IGlzIGhhbmRsZWQNCi0JCSogYXMgRUlucHV0RG9jVHlwZV9JbnB1
dF8xXzMuDQotICAgICAgICAqLw0KLSAgICAgICAgc3RhdGljIENJbnB1dEZvcm1hdEhhbmRsZXIq
IE5ld0wNCi0JCQkoIGNvbnN0IFREZXNDJiBhRm9ybWF0U3RyaW5nKTsNCi0gICAgICAgIA0KLSAg
ICAgICAgLyoqDQotICAgICAgICAqIERlc3RydWN0b3IuDQotICAgICAgICAqLw0KLSAgICAgICAg
dmlydHVhbCB+Q0lucHV0Rm9ybWF0SGFuZGxlcigpOw0KLQ0KLSAgICBwdWJsaWM6CS8vIFRleHQg
aGFuZGxpbmcNCi0NCi0JCS8qKg0KLSAgICAgICAgICAgICAgICAgKiBSZXR1cm5zIHRleHQgb25s
eSAtIHdpdGhvdXQgc3RhdGljIHRleHQgaW52b2x2ZWQuDQotICAgICAgICAgICAgICAgICAqIFRo
aXMgaXMgcXVpdGUgdXNlZnVsIGZvciBoYW5kbGluZyB0aGUgcGFzdGluZyBvZiB0ZXh0IGludG8g
dGhlIGNvbnRlbnQgb2YNCi0gICAgICAgICAgICAgICAgICogYW4gaW5wdXQgYm94Lg0KLSAgICAg
ICAgICAgICAgICAgKiBAcmV0dXJuIEhCdWZDKiBQb2ludGVyIHRvIHBsYWluIHRleHQgaW5wdXQg
KG5vIHN0YXRpY3MgaW5zZXJ0ZWQpLg0KLSAgICAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAg
ICAgICAgSEJ1ZkMqIEdldFRleHRPbmx5TCgpOw0KLQ0KLQkJLyoqDQotCQkqIFN0b3JlcyB2aXNp
YmxlIHRleHQuIElmIHRoZSB0ZXh0IGlzIGludmFsaWQsDQotCQkqIHRoZSBzdGF0aWMgdGV4dCB3
aWxsIGJlIHVzZWQgaW5zdGVhZC4NCi0JCSogQHBhcmFtIGFUZXh0IENvbnN0YW50IGRlc2NyaXB0
b3IuDQotCQkqIEBwYXJhbSBhTm9WYWxpZGF0aW9uIEZvcmNlIG5vIHZhbGlkYXRpb24uDQotCQkq
IEByZXR1cm4gRVRydWUgd2hldGhlciB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRzLg0KLQkJKi8NCi0J
CVRCb29sIFNldFRleHRMKCBjb25zdCBURGVzQyYgYVRleHQsIFRCb29sIGFOb1ZhbGlkYXRpb24g
PSBFRmFsc2UgKTsNCi0NCi0JCS8qKg0KLQkJKiBSZXR1cm5zIHplcm90ZXJtaW5hdGVkIGNvcHkg
b2YgdGhlIHN0b3JlZCBjb250ZW50IGZpbGxlZCB3aXRoDQotCQkqIHN0YXRpYyB0ZXh0IGluIHJl
YWRhYmxlIG9yIGlsbGVnaWJsZSBmb3JtLg0KLQkJKiBAcGFyYW0gYVJlYWRhYmxlIElmIEVGYWxz
ZSBkeW5hbWljIHRleHQgaXMgcmVwbGFjZWQgd2l0aA0KLQkJKgkJCQkgICBLT2JzY3VyaW5nQ2hh
ci4NCi0JCSogQHJldHVybiBaZXJvdGVybWluYXRlZCB0ZXh0Lg0KLQkJKi8NCi0JCUhCdWZDKiBU
ZXh0TEMoIFRCb29sIGFSZWFkYWJsZSA9IEVUcnVlICkgY29uc3Q7DQotDQotCQkvKioNCi0JCSog
SW5zZXJ0cyBjaGFyYWN0ZXIgaW50byB0aGUgc3RvcmVkIHRleHQuDQotCQkqIE5vdGhpbmcgaGFw
cGVucyBpZiBhUG9zIGlzIGludmFsaWQhDQotCQkqIEBwYXJhbSBhUG9zIERvY3VtZW50IHBvc2l0
aW9uLg0KLQkJKiBAcGFyYW0gYUNoYXIgQ2hhcmFjdGVyIHRvIGJlIGluc2VydGVkLg0KLQkJKi8N
Ci0JCXZvaWQgSW5zZXJ0TCggVEludCBhUG9zLCBUQ2hhciBhQ2hhciApOw0KLQ0KLQkJLyoqDQot
CQkqIEluc2VydHMgdGV4dCBpbnRvIHRoZSBzdG9yZWQgdGV4dC4NCi0JCSogTm90aGluZyBoYXBw
ZW5zIGlmIGFQb3MgaXMgaW52YWxpZCENCi0JCSogQHBhcmFtIGFQb3MgRG9jdW1lbnQgcG9zaXRp
b24uDQotCQkqIEBwYXJhbSBhRGVzIFRleHQgdG8gYmUgaW5zZXJ0ZWQuDQotCQkqLw0KLQkJdm9p
ZCBJbnNlcnRMKCBUSW50IGFQb3MsIGNvbnN0IFREZXNDJiBhRGVzICk7DQotCQkNCi0JCS8qKg0K
LQkJKiBEZWxldGVzIGNoYXJhY3RlcnMgZnJvbSB0aGUgc3RvcmVkIHRleHQuDQotCQkqIE5vdGhp
bmcgaGFwcGVucyBpZiBhUG9zIG9yIGFMZW5ndGggaXMgaW52YWxpZCENCi0JCSogQHBhcmFtIGFQ
b3MgRG9jdW1lbnQgcG9zaXRpb24uDQotCQkqIEBwYXJhbSBhTGVuZ3RoIFNwZWNpZmllcyB0aGUg
bnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gYmUgZGVsZXRlZC4NCi0JCSovDQotCQlUQm9vbCBEZWxl
dGUoIFRJbnQgYVBvcywgVEludCBhTGVuZ3RoICk7DQotDQotCXB1YmxpYzoJLy8gU3RhdGljIHRl
eHQgaGFuZGxpbmcNCi0NCi0JCS8qKg0KLQkJKiBSZXR1cm5zIHplcm90ZXJtaW5hdGVkIGNvcHkg
b2YgdGhlIHN0YXRpYyB0ZXh0Lg0KLQkJKiBAcmV0dXJuIFplcm90ZXJtaW5hdGVkIGNvcHkgb2Yg
dGhlIHN0YXRpYyB0ZXh0Lg0KLQkJKi8NCi0JCUhCdWZDKiBTdGF0aWNUZXh0TEMoKSBjb25zdDsN
Ci0NCi0JCS8qKg0KLQkJKiBSZXR1cm5zIG51bWJlciBvZiBzdGF0aWMgY2hhcmFjdGVycy4NCi0J
CSogQHJldHVybiBOdW1iZXIgb2Ygc3RhdGljIGNoYXJhY3RlcnMuLg0KLQkJKi8NCi0JCVRJbnQg
TnVtYmVyT2ZTdGF0aWMoKSBjb25zdDsNCi0NCi0JcHVibGljOgkvLyBGb3JtYXQgaGFuZGxpbmcN
Ci0NCi0gICAgICAgIC8qKg0KLSAgICAgICAgKiBSZXR1cm5zIHRoZSBmb3JtYXQgb2YgdGhlIHNw
ZWNpZmllZCBkb2N1bWVudCBwb3NpdGlvbi4NCi0gICAgICAgICogQHBhcmFtIGFJbmRleCBEb2N1
bWVudCBwb3NpdGlvbi4NCi0gICAgICAgICogQHJldHVybiBGb3JtYXQgb2YgdGhlIHNwZWNpZmll
ZCBkb2N1bWVudCBwb3NpdGlvbi4NCi0gICAgICAgICovDQotICAgICAgICBUSW5wdXRGb3JtYXRD
aGFyIEdldEZvcm1hdCggVEludCBhSW5kZXggKSBjb25zdDsNCi0NCi0JCS8qKg0KLQkJKiBSZXR1
cm5zIHRoZSBmb3JtYXQgb2YgcG9zdGZpeC4gSXQncyB0aGUgdmFsdWUgb2YgImYiIHdoZW4NCi0J
CSogZm9ybWF0IGVuZHMgd2l0aCAiKmYiIG9yICJuZiIsIEtJbnB1dEZvcm1hdE5vbmUgb3RoZXJ2
aXNlDQotICAgICAgICAqIEByZXR1cm4gRm9ybWF0IG9mIHBvc3RmaXguDQotCQkqLw0KLQkJVElu
cHV0Rm9ybWF0Q2hhciBQb3N0Rml4KCkgY29uc3Q7DQotDQotCXB1YmxpYzogLy8gR2V0dGVyIGZ1
bmN0aW9ucw0KLSAgICAgICAgDQotCQkvKg0KLQkJKiBHZXR0ZXIgZnVuY3Rpb24uDQotCQkqIEBy
ZXR1cm4gVmFsdWUgb2YgaU1pbkxlbmd0aCBtZW1iZXIuDQotCQkqLw0KLQkJVEludCBNaW5MZW5n
dGgoKSBjb25zdDsNCi0NCi0JCS8qDQotCQkqIEdldHRlciBmdW5jdGlvbi4NCi0JCSogQHJldHVy
biBWYWx1ZSBvZiBpTWF4TGVuZ3RoIG1lbWJlci4NCi0JCSovDQotCQlUSW50IE1heExlbmd0aCgp
IGNvbnN0Ow0KLQ0KLQlwdWJsaWM6CS8vIFZhbGlkYXRpb24gZnVuY3Rpb25zDQotDQotCQkvKioN
Ci0JCSogVmFsaWRhdGVzIHRoZSBnaXZlbiBjaGFyYWN0ZXIgYWdhaW5zdCB0aGUgZm9ybWF0IGNo
YXJhY3Rlci4NCi0JCSogQHBhcmFtIGFDaGFyIENoYXJhY3RlciB0byBiZSB2YWxpZGF0ZWQuDQot
CQkqIEBwYXJhbSBhRm9ybWF0Q2hhciBGb3JtYXQgY2hhcmFjdGVyLg0KLQkJKiBAcmV0dXJuIEVU
cnVlIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBtYXRjaGVzIHRvIHRoZSBmb3JtYXQuDQotCQkqLw0K
LQkJVEJvb2wgVmFsaWRhdGVDaGFyKCBUQ2hhciBhQ2hhciwgVElucHV0Rm9ybWF0Q2hhciBhRm9y
bWF0Q2hhciApIGNvbnN0Ow0KLQ0KLQkJLyoqDQotCQkqIFZhbGlkYXRlcyBhbGwgb2YgdGhlIHN0
b3JlZCB0ZXh0IGFnYWluc3QgdGhlIHN0b3JlZCBmb3JtYXQuDQotCQkqIEByZXR1cm4gTGlzdCBv
ZiBpbnZhbGlkIHBvc2l0aW9ucy4gKGFsd2F5cyBub24tTlVMTCwgY2FuIGJlIGVtcHR5KQ0KLQkJ
Ki8NCi0JCUNBcnJheUZpeEZsYXQ8VEludD4qIFZhbGlkYXRlVGV4dExDKCkgY29uc3Q7DQotDQot
CQkvKioNCi0JCSogVmFsaWRhdGVzIGFsbCBvZiB0aGUgc3RvcmVkIHRleHQgYWdhaW5zdCB0aGUg
c3RvcmVkIGZvcm1hdC4NCi0JCSogQHJldHVybiBUZXh0IGlzIHZhbGlkLg0KLQkJKi8NCi0JCVRC
b29sIFZhbGlkYXRlVGV4dEwoKSBjb25zdDsNCi0NCi0JcHVibGljOgkvLyBwb3NpdGlvbiBjb252
ZXJzaW9ucw0KLQ0KLQkJLyoqDQotCQkqIFJldHVybnMgcG9zaXRpb24gaW4gdGhlIHdob2xlIHRl
eHQuDQotCQkqIEBwYXJhbSBhUG9zRXhsdWRpbmdTdGF0aWMgUG9zaXRpb24gaW4gbm9uLXN0YXRp
YyB0ZXh0Lg0KLQkJKiBAcmV0dXJuIFBvc2l0aW9uIGluIHRoZSB3aG9sZSB0ZXh0Lg0KLQkJKi8N
Ci0JCVRJbnQgUG9zSW5jbHVkaW5nU3RhdGljKCBUSW50IGFQb3NFeGx1ZGluZ1N0YXRpYyApOw0K
LQkJDQotCQkvKioNCi0JCSogUmV0dXJucyBwb3NpdGlvbiBpbiB0aGUgbm9uLXN0YXRpYyB0ZXh0
Lg0KLQkJKiBAcGFyYW0gYVBvc0luY2x1ZGluZ1N0YXRpYyBQb3NpdGlvbiBpbiB0aGUgd2hvbGUg
dGV4dC4NCi0JCSogQHJldHVybiBQb3NpdGlvbiBpbiBub24tc3RhdGljIHRleHQuDQotCQkqLw0K
LQkJVEludCBQb3NFeGx1ZGluZ1N0YXRpYyggVEludCBhUG9zSW5jbHVkaW5nU3RhdGljICk7DQot
CQ0KLQlwdWJsaWM6CS8vIG90aGVyIGZ1bmN0aW9ucw0KLQ0KLQkJLyoqDQotCQkqIFJldHVybnMg
dGhlIHBvc2l0aW9uIG9mIHRoZSBwcmV2aW91cyBkeW5hbWljIGNoYXJhY3RlciB0byBhUG9zLg0K
LQkJKiBSZXR1cm5zIEtOb3RGb3VuZCBpZiB0aGVyZSdzIG5vIHByZXZpb3VzIGR5bmFtaWMgY2hh
cmFjdGVyLg0KLQkJKiBAcGFyYW0gYVBvcyBEb2N1bWVudCBwb3NpdGlvbi4NCi0JCSogQHJldHVy
biBQb3NpdGlvbiBvZiB0aGUgcHJldmlvdXMgZHluYW1pYyBjaGFyYWN0ZXIuDQotCQkqLw0KLQkJ
VEludCBQcmV2aW91c05vblN0YXRpYyggVEludCBhUG9zICk7DQotDQotCQkvKioNCi0JCSogUmV0
dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIG5leHQgZHluYW1pYyBjaGFyYWN0ZXIgdG8gYVBvcy4N
Ci0JCSogUmV0dXJucyBLTm90Rm91bmQgaWYgdGhlcmUncyBubyBuZXh0IGR5bmFtaWMgY2hhcmFj
dGVyLg0KLQkJKiBAcGFyYW0gYVBvcyBEb2N1bWVudCBwb3NpdGlvbi4NCi0JCSogQHJldHVybiBQ
b3NpdGlvbiBvZiB0aGUgbmV4dCBkeW5hbWljIGNoYXJhY3Rlci4NCi0JCSovDQotCQlUSW50IE5l
eHROb25TdGF0aWMoIFRJbnQgYVBvcyApOw0KLQ0KLQkJLyoqDQotCQkqIFJldHVybnMgdGhlIGZp
cnN0IHBvc2l0aW9uIHRoYXQgaXMgZW1wdHksIGJ1dCBjYW4gYmUgZmlsbGVkLg0KLQkJKiBSZXR1
cm5zIHRoZSBsZW5ndGggb2YgdGhlIHdob2xlIHRleHQgaWYgdGhlIHRleHQgaXMgZnVsbHkgZmls
bGVkLg0KLQkJKiBAcmV0dXJuIEZpcnN0IHBvc2l0aW9uIHRoYXQgaXMgZW1wdHksIGJ1dCBjYW4g
YmUgZmlsbGVkLg0KLQkJKi8NCi0JCVRJbnQgRmlyc3RFbXB0eSgpOw0KLQ0KLQkJLyoqDQotCQkq
IFJldHVybnMgdGhlIGZpcnN0IHN0YXRpYyBwb3NpdGlvbiB0byB0aGUgZ2l2ZW4gcG9zaXRpb24g
ZnJvbSBsZWZ0DQotCQkqIEByZXR1cm4gRmlyc3QgcG9zaXRpb24gb2YgdGhlIHN0YXRpYyBjaGFy
YWN0ZXIuDQotCQkqLw0KKyAgICAvKioNCisgICAgKiBDKysgZGVmYXVsdCBjb25zdHJ1Y3Rvci4N
CisgICAgKi8NCisgICAgQ0lucHV0Rm9ybWF0SGFuZGxlcigpOw0KKw0KKyAgcHVibGljOiAgLy8g
Q29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9yDQorDQorICAgIC8qKg0KKyAgICBUd28tcGhhc2Vk
IGNvbnN0cnVjdG9yLg0KKyAgICBAcGFyYW0gYUZvcm1hdFN0cmluZyBWYWxpZGF0ZWQgZm9ybWF0
IHN0cmluZy4NCisgICAgQHBhcmFtIGFXYXBEb2NUeXBlIERvY3VtZW50IHR5cGUuIEZvcm1hdCBo
YW5kbGluZyBpcyBkaWZmZXJlbnQNCisgICAgaW4gZWFybGllciBJbnB1dCB2ZXJzaW9ucy4gT3Ro
ZXIgdGhhbiBFSW5wdXREb2NUeXBlX0lucHV0XzFfeCBpcyBoYW5kbGVkDQorICAgIGFzIEVJbnB1
dERvY1R5cGVfSW5wdXRfMV8zLg0KKyAgICAqLw0KKyAgICBzdGF0aWMgQ0lucHV0Rm9ybWF0SGFu
ZGxlciogTmV3TEMNCisgICAgKCBjb25zdCBURGVzQyYgYUZvcm1hdFN0cmluZyk7DQorDQorICAg
IC8qKg0KKyAgICBUd28tcGhhc2VkIGNvbnN0cnVjdG9yLg0KKyAgICBAcGFyYW0gYUZvcm1hdFN0
cmluZyBWYWxpZGF0ZWQgZm9ybWF0IHN0cmluZy4NCisgICAgQHBhcmFtIGFXYXBEb2NUeXBlIERv
Y3VtZW50IHR5cGUuIEZvcm1hdCBoYW5kbGluZyBpcyBkaWZmZXJlbnQNCisgICAgaW4gZWFybGll
ciBJbnB1dCB2ZXJzaW9ucy4gT3RoZXIgdGhhbiBFSW5wdXREb2NUeXBlX0lucHV0XzFfeCBpcyBo
YW5kbGVkDQorICAgIGFzIEVJbnB1dERvY1R5cGVfSW5wdXRfMV8zLg0KKyAgICAqLw0KKyAgICBz
dGF0aWMgQ0lucHV0Rm9ybWF0SGFuZGxlciogTmV3TA0KKyAgICAoIGNvbnN0IFREZXNDJiBhRm9y
bWF0U3RyaW5nKTsNCisNCisgICAgLyoqDQorICAgICogRGVzdHJ1Y3Rvci4NCisgICAgKi8NCisg
ICAgdmlydHVhbCB+Q0lucHV0Rm9ybWF0SGFuZGxlcigpOw0KKw0KKyAgICBwdWJsaWM6IC8vIFRl
eHQgaGFuZGxpbmcNCisNCisgICAgLyoqDQorICAgICogUmV0dXJucyB0ZXh0IG9ubHkgLSB3aXRo
b3V0IHN0YXRpYyB0ZXh0IGludm9sdmVkLg0KKyAgICAqIFRoaXMgaXMgcXVpdGUgdXNlZnVsIGZv
ciBoYW5kbGluZyB0aGUgcGFzdGluZyBvZiB0ZXh0IGludG8gdGhlIGNvbnRlbnQgb2YNCisgICAg
ICogYW4gaW5wdXQgYm94Lg0KKyAgICAgKiBAcmV0dXJuIEhCdWZDKiBQb2ludGVyIHRvIHBsYWlu
IHRleHQgaW5wdXQgKG5vIHN0YXRpY3MgaW5zZXJ0ZWQpLg0KKyAgICAgKi8NCisgICAgIEhCdWZD
KiBHZXRUZXh0T25seUwoKTsNCisNCisgICAgLyoqDQorICAgICogU3RvcmVzIHZpc2libGUgdGV4
dC4gSWYgdGhlIHRleHQgaXMgaW52YWxpZCwNCisgICAgKiB0aGUgc3RhdGljIHRleHQgd2lsbCBi
ZSB1c2VkIGluc3RlYWQuDQorICAgICogQHBhcmFtIGFUZXh0IENvbnN0YW50IGRlc2NyaXB0b3Iu
DQorICAgICogQHBhcmFtIGFOb1ZhbGlkYXRpb24gRm9yY2Ugbm8gdmFsaWRhdGlvbi4NCisgICAg
KiBAcmV0dXJuIEVUcnVlIHdoZXRoZXIgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcy4NCisgICAgKi8N
CisgICAgVEJvb2wgU2V0VGV4dEwoIGNvbnN0IFREZXNDJiBhVGV4dCwgVEJvb2wgYU5vVmFsaWRh
dGlvbiA9IEVGYWxzZSApOw0KKw0KKyAgICAvKioNCisgICAgKiBSZXR1cm5zIHplcm90ZXJtaW5h
dGVkIGNvcHkgb2YgdGhlIHN0b3JlZCBjb250ZW50IGZpbGxlZCB3aXRoDQorICAgICogc3RhdGlj
IHRleHQgaW4gcmVhZGFibGUgb3IgaWxsZWdpYmxlIGZvcm0uDQorICAgICogQHBhcmFtIGFSZWFk
YWJsZSBJZiBFRmFsc2UgZHluYW1pYyB0ZXh0IGlzIHJlcGxhY2VkIHdpdGggS09ic2N1cmluZ0No
YXIuDQorICAgICogQHJldHVybiBaZXJvdGVybWluYXRlZCB0ZXh0Lg0KKyAgICAqLw0KKyAgICBI
QnVmQyogVGV4dExDKCBUQm9vbCBhUmVhZGFibGUgPSBFVHJ1ZSApIGNvbnN0Ow0KKw0KKyAgICAv
KioNCisgICAgKiBJbnNlcnRzIGNoYXJhY3RlciBpbnRvIHRoZSBzdG9yZWQgdGV4dC4NCisgICAg
KiBOb3RoaW5nIGhhcHBlbnMgaWYgYVBvcyBpcyBpbnZhbGlkIQ0KKyAgICAqIEBwYXJhbSBhUG9z
IERvY3VtZW50IHBvc2l0aW9uLg0KKyAgICAqIEBwYXJhbSBhQ2hhciBDaGFyYWN0ZXIgdG8gYmUg
aW5zZXJ0ZWQuDQorICAgICovDQorICAgIHZvaWQgSW5zZXJ0TCggVEludCBhUG9zLCBUQ2hhciBh
Q2hhciApOw0KKw0KKyAgICAvKioNCisgICAgKiBJbnNlcnRzIHRleHQgaW50byB0aGUgc3RvcmVk
IHRleHQuDQorICAgICogTm90aGluZyBoYXBwZW5zIGlmIGFQb3MgaXMgaW52YWxpZCENCisgICAg
KiBAcGFyYW0gYVBvcyBEb2N1bWVudCBwb3NpdGlvbi4NCisgICAgKiBAcGFyYW0gYURlcyBUZXh0
IHRvIGJlIGluc2VydGVkLg0KKyAgICAqLw0KKyAgICB2b2lkIEluc2VydEwoIFRJbnQgYVBvcywg
Y29uc3QgVERlc0MmIGFEZXMgKTsNCisgICAgDQorICAgIC8qKg0KKyAgICAqIERlbGV0ZXMgY2hh
cmFjdGVycyBmcm9tIHRoZSBzdG9yZWQgdGV4dC4NCisgICAgKiBOb3RoaW5nIGhhcHBlbnMgaWYg
YVBvcyBvciBhTGVuZ3RoIGlzIGludmFsaWQhDQorICAgICogQHBhcmFtIGFQb3MgRG9jdW1lbnQg
cG9zaXRpb24uDQorICAgICogQHBhcmFtIGFMZW5ndGggU3BlY2lmaWVzIHRoZSBudW1iZXIgb2Yg
Y2hhcmFjdGVycyB0byBiZSBkZWxldGVkLg0KKyAgICAqLw0KKyAgICBUQm9vbCBEZWxldGUoIFRJ
bnQgYVBvcywgVEludCBhTGVuZ3RoICk7DQorDQorICBwdWJsaWM6IC8vIFN0YXRpYyB0ZXh0IGhh
bmRsaW5nDQorDQorICAgIC8qKg0KKyAgICAqIFJldHVybnMgemVyb3Rlcm1pbmF0ZWQgY29weSBv
ZiB0aGUgc3RhdGljIHRleHQuDQorICAgICogQHJldHVybiBaZXJvdGVybWluYXRlZCBjb3B5IG9m
IHRoZSBzdGF0aWMgdGV4dC4NCisgICAgKi8NCisgICAgSEJ1ZkMqIFN0YXRpY1RleHRMQygpIGNv
bnN0Ow0KKw0KKyAgICAvKioNCisgICAgKiBSZXR1cm5zIG51bWJlciBvZiBzdGF0aWMgY2hhcmFj
dGVycy4NCisgICAgKiBAcmV0dXJuIE51bWJlciBvZiBzdGF0aWMgY2hhcmFjdGVycy4uDQorICAg
ICovDQorICAgIFRJbnQgTnVtYmVyT2ZTdGF0aWMoKSBjb25zdDsNCisNCisgIHB1YmxpYzogLy8g
Rm9ybWF0IGhhbmRsaW5nDQorDQorICAgIC8qKg0KKyAgICAqIFJldHVybnMgdGhlIGZvcm1hdCBv
ZiB0aGUgc3BlY2lmaWVkIGRvY3VtZW50IHBvc2l0aW9uLg0KKyAgICAqIEBwYXJhbSBhSW5kZXgg
RG9jdW1lbnQgcG9zaXRpb24uDQorICAgICogQHJldHVybiBGb3JtYXQgb2YgdGhlIHNwZWNpZmll
ZCBkb2N1bWVudCBwb3NpdGlvbi4NCisgICAgKi8NCisgICAgVElucHV0Rm9ybWF0Q2hhciBHZXRG
b3JtYXQoIFRJbnQgYUluZGV4ICkgY29uc3Q7DQorDQorICAgIC8qKg0KKyAgICAqIFJldHVybnMg
dGhlIGZvcm1hdCBvZiBwb3N0Zml4LiBJdCdzIHRoZSB2YWx1ZSBvZiAiZiIgd2hlbg0KKyAgICAq
IGZvcm1hdCBlbmRzIHdpdGggIipmIiBvciAibmYiLCBLSW5wdXRGb3JtYXROb25lIG90aGVydmlz
ZQ0KKyAgICAqIEByZXR1cm4gRm9ybWF0IG9mIHBvc3RmaXguDQorICAgICovDQorICAgIFRJbnB1
dEZvcm1hdENoYXIgUG9zdEZpeCgpIGNvbnN0Ow0KKw0KKyAgcHVibGljOiAvLyBHZXR0ZXIgZnVu
Y3Rpb25zDQorDQorICAgIC8qDQorICAgICogR2V0dGVyIGZ1bmN0aW9uLg0KKyAgICAqIEByZXR1
cm4gVmFsdWUgb2YgaU1pbkxlbmd0aCBtZW1iZXIuDQorICAgICovDQorICAgIFRJbnQgTWluTGVu
Z3RoKCkgY29uc3Q7DQorDQorICAgIC8qDQorICAgICogR2V0dGVyIGZ1bmN0aW9uLg0KKyAgICAq
IEByZXR1cm4gVmFsdWUgb2YgaU1heExlbmd0aCBtZW1iZXIuDQorICAgICovDQorICAgIFRJbnQg
TWF4TGVuZ3RoKCkgY29uc3Q7DQorDQorICBwdWJsaWM6IC8vIFZhbGlkYXRpb24gZnVuY3Rpb25z
DQorDQorICAgIC8qKg0KKyAgICAqIFZhbGlkYXRlcyB0aGUgZ2l2ZW4gY2hhcmFjdGVyIGFnYWlu
c3QgdGhlIGZvcm1hdCBjaGFyYWN0ZXIuDQorICAgICogQHBhcmFtIGFDaGFyIENoYXJhY3RlciB0
byBiZSB2YWxpZGF0ZWQuDQorICAgICogQHBhcmFtIGFGb3JtYXRDaGFyIEZvcm1hdCBjaGFyYWN0
ZXIuDQorICAgICogQHJldHVybiBFVHJ1ZSB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgbWF0Y2hlcyB0
byB0aGUgZm9ybWF0Lg0KKyAgICAqLw0KKyAgICBUQm9vbCBWYWxpZGF0ZUNoYXIoIFRDaGFyIGFD
aGFyLCBUSW5wdXRGb3JtYXRDaGFyIGFGb3JtYXRDaGFyICkgY29uc3Q7DQorDQorICAgIC8qKg0K
KyAgICAqIFZhbGlkYXRlcyBhbGwgb2YgdGhlIHN0b3JlZCB0ZXh0IGFnYWluc3QgdGhlIHN0b3Jl
ZCBmb3JtYXQuDQorICAgICogQHJldHVybiBMaXN0IG9mIGludmFsaWQgcG9zaXRpb25zLiAoYWx3
YXlzIG5vbi1OVUxMLCBjYW4gYmUgZW1wdHkpDQorICAgICovDQorICAgIENBcnJheUZpeEZsYXQ8
VEludD4qIFZhbGlkYXRlVGV4dExDKCkgY29uc3Q7DQorDQorICAgIC8qKg0KKyAgICAqIFZhbGlk
YXRlcyBhbGwgb2YgdGhlIHN0b3JlZCB0ZXh0IGFnYWluc3QgdGhlIHN0b3JlZCBmb3JtYXQuDQor
ICAgICogQHJldHVybiBUZXh0IGlzIHZhbGlkLg0KKyAgICAqLw0KKyAgICBUQm9vbCBWYWxpZGF0
ZVRleHRMKCkgY29uc3Q7DQorDQorICBwdWJsaWM6IC8vIHBvc2l0aW9uIGNvbnZlcnNpb25zDQor
DQorICAgIC8qKg0KKyAgICAqIFJldHVybnMgcG9zaXRpb24gaW4gdGhlIHdob2xlIHRleHQuDQor
ICAgICogQHBhcmFtIGFQb3NFeGx1ZGluZ1N0YXRpYyBQb3NpdGlvbiBpbiBub24tc3RhdGljIHRl
eHQuDQorICAgICogQHJldHVybiBQb3NpdGlvbiBpbiB0aGUgd2hvbGUgdGV4dC4NCisgICAgKi8N
CisgICAgVEludCBQb3NJbmNsdWRpbmdTdGF0aWMoIFRJbnQgYVBvc0V4bHVkaW5nU3RhdGljICk7
DQorICAgIA0KKyAgICAvKioNCisgICAgKiBSZXR1cm5zIHBvc2l0aW9uIGluIHRoZSBub24tc3Rh
dGljIHRleHQuDQorICAgICogQHBhcmFtIGFQb3NJbmNsdWRpbmdTdGF0aWMgUG9zaXRpb24gaW4g
dGhlIHdob2xlIHRleHQuDQorICAgICogQHJldHVybiBQb3NpdGlvbiBpbiBub24tc3RhdGljIHRl
eHQuDQorICAgICovDQorICAgIFRJbnQgUG9zRXhsdWRpbmdTdGF0aWMoIFRJbnQgYVBvc0luY2x1
ZGluZ1N0YXRpYyApOw0KKyAgDQorICBwdWJsaWM6IC8vIG90aGVyIGZ1bmN0aW9ucw0KKw0KKyAg
ICAvKioNCisgICAgKiBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgcHJldmlvdXMgZHluYW1p
YyBjaGFyYWN0ZXIgdG8gYVBvcy4NCisgICAgKiBSZXR1cm5zIEtOb3RGb3VuZCBpZiB0aGVyZSdz
IG5vIHByZXZpb3VzIGR5bmFtaWMgY2hhcmFjdGVyLg0KKyAgICAqIEBwYXJhbSBhUG9zIERvY3Vt
ZW50IHBvc2l0aW9uLg0KKyAgICAqIEByZXR1cm4gUG9zaXRpb24gb2YgdGhlIHByZXZpb3VzIGR5
bmFtaWMgY2hhcmFjdGVyLg0KKyAgICAqLw0KKyAgICBUSW50IFByZXZpb3VzTm9uU3RhdGljKCBU
SW50IGFQb3MgKTsNCisNCisgICAgLyoqDQorICAgICogUmV0dXJucyB0aGUgcG9zaXRpb24gb2Yg
dGhlIG5leHQgZHluYW1pYyBjaGFyYWN0ZXIgdG8gYVBvcy4NCisgICAgKiBSZXR1cm5zIEtOb3RG
b3VuZCBpZiB0aGVyZSdzIG5vIG5leHQgZHluYW1pYyBjaGFyYWN0ZXIuDQorICAgICogQHBhcmFt
IGFQb3MgRG9jdW1lbnQgcG9zaXRpb24uDQorICAgICogQHJldHVybiBQb3NpdGlvbiBvZiB0aGUg
bmV4dCBkeW5hbWljIGNoYXJhY3Rlci4NCisgICAgKi8NCisgICAgVEludCBOZXh0Tm9uU3RhdGlj
KCBUSW50IGFQb3MgKTsNCisNCisgICAgLyoqDQorICAgICogUmV0dXJucyB0aGUgZmlyc3QgcG9z
aXRpb24gdGhhdCBpcyBlbXB0eSwgYnV0IGNhbiBiZSBmaWxsZWQuDQorICAgICogUmV0dXJucyB0
aGUgbGVuZ3RoIG9mIHRoZSB3aG9sZSB0ZXh0IGlmIHRoZSB0ZXh0IGlzIGZ1bGx5IGZpbGxlZC4N
CisgICAgKiBAcmV0dXJuIEZpcnN0IHBvc2l0aW9uIHRoYXQgaXMgZW1wdHksIGJ1dCBjYW4gYmUg
ZmlsbGVkLg0KKyAgICAqLw0KKyAgICBUSW50IEZpcnN0RW1wdHkoKTsNCisNCisgICAgLyoqDQor
ICAgICogUmV0dXJucyB0aGUgZmlyc3Qgc3RhdGljIHBvc2l0aW9uIHRvIHRoZSBnaXZlbiBwb3Np
dGlvbiBmcm9tIGxlZnQNCisgICAgKiBAcmV0dXJuIEZpcnN0IHBvc2l0aW9uIG9mIHRoZSBzdGF0
aWMgY2hhcmFjdGVyLg0KKyAgICAqLw0KIA0KICAgICBUSW50IFByZXZpb3VzU3RhdGljKCBUSW50
IGFQb3MgKTsgDQogDQotCQkvKioNCi0JCSogUmV0dXJucyB0aGUgRVRydWUgaWYgdGhlIGdpdmVu
IHBvcyBpcyBzdGF0aWMgZWxzZSBmYWxzZQ0KLQkJKiBAcmV0dXJuIGlzIHN0YXRpYyBjaGFyIA0K
LQkJKi8NCisgICAgLyoqDQorICAgICogUmV0dXJucyB0aGUgRVRydWUgaWYgdGhlIGdpdmVuIHBv
cyBpcyBzdGF0aWMgZWxzZSBmYWxzZQ0KKyAgICAqIEByZXR1cm4gaXMgc3RhdGljIGNoYXIgDQor
ICAgICovDQogDQogICAgIFRCb29sIElzUG9zU3RhdGljKCBUSW50IGFQb3MgKTsNCiANCi0gICAg
cHJpdmF0ZToNCisgIHByaXZhdGU6DQogDQotICAgICAgICAvKioNCi0gICAgICAgICogQnkgZGVm
YXVsdCBFUE9DIGNvbnN0cnVjdG9yIGlzIHByaXZhdGUuDQotCQkqIEBwYXJhbSBhRm9ybWF0U3Ry
aW5nIFZhbGlkYXRlZCBmb3JtYXQgc3RyaW5nLg0KLQkJKiBAcGFyYW0gYVdhcERvY1R5cGUgRG9j
dW1lbnQgdHlwZS4gRm9ybWF0IGhhbmRsaW5nIGlzIGRpZmZlcmVudA0KLQkJKiBpbiBlYXJsaWVy
IElucHV0IHZlcnNpb25zLiBPdGhlciB0aGFuIEVJbnB1dERvY1R5cGVfSW5wdXRfMV94IGlzIGhh
bmRsZWQNCi0JCSogYXMgRUlucHV0RG9jVHlwZV9JbnB1dF8xXzMuDQotICAgICAgICAqLw0KLSAg
ICAgICAgdm9pZCBDb25zdHJ1Y3RMKCBjb25zdCBURGVzQyYgYUZvcm1hdFN0cmluZyk7DQotDQot
ICAgIHByaXZhdGU6ICAgIC8vIERhdGENCi0gICAgICAgIA0KLQkJVEludCBpTWluTGVuZ3RoOw0K
LQkJVEludCBpTWF4TGVuZ3RoOw0KLQkJSEJ1ZkMqIGlNYXNrOw0KLQkJQ0FycmF5Rml4RmxhdDxU
U3RhdGljQ2hhcj4qIGlTdGF0aWM7DQotCQlUVGV4dCBpUG9zdEZpeDsNCi0JCUhCdWZDKiBpRHlu
YW1pYzsNCisgICAgLyoqDQorICAgICogQnkgZGVmYXVsdCBFUE9DIGNvbnN0cnVjdG9yIGlzIHBy
aXZhdGUuDQorICAgICogQHBhcmFtIGFGb3JtYXRTdHJpbmcgVmFsaWRhdGVkIGZvcm1hdCBzdHJp
bmcuDQorICAgICogQHBhcmFtIGFXYXBEb2NUeXBlIERvY3VtZW50IHR5cGUuIEZvcm1hdCBoYW5k
bGluZyBpcyBkaWZmZXJlbnQNCisgICAgKiBpbiBlYXJsaWVyIElucHV0IHZlcnNpb25zLiBPdGhl
ciB0aGFuIEVJbnB1dERvY1R5cGVfSW5wdXRfMV94IGlzIGhhbmRsZWQNCisgICAgKiBhcyBFSW5w
dXREb2NUeXBlX0lucHV0XzFfMy4NCisgICAgKi8NCisgICAgdm9pZCBDb25zdHJ1Y3RMKCBjb25z
dCBURGVzQyYgYUZvcm1hdFN0cmluZyk7DQorDQorICBwcml2YXRlOiAgICAvLyBEYXRhDQorDQor
ICAgIFRJbnQgaU1pbkxlbmd0aDsNCisgICAgVEludCBpTWF4TGVuZ3RoOw0KKyAgICBIQnVmQyog
aU1hc2s7DQorICAgIENBcnJheUZpeEZsYXQ8VFN0YXRpY0NoYXI+KiBpU3RhdGljOw0KKyAgICBU
VGV4dCBpUG9zdEZpeDsNCisgICAgSEJ1ZkMqIGlEeW5hbWljOw0KICAgICB9Ow0KIA0KICNlbmRp
Zg0KLSAgICAgICAgICAgIA0KKw0KIC8vIEVuZCBvZiBGaWxlDQpJbmRleDogV2ViS2l0L0Jyb3dz
ZXJDb3JlL0Zvcm1jb250cm9scy9zcmMvRkNvbnRyb2xmb3JtYXRoYW5kbGVyLmNwcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyQ29yZS9Gb3JtY29udHJvbHMvc3JjL0ZDb250cm9sZm9y
bWF0aGFuZGxlci5jcHAJKHJldmlzaW9uIDE4NzM4KQ0KKysrIFdlYktpdC9Ccm93c2VyQ29yZS9G
b3JtY29udHJvbHMvc3JjL0ZDb250cm9sZm9ybWF0aGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkN
CkBAIC05LDkgKzksOSBAQA0KICogICAgQ29weXJpZ2h0IChjKSAyMDA2LCBOb2tpYSBDb3Jwb3Jh
dGlvbg0KICogICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqICANCi0qICAJUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQot
KiAgCW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucw0KLSogIAlhcmUgbWV0Og0KKyogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisqICAgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zDQorKiAgIGFyZSBtZXQ6DQogKiAgDQogKiAgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
DQpAQCAtMjMsMTggKzIzLDE4IEBADQogKiAgICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQogKiAgICAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0K
ICogIA0KLSogIAlUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTDQotKiAgCSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQotKiAgCUxJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0K
LSogIAlBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVA0KLSogIAlPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCi0qICAJU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVA0KLSogIAlM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwNCi0qICAJREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQotKiAgCVRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCi0qICAJKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUNCi0qICAJVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSA0KLSogIAlEQU1BR0UuDQorKiAgIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCisqICAg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QNCisqICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQorKiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQorKiAgIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLA0KKyogICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UDQorKiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KKyogICBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkNCisqICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVA0KKyogICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQ0KKyogICBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIDQorKiAgIERB
TUFHRS4NCiAqICANCiAqICAgIFBsZWFzZSBzZWUgZmlsZSBwYXRlbnRsaWNlbnNlLnR4dCBmb3Ig
ZnVydGhlciBncmFudHMuDQogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC02NCwxNzEgKzY0
LDE3MiBAQCBzdGF0aWMgY29uc3QgVFVpbnQgS0lucHV0Rm9ybWF0TXVsdGlwbGllDQogLy8gbWln
aHQgbGVhdmUuDQogLy8NCiBUSW5wdXRGb3JtYXRDaGFyOjpUSW5wdXRGb3JtYXRDaGFyKCBUVWlu
dCBhQ2hhciwgVFVpbnQgYVN0YXRpYyApDQotCTogaUNoYXIoIGFDaGFyICkNCi0Jew0KLQlpU3Rh
dGljID0gKCBhQ2hhciA9PSBLSW5wdXRGb3JtYXRTdGF0aWMgKSA/IGFTdGF0aWMgOiAwOw0KLQl9
DQorICA6IGlDaGFyKCBhQ2hhciApDQorICB7DQorICBpU3RhdGljID0gKCBhQ2hhciA9PSBLSW5w
dXRGb3JtYXRTdGF0aWMgKSA/IGFTdGF0aWMgOiAwOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIFRJbnB1
dEZvcm1hdENoYXI6OkZvcmNlZENhc2UNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRJbnB1dEZvcm1hdENoYXI6OlRJ
bnB1dENhc2UgVElucHV0Rm9ybWF0Q2hhcjo6Rm9yY2VkQ2FzZSgpIGNvbnN0DQotCXsNCi0JVElu
cHV0Q2FzZSByZXN1bHQ7DQotCXN3aXRjaCggaUNoYXIgKQ0KLQkJew0KLQkJY2FzZSBLSW5wdXRG
b3JtYXRBIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0WCA6DQotCQkJcmVzdWx0ID0gRUlucHV0VXBw
ZXJDYXNlOw0KLQkJCWJyZWFrOw0KLQ0KLQkJY2FzZSBLSW5wdXRGb3JtYXRhIDoNCi0JCWNhc2Ug
S0lucHV0Rm9ybWF0eCA6DQotCQkJcmVzdWx0ID0gRUlucHV0TG93ZXJDYXNlOw0KLQkJCWJyZWFr
Ow0KLQ0KLQkJY2FzZSBLSW5wdXRGb3JtYXRuIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0TiA6DQot
CQkJcmVzdWx0ID0gRUlucHV0TnVtZXJpY0Nhc2U7DQotCQkJYnJlYWs7DQotDQotCQlkZWZhdWx0
Og0KLQkJCXJlc3VsdCA9IEVJbnB1dE5vbmU7DQotCQkJYnJlYWs7DQotCQl9DQotCXJldHVybiBy
ZXN1bHQ7DQotCX0NCisgIHsNCisgIFRJbnB1dENhc2UgcmVzdWx0Ow0KKyAgc3dpdGNoKCBpQ2hh
ciApDQorICAgIHsNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRBIDoNCisgICAgY2FzZSBLSW5wdXRG
b3JtYXRYIDoNCisgICAgICByZXN1bHQgPSBFSW5wdXRVcHBlckNhc2U7DQorICAgICAgYnJlYWs7
DQorDQorICAgIGNhc2UgS0lucHV0Rm9ybWF0YSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0eCA6
DQorICAgICAgcmVzdWx0ID0gRUlucHV0TG93ZXJDYXNlOw0KKyAgICAgIGJyZWFrOw0KKw0KKyAg
ICBjYXNlIEtJbnB1dEZvcm1hdG4gOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdE4gOg0KKyAgICAg
IHJlc3VsdCA9IEVJbnB1dE51bWVyaWNDYXNlOw0KKyAgICAgIGJyZWFrOw0KKw0KKyAgICBkZWZh
dWx0Og0KKyAgICAgIHJlc3VsdCA9IEVJbnB1dE5vbmU7DQorICAgICAgYnJlYWs7DQorICAgIH0N
CisgIHJldHVybiByZXN1bHQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gVElucHV0Rm9ybWF0Q2hhcjo6
U3VnZ2VzdGVkQ2FzZQ0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVElucHV0Rm9ybWF0Q2hhcjo6VElucHV0Q2FzZSBU
SW5wdXRGb3JtYXRDaGFyOjpTdWdnZXN0ZWRDYXNlKCkgY29uc3QNCi0Jew0KLQlUSW5wdXRDYXNl
IHJlc3VsdDsNCi0Jc3dpdGNoKCBpQ2hhciApDQotCQl7DQotCQljYXNlIEtJbnB1dEZvcm1hdEEg
Og0KLQkJY2FzZSBLSW5wdXRGb3JtYXRYIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0TSA6DQotCQkJ
cmVzdWx0ID0gRUlucHV0VXBwZXJDYXNlOw0KLQkJCWJyZWFrOw0KLQ0KLQkJY2FzZSBLSW5wdXRG
b3JtYXRhIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0eCA6DQotCQljYXNlIEtJbnB1dEZvcm1hdG0g
Og0KLQkJCXJlc3VsdCA9IEVJbnB1dExvd2VyQ2FzZTsNCi0JCQlicmVhazsNCi0NCi0JCWNhc2Ug
S0lucHV0Rm9ybWF0biA6DQotCQljYXNlIEtJbnB1dEZvcm1hdE4gOg0KLQkJCXJlc3VsdCA9IEVJ
bnB1dE51bWVyaWNDYXNlOw0KLQkJCWJyZWFrOw0KLQ0KLQkJZGVmYXVsdDoNCi0JCQlyZXN1bHQg
PSBFSW5wdXROb25lOw0KLQkJCWJyZWFrOw0KLQkJfQ0KLQlyZXR1cm4gcmVzdWx0Ow0KLQl9DQor
ICB7DQorICBUSW5wdXRDYXNlIHJlc3VsdDsNCisgIHN3aXRjaCggaUNoYXIgKQ0KKyAgICB7DQor
ICAgIGNhc2UgS0lucHV0Rm9ybWF0QSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0WCA6DQorICAg
ICAgcmVzdWx0ID0gRUlucHV0VXBwZXJDYXNlOw0KKyAgICAgIGJyZWFrOw0KKyAgICBjYXNlIEtJ
bnB1dEZvcm1hdE0gOg0KKyAgICAgIHJlc3VsdCA9IEVJbnB1dERlZmF1bHRDYXNlOw0KKyAgICAg
IGJyZWFrOw0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdGEgOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1h
dHggOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdG0gOg0KKyAgICAgIHJlc3VsdCA9IEVJbnB1dExv
d2VyQ2FzZTsNCisgICAgICBicmVhazsNCisNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRuIDoNCisg
ICAgY2FzZSBLSW5wdXRGb3JtYXROIDoNCisgICAgICByZXN1bHQgPSBFSW5wdXROdW1lcmljQ2Fz
ZTsNCisgICAgICBicmVhazsNCisNCisgICAgZGVmYXVsdDoNCisgICAgICByZXN1bHQgPSBFSW5w
dXROb25lOw0KKyAgICAgIGJyZWFrOw0KKyAgICB9DQorICByZXR1cm4gcmVzdWx0Ow0KKyAgfQ0K
IA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KIC8vIFRJbnB1dEZvcm1hdENoYXI6OkFscGhhQWxsb3dlZA0KIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQog
VEJvb2wgVElucHV0Rm9ybWF0Q2hhcjo6QWxwaGFBbGxvd2VkKCkgY29uc3QNCi0Jew0KLQlUQm9v
bCByZXN1bHQ7DQotCXN3aXRjaCggaUNoYXIgKQ0KLQkJew0KLQkJY2FzZSBLSW5wdXRGb3JtYXRB
IDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0YSA6DQotCQljYXNlIEtJbnB1dEZvcm1hdFggOg0KLQkJ
Y2FzZSBLSW5wdXRGb3JtYXR4IDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0TSA6DQotCQljYXNlIEtJ
bnB1dEZvcm1hdG0gOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRTdGF0aWMgOg0KLQkJCXJlc3VsdCA9
IEVUcnVlOw0KLQkJCWJyZWFrOw0KLQ0KLQkJZGVmYXVsdDoNCi0JCQlyZXN1bHQgPSBFRmFsc2U7
DQotCQkJYnJlYWs7DQotCQl9DQotCXJldHVybiByZXN1bHQ7DQotCX0NCisgIHsNCisgIFRCb29s
IHJlc3VsdDsNCisgIHN3aXRjaCggaUNoYXIgKQ0KKyAgICB7DQorICAgIGNhc2UgS0lucHV0Rm9y
bWF0QSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0YSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0
WCA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0eCA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0TSA6
DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0bSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0U3RhdGlj
IDoNCisgICAgICByZXN1bHQgPSBFVHJ1ZTsNCisgICAgICBicmVhazsNCisNCisgICAgZGVmYXVs
dDoNCisgICAgICByZXN1bHQgPSBFRmFsc2U7DQorICAgICAgYnJlYWs7DQorICAgIH0NCisgIHJl
dHVybiByZXN1bHQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gVElucHV0Rm9ybWF0Q2hhcjo6TnVtZXJp
Y0FsbG93ZWQNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIFRJbnB1dEZvcm1hdENoYXI6Ok51bWVyaWNBbGxv
d2VkKCkgY29uc3QNCi0Jew0KLQlUQm9vbCByZXN1bHQ7DQotCXN3aXRjaCggaUNoYXIgKQ0KLQkJ
ew0KLQkJY2FzZSBLSW5wdXRGb3JtYXRYIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0eCA6DQotCQlj
YXNlIEtJbnB1dEZvcm1hdE0gOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRtIDoNCi0JCWNhc2UgS0lu
cHV0Rm9ybWF0biA6DQotCQljYXNlIEtJbnB1dEZvcm1hdE4gOg0KLQkJY2FzZSBLSW5wdXRGb3Jt
YXRTdGF0aWMgOg0KLQkJCXJlc3VsdCA9IEVUcnVlOw0KLQkJCWJyZWFrOw0KLQ0KLQkJZGVmYXVs
dDoNCi0JCQlyZXN1bHQgPSBFRmFsc2U7DQotCQkJYnJlYWs7DQotCQl9DQotCXJldHVybiByZXN1
bHQ7DQotCX0NCisgIHsNCisgIFRCb29sIHJlc3VsdDsNCisgIHN3aXRjaCggaUNoYXIgKQ0KKyAg
ICB7DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0WCA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0eCA6
DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0TSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0bSA6DQor
ICAgIGNhc2UgS0lucHV0Rm9ybWF0biA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0TiA6DQorICAg
IGNhc2UgS0lucHV0Rm9ybWF0U3RhdGljIDoNCisgICAgICByZXN1bHQgPSBFVHJ1ZTsNCisgICAg
ICBicmVhazsNCisNCisgICAgZGVmYXVsdDoNCisgICAgICByZXN1bHQgPSBFRmFsc2U7DQorICAg
ICAgYnJlYWs7DQorICAgIH0NCisgIHJldHVybiByZXN1bHQ7DQorICB9DQogDQogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8g
VElucHV0Rm9ybWF0Q2hhcjo6U3BlY2lhbEFsbG93ZWQNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIFRJbnB1
dEZvcm1hdENoYXI6OlNwZWNpYWxBbGxvd2VkKCkgY29uc3QNCi0Jew0KLQlUQm9vbCByZXN1bHQ7
DQotCXN3aXRjaCggaUNoYXIgKQ0KLQkJew0KLQkJY2FzZSBLSW5wdXRGb3JtYXRBIDoNCi0JCWNh
c2UgS0lucHV0Rm9ybWF0YSA6DQotCQljYXNlIEtJbnB1dEZvcm1hdFggOg0KLQkJY2FzZSBLSW5w
dXRGb3JtYXR4IDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0TSA6DQotCQljYXNlIEtJbnB1dEZvcm1h
dG0gOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRuIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0U3RhdGlj
IDoNCi0JCQlyZXN1bHQgPSBFVHJ1ZTsNCi0JCQlicmVhazsNCi0NCi0JCWRlZmF1bHQ6DQotCQkJ
cmVzdWx0ID0gRUZhbHNlOw0KLQkJCWJyZWFrOw0KLQkJfQ0KLQlyZXR1cm4gcmVzdWx0Ow0KLQl9
DQorICB7DQorICBUQm9vbCByZXN1bHQ7DQorICBzd2l0Y2goIGlDaGFyICkNCisgICAgew0KKyAg
ICBjYXNlIEtJbnB1dEZvcm1hdEEgOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdGEgOg0KKyAgICBj
YXNlIEtJbnB1dEZvcm1hdFggOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdHggOg0KKyAgICBjYXNl
IEtJbnB1dEZvcm1hdE0gOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdG0gOg0KKyAgICBjYXNlIEtJ
bnB1dEZvcm1hdG4gOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdFN0YXRpYyA6DQorICAgICAgcmVz
dWx0ID0gRVRydWU7DQorICAgICAgYnJlYWs7DQorDQorICAgIGRlZmF1bHQ6DQorICAgICAgcmVz
dWx0ID0gRUZhbHNlOw0KKyAgICAgIGJyZWFrOw0KKyAgICB9DQorICByZXR1cm4gcmVzdWx0Ow0K
KyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KIC8vIFRJbnB1dEZvcm1hdENoYXI6OkNoYXINCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRV
aW50IFRJbnB1dEZvcm1hdENoYXI6OkNoYXIoKSBjb25zdA0KLQl7DQotCXJldHVybiBpQ2hhcjsN
Ci0JfQ0KKyAgew0KKyAgcmV0dXJuIGlDaGFyOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIFRJbnB1dEZv
cm1hdENoYXI6OlN0YXRpYygpDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUVWludCBUSW5wdXRGb3JtYXRDaGFyOjpT
dGF0aWMoKSBjb25zdA0KLQl7DQotCXJldHVybiBpU3RhdGljOw0KLQl9DQorICB7DQorICByZXR1
cm4gaVN0YXRpYzsNCisgIH0NCiANCiAvLyA9PT09PT09PT09PT09PT09PSBNRU1CRVIgRlVOQ1RJ
T05TID09PT09PT09PT09PT09PT09PT09PT09DQogDQpAQCAtMjM2LDI4ICsyMzcsMjggQEAgVFVp
bnQgVElucHV0Rm9ybWF0Q2hhcjo6U3RhdGljKCkgY29uc3QNCiAvLyBtaWdodCBsZWF2ZS4NCiAv
Lw0KIFRTdGF0aWNDaGFyOjpUU3RhdGljQ2hhciggVFVpbnQgYUNoYXIsIFRJbnQgYVBvcyApDQot
CTogaUNoYXIoIGFDaGFyICkNCi0JLCBpUG9zKCBhUG9zICkNCi0Jew0KLQl9DQorICA6IGlDaGFy
KCBhQ2hhciApDQorICAsIGlQb3MoIGFQb3MgKQ0KKyAgew0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIFRT
dGF0aWNDaGFyOjpDaGFyDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUVWludCBUU3RhdGljQ2hhcjo6Q2hhcigpIGNv
bnN0DQotCXsNCi0JcmV0dXJuIGlDaGFyOwkNCi0JfQ0KKyAgew0KKyAgcmV0dXJuIGlDaGFyOyAN
CisgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCiAvLyBUU3RhdGljQ2hhcjo6UG9zDQogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUSW50IFRT
dGF0aWNDaGFyOjpQb3MoKSBjb25zdA0KLQl7DQotCXJldHVybiBpUG9zOwkNCi0JfQ0KKyAgew0K
KyAgcmV0dXJuIGlQb3M7ICANCisgIH0NCiANCiAvLyA9PT09PT09PT09PT09PT09PSBNRU1CRVIg
RlVOQ1RJT05TID09PT09PT09PT09PT09PT09PT09PT09DQogDQpAQCAtMjY1LDk5ICsyNjYsOTkg
QEAgVEludCBUU3RhdGljQ2hhcjo6UG9zKCkgY29uc3QNCiAvLyBtaWdodCBsZWF2ZS4NCiAvLw0K
IENJbnB1dEZvcm1hdEhhbmRsZXI6OkNJbnB1dEZvcm1hdEhhbmRsZXIoKQ0KLQk6IGlQb3N0Rml4
KCBLSW5wdXRGb3JtYXROb25lICkNCisgIDogaVBvc3RGaXgoIEtJbnB1dEZvcm1hdE5vbmUgKQ0K
ICAgICB7DQotCX0NCisgIH0NCiANCiAvLyBFUE9DIGRlZmF1bHQgY29uc3RydWN0b3IgY2FuIGxl
YXZlLg0KIHZvaWQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6Q29uc3RydWN0TA0KLQkoIGNvbnN0IFRE
ZXNDJiBhRm9ybWF0U3RyaW5nKQ0KKyAgKCBjb25zdCBURGVzQyYgYUZvcm1hdFN0cmluZykNCiAg
ICAgew0KIA0KLQlDQXJyYXlGaXhGbGF0PFRJbnQ+KiBzdGF0aWNzID0gbmV3KCBFTGVhdmUgKUNB
cnJheUZpeEZsYXQ8VEludD4oIDMgKTsNCi0JQ2xlYW51cFN0YWNrOjpQdXNoTCggc3RhdGljcyAp
Ow0KLQkNCi0JLy8gY29sbGVjdCB0aGUgaW5kZXhlcyBvZiBzdGF0aWMgY2hhcmFjdGVycw0KLQlU
Qm9vbCBtYXJrID0gRUZhbHNlOw0KLQlUSW50IGxlbmd0aCA9IGFGb3JtYXRTdHJpbmcuTGVuZ3Ro
KCk7DQotCWZvciAoIFRJbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKyApDQotCQl7DQotCQlpZiAo
IG1hcmsgKQkvLyB3YXMgdGhlIHByZXZpb3VzIGNoYXJhY3RlciBwcmVmaXg/DQotCQkJew0KLQkJ
CW1hcmsgPSBFRmFsc2U7DQotCQkJc3RhdGljcy0+QXBwZW5kTCggaSApOw0KLQkJCX0NCi0JCWVs
c2UNCi0JCQl7CQkvLyBpcyBpdCBwcmVmaXg/DQotCQkJbWFyayA9ICggYUZvcm1hdFN0cmluZ1sg
aSBdID09IEtJbnB1dEZvcm1hdFN0YXRpYyApOw0KLQkJCX0NCi0JCX0NCi0NCi0JVEludCBudW1i
ZXJPZlN0YXRpY3MgPSBzdGF0aWNzLT5Db3VudCgpOw0KLQlpTWluTGVuZ3RoID0gbGVuZ3RoIC0g
bnVtYmVyT2ZTdGF0aWNzOw0KLQlpTWF4TGVuZ3RoID0gaU1pbkxlbmd0aDsNCi0NCi0JLy8gKmYg
YW5kIG5mIGhhbmRsaW5nCQ0KLQlpZiAoIGxlbmd0aCA+IDEgJiYJCQkJLy8gbG9uZ2VyIHRoYW4g
b25lIGNoYXJhY3Rlcg0KLQkJICggIW51bWJlck9mU3RhdGljcyB8fAkJLy8gdGhlcmUgYXJlIG5v
IHN0YXRpY3MsIG9yIGl0IGlzbid0IHN0YXRpYw0KLQkJICAgc3RhdGljcy0+QXQoIG51bWJlck9m
U3RhdGljcyAtIDEgKSAhPSBsZW5ndGggLSAyICkgKQ0KLQkJew0KLQkJaWYgKCBhRm9ybWF0U3Ry
aW5nWyBsZW5ndGggLSAyIF0gPT0gS0lucHV0Rm9ybWF0TXVsdGlwbGllciApCS8vICpmPw0KLQkJ
CXsNCi0JCQlpUG9zdEZpeCA9IGFGb3JtYXRTdHJpbmdbICggLS1sZW5ndGggKS0tIF07DQotCQkJ
aU1pbkxlbmd0aCA9IGxlbmd0aCAtIG51bWJlck9mU3RhdGljczsNCi0JCQlpTWF4TGVuZ3RoID0g
S0luZmluaXRlTGVuZ3RoOw0KLQkJCX0NCi0JCWVsc2UNCi0JCQl7DQotCQkJVENoYXIgbiggYUZv
cm1hdFN0cmluZ1sgbGVuZ3RoIC0gMiBdICk7DQotCQkJaWYgKCBuLklzRGlnaXQoKSAmJiBuICE9
ICcwJyApCS8vIG5mPw0KLQkJCQl7DQotCQkJCWlQb3N0Rml4ID0gYUZvcm1hdFN0cmluZ1sgKCAt
LWxlbmd0aCApLS0gXTsNCi0JCQkJaU1heExlbmd0aCA9IGxlbmd0aCAtIG51bWJlck9mU3RhdGlj
cyArIG4uR2V0TnVtZXJpY1ZhbHVlKCk7DQotCQkJCX0NCi0JCQl9DQotCQl9DQotDQotCS8vIGFs
bG9jYXRlIG1lbW9yeSBmb3IgbWVtYmVycw0KLQlpTWFzayA9IEhCdWZDOjpOZXdMKCBsZW5ndGgg
LSBudW1iZXJPZlN0YXRpY3MgKTsJLy8gZXhjZXB0IHN0YXRpYyB0ZXh0DQotCWlTdGF0aWMgPSBu
ZXcoIEVMZWF2ZSApQ0FycmF5Rml4RmxhdDxUU3RhdGljQ2hhcj4oIDMgKTsNCi0NCi0JLy8gY29w
eSBhRm9ybWF0U3RyaW5nIHRvIGlNYXNrIGV4Y2VwdCBzdGF0aWMgdGV4dA0KLQlUSW50IG5leHRT
dGF0aWMgPSAwOw0KLQlmb3IgKCBUSW50IGogPSAwOyBqIDwgbGVuZ3RoOyBqKysgKQ0KLQkJew0K
LQkJaWYgKCBuZXh0U3RhdGljIDwgbnVtYmVyT2ZTdGF0aWNzICYmDQotCQkJIGogPT0gc3RhdGlj
cy0+QXQoIG5leHRTdGF0aWMgKSApCS8vIGlzIGl0IHN0YXRpYz8NCi0JCQl7DQotCQkJCW5leHRT
dGF0aWMrKzsNCi0JCQkJaVN0YXRpYy0+QXBwZW5kTA0KLQkJCQkJKCBUU3RhdGljQ2hhciggYUZv
cm1hdFN0cmluZ1sgaiBdLCBqIC0gbmV4dFN0YXRpYyApICk7DQotCQkJfQ0KLQkJZWxzZQ0KLQkJ
CXsNCi0JCQlpTWFzay0+RGVzKCkuQXBwZW5kKCBhRm9ybWF0U3RyaW5nWyBqIF0gKTsNCi0JCQl9
DQotCQl9DQorICBDQXJyYXlGaXhGbGF0PFRJbnQ+KiBzdGF0aWNzID0gbmV3KCBFTGVhdmUgKUNB
cnJheUZpeEZsYXQ8VEludD4oIDMgKTsNCisgIENsZWFudXBTdGFjazo6UHVzaEwoIHN0YXRpY3Mg
KTsNCisgIA0KKyAgLy8gY29sbGVjdCB0aGUgaW5kZXhlcyBvZiBzdGF0aWMgY2hhcmFjdGVycw0K
KyAgVEJvb2wgbWFyayA9IEVGYWxzZTsNCisgIFRJbnQgbGVuZ3RoID0gYUZvcm1hdFN0cmluZy5M
ZW5ndGgoKTsNCisgIGZvciAoIFRJbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKyApDQorICAgIHsN
CisgICAgaWYgKCBtYXJrICkgLy8gd2FzIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIgcHJlZml4Pw0K
KyAgICAgIHsNCisgICAgICBtYXJrID0gRUZhbHNlOw0KKyAgICAgIHN0YXRpY3MtPkFwcGVuZEwo
IGkgKTsNCisgICAgICB9DQorICAgIGVsc2UNCisgICAgICB7ICAgLy8gaXMgaXQgcHJlZml4Pw0K
KyAgICAgIG1hcmsgPSAoIGFGb3JtYXRTdHJpbmdbIGkgXSA9PSBLSW5wdXRGb3JtYXRTdGF0aWMg
KTsNCisgICAgICB9DQorICAgIH0NCiANCi0JaUR5bmFtaWMgPSBIQnVmQzo6TmV3TCggaU1pbkxl
bmd0aCAtIG51bWJlck9mU3RhdGljcyApOw0KKyAgVEludCBudW1iZXJPZlN0YXRpY3MgPSBzdGF0
aWNzLT5Db3VudCgpOw0KKyAgaU1pbkxlbmd0aCA9IGxlbmd0aCAtIG51bWJlck9mU3RhdGljczsN
CisgIGlNYXhMZW5ndGggPSBpTWluTGVuZ3RoOw0KKw0KKyAgLy8gKmYgYW5kIG5mIGhhbmRsaW5n
IA0KKyAgaWYgKCBsZW5ndGggPiAxICYmICAgICAgICAvLyBsb25nZXIgdGhhbiBvbmUgY2hhcmFj
dGVyDQorICAgICAoICFudW1iZXJPZlN0YXRpY3MgfHwgICAgLy8gdGhlcmUgYXJlIG5vIHN0YXRp
Y3MsIG9yIGl0IGlzbid0IHN0YXRpYw0KKyAgICAgICBzdGF0aWNzLT5BdCggbnVtYmVyT2ZTdGF0
aWNzIC0gMSApICE9IGxlbmd0aCAtIDIgKSApDQorICAgIHsNCisgICAgaWYgKCBhRm9ybWF0U3Ry
aW5nWyBsZW5ndGggLSAyIF0gPT0gS0lucHV0Rm9ybWF0TXVsdGlwbGllciApICAvLyAqZj8NCisg
ICAgICB7DQorICAgICAgaVBvc3RGaXggPSBhRm9ybWF0U3RyaW5nWyAoIC0tbGVuZ3RoICktLSBd
Ow0KKyAgICAgIGlNaW5MZW5ndGggPSBsZW5ndGggLSBudW1iZXJPZlN0YXRpY3M7DQorICAgICAg
aU1heExlbmd0aCA9IEtJbmZpbml0ZUxlbmd0aDsNCisgICAgICB9DQorICAgIGVsc2UNCisgICAg
ICB7DQorICAgICAgVENoYXIgbiggYUZvcm1hdFN0cmluZ1sgbGVuZ3RoIC0gMiBdICk7DQorICAg
ICAgaWYgKCBuLklzRGlnaXQoKSAmJiBuICE9ICcwJyApICAvLyBuZj8NCisgICAgICAgIHsNCisg
ICAgICAgIGlQb3N0Rml4ID0gYUZvcm1hdFN0cmluZ1sgKCAtLWxlbmd0aCApLS0gXTsNCisgICAg
ICAgIGlNYXhMZW5ndGggPSBsZW5ndGggLSBudW1iZXJPZlN0YXRpY3MgKyBuLkdldE51bWVyaWNW
YWx1ZSgpOw0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfQ0KIA0KLQlDbGVhbnVwU3RhY2s6
OlBvcEFuZERlc3Ryb3koKTsJLy8gc3RhdGljcw0KKyAgLy8gYWxsb2NhdGUgbWVtb3J5IGZvciBt
ZW1iZXJzDQorICBpTWFzayA9IEhCdWZDOjpOZXdMKCBsZW5ndGggLSBudW1iZXJPZlN0YXRpY3Mg
KTsgIC8vIGV4Y2VwdCBzdGF0aWMgdGV4dA0KKyAgaVN0YXRpYyA9IG5ldyggRUxlYXZlIClDQXJy
YXlGaXhGbGF0PFRTdGF0aWNDaGFyPiggMyApOw0KKw0KKyAgLy8gY29weSBhRm9ybWF0U3RyaW5n
IHRvIGlNYXNrIGV4Y2VwdCBzdGF0aWMgdGV4dA0KKyAgVEludCBuZXh0U3RhdGljID0gMDsNCisg
IGZvciAoIFRJbnQgaiA9IDA7IGogPCBsZW5ndGg7IGorKyApDQorICAgIHsNCisgICAgaWYgKCBu
ZXh0U3RhdGljIDwgbnVtYmVyT2ZTdGF0aWNzICYmDQorICAgICAgIGogPT0gc3RhdGljcy0+QXQo
IG5leHRTdGF0aWMgKSApIC8vIGlzIGl0IHN0YXRpYz8NCisgICAgICB7DQorICAgICAgICBuZXh0
U3RhdGljKys7DQorICAgICAgICBpU3RhdGljLT5BcHBlbmRMDQorICAgICAgICAgICggVFN0YXRp
Y0NoYXIoIGFGb3JtYXRTdHJpbmdbIGogXSwgaiAtIG5leHRTdGF0aWMgKSApOw0KKyAgICAgIH0N
CisgICAgZWxzZQ0KKyAgICAgIHsNCisgICAgICBpTWFzay0+RGVzKCkuQXBwZW5kKCBhRm9ybWF0
U3RyaW5nWyBqIF0gKTsNCisgICAgICB9DQorICAgIH0NCisNCisgIGlEeW5hbWljID0gSEJ1ZkM6
Ok5ld0woIGlNaW5MZW5ndGggLSBudW1iZXJPZlN0YXRpY3MgKTsNCisNCisgIENsZWFudXBTdGFj
azo6UG9wQW5kRGVzdHJveSgpOyAgLy8gc3RhdGljcw0KICAgICB9DQogDQogLy8gVHdvLXBoYXNl
ZCBjb25zdHJ1Y3Rvci4NCiBDSW5wdXRGb3JtYXRIYW5kbGVyKiBDSW5wdXRGb3JtYXRIYW5kbGVy
OjpOZXdMQw0KLQkoIGNvbnN0IFREZXNDJiBhRm9ybWF0U3RyaW5nKQ0KKyAgKCBjb25zdCBURGVz
QyYgYUZvcm1hdFN0cmluZykNCiAgICAgew0KLQlDSW5wdXRGb3JtYXRIYW5kbGVyKiBzZWxmID0g
bmV3KCBFTGVhdmUgKUNJbnB1dEZvcm1hdEhhbmRsZXI7DQotCUNsZWFudXBTdGFjazo6UHVzaEwo
IHNlbGYgKTsNCisgIENJbnB1dEZvcm1hdEhhbmRsZXIqIHNlbGYgPSBuZXcoIEVMZWF2ZSApQ0lu
cHV0Rm9ybWF0SGFuZGxlcjsNCisgIENsZWFudXBTdGFjazo6UHVzaEwoIHNlbGYgKTsNCiAgICAg
c2VsZi0+Q29uc3RydWN0TCggYUZvcm1hdFN0cmluZyk7DQotCXJldHVybiBzZWxmOw0KKyAgcmV0
dXJuIHNlbGY7DQogICAgIH0NCiANCiAvLyBUd28tcGhhc2VkIGNvbnN0cnVjdG9yLg0KIENJbnB1
dEZvcm1hdEhhbmRsZXIqIENJbnB1dEZvcm1hdEhhbmRsZXI6Ok5ld0wNCi0JKCBjb25zdCBURGVz
QyYgYUZvcm1hdFN0cmluZykNCisgICggY29uc3QgVERlc0MmIGFGb3JtYXRTdHJpbmcpDQogICAg
IHsNCiAgICAgQ0lucHV0Rm9ybWF0SGFuZGxlciogc2VsZiA9IE5ld0xDKCBhRm9ybWF0U3RyaW5n
KTsNCiAgICAgQ2xlYW51cFN0YWNrOjpQb3AoKTsNCkBAIC0zNjcsOSArMzY4LDkgQEAgQ0lucHV0
Rm9ybWF0SGFuZGxlciogQ0lucHV0Rm9ybWF0SGFuZGxlcg0KIC8vIERlc3RydWN0b3INCiBDSW5w
dXRGb3JtYXRIYW5kbGVyOjp+Q0lucHV0Rm9ybWF0SGFuZGxlcigpDQogICAgIHsNCi0JZGVsZXRl
IGlNYXNrOw0KLQlkZWxldGUgaVN0YXRpYzsNCi0JZGVsZXRlIGlEeW5hbWljOw0KKyAgZGVsZXRl
IGlNYXNrOw0KKyAgZGVsZXRlIGlTdGF0aWM7DQorICBkZWxldGUgaUR5bmFtaWM7DQogICAgIH0N
CiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCkBAIC0zOTAsMjY2ICszOTEsMjY2IEBAIEhCdWZDKiBDSW5wdXRGb3JtYXRIYW5k
bGVyOjpHZXRUZXh0T25seUwNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIENJbnB1dEZvcm1hdEhhbmRsZXI6
OlNldFRleHRMKCBjb25zdCBURGVzQyYgYVRleHQsIFRCb29sIGFOb1ZhbGlkYXRpb24gKQ0KLQl7
DQotCWlEeW5hbWljLT5EZXMoKS5TZXRMZW5ndGgoIDAgKTsJLy8gaWdub3JlIHByZXZpb3VzIHRl
eHQNCisgIHsNCisgIGlEeW5hbWljLT5EZXMoKS5TZXRMZW5ndGgoIDAgKTsgLy8gaWdub3JlIHBy
ZXZpb3VzIHRleHQNCiANCi0JLy8gaW5zZXJ0IGNoYXJzIHdoaWxlIHRoZXkgYXJlIHZhbGlkDQot
CVRJbnQgaiggMCApOw0KLQlUSW50IHRleHRMZW5ndGgoIGFUZXh0Lkxlbmd0aCgpICk7DQotCWZv
ciAoIDsNCi0JCSAgaiA8IHRleHRMZW5ndGggJiYNCi0JCSAgKCBhTm9WYWxpZGF0aW9uIHx8IFZh
bGlkYXRlQ2hhciggYVRleHRbIGogXSwgR2V0Rm9ybWF0KCBqICkgKSApOw0KLQkJICBqKysgKQ0K
LQkJew0KLQ0KLQkJaWYgKCAhR2V0Rm9ybWF0KCBqICkuU3RhdGljKCkgKQ0KLQkJCXsNCi0JCSAg
ICBJbnNlcnRMKCBqLCBhVGV4dFsgaiBdICk7CS8vIGluc2VydCBub24tc3RhdGljIGNoYXJzDQot
CQkJfQ0KLQkJfQ0KKyAgLy8gaW5zZXJ0IGNoYXJzIHdoaWxlIHRoZXkgYXJlIHZhbGlkDQorICBU
SW50IGooIDAgKTsNCisgIFRJbnQgdGV4dExlbmd0aCggYVRleHQuTGVuZ3RoKCkgKTsNCisgIGZv
ciAoIDsNCisgICAgICBqIDwgdGV4dExlbmd0aCAmJg0KKyAgICAgICggYU5vVmFsaWRhdGlvbiB8
fCBWYWxpZGF0ZUNoYXIoIGFUZXh0WyBqIF0sIEdldEZvcm1hdCggaiApICkgKTsNCisgICAgICBq
KysgKQ0KKyAgICB7DQorDQorICAgIGlmICggIUdldEZvcm1hdCggaiApLlN0YXRpYygpICkNCisg
ICAgICB7DQorICAgICAgICBJbnNlcnRMKCBqLCBhVGV4dFsgaiBdICk7IC8vIGluc2VydCBub24t
c3RhdGljIGNoYXJzDQorICAgICAgfQ0KKyAgICB9DQogDQotCXJldHVybiBqID09IHRleHRMZW5n
dGg7DQotCX0NCisgIHJldHVybiBqID09IHRleHRMZW5ndGg7DQorICB9DQogDQogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8g
Q0lucHV0Rm9ybWF0SGFuZGxlcjo6VGV4dExDDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBIQnVmQyogQ0lucHV0Rm9y
bWF0SGFuZGxlcjo6VGV4dExDKCBUQm9vbCBhUmVhZGFibGUgKSBjb25zdA0KLQl7DQotCUhCdWZD
KiB0ZXh0ID0gU3RhdGljVGV4dExDKCk7CS8vIGdldCBzdGF0aWMgdGV4dA0KLQlUSW50IHN0YXRp
Y0xlbmd0aCA9IHRleHQtPkxlbmd0aCgpOw0KLQlUSW50IGR5bmFtaWNMZW5ndGggPSBpRHluYW1p
Yy0+TGVuZ3RoKCk7DQotCVRJbnQgZHluYW1pY1B0ciggMCApOw0KLQlUSW50IHN0YXRpY1B0cigg
MCApOw0KLQlUSW50IHN0YXRpY0NvdW50ZXIoIDAgKTsNCi0JVEludCBudW1iZXJPZlN0YXRpY3Mo
IGlTdGF0aWMtPkNvdW50KCkgKTsNCi0JLy8gaW5zZXJ0IGR5bmFtaWMgdGV4dCBpbnRvIHRoZSBz
dGF0aWMgdGV4dCBhcyBtYW55IGFzIHBvc3NpYmxlDQotCWZvciAoIDsgZHluYW1pY1B0ciA8IGR5
bmFtaWNMZW5ndGg7ICsrZHluYW1pY1B0ciwgKytzdGF0aWNQdHIgKQ0KLQkJew0KLQkJLy8gZmlu
ZCB0aGUgbmV4dCBub24tc3RhdGljIHBvc2l0aW9uDQotCQl3aGlsZSAoIHN0YXRpY0NvdW50ZXIg
PCBudW1iZXJPZlN0YXRpY3MgJiYNCi0JCQkJaVN0YXRpYy0+QXQoIHN0YXRpY0NvdW50ZXIgKS5Q
b3MoKSA9PSBzdGF0aWNQdHIgKQ0KLQkJCXsNCi0JCQkrK3N0YXRpY0NvdW50ZXI7DQotCQkJKytz
dGF0aWNQdHI7DQotCQkJfQ0KKyAgew0KKyAgSEJ1ZkMqIHRleHQgPSBTdGF0aWNUZXh0TEMoKTsg
Ly8gZ2V0IHN0YXRpYyB0ZXh0DQorICBUSW50IHN0YXRpY0xlbmd0aCA9IHRleHQtPkxlbmd0aCgp
Ow0KKyAgVEludCBkeW5hbWljTGVuZ3RoID0gaUR5bmFtaWMtPkxlbmd0aCgpOw0KKyAgVEludCBk
eW5hbWljUHRyKCAwICk7DQorICBUSW50IHN0YXRpY1B0ciggMCApOw0KKyAgVEludCBzdGF0aWND
b3VudGVyKCAwICk7DQorICBUSW50IG51bWJlck9mU3RhdGljcyggaVN0YXRpYy0+Q291bnQoKSAp
Ow0KKyAgLy8gaW5zZXJ0IGR5bmFtaWMgdGV4dCBpbnRvIHRoZSBzdGF0aWMgdGV4dCBhcyBtYW55
IGFzIHBvc3NpYmxlDQorICBmb3IgKCA7IGR5bmFtaWNQdHIgPCBkeW5hbWljTGVuZ3RoOyArK2R5
bmFtaWNQdHIsICsrc3RhdGljUHRyICkNCisgICAgew0KKyAgICAvLyBmaW5kIHRoZSBuZXh0IG5v
bi1zdGF0aWMgcG9zaXRpb24NCisgICAgd2hpbGUgKCBzdGF0aWNDb3VudGVyIDwgbnVtYmVyT2ZT
dGF0aWNzICYmDQorICAgICAgICBpU3RhdGljLT5BdCggc3RhdGljQ291bnRlciApLlBvcygpID09
IHN0YXRpY1B0ciApDQorICAgICAgew0KKyAgICAgICsrc3RhdGljQ291bnRlcjsNCisgICAgICAr
K3N0YXRpY1B0cjsNCisgICAgICB9DQogDQotCQlpZiAoIHN0YXRpY1B0ciA8IHN0YXRpY0xlbmd0
aCApCS8vIGlzIHRoZXJlIHBsYWNlIGZvciBpdD8NCi0JCQl7DQorICAgIGlmICggc3RhdGljUHRy
IDwgc3RhdGljTGVuZ3RoICkgLy8gaXMgdGhlcmUgcGxhY2UgZm9yIGl0Pw0KKyAgICAgIHsNCiAg
ICAgICAgICAgICAvKmxpbnQgLWV7MTExfSBBc3NpZ25tZW50IHRvIGNvbnN0IG9iamVjdCAqLw0K
LQkJCXRleHQtPkRlcygpWyBzdGF0aWNQdHIgXSA9IGFSZWFkYWJsZSA/ICggKmlEeW5hbWljIClb
IGR5bmFtaWNQdHIgXQ0KLQkJCQkJCQkJCQkJCSA6IEtPYnNjdXJpbmdDaGFyKClbIDAgXTsNCi0J
CQl9DQotCQllbHNlDQotCQkJew0KLQkJCWJyZWFrOw0KLQkJCX0NCi0JCX0NCi0NCi0JaWYgKCBk
eW5hbWljUHRyIDwgZHluYW1pY0xlbmd0aCApCS8vIGFwcGVuZCB0aGUgcmVtYWluaW5nIGR5bmFt
aWMgdGV4dA0KLQkJew0KLQkJSEJ1ZkMqIG5ld1RleHQgPSB0ZXh0LT5SZUFsbG9jTA0KLQkJCSgg
c3RhdGljTGVuZ3RoICsgZHluYW1pY0xlbmd0aCAtIGR5bmFtaWNQdHIgKyAxICk7DQotDQotCQlD
bGVhbnVwU3RhY2s6OlBvcCgpOwkJCS8vIHRleHQNCi0JCUNsZWFudXBTdGFjazo6UHVzaEwoIG5l
d1RleHQgKTsJLy8gbmV3VGV4dA0KLQkJdGV4dCA9IG5ld1RleHQ7DQotDQotCQlpZiAoIGFSZWFk
YWJsZSApDQotCQkJew0KLQkJCWZvciAoIDsgZHluYW1pY1B0ciA8IGR5bmFtaWNMZW5ndGg7IGR5
bmFtaWNQdHIrKyApDQotCQkJCXsNCi0JCQkJdGV4dC0+RGVzKCkuQXBwZW5kKCAoICppRHluYW1p
YyApWyBkeW5hbWljUHRyIF0gKTsNCi0JCQkJfQ0KLQkJCX0NCi0JCWVsc2UNCi0JCQl7DQotCQkJ
Zm9yICggOyBkeW5hbWljUHRyIDwgZHluYW1pY0xlbmd0aDsgZHluYW1pY1B0cisrICkNCi0JCQkJ
ew0KLQkJCQl0ZXh0LT5EZXMoKS5BcHBlbmQoIEtPYnNjdXJpbmdDaGFyICk7DQotCQkJCX0NCi0J
CQl9DQotCQl9DQotDQotCXRleHQtPkRlcygpLlplcm9UZXJtaW5hdGUoKTsNCi0JcmV0dXJuIHRl
eHQ7DQotCX0NCisgICAgICB0ZXh0LT5EZXMoKVsgc3RhdGljUHRyIF0gPSBhUmVhZGFibGUgPyAo
ICppRHluYW1pYyApWyBkeW5hbWljUHRyIF0NCisgICAgICAgICAgICAgICAgICAgICAgICAgOiBL
T2JzY3VyaW5nQ2hhcigpWyAwIF07DQorICAgICAgfQ0KKyAgICBlbHNlDQorICAgICAgew0KKyAg
ICAgIGJyZWFrOw0KKyAgICAgIH0NCisgICAgfQ0KKw0KKyAgaWYgKCBkeW5hbWljUHRyIDwgZHlu
YW1pY0xlbmd0aCApIC8vIGFwcGVuZCB0aGUgcmVtYWluaW5nIGR5bmFtaWMgdGV4dA0KKyAgICB7
DQorICAgIEhCdWZDKiBuZXdUZXh0ID0gdGV4dC0+UmVBbGxvY0wNCisgICAgICAoIHN0YXRpY0xl
bmd0aCArIGR5bmFtaWNMZW5ndGggLSBkeW5hbWljUHRyICsgMSApOw0KKw0KKyAgICBDbGVhbnVw
U3RhY2s6OlBvcCgpOyAgICAgIC8vIHRleHQNCisgICAgQ2xlYW51cFN0YWNrOjpQdXNoTCggbmV3
VGV4dCApOyAvLyBuZXdUZXh0DQorICAgIHRleHQgPSBuZXdUZXh0Ow0KKw0KKyAgICBpZiAoIGFS
ZWFkYWJsZSApDQorICAgICAgew0KKyAgICAgIGZvciAoIDsgZHluYW1pY1B0ciA8IGR5bmFtaWNM
ZW5ndGg7IGR5bmFtaWNQdHIrKyApDQorICAgICAgICB7DQorICAgICAgICB0ZXh0LT5EZXMoKS5B
cHBlbmQoICggKmlEeW5hbWljIClbIGR5bmFtaWNQdHIgXSApOw0KKyAgICAgICAgfQ0KKyAgICAg
IH0NCisgICAgZWxzZQ0KKyAgICAgIHsNCisgICAgICBmb3IgKCA7IGR5bmFtaWNQdHIgPCBkeW5h
bWljTGVuZ3RoOyBkeW5hbWljUHRyKysgKQ0KKyAgICAgICAgew0KKyAgICAgICAgdGV4dC0+RGVz
KCkuQXBwZW5kKCBLT2JzY3VyaW5nQ2hhciApOw0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAg
fQ0KKw0KKyAgdGV4dC0+RGVzKCkuWmVyb1Rlcm1pbmF0ZSgpOw0KKyAgcmV0dXJuIHRleHQ7DQor
ICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6SW5zZXJ0TA0KIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8v
DQogdm9pZCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpJbnNlcnRMKCBUSW50IGFQb3MsIFRDaGFyIGFD
aGFyICkNCi0Jew0KLQlUQnVmPDE+IGJ1ZjsNCi0JYnVmLkFwcGVuZCggYUNoYXIgKTsNCi0JSW5z
ZXJ0TCggYVBvcywgYnVmICk7DQotCX0NCisgIHsNCisgIFRCdWY8MT4gYnVmOw0KKyAgYnVmLkFw
cGVuZCggYUNoYXIgKTsNCisgIEluc2VydEwoIGFQb3MsIGJ1ZiApOw0KKyAgfQ0KIA0KIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
IC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6Okluc2VydEwNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIHZvaWQgQ0lucHV0
Rm9ybWF0SGFuZGxlcjo6SW5zZXJ0TCggVEludCBhUG9zLCBjb25zdCBURGVzQyYgYURlcyApDQot
CXsNCi0JVEludCBuZXdQb3MgPSBQb3NFeGx1ZGluZ1N0YXRpYyggYVBvcyApOw0KLQlpZiAoIC0x
IDwgbmV3UG9zICYmIG5ld1BvcyA8PSBpRHluYW1pYy0+TGVuZ3RoKCkgKQ0KLQkJew0KLQkJLy8g
bWFrZSBzdXJlIHRoZXJlJ3MgZW5vdWdoIHNwYWNlDQotCQlUSW50IG5ld0xlbmd0aCA9IGlEeW5h
bWljLT5MZW5ndGgoKSArIGFEZXMuTGVuZ3RoKCk7DQotCQlpZiAoIGlEeW5hbWljLT5EZXMoKS5N
YXhMZW5ndGgoKSA8IG5ld0xlbmd0aCApDQotCQkJew0KLQkJCWlEeW5hbWljID0gaUR5bmFtaWMt
PlJlQWxsb2NMKCBuZXdMZW5ndGggKTsNCi0JCQl9DQotDQotCQlpRHluYW1pYy0+RGVzKCkuSW5z
ZXJ0KCBuZXdQb3MsIGFEZXMgKTsNCi0JCX0NCi0JfQ0KKyAgew0KKyAgVEludCBuZXdQb3MgPSBQ
b3NFeGx1ZGluZ1N0YXRpYyggYVBvcyApOw0KKyAgaWYgKCAtMSA8IG5ld1BvcyAmJiBuZXdQb3Mg
PD0gaUR5bmFtaWMtPkxlbmd0aCgpICkNCisgICAgew0KKyAgICAvLyBtYWtlIHN1cmUgdGhlcmUn
cyBlbm91Z2ggc3BhY2UNCisgICAgVEludCBuZXdMZW5ndGggPSBpRHluYW1pYy0+TGVuZ3RoKCkg
KyBhRGVzLkxlbmd0aCgpOw0KKyAgICBpZiAoIGlEeW5hbWljLT5EZXMoKS5NYXhMZW5ndGgoKSA8
IG5ld0xlbmd0aCApDQorICAgICAgew0KKyAgICAgIGlEeW5hbWljID0gaUR5bmFtaWMtPlJlQWxs
b2NMKCBuZXdMZW5ndGggKTsNCisgICAgICB9DQorDQorICAgIGlEeW5hbWljLT5EZXMoKS5JbnNl
cnQoIG5ld1BvcywgYURlcyApOw0KKyAgICB9DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9y
bWF0SGFuZGxlcjo6RGVsZXRlDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUQm9vbCBDSW5wdXRGb3JtYXRIYW5kbGVy
OjpEZWxldGUoIFRJbnQgYVBvcywgVEludCBhTGVuZ3RoICkNCi0Jew0KKyAgew0KICAgVEJvb2wg
c3RhdHVzID0gRUZhbHNlOw0KLQlUSW50IG5ld1BvcyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9z
ICk7DQotCWlmICggLTEgPCBuZXdQb3MgJiYgbmV3UG9zICsgYUxlbmd0aCA8PSBpRHluYW1pYy0+
TGVuZ3RoKCkgKQ0KLQkJew0KLQkJaUR5bmFtaWMtPkRlcygpLkRlbGV0ZSggbmV3UG9zLCBhTGVu
Z3RoICk7DQorICBUSW50IG5ld1BvcyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9zICk7DQorICBp
ZiAoIC0xIDwgbmV3UG9zICYmIG5ld1BvcyArIGFMZW5ndGggPD0gaUR5bmFtaWMtPkxlbmd0aCgp
ICkNCisgICAgew0KKyAgICBpRHluYW1pYy0+RGVzKCkuRGVsZXRlKCBuZXdQb3MsIGFMZW5ndGgg
KTsNCiAgICAgc3RhdHVzID0gRVRydWU7DQotCQl9DQorICAgIH0NCiAgIHJldHVybiBzdGF0dXM7
DQotCX0NCisgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDSW5wdXRGb3JtYXRIYW5kbGVyOjpTdGF0aWNUZXh0
TEMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCiAvLw0KIEhCdWZDKiBDSW5wdXRGb3JtYXRIYW5kbGVyOjpTdGF0aWNUZXh0TEMo
KSBjb25zdA0KLQl7DQotCVRJbnQgY291bnQgPSBpU3RhdGljLT5Db3VudCgpOw0KLQlUSW50IGxl
bmd0aCA9ICggY291bnQgKSA/IGlTdGF0aWMtPkF0KCBjb3VudCAtIDEgKS5Qb3MoKSArIDEgOiAw
Ow0KLQlIQnVmQyogZW1wdHkgPSBIQnVmQzo6TmV3TEMoIGxlbmd0aCArIDEgKTsNCi0JZW1wdHkt
PkRlcygpLkZpbGwoICcgJywgbGVuZ3RoICk7DQotCWZvciAoIFRJbnQgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrICkNCi0JCXsNCi0JCVRTdGF0aWNDaGFyIHN0YXRpY0NoYXIgPSBpU3RhdGljLT5BdCgg
aSApOw0KKyAgew0KKyAgVEludCBjb3VudCA9IGlTdGF0aWMtPkNvdW50KCk7DQorICBUSW50IGxl
bmd0aCA9ICggY291bnQgKSA/IGlTdGF0aWMtPkF0KCBjb3VudCAtIDEgKS5Qb3MoKSArIDEgOiAw
Ow0KKyAgSEJ1ZkMqIGVtcHR5ID0gSEJ1ZkM6Ok5ld0xDKCBsZW5ndGggKyAxICk7DQorICBlbXB0
eS0+RGVzKCkuRmlsbCggJyAnLCBsZW5ndGggKTsNCisgIGZvciAoIFRJbnQgaSA9IDA7IGkgPCBj
b3VudDsgaSsrICkNCisgICAgew0KKyAgICBUU3RhdGljQ2hhciBzdGF0aWNDaGFyID0gaVN0YXRp
Yy0+QXQoIGkgKTsNCiAgICAgICAgIC8qbGludCAtZXsxMTF9IEFzc2lnbm1lbnQgdG8gY29uc3Qg
b2JqZWN0ICovDQotCQllbXB0eS0+RGVzKClbIHN0YXRpY0NoYXIuUG9zKCkgXSA9DQotCQkJU1RB
VElDX0NBU1QoIFRVaW50MTYsIHN0YXRpY0NoYXIuQ2hhcigpICk7DQotCQl9DQotDQotCWVtcHR5
LT5EZXMoKS5aZXJvVGVybWluYXRlKCk7DQotCXJldHVybiBlbXB0eTsNCi0JfQ0KKyAgICBlbXB0
eS0+RGVzKClbIHN0YXRpY0NoYXIuUG9zKCkgXSA9DQorICAgICAgU1RBVElDX0NBU1QoIFRVaW50
MTYsIHN0YXRpY0NoYXIuQ2hhcigpICk7DQorICAgIH0NCisNCisgIGVtcHR5LT5EZXMoKS5aZXJv
VGVybWluYXRlKCk7DQorICByZXR1cm4gZW1wdHk7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0
Rm9ybWF0SGFuZGxlcjo6TnVtYmVyT2ZTdGF0aWMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRJbnQgQ0lucHV0Rm9y
bWF0SGFuZGxlcjo6TnVtYmVyT2ZTdGF0aWMoKSBjb25zdA0KLQl7DQotCXJldHVybiBpU3RhdGlj
LT5Db3VudCgpOw0KLQl9DQorICB7DQorICByZXR1cm4gaVN0YXRpYy0+Q291bnQoKTsNCisgIH0N
CiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCiAvLyBDSW5wdXRGb3JtYXRIYW5kbGVyOjpHZXRGb3JtYXQNCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0K
IFRJbnB1dEZvcm1hdENoYXIgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6R2V0Rm9ybWF0KCBUSW50IGFJ
bmRleCApIGNvbnN0DQotCXsNCi0JVFVpbnQgY29kZSA9IEtJbnB1dEZvcm1hdE5vbmU7DQotCWlm
ICggLTEgPCBhSW5kZXggKQ0KLQkJew0KLQkJaWYgKCBhSW5kZXggPCBpTWFzay0+TGVuZ3RoKCkg
KQkJLy8gaXMgaXQgaW4gdGhlIG1hc2s/DQotCQkJew0KLQkJCWNvZGUgPSAoICppTWFzayApWyBh
SW5kZXggXTsNCi0JCQl9DQotCQllbHNlDQotCQkJew0KLQkJCWlmICggYUluZGV4IDwgaU1heExl
bmd0aCB8fA0KLQkJCQkgaU1heExlbmd0aCA9PSBLSW5maW5pdGVMZW5ndGggKQkJLy8gaXMgaXQg
dGhlIHBvc3RmaXg/DQotCQkJCXsNCi0JCQkJY29kZSA9IGlQb3N0Rml4Ow0KLQkJCQl9DQotCQkJ
fQ0KLQkJfQ0KLQ0KLQlUSW50IHN0YXRpY0NoYXIgPSAwOw0KLQlpZiAoIGNvZGUgPT0gS0lucHV0
Rm9ybWF0U3RhdGljICkJCQkvLyBpcyBpdCBzdGF0aWM/DQotCQl7DQotCQlmb3IgKCBUSW50IGkg
PSBpU3RhdGljLT5Db3VudCgpIC0gMTsgaSA+IC0xOyBpLS0gKQ0KLQkJCXsNCi0JCQlpZiAoIGlT
dGF0aWMtPkF0KCBpICkuUG9zKCkgPT0gYUluZGV4ICkNCi0JCQkJew0KLQkJCQlzdGF0aWNDaGFy
ID0gaVN0YXRpYy0+QXQoIGkgKS5DaGFyKCk7DQotCQkJCWJyZWFrOw0KLQkJCQl9DQotCQkJfQ0K
LQkJfQ0KKyAgew0KKyAgVFVpbnQgY29kZSA9IEtJbnB1dEZvcm1hdE5vbmU7DQorICBpZiAoIC0x
IDwgYUluZGV4ICkNCisgICAgew0KKyAgICBpZiAoIGFJbmRleCA8IGlNYXNrLT5MZW5ndGgoKSAp
ICAgLy8gaXMgaXQgaW4gdGhlIG1hc2s/DQorICAgICAgew0KKyAgICAgIGNvZGUgPSAoICppTWFz
ayApWyBhSW5kZXggXTsNCisgICAgICB9DQorICAgIGVsc2UNCisgICAgICB7DQorICAgICAgaWYg
KCBhSW5kZXggPCBpTWF4TGVuZ3RoIHx8DQorICAgICAgICAgaU1heExlbmd0aCA9PSBLSW5maW5p
dGVMZW5ndGggKSAgICAvLyBpcyBpdCB0aGUgcG9zdGZpeD8NCisgICAgICAgIHsNCisgICAgICAg
IGNvZGUgPSBpUG9zdEZpeDsNCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0NCisNCisgIFRJ
bnQgc3RhdGljQ2hhciA9IDA7DQorICBpZiAoIGNvZGUgPT0gS0lucHV0Rm9ybWF0U3RhdGljICkg
ICAgIC8vIGlzIGl0IHN0YXRpYz8NCisgICAgew0KKyAgICBmb3IgKCBUSW50IGkgPSBpU3RhdGlj
LT5Db3VudCgpIC0gMTsgaSA+IC0xOyBpLS0gKQ0KKyAgICAgIHsNCisgICAgICBpZiAoIGlTdGF0
aWMtPkF0KCBpICkuUG9zKCkgPT0gYUluZGV4ICkNCisgICAgICAgIHsNCisgICAgICAgIHN0YXRp
Y0NoYXIgPSBpU3RhdGljLT5BdCggaSApLkNoYXIoKTsNCisgICAgICAgIGJyZWFrOw0KKyAgICAg
ICAgfQ0KKyAgICAgIH0NCisgICAgfQ0KIA0KLQlyZXR1cm4gVElucHV0Rm9ybWF0Q2hhciggY29k
ZSwgc3RhdGljQ2hhciApOw0KLQl9DQorICByZXR1cm4gVElucHV0Rm9ybWF0Q2hhciggY29kZSwg
c3RhdGljQ2hhciApOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6OlBv
c3RGaXgNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCiAvLw0KIFRJbnB1dEZvcm1hdENoYXIgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
UG9zdEZpeCgpIGNvbnN0DQotCXsNCi0JcmV0dXJuIGlQb3N0Rml4Ow0KLQl9DQorICB7DQorICBy
ZXR1cm4gaVBvc3RGaXg7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
TWluTGVuZ3RoDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUSW50IENJbnB1dEZvcm1hdEhhbmRsZXI6Ok1pbkxlbmd0
aCgpIGNvbnN0DQotCXsNCi0JcmV0dXJuIGlNaW5MZW5ndGg7DQotCX0NCisgIHsNCisgIHJldHVy
biBpTWluTGVuZ3RoOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6Ok1h
eExlbmd0aA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KIC8vDQogVEludCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpNYXhMZW5ndGgo
KSBjb25zdA0KLQl7DQotCXJldHVybiBpTWF4TGVuZ3RoOw0KLQl9DQorICB7DQorICByZXR1cm4g
aU1heExlbmd0aDsNCisgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDSW5wdXRGb3JtYXRIYW5kbGVyOjpWYWxp
ZGF0ZUNoYXINCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIENJbnB1dEZvcm1hdEhhbmRsZXI6OlZhbGlkYXRl
Q2hhcg0KLQkoIFRDaGFyIGFDaGFyLCBUSW5wdXRGb3JtYXRDaGFyIGFGb3JtYXRDaGFyICkgY29u
c3QNCi0Jew0KKyAgKCBUQ2hhciBhQ2hhciwgVElucHV0Rm9ybWF0Q2hhciBhRm9ybWF0Q2hhciAp
IGNvbnN0DQorICB7DQogICAgIFRCb29sIG1hdGNoKCBFRmFsc2UgKTsNCiANCi0JaWYgKCBhRm9y
bWF0Q2hhci5TdGF0aWMoKSApCQkvLyBpcyBpdCBzdGF0aWM/DQotCQl7DQotCQltYXRjaCA9ICgg
YUNoYXIgPT0gYUZvcm1hdENoYXIuU3RhdGljKCkgKTsNCi0JCX0NCi0JZWxzZQ0KLQkJew0KLQkJ
aWYgKCBhQ2hhci5Jc0RpZ2l0KCkgKQkJLy8gaXMgaXQgbnVtYmVyPw0KLQkJCXsNCi0JCQltYXRj
aCA9IGFGb3JtYXRDaGFyLk51bWVyaWNBbGxvd2VkKCk7DQotCQkJfQ0KLQkJZWxzZQ0KLQkJCXsN
Ci0JCQlpZiAoIGFDaGFyLklzQWxwaGEoKSApCS8vIGlzIGl0IGFscGhhYmV0aWNhbD8NCi0JCQkJ
ew0KLQkJCQlUSW5wdXRGb3JtYXRDaGFyOjpUSW5wdXRDYXNlIGZvcmNlZENhc2UgPSBhRm9ybWF0
Q2hhci5Gb3JjZWRDYXNlKCk7DQotCQkJCW1hdGNoID0gKCBmb3JjZWRDYXNlID09IFRJbnB1dEZv
cm1hdENoYXI6OkVJbnB1dE5vbmUgKQ0KLQkJCQkJPyBFVHJ1ZQ0KLQkJCQkJOiAoIGFDaGFyLklz
VXBwZXIoKSAmJg0KLQkJCQkJCWZvcmNlZENhc2UgPT0gVElucHV0Rm9ybWF0Q2hhcjo6RUlucHV0
VXBwZXJDYXNlICkgfHwNCi0JCQkJCSAgKCBhQ2hhci5Jc0xvd2VyKCkgJiYNCi0JCQkJCQlmb3Jj
ZWRDYXNlID09IFRJbnB1dEZvcm1hdENoYXI6OkVJbnB1dExvd2VyQ2FzZSApOw0KKyAgaWYgKCBh
Rm9ybWF0Q2hhci5TdGF0aWMoKSApICAgLy8gaXMgaXQgc3RhdGljPw0KKyAgICB7DQorICAgIG1h
dGNoID0gKCBhQ2hhciA9PSBhRm9ybWF0Q2hhci5TdGF0aWMoKSApOw0KKyAgICB9DQorICBlbHNl
DQorICAgIHsNCisgICAgaWYgKCBhQ2hhci5Jc0RpZ2l0KCkgKSAgICAvLyBpcyBpdCBudW1iZXI/
DQorICAgICAgew0KKyAgICAgIG1hdGNoID0gYUZvcm1hdENoYXIuTnVtZXJpY0FsbG93ZWQoKTsN
CisgICAgICB9DQorICAgIGVsc2UNCisgICAgICB7DQorICAgICAgaWYgKCBhQ2hhci5Jc0FscGhh
KCkgKSAgLy8gaXMgaXQgYWxwaGFiZXRpY2FsPw0KKyAgICAgICAgew0KKyAgICAgICAgVElucHV0
Rm9ybWF0Q2hhcjo6VElucHV0Q2FzZSBmb3JjZWRDYXNlID0gYUZvcm1hdENoYXIuRm9yY2VkQ2Fz
ZSgpOw0KKyAgICAgICAgbWF0Y2ggPSAoIGZvcmNlZENhc2UgPT0gVElucHV0Rm9ybWF0Q2hhcjo6
RUlucHV0Tm9uZSApDQorICAgICAgICAgID8gRVRydWUNCisgICAgICAgICAgOiAoIGFDaGFyLklz
VXBwZXIoKSAmJg0KKyAgICAgICAgICAgIGZvcmNlZENhc2UgPT0gVElucHV0Rm9ybWF0Q2hhcjo6
RUlucHV0VXBwZXJDYXNlICkgfHwNCisgICAgICAgICAgICAoIGFDaGFyLklzTG93ZXIoKSAmJg0K
KyAgICAgICAgICAgIGZvcmNlZENhc2UgPT0gVElucHV0Rm9ybWF0Q2hhcjo6RUlucHV0TG93ZXJD
YXNlICk7DQogICAgICAgICAvLyBJZiBub24td2VzdGVybiBhbHBoYSB0aGVuIGFzc3VtZSB0aGVy
ZSBpcyBubyB1cHBlciBhbmQgbG93ZXIgY2FzZQ0KICAgICAgICAgLy8gLSBzbyBjaGVjayBmb3Ig
TGV0dGVyT3RoZXIgb3IgTGV0dGVyQ2hpbmEvTGV0dGVyVGhhaSAoZGVwZW5kaW5nIHVwb24gdmFy
aWFudCkuDQogICAgICAgICAvLyBJZiBpbnZhbGlkIGNoYXIgZm9yIGZvcm1hdCwgdmFsdWUgb2Yg
Im1hdGNoIiBpcyByZXRhaW5lZC4gDQpAQCAtNjc1LDEyOSArNjc2LDEyOSBAQCBUQm9vbCBDSW5w
dXRGb3JtYXRIYW5kbGVyOjpWYWxpZGF0ZUNoYXINCiAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgICAqLw0KICAgICAgICAgICAgIH0NCi0JCQkJfQ0KLQkJCWVsc2UNCi0JCQkJewkJ
CQkJLy8gaXQncyBwdW5jdHVhdG9yIG9yIHN5bWJvbA0KLQkJCQltYXRjaCA9IGFGb3JtYXRDaGFy
LlNwZWNpYWxBbGxvd2VkKCk7DQotCQkJCX0NCi0JCQl9DQotCQl9DQorICAgICAgICB9DQorICAg
ICAgZWxzZQ0KKyAgICAgICAgeyAgICAgICAgIC8vIGl0J3MgcHVuY3R1YXRvciBvciBzeW1ib2wN
CisgICAgICAgIG1hdGNoID0gYUZvcm1hdENoYXIuU3BlY2lhbEFsbG93ZWQoKTsNCisgICAgICAg
IH0NCisgICAgICB9DQorICAgIH0NCiANCi0JcmV0dXJuIG1hdGNoOw0KLQl9DQorICByZXR1cm4g
bWF0Y2g7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVU
ZXh0TEMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCiAvLw0KIENBcnJheUZpeEZsYXQ8VEludD4qIENJbnB1dEZvcm1hdEhhbmRs
ZXI6OlZhbGlkYXRlVGV4dExDKCkgY29uc3QNCi0Jew0KLQlDQXJyYXlGaXhGbGF0PFRJbnQ+KiBl
cnJvcnMgPQ0KLQkJbmV3KCBFTGVhdmUgKUNBcnJheUZpeEZsYXQ8VEludD4oIDMgKTsNCi0JQ2xl
YW51cFN0YWNrOjpQdXNoTCggZXJyb3JzICk7DQotDQotCUhCdWZDKiB0ZXh0ID0gVGV4dExDKCk7
DQotCVRJbnQgbGVuZ3RoKCB0ZXh0LT5MZW5ndGgoKSApOw0KLQlmb3IgKCBUSW50IGkgPSAwOyBp
IDwgbGVuZ3RoOyBpKysgKQ0KLQkJew0KLQkJaWYgKCAhVmFsaWRhdGVDaGFyKCAoICp0ZXh0IClb
IGkgXSwgR2V0Rm9ybWF0KCBpICkgKSApDQotCQkJew0KLQkJCWVycm9ycy0+QXBwZW5kTCggaSAp
Ow0KLQkJCX0NCi0JCX0NCi0JCQ0KLQlDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koKTsJLy8g
dGV4dA0KLQlyZXR1cm4gZXJyb3JzOw0KLQl9DQorICB7DQorICBDQXJyYXlGaXhGbGF0PFRJbnQ+
KiBlcnJvcnMgPQ0KKyAgICBuZXcoIEVMZWF2ZSApQ0FycmF5Rml4RmxhdDxUSW50PiggMyApOw0K
KyAgQ2xlYW51cFN0YWNrOjpQdXNoTCggZXJyb3JzICk7DQorDQorICBIQnVmQyogdGV4dCA9IFRl
eHRMQygpOw0KKyAgVEludCBsZW5ndGgoIHRleHQtPkxlbmd0aCgpICk7DQorICBmb3IgKCBUSW50
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysgKQ0KKyAgICB7DQorICAgIGlmICggIVZhbGlkYXRlQ2hh
ciggKCAqdGV4dCApWyBpIF0sIEdldEZvcm1hdCggaSApICkgKQ0KKyAgICAgIHsNCisgICAgICBl
cnJvcnMtPkFwcGVuZEwoIGkgKTsNCisgICAgICB9DQorICAgIH0NCisgICAgDQorICBDbGVhbnVw
U3RhY2s6OlBvcEFuZERlc3Ryb3koKTsgIC8vIHRleHQNCisgIHJldHVybiBlcnJvcnM7DQorICB9
DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVUZXh0TA0KIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
IC8vDQogVEJvb2wgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVUZXh0TCgpIGNvbnN0DQot
CXsNCi0JSEJ1ZkMqIHRleHQgPSBUZXh0TEMoKTsNCi0JVEludCBsZW5ndGgoIHRleHQtPkxlbmd0
aCgpICk7DQotCVRJbnQgaTsNCi0JZm9yICggaSA9IDA7DQotCQkgIGkgPCBsZW5ndGggJiYgVmFs
aWRhdGVDaGFyKCAoICp0ZXh0IClbIGkgXSwgR2V0Rm9ybWF0KCBpICkgKTsNCi0JCSAgaSsrICkN
Ci0JCXt9DQotCQkNCi0JQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7CS8vIHRleHQNCi0J
cmV0dXJuICggaSA9PSBsZW5ndGggKTsNCi0JfQ0KKyAgew0KKyAgSEJ1ZkMqIHRleHQgPSBUZXh0
TEMoKTsNCisgIFRJbnQgbGVuZ3RoKCB0ZXh0LT5MZW5ndGgoKSApOw0KKyAgVEludCBpOw0KKyAg
Zm9yICggaSA9IDA7DQorICAgICAgaSA8IGxlbmd0aCAmJiBWYWxpZGF0ZUNoYXIoICggKnRleHQg
KVsgaSBdLCBHZXRGb3JtYXQoIGkgKSApOw0KKyAgICAgIGkrKyApDQorICAgIHt9DQorICAgIA0K
KyAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7ICAvLyB0ZXh0DQorICByZXR1cm4gKCBp
ID09IGxlbmd0aCApOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6OlBv
c0luY2x1ZGluZ1N0YXRpYw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVEludCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpQ
b3NJbmNsdWRpbmdTdGF0aWMoIFRJbnQgYVBvc0V4bHVkaW5nU3RhdGljICkNCi0Jew0KLQlUSW50
IGkgPSAwOw0KLQlUSW50IGNvdW50ID0gaVN0YXRpYy0+Q291bnQoKTsNCi0JZm9yICggOyBpIDwg
Y291bnQ7IGkrKyApDQotCQl7DQotCQlpZiAoIGlTdGF0aWMtPkF0KCBpICkuUG9zKCkgPD0gYVBv
c0V4bHVkaW5nU3RhdGljICkNCi0JCQl7DQotCQkJYVBvc0V4bHVkaW5nU3RhdGljKys7DQotCQkJ
fQ0KLQkJfQ0KKyAgew0KKyAgVEludCBpID0gMDsNCisgIFRJbnQgY291bnQgPSBpU3RhdGljLT5D
b3VudCgpOw0KKyAgZm9yICggOyBpIDwgY291bnQ7IGkrKyApDQorICAgIHsNCisgICAgaWYgKCBp
U3RhdGljLT5BdCggaSApLlBvcygpIDw9IGFQb3NFeGx1ZGluZ1N0YXRpYyApDQorICAgICAgew0K
KyAgICAgIGFQb3NFeGx1ZGluZ1N0YXRpYysrOw0KKyAgICAgIH0NCisgICAgfQ0KIA0KLQlyZXR1
cm4gYVBvc0V4bHVkaW5nU3RhdGljOw0KLQl9DQorICByZXR1cm4gYVBvc0V4bHVkaW5nU3RhdGlj
Ow0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6OlBvc0V4bHVkaW5nU3Rh
dGljDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQogLy8NCiBUSW50IENJbnB1dEZvcm1hdEhhbmRsZXI6OlBvc0V4bHVkaW5nU3Rh
dGljKCBUSW50IGFQb3NJbmNsdWRpbmdTdGF0aWMgKQ0KLQl7DQotCS8vIGZpbmQgdGhlIG5lYXJl
c3Qgc3RhdGljIGNoYXJhY3RlciBiZWZvcmUgYVBvc0luY2x1ZGluZ1N0YXRpYw0KLQlUSW50IGkg
PSBpU3RhdGljLT5Db3VudCgpIC0gMTsNCi0JZm9yICggOw0KLQkJICBpID4gLTEgJiYgYVBvc0lu
Y2x1ZGluZ1N0YXRpYyA8IGlTdGF0aWMtPkF0KCBpICkuUG9zKCk7DQotCQkgIGktLSApDQotCQl7
CQ0KLQkJfQ0KKyAgew0KKyAgLy8gZmluZCB0aGUgbmVhcmVzdCBzdGF0aWMgY2hhcmFjdGVyIGJl
Zm9yZSBhUG9zSW5jbHVkaW5nU3RhdGljDQorICBUSW50IGkgPSBpU3RhdGljLT5Db3VudCgpIC0g
MTsNCisgIGZvciAoIDsNCisgICAgICBpID4gLTEgJiYgYVBvc0luY2x1ZGluZ1N0YXRpYyA8IGlT
dGF0aWMtPkF0KCBpICkuUG9zKCk7DQorICAgICAgaS0tICkNCisgICAgeyANCisgICAgfQ0KIA0K
LQlyZXR1cm4gKCBhUG9zSW5jbHVkaW5nU3RhdGljIC0gaSAtIDEgKTsNCi0JfQ0KKyAgcmV0dXJu
ICggYVBvc0luY2x1ZGluZ1N0YXRpYyAtIGkgLSAxICk7DQorICB9DQogDQogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lu
cHV0Rm9ybWF0SGFuZGxlcjo6UHJldmlvdXNOb25TdGF0aWMNCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRJbnQgQ0lu
cHV0Rm9ybWF0SGFuZGxlcjo6UHJldmlvdXNOb25TdGF0aWMoIFRJbnQgYVBvcyApDQotCXsNCi0J
VEludCBwb3NFeGx1ZGluZ1N0YXRpYyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9zICk7DQorICB7
DQorICBUSW50IHBvc0V4bHVkaW5nU3RhdGljID0gUG9zRXhsdWRpbmdTdGF0aWMoIGFQb3MgKTsN
CiANCi0JcmV0dXJuICggLTEgPCBwb3NFeGx1ZGluZ1N0YXRpYyApDQotCQk/IFBvc0luY2x1ZGlu
Z1N0YXRpYyggcG9zRXhsdWRpbmdTdGF0aWMgKQ0KLQkJOiBLTm90Rm91bmQ7DQotCX0NCisgIHJl
dHVybiAoIC0xIDwgcG9zRXhsdWRpbmdTdGF0aWMgKQ0KKyAgICA/IFBvc0luY2x1ZGluZ1N0YXRp
YyggcG9zRXhsdWRpbmdTdGF0aWMgKQ0KKyAgICA6IEtOb3RGb3VuZDsNCisgIH0NCiANCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CiAvLyBDSW5wdXRGb3JtYXRIYW5kbGVyOjpOZXh0Tm9uU3RhdGljDQogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUSW50
IENJbnB1dEZvcm1hdEhhbmRsZXI6Ok5leHROb25TdGF0aWMoIFRJbnQgYVBvcyApDQotCXsNCi0J
VEludCBwb3NFeGx1ZGluZ1N0YXRpYyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9zICkgKyAxOw0K
KyAgew0KKyAgVEludCBwb3NFeGx1ZGluZ1N0YXRpYyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9z
ICkgKyAxOw0KIA0KLQlyZXR1cm4gKCBwb3NFeGx1ZGluZ1N0YXRpYyA8IGlEeW5hbWljLT5MZW5n
dGgoKSApDQotCQk/IFBvc0luY2x1ZGluZ1N0YXRpYyggcG9zRXhsdWRpbmdTdGF0aWMgKQ0KLQkJ
OiBLTm90Rm91bmQ7DQotCX0NCisgIHJldHVybiAoIHBvc0V4bHVkaW5nU3RhdGljIDwgaUR5bmFt
aWMtPkxlbmd0aCgpICkNCisgICAgPyBQb3NJbmNsdWRpbmdTdGF0aWMoIHBvc0V4bHVkaW5nU3Rh
dGljICkNCisgICAgOiBLTm90Rm91bmQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0
SGFuZGxlcjo6Rmlyc3RFbXB0eQ0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVEludCBDSW5wdXRGb3JtYXRIYW5kbGVy
OjpGaXJzdEVtcHR5KCkNCi0Jew0KLQlyZXR1cm4gUG9zSW5jbHVkaW5nU3RhdGljKCBpRHluYW1p
Yy0+TGVuZ3RoKCkgKTsNCi0JfQ0KKyAgew0KKyAgcmV0dXJuIFBvc0luY2x1ZGluZ1N0YXRpYygg
aUR5bmFtaWMtPkxlbmd0aCgpICk7DQorICB9DQogDQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtODA1LDcgKzgwNiw3
IEBAIFRJbnQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6Rmlyc3RFbXB0eSgpDQogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBU
SW50IENJbnB1dEZvcm1hdEhhbmRsZXI6OlByZXZpb3VzU3RhdGljKCBUSW50IGFQb3MgKQ0KLQl7
DQorICB7DQogICBUSW50IHByZXZTdGF0aWNQb3MgPSAwOw0KICAgVEludCBpID0gaVN0YXRpYy0+
Q291bnQoKSAtIDE7DQogICBmb3IgKCA7IGkgPj0gMCAmJiAgaVN0YXRpYy0+QXQoIGkgKS5Qb3Mo
KSA+IGFQb3M7IGktLSApDQpAQCAtODE1LDcgKzgxNiw3IEBAIFRJbnQgQ0lucHV0Rm9ybWF0SGFu
ZGxlcjo6UHJldmlvdXNTdGF0aWMNCiAgICAgcHJldlN0YXRpY1BvcyAgPSBpU3RhdGljLT5BdCgg
aSApLlBvcygpIDsNCiAgICAgfQ0KICAgcmV0dXJuIHByZXZTdGF0aWNQb3MgOw0KLQl9DQorICB9
DQogDQogDQogDQpAQCAtODI0LDcgKzgyNSw3IEBAIFRJbnQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
UHJldmlvdXNTdGF0aWMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIENJbnB1dEZvcm1hdEhhbmRsZXI6Oklz
UG9zU3RhdGljKCBUSW50IGFQb3MgKQ0KLQl7DQorICB7DQogICBUSW50IGkgPSBpU3RhdGljLT5D
b3VudCgpIC0gMTsNCiAgIGZvciAoIDsgaSA+PSAwICYmICBpU3RhdGljLT5BdCggaSApLlBvcygp
ICE9IGFQb3M7IGktLSApDQogICAgIHt9DQpAQCAtODMzLDYgKzgzNCw2IEBAIFRCb29sIENJbnB1
dEZvcm1hdEhhbmRsZXI6OklzUG9zU3RhdGljKCANCiAgICAgcmV0dXJuIEVUcnVlOw0KICAgICB9
DQogICByZXR1cm4gRUZhbHNlOw0KLQl9DQorICB9DQogDQogLy8gIEVuZCBvZiBGaWxlDQpJbmRl
eDogV2ViS2l0L0Jyb3dzZXJDb3JlL0Zvcm1jb250cm9scy9zcmMvRklucHV0bEZvcm1hdHRlZEVk
aXRvci5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlckNvcmUvRm9ybWNvbnRyb2xz
L3NyYy9GSW5wdXRsRm9ybWF0dGVkRWRpdG9yLmNwcAkocmV2aXNpb24gMTg3MzgpDQorKysgV2Vi
S2l0L0Jyb3dzZXJDb3JlL0Zvcm1jb250cm9scy9zcmMvRklucHV0bEZvcm1hdHRlZEVkaXRvci5j
cHAJKHdvcmtpbmcgY29weSkNCkBAIC0xMTE1LDYgKzExMTUsMTIgQEAgVEJvb2wgQ0lucHV0Rm9y
bWF0dGVkRWRpdG9yOjpVcGRhdGVFZGl0aQ0KIA0KICAgICBpZiAoIGlIYW5kbGVyICkNCiAgICAg
ICAgIHsNCisgICAgICAgIC8vVGhpcyBjYXNlIG9jY3VycyB3aGVuIHRoZXJlIGlzIFdBUCBDU1Mg
cHJlc2VudC4gICAgICAgICANCisgICAgICAgIGFsbG93ZWRJbnB1dE1vZGVzID0gRUFrbkVkaXRv
ckFsbElucHV0TW9kZXM7IA0KKyAgICAgICAgaW5wdXRNb2RlID0gRUFrbkVkaXRvck51bWVyaWNJ
bnB1dE1vZGUgOw0KKyAgICAgICAgcGVybWl0dGVkQ2FzZSA9IEVBa25FZGl0b3JBbGxDYXNlTW9k
ZXM7DQorICAgICAgICBmZXBDYXNlID0gY3VycmVudENhc2UgPSBFQWtuRWRpdG9yVXBwZXJDYXNl
Ow0KKyAgICAgICAgDQogICAgICAgICBUSW5wdXRGb3JtYXRDaGFyIGZvcm1hdCA9IGlIYW5kbGVy
LT5HZXRGb3JtYXQoIGFEb2NQb3MgKTsNCiANCiAgICAgICAgIGlmICggaUZvcm1hdC5DaGFyKCkg
IT0gZm9ybWF0LkNoYXIoKSApDQpAQCAtMTEzMSw3ICsxMTM3LDcgQEAgVEJvb2wgQ0lucHV0Rm9y
bWF0dGVkRWRpdG9yOjpVcGRhdGVFZGl0aQ0KIA0KICAgICAgICAgICAgIGlmICggZm9ybWF0LlN1
Z2dlc3RlZENhc2UoKSA9PSBUSW5wdXRGb3JtYXRDaGFyOjpFSW5wdXRMb3dlckNhc2UgKQ0KICAg
ICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIGZlcENhc2UgPSBwZXJtaXR0ZWRDYXNl
ID0gRUFrbkVkaXRvckxvd2VyQ2FzZTsNCisgICAgICAgICAgICAgICAgZmVwQ2FzZSA9IGN1cnJl
bnRDYXNlID0gcGVybWl0dGVkQ2FzZSA9IEVBa25FZGl0b3JMb3dlckNhc2U7DQogICAgICAgICAg
ICAgICAgIH0NCiANCiAgICAgICAgICAgICBpZiAoZm9ybWF0LlNwZWNpYWxBbGxvd2VkKCkpDQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12370</attachid>
            <date>2007-01-11 14:32:17 -0800</date>
            <delta_ts>2007-01-18 10:53:51 -0800</delta_ts>
            <desc>Patch-2 for CCB/3.2</desc>
            <filename>wssformat1.patch</filename>
            <type>text/plain</type>
            <size>1848</size>
            <attacher name="Shyam Sareen">shyam.sareen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODc4MikNCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpA
QCAtMSwzICsxLDEyIEBADQorMjAwNy0wMS0xMSAgc2FyZWVuICBzYXJlZW4gIDxzaHlhbS5zYXJl
ZW5Abm9raWEuY29tPg0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FjaGluIFBhZG1hLg0KKyAg
ICAgICAgREVTQzogQ2FuJ3QgY2hhbmdlIGlucHV0IG1vZGUgaW4gV0FQIENTUyBmb3JtYXR0ZWQg
ZmllbGRzLihUU1cgSUQ6IFRNQ04tNlM1SFpSKQ0KKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgNCisNCisgICAgICAgICogQnJvd3NlckNvcmUvRm9y
bWNvbnRyb2xzL3NyYy9GSW5wdXRsRm9ybWF0dGVkRWRpdG9yLmNwcDoNCisgICAgICAgIChDSW5w
dXRGb3JtYXR0ZWRFZGl0b3I6OlVwZGF0ZUVkaXRpbmdQYXJhbWV0ZXJzKToNCisNCiAyMDA3LTAx
LTA5ICBzYXJlZW4gIDxzaHlhbS5zYXJlZW5Abm9raWEuY29tPg0KIA0KICAgICAgICAgUmV2aWV3
ZWQgYnkgU2FjaGluIFBhZG1hLg0KSW5kZXg6IFdlYktpdC9Ccm93c2VyQ29yZS9Gb3JtY29udHJv
bHMvc3JjL0ZJbnB1dGxGb3JtYXR0ZWRFZGl0b3IuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0
L0Jyb3dzZXJDb3JlL0Zvcm1jb250cm9scy9zcmMvRklucHV0bEZvcm1hdHRlZEVkaXRvci5jcHAJ
KHJldmlzaW9uIDE4NzgyKQ0KKysrIFdlYktpdC9Ccm93c2VyQ29yZS9Gb3JtY29udHJvbHMvc3Jj
L0ZJbnB1dGxGb3JtYXR0ZWRFZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMTExNSw2ICsx
MTE1LDEyIEBAIFRCb29sIENJbnB1dEZvcm1hdHRlZEVkaXRvcjo6VXBkYXRlRWRpdGkNCiANCiAg
ICAgaWYgKCBpSGFuZGxlciApDQogICAgICAgICB7DQorICAgICAgICAvL1RoaXMgY2FzZSBvY2N1
cnMgd2hlbiB0aGVyZSBpcyBXQVAgQ1NTIHByZXNlbnQuICAgICAgICAgDQorICAgICAgICBhbGxv
d2VkSW5wdXRNb2RlcyA9IEVBa25FZGl0b3JBbGxJbnB1dE1vZGVzOyANCisgICAgICAgIGlucHV0
TW9kZSA9IEVBa25FZGl0b3JOdW1lcmljSW5wdXRNb2RlIDsNCisgICAgICAgIHBlcm1pdHRlZENh
c2UgPSBFQWtuRWRpdG9yQWxsQ2FzZU1vZGVzOw0KKyAgICAgICAgZmVwQ2FzZSA9IGN1cnJlbnRD
YXNlID0gRUFrbkVkaXRvclVwcGVyQ2FzZTsNCisgICAgICAgIA0KICAgICAgICAgVElucHV0Rm9y
bWF0Q2hhciBmb3JtYXQgPSBpSGFuZGxlci0+R2V0Rm9ybWF0KCBhRG9jUG9zICk7DQogDQogICAg
ICAgICBpZiAoIGlGb3JtYXQuQ2hhcigpICE9IGZvcm1hdC5DaGFyKCkgKQ0KQEAgLTExMzEsNyAr
MTEzNyw3IEBAIFRCb29sIENJbnB1dEZvcm1hdHRlZEVkaXRvcjo6VXBkYXRlRWRpdGkNCiANCiAg
ICAgICAgICAgICBpZiAoIGZvcm1hdC5TdWdnZXN0ZWRDYXNlKCkgPT0gVElucHV0Rm9ybWF0Q2hh
cjo6RUlucHV0TG93ZXJDYXNlICkNCiAgICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAg
ICBmZXBDYXNlID0gcGVybWl0dGVkQ2FzZSA9IEVBa25FZGl0b3JMb3dlckNhc2U7DQorICAgICAg
ICAgICAgICAgIGZlcENhc2UgPSBjdXJyZW50Q2FzZSA9IHBlcm1pdHRlZENhc2UgPSBFQWtuRWRp
dG9yTG93ZXJDYXNlOw0KICAgICAgICAgICAgICAgICB9DQogDQogICAgICAgICAgICAgaWYgKGZv
cm1hdC5TcGVjaWFsQWxsb3dlZCgpKQ0K
</data>
<flag name="review"
          id="4637"
          type_id="1"
          status="-"
          setter="Sachin.Padma"
    />
          </attachment>
      

    </bug>

</bugzilla>