<?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>212110</bug_id>
          
          <creation_ts>2020-05-19 15:56:40 -0700</creation_ts>
          <short_desc>Add _WKDownloadDelegate callback including totalBytesWritten</short_desc>
          <delta_ts>2020-05-19 17:27:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1654214</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-19 15:56:40 -0700</bug_when>
    <thetext>Add _WKDownloadDelegate callback including totalBytesWritten</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654216</commentid>
    <comment_count>1</comment_count>
      <attachid>399778</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-19 16:00:41 -0700</bug_when>
    <thetext>Created attachment 399778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654217</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-19 16:00:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/63358981&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654218</commentid>
    <comment_count>3</comment_count>
      <attachid>399779</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-19 16:09:45 -0700</bug_when>
    <thetext>Created attachment 399779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654219</commentid>
    <comment_count>4</comment_count>
      <attachid>399780</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-19 16:13:52 -0700</bug_when>
    <thetext>Created attachment 399780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654220</commentid>
    <comment_count>5</comment_count>
      <attachid>399781</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-19 16:16:44 -0700</bug_when>
    <thetext>Created attachment 399781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654221</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-05-19 16:17:35 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654245</commentid>
    <comment_count>7</comment_count>
      <attachid>399781</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-05-19 17:15:07 -0700</bug_when>
    <thetext>Comment on attachment 399781
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=399781&amp;action=review

r=me

&gt; Tools/TestWebKitAPI/cocoa/TestDownloadDelegate.mm:49
&gt; +- (void)_download:(_WKDownload *)download didWriteData:(uint64_t)bytesWritten totalBytesWritten:(uint64_t)totalBytesWritten totalBytesExpectedToWrite:(uint64_t)totalBytesExpectedToWrite

I wonder if we can keep the didReceive naming pattern, to match the rest of the API and other networking APIs.

didReceiveBytes:(uint64_t)bytes totalBytes:(uint64_t)totalBytes totalBytesExpected:(uint64_t)totalBytesExpected</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654247</commentid>
    <comment_count>8</comment_count>
      <attachid>399781</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-19 17:18:01 -0700</bug_when>
    <thetext>Comment on attachment 399781
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=399781&amp;action=review

&gt;&gt; Tools/TestWebKitAPI/cocoa/TestDownloadDelegate.mm:49
&gt;&gt; +- (void)_download:(_WKDownload *)download didWriteData:(uint64_t)bytesWritten totalBytesWritten:(uint64_t)totalBytesWritten totalBytesExpectedToWrite:(uint64_t)totalBytesExpectedToWrite
&gt; 
&gt; I wonder if we can keep the didReceive naming pattern, to match the rest of the API and other networking APIs.
&gt; 
&gt; didReceiveBytes:(uint64_t)bytes totalBytes:(uint64_t)totalBytes totalBytesExpected:(uint64_t)totalBytesExpected

Downloads are not like other networking APIs.  This callback is not called until the data is written to disk, just like the CFNetwork callback.  There is a time between when the bytes are received and when they are written, and this should not be called during that time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654248</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-19 17:18:37 -0700</bug_when>
    <thetext>It was a mistake to use the name didWriteData before and this fixes that mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654249</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-19 17:27:24 -0700</bug_when>
    <thetext>Committed r261898: &lt;https://trac.webkit.org/changeset/261898&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399781.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399778</attachid>
            <date>2020-05-19 16:00:41 -0700</date>
            <delta_ts>2020-05-19 16:09:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212110-20200519160040.patch</filename>
            <type>text/plain</type>
            <size>23199</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTA1LTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIF9XS0Rvd25s
b2FkRGVsZWdhdGUgY2FsbGJhY2sgaW5jbHVkaW5nIHRvdGFsQnl0ZXNXcml0dGVuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIxMTAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzYzMzU4OTgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdpdGhvdXQgdGhpcyBuZXcgY2FsbGJhY2ssIGFmdGVyIHJlc3Vt
aW5nIGEgZG93bmxvYWQsIGEgY2xpZW50IGhhcyBubyB3YXkgdG8gdGVsbCB3aGV0aGVyIHRoZSBk
b3dubG9hZCB3YXMgc3VjY2Vzc2Z1bGx5CisgICAgICAgIHJlc3VtZWQgYnkgYSBzZXJ2ZXIgdGhh
dCBoYXMgcHJvcGVyIGV0YWcgYW5kIHJhbmdlIHJlcXVlc3Qgc3VwcG9ydCBvciB3aGV0aGVyIHRo
ZSBkb3dubG9hZCBiZWdhbiBhdCB0aGUgYmVnaW5uaW5nIGFnYWluLgorICAgICAgICBBIGNsaWVu
dCB3YXMgZ3Vlc3NpbmcgdGhhdCB0aGUgZG93bmxvYWQgZGlkIG5vdCByZXN0YXJ0LCBjYXVzaW5n
IGluY29ycmVjdCByZXBvcnRlZCBkb3dubG9hZCBzaXplcyB3aGVuIHRoZSBkb3dubG9hZCBkaWQg
cmVzdGFydC4KKyAgICAgICAgTHVja2lseSwgdGhlIGRhdGEgb24gZGlzayB3YXMgbm90IGNvcnJ1
cHRlZCwganVzdCB0aGUgVUkuICBUaGlzIGFsbG93cyB1cyB0byBmaXggdGhlIFVJLgorCisgICAg
ICAgIFRlc3RpbmcgY292ZXJlZCBieSBleHBhbmRpbmcgdGhlIEFQSSB0ZXN0IGZvciByZXN1bWlu
ZyBkb3dubG9hZHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tCbG9iOjp3cml0ZURvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRl
bGVnYXRlIFVSTFNlc3Npb246ZG93bmxvYWRUYXNrOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3Jp
dHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxv
YWRDbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpEb3dubG9hZENs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRQcm94eTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6Ynl0ZXNMb2FkZWQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRCeXRlc0xvYWRlZCk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1l
c3NhZ2VzLmluOgorCiAyMDIwLTA1LTE5ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBGaXggbWVzc2FnZSBmaWx0ZXIgc2FuZGJveCB2aW9sYXRp
b24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxv
Yi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgz
LDE1ICs0ODMsMTUgQEAgYm9vbCBOZXR3b3JrRGF0YVRhc2tCbG9iOjp3cml0ZURvd25sb2FkKAog
ewogICAgIEFTU0VSVChpc0Rvd25sb2FkKCkpOwogICAgIGludCBieXRlc1dyaXR0ZW4gPSBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZSwgZGF0YSwgYnl0ZXNSZWFkKTsKLSAg
ICBpZiAoYnl0ZXNXcml0dGVuID09IC0xKSB7CisgICAgaWYgKGJ5dGVzV3JpdHRlbiAhPSBieXRl
c1JlYWQpIHsKICAgICAgICAgZGlkRmFpbERvd25sb2FkKGNhbmNlbGxlZEVycm9yKG1fZmlyc3RS
ZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBBU1NFUlQoYnl0
ZXNXcml0dGVuID09IGJ5dGVzUmVhZCk7CisgICAgbV9kb3dubG9hZEJ5dGVzV3JpdHRlbiArPSBi
eXRlc1dyaXR0ZW47CiAgICAgYXV0byogZG93bmxvYWQgPSBtX25ldHdvcmtQcm9jZXNzLT5kb3du
bG9hZE1hbmFnZXIoKS5kb3dubG9hZChtX3BlbmRpbmdEb3dubG9hZElEKTsKICAgICBBU1NFUlQo
ZG93bmxvYWQpOwotICAgIGRvd25sb2FkLT5kaWRSZWNlaXZlRGF0YShieXRlc1dyaXR0ZW4pOwor
ICAgIGRvd25sb2FkLT5kaWRSZWNlaXZlRGF0YShieXRlc1dyaXR0ZW4sIG1fZG93bmxvYWRCeXRl
c1dyaXR0ZW4sIG1fdG90YWxTaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgJ
KHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrQmxvYi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAgcHJpdmF0
ZToKICAgICBsb25nIGxvbmcgbV9yYW5nZUVuZCB7IGtQb3NpdGlvbk5vdFNwZWNpZmllZCB9Owog
ICAgIGxvbmcgbG9uZyBtX3JhbmdlU3VmZml4TGVuZ3RoIHsga1Bvc2l0aW9uTm90U3BlY2lmaWVk
IH07CiAgICAgbG9uZyBsb25nIG1fdG90YWxTaXplIHsgMCB9OworICAgIGxvbmcgbG9uZyBtX2Rv
d25sb2FkQnl0ZXNXcml0dGVuIHsgMCB9OwogICAgIGxvbmcgbG9uZyBtX3RvdGFsUmVtYWluaW5n
U2l6ZSB7IDAgfTsKICAgICBsb25nIGxvbmcgbV9jdXJyZW50SXRlbVJlYWRTaXplIHsgMCB9Owog
ICAgIHVuc2lnbmVkIG1fc2l6ZUl0ZW1Db3VudCB7IDAgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAJKHJldmlzaW9u
IDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDE2ICsxMTcsMTYgQEAgdm9pZCBEb3dubG9h
ZDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oY29ucwogICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2Fk
UHJveHk6OkRpZENyZWF0ZURlc3RpbmF0aW9uKHBhdGgpKTsKIH0KIAotdm9pZCBEb3dubG9hZDo6
ZGlkUmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKQordm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2
ZURhdGEodWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwg
dWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkKIHsKICAgICBpZiAoIW1faGFzUmVj
ZWl2ZWREYXRhKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVE
YXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChpZCA9ICUiIFBSSXU2NCAiKSIsIGRvd25sb2Fk
SUQoKS5kb3dubG9hZElEKCkpOwogICAgICAgICBtX2hhc1JlY2VpdmVkRGF0YSA9IHRydWU7CiAg
ICAgfQogICAgIAotICAgIG1fbW9uaXRvci5kb3dubG9hZFJlY2VpdmVkQnl0ZXMobGVuZ3RoKTsK
KyAgICBtX21vbml0b3IuZG93bmxvYWRSZWNlaXZlZEJ5dGVzKGJ5dGVzV3JpdHRlbik7CiAKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlRGF0YShsZW5ndGgpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlRGF0YShieXRlc1dy
aXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSk7CiB9
CiAKIHZvaWQgRG93bmxvYWQ6OmRpZEZpbmlzaCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2FuZGJv
eEV4dGVuc2lvbihSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiBzYW5kYm94RXh0ZW5zaW9uKSB7
IG1fc2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbik7IH0KICAgICB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGRpZENyZWF0
ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YSh1aW50NjRfdCBsZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodWludDY0X3QgYnl0
ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZSk7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZh
aWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcmVzdW1lRGF0YSk7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI2MTg4
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTUwLDcgKzk1MCw3IEBAIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICBhdXRvKiBkb3dubG9hZCA9IF9zZXNzaW9u
LT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2FkKGRvd25sb2FkSUQp
OwogICAgIGlmICghZG93bmxvYWQpCiAgICAgICAgIHJldHVybjsKLSAgICBkb3dubG9hZC0+ZGlk
UmVjZWl2ZURhdGEoYnl0ZXNXcml0dGVuKTsKKyAgICBkb3dubG9hZC0+ZGlkUmVjZWl2ZURhdGEo
Ynl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZSk7CiB9CiAKIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkb3du
bG9hZFRhc2s6KE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayAqKWRvd25sb2FkVGFzayBkaWRSZXN1
bWVBdE9mZnNldDooaW50NjRfdClmaWxlT2Zmc2V0IGV4cGVjdGVkVG90YWxCeXRlczooaW50NjRf
dClleHBlY3RlZFRvdGFsQnl0ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElEb3dubG9hZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElEb3dubG9hZENsaWVudC5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6
RG93bmxvYWRQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgV2ViS2l0OjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsgY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29t
cGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpDYW5jZWwpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6
OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIHVp
bnQ2NF90KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEb3du
bG9hZFByb3h5JiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6RG93
bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFs
bG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29u
c3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6
RG93bmxvYWRQcm94eSYpIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNyArMTk2LDcg
QEAgdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChXS0NvbnRleAogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShtX2Nv
bnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKEFQSTo6
VVJMUmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZSkucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwogICAgICAgICB9Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpIGZpbmFsCisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5LCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90LCB1aW50NjRfdCkgZmluYWwKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlRGF0YSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
RG93bmxvYWREZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3du
bG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihOU1VSTCAqKXVy
bCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAodm9pZClf
ZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VS
TFJlc3BvbnNlICopcmVzcG9uc2U7CiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilk
b3dubG9hZCBkaWRSZWNlaXZlRGF0YToodWludDY0X3QpbGVuZ3RoOworLSAodm9pZClfZG93bmxv
YWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkV3JpdGVEYXRhOih1aW50NjRfdClieXRlc1dy
aXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46KHVpbnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGU6KHVpbnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0g
KHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24p
KWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25s
b2FkICopZG93bmxvYWQ7CiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9h
ZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBGcm9tIEFQSTo6RG93
bmxvYWRDbGllbnQKICAgICB2b2lkIGRpZFN0YXJ0KERvd25sb2FkUHJveHkmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoRG93bmxv
YWRQcm94eSYsIHVpbnQ2NF90IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShEb3dubG9hZFByb3h5JiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCkgZmluYWw7CiAg
ICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShEb3dubG9hZFBy
b3h5JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxv
d092ZXJ3cml0ZSwgU3RyaW5nKT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2goRG93bmxv
YWRQcm94eSYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwpAQCAtNzQsNiArNzQsNyBAQCBwcml2YXRl
OgogICAgICAgICBib29sIGRvd25sb2FkRGlkU3RhcnQgOiAxOyAgICAgICAgICAgIAogICAgICAg
ICBib29sIGRvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlIDogMTsKICAgICAgICAgYm9vbCBkb3du
bG9hZERpZFJlY2VpdmVEYXRhIDogMTsKKyAgICAgICAgYm9vbCBkb3dubG9hZERpZFdyaXRlRGF0
YVRvdGFsQnl0ZXNXcml0dGVuVG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSA6IDE7CiAgICAgICAg
IGJvb2wgZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFsbG93
T3ZlcndyaXRlIDogMTsKICAgICAgICAgYm9vbCBkb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogICAgICAgICBib29sIGRv
d25sb2FkRGlkRmluaXNoIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0Rvd25sb2FkQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAt
NTMsNiArNTMsNyBAQCBEb3dubG9hZENsaWVudDo6RG93bmxvYWRDbGllbnQoaWQgPF9XS0RvCiAg
ICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRTdGFydCA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZERpZFN0YXJ0OildOwogICAgIG1fZGVsZWdh
dGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVSZXNwb25zZTopXTsKICAg
ICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVEYXRhID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVEYXRhOildOwor
ICAgIG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkV3JpdGVEYXRhVG90YWxCeXRlc1dyaXR0
ZW5Ub3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2Fk
RGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBbGxvd092ZXJ3cml0ZSA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZDpkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTphbGxvd092ZXJ3cml0ZTopXTsKICAgICBtX2Rl
bGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29t
cGxldGlvbkhhbmRsZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGaW5p
c2ggPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWREaWRG
aW5pc2g6KV07CkBAIC05Niw4ICs5Nyw2IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZSgKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2Fk
UHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSAmJiByZXNwb25zZS5pc1N1Y2Nlc3NmdWwo
KSkgewotICAgICAgICBkb3dubG9hZFByb3h5LnNldEV4cGVjdGVkQ29udGVudExlbmd0aChyZXNw
b25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7Ci0gICAgICAgIGRvd25sb2FkUHJveHkuc2V0
Qnl0ZXNMb2FkZWQoMCk7CiAgICAgICAgIGlmIChhdXRvKiBjb250cm9sbGVyID0gc3lzdGVtUHJl
dmlld0NvbnRyb2xsZXIoZG93bmxvYWRQcm94eSkpCiAgICAgICAgICAgICBjb250cm9sbGVyLT51
cGRhdGVQcm9ncmVzcygwKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTA4LDE5ICsxMDcsMjAgQEAg
dm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKAogICAgICAgICBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlUmVzcG9uc2U6
cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlk
UmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVuZ3Ro
KQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSwgdWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3Jp
dHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkKIHsKICNpZiBVU0UoU1lT
VEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxv
YWQoKSkgewotICAgICAgICBkb3dubG9hZFByb3h5LnNldEJ5dGVzTG9hZGVkKGRvd25sb2FkUHJv
eHkuYnl0ZXNMb2FkZWQoKSArIGxlbmd0aCk7CiAgICAgICAgIGlmIChhdXRvKiBjb250cm9sbGVy
ID0gc3lzdGVtUHJldmlld0NvbnRyb2xsZXIoZG93bmxvYWRQcm94eSkpCi0gICAgICAgICAgICBj
b250cm9sbGVyLT51cGRhdGVQcm9ncmVzcyhzdGF0aWNfY2FzdDxmbG9hdD4oZG93bmxvYWRQcm94
eS5ieXRlc0xvYWRlZCgpKSAvIGRvd25sb2FkUHJveHkuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkp
OworICAgICAgICAgICAgY29udHJvbGxlci0+dXBkYXRlUHJvZ3Jlc3Moc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHRvdGFsQnl0ZXNXcml0dGVuKSAvIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMu
ZG93bmxvYWREaWRSZWNlaXZlRGF0YSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndy
YXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZURhdGE6bGVuZ3RoXTsKKyAgICBpZiAobV9k
ZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRXcml0ZURhdGFUb3RhbEJ5dGVzV3JpdHRlblRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGUpCisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFw
cGVyKGRvd25sb2FkUHJveHkpIGRpZFdyaXRlRGF0YTpieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dy
aXR0ZW46dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTp0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlXTsKKyAgICBlbHNlIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3du
bG9hZERpZFJlY2VpdmVEYXRhKQorICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBl
cihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlRGF0YTpieXRlc1dyaXR0ZW5dOwogfQogCiB2b2lk
IERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2NiwxMiArMTY2LDEyIEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGMKICAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJl
Y2VpdmVSZXNwb25zZSgqdGhpcywgcmVzcG9uc2UpOwogfQogCi12b2lkIERvd25sb2FkUHJveHk6
OmRpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0aCkKK3ZvaWQgRG93bmxvYWRQcm94eTo6ZGlk
UmVjZWl2ZURhdGEodWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3Jp
dHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkKIHsKICAgICBpZiAoIW1f
cHJvY2Vzc1Bvb2wpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25s
b2FkQ2xpZW50KCkuZGlkUmVjZWl2ZURhdGEoKnRoaXMsIGxlbmd0aCk7CisgICAgbV9wcm9jZXNz
UG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlRGF0YSgqdGhpcywgYnl0ZXNXcml0dGVu
LCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CiB9CiAKIHZv
aWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVB
c3luYyhEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5h
bWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDEyICs4OSw2
IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZGVzdGluYXRpb25GaWxlbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVzdGluYXRpb25GaWxlbmFtZTsgfQogICAgIHZvaWQgc2V0RGVzdGluYXRpb25GaWxl
bmFtZShjb25zdCBTdHJpbmcmIGQpIHsgbV9kZXN0aW5hdGlvbkZpbGVuYW1lID0gZDsgfQogCi0g
ICAgdWludDY0X3QgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9leHBl
Y3RlZENvbnRlbnRMZW5ndGg7IH0KLSAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudExlbmd0aCh1
aW50NjRfdCBleHBlY3RlZENvbnRlbnRMZW5ndGgpIHsgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgg
PSBleHBlY3RlZENvbnRlbnRMZW5ndGg7IH0KLQotICAgIHVpbnQ2NF90IGJ5dGVzTG9hZGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9ieXRlc0xvYWRlZDsgfQotICAgIHZvaWQgc2V0Qnl0ZXNMb2FkZWQo
dWludDY0X3QgYnl0ZXNMb2FkZWQpIHsgbV9ieXRlc0xvYWRlZCA9IGJ5dGVzTG9hZGVkOyB9Ci0K
ICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgYm9vbCBpc1N5c3RlbVByZXZpZXdEb3dubG9h
ZCgpIGNvbnN0IHsgcmV0dXJuIHJlcXVlc3QoKS5pc1N5c3RlbVByZXZpZXcoKTsgfQogICAgIFdl
YkNvcmU6OlN5c3RlbVByZXZpZXdJbmZvIHN5c3RlbVByZXZpZXdEb3dubG9hZEluZm8oKSBjb25z
dCB7IHJldHVybiByZXF1ZXN0KCkuc3lzdGVtUHJldmlld0luZm8oKTsgfQpAQCAtMTE2LDcgKzEx
MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTdGFydChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYmLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVpbnQ2
NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRv
dGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOwogICAgIHZvaWQgc2hvdWxkRGVjb2RlU291cmNlRGF0
YU9mTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCYgcmVzdWx0KTsKICAgICB2
b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgdm9pZCBk
aWRGaW5pc2goKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjE4ODYp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQCBtZXNzYWdlcyAtPiBEb3du
bG9hZFByb3h5IHsKICAgICBEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFz
eW5jKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5h
bWUpCiAKICAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZSkKLSAgICBEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBsZW5ndGgpCisgICAgRGlkUmVj
ZWl2ZURhdGEodWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRl
biwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkKICAgICBEaWRDcmVhdGVEZXN0
aW5hdGlvbihTdHJpbmcgcGF0aCkKICAgICBEaWRGaW5pc2goKQogICAgIERpZEZhaWwoV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEpCklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNjE4OTIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxOCBAQAorMjAyMC0wNS0xOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIEFkZCBfV0tEb3dubG9hZERlbGVnYXRlIGNhbGxiYWNrIGluY2x1
ZGluZyB0b3RhbEJ5dGVzV3JpdHRlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEyMTEwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzM1ODk4MT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW06CisgICAgICAgIChURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmg6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbToKKyAg
ICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3Rh
bEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0pOgorICAgICAgICAoLVtU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZURhdGE6XSk6IERlbGV0ZWQu
CisKIDIwMjAtMDUtMTkgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW1dQRV0gU3luYyBqaGJ1aWxkIHRvIGZsYXRwYWsKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQkocmV2aXNp
b24gMjYxODg2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3du
bG9hZC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTIyMyw3ICsxMjIzLDcgQEAgVEVTVChfV0tEb3du
bG9hZCwgUmVzdW1lKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CiAgICAgfTsKIAotICAgIGVudW0gY2xhc3MgQ2Fs
bGJhY2sgOiB1aW50OF90IHsgU3RhcnQsIFJlY2VpdmVEYXRhLCBEZWNpZGVEZXN0aW5hdGlvbiwg
Q3JlYXRlRGVzdGluYXRpb24sIENhbmNlbCwgRmluaXNoIH07CisgICAgZW51bSBjbGFzcyBDYWxs
YmFjayA6IHVpbnQ4X3QgeyBTdGFydCwgV3JpdGVEYXRhLCBEZWNpZGVEZXN0aW5hdGlvbiwgQ3Jl
YXRlRGVzdGluYXRpb24sIENhbmNlbCwgRmluaXNoIH07CiAgICAgX19ibG9jayBWZWN0b3I8Q2Fs
bGJhY2s+IGNhbGxiYWNrczsKICAgICBfX2Jsb2NrIGJvb2wgZGlkQ2FuY2VsID0gZmFsc2U7CiAg
ICAgX19ibG9jayBib29sIGRpZEZpbmlzaCA9IGZhbHNlOwpAQCAtMTIzNiw5ICsxMjM2LDExIEBA
IFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxs
YmFjazo6RGVjaWRlRGVzdGluYXRpb24pOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMs
IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpzdWdnZXN0ZWRGaWxlbmFtZV0u
cGF0aCk7CiAgICAgfTsKLSAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRpZFJlY2VpdmVEYXRh
ID0gXihfV0tEb3dubG9hZCAqZG93bmxvYWQsIHVpbnQ2NF90IGxlbmd0aCkgewotICAgICAgICBj
YWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpSZWNlaXZlRGF0YSk7Ci0gICAgICAgIEVYUEVDVF9F
UShsZW5ndGgsIDUwMDB1KTsKKyAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRpZFdyaXRlRGF0
YSA9IF4oX1dLRG93bmxvYWQgKmRvd25sb2FkLCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2
NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRl
KSB7CisgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6OldyaXRlRGF0YSk7CisgICAg
ICAgIEVYUEVDVF9FUShieXRlc1dyaXR0ZW4sIDUwMDB1KTsKKyAgICAgICAgRVhQRUNUX0VRKHRv
dGFsQnl0ZXNXcml0dGVuLCBkaWRDYW5jZWwgPyAxMDAwMHUgOiA1MDAwdSk7CisgICAgICAgIEVY
UEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAxMDAwMHUpOwogICAgICAgICByZWNl
aXZlZERhdGEgPSB0cnVlOwogICAgIH07CiAgICAgZG93bmxvYWREZWxlZ2F0ZS5nZXQoKS5kb3du
bG9hZERpZFN0YXJ0ID0gXihfV0tEb3dubG9hZCAqZG93bmxvYWRGcm9tRGVsZWdhdGUpIHsKQEAg
LTEyNzQsOSArMTI3Niw5IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICBFWFBFQ1Rf
RVEoY2FsbGJhY2tzWzBdLCBDYWxsYmFjazo6U3RhcnQpOwogICAgIEVYUEVDVF9FUShjYWxsYmFj
a3NbMV0sIENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbik7CiAgICAgRVhQRUNUX0VRKGNhbGxi
YWNrc1syXSwgQ2FsbGJhY2s6OkNyZWF0ZURlc3RpbmF0aW9uKTsKLSAgICBFWFBFQ1RfRVEoY2Fs
bGJhY2tzWzNdLCBDYWxsYmFjazo6UmVjZWl2ZURhdGEpOworICAgIEVYUEVDVF9FUShjYWxsYmFj
a3NbM10sIENhbGxiYWNrOjpXcml0ZURhdGEpOwogICAgIEVYUEVDVF9FUShjYWxsYmFja3NbNF0s
IENhbGxiYWNrOjpDYW5jZWwpOwotICAgIEVYUEVDVF9FUShjYWxsYmFja3NbNV0sIENhbGxiYWNr
OjpSZWNlaXZlRGF0YSk7CisgICAgRVhQRUNUX0VRKGNhbGxiYWNrc1s1XSwgQ2FsbGJhY2s6Oldy
aXRlRGF0YSk7CiAgICAgRVhQRUNUX0VRKGNhbGxiYWNrc1s2XSwgQ2FsbGJhY2s6OkZpbmlzaCk7
CiAKICAgICAvLyBHaXZlIENGTmV0d29yayBlbm91Z2ggdGltZSB0byB1bmxpbmsgdGhlIGRvd25s
b2FkZWQgZmlsZSBpZiBpdCB3b3VsZCBoYXZlLgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaAkocmV2aXNpb24gMjYxODg2KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9p
ZCAoXmRvd25sb2FkRGlkU3RhcnQpKF9XS0Rvd25sb2FkICopOwogQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkoX1dLRG93bmxv
YWQgKiwgTlNVUkwgKik7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJl
Y2VpdmVSZXNwb25zZSkoX1dLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqKTsKLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZURhdGEpKF9XS0Rvd25sb2FkICos
IHVpbnQ2NF90KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkV3JpdGVE
YXRhKShfV0tEb3dubG9hZCAqLCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUpKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICosIHZvaWQgKF4pKEJPT0wsIE5T
U3RyaW5nICopKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWRE
aWRGaW5pc2gpKF9XS0Rvd25sb2FkICopOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZv
aWQgKF5kaWRGYWlsV2l0aEVycm9yKShfV0tEb3dubG9hZCAqLCBOU0Vycm9yICopOwpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1t
CShyZXZpc2lvbiAyNjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3du
bG9hZERlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMCArNDYsMTAgQEAgLSAodm9p
ZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYQogICAgICAgICBfZGlkUmVjZWl2ZVJl
c3BvbnNlKGRvd25sb2FkLCByZXNwb25zZSk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tE
b3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVEYXRhOih1aW50NjRfdClsZW5ndGgKKy0gKHZv
aWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YToodWludDY0
X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOih1aW50NjRfdCl0b3RhbEJ5dGVzV3Jp
dHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOih1aW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlCiB7Ci0gICAgaWYgKF9kaWRSZWNlaXZlRGF0YSkKLSAgICAgICAgX2RpZFJlY2Vp
dmVEYXRhKGRvd25sb2FkLCBsZW5ndGgpOworICAgIGlmIChfZGlkV3JpdGVEYXRhKQorICAgICAg
ICBfZGlkV3JpdGVEYXRhKGRvd25sb2FkLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVu
LCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKIH0KIAogLSAodm9pZClfZG93bmxvYWQ6KF9X
S0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wg
YWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399779</attachid>
            <date>2020-05-19 16:09:45 -0700</date>
            <delta_ts>2020-05-19 16:13:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212110-20200519160944.patch</filename>
            <type>text/plain</type>
            <size>24035</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTA1LTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIF9XS0Rvd25s
b2FkRGVsZWdhdGUgY2FsbGJhY2sgaW5jbHVkaW5nIHRvdGFsQnl0ZXNXcml0dGVuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIxMTAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzYzMzU4OTgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdpdGhvdXQgdGhpcyBuZXcgY2FsbGJhY2ssIGFmdGVyIHJlc3Vt
aW5nIGEgZG93bmxvYWQsIGEgY2xpZW50IGhhcyBubyB3YXkgdG8gdGVsbCB3aGV0aGVyIHRoZSBk
b3dubG9hZCB3YXMgc3VjY2Vzc2Z1bGx5CisgICAgICAgIHJlc3VtZWQgYnkgYSBzZXJ2ZXIgdGhh
dCBoYXMgcHJvcGVyIGV0YWcgYW5kIHJhbmdlIHJlcXVlc3Qgc3VwcG9ydCBvciB3aGV0aGVyIHRo
ZSBkb3dubG9hZCBiZWdhbiBhdCB0aGUgYmVnaW5uaW5nIGFnYWluLgorICAgICAgICBBIGNsaWVu
dCB3YXMgZ3Vlc3NpbmcgdGhhdCB0aGUgZG93bmxvYWQgZGlkIG5vdCByZXN0YXJ0LCBjYXVzaW5n
IGluY29ycmVjdCByZXBvcnRlZCBkb3dubG9hZCBzaXplcyB3aGVuIHRoZSBkb3dubG9hZCBkaWQg
cmVzdGFydC4KKyAgICAgICAgTHVja2lseSwgdGhlIGRhdGEgb24gZGlzayB3YXMgbm90IGNvcnJ1
cHRlZCwganVzdCB0aGUgVUkuICBUaGlzIGFsbG93cyB1cyB0byBmaXggdGhlIFVJLgorCisgICAg
ICAgIFRlc3RpbmcgY292ZXJlZCBieSBleHBhbmRpbmcgdGhlIEFQSSB0ZXN0IGZvciByZXN1bWlu
ZyBkb3dubG9hZHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tCbG9iOjp3cml0ZURvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRl
bGVnYXRlIFVSTFNlc3Npb246ZG93bmxvYWRUYXNrOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3Jp
dHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxv
YWRDbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpEb3dubG9hZENs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRQcm94eTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6Ynl0ZXNMb2FkZWQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRCeXRlc0xvYWRlZCk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1l
c3NhZ2VzLmluOgorCiAyMDIwLTA1LTE5ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBGaXggbWVzc2FnZSBmaWx0ZXIgc2FuZGJveCB2aW9sYXRp
b24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxv
Yi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgz
LDE1ICs0ODMsMTUgQEAgYm9vbCBOZXR3b3JrRGF0YVRhc2tCbG9iOjp3cml0ZURvd25sb2FkKAog
ewogICAgIEFTU0VSVChpc0Rvd25sb2FkKCkpOwogICAgIGludCBieXRlc1dyaXR0ZW4gPSBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZSwgZGF0YSwgYnl0ZXNSZWFkKTsKLSAg
ICBpZiAoYnl0ZXNXcml0dGVuID09IC0xKSB7CisgICAgaWYgKGJ5dGVzV3JpdHRlbiAhPSBieXRl
c1JlYWQpIHsKICAgICAgICAgZGlkRmFpbERvd25sb2FkKGNhbmNlbGxlZEVycm9yKG1fZmlyc3RS
ZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBBU1NFUlQoYnl0
ZXNXcml0dGVuID09IGJ5dGVzUmVhZCk7CisgICAgbV9kb3dubG9hZEJ5dGVzV3JpdHRlbiArPSBi
eXRlc1dyaXR0ZW47CiAgICAgYXV0byogZG93bmxvYWQgPSBtX25ldHdvcmtQcm9jZXNzLT5kb3du
bG9hZE1hbmFnZXIoKS5kb3dubG9hZChtX3BlbmRpbmdEb3dubG9hZElEKTsKICAgICBBU1NFUlQo
ZG93bmxvYWQpOwotICAgIGRvd25sb2FkLT5kaWRSZWNlaXZlRGF0YShieXRlc1dyaXR0ZW4pOwor
ICAgIGRvd25sb2FkLT5kaWRSZWNlaXZlRGF0YShieXRlc1dyaXR0ZW4sIG1fZG93bmxvYWRCeXRl
c1dyaXR0ZW4sIG1fdG90YWxTaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgJ
KHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrQmxvYi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAgcHJpdmF0
ZToKICAgICBsb25nIGxvbmcgbV9yYW5nZUVuZCB7IGtQb3NpdGlvbk5vdFNwZWNpZmllZCB9Owog
ICAgIGxvbmcgbG9uZyBtX3JhbmdlU3VmZml4TGVuZ3RoIHsga1Bvc2l0aW9uTm90U3BlY2lmaWVk
IH07CiAgICAgbG9uZyBsb25nIG1fdG90YWxTaXplIHsgMCB9OworICAgIGxvbmcgbG9uZyBtX2Rv
d25sb2FkQnl0ZXNXcml0dGVuIHsgMCB9OwogICAgIGxvbmcgbG9uZyBtX3RvdGFsUmVtYWluaW5n
U2l6ZSB7IDAgfTsKICAgICBsb25nIGxvbmcgbV9jdXJyZW50SXRlbVJlYWRTaXplIHsgMCB9Owog
ICAgIHVuc2lnbmVkIG1fc2l6ZUl0ZW1Db3VudCB7IDAgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAJKHJldmlzaW9u
IDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDE2ICsxMTcsMTYgQEAgdm9pZCBEb3dubG9h
ZDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oY29ucwogICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2Fk
UHJveHk6OkRpZENyZWF0ZURlc3RpbmF0aW9uKHBhdGgpKTsKIH0KIAotdm9pZCBEb3dubG9hZDo6
ZGlkUmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKQordm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2
ZURhdGEodWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwg
dWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkKIHsKICAgICBpZiAoIW1faGFzUmVj
ZWl2ZWREYXRhKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVE
YXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChpZCA9ICUiIFBSSXU2NCAiKSIsIGRvd25sb2Fk
SUQoKS5kb3dubG9hZElEKCkpOwogICAgICAgICBtX2hhc1JlY2VpdmVkRGF0YSA9IHRydWU7CiAg
ICAgfQogICAgIAotICAgIG1fbW9uaXRvci5kb3dubG9hZFJlY2VpdmVkQnl0ZXMobGVuZ3RoKTsK
KyAgICBtX21vbml0b3IuZG93bmxvYWRSZWNlaXZlZEJ5dGVzKGJ5dGVzV3JpdHRlbik7CiAKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlRGF0YShsZW5ndGgpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlRGF0YShieXRlc1dy
aXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSk7CiB9
CiAKIHZvaWQgRG93bmxvYWQ6OmRpZEZpbmlzaCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2FuZGJv
eEV4dGVuc2lvbihSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiBzYW5kYm94RXh0ZW5zaW9uKSB7
IG1fc2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbik7IH0KICAgICB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGRpZENyZWF0
ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YSh1aW50NjRfdCBsZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodWludDY0X3QgYnl0
ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZSk7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZh
aWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcmVzdW1lRGF0YSk7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI2MTg4
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTUwLDcgKzk1MCw3IEBAIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICBhdXRvKiBkb3dubG9hZCA9IF9zZXNzaW9u
LT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2FkKGRvd25sb2FkSUQp
OwogICAgIGlmICghZG93bmxvYWQpCiAgICAgICAgIHJldHVybjsKLSAgICBkb3dubG9hZC0+ZGlk
UmVjZWl2ZURhdGEoYnl0ZXNXcml0dGVuKTsKKyAgICBkb3dubG9hZC0+ZGlkUmVjZWl2ZURhdGEo
Ynl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZSk7CiB9CiAKIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkb3du
bG9hZFRhc2s6KE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayAqKWRvd25sb2FkVGFzayBkaWRSZXN1
bWVBdE9mZnNldDooaW50NjRfdClmaWxlT2Zmc2V0IGV4cGVjdGVkVG90YWxCeXRlczooaW50NjRf
dClleHBlY3RlZFRvdGFsQnl0ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHJldmlzaW9uIDI2
MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRh
c2tTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTc2LDggKzk3NiwxMCBAQCB2b2lkIE5ldHdv
cmtEYXRhVGFza1NvdXA6OndyaXRlRG93bmxvYWRDCiAgICAgZ19vdXRwdXRfc3RyZWFtX3dyaXRl
X2FsbF9maW5pc2gob3V0cHV0U3RyZWFtLCByZXN1bHQsICZieXRlc1dyaXR0ZW4sICZlcnJvci5v
dXRQdHIoKSk7CiAgICAgaWYgKGVycm9yKQogICAgICAgICB0YXNrLT5kaWRGYWlsRG93bmxvYWQo
ZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKHRhc2stPm1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdl
KSk7Ci0gICAgZWxzZQotICAgICAgICB0YXNrLT5kaWRXcml0ZURvd25sb2FkKGJ5dGVzV3JpdHRl
bik7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBJZiBkZXNpcmVkLCBwcm9wZXJseSBy
ZXBvcnQgdGhlIHRvdGFsIGJ5dGVzIHdyaXR0ZW4gYW5kIHRvdGFsIGJ5dGVzIGV4cGVjdGVkIHRv
IHdyaXRlLgorICAgICAgICB0YXNrLT5kaWRXcml0ZURvd25sb2FkKGJ5dGVzV3JpdHRlbiwgMCwg
MCk7CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OndyaXRlRG93bmxvYWQo
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xp
ZW50LmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElEb3dubG9hZENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJL
aXQ6OkRvd25sb2FkUHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkm
IGNoYWxsZW5nZSkgeyBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgdWludDY0X3QpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCB1aW50NjRf
dCwgdWludDY0X3QsIHVpbnQ2NF90KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKFdlYktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6
U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6
OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVE
ZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHJl
dmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFdLQ29udGV4dFNl
dERvd25sb2FkQ2xpZW50KFdLQ29udGV4CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQ
SSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6Y3JlYXRl
KHJlc3BvbnNlKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0K
LSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkgZmluYWwKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0
aCwgdWludDY0X3QsIHVpbnQ2NF90KSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKQogICAgICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25s
b2FkRGVsZWdhdGUuaAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NiArMzUsNyBAQAogLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6KE5TVVJMICopdXJsIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7CiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxv
YWQgKilkb3dubG9hZCBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25z
ZTsKIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVE
YXRhOih1aW50NjRfdClsZW5ndGg7CistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilk
b3dubG9hZCBkaWRXcml0ZURhdGE6KHVpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3Jp
dHRlbjoodWludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZToodWludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfZG93bmxvYWQ6KF9X
S0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wg
YWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXI7
CiAtICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9hZDsKIC0g
KHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6
KE5TRXJyb3IgKillcnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rv
d25sb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvRG93bmxvYWRDbGllbnQuaAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyAr
NDksNyBAQCBwcml2YXRlOgogICAgIC8vIEZyb20gQVBJOjpEb3dubG9hZENsaWVudAogICAgIHZv
aWQgZGlkU3RhcnQoRG93bmxvYWRQcm94eSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiwgdWludDY0X3Qg
bGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkmLCB1
aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KSBmaW5hbDsKICAgICB2b2lkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcp
PiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaChEb3dubG9hZFByb3h5JikgZmluYWw7CiAg
ICAgdm9pZCBkaWRGYWlsKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgZmluYWw7CkBAIC03NCw2ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgZG93
bmxvYWREaWRTdGFydCA6IDE7ICAgICAgICAgICAgCiAgICAgICAgIGJvb2wgZG93bmxvYWREaWRS
ZWNlaXZlUmVzcG9uc2UgOiAxOwogICAgICAgICBib29sIGRvd25sb2FkRGlkUmVjZWl2ZURhdGEg
OiAxOworICAgICAgICBib29sIGRvd25sb2FkRGlkV3JpdGVEYXRhVG90YWxCeXRlc1dyaXR0ZW5U
b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlIDogMTsKICAgICAgICAgYm9vbCBkb3dubG9hZERlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3JpdGUgOiAxOwogICAg
ICAgICBib29sIGRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVD
b21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgZG93bmxvYWREaWRGaW5pc2ggOiAx
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGll
bnQubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0Rvd25sb2FkQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIERvd25s
b2FkQ2xpZW50OjpEb3dubG9hZENsaWVudChpZCA8X1dLRG8KICAgICBtX2RlbGVnYXRlTWV0aG9k
cy5kb3dubG9hZERpZFN0YXJ0ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX2Rvd25sb2FkRGlkU3RhcnQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWRE
aWRSZWNlaXZlUmVzcG9uc2UgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfZG93bmxvYWQ6ZGlkUmVjZWl2ZVJlc3BvbnNlOildOwogICAgIG1fZGVsZWdhdGVNZXRob2Rz
LmRvd25sb2FkRGlkUmVjZWl2ZURhdGEgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihfZG93bmxvYWQ6ZGlkUmVjZWl2ZURhdGE6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMuZG93bmxvYWREaWRXcml0ZURhdGFUb3RhbEJ5dGVzV3JpdHRlblRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvV3JpdGUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxv
YWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGU6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZUFsbG93T3ZlcndyaXRlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lOmFsbG93T3ZlcndyaXRlOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLmRvd25s
b2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb21wbGV0aW9uSGFuZGxl
ciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZDpkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXTsK
ICAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZEZpbmlzaCA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZERpZEZpbmlzaDopXTsKQEAgLTk2LDgg
Kzk3LDYgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKAogewogI2lm
IFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZp
ZXdEb3dubG9hZCgpICYmIHJlc3BvbnNlLmlzU3VjY2Vzc2Z1bCgpKSB7Ci0gICAgICAgIGRvd25s
b2FkUHJveHkuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKHJlc3BvbnNlLmV4cGVjdGVkQ29udGVu
dExlbmd0aCgpKTsKLSAgICAgICAgZG93bmxvYWRQcm94eS5zZXRCeXRlc0xvYWRlZCgwKTsKICAg
ICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBzeXN0ZW1QcmV2aWV3Q29udHJvbGxlcihkb3du
bG9hZFByb3h5KSkKICAgICAgICAgICAgIGNvbnRyb2xsZXItPnVwZGF0ZVByb2dyZXNzKDApOwog
ICAgICAgICByZXR1cm47CkBAIC0xMDgsMTkgKzEwNywyMCBAQCB2b2lkIERvd25sb2FkQ2xpZW50
OjpkaWRSZWNlaXZlUmVzcG9uc2UoCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFw
cGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3Bv
bnNlKCldOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShEb3dubG9h
ZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpCit2b2lkIERvd25sb2FkQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRf
dCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBp
ZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7Ci0gICAgICAgIGRv
d25sb2FkUHJveHkuc2V0Qnl0ZXNMb2FkZWQoZG93bmxvYWRQcm94eS5ieXRlc0xvYWRlZCgpICsg
bGVuZ3RoKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBzeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlcihkb3dubG9hZFByb3h5KSkKLSAgICAgICAgICAgIGNvbnRyb2xsZXItPnVwZGF0ZVBy
b2dyZXNzKHN0YXRpY19jYXN0PGZsb2F0Pihkb3dubG9hZFByb3h5LmJ5dGVzTG9hZGVkKCkpIC8g
ZG93bmxvYWRQcm94eS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7CisgICAgICAgICAgICBjb250
cm9sbGVyLT51cGRhdGVQcm9ncmVzcyhzdGF0aWNfY2FzdDxmbG9hdD4odG90YWxCeXRlc1dyaXR0
ZW4pIC8gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAjZW5kaWYKIAotICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVE
YXRhKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5
KSBkaWRSZWNlaXZlRGF0YTpsZW5ndGhdOworICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3du
bG9hZERpZFdyaXRlRGF0YVRvdGFsQnl0ZXNXcml0dGVuVG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZSkKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkg
ZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzV3Jp
dHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGVd
OworICAgIGVsc2UgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZURhdGEp
CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRp
ZFJlY2VpdmVEYXRhOmJ5dGVzV3JpdHRlbl07CiB9CiAKIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDEy
ICsxNjYsMTIgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoYwogICAg
IG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKCp0aGlz
LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEodWlu
dDY0X3QgbGVuZ3RoKQordm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlRGF0YSh1aW50NjRf
dCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQogewogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNl
aXZlRGF0YSgqdGhpcywgbGVuZ3RoKTsKKyAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVu
dCgpLmRpZFJlY2VpdmVEYXRhKCp0aGlzLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVu
LCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5Ojpk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKERvd25sb2FkSUQgZG93
bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAkocmV2aXNp
b24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODksMTIgKzg5LDYgQEAgcHVibGljOgogICAgIFN0
cmluZyBkZXN0aW5hdGlvbkZpbGVuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbkZp
bGVuYW1lOyB9CiAgICAgdm9pZCBzZXREZXN0aW5hdGlvbkZpbGVuYW1lKGNvbnN0IFN0cmluZyYg
ZCkgeyBtX2Rlc3RpbmF0aW9uRmlsZW5hbWUgPSBkOyB9CiAKLSAgICB1aW50NjRfdCBleHBlY3Rl
ZENvbnRlbnRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2V4cGVjdGVkQ29udGVudExlbmd0aDsg
fQotICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKHVpbnQ2NF90IGV4cGVjdGVkQ29u
dGVudExlbmd0aCkgeyBtX2V4cGVjdGVkQ29udGVudExlbmd0aCA9IGV4cGVjdGVkQ29udGVudExl
bmd0aDsgfQotCi0gICAgdWludDY0X3QgYnl0ZXNMb2FkZWQoKSBjb25zdCB7IHJldHVybiBtX2J5
dGVzTG9hZGVkOyB9Ci0gICAgdm9pZCBzZXRCeXRlc0xvYWRlZCh1aW50NjRfdCBieXRlc0xvYWRl
ZCkgeyBtX2J5dGVzTG9hZGVkID0gYnl0ZXNMb2FkZWQ7IH0KLQogI2lmIFVTRShTWVNURU1fUFJF
VklFVykKICAgICBib29sIGlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkgY29uc3QgeyByZXR1cm4g
cmVxdWVzdCgpLmlzU3lzdGVtUHJldmlldygpOyB9CiAgICAgV2ViQ29yZTo6U3lzdGVtUHJldmll
d0luZm8gc3lzdGVtUHJldmlld0Rvd25sb2FkSW5mbygpIGNvbnN0IHsgcmV0dXJuIHJlcXVlc3Qo
KS5zeXN0ZW1QcmV2aWV3SW5mbygpOyB9CkBAIC0xMTYsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFN0YXJ0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2NF90
IGNoYWxsZW5nZUlEKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBs
ZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodWludDY0X3QgYnl0ZXNXcml0dGVuLCB1
aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9X
cml0ZSk7CiAgICAgdm9pZCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBib29sJiByZXN1bHQpOwogICAgIHZvaWQgZGlkQ3JlYXRlRGVzdGlu
YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw3IEBAIG1lc3NhZ2VzIC0+IERvd25sb2FkUHJveHkgewogICAgIERl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoV2ViS2l0OjpEb3dubG9h
ZElEIGRvd25sb2FkSUQsIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSkKIAogICAgIERpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQotICAgIERpZFJl
Y2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0aCkKKyAgICBEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBi
eXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlKQogICAgIERpZENyZWF0ZURlc3RpbmF0aW9uKFN0cmluZyBwYXRo
KQogICAgIERpZEZpbmlzaCgpCiAgICAgRGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yLCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSkKSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTg5MikKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTE5
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
QWRkIF9XS0Rvd25sb2FkRGVsZWdhdGUgY2FsbGJhY2sgaW5jbHVkaW5nIHRvdGFsQnl0ZXNXcml0
dGVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIx
MTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMzU4OTgxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tOgorICAgICAgICAoLVtUZXN0RG93bmxv
YWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRl
IF9kb3dubG9hZDpkaWRSZWNlaXZlRGF0YTpdKTogRGVsZXRlZC4KKwogMjAyMC0wNS0xOSAgU2Vy
Z2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBT
eW5jIGpoYnVpbGQgdG8gZmxhdHBhawpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCShyZXZpc2lvbiAyNjE4ODYpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjIzLDcgKzEyMjMsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURv
d25sb2FkKTsKICAgICB9OwogCi0gICAgZW51bSBjbGFzcyBDYWxsYmFjayA6IHVpbnQ4X3QgeyBT
dGFydCwgUmVjZWl2ZURhdGEsIERlY2lkZURlc3RpbmF0aW9uLCBDcmVhdGVEZXN0aW5hdGlvbiwg
Q2FuY2VsLCBGaW5pc2ggfTsKKyAgICBlbnVtIGNsYXNzIENhbGxiYWNrIDogdWludDhfdCB7IFN0
YXJ0LCBXcml0ZURhdGEsIERlY2lkZURlc3RpbmF0aW9uLCBDcmVhdGVEZXN0aW5hdGlvbiwgQ2Fu
Y2VsLCBGaW5pc2ggfTsKICAgICBfX2Jsb2NrIFZlY3RvcjxDYWxsYmFjaz4gY2FsbGJhY2tzOwog
ICAgIF9fYmxvY2sgYm9vbCBkaWRDYW5jZWwgPSBmYWxzZTsKICAgICBfX2Jsb2NrIGJvb2wgZGlk
RmluaXNoID0gZmFsc2U7CkBAIC0xMjM2LDkgKzEyMzYsMTEgQEAgVEVTVChfV0tEb3dubG9hZCwg
UmVzdW1lKQogICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpEZWNpZGVEZXN0aW5h
dGlvbik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywgW3RlbXBEaXIgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OnN1Z2dlc3RlZEZpbGVuYW1lXS5wYXRoKTsKICAgICB9OwotICAg
IGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZURhdGEgPSBeKF9XS0Rvd25sb2FkICpk
b3dubG9hZCwgdWludDY0X3QgbGVuZ3RoKSB7Ci0gICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2Fs
bGJhY2s6OlJlY2VpdmVEYXRhKTsKLSAgICAgICAgRVhQRUNUX0VRKGxlbmd0aCwgNTAwMHUpOwor
ICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGlkV3JpdGVEYXRhID0gXihfV0tEb3dubG9hZCAq
ZG93bmxvYWQsIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0
ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKKyAgICAgICAgY2FsbGJh
Y2tzLmFwcGVuZChDYWxsYmFjazo6V3JpdGVEYXRhKTsKKyAgICAgICAgRVhQRUNUX0VRKGJ5dGVz
V3JpdHRlbiwgNTAwMHUpOworICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc1dyaXR0ZW4sIGRp
ZENhbmNlbCA/IDEwMDAwdSA6IDUwMDB1KTsKKyAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNF
eHBlY3RlZFRvV3JpdGUsIDEwMDAwdSk7CiAgICAgICAgIHJlY2VpdmVkRGF0YSA9IHRydWU7CiAg
ICAgfTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRvd25sb2FkRGlkU3RhcnQgPSBeKF9X
S0Rvd25sb2FkICpkb3dubG9hZEZyb21EZWxlZ2F0ZSkgewpAQCAtMTI3NCw5ICsxMjc2LDkgQEAg
VEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQogICAgIEVYUEVDVF9FUShjYWxsYmFja3NbMF0sIENh
bGxiYWNrOjpTdGFydCk7CiAgICAgRVhQRUNUX0VRKGNhbGxiYWNrc1sxXSwgQ2FsbGJhY2s6OkRl
Y2lkZURlc3RpbmF0aW9uKTsKICAgICBFWFBFQ1RfRVEoY2FsbGJhY2tzWzJdLCBDYWxsYmFjazo6
Q3JlYXRlRGVzdGluYXRpb24pOwotICAgIEVYUEVDVF9FUShjYWxsYmFja3NbM10sIENhbGxiYWNr
OjpSZWNlaXZlRGF0YSk7CisgICAgRVhQRUNUX0VRKGNhbGxiYWNrc1szXSwgQ2FsbGJhY2s6Oldy
aXRlRGF0YSk7CiAgICAgRVhQRUNUX0VRKGNhbGxiYWNrc1s0XSwgQ2FsbGJhY2s6OkNhbmNlbCk7
Ci0gICAgRVhQRUNUX0VRKGNhbGxiYWNrc1s1XSwgQ2FsbGJhY2s6OlJlY2VpdmVEYXRhKTsKKyAg
ICBFWFBFQ1RfRVEoY2FsbGJhY2tzWzVdLCBDYWxsYmFjazo6V3JpdGVEYXRhKTsKICAgICBFWFBF
Q1RfRVEoY2FsbGJhY2tzWzZdLCBDYWxsYmFjazo6RmluaXNoKTsKIAogICAgIC8vIEdpdmUgQ0ZO
ZXR3b3JrIGVub3VnaCB0aW1lIHRvIHVubGluayB0aGUgZG93bmxvYWRlZCBmaWxlIGlmIGl0IHdv
dWxkIGhhdmUuCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERl
bGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93
bmxvYWREZWxlZ2F0ZS5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDcgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRTdGFy
dCkoX1dLRG93bmxvYWQgKik7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKShfV0tEb3dubG9hZCAqLCBOU1VSTCAqKTsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVJlc3BvbnNlKShfV0tE
b3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkp
IHZvaWQgKF5kaWRSZWNlaXZlRGF0YSkoX1dLRG93bmxvYWQgKiwgdWludDY0X3QpOworQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRXcml0ZURhdGEpKF9XS0Rvd25sb2FkICos
IHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpOwogQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIHZvaWQgKF5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSkoX1dLRG93
bmxvYWQgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXikoQk9PTCwgTlNTdHJpbmcgKikpOwogQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZEZpbmlzaCkoX1dLRG93bmxv
YWQgKik7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZEZhaWxXaXRoRXJy
b3IpKF9XS0Rvd25sb2FkICosIE5TRXJyb3IgKik7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0JKHJldmlzaW9uIDI2MTg4NikK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDEwICs0NiwxMCBAQCAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93
bmxvYWQgKilkb3dubG9hCiAgICAgICAgIF9kaWRSZWNlaXZlUmVzcG9uc2UoZG93bmxvYWQsIHJl
c3BvbnNlKTsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQg
ZGlkUmVjZWl2ZURhdGE6KHVpbnQ2NF90KWxlbmd0aAorLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQgZGlkV3JpdGVEYXRhOih1aW50NjRfdClieXRlc1dyaXR0ZW4gdG90
YWxCeXRlc1dyaXR0ZW46KHVpbnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvV3JpdGU6KHVpbnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUKIHsKLSAgICBp
ZiAoX2RpZFJlY2VpdmVEYXRhKQotICAgICAgICBfZGlkUmVjZWl2ZURhdGEoZG93bmxvYWQsIGxl
bmd0aCk7CisgICAgaWYgKF9kaWRXcml0ZURhdGEpCisgICAgICAgIF9kaWRXcml0ZURhdGEoZG93
bmxvYWQsIGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvV3JpdGUpOwogfQogCiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9h
ZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxl
bmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNT
dHJpbmcgKmRlc3RpbmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399780</attachid>
            <date>2020-05-19 16:13:52 -0700</date>
            <delta_ts>2020-05-19 16:16:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212110-20200519161352.patch</filename>
            <type>text/plain</type>
            <size>23836</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTA1LTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIF9XS0Rvd25s
b2FkRGVsZWdhdGUgY2FsbGJhY2sgaW5jbHVkaW5nIHRvdGFsQnl0ZXNXcml0dGVuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIxMTAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzYzMzU4OTgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdpdGhvdXQgdGhpcyBuZXcgY2FsbGJhY2ssIGFmdGVyIHJlc3Vt
aW5nIGEgZG93bmxvYWQsIGEgY2xpZW50IGhhcyBubyB3YXkgdG8gdGVsbCB3aGV0aGVyIHRoZSBk
b3dubG9hZCB3YXMgc3VjY2Vzc2Z1bGx5CisgICAgICAgIHJlc3VtZWQgYnkgYSBzZXJ2ZXIgdGhh
dCBoYXMgcHJvcGVyIGV0YWcgYW5kIHJhbmdlIHJlcXVlc3Qgc3VwcG9ydCBvciB3aGV0aGVyIHRo
ZSBkb3dubG9hZCBiZWdhbiBhdCB0aGUgYmVnaW5uaW5nIGFnYWluLgorICAgICAgICBBIGNsaWVu
dCB3YXMgZ3Vlc3NpbmcgdGhhdCB0aGUgZG93bmxvYWQgZGlkIG5vdCByZXN0YXJ0LCBjYXVzaW5n
IGluY29ycmVjdCByZXBvcnRlZCBkb3dubG9hZCBzaXplcyB3aGVuIHRoZSBkb3dubG9hZCBkaWQg
cmVzdGFydC4KKyAgICAgICAgTHVja2lseSwgdGhlIGRhdGEgb24gZGlzayB3YXMgbm90IGNvcnJ1
cHRlZCwganVzdCB0aGUgVUkuICBUaGlzIGFsbG93cyB1cyB0byBmaXggdGhlIFVJLgorCisgICAg
ICAgIFRlc3RpbmcgY292ZXJlZCBieSBleHBhbmRpbmcgdGhlIEFQSSB0ZXN0IGZvciByZXN1bWlu
ZyBkb3dubG9hZHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tCbG9iOjp3cml0ZURvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRl
bGVnYXRlIFVSTFNlc3Npb246ZG93bmxvYWRUYXNrOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3Jp
dHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxv
YWRDbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpEb3dubG9hZENs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRQcm94eTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6Ynl0ZXNMb2FkZWQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRCeXRlc0xvYWRlZCk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1l
c3NhZ2VzLmluOgorCiAyMDIwLTA1LTE5ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBGaXggbWVzc2FnZSBmaWx0ZXIgc2FuZGJveCB2aW9sYXRp
b24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxv
Yi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgz
LDE1ICs0ODMsMTUgQEAgYm9vbCBOZXR3b3JrRGF0YVRhc2tCbG9iOjp3cml0ZURvd25sb2FkKAog
ewogICAgIEFTU0VSVChpc0Rvd25sb2FkKCkpOwogICAgIGludCBieXRlc1dyaXR0ZW4gPSBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZSwgZGF0YSwgYnl0ZXNSZWFkKTsKLSAg
ICBpZiAoYnl0ZXNXcml0dGVuID09IC0xKSB7CisgICAgaWYgKGJ5dGVzV3JpdHRlbiAhPSBieXRl
c1JlYWQpIHsKICAgICAgICAgZGlkRmFpbERvd25sb2FkKGNhbmNlbGxlZEVycm9yKG1fZmlyc3RS
ZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBBU1NFUlQoYnl0
ZXNXcml0dGVuID09IGJ5dGVzUmVhZCk7CisgICAgbV9kb3dubG9hZEJ5dGVzV3JpdHRlbiArPSBi
eXRlc1dyaXR0ZW47CiAgICAgYXV0byogZG93bmxvYWQgPSBtX25ldHdvcmtQcm9jZXNzLT5kb3du
bG9hZE1hbmFnZXIoKS5kb3dubG9hZChtX3BlbmRpbmdEb3dubG9hZElEKTsKICAgICBBU1NFUlQo
ZG93bmxvYWQpOwotICAgIGRvd25sb2FkLT5kaWRSZWNlaXZlRGF0YShieXRlc1dyaXR0ZW4pOwor
ICAgIGRvd25sb2FkLT5kaWRSZWNlaXZlRGF0YShieXRlc1dyaXR0ZW4sIG1fZG93bmxvYWRCeXRl
c1dyaXR0ZW4sIG1fdG90YWxTaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgJ
KHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrQmxvYi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAgcHJpdmF0
ZToKICAgICBsb25nIGxvbmcgbV9yYW5nZUVuZCB7IGtQb3NpdGlvbk5vdFNwZWNpZmllZCB9Owog
ICAgIGxvbmcgbG9uZyBtX3JhbmdlU3VmZml4TGVuZ3RoIHsga1Bvc2l0aW9uTm90U3BlY2lmaWVk
IH07CiAgICAgbG9uZyBsb25nIG1fdG90YWxTaXplIHsgMCB9OworICAgIGxvbmcgbG9uZyBtX2Rv
d25sb2FkQnl0ZXNXcml0dGVuIHsgMCB9OwogICAgIGxvbmcgbG9uZyBtX3RvdGFsUmVtYWluaW5n
U2l6ZSB7IDAgfTsKICAgICBsb25nIGxvbmcgbV9jdXJyZW50SXRlbVJlYWRTaXplIHsgMCB9Owog
ICAgIHVuc2lnbmVkIG1fc2l6ZUl0ZW1Db3VudCB7IDAgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAJKHJldmlzaW9u
IDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDE2ICsxMTcsMTYgQEAgdm9pZCBEb3dubG9h
ZDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oY29ucwogICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2Fk
UHJveHk6OkRpZENyZWF0ZURlc3RpbmF0aW9uKHBhdGgpKTsKIH0KIAotdm9pZCBEb3dubG9hZDo6
ZGlkUmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKQordm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2
ZURhdGEodWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwg
dWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkKIHsKICAgICBpZiAoIW1faGFzUmVj
ZWl2ZWREYXRhKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVE
YXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChpZCA9ICUiIFBSSXU2NCAiKSIsIGRvd25sb2Fk
SUQoKS5kb3dubG9hZElEKCkpOwogICAgICAgICBtX2hhc1JlY2VpdmVkRGF0YSA9IHRydWU7CiAg
ICAgfQogICAgIAotICAgIG1fbW9uaXRvci5kb3dubG9hZFJlY2VpdmVkQnl0ZXMobGVuZ3RoKTsK
KyAgICBtX21vbml0b3IuZG93bmxvYWRSZWNlaXZlZEJ5dGVzKGJ5dGVzV3JpdHRlbik7CiAKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlRGF0YShsZW5ndGgpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlRGF0YShieXRlc1dy
aXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSk7CiB9
CiAKIHZvaWQgRG93bmxvYWQ6OmRpZEZpbmlzaCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2FuZGJv
eEV4dGVuc2lvbihSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiBzYW5kYm94RXh0ZW5zaW9uKSB7
IG1fc2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbik7IH0KICAgICB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGRpZENyZWF0
ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YSh1aW50NjRfdCBsZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodWludDY0X3QgYnl0
ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZSk7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZh
aWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcmVzdW1lRGF0YSk7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI2MTg4
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTUwLDcgKzk1MCw3IEBAIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICBhdXRvKiBkb3dubG9hZCA9IF9zZXNzaW9u
LT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2FkKGRvd25sb2FkSUQp
OwogICAgIGlmICghZG93bmxvYWQpCiAgICAgICAgIHJldHVybjsKLSAgICBkb3dubG9hZC0+ZGlk
UmVjZWl2ZURhdGEoYnl0ZXNXcml0dGVuKTsKKyAgICBkb3dubG9hZC0+ZGlkUmVjZWl2ZURhdGEo
Ynl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZSk7CiB9CiAKIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkb3du
bG9hZFRhc2s6KE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayAqKWRvd25sb2FkVGFzayBkaWRSZXN1
bWVBdE9mZnNldDooaW50NjRfdClmaWxlT2Zmc2V0IGV4cGVjdGVkVG90YWxCeXRlczooaW50NjRf
dClleHBlY3RlZFRvdGFsQnl0ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHJldmlzaW9uIDI2
MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRh
c2tTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTkyLDcgKzk5Miw3IEBAIHZvaWQgTmV0d29y
a0RhdGFUYXNrU291cDo6ZGlkV3JpdGVEb3dubG8KICAgICBBU1NFUlQoYnl0ZXNXcml0dGVuID09
IG1fcmVhZEJ1ZmZlci5zaXplKCkpOwogICAgIGF1dG8qIGRvd25sb2FkID0gbV9zZXNzaW9uLT5u
ZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2FkKG1fcGVuZGluZ0Rvd25s
b2FkSUQpOwogICAgIEFTU0VSVChkb3dubG9hZCk7Ci0gICAgZG93bmxvYWQtPmRpZFJlY2VpdmVE
YXRhKGJ5dGVzV3JpdHRlbik7CisgICAgZG93bmxvYWQtPmRpZFJlY2VpdmVEYXRhKGJ5dGVzV3Jp
dHRlbiwgMCwgMCk7CiAgICAgcmVhZCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAkocmV2aXNpb24gMjYxODg2KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFy
dChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSB7IGNoYWxsZW5nZS5saXN0
ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbjo6Q2FuY2VsKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2Fk
UHJveHkmLCB1aW50NjRfdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFdl
YktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIEZ1bmN0aW9uPHZvaWQo
V2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRQ
cm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2
LDcgKzE5Niw3IEBAIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXgKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlUmVz
cG9uc2UobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0
b0FQSShBUEk6OlVSTFJlc3BvbnNlOjpjcmVhdGUocmVzcG9uc2UpLnB0cigpKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVuZ3RoKSBm
aW5hbAorICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVuZ3RoLCB1aW50NjRfdCwgdWludDY0X3QpIGZpbmFs
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCShyZXZpc2lvbiAyNjE4
ODYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxl
Z2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAtICh2b2lkKV9kb3dubG9h
ZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDoo
TlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsK
IC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNw
b25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlOwogLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZURhdGE6KHVpbnQ2NF90KWxlbmd0aDsKKy0gKHZv
aWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YToodWludDY0
X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOih1aW50NjRfdCl0b3RhbEJ5dGVzV3Jp
dHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOih1aW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRl
c3RpbmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNo
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkOwogLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2Fk
ICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oCShyZXZpc2lv
biAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgLy8gRnJv
bSBBUEk6OkRvd25sb2FkQ2xpZW50CiAgICAgdm9pZCBkaWRTdGFydChEb3dubG9hZFByb3h5Jikg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoRG93bmxvYWRQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKERvd25sb2FkUHJveHkmLCB1aW50NjRfdCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3Qp
IGZpbmFsOwogICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUo
RG93bmxvYWRQcm94eSYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIEZ1bmN0aW9u
PHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmluZyk+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmlu
aXNoKERvd25sb2FkUHJveHkmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94
eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKQEAgLTc0LDYgKzc0LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBkb3dubG9hZERpZFN0YXJ0IDogMTsgICAgICAgICAg
ICAKICAgICAgICAgYm9vbCBkb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZSA6IDE7CiAgICAgICAg
IGJvb2wgZG93bmxvYWREaWRSZWNlaXZlRGF0YSA6IDE7CisgICAgICAgIGJvb2wgZG93bmxvYWRE
aWRXcml0ZURhdGFUb3RhbEJ5dGVzV3JpdHRlblRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUgOiAx
OwogICAgICAgICBib29sIGRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWVBbGxvd092ZXJ3cml0ZSA6IDE7CiAgICAgICAgIGJvb2wgZG93bmxvYWREZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKICAgICAg
ICAgYm9vbCBkb3dubG9hZERpZEZpbmlzaCA6IDE7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQkocmV2aXNpb24gMjYxODg2KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDYgKzUzLDcgQEAgRG93bmxvYWRDbGllbnQ6OkRvd25sb2FkQ2xpZW50KGlk
IDxfV0tEbwogICAgIG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkU3RhcnQgPSBbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWREaWRTdGFydDopXTsKICAg
ICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZSA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZDpkaWRSZWNlaXZlUmVzcG9u
c2U6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlRGF0YSA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZDpkaWRSZWNlaXZl
RGF0YTopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFdyaXRlRGF0YVRvdGFs
Qnl0ZXNXcml0dGVuVG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZDpkaWRXcml0ZURhdGE6dG90YWxCeXRlc1dy
aXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9k
cy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVy
d3JpdGUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6YWxsb3dPdmVyd3JpdGU6KV07
CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLmRvd25s
b2FkRGlkRmluaXNoID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rv
d25sb2FkRGlkRmluaXNoOildOwpAQCAtOTYsOCArOTcsNiBAQCB2b2lkIERvd25sb2FkQ2xpZW50
OjpkaWRSZWNlaXZlUmVzcG9uc2UoCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlm
IChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkgJiYgcmVzcG9uc2UuaXNT
dWNjZXNzZnVsKCkpIHsKLSAgICAgICAgZG93bmxvYWRQcm94eS5zZXRFeHBlY3RlZENvbnRlbnRM
ZW5ndGgocmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpOwotICAgICAgICBkb3dubG9h
ZFByb3h5LnNldEJ5dGVzTG9hZGVkKDApOwogICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9
IHN5c3RlbVByZXZpZXdDb250cm9sbGVyKGRvd25sb2FkUHJveHkpKQogICAgICAgICAgICAgY29u
dHJvbGxlci0+dXBkYXRlUHJvZ3Jlc3MoMCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEwOCwxOSAr
MTA3LDIwIEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSgKICAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2
ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKV07CiB9CiAKLXZvaWQgRG93bmxvYWRD
bGllbnQ6OmRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2
NF90IGxlbmd0aCkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90
YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpCiB7CiAj
aWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJl
dmlld0Rvd25sb2FkKCkpIHsKLSAgICAgICAgZG93bmxvYWRQcm94eS5zZXRCeXRlc0xvYWRlZChk
b3dubG9hZFByb3h5LmJ5dGVzTG9hZGVkKCkgKyBsZW5ndGgpOwogICAgICAgICBpZiAoYXV0byog
Y29udHJvbGxlciA9IHN5c3RlbVByZXZpZXdDb250cm9sbGVyKGRvd25sb2FkUHJveHkpKQotICAg
ICAgICAgICAgY29udHJvbGxlci0+dXBkYXRlUHJvZ3Jlc3Moc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRv
d25sb2FkUHJveHkuYnl0ZXNMb2FkZWQoKSkgLyBkb3dubG9hZFByb3h5LmV4cGVjdGVkQ29udGVu
dExlbmd0aCgpKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPnVwZGF0ZVByb2dyZXNzKHN0YXRp
Y19jYXN0PGZsb2F0Pih0b3RhbEJ5dGVzV3JpdHRlbikgLyB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG1fZGVsZWdh
dGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZURhdGEpCi0gICAgICAgIFttX2RlbGVnYXRlIF9k
b3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVEYXRhOmxlbmd0aF07Cisg
ICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkV3JpdGVEYXRhVG90YWxCeXRlc1dy
aXR0ZW5Ub3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQorICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93
bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0dGVuIHRv
dGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGU6dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07CisgICAgZWxzZSBpZiAobV9kZWxlZ2F0ZU1l
dGhvZHMuZG93bmxvYWREaWRSZWNlaXZlRGF0YSkKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25s
b2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZURhdGE6Ynl0ZXNXcml0dGVuXTsK
IH0KIAogdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkocmV2aXNpb24gMjYx
ODg2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsMTIgKzE2NiwxMiBAQCB2b2lkIERvd25sb2FkUHJv
eHk6OmRpZFJlY2VpdmVSZXNwb25zZShjCiAgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGll
bnQoKS5kaWRSZWNlaXZlUmVzcG9uc2UoKnRoaXMsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBEb3du
bG9hZFByb3h5OjpkaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBsZW5ndGgpCit2b2lkIERvd25sb2Fk
UHJveHk6OmRpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90
YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpCiB7CiAg
ICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQ
b29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVEYXRhKCp0aGlzLCBsZW5ndGgpOworICAg
IG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZURhdGEoKnRoaXMsIGJ5
dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUp
OwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lQXN5bmMoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVuYW1lKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5oCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
OSwxMiArODksNiBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGRlc3RpbmF0aW9uRmlsZW5hbWUoKSBj
b25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uRmlsZW5hbWU7IH0KICAgICB2b2lkIHNldERlc3Rp
bmF0aW9uRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBkKSB7IG1fZGVzdGluYXRpb25GaWxlbmFtZSA9
IGQ7IH0KIAotICAgIHVpbnQ2NF90IGV4cGVjdGVkQ29udGVudExlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoOyB9Ci0gICAgdm9pZCBzZXRFeHBlY3RlZENvbnRl
bnRMZW5ndGgodWludDY0X3QgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKSB7IG1fZXhwZWN0ZWRDb250
ZW50TGVuZ3RoID0gZXhwZWN0ZWRDb250ZW50TGVuZ3RoOyB9Ci0KLSAgICB1aW50NjRfdCBieXRl
c0xvYWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZXNMb2FkZWQ7IH0KLSAgICB2b2lkIHNldEJ5
dGVzTG9hZGVkKHVpbnQ2NF90IGJ5dGVzTG9hZGVkKSB7IG1fYnl0ZXNMb2FkZWQgPSBieXRlc0xv
YWRlZDsgfQotCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGJvb2wgaXNTeXN0ZW1QcmV2
aWV3RG93bmxvYWQoKSBjb25zdCB7IHJldHVybiByZXF1ZXN0KCkuaXNTeXN0ZW1QcmV2aWV3KCk7
IH0KICAgICBXZWJDb3JlOjpTeXN0ZW1QcmV2aWV3SW5mbyBzeXN0ZW1QcmV2aWV3RG93bmxvYWRJ
bmZvKCkgY29uc3QgeyByZXR1cm4gcmVxdWVzdCgpLnN5c3RlbVByZXZpZXdJbmZvKCk7IH0KQEAg
LTExNiw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU3RhcnQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmJiwgdWludDY0X3QgY2hhbGxlbmdlSUQpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1
aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKICAgICB2b2lkIHNob3VsZERlY29k
ZVNvdXJjZURhdGFPZk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wmIHJlc3Vs
dCk7CiAgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpOwog
ICAgIHZvaWQgZGlkRmluaXNoKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNp
b24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAgbWVzc2Fn
ZXMgLT4gRG93bmxvYWRQcm94eSB7CiAgICAgRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWVBc3luYyhXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIHN1Z2dl
c3RlZEZpbGVuYW1lKQogCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UpCi0gICAgRGlkUmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKQor
ICAgIERpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxC
eXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpCiAgICAgRGlk
Q3JlYXRlRGVzdGluYXRpb24oU3RyaW5nIHBhdGgpCiAgICAgRGlkRmluaXNoKCkKICAgICBEaWRG
YWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1
bWVEYXRhKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjYxODkyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDUtMTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgX1dLRG93bmxvYWREZWxlZ2F0ZSBjYWxs
YmFjayBpbmNsdWRpbmcgdG90YWxCeXRlc1dyaXR0ZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjExMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjMzNTg5ODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAg
ICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxl
Z2F0ZS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdh
dGUubW06CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRXcml0
ZURhdGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpdKToKKyAg
ICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVEYXRhOl0p
OiBEZWxldGVkLgorCiAyMDIwLTA1LTE5ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIFN5bmMgamhidWlsZCB0byBmbGF0cGFrCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQu
bW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRG93bmxvYWQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMjMsNyArMTIyMyw3IEBAIFRF
U1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoX1dLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOwogICAgIH07CiAKLSAgICBlbnVt
IGNsYXNzIENhbGxiYWNrIDogdWludDhfdCB7IFN0YXJ0LCBSZWNlaXZlRGF0YSwgRGVjaWRlRGVz
dGluYXRpb24sIENyZWF0ZURlc3RpbmF0aW9uLCBDYW5jZWwsIEZpbmlzaCB9OworICAgIGVudW0g
Y2xhc3MgQ2FsbGJhY2sgOiB1aW50OF90IHsgU3RhcnQsIFdyaXRlRGF0YSwgRGVjaWRlRGVzdGlu
YXRpb24sIENyZWF0ZURlc3RpbmF0aW9uLCBDYW5jZWwsIEZpbmlzaCB9OwogICAgIF9fYmxvY2sg
VmVjdG9yPENhbGxiYWNrPiBjYWxsYmFja3M7CiAgICAgX19ibG9jayBib29sIGRpZENhbmNlbCA9
IGZhbHNlOwogICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5pc2ggPSBmYWxzZTsKQEAgLTEyMzYsOSAr
MTIzNiwxMSBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgICAgIGNhbGxiYWNrcy5h
cHBlbmQoQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uKTsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoWUVTLCBbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6c3VnZ2VzdGVk
RmlsZW5hbWVdLnBhdGgpOwogICAgIH07Ci0gICAgZG93bmxvYWREZWxlZ2F0ZS5nZXQoKS5kaWRS
ZWNlaXZlRGF0YSA9IF4oX1dLRG93bmxvYWQgKmRvd25sb2FkLCB1aW50NjRfdCBsZW5ndGgpIHsK
LSAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6UmVjZWl2ZURhdGEpOwotICAgICAg
ICBFWFBFQ1RfRVEobGVuZ3RoLCA1MDAwdSk7CisgICAgZG93bmxvYWREZWxlZ2F0ZS5nZXQoKS5k
aWRXcml0ZURhdGEgPSBeKF9XS0Rvd25sb2FkICpkb3dubG9hZCwgdWludDY0X3QgYnl0ZXNXcml0
dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZSkgeworICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpXcml0ZURh
dGEpOworICAgICAgICBFWFBFQ1RfRVEoYnl0ZXNXcml0dGVuLCA1MDAwdSk7CisgICAgICAgIEVY
UEVDVF9FUSh0b3RhbEJ5dGVzV3JpdHRlbiwgZGlkQ2FuY2VsID8gMTAwMDB1IDogNTAwMHUpOwor
ICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgMTAwMDB1KTsKICAg
ICAgICAgcmVjZWl2ZWREYXRhID0gdHJ1ZTsKICAgICB9OwogICAgIGRvd25sb2FkRGVsZWdhdGUu
Z2V0KCkuZG93bmxvYWREaWRTdGFydCA9IF4oX1dLRG93bmxvYWQgKmRvd25sb2FkRnJvbURlbGVn
YXRlKSB7CkBAIC0xMjc0LDkgKzEyNzYsOSBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAg
ICAgRVhQRUNUX0VRKGNhbGxiYWNrc1swXSwgQ2FsbGJhY2s6OlN0YXJ0KTsKICAgICBFWFBFQ1Rf
RVEoY2FsbGJhY2tzWzFdLCBDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24pOwogICAgIEVYUEVD
VF9FUShjYWxsYmFja3NbMl0sIENhbGxiYWNrOjpDcmVhdGVEZXN0aW5hdGlvbik7Ci0gICAgRVhQ
RUNUX0VRKGNhbGxiYWNrc1szXSwgQ2FsbGJhY2s6OlJlY2VpdmVEYXRhKTsKKyAgICBFWFBFQ1Rf
RVEoY2FsbGJhY2tzWzNdLCBDYWxsYmFjazo6V3JpdGVEYXRhKTsKICAgICBFWFBFQ1RfRVEoY2Fs
bGJhY2tzWzRdLCBDYWxsYmFjazo6Q2FuY2VsKTsKLSAgICBFWFBFQ1RfRVEoY2FsbGJhY2tzWzVd
LCBDYWxsYmFjazo6UmVjZWl2ZURhdGEpOworICAgIEVYUEVDVF9FUShjYWxsYmFja3NbNV0sIENh
bGxiYWNrOjpXcml0ZURhdGEpOwogICAgIEVYUEVDVF9FUShjYWxsYmFja3NbNl0sIENhbGxiYWNr
OjpGaW5pc2gpOwogCiAgICAgLy8gR2l2ZSBDRk5ldHdvcmsgZW5vdWdoIHRpbWUgdG8gdW5saW5r
IHRoZSBkb3dubG9hZGVkIGZpbGUgaWYgaXQgd291bGQgaGF2ZS4KSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDI2
MTg4NikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZFN0YXJ0KShfV0tEb3dubG9hZCAqKTsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwp
KF9XS0Rvd25sb2FkICosIE5TVVJMICopOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZv
aWQgKF5kaWRSZWNlaXZlUmVzcG9uc2UpKF9XS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKik7
Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVEYXRhKShfV0tE
b3dubG9hZCAqLCB1aW50NjRfdCk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAo
XmRpZFdyaXRlRGF0YSkoX1dLRG93bmxvYWQgKiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRf
dCk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqLCB2b2lkIChe
KShCT09MLCBOU1N0cmluZyAqKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAo
XmRvd25sb2FkRGlkRmluaXNoKShfV0tEb3dubG9hZCAqKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSB2b2lkICheZGlkRmFpbFdpdGhFcnJvcikoX1dLRG93bmxvYWQgKiwgTlNFcnJvciAq
KTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWRE
ZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjYxODg2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDYsMTAgKzQ2LDEw
IEBAIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2EKICAgICAgICAgX2Rp
ZFJlY2VpdmVSZXNwb25zZShkb3dubG9hZCwgcmVzcG9uc2UpOwogfQogCi0tICh2b2lkKV9kb3du
bG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlRGF0YToodWludDY0X3QpbGVu
Z3RoCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRXcml0ZURh
dGE6KHVpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjoodWludDY0X3QpdG90
YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZToodWludDY0X3QpdG90YWxC
eXRlc0V4cGVjdGVkVG9Xcml0ZQogewotICAgIGlmIChfZGlkUmVjZWl2ZURhdGEpCi0gICAgICAg
IF9kaWRSZWNlaXZlRGF0YShkb3dubG9hZCwgbGVuZ3RoKTsKKyAgICBpZiAoX2RpZFdyaXRlRGF0
YSkKKyAgICAgICAgX2RpZFdyaXRlRGF0YShkb3dubG9hZCwgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5
dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CiB9CiAKIC0gKHZvaWQpX2Rv
d25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24pKWNvbXBsZXRp
b25IYW5kbGVyCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399781</attachid>
            <date>2020-05-19 16:16:44 -0700</date>
            <delta_ts>2020-05-19 17:27:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212110-20200519161643.patch</filename>
            <type>text/plain</type>
            <size>24879</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTA1LTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIF9XS0Rvd25s
b2FkRGVsZWdhdGUgY2FsbGJhY2sgaW5jbHVkaW5nIHRvdGFsQnl0ZXNXcml0dGVuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIxMTAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzYzMzU4OTgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdpdGhvdXQgdGhpcyBuZXcgY2FsbGJhY2ssIGFmdGVyIHJlc3Vt
aW5nIGEgZG93bmxvYWQsIGEgY2xpZW50IGhhcyBubyB3YXkgdG8gdGVsbCB3aGV0aGVyIHRoZSBk
b3dubG9hZCB3YXMgc3VjY2Vzc2Z1bGx5CisgICAgICAgIHJlc3VtZWQgYnkgYSBzZXJ2ZXIgdGhh
dCBoYXMgcHJvcGVyIGV0YWcgYW5kIHJhbmdlIHJlcXVlc3Qgc3VwcG9ydCBvciB3aGV0aGVyIHRo
ZSBkb3dubG9hZCBiZWdhbiBhdCB0aGUgYmVnaW5uaW5nIGFnYWluLgorICAgICAgICBBIGNsaWVu
dCB3YXMgZ3Vlc3NpbmcgdGhhdCB0aGUgZG93bmxvYWQgZGlkIG5vdCByZXN0YXJ0LCBjYXVzaW5n
IGluY29ycmVjdCByZXBvcnRlZCBkb3dubG9hZCBzaXplcyB3aGVuIHRoZSBkb3dubG9hZCBkaWQg
cmVzdGFydC4KKyAgICAgICAgTHVja2lseSwgdGhlIGRhdGEgb24gZGlzayB3YXMgbm90IGNvcnJ1
cHRlZCwganVzdCB0aGUgVUkuICBUaGlzIGFsbG93cyB1cyB0byBmaXggdGhlIFVJLgorCisgICAg
ICAgIFRlc3RpbmcgY292ZXJlZCBieSBleHBhbmRpbmcgdGhlIEFQSSB0ZXN0IGZvciByZXN1bWlu
ZyBkb3dubG9hZHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tCbG9iOjp3cml0ZURvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRl
bGVnYXRlIFVSTFNlc3Npb246ZG93bmxvYWRUYXNrOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3Jp
dHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxv
YWRDbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpEb3dubG9hZENs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRQcm94eTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6Ynl0ZXNMb2FkZWQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRCeXRlc0xvYWRlZCk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1l
c3NhZ2VzLmluOgorCiAyMDIwLTA1LTE5ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBGaXggbWVzc2FnZSBmaWx0ZXIgc2FuZGJveCB2aW9sYXRp
b24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxv
Yi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgz
LDE1ICs0ODMsMTUgQEAgYm9vbCBOZXR3b3JrRGF0YVRhc2tCbG9iOjp3cml0ZURvd25sb2FkKAog
ewogICAgIEFTU0VSVChpc0Rvd25sb2FkKCkpOwogICAgIGludCBieXRlc1dyaXR0ZW4gPSBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZSwgZGF0YSwgYnl0ZXNSZWFkKTsKLSAg
ICBpZiAoYnl0ZXNXcml0dGVuID09IC0xKSB7CisgICAgaWYgKGJ5dGVzV3JpdHRlbiAhPSBieXRl
c1JlYWQpIHsKICAgICAgICAgZGlkRmFpbERvd25sb2FkKGNhbmNlbGxlZEVycm9yKG1fZmlyc3RS
ZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBBU1NFUlQoYnl0
ZXNXcml0dGVuID09IGJ5dGVzUmVhZCk7CisgICAgbV9kb3dubG9hZEJ5dGVzV3JpdHRlbiArPSBi
eXRlc1dyaXR0ZW47CiAgICAgYXV0byogZG93bmxvYWQgPSBtX25ldHdvcmtQcm9jZXNzLT5kb3du
bG9hZE1hbmFnZXIoKS5kb3dubG9hZChtX3BlbmRpbmdEb3dubG9hZElEKTsKICAgICBBU1NFUlQo
ZG93bmxvYWQpOwotICAgIGRvd25sb2FkLT5kaWRSZWNlaXZlRGF0YShieXRlc1dyaXR0ZW4pOwor
ICAgIGRvd25sb2FkLT5kaWRSZWNlaXZlRGF0YShieXRlc1dyaXR0ZW4sIG1fZG93bmxvYWRCeXRl
c1dyaXR0ZW4sIG1fdG90YWxTaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgJ
KHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrQmxvYi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAgcHJpdmF0
ZToKICAgICBsb25nIGxvbmcgbV9yYW5nZUVuZCB7IGtQb3NpdGlvbk5vdFNwZWNpZmllZCB9Owog
ICAgIGxvbmcgbG9uZyBtX3JhbmdlU3VmZml4TGVuZ3RoIHsga1Bvc2l0aW9uTm90U3BlY2lmaWVk
IH07CiAgICAgbG9uZyBsb25nIG1fdG90YWxTaXplIHsgMCB9OworICAgIGxvbmcgbG9uZyBtX2Rv
d25sb2FkQnl0ZXNXcml0dGVuIHsgMCB9OwogICAgIGxvbmcgbG9uZyBtX3RvdGFsUmVtYWluaW5n
U2l6ZSB7IDAgfTsKICAgICBsb25nIGxvbmcgbV9jdXJyZW50SXRlbVJlYWRTaXplIHsgMCB9Owog
ICAgIHVuc2lnbmVkIG1fc2l6ZUl0ZW1Db3VudCB7IDAgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAJKHJldmlzaW9u
IDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDE2ICsxMTcsMTYgQEAgdm9pZCBEb3dubG9h
ZDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oY29ucwogICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2Fk
UHJveHk6OkRpZENyZWF0ZURlc3RpbmF0aW9uKHBhdGgpKTsKIH0KIAotdm9pZCBEb3dubG9hZDo6
ZGlkUmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKQordm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2
ZURhdGEodWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwg
dWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkKIHsKICAgICBpZiAoIW1faGFzUmVj
ZWl2ZWREYXRhKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVE
YXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChpZCA9ICUiIFBSSXU2NCAiKSIsIGRvd25sb2Fk
SUQoKS5kb3dubG9hZElEKCkpOwogICAgICAgICBtX2hhc1JlY2VpdmVkRGF0YSA9IHRydWU7CiAg
ICAgfQogICAgIAotICAgIG1fbW9uaXRvci5kb3dubG9hZFJlY2VpdmVkQnl0ZXMobGVuZ3RoKTsK
KyAgICBtX21vbml0b3IuZG93bmxvYWRSZWNlaXZlZEJ5dGVzKGJ5dGVzV3JpdHRlbik7CiAKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlRGF0YShsZW5ndGgpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlRGF0YShieXRlc1dy
aXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSk7CiB9
CiAKIHZvaWQgRG93bmxvYWQ6OmRpZEZpbmlzaCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2FuZGJv
eEV4dGVuc2lvbihSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiBzYW5kYm94RXh0ZW5zaW9uKSB7
IG1fc2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbik7IH0KICAgICB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGRpZENyZWF0
ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YSh1aW50NjRfdCBsZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodWludDY0X3QgYnl0
ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZSk7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZh
aWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcmVzdW1lRGF0YSk7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI2MTg4
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTUwLDcgKzk1MCw3IEBAIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICBhdXRvKiBkb3dubG9hZCA9IF9zZXNzaW9u
LT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2FkKGRvd25sb2FkSUQp
OwogICAgIGlmICghZG93bmxvYWQpCiAgICAgICAgIHJldHVybjsKLSAgICBkb3dubG9hZC0+ZGlk
UmVjZWl2ZURhdGEoYnl0ZXNXcml0dGVuKTsKKyAgICBkb3dubG9hZC0+ZGlkUmVjZWl2ZURhdGEo
Ynl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZSk7CiB9CiAKIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkb3du
bG9hZFRhc2s6KE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayAqKWRvd25sb2FkVGFzayBkaWRSZXN1
bWVBdE9mZnNldDooaW50NjRfdClmaWxlT2Zmc2V0IGV4cGVjdGVkVG90YWxCeXRlczooaW50NjRf
dClleHBlY3RlZFRvdGFsQnl0ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHJldmlzaW9uIDI2
MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRh
c2tTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTkyLDcgKzk5Miw3IEBAIHZvaWQgTmV0d29y
a0RhdGFUYXNrU291cDo6ZGlkV3JpdGVEb3dubG8KICAgICBBU1NFUlQoYnl0ZXNXcml0dGVuID09
IG1fcmVhZEJ1ZmZlci5zaXplKCkpOwogICAgIGF1dG8qIGRvd25sb2FkID0gbV9zZXNzaW9uLT5u
ZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2FkKG1fcGVuZGluZ0Rvd25s
b2FkSUQpOwogICAgIEFTU0VSVChkb3dubG9hZCk7Ci0gICAgZG93bmxvYWQtPmRpZFJlY2VpdmVE
YXRhKGJ5dGVzV3JpdHRlbik7CisgICAgZG93bmxvYWQtPmRpZFJlY2VpdmVEYXRhKGJ5dGVzV3Jp
dHRlbiwgMCwgMCk7CiAgICAgcmVhZCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAkocmV2aXNpb24gMjYxODg2KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFy
dChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSB7IGNoYWxsZW5nZS5saXN0
ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbjo6Q2FuY2VsKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2Fk
UHJveHkmLCB1aW50NjRfdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFdl
YktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIEZ1bmN0aW9uPHZvaWQo
V2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRQ
cm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2
LDcgKzE5Niw3IEBAIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXgKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlUmVz
cG9uc2UobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0
b0FQSShBUEk6OlVSTFJlc3BvbnNlOjpjcmVhdGUocmVzcG9uc2UpLnB0cigpKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVuZ3RoKSBm
aW5hbAorICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVuZ3RoLCB1aW50NjRfdCwgdWludDY0X3QpIGZpbmFs
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCShyZXZpc2lvbiAyNjE4
ODYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxl
Z2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAtICh2b2lkKV9kb3dubG9h
ZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDoo
TlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsK
IC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNw
b25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlOwogLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZURhdGE6KHVpbnQ2NF90KWxlbmd0aDsKKy0gKHZv
aWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YToodWludDY0
X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOih1aW50NjRfdCl0b3RhbEJ5dGVzV3Jp
dHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOih1aW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRl
c3RpbmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNo
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkOwogLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2Fk
ICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25s
b2FkQ2xpZW50LmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHdlYmtpdERvd25sb2FkU2V0UmVzcG9uc2Uo
ZG93bmxvYWQuZ2V0KCksIHJlc3BvbnNlLmdldCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkg
b3ZlcnJpZGUKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIHVpbnQ2NF90IGxlbmd0aCwgdWludDY0X3QsIHVpbnQ2NF90KSBvdmVycmlkZQogICAg
IHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJD
b250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAgICAgIHdlYmtp
dERvd25sb2FkTm90aWZ5UHJvZ3Jlc3MoZG93bmxvYWQuZ2V0KCksIGxlbmd0aCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgJKHJldmlz
aW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBG
cm9tIEFQSTo6RG93bmxvYWRDbGllbnQKICAgICB2b2lkIGRpZFN0YXJ0KERvd25sb2FkUHJveHkm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoRG93bmxvYWRQcm94eSYsIHVpbnQ2NF90IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRf
dCkgZmluYWw7CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShEb3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgRnVuY3Rp
b248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRG
aW5pc2goRG93bmxvYWRQcm94eSYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFBy
b3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwpAQCAtNzQsNiArNzQs
NyBAQCBwcml2YXRlOgogICAgICAgICBib29sIGRvd25sb2FkRGlkU3RhcnQgOiAxOyAgICAgICAg
ICAgIAogICAgICAgICBib29sIGRvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlIDogMTsKICAgICAg
ICAgYm9vbCBkb3dubG9hZERpZFJlY2VpdmVEYXRhIDogMTsKKyAgICAgICAgYm9vbCBkb3dubG9h
ZERpZFdyaXRlRGF0YVRvdGFsQnl0ZXNXcml0dGVuVG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSA6
IDE7CiAgICAgICAgIGJvb2wgZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUFsbG93T3ZlcndyaXRlIDogMTsKICAgICAgICAgYm9vbCBkb3dubG9hZERlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogICAg
ICAgICBib29sIGRvd25sb2FkRGlkRmluaXNoIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCShyZXZpc2lvbiAyNjE4ODYpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBEb3dubG9hZENsaWVudDo6RG93bmxvYWRDbGllbnQo
aWQgPF9XS0RvCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRTdGFydCA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZERpZFN0YXJ0OildOwog
ICAgIG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVSZXNw
b25zZTopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVEYXRhID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2Vp
dmVEYXRhOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkV3JpdGVEYXRhVG90
YWxCeXRlc1dyaXR0ZW5Ub3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVz
V3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOildOwogICAgIG1fZGVsZWdhdGVNZXRo
b2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBbGxvd092
ZXJ3cml0ZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9h
ZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTphbGxvd092ZXJ3cml0ZTop
XTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93
bmxvYWREaWRGaW5pc2ggPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
ZG93bmxvYWREaWRGaW5pc2g6KV07CkBAIC05Niw4ICs5Nyw2IEBAIHZvaWQgRG93bmxvYWRDbGll
bnQ6OmRpZFJlY2VpdmVSZXNwb25zZSgKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAg
aWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSAmJiByZXNwb25zZS5p
c1N1Y2Nlc3NmdWwoKSkgewotICAgICAgICBkb3dubG9hZFByb3h5LnNldEV4cGVjdGVkQ29udGVu
dExlbmd0aChyZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7Ci0gICAgICAgIGRvd25s
b2FkUHJveHkuc2V0Qnl0ZXNMb2FkZWQoMCk7CiAgICAgICAgIGlmIChhdXRvKiBjb250cm9sbGVy
ID0gc3lzdGVtUHJldmlld0NvbnRyb2xsZXIoZG93bmxvYWRQcm94eSkpCiAgICAgICAgICAgICBj
b250cm9sbGVyLT51cGRhdGVQcm9ncmVzcygwKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTA4LDE5
ICsxMDcsMjAgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKAogICAg
ICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNl
aXZlUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKIH0KIAotdm9pZCBEb3dubG9h
ZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWlu
dDY0X3QgbGVuZ3RoKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0
b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkKIHsK
ICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1Q
cmV2aWV3RG93bmxvYWQoKSkgewotICAgICAgICBkb3dubG9hZFByb3h5LnNldEJ5dGVzTG9hZGVk
KGRvd25sb2FkUHJveHkuYnl0ZXNMb2FkZWQoKSArIGxlbmd0aCk7CiAgICAgICAgIGlmIChhdXRv
KiBjb250cm9sbGVyID0gc3lzdGVtUHJldmlld0NvbnRyb2xsZXIoZG93bmxvYWRQcm94eSkpCi0g
ICAgICAgICAgICBjb250cm9sbGVyLT51cGRhdGVQcm9ncmVzcyhzdGF0aWNfY2FzdDxmbG9hdD4o
ZG93bmxvYWRQcm94eS5ieXRlc0xvYWRlZCgpKSAvIGRvd25sb2FkUHJveHkuZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKCkpOworICAgICAgICAgICAgY29udHJvbGxlci0+dXBkYXRlUHJvZ3Jlc3Moc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHRvdGFsQnl0ZXNXcml0dGVuKSAvIHRvdGFsQnl0ZXNFeHBlY3RlZFRv
V3JpdGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAobV9kZWxl
Z2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlRGF0YSkKLSAgICAgICAgW21fZGVsZWdhdGUg
X2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZURhdGE6bGVuZ3RoXTsK
KyAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRXcml0ZURhdGFUb3RhbEJ5dGVz
V3JpdHRlblRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpCisgICAgICAgIFttX2RlbGVnYXRlIF9k
b3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFdyaXRlRGF0YTpieXRlc1dyaXR0ZW4g
dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9X
cml0ZTp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlXTsKKyAgICBlbHNlIGlmIChtX2RlbGVnYXRl
TWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVEYXRhKQorICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93
bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlRGF0YTpieXRlc1dyaXR0ZW5d
OwogfQogCiB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCShyZXZpc2lvbiAy
NjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NiwxMiArMTY2LDEyIEBAIHZvaWQgRG93bmxvYWRQ
cm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGMKICAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENs
aWVudCgpLmRpZFJlY2VpdmVSZXNwb25zZSgqdGhpcywgcmVzcG9uc2UpOwogfQogCi12b2lkIERv
d25sb2FkUHJveHk6OmRpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0aCkKK3ZvaWQgRG93bmxv
YWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEodWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0
b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkKIHsK
ICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vz
c1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZURhdGEoKnRoaXMsIGxlbmd0aCk7Cisg
ICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlRGF0YSgqdGhpcywg
Ynl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZSk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWVBc3luYyhEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDEyICs4OSw2IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZGVzdGluYXRpb25GaWxlbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25GaWxlbmFtZTsgfQogICAgIHZvaWQgc2V0RGVz
dGluYXRpb25GaWxlbmFtZShjb25zdCBTdHJpbmcmIGQpIHsgbV9kZXN0aW5hdGlvbkZpbGVuYW1l
ID0gZDsgfQogCi0gICAgdWludDY0X3QgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9leHBlY3RlZENvbnRlbnRMZW5ndGg7IH0KLSAgICB2b2lkIHNldEV4cGVjdGVkQ29u
dGVudExlbmd0aCh1aW50NjRfdCBleHBlY3RlZENvbnRlbnRMZW5ndGgpIHsgbV9leHBlY3RlZENv
bnRlbnRMZW5ndGggPSBleHBlY3RlZENvbnRlbnRMZW5ndGg7IH0KLQotICAgIHVpbnQ2NF90IGJ5
dGVzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlc0xvYWRlZDsgfQotICAgIHZvaWQgc2V0
Qnl0ZXNMb2FkZWQodWludDY0X3QgYnl0ZXNMb2FkZWQpIHsgbV9ieXRlc0xvYWRlZCA9IGJ5dGVz
TG9hZGVkOyB9Ci0KICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgYm9vbCBpc1N5c3RlbVBy
ZXZpZXdEb3dubG9hZCgpIGNvbnN0IHsgcmV0dXJuIHJlcXVlc3QoKS5pc1N5c3RlbVByZXZpZXco
KTsgfQogICAgIFdlYkNvcmU6OlN5c3RlbVByZXZpZXdJbmZvIHN5c3RlbVByZXZpZXdEb3dubG9h
ZEluZm8oKSBjb25zdCB7IHJldHVybiByZXF1ZXN0KCkuc3lzdGVtUHJldmlld0luZm8oKTsgfQpA
QCAtMTE2LDcgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTdGFydChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYmLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4s
IHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOwogICAgIHZvaWQgc2hvdWxkRGVj
b2RlU291cmNlRGF0YU9mTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCYgcmVz
dWx0KTsKICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7
CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKQEAgLTEzNCw4ICsxMjgsNiBAQCBwcml2YXRlOgogICAg
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgU3RyaW5nIG1fc3VnZ2Vz
dGVkRmlsZW5hbWU7CiAgICAgU3RyaW5nIG1fZGVzdGluYXRpb25GaWxlbmFtZTsKLSAgICB1aW50
NjRfdCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCB7IDAgfTsKLSAgICB1aW50NjRfdCBtX2J5dGVz
TG9hZGVkIHsgMCB9OwogCiAgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1fb3JpZ2luYXRpbmdQ
YWdlOwogICAgIFZlY3RvcjxVUkw+IG1fcmVkaXJlY3RDaGFpbjsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1l
c3NhZ2VzLmluCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjcs
NyArMjcsNyBAQCBtZXNzYWdlcyAtPiBEb3dubG9hZFByb3h5IHsKICAgICBEZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9h
ZElELCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUpCiAKICAgICBEaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKLSAgICBEaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBsZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEodWludDY0X3QgYnl0ZXNXcml0dGVu
LCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZSkKICAgICBEaWRDcmVhdGVEZXN0aW5hdGlvbihTdHJpbmcgcGF0aCkKICAgICBEaWRG
aW5pc2goKQogICAgIERpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgSVBDOjpE
YXRhUmVmZXJlbmNlIHJlc3VtZURhdGEpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjE4OTIpCisrKyBUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNS0xOSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBfV0tEb3du
bG9hZERlbGVnYXRlIGNhbGxiYWNrIGluY2x1ZGluZyB0b3RhbEJ5dGVzV3JpdHRlbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMTEwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MzM1ODk4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93
bmxvYWQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3REb3dubG9hZERlbGVnYXRlLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0RG93bmxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUg
X2Rvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6
ZGlkUmVjZWl2ZURhdGE6XSk6IERlbGV0ZWQuCisKIDIwMjAtMDUtMTkgIFNlcmdpbyBWaWxsYXIg
U2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gU3luYyBqaGJ1aWxk
IHRvIGZsYXRwYWsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RG93bmxvYWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Eb3dubG9hZC5tbQkocmV2aXNpb24gMjYxODg2KQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTIy
Myw3ICsxMjIzLDcgQEAgVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CiAg
ICAgfTsKIAotICAgIGVudW0gY2xhc3MgQ2FsbGJhY2sgOiB1aW50OF90IHsgU3RhcnQsIFJlY2Vp
dmVEYXRhLCBEZWNpZGVEZXN0aW5hdGlvbiwgQ3JlYXRlRGVzdGluYXRpb24sIENhbmNlbCwgRmlu
aXNoIH07CisgICAgZW51bSBjbGFzcyBDYWxsYmFjayA6IHVpbnQ4X3QgeyBTdGFydCwgV3JpdGVE
YXRhLCBEZWNpZGVEZXN0aW5hdGlvbiwgQ3JlYXRlRGVzdGluYXRpb24sIENhbmNlbCwgRmluaXNo
IH07CiAgICAgX19ibG9jayBWZWN0b3I8Q2FsbGJhY2s+IGNhbGxiYWNrczsKICAgICBfX2Jsb2Nr
IGJvb2wgZGlkQ2FuY2VsID0gZmFsc2U7CiAgICAgX19ibG9jayBib29sIGRpZEZpbmlzaCA9IGZh
bHNlOwpAQCAtMTIzNiw5ICsxMjM2LDExIEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAg
ICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24pOwogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpzdWdnZXN0ZWRGaWxlbmFtZV0ucGF0aCk7CiAgICAgfTsKLSAgICBkb3dubG9hZERl
bGVnYXRlLmdldCgpLmRpZFJlY2VpdmVEYXRhID0gXihfV0tEb3dubG9hZCAqZG93bmxvYWQsIHVp
bnQ2NF90IGxlbmd0aCkgewotICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpSZWNl
aXZlRGF0YSk7Ci0gICAgICAgIEVYUEVDVF9FUShsZW5ndGgsIDUwMDB1KTsKKyAgICBkb3dubG9h
ZERlbGVnYXRlLmdldCgpLmRpZFdyaXRlRGF0YSA9IF4oX1dLRG93bmxvYWQgKmRvd25sb2FkLCB1
aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRf
dCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQo
Q2FsbGJhY2s6OldyaXRlRGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShieXRlc1dyaXR0ZW4sIDUw
MDB1KTsKKyAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNXcml0dGVuLCBkaWRDYW5jZWwgPyAx
MDAwMHUgOiA1MDAwdSk7CisgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlLCAxMDAwMHUpOwogICAgICAgICByZWNlaXZlZERhdGEgPSB0cnVlOwogICAgIH07CiAgICAg
ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKS5kb3dubG9hZERpZFN0YXJ0ID0gXihfV0tEb3dubG9hZCAq
ZG93bmxvYWRGcm9tRGVsZWdhdGUpIHsKQEAgLTEyNzQsOSArMTI3Niw5IEBAIFRFU1QoX1dLRG93
bmxvYWQsIFJlc3VtZSkKICAgICBFWFBFQ1RfRVEoY2FsbGJhY2tzWzBdLCBDYWxsYmFjazo6U3Rh
cnQpOwogICAgIEVYUEVDVF9FUShjYWxsYmFja3NbMV0sIENhbGxiYWNrOjpEZWNpZGVEZXN0aW5h
dGlvbik7CiAgICAgRVhQRUNUX0VRKGNhbGxiYWNrc1syXSwgQ2FsbGJhY2s6OkNyZWF0ZURlc3Rp
bmF0aW9uKTsKLSAgICBFWFBFQ1RfRVEoY2FsbGJhY2tzWzNdLCBDYWxsYmFjazo6UmVjZWl2ZURh
dGEpOworICAgIEVYUEVDVF9FUShjYWxsYmFja3NbM10sIENhbGxiYWNrOjpXcml0ZURhdGEpOwog
ICAgIEVYUEVDVF9FUShjYWxsYmFja3NbNF0sIENhbGxiYWNrOjpDYW5jZWwpOwotICAgIEVYUEVD
VF9FUShjYWxsYmFja3NbNV0sIENhbGxiYWNrOjpSZWNlaXZlRGF0YSk7CisgICAgRVhQRUNUX0VR
KGNhbGxiYWNrc1s1XSwgQ2FsbGJhY2s6OldyaXRlRGF0YSk7CiAgICAgRVhQRUNUX0VRKGNhbGxi
YWNrc1s2XSwgQ2FsbGJhY2s6OkZpbmlzaCk7CiAKICAgICAvLyBHaXZlIENGTmV0d29yayBlbm91
Z2ggdGltZSB0byB1bmxpbmsgdGhlIGRvd25sb2FkZWQgZmlsZSBpZiBpdCB3b3VsZCBoYXZlLgpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdh
dGUuaAkocmV2aXNpb24gMjYxODg2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
RG93bmxvYWREZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkU3RhcnQpKF9XS0Rvd25s
b2FkICopOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RUb1VSTCkoX1dLRG93bmxvYWQgKiwgTlNVUkwgKik7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVSZXNwb25zZSkoX1dLRG93bmxvYWQgKiwg
TlNVUkxSZXNwb25zZSAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlk
UmVjZWl2ZURhdGEpKF9XS0Rvd25sb2FkICosIHVpbnQ2NF90KTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSB2b2lkICheZGlkV3JpdGVEYXRhKShfV0tEb3dubG9hZCAqLCB1aW50NjRfdCwg
dWludDY0X3QsIHVpbnQ2NF90KTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChe
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpKF9XS0Rvd25sb2FkICosIE5T
U3RyaW5nICosIHZvaWQgKF4pKEJPT0wsIE5TU3RyaW5nICopKTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRGaW5pc2gpKF9XS0Rvd25sb2FkICopOwogQHBy
b3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRGYWlsV2l0aEVycm9yKShfV0tEb3du
bG9hZCAqLCBOU0Vycm9yICopOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
RG93bmxvYWREZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCShyZXZpc2lvbiAyNjE4ODYpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00NiwxMCArNDYsMTAgQEAgLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93
bmxvYQogICAgICAgICBfZGlkUmVjZWl2ZVJlc3BvbnNlKGRvd25sb2FkLCByZXNwb25zZSk7CiB9
CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVE
YXRhOih1aW50NjRfdClsZW5ndGgKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRv
d25sb2FkIGRpZFdyaXRlRGF0YToodWludDY0X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0
dGVuOih1aW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRl
Oih1aW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCiB7Ci0gICAgaWYgKF9kaWRSZWNl
aXZlRGF0YSkKLSAgICAgICAgX2RpZFJlY2VpdmVEYXRhKGRvd25sb2FkLCBsZW5ndGgpOworICAg
IGlmIChfZGlkV3JpdGVEYXRhKQorICAgICAgICBfZGlkV3JpdGVEYXRhKGRvd25sb2FkLCBieXRl
c1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsK
IH0KIAogLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0
aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXIK
</data>

          </attachment>
      

    </bug>

</bugzilla>