<?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>239398</bug_id>
          
          <creation_ts>2022-04-15 11:56:02 -0700</creation_ts>
          <short_desc>Node changes created by AXIsolatedTree::updateNode are overwritten when performed during AXIsolatedTree::collectNodeChangesForSubtree</short_desc>
          <delta_ts>2022-04-18 13:56:30 -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>All</rep_platform>
          <op_sys>All</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="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</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>1861867</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-04-15 11:56:02 -0700</bug_when>
    <thetext>We currently do the wrong thing in this scenario:

  1. A dynamic page change causes an element to be included on the page, so we create a node change for it and its subtree by calling collectNodeChangesForSubtree. This causes a call to children() on the live object

  2. In the process of (or after) updating the children of the live object, we perform some operation that triggers AXIsolatedTree::updateNode on said object. AccessibilityRenderObject::updateRoleAfterChildrenCreation would be an example of this if it were properly coded to update the isolated tree if the object&apos;s role changes (I&apos;ll address that in a separate patch). updateNode results in a node change with the correct properties being added to m_pendingAppends

  3. collectNodeChangesForSubtree (started in step 1) finishes, and queues a node change for the same object, but with the wrong properties (because it was created before step 2). Because it comes after the node change added in step 2 to m_pendingAppends, it wins, and we add an object with the wrong properties to the tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861868</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-15 11:56:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/91820790&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861877</commentid>
    <comment_count>2</comment_count>
      <attachid>457715</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-04-15 12:23:54 -0700</bug_when>
    <thetext>Created attachment 457715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861891</commentid>
    <comment_count>3</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-15 13:44:27 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #2)
&gt; Created attachment 457715 [details]
&gt; Patch

This change seems right for the most part. However, some of the cleanup made me realize a bug in the existing code that was the reason the parameter attachWrapper was added. In 

void AXIsolatedTree::updateNode(AXCoreObject&amp; axObject)
{
...
    auto change = nodeChangeForObject(axObject, parentID, true);
...

we have to pass false instead. The reason is that you cannot attach a wrapper on the main thread when that wrapper is already being used on the AX thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861911</commentid>
    <comment_count>4</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-15 14:15:34 -0700</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=239402.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861993</commentid>
    <comment_count>5</comment_count>
      <attachid>457738</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-04-15 18:01:02 -0700</bug_when>
    <thetext>Created attachment 457738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862056</commentid>
    <comment_count>6</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-16 10:16:07 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #5)
&gt; Created attachment 457738 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
+++ a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h

+    enum class AttachWrapperImmediately : bool { No, Yes };

I think it would be more accurate:

+    enum class AttachWrapper : bool { OnMainThread, OnAXThread };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862060</commentid>
    <comment_count>7</comment_count>
      <attachid>457750</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-04-16 10:50:27 -0700</bug_when>
    <thetext>Created attachment 457750
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862063</commentid>
    <comment_count>8</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-16 11:45:36 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #7)
&gt; Created attachment 457750 [details]
&gt; Patch

I see a potential problem with splitting the queuingg of removals and appends:

-    queueChangesAndRemovals(changes, oldChildrenIDs);
+    resolveAndQueueChanges();
+    queueRemovals(oldChildrenIDs);

The appends and the removals may be applied in two separate calls of applyPendingChanges, since now we are releasing the lock in between the queuing. Would that have some unintended side effect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862075</commentid>
    <comment_count>9</comment_count>
      <attachid>457752</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-04-16 13:12:37 -0700</bug_when>
    <thetext>Created attachment 457752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862079</commentid>
    <comment_count>10</comment_count>
      <attachid>457753</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-04-16 13:41:48 -0700</bug_when>
    <thetext>Created attachment 457753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862080</commentid>
    <comment_count>11</comment_count>
      <attachid>457754</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-04-16 13:55:36 -0700</bug_when>
    <thetext>Created attachment 457754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862138</commentid>
    <comment_count>12</comment_count>
      <attachid>457770</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-04-17 08:07:11 -0700</bug_when>
    <thetext>Created attachment 457770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862308</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-18 13:30:53 -0700</bug_when>
    <thetext>Committed r292967 (249732@main): &lt;https://commits.webkit.org/249732@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 457770.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457715</attachid>
            <date>2022-04-15 12:23:54 -0700</date>
            <delta_ts>2022-04-15 18:00:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239398-20220415142353.patch</filename>
            <type>text/plain</type>
            <size>18821</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzczODExMjRmZTU4ZDJh
MTc0MDhmOTg5MmUzYjJkYzk5ZmFmMjMxYS4uMzQ4ZWZmNWQwODRhOGViZWU4MWE3MmZlY2I2MTNk
YzM5ZDNkODdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIyLTA0LTE1ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgTm9kZSBjaGFuZ2VzIGNy
ZWF0ZWQgYnkgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGUgYXJlIG92ZXJ3cml0dGVuIHdoZW4g
cGVyZm9ybWVkIGR1cmluZyBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3Vi
dHJlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5
Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
Y3VycmVudGx5IGRvIHRoZSB3cm9uZyB0aGluZyBpbiB0aGlzIHNjZW5hcmlvOgorCisgICAgICAg
ICAgMS4gQSBkeW5hbWljIHBhZ2UgY2hhbmdlIGNhdXNlcyBhbiBlbGVtZW50IHRvIGJlIGluY2x1
ZGVkIG9uIHRoZSBwYWdlLCBzbyB3ZQorICAgICAgICAgICAgIGNyZWF0ZSBhIG5vZGUgY2hhbmdl
IGZvciBpdCBhbmQgaXRzIHN1YnRyZWUgYnkgY2FsbGluZyBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JT
dWJ0cmVlLgorICAgICAgICAgICAgIFRoaXMgY2F1c2VzIGEgY2FsbCB0byBjaGlsZHJlbigpIG9u
IHRoZSBsaXZlIG9iamVjdC4KKworICAgICAgICAgIDIuIEluIHRoZSBwcm9jZXNzIG9mIChvciBh
ZnRlcikgdXBkYXRpbmcgdGhlIGNoaWxkcmVuIG9mIHRoZSBsaXZlIG9iamVjdCwgd2UgcGVyZm9y
bSBzb21lCisgICAgICAgICAgICAgb3BlcmF0aW9uIHRoYXQgdHJpZ2dlcnMgQVhJc29sYXRlZFRy
ZWU6OnVwZGF0ZU5vZGUgb24gc2FpZCBvYmplY3QuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnVwZGF0ZVJvbGVBZnRlckNoaWxkcmVuQ3JlYXRpb24KKyAgICAgICAgICAgICB3b3VsZCBiZSBh
biBleGFtcGxlIG9mIHRoaXMgaWYgaXQgd2VyZSBwcm9wZXJseSBjb2RlZCB0byB1cGRhdGUgdGhl
IGlzb2xhdGVkIHRyZWUgaWYKKyAgICAgICAgICAgICB0aGUgb2JqZWN0J3Mgcm9sZSBjaGFuZ2Vz
IChJJ2xsIGFkZHJlc3MgdGhhdCBpbiBhIHNlcGFyYXRlIHBhdGNoKS4gdXBkYXRlTm9kZSByZXN1
bHRzCisgICAgICAgICAgICAgaW4gYSBub2RlIGNoYW5nZSB3aXRoIHRoZSBjb3JyZWN0IHByb3Bl
cnRpZXMgYmVpbmcgYWRkZWQgdG8gbV9wZW5kaW5nQXBwZW5kcy4KKworICAgICAgICAgIDMuIGNv
bGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUgKHN0YXJ0ZWQgaW4gc3RlcCAxKSBmaW5pc2hlcywg
YW5kIHF1ZXVlcyBhIG5vZGUgY2hhbmdlCisgICAgICAgICAgICAgZm9yIHRoZSBzYW1lIG9iamVj
dCwgYnV0IHdpdGggdGhlIHdyb25nIHByb3BlcnRpZXMgKGJlY2F1c2UgaXQgd2FzIGNyZWF0ZWQg
YmVmb3JlIHN0ZXAgMikuCisgICAgICAgICAgICAgQmVjYXVzZSBpdCBjb21lcyBhZnRlciB0aGUg
bm9kZSBjaGFuZ2UgYWRkZWQgaW4gc3RlcCAyIHRvIG1fcGVuZGluZ0FwcGVuZHMsIGl0IHdpbnMs
CisgICAgICAgICAgICAgYW5kIHdlIGFkZCBhbiBvYmplY3Qgd2l0aCB0aGUgd3JvbmcgcHJvcGVy
dGllcyB0byB0aGUgdHJlZS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgd2l0aCBh
IG5ldyBBWElzb2xhdGVkVHJlZTo6bV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMgbWVtYmVyCisg
ICAgICAgIHZhcmlhYmxlLiBUaGlzIGlzIGEgSGFzaE1hcCB3aXRoIGFuIEFYSUQga2V5LCByZXBy
ZXNlbnRpbmcgdGhlIG9iamVjdCB0byBjcmVhdGUgYSBub2RlCisgICAgICAgIGNoYW5nZSBmb3Iu
IE5vdywgYm90aCBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlIGFuZCB1cGRhdGVOb2RlIHdp
bGwgYWRkIGFuIGVudHJ5CisgICAgICAgIHRvIHRoaXMgSGFzaE1hcCwgYW5kIHJlc29sdmUgaXQg
KGkuZS4gY3JlYXRlIHRoZSBub2RlIGNoYW5nZSkgYXQgYSBsYXRlciB0aW1lLgorCisgICAgICAg
IFRoaXMgaXMgYm90aCBtb3JlIGNvcnJlY3QgKGFzIGl0IHByZXZlbnRzIGFueSBvcmRlcmluZyBi
dWdzIGVudGlyZWx5KSwgYW5kIG1vcmUKKyAgICAgICAgZWZmaWNpZW50LCBiZWNhdXNlIHdlIG5v
dyBuZXZlciBjcmVhdGUgbXVsdGlwbGUgbm9kZSBjaGFuZ2VzIGZvciB0aGUgc2FtZSBvYmplY3Qu
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG5lY2Vzc2l0YXRlZCBvdGhlciBjb2RlIGNsZWFu
dXAgaXRlbXM6CisgICAgICAgICAgLSBtX3VucmVzb2x2ZWRQZW5kaW5nQXBwZW5kcyBhbGxvd3Mg
dXMgdG8gcmVtb3ZlIHRoZSBgaWRzQmVpbmdDaGFuZ2VkYCBwYXJhbWV0ZXIKKyAgICAgICAgICAg
IHdlIHBhc3NlZCB0byBzZXZlcmFsIGZ1bmN0aW9ucywgc2luY2UgdGhpcyBtZW1iZXIgdmFyaWFi
bGUgZG9lcyB0aGUgc2FtZSB0aGluZy4KKworICAgICAgICAgIC0gVGhlIGBhdHRhY2hXcmFwcGVy
YCBwYXJhbWV0ZXIgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzZXZlcmFsIGZ1bmN0aW9ucyB3
ZSBwYXNzZWQKKyAgICAgICAgICAgIGl0IHRvLCBzaW5jZSBpdCB3YXMgYWx3YXlzIHNldCB0byB0
cnVlLgorCisgICAgICAgICAgLSBxdWV1ZUNoYW5nZXNBbmRSZW1vdmFscyBoYXMgYmVlbiBzcGxp
dCB1cCBpbnRvIHR3byBzZXBhcmF0ZSBmdW5jdGlvbnMgLS0gcmVzb2x2ZUFuZFF1ZXVlQ2hhbmdl
cworICAgICAgICAgICAgYW5kIHF1ZXVlUmVtb3ZhbHMuIFNvbWUgY2FsbHNpdGVzIGRpZCB0aGlu
Z3MgbGlrZSBxdWV1ZUNoYW5nZXNBbmRSZW1vdmFscyh7IH0sIHsgb2JqZWN0VG9SZW1vdmUub2Jq
ZWN0SUQoKSB9KSwKKyAgICAgICAgICAgIHNvIGl0IG1ha2VzIHNlbnNlIGZvciB0aGVzZSB0byBi
ZSBzZXBhcmF0ZSAoYW5kIHdhcyBuZWNlc3NhcnkgZm9yIHRoaXMgY2hhbmdlKS4KKworICAgICAg
ICBGaXhlcyBzaXggdGVzdHMgaW4gaXNvbGF0ZWQgdHJlZSBtb2RlOgorICAgICAgICAgIC0gYWNj
ZXNzaWJpbGl0eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLmh0bWwKKyAgICAgICAg
ICAtIGFjY2Vzc2liaWxpdHkvYXJpYS1yb2xlLW9uLWxhYmVsLmh0bWwKKyAgICAgICAgICAtIGFj
Y2Vzc2liaWxpdHkvbWFjL2xhYmVsLWVsZW1lbnQtYWxsLXRleHQtc3RyaW5nLXZhbHVlLmh0bWwK
KyAgICAgICAgICAtIGFjY2Vzc2liaWxpdHkvbWFjL2xhYmVsLWVsZW1lbnQtd2l0aC1oaWRkZW4t
Y29udHJvbC5odG1sCisgICAgICAgICAgLSBhY2Nlc3NpYmlsaXR5L21hYy9sYWJlbC1lbGVtZW50
LWFsbC10ZXh0LXN0cmluZy12YWx1ZS5odG1sCisgICAgICAgICAgLSBhY2Nlc3NpYmlsaXR5L21h
Yy9zbGlkZXItYWxsb3dzLXRpdGxlLXVpLWVsZW1lbnQuaHRtbAorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZFRyZWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVl
Ojpub2RlQ2hhbmdlRm9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVl
OjpxdWV1ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cXVldWVS
ZW1vdmFscyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJlc29s
dmVBbmRRdWV1ZUNoYW5nZXMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRU
cmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRU
cmVlOjp1cGRhdGVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6
cmVtb3ZlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3Vi
dHJlZUZyb21Ob2RlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjphcHBs
eVBlbmRpbmdDaGFuZ2VzKToKKyAgICAgICAgSW1wcm92ZSBsb2NhbCB2YXJpYWJsZSBuYW1lLCBv
YmplY3QgdG8gZXhpc3RpbmdPYmplY3QsIGFzIHRoaXMgbWFrZXMKKyAgICAgICAgdGhlIGNvZGUg
bXVjaCBtb3JlIGNsZWFyLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnF1ZXVl
Q2hhbmdlc0FuZFJlbW92YWxzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJl
bW92ZVN1YnRyZWVGcm9tTm9kZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJl
ZTo6cXVldWVDaGFuZ2VzQW5kUmVtb3ZhbHMpOgorICAgICAgICBTcGxpdCBpbnRvIG5ldyBmdW5j
dGlvbnMgcXVldWVSZW1vdmFscyBhbmQgcmVzb2x2ZUFuZFF1ZXVlQ2hhbmdlcy4KKwogMjAyMi0w
NC0xNCAgR2FicmllbCBOYXZhIE1hcmlubyAgPGduYXZhbWFyaW5vQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OmlzRXZlbnRBbGxvd2VkSW5NYWluVGhyZWFkIGFz
c2VydCBmYWlsdXJlIHdoZW4gYWN0aXZhdGluZyBBdWRpb1Nlc3Npb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcAppbmRleCBhNDQzNjA3NTBhNjY4MjlhNGVjMzg0OGE1NzhjN2VhOTc4MDY2N2ZkLi40
YmZhOWY1YzY5NmQ0NGE4YzA2M2Y2NzY4N2MzNjUwMzk5N2QxYmFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xh
dGVkVHJlZTo6Y3JlYXRlKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpCiAgICAgLy8gRm9y
IHRoaXMsIHdlIG5lZWQgdGhlIHJvb3QgYW5kIGZvY3VzZWQgb2JqZWN0cyBvZiB0aGUgQVhPYmpl
Y3QgdHJlZS4KICAgICBhdXRvKiBheFJvb3QgPSBheE9iamVjdENhY2hlLT5nZXRPckNyZWF0ZShh
eE9iamVjdENhY2hlLT5kb2N1bWVudCgpLnZpZXcoKSk7CiAgICAgaWYgKGF4Um9vdCkKLSAgICAg
ICAgdHJlZS0+Z2VuZXJhdGVTdWJ0cmVlKCpheFJvb3QsIG51bGxwdHIsIHRydWUpOworICAgICAg
ICB0cmVlLT5nZW5lcmF0ZVN1YnRyZWUoKmF4Um9vdCwgbnVsbHB0cik7CiAgICAgYXV0byogYXhG
b2N1cyA9IGF4T2JqZWN0Q2FjaGUtPmZvY3VzZWRPYmplY3RGb3JQYWdlKGF4T2JqZWN0Q2FjaGUt
PmRvY3VtZW50KCkucGFnZSgpKTsKICAgICBpZiAoYXhGb2N1cykKICAgICAgICAgdHJlZS0+c2V0
Rm9jdXNlZE5vZGVJRChheEZvY3VzLT5vYmplY3RJRCgpKTsKQEAgLTE2OSw3ICsxNjksNyBAQCBW
ZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RzRm9ySURz
KGNvbnN0IFZlY3RvcjxBWElEPiYgYQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQVhJ
c29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWENv
cmVPYmplY3QqIGF4UGFyZW50LCBib29sIGF0dGFjaFdyYXBwZXIpCit2b2lkIEFYSXNvbGF0ZWRU
cmVlOjpnZW5lcmF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhDb3JlT2JqZWN0
KiBheFBhcmVudCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0
cmVlIl9zKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMTc4LDkgKzE3OCw4IEBA
IHZvaWQgQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShBWENvcmVPYmplY3QmIGF4T2Jq
ZWN0LCBBWENvcmVPYmplY3QqIGF4UGFyCiAgICAgICAgIHJldHVybjsKIAogICAgIEFYSUQgcGFy
ZW50SUQgPSBheFBhcmVudCA/IGF4UGFyZW50LT5vYmplY3RJRCgpIDogQVhJRCgpOwotICAgIFZl
Y3RvcjxOb2RlQ2hhbmdlPiBjaGFuZ2VzOwotICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRy
ZWUoYXhPYmplY3QsIHBhcmVudElELCBhdHRhY2hXcmFwcGVyLCBjaGFuZ2VzKTsKLSAgICBxdWV1
ZUNoYW5nZXNBbmRSZW1vdmFscyhjaGFuZ2VzKTsKKyAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JT
dWJ0cmVlKGF4T2JqZWN0LCBwYXJlbnRJRCk7CisgICAgcmVzb2x2ZUFuZFF1ZXVlQ2hhbmdlcygp
OwogfQogCiBBWElEIEFYSXNvbGF0ZWRUcmVlOjpwYXJlbnRJREZvck9iamVjdChBWENvcmVPYmpl
Y3QmIGF4T2JqZWN0LCBBWElEIGFzc3VtZWRQYXJlbnRJRCkKQEAgLTIwMywxMCArMjAyLDkgQEAg
QVhJRCBBWElzb2xhdGVkVHJlZTo6cGFyZW50SURGb3JPYmplY3QoQVhDb3JlT2JqZWN0JiBheE9i
amVjdCwgQVhJRCBhc3N1bWVkUGFyZW4KICAgICByZXR1cm4gYXNzdW1lZFBhcmVudElEOwogfQog
Ci1BWElzb2xhdGVkVHJlZTo6Tm9kZUNoYW5nZSBBWElzb2xhdGVkVHJlZTo6bm9kZUNoYW5nZUZv
ck9iamVjdChBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWElEIHBhcmVudElELCBib29sIGF0dGFj
aFdyYXBwZXIpCitBWElzb2xhdGVkVHJlZTo6Tm9kZUNoYW5nZSBBWElzb2xhdGVkVHJlZTo6bm9k
ZUNoYW5nZUZvck9iamVjdChBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWElEIHBhcmVudElEKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KICAgICBhdXRvIG9iamVjdCA9IEFYSXNv
bGF0ZWRPYmplY3Q6OmNyZWF0ZShheE9iamVjdCwgdGhpcywgcGFyZW50SURGb3JPYmplY3QoYXhP
YmplY3QsIHBhcmVudElEKSk7CiAgICAgTm9kZUNoYW5nZSBub2RlQ2hhbmdlIHsgb2JqZWN0LCBu
dWxscHRyIH07CiAKQEAgLTIxNywyMCArMjE1LDEyIEBAIEFYSXNvbGF0ZWRUcmVlOjpOb2RlQ2hh
bmdlIEFYSXNvbGF0ZWRUcmVlOjpub2RlQ2hhbmdlRm9yT2JqZWN0KEFYQ29yZU9iamVjdCYgYXhP
CiAgICAgfQogCiAgICAgQVNTRVJUKGF4T2JqZWN0LndyYXBwZXIoKSk7Ci0gICAgaWYgKGF0dGFj
aFdyYXBwZXIpCi0gICAgICAgIG9iamVjdC0+YXR0YWNoUGxhdGZvcm1XcmFwcGVyKGF4T2JqZWN0
LndyYXBwZXIoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIFNldCB0aGUgd3JhcHBlciBpbiB0
aGUgTm9kZUNoYW5nZSBzbyB0aGF0IGl0IGlzIHNldCBvbiB0aGUgQVggdGhyZWFkLgotICAgICAg
ICBub2RlQ2hhbmdlLndyYXBwZXIgPSBheE9iamVjdC53cmFwcGVyKCk7Ci0gICAgfQotCisgICAg
b2JqZWN0LT5hdHRhY2hQbGF0Zm9ybVdyYXBwZXIoYXhPYmplY3Qud3JhcHBlcigpKTsKICAgICBt
X25vZGVNYXAuc2V0KGF4T2JqZWN0Lm9iamVjdElEKCksIFBhcmVudENoaWxkcmVuSURzIHsgcGFy
ZW50SUQsIGF4T2JqZWN0LmNoaWxkcmVuSURzKCkgfSk7Ci0KICAgICBpZiAoIXBhcmVudElELmlz
VmFsaWQoKSkgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAg
ICAgICAgIHNldFJvb3ROb2RlKG5vZGVDaGFuZ2UuaXNvbGF0ZWRPYmplY3QucHRyKCkpOwogICAg
IH0KLQogICAgIHJldHVybiBub2RlQ2hhbmdlOwogfQogCkBAIC0yNDAsNyArMjMwLDYgQEAgdm9p
ZCBBWElzb2xhdGVkVHJlZTo6cXVldWVDaGFuZ2UoY29uc3QgTm9kZUNoYW5nZSYgbm9kZUNoYW5n
ZSkKICAgICBBU1NFUlQobV9jaGFuZ2VMb2dMb2NrLmlzTG9ja2VkKCkpOwogCiAgICAgbV9wZW5k
aW5nQXBwZW5kcy5hcHBlbmQobm9kZUNoYW5nZSk7Ci0KICAgICBBWElEIHBhcmVudElEID0gbm9k
ZUNoYW5nZS5pc29sYXRlZE9iamVjdC0+cGFyZW50KCk7CiAgICAgaWYgKHBhcmVudElELmlzVmFs
aWQoKSkgewogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fbm9kZU1hcC5jb250YWlucyhw
YXJlbnRJRCksICJub2RlIG1hcCBzaG91bGQndmUgY29udGFpbmVkIHBhcmVudElEOiAlcyIsIHBh
cmVudElELmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTI1NSwzMiArMjQ0LDQ0
IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnF1ZXVlQ2hhbmdlKGNvbnN0IE5vZGVDaGFuZ2UmIG5v
ZGVDaGFuZ2UpCiAgICAgbV9wZW5kaW5nQ2hpbGRyZW5VcGRhdGVzLmFwcGVuZCh7IG9iamVjdElE
LCBXVEZNb3ZlKGNoaWxkcmVuSURzKSB9KTsKIH0KIAotdm9pZCBBWElzb2xhdGVkVHJlZTo6cXVl
dWVDaGFuZ2VzQW5kUmVtb3ZhbHMoY29uc3QgVmVjdG9yPE5vZGVDaGFuZ2U+JiBjaGFuZ2VzLCBj
b25zdCBWZWN0b3I8QVhJRD4mIHN1YnRyZWVSZW1vdmFscykKK3ZvaWQgQVhJc29sYXRlZFRyZWU6
OnF1ZXVlUmVtb3ZhbHMoY29uc3QgVmVjdG9yPEFYSUQ+JiBzdWJ0cmVlUmVtb3ZhbHMpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQogICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5n
ZUxvZ0xvY2sgfTsKLQogICAgIGZvciAoY29uc3QgYXV0byYgYXhJRCA6IHN1YnRyZWVSZW1vdmFs
cykKICAgICAgICAgbV9wZW5kaW5nU3VidHJlZVJlbW92YWxzLmFwcGVuZChheElEKTsKK30KIAot
ICAgIGZvciAoY29uc3QgYXV0byYgY2hhbmdlIDogY2hhbmdlcykKLSAgICAgICAgcXVldWVDaGFu
Z2UoY2hhbmdlKTsKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OnJlc29sdmVBbmRRdWV1ZUNoYW5nZXMo
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byogY2FjaGUgPSBheE9i
amVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSB8fCBtX3VucmVzb2x2ZWRQZW5kaW5nQXBwZW5k
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxOb2RlQ2hhbmdlPiBy
ZXNvbHZlZEFwcGVuZHM7CisgICAgcmVzb2x2ZWRBcHBlbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIHVucmVzb2x2ZWRDaGFuZ2UgOiBtX3VucmVzb2x2ZWRQZW5kaW5nQXBwZW5kcykgeworICAg
ICAgICBpZiAoYXV0byogYXhPYmplY3QgPSBjYWNoZS0+b2JqZWN0RnJvbUFYSUQodW5yZXNvbHZl
ZENoYW5nZS5rZXkpKQorICAgICAgICAgICAgcmVzb2x2ZWRBcHBlbmRzLnVuY2hlY2tlZEFwcGVu
ZChub2RlQ2hhbmdlRm9yT2JqZWN0KCpheE9iamVjdCwgdW5yZXNvbHZlZENoYW5nZS52YWx1ZSkp
OworICAgIH0KKyAgICBtX3VucmVzb2x2ZWRQZW5kaW5nQXBwZW5kcy5jbGVhcigpOworCisgICAg
TG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgIGZvciAoY29uc3QgYXV0byYg
cmVzb2x2ZWRBcHBlbmQgOiByZXNvbHZlZEFwcGVuZHMpCisgICAgICAgIHF1ZXVlQ2hhbmdlKHJl
c29sdmVkQXBwZW5kKTsKIH0KIAotdm9pZCBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFu
Z2VzRm9yU3VidHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWElEIHBhcmVudElELCBib29s
IGF0dGFjaFdyYXBwZXIsIFZlY3RvcjxOb2RlQ2hhbmdlPiYgY2hhbmdlcywgSGFzaFNldDxBWElE
PiogaWRzQmVpbmdDaGFuZ2VkKQordm9pZCBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFu
Z2VzRm9yU3VidHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWElEIHBhcmVudElEKQogewog
ICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVl
Il9zKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgYXV0byBub2RlQ2hhbmdl
ID0gbm9kZUNoYW5nZUZvck9iamVjdChheE9iamVjdCwgcGFyZW50SUQsIGF0dGFjaFdyYXBwZXIp
OwotICAgIGlmIChpZHNCZWluZ0NoYW5nZWQpCi0gICAgICAgIGlkc0JlaW5nQ2hhbmdlZC0+YWRk
KG5vZGVDaGFuZ2UuaXNvbGF0ZWRPYmplY3QtPm9iamVjdElEKCkpOwotICAgIGNoYW5nZXMuYXBw
ZW5kKFdURk1vdmUobm9kZUNoYW5nZSkpOworICAgIFNldEZvclNjb3BlIGNvbGxlY3RpbmdOb2Rl
Q2hhbmdlcyhtX2lzQ29sbGVjdGluZ05vZGVDaGFuZ2VzLCB0cnVlKTsKKyAgICBtX3VucmVzb2x2
ZWRQZW5kaW5nQXBwZW5kcy5zZXQoYXhPYmplY3Qub2JqZWN0SUQoKSwgcGFyZW50SUQpOwogCiAg
ICAgYXV0byBheENoaWxkcmVuQ29weSA9IGF4T2JqZWN0LmNoaWxkcmVuKCk7CiAgICAgYXV0byBh
eENoaWxkcmVuSURzID0gYXhDaGlsZHJlbkNvcHkubWFwKFsmXShhdXRvJiBheENoaWxkKSB7Ci0g
ICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoKmF4Q2hpbGQsIGF4T2JqZWN0Lm9i
amVjdElEKCksIGF0dGFjaFdyYXBwZXIsIGNoYW5nZXMsIGlkc0JlaW5nQ2hhbmdlZCk7CisgICAg
ICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoKmF4Q2hpbGQsIGF4T2JqZWN0Lm9iamVj
dElEKCkpOwogICAgICAgICByZXR1cm4gYXhDaGlsZC0+b2JqZWN0SUQoKTsKICAgICB9KTsKICAg
ICBtX25vZGVNYXAuc2V0KGF4T2JqZWN0Lm9iamVjdElEKCksIFBhcmVudENoaWxkcmVuSURzIHsg
cGFyZW50SUQsIFdURk1vdmUoYXhDaGlsZHJlbklEcykgfSk7CkBAIC0yOTIsMTUgKzI5MywxOCBA
QCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlKEFYQ29yZU9iamVjdCYgYXhPYmplY3Qp
CiAgICAgQVhMT0coJmF4T2JqZWN0KTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0g
ICAgQVhJRCBheElEID0gYXhPYmplY3Qub2JqZWN0SUQoKTsKICAgICBhdXRvKiBheFBhcmVudCA9
IGF4T2JqZWN0LnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIEFYSUQgcGFyZW50SUQgPSBh
eFBhcmVudCA/IGF4UGFyZW50LT5vYmplY3RJRCgpIDogQVhJRCgpOwotCi0gICAgYXV0byBjaGFu
Z2UgPSBub2RlQ2hhbmdlRm9yT2JqZWN0KGF4T2JqZWN0LCBwYXJlbnRJRCwgdHJ1ZSk7Ci0KLSAg
ICAvLyBSZW1vdmUgdGhlIG9sZCBvYmplY3QgYW5kIHNldCB0aGUgbmV3IG9uZSB0byBiZSB1cGRh
dGVkIG9uIHRoZSBBWCB0aHJlYWQuCisgICAgLy8gSWYgd2UgdXBkYXRlIGEgbm9kZSBhcyB0aGUg
cmVzdWx0IG9mIHNvbWUgc2lkZSBlZmZlY3Qgd2hpbGUgY29sbGVjdGluZyBub2RlIGNoYW5nZXMg
KGUuZy4gYSByb2xlIGNoYW5nZSBmcm9tCisgICAgLy8gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6dXBkYXRlUm9sZUFmdGVyQ2hpbGRyZW5DcmVhdGlvbiksIHF1ZXVlIHRoZSBhcHBlbmQgdXAg
dG8gYmUgcmVzb2x2ZWQgd2l0aCB0aGUgcmVzdAorICAgIC8vIG9mIHRoZSBjb2xsZWN0ZWQgY2hh
bmdlcy4gVGhpcyBwcmV2ZW50cyB1cyBmcm9tIGNyZWF0aW5nIHR3byBub2RlIGNoYW5nZXMgZm9y
IHRoZSBzYW1lIG9iamVjdC4KKyAgICBpZiAobV9pc0NvbGxlY3RpbmdOb2RlQ2hhbmdlcykgewor
ICAgICAgICBtX3VucmVzb2x2ZWRQZW5kaW5nQXBwZW5kcy5zZXQoYXhPYmplY3Qub2JqZWN0SUQo
KSwgV1RGTW92ZShwYXJlbnRJRCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIE90
aGVyd2lzZSwgcmVzb2x2ZSB0aGUgY2hhbmdlIGltbWVkaWF0ZWx5IGFuZCBxdWV1ZSBpdCB1cC4K
KyAgICBhdXRvIGNoYW5nZSA9IG5vZGVDaGFuZ2VGb3JPYmplY3QoYXhPYmplY3QsIHBhcmVudElE
KTsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07Ci0gICAgbV9wZW5kaW5n
Tm9kZVJlbW92YWxzLmFwcGVuZCh7IGF4SUQsIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6
RWxlbWVudENoYW5nZWQgfSk7CiAgICAgcXVldWVDaGFuZ2UoY2hhbmdlKTsKIH0KIApAQCAtNDYy
LDggKzQ2Niw2IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuKEFYQ29yZU9i
amVjdCYgYXhPYmplY3QpCiAgICAgY29uc3QgYXV0byYgbmV3Q2hpbGRyZW4gPSBheEFuY2VzdG9y
LT5jaGlsZHJlbigpOwogICAgIGF1dG8gbmV3Q2hpbGRyZW5JRHMgPSBheEFuY2VzdG9yLT5jaGls
ZHJlbklEcyhmYWxzZSk7CiAKLSAgICBWZWN0b3I8Tm9kZUNoYW5nZT4gY2hhbmdlczsKLSAgICBI
YXNoU2V0PEFYSUQ+IGlkc0JlaW5nQ2hhbmdlZDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG5ld0NoaWxkcmVuLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEFTU0VSVChuZXdDaGlsZHJlbltp
XS0+b2JqZWN0SUQoKSA9PSBuZXdDaGlsZHJlbklEc1tpXSk7CiAgICAgICAgIEFTU0VSVChuZXdD
aGlsZHJlbklEc1tpXS5pc1ZhbGlkKCkpOwpAQCAtNDc0LDcgKzQ3Niw3IEBAIHZvaWQgQVhJc29s
YXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuKEFYQ29yZU9iamVjdCYgYXhPYmplY3QpCiAgICAgICAg
ICAgICAvLyBUaGlzIGlzIGEgbmV3IGNoaWxkLCBhZGQgaXQgdG8gdGhlIHRyZWUuCiAgICAgICAg
ICAgICBBWExPRyhtYWtlU3RyaW5nKCJBWElEICIsIGF4QW5jZXN0b3ItPm9iamVjdElEKCkubG9n
Z2luZ1N0cmluZygpLCAiIGdhaW5pbmcgbmV3IHN1YnRyZWUsIHN0YXJ0aW5nIGF0IElEICIsIG5l
d0NoaWxkcmVuW2ldLT5vYmplY3RJRCgpLmxvZ2dpbmdTdHJpbmcoKSwgIjoiKSk7CiAgICAgICAg
ICAgICBBWExPRyhuZXdDaGlsZHJlbltpXSk7Ci0gICAgICAgICAgICBjb2xsZWN0Tm9kZUNoYW5n
ZXNGb3JTdWJ0cmVlKCpuZXdDaGlsZHJlbltpXSwgYXhBbmNlc3Rvci0+b2JqZWN0SUQoKSwgdHJ1
ZSwgY2hhbmdlcywgJmlkc0JlaW5nQ2hhbmdlZCk7CisgICAgICAgICAgICBjb2xsZWN0Tm9kZUNo
YW5nZXNGb3JTdWJ0cmVlKCpuZXdDaGlsZHJlbltpXSwgYXhBbmNlc3Rvci0+b2JqZWN0SUQoKSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgbV9ub2RlTWFwLnNldChheEFuY2VzdG9yLT5vYmplY3RJ
RCgpLCBQYXJlbnRDaGlsZHJlbklEcyB7IG9sZElEcy5wYXJlbnRJRCwgV1RGTW92ZShuZXdDaGls
ZHJlbklEcykgfSk7CkBAIC00ODcsOSArNDg5LDEwIEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVw
ZGF0ZUNoaWxkcmVuKEFYQ29yZU9iamVjdCYgYXhPYmplY3QpCiAgICAgICAgIC8vICAgMS4gT2Jq
ZWN0IDEyMyBpcyBzbGF0ZWQgdG8gYmUgYSBjaGlsZCBvZiB0aGlzIG9iamVjdCAoaS5lLiBpbiBu
ZXdDaGlsZHJlbiksIGFuZCB3ZSBjb2xsZWN0IG5vZGUgY2hhbmdlcyBmb3IgaXQuCiAgICAgICAg
IC8vICAgMi4gT2JqZWN0IDEyMyBpcyBjdXJyZW50bHkgYSBtZW1iZXIgb2YgYSBzdWJ0cmVlIG9m
IHNvbWUgb3RoZXIgb2JqZWN0IGluIG9sZENoaWxkcmVuSURzLgogICAgICAgICAvLyAgIDMuIFRo
dXMsIHdlIGRvbid0IHdhbnQgdG8gZGVsZXRlIE9iamVjdCAxMjMgZnJvbSB0aGUgbm9kZW1hcCwg
aW5zdGVhZCBhbGxvd2luZyBpdCB0byBiZSBtb3ZlZC4KLSAgICAgICAgcmVtb3ZlU3VidHJlZUZy
b21Ob2RlTWFwKGF4SUQsIGF4QW5jZXN0b3IsIGlkc0JlaW5nQ2hhbmdlZCk7CisgICAgICAgIHJl
bW92ZVN1YnRyZWVGcm9tTm9kZU1hcChheElELCBheEFuY2VzdG9yKTsKICAgICB9Ci0gICAgcXVl
dWVDaGFuZ2VzQW5kUmVtb3ZhbHMoY2hhbmdlcywgb2xkQ2hpbGRyZW5JRHMpOworICAgIHJlc29s
dmVBbmRRdWV1ZUNoYW5nZXMoKTsKKyAgICBxdWV1ZVJlbW92YWxzKG9sZENoaWxkcmVuSURzKTsK
IAogICAgIC8vIEFsc28gcXVldWUgdXBkYXRlcyBmb3IgcHJvcGVydGllcyB0aGF0IGRlcml2ZSBm
cm9tIGNoaWxkcmVuKCkuCiAgICAgdXBkYXRlUmVsYXRlZFByb3BlcnRpZXMoKmF4QW5jZXN0b3Ip
OwpAQCAtNTU1LDEwICs1NTgsMTAgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6cmVtb3ZlTm9kZShj
b25zdCBBWENvcmVPYmplY3QmIGF4T2JqZWN0KQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKICAgICByZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAoYXhPYmplY3Qub2JqZWN0SUQoKSwgYXhP
YmplY3QucGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpOwotICAgIHF1ZXVlQ2hhbmdlc0FuZFJlbW92
YWxzKHsgfSwgeyBheE9iamVjdC5vYmplY3RJRCgpIH0pOworICAgIHF1ZXVlUmVtb3ZhbHMoeyBh
eE9iamVjdC5vYmplY3RJRCgpIH0pOwogfQogCi12b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVT
dWJ0cmVlRnJvbU5vZGVNYXAoQVhJRCBvYmplY3RJRCwgQVhDb3JlT2JqZWN0KiBheFBhcmVudCwg
Y29uc3QgSGFzaFNldDxBWElEPiYgaWRzVG9LZWVwKQordm9pZCBBWElzb2xhdGVkVHJlZTo6cmVt
b3ZlU3VidHJlZUZyb21Ob2RlTWFwKEFYSUQgb2JqZWN0SUQsIEFYQ29yZU9iamVjdCogYXhQYXJl
bnQpCiB7CiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWVGcm9tTm9k
ZU1hcCJfcyk7CiAgICAgQVhMT0cobWFrZVN0cmluZygiUmVtb3Zpbmcgc3VidHJlZSBmb3Igb2Jq
ZWN0SUQgIiwgb2JqZWN0SUQubG9nZ2luZ1N0cmluZygpKSk7CkBAIC01NzgsNyArNTgxLDcgQEAg
dm9pZCBBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKEFYSUQgb2JqZWN0
SUQsIEFYQ29yZU9iamVjdCogYXhQYXIKICAgICBWZWN0b3I8QVhJRD4gcmVtb3ZhbHMgPSB7IG9i
amVjdElEIH07CiAgICAgd2hpbGUgKHJlbW92YWxzLnNpemUoKSkgewogICAgICAgICBBWElEIGF4
SUQgPSByZW1vdmFscy50YWtlTGFzdCgpOwotICAgICAgICBpZiAoIWF4SUQuaXNWYWxpZCgpIHx8
IGlkc1RvS2VlcC5jb250YWlucyhheElEKSkKKyAgICAgICAgaWYgKCFheElELmlzVmFsaWQoKSB8
fCBtX3VucmVzb2x2ZWRQZW5kaW5nQXBwZW5kcy5jb250YWlucyhheElEKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gaXQgPSBtX25vZGVNYXAuZmluZChheElEKTsKQEAg
LTY0OCwxMyArNjUxLDEzIEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5n
ZXMoKQogICAgICAgICBpZiAoIXdyYXBwZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBpZiAoYXV0byBvYmplY3QgPSBtX3JlYWRlclRocmVhZE5vZGVNYXAuZ2V0KGF4SUQpKSB7
Ci0gICAgICAgICAgICBpZiAob2JqZWN0ICE9ICZpdGVtLmlzb2xhdGVkT2JqZWN0LmdldCgpCi0g
ICAgICAgICAgICAgICAgJiYgb2JqZWN0LT53cmFwcGVyKCkgPT0gd3JhcHBlci5nZXQoKSkgewor
ICAgICAgICBpZiAoYXV0byBleGlzdGluZ09iamVjdCA9IG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5n
ZXQoYXhJRCkpIHsKKyAgICAgICAgICAgIGlmIChleGlzdGluZ09iamVjdCAhPSAmaXRlbS5pc29s
YXRlZE9iamVjdC5nZXQoKQorICAgICAgICAgICAgICAgICYmIGV4aXN0aW5nT2JqZWN0LT53cmFw
cGVyKCkgPT0gd3JhcHBlci5nZXQoKSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBuZXcgSXNv
bGF0ZWRPYmplY3QgaXMgYSByZXBsYWNlbWVudCBmb3IgYW4gZXhpc3Rpbmcgb2JqZWN0CiAgICAg
ICAgICAgICAgICAgLy8gYXMgdGhlIHJlc3VsdCBvZiBhbiB1cGRhdGUuIFRodXMgZGV0YWNoIHRo
ZSB3cmFwcGVyIGZyb20gdGhlCiAgICAgICAgICAgICAgICAgLy8gZXhpc3Rpbmcgb2JqZWN0IGFu
ZCBhdHRhY2ggaXQgdG8gdGhlIG5ldyBvbmUuCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5kZXRh
Y2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudENoYW5nZWQpOwor
ICAgICAgICAgICAgICAgIGV4aXN0aW5nT2JqZWN0LT5kZXRhY2hXcmFwcGVyKEFjY2Vzc2liaWxp
dHlEZXRhY2htZW50VHlwZTo6RWxlbWVudENoYW5nZWQpOwogICAgICAgICAgICAgICAgIGl0ZW0u
aXNvbGF0ZWRPYmplY3QtPmF0dGFjaFBsYXRmb3JtV3JhcHBlcih3cmFwcGVyLmdldCgpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5yZW1vdmUoYXhJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaAppbmRleCBmYmJhNWU3NGI2YjVkOGUxMGMyODFkMWVkNTcx
NTViZjYxN2I4ZTcyLi4yM2NkMTk1MzIxYzZhM2JjMzRjOWE3YmNlNmRlNTQ2ZTAzYmQ3NDAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTM0OSw3ICszNDksNyBAQCBwdWJsaWM6CiAjZW5kaWYK
ICAgICB9OwogCi0gICAgdm9pZCBnZW5lcmF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhDb3Jl
T2JqZWN0KiwgYm9vbCBhdHRhY2hXcmFwcGVyKTsKKyAgICB2b2lkIGdlbmVyYXRlU3VidHJlZShB
WENvcmVPYmplY3QmLCBBWENvcmVPYmplY3QqKTsKICAgICB2b2lkIHVwZGF0ZU5vZGUoQVhDb3Jl
T2JqZWN0Jik7CiAgICAgdm9pZCB1cGRhdGVDaGlsZHJlbihBWENvcmVPYmplY3QmKTsKICAgICB2
b2lkIHVwZGF0ZU5vZGVQcm9wZXJ0eShBWENvcmVPYmplY3QmLCBBWFByb3BlcnR5TmFtZSk7CkBA
IC0zNjMsNyArMzYzLDcgQEAgcHVibGljOgogICAgIC8vIFJlbW92ZXMgdGhlIGNvcnJlc3BvbmRp
bmcgaXNvbGF0ZWQgb2JqZWN0IGFuZCBhbGwgZGVzY2VuZGFudHMgZnJvbSB0aGUgbV9ub2RlTWFw
IGFuZCBxdWV1ZXMgdGhlaXIgcmVtb3ZhbCBmcm9tIHRoZSB0cmVlLgogICAgIHZvaWQgcmVtb3Zl
Tm9kZShjb25zdCBBWENvcmVPYmplY3QmKTsKICAgICAvLyBSZW1vdmVzIHRoZSBnaXZlbiBub2Rl
IGFuZCBhbGwgaXRzIGRlc2NlbmRhbnRzIGZyb20gbV9ub2RlTWFwLgotICAgIHZvaWQgcmVtb3Zl
U3VidHJlZUZyb21Ob2RlTWFwKEFYSUQgYXhJRCwgQVhDb3JlT2JqZWN0KiwgY29uc3QgSGFzaFNl
dDxBWElEPiYgPSB7IH0pOworICAgIHZvaWQgcmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKEFYSUQg
YXhJRCwgQVhDb3JlT2JqZWN0Kik7CiAKICAgICAvLyBCb3RoIHNldFJvb3ROb2RlSUQgYW5kIHNl
dEZvY3VzZWROb2RlSUQgYXJlIGNhbGxlZCBkdXJpbmcgdGhlIGdlbmVyYXRpb24KICAgICAvLyBv
ZiB0aGUgSXNvbGF0ZWRUcmVlLgpAQCAtMzg4LDEwICszODgsMTEgQEAgcHJpdmF0ZToKICAgICAv
LyBNZXRob2RzIGluIHRoaXMgYmxvY2sgYXJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAg
ICAgLy8gQ29tcHV0ZXMgdGhlIHBhcmVudCBJRCBvZiB0aGUgZ2l2ZW4gb2JqZWN0LCB3aGljaCBp
cyBnZW5lcmFsbHkgdGhlICJhc3N1bWVkIiBwYXJlbnQgSUQgKGJ1dCBub3QgYWx3YXlzLCBsaWtl
IGluIHRoZSBjYXNlIG9mIHRhYmxlcykuCiAgICAgQVhJRCBwYXJlbnRJREZvck9iamVjdChBWENv
cmVPYmplY3QmLCBBWElEIGFzc3VtZWRQYXJlbnRJRCk7Ci0gICAgTm9kZUNoYW5nZSBub2RlQ2hh
bmdlRm9yT2JqZWN0KEFYQ29yZU9iamVjdCYsIEFYSUQgcGFyZW50SUQsIGJvb2wgYXR0YWNoV3Jh
cHBlciA9IHRydWUpOwotICAgIHZvaWQgY29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZShBWENv
cmVPYmplY3QmLCBBWElEIHBhcmVudElELCBib29sIGF0dGFjaFdyYXBwZXIsIFZlY3RvcjxOb2Rl
Q2hhbmdlPiYsIEhhc2hTZXQ8QVhJRD4qID0gbnVsbHB0cik7CisgICAgTm9kZUNoYW5nZSBub2Rl
Q2hhbmdlRm9yT2JqZWN0KEFYQ29yZU9iamVjdCYsIEFYSUQgcGFyZW50SUQpOworICAgIHZvaWQg
Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZShBWENvcmVPYmplY3QmLCBBWElEIHBhcmVudElE
KTsKICAgICB2b2lkIHF1ZXVlQ2hhbmdlKGNvbnN0IE5vZGVDaGFuZ2UmKSBXVEZfUkVRVUlSRVNf
TE9DSyhtX2NoYW5nZUxvZ0xvY2spOwotICAgIHZvaWQgcXVldWVDaGFuZ2VzQW5kUmVtb3ZhbHMo
Y29uc3QgVmVjdG9yPE5vZGVDaGFuZ2U+JiwgY29uc3QgVmVjdG9yPEFYSUQ+JiA9IHsgfSk7Cisg
ICAgdm9pZCByZXNvbHZlQW5kUXVldWVDaGFuZ2VzKCk7CisgICAgdm9pZCBxdWV1ZVJlbW92YWxz
KGNvbnN0IFZlY3RvcjxBWElEPiYpOwogCiAgICAgQVhJc29sYXRlZFRyZWVJRCBtX3RyZWVJRDsK
ICAgICBBWE9iamVjdENhY2hlKiBtX2F4T2JqZWN0Q2FjaGUgeyBudWxscHRyIH07CkBAIC00MDgs
NiArNDA5LDEzIEBAIHByaXZhdGU6CiAgICAgLy8gaXRzIE9iamVjdElEIHRvIGl0cyBQYXJlbnRD
aGlsZHJlbklEcyBzdHJ1Y3QuCiAgICAgSGFzaE1hcDxBWElELCBQYXJlbnRDaGlsZHJlbklEcz4g
bV9ub2RlTWFwOwogCisgICAgLy8gT25seSBhY2Nlc3NlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisg
ICAgLy8gVGhlIGtleSBpcyB0aGUgSUQgb2YgdGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgcmVzb2x2
ZWQgaW50byBhbiBtX3BlbmRpbmdBcHBlbmRzIE5vZGVDaGFuZ2UuCisgICAgLy8gVGhlIHZhbHVl
IGlzIHRoZSBwYXJlbnQgSUQgb2YgdGhlIG9iamVjdC4KKyAgICBIYXNoTWFwPEFYSUQsIEFYSUQ+
IG1fdW5yZXNvbHZlZFBlbmRpbmdBcHBlbmRzOworICAgIC8vIE9ubHkgYWNjZXNzZWQgb24gdGhl
IG1haW4gdGhyZWFkLgorICAgIGJvb2wgbV9pc0NvbGxlY3RpbmdOb2RlQ2hhbmdlcyB7IGZhbHNl
IH07CisKICAgICAvLyBPbmx5IGFjY2Vzc2VkIG9uIEFYIHRocmVhZCByZXF1ZXN0aW5nIGRhdGEu
CiAgICAgSGFzaE1hcDxBWElELCBSZWY8QVhJc29sYXRlZE9iamVjdD4+IG1fcmVhZGVyVGhyZWFk
Tm9kZU1hcDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457738</attachid>
            <date>2022-04-15 18:01:02 -0700</date>
            <delta_ts>2022-04-16 10:50:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239398-20220415200101.patch</filename>
            <type>text/plain</type>
            <size>20644</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzczODExMjRmZTU4ZDJh
MTc0MDhmOTg5MmUzYjJkYzk5ZmFmMjMxYS4uMWQ4MWVkYjdkZTI1NjYyNzRkMjUzZTU5NjJjZjA1
Yjk2MGMwMzdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIyLTA0LTE1ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgTm9kZSBjaGFuZ2VzIGNy
ZWF0ZWQgYnkgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGUgYXJlIG92ZXJ3cml0dGVuIHdoZW4g
cGVyZm9ybWVkIGR1cmluZyBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3Vi
dHJlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5
Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
Y3VycmVudGx5IGRvIHRoZSB3cm9uZyB0aGluZyBpbiB0aGlzIHNjZW5hcmlvOgorCisgICAgICAg
ICAgMS4gQSBkeW5hbWljIHBhZ2UgY2hhbmdlIGNhdXNlcyBhbiBlbGVtZW50IHRvIGJlIGluY2x1
ZGVkIG9uIHRoZSBwYWdlLCBzbyB3ZQorICAgICAgICAgICAgIGNyZWF0ZSBhIG5vZGUgY2hhbmdl
IGZvciBpdCBhbmQgaXRzIHN1YnRyZWUgYnkgY2FsbGluZyBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JT
dWJ0cmVlLgorICAgICAgICAgICAgIFRoaXMgY2F1c2VzIGEgY2FsbCB0byBjaGlsZHJlbigpIG9u
IHRoZSBsaXZlIG9iamVjdC4KKworICAgICAgICAgIDIuIEluIHRoZSBwcm9jZXNzIG9mIChvciBh
ZnRlcikgdXBkYXRpbmcgdGhlIGNoaWxkcmVuIG9mIHRoZSBsaXZlIG9iamVjdCwgd2UgcGVyZm9y
bSBzb21lCisgICAgICAgICAgICAgb3BlcmF0aW9uIHRoYXQgdHJpZ2dlcnMgQVhJc29sYXRlZFRy
ZWU6OnVwZGF0ZU5vZGUgb24gc2FpZCBvYmplY3QuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnVwZGF0ZVJvbGVBZnRlckNoaWxkcmVuQ3JlYXRpb24KKyAgICAgICAgICAgICB3b3VsZCBiZSBh
biBleGFtcGxlIG9mIHRoaXMgaWYgaXQgd2VyZSBwcm9wZXJseSBjb2RlZCB0byB1cGRhdGUgdGhl
IGlzb2xhdGVkIHRyZWUgaWYKKyAgICAgICAgICAgICB0aGUgb2JqZWN0J3Mgcm9sZSBjaGFuZ2Vz
IChJJ2xsIGFkZHJlc3MgdGhhdCBpbiBhIHNlcGFyYXRlIHBhdGNoKS4gdXBkYXRlTm9kZSByZXN1
bHRzCisgICAgICAgICAgICAgaW4gYSBub2RlIGNoYW5nZSB3aXRoIHRoZSBjb3JyZWN0IHByb3Bl
cnRpZXMgYmVpbmcgYWRkZWQgdG8gbV9wZW5kaW5nQXBwZW5kcy4KKworICAgICAgICAgIDMuIGNv
bGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUgKHN0YXJ0ZWQgaW4gc3RlcCAxKSBmaW5pc2hlcywg
YW5kIHF1ZXVlcyBhIG5vZGUgY2hhbmdlCisgICAgICAgICAgICAgZm9yIHRoZSBzYW1lIG9iamVj
dCwgYnV0IHdpdGggdGhlIHdyb25nIHByb3BlcnRpZXMgKGJlY2F1c2UgaXQgd2FzIGNyZWF0ZWQg
YmVmb3JlIHN0ZXAgMikuCisgICAgICAgICAgICAgQmVjYXVzZSBpdCBjb21lcyBhZnRlciB0aGUg
bm9kZSBjaGFuZ2UgYWRkZWQgaW4gc3RlcCAyIHRvIG1fcGVuZGluZ0FwcGVuZHMsIGl0IHdpbnMs
CisgICAgICAgICAgICAgYW5kIHdlIGFkZCBhbiBvYmplY3Qgd2l0aCB0aGUgd3JvbmcgcHJvcGVy
dGllcyB0byB0aGUgdHJlZS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgd2l0aCBh
IG5ldyBBWElzb2xhdGVkVHJlZTo6bV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMgbWVtYmVyCisg
ICAgICAgIHZhcmlhYmxlLiBUaGlzIGlzIGEgSGFzaE1hcCB3aXRoIGFuIEFYSUQga2V5LCByZXBy
ZXNlbnRpbmcgdGhlIG9iamVjdCB0byBjcmVhdGUgYSBub2RlCisgICAgICAgIGNoYW5nZSBmb3Iu
IE5vdywgYm90aCBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlIGFuZCB1cGRhdGVOb2RlIHdp
bGwgYWRkIGFuIGVudHJ5CisgICAgICAgIHRvIHRoaXMgSGFzaE1hcCwgYWxsb3dpbmcgaXQgdG8g
YmUgcmVzb2x2ZWQgaXQgKGkuZS4gYnkgY3JlYXRpbmcgdGhlIG5vZGUgY2hhbmdlKSBhdCBhIGxh
dGVyIHRpbWUuCisKKyAgICAgICAgVGhpcyBpcyBib3RoIG1vcmUgY29ycmVjdCAoYXMgaXQgcHJl
dmVudHMgYW55IG9yZGVyaW5nIGJ1Z3MgZW50aXJlbHkpLCBhbmQgbW9yZQorICAgICAgICBlZmZp
Y2llbnQsIGJlY2F1c2Ugd2Ugbm93IG5ldmVyIGNyZWF0ZSBtdWx0aXBsZSBub2RlIGNoYW5nZXMg
Zm9yIHRoZSBzYW1lIG9iamVjdC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gbmVjZXNzaXRh
dGVkIG90aGVyIGNvZGUgY2xlYW51cCBpdGVtczoKKyAgICAgICAgICAtIG1fdW5yZXNvbHZlZFBl
bmRpbmdBcHBlbmRzIGFsbG93cyB1cyB0byByZW1vdmUgdGhlIGBpZHNCZWluZ0NoYW5nZWRgIHBh
cmFtZXRlcgorICAgICAgICAgICAgd2UgcGFzc2VkIHRvIHNldmVyYWwgZnVuY3Rpb25zIHNpbmNl
IHRoaXMgbWVtYmVyIHZhcmlhYmxlIGRvZXMgdGhlIHNhbWUgdGhpbmcuCisKKyAgICAgICAgICAt
IHF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxzIGhhcyBiZWVuIHNwbGl0IHVwIGludG8gdHdvIHNlcGFy
YXRlIGZ1bmN0aW9ucyAtLSByZXNvbHZlQW5kUXVldWVDaGFuZ2VzCisgICAgICAgICAgICBhbmQg
cXVldWVSZW1vdmFscy4gU29tZSBjYWxsc2l0ZXMgZGlkIHRoaW5ncyBsaWtlIHF1ZXVlQ2hhbmdl
c0FuZFJlbW92YWxzKHsgfSwgeyBvYmplY3RUb1JlbW92ZS5vYmplY3RJRCgpIH0pLAorICAgICAg
ICAgICAgc28gaXQgbWFrZXMgc2Vuc2UgZm9yIHRoZXNlIHRvIGJlIHNlcGFyYXRlIChhbmQgd2Fz
IG5lY2Vzc2FyeSBmb3IgdGhpcyBjaGFuZ2UpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBm
aXhlcyBhbiBpc3N1ZSBmb3VuZCBieSBBbmRyZXMgR29uemFsZXogaW4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTQwMi4KKyAgICAgICAgQVhJc29sYXRlZFRyZWU6
OnVwZGF0ZU5vZGUgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBhdHRhY2ggdGhlIHdyYXBwZXIgdG8g
dGhlIG5ldyBvYmplY3Qgc2luY2UgaXQgY291bGQgYmUKKyAgICAgICAgaW4gdXNlIG9uIHRoZSBB
WCB0aHJlYWQuIFRvIG1ha2UgdGhpcyBtb3JlIGNsZWFyLCB0aGUgYGF0dGFjaFdyYXBwZXJgIHBh
cmFtZXRlciBoYXMgYmVlbiBjaGFuZ2VkIGZyb20gYQorICAgICAgICBib29sIHRvIGFuIGVudW0g
Y2FsbGVkIEF0dGFjaFdyYXBwZXJJbW1lZGlhdGVseS4KKworICAgICAgICBGaXhlcyBzaXggdGVz
dHMgaW4gaXNvbGF0ZWQgdHJlZSBtb2RlOgorICAgICAgICAgIC0gYWNjZXNzaWJpbGl0eS9hcmlh
LWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLmh0bWwKKyAgICAgICAgICAtIGFjY2Vzc2liaWxp
dHkvYXJpYS1yb2xlLW9uLWxhYmVsLmh0bWwKKyAgICAgICAgICAtIGFjY2Vzc2liaWxpdHkvbWFj
L2xhYmVsLWVsZW1lbnQtYWxsLXRleHQtc3RyaW5nLXZhbHVlLmh0bWwKKyAgICAgICAgICAtIGFj
Y2Vzc2liaWxpdHkvbWFjL2xhYmVsLWVsZW1lbnQtd2l0aC1oaWRkZW4tY29udHJvbC5odG1sCisg
ICAgICAgICAgLSBhY2Nlc3NpYmlsaXR5L21hYy9sYWJlbC1lbGVtZW50LWFsbC10ZXh0LXN0cmlu
Zy12YWx1ZS5odG1sCisgICAgICAgICAgLSBhY2Nlc3NpYmlsaXR5L21hYy9zbGlkZXItYWxsb3dz
LXRpdGxlLXVpLWVsZW1lbnQuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRy
ZWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVT
dWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpub2RlQ2hhbmdlRm9y
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpxdWV1ZUNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cXVldWVSZW1vdmFscyk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJlc29sdmVBbmRRdWV1ZUNoYW5n
ZXMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjb2xsZWN0Tm9k
ZUNoYW5nZXNGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1
cGRhdGVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cmVtb3ZlTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2Vz
KToKKyAgICAgICAgQ2hhbmdlIGxvY2FsIHZhcmlhYmxlIG5hbWUgZnJvbSBvYmplY3QgdG8gZXhp
c3RpbmdPYmplY3QgYXMgdGhpcyBtYWtlcworICAgICAgICB0aGUgY29kZSBtdWNoIG1vcmUgY2xl
YXIuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cXVldWVDaGFuZ2VzQW5kUmVt
b3ZhbHMpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZy
b21Ob2RlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpxdWV1ZUNoYW5n
ZXNBbmRSZW1vdmFscyk6CisgICAgICAgIFNwbGl0IGludG8gbmV3IGZ1bmN0aW9ucyBxdWV1ZVJl
bW92YWxzIGFuZCByZXNvbHZlQW5kUXVldWVDaGFuZ2VzLgorCiAyMDIyLTA0LTE0ICBHYWJyaWVs
IE5hdmEgTWFyaW5vICA8Z25hdmFtYXJpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFNjcmlwdERp
c2FsbG93ZWRTY29wZTo6aXNFdmVudEFsbG93ZWRJbk1haW5UaHJlYWQgYXNzZXJ0IGZhaWx1cmUg
d2hlbiBhY3RpdmF0aW5nIEF1ZGlvU2Vzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggZmExZTk0M2I1MjBlOWYyMTU1NDcxMWYwOTc3
Mjg4MWI0YzVjODJhYi4uYjAwN2Q1MTYwYjhhMTM3Mzc4NjM0ODAyYzQ0ZGIyZGI3ZGVjY2NiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBA
IC0zNTY0LDcgKzM1NjQsNyBAQCBBWFRyZWVEYXRhIEFYT2JqZWN0Q2FjaGU6OnRyZWVEYXRhKCkK
IAogICAgIHN0cmVhbSA8PCAiXG5BWE9iamVjdFRyZWU6XG4iOwogICAgIGlmIChhdXRvKiByb290
ID0gZ2V0KGRvY3VtZW50KCkudmlldygpKSkgewotICAgICAgICBjb25zdGV4cHIgT3B0aW9uU2V0
PEFYU3RyZWFtT3B0aW9ucz4gb3B0aW9ucyA9IHsgQVhTdHJlYW1PcHRpb25zOjpPYmplY3RJRCwg
QVhTdHJlYW1PcHRpb25zOjpQYXJlbnRJRCB9OworICAgICAgICBjb25zdGV4cHIgT3B0aW9uU2V0
PEFYU3RyZWFtT3B0aW9ucz4gb3B0aW9ucyA9IHsgQVhTdHJlYW1PcHRpb25zOjpPYmplY3RJRCwg
QVhTdHJlYW1PcHRpb25zOjpQYXJlbnRJRCwgQVhTdHJlYW1PcHRpb25zOjpSb2xlIH07CiAgICAg
ICAgIHN0cmVhbVN1YnRyZWUoc3RyZWFtLCByb290LCBvcHRpb25zKTsKICAgICB9IGVsc2UKICAg
ICAgICAgc3RyZWFtIDw8ICJObyByb290ISI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXgg
YTQ0MzYwNzUwYTY2ODI5YTRlYzM4NDhhNTc4YzdlYTk3ODA2NjdmZC4uNWVlMTYyMDcwZWQ5NmE3
MjQxZjAyYmJlOTdlNzRjMzMyZWE4NDllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAt
MTA2LDcgKzEwNiw3IEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0
ZShBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKQogICAgIC8vIEZvciB0aGlzLCB3ZSBuZWVk
IHRoZSByb290IGFuZCBmb2N1c2VkIG9iamVjdHMgb2YgdGhlIEFYT2JqZWN0IHRyZWUuCiAgICAg
YXV0byogYXhSb290ID0gYXhPYmplY3RDYWNoZS0+Z2V0T3JDcmVhdGUoYXhPYmplY3RDYWNoZS0+
ZG9jdW1lbnQoKS52aWV3KCkpOwogICAgIGlmIChheFJvb3QpCi0gICAgICAgIHRyZWUtPmdlbmVy
YXRlU3VidHJlZSgqYXhSb290LCBudWxscHRyLCB0cnVlKTsKKyAgICAgICAgdHJlZS0+Z2VuZXJh
dGVTdWJ0cmVlKCpheFJvb3QsIG51bGxwdHIpOwogICAgIGF1dG8qIGF4Rm9jdXMgPSBheE9iamVj
dENhY2hlLT5mb2N1c2VkT2JqZWN0Rm9yUGFnZShheE9iamVjdENhY2hlLT5kb2N1bWVudCgpLnBh
Z2UoKSk7CiAgICAgaWYgKGF4Rm9jdXMpCiAgICAgICAgIHRyZWUtPnNldEZvY3VzZWROb2RlSUQo
YXhGb2N1cy0+b2JqZWN0SUQoKSk7CkBAIC0xNjksNyArMTY5LDcgQEAgVmVjdG9yPFJlZlB0cjxB
WENvcmVPYmplY3Q+PiBBWElzb2xhdGVkVHJlZTo6b2JqZWN0c0ZvcklEcyhjb25zdCBWZWN0b3I8
QVhJRD4mIGEKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEFYSXNvbGF0ZWRUcmVlOjpn
ZW5lcmF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhDb3JlT2JqZWN0KiBheFBh
cmVudCwgYm9vbCBhdHRhY2hXcmFwcGVyKQordm9pZCBBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVT
dWJ0cmVlKEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYQ29yZU9iamVjdCogYXhQYXJlbnQpCiB7
CiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZSJfcyk7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTE3OCw5ICsxNzgsOCBAQCB2b2lkIEFYSXNvbGF0
ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhDb3JlT2Jq
ZWN0KiBheFBhcgogICAgICAgICByZXR1cm47CiAKICAgICBBWElEIHBhcmVudElEID0gYXhQYXJl
bnQgPyBheFBhcmVudC0+b2JqZWN0SUQoKSA6IEFYSUQoKTsKLSAgICBWZWN0b3I8Tm9kZUNoYW5n
ZT4gY2hhbmdlczsKLSAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKGF4T2JqZWN0LCBw
YXJlbnRJRCwgYXR0YWNoV3JhcHBlciwgY2hhbmdlcyk7Ci0gICAgcXVldWVDaGFuZ2VzQW5kUmVt
b3ZhbHMoY2hhbmdlcyk7CisgICAgY29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZShheE9iamVj
dCwgcGFyZW50SUQpOworICAgIHJlc29sdmVBbmRRdWV1ZUNoYW5nZXMoKTsKIH0KIAogQVhJRCBB
WElzb2xhdGVkVHJlZTo6cGFyZW50SURGb3JPYmplY3QoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwg
QVhJRCBhc3N1bWVkUGFyZW50SUQpCkBAIC0yMDMsMTAgKzIwMiw5IEBAIEFYSUQgQVhJc29sYXRl
ZFRyZWU6OnBhcmVudElERm9yT2JqZWN0KEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYSUQgYXNz
dW1lZFBhcmVuCiAgICAgcmV0dXJuIGFzc3VtZWRQYXJlbnRJRDsKIH0KIAotQVhJc29sYXRlZFRy
ZWU6Ok5vZGVDaGFuZ2UgQVhJc29sYXRlZFRyZWU6Om5vZGVDaGFuZ2VGb3JPYmplY3QoQVhDb3Jl
T2JqZWN0JiBheE9iamVjdCwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyKQorQVhJ
c29sYXRlZFRyZWU6Ok5vZGVDaGFuZ2UgQVhJc29sYXRlZFRyZWU6Om5vZGVDaGFuZ2VGb3JPYmpl
Y3QoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhJRCBwYXJlbnRJRCwgQXR0YWNoV3JhcHBlcklt
bWVkaWF0ZWx5IGF0dGFjaFdyYXBwZXJJbW1lZGlhdGVseSkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotCiAgICAgYXV0byBvYmplY3QgPSBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUo
YXhPYmplY3QsIHRoaXMsIHBhcmVudElERm9yT2JqZWN0KGF4T2JqZWN0LCBwYXJlbnRJRCkpOwog
ICAgIE5vZGVDaGFuZ2Ugbm9kZUNoYW5nZSB7IG9iamVjdCwgbnVsbHB0ciB9OwogCkBAIC0yMTcs
NyArMjE1LDcgQEAgQVhJc29sYXRlZFRyZWU6Ok5vZGVDaGFuZ2UgQVhJc29sYXRlZFRyZWU6Om5v
ZGVDaGFuZ2VGb3JPYmplY3QoQVhDb3JlT2JqZWN0JiBheE8KICAgICB9CiAKICAgICBBU1NFUlQo
YXhPYmplY3Qud3JhcHBlcigpKTsKLSAgICBpZiAoYXR0YWNoV3JhcHBlcikKKyAgICBpZiAoYXR0
YWNoV3JhcHBlckltbWVkaWF0ZWx5ID09IEF0dGFjaFdyYXBwZXJJbW1lZGlhdGVseTo6WWVzKQog
ICAgICAgICBvYmplY3QtPmF0dGFjaFBsYXRmb3JtV3JhcHBlcihheE9iamVjdC53cmFwcGVyKCkp
OwogICAgIGVsc2UgewogICAgICAgICAvLyBTZXQgdGhlIHdyYXBwZXIgaW4gdGhlIE5vZGVDaGFu
Z2Ugc28gdGhhdCBpdCBpcyBzZXQgb24gdGhlIEFYIHRocmVhZC4KQEAgLTIyNSwxMiArMjIzLDEw
IEBAIEFYSXNvbGF0ZWRUcmVlOjpOb2RlQ2hhbmdlIEFYSXNvbGF0ZWRUcmVlOjpub2RlQ2hhbmdl
Rm9yT2JqZWN0KEFYQ29yZU9iamVjdCYgYXhPCiAgICAgfQogCiAgICAgbV9ub2RlTWFwLnNldChh
eE9iamVjdC5vYmplY3RJRCgpLCBQYXJlbnRDaGlsZHJlbklEcyB7IHBhcmVudElELCBheE9iamVj
dC5jaGlsZHJlbklEcygpIH0pOwotCiAgICAgaWYgKCFwYXJlbnRJRC5pc1ZhbGlkKCkpIHsKICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgICAgICBzZXRSb290
Tm9kZShub2RlQ2hhbmdlLmlzb2xhdGVkT2JqZWN0LnB0cigpKTsKICAgICB9Ci0KICAgICByZXR1
cm4gbm9kZUNoYW5nZTsKIH0KIApAQCAtMjQwLDcgKzIzNiw2IEBAIHZvaWQgQVhJc29sYXRlZFRy
ZWU6OnF1ZXVlQ2hhbmdlKGNvbnN0IE5vZGVDaGFuZ2UmIG5vZGVDaGFuZ2UpCiAgICAgQVNTRVJU
KG1fY2hhbmdlTG9nTG9jay5pc0xvY2tlZCgpKTsKIAogICAgIG1fcGVuZGluZ0FwcGVuZHMuYXBw
ZW5kKG5vZGVDaGFuZ2UpOwotCiAgICAgQVhJRCBwYXJlbnRJRCA9IG5vZGVDaGFuZ2UuaXNvbGF0
ZWRPYmplY3QtPnBhcmVudCgpOwogICAgIGlmIChwYXJlbnRJRC5pc1ZhbGlkKCkpIHsKICAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX25vZGVNYXAuY29udGFpbnMocGFyZW50SUQpLCAibm9k
ZSBtYXAgc2hvdWxkJ3ZlIGNvbnRhaW5lZCBwYXJlbnRJRDogJXMiLCBwYXJlbnRJRC5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC0yNTUsMzIgKzI1MCw0NCBAQCB2b2lkIEFYSXNv
bGF0ZWRUcmVlOjpxdWV1ZUNoYW5nZShjb25zdCBOb2RlQ2hhbmdlJiBub2RlQ2hhbmdlKQogICAg
IG1fcGVuZGluZ0NoaWxkcmVuVXBkYXRlcy5hcHBlbmQoeyBvYmplY3RJRCwgV1RGTW92ZShjaGls
ZHJlbklEcykgfSk7CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OnF1ZXVlQ2hhbmdlc0FuZFJl
bW92YWxzKGNvbnN0IFZlY3RvcjxOb2RlQ2hhbmdlPiYgY2hhbmdlcywgY29uc3QgVmVjdG9yPEFY
SUQ+JiBzdWJ0cmVlUmVtb3ZhbHMpCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjpxdWV1ZVJlbW92YWxz
KGNvbnN0IFZlY3RvcjxBWElEPiYgc3VidHJlZVJlbW92YWxzKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0KICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07Ci0K
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGF4SUQgOiBzdWJ0cmVlUmVtb3ZhbHMpCiAgICAgICAgIG1f
cGVuZGluZ1N1YnRyZWVSZW1vdmFscy5hcHBlbmQoYXhJRCk7Cit9CiAKLSAgICBmb3IgKGNvbnN0
IGF1dG8mIGNoYW5nZSA6IGNoYW5nZXMpCi0gICAgICAgIHF1ZXVlQ2hhbmdlKGNoYW5nZSk7Cit2
b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZXNvbHZlQW5kUXVldWVDaGFuZ2VzKCkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwor
ICAgIGlmICghY2FjaGUgfHwgbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8Tm9kZUNoYW5nZT4gcmVzb2x2ZWRBcHBlbmRz
OworICAgIHJlc29sdmVkQXBwZW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fdW5yZXNvbHZl
ZFBlbmRpbmdBcHBlbmRzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiB1bnJlc29sdmVk
Q2hhbmdlIDogbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMpIHsKKyAgICAgICAgaWYgKGF1dG8q
IGF4T2JqZWN0ID0gY2FjaGUtPm9iamVjdEZyb21BWElEKHVucmVzb2x2ZWRDaGFuZ2Uua2V5KSkK
KyAgICAgICAgICAgIHJlc29sdmVkQXBwZW5kcy51bmNoZWNrZWRBcHBlbmQobm9kZUNoYW5nZUZv
ck9iamVjdCgqYXhPYmplY3QsIHVucmVzb2x2ZWRDaGFuZ2UudmFsdWUuZmlyc3QsIHVucmVzb2x2
ZWRDaGFuZ2UudmFsdWUuc2Vjb25kKSk7CisgICAgfQorICAgIG1fdW5yZXNvbHZlZFBlbmRpbmdB
cHBlbmRzLmNsZWFyKCk7CisKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07
CisgICAgZm9yIChjb25zdCBhdXRvJiByZXNvbHZlZEFwcGVuZCA6IHJlc29sdmVkQXBwZW5kcykK
KyAgICAgICAgcXVldWVDaGFuZ2UocmVzb2x2ZWRBcHBlbmQpOwogfQogCi12b2lkIEFYSXNvbGF0
ZWRUcmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKEFYQ29yZU9iamVjdCYgYXhPYmpl
Y3QsIEFYSUQgcGFyZW50SUQsIGJvb2wgYXR0YWNoV3JhcHBlciwgVmVjdG9yPE5vZGVDaGFuZ2U+
JiBjaGFuZ2VzLCBIYXNoU2V0PEFYSUQ+KiBpZHNCZWluZ0NoYW5nZWQpCit2b2lkIEFYSXNvbGF0
ZWRUcmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKEFYQ29yZU9iamVjdCYgYXhPYmpl
Y3QsIEFYSUQgcGFyZW50SUQpCiB7CiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OmNvbGxl
Y3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUiX3MpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0KLSAgICBhdXRvIG5vZGVDaGFuZ2UgPSBub2RlQ2hhbmdlRm9yT2JqZWN0KGF4T2JqZWN0LCBw
YXJlbnRJRCwgYXR0YWNoV3JhcHBlcik7Ci0gICAgaWYgKGlkc0JlaW5nQ2hhbmdlZCkKLSAgICAg
ICAgaWRzQmVpbmdDaGFuZ2VkLT5hZGQobm9kZUNoYW5nZS5pc29sYXRlZE9iamVjdC0+b2JqZWN0
SUQoKSk7Ci0gICAgY2hhbmdlcy5hcHBlbmQoV1RGTW92ZShub2RlQ2hhbmdlKSk7CisgICAgU2V0
Rm9yU2NvcGUgY29sbGVjdGluZ05vZGVDaGFuZ2VzKG1faXNDb2xsZWN0aW5nTm9kZUNoYW5nZXMs
IHRydWUpOworICAgIG1fdW5yZXNvbHZlZFBlbmRpbmdBcHBlbmRzLnNldChheE9iamVjdC5vYmpl
Y3RJRCgpLCBzdGQ6Om1ha2VfcGFpcihwYXJlbnRJRCwgQXR0YWNoV3JhcHBlckltbWVkaWF0ZWx5
OjpZZXMpKTsKIAogICAgIGF1dG8gYXhDaGlsZHJlbkNvcHkgPSBheE9iamVjdC5jaGlsZHJlbigp
OwogICAgIGF1dG8gYXhDaGlsZHJlbklEcyA9IGF4Q2hpbGRyZW5Db3B5Lm1hcChbJl0oYXV0byYg
YXhDaGlsZCkgewotICAgICAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpheENoaWxk
LCBheE9iamVjdC5vYmplY3RJRCgpLCBhdHRhY2hXcmFwcGVyLCBjaGFuZ2VzLCBpZHNCZWluZ0No
YW5nZWQpOworICAgICAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpheENoaWxkLCBh
eE9iamVjdC5vYmplY3RJRCgpKTsKICAgICAgICAgcmV0dXJuIGF4Q2hpbGQtPm9iamVjdElEKCk7
CiAgICAgfSk7CiAgICAgbV9ub2RlTWFwLnNldChheE9iamVjdC5vYmplY3RJRCgpLCBQYXJlbnRD
aGlsZHJlbklEcyB7IHBhcmVudElELCBXVEZNb3ZlKGF4Q2hpbGRyZW5JRHMpIH0pOwpAQCAtMjky
LDE1ICsyOTksMjAgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZShBWENvcmVPYmpl
Y3QmIGF4T2JqZWN0KQogICAgIEFYTE9HKCZheE9iamVjdCk7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAotICAgIEFYSUQgYXhJRCA9IGF4T2JqZWN0Lm9iamVjdElEKCk7CiAgICAgYXV0
byogYXhQYXJlbnQgPSBheE9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBBWElE
IHBhcmVudElEID0gYXhQYXJlbnQgPyBheFBhcmVudC0+b2JqZWN0SUQoKSA6IEFYSUQoKTsKLQot
ICAgIGF1dG8gY2hhbmdlID0gbm9kZUNoYW5nZUZvck9iamVjdChheE9iamVjdCwgcGFyZW50SUQs
IHRydWUpOwotCi0gICAgLy8gUmVtb3ZlIHRoZSBvbGQgb2JqZWN0IGFuZCBzZXQgdGhlIG5ldyBv
bmUgdG8gYmUgdXBkYXRlZCBvbiB0aGUgQVggdGhyZWFkLgorICAgIC8vIElmIHdlIHVwZGF0ZSBh
IG5vZGUgYXMgdGhlIHJlc3VsdCBvZiBzb21lIHNpZGUgZWZmZWN0IHdoaWxlIGNvbGxlY3Rpbmcg
bm9kZSBjaGFuZ2VzIChlLmcuIGEgcm9sZSBjaGFuZ2UgZnJvbQorICAgIC8vIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnVwZGF0ZVJvbGVBZnRlckNoaWxkcmVuQ3JlYXRpb24pLCBxdWV1ZSB0
aGUgYXBwZW5kIHVwIHRvIGJlIHJlc29sdmVkIHdpdGggdGhlIHJlc3QKKyAgICAvLyBvZiB0aGUg
Y29sbGVjdGVkIGNoYW5nZXMuIFRoaXMgcHJldmVudHMgdXMgZnJvbSBjcmVhdGluZyB0d28gbm9k
ZSBjaGFuZ2VzIGZvciB0aGUgc2FtZSBvYmplY3QuCisgICAgaWYgKG1faXNDb2xsZWN0aW5nTm9k
ZUNoYW5nZXMpIHsKKyAgICAgICAgbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMuc2V0KGF4T2Jq
ZWN0Lm9iamVjdElEKCksIHN0ZDo6bWFrZV9wYWlyKFdURk1vdmUocGFyZW50SUQpLCBBdHRhY2hX
cmFwcGVySW1tZWRpYXRlbHk6Ok5vKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8g
T3RoZXJ3aXNlLCByZXNvbHZlIHRoZSBjaGFuZ2UgaW1tZWRpYXRlbHkgYW5kIHF1ZXVlIGl0IHVw
LgorICAgIC8vIEluIGJvdGggY2FzZXMsIHdlIGNhbid0IGF0dGFjaCB0aGUgd3JhcHBlciBpbW1l
ZGlhdGVseSBvbiB0aGUgbWFpbiB0aHJlYWQsIHNpbmNlIHRoZSB3cmFwcGVyIGNvdWxkIGJlIGlu
IHVzZQorICAgIC8vIG9uIHRoZSBBWCB0aHJlYWQgKGJlY2F1c2UgdGhpcyBmdW5jdGlvbiB1cGRh
dGVzIGFuIGV4aXN0aW5nIG5vZGUpLgorICAgIGF1dG8gY2hhbmdlID0gbm9kZUNoYW5nZUZvck9i
amVjdChheE9iamVjdCwgcGFyZW50SUQsIEF0dGFjaFdyYXBwZXJJbW1lZGlhdGVseTo6Tm8pOwog
ICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKLSAgICBtX3BlbmRpbmdOb2Rl
UmVtb3ZhbHMuYXBwZW5kKHsgYXhJRCwgQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVt
ZW50Q2hhbmdlZCB9KTsKICAgICBxdWV1ZUNoYW5nZShjaGFuZ2UpOwogfQogCkBAIC00NjIsOCAr
NDc0LDYgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0
JiBheE9iamVjdCkKICAgICBjb25zdCBhdXRvJiBuZXdDaGlsZHJlbiA9IGF4QW5jZXN0b3ItPmNo
aWxkcmVuKCk7CiAgICAgYXV0byBuZXdDaGlsZHJlbklEcyA9IGF4QW5jZXN0b3ItPmNoaWxkcmVu
SURzKGZhbHNlKTsKIAotICAgIFZlY3RvcjxOb2RlQ2hhbmdlPiBjaGFuZ2VzOwotICAgIEhhc2hT
ZXQ8QVhJRD4gaWRzQmVpbmdDaGFuZ2VkOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3
Q2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUKG5ld0NoaWxkcmVuW2ldLT5v
YmplY3RJRCgpID09IG5ld0NoaWxkcmVuSURzW2ldKTsKICAgICAgICAgQVNTRVJUKG5ld0NoaWxk
cmVuSURzW2ldLmlzVmFsaWQoKSk7CkBAIC00NzQsNyArNDg0LDcgQEAgdm9pZCBBWElzb2xhdGVk
VHJlZTo6dXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0JiBheE9iamVjdCkKICAgICAgICAgICAg
IC8vIFRoaXMgaXMgYSBuZXcgY2hpbGQsIGFkZCBpdCB0byB0aGUgdHJlZS4KICAgICAgICAgICAg
IEFYTE9HKG1ha2VTdHJpbmcoIkFYSUQgIiwgYXhBbmNlc3Rvci0+b2JqZWN0SUQoKS5sb2dnaW5n
U3RyaW5nKCksICIgZ2FpbmluZyBuZXcgc3VidHJlZSwgc3RhcnRpbmcgYXQgSUQgIiwgbmV3Q2hp
bGRyZW5baV0tPm9iamVjdElEKCkubG9nZ2luZ1N0cmluZygpLCAiOiIpKTsKICAgICAgICAgICAg
IEFYTE9HKG5ld0NoaWxkcmVuW2ldKTsKLSAgICAgICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0Zv
clN1YnRyZWUoKm5ld0NoaWxkcmVuW2ldLCBheEFuY2VzdG9yLT5vYmplY3RJRCgpLCB0cnVlLCBj
aGFuZ2VzLCAmaWRzQmVpbmdDaGFuZ2VkKTsKKyAgICAgICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdl
c0ZvclN1YnRyZWUoKm5ld0NoaWxkcmVuW2ldLCBheEFuY2VzdG9yLT5vYmplY3RJRCgpKTsKICAg
ICAgICAgfQogICAgIH0KICAgICBtX25vZGVNYXAuc2V0KGF4QW5jZXN0b3ItPm9iamVjdElEKCks
IFBhcmVudENoaWxkcmVuSURzIHsgb2xkSURzLnBhcmVudElELCBXVEZNb3ZlKG5ld0NoaWxkcmVu
SURzKSB9KTsKQEAgLTQ4Nyw5ICs0OTcsMTAgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRl
Q2hpbGRyZW4oQVhDb3JlT2JqZWN0JiBheE9iamVjdCkKICAgICAgICAgLy8gICAxLiBPYmplY3Qg
MTIzIGlzIHNsYXRlZCB0byBiZSBhIGNoaWxkIG9mIHRoaXMgb2JqZWN0IChpLmUuIGluIG5ld0No
aWxkcmVuKSwgYW5kIHdlIGNvbGxlY3Qgbm9kZSBjaGFuZ2VzIGZvciBpdC4KICAgICAgICAgLy8g
ICAyLiBPYmplY3QgMTIzIGlzIGN1cnJlbnRseSBhIG1lbWJlciBvZiBhIHN1YnRyZWUgb2Ygc29t
ZSBvdGhlciBvYmplY3QgaW4gb2xkQ2hpbGRyZW5JRHMuCiAgICAgICAgIC8vICAgMy4gVGh1cywg
d2UgZG9uJ3Qgd2FudCB0byBkZWxldGUgT2JqZWN0IDEyMyBmcm9tIHRoZSBub2RlbWFwLCBpbnN0
ZWFkIGFsbG93aW5nIGl0IHRvIGJlIG1vdmVkLgotICAgICAgICByZW1vdmVTdWJ0cmVlRnJvbU5v
ZGVNYXAoYXhJRCwgYXhBbmNlc3RvciwgaWRzQmVpbmdDaGFuZ2VkKTsKKyAgICAgICAgcmVtb3Zl
U3VidHJlZUZyb21Ob2RlTWFwKGF4SUQsIGF4QW5jZXN0b3IpOwogICAgIH0KLSAgICBxdWV1ZUNo
YW5nZXNBbmRSZW1vdmFscyhjaGFuZ2VzLCBvbGRDaGlsZHJlbklEcyk7CisgICAgcmVzb2x2ZUFu
ZFF1ZXVlQ2hhbmdlcygpOworICAgIHF1ZXVlUmVtb3ZhbHMob2xkQ2hpbGRyZW5JRHMpOwogCiAg
ICAgLy8gQWxzbyBxdWV1ZSB1cGRhdGVzIGZvciBwcm9wZXJ0aWVzIHRoYXQgZGVyaXZlIGZyb20g
Y2hpbGRyZW4oKS4KICAgICB1cGRhdGVSZWxhdGVkUHJvcGVydGllcygqYXhBbmNlc3Rvcik7CkBA
IC01NTUsMTAgKzU2NiwxMCBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVOb2RlKGNvbnN0
IEFYQ29yZU9iamVjdCYgYXhPYmplY3QpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAog
ICAgIHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChheE9iamVjdC5vYmplY3RJRCgpLCBheE9iamVj
dC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSk7Ci0gICAgcXVldWVDaGFuZ2VzQW5kUmVtb3ZhbHMo
eyB9LCB7IGF4T2JqZWN0Lm9iamVjdElEKCkgfSk7CisgICAgcXVldWVSZW1vdmFscyh7IGF4T2Jq
ZWN0Lm9iamVjdElEKCkgfSk7CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRy
ZWVGcm9tTm9kZU1hcChBWElEIG9iamVjdElELCBBWENvcmVPYmplY3QqIGF4UGFyZW50LCBjb25z
dCBIYXNoU2V0PEFYSUQ+JiBpZHNUb0tlZXApCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVT
dWJ0cmVlRnJvbU5vZGVNYXAoQVhJRCBvYmplY3RJRCwgQVhDb3JlT2JqZWN0KiBheFBhcmVudCkK
IHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFw
Il9zKTsKICAgICBBWExPRyhtYWtlU3RyaW5nKCJSZW1vdmluZyBzdWJ0cmVlIGZvciBvYmplY3RJ
RCAiLCBvYmplY3RJRC5sb2dnaW5nU3RyaW5nKCkpKTsKQEAgLTU3OCw3ICs1ODksNyBAQCB2b2lk
IEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAoQVhJRCBvYmplY3RJRCwg
QVhDb3JlT2JqZWN0KiBheFBhcgogICAgIFZlY3RvcjxBWElEPiByZW1vdmFscyA9IHsgb2JqZWN0
SUQgfTsKICAgICB3aGlsZSAocmVtb3ZhbHMuc2l6ZSgpKSB7CiAgICAgICAgIEFYSUQgYXhJRCA9
IHJlbW92YWxzLnRha2VMYXN0KCk7Ci0gICAgICAgIGlmICghYXhJRC5pc1ZhbGlkKCkgfHwgaWRz
VG9LZWVwLmNvbnRhaW5zKGF4SUQpKQorICAgICAgICBpZiAoIWF4SUQuaXNWYWxpZCgpIHx8IG1f
dW5yZXNvbHZlZFBlbmRpbmdBcHBlbmRzLmNvbnRhaW5zKGF4SUQpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgYXV0byBpdCA9IG1fbm9kZU1hcC5maW5kKGF4SUQpOwpAQCAtNjQ4
LDEzICs2NTksMTMgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcygp
CiAgICAgICAgIGlmICghd3JhcHBlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IGlmIChhdXRvIG9iamVjdCA9IG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5nZXQoYXhJRCkpIHsKLSAg
ICAgICAgICAgIGlmIChvYmplY3QgIT0gJml0ZW0uaXNvbGF0ZWRPYmplY3QuZ2V0KCkKLSAgICAg
ICAgICAgICAgICAmJiBvYmplY3QtPndyYXBwZXIoKSA9PSB3cmFwcGVyLmdldCgpKSB7CisgICAg
ICAgIGlmIChhdXRvIGV4aXN0aW5nT2JqZWN0ID0gbV9yZWFkZXJUaHJlYWROb2RlTWFwLmdldChh
eElEKSkgeworICAgICAgICAgICAgaWYgKGV4aXN0aW5nT2JqZWN0ICE9ICZpdGVtLmlzb2xhdGVk
T2JqZWN0LmdldCgpCisgICAgICAgICAgICAgICAgJiYgZXhpc3RpbmdPYmplY3QtPndyYXBwZXIo
KSA9PSB3cmFwcGVyLmdldCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIG5ldyBJc29sYXRl
ZE9iamVjdCBpcyBhIHJlcGxhY2VtZW50IGZvciBhbiBleGlzdGluZyBvYmplY3QKICAgICAgICAg
ICAgICAgICAvLyBhcyB0aGUgcmVzdWx0IG9mIGFuIHVwZGF0ZS4gVGh1cyBkZXRhY2ggdGhlIHdy
YXBwZXIgZnJvbSB0aGUKICAgICAgICAgICAgICAgICAvLyBleGlzdGluZyBvYmplY3QgYW5kIGF0
dGFjaCBpdCB0byB0aGUgbmV3IG9uZS4KLSAgICAgICAgICAgICAgICBvYmplY3QtPmRldGFjaFdy
YXBwZXIoQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVtZW50Q2hhbmdlZCk7CisgICAg
ICAgICAgICAgICAgZXhpc3RpbmdPYmplY3QtPmRldGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eURl
dGFjaG1lbnRUeXBlOjpFbGVtZW50Q2hhbmdlZCk7CiAgICAgICAgICAgICAgICAgaXRlbS5pc29s
YXRlZE9iamVjdC0+YXR0YWNoUGxhdGZvcm1XcmFwcGVyKHdyYXBwZXIuZ2V0KCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgbV9yZWFkZXJUaHJlYWROb2RlTWFwLnJlbW92ZShheElEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGZiYmE1ZTc0YjZiNWQ4ZTEwYzI4MWQxZWQ1NzE1NWJm
NjE3YjhlNzIuLjI5MDhiZjJjNDYzZDhkMDc3NDZmOTUyMTJiMDQ2ZmI0OGE4Y2Q5YjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuaApAQCAtMzQ5LDcgKzM0OSw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IH07CiAKLSAgICB2b2lkIGdlbmVyYXRlU3VidHJlZShBWENvcmVPYmplY3QmLCBBWENvcmVPYmpl
Y3QqLCBib29sIGF0dGFjaFdyYXBwZXIpOworICAgIHZvaWQgZ2VuZXJhdGVTdWJ0cmVlKEFYQ29y
ZU9iamVjdCYsIEFYQ29yZU9iamVjdCopOwogICAgIHZvaWQgdXBkYXRlTm9kZShBWENvcmVPYmpl
Y3QmKTsKICAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuKEFYQ29yZU9iamVjdCYpOwogICAgIHZvaWQg
dXBkYXRlTm9kZVByb3BlcnR5KEFYQ29yZU9iamVjdCYsIEFYUHJvcGVydHlOYW1lKTsKQEAgLTM2
Myw3ICszNjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmVtb3ZlcyB0aGUgY29ycmVzcG9uZGluZyBp
c29sYXRlZCBvYmplY3QgYW5kIGFsbCBkZXNjZW5kYW50cyBmcm9tIHRoZSBtX25vZGVNYXAgYW5k
IHF1ZXVlcyB0aGVpciByZW1vdmFsIGZyb20gdGhlIHRyZWUuCiAgICAgdm9pZCByZW1vdmVOb2Rl
KGNvbnN0IEFYQ29yZU9iamVjdCYpOwogICAgIC8vIFJlbW92ZXMgdGhlIGdpdmVuIG5vZGUgYW5k
IGFsbCBpdHMgZGVzY2VuZGFudHMgZnJvbSBtX25vZGVNYXAuCi0gICAgdm9pZCByZW1vdmVTdWJ0
cmVlRnJvbU5vZGVNYXAoQVhJRCBheElELCBBWENvcmVPYmplY3QqLCBjb25zdCBIYXNoU2V0PEFY
SUQ+JiA9IHsgfSk7CisgICAgdm9pZCByZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAoQVhJRCBheElE
LCBBWENvcmVPYmplY3QqKTsKIAogICAgIC8vIEJvdGggc2V0Um9vdE5vZGVJRCBhbmQgc2V0Rm9j
dXNlZE5vZGVJRCBhcmUgY2FsbGVkIGR1cmluZyB0aGUgZ2VuZXJhdGlvbgogICAgIC8vIG9mIHRo
ZSBJc29sYXRlZFRyZWUuCkBAIC0zODgsMTAgKzM4OCwxMiBAQCBwcml2YXRlOgogICAgIC8vIE1l
dGhvZHMgaW4gdGhpcyBibG9jayBhcmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICAv
LyBDb21wdXRlcyB0aGUgcGFyZW50IElEIG9mIHRoZSBnaXZlbiBvYmplY3QsIHdoaWNoIGlzIGdl
bmVyYWxseSB0aGUgImFzc3VtZWQiIHBhcmVudCBJRCAoYnV0IG5vdCBhbHdheXMsIGxpa2UgaW4g
dGhlIGNhc2Ugb2YgdGFibGVzKS4KICAgICBBWElEIHBhcmVudElERm9yT2JqZWN0KEFYQ29yZU9i
amVjdCYsIEFYSUQgYXNzdW1lZFBhcmVudElEKTsKLSAgICBOb2RlQ2hhbmdlIG5vZGVDaGFuZ2VG
b3JPYmplY3QoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVy
ID0gdHJ1ZSk7Ci0gICAgdm9pZCBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKEFYQ29yZU9i
amVjdCYsIEFYSUQgcGFyZW50SUQsIGJvb2wgYXR0YWNoV3JhcHBlciwgVmVjdG9yPE5vZGVDaGFu
Z2U+JiwgSGFzaFNldDxBWElEPiogPSBudWxscHRyKTsKKyAgICBlbnVtIGNsYXNzIEF0dGFjaFdy
YXBwZXJJbW1lZGlhdGVseSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgTm9kZUNoYW5nZSBub2Rl
Q2hhbmdlRm9yT2JqZWN0KEFYQ29yZU9iamVjdCYsIEFYSUQgcGFyZW50SUQsIEF0dGFjaFdyYXBw
ZXJJbW1lZGlhdGVseSA9IEF0dGFjaFdyYXBwZXJJbW1lZGlhdGVseTo6WWVzKTsKKyAgICB2b2lk
IGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJ
RCk7CiAgICAgdm9pZCBxdWV1ZUNoYW5nZShjb25zdCBOb2RlQ2hhbmdlJikgV1RGX1JFUVVJUkVT
X0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKLSAgICB2b2lkIHF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxz
KGNvbnN0IFZlY3RvcjxOb2RlQ2hhbmdlPiYsIGNvbnN0IFZlY3RvcjxBWElEPiYgPSB7IH0pOwor
ICAgIHZvaWQgcmVzb2x2ZUFuZFF1ZXVlQ2hhbmdlcygpOworICAgIHZvaWQgcXVldWVSZW1vdmFs
cyhjb25zdCBWZWN0b3I8QVhJRD4mKTsKIAogICAgIEFYSXNvbGF0ZWRUcmVlSUQgbV90cmVlSUQ7
CiAgICAgQVhPYmplY3RDYWNoZSogbV9heE9iamVjdENhY2hlIHsgbnVsbHB0ciB9OwpAQCAtNDA4
LDYgKzQxMCwxNCBAQCBwcml2YXRlOgogICAgIC8vIGl0cyBPYmplY3RJRCB0byBpdHMgUGFyZW50
Q2hpbGRyZW5JRHMgc3RydWN0LgogICAgIEhhc2hNYXA8QVhJRCwgUGFyZW50Q2hpbGRyZW5JRHM+
IG1fbm9kZU1hcDsKIAorICAgIC8vIE9ubHkgYWNjZXNzZWQgb24gdGhlIG1haW4gdGhyZWFkLgor
ICAgIC8vIFRoZSBrZXkgaXMgdGhlIElEIG9mIHRoZSBvYmplY3QgdGhhdCB3aWxsIGJlIHJlc29s
dmVkIGludG8gYW4gbV9wZW5kaW5nQXBwZW5kcyBOb2RlQ2hhbmdlLgorICAgIC8vIFRoZSB2YWx1
ZSByZXByZXNlbnRzIHRoZSBwYXJlbnQgSUQgb2YgdGhlIG9iamVjdCwgYW5kIHdoZXRoZXIgdGhl
IHdyYXBwZXIgc2hvdWxkIGJlIGF0dGFjaGVkIGltbWVkaWF0ZWx5CisgICAgLy8gdG8gdGhlIG5l
dyBpc29sYXRlZCBvYmplY3Qgd2hlbiB0aGUgbm9kZSBjaGFuZ2UgaXMgcmVzb2x2ZWQuCisgICAg
SGFzaE1hcDxBWElELCBzdGQ6OnBhaXI8QVhJRCwgQXR0YWNoV3JhcHBlckltbWVkaWF0ZWx5Pj4g
bV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHM7CisgICAgLy8gT25seSBhY2Nlc3NlZCBvbiB0aGUg
bWFpbiB0aHJlYWQuCisgICAgYm9vbCBtX2lzQ29sbGVjdGluZ05vZGVDaGFuZ2VzIHsgZmFsc2Ug
fTsKKwogICAgIC8vIE9ubHkgYWNjZXNzZWQgb24gQVggdGhyZWFkIHJlcXVlc3RpbmcgZGF0YS4K
ICAgICBIYXNoTWFwPEFYSUQsIFJlZjxBWElzb2xhdGVkT2JqZWN0Pj4gbV9yZWFkZXJUaHJlYWRO
b2RlTWFwOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457750</attachid>
            <date>2022-04-16 10:50:27 -0700</date>
            <delta_ts>2022-04-16 13:12:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239398-20220416125026.patch</filename>
            <type>text/plain</type>
            <size>19716</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzczODExMjRmZTU4ZDJh
MTc0MDhmOTg5MmUzYjJkYzk5ZmFmMjMxYS4uYzJlZjc3NjUxZmZlOWNjYjYzOGFhODY4MTVjMWQ0
ODcxMmQyMDAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIyLTA0LTE1ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgTm9kZSBjaGFuZ2VzIGNy
ZWF0ZWQgYnkgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGUgYXJlIG92ZXJ3cml0dGVuIHdoZW4g
cGVyZm9ybWVkIGR1cmluZyBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3Vi
dHJlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5
Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
Y3VycmVudGx5IGRvIHRoZSB3cm9uZyB0aGluZyBpbiB0aGlzIHNjZW5hcmlvOgorCisgICAgICAg
ICAgMS4gQSBkeW5hbWljIHBhZ2UgY2hhbmdlIGNhdXNlcyBhbiBlbGVtZW50IHRvIGJlIGluY2x1
ZGVkIG9uIHRoZSBwYWdlLCBzbyB3ZQorICAgICAgICAgICAgIGNyZWF0ZSBhIG5vZGUgY2hhbmdl
IGZvciBpdCBhbmQgaXRzIHN1YnRyZWUgYnkgY2FsbGluZyBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JT
dWJ0cmVlLgorICAgICAgICAgICAgIFRoaXMgY2F1c2VzIGEgY2FsbCB0byBjaGlsZHJlbigpIG9u
IHRoZSBsaXZlIG9iamVjdC4KKworICAgICAgICAgIDIuIEluIHRoZSBwcm9jZXNzIG9mIChvciBh
ZnRlcikgdXBkYXRpbmcgdGhlIGNoaWxkcmVuIG9mIHRoZSBsaXZlIG9iamVjdCwgd2UgcGVyZm9y
bSBzb21lCisgICAgICAgICAgICAgb3BlcmF0aW9uIHRoYXQgdHJpZ2dlcnMgQVhJc29sYXRlZFRy
ZWU6OnVwZGF0ZU5vZGUgb24gc2FpZCBvYmplY3QuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnVwZGF0ZVJvbGVBZnRlckNoaWxkcmVuQ3JlYXRpb24KKyAgICAgICAgICAgICB3b3VsZCBiZSBh
biBleGFtcGxlIG9mIHRoaXMgaWYgaXQgd2VyZSBwcm9wZXJseSBjb2RlZCB0byB1cGRhdGUgdGhl
IGlzb2xhdGVkIHRyZWUgaWYKKyAgICAgICAgICAgICB0aGUgb2JqZWN0J3Mgcm9sZSBjaGFuZ2Vz
IChJJ2xsIGFkZHJlc3MgdGhhdCBpbiBhIHNlcGFyYXRlIHBhdGNoKS4gdXBkYXRlTm9kZSByZXN1
bHRzCisgICAgICAgICAgICAgaW4gYSBub2RlIGNoYW5nZSB3aXRoIHRoZSBjb3JyZWN0IHByb3Bl
cnRpZXMgYmVpbmcgYWRkZWQgdG8gbV9wZW5kaW5nQXBwZW5kcy4KKworICAgICAgICAgIDMuIGNv
bGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUgKHN0YXJ0ZWQgaW4gc3RlcCAxKSBmaW5pc2hlcywg
YW5kIHF1ZXVlcyBhIG5vZGUgY2hhbmdlCisgICAgICAgICAgICAgZm9yIHRoZSBzYW1lIG9iamVj
dCwgYnV0IHdpdGggdGhlIHdyb25nIHByb3BlcnRpZXMgKGJlY2F1c2UgaXQgd2FzIGNyZWF0ZWQg
YmVmb3JlIHN0ZXAgMikuCisgICAgICAgICAgICAgQmVjYXVzZSBpdCBjb21lcyBhZnRlciB0aGUg
bm9kZSBjaGFuZ2UgYWRkZWQgaW4gc3RlcCAyIHRvIG1fcGVuZGluZ0FwcGVuZHMsIGl0IHdpbnMs
CisgICAgICAgICAgICAgYW5kIHdlIGFkZCBhbiBvYmplY3Qgd2l0aCB0aGUgd3JvbmcgcHJvcGVy
dGllcyB0byB0aGUgdHJlZS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgd2l0aCBh
IG5ldyBBWElzb2xhdGVkVHJlZTo6bV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMgbWVtYmVyCisg
ICAgICAgIHZhcmlhYmxlLiBUaGlzIGlzIGEgSGFzaE1hcCB3aXRoIGFuIEFYSUQga2V5LCByZXBy
ZXNlbnRpbmcgdGhlIG9iamVjdCB0byBjcmVhdGUgYSBub2RlCisgICAgICAgIGNoYW5nZSBmb3Iu
IE5vdywgYm90aCBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlIGFuZCB1cGRhdGVOb2RlIHdp
bGwgYWRkIGFuIGVudHJ5CisgICAgICAgIHRvIHRoaXMgSGFzaE1hcCwgYWxsb3dpbmcgaXQgdG8g
YmUgcmVzb2x2ZWQgaXQgKGkuZS4gYnkgY3JlYXRpbmcgdGhlIG5vZGUgY2hhbmdlKSBhdCBhIGxh
dGVyIHRpbWUuCisKKyAgICAgICAgVGhpcyBpcyBib3RoIG1vcmUgY29ycmVjdCAoYXMgaXQgcHJl
dmVudHMgYW55IG9yZGVyaW5nIGJ1Z3MgZW50aXJlbHkpLCBhbmQgbW9yZQorICAgICAgICBlZmZp
Y2llbnQsIGJlY2F1c2Ugd2Ugbm93IG5ldmVyIGNyZWF0ZSBtdWx0aXBsZSBub2RlIGNoYW5nZXMg
Zm9yIHRoZSBzYW1lIG9iamVjdC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gbmVjZXNzaXRh
dGVkIG90aGVyIGNvZGUgY2xlYW51cCBpdGVtczoKKyAgICAgICAgICAtIG1fdW5yZXNvbHZlZFBl
bmRpbmdBcHBlbmRzIGFsbG93cyB1cyB0byByZW1vdmUgdGhlIGBpZHNCZWluZ0NoYW5nZWRgIHBh
cmFtZXRlcgorICAgICAgICAgICAgd2UgcGFzc2VkIHRvIHNldmVyYWwgZnVuY3Rpb25zIHNpbmNl
IHRoaXMgbWVtYmVyIHZhcmlhYmxlIGRvZXMgdGhlIHNhbWUgdGhpbmcuCisKKyAgICAgICAgICAt
IHF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxzIGhhcyBiZWVuIHNwbGl0IHVwIGludG8gdHdvIHNlcGFy
YXRlIGZ1bmN0aW9ucyAtLSByZXNvbHZlQW5kUXVldWVDaGFuZ2VzCisgICAgICAgICAgICBhbmQg
cXVldWVSZW1vdmFscy4gU29tZSBjYWxsc2l0ZXMgZGlkIHRoaW5ncyBsaWtlIHF1ZXVlQ2hhbmdl
c0FuZFJlbW92YWxzKHsgfSwgeyBvYmplY3RUb1JlbW92ZS5vYmplY3RJRCgpIH0pLAorICAgICAg
ICAgICAgc28gaXQgbWFrZXMgc2Vuc2UgZm9yIHRoZXNlIHRvIGJlIHNlcGFyYXRlIChhbmQgd2Fz
IG5lY2Vzc2FyeSBmb3IgdGhpcyBjaGFuZ2UpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBm
aXhlcyBhbiBpc3N1ZSBmb3VuZCBieSBBbmRyZXMgR29uemFsZXogaW4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTQwMi4KKyAgICAgICAgQVhJc29sYXRlZFRyZWU6
OnVwZGF0ZU5vZGUgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBhdHRhY2ggdGhlIHdyYXBwZXIgdG8g
dGhlIG5ldyBvYmplY3Qgb24gdGhlIG1haW4gdGhyZWFkCisgICAgICAgIHNpbmNlIGl0IGNvdWxk
IGJlIGluIHVzZSBvbiB0aGUgQVggdGhyZWFkLiBUbyBtYWtlIHRoaXMgbW9yZSBjbGVhciwgdGhl
IGBhdHRhY2hXcmFwcGVyYCBwYXJhbWV0ZXIgaGFzIGJlZW4KKyAgICAgICAgY2hhbmdlZCBmcm9t
IGEgYm9vbCB0byBhbiBlbnVtIGNhbGxlZCBBdHRhY2hXcmFwcGVyIHdpdGggdmFsdWVzIGBPbk1h
aW5UaHJlYWRgIGFuZCBgT25BWFRocmVhZGAuCisKKyAgICAgICAgRml4ZXMgc2l4IHRlc3RzIGlu
IGlzb2xhdGVkIHRyZWUgbW9kZToKKyAgICAgICAgICAtIGFjY2Vzc2liaWxpdHkvYXJpYS1sYWJl
bGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC5odG1sCisgICAgICAgICAgLSBhY2Nlc3NpYmlsaXR5L2Fy
aWEtcm9sZS1vbi1sYWJlbC5odG1sCisgICAgICAgICAgLSBhY2Nlc3NpYmlsaXR5L21hYy9sYWJl
bC1lbGVtZW50LWFsbC10ZXh0LXN0cmluZy12YWx1ZS5odG1sCisgICAgICAgICAgLSBhY2Nlc3Np
YmlsaXR5L21hYy9sYWJlbC1lbGVtZW50LXdpdGgtaGlkZGVuLWNvbnRyb2wuaHRtbAorICAgICAg
ICAgIC0gYWNjZXNzaWJpbGl0eS9tYWMvbGFiZWwtZWxlbWVudC1hbGwtdGV4dC1zdHJpbmctdmFs
dWUuaHRtbAorICAgICAgICAgIC0gYWNjZXNzaWJpbGl0eS9tYWMvc2xpZGVyLWFsbG93cy10aXRs
ZS11aS1lbGVtZW50Lmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6bm9kZUNoYW5nZUZvck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cXVldWVDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnF1ZXVlUmVtb3ZhbHMpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpyZXNvbHZlQW5kUXVldWVDaGFuZ2VzKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFu
Z2VzRm9yU3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBkYXRl
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBkYXRlQ2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJlbW92ZU5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcyk6Cisg
ICAgICAgIENoYW5nZSBsb2NhbCB2YXJpYWJsZSBuYW1lIGZyb20gb2JqZWN0IHRvIGV4aXN0aW5n
T2JqZWN0IGFzIHRoaXMgbWFrZXMKKyAgICAgICAgdGhlIGNvZGUgbXVjaCBtb3JlIGNsZWFyLgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxz
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5o
OgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWVGcm9tTm9k
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cXVldWVDaGFuZ2VzQW5k
UmVtb3ZhbHMpOgorICAgICAgICBTcGxpdCBpbnRvIG5ldyBmdW5jdGlvbnMgcXVldWVSZW1vdmFs
cyBhbmQgcmVzb2x2ZUFuZFF1ZXVlQ2hhbmdlcy4KKwogMjAyMi0wNC0xNCAgR2FicmllbCBOYXZh
IE1hcmlubyAgPGduYXZhbWFyaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBTY3JpcHREaXNhbGxv
d2VkU2NvcGU6OmlzRXZlbnRBbGxvd2VkSW5NYWluVGhyZWFkIGFzc2VydCBmYWlsdXJlIHdoZW4g
YWN0aXZhdGluZyBBdWRpb1Nlc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGZhMWU5NDNiNTIwZTlmMjE1NTQ3MTFmMDk3NzI4ODFi
NGM1YzgyYWIuLmIwMDdkNTE2MGI4YTEzNzM3ODYzNDgwMmM0NGRiMmRiN2RlY2NjYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzU2
NCw3ICszNTY0LDcgQEAgQVhUcmVlRGF0YSBBWE9iamVjdENhY2hlOjp0cmVlRGF0YSgpCiAKICAg
ICBzdHJlYW0gPDwgIlxuQVhPYmplY3RUcmVlOlxuIjsKICAgICBpZiAoYXV0byogcm9vdCA9IGdl
dChkb2N1bWVudCgpLnZpZXcoKSkpIHsKLSAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxBWFN0
cmVhbU9wdGlvbnM+IG9wdGlvbnMgPSB7IEFYU3RyZWFtT3B0aW9uczo6T2JqZWN0SUQsIEFYU3Ry
ZWFtT3B0aW9uczo6UGFyZW50SUQgfTsKKyAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxBWFN0
cmVhbU9wdGlvbnM+IG9wdGlvbnMgPSB7IEFYU3RyZWFtT3B0aW9uczo6T2JqZWN0SUQsIEFYU3Ry
ZWFtT3B0aW9uczo6UGFyZW50SUQsIEFYU3RyZWFtT3B0aW9uczo6Um9sZSB9OwogICAgICAgICBz
dHJlYW1TdWJ0cmVlKHN0cmVhbSwgcm9vdCwgb3B0aW9ucyk7CiAgICAgfSBlbHNlCiAgICAgICAg
IHN0cmVhbSA8PCAiTm8gcm9vdCEiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IGE0NDM2
MDc1MGE2NjgyOWE0ZWMzODQ4YTU3OGM3ZWE5NzgwNjY3ZmQuLjAzODllYTdiY2RkYWJiNmExNDM5
OWQwY2U2ZWIxNGFiNjE1ZGJhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTEwNiw3
ICsxMDYsNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGUoQVhP
YmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSkKICAgICAvLyBGb3IgdGhpcywgd2UgbmVlZCB0aGUg
cm9vdCBhbmQgZm9jdXNlZCBvYmplY3RzIG9mIHRoZSBBWE9iamVjdCB0cmVlLgogICAgIGF1dG8q
IGF4Um9vdCA9IGF4T2JqZWN0Q2FjaGUtPmdldE9yQ3JlYXRlKGF4T2JqZWN0Q2FjaGUtPmRvY3Vt
ZW50KCkudmlldygpKTsKICAgICBpZiAoYXhSb290KQotICAgICAgICB0cmVlLT5nZW5lcmF0ZVN1
YnRyZWUoKmF4Um9vdCwgbnVsbHB0ciwgdHJ1ZSk7CisgICAgICAgIHRyZWUtPmdlbmVyYXRlU3Vi
dHJlZSgqYXhSb290LCBudWxscHRyKTsKICAgICBhdXRvKiBheEZvY3VzID0gYXhPYmplY3RDYWNo
ZS0+Zm9jdXNlZE9iamVjdEZvclBhZ2UoYXhPYmplY3RDYWNoZS0+ZG9jdW1lbnQoKS5wYWdlKCkp
OwogICAgIGlmIChheEZvY3VzKQogICAgICAgICB0cmVlLT5zZXRGb2N1c2VkTm9kZUlEKGF4Rm9j
dXMtPm9iamVjdElEKCkpOwpAQCAtMTY5LDcgKzE2OSw3IEBAIFZlY3RvcjxSZWZQdHI8QVhDb3Jl
T2JqZWN0Pj4gQVhJc29sYXRlZFRyZWU6Om9iamVjdHNGb3JJRHMoY29uc3QgVmVjdG9yPEFYSUQ+
JiBhCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBBWElzb2xhdGVkVHJlZTo6Z2VuZXJh
dGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYQ29yZU9iamVjdCogYXhQYXJlbnQs
IGJvb2wgYXR0YWNoV3JhcHBlcikKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJl
ZShBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWENvcmVPYmplY3QqIGF4UGFyZW50KQogewogICAg
IEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUiX3MpOwogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CkBAIC0xNzgsOSArMTc4LDggQEAgdm9pZCBBWElzb2xhdGVkVHJl
ZTo6Z2VuZXJhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYQ29yZU9iamVjdCog
YXhQYXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVhJRCBwYXJlbnRJRCA9IGF4UGFyZW50ID8g
YXhQYXJlbnQtPm9iamVjdElEKCkgOiBBWElEKCk7Ci0gICAgVmVjdG9yPE5vZGVDaGFuZ2U+IGNo
YW5nZXM7Ci0gICAgY29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZShheE9iamVjdCwgcGFyZW50
SUQsIGF0dGFjaFdyYXBwZXIsIGNoYW5nZXMpOwotICAgIHF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxz
KGNoYW5nZXMpOworICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoYXhPYmplY3QsIHBh
cmVudElEKTsKKyAgICByZXNvbHZlQW5kUXVldWVDaGFuZ2VzKCk7CiB9CiAKIEFYSUQgQVhJc29s
YXRlZFRyZWU6OnBhcmVudElERm9yT2JqZWN0KEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYSUQg
YXNzdW1lZFBhcmVudElEKQpAQCAtMjAzLDcgKzIwMiw3IEBAIEFYSUQgQVhJc29sYXRlZFRyZWU6
OnBhcmVudElERm9yT2JqZWN0KEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYSUQgYXNzdW1lZFBh
cmVuCiAgICAgcmV0dXJuIGFzc3VtZWRQYXJlbnRJRDsKIH0KIAotQVhJc29sYXRlZFRyZWU6Ok5v
ZGVDaGFuZ2UgQVhJc29sYXRlZFRyZWU6Om5vZGVDaGFuZ2VGb3JPYmplY3QoQVhDb3JlT2JqZWN0
JiBheE9iamVjdCwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyKQorQVhJc29sYXRl
ZFRyZWU6Ok5vZGVDaGFuZ2UgQVhJc29sYXRlZFRyZWU6Om5vZGVDaGFuZ2VGb3JPYmplY3QoQVhD
b3JlT2JqZWN0JiBheE9iamVjdCwgQVhJRCBwYXJlbnRJRCwgQXR0YWNoV3JhcHBlciBhdHRhY2hX
cmFwcGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTIxNyw3ICsyMTYs
NyBAQCBBWElzb2xhdGVkVHJlZTo6Tm9kZUNoYW5nZSBBWElzb2xhdGVkVHJlZTo6bm9kZUNoYW5n
ZUZvck9iamVjdChBWENvcmVPYmplY3QmIGF4TwogICAgIH0KIAogICAgIEFTU0VSVChheE9iamVj
dC53cmFwcGVyKCkpOwotICAgIGlmIChhdHRhY2hXcmFwcGVyKQorICAgIGlmIChhdHRhY2hXcmFw
cGVyID09IEF0dGFjaFdyYXBwZXI6Ok9uTWFpblRocmVhZCkKICAgICAgICAgb2JqZWN0LT5hdHRh
Y2hQbGF0Zm9ybVdyYXBwZXIoYXhPYmplY3Qud3JhcHBlcigpKTsKICAgICBlbHNlIHsKICAgICAg
ICAgLy8gU2V0IHRoZSB3cmFwcGVyIGluIHRoZSBOb2RlQ2hhbmdlIHNvIHRoYXQgaXQgaXMgc2V0
IG9uIHRoZSBBWCB0aHJlYWQuCkBAIC0yNTUsNyArMjU0LDcgQEAgdm9pZCBBWElzb2xhdGVkVHJl
ZTo6cXVldWVDaGFuZ2UoY29uc3QgTm9kZUNoYW5nZSYgbm9kZUNoYW5nZSkKICAgICBtX3BlbmRp
bmdDaGlsZHJlblVwZGF0ZXMuYXBwZW5kKHsgb2JqZWN0SUQsIFdURk1vdmUoY2hpbGRyZW5JRHMp
IH0pOwogfQogCi12b2lkIEFYSXNvbGF0ZWRUcmVlOjpxdWV1ZUNoYW5nZXNBbmRSZW1vdmFscyhj
b25zdCBWZWN0b3I8Tm9kZUNoYW5nZT4mIGNoYW5nZXMsIGNvbnN0IFZlY3RvcjxBWElEPiYgc3Vi
dHJlZVJlbW92YWxzKQordm9pZCBBWElzb2xhdGVkVHJlZTo6cXVldWVSZW1vdmFscyhjb25zdCBW
ZWN0b3I8QVhJRD4mIHN1YnRyZWVSZW1vdmFscykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCkBAIC0yNjMsMjQgKzI2MiwzOCBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpxdWV1ZUNo
YW5nZXNBbmRSZW1vdmFscyhjb25zdCBWZWN0b3I8Tm9kZUNoYW5nZT4mIGNoYW5nZXMsCiAKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGF4SUQgOiBzdWJ0cmVlUmVtb3ZhbHMpCiAgICAgICAgIG1fcGVu
ZGluZ1N1YnRyZWVSZW1vdmFscy5hcHBlbmQoYXhJRCk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZFRy
ZWU6OnJlc29sdmVBbmRRdWV1ZUNoYW5nZXMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgYXV0byogY2FjaGUgPSBheE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSB8
fCBtX3VucmVzb2x2ZWRQZW5kaW5nQXBwZW5kcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIFZlY3RvcjxOb2RlQ2hhbmdlPiByZXNvbHZlZEFwcGVuZHM7CisgICAgcmVzb2x2ZWRB
cHBlbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMu
c2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHVucmVzb2x2ZWRDaGFuZ2UgOiBtX3VucmVz
b2x2ZWRQZW5kaW5nQXBwZW5kcykgeworICAgICAgICBpZiAoYXV0byogYXhPYmplY3QgPSBjYWNo
ZS0+b2JqZWN0RnJvbUFYSUQodW5yZXNvbHZlZENoYW5nZS5rZXkpKQorICAgICAgICAgICAgcmVz
b2x2ZWRBcHBlbmRzLnVuY2hlY2tlZEFwcGVuZChub2RlQ2hhbmdlRm9yT2JqZWN0KCpheE9iamVj
dCwgdW5yZXNvbHZlZENoYW5nZS52YWx1ZS5maXJzdCwgdW5yZXNvbHZlZENoYW5nZS52YWx1ZS5z
ZWNvbmQpKTsKKyAgICB9CisgICAgbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMuY2xlYXIoKTsK
IAotICAgIGZvciAoY29uc3QgYXV0byYgY2hhbmdlIDogY2hhbmdlcykKLSAgICAgICAgcXVldWVD
aGFuZ2UoY2hhbmdlKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07Cisg
ICAgZm9yIChjb25zdCBhdXRvJiByZXNvbHZlZEFwcGVuZCA6IHJlc29sdmVkQXBwZW5kcykKKyAg
ICAgICAgcXVldWVDaGFuZ2UocmVzb2x2ZWRBcHBlbmQpOwogfQogCi12b2lkIEFYSXNvbGF0ZWRU
cmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKEFYQ29yZU9iamVjdCYgYXhPYmplY3Qs
IEFYSUQgcGFyZW50SUQsIGJvb2wgYXR0YWNoV3JhcHBlciwgVmVjdG9yPE5vZGVDaGFuZ2U+JiBj
aGFuZ2VzLCBIYXNoU2V0PEFYSUQ+KiBpZHNCZWluZ0NoYW5nZWQpCit2b2lkIEFYSXNvbGF0ZWRU
cmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKEFYQ29yZU9iamVjdCYgYXhPYmplY3Qs
IEFYSUQgcGFyZW50SUQpCiB7CiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OmNvbGxlY3RO
b2RlQ2hhbmdlc0ZvclN1YnRyZWUiX3MpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0K
LSAgICBhdXRvIG5vZGVDaGFuZ2UgPSBub2RlQ2hhbmdlRm9yT2JqZWN0KGF4T2JqZWN0LCBwYXJl
bnRJRCwgYXR0YWNoV3JhcHBlcik7Ci0gICAgaWYgKGlkc0JlaW5nQ2hhbmdlZCkKLSAgICAgICAg
aWRzQmVpbmdDaGFuZ2VkLT5hZGQobm9kZUNoYW5nZS5pc29sYXRlZE9iamVjdC0+b2JqZWN0SUQo
KSk7Ci0gICAgY2hhbmdlcy5hcHBlbmQoV1RGTW92ZShub2RlQ2hhbmdlKSk7CisgICAgU2V0Rm9y
U2NvcGUgY29sbGVjdGluZ05vZGVDaGFuZ2VzKG1faXNDb2xsZWN0aW5nTm9kZUNoYW5nZXMsIHRy
dWUpOworICAgIG1fdW5yZXNvbHZlZFBlbmRpbmdBcHBlbmRzLnNldChheE9iamVjdC5vYmplY3RJ
RCgpLCBzdGQ6Om1ha2VfcGFpcihwYXJlbnRJRCwgQXR0YWNoV3JhcHBlcjo6T25NYWluVGhyZWFk
KSk7CiAKICAgICBhdXRvIGF4Q2hpbGRyZW5Db3B5ID0gYXhPYmplY3QuY2hpbGRyZW4oKTsKICAg
ICBhdXRvIGF4Q2hpbGRyZW5JRHMgPSBheENoaWxkcmVuQ29weS5tYXAoWyZdKGF1dG8mIGF4Q2hp
bGQpIHsKLSAgICAgICAgY29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZSgqYXhDaGlsZCwgYXhP
YmplY3Qub2JqZWN0SUQoKSwgYXR0YWNoV3JhcHBlciwgY2hhbmdlcywgaWRzQmVpbmdDaGFuZ2Vk
KTsKKyAgICAgICAgY29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZSgqYXhDaGlsZCwgYXhPYmpl
Y3Qub2JqZWN0SUQoKSk7CiAgICAgICAgIHJldHVybiBheENoaWxkLT5vYmplY3RJRCgpOwogICAg
IH0pOwogICAgIG1fbm9kZU1hcC5zZXQoYXhPYmplY3Qub2JqZWN0SUQoKSwgUGFyZW50Q2hpbGRy
ZW5JRHMgeyBwYXJlbnRJRCwgV1RGTW92ZShheENoaWxkcmVuSURzKSB9KTsKQEAgLTI5MiwxNSAr
MzA1LDIwIEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGUoQVhDb3JlT2JqZWN0JiBh
eE9iamVjdCkKICAgICBBWExPRygmYXhPYmplY3QpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKLSAgICBBWElEIGF4SUQgPSBheE9iamVjdC5vYmplY3RJRCgpOwogICAgIGF1dG8qIGF4
UGFyZW50ID0gYXhPYmplY3QucGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgQVhJRCBwYXJl
bnRJRCA9IGF4UGFyZW50ID8gYXhQYXJlbnQtPm9iamVjdElEKCkgOiBBWElEKCk7Ci0KLSAgICBh
dXRvIGNoYW5nZSA9IG5vZGVDaGFuZ2VGb3JPYmplY3QoYXhPYmplY3QsIHBhcmVudElELCB0cnVl
KTsKLQotICAgIC8vIFJlbW92ZSB0aGUgb2xkIG9iamVjdCBhbmQgc2V0IHRoZSBuZXcgb25lIHRv
IGJlIHVwZGF0ZWQgb24gdGhlIEFYIHRocmVhZC4KKyAgICAvLyBJZiB3ZSB1cGRhdGUgYSBub2Rl
IGFzIHRoZSByZXN1bHQgb2Ygc29tZSBzaWRlIGVmZmVjdCB3aGlsZSBjb2xsZWN0aW5nIG5vZGUg
Y2hhbmdlcyAoZS5nLiBhIHJvbGUgY2hhbmdlIGZyb20KKyAgICAvLyBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojp1cGRhdGVSb2xlQWZ0ZXJDaGlsZHJlbkNyZWF0aW9uKSwgcXVldWUgdGhlIGFw
cGVuZCB1cCB0byBiZSByZXNvbHZlZCB3aXRoIHRoZSByZXN0CisgICAgLy8gb2YgdGhlIGNvbGxl
Y3RlZCBjaGFuZ2VzLiBUaGlzIHByZXZlbnRzIHVzIGZyb20gY3JlYXRpbmcgdHdvIG5vZGUgY2hh
bmdlcyBmb3IgdGhlIHNhbWUgb2JqZWN0LgorICAgIGlmIChtX2lzQ29sbGVjdGluZ05vZGVDaGFu
Z2VzKSB7CisgICAgICAgIG1fdW5yZXNvbHZlZFBlbmRpbmdBcHBlbmRzLnNldChheE9iamVjdC5v
YmplY3RJRCgpLCBzdGQ6Om1ha2VfcGFpcihXVEZNb3ZlKHBhcmVudElEKSwgQXR0YWNoV3JhcHBl
cjo6T25BWFRocmVhZCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIE90aGVyd2lz
ZSwgcmVzb2x2ZSB0aGUgY2hhbmdlIGltbWVkaWF0ZWx5IGFuZCBxdWV1ZSBpdCB1cC4KKyAgICAv
LyBJbiBib3RoIGNhc2VzLCB3ZSBjYW4ndCBhdHRhY2ggdGhlIHdyYXBwZXIgaW1tZWRpYXRlbHkg
b24gdGhlIG1haW4gdGhyZWFkLCBzaW5jZSB0aGUgd3JhcHBlciBjb3VsZCBiZSBpbiB1c2UKKyAg
ICAvLyBvbiB0aGUgQVggdGhyZWFkIChiZWNhdXNlIHRoaXMgZnVuY3Rpb24gdXBkYXRlcyBhbiBl
eGlzdGluZyBub2RlKS4KKyAgICBhdXRvIGNoYW5nZSA9IG5vZGVDaGFuZ2VGb3JPYmplY3QoYXhP
YmplY3QsIHBhcmVudElELCBBdHRhY2hXcmFwcGVyOjpPbkFYVGhyZWFkKTsKICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07Ci0gICAgbV9wZW5kaW5nTm9kZVJlbW92YWxzLmFw
cGVuZCh7IGF4SUQsIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudENoYW5nZWQg
fSk7CiAgICAgcXVldWVDaGFuZ2UoY2hhbmdlKTsKIH0KIApAQCAtNDYyLDggKzQ4MCw2IEBAIHZv
aWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuKEFYQ29yZU9iamVjdCYgYXhPYmplY3Qp
CiAgICAgY29uc3QgYXV0byYgbmV3Q2hpbGRyZW4gPSBheEFuY2VzdG9yLT5jaGlsZHJlbigpOwog
ICAgIGF1dG8gbmV3Q2hpbGRyZW5JRHMgPSBheEFuY2VzdG9yLT5jaGlsZHJlbklEcyhmYWxzZSk7
CiAKLSAgICBWZWN0b3I8Tm9kZUNoYW5nZT4gY2hhbmdlczsKLSAgICBIYXNoU2V0PEFYSUQ+IGlk
c0JlaW5nQ2hhbmdlZDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0NoaWxkcmVuLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIEFTU0VSVChuZXdDaGlsZHJlbltpXS0+b2JqZWN0SUQoKSA9
PSBuZXdDaGlsZHJlbklEc1tpXSk7CiAgICAgICAgIEFTU0VSVChuZXdDaGlsZHJlbklEc1tpXS5p
c1ZhbGlkKCkpOwpAQCAtNDc0LDcgKzQ5MCw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0
ZUNoaWxkcmVuKEFYQ29yZU9iamVjdCYgYXhPYmplY3QpCiAgICAgICAgICAgICAvLyBUaGlzIGlz
IGEgbmV3IGNoaWxkLCBhZGQgaXQgdG8gdGhlIHRyZWUuCiAgICAgICAgICAgICBBWExPRyhtYWtl
U3RyaW5nKCJBWElEICIsIGF4QW5jZXN0b3ItPm9iamVjdElEKCkubG9nZ2luZ1N0cmluZygpLCAi
IGdhaW5pbmcgbmV3IHN1YnRyZWUsIHN0YXJ0aW5nIGF0IElEICIsIG5ld0NoaWxkcmVuW2ldLT5v
YmplY3RJRCgpLmxvZ2dpbmdTdHJpbmcoKSwgIjoiKSk7CiAgICAgICAgICAgICBBWExPRyhuZXdD
aGlsZHJlbltpXSk7Ci0gICAgICAgICAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpu
ZXdDaGlsZHJlbltpXSwgYXhBbmNlc3Rvci0+b2JqZWN0SUQoKSwgdHJ1ZSwgY2hhbmdlcywgJmlk
c0JlaW5nQ2hhbmdlZCk7CisgICAgICAgICAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVl
KCpuZXdDaGlsZHJlbltpXSwgYXhBbmNlc3Rvci0+b2JqZWN0SUQoKSk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgbV9ub2RlTWFwLnNldChheEFuY2VzdG9yLT5vYmplY3RJRCgpLCBQYXJlbnRDaGls
ZHJlbklEcyB7IG9sZElEcy5wYXJlbnRJRCwgV1RGTW92ZShuZXdDaGlsZHJlbklEcykgfSk7CkBA
IC00ODcsOSArNTAzLDEwIEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuKEFY
Q29yZU9iamVjdCYgYXhPYmplY3QpCiAgICAgICAgIC8vICAgMS4gT2JqZWN0IDEyMyBpcyBzbGF0
ZWQgdG8gYmUgYSBjaGlsZCBvZiB0aGlzIG9iamVjdCAoaS5lLiBpbiBuZXdDaGlsZHJlbiksIGFu
ZCB3ZSBjb2xsZWN0IG5vZGUgY2hhbmdlcyBmb3IgaXQuCiAgICAgICAgIC8vICAgMi4gT2JqZWN0
IDEyMyBpcyBjdXJyZW50bHkgYSBtZW1iZXIgb2YgYSBzdWJ0cmVlIG9mIHNvbWUgb3RoZXIgb2Jq
ZWN0IGluIG9sZENoaWxkcmVuSURzLgogICAgICAgICAvLyAgIDMuIFRodXMsIHdlIGRvbid0IHdh
bnQgdG8gZGVsZXRlIE9iamVjdCAxMjMgZnJvbSB0aGUgbm9kZW1hcCwgaW5zdGVhZCBhbGxvd2lu
ZyBpdCB0byBiZSBtb3ZlZC4KLSAgICAgICAgcmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKGF4SUQs
IGF4QW5jZXN0b3IsIGlkc0JlaW5nQ2hhbmdlZCk7CisgICAgICAgIHJlbW92ZVN1YnRyZWVGcm9t
Tm9kZU1hcChheElELCBheEFuY2VzdG9yKTsKICAgICB9Ci0gICAgcXVldWVDaGFuZ2VzQW5kUmVt
b3ZhbHMoY2hhbmdlcywgb2xkQ2hpbGRyZW5JRHMpOworICAgIHJlc29sdmVBbmRRdWV1ZUNoYW5n
ZXMoKTsKKyAgICBxdWV1ZVJlbW92YWxzKG9sZENoaWxkcmVuSURzKTsKIAogICAgIC8vIEFsc28g
cXVldWUgdXBkYXRlcyBmb3IgcHJvcGVydGllcyB0aGF0IGRlcml2ZSBmcm9tIGNoaWxkcmVuKCku
CiAgICAgdXBkYXRlUmVsYXRlZFByb3BlcnRpZXMoKmF4QW5jZXN0b3IpOwpAQCAtNTU1LDEwICs1
NzIsMTAgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6cmVtb3ZlTm9kZShjb25zdCBBWENvcmVPYmpl
Y3QmIGF4T2JqZWN0KQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICByZW1vdmVT
dWJ0cmVlRnJvbU5vZGVNYXAoYXhPYmplY3Qub2JqZWN0SUQoKSwgYXhPYmplY3QucGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCkpOwotICAgIHF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxzKHsgfSwgeyBheE9i
amVjdC5vYmplY3RJRCgpIH0pOworICAgIHF1ZXVlUmVtb3ZhbHMoeyBheE9iamVjdC5vYmplY3RJ
RCgpIH0pOwogfQogCi12b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVlRnJvbU5vZGVN
YXAoQVhJRCBvYmplY3RJRCwgQVhDb3JlT2JqZWN0KiBheFBhcmVudCwgY29uc3QgSGFzaFNldDxB
WElEPiYgaWRzVG9LZWVwKQordm9pZCBBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21O
b2RlTWFwKEFYSUQgb2JqZWN0SUQsIEFYQ29yZU9iamVjdCogYXhQYXJlbnQpCiB7CiAgICAgQVhU
UkFDRSgiQVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcCJfcyk7CiAgICAg
QVhMT0cobWFrZVN0cmluZygiUmVtb3Zpbmcgc3VidHJlZSBmb3Igb2JqZWN0SUQgIiwgb2JqZWN0
SUQubG9nZ2luZ1N0cmluZygpKSk7CkBAIC01NzgsNyArNTk1LDcgQEAgdm9pZCBBWElzb2xhdGVk
VHJlZTo6cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKEFYSUQgb2JqZWN0SUQsIEFYQ29yZU9iamVj
dCogYXhQYXIKICAgICBWZWN0b3I8QVhJRD4gcmVtb3ZhbHMgPSB7IG9iamVjdElEIH07CiAgICAg
d2hpbGUgKHJlbW92YWxzLnNpemUoKSkgewogICAgICAgICBBWElEIGF4SUQgPSByZW1vdmFscy50
YWtlTGFzdCgpOwotICAgICAgICBpZiAoIWF4SUQuaXNWYWxpZCgpIHx8IGlkc1RvS2VlcC5jb250
YWlucyhheElEKSkKKyAgICAgICAgaWYgKCFheElELmlzVmFsaWQoKSB8fCBtX3VucmVzb2x2ZWRQ
ZW5kaW5nQXBwZW5kcy5jb250YWlucyhheElEKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIGF1dG8gaXQgPSBtX25vZGVNYXAuZmluZChheElEKTsKQEAgLTY0OCwxMyArNjY1LDEz
IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMoKQogICAgICAgICBp
ZiAoIXdyYXBwZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoYXV0byBv
YmplY3QgPSBtX3JlYWRlclRocmVhZE5vZGVNYXAuZ2V0KGF4SUQpKSB7Ci0gICAgICAgICAgICBp
ZiAob2JqZWN0ICE9ICZpdGVtLmlzb2xhdGVkT2JqZWN0LmdldCgpCi0gICAgICAgICAgICAgICAg
JiYgb2JqZWN0LT53cmFwcGVyKCkgPT0gd3JhcHBlci5nZXQoKSkgeworICAgICAgICBpZiAoYXV0
byBleGlzdGluZ09iamVjdCA9IG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5nZXQoYXhJRCkpIHsKKyAg
ICAgICAgICAgIGlmIChleGlzdGluZ09iamVjdCAhPSAmaXRlbS5pc29sYXRlZE9iamVjdC5nZXQo
KQorICAgICAgICAgICAgICAgICYmIGV4aXN0aW5nT2JqZWN0LT53cmFwcGVyKCkgPT0gd3JhcHBl
ci5nZXQoKSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBuZXcgSXNvbGF0ZWRPYmplY3QgaXMg
YSByZXBsYWNlbWVudCBmb3IgYW4gZXhpc3Rpbmcgb2JqZWN0CiAgICAgICAgICAgICAgICAgLy8g
YXMgdGhlIHJlc3VsdCBvZiBhbiB1cGRhdGUuIFRodXMgZGV0YWNoIHRoZSB3cmFwcGVyIGZyb20g
dGhlCiAgICAgICAgICAgICAgICAgLy8gZXhpc3Rpbmcgb2JqZWN0IGFuZCBhdHRhY2ggaXQgdG8g
dGhlIG5ldyBvbmUuCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5kZXRhY2hXcmFwcGVyKEFjY2Vz
c2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudENoYW5nZWQpOworICAgICAgICAgICAgICAg
IGV4aXN0aW5nT2JqZWN0LT5kZXRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlw
ZTo6RWxlbWVudENoYW5nZWQpOwogICAgICAgICAgICAgICAgIGl0ZW0uaXNvbGF0ZWRPYmplY3Qt
PmF0dGFjaFBsYXRmb3JtV3JhcHBlcih3cmFwcGVyLmdldCgpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5yZW1vdmUoYXhJRCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuaAppbmRleCBmYmJhNWU3NGI2YjVkOGUxMGMyODFkMWVkNTcxNTViZjYxN2I4ZTcyLi40
NjI2ZjFlNzNiZjAyMWFiYjAyYWNhNjhmNjA3MmMyNDBiMDRmY2U5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmgKQEAgLTM0OSw3ICszNDksNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9OwogCi0gICAg
dm9pZCBnZW5lcmF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhDb3JlT2JqZWN0KiwgYm9vbCBh
dHRhY2hXcmFwcGVyKTsKKyAgICB2b2lkIGdlbmVyYXRlU3VidHJlZShBWENvcmVPYmplY3QmLCBB
WENvcmVPYmplY3QqKTsKICAgICB2b2lkIHVwZGF0ZU5vZGUoQVhDb3JlT2JqZWN0Jik7CiAgICAg
dm9pZCB1cGRhdGVDaGlsZHJlbihBWENvcmVPYmplY3QmKTsKICAgICB2b2lkIHVwZGF0ZU5vZGVQ
cm9wZXJ0eShBWENvcmVPYmplY3QmLCBBWFByb3BlcnR5TmFtZSk7CkBAIC0zNjMsNyArMzYzLDcg
QEAgcHVibGljOgogICAgIC8vIFJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgaXNvbGF0ZWQgb2Jq
ZWN0IGFuZCBhbGwgZGVzY2VuZGFudHMgZnJvbSB0aGUgbV9ub2RlTWFwIGFuZCBxdWV1ZXMgdGhl
aXIgcmVtb3ZhbCBmcm9tIHRoZSB0cmVlLgogICAgIHZvaWQgcmVtb3ZlTm9kZShjb25zdCBBWENv
cmVPYmplY3QmKTsKICAgICAvLyBSZW1vdmVzIHRoZSBnaXZlbiBub2RlIGFuZCBhbGwgaXRzIGRl
c2NlbmRhbnRzIGZyb20gbV9ub2RlTWFwLgotICAgIHZvaWQgcmVtb3ZlU3VidHJlZUZyb21Ob2Rl
TWFwKEFYSUQgYXhJRCwgQVhDb3JlT2JqZWN0KiwgY29uc3QgSGFzaFNldDxBWElEPiYgPSB7IH0p
OworICAgIHZvaWQgcmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKEFYSUQgYXhJRCwgQVhDb3JlT2Jq
ZWN0Kik7CiAKICAgICAvLyBCb3RoIHNldFJvb3ROb2RlSUQgYW5kIHNldEZvY3VzZWROb2RlSUQg
YXJlIGNhbGxlZCBkdXJpbmcgdGhlIGdlbmVyYXRpb24KICAgICAvLyBvZiB0aGUgSXNvbGF0ZWRU
cmVlLgpAQCAtMzg4LDEwICszODgsMTIgQEAgcHJpdmF0ZToKICAgICAvLyBNZXRob2RzIGluIHRo
aXMgYmxvY2sgYXJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgLy8gQ29tcHV0ZXMg
dGhlIHBhcmVudCBJRCBvZiB0aGUgZ2l2ZW4gb2JqZWN0LCB3aGljaCBpcyBnZW5lcmFsbHkgdGhl
ICJhc3N1bWVkIiBwYXJlbnQgSUQgKGJ1dCBub3QgYWx3YXlzLCBsaWtlIGluIHRoZSBjYXNlIG9m
IHRhYmxlcykuCiAgICAgQVhJRCBwYXJlbnRJREZvck9iamVjdChBWENvcmVPYmplY3QmLCBBWElE
IGFzc3VtZWRQYXJlbnRJRCk7Ci0gICAgTm9kZUNoYW5nZSBub2RlQ2hhbmdlRm9yT2JqZWN0KEFY
Q29yZU9iamVjdCYsIEFYSUQgcGFyZW50SUQsIGJvb2wgYXR0YWNoV3JhcHBlciA9IHRydWUpOwot
ICAgIHZvaWQgY29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZShBWENvcmVPYmplY3QmLCBBWElE
IHBhcmVudElELCBib29sIGF0dGFjaFdyYXBwZXIsIFZlY3RvcjxOb2RlQ2hhbmdlPiYsIEhhc2hT
ZXQ8QVhJRD4qID0gbnVsbHB0cik7CisgICAgZW51bSBjbGFzcyBBdHRhY2hXcmFwcGVyIDogYm9v
bCB7IE9uTWFpblRocmVhZCwgT25BWFRocmVhZCB9OworICAgIE5vZGVDaGFuZ2Ugbm9kZUNoYW5n
ZUZvck9iamVjdChBWENvcmVPYmplY3QmLCBBWElEIHBhcmVudElELCBBdHRhY2hXcmFwcGVyID0g
QXR0YWNoV3JhcHBlcjo6T25NYWluVGhyZWFkKTsKKyAgICB2b2lkIGNvbGxlY3ROb2RlQ2hhbmdl
c0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCk7CiAgICAgdm9pZCBxdWV1
ZUNoYW5nZShjb25zdCBOb2RlQ2hhbmdlJikgV1RGX1JFUVVJUkVTX0xPQ0sobV9jaGFuZ2VMb2dM
b2NrKTsKLSAgICB2b2lkIHF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxzKGNvbnN0IFZlY3RvcjxOb2Rl
Q2hhbmdlPiYsIGNvbnN0IFZlY3RvcjxBWElEPiYgPSB7IH0pOworICAgIHZvaWQgcmVzb2x2ZUFu
ZFF1ZXVlQ2hhbmdlcygpOworICAgIHZvaWQgcXVldWVSZW1vdmFscyhjb25zdCBWZWN0b3I8QVhJ
RD4mKTsKIAogICAgIEFYSXNvbGF0ZWRUcmVlSUQgbV90cmVlSUQ7CiAgICAgQVhPYmplY3RDYWNo
ZSogbV9heE9iamVjdENhY2hlIHsgbnVsbHB0ciB9OwpAQCAtNDA4LDYgKzQxMCwxMyBAQCBwcml2
YXRlOgogICAgIC8vIGl0cyBPYmplY3RJRCB0byBpdHMgUGFyZW50Q2hpbGRyZW5JRHMgc3RydWN0
LgogICAgIEhhc2hNYXA8QVhJRCwgUGFyZW50Q2hpbGRyZW5JRHM+IG1fbm9kZU1hcDsKIAorICAg
IC8vIE9ubHkgYWNjZXNzZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIC8vIFRoZSBrZXkgaXMg
dGhlIElEIG9mIHRoZSBvYmplY3QgdGhhdCB3aWxsIGJlIHJlc29sdmVkIGludG8gYW4gbV9wZW5k
aW5nQXBwZW5kcyBOb2RlQ2hhbmdlLgorICAgIC8vIFRoZSB2YWx1ZSByZXByZXNlbnRzIHRoZSBw
YXJlbnQgSUQgb2YgdGhlIG9iamVjdCwgYW5kIHdoZXRoZXIgdGhlIHdyYXBwZXIgc2hvdWxkIGJl
IGF0dGFjaGVkIG9uIHRoZSBtYWluIHRocmVhZCBvciB0aGUgQVggdGhyZWFkLgorICAgIEhhc2hN
YXA8QVhJRCwgc3RkOjpwYWlyPEFYSUQsIEF0dGFjaFdyYXBwZXI+PiBtX3VucmVzb2x2ZWRQZW5k
aW5nQXBwZW5kczsKKyAgICAvLyBPbmx5IGFjY2Vzc2VkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAg
ICBib29sIG1faXNDb2xsZWN0aW5nTm9kZUNoYW5nZXMgeyBmYWxzZSB9OworCiAgICAgLy8gT25s
eSBhY2Nlc3NlZCBvbiBBWCB0aHJlYWQgcmVxdWVzdGluZyBkYXRhLgogICAgIEhhc2hNYXA8QVhJ
RCwgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+PiBtX3JlYWRlclRocmVhZE5vZGVNYXA7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457752</attachid>
            <date>2022-04-16 13:12:37 -0700</date>
            <delta_ts>2022-04-16 13:41:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239398-20220416151236.patch</filename>
            <type>text/plain</type>
            <size>20083</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzczODExMjRmZTU4ZDJh
MTc0MDhmOTg5MmUzYjJkYzk5ZmFmMjMxYS4uM2RjNjM1ODZkMjU0OTdlZDZmYzk2OTAxNzUyOTEw
OTk2NWUwM2VhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIyLTA0LTE2ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgTm9kZSBjaGFuZ2VzIGNy
ZWF0ZWQgYnkgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGUgYXJlIG92ZXJ3cml0dGVuIHdoZW4g
cGVyZm9ybWVkIGR1cmluZyBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3Vi
dHJlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5
Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
Y3VycmVudGx5IGRvIHRoZSB3cm9uZyB0aGluZyBpbiB0aGlzIHNjZW5hcmlvOgorCisgICAgICAg
ICAgMS4gQSBkeW5hbWljIHBhZ2UgY2hhbmdlIGNhdXNlcyBhbiBlbGVtZW50IHRvIGJlIGluY2x1
ZGVkIG9uIHRoZSBwYWdlLCBzbyB3ZQorICAgICAgICAgICAgIGNyZWF0ZSBhIG5vZGUgY2hhbmdl
IGZvciBpdCBhbmQgaXRzIHN1YnRyZWUgYnkgY2FsbGluZyBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JT
dWJ0cmVlLgorICAgICAgICAgICAgIFRoaXMgY2F1c2VzIGEgY2FsbCB0byBjaGlsZHJlbigpIG9u
IHRoZSBsaXZlIG9iamVjdC4KKworICAgICAgICAgIDIuIEluIHRoZSBwcm9jZXNzIG9mIChvciBh
ZnRlcikgdXBkYXRpbmcgdGhlIGNoaWxkcmVuIG9mIHRoZSBsaXZlIG9iamVjdCwgd2UgcGVyZm9y
bSBzb21lCisgICAgICAgICAgICAgb3BlcmF0aW9uIHRoYXQgdHJpZ2dlcnMgQVhJc29sYXRlZFRy
ZWU6OnVwZGF0ZU5vZGUgb24gc2FpZCBvYmplY3QuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnVwZGF0ZVJvbGVBZnRlckNoaWxkcmVuQ3JlYXRpb24KKyAgICAgICAgICAgICB3b3VsZCBiZSBh
biBleGFtcGxlIG9mIHRoaXMgaWYgaXQgd2VyZSBwcm9wZXJseSBjb2RlZCB0byB1cGRhdGUgdGhl
IGlzb2xhdGVkIHRyZWUgaWYKKyAgICAgICAgICAgICB0aGUgb2JqZWN0J3Mgcm9sZSBjaGFuZ2Vz
IChJJ2xsIGFkZHJlc3MgdGhhdCBpbiBhIHNlcGFyYXRlIHBhdGNoKS4gdXBkYXRlTm9kZSByZXN1
bHRzCisgICAgICAgICAgICAgaW4gYSBub2RlIGNoYW5nZSB3aXRoIHRoZSBjb3JyZWN0IHByb3Bl
cnRpZXMgYmVpbmcgYWRkZWQgdG8gbV9wZW5kaW5nQXBwZW5kcy4KKworICAgICAgICAgIDMuIGNv
bGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUgKHN0YXJ0ZWQgaW4gc3RlcCAxKSBmaW5pc2hlcywg
YW5kIHF1ZXVlcyBhIG5vZGUgY2hhbmdlCisgICAgICAgICAgICAgZm9yIHRoZSBzYW1lIG9iamVj
dCwgYnV0IHdpdGggdGhlIHdyb25nIHByb3BlcnRpZXMgKGJlY2F1c2UgaXQgd2FzIGNyZWF0ZWQg
YmVmb3JlIHN0ZXAgMikuCisgICAgICAgICAgICAgQmVjYXVzZSBpdCBjb21lcyBhZnRlciB0aGUg
bm9kZSBjaGFuZ2UgYWRkZWQgaW4gc3RlcCAyIHRvIG1fcGVuZGluZ0FwcGVuZHMsIGl0IHdpbnMs
CisgICAgICAgICAgICAgYW5kIHdlIGFkZCBhbiBvYmplY3Qgd2l0aCB0aGUgd3JvbmcgcHJvcGVy
dGllcyB0byB0aGUgdHJlZS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgd2l0aCBh
IG5ldyBBWElzb2xhdGVkVHJlZTo6bV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMgbWVtYmVyCisg
ICAgICAgIHZhcmlhYmxlLiBUaGlzIGlzIGEgSGFzaE1hcCB3aXRoIGFuIEFYSUQga2V5LCByZXBy
ZXNlbnRpbmcgdGhlIG9iamVjdCB0byBjcmVhdGUgYSBub2RlCisgICAgICAgIGNoYW5nZSBmb3Iu
IE5vdywgYm90aCBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlIGFuZCB1cGRhdGVOb2RlIHdp
bGwgYWRkIGFuIGVudHJ5CisgICAgICAgIHRvIHRoaXMgSGFzaE1hcCwgYWxsb3dpbmcgaXQgdG8g
YmUgcmVzb2x2ZWQgaXQgKGkuZS4gYnkgY3JlYXRpbmcgdGhlIG5vZGUgY2hhbmdlKSBhdCBhIGxh
dGVyIHRpbWUuCisKKyAgICAgICAgVGhpcyBpcyBib3RoIG1vcmUgY29ycmVjdCAoYXMgaXQgcHJl
dmVudHMgYW55IG9yZGVyaW5nIGJ1Z3MgZW50aXJlbHkpLCBhbmQgbW9yZQorICAgICAgICBlZmZp
Y2llbnQsIGJlY2F1c2Ugd2Ugbm93IG5ldmVyIGNyZWF0ZSBtdWx0aXBsZSBub2RlIGNoYW5nZXMg
Zm9yIHRoZSBzYW1lIG9iamVjdC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gbmVjZXNzaXRh
dGVkIG90aGVyIGNvZGUgY2xlYW51cCBpdGVtczoKKyAgICAgICAgICAtIG1fdW5yZXNvbHZlZFBl
bmRpbmdBcHBlbmRzIGFsbG93cyB1cyB0byByZW1vdmUgdGhlIGBpZHNCZWluZ0NoYW5nZWRgIHBh
cmFtZXRlcgorICAgICAgICAgICAgd2UgcGFzc2VkIHRvIHNldmVyYWwgZnVuY3Rpb25zIHNpbmNl
IHRoaXMgbWVtYmVyIHZhcmlhYmxlIGRvZXMgdGhlIHNhbWUgdGhpbmcuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhbHNvIGZpeGVzIGFuIGlzc3VlIGZvdW5kIGJ5IEFuZHJlcyBHb256YWxleiBpbiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NDAyLgorICAgICAgICBB
WElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZSBzaG91bGQgbm90IGltbWVkaWF0ZWx5IGF0dGFjaCB0
aGUgd3JhcHBlciB0byB0aGUgbmV3IG9iamVjdCBvbiB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAg
c2luY2UgaXQgY291bGQgYmUgaW4gdXNlIG9uIHRoZSBBWCB0aHJlYWQuIFRvIG1ha2UgdGhpcyBt
b3JlIGNsZWFyLCB0aGUgYGF0dGFjaFdyYXBwZXJgIHBhcmFtZXRlciBoYXMgYmVlbgorICAgICAg
ICBjaGFuZ2VkIGZyb20gYSBib29sIHRvIGFuIGVudW0gY2FsbGVkIEF0dGFjaFdyYXBwZXIgd2l0
aCB2YWx1ZXMgYE9uTWFpblRocmVhZGAgYW5kIGBPbkFYVGhyZWFkYC4KKworICAgICAgICBGaXhl
cyBzaXggdGVzdHMgaW4gaXNvbGF0ZWQgdHJlZSBtb2RlOgorICAgICAgICAgIC0gYWNjZXNzaWJp
bGl0eS9hcmlhLWxhYmVsbGVkYnktb3ZlcnJpZGVzLWxhYmVsLmh0bWwKKyAgICAgICAgICAtIGFj
Y2Vzc2liaWxpdHkvYXJpYS1yb2xlLW9uLWxhYmVsLmh0bWwKKyAgICAgICAgICAtIGFjY2Vzc2li
aWxpdHkvbWFjL2xhYmVsLWVsZW1lbnQtYWxsLXRleHQtc3RyaW5nLXZhbHVlLmh0bWwKKyAgICAg
ICAgICAtIGFjY2Vzc2liaWxpdHkvbWFjL2xhYmVsLWVsZW1lbnQtd2l0aC1oaWRkZW4tY29udHJv
bC5odG1sCisgICAgICAgICAgLSBhY2Nlc3NpYmlsaXR5L21hYy9sYWJlbC1lbGVtZW50LWFsbC10
ZXh0LXN0cmluZy12YWx1ZS5odG1sCisgICAgICAgICAgLSBhY2Nlc3NpYmlsaXR5L21hYy9zbGlk
ZXItYWxsb3dzLXRpdGxlLXVpLWVsZW1lbnQuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnRy
ZWVEYXRhKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6Om5vZGVDaGFuZ2VGb3JPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnF1ZXVlUmVtb3ZhbHMpOgorICAgICAgICBBZGRl
ZC4gQWxsb3dzIHlvdSB0byBxdWV1ZSBvYmplY3RzIGZvciByZW1vdmFsIGZyb20gY29udGV4dHMg
d2hlcmUgeW91CisgICAgICAgIGRvbid0IGFscmVhZHkgaG9sZCBhIGxvY2suCisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cXVldWVSZW1vdmFsc0xvY2tlZCk6CisgICAgICAgIEFk
ZGVkLiBBbGxvd3MgeW91IHRvIHF1ZXVlIG9iamVjdHMgZm9yIHJlbW92YWwgZnJvbSBjb250ZXh0
cyB3aGVyZSB5b3UKKyAgICAgICAgYWxyZWFkeSBob2xkIGEgbG9jay4KKyAgICAgICAgKFdlYkNv
cmU6OkFYSXNvbGF0ZWRUcmVlOjpxdWV1ZVJlbW92YWxzQW5kVW5yZXNvbHZlZENoYW5nZXMpOgor
ICAgICAgICBBZGRlZC4gUmVwbGFjZXMgQVhJc29sYXRlZFRyZWU6OnF1ZXVlQ2hhbmdlc0FuZFJl
bW92YWxzLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmNvbGxlY3ROb2RlQ2hh
bmdlc0ZvclN1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnVwZGF0
ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMpOgor
ICAgICAgICBDaGFuZ2UgbG9jYWwgdmFyaWFibGUgbmFtZSBmcm9tIG9iamVjdCB0byBleGlzdGlu
Z09iamVjdCBhcyB0aGlzIG1ha2VzCisgICAgICAgIHRoZSBjb2RlIG11Y2ggbW9yZSBjbGVhci4K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxz
KTogRGVsZXRlZC4KKwogMjAyMi0wNC0xNCAgR2FicmllbCBOYXZhIE1hcmlubyAgPGduYXZhbWFy
aW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OmlzRXZlbnRB
bGxvd2VkSW5NYWluVGhyZWFkIGFzc2VydCBmYWlsdXJlIHdoZW4gYWN0aXZhdGluZyBBdWRpb1Nl
c3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CmluZGV4IGZhMWU5NDNiNTIwZTlmMjE1NTQ3MTFmMDk3NzI4ODFiNGM1YzgyYWIuLmIwMDdkNTE2
MGI4YTEzNzM3ODYzNDgwMmM0NGRiMmRiN2RlY2NjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzU2NCw3ICszNTY0LDcgQEAgQVhU
cmVlRGF0YSBBWE9iamVjdENhY2hlOjp0cmVlRGF0YSgpCiAKICAgICBzdHJlYW0gPDwgIlxuQVhP
YmplY3RUcmVlOlxuIjsKICAgICBpZiAoYXV0byogcm9vdCA9IGdldChkb2N1bWVudCgpLnZpZXco
KSkpIHsKLSAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxBWFN0cmVhbU9wdGlvbnM+IG9wdGlv
bnMgPSB7IEFYU3RyZWFtT3B0aW9uczo6T2JqZWN0SUQsIEFYU3RyZWFtT3B0aW9uczo6UGFyZW50
SUQgfTsKKyAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxBWFN0cmVhbU9wdGlvbnM+IG9wdGlv
bnMgPSB7IEFYU3RyZWFtT3B0aW9uczo6T2JqZWN0SUQsIEFYU3RyZWFtT3B0aW9uczo6UGFyZW50
SUQsIEFYU3RyZWFtT3B0aW9uczo6Um9sZSB9OwogICAgICAgICBzdHJlYW1TdWJ0cmVlKHN0cmVh
bSwgcm9vdCwgb3B0aW9ucyk7CiAgICAgfSBlbHNlCiAgICAgICAgIHN0cmVhbSA8PCAiTm8gcm9v
dCEiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IGE0NDM2MDc1MGE2NjgyOWE0ZWMzODQ4
YTU3OGM3ZWE5NzgwNjY3ZmQuLmU4ZDk2NGYzNzQwNzA4YjUxZTFjNjc1MjI0Y2FmMTc4ZDkzZDRj
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBSZWY8QVhJ
c29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGUoQVhPYmplY3RDYWNoZSogYXhPYmpl
Y3RDYWNoZSkKICAgICAvLyBGb3IgdGhpcywgd2UgbmVlZCB0aGUgcm9vdCBhbmQgZm9jdXNlZCBv
YmplY3RzIG9mIHRoZSBBWE9iamVjdCB0cmVlLgogICAgIGF1dG8qIGF4Um9vdCA9IGF4T2JqZWN0
Q2FjaGUtPmdldE9yQ3JlYXRlKGF4T2JqZWN0Q2FjaGUtPmRvY3VtZW50KCkudmlldygpKTsKICAg
ICBpZiAoYXhSb290KQotICAgICAgICB0cmVlLT5nZW5lcmF0ZVN1YnRyZWUoKmF4Um9vdCwgbnVs
bHB0ciwgdHJ1ZSk7CisgICAgICAgIHRyZWUtPmdlbmVyYXRlU3VidHJlZSgqYXhSb290LCBudWxs
cHRyKTsKICAgICBhdXRvKiBheEZvY3VzID0gYXhPYmplY3RDYWNoZS0+Zm9jdXNlZE9iamVjdEZv
clBhZ2UoYXhPYmplY3RDYWNoZS0+ZG9jdW1lbnQoKS5wYWdlKCkpOwogICAgIGlmIChheEZvY3Vz
KQogICAgICAgICB0cmVlLT5zZXRGb2N1c2VkTm9kZUlEKGF4Rm9jdXMtPm9iamVjdElEKCkpOwpA
QCAtMTY5LDcgKzE2OSw3IEBAIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gQVhJc29sYXRl
ZFRyZWU6Om9iamVjdHNGb3JJRHMoY29uc3QgVmVjdG9yPEFYSUQ+JiBhCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotdm9pZCBBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKEFYQ29yZU9i
amVjdCYgYXhPYmplY3QsIEFYQ29yZU9iamVjdCogYXhQYXJlbnQsIGJvb2wgYXR0YWNoV3JhcHBl
cikKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShBWENvcmVPYmplY3QmIGF4
T2JqZWN0LCBBWENvcmVPYmplY3QqIGF4UGFyZW50KQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0
ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUiX3MpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CkBAIC0xNzgsOSArMTc4LDggQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVl
KEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYQ29yZU9iamVjdCogYXhQYXIKICAgICAgICAgcmV0
dXJuOwogCiAgICAgQVhJRCBwYXJlbnRJRCA9IGF4UGFyZW50ID8gYXhQYXJlbnQtPm9iamVjdElE
KCkgOiBBWElEKCk7Ci0gICAgVmVjdG9yPE5vZGVDaGFuZ2U+IGNoYW5nZXM7Ci0gICAgY29sbGVj
dE5vZGVDaGFuZ2VzRm9yU3VidHJlZShheE9iamVjdCwgcGFyZW50SUQsIGF0dGFjaFdyYXBwZXIs
IGNoYW5nZXMpOwotICAgIHF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxzKGNoYW5nZXMpOworICAgIGNv
bGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoYXhPYmplY3QsIHBhcmVudElEKTsKKyAgICBxdWV1
ZVJlbW92YWxzQW5kVW5yZXNvbHZlZENoYW5nZXMoeyB9KTsKIH0KIAogQVhJRCBBWElzb2xhdGVk
VHJlZTo6cGFyZW50SURGb3JPYmplY3QoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhJRCBhc3N1
bWVkUGFyZW50SUQpCkBAIC0yMDMsNyArMjAyLDcgQEAgQVhJRCBBWElzb2xhdGVkVHJlZTo6cGFy
ZW50SURGb3JPYmplY3QoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhJRCBhc3N1bWVkUGFyZW4K
ICAgICByZXR1cm4gYXNzdW1lZFBhcmVudElEOwogfQogCi1BWElzb2xhdGVkVHJlZTo6Tm9kZUNo
YW5nZSBBWElzb2xhdGVkVHJlZTo6bm9kZUNoYW5nZUZvck9iamVjdChBWENvcmVPYmplY3QmIGF4
T2JqZWN0LCBBWElEIHBhcmVudElELCBib29sIGF0dGFjaFdyYXBwZXIpCitBWElzb2xhdGVkVHJl
ZTo6Tm9kZUNoYW5nZSBBWElzb2xhdGVkVHJlZTo6bm9kZUNoYW5nZUZvck9iamVjdChBWENvcmVP
YmplY3QmIGF4T2JqZWN0LCBBWElEIHBhcmVudElELCBBdHRhY2hXcmFwcGVyIGF0dGFjaFdyYXBw
ZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtMjE3LDcgKzIxNiw3IEBA
IEFYSXNvbGF0ZWRUcmVlOjpOb2RlQ2hhbmdlIEFYSXNvbGF0ZWRUcmVlOjpub2RlQ2hhbmdlRm9y
T2JqZWN0KEFYQ29yZU9iamVjdCYgYXhPCiAgICAgfQogCiAgICAgQVNTRVJUKGF4T2JqZWN0Lndy
YXBwZXIoKSk7Ci0gICAgaWYgKGF0dGFjaFdyYXBwZXIpCisgICAgaWYgKGF0dGFjaFdyYXBwZXIg
PT0gQXR0YWNoV3JhcHBlcjo6T25NYWluVGhyZWFkKQogICAgICAgICBvYmplY3QtPmF0dGFjaFBs
YXRmb3JtV3JhcHBlcihheE9iamVjdC53cmFwcGVyKCkpOwogICAgIGVsc2UgewogICAgICAgICAv
LyBTZXQgdGhlIHdyYXBwZXIgaW4gdGhlIE5vZGVDaGFuZ2Ugc28gdGhhdCBpdCBpcyBzZXQgb24g
dGhlIEFYIHRocmVhZC4KQEAgLTI1NSwzMiArMjU0LDU0IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6
OnF1ZXVlQ2hhbmdlKGNvbnN0IE5vZGVDaGFuZ2UmIG5vZGVDaGFuZ2UpCiAgICAgbV9wZW5kaW5n
Q2hpbGRyZW5VcGRhdGVzLmFwcGVuZCh7IG9iamVjdElELCBXVEZNb3ZlKGNoaWxkcmVuSURzKSB9
KTsKIH0KIAotdm9pZCBBWElzb2xhdGVkVHJlZTo6cXVldWVDaGFuZ2VzQW5kUmVtb3ZhbHMoY29u
c3QgVmVjdG9yPE5vZGVDaGFuZ2U+JiBjaGFuZ2VzLCBjb25zdCBWZWN0b3I8QVhJRD4mIHN1YnRy
ZWVSZW1vdmFscykKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OnF1ZXVlUmVtb3ZhbHMoY29uc3QgVmVj
dG9yPEFYSUQ+JiBzdWJ0cmVlUmVtb3ZhbHMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICBxdWV1ZVJl
bW92YWxzTG9ja2VkKHN1YnRyZWVSZW1vdmFscyk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZFRyZWU6
OnF1ZXVlUmVtb3ZhbHNMb2NrZWQoY29uc3QgVmVjdG9yPEFYSUQ+JiBzdWJ0cmVlUmVtb3ZhbHMp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jaGFuZ2VMb2dM
b2NrLmlzTG9ja2VkKCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBheElEIDogc3VidHJlZVJl
bW92YWxzKQogICAgICAgICBtX3BlbmRpbmdTdWJ0cmVlUmVtb3ZhbHMuYXBwZW5kKGF4SUQpOwor
fQorCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjpxdWV1ZVJlbW92YWxzQW5kVW5yZXNvbHZlZENoYW5n
ZXMoY29uc3QgVmVjdG9yPEFYSUQ+JiBzdWJ0cmVlUmVtb3ZhbHMpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAotICAgIGZvciAoY29uc3QgYXV0byYgY2hhbmdlIDogY2hhbmdlcykK
LSAgICAgICAgcXVldWVDaGFuZ2UoY2hhbmdlKTsKKyAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0
Q2FjaGUoKTsKKyAgICBWZWN0b3I8Tm9kZUNoYW5nZT4gcmVzb2x2ZWRBcHBlbmRzOworICAgIGlm
IChjYWNoZSAmJiAhbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMuaXNFbXB0eSgpKSB7CisgICAg
ICAgIHJlc29sdmVkQXBwZW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fdW5yZXNvbHZlZFBl
bmRpbmdBcHBlbmRzLnNpemUoKSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgdW5yZXNvbHZl
ZENoYW5nZSA6IG1fdW5yZXNvbHZlZFBlbmRpbmdBcHBlbmRzKSB7CisgICAgICAgICAgICBpZiAo
YXV0byogYXhPYmplY3QgPSBjYWNoZS0+b2JqZWN0RnJvbUFYSUQodW5yZXNvbHZlZENoYW5nZS5r
ZXkpKQorICAgICAgICAgICAgICAgIHJlc29sdmVkQXBwZW5kcy51bmNoZWNrZWRBcHBlbmQobm9k
ZUNoYW5nZUZvck9iamVjdCgqYXhPYmplY3QsIHVucmVzb2x2ZWRDaGFuZ2UudmFsdWUuZmlyc3Qs
IHVucmVzb2x2ZWRDaGFuZ2UudmFsdWUuc2Vjb25kKSk7CisgICAgICAgIH0KKyAgICAgICAgbV91
bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMuY2xlYXIoKTsKKyAgICB9CisKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CisgICAgZm9yIChjb25zdCBhdXRvJiByZXNvbHZlZEFw
cGVuZCA6IHJlc29sdmVkQXBwZW5kcykKKyAgICAgICAgcXVldWVDaGFuZ2UocmVzb2x2ZWRBcHBl
bmQpOworICAgIHF1ZXVlUmVtb3ZhbHNMb2NrZWQoc3VidHJlZVJlbW92YWxzKTsKIH0KIAotdm9p
ZCBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZShBWENvcmVPYmpl
Y3QmIGF4T2JqZWN0LCBBWElEIHBhcmVudElELCBib29sIGF0dGFjaFdyYXBwZXIsIFZlY3RvcjxO
b2RlQ2hhbmdlPiYgY2hhbmdlcywgSGFzaFNldDxBWElEPiogaWRzQmVpbmdDaGFuZ2VkKQordm9p
ZCBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZShBWENvcmVPYmpl
Y3QmIGF4T2JqZWN0LCBBWElEIHBhcmVudElEKQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRU
cmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlIl9zKTsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotCi0gICAgYXV0byBub2RlQ2hhbmdlID0gbm9kZUNoYW5nZUZvck9iamVjdChh
eE9iamVjdCwgcGFyZW50SUQsIGF0dGFjaFdyYXBwZXIpOwotICAgIGlmIChpZHNCZWluZ0NoYW5n
ZWQpCi0gICAgICAgIGlkc0JlaW5nQ2hhbmdlZC0+YWRkKG5vZGVDaGFuZ2UuaXNvbGF0ZWRPYmpl
Y3QtPm9iamVjdElEKCkpOwotICAgIGNoYW5nZXMuYXBwZW5kKFdURk1vdmUobm9kZUNoYW5nZSkp
OworICAgIFNldEZvclNjb3BlIGNvbGxlY3RpbmdOb2RlQ2hhbmdlcyhtX2lzQ29sbGVjdGluZ05v
ZGVDaGFuZ2VzLCB0cnVlKTsKKyAgICBtX3VucmVzb2x2ZWRQZW5kaW5nQXBwZW5kcy5zZXQoYXhP
YmplY3Qub2JqZWN0SUQoKSwgc3RkOjptYWtlX3BhaXIocGFyZW50SUQsIEF0dGFjaFdyYXBwZXI6
Ok9uTWFpblRocmVhZCkpOwogCiAgICAgYXV0byBheENoaWxkcmVuQ29weSA9IGF4T2JqZWN0LmNo
aWxkcmVuKCk7CiAgICAgYXV0byBheENoaWxkcmVuSURzID0gYXhDaGlsZHJlbkNvcHkubWFwKFsm
XShhdXRvJiBheENoaWxkKSB7Ci0gICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUo
KmF4Q2hpbGQsIGF4T2JqZWN0Lm9iamVjdElEKCksIGF0dGFjaFdyYXBwZXIsIGNoYW5nZXMsIGlk
c0JlaW5nQ2hhbmdlZCk7CisgICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoKmF4
Q2hpbGQsIGF4T2JqZWN0Lm9iamVjdElEKCkpOwogICAgICAgICByZXR1cm4gYXhDaGlsZC0+b2Jq
ZWN0SUQoKTsKICAgICB9KTsKICAgICBtX25vZGVNYXAuc2V0KGF4T2JqZWN0Lm9iamVjdElEKCks
IFBhcmVudENoaWxkcmVuSURzIHsgcGFyZW50SUQsIFdURk1vdmUoYXhDaGlsZHJlbklEcykgfSk7
CkBAIC0yOTIsMTUgKzMxMywyMCBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlKEFY
Q29yZU9iamVjdCYgYXhPYmplY3QpCiAgICAgQVhMT0coJmF4T2JqZWN0KTsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgQVhJRCBheElEID0gYXhPYmplY3Qub2JqZWN0SUQoKTsK
ICAgICBhdXRvKiBheFBhcmVudCA9IGF4T2JqZWN0LnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwog
ICAgIEFYSUQgcGFyZW50SUQgPSBheFBhcmVudCA/IGF4UGFyZW50LT5vYmplY3RJRCgpIDogQVhJ
RCgpOwotCi0gICAgYXV0byBjaGFuZ2UgPSBub2RlQ2hhbmdlRm9yT2JqZWN0KGF4T2JqZWN0LCBw
YXJlbnRJRCwgdHJ1ZSk7Ci0KLSAgICAvLyBSZW1vdmUgdGhlIG9sZCBvYmplY3QgYW5kIHNldCB0
aGUgbmV3IG9uZSB0byBiZSB1cGRhdGVkIG9uIHRoZSBBWCB0aHJlYWQuCisgICAgLy8gSWYgd2Ug
dXBkYXRlIGEgbm9kZSBhcyB0aGUgcmVzdWx0IG9mIHNvbWUgc2lkZSBlZmZlY3Qgd2hpbGUgY29s
bGVjdGluZyBub2RlIGNoYW5nZXMgKGUuZy4gYSByb2xlIGNoYW5nZSBmcm9tCisgICAgLy8gQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dXBkYXRlUm9sZUFmdGVyQ2hpbGRyZW5DcmVhdGlvbiks
IHF1ZXVlIHRoZSBhcHBlbmQgdXAgdG8gYmUgcmVzb2x2ZWQgd2l0aCB0aGUgcmVzdAorICAgIC8v
IG9mIHRoZSBjb2xsZWN0ZWQgY2hhbmdlcy4gVGhpcyBwcmV2ZW50cyB1cyBmcm9tIGNyZWF0aW5n
IHR3byBub2RlIGNoYW5nZXMgZm9yIHRoZSBzYW1lIG9iamVjdC4KKyAgICBpZiAobV9pc0NvbGxl
Y3RpbmdOb2RlQ2hhbmdlcykgeworICAgICAgICBtX3VucmVzb2x2ZWRQZW5kaW5nQXBwZW5kcy5z
ZXQoYXhPYmplY3Qub2JqZWN0SUQoKSwgc3RkOjptYWtlX3BhaXIoV1RGTW92ZShwYXJlbnRJRCks
IEF0dGFjaFdyYXBwZXI6Ok9uQVhUaHJlYWQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAvLyBPdGhlcndpc2UsIHJlc29sdmUgdGhlIGNoYW5nZSBpbW1lZGlhdGVseSBhbmQgcXVldWUg
aXQgdXAuCisgICAgLy8gSW4gYm90aCBjYXNlcywgd2UgY2FuJ3QgYXR0YWNoIHRoZSB3cmFwcGVy
IGltbWVkaWF0ZWx5IG9uIHRoZSBtYWluIHRocmVhZCwgc2luY2UgdGhlIHdyYXBwZXIgY291bGQg
YmUgaW4gdXNlCisgICAgLy8gb24gdGhlIEFYIHRocmVhZCAoYmVjYXVzZSB0aGlzIGZ1bmN0aW9u
IHVwZGF0ZXMgYW4gZXhpc3Rpbmcgbm9kZSkuCisgICAgYXV0byBjaGFuZ2UgPSBub2RlQ2hhbmdl
Rm9yT2JqZWN0KGF4T2JqZWN0LCBwYXJlbnRJRCwgQXR0YWNoV3JhcHBlcjo6T25BWFRocmVhZCk7
CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwotICAgIG1fcGVuZGluZ05v
ZGVSZW1vdmFscy5hcHBlbmQoeyBheElELCBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVs
ZW1lbnRDaGFuZ2VkIH0pOwogICAgIHF1ZXVlQ2hhbmdlKGNoYW5nZSk7CiB9CiAKQEAgLTQ2Miw4
ICs0ODgsNiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbihBWENvcmVPYmpl
Y3QmIGF4T2JqZWN0KQogICAgIGNvbnN0IGF1dG8mIG5ld0NoaWxkcmVuID0gYXhBbmNlc3Rvci0+
Y2hpbGRyZW4oKTsKICAgICBhdXRvIG5ld0NoaWxkcmVuSURzID0gYXhBbmNlc3Rvci0+Y2hpbGRy
ZW5JRHMoZmFsc2UpOwogCi0gICAgVmVjdG9yPE5vZGVDaGFuZ2U+IGNoYW5nZXM7Ci0gICAgSGFz
aFNldDxBWElEPiBpZHNCZWluZ0NoYW5nZWQ7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
ZXdDaGlsZHJlbi5zaXplKCk7ICsraSkgewogICAgICAgICBBU1NFUlQobmV3Q2hpbGRyZW5baV0t
Pm9iamVjdElEKCkgPT0gbmV3Q2hpbGRyZW5JRHNbaV0pOwogICAgICAgICBBU1NFUlQobmV3Q2hp
bGRyZW5JRHNbaV0uaXNWYWxpZCgpKTsKQEAgLTQ3NCw3ICs0OTgsNyBAQCB2b2lkIEFYSXNvbGF0
ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbihBWENvcmVPYmplY3QmIGF4T2JqZWN0KQogICAgICAgICAg
ICAgLy8gVGhpcyBpcyBhIG5ldyBjaGlsZCwgYWRkIGl0IHRvIHRoZSB0cmVlLgogICAgICAgICAg
ICAgQVhMT0cobWFrZVN0cmluZygiQVhJRCAiLCBheEFuY2VzdG9yLT5vYmplY3RJRCgpLmxvZ2dp
bmdTdHJpbmcoKSwgIiBnYWluaW5nIG5ldyBzdWJ0cmVlLCBzdGFydGluZyBhdCBJRCAiLCBuZXdD
aGlsZHJlbltpXS0+b2JqZWN0SUQoKS5sb2dnaW5nU3RyaW5nKCksICI6IikpOwogICAgICAgICAg
ICAgQVhMT0cobmV3Q2hpbGRyZW5baV0pOwotICAgICAgICAgICAgY29sbGVjdE5vZGVDaGFuZ2Vz
Rm9yU3VidHJlZSgqbmV3Q2hpbGRyZW5baV0sIGF4QW5jZXN0b3ItPm9iamVjdElEKCksIHRydWUs
IGNoYW5nZXMsICZpZHNCZWluZ0NoYW5nZWQpOworICAgICAgICAgICAgY29sbGVjdE5vZGVDaGFu
Z2VzRm9yU3VidHJlZSgqbmV3Q2hpbGRyZW5baV0sIGF4QW5jZXN0b3ItPm9iamVjdElEKCkpOwog
ICAgICAgICB9CiAgICAgfQogICAgIG1fbm9kZU1hcC5zZXQoYXhBbmNlc3Rvci0+b2JqZWN0SUQo
KSwgUGFyZW50Q2hpbGRyZW5JRHMgeyBvbGRJRHMucGFyZW50SUQsIFdURk1vdmUobmV3Q2hpbGRy
ZW5JRHMpIH0pOwpAQCAtNDg3LDkgKzUxMSw5IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0
ZUNoaWxkcmVuKEFYQ29yZU9iamVjdCYgYXhPYmplY3QpCiAgICAgICAgIC8vICAgMS4gT2JqZWN0
IDEyMyBpcyBzbGF0ZWQgdG8gYmUgYSBjaGlsZCBvZiB0aGlzIG9iamVjdCAoaS5lLiBpbiBuZXdD
aGlsZHJlbiksIGFuZCB3ZSBjb2xsZWN0IG5vZGUgY2hhbmdlcyBmb3IgaXQuCiAgICAgICAgIC8v
ICAgMi4gT2JqZWN0IDEyMyBpcyBjdXJyZW50bHkgYSBtZW1iZXIgb2YgYSBzdWJ0cmVlIG9mIHNv
bWUgb3RoZXIgb2JqZWN0IGluIG9sZENoaWxkcmVuSURzLgogICAgICAgICAvLyAgIDMuIFRodXMs
IHdlIGRvbid0IHdhbnQgdG8gZGVsZXRlIE9iamVjdCAxMjMgZnJvbSB0aGUgbm9kZW1hcCwgaW5z
dGVhZCBhbGxvd2luZyBpdCB0byBiZSBtb3ZlZC4KLSAgICAgICAgcmVtb3ZlU3VidHJlZUZyb21O
b2RlTWFwKGF4SUQsIGF4QW5jZXN0b3IsIGlkc0JlaW5nQ2hhbmdlZCk7CisgICAgICAgIHJlbW92
ZVN1YnRyZWVGcm9tTm9kZU1hcChheElELCBheEFuY2VzdG9yKTsKICAgICB9Ci0gICAgcXVldWVD
aGFuZ2VzQW5kUmVtb3ZhbHMoY2hhbmdlcywgb2xkQ2hpbGRyZW5JRHMpOworICAgIHF1ZXVlUmVt
b3ZhbHNBbmRVbnJlc29sdmVkQ2hhbmdlcyhvbGRDaGlsZHJlbklEcyk7CiAKICAgICAvLyBBbHNv
IHF1ZXVlIHVwZGF0ZXMgZm9yIHByb3BlcnRpZXMgdGhhdCBkZXJpdmUgZnJvbSBjaGlsZHJlbigp
LgogICAgIHVwZGF0ZVJlbGF0ZWRQcm9wZXJ0aWVzKCpheEFuY2VzdG9yKTsKQEAgLTU1NCwxMSAr
NTc4LDEyIEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZU5vZGUoY29uc3QgQVhDb3JlT2Jq
ZWN0JiBheE9iamVjdCkKICAgICBBWExPRyhtYWtlU3RyaW5nKCJvYmplY3RJRCAiLCBheE9iamVj
dC5vYmplY3RJRCgpLmxvZ2dpbmdTdHJpbmcoKSkpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKKyAgICBtX3VucmVzb2x2ZWRQZW5kaW5nQXBwZW5kcy5yZW1vdmUoYXhPYmplY3Qub2Jq
ZWN0SUQoKSk7CiAgICAgcmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKGF4T2JqZWN0Lm9iamVjdElE
KCksIGF4T2JqZWN0LnBhcmVudE9iamVjdFVuaWdub3JlZCgpKTsKLSAgICBxdWV1ZUNoYW5nZXNB
bmRSZW1vdmFscyh7IH0sIHsgYXhPYmplY3Qub2JqZWN0SUQoKSB9KTsKKyAgICBxdWV1ZVJlbW92
YWxzKHsgYXhPYmplY3Qub2JqZWN0SUQoKSB9KTsKIH0KIAotdm9pZCBBWElzb2xhdGVkVHJlZTo6
cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKEFYSUQgb2JqZWN0SUQsIEFYQ29yZU9iamVjdCogYXhQ
YXJlbnQsIGNvbnN0IEhhc2hTZXQ8QVhJRD4mIGlkc1RvS2VlcCkKK3ZvaWQgQVhJc29sYXRlZFRy
ZWU6OnJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChBWElEIG9iamVjdElELCBBWENvcmVPYmplY3Qq
IGF4UGFyZW50KQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVl
RnJvbU5vZGVNYXAiX3MpOwogICAgIEFYTE9HKG1ha2VTdHJpbmcoIlJlbW92aW5nIHN1YnRyZWUg
Zm9yIG9iamVjdElEICIsIG9iamVjdElELmxvZ2dpbmdTdHJpbmcoKSkpOwpAQCAtNTc4LDcgKzYw
Myw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChBWElE
IG9iamVjdElELCBBWENvcmVPYmplY3QqIGF4UGFyCiAgICAgVmVjdG9yPEFYSUQ+IHJlbW92YWxz
ID0geyBvYmplY3RJRCB9OwogICAgIHdoaWxlIChyZW1vdmFscy5zaXplKCkpIHsKICAgICAgICAg
QVhJRCBheElEID0gcmVtb3ZhbHMudGFrZUxhc3QoKTsKLSAgICAgICAgaWYgKCFheElELmlzVmFs
aWQoKSB8fCBpZHNUb0tlZXAuY29udGFpbnMoYXhJRCkpCisgICAgICAgIGlmICghYXhJRC5pc1Zh
bGlkKCkgfHwgbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMuY29udGFpbnMoYXhJRCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvIGl0ID0gbV9ub2RlTWFwLmZpbmQoYXhJ
RCk7CkBAIC02NDgsMTMgKzY3MywxMyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRp
bmdDaGFuZ2VzKCkKICAgICAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgaWYgKGF1dG8gb2JqZWN0ID0gbV9yZWFkZXJUaHJlYWROb2RlTWFwLmdldChh
eElEKSkgewotICAgICAgICAgICAgaWYgKG9iamVjdCAhPSAmaXRlbS5pc29sYXRlZE9iamVjdC5n
ZXQoKQotICAgICAgICAgICAgICAgICYmIG9iamVjdC0+d3JhcHBlcigpID09IHdyYXBwZXIuZ2V0
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gZXhpc3RpbmdPYmplY3QgPSBtX3JlYWRlclRocmVhZE5v
ZGVNYXAuZ2V0KGF4SUQpKSB7CisgICAgICAgICAgICBpZiAoZXhpc3RpbmdPYmplY3QgIT0gJml0
ZW0uaXNvbGF0ZWRPYmplY3QuZ2V0KCkKKyAgICAgICAgICAgICAgICAmJiBleGlzdGluZ09iamVj
dC0+d3JhcHBlcigpID09IHdyYXBwZXIuZ2V0KCkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUg
bmV3IElzb2xhdGVkT2JqZWN0IGlzIGEgcmVwbGFjZW1lbnQgZm9yIGFuIGV4aXN0aW5nIG9iamVj
dAogICAgICAgICAgICAgICAgIC8vIGFzIHRoZSByZXN1bHQgb2YgYW4gdXBkYXRlLiBUaHVzIGRl
dGFjaCB0aGUgd3JhcHBlciBmcm9tIHRoZQogICAgICAgICAgICAgICAgIC8vIGV4aXN0aW5nIG9i
amVjdCBhbmQgYXR0YWNoIGl0IHRvIHRoZSBuZXcgb25lLgotICAgICAgICAgICAgICAgIG9iamVj
dC0+ZGV0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVsZW1lbnRDaGFu
Z2VkKTsKKyAgICAgICAgICAgICAgICBleGlzdGluZ09iamVjdC0+ZGV0YWNoV3JhcHBlcihBY2Nl
c3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVsZW1lbnRDaGFuZ2VkKTsKICAgICAgICAgICAgICAg
ICBpdGVtLmlzb2xhdGVkT2JqZWN0LT5hdHRhY2hQbGF0Zm9ybVdyYXBwZXIod3JhcHBlci5nZXQo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3JlYWRlclRocmVhZE5vZGVNYXAucmVt
b3ZlKGF4SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXggZmJiYTVlNzRiNmI1ZDhlMTBjMjgx
ZDFlZDU3MTU1YmY2MTdiOGU3Mi4uZTYxODY1ZDM1N2I4OTg3NmFhYzcyNTI1NjI5ZDI3NGFhYTNk
ZDU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0zNDksNyArMzQ5LDcgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgfTsKIAotICAgIHZvaWQgZ2VuZXJhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYs
IEFYQ29yZU9iamVjdCosIGJvb2wgYXR0YWNoV3JhcHBlcik7CisgICAgdm9pZCBnZW5lcmF0ZVN1
YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhDb3JlT2JqZWN0Kik7CiAgICAgdm9pZCB1cGRhdGVOb2Rl
KEFYQ29yZU9iamVjdCYpOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0Jik7
CiAgICAgdm9pZCB1cGRhdGVOb2RlUHJvcGVydHkoQVhDb3JlT2JqZWN0JiwgQVhQcm9wZXJ0eU5h
bWUpOwpAQCAtMzYzLDcgKzM2Myw3IEBAIHB1YmxpYzoKICAgICAvLyBSZW1vdmVzIHRoZSBjb3Jy
ZXNwb25kaW5nIGlzb2xhdGVkIG9iamVjdCBhbmQgYWxsIGRlc2NlbmRhbnRzIGZyb20gdGhlIG1f
bm9kZU1hcCBhbmQgcXVldWVzIHRoZWlyIHJlbW92YWwgZnJvbSB0aGUgdHJlZS4KICAgICB2b2lk
IHJlbW92ZU5vZGUoY29uc3QgQVhDb3JlT2JqZWN0Jik7CiAgICAgLy8gUmVtb3ZlcyB0aGUgZ2l2
ZW4gbm9kZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cyBmcm9tIG1fbm9kZU1hcC4KLSAgICB2b2lk
IHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChBWElEIGF4SUQsIEFYQ29yZU9iamVjdCosIGNvbnN0
IEhhc2hTZXQ8QVhJRD4mID0geyB9KTsKKyAgICB2b2lkIHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1h
cChBWElEIGF4SUQsIEFYQ29yZU9iamVjdCopOwogCiAgICAgLy8gQm90aCBzZXRSb290Tm9kZUlE
IGFuZCBzZXRGb2N1c2VkTm9kZUlEIGFyZSBjYWxsZWQgZHVyaW5nIHRoZSBnZW5lcmF0aW9uCiAg
ICAgLy8gb2YgdGhlIElzb2xhdGVkVHJlZS4KQEAgLTM4OCwxMCArMzg4LDEzIEBAIHByaXZhdGU6
CiAgICAgLy8gTWV0aG9kcyBpbiB0aGlzIGJsb2NrIGFyZSBjYWxsZWQgb24gdGhlIG1haW4gdGhy
ZWFkLgogICAgIC8vIENvbXB1dGVzIHRoZSBwYXJlbnQgSUQgb2YgdGhlIGdpdmVuIG9iamVjdCwg
d2hpY2ggaXMgZ2VuZXJhbGx5IHRoZSAiYXNzdW1lZCIgcGFyZW50IElEIChidXQgbm90IGFsd2F5
cywgbGlrZSBpbiB0aGUgY2FzZSBvZiB0YWJsZXMpLgogICAgIEFYSUQgcGFyZW50SURGb3JPYmpl
Y3QoQVhDb3JlT2JqZWN0JiwgQVhJRCBhc3N1bWVkUGFyZW50SUQpOwotICAgIE5vZGVDaGFuZ2Ug
bm9kZUNoYW5nZUZvck9iamVjdChBWENvcmVPYmplY3QmLCBBWElEIHBhcmVudElELCBib29sIGF0
dGFjaFdyYXBwZXIgPSB0cnVlKTsKLSAgICB2b2lkIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRy
ZWUoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyLCBWZWN0
b3I8Tm9kZUNoYW5nZT4mLCBIYXNoU2V0PEFYSUQ+KiA9IG51bGxwdHIpOworICAgIGVudW0gY2xh
c3MgQXR0YWNoV3JhcHBlciA6IGJvb2wgeyBPbk1haW5UaHJlYWQsIE9uQVhUaHJlYWQgfTsKKyAg
ICBOb2RlQ2hhbmdlIG5vZGVDaGFuZ2VGb3JPYmplY3QoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJl
bnRJRCwgQXR0YWNoV3JhcHBlciA9IEF0dGFjaFdyYXBwZXI6Ok9uTWFpblRocmVhZCk7CisgICAg
dm9pZCBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKEFYQ29yZU9iamVjdCYsIEFYSUQgcGFy
ZW50SUQpOwogICAgIHZvaWQgcXVldWVDaGFuZ2UoY29uc3QgTm9kZUNoYW5nZSYpIFdURl9SRVFV
SVJFU19MT0NLKG1fY2hhbmdlTG9nTG9jayk7Ci0gICAgdm9pZCBxdWV1ZUNoYW5nZXNBbmRSZW1v
dmFscyhjb25zdCBWZWN0b3I8Tm9kZUNoYW5nZT4mLCBjb25zdCBWZWN0b3I8QVhJRD4mID0geyB9
KTsKKyAgICB2b2lkIHF1ZXVlUmVtb3ZhbHMoY29uc3QgVmVjdG9yPEFYSUQ+Jik7CisgICAgdm9p
ZCBxdWV1ZVJlbW92YWxzTG9ja2VkKGNvbnN0IFZlY3RvcjxBWElEPiYpIFdURl9SRVFVSVJFU19M
T0NLKG1fY2hhbmdlTG9nTG9jayk7CisgICAgdm9pZCBxdWV1ZVJlbW92YWxzQW5kVW5yZXNvbHZl
ZENoYW5nZXMoY29uc3QgVmVjdG9yPEFYSUQ+Jik7CiAKICAgICBBWElzb2xhdGVkVHJlZUlEIG1f
dHJlZUlEOwogICAgIEFYT2JqZWN0Q2FjaGUqIG1fYXhPYmplY3RDYWNoZSB7IG51bGxwdHIgfTsK
QEAgLTQwOCw2ICs0MTEsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBpdHMgT2JqZWN0SUQgdG8gaXRz
IFBhcmVudENoaWxkcmVuSURzIHN0cnVjdC4KICAgICBIYXNoTWFwPEFYSUQsIFBhcmVudENoaWxk
cmVuSURzPiBtX25vZGVNYXA7CiAKKyAgICAvLyBPbmx5IGFjY2Vzc2VkIG9uIHRoZSBtYWluIHRo
cmVhZC4KKyAgICAvLyBUaGUga2V5IGlzIHRoZSBJRCBvZiB0aGUgb2JqZWN0IHRoYXQgd2lsbCBi
ZSByZXNvbHZlZCBpbnRvIGFuIG1fcGVuZGluZ0FwcGVuZHMgTm9kZUNoYW5nZS4KKyAgICAvLyBU
aGUgdmFsdWUgcmVwcmVzZW50cyB0aGUgcGFyZW50IElEIG9mIHRoZSBvYmplY3QsIGFuZCB3aGV0
aGVyIHRoZSB3cmFwcGVyIHNob3VsZCBiZSBhdHRhY2hlZCBvbiB0aGUgbWFpbiB0aHJlYWQgb3Ig
dGhlIEFYIHRocmVhZC4KKyAgICBIYXNoTWFwPEFYSUQsIHN0ZDo6cGFpcjxBWElELCBBdHRhY2hX
cmFwcGVyPj4gbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHM7CisgICAgLy8gT25seSBhY2Nlc3Nl
ZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgYm9vbCBtX2lzQ29sbGVjdGluZ05vZGVDaGFuZ2Vz
IHsgZmFsc2UgfTsKKwogICAgIC8vIE9ubHkgYWNjZXNzZWQgb24gQVggdGhyZWFkIHJlcXVlc3Rp
bmcgZGF0YS4KICAgICBIYXNoTWFwPEFYSUQsIFJlZjxBWElzb2xhdGVkT2JqZWN0Pj4gbV9yZWFk
ZXJUaHJlYWROb2RlTWFwOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457753</attachid>
            <date>2022-04-16 13:41:48 -0700</date>
            <delta_ts>2022-04-16 13:55:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239398-20220416154146.patch</filename>
            <type>text/plain</type>
            <size>21897</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzczODExMjRmZTU4ZDJh
MTc0MDhmOTg5MmUzYjJkYzk5ZmFmMjMxYS4uYzE1NTg5OGJiY2IwOTY2OWEzNTA5Y2EzYjIwZDlk
NzljYTUzMTc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIyLTA0LTE2ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgTm9kZSBjaGFuZ2VzIGNy
ZWF0ZWQgYnkgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGUgYXJlIG92ZXJ3cml0dGVuIHdoZW4g
cGVyZm9ybWVkIGR1cmluZyBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3Vi
dHJlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5
Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
Y3VycmVudGx5IGRvIHRoZSB3cm9uZyB0aGluZyBpbiB0aGlzIHNjZW5hcmlvOgorCisgICAgICAg
ICAgMS4gQSBkeW5hbWljIHBhZ2UgY2hhbmdlIGNhdXNlcyBhbiBlbGVtZW50IHRvIGJlIGluY2x1
ZGVkIG9uIHRoZSBwYWdlLCBzbyB3ZQorICAgICAgICAgICAgIGNyZWF0ZSBhIG5vZGUgY2hhbmdl
IGZvciBpdCBhbmQgaXRzIHN1YnRyZWUgYnkgY2FsbGluZyBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JT
dWJ0cmVlLgorICAgICAgICAgICAgIFRoaXMgY2F1c2VzIGEgY2FsbCB0byBjaGlsZHJlbigpIG9u
IHRoZSBsaXZlIG9iamVjdC4KKworICAgICAgICAgIDIuIEluIHRoZSBwcm9jZXNzIG9mIChvciBh
ZnRlcikgdXBkYXRpbmcgdGhlIGNoaWxkcmVuIG9mIHRoZSBsaXZlIG9iamVjdCwgd2UgcGVyZm9y
bSBzb21lCisgICAgICAgICAgICAgb3BlcmF0aW9uIHRoYXQgdHJpZ2dlcnMgQVhJc29sYXRlZFRy
ZWU6OnVwZGF0ZU5vZGUgb24gc2FpZCBvYmplY3QuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnVwZGF0ZVJvbGVBZnRlckNoaWxkcmVuQ3JlYXRpb24KKyAgICAgICAgICAgICB3b3VsZCBiZSBh
biBleGFtcGxlIG9mIHRoaXMgaWYgaXQgd2VyZSBwcm9wZXJseSBjb2RlZCB0byB1cGRhdGUgdGhl
IGlzb2xhdGVkIHRyZWUgaWYKKyAgICAgICAgICAgICB0aGUgb2JqZWN0J3Mgcm9sZSBjaGFuZ2Vz
IChJJ2xsIGFkZHJlc3MgdGhhdCBpbiBhIHNlcGFyYXRlIHBhdGNoKS4gdXBkYXRlTm9kZSByZXN1
bHRzCisgICAgICAgICAgICAgaW4gYSBub2RlIGNoYW5nZSB3aXRoIHRoZSBjb3JyZWN0IHByb3Bl
cnRpZXMgYmVpbmcgYWRkZWQgdG8gbV9wZW5kaW5nQXBwZW5kcy4KKworICAgICAgICAgIDMuIGNv
bGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUgKHN0YXJ0ZWQgaW4gc3RlcCAxKSBmaW5pc2hlcywg
YW5kIHF1ZXVlcyBhIG5vZGUgY2hhbmdlCisgICAgICAgICAgICAgZm9yIHRoZSBzYW1lIG9iamVj
dCwgYnV0IHdpdGggdGhlIHdyb25nIHByb3BlcnRpZXMgKGJlY2F1c2UgaXQgd2FzIGNyZWF0ZWQg
YmVmb3JlIHN0ZXAgMikuCisgICAgICAgICAgICAgQmVjYXVzZSBpdCBjb21lcyBhZnRlciB0aGUg
bm9kZSBjaGFuZ2UgYWRkZWQgaW4gc3RlcCAyIHRvIG1fcGVuZGluZ0FwcGVuZHMsIGl0IHdpbnMs
CisgICAgICAgICAgICAgYW5kIHdlIGFkZCBhbiBvYmplY3Qgd2l0aCB0aGUgd3JvbmcgcHJvcGVy
dGllcyB0byB0aGUgdHJlZS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgd2l0aCBh
IG5ldyBBWElzb2xhdGVkVHJlZTo6bV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMgbWVtYmVyCisg
ICAgICAgIHZhcmlhYmxlLiBUaGlzIGlzIGEgSGFzaE1hcCB3aXRoIGFuIEFYSUQga2V5LCByZXBy
ZXNlbnRpbmcgdGhlIG9iamVjdCB0byBjcmVhdGUgYSBub2RlCisgICAgICAgIGNoYW5nZSBmb3Iu
IE5vdywgYm90aCBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlIGFuZCB1cGRhdGVOb2RlIHdp
bGwgYWRkIGFuIGVudHJ5CisgICAgICAgIHRvIHRoaXMgSGFzaE1hcCwgYWxsb3dpbmcgaXQgdG8g
YmUgcmVzb2x2ZWQgaXQgKGkuZS4gYnkgY3JlYXRpbmcgdGhlIG5vZGUgY2hhbmdlKSBhdCBhIGxh
dGVyIHRpbWUuCisKKyAgICAgICAgVGhpcyBpcyBib3RoIG1vcmUgY29ycmVjdCAoYXMgaXQgcHJl
dmVudHMgYW55IG9yZGVyaW5nIGJ1Z3MgZW50aXJlbHkpLCBhbmQgbW9yZQorICAgICAgICBlZmZp
Y2llbnQsIGJlY2F1c2Ugd2Ugbm93IG5ldmVyIGNyZWF0ZSBtdWx0aXBsZSBub2RlIGNoYW5nZXMg
Zm9yIHRoZSBzYW1lIG9iamVjdC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gbmVjZXNzaXRh
dGVkIG90aGVyIGNvZGUgY2xlYW51cCBpdGVtczoKKyAgICAgICAgICAtIG1fdW5yZXNvbHZlZFBl
bmRpbmdBcHBlbmRzIGFsbG93cyB1cyB0byByZW1vdmUgdGhlIGBpZHNCZWluZ0NoYW5nZWRgIHBh
cmFtZXRlcgorICAgICAgICAgICAgd2UgcGFzc2VkIHRvIHNldmVyYWwgZnVuY3Rpb25zIHNpbmNl
IHRoaXMgbWVtYmVyIHZhcmlhYmxlIGRvZXMgdGhlIHNhbWUgdGhpbmcuCisKKyAgICAgICAgICAt
IG1fcGVuZGluZ05vZGVSZW1vdmFscyBoYXMgYmVlbiBkZWxldGVkLiBUaGUgb25seSB0aGluZyBh
ZGRpbmcgdG8gdGhpcyB3YXMKKyAgICAgICAgICAgIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2Rl
LCBhbmQgaXQgZGlkIHNvIHVubmVjZXNzYXJpbHksIHNpbmNlIHdlIGFscmVhZHkgaGFuZGxlCisg
ICAgICAgICAgICB0aGUgY2FzZSB3aGVyZSB3ZSBhcmUgcmVwbGFjaW5nIGFuIGV4aXN0aW5nIG9i
amVjdCB3aGVuIHByb2Vzc2luZyBtX3BlbmRpbmdBcHBlbmRzLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWxzbyBmaXhlcyBhbiBpc3N1ZSBmb3VuZCBieSBBbmRyZXMgR29uemFsZXogaW4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTQwMi4KKyAgICAgICAgQVhJc29s
YXRlZFRyZWU6OnVwZGF0ZU5vZGUgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBhdHRhY2ggdGhlIHdy
YXBwZXIgdG8gdGhlIG5ldyBvYmplY3Qgb24gdGhlIG1haW4gdGhyZWFkCisgICAgICAgIHNpbmNl
IGl0IGNvdWxkIGJlIGluIHVzZSBvbiB0aGUgQVggdGhyZWFkLiBUbyBtYWtlIHRoaXMgbW9yZSBj
bGVhciwgdGhlIGBhdHRhY2hXcmFwcGVyYCBwYXJhbWV0ZXIgaGFzIGJlZW4KKyAgICAgICAgY2hh
bmdlZCBmcm9tIGEgYm9vbCB0byBhbiBlbnVtIGNhbGxlZCBBdHRhY2hXcmFwcGVyIHdpdGggdmFs
dWVzIGBPbk1haW5UaHJlYWRgIGFuZCBgT25BWFRocmVhZGAuCisKKyAgICAgICAgRml4ZXMgc2l4
IHRlc3RzIGluIGlzb2xhdGVkIHRyZWUgbW9kZToKKyAgICAgICAgICAtIGFjY2Vzc2liaWxpdHkv
YXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC5odG1sCisgICAgICAgICAgLSBhY2Nlc3Np
YmlsaXR5L2FyaWEtcm9sZS1vbi1sYWJlbC5odG1sCisgICAgICAgICAgLSBhY2Nlc3NpYmlsaXR5
L21hYy9sYWJlbC1lbGVtZW50LWFsbC10ZXh0LXN0cmluZy12YWx1ZS5odG1sCisgICAgICAgICAg
LSBhY2Nlc3NpYmlsaXR5L21hYy9sYWJlbC1lbGVtZW50LXdpdGgtaGlkZGVuLWNvbnRyb2wuaHRt
bAorICAgICAgICAgIC0gYWNjZXNzaWJpbGl0eS9tYWMvbGFiZWwtZWxlbWVudC1hbGwtdGV4dC1z
dHJpbmctdmFsdWUuaHRtbAorICAgICAgICAgIC0gYWNjZXNzaWJpbGl0eS9tYWMvc2xpZGVyLWFs
bG93cy10aXRsZS11aS1lbGVtZW50Lmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp0cmVlRGF0
YSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpub2RlQ2hhbmdlRm9yT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpxdWV1ZVJlbW92YWxzKToKKyAgICAgICAgQWRkZWQuIEFs
bG93cyB5b3UgdG8gcXVldWUgb2JqZWN0cyBmb3IgcmVtb3ZhbCBmcm9tIGNvbnRleHRzIHdoZXJl
IHlvdQorICAgICAgICBkb24ndCBhbHJlYWR5IGhvbGQgYSBsb2NrLgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZFRyZWU6OnF1ZXVlUmVtb3ZhbHNMb2NrZWQpOgorICAgICAgICBBZGRlZC4g
QWxsb3dzIHlvdSB0byBxdWV1ZSBvYmplY3RzIGZvciByZW1vdmFsIGZyb20gY29udGV4dHMgd2hl
cmUgeW91CisgICAgICAgIGFscmVhZHkgaG9sZCBhIGxvY2suCisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6cXVldWVSZW1vdmFsc0FuZFVucmVzb2x2ZWRDaGFuZ2VzKToKKyAgICAg
ICAgQWRkZWQuIFJlcGxhY2VzIEFYSXNvbGF0ZWRUcmVlOjpxdWV1ZUNoYW5nZXNBbmRSZW1vdmFs
cy4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNG
b3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cmVtb3ZlTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKToKKyAgICAg
ICAgQ2hhbmdlIGxvY2FsIHZhcmlhYmxlIG5hbWUgZnJvbSBvYmplY3QgdG8gZXhpc3RpbmdPYmpl
Y3QgYXMgdGhpcyBtYWtlcworICAgICAgICB0aGUgY29kZSBtdWNoIG1vcmUgY2xlYXIuCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpxdWV1ZUNoYW5nZXNBbmRSZW1vdmFscyk6IERl
bGV0ZWQuCisKIDIwMjItMDQtMTQgIEdhYnJpZWwgTmF2YSBNYXJpbm8gIDxnbmF2YW1hcmlub0Bh
cHBsZS5jb20+CiAKICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjppc0V2ZW50QWxsb3dl
ZEluTWFpblRocmVhZCBhc3NlcnQgZmFpbHVyZSB3aGVuIGFjdGl2YXRpbmcgQXVkaW9TZXNzaW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRl
eCBmYTFlOTQzYjUyMGU5ZjIxNTU0NzExZjA5NzcyODgxYjRjNWM4MmFiLi5iMDA3ZDUxNjBiOGEx
MzczNzg2MzQ4MDJjNDRkYjJkYjdkZWNjY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTM1NjQsNyArMzU2NCw3IEBAIEFYVHJlZURh
dGEgQVhPYmplY3RDYWNoZTo6dHJlZURhdGEoKQogCiAgICAgc3RyZWFtIDw8ICJcbkFYT2JqZWN0
VHJlZTpcbiI7CiAgICAgaWYgKGF1dG8qIHJvb3QgPSBnZXQoZG9jdW1lbnQoKS52aWV3KCkpKSB7
Ci0gICAgICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8QVhTdHJlYW1PcHRpb25zPiBvcHRpb25zID0g
eyBBWFN0cmVhbU9wdGlvbnM6Ok9iamVjdElELCBBWFN0cmVhbU9wdGlvbnM6OlBhcmVudElEIH07
CisgICAgICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8QVhTdHJlYW1PcHRpb25zPiBvcHRpb25zID0g
eyBBWFN0cmVhbU9wdGlvbnM6Ok9iamVjdElELCBBWFN0cmVhbU9wdGlvbnM6OlBhcmVudElELCBB
WFN0cmVhbU9wdGlvbnM6OlJvbGUgfTsKICAgICAgICAgc3RyZWFtU3VidHJlZShzdHJlYW0sIHJv
b3QsIG9wdGlvbnMpOwogICAgIH0gZWxzZQogICAgICAgICBzdHJlYW0gPDwgIk5vIHJvb3QhIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCBhNDQzNjA3NTBhNjY4MjlhNGVjMzg0OGE1Nzhj
N2VhOTc4MDY2N2ZkLi5iMGM1NzI5YTAzMjMxZWZkM2IxMGZkZDk5YmFkMzY3Yjk5YzM5OTE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgUmVmPEFYSXNvbGF0
ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2Fj
aGUpCiAgICAgLy8gRm9yIHRoaXMsIHdlIG5lZWQgdGhlIHJvb3QgYW5kIGZvY3VzZWQgb2JqZWN0
cyBvZiB0aGUgQVhPYmplY3QgdHJlZS4KICAgICBhdXRvKiBheFJvb3QgPSBheE9iamVjdENhY2hl
LT5nZXRPckNyZWF0ZShheE9iamVjdENhY2hlLT5kb2N1bWVudCgpLnZpZXcoKSk7CiAgICAgaWYg
KGF4Um9vdCkKLSAgICAgICAgdHJlZS0+Z2VuZXJhdGVTdWJ0cmVlKCpheFJvb3QsIG51bGxwdHIs
IHRydWUpOworICAgICAgICB0cmVlLT5nZW5lcmF0ZVN1YnRyZWUoKmF4Um9vdCwgbnVsbHB0cik7
CiAgICAgYXV0byogYXhGb2N1cyA9IGF4T2JqZWN0Q2FjaGUtPmZvY3VzZWRPYmplY3RGb3JQYWdl
KGF4T2JqZWN0Q2FjaGUtPmRvY3VtZW50KCkucGFnZSgpKTsKICAgICBpZiAoYXhGb2N1cykKICAg
ICAgICAgdHJlZS0+c2V0Rm9jdXNlZE5vZGVJRChheEZvY3VzLT5vYmplY3RJRCgpKTsKQEAgLTE2
OSw3ICsxNjksNyBAQCBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVl
OjpvYmplY3RzRm9ySURzKGNvbnN0IFZlY3RvcjxBWElEPiYgYQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShBWENvcmVPYmplY3Qm
IGF4T2JqZWN0LCBBWENvcmVPYmplY3QqIGF4UGFyZW50LCBib29sIGF0dGFjaFdyYXBwZXIpCit2
b2lkIEFYSXNvbGF0ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVj
dCwgQVhDb3JlT2JqZWN0KiBheFBhcmVudCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJl
ZTo6Z2VuZXJhdGVTdWJ0cmVlIl9zKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAt
MTc4LDkgKzE3OCw4IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShBWENv
cmVPYmplY3QmIGF4T2JqZWN0LCBBWENvcmVPYmplY3QqIGF4UGFyCiAgICAgICAgIHJldHVybjsK
IAogICAgIEFYSUQgcGFyZW50SUQgPSBheFBhcmVudCA/IGF4UGFyZW50LT5vYmplY3RJRCgpIDog
QVhJRCgpOwotICAgIFZlY3RvcjxOb2RlQ2hhbmdlPiBjaGFuZ2VzOwotICAgIGNvbGxlY3ROb2Rl
Q2hhbmdlc0ZvclN1YnRyZWUoYXhPYmplY3QsIHBhcmVudElELCBhdHRhY2hXcmFwcGVyLCBjaGFu
Z2VzKTsKLSAgICBxdWV1ZUNoYW5nZXNBbmRSZW1vdmFscyhjaGFuZ2VzKTsKKyAgICBjb2xsZWN0
Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKGF4T2JqZWN0LCBwYXJlbnRJRCk7CisgICAgcXVldWVSZW1v
dmFsc0FuZFVucmVzb2x2ZWRDaGFuZ2VzKHsgfSk7CiB9CiAKIEFYSUQgQVhJc29sYXRlZFRyZWU6
OnBhcmVudElERm9yT2JqZWN0KEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYSUQgYXNzdW1lZFBh
cmVudElEKQpAQCAtMjAzLDcgKzIwMiw3IEBAIEFYSUQgQVhJc29sYXRlZFRyZWU6OnBhcmVudElE
Rm9yT2JqZWN0KEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYSUQgYXNzdW1lZFBhcmVuCiAgICAg
cmV0dXJuIGFzc3VtZWRQYXJlbnRJRDsKIH0KIAotQVhJc29sYXRlZFRyZWU6Ok5vZGVDaGFuZ2Ug
QVhJc29sYXRlZFRyZWU6Om5vZGVDaGFuZ2VGb3JPYmplY3QoQVhDb3JlT2JqZWN0JiBheE9iamVj
dCwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyKQorQVhJc29sYXRlZFRyZWU6Ok5v
ZGVDaGFuZ2UgQVhJc29sYXRlZFRyZWU6Om5vZGVDaGFuZ2VGb3JPYmplY3QoQVhDb3JlT2JqZWN0
JiBheE9iamVjdCwgQVhJRCBwYXJlbnRJRCwgQXR0YWNoV3JhcHBlciBhdHRhY2hXcmFwcGVyKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTIxNyw3ICsyMTYsNyBAQCBBWElz
b2xhdGVkVHJlZTo6Tm9kZUNoYW5nZSBBWElzb2xhdGVkVHJlZTo6bm9kZUNoYW5nZUZvck9iamVj
dChBWENvcmVPYmplY3QmIGF4TwogICAgIH0KIAogICAgIEFTU0VSVChheE9iamVjdC53cmFwcGVy
KCkpOwotICAgIGlmIChhdHRhY2hXcmFwcGVyKQorICAgIGlmIChhdHRhY2hXcmFwcGVyID09IEF0
dGFjaFdyYXBwZXI6Ok9uTWFpblRocmVhZCkKICAgICAgICAgb2JqZWN0LT5hdHRhY2hQbGF0Zm9y
bVdyYXBwZXIoYXhPYmplY3Qud3JhcHBlcigpKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gU2V0
IHRoZSB3cmFwcGVyIGluIHRoZSBOb2RlQ2hhbmdlIHNvIHRoYXQgaXQgaXMgc2V0IG9uIHRoZSBB
WCB0aHJlYWQuCkBAIC0yNTUsMzIgKzI1NCw1NCBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpxdWV1
ZUNoYW5nZShjb25zdCBOb2RlQ2hhbmdlJiBub2RlQ2hhbmdlKQogICAgIG1fcGVuZGluZ0NoaWxk
cmVuVXBkYXRlcy5hcHBlbmQoeyBvYmplY3RJRCwgV1RGTW92ZShjaGlsZHJlbklEcykgfSk7CiB9
CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OnF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxzKGNvbnN0IFZl
Y3RvcjxOb2RlQ2hhbmdlPiYgY2hhbmdlcywgY29uc3QgVmVjdG9yPEFYSUQ+JiBzdWJ0cmVlUmVt
b3ZhbHMpCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjpxdWV1ZVJlbW92YWxzKGNvbnN0IFZlY3RvcjxB
WElEPiYgc3VidHJlZVJlbW92YWxzKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAK
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CisgICAgcXVldWVSZW1vdmFs
c0xvY2tlZChzdWJ0cmVlUmVtb3ZhbHMpOworfQorCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjpxdWV1
ZVJlbW92YWxzTG9ja2VkKGNvbnN0IFZlY3RvcjxBWElEPiYgc3VidHJlZVJlbW92YWxzKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY2hhbmdlTG9nTG9jay5p
c0xvY2tlZCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgYXhJRCA6IHN1YnRyZWVSZW1vdmFs
cykKICAgICAgICAgbV9wZW5kaW5nU3VidHJlZVJlbW92YWxzLmFwcGVuZChheElEKTsKK30KIAot
ICAgIGZvciAoY29uc3QgYXV0byYgY2hhbmdlIDogY2hhbmdlcykKLSAgICAgICAgcXVldWVDaGFu
Z2UoY2hhbmdlKTsKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OnF1ZXVlUmVtb3ZhbHNBbmRVbnJlc29s
dmVkQ2hhbmdlcyhjb25zdCBWZWN0b3I8QVhJRD4mIHN1YnRyZWVSZW1vdmFscykKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byogY2FjaGUgPSBheE9iamVjdENhY2hl
KCk7CisgICAgVmVjdG9yPE5vZGVDaGFuZ2U+IHJlc29sdmVkQXBwZW5kczsKKyAgICBpZiAoY2Fj
aGUgJiYgIW1fdW5yZXNvbHZlZFBlbmRpbmdBcHBlbmRzLmlzRW1wdHkoKSkgeworICAgICAgICBy
ZXNvbHZlZEFwcGVuZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3VucmVzb2x2ZWRQZW5kaW5n
QXBwZW5kcy5zaXplKCkpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHVucmVzb2x2ZWRDaGFu
Z2UgOiBtX3VucmVzb2x2ZWRQZW5kaW5nQXBwZW5kcykgeworICAgICAgICAgICAgaWYgKGF1dG8q
IGF4T2JqZWN0ID0gY2FjaGUtPm9iamVjdEZyb21BWElEKHVucmVzb2x2ZWRDaGFuZ2Uua2V5KSkK
KyAgICAgICAgICAgICAgICByZXNvbHZlZEFwcGVuZHMudW5jaGVja2VkQXBwZW5kKG5vZGVDaGFu
Z2VGb3JPYmplY3QoKmF4T2JqZWN0LCB1bnJlc29sdmVkQ2hhbmdlLnZhbHVlLmZpcnN0LCB1bnJl
c29sdmVkQ2hhbmdlLnZhbHVlLnNlY29uZCkpOworICAgICAgICB9CisgICAgICAgIG1fdW5yZXNv
bHZlZFBlbmRpbmdBcHBlbmRzLmNsZWFyKCk7CisgICAgfQorCisgICAgTG9ja2VyIGxvY2tlciB7
IG1fY2hhbmdlTG9nTG9jayB9OworICAgIGZvciAoY29uc3QgYXV0byYgcmVzb2x2ZWRBcHBlbmQg
OiByZXNvbHZlZEFwcGVuZHMpCisgICAgICAgIHF1ZXVlQ2hhbmdlKHJlc29sdmVkQXBwZW5kKTsK
KyAgICBxdWV1ZVJlbW92YWxzTG9ja2VkKHN1YnRyZWVSZW1vdmFscyk7CiB9CiAKLXZvaWQgQVhJ
c29sYXRlZFRyZWU6OmNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiBh
eE9iamVjdCwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyLCBWZWN0b3I8Tm9kZUNo
YW5nZT4mIGNoYW5nZXMsIEhhc2hTZXQ8QVhJRD4qIGlkc0JlaW5nQ2hhbmdlZCkKK3ZvaWQgQVhJ
c29sYXRlZFRyZWU6OmNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiBh
eE9iamVjdCwgQVhJRCBwYXJlbnRJRCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6
Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZSJfcyk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLQotICAgIGF1dG8gbm9kZUNoYW5nZSA9IG5vZGVDaGFuZ2VGb3JPYmplY3QoYXhPYmpl
Y3QsIHBhcmVudElELCBhdHRhY2hXcmFwcGVyKTsKLSAgICBpZiAoaWRzQmVpbmdDaGFuZ2VkKQot
ICAgICAgICBpZHNCZWluZ0NoYW5nZWQtPmFkZChub2RlQ2hhbmdlLmlzb2xhdGVkT2JqZWN0LT5v
YmplY3RJRCgpKTsKLSAgICBjaGFuZ2VzLmFwcGVuZChXVEZNb3ZlKG5vZGVDaGFuZ2UpKTsKKyAg
ICBTZXRGb3JTY29wZSBjb2xsZWN0aW5nTm9kZUNoYW5nZXMobV9pc0NvbGxlY3RpbmdOb2RlQ2hh
bmdlcywgdHJ1ZSk7CisgICAgbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMuc2V0KGF4T2JqZWN0
Lm9iamVjdElEKCksIHN0ZDo6bWFrZV9wYWlyKHBhcmVudElELCBBdHRhY2hXcmFwcGVyOjpPbk1h
aW5UaHJlYWQpKTsKIAogICAgIGF1dG8gYXhDaGlsZHJlbkNvcHkgPSBheE9iamVjdC5jaGlsZHJl
bigpOwogICAgIGF1dG8gYXhDaGlsZHJlbklEcyA9IGF4Q2hpbGRyZW5Db3B5Lm1hcChbJl0oYXV0
byYgYXhDaGlsZCkgewotICAgICAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpheENo
aWxkLCBheE9iamVjdC5vYmplY3RJRCgpLCBhdHRhY2hXcmFwcGVyLCBjaGFuZ2VzLCBpZHNCZWlu
Z0NoYW5nZWQpOworICAgICAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpheENoaWxk
LCBheE9iamVjdC5vYmplY3RJRCgpKTsKICAgICAgICAgcmV0dXJuIGF4Q2hpbGQtPm9iamVjdElE
KCk7CiAgICAgfSk7CiAgICAgbV9ub2RlTWFwLnNldChheE9iamVjdC5vYmplY3RJRCgpLCBQYXJl
bnRDaGlsZHJlbklEcyB7IHBhcmVudElELCBXVEZNb3ZlKGF4Q2hpbGRyZW5JRHMpIH0pOwpAQCAt
MjkyLDE1ICszMTMsMjAgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZShBWENvcmVP
YmplY3QmIGF4T2JqZWN0KQogICAgIEFYTE9HKCZheE9iamVjdCk7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIAotICAgIEFYSUQgYXhJRCA9IGF4T2JqZWN0Lm9iamVjdElEKCk7CiAgICAg
YXV0byogYXhQYXJlbnQgPSBheE9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBB
WElEIHBhcmVudElEID0gYXhQYXJlbnQgPyBheFBhcmVudC0+b2JqZWN0SUQoKSA6IEFYSUQoKTsK
LQotICAgIGF1dG8gY2hhbmdlID0gbm9kZUNoYW5nZUZvck9iamVjdChheE9iamVjdCwgcGFyZW50
SUQsIHRydWUpOwotCi0gICAgLy8gUmVtb3ZlIHRoZSBvbGQgb2JqZWN0IGFuZCBzZXQgdGhlIG5l
dyBvbmUgdG8gYmUgdXBkYXRlZCBvbiB0aGUgQVggdGhyZWFkLgorICAgIC8vIElmIHdlIHVwZGF0
ZSBhIG5vZGUgYXMgdGhlIHJlc3VsdCBvZiBzb21lIHNpZGUgZWZmZWN0IHdoaWxlIGNvbGxlY3Rp
bmcgbm9kZSBjaGFuZ2VzIChlLmcuIGEgcm9sZSBjaGFuZ2UgZnJvbQorICAgIC8vIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnVwZGF0ZVJvbGVBZnRlckNoaWxkcmVuQ3JlYXRpb24pLCBxdWV1
ZSB0aGUgYXBwZW5kIHVwIHRvIGJlIHJlc29sdmVkIHdpdGggdGhlIHJlc3QKKyAgICAvLyBvZiB0
aGUgY29sbGVjdGVkIGNoYW5nZXMuIFRoaXMgcHJldmVudHMgdXMgZnJvbSBjcmVhdGluZyB0d28g
bm9kZSBjaGFuZ2VzIGZvciB0aGUgc2FtZSBvYmplY3QuCisgICAgaWYgKG1faXNDb2xsZWN0aW5n
Tm9kZUNoYW5nZXMpIHsKKyAgICAgICAgbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMuc2V0KGF4
T2JqZWN0Lm9iamVjdElEKCksIHN0ZDo6bWFrZV9wYWlyKFdURk1vdmUocGFyZW50SUQpLCBBdHRh
Y2hXcmFwcGVyOjpPbkFYVGhyZWFkKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8g
T3RoZXJ3aXNlLCByZXNvbHZlIHRoZSBjaGFuZ2UgaW1tZWRpYXRlbHkgYW5kIHF1ZXVlIGl0IHVw
LgorICAgIC8vIEluIGJvdGggY2FzZXMsIHdlIGNhbid0IGF0dGFjaCB0aGUgd3JhcHBlciBpbW1l
ZGlhdGVseSBvbiB0aGUgbWFpbiB0aHJlYWQsIHNpbmNlIHRoZSB3cmFwcGVyIGNvdWxkIGJlIGlu
IHVzZQorICAgIC8vIG9uIHRoZSBBWCB0aHJlYWQgKGJlY2F1c2UgdGhpcyBmdW5jdGlvbiB1cGRh
dGVzIGFuIGV4aXN0aW5nIG5vZGUpLgorICAgIGF1dG8gY2hhbmdlID0gbm9kZUNoYW5nZUZvck9i
amVjdChheE9iamVjdCwgcGFyZW50SUQsIEF0dGFjaFdyYXBwZXI6Ok9uQVhUaHJlYWQpOwogICAg
IExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKLSAgICBtX3BlbmRpbmdOb2RlUmVt
b3ZhbHMuYXBwZW5kKHsgYXhJRCwgQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVtZW50
Q2hhbmdlZCB9KTsKICAgICBxdWV1ZUNoYW5nZShjaGFuZ2UpOwogfQogCkBAIC00NjIsOCArNDg4
LDYgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0JiBh
eE9iamVjdCkKICAgICBjb25zdCBhdXRvJiBuZXdDaGlsZHJlbiA9IGF4QW5jZXN0b3ItPmNoaWxk
cmVuKCk7CiAgICAgYXV0byBuZXdDaGlsZHJlbklEcyA9IGF4QW5jZXN0b3ItPmNoaWxkcmVuSURz
KGZhbHNlKTsKIAotICAgIFZlY3RvcjxOb2RlQ2hhbmdlPiBjaGFuZ2VzOwotICAgIEhhc2hTZXQ8
QVhJRD4gaWRzQmVpbmdDaGFuZ2VkOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3Q2hp
bGRyZW4uc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUKG5ld0NoaWxkcmVuW2ldLT5vYmpl
Y3RJRCgpID09IG5ld0NoaWxkcmVuSURzW2ldKTsKICAgICAgICAgQVNTRVJUKG5ld0NoaWxkcmVu
SURzW2ldLmlzVmFsaWQoKSk7CkBAIC00NzQsNyArNDk4LDcgQEAgdm9pZCBBWElzb2xhdGVkVHJl
ZTo6dXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0JiBheE9iamVjdCkKICAgICAgICAgICAgIC8v
IFRoaXMgaXMgYSBuZXcgY2hpbGQsIGFkZCBpdCB0byB0aGUgdHJlZS4KICAgICAgICAgICAgIEFY
TE9HKG1ha2VTdHJpbmcoIkFYSUQgIiwgYXhBbmNlc3Rvci0+b2JqZWN0SUQoKS5sb2dnaW5nU3Ry
aW5nKCksICIgZ2FpbmluZyBuZXcgc3VidHJlZSwgc3RhcnRpbmcgYXQgSUQgIiwgbmV3Q2hpbGRy
ZW5baV0tPm9iamVjdElEKCkubG9nZ2luZ1N0cmluZygpLCAiOiIpKTsKICAgICAgICAgICAgIEFY
TE9HKG5ld0NoaWxkcmVuW2ldKTsKLSAgICAgICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1
YnRyZWUoKm5ld0NoaWxkcmVuW2ldLCBheEFuY2VzdG9yLT5vYmplY3RJRCgpLCB0cnVlLCBjaGFu
Z2VzLCAmaWRzQmVpbmdDaGFuZ2VkKTsKKyAgICAgICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0Zv
clN1YnRyZWUoKm5ld0NoaWxkcmVuW2ldLCBheEFuY2VzdG9yLT5vYmplY3RJRCgpKTsKICAgICAg
ICAgfQogICAgIH0KICAgICBtX25vZGVNYXAuc2V0KGF4QW5jZXN0b3ItPm9iamVjdElEKCksIFBh
cmVudENoaWxkcmVuSURzIHsgb2xkSURzLnBhcmVudElELCBXVEZNb3ZlKG5ld0NoaWxkcmVuSURz
KSB9KTsKQEAgLTQ4Nyw5ICs1MTEsOSBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGls
ZHJlbihBWENvcmVPYmplY3QmIGF4T2JqZWN0KQogICAgICAgICAvLyAgIDEuIE9iamVjdCAxMjMg
aXMgc2xhdGVkIHRvIGJlIGEgY2hpbGQgb2YgdGhpcyBvYmplY3QgKGkuZS4gaW4gbmV3Q2hpbGRy
ZW4pLCBhbmQgd2UgY29sbGVjdCBub2RlIGNoYW5nZXMgZm9yIGl0LgogICAgICAgICAvLyAgIDIu
IE9iamVjdCAxMjMgaXMgY3VycmVudGx5IGEgbWVtYmVyIG9mIGEgc3VidHJlZSBvZiBzb21lIG90
aGVyIG9iamVjdCBpbiBvbGRDaGlsZHJlbklEcy4KICAgICAgICAgLy8gICAzLiBUaHVzLCB3ZSBk
b24ndCB3YW50IHRvIGRlbGV0ZSBPYmplY3QgMTIzIGZyb20gdGhlIG5vZGVtYXAsIGluc3RlYWQg
YWxsb3dpbmcgaXQgdG8gYmUgbW92ZWQuCi0gICAgICAgIHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1h
cChheElELCBheEFuY2VzdG9yLCBpZHNCZWluZ0NoYW5nZWQpOworICAgICAgICByZW1vdmVTdWJ0
cmVlRnJvbU5vZGVNYXAoYXhJRCwgYXhBbmNlc3Rvcik7CiAgICAgfQotICAgIHF1ZXVlQ2hhbmdl
c0FuZFJlbW92YWxzKGNoYW5nZXMsIG9sZENoaWxkcmVuSURzKTsKKyAgICBxdWV1ZVJlbW92YWxz
QW5kVW5yZXNvbHZlZENoYW5nZXMob2xkQ2hpbGRyZW5JRHMpOwogCiAgICAgLy8gQWxzbyBxdWV1
ZSB1cGRhdGVzIGZvciBwcm9wZXJ0aWVzIHRoYXQgZGVyaXZlIGZyb20gY2hpbGRyZW4oKS4KICAg
ICB1cGRhdGVSZWxhdGVkUHJvcGVydGllcygqYXhBbmNlc3Rvcik7CkBAIC01NTQsMTEgKzU3OCwx
MiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVOb2RlKGNvbnN0IEFYQ29yZU9iamVjdCYg
YXhPYmplY3QpCiAgICAgQVhMT0cobWFrZVN0cmluZygib2JqZWN0SUQgIiwgYXhPYmplY3Qub2Jq
ZWN0SUQoKS5sb2dnaW5nU3RyaW5nKCkpKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
CisgICAgbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMucmVtb3ZlKGF4T2JqZWN0Lm9iamVjdElE
KCkpOwogICAgIHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChheE9iamVjdC5vYmplY3RJRCgpLCBh
eE9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSk7Ci0gICAgcXVldWVDaGFuZ2VzQW5kUmVt
b3ZhbHMoeyB9LCB7IGF4T2JqZWN0Lm9iamVjdElEKCkgfSk7CisgICAgcXVldWVSZW1vdmFscyh7
IGF4T2JqZWN0Lm9iamVjdElEKCkgfSk7CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92
ZVN1YnRyZWVGcm9tTm9kZU1hcChBWElEIG9iamVjdElELCBBWENvcmVPYmplY3QqIGF4UGFyZW50
LCBjb25zdCBIYXNoU2V0PEFYSUQ+JiBpZHNUb0tlZXApCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjpy
ZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAoQVhJRCBvYmplY3RJRCwgQVhDb3JlT2JqZWN0KiBheFBh
cmVudCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21O
b2RlTWFwIl9zKTsKICAgICBBWExPRyhtYWtlU3RyaW5nKCJSZW1vdmluZyBzdWJ0cmVlIGZvciBv
YmplY3RJRCAiLCBvYmplY3RJRC5sb2dnaW5nU3RyaW5nKCkpKTsKQEAgLTU3OCw3ICs2MDMsNyBA
QCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAoQVhJRCBvYmpl
Y3RJRCwgQVhDb3JlT2JqZWN0KiBheFBhcgogICAgIFZlY3RvcjxBWElEPiByZW1vdmFscyA9IHsg
b2JqZWN0SUQgfTsKICAgICB3aGlsZSAocmVtb3ZhbHMuc2l6ZSgpKSB7CiAgICAgICAgIEFYSUQg
YXhJRCA9IHJlbW92YWxzLnRha2VMYXN0KCk7Ci0gICAgICAgIGlmICghYXhJRC5pc1ZhbGlkKCkg
fHwgaWRzVG9LZWVwLmNvbnRhaW5zKGF4SUQpKQorICAgICAgICBpZiAoIWF4SUQuaXNWYWxpZCgp
IHx8IG1fdW5yZXNvbHZlZFBlbmRpbmdBcHBlbmRzLmNvbnRhaW5zKGF4SUQpKQogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBpdCA9IG1fbm9kZU1hcC5maW5kKGF4SUQpOwpA
QCAtNjE5LDE1ICs2NDQsNiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFu
Z2VzKCkKICAgICAgICAgbV9mb2N1c2VkTm9kZUlEID0gbV9wZW5kaW5nRm9jdXNlZE5vZGVJRDsK
ICAgICB9CiAKLSAgICB3aGlsZSAobV9wZW5kaW5nTm9kZVJlbW92YWxzLnNpemUoKSkgewotICAg
ICAgICBhdXRvIHJlbW92YWwgPSBtX3BlbmRpbmdOb2RlUmVtb3ZhbHMudGFrZUxhc3QoKTsKLSAg
ICAgICAgQVhMT0cobWFrZVN0cmluZygicmVtb3ZpbmcgYXhJRCAiLCByZW1vdmFsLmZpcnN0Lmxv
Z2dpbmdTdHJpbmcoKSkpOwotICAgICAgICBpZiAoYXV0byBvYmplY3QgPSBub2RlRm9ySUQocmVt
b3ZhbC5maXJzdCkpIHsKLSAgICAgICAgICAgIG9iamVjdC0+ZGV0YWNoKHJlbW92YWwuc2Vjb25k
KTsKLSAgICAgICAgICAgIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5yZW1vdmUocmVtb3ZhbC5maXJz
dCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICB3aGlsZSAobV9wZW5kaW5nU3VidHJlZVJlbW92
YWxzLnNpemUoKSkgewogICAgICAgICBhdXRvIGF4SUQgPSBtX3BlbmRpbmdTdWJ0cmVlUmVtb3Zh
bHMudGFrZUxhc3QoKTsKICAgICAgICAgQVhMT0cobWFrZVN0cmluZygicmVtb3Zpbmcgc3VidHJl
ZSBheElEICIsIGF4SUQubG9nZ2luZ1N0cmluZygpKSk7CkBAIC02NDgsMTMgKzY2NCwxMyBAQCB2
b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKCkKICAgICAgICAgaWYgKCF3
cmFwcGVyKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKGF1dG8gb2JqZWN0
ID0gbV9yZWFkZXJUaHJlYWROb2RlTWFwLmdldChheElEKSkgewotICAgICAgICAgICAgaWYgKG9i
amVjdCAhPSAmaXRlbS5pc29sYXRlZE9iamVjdC5nZXQoKQotICAgICAgICAgICAgICAgICYmIG9i
amVjdC0+d3JhcHBlcigpID09IHdyYXBwZXIuZ2V0KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gZXhp
c3RpbmdPYmplY3QgPSBtX3JlYWRlclRocmVhZE5vZGVNYXAuZ2V0KGF4SUQpKSB7CisgICAgICAg
ICAgICBpZiAoZXhpc3RpbmdPYmplY3QgIT0gJml0ZW0uaXNvbGF0ZWRPYmplY3QuZ2V0KCkKKyAg
ICAgICAgICAgICAgICAmJiBleGlzdGluZ09iamVjdC0+d3JhcHBlcigpID09IHdyYXBwZXIuZ2V0
KCkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgbmV3IElzb2xhdGVkT2JqZWN0IGlzIGEgcmVw
bGFjZW1lbnQgZm9yIGFuIGV4aXN0aW5nIG9iamVjdAogICAgICAgICAgICAgICAgIC8vIGFzIHRo
ZSByZXN1bHQgb2YgYW4gdXBkYXRlLiBUaHVzIGRldGFjaCB0aGUgd3JhcHBlciBmcm9tIHRoZQog
ICAgICAgICAgICAgICAgIC8vIGV4aXN0aW5nIG9iamVjdCBhbmQgYXR0YWNoIGl0IHRvIHRoZSBu
ZXcgb25lLgotICAgICAgICAgICAgICAgIG9iamVjdC0+ZGV0YWNoV3JhcHBlcihBY2Nlc3NpYmls
aXR5RGV0YWNobWVudFR5cGU6OkVsZW1lbnRDaGFuZ2VkKTsKKyAgICAgICAgICAgICAgICBleGlz
dGluZ09iamVjdC0+ZGV0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVs
ZW1lbnRDaGFuZ2VkKTsKICAgICAgICAgICAgICAgICBpdGVtLmlzb2xhdGVkT2JqZWN0LT5hdHRh
Y2hQbGF0Zm9ybVdyYXBwZXIod3JhcHBlci5nZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBtX3JlYWRlclRocmVhZE5vZGVNYXAucmVtb3ZlKGF4SUQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
LmgKaW5kZXggZmJiYTVlNzRiNmI1ZDhlMTBjMjgxZDFlZDU3MTU1YmY2MTdiOGU3Mi4uZGRjOTcz
ZjJhYzU2YjNlYzFhY2ZmYTBlZjE4NGUzMzE2ZDc1MzEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5o
CkBAIC0zNDksNyArMzQ5LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfTsKIAotICAgIHZvaWQg
Z2VuZXJhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYsIEFYQ29yZU9iamVjdCosIGJvb2wgYXR0YWNo
V3JhcHBlcik7CisgICAgdm9pZCBnZW5lcmF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhDb3Jl
T2JqZWN0Kik7CiAgICAgdm9pZCB1cGRhdGVOb2RlKEFYQ29yZU9iamVjdCYpOwogICAgIHZvaWQg
dXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0Jik7CiAgICAgdm9pZCB1cGRhdGVOb2RlUHJvcGVy
dHkoQVhDb3JlT2JqZWN0JiwgQVhQcm9wZXJ0eU5hbWUpOwpAQCAtMzYzLDcgKzM2Myw3IEBAIHB1
YmxpYzoKICAgICAvLyBSZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIGlzb2xhdGVkIG9iamVjdCBh
bmQgYWxsIGRlc2NlbmRhbnRzIGZyb20gdGhlIG1fbm9kZU1hcCBhbmQgcXVldWVzIHRoZWlyIHJl
bW92YWwgZnJvbSB0aGUgdHJlZS4KICAgICB2b2lkIHJlbW92ZU5vZGUoY29uc3QgQVhDb3JlT2Jq
ZWN0Jik7CiAgICAgLy8gUmVtb3ZlcyB0aGUgZ2l2ZW4gbm9kZSBhbmQgYWxsIGl0cyBkZXNjZW5k
YW50cyBmcm9tIG1fbm9kZU1hcC4KLSAgICB2b2lkIHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChB
WElEIGF4SUQsIEFYQ29yZU9iamVjdCosIGNvbnN0IEhhc2hTZXQ8QVhJRD4mID0geyB9KTsKKyAg
ICB2b2lkIHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChBWElEIGF4SUQsIEFYQ29yZU9iamVjdCop
OwogCiAgICAgLy8gQm90aCBzZXRSb290Tm9kZUlEIGFuZCBzZXRGb2N1c2VkTm9kZUlEIGFyZSBj
YWxsZWQgZHVyaW5nIHRoZSBnZW5lcmF0aW9uCiAgICAgLy8gb2YgdGhlIElzb2xhdGVkVHJlZS4K
QEAgLTM4OCwxMCArMzg4LDEzIEBAIHByaXZhdGU6CiAgICAgLy8gTWV0aG9kcyBpbiB0aGlzIGJs
b2NrIGFyZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIC8vIENvbXB1dGVzIHRoZSBw
YXJlbnQgSUQgb2YgdGhlIGdpdmVuIG9iamVjdCwgd2hpY2ggaXMgZ2VuZXJhbGx5IHRoZSAiYXNz
dW1lZCIgcGFyZW50IElEIChidXQgbm90IGFsd2F5cywgbGlrZSBpbiB0aGUgY2FzZSBvZiB0YWJs
ZXMpLgogICAgIEFYSUQgcGFyZW50SURGb3JPYmplY3QoQVhDb3JlT2JqZWN0JiwgQVhJRCBhc3N1
bWVkUGFyZW50SUQpOwotICAgIE5vZGVDaGFuZ2Ugbm9kZUNoYW5nZUZvck9iamVjdChBWENvcmVP
YmplY3QmLCBBWElEIHBhcmVudElELCBib29sIGF0dGFjaFdyYXBwZXIgPSB0cnVlKTsKLSAgICB2
b2lkIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJl
bnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyLCBWZWN0b3I8Tm9kZUNoYW5nZT4mLCBIYXNoU2V0PEFY
SUQ+KiA9IG51bGxwdHIpOworICAgIGVudW0gY2xhc3MgQXR0YWNoV3JhcHBlciA6IGJvb2wgeyBP
bk1haW5UaHJlYWQsIE9uQVhUaHJlYWQgfTsKKyAgICBOb2RlQ2hhbmdlIG5vZGVDaGFuZ2VGb3JP
YmplY3QoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCwgQXR0YWNoV3JhcHBlciA9IEF0dGFj
aFdyYXBwZXI6Ok9uTWFpblRocmVhZCk7CisgICAgdm9pZCBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JT
dWJ0cmVlKEFYQ29yZU9iamVjdCYsIEFYSUQgcGFyZW50SUQpOwogICAgIHZvaWQgcXVldWVDaGFu
Z2UoY29uc3QgTm9kZUNoYW5nZSYpIFdURl9SRVFVSVJFU19MT0NLKG1fY2hhbmdlTG9nTG9jayk7
Ci0gICAgdm9pZCBxdWV1ZUNoYW5nZXNBbmRSZW1vdmFscyhjb25zdCBWZWN0b3I8Tm9kZUNoYW5n
ZT4mLCBjb25zdCBWZWN0b3I8QVhJRD4mID0geyB9KTsKKyAgICB2b2lkIHF1ZXVlUmVtb3ZhbHMo
Y29uc3QgVmVjdG9yPEFYSUQ+Jik7CisgICAgdm9pZCBxdWV1ZVJlbW92YWxzTG9ja2VkKGNvbnN0
IFZlY3RvcjxBWElEPiYpIFdURl9SRVFVSVJFU19MT0NLKG1fY2hhbmdlTG9nTG9jayk7CisgICAg
dm9pZCBxdWV1ZVJlbW92YWxzQW5kVW5yZXNvbHZlZENoYW5nZXMoY29uc3QgVmVjdG9yPEFYSUQ+
Jik7CiAKICAgICBBWElzb2xhdGVkVHJlZUlEIG1fdHJlZUlEOwogICAgIEFYT2JqZWN0Q2FjaGUq
IG1fYXhPYmplY3RDYWNoZSB7IG51bGxwdHIgfTsKQEAgLTQwOCw2ICs0MTEsMTMgQEAgcHJpdmF0
ZToKICAgICAvLyBpdHMgT2JqZWN0SUQgdG8gaXRzIFBhcmVudENoaWxkcmVuSURzIHN0cnVjdC4K
ICAgICBIYXNoTWFwPEFYSUQsIFBhcmVudENoaWxkcmVuSURzPiBtX25vZGVNYXA7CiAKKyAgICAv
LyBPbmx5IGFjY2Vzc2VkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAvLyBUaGUga2V5IGlzIHRo
ZSBJRCBvZiB0aGUgb2JqZWN0IHRoYXQgd2lsbCBiZSByZXNvbHZlZCBpbnRvIGFuIG1fcGVuZGlu
Z0FwcGVuZHMgTm9kZUNoYW5nZS4KKyAgICAvLyBUaGUgdmFsdWUgcmVwcmVzZW50cyB0aGUgcGFy
ZW50IElEIG9mIHRoZSBvYmplY3QsIGFuZCB3aGV0aGVyIHRoZSB3cmFwcGVyIHNob3VsZCBiZSBh
dHRhY2hlZCBvbiB0aGUgbWFpbiB0aHJlYWQgb3IgdGhlIEFYIHRocmVhZC4KKyAgICBIYXNoTWFw
PEFYSUQsIHN0ZDo6cGFpcjxBWElELCBBdHRhY2hXcmFwcGVyPj4gbV91bnJlc29sdmVkUGVuZGlu
Z0FwcGVuZHM7CisgICAgLy8gT25seSBhY2Nlc3NlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAg
Ym9vbCBtX2lzQ29sbGVjdGluZ05vZGVDaGFuZ2VzIHsgZmFsc2UgfTsKKwogICAgIC8vIE9ubHkg
YWNjZXNzZWQgb24gQVggdGhyZWFkIHJlcXVlc3RpbmcgZGF0YS4KICAgICBIYXNoTWFwPEFYSUQs
IFJlZjxBWElzb2xhdGVkT2JqZWN0Pj4gbV9yZWFkZXJUaHJlYWROb2RlTWFwOwogCkBAIC00MTUs
OCArNDI1LDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gbV9yb290
Tm9kZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9nTG9jayk7CiAgICAgVmVjdG9yPE5v
ZGVDaGFuZ2U+IG1fcGVuZGluZ0FwcGVuZHMgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxv
Z0xvY2spOyAvLyBOb2RlcyB0byBiZSBhZGRlZCB0byB0aGUgdHJlZSBhbmQgcGxhdGZvcm0td3Jh
cHBlZC4KICAgICBWZWN0b3I8QVhQcm9wZXJ0eUNoYW5nZT4gbV9wZW5kaW5nUHJvcGVydHlDaGFu
Z2VzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKLSAgICAvLyBOb2RlcyB0
byBiZSByZW1vdmVkIGZyb20gdGhlIHRyZWUgKGFuZCB0aGUgQWNjZXNzaWJpbGl0eURldGFjaG1l
bnRUeXBlIHJlYXNvbiBmb3IgdGhlIHJlbW92YWwpLgotICAgIFZlY3RvcjxzdGQ6OnBhaXI8QVhJ
RCwgQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlPj4gbV9wZW5kaW5nTm9kZVJlbW92YWxzIFdU
Rl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKICAgICBWZWN0b3I8QVhJRD4gbV9w
ZW5kaW5nU3VidHJlZVJlbW92YWxzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2Nr
KTsgLy8gTm9kZXMgd2hvc2Ugc3VidHJlZXMgYXJlIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgdHJl
ZS4KICAgICBWZWN0b3I8c3RkOjpwYWlyPEFYSUQsIFZlY3RvcjxBWElEPj4+IG1fcGVuZGluZ0No
aWxkcmVuVXBkYXRlcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9nTG9jayk7CiAgICAg
QVhJRCBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VM
b2dMb2NrKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457754</attachid>
            <date>2022-04-16 13:55:36 -0700</date>
            <delta_ts>2022-04-17 08:07:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239398-20220416155535.patch</filename>
            <type>text/plain</type>
            <size>22029</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzczODExMjRmZTU4ZDJh
MTc0MDhmOTg5MmUzYjJkYzk5ZmFmMjMxYS4uYzE1NTg5OGJiY2IwOTY2OWEzNTA5Y2EzYjIwZDlk
NzljYTUzMTc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIyLTA0LTE2ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgTm9kZSBjaGFuZ2VzIGNy
ZWF0ZWQgYnkgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGUgYXJlIG92ZXJ3cml0dGVuIHdoZW4g
cGVyZm9ybWVkIGR1cmluZyBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3Vi
dHJlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5
Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
Y3VycmVudGx5IGRvIHRoZSB3cm9uZyB0aGluZyBpbiB0aGlzIHNjZW5hcmlvOgorCisgICAgICAg
ICAgMS4gQSBkeW5hbWljIHBhZ2UgY2hhbmdlIGNhdXNlcyBhbiBlbGVtZW50IHRvIGJlIGluY2x1
ZGVkIG9uIHRoZSBwYWdlLCBzbyB3ZQorICAgICAgICAgICAgIGNyZWF0ZSBhIG5vZGUgY2hhbmdl
IGZvciBpdCBhbmQgaXRzIHN1YnRyZWUgYnkgY2FsbGluZyBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JT
dWJ0cmVlLgorICAgICAgICAgICAgIFRoaXMgY2F1c2VzIGEgY2FsbCB0byBjaGlsZHJlbigpIG9u
IHRoZSBsaXZlIG9iamVjdC4KKworICAgICAgICAgIDIuIEluIHRoZSBwcm9jZXNzIG9mIChvciBh
ZnRlcikgdXBkYXRpbmcgdGhlIGNoaWxkcmVuIG9mIHRoZSBsaXZlIG9iamVjdCwgd2UgcGVyZm9y
bSBzb21lCisgICAgICAgICAgICAgb3BlcmF0aW9uIHRoYXQgdHJpZ2dlcnMgQVhJc29sYXRlZFRy
ZWU6OnVwZGF0ZU5vZGUgb24gc2FpZCBvYmplY3QuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnVwZGF0ZVJvbGVBZnRlckNoaWxkcmVuQ3JlYXRpb24KKyAgICAgICAgICAgICB3b3VsZCBiZSBh
biBleGFtcGxlIG9mIHRoaXMgaWYgaXQgd2VyZSBwcm9wZXJseSBjb2RlZCB0byB1cGRhdGUgdGhl
IGlzb2xhdGVkIHRyZWUgaWYKKyAgICAgICAgICAgICB0aGUgb2JqZWN0J3Mgcm9sZSBjaGFuZ2Vz
IChJJ2xsIGFkZHJlc3MgdGhhdCBpbiBhIHNlcGFyYXRlIHBhdGNoKS4gdXBkYXRlTm9kZSByZXN1
bHRzCisgICAgICAgICAgICAgaW4gYSBub2RlIGNoYW5nZSB3aXRoIHRoZSBjb3JyZWN0IHByb3Bl
cnRpZXMgYmVpbmcgYWRkZWQgdG8gbV9wZW5kaW5nQXBwZW5kcy4KKworICAgICAgICAgIDMuIGNv
bGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUgKHN0YXJ0ZWQgaW4gc3RlcCAxKSBmaW5pc2hlcywg
YW5kIHF1ZXVlcyBhIG5vZGUgY2hhbmdlCisgICAgICAgICAgICAgZm9yIHRoZSBzYW1lIG9iamVj
dCwgYnV0IHdpdGggdGhlIHdyb25nIHByb3BlcnRpZXMgKGJlY2F1c2UgaXQgd2FzIGNyZWF0ZWQg
YmVmb3JlIHN0ZXAgMikuCisgICAgICAgICAgICAgQmVjYXVzZSBpdCBjb21lcyBhZnRlciB0aGUg
bm9kZSBjaGFuZ2UgYWRkZWQgaW4gc3RlcCAyIHRvIG1fcGVuZGluZ0FwcGVuZHMsIGl0IHdpbnMs
CisgICAgICAgICAgICAgYW5kIHdlIGFkZCBhbiBvYmplY3Qgd2l0aCB0aGUgd3JvbmcgcHJvcGVy
dGllcyB0byB0aGUgdHJlZS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgd2l0aCBh
IG5ldyBBWElzb2xhdGVkVHJlZTo6bV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMgbWVtYmVyCisg
ICAgICAgIHZhcmlhYmxlLiBUaGlzIGlzIGEgSGFzaE1hcCB3aXRoIGFuIEFYSUQga2V5LCByZXBy
ZXNlbnRpbmcgdGhlIG9iamVjdCB0byBjcmVhdGUgYSBub2RlCisgICAgICAgIGNoYW5nZSBmb3Iu
IE5vdywgYm90aCBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlIGFuZCB1cGRhdGVOb2RlIHdp
bGwgYWRkIGFuIGVudHJ5CisgICAgICAgIHRvIHRoaXMgSGFzaE1hcCwgYWxsb3dpbmcgaXQgdG8g
YmUgcmVzb2x2ZWQgaXQgKGkuZS4gYnkgY3JlYXRpbmcgdGhlIG5vZGUgY2hhbmdlKSBhdCBhIGxh
dGVyIHRpbWUuCisKKyAgICAgICAgVGhpcyBpcyBib3RoIG1vcmUgY29ycmVjdCAoYXMgaXQgcHJl
dmVudHMgYW55IG9yZGVyaW5nIGJ1Z3MgZW50aXJlbHkpLCBhbmQgbW9yZQorICAgICAgICBlZmZp
Y2llbnQsIGJlY2F1c2Ugd2Ugbm93IG5ldmVyIGNyZWF0ZSBtdWx0aXBsZSBub2RlIGNoYW5nZXMg
Zm9yIHRoZSBzYW1lIG9iamVjdC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gbmVjZXNzaXRh
dGVkIG90aGVyIGNvZGUgY2xlYW51cCBpdGVtczoKKyAgICAgICAgICAtIG1fdW5yZXNvbHZlZFBl
bmRpbmdBcHBlbmRzIGFsbG93cyB1cyB0byByZW1vdmUgdGhlIGBpZHNCZWluZ0NoYW5nZWRgIHBh
cmFtZXRlcgorICAgICAgICAgICAgd2UgcGFzc2VkIHRvIHNldmVyYWwgZnVuY3Rpb25zIHNpbmNl
IHRoaXMgbWVtYmVyIHZhcmlhYmxlIGRvZXMgdGhlIHNhbWUgdGhpbmcuCisKKyAgICAgICAgICAt
IG1fcGVuZGluZ05vZGVSZW1vdmFscyBoYXMgYmVlbiBkZWxldGVkLiBUaGUgb25seSB0aGluZyBh
ZGRpbmcgdG8gdGhpcyB3YXMKKyAgICAgICAgICAgIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2Rl
LCBhbmQgaXQgZGlkIHNvIHVubmVjZXNzYXJpbHksIHNpbmNlIHdlIGFscmVhZHkgaGFuZGxlCisg
ICAgICAgICAgICB0aGUgY2FzZSB3aGVyZSB3ZSBhcmUgcmVwbGFjaW5nIGFuIGV4aXN0aW5nIG9i
amVjdCB3aGVuIHByb2Vzc2luZyBtX3BlbmRpbmdBcHBlbmRzLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWxzbyBmaXhlcyBhbiBpc3N1ZSBmb3VuZCBieSBBbmRyZXMgR29uemFsZXogaW4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTQwMi4KKyAgICAgICAgQVhJc29s
YXRlZFRyZWU6OnVwZGF0ZU5vZGUgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBhdHRhY2ggdGhlIHdy
YXBwZXIgdG8gdGhlIG5ldyBvYmplY3Qgb24gdGhlIG1haW4gdGhyZWFkCisgICAgICAgIHNpbmNl
IGl0IGNvdWxkIGJlIGluIHVzZSBvbiB0aGUgQVggdGhyZWFkLiBUbyBtYWtlIHRoaXMgbW9yZSBj
bGVhciwgdGhlIGBhdHRhY2hXcmFwcGVyYCBwYXJhbWV0ZXIgaGFzIGJlZW4KKyAgICAgICAgY2hh
bmdlZCBmcm9tIGEgYm9vbCB0byBhbiBlbnVtIGNhbGxlZCBBdHRhY2hXcmFwcGVyIHdpdGggdmFs
dWVzIGBPbk1haW5UaHJlYWRgIGFuZCBgT25BWFRocmVhZGAuCisKKyAgICAgICAgRml4ZXMgc2l4
IHRlc3RzIGluIGlzb2xhdGVkIHRyZWUgbW9kZToKKyAgICAgICAgICAtIGFjY2Vzc2liaWxpdHkv
YXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC5odG1sCisgICAgICAgICAgLSBhY2Nlc3Np
YmlsaXR5L2FyaWEtcm9sZS1vbi1sYWJlbC5odG1sCisgICAgICAgICAgLSBhY2Nlc3NpYmlsaXR5
L21hYy9sYWJlbC1lbGVtZW50LWFsbC10ZXh0LXN0cmluZy12YWx1ZS5odG1sCisgICAgICAgICAg
LSBhY2Nlc3NpYmlsaXR5L21hYy9sYWJlbC1lbGVtZW50LXdpdGgtaGlkZGVuLWNvbnRyb2wuaHRt
bAorICAgICAgICAgIC0gYWNjZXNzaWJpbGl0eS9tYWMvbGFiZWwtZWxlbWVudC1hbGwtdGV4dC1z
dHJpbmctdmFsdWUuaHRtbAorICAgICAgICAgIC0gYWNjZXNzaWJpbGl0eS9tYWMvc2xpZGVyLWFs
bG93cy10aXRsZS11aS1lbGVtZW50Lmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp0cmVlRGF0
YSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpub2RlQ2hhbmdlRm9yT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpxdWV1ZVJlbW92YWxzKToKKyAgICAgICAgQWRkZWQuIEFs
bG93cyB5b3UgdG8gcXVldWUgb2JqZWN0cyBmb3IgcmVtb3ZhbCBmcm9tIGNvbnRleHRzIHdoZXJl
IHlvdQorICAgICAgICBkb24ndCBhbHJlYWR5IGhvbGQgYSBsb2NrLgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZFRyZWU6OnF1ZXVlUmVtb3ZhbHNMb2NrZWQpOgorICAgICAgICBBZGRlZC4g
QWxsb3dzIHlvdSB0byBxdWV1ZSBvYmplY3RzIGZvciByZW1vdmFsIGZyb20gY29udGV4dHMgd2hl
cmUgeW91CisgICAgICAgIGFscmVhZHkgaG9sZCBhIGxvY2suCisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6cXVldWVSZW1vdmFsc0FuZFVucmVzb2x2ZWRDaGFuZ2VzKToKKyAgICAg
ICAgQWRkZWQuIFJlcGxhY2VzIEFYSXNvbGF0ZWRUcmVlOjpxdWV1ZUNoYW5nZXNBbmRSZW1vdmFs
cy4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNG
b3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cmVtb3ZlTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKToKKyAgICAg
ICAgQ2hhbmdlIGxvY2FsIHZhcmlhYmxlIG5hbWUgZnJvbSBvYmplY3QgdG8gZXhpc3RpbmdPYmpl
Y3QgYXMgdGhpcyBtYWtlcworICAgICAgICB0aGUgY29kZSBtdWNoIG1vcmUgY2xlYXIuCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpxdWV1ZUNoYW5nZXNBbmRSZW1vdmFscyk6IERl
bGV0ZWQuCisKIDIwMjItMDQtMTQgIEdhYnJpZWwgTmF2YSBNYXJpbm8gIDxnbmF2YW1hcmlub0Bh
cHBsZS5jb20+CiAKICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjppc0V2ZW50QWxsb3dl
ZEluTWFpblRocmVhZCBhc3NlcnQgZmFpbHVyZSB3aGVuIGFjdGl2YXRpbmcgQXVkaW9TZXNzaW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRl
eCBmYTFlOTQzYjUyMGU5ZjIxNTU0NzExZjA5NzcyODgxYjRjNWM4MmFiLi5iMDA3ZDUxNjBiOGEx
MzczNzg2MzQ4MDJjNDRkYjJkYjdkZWNjY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTM1NjQsNyArMzU2NCw3IEBAIEFYVHJlZURh
dGEgQVhPYmplY3RDYWNoZTo6dHJlZURhdGEoKQogCiAgICAgc3RyZWFtIDw8ICJcbkFYT2JqZWN0
VHJlZTpcbiI7CiAgICAgaWYgKGF1dG8qIHJvb3QgPSBnZXQoZG9jdW1lbnQoKS52aWV3KCkpKSB7
Ci0gICAgICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8QVhTdHJlYW1PcHRpb25zPiBvcHRpb25zID0g
eyBBWFN0cmVhbU9wdGlvbnM6Ok9iamVjdElELCBBWFN0cmVhbU9wdGlvbnM6OlBhcmVudElEIH07
CisgICAgICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8QVhTdHJlYW1PcHRpb25zPiBvcHRpb25zID0g
eyBBWFN0cmVhbU9wdGlvbnM6Ok9iamVjdElELCBBWFN0cmVhbU9wdGlvbnM6OlBhcmVudElELCBB
WFN0cmVhbU9wdGlvbnM6OlJvbGUgfTsKICAgICAgICAgc3RyZWFtU3VidHJlZShzdHJlYW0sIHJv
b3QsIG9wdGlvbnMpOwogICAgIH0gZWxzZQogICAgICAgICBzdHJlYW0gPDwgIk5vIHJvb3QhIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCBhNDQzNjA3NTBhNjY4MjlhNGVjMzg0OGE1Nzhj
N2VhOTc4MDY2N2ZkLi4zYjE1OGU4NWM2NmJkOWMxNmJiZmUxMTQwY2NmYTIxYWUwZGRhYTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgUmVmPEFYSXNvbGF0
ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2Fj
aGUpCiAgICAgLy8gRm9yIHRoaXMsIHdlIG5lZWQgdGhlIHJvb3QgYW5kIGZvY3VzZWQgb2JqZWN0
cyBvZiB0aGUgQVhPYmplY3QgdHJlZS4KICAgICBhdXRvKiBheFJvb3QgPSBheE9iamVjdENhY2hl
LT5nZXRPckNyZWF0ZShheE9iamVjdENhY2hlLT5kb2N1bWVudCgpLnZpZXcoKSk7CiAgICAgaWYg
KGF4Um9vdCkKLSAgICAgICAgdHJlZS0+Z2VuZXJhdGVTdWJ0cmVlKCpheFJvb3QsIG51bGxwdHIs
IHRydWUpOworICAgICAgICB0cmVlLT5nZW5lcmF0ZVN1YnRyZWUoKmF4Um9vdCwgbnVsbHB0cik7
CiAgICAgYXV0byogYXhGb2N1cyA9IGF4T2JqZWN0Q2FjaGUtPmZvY3VzZWRPYmplY3RGb3JQYWdl
KGF4T2JqZWN0Q2FjaGUtPmRvY3VtZW50KCkucGFnZSgpKTsKICAgICBpZiAoYXhGb2N1cykKICAg
ICAgICAgdHJlZS0+c2V0Rm9jdXNlZE5vZGVJRChheEZvY3VzLT5vYmplY3RJRCgpKTsKQEAgLTE2
OSw3ICsxNjksNyBAQCBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVl
OjpvYmplY3RzRm9ySURzKGNvbnN0IFZlY3RvcjxBWElEPiYgYQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShBWENvcmVPYmplY3Qm
IGF4T2JqZWN0LCBBWENvcmVPYmplY3QqIGF4UGFyZW50LCBib29sIGF0dGFjaFdyYXBwZXIpCit2
b2lkIEFYSXNvbGF0ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVj
dCwgQVhDb3JlT2JqZWN0KiBheFBhcmVudCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJl
ZTo6Z2VuZXJhdGVTdWJ0cmVlIl9zKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAt
MTc4LDkgKzE3OCw4IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShBWENv
cmVPYmplY3QmIGF4T2JqZWN0LCBBWENvcmVPYmplY3QqIGF4UGFyCiAgICAgICAgIHJldHVybjsK
IAogICAgIEFYSUQgcGFyZW50SUQgPSBheFBhcmVudCA/IGF4UGFyZW50LT5vYmplY3RJRCgpIDog
QVhJRCgpOwotICAgIFZlY3RvcjxOb2RlQ2hhbmdlPiBjaGFuZ2VzOwotICAgIGNvbGxlY3ROb2Rl
Q2hhbmdlc0ZvclN1YnRyZWUoYXhPYmplY3QsIHBhcmVudElELCBhdHRhY2hXcmFwcGVyLCBjaGFu
Z2VzKTsKLSAgICBxdWV1ZUNoYW5nZXNBbmRSZW1vdmFscyhjaGFuZ2VzKTsKKyAgICBjb2xsZWN0
Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKGF4T2JqZWN0LCBwYXJlbnRJRCk7CisgICAgcXVldWVSZW1v
dmFsc0FuZFVucmVzb2x2ZWRDaGFuZ2VzKHsgfSk7CiB9CiAKIEFYSUQgQVhJc29sYXRlZFRyZWU6
OnBhcmVudElERm9yT2JqZWN0KEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYSUQgYXNzdW1lZFBh
cmVudElEKQpAQCAtMjAzLDcgKzIwMiw3IEBAIEFYSUQgQVhJc29sYXRlZFRyZWU6OnBhcmVudElE
Rm9yT2JqZWN0KEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYSUQgYXNzdW1lZFBhcmVuCiAgICAg
cmV0dXJuIGFzc3VtZWRQYXJlbnRJRDsKIH0KIAotQVhJc29sYXRlZFRyZWU6Ok5vZGVDaGFuZ2Ug
QVhJc29sYXRlZFRyZWU6Om5vZGVDaGFuZ2VGb3JPYmplY3QoQVhDb3JlT2JqZWN0JiBheE9iamVj
dCwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyKQorQVhJc29sYXRlZFRyZWU6Ok5v
ZGVDaGFuZ2UgQVhJc29sYXRlZFRyZWU6Om5vZGVDaGFuZ2VGb3JPYmplY3QoQVhDb3JlT2JqZWN0
JiBheE9iamVjdCwgQVhJRCBwYXJlbnRJRCwgQXR0YWNoV3JhcHBlciBhdHRhY2hXcmFwcGVyKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTIxNyw3ICsyMTYsNyBAQCBBWElz
b2xhdGVkVHJlZTo6Tm9kZUNoYW5nZSBBWElzb2xhdGVkVHJlZTo6bm9kZUNoYW5nZUZvck9iamVj
dChBWENvcmVPYmplY3QmIGF4TwogICAgIH0KIAogICAgIEFTU0VSVChheE9iamVjdC53cmFwcGVy
KCkpOwotICAgIGlmIChhdHRhY2hXcmFwcGVyKQorICAgIGlmIChhdHRhY2hXcmFwcGVyID09IEF0
dGFjaFdyYXBwZXI6Ok9uTWFpblRocmVhZCkKICAgICAgICAgb2JqZWN0LT5hdHRhY2hQbGF0Zm9y
bVdyYXBwZXIoYXhPYmplY3Qud3JhcHBlcigpKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gU2V0
IHRoZSB3cmFwcGVyIGluIHRoZSBOb2RlQ2hhbmdlIHNvIHRoYXQgaXQgaXMgc2V0IG9uIHRoZSBB
WCB0aHJlYWQuCkBAIC0yNTUsMzIgKzI1NCw1NCBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpxdWV1
ZUNoYW5nZShjb25zdCBOb2RlQ2hhbmdlJiBub2RlQ2hhbmdlKQogICAgIG1fcGVuZGluZ0NoaWxk
cmVuVXBkYXRlcy5hcHBlbmQoeyBvYmplY3RJRCwgV1RGTW92ZShjaGlsZHJlbklEcykgfSk7CiB9
CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OnF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxzKGNvbnN0IFZl
Y3RvcjxOb2RlQ2hhbmdlPiYgY2hhbmdlcywgY29uc3QgVmVjdG9yPEFYSUQ+JiBzdWJ0cmVlUmVt
b3ZhbHMpCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjpxdWV1ZVJlbW92YWxzKGNvbnN0IFZlY3RvcjxB
WElEPiYgc3VidHJlZVJlbW92YWxzKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAK
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CisgICAgcXVldWVSZW1vdmFs
c0xvY2tlZChzdWJ0cmVlUmVtb3ZhbHMpOworfQorCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjpxdWV1
ZVJlbW92YWxzTG9ja2VkKGNvbnN0IFZlY3RvcjxBWElEPiYgc3VidHJlZVJlbW92YWxzKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY2hhbmdlTG9nTG9jay5p
c0xvY2tlZCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgYXhJRCA6IHN1YnRyZWVSZW1vdmFs
cykKICAgICAgICAgbV9wZW5kaW5nU3VidHJlZVJlbW92YWxzLmFwcGVuZChheElEKTsKK30KIAot
ICAgIGZvciAoY29uc3QgYXV0byYgY2hhbmdlIDogY2hhbmdlcykKLSAgICAgICAgcXVldWVDaGFu
Z2UoY2hhbmdlKTsKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OnF1ZXVlUmVtb3ZhbHNBbmRVbnJlc29s
dmVkQ2hhbmdlcyhjb25zdCBWZWN0b3I8QVhJRD4mIHN1YnRyZWVSZW1vdmFscykKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byogY2FjaGUgPSBheE9iamVjdENhY2hl
KCk7CisgICAgVmVjdG9yPE5vZGVDaGFuZ2U+IHJlc29sdmVkQXBwZW5kczsKKyAgICBpZiAoY2Fj
aGUgJiYgIW1fdW5yZXNvbHZlZFBlbmRpbmdBcHBlbmRzLmlzRW1wdHkoKSkgeworICAgICAgICBy
ZXNvbHZlZEFwcGVuZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3VucmVzb2x2ZWRQZW5kaW5n
QXBwZW5kcy5zaXplKCkpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHVucmVzb2x2ZWRDaGFu
Z2UgOiBtX3VucmVzb2x2ZWRQZW5kaW5nQXBwZW5kcykgeworICAgICAgICAgICAgaWYgKGF1dG8q
IGF4T2JqZWN0ID0gY2FjaGUtPm9iamVjdEZyb21BWElEKHVucmVzb2x2ZWRDaGFuZ2Uua2V5KSkK
KyAgICAgICAgICAgICAgICByZXNvbHZlZEFwcGVuZHMudW5jaGVja2VkQXBwZW5kKG5vZGVDaGFu
Z2VGb3JPYmplY3QoKmF4T2JqZWN0LCB1bnJlc29sdmVkQ2hhbmdlLnZhbHVlLmZpcnN0LCB1bnJl
c29sdmVkQ2hhbmdlLnZhbHVlLnNlY29uZCkpOworICAgICAgICB9CisgICAgICAgIG1fdW5yZXNv
bHZlZFBlbmRpbmdBcHBlbmRzLmNsZWFyKCk7CisgICAgfQorCisgICAgTG9ja2VyIGxvY2tlciB7
IG1fY2hhbmdlTG9nTG9jayB9OworICAgIGZvciAoY29uc3QgYXV0byYgcmVzb2x2ZWRBcHBlbmQg
OiByZXNvbHZlZEFwcGVuZHMpCisgICAgICAgIHF1ZXVlQ2hhbmdlKHJlc29sdmVkQXBwZW5kKTsK
KyAgICBxdWV1ZVJlbW92YWxzTG9ja2VkKHN1YnRyZWVSZW1vdmFscyk7CiB9CiAKLXZvaWQgQVhJ
c29sYXRlZFRyZWU6OmNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiBh
eE9iamVjdCwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyLCBWZWN0b3I8Tm9kZUNo
YW5nZT4mIGNoYW5nZXMsIEhhc2hTZXQ8QVhJRD4qIGlkc0JlaW5nQ2hhbmdlZCkKK3ZvaWQgQVhJ
c29sYXRlZFRyZWU6OmNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiBh
eE9iamVjdCwgQVhJRCBwYXJlbnRJRCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6
Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZSJfcyk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLQotICAgIGF1dG8gbm9kZUNoYW5nZSA9IG5vZGVDaGFuZ2VGb3JPYmplY3QoYXhPYmpl
Y3QsIHBhcmVudElELCBhdHRhY2hXcmFwcGVyKTsKLSAgICBpZiAoaWRzQmVpbmdDaGFuZ2VkKQot
ICAgICAgICBpZHNCZWluZ0NoYW5nZWQtPmFkZChub2RlQ2hhbmdlLmlzb2xhdGVkT2JqZWN0LT5v
YmplY3RJRCgpKTsKLSAgICBjaGFuZ2VzLmFwcGVuZChXVEZNb3ZlKG5vZGVDaGFuZ2UpKTsKKyAg
ICBTZXRGb3JTY29wZSBjb2xsZWN0aW5nTm9kZUNoYW5nZXMobV9pc0NvbGxlY3RpbmdOb2RlQ2hh
bmdlcywgdHJ1ZSk7CisgICAgbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMuc2V0KGF4T2JqZWN0
Lm9iamVjdElEKCksIHN0ZDo6bWFrZV9wYWlyKHBhcmVudElELCBBdHRhY2hXcmFwcGVyOjpPbk1h
aW5UaHJlYWQpKTsKIAogICAgIGF1dG8gYXhDaGlsZHJlbkNvcHkgPSBheE9iamVjdC5jaGlsZHJl
bigpOwogICAgIGF1dG8gYXhDaGlsZHJlbklEcyA9IGF4Q2hpbGRyZW5Db3B5Lm1hcChbJl0oYXV0
byYgYXhDaGlsZCkgewotICAgICAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpheENo
aWxkLCBheE9iamVjdC5vYmplY3RJRCgpLCBhdHRhY2hXcmFwcGVyLCBjaGFuZ2VzLCBpZHNCZWlu
Z0NoYW5nZWQpOworICAgICAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpheENoaWxk
LCBheE9iamVjdC5vYmplY3RJRCgpKTsKICAgICAgICAgcmV0dXJuIGF4Q2hpbGQtPm9iamVjdElE
KCk7CiAgICAgfSk7CiAgICAgbV9ub2RlTWFwLnNldChheE9iamVjdC5vYmplY3RJRCgpLCBQYXJl
bnRDaGlsZHJlbklEcyB7IHBhcmVudElELCBXVEZNb3ZlKGF4Q2hpbGRyZW5JRHMpIH0pOwpAQCAt
MjkyLDE1ICszMTMsMjAgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZShBWENvcmVP
YmplY3QmIGF4T2JqZWN0KQogICAgIEFYTE9HKCZheE9iamVjdCk7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIAotICAgIEFYSUQgYXhJRCA9IGF4T2JqZWN0Lm9iamVjdElEKCk7CiAgICAg
YXV0byogYXhQYXJlbnQgPSBheE9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBB
WElEIHBhcmVudElEID0gYXhQYXJlbnQgPyBheFBhcmVudC0+b2JqZWN0SUQoKSA6IEFYSUQoKTsK
LQotICAgIGF1dG8gY2hhbmdlID0gbm9kZUNoYW5nZUZvck9iamVjdChheE9iamVjdCwgcGFyZW50
SUQsIHRydWUpOwotCi0gICAgLy8gUmVtb3ZlIHRoZSBvbGQgb2JqZWN0IGFuZCBzZXQgdGhlIG5l
dyBvbmUgdG8gYmUgdXBkYXRlZCBvbiB0aGUgQVggdGhyZWFkLgorICAgIC8vIElmIHdlIHVwZGF0
ZSBhIG5vZGUgYXMgdGhlIHJlc3VsdCBvZiBzb21lIHNpZGUgZWZmZWN0IHdoaWxlIGNvbGxlY3Rp
bmcgbm9kZSBjaGFuZ2VzIChlLmcuIGEgcm9sZSBjaGFuZ2UgZnJvbQorICAgIC8vIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnVwZGF0ZVJvbGVBZnRlckNoaWxkcmVuQ3JlYXRpb24pLCBxdWV1
ZSB0aGUgYXBwZW5kIHVwIHRvIGJlIHJlc29sdmVkIHdpdGggdGhlIHJlc3QKKyAgICAvLyBvZiB0
aGUgY29sbGVjdGVkIGNoYW5nZXMuIFRoaXMgcHJldmVudHMgdXMgZnJvbSBjcmVhdGluZyB0d28g
bm9kZSBjaGFuZ2VzIGZvciB0aGUgc2FtZSBvYmplY3QuCisgICAgaWYgKG1faXNDb2xsZWN0aW5n
Tm9kZUNoYW5nZXMpIHsKKyAgICAgICAgbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMuc2V0KGF4
T2JqZWN0Lm9iamVjdElEKCksIHN0ZDo6bWFrZV9wYWlyKFdURk1vdmUocGFyZW50SUQpLCBBdHRh
Y2hXcmFwcGVyOjpPbkFYVGhyZWFkKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8g
T3RoZXJ3aXNlLCByZXNvbHZlIHRoZSBjaGFuZ2UgaW1tZWRpYXRlbHkgYW5kIHF1ZXVlIGl0IHVw
LgorICAgIC8vIEluIGJvdGggY2FzZXMsIHdlIGNhbid0IGF0dGFjaCB0aGUgd3JhcHBlciBpbW1l
ZGlhdGVseSBvbiB0aGUgbWFpbiB0aHJlYWQsIHNpbmNlIHRoZSB3cmFwcGVyIGNvdWxkIGJlIGlu
IHVzZQorICAgIC8vIG9uIHRoZSBBWCB0aHJlYWQgKGJlY2F1c2UgdGhpcyBmdW5jdGlvbiB1cGRh
dGVzIGFuIGV4aXN0aW5nIG5vZGUpLgorICAgIGF1dG8gY2hhbmdlID0gbm9kZUNoYW5nZUZvck9i
amVjdChheE9iamVjdCwgcGFyZW50SUQsIEF0dGFjaFdyYXBwZXI6Ok9uQVhUaHJlYWQpOwogICAg
IExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKLSAgICBtX3BlbmRpbmdOb2RlUmVt
b3ZhbHMuYXBwZW5kKHsgYXhJRCwgQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVtZW50
Q2hhbmdlZCB9KTsKICAgICBxdWV1ZUNoYW5nZShjaGFuZ2UpOwogfQogCkBAIC00NjIsOCArNDg4
LDYgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0JiBh
eE9iamVjdCkKICAgICBjb25zdCBhdXRvJiBuZXdDaGlsZHJlbiA9IGF4QW5jZXN0b3ItPmNoaWxk
cmVuKCk7CiAgICAgYXV0byBuZXdDaGlsZHJlbklEcyA9IGF4QW5jZXN0b3ItPmNoaWxkcmVuSURz
KGZhbHNlKTsKIAotICAgIFZlY3RvcjxOb2RlQ2hhbmdlPiBjaGFuZ2VzOwotICAgIEhhc2hTZXQ8
QVhJRD4gaWRzQmVpbmdDaGFuZ2VkOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3Q2hp
bGRyZW4uc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUKG5ld0NoaWxkcmVuW2ldLT5vYmpl
Y3RJRCgpID09IG5ld0NoaWxkcmVuSURzW2ldKTsKICAgICAgICAgQVNTRVJUKG5ld0NoaWxkcmVu
SURzW2ldLmlzVmFsaWQoKSk7CkBAIC00NzQsNyArNDk4LDcgQEAgdm9pZCBBWElzb2xhdGVkVHJl
ZTo6dXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0JiBheE9iamVjdCkKICAgICAgICAgICAgIC8v
IFRoaXMgaXMgYSBuZXcgY2hpbGQsIGFkZCBpdCB0byB0aGUgdHJlZS4KICAgICAgICAgICAgIEFY
TE9HKG1ha2VTdHJpbmcoIkFYSUQgIiwgYXhBbmNlc3Rvci0+b2JqZWN0SUQoKS5sb2dnaW5nU3Ry
aW5nKCksICIgZ2FpbmluZyBuZXcgc3VidHJlZSwgc3RhcnRpbmcgYXQgSUQgIiwgbmV3Q2hpbGRy
ZW5baV0tPm9iamVjdElEKCkubG9nZ2luZ1N0cmluZygpLCAiOiIpKTsKICAgICAgICAgICAgIEFY
TE9HKG5ld0NoaWxkcmVuW2ldKTsKLSAgICAgICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1
YnRyZWUoKm5ld0NoaWxkcmVuW2ldLCBheEFuY2VzdG9yLT5vYmplY3RJRCgpLCB0cnVlLCBjaGFu
Z2VzLCAmaWRzQmVpbmdDaGFuZ2VkKTsKKyAgICAgICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0Zv
clN1YnRyZWUoKm5ld0NoaWxkcmVuW2ldLCBheEFuY2VzdG9yLT5vYmplY3RJRCgpKTsKICAgICAg
ICAgfQogICAgIH0KICAgICBtX25vZGVNYXAuc2V0KGF4QW5jZXN0b3ItPm9iamVjdElEKCksIFBh
cmVudENoaWxkcmVuSURzIHsgb2xkSURzLnBhcmVudElELCBXVEZNb3ZlKG5ld0NoaWxkcmVuSURz
KSB9KTsKQEAgLTQ4Nyw5ICs1MTEsOSBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGls
ZHJlbihBWENvcmVPYmplY3QmIGF4T2JqZWN0KQogICAgICAgICAvLyAgIDEuIE9iamVjdCAxMjMg
aXMgc2xhdGVkIHRvIGJlIGEgY2hpbGQgb2YgdGhpcyBvYmplY3QgKGkuZS4gaW4gbmV3Q2hpbGRy
ZW4pLCBhbmQgd2UgY29sbGVjdCBub2RlIGNoYW5nZXMgZm9yIGl0LgogICAgICAgICAvLyAgIDIu
IE9iamVjdCAxMjMgaXMgY3VycmVudGx5IGEgbWVtYmVyIG9mIGEgc3VidHJlZSBvZiBzb21lIG90
aGVyIG9iamVjdCBpbiBvbGRDaGlsZHJlbklEcy4KICAgICAgICAgLy8gICAzLiBUaHVzLCB3ZSBk
b24ndCB3YW50IHRvIGRlbGV0ZSBPYmplY3QgMTIzIGZyb20gdGhlIG5vZGVtYXAsIGluc3RlYWQg
YWxsb3dpbmcgaXQgdG8gYmUgbW92ZWQuCi0gICAgICAgIHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1h
cChheElELCBheEFuY2VzdG9yLCBpZHNCZWluZ0NoYW5nZWQpOworICAgICAgICByZW1vdmVTdWJ0
cmVlRnJvbU5vZGVNYXAoYXhJRCwgYXhBbmNlc3Rvcik7CiAgICAgfQotICAgIHF1ZXVlQ2hhbmdl
c0FuZFJlbW92YWxzKGNoYW5nZXMsIG9sZENoaWxkcmVuSURzKTsKKyAgICBxdWV1ZVJlbW92YWxz
QW5kVW5yZXNvbHZlZENoYW5nZXMob2xkQ2hpbGRyZW5JRHMpOwogCiAgICAgLy8gQWxzbyBxdWV1
ZSB1cGRhdGVzIGZvciBwcm9wZXJ0aWVzIHRoYXQgZGVyaXZlIGZyb20gY2hpbGRyZW4oKS4KICAg
ICB1cGRhdGVSZWxhdGVkUHJvcGVydGllcygqYXhBbmNlc3Rvcik7CkBAIC01NTQsMTEgKzU3OCwx
MiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVOb2RlKGNvbnN0IEFYQ29yZU9iamVjdCYg
YXhPYmplY3QpCiAgICAgQVhMT0cobWFrZVN0cmluZygib2JqZWN0SUQgIiwgYXhPYmplY3Qub2Jq
ZWN0SUQoKS5sb2dnaW5nU3RyaW5nKCkpKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
CisgICAgbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMucmVtb3ZlKGF4T2JqZWN0Lm9iamVjdElE
KCkpOwogICAgIHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChheE9iamVjdC5vYmplY3RJRCgpLCBh
eE9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSk7Ci0gICAgcXVldWVDaGFuZ2VzQW5kUmVt
b3ZhbHMoeyB9LCB7IGF4T2JqZWN0Lm9iamVjdElEKCkgfSk7CisgICAgcXVldWVSZW1vdmFscyh7
IGF4T2JqZWN0Lm9iamVjdElEKCkgfSk7CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92
ZVN1YnRyZWVGcm9tTm9kZU1hcChBWElEIG9iamVjdElELCBBWENvcmVPYmplY3QqIGF4UGFyZW50
LCBjb25zdCBIYXNoU2V0PEFYSUQ+JiBpZHNUb0tlZXApCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjpy
ZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAoQVhJRCBvYmplY3RJRCwgQVhDb3JlT2JqZWN0KiBheFBh
cmVudCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21O
b2RlTWFwIl9zKTsKICAgICBBWExPRyhtYWtlU3RyaW5nKCJSZW1vdmluZyBzdWJ0cmVlIGZvciBv
YmplY3RJRCAiLCBvYmplY3RJRC5sb2dnaW5nU3RyaW5nKCkpKTsKQEAgLTU3OCw3ICs2MDMsNyBA
QCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAoQVhJRCBvYmpl
Y3RJRCwgQVhDb3JlT2JqZWN0KiBheFBhcgogICAgIFZlY3RvcjxBWElEPiByZW1vdmFscyA9IHsg
b2JqZWN0SUQgfTsKICAgICB3aGlsZSAocmVtb3ZhbHMuc2l6ZSgpKSB7CiAgICAgICAgIEFYSUQg
YXhJRCA9IHJlbW92YWxzLnRha2VMYXN0KCk7Ci0gICAgICAgIGlmICghYXhJRC5pc1ZhbGlkKCkg
fHwgaWRzVG9LZWVwLmNvbnRhaW5zKGF4SUQpKQorICAgICAgICBpZiAoIWF4SUQuaXNWYWxpZCgp
IHx8IG1fdW5yZXNvbHZlZFBlbmRpbmdBcHBlbmRzLmNvbnRhaW5zKGF4SUQpKQogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBpdCA9IG1fbm9kZU1hcC5maW5kKGF4SUQpOwpA
QCAtNjE5LDE1ICs2NDQsNiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFu
Z2VzKCkKICAgICAgICAgbV9mb2N1c2VkTm9kZUlEID0gbV9wZW5kaW5nRm9jdXNlZE5vZGVJRDsK
ICAgICB9CiAKLSAgICB3aGlsZSAobV9wZW5kaW5nTm9kZVJlbW92YWxzLnNpemUoKSkgewotICAg
ICAgICBhdXRvIHJlbW92YWwgPSBtX3BlbmRpbmdOb2RlUmVtb3ZhbHMudGFrZUxhc3QoKTsKLSAg
ICAgICAgQVhMT0cobWFrZVN0cmluZygicmVtb3ZpbmcgYXhJRCAiLCByZW1vdmFsLmZpcnN0Lmxv
Z2dpbmdTdHJpbmcoKSkpOwotICAgICAgICBpZiAoYXV0byBvYmplY3QgPSBub2RlRm9ySUQocmVt
b3ZhbC5maXJzdCkpIHsKLSAgICAgICAgICAgIG9iamVjdC0+ZGV0YWNoKHJlbW92YWwuc2Vjb25k
KTsKLSAgICAgICAgICAgIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5yZW1vdmUocmVtb3ZhbC5maXJz
dCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICB3aGlsZSAobV9wZW5kaW5nU3VidHJlZVJlbW92
YWxzLnNpemUoKSkgewogICAgICAgICBhdXRvIGF4SUQgPSBtX3BlbmRpbmdTdWJ0cmVlUmVtb3Zh
bHMudGFrZUxhc3QoKTsKICAgICAgICAgQVhMT0cobWFrZVN0cmluZygicmVtb3Zpbmcgc3VidHJl
ZSBheElEICIsIGF4SUQubG9nZ2luZ1N0cmluZygpKSk7CkBAIC02NDgsMTMgKzY2NCwxMyBAQCB2
b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKCkKICAgICAgICAgaWYgKCF3
cmFwcGVyKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKGF1dG8gb2JqZWN0
ID0gbV9yZWFkZXJUaHJlYWROb2RlTWFwLmdldChheElEKSkgewotICAgICAgICAgICAgaWYgKG9i
amVjdCAhPSAmaXRlbS5pc29sYXRlZE9iamVjdC5nZXQoKQotICAgICAgICAgICAgICAgICYmIG9i
amVjdC0+d3JhcHBlcigpID09IHdyYXBwZXIuZ2V0KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gZXhp
c3RpbmdPYmplY3QgPSBtX3JlYWRlclRocmVhZE5vZGVNYXAuZ2V0KGF4SUQpKSB7CisgICAgICAg
ICAgICBpZiAoZXhpc3RpbmdPYmplY3QgIT0gJml0ZW0uaXNvbGF0ZWRPYmplY3QuZ2V0KCkKKyAg
ICAgICAgICAgICAgICAmJiBleGlzdGluZ09iamVjdC0+d3JhcHBlcigpID09IHdyYXBwZXIuZ2V0
KCkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgbmV3IElzb2xhdGVkT2JqZWN0IGlzIGEgcmVw
bGFjZW1lbnQgZm9yIGFuIGV4aXN0aW5nIG9iamVjdAotICAgICAgICAgICAgICAgIC8vIGFzIHRo
ZSByZXN1bHQgb2YgYW4gdXBkYXRlLiBUaHVzIGRldGFjaCB0aGUgd3JhcHBlciBmcm9tIHRoZQot
ICAgICAgICAgICAgICAgIC8vIGV4aXN0aW5nIG9iamVjdCBhbmQgYXR0YWNoIGl0IHRvIHRoZSBu
ZXcgb25lLgotICAgICAgICAgICAgICAgIG9iamVjdC0+ZGV0YWNoV3JhcHBlcihBY2Nlc3NpYmls
aXR5RGV0YWNobWVudFR5cGU6OkVsZW1lbnRDaGFuZ2VkKTsKKyAgICAgICAgICAgICAgICAvLyBh
cyB0aGUgcmVzdWx0IG9mIGFuIHVwZGF0ZS4gVGh1cyBkZXRhY2ggdGhlIGV4aXN0aW5nIG9iamVj
dAorICAgICAgICAgICAgICAgIC8vIGFuZCBhdHRhY2ggdGhlIHdyYXBwZXIgdG8gdGhlIG5ldyBv
bmUuCisgICAgICAgICAgICAgICAgZXhpc3RpbmdPYmplY3QtPmRldGFjaChBY2Nlc3NpYmlsaXR5
RGV0YWNobWVudFR5cGU6OkVsZW1lbnRDaGFuZ2VkKTsKICAgICAgICAgICAgICAgICBpdGVtLmlz
b2xhdGVkT2JqZWN0LT5hdHRhY2hQbGF0Zm9ybVdyYXBwZXIod3JhcHBlci5nZXQoKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBtX3JlYWRlclRocmVhZE5vZGVNYXAucmVtb3ZlKGF4SUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXggZmJiYTVlNzRiNmI1ZDhlMTBjMjgxZDFlZDU3MTU1
YmY2MTdiOGU3Mi4uZGRjOTczZjJhYzU2YjNlYzFhY2ZmYTBlZjE4NGUzMzE2ZDc1MzEzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0zNDksNyArMzQ5LDcgQEAgcHVibGljOgogI2VuZGlmCiAg
ICAgfTsKIAotICAgIHZvaWQgZ2VuZXJhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYsIEFYQ29yZU9i
amVjdCosIGJvb2wgYXR0YWNoV3JhcHBlcik7CisgICAgdm9pZCBnZW5lcmF0ZVN1YnRyZWUoQVhD
b3JlT2JqZWN0JiwgQVhDb3JlT2JqZWN0Kik7CiAgICAgdm9pZCB1cGRhdGVOb2RlKEFYQ29yZU9i
amVjdCYpOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0Jik7CiAgICAgdm9p
ZCB1cGRhdGVOb2RlUHJvcGVydHkoQVhDb3JlT2JqZWN0JiwgQVhQcm9wZXJ0eU5hbWUpOwpAQCAt
MzYzLDcgKzM2Myw3IEBAIHB1YmxpYzoKICAgICAvLyBSZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5n
IGlzb2xhdGVkIG9iamVjdCBhbmQgYWxsIGRlc2NlbmRhbnRzIGZyb20gdGhlIG1fbm9kZU1hcCBh
bmQgcXVldWVzIHRoZWlyIHJlbW92YWwgZnJvbSB0aGUgdHJlZS4KICAgICB2b2lkIHJlbW92ZU5v
ZGUoY29uc3QgQVhDb3JlT2JqZWN0Jik7CiAgICAgLy8gUmVtb3ZlcyB0aGUgZ2l2ZW4gbm9kZSBh
bmQgYWxsIGl0cyBkZXNjZW5kYW50cyBmcm9tIG1fbm9kZU1hcC4KLSAgICB2b2lkIHJlbW92ZVN1
YnRyZWVGcm9tTm9kZU1hcChBWElEIGF4SUQsIEFYQ29yZU9iamVjdCosIGNvbnN0IEhhc2hTZXQ8
QVhJRD4mID0geyB9KTsKKyAgICB2b2lkIHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChBWElEIGF4
SUQsIEFYQ29yZU9iamVjdCopOwogCiAgICAgLy8gQm90aCBzZXRSb290Tm9kZUlEIGFuZCBzZXRG
b2N1c2VkTm9kZUlEIGFyZSBjYWxsZWQgZHVyaW5nIHRoZSBnZW5lcmF0aW9uCiAgICAgLy8gb2Yg
dGhlIElzb2xhdGVkVHJlZS4KQEAgLTM4OCwxMCArMzg4LDEzIEBAIHByaXZhdGU6CiAgICAgLy8g
TWV0aG9kcyBpbiB0aGlzIGJsb2NrIGFyZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAg
IC8vIENvbXB1dGVzIHRoZSBwYXJlbnQgSUQgb2YgdGhlIGdpdmVuIG9iamVjdCwgd2hpY2ggaXMg
Z2VuZXJhbGx5IHRoZSAiYXNzdW1lZCIgcGFyZW50IElEIChidXQgbm90IGFsd2F5cywgbGlrZSBp
biB0aGUgY2FzZSBvZiB0YWJsZXMpLgogICAgIEFYSUQgcGFyZW50SURGb3JPYmplY3QoQVhDb3Jl
T2JqZWN0JiwgQVhJRCBhc3N1bWVkUGFyZW50SUQpOwotICAgIE5vZGVDaGFuZ2Ugbm9kZUNoYW5n
ZUZvck9iamVjdChBWENvcmVPYmplY3QmLCBBWElEIHBhcmVudElELCBib29sIGF0dGFjaFdyYXBw
ZXIgPSB0cnVlKTsKLSAgICB2b2lkIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3Jl
T2JqZWN0JiwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyLCBWZWN0b3I8Tm9kZUNo
YW5nZT4mLCBIYXNoU2V0PEFYSUQ+KiA9IG51bGxwdHIpOworICAgIGVudW0gY2xhc3MgQXR0YWNo
V3JhcHBlciA6IGJvb2wgeyBPbk1haW5UaHJlYWQsIE9uQVhUaHJlYWQgfTsKKyAgICBOb2RlQ2hh
bmdlIG5vZGVDaGFuZ2VGb3JPYmplY3QoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCwgQXR0
YWNoV3JhcHBlciA9IEF0dGFjaFdyYXBwZXI6Ok9uTWFpblRocmVhZCk7CisgICAgdm9pZCBjb2xs
ZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKEFYQ29yZU9iamVjdCYsIEFYSUQgcGFyZW50SUQpOwog
ICAgIHZvaWQgcXVldWVDaGFuZ2UoY29uc3QgTm9kZUNoYW5nZSYpIFdURl9SRVFVSVJFU19MT0NL
KG1fY2hhbmdlTG9nTG9jayk7Ci0gICAgdm9pZCBxdWV1ZUNoYW5nZXNBbmRSZW1vdmFscyhjb25z
dCBWZWN0b3I8Tm9kZUNoYW5nZT4mLCBjb25zdCBWZWN0b3I8QVhJRD4mID0geyB9KTsKKyAgICB2
b2lkIHF1ZXVlUmVtb3ZhbHMoY29uc3QgVmVjdG9yPEFYSUQ+Jik7CisgICAgdm9pZCBxdWV1ZVJl
bW92YWxzTG9ja2VkKGNvbnN0IFZlY3RvcjxBWElEPiYpIFdURl9SRVFVSVJFU19MT0NLKG1fY2hh
bmdlTG9nTG9jayk7CisgICAgdm9pZCBxdWV1ZVJlbW92YWxzQW5kVW5yZXNvbHZlZENoYW5nZXMo
Y29uc3QgVmVjdG9yPEFYSUQ+Jik7CiAKICAgICBBWElzb2xhdGVkVHJlZUlEIG1fdHJlZUlEOwog
ICAgIEFYT2JqZWN0Q2FjaGUqIG1fYXhPYmplY3RDYWNoZSB7IG51bGxwdHIgfTsKQEAgLTQwOCw2
ICs0MTEsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBpdHMgT2JqZWN0SUQgdG8gaXRzIFBhcmVudENo
aWxkcmVuSURzIHN0cnVjdC4KICAgICBIYXNoTWFwPEFYSUQsIFBhcmVudENoaWxkcmVuSURzPiBt
X25vZGVNYXA7CiAKKyAgICAvLyBPbmx5IGFjY2Vzc2VkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAg
ICAvLyBUaGUga2V5IGlzIHRoZSBJRCBvZiB0aGUgb2JqZWN0IHRoYXQgd2lsbCBiZSByZXNvbHZl
ZCBpbnRvIGFuIG1fcGVuZGluZ0FwcGVuZHMgTm9kZUNoYW5nZS4KKyAgICAvLyBUaGUgdmFsdWUg
cmVwcmVzZW50cyB0aGUgcGFyZW50IElEIG9mIHRoZSBvYmplY3QsIGFuZCB3aGV0aGVyIHRoZSB3
cmFwcGVyIHNob3VsZCBiZSBhdHRhY2hlZCBvbiB0aGUgbWFpbiB0aHJlYWQgb3IgdGhlIEFYIHRo
cmVhZC4KKyAgICBIYXNoTWFwPEFYSUQsIHN0ZDo6cGFpcjxBWElELCBBdHRhY2hXcmFwcGVyPj4g
bV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHM7CisgICAgLy8gT25seSBhY2Nlc3NlZCBvbiB0aGUg
bWFpbiB0aHJlYWQuCisgICAgYm9vbCBtX2lzQ29sbGVjdGluZ05vZGVDaGFuZ2VzIHsgZmFsc2Ug
fTsKKwogICAgIC8vIE9ubHkgYWNjZXNzZWQgb24gQVggdGhyZWFkIHJlcXVlc3RpbmcgZGF0YS4K
ICAgICBIYXNoTWFwPEFYSUQsIFJlZjxBWElzb2xhdGVkT2JqZWN0Pj4gbV9yZWFkZXJUaHJlYWRO
b2RlTWFwOwogCkBAIC00MTUsOCArNDI1LDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QVhJc29s
YXRlZE9iamVjdD4gbV9yb290Tm9kZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9nTG9j
ayk7CiAgICAgVmVjdG9yPE5vZGVDaGFuZ2U+IG1fcGVuZGluZ0FwcGVuZHMgV1RGX0dVQVJERURf
QllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOyAvLyBOb2RlcyB0byBiZSBhZGRlZCB0byB0aGUgdHJl
ZSBhbmQgcGxhdGZvcm0td3JhcHBlZC4KICAgICBWZWN0b3I8QVhQcm9wZXJ0eUNoYW5nZT4gbV9w
ZW5kaW5nUHJvcGVydHlDaGFuZ2VzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2Nr
KTsKLSAgICAvLyBOb2RlcyB0byBiZSByZW1vdmVkIGZyb20gdGhlIHRyZWUgKGFuZCB0aGUgQWNj
ZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlIHJlYXNvbiBmb3IgdGhlIHJlbW92YWwpLgotICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8QVhJRCwgQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlPj4gbV9wZW5k
aW5nTm9kZVJlbW92YWxzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKICAg
ICBWZWN0b3I8QVhJRD4gbV9wZW5kaW5nU3VidHJlZVJlbW92YWxzIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9jaGFuZ2VMb2dMb2NrKTsgLy8gTm9kZXMgd2hvc2Ugc3VidHJlZXMgYXJlIHRvIGJlIHJl
bW92ZWQgZnJvbSB0aGUgdHJlZS4KICAgICBWZWN0b3I8c3RkOjpwYWlyPEFYSUQsIFZlY3RvcjxB
WElEPj4+IG1fcGVuZGluZ0NoaWxkcmVuVXBkYXRlcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hh
bmdlTG9nTG9jayk7CiAgICAgQVhJRCBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEIFdURl9HVUFSREVE
X0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457770</attachid>
            <date>2022-04-17 08:07:11 -0700</date>
            <delta_ts>2022-04-18 13:56:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239398-20220417100710.patch</filename>
            <type>text/plain</type>
            <size>22065</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzczODExMjRmZTU4ZDJh
MTc0MDhmOTg5MmUzYjJkYzk5ZmFmMjMxYS4uYzE1NTg5OGJiY2IwOTY2OWEzNTA5Y2EzYjIwZDlk
NzljYTUzMTc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIyLTA0LTE2ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgTm9kZSBjaGFuZ2VzIGNy
ZWF0ZWQgYnkgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGUgYXJlIG92ZXJ3cml0dGVuIHdoZW4g
cGVyZm9ybWVkIGR1cmluZyBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3Vi
dHJlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5
Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
Y3VycmVudGx5IGRvIHRoZSB3cm9uZyB0aGluZyBpbiB0aGlzIHNjZW5hcmlvOgorCisgICAgICAg
ICAgMS4gQSBkeW5hbWljIHBhZ2UgY2hhbmdlIGNhdXNlcyBhbiBlbGVtZW50IHRvIGJlIGluY2x1
ZGVkIG9uIHRoZSBwYWdlLCBzbyB3ZQorICAgICAgICAgICAgIGNyZWF0ZSBhIG5vZGUgY2hhbmdl
IGZvciBpdCBhbmQgaXRzIHN1YnRyZWUgYnkgY2FsbGluZyBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JT
dWJ0cmVlLgorICAgICAgICAgICAgIFRoaXMgY2F1c2VzIGEgY2FsbCB0byBjaGlsZHJlbigpIG9u
IHRoZSBsaXZlIG9iamVjdC4KKworICAgICAgICAgIDIuIEluIHRoZSBwcm9jZXNzIG9mIChvciBh
ZnRlcikgdXBkYXRpbmcgdGhlIGNoaWxkcmVuIG9mIHRoZSBsaXZlIG9iamVjdCwgd2UgcGVyZm9y
bSBzb21lCisgICAgICAgICAgICAgb3BlcmF0aW9uIHRoYXQgdHJpZ2dlcnMgQVhJc29sYXRlZFRy
ZWU6OnVwZGF0ZU5vZGUgb24gc2FpZCBvYmplY3QuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnVwZGF0ZVJvbGVBZnRlckNoaWxkcmVuQ3JlYXRpb24KKyAgICAgICAgICAgICB3b3VsZCBiZSBh
biBleGFtcGxlIG9mIHRoaXMgaWYgaXQgd2VyZSBwcm9wZXJseSBjb2RlZCB0byB1cGRhdGUgdGhl
IGlzb2xhdGVkIHRyZWUgaWYKKyAgICAgICAgICAgICB0aGUgb2JqZWN0J3Mgcm9sZSBjaGFuZ2Vz
IChJJ2xsIGFkZHJlc3MgdGhhdCBpbiBhIHNlcGFyYXRlIHBhdGNoKS4gdXBkYXRlTm9kZSByZXN1
bHRzCisgICAgICAgICAgICAgaW4gYSBub2RlIGNoYW5nZSB3aXRoIHRoZSBjb3JyZWN0IHByb3Bl
cnRpZXMgYmVpbmcgYWRkZWQgdG8gbV9wZW5kaW5nQXBwZW5kcy4KKworICAgICAgICAgIDMuIGNv
bGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUgKHN0YXJ0ZWQgaW4gc3RlcCAxKSBmaW5pc2hlcywg
YW5kIHF1ZXVlcyBhIG5vZGUgY2hhbmdlCisgICAgICAgICAgICAgZm9yIHRoZSBzYW1lIG9iamVj
dCwgYnV0IHdpdGggdGhlIHdyb25nIHByb3BlcnRpZXMgKGJlY2F1c2UgaXQgd2FzIGNyZWF0ZWQg
YmVmb3JlIHN0ZXAgMikuCisgICAgICAgICAgICAgQmVjYXVzZSBpdCBjb21lcyBhZnRlciB0aGUg
bm9kZSBjaGFuZ2UgYWRkZWQgaW4gc3RlcCAyIHRvIG1fcGVuZGluZ0FwcGVuZHMsIGl0IHdpbnMs
CisgICAgICAgICAgICAgYW5kIHdlIGFkZCBhbiBvYmplY3Qgd2l0aCB0aGUgd3JvbmcgcHJvcGVy
dGllcyB0byB0aGUgdHJlZS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgd2l0aCBh
IG5ldyBBWElzb2xhdGVkVHJlZTo6bV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMgbWVtYmVyCisg
ICAgICAgIHZhcmlhYmxlLiBUaGlzIGlzIGEgSGFzaE1hcCB3aXRoIGFuIEFYSUQga2V5LCByZXBy
ZXNlbnRpbmcgdGhlIG9iamVjdCB0byBjcmVhdGUgYSBub2RlCisgICAgICAgIGNoYW5nZSBmb3Iu
IE5vdywgYm90aCBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlIGFuZCB1cGRhdGVOb2RlIHdp
bGwgYWRkIGFuIGVudHJ5CisgICAgICAgIHRvIHRoaXMgSGFzaE1hcCwgYWxsb3dpbmcgaXQgdG8g
YmUgcmVzb2x2ZWQgaXQgKGkuZS4gYnkgY3JlYXRpbmcgdGhlIG5vZGUgY2hhbmdlKSBhdCBhIGxh
dGVyIHRpbWUuCisKKyAgICAgICAgVGhpcyBpcyBib3RoIG1vcmUgY29ycmVjdCAoYXMgaXQgcHJl
dmVudHMgYW55IG9yZGVyaW5nIGJ1Z3MgZW50aXJlbHkpLCBhbmQgbW9yZQorICAgICAgICBlZmZp
Y2llbnQsIGJlY2F1c2Ugd2Ugbm93IG5ldmVyIGNyZWF0ZSBtdWx0aXBsZSBub2RlIGNoYW5nZXMg
Zm9yIHRoZSBzYW1lIG9iamVjdC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gbmVjZXNzaXRh
dGVkIG90aGVyIGNvZGUgY2xlYW51cCBpdGVtczoKKyAgICAgICAgICAtIG1fdW5yZXNvbHZlZFBl
bmRpbmdBcHBlbmRzIGFsbG93cyB1cyB0byByZW1vdmUgdGhlIGBpZHNCZWluZ0NoYW5nZWRgIHBh
cmFtZXRlcgorICAgICAgICAgICAgd2UgcGFzc2VkIHRvIHNldmVyYWwgZnVuY3Rpb25zIHNpbmNl
IHRoaXMgbWVtYmVyIHZhcmlhYmxlIGRvZXMgdGhlIHNhbWUgdGhpbmcuCisKKyAgICAgICAgICAt
IG1fcGVuZGluZ05vZGVSZW1vdmFscyBoYXMgYmVlbiBkZWxldGVkLiBUaGUgb25seSB0aGluZyBh
ZGRpbmcgdG8gdGhpcyB3YXMKKyAgICAgICAgICAgIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2Rl
LCBhbmQgaXQgZGlkIHNvIHVubmVjZXNzYXJpbHksIHNpbmNlIHdlIGFscmVhZHkgaGFuZGxlCisg
ICAgICAgICAgICB0aGUgY2FzZSB3aGVyZSB3ZSBhcmUgcmVwbGFjaW5nIGFuIGV4aXN0aW5nIG9i
amVjdCB3aGVuIHByb2Vzc2luZyBtX3BlbmRpbmdBcHBlbmRzLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWxzbyBmaXhlcyBhbiBpc3N1ZSBmb3VuZCBieSBBbmRyZXMgR29uemFsZXogaW4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTQwMi4KKyAgICAgICAgQVhJc29s
YXRlZFRyZWU6OnVwZGF0ZU5vZGUgc2hvdWxkIG5vdCBpbW1lZGlhdGVseSBhdHRhY2ggdGhlIHdy
YXBwZXIgdG8gdGhlIG5ldyBvYmplY3Qgb24gdGhlIG1haW4gdGhyZWFkCisgICAgICAgIHNpbmNl
IGl0IGNvdWxkIGJlIGluIHVzZSBvbiB0aGUgQVggdGhyZWFkLiBUbyBtYWtlIHRoaXMgbW9yZSBj
bGVhciwgdGhlIGBhdHRhY2hXcmFwcGVyYCBwYXJhbWV0ZXIgaGFzIGJlZW4KKyAgICAgICAgY2hh
bmdlZCBmcm9tIGEgYm9vbCB0byBhbiBlbnVtIGNhbGxlZCBBdHRhY2hXcmFwcGVyIHdpdGggdmFs
dWVzIGBPbk1haW5UaHJlYWRgIGFuZCBgT25BWFRocmVhZGAuCisKKyAgICAgICAgRml4ZXMgc2l4
IHRlc3RzIGluIGlzb2xhdGVkIHRyZWUgbW9kZToKKyAgICAgICAgICAtIGFjY2Vzc2liaWxpdHkv
YXJpYS1sYWJlbGxlZGJ5LW92ZXJyaWRlcy1sYWJlbC5odG1sCisgICAgICAgICAgLSBhY2Nlc3Np
YmlsaXR5L2FyaWEtcm9sZS1vbi1sYWJlbC5odG1sCisgICAgICAgICAgLSBhY2Nlc3NpYmlsaXR5
L21hYy9sYWJlbC1lbGVtZW50LWFsbC10ZXh0LXN0cmluZy12YWx1ZS5odG1sCisgICAgICAgICAg
LSBhY2Nlc3NpYmlsaXR5L21hYy9sYWJlbC1lbGVtZW50LXdpdGgtaGlkZGVuLWNvbnRyb2wuaHRt
bAorICAgICAgICAgIC0gYWNjZXNzaWJpbGl0eS9tYWMvbGFiZWwtZWxlbWVudC1hbGwtdGV4dC1z
dHJpbmctdmFsdWUuaHRtbAorICAgICAgICAgIC0gYWNjZXNzaWJpbGl0eS9tYWMvc2xpZGVyLWFs
bG93cy10aXRsZS11aS1lbGVtZW50Lmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp0cmVlRGF0
YSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpub2RlQ2hhbmdlRm9yT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpxdWV1ZVJlbW92YWxzKToKKyAgICAgICAgQWRkZWQuIEFs
bG93cyB5b3UgdG8gcXVldWUgb2JqZWN0cyBmb3IgcmVtb3ZhbCBmcm9tIGNvbnRleHRzIHdoZXJl
IHlvdQorICAgICAgICBkb24ndCBhbHJlYWR5IGhvbGQgYSBsb2NrLgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZFRyZWU6OnF1ZXVlUmVtb3ZhbHNMb2NrZWQpOgorICAgICAgICBBZGRlZC4g
QWxsb3dzIHlvdSB0byBxdWV1ZSBvYmplY3RzIGZvciByZW1vdmFsIGZyb20gY29udGV4dHMgd2hl
cmUgeW91CisgICAgICAgIGFscmVhZHkgaG9sZCBhIGxvY2suCisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6cXVldWVSZW1vdmFsc0FuZFVucmVzb2x2ZWRDaGFuZ2VzKToKKyAgICAg
ICAgQWRkZWQuIFJlcGxhY2VzIEFYSXNvbGF0ZWRUcmVlOjpxdWV1ZUNoYW5nZXNBbmRSZW1vdmFs
cy4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNG
b3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cmVtb3ZlTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKToKKyAgICAg
ICAgQ2hhbmdlIGxvY2FsIHZhcmlhYmxlIG5hbWUgZnJvbSBvYmplY3QgdG8gZXhpc3RpbmdPYmpl
Y3QgYXMgdGhpcyBtYWtlcworICAgICAgICB0aGUgY29kZSBtdWNoIG1vcmUgY2xlYXIuCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpxdWV1ZUNoYW5nZXNBbmRSZW1vdmFscyk6IERl
bGV0ZWQuCisKIDIwMjItMDQtMTQgIEdhYnJpZWwgTmF2YSBNYXJpbm8gIDxnbmF2YW1hcmlub0Bh
cHBsZS5jb20+CiAKICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjppc0V2ZW50QWxsb3dl
ZEluTWFpblRocmVhZCBhc3NlcnQgZmFpbHVyZSB3aGVuIGFjdGl2YXRpbmcgQXVkaW9TZXNzaW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRl
eCBmYTFlOTQzYjUyMGU5ZjIxNTU0NzExZjA5NzcyODgxYjRjNWM4MmFiLi5iMDA3ZDUxNjBiOGEx
MzczNzg2MzQ4MDJjNDRkYjJkYjdkZWNjY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTM1NjQsNyArMzU2NCw3IEBAIEFYVHJlZURh
dGEgQVhPYmplY3RDYWNoZTo6dHJlZURhdGEoKQogCiAgICAgc3RyZWFtIDw8ICJcbkFYT2JqZWN0
VHJlZTpcbiI7CiAgICAgaWYgKGF1dG8qIHJvb3QgPSBnZXQoZG9jdW1lbnQoKS52aWV3KCkpKSB7
Ci0gICAgICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8QVhTdHJlYW1PcHRpb25zPiBvcHRpb25zID0g
eyBBWFN0cmVhbU9wdGlvbnM6Ok9iamVjdElELCBBWFN0cmVhbU9wdGlvbnM6OlBhcmVudElEIH07
CisgICAgICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8QVhTdHJlYW1PcHRpb25zPiBvcHRpb25zID0g
eyBBWFN0cmVhbU9wdGlvbnM6Ok9iamVjdElELCBBWFN0cmVhbU9wdGlvbnM6OlBhcmVudElELCBB
WFN0cmVhbU9wdGlvbnM6OlJvbGUgfTsKICAgICAgICAgc3RyZWFtU3VidHJlZShzdHJlYW0sIHJv
b3QsIG9wdGlvbnMpOwogICAgIH0gZWxzZQogICAgICAgICBzdHJlYW0gPDwgIk5vIHJvb3QhIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCBhNDQzNjA3NTBhNjY4MjlhNGVjMzg0OGE1Nzhj
N2VhOTc4MDY2N2ZkLi44ZmI0ZDBiY2FiMjBhM2MxZmM4MzljNjk4YWQ0NzZkNTcwZjg3ZmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgUmVmPEFYSXNvbGF0
ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2Fj
aGUpCiAgICAgLy8gRm9yIHRoaXMsIHdlIG5lZWQgdGhlIHJvb3QgYW5kIGZvY3VzZWQgb2JqZWN0
cyBvZiB0aGUgQVhPYmplY3QgdHJlZS4KICAgICBhdXRvKiBheFJvb3QgPSBheE9iamVjdENhY2hl
LT5nZXRPckNyZWF0ZShheE9iamVjdENhY2hlLT5kb2N1bWVudCgpLnZpZXcoKSk7CiAgICAgaWYg
KGF4Um9vdCkKLSAgICAgICAgdHJlZS0+Z2VuZXJhdGVTdWJ0cmVlKCpheFJvb3QsIG51bGxwdHIs
IHRydWUpOworICAgICAgICB0cmVlLT5nZW5lcmF0ZVN1YnRyZWUoKmF4Um9vdCwgbnVsbHB0cik7
CiAgICAgYXV0byogYXhGb2N1cyA9IGF4T2JqZWN0Q2FjaGUtPmZvY3VzZWRPYmplY3RGb3JQYWdl
KGF4T2JqZWN0Q2FjaGUtPmRvY3VtZW50KCkucGFnZSgpKTsKICAgICBpZiAoYXhGb2N1cykKICAg
ICAgICAgdHJlZS0+c2V0Rm9jdXNlZE5vZGVJRChheEZvY3VzLT5vYmplY3RJRCgpKTsKQEAgLTE2
OSw3ICsxNjksNyBAQCBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVl
OjpvYmplY3RzRm9ySURzKGNvbnN0IFZlY3RvcjxBWElEPiYgYQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShBWENvcmVPYmplY3Qm
IGF4T2JqZWN0LCBBWENvcmVPYmplY3QqIGF4UGFyZW50LCBib29sIGF0dGFjaFdyYXBwZXIpCit2
b2lkIEFYSXNvbGF0ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVj
dCwgQVhDb3JlT2JqZWN0KiBheFBhcmVudCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJl
ZTo6Z2VuZXJhdGVTdWJ0cmVlIl9zKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAt
MTc4LDkgKzE3OCw4IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShBWENv
cmVPYmplY3QmIGF4T2JqZWN0LCBBWENvcmVPYmplY3QqIGF4UGFyCiAgICAgICAgIHJldHVybjsK
IAogICAgIEFYSUQgcGFyZW50SUQgPSBheFBhcmVudCA/IGF4UGFyZW50LT5vYmplY3RJRCgpIDog
QVhJRCgpOwotICAgIFZlY3RvcjxOb2RlQ2hhbmdlPiBjaGFuZ2VzOwotICAgIGNvbGxlY3ROb2Rl
Q2hhbmdlc0ZvclN1YnRyZWUoYXhPYmplY3QsIHBhcmVudElELCBhdHRhY2hXcmFwcGVyLCBjaGFu
Z2VzKTsKLSAgICBxdWV1ZUNoYW5nZXNBbmRSZW1vdmFscyhjaGFuZ2VzKTsKKyAgICBjb2xsZWN0
Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKGF4T2JqZWN0LCBwYXJlbnRJRCk7CisgICAgcXVldWVSZW1v
dmFsc0FuZFVucmVzb2x2ZWRDaGFuZ2VzKHsgfSk7CiB9CiAKIEFYSUQgQVhJc29sYXRlZFRyZWU6
OnBhcmVudElERm9yT2JqZWN0KEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYSUQgYXNzdW1lZFBh
cmVudElEKQpAQCAtMjAzLDcgKzIwMiw3IEBAIEFYSUQgQVhJc29sYXRlZFRyZWU6OnBhcmVudElE
Rm9yT2JqZWN0KEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYSUQgYXNzdW1lZFBhcmVuCiAgICAg
cmV0dXJuIGFzc3VtZWRQYXJlbnRJRDsKIH0KIAotQVhJc29sYXRlZFRyZWU6Ok5vZGVDaGFuZ2Ug
QVhJc29sYXRlZFRyZWU6Om5vZGVDaGFuZ2VGb3JPYmplY3QoQVhDb3JlT2JqZWN0JiBheE9iamVj
dCwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyKQorQVhJc29sYXRlZFRyZWU6Ok5v
ZGVDaGFuZ2UgQVhJc29sYXRlZFRyZWU6Om5vZGVDaGFuZ2VGb3JPYmplY3QoQVhDb3JlT2JqZWN0
JiBheE9iamVjdCwgQVhJRCBwYXJlbnRJRCwgQXR0YWNoV3JhcHBlciBhdHRhY2hXcmFwcGVyKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTIxNyw3ICsyMTYsNyBAQCBBWElz
b2xhdGVkVHJlZTo6Tm9kZUNoYW5nZSBBWElzb2xhdGVkVHJlZTo6bm9kZUNoYW5nZUZvck9iamVj
dChBWENvcmVPYmplY3QmIGF4TwogICAgIH0KIAogICAgIEFTU0VSVChheE9iamVjdC53cmFwcGVy
KCkpOwotICAgIGlmIChhdHRhY2hXcmFwcGVyKQorICAgIGlmIChhdHRhY2hXcmFwcGVyID09IEF0
dGFjaFdyYXBwZXI6Ok9uTWFpblRocmVhZCkKICAgICAgICAgb2JqZWN0LT5hdHRhY2hQbGF0Zm9y
bVdyYXBwZXIoYXhPYmplY3Qud3JhcHBlcigpKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gU2V0
IHRoZSB3cmFwcGVyIGluIHRoZSBOb2RlQ2hhbmdlIHNvIHRoYXQgaXQgaXMgc2V0IG9uIHRoZSBB
WCB0aHJlYWQuCkBAIC0yNTUsMzIgKzI1NCw1NSBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpxdWV1
ZUNoYW5nZShjb25zdCBOb2RlQ2hhbmdlJiBub2RlQ2hhbmdlKQogICAgIG1fcGVuZGluZ0NoaWxk
cmVuVXBkYXRlcy5hcHBlbmQoeyBvYmplY3RJRCwgV1RGTW92ZShjaGlsZHJlbklEcykgfSk7CiB9
CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OnF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxzKGNvbnN0IFZl
Y3RvcjxOb2RlQ2hhbmdlPiYgY2hhbmdlcywgY29uc3QgVmVjdG9yPEFYSUQ+JiBzdWJ0cmVlUmVt
b3ZhbHMpCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjpxdWV1ZVJlbW92YWxzKGNvbnN0IFZlY3RvcjxB
WElEPiYgc3VidHJlZVJlbW92YWxzKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAK
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CisgICAgcXVldWVSZW1vdmFs
c0xvY2tlZChzdWJ0cmVlUmVtb3ZhbHMpOworfQorCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjpxdWV1
ZVJlbW92YWxzTG9ja2VkKGNvbnN0IFZlY3RvcjxBWElEPiYgc3VidHJlZVJlbW92YWxzKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY2hhbmdlTG9nTG9jay5p
c0xvY2tlZCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgYXhJRCA6IHN1YnRyZWVSZW1vdmFs
cykKICAgICAgICAgbV9wZW5kaW5nU3VidHJlZVJlbW92YWxzLmFwcGVuZChheElEKTsKK30KKwor
dm9pZCBBWElzb2xhdGVkVHJlZTo6cXVldWVSZW1vdmFsc0FuZFVucmVzb2x2ZWRDaGFuZ2VzKGNv
bnN0IFZlY3RvcjxBWElEPiYgc3VidHJlZVJlbW92YWxzKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKKyAgICBWZWN0b3I8Tm9kZUNoYW5nZT4gcmVzb2x2ZWRBcHBlbmRzOworICAg
IGlmICghbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGlm
IChhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKSkgeworICAgICAgICAgICAgcmVzb2x2ZWRB
cHBlbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMu
c2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgdW5yZXNvbHZlZEFwcGVuZCA6
IG1fdW5yZXNvbHZlZFBlbmRpbmdBcHBlbmRzKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8q
IGF4T2JqZWN0ID0gY2FjaGUtPm9iamVjdEZyb21BWElEKHVucmVzb2x2ZWRBcHBlbmQua2V5KSkK
KyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcHBlbmRzLnVuY2hlY2tlZEFwcGVuZChub2Rl
Q2hhbmdlRm9yT2JqZWN0KCpheE9iamVjdCwgdW5yZXNvbHZlZEFwcGVuZC52YWx1ZS5maXJzdCwg
dW5yZXNvbHZlZEFwcGVuZC52YWx1ZS5zZWNvbmQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIG1fdW5yZXNvbHZlZFBlbmRpbmdBcHBlbmRzLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9
CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGNoYW5nZSA6IGNoYW5nZXMpCi0gICAgICAgIHF1ZXVl
Q2hhbmdlKGNoYW5nZSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9Owor
ICAgIGZvciAoY29uc3QgYXV0byYgcmVzb2x2ZWRBcHBlbmQgOiByZXNvbHZlZEFwcGVuZHMpCisg
ICAgICAgIHF1ZXVlQ2hhbmdlKHJlc29sdmVkQXBwZW5kKTsKKyAgICBxdWV1ZVJlbW92YWxzTG9j
a2VkKHN1YnRyZWVSZW1vdmFscyk7CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OmNvbGxlY3RO
b2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhJRCBwYXJlbnRJ
RCwgYm9vbCBhdHRhY2hXcmFwcGVyLCBWZWN0b3I8Tm9kZUNoYW5nZT4mIGNoYW5nZXMsIEhhc2hT
ZXQ8QVhJRD4qIGlkc0JlaW5nQ2hhbmdlZCkKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OmNvbGxlY3RO
b2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhJRCBwYXJlbnRJ
RCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9y
U3VidHJlZSJfcyk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIGF1dG8gbm9k
ZUNoYW5nZSA9IG5vZGVDaGFuZ2VGb3JPYmplY3QoYXhPYmplY3QsIHBhcmVudElELCBhdHRhY2hX
cmFwcGVyKTsKLSAgICBpZiAoaWRzQmVpbmdDaGFuZ2VkKQotICAgICAgICBpZHNCZWluZ0NoYW5n
ZWQtPmFkZChub2RlQ2hhbmdlLmlzb2xhdGVkT2JqZWN0LT5vYmplY3RJRCgpKTsKLSAgICBjaGFu
Z2VzLmFwcGVuZChXVEZNb3ZlKG5vZGVDaGFuZ2UpKTsKKyAgICBTZXRGb3JTY29wZSBjb2xsZWN0
aW5nTm9kZUNoYW5nZXMobV9pc0NvbGxlY3RpbmdOb2RlQ2hhbmdlcywgdHJ1ZSk7CisgICAgbV91
bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMuc2V0KGF4T2JqZWN0Lm9iamVjdElEKCksIHN0ZDo6bWFr
ZV9wYWlyKHBhcmVudElELCBBdHRhY2hXcmFwcGVyOjpPbk1haW5UaHJlYWQpKTsKIAogICAgIGF1
dG8gYXhDaGlsZHJlbkNvcHkgPSBheE9iamVjdC5jaGlsZHJlbigpOwogICAgIGF1dG8gYXhDaGls
ZHJlbklEcyA9IGF4Q2hpbGRyZW5Db3B5Lm1hcChbJl0oYXV0byYgYXhDaGlsZCkgewotICAgICAg
ICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpheENoaWxkLCBheE9iamVjdC5vYmplY3RJ
RCgpLCBhdHRhY2hXcmFwcGVyLCBjaGFuZ2VzLCBpZHNCZWluZ0NoYW5nZWQpOworICAgICAgICBj
b2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpheENoaWxkLCBheE9iamVjdC5vYmplY3RJRCgp
KTsKICAgICAgICAgcmV0dXJuIGF4Q2hpbGQtPm9iamVjdElEKCk7CiAgICAgfSk7CiAgICAgbV9u
b2RlTWFwLnNldChheE9iamVjdC5vYmplY3RJRCgpLCBQYXJlbnRDaGlsZHJlbklEcyB7IHBhcmVu
dElELCBXVEZNb3ZlKGF4Q2hpbGRyZW5JRHMpIH0pOwpAQCAtMjkyLDE1ICszMTQsMjAgQEAgdm9p
ZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZShBWENvcmVPYmplY3QmIGF4T2JqZWN0KQogICAg
IEFYTE9HKCZheE9iamVjdCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIEFY
SUQgYXhJRCA9IGF4T2JqZWN0Lm9iamVjdElEKCk7CiAgICAgYXV0byogYXhQYXJlbnQgPSBheE9i
amVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBBWElEIHBhcmVudElEID0gYXhQYXJl
bnQgPyBheFBhcmVudC0+b2JqZWN0SUQoKSA6IEFYSUQoKTsKLQotICAgIGF1dG8gY2hhbmdlID0g
bm9kZUNoYW5nZUZvck9iamVjdChheE9iamVjdCwgcGFyZW50SUQsIHRydWUpOwotCi0gICAgLy8g
UmVtb3ZlIHRoZSBvbGQgb2JqZWN0IGFuZCBzZXQgdGhlIG5ldyBvbmUgdG8gYmUgdXBkYXRlZCBv
biB0aGUgQVggdGhyZWFkLgorICAgIC8vIElmIHdlIHVwZGF0ZSBhIG5vZGUgYXMgdGhlIHJlc3Vs
dCBvZiBzb21lIHNpZGUgZWZmZWN0IHdoaWxlIGNvbGxlY3Rpbmcgbm9kZSBjaGFuZ2VzIChlLmcu
IGEgcm9sZSBjaGFuZ2UgZnJvbQorICAgIC8vIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnVw
ZGF0ZVJvbGVBZnRlckNoaWxkcmVuQ3JlYXRpb24pLCBxdWV1ZSB0aGUgYXBwZW5kIHVwIHRvIGJl
IHJlc29sdmVkIHdpdGggdGhlIHJlc3QKKyAgICAvLyBvZiB0aGUgY29sbGVjdGVkIGNoYW5nZXMu
IFRoaXMgcHJldmVudHMgdXMgZnJvbSBjcmVhdGluZyB0d28gbm9kZSBjaGFuZ2VzIGZvciB0aGUg
c2FtZSBvYmplY3QuCisgICAgaWYgKG1faXNDb2xsZWN0aW5nTm9kZUNoYW5nZXMpIHsKKyAgICAg
ICAgbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMuc2V0KGF4T2JqZWN0Lm9iamVjdElEKCksIHN0
ZDo6bWFrZV9wYWlyKFdURk1vdmUocGFyZW50SUQpLCBBdHRhY2hXcmFwcGVyOjpPbkFYVGhyZWFk
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gT3RoZXJ3aXNlLCByZXNvbHZlIHRo
ZSBjaGFuZ2UgaW1tZWRpYXRlbHkgYW5kIHF1ZXVlIGl0IHVwLgorICAgIC8vIEluIGJvdGggY2Fz
ZXMsIHdlIGNhbid0IGF0dGFjaCB0aGUgd3JhcHBlciBpbW1lZGlhdGVseSBvbiB0aGUgbWFpbiB0
aHJlYWQsIHNpbmNlIHRoZSB3cmFwcGVyIGNvdWxkIGJlIGluIHVzZQorICAgIC8vIG9uIHRoZSBB
WCB0aHJlYWQgKGJlY2F1c2UgdGhpcyBmdW5jdGlvbiB1cGRhdGVzIGFuIGV4aXN0aW5nIG5vZGUp
LgorICAgIGF1dG8gY2hhbmdlID0gbm9kZUNoYW5nZUZvck9iamVjdChheE9iamVjdCwgcGFyZW50
SUQsIEF0dGFjaFdyYXBwZXI6Ok9uQVhUaHJlYWQpOwogICAgIExvY2tlciBsb2NrZXIgeyBtX2No
YW5nZUxvZ0xvY2sgfTsKLSAgICBtX3BlbmRpbmdOb2RlUmVtb3ZhbHMuYXBwZW5kKHsgYXhJRCwg
QWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVtZW50Q2hhbmdlZCB9KTsKICAgICBxdWV1
ZUNoYW5nZShjaGFuZ2UpOwogfQogCkBAIC00NjIsOCArNDg5LDYgQEAgdm9pZCBBWElzb2xhdGVk
VHJlZTo6dXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0JiBheE9iamVjdCkKICAgICBjb25zdCBh
dXRvJiBuZXdDaGlsZHJlbiA9IGF4QW5jZXN0b3ItPmNoaWxkcmVuKCk7CiAgICAgYXV0byBuZXdD
aGlsZHJlbklEcyA9IGF4QW5jZXN0b3ItPmNoaWxkcmVuSURzKGZhbHNlKTsKIAotICAgIFZlY3Rv
cjxOb2RlQ2hhbmdlPiBjaGFuZ2VzOwotICAgIEhhc2hTZXQ8QVhJRD4gaWRzQmVpbmdDaGFuZ2Vk
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgQVNTRVJUKG5ld0NoaWxkcmVuW2ldLT5vYmplY3RJRCgpID09IG5ld0NoaWxkcmVu
SURzW2ldKTsKICAgICAgICAgQVNTRVJUKG5ld0NoaWxkcmVuSURzW2ldLmlzVmFsaWQoKSk7CkBA
IC00NzQsNyArNDk5LDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlQ2hpbGRyZW4oQVhD
b3JlT2JqZWN0JiBheE9iamVjdCkKICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgY2hpbGQs
IGFkZCBpdCB0byB0aGUgdHJlZS4KICAgICAgICAgICAgIEFYTE9HKG1ha2VTdHJpbmcoIkFYSUQg
IiwgYXhBbmNlc3Rvci0+b2JqZWN0SUQoKS5sb2dnaW5nU3RyaW5nKCksICIgZ2FpbmluZyBuZXcg
c3VidHJlZSwgc3RhcnRpbmcgYXQgSUQgIiwgbmV3Q2hpbGRyZW5baV0tPm9iamVjdElEKCkubG9n
Z2luZ1N0cmluZygpLCAiOiIpKTsKICAgICAgICAgICAgIEFYTE9HKG5ld0NoaWxkcmVuW2ldKTsK
LSAgICAgICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoKm5ld0NoaWxkcmVuW2ld
LCBheEFuY2VzdG9yLT5vYmplY3RJRCgpLCB0cnVlLCBjaGFuZ2VzLCAmaWRzQmVpbmdDaGFuZ2Vk
KTsKKyAgICAgICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoKm5ld0NoaWxkcmVu
W2ldLCBheEFuY2VzdG9yLT5vYmplY3RJRCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBtX25v
ZGVNYXAuc2V0KGF4QW5jZXN0b3ItPm9iamVjdElEKCksIFBhcmVudENoaWxkcmVuSURzIHsgb2xk
SURzLnBhcmVudElELCBXVEZNb3ZlKG5ld0NoaWxkcmVuSURzKSB9KTsKQEAgLTQ4Nyw5ICs1MTIs
OSBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbihBWENvcmVPYmplY3QmIGF4
T2JqZWN0KQogICAgICAgICAvLyAgIDEuIE9iamVjdCAxMjMgaXMgc2xhdGVkIHRvIGJlIGEgY2hp
bGQgb2YgdGhpcyBvYmplY3QgKGkuZS4gaW4gbmV3Q2hpbGRyZW4pLCBhbmQgd2UgY29sbGVjdCBu
b2RlIGNoYW5nZXMgZm9yIGl0LgogICAgICAgICAvLyAgIDIuIE9iamVjdCAxMjMgaXMgY3VycmVu
dGx5IGEgbWVtYmVyIG9mIGEgc3VidHJlZSBvZiBzb21lIG90aGVyIG9iamVjdCBpbiBvbGRDaGls
ZHJlbklEcy4KICAgICAgICAgLy8gICAzLiBUaHVzLCB3ZSBkb24ndCB3YW50IHRvIGRlbGV0ZSBP
YmplY3QgMTIzIGZyb20gdGhlIG5vZGVtYXAsIGluc3RlYWQgYWxsb3dpbmcgaXQgdG8gYmUgbW92
ZWQuCi0gICAgICAgIHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChheElELCBheEFuY2VzdG9yLCBp
ZHNCZWluZ0NoYW5nZWQpOworICAgICAgICByZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAoYXhJRCwg
YXhBbmNlc3Rvcik7CiAgICAgfQotICAgIHF1ZXVlQ2hhbmdlc0FuZFJlbW92YWxzKGNoYW5nZXMs
IG9sZENoaWxkcmVuSURzKTsKKyAgICBxdWV1ZVJlbW92YWxzQW5kVW5yZXNvbHZlZENoYW5nZXMo
b2xkQ2hpbGRyZW5JRHMpOwogCiAgICAgLy8gQWxzbyBxdWV1ZSB1cGRhdGVzIGZvciBwcm9wZXJ0
aWVzIHRoYXQgZGVyaXZlIGZyb20gY2hpbGRyZW4oKS4KICAgICB1cGRhdGVSZWxhdGVkUHJvcGVy
dGllcygqYXhBbmNlc3Rvcik7CkBAIC01NTQsMTEgKzU3OSwxMiBAQCB2b2lkIEFYSXNvbGF0ZWRU
cmVlOjpyZW1vdmVOb2RlKGNvbnN0IEFYQ29yZU9iamVjdCYgYXhPYmplY3QpCiAgICAgQVhMT0co
bWFrZVN0cmluZygib2JqZWN0SUQgIiwgYXhPYmplY3Qub2JqZWN0SUQoKS5sb2dnaW5nU3RyaW5n
KCkpKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCisgICAgbV91bnJlc29sdmVkUGVu
ZGluZ0FwcGVuZHMucmVtb3ZlKGF4T2JqZWN0Lm9iamVjdElEKCkpOwogICAgIHJlbW92ZVN1YnRy
ZWVGcm9tTm9kZU1hcChheE9iamVjdC5vYmplY3RJRCgpLCBheE9iamVjdC5wYXJlbnRPYmplY3RV
bmlnbm9yZWQoKSk7Ci0gICAgcXVldWVDaGFuZ2VzQW5kUmVtb3ZhbHMoeyB9LCB7IGF4T2JqZWN0
Lm9iamVjdElEKCkgfSk7CisgICAgcXVldWVSZW1vdmFscyh7IGF4T2JqZWN0Lm9iamVjdElEKCkg
fSk7CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChB
WElEIG9iamVjdElELCBBWENvcmVPYmplY3QqIGF4UGFyZW50LCBjb25zdCBIYXNoU2V0PEFYSUQ+
JiBpZHNUb0tlZXApCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVlRnJvbU5vZGVN
YXAoQVhJRCBvYmplY3RJRCwgQVhDb3JlT2JqZWN0KiBheFBhcmVudCkKIHsKICAgICBBWFRSQUNF
KCJBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwIl9zKTsKICAgICBBWExP
RyhtYWtlU3RyaW5nKCJSZW1vdmluZyBzdWJ0cmVlIGZvciBvYmplY3RJRCAiLCBvYmplY3RJRC5s
b2dnaW5nU3RyaW5nKCkpKTsKQEAgLTU3OCw3ICs2MDQsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVl
OjpyZW1vdmVTdWJ0cmVlRnJvbU5vZGVNYXAoQVhJRCBvYmplY3RJRCwgQVhDb3JlT2JqZWN0KiBh
eFBhcgogICAgIFZlY3RvcjxBWElEPiByZW1vdmFscyA9IHsgb2JqZWN0SUQgfTsKICAgICB3aGls
ZSAocmVtb3ZhbHMuc2l6ZSgpKSB7CiAgICAgICAgIEFYSUQgYXhJRCA9IHJlbW92YWxzLnRha2VM
YXN0KCk7Ci0gICAgICAgIGlmICghYXhJRC5pc1ZhbGlkKCkgfHwgaWRzVG9LZWVwLmNvbnRhaW5z
KGF4SUQpKQorICAgICAgICBpZiAoIWF4SUQuaXNWYWxpZCgpIHx8IG1fdW5yZXNvbHZlZFBlbmRp
bmdBcHBlbmRzLmNvbnRhaW5zKGF4SUQpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgYXV0byBpdCA9IG1fbm9kZU1hcC5maW5kKGF4SUQpOwpAQCAtNjE5LDE1ICs2NDUsNiBAQCB2
b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKCkKICAgICAgICAgbV9mb2N1
c2VkTm9kZUlEID0gbV9wZW5kaW5nRm9jdXNlZE5vZGVJRDsKICAgICB9CiAKLSAgICB3aGlsZSAo
bV9wZW5kaW5nTm9kZVJlbW92YWxzLnNpemUoKSkgewotICAgICAgICBhdXRvIHJlbW92YWwgPSBt
X3BlbmRpbmdOb2RlUmVtb3ZhbHMudGFrZUxhc3QoKTsKLSAgICAgICAgQVhMT0cobWFrZVN0cmlu
ZygicmVtb3ZpbmcgYXhJRCAiLCByZW1vdmFsLmZpcnN0LmxvZ2dpbmdTdHJpbmcoKSkpOwotICAg
ICAgICBpZiAoYXV0byBvYmplY3QgPSBub2RlRm9ySUQocmVtb3ZhbC5maXJzdCkpIHsKLSAgICAg
ICAgICAgIG9iamVjdC0+ZGV0YWNoKHJlbW92YWwuc2Vjb25kKTsKLSAgICAgICAgICAgIG1fcmVh
ZGVyVGhyZWFkTm9kZU1hcC5yZW1vdmUocmVtb3ZhbC5maXJzdCk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KICAgICB3aGlsZSAobV9wZW5kaW5nU3VidHJlZVJlbW92YWxzLnNpemUoKSkgewogICAgICAg
ICBhdXRvIGF4SUQgPSBtX3BlbmRpbmdTdWJ0cmVlUmVtb3ZhbHMudGFrZUxhc3QoKTsKICAgICAg
ICAgQVhMT0cobWFrZVN0cmluZygicmVtb3Zpbmcgc3VidHJlZSBheElEICIsIGF4SUQubG9nZ2lu
Z1N0cmluZygpKSk7CkBAIC02NDgsMTMgKzY2NSwxMyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjph
cHBseVBlbmRpbmdDaGFuZ2VzKCkKICAgICAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgaWYgKGF1dG8gb2JqZWN0ID0gbV9yZWFkZXJUaHJlYWROb2Rl
TWFwLmdldChheElEKSkgewotICAgICAgICAgICAgaWYgKG9iamVjdCAhPSAmaXRlbS5pc29sYXRl
ZE9iamVjdC5nZXQoKQotICAgICAgICAgICAgICAgICYmIG9iamVjdC0+d3JhcHBlcigpID09IHdy
YXBwZXIuZ2V0KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gZXhpc3RpbmdPYmplY3QgPSBtX3JlYWRl
clRocmVhZE5vZGVNYXAuZ2V0KGF4SUQpKSB7CisgICAgICAgICAgICBpZiAoZXhpc3RpbmdPYmpl
Y3QgIT0gJml0ZW0uaXNvbGF0ZWRPYmplY3QuZ2V0KCkKKyAgICAgICAgICAgICAgICAmJiBleGlz
dGluZ09iamVjdC0+d3JhcHBlcigpID09IHdyYXBwZXIuZ2V0KCkpIHsKICAgICAgICAgICAgICAg
ICAvLyBUaGUgbmV3IElzb2xhdGVkT2JqZWN0IGlzIGEgcmVwbGFjZW1lbnQgZm9yIGFuIGV4aXN0
aW5nIG9iamVjdAotICAgICAgICAgICAgICAgIC8vIGFzIHRoZSByZXN1bHQgb2YgYW4gdXBkYXRl
LiBUaHVzIGRldGFjaCB0aGUgd3JhcHBlciBmcm9tIHRoZQotICAgICAgICAgICAgICAgIC8vIGV4
aXN0aW5nIG9iamVjdCBhbmQgYXR0YWNoIGl0IHRvIHRoZSBuZXcgb25lLgotICAgICAgICAgICAg
ICAgIG9iamVjdC0+ZGV0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVs
ZW1lbnRDaGFuZ2VkKTsKKyAgICAgICAgICAgICAgICAvLyBhcyB0aGUgcmVzdWx0IG9mIGFuIHVw
ZGF0ZS4gVGh1cyBkZXRhY2ggdGhlIGV4aXN0aW5nIG9iamVjdAorICAgICAgICAgICAgICAgIC8v
IGFuZCBhdHRhY2ggdGhlIHdyYXBwZXIgdG8gdGhlIG5ldyBvbmUuCisgICAgICAgICAgICAgICAg
ZXhpc3RpbmdPYmplY3QtPmRldGFjaChBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVsZW1l
bnRDaGFuZ2VkKTsKICAgICAgICAgICAgICAgICBpdGVtLmlzb2xhdGVkT2JqZWN0LT5hdHRhY2hQ
bGF0Zm9ybVdyYXBwZXIod3JhcHBlci5nZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBtX3JlYWRlclRocmVhZE5vZGVNYXAucmVtb3ZlKGF4SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgK
aW5kZXggZmJiYTVlNzRiNmI1ZDhlMTBjMjgxZDFlZDU3MTU1YmY2MTdiOGU3Mi4uZGRjOTczZjJh
YzU2YjNlYzFhY2ZmYTBlZjE4NGUzMzE2ZDc1MzEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBA
IC0zNDksNyArMzQ5LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfTsKIAotICAgIHZvaWQgZ2Vu
ZXJhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYsIEFYQ29yZU9iamVjdCosIGJvb2wgYXR0YWNoV3Jh
cHBlcik7CisgICAgdm9pZCBnZW5lcmF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhDb3JlT2Jq
ZWN0Kik7CiAgICAgdm9pZCB1cGRhdGVOb2RlKEFYQ29yZU9iamVjdCYpOwogICAgIHZvaWQgdXBk
YXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0Jik7CiAgICAgdm9pZCB1cGRhdGVOb2RlUHJvcGVydHko
QVhDb3JlT2JqZWN0JiwgQVhQcm9wZXJ0eU5hbWUpOwpAQCAtMzYzLDcgKzM2Myw3IEBAIHB1Ymxp
YzoKICAgICAvLyBSZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIGlzb2xhdGVkIG9iamVjdCBhbmQg
YWxsIGRlc2NlbmRhbnRzIGZyb20gdGhlIG1fbm9kZU1hcCBhbmQgcXVldWVzIHRoZWlyIHJlbW92
YWwgZnJvbSB0aGUgdHJlZS4KICAgICB2b2lkIHJlbW92ZU5vZGUoY29uc3QgQVhDb3JlT2JqZWN0
Jik7CiAgICAgLy8gUmVtb3ZlcyB0aGUgZ2l2ZW4gbm9kZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50
cyBmcm9tIG1fbm9kZU1hcC4KLSAgICB2b2lkIHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChBWElE
IGF4SUQsIEFYQ29yZU9iamVjdCosIGNvbnN0IEhhc2hTZXQ8QVhJRD4mID0geyB9KTsKKyAgICB2
b2lkIHJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChBWElEIGF4SUQsIEFYQ29yZU9iamVjdCopOwog
CiAgICAgLy8gQm90aCBzZXRSb290Tm9kZUlEIGFuZCBzZXRGb2N1c2VkTm9kZUlEIGFyZSBjYWxs
ZWQgZHVyaW5nIHRoZSBnZW5lcmF0aW9uCiAgICAgLy8gb2YgdGhlIElzb2xhdGVkVHJlZS4KQEAg
LTM4OCwxMCArMzg4LDEzIEBAIHByaXZhdGU6CiAgICAgLy8gTWV0aG9kcyBpbiB0aGlzIGJsb2Nr
IGFyZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIC8vIENvbXB1dGVzIHRoZSBwYXJl
bnQgSUQgb2YgdGhlIGdpdmVuIG9iamVjdCwgd2hpY2ggaXMgZ2VuZXJhbGx5IHRoZSAiYXNzdW1l
ZCIgcGFyZW50IElEIChidXQgbm90IGFsd2F5cywgbGlrZSBpbiB0aGUgY2FzZSBvZiB0YWJsZXMp
LgogICAgIEFYSUQgcGFyZW50SURGb3JPYmplY3QoQVhDb3JlT2JqZWN0JiwgQVhJRCBhc3N1bWVk
UGFyZW50SUQpOwotICAgIE5vZGVDaGFuZ2Ugbm9kZUNoYW5nZUZvck9iamVjdChBWENvcmVPYmpl
Y3QmLCBBWElEIHBhcmVudElELCBib29sIGF0dGFjaFdyYXBwZXIgPSB0cnVlKTsKLSAgICB2b2lk
IGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJ
RCwgYm9vbCBhdHRhY2hXcmFwcGVyLCBWZWN0b3I8Tm9kZUNoYW5nZT4mLCBIYXNoU2V0PEFYSUQ+
KiA9IG51bGxwdHIpOworICAgIGVudW0gY2xhc3MgQXR0YWNoV3JhcHBlciA6IGJvb2wgeyBPbk1h
aW5UaHJlYWQsIE9uQVhUaHJlYWQgfTsKKyAgICBOb2RlQ2hhbmdlIG5vZGVDaGFuZ2VGb3JPYmpl
Y3QoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCwgQXR0YWNoV3JhcHBlciA9IEF0dGFjaFdy
YXBwZXI6Ok9uTWFpblRocmVhZCk7CisgICAgdm9pZCBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0
cmVlKEFYQ29yZU9iamVjdCYsIEFYSUQgcGFyZW50SUQpOwogICAgIHZvaWQgcXVldWVDaGFuZ2Uo
Y29uc3QgTm9kZUNoYW5nZSYpIFdURl9SRVFVSVJFU19MT0NLKG1fY2hhbmdlTG9nTG9jayk7Ci0g
ICAgdm9pZCBxdWV1ZUNoYW5nZXNBbmRSZW1vdmFscyhjb25zdCBWZWN0b3I8Tm9kZUNoYW5nZT4m
LCBjb25zdCBWZWN0b3I8QVhJRD4mID0geyB9KTsKKyAgICB2b2lkIHF1ZXVlUmVtb3ZhbHMoY29u
c3QgVmVjdG9yPEFYSUQ+Jik7CisgICAgdm9pZCBxdWV1ZVJlbW92YWxzTG9ja2VkKGNvbnN0IFZl
Y3RvcjxBWElEPiYpIFdURl9SRVFVSVJFU19MT0NLKG1fY2hhbmdlTG9nTG9jayk7CisgICAgdm9p
ZCBxdWV1ZVJlbW92YWxzQW5kVW5yZXNvbHZlZENoYW5nZXMoY29uc3QgVmVjdG9yPEFYSUQ+Jik7
CiAKICAgICBBWElzb2xhdGVkVHJlZUlEIG1fdHJlZUlEOwogICAgIEFYT2JqZWN0Q2FjaGUqIG1f
YXhPYmplY3RDYWNoZSB7IG51bGxwdHIgfTsKQEAgLTQwOCw2ICs0MTEsMTMgQEAgcHJpdmF0ZToK
ICAgICAvLyBpdHMgT2JqZWN0SUQgdG8gaXRzIFBhcmVudENoaWxkcmVuSURzIHN0cnVjdC4KICAg
ICBIYXNoTWFwPEFYSUQsIFBhcmVudENoaWxkcmVuSURzPiBtX25vZGVNYXA7CiAKKyAgICAvLyBP
bmx5IGFjY2Vzc2VkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAvLyBUaGUga2V5IGlzIHRoZSBJ
RCBvZiB0aGUgb2JqZWN0IHRoYXQgd2lsbCBiZSByZXNvbHZlZCBpbnRvIGFuIG1fcGVuZGluZ0Fw
cGVuZHMgTm9kZUNoYW5nZS4KKyAgICAvLyBUaGUgdmFsdWUgcmVwcmVzZW50cyB0aGUgcGFyZW50
IElEIG9mIHRoZSBvYmplY3QsIGFuZCB3aGV0aGVyIHRoZSB3cmFwcGVyIHNob3VsZCBiZSBhdHRh
Y2hlZCBvbiB0aGUgbWFpbiB0aHJlYWQgb3IgdGhlIEFYIHRocmVhZC4KKyAgICBIYXNoTWFwPEFY
SUQsIHN0ZDo6cGFpcjxBWElELCBBdHRhY2hXcmFwcGVyPj4gbV91bnJlc29sdmVkUGVuZGluZ0Fw
cGVuZHM7CisgICAgLy8gT25seSBhY2Nlc3NlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgYm9v
bCBtX2lzQ29sbGVjdGluZ05vZGVDaGFuZ2VzIHsgZmFsc2UgfTsKKwogICAgIC8vIE9ubHkgYWNj
ZXNzZWQgb24gQVggdGhyZWFkIHJlcXVlc3RpbmcgZGF0YS4KICAgICBIYXNoTWFwPEFYSUQsIFJl
ZjxBWElzb2xhdGVkT2JqZWN0Pj4gbV9yZWFkZXJUaHJlYWROb2RlTWFwOwogCkBAIC00MTUsOCAr
NDI1LDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gbV9yb290Tm9k
ZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9nTG9jayk7CiAgICAgVmVjdG9yPE5vZGVD
aGFuZ2U+IG1fcGVuZGluZ0FwcGVuZHMgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xv
Y2spOyAvLyBOb2RlcyB0byBiZSBhZGRlZCB0byB0aGUgdHJlZSBhbmQgcGxhdGZvcm0td3JhcHBl
ZC4KICAgICBWZWN0b3I8QVhQcm9wZXJ0eUNoYW5nZT4gbV9wZW5kaW5nUHJvcGVydHlDaGFuZ2Vz
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKLSAgICAvLyBOb2RlcyB0byBi
ZSByZW1vdmVkIGZyb20gdGhlIHRyZWUgKGFuZCB0aGUgQWNjZXNzaWJpbGl0eURldGFjaG1lbnRU
eXBlIHJlYXNvbiBmb3IgdGhlIHJlbW92YWwpLgotICAgIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwg
QWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlPj4gbV9wZW5kaW5nTm9kZVJlbW92YWxzIFdURl9H
VUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKICAgICBWZWN0b3I8QVhJRD4gbV9wZW5k
aW5nU3VidHJlZVJlbW92YWxzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsg
Ly8gTm9kZXMgd2hvc2Ugc3VidHJlZXMgYXJlIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgdHJlZS4K
ICAgICBWZWN0b3I8c3RkOjpwYWlyPEFYSUQsIFZlY3RvcjxBWElEPj4+IG1fcGVuZGluZ0NoaWxk
cmVuVXBkYXRlcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9nTG9jayk7CiAgICAgQVhJ
RCBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dM
b2NrKTsK
</data>
<flag name="commit-queue"
          id="486517"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>