<?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>217739</bug_id>
          
          <creation_ts>2020-10-14 16:33:56 -0700</creation_ts>
          <short_desc>[GPU Process] Implement mediaPlayerGetRawCookies</short_desc>
          <delta_ts>2022-07-18 14:27:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</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>1697950</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-10-14 16:33:56 -0700</bug_when>
    <thetext>Implement mediaPlayerGetRawCookies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697951</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-14 16:37:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/70313370&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697965</commentid>
    <comment_count>2</comment_count>
      <attachid>411390</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-10-14 17:01:16 -0700</bug_when>
    <thetext>Created attachment 411390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697985</commentid>
    <comment_count>3</comment_count>
      <attachid>411390</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-14 18:10:08 -0700</bug_when>
    <thetext>Comment on attachment 411390
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.h:726
&gt; +    void mediaPlayerGetRawCookies(const URL&amp;, MediaPlayerClient::GetRawCookiesCallback&amp;&amp;) const override;

Nit. This function can be &quot;final&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698067</commentid>
    <comment_count>4</comment_count>
      <attachid>411390</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-10-15 04:36:18 -0700</bug_when>
    <thetext>Comment on attachment 411390
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:6966
&gt; +        completionHandler(WTFMove(cookies));

I would return early if getRawCookies returns false.

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:54
&gt; +#include &lt;wtf/Unexpected.h&gt;

Not clear why we now need Expected.h and Unexpected.h.

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:256
&gt; +    using GetRawCookiesCallback = CompletionHandler&lt;void(Optional&lt;Vector&lt;Cookie&gt;&gt;&amp;&amp;)&gt;;

Do we make any difference between a WTF::nullopt and an empty Vector&lt;&gt;?
Should we simplify to a VecCompletionHandler&lt;void(Vector&lt;Cookie&gt;&amp;&amp;)&gt;;?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:191
&gt; +    void createAVAssetForURL(const URL&amp;, RetainPtr&lt;NSMutableDictionary&gt;);

RetainPtr&lt;&gt;&amp;&amp;
I would have been tempted to do createAVAssetForURL(const URL&amp;, const Vector&lt;Cookie&gt;&amp;) instead of passing a mutable dictionary.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:762
&gt; +        createAVAssetForURL(url, options.leakRef());

Shouldn&apos;t we write it as:
createAVAssetForURL(url, WTFMove(options));
It seems like there could be a leak if createAVAssetForURL was not taking a RetainPtr.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:766
&gt; +    player()-&gt;getRawCookies(url, [this, weakThis = makeWeakPtr(*this), options = WTFMove(options), url] (Optional&lt;Vector&lt;Cookie&gt;&gt;&amp;&amp; cookies) mutable {

could write it makeWeakPtr(this)
could use auto instead of Optional&lt;&gt;...

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:778
&gt; +        createAVAssetForURL(url, options.leakRef());

Ditto

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:781
&gt; +    createAVAssetForURL(url, options.leakRef());

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:787
&gt; +{

Should we add back the if (m_avAsset) check here?
Now that we set m_avAsset asynchronously, is there a possibility for createAVAssetForURL(url) to be called twice, the second one being hopefully a no-op?

Are there other potential consequences in the code for m_avAsset to be null for some time after createAVAssetForURL(url) is called?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698452</commentid>
    <comment_count>5</comment_count>
      <attachid>411390</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-10-15 20:27:21 -0700</bug_when>
    <thetext>Comment on attachment 411390
Patch

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

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:6966
&gt;&gt; +        completionHandler(WTFMove(cookies));
&gt; 
&gt; I would return early if getRawCookies returns false.

Fixed.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:726
&gt;&gt; +    void mediaPlayerGetRawCookies(const URL&amp;, MediaPlayerClient::GetRawCookiesCallback&amp;&amp;) const override;
&gt; 
&gt; Nit. This function can be &quot;final&quot;?

Good point, fixed.

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.h:54
&gt;&gt; +#include &lt;wtf/Unexpected.h&gt;
&gt; 
&gt; Not clear why we now need Expected.h and Unexpected.h.

Indeed, unneeded cruft from an earlier version.

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.h:256
&gt;&gt; +    using GetRawCookiesCallback = CompletionHandler&lt;void(Optional&lt;Vector&lt;Cookie&gt;&gt;&amp;&amp;)&gt;;
&gt; 
&gt; Do we make any difference between a WTF::nullopt and an empty Vector&lt;&gt;?
&gt; Should we simplify to a VecCompletionHandler&lt;void(Vector&lt;Cookie&gt;&amp;&amp;)&gt;;?

Good idea!

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:762
&gt;&gt; +        createAVAssetForURL(url, options.leakRef());
&gt; 
&gt; Shouldn&apos;t we write it as:
&gt; createAVAssetForURL(url, WTFMove(options));
&gt; It seems like there could be a leak if createAVAssetForURL was not taking a RetainPtr.

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:766
&gt;&gt; +    player()-&gt;getRawCookies(url, [this, weakThis = makeWeakPtr(*this), options = WTFMove(options), url] (Optional&lt;Vector&lt;Cookie&gt;&gt;&amp;&amp; cookies) mutable {
&gt; 
&gt; could write it makeWeakPtr(this)
&gt; could use auto instead of Optional&lt;&gt;...

Fixed

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:787
&gt;&gt; +{
&gt; 
&gt; Should we add back the if (m_avAsset) check here?
&gt; Now that we set m_avAsset asynchronously, is there a possibility for createAVAssetForURL(url) to be called twice, the second one being hopefully a no-op?
&gt; 
&gt; Are there other potential consequences in the code for m_avAsset to be null for some time after createAVAssetForURL(url) is called?

True, I added the check back.

 createAVAssetForURL could be called more than once, I added a guard.

We wait for AVAsset to load metadata before the state machine progresses, so it shouldn&apos;t matter if it is NULL for a while.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698656</commentid>
    <comment_count>6</comment_count>
      <attachid>411591</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-10-16 10:06:17 -0700</bug_when>
    <thetext>Created attachment 411591
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698720</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-16 13:09:35 -0700</bug_when>
    <thetext>Committed r268607: &lt;https://trac.webkit.org/changeset/268607&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411591.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1884875</commentid>
    <comment_count>8</comment_count>
      <attachid>411591</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-07-18 14:27:59 -0700</bug_when>
    <thetext>Comment on attachment 411591
Patch for landing

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:6962
&gt; +        completionHandler({ });

Cause of rdar://problem/80778666</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411390</attachid>
            <date>2020-10-14 17:01:16 -0700</date>
            <delta_ts>2020-10-16 10:06:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217739-20201014170115.patch</filename>
            <type>text/plain</type>
            <size>15704</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RhZjU1ZjJlMGI5ZmNi
YzI0YTQ5NWRjNTFmMGIzZTU3NjljZGM4MC4uOWExZWNkMWNiNjJhNjliMjQ1ZWYxYzNkNjNkZWE1
OTBhYjJiNDU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTEwLTE0ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gSW1wbGVtZW50IG1lZGlhUGxheWVyR2V0UmF3Q29va2llcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzM5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83MDMxMzM3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQbHVtYiBtZWRpYVBsYXllckdldFJhd0Nvb2tpZXMgdGhyb3VnaCBmcm9tIHRoZSBH
UFUgcHJvY2VzcyB0byB0aGUgV2ViIHByb2Nlc3MsCisgICAgICAgIHdoaWNoIGlzIHVzZWQgdG8g
cHJvdmlkZSBzaXRlIGNvb2tpZXMgdG8gQVZGb3VuZGF0aW9uIGZvciBBaXJQbGF5LiBUaGlzIGhh
cyBhbHdheXMKKyAgICAgICAgYmVlbiBhIHN5bmNocm9ub3VzIEFQSSwgd2hpY2ggd2UgZG9uJ3Qg
d2FudCBiZXR3ZWVuIHByb2Nlc3Nlcywgc28gY2hhbmdlIHRoZSBpbnRlcmZhY2UKKyAgICAgICAg
dG8gdGFrZSBhIGNvbXBsZXRpb24gaGFuZGxlciBhbmQgcmVzdHJ1Y3R1cmUgdGhlIGNhbGxlciB0
byB1c2UgaXQuCisgICAgICAgIAorICAgICAgICBUZXN0ZWQgbWFudWFsbHkuCisKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJHZXRSYXdDb29raWVzIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Z2V0UmF3Q29va2llcyBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckdldFJhd0Nvb2tpZXMg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTCk6CisKIDIwMjAtMTAtMTQgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhUmVjb3JkZXIgLnN0b3Agc2hvdWxk
IG5vdCB0aHJvdyBpbiBJbmFjdGl2ZSBzdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmNDQ2YWQ1ZmJiNTNkZGFm
MGZjNWIwMGM0MzBmMTA4ZTQwNGJiODg5Li40NjRkN2Q2MGZjYmZjMGQ0YzAwYThkODJmOGU5MzU3
N2UzM2UyNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTEwLTE0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
SW1wbGVtZW50IG1lZGlhUGxheWVyR2V0UmF3Q29va2llcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzM5CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS83MDMxMzM3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyR2V0UmF3Q29v
a2llcyBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpnZXRSYXdDb29raWVzIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW46CisKIDIwMjAtMTAtMTQgIFNl
cmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJd
IEZpeCBsaW5raW5nIGVycm9yIGZvciBzeXN0ZW1zIG5vdCBwcm92aWRpbmcgPHN5cy9tZW1mZC5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNDkzNzYyZDEx
NDJlZGY4ZjZjZjBkN2E0NmQwNDMzY2NkOTdhNWQwZS4uNGU0ZDE1OWM3N2RjMjQxZjdlMmU0MzY4
NmYwNGI3ZGJhYWI2MTU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCkBAIC02OTU1LDExICs2OTU1LDE3IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllck5ldHdvcmtJbnRlcmZhY2VOYW1lKCkgY29uc3QKICAgICByZXR1cm4gRGVwcmVjYXRl
ZEdsb2JhbFNldHRpbmdzOjpuZXR3b3JrSW50ZXJmYWNlTmFtZSgpOwogfQogCi1ib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyR2V0UmF3Q29va2llcyhjb25zdCBVUkwmIHVybCwgVmVj
dG9yPENvb2tpZT4mIGNvb2tpZXMpIGNvbnN0Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyR2V0UmF3Q29va2llcyhjb25zdCBVUkwmIHVybCwgTWVkaWFQbGF5ZXJDbGllbnQ6Okdl
dFJhd0Nvb2tpZXNDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewotICAgIGlm
IChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCi0gICAgICAgIHJldHVybiBwYWdlLT5j
b29raWVKYXIoKS5nZXRSYXdDb29raWVzKGRvY3VtZW50KCksIHVybCwgY29va2llcyk7Ci0gICAg
cmV0dXJuIGZhbHNlOworICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKKyAgICBp
ZiAoIXBhZ2UpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgCisgICAgVmVj
dG9yPENvb2tpZT4gY29va2llczsKKyAgICBpZiAocGFnZS0+Y29va2llSmFyKCkuZ2V0UmF3Q29v
a2llcyhkb2N1bWVudCgpLCB1cmwsIGNvb2tpZXMpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGNvb2tpZXMpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApp
bmRleCA3YjUzZWRmMjcyY2ZiMmU1NTI2YzA0YTljNmUwMzliMTRkNzE0MjI3Li4zYjkxODQ2OTRl
OThkNzI1NzNhNTRjZjE0M2M4YjNhYjc0OTA1MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaApAQCAtNzIzLDcgKzcyMyw3IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFN0cmluZyBtZWRpYVBsYXllck5ldHdvcmtJbnRlcmZhY2VOYW1l
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBtZWRpYVBsYXllckdldFJhd0Nvb2tpZXMoY29u
c3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlh
UGxheWVyR2V0UmF3Q29va2llcyhjb25zdCBVUkwmLCBNZWRpYVBsYXllckNsaWVudDo6R2V0UmF3
Q29va2llc0NhbGxiYWNrJiYpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2b2lkIG1l
ZGlhUGxheWVyRW5naW5lRmFpbGVkVG9Mb2FkKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggZTAzNjI1YTFl
ZWQ0ZjVjZDdhNmY0ODUzNmE4OTJkMmYyYjVkZmY0NC4uYjljNjNiNGZjMjMyYjJmMzMwOTBkMWZm
MzYwN2VlOTk5NDdlMGNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTU0NCw5ICsxNTQ0LDkgQEAgU3RyaW5nIE1lZGlhUGxh
eWVyOjptZWRpYVBsYXllck5ldHdvcmtJbnRlcmZhY2VOYW1lKCkgY29uc3QKICAgICByZXR1cm4g
Y2xpZW50KCkubWVkaWFQbGF5ZXJOZXR3b3JrSW50ZXJmYWNlTmFtZSgpOwogfQogCi1ib29sIE1l
ZGlhUGxheWVyOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYg
Y29va2llcykgY29uc3QKK3ZvaWQgTWVkaWFQbGF5ZXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJM
JiB1cmwsIE1lZGlhUGxheWVyQ2xpZW50OjpHZXRSYXdDb29raWVzQ2FsbGJhY2smJiBjb21wbGV0
aW9uSGFuZGxlcikgY29uc3QKIHsKLSAgICByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJHZXRS
YXdDb29raWVzKHVybCwgY29va2llcyk7CisgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJHZXRSYXdD
b29raWVzKHVybCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDJm
OTA4OWE5Mzc5NzM4MWRmM2RmNWRkM2IyYWQ0YTc5OGFmZmFkN2YuLmIxYTgzMWFjOGExYmIxMzBk
MGY3MWViMmMzNDAyYWYzNmUyMmU1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkF1
ZGlvVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKyNpbmNsdWRlICJD
b29raWUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJMYXlvdXRS
ZWN0LmgiCiAjaW5jbHVkZSAiTGVnYWN5Q0RNU2Vzc2lvbi5oIgpAQCAtNDQsMTAgKzQ1LDEzIEBA
CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xv
Z2dlci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVW5leHBl
Y3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIApAQCAtNzgsNyArODIsNiBAQCBjbGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7
CiBjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CiBjbGFzcyBUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bjsKIAotc3RydWN0IENvb2tpZTsKIHN0cnVjdCBHcmFwaGljc0RldmljZUFkYXB0ZXI7CiBzdHJ1
Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCkBAIC0yNDksNyArMjUyLDkgQEAgcHVibGljOgogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllck5l
dHdvcmtJbnRlcmZhY2VOYW1lKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgbWVkaWFQbGF5ZXJHZXRSYXdDb29raWVzKGNvbnN0IFVSTCYsIFZlY3RvcjxDb29r
aWU+JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHVzaW5nIEdldFJhd0Nvb2tpZXND
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+
JiYpPjsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJHZXRSYXdDb29raWVzKGNvbnN0IFVS
TCYsIEdldFJhd0Nvb2tpZXNDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCBTdHJpbmcgbWVk
aWFQbGF5ZXJTb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBlbXB0
eVN0cmluZygpOyB9CkBAIC01NTksNyArNTY0LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJOZXR3b3JrSW50ZXJmYWNlTmFtZSgp
IGNvbnN0OwotICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBVUkwmLCBWZWN0b3I8Q29va2ll
PiYpIGNvbnN0OworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBVUkwmLCBNZWRpYVBsYXll
ckNsaWVudDo6R2V0UmF3Q29va2llc0NhbGxiYWNrJiYpIGNvbnN0OwogI2VuZGlmCiAKICAgICBz
dGF0aWMgdm9pZCByZXNldE1lZGlhRW5naW5lcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4
IDg1Y2U4MWQxMDNiODVkMWQ0MjZiN2EzNDhkOGYwM2EwYmUzNjY0NTMuLmNhODBmOGViM2ZmMTI4
ZDgyNDExMDMyYzlkOTI0YzVhMWViZjU5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTQz
LDYgKzQzLDcgQEAgT0JKQ19DTEFTUyBBVlBsYXllckl0ZW1WaWRlb091dHB1dDsKIE9CSkNfQ0xB
U1MgQVZQbGF5ZXJMYXllcjsKIE9CSkNfQ0xBU1MgQVZVUkxBc3NldDsKIE9CSkNfQ0xBU1MgTlNB
cnJheTsKK09CSkNfQ0xBU1MgTlNNdXRhYmxlRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgV2ViQ29y
ZUFWRkxvYWRlckRlbGVnYXRlOwogT0JKQ19DTEFTUyBXZWJDb3JlQVZGTW92aWVPYnNlcnZlcjsK
IE9CSkNfQ0xBU1MgV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZTsKQEAgLTE4Nyw2ICsxODgsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY3JlYXRlQVZQbGF5ZXJJdGVtKCkgZmluYWw7CiAgICAgdmlydHVh
bCB2b2lkIGNyZWF0ZUFWUGxheWVyTGF5ZXIoKTsKICAgICB2b2lkIGNyZWF0ZUFWQXNzZXRGb3JV
UkwoY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCBjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0
IFVSTCYsIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5Pik7CiAgICAgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uOjpJdGVtU3RhdHVzIHBsYXllckl0ZW1TdGF0dXMoKSBjb25zdCBm
aW5hbDsKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OkFzc2V0U3RhdHVzIGFz
c2V0U3RhdHVzKCkgY29uc3QgZmluYWw7CiAgICAgbG9uZyBhc3NldEVycm9yQ29kZSgpIGNvbnN0
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggNjMxM2I5NDdmZDY4NmI2OWY1M2Mw
ODk1NDQxNDFiZWI2ZmNkYWQ1OS4uNTk5YWNhOGIyMjdiYzVmMDllNmI0MzZkZjIwMjY2YThmYWZj
NjkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC03NTUsMTIgKzc1NSw0MCBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwo
Y29uc3QgVVJMJiB1cmwpCiAgICAgaWYgKG1fYXZBc3NldCkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG9wdGlvbnMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICBpZiAoIVBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldEhUVFBDb29r
aWVzS2V5KCkpIHsKKyAgICAgICAgY3JlYXRlQVZBc3NldEZvclVSTCh1cmwsIG9wdGlvbnMubGVh
a1JlZigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBsYXllcigpLT5nZXRSYXdD
b29raWVzKHVybCwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBvcHRpb25z
ID0gV1RGTW92ZShvcHRpb25zKSwgdXJsXSAoT3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+JiYgY29v
a2llcykgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgICAgICBpZiAoY29va2llcyAmJiBjb29raWVzLT5zaXplKCkpIHsK
KyAgICAgICAgICAgIGF1dG8gbnNDb29raWVzID0gY3JlYXRlTlNBcnJheShjb29raWVzLnZhbHVl
KCksIFtdIChhdXRvJiBjb29raWUpIC0+IE5TSFRUUENvb2tpZSAqIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY29va2llOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIFtvcHRpb25z
IHNldE9iamVjdDpuc0Nvb2tpZXMuZ2V0KCkgZm9yS2V5OkFWVVJMQXNzZXRIVFRQQ29va2llc0tl
eV07CisgICAgICAgIH0KKworICAgICAgICBjcmVhdGVBVkFzc2V0Rm9yVVJMKHVybCwgb3B0aW9u
cy5sZWFrUmVmKCkpOworICAgIH0pOworI2Vsc2UKKyAgICBjcmVhdGVBVkFzc2V0Rm9yVVJMKHVy
bCwgb3B0aW9ucy5sZWFrUmVmKCkpOworI2VuZGlmCisKK30KKwordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFVSTCYgdXJs
LCBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gb3B0aW9ucykKK3sKICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAKLSAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gb3B0aW9ucyA9IGFkb3B0TlMoW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7ICAgIAotCiAgICAgW29wdGlvbnMuZ2V0KCkg
c2V0T2JqZWN0OkAoQVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkUmVtb3RlUmVmZXJl
bmNlVG9Mb2NhbCB8IEFWQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbkZvcmJpZExvY2FsUmVmZXJl
bmNlVG9SZW1vdGUpIGZvcktleTpBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5XTsK
IAogICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBoZWFkZXJGaWVsZHMgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwpAQCAtODI0LDE3ICs4NTIs
NiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNz
ZXRGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDpuZXR3
b3JrSW50ZXJmYWNlTmFtZSBmb3JLZXk6QVZVUkxBc3NldEJvdW5kTmV0d29ya0ludGVyZmFjZU5h
bWVdOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFZlY3RvcjxDb29r
aWU+IGNvb2tpZXM7Ci0gICAgaWYgKHBsYXllcigpLT5nZXRSYXdDb29raWVzKHVybCwgY29va2ll
cykpIHsKLSAgICAgICAgYXV0byBuc0Nvb2tpZXMgPSBjcmVhdGVOU0FycmF5KGNvb2tpZXMsIFtd
IChhdXRvJiBjb29raWUpIC0+IE5TSFRUUENvb2tpZSAqIHsKLSAgICAgICAgICAgIHJldHVybiBj
b29raWU7Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlv
bl9BVlVSTEFzc2V0SFRUUENvb2tpZXNLZXkoKSkKLSAgICAgICAgICAgIFtvcHRpb25zIHNldE9i
amVjdDpuc0Nvb2tpZXMuZ2V0KCkgZm9yS2V5OkFWVVJMQXNzZXRIVFRQQ29va2llc0tleV07Ci0g
ICAgfQotI2VuZGlmCi0KICAgICBib29sIHVzZVBlcnNpc3RlbnRDYWNoZSA9IHBsYXllcigpLT5z
aG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKTsKICAgICBbb3B0aW9ucyBzZXRPYmplY3Q6QCghdXNl
UGVyc2lzdGVudENhY2hlKSBmb3JLZXk6QVZVUkxBc3NldFVzZXNOb1BlcnNpc3RlbnRDYWNoZUtl
eV07CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggY2M3Y2IxMjI2ZDg1NDI1YjAzNGZlZGVj
NjU5MDI5YWE4OTI0YWMxOC4uNzg1ZmFlMjJlOGZmZDEwMzViYjM2YmY4NzdiNWM1NGQ3ZWI0OTM4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtMzc1LDYgKzM3NSwxMSBAQCBTdHJpbmcgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJOZXR3b3JrSW50ZXJmYWNlTmFtZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5uZXR3b3JrSW50ZXJmYWNlTmFtZTsKIH0K
Kwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckdldFJhd0Nvb2tpZXMo
Y29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjpHZXRSYXdDb29raWVz
Q2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBtX3dlYlByb2Nlc3ND
b25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6R2V0UmF3Q29va2llcyh1cmwpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
bV9pZCk7Cit9CiAjZW5kaWYKIAogY29uc3QgU3RyaW5nJiBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjptZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdApAQCAtNjcxLDE0ICs2NzYs
NiBAQCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4gUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6b3V0T2ZCYW5kVHJhY2tTb3VyY2VzKAogCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi1ib29sIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyR2V0UmF3
Q29va2llcyhjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYpIGNvbnN0Ci17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQogZG91YmxlIFJlbW90
ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyUmVxdWVzdGVkUGxheWJhY2tSYXRlKCkgY29u
c3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggOGUxZjI1ZTVj
ODQ2MTRmNDJjZmI1ZTBjOTMwNDRlNWUzMjkxMmI1YS4uYzFjMDUyN2Q4YjUxNzNkM2Y2NjYzODY5
ZTVmNTU2NzlhNzFlM2FkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC0yNDYsNyArMjQ2LDcgQEAgcHJp
dmF0ZToKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgU3RyaW5nIG1lZGlhUGxheWVy
TmV0d29ya0ludGVyZmFjZU5hbWUoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIG1lZGlhUGxheWVy
R2V0UmF3Q29va2llcyhjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIGNvbnN0
IGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJHZXRSYXdDb29raWVzKGNvbnN0IFVSTCYsIFdl
YkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjpHZXRSYXdDb29raWVzQ2FsbGJhY2smJikgY29uc3Qg
ZmluYWw7CiAjZW5kaWYKIAogICAgIFN0cmluZyBtZWRpYVBsYXllclNvdXJjZUFwcGxpY2F0aW9u
SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmlu
ZGV4IDg5ZDZmZTlhOGZiMzIzODRhMjdlNDI0Zjc5OTkyZTRkYzQ0YzE5NzIuLmVlNjUzMDAzYmYz
MjlkZjJlMGE0MTkwZDk4NDY4ZmEyMjk1OWUxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5jcHAKQEAgLTExNDYsNiArMTE0NiwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6YWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQogICAgIG1fcGxheWVyLT5hY3RpdmVTb3Vy
Y2VCdWZmZXJzQ2hhbmdlZCgpOwogfQogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgdXJsLCBX
ZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6R2V0UmF3Q29va2llc0NhbGxiYWNrJiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgbV9wbGF5ZXItPmdldFJhd0Nvb2tpZXModXJsLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisjZW5kaWYKKwogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogV1RGTG9nQ2hhbm5lbCYgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2dD
aGFubmVsKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IGRlNmYwZWIz
N2I4Y2I5NWNiYWMwZjVjODI5NDM1ZDM4ZDdhOTcxZjkuLjU1NDk4MzE1MzRiMjQ3ZmMwOTFiY2Rl
ODdmMTFhYjgwMDBkZDcxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMTQ4LDYg
KzE0OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVs
ZXNzQ2hhbmdlZChib29sKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICB2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGll
bnQ6OkdldFJhd0Nvb2tpZXNDYWxsYmFjayYmKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgog
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLm1lc3NhZ2VzLmluCmluZGV4IDk0NTgzZmEyMjhjNTZmYzE3OWM0ZDk2N2FmMjEzMDBkNTBi
YmQzMGEuLmZiYTZjZGQ2OGFlNjY5NWVmZmRlZmUyNjE0YmMwYTNiYjM1NDdmNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCkBAIC04Niw2ICs4NiwxMSBA
QCBtZXNzYWdlcyAtPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgTm90UmVmQ291bnRlZCB7CiAj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBDdXJyZW50UGxheWJhY2tU
YXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChib29sIGlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxl
c3MpCiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgR2V0UmF3Q29va2ll
cyhVUkwgdXJsKSAtPiAoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4+IHJlc3VsdCkg
QXN5bmMKKyNlbmRpZgorCiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411591</attachid>
            <date>2020-10-16 10:06:17 -0700</date>
            <delta_ts>2020-10-16 13:09:36 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-217739-20201016100617.patch</filename>
            <type>text/plain</type>
            <size>20830</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RhZjU1ZjJlMGI5ZmNi
YzI0YTQ5NWRjNTFmMGIzZTU3NjljZGM4MC4uZGVmYmYyZTUxZGVmY2VjMzBkYzFhYTdlOGM2ZjQx
NzNmNmI2MzViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTEwLTE0ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gSW1wbGVtZW50IG1lZGlhUGxheWVyR2V0UmF3Q29va2llcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzM5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83MDMxMzM3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisg
ICAgICAgIFBsdW1iIG1lZGlhUGxheWVyR2V0UmF3Q29va2llcyB0aHJvdWdoIGZyb20gdGhlIEdQ
VSBwcm9jZXNzIHRvIHRoZSBXZWIgcHJvY2VzcywKKyAgICAgICAgd2hpY2ggaXMgdXNlZCB0byBw
cm92aWRlIHNpdGUgY29va2llcyB0byBBVkZvdW5kYXRpb24gZm9yIEFpclBsYXkuIFRoaXMgaGFz
IGFsd2F5cworICAgICAgICBiZWVuIGEgc3luY2hyb25vdXMgQVBJLCB3aGljaCB3ZSBkb24ndCB3
YW50IGJldHdlZW4gcHJvY2Vzc2VzLCBzbyBjaGFuZ2UgdGhlIGludGVyZmFjZQorICAgICAgICB0
byB0YWtlIGEgY29tcGxldGlvbiBoYW5kbGVyIGFuZCByZXN0cnVjdHVyZSB0aGUgY2FsbGVyIHRv
IHVzZSBpdC4KKyAgICAgICAgCisgICAgICAgIFRlc3RlZCBtYW51YWxseS4KKworICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckdldFJhd0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRSYXdDb29raWVzIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyR2V0UmF3Q29va2llcyBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKToKKwogMjAyMC0xMC0xNCAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWFSZWNvcmRlciAuc3RvcCBzaG91bGQg
bm90IHRocm93IGluIEluYWN0aXZlIHN0YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY0NDZhZDVmYmI1M2RkYWYw
ZmM1YjAwYzQzMGYxMDhlNDA0YmI4ODkuLjlmNmU2ODNkYTc5NjNlNWMxZWRlYTY1MjI3MjM0ZmNj
ZDc2ZjNjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMTAtMTQgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBJ
bXBsZW1lbnQgbWVkaWFQbGF5ZXJHZXRSYXdDb29raWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzcwMzEzMzcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckdldFJhd0Nvb2tp
ZXMgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
Z2V0UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluOgorCiAyMDIwLTEwLTE0ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBG
aXggbGlua2luZyBlcnJvciBmb3Igc3lzdGVtcyBub3QgcHJvdmlkaW5nIDxzeXMvbWVtZmQuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDQ5Mzc2MmQxMTQy
ZWRmOGY2Y2YwZDdhNDZkMDQzM2NjZDk3YTVkMGUuLmQ2NDBkZDhiZGZmMzM5MjRkMzM3YzVkMGYw
YTE3Y2Q0ZTg3NzQ1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtNjk1NSwxMSArNjk1NSwxNSBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJOZXR3b3JrSW50ZXJmYWNlTmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIERlcHJlY2F0ZWRH
bG9iYWxTZXR0aW5nczo6bmV0d29ya0ludGVyZmFjZU5hbWUoKTsKIH0KIAotYm9vbCBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllckdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiB1cmwsIFZlY3Rv
cjxDb29raWU+JiBjb29raWVzKSBjb25zdAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllckdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiB1cmwsIE1lZGlhUGxheWVyQ2xpZW50OjpHZXRS
YXdDb29raWVzQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKLSAgICBpZiAo
YXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICByZXR1cm4gcGFnZS0+Y29v
a2llSmFyKCkuZ2V0UmF3Q29va2llcyhkb2N1bWVudCgpLCB1cmwsIGNvb2tpZXMpOwotICAgIHJl
dHVybiBmYWxzZTsKKyAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7CisgICAgaWYg
KCFwYWdlKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgIAorICAgIFZlY3Rv
cjxDb29raWU+IGNvb2tpZXM7CisgICAgcGFnZS0+Y29va2llSmFyKCkuZ2V0UmF3Q29va2llcyhk
b2N1bWVudCgpLCB1cmwsIGNvb2tpZXMpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
Y29va2llcykpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKaW5kZXggN2I1M2VkZjI3MmNmYjJlNTUyNmMwNGE5YzZlMDM5YjE0ZDcxNDIyNy4uZjkwZDVk
MmQ4MDg1MTJhZDYyZTQ0NjA2MDdiZWNjOGI1MGY3ZmY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKQEAgLTcyMyw3ICs3MjMsNyBAQCBwcml2YXRlOgogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJOZXR3b3JrSW50ZXJmYWNl
TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgbWVkaWFQbGF5ZXJHZXRSYXdDb29raWVz
KGNvbnN0IFVSTCYsIFZlY3RvcjxDb29raWU+JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBt
ZWRpYVBsYXllckdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiwgTWVkaWFQbGF5ZXJDbGllbnQ6Okdl
dFJhd0Nvb2tpZXNDYWxsYmFjayYmKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAgICAgdm9pZCBt
ZWRpYVBsYXllckVuZ2luZUZhaWxlZFRvTG9hZCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGUwMzYyNWEx
ZWVkNGY1Y2Q3YTZmNDg1MzZhODkyZDJmMmI1ZGZmNDQuLmI5YzYzYjRmYzIzMmIyZjMzMDkwZDFm
ZjM2MDdlZTk5OTQ3ZTBjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE1NDQsOSArMTU0NCw5IEBAIFN0cmluZyBNZWRpYVBs
YXllcjo6bWVkaWFQbGF5ZXJOZXR3b3JrSW50ZXJmYWNlTmFtZSgpIGNvbnN0CiAgICAgcmV0dXJu
IGNsaWVudCgpLm1lZGlhUGxheWVyTmV0d29ya0ludGVyZmFjZU5hbWUoKTsKIH0KIAotYm9vbCBN
ZWRpYVBsYXllcjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4m
IGNvb2tpZXMpIGNvbnN0Cit2b2lkIE1lZGlhUGxheWVyOjpnZXRSYXdDb29raWVzKGNvbnN0IFVS
TCYgdXJsLCBNZWRpYVBsYXllckNsaWVudDo6R2V0UmF3Q29va2llc0NhbGxiYWNrJiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyR2V0
UmF3Q29va2llcyh1cmwsIGNvb2tpZXMpOworICAgIGNsaWVudCgpLm1lZGlhUGxheWVyR2V0UmF3
Q29va2llcyh1cmwsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCAy
ZjkwODlhOTM3OTczODFkZjNkZjVkZDNiMmFkNGE3OThhZmZhZDdmLi5mNjZkYzJkYjliMzkxNGZl
NmJmYzY4M2MzNTFlODliY2U4YmM1ODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJB
dWRpb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAi
Q29va2llLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiTGF5b3V0
UmVjdC5oIgogI2luY2x1ZGUgIkxlZ2FjeUNETVNlc3Npb24uaCIKQEAgLTQ0LDYgKzQ1LDcgQEAK
ICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CkBAIC03OCw3ICs4MCw2IEBAIGNs
YXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKIGNsYXNzIFBsYXRmb3JtVGltZVJhbmdlczsKIGNsYXNz
IFRleHRUcmFja1JlcHJlc2VudGF0aW9uOwogCi1zdHJ1Y3QgQ29va2llOwogc3RydWN0IEdyYXBo
aWNzRGV2aWNlQWRhcHRlcjsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKQEAgLTI0OSw3
ICsyNTAsOSBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1
YWwgU3RyaW5nIG1lZGlhUGxheWVyTmV0d29ya0ludGVyZmFjZU5hbWUoKSBjb25zdCB7IHJldHVy
biBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllckdldFJhd0Nvb2tpZXMo
Y29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisg
ICAgdXNpbmcgR2V0UmF3Q29va2llc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8Q29va2llPiYmKT47CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyR2V0UmF3Q29v
a2llcyhjb25zdCBVUkwmLCBHZXRSYXdDb29raWVzQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxl
cikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcih7IH0pOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1
YWwgU3RyaW5nIG1lZGlhUGxheWVyU291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQpAQCAtNTU5LDcgKzU2Miw3IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgU3RyaW5nIG1lZGlhUGxheWVyTmV0d29ya0lu
dGVyZmFjZU5hbWUoKSBjb25zdDsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiwg
VmVjdG9yPENvb2tpZT4mKSBjb25zdDsKKyAgICB2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgVVJM
JiwgTWVkaWFQbGF5ZXJDbGllbnQ6OkdldFJhd0Nvb2tpZXNDYWxsYmFjayYmKSBjb25zdDsKICNl
bmRpZgogCiAgICAgc3RhdGljIHZvaWQgcmVzZXRNZWRpYUVuZ2luZXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXgg
YzQwYzI2ZjNhOTBjZGIxY2IxN2E0ZmM4N2JjZTVlZjc0MjlhNGExZi4uYWZhZTc4Y2I4NzZjZmI0
YjliYjg2Y2QyZjY5NjNmM2FkOGNjNTk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTY5NywxMCArNjk3LDggQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldFByZWxvYWQoTWVkaWFQbGF5
ZXI6OlByZWxvYWQgcHJlbG9hZCkKIAogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogCi0g
ICAgaWYgKG1fcHJlbG9hZCA+PSBNZWRpYVBsYXllcjo6UHJlbG9hZDo6TWV0YURhdGEgJiYgYXNz
ZXRTdGF0dXMoKSA9PSBNZWRpYVBsYXllckFWQXNzZXRTdGF0dXNEb2VzTm90RXhpc3QpIHsKKyAg
ICBpZiAobV9wcmVsb2FkID49IE1lZGlhUGxheWVyOjpQcmVsb2FkOjpNZXRhRGF0YSAmJiBhc3Nl
dFN0YXR1cygpID09IE1lZGlhUGxheWVyQVZBc3NldFN0YXR1c0RvZXNOb3RFeGlzdCkKICAgICAg
ICAgY3JlYXRlQVZBc3NldEZvclVSTChtX2Fzc2V0VVJMKTsKLSAgICAgICAgY2hlY2tQbGF5YWJp
bGl0eSgpOwotICAgIH0KIAogICAgIC8vIERvbid0IGZvcmNlIGNyZWF0aW9uIG9mIHRoZSBwbGF5
ZXIgYW5kIHBsYXllciBpdGVtIHVubGVzcyB3ZSBhbHJlYWR5IGtub3cgdGhhdCB0aGUgYXNzZXQg
aXMgcGxheWFibGUuIElmIHdlIGFyZW4ndAogICAgIC8vIHRoZXJlIHlldCwgb3IgaWYgd2UgYWxy
ZWFkeSBrbm93IGl0IGlzIG5vdCBwbGF5YWJsZSwgY3JlYXRpbmcgdGhlbSBub3cgd29uJ3QgaGVs
cC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uaAppbmRleCBjMDIyYmU3ZjA5MGU5YTYzNTVkY2FmMWRjMThiMmRlNDk1YjhlYzk1Li40Mzhl
NDg0YWRlYmM2YmJmMmMyMmM2YWM1NDA5MmRjZmMwY2Q4ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCkBAIC0yNDAsNyArMjQw
LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVBsYXkoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtUGF1c2UoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHBs
YXRmb3JtUGF1c2VkKCkgY29uc3QgeyByZXR1cm4gIXJhdGUoKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBjaGVja1BsYXlhYmlsaXR5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZWVrVG9UaW1lKGNv
bnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUb2xlcmFuY2UsIGNvbnN0
IE1lZGlhVGltZSYgcG9zaXRpdmVUb2xlcmFuY2UpID0gMDsKICAgICB1bnNpZ25lZCBsb25nIGxv
bmcgdG90YWxCeXRlcygpIGNvbnN0IG92ZXJyaWRlID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IHBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkg
Y29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggNWQ5YTlhMGFmNTc1M2ExMGIyZGQxN2Mx
ZTk1Yjc5NDJhMTQxODI2NS4uYTgyMTVjYzA1ZmYyMmQxMjkwZjE3MDgwMTkwNTQyMWEwMTk3MDk1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC01MDAsNiArNTAwLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBVUkwmIHVy
bCkKICAgICBtX2F2ZldyYXBwZXIgPSBuZXcgQVZGV3JhcHBlcih0aGlzKTsKICAgICBtX2F2Zldy
YXBwZXItPmNyZWF0ZUFzc2V0Rm9yVVJMKHVybCwgaW5oZXJpdFVSSSk7CiAgICAgc2V0RGVsYXlD
YWxsYmFja3MoZmFsc2UpOworICAgIG1fYXZmV3JhcHBlci0+Y2hlY2tQbGF5YWJpbGl0eSgpOwog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVBVlBsYXll
cigpCkBAIC01MjMsMTIgKzUyNCw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OmNyZWF0ZUFWUGxheWVySXRlbSgpCiAgICAgc2V0RGVsYXlDYWxsYmFja3MoZmFsc2Up
OwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjaGVja1BsYXlh
YmlsaXR5KCkKLXsKLSAgICBBU1NFUlQobV9hdmZXcmFwcGVyKTsKLSAgICBtX2F2ZldyYXBwZXIt
PmNoZWNrUGxheWFiaWxpdHkoKTsKLX0KLQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6YmVnaW5Mb2FkaW5nTWV0YWRhdGEoKQogewogICAgIEFTU0VSVChtX2F2ZldyYXBw
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuaAppbmRleCA3MGE1ZDE0MTJhODNmMTU5YWEwMTY4ZWVmMGRjNjQ1ZGYw
MGMwMjdiLi5mNWMwYTEyYzhmYmUyZDc2NjhjYjE2MTVjMjExMTUzNzY4MWM3ZWQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuaApAQCAtODcsNyArODcsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpJdGVtU3RhdHVzIHBsYXllckl0ZW1TdGF0dXMoKSBjb25z
dDsKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6QXNzZXRTdGF0
dXMgYXNzZXRTdGF0dXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBjaGVja1BsYXlhYmls
aXR5KCk7CiAgICAgdm9pZCBzZXRSYXRlKGZsb2F0KSBvdmVycmlkZTsKICAgICBkb3VibGUgcmF0
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZWVrVG9UaW1lKGNvbnN0IE1l
ZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUb2xlcmFuY2UsIGNvbnN0IE1lZGlh
VGltZSYgcG9zaXRpdmVUb2xlcmFuY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDg1Y2U4
MWQxMDNiODVkMWQ0MjZiN2EzNDhkOGYwM2EwYmUzNjY0NTMuLjZhNmZkNzE4M2FlODlkMzg1ODJi
NjExZGQ3MDE2YTUzYWU5YzFlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTQzLDYgKzQz
LDcgQEAgT0JKQ19DTEFTUyBBVlBsYXllckl0ZW1WaWRlb091dHB1dDsKIE9CSkNfQ0xBU1MgQVZQ
bGF5ZXJMYXllcjsKIE9CSkNfQ0xBU1MgQVZVUkxBc3NldDsKIE9CSkNfQ0xBU1MgTlNBcnJheTsK
K09CSkNfQ0xBU1MgTlNNdXRhYmxlRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgV2ViQ29yZUFWRkxv
YWRlckRlbGVnYXRlOwogT0JKQ19DTEFTUyBXZWJDb3JlQVZGTW92aWVPYnNlcnZlcjsKIE9CSkNf
Q0xBU1MgV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZTsKQEAgLTE4Nyw2ICsxODgsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY3JlYXRlQVZQbGF5ZXJJdGVtKCkgZmluYWw7CiAgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZUFWUGxheWVyTGF5ZXIoKTsKICAgICB2b2lkIGNyZWF0ZUFWQXNzZXRGb3JVUkwoY29u
c3QgVVJMJikgZmluYWw7CisgICAgdm9pZCBjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFVSTCYs
IFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5Pik7CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpJdGVtU3RhdHVzIHBsYXllckl0ZW1TdGF0dXMoKSBjb25zdCBmaW5hbDsK
ICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OkFzc2V0U3RhdHVzIGFzc2V0U3Rh
dHVzKCkgY29uc3QgZmluYWw7CiAgICAgbG9uZyBhc3NldEVycm9yQ29kZSgpIGNvbnN0IGZpbmFs
OwpAQCAtMTk0LDcgKzE5Niw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHNlZWthYmxlVGltZVJh
bmdlc0xhc3RNb2RpZmllZFRpbWUoKSBjb25zdCBmaW5hbDsKICAgICBkb3VibGUgbGl2ZVVwZGF0
ZUludGVydmFsKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGNoZWNrUGxheWFiaWxpdHkoKSBm
aW5hbDsKKyAgICB2b2lkIGNoZWNrUGxheWFiaWxpdHkoKTsKICAgICB2b2lkIHNldFJhdGVEb3Vi
bGUoZG91YmxlKSBmaW5hbDsKICAgICBkb3VibGUgcmF0ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgc2V0UHJlc2VydmVzUGl0Y2goYm9vbCkgZmluYWw7CkBAIC0zMzEsNiArMzMzLDcgQEAgcHJp
dmF0ZToKICAgICBtdXRhYmxlIFN0cmluZyBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjazsK
ICAgICBib29sIG1fdmlkZW9GcmFtZUhhc0RyYXduIHsgZmFsc2UgfTsKICAgICBib29sIG1faGF2
ZUNoZWNrZWRQbGF5YWJpbGl0eSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2NyZWF0ZUFzc2V0UGVu
ZGluZyB7IGZhbHNlIH07CiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBVU0UoTUVESUFUT09M
Qk9YKQogICAgIFJlZlB0cjxBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gbV9wcm92aWRlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDYzMTNiOTQ3ZmQ2ODZiNjlmNTNjMDg5NTQ0MTQx
YmViNmZjZGFkNTkuLmYyOTQ4ODE2ZWRkZTc5ZTc4YTE5MzFkNWJjNmQzZWNlZWI1ZDg0N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNTExLDYgKzUxMSw4IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9hZCgpCiAgICAgfQogCiAgICAgLy8g
UmVzZXQgY2FjaGVkIHByb3BlcnRpZXMKKyAgICBtX2NyZWF0ZUFzc2V0UGVuZGluZyA9IGZhbHNl
OworICAgIG1faGF2ZUNoZWNrZWRQbGF5YWJpbGl0eSA9IGZhbHNlOwogICAgIG1fcGVuZGluZ1N0
YXR1c0NoYW5nZXMgPSAwOwogICAgIG1fY2FjaGVkSXRlbVN0YXR1cyA9IE1lZGlhUGxheWVyQVZQ
bGF5ZXJJdGVtU3RhdHVzRG9lc05vdEV4aXN0OwogICAgIG1fY2FjaGVkU2Vla2FibGVSYW5nZXMg
PSBudWxscHRyOwpAQCAtNzUyLDE0ICs3NTQsNDggQEAgc3RhdGljIE5TVVJMICpjYW5vbmljYWxV
UkwoY29uc3QgVVJMJiB1cmwpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKLSAgICBpZiAobV9h
dkFzc2V0KQorICAgIGlmIChtX2F2QXNzZXQgfHwgbV9jcmVhdGVBc3NldFBlbmRpbmcpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIG1fY3JlYXRlQXNzZXRQZW5kaW5nID0gdHJ1ZTsKKyAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gb3B0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IGlmICghUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlVSTEFzc2V0SFRUUENvb2tpZXNLZXko
KSkgeworICAgICAgICBjcmVhdGVBVkFzc2V0Rm9yVVJMKHVybCwgV1RGTW92ZShvcHRpb25zKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwbGF5ZXIoKS0+Z2V0UmF3Q29va2llcyh1
cmwsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBvcHRpb25zID0gV1RGTW92
ZShvcHRpb25zKSwgdXJsXSAoYXV0byBjb29raWVzKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGlmIChjb29r
aWVzLnNpemUoKSkgeworICAgICAgICAgICAgYXV0byBuc0Nvb2tpZXMgPSBjcmVhdGVOU0FycmF5
KGNvb2tpZXMsIFtdIChhdXRvJiBjb29raWUpIC0+IE5TSFRUUENvb2tpZSAqIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gY29va2llOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIFtv
cHRpb25zIHNldE9iamVjdDpuc0Nvb2tpZXMuZ2V0KCkgZm9yS2V5OkFWVVJMQXNzZXRIVFRQQ29v
a2llc0tleV07CisgICAgICAgIH0KKworICAgICAgICBjcmVhdGVBVkFzc2V0Rm9yVVJMKHVybCwg
V1RGTW92ZShvcHRpb25zKSk7CisgICAgfSk7CisjZWxzZQorICAgIGNyZWF0ZUFWQXNzZXRGb3JV
UkwodXJsLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyNlbmRpZgorCit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBVUkwm
IHVybCwgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG9wdGlvbnMpCit7CiAgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwor
ICAgIG1fY3JlYXRlQXNzZXRQZW5kaW5nID0gZmFsc2U7CisKKyAgICBpZiAobV9hdkFzc2V0KQor
ICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gb3B0
aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7ICAgIAor
ICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogCiAgICAgW29wdGlvbnMuZ2V0KCkgc2V0T2Jq
ZWN0OkAoQVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkUmVtb3RlUmVmZXJlbmNlVG9M
b2NhbCB8IEFWQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbkZvcmJpZExvY2FsUmVmZXJlbmNlVG9S
ZW1vdGUpIGZvcktleTpBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5XTsKIApAQCAt
ODI0LDE3ICs4NjAsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIFtvcHRpb25zIHNl
dE9iamVjdDpuZXR3b3JrSW50ZXJmYWNlTmFtZSBmb3JLZXk6QVZVUkxBc3NldEJvdW5kTmV0d29y
a0ludGVyZmFjZU5hbWVdOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IFZlY3RvcjxDb29raWU+IGNvb2tpZXM7Ci0gICAgaWYgKHBsYXllcigpLT5nZXRSYXdDb29raWVz
KHVybCwgY29va2llcykpIHsKLSAgICAgICAgYXV0byBuc0Nvb2tpZXMgPSBjcmVhdGVOU0FycmF5
KGNvb2tpZXMsIFtdIChhdXRvJiBjb29raWUpIC0+IE5TSFRUUENvb2tpZSAqIHsKLSAgICAgICAg
ICAgIHJldHVybiBjb29raWU7Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAoUEFMOjpjYW5Mb2Fk
X0FWRm91bmRhdGlvbl9BVlVSTEFzc2V0SFRUUENvb2tpZXNLZXkoKSkKLSAgICAgICAgICAgIFtv
cHRpb25zIHNldE9iamVjdDpuc0Nvb2tpZXMuZ2V0KCkgZm9yS2V5OkFWVVJMQXNzZXRIVFRQQ29v
a2llc0tleV07Ci0gICAgfQotI2VuZGlmCi0KICAgICBib29sIHVzZVBlcnNpc3RlbnRDYWNoZSA9
IHBsYXllcigpLT5zaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKTsKICAgICBbb3B0aW9ucyBzZXRP
YmplY3Q6QCghdXNlUGVyc2lzdGVudENhY2hlKSBmb3JLZXk6QVZVUkxBc3NldFVzZXNOb1BlcnNp
c3RlbnRDYWNoZUtleV07CiAgICAgCkBAIC04NjMsNiArODg4LDggQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFVSTCYg
dXJsKQogICAgIG1faGF2ZUNoZWNrZWRQbGF5YWJpbGl0eSA9IGZhbHNlOwogCiAgICAgc2V0RGVs
YXlDYWxsYmFja3MoZmFsc2UpOworCisgICAgY2hlY2tQbGF5YWJpbGl0eSgpOwogfQogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEFWUGxheWVySXRlbShBVlBs
YXllckl0ZW0gKml0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggY2M3Y2IxMjI2ZDg1NDI1YjAz
NGZlZGVjNjU5MDI5YWE4OTI0YWMxOC4uNzg1ZmFlMjJlOGZmZDEwMzViYjM2YmY4NzdiNWM1NGQ3
ZWI0OTM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtMzc1LDYgKzM3NSwxMSBAQCBTdHJpbmcg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJOZXR3b3JrSW50ZXJmYWNlTmFtZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5uZXR3b3JrSW50ZXJmYWNlTmFt
ZTsKIH0KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckdldFJhd0Nv
b2tpZXMoY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjpHZXRSYXdD
b29raWVzQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBtX3dlYlBy
b2Nlc3NDb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6R2V0UmF3Q29va2llcyh1cmwpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgbV9pZCk7Cit9CiAjZW5kaWYKIAogY29uc3QgU3RyaW5nJiBSZW1vdGVNZWRpYVBsYXll
clByb3h5OjptZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdApAQCAtNjcxLDE0
ICs2NzYsNiBAQCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4gUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6b3V0T2ZCYW5kVHJhY2tTb3VyY2VzKAogCiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi1ib29sIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
R2V0UmF3Q29va2llcyhjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYpIGNvbnN0Ci17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQogZG91Ymxl
IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyUmVxdWVzdGVkUGxheWJhY2tSYXRl
KCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggOGUx
ZjI1ZTVjODQ2MTRmNDJjZmI1ZTBjOTMwNDRlNWUzMjkxMmI1YS4uYzFjMDUyN2Q4YjUxNzNkM2Y2
NjYzODY5ZTVmNTU2NzlhNzFlM2FkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC0yNDYsNyArMjQ2LDcg
QEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgU3RyaW5nIG1lZGlh
UGxheWVyTmV0d29ya0ludGVyZmFjZU5hbWUoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIG1lZGlh
UGxheWVyR2V0UmF3Q29va2llcyhjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYp
IGNvbnN0IGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJHZXRSYXdDb29raWVzKGNvbnN0IFVS
TCYsIFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjpHZXRSYXdDb29raWVzQ2FsbGJhY2smJikg
Y29uc3QgZmluYWw7CiAjZW5kaWYKIAogICAgIFN0cmluZyBtZWRpYVBsYXllclNvdXJjZUFwcGxp
Y2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
Y3BwCmluZGV4IDg5ZDZmZTlhOGZiMzIzODRhMjdlNDI0Zjc5OTkyZTRkYzQ0YzE5NzIuLmVlNjUz
MDAzYmYzMjlkZjJlMGE0MTkwZDk4NDY4ZmEyMjk1OWUxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5jcHAKQEAgLTExNDYsNiArMTE0NiwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6YWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQogICAgIG1fcGxheWVyLT5hY3Rp
dmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpOwogfQogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYg
dXJsLCBXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6R2V0UmF3Q29va2llc0NhbGxiYWNrJiYg
Y29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgbV9wbGF5ZXItPmdldFJhd0Nvb2tpZXMo
dXJsLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisjZW5kaWYKKwogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogV1RGTG9nQ2hhbm5lbCYgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojpsb2dDaGFubmVsKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IGRl
NmYwZWIzN2I4Y2I5NWNiYWMwZjVjODI5NDM1ZDM4ZDdhOTcxZjkuLjU1NDk4MzE1MzRiMjQ3ZmMw
OTFiY2RlODdmMTFhYjgwMDBkZDcxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAt
MTQ4LDYgKzE0OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjdXJyZW50UGxheWJhY2tUYXJnZXRJ
c1dpcmVsZXNzQ2hhbmdlZChib29sKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICB2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiwgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJDbGllbnQ6OkdldFJhd0Nvb2tpZXNDYWxsYmFjayYmKSBjb25zdDsKKyNlbmRpZgorCiBwcml2
YXRlOgogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLm1lc3NhZ2VzLmluCmluZGV4IDk0NTgzZmEyMjhjNTZmYzE3OWM0ZDk2N2FmMjEz
MDBkNTBiYmQzMGEuLmY0Y2M4YmNiMmJmZmIzZjEwOTg1N2U3ZDZkYTdmNmE5NTBlNmZhZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCkBAIC04Niw2ICs4
NiwxMSBAQCBtZXNzYWdlcyAtPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgTm90UmVmQ291bnRl
ZCB7CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBDdXJyZW50UGxh
eWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChib29sIGlzQ3VycmVudFBsYXliYWNrVGFyZ2V0
V2lyZWxlc3MpCiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgR2V0UmF3
Q29va2llcyhVUkwgdXJsKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gcmVzdWx0KSBBc3lu
YworI2VuZGlmCisKIH0KIAogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>