<?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>237083</bug_id>
          
          <creation_ts>2022-02-23 06:02:36 -0800</creation_ts>
          <short_desc>LibWebRTCCodecs, -Proxy create and communicate the RemoteVideoFrameProxy incorrectly</short_desc>
          <delta_ts>2022-02-24 04:13:22 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1845108</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-23 06:02:36 -0800</bug_when>
    <thetext>LibWebRTCCodecs, -Proxy create and communicate the RemoteVideoFrameProxy incorrectly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845112</commentid>
    <comment_count>1</comment_count>
      <attachid>452972</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-23 06:13:11 -0800</bug_when>
    <thetext>Created attachment 452972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845539</commentid>
    <comment_count>2</comment_count>
      <attachid>453081</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-24 00:37:31 -0800</bug_when>
    <thetext>Created attachment 453081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845553</commentid>
    <comment_count>3</comment_count>
      <attachid>453081</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-24 01:43:12 -0800</bug_when>
    <thetext>Comment on attachment 453081
Patch

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

&gt; Source/WebCore/platform/MediaSample.h:115
&gt; +    virtual void setOwnershipIdentity(const ProcessIdentity&amp;) { }

It seems unnecessary to add a virtual method here, how about just reusing pixelBuffer()?
Also, there is only one call site in Cocoa specific code, so maybe we do not need to add such MediaSample method since we might want to move away from MediaSample for VideoFrames.

&gt; Source/WebKit/GPUProcess/media/RemoteVideoFrameObjectHeap.cpp:87
&gt; +{

We will probably always want to set the owner to the web process currently tied to RemoteVideoFrameObjectHeap.
Maybe we should consider doing that here, otherwise we might forget about doing that in new code paths.

&gt; Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:91
&gt; +            sample-&gt;setOwnershipIdentity(resourceOwner);

If we were doing that in addVideoFrame, we would need to do that call for the RemoteVideoSample code path.
This is probably fine, since at some point we will remove the RemoteVideoSample code path.

&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:327
&gt; +    // needs to be implemented.

I am not sure this comment helps much. Ideally if we were going into that situation, having some kind of debug assert would be better.

&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.h:136
&gt; +    void completedDecodingCV(RTCDecoderIdentifier, uint32_t timeStamp, WebCore::RemoteVideoSample&amp;&amp;);

Maybe add a FIXME, with something like:
FIXME: Remove when RemoteVideoFrameProxy is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845556</commentid>
    <comment_count>4</comment_count>
      <attachid>453081</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-24 02:30:40 -0800</bug_when>
    <thetext>Comment on attachment 453081
Patch

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

&gt;&gt; Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:91
&gt;&gt; +            sample-&gt;setOwnershipIdentity(resourceOwner);
&gt; 
&gt; If we were doing that in addVideoFrame, we would need to do that call for the RemoteVideoSample code path.
&gt; This is probably fine, since at some point we will remove the RemoteVideoSample code path.

This is doing it for the RemoteVideoSample too.

&gt;&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:327
&gt;&gt; +    // needs to be implemented.
&gt; 
&gt; I am not sure this comment helps much. Ideally if we were going into that situation, having some kind of debug assert would be better.

So currently there is nowhere to put the assertion, as it cannot happen.

In the scenario that it would happen, it is expected and business as usual. GPUP cannot know when WP unsubscribes a source from the messages. This means GPUP sends a message to some destination *at the same time* WP removes the destination the message will be undelivered. This is business as usual, and needs to be taken care of for the RemoteVideoFrameProxy::Properties, since the Properties owns the reference.

&gt;&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.h:136
&gt;&gt; +    void completedDecodingCV(RTCDecoderIdentifier, uint32_t timeStamp, WebCore::RemoteVideoSample&amp;&amp;);
&gt; 
&gt; Maybe add a FIXME, with something like:
&gt; FIXME: Remove when RemoteVideoFrameProxy is enabled.

I&apos;ll do another similar patch for another call site, I&apos;ll add the fixme in that patch, to overcome the patch submission delay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845574</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-24 04:12:55 -0800</bug_when>
    <thetext>Committed r290423 (247731@main): &lt;https://commits.webkit.org/247731@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453081.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845575</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-24 04:13:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/89411003&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452972</attachid>
            <date>2022-02-23 06:13:11 -0800</date>
            <delta_ts>2022-02-24 00:37:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237083-20220223161309.patch</filename>
            <type>text/plain</type>
            <size>16177</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzViYzI2N2M5ODE3ZGQz
ZjM4MmY4MmM5ZmZmMzA4MTUxZTMzNjhkOS4uYTM1ZDZlZDJjMWFlMWY2YmM3Mzc0NGNlOTMxNjZl
NTk5YmNhZDk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAyLTIzICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgTGliV2ViUlRDQ29k
ZWNzLCAtUHJveHkgY3JlYXRlIGFuZCBjb21tdW5pY2F0ZSB0aGUgUmVtb3RlVmlkZW9GcmFtZVBy
b3h5IGluY29ycmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzcwODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgZnVuY3Rpb25zIHRvIHNldCBtZWRpYSBzYW1wbGUgb3duZXJzaGlwIGlkZW50
aXR5IGlmIHRoZSB1bmRlcmx5aW5nIG9iamVjdAorICAgICAgICBzdXBwb3J0cyB0aGUgZmVhdHVy
ZS4KKworICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNhbXBsZTo6c2V0T3duZXJzaGlwSWRlbnRpdHkpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0T3duZXJzaGlw
SWRlbnRpdHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVDVi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVDVi5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvRnJhbWVDVjo6c2V0T3duZXJzaGlwSWRlbnRpdHkpOgorCiAyMDIy
LTAyLTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cC93
cHQvcHVzaC1hcGkvb25wdXNoLWRpc2FibGVkLmh0bWwgZmFpbHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjExZDZm
MjM4ODY2NzcxNTZmNDM2YWQ2YWE4NWQ1ODk3OWM1ZTE1ZS4uOTk1N2U0OTVmNmQzMmVkMGY4Mjhk
MjkyMThhYTQyMGY0OTRjOTI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMi0wMi0y
MyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIExpYldl
YlJUQ0NvZGVjcywgLVByb3h5IGNyZWF0ZSBhbmQgY29tbXVuaWNhdGUgdGhlIFJlbW90ZVZpZGVv
RnJhbWVQcm94eSBpbmNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM3MDgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisgICAgICAgIExpYldlYlJUQ0NvZGVjc1Byb3h5IHNob3VsZCBub3QgY2FsbCBSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcDo6Y3JlYXRlVmlkZW9GcmFtZSwKKyAgICAgICAgdGhlIGZ1bmN0
aW9uIHNob3VsZCBiZSByZW1vdmVkLiBJbnN0ZWFkLCBMaWJXZWJSVENDb2RlY3NQcm94eSBzaG91
bGQgY29uc3RydWN0IGEKKyAgICAgICAgd3JpdGUgcmVmZXJlbmNlIHRvIGluc2VydCB0aGUgbWVk
aWEgc2FtcGxlIC0+IHJlbW90ZSBwcm94eSBtYXBwaW5nLiBUaGVuCisgICAgICAgIHRoZSByZXN1
bHQgb2YgdGhlIGluc2VydCwgYSBuZXcgcmVmZXJlbmNlLCBzaG91bGQgYmUgc2VudCBhcyBwYXJ0
IG9mIHRoZQorICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgdG8gdGhl
IFdQLiBUaGlzIHdheSB0aGUgc2VudCByZWZlcmVuY2UgaXMKKyAgICAgICAgY29uc3RydWN0ZWQg
YXMgZXhwZWN0ZWQuIFByZXZpb3VzbHkgdGhlIHJlZmVyZW5jZSB3YXMgY29ycmVjdCBidXQgbWF0
Y2hlZCBqdXN0CisgICAgICAgIGJ5IHNlbGVjdGluZyB0aGUgY29uc3RhbnRzIGN1cnJlbnRseSB1
c2VkICgwKS4gVGhpcyB3b3JrcyB0b3dhcmRzIGJlaW5nIGFibGUKKyAgICAgICAgdG8gcmVtb3Zl
IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVhdGVWaWRlb0ZyYW1lLgorCisgICAgICAg
IFNwbGl0IHRoZSBjb21wbGV0ZWREZWNvZGluZyB0byB0d286CisgICAgICAgIC0gY29tcGxldGVk
RGVjb2RpbmcgdXNlZCB0byBzZW5kIG5ldyBSZW1vdGVWaWRlb0ZyYW1lcworICAgICAgICAtIGNv
bXBsZXRlZERlY29kaW5nQ1YgdG8gc2VuZCBDb3JlVmlkZW8gc3BlY2lmaWMgUmVtb3RlVmlkZW9T
YW1wbGUgaW5zdGFuY2VzICh3aGljaCB3aWxsCisgICAgICAgICAgcmVtb3ZlZCBldmVudHVhbGx5
KS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1t
OgorICAgICAgICAoV2ViS2l0OjpGdW5jdGlvbjx2b2lkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGliV2Vi
UlRDQ29kZWNzOjpjb21wbGV0ZWREZWNvZGluZyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJU
Q0NvZGVjczo6Y29tcGxldGVkRGVjb2RpbmdDVik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW46CisKIDIwMjItMDItMjMgIEtpbW1vIEtpbm51
bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyOTAxNzUp
OiBUZXh0dXJlIHVwbG9hZCBmcm9tIHZpZGVvIGFuZCB1c2VyIG1lZGlhIGlzIHNsb3dlciB0aGFu
IGV4cGVjdGVkIGZvciBub24tR1BVUCBXZWJHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTWVkaWFTYW1wbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2Ft
cGxlLmgKaW5kZXggYzgwNDA4NzQ5MzJkNjUxNDc4MDkyMWY2MmNmZmNhZThmNjNjZjk3Yy4uMGE2
ZjI4YTIwMTMxMzU1MzU4YjZlN2Y5Y2RjMTI2YTRkNWMwZTZhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NZWRpYVNhbXBsZS5oCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0
IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVzY3JpcHRpb25SZWY7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vY2tTYW1wbGVCb3g7CitjbGFzcyBQcm9jZXNzSWRl
bnRpdHk7CiAKIHN0cnVjdCBQbGF0Zm9ybVNhbXBsZSB7CiAgICAgZW51bSBUeXBlIHsKQEAgLTEx
MSw2ICsxMTIsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCBD
VlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfTsK
ICNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBQcm9j
ZXNzSWRlbnRpdHkmKSB7IH0KIAogICAgIGJvb2wgaXNTeW5jKCkgY29uc3QgeyByZXR1cm4gZmxh
Z3MoKSAmIElzU3luYzsgfQogICAgIGJvb2wgaXNOb25EaXNwbGF5aW5nKCkgY29uc3QgeyByZXR1
cm4gZmxhZ3MoKSAmIElzTm9uRGlzcGxheWluZzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpD
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMuaAppbmRleCBmNjgyYWEyYzdjNGEzNWI5Nzg3NjM0ODU1NWViNDRm
MjIwNDNhYzNhLi4zOWJhZGMwZTVlMzJhNjgxMjQyMTcxZDQ5MDk3ZjgyMjU1YjBjZGMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaApAQCAtNzYsNiArNzYs
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCB2aWRlb01pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9taXJyb3JlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHZpZGVvUGl4
ZWxGb3JtYXQoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBDVlBpeGVsQnVmZmVy
UmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKSBmaW5hbDsKKwogICAg
IENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxl
LmdldCgpOyB9CiAKICAgICBib29sIGlzSG9tb2dlbmVvdXMoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCA2MTAzMDU4NjQ1YWQ2N2Zl
YjY4ZGY3NjM2NDQxNjU2MzQ1Y2I0OTc3Li4yNDNiMDM1ZTNiMDZiNjBhZjc1NDJlYzQ4MDMxNGE2
NGQzNGU3ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpD
Lm1tCkBAIC0yNiw4ICsyNiwxMCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJNZWRp
YVNhbXBsZUFWRk9iakMuaCIKIAorI2ltcG9ydCAiQ1ZVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlBp
eGVsQnVmZmVyLmgiCiAjaW1wb3J0ICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCisjaW1wb3J0
ICJQcm9jZXNzSWRlbnRpdHkuaCIKICNpbXBvcnQgIlZpZGVvRnJhbWVDVi5oIgogI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvVHlw
ZWRBcnJheUlubGluZXMuaD4KQEAgLTU1MSw0ICs1NTMsMTIgQEAgQ1ZQaXhlbEJ1ZmZlclJlZiBN
ZWRpYVNhbXBsZUFWRk9iakM6OnBpeGVsQnVmZmVyKCkgY29uc3QKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVy
KG1fc2FtcGxlLmdldCgpKSk7CiB9CiAKK3ZvaWQgTWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRPd25l
cnNoaXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmIHJlc291cmNlT3duZXIpCit7Cisg
ICAgQVNTRVJUKHJlc291cmNlT3duZXIpOworICAgIGF1dG8gYnVmZmVyID0gcGl4ZWxCdWZmZXIo
KTsKKyAgICBBU1NFUlQoYnVmZmVyKTsKKyAgICBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4
ZWxCdWZmZXIoYnVmZmVyLCByZXNvdXJjZU93bmVyKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNWLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YuaAppbmRleCAxNGViNWI1
NTJmY2NjNTMzNzYzZmM3NGM3ZTkzZGVjNmYyMzIxY2IzLi4wZDM0ZDgyZjBmMDk2YmUzYzk1NWUz
ZTY0ZjJhNjZjMDYyOWYzZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAg
Ly8gVmlkZW9GcmFtZSBvdmVycmlkZXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6Rmxv
YXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9S
VCB1aW50MzJfdCB2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKSBm
aW5hbDsKICAgICBib29sIGlzQ1YoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPFdlYkNvcmU6OlZpZGVvRnJhbWVDVj4gYXNWaWRlb0ZyYW1l
Q1YoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvVmlkZW9GcmFtZUNWLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVmlkZW9GcmFtZUNWLm1tCmluZGV4IGQzOWM5MGUwYzc5MGE1NzUxMTM3YjA1YTZmZDYwMTEx
MmQ2YTk4MWEuLjM1MTcwN2FiZTcyY2NiYWY4MTg0NGQ4YjE0ZmM1NjgyZDU3YzJiYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVDVi5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1Yu
bW0KQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJWaWRlb0ZyYW1lQ1YuaCIKIAogI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKKyNpbmNsdWRlICJDVlV0aWxpdGllcy5o
IgorI2luY2x1ZGUgIlByb2Nlc3NJZGVudGl0eS5oIgogI2luY2x1ZGUgIkNvcmVWaWRlb1NvZnRM
aW5rLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU0LDEyICs1NiwyMCBAQCB1aW50MzJf
dCBWaWRlb0ZyYW1lQ1Y6OnZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdAogewogICAgIHJldHVybiBD
VlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKG1fcGl4ZWxCdWZmZXIuZ2V0KCkpOwogfQor
Cit2b2lkIFZpZGVvRnJhbWVDVjo6c2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vzc0lk
ZW50aXR5JiByZXNvdXJjZU93bmVyKQoreworICAgIEFTU0VSVChyZXNvdXJjZU93bmVyKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IHBpeGVsQnVmZmVyKCk7CisgICAgQVNTRVJUKGJ1ZmZlcik7CisgICAg
c2V0T3duZXJzaGlwSWRlbnRpdHlGb3JDVlBpeGVsQnVmZmVyKGJ1ZmZlciwgcmVzb3VyY2VPd25l
cik7Cit9CisKIFJlZlB0cjxXZWJDb3JlOjpWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWVDVjo6YXNW
aWRlb0ZyYW1lQ1YoKQogewogICAgIHJldHVybiB0aGlzOwogfQogCi0KIEltYWdlT3JpZW50YXRp
b24gVmlkZW9GcmFtZUNWOjpvcmllbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgLy8gU2FtcGxlIHRy
YW5zZm9ybSBmaXJzdCBmbGlwcyB4LWNvb3JkaW5hdGVzLCB0aGVuIHJvdGF0ZXMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
Lm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94
eS5tbQppbmRleCBlZGM2ZDY2NjY3YmRiM2ZhYWEwNzljYzM4YWU1YmU0Njk2MGQxN2ViLi5iNjVl
MWRmZTA1ZTA0YjExYTRmZWU2ZDZlMTJhMGVlZWFkZmRlYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KQEAg
LTg3LDIxICs4NywyMCBAQCBzdGF0aWMgRnVuY3Rpb248dm9pZChDVlBpeGVsQnVmZmVyUmVmIHBp
eGVsQnVmZmVyLCB1aW50MzJfdCB0aW1lU3RhbXBOcywgdWludDMyXwogICAgICAgICBhdXRvIHNh
bXBsZSA9IFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUocGl4
ZWxCdWZmZXIsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBmYWxz
ZSwgTWVkaWFUaW1lKHRpbWVTdGFtcE5zLCAxKSwgeyB9KTsKICAgICAgICAgaWYgKCFzYW1wbGUp
CiAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byByZW1vdGVTYW1wbGUgPSBXZWJD
b3JlOjpSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKCpzYW1wbGUpOwotICAgICAgICBpZiAoIXJl
bW90ZVNhbXBsZSkKLSAgICAgICAgICAgIHJldHVybjsKLQogICAgICAgICBpZiAocmVzb3VyY2VP
d25lcikKLSAgICAgICAgICAgIHJlbW90ZVNhbXBsZS0+c2V0T3duZXJzaGlwSWRlbnRpdHkocmVz
b3VyY2VPd25lcik7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllcj4gcmVtb3RlSWRlbnRpZmllcjsKKyAgICAgICAgICAgIHNhbXBsZS0+c2V0T3duZXJz
aGlwSWRlbnRpdHkocmVzb3VyY2VPd25lcik7CiAgICAgICAgIGlmICh1c2VSZW1vdGVGcmFtZXMp
IHsKLSAgICAgICAgICAgIHJlbW90ZUlkZW50aWZpZXIgPSB2aWRlb0ZyYW1lT2JqZWN0SGVhcC0+
Y3JlYXRlUmVtb3RlVmlkZW9GcmFtZShzYW1wbGUucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAg
ICAgICByZW1vdGVTYW1wbGUtPmNsZWFySU9TdXJmYWNlKCk7CisgICAgICAgICAgICBhdXRvIHdy
aXRlID0gUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlOjpnZW5lcmF0ZUZvckFkZCgpOwor
ICAgICAgICAgICAgYXV0byBuZXdGcmFtZVJlZmVyZW5jZSA9IHdyaXRlLnJldGlyZWRSZWZlcmVu
Y2UoKTsKKyAgICAgICAgICAgIGF1dG8gcHJvcGVydGllcyA9IFJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6cHJvcGVydGllcyhXVEZNb3ZlKG5ld0ZyYW1lUmVmZXJlbmNlKSwgKnNhbXBsZSk7CisgICAg
ICAgICAgICB2aWRlb0ZyYW1lT2JqZWN0SGVhcC0+cmV0aXJlKFdURk1vdmUod3JpdGUpLCBzYW1w
bGUucmVsZWFzZU5vbk51bGwoKSwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgIGNvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6Q29tcGxldGVkRGVjb2RpbmcgeyBp
ZGVudGlmaWVyLCB0aW1lU3RhbXAsIFdURk1vdmUocHJvcGVydGllcykgfSwgMCk7CisgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpMaWJXZWJSVENDb2RlY3M6OkNvbXBsZXRlZERlY29kaW5nIHsgaWRlbnRpZmllciwgdGlt
ZVN0YW1wLCAqcmVtb3RlU2FtcGxlLCByZW1vdGVJZGVudGlmaWVyIH0sIDApOworICAgICAgICBh
dXRvIHJlbW90ZVNhbXBsZSA9IFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoKnNh
bXBsZSk7CisgICAgICAgIGlmICghcmVtb3RlU2FtcGxlKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6OkNvbXBs
ZXRlZERlY29kaW5nQ1YgeyBpZGVudGlmaWVyLCB0aW1lU3RhbXAsICpyZW1vdGVTYW1wbGUgfSwg
MCk7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggMWMyMjczNDMyNTQ1YWJmM2M5MDZi
ODVkYzE3ZDliOTlkNGUxZjdhZC4uMjFmMzEwMzUyYWYxOTQzNTdlNWI0ZjIyZDRlMGI5NDk1ODU5
NDg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0zMTgsMzggKzMxOCw0NyBAQCB2b2lkIExpYldlYlJU
Q0NvZGVjczo6ZmFpbGVkRGVjb2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIgZGVjb2RlcklkZW50
aWZpZXIpCiAgICAgICAgIGRlY29kZXItPmhhc0Vycm9yID0gdHJ1ZTsKIH0KIAotdm9pZCBMaWJX
ZWJSVENDb2RlY3M6OmNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyIGRlY29k
ZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2Ft
cGxlJiYgcmVtb3RlU2FtcGxlLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlm
aWVyPiByZW1vdGVGcmFtZUlkZW50aWZpZXIpCit2b2lkIExpYldlYlJUQ0NvZGVjczo6Y29tcGxl
dGVkRGVjb2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIgZGVjb2RlcklkZW50aWZpZXIsIHVpbnQz
Ml90IHRpbWVTdGFtcCwgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzJiYgcHJvcGVy
dGllcykKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7Ci0KLSAgICBSZWZQdHI8UmVt
b3RlVmlkZW9GcmFtZVByb3h5PiByZW1vdGVWaWRlb0ZyYW1lOwotICAgIC8vIFdlIGFsd2F5cyBj
cmVhdGUgUmVtb3RlVmlkZW9GcmFtZVByb3h5IHNvIHRoYXQgd2UgY2FuIHJlbGVhc2UgdGhlIGNv
cnJlc3BvbmRpbmcgR1BVUHJvY2VzcyBJT1N1cmZhY2UgcmlnaHQgYXdheSBpZiB0aGVyZSBpcyBu
byB2aWRlbyBzb3VyY2UuCi0gICAgaWYgKHJlbW90ZUZyYW1lSWRlbnRpZmllcikgeworICAgIC8v
IEFkb3B0IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyB0byBSZW1vdGVWaWRlb0Zy
YW1lUHJveHkgaW5zdGFuY2UgYmVmb3JlIHRoZSBlYXJseSBvdXRzLCBzbyB0aGF0IHRoZSByZWZl
cmVuY2UgZ2V0cyBhZG9wdGVkLgorICAgIC8vIFR5cGljYWxseSBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OlByb3BlcnRpZXMmJiBzZW50IHRvIGRlc3RpbmF0aW9ucyB0aGF0IGFyZSBhbHJlYWR5IHJl
bW92ZWQgbmVlZCB0byBiZSBoYW5kbGVkIHNlcGFyYXRlbHkuCisgICAgLy8gTGliV2ViUlRDQ29k
ZWNzIGlzIG5vdCBldmVyIHJlbW92ZWQsIHNvIHdlIGRvIG5vdCBkbyB0aGlzLiBIb3dldmVyLCBp
ZiBpdCBldmVyIGlzLCBMaWJXZWJSVENDb2RlY3M6OmhhbmRsZU1lc3NhZ2VUb1JlbW92ZWREZXN0
aW5hdGlvbigpCisgICAgLy8gbmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQuCisgICAgUmVmPFJlbW90
ZVZpZGVvRnJhbWVQcm94eT4gcmVtb3RlVmlkZW9GcmFtZSA9IFsmXSB7CiAgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25Mb2NrIH07Ci0gICAgICAgIFJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6UHJvcGVydGllcyBwcm9wZXJ0aWVzIHsgeyAqcmVtb3RlRnJhbWVJZGVudGlmaWVyLCAw
IH0sIHJlbW90ZVNhbXBsZS50aW1lKCksIHJlbW90ZVNhbXBsZS5taXJyb3JlZCgpLCByZW1vdGVT
YW1wbGUucm90YXRpb24oKSwgcmVtb3RlU2FtcGxlLnNpemUoKSwgcmVtb3RlU2FtcGxlLnZpZGVv
Rm9ybWF0KCkgfTsKLSAgICAgICAgcmVtb3RlVmlkZW9GcmFtZSA9IFJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6Y3JlYXRlKCptX2Nvbm5lY3Rpb24sICptX3ZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHks
IFdURk1vdmUocHJvcGVydGllcykpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIFJlbW90ZVZpZGVv
RnJhbWVQcm94eTo6Y3JlYXRlKCptX2Nvbm5lY3Rpb24sICptX3ZpZGVvRnJhbWVPYmplY3RIZWFw
UHJveHksIFdURk1vdmUocHJvcGVydGllcykpOworICAgIH0oKTsKKwogICAgIC8vIEZJWE1FOiBE
byBlcnJvciBsb2dnaW5nLgogICAgIGF1dG8qIGRlY29kZXIgPSBtX2RlY29kZXJzLmdldChkZWNv
ZGVySWRlbnRpZmllcik7CiAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICByZXR1cm47Ci0KICAg
ICBpZiAoIWRlY29kZXItPmRlY29kZWRJbWFnZUNhbGxiYWNrTG9jay50cnlMb2NrKCkpCiAgICAg
ICAgIHJldHVybjsKLQogICAgIExvY2tlciBsb2NrZXIgeyBBZG9wdExvY2ssIGRlY29kZXItPmRl
Y29kZWRJbWFnZUNhbGxiYWNrTG9jayB9OwotCiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVkSW1h
Z2VDYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHJlbW90ZVZpZGVvRnJhbWUp
IHsKLSAgICAgICAgd2VicnRjOjp2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUoZGVjb2Rlci0+ZGVj
b2RlZEltYWdlQ2FsbGJhY2ssIHRpbWVTdGFtcCwgcmVtb3RlU2FtcGxlLnRpbWUoKS50b0RvdWJs
ZSgpLCByZW1vdGVWaWRlb0ZyYW1lLmxlYWtSZWYoKSwKLSAgICAgICAgICAgIFtdKGF1dG8qIHBv
aW50ZXIpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eSo+KHBvaW50
ZXIpLT5waXhlbEJ1ZmZlcigpOyB9LAotICAgICAgICAgICAgW10oYXV0byogcG9pbnRlcikgeyBz
dGF0aWNfY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJveHkqPihwb2ludGVyKS0+ZGVyZWYoKTsgfSwK
LSAgICAgICAgICAgIHJlbW90ZVNhbXBsZS5zaXplKCkud2lkdGgoKSwgcmVtb3RlU2FtcGxlLnNp
emUoKS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgYXV0byogZnJhbWUg
PSByZW1vdGVWaWRlb0ZyYW1lLmxlYWtSZWYoKTsgLy8gQmFsYW5jZWQgYnkgdGhlIHJlbGVhc2Ug
Y2FsbGJhY2sgb2YgdmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlLgorICAgIHdlYnJ0Yzo6dmlkZW9E
ZWNvZGVyVGFza0NvbXBsZXRlKGRlY29kZXItPmRlY29kZWRJbWFnZUNhbGxiYWNrLCB0aW1lU3Rh
bXAsIGZyYW1lLT5wcmVzZW50YXRpb25UaW1lKCkudG9Eb3VibGUoKSwgZnJhbWUsCisgICAgICAg
IFtdKGF1dG8qIHBvaW50ZXIpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlbW90ZVZpZGVvRnJhbWVQ
cm94eSo+KHBvaW50ZXIpLT5waXhlbEJ1ZmZlcigpOyB9LAorICAgICAgICBbXShhdXRvKiBwb2lu
dGVyKSB7IHN0YXRpY19jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eSo+KHBvaW50ZXIpLT5kZXJl
ZigpOyB9LAorICAgICAgICBmcmFtZS0+c2l6ZSgpLndpZHRoKCksIGZyYW1lLT5zaXplKCkuaGVp
Z2h0KCkpOworfQogCit2b2lkIExpYldlYlJUQ0NvZGVjczo6Y29tcGxldGVkRGVjb2RpbmdDVihS
VENEZWNvZGVySWRlbnRpZmllciBkZWNvZGVySWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1w
LCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW90ZVNhbXBsZSkKK3sKKyAgICBBU1NF
UlQoIWlzTWFpblJ1bkxvb3AoKSk7CisgICAgLy8gRklYTUU6IERvIGVycm9yIGxvZ2dpbmcuCisg
ICAgYXV0byogZGVjb2RlciA9IG1fZGVjb2RlcnMuZ2V0KGRlY29kZXJJZGVudGlmaWVyKTsKKyAg
ICBpZiAoIWRlY29kZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWRlY29kZXItPmRlY29k
ZWRJbWFnZUNhbGxiYWNrTG9jay50cnlMb2NrKCkpCisgICAgICAgIHJldHVybjsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgQWRvcHRMb2NrLCBkZWNvZGVyLT5kZWNvZGVkSW1hZ2VDYWxsYmFja0xvY2sg
fTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZWRJbWFnZUNhbGxiYWNrKQorICAgICAgICByZXR1
cm47CiAgICAgaWYgKCFyZW1vdGVTYW1wbGUuc3VyZmFjZSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZUNWUGl4ZWxCdWZmZXIocmVtb3RlU2FtcGxlLnN1
cmZhY2UoKSkudmFsdWVfb3IobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IGY0MTM3YjIyMzM1ODFh
NTQzODI1NDM3MGE3NjNlYjUyZTdlMzI3NjIuLjk3ZTk0ZTVhYzI2NjI5NzA5MzY3YzdmZjFlMzA4
MGJhOGRkMmEzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiUlRD
RGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3Rl
VmlkZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oPgogI2luY2x1ZGUgPG1hcD4KQEAg
LTEzMSw3ICsxMzIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25N
YXlOb0xvbmdlckJlTmVlZGVkKCk7CiAKICAgICB2b2lkIGZhaWxlZERlY29kaW5nKFJUQ0RlY29k
ZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVu
dGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYs
IHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+KTsKKyAgICB2b2lkIGNv
bXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAs
IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyYmKTsKKyAgICB2b2lkIGNvbXBsZXRl
ZERlY29kaW5nQ1YoUlRDRGVjb2RlcklkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2Vi
Q29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJik7CiAgICAgdm9pZCBjb21wbGV0ZWRFbmNvZGluZyhS
VENFbmNvZGVySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGNvbnN0IHdlYnJ0Yzo6
V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYpOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiBjb252ZXJ0VG9CR1JBKENWUGl4ZWxCdWZmZXJSZWYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVz
c2FnZXMuaW4KaW5kZXggN2RiNzk1MDgxZWE1ZjA2MDJmNmYyMjYyN2I0NDU1NTNhOGI3MDc0MC4u
NmZjM2RiNzJkNjdhMWQ3MjY4YWZjMDEyZDJiZmRmYzI0ZWQ1MzM4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjcy5tZXNzYWdlcy5pbgpAQCAtMjQsOCArMjQsOCBAQAogCiBtZXNzYWdlcyAtPiBMaWJXZWJS
VENDb2RlY3MgTm90UmVmQ291bnRlZCB7CiAgICAgRmFpbGVkRGVjb2RpbmcoV2ViS2l0OjpSVENE
ZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIENvbXBsZXRlZERlY29kaW5nKFdlYktp
dDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBX
ZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpS
ZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj4gcmVtb3RlRnJhbWVJZGVudGlmaWVyKQotCisgICAg
Q29tcGxldGVkRGVjb2RpbmcoV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCB1aW50MzJfdCB0aW1lU3RhbXAsIFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9w
ZXJ0aWVzIGZyYW1lKQorICAgIENvbXBsZXRlZERlY29kaW5nQ1YoV2ViS2l0OjpSVENEZWNvZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90
ZVZpZGVvU2FtcGxlIHNhbXBsZSkKICAgICBDb21wbGV0ZWRFbmNvZGluZyhXZWJLaXQ6OlJUQ0Vu
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBzdHJ1
Y3Qgd2VicnRjOjpXZWJLaXRFbmNvZGVkRnJhbWVJbmZvIGluZm8pOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453081</attachid>
            <date>2022-02-24 00:37:31 -0800</date>
            <delta_ts>2022-02-24 04:12:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237083-20220224103730.patch</filename>
            <type>text/plain</type>
            <size>18745</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWZhNmRhNDdhYmU2NjRh
Zjg5NzMyNzBhZGJlODM4M2M0ZmZiYzRkZi4uNDY1Yjg2MWQ4ZjQzZWYzZmM5NDRiOWYwNGRkNjUy
NGIxZjRlMTBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAyLTI0ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgTGliV2ViUlRDQ29k
ZWNzLCAtUHJveHkgY3JlYXRlIGFuZCBjb21tdW5pY2F0ZSB0aGUgUmVtb3RlVmlkZW9GcmFtZVBy
b3h5IGluY29ycmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzcwODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgZnVuY3Rpb25zIHRvIHNldCBtZWRpYSBzYW1wbGUgb3duZXJzaGlwIGlkZW50
aXR5IGlmIHRoZSB1bmRlcmx5aW5nIG9iamVjdAorICAgICAgICBzdXBwb3J0cyB0aGUgZmVhdHVy
ZS4KKworICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNhbXBsZTo6c2V0T3duZXJzaGlwSWRlbnRpdHkpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0T3duZXJzaGlw
SWRlbnRpdHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVDVi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVDVi5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvRnJhbWVDVjo6c2V0T3duZXJzaGlwSWRlbnRpdHkpOgorCiAyMDIy
LTAyLTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI5MDI4NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDQ0NGJiZjlkODNj
YjE1MzY4Njc2ZjU0YzQzMjc1ZTMxNjBiYTkyZC4uNzY0NjE3OWNkN2IzNDA3NDM1ODEzMDUwZGJl
NmJmZWE5MDg4NzExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMi0wMi0yNCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIExpYldlYlJUQ0Nv
ZGVjcywgLVByb3h5IGNyZWF0ZSBhbmQgY29tbXVuaWNhdGUgdGhlIFJlbW90ZVZpZGVvRnJhbWVQ
cm94eSBpbmNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM3MDgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisg
ICAgICAgIExpYldlYlJUQ0NvZGVjc1Byb3h5IHNob3VsZCBub3QgY2FsbCBSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcDo6Y3JlYXRlVmlkZW9GcmFtZSwKKyAgICAgICAgdGhlIGZ1bmN0aW9uIHNo
b3VsZCBiZSByZW1vdmVkLiBJbnN0ZWFkLCBMaWJXZWJSVENDb2RlY3NQcm94eSBzaG91bGQgY29u
c3RydWN0IGEKKyAgICAgICAgd3JpdGUgcmVmZXJlbmNlIHRvIGluc2VydCB0aGUgbWVkaWEgc2Ft
cGxlIC0+IHJlbW90ZSBwcm94eSBtYXBwaW5nLiBUaGVuCisgICAgICAgIHRoZSByZXN1bHQgb2Yg
dGhlIGluc2VydCwgYSBuZXcgcmVmZXJlbmNlLCBzaG91bGQgYmUgc2VudCBhcyBwYXJ0IG9mIHRo
ZQorICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgdG8gdGhlIFdQLiBU
aGlzIHdheSB0aGUgc2VudCByZWZlcmVuY2UgaXMKKyAgICAgICAgY29uc3RydWN0ZWQgYXMgZXhw
ZWN0ZWQuIFByZXZpb3VzbHkgdGhlIHJlZmVyZW5jZSB3YXMgY29ycmVjdCBidXQgbWF0Y2hlZCBq
dXN0CisgICAgICAgIGJ5IHNlbGVjdGluZyB0aGUgY29uc3RhbnRzIGN1cnJlbnRseSB1c2VkICgw
KS4gVGhpcyB3b3JrcyB0b3dhcmRzIGJlaW5nIGFibGUKKyAgICAgICAgdG8gcmVtb3ZlIFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVhdGVWaWRlb0ZyYW1lLgorCisgICAgICAgIFNwbGl0
IHRoZSBjb21wbGV0ZWREZWNvZGluZyB0byB0d286CisgICAgICAgIC0gY29tcGxldGVkRGVjb2Rp
bmcgdXNlZCB0byBzZW5kIG5ldyBSZW1vdGVWaWRlb0ZyYW1lcworICAgICAgICAtIGNvbXBsZXRl
ZERlY29kaW5nQ1YgdG8gc2VuZCBDb3JlVmlkZW8gc3BlY2lmaWMgUmVtb3RlVmlkZW9TYW1wbGUg
aW5zdGFuY2VzICh3aGljaCB3aWxsCisgICAgICAgICAgcmVtb3ZlZCBldmVudHVhbGx5KS4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tOgorICAg
ICAgICAoV2ViS2l0OjpGdW5jdGlvbjx2b2lkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29k
ZWNzOjpjb21wbGV0ZWREZWNvZGluZyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVj
czo6Y29tcGxldGVkRGVjb2RpbmdDVik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MubWVzc2FnZXMuaW46CisKIDIwMjItMDItMjMgIEtpbW1vIEtpbm51bmVuICA8
a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyOTAxNzUpOiBUZXh0
dXJlIHVwbG9hZCBmcm9tIHZpZGVvIGFuZCB1c2VyIG1lZGlhIGlzIHNsb3dlciB0aGFuIGV4cGVj
dGVkIGZvciBub24tR1BVUCBXZWJHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTWVkaWFTYW1wbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgK
aW5kZXggYzgwNDA4NzQ5MzJkNjUxNDc4MDkyMWY2MmNmZmNhZThmNjNjZjk3Yy4uMGE2ZjI4YTIw
MTMxMzU1MzU4YjZlN2Y5Y2RjMTI2YTRkNWMwZTZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZWRpYVNhbXBsZS5oCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1
ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVzY3JpcHRpb25SZWY7CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIE1vY2tTYW1wbGVCb3g7CitjbGFzcyBQcm9jZXNzSWRlbnRpdHk7
CiAKIHN0cnVjdCBQbGF0Zm9ybVNhbXBsZSB7CiAgICAgZW51bSBUeXBlIHsKQEAgLTExMSw2ICsx
MTIsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCBDVlBpeGVs
QnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfTsKICNlbmRp
ZgorICAgIHZpcnR1YWwgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRl
bnRpdHkmKSB7IH0KIAogICAgIGJvb2wgaXNTeW5jKCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAm
IElzU3luYzsgfQogICAgIGJvb2wgaXNOb25EaXNwbGF5aW5nKCkgY29uc3QgeyByZXR1cm4gZmxh
Z3MoKSAmIElzTm9uRGlzcGxheWluZzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMuaAppbmRleCBmNjgyYWEyYzdjNGEzNWI5Nzg3NjM0ODU1NWViNDRmMjIwNDNh
YzNhLi4zOWJhZGMwZTVlMzJhNjgxMjQyMTcxZDQ5MDk3ZjgyMjU1YjBjZGMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaApAQCAtNzYsNiArNzYsOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCB2aWRlb01pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9taXJyb3JlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHZpZGVvUGl4ZWxGb3Jt
YXQoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBDVlBpeGVsQnVmZmVyUmVmIHBp
eGVsQnVmZmVyKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPd25l
cnNoaXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKSBmaW5hbDsKKwogICAgIENNU2Ft
cGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlLmdldCgp
OyB9CiAKICAgICBib29sIGlzSG9tb2dlbmVvdXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxl
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCA2MTAzMDU4NjQ1YWQ2N2ZlYjY4ZGY3
NjM2NDQxNjU2MzQ1Y2I0OTc3Li4yNDNiMDM1ZTNiMDZiNjBhZjc1NDJlYzQ4MDMxNGE2NGQzNGU3
ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCkBA
IC0yNiw4ICsyNiwxMCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJNZWRpYVNhbXBs
ZUFWRk9iakMuaCIKIAorI2ltcG9ydCAiQ1ZVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlBpeGVsQnVm
ZmVyLmgiCiAjaW1wb3J0ICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCisjaW1wb3J0ICJQcm9j
ZXNzSWRlbnRpdHkuaCIKICNpbXBvcnQgIlZpZGVvRnJhbWVDVi5oIgogI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJh
eUlubGluZXMuaD4KQEAgLTU1MSw0ICs1NTMsMTIgQEAgQ1ZQaXhlbEJ1ZmZlclJlZiBNZWRpYVNh
bXBsZUFWRk9iakM6OnBpeGVsQnVmZmVyKCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKG1fc2Ft
cGxlLmdldCgpKSk7CiB9CiAKK3ZvaWQgTWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRPd25lcnNoaXBJ
ZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmIHJlc291cmNlT3duZXIpCit7CisgICAgQVNT
RVJUKHJlc291cmNlT3duZXIpOworICAgIGF1dG8gYnVmZmVyID0gcGl4ZWxCdWZmZXIoKTsKKyAg
ICBBU1NFUlQoYnVmZmVyKTsKKyAgICBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZm
ZXIoYnVmZmVyLCByZXNvdXJjZU93bmVyKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNWLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YuaAppbmRleCA5ODZkYzc4ODlmZWQ4
YWVhNzhhZTQxOTY2MTQ0YTM3NTU5YzE1NDNkLi4zMWMxZDZlZGJjMTI2YTBhZDkzNjM4OWEzNDgw
MDY2YjUzNDA3NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9WaWRlb0ZyYW1lQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9WaWRlb0ZyYW1lQ1YuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgLy8gVmlk
ZW9GcmFtZSBvdmVycmlkZXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6RmxvYXRTaXpl
IHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB1aW50
MzJfdCB2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKSBmaW5hbDsK
ICAgICBib29sIGlzQ1YoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPFdlYkNvcmU6OlZpZGVvRnJhbWVDVj4gYXNWaWRlb0ZyYW1lQ1YoKSBm
aW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
VmlkZW9GcmFtZUNWLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlk
ZW9GcmFtZUNWLm1tCmluZGV4IGQzOWM5MGUwYzc5MGE1NzUxMTM3YjA1YTZmZDYwMTExMmQ2YTk4
MWEuLjM1MTcwN2FiZTcyY2NiYWY4MTg0NGQ4YjE0ZmM1NjgyZDU3YzJiYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVDVi5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YubW0KQEAg
LTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJWaWRlb0ZyYW1lQ1YuaCIKIAogI2lmIEVOQUJMRShW
SURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKKyNpbmNsdWRlICJDVlV0aWxpdGllcy5oIgorI2lu
Y2x1ZGUgIlByb2Nlc3NJZGVudGl0eS5oIgogI2luY2x1ZGUgIkNvcmVWaWRlb1NvZnRMaW5rLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU0LDEyICs1NiwyMCBAQCB1aW50MzJfdCBWaWRl
b0ZyYW1lQ1Y6OnZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdAogewogICAgIHJldHVybiBDVlBpeGVs
QnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKG1fcGl4ZWxCdWZmZXIuZ2V0KCkpOwogfQorCit2b2lk
IFZpZGVvRnJhbWVDVjo6c2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vzc0lkZW50aXR5
JiByZXNvdXJjZU93bmVyKQoreworICAgIEFTU0VSVChyZXNvdXJjZU93bmVyKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IHBpeGVsQnVmZmVyKCk7CisgICAgQVNTRVJUKGJ1ZmZlcik7CisgICAgc2V0T3du
ZXJzaGlwSWRlbnRpdHlGb3JDVlBpeGVsQnVmZmVyKGJ1ZmZlciwgcmVzb3VyY2VPd25lcik7Cit9
CisKIFJlZlB0cjxXZWJDb3JlOjpWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWVDVjo6YXNWaWRlb0Zy
YW1lQ1YoKQogewogICAgIHJldHVybiB0aGlzOwogfQogCi0KIEltYWdlT3JpZW50YXRpb24gVmlk
ZW9GcmFtZUNWOjpvcmllbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgLy8gU2FtcGxlIHRyYW5zZm9y
bSBmaXJzdCBmbGlwcyB4LWNvb3JkaW5hdGVzLCB0aGVuIHJvdGF0ZXMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwLmNwcAppbmRleCA0ZTMzZTkzZTIzMTRlMjA4ZDM0ZTJhMGVhMjQzZTM0YmRhZGQwMzUy
Li4yMTY5NjdiNDY2MTQ2ZjI3ODY4MjRjZWNkY2RhMjI3M2I4Zjg0NWVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcC5jcHAKQEAgLTc1LDYgKzc1LDcgQEAgdm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcDo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEgK
ICAgICB9CiB9CiAKKy8vIEZJWE1FOiBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBvbmNlIGNhbGwgc2l0
ZXMgdXNlIGFkZFZpZGVvRnJhbWUoKS4KIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVhdGVSZW1vdGVWaWRlb0ZyYW1lKFJlZjxXZWJDb3Jl
OjpNZWRpYVNhbXBsZT4mJiBmcmFtZSkKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7CkBAIC04Miw2ICs4Mywx
NSBAQCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cDo6Y3JlYXRlUmVtb3RlVmlkZW9GcmFtZShSZQogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQog
CitSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA6OmFkZFZpZGVvRnJhbWUoUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmIGZyYW1lKQor
eworICAgIGF1dG8gd3JpdGUgPSBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2U6OmdlbmVy
YXRlRm9yQWRkKCk7CisgICAgYXV0byBuZXdGcmFtZVJlZmVyZW5jZSA9IHdyaXRlLnJldGlyZWRS
ZWZlcmVuY2UoKTsKKyAgICBhdXRvIHByb3BlcnRpZXMgPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OnByb3BlcnRpZXMoV1RGTW92ZShuZXdGcmFtZVJlZmVyZW5jZSksIGZyYW1lKTsKKyAgICByZXRp
cmUoV1RGTW92ZSh3cml0ZSksIFdURk1vdmUoZnJhbWUpLCBzdGQ6Om51bGxvcHQpOworICAgIHJl
dHVybiBwcm9wZXJ0aWVzOworfQorCiB2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpy
ZWxlYXNlVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiB3cml0ZSkK
IHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9jb25zdW1lVGhyZWFkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwLmgKaW5kZXggNDk5ODEwYzZiZmM1NWU3NWE2NzE1ODExYTcyOWNhMmY0NTE4YTQyYy4uMzZk
OGJlZmVmYjMzNGMxY2RiYTg2Y2ViMmMzOGI3ODk0ODU0OTkxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKFZJREVPKQogI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiVGhyZWFkU2FmZU9iamVj
dEhlYXAuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZEFzc2VydGlvbnMuaD4KQEAgLTQ4LDcgKzQ5LDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJik7CiAgICAgflJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCk7CiAKKyAgICAv
LyBGSVhNRTogVGhpcyB3aWxsIGJlIHJlbW92ZWQgb25jZSBjYWxsIHNpdGVzIHVzZSBhZGRWaWRl
b0ZyYW1lKCkuCiAgICAgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgY3JlYXRlUmVtb3RlVmlk
ZW9GcmFtZShSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYpOworICAgIFJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6UHJvcGVydGllcyBhZGRWaWRlb0ZyYW1lKFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBs
ZT4mJik7CiAKICAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbSBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KaW5kZXgg
ZjAwNjgxYjc5ZjVmY2UwMzg2YTRlZTYzYjcyZDZmN2VlNDI4ODBiYS4uMDhjYjA1ZjI2MzMxOGQy
ZTU1YjM3OGZhM2E4NGVkZjUxYzYyNTFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCkBAIC04NywyMSArODcs
MTcgQEAgc3RhdGljIEZ1bmN0aW9uPHZvaWQoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwg
dWludDMyX3QgdGltZVN0YW1wTnMsIHVpbnQzMl8KICAgICAgICAgYXV0byBzYW1wbGUgPSBXZWJD
b3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKHBpeGVsQnVmZmVyLCBX
ZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgZmFsc2UsIE1lZGlhVGlt
ZSh0aW1lU3RhbXBOcywgMSksIHsgfSk7CiAgICAgICAgIGlmICghc2FtcGxlKQogICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gcmVtb3RlU2FtcGxlID0gV2ViQ29yZTo6UmVtb3Rl
VmlkZW9TYW1wbGU6OmNyZWF0ZSgqc2FtcGxlKTsKLSAgICAgICAgaWYgKCFyZW1vdGVTYW1wbGUp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KICAgICAgICAgaWYgKHJlc291cmNlT3duZXIpCi0gICAg
ICAgICAgICByZW1vdGVTYW1wbGUtPnNldE93bmVyc2hpcElkZW50aXR5KHJlc291cmNlT3duZXIp
OwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+IHJl
bW90ZUlkZW50aWZpZXI7CisgICAgICAgICAgICBzYW1wbGUtPnNldE93bmVyc2hpcElkZW50aXR5
KHJlc291cmNlT3duZXIpOwogICAgICAgICBpZiAodXNlUmVtb3RlRnJhbWVzKSB7Ci0gICAgICAg
ICAgICByZW1vdGVJZGVudGlmaWVyID0gdmlkZW9GcmFtZU9iamVjdEhlYXAtPmNyZWF0ZVJlbW90
ZVZpZGVvRnJhbWUoc2FtcGxlLnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAgICAgICAgcmVtb3Rl
U2FtcGxlLT5jbGVhcklPU3VyZmFjZSgpOworICAgICAgICAgICAgYXV0byBwcm9wZXJ0aWVzID0g
dmlkZW9GcmFtZU9iamVjdEhlYXAtPmFkZFZpZGVvRnJhbWUoc2FtcGxlLnJlbGVhc2VOb25OdWxs
KCkpOworICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29k
ZWNzOjpDb21wbGV0ZWREZWNvZGluZyB7IGlkZW50aWZpZXIsIHRpbWVTdGFtcCwgV1RGTW92ZShw
cm9wZXJ0aWVzKSB9LCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCi0gICAg
ICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6Q29tcGxldGVk
RGVjb2RpbmcgeyBpZGVudGlmaWVyLCB0aW1lU3RhbXAsICpyZW1vdGVTYW1wbGUsIHJlbW90ZUlk
ZW50aWZpZXIgfSwgMCk7CisgICAgICAgIGF1dG8gcmVtb3RlU2FtcGxlID0gV2ViQ29yZTo6UmVt
b3RlVmlkZW9TYW1wbGU6OmNyZWF0ZSgqc2FtcGxlKTsKKyAgICAgICAgaWYgKCFyZW1vdGVTYW1w
bGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OkxpYldlYlJUQ0NvZGVjczo6Q29tcGxldGVkRGVjb2RpbmdDViB7IGlkZW50aWZpZXIsIHRp
bWVTdGFtcCwgKnJlbW90ZVNhbXBsZSB9LCAwKTsKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApp
bmRleCA4YWZjMWFjMDMyMjVlNjQzZDg3NTI1NmIxMWNiMTc5MzM4MTJkOWE5Li45NjM0ODE3MDRj
ZjIxYzI4ZDJhODQ0OGRmMGI0OTA2MTM1MDVkY2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKQEAgLTMxOCwz
OSArMzE4LDQ1IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpmYWlsZWREZWNvZGluZyhSVENEZWNv
ZGVySWRlbnRpZmllciBkZWNvZGVySWRlbnRpZmllcikKICAgICAgICAgZGVjb2Rlci0+aGFzRXJy
b3IgPSB0cnVlOwogfQogCi12b2lkIExpYldlYlJUQ0NvZGVjczo6Y29tcGxldGVkRGVjb2Rpbmco
UlRDRGVjb2RlcklkZW50aWZpZXIgZGVjb2RlcklkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFt
cCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vdGVTYW1wbGUsIHN0ZDo6b3B0aW9u
YWw8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+IHJlbW90ZUZyYW1lSWRlbnRpZmllcikKK3Zv
aWQgTGliV2ViUlRDQ29kZWNzOjpjb21wbGV0ZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmll
ciBkZWNvZGVySWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OlByb3BlcnRpZXMmJiBwcm9wZXJ0aWVzKQogewogICAgIEFTU0VSVCghaXNNYWluUnVu
TG9vcCgpKTsKLQotICAgIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IHJlbW90ZVZpZGVv
RnJhbWU7Ci0gICAgLy8gV2UgYWx3YXlzIGNyZWF0ZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgc28g
dGhhdCB3ZSBjYW4gcmVsZWFzZSB0aGUgY29ycmVzcG9uZGluZyBHUFVQcm9jZXNzIElPU3VyZmFj
ZSByaWdodCBhd2F5IGlmIHRoZXJlIGlzIG5vIHZpZGVvIHNvdXJjZS4KLSAgICBpZiAocmVtb3Rl
RnJhbWVJZGVudGlmaWVyKSB7CisgICAgLy8gQWRvcHQgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQ
cm9wZXJ0aWVzIHRvIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBpbnN0YW5jZSBiZWZvcmUgdGhlIGVh
cmx5IG91dHMsIHNvIHRoYXQgdGhlIHJlZmVyZW5jZSBnZXRzIGFkb3B0ZWQuCisgICAgLy8gVHlw
aWNhbGx5IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyYmIHNlbnQgdG8gZGVzdGlu
YXRpb25zIHRoYXQgYXJlIGFscmVhZHkgcmVtb3ZlZCBuZWVkIHRvIGJlIGhhbmRsZWQgc2VwYXJh
dGVseS4KKyAgICAvLyBMaWJXZWJSVENDb2RlY3MgaXMgbm90IGV2ZXIgcmVtb3ZlZCwgc28gd2Ug
ZG8gbm90IGRvIHRoaXMuIEhvd2V2ZXIsIGlmIGl0IGV2ZXIgaXMsIExpYldlYlJUQ0NvZGVjczo6
aGFuZGxlTWVzc2FnZVRvUmVtb3ZlZERlc3RpbmF0aW9uKCkKKyAgICAvLyBuZWVkcyB0byBiZSBp
bXBsZW1lbnRlZC4KKyAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZVByb3h5PiByZW1vdGVWaWRlb0Zy
YW1lID0gWyZdIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsK
LSAgICAgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIHByb3BlcnRpZXMgeyB7
ICpyZW1vdGVGcmFtZUlkZW50aWZpZXIsIDAgfSwgcmVtb3RlU2FtcGxlLnRpbWUoKSwgcmVtb3Rl
U2FtcGxlLm1pcnJvcmVkKCksIHJlbW90ZVNhbXBsZS5yb3RhdGlvbigpLCByZW1vdGVTYW1wbGUu
c2l6ZSgpLCByZW1vdGVTYW1wbGUudmlkZW9Gb3JtYXQoKSB9OwotICAgICAgICByZW1vdGVWaWRl
b0ZyYW1lID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUoKm1fY29ubmVjdGlvbiwgKm1f
dmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSwgV1RGTW92ZShwcm9wZXJ0aWVzKSk7Ci0gICAgfQor
ICAgICAgICByZXR1cm4gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUoKm1fY29ubmVjdGlv
biwgKm1fdmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSwgV1RGTW92ZShwcm9wZXJ0aWVzKSk7Cisg
ICAgfSgpOwogICAgIC8vIEZJWE1FOiBEbyBlcnJvciBsb2dnaW5nLgogICAgIGF1dG8qIGRlY29k
ZXIgPSBtX2RlY29kZXJzLmdldChkZWNvZGVySWRlbnRpZmllcik7CiAgICAgaWYgKCFkZWNvZGVy
KQogICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIWRlY29kZXItPmRlY29kZWRJbWFnZUNhbGxi
YWNrTG9jay50cnlMb2NrKCkpCiAgICAgICAgIHJldHVybjsKLQogICAgIExvY2tlciBsb2NrZXIg
eyBBZG9wdExvY2ssIGRlY29kZXItPmRlY29kZWRJbWFnZUNhbGxiYWNrTG9jayB9OwotCiAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGVkSW1hZ2VDYWxsYmFjaykKICAgICAgICAgcmV0dXJuOworICAg
IGF1dG8mIGZyYW1lID0gcmVtb3RlVmlkZW9GcmFtZS5sZWFrUmVmKCk7IC8vIEJhbGFuY2VkIGJ5
IHRoZSByZWxlYXNlIGNhbGxiYWNrIG9mIHZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZS4KKyAgICB3
ZWJydGM6OnZpZGVvRGVjb2RlclRhc2tDb21wbGV0ZShkZWNvZGVyLT5kZWNvZGVkSW1hZ2VDYWxs
YmFjaywgdGltZVN0YW1wLCBmcmFtZS5wcmVzZW50YXRpb25UaW1lKCkudG9Eb3VibGUoKSwgJmZy
YW1lLAorICAgICAgICBbXShhdXRvKiBwb2ludGVyKSB7IHJldHVybiBzdGF0aWNfY2FzdDxSZW1v
dGVWaWRlb0ZyYW1lUHJveHkqPihwb2ludGVyKS0+cGl4ZWxCdWZmZXIoKTsgfSwKKyAgICAgICAg
W10oYXV0byogcG9pbnRlcikgeyBzdGF0aWNfY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJveHkqPihw
b2ludGVyKS0+ZGVyZWYoKTsgfSwKKyAgICAgICAgZnJhbWUuc2l6ZSgpLndpZHRoKCksIGZyYW1l
LnNpemUoKS5oZWlnaHQoKSk7Cit9CiAKLSAgICBpZiAocmVtb3RlVmlkZW9GcmFtZSkgewotICAg
ICAgICBSZWYgdmlkZW9GcmFtZSB7IHN0YXRpY19jYXN0PFZpZGVvRnJhbWUmPigqcmVtb3RlVmlk
ZW9GcmFtZSkgfTsKLSAgICAgICAgd2VicnRjOjp2aWRlb0RlY29kZXJUYXNrQ29tcGxldGUoZGVj
b2Rlci0+ZGVjb2RlZEltYWdlQ2FsbGJhY2ssIHRpbWVTdGFtcCwgcmVtb3RlU2FtcGxlLnRpbWUo
KS50b0RvdWJsZSgpLCAmdmlkZW9GcmFtZS5sZWFrUmVmKCksCi0gICAgICAgICAgICBbXShhdXRv
KiBwb2ludGVyKSB7IHJldHVybiBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lKj4ocG9pbnRlciktPnBp
eGVsQnVmZmVyKCk7IH0sCi0gICAgICAgICAgICBbXShhdXRvKiBwb2ludGVyKSB7IHN0YXRpY19j
YXN0PFZpZGVvRnJhbWUqPihwb2ludGVyKS0+ZGVyZWYoKTsgfSwKLSAgICAgICAgICAgIHJlbW90
ZVNhbXBsZS5zaXplKCkud2lkdGgoKSwgcmVtb3RlU2FtcGxlLnNpemUoKS5oZWlnaHQoKSk7Cit2
b2lkIExpYldlYlJUQ0NvZGVjczo6Y29tcGxldGVkRGVjb2RpbmdDVihSVENEZWNvZGVySWRlbnRp
ZmllciBkZWNvZGVySWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBXZWJDb3JlOjpSZW1v
dGVWaWRlb1NhbXBsZSYmIHJlbW90ZVNhbXBsZSkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblJ1bkxv
b3AoKSk7CisgICAgLy8gRklYTUU6IERvIGVycm9yIGxvZ2dpbmcuCisgICAgYXV0byogZGVjb2Rl
ciA9IG1fZGVjb2RlcnMuZ2V0KGRlY29kZXJJZGVudGlmaWVyKTsKKyAgICBpZiAoIWRlY29kZXIp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZWRJbWFnZUNhbGxiYWNr
TG9jay50cnlMb2NrKCkpCisgICAgICAgIHJldHVybjsKKyAgICBMb2NrZXIgbG9ja2VyIHsgQWRv
cHRMb2NrLCBkZWNvZGVyLT5kZWNvZGVkSW1hZ2VDYWxsYmFja0xvY2sgfTsKKyAgICBpZiAoIWRl
Y29kZXItPmRlY29kZWRJbWFnZUNhbGxiYWNrKQogICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgaWYgKCFyZW1vdGVTYW1wbGUuc3VyZmFjZSgpKQogICAgICAgICByZXR1cm47CiAgICAgYXV0
byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZUNWUGl4ZWxCdWZmZXIocmVtb3RlU2FtcGxlLnN1cmZhY2Uo
KSkudmFsdWVfb3IobnVsbHB0cik7CkBAIC0zNTgsNyArMzY0LDYgQEAgdm9pZCBMaWJXZWJSVEND
b2RlY3M6OmNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyIGRlY29kZXJJZGVu
dGlmaWVyLAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLQogICAgIHdlYnJ0Yzo6dmlkZW9EZWNvZGVyVGFza0NvbXBsZXRlKGRlY29kZXItPmRl
Y29kZWRJbWFnZUNhbGxiYWNrLCB0aW1lU3RhbXAsIHJlbW90ZVNhbXBsZS50aW1lKCkudG9Eb3Vi
bGUoKSwgcGl4ZWxCdWZmZXIuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IGY0MTM3YjIyMzM1
ODFhNTQzODI1NDM3MGE3NjNlYjUyZTdlMzI3NjIuLjk3ZTk0ZTVhYzI2NjI5NzA5MzY3YzdmZjFl
MzA4MGJhOGRkMmEzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
UlRDRGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVt
b3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oPgogI2luY2x1ZGUgPG1hcD4K
QEAgLTEzMSw3ICsxMzIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b25NYXlOb0xvbmdlckJlTmVlZGVkKCk7CiAKICAgICB2b2lkIGZhaWxlZERlY29kaW5nKFJUQ0Rl
Y29kZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJ
ZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
JiYsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+KTsKKyAgICB2b2lk
IGNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3Rh
bXAsIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyYmKTsKKyAgICB2b2lkIGNvbXBs
ZXRlZERlY29kaW5nQ1YoUlRDRGVjb2RlcklkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwg
V2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJik7CiAgICAgdm9pZCBjb21wbGV0ZWRFbmNvZGlu
ZyhSVENFbmNvZGVySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGNvbnN0IHdlYnJ0
Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYpOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiBjb252ZXJ0VG9CR1JBKENWUGl4ZWxCdWZmZXJSZWYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
bWVzc2FnZXMuaW4KaW5kZXggN2RiNzk1MDgxZWE1ZjA2MDJmNmYyMjYyN2I0NDU1NTNhOGI3MDc0
MC4uNmZjM2RiNzJkNjdhMWQ3MjY4YWZjMDEyZDJiZmRmYzI0ZWQ1MzM4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5tZXNzYWdlcy5pbgpAQCAtMjQsOCArMjQsOCBAQAogCiBtZXNzYWdlcyAtPiBMaWJX
ZWJSVENDb2RlY3MgTm90UmVmQ291bnRlZCB7CiAgICAgRmFpbGVkRGVjb2RpbmcoV2ViS2l0OjpS
VENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIENvbXBsZXRlZERlY29kaW5nKFdl
YktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1w
LCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0
OjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj4gcmVtb3RlRnJhbWVJZGVudGlmaWVyKQotCisg
ICAgQ29tcGxldGVkRGVjb2RpbmcoV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQ
cm9wZXJ0aWVzIGZyYW1lKQorICAgIENvbXBsZXRlZERlY29kaW5nQ1YoV2ViS2l0OjpSVENEZWNv
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIFdlYkNvcmU6OlJl
bW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKICAgICBDb21wbGV0ZWRFbmNvZGluZyhXZWJLaXQ6OlJU
Q0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBz
dHJ1Y3Qgd2VicnRjOjpXZWJLaXRFbmNvZGVkRnJhbWVJbmZvIGluZm8pOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>