<?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>232503</bug_id>
          
          <creation_ts>2021-10-29 12:43:29 -0700</creation_ts>
          <short_desc>Move handling of ChildrenChanged notifications out of the AccessibilityObjects into AXObjectCache.</short_desc>
          <delta_ts>2021-11-01 16:08:24 -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>Accessibility</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="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Andres Gonzalez">andresg_22</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1810190</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-29 12:43:29 -0700</bug_when>
    <thetext>Move handling of ChildrenChanged notifications out of the AccessibilityObjects into AXObjectCache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810191</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-29 12:43:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/84820154&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810201</commentid>
    <comment_count>2</comment_count>
      <attachid>442856</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-29 13:16:33 -0700</bug_when>
    <thetext>Created attachment 442856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810244</commentid>
    <comment_count>3</comment_count>
      <attachid>442856</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-10-29 14:20:46 -0700</bug_when>
    <thetext>Comment on attachment 442856
Patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:992
&gt; +        childrenChanged(object-&gt;parentObject());

if the text changed for an object, do we really need to notify the parent? or is it enough to recalculate just the children?

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1147
&gt; +        // FIXME: the above childrenChanged adds the object to m_deferredChildrenChangedList but there is no updateIsolatedTree after that children changed is handled in performDeferredCacheUpdate.

is this fix relevant to put here, or should be put this in preferomDeferredCache update ?

&gt; Source/WebCore/accessibility/AccessibilityObject.h:649
&gt; +    bool lastKnownIsIgnoredValue();

can we make this const

&gt; Source/WebCore/accessibility/AccessibilityObject.h:651
&gt; +    bool hasIgnoredValueChanged();

can we make this const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810437</commentid>
    <comment_count>4</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-30 11:47:53 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #3)
&gt; Comment on attachment 442856 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=442856&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:992
&gt; &gt; +        childrenChanged(object-&gt;parentObject());
&gt; 
&gt; if the text changed for an object, do we really need to notify the parent?
&gt; or is it enough to recalculate just the children?

Before it was:

    if (object-&gt;parentObjectIfExists())
        object-&gt;notifyIfIgnoredValueChanged();

And AccessibilityObject::notifyIfIgnoredValueChanged was doing:

    if (lastKnownIsIgnoredValue() != isIgnored) {
        if (AXObjectCache* cache = axObjectCache())
            cache-&gt;childrenChanged(parentObject());

That is equivalent to what we are doing now:

    if (object-&gt;parentObjectIfExists() &amp;&amp; object-&gt;hasIgnoredValueChanged())
        childrenChanged(object-&gt;parentObject());

So I&apos;m preserving what it was there before for some time.

As for the need of this children changed notification on the parent, it is the kind of question that this patch allows to ask because it makes it evident. There was a reason why this extra notification was added, but it is not clear to me.

&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:1147
&gt; &gt; +        // FIXME: the above childrenChanged adds the object to m_deferredChildrenChangedList but there is no updateIsolatedTree after that children changed is handled in performDeferredCacheUpdate.
&gt; 
&gt; is this fix relevant to put here, or should be put this in
&gt; preferomDeferredCache update ?

Replaced this comment with two new FIXME comments that better explain the issue with isolated tree updates.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.h:649
&gt; &gt; +    bool lastKnownIsIgnoredValue();
&gt; 
&gt; can we make this const

No because it updates m_lastKnownIsIgnoredValue.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.h:651
&gt; &gt; +    bool hasIgnoredValueChanged();
&gt; 
&gt; can we make this const

No because it updates m_lastKnownIsIgnoredValue. The function is actually, has it changed since last time I checked? and hence it can update when it checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810438</commentid>
    <comment_count>5</comment_count>
      <attachid>442913</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-30 11:53:54 -0700</bug_when>
    <thetext>Created attachment 442913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810499</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-31 06:41:41 -0700</bug_when>
    <thetext>Committed r285092 (243734@main): &lt;https://commits.webkit.org/243734@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442913.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810947</commentid>
    <comment_count>7</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-11-01 16:08:24 -0700</bug_when>
    <thetext>This ended up breaking the PlayStation build where !ENABLE(ACCESSIBILITY). There&apos;s no EWS for it so I&apos;m fixing the issue over in https://bugs.webkit.org/show_bug.cgi?id=232590

Just a reminder to double check to see if there&apos;s a !ENABLE(ACCESSIBILITY) definition when modifying signatures here.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442856</attachid>
            <date>2021-10-29 13:16:33 -0700</date>
            <delta_ts>2021-10-30 11:53:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232503-20211029161632.patch</filename>
            <type>text/plain</type>
            <size>26761</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIxN2JjMjBlOGE1OGE3
NWYzZWRjYjY1NjRjOWI2MmJlYTBjZTA3ZS4uMjYxMTBiNDg1MWQ4ZjUwZGQzMjE0N2U0ZGZjNDdl
NzQ2MjA5YmZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTEwLTI5ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGhhbmRs
aW5nIG9mIENoaWxkcmVuQ2hhbmdlZCBub3RpZmljYXRpb25zIG91dCBvZiB0aGUgQWNjZXNzaWJp
bGl0eU9iamVjdHMgaW50byBBWE9iamVjdENhY2hlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNTAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NDgyMDE1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDaGlsZHJlbkNoYW5nZWQgbm90aWZpY2F0aW9ucyB3ZXJlIGhhbmRsZWQgaW4KKyAgICAgICAg
QVhPYmplY3RDYWNoZTo6cGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUgYnkgY2FsbGluZyBpbnRv
IGFuIEFYIG9iamVjdAorICAgICAgICBtZXRob2QuIFdoaWxlIGluIHByaW5jaXBsZSB0aGlzIG1h
eSBzZWVtIGFzIGEgZ29vZCBkZXNpZ24sIGl0IG9ic2N1cmVzCisgICAgICAgIHNpZ25pZmljYW50
bHkgd2hhdCBleGFjdGx5IGhhcHBlbnMgaW4gcmVzcG9uc2UgdG8gYSBub3RpZmljYXRpb24uIFRo
aXMKKyAgICAgICAgaXMgYWdncmF2YXRlZCBieSB0aGUgZmFjdCB0aGF0IHRoZSBvYmplY3QncyBo
YW5kbGVycyBtYXkgY2FsbCBiYWNrIGludG8KKyAgICAgICAgdGhlIEFYT2JqZWN0Q2FjaGUgdG8g
cG9zdCBvciBmdXJ0aGVyIGRlZmVyIG5vdGlmaWNhdGlvbnMgdG8gcGxhdGZvcm0KKyAgICAgICAg
Y2xpZW50cy4KKyAgICAgICAgVGhpcyBwYXRjaCBhdGVtcHRzIHRvIHN0cmFpZ2h0bGluZSB0aGlz
IGZsb3cgYnkgaGFuZGxpbmcgdGhlCisgICAgICAgIENoaWxkcmVuQ2hhbmdlZCBub3RpZmljYXRp
b25zIGluIEFYT2JqZWN0Q2FjaGUuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6dGV4dENoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlQ2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgVGhlIG5hbWUgaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyB0aGUgYWN0dWFsIGhh
bmRsZXIgZm9yIHRoZSBub3RpZmljYXRpb24KKyAgICAgICAgYXMgb3Bwb3NlZCBhcyB0aGUgb3Ro
ZXIgY2hpbGRyZW5DaGFuZ2VkKC4uLikgbWV0aG9kcyB0aGF0IGp1c3QgcXVldWUKKyAgICAgICAg
dGhlIG5vdGlmaWNhdGlvbnMgZm9yIGEgbGF0ZXIgdGltZS4KKworICAgICAgICAoV2ViQ29yZTo6
QVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFSb2xlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQpOgorICAgICAgICAoV2ViQ29yZTo6
QVhPYmplY3RDYWNoZTo6cGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlN
ZW51TGlzdDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgRGVsZXRlZCwgbm93IGhhbmRsZWQg
aW4gQVhPYmplY3RDYWNoZTo6aGFuZGxlQ2hpbGRyZW5DaGFuZ2VkLgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6aGFuZGxlQ2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjpjaGlsZHJlbkNoYW5nZWQpOgor
ICAgICAgICBSZW5hbWVkIGhhbmRsZUNoaWxkcmVuQ2hhbmdlZC4gSXQgaXMgdGhlIG9ubHkgQVhP
YmplY3Qgc3ViY2xhc3MgdGhhdAorICAgICAgICBzdGlsbCBoYXMgdGhpcyBtZXRob2QgdG8gdXBk
YXRlIGl0cyBjaGlsZHJlbi4gSXQgZG9lcyBub3QgcG9zdCBvcgorICAgICAgICBzY2hlZHVsZSBh
bnkgcGxhdGZvcm0gY2xpZW50IG5vdGlmaWNhdGlvbi4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojp1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hpbGRyZW5DaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Lmg6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc0lnbm9yZWRWYWx1ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bm90aWZ5SWZJZ25vcmVkVmFsdWVD
aGFuZ2VkKToKKyAgICAgICAgUmVuYW1lZCBoYXNJZ25vcmVkVmFsdWVDaGFuZ2VkIHNpbmNlIHRo
ZSBhY3R1YWwgbm90aWZpY2F0aW9ucyBhcmUgcG9zdGVkCisgICAgICAgIGluIEFYT2JqZWN0Q2Fj
aGUuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnVwZGF0ZUFjY2Vzc2liaWxpdHlS
b2xlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZh
Y2UuaDoKKyAgICAgICAgU2V2ZXJhbCBtZXRob2RzIGNhbiBub3cgYmUgcmVtb3ZlZCBmcm9tIHRo
ZSBBWENvcmVPYmplY3QgaW50ZXJmYWNlIHNpbmNlCisgICAgICAgIHRoZXkgYXJlIGludGVybmFs
IHRvIHRoZSBBWE9iamVjdCBjbGFzcyBoaWVyYXJjaHkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5VGFibGU6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKyAgICAgICAgTm93IGFibGUgdG8gZGVsZXRlIHNl
dmVyYWwgdW5uZWNlc3NhcnkgbWV0aG9kcyBmcm9tIHRoZSBpc29sYXRlZCBvYmplY3RzLgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y2hpbGRyZW5DaGFuZ2VkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnVwZGF0ZUFjY2Vzc2liaWxp
dHlSb2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omxh
c3RLbm93bklzSWdub3JlZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRPYmplY3Q6OnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Om5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdl
ZCk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5oOgorCiAyMDIxLTEwLTI3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25A
d2Via2l0Lm9yZz4KIAogICAgICAgICBFbGltaW5hdGUgZHVwbGljYXRlZCBwbGF0Zm9ybS1zcGVj
aWZpYyBjb2RlIGluIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBlM2YxOGI5MWM2ODczZTRlNGIy
MzY0ZDY0YjA1NjU1ZTRkOTA1MjMxLi4yZmZhNjViYTgyOWE3ZDRhOTg5MGQ2ZTNhY2IwMjBmODVm
OTkxYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAKQEAgLTk4OCw4ICs5ODgsOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRDaGFuZ2Vk
KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKIAogICAgIHBvc3ROb3RpZmljYXRpb24ob2Jq
ZWN0LCBvYmplY3QtPmRvY3VtZW50KCksIEFYVGV4dENoYW5nZWQpOwogCi0gICAgaWYgKG9iamVj
dC0+cGFyZW50T2JqZWN0SWZFeGlzdHMoKSkKLSAgICAgICAgb2JqZWN0LT5ub3RpZnlJZklnbm9y
ZWRWYWx1ZUNoYW5nZWQoKTsKKyAgICBpZiAob2JqZWN0LT5wYXJlbnRPYmplY3RJZkV4aXN0cygp
ICYmIG9iamVjdC0+aGFzSWdub3JlZFZhbHVlQ2hhbmdlZCgpKQorICAgICAgICBjaGlsZHJlbkNo
YW5nZWQob2JqZWN0LT5wYXJlbnRPYmplY3QoKSk7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6
dXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVkKE5vZGUqIG5vZGUpCkBAIC05OTksNiArOTk5
LDUzIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVk
KE5vZGUqIG5vZGUpCiAgICAgZ2V0KG5vZGUpOwogfQogCit2b2lkIEFYT2JqZWN0Q2FjaGU6Omhh
bmRsZUNoaWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCit7CisgICAg
Ly8gSGFuZGxlIE1lbnVMaXN0cyBhbmQgTWVudUxpc3RQb3B1cHMgYXMgc3BlY2lhbCBjYXNlcy4K
KyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eU1lbnVMaXN0PihvYmplY3QpKSB7CisgICAgICAgIGF1
dG8mIGNoaWxkcmVuID0gb2JqZWN0LmNoaWxkcmVuKGZhbHNlKTsKKyAgICAgICAgaWYgKGNoaWxk
cmVuLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQoY2hp
bGRyZW4uc2l6ZSgpID09IDEgJiYgaXM8QWNjZXNzaWJpbGl0eU9iamVjdD4oKmNoaWxkcmVuWzBd
KSk7CisgICAgICAgIGhhbmRsZUNoaWxkcmVuQ2hhbmdlZChkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
T2JqZWN0PigqY2hpbGRyZW5bMF0pKTsKKyAgICB9IGVsc2UgaWYgKGlzPEFjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwPihvYmplY3QpKSB7CisgICAgICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwPihvYmplY3QpLmhhbmRsZUNoaWxkcmVuQ2hhbmdlZCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gVGhpcyBtZXRob2QgaXMgbWVhbnQgYXMgYSBxdWljayB3
YXkgb2YgbWFya2luZyBhIHBvcnRpb24gb2YgdGhlIGFjY2Vzc2liaWxpdHkgdHJlZSBkaXJ0eS4K
KyAgICBpZiAoIW9iamVjdC5ub2RlKCkgJiYgIW9iamVjdC5yZW5kZXJlcigpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwb3N0Tm90aWZpY2F0aW9uKCZvYmplY3QsIG9iamVjdC5kb2N1bWVudCgp
LCBBWENoaWxkcmVuQ2hhbmdlZCk7CisKKyAgICAvLyBTaG91bGQgbWFrZSB0aGUgc3VidHJlZSBk
aXJ0eSBzbyB0aGF0IGV2ZXJ5dGhpbmcgYmVsb3cgd2lsbCBiZSB1cGRhdGVkIGNvcnJlY3RseS4K
KyAgICBvYmplY3Quc2V0TmVlZHNUb1VwZGF0ZVN1YnRyZWUoKTsKKworICAgIC8vIEdvIHVwIHRo
ZSBleGlzdGluZyBhbmNlc3RvcnMgY2hhaW4gYW5kIGZpcmUgdGhlIGFwcHJvcHJpYXRlIG5vdGlm
aWNhdGlvbnMuCisgICAgYm9vbCBzaG91bGRVcGRhdGVQYXJlbnQgPSB0cnVlOworICAgIGZvciAo
YXV0byogcGFyZW50ID0gJm9iamVjdDsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9i
amVjdElmRXhpc3RzKCkpIHsKKyAgICAgICAgaWYgKHNob3VsZFVwZGF0ZVBhcmVudCkKKyAgICAg
ICAgICAgIHBhcmVudC0+c2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgLy8g
SWYgdGhpcyBvYmplY3Qgc3VwcG9ydHMgQVJJQSBsaXZlIHJlZ2lvbnMsIHRoZW4gbm90aWZ5IEFU
IG9mIGNoYW5nZXMuCisgICAgICAgIC8vIFRoaXMgbm90aWZpY2F0aW9uIG5lZWQgdG8gYmUgc2Vu
dCBldmVuIHdoZW4gdGhlIHNjcmVlbiByZWFkZXIgaGFzIG5vdCBhY2Nlc3NlZCB0aGlzIGxpdmUg
cmVnaW9uIHNpbmNlIHRoZSBsYXN0IHVwZGF0ZS4KKyAgICAgICAgLy8gU29tZXRpbWVzIHRoaXMg
ZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBtYW55IHRpbWVzIHdpdGhpbiBhIHNob3J0IHBlcmlvZCBv
ZiB0aW1lLCBsZWFkaW5nIHRvIHBvc3RpbmcgdG9vIG1hbnkgQVhMaXZlUmVnaW9uQ2hhbmdlZCBu
b3RpZmljYXRpb25zLgorICAgICAgICAvLyBUbyBmaXggdGhpcywgd2UgdXNlIGEgdGltZXIgdG8g
bWFrZSBzdXJlIHdlIG9ubHkgcG9zdCBvbmUgbm90aWZpY2F0aW9uIGZvciB0aGUgY2hpbGRyZW4g
Y2hhbmdlcyB3aXRoaW4gYSBwcmUtZGVmaW5lZCB0aW1lIGludGVydmFsLgorICAgICAgICBpZiAo
cGFyZW50LT5zdXBwb3J0c0xpdmVSZWdpb24oKSkKKyAgICAgICAgICAgIHBvc3RMaXZlUmVnaW9u
Q2hhbmdlTm90aWZpY2F0aW9uKHBhcmVudCk7CisKKyAgICAgICAgLy8gSWYgdGhpcyBvYmplY3Qg
aXMgYW4gQVJJQSB0ZXh0IGNvbnRyb2wsIG5vdGlmeSB0aGF0IGl0cyB2YWx1ZSBjaGFuZ2VkLgor
ICAgICAgICBpZiAocGFyZW50LT5pc05vbk5hdGl2ZVRleHRDb250cm9sKCkpIHsKKyAgICAgICAg
ICAgIHBvc3ROb3RpZmljYXRpb24ocGFyZW50LCBwYXJlbnQtPmRvY3VtZW50KCksIEFYVmFsdWVD
aGFuZ2VkKTsKKworICAgICAgICAgICAgLy8gRG8gbm90IGxldCBhbnkgYW5jZXN0b3Igb2YgYW4g
ZWRpdGFibGUgb2JqZWN0IHVwZGF0ZSBpdHMgY2hpbGRyZW4uCisgICAgICAgICAgICBzaG91bGRV
cGRhdGVQYXJlbnQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBBWE9iamVj
dENhY2hlOjpoYW5kbGVNZW51T3BlbmVkKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlIHx8
ICFub2RlLT5yZW5kZXJlcigpIHx8ICFub2RlSGFzUm9sZShub2RlLCAibWVudSIpKQpAQCAtMTAy
OSw3ICsxMDc2LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoTm9kZSog
bm9kZSwgTm9kZSogbmV3Q2hpbGQpCiAgICAgaWYgKG5ld0NoaWxkKQogICAgICAgICBtX2RlZmVy
cmVkQ2hpbGRyZW5DaGFuZ2VkTm9kZUxpc3QuYWRkKG5ld0NoaWxkKTsKIAotICAgIGNoaWxkcmVu
Q2hhbmdlZChnZXQobm9kZSkpOworICAgIGlmIChhdXRvKiBvYmplY3QgPSBnZXQobm9kZSkpCisg
ICAgICAgIG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRMaXN0LmFkZChvYmplY3QpOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBSZW5kZXJPYmplY3QqIG5ld0NoaWxkKQpAQCAtMTA0MCwxNSArMTA4OCwxNCBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5k
ZXJPYmplY3QqIG5ld0NoaQogICAgIGlmIChuZXdDaGlsZCAmJiBuZXdDaGlsZC0+bm9kZSgpKQog
ICAgICAgICBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTm9kZUxpc3QuYWRkKG5ld0NoaWxkLT5u
b2RlKCkpOwogCi0gICAgY2hpbGRyZW5DaGFuZ2VkKGdldChyZW5kZXJlcikpOworICAgIGlmIChh
dXRvKiBvYmplY3QgPSBnZXQocmVuZGVyZXIpKQorICAgICAgICBtX2RlZmVycmVkQ2hpbGRyZW5D
aGFuZ2VkTGlzdC5hZGQob2JqZWN0KTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJl
bkNoYW5nZWQoQVhDb3JlT2JqZWN0KiBvYmopCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVu
Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgaWYgKCFvYmopCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRMaXN0LmFkZChv
YmopOworICAgIGlmIChvYmplY3QpCisgICAgICAgIG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRM
aXN0LmFkZChvYmplY3QpOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBv
c3RUaW1lckZpcmVkKCkKQEAgLTEwOTUsOCArMTE0MiwxMCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6
Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKCkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChu
b3RlLnNlY29uZCA9PSBBWENoaWxkcmVuQ2hhbmdlZCAmJiBub3RlLmZpcnN0LT5wYXJlbnRPYmpl
Y3RJZkV4aXN0cygpCi0gICAgICAgICAgICAmJiBub3RlLmZpcnN0LT5sYXN0S25vd25Jc0lnbm9y
ZWRWYWx1ZSgpICE9IG5vdGUuZmlyc3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAg
ICAgICAgIGNoaWxkcmVuQ2hhbmdlZChub3RlLmZpcnN0LT5wYXJlbnRPYmplY3QoKSk7CisgICAg
ICAgICAgICAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Pigqbm90ZS5maXJzdCkubGFz
dEtub3duSXNJZ25vcmVkVmFsdWUoKSAhPSBub3RlLmZpcnN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkpCisgICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQoZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eU9iamVjdD4obm90ZS5maXJzdC0+cGFyZW50T2JqZWN0KCkpKTsKKyAgICAgICAgLy8gRklYTUU6
IHRoZSBhYm92ZSBjaGlsZHJlbkNoYW5nZWQgYWRkcyB0aGUgb2JqZWN0IHRvIG1fZGVmZXJyZWRD
aGlsZHJlbkNoYW5nZWRMaXN0IGJ1dCB0aGVyZSBpcyBubyB1cGRhdGVJc29sYXRlZFRyZWUgYWZ0
ZXIgdGhhdCBjaGlsZHJlbiBjaGFuZ2VkIGlzIGhhbmRsZWQgaW4gcGVyZm9ybURlZmVycmVkQ2Fj
aGVVcGRhdGUuCisgICAgICAgIC8vIFRoaXMgaXMgbW9zdCBsaWtlbHkgdGhlIGNhdXNlIG9mIHBy
b2JsZW1zIHdpdGggdGhlIGlzb2xhdGVkIHRyZWUgdXBkYXRlcy4uCiAKICAgICAgICAgbm90aWZp
Y2F0aW9uc1RvUG9zdC5hcHBlbmQobm90ZSk7CiAgICAgfQpAQCAtMTcxOCwxNCArMTc2NywxNSBA
QCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFSb2xlQ2hhbmdlZChOb2RlKiBub2RlKQog
ICAgIHN0b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCk7CiAKICAgICAvLyBEb24n
dCBtYWtlIGFuIEFYIG9iamVjdCB1bmxlc3MgaXQncyBuZWVkZWQKLSAgICBpZiAoYXV0byogb2Jq
ID0gZ2V0KG5vZGUpKSB7Ci0gICAgICAgIG9iai0+dXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUoKTsK
KyAgICBpZiAoYXV0byogb2JqZWN0ID0gZ2V0KG5vZGUpKSB7CisgICAgICAgIG9iamVjdC0+dXBk
YXRlQWNjZXNzaWJpbGl0eVJvbGUoKTsKKworICAgICAgICBpZiAob2JqZWN0LT5oYXNJZ25vcmVk
VmFsdWVDaGFuZ2VkKCkpCisgICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQob2JqZWN0LT5wYXJl
bnRPYmplY3QoKSk7CiAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQot
ICAgICAgICB1cGRhdGVJc29sYXRlZFRyZWUob2JqLCBBWE9iamVjdENhY2hlOjpBWEFyaWFSb2xl
Q2hhbmdlZCk7CisgICAgICAgIHVwZGF0ZUlzb2xhdGVkVHJlZShvYmplY3QsIEFYT2JqZWN0Q2Fj
aGU6OkFYQXJpYVJvbGVDaGFuZ2VkKTsKICNlbmRpZgotCi0gICAgICAgIG9iai0+bm90aWZ5SWZJ
Z25vcmVkVmFsdWVDaGFuZ2VkKCk7CiAgICAgfQogfQogCkBAIC0xODY0LDE0ICsxOTE0LDE4IEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6bGFiZWxDaGFuZ2VkKEVsZW1lbnQqIGVsZW1lbnQpCiAKIHZv
aWQgQVhPYmplY3RDYWNoZTo6cmVjb21wdXRlSXNJZ25vcmVkKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpCiB7Ci0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IGdldChyZW5kZXJlcikp
Ci0gICAgICAgIG9iai0+bm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCk7CisgICAgaWYgKGF1
dG8qIG9iamVjdCA9IGdldChyZW5kZXJlcikpIHsKKyAgICAgICAgaWYgKG9iamVjdC0+aGFzSWdu
b3JlZFZhbHVlQ2hhbmdlZCgpKQorICAgICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKG9iamVjdC0+
cGFyZW50T2JqZWN0KCkpOworICAgIH0KIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpyZWNvbXB1
dGVJc0lnbm9yZWQoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqID0gZ2V0KG5vZGUpKQotICAgICAgICBvYmotPm5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdl
ZCgpOworICAgIGlmIChhdXRvKiBvYmplY3QgPSBnZXQobm9kZSkpIHsKKyAgICAgICAgaWYgKG9i
amVjdC0+aGFzSWdub3JlZFZhbHVlQ2hhbmdlZCgpKQorICAgICAgICAgICAgY2hpbGRyZW5DaGFu
Z2VkKG9iamVjdC0+cGFyZW50T2JqZWN0KCkpOworICAgIH0KIH0KIAogdm9pZCBBWE9iamVjdENh
Y2hlOjpzdGFydENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXNVbnRpbFRyZWVNdXRhdGVz
KCkKQEAgLTMxODUsNyArMzIzOSw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cGVyZm9ybURlZmVy
cmVkQ2FjaGVVcGRhdGUoKQogICAgIG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWROb2RlTGlzdC5j
bGVhcigpOwogCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5n
ZWRMaXN0KQotICAgICAgICBjaGlsZC0+Y2hpbGRyZW5DaGFuZ2VkKCk7CisgICAgICAgIGhhbmRs
ZUNoaWxkcmVuQ2hhbmdlZCgqY2hpbGQpOwogICAgIG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRM
aXN0LmNsZWFyKCk7CiAKICAgICBmb3IgKGF1dG8qIG5vZGUgOiBtX2RlZmVycmVkVGV4dENoYW5n
ZWRMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApp
bmRleCAzNWFjOTU3Y2JlYTRiNWI3ZTIzM2Y5NDlmNTcwYTllMWM4MzhjMTE2Li5lOWZkMjMxNGQ5
ZDBmOWMzNTljYjUwZWQyZjEyODEwNjBhNTRhNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtMTg0LDcgKzE4NCw3IEBAIHByaXZhdGU6CiBw
dWJsaWM6CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoTm9kZSosIE5vZGUqIG5ld0NoaWxkID0g
bnVsbHB0cik7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVy
T2JqZWN0KiBuZXdDaGlsZCA9IG51bGxwdHIpOwotICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKEFY
Q29yZU9iamVjdCopOworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqKTsKICAgICB2b2lkIGNoZWNrZWRTdGF0ZUNoYW5nZWQoTm9kZSopOwogICAgIC8vIENhbGxl
ZCB3aGVuIGEgbm9kZSBoYXMganVzdCBiZWVuIGF0dGFjaGVkLCBzbyB3ZSBjYW4gbWFrZSBzdXJl
IHdlIGhhdmUgdGhlIHJpZ2h0IHN1YmNsYXNzIG9mIEFjY2Vzc2liaWxpdHlPYmplY3QuCiAgICAg
dm9pZCB1cGRhdGVDYWNoZUFmdGVyTm9kZUlzQXR0YWNoZWQoTm9kZSopOwpAQCAtNDYxLDYgKzQ2
MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBlbnF1ZXVlUGFzc3dvcmRWYWx1ZUNoYW5nZU5vdGlm
aWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgdm9pZCBwYXNzd29yZE5vdGlmaWNh
dGlvblBvc3RUaW1lckZpcmVkKCk7CiAKKyAgICB2b2lkIGhhbmRsZUNoaWxkcmVuQ2hhbmdlZChB
Y2Nlc3NpYmlsaXR5T2JqZWN0Jik7CiAgICAgdm9pZCBoYW5kbGVNZW51T3BlbmVkKE5vZGUqKTsK
ICAgICB2b2lkIGhhbmRsZUxpdmVSZWdpb25DcmVhdGVkKE5vZGUqKTsKICAgICB2b2lkIGhhbmRs
ZU1lbnVJdGVtU2VsZWN0ZWQoTm9kZSopOwpAQCAtNTE5LDcgKzUyMCw3IEBAIHByaXZhdGU6CiAg
ICAgV2Vha0hhc2hTZXQ8RWxlbWVudD4gbV9kZWZlcnJlZFJlY29tcHV0ZUlzSWdub3JlZExpc3Q7
CiAgICAgTGlzdEhhc2hTZXQ8Tm9kZSo+IG1fZGVmZXJyZWRUZXh0Q2hhbmdlZExpc3Q7CiAgICAg
V2Vha0hhc2hTZXQ8RWxlbWVudD4gbV9kZWZlcnJlZFNlbGVjdGVkQ2hpbGRyZWRDaGFuZ2VkTGlz
dDsKLSAgICBMaXN0SGFzaFNldDxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gbV9kZWZlcnJlZENoaWxk
cmVuQ2hhbmdlZExpc3Q7CisgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+PiBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTGlzdDsKICAgICBMaXN0SGFzaFNldDxOb2Rl
Kj4gbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdlZE5vZGVMaXN0OwogICAgIFdlYWtIYXNoU2V0PEVs
ZW1lbnQ+IG1fZGVmZXJyZWRNb2RhbENoYW5nZWRMaXN0OwogICAgIFdlYWtIYXNoU2V0PEVsZW1l
bnQ+IG1fZGVmZXJyZWRNZW51TGlzdENoYW5nZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAppbmRleCA4NzJlYjg2Njg3
MTk1OGY3ZTFlZGJiMDU3YWM5M2EyMmRkYzUxNmVmLi45YzMyMGMyZGJlYmRhYTk3ZTdjZjk0ZjVk
MzcyZTRkN2FlNDJkMDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCkBAIC04NiwxNSArODYsNiBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4oKQogICAgIGxpc3QtPmFkZENoaWxkcmVu
KCk7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0OjpjaGlsZHJlbkNoYW5nZWQoKQot
ewotICAgIGlmIChtX2NoaWxkcmVuLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
QVNTRVJUKG1fY2hpbGRyZW4uc2l6ZSgpID09IDEpOwotICAgIG1fY2hpbGRyZW5bMF0tPmNoaWxk
cmVuQ2hhbmdlZCgpOwotfQotCiBib29sIEFjY2Vzc2liaWxpdHlNZW51TGlzdDo6aXNDb2xsYXBz
ZWQoKSBjb25zdAogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmgKaW5kZXggZmM2
MDJhYTBiY2Y0MmQzYmYwMGViMGY5OGViZjE4YTAwYmMwZDM5Mi4uNTk5YTc5ODZkOWRhNDI4OWI2
MGIzYTNkZjMzNzcwZWE3M2M2ZWVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oCkBAIC00OCw3ICs0OCw2IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRlOwotICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9w
dXAuY3BwCmluZGV4IDVjZDBiYTY3YmJhMWMyYzhmNmNkYWMyZGNmMGJkY2MwNDA1ZTc1NGMuLjQ2
OWRmOGYzMDhlOWU0NzBiY2I4ZmQwY2ZhNDkwN2I5OWQyYWMzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9w
dXAuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1
cDo6YWRkQ2hpbGRyZW4oKQogICAgIH0KIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQ
b3B1cDo6Y2hpbGRyZW5DaGFuZ2VkKCkKK3ZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6
OmhhbmRsZUNoaWxkcmVuQ2hhbmdlZCgpCiB7CiAgICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBh
eE9iamVjdENhY2hlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IG1fY2hpbGRyZW4uc2l6ZSgpOyBp
ID4gMCA7IC0taSkgewpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVM
aXN0UG9wdXA6OmNoaWxkcmVuQ2hhbmdlZCgpCiAgICAgICAgICAgICBjYWNoZS0+cmVtb3ZlKGNo
aWxkLT5vYmplY3RJRCgpKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIG1fY2hpbGRy
ZW4uY2xlYXIoKTsKICAgICBtX2NoaWxkcmVuSW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICBhZGRD
aGlsZHJlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oCmluZGV4IDNjYTNkNTJlMzRlMWJiNGQ3OGM1MzUz
Y2FmM2MwNTUyMTc4ODcxMmYuLmYzNDM0MmU3NDI0NjIzOWJkNzcwMDcwM2IxYmFjYTZhZDRkZTZi
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0UG9wdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwLmgKQEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgQWNjZXNzaWJp
bGl0eU1lbnVMaXN0T3B0aW9uOwogY2xhc3MgSFRNTEVsZW1lbnQ7CiAKIGNsYXNzIEFjY2Vzc2li
aWxpdHlNZW51TGlzdFBvcHVwIGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0
IHsKKyAgICBmcmllbmQgY2xhc3MgQVhPYmplY3RDYWNoZTsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwKTsgfQogCkBAIC01Myw3ICs1NCw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29s
IHByZXNzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRlOwotICAg
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVDaGlsZHJl
bkNoYW5nZWQoKTsKICAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24qIG1lbnVMaXN0
T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChIVE1MRWxlbWVudCopIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
LmNwcAppbmRleCBhMTIzZjljNmJhZDY2YTE1MTgzYjE2M2JmMTI5MDNhYmI0ZDZhYzI2Li43NTg2
MzI0ODNhNGQyOWQ4NDBjMjZmMTVmMjBhMGVjMWNmYjY5YmZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApA
QCAtMTE2LDYxICsxMTYsMTEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6ZGV0YWNo
UmVtb3RlUGFydHMoQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlIGRldGEKICAgICBtX25vZGUg
PSBudWxscHRyOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGlsZHJlbkNo
YW5nZWQoKQotewotICAgIC8vIFRoaXMgbWV0aG9kIGlzIG1lYW50IGFzIGEgcXVpY2sgd2F5IG9m
IG1hcmtpbmcgYSBwb3J0aW9uIG9mIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUgZGlydHkuCi0gICAg
aWYgKCFub2RlKCkgJiYgIXJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFYT2Jq
ZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwotICAgIGlmICghY2FjaGUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbih0aGlzLCBkb2N1bWVudCgp
LCBBWE9iamVjdENhY2hlOjpBWENoaWxkcmVuQ2hhbmdlZCk7Ci0gICAgCi0gICAgLy8gU2hvdWxk
IG1ha2UgdGhlIHN1YiB0cmVlIGRpcnR5IHNvIHRoYXQgZXZlcnl0aGluZyBiZWxvdyB3aWxsIGJl
IHVwZGF0ZWQgY29ycmVjdGx5LgotICAgIHRoaXMtPnNldE5lZWRzVG9VcGRhdGVTdWJ0cmVlKCk7
Ci0gICAgYm9vbCBzaG91bGRTdG9wVXBkYXRpbmdQYXJlbnQgPSBmYWxzZTsKLQotICAgIC8vIEdv
IHVwIHRoZSBhY2Nlc3NpYmlsaXR5IHBhcmVudCBjaGFpbiwgYnV0IG9ubHkgaWYgdGhlIGVsZW1l
bnQgYWxyZWFkeSBleGlzdHMuIFRoaXMgbWV0aG9kIGlzCi0gICAgLy8gY2FsbGVkIGR1cmluZyBy
ZW5kZXIgbGF5b3V0cywgbWluaW1hbCB3b3JrIHNob3VsZCBiZSBkb25lLiAKLSAgICAvLyBJZiBB
WCBlbGVtZW50cyBhcmUgY3JlYXRlZCBub3csIHRoZXkgY291bGQgaW50ZXJyb2dhdGUgdGhlIHJl
bmRlciB0cmVlIHdoaWxlIGl0J3MgaW4gYSBmdW5reSBzdGF0ZS4KLSAgICAvLyBBdCB0aGUgc2Ft
ZSB0aW1lLCBwcm9jZXNzIEFSSUEgbGl2ZSByZWdpb24gY2hhbmdlcy4KLSAgICBmb3IgKEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHRoaXM7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5w
YXJlbnRPYmplY3RJZkV4aXN0cygpKSB7Ci0gICAgICAgIGlmICghc2hvdWxkU3RvcFVwZGF0aW5n
UGFyZW50KQotICAgICAgICAgICAgcGFyZW50LT5zZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKTsK
LSAgICAgICAgCi0KLSAgICAgICAgLy8gVGhlc2Ugbm90aWZpY2F0aW9ucyBhbHdheXMgbmVlZCB0
byBiZSBzZW50IGJlY2F1c2Ugc2NyZWVucmVhZGVycyBhcmUgcmVsaWFudCBvbiB0aGVtIHRvIHBl
cmZvcm0uIAotICAgICAgICAvLyBJbiBvdGhlciB3b3JkcywgdGhleSBuZWVkIHRvIGJlIHNlbnQg
ZXZlbiB3aGVuIHRoZSBzY3JlZW4gcmVhZGVyIGhhcyBub3QgYWNjZXNzZWQgdGhpcyBsaXZlIHJl
Z2lvbiBzaW5jZSB0aGUgbGFzdCB1cGRhdGUuCi0KLSAgICAgICAgLy8gSWYgdGhpcyBlbGVtZW50
IHN1cHBvcnRzIEFSSUEgbGl2ZSByZWdpb25zLCB0aGVuIG5vdGlmeSB0aGUgQVQgb2YgY2hhbmdl
cy4KLSAgICAgICAgLy8gU29tZXRpbWVzIHRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBtYW55
IHRpbWVzIHdpdGhpbiBhIHNob3J0IHBlcmlvZCBvZiB0aW1lLCBsZWFkaW5nIHRvIHBvc3Rpbmcg
dG9vIG1hbnkgQVhMaXZlUmVnaW9uQ2hhbmdlZAotICAgICAgICAvLyBub3RpZmljYXRpb25zLiBU
byBmaXggdGhpcywgd2UgdXNlZCBhIHRpbWVyIHRvIG1ha2Ugc3VyZSB3ZSBvbmx5IHBvc3Qgb25l
IG5vdGlmaWNhdGlvbiBmb3IgdGhlIGNoaWxkcmVuIGNoYW5nZXMgd2l0aGluIGEgcHJlLWRlZmlu
ZWQKLSAgICAgICAgLy8gdGltZSBpbnRlcnZhbC4KLSAgICAgICAgaWYgKHBhcmVudC0+c3VwcG9y
dHNMaXZlUmVnaW9uKCkpCi0gICAgICAgICAgICBjYWNoZS0+cG9zdExpdmVSZWdpb25DaGFuZ2VO
b3RpZmljYXRpb24ocGFyZW50KTsKLSAgICAgICAgCi0gICAgICAgIC8vIElmIHRoaXMgZWxlbWVu
dCBpcyBhbiBBUklBIHRleHQgY29udHJvbCwgbm90aWZ5IHRoZSBBVCBvZiBjaGFuZ2VzLgotICAg
ICAgICBpZiAocGFyZW50LT5pc05vbk5hdGl2ZVRleHRDb250cm9sKCkpIHsKLSAgICAgICAgICAg
IGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKHBhcmVudCwgcGFyZW50LT5kb2N1bWVudCgpLCBBWE9i
amVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8v
IERvIG5vdCBsZXQgdGhlIHBhcmVudCB0aGF0J3MgYWJvdmUgdGhlIGVkaXRhYmxlIGFuY2VzdG9y
IHVwZGF0ZSBpdHMgY2hpbGRyZW4KLSAgICAgICAgICAgIC8vIHNpbmNlIHdlIGFscmVhZHkgbm90
aWZ5IHRoZSBBVCBvZiBjaGFuZ2VzLgotICAgICAgICAgICAgc2hvdWxkU3RvcFVwZGF0aW5nUGFy
ZW50ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLX0KLQogdm9pZCBBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6dXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUoKQogewotICAgIGJvb2wgaWdub3JlZFN0
YXR1cyA9IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKICAgICBtX3JvbGUgPSBkZXRlcm1pbmVB
Y2Nlc3NpYmlsaXR5Um9sZSgpOwotICAgIAotICAgIC8vIFRoZSBBWCBoaWVyYXJjaHkgb25seSBu
ZWVkcyB0byBiZSB1cGRhdGVkIGlmIHRoZSBpZ25vcmVkIHN0YXR1cyBvZiBhbiBlbGVtZW50IGhh
cyBjaGFuZ2VkLgotICAgIGlmIChpZ25vcmVkU3RhdHVzICE9IGFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSkKLSAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKCk7CiB9Ci0gICAgCisKIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpmaXJzdENoaWxkKCkgY29uc3QKIHsK
ICAgICBpZiAoIW5vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAppbmRleCA0MGE0MjlhNjAwMzVmMmViNDBlYzA5
YWJkOTM4OTVmMGU2YzU1YjZlLi5iNjc4NzljZWQ0OTg0N2JhYzVhYzY0NjU3MDAzNzBiYzIzMzNj
YzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdC5oCkBAIC0xMzEsNyArMTMxLDYgQEAgcHVibGljOgogICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQWNj
ZXNzaWJpbGl0eVJvbGUoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgaW5jcmVtZW50KCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAppbmRleCAxMzJlZmJjZmZjNDRhMWM3M2I4YzA2MTdiZTAzZjM2NmUyMmFhMDU0
Li5jODIzM2M4Yjc0YmUyMDhmMDllYTBkZjk0NThkMDk3ZjU0MWEyNDQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAg
LTMyNTcsMTQgKzMyNTcsMTQgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRMYXN0S25v
d25Jc0lnbm9yZWRWYWx1ZShib29sIGlzSWdub3JlZCkKICAgICBtX2xhc3RLbm93bklzSWdub3Jl
ZFZhbHVlID0gaXNJZ25vcmVkID8gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3Jl
T2JqZWN0IDogQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVjdDsKIH0K
IAotdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5nZWQo
KQorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNJZ25vcmVkVmFsdWVDaGFuZ2VkKCkKIHsK
ICAgICBib29sIGlzSWdub3JlZCA9IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKICAgICBpZiAo
bGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSAhPSBpc0lnbm9yZWQpIHsKLSAgICAgICAgaWYgKEFY
T2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpKQotICAgICAgICAgICAgY2FjaGUt
PmNoaWxkcmVuQ2hhbmdlZChwYXJlbnRPYmplY3QoKSk7CiAgICAgICAgIHNldExhc3RLbm93bklz
SWdub3JlZFZhbHVlKGlzSWdub3JlZCk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6cHJlc3NlZElz
UHJlc2VudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDRjMDZlNmJiNmY1YjE1NTZjMGY5NjRkNmNmOWIyYzBk
NzYzNGFhYjIuLmUxNzdkYmQxZDMxODQzOWQ2NmZiZDFhYzIzZTgyNDI0NDA5MzlkM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CkBAIC00ODcsOCArNDg3LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5jcmVtZW50KCkgb3ZlcnJp
ZGUgeyB9CiAgICAgdm9pZCBkZWNyZW1lbnQoKSBvdmVycmlkZSB7IH0KIAotICAgIHZvaWQgY2hp
bGRyZW5DaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5
Um9sZSgpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5
Um9sZSgpIHsgfQogICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRy
ZW4oYm9vbCB1cGRhdGVDaGlsZHJlbklmTmVlZGVkID0gdHJ1ZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgYWRkQ2hpbGQoQVhDb3JlT2Jq
ZWN0KiwgRGVzY2VuZElmSWdub3JlZCA9IERlc2NlbmRJZklnbm9yZWQ6Olllcykgb3ZlcnJpZGU7
CkBAIC02NDcsMTEgKzY0Niw5IEBAIHB1YmxpYzoKICAgICBJbnRSZWN0IHNjcm9sbFZpc2libGVD
b250ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJs
ZShjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgYm9vbCBsYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0
TGFzdEtub3duSXNJZ25vcmVkVmFsdWUoYm9vbCkgb3ZlcnJpZGU7Ci0KLSAgICAvLyBGaXJlcyBh
IGNoaWxkcmVuIGNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIHRoZSBwYXJlbnQgaWYgdGhlIGlzSWdu
b3JlZCB2YWx1ZSBjaGFuZ2VkLgotICAgIHZvaWQgbm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2Vk
KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBsYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSgpOworICAgIHZv
aWQgc2V0TGFzdEtub3duSXNJZ25vcmVkVmFsdWUoYm9vbCk7CisgICAgYm9vbCBoYXNJZ25vcmVk
VmFsdWVDaGFuZ2VkKCk7CiAKICAgICAvLyBBbGwgbWF0aCBlbGVtZW50cyByZXR1cm4gdHJ1ZSBm
b3IgaXNNYXRoRWxlbWVudCgpLgogICAgIGJvb2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCmluZGV4IGU4MjE2ODE0
ODc5Zjk1MDg2MGYwOTU2MjdmMDc2ZDAxMWQ1ZGRmMTguLjU1MzIxMTk4Y2U5Y2ZkYWIxNDk1ZTlh
ZjhmNzZkMDg0ZjIxOTU4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCkBAIC0xMjM0LDkgKzEy
MzQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudCgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGVjcmVtZW50KCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVu
Q2hhbmdlZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUo
KSA9IDA7Ci0KICAgICB2aXJ0dWFsIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
Y2hpbGRyZW4oYm9vbCB1cGRhdGVDaGlsZHJlbklmTmVlZGVkID0gdHJ1ZSkgPSAwOwogCiAgICAg
ZW51bSBjbGFzcyBEZXNjZW5kSWZJZ25vcmVkIDogdWludDhfdCB7CkBAIC0xMzkxLDEyICsxMzg4
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxWaXNpYmxlQ29udGVudFJl
Y3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoY29u
c3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dExhc3RLbm93bklzSWdub3JlZFZhbHVlKGJvb2wpID0gMDsKLQotICAgIC8vIEZpcmVzIGEgY2hp
bGRyZW4gY2hhbmdlZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBpZiB0aGUgaXNJZ25vcmVk
IHZhbHVlIGNoYW5nZWQuCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVlQ2hh
bmdlZCgpID0gMDsKLQogICAgIC8vIEFsbCBtYXRoIGVsZW1lbnRzIHJldHVybiB0cnVlIGZvciBp
c01hdGhFbGVtZW50KCkuCiAgICAgdmlydHVhbCBib29sIGlzTWF0aEVsZW1lbnQoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3QgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmlu
ZGV4IDhjN2FhODcyYjU0MGFlMmUzYjU3YWRlMmRjYzMxZDE5NTg1MGIzYzcuLmY3NWYwM2Q0MjBk
Njc5OWViYjgzMzUzZjU5MjY1NGNmMTY0MzUzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTQyOSw3ICs0MjksNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4oKQogICAgIC8vIHNlZSBidWc6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcwMDEKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHJvdyA6IG1fcm93cykgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNl
bGwgOiByb3ctPmNoaWxkcmVuKCkpCi0gICAgICAgICAgICBjZWxsLT51cGRhdGVBY2Nlc3NpYmls
aXR5Um9sZSgpOworICAgICAgICAgICAgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oKmNl
bGwpLnVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuY3BwCmluZGV4IDczYWVmYWVjNzM0YjVjNWI2MDdiY2FjYWRlNjIyMWRhNmZjMjlh
NWYuLjYzZTE2NDJjOTFkYTNmNThkMmM1YmM1YWY2NzRlMmU1YmMwMTU5NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0yMTI3LDE2ICsyMTI3LDYgQEAgU2Nyb2xsVmlldyogQVhJ
c29sYXRlZE9iamVjdDo6c2Nyb2xsVmlld0FuY2VzdG9yKCkgY29uc3QKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpjaGlsZHJlbkNoYW5nZWQoKQotewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnVw
ZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQogdm9pZCBBWElzb2xhdGVkT2JqZWN0OjphZGRDaGlsZHJlbigpCiB7CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC0yMzEyLDIyICsyMzAyLDYgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0
OjpzY3JvbGxUb01ha2VWaXNpYmxlKGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJikg
Y28KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotYm9vbCBBWElzb2xhdGVkT2JqZWN0
OjpsYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSgpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldExhc3RL
bm93bklzSWdub3JlZFZhbHVlKGJvb2wpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6bm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCkK
LXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogYm9vbCBBWElzb2xhdGVkT2JqZWN0
Ojppc01hdGhTY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlKSBj
b25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5o
CmluZGV4IDRkN2JiODAzZTI0ZWFjNjdhNjBmMjI5YzMyOGVlOWUzZmI2ZTBlOTAuLjk2M2Q4MTU1
MTNiMzI4MmFmY2I4YjcxYTY5YzcwZjliNzM3ODhhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0
LmgKQEAgLTYwNCw4ICs2MDQsNiBAQCBwcml2YXRlOgogICAgIERvY3VtZW50KiB0b3BEb2N1bWVu
dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcoKSBjb25zdCBv
dmVycmlkZTsKICAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3QW5jZXN0b3IoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgdXBk
YXRlQWNjZXNzaWJpbGl0eVJvbGUoKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZENoaWxkcmVuKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRDaGlsZChBWENvcmVPYmplY3QqLCBEZXNjZW5kSWZJZ25v
cmVkID0gRGVzY2VuZElmSWdub3JlZDo6WWVzKSBvdmVycmlkZTsKICAgICB2b2lkIGluc2VydENo
aWxkKEFYQ29yZU9iamVjdCosIHVuc2lnbmVkLCBEZXNjZW5kSWZJZ25vcmVkID0gRGVzY2VuZElm
SWdub3JlZDo6WWVzKSBvdmVycmlkZTsKQEAgLTYzNyw5ICs2MzUsNiBAQCBwcml2YXRlOgogICAg
IEludFNpemUgc2Nyb2xsQ29udGVudHNTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSW50UmVj
dCBzY3JvbGxWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNj
cm9sbFRvTWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25z
dCBvdmVycmlkZTsKLSAgICBib29sIGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBzZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKSBvdmVycmlkZTsKLSAg
ICB2b2lkIG5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIGJvb2wg
aXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZSkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmls
aXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBp
c0FYSGlkZGVuKCkgY29uc3Qgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442913</attachid>
            <date>2021-10-30 11:53:54 -0700</date>
            <delta_ts>2021-10-31 06:41:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232503-20211030145353.patch</filename>
            <type>text/plain</type>
            <size>27324</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIxN2JjMjBlOGE1OGE3
NWYzZWRjYjY1NjRjOWI2MmJlYTBjZTA3ZS4uMTg1ODU4YmQ4NmIwYzE1NTFjN2Y1MjE4NjZhODE5
YTdjMWRlNDY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTEwLTI5ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGhhbmRs
aW5nIG9mIENoaWxkcmVuQ2hhbmdlZCBub3RpZmljYXRpb25zIG91dCBvZiB0aGUgQWNjZXNzaWJp
bGl0eU9iamVjdHMgaW50byBBWE9iamVjdENhY2hlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNTAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NDgyMDE1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAg
ICBDaGlsZHJlbkNoYW5nZWQgbm90aWZpY2F0aW9ucyB3ZXJlIGhhbmRsZWQgaW4KKyAgICAgICAg
QVhPYmplY3RDYWNoZTo6cGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUgYnkgY2FsbGluZyBpbnRv
IGFuIEFYIG9iamVjdAorICAgICAgICBtZXRob2QuIFdoaWxlIGluIHByaW5jaXBsZSB0aGlzIG1h
eSBzZWVtIGFzIGEgZ29vZCBkZXNpZ24sIGl0IG9ic2N1cmVzCisgICAgICAgIHNpZ25pZmljYW50
bHkgd2hhdCBleGFjdGx5IGhhcHBlbnMgaW4gcmVzcG9uc2UgdG8gYSBub3RpZmljYXRpb24uIFRo
aXMKKyAgICAgICAgaXMgYWdncmF2YXRlZCBieSB0aGUgZmFjdCB0aGF0IHRoZSBvYmplY3QncyBo
YW5kbGVycyBtYXkgY2FsbCBiYWNrIGludG8KKyAgICAgICAgdGhlIEFYT2JqZWN0Q2FjaGUgdG8g
cG9zdCBvciBmdXJ0aGVyIGRlZmVyIG5vdGlmaWNhdGlvbnMgdG8gcGxhdGZvcm0KKyAgICAgICAg
Y2xpZW50cy4KKyAgICAgICAgVGhpcyBwYXRjaCBhdGVtcHRzIHRvIHN0cmFpZ2h0bGluZSB0aGlz
IGZsb3cgYnkgaGFuZGxpbmcgdGhlCisgICAgICAgIENoaWxkcmVuQ2hhbmdlZCBub3RpZmljYXRp
b25zIGluIEFYT2JqZWN0Q2FjaGUuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6dGV4dENoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlQ2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgVGhlIG5hbWUgaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyB0aGUgYWN0dWFsIGhh
bmRsZXIgZm9yIHRoZSBub3RpZmljYXRpb24KKyAgICAgICAgYXMgb3Bwb3NlZCBhcyB0aGUgb3Ro
ZXIgY2hpbGRyZW5DaGFuZ2VkKC4uLikgbWV0aG9kcyB0aGF0IGp1c3QgcXVldWUKKyAgICAgICAg
dGhlIG5vdGlmaWNhdGlvbnMgZm9yIGEgbGF0ZXIgdGltZS4KKworICAgICAgICAoV2ViQ29yZTo6
QVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFSb2xlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQpOgorICAgICAgICAoV2ViQ29yZTo6
QVhPYmplY3RDYWNoZTo6cGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlN
ZW51TGlzdDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgRGVsZXRlZCwgbm93IGhhbmRsZWQg
aW4gQVhPYmplY3RDYWNoZTo6aGFuZGxlQ2hpbGRyZW5DaGFuZ2VkLgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6aGFuZGxlQ2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjpjaGlsZHJlbkNoYW5nZWQpOgor
ICAgICAgICBSZW5hbWVkIGhhbmRsZUNoaWxkcmVuQ2hhbmdlZC4gSXQgaXMgdGhlIG9ubHkgQVhP
YmplY3Qgc3ViY2xhc3MgdGhhdAorICAgICAgICBzdGlsbCBoYXMgdGhpcyBtZXRob2QgdG8gdXBk
YXRlIGl0cyBjaGlsZHJlbi4gSXQgZG9lcyBub3QgcG9zdCBvcgorICAgICAgICBzY2hlZHVsZSBh
bnkgcGxhdGZvcm0gY2xpZW50IG5vdGlmaWNhdGlvbi4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojp1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hpbGRyZW5DaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Lmg6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc0lnbm9yZWRWYWx1ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bm90aWZ5SWZJZ25vcmVkVmFsdWVD
aGFuZ2VkKToKKyAgICAgICAgUmVuYW1lZCBoYXNJZ25vcmVkVmFsdWVDaGFuZ2VkIHNpbmNlIHRo
ZSBhY3R1YWwgbm90aWZpY2F0aW9ucyBhcmUgcG9zdGVkCisgICAgICAgIGluIEFYT2JqZWN0Q2Fj
aGUuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnVwZGF0ZUFjY2Vzc2liaWxpdHlS
b2xlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZh
Y2UuaDoKKyAgICAgICAgU2V2ZXJhbCBtZXRob2RzIGNhbiBub3cgYmUgcmVtb3ZlZCBmcm9tIHRo
ZSBBWENvcmVPYmplY3QgaW50ZXJmYWNlIHNpbmNlCisgICAgICAgIHRoZXkgYXJlIGludGVybmFs
IHRvIHRoZSBBWE9iamVjdCBjbGFzcyBoaWVyYXJjaHkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5VGFibGU6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKyAgICAgICAgTm93IGFibGUgdG8gZGVsZXRlIHNl
dmVyYWwgdW5uZWNlc3NhcnkgbWV0aG9kcyBmcm9tIHRoZSBpc29sYXRlZCBvYmplY3RzLgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y2hpbGRyZW5DaGFuZ2VkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnVwZGF0ZUFjY2Vzc2liaWxp
dHlSb2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omxh
c3RLbm93bklzSWdub3JlZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRPYmplY3Q6OnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Om5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdl
ZCk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5oOgorCiAyMDIxLTEwLTI3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25A
d2Via2l0Lm9yZz4KIAogICAgICAgICBFbGltaW5hdGUgZHVwbGljYXRlZCBwbGF0Zm9ybS1zcGVj
aWZpYyBjb2RlIGluIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBlM2YxOGI5MWM2ODczZTRlNGIy
MzY0ZDY0YjA1NjU1ZTRkOTA1MjMxLi43NGRhYTg4NTI0ZmU2NWM1NTZjYTI1ZGUxYzI2NGRjMTBh
M2U5Mzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAKQEAgLTk4OCw4ICs5ODgsOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRDaGFuZ2Vk
KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKIAogICAgIHBvc3ROb3RpZmljYXRpb24ob2Jq
ZWN0LCBvYmplY3QtPmRvY3VtZW50KCksIEFYVGV4dENoYW5nZWQpOwogCi0gICAgaWYgKG9iamVj
dC0+cGFyZW50T2JqZWN0SWZFeGlzdHMoKSkKLSAgICAgICAgb2JqZWN0LT5ub3RpZnlJZklnbm9y
ZWRWYWx1ZUNoYW5nZWQoKTsKKyAgICBpZiAob2JqZWN0LT5wYXJlbnRPYmplY3RJZkV4aXN0cygp
ICYmIG9iamVjdC0+aGFzSWdub3JlZFZhbHVlQ2hhbmdlZCgpKQorICAgICAgICBjaGlsZHJlbkNo
YW5nZWQob2JqZWN0LT5wYXJlbnRPYmplY3QoKSk7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6
dXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVkKE5vZGUqIG5vZGUpCkBAIC05OTksNiArOTk5
LDUzIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dXBkYXRlQ2FjaGVBZnRlck5vZGVJc0F0dGFjaGVk
KE5vZGUqIG5vZGUpCiAgICAgZ2V0KG5vZGUpOwogfQogCit2b2lkIEFYT2JqZWN0Q2FjaGU6Omhh
bmRsZUNoaWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCit7CisgICAg
Ly8gSGFuZGxlIE1lbnVMaXN0cyBhbmQgTWVudUxpc3RQb3B1cHMgYXMgc3BlY2lhbCBjYXNlcy4K
KyAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eU1lbnVMaXN0PihvYmplY3QpKSB7CisgICAgICAgIGF1
dG8mIGNoaWxkcmVuID0gb2JqZWN0LmNoaWxkcmVuKGZhbHNlKTsKKyAgICAgICAgaWYgKGNoaWxk
cmVuLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQoY2hp
bGRyZW4uc2l6ZSgpID09IDEgJiYgaXM8QWNjZXNzaWJpbGl0eU9iamVjdD4oKmNoaWxkcmVuWzBd
KSk7CisgICAgICAgIGhhbmRsZUNoaWxkcmVuQ2hhbmdlZChkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
T2JqZWN0PigqY2hpbGRyZW5bMF0pKTsKKyAgICB9IGVsc2UgaWYgKGlzPEFjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwPihvYmplY3QpKSB7CisgICAgICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwPihvYmplY3QpLmhhbmRsZUNoaWxkcmVuQ2hhbmdlZCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gVGhpcyBtZXRob2QgaXMgbWVhbnQgYXMgYSBxdWljayB3
YXkgb2YgbWFya2luZyBhIHBvcnRpb24gb2YgdGhlIGFjY2Vzc2liaWxpdHkgdHJlZSBkaXJ0eS4K
KyAgICBpZiAoIW9iamVjdC5ub2RlKCkgJiYgIW9iamVjdC5yZW5kZXJlcigpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwb3N0Tm90aWZpY2F0aW9uKCZvYmplY3QsIG9iamVjdC5kb2N1bWVudCgp
LCBBWENoaWxkcmVuQ2hhbmdlZCk7CisKKyAgICAvLyBTaG91bGQgbWFrZSB0aGUgc3VidHJlZSBk
aXJ0eSBzbyB0aGF0IGV2ZXJ5dGhpbmcgYmVsb3cgd2lsbCBiZSB1cGRhdGVkIGNvcnJlY3RseS4K
KyAgICBvYmplY3Quc2V0TmVlZHNUb1VwZGF0ZVN1YnRyZWUoKTsKKworICAgIC8vIEdvIHVwIHRo
ZSBleGlzdGluZyBhbmNlc3RvcnMgY2hhaW4gYW5kIGZpcmUgdGhlIGFwcHJvcHJpYXRlIG5vdGlm
aWNhdGlvbnMuCisgICAgYm9vbCBzaG91bGRVcGRhdGVQYXJlbnQgPSB0cnVlOworICAgIGZvciAo
YXV0byogcGFyZW50ID0gJm9iamVjdDsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9i
amVjdElmRXhpc3RzKCkpIHsKKyAgICAgICAgaWYgKHNob3VsZFVwZGF0ZVBhcmVudCkKKyAgICAg
ICAgICAgIHBhcmVudC0+c2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgLy8g
SWYgdGhpcyBvYmplY3Qgc3VwcG9ydHMgQVJJQSBsaXZlIHJlZ2lvbnMsIHRoZW4gbm90aWZ5IEFU
IG9mIGNoYW5nZXMuCisgICAgICAgIC8vIFRoaXMgbm90aWZpY2F0aW9uIG5lZWQgdG8gYmUgc2Vu
dCBldmVuIHdoZW4gdGhlIHNjcmVlbiByZWFkZXIgaGFzIG5vdCBhY2Nlc3NlZCB0aGlzIGxpdmUg
cmVnaW9uIHNpbmNlIHRoZSBsYXN0IHVwZGF0ZS4KKyAgICAgICAgLy8gU29tZXRpbWVzIHRoaXMg
ZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBtYW55IHRpbWVzIHdpdGhpbiBhIHNob3J0IHBlcmlvZCBv
ZiB0aW1lLCBsZWFkaW5nIHRvIHBvc3RpbmcgdG9vIG1hbnkgQVhMaXZlUmVnaW9uQ2hhbmdlZCBu
b3RpZmljYXRpb25zLgorICAgICAgICAvLyBUbyBmaXggdGhpcywgd2UgdXNlIGEgdGltZXIgdG8g
bWFrZSBzdXJlIHdlIG9ubHkgcG9zdCBvbmUgbm90aWZpY2F0aW9uIGZvciB0aGUgY2hpbGRyZW4g
Y2hhbmdlcyB3aXRoaW4gYSBwcmUtZGVmaW5lZCB0aW1lIGludGVydmFsLgorICAgICAgICBpZiAo
cGFyZW50LT5zdXBwb3J0c0xpdmVSZWdpb24oKSkKKyAgICAgICAgICAgIHBvc3RMaXZlUmVnaW9u
Q2hhbmdlTm90aWZpY2F0aW9uKHBhcmVudCk7CisKKyAgICAgICAgLy8gSWYgdGhpcyBvYmplY3Qg
aXMgYW4gQVJJQSB0ZXh0IGNvbnRyb2wsIG5vdGlmeSB0aGF0IGl0cyB2YWx1ZSBjaGFuZ2VkLgor
ICAgICAgICBpZiAocGFyZW50LT5pc05vbk5hdGl2ZVRleHRDb250cm9sKCkpIHsKKyAgICAgICAg
ICAgIHBvc3ROb3RpZmljYXRpb24ocGFyZW50LCBwYXJlbnQtPmRvY3VtZW50KCksIEFYVmFsdWVD
aGFuZ2VkKTsKKworICAgICAgICAgICAgLy8gRG8gbm90IGxldCBhbnkgYW5jZXN0b3Igb2YgYW4g
ZWRpdGFibGUgb2JqZWN0IHVwZGF0ZSBpdHMgY2hpbGRyZW4uCisgICAgICAgICAgICBzaG91bGRV
cGRhdGVQYXJlbnQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBBWE9iamVj
dENhY2hlOjpoYW5kbGVNZW51T3BlbmVkKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlIHx8
ICFub2RlLT5yZW5kZXJlcigpIHx8ICFub2RlSGFzUm9sZShub2RlLCAibWVudSIpKQpAQCAtMTAy
OSw3ICsxMDc2LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJlbkNoYW5nZWQoTm9kZSog
bm9kZSwgTm9kZSogbmV3Q2hpbGQpCiAgICAgaWYgKG5ld0NoaWxkKQogICAgICAgICBtX2RlZmVy
cmVkQ2hpbGRyZW5DaGFuZ2VkTm9kZUxpc3QuYWRkKG5ld0NoaWxkKTsKIAotICAgIGNoaWxkcmVu
Q2hhbmdlZChnZXQobm9kZSkpOworICAgIGlmIChhdXRvKiBvYmplY3QgPSBnZXQobm9kZSkpCisg
ICAgICAgIG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRMaXN0LmFkZChvYmplY3QpOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBSZW5kZXJPYmplY3QqIG5ld0NoaWxkKQpAQCAtMTA0MCwxNSArMTA4OCwxNCBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmNoaWxkcmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5k
ZXJPYmplY3QqIG5ld0NoaQogICAgIGlmIChuZXdDaGlsZCAmJiBuZXdDaGlsZC0+bm9kZSgpKQog
ICAgICAgICBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTm9kZUxpc3QuYWRkKG5ld0NoaWxkLT5u
b2RlKCkpOwogCi0gICAgY2hpbGRyZW5DaGFuZ2VkKGdldChyZW5kZXJlcikpOworICAgIGlmIChh
dXRvKiBvYmplY3QgPSBnZXQocmVuZGVyZXIpKQorICAgICAgICBtX2RlZmVycmVkQ2hpbGRyZW5D
aGFuZ2VkTGlzdC5hZGQob2JqZWN0KTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpjaGlsZHJl
bkNoYW5nZWQoQVhDb3JlT2JqZWN0KiBvYmopCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmNoaWxkcmVu
Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgaWYgKCFvYmopCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRMaXN0LmFkZChv
YmopOworICAgIGlmIChvYmplY3QpCisgICAgICAgIG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRM
aXN0LmFkZChvYmplY3QpOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBv
c3RUaW1lckZpcmVkKCkKQEAgLTEwOTUsMTMgKzExNDIsMTUgQEAgdm9pZCBBWE9iamVjdENhY2hl
Ojpub3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCgpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bm90ZS5zZWNvbmQgPT0gQVhDaGlsZHJlbkNoYW5nZWQgJiYgbm90ZS5maXJzdC0+cGFyZW50T2Jq
ZWN0SWZFeGlzdHMoKQotICAgICAgICAgICAgJiYgbm90ZS5maXJzdC0+bGFzdEtub3duSXNJZ25v
cmVkVmFsdWUoKSAhPSBub3RlLmZpcnN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAg
ICAgICAgICBjaGlsZHJlbkNoYW5nZWQobm90ZS5maXJzdC0+cGFyZW50T2JqZWN0KCkpOworICAg
ICAgICAgICAgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oKm5vdGUuZmlyc3QpLmxh
c3RLbm93bklzSWdub3JlZFZhbHVlKCkgIT0gbm90ZS5maXJzdC0+YWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpKQorICAgICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlPYmplY3Q+KG5vdGUuZmlyc3QtPnBhcmVudE9iamVjdCgpKSk7CiAKICAgICAgICAgbm90aWZp
Y2F0aW9uc1RvUG9zdC5hcHBlbmQobm90ZSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKEFDQ0VTU0lC
SUxJVFlfSVNPTEFURURfVFJFRSkKKyAgICAvLyBGSVhNRTogdGhpcyB1cGRhdGVJc29sYXRlZFRy
ZWUgaGVyZSBtYXkgYmUgcHJlbWF0dXJlIGluIHNvbWUgY2FzZXMuCisgICAgLy8gRS5nLiwgaWYg
dGhlIGNoaWxkcmVuQ2hhbmdlZCBhYm92ZSBpcyBoaXQsIHdlIHNob3VsZCB1cGRhdGVJc29sYXRl
ZFRyZWUgYWZ0ZXIgcGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUuCiAgICAgdXBkYXRlSXNvbGF0
ZWRUcmVlKG5vdGlmaWNhdGlvbnNUb1Bvc3QpOwogI2VuZGlmCiAKQEAgLTE3MTgsMTQgKzE3Njcs
MTUgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBcmlhUm9sZUNoYW5nZWQoTm9kZSogbm9k
ZSkKICAgICBzdG9wQ2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRlcygpOwogCiAgICAgLy8g
RG9uJ3QgbWFrZSBhbiBBWCBvYmplY3QgdW5sZXNzIGl0J3MgbmVlZGVkCi0gICAgaWYgKGF1dG8q
IG9iaiA9IGdldChub2RlKSkgewotICAgICAgICBvYmotPnVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xl
KCk7CisgICAgaWYgKGF1dG8qIG9iamVjdCA9IGdldChub2RlKSkgeworICAgICAgICBvYmplY3Qt
PnVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCk7CisKKyAgICAgICAgaWYgKG9iamVjdC0+aGFzSWdu
b3JlZFZhbHVlQ2hhbmdlZCgpKQorICAgICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKG9iamVjdC0+
cGFyZW50T2JqZWN0KCkpOwogCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJF
RSkKLSAgICAgICAgdXBkYXRlSXNvbGF0ZWRUcmVlKG9iaiwgQVhPYmplY3RDYWNoZTo6QVhBcmlh
Um9sZUNoYW5nZWQpOworICAgICAgICB1cGRhdGVJc29sYXRlZFRyZWUob2JqZWN0LCBBWE9iamVj
dENhY2hlOjpBWEFyaWFSb2xlQ2hhbmdlZCk7CiAjZW5kaWYKLQotICAgICAgICBvYmotPm5vdGlm
eUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpOwogICAgIH0KIH0KIApAQCAtMTg2NCwxNCArMTkxNCwx
OCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmxhYmVsQ2hhbmdlZChFbGVtZW50KiBlbGVtZW50KQog
CiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlY29tcHV0ZUlzSWdub3JlZChSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKQogewotICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBnZXQocmVuZGVy
ZXIpKQotICAgICAgICBvYmotPm5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpOworICAgIGlm
IChhdXRvKiBvYmplY3QgPSBnZXQocmVuZGVyZXIpKSB7CisgICAgICAgIGlmIChvYmplY3QtPmhh
c0lnbm9yZWRWYWx1ZUNoYW5nZWQoKSkKKyAgICAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZChvYmpl
Y3QtPnBhcmVudE9iamVjdCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVj
b21wdXRlSXNJZ25vcmVkKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iaiA9IGdldChub2RlKSkKLSAgICAgICAgb2JqLT5ub3RpZnlJZklnbm9yZWRWYWx1ZUNo
YW5nZWQoKTsKKyAgICBpZiAoYXV0byogb2JqZWN0ID0gZ2V0KG5vZGUpKSB7CisgICAgICAgIGlm
IChvYmplY3QtPmhhc0lnbm9yZWRWYWx1ZUNoYW5nZWQoKSkKKyAgICAgICAgICAgIGNoaWxkcmVu
Q2hhbmdlZChvYmplY3QtPnBhcmVudE9iamVjdCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0
YXRlcygpCkBAIC0zMTY2LDEwICszMjIwLDEyIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cGVyZm9y
bUNhY2hlVXBkYXRlVGltZXJGaXJlZCgpCiAgICAgLy8gSWYgdGhlcmUncyBhIHBlbmRpbmcgbGF5
b3V0LCBsZXQgdGhlIGxheW91dCB0cmlnZ2VyIHRoZSBBWCB1cGRhdGUuCiAgICAgaWYgKCFkb2N1
bWVudCgpLnZpZXcoKSB8fCBkb2N1bWVudCgpLnZpZXcoKS0+bmVlZHNMYXlvdXQoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIAorCiAgICAgcGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKTsKKyAg
ICAvLyBGSVhNRTogbmVlZCB0byB1cGRhdGUgdGhlIGlzb2xhdGVkIHRyZWUgYWZ0ZXIgdGhlIGFi
b3ZlIGNhY2hlIHVwZGF0ZS4KKyAgICAvLyBUaGlzIGlzIG1vc3QgbGlrZWx5IHRoZSBjYXVzZSBv
ZiBwcm9ibGVtcyB3aXRoIHRoZSBpc29sYXRlZCB0cmVlIHVwZGF0ZXMuLgogfQotICAgIAorCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCkKIHsKICAgICBB
WFRSQUNFKCJBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSIpOwpAQCAt
MzE4NSw3ICszMjQxLDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJyZWRDYWNo
ZVVwZGF0ZSgpCiAgICAgbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdlZE5vZGVMaXN0LmNsZWFyKCk7
CiAKICAgICBmb3IgKGF1dG8mIGNoaWxkIDogbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdlZExpc3Qp
Ci0gICAgICAgIGNoaWxkLT5jaGlsZHJlbkNoYW5nZWQoKTsKKyAgICAgICAgaGFuZGxlQ2hpbGRy
ZW5DaGFuZ2VkKCpjaGlsZCk7CiAgICAgbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdlZExpc3QuY2xl
YXIoKTsKIAogICAgIGZvciAoYXV0byogbm9kZSA6IG1fZGVmZXJyZWRUZXh0Q2hhbmdlZExpc3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDM1
YWM5NTdjYmVhNGI1YjdlMjMzZjk0OWY1NzBhOWUxYzgzOGMxMTYuLmU5ZmQyMzE0ZDlkMGY5YzM1
OWNiNTBlZDJmMTI4MTA2MGE1NGE1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oCkBAIC0xODQsNyArMTg0LDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoK
ICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChOb2RlKiwgTm9kZSogbmV3Q2hpbGQgPSBudWxscHRy
KTsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3Qq
IG5ld0NoaWxkID0gbnVsbHB0cik7Ci0gICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoQVhDb3JlT2Jq
ZWN0Kik7CisgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCopOwog
ICAgIHZvaWQgY2hlY2tlZFN0YXRlQ2hhbmdlZChOb2RlKik7CiAgICAgLy8gQ2FsbGVkIHdoZW4g
YSBub2RlIGhhcyBqdXN0IGJlZW4gYXR0YWNoZWQsIHNvIHdlIGNhbiBtYWtlIHN1cmUgd2UgaGF2
ZSB0aGUgcmlnaHQgc3ViY2xhc3Mgb2YgQWNjZXNzaWJpbGl0eU9iamVjdC4KICAgICB2b2lkIHVw
ZGF0ZUNhY2hlQWZ0ZXJOb2RlSXNBdHRhY2hlZChOb2RlKik7CkBAIC00NjEsNiArNDYxLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGVucXVldWVQYXNzd29yZFZhbHVlQ2hhbmdlTm90aWZpY2F0aW9u
KEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKICAgICB2b2lkIHBhc3N3b3JkTm90aWZpY2F0aW9uUG9z
dFRpbWVyRmlyZWQoKTsKIAorICAgIHZvaWQgaGFuZGxlQ2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2li
aWxpdHlPYmplY3QmKTsKICAgICB2b2lkIGhhbmRsZU1lbnVPcGVuZWQoTm9kZSopOwogICAgIHZv
aWQgaGFuZGxlTGl2ZVJlZ2lvbkNyZWF0ZWQoTm9kZSopOwogICAgIHZvaWQgaGFuZGxlTWVudUl0
ZW1TZWxlY3RlZChOb2RlKik7CkBAIC01MTksNyArNTIwLDcgQEAgcHJpdmF0ZToKICAgICBXZWFr
SGFzaFNldDxFbGVtZW50PiBtX2RlZmVycmVkUmVjb21wdXRlSXNJZ25vcmVkTGlzdDsKICAgICBM
aXN0SGFzaFNldDxOb2RlKj4gbV9kZWZlcnJlZFRleHRDaGFuZ2VkTGlzdDsKICAgICBXZWFrSGFz
aFNldDxFbGVtZW50PiBtX2RlZmVycmVkU2VsZWN0ZWRDaGlsZHJlZENoYW5nZWRMaXN0OwotICAg
IExpc3RIYXNoU2V0PFJlZlB0cjxBWENvcmVPYmplY3Q+PiBtX2RlZmVycmVkQ2hpbGRyZW5DaGFu
Z2VkTGlzdDsKKyAgICBMaXN0SGFzaFNldDxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IG1f
ZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRMaXN0OwogICAgIExpc3RIYXNoU2V0PE5vZGUqPiBtX2Rl
ZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTm9kZUxpc3Q7CiAgICAgV2Vha0hhc2hTZXQ8RWxlbWVudD4g
bV9kZWZlcnJlZE1vZGFsQ2hhbmdlZExpc3Q7CiAgICAgV2Vha0hhc2hTZXQ8RWxlbWVudD4gbV9k
ZWZlcnJlZE1lbnVMaXN0Q2hhbmdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCmluZGV4IDg3MmViODY2ODcxOTU4Zjdl
MWVkYmIwNTdhYzkzYTIyZGRjNTE2ZWYuLjljMzIwYzJkYmViZGFhOTdlN2NmOTRmNWQzNzJlNGQ3
YWU0MmQwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKQEAgLTg2LDE1ICs4Niw2IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eU1lbnVMaXN0OjphZGRDaGlsZHJlbigpCiAgICAgbGlzdC0+YWRkQ2hpbGRyZW4oKTsKIH0K
IAotdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmNoaWxkcmVuQ2hhbmdlZCgpCi17Ci0gICAg
aWYgKG1fY2hpbGRyZW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQo
bV9jaGlsZHJlbi5zaXplKCkgPT0gMSk7Ci0gICAgbV9jaGlsZHJlblswXS0+Y2hpbGRyZW5DaGFu
Z2VkKCk7Ci19Ci0KIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0Ojppc0NvbGxhcHNlZCgpIGNv
bnN0CiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaAppbmRleCBmYzYwMmFhMGJj
ZjQyZDNiZjAwZWIwZjk4ZWJmMThhMDBiYzBkMzkyLi41OTlhNzk4NmQ5ZGE0Mjg5YjYwYjNhM2Rm
MzM3NzBlYTczYzZlZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmgKQEAgLTQ4LDcgKzQ4LDYgQEAgcHJpdmF0ZToKICAg
ICBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoKSBvdmVy
cmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAK
aW5kZXggNWNkMGJhNjdiYmExYzJjOGY2Y2RhYzJkY2YwYmRjYzA0MDVlNzU0Yy4uNDY5ZGY4ZjMw
OGU5ZTQ3MGJjYjhmZDBjZmE0OTA3Yjk5ZDJhYzMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAK
QEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjphZGRD
aGlsZHJlbigpCiAgICAgfQogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjpj
aGlsZHJlbkNoYW5nZWQoKQordm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6aGFuZGxl
Q2hpbGRyZW5DaGFuZ2VkKCkKIHsKICAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0
Q2FjaGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gbV9jaGlsZHJlbi5zaXplKCk7IGkgPiAwIDsg
LS1pKSB7CkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1
cDo6Y2hpbGRyZW5DaGFuZ2VkKCkKICAgICAgICAgICAgIGNhY2hlLT5yZW1vdmUoY2hpbGQtPm9i
amVjdElEKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgbV9jaGlsZHJlbi5jbGVh
cigpOwogICAgIG1fY2hpbGRyZW5Jbml0aWFsaXplZCA9IGZhbHNlOwogICAgIGFkZENoaWxkcmVu
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlNZW51TGlzdFBvcHVwLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNZW51TGlzdFBvcHVwLmgKaW5kZXggM2NhM2Q1MmUzNGUxYmI0ZDc4YzUzNTNjYWYzYzA1
NTIxNzg4NzEyZi4uZjM0MzQyZTc0MjQ2MjM5YmQ3NzAwNzAzYjFiYWNhNmFkNGRlNmI1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxp
c3RQb3B1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0UG9wdXAuaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBBY2Nlc3NpYmlsaXR5TWVu
dUxpc3RPcHRpb247CiBjbGFzcyBIVE1MRWxlbWVudDsKIAogY2xhc3MgQWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXAgZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QgeworICAg
IGZyaWVuZCBjbGFzcyBBWE9iamVjdENhY2hlOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNj
ZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXApOyB9CiAKQEAgLTUzLDcgKzU0LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgcHJlc3Mo
KSBvdmVycmlkZTsKICAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBj
aGlsZHJlbkNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZUNoaWxkcmVuQ2hhbmdl
ZCgpOwogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbiogbWVudUxpc3RPcHRpb25B
Y2Nlc3NpYmlsaXR5T2JqZWN0KEhUTUxFbGVtZW50KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmlu
ZGV4IGExMjNmOWM2YmFkNjZhMTUxODNiMTYzYmYxMjkwM2FiYjRkNmFjMjYuLjc1ODYzMjQ4M2E0
ZDI5ZDg0MGMyNmYxNWYyMGEwZWMxY2ZiNjliZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC0xMTYs
NjEgKzExNiwxMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpkZXRhY2hSZW1vdGVQ
YXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUgZGV0YQogICAgIG1fbm9kZSA9IG51bGxw
dHI7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCgp
Ci17Ci0gICAgLy8gVGhpcyBtZXRob2QgaXMgbWVhbnQgYXMgYSBxdWljayB3YXkgb2YgbWFya2lu
ZyBhIHBvcnRpb24gb2YgdGhlIGFjY2Vzc2liaWxpdHkgdHJlZSBkaXJ0eS4KLSAgICBpZiAoIW5v
ZGUoKSAmJiAhcmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVhPYmplY3RDYWNo
ZSogY2FjaGUgPSBheE9iamVjdENhY2hlKCk7Ci0gICAgaWYgKCFjYWNoZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKHRoaXMsIGRvY3VtZW50KCksIEFYT2Jq
ZWN0Q2FjaGU6OkFYQ2hpbGRyZW5DaGFuZ2VkKTsKLSAgICAKLSAgICAvLyBTaG91bGQgbWFrZSB0
aGUgc3ViIHRyZWUgZGlydHkgc28gdGhhdCBldmVyeXRoaW5nIGJlbG93IHdpbGwgYmUgdXBkYXRl
ZCBjb3JyZWN0bHkuCi0gICAgdGhpcy0+c2V0TmVlZHNUb1VwZGF0ZVN1YnRyZWUoKTsKLSAgICBi
b29sIHNob3VsZFN0b3BVcGRhdGluZ1BhcmVudCA9IGZhbHNlOwotCi0gICAgLy8gR28gdXAgdGhl
IGFjY2Vzc2liaWxpdHkgcGFyZW50IGNoYWluLCBidXQgb25seSBpZiB0aGUgZWxlbWVudCBhbHJl
YWR5IGV4aXN0cy4gVGhpcyBtZXRob2QgaXMKLSAgICAvLyBjYWxsZWQgZHVyaW5nIHJlbmRlciBs
YXlvdXRzLCBtaW5pbWFsIHdvcmsgc2hvdWxkIGJlIGRvbmUuIAotICAgIC8vIElmIEFYIGVsZW1l
bnRzIGFyZSBjcmVhdGVkIG5vdywgdGhleSBjb3VsZCBpbnRlcnJvZ2F0ZSB0aGUgcmVuZGVyIHRy
ZWUgd2hpbGUgaXQncyBpbiBhIGZ1bmt5IHN0YXRlLgotICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUs
IHByb2Nlc3MgQVJJQSBsaXZlIHJlZ2lvbiBjaGFuZ2VzLgotICAgIGZvciAoQWNjZXNzaWJpbGl0
eU9iamVjdCogcGFyZW50ID0gdGhpczsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9i
amVjdElmRXhpc3RzKCkpIHsKLSAgICAgICAgaWYgKCFzaG91bGRTdG9wVXBkYXRpbmdQYXJlbnQp
Ci0gICAgICAgICAgICBwYXJlbnQtPnNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpOwotICAgICAg
ICAKLQotICAgICAgICAvLyBUaGVzZSBub3RpZmljYXRpb25zIGFsd2F5cyBuZWVkIHRvIGJlIHNl
bnQgYmVjYXVzZSBzY3JlZW5yZWFkZXJzIGFyZSByZWxpYW50IG9uIHRoZW0gdG8gcGVyZm9ybS4g
Ci0gICAgICAgIC8vIEluIG90aGVyIHdvcmRzLCB0aGV5IG5lZWQgdG8gYmUgc2VudCBldmVuIHdo
ZW4gdGhlIHNjcmVlbiByZWFkZXIgaGFzIG5vdCBhY2Nlc3NlZCB0aGlzIGxpdmUgcmVnaW9uIHNp
bmNlIHRoZSBsYXN0IHVwZGF0ZS4KLQotICAgICAgICAvLyBJZiB0aGlzIGVsZW1lbnQgc3VwcG9y
dHMgQVJJQSBsaXZlIHJlZ2lvbnMsIHRoZW4gbm90aWZ5IHRoZSBBVCBvZiBjaGFuZ2VzLgotICAg
ICAgICAvLyBTb21ldGltZXMgdGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIG1hbnkgdGltZXMg
d2l0aGluIGEgc2hvcnQgcGVyaW9kIG9mIHRpbWUsIGxlYWRpbmcgdG8gcG9zdGluZyB0b28gbWFu
eSBBWExpdmVSZWdpb25DaGFuZ2VkCi0gICAgICAgIC8vIG5vdGlmaWNhdGlvbnMuIFRvIGZpeCB0
aGlzLCB3ZSB1c2VkIGEgdGltZXIgdG8gbWFrZSBzdXJlIHdlIG9ubHkgcG9zdCBvbmUgbm90aWZp
Y2F0aW9uIGZvciB0aGUgY2hpbGRyZW4gY2hhbmdlcyB3aXRoaW4gYSBwcmUtZGVmaW5lZAotICAg
ICAgICAvLyB0aW1lIGludGVydmFsLgotICAgICAgICBpZiAocGFyZW50LT5zdXBwb3J0c0xpdmVS
ZWdpb24oKSkKLSAgICAgICAgICAgIGNhY2hlLT5wb3N0TGl2ZVJlZ2lvbkNoYW5nZU5vdGlmaWNh
dGlvbihwYXJlbnQpOwotICAgICAgICAKLSAgICAgICAgLy8gSWYgdGhpcyBlbGVtZW50IGlzIGFu
IEFSSUEgdGV4dCBjb250cm9sLCBub3RpZnkgdGhlIEFUIG9mIGNoYW5nZXMuCi0gICAgICAgIGlm
IChwYXJlbnQtPmlzTm9uTmF0aXZlVGV4dENvbnRyb2woKSkgewotICAgICAgICAgICAgY2FjaGUt
PnBvc3ROb3RpZmljYXRpb24ocGFyZW50LCBwYXJlbnQtPmRvY3VtZW50KCksIEFYT2JqZWN0Q2Fj
aGU6OkFYVmFsdWVDaGFuZ2VkKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gRG8gbm90
IGxldCB0aGUgcGFyZW50IHRoYXQncyBhYm92ZSB0aGUgZWRpdGFibGUgYW5jZXN0b3IgdXBkYXRl
IGl0cyBjaGlsZHJlbgotICAgICAgICAgICAgLy8gc2luY2Ugd2UgYWxyZWFkeSBub3RpZnkgdGhl
IEFUIG9mIGNoYW5nZXMuCi0gICAgICAgICAgICBzaG91bGRTdG9wVXBkYXRpbmdQYXJlbnQgPSB0
cnVlOwotICAgICAgICB9Ci0gICAgfQotfQotCiB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
Ojp1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpCiB7Ci0gICAgYm9vbCBpZ25vcmVkU3RhdHVzID0g
YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOwogICAgIG1fcm9sZSA9IGRldGVybWluZUFjY2Vzc2li
aWxpdHlSb2xlKCk7Ci0gICAgCi0gICAgLy8gVGhlIEFYIGhpZXJhcmNoeSBvbmx5IG5lZWRzIHRv
IGJlIHVwZGF0ZWQgaWYgdGhlIGlnbm9yZWQgc3RhdHVzIG9mIGFuIGVsZW1lbnQgaGFzIGNoYW5n
ZWQuCi0gICAgaWYgKGlnbm9yZWRTdGF0dXMgIT0gYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQot
ICAgICAgICBjaGlsZHJlbkNoYW5nZWQoKTsKIH0KLSAgICAKKwogQWNjZXNzaWJpbGl0eU9iamVj
dCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmZpcnN0Q2hpbGQoKSBjb25zdAogewogICAgIGlm
ICghbm9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5oCmluZGV4IDQwYTQyOWE2MDAzNWYyZWI0MGVjMDlhYmQ5Mzg5
NWYwZTZjNTViNmUuLmI2Nzg3OWNlZDQ5ODQ3YmFjNWFjNjQ2NTcwMDM3MGJjMjMzM2NjNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmgKQEAgLTEzMSw3ICsxMzEsNiBAQCBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogcGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZv
aWQgY2hpbGRyZW5DaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVBY2Nlc3NpYmls
aXR5Um9sZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBpbmNyZW1lbnQoKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCmluZGV4IDEzMmVmYmNmZmM0NGExYzczYjhjMDYxN2JlMDNmMzY2ZTIyYWEwNTQuLmM4MjMz
YzhiNzRiZTIwOGYwOWVhMGRmOTQ1OGQwOTdmNTQxYTI0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMzI1Nywx
NCArMzI1NywxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldExhc3RLbm93bklzSWdu
b3JlZFZhbHVlKGJvb2wgaXNJZ25vcmVkKQogICAgIG1fbGFzdEtub3duSXNJZ25vcmVkVmFsdWUg
PSBpc0lnbm9yZWQgPyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Qg
OiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0OwogfQogCi12b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vdGlmeUlmSWdub3JlZFZhbHVlQ2hhbmdlZCgpCitib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc0lnbm9yZWRWYWx1ZUNoYW5nZWQoKQogewogICAgIGJv
b2wgaXNJZ25vcmVkID0gYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOwogICAgIGlmIChsYXN0S25v
d25Jc0lnbm9yZWRWYWx1ZSgpICE9IGlzSWdub3JlZCkgewotICAgICAgICBpZiAoQVhPYmplY3RD
YWNoZSogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCi0gICAgICAgICAgICBjYWNoZS0+Y2hpbGRy
ZW5DaGFuZ2VkKHBhcmVudE9iamVjdCgpKTsKICAgICAgICAgc2V0TGFzdEtub3duSXNJZ25vcmVk
VmFsdWUoaXNJZ25vcmVkKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAgIHJldHVy
biBmYWxzZTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwcmVzc2VkSXNQcmVzZW50
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmgKaW5kZXggNGMwNmU2YmI2ZjViMTU1NmMwZjk2NGQ2Y2Y5YjJjMGQ3NjM0YWFi
Mi4uZTE3N2RiZDFkMzE4NDM5ZDY2ZmJkMWFjMjNlODI0MjQ0MDkzOWQzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTQ4
Nyw4ICs0ODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmNyZW1lbnQoKSBvdmVycmlkZSB7IH0K
ICAgICB2b2lkIGRlY3JlbWVudCgpIG92ZXJyaWRlIHsgfQogCi0gICAgdm9pZCBjaGlsZHJlbkNo
YW5nZWQoKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCkg
b3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCkg
eyB9CiAgICAgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbihib29s
IHVwZGF0ZUNoaWxkcmVuSWZOZWVkZWQgPSB0cnVlKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZENo
aWxkcmVuKCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBhZGRDaGlsZChBWENvcmVPYmplY3QqLCBE
ZXNjZW5kSWZJZ25vcmVkID0gRGVzY2VuZElmSWdub3JlZDo6WWVzKSBvdmVycmlkZTsKQEAgLTY0
NywxMSArNjQ2LDkgQEAgcHVibGljOgogICAgIEludFJlY3Qgc2Nyb2xsVmlzaWJsZUNvbnRlbnRS
ZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlKGNvbnN0
IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBib29s
IGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRMYXN0S25v
d25Jc0lnbm9yZWRWYWx1ZShib29sKSBvdmVycmlkZTsKLQotICAgIC8vIEZpcmVzIGEgY2hpbGRy
ZW4gY2hhbmdlZCBub3RpZmljYXRpb24gb24gdGhlIHBhcmVudCBpZiB0aGUgaXNJZ25vcmVkIHZh
bHVlIGNoYW5nZWQuCi0gICAgdm9pZCBub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5nZWQoKSBvdmVy
cmlkZTsKKyAgICBib29sIGxhc3RLbm93bklzSWdub3JlZFZhbHVlKCk7CisgICAgdm9pZCBzZXRM
YXN0S25vd25Jc0lnbm9yZWRWYWx1ZShib29sKTsKKyAgICBib29sIGhhc0lnbm9yZWRWYWx1ZUNo
YW5nZWQoKTsKIAogICAgIC8vIEFsbCBtYXRoIGVsZW1lbnRzIHJldHVybiB0cnVlIGZvciBpc01h
dGhFbGVtZW50KCkuCiAgICAgYm9vbCBpc01hdGhFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXggZTgyMTY4MTQ4NzlmOTUw
ODYwZjA5NTYyN2YwNzZkMDExZDVkZGYxOC4uNTUzMjExOThjZTljZmRhYjE0OTVlOWFmOGY3NmQw
ODRmMjE5NTgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTEyMzQsOSArMTIzNCw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZWNyZW1lbnQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpID0gMDsK
LQogICAgIHZpcnR1YWwgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJl
bihib29sIHVwZGF0ZUNoaWxkcmVuSWZOZWVkZWQgPSB0cnVlKSA9IDA7CiAKICAgICBlbnVtIGNs
YXNzIERlc2NlbmRJZklnbm9yZWQgOiB1aW50OF90IHsKQEAgLTEzOTEsMTIgKzEzODgsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbFZpc2libGVDb250ZW50UmVjdCgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZShjb25zdCBTY3Jv
bGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBs
YXN0S25vd25Jc0lnbm9yZWRWYWx1ZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TGFzdEtu
b3duSXNJZ25vcmVkVmFsdWUoYm9vbCkgPSAwOwotCi0gICAgLy8gRmlyZXMgYSBjaGlsZHJlbiBj
aGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiB0aGUgcGFyZW50IGlmIHRoZSBpc0lnbm9yZWQgdmFsdWUg
Y2hhbmdlZC4KLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCkg
PSAwOwotCiAgICAgLy8gQWxsIG1hdGggZWxlbWVudHMgcmV0dXJuIHRydWUgZm9yIGlzTWF0aEVs
ZW1lbnQoKS4KICAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNNYXRoRnJhY3Rpb24oKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKaW5kZXggOGM3
YWE4NzJiNTQwYWUyZTNiNTdhZGUyZGNjMzFkMTk1ODUwYjNjNy4uZjc1ZjAzZDQyMGQ2Nzk5ZWJi
ODMzNTNmNTkyNjU0Y2YxNjQzNTMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbigpCiAgICAgLy8gc2VlIGJ1ZzogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzAwMQogICAgIGZvciAoY29uc3Qg
YXV0byYgcm93IDogbV9yb3dzKSB7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2VsbCA6IHJv
dy0+Y2hpbGRyZW4oKSkKLSAgICAgICAgICAgIGNlbGwtPnVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xl
KCk7CisgICAgICAgICAgICBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0PigqY2VsbCkudXBk
YXRlQWNjZXNzaWJpbGl0eVJvbGUoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5jcHAKaW5kZXggNzNhZWZhZWM3MzRiNWM1YjYwN2JjYWNhZGU2MjIxZGE2ZmMyOWE1Zi4uNjNl
MTY0MmM5MWRhM2Y1OGQyYzViYzVhZjY3NGUyZTViYzAxNTk0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHAKQEAgLTIxMjcsMTYgKzIxMjcsNiBAQCBTY3JvbGxWaWV3KiBBWElzb2xhdGVk
T2JqZWN0OjpzY3JvbGxWaWV3QW5jZXN0b3IoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwog
fQogCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCgpCi17Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6dXBkYXRlQWNj
ZXNzaWJpbGl0eVJvbGUoKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiB2b2lk
IEFYSXNvbGF0ZWRPYmplY3Q6OmFkZENoaWxkcmVuKCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTIzMTIsMjIgKzIzMDIsNiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNjcm9s
bFRvTWFrZVZpc2libGUoY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjbwogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omxhc3RL
bm93bklzSWdub3JlZFZhbHVlKCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0TGFzdEtub3duSXNJ
Z25vcmVkVmFsdWUoYm9vbCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9p
ZCBBWElzb2xhdGVkT2JqZWN0Ojpub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5nZWQoKQotewotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiBib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzTWF0
aFNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUpIGNvbnN0CiB7
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKaW5kZXgg
NGQ3YmI4MDNlMjRlYWM2N2E2MGYyMjljMzI4ZWU5ZTNmYjZlMGU5MC4uOTYzZDgxNTUxM2IzMjgy
YWZjYjhiNzFhNjljNzBmOWI3Mzc4OGFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaApAQCAt
NjA0LDggKzYwNCw2IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnQqIHRvcERvY3VtZW50KCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgU2Nyb2xsVmlldyogc2Nyb2xsVmlldygpIGNvbnN0IG92ZXJyaWRl
OwogICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXdBbmNlc3RvcigpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVBY2Nl
c3NpYmlsaXR5Um9sZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlk
ZTsKICAgICB2b2lkIGFkZENoaWxkKEFYQ29yZU9iamVjdCosIERlc2NlbmRJZklnbm9yZWQgPSBE
ZXNjZW5kSWZJZ25vcmVkOjpZZXMpIG92ZXJyaWRlOwogICAgIHZvaWQgaW5zZXJ0Q2hpbGQoQVhD
b3JlT2JqZWN0KiwgdW5zaWduZWQsIERlc2NlbmRJZklnbm9yZWQgPSBEZXNjZW5kSWZJZ25vcmVk
OjpZZXMpIG92ZXJyaWRlOwpAQCAtNjM3LDkgKzYzNSw2IEBAIHByaXZhdGU6CiAgICAgSW50U2l6
ZSBzY3JvbGxDb250ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZTsKICAgICBJbnRSZWN0IHNjcm9s
bFZpc2libGVDb250ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2Nyb2xsVG9N
YWtlVmlzaWJsZShjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYpIGNvbnN0IG92ZXJy
aWRlOwotICAgIGJvb2wgbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSBvdmVycmlkZTsKLSAgICB2
b2lkIHNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZvaWQg
bm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc01hdGhT
Y3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlKSBjb25zdCBvdmVy
cmlkZTsKICAgICBib29sIGlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRo
TXVsdGlzY3JpcHRPYmplY3RUeXBlKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzQVhIaWRk
ZW4oKSBjb25zdCBvdmVycmlkZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>