<?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>12230</bug_id>
          
          <creation_ts>2007-01-12 12:52:41 -0800</creation_ts>
          <short_desc>[S60] Invalid WAP CSS formats not being ignored</short_desc>
          <delta_ts>2007-02-09 13:23:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>S60 Emulator</rep_platform>
          <op_sys>S60 3rd edition</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</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="Nobody">webkit-unassigned</assigned_to>
          <cc>bradley.morrison</cc>
    
    <cc>Sachin.Padma</cc>
    
    <cc>shyam.sareen</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>35377</commentid>
    <comment_count>0</comment_count>
    <who name="Shyam Sareen">shyam.sareen</who>
    <bug_when>2007-01-12 12:52:41 -0800</bug_when>
    <thetext>TSW ID: TMCN-6S5K87</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35394</commentid>
    <comment_count>1</comment_count>
      <attachid>12401</attachid>
    <who name="Shyam Sareen">shyam.sareen</who>
    <bug_when>2007-01-12 13:24:34 -0800</bug_when>
    <thetext>Created attachment 12401
Patch-1 for the problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33017</commentid>
    <comment_count>2</comment_count>
      <attachid>12401</attachid>
    <who name="Sachin Padma">Sachin.Padma</who>
    <bug_when>2007-01-23 12:49:25 -0800</bug_when>
    <thetext>Comment on attachment 12401
Patch-1 for the problem

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32982</commentid>
    <comment_count>3</comment_count>
    <who name="Bradley Morrison">bradley.morrison</who>
    <bug_when>2007-01-23 13:22:57 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 12401 [edit])
&gt; r=me
&gt; 

This patch won&apos;t apply - likely due to the patch landed in bug 12232. Given that patch is in, please confirm this still needs to be committed.

Thanks!
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32985</commentid>
    <comment_count>4</comment_count>
      <attachid>12637</attachid>
    <who name="Shyam Sareen">shyam.sareen</who>
    <bug_when>2007-01-23 13:59:15 -0800</bug_when>
    <thetext>Created attachment 12637
New patch

New patch as last patch couldn&apos;t applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32987</commentid>
    <comment_count>5</comment_count>
    <who name="Bradley Morrison">bradley.morrison</who>
    <bug_when>2007-01-23 14:11:26 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=12637) [edit]
&gt; New patch
&gt; 
&gt; New patch as last patch couldn&apos;t applied.
&gt; 

Thanks for that. Landed r19057 - setting to fixed.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31072</commentid>
    <comment_count>6</comment_count>
      <attachid>12738</attachid>
    <who name="Shyam Sareen">shyam.sareen</who>
    <bug_when>2007-01-29 06:59:48 -0800</bug_when>
    <thetext>Created attachment 12738
Patch for 3.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31073</commentid>
    <comment_count>7</comment_count>
    <who name="Bradley Morrison">bradley.morrison</who>
    <bug_when>2007-01-29 07:06:34 -0800</bug_when>
    <thetext>

(In reply to comment #6)
&gt; Created an attachment (id=12738) [edit]
&gt; Patch for 3.1
&gt; 

Re-opening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30212</commentid>
    <comment_count>8</comment_count>
      <attachid>12738</attachid>
    <who name="Yongjun Zhang">yongjun.zhang</who>
    <bug_when>2007-01-30 07:51:44 -0800</bug_when>
    <thetext>Comment on attachment 12738
Patch for 3.1

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30180</commentid>
    <comment_count>9</comment_count>
    <who name="Bradley Morrison">bradley.morrison</who>
    <bug_when>2007-01-30 07:55:24 -0800</bug_when>
    <thetext>Landed -r19260, resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24680</commentid>
    <comment_count>10</comment_count>
    <who name="Krishna">krishnamurty.podipireddy</who>
    <bug_when>2007-02-09 13:23:44 -0800</bug_when>
    <thetext>
Verified and Closed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12401</attachid>
            <date>2007-01-12 13:24:34 -0800</date>
            <delta_ts>2007-01-23 12:49:25 -0800</delta_ts>
            <desc>Patch-1 for the problem</desc>
            <filename>nowccs.patch</filename>
            <type>text/plain</type>
            <size>36884</size>
            <attacher name="Shyam Sareen">shyam.sareen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODgwOSkNCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpA
QCAtMSwzICsxLDQ3IEBADQorMjAwNy0wMS0xMiAgc2FyZWVuICA8c2h5YW0uc2FyZWVuQG5va2lh
LmNvbT4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IFNhY2hpbiBQYWRtYS4NCisgICAgICAgIERF
U0M6IEludmFsaWQgV0FQIENTUyBmb3JtYXRzIG5vdCBiZWluZyBpZ25vcmVkICggVFNXIElEOiBU
TUNOLTZTNUs4NykNCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMjMwDQorDQorICAgICAgICAqIEJyb3dzZXJDb3JlL0Zvcm1jb250cm9scy9zcmMvRkNv
bnRyb2xmb3JtYXRoYW5kbGVyLmNwcDoNCisgICAgICAgIChUSW5wdXRGb3JtYXRDaGFyOjpUSW5w
dXRGb3JtYXRDaGFyKToNCisgICAgICAgIChUSW5wdXRGb3JtYXRDaGFyOjpGb3JjZWRDYXNlKToN
CisgICAgICAgIChUSW5wdXRGb3JtYXRDaGFyOjpTdWdnZXN0ZWRDYXNlKToNCisgICAgICAgIChU
SW5wdXRGb3JtYXRDaGFyOjpBbHBoYUFsbG93ZWQpOg0KKyAgICAgICAgKFRJbnB1dEZvcm1hdENo
YXI6Ok51bWVyaWNBbGxvd2VkKToNCisgICAgICAgIChUSW5wdXRGb3JtYXRDaGFyOjpTcGVjaWFs
QWxsb3dlZCk6DQorICAgICAgICAoVElucHV0Rm9ybWF0Q2hhcjo6Q2hhcik6DQorICAgICAgICAo
VElucHV0Rm9ybWF0Q2hhcjo6U3RhdGljKToNCisgICAgICAgIChUU3RhdGljQ2hhcjo6VFN0YXRp
Y0NoYXIpOg0KKyAgICAgICAgKFRTdGF0aWNDaGFyOjpDaGFyKToNCisgICAgICAgIChUU3RhdGlj
Q2hhcjo6UG9zKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpDSW5wdXRGb3JtYXRI
YW5kbGVyKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpDb25zdHJ1Y3RMKToNCisg
ICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpOZXdMQyk6DQorICAgICAgICAoQ0lucHV0Rm9y
bWF0SGFuZGxlcjo6TmV3TCk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6fkNJbnB1
dEZvcm1hdEhhbmRsZXIpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OlNldFRleHRM
KToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpUZXh0TEMpOg0KKyAgICAgICAgKENJ
bnB1dEZvcm1hdEhhbmRsZXI6Okluc2VydEwpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRs
ZXI6OkRlbGV0ZSk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6U3RhdGljVGV4dExD
KToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpOdW1iZXJPZlN0YXRpYyk6DQorICAg
ICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6R2V0Rm9ybWF0KToNCisgICAgICAgIChDSW5wdXRG
b3JtYXRIYW5kbGVyOjpQb3N0Rml4KToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpN
aW5MZW5ndGgpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6Ok1heExlbmd0aCk6DQor
ICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVDaGFyKToNCisgICAgICAgIChD
SW5wdXRGb3JtYXRIYW5kbGVyOjpWYWxpZGF0ZVRleHRMQyk6DQorICAgICAgICAoQ0lucHV0Rm9y
bWF0SGFuZGxlcjo6VmFsaWRhdGVUZXh0TCk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxl
cjo6UG9zSW5jbHVkaW5nU3RhdGljKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpQ
b3NFeGx1ZGluZ1N0YXRpYyk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6UHJldmlv
dXNOb25TdGF0aWMpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6Ok5leHROb25TdGF0
aWMpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OkZpcnN0RW1wdHkpOg0KKyAgICAg
ICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OlByZXZpb3VzU3RhdGljKToNCisgICAgICAgIChDSW5w
dXRGb3JtYXRIYW5kbGVyOjpJc1Bvc1N0YXRpYyk6DQorDQogMjAwNy0wMS0xMSAgc2FyZWVuICBz
YXJlZW4gIDxzaHlhbS5zYXJlZW5Abm9raWEuY29tPg0KIA0KICAgICAgICAgUmV2aWV3ZWQgYnkg
U2FjaGluIFBhZG1hLg0KSW5kZXg6IFdlYktpdC9Ccm93c2VyQ29yZS9Gb3JtY29udHJvbHMvc3Jj
L0ZDb250cm9sZm9ybWF0aGFuZGxlci5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3Nl
ckNvcmUvRm9ybWNvbnRyb2xzL3NyYy9GQ29udHJvbGZvcm1hdGhhbmRsZXIuY3BwCShyZXZpc2lv
biAxODc4NCkNCisrKyBXZWJLaXQvQnJvd3NlckNvcmUvRm9ybWNvbnRyb2xzL3NyYy9GQ29udHJv
bGZvcm1hdGhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtOSw5ICs5LDkgQEANCiAqICAg
IENvcHlyaWdodCAoYykgMjAwNiwgTm9raWEgQ29ycG9yYXRpb24NCiAqICAgIEFsbCByaWdodHMg
cmVzZXJ2ZWQuDQogKiAgDQotKiAgCVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KLSogIAltb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCi0qICAJYXJl
IG1ldDoNCisqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQNCisqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisqICBhcmUgbWV0Og0KICogIA0K
ICogICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0DQogKiAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KQEAgLTIzLDIwICsyMywyMCBAQA0KICog
ICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZA0KICogICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCiAqICANCi0qICAJVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KLSog
IAkiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVA0KLSogIAlMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1INCi0qICAJQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCi0qICAJT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsDQotKiAgCVNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCi0qICAJTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQotKiAgCURBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQ0KLSogIAlUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUDQotKiAgCShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFDQotKiAgCVVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCi0qICAJ
REFNQUdFLg0KKyogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMNCisqICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KKyogIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0K
KyogIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUDQorKiAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQorKiAgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVA0KKyogIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLA0KKyogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KKyogIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCisqICAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQ0K
KyogIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0gNCisqICBEQU1BR0UuDQogKiAgDQotKiAgICBQbGVhc2Ugc2VlIGZpbGUgcGF0
ZW50bGljZW5zZS50eHQgZm9yIGZ1cnRoZXIgZ3JhbnRzLg0KKyogIFBsZWFzZSBzZWUgZmlsZSBw
YXRlbnRsaWNlbnNlLnR4dCBmb3IgZnVydGhlciBncmFudHMuDQogKiA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCiAqLw0KIC8vIElOQ0xVREUgRklMRVMNCkBAIC02NCwxNzEgKzY0LDE3MSBAQCBzdGF0
aWMgY29uc3QgVFVpbnQgS0lucHV0Rm9ybWF0TXVsdGlwbGllDQogLy8gbWlnaHQgbGVhdmUuDQog
Ly8NCiBUSW5wdXRGb3JtYXRDaGFyOjpUSW5wdXRGb3JtYXRDaGFyKCBUVWludCBhQ2hhciwgVFVp
bnQgYVN0YXRpYyApDQotCTogaUNoYXIoIGFDaGFyICkNCi0Jew0KLQlpU3RhdGljID0gKCBhQ2hh
ciA9PSBLSW5wdXRGb3JtYXRTdGF0aWMgKSA/IGFTdGF0aWMgOiAwOw0KLQl9DQorICA6IGlDaGFy
KCBhQ2hhciApDQorICB7DQorICBpU3RhdGljID0gKCBhQ2hhciA9PSBLSW5wdXRGb3JtYXRTdGF0
aWMgKSA/IGFTdGF0aWMgOiAwOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIFRJbnB1dEZvcm1hdENoYXI6
OkZvcmNlZENhc2UNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRJbnB1dEZvcm1hdENoYXI6OlRJbnB1dENhc2UgVElu
cHV0Rm9ybWF0Q2hhcjo6Rm9yY2VkQ2FzZSgpIGNvbnN0DQotCXsNCi0JVElucHV0Q2FzZSByZXN1
bHQ7DQotCXN3aXRjaCggaUNoYXIgKQ0KLQkJew0KLQkJY2FzZSBLSW5wdXRGb3JtYXRBIDoNCi0J
CWNhc2UgS0lucHV0Rm9ybWF0WCA6DQotCQkJcmVzdWx0ID0gRUlucHV0VXBwZXJDYXNlOw0KLQkJ
CWJyZWFrOw0KLQ0KLQkJY2FzZSBLSW5wdXRGb3JtYXRhIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0
eCA6DQotCQkJcmVzdWx0ID0gRUlucHV0TG93ZXJDYXNlOw0KLQkJCWJyZWFrOw0KLQ0KLQkJY2Fz
ZSBLSW5wdXRGb3JtYXRuIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0TiA6DQotCQkJcmVzdWx0ID0g
RUlucHV0TnVtZXJpY0Nhc2U7DQotCQkJYnJlYWs7DQotDQotCQlkZWZhdWx0Og0KLQkJCXJlc3Vs
dCA9IEVJbnB1dE5vbmU7DQotCQkJYnJlYWs7DQotCQl9DQotCXJldHVybiByZXN1bHQ7DQotCX0N
CisgIHsNCisgIFRJbnB1dENhc2UgcmVzdWx0Ow0KKyAgc3dpdGNoKCBpQ2hhciApDQorICAgIHsN
CisgICAgY2FzZSBLSW5wdXRGb3JtYXRBIDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRYIDoNCisg
ICAgICByZXN1bHQgPSBFSW5wdXRVcHBlckNhc2U7DQorICAgICAgYnJlYWs7DQorDQorICAgIGNh
c2UgS0lucHV0Rm9ybWF0YSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0eCA6DQorICAgICAgcmVz
dWx0ID0gRUlucHV0TG93ZXJDYXNlOw0KKyAgICAgIGJyZWFrOw0KKw0KKyAgICBjYXNlIEtJbnB1
dEZvcm1hdG4gOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdE4gOg0KKyAgICAgIHJlc3VsdCA9IEVJ
bnB1dE51bWVyaWNDYXNlOw0KKyAgICAgIGJyZWFrOw0KKw0KKyAgICBkZWZhdWx0Og0KKyAgICAg
IHJlc3VsdCA9IEVJbnB1dE5vbmU7DQorICAgICAgYnJlYWs7DQorICAgIH0NCisgIHJldHVybiBy
ZXN1bHQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gVElucHV0Rm9ybWF0Q2hhcjo6U3VnZ2VzdGVkQ2Fz
ZQ0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KIC8vDQogVElucHV0Rm9ybWF0Q2hhcjo6VElucHV0Q2FzZSBUSW5wdXRGb3JtYXRD
aGFyOjpTdWdnZXN0ZWRDYXNlKCkgY29uc3QNCi0Jew0KLQlUSW5wdXRDYXNlIHJlc3VsdDsNCi0J
c3dpdGNoKCBpQ2hhciApDQotCQl7DQotCQljYXNlIEtJbnB1dEZvcm1hdEEgOg0KLQkJY2FzZSBL
SW5wdXRGb3JtYXRYIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0TSA6DQotCQkJcmVzdWx0ID0gRUlu
cHV0VXBwZXJDYXNlOw0KLQkJCWJyZWFrOw0KLQ0KLQkJY2FzZSBLSW5wdXRGb3JtYXRhIDoNCi0J
CWNhc2UgS0lucHV0Rm9ybWF0eCA6DQotCQljYXNlIEtJbnB1dEZvcm1hdG0gOg0KLQkJCXJlc3Vs
dCA9IEVJbnB1dExvd2VyQ2FzZTsNCi0JCQlicmVhazsNCi0NCi0JCWNhc2UgS0lucHV0Rm9ybWF0
biA6DQotCQljYXNlIEtJbnB1dEZvcm1hdE4gOg0KLQkJCXJlc3VsdCA9IEVJbnB1dE51bWVyaWND
YXNlOw0KLQkJCWJyZWFrOw0KLQ0KLQkJZGVmYXVsdDoNCi0JCQlyZXN1bHQgPSBFSW5wdXROb25l
Ow0KLQkJCWJyZWFrOw0KLQkJfQ0KLQlyZXR1cm4gcmVzdWx0Ow0KLQl9DQorICB7DQorICBUSW5w
dXRDYXNlIHJlc3VsdDsNCisgIHN3aXRjaCggaUNoYXIgKQ0KKyAgICB7DQorICAgIGNhc2UgS0lu
cHV0Rm9ybWF0QSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0WCA6DQorICAgIGNhc2UgS0lucHV0
Rm9ybWF0TSA6DQorICAgICAgcmVzdWx0ID0gRUlucHV0VXBwZXJDYXNlOw0KKyAgICAgIGJyZWFr
Ow0KKw0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdGEgOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdHgg
Og0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdG0gOg0KKyAgICAgIHJlc3VsdCA9IEVJbnB1dExvd2Vy
Q2FzZTsNCisgICAgICBicmVhazsNCisNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRuIDoNCisgICAg
Y2FzZSBLSW5wdXRGb3JtYXROIDoNCisgICAgICByZXN1bHQgPSBFSW5wdXROdW1lcmljQ2FzZTsN
CisgICAgICBicmVhazsNCisNCisgICAgZGVmYXVsdDoNCisgICAgICByZXN1bHQgPSBFSW5wdXRO
b25lOw0KKyAgICAgIGJyZWFrOw0KKyAgICB9DQorICByZXR1cm4gcmVzdWx0Ow0KKyAgfQ0KIA0K
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KIC8vIFRJbnB1dEZvcm1hdENoYXI6OkFscGhhQWxsb3dlZA0KIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVEJv
b2wgVElucHV0Rm9ybWF0Q2hhcjo6QWxwaGFBbGxvd2VkKCkgY29uc3QNCi0Jew0KLQlUQm9vbCBy
ZXN1bHQ7DQotCXN3aXRjaCggaUNoYXIgKQ0KLQkJew0KLQkJY2FzZSBLSW5wdXRGb3JtYXRBIDoN
Ci0JCWNhc2UgS0lucHV0Rm9ybWF0YSA6DQotCQljYXNlIEtJbnB1dEZvcm1hdFggOg0KLQkJY2Fz
ZSBLSW5wdXRGb3JtYXR4IDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0TSA6DQotCQljYXNlIEtJbnB1
dEZvcm1hdG0gOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRTdGF0aWMgOg0KLQkJCXJlc3VsdCA9IEVU
cnVlOw0KLQkJCWJyZWFrOw0KLQ0KLQkJZGVmYXVsdDoNCi0JCQlyZXN1bHQgPSBFRmFsc2U7DQot
CQkJYnJlYWs7DQotCQl9DQotCXJldHVybiByZXN1bHQ7DQotCX0NCisgIHsNCisgIFRCb29sIHJl
c3VsdDsNCisgIHN3aXRjaCggaUNoYXIgKQ0KKyAgICB7DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0
QSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0YSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0WCA6
DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0eCA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0TSA6DQor
ICAgIGNhc2UgS0lucHV0Rm9ybWF0bSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0U3RhdGljIDoN
CisgICAgICByZXN1bHQgPSBFVHJ1ZTsNCisgICAgICBicmVhazsNCisNCisgICAgZGVmYXVsdDoN
CisgICAgICByZXN1bHQgPSBFRmFsc2U7DQorICAgICAgYnJlYWs7DQorICAgIH0NCisgIHJldHVy
biByZXN1bHQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gVElucHV0Rm9ybWF0Q2hhcjo6TnVtZXJpY0Fs
bG93ZWQNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIFRJbnB1dEZvcm1hdENoYXI6Ok51bWVyaWNBbGxvd2Vk
KCkgY29uc3QNCi0Jew0KLQlUQm9vbCByZXN1bHQ7DQotCXN3aXRjaCggaUNoYXIgKQ0KLQkJew0K
LQkJY2FzZSBLSW5wdXRGb3JtYXRYIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0eCA6DQotCQljYXNl
IEtJbnB1dEZvcm1hdE0gOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRtIDoNCi0JCWNhc2UgS0lucHV0
Rm9ybWF0biA6DQotCQljYXNlIEtJbnB1dEZvcm1hdE4gOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRT
dGF0aWMgOg0KLQkJCXJlc3VsdCA9IEVUcnVlOw0KLQkJCWJyZWFrOw0KLQ0KLQkJZGVmYXVsdDoN
Ci0JCQlyZXN1bHQgPSBFRmFsc2U7DQotCQkJYnJlYWs7DQotCQl9DQotCXJldHVybiByZXN1bHQ7
DQotCX0NCisgIHsNCisgIFRCb29sIHJlc3VsdDsNCisgIHN3aXRjaCggaUNoYXIgKQ0KKyAgICB7
DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0WCA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0eCA6DQor
ICAgIGNhc2UgS0lucHV0Rm9ybWF0TSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0bSA6DQorICAg
IGNhc2UgS0lucHV0Rm9ybWF0biA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0TiA6DQorICAgIGNh
c2UgS0lucHV0Rm9ybWF0U3RhdGljIDoNCisgICAgICByZXN1bHQgPSBFVHJ1ZTsNCisgICAgICBi
cmVhazsNCisNCisgICAgZGVmYXVsdDoNCisgICAgICByZXN1bHQgPSBFRmFsc2U7DQorICAgICAg
YnJlYWs7DQorICAgIH0NCisgIHJldHVybiByZXN1bHQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gVElu
cHV0Rm9ybWF0Q2hhcjo6U3BlY2lhbEFsbG93ZWQNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIFRJbnB1dEZv
cm1hdENoYXI6OlNwZWNpYWxBbGxvd2VkKCkgY29uc3QNCi0Jew0KLQlUQm9vbCByZXN1bHQ7DQot
CXN3aXRjaCggaUNoYXIgKQ0KLQkJew0KLQkJY2FzZSBLSW5wdXRGb3JtYXRBIDoNCi0JCWNhc2Ug
S0lucHV0Rm9ybWF0YSA6DQotCQljYXNlIEtJbnB1dEZvcm1hdFggOg0KLQkJY2FzZSBLSW5wdXRG
b3JtYXR4IDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0TSA6DQotCQljYXNlIEtJbnB1dEZvcm1hdG0g
Og0KLQkJY2FzZSBLSW5wdXRGb3JtYXRuIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0U3RhdGljIDoN
Ci0JCQlyZXN1bHQgPSBFVHJ1ZTsNCi0JCQlicmVhazsNCi0NCi0JCWRlZmF1bHQ6DQotCQkJcmVz
dWx0ID0gRUZhbHNlOw0KLQkJCWJyZWFrOw0KLQkJfQ0KLQlyZXR1cm4gcmVzdWx0Ow0KLQl9DQor
ICB7DQorICBUQm9vbCByZXN1bHQ7DQorICBzd2l0Y2goIGlDaGFyICkNCisgICAgew0KKyAgICBj
YXNlIEtJbnB1dEZvcm1hdEEgOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdGEgOg0KKyAgICBjYXNl
IEtJbnB1dEZvcm1hdFggOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdHggOg0KKyAgICBjYXNlIEtJ
bnB1dEZvcm1hdE0gOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdG0gOg0KKyAgICBjYXNlIEtJbnB1
dEZvcm1hdG4gOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdFN0YXRpYyA6DQorICAgICAgcmVzdWx0
ID0gRVRydWU7DQorICAgICAgYnJlYWs7DQorDQorICAgIGRlZmF1bHQ6DQorICAgICAgcmVzdWx0
ID0gRUZhbHNlOw0KKyAgICAgIGJyZWFrOw0KKyAgICB9DQorICByZXR1cm4gcmVzdWx0Ow0KKyAg
fQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KIC8vIFRJbnB1dEZvcm1hdENoYXI6OkNoYXINCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRVaW50
IFRJbnB1dEZvcm1hdENoYXI6OkNoYXIoKSBjb25zdA0KLQl7DQotCXJldHVybiBpQ2hhcjsNCi0J
fQ0KKyAgew0KKyAgcmV0dXJuIGlDaGFyOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIFRJbnB1dEZvcm1h
dENoYXI6OlN0YXRpYygpDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUVWludCBUSW5wdXRGb3JtYXRDaGFyOjpTdGF0
aWMoKSBjb25zdA0KLQl7DQotCXJldHVybiBpU3RhdGljOw0KLQl9DQorICB7DQorICByZXR1cm4g
aVN0YXRpYzsNCisgIH0NCiANCiAvLyA9PT09PT09PT09PT09PT09PSBNRU1CRVIgRlVOQ1RJT05T
ID09PT09PT09PT09PT09PT09PT09PT09DQogDQpAQCAtMjM2LDI4ICsyMzYsMjggQEAgVFVpbnQg
VElucHV0Rm9ybWF0Q2hhcjo6U3RhdGljKCkgY29uc3QNCiAvLyBtaWdodCBsZWF2ZS4NCiAvLw0K
IFRTdGF0aWNDaGFyOjpUU3RhdGljQ2hhciggVFVpbnQgYUNoYXIsIFRJbnQgYVBvcyApDQotCTog
aUNoYXIoIGFDaGFyICkNCi0JLCBpUG9zKCBhUG9zICkNCi0Jew0KLQl9DQorICA6IGlDaGFyKCBh
Q2hhciApDQorICAsIGlQb3MoIGFQb3MgKQ0KKyAgew0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIFRTdGF0
aWNDaGFyOjpDaGFyDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUVWludCBUU3RhdGljQ2hhcjo6Q2hhcigpIGNvbnN0
DQotCXsNCi0JcmV0dXJuIGlDaGFyOwkNCi0JfQ0KKyAgew0KKyAgcmV0dXJuIGlDaGFyOyANCisg
IH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCiAvLyBUU3RhdGljQ2hhcjo6UG9zDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUSW50IFRTdGF0
aWNDaGFyOjpQb3MoKSBjb25zdA0KLQl7DQotCXJldHVybiBpUG9zOwkNCi0JfQ0KKyAgew0KKyAg
cmV0dXJuIGlQb3M7ICANCisgIH0NCiANCiAvLyA9PT09PT09PT09PT09PT09PSBNRU1CRVIgRlVO
Q1RJT05TID09PT09PT09PT09PT09PT09PT09PT09DQogDQpAQCAtMjY1LDk5ICsyNjUsMTEyIEBA
IFRJbnQgVFN0YXRpY0NoYXI6OlBvcygpIGNvbnN0DQogLy8gbWlnaHQgbGVhdmUuDQogLy8NCiBD
SW5wdXRGb3JtYXRIYW5kbGVyOjpDSW5wdXRGb3JtYXRIYW5kbGVyKCkNCi0JOiBpUG9zdEZpeCgg
S0lucHV0Rm9ybWF0Tm9uZSApDQotICAgIHsNCi0JfQ0KKyAgOiBpUG9zdEZpeCggS0lucHV0Rm9y
bWF0Tm9uZSApDQorICB7DQorICB9DQogDQogLy8gRVBPQyBkZWZhdWx0IGNvbnN0cnVjdG9yIGNh
biBsZWF2ZS4NCiB2b2lkIENJbnB1dEZvcm1hdEhhbmRsZXI6OkNvbnN0cnVjdEwNCi0JKCBjb25z
dCBURGVzQyYgYUZvcm1hdFN0cmluZykNCisgICggY29uc3QgVERlc0MmIGFGb3JtYXRTdHJpbmcp
DQorICB7DQorDQorICBDQXJyYXlGaXhGbGF0PFRJbnQ+KiBzdGF0aWNzID0gbmV3KCBFTGVhdmUg
KUNBcnJheUZpeEZsYXQ8VEludD4oIDMgKTsNCisgIENsZWFudXBTdGFjazo6UHVzaEwoIHN0YXRp
Y3MgKTsNCisgIA0KKyAgLy8gY29sbGVjdCB0aGUgaW5kZXhlcyBvZiBzdGF0aWMgY2hhcmFjdGVy
cw0KKyAgVEJvb2wgbWFyayA9IEVGYWxzZTsNCisgIFRJbnQgbGVuZ3RoID0gYUZvcm1hdFN0cmlu
Zy5MZW5ndGgoKTsNCisgIGZvciAoIFRJbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKyApDQogICAg
IHsNCisgICAgaWYgKCBtYXJrICkgLy8gd2FzIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIgcHJlZml4
Pw0KKyAgICAgIHsNCisgICAgICBtYXJrID0gRUZhbHNlOw0KKyAgICAgIHN0YXRpY3MtPkFwcGVu
ZEwoIGkgKTsNCisgICAgICB9DQorICAgIGVsc2UNCisgICAgICB7ICAgLy8gaXMgaXQgcHJlZml4
Pw0KKyAgICAgIG1hcmsgPSAoIGFGb3JtYXRTdHJpbmdbIGkgXSA9PSBLSW5wdXRGb3JtYXRTdGF0
aWMgKTsNCisgICAgICB9DQorICAgIH0NCiANCi0JQ0FycmF5Rml4RmxhdDxUSW50Piogc3RhdGlj
cyA9IG5ldyggRUxlYXZlIClDQXJyYXlGaXhGbGF0PFRJbnQ+KCAzICk7DQotCUNsZWFudXBTdGFj
azo6UHVzaEwoIHN0YXRpY3MgKTsNCi0JDQotCS8vIGNvbGxlY3QgdGhlIGluZGV4ZXMgb2Ygc3Rh
dGljIGNoYXJhY3RlcnMNCi0JVEJvb2wgbWFyayA9IEVGYWxzZTsNCi0JVEludCBsZW5ndGggPSBh
Rm9ybWF0U3RyaW5nLkxlbmd0aCgpOw0KLQlmb3IgKCBUSW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KysgKQ0KLQkJew0KLQkJaWYgKCBtYXJrICkJLy8gd2FzIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIg
cHJlZml4Pw0KLQkJCXsNCi0JCQltYXJrID0gRUZhbHNlOw0KLQkJCXN0YXRpY3MtPkFwcGVuZEwo
IGkgKTsNCi0JCQl9DQotCQllbHNlDQotCQkJewkJLy8gaXMgaXQgcHJlZml4Pw0KLQkJCW1hcmsg
PSAoIGFGb3JtYXRTdHJpbmdbIGkgXSA9PSBLSW5wdXRGb3JtYXRTdGF0aWMgKTsNCi0JCQl9DQot
CQl9DQotDQotCVRJbnQgbnVtYmVyT2ZTdGF0aWNzID0gc3RhdGljcy0+Q291bnQoKTsNCi0JaU1p
bkxlbmd0aCA9IGxlbmd0aCAtIG51bWJlck9mU3RhdGljczsNCi0JaU1heExlbmd0aCA9IGlNaW5M
ZW5ndGg7DQotDQotCS8vICpmIGFuZCBuZiBoYW5kbGluZwkNCi0JaWYgKCBsZW5ndGggPiAxICYm
CQkJCS8vIGxvbmdlciB0aGFuIG9uZSBjaGFyYWN0ZXINCi0JCSAoICFudW1iZXJPZlN0YXRpY3Mg
fHwJCS8vIHRoZXJlIGFyZSBubyBzdGF0aWNzLCBvciBpdCBpc24ndCBzdGF0aWMNCi0JCSAgIHN0
YXRpY3MtPkF0KCBudW1iZXJPZlN0YXRpY3MgLSAxICkgIT0gbGVuZ3RoIC0gMiApICkNCi0JCXsN
Ci0JCWlmICggYUZvcm1hdFN0cmluZ1sgbGVuZ3RoIC0gMiBdID09IEtJbnB1dEZvcm1hdE11bHRp
cGxpZXIgKQkvLyAqZj8NCi0JCQl7DQotCQkJaVBvc3RGaXggPSBhRm9ybWF0U3RyaW5nWyAoIC0t
bGVuZ3RoICktLSBdOw0KLQkJCWlNaW5MZW5ndGggPSBsZW5ndGggLSBudW1iZXJPZlN0YXRpY3M7
DQotCQkJaU1heExlbmd0aCA9IEtJbmZpbml0ZUxlbmd0aDsNCi0JCQl9DQotCQllbHNlDQotCQkJ
ew0KLQkJCVRDaGFyIG4oIGFGb3JtYXRTdHJpbmdbIGxlbmd0aCAtIDIgXSApOw0KLQkJCWlmICgg
bi5Jc0RpZ2l0KCkgJiYgbiAhPSAnMCcgKQkvLyBuZj8NCi0JCQkJew0KLQkJCQlpUG9zdEZpeCA9
IGFGb3JtYXRTdHJpbmdbICggLS1sZW5ndGggKS0tIF07DQotCQkJCWlNYXhMZW5ndGggPSBsZW5n
dGggLSBudW1iZXJPZlN0YXRpY3MgKyBuLkdldE51bWVyaWNWYWx1ZSgpOw0KLQkJCQl9DQotCQkJ
fQ0KLQkJfQ0KLQ0KLQkvLyBhbGxvY2F0ZSBtZW1vcnkgZm9yIG1lbWJlcnMNCi0JaU1hc2sgPSBI
QnVmQzo6TmV3TCggbGVuZ3RoIC0gbnVtYmVyT2ZTdGF0aWNzICk7CS8vIGV4Y2VwdCBzdGF0aWMg
dGV4dA0KLQlpU3RhdGljID0gbmV3KCBFTGVhdmUgKUNBcnJheUZpeEZsYXQ8VFN0YXRpY0NoYXI+
KCAzICk7DQotDQotCS8vIGNvcHkgYUZvcm1hdFN0cmluZyB0byBpTWFzayBleGNlcHQgc3RhdGlj
IHRleHQNCi0JVEludCBuZXh0U3RhdGljID0gMDsNCi0JZm9yICggVEludCBqID0gMDsgaiA8IGxl
bmd0aDsgaisrICkNCi0JCXsNCi0JCWlmICggbmV4dFN0YXRpYyA8IG51bWJlck9mU3RhdGljcyAm
Jg0KLQkJCSBqID09IHN0YXRpY3MtPkF0KCBuZXh0U3RhdGljICkgKQkvLyBpcyBpdCBzdGF0aWM/
DQotCQkJew0KLQkJCQluZXh0U3RhdGljKys7DQotCQkJCWlTdGF0aWMtPkFwcGVuZEwNCi0JCQkJ
CSggVFN0YXRpY0NoYXIoIGFGb3JtYXRTdHJpbmdbIGogXSwgaiAtIG5leHRTdGF0aWMgKSApOw0K
LQkJCX0NCi0JCWVsc2UNCi0JCQl7DQotCQkJaU1hc2stPkRlcygpLkFwcGVuZCggYUZvcm1hdFN0
cmluZ1sgaiBdICk7DQotCQkJfQ0KLQkJfQ0KKyAgVEludCBudW1iZXJPZlN0YXRpY3MgPSBzdGF0
aWNzLT5Db3VudCgpOw0KKyAgaU1pbkxlbmd0aCA9IGxlbmd0aCAtIG51bWJlck9mU3RhdGljczsN
CisgIGlNYXhMZW5ndGggPSBpTWluTGVuZ3RoOw0KKw0KKyAgLy8gKmYgYW5kIG5mIGhhbmRsaW5n
IA0KKyAgaWYgKCBsZW5ndGggPiAxICYmICAgICAgICAvLyBsb25nZXIgdGhhbiBvbmUgY2hhcmFj
dGVyDQorICAgICAoICFudW1iZXJPZlN0YXRpY3MgfHwgICAgLy8gdGhlcmUgYXJlIG5vIHN0YXRp
Y3MsIG9yIGl0IGlzbid0IHN0YXRpYw0KKyAgICAgICBzdGF0aWNzLT5BdCggbnVtYmVyT2ZTdGF0
aWNzIC0gMSApICE9IGxlbmd0aCAtIDIgKSApDQorICAgIHsNCisgICAgaWYgKCBhRm9ybWF0U3Ry
aW5nWyBsZW5ndGggLSAyIF0gPT0gS0lucHV0Rm9ybWF0TXVsdGlwbGllciApICAvLyAqZj8NCisg
ICAgICB7DQorICAgICAgaVBvc3RGaXggPSBhRm9ybWF0U3RyaW5nWyAoIC0tbGVuZ3RoICktLSBd
Ow0KKyAgICAgIGlNaW5MZW5ndGggPSBsZW5ndGggLSBudW1iZXJPZlN0YXRpY3M7DQorICAgICAg
aU1heExlbmd0aCA9IEtJbmZpbml0ZUxlbmd0aDsNCisgICAgICB9DQorICAgIGVsc2UNCisgICAg
ICB7DQorICAgICAgVENoYXIgbiggYUZvcm1hdFN0cmluZ1sgbGVuZ3RoIC0gMiBdICk7DQorICAg
ICAgaWYgKCBuLklzRGlnaXQoKSAmJiBuICE9ICcwJyApICAvLyBuZj8NCisgICAgICAgIHsNCisg
ICAgICAgIGlQb3N0Rml4ID0gYUZvcm1hdFN0cmluZ1sgKCAtLWxlbmd0aCApLS0gXTsNCisgICAg
ICAgIGlNYXhMZW5ndGggPSBsZW5ndGggLSBudW1iZXJPZlN0YXRpY3MgKyBuLkdldE51bWVyaWNW
YWx1ZSgpOw0KKyAgICAgICAgfQ0KKyAgICAgIGVsc2UNCisgICAgICAgIHsNCisgICAgICAgIC8v
IElmIGl0IGlzIG5vdCBhICIqIiBvciBudW1lcmljIGNoYXJhY3RlciANCisgICAgICAgIC8vIFRl
c3QgZm9yIHZhbGlkIGNoYXJhY3RlciBoZXJlLg0KKyAgICAgICAgLy8gVGhlbiBhcHBseSB0aGUg
ZGVmYXVsdCB2YWx1ZSBvZiBXQVAgQ1NTICIqTSIuIA0KKyAgICAgICAgaWYoICFuLklzQWxwaGEo
KSAmJiAobGVuZ3RoID4gMCApICkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgaU1pbkxl
bmd0aCA9IDA7IC8vQWxsb3cgdXNlciB0byBnZXQgb3V0IG9mIGlucHV0IGJveA0KKyAgICAgICAg
ICAgIGlNYXhMZW5ndGggPSBLSW5maW5pdGVMZW5ndGg7IC8vIEFzIHBlciAiKk0iIHN5bnRheA0K
KyAgICAgICAgICAgIGlQb3N0Rml4ID0gJ00nIDsNCisgICAgICAgICAgICBsZW5ndGggID0gMDsg
Ly9Bdm9pZCBpbml0aWFsaXppbmcgdGhlIGlNYXNrIGxhdGVyIG9uLg0KKyAgICAgICAgICAgIH0N
CisgICAgICAgIH0vL2VuZCBlbHNlDQorICAgIH0gLy8gZW5kIG91dGVyIGVsc2UNCisgIH0NCisN
CisgIC8vIGFsbG9jYXRlIG1lbW9yeSBmb3IgbWVtYmVycw0KKyAgaU1hc2sgPSBIQnVmQzo6TmV3
TCggbGVuZ3RoIC0gbnVtYmVyT2ZTdGF0aWNzICk7ICAvLyBleGNlcHQgc3RhdGljIHRleHQNCisg
IGlTdGF0aWMgPSBuZXcoIEVMZWF2ZSApQ0FycmF5Rml4RmxhdDxUU3RhdGljQ2hhcj4oIDMgKTsN
CisNCisgIC8vIGNvcHkgYUZvcm1hdFN0cmluZyB0byBpTWFzayBleGNlcHQgc3RhdGljIHRleHQN
CisgIFRJbnQgbmV4dFN0YXRpYyA9IDA7DQorICBmb3IgKCBUSW50IGogPSAwOyBqIDwgbGVuZ3Ro
OyBqKysgKQ0KKyAgICB7DQorICAgIGlmICggbmV4dFN0YXRpYyA8IG51bWJlck9mU3RhdGljcyAm
Jg0KKyAgICAgICBqID09IHN0YXRpY3MtPkF0KCBuZXh0U3RhdGljICkgKSAvLyBpcyBpdCBzdGF0
aWM/DQorICAgICAgew0KKyAgICAgICAgbmV4dFN0YXRpYysrOw0KKyAgICAgICAgaVN0YXRpYy0+
QXBwZW5kTA0KKyAgICAgICAgICAoIFRTdGF0aWNDaGFyKCBhRm9ybWF0U3RyaW5nWyBqIF0sIGog
LSBuZXh0U3RhdGljICkgKTsNCisgICAgICB9DQorICAgIGVsc2UNCisgICAgICB7DQorICAgICAg
aU1hc2stPkRlcygpLkFwcGVuZCggYUZvcm1hdFN0cmluZ1sgaiBdICk7DQorICAgICAgfQ0KKyAg
ICB9DQogDQotCWlEeW5hbWljID0gSEJ1ZkM6Ok5ld0woIGlNaW5MZW5ndGggLSBudW1iZXJPZlN0
YXRpY3MgKTsNCisgIGlEeW5hbWljID0gSEJ1ZkM6Ok5ld0woIGlNaW5MZW5ndGggLSBudW1iZXJP
ZlN0YXRpY3MgKTsNCiANCi0JQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7CS8vIHN0YXRp
Y3MNCisgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSgpOyAgLy8gc3RhdGljcw0KICAgICB9
DQogDQogLy8gVHdvLXBoYXNlZCBjb25zdHJ1Y3Rvci4NCiBDSW5wdXRGb3JtYXRIYW5kbGVyKiBD
SW5wdXRGb3JtYXRIYW5kbGVyOjpOZXdMQw0KLQkoIGNvbnN0IFREZXNDJiBhRm9ybWF0U3RyaW5n
KQ0KKyAgKCBjb25zdCBURGVzQyYgYUZvcm1hdFN0cmluZykNCiAgICAgew0KLQlDSW5wdXRGb3Jt
YXRIYW5kbGVyKiBzZWxmID0gbmV3KCBFTGVhdmUgKUNJbnB1dEZvcm1hdEhhbmRsZXI7DQotCUNs
ZWFudXBTdGFjazo6UHVzaEwoIHNlbGYgKTsNCisgIENJbnB1dEZvcm1hdEhhbmRsZXIqIHNlbGYg
PSBuZXcoIEVMZWF2ZSApQ0lucHV0Rm9ybWF0SGFuZGxlcjsNCisgIENsZWFudXBTdGFjazo6UHVz
aEwoIHNlbGYgKTsNCiAgICAgc2VsZi0+Q29uc3RydWN0TCggYUZvcm1hdFN0cmluZyk7DQotCXJl
dHVybiBzZWxmOw0KKyAgcmV0dXJuIHNlbGY7DQogICAgIH0NCiANCiAvLyBUd28tcGhhc2VkIGNv
bnN0cnVjdG9yLg0KIENJbnB1dEZvcm1hdEhhbmRsZXIqIENJbnB1dEZvcm1hdEhhbmRsZXI6Ok5l
d0wNCi0JKCBjb25zdCBURGVzQyYgYUZvcm1hdFN0cmluZykNCisgICggY29uc3QgVERlc0MmIGFG
b3JtYXRTdHJpbmcpDQogICAgIHsNCiAgICAgQ0lucHV0Rm9ybWF0SGFuZGxlciogc2VsZiA9IE5l
d0xDKCBhRm9ybWF0U3RyaW5nKTsNCiAgICAgQ2xlYW51cFN0YWNrOjpQb3AoKTsNCkBAIC0zNjcs
OSArMzgwLDkgQEAgQ0lucHV0Rm9ybWF0SGFuZGxlciogQ0lucHV0Rm9ybWF0SGFuZGxlcg0KIC8v
IERlc3RydWN0b3INCiBDSW5wdXRGb3JtYXRIYW5kbGVyOjp+Q0lucHV0Rm9ybWF0SGFuZGxlcigp
DQogICAgIHsNCi0JZGVsZXRlIGlNYXNrOw0KLQlkZWxldGUgaVN0YXRpYzsNCi0JZGVsZXRlIGlE
eW5hbWljOw0KKyAgZGVsZXRlIGlNYXNrOw0KKyAgZGVsZXRlIGlTdGF0aWM7DQorICBkZWxldGUg
aUR5bmFtaWM7DQogICAgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC0zOTAsMjY2ICs0MDMsMjY2IEBAIEhCdWZD
KiBDSW5wdXRGb3JtYXRIYW5kbGVyOjpHZXRUZXh0T25seUwNCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIENJ
bnB1dEZvcm1hdEhhbmRsZXI6OlNldFRleHRMKCBjb25zdCBURGVzQyYgYVRleHQsIFRCb29sIGFO
b1ZhbGlkYXRpb24gKQ0KLQl7DQotCWlEeW5hbWljLT5EZXMoKS5TZXRMZW5ndGgoIDAgKTsJLy8g
aWdub3JlIHByZXZpb3VzIHRleHQNCisgIHsNCisgIGlEeW5hbWljLT5EZXMoKS5TZXRMZW5ndGgo
IDAgKTsgLy8gaWdub3JlIHByZXZpb3VzIHRleHQNCiANCi0JLy8gaW5zZXJ0IGNoYXJzIHdoaWxl
IHRoZXkgYXJlIHZhbGlkDQotCVRJbnQgaiggMCApOw0KLQlUSW50IHRleHRMZW5ndGgoIGFUZXh0
Lkxlbmd0aCgpICk7DQotCWZvciAoIDsNCi0JCSAgaiA8IHRleHRMZW5ndGggJiYNCi0JCSAgKCBh
Tm9WYWxpZGF0aW9uIHx8IFZhbGlkYXRlQ2hhciggYVRleHRbIGogXSwgR2V0Rm9ybWF0KCBqICkg
KSApOw0KLQkJICBqKysgKQ0KLQkJew0KLQ0KLQkJaWYgKCAhR2V0Rm9ybWF0KCBqICkuU3RhdGlj
KCkgKQ0KLQkJCXsNCi0JCSAgICBJbnNlcnRMKCBqLCBhVGV4dFsgaiBdICk7CS8vIGluc2VydCBu
b24tc3RhdGljIGNoYXJzDQotCQkJfQ0KLQkJfQ0KKyAgLy8gaW5zZXJ0IGNoYXJzIHdoaWxlIHRo
ZXkgYXJlIHZhbGlkDQorICBUSW50IGooIDAgKTsNCisgIFRJbnQgdGV4dExlbmd0aCggYVRleHQu
TGVuZ3RoKCkgKTsNCisgIGZvciAoIDsNCisgICAgICBqIDwgdGV4dExlbmd0aCAmJg0KKyAgICAg
ICggYU5vVmFsaWRhdGlvbiB8fCBWYWxpZGF0ZUNoYXIoIGFUZXh0WyBqIF0sIEdldEZvcm1hdCgg
aiApICkgKTsNCisgICAgICBqKysgKQ0KKyAgICB7DQorDQorICAgIGlmICggIUdldEZvcm1hdCgg
aiApLlN0YXRpYygpICkNCisgICAgICB7DQorICAgICAgICBJbnNlcnRMKCBqLCBhVGV4dFsgaiBd
ICk7IC8vIGluc2VydCBub24tc3RhdGljIGNoYXJzDQorICAgICAgfQ0KKyAgICB9DQogDQotCXJl
dHVybiBqID09IHRleHRMZW5ndGg7DQotCX0NCisgIHJldHVybiBqID09IHRleHRMZW5ndGg7DQor
ICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VGV4dExDDQogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8N
CiBIQnVmQyogQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VGV4dExDKCBUQm9vbCBhUmVhZGFibGUgKSBj
b25zdA0KLQl7DQotCUhCdWZDKiB0ZXh0ID0gU3RhdGljVGV4dExDKCk7CS8vIGdldCBzdGF0aWMg
dGV4dA0KLQlUSW50IHN0YXRpY0xlbmd0aCA9IHRleHQtPkxlbmd0aCgpOw0KLQlUSW50IGR5bmFt
aWNMZW5ndGggPSBpRHluYW1pYy0+TGVuZ3RoKCk7DQotCVRJbnQgZHluYW1pY1B0ciggMCApOw0K
LQlUSW50IHN0YXRpY1B0ciggMCApOw0KLQlUSW50IHN0YXRpY0NvdW50ZXIoIDAgKTsNCi0JVElu
dCBudW1iZXJPZlN0YXRpY3MoIGlTdGF0aWMtPkNvdW50KCkgKTsNCi0JLy8gaW5zZXJ0IGR5bmFt
aWMgdGV4dCBpbnRvIHRoZSBzdGF0aWMgdGV4dCBhcyBtYW55IGFzIHBvc3NpYmxlDQotCWZvciAo
IDsgZHluYW1pY1B0ciA8IGR5bmFtaWNMZW5ndGg7ICsrZHluYW1pY1B0ciwgKytzdGF0aWNQdHIg
KQ0KLQkJew0KLQkJLy8gZmluZCB0aGUgbmV4dCBub24tc3RhdGljIHBvc2l0aW9uDQotCQl3aGls
ZSAoIHN0YXRpY0NvdW50ZXIgPCBudW1iZXJPZlN0YXRpY3MgJiYNCi0JCQkJaVN0YXRpYy0+QXQo
IHN0YXRpY0NvdW50ZXIgKS5Qb3MoKSA9PSBzdGF0aWNQdHIgKQ0KLQkJCXsNCi0JCQkrK3N0YXRp
Y0NvdW50ZXI7DQotCQkJKytzdGF0aWNQdHI7DQotCQkJfQ0KKyAgew0KKyAgSEJ1ZkMqIHRleHQg
PSBTdGF0aWNUZXh0TEMoKTsgLy8gZ2V0IHN0YXRpYyB0ZXh0DQorICBUSW50IHN0YXRpY0xlbmd0
aCA9IHRleHQtPkxlbmd0aCgpOw0KKyAgVEludCBkeW5hbWljTGVuZ3RoID0gaUR5bmFtaWMtPkxl
bmd0aCgpOw0KKyAgVEludCBkeW5hbWljUHRyKCAwICk7DQorICBUSW50IHN0YXRpY1B0ciggMCAp
Ow0KKyAgVEludCBzdGF0aWNDb3VudGVyKCAwICk7DQorICBUSW50IG51bWJlck9mU3RhdGljcygg
aVN0YXRpYy0+Q291bnQoKSApOw0KKyAgLy8gaW5zZXJ0IGR5bmFtaWMgdGV4dCBpbnRvIHRoZSBz
dGF0aWMgdGV4dCBhcyBtYW55IGFzIHBvc3NpYmxlDQorICBmb3IgKCA7IGR5bmFtaWNQdHIgPCBk
eW5hbWljTGVuZ3RoOyArK2R5bmFtaWNQdHIsICsrc3RhdGljUHRyICkNCisgICAgew0KKyAgICAv
LyBmaW5kIHRoZSBuZXh0IG5vbi1zdGF0aWMgcG9zaXRpb24NCisgICAgd2hpbGUgKCBzdGF0aWND
b3VudGVyIDwgbnVtYmVyT2ZTdGF0aWNzICYmDQorICAgICAgICBpU3RhdGljLT5BdCggc3RhdGlj
Q291bnRlciApLlBvcygpID09IHN0YXRpY1B0ciApDQorICAgICAgew0KKyAgICAgICsrc3RhdGlj
Q291bnRlcjsNCisgICAgICArK3N0YXRpY1B0cjsNCisgICAgICB9DQogDQotCQlpZiAoIHN0YXRp
Y1B0ciA8IHN0YXRpY0xlbmd0aCApCS8vIGlzIHRoZXJlIHBsYWNlIGZvciBpdD8NCi0JCQl7DQor
ICAgIGlmICggc3RhdGljUHRyIDwgc3RhdGljTGVuZ3RoICkgLy8gaXMgdGhlcmUgcGxhY2UgZm9y
IGl0Pw0KKyAgICAgIHsNCiAgICAgICAgICAgICAvKmxpbnQgLWV7MTExfSBBc3NpZ25tZW50IHRv
IGNvbnN0IG9iamVjdCAqLw0KLQkJCXRleHQtPkRlcygpWyBzdGF0aWNQdHIgXSA9IGFSZWFkYWJs
ZSA/ICggKmlEeW5hbWljIClbIGR5bmFtaWNQdHIgXQ0KLQkJCQkJCQkJCQkJCSA6IEtPYnNjdXJp
bmdDaGFyKClbIDAgXTsNCi0JCQl9DQotCQllbHNlDQotCQkJew0KLQkJCWJyZWFrOw0KLQkJCX0N
Ci0JCX0NCi0NCi0JaWYgKCBkeW5hbWljUHRyIDwgZHluYW1pY0xlbmd0aCApCS8vIGFwcGVuZCB0
aGUgcmVtYWluaW5nIGR5bmFtaWMgdGV4dA0KLQkJew0KLQkJSEJ1ZkMqIG5ld1RleHQgPSB0ZXh0
LT5SZUFsbG9jTA0KLQkJCSggc3RhdGljTGVuZ3RoICsgZHluYW1pY0xlbmd0aCAtIGR5bmFtaWNQ
dHIgKyAxICk7DQotDQotCQlDbGVhbnVwU3RhY2s6OlBvcCgpOwkJCS8vIHRleHQNCi0JCUNsZWFu
dXBTdGFjazo6UHVzaEwoIG5ld1RleHQgKTsJLy8gbmV3VGV4dA0KLQkJdGV4dCA9IG5ld1RleHQ7
DQotDQotCQlpZiAoIGFSZWFkYWJsZSApDQotCQkJew0KLQkJCWZvciAoIDsgZHluYW1pY1B0ciA8
IGR5bmFtaWNMZW5ndGg7IGR5bmFtaWNQdHIrKyApDQotCQkJCXsNCi0JCQkJdGV4dC0+RGVzKCku
QXBwZW5kKCAoICppRHluYW1pYyApWyBkeW5hbWljUHRyIF0gKTsNCi0JCQkJfQ0KLQkJCX0NCi0J
CWVsc2UNCi0JCQl7DQotCQkJZm9yICggOyBkeW5hbWljUHRyIDwgZHluYW1pY0xlbmd0aDsgZHlu
YW1pY1B0cisrICkNCi0JCQkJew0KLQkJCQl0ZXh0LT5EZXMoKS5BcHBlbmQoIEtPYnNjdXJpbmdD
aGFyICk7DQotCQkJCX0NCi0JCQl9DQotCQl9DQotDQotCXRleHQtPkRlcygpLlplcm9UZXJtaW5h
dGUoKTsNCi0JcmV0dXJuIHRleHQ7DQotCX0NCisgICAgICB0ZXh0LT5EZXMoKVsgc3RhdGljUHRy
IF0gPSBhUmVhZGFibGUgPyAoICppRHluYW1pYyApWyBkeW5hbWljUHRyIF0NCisgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBLT2JzY3VyaW5nQ2hhcigpWyAwIF07DQorICAgICAgfQ0KKyAgICBl
bHNlDQorICAgICAgew0KKyAgICAgIGJyZWFrOw0KKyAgICAgIH0NCisgICAgfQ0KKw0KKyAgaWYg
KCBkeW5hbWljUHRyIDwgZHluYW1pY0xlbmd0aCApIC8vIGFwcGVuZCB0aGUgcmVtYWluaW5nIGR5
bmFtaWMgdGV4dA0KKyAgICB7DQorICAgIEhCdWZDKiBuZXdUZXh0ID0gdGV4dC0+UmVBbGxvY0wN
CisgICAgICAoIHN0YXRpY0xlbmd0aCArIGR5bmFtaWNMZW5ndGggLSBkeW5hbWljUHRyICsgMSAp
Ow0KKw0KKyAgICBDbGVhbnVwU3RhY2s6OlBvcCgpOyAgICAgIC8vIHRleHQNCisgICAgQ2xlYW51
cFN0YWNrOjpQdXNoTCggbmV3VGV4dCApOyAvLyBuZXdUZXh0DQorICAgIHRleHQgPSBuZXdUZXh0
Ow0KKw0KKyAgICBpZiAoIGFSZWFkYWJsZSApDQorICAgICAgew0KKyAgICAgIGZvciAoIDsgZHlu
YW1pY1B0ciA8IGR5bmFtaWNMZW5ndGg7IGR5bmFtaWNQdHIrKyApDQorICAgICAgICB7DQorICAg
ICAgICB0ZXh0LT5EZXMoKS5BcHBlbmQoICggKmlEeW5hbWljIClbIGR5bmFtaWNQdHIgXSApOw0K
KyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgZWxzZQ0KKyAgICAgIHsNCisgICAgICBmb3IgKCA7
IGR5bmFtaWNQdHIgPCBkeW5hbWljTGVuZ3RoOyBkeW5hbWljUHRyKysgKQ0KKyAgICAgICAgew0K
KyAgICAgICAgdGV4dC0+RGVzKCkuQXBwZW5kKCBLT2JzY3VyaW5nQ2hhciApOw0KKyAgICAgICAg
fQ0KKyAgICAgIH0NCisgICAgfQ0KKw0KKyAgdGV4dC0+RGVzKCkuWmVyb1Rlcm1pbmF0ZSgpOw0K
KyAgcmV0dXJuIHRleHQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
SW5zZXJ0TA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KIC8vDQogdm9pZCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpJbnNlcnRMKCBU
SW50IGFQb3MsIFRDaGFyIGFDaGFyICkNCi0Jew0KLQlUQnVmPDE+IGJ1ZjsNCi0JYnVmLkFwcGVu
ZCggYUNoYXIgKTsNCi0JSW5zZXJ0TCggYVBvcywgYnVmICk7DQotCX0NCisgIHsNCisgIFRCdWY8
MT4gYnVmOw0KKyAgYnVmLkFwcGVuZCggYUNoYXIgKTsNCisgIEluc2VydEwoIGFQb3MsIGJ1ZiAp
Ow0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6Okluc2VydEwNCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CiAvLw0KIHZvaWQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6SW5zZXJ0TCggVEludCBhUG9zLCBjb25z
dCBURGVzQyYgYURlcyApDQotCXsNCi0JVEludCBuZXdQb3MgPSBQb3NFeGx1ZGluZ1N0YXRpYygg
YVBvcyApOw0KLQlpZiAoIC0xIDwgbmV3UG9zICYmIG5ld1BvcyA8PSBpRHluYW1pYy0+TGVuZ3Ro
KCkgKQ0KLQkJew0KLQkJLy8gbWFrZSBzdXJlIHRoZXJlJ3MgZW5vdWdoIHNwYWNlDQotCQlUSW50
IG5ld0xlbmd0aCA9IGlEeW5hbWljLT5MZW5ndGgoKSArIGFEZXMuTGVuZ3RoKCk7DQotCQlpZiAo
IGlEeW5hbWljLT5EZXMoKS5NYXhMZW5ndGgoKSA8IG5ld0xlbmd0aCApDQotCQkJew0KLQkJCWlE
eW5hbWljID0gaUR5bmFtaWMtPlJlQWxsb2NMKCBuZXdMZW5ndGggKTsNCi0JCQl9DQotDQotCQlp
RHluYW1pYy0+RGVzKCkuSW5zZXJ0KCBuZXdQb3MsIGFEZXMgKTsNCi0JCX0NCi0JfQ0KKyAgew0K
KyAgVEludCBuZXdQb3MgPSBQb3NFeGx1ZGluZ1N0YXRpYyggYVBvcyApOw0KKyAgaWYgKCAtMSA8
IG5ld1BvcyAmJiBuZXdQb3MgPD0gaUR5bmFtaWMtPkxlbmd0aCgpICkNCisgICAgew0KKyAgICAv
LyBtYWtlIHN1cmUgdGhlcmUncyBlbm91Z2ggc3BhY2UNCisgICAgVEludCBuZXdMZW5ndGggPSBp
RHluYW1pYy0+TGVuZ3RoKCkgKyBhRGVzLkxlbmd0aCgpOw0KKyAgICBpZiAoIGlEeW5hbWljLT5E
ZXMoKS5NYXhMZW5ndGgoKSA8IG5ld0xlbmd0aCApDQorICAgICAgew0KKyAgICAgIGlEeW5hbWlj
ID0gaUR5bmFtaWMtPlJlQWxsb2NMKCBuZXdMZW5ndGggKTsNCisgICAgICB9DQorDQorICAgIGlE
eW5hbWljLT5EZXMoKS5JbnNlcnQoIG5ld1BvcywgYURlcyApOw0KKyAgICB9DQorICB9DQogDQog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6RGVsZXRlDQogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUQm9vbCBD
SW5wdXRGb3JtYXRIYW5kbGVyOjpEZWxldGUoIFRJbnQgYVBvcywgVEludCBhTGVuZ3RoICkNCi0J
ew0KKyAgew0KICAgVEJvb2wgc3RhdHVzID0gRUZhbHNlOw0KLQlUSW50IG5ld1BvcyA9IFBvc0V4
bHVkaW5nU3RhdGljKCBhUG9zICk7DQotCWlmICggLTEgPCBuZXdQb3MgJiYgbmV3UG9zICsgYUxl
bmd0aCA8PSBpRHluYW1pYy0+TGVuZ3RoKCkgKQ0KLQkJew0KLQkJaUR5bmFtaWMtPkRlcygpLkRl
bGV0ZSggbmV3UG9zLCBhTGVuZ3RoICk7DQorICBUSW50IG5ld1BvcyA9IFBvc0V4bHVkaW5nU3Rh
dGljKCBhUG9zICk7DQorICBpZiAoIC0xIDwgbmV3UG9zICYmIG5ld1BvcyArIGFMZW5ndGggPD0g
aUR5bmFtaWMtPkxlbmd0aCgpICkNCisgICAgew0KKyAgICBpRHluYW1pYy0+RGVzKCkuRGVsZXRl
KCBuZXdQb3MsIGFMZW5ndGggKTsNCiAgICAgc3RhdHVzID0gRVRydWU7DQotCQl9DQorICAgIH0N
CiAgIHJldHVybiBzdGF0dXM7DQotCX0NCisgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDSW5wdXRGb3JtYXRI
YW5kbGVyOjpTdGF0aWNUZXh0TEMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIEhCdWZDKiBDSW5wdXRGb3JtYXRIYW5k
bGVyOjpTdGF0aWNUZXh0TEMoKSBjb25zdA0KLQl7DQotCVRJbnQgY291bnQgPSBpU3RhdGljLT5D
b3VudCgpOw0KLQlUSW50IGxlbmd0aCA9ICggY291bnQgKSA/IGlTdGF0aWMtPkF0KCBjb3VudCAt
IDEgKS5Qb3MoKSArIDEgOiAwOw0KLQlIQnVmQyogZW1wdHkgPSBIQnVmQzo6TmV3TEMoIGxlbmd0
aCArIDEgKTsNCi0JZW1wdHktPkRlcygpLkZpbGwoICcgJywgbGVuZ3RoICk7DQotCWZvciAoIFRJ
bnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrICkNCi0JCXsNCi0JCVRTdGF0aWNDaGFyIHN0YXRpY0No
YXIgPSBpU3RhdGljLT5BdCggaSApOw0KKyAgew0KKyAgVEludCBjb3VudCA9IGlTdGF0aWMtPkNv
dW50KCk7DQorICBUSW50IGxlbmd0aCA9ICggY291bnQgKSA/IGlTdGF0aWMtPkF0KCBjb3VudCAt
IDEgKS5Qb3MoKSArIDEgOiAwOw0KKyAgSEJ1ZkMqIGVtcHR5ID0gSEJ1ZkM6Ok5ld0xDKCBsZW5n
dGggKyAxICk7DQorICBlbXB0eS0+RGVzKCkuRmlsbCggJyAnLCBsZW5ndGggKTsNCisgIGZvciAo
IFRJbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrICkNCisgICAgew0KKyAgICBUU3RhdGljQ2hhciBz
dGF0aWNDaGFyID0gaVN0YXRpYy0+QXQoIGkgKTsNCiAgICAgICAgIC8qbGludCAtZXsxMTF9IEFz
c2lnbm1lbnQgdG8gY29uc3Qgb2JqZWN0ICovDQotCQllbXB0eS0+RGVzKClbIHN0YXRpY0NoYXIu
UG9zKCkgXSA9DQotCQkJU1RBVElDX0NBU1QoIFRVaW50MTYsIHN0YXRpY0NoYXIuQ2hhcigpICk7
DQotCQl9DQotDQotCWVtcHR5LT5EZXMoKS5aZXJvVGVybWluYXRlKCk7DQotCXJldHVybiBlbXB0
eTsNCi0JfQ0KKyAgICBlbXB0eS0+RGVzKClbIHN0YXRpY0NoYXIuUG9zKCkgXSA9DQorICAgICAg
U1RBVElDX0NBU1QoIFRVaW50MTYsIHN0YXRpY0NoYXIuQ2hhcigpICk7DQorICAgIH0NCisNCisg
IGVtcHR5LT5EZXMoKS5aZXJvVGVybWluYXRlKCk7DQorICByZXR1cm4gZW1wdHk7DQorICB9DQog
DQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6TnVtYmVyT2ZTdGF0aWMNCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAv
Lw0KIFRJbnQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6TnVtYmVyT2ZTdGF0aWMoKSBjb25zdA0KLQl7
DQotCXJldHVybiBpU3RhdGljLT5Db3VudCgpOw0KLQl9DQorICB7DQorICByZXR1cm4gaVN0YXRp
Yy0+Q291bnQoKTsNCisgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDSW5wdXRGb3JtYXRIYW5kbGVyOjpHZXRG
b3JtYXQNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCiAvLw0KIFRJbnB1dEZvcm1hdENoYXIgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
R2V0Rm9ybWF0KCBUSW50IGFJbmRleCApIGNvbnN0DQotCXsNCi0JVFVpbnQgY29kZSA9IEtJbnB1
dEZvcm1hdE5vbmU7DQotCWlmICggLTEgPCBhSW5kZXggKQ0KLQkJew0KLQkJaWYgKCBhSW5kZXgg
PCBpTWFzay0+TGVuZ3RoKCkgKQkJLy8gaXMgaXQgaW4gdGhlIG1hc2s/DQotCQkJew0KLQkJCWNv
ZGUgPSAoICppTWFzayApWyBhSW5kZXggXTsNCi0JCQl9DQotCQllbHNlDQotCQkJew0KLQkJCWlm
ICggYUluZGV4IDwgaU1heExlbmd0aCB8fA0KLQkJCQkgaU1heExlbmd0aCA9PSBLSW5maW5pdGVM
ZW5ndGggKQkJLy8gaXMgaXQgdGhlIHBvc3RmaXg/DQotCQkJCXsNCi0JCQkJY29kZSA9IGlQb3N0
Rml4Ow0KLQkJCQl9DQotCQkJfQ0KLQkJfQ0KLQ0KLQlUSW50IHN0YXRpY0NoYXIgPSAwOw0KLQlp
ZiAoIGNvZGUgPT0gS0lucHV0Rm9ybWF0U3RhdGljICkJCQkvLyBpcyBpdCBzdGF0aWM/DQotCQl7
DQotCQlmb3IgKCBUSW50IGkgPSBpU3RhdGljLT5Db3VudCgpIC0gMTsgaSA+IC0xOyBpLS0gKQ0K
LQkJCXsNCi0JCQlpZiAoIGlTdGF0aWMtPkF0KCBpICkuUG9zKCkgPT0gYUluZGV4ICkNCi0JCQkJ
ew0KLQkJCQlzdGF0aWNDaGFyID0gaVN0YXRpYy0+QXQoIGkgKS5DaGFyKCk7DQotCQkJCWJyZWFr
Ow0KLQkJCQl9DQotCQkJfQ0KLQkJfQ0KKyAgew0KKyAgVFVpbnQgY29kZSA9IEtJbnB1dEZvcm1h
dE5vbmU7DQorICBpZiAoIC0xIDwgYUluZGV4ICkNCisgICAgew0KKyAgICBpZiAoIGFJbmRleCA8
IGlNYXNrLT5MZW5ndGgoKSApICAgLy8gaXMgaXQgaW4gdGhlIG1hc2s/DQorICAgICAgew0KKyAg
ICAgIGNvZGUgPSAoICppTWFzayApWyBhSW5kZXggXTsNCisgICAgICB9DQorICAgIGVsc2UNCisg
ICAgICB7DQorICAgICAgaWYgKCBhSW5kZXggPCBpTWF4TGVuZ3RoIHx8DQorICAgICAgICAgaU1h
eExlbmd0aCA9PSBLSW5maW5pdGVMZW5ndGggKSAgICAvLyBpcyBpdCB0aGUgcG9zdGZpeD8NCisg
ICAgICAgIHsNCisgICAgICAgIGNvZGUgPSBpUG9zdEZpeDsNCisgICAgICAgIH0NCisgICAgICB9
DQorICAgIH0NCisNCisgIFRJbnQgc3RhdGljQ2hhciA9IDA7DQorICBpZiAoIGNvZGUgPT0gS0lu
cHV0Rm9ybWF0U3RhdGljICkgICAgIC8vIGlzIGl0IHN0YXRpYz8NCisgICAgew0KKyAgICBmb3Ig
KCBUSW50IGkgPSBpU3RhdGljLT5Db3VudCgpIC0gMTsgaSA+IC0xOyBpLS0gKQ0KKyAgICAgIHsN
CisgICAgICBpZiAoIGlTdGF0aWMtPkF0KCBpICkuUG9zKCkgPT0gYUluZGV4ICkNCisgICAgICAg
IHsNCisgICAgICAgIHN0YXRpY0NoYXIgPSBpU3RhdGljLT5BdCggaSApLkNoYXIoKTsNCisgICAg
ICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfQ0KIA0KLQlyZXR1cm4gVElu
cHV0Rm9ybWF0Q2hhciggY29kZSwgc3RhdGljQ2hhciApOw0KLQl9DQorICByZXR1cm4gVElucHV0
Rm9ybWF0Q2hhciggY29kZSwgc3RhdGljQ2hhciApOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1
dEZvcm1hdEhhbmRsZXI6OlBvc3RGaXgNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRJbnB1dEZvcm1hdENoYXIgQ0lu
cHV0Rm9ybWF0SGFuZGxlcjo6UG9zdEZpeCgpIGNvbnN0DQotCXsNCi0JcmV0dXJuIGlQb3N0Rml4
Ow0KLQl9DQorICB7DQorICByZXR1cm4gaVBvc3RGaXg7DQorICB9DQogDQogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lu
cHV0Rm9ybWF0SGFuZGxlcjo6TWluTGVuZ3RoDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUSW50IENJbnB1dEZvcm1h
dEhhbmRsZXI6Ok1pbkxlbmd0aCgpIGNvbnN0DQotCXsNCi0JcmV0dXJuIGlNaW5MZW5ndGg7DQot
CX0NCisgIHsNCisgIHJldHVybiBpTWluTGVuZ3RoOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1
dEZvcm1hdEhhbmRsZXI6Ok1heExlbmd0aA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVEludCBDSW5wdXRGb3JtYXRI
YW5kbGVyOjpNYXhMZW5ndGgoKSBjb25zdA0KLQl7DQotCXJldHVybiBpTWF4TGVuZ3RoOw0KLQl9
DQorICB7DQorICByZXR1cm4gaU1heExlbmd0aDsNCisgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDSW5wdXRG
b3JtYXRIYW5kbGVyOjpWYWxpZGF0ZUNoYXINCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIENJbnB1dEZvcm1h
dEhhbmRsZXI6OlZhbGlkYXRlQ2hhcg0KLQkoIFRDaGFyIGFDaGFyLCBUSW5wdXRGb3JtYXRDaGFy
IGFGb3JtYXRDaGFyICkgY29uc3QNCi0Jew0KKyAgKCBUQ2hhciBhQ2hhciwgVElucHV0Rm9ybWF0
Q2hhciBhRm9ybWF0Q2hhciApIGNvbnN0DQorICB7DQogICAgIFRCb29sIG1hdGNoKCBFRmFsc2Ug
KTsNCiANCi0JaWYgKCBhRm9ybWF0Q2hhci5TdGF0aWMoKSApCQkvLyBpcyBpdCBzdGF0aWM/DQot
CQl7DQotCQltYXRjaCA9ICggYUNoYXIgPT0gYUZvcm1hdENoYXIuU3RhdGljKCkgKTsNCi0JCX0N
Ci0JZWxzZQ0KLQkJew0KLQkJaWYgKCBhQ2hhci5Jc0RpZ2l0KCkgKQkJLy8gaXMgaXQgbnVtYmVy
Pw0KLQkJCXsNCi0JCQltYXRjaCA9IGFGb3JtYXRDaGFyLk51bWVyaWNBbGxvd2VkKCk7DQotCQkJ
fQ0KLQkJZWxzZQ0KLQkJCXsNCi0JCQlpZiAoIGFDaGFyLklzQWxwaGEoKSApCS8vIGlzIGl0IGFs
cGhhYmV0aWNhbD8NCi0JCQkJew0KLQkJCQlUSW5wdXRGb3JtYXRDaGFyOjpUSW5wdXRDYXNlIGZv
cmNlZENhc2UgPSBhRm9ybWF0Q2hhci5Gb3JjZWRDYXNlKCk7DQotCQkJCW1hdGNoID0gKCBmb3Jj
ZWRDYXNlID09IFRJbnB1dEZvcm1hdENoYXI6OkVJbnB1dE5vbmUgKQ0KLQkJCQkJPyBFVHJ1ZQ0K
LQkJCQkJOiAoIGFDaGFyLklzVXBwZXIoKSAmJg0KLQkJCQkJCWZvcmNlZENhc2UgPT0gVElucHV0
Rm9ybWF0Q2hhcjo6RUlucHV0VXBwZXJDYXNlICkgfHwNCi0JCQkJCSAgKCBhQ2hhci5Jc0xvd2Vy
KCkgJiYNCi0JCQkJCQlmb3JjZWRDYXNlID09IFRJbnB1dEZvcm1hdENoYXI6OkVJbnB1dExvd2Vy
Q2FzZSApOw0KKyAgaWYgKCBhRm9ybWF0Q2hhci5TdGF0aWMoKSApICAgLy8gaXMgaXQgc3RhdGlj
Pw0KKyAgICB7DQorICAgIG1hdGNoID0gKCBhQ2hhciA9PSBhRm9ybWF0Q2hhci5TdGF0aWMoKSAp
Ow0KKyAgICB9DQorICBlbHNlDQorICAgIHsNCisgICAgaWYgKCBhQ2hhci5Jc0RpZ2l0KCkgKSAg
ICAvLyBpcyBpdCBudW1iZXI/DQorICAgICAgew0KKyAgICAgIG1hdGNoID0gYUZvcm1hdENoYXIu
TnVtZXJpY0FsbG93ZWQoKTsNCisgICAgICB9DQorICAgIGVsc2UNCisgICAgICB7DQorICAgICAg
aWYgKCBhQ2hhci5Jc0FscGhhKCkgKSAgLy8gaXMgaXQgYWxwaGFiZXRpY2FsPw0KKyAgICAgICAg
ew0KKyAgICAgICAgVElucHV0Rm9ybWF0Q2hhcjo6VElucHV0Q2FzZSBmb3JjZWRDYXNlID0gYUZv
cm1hdENoYXIuRm9yY2VkQ2FzZSgpOw0KKyAgICAgICAgbWF0Y2ggPSAoIGZvcmNlZENhc2UgPT0g
VElucHV0Rm9ybWF0Q2hhcjo6RUlucHV0Tm9uZSApDQorICAgICAgICAgID8gRVRydWUNCisgICAg
ICAgICAgOiAoIGFDaGFyLklzVXBwZXIoKSAmJg0KKyAgICAgICAgICAgIGZvcmNlZENhc2UgPT0g
VElucHV0Rm9ybWF0Q2hhcjo6RUlucHV0VXBwZXJDYXNlICkgfHwNCisgICAgICAgICAgICAoIGFD
aGFyLklzTG93ZXIoKSAmJg0KKyAgICAgICAgICAgIGZvcmNlZENhc2UgPT0gVElucHV0Rm9ybWF0
Q2hhcjo6RUlucHV0TG93ZXJDYXNlICk7DQogICAgICAgICAvLyBJZiBub24td2VzdGVybiBhbHBo
YSB0aGVuIGFzc3VtZSB0aGVyZSBpcyBubyB1cHBlciBhbmQgbG93ZXIgY2FzZQ0KICAgICAgICAg
Ly8gLSBzbyBjaGVjayBmb3IgTGV0dGVyT3RoZXIgb3IgTGV0dGVyQ2hpbmEvTGV0dGVyVGhhaSAo
ZGVwZW5kaW5nIHVwb24gdmFyaWFudCkuDQogICAgICAgICAvLyBJZiBpbnZhbGlkIGNoYXIgZm9y
IGZvcm1hdCwgdmFsdWUgb2YgIm1hdGNoIiBpcyByZXRhaW5lZC4gDQpAQCAtNjc1LDEyOSArNjg4
LDEyOSBAQCBUQm9vbCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpWYWxpZGF0ZUNoYXINCiAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgIH0NCi0JCQkJfQ0K
LQkJCWVsc2UNCi0JCQkJewkJCQkJLy8gaXQncyBwdW5jdHVhdG9yIG9yIHN5bWJvbA0KLQkJCQlt
YXRjaCA9IGFGb3JtYXRDaGFyLlNwZWNpYWxBbGxvd2VkKCk7DQotCQkJCX0NCi0JCQl9DQotCQl9
DQorICAgICAgICB9DQorICAgICAgZWxzZQ0KKyAgICAgICAgey8vIGl0J3MgcHVuY3R1YXRvciBv
ciBzeW1ib2wNCisgICAgICAgIG1hdGNoID0gYUZvcm1hdENoYXIuU3BlY2lhbEFsbG93ZWQoKTsN
CisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0NCiANCi0JcmV0dXJuIG1hdGNoOw0KLQl9DQor
ICByZXR1cm4gbWF0Y2g7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
VmFsaWRhdGVUZXh0TEMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIENBcnJheUZpeEZsYXQ8VEludD4qIENJbnB1dEZv
cm1hdEhhbmRsZXI6OlZhbGlkYXRlVGV4dExDKCkgY29uc3QNCi0Jew0KLQlDQXJyYXlGaXhGbGF0
PFRJbnQ+KiBlcnJvcnMgPQ0KLQkJbmV3KCBFTGVhdmUgKUNBcnJheUZpeEZsYXQ8VEludD4oIDMg
KTsNCi0JQ2xlYW51cFN0YWNrOjpQdXNoTCggZXJyb3JzICk7DQotDQotCUhCdWZDKiB0ZXh0ID0g
VGV4dExDKCk7DQotCVRJbnQgbGVuZ3RoKCB0ZXh0LT5MZW5ndGgoKSApOw0KLQlmb3IgKCBUSW50
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysgKQ0KLQkJew0KLQkJaWYgKCAhVmFsaWRhdGVDaGFyKCAo
ICp0ZXh0IClbIGkgXSwgR2V0Rm9ybWF0KCBpICkgKSApDQotCQkJew0KLQkJCWVycm9ycy0+QXBw
ZW5kTCggaSApOw0KLQkJCX0NCi0JCX0NCi0JCQ0KLQlDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ry
b3koKTsJLy8gdGV4dA0KLQlyZXR1cm4gZXJyb3JzOw0KLQl9DQorICB7DQorICBDQXJyYXlGaXhG
bGF0PFRJbnQ+KiBlcnJvcnMgPQ0KKyAgICBuZXcoIEVMZWF2ZSApQ0FycmF5Rml4RmxhdDxUSW50
PiggMyApOw0KKyAgQ2xlYW51cFN0YWNrOjpQdXNoTCggZXJyb3JzICk7DQorDQorICBIQnVmQyog
dGV4dCA9IFRleHRMQygpOw0KKyAgVEludCBsZW5ndGgoIHRleHQtPkxlbmd0aCgpICk7DQorICBm
b3IgKCBUSW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysgKQ0KKyAgICB7DQorICAgIGlmICggIVZh
bGlkYXRlQ2hhciggKCAqdGV4dCApWyBpIF0sIEdldEZvcm1hdCggaSApICkgKQ0KKyAgICAgIHsN
CisgICAgICBlcnJvcnMtPkFwcGVuZEwoIGkgKTsNCisgICAgICB9DQorICAgIH0NCisgICAgDQor
ICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koKTsgIC8vIHRleHQNCisgIHJldHVybiBlcnJv
cnM7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVUZXh0
TA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KIC8vDQogVEJvb2wgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVUZXh0TCgp
IGNvbnN0DQotCXsNCi0JSEJ1ZkMqIHRleHQgPSBUZXh0TEMoKTsNCi0JVEludCBsZW5ndGgoIHRl
eHQtPkxlbmd0aCgpICk7DQotCVRJbnQgaTsNCi0JZm9yICggaSA9IDA7DQotCQkgIGkgPCBsZW5n
dGggJiYgVmFsaWRhdGVDaGFyKCAoICp0ZXh0IClbIGkgXSwgR2V0Rm9ybWF0KCBpICkgKTsNCi0J
CSAgaSsrICkNCi0JCXt9DQotCQkNCi0JQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7CS8v
IHRleHQNCi0JcmV0dXJuICggaSA9PSBsZW5ndGggKTsNCi0JfQ0KKyAgew0KKyAgSEJ1ZkMqIHRl
eHQgPSBUZXh0TEMoKTsNCisgIFRJbnQgbGVuZ3RoKCB0ZXh0LT5MZW5ndGgoKSApOw0KKyAgVElu
dCBpOw0KKyAgZm9yICggaSA9IDA7DQorICAgICAgaSA8IGxlbmd0aCAmJiBWYWxpZGF0ZUNoYXIo
ICggKnRleHQgKVsgaSBdLCBHZXRGb3JtYXQoIGkgKSApOw0KKyAgICAgIGkrKyApDQorICAgIHt9
DQorICAgIA0KKyAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7ICAvLyB0ZXh0DQorICBy
ZXR1cm4gKCBpID09IGxlbmd0aCApOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhh
bmRsZXI6OlBvc0luY2x1ZGluZ1N0YXRpYw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVEludCBDSW5wdXRGb3JtYXRI
YW5kbGVyOjpQb3NJbmNsdWRpbmdTdGF0aWMoIFRJbnQgYVBvc0V4bHVkaW5nU3RhdGljICkNCi0J
ew0KLQlUSW50IGkgPSAwOw0KLQlUSW50IGNvdW50ID0gaVN0YXRpYy0+Q291bnQoKTsNCi0JZm9y
ICggOyBpIDwgY291bnQ7IGkrKyApDQotCQl7DQotCQlpZiAoIGlTdGF0aWMtPkF0KCBpICkuUG9z
KCkgPD0gYVBvc0V4bHVkaW5nU3RhdGljICkNCi0JCQl7DQotCQkJYVBvc0V4bHVkaW5nU3RhdGlj
Kys7DQotCQkJfQ0KLQkJfQ0KKyAgew0KKyAgVEludCBpID0gMDsNCisgIFRJbnQgY291bnQgPSBp
U3RhdGljLT5Db3VudCgpOw0KKyAgZm9yICggOyBpIDwgY291bnQ7IGkrKyApDQorICAgIHsNCisg
ICAgaWYgKCBpU3RhdGljLT5BdCggaSApLlBvcygpIDw9IGFQb3NFeGx1ZGluZ1N0YXRpYyApDQor
ICAgICAgew0KKyAgICAgIGFQb3NFeGx1ZGluZ1N0YXRpYysrOw0KKyAgICAgIH0NCisgICAgfQ0K
IA0KLQlyZXR1cm4gYVBvc0V4bHVkaW5nU3RhdGljOw0KLQl9DQorICByZXR1cm4gYVBvc0V4bHVk
aW5nU3RhdGljOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6OlBvc0V4
bHVkaW5nU3RhdGljDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUSW50IENJbnB1dEZvcm1hdEhhbmRsZXI6OlBvc0V4
bHVkaW5nU3RhdGljKCBUSW50IGFQb3NJbmNsdWRpbmdTdGF0aWMgKQ0KLQl7DQotCS8vIGZpbmQg
dGhlIG5lYXJlc3Qgc3RhdGljIGNoYXJhY3RlciBiZWZvcmUgYVBvc0luY2x1ZGluZ1N0YXRpYw0K
LQlUSW50IGkgPSBpU3RhdGljLT5Db3VudCgpIC0gMTsNCi0JZm9yICggOw0KLQkJICBpID4gLTEg
JiYgYVBvc0luY2x1ZGluZ1N0YXRpYyA8IGlTdGF0aWMtPkF0KCBpICkuUG9zKCk7DQotCQkgIGkt
LSApDQotCQl7CQ0KLQkJfQ0KKyAgew0KKyAgLy8gZmluZCB0aGUgbmVhcmVzdCBzdGF0aWMgY2hh
cmFjdGVyIGJlZm9yZSBhUG9zSW5jbHVkaW5nU3RhdGljDQorICBUSW50IGkgPSBpU3RhdGljLT5D
b3VudCgpIC0gMTsNCisgIGZvciAoIDsNCisgICAgICBpID4gLTEgJiYgYVBvc0luY2x1ZGluZ1N0
YXRpYyA8IGlTdGF0aWMtPkF0KCBpICkuUG9zKCk7DQorICAgICAgaS0tICkNCisgICAgeyANCisg
ICAgfQ0KIA0KLQlyZXR1cm4gKCBhUG9zSW5jbHVkaW5nU3RhdGljIC0gaSAtIDEgKTsNCi0JfQ0K
KyAgcmV0dXJuICggYVBvc0luY2x1ZGluZ1N0YXRpYyAtIGkgLSAxICk7DQorICB9DQogDQogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6UHJldmlvdXNOb25TdGF0aWMNCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0K
IFRJbnQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6UHJldmlvdXNOb25TdGF0aWMoIFRJbnQgYVBvcyAp
DQotCXsNCi0JVEludCBwb3NFeGx1ZGluZ1N0YXRpYyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9z
ICk7DQorICB7DQorICBUSW50IHBvc0V4bHVkaW5nU3RhdGljID0gUG9zRXhsdWRpbmdTdGF0aWMo
IGFQb3MgKTsNCiANCi0JcmV0dXJuICggLTEgPCBwb3NFeGx1ZGluZ1N0YXRpYyApDQotCQk/IFBv
c0luY2x1ZGluZ1N0YXRpYyggcG9zRXhsdWRpbmdTdGF0aWMgKQ0KLQkJOiBLTm90Rm91bmQ7DQot
CX0NCisgIHJldHVybiAoIC0xIDwgcG9zRXhsdWRpbmdTdGF0aWMgKQ0KKyAgICA/IFBvc0luY2x1
ZGluZ1N0YXRpYyggcG9zRXhsdWRpbmdTdGF0aWMgKQ0KKyAgICA6IEtOb3RGb3VuZDsNCisgIH0N
CiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCiAvLyBDSW5wdXRGb3JtYXRIYW5kbGVyOjpOZXh0Tm9uU3RhdGljDQogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQog
Ly8NCiBUSW50IENJbnB1dEZvcm1hdEhhbmRsZXI6Ok5leHROb25TdGF0aWMoIFRJbnQgYVBvcyAp
DQotCXsNCi0JVEludCBwb3NFeGx1ZGluZ1N0YXRpYyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9z
ICkgKyAxOw0KKyAgew0KKyAgVEludCBwb3NFeGx1ZGluZ1N0YXRpYyA9IFBvc0V4bHVkaW5nU3Rh
dGljKCBhUG9zICkgKyAxOw0KIA0KLQlyZXR1cm4gKCBwb3NFeGx1ZGluZ1N0YXRpYyA8IGlEeW5h
bWljLT5MZW5ndGgoKSApDQotCQk/IFBvc0luY2x1ZGluZ1N0YXRpYyggcG9zRXhsdWRpbmdTdGF0
aWMgKQ0KLQkJOiBLTm90Rm91bmQ7DQotCX0NCisgIHJldHVybiAoIHBvc0V4bHVkaW5nU3RhdGlj
IDwgaUR5bmFtaWMtPkxlbmd0aCgpICkNCisgICAgPyBQb3NJbmNsdWRpbmdTdGF0aWMoIHBvc0V4
bHVkaW5nU3RhdGljICkNCisgICAgOiBLTm90Rm91bmQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lu
cHV0Rm9ybWF0SGFuZGxlcjo6Rmlyc3RFbXB0eQ0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVEludCBDSW5wdXRGb3Jt
YXRIYW5kbGVyOjpGaXJzdEVtcHR5KCkNCi0Jew0KLQlyZXR1cm4gUG9zSW5jbHVkaW5nU3RhdGlj
KCBpRHluYW1pYy0+TGVuZ3RoKCkgKTsNCi0JfQ0KKyAgew0KKyAgcmV0dXJuIFBvc0luY2x1ZGlu
Z1N0YXRpYyggaUR5bmFtaWMtPkxlbmd0aCgpICk7DQorICB9DQogDQogDQogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtODA1
LDcgKzgxOCw3IEBAIFRJbnQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6Rmlyc3RFbXB0eSgpDQogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQogLy8NCiBUSW50IENJbnB1dEZvcm1hdEhhbmRsZXI6OlByZXZpb3VzU3RhdGljKCBUSW50IGFQ
b3MgKQ0KLQl7DQorICB7DQogICBUSW50IHByZXZTdGF0aWNQb3MgPSAwOw0KICAgVEludCBpID0g
aVN0YXRpYy0+Q291bnQoKSAtIDE7DQogICBmb3IgKCA7IGkgPj0gMCAmJiAgaVN0YXRpYy0+QXQo
IGkgKS5Qb3MoKSA+IGFQb3M7IGktLSApDQpAQCAtODE1LDcgKzgyOCw3IEBAIFRJbnQgQ0lucHV0
Rm9ybWF0SGFuZGxlcjo6UHJldmlvdXNTdGF0aWMNCiAgICAgcHJldlN0YXRpY1BvcyAgPSBpU3Rh
dGljLT5BdCggaSApLlBvcygpIDsNCiAgICAgfQ0KICAgcmV0dXJuIHByZXZTdGF0aWNQb3MgOw0K
LQl9DQorICB9DQogDQogDQogDQpAQCAtODI0LDcgKzgzNyw3IEBAIFRJbnQgQ0lucHV0Rm9ybWF0
SGFuZGxlcjo6UHJldmlvdXNTdGF0aWMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIENJbnB1dEZvcm1hdEhh
bmRsZXI6OklzUG9zU3RhdGljKCBUSW50IGFQb3MgKQ0KLQl7DQorICB7DQogICBUSW50IGkgPSBp
U3RhdGljLT5Db3VudCgpIC0gMTsNCiAgIGZvciAoIDsgaSA+PSAwICYmICBpU3RhdGljLT5BdCgg
aSApLlBvcygpICE9IGFQb3M7IGktLSApDQogICAgIHt9DQpAQCAtODMzLDYgKzg0Niw2IEBAIFRC
b29sIENJbnB1dEZvcm1hdEhhbmRsZXI6OklzUG9zU3RhdGljKCANCiAgICAgcmV0dXJuIEVUcnVl
Ow0KICAgICB9DQogICByZXR1cm4gRUZhbHNlOw0KLQl9DQorICB9DQogDQogLy8gIEVuZCBvZiBG
aWxlDQo=
</data>
<flag name="review"
          id="4661"
          type_id="1"
          status="+"
          setter="Sachin.Padma"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12637</attachid>
            <date>2007-01-23 13:59:15 -0800</date>
            <delta_ts>2007-01-23 14:09:43 -0800</delta_ts>
            <desc>New patch</desc>
            <filename>format.patch</filename>
            <type>text/plain</type>
            <size>1699</size>
            <attacher name="Shyam Sareen">shyam.sareen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTA1NSkNCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpA
QCAtMSwzICsxLDEyIEBADQorMjAwNy0wMS0yMyAgc3NhcmVlbiAgPHNoeWFtLnNhcmVlbkBub2tp
YS5jb20+DQorDQorICAgICAgICBSZXZpZXdlZCBieSBTYWNoaW4gUGFkbWEuDQorICAgICAgICBE
RVNDOiBJbnZhbGlkIFdBUCBDU1MgZm9ybWF0cyBub3QgYmVpbmcgaWdub3JlZCAoIFRTVyBJRDog
VE1DTi02UzVLODcpDQorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjIzMA0KKw0KKyAgICAgICAgKiBCcm93c2VyQ29yZS9Gb3JtY29udHJvbHMvc3JjL0ZD
b250cm9sZm9ybWF0aGFuZGxlci5jcHA6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
Q29uc3RydWN0TCk6DQorDQogc2FyZWVuICA8c2h5YW0uc2FyZWVuQG5va2lhLmNvbT4NCiANCiAg
ICAgICAgIFJldmlld2VkIGJ5IFNhY2hpbiBQYWRtYS4NCkluZGV4OiBXZWJLaXQvQnJvd3NlckNv
cmUvRm9ybWNvbnRyb2xzL3NyYy9GQ29udHJvbGZvcm1hdGhhbmRsZXIuY3BwDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViS2l0L0Jyb3dzZXJDb3JlL0Zvcm1jb250cm9scy9zcmMvRkNvbnRyb2xmb3JtYXRo
YW5kbGVyLmNwcAkocmV2aXNpb24gMTkwNTUpDQorKysgV2ViS2l0L0Jyb3dzZXJDb3JlL0Zvcm1j
b250cm9scy9zcmMvRkNvbnRyb2xmb3JtYXRoYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQ0KQEAg
LTMxNiw3ICszMTYsMjAgQEAgdm9pZCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpDb25zdHJ1Y3RMDQog
ICAgICAgICBpUG9zdEZpeCA9IGFGb3JtYXRTdHJpbmdbICggLS1sZW5ndGggKS0tIF07DQogICAg
ICAgICBpTWF4TGVuZ3RoID0gbGVuZ3RoIC0gbnVtYmVyT2ZTdGF0aWNzICsgbi5HZXROdW1lcmlj
VmFsdWUoKTsNCiAgICAgICAgIH0NCi0gICAgfSANCisgICAgICBlbHNlDQorICAgICAgICB7DQor
ICAgICAgICAvLyBJZiBpdCBpcyBub3QgYSAiKiIgb3IgbnVtZXJpYyBjaGFyYWN0ZXIgDQorICAg
ICAgICAvLyBUZXN0IGZvciB2YWxpZCBjaGFyYWN0ZXIgaGVyZS4NCisgICAgICAgIC8vIFRoZW4g
YXBwbHkgdGhlIGRlZmF1bHQgdmFsdWUgb2YgV0FQIENTUyAiKk0iLiANCisgICAgICAgIGlmKCAh
bi5Jc0FscGhhKCkgJiYgKGxlbmd0aCA+IDAgKSApDQorICAgICAgICAgICAgew0KKyAgICAgICAg
ICAgIGlNaW5MZW5ndGggPSAwOyAvL0FsbG93IHVzZXIgdG8gZ2V0IG91dCBvZiBpbnB1dCBib3gN
CisgICAgICAgICAgICBpTWF4TGVuZ3RoID0gS0luZmluaXRlTGVuZ3RoOyAvLyBBcyBwZXIgIipN
IiBzeW50YXgNCisgICAgICAgICAgICBpUG9zdEZpeCA9ICdNJyA7DQorICAgICAgICAgICAgbGVu
Z3RoICA9IDA7IC8vQXZvaWQgaW5pdGlhbGl6aW5nIHRoZSBpTWFzayBsYXRlciBvbi4NCisgICAg
ICAgICAgICB9DQorICAgICAgICB9Ly9lbmQgZWxzZQ0KKyAgICB9IC8vIGVuZCBvdXRlciBlbHNl
DQogICB9DQogDQogICAvLyBhbGxvY2F0ZSBtZW1vcnkgZm9yIG1lbWJlcnMNCg==
</data>
<flag name="review"
          id="4802"
          type_id="1"
          status="+"
          setter="Sachin.Padma"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12738</attachid>
            <date>2007-01-29 06:59:48 -0800</date>
            <delta_ts>2007-01-30 07:51:44 -0800</delta_ts>
            <desc>Patch for 3.1</desc>
            <filename>wapcssInvalid3-1.patch</filename>
            <type>text/plain</type>
            <size>36806</size>
            <attacher name="Shyam Sareen">shyam.sareen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTIyMikNCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpA
QCAtMSwzICsxLDQ3IEBADQorMjAwNy0wMS0yOSAgc2FyZWVuICA8c2h5YW0uc2FyZWVuQG5va2lh
LmNvbT4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IHlvbmdqdW4uemhhbmdAbm9raWEuY29tLg0K
KyAgICAgICAgREVTQzogSW52YWxpZCBXQVAgQ1NTIGZvcm1hdHMgbm90IGJlaW5nIGlnbm9yZWQN
CisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjMwDQor
DQorICAgICAgICAqIEJyb3dzZXJDb3JlL0Zvcm1jb250cm9scy9zcmMvRkNvbnRyb2xmb3JtYXRo
YW5kbGVyLmNwcDoNCisgICAgICAgIChUSW5wdXRGb3JtYXRDaGFyOjpUSW5wdXRGb3JtYXRDaGFy
KToNCisgICAgICAgIChUSW5wdXRGb3JtYXRDaGFyOjpGb3JjZWRDYXNlKToNCisgICAgICAgIChU
SW5wdXRGb3JtYXRDaGFyOjpTdWdnZXN0ZWRDYXNlKToNCisgICAgICAgIChUSW5wdXRGb3JtYXRD
aGFyOjpBbHBoYUFsbG93ZWQpOg0KKyAgICAgICAgKFRJbnB1dEZvcm1hdENoYXI6Ok51bWVyaWNB
bGxvd2VkKToNCisgICAgICAgIChUSW5wdXRGb3JtYXRDaGFyOjpTcGVjaWFsQWxsb3dlZCk6DQor
ICAgICAgICAoVElucHV0Rm9ybWF0Q2hhcjo6Q2hhcik6DQorICAgICAgICAoVElucHV0Rm9ybWF0
Q2hhcjo6U3RhdGljKToNCisgICAgICAgIChUU3RhdGljQ2hhcjo6VFN0YXRpY0NoYXIpOg0KKyAg
ICAgICAgKFRTdGF0aWNDaGFyOjpDaGFyKToNCisgICAgICAgIChUU3RhdGljQ2hhcjo6UG9zKToN
CisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpDSW5wdXRGb3JtYXRIYW5kbGVyKToNCisg
ICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpDb25zdHJ1Y3RMKToNCisgICAgICAgIChDSW5w
dXRGb3JtYXRIYW5kbGVyOjpOZXdMQyk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
TmV3TCk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6fkNJbnB1dEZvcm1hdEhhbmRs
ZXIpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OlNldFRleHRMKToNCisgICAgICAg
IChDSW5wdXRGb3JtYXRIYW5kbGVyOjpUZXh0TEMpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhh
bmRsZXI6Okluc2VydEwpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OkRlbGV0ZSk6
DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6U3RhdGljVGV4dExDKToNCisgICAgICAg
IChDSW5wdXRGb3JtYXRIYW5kbGVyOjpOdW1iZXJPZlN0YXRpYyk6DQorICAgICAgICAoQ0lucHV0
Rm9ybWF0SGFuZGxlcjo6R2V0Rm9ybWF0KToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVy
OjpQb3N0Rml4KToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpNaW5MZW5ndGgpOg0K
KyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6Ok1heExlbmd0aCk6DQorICAgICAgICAoQ0lu
cHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVDaGFyKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRI
YW5kbGVyOjpWYWxpZGF0ZVRleHRMQyk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
VmFsaWRhdGVUZXh0TCk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6UG9zSW5jbHVk
aW5nU3RhdGljKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpQb3NFeGx1ZGluZ1N0
YXRpYyk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6UHJldmlvdXNOb25TdGF0aWMp
Og0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6Ok5leHROb25TdGF0aWMpOg0KKyAgICAg
ICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OkZpcnN0RW1wdHkpOg0KKyAgICAgICAgKENJbnB1dEZv
cm1hdEhhbmRsZXI6OlByZXZpb3VzU3RhdGljKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5k
bGVyOjpJc1Bvc1N0YXRpYyk6DQorDQogMjAwNy0wMS0yNiAgc3BhZG1hICA8U2FjaGluLlBhZG1h
QG5va2lhLmNvbT4NCiANCiAgICAgICAgIFJldmlld2VkIGJ5IFphbGFuLCBsYW5kZWQgYnkgYnJh
ZC4NCkluZGV4OiBXZWJLaXQvQnJvd3NlckNvcmUvRm9ybWNvbnRyb2xzL3NyYy9GQ29udHJvbGZv
cm1hdGhhbmRsZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJDb3JlL0Zvcm1j
b250cm9scy9zcmMvRkNvbnRyb2xmb3JtYXRoYW5kbGVyLmNwcAkocmV2aXNpb24gMTkyMjEpDQor
KysgV2ViS2l0L0Jyb3dzZXJDb3JlL0Zvcm1jb250cm9scy9zcmMvRkNvbnRyb2xmb3JtYXRoYW5k
bGVyLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTksOSArOSw5IEBADQogKiAgICBDb3B5cmlnaHQg
KGMpIDIwMDYsIE5va2lhIENvcnBvcmF0aW9uDQogKiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0K
ICogIA0KLSogIAlSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQNCi0qICAJbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQotKiAgCWFyZSBtZXQ6DQorKiAg
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dA0KKyogICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisqICAgYXJlIG1ldDoNCiAqICANCiAqICAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodA0KICogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCkBAIC0yMywxOCArMjMsMTggQEANCiAqICAgICAgICBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQNCiAqICAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uDQogKiAgDQotKiAgCVRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCi0qICAJIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QNCi0qICAJTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SDQotKiAgCUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQotKiAgCU9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LA0KLSogIAlTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UDQotKiAgCUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KLSogIAlEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkNCi0q
ICAJVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVA0KLSogIAkoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQ0KLSogIAlVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIDQotKiAgCURBTUFHRS4N
CisqICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUw0KKyogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KKyogICBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1INCisqICAg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQNCisqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQorKiAgIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCisqICAgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsDQorKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KKyogICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQorKiAgIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
DQorKiAgIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0gNCisqICAgREFNQUdFLg0KICogIA0KICogICAgUGxlYXNlIHNlZSBmaWxl
IHBhdGVudGxpY2Vuc2UudHh0IGZvciBmdXJ0aGVyIGdyYW50cy4NCiAqID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KQEAgLTY0LDE3MSArNjQsMTcxIEBAIHN0YXRpYyBjb25zdCBUVWludCBLSW5wdXRG
b3JtYXRNdWx0aXBsaWUNCiAvLyBtaWdodCBsZWF2ZS4NCiAvLw0KIFRJbnB1dEZvcm1hdENoYXI6
OlRJbnB1dEZvcm1hdENoYXIoIFRVaW50IGFDaGFyLCBUVWludCBhU3RhdGljICkNCi0JOiBpQ2hh
ciggYUNoYXIgKQ0KLQl7DQotCWlTdGF0aWMgPSAoIGFDaGFyID09IEtJbnB1dEZvcm1hdFN0YXRp
YyApID8gYVN0YXRpYyA6IDA7DQotCX0NCisgIDogaUNoYXIoIGFDaGFyICkNCisgIHsNCisgIGlT
dGF0aWMgPSAoIGFDaGFyID09IEtJbnB1dEZvcm1hdFN0YXRpYyApID8gYVN0YXRpYyA6IDA7DQor
ICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQogLy8gVElucHV0Rm9ybWF0Q2hhcjo6Rm9yY2VkQ2FzZQ0KIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8v
DQogVElucHV0Rm9ybWF0Q2hhcjo6VElucHV0Q2FzZSBUSW5wdXRGb3JtYXRDaGFyOjpGb3JjZWRD
YXNlKCkgY29uc3QNCi0Jew0KLQlUSW5wdXRDYXNlIHJlc3VsdDsNCi0Jc3dpdGNoKCBpQ2hhciAp
DQotCQl7DQotCQljYXNlIEtJbnB1dEZvcm1hdEEgOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRYIDoN
Ci0JCQlyZXN1bHQgPSBFSW5wdXRVcHBlckNhc2U7DQotCQkJYnJlYWs7DQotDQotCQljYXNlIEtJ
bnB1dEZvcm1hdGEgOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXR4IDoNCi0JCQlyZXN1bHQgPSBFSW5w
dXRMb3dlckNhc2U7DQotCQkJYnJlYWs7DQotDQotCQljYXNlIEtJbnB1dEZvcm1hdG4gOg0KLQkJ
Y2FzZSBLSW5wdXRGb3JtYXROIDoNCi0JCQlyZXN1bHQgPSBFSW5wdXROdW1lcmljQ2FzZTsNCi0J
CQlicmVhazsNCi0NCi0JCWRlZmF1bHQ6DQotCQkJcmVzdWx0ID0gRUlucHV0Tm9uZTsNCi0JCQli
cmVhazsNCi0JCX0NCi0JcmV0dXJuIHJlc3VsdDsNCi0JfQ0KKyAgew0KKyAgVElucHV0Q2FzZSBy
ZXN1bHQ7DQorICBzd2l0Y2goIGlDaGFyICkNCisgICAgew0KKyAgICBjYXNlIEtJbnB1dEZvcm1h
dEEgOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdFggOg0KKyAgICAgIHJlc3VsdCA9IEVJbnB1dFVw
cGVyQ2FzZTsNCisgICAgICBicmVhazsNCisNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRhIDoNCisg
ICAgY2FzZSBLSW5wdXRGb3JtYXR4IDoNCisgICAgICByZXN1bHQgPSBFSW5wdXRMb3dlckNhc2U7
DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgS0lucHV0Rm9ybWF0biA6DQorICAgIGNhc2Ug
S0lucHV0Rm9ybWF0TiA6DQorICAgICAgcmVzdWx0ID0gRUlucHV0TnVtZXJpY0Nhc2U7DQorICAg
ICAgYnJlYWs7DQorDQorICAgIGRlZmF1bHQ6DQorICAgICAgcmVzdWx0ID0gRUlucHV0Tm9uZTsN
CisgICAgICBicmVhazsNCisgICAgfQ0KKyAgcmV0dXJuIHJlc3VsdDsNCisgIH0NCiANCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CiAvLyBUSW5wdXRGb3JtYXRDaGFyOjpTdWdnZXN0ZWRDYXNlDQogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUSW5wdXRG
b3JtYXRDaGFyOjpUSW5wdXRDYXNlIFRJbnB1dEZvcm1hdENoYXI6OlN1Z2dlc3RlZENhc2UoKSBj
b25zdA0KLQl7DQotCVRJbnB1dENhc2UgcmVzdWx0Ow0KLQlzd2l0Y2goIGlDaGFyICkNCi0JCXsN
Ci0JCWNhc2UgS0lucHV0Rm9ybWF0QSA6DQotCQljYXNlIEtJbnB1dEZvcm1hdFggOg0KLQkJY2Fz
ZSBLSW5wdXRGb3JtYXRNIDoNCi0JCQlyZXN1bHQgPSBFSW5wdXRVcHBlckNhc2U7DQotCQkJYnJl
YWs7DQotDQotCQljYXNlIEtJbnB1dEZvcm1hdGEgOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXR4IDoN
Ci0JCWNhc2UgS0lucHV0Rm9ybWF0bSA6DQotCQkJcmVzdWx0ID0gRUlucHV0TG93ZXJDYXNlOw0K
LQkJCWJyZWFrOw0KLQ0KLQkJY2FzZSBLSW5wdXRGb3JtYXRuIDoNCi0JCWNhc2UgS0lucHV0Rm9y
bWF0TiA6DQotCQkJcmVzdWx0ID0gRUlucHV0TnVtZXJpY0Nhc2U7DQotCQkJYnJlYWs7DQotDQot
CQlkZWZhdWx0Og0KLQkJCXJlc3VsdCA9IEVJbnB1dE5vbmU7DQotCQkJYnJlYWs7DQotCQl9DQot
CXJldHVybiByZXN1bHQ7DQotCX0NCisgIHsNCisgIFRJbnB1dENhc2UgcmVzdWx0Ow0KKyAgc3dp
dGNoKCBpQ2hhciApDQorICAgIHsNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRBIDoNCisgICAgY2Fz
ZSBLSW5wdXRGb3JtYXRYIDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRNIDoNCisgICAgICByZXN1
bHQgPSBFSW5wdXRVcHBlckNhc2U7DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgS0lucHV0
Rm9ybWF0YSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0eCA6DQorICAgIGNhc2UgS0lucHV0Rm9y
bWF0bSA6DQorICAgICAgcmVzdWx0ID0gRUlucHV0TG93ZXJDYXNlOw0KKyAgICAgIGJyZWFrOw0K
Kw0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdG4gOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdE4gOg0K
KyAgICAgIHJlc3VsdCA9IEVJbnB1dE51bWVyaWNDYXNlOw0KKyAgICAgIGJyZWFrOw0KKw0KKyAg
ICBkZWZhdWx0Og0KKyAgICAgIHJlc3VsdCA9IEVJbnB1dE5vbmU7DQorICAgICAgYnJlYWs7DQor
ICAgIH0NCisgIHJldHVybiByZXN1bHQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gVElucHV0Rm9ybWF0
Q2hhcjo6QWxwaGFBbGxvd2VkDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUQm9vbCBUSW5wdXRGb3JtYXRDaGFyOjpB
bHBoYUFsbG93ZWQoKSBjb25zdA0KLQl7DQotCVRCb29sIHJlc3VsdDsNCi0Jc3dpdGNoKCBpQ2hh
ciApDQotCQl7DQotCQljYXNlIEtJbnB1dEZvcm1hdEEgOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRh
IDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0WCA6DQotCQljYXNlIEtJbnB1dEZvcm1hdHggOg0KLQkJ
Y2FzZSBLSW5wdXRGb3JtYXRNIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0bSA6DQotCQljYXNlIEtJ
bnB1dEZvcm1hdFN0YXRpYyA6DQotCQkJcmVzdWx0ID0gRVRydWU7DQotCQkJYnJlYWs7DQotDQot
CQlkZWZhdWx0Og0KLQkJCXJlc3VsdCA9IEVGYWxzZTsNCi0JCQlicmVhazsNCi0JCX0NCi0JcmV0
dXJuIHJlc3VsdDsNCi0JfQ0KKyAgew0KKyAgVEJvb2wgcmVzdWx0Ow0KKyAgc3dpdGNoKCBpQ2hh
ciApDQorICAgIHsNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRBIDoNCisgICAgY2FzZSBLSW5wdXRG
b3JtYXRhIDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRYIDoNCisgICAgY2FzZSBLSW5wdXRGb3Jt
YXR4IDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRNIDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRt
IDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRTdGF0aWMgOg0KKyAgICAgIHJlc3VsdCA9IEVUcnVl
Ow0KKyAgICAgIGJyZWFrOw0KKw0KKyAgICBkZWZhdWx0Og0KKyAgICAgIHJlc3VsdCA9IEVGYWxz
ZTsNCisgICAgICBicmVhazsNCisgICAgfQ0KKyAgcmV0dXJuIHJlc3VsdDsNCisgIH0NCiANCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCiAvLyBUSW5wdXRGb3JtYXRDaGFyOjpOdW1lcmljQWxsb3dlZA0KIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVEJv
b2wgVElucHV0Rm9ybWF0Q2hhcjo6TnVtZXJpY0FsbG93ZWQoKSBjb25zdA0KLQl7DQotCVRCb29s
IHJlc3VsdDsNCi0Jc3dpdGNoKCBpQ2hhciApDQotCQl7DQotCQljYXNlIEtJbnB1dEZvcm1hdFgg
Og0KLQkJY2FzZSBLSW5wdXRGb3JtYXR4IDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0TSA6DQotCQlj
YXNlIEtJbnB1dEZvcm1hdG0gOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRuIDoNCi0JCWNhc2UgS0lu
cHV0Rm9ybWF0TiA6DQotCQljYXNlIEtJbnB1dEZvcm1hdFN0YXRpYyA6DQotCQkJcmVzdWx0ID0g
RVRydWU7DQotCQkJYnJlYWs7DQotDQotCQlkZWZhdWx0Og0KLQkJCXJlc3VsdCA9IEVGYWxzZTsN
Ci0JCQlicmVhazsNCi0JCX0NCi0JcmV0dXJuIHJlc3VsdDsNCi0JfQ0KKyAgew0KKyAgVEJvb2wg
cmVzdWx0Ow0KKyAgc3dpdGNoKCBpQ2hhciApDQorICAgIHsNCisgICAgY2FzZSBLSW5wdXRGb3Jt
YXRYIDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXR4IDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRN
IDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRtIDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRuIDoN
CisgICAgY2FzZSBLSW5wdXRGb3JtYXROIDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRTdGF0aWMg
Og0KKyAgICAgIHJlc3VsdCA9IEVUcnVlOw0KKyAgICAgIGJyZWFrOw0KKw0KKyAgICBkZWZhdWx0
Og0KKyAgICAgIHJlc3VsdCA9IEVGYWxzZTsNCisgICAgICBicmVhazsNCisgICAgfQ0KKyAgcmV0
dXJuIHJlc3VsdDsNCisgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBUSW5wdXRGb3JtYXRDaGFyOjpTcGVjaWFs
QWxsb3dlZA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KIC8vDQogVEJvb2wgVElucHV0Rm9ybWF0Q2hhcjo6U3BlY2lhbEFsbG93
ZWQoKSBjb25zdA0KLQl7DQotCVRCb29sIHJlc3VsdDsNCi0Jc3dpdGNoKCBpQ2hhciApDQotCQl7
DQotCQljYXNlIEtJbnB1dEZvcm1hdEEgOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRhIDoNCi0JCWNh
c2UgS0lucHV0Rm9ybWF0WCA6DQotCQljYXNlIEtJbnB1dEZvcm1hdHggOg0KLQkJY2FzZSBLSW5w
dXRGb3JtYXRNIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0bSA6DQotCQljYXNlIEtJbnB1dEZvcm1h
dG4gOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRTdGF0aWMgOg0KLQkJCXJlc3VsdCA9IEVUcnVlOw0K
LQkJCWJyZWFrOw0KLQ0KLQkJZGVmYXVsdDoNCi0JCQlyZXN1bHQgPSBFRmFsc2U7DQotCQkJYnJl
YWs7DQotCQl9DQotCXJldHVybiByZXN1bHQ7DQotCX0NCisgIHsNCisgIFRCb29sIHJlc3VsdDsN
CisgIHN3aXRjaCggaUNoYXIgKQ0KKyAgICB7DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0QSA6DQor
ICAgIGNhc2UgS0lucHV0Rm9ybWF0YSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0WCA6DQorICAg
IGNhc2UgS0lucHV0Rm9ybWF0eCA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0TSA6DQorICAgIGNh
c2UgS0lucHV0Rm9ybWF0bSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0biA6DQorICAgIGNhc2Ug
S0lucHV0Rm9ybWF0U3RhdGljIDoNCisgICAgICByZXN1bHQgPSBFVHJ1ZTsNCisgICAgICBicmVh
azsNCisNCisgICAgZGVmYXVsdDoNCisgICAgICByZXN1bHQgPSBFRmFsc2U7DQorICAgICAgYnJl
YWs7DQorICAgIH0NCisgIHJldHVybiByZXN1bHQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gVElucHV0
Rm9ybWF0Q2hhcjo6Q2hhcg0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVFVpbnQgVElucHV0Rm9ybWF0Q2hhcjo6Q2hh
cigpIGNvbnN0DQotCXsNCi0JcmV0dXJuIGlDaGFyOw0KLQl9DQorICB7DQorICByZXR1cm4gaUNo
YXI7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gVElucHV0Rm9ybWF0Q2hhcjo6U3RhdGljKCkNCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CiAvLw0KIFRVaW50IFRJbnB1dEZvcm1hdENoYXI6OlN0YXRpYygpIGNvbnN0DQotCXsNCi0JcmV0
dXJuIGlTdGF0aWM7DQotCX0NCisgIHsNCisgIHJldHVybiBpU3RhdGljOw0KKyAgfQ0KIA0KIC8v
ID09PT09PT09PT09PT09PT09IE1FTUJFUiBGVU5DVElPTlMgPT09PT09PT09PT09PT09PT09PT09
PT0NCiANCkBAIC0yMzYsMjggKzIzNiwyOCBAQCBUVWludCBUSW5wdXRGb3JtYXRDaGFyOjpTdGF0
aWMoKSBjb25zdA0KIC8vIG1pZ2h0IGxlYXZlLg0KIC8vDQogVFN0YXRpY0NoYXI6OlRTdGF0aWND
aGFyKCBUVWludCBhQ2hhciwgVEludCBhUG9zICkNCi0JOiBpQ2hhciggYUNoYXIgKQ0KLQksIGlQ
b3MoIGFQb3MgKQ0KLQl7DQotCX0NCisgIDogaUNoYXIoIGFDaGFyICkNCisgICwgaVBvcyggYVBv
cyApDQorICB7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gVFN0YXRpY0NoYXI6OkNoYXINCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAv
Lw0KIFRVaW50IFRTdGF0aWNDaGFyOjpDaGFyKCkgY29uc3QNCi0Jew0KLQlyZXR1cm4gaUNoYXI7
CQ0KLQl9DQorICB7DQorICByZXR1cm4gaUNoYXI7IA0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIFRTdGF0
aWNDaGFyOjpQb3MNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRJbnQgVFN0YXRpY0NoYXI6OlBvcygpIGNvbnN0DQot
CXsNCi0JcmV0dXJuIGlQb3M7CQ0KLQl9DQorICB7DQorICByZXR1cm4gaVBvczsgIA0KKyAgfQ0K
IA0KIC8vID09PT09PT09PT09PT09PT09IE1FTUJFUiBGVU5DVElPTlMgPT09PT09PT09PT09PT09
PT09PT09PT0NCiANCkBAIC0yNjUsOTkgKzI2NSwxMTIgQEAgVEludCBUU3RhdGljQ2hhcjo6UG9z
KCkgY29uc3QNCiAvLyBtaWdodCBsZWF2ZS4NCiAvLw0KIENJbnB1dEZvcm1hdEhhbmRsZXI6OkNJ
bnB1dEZvcm1hdEhhbmRsZXIoKQ0KLQk6IGlQb3N0Rml4KCBLSW5wdXRGb3JtYXROb25lICkNCisg
IDogaVBvc3RGaXgoIEtJbnB1dEZvcm1hdE5vbmUgKQ0KICAgICB7DQotCX0NCisgIH0NCiANCiAv
LyBFUE9DIGRlZmF1bHQgY29uc3RydWN0b3IgY2FuIGxlYXZlLg0KIHZvaWQgQ0lucHV0Rm9ybWF0
SGFuZGxlcjo6Q29uc3RydWN0TA0KLQkoIGNvbnN0IFREZXNDJiBhRm9ybWF0U3RyaW5nKQ0KKyAg
KCBjb25zdCBURGVzQyYgYUZvcm1hdFN0cmluZykNCisgICAgew0KKw0KKyAgQ0FycmF5Rml4Rmxh
dDxUSW50Piogc3RhdGljcyA9IG5ldyggRUxlYXZlIClDQXJyYXlGaXhGbGF0PFRJbnQ+KCAzICk7
DQorICBDbGVhbnVwU3RhY2s6OlB1c2hMKCBzdGF0aWNzICk7DQorICANCisgIC8vIGNvbGxlY3Qg
dGhlIGluZGV4ZXMgb2Ygc3RhdGljIGNoYXJhY3RlcnMNCisgIFRCb29sIG1hcmsgPSBFRmFsc2U7
DQorICBUSW50IGxlbmd0aCA9IGFGb3JtYXRTdHJpbmcuTGVuZ3RoKCk7DQorICBmb3IgKCBUSW50
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysgKQ0KKyAgICB7DQorICAgIGlmICggbWFyayApIC8vIHdh
cyB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIHByZWZpeD8NCisgICAgICB7DQorICAgICAgbWFyayA9
IEVGYWxzZTsNCisgICAgICBzdGF0aWNzLT5BcHBlbmRMKCBpICk7DQorICAgICAgfQ0KKyAgICBl
bHNlDQorICAgICAgeyAgIC8vIGlzIGl0IHByZWZpeD8NCisgICAgICBtYXJrID0gKCBhRm9ybWF0
U3RyaW5nWyBpIF0gPT0gS0lucHV0Rm9ybWF0U3RhdGljICk7DQorICAgICAgfQ0KKyAgICB9DQor
DQorICBUSW50IG51bWJlck9mU3RhdGljcyA9IHN0YXRpY3MtPkNvdW50KCk7DQorICBpTWluTGVu
Z3RoID0gbGVuZ3RoIC0gbnVtYmVyT2ZTdGF0aWNzOw0KKyAgaU1heExlbmd0aCA9IGlNaW5MZW5n
dGg7DQorDQorICAvLyAqZiBhbmQgbmYgaGFuZGxpbmcgDQorICBpZiAoIGxlbmd0aCA+IDEgJiYg
ICAgICAgIC8vIGxvbmdlciB0aGFuIG9uZSBjaGFyYWN0ZXINCisgICAgICggIW51bWJlck9mU3Rh
dGljcyB8fCAgICAvLyB0aGVyZSBhcmUgbm8gc3RhdGljcywgb3IgaXQgaXNuJ3Qgc3RhdGljDQor
ICAgICAgIHN0YXRpY3MtPkF0KCBudW1iZXJPZlN0YXRpY3MgLSAxICkgIT0gbGVuZ3RoIC0gMiAp
ICkNCiAgICAgew0KKyAgICBpZiAoIGFGb3JtYXRTdHJpbmdbIGxlbmd0aCAtIDIgXSA9PSBLSW5w
dXRGb3JtYXRNdWx0aXBsaWVyICkgIC8vICpmPw0KKyAgICAgIHsNCisgICAgICBpUG9zdEZpeCA9
IGFGb3JtYXRTdHJpbmdbICggLS1sZW5ndGggKS0tIF07DQorICAgICAgaU1pbkxlbmd0aCA9IGxl
bmd0aCAtIG51bWJlck9mU3RhdGljczsNCisgICAgICBpTWF4TGVuZ3RoID0gS0luZmluaXRlTGVu
Z3RoOw0KKyAgICAgIH0NCisgICAgZWxzZQ0KKyAgICAgIHsNCisgICAgICBUQ2hhciBuKCBhRm9y
bWF0U3RyaW5nWyBsZW5ndGggLSAyIF0gKTsNCisgICAgICBpZiAoIG4uSXNEaWdpdCgpICYmIG4g
IT0gJzAnICkgIC8vIG5mPw0KKyAgICAgICAgew0KKyAgICAgICAgaVBvc3RGaXggPSBhRm9ybWF0
U3RyaW5nWyAoIC0tbGVuZ3RoICktLSBdOw0KKyAgICAgICAgaU1heExlbmd0aCA9IGxlbmd0aCAt
IG51bWJlck9mU3RhdGljcyArIG4uR2V0TnVtZXJpY1ZhbHVlKCk7DQorICAgICAgICB9DQorICAg
ICAgZWxzZQ0KKyAgICAgICAgew0KKyAgICAgICAgLy8gSWYgaXQgaXMgbm90IGEgIioiIG9yIG51
bWVyaWMgY2hhcmFjdGVyIA0KKyAgICAgICAgLy8gVGVzdCBmb3IgdmFsaWQgY2hhcmFjdGVyIGhl
cmUuDQorICAgICAgICAvLyBUaGVuIGFwcGx5IHRoZSBkZWZhdWx0IHZhbHVlIG9mIFdBUCBDU1Mg
IipNIi4gDQorICAgICAgICBpZiggIW4uSXNBbHBoYSgpICYmIChsZW5ndGggPiAwICkgKQ0KKyAg
ICAgICAgICAgIHsNCisgICAgICAgICAgICBpTWluTGVuZ3RoID0gMDsgLy9BbGxvdyB1c2VyIHRv
IGdldCBvdXQgb2YgaW5wdXQgYm94DQorICAgICAgICAgICAgaU1heExlbmd0aCA9IEtJbmZpbml0
ZUxlbmd0aDsgLy8gQXMgcGVyICIqTSIgc3ludGF4DQorICAgICAgICAgICAgaVBvc3RGaXggPSAn
TScgOw0KKyAgICAgICAgICAgIGxlbmd0aCAgPSAwOyAvL0F2b2lkIGluaXRpYWxpemluZyB0aGUg
aU1hc2sgbGF0ZXIgb24uDQorICAgICAgfQ0KKyAgICAgICAgfS8vZW5kIGVsc2UNCisgICAgfSAv
LyBlbmQgb3V0ZXIgZWxzZQ0KKyAgICB9DQogDQotCUNBcnJheUZpeEZsYXQ8VEludD4qIHN0YXRp
Y3MgPSBuZXcoIEVMZWF2ZSApQ0FycmF5Rml4RmxhdDxUSW50PiggMyApOw0KLQlDbGVhbnVwU3Rh
Y2s6OlB1c2hMKCBzdGF0aWNzICk7DQotCQ0KLQkvLyBjb2xsZWN0IHRoZSBpbmRleGVzIG9mIHN0
YXRpYyBjaGFyYWN0ZXJzDQotCVRCb29sIG1hcmsgPSBFRmFsc2U7DQotCVRJbnQgbGVuZ3RoID0g
YUZvcm1hdFN0cmluZy5MZW5ndGgoKTsNCi0JZm9yICggVEludCBpID0gMDsgaSA8IGxlbmd0aDsg
aSsrICkNCi0JCXsNCi0JCWlmICggbWFyayApCS8vIHdhcyB0aGUgcHJldmlvdXMgY2hhcmFjdGVy
IHByZWZpeD8NCi0JCQl7DQotCQkJbWFyayA9IEVGYWxzZTsNCi0JCQlzdGF0aWNzLT5BcHBlbmRM
KCBpICk7DQotCQkJfQ0KLQkJZWxzZQ0KLQkJCXsJCS8vIGlzIGl0IHByZWZpeD8NCi0JCQltYXJr
ID0gKCBhRm9ybWF0U3RyaW5nWyBpIF0gPT0gS0lucHV0Rm9ybWF0U3RhdGljICk7DQotCQkJfQ0K
LQkJfQ0KLQ0KLQlUSW50IG51bWJlck9mU3RhdGljcyA9IHN0YXRpY3MtPkNvdW50KCk7DQotCWlN
aW5MZW5ndGggPSBsZW5ndGggLSBudW1iZXJPZlN0YXRpY3M7DQotCWlNYXhMZW5ndGggPSBpTWlu
TGVuZ3RoOw0KLQ0KLQkvLyAqZiBhbmQgbmYgaGFuZGxpbmcJDQotCWlmICggbGVuZ3RoID4gMSAm
JgkJCQkvLyBsb25nZXIgdGhhbiBvbmUgY2hhcmFjdGVyDQotCQkgKCAhbnVtYmVyT2ZTdGF0aWNz
IHx8CQkvLyB0aGVyZSBhcmUgbm8gc3RhdGljcywgb3IgaXQgaXNuJ3Qgc3RhdGljDQotCQkgICBz
dGF0aWNzLT5BdCggbnVtYmVyT2ZTdGF0aWNzIC0gMSApICE9IGxlbmd0aCAtIDIgKSApDQotCQl7
DQotCQlpZiAoIGFGb3JtYXRTdHJpbmdbIGxlbmd0aCAtIDIgXSA9PSBLSW5wdXRGb3JtYXRNdWx0
aXBsaWVyICkJLy8gKmY/DQotCQkJew0KLQkJCWlQb3N0Rml4ID0gYUZvcm1hdFN0cmluZ1sgKCAt
LWxlbmd0aCApLS0gXTsNCi0JCQlpTWluTGVuZ3RoID0gbGVuZ3RoIC0gbnVtYmVyT2ZTdGF0aWNz
Ow0KLQkJCWlNYXhMZW5ndGggPSBLSW5maW5pdGVMZW5ndGg7DQotCQkJfQ0KLQkJZWxzZQ0KLQkJ
CXsNCi0JCQlUQ2hhciBuKCBhRm9ybWF0U3RyaW5nWyBsZW5ndGggLSAyIF0gKTsNCi0JCQlpZiAo
IG4uSXNEaWdpdCgpICYmIG4gIT0gJzAnICkJLy8gbmY/DQotCQkJCXsNCi0JCQkJaVBvc3RGaXgg
PSBhRm9ybWF0U3RyaW5nWyAoIC0tbGVuZ3RoICktLSBdOw0KLQkJCQlpTWF4TGVuZ3RoID0gbGVu
Z3RoIC0gbnVtYmVyT2ZTdGF0aWNzICsgbi5HZXROdW1lcmljVmFsdWUoKTsNCi0JCQkJfQ0KLQkJ
CX0NCi0JCX0NCi0NCi0JLy8gYWxsb2NhdGUgbWVtb3J5IGZvciBtZW1iZXJzDQotCWlNYXNrID0g
SEJ1ZkM6Ok5ld0woIGxlbmd0aCAtIG51bWJlck9mU3RhdGljcyApOwkvLyBleGNlcHQgc3RhdGlj
IHRleHQNCi0JaVN0YXRpYyA9IG5ldyggRUxlYXZlIClDQXJyYXlGaXhGbGF0PFRTdGF0aWNDaGFy
PiggMyApOw0KLQ0KLQkvLyBjb3B5IGFGb3JtYXRTdHJpbmcgdG8gaU1hc2sgZXhjZXB0IHN0YXRp
YyB0ZXh0DQotCVRJbnQgbmV4dFN0YXRpYyA9IDA7DQotCWZvciAoIFRJbnQgaiA9IDA7IGogPCBs
ZW5ndGg7IGorKyApDQotCQl7DQotCQlpZiAoIG5leHRTdGF0aWMgPCBudW1iZXJPZlN0YXRpY3Mg
JiYNCi0JCQkgaiA9PSBzdGF0aWNzLT5BdCggbmV4dFN0YXRpYyApICkJLy8gaXMgaXQgc3RhdGlj
Pw0KLQkJCXsNCi0JCQkJbmV4dFN0YXRpYysrOw0KLQkJCQlpU3RhdGljLT5BcHBlbmRMDQotCQkJ
CQkoIFRTdGF0aWNDaGFyKCBhRm9ybWF0U3RyaW5nWyBqIF0sIGogLSBuZXh0U3RhdGljICkgKTsN
Ci0JCQl9DQotCQllbHNlDQotCQkJew0KLQkJCWlNYXNrLT5EZXMoKS5BcHBlbmQoIGFGb3JtYXRT
dHJpbmdbIGogXSApOw0KLQkJCX0NCi0JCX0NCisgIC8vIGFsbG9jYXRlIG1lbW9yeSBmb3IgbWVt
YmVycw0KKyAgaU1hc2sgPSBIQnVmQzo6TmV3TCggbGVuZ3RoIC0gbnVtYmVyT2ZTdGF0aWNzICk7
ICAvLyBleGNlcHQgc3RhdGljIHRleHQNCisgIGlTdGF0aWMgPSBuZXcoIEVMZWF2ZSApQ0FycmF5
Rml4RmxhdDxUU3RhdGljQ2hhcj4oIDMgKTsNCisNCisgIC8vIGNvcHkgYUZvcm1hdFN0cmluZyB0
byBpTWFzayBleGNlcHQgc3RhdGljIHRleHQNCisgIFRJbnQgbmV4dFN0YXRpYyA9IDA7DQorICBm
b3IgKCBUSW50IGogPSAwOyBqIDwgbGVuZ3RoOyBqKysgKQ0KKyAgICB7DQorICAgIGlmICggbmV4
dFN0YXRpYyA8IG51bWJlck9mU3RhdGljcyAmJg0KKyAgICAgICBqID09IHN0YXRpY3MtPkF0KCBu
ZXh0U3RhdGljICkgKSAvLyBpcyBpdCBzdGF0aWM/DQorICAgICAgew0KKyAgICAgICAgbmV4dFN0
YXRpYysrOw0KKyAgICAgICAgaVN0YXRpYy0+QXBwZW5kTA0KKyAgICAgICAgICAoIFRTdGF0aWND
aGFyKCBhRm9ybWF0U3RyaW5nWyBqIF0sIGogLSBuZXh0U3RhdGljICkgKTsNCisgICAgICB9DQor
ICAgIGVsc2UNCisgICAgICB7DQorICAgICAgaU1hc2stPkRlcygpLkFwcGVuZCggYUZvcm1hdFN0
cmluZ1sgaiBdICk7DQorICAgICAgfQ0KKyAgICB9DQogDQotCWlEeW5hbWljID0gSEJ1ZkM6Ok5l
d0woIGlNaW5MZW5ndGggLSBudW1iZXJPZlN0YXRpY3MgKTsNCisgIGlEeW5hbWljID0gSEJ1ZkM6
Ok5ld0woIGlNaW5MZW5ndGggLSBudW1iZXJPZlN0YXRpY3MgKTsNCiANCi0JQ2xlYW51cFN0YWNr
OjpQb3BBbmREZXN0cm95KCk7CS8vIHN0YXRpY3MNCisgIENsZWFudXBTdGFjazo6UG9wQW5kRGVz
dHJveSgpOyAgLy8gc3RhdGljcw0KICAgICB9DQogDQogLy8gVHdvLXBoYXNlZCBjb25zdHJ1Y3Rv
ci4NCiBDSW5wdXRGb3JtYXRIYW5kbGVyKiBDSW5wdXRGb3JtYXRIYW5kbGVyOjpOZXdMQw0KLQko
IGNvbnN0IFREZXNDJiBhRm9ybWF0U3RyaW5nKQ0KKyAgKCBjb25zdCBURGVzQyYgYUZvcm1hdFN0
cmluZykNCiAgICAgew0KLQlDSW5wdXRGb3JtYXRIYW5kbGVyKiBzZWxmID0gbmV3KCBFTGVhdmUg
KUNJbnB1dEZvcm1hdEhhbmRsZXI7DQotCUNsZWFudXBTdGFjazo6UHVzaEwoIHNlbGYgKTsNCisg
IENJbnB1dEZvcm1hdEhhbmRsZXIqIHNlbGYgPSBuZXcoIEVMZWF2ZSApQ0lucHV0Rm9ybWF0SGFu
ZGxlcjsNCisgIENsZWFudXBTdGFjazo6UHVzaEwoIHNlbGYgKTsNCiAgICAgc2VsZi0+Q29uc3Ry
dWN0TCggYUZvcm1hdFN0cmluZyk7DQotCXJldHVybiBzZWxmOw0KKyAgcmV0dXJuIHNlbGY7DQog
ICAgIH0NCiANCiAvLyBUd28tcGhhc2VkIGNvbnN0cnVjdG9yLg0KIENJbnB1dEZvcm1hdEhhbmRs
ZXIqIENJbnB1dEZvcm1hdEhhbmRsZXI6Ok5ld0wNCi0JKCBjb25zdCBURGVzQyYgYUZvcm1hdFN0
cmluZykNCisgICggY29uc3QgVERlc0MmIGFGb3JtYXRTdHJpbmcpDQogICAgIHsNCiAgICAgQ0lu
cHV0Rm9ybWF0SGFuZGxlciogc2VsZiA9IE5ld0xDKCBhRm9ybWF0U3RyaW5nKTsNCiAgICAgQ2xl
YW51cFN0YWNrOjpQb3AoKTsNCkBAIC0zNjcsOSArMzgwLDkgQEAgQ0lucHV0Rm9ybWF0SGFuZGxl
ciogQ0lucHV0Rm9ybWF0SGFuZGxlcg0KIC8vIERlc3RydWN0b3INCiBDSW5wdXRGb3JtYXRIYW5k
bGVyOjp+Q0lucHV0Rm9ybWF0SGFuZGxlcigpDQogICAgIHsNCi0JZGVsZXRlIGlNYXNrOw0KLQlk
ZWxldGUgaVN0YXRpYzsNCi0JZGVsZXRlIGlEeW5hbWljOw0KKyAgZGVsZXRlIGlNYXNrOw0KKyAg
ZGVsZXRlIGlTdGF0aWM7DQorICBkZWxldGUgaUR5bmFtaWM7DQogICAgIH0NCiANCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBA
IC0zOTAsMjY2ICs0MDMsMjY2IEBAIEhCdWZDKiBDSW5wdXRGb3JtYXRIYW5kbGVyOjpHZXRUZXh0
T25seUwNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIENJbnB1dEZvcm1hdEhhbmRsZXI6OlNldFRleHRMKCBj
b25zdCBURGVzQyYgYVRleHQsIFRCb29sIGFOb1ZhbGlkYXRpb24gKQ0KLQl7DQotCWlEeW5hbWlj
LT5EZXMoKS5TZXRMZW5ndGgoIDAgKTsJLy8gaWdub3JlIHByZXZpb3VzIHRleHQNCisgIHsNCisg
IGlEeW5hbWljLT5EZXMoKS5TZXRMZW5ndGgoIDAgKTsgLy8gaWdub3JlIHByZXZpb3VzIHRleHQN
CisNCisgIC8vIGluc2VydCBjaGFycyB3aGlsZSB0aGV5IGFyZSB2YWxpZA0KKyAgVEludCBqKCAw
ICk7DQorICBUSW50IHRleHRMZW5ndGgoIGFUZXh0Lkxlbmd0aCgpICk7DQorICBmb3IgKCA7DQor
ICAgICAgaiA8IHRleHRMZW5ndGggJiYNCisgICAgICAoIGFOb1ZhbGlkYXRpb24gfHwgVmFsaWRh
dGVDaGFyKCBhVGV4dFsgaiBdLCBHZXRGb3JtYXQoIGogKSApICk7DQorICAgICAgaisrICkNCisg
ICAgew0KIA0KLQkvLyBpbnNlcnQgY2hhcnMgd2hpbGUgdGhleSBhcmUgdmFsaWQNCi0JVEludCBq
KCAwICk7DQotCVRJbnQgdGV4dExlbmd0aCggYVRleHQuTGVuZ3RoKCkgKTsNCi0JZm9yICggOw0K
LQkJICBqIDwgdGV4dExlbmd0aCAmJg0KLQkJICAoIGFOb1ZhbGlkYXRpb24gfHwgVmFsaWRhdGVD
aGFyKCBhVGV4dFsgaiBdLCBHZXRGb3JtYXQoIGogKSApICk7DQotCQkgIGorKyApDQotCQl7DQot
DQotCQlpZiAoICFHZXRGb3JtYXQoIGogKS5TdGF0aWMoKSApDQotCQkJew0KLQkJICAgIEluc2Vy
dEwoIGosIGFUZXh0WyBqIF0gKTsJLy8gaW5zZXJ0IG5vbi1zdGF0aWMgY2hhcnMNCi0JCQl9DQot
CQl9DQorICAgIGlmICggIUdldEZvcm1hdCggaiApLlN0YXRpYygpICkNCisgICAgICB7DQorICAg
ICAgICBJbnNlcnRMKCBqLCBhVGV4dFsgaiBdICk7IC8vIGluc2VydCBub24tc3RhdGljIGNoYXJz
DQorICAgICAgfQ0KKyAgICB9DQogDQotCXJldHVybiBqID09IHRleHRMZW5ndGg7DQotCX0NCisg
IHJldHVybiBqID09IHRleHRMZW5ndGg7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0
SGFuZGxlcjo6VGV4dExDDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBIQnVmQyogQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
VGV4dExDKCBUQm9vbCBhUmVhZGFibGUgKSBjb25zdA0KLQl7DQotCUhCdWZDKiB0ZXh0ID0gU3Rh
dGljVGV4dExDKCk7CS8vIGdldCBzdGF0aWMgdGV4dA0KLQlUSW50IHN0YXRpY0xlbmd0aCA9IHRl
eHQtPkxlbmd0aCgpOw0KLQlUSW50IGR5bmFtaWNMZW5ndGggPSBpRHluYW1pYy0+TGVuZ3RoKCk7
DQotCVRJbnQgZHluYW1pY1B0ciggMCApOw0KLQlUSW50IHN0YXRpY1B0ciggMCApOw0KLQlUSW50
IHN0YXRpY0NvdW50ZXIoIDAgKTsNCi0JVEludCBudW1iZXJPZlN0YXRpY3MoIGlTdGF0aWMtPkNv
dW50KCkgKTsNCi0JLy8gaW5zZXJ0IGR5bmFtaWMgdGV4dCBpbnRvIHRoZSBzdGF0aWMgdGV4dCBh
cyBtYW55IGFzIHBvc3NpYmxlDQotCWZvciAoIDsgZHluYW1pY1B0ciA8IGR5bmFtaWNMZW5ndGg7
ICsrZHluYW1pY1B0ciwgKytzdGF0aWNQdHIgKQ0KLQkJew0KLQkJLy8gZmluZCB0aGUgbmV4dCBu
b24tc3RhdGljIHBvc2l0aW9uDQotCQl3aGlsZSAoIHN0YXRpY0NvdW50ZXIgPCBudW1iZXJPZlN0
YXRpY3MgJiYNCi0JCQkJaVN0YXRpYy0+QXQoIHN0YXRpY0NvdW50ZXIgKS5Qb3MoKSA9PSBzdGF0
aWNQdHIgKQ0KLQkJCXsNCi0JCQkrK3N0YXRpY0NvdW50ZXI7DQotCQkJKytzdGF0aWNQdHI7DQot
CQkJfQ0KKyAgew0KKyAgSEJ1ZkMqIHRleHQgPSBTdGF0aWNUZXh0TEMoKTsgLy8gZ2V0IHN0YXRp
YyB0ZXh0DQorICBUSW50IHN0YXRpY0xlbmd0aCA9IHRleHQtPkxlbmd0aCgpOw0KKyAgVEludCBk
eW5hbWljTGVuZ3RoID0gaUR5bmFtaWMtPkxlbmd0aCgpOw0KKyAgVEludCBkeW5hbWljUHRyKCAw
ICk7DQorICBUSW50IHN0YXRpY1B0ciggMCApOw0KKyAgVEludCBzdGF0aWNDb3VudGVyKCAwICk7
DQorICBUSW50IG51bWJlck9mU3RhdGljcyggaVN0YXRpYy0+Q291bnQoKSApOw0KKyAgLy8gaW5z
ZXJ0IGR5bmFtaWMgdGV4dCBpbnRvIHRoZSBzdGF0aWMgdGV4dCBhcyBtYW55IGFzIHBvc3NpYmxl
DQorICBmb3IgKCA7IGR5bmFtaWNQdHIgPCBkeW5hbWljTGVuZ3RoOyArK2R5bmFtaWNQdHIsICsr
c3RhdGljUHRyICkNCisgICAgew0KKyAgICAvLyBmaW5kIHRoZSBuZXh0IG5vbi1zdGF0aWMgcG9z
aXRpb24NCisgICAgd2hpbGUgKCBzdGF0aWNDb3VudGVyIDwgbnVtYmVyT2ZTdGF0aWNzICYmDQor
ICAgICAgICBpU3RhdGljLT5BdCggc3RhdGljQ291bnRlciApLlBvcygpID09IHN0YXRpY1B0ciAp
DQorICAgICAgew0KKyAgICAgICsrc3RhdGljQ291bnRlcjsNCisgICAgICArK3N0YXRpY1B0cjsN
CisgICAgICB9DQogDQotCQlpZiAoIHN0YXRpY1B0ciA8IHN0YXRpY0xlbmd0aCApCS8vIGlzIHRo
ZXJlIHBsYWNlIGZvciBpdD8NCi0JCQl7DQorICAgIGlmICggc3RhdGljUHRyIDwgc3RhdGljTGVu
Z3RoICkgLy8gaXMgdGhlcmUgcGxhY2UgZm9yIGl0Pw0KKyAgICAgIHsNCiAgICAgICAgICAgICAv
KmxpbnQgLWV7MTExfSBBc3NpZ25tZW50IHRvIGNvbnN0IG9iamVjdCAqLw0KLQkJCXRleHQtPkRl
cygpWyBzdGF0aWNQdHIgXSA9IGFSZWFkYWJsZSA/ICggKmlEeW5hbWljIClbIGR5bmFtaWNQdHIg
XQ0KLQkJCQkJCQkJCQkJCSA6IEtPYnNjdXJpbmdDaGFyKClbIDAgXTsNCi0JCQl9DQotCQllbHNl
DQotCQkJew0KLQkJCWJyZWFrOw0KLQkJCX0NCi0JCX0NCi0NCi0JaWYgKCBkeW5hbWljUHRyIDwg
ZHluYW1pY0xlbmd0aCApCS8vIGFwcGVuZCB0aGUgcmVtYWluaW5nIGR5bmFtaWMgdGV4dA0KLQkJ
ew0KLQkJSEJ1ZkMqIG5ld1RleHQgPSB0ZXh0LT5SZUFsbG9jTA0KLQkJCSggc3RhdGljTGVuZ3Ro
ICsgZHluYW1pY0xlbmd0aCAtIGR5bmFtaWNQdHIgKyAxICk7DQotDQotCQlDbGVhbnVwU3RhY2s6
OlBvcCgpOwkJCS8vIHRleHQNCi0JCUNsZWFudXBTdGFjazo6UHVzaEwoIG5ld1RleHQgKTsJLy8g
bmV3VGV4dA0KLQkJdGV4dCA9IG5ld1RleHQ7DQotDQotCQlpZiAoIGFSZWFkYWJsZSApDQotCQkJ
ew0KLQkJCWZvciAoIDsgZHluYW1pY1B0ciA8IGR5bmFtaWNMZW5ndGg7IGR5bmFtaWNQdHIrKyAp
DQotCQkJCXsNCi0JCQkJdGV4dC0+RGVzKCkuQXBwZW5kKCAoICppRHluYW1pYyApWyBkeW5hbWlj
UHRyIF0gKTsNCi0JCQkJfQ0KLQkJCX0NCi0JCWVsc2UNCi0JCQl7DQotCQkJZm9yICggOyBkeW5h
bWljUHRyIDwgZHluYW1pY0xlbmd0aDsgZHluYW1pY1B0cisrICkNCi0JCQkJew0KLQkJCQl0ZXh0
LT5EZXMoKS5BcHBlbmQoIEtPYnNjdXJpbmdDaGFyICk7DQotCQkJCX0NCi0JCQl9DQotCQl9DQot
DQotCXRleHQtPkRlcygpLlplcm9UZXJtaW5hdGUoKTsNCi0JcmV0dXJuIHRleHQ7DQotCX0NCisg
ICAgICB0ZXh0LT5EZXMoKVsgc3RhdGljUHRyIF0gPSBhUmVhZGFibGUgPyAoICppRHluYW1pYyAp
WyBkeW5hbWljUHRyIF0NCisgICAgICAgICAgICAgICAgICAgICAgICAgOiBLT2JzY3VyaW5nQ2hh
cigpWyAwIF07DQorICAgICAgfQ0KKyAgICBlbHNlDQorICAgICAgew0KKyAgICAgIGJyZWFrOw0K
KyAgICAgIH0NCisgICAgfQ0KKw0KKyAgaWYgKCBkeW5hbWljUHRyIDwgZHluYW1pY0xlbmd0aCAp
IC8vIGFwcGVuZCB0aGUgcmVtYWluaW5nIGR5bmFtaWMgdGV4dA0KKyAgICB7DQorICAgIEhCdWZD
KiBuZXdUZXh0ID0gdGV4dC0+UmVBbGxvY0wNCisgICAgICAoIHN0YXRpY0xlbmd0aCArIGR5bmFt
aWNMZW5ndGggLSBkeW5hbWljUHRyICsgMSApOw0KKw0KKyAgICBDbGVhbnVwU3RhY2s6OlBvcCgp
OyAgICAgIC8vIHRleHQNCisgICAgQ2xlYW51cFN0YWNrOjpQdXNoTCggbmV3VGV4dCApOyAvLyBu
ZXdUZXh0DQorICAgIHRleHQgPSBuZXdUZXh0Ow0KKw0KKyAgICBpZiAoIGFSZWFkYWJsZSApDQor
ICAgICAgew0KKyAgICAgIGZvciAoIDsgZHluYW1pY1B0ciA8IGR5bmFtaWNMZW5ndGg7IGR5bmFt
aWNQdHIrKyApDQorICAgICAgICB7DQorICAgICAgICB0ZXh0LT5EZXMoKS5BcHBlbmQoICggKmlE
eW5hbWljIClbIGR5bmFtaWNQdHIgXSApOw0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgZWxz
ZQ0KKyAgICAgIHsNCisgICAgICBmb3IgKCA7IGR5bmFtaWNQdHIgPCBkeW5hbWljTGVuZ3RoOyBk
eW5hbWljUHRyKysgKQ0KKyAgICAgICAgew0KKyAgICAgICAgdGV4dC0+RGVzKCkuQXBwZW5kKCBL
T2JzY3VyaW5nQ2hhciApOw0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfQ0KKw0KKyAgdGV4
dC0+RGVzKCkuWmVyb1Rlcm1pbmF0ZSgpOw0KKyAgcmV0dXJuIHRleHQ7DQorICB9DQogDQogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6SW5zZXJ0TA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogdm9pZCBDSW5w
dXRGb3JtYXRIYW5kbGVyOjpJbnNlcnRMKCBUSW50IGFQb3MsIFRDaGFyIGFDaGFyICkNCi0Jew0K
LQlUQnVmPDE+IGJ1ZjsNCi0JYnVmLkFwcGVuZCggYUNoYXIgKTsNCi0JSW5zZXJ0TCggYVBvcywg
YnVmICk7DQotCX0NCisgIHsNCisgIFRCdWY8MT4gYnVmOw0KKyAgYnVmLkFwcGVuZCggYUNoYXIg
KTsNCisgIEluc2VydEwoIGFQb3MsIGJ1ZiApOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZv
cm1hdEhhbmRsZXI6Okluc2VydEwNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIHZvaWQgQ0lucHV0Rm9ybWF0SGFuZGxl
cjo6SW5zZXJ0TCggVEludCBhUG9zLCBjb25zdCBURGVzQyYgYURlcyApDQotCXsNCi0JVEludCBu
ZXdQb3MgPSBQb3NFeGx1ZGluZ1N0YXRpYyggYVBvcyApOw0KLQlpZiAoIC0xIDwgbmV3UG9zICYm
IG5ld1BvcyA8PSBpRHluYW1pYy0+TGVuZ3RoKCkgKQ0KLQkJew0KLQkJLy8gbWFrZSBzdXJlIHRo
ZXJlJ3MgZW5vdWdoIHNwYWNlDQotCQlUSW50IG5ld0xlbmd0aCA9IGlEeW5hbWljLT5MZW5ndGgo
KSArIGFEZXMuTGVuZ3RoKCk7DQotCQlpZiAoIGlEeW5hbWljLT5EZXMoKS5NYXhMZW5ndGgoKSA8
IG5ld0xlbmd0aCApDQotCQkJew0KLQkJCWlEeW5hbWljID0gaUR5bmFtaWMtPlJlQWxsb2NMKCBu
ZXdMZW5ndGggKTsNCi0JCQl9DQotDQotCQlpRHluYW1pYy0+RGVzKCkuSW5zZXJ0KCBuZXdQb3Ms
IGFEZXMgKTsNCi0JCX0NCi0JfQ0KKyAgew0KKyAgVEludCBuZXdQb3MgPSBQb3NFeGx1ZGluZ1N0
YXRpYyggYVBvcyApOw0KKyAgaWYgKCAtMSA8IG5ld1BvcyAmJiBuZXdQb3MgPD0gaUR5bmFtaWMt
Pkxlbmd0aCgpICkNCisgICAgew0KKyAgICAvLyBtYWtlIHN1cmUgdGhlcmUncyBlbm91Z2ggc3Bh
Y2UNCisgICAgVEludCBuZXdMZW5ndGggPSBpRHluYW1pYy0+TGVuZ3RoKCkgKyBhRGVzLkxlbmd0
aCgpOw0KKyAgICBpZiAoIGlEeW5hbWljLT5EZXMoKS5NYXhMZW5ndGgoKSA8IG5ld0xlbmd0aCAp
DQorICAgICAgew0KKyAgICAgIGlEeW5hbWljID0gaUR5bmFtaWMtPlJlQWxsb2NMKCBuZXdMZW5n
dGggKTsNCisgICAgICB9DQorDQorICAgIGlEeW5hbWljLT5EZXMoKS5JbnNlcnQoIG5ld1Bvcywg
YURlcyApOw0KKyAgICB9DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
RGVsZXRlDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQogLy8NCiBUQm9vbCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpEZWxldGUoIFRJ
bnQgYVBvcywgVEludCBhTGVuZ3RoICkNCi0Jew0KKyAgew0KICAgVEJvb2wgc3RhdHVzID0gRUZh
bHNlOw0KLQlUSW50IG5ld1BvcyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9zICk7DQotCWlmICgg
LTEgPCBuZXdQb3MgJiYgbmV3UG9zICsgYUxlbmd0aCA8PSBpRHluYW1pYy0+TGVuZ3RoKCkgKQ0K
LQkJew0KLQkJaUR5bmFtaWMtPkRlcygpLkRlbGV0ZSggbmV3UG9zLCBhTGVuZ3RoICk7DQorICBU
SW50IG5ld1BvcyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9zICk7DQorICBpZiAoIC0xIDwgbmV3
UG9zICYmIG5ld1BvcyArIGFMZW5ndGggPD0gaUR5bmFtaWMtPkxlbmd0aCgpICkNCisgICAgew0K
KyAgICBpRHluYW1pYy0+RGVzKCkuRGVsZXRlKCBuZXdQb3MsIGFMZW5ndGggKTsNCiAgICAgc3Rh
dHVzID0gRVRydWU7DQotCQl9DQorICAgIH0NCiAgIHJldHVybiBzdGF0dXM7DQotCX0NCisgIH0N
CiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCiAvLyBDSW5wdXRGb3JtYXRIYW5kbGVyOjpTdGF0aWNUZXh0TEMNCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAv
Lw0KIEhCdWZDKiBDSW5wdXRGb3JtYXRIYW5kbGVyOjpTdGF0aWNUZXh0TEMoKSBjb25zdA0KLQl7
DQotCVRJbnQgY291bnQgPSBpU3RhdGljLT5Db3VudCgpOw0KLQlUSW50IGxlbmd0aCA9ICggY291
bnQgKSA/IGlTdGF0aWMtPkF0KCBjb3VudCAtIDEgKS5Qb3MoKSArIDEgOiAwOw0KLQlIQnVmQyog
ZW1wdHkgPSBIQnVmQzo6TmV3TEMoIGxlbmd0aCArIDEgKTsNCi0JZW1wdHktPkRlcygpLkZpbGwo
ICcgJywgbGVuZ3RoICk7DQotCWZvciAoIFRJbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrICkNCi0J
CXsNCi0JCVRTdGF0aWNDaGFyIHN0YXRpY0NoYXIgPSBpU3RhdGljLT5BdCggaSApOw0KKyAgew0K
KyAgVEludCBjb3VudCA9IGlTdGF0aWMtPkNvdW50KCk7DQorICBUSW50IGxlbmd0aCA9ICggY291
bnQgKSA/IGlTdGF0aWMtPkF0KCBjb3VudCAtIDEgKS5Qb3MoKSArIDEgOiAwOw0KKyAgSEJ1ZkMq
IGVtcHR5ID0gSEJ1ZkM6Ok5ld0xDKCBsZW5ndGggKyAxICk7DQorICBlbXB0eS0+RGVzKCkuRmls
bCggJyAnLCBsZW5ndGggKTsNCisgIGZvciAoIFRJbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrICkN
CisgICAgew0KKyAgICBUU3RhdGljQ2hhciBzdGF0aWNDaGFyID0gaVN0YXRpYy0+QXQoIGkgKTsN
CiAgICAgICAgIC8qbGludCAtZXsxMTF9IEFzc2lnbm1lbnQgdG8gY29uc3Qgb2JqZWN0ICovDQot
CQllbXB0eS0+RGVzKClbIHN0YXRpY0NoYXIuUG9zKCkgXSA9DQotCQkJU1RBVElDX0NBU1QoIFRV
aW50MTYsIHN0YXRpY0NoYXIuQ2hhcigpICk7DQotCQl9DQotDQotCWVtcHR5LT5EZXMoKS5aZXJv
VGVybWluYXRlKCk7DQotCXJldHVybiBlbXB0eTsNCi0JfQ0KKyAgICBlbXB0eS0+RGVzKClbIHN0
YXRpY0NoYXIuUG9zKCkgXSA9DQorICAgICAgU1RBVElDX0NBU1QoIFRVaW50MTYsIHN0YXRpY0No
YXIuQ2hhcigpICk7DQorICAgIH0NCisNCisgIGVtcHR5LT5EZXMoKS5aZXJvVGVybWluYXRlKCk7
DQorICByZXR1cm4gZW1wdHk7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxl
cjo6TnVtYmVyT2ZTdGF0aWMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRJbnQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
TnVtYmVyT2ZTdGF0aWMoKSBjb25zdA0KLQl7DQotCXJldHVybiBpU3RhdGljLT5Db3VudCgpOw0K
LQl9DQorICB7DQorICByZXR1cm4gaVN0YXRpYy0+Q291bnQoKTsNCisgIH0NCiANCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAv
LyBDSW5wdXRGb3JtYXRIYW5kbGVyOjpHZXRGb3JtYXQNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRJbnB1dEZvcm1h
dENoYXIgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6R2V0Rm9ybWF0KCBUSW50IGFJbmRleCApIGNvbnN0
DQotCXsNCi0JVFVpbnQgY29kZSA9IEtJbnB1dEZvcm1hdE5vbmU7DQotCWlmICggLTEgPCBhSW5k
ZXggKQ0KLQkJew0KLQkJaWYgKCBhSW5kZXggPCBpTWFzay0+TGVuZ3RoKCkgKQkJLy8gaXMgaXQg
aW4gdGhlIG1hc2s/DQotCQkJew0KLQkJCWNvZGUgPSAoICppTWFzayApWyBhSW5kZXggXTsNCi0J
CQl9DQotCQllbHNlDQotCQkJew0KLQkJCWlmICggYUluZGV4IDwgaU1heExlbmd0aCB8fA0KLQkJ
CQkgaU1heExlbmd0aCA9PSBLSW5maW5pdGVMZW5ndGggKQkJLy8gaXMgaXQgdGhlIHBvc3RmaXg/
DQotCQkJCXsNCi0JCQkJY29kZSA9IGlQb3N0Rml4Ow0KLQkJCQl9DQotCQkJfQ0KLQkJfQ0KLQ0K
LQlUSW50IHN0YXRpY0NoYXIgPSAwOw0KLQlpZiAoIGNvZGUgPT0gS0lucHV0Rm9ybWF0U3RhdGlj
ICkJCQkvLyBpcyBpdCBzdGF0aWM/DQotCQl7DQotCQlmb3IgKCBUSW50IGkgPSBpU3RhdGljLT5D
b3VudCgpIC0gMTsgaSA+IC0xOyBpLS0gKQ0KLQkJCXsNCi0JCQlpZiAoIGlTdGF0aWMtPkF0KCBp
ICkuUG9zKCkgPT0gYUluZGV4ICkNCi0JCQkJew0KLQkJCQlzdGF0aWNDaGFyID0gaVN0YXRpYy0+
QXQoIGkgKS5DaGFyKCk7DQotCQkJCWJyZWFrOw0KLQkJCQl9DQotCQkJfQ0KLQkJfQ0KKyAgew0K
KyAgVFVpbnQgY29kZSA9IEtJbnB1dEZvcm1hdE5vbmU7DQorICBpZiAoIC0xIDwgYUluZGV4ICkN
CisgICAgew0KKyAgICBpZiAoIGFJbmRleCA8IGlNYXNrLT5MZW5ndGgoKSApICAgLy8gaXMgaXQg
aW4gdGhlIG1hc2s/DQorICAgICAgew0KKyAgICAgIGNvZGUgPSAoICppTWFzayApWyBhSW5kZXgg
XTsNCisgICAgICB9DQorICAgIGVsc2UNCisgICAgICB7DQorICAgICAgaWYgKCBhSW5kZXggPCBp
TWF4TGVuZ3RoIHx8DQorICAgICAgICAgaU1heExlbmd0aCA9PSBLSW5maW5pdGVMZW5ndGggKSAg
ICAvLyBpcyBpdCB0aGUgcG9zdGZpeD8NCisgICAgICAgIHsNCisgICAgICAgIGNvZGUgPSBpUG9z
dEZpeDsNCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0NCisNCisgIFRJbnQgc3RhdGljQ2hh
ciA9IDA7DQorICBpZiAoIGNvZGUgPT0gS0lucHV0Rm9ybWF0U3RhdGljICkgICAgIC8vIGlzIGl0
IHN0YXRpYz8NCisgICAgew0KKyAgICBmb3IgKCBUSW50IGkgPSBpU3RhdGljLT5Db3VudCgpIC0g
MTsgaSA+IC0xOyBpLS0gKQ0KKyAgICAgIHsNCisgICAgICBpZiAoIGlTdGF0aWMtPkF0KCBpICku
UG9zKCkgPT0gYUluZGV4ICkNCisgICAgICAgIHsNCisgICAgICAgIHN0YXRpY0NoYXIgPSBpU3Rh
dGljLT5BdCggaSApLkNoYXIoKTsNCisgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAg
IH0NCisgICAgfQ0KIA0KLQlyZXR1cm4gVElucHV0Rm9ybWF0Q2hhciggY29kZSwgc3RhdGljQ2hh
ciApOw0KLQl9DQorICByZXR1cm4gVElucHV0Rm9ybWF0Q2hhciggY29kZSwgc3RhdGljQ2hhciAp
Ow0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6OlBvc3RGaXgNCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CiAvLw0KIFRJbnB1dEZvcm1hdENoYXIgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6UG9zdEZpeCgpIGNv
bnN0DQotCXsNCi0JcmV0dXJuIGlQb3N0Rml4Ow0KLQl9DQorICB7DQorICByZXR1cm4gaVBvc3RG
aXg7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6TWluTGVuZ3RoDQog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQogLy8NCiBUSW50IENJbnB1dEZvcm1hdEhhbmRsZXI6Ok1pbkxlbmd0aCgpIGNvbnN0DQot
CXsNCi0JcmV0dXJuIGlNaW5MZW5ndGg7DQotCX0NCisgIHsNCisgIHJldHVybiBpTWluTGVuZ3Ro
Ow0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6Ok1heExlbmd0aA0KIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KIC8vDQogVEludCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpNYXhMZW5ndGgoKSBjb25zdA0KLQl7
DQotCXJldHVybiBpTWF4TGVuZ3RoOw0KLQl9DQorICB7DQorICByZXR1cm4gaU1heExlbmd0aDsN
CisgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCiAvLyBDSW5wdXRGb3JtYXRIYW5kbGVyOjpWYWxpZGF0ZUNoYXINCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCiAvLw0KIFRCb29sIENJbnB1dEZvcm1hdEhhbmRsZXI6OlZhbGlkYXRlQ2hhcg0KLQkoIFRD
aGFyIGFDaGFyLCBUSW5wdXRGb3JtYXRDaGFyIGFGb3JtYXRDaGFyICkgY29uc3QNCi0Jew0KKyAg
KCBUQ2hhciBhQ2hhciwgVElucHV0Rm9ybWF0Q2hhciBhRm9ybWF0Q2hhciApIGNvbnN0DQorICB7
DQogICAgIFRCb29sIG1hdGNoKCBFRmFsc2UgKTsNCiANCi0JaWYgKCBhRm9ybWF0Q2hhci5TdGF0
aWMoKSApCQkvLyBpcyBpdCBzdGF0aWM/DQotCQl7DQotCQltYXRjaCA9ICggYUNoYXIgPT0gYUZv
cm1hdENoYXIuU3RhdGljKCkgKTsNCi0JCX0NCi0JZWxzZQ0KLQkJew0KLQkJaWYgKCBhQ2hhci5J
c0RpZ2l0KCkgKQkJLy8gaXMgaXQgbnVtYmVyPw0KLQkJCXsNCi0JCQltYXRjaCA9IGFGb3JtYXRD
aGFyLk51bWVyaWNBbGxvd2VkKCk7DQotCQkJfQ0KLQkJZWxzZQ0KLQkJCXsNCi0JCQlpZiAoIGFD
aGFyLklzQWxwaGEoKSApCS8vIGlzIGl0IGFscGhhYmV0aWNhbD8NCi0JCQkJew0KLQkJCQlUSW5w
dXRGb3JtYXRDaGFyOjpUSW5wdXRDYXNlIGZvcmNlZENhc2UgPSBhRm9ybWF0Q2hhci5Gb3JjZWRD
YXNlKCk7DQotCQkJCW1hdGNoID0gKCBmb3JjZWRDYXNlID09IFRJbnB1dEZvcm1hdENoYXI6OkVJ
bnB1dE5vbmUgKQ0KLQkJCQkJPyBFVHJ1ZQ0KLQkJCQkJOiAoIGFDaGFyLklzVXBwZXIoKSAmJg0K
LQkJCQkJCWZvcmNlZENhc2UgPT0gVElucHV0Rm9ybWF0Q2hhcjo6RUlucHV0VXBwZXJDYXNlICkg
fHwNCi0JCQkJCSAgKCBhQ2hhci5Jc0xvd2VyKCkgJiYNCi0JCQkJCQlmb3JjZWRDYXNlID09IFRJ
bnB1dEZvcm1hdENoYXI6OkVJbnB1dExvd2VyQ2FzZSApOw0KKyAgaWYgKCBhRm9ybWF0Q2hhci5T
dGF0aWMoKSApICAgLy8gaXMgaXQgc3RhdGljPw0KKyAgICB7DQorICAgIG1hdGNoID0gKCBhQ2hh
ciA9PSBhRm9ybWF0Q2hhci5TdGF0aWMoKSApOw0KKyAgICB9DQorICBlbHNlDQorICAgIHsNCisg
ICAgaWYgKCBhQ2hhci5Jc0RpZ2l0KCkgKSAgICAvLyBpcyBpdCBudW1iZXI/DQorICAgICAgew0K
KyAgICAgIG1hdGNoID0gYUZvcm1hdENoYXIuTnVtZXJpY0FsbG93ZWQoKTsNCisgICAgICB9DQor
ICAgIGVsc2UNCisgICAgICB7DQorICAgICAgaWYgKCBhQ2hhci5Jc0FscGhhKCkgKSAgLy8gaXMg
aXQgYWxwaGFiZXRpY2FsPw0KKyAgICAgICAgew0KKyAgICAgICAgVElucHV0Rm9ybWF0Q2hhcjo6
VElucHV0Q2FzZSBmb3JjZWRDYXNlID0gYUZvcm1hdENoYXIuRm9yY2VkQ2FzZSgpOw0KKyAgICAg
ICAgbWF0Y2ggPSAoIGZvcmNlZENhc2UgPT0gVElucHV0Rm9ybWF0Q2hhcjo6RUlucHV0Tm9uZSAp
DQorICAgICAgICAgID8gRVRydWUNCisgICAgICAgICAgOiAoIGFDaGFyLklzVXBwZXIoKSAmJg0K
KyAgICAgICAgICAgIGZvcmNlZENhc2UgPT0gVElucHV0Rm9ybWF0Q2hhcjo6RUlucHV0VXBwZXJD
YXNlICkgfHwNCisgICAgICAgICAgICAoIGFDaGFyLklzTG93ZXIoKSAmJg0KKyAgICAgICAgICAg
IGZvcmNlZENhc2UgPT0gVElucHV0Rm9ybWF0Q2hhcjo6RUlucHV0TG93ZXJDYXNlICk7DQogICAg
ICAgICAvLyBJZiBub24td2VzdGVybiBhbHBoYSB0aGVuIGFzc3VtZSB0aGVyZSBpcyBubyB1cHBl
ciBhbmQgbG93ZXIgY2FzZQ0KICAgICAgICAgLy8gLSBzbyBjaGVjayBmb3IgTGV0dGVyT3RoZXIg
b3IgTGV0dGVyQ2hpbmEvTGV0dGVyVGhhaSAoZGVwZW5kaW5nIHVwb24gdmFyaWFudCkuDQogICAg
ICAgICAvLyBJZiBpbnZhbGlkIGNoYXIgZm9yIGZvcm1hdCwgdmFsdWUgb2YgIm1hdGNoIiBpcyBy
ZXRhaW5lZC4gDQpAQCAtNjc1LDEyOSArNjg4LDEyOSBAQCBUQm9vbCBDSW5wdXRGb3JtYXRIYW5k
bGVyOjpWYWxpZGF0ZUNoYXINCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAq
Lw0KICAgICAgICAgICAgIH0NCi0JCQkJfQ0KLQkJCWVsc2UNCi0JCQkJewkJCQkJLy8gaXQncyBw
dW5jdHVhdG9yIG9yIHN5bWJvbA0KLQkJCQltYXRjaCA9IGFGb3JtYXRDaGFyLlNwZWNpYWxBbGxv
d2VkKCk7DQotCQkJCX0NCi0JCQl9DQotCQl9DQorICAgICAgICB9DQorICAgICAgZWxzZQ0KKyAg
ICAgICAgeyAgICAgICAgIC8vIGl0J3MgcHVuY3R1YXRvciBvciBzeW1ib2wNCisgICAgICAgIG1h
dGNoID0gYUZvcm1hdENoYXIuU3BlY2lhbEFsbG93ZWQoKTsNCisgICAgICAgIH0NCisgICAgICB9
DQorICAgIH0NCiANCi0JcmV0dXJuIG1hdGNoOw0KLQl9DQorICByZXR1cm4gbWF0Y2g7DQorICB9
DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVUZXh0TEMNCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CiAvLw0KIENBcnJheUZpeEZsYXQ8VEludD4qIENJbnB1dEZvcm1hdEhhbmRsZXI6OlZhbGlkYXRl
VGV4dExDKCkgY29uc3QNCi0Jew0KLQlDQXJyYXlGaXhGbGF0PFRJbnQ+KiBlcnJvcnMgPQ0KLQkJ
bmV3KCBFTGVhdmUgKUNBcnJheUZpeEZsYXQ8VEludD4oIDMgKTsNCi0JQ2xlYW51cFN0YWNrOjpQ
dXNoTCggZXJyb3JzICk7DQotDQotCUhCdWZDKiB0ZXh0ID0gVGV4dExDKCk7DQotCVRJbnQgbGVu
Z3RoKCB0ZXh0LT5MZW5ndGgoKSApOw0KLQlmb3IgKCBUSW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KysgKQ0KLQkJew0KLQkJaWYgKCAhVmFsaWRhdGVDaGFyKCAoICp0ZXh0IClbIGkgXSwgR2V0Rm9y
bWF0KCBpICkgKSApDQotCQkJew0KLQkJCWVycm9ycy0+QXBwZW5kTCggaSApOw0KLQkJCX0NCi0J
CX0NCi0JCQ0KLQlDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koKTsJLy8gdGV4dA0KLQlyZXR1
cm4gZXJyb3JzOw0KLQl9DQorICB7DQorICBDQXJyYXlGaXhGbGF0PFRJbnQ+KiBlcnJvcnMgPQ0K
KyAgICBuZXcoIEVMZWF2ZSApQ0FycmF5Rml4RmxhdDxUSW50PiggMyApOw0KKyAgQ2xlYW51cFN0
YWNrOjpQdXNoTCggZXJyb3JzICk7DQorDQorICBIQnVmQyogdGV4dCA9IFRleHRMQygpOw0KKyAg
VEludCBsZW5ndGgoIHRleHQtPkxlbmd0aCgpICk7DQorICBmb3IgKCBUSW50IGkgPSAwOyBpIDwg
bGVuZ3RoOyBpKysgKQ0KKyAgICB7DQorICAgIGlmICggIVZhbGlkYXRlQ2hhciggKCAqdGV4dCAp
WyBpIF0sIEdldEZvcm1hdCggaSApICkgKQ0KKyAgICAgIHsNCisgICAgICBlcnJvcnMtPkFwcGVu
ZEwoIGkgKTsNCisgICAgICB9DQorICAgIH0NCisgICAgDQorICBDbGVhbnVwU3RhY2s6OlBvcEFu
ZERlc3Ryb3koKTsgIC8vIHRleHQNCisgIHJldHVybiBlcnJvcnM7DQorICB9DQogDQogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQog
Ly8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVUZXh0TA0KIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVEJvb2wg
Q0lucHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVUZXh0TCgpIGNvbnN0DQotCXsNCi0JSEJ1ZkMq
IHRleHQgPSBUZXh0TEMoKTsNCi0JVEludCBsZW5ndGgoIHRleHQtPkxlbmd0aCgpICk7DQotCVRJ
bnQgaTsNCi0JZm9yICggaSA9IDA7DQotCQkgIGkgPCBsZW5ndGggJiYgVmFsaWRhdGVDaGFyKCAo
ICp0ZXh0IClbIGkgXSwgR2V0Rm9ybWF0KCBpICkgKTsNCi0JCSAgaSsrICkNCi0JCXt9DQotCQkN
Ci0JQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7CS8vIHRleHQNCi0JcmV0dXJuICggaSA9
PSBsZW5ndGggKTsNCi0JfQ0KKyAgew0KKyAgSEJ1ZkMqIHRleHQgPSBUZXh0TEMoKTsNCisgIFRJ
bnQgbGVuZ3RoKCB0ZXh0LT5MZW5ndGgoKSApOw0KKyAgVEludCBpOw0KKyAgZm9yICggaSA9IDA7
DQorICAgICAgaSA8IGxlbmd0aCAmJiBWYWxpZGF0ZUNoYXIoICggKnRleHQgKVsgaSBdLCBHZXRG
b3JtYXQoIGkgKSApOw0KKyAgICAgIGkrKyApDQorICAgIHt9DQorICAgIA0KKyAgQ2xlYW51cFN0
YWNrOjpQb3BBbmREZXN0cm95KCk7ICAvLyB0ZXh0DQorICByZXR1cm4gKCBpID09IGxlbmd0aCAp
Ow0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6OlBvc0luY2x1ZGluZ1N0
YXRpYw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KIC8vDQogVEludCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpQb3NJbmNsdWRpbmdT
dGF0aWMoIFRJbnQgYVBvc0V4bHVkaW5nU3RhdGljICkNCi0Jew0KLQlUSW50IGkgPSAwOw0KLQlU
SW50IGNvdW50ID0gaVN0YXRpYy0+Q291bnQoKTsNCi0JZm9yICggOyBpIDwgY291bnQ7IGkrKyAp
DQotCQl7DQotCQlpZiAoIGlTdGF0aWMtPkF0KCBpICkuUG9zKCkgPD0gYVBvc0V4bHVkaW5nU3Rh
dGljICkNCi0JCQl7DQotCQkJYVBvc0V4bHVkaW5nU3RhdGljKys7DQotCQkJfQ0KLQkJfQ0KKyAg
ew0KKyAgVEludCBpID0gMDsNCisgIFRJbnQgY291bnQgPSBpU3RhdGljLT5Db3VudCgpOw0KKyAg
Zm9yICggOyBpIDwgY291bnQ7IGkrKyApDQorICAgIHsNCisgICAgaWYgKCBpU3RhdGljLT5BdCgg
aSApLlBvcygpIDw9IGFQb3NFeGx1ZGluZ1N0YXRpYyApDQorICAgICAgew0KKyAgICAgIGFQb3NF
eGx1ZGluZ1N0YXRpYysrOw0KKyAgICAgIH0NCisgICAgfQ0KIA0KLQlyZXR1cm4gYVBvc0V4bHVk
aW5nU3RhdGljOw0KLQl9DQorICByZXR1cm4gYVBvc0V4bHVkaW5nU3RhdGljOw0KKyAgfQ0KIA0K
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6OlBvc0V4bHVkaW5nU3RhdGljDQogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQog
Ly8NCiBUSW50IENJbnB1dEZvcm1hdEhhbmRsZXI6OlBvc0V4bHVkaW5nU3RhdGljKCBUSW50IGFQ
b3NJbmNsdWRpbmdTdGF0aWMgKQ0KLQl7DQotCS8vIGZpbmQgdGhlIG5lYXJlc3Qgc3RhdGljIGNo
YXJhY3RlciBiZWZvcmUgYVBvc0luY2x1ZGluZ1N0YXRpYw0KLQlUSW50IGkgPSBpU3RhdGljLT5D
b3VudCgpIC0gMTsNCi0JZm9yICggOw0KLQkJICBpID4gLTEgJiYgYVBvc0luY2x1ZGluZ1N0YXRp
YyA8IGlTdGF0aWMtPkF0KCBpICkuUG9zKCk7DQotCQkgIGktLSApDQotCQl7CQ0KLQkJfQ0KKyAg
ew0KKyAgLy8gZmluZCB0aGUgbmVhcmVzdCBzdGF0aWMgY2hhcmFjdGVyIGJlZm9yZSBhUG9zSW5j
bHVkaW5nU3RhdGljDQorICBUSW50IGkgPSBpU3RhdGljLT5Db3VudCgpIC0gMTsNCisgIGZvciAo
IDsNCisgICAgICBpID4gLTEgJiYgYVBvc0luY2x1ZGluZ1N0YXRpYyA8IGlTdGF0aWMtPkF0KCBp
ICkuUG9zKCk7DQorICAgICAgaS0tICkNCisgICAgeyANCisgICAgfQ0KIA0KLQlyZXR1cm4gKCBh
UG9zSW5jbHVkaW5nU3RhdGljIC0gaSAtIDEgKTsNCi0JfQ0KKyAgcmV0dXJuICggYVBvc0luY2x1
ZGluZ1N0YXRpYyAtIGkgLSAxICk7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFu
ZGxlcjo6UHJldmlvdXNOb25TdGF0aWMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRJbnQgQ0lucHV0Rm9ybWF0SGFu
ZGxlcjo6UHJldmlvdXNOb25TdGF0aWMoIFRJbnQgYVBvcyApDQotCXsNCi0JVEludCBwb3NFeGx1
ZGluZ1N0YXRpYyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9zICk7DQorICB7DQorICBUSW50IHBv
c0V4bHVkaW5nU3RhdGljID0gUG9zRXhsdWRpbmdTdGF0aWMoIGFQb3MgKTsNCiANCi0JcmV0dXJu
ICggLTEgPCBwb3NFeGx1ZGluZ1N0YXRpYyApDQotCQk/IFBvc0luY2x1ZGluZ1N0YXRpYyggcG9z
RXhsdWRpbmdTdGF0aWMgKQ0KLQkJOiBLTm90Rm91bmQ7DQotCX0NCisgIHJldHVybiAoIC0xIDwg
cG9zRXhsdWRpbmdTdGF0aWMgKQ0KKyAgICA/IFBvc0luY2x1ZGluZ1N0YXRpYyggcG9zRXhsdWRp
bmdTdGF0aWMgKQ0KKyAgICA6IEtOb3RGb3VuZDsNCisgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDSW5wdXRG
b3JtYXRIYW5kbGVyOjpOZXh0Tm9uU3RhdGljDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUSW50IENJbnB1dEZvcm1h
dEhhbmRsZXI6Ok5leHROb25TdGF0aWMoIFRJbnQgYVBvcyApDQotCXsNCi0JVEludCBwb3NFeGx1
ZGluZ1N0YXRpYyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9zICkgKyAxOw0KKyAgew0KKyAgVElu
dCBwb3NFeGx1ZGluZ1N0YXRpYyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9zICkgKyAxOw0KIA0K
LQlyZXR1cm4gKCBwb3NFeGx1ZGluZ1N0YXRpYyA8IGlEeW5hbWljLT5MZW5ndGgoKSApDQotCQk/
IFBvc0luY2x1ZGluZ1N0YXRpYyggcG9zRXhsdWRpbmdTdGF0aWMgKQ0KLQkJOiBLTm90Rm91bmQ7
DQotCX0NCisgIHJldHVybiAoIHBvc0V4bHVkaW5nU3RhdGljIDwgaUR5bmFtaWMtPkxlbmd0aCgp
ICkNCisgICAgPyBQb3NJbmNsdWRpbmdTdGF0aWMoIHBvc0V4bHVkaW5nU3RhdGljICkNCisgICAg
OiBLTm90Rm91bmQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6Rmly
c3RFbXB0eQ0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KIC8vDQogVEludCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpGaXJzdEVtcHR5
KCkNCi0Jew0KLQlyZXR1cm4gUG9zSW5jbHVkaW5nU3RhdGljKCBpRHluYW1pYy0+TGVuZ3RoKCkg
KTsNCi0JfQ0KKyAgew0KKyAgcmV0dXJuIFBvc0luY2x1ZGluZ1N0YXRpYyggaUR5bmFtaWMtPkxl
bmd0aCgpICk7DQorICB9DQogDQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtODA1LDcgKzgxOCw3IEBAIFRJbnQgQ0lu
cHV0Rm9ybWF0SGFuZGxlcjo6Rmlyc3RFbXB0eSgpDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUSW50IENJbnB1dEZv
cm1hdEhhbmRsZXI6OlByZXZpb3VzU3RhdGljKCBUSW50IGFQb3MgKQ0KLQl7DQorICB7DQogICBU
SW50IHByZXZTdGF0aWNQb3MgPSAwOw0KICAgVEludCBpID0gaVN0YXRpYy0+Q291bnQoKSAtIDE7
DQogICBmb3IgKCA7IGkgPj0gMCAmJiAgaVN0YXRpYy0+QXQoIGkgKS5Qb3MoKSA+IGFQb3M7IGkt
LSApDQpAQCAtODE1LDcgKzgyOCw3IEBAIFRJbnQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6UHJldmlv
dXNTdGF0aWMNCiAgICAgcHJldlN0YXRpY1BvcyAgPSBpU3RhdGljLT5BdCggaSApLlBvcygpIDsN
CiAgICAgfQ0KICAgcmV0dXJuIHByZXZTdGF0aWNQb3MgOw0KLQl9DQorICB9DQogDQogDQogDQpA
QCAtODI0LDcgKzgzNyw3IEBAIFRJbnQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6UHJldmlvdXNTdGF0
aWMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCiAvLw0KIFRCb29sIENJbnB1dEZvcm1hdEhhbmRsZXI6OklzUG9zU3RhdGljKCBU
SW50IGFQb3MgKQ0KLQl7DQorICB7DQogICBUSW50IGkgPSBpU3RhdGljLT5Db3VudCgpIC0gMTsN
CiAgIGZvciAoIDsgaSA+PSAwICYmICBpU3RhdGljLT5BdCggaSApLlBvcygpICE9IGFQb3M7IGkt
LSApDQogICAgIHt9DQpAQCAtODMzLDYgKzg0Niw2IEBAIFRCb29sIENJbnB1dEZvcm1hdEhhbmRs
ZXI6OklzUG9zU3RhdGljKCANCiAgICAgcmV0dXJuIEVUcnVlOw0KICAgICB9DQogICByZXR1cm4g
RUZhbHNlOw0KLQl9DQorICB9DQogDQogLy8gIEVuZCBvZiBGaWxlDQo=
</data>
<flag name="review"
          id="4860"
          type_id="1"
          status="+"
          setter="yongjun.zhang"
    />
          </attachment>
      

    </bug>

</bugzilla>