<?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>167489</bug_id>
          
          <creation_ts>2017-01-26 21:46:54 -0800</creation_ts>
          <short_desc>[WebRTC] Add support for libwebrtc data channel</short_desc>
          <delta_ts>2017-01-30 09:38:10 -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>WebCore Misc.</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>
          
          <blocked>143211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1270554</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-01-26 21:46:54 -0800</bug_when>
    <thetext>[WebRTC] Add support for libwebrtc data channel</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270704</commentid>
    <comment_count>1</comment_count>
      <attachid>299945</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-01-27 11:03:37 -0800</bug_when>
    <thetext>Created attachment 299945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270733</commentid>
    <comment_count>2</comment_count>
      <attachid>299945</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-01-27 12:18:45 -0800</bug_when>
    <thetext>Comment on attachment 299945
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        ntroducing LibWebRTCDataChannelHandler as the integration layer between WebCore (RTCDataChannel)

Introducing

&gt; Source/WebCore/Modules/mediastream/RTCDataChannel.cpp:-68
&gt; -    m_handler-&gt;setClient(this);

Does moving this accomplish anything?

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:52
&gt; +    return m_channel-&gt;Send({rtc::CopyOnWriteBuffer(text.utf8().data(), text.length()), false});

The CString returned by utf8() goes out of scope immediately.  Will that cause a problem with the lifetime of CopyOnWriteBuffer?  Will it ever read after the CString has been freed?

&gt; Source/WebCore/platform/mediastream/RTCDataChannelHandlerClient.h:34
&gt; +class RTCDataChannelHandlerClient : public RefCounted&lt;RTCDataChannelHandlerClient&gt; {

This should be ThreadSafeRefCounted because we are calling ref and deref from different threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270836</commentid>
    <comment_count>3</comment_count>
      <attachid>299980</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-01-27 16:44:08 -0800</bug_when>
    <thetext>Created attachment 299980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270837</commentid>
    <comment_count>4</comment_count>
      <attachid>299981</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-01-27 16:44:42 -0800</bug_when>
    <thetext>Created attachment 299981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270840</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-01-27 16:48:44 -0800</bug_when>
    <thetext>Thanks for the review.

&gt; &gt; Source/WebCore/Modules/mediastream/RTCDataChannel.cpp:-68
&gt; &gt; -    m_handler-&gt;setClient(this);
&gt; 
&gt; Does moving this accomplish anything?

The call to setClient triggers taking a ref of the channel at libwebrtc stack.
If done within constructor, it will happen before the pointer being adopted.

&gt; &gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:52
&gt; &gt; +    return m_channel-&gt;Send({rtc::CopyOnWriteBuffer(text.utf8().data(), text.length()), false});
&gt; 
&gt; The CString returned by utf8() goes out of scope immediately.  Will that
&gt; cause a problem with the lifetime of CopyOnWriteBuffer?  Will it ever read
&gt; after the CString has been freed?

CopyOnWrite is doing its own copy of the data.

&gt; &gt; Source/WebCore/platform/mediastream/RTCDataChannelHandlerClient.h:34
&gt; &gt; +class RTCDataChannelHandlerClient : public RefCounted&lt;RTCDataChannelHandlerClient&gt; {
&gt; 
&gt; This should be ThreadSafeRefCounted because we are calling ref and deref
&gt; from different threads.

Right!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270866</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-01-27 17:41:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/30245427&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271283</commentid>
    <comment_count>7</comment_count>
      <attachid>299981</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-30 09:38:06 -0800</bug_when>
    <thetext>Comment on attachment 299981
Patch

Clearing flags on attachment: 299981

Committed r211371: &lt;http://trac.webkit.org/changeset/211371&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271284</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-30 09:38:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299945</attachid>
            <date>2017-01-27 11:03:37 -0800</date>
            <delta_ts>2017-01-27 16:44:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167489-20170127110133.patch</filename>
            <type>text/plain</type>
            <size>22012</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFmZGNkODdiZThhNzc5
MTRhOTlmNGZlNjQ1YTJiYTA2ZWI5ODJkNS4uMzE5ZDY3YmM0ZDMwZDgwMGFlZjE5ZGZlZGJhNjk1
NDk5NTA0NTE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTAxLTI3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gQWRkIHN1
cHBvcnQgZm9yIGxpYndlYnJ0YyBkYXRhIGNoYW5uZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnRpYWxseSBjb3ZlcmVkIGJ5IHdlYnJ0Yy9kYXRh
Y2hhbm5lbC9iYXNpYy5odG1sIGJ1dCBub3QgeWV0IGVuYWJsZWQgb24gYm90cy4KKworICAgICAg
ICBudHJvZHVjaW5nIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciBhcyB0aGUgaW50ZWdyYXRp
b24gbGF5ZXIgYmV0d2VlbiBXZWJDb3JlIChSVENEYXRhQ2hhbm5lbCkKKyAgICAgICAgYW5kIGxp
YndlYnJ0YyAoRGF0YUNoYW5uZWxPYnNlcnZlcikuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFD
aGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpidWZmZXJlZEFtb3Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6YnVmZmVyZWRBbW91bnRJc0Rl
Y3JlYXNpbmcpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
aDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlcjo6fkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRTdHJpbmdEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFJh
d0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpj
bG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9u
U3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpPbk1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25SZW1vdmVTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkRGF0YUNoYW5uZWwpOgorICAgICAg
ICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIpOgor
ICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmg6CisKIDIwMTctMDEtMjcgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGR5bmFtaWMt
aW1wb3J0IGZvciBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IGVkZDY3OTMzMWUwNTJmYWQ2YzYxOWUx
ZDJiMzk5NDhlNjVlNDhhZDguLjc2NzIzZTRlZWQ3NTNkYTkzNzAxMGNlY2IxZTRhODY2ODE3MjAw
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWwuY3BwCkBAIC01NSw3ICs1NSw5IEBAIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGFycmF5YnVmZmVyS2V5d29yZCgpCiBSZWY8UlRDRGF0YUNoYW5uZWw+IFJUQ0RhdGFDaGFu
bmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3RkOjp1bmlxdWVf
cHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4mJiBoYW5kbGVyLCBTdHJpbmcmJiBsYWJlbCwgUlRD
RGF0YUNoYW5uZWxJbml0JiYgb3B0aW9ucykKIHsKICAgICBBU1NFUlQoaGFuZGxlcik7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDRGF0YUNoYW5uZWwoY29udGV4dCwgV1RGTW92ZShoYW5k
bGVyKSwgV1RGTW92ZShsYWJlbCksIFdURk1vdmUob3B0aW9ucykpKTsKKyAgICBhdXRvIGNoYW5u
ZWwgPSBhZG9wdFJlZigqbmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIFdURk1vdmUoaGFuZGxl
ciksIFdURk1vdmUobGFiZWwpLCBXVEZNb3ZlKG9wdGlvbnMpKSk7CisgICAgY2hhbm5lbC0+bV9o
YW5kbGVyLT5zZXRDbGllbnQoJmNoYW5uZWwuZ2V0KCkpOworICAgIHJldHVybiBjaGFubmVsOwog
fQogCiBSVENEYXRhQ2hhbm5lbDo6UlRDRGF0YUNoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4mJiBoYW5k
bGVyLCBTdHJpbmcmJiBsYWJlbCwgUlRDRGF0YUNoYW5uZWxJbml0JiYgb3B0aW9ucykKQEAgLTY1
LDcgKzY3LDYgQEAgUlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFDaGFubmVsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjwKICAgICAsIG1fbGFiZWwoV1RGTW92
ZShsYWJlbCkpCiAgICAgLCBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKIHsKLSAgICBtX2hh
bmRsZXItPnNldENsaWVudCh0aGlzKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBSVENEYXRh
Q2hhbm5lbDo6cmVhZHlTdGF0ZSgpIGNvbnN0CkBAIC05MCw5ICs5MSw5IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgUlRDRGF0YUNoYW5uZWw6OnJlYWR5U3RhdGUoKSBjb25zdAogICAgIHJldHVybiBl
bXB0eUF0b207CiB9CiAKLXVuc2lnbmVkIFJUQ0RhdGFDaGFubmVsOjpidWZmZXJlZEFtb3VudCgp
IGNvbnN0CitzaXplX3QgUlRDRGF0YUNoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9oYW5kbGVyLT5idWZmZXJlZEFtb3VudCgpOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFJUQ0RhdGFDaGFubmVsOjpiaW5hcnlUeXBlKCkgY29u
c3QKQEAgLTIyMiw2ICsyMjMsMTUgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkRGV0ZWN0RXJy
b3IoKQogICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIAordm9pZCBSVENEYXRhQ2hhbm5lbDo6
YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoKQoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChidWZmZXJlZEFtb3VudCgpIDw9IG1fYnVmZmVyZWRBbW91
bnRMb3dUaHJlc2hvbGQpCisgICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5idWZmZXJlZEFtb3VudExvd1RocmVzaG9sZEV2ZW50LCBmYWxzZSwg
ZmFsc2UpKTsKK30KKwogdm9pZCBSVENEYXRhQ2hhbm5lbDo6c3RvcCgpCiB7CiAgICAgbV9zdG9w
cGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuaAppbmRleCAyODRlYzlhZDkxZTE3ZmRkOWI4Y2JiOGUwNGM2M2MwMTRl
M2FmZDdlLi5jZDg2MGYxODRkMmVlMzU1ZjA4NzY4ZjkyYmI0ZTA5MGY3NDg0MDMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5o
CkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2I7CiBjbGFz
cyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiAKLWNsYXNzIFJUQ0RhdGFDaGFubmVsIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8UlRDRGF0YUNoYW5uZWw+LCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSwgcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCB7CitjbGFz
cyBSVENEYXRhQ2hhbm5lbCBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFJUQ0RhdGFDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHN0
ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+JiYsIFN0cmluZyYmLCBSVENEYXRh
Q2hhbm5lbEluaXQmJik7CiAKQEAgLTU3LDcgKzU3LDkgQEAgcHVibGljOgogCiAgICAgU3RyaW5n
IGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQogICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgcmVhZHlTdGF0ZSgpIGNvbnN0OwotICAgIHVuc2lnbmVkIGJ1ZmZlcmVkQW1vdW50KCkgY29u
c3Q7CisgICAgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CisgICAgc2l6ZV90IGJ1ZmZl
cmVkQW1vdW50TG93VGhyZXNob2xkKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJlZEFtb3VudExv
d1RocmVzaG9sZDsgfQorICAgIHZvaWQgc2V0QnVmZmVyZWRBbW91bnRMb3dUaHJlc2hvbGQoc2l6
ZV90IHZhbHVlKSB7IG1fYnVmZmVyZWRBbW91bnRMb3dUaHJlc2hvbGQgPSB2YWx1ZTsgfQogCiAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBiaW5hcnlUeXBlKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9u
T3I8dm9pZD4gc2V0QmluYXJ5VHlwZShjb25zdCBBdG9taWNTdHJpbmcmKTsKQEAgLTcxLDggKzcz
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzdG9wKCk7CiAKLSAgICB1c2luZyBSZWZDb3VudGVk
OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CisgICAgdXNpbmcgUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50OjpyZWY7CisgICAgdXNpbmcgUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Q2xpZW50OjpkZXJlZjsKIAogcHJpdmF0ZToKICAgICBSVENEYXRhQ2hhbm5lbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jiwgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4mJiwg
U3RyaW5nJiYsIFJUQ0RhdGFDaGFubmVsSW5pdCYmKTsKQEAgLTg4LDEyICs5MCwxMiBAQCBwcml2
YXRlOgogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogCisgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50IEFQSQogICAgIHZvaWQg
ZGlkQ2hhbmdlUmVhZHlTdGF0ZShSZWFkeVN0YXRlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2Vp
dmVTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJh
d0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBkaWREZXRlY3RFcnJv
cigpIGZpbmFsOwotICAgIHZvaWQgcHJvdGVjdCgpIGZpbmFsIHsgcmVmKCk7IH0KLSAgICB2b2lk
IHVucHJvdGVjdCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorICAgIHZvaWQgYnVmZmVyZWRBbW91bnRJ
c0RlY3JlYXNpbmcoKSBmaW5hbDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5l
bEhhbmRsZXI+IG1faGFuZGxlcjsKIApAQCAtMTA5LDYgKzExMSw3IEBAIHByaXZhdGU6CiAKICAg
ICBTdHJpbmcgbV9sYWJlbDsKICAgICBSVENEYXRhQ2hhbm5lbEluaXQgbV9vcHRpb25zOworICAg
IHNpemVfdCBtX2J1ZmZlcmVkQW1vdW50TG93VGhyZXNob2xkIHsgMCB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY0YjZkMWM4MjdjMzZjOWViNjU0OGIwOWFmYmM4
YWY2NTRiMDJiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTAs
MCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5oIgorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIlJUQ0RhdGFDaGFu
bmVsLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6On5MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jaGFubmVsLT5VbnJlZ2lz
dGVyT2JzZXJ2ZXIoKTsKK30KKwordm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNl
dENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2Ns
aWVudCA9IGNsaWVudDsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2hhbm5lbC0+UmVn
aXN0ZXJPYnNlcnZlcih0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIG1fY2hhbm5lbC0+VW5yZWdp
c3Rlck9ic2VydmVyKCk7Cit9CisKK2Jvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgcmV0dXJuIG1fY2hhbm5l
bC0+U2VuZCh7cnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcih0ZXh0LnV0ZjgoKS5kYXRhKCksIHRleHQu
bGVuZ3RoKCkpLCBmYWxzZX0pOworfQorCitib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cjo6c2VuZFJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBy
ZXR1cm4gbV9jaGFubmVsLT5TZW5kKHtydGM6OkNvcHlPbldyaXRlQnVmZmVyKGRhdGEsIGxlbmd0
aCksIHRydWV9KTsKK30KKwordm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNsb3Nl
KCkKK3sKKyAgICBtX2NoYW5uZWwtPkNsb3NlKCk7Cit9CisKK3ZvaWQgTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyOjpPblN0YXRlQ2hhbmdlKCkKK3sKKyAgICBSVENEYXRhQ2hhbm5lbDo6UmVh
ZHlTdGF0ZSBzdGF0ZTsKKyAgICBzd2l0Y2ggKG1fY2hhbm5lbC0+c3RhdGUoKSkgeworICAgIGNh
c2Ugd2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZTo6a0Nvbm5lY3Rpbmc6CisgICAgICAgIHN0
YXRlID0gUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGVDb25uZWN0aW5nOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U6OmtPcGVuOgorICAgICAg
ICBzdGF0ZSA9IFJUQ0RhdGFDaGFubmVsOjpSZWFkeVN0YXRlT3BlbjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSB3ZWJydGM6OkRhdGFDaGFubmVsSW50ZXJmYWNlOjprQ2xvc2luZzoKKyAgICAg
ICAgc3RhdGUgPSBSVENEYXRhQ2hhbm5lbDo6UmVhZHlTdGF0ZUNsb3Npbmc7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2Ugd2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZTo6a0Nsb3NlZDoKKyAg
ICAgICAgc3RhdGUgPSBSVENEYXRhQ2hhbm5lbDo6UmVhZHlTdGF0ZUNsb3NlZDsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgY2FsbE9uTWFpblRocmVh
ZChbcHJvdGVjdGVkQ2xpZW50ID0gbWFrZVJlZigqbV9jbGllbnQpLCBzdGF0ZV0geworICAgICAg
ICBwcm90ZWN0ZWRDbGllbnQtPmRpZENoYW5nZVJlYWR5U3RhdGUoc3RhdGUpOworICAgIH0pOwor
fQorCit2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25NZXNzYWdlKGNvbnN0IHdl
YnJ0Yzo6RGF0YUJ1ZmZlciYgYnVmZmVyKQoreworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6RGF0YUJ1ZmZlcj4gcHJvdGVjdGVkQnVmZmVyKG5ldyB3
ZWJydGM6OkRhdGFCdWZmZXIoYnVmZmVyKSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkQ2xpZW50ID0gbWFrZVJlZigqbV9jbGllbnQpLCBidWZmZXIgPSBXVEZNb3ZlKHByb3RlY3Rl
ZEJ1ZmZlcildIHsKKyAgICAgICAgLy8gRklYTUU6IEVuc3VyZSB0aGlzIGlzIGNvcnJlY3QgYnkg
YWRkaW5nIHNvbWUgdGVzdHMgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycy4KKyAgICAgICAgY29u
c3QgY2hhciogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci0+ZGF0
YS5kYXRhKCkpOworICAgICAgICBpZiAoYnVmZmVyLT5iaW5hcnkpCisgICAgICAgICAgICBwcm90
ZWN0ZWRDbGllbnQtPmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcHJvdGVjdGVkQ2xpZW50LT5kaWRSZWNlaXZlU3RyaW5n
RGF0YShTdHJpbmcoZGF0YSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICB9KTsKK30KKwordm9pZCBM
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uQnVmZmVyZWRBbW91bnRDaGFuZ2UodWludDY0
X3QgcHJldmlvdXNBbW91bnQpCit7CisgICAgaWYgKHByZXZpb3VzQW1vdW50IDw9IG1fY2hhbm5l
bC0+YnVmZmVyZWRfYW1vdW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9jbGll
bnQpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZENsaWVudCA9IG1ha2VSZWYoKm1f
Y2xpZW50KV0geworICAgICAgICBwcm90ZWN0ZWRDbGllbnQtPmJ1ZmZlcmVkQW1vdW50SXNEZWNy
ZWFzaW5nKCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5YzhiN2JlNjM1MWM3NzNhZDdlMjc1ZTlmYWNhZGYz
YjhjZTg0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtMCwwICsx
LDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJU
Q01hY3Jvcy5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIgorI2luY2x1ZGUg
PHdlYnJ0Yy9hcGkvZGF0YWNoYW5uZWxpbnRlcmZhY2UuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ7CisKK2NsYXNzIExpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIs
IHByaXZhdGUgd2VicnRjOjpEYXRhQ2hhbm5lbE9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+JiYgY2hhbm5lbCkgOiBtX2NoYW5uZWwoV1RGTW92ZShj
aGFubmVsKSkgeyBBU1NFUlQobV9jaGFubmVsKTsgfQorICAgIH5MaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIoKTsKKworcHJpdmF0ZToKKyAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIgQVBJ
CisgICAgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KikgZmluYWw7
CisgICAgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29s
IHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgY2xvc2Uo
KSBmaW5hbDsKKyAgICBzaXplX3QgYnVmZmVyZWRBbW91bnQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2NoYW5uZWwtPmJ1ZmZlcmVkX2Ftb3VudCgpOyB9CisKKyAgICAvLyB3ZWJydGM6OkRhdGFD
aGFubmVsT2JzZXJ2ZXIgQVBJCisgICAgdm9pZCBPblN0YXRlQ2hhbmdlKCk7CisgICAgdm9pZCBP
bk1lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CisgICAgdm9pZCBPbkJ1ZmZlcmVk
QW1vdW50Q2hhbmdlKHVpbnQ2NF90KTsKKworICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OkRhdGFDaGFubmVsSW50ZXJmYWNlPiBtX2NoYW5uZWw7CisgICAgUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IGM0ZjQwNjMxZDYzNDlkZmYwNGJiNDM3OGQzZDE3
OGJjOGQ0ZDU5NTYuLmVkZWYzYzU2MmU5NGNlYjYyMTQxMzEyNGVkZTdlNjUyYzcwM2U4ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNp
bmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5o
IgogI2luY2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCkBAIC0yODUsNyArMjg2LDUwIEBAIHZvaWQg
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25BZGRTdHJlYW0ocnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6TWVkaWFTdHJlYW1JCiAKIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25SZW1v
dmVTdHJlYW0ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2U+
KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3N0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IExpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6OmNyZWF0ZURhdGFDaGFubmVsKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFJU
Q0RhdGFDaGFubmVsSW5pdCYgb3B0aW9ucykKK3sKKyAgICB3ZWJydGM6OkRhdGFDaGFubmVsSW5p
dCBpbml0OworICAgIGluaXQub3JkZXJlZCA9IG9wdGlvbnMub3JkZXJlZDsKKyAgICBpbml0Lm1h
eFJldHJhbnNtaXRUaW1lID0gb3B0aW9ucy5tYXhSZXRyYW5zbWl0VGltZTsKKyAgICBpbml0Lm1h
eFJldHJhbnNtaXRzID0gb3B0aW9ucy5tYXhSZXRyYW5zbWl0czsKKyAgICBpbml0LnByb3RvY29s
ID0gb3B0aW9ucy5wcm90b2NvbC51dGY4KCkuZGF0YSgpOworICAgIGluaXQubmVnb3RpYXRlZCA9
IG9wdGlvbnMubmVnb3RpYXRlZDsKKyAgICBpbml0LmlkID0gb3B0aW9ucy5pZDsKKworICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4obV9iYWNr
ZW5kLT5DcmVhdGVEYXRhQ2hhbm5lbChsYWJlbC51dGY4KCkuZGF0YSgpLCAmaW5pdCkpOworfQor
Cit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZERhdGFDaGFubmVsKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkRhdGFDaGFubmVsSW50ZXJmYWNlPiYmIGRhdGFDaGFubmVsKQorewor
ICAgIGF1dG8gcHJvdG9jb2wgPSBkYXRhQ2hhbm5lbC0+cHJvdG9jb2woKTsKKyAgICBhdXRvIGxh
YmVsID0gZGF0YUNoYW5uZWwtPmxhYmVsKCk7CisKKyAgICBSVENEYXRhQ2hhbm5lbEluaXQgaW5p
dDsKKyAgICBpbml0Lm9yZGVyZWQgPSBkYXRhQ2hhbm5lbC0+b3JkZXJlZCgpOworICAgIGluaXQu
bWF4UmV0cmFuc21pdFRpbWUgPSBkYXRhQ2hhbm5lbC0+bWF4UmV0cmFuc21pdFRpbWUoKTsKKyAg
ICBpbml0Lm1heFJldHJhbnNtaXRzID0gZGF0YUNoYW5uZWwtPm1heFJldHJhbnNtaXRzKCk7Cisg
ICAgaW5pdC5wcm90b2NvbCA9IFN0cmluZyhwcm90b2NvbC5kYXRhKCksIHByb3RvY29sLnNpemUo
KSk7CisgICAgaW5pdC5uZWdvdGlhdGVkID0gZGF0YUNoYW5uZWwtPm5lZ290aWF0ZWQoKTsKKyAg
ICBpbml0LmlkID0gZGF0YUNoYW5uZWwtPmlkKCk7CisKKyAgICBib29sIGlzT3BlbmVkID0gZGF0
YUNoYW5uZWwtPnN0YXRlKCkgPT0gd2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZTo6a09wZW47
CisKKyAgICBhdXRvIGhhbmRsZXIgPSAgc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXI+KFdURk1vdmUoZGF0YUNoYW5uZWwpKTsKKyAgICBBU1NFUlQobV9wZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgYXV0byBjaGFubmVsID0gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZSgqbV9wZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZSho
YW5kbGVyKSwgU3RyaW5nKGxhYmVsLmRhdGEoKSwgbGFiZWwuc2l6ZSgpKSwgV1RGTW92ZShpbml0
KSk7CisKKyAgICBpZiAoaXNPcGVuZWQpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY2hh
bm5lbCA9IGNoYW5uZWwuY29weVJlZigpXSB7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGJlIGFibGUgdG8gd3JpdGUgY2hhbm5lbC0+ZGlkQ2hhbmdlUmVhZHlTdGF0ZSguLi4pCisg
ICAgICAgICAgICBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCA9IGNoYW5uZWwu
Z2V0KCk7CisgICAgICAgICAgICBjbGllbnQuZGlkQ2hhbmdlUmVhZHlTdGF0ZShSVENEYXRhQ2hh
bm5lbDo6UmVhZHlTdGF0ZU9wZW4pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBtX3BlZXJD
b25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuZmlyZUV2ZW50KFJUQ0RhdGFDaGFubmVsRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0YWNoYW5uZWxFdmVudCwgZmFsc2UsIGZhbHNlLCBX
VEZNb3ZlKGNoYW5uZWwpKSk7CiB9CiAKIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25E
YXRhQ2hhbm5lbChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFj
ZT4gZGF0YUNoYW5uZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgK
aW5kZXggMTFkNzMxZmU1YjM0OWQ4OTBlZWJkZmYxNGE4N2QzYjM4NTIyZTJiNi4uMDNjNDYxNjFm
YWJhYTgyMmJmMTQ4ZTczMzFmOTYwYzRiNWNmYTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ01lZGlhRW5kcG9pbnQuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
b0NyZWF0ZU9mZmVyKCk7CiAgICAgdm9pZCBkb0NyZWF0ZUFuc3dlcigpOwogICAgIHZvaWQgZ2V0
U3RhdHMoTWVkaWFTdHJlYW1UcmFjayosIFBlZXJDb25uZWN0aW9uOjpTdGF0c1Byb21pc2UmJik7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gY3JlYXRlRGF0YUNo
YW5uZWwoY29uc3QgU3RyaW5nJiwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0Jik7CiAKICAgICB2
b2lkIHN0b3JlSWNlQ2FuZGlkYXRlKHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkljZUNhbmRpZGF0
ZUludGVyZmFjZT4mJiBjYW5kaWRhdGUpIHsgbV9wZW5kaW5nQ2FuZGlkYXRlcy5hcHBlbmQoV1RG
TW92ZShjYW5kaWRhdGUpKTsgfQogICAgIHZvaWQgYWRkUGVuZGluZ0ljZUNhbmRpZGF0ZXMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3BwCmluZGV4IDA0ZjI4YjExNTA4ZjFiMmMyNTVlZWE1NDlhMGI4YWZkOGI3ZTBkOTQuLmFlOGQ0
NTQwNTE1NDA3ZGM0YTE0ZTE5ZDI0NjQyYjU1ZGNmZmQ1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMjksNiArMjks
NyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJJY2VDYW5kaWRhdGUuaCIK
KyNpbmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJMaWJX
ZWJSVENNZWRpYUVuZHBvaW50LmgiCiAjaW5jbHVkZSAiTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRp
b24uaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xNzksMTAgKzE4MCw3IEBAIFJlZjxSVENSdHBS
ZWNlaXZlcj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVSZWNlaXZlcihj
b25zdCBTdHJpbmcmCiAKIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlRGF0YUNoYW5uZWxIYW5kbGVyKGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYgb3B0aW9ucykKIHsK
LSAgICBVTlVTRURfUEFSQU0obGFiZWwpOwotICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
bV9lbmRwb2ludC0+Y3JlYXRlRGF0YUNoYW5uZWwobGFiZWwsIG9wdGlvbnMpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCBlMDdmMWFkM2Yz
NWM3MTE3NTM4Y2QwNGI5MGFjOTc0YzJkMTVhMzdmLi44NzdmZmI3MDRhZWRhZmExMzFkMzAzMGQ3
MzhkYjA1YWQ5ZDk4YTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTY3LDYgKzY3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGJsb2NrZWQpIFwKICAgICBtYWNybyhi
bHVyKSBcCiAgICAgbWFjcm8oYm91bmRhcnkpIFwKKyAgICBtYWNybyhidWZmZXJlZEFtb3VudExv
d1RocmVzaG9sZCkgXAogICAgIG1hY3JvKGNhY2hlZCkgXAogICAgIG1hY3JvKGNhbmNlbCkgXAog
ICAgIG1hY3JvKGNhbnBsYXkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggYjJhMzc5YTA4
MGU4YTc3OTU5MmIwMTlhMTg1ZjViZTA3YjRlZmM0YS4uZTQ2NTVkZDMwZDMzMTg2MmRkOGFkYzk3
OGQ5NWQ1N2NkYTIwOThhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKQEAgLTUwLDYgKzUwLDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBTdHJpbmcm
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3Qp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHNpemVf
dCBidWZmZXJlZEFtb3VudCgpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsSGFuZGxlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKaW5kZXggYTc2ZDM5MjU5Zjc1N2Fm
MWFlMTJiMjA2NjlmZGFlOWMyYzEwMjc5ZC4uM2I0MDU1NmY2NjI2OTAzMzA3OTQzNTYwYzA4ODI5
ZjQ3MWJkNzJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKQEAgLTIyLDE2
ICsyMiwxNiBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBSVENEYXRhQ2hhbm5lbEhhbmRsZXJD
bGllbnRfaAotI2RlZmluZSBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnRfaAorI3ByYWdtYSBv
bmNlCiAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50IHsKK2NsYXNzIFJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudD4gewogcHVibGljOgogICAgIGVudW0gUmVhZHlTdGF0ZSB7CiAgICAgICAgIFJlYWR5
U3RhdGVDb25uZWN0aW5nID0gMCwKQEAgLTQ2LDEzICs0Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZERldGVjdEVycm9yKCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lk
IHByb3RlY3QoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVucHJvdGVjdCgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgYnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoKSA9IDA7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKLQotI2VuZGlm
IC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCmluZGV4IDE1
NjJmNThhODk2ODkwOTFiNjkzNTdiYmVjZDhmZDM3NTg2ZTI2ZDkuLjkzMDM0ODdlNjY3ZTAzZDI2
YTYxMzc5MDQxY2U4ZTUwNmEzNjY1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCkBAIC00Miw2ICs0Miw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmKSBmaW5h
bDsKICAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOwogICAg
IHZvaWQgY2xvc2UoKSBmaW5hbDsKKyAgICBzaXplX3QgYnVmZmVyZWRBbW91bnQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAwOyB9CiAKICAgICBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIG1f
Y2xpZW50OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299980</attachid>
            <date>2017-01-27 16:44:08 -0800</date>
            <delta_ts>2017-01-27 16:44:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167489-20170127164204.patch</filename>
            <type>text/plain</type>
            <size>22032</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFmZGNkODdiZThhNzc5
MTRhOTlmNGZlNjQ1YTJiYTA2ZWI5ODJkNS4uMzE5ZDY3YmM0ZDMwZDgwMGFlZjE5ZGZlZGJhNjk1
NDk5NTA0NTE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTAxLTI3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gQWRkIHN1
cHBvcnQgZm9yIGxpYndlYnJ0YyBkYXRhIGNoYW5uZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnRpYWxseSBjb3ZlcmVkIGJ5IHdlYnJ0Yy9kYXRh
Y2hhbm5lbC9iYXNpYy5odG1sIGJ1dCBub3QgeWV0IGVuYWJsZWQgb24gYm90cy4KKworICAgICAg
ICBudHJvZHVjaW5nIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciBhcyB0aGUgaW50ZWdyYXRp
b24gbGF5ZXIgYmV0d2VlbiBXZWJDb3JlIChSVENEYXRhQ2hhbm5lbCkKKyAgICAgICAgYW5kIGxp
YndlYnJ0YyAoRGF0YUNoYW5uZWxPYnNlcnZlcikuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFD
aGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpidWZmZXJlZEFtb3Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6YnVmZmVyZWRBbW91bnRJc0Rl
Y3JlYXNpbmcpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
aDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlcjo6fkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRTdHJpbmdEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFJh
d0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpj
bG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9u
U3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpPbk1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25SZW1vdmVTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkRGF0YUNoYW5uZWwpOgorICAgICAg
ICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVEYXRhQ2hhbm5lbEhhbmRsZXIpOgor
ICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmg6CisKIDIwMTctMDEtMjcgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGR5bmFtaWMt
aW1wb3J0IGZvciBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IGVkZDY3OTMzMWUwNTJmYWQ2YzYxOWUx
ZDJiMzk5NDhlNjVlNDhhZDguLjc2NzIzZTRlZWQ3NTNkYTkzNzAxMGNlY2IxZTRhODY2ODE3MjAw
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWwuY3BwCkBAIC01NSw3ICs1NSw5IEBAIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGFycmF5YnVmZmVyS2V5d29yZCgpCiBSZWY8UlRDRGF0YUNoYW5uZWw+IFJUQ0RhdGFDaGFu
bmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3RkOjp1bmlxdWVf
cHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4mJiBoYW5kbGVyLCBTdHJpbmcmJiBsYWJlbCwgUlRD
RGF0YUNoYW5uZWxJbml0JiYgb3B0aW9ucykKIHsKICAgICBBU1NFUlQoaGFuZGxlcik7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDRGF0YUNoYW5uZWwoY29udGV4dCwgV1RGTW92ZShoYW5k
bGVyKSwgV1RGTW92ZShsYWJlbCksIFdURk1vdmUob3B0aW9ucykpKTsKKyAgICBhdXRvIGNoYW5u
ZWwgPSBhZG9wdFJlZigqbmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIFdURk1vdmUoaGFuZGxl
ciksIFdURk1vdmUobGFiZWwpLCBXVEZNb3ZlKG9wdGlvbnMpKSk7CisgICAgY2hhbm5lbC0+bV9o
YW5kbGVyLT5zZXRDbGllbnQoJmNoYW5uZWwuZ2V0KCkpOworICAgIHJldHVybiBjaGFubmVsOwog
fQogCiBSVENEYXRhQ2hhbm5lbDo6UlRDRGF0YUNoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4mJiBoYW5k
bGVyLCBTdHJpbmcmJiBsYWJlbCwgUlRDRGF0YUNoYW5uZWxJbml0JiYgb3B0aW9ucykKQEAgLTY1
LDcgKzY3LDYgQEAgUlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFDaGFubmVsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjwKICAgICAsIG1fbGFiZWwoV1RGTW92
ZShsYWJlbCkpCiAgICAgLCBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKIHsKLSAgICBtX2hh
bmRsZXItPnNldENsaWVudCh0aGlzKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBSVENEYXRh
Q2hhbm5lbDo6cmVhZHlTdGF0ZSgpIGNvbnN0CkBAIC05MCw5ICs5MSw5IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgUlRDRGF0YUNoYW5uZWw6OnJlYWR5U3RhdGUoKSBjb25zdAogICAgIHJldHVybiBl
bXB0eUF0b207CiB9CiAKLXVuc2lnbmVkIFJUQ0RhdGFDaGFubmVsOjpidWZmZXJlZEFtb3VudCgp
IGNvbnN0CitzaXplX3QgUlRDRGF0YUNoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9oYW5kbGVyLT5idWZmZXJlZEFtb3VudCgpOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFJUQ0RhdGFDaGFubmVsOjpiaW5hcnlUeXBlKCkgY29u
c3QKQEAgLTIyMiw2ICsyMjMsMTUgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkRGV0ZWN0RXJy
b3IoKQogICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIAordm9pZCBSVENEYXRhQ2hhbm5lbDo6
YnVmZmVyZWRBbW91bnRJc0RlY3JlYXNpbmcoKQoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChidWZmZXJlZEFtb3VudCgpIDw9IG1fYnVmZmVyZWRBbW91
bnRMb3dUaHJlc2hvbGQpCisgICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5idWZmZXJlZEFtb3VudExvd1RocmVzaG9sZEV2ZW50LCBmYWxzZSwg
ZmFsc2UpKTsKK30KKwogdm9pZCBSVENEYXRhQ2hhbm5lbDo6c3RvcCgpCiB7CiAgICAgbV9zdG9w
cGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuaAppbmRleCAyODRlYzlhZDkxZTE3ZmRkOWI4Y2JiOGUwNGM2M2MwMTRl
M2FmZDdlLi5jZDg2MGYxODRkMmVlMzU1ZjA4NzY4ZjkyYmI0ZTA5MGY3NDg0MDMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5o
CkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2I7CiBjbGFz
cyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiAKLWNsYXNzIFJUQ0RhdGFDaGFubmVsIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8UlRDRGF0YUNoYW5uZWw+LCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSwgcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCB7CitjbGFz
cyBSVENEYXRhQ2hhbm5lbCBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFJUQ0RhdGFDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHN0
ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+JiYsIFN0cmluZyYmLCBSVENEYXRh
Q2hhbm5lbEluaXQmJik7CiAKQEAgLTU3LDcgKzU3LDkgQEAgcHVibGljOgogCiAgICAgU3RyaW5n
IGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQogICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgcmVhZHlTdGF0ZSgpIGNvbnN0OwotICAgIHVuc2lnbmVkIGJ1ZmZlcmVkQW1vdW50KCkgY29u
c3Q7CisgICAgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CisgICAgc2l6ZV90IGJ1ZmZl
cmVkQW1vdW50TG93VGhyZXNob2xkKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJlZEFtb3VudExv
d1RocmVzaG9sZDsgfQorICAgIHZvaWQgc2V0QnVmZmVyZWRBbW91bnRMb3dUaHJlc2hvbGQoc2l6
ZV90IHZhbHVlKSB7IG1fYnVmZmVyZWRBbW91bnRMb3dUaHJlc2hvbGQgPSB2YWx1ZTsgfQogCiAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBiaW5hcnlUeXBlKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9u
T3I8dm9pZD4gc2V0QmluYXJ5VHlwZShjb25zdCBBdG9taWNTdHJpbmcmKTsKQEAgLTcxLDggKzcz
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzdG9wKCk7CiAKLSAgICB1c2luZyBSZWZDb3VudGVk
OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CisgICAgdXNpbmcgUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50OjpyZWY7CisgICAgdXNpbmcgUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Q2xpZW50OjpkZXJlZjsKIAogcHJpdmF0ZToKICAgICBSVENEYXRhQ2hhbm5lbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jiwgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4mJiwg
U3RyaW5nJiYsIFJUQ0RhdGFDaGFubmVsSW5pdCYmKTsKQEAgLTg4LDEyICs5MCwxMiBAQCBwcml2
YXRlOgogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogCisgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50IEFQSQogICAgIHZvaWQg
ZGlkQ2hhbmdlUmVhZHlTdGF0ZShSZWFkeVN0YXRlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2Vp
dmVTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJh
d0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBkaWREZXRlY3RFcnJv
cigpIGZpbmFsOwotICAgIHZvaWQgcHJvdGVjdCgpIGZpbmFsIHsgcmVmKCk7IH0KLSAgICB2b2lk
IHVucHJvdGVjdCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorICAgIHZvaWQgYnVmZmVyZWRBbW91bnRJ
c0RlY3JlYXNpbmcoKSBmaW5hbDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5l
bEhhbmRsZXI+IG1faGFuZGxlcjsKIApAQCAtMTA5LDYgKzExMSw3IEBAIHByaXZhdGU6CiAKICAg
ICBTdHJpbmcgbV9sYWJlbDsKICAgICBSVENEYXRhQ2hhbm5lbEluaXQgbV9vcHRpb25zOworICAg
IHNpemVfdCBtX2J1ZmZlcmVkQW1vdW50TG93VGhyZXNob2xkIHsgMCB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY0YjZkMWM4MjdjMzZjOWViNjU0OGIwOWFmYmM4
YWY2NTRiMDJiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTAs
MCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5oIgorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIlJUQ0RhdGFDaGFu
bmVsLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6On5MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jaGFubmVsLT5VbnJlZ2lz
dGVyT2JzZXJ2ZXIoKTsKK30KKwordm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNl
dENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2Ns
aWVudCA9IGNsaWVudDsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2hhbm5lbC0+UmVn
aXN0ZXJPYnNlcnZlcih0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIG1fY2hhbm5lbC0+VW5yZWdp
c3Rlck9ic2VydmVyKCk7Cit9CisKK2Jvb2wgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZW5kU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgcmV0dXJuIG1fY2hhbm5l
bC0+U2VuZCh7cnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcih0ZXh0LnV0ZjgoKS5kYXRhKCksIHRleHQu
bGVuZ3RoKCkpLCBmYWxzZX0pOworfQorCitib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cjo6c2VuZFJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBy
ZXR1cm4gbV9jaGFubmVsLT5TZW5kKHtydGM6OkNvcHlPbldyaXRlQnVmZmVyKGRhdGEsIGxlbmd0
aCksIHRydWV9KTsKK30KKwordm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNsb3Nl
KCkKK3sKKyAgICBtX2NoYW5uZWwtPkNsb3NlKCk7Cit9CisKK3ZvaWQgTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyOjpPblN0YXRlQ2hhbmdlKCkKK3sKKyAgICBSVENEYXRhQ2hhbm5lbDo6UmVh
ZHlTdGF0ZSBzdGF0ZTsKKyAgICBzd2l0Y2ggKG1fY2hhbm5lbC0+c3RhdGUoKSkgeworICAgIGNh
c2Ugd2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZTo6a0Nvbm5lY3Rpbmc6CisgICAgICAgIHN0
YXRlID0gUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGVDb25uZWN0aW5nOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U6OmtPcGVuOgorICAgICAg
ICBzdGF0ZSA9IFJUQ0RhdGFDaGFubmVsOjpSZWFkeVN0YXRlT3BlbjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSB3ZWJydGM6OkRhdGFDaGFubmVsSW50ZXJmYWNlOjprQ2xvc2luZzoKKyAgICAg
ICAgc3RhdGUgPSBSVENEYXRhQ2hhbm5lbDo6UmVhZHlTdGF0ZUNsb3Npbmc7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2Ugd2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZTo6a0Nsb3NlZDoKKyAg
ICAgICAgc3RhdGUgPSBSVENEYXRhQ2hhbm5lbDo6UmVhZHlTdGF0ZUNsb3NlZDsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgY2FsbE9uTWFpblRocmVh
ZChbcHJvdGVjdGVkQ2xpZW50ID0gbWFrZVJlZigqbV9jbGllbnQpLCBzdGF0ZV0geworICAgICAg
ICBwcm90ZWN0ZWRDbGllbnQtPmRpZENoYW5nZVJlYWR5U3RhdGUoc3RhdGUpOworICAgIH0pOwor
fQorCit2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25NZXNzYWdlKGNvbnN0IHdl
YnJ0Yzo6RGF0YUJ1ZmZlciYgYnVmZmVyKQoreworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6RGF0YUJ1ZmZlcj4gcHJvdGVjdGVkQnVmZmVyKG5ldyB3
ZWJydGM6OkRhdGFCdWZmZXIoYnVmZmVyKSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkQ2xpZW50ID0gbWFrZVJlZigqbV9jbGllbnQpLCBidWZmZXIgPSBXVEZNb3ZlKHByb3RlY3Rl
ZEJ1ZmZlcildIHsKKyAgICAgICAgLy8gRklYTUU6IEVuc3VyZSB0aGlzIGlzIGNvcnJlY3QgYnkg
YWRkaW5nIHNvbWUgdGVzdHMgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycy4KKyAgICAgICAgY29u
c3QgY2hhciogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci0+ZGF0
YS5kYXRhKCkpOworICAgICAgICBpZiAoYnVmZmVyLT5iaW5hcnkpCisgICAgICAgICAgICBwcm90
ZWN0ZWRDbGllbnQtPmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcHJvdGVjdGVkQ2xpZW50LT5kaWRSZWNlaXZlU3RyaW5n
RGF0YShTdHJpbmcoZGF0YSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICB9KTsKK30KKwordm9pZCBM
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uQnVmZmVyZWRBbW91bnRDaGFuZ2UodWludDY0
X3QgcHJldmlvdXNBbW91bnQpCit7CisgICAgaWYgKHByZXZpb3VzQW1vdW50IDw9IG1fY2hhbm5l
bC0+YnVmZmVyZWRfYW1vdW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9jbGll
bnQpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZENsaWVudCA9IG1ha2VSZWYoKm1f
Y2xpZW50KV0geworICAgICAgICBwcm90ZWN0ZWRDbGllbnQtPmJ1ZmZlcmVkQW1vdW50SXNEZWNy
ZWFzaW5nKCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5YzhiN2JlNjM1MWM3NzNhZDdlMjc1ZTlmYWNhZGYz
YjhjZTg0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtMCwwICsx
LDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJU
Q01hY3Jvcy5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIgorI2luY2x1ZGUg
PHdlYnJ0Yy9hcGkvZGF0YWNoYW5uZWxpbnRlcmZhY2UuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ7CisKK2NsYXNzIExpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIs
IHByaXZhdGUgd2VicnRjOjpEYXRhQ2hhbm5lbE9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+JiYgY2hhbm5lbCkgOiBtX2NoYW5uZWwoV1RGTW92ZShj
aGFubmVsKSkgeyBBU1NFUlQobV9jaGFubmVsKTsgfQorICAgIH5MaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIoKTsKKworcHJpdmF0ZToKKyAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIgQVBJ
CisgICAgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KikgZmluYWw7
CisgICAgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29s
IHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgY2xvc2Uo
KSBmaW5hbDsKKyAgICBzaXplX3QgYnVmZmVyZWRBbW91bnQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2NoYW5uZWwtPmJ1ZmZlcmVkX2Ftb3VudCgpOyB9CisKKyAgICAvLyB3ZWJydGM6OkRhdGFD
aGFubmVsT2JzZXJ2ZXIgQVBJCisgICAgdm9pZCBPblN0YXRlQ2hhbmdlKCk7CisgICAgdm9pZCBP
bk1lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CisgICAgdm9pZCBPbkJ1ZmZlcmVk
QW1vdW50Q2hhbmdlKHVpbnQ2NF90KTsKKworICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OkRhdGFDaGFubmVsSW50ZXJmYWNlPiBtX2NoYW5uZWw7CisgICAgUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IGM0ZjQwNjMxZDYzNDlkZmYwNGJiNDM3OGQzZDE3
OGJjOGQ0ZDU5NTYuLmVkZWYzYzU2MmU5NGNlYjYyMTQxMzEyNGVkZTdlNjUyYzcwM2U4ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNp
bmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5o
IgogI2luY2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCkBAIC0yODUsNyArMjg2LDUwIEBAIHZvaWQg
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25BZGRTdHJlYW0ocnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6TWVkaWFTdHJlYW1JCiAKIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25SZW1v
dmVTdHJlYW0ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2U+
KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3N0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IExpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6OmNyZWF0ZURhdGFDaGFubmVsKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFJU
Q0RhdGFDaGFubmVsSW5pdCYgb3B0aW9ucykKK3sKKyAgICB3ZWJydGM6OkRhdGFDaGFubmVsSW5p
dCBpbml0OworICAgIGluaXQub3JkZXJlZCA9IG9wdGlvbnMub3JkZXJlZDsKKyAgICBpbml0Lm1h
eFJldHJhbnNtaXRUaW1lID0gb3B0aW9ucy5tYXhSZXRyYW5zbWl0VGltZTsKKyAgICBpbml0Lm1h
eFJldHJhbnNtaXRzID0gb3B0aW9ucy5tYXhSZXRyYW5zbWl0czsKKyAgICBpbml0LnByb3RvY29s
ID0gb3B0aW9ucy5wcm90b2NvbC51dGY4KCkuZGF0YSgpOworICAgIGluaXQubmVnb3RpYXRlZCA9
IG9wdGlvbnMubmVnb3RpYXRlZDsKKyAgICBpbml0LmlkID0gb3B0aW9ucy5pZDsKKworICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4obV9iYWNr
ZW5kLT5DcmVhdGVEYXRhQ2hhbm5lbChsYWJlbC51dGY4KCkuZGF0YSgpLCAmaW5pdCkpOworfQor
Cit2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZERhdGFDaGFubmVsKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkRhdGFDaGFubmVsSW50ZXJmYWNlPiYmIGRhdGFDaGFubmVsKQorewor
ICAgIGF1dG8gcHJvdG9jb2wgPSBkYXRhQ2hhbm5lbC0+cHJvdG9jb2woKTsKKyAgICBhdXRvIGxh
YmVsID0gZGF0YUNoYW5uZWwtPmxhYmVsKCk7CisKKyAgICBSVENEYXRhQ2hhbm5lbEluaXQgaW5p
dDsKKyAgICBpbml0Lm9yZGVyZWQgPSBkYXRhQ2hhbm5lbC0+b3JkZXJlZCgpOworICAgIGluaXQu
bWF4UmV0cmFuc21pdFRpbWUgPSBkYXRhQ2hhbm5lbC0+bWF4UmV0cmFuc21pdFRpbWUoKTsKKyAg
ICBpbml0Lm1heFJldHJhbnNtaXRzID0gZGF0YUNoYW5uZWwtPm1heFJldHJhbnNtaXRzKCk7Cisg
ICAgaW5pdC5wcm90b2NvbCA9IFN0cmluZyhwcm90b2NvbC5kYXRhKCksIHByb3RvY29sLnNpemUo
KSk7CisgICAgaW5pdC5uZWdvdGlhdGVkID0gZGF0YUNoYW5uZWwtPm5lZ290aWF0ZWQoKTsKKyAg
ICBpbml0LmlkID0gZGF0YUNoYW5uZWwtPmlkKCk7CisKKyAgICBib29sIGlzT3BlbmVkID0gZGF0
YUNoYW5uZWwtPnN0YXRlKCkgPT0gd2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZTo6a09wZW47
CisKKyAgICBhdXRvIGhhbmRsZXIgPSAgc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXI+KFdURk1vdmUoZGF0YUNoYW5uZWwpKTsKKyAgICBBU1NFUlQobV9wZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgYXV0byBjaGFubmVsID0gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZSgqbV9wZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZSho
YW5kbGVyKSwgU3RyaW5nKGxhYmVsLmRhdGEoKSwgbGFiZWwuc2l6ZSgpKSwgV1RGTW92ZShpbml0
KSk7CisKKyAgICBpZiAoaXNPcGVuZWQpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY2hh
bm5lbCA9IGNoYW5uZWwuY29weVJlZigpXSB7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGJlIGFibGUgdG8gd3JpdGUgY2hhbm5lbC0+ZGlkQ2hhbmdlUmVhZHlTdGF0ZSguLi4pCisg
ICAgICAgICAgICBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCA9IGNoYW5uZWwu
Z2V0KCk7CisgICAgICAgICAgICBjbGllbnQuZGlkQ2hhbmdlUmVhZHlTdGF0ZShSVENEYXRhQ2hh
bm5lbDo6UmVhZHlTdGF0ZU9wZW4pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBtX3BlZXJD
b25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuZmlyZUV2ZW50KFJUQ0RhdGFDaGFubmVsRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0YWNoYW5uZWxFdmVudCwgZmFsc2UsIGZhbHNlLCBX
VEZNb3ZlKGNoYW5uZWwpKSk7CiB9CiAKIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25E
YXRhQ2hhbm5lbChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFj
ZT4gZGF0YUNoYW5uZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgK
aW5kZXggMTFkNzMxZmU1YjM0OWQ4OTBlZWJkZmYxNGE4N2QzYjM4NTIyZTJiNi4uMDNjNDYxNjFm
YWJhYTgyMmJmMTQ4ZTczMzFmOTYwYzRiNWNmYTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ01lZGlhRW5kcG9pbnQuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
b0NyZWF0ZU9mZmVyKCk7CiAgICAgdm9pZCBkb0NyZWF0ZUFuc3dlcigpOwogICAgIHZvaWQgZ2V0
U3RhdHMoTWVkaWFTdHJlYW1UcmFjayosIFBlZXJDb25uZWN0aW9uOjpTdGF0c1Byb21pc2UmJik7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gY3JlYXRlRGF0YUNo
YW5uZWwoY29uc3QgU3RyaW5nJiwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0Jik7CiAKICAgICB2
b2lkIHN0b3JlSWNlQ2FuZGlkYXRlKHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkljZUNhbmRpZGF0
ZUludGVyZmFjZT4mJiBjYW5kaWRhdGUpIHsgbV9wZW5kaW5nQ2FuZGlkYXRlcy5hcHBlbmQoV1RG
TW92ZShjYW5kaWRhdGUpKTsgfQogICAgIHZvaWQgYWRkUGVuZGluZ0ljZUNhbmRpZGF0ZXMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3BwCmluZGV4IDA0ZjI4YjExNTA4ZjFiMmMyNTVlZWE1NDlhMGI4YWZkOGI3ZTBkOTQuLmFlOGQ0
NTQwNTE1NDA3ZGM0YTE0ZTE5ZDI0NjQyYjU1ZGNmZmQ1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMjksNiArMjks
NyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJJY2VDYW5kaWRhdGUuaCIK
KyNpbmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJMaWJX
ZWJSVENNZWRpYUVuZHBvaW50LmgiCiAjaW5jbHVkZSAiTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRp
b24uaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xNzksMTAgKzE4MCw3IEBAIFJlZjxSVENSdHBS
ZWNlaXZlcj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVSZWNlaXZlcihj
b25zdCBTdHJpbmcmCiAKIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlRGF0YUNoYW5uZWxIYW5kbGVyKGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYgb3B0aW9ucykKIHsK
LSAgICBVTlVTRURfUEFSQU0obGFiZWwpOwotICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
bV9lbmRwb2ludC0+Y3JlYXRlRGF0YUNoYW5uZWwobGFiZWwsIG9wdGlvbnMpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCBlMDdmMWFkM2Yz
NWM3MTE3NTM4Y2QwNGI5MGFjOTc0YzJkMTVhMzdmLi44NzdmZmI3MDRhZWRhZmExMzFkMzAzMGQ3
MzhkYjA1YWQ5ZDk4YTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTY3LDYgKzY3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGJsb2NrZWQpIFwKICAgICBtYWNybyhi
bHVyKSBcCiAgICAgbWFjcm8oYm91bmRhcnkpIFwKKyAgICBtYWNybyhidWZmZXJlZEFtb3VudExv
d1RocmVzaG9sZCkgXAogICAgIG1hY3JvKGNhY2hlZCkgXAogICAgIG1hY3JvKGNhbmNlbCkgXAog
ICAgIG1hY3JvKGNhbnBsYXkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggYjJhMzc5YTA4
MGU4YTc3OTU5MmIwMTlhMTg1ZjViZTA3YjRlZmM0YS4uZTQ2NTVkZDMwZDMzMTg2MmRkOGFkYzk3
OGQ5NWQ1N2NkYTIwOThhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKQEAgLTUwLDYgKzUwLDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBTdHJpbmcm
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3Qp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHNpemVf
dCBidWZmZXJlZEFtb3VudCgpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsSGFuZGxlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKaW5kZXggYTc2ZDM5MjU5Zjc1N2Fm
MWFlMTJiMjA2NjlmZGFlOWMyYzEwMjc5ZC4uOTgxMzE2ZDE0MGNmMWZiOWU2MzUxYmNiYTM5MDQy
ODkxYzFhOWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgKQEAgLTIyLDE2
ICsyMiwxNiBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBSVENEYXRhQ2hhbm5lbEhhbmRsZXJD
bGllbnRfaAotI2RlZmluZSBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnRfaAorI3ByYWdtYSBv
bmNlCiAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCB7CitjbGFzcyBS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgZW51bSBSZWFkeVN0
YXRlIHsKICAgICAgICAgUmVhZHlTdGF0ZUNvbm5lY3RpbmcgPSAwLApAQCAtNDYsMTMgKzQ2LDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBT
dHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNo
YXIqLCBzaXplX3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0RXJyb3IoKSA9IDA7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcHJvdGVjdCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5w
cm90ZWN0KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBidWZmZXJlZEFtb3VudElzRGVjcmVhc2lu
ZygpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJfUlRDKQotCi0jZW5kaWYgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5k
bGVyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhh
bmRsZXJNb2NrLmgKaW5kZXggMTU2MmY1OGE4OTY4OTA5MWI2OTM1N2JiZWNkOGZkMzc1ODZlMjZk
OS4uOTMwMzQ4N2U2NjdlMDNkMjZhNjEzNzkwNDFjZThlNTA2YTM2NjU5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJN
b2NrLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNlbmRTdHJpbmdEYXRh
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhcios
IHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBjbG9zZSgpIGZpbmFsOworICAgIHNpemVfdCBidWZm
ZXJlZEFtb3VudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KIAogICAgIFJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNsaWVudCogbV9jbGllbnQ7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299981</attachid>
            <date>2017-01-27 16:44:42 -0800</date>
            <delta_ts>2017-01-30 09:38:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167489-20170127164238.patch</filename>
            <type>text/plain</type>
            <size>22033</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFmZGNkODdiZThhNzc5
MTRhOTlmNGZlNjQ1YTJiYTA2ZWI5ODJkNS4uODk3ZDk3NTE0NmNjZTQ1OGU1OGVmYTNkNTRmZDJm
MTkwZmVjMDM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTAxLTI3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gQWRkIHN1
cHBvcnQgZm9yIGxpYndlYnJ0YyBkYXRhIGNoYW5uZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnRpYWxseSBjb3ZlcmVkIGJ5IHdlYnJ0Yy9kYXRh
Y2hhbm5lbC9iYXNpYy5odG1sIGJ1dCBub3QgeWV0IGVuYWJsZWQgb24gYm90cy4KKworICAgICAg
ICBJbnRyb2R1Y2luZyBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIgYXMgdGhlIGludGVncmF0
aW9uIGxheWVyIGJldHdlZW4gV2ViQ29yZSAoUlRDRGF0YUNoYW5uZWwpCisgICAgICAgIGFuZCBs
aWJ3ZWJydGMgKERhdGFDaGFubmVsT2JzZXJ2ZXIpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpSVENEYXRh
Q2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6YnVmZmVyZWRBbW91
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50SXNE
ZWNyZWFzaW5nKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXI6On5MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZW5kU3RyaW5nRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRS
YXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpP
blN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlcjo6T25NZXNzYWdlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uUmVtb3ZlU3RyZWFtKToKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZERhdGFDaGFubmVsKToKKyAgICAg
ICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlRGF0YUNoYW5uZWxIYW5kbGVyKToK
KyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorCiAyMDE3LTAxLTI3ICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBkeW5hbWlj
LWltcG9ydCBmb3IgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAppbmRleCBlZGQ2NzkzMzFlMDUyZmFkNmM2MTll
MWQyYjM5OTQ4ZTY1ZTQ4YWQ4Li43NjcyM2U0ZWVkNzUzZGE5MzcwMTBjZWNiMWU0YTg2NjgxNzIw
MDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmNwcApAQCAtNTUsNyArNTUsOSBAQCBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBhcnJheWJ1ZmZlcktleXdvcmQoKQogUmVmPFJUQ0RhdGFDaGFubmVsPiBSVENEYXRhQ2hh
bm5lbDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0ZDo6dW5pcXVl
X3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+JiYgaGFuZGxlciwgU3RyaW5nJiYgbGFiZWwsIFJU
Q0RhdGFDaGFubmVsSW5pdCYmIG9wdGlvbnMpCiB7CiAgICAgQVNTRVJUKGhhbmRsZXIpOwotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIFdURk1vdmUoaGFu
ZGxlciksIFdURk1vdmUobGFiZWwpLCBXVEZNb3ZlKG9wdGlvbnMpKSk7CisgICAgYXV0byBjaGFu
bmVsID0gYWRvcHRSZWYoKm5ldyBSVENEYXRhQ2hhbm5lbChjb250ZXh0LCBXVEZNb3ZlKGhhbmRs
ZXIpLCBXVEZNb3ZlKGxhYmVsKSwgV1RGTW92ZShvcHRpb25zKSkpOworICAgIGNoYW5uZWwtPm1f
aGFuZGxlci0+c2V0Q2xpZW50KCZjaGFubmVsLmdldCgpKTsKKyAgICByZXR1cm4gY2hhbm5lbDsK
IH0KIAogUlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+JiYgaGFu
ZGxlciwgU3RyaW5nJiYgbGFiZWwsIFJUQ0RhdGFDaGFubmVsSW5pdCYmIG9wdGlvbnMpCkBAIC02
NSw3ICs2Nyw2IEBAIFJUQ0RhdGFDaGFubmVsOjpSVENEYXRhQ2hhbm5lbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8CiAgICAgLCBtX2xhYmVsKFdURk1v
dmUobGFiZWwpKQogICAgICwgbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiB7Ci0gICAgbV9o
YW5kbGVyLT5zZXRDbGllbnQodGhpcyk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgUlRDRGF0
YUNoYW5uZWw6OnJlYWR5U3RhdGUoKSBjb25zdApAQCAtOTAsOSArOTEsOSBAQCBjb25zdCBBdG9t
aWNTdHJpbmcmIFJUQ0RhdGFDaGFubmVsOjpyZWFkeVN0YXRlKCkgY29uc3QKICAgICByZXR1cm4g
ZW1wdHlBdG9tOwogfQogCi11bnNpZ25lZCBSVENEYXRhQ2hhbm5lbDo6YnVmZmVyZWRBbW91bnQo
KSBjb25zdAorc2l6ZV90IFJUQ0RhdGFDaGFubmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1faGFuZGxlci0+YnVmZmVyZWRBbW91bnQoKTsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBSVENEYXRhQ2hhbm5lbDo6YmluYXJ5VHlwZSgpIGNv
bnN0CkBAIC0yMjIsNiArMjIzLDE1IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6OmRpZERldGVjdEVy
cm9yKCkKICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKK3ZvaWQgUlRDRGF0YUNoYW5uZWw6
OmJ1ZmZlcmVkQW1vdW50SXNEZWNyZWFzaW5nKCkKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoYnVmZmVyZWRBbW91bnQoKSA8PSBtX2J1ZmZlcmVkQW1v
dW50TG93VGhyZXNob2xkKQorICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuYnVmZmVyZWRBbW91bnRMb3dUaHJlc2hvbGRFdmVudCwgZmFsc2Us
IGZhbHNlKSk7Cit9CisKIHZvaWQgUlRDRGF0YUNoYW5uZWw6OnN0b3AoKQogewogICAgIG1fc3Rv
cHBlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsLmgKaW5kZXggMjg0ZWM5YWQ5MWUxN2ZkZDliOGNiYjhlMDRjNjNjMDE0
ZTNhZmQ3ZS4uY2Q4NjBmMTg0ZDJlZTM1NWYwODc2OGY5MmJiNGUwOTBmNzQ4NDAzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
aApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iOwogY2xh
c3MgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOwogCi1jbGFzcyBSVENEYXRhQ2hhbm5lbCBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0RhdGFDaGFubmVsPiwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEsIHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQgeworY2xh
c3MgUlRDRGF0YUNoYW5uZWwgZmluYWwgOiBwdWJsaWMgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxSVENEYXRhQ2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBz
dGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiYmLCBTdHJpbmcmJiwgUlRDRGF0
YUNoYW5uZWxJbml0JiYpOwogCkBAIC01Nyw3ICs1Nyw5IEBAIHB1YmxpYzoKIAogICAgIFN0cmlu
ZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHJlYWR5U3RhdGUoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBidWZmZXJlZEFtb3VudCgpIGNv
bnN0OworICAgIHNpemVfdCBidWZmZXJlZEFtb3VudCgpIGNvbnN0OworICAgIHNpemVfdCBidWZm
ZXJlZEFtb3VudExvd1RocmVzaG9sZCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyZWRBbW91bnRM
b3dUaHJlc2hvbGQ7IH0KKyAgICB2b2lkIHNldEJ1ZmZlcmVkQW1vdW50TG93VGhyZXNob2xkKHNp
emVfdCB2YWx1ZSkgeyBtX2J1ZmZlcmVkQW1vdW50TG93VGhyZXNob2xkID0gdmFsdWU7IH0KIAog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYmluYXJ5VHlwZSgpIGNvbnN0OwogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNldEJpbmFyeVR5cGUoY29uc3QgQXRvbWljU3RyaW5nJik7CkBAIC03MSw4ICs3
Myw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RvcCgpOwogCi0gICAgdXNpbmcgUmVmQ291bnRl
ZDo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOworICAgIHVzaW5nIFJUQ0RhdGFD
aGFubmVsSGFuZGxlckNsaWVudDo6cmVmOworICAgIHVzaW5nIFJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudDo6ZGVyZWY7CiAKIHByaXZhdGU6CiAgICAgUlRDRGF0YUNoYW5uZWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+JiYs
IFN0cmluZyYmLCBSVENEYXRhQ2hhbm5lbEluaXQmJik7CkBAIC04OCwxMiArOTAsMTIgQEAgcHJp
dmF0ZToKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIAorICAgIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCBBUEkKICAgICB2b2lk
IGRpZENoYW5nZVJlYWR5U3RhdGUoUmVhZHlTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVS
YXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZGlkRGV0ZWN0RXJy
b3IoKSBmaW5hbDsKLSAgICB2b2lkIHByb3RlY3QoKSBmaW5hbCB7IHJlZigpOyB9Ci0gICAgdm9p
ZCB1bnByb3RlY3QoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKyAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50
SXNEZWNyZWFzaW5nKCkgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5u
ZWxIYW5kbGVyPiBtX2hhbmRsZXI7CiAKQEAgLTEwOSw2ICsxMTEsNyBAQCBwcml2YXRlOgogCiAg
ICAgU3RyaW5nIG1fbGFiZWw7CiAgICAgUlRDRGF0YUNoYW5uZWxJbml0IG1fb3B0aW9uczsKKyAg
ICBzaXplX3QgbV9idWZmZXJlZEFtb3VudExvd1RocmVzaG9sZCB7IDAgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2NGI2ZDFjODI3YzM2YzllYjY1NDhiMDlhZmJj
OGFmNjU0YjAyYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC0w
LDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJSVENEYXRhQ2hh
bm5lbC5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjp+TGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2hhbm5lbC0+VW5yZWdp
c3Rlck9ic2VydmVyKCk7Cit9CisKK3ZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgbV9j
bGllbnQgPSBjbGllbnQ7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NoYW5uZWwtPlJl
Z2lzdGVyT2JzZXJ2ZXIodGhpcyk7CisgICAgZWxzZQorICAgICAgICBtX2NoYW5uZWwtPlVucmVn
aXN0ZXJPYnNlcnZlcigpOworfQorCitib29sIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
c2VuZFN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIHJldHVybiBtX2NoYW5u
ZWwtPlNlbmQoe3J0Yzo6Q29weU9uV3JpdGVCdWZmZXIodGV4dC51dGY4KCkuZGF0YSgpLCB0ZXh0
Lmxlbmd0aCgpKSwgZmFsc2V9KTsKK30KKworYm9vbCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6OnNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAg
cmV0dXJuIG1fY2hhbm5lbC0+U2VuZCh7cnRjOjpDb3B5T25Xcml0ZUJ1ZmZlcihkYXRhLCBsZW5n
dGgpLCB0cnVlfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpjbG9z
ZSgpCit7CisgICAgbV9jaGFubmVsLT5DbG9zZSgpOworfQorCit2b2lkIExpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlcjo6T25TdGF0ZUNoYW5nZSgpCit7CisgICAgUlRDRGF0YUNoYW5uZWw6OlJl
YWR5U3RhdGUgc3RhdGU7CisgICAgc3dpdGNoIChtX2NoYW5uZWwtPnN0YXRlKCkpIHsKKyAgICBj
YXNlIHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U6OmtDb25uZWN0aW5nOgorICAgICAgICBz
dGF0ZSA9IFJUQ0RhdGFDaGFubmVsOjpSZWFkeVN0YXRlQ29ubmVjdGluZzsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSB3ZWJydGM6OkRhdGFDaGFubmVsSW50ZXJmYWNlOjprT3BlbjoKKyAgICAg
ICAgc3RhdGUgPSBSVENEYXRhQ2hhbm5lbDo6UmVhZHlTdGF0ZU9wZW47CisgICAgICAgIGJyZWFr
OworICAgIGNhc2Ugd2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZTo6a0Nsb3Npbmc6CisgICAg
ICAgIHN0YXRlID0gUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGVDbG9zaW5nOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U6OmtDbG9zZWQ6Cisg
ICAgICAgIHN0YXRlID0gUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGVDbG9zZWQ7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZENsaWVudCA9IG1ha2VSZWYoKm1fY2xpZW50KSwgc3RhdGVdIHsKKyAgICAg
ICAgcHJvdGVjdGVkQ2xpZW50LT5kaWRDaGFuZ2VSZWFkeVN0YXRlKHN0YXRlKTsKKyAgICB9KTsK
K30KKwordm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShjb25zdCB3
ZWJydGM6OkRhdGFCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAg
IHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkRhdGFCdWZmZXI+IHByb3RlY3RlZEJ1ZmZlcihuZXcg
d2VicnRjOjpEYXRhQnVmZmVyKGJ1ZmZlcikpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZENsaWVudCA9IG1ha2VSZWYoKm1fY2xpZW50KSwgYnVmZmVyID0gV1RGTW92ZShwcm90ZWN0
ZWRCdWZmZXIpXSB7CisgICAgICAgIC8vIEZJWE1FOiBFbnN1cmUgdGhpcyBpcyBjb3JyZWN0IGJ5
IGFkZGluZyBzb21lIHRlc3RzIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCisgICAgICAgIGNv
bnN0IGNoYXIqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXItPmRh
dGEuZGF0YSgpKTsKKyAgICAgICAgaWYgKGJ1ZmZlci0+YmluYXJ5KQorICAgICAgICAgICAgcHJv
dGVjdGVkQ2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByb3RlY3RlZENsaWVudC0+ZGlkUmVjZWl2ZVN0cmlu
Z0RhdGEoU3RyaW5nKGRhdGEsIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgfSk7Cit9CisKK3ZvaWQg
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpPbkJ1ZmZlcmVkQW1vdW50Q2hhbmdlKHVpbnQ2
NF90IHByZXZpb3VzQW1vdW50KQoreworICAgIGlmIChwcmV2aW91c0Ftb3VudCA8PSBtX2NoYW5u
ZWwtPmJ1ZmZlcmVkX2Ftb3VudCgpKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1fY2xp
ZW50KTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRDbGllbnQgPSBtYWtlUmVmKCpt
X2NsaWVudCldIHsKKyAgICAgICAgcHJvdGVjdGVkQ2xpZW50LT5idWZmZXJlZEFtb3VudElzRGVj
cmVhc2luZygpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWM4YjdiZTYzNTFjNzczYWQ3ZTI3NWU5ZmFjYWRm
M2I4Y2U4NDMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKQEAgLTAsMCAr
MSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJS
VENNYWNyb3MuaCIKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKKyNpbmNsdWRl
IDx3ZWJydGMvYXBpL2RhdGFjaGFubmVsaW50ZXJmYWNlLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OworCitjbGFzcyBMaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIgZmluYWwgOiBwdWJsaWMgUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LCBwcml2YXRlIHdlYnJ0Yzo6RGF0YUNoYW5uZWxPYnNlcnZlciB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OkRhdGFDaGFubmVsSW50ZXJmYWNlPiYmIGNoYW5uZWwpIDogbV9jaGFubmVsKFdURk1vdmUo
Y2hhbm5lbCkpIHsgQVNTRVJUKG1fY2hhbm5lbCk7IH0KKyAgICB+TGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyKCk7CisKK3ByaXZhdGU6CisgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5kbGVyIEFQ
SQorICAgIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCopIGZpbmFs
OworICAgIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9v
bCBzZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGNsb3Nl
KCkgZmluYWw7CisgICAgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9jaGFubmVsLT5idWZmZXJlZF9hbW91bnQoKTsgfQorCisgICAgLy8gd2VicnRjOjpEYXRh
Q2hhbm5lbE9ic2VydmVyIEFQSQorICAgIHZvaWQgT25TdGF0ZUNoYW5nZSgpOworICAgIHZvaWQg
T25NZXNzYWdlKGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOworICAgIHZvaWQgT25CdWZmZXJl
ZEFtb3VudENoYW5nZSh1aW50NjRfdCk7CisKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpEYXRhQ2hhbm5lbEludGVyZmFjZT4gbV9jaGFubmVsOworICAgIFJUQ0RhdGFDaGFubmVsSGFu
ZGxlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2lu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENNZWRpYUVuZHBvaW50LmNwcAppbmRleCBjNGY0MDYzMWQ2MzQ5ZGZmMDRiYjQzNzhkM2Qx
NzhiYzhkNGQ1OTU2Li5lZGVmM2M1NjJlOTRjZWI2MjE0MTMxMjRlZGU3ZTY1MmM3MDNlOGYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2lmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisj
aW5jbHVkZSAiTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIu
aCIKICNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgpAQCAtMjg1LDcgKzI4Niw1MCBAQCB2b2lk
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uQWRkU3RyZWFtKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6Ok1lZGlhU3RyZWFtSQogCiB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uUmVt
b3ZlU3RyZWFtKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNl
PikKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBMaWJXZWJSVENNZWRp
YUVuZHBvaW50OjpjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBS
VENEYXRhQ2hhbm5lbEluaXQmIG9wdGlvbnMpCit7CisgICAgd2VicnRjOjpEYXRhQ2hhbm5lbElu
aXQgaW5pdDsKKyAgICBpbml0Lm9yZGVyZWQgPSBvcHRpb25zLm9yZGVyZWQ7CisgICAgaW5pdC5t
YXhSZXRyYW5zbWl0VGltZSA9IG9wdGlvbnMubWF4UmV0cmFuc21pdFRpbWU7CisgICAgaW5pdC5t
YXhSZXRyYW5zbWl0cyA9IG9wdGlvbnMubWF4UmV0cmFuc21pdHM7CisgICAgaW5pdC5wcm90b2Nv
bCA9IG9wdGlvbnMucHJvdG9jb2wudXRmOCgpLmRhdGEoKTsKKyAgICBpbml0Lm5lZ290aWF0ZWQg
PSBvcHRpb25zLm5lZ290aWF0ZWQ7CisgICAgaW5pdC5pZCA9IG9wdGlvbnMuaWQ7CisKKyAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KG1fYmFj
a2VuZC0+Q3JlYXRlRGF0YUNoYW5uZWwobGFiZWwudXRmOCgpLmRhdGEoKSwgJmluaXQpKTsKK30K
Kwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGREYXRhQ2hhbm5lbChydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4mJiBkYXRhQ2hhbm5lbCkKK3sK
KyAgICBhdXRvIHByb3RvY29sID0gZGF0YUNoYW5uZWwtPnByb3RvY29sKCk7CisgICAgYXV0byBs
YWJlbCA9IGRhdGFDaGFubmVsLT5sYWJlbCgpOworCisgICAgUlRDRGF0YUNoYW5uZWxJbml0IGlu
aXQ7CisgICAgaW5pdC5vcmRlcmVkID0gZGF0YUNoYW5uZWwtPm9yZGVyZWQoKTsKKyAgICBpbml0
Lm1heFJldHJhbnNtaXRUaW1lID0gZGF0YUNoYW5uZWwtPm1heFJldHJhbnNtaXRUaW1lKCk7Cisg
ICAgaW5pdC5tYXhSZXRyYW5zbWl0cyA9IGRhdGFDaGFubmVsLT5tYXhSZXRyYW5zbWl0cygpOwor
ICAgIGluaXQucHJvdG9jb2wgPSBTdHJpbmcocHJvdG9jb2wuZGF0YSgpLCBwcm90b2NvbC5zaXpl
KCkpOworICAgIGluaXQubmVnb3RpYXRlZCA9IGRhdGFDaGFubmVsLT5uZWdvdGlhdGVkKCk7Cisg
ICAgaW5pdC5pZCA9IGRhdGFDaGFubmVsLT5pZCgpOworCisgICAgYm9vbCBpc09wZW5lZCA9IGRh
dGFDaGFubmVsLT5zdGF0ZSgpID09IHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U6OmtPcGVu
OworCisgICAgYXV0byBoYW5kbGVyID0gIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyPihXVEZNb3ZlKGRhdGFDaGFubmVsKSk7CisgICAgQVNTRVJUKG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwor
ICAgIGF1dG8gY2hhbm5lbCA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoKm1fcGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNvbm5lY3Rpb24oKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUo
aGFuZGxlciksIFN0cmluZyhsYWJlbC5kYXRhKCksIGxhYmVsLnNpemUoKSksIFdURk1vdmUoaW5p
dCkpOworCisgICAgaWYgKGlzT3BlbmVkKSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2No
YW5uZWwgPSBjaGFubmVsLmNvcHlSZWYoKV0geworICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBiZSBhYmxlIHRvIHdyaXRlIGNoYW5uZWwtPmRpZENoYW5nZVJlYWR5U3RhdGUoLi4uKQor
ICAgICAgICAgICAgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQgPSBjaGFubmVs
LmdldCgpOworICAgICAgICAgICAgY2xpZW50LmRpZENoYW5nZVJlYWR5U3RhdGUoUlRDRGF0YUNo
YW5uZWw6OlJlYWR5U3RhdGVPcGVuKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgbV9wZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLmZpcmVFdmVudChSVENEYXRhQ2hhbm5lbEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRhdGFjaGFubmVsRXZlbnQsIGZhbHNlLCBmYWxzZSwg
V1RGTW92ZShjaGFubmVsKSkpOwogfQogCiB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9u
RGF0YUNoYW5uZWwocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZh
Y2U+IGRhdGFDaGFubmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5o
CmluZGV4IDExZDczMWZlNWIzNDlkODkwZWViZGZmMTRhODdkM2IzODUyMmUyYjYuLjAzYzQ2MTYx
ZmFiYWE4MjJiZjE0OGU3MzMxZjk2MGM0YjVjZmEzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENNZWRpYUVuZHBvaW50LmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZG9DcmVhdGVPZmZlcigpOwogICAgIHZvaWQgZG9DcmVhdGVBbnN3ZXIoKTsKICAgICB2b2lkIGdl
dFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBQZWVyQ29ubmVjdGlvbjo6U3RhdHNQcm9taXNlJiYp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURhdGFD
aGFubmVsKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYpOwogCiAgICAg
dm9pZCBzdG9yZUljZUNhbmRpZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpJY2VDYW5kaWRh
dGVJbnRlcmZhY2U+JiYgY2FuZGlkYXRlKSB7IG1fcGVuZGluZ0NhbmRpZGF0ZXMuYXBwZW5kKFdU
Rk1vdmUoY2FuZGlkYXRlKSk7IH0KICAgICB2b2lkIGFkZFBlbmRpbmdJY2VDYW5kaWRhdGVzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmNwcAppbmRleCAwNGYyOGIxMTUwOGYxYjJjMjU1ZWVhNTQ5YTBiOGFmZDhiN2UwZDk0Li5hZThk
NDU0MDUxNTQwN2RjNGExNGUxOWQyNDY0MmI1NWRjZmZkNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSWNlQ2FuZGlkYXRlLmgi
CisjaW5jbHVkZSAiTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTGli
V2ViUlRDTWVkaWFFbmRwb2ludC5oIgogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRDb25maWd1cmF0
aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTc5LDEwICsxODAsNyBAQCBSZWY8UlRDUnRw
UmVjZWl2ZXI+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXIo
Y29uc3QgU3RyaW5nJgogCiBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZURhdGFDaGFubmVsSGFuZGxlcihj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQmIG9wdGlvbnMpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKLSAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IG1fZW5kcG9pbnQtPmNyZWF0ZURhdGFDaGFubmVsKGxhYmVsLCBvcHRpb25zKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggZTA3ZjFhZDNm
MzVjNzExNzUzOGNkMDRiOTBhYzk3NGMyZDE1YTM3Zi4uODc3ZmZiNzA0YWVkYWZhMTMxZDMwMzBk
NzM4ZGIwNWFkOWQ5OGExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC02Nyw2ICs2Nyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhibG9ja2VkKSBcCiAgICAgbWFjcm8o
Ymx1cikgXAogICAgIG1hY3JvKGJvdW5kYXJ5KSBcCisgICAgbWFjcm8oYnVmZmVyZWRBbW91bnRM
b3dUaHJlc2hvbGQpIFwKICAgICBtYWNybyhjYWNoZWQpIFwKICAgICBtYWNybyhjYW5jZWwpIFwK
ICAgICBtYWNybyhjYW5wbGF5KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCmluZGV4IGIyYTM3OWEw
ODBlOGE3Nzk1OTJiMDE5YTE4NWY1YmUwN2I0ZWZjNGEuLmU0NjU1ZGQzMGQzMzE4NjJkZDhhZGM5
NzhkOTVkNTdjZGEyMDk4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC01MCw2ICs1MCw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgU3RyaW5n
JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOworCisgICAgdmlydHVhbCBzaXpl
X3QgYnVmZmVyZWRBbW91bnQoKSBjb25zdCA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oCmluZGV4IGE3NmQzOTI1OWY3NTdh
ZjFhZTEyYjIwNjY5ZmRhZTljMmMxMDI3OWQuLjk4MTMxNmQxNDBjZjFmYjllNjM1MWJjYmEzOTA0
Mjg5MWMxYTlkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oCkBAIC0yMiwx
NiArMjIsMTYgQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Q2xpZW50X2gKLSNkZWZpbmUgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50X2gKKyNwcmFnbWEg
b25jZQogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQgeworY2xhc3Mg
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudD4gewogcHVibGljOgogICAgIGVudW0gUmVhZHlT
dGF0ZSB7CiAgICAgICAgIFJlYWR5U3RhdGVDb25uZWN0aW5nID0gMCwKQEAgLTQ2LDEzICs0Niw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoY29uc3Qg
U3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCBj
aGFyKiwgc2l6ZV90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdEVycm9yKCkgPSAw
OwotCi0gICAgdmlydHVhbCB2b2lkIHByb3RlY3QoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVu
cHJvdGVjdCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyZWRBbW91bnRJc0RlY3JlYXNp
bmcoKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoV0VCX1JUQykKLQotI2VuZGlmIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFu
ZGxlck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxI
YW5kbGVyTW9jay5oCmluZGV4IDE1NjJmNThhODk2ODkwOTFiNjkzNTdiYmVjZDhmZDM3NTg2ZTI2
ZDkuLjkzMDM0ODdlNjY3ZTAzZDI2YTYxMzc5MDQxY2U4ZTUwNmEzNjY1OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVy
TW9jay5oCkBAIC00Miw2ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZW5kU3RyaW5nRGF0
YShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIq
LCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgY2xvc2UoKSBmaW5hbDsKKyAgICBzaXplX3QgYnVm
ZmVyZWRBbW91bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAKICAgICBSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQqIG1fY2xpZW50OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>