<?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>151883</bug_id>
          
          <creation_ts>2015-12-04 13:57:32 -0800</creation_ts>
          <short_desc>Progress towards implementing downloads with NetworkSession</short_desc>
          <delta_ts>2015-12-08 15:06:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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></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>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1146387</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-12-04 13:57:32 -0800</bug_when>
    <thetext>Progress towards implementing downloads with NetworkSession</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146388</commentid>
    <comment_count>1</comment_count>
      <attachid>266657</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-12-04 13:57:53 -0800</bug_when>
    <thetext>Created attachment 266657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146399</commentid>
    <comment_count>2</comment_count>
      <attachid>266661</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-12-04 14:11:29 -0800</bug_when>
    <thetext>Created attachment 266661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147458</commentid>
    <comment_count>3</comment_count>
      <attachid>266661</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-08 13:52:50 -0800</bug_when>
    <thetext>Comment on attachment 266661
Patch

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

&gt; Source/WebKit2/NetworkProcess/NetworkSession.h:-106
&gt; -    ~NetworkSession() { ASSERT(m_dataTaskMap.isEmpty()); }

This ASSERT seems to be missing from the new ~NetworkSession. Intentional?

&gt; Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm:226
&gt; +    [m_session invalidateAndCancel];

The ASSERT I mentioned above seems to be missing here. Intentional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147475</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-12-08 14:20:10 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 266661 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=266661&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/NetworkSession.h:-106
&gt; &gt; -    ~NetworkSession() { ASSERT(m_dataTaskMap.isEmpty()); }
&gt; 
&gt; This ASSERT seems to be missing from the new ~NetworkSession. Intentional?
Yes, intentional.  That is because I was running into destroyed network sessions that had data tasks still, so I call [m_session invalidateAndCancel]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147486</commentid>
    <comment_count>5</comment_count>
      <attachid>266661</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-08 15:06:12 -0800</bug_when>
    <thetext>Comment on attachment 266661
Patch

Clearing flags on attachment: 266661

Committed r193787: &lt;http://trac.webkit.org/changeset/193787&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147487</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-08 15:06:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266657</attachid>
            <date>2015-12-04 13:57:53 -0800</date>
            <delta_ts>2015-12-04 14:11:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151883-20151204135727.patch</filename>
            <type>text/plain</type>
            <size>17355</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MzQ2NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE1LTEyLTA0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHJvZ3Jlc3Mg
dG93YXJkcyBpbXBsZW1lbnRpbmcgZG93bmxvYWRzIHdpdGggTmV0d29ya1Nlc3Npb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTg4MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp+TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrTG9hZDo6Y29udmVydFRhc2tUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6
OmRpZENvbXBsZXRlV2l0aEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRp
ZEJlY29tZURvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2Vp
dmVSZXNwb25zZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNvbnRpbnVl
Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2xlYW51
cCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkQ29udmVydFRv
RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRDb252ZXJ0SGFu
ZGxlVG9Eb3dubG9hZCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25UYXNrQ2xpZW50Ojp+TmV0d29y
a1Nlc3Npb25UYXNrQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246On5O
ZXR3b3JrU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bTmV0d29ya1Nlc3Npb25E
ZWxlZ2F0ZSBVUkxTZXNzaW9uOmRvd25sb2FkVGFzazpkaWRXcml0ZURhdGE6dG90YWxCeXRlc1dy
aXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpdKToKKyAgICAgICAgKC1bTmV0d29ya1Nl
c3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZEJlY29tZURvd25sb2FkVGFzazpd
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246On5OZXR3b3JrU2Vzc2lvbik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjcmVhdGVEYXRhVGFza1dpdGhSZXF1ZXN0KToKKyAg
ICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmg6CisgICAgICAgICogU2hhcmVkL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5h
Z2VyOjppc0Rvd25sb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjph
Y3RpdmVEb3dubG9hZENvdW50KToKKwogMjAxNS0xMi0wMyAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIGxheWVyIG1lbW9yeSB1c2UgY29uc3Vs
dCB0aGUgYmFja2luZyBzdG9yZSBmb3JtYXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAJKHJldmlzaW9uIDE5Mjk4NSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3
LDggKzE5Nyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnYKICAg
ICB9CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIC8vIEZJWE1FOiBEbyBzb21ldGhp
bmcgaGVyZS4KLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGxvYWRlci0+bmV0d29ya0xvYWQo
KS0+Y29udmVydFRhc2tUb0Rvd25sb2FkKCk7CiAjZWxzZQogICAgIG5ldHdvcmtQcm9jZXNzLmRv
d25sb2FkTWFuYWdlcigpLmNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKGRvd25sb2FkSUQsIGxvYWRl
ci0+bmV0d29ya0xvYWQoKS0+aGFuZGxlKCksIHJlcXVlc3QsIHJlc3BvbnNlKTsKIApJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNp
b24gMTkyOTg1KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw4IEBAIE5ldHdvcmtMb2FkOjp+TmV0d29y
a0xvYWQoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAjaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKKyAgICBpZiAobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKQorICAgICAg
ICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIoUG9saWN5SWdub3JlKTsKICAgICBtX3Rhc2st
PmNsZWFyQ2xpZW50KCk7CiAjZWxzZQogICAgIGlmIChtX2hhbmRsZSkKQEAgLTEyMiw4ICsxMjQs
OSBAQCB2b2lkIE5ldHdvcmtMb2FkOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzCiB2b2lkIE5ldHdv
cmtMb2FkOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiB7CiAjaWYgVVNFKE5FVFdPUktf
U0VTU0lPTikKLSAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIGhlcmUuCi0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICBBU1NFUlQobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBt
X3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIoUG9saWN5VXNlKTsKKyAgICBtX3Jlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXIgPSBudWxscHRyOwogI2Vsc2UKICAgICBtX2hhbmRsZS0+Y29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2UoKTsKICNlbmRpZgpAQCAtMTUxLDYgKzE1NCwxMyBAQCB2b2lkIE5l
dHdvcmtMb2FkOjpzaGFyZWRXaWxsU2VuZFJlZGlyZWN0CiAKICNpZiBVU0UoTkVUV09SS19TRVNT
SU9OKQogCit2b2lkIE5ldHdvcmtMb2FkOjpjb252ZXJ0VGFza1RvRG93bmxvYWQoKQoreworICAg
IEFTU0VSVChtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fcmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlcihQb2xpY3lEb3dubG9hZCk7CisgICAgbV9yZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyID0gbnVsbHB0cjsKK30KKwogdm9pZCBOZXR3b3JrTG9hZDo6d2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBzaGFyZWRXaWxsU2VuZFJlZGlyZWN0
ZWRSZXF1ZXN0KHJlcXVlc3QsIHJlc3BvbnNlKTsKQEAgLTE3NywxNiArMTg3LDE4IEBAIHZvaWQg
TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY28KICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBt
X2NoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CiAgICAgbV9j
aGFsbGVuZ2UgPSBjaGFsbGVuZ2U7CiAgICAgbV9jbGllbnQuY2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZUFzeW5jKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CiB9CiAK
LXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlBvbGljeUFjdGlvbik+
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgc2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICBjb21wbGV0aW9uSGFu
ZGxlcihQb2xpY3lVc2UpOworICAgIGlmIChzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9u
c2UpID09IE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZTo6WWVzKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lVc2UpOworICAgIGVsc2UK
KyAgICAgICAgbV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7
CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQpAQCAtMjA0LDYgKzIxNiwxMSBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRD
b21wbGV0ZVdpdGhFcnJvcihjCiAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxMb2FkaW5nKGVycm9y
KTsKIH0KIAordm9pZCBOZXR3b3JrTG9hZDo6ZGlkQmVjb21lRG93bmxvYWQoKQoreworICAgIG1f
Y2xpZW50LmRpZENvbnZlcnRUb0Rvd25sb2FkKCk7Cit9CisKICNlbHNlCiAKIHZvaWQgTmV0d29y
a0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlY2VpdmVkUmVzcG9uc2UpCkBAIC0yNzcsOCArMjk0LDgg
QEAgdm9pZCBOZXR3b3JrTG9hZDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdAogdm9pZCBOZXR3b3Jr
TG9hZDo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wg
cmVzdWx0KQogewogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgQVNTRVJUKG1fY29tcGxl
dGlvbkhhbmRsZXIpOwotICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEY6Om1vdmUobV9j
b21wbGV0aW9uSGFuZGxlcik7CisgICAgQVNTRVJUKG1fY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXIpOworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEY6Om1vdmUobV9jaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlcik7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1
bHRIYW5kbGluZywgQ3JlZGVudGlhbCgpKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAxOTI5ODUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OSwxMiArNTksMTUgQEAgcHVibGljOgogICAgIHZvaWQgY29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2UoKTsKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgdm9pZCBj
b252ZXJ0VGFza1RvRG93bmxvYWQoKTsKKyAgICAKICAgICAvLyBOZXR3b3JrU2Vzc2lvblRhc2tD
bGllbnQuCiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+
KSBmaW5hbCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIHN0ZDo6ZnVuY3Rpb248dm9p
ZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVk
ZW50aWFsJik+KSBmaW5hbCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoV2ViQ29yZTo6UG9saWN5QWN0aW9uKT4pIGZpbmFsIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRCZWNvbWVEb3dubG9hZCgpIGZpbmFsIG92ZXJyaWRlOwogI2Vsc2UKICAgICAvLyBSZXNv
dXJjZUhhbmRsZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJy
aWRlOwpAQCAtMTE3LDcgKzEyMCw4IEBAIHByaXZhdGU6CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lP
TikKICAgICBSZWY8TmV0d29ya0RhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgbV9jaGFsbGVuZ2U7Ci0gICAgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
ciBtX2NoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyOworICAgIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXIgbV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyOwogI2Vsc2UKICAgICBSZWZQdHI8V2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU+IG1faGFuZGxlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgJKHJldmlzaW9u
IDE5Mjk4NSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29udmVydFRvRG93bmxvYWQoKSA9IDA7CiAKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDE5Mjk4NSkK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCwyMyArMTk4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpjbGVhbnVwKCkKICAgICBtX2Nvbm5lY3Rpb24tPmRpZENsZWFudXBSZXNvdXJj
ZUxvYWRlcigqdGhpcyk7CiB9CiAKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLXZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRDb252ZXJ0SGFuZGxlVG9Eb3dubG9hZCgpCit2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkQ29udmVydFRvRG93bmxvYWQoKQogewogICAgIEFTU0VS
VChtX25ldHdvcmtMb2FkKTsKLSAgICBtX2RpZENvbnZlcnRIYW5kbGVUb0Rvd25sb2FkID0gdHJ1
ZTsKLX0KKyAgICBtX2RpZENvbnZlcnRUb0Rvd25sb2FkID0gdHJ1ZTsKKyNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQorICAgIG1fbmV0d29ya0xvYWQgPSBudWxscHRyOwogI2VuZGlmCit9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIAotICAgIGlmIChtX25ldHdvcmtMb2FkCi0jaWYgIVVTRShORVRXT1JLX1NF
U1NJT04pCi0gICAgICAgICYmICFtX2RpZENvbnZlcnRIYW5kbGVUb0Rvd25sb2FkCi0jZW5kaWYK
LSAgICApIHsKKyAgICBpZiAobV9uZXR3b3JrTG9hZCAmJiAhbV9kaWRDb252ZXJ0VG9Eb3dubG9h
ZCkgewogICAgICAgICBtX25ldHdvcmtMb2FkLT5jYW5jZWwoKTsKIAogI2lmIEVOQUJMRShORVRX
T1JLX0NBQ0hFKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE5Mjk4NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MSwxMCArNjEsNiBAQCBwdWJsaWM6CiAKICAgICBOZXR3b3JrTG9hZCogbmV0d29y
a0xvYWQoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtMb2FkLmdldCgpOyB9CiAKLSNpZiAhVVNF
KE5FVFdPUktfU0VTU0lPTikKLSAgICB2b2lkIGRpZENvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKCk7
Ci0jZW5kaWYKLQogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIGFib3J0KCk7CiAKQEAgLTEw
Niw2ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJs
ZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDb252ZXJ0VG9Eb3dubG9hZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYsIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5
PiYmKTsKQEAgLTE1MCw5ICsxNDcsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
eW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CiAgICAgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBtX2ZpbGVSZWZlcmVuY2VzOwog
Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgYm9vbCBtX2RpZENvbnZlcnRIYW5kbGVU
b0Rvd25sb2FkIHsgZmFsc2UgfTsKLSNlbmRpZgorICAgIGJvb2wgbV9kaWRDb252ZXJ0VG9Eb3du
bG9hZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RpZENvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucyB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2RlZmVyc0xvYWRpbmcgeyBmYWxzZSB9OwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgJKHJldmlz
aW9uIDE5Mjk4NSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDkgKzY0LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHN0ZDo6ZnVuY3Rp
b248dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4pID0gMDsKICAgICB0eXBl
ZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
LCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UG9saWN5QWN0aW9uKT4p
ID0gMDsKKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rp
b24pPiBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpID0gMDsKIAogICAgIHZpcnR1YWwgfk5l
dHdvcmtTZXNzaW9uVGFza0NsaWVudCgpIHsgfQogfTsKQEAgLTEwMyw3ICsxMDUsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEVwaGVtZXJhbAogICAgIH07CiAgICAgTmV0d29ya1Nlc3Npb24oVHlwZSwg
V2ViQ29yZTo6U2Vzc2lvbklEKTsKLSAgICB+TmV0d29ya1Nlc3Npb24oKSB7IEFTU0VSVChtX2Rh
dGFUYXNrTWFwLmlzRW1wdHkoKSk7IH0KKyAgICB+TmV0d29ya1Nlc3Npb24oKTsKIAogICAgIHN0
YXRpYyBOZXR3b3JrU2Vzc2lvbiYgZGVmYXVsdFNlc3Npb24oKTsKICAgICAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCShyZXZpc2lvbiAxOTI5ODUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udmVydFRvRG93bmxvYWQoKSBvdmVycmlkZSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVh
bCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3Zl
cnJpZGUgeyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMTky
OTg1KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCw3IEBAIC0gKHZvaWQpVVJM
U2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKIAogLSAodm9pZClVUkxTZXNzaW9uOihOU1VS
TFNlc3Npb24gKilzZXNzaW9uIGRvd25sb2FkVGFzazooTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNr
ICopZG93bmxvYWRUYXNrIGRpZFdyaXRlRGF0YTooaW50NjRfdClieXRlc1dyaXR0ZW4gdG90YWxC
eXRlc1dyaXR0ZW46KGludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZTooaW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCiB7CisgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghX3Nlc3Npb24tPmRhdGFUYXNrRm9ySWRlbnRpZmllcihbZG93bmxvYWRU
YXNrIHRhc2tJZGVudGlmaWVyXSksICJUaGUgTmV0d29ya0RhdGFUYXNrIHNob3VsZCBiZSBkZXN0
cm95ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZGlkQmVjb21lRG93bmxvYWRUYXNrIHJldHVybnMiKTsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCkBAIC0xODAsNyArMTgxLDEwIEBAIC0gKHZvaWQp
VVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKIAogLSAodm9pZClVUkxTZXNzaW9uOihO
U1VSTFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKWRh
dGFUYXNrIGRpZEJlY29tZURvd25sb2FkVGFzazooTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrICop
ZG93bmxvYWRUYXNrCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBhdXRvKiBuZXR3b3Jr
RGF0YVRhc2sgPSBfc2Vzc2lvbi0+ZGF0YVRhc2tGb3JJZGVudGlmaWVyKFtkYXRhVGFzayB0YXNr
SWRlbnRpZmllcl0pOworICAgIEFTU0VSVChuZXR3b3JrRGF0YVRhc2spOworICAgIGlmIChhdXRv
KiBjbGllbnQgPSBuZXR3b3JrRGF0YVRhc2stPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPmRp
ZEJlY29tZURvd25sb2FkKCk7CiB9CiAKIEBlbmQKQEAgLTIxNyw2ICsyMjEsMTEgQEAgTmV0d29y
a1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKFR5cGUgdHlwZQogICAgIG1fc2Vzc2lvbiA9IFtOU1VS
TFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24gZGVsZWdhdGU6
c3RhdGljX2Nhc3Q8aWQ+KG1fc2Vzc2lvbkRlbGVnYXRlLmdldCgpKSBkZWxlZ2F0ZVF1ZXVlOltO
U09wZXJhdGlvblF1ZXVlIG1haW5RdWV1ZV1dOwogfQogCitOZXR3b3JrU2Vzc2lvbjo6fk5ldHdv
cmtTZXNzaW9uKCkKK3sKKyAgICBbbV9zZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxdOworfQor
CiBSZWY8TmV0d29ya0RhdGFUYXNrPiBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlRGF0YVRhc2tXaXRo
UmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE5ldHdvcmtT
ZXNzaW9uVGFza0NsaWVudCYgY2xpZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5l
dHdvcmtEYXRhVGFzaygqdGhpcywgY2xpZW50LCBbbV9zZXNzaW9uIGRhdGFUYXNrV2l0aFJlcXVl
c3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6VXBkYXRlSFRUUEJvZHkpXSkpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAkocmV2aXNpb24g
MTkyOTg1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCwxMyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCitPQkpD
X0NMQVNTIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzazsKKyNlbHNlCiBPQkpDX0NMQVNTIE5TVVJM
RG93bmxvYWQ7CiBPQkpDX0NMQVNTIFdLRG93bmxvYWRBc0RlbGVnYXRlOwogI2VuZGlmCisjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VIYW5kbGUuaD4KQEAgLTEyNCw3ICsxMjgsNyBAQCBwcml2YXRlOgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICAvLyBGSVhNRTog
VGhpcyBuZWVkcyBtZW1iZXIgdmFyaWFibGVzLgorICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb25E
b3dubG9hZFRhc2s+IG1fZG93bmxvYWQ7CiAjZWxzZQogICAgIFJldGFpblB0cjxOU1VSTERvd25s
b2FkPiBtX25zVVJMRG93bmxvYWQ7CiAgICAgUmV0YWluUHRyPFdLRG93bmxvYWRBc0RlbGVnYXRl
PiBtX2RlbGVnYXRlOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5oCShyZXZpc2lvbiAxOTI5ODUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw3ICszMyw5IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKKyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKIGNsYXNzIFJlc291cmNlSGFuZGxl
OworI2VuZGlmCiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgU2Vzc2lvbklEOwpAQCAtNzcsMTMgKzc5LDggQEAgcHVibGljOgogICAgIHZvaWQg
Y2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCk7CiAKICAgICB2b2lkIGRvd25sb2Fk
RmluaXNoZWQoRG93bmxvYWQqKTsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIGJvb2wg
aXNEb3dubG9hZGluZygpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdWludDY0X3QgYWN0aXZlRG93bmxvYWRDb3VudCgpIGNvbnN0IHsgbm90SW1wbGVtZW50
ZWQoKTsgcmV0dXJuIDA7IH0KLSNlbHNlCiAgICAgYm9vbCBpc0Rvd25sb2FkaW5nKCkgY29uc3Qg
eyByZXR1cm4gIW1fZG93bmxvYWRzLmlzRW1wdHkoKTsgfQogICAgIHVpbnQ2NF90IGFjdGl2ZURv
d25sb2FkQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2Rvd25sb2Fkcy5zaXplKCk7IH0KLSNlbmRp
ZgogCiAgICAgdm9pZCBkaWRDcmVhdGVEb3dubG9hZCgpOwogICAgIHZvaWQgZGlkRGVzdHJveURv
d25sb2FkKCk7CkBAIC05Myw5ICs5MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBDbGll
bnQqIG1fY2xpZW50OwotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIEhhc2hNYXA8dWlu
dDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4+IG1fZG93bmxvYWRzOwotI2VuZGlmCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266661</attachid>
            <date>2015-12-04 14:11:29 -0800</date>
            <delta_ts>2015-12-08 15:06:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151883-20151204141104.patch</filename>
            <type>text/plain</type>
            <size>17576</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MzQ2NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE1LTEyLTA0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHJvZ3Jlc3Mg
dG93YXJkcyBpbXBsZW1lbnRpbmcgZG93bmxvYWRzIHdpdGggTmV0d29ya1Nlc3Npb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTg4MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp+TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrTG9hZDo6Y29udmVydFRhc2tUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6
OmRpZENvbXBsZXRlV2l0aEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRp
ZEJlY29tZURvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2Vp
dmVSZXNwb25zZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNvbnRpbnVl
Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2xlYW51
cCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkQ29udmVydFRv
RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRDb252ZXJ0SGFu
ZGxlVG9Eb3dubG9hZCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25UYXNrQ2xpZW50Ojp+TmV0d29y
a1Nlc3Npb25UYXNrQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246On5O
ZXR3b3JrU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bTmV0d29ya1Nlc3Npb25E
ZWxlZ2F0ZSBVUkxTZXNzaW9uOmRvd25sb2FkVGFzazpkaWRXcml0ZURhdGE6dG90YWxCeXRlc1dy
aXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpdKToKKyAgICAgICAgKC1bTmV0d29ya1Nl
c3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZEJlY29tZURvd25sb2FkVGFzazpd
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246On5OZXR3b3JrU2Vzc2lvbik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjcmVhdGVEYXRhVGFza1dpdGhSZXF1ZXN0KToKKyAg
ICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmg6CisgICAgICAgICogU2hhcmVkL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5h
Z2VyOjppc0Rvd25sb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjph
Y3RpdmVEb3dubG9hZENvdW50KToKKwogMjAxNS0xMi0wMyAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIGxheWVyIG1lbW9yeSB1c2UgY29uc3Vs
dCB0aGUgYmFja2luZyBzdG9yZSBmb3JtYXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAJKHJldmlzaW9uIDE5Mjk4NSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3
LDE1ICsxOTcsMTQgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udgog
ICAgIH0KIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgLy8gRklYTUU6IERvIHNvbWV0
aGluZyBoZXJlLgotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbG9hZGVyLT5uZXR3b3JrTG9h
ZCgpLT5jb252ZXJ0VGFza1RvRG93bmxvYWQoKTsKICNlbHNlCiAgICAgbmV0d29ya1Byb2Nlc3Mu
ZG93bmxvYWRNYW5hZ2VyKCkuY29udmVydEhhbmRsZVRvRG93bmxvYWQoZG93bmxvYWRJRCwgbG9h
ZGVyLT5uZXR3b3JrTG9hZCgpLT5oYW5kbGUoKSwgcmVxdWVzdCwgcmVzcG9uc2UpOwogCiAgICAg
Ly8gVW5ibG9jayB0aGUgVVJMIGNvbm5lY3Rpb24gb3BlcmF0aW9uIHF1ZXVlLgogICAgIGxvYWRl
ci0+bmV0d29ya0xvYWQoKS0+aGFuZGxlKCktPmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7
CiAgICAgCi0gICAgbG9hZGVyLT5kaWRDb252ZXJ0SGFuZGxlVG9Eb3dubG9hZCgpOworICAgIGxv
YWRlci0+ZGlkQ29udmVydFRvRG93bmxvYWQoKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAxOTI5
ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDggQEAgTmV0d29ya0xvYWQ6On5OZXR3b3JrTG9hZCgp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICNpZiBVU0UoTkVUV09SS19TRVNT
SU9OKQorICAgIGlmIChtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIG1fcmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlcihQb2xpY3lJZ25vcmUpOwogICAgIG1fdGFzay0+Y2xlYXJD
bGllbnQoKTsKICNlbHNlCiAgICAgaWYgKG1faGFuZGxlKQpAQCAtMTIyLDggKzEyNCw5IEBAIHZv
aWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXMKIHZvaWQgTmV0d29ya0xvYWQ6
OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKIHsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9O
KQotICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcgaGVyZS4KLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIEFTU0VSVChtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fcmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlcihQb2xpY3lVc2UpOworICAgIG1fcmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlciA9IG51bGxwdHI7CiAjZWxzZQogICAgIG1faGFuZGxlLT5jb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpOwogI2VuZGlmCkBAIC0xNTEsNiArMTU0LDEzIEBAIHZvaWQgTmV0d29ya0xv
YWQ6OnNoYXJlZFdpbGxTZW5kUmVkaXJlY3QKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAK
K3ZvaWQgTmV0d29ya0xvYWQ6OmNvbnZlcnRUYXNrVG9Eb3dubG9hZCgpCit7CisgICAgQVNTRVJU
KG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcik7CisgICAgbV9yZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyKFBvbGljeURvd25sb2FkKTsKKyAgICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIg
PSBudWxscHRyOworfQorCiB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QocmVxdWVzdCwgcmVzcG9uc2UpOwpAQCAtMTc3LDE2ICsxODcsMTggQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9jb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyOworICAgIG1fY2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKICAgICBtX2NoYWxsZW5n
ZSA9IGNoYWxsZW5nZTsKICAgICBtX2NsaWVudC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlQXN5bmMoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKTsKIH0KIAotdm9pZCBO
ZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UG9saWN5QWN0aW9uKT4gY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBzaGFy
ZWREaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKFBv
bGljeVVzZSk7CisgICAgaWYgKHNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSkgPT0g
TmV0d29ya0xvYWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpZZXMp
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeVVzZSk7CisgICAgZWxzZQorICAgICAg
ICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKIH0KIAog
dm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCkBAIC0yMDQsNiArMjE2LDExIEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRpZENvbXBsZXRl
V2l0aEVycm9yKGMKICAgICAgICAgbV9jbGllbnQuZGlkRmFpbExvYWRpbmcoZXJyb3IpOwogfQog
Cit2b2lkIE5ldHdvcmtMb2FkOjpkaWRCZWNvbWVEb3dubG9hZCgpCit7CisgICAgbV9jbGllbnQu
ZGlkQ29udmVydFRvRG93bmxvYWQoKTsKK30KKwogI2Vsc2UKIAogdm9pZCBOZXR3b3JrTG9hZDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVjZWl2ZWRSZXNwb25zZSkKQEAgLTI3Nyw4ICsyOTQsOCBAQCB2b2lk
IE5ldHdvcmtMb2FkOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0CiB2b2lkIE5ldHdvcmtMb2FkOjpj
b250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCByZXN1bHQp
CiB7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBBU1NFUlQobV9jb21wbGV0aW9uSGFu
ZGxlcik7Ci0gICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURjo6bW92ZShtX2NvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBBU1NFUlQobV9jaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcik7Cisg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURjo6bW92ZShtX2NoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyKTsKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRs
aW5nLCBDcmVkZW50aWFsKCkpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDE5Mjk4NSkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU5LDEyICs1OSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSgpOwogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKKyAgICB2b2lkIGNvbnZlcnRU
YXNrVG9Eb3dubG9hZCgpOworICAgIAogICAgIC8vIE5ldHdvcmtTZXNzaW9uVGFza0NsaWVudC4K
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHN0
ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4pIGZpbmFs
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgc3RkOjpmdW5jdGlvbjx2b2lkKEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwm
KT4pIGZpbmFsIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChXZWJD
b3JlOjpQb2xpY3lBY3Rpb24pPikgZmluYWwgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJikgZmluYWwgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZEJl
Y29tZURvd25sb2FkKCkgZmluYWwgb3ZlcnJpZGU7CiAjZWxzZQogICAgIC8vIFJlc291cmNlSGFu
ZGxlQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CkBA
IC0xMTcsNyArMTIwLDggQEAgcHJpdmF0ZToKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAg
IFJlZjxOZXR3b3JrRGF0YVRhc2s+IG1fdGFzazsKICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSBtX2NoYWxsZW5nZTsKLSAgICBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBt
X2NvbXBsZXRpb25IYW5kbGVyOworICAgIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIG1fY2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXI7CisgICAgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBt
X3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXI7CiAjZWxzZQogICAgIFJlZlB0cjxXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZT4gbV9oYW5kbGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkocmV2aXNpb24gMTkyOTg1
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
TG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDb252ZXJ0VG9Eb3dubG9hZCgpID0gMDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKENGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTkyOTg1KQorKysgU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk4LDIzICsxOTgsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNsZWFudXAoKQogICAgIG1fY29ubmVjdGlvbi0+ZGlkQ2xlYW51cFJlc291cmNlTG9hZGVy
KCp0aGlzKTsKIH0KIAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZENvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKCkKK3ZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRDb252ZXJ0VG9Eb3dubG9hZCgpCiB7CiAgICAgQVNTRVJUKG1fbmV0
d29ya0xvYWQpOwotICAgIG1fZGlkQ29udmVydEhhbmRsZVRvRG93bmxvYWQgPSB0cnVlOwotfQor
ICAgIG1fZGlkQ29udmVydFRvRG93bmxvYWQgPSB0cnVlOworI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCisgICAgbV9uZXR3b3JrTG9hZCA9IG51bGxwdHI7CiAjZW5kaWYKK30KIAogdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0KCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgaWYgKG1fbmV0d29ya0xvYWQKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikK
LSAgICAgICAgJiYgIW1fZGlkQ29udmVydEhhbmRsZVRvRG93bmxvYWQKLSNlbmRpZgotICAgICkg
eworICAgIGlmIChtX25ldHdvcmtMb2FkICYmICFtX2RpZENvbnZlcnRUb0Rvd25sb2FkKSB7CiAg
ICAgICAgIG1fbmV0d29ya0xvYWQtPmNhbmNlbCgpOwogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FD
SEUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTkyOTg1KQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYxLDEwICs2MSw2IEBAIHB1YmxpYzoKIAogICAgIE5ldHdvcmtMb2FkKiBuZXR3b3JrTG9hZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya0xvYWQuZ2V0KCk7IH0KIAotI2lmICFVU0UoTkVUV09S
S19TRVNTSU9OKQotICAgIHZvaWQgZGlkQ29udmVydEhhbmRsZVRvRG93bmxvYWQoKTsKLSNlbmRp
ZgotCiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZvaWQgYWJvcnQoKTsKIApAQCAtMTA2LDYgKzEw
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlz
aFRpbWUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENv
bnZlcnRUb0Rvd25sb2FkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya1Jlc291
cmNlTG9hZGVyKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiwgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZWZQdHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYpOwpA
QCAtMTUwLDkgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9u
b3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKICAgICBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IG1fZmlsZVJlZmVyZW5jZXM7CiAKLSNpZiAh
VVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBib29sIG1fZGlkQ29udmVydEhhbmRsZVRvRG93bmxv
YWQgeyBmYWxzZSB9OwotI2VuZGlmCisgICAgYm9vbCBtX2RpZENvbnZlcnRUb0Rvd25sb2FkIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fZGlkQ29uc3VtZVNhbmRib3hFeHRlbnNpb25zIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fZGVmZXJzTG9hZGluZyB7IGZhbHNlIH07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkocmV2aXNpb24gMTky
OTg1KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNjQsOSArNjQsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwgc3RkOjpmdW5jdGlvbjx2b2lk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpPikgPSAwOwogICAgIHR5cGVkZWYgc3Rk
OjpmdW5jdGlvbjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT4gQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXI7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24pPikgPSAwOwor
ICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlBvbGljeUFjdGlvbik+IFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXI7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRl
V2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZEJlY29tZURvd25sb2FkKCkgPSAwOwogCiAgICAgdmlydHVhbCB+TmV0d29ya1Nl
c3Npb25UYXNrQ2xpZW50KCkgeyB9CiB9OwpAQCAtMTAzLDcgKzEwNSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgRXBoZW1lcmFsCiAgICAgfTsKICAgICBOZXR3b3JrU2Vzc2lvbihUeXBlLCBXZWJDb3Jl
OjpTZXNzaW9uSUQpOwotICAgIH5OZXR3b3JrU2Vzc2lvbigpIHsgQVNTRVJUKG1fZGF0YVRhc2tN
YXAuaXNFbXB0eSgpKTsgfQorICAgIH5OZXR3b3JrU2Vzc2lvbigpOwogCiAgICAgc3RhdGljIE5l
dHdvcmtTZXNzaW9uJiBkZWZhdWx0U2Vzc2lvbigpOwogICAgIApJbmRleDogU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmgJKHJldmlzaW9uIDE5Mjk4NSkKKysrIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb252ZXJ0VG9Eb3dubG9hZCgpIG92ZXJyaWRlIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbENhY2hlUmVzcG9uc2VBc3luYyhDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZSB7
IH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAxOTI5ODUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDcgQEAgLSAodm9pZClVUkxTZXNzaW9u
OihOU1VSTFNlc3Npb24gKilzZXNzaQogCiAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lv
biAqKXNlc3Npb24gZG93bmxvYWRUYXNrOihOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKilkb3du
bG9hZFRhc2sgZGlkV3JpdGVEYXRhOihpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3Jp
dHRlbjooaW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRl
OihpbnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUKIHsKKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKCFfc2Vzc2lvbi0+ZGF0YVRhc2tGb3JJZGVudGlmaWVyKFtkb3dubG9hZFRhc2sgdGFz
a0lkZW50aWZpZXJdKSwgIlRoZSBOZXR3b3JrRGF0YVRhc2sgc2hvdWxkIGJlIGRlc3Ryb3llZCBp
bW1lZGlhdGVseSBhZnRlciBkaWRCZWNvbWVEb3dubG9hZFRhc2sgcmV0dXJucyIpOwogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKQEAgLTE4MCw3ICsxODEsMTAgQEAgLSAodm9pZClVUkxTZXNz
aW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogCiAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vz
c2lvbiAqKXNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0YVRhc2sg
ZGlkQmVjb21lRG93bmxvYWRUYXNrOihOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKilkb3dubG9h
ZFRhc2sKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGF1dG8qIG5ldHdvcmtEYXRhVGFz
ayA9IF9zZXNzaW9uLT5kYXRhVGFza0ZvcklkZW50aWZpZXIoW2RhdGFUYXNrIHRhc2tJZGVudGlm
aWVyXSk7CisgICAgQVNTRVJUKG5ldHdvcmtEYXRhVGFzayk7CisgICAgaWYgKGF1dG8qIGNsaWVu
dCA9IG5ldHdvcmtEYXRhVGFzay0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+ZGlkQmVjb21l
RG93bmxvYWQoKTsKIH0KIAogQGVuZApAQCAtMjE3LDYgKzIyMSwxMSBAQCBOZXR3b3JrU2Vzc2lv
bjo6TmV0d29ya1Nlc3Npb24oVHlwZSB0eXBlCiAgICAgbV9zZXNzaW9uID0gW05TVVJMU2Vzc2lv
biBzZXNzaW9uV2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNf
Y2FzdDxpZD4obV9zZXNzaW9uRGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0
aW9uUXVldWUgbWFpblF1ZXVlXV07CiB9CiAKK05ldHdvcmtTZXNzaW9uOjp+TmV0d29ya1Nlc3Np
b24oKQoreworICAgIFttX3Nlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07Cit9CisKIFJlZjxO
ZXR3b3JrRGF0YVRhc2s+IE5ldHdvcmtTZXNzaW9uOjpjcmVhdGVEYXRhVGFza1dpdGhSZXF1ZXN0
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTmV0d29ya1Nlc3Npb25U
YXNrQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0Rh
dGFUYXNrKCp0aGlzLCBjbGllbnQsIFttX3Nlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpyZXF1
ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpVcGRhdGVIVFRQQm9keSldKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCShyZXZpc2lvbiAxOTI5ODUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDkgKzM0LDEzIEBACiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogCisjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKK09CSkNfQ0xBU1Mg
TlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOworI2Vsc2UKIE9CSkNfQ0xBU1MgTlNVUkxEb3dubG9h
ZDsKIE9CSkNfQ0xBU1MgV0tEb3dubG9hZEFzRGVsZWdhdGU7CiAjZW5kaWYKKyNlbmRpZgogCiAj
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUhhbmRsZS5oPgpAQCAtMTI0LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIC8vIEZJWE1FOiBUaGlzIG5l
ZWRzIG1lbWJlciB2YXJpYWJsZXMuCisgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbkRvd25sb2Fk
VGFzaz4gbV9kb3dubG9hZDsKICNlbHNlCiAgICAgUmV0YWluUHRyPE5TVVJMRG93bmxvYWQ+IG1f
bnNVUkxEb3dubG9hZDsKICAgICBSZXRhaW5QdHI8V0tEb3dubG9hZEFzRGVsZWdhdGU+IG1fZGVs
ZWdhdGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmgJKHJldmlzaW9uIDE5Mjk4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDkgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
eworI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CisjZW5k
aWYKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFz
cyBTZXNzaW9uSUQ7CkBAIC03NywxMyArNzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxE
b3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKTsKIAogICAgIHZvaWQgZG93bmxvYWRGaW5pc2hl
ZChEb3dubG9hZCopOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgYm9vbCBpc0Rvd25s
b2FkaW5nKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gZmFsc2U7IH0KLSAgICB1
aW50NjRfdCBhY3RpdmVEb3dubG9hZENvdW50KCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyBy
ZXR1cm4gMDsgfQotI2Vsc2UKICAgICBib29sIGlzRG93bmxvYWRpbmcoKSBjb25zdCB7IHJldHVy
biAhbV9kb3dubG9hZHMuaXNFbXB0eSgpOyB9CiAgICAgdWludDY0X3QgYWN0aXZlRG93bmxvYWRD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRzLnNpemUoKTsgfQotI2VuZGlmCiAKICAg
ICB2b2lkIGRpZENyZWF0ZURvd25sb2FkKCk7CiAgICAgdm9pZCBkaWREZXN0cm95RG93bmxvYWQo
KTsKQEAgLTkzLDkgKzkwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIENsaWVudCogbV9j
bGllbnQ7Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
c3RkOjp1bmlxdWVfcHRyPERvd25sb2FkPj4gbV9kb3dubG9hZHM7Ci0jZW5kaWYKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>