<?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>235194</bug_id>
          
          <creation_ts>2022-01-13 11:31:39 -0800</creation_ts>
          <short_desc>&lt;dialog&gt; with transformed ancestor asserts under RenderGeometryMap</short_desc>
          <delta_ts>2022-01-19 19:54:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>235272</dependson>
          <blocked>84635</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ntim</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1830647</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-13 11:31:39 -0800</bug_when>
    <thetext>imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-transform.html triggers an assertion:

Thread 0 Crashed::  Dispatch queue: com.apple.main-thread
0   JavaScriptCore                	       0x7bf6ddf9e WTFCrash + 14
1   WebCore                       	       0x7d2e0f49b WTFCrashWithInfo(int, char const*, char const*, int) + 27
2   WebCore                       	       0x7d77b6ca6 WebCore::RenderObject::offsetFromAncestorContainer(WebCore::RenderElement&amp;) const + 262
3   WebCore                       	       0x7d7628382 WebCore::RenderBox::pushMappingToContainer(WebCore::RenderLayerModelObject const*, WebCore::RenderGeometryMap&amp;) const + 226 (RenderBox.cpp:2361)
4   WebCore                       	       0x7d76daa8f WebCore::RenderGeometryMap::pushMappingsToAncestor(WebCore::RenderObject const*, WebCore::RenderLayerModelObject const*) + 79 (RenderGeometryMap.cpp:140)
5   WebCore                       	       0x7d76dae5d WebCore::RenderGeometryMap::pushMappingsToAncestor(WebCore::RenderLayer const*, WebCore::RenderLayer const*, bool) + 557 (RenderGeometryMap.cpp:197)
6   WebCore                       	       0x7d7702142 WebCore::RenderLayer::updateLayerPositions(WebCore::RenderGeometryMap*, WTF::OptionSet&lt;WebCore::RenderLayer::UpdateLayerPositionsFlag&gt;) + 162 (RenderLayer.cpp:962)
7   WebCore                       	       0x7d7702921 WebCore::RenderLayer::updateLayerPositions(WebCore::RenderGeometryMap*, WTF::OptionSet&lt;WebCore::RenderLayer::UpdateLayerPositionsFlag&gt;) + 2177 (RenderLayer.cpp:1053)
8   WebCore                       	       0x7d7702921 WebCore::RenderLayer::updateLayerPositions(WebCore::RenderGeometryMap*, WTF::OptionSet&lt;WebCore::RenderLayer::UpdateLayerPositionsFlag&gt;) + 2177 (RenderLayer.cpp:1053)
9   WebCore                       	       0x7d7702921 WebCore::RenderLayer::updateLayerPositions(WebCore::RenderGeometryMap*, WTF::OptionSet&lt;WebCore::RenderLayer::UpdateLayerPositionsFlag&gt;) + 2177 (RenderLayer.cpp:1053)
10  WebCore                       	       0x7d7702bda WebCore::RenderLayer::updateLayerPositionsAfterLayout(bool, bool) + 218 (RenderLayer.cpp:952)
11  WebCore                       	       0x7d6ca51e1 WebCore::FrameView::didLayout(WTF::WeakPtr&lt;WebCore::RenderElement, WTF::EmptyCounter&gt;) + 129 (FrameView.cpp:1319)
12  WebCore                       	       0x7d6c9abf8 WebCore::FrameViewLayoutContext::layout() + 2728 (FrameViewLayoutContext.cpp:259)
13  WebCore                       	       0x7d5f8ac56 WebCore::Document::implicitClose() + 1046 (Document.cpp:3218)
14  WebCore                       	       0x7d6aa428b WebCore::FrameLoader::checkCallImplicitClose() + 155 (FrameLoader.cpp:942)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830814</commentid>
    <comment_count>1</comment_count>
      <attachid>449140</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-13 21:37:36 -0800</bug_when>
    <thetext>Created attachment 449140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831700</commentid>
    <comment_count>2</comment_count>
      <attachid>449398</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-18 09:32:49 -0800</bug_when>
    <thetext>Created attachment 449398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831982</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-01-19 04:13:55 -0800</bug_when>
    <thetext>*** Bug 235063 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832097</commentid>
    <comment_count>4</comment_count>
      <attachid>449498</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-19 11:16:47 -0800</bug_when>
    <thetext>Created attachment 449498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832103</commentid>
    <comment_count>5</comment_count>
      <attachid>449499</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-19 11:22:51 -0800</bug_when>
    <thetext>Created attachment 449499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832110</commentid>
    <comment_count>6</comment_count>
      <attachid>449499</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-19 11:36:09 -0800</bug_when>
    <thetext>Comment on attachment 449499
Patch

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

&gt; Source/WebCore/rendering/RenderElement.h:112
&gt; +    RenderLayer* layerParentRespectingTopLayer() const;
&gt; +    RenderLayer* layerNextSiblingRespectingTopLayer(RenderLayer&amp; parentLayer) const;

Do we have non-respecting versions and what are they good for?

Could we just have these without &quot;RespectingTopLayer&quot; part?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832119</commentid>
    <comment_count>7</comment_count>
      <attachid>449499</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-19 11:49:32 -0800</bug_when>
    <thetext>Comment on attachment 449499
Patch

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

&gt; Source/WebCore/rendering/RenderElement.cpp:637
&gt; +static RenderLayer* findNextLayer(const RenderElement&amp; currRenderer, RenderLayer&amp; parentLayer, const RenderObject* siblingToTraverseFrom, bool checkParent = true)

I know this is just function that moves but it would nice to make it better. I suspect what it does could be expressed cleanly (by making it iterative and separation layer testing from traversal) but currently it is pretty incomprehensible.

currRenderer is not current WebKit style

It is not super clear what &quot;next layer&quot; here means. Next in depth-first order? siblingToTraverseFrom is really weird too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832133</commentid>
    <comment_count>8</comment_count>
      <attachid>449504</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-19 12:05:16 -0800</bug_when>
    <thetext>Created attachment 449504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832141</commentid>
    <comment_count>9</comment_count>
      <attachid>449506</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-19 12:20:00 -0800</bug_when>
    <thetext>Created attachment 449506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832155</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-19 12:25:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/87785288&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832331</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-19 19:54:37 -0800</bug_when>
    <thetext>Committed r288267 (246209@main): &lt;https://commits.webkit.org/246209@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449506.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449140</attachid>
            <date>2022-01-13 21:37:36 -0800</date>
            <delta_ts>2022-01-18 09:32:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235194-20220113213735.patch</filename>
            <type>text/plain</type>
            <size>15932</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmExM2M5NmQ5MDI5ZjFk
YjViYzQyNjMxYzI3NWI2YWExZGJiMjQ5Ny4uOWU4ZTc1MDFjZmMyNTQ4YzgxODU4NWMyMjZlNTdl
ZTQ3OGM4YTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIyLTAxLTEzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIDxkaWFsb2c+IHdp
dGggdHJhbnNmb3JtZWQgYW5jZXN0b3IgYXNzZXJ0cyB1bmRlciBSZW5kZXJHZW9tZXRyeU1hcAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MTk0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpoYXNUb3BMYXllckVsZW1lbnQgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVi
dWlsZFpPcmRlckxpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVM
YXllclBvc2l0aW9uc0FmdGVyU3R5bGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJMYXlvdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnJlY3Vyc2l2ZVVwZGF0ZUxheWVyUG9zaXRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyT3ZlcmZsb3dT
Y3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRp
b25zQWZ0ZXJEb2N1bWVudFNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
cmVjdXJzaXZlVXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVj
dXJzaXZlVXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbCk6CisKIDIwMjItMDEtMTMgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgY2Fs
bCBpbnZhbGlkYXRlUmVjdHNGb3JBbGxNYXJrZXJzKCkgZm9yIGV2ZXJ5IGxheWVyIGluIHRoZSB1
cGRhdGVMYXllclBvc2l0aW9ucygpIHRyYXZlcnNhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAy
YzhkZjMxNjgwNmQ2NTM2ZjllMGNjNTJiNzRhODUxN2UwOTdiZTc2Li4wNzc5MDRjOGE4MDEzN2Zj
YzA1ZjYwMjUxYzE4YzhhYjMxNmFhMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTU0OCw2
ICsxNTQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkVG9wTGF5ZXJFbGVtZW50KEVsZW1lbnQm
KTsKICAgICB2b2lkIHJlbW92ZVRvcExheWVyRWxlbWVudChFbGVtZW50Jik7CiAgICAgY29uc3Qg
TGlzdEhhc2hTZXQ8UmVmPEVsZW1lbnQ+PiYgdG9wTGF5ZXJFbGVtZW50cygpIGNvbnN0IHsgcmV0
dXJuIG1fdG9wTGF5ZXJFbGVtZW50czsgfQorICAgIGJvb2wgaGFzVG9wTGF5ZXJFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gIW1fdG9wTGF5ZXJFbGVtZW50cy5pc0VtcHR5KCk7IH0KIAogICAgIEhU
TUxEaWFsb2dFbGVtZW50KiBhY3RpdmVNb2RhbERpYWxvZygpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA2ZWM0MDU2NTJkODQxZGU4NGY5YTFj
OWNjMzYxNWNkMzJlMzYwMWVkLi5lMjNiYzZlZmFhYjk3NjkyNTE1MDFmN2FmNTA5YmMwZDZkNzFk
Mjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTc4Niwy
NSArNzg2LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJlYnVpbGRaT3JkZXJMaXN0cyhzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+JiBwb3NaCiAgICAgICAgIG5lZ1pPcmRlckxp
c3QtPnNocmlua1RvRml0KCk7CiAgICAgfQogCi0gICAgaWYgKGlzUmVuZGVyVmlld0xheWVyKCkp
IHsKLSAgICAgICAgYXV0byB0b3BMYXllckVsZW1lbnRzID0gcmVuZGVyZXIoKS5kb2N1bWVudCgp
LnRvcExheWVyRWxlbWVudHMoKTsKLSAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogdG9wTGF5
ZXJFbGVtZW50cykgewotICAgICAgICAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBlbGVt
ZW50LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGF1dG8gYmFja2Ryb3BSZW5kZXJlciA9IHJlbmRl
cmVyLT5iYWNrZHJvcFJlbmRlcmVyKCk7Ci0gICAgICAgICAgICBpZiAoYmFja2Ryb3BSZW5kZXJl
ciAmJiBiYWNrZHJvcFJlbmRlcmVyLT5oYXNMYXllcigpKSB7Ci0gICAgICAgICAgICAgICAgUmVu
ZGVyTGF5ZXIqIGxheWVyID0gYmFja2Ryb3BSZW5kZXJlci0+bGF5ZXIoKTsKLSAgICAgICAgICAg
ICAgICBpZiAoIXBvc1pPcmRlckxpc3QpCi0gICAgICAgICAgICAgICAgICAgIHBvc1pPcmRlckxp
c3QgPSBtYWtlVW5pcXVlPFZlY3RvcjxSZW5kZXJMYXllcio+PigpOwotICAgICAgICAgICAgICAg
IHBvc1pPcmRlckxpc3QtPmFwcGVuZChsYXllcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAocmVuZGVyZXItPmhhc0xheWVyKCkpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJMYXll
ciogbGF5ZXIgPSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqcmVuZGVyZXIpLmxh
eWVyKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFwb3NaT3JkZXJMaXN0KQotICAgICAgICAgICAg
ICAgICAgICBwb3NaT3JkZXJMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4o
KTsKLSAgICAgICAgICAgICAgICBwb3NaT3JkZXJMaXN0LT5hcHBlbmQobGF5ZXIpOwotICAgICAg
ICAgICAgfQorICAgIGlmIChpc1JlbmRlclZpZXdMYXllcigpICYmIHJlbmRlcmVyKCkuZG9jdW1l
bnQoKS5oYXNUb3BMYXllckVsZW1lbnQoKSkgeworICAgICAgICBhdXRvIHRvcExheWVyTGF5ZXJz
ID0gdG9wTGF5ZXJSZW5kZXJMYXllcnMocmVuZGVyZXIoKS52aWV3KCkpOworICAgICAgICBpZiAo
dG9wTGF5ZXJMYXllcnMuc2l6ZSgpKSB7CisgICAgICAgICAgICBpZiAoIXBvc1pPcmRlckxpc3Qp
CisgICAgICAgICAgICAgICAgcG9zWk9yZGVyTGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlbmRl
ckxheWVyKj4+KCk7CisKKyAgICAgICAgICAgIHBvc1pPcmRlckxpc3QtPmFwcGVuZFZlY3Rvcih0
b3BMYXllckxheWVycyk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC05MzQsMTggKzkyMiwyMyBA
QCB2b2lkIFJlbmRlckxheWVyOjp3aWxsVXBkYXRlTGF5ZXJQb3NpdGlvbnMoKQogdm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclN0eWxlQ2hhbmdlKCkKIHsKICAgICB3
aWxsVXBkYXRlTGF5ZXJQb3NpdGlvbnMoKTsKLSAgICByZWN1cnNpdmVVcGRhdGVMYXllclBvc2l0
aW9ucyhudWxscHRyLCBmbGFnc0ZvclVwZGF0ZUxheWVyUG9zaXRpb25zKCp0aGlzKSk7CisKKyAg
ICBSZW5kZXJMYXllciogZW5jbG9zaW5nTGF5ZXIgPSBwYXJlbnQoKTsKKyAgICBpZiAoZXN0YWJs
aXNoZXNUb3BMYXllcigpKQorICAgICAgICBlbmNsb3NpbmdMYXllciA9IHJlbmRlcmVyKCkudmll
dygpLmxheWVyKCk7CisKKyAgICByZWN1cnNpdmVVcGRhdGVMYXllclBvc2l0aW9ucyhudWxscHRy
LCBlbmNsb3NpbmdMYXllciwgZmxhZ3NGb3JVcGRhdGVMYXllclBvc2l0aW9ucygqdGhpcykpOwog
fQogCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyTGF5b3V0KGJv
b2wgaXNSZWxheW91dGluZ1N1YnRyZWUsIGJvb2wgZGlkRnVsbFJlcGFpbnQpCiB7Ci0gICAgYXV0
byB1cGRhdGVMYXllclBvc2l0aW9uRmxhZ3MgPSBbJl0oYm9vbCBpc1JlbGF5b3V0aW5nU3VidHJl
ZSwgYm9vbCBkaWRGdWxsUmVwYWludCkgewotICAgICAgICBhdXRvIGZsYWdzID0gZmxhZ3NGb3JV
cGRhdGVMYXllclBvc2l0aW9ucygqdGhpcyk7CisgICAgYXV0byB1cGRhdGVMYXllclBvc2l0aW9u
RmxhZ3MgPSBbJl0oUmVuZGVyTGF5ZXImIHN0YXJ0aW5nTGF5ZXIsIGJvb2wgaXNSZWxheW91dGlu
Z1N1YnRyZWUsIGJvb2wgZGlkRnVsbFJlcGFpbnQpIHsKKyAgICAgICAgYXV0byBmbGFncyA9IGZs
YWdzRm9yVXBkYXRlTGF5ZXJQb3NpdGlvbnMoc3RhcnRpbmdMYXllcik7CiAgICAgICAgIGlmIChk
aWRGdWxsUmVwYWludCkgewogICAgICAgICAgICAgZmxhZ3MucmVtb3ZlKFJlbmRlckxheWVyOjpD
aGVja0ZvclJlcGFpbnQpOwogICAgICAgICAgICAgZmxhZ3MuYWRkKFJlbmRlckxheWVyOjpOZWVk
c0Z1bGxSZXBhaW50SW5CYWNraW5nKTsKICAgICAgICAgfQotICAgICAgICBpZiAoaXNSZWxheW91
dGluZ1N1YnRyZWUgJiYgZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKFJlbmRlckxheWVyOjpJbmNs
dWRlQ29tcG9zaXRlZFBhZ2luYXRlZExheWVycykpCisgICAgICAgIGlmIChpc1JlbGF5b3V0aW5n
U3VidHJlZSAmJiBzdGFydGluZ0xheWVyLmVuY2xvc2luZ1BhZ2luYXRpb25MYXllcihSZW5kZXJM
YXllcjo6SW5jbHVkZUNvbXBvc2l0ZWRQYWdpbmF0ZWRMYXllcnMpKQogICAgICAgICAgICAgZmxh
Z3MuYWRkKFJlbmRlckxheWVyOjpVcGRhdGVQYWdpbmF0aW9uKTsKICAgICAgICAgcmV0dXJuIGZs
YWdzOwogICAgIH07CkBAIC05NTMsMjEgKzk0NiwyNSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRh
dGVMYXllclBvc2l0aW9uc0FmdGVyTGF5b3V0KGJvb2wgaXNSZWxheW91dGluZ1N1YnRyZWUsIGJv
bwogICAgIExPRyhDb21wb3NpdGluZywgIlJlbmRlckxheWVyICVwIHVwZGF0ZUxheWVyUG9zaXRp
b25zQWZ0ZXJMYXlvdXQiLCB0aGlzKTsKICAgICB3aWxsVXBkYXRlTGF5ZXJQb3NpdGlvbnMoKTsK
IAorICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdMYXllciA9IHBhcmVudCgpOworICAgIGlmIChl
c3RhYmxpc2hlc1RvcExheWVyKCkpCisgICAgICAgIGVuY2xvc2luZ0xheWVyID0gcmVuZGVyZXIo
KS52aWV3KCkubGF5ZXIoKTsKKwogICAgIFJlbmRlckdlb21ldHJ5TWFwIGdlb21ldHJ5TWFwKFVz
ZVRyYW5zZm9ybXMpOwogICAgIGlmICghaXNSZW5kZXJWaWV3TGF5ZXIoKSkKLSAgICAgICAgZ2Vv
bWV0cnlNYXAucHVzaE1hcHBpbmdzVG9BbmNlc3RvcihwYXJlbnQoKSwgbnVsbHB0cik7CisgICAg
ICAgIGdlb21ldHJ5TWFwLnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IoZW5jbG9zaW5nTGF5ZXIsIG51
bGxwdHIpOwogCi0gICAgcmVjdXJzaXZlVXBkYXRlTGF5ZXJQb3NpdGlvbnMoJmdlb21ldHJ5TWFw
LCB1cGRhdGVMYXllclBvc2l0aW9uRmxhZ3MoaXNSZWxheW91dGluZ1N1YnRyZWUsIGRpZEZ1bGxS
ZXBhaW50KSk7CisgICAgcmVjdXJzaXZlVXBkYXRlTGF5ZXJQb3NpdGlvbnMoJmdlb21ldHJ5TWFw
LCBlbmNsb3NpbmdMYXllciwgdXBkYXRlTGF5ZXJQb3NpdGlvbkZsYWdzKCp0aGlzLCBpc1JlbGF5
b3V0aW5nU3VidHJlZSwgZGlkRnVsbFJlcGFpbnQpKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6
cmVjdXJzaXZlVXBkYXRlTGF5ZXJQb3NpdGlvbnMoUmVuZGVyR2VvbWV0cnlNYXAqIGdlb21ldHJ5
TWFwLCBPcHRpb25TZXQ8VXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFnPiBmbGFncykKK3ZvaWQgUmVu
ZGVyTGF5ZXI6OnJlY3Vyc2l2ZVVwZGF0ZUxheWVyUG9zaXRpb25zKFJlbmRlckdlb21ldHJ5TWFw
KiBnZW9tZXRyeU1hcCwgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ0xheWVyLCBPcHRpb25TZXQ8VXBk
YXRlTGF5ZXJQb3NpdGlvbnNGbGFnPiBmbGFncykKIHsKICAgICB1cGRhdGVMYXllclBvc2l0aW9u
KCZmbGFncyk7CiAgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCiAgICAgICAgIG1fc2Nyb2xsYWJs
ZUFyZWEtPmFwcGx5UG9zdExheW91dFNjcm9sbFBvc2l0aW9uSWZOZWVkZWQoKTsKIAogICAgIGlm
IChnZW9tZXRyeU1hcCkKLSAgICAgICAgZ2VvbWV0cnlNYXAtPnB1c2hNYXBwaW5nc1RvQW5jZXN0
b3IodGhpcywgcGFyZW50KCkpOworICAgICAgICBnZW9tZXRyeU1hcC0+cHVzaE1hcHBpbmdzVG9B
bmNlc3Rvcih0aGlzLCBlbmNsb3NpbmdMYXllcik7CiAKICAgICAvLyBDbGVhciBvdXIgY2FjaGVk
IGNsaXAgcmVjdCBpbmZvcm1hdGlvbi4KICAgICBjbGVhckNsaXBSZWN0cygpOwpAQCAtMTA1Nyw4
ICsxMDU0LDE2IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJlY3Vyc2l2ZVVwZGF0ZUxheWVyUG9zaXRp
b25zKFJlbmRlckdlb21ldHJ5TWFwKiBnZW9tZXRyeU1hcCwKICAgICBpZiAoaGFzQ29tcG9zaXRl
ZFNjcm9sbGFibGVPdmVyZmxvdygpKQogICAgICAgICBmbGFncy5hZGQoU2VlbkNvbXBvc2l0ZWRT
Y3JvbGxpbmdMYXllcik7CiAKLSAgICBmb3IgKFJlbmRlckxheWVyKiBjaGlsZCA9IGZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIGNoaWxk
LT5yZWN1cnNpdmVVcGRhdGVMYXllclBvc2l0aW9ucyhnZW9tZXRyeU1hcCwgZmxhZ3MpOworICAg
IGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChjaGlsZC0+ZXN0YWJsaXNoZXNUb3BMYXllcigp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNoaWxkLT5yZWN1cnNpdmVVcGRhdGVM
YXllclBvc2l0aW9ucyhnZW9tZXRyeU1hcCwgdGhpcywgZmxhZ3MpOworICAgIH0KKworICAgIGlm
IChpc1JlbmRlclZpZXdMYXllcigpKSB7CisgICAgICAgIGZvciAoYXV0byogbGF5ZXIgOiB0b3BM
YXllclJlbmRlckxheWVycyhyZW5kZXJlcigpLnZpZXcoKSkpCisgICAgICAgICAgICBsYXllci0+
cmVjdXJzaXZlVXBkYXRlTGF5ZXJQb3NpdGlvbnMoZ2VvbWV0cnlNYXAsIHRoaXMsIGZsYWdzKTsK
KyAgICB9CiAKICAgICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKICAgICAgICAgbV9zY3JvbGxhYmxl
QXJlYS0+dXBkYXRlTWFycXVlZVBvc2l0aW9uKCk7CkBAIC0xMDc1LDcgKzEwODAsNyBAQCB2b2lk
IFJlbmRlckxheWVyOjpyZWN1cnNpdmVVcGRhdGVMYXllclBvc2l0aW9ucyhSZW5kZXJHZW9tZXRy
eU1hcCogZ2VvbWV0cnlNYXAsCiAgICAgICAgIGJhY2tpbmcoKS0+dXBkYXRlQWZ0ZXJMYXlvdXQo
ZmxhZ3MuY29udGFpbnMoQ29udGFpbmluZ0NsaXBwaW5nTGF5ZXJDaGFuZ2VkU2l6ZSksIGZsYWdz
LmNvbnRhaW5zKE5lZWRzRnVsbFJlcGFpbnRJbkJhY2tpbmcpKTsKIAogICAgIGlmIChnZW9tZXRy
eU1hcCkKLSAgICAgICAgZ2VvbWV0cnlNYXAtPnBvcE1hcHBpbmdzVG9BbmNlc3RvcihwYXJlbnQo
KSk7CisgICAgICAgIGdlb21ldHJ5TWFwLT5wb3BNYXBwaW5nc1RvQW5jZXN0b3IoZW5jbG9zaW5n
TGF5ZXIpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpyZXBhaW50UmVjdEluY2x1ZGlu
Z05vbkNvbXBvc2l0aW5nRGVzY2VuZGFudHMoKSBjb25zdApAQCAtMTE2MCwxNSArMTE2NSwyMSBA
QCB2b2lkIFJlbmRlckxheWVyOjpjbGVhclJlcGFpbnRSZWN0cygpCiAKIHZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJPdmVyZmxvd1Njcm9sbCgpCiB7CisgICAgUmVu
ZGVyTGF5ZXIqIGVuY2xvc2luZ0xheWVyID0gcGFyZW50KCk7CisgICAgaWYgKGVzdGFibGlzaGVz
VG9wTGF5ZXIoKSkKKyAgICAgICAgZW5jbG9zaW5nTGF5ZXIgPSByZW5kZXJlcigpLnZpZXcoKS5s
YXllcigpOworCiAgICAgUmVuZGVyR2VvbWV0cnlNYXAgZ2VvbWV0cnlNYXAoVXNlVHJhbnNmb3Jt
cyk7CiAgICAgaWYgKCFpc1JlbmRlclZpZXdMYXllcigpKQotICAgICAgICBnZW9tZXRyeU1hcC5w
dXNoTWFwcGluZ3NUb0FuY2VzdG9yKHBhcmVudCgpLCBudWxscHRyKTsKKyAgICAgICAgZ2VvbWV0
cnlNYXAucHVzaE1hcHBpbmdzVG9BbmNlc3RvcihlbmNsb3NpbmdMYXllciwgbnVsbHB0cik7CiAK
ICAgICB3aWxsVXBkYXRlTGF5ZXJQb3NpdGlvbnMoKTsKIAogICAgIC8vIEZJWE1FOiB3aHkgaXMg
aXQgT0sgdG8gbm90IGNoZWNrIHRoZSBhbmNlc3RvcnMgb2YgdGhpcyBsYXllciBpbiBvcmRlciB0
bwogICAgIC8vIGluaXRpYWxpemUgdGhlIEhhc1NlZW5WaWV3cG9ydENvbnN0cmFpbmVkQW5jZXN0
b3IgYW5kIEhhc1NlZW5BbmNlc3RvcldpdGhPdmVyZmxvd0NsaXAgZmxhZ3M/Ci0gICAgcmVjdXJz
aXZlVXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbCgmZ2VvbWV0cnlNYXAsIFJlbmRlckxh
eWVyOjpJc092ZXJmbG93U2Nyb2xsKTsKKyAgICByZWN1cnNpdmVVcGRhdGVMYXllclBvc2l0aW9u
c0FmdGVyU2Nyb2xsKCZnZW9tZXRyeU1hcCwgZW5jbG9zaW5nTGF5ZXIsIFJlbmRlckxheWVyOjpJ
c092ZXJmbG93U2Nyb2xsKTsKKworICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBm
b3IgdGhlIFJlbmRlclZpZXcncyBsYXllciwgc28gdGhlcmUgaXMgbm8gbmVlZCB0byB1cGRhdGUg
dG9wIGxheWVyIGxheWVycy4KIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3Np
dGlvbnNBZnRlckRvY3VtZW50U2Nyb2xsKCkKQEAgLTExNzksMTAgKzExOTAsMTAgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlckRvY3VtZW50U2Nyb2xsKCkKICAg
ICB3aWxsVXBkYXRlTGF5ZXJQb3NpdGlvbnMoKTsKIAogICAgIFJlbmRlckdlb21ldHJ5TWFwIGdl
b21ldHJ5TWFwKFVzZVRyYW5zZm9ybXMpOwotICAgIHJlY3Vyc2l2ZVVwZGF0ZUxheWVyUG9zaXRp
b25zQWZ0ZXJTY3JvbGwoJmdlb21ldHJ5TWFwKTsKKyAgICByZWN1cnNpdmVVcGRhdGVMYXllclBv
c2l0aW9uc0FmdGVyU2Nyb2xsKCZnZW9tZXRyeU1hcCwgbnVsbHB0cik7CiB9CiAKLXZvaWQgUmVu
ZGVyTGF5ZXI6OnJlY3Vyc2l2ZVVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGwoUmVuZGVy
R2VvbWV0cnlNYXAqIGdlb21ldHJ5TWFwLCBPcHRpb25TZXQ8VXBkYXRlTGF5ZXJQb3NpdGlvbnNB
ZnRlclNjcm9sbEZsYWc+IGZsYWdzKQordm9pZCBSZW5kZXJMYXllcjo6cmVjdXJzaXZlVXBkYXRl
TGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbChSZW5kZXJHZW9tZXRyeU1hcCogZ2VvbWV0cnlNYXAs
IFJlbmRlckxheWVyKiBlbmNsb3NpbmdMYXllciwgT3B0aW9uU2V0PFVwZGF0ZUxheWVyUG9zaXRp
b25zQWZ0ZXJTY3JvbGxGbGFnPiBmbGFncykKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGRu
J3QgYmUgbmVlZGVkLCBidXQgdGhlcmUgYXJlIHNvbWUgY29ybmVyIGNhc2VzIHdoZXJlCiAgICAg
Ly8gdGhlc2UgZmxhZ3MgYXJlIHN0aWxsIGRpcnR5LiBVcGRhdGUgc28gdGhhdCB0aGUgY2hlY2sg
YmVsb3cgaXMgdmFsaWQuCkBAIC0xMjExLDcgKzEyMjIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpy
ZWN1cnNpdmVVcGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsKFJlbmRlckdlb21ldHJ5TWFw
KiBnZQogICAgIGJvb2wgaXNWaXN1YWxseUVtcHR5ID0gIWlzVmlzdWFsbHlOb25FbXB0eSgpOwog
ICAgIGJvb2wgc2hvdWxkUHVzaEFuZFBvcE1hcHBpbmdzID0gZ2VvbWV0cnlNYXAgJiYgKChzaG91
bGRDb21wdXRlUmVwYWludFJlY3RzICYmICFpc1Zpc3VhbGx5RW1wdHkpIHx8IGZpcnN0Q2hpbGQo
KSk7CiAgICAgaWYgKHNob3VsZFB1c2hBbmRQb3BNYXBwaW5ncykKLSAgICAgICAgZ2VvbWV0cnlN
YXAtPnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IodGhpcywgcGFyZW50KCkpOworICAgICAgICBnZW9t
ZXRyeU1hcC0+cHVzaE1hcHBpbmdzVG9BbmNlc3Rvcih0aGlzLCBlbmNsb3NpbmdMYXllcik7CiAK
ICAgICBpZiAoc2hvdWxkQ29tcHV0ZVJlcGFpbnRSZWN0cykgewogICAgICAgICAvLyBXaGVuIHNj
cm9sbGluZywgd2UgZG9uJ3QgY29tcHV0ZSByZXBhaW50IHJlY3RzIGZvciB2aXN1YWxseSBub24t
ZW1wdHkgbGF5ZXJzLgpAQCAtMTIyNyw4ICsxMjM4LDE3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJl
Y3Vyc2l2ZVVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGwoUmVuZGVyR2VvbWV0cnlNYXAq
IGdlCiAgICAgICAgIEFTU0VSVF9JTVBMSUVTKG1fcmVwYWludFJlY3RzVmFsaWQsIG1fcmVwYWlu
dFJlY3RzLm91dGxpbmVCb3VuZHNSZWN0ID09IHJlbmRlcmVyKCkub3V0bGluZUJvdW5kc0ZvclJl
cGFpbnQocmVuZGVyZXIoKS5jb250YWluZXJGb3JSZXBhaW50KCkpKTsKICAgICB9CiAgICAgCi0g
ICAgZm9yIChSZW5kZXJMYXllciogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKQotICAgICAgICBjaGlsZC0+cmVjdXJzaXZlVXBkYXRlTGF5
ZXJQb3NpdGlvbnNBZnRlclNjcm9sbChnZW9tZXRyeU1hcCwgZmxhZ3MpOworICAgIGZvciAoYXV0
byogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGlu
ZygpKSB7CisgICAgICAgIGlmIChjaGlsZC0+ZXN0YWJsaXNoZXNUb3BMYXllcigpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgY2hpbGQtPnJlY3Vyc2l2ZVVwZGF0ZUxheWVyUG9z
aXRpb25zQWZ0ZXJTY3JvbGwoZ2VvbWV0cnlNYXAsIHRoaXMsIGZsYWdzKTsKKyAgICB9CisKKyAg
ICBpZiAoaXNSZW5kZXJWaWV3TGF5ZXIoKSkgeworICAgICAgICBmb3IgKGF1dG8qIGxheWVyIDog
dG9wTGF5ZXJSZW5kZXJMYXllcnMocmVuZGVyZXIoKS52aWV3KCkpKQorICAgICAgICAgICAgbGF5
ZXItPnJlY3Vyc2l2ZVVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGwoZ2VvbWV0cnlNYXAs
IHRoaXMsIGZsYWdzKTsKKyAgICB9CiAKICAgICAvLyBXZSBkb24ndCB1cGRhdGUgb3VyIHJlZmxl
Y3Rpb24gYXMgc2Nyb2xsaW5nIGlzIGEgdHJhbnNsYXRpb24gd2hpY2ggZG9lcyBub3QgY2hhbmdl
IHRoZSBzaXplKCkKICAgICAvLyBvZiBhbiBvYmplY3QsIHRodXMgUmVuZGVyUmVwbGljYSB3aWxs
IHN0aWxsIHJlcGFpbnQgaXRzZWxmIHByb3Blcmx5IGFzIHRoZSBsYXllciBwb3NpdGlvbiB3YXMK
QEAgLTEyMzgsNyArMTI1OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJlY3Vyc2l2ZVVwZGF0ZUxh
eWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGwoUmVuZGVyR2VvbWV0cnlNYXAqIGdlCiAgICAgICAgIG1f
c2Nyb2xsYWJsZUFyZWEtPnVwZGF0ZU1hcnF1ZWVQb3NpdGlvbigpOwogCiAgICAgaWYgKHNob3Vs
ZFB1c2hBbmRQb3BNYXBwaW5ncykKLSAgICAgICAgZ2VvbWV0cnlNYXAtPnBvcE1hcHBpbmdzVG9B
bmNlc3RvcihwYXJlbnQoKSk7CisgICAgICAgIGdlb21ldHJ5TWFwLT5wb3BNYXBwaW5nc1RvQW5j
ZXN0b3IoZW5jbG9zaW5nTGF5ZXIpOwogfQogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykK
QEAgLTQwMDUsNiArNDAyNSwyNSBAQCBFbGVtZW50KiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nRWxl
bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1ZlY3RvcjxSZW5kZXJMYXll
cio+IFJlbmRlckxheWVyOjp0b3BMYXllclJlbmRlckxheWVycyhSZW5kZXJWaWV3JiByZW5kZXJW
aWV3KQoreworICAgIFZlY3RvcjxSZW5kZXJMYXllcio+IGxheWVyczsKKyAgICBhdXRvIHRvcExh
eWVyRWxlbWVudHMgPSByZW5kZXJWaWV3LmRvY3VtZW50KCkudG9wTGF5ZXJFbGVtZW50cygpOwor
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IHRvcExheWVyRWxlbWVudHMpIHsKKyAgICAgICAgYXV0
byogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOworICAgICAgICBpZiAoIXJlbmRlcmVy
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBiYWNrZHJvcFJlbmRlcmVy
ID0gcmVuZGVyZXItPmJhY2tkcm9wUmVuZGVyZXIoKTsKKyAgICAgICAgaWYgKGJhY2tkcm9wUmVu
ZGVyZXIgJiYgYmFja2Ryb3BSZW5kZXJlci0+aGFzTGF5ZXIoKSkKKyAgICAgICAgICAgIGxheWVy
cy5hcHBlbmQoYmFja2Ryb3BSZW5kZXJlci0+bGF5ZXIoKSk7CisKKyAgICAgICAgaWYgKHJlbmRl
cmVyLT5oYXNMYXllcigpKQorICAgICAgICAgICAgbGF5ZXJzLmFwcGVuZChkb3duY2FzdDxSZW5k
ZXJMYXllck1vZGVsT2JqZWN0PigqcmVuZGVyZXIpLmxheWVyKCkpOworICAgIH0KKyAgICByZXR1
cm4gbGF5ZXJzOworfQorCiBib29sIFJlbmRlckxheWVyOjplc3RhYmxpc2hlc1RvcExheWVyKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gaXNJblRvcExheWVyT3JCYWNrZHJvcChyZW5kZXJlcigpLnN0
eWxlKCksIHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKaW5kZXggMmIwNDUxYWVjYjYxMDliMGEyZGM4ZTRiODVhNzAzMmM0MjkyM2VhZi4u
NWIwMmViYWZjMWUxMjBmZWUxNTc5MjcxZTNlNjk0YzUxNzllNjgyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTgyMCw2ICs4MjAsOCBAQCBwdWJsaWM6CiAKICAg
ICBFbGVtZW50KiBlbmNsb3NpbmdFbGVtZW50KCkgY29uc3Q7CiAKKyAgICBzdGF0aWMgVmVjdG9y
PFJlbmRlckxheWVyKj4gdG9wTGF5ZXJSZW5kZXJMYXllcnMoUmVuZGVyVmlldyYpOworCiAgICAg
Ym9vbCBlc3RhYmxpc2hlc1RvcExheWVyKCkgY29uc3Q7CiAgICAgdm9pZCBlc3RhYmxpc2hlc1Rv
cExheWVyV2lsbENoYW5nZSgpOwogICAgIHZvaWQgZXN0YWJsaXNoZXNUb3BMYXllckRpZENoYW5n
ZSgpOwpAQCAtOTU0LDcgKzk1Niw3IEBAIHByaXZhdGU6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBwb3NpdGlvbiBjaGFuZ2VkLgogICAgIGJvb2wgdXBkYXRlTGF5ZXJQb3NpdGlvbihPcHRp
b25TZXQ8VXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFnPiogPSBudWxscHRyKTsKIAotICAgIHZvaWQg
cmVjdXJzaXZlVXBkYXRlTGF5ZXJQb3NpdGlvbnMoUmVuZGVyR2VvbWV0cnlNYXAqLCBPcHRpb25T
ZXQ8VXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFnPik7CisgICAgdm9pZCByZWN1cnNpdmVVcGRhdGVM
YXllclBvc2l0aW9ucyhSZW5kZXJHZW9tZXRyeU1hcCosIFJlbmRlckxheWVyKiBlbmNsb3NpbmdM
YXllciwgT3B0aW9uU2V0PFVwZGF0ZUxheWVyUG9zaXRpb25zRmxhZz4pOwogCiAgICAgZW51bSBV
cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsRmxhZyB7CiAgICAgICAgIElzT3ZlcmZsb3dT
Y3JvbGwgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKQEAgLTk2Miw3ICs5NjQsNyBA
QCBwcml2YXRlOgogICAgICAgICBIYXNTZWVuQW5jZXN0b3JXaXRoT3ZlcmZsb3dDbGlwICAgICAg
ICAgPSAxIDw8IDIsCiAgICAgICAgIEhhc0NoYW5nZWRBbmNlc3RvciAgICAgICAgICAgICAgICAg
ICAgICA9IDEgPDwgMywKICAgICB9OwotICAgIHZvaWQgcmVjdXJzaXZlVXBkYXRlTGF5ZXJQb3Np
dGlvbnNBZnRlclNjcm9sbChSZW5kZXJHZW9tZXRyeU1hcCosIE9wdGlvblNldDxVcGRhdGVMYXll
clBvc2l0aW9uc0FmdGVyU2Nyb2xsRmxhZz4gPSB7IH0pOworICAgIHZvaWQgcmVjdXJzaXZlVXBk
YXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbChSZW5kZXJHZW9tZXRyeU1hcCosIFJlbmRlckxh
eWVyKiBlbmNsb3NpbmdMYXllciwgT3B0aW9uU2V0PFVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJT
Y3JvbGxGbGFnPiA9IHsgfSk7CiAKICAgICBSZW5kZXJMYXllciogZW5jbG9zaW5nUGFnaW5hdGlv
bkxheWVySW5TdWJ0cmVlKGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFBhZ2luYXRpb25J
bmNsdXNpb25Nb2RlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhjMmMzM2JiZWExMTdjYjkxYzVlNTVjZjRi
Nzk2ODg3YjYxY2E5MTQuLjQ3NDU1MTJmNzM2YmZlMGRkODY0OGFmNDMzMmJiZmIwYjUxNDk4ZGEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMi0wMS0xMyAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICA8ZGlhbG9nPiB3aXRoIHRyYW5zZm9ybWVkIGFu
Y2VzdG9yIGFzc2VydHMgdW5kZXIgUmVuZGVyR2VvbWV0cnlNYXAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTE5NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKwogMjAy
Mi0wMS0xMiAgUmF6dmFuIENhbGltYW4gIDxyY2FsaW1hbkBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogVW5oYW5kbGVkIGV4Y2VwdGlvbiB3aGVuIG1vdmluZyBjdXJzb3IgbWlk
LXRva2VuIGFmdGVyIHJlY2VpdmluZyBDU1MgcHJvcGVydHkgbmFtZSBjb21wbGV0aW9ucwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggMjgzMGIwZDNhY2QzMTdjZWFmNTJjZDlhZmVkMmY0YTg0MjlkMWZj
NC4uZjFlNTU0MTdjMzg1Y2ZlZGJkYmFlMmVjMDZkY2E4ZmM1Nzc3MWExZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCkBAIC0yMzc1LDggKzIzNzUsNiBAQCBmYXN0L211bHRpY29sL211bHRpY29sLXdpdGgt
Y2hpbGQtcmVuZGVyTGF5ZXItZm9yLWlucHV0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlCiAjIFRv
cCBsYXllciB0ZXN0cwogd2Via2l0Lm9yZy9iLzIyOTMxNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ct
ZWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tcmVwbGFjZWQtcmVuZGVyZXIuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIyOTMxNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ctZWxl
bWVudC9tb2RhbC1kaWFsb2ctaW4tdGFibGUtY29sdW1uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLSMgTmVlZHMgbGF5ZXIgcmUtcGFyZW50aW5nCi13ZWJraXQub3JnL2IvMjM0OTgwIFsgRGVi
dWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVy
YWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ctZWxlbWVudC90b3AtbGF5ZXItcGFyZW50LXRyYW5z
Zm9ybS5odG1sIFsgQ3Jhc2ggXQogCiAjIEFzc2VydGlvbiBmYWlsdXJlIGluIE1lc3NhZ2VQb3J0
Ojpjb250ZXh0RGVzdHJveWVkLCB1c3VhbGx5IGF0dHJpYnV0ZWQgdG8gbGF0ZXIgdGVzdHMKIHdl
YmtpdC5vcmcvYi85NDQ1OCBodHRwL3Rlc3RzL3NlY3VyaXR5L01lc3NhZ2VQb3J0L2V2ZW50LWxp
c3RlbmVyLWNvbnRleHQuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449398</attachid>
            <date>2022-01-18 09:32:49 -0800</date>
            <delta_ts>2022-01-19 11:16:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235194-20220118093248.patch</filename>
            <type>text/plain</type>
            <size>13943</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzMyODdhMGRmMmIyNGE1
YWQzZDM0ZTg4MjFkYTU2ZjdkNTM4NThkYy4uOTFiYjhkZTk3M2NlMGViOGNhYjJiZTA5YTFhYzUy
ZThlYjFkZWQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIyLTAxLTE4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIDxkaWFsb2c+IHdp
dGggdHJhbnNmb3JtZWQgYW5jZXN0b3IgYXNzZXJ0cyB1bmRlciBSZW5kZXJHZW9tZXRyeU1hcAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MTk0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwYXJlbnQg
bW9kYWwgZGlhbG9nIGxheWVycy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmROZXh0TGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6bGF5ZXJOZXh0U2libGluZ1Jlc3BlY3RpbmdUb3BMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjphZGRMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6bGF5ZXJQYXJl
bnRSZXNwZWN0aW5nVG9wTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxl
bWVudDo6bGF5ZXJOZXh0U2libGluZ1Jlc3BlY3RpbmdUb3BMYXllciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckVsZW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpmaW5kTmV4dExheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aW5zZXJ0T25s
eVRoaXNMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZXN0YWJsaXNoZXNU
b3BMYXllcldpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmVzdGFi
bGlzaGVzVG9wTGF5ZXJEaWRDaGFuZ2UpOgorCiAyMDIyLTAxLTE1ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIHNvbWUgY29kZSBhcm91
bmQgUmVuZGVyRWxlbWVudDo6YWRkTGF5ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcAppbmRleCA1MTg2NDllNDgxNWVhNmNhYzA1N2FlYzlmNDI2ODFlNjc1
NmE0YjA3Li43ZDhlOTc0Mzg2ZDAzOTNlYjhkZTY5YjJkNDk2MmViMTU1ODE3MjRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC02MzQsMTEgKzYzNCw2
MCBAQCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBSZW5kZXJFbGVtZW50OjpkZXRhY2hSZW5kZXJl
ckludGVybmFsKFJlbmRlck9iamVjdCYgcmVuZAogICAgIHJldHVybiBSZW5kZXJQdHI8UmVuZGVy
T2JqZWN0PigmcmVuZGVyZXIpOwogfQogCitzdGF0aWMgUmVuZGVyTGF5ZXIqIGZpbmROZXh0TGF5
ZXIoY29uc3QgUmVuZGVyRWxlbWVudCYgY3VyclJlbmRlcmVyLCBSZW5kZXJMYXllciYgcGFyZW50
TGF5ZXIsIGNvbnN0IFJlbmRlck9iamVjdCogc2libGluZ1RvVHJhdmVyc2VGcm9tLCBib29sIGNo
ZWNrUGFyZW50ID0gdHJ1ZSkKK3sKKyAgICAvLyBTdGVwIDE6IElmIG91ciBsYXllciBpcyBhIGNo
aWxkIG9mIHRoZSBkZXNpcmVkIHBhcmVudCwgdGhlbiByZXR1cm4gb3VyIGxheWVyLgorICAgIGF1
dG8qIG91ckxheWVyID0gY3VyclJlbmRlcmVyLmhhc0xheWVyKCkgPyBkb3duY2FzdDxSZW5kZXJM
YXllck1vZGVsT2JqZWN0PihjdXJyUmVuZGVyZXIpLmxheWVyKCkgOiBudWxscHRyOworICAgIGlm
IChvdXJMYXllciAmJiBvdXJMYXllci0+cGFyZW50KCkgPT0gJnBhcmVudExheWVyKQorICAgICAg
ICByZXR1cm4gb3VyTGF5ZXI7CisKKyAgICAvLyBTdGVwIDI6IElmIHdlIGRvbid0IGhhdmUgYSBs
YXllciwgb3Igb3VyIGxheWVyIGlzIHRoZSBkZXNpcmVkIHBhcmVudCwgdGhlbiBkZXNjZW5kCisg
ICAgLy8gaW50byBvdXIgc2libGluZ3MgdHJ5aW5nIHRvIGZpbmQgdGhlIG5leHQgbGF5ZXIgd2hv
c2UgcGFyZW50IGlzIHRoZSBkZXNpcmVkIHBhcmVudC4KKyAgICBpZiAoIW91ckxheWVyIHx8IG91
ckxheWVyID09ICZwYXJlbnRMYXllcikgeworICAgICAgICBmb3IgKGF1dG8qIGNoaWxkID0gc2li
bGluZ1RvVHJhdmVyc2VGcm9tID8gc2libGluZ1RvVHJhdmVyc2VGcm9tLT5uZXh0U2libGluZygp
IDogY3VyclJlbmRlcmVyLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRT
aWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlmICghaXM8UmVuZGVyRWxlbWVudD4oKmNoaWxkKSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChhdXRvKiBuZXh0TGF5
ZXIgPSBmaW5kTmV4dExheWVyKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCksIHBhcmVu
dExheWVyLCBudWxscHRyLCBmYWxzZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5leHRMYXll
cjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFN0ZXAgMzogSWYgb3VyIGxheWVyIGlzIHRo
ZSBkZXNpcmVkIHBhcmVudCBsYXllciwgdGhlbiB3ZSdyZSBmaW5pc2hlZC4gV2UgZGlkbid0Cisg
ICAgLy8gZmluZCBhbnl0aGluZy4KKyAgICBpZiAob3VyTGF5ZXIgPT0gJnBhcmVudExheWVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFN0ZXAgNDogSWYgfGNoZWNrUGFyZW50
fCBpcyBzZXQsIGNsaW1iIHVwIHRvIG91ciBwYXJlbnQgYW5kIGNoZWNrIGl0cyBzaWJsaW5ncyB0
aGF0CisgICAgLy8gZm9sbG93IHVzIHRvIHNlZSBpZiB3ZSBjYW4gbG9jYXRlIGEgbGF5ZXIuCisg
ICAgaWYgKGNoZWNrUGFyZW50ICYmIGN1cnJSZW5kZXJlci5wYXJlbnQoKSkKKyAgICAgICAgcmV0
dXJuIGZpbmROZXh0TGF5ZXIoKmN1cnJSZW5kZXJlci5wYXJlbnQoKSwgcGFyZW50TGF5ZXIsICZj
dXJyUmVuZGVyZXIsIHRydWUpOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBS
ZW5kZXJMYXllciogbGF5ZXJOZXh0U2libGluZ1Jlc3BlY3RpbmdUb3BMYXllcihjb25zdCBSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgUmVuZGVyTGF5ZXImIHBhcmVudExheWVyKQoreworICAgIEFT
U0VSVF9JTVBMSUVTKGlzSW5Ub3BMYXllck9yQmFja2Ryb3AocmVuZGVyZXIuc3R5bGUoKSwgcmVu
ZGVyZXIuZWxlbWVudCgpKSwgcmVuZGVyZXIuaGFzTGF5ZXIoKSk7CisKKyAgICBpZiAoaXM8UmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdD4ocmVuZGVyZXIpICYmIGlzSW5Ub3BMYXllck9yQmFja2Ryb3Ao
cmVuZGVyZXIuc3R5bGUoKSwgcmVuZGVyZXIuZWxlbWVudCgpKSkgeworICAgICAgICBhdXRvJiBs
YXllck1vZGVsT2JqZWN0ID0gZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4ocmVuZGVy
ZXIpOworICAgICAgICBBU1NFUlQobGF5ZXJNb2RlbE9iamVjdC5oYXNMYXllcigpKTsKKyAgICAg
ICAgYXV0byB0b3BMYXllckxheWVycyA9IFJlbmRlckxheWVyOjp0b3BMYXllclJlbmRlckxheWVy
cyhyZW5kZXJlci52aWV3KCkpOworICAgICAgICBhdXRvIGxheWVySW5kZXggPSB0b3BMYXllckxh
eWVycy5maW5kKGxheWVyTW9kZWxPYmplY3QubGF5ZXIoKSk7CisgICAgICAgIGlmIChsYXllcklu
ZGV4ICE9IG5vdEZvdW5kICYmIGxheWVySW5kZXggPCB0b3BMYXllckxheWVycy5zaXplKCkgLSAx
KQorICAgICAgICAgICAgcmV0dXJuIHRvcExheWVyTGF5ZXJzW2xheWVySW5kZXggKyAxXTsKKwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gZmluZE5leHRMYXll
cigqcmVuZGVyZXIucGFyZW50KCksIHBhcmVudExheWVyLCAmcmVuZGVyZXIpOworfQorCiBzdGF0
aWMgdm9pZCBhZGRMYXllcnMoY29uc3QgUmVuZGVyRWxlbWVudCYgYWRkZWRSZW5kZXJlciwgUmVu
ZGVyRWxlbWVudCYgY3VycmVudFJlbmRlcmVyLCBSZW5kZXJMYXllciYgcGFyZW50TGF5ZXIsIHN0
ZDo6b3B0aW9uYWw8UmVuZGVyTGF5ZXIqPiYgYmVmb3JlQ2hpbGQpCiB7CiAgICAgaWYgKGN1cnJl
bnRSZW5kZXJlci5oYXNMYXllcigpKSB7CiAgICAgICAgIGlmICghYmVmb3JlQ2hpbGQuaGFzX3Zh
bHVlKCkpCi0gICAgICAgICAgICBiZWZvcmVDaGlsZCA9IGFkZGVkUmVuZGVyZXIucGFyZW50KCkt
PmZpbmROZXh0TGF5ZXIocGFyZW50TGF5ZXIsICZhZGRlZFJlbmRlcmVyKTsKKyAgICAgICAgICAg
IGJlZm9yZUNoaWxkID0gbGF5ZXJOZXh0U2libGluZ1Jlc3BlY3RpbmdUb3BMYXllcihhZGRlZFJl
bmRlcmVyLCBwYXJlbnRMYXllcik7CiAKICAgICAgICAgcGFyZW50TGF5ZXIuYWRkQ2hpbGQoKmRv
d25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KGN1cnJlbnRSZW5kZXJlcikubGF5ZXIoKSwg
YmVmb3JlQ2hpbGQudmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTY4NiwzNSArNzM1LDIw
IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6bW92ZUxheWVycyhSZW5kZXJMYXllciogb2xkUGFyZW50
LCBSZW5kZXJMYXllciYgbmV3UGFyZW50KQogICAgICAgICBjaGlsZC5tb3ZlTGF5ZXJzKG9sZFBh
cmVudCwgbmV3UGFyZW50KTsKIH0KIAotUmVuZGVyTGF5ZXIqIFJlbmRlckVsZW1lbnQ6OmZpbmRO
ZXh0TGF5ZXIoUmVuZGVyTGF5ZXImIHBhcmVudExheWVyLCBjb25zdCBSZW5kZXJPYmplY3QqIHNp
YmxpbmdUb1RyYXZlcnNlRnJvbSwgYm9vbCBjaGVja1BhcmVudCkgY29uc3QKK1JlbmRlckxheWVy
KiBSZW5kZXJFbGVtZW50OjpsYXllclBhcmVudFJlc3BlY3RpbmdUb3BMYXllcigpIGNvbnN0CiB7
Ci0gICAgLy8gU3RlcCAxOiBJZiBvdXIgbGF5ZXIgaXMgYSBjaGlsZCBvZiB0aGUgZGVzaXJlZCBw
YXJlbnQsIHRoZW4gcmV0dXJuIG91ciBsYXllci4KLSAgICBhdXRvKiBvdXJMYXllciA9IGhhc0xh
eWVyKCkgPyBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKSA6
IG51bGxwdHI7Ci0gICAgaWYgKG91ckxheWVyICYmIG91ckxheWVyLT5wYXJlbnQoKSA9PSAmcGFy
ZW50TGF5ZXIpCi0gICAgICAgIHJldHVybiBvdXJMYXllcjsKKyAgICBBU1NFUlRfSU1QTElFUyhp
c0luVG9wTGF5ZXJPckJhY2tkcm9wKHN0eWxlKCksIGVsZW1lbnQoKSksIGhhc0xheWVyKCkpOwog
Ci0gICAgLy8gU3RlcCAyOiBJZiB3ZSBkb24ndCBoYXZlIGEgbGF5ZXIsIG9yIG91ciBsYXllciBp
cyB0aGUgZGVzaXJlZCBwYXJlbnQsIHRoZW4gZGVzY2VuZAotICAgIC8vIGludG8gb3VyIHNpYmxp
bmdzIHRyeWluZyB0byBmaW5kIHRoZSBuZXh0IGxheWVyIHdob3NlIHBhcmVudCBpcyB0aGUgZGVz
aXJlZCBwYXJlbnQuCi0gICAgaWYgKCFvdXJMYXllciB8fCBvdXJMYXllciA9PSAmcGFyZW50TGF5
ZXIpIHsKLSAgICAgICAgZm9yIChhdXRvKiBjaGlsZCA9IHNpYmxpbmdUb1RyYXZlcnNlRnJvbSA/
IHNpYmxpbmdUb1RyYXZlcnNlRnJvbS0+bmV4dFNpYmxpbmcoKSA6IGZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmICghaXM8
UmVuZGVyRWxlbWVudD4oKmNoaWxkKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIGlmIChhdXRvKiBuZXh0TGF5ZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqY2hp
bGQpLmZpbmROZXh0TGF5ZXIocGFyZW50TGF5ZXIsIG51bGxwdHIsIGZhbHNlKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV4dExheWVyOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmIChoYXNM
YXllcigpICYmIGlzSW5Ub3BMYXllck9yQmFja2Ryb3Aoc3R5bGUoKSwgZWxlbWVudCgpKSkKKyAg
ICAgICAgcmV0dXJuIHZpZXcoKS5sYXllcigpOwogCi0gICAgLy8gU3RlcCAzOiBJZiBvdXIgbGF5
ZXIgaXMgdGhlIGRlc2lyZWQgcGFyZW50IGxheWVyLCB0aGVuIHdlJ3JlIGZpbmlzaGVkLiBXZSBk
aWRuJ3QKLSAgICAvLyBmaW5kIGFueXRoaW5nLgotICAgIGlmIChvdXJMYXllciA9PSAmcGFyZW50
TGF5ZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgLy8gU3RlcCA0OiBJZiB8Y2hl
Y2tQYXJlbnR8IGlzIHNldCwgY2xpbWIgdXAgdG8gb3VyIHBhcmVudCBhbmQgY2hlY2sgaXRzIHNp
YmxpbmdzIHRoYXQKLSAgICAvLyBmb2xsb3cgdXMgdG8gc2VlIGlmIHdlIGNhbiBsb2NhdGUgYSBs
YXllci4KLSAgICBpZiAoY2hlY2tQYXJlbnQgJiYgcGFyZW50KCkpCi0gICAgICAgIHJldHVybiBw
YXJlbnQoKS0+ZmluZE5leHRMYXllcihwYXJlbnRMYXllciwgdGhpcywgdHJ1ZSk7CisgICAgcmV0
dXJuIHBhcmVudCgpLT5lbmNsb3NpbmdMYXllcigpOworfQogCi0gICAgcmV0dXJuIG51bGxwdHI7
CisvLyBUaGlzIGFuc3dlcnMgdGhlIHF1ZXN0aW9uICJpZiB0aGlzIHJlbmRlcmVyIGhhZCBhIGxh
eWVyLCB3aGF0IHdvdWxkIGl0cyBuZXh0IHNpYmxpbmcgbGF5ZXIgYmUiLgorUmVuZGVyTGF5ZXIq
IFJlbmRlckVsZW1lbnQ6OmxheWVyTmV4dFNpYmxpbmdSZXNwZWN0aW5nVG9wTGF5ZXIoUmVuZGVy
TGF5ZXImIHBhcmVudExheWVyKSBjb25zdAoreworICAgIHJldHVybiBXZWJDb3JlOjpsYXllck5l
eHRTaWJsaW5nUmVzcGVjdGluZ1RvcExheWVyKCp0aGlzLCBwYXJlbnRMYXllcik7CiB9CiAKIGJv
b2wgUmVuZGVyRWxlbWVudDo6bGF5ZXJDcmVhdGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkgY29uc3QK
QEAgLTk2MSwxOSArOTk1LDE5IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJl
ZShJc0ludGVybmFsTW92ZSBpc0ludGVybmFsTW92ZSkKIHsKICAgICAvLyBLZWVwIG91ciBsYXll
ciBoaWVyYXJjaHkgdXBkYXRlZC4gT3B0aW1pemUgZm9yIHRoZSBjb21tb24gY2FzZSB3aGVyZSB3
ZSBkb24ndCBoYXZlIGFueSBjaGlsZHJlbgogICAgIC8vIGFuZCBkb24ndCBoYXZlIGEgbGF5ZXIg
YXR0YWNoZWQgdG8gb3Vyc2VsdmVzLgotICAgIFJlbmRlckxheWVyKiBsYXllciA9IG51bGxwdHI7
CisgICAgUmVuZGVyTGF5ZXIqIHBhcmVudExheWVyID0gbnVsbHB0cjsKICAgICBpZiAoZmlyc3RD
aGlsZCgpIHx8IGhhc0xheWVyKCkpIHsKLSAgICAgICAgbGF5ZXIgPSBwYXJlbnQoKS0+ZW5jbG9z
aW5nTGF5ZXIoKTsKLSAgICAgICAgYWRkTGF5ZXJzKGxheWVyKTsKKyAgICAgICAgYXV0byogcGFy
ZW50TGF5ZXIgPSBsYXllclBhcmVudFJlc3BlY3RpbmdUb3BMYXllcigpOworICAgICAgICBhZGRM
YXllcnMocGFyZW50TGF5ZXIpOwogICAgIH0KIAogICAgIC8vIElmIHx0aGlzfCBpcyB2aXNpYmxl
IGJ1dCB0aGlzIG9iamVjdCB3YXMgbm90LCB0ZWxsIHRoZSBsYXllciBpdCBoYXMgc29tZSB2aXNp
YmxlIGNvbnRlbnQKICAgICAvLyB0aGF0IG5lZWRzIHRvIGJlIGRyYXduIGFuZCBsYXllciB2aXNp
YmlsaXR5IG9wdGltaXphdGlvbiBjYW4ndCBiZSB1c2VkCiAgICAgaWYgKHBhcmVudCgpLT5zdHls
ZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmIHN0eWxlKCkudmlzaWJp
bGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIWhhc0xheWVyKCkpIHsKLSAgICAgICAg
aWYgKCFsYXllcikKLSAgICAgICAgICAgIGxheWVyID0gcGFyZW50KCktPmVuY2xvc2luZ0xheWVy
KCk7Ci0gICAgICAgIGlmIChsYXllcikKLSAgICAgICAgICAgIGxheWVyLT5kaXJ0eVZpc2libGVD
b250ZW50U3RhdHVzKCk7CisgICAgICAgIGlmICghcGFyZW50TGF5ZXIpCisgICAgICAgICAgICBw
YXJlbnRMYXllciA9IGxheWVyUGFyZW50UmVzcGVjdGluZ1RvcExheWVyKCk7CisgICAgICAgIGlm
IChwYXJlbnRMYXllcikKKyAgICAgICAgICAgIHBhcmVudExheWVyLT5kaXJ0eVZpc2libGVDb250
ZW50U3RhdHVzKCk7CiAgICAgfQogCiAgICAgUmVuZGVyT2JqZWN0OjppbnNlcnRlZEludG9UcmVl
KGlzSW50ZXJuYWxNb3ZlKTsKQEAgLTk4MiwxNiArMTAxNiwxNSBAQCB2b2lkIFJlbmRlckVsZW1l
bnQ6Omluc2VydGVkSW50b1RyZWUoSXNJbnRlcm5hbE1vdmUgaXNJbnRlcm5hbE1vdmUpCiB2b2lk
IFJlbmRlckVsZW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9tVHJlZShJc0ludGVybmFsTW92ZSBpc0lu
dGVybmFsTW92ZSkKIHsKICAgICAvLyBJZiB3ZSByZW1vdmUgYSB2aXNpYmxlIGNoaWxkIGZyb20g
YW4gaW52aXNpYmxlIHBhcmVudCwgd2UgZG9uJ3Qga25vdyB0aGUgbGF5ZXIgdmlzaWJpbGl0eSBh
bnkgbW9yZS4KLSAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBudWxscHRyOwogICAgIGlmIChwYXJl
bnQoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiBzdHls
ZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFoYXNMYXllcigpKSB7
Ci0gICAgICAgIGlmICgobGF5ZXIgPSBwYXJlbnQoKS0+ZW5jbG9zaW5nTGF5ZXIoKSkpCi0gICAg
ICAgICAgICBsYXllci0+ZGlydHlWaXNpYmxlQ29udGVudFN0YXR1cygpOworICAgICAgICAvLyBG
SVhNRTogc2hvdWxkIGdldCBwYXJlbnQgbGF5ZXIuIE5lY2Vzc2FyeT8KKyAgICAgICAgaWYgKGF1
dG8qIGVuY2xvc2luZ0xheWVyID0gcGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCkpCisgICAgICAg
ICAgICBlbmNsb3NpbmdMYXllci0+ZGlydHlWaXNpYmxlQ29udGVudFN0YXR1cygpOwogICAgIH0K
ICAgICAvLyBLZWVwIG91ciBsYXllciBoaWVyYXJjaHkgdXBkYXRlZC4KICAgICBpZiAoZmlyc3RD
aGlsZCgpIHx8IGhhc0xheWVyKCkpIHsKLSAgICAgICAgaWYgKCFsYXllcikKLSAgICAgICAgICAg
IGxheWVyID0gcGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgICAgIHJlbW92ZUxheWVy
cyhsYXllcik7CisgICAgICAgIGF1dG8qIHBhcmVudExheWVyID0gbGF5ZXJQYXJlbnRSZXNwZWN0
aW5nVG9wTGF5ZXIoKTsKKyAgICAgICAgcmVtb3ZlTGF5ZXJzKHBhcmVudExheWVyKTsKICAgICB9
CiAKICAgICBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgcGFyZW50KCktPmNoaWxkcmVu
SW5saW5lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCBm
NWUxNmEyMjI5YTdkOTQ4ZGY3MmJkNWQ0ZjgyNzlmZGY2Njk1ODcwLi4wZWFlY2IwZDI4Nzc1ODlk
M2ZjNmFkNGY2MjczN2VmOGJjMWNmNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmgKQEAgLTEwOCwxMCArMTA4LDEyIEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZm9s
bG93aW5nIGZ1bmN0aW9ucyBhcmUgdXNlZCB3aGVuIHRoZSByZW5kZXIgdHJlZSBoaWVyYXJjaHkg
Y2hhbmdlcyB0byBtYWtlIHN1cmUgbGF5ZXJzIGdldAogICAgIC8vIHByb3Blcmx5IGFkZGVkIGFu
ZCByZW1vdmVkLiBTaW5jZSBjb250YWluZXJzaGlwIGNhbiBiZSBpbXBsZW1lbnRlZCBieSBhbnkg
c3ViY2xhc3MsIGFuZCBzaW5jZSBhIGhpZXJhcmNoeQogICAgIC8vIGNhbiBjb250YWluIGEgbWl4
dHVyZSBvZiBib3hlcyBhbmQgb3RoZXIgb2JqZWN0IHR5cGVzLCB0aGVzZSBmdW5jdGlvbnMgbmVl
ZCB0byBiZSBpbiB0aGUgYmFzZSBjbGFzcy4KKyAgICBSZW5kZXJMYXllciogbGF5ZXJQYXJlbnRS
ZXNwZWN0aW5nVG9wTGF5ZXIoKSBjb25zdDsKKyAgICBSZW5kZXJMYXllciogbGF5ZXJOZXh0U2li
bGluZ1Jlc3BlY3RpbmdUb3BMYXllcihSZW5kZXJMYXllciYgcGFyZW50TGF5ZXIpIGNvbnN0Owor
CiAgICAgdm9pZCBhZGRMYXllcnMoUmVuZGVyTGF5ZXIqIHBhcmVudExheWVyKTsKICAgICB2b2lk
IHJlbW92ZUxheWVycyhSZW5kZXJMYXllciogcGFyZW50TGF5ZXIpOwogICAgIHZvaWQgbW92ZUxh
eWVycyhSZW5kZXJMYXllciogb2xkUGFyZW50LCBSZW5kZXJMYXllciYgbmV3UGFyZW50KTsKLSAg
ICBSZW5kZXJMYXllciogZmluZE5leHRMYXllcihSZW5kZXJMYXllciYgcGFyZW50TGF5ZXIsIGNv
bnN0IFJlbmRlck9iamVjdCogc2libGluZ1RvVHJhdmVyc2VGcm9tLCBib29sIGNoZWNrUGFyZW50
ID0gdHJ1ZSkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlydHlMaW5lc0Zyb21DaGFuZ2Vk
Q2hpbGQoUmVuZGVyT2JqZWN0JikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCmluZGV4IGFiNzRmZjRmODViZDg5ZTljMGE1NDYzNjk1MzFjZjk2ODhlYTI0MjQu
Ljk2MDQ2MWVhOTY1OTc5MjFhYzI3OWY0YTQxM2I5NWEyYWM4MzVhZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNDgzLDExICs0ODMsMTEgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6aW5zZXJ0T25seVRoaXNMYXllcihMYXllckNoYW5nZVRpbWluZyB0aW1pbmcp
CiAgICAgaWYgKCFtX3BhcmVudCAmJiByZW5kZXJlcigpLnBhcmVudCgpKSB7CiAgICAgICAgIC8v
IFdlIG5lZWQgdG8gY29ubmVjdCBvdXJzZWx2ZXMgd2hlbiBvdXIgcmVuZGVyZXIoKSBoYXMgYSBw
YXJlbnQuCiAgICAgICAgIC8vIEZpbmQgb3VyIGVuY2xvc2luZ0xheWVyIGFuZCBhZGQgb3Vyc2Vs
dmVzLgotICAgICAgICBhdXRvKiBwYXJlbnRMYXllciA9IHJlbmRlcmVyKCkucGFyZW50KCktPmVu
Y2xvc2luZ0xheWVyKCk7CisgICAgICAgIGF1dG8qIHBhcmVudExheWVyID0gcmVuZGVyZXIoKS5s
YXllclBhcmVudFJlc3BlY3RpbmdUb3BMYXllcigpOwogICAgICAgICBpZiAoIXBhcmVudExheWVy
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8qIGJlZm9yZUNoaWxkID0gcGFy
ZW50TGF5ZXItPnJlZmxlY3Rpb25MYXllcigpICE9IHRoaXMgPyByZW5kZXJlcigpLnBhcmVudCgp
LT5maW5kTmV4dExheWVyKCpwYXJlbnRMYXllciwgJnJlbmRlcmVyKCkpIDogbnVsbHB0cjsKKyAg
ICAgICAgYXV0byogYmVmb3JlQ2hpbGQgPSBwYXJlbnRMYXllci0+cmVmbGVjdGlvbkxheWVyKCkg
IT0gdGhpcyA/IHJlbmRlcmVyKCkubGF5ZXJOZXh0U2libGluZ1Jlc3BlY3RpbmdUb3BMYXllcigq
cGFyZW50TGF5ZXIpIDogbnVsbHB0cjsKICAgICAgICAgcGFyZW50TGF5ZXItPmFkZENoaWxkKCp0
aGlzLCBiZWZvcmVDaGlsZCk7CiAgICAgfQogCkBAIC00MDIxLDE0ICs0MDIxLDE0IEBAIGJvb2wg
UmVuZGVyTGF5ZXI6OmVzdGFibGlzaGVzVG9wTGF5ZXIoKSBjb25zdAogCiB2b2lkIFJlbmRlckxh
eWVyOjplc3RhYmxpc2hlc1RvcExheWVyV2lsbENoYW5nZSgpCiB7Ci0gICAgZGlydHlTdGFja2lu
Z0NvbnRleHRaT3JkZXJMaXN0cygpOworICAgIGlmIChhdXRvKiBwYXJlbnRMYXllciA9IHBhcmVu
dCgpKQorICAgICAgICBwYXJlbnRMYXllci0+cmVtb3ZlQ2hpbGQoKnRoaXMpOwogfQogCiB2b2lk
IFJlbmRlckxheWVyOjplc3RhYmxpc2hlc1RvcExheWVyRGlkQ2hhbmdlKCkKIHsKLSAgICBkaXJ0
eVN0YWNraW5nQ29udGV4dFpPcmRlckxpc3RzKCk7Ci0gICAgaWYgKGlzU3RhY2tpbmdDb250ZXh0
KCkpCi0gICAgICAgIGRpcnR5Wk9yZGVyTGlzdHMoKTsKKyAgICBpZiAoYXV0byogcGFyZW50TGF5
ZXIgPSByZW5kZXJlcigpLmxheWVyUGFyZW50UmVzcGVjdGluZ1RvcExheWVyKCkpCisgICAgICAg
IHBhcmVudExheWVyLT5hZGRDaGlsZCgqdGhpcyk7CiB9CiAKIFJlbmRlckxheWVyKiBSZW5kZXJM
YXllcjo6ZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3dBbmNlc3RvcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTRk
MjQ5YjZmYzIyOTZlOGI0NGU1OTVlZDkyYmEwZjUyNzZmNTdlMi4uYWI3MmMwMmU2ZTRmYTQ2YWVm
YzM1ZDliNGRiMThkODAwOGU5N2ExOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAxLTE4
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIDxkaWFs
b2c+IHdpdGggdHJhbnNmb3JtZWQgYW5jZXN0b3IgYXNzZXJ0cyB1bmRlciBSZW5kZXJHZW9tZXRy
eU1hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1
MTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0RXhwZWN0YXRpb25zOgorCiAyMDIyLTAxLTE1ICBUeWxlciBXaWxjb2NrICA8dHlsZXJfd0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQVg6IEZpeCBkaXNhYmxlZC1jb250cm9scy1ub3QtZm9jdXNh
YmxlLmh0bWwgaW4gaXNvbGF0ZWQgdHJlZSBtb2RlIGJ5IHVwZGF0aW5nIEFYUHJvcGVydHlOYW1l
OjpDYW5TZXRGb2N1c0F0dHJpYnV0ZSB3aGVuIHRoZSBkaXNhYmxlZCBhdHRyaWJ1dGUgY2hhbmdl
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTA5YmUxODY1MDI0MmFhNmYwMTMzZGUyMDI1NGU4NmZj
OGU1MGIxYy4uMjcyNTEwZmE1YTJjY2I1ODVjMzg4ZWJiODhiYTE3ZTE1NTBiZTkwZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zCkBAIC0yMzczLDggKzIzNzMsNiBAQCBmYXN0L211bHRpY29sL211bHRpY29s
LXdpdGgtY2hpbGQtcmVuZGVyTGF5ZXItZm9yLWlucHV0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
CiAjIFRvcCBsYXllciB0ZXN0cwogd2Via2l0Lm9yZy9iLzIyOTMxNSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1k
aWFsb2ctZWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tcmVwbGFjZWQtcmVuZGVyZXIuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIyOTMxNSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFs
b2ctZWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tdGFibGUtY29sdW1uLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLSMgTmVlZHMgbGF5ZXIgcmUtcGFyZW50aW5nCi13ZWJraXQub3JnL2IvMjM0OTgw
IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2ludGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ctZWxlbWVudC90b3AtbGF5ZXItcGFyZW50
LXRyYW5zZm9ybS5odG1sIFsgQ3Jhc2ggXQogCiAjIEFzc2VydGlvbiBmYWlsdXJlIGluIE1lc3Nh
Z2VQb3J0Ojpjb250ZXh0RGVzdHJveWVkLCB1c3VhbGx5IGF0dHJpYnV0ZWQgdG8gbGF0ZXIgdGVz
dHMKIHdlYmtpdC5vcmcvYi85NDQ1OCBodHRwL3Rlc3RzL3NlY3VyaXR5L01lc3NhZ2VQb3J0L2V2
ZW50LWxpc3RlbmVyLWNvbnRleHQuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449498</attachid>
            <date>2022-01-19 11:16:47 -0800</date>
            <delta_ts>2022-01-19 11:20:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235194-20220119111647.patch</filename>
            <type>text/plain</type>
            <size>22054</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQwMzE2YmMzZGZhOGI5
N2ViZGU0YTNlYmYwMTgzOTA0NTQzNDk2YS4uNTVhY2Y3M2VmMDBlMzcxZTAxNTBhMDE1NDJjYTE3
YjRlOGY2NDQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIyLTAxLTE4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIDxkaWFsb2c+IHdp
dGggdHJhbnNmb3JtZWQgYW5jZXN0b3IgYXNzZXJ0cyB1bmRlciBSZW5kZXJHZW9tZXRyeU1hcAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MTk0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2l0aCB0aGlz
IGNoYW5nZSB3ZSByZXBhcmVudCB0aGUgUmVuZGVyTGF5ZXJzIG9mIHRvcCBsYXllciBlbGVtZW50
cyB1bmRlciB0aGUgUmVuZGVyVmlldydzCisgICAgICAgIGxheWVyLiBUaGlzIG1ha2VzIHRoZSBS
ZW5kZXJMYXllciBoaWVyYXJjaHkgYSBjbG9zZXIgbWF0Y2ggdG8gdGhlIGNvbnRhaW5pbmcgYmxv
Y2sKKyAgICAgICAgaGllcmFyY2h5LCBhbmQgbWVhbnMgdGhhdCBhbGwgdGhlIGV4aXN0aW5nIFJl
bmRlckxheWVyIHRyZWUgd2Fsa3MgdGhhdCB1c2UKKyAgICAgICAgcGFyZW50KCkvZmlyc3RDaGls
ZCgpL25leHRTaWJsaW5nKCkgdHJhdmVyc2UgdGhlIHRoZSAidG9wIGxheWVyIiBsYXllcnMgYXMg
Y2hpbGRyZW4gb2YgdGhlCisgICAgICAgIFJlbmRlclZpZXcuIFRoaXMgaW4gdHVybiBtZWFucyB0
aGF0IHRoZSB2YXJpb3VzIGJpdHMgb2YgUmVuZGVyTGF5ZXIgc3RhdGUgdGhhdCB0cmFjayB0aGUK
KyAgICAgICAgc3RhdGUgb2YgZGVzY2VuZGFudHMgKGUuZy4gbV9oYXNWaXNpYmxlRGVzY2VuZGFu
dCwgbV9oYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQsCisgICAgICAgIG1faGFzTm90SXNv
bGF0ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzKSByZWZsZWN0IGRlc2NlbmRlbmN5IGluIHRoZSB0b3At
bGF5ZXItYXdhcmUgaGllcmFyY2h5LgorCisgICAgICAgIE5vdGUgdGhhdCBtX2hhc1Zpc2libGVE
ZXNjZW5kYW50IGlzIGFib3V0IHRoZSBpbmhlcml0ZWQgYHZpc2liaWxpdHlgIHByb3BlcnR5IHdo
aWNoIGZvbGxvd3MKKyAgICAgICAgRE9NIG9yZGVyLCBidXQgc2luY2Ugd2UgY29uc3VsdCBpdCBk
dXJpbmcgcGFpbnRpbmctcmVsYXRlZCB0cmVlIHdhbGtzLCB3ZSB3YW50IHRoaXMgc3RhdGUgdG8K
KyAgICAgICAgcmVmbGVjdCB0aGUgdG9wLWxheWVyLWF3YXJlIHRyZWUuCisgICAgICAgIAorICAg
ICAgICBUaGUgcGF0Y2ggYWRkcyB0b3AtbGF5ZXItYXdhcmUgaGVscGVycyBvbiBSZW5kZXJFbGVt
ZW50IHRvIGZpbmQgdGhlIHBhcmVudCBhbmQgbmV4dCBzaWJsaW5nLAorICAgICAgICBhbmQgdXNl
cyB0aG9zZSB3aGVuIHBhcmVudGluZyBsYXllcnMuCisgICAgICAgIAorICAgICAgICBJbiBhZGRp
dGlvbiwgd2hlbiB0aGUgdG9wIGxheWVyIHN0YXR1cyBjaGFuZ2VzIGZvciBhIFJlbmRlckxheWVy
LCB3ZSB1bnBhcmVudCBhbmQKKyAgICAgICAgcmUtcGFyZW50IGl0cyBsYXllciAod2hpY2ggaW4g
dHVybiBzaG91bGQgdG9nZ2xlIHRoZSByZWxldmFudCBkaXJ0eSBiaXRzKS4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmROZXh0
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJOZXh0U2libGluZ1Jlc3BlY3RpbmdUb3BM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjphZGRMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6bGF5ZXJQYXJlbnRSZXNwZWN0aW5nVG9wTGF5ZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6bGF5ZXJOZXh0U2libGluZ1Jlc3BlY3RpbmdU
b3BMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjppbnNlcnRl
ZEludG9UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OndpbGxCZVJlbW92
ZWRGcm9tVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpmaW5kTmV4dExh
eWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aW5zZXJ0T25seVRoaXNMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6c3RhY2tpbmdDb250ZXh0IGNvbnN0KTogTm8gbmVlZCBmb3IgdGhlIGV4cGxp
Y2l0IGVzdGFibGlzaGVzVG9wTGF5ZXIoKSBjaGVjay4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpzZXRIYXNWaXNpYmxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6ZGlydHlBbmNlc3RvckNoYWluVmlzaWJsZURlc2NlbmRhbnRTdGF0dXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNldEFuY2VzdG9yQ2hhaW5IYXNWaXNpYmxlRGVzY2Vu
ZGFudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZW5jbG9zaW5nQW5jZXN0b3JG
b3JQb3NpdGlvbiBjb25zdCk6IE5vIG5lZWQgZm9yIHRoZSBleHBsaWNpdCBlc3RhYmxpc2hlc1Rv
cExheWVyKCkgY2hlY2suCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZXN0YWJsaXNo
ZXNUb3BMYXllcldpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmVz
dGFibGlzaGVzVG9wTGF5ZXJEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6IE5vIG5lZWQgZm9yIHRoZSBleHBsaWNpdCBl
c3RhYmxpc2hlc1RvcExheWVyKCkgY2hlY2suCisKKzIwMjItMDEtMTUgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgc29tZSBjb2RlIGFy
b3VuZCBSZW5kZXJFbGVtZW50OjphZGRMYXllcnMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgVGhlIGNvZGUgdGhhdCBsb29rcyBmb3IgdGhlIG5leHQgbGF5
ZXIgdmlhIHJlbmRlciB0cmVlIHRyYXZlcnNhbCBpcyB0cmlja3kgYW5kCisgICAgICAgIGhhcmQg
dG8gdW5kZXJzdGFuZC4gRG8gc29tZSBpbml0aWFsIGNsZWFudXAgcHJpb3IgdG8gZml4aW5nIGl0
IGZvciB0b3AgbGF5ZXIuCisKKyAgICAgICAgRmlyc3QsIHVzZSBzdGQ6Om9wdGlvbmFsPD4gaW4g
dGhlIHN0YXRpYyBhZGRMYXllcnMoKSB0byBtYWtlIHRoZSBiZWZvcmVDaGlsZAorICAgICAgICBm
aW5kaW5nIGVhc2llciB0byB1bmRlcnN0YW5kIChubyBsb25nZXIgbmVlZCBhIG51bGwgbmV3T2Jq
ZWN0IGFzIHRoZSBzaWduYWwgdGhhdAorICAgICAgICB5b3UndmUgdHJpZWQgdG8gbG9vaykuCisK
KyAgICAgICAgU2Vjb25kLCB1c2UgcmVmZXJlbmNlcyBpbiBmaW5kTmV4dExheWVyKCkgYW5kIHJl
bmFtZSAnc3RhcnRQb2ludCcgdG8gbWFrZSBpdHMKKyAgICAgICAgcHVycG9zZSBtb3JlIGNsZWFy
LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YWRkTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmFkZExh
eWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpmaW5kTmV4dExheWVyIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmZpbmROZXh0TGF5ZXIpOiBE
ZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjppbnNlcnRPbmx5VGhpc0xheWVyKToKKwogMjAyMi0wMS0xNSAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTaGFyZSBzb21lIGNvZGUgdGhhdCBsb29r
cyBhdCB2aXNpYmlsaXR5IGluIG9yZGVyIHRvIHNob3J0LWNpcmN1aXQgcmVwYWludCByZWN0IGNv
bXB1dGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5k
ZXggZjc4OTcxZjM4NDQ5NTUyNGI4N2NhMzM1MDAzMTRhMWJkMGVhZDM1NS4uN2Q4ZTk3NDM4NmQw
MzkzZWI4ZGU2OWIyZDQ5NjJlYjE1NTgxNzI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcApAQCAtNjM0LDIyICs2MzQsNjcgQEAgUmVuZGVyUHRyPFJlbmRl
ck9iamVjdD4gUmVuZGVyRWxlbWVudDo6ZGV0YWNoUmVuZGVyZXJJbnRlcm5hbChSZW5kZXJPYmpl
Y3QmIHJlbmQKICAgICByZXR1cm4gUmVuZGVyUHRyPFJlbmRlck9iamVjdD4oJnJlbmRlcmVyKTsK
IH0KIAotc3RhdGljIHZvaWQgYWRkTGF5ZXJzKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBSZW5k
ZXJMYXllciogcGFyZW50TGF5ZXIsIFJlbmRlckVsZW1lbnQqJiBuZXdPYmplY3QsIFJlbmRlckxh
eWVyKiYgYmVmb3JlQ2hpbGQpCi17Ci0gICAgaWYgKHJlbmRlcmVyLmhhc0xheWVyKCkpIHsKLSAg
ICAgICAgaWYgKCFiZWZvcmVDaGlsZCAmJiBuZXdPYmplY3QpIHsKLSAgICAgICAgICAgIC8vIFdl
IG5lZWQgdG8gZmlndXJlIG91dCB0aGUgbGF5ZXIgdGhhdCBmb2xsb3dzIG5ld09iamVjdC4gV2Ug
b25seSBkbwotICAgICAgICAgICAgLy8gdGhpcyB0aGUgZmlyc3QgdGltZSB3ZSBmaW5kIGEgY2hp
bGQgbGF5ZXIsIGFuZCB0aGVuIHdlIHVwZGF0ZSB0aGUKLSAgICAgICAgICAgIC8vIHBvaW50ZXIg
dmFsdWVzIGZvciBuZXdPYmplY3QgYW5kIGJlZm9yZUNoaWxkIHVzZWQgYnkgZXZlcnlvbmUgZWxz
ZS4KLSAgICAgICAgICAgIGJlZm9yZUNoaWxkID0gbmV3T2JqZWN0LT5wYXJlbnQoKS0+ZmluZE5l
eHRMYXllcihwYXJlbnRMYXllciwgbmV3T2JqZWN0KTsKLSAgICAgICAgICAgIG5ld09iamVjdCA9
IG51bGxwdHI7CitzdGF0aWMgUmVuZGVyTGF5ZXIqIGZpbmROZXh0TGF5ZXIoY29uc3QgUmVuZGVy
RWxlbWVudCYgY3VyclJlbmRlcmVyLCBSZW5kZXJMYXllciYgcGFyZW50TGF5ZXIsIGNvbnN0IFJl
bmRlck9iamVjdCogc2libGluZ1RvVHJhdmVyc2VGcm9tLCBib29sIGNoZWNrUGFyZW50ID0gdHJ1
ZSkKK3sKKyAgICAvLyBTdGVwIDE6IElmIG91ciBsYXllciBpcyBhIGNoaWxkIG9mIHRoZSBkZXNp
cmVkIHBhcmVudCwgdGhlbiByZXR1cm4gb3VyIGxheWVyLgorICAgIGF1dG8qIG91ckxheWVyID0g
Y3VyclJlbmRlcmVyLmhhc0xheWVyKCkgPyBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0
PihjdXJyUmVuZGVyZXIpLmxheWVyKCkgOiBudWxscHRyOworICAgIGlmIChvdXJMYXllciAmJiBv
dXJMYXllci0+cGFyZW50KCkgPT0gJnBhcmVudExheWVyKQorICAgICAgICByZXR1cm4gb3VyTGF5
ZXI7CisKKyAgICAvLyBTdGVwIDI6IElmIHdlIGRvbid0IGhhdmUgYSBsYXllciwgb3Igb3VyIGxh
eWVyIGlzIHRoZSBkZXNpcmVkIHBhcmVudCwgdGhlbiBkZXNjZW5kCisgICAgLy8gaW50byBvdXIg
c2libGluZ3MgdHJ5aW5nIHRvIGZpbmQgdGhlIG5leHQgbGF5ZXIgd2hvc2UgcGFyZW50IGlzIHRo
ZSBkZXNpcmVkIHBhcmVudC4KKyAgICBpZiAoIW91ckxheWVyIHx8IG91ckxheWVyID09ICZwYXJl
bnRMYXllcikgeworICAgICAgICBmb3IgKGF1dG8qIGNoaWxkID0gc2libGluZ1RvVHJhdmVyc2VG
cm9tID8gc2libGluZ1RvVHJhdmVyc2VGcm9tLT5uZXh0U2libGluZygpIDogY3VyclJlbmRlcmVy
LmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAg
ICAgICAgICAgIGlmICghaXM8UmVuZGVyRWxlbWVudD4oKmNoaWxkKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChhdXRvKiBuZXh0TGF5ZXIgPSBmaW5kTmV4dExh
eWVyKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCksIHBhcmVudExheWVyLCBudWxscHRy
LCBmYWxzZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5leHRMYXllcjsKICAgICAgICAgfQot
ICAgICAgICBwYXJlbnRMYXllci0+YWRkQ2hpbGQoKmRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxP
YmplY3Q+KHJlbmRlcmVyKS5sYXllcigpLCBiZWZvcmVDaGlsZCk7CisgICAgfQorCisgICAgLy8g
U3RlcCAzOiBJZiBvdXIgbGF5ZXIgaXMgdGhlIGRlc2lyZWQgcGFyZW50IGxheWVyLCB0aGVuIHdl
J3JlIGZpbmlzaGVkLiBXZSBkaWRuJ3QKKyAgICAvLyBmaW5kIGFueXRoaW5nLgorICAgIGlmIChv
dXJMYXllciA9PSAmcGFyZW50TGF5ZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
Ly8gU3RlcCA0OiBJZiB8Y2hlY2tQYXJlbnR8IGlzIHNldCwgY2xpbWIgdXAgdG8gb3VyIHBhcmVu
dCBhbmQgY2hlY2sgaXRzIHNpYmxpbmdzIHRoYXQKKyAgICAvLyBmb2xsb3cgdXMgdG8gc2VlIGlm
IHdlIGNhbiBsb2NhdGUgYSBsYXllci4KKyAgICBpZiAoY2hlY2tQYXJlbnQgJiYgY3VyclJlbmRl
cmVyLnBhcmVudCgpKQorICAgICAgICByZXR1cm4gZmluZE5leHRMYXllcigqY3VyclJlbmRlcmVy
LnBhcmVudCgpLCBwYXJlbnRMYXllciwgJmN1cnJSZW5kZXJlciwgdHJ1ZSk7CisKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworc3RhdGljIFJlbmRlckxheWVyKiBsYXllck5leHRTaWJsaW5nUmVz
cGVjdGluZ1RvcExheWVyKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBSZW5kZXJMYXll
ciYgcGFyZW50TGF5ZXIpCit7CisgICAgQVNTRVJUX0lNUExJRVMoaXNJblRvcExheWVyT3JCYWNr
ZHJvcChyZW5kZXJlci5zdHlsZSgpLCByZW5kZXJlci5lbGVtZW50KCkpLCByZW5kZXJlci5oYXNM
YXllcigpKTsKKworICAgIGlmIChpczxSZW5kZXJMYXllck1vZGVsT2JqZWN0PihyZW5kZXJlcikg
JiYgaXNJblRvcExheWVyT3JCYWNrZHJvcChyZW5kZXJlci5zdHlsZSgpLCByZW5kZXJlci5lbGVt
ZW50KCkpKSB7CisgICAgICAgIGF1dG8mIGxheWVyTW9kZWxPYmplY3QgPSBkb3duY2FzdDxSZW5k
ZXJMYXllck1vZGVsT2JqZWN0PihyZW5kZXJlcik7CisgICAgICAgIEFTU0VSVChsYXllck1vZGVs
T2JqZWN0Lmhhc0xheWVyKCkpOworICAgICAgICBhdXRvIHRvcExheWVyTGF5ZXJzID0gUmVuZGVy
TGF5ZXI6OnRvcExheWVyUmVuZGVyTGF5ZXJzKHJlbmRlcmVyLnZpZXcoKSk7CisgICAgICAgIGF1
dG8gbGF5ZXJJbmRleCA9IHRvcExheWVyTGF5ZXJzLmZpbmQobGF5ZXJNb2RlbE9iamVjdC5sYXll
cigpKTsKKyAgICAgICAgaWYgKGxheWVySW5kZXggIT0gbm90Rm91bmQgJiYgbGF5ZXJJbmRleCA8
IHRvcExheWVyTGF5ZXJzLnNpemUoKSAtIDEpCisgICAgICAgICAgICByZXR1cm4gdG9wTGF5ZXJM
YXllcnNbbGF5ZXJJbmRleCArIDFdOworCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgIHJldHVybiBmaW5kTmV4dExheWVyKCpyZW5kZXJlci5wYXJlbnQoKSwgcGFyZW50TGF5
ZXIsICZyZW5kZXJlcik7Cit9CisKK3N0YXRpYyB2b2lkIGFkZExheWVycyhjb25zdCBSZW5kZXJF
bGVtZW50JiBhZGRlZFJlbmRlcmVyLCBSZW5kZXJFbGVtZW50JiBjdXJyZW50UmVuZGVyZXIsIFJl
bmRlckxheWVyJiBwYXJlbnRMYXllciwgc3RkOjpvcHRpb25hbDxSZW5kZXJMYXllcio+JiBiZWZv
cmVDaGlsZCkKK3sKKyAgICBpZiAoY3VycmVudFJlbmRlcmVyLmhhc0xheWVyKCkpIHsKKyAgICAg
ICAgaWYgKCFiZWZvcmVDaGlsZC5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIGJlZm9yZUNoaWxk
ID0gbGF5ZXJOZXh0U2libGluZ1Jlc3BlY3RpbmdUb3BMYXllcihhZGRlZFJlbmRlcmVyLCBwYXJl
bnRMYXllcik7CisKKyAgICAgICAgcGFyZW50TGF5ZXIuYWRkQ2hpbGQoKmRvd25jYXN0PFJlbmRl
ckxheWVyTW9kZWxPYmplY3Q+KGN1cnJlbnRSZW5kZXJlcikubGF5ZXIoKSwgYmVmb3JlQ2hpbGQu
dmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIGNoaWxk
IDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpKQotICAgICAgICBhZGRM
YXllcnMoY2hpbGQsIHBhcmVudExheWVyLCBuZXdPYmplY3QsIGJlZm9yZUNoaWxkKTsKKyAgICBm
b3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyRWxlbWVudD4oY3VycmVudFJl
bmRlcmVyKSkKKyAgICAgICAgYWRkTGF5ZXJzKGFkZGVkUmVuZGVyZXIsIGNoaWxkLCBwYXJlbnRM
YXllciwgYmVmb3JlQ2hpbGQpOwogfQogCiB2b2lkIFJlbmRlckVsZW1lbnQ6OmFkZExheWVycyhS
ZW5kZXJMYXllciogcGFyZW50TGF5ZXIpCkBAIC02NTcsOSArNzAyLDggQEAgdm9pZCBSZW5kZXJF
bGVtZW50OjphZGRMYXllcnMoUmVuZGVyTGF5ZXIqIHBhcmVudExheWVyKQogICAgIGlmICghcGFy
ZW50TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
ID0gdGhpczsKLSAgICBSZW5kZXJMYXllciogYmVmb3JlQ2hpbGQgPSBudWxscHRyOwotICAgIFdl
YkNvcmU6OmFkZExheWVycygqdGhpcywgcGFyZW50TGF5ZXIsIHJlbmRlcmVyLCBiZWZvcmVDaGls
ZCk7CisgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJMYXllcio+IGJlZm9yZUNoaWxkOworICAgIFdl
YkNvcmU6OmFkZExheWVycygqdGhpcywgKnRoaXMsICpwYXJlbnRMYXllciwgYmVmb3JlQ2hpbGQp
OwogfQogCiB2b2lkIFJlbmRlckVsZW1lbnQ6OnJlbW92ZUxheWVycyhSZW5kZXJMYXllciogcGFy
ZW50TGF5ZXIpCkBAIC02OTEsNDAgKzczNSwyMCBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6Om1vdmVM
YXllcnMoUmVuZGVyTGF5ZXIqIG9sZFBhcmVudCwgUmVuZGVyTGF5ZXImIG5ld1BhcmVudCkKICAg
ICAgICAgY2hpbGQubW92ZUxheWVycyhvbGRQYXJlbnQsIG5ld1BhcmVudCk7CiB9CiAKLVJlbmRl
ckxheWVyKiBSZW5kZXJFbGVtZW50OjpmaW5kTmV4dExheWVyKFJlbmRlckxheWVyKiBwYXJlbnRM
YXllciwgUmVuZGVyT2JqZWN0KiBzdGFydFBvaW50LCBib29sIGNoZWNrUGFyZW50KQorUmVuZGVy
TGF5ZXIqIFJlbmRlckVsZW1lbnQ6OmxheWVyUGFyZW50UmVzcGVjdGluZ1RvcExheWVyKCkgY29u
c3QKIHsKLSAgICAvLyBFcnJvciBjaGVjayB0aGUgcGFyZW50IGxheWVyIHBhc3NlZCBpbi4gSWYg
aXQncyBudWxsLCB3ZSBjYW4ndCBmaW5kIGFueXRoaW5nLgotICAgIGlmICghcGFyZW50TGF5ZXIp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgLy8gU3RlcCAxOiBJZiBvdXIgbGF5ZXIg
aXMgYSBjaGlsZCBvZiB0aGUgZGVzaXJlZCBwYXJlbnQsIHRoZW4gcmV0dXJuIG91ciBsYXllci4K
LSAgICBSZW5kZXJMYXllciogb3VyTGF5ZXIgPSBoYXNMYXllcigpID8gZG93bmNhc3Q8UmVuZGVy
TGF5ZXJNb2RlbE9iamVjdD4oKnRoaXMpLmxheWVyKCkgOiBudWxscHRyOwotICAgIGlmIChvdXJM
YXllciAmJiBvdXJMYXllci0+cGFyZW50KCkgPT0gcGFyZW50TGF5ZXIpCi0gICAgICAgIHJldHVy
biBvdXJMYXllcjsKLQotICAgIC8vIFN0ZXAgMjogSWYgd2UgZG9uJ3QgaGF2ZSBhIGxheWVyLCBv
ciBvdXIgbGF5ZXIgaXMgdGhlIGRlc2lyZWQgcGFyZW50LCB0aGVuIGRlc2NlbmQKLSAgICAvLyBp
bnRvIG91ciBzaWJsaW5ncyB0cnlpbmcgdG8gZmluZCB0aGUgbmV4dCBsYXllciB3aG9zZSBwYXJl
bnQgaXMgdGhlIGRlc2lyZWQgcGFyZW50LgotICAgIGlmICghb3VyTGF5ZXIgfHwgb3VyTGF5ZXIg
PT0gcGFyZW50TGF5ZXIpIHsKLSAgICAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gc3Rh
cnRQb2ludCA/IHN0YXJ0UG9pbnQtPm5leHRTaWJsaW5nKCkgOiBmaXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzPFJl
bmRlckVsZW1lbnQ+KCpjaGlsZCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICBSZW5kZXJMYXllciogbmV4dExheWVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmNo
aWxkKS5maW5kTmV4dExheWVyKHBhcmVudExheWVyLCBudWxscHRyLCBmYWxzZSk7Ci0gICAgICAg
ICAgICBpZiAobmV4dExheWVyKQotICAgICAgICAgICAgICAgIHJldHVybiBuZXh0TGF5ZXI7Ci0g
ICAgICAgIH0KLSAgICB9CisgICAgQVNTRVJUX0lNUExJRVMoaXNJblRvcExheWVyT3JCYWNrZHJv
cChzdHlsZSgpLCBlbGVtZW50KCkpLCBoYXNMYXllcigpKTsKIAotICAgIC8vIFN0ZXAgMzogSWYg
b3VyIGxheWVyIGlzIHRoZSBkZXNpcmVkIHBhcmVudCBsYXllciwgdGhlbiB3ZSdyZSBmaW5pc2hl
ZC4gV2UgZGlkbid0Ci0gICAgLy8gZmluZCBhbnl0aGluZy4KLSAgICBpZiAocGFyZW50TGF5ZXIg
PT0gb3VyTGF5ZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChoYXNMYXllcigp
ICYmIGlzSW5Ub3BMYXllck9yQmFja2Ryb3Aoc3R5bGUoKSwgZWxlbWVudCgpKSkKKyAgICAgICAg
cmV0dXJuIHZpZXcoKS5sYXllcigpOwogCi0gICAgLy8gU3RlcCA0OiBJZiB8Y2hlY2tQYXJlbnR8
IGlzIHNldCwgY2xpbWIgdXAgdG8gb3VyIHBhcmVudCBhbmQgY2hlY2sgaXRzIHNpYmxpbmdzIHRo
YXQKLSAgICAvLyBmb2xsb3cgdXMgdG8gc2VlIGlmIHdlIGNhbiBsb2NhdGUgYSBsYXllci4KLSAg
ICBpZiAoY2hlY2tQYXJlbnQgJiYgcGFyZW50KCkpCi0gICAgICAgIHJldHVybiBwYXJlbnQoKS0+
ZmluZE5leHRMYXllcihwYXJlbnRMYXllciwgdGhpcywgdHJ1ZSk7CisgICAgcmV0dXJuIHBhcmVu
dCgpLT5lbmNsb3NpbmdMYXllcigpOworfQogCi0gICAgcmV0dXJuIG51bGxwdHI7CisvLyBUaGlz
IGFuc3dlcnMgdGhlIHF1ZXN0aW9uICJpZiB0aGlzIHJlbmRlcmVyIGhhZCBhIGxheWVyLCB3aGF0
IHdvdWxkIGl0cyBuZXh0IHNpYmxpbmcgbGF5ZXIgYmUiLgorUmVuZGVyTGF5ZXIqIFJlbmRlckVs
ZW1lbnQ6OmxheWVyTmV4dFNpYmxpbmdSZXNwZWN0aW5nVG9wTGF5ZXIoUmVuZGVyTGF5ZXImIHBh
cmVudExheWVyKSBjb25zdAoreworICAgIHJldHVybiBXZWJDb3JlOjpsYXllck5leHRTaWJsaW5n
UmVzcGVjdGluZ1RvcExheWVyKCp0aGlzLCBwYXJlbnRMYXllcik7CiB9CiAKIGJvb2wgUmVuZGVy
RWxlbWVudDo6bGF5ZXJDcmVhdGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkgY29uc3QKQEAgLTk3MSwx
OSArOTk1LDE5IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShJc0ludGVy
bmFsTW92ZSBpc0ludGVybmFsTW92ZSkKIHsKICAgICAvLyBLZWVwIG91ciBsYXllciBoaWVyYXJj
aHkgdXBkYXRlZC4gT3B0aW1pemUgZm9yIHRoZSBjb21tb24gY2FzZSB3aGVyZSB3ZSBkb24ndCBo
YXZlIGFueSBjaGlsZHJlbgogICAgIC8vIGFuZCBkb24ndCBoYXZlIGEgbGF5ZXIgYXR0YWNoZWQg
dG8gb3Vyc2VsdmVzLgotICAgIFJlbmRlckxheWVyKiBsYXllciA9IG51bGxwdHI7CisgICAgUmVu
ZGVyTGF5ZXIqIHBhcmVudExheWVyID0gbnVsbHB0cjsKICAgICBpZiAoZmlyc3RDaGlsZCgpIHx8
IGhhc0xheWVyKCkpIHsKLSAgICAgICAgbGF5ZXIgPSBwYXJlbnQoKS0+ZW5jbG9zaW5nTGF5ZXIo
KTsKLSAgICAgICAgYWRkTGF5ZXJzKGxheWVyKTsKKyAgICAgICAgYXV0byogcGFyZW50TGF5ZXIg
PSBsYXllclBhcmVudFJlc3BlY3RpbmdUb3BMYXllcigpOworICAgICAgICBhZGRMYXllcnMocGFy
ZW50TGF5ZXIpOwogICAgIH0KIAogICAgIC8vIElmIHx0aGlzfCBpcyB2aXNpYmxlIGJ1dCB0aGlz
IG9iamVjdCB3YXMgbm90LCB0ZWxsIHRoZSBsYXllciBpdCBoYXMgc29tZSB2aXNpYmxlIGNvbnRl
bnQKICAgICAvLyB0aGF0IG5lZWRzIHRvIGJlIGRyYXduIGFuZCBsYXllciB2aXNpYmlsaXR5IG9w
dGltaXphdGlvbiBjYW4ndCBiZSB1c2VkCiAgICAgaWYgKHBhcmVudCgpLT5zdHlsZSgpLnZpc2li
aWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09
IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIWhhc0xheWVyKCkpIHsKLSAgICAgICAgaWYgKCFsYXll
cikKLSAgICAgICAgICAgIGxheWVyID0gcGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAg
ICAgIGlmIChsYXllcikKLSAgICAgICAgICAgIGxheWVyLT5kaXJ0eVZpc2libGVDb250ZW50U3Rh
dHVzKCk7CisgICAgICAgIGlmICghcGFyZW50TGF5ZXIpCisgICAgICAgICAgICBwYXJlbnRMYXll
ciA9IGxheWVyUGFyZW50UmVzcGVjdGluZ1RvcExheWVyKCk7CisgICAgICAgIGlmIChwYXJlbnRM
YXllcikKKyAgICAgICAgICAgIHBhcmVudExheWVyLT5kaXJ0eVZpc2libGVDb250ZW50U3RhdHVz
KCk7CiAgICAgfQogCiAgICAgUmVuZGVyT2JqZWN0OjppbnNlcnRlZEludG9UcmVlKGlzSW50ZXJu
YWxNb3ZlKTsKQEAgLTk5MiwxNiArMTAxNiwxNSBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6Omluc2Vy
dGVkSW50b1RyZWUoSXNJbnRlcm5hbE1vdmUgaXNJbnRlcm5hbE1vdmUpCiB2b2lkIFJlbmRlckVs
ZW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9tVHJlZShJc0ludGVybmFsTW92ZSBpc0ludGVybmFsTW92
ZSkKIHsKICAgICAvLyBJZiB3ZSByZW1vdmUgYSB2aXNpYmxlIGNoaWxkIGZyb20gYW4gaW52aXNp
YmxlIHBhcmVudCwgd2UgZG9uJ3Qga25vdyB0aGUgbGF5ZXIgdmlzaWJpbGl0eSBhbnkgbW9yZS4K
LSAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBudWxscHRyOwogICAgIGlmIChwYXJlbnQoKS0+c3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiBzdHlsZSgpLnZpc2li
aWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFoYXNMYXllcigpKSB7Ci0gICAgICAg
IGlmICgobGF5ZXIgPSBwYXJlbnQoKS0+ZW5jbG9zaW5nTGF5ZXIoKSkpCi0gICAgICAgICAgICBs
YXllci0+ZGlydHlWaXNpYmxlQ29udGVudFN0YXR1cygpOworICAgICAgICAvLyBGSVhNRTogc2hv
dWxkIGdldCBwYXJlbnQgbGF5ZXIuIE5lY2Vzc2FyeT8KKyAgICAgICAgaWYgKGF1dG8qIGVuY2xv
c2luZ0xheWVyID0gcGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCkpCisgICAgICAgICAgICBlbmNs
b3NpbmdMYXllci0+ZGlydHlWaXNpYmxlQ29udGVudFN0YXR1cygpOwogICAgIH0KICAgICAvLyBL
ZWVwIG91ciBsYXllciBoaWVyYXJjaHkgdXBkYXRlZC4KICAgICBpZiAoZmlyc3RDaGlsZCgpIHx8
IGhhc0xheWVyKCkpIHsKLSAgICAgICAgaWYgKCFsYXllcikKLSAgICAgICAgICAgIGxheWVyID0g
cGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgICAgIHJlbW92ZUxheWVycyhsYXllcik7
CisgICAgICAgIGF1dG8qIHBhcmVudExheWVyID0gbGF5ZXJQYXJlbnRSZXNwZWN0aW5nVG9wTGF5
ZXIoKTsKKyAgICAgICAgcmVtb3ZlTGF5ZXJzKHBhcmVudExheWVyKTsKICAgICB9CiAKICAgICBp
ZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgcGFyZW50KCktPmNoaWxkcmVuSW5saW5lKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCBiZDQ3OTcwM2Jh
MmZlNGExMTAwMTUzZTlmY2FmNTI5MGYzNGQxMDU4Li4wZWFlY2IwZDI4Nzc1ODlkM2ZjNmFkNGY2
MjczN2VmOGJjMWNmNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmgKQEAgLTEwOCwxMCArMTA4LDEyIEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIGZ1
bmN0aW9ucyBhcmUgdXNlZCB3aGVuIHRoZSByZW5kZXIgdHJlZSBoaWVyYXJjaHkgY2hhbmdlcyB0
byBtYWtlIHN1cmUgbGF5ZXJzIGdldAogICAgIC8vIHByb3Blcmx5IGFkZGVkIGFuZCByZW1vdmVk
LiBTaW5jZSBjb250YWluZXJzaGlwIGNhbiBiZSBpbXBsZW1lbnRlZCBieSBhbnkgc3ViY2xhc3Ms
IGFuZCBzaW5jZSBhIGhpZXJhcmNoeQogICAgIC8vIGNhbiBjb250YWluIGEgbWl4dHVyZSBvZiBi
b3hlcyBhbmQgb3RoZXIgb2JqZWN0IHR5cGVzLCB0aGVzZSBmdW5jdGlvbnMgbmVlZCB0byBiZSBp
biB0aGUgYmFzZSBjbGFzcy4KKyAgICBSZW5kZXJMYXllciogbGF5ZXJQYXJlbnRSZXNwZWN0aW5n
VG9wTGF5ZXIoKSBjb25zdDsKKyAgICBSZW5kZXJMYXllciogbGF5ZXJOZXh0U2libGluZ1Jlc3Bl
Y3RpbmdUb3BMYXllcihSZW5kZXJMYXllciYgcGFyZW50TGF5ZXIpIGNvbnN0OworCiAgICAgdm9p
ZCBhZGRMYXllcnMoUmVuZGVyTGF5ZXIqIHBhcmVudExheWVyKTsKICAgICB2b2lkIHJlbW92ZUxh
eWVycyhSZW5kZXJMYXllciogcGFyZW50TGF5ZXIpOwogICAgIHZvaWQgbW92ZUxheWVycyhSZW5k
ZXJMYXllciogb2xkUGFyZW50LCBSZW5kZXJMYXllciYgbmV3UGFyZW50KTsKLSAgICBSZW5kZXJM
YXllciogZmluZE5leHRMYXllcihSZW5kZXJMYXllciogcGFyZW50TGF5ZXIsIFJlbmRlck9iamVj
dCogc3RhcnRQb2ludCwgYm9vbCBjaGVja1BhcmVudCA9IHRydWUpOwogCiAgICAgdmlydHVhbCB2
b2lkIGRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKFJlbmRlck9iamVjdCYpIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBjY2NlMWM2OGZjNTVjNWVk
NTQ1ZDhkZmI2ZDQ0MTgzZTY4NTE0Zjg5Li4xZmIxYThlYWQzODYxNGZjNGUwOTIxYWZmZTk4OGZk
MDgzN2Q4OGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAg
LTQ4Myw5ICs0ODMsMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6aW5zZXJ0T25seVRoaXNMYXllcihM
YXllckNoYW5nZVRpbWluZyB0aW1pbmcpCiAgICAgaWYgKCFtX3BhcmVudCAmJiByZW5kZXJlcigp
LnBhcmVudCgpKSB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gY29ubmVjdCBvdXJzZWx2ZXMgd2hl
biBvdXIgcmVuZGVyZXIoKSBoYXMgYSBwYXJlbnQuCiAgICAgICAgIC8vIEZpbmQgb3VyIGVuY2xv
c2luZ0xheWVyIGFuZCBhZGQgb3Vyc2VsdmVzLgotICAgICAgICBSZW5kZXJMYXllciogcGFyZW50
TGF5ZXIgPSByZW5kZXJlcigpLnBhcmVudCgpLT5lbmNsb3NpbmdMYXllcigpOwotICAgICAgICBB
U1NFUlQocGFyZW50TGF5ZXIpOwotICAgICAgICBSZW5kZXJMYXllciogYmVmb3JlQ2hpbGQgPSBw
YXJlbnRMYXllci0+cmVmbGVjdGlvbkxheWVyKCkgIT0gdGhpcyA/IHJlbmRlcmVyKCkucGFyZW50
KCktPmZpbmROZXh0TGF5ZXIocGFyZW50TGF5ZXIsICZyZW5kZXJlcigpKSA6IG51bGxwdHI7Cisg
ICAgICAgIGF1dG8qIHBhcmVudExheWVyID0gcmVuZGVyZXIoKS5sYXllclBhcmVudFJlc3BlY3Rp
bmdUb3BMYXllcigpOworICAgICAgICBpZiAoIXBhcmVudExheWVyKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGF1dG8qIGJlZm9yZUNoaWxkID0gcGFyZW50TGF5ZXItPnJlZmxlY3Rp
b25MYXllcigpICE9IHRoaXMgPyByZW5kZXJlcigpLmxheWVyTmV4dFNpYmxpbmdSZXNwZWN0aW5n
VG9wTGF5ZXIoKnBhcmVudExheWVyKSA6IG51bGxwdHI7CiAgICAgICAgIHBhcmVudExheWVyLT5h
ZGRDaGlsZCgqdGhpcywgYmVmb3JlQ2hpbGQpOwogICAgIH0KIApAQCAtNjUxLDE0ICs2NTMsMTIg
QEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0UGFyZW50KFJlbmRlckxheWVyKiBwYXJlbnQpCiAKIFJl
bmRlckxheWVyKiBSZW5kZXJMYXllcjo6c3RhY2tpbmdDb250ZXh0KCkgY29uc3QKIHsKLSAgICBp
ZiAoZXN0YWJsaXNoZXNUb3BMYXllcigpKQotICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS52aWV3
KCkubGF5ZXIoKTsKLQogICAgIGF1dG8qIGxheWVyID0gcGFyZW50KCk7CiAgICAgd2hpbGUgKGxh
eWVyICYmICFsYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkKICAgICAgICAgbGF5ZXIgPSBsYXll
ci0+cGFyZW50KCk7CiAKICAgICBBU1NFUlQoIWxheWVyIHx8IGxheWVyLT5pc1N0YWNraW5nQ29u
dGV4dCgpKTsKKyAgICBBU1NFUlRfSU1QTElFUyhlc3RhYmxpc2hlc1RvcExheWVyKCksICFsYXll
ciB8fCBsYXllciA9PSByZW5kZXJlcigpLnZpZXcoKS5sYXllcigpKTsKICAgICByZXR1cm4gbGF5
ZXI7CiB9CiAKQEAgLTE0ODAsNyArMTQ4MCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNldEhhc1Zp
c2libGVDb250ZW50KCkKICAgICAgICAgLy8gV2UgZG9uJ3QgY29sbGVjdCBpbnZpc2libGUgbGF5
ZXJzIGluIHotb3JkZXIgbGlzdHMgaWYgd2UgYXJlIG5vdCBpbiBjb21wb3NpdGluZyBtb2RlLgog
ICAgICAgICAvLyBBcyB3ZSBiZWNhbWUgdmlzaWJsZSwgd2UgbmVlZCB0byBkaXJ0eSBvdXIgc3Rh
Y2tpbmcgY29udGFpbmVycyBhbmNlc3RvcnMgdG8gYmUgcHJvcGVybHkKICAgICAgICAgLy8gY29s
bGVjdGVkLiBGSVhNRTogV2hlbiBjb21wb3NpdGluZywgd2UgY291bGQgc2tpcCB0aGlzIGRpcnR5
aW5nIHBoYXNlLgotICAgICAgICBmb3IgKFJlbmRlckxheWVyKiBzYyA9IHN0YWNraW5nQ29udGV4
dCgpOyBzYzsgc2MgPSBzYy0+c3RhY2tpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgZm9yIChhdXRv
KiBzYyA9IHN0YWNraW5nQ29udGV4dCgpOyBzYzsgc2MgPSBzYy0+c3RhY2tpbmdDb250ZXh0KCkp
IHsKICAgICAgICAgICAgIHNjLT5kaXJ0eVpPcmRlckxpc3RzKCk7CiAgICAgICAgICAgICBpZiAo
c2MtPmhhc1Zpc2libGVDb250ZW50KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTAw
LDcgKzE1MDAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpkaXJ0eVZpc2libGVDb250ZW50U3RhdHVz
KCkKIAogdm9pZCBSZW5kZXJMYXllcjo6ZGlydHlBbmNlc3RvckNoYWluVmlzaWJsZURlc2NlbmRh
bnRTdGF0dXMoKQogewotICAgIGZvciAoUmVuZGVyTGF5ZXIqIGxheWVyID0gdGhpczsgbGF5ZXI7
IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKSB7CisgICAgZm9yIChhdXRvKiBsYXllciA9IHRoaXM7
IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQoKSkgewogICAgICAgICBpZiAobGF5ZXItPm1f
dmlzaWJsZURlc2NlbmRhbnRTdGF0dXNEaXJ0eSkKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0x
NTEwLDcgKzE1MTAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpkaXJ0eUFuY2VzdG9yQ2hhaW5WaXNp
YmxlRGVzY2VuZGFudFN0YXR1cygpCiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnNldEFuY2VzdG9yQ2hh
aW5IYXNWaXNpYmxlRGVzY2VuZGFudCgpCiB7Ci0gICAgZm9yIChSZW5kZXJMYXllciogbGF5ZXIg
PSB0aGlzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+cGFyZW50KCkpIHsKKyAgICBmb3IgKGF1dG8q
IGxheWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKSB7CiAgICAgICAg
IGlmIChzaG91bGRBcHBseVBhaW50Q29udGFpbm1lbnQocmVuZGVyZXIoKSkpIHsKICAgICAgICAg
ICAgIG1faGFzVmlzaWJsZURlc2NlbmRhbnQgPSB0cnVlOwogICAgICAgICAgICAgbV92aXNpYmxl
RGVzY2VuZGFudFN0YXR1c0RpcnR5ID0gZmFsc2U7CkBAIC0xODM0LDEzICsxODM0LDExIEBAIGJv
b2wgUmVuZGVyTGF5ZXI6OmFuY2VzdG9yTGF5ZXJJc0luQ29udGFpbmluZ0Jsb2NrQ2hhaW4oY29u
c3QgUmVuZGVyTGF5ZXImIGFuY2VzCiAKIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6ZW5jbG9z
aW5nQW5jZXN0b3JGb3JQb3NpdGlvbihQb3NpdGlvblR5cGUgcG9zaXRpb24pIGNvbnN0CiB7Ci0g
ICAgaWYgKGVzdGFibGlzaGVzVG9wTGF5ZXIoKSkKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCku
dmlldygpLmxheWVyKCk7Ci0KLSAgICBSZW5kZXJMYXllciogY3VyciA9IHBhcmVudCgpOworICAg
IGF1dG8qIGN1cnIgPSBwYXJlbnQoKTsKICAgICB3aGlsZSAoY3VyciAmJiAhaXNDb250YWluZXJG
b3JQb3NpdGlvbmVkKCpjdXJyLCBwb3NpdGlvbiwgZXN0YWJsaXNoZXNUb3BMYXllcigpKSkKICAg
ICAgICAgY3VyciA9IGN1cnItPnBhcmVudCgpOwogCisgICAgQVNTRVJUX0lNUExJRVMoZXN0YWJs
aXNoZXNUb3BMYXllcigpLCAhY3VyciB8fCBjdXJyID09IHJlbmRlcmVyKCkudmlldygpLmxheWVy
KCkpOwogICAgIHJldHVybiBjdXJyOwogfQogCkBAIC00MDE5LDE0ICs0MDE3LDE0IEBAIGJvb2wg
UmVuZGVyTGF5ZXI6OmVzdGFibGlzaGVzVG9wTGF5ZXIoKSBjb25zdAogCiB2b2lkIFJlbmRlckxh
eWVyOjplc3RhYmxpc2hlc1RvcExheWVyV2lsbENoYW5nZSgpCiB7Ci0gICAgZGlydHlTdGFja2lu
Z0NvbnRleHRaT3JkZXJMaXN0cygpOworICAgIGlmIChhdXRvKiBwYXJlbnRMYXllciA9IHBhcmVu
dCgpKQorICAgICAgICBwYXJlbnRMYXllci0+cmVtb3ZlQ2hpbGQoKnRoaXMpOwogfQogCiB2b2lk
IFJlbmRlckxheWVyOjplc3RhYmxpc2hlc1RvcExheWVyRGlkQ2hhbmdlKCkKIHsKLSAgICBkaXJ0
eVN0YWNraW5nQ29udGV4dFpPcmRlckxpc3RzKCk7Ci0gICAgaWYgKGlzU3RhY2tpbmdDb250ZXh0
KCkpCi0gICAgICAgIGRpcnR5Wk9yZGVyTGlzdHMoKTsKKyAgICBpZiAoYXV0byogcGFyZW50TGF5
ZXIgPSByZW5kZXJlcigpLmxheWVyUGFyZW50UmVzcGVjdGluZ1RvcExheWVyKCkpCisgICAgICAg
IHBhcmVudExheWVyLT5hZGRDaGlsZCgqdGhpcyk7CiB9CiAKIFJlbmRlckxheWVyKiBSZW5kZXJM
YXllcjo6ZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3dBbmNlc3RvcigpIGNvbnN0CkBAIC00NTg2LDkg
KzQ1ODQsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMoY29uc3QgQ2xp
cFJlY3RzQ29udGV4dCYgY2xpcFJlY3RzQ29udGV4dCwgQwogCiBSZWY8Q2xpcFJlY3RzPiBSZW5k
ZXJMYXllcjo6cGFyZW50Q2xpcFJlY3RzKGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0
c0NvbnRleHQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHBhcmVudCgpIHx8IGVzdGFibGlzaGVzVG9w
TGF5ZXIoKSk7CisgICAgQVNTRVJUKHBhcmVudCgpKTsKIAotICAgIGF1dG8gY29udGFpbmVyTGF5
ZXIgPSBlc3RhYmxpc2hlc1RvcExheWVyKCkgPyByZW5kZXJlcigpLnZpZXcoKS5sYXllcigpIDog
cGFyZW50KCk7CisgICAgYXV0byBjb250YWluZXJMYXllciA9IHBhcmVudCgpOwogICAgIGF1dG8g
dGVtcG9yYXJ5UGFyZW50Q2xpcFJlY3RzID0gWyZdKGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNs
aXBDb250ZXh0KSB7CiAgICAgICAgIGF1dG8gcGFyZW50Q2xpcFJlY3RzID0gQ2xpcFJlY3RzOjpj
cmVhdGUoKTsKICAgICAgICAgY29udGFpbmVyTGF5ZXItPmNhbGN1bGF0ZUNsaXBSZWN0cyhjbGlw
Q29udGV4dCwgcGFyZW50Q2xpcFJlY3RzKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1NGQyNDliNmZjMjI5NmU4YjQ0ZTU5
NWVkOTJiYTBmNTI3NmY1N2UyLi44NjAyNzQxMTY0OWM2MTk4MWRhYTZmNDBhOTc2MTYyNTAyMDA1
MTY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjItMDEtMTkgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgPGRpYWxvZz4gd2l0aCB0cmFuc2Zvcm1l
ZCBhbmNlc3RvciBhc3NlcnRzIHVuZGVyIFJlbmRlckdlb21ldHJ5TWFwCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUxOTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisK
KzIwMjItMDEtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgPGRpYWxvZz4gd2l0aCB0cmFuc2Zvcm1lZCBhbmNlc3RvciBhc3NlcnRzIHVuZGVyIFJl
bmRlckdlb21ldHJ5TWFwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzUxOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisKKzIwMjItMDEtMTggIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgPGRpYWxvZz4gd2l0aCB0cmFuc2Zv
cm1lZCBhbmNlc3RvciBhc3NlcnRzIHVuZGVyIFJlbmRlckdlb21ldHJ5TWFwCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUxOTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3Rp
dmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L3RvcC1sYXllci1wYXJlbnQtdHJhbnNmb3Jt
Lmh0bWwKKyAgICAgICAgbm8gbG9uZ2VyIGFzc2VydHMuCisKIDIwMjItMDEtMTUgIFR5bGVyIFdp
bGNvY2sgIDx0eWxlcl93QGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogRml4IGRpc2FibGVkLWNv
bnRyb2xzLW5vdC1mb2N1c2FibGUuaHRtbCBpbiBpc29sYXRlZCB0cmVlIG1vZGUgYnkgdXBkYXRp
bmcgQVhQcm9wZXJ0eU5hbWU6OkNhblNldEZvY3VzQXR0cmlidXRlIHdoZW4gdGhlIGRpc2FibGVk
IGF0dHJpYnV0ZSBjaGFuZ2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhMDliZTE4NjUwMjQyYWE2
ZjAxMzNkZTIwMjU0ZTg2ZmM4ZTUwYjFjLi4yNzI1MTBmYTVhMmNjYjU4NWMzODhlYmI4OGJhMTdl
MTU1MGJlOTBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIzNzMsOCArMjM3Myw2IEBAIGZhc3Qv
bXVsdGljb2wvbXVsdGljb2wtd2l0aC1jaGlsZC1yZW5kZXJMYXllci1mb3ItaW5wdXQuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUKICMgVG9wIGxheWVyIHRlc3RzCiB3ZWJraXQub3JnL2IvMjI5MzE1
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3Rp
dmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L21vZGFsLWRpYWxvZy1pbi1yZXBsYWNlZC1y
ZW5kZXJlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjI5MzE1IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUt
ZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L21vZGFsLWRpYWxvZy1pbi10YWJsZS1jb2x1bW4u
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotIyBOZWVkcyBsYXllciByZS1wYXJlbnRpbmcKLXdl
YmtpdC5vcmcvYi8yMzQ5ODAgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50
L3RvcC1sYXllci1wYXJlbnQtdHJhbnNmb3JtLmh0bWwgWyBDcmFzaCBdCiAKICMgQXNzZXJ0aW9u
IGZhaWx1cmUgaW4gTWVzc2FnZVBvcnQ6OmNvbnRleHREZXN0cm95ZWQsIHVzdWFsbHkgYXR0cmli
dXRlZCB0byBsYXRlciB0ZXN0cwogd2Via2l0Lm9yZy9iLzk0NDU4IGh0dHAvdGVzdHMvc2VjdXJp
dHkvTWVzc2FnZVBvcnQvZXZlbnQtbGlzdGVuZXItY29udGV4dC5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449499</attachid>
            <date>2022-01-19 11:22:51 -0800</date>
            <delta_ts>2022-01-19 12:49:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235194-20220119112251.patch</filename>
            <type>text/plain</type>
            <size>18755</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5ZDFmNTQ0YmY1NTRi
NjAxYTIyMWM3ZGNjOTQ5ZjUyZGVlMDNmOC4uMTA2OTEzOGIzZTdiZjZlOGE1NWJjMjY5YzkzNTRl
OTRlYzQ3ZDBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAxLTE4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIDxkaWFsb2c+IHdp
dGggdHJhbnNmb3JtZWQgYW5jZXN0b3IgYXNzZXJ0cyB1bmRlciBSZW5kZXJHZW9tZXRyeU1hcAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MTk0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2l0aCB0aGlz
IGNoYW5nZSB3ZSByZXBhcmVudCB0aGUgUmVuZGVyTGF5ZXJzIG9mIHRvcCBsYXllciBlbGVtZW50
cyB1bmRlciB0aGUgUmVuZGVyVmlldydzCisgICAgICAgIGxheWVyLiBUaGlzIG1ha2VzIHRoZSBS
ZW5kZXJMYXllciBoaWVyYXJjaHkgYSBjbG9zZXIgbWF0Y2ggdG8gdGhlIGNvbnRhaW5pbmcgYmxv
Y2sKKyAgICAgICAgaGllcmFyY2h5LCBhbmQgbWVhbnMgdGhhdCBhbGwgdGhlIGV4aXN0aW5nIFJl
bmRlckxheWVyIHRyZWUgd2Fsa3MgdGhhdCB1c2UKKyAgICAgICAgcGFyZW50KCkvZmlyc3RDaGls
ZCgpL25leHRTaWJsaW5nKCkgdHJhdmVyc2UgdGhlIHRoZSAidG9wIGxheWVyIiBsYXllcnMgYXMg
Y2hpbGRyZW4gb2YgdGhlCisgICAgICAgIFJlbmRlclZpZXcuIFRoaXMgaW4gdHVybiBtZWFucyB0
aGF0IHRoZSB2YXJpb3VzIGJpdHMgb2YgUmVuZGVyTGF5ZXIgc3RhdGUgdGhhdCB0cmFjayB0aGUK
KyAgICAgICAgc3RhdGUgb2YgZGVzY2VuZGFudHMgKGUuZy4gbV9oYXNWaXNpYmxlRGVzY2VuZGFu
dCwgbV9oYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQsCisgICAgICAgIG1faGFzTm90SXNv
bGF0ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzKSByZWZsZWN0IGRlc2NlbmRlbmN5IGluIHRoZSB0b3At
bGF5ZXItYXdhcmUgaGllcmFyY2h5LgorCisgICAgICAgIE5vdGUgdGhhdCBtX2hhc1Zpc2libGVE
ZXNjZW5kYW50IGlzIGFib3V0IHRoZSBpbmhlcml0ZWQgYHZpc2liaWxpdHlgIHByb3BlcnR5IHdo
aWNoIGZvbGxvd3MKKyAgICAgICAgRE9NIG9yZGVyLCBidXQgc2luY2Ugd2UgY29uc3VsdCBpdCBk
dXJpbmcgcGFpbnRpbmctcmVsYXRlZCB0cmVlIHdhbGtzLCB3ZSB3YW50IHRoaXMgc3RhdGUgdG8K
KyAgICAgICAgcmVmbGVjdCB0aGUgdG9wLWxheWVyLWF3YXJlIHRyZWUuCisgICAgICAgIAorICAg
ICAgICBUaGUgcGF0Y2ggYWRkcyB0b3AtbGF5ZXItYXdhcmUgaGVscGVycyBvbiBSZW5kZXJFbGVt
ZW50IHRvIGZpbmQgdGhlIHBhcmVudCBhbmQgbmV4dCBzaWJsaW5nLAorICAgICAgICBhbmQgdXNl
cyB0aG9zZSB3aGVuIHBhcmVudGluZyBsYXllcnMuCisgICAgICAgIAorICAgICAgICBJbiBhZGRp
dGlvbiwgd2hlbiB0aGUgdG9wIGxheWVyIHN0YXR1cyBjaGFuZ2VzIGZvciBhIFJlbmRlckxheWVy
LCB3ZSB1bnBhcmVudCBhbmQKKyAgICAgICAgcmUtcGFyZW50IGl0cyBsYXllciAod2hpY2ggaW4g
dHVybiBzaG91bGQgdG9nZ2xlIHRoZSByZWxldmFudCBkaXJ0eSBiaXRzKS4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmROZXh0
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJOZXh0U2libGluZ1Jlc3BlY3RpbmdUb3BM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjphZGRMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6bGF5ZXJQYXJlbnRSZXNwZWN0aW5nVG9wTGF5ZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6bGF5ZXJOZXh0U2libGluZ1Jlc3BlY3RpbmdU
b3BMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjppbnNlcnRl
ZEludG9UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OndpbGxCZVJlbW92
ZWRGcm9tVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpmaW5kTmV4dExh
eWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aW5zZXJ0T25seVRoaXNMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6c3RhY2tpbmdDb250ZXh0IGNvbnN0KTogTm8gbmVlZCBmb3IgdGhlIGV4cGxp
Y2l0IGVzdGFibGlzaGVzVG9wTGF5ZXIoKSBjaGVjay4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpzZXRIYXNWaXNpYmxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6ZGlydHlBbmNlc3RvckNoYWluVmlzaWJsZURlc2NlbmRhbnRTdGF0dXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNldEFuY2VzdG9yQ2hhaW5IYXNWaXNpYmxlRGVzY2Vu
ZGFudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZW5jbG9zaW5nQW5jZXN0b3JG
b3JQb3NpdGlvbiBjb25zdCk6IE5vIG5lZWQgZm9yIHRoZSBleHBsaWNpdCBlc3RhYmxpc2hlc1Rv
cExheWVyKCkgY2hlY2suCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZXN0YWJsaXNo
ZXNUb3BMYXllcldpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmVz
dGFibGlzaGVzVG9wTGF5ZXJEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6IE5vIG5lZWQgZm9yIHRoZSBleHBsaWNpdCBl
c3RhYmxpc2hlc1RvcExheWVyKCkgY2hlY2suCisKIDIwMjItMDEtMTkgIFJvYiBCdWlzICA8cmJ1
aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBOdWxsIGNoZWNrIHBsYXllciBpbiB0YWludHNPcmln
aW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCAyNmMy
NTBlMzE5MjhjNzMxMDU3YThlOWM5NTY0Mjk2YTFjMmVmMWZlLi4wODdlZWE2Mzk5OWQ2ZmJiMWNl
YmQ3ODU4NjUzZWNhZjNjYzYxMjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwCkBAIC02MzQsMTEgKzYzNCw2MCBAQCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0
PiBSZW5kZXJFbGVtZW50OjpkZXRhY2hSZW5kZXJlckludGVybmFsKFJlbmRlck9iamVjdCYgcmVu
ZAogICAgIHJldHVybiBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PigmcmVuZGVyZXIpOwogfQogCitz
dGF0aWMgUmVuZGVyTGF5ZXIqIGZpbmROZXh0TGF5ZXIoY29uc3QgUmVuZGVyRWxlbWVudCYgY3Vy
clJlbmRlcmVyLCBSZW5kZXJMYXllciYgcGFyZW50TGF5ZXIsIGNvbnN0IFJlbmRlck9iamVjdCog
c2libGluZ1RvVHJhdmVyc2VGcm9tLCBib29sIGNoZWNrUGFyZW50ID0gdHJ1ZSkKK3sKKyAgICAv
LyBTdGVwIDE6IElmIG91ciBsYXllciBpcyBhIGNoaWxkIG9mIHRoZSBkZXNpcmVkIHBhcmVudCwg
dGhlbiByZXR1cm4gb3VyIGxheWVyLgorICAgIGF1dG8qIG91ckxheWVyID0gY3VyclJlbmRlcmVy
Lmhhc0xheWVyKCkgPyBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PihjdXJyUmVuZGVy
ZXIpLmxheWVyKCkgOiBudWxscHRyOworICAgIGlmIChvdXJMYXllciAmJiBvdXJMYXllci0+cGFy
ZW50KCkgPT0gJnBhcmVudExheWVyKQorICAgICAgICByZXR1cm4gb3VyTGF5ZXI7CisKKyAgICAv
LyBTdGVwIDI6IElmIHdlIGRvbid0IGhhdmUgYSBsYXllciwgb3Igb3VyIGxheWVyIGlzIHRoZSBk
ZXNpcmVkIHBhcmVudCwgdGhlbiBkZXNjZW5kCisgICAgLy8gaW50byBvdXIgc2libGluZ3MgdHJ5
aW5nIHRvIGZpbmQgdGhlIG5leHQgbGF5ZXIgd2hvc2UgcGFyZW50IGlzIHRoZSBkZXNpcmVkIHBh
cmVudC4KKyAgICBpZiAoIW91ckxheWVyIHx8IG91ckxheWVyID09ICZwYXJlbnRMYXllcikgewor
ICAgICAgICBmb3IgKGF1dG8qIGNoaWxkID0gc2libGluZ1RvVHJhdmVyc2VGcm9tID8gc2libGlu
Z1RvVHJhdmVyc2VGcm9tLT5uZXh0U2libGluZygpIDogY3VyclJlbmRlcmVyLmZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlm
ICghaXM8UmVuZGVyRWxlbWVudD4oKmNoaWxkKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGlmIChhdXRvKiBuZXh0TGF5ZXIgPSBmaW5kTmV4dExheWVyKGRvd25jYXN0
PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCksIHBhcmVudExheWVyLCBudWxscHRyLCBmYWxzZSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIG5leHRMYXllcjsKKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vIFN0ZXAgMzogSWYgb3VyIGxheWVyIGlzIHRoZSBkZXNpcmVkIHBhcmVudCBsYXllciwgdGhl
biB3ZSdyZSBmaW5pc2hlZC4gV2UgZGlkbid0CisgICAgLy8gZmluZCBhbnl0aGluZy4KKyAgICBp
ZiAob3VyTGF5ZXIgPT0gJnBhcmVudExheWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIC8vIFN0ZXAgNDogSWYgfGNoZWNrUGFyZW50fCBpcyBzZXQsIGNsaW1iIHVwIHRvIG91ciBw
YXJlbnQgYW5kIGNoZWNrIGl0cyBzaWJsaW5ncyB0aGF0CisgICAgLy8gZm9sbG93IHVzIHRvIHNl
ZSBpZiB3ZSBjYW4gbG9jYXRlIGEgbGF5ZXIuCisgICAgaWYgKGNoZWNrUGFyZW50ICYmIGN1cnJS
ZW5kZXJlci5wYXJlbnQoKSkKKyAgICAgICAgcmV0dXJuIGZpbmROZXh0TGF5ZXIoKmN1cnJSZW5k
ZXJlci5wYXJlbnQoKSwgcGFyZW50TGF5ZXIsICZjdXJyUmVuZGVyZXIsIHRydWUpOworCisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBSZW5kZXJMYXllciogbGF5ZXJOZXh0U2libGlu
Z1Jlc3BlY3RpbmdUb3BMYXllcihjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgUmVuZGVy
TGF5ZXImIHBhcmVudExheWVyKQoreworICAgIEFTU0VSVF9JTVBMSUVTKGlzSW5Ub3BMYXllck9y
QmFja2Ryb3AocmVuZGVyZXIuc3R5bGUoKSwgcmVuZGVyZXIuZWxlbWVudCgpKSwgcmVuZGVyZXIu
aGFzTGF5ZXIoKSk7CisKKyAgICBpZiAoaXM8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4ocmVuZGVy
ZXIpICYmIGlzSW5Ub3BMYXllck9yQmFja2Ryb3AocmVuZGVyZXIuc3R5bGUoKSwgcmVuZGVyZXIu
ZWxlbWVudCgpKSkgeworICAgICAgICBhdXRvJiBsYXllck1vZGVsT2JqZWN0ID0gZG93bmNhc3Q8
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4ocmVuZGVyZXIpOworICAgICAgICBBU1NFUlQobGF5ZXJN
b2RlbE9iamVjdC5oYXNMYXllcigpKTsKKyAgICAgICAgYXV0byB0b3BMYXllckxheWVycyA9IFJl
bmRlckxheWVyOjp0b3BMYXllclJlbmRlckxheWVycyhyZW5kZXJlci52aWV3KCkpOworICAgICAg
ICBhdXRvIGxheWVySW5kZXggPSB0b3BMYXllckxheWVycy5maW5kKGxheWVyTW9kZWxPYmplY3Qu
bGF5ZXIoKSk7CisgICAgICAgIGlmIChsYXllckluZGV4ICE9IG5vdEZvdW5kICYmIGxheWVySW5k
ZXggPCB0b3BMYXllckxheWVycy5zaXplKCkgLSAxKQorICAgICAgICAgICAgcmV0dXJuIHRvcExh
eWVyTGF5ZXJzW2xheWVySW5kZXggKyAxXTsKKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmluZE5leHRMYXllcigqcmVuZGVyZXIucGFyZW50KCksIHBhcmVu
dExheWVyLCAmcmVuZGVyZXIpOworfQorCiBzdGF0aWMgdm9pZCBhZGRMYXllcnMoY29uc3QgUmVu
ZGVyRWxlbWVudCYgYWRkZWRSZW5kZXJlciwgUmVuZGVyRWxlbWVudCYgY3VycmVudFJlbmRlcmVy
LCBSZW5kZXJMYXllciYgcGFyZW50TGF5ZXIsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyTGF5ZXIqPiYg
YmVmb3JlQ2hpbGQpCiB7CiAgICAgaWYgKGN1cnJlbnRSZW5kZXJlci5oYXNMYXllcigpKSB7CiAg
ICAgICAgIGlmICghYmVmb3JlQ2hpbGQuaGFzX3ZhbHVlKCkpCi0gICAgICAgICAgICBiZWZvcmVD
aGlsZCA9IGFkZGVkUmVuZGVyZXIucGFyZW50KCktPmZpbmROZXh0TGF5ZXIocGFyZW50TGF5ZXIs
ICZhZGRlZFJlbmRlcmVyKTsKKyAgICAgICAgICAgIGJlZm9yZUNoaWxkID0gbGF5ZXJOZXh0U2li
bGluZ1Jlc3BlY3RpbmdUb3BMYXllcihhZGRlZFJlbmRlcmVyLCBwYXJlbnRMYXllcik7CiAKICAg
ICAgICAgcGFyZW50TGF5ZXIuYWRkQ2hpbGQoKmRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmpl
Y3Q+KGN1cnJlbnRSZW5kZXJlcikubGF5ZXIoKSwgYmVmb3JlQ2hpbGQudmFsdWUoKSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTY4NiwzNSArNzM1LDIwIEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6bW92
ZUxheWVycyhSZW5kZXJMYXllciogb2xkUGFyZW50LCBSZW5kZXJMYXllciYgbmV3UGFyZW50KQog
ICAgICAgICBjaGlsZC5tb3ZlTGF5ZXJzKG9sZFBhcmVudCwgbmV3UGFyZW50KTsKIH0KIAotUmVu
ZGVyTGF5ZXIqIFJlbmRlckVsZW1lbnQ6OmZpbmROZXh0TGF5ZXIoUmVuZGVyTGF5ZXImIHBhcmVu
dExheWVyLCBjb25zdCBSZW5kZXJPYmplY3QqIHNpYmxpbmdUb1RyYXZlcnNlRnJvbSwgYm9vbCBj
aGVja1BhcmVudCkgY29uc3QKK1JlbmRlckxheWVyKiBSZW5kZXJFbGVtZW50OjpsYXllclBhcmVu
dFJlc3BlY3RpbmdUb3BMYXllcigpIGNvbnN0CiB7Ci0gICAgLy8gU3RlcCAxOiBJZiBvdXIgbGF5
ZXIgaXMgYSBjaGlsZCBvZiB0aGUgZGVzaXJlZCBwYXJlbnQsIHRoZW4gcmV0dXJuIG91ciBsYXll
ci4KLSAgICBhdXRvKiBvdXJMYXllciA9IGhhc0xheWVyKCkgPyBkb3duY2FzdDxSZW5kZXJMYXll
ck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKSA6IG51bGxwdHI7Ci0gICAgaWYgKG91ckxheWVy
ICYmIG91ckxheWVyLT5wYXJlbnQoKSA9PSAmcGFyZW50TGF5ZXIpCi0gICAgICAgIHJldHVybiBv
dXJMYXllcjsKKyAgICBBU1NFUlRfSU1QTElFUyhpc0luVG9wTGF5ZXJPckJhY2tkcm9wKHN0eWxl
KCksIGVsZW1lbnQoKSksIGhhc0xheWVyKCkpOwogCi0gICAgLy8gU3RlcCAyOiBJZiB3ZSBkb24n
dCBoYXZlIGEgbGF5ZXIsIG9yIG91ciBsYXllciBpcyB0aGUgZGVzaXJlZCBwYXJlbnQsIHRoZW4g
ZGVzY2VuZAotICAgIC8vIGludG8gb3VyIHNpYmxpbmdzIHRyeWluZyB0byBmaW5kIHRoZSBuZXh0
IGxheWVyIHdob3NlIHBhcmVudCBpcyB0aGUgZGVzaXJlZCBwYXJlbnQuCi0gICAgaWYgKCFvdXJM
YXllciB8fCBvdXJMYXllciA9PSAmcGFyZW50TGF5ZXIpIHsKLSAgICAgICAgZm9yIChhdXRvKiBj
aGlsZCA9IHNpYmxpbmdUb1RyYXZlcnNlRnJvbSA/IHNpYmxpbmdUb1RyYXZlcnNlRnJvbS0+bmV4
dFNpYmxpbmcoKSA6IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJs
aW5nKCkpIHsKLSAgICAgICAgICAgIGlmICghaXM8UmVuZGVyRWxlbWVudD4oKmNoaWxkKSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBuZXh0TGF5ZXIg
PSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqY2hpbGQpLmZpbmROZXh0TGF5ZXIocGFyZW50TGF5
ZXIsIG51bGxwdHIsIGZhbHNlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV4dExheWVyOwot
ICAgICAgICB9Ci0gICAgfQorICAgIGlmIChoYXNMYXllcigpICYmIGlzSW5Ub3BMYXllck9yQmFj
a2Ryb3Aoc3R5bGUoKSwgZWxlbWVudCgpKSkKKyAgICAgICAgcmV0dXJuIHZpZXcoKS5sYXllcigp
OwogCi0gICAgLy8gU3RlcCAzOiBJZiBvdXIgbGF5ZXIgaXMgdGhlIGRlc2lyZWQgcGFyZW50IGxh
eWVyLCB0aGVuIHdlJ3JlIGZpbmlzaGVkLiBXZSBkaWRuJ3QKLSAgICAvLyBmaW5kIGFueXRoaW5n
LgotICAgIGlmIChvdXJMYXllciA9PSAmcGFyZW50TGF5ZXIpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgLy8gU3RlcCA0OiBJZiB8Y2hlY2tQYXJlbnR8IGlzIHNldCwgY2xpbWIgdXAg
dG8gb3VyIHBhcmVudCBhbmQgY2hlY2sgaXRzIHNpYmxpbmdzIHRoYXQKLSAgICAvLyBmb2xsb3cg
dXMgdG8gc2VlIGlmIHdlIGNhbiBsb2NhdGUgYSBsYXllci4KLSAgICBpZiAoY2hlY2tQYXJlbnQg
JiYgcGFyZW50KCkpCi0gICAgICAgIHJldHVybiBwYXJlbnQoKS0+ZmluZE5leHRMYXllcihwYXJl
bnRMYXllciwgdGhpcywgdHJ1ZSk7CisgICAgcmV0dXJuIHBhcmVudCgpLT5lbmNsb3NpbmdMYXll
cigpOworfQogCi0gICAgcmV0dXJuIG51bGxwdHI7CisvLyBUaGlzIGFuc3dlcnMgdGhlIHF1ZXN0
aW9uICJpZiB0aGlzIHJlbmRlcmVyIGhhZCBhIGxheWVyLCB3aGF0IHdvdWxkIGl0cyBuZXh0IHNp
YmxpbmcgbGF5ZXIgYmUiLgorUmVuZGVyTGF5ZXIqIFJlbmRlckVsZW1lbnQ6OmxheWVyTmV4dFNp
YmxpbmdSZXNwZWN0aW5nVG9wTGF5ZXIoUmVuZGVyTGF5ZXImIHBhcmVudExheWVyKSBjb25zdAor
eworICAgIHJldHVybiBXZWJDb3JlOjpsYXllck5leHRTaWJsaW5nUmVzcGVjdGluZ1RvcExheWVy
KCp0aGlzLCBwYXJlbnRMYXllcik7CiB9CiAKIGJvb2wgUmVuZGVyRWxlbWVudDo6bGF5ZXJDcmVh
dGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkgY29uc3QKQEAgLTk2MSwxOSArOTk1LDE5IEBAIHZvaWQg
UmVuZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShJc0ludGVybmFsTW92ZSBpc0ludGVybmFs
TW92ZSkKIHsKICAgICAvLyBLZWVwIG91ciBsYXllciBoaWVyYXJjaHkgdXBkYXRlZC4gT3B0aW1p
emUgZm9yIHRoZSBjb21tb24gY2FzZSB3aGVyZSB3ZSBkb24ndCBoYXZlIGFueSBjaGlsZHJlbgog
ICAgIC8vIGFuZCBkb24ndCBoYXZlIGEgbGF5ZXIgYXR0YWNoZWQgdG8gb3Vyc2VsdmVzLgotICAg
IFJlbmRlckxheWVyKiBsYXllciA9IG51bGxwdHI7CisgICAgUmVuZGVyTGF5ZXIqIHBhcmVudExh
eWVyID0gbnVsbHB0cjsKICAgICBpZiAoZmlyc3RDaGlsZCgpIHx8IGhhc0xheWVyKCkpIHsKLSAg
ICAgICAgbGF5ZXIgPSBwYXJlbnQoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKLSAgICAgICAgYWRkTGF5
ZXJzKGxheWVyKTsKKyAgICAgICAgYXV0byogcGFyZW50TGF5ZXIgPSBsYXllclBhcmVudFJlc3Bl
Y3RpbmdUb3BMYXllcigpOworICAgICAgICBhZGRMYXllcnMocGFyZW50TGF5ZXIpOwogICAgIH0K
IAogICAgIC8vIElmIHx0aGlzfCBpcyB2aXNpYmxlIGJ1dCB0aGlzIG9iamVjdCB3YXMgbm90LCB0
ZWxsIHRoZSBsYXllciBpdCBoYXMgc29tZSB2aXNpYmxlIGNvbnRlbnQKICAgICAvLyB0aGF0IG5l
ZWRzIHRvIGJlIGRyYXduIGFuZCBsYXllciB2aXNpYmlsaXR5IG9wdGltaXphdGlvbiBjYW4ndCBi
ZSB1c2VkCiAgICAgaWYgKHBhcmVudCgpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmls
aXR5OjpWaXNpYmxlICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2li
bGUgJiYgIWhhc0xheWVyKCkpIHsKLSAgICAgICAgaWYgKCFsYXllcikKLSAgICAgICAgICAgIGxh
eWVyID0gcGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgICAgIGlmIChsYXllcikKLSAg
ICAgICAgICAgIGxheWVyLT5kaXJ0eVZpc2libGVDb250ZW50U3RhdHVzKCk7CisgICAgICAgIGlm
ICghcGFyZW50TGF5ZXIpCisgICAgICAgICAgICBwYXJlbnRMYXllciA9IGxheWVyUGFyZW50UmVz
cGVjdGluZ1RvcExheWVyKCk7CisgICAgICAgIGlmIChwYXJlbnRMYXllcikKKyAgICAgICAgICAg
IHBhcmVudExheWVyLT5kaXJ0eVZpc2libGVDb250ZW50U3RhdHVzKCk7CiAgICAgfQogCiAgICAg
UmVuZGVyT2JqZWN0OjppbnNlcnRlZEludG9UcmVlKGlzSW50ZXJuYWxNb3ZlKTsKQEAgLTk4Miwx
NiArMTAxNiwxNSBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoSXNJbnRl
cm5hbE1vdmUgaXNJbnRlcm5hbE1vdmUpCiB2b2lkIFJlbmRlckVsZW1lbnQ6OndpbGxCZVJlbW92
ZWRGcm9tVHJlZShJc0ludGVybmFsTW92ZSBpc0ludGVybmFsTW92ZSkKIHsKICAgICAvLyBJZiB3
ZSByZW1vdmUgYSB2aXNpYmxlIGNoaWxkIGZyb20gYW4gaW52aXNpYmxlIHBhcmVudCwgd2UgZG9u
J3Qga25vdyB0aGUgbGF5ZXIgdmlzaWJpbGl0eSBhbnkgbW9yZS4KLSAgICBSZW5kZXJMYXllciog
bGF5ZXIgPSBudWxscHRyOwogICAgIGlmIChwYXJlbnQoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkg
IT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmls
aXR5OjpWaXNpYmxlICYmICFoYXNMYXllcigpKSB7Ci0gICAgICAgIGlmICgobGF5ZXIgPSBwYXJl
bnQoKS0+ZW5jbG9zaW5nTGF5ZXIoKSkpCi0gICAgICAgICAgICBsYXllci0+ZGlydHlWaXNpYmxl
Q29udGVudFN0YXR1cygpOworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGdldCBwYXJlbnQgbGF5
ZXIuIE5lY2Vzc2FyeT8KKyAgICAgICAgaWYgKGF1dG8qIGVuY2xvc2luZ0xheWVyID0gcGFyZW50
KCktPmVuY2xvc2luZ0xheWVyKCkpCisgICAgICAgICAgICBlbmNsb3NpbmdMYXllci0+ZGlydHlW
aXNpYmxlQ29udGVudFN0YXR1cygpOwogICAgIH0KICAgICAvLyBLZWVwIG91ciBsYXllciBoaWVy
YXJjaHkgdXBkYXRlZC4KICAgICBpZiAoZmlyc3RDaGlsZCgpIHx8IGhhc0xheWVyKCkpIHsKLSAg
ICAgICAgaWYgKCFsYXllcikKLSAgICAgICAgICAgIGxheWVyID0gcGFyZW50KCktPmVuY2xvc2lu
Z0xheWVyKCk7Ci0gICAgICAgIHJlbW92ZUxheWVycyhsYXllcik7CisgICAgICAgIGF1dG8qIHBh
cmVudExheWVyID0gbGF5ZXJQYXJlbnRSZXNwZWN0aW5nVG9wTGF5ZXIoKTsKKyAgICAgICAgcmVt
b3ZlTGF5ZXJzKHBhcmVudExheWVyKTsKICAgICB9CiAKICAgICBpZiAoaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkgJiYgcGFyZW50KCktPmNoaWxkcmVuSW5saW5lKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCBmNWUxNmEyMjI5YTdkOTQ4ZGY3MmJkNWQ0Zjgy
NzlmZGY2Njk1ODcwLi4wZWFlY2IwZDI4Nzc1ODlkM2ZjNmFkNGY2MjczN2VmOGJjMWNmNzY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTEwOCwxMCArMTA4
LDEyIEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgdXNlZCB3
aGVuIHRoZSByZW5kZXIgdHJlZSBoaWVyYXJjaHkgY2hhbmdlcyB0byBtYWtlIHN1cmUgbGF5ZXJz
IGdldAogICAgIC8vIHByb3Blcmx5IGFkZGVkIGFuZCByZW1vdmVkLiBTaW5jZSBjb250YWluZXJz
aGlwIGNhbiBiZSBpbXBsZW1lbnRlZCBieSBhbnkgc3ViY2xhc3MsIGFuZCBzaW5jZSBhIGhpZXJh
cmNoeQogICAgIC8vIGNhbiBjb250YWluIGEgbWl4dHVyZSBvZiBib3hlcyBhbmQgb3RoZXIgb2Jq
ZWN0IHR5cGVzLCB0aGVzZSBmdW5jdGlvbnMgbmVlZCB0byBiZSBpbiB0aGUgYmFzZSBjbGFzcy4K
KyAgICBSZW5kZXJMYXllciogbGF5ZXJQYXJlbnRSZXNwZWN0aW5nVG9wTGF5ZXIoKSBjb25zdDsK
KyAgICBSZW5kZXJMYXllciogbGF5ZXJOZXh0U2libGluZ1Jlc3BlY3RpbmdUb3BMYXllcihSZW5k
ZXJMYXllciYgcGFyZW50TGF5ZXIpIGNvbnN0OworCiAgICAgdm9pZCBhZGRMYXllcnMoUmVuZGVy
TGF5ZXIqIHBhcmVudExheWVyKTsKICAgICB2b2lkIHJlbW92ZUxheWVycyhSZW5kZXJMYXllciog
cGFyZW50TGF5ZXIpOwogICAgIHZvaWQgbW92ZUxheWVycyhSZW5kZXJMYXllciogb2xkUGFyZW50
LCBSZW5kZXJMYXllciYgbmV3UGFyZW50KTsKLSAgICBSZW5kZXJMYXllciogZmluZE5leHRMYXll
cihSZW5kZXJMYXllciYgcGFyZW50TGF5ZXIsIGNvbnN0IFJlbmRlck9iamVjdCogc2libGluZ1Rv
VHJhdmVyc2VGcm9tLCBib29sIGNoZWNrUGFyZW50ID0gdHJ1ZSkgY29uc3Q7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyT2JqZWN0JikgeyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDA5NmQ1ZjE3NzIy
N2ZjOWM4NmYyZjU0YTYwNWU3NGQ1OTY3ZWRjNWMuLjA1NWM2YmViY2UwMjk1ZmM5ZGFlYjhiMjU3
MmU3ZGM2ZjViZGE1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cApAQCAtNDgzLDExICs0ODMsMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6aW5zZXJ0T25seVRoaXNM
YXllcihMYXllckNoYW5nZVRpbWluZyB0aW1pbmcpCiAgICAgaWYgKCFtX3BhcmVudCAmJiByZW5k
ZXJlcigpLnBhcmVudCgpKSB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gY29ubmVjdCBvdXJzZWx2
ZXMgd2hlbiBvdXIgcmVuZGVyZXIoKSBoYXMgYSBwYXJlbnQuCiAgICAgICAgIC8vIEZpbmQgb3Vy
IGVuY2xvc2luZ0xheWVyIGFuZCBhZGQgb3Vyc2VsdmVzLgotICAgICAgICBhdXRvKiBwYXJlbnRM
YXllciA9IHJlbmRlcmVyKCkucGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCk7CisgICAgICAgIGF1
dG8qIHBhcmVudExheWVyID0gcmVuZGVyZXIoKS5sYXllclBhcmVudFJlc3BlY3RpbmdUb3BMYXll
cigpOwogICAgICAgICBpZiAoIXBhcmVudExheWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGF1dG8qIGJlZm9yZUNoaWxkID0gcGFyZW50TGF5ZXItPnJlZmxlY3Rpb25MYXllcigp
ICE9IHRoaXMgPyByZW5kZXJlcigpLnBhcmVudCgpLT5maW5kTmV4dExheWVyKCpwYXJlbnRMYXll
ciwgJnJlbmRlcmVyKCkpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byogYmVmb3JlQ2hpbGQgPSBw
YXJlbnRMYXllci0+cmVmbGVjdGlvbkxheWVyKCkgIT0gdGhpcyA/IHJlbmRlcmVyKCkubGF5ZXJO
ZXh0U2libGluZ1Jlc3BlY3RpbmdUb3BMYXllcigqcGFyZW50TGF5ZXIpIDogbnVsbHB0cjsKICAg
ICAgICAgcGFyZW50TGF5ZXItPmFkZENoaWxkKCp0aGlzLCBiZWZvcmVDaGlsZCk7CiAgICAgfQog
CkBAIC02NTMsMTQgKzY1MywxMiBAQCB2b2lkIFJlbmRlckxheWVyOjpzZXRQYXJlbnQoUmVuZGVy
TGF5ZXIqIHBhcmVudCkKIAogUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpzdGFja2luZ0NvbnRl
eHQoKSBjb25zdAogewotICAgIGlmIChlc3RhYmxpc2hlc1RvcExheWVyKCkpCi0gICAgICAgIHJl
dHVybiByZW5kZXJlcigpLnZpZXcoKS5sYXllcigpOwotCiAgICAgYXV0byogbGF5ZXIgPSBwYXJl
bnQoKTsKICAgICB3aGlsZSAobGF5ZXIgJiYgIWxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKQog
ICAgICAgICBsYXllciA9IGxheWVyLT5wYXJlbnQoKTsKIAogICAgIEFTU0VSVCghbGF5ZXIgfHwg
bGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpOworICAgIEFTU0VSVF9JTVBMSUVTKGVzdGFibGlz
aGVzVG9wTGF5ZXIoKSwgIWxheWVyIHx8IGxheWVyID09IHJlbmRlcmVyKCkudmlldygpLmxheWVy
KCkpOwogICAgIHJldHVybiBsYXllcjsKIH0KIApAQCAtMTQ4Miw3ICsxNDgwLDcgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6c2V0SGFzVmlzaWJsZUNvbnRlbnQoKQogICAgICAgICAvLyBXZSBkb24ndCBj
b2xsZWN0IGludmlzaWJsZSBsYXllcnMgaW4gei1vcmRlciBsaXN0cyBpZiB3ZSBhcmUgbm90IGlu
IGNvbXBvc2l0aW5nIG1vZGUuCiAgICAgICAgIC8vIEFzIHdlIGJlY2FtZSB2aXNpYmxlLCB3ZSBu
ZWVkIHRvIGRpcnR5IG91ciBzdGFja2luZyBjb250YWluZXJzIGFuY2VzdG9ycyB0byBiZSBwcm9w
ZXJseQogICAgICAgICAvLyBjb2xsZWN0ZWQuIEZJWE1FOiBXaGVuIGNvbXBvc2l0aW5nLCB3ZSBj
b3VsZCBza2lwIHRoaXMgZGlydHlpbmcgcGhhc2UuCi0gICAgICAgIGZvciAoUmVuZGVyTGF5ZXIq
IHNjID0gc3RhY2tpbmdDb250ZXh0KCk7IHNjOyBzYyA9IHNjLT5zdGFja2luZ0NvbnRleHQoKSkg
eworICAgICAgICBmb3IgKGF1dG8qIHNjID0gc3RhY2tpbmdDb250ZXh0KCk7IHNjOyBzYyA9IHNj
LT5zdGFja2luZ0NvbnRleHQoKSkgewogICAgICAgICAgICAgc2MtPmRpcnR5Wk9yZGVyTGlzdHMo
KTsKICAgICAgICAgICAgIGlmIChzYy0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTE1MDIsNyArMTUwMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRpcnR5
VmlzaWJsZUNvbnRlbnRTdGF0dXMoKQogCiB2b2lkIFJlbmRlckxheWVyOjpkaXJ0eUFuY2VzdG9y
Q2hhaW5WaXNpYmxlRGVzY2VuZGFudFN0YXR1cygpCiB7Ci0gICAgZm9yIChSZW5kZXJMYXllciog
bGF5ZXIgPSB0aGlzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+cGFyZW50KCkpIHsKKyAgICBmb3Ig
KGF1dG8qIGxheWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKSB7CiAg
ICAgICAgIGlmIChsYXllci0+bV92aXNpYmxlRGVzY2VuZGFudFN0YXR1c0RpcnR5KQogICAgICAg
ICAgICAgYnJlYWs7CiAKQEAgLTE1MTIsNyArMTUxMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRp
cnR5QW5jZXN0b3JDaGFpblZpc2libGVEZXNjZW5kYW50U3RhdHVzKCkKIAogdm9pZCBSZW5kZXJM
YXllcjo6c2V0QW5jZXN0b3JDaGFpbkhhc1Zpc2libGVEZXNjZW5kYW50KCkKIHsKLSAgICBmb3Ig
KFJlbmRlckxheWVyKiBsYXllciA9IHRoaXM7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQo
KSkgeworICAgIGZvciAoYXV0byogbGF5ZXIgPSB0aGlzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+
cGFyZW50KCkpIHsKICAgICAgICAgaWYgKHNob3VsZEFwcGx5UGFpbnRDb250YWlubWVudChyZW5k
ZXJlcigpKSkgewogICAgICAgICAgICAgbV9oYXNWaXNpYmxlRGVzY2VuZGFudCA9IHRydWU7CiAg
ICAgICAgICAgICBtX3Zpc2libGVEZXNjZW5kYW50U3RhdHVzRGlydHkgPSBmYWxzZTsKQEAgLTE4
MzYsMTMgKzE4MzQsMTEgQEAgYm9vbCBSZW5kZXJMYXllcjo6YW5jZXN0b3JMYXllcklzSW5Db250
YWluaW5nQmxvY2tDaGFpbihjb25zdCBSZW5kZXJMYXllciYgYW5jZXMKIAogUmVuZGVyTGF5ZXIq
IFJlbmRlckxheWVyOjplbmNsb3NpbmdBbmNlc3RvckZvclBvc2l0aW9uKFBvc2l0aW9uVHlwZSBw
b3NpdGlvbikgY29uc3QKIHsKLSAgICBpZiAoZXN0YWJsaXNoZXNUb3BMYXllcigpKQotICAgICAg
ICByZXR1cm4gcmVuZGVyZXIoKS52aWV3KCkubGF5ZXIoKTsKLQotICAgIFJlbmRlckxheWVyKiBj
dXJyID0gcGFyZW50KCk7CisgICAgYXV0byogY3VyciA9IHBhcmVudCgpOwogICAgIHdoaWxlIChj
dXJyICYmICFpc0NvbnRhaW5lckZvclBvc2l0aW9uZWQoKmN1cnIsIHBvc2l0aW9uLCBlc3RhYmxp
c2hlc1RvcExheWVyKCkpKQogICAgICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7CiAKKyAgICBB
U1NFUlRfSU1QTElFUyhlc3RhYmxpc2hlc1RvcExheWVyKCksICFjdXJyIHx8IGN1cnIgPT0gcmVu
ZGVyZXIoKS52aWV3KCkubGF5ZXIoKSk7CiAgICAgcmV0dXJuIGN1cnI7CiB9CiAKQEAgLTQwMjEs
MTQgKzQwMTcsMTQgQEAgYm9vbCBSZW5kZXJMYXllcjo6ZXN0YWJsaXNoZXNUb3BMYXllcigpIGNv
bnN0CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmVzdGFibGlzaGVzVG9wTGF5ZXJXaWxsQ2hhbmdlKCkK
IHsKLSAgICBkaXJ0eVN0YWNraW5nQ29udGV4dFpPcmRlckxpc3RzKCk7CisgICAgaWYgKGF1dG8q
IHBhcmVudExheWVyID0gcGFyZW50KCkpCisgICAgICAgIHBhcmVudExheWVyLT5yZW1vdmVDaGls
ZCgqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmVzdGFibGlzaGVzVG9wTGF5ZXJEaWRD
aGFuZ2UoKQogewotICAgIGRpcnR5U3RhY2tpbmdDb250ZXh0Wk9yZGVyTGlzdHMoKTsKLSAgICBp
ZiAoaXNTdGFja2luZ0NvbnRleHQoKSkKLSAgICAgICAgZGlydHlaT3JkZXJMaXN0cygpOworICAg
IGlmIChhdXRvKiBwYXJlbnRMYXllciA9IHJlbmRlcmVyKCkubGF5ZXJQYXJlbnRSZXNwZWN0aW5n
VG9wTGF5ZXIoKSkKKyAgICAgICAgcGFyZW50TGF5ZXItPmFkZENoaWxkKCp0aGlzKTsKIH0KIAog
UmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjplbmNsb3NpbmdGcmFnbWVudGVkRmxvd0FuY2VzdG9y
KCkgY29uc3QKQEAgLTQ1ODgsOSArNDU4NCw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0
ZUNsaXBSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHNDb250ZXh0LCBDCiAK
IFJlZjxDbGlwUmVjdHM+IFJlbmRlckxheWVyOjpwYXJlbnRDbGlwUmVjdHMoY29uc3QgQ2xpcFJl
Y3RzQ29udGV4dCYgY2xpcFJlY3RzQ29udGV4dCkgY29uc3QKIHsKLSAgICBBU1NFUlQocGFyZW50
KCkgfHwgZXN0YWJsaXNoZXNUb3BMYXllcigpKTsKKyAgICBBU1NFUlQocGFyZW50KCkpOwogCi0g
ICAgYXV0byBjb250YWluZXJMYXllciA9IGVzdGFibGlzaGVzVG9wTGF5ZXIoKSA/IHJlbmRlcmVy
KCkudmlldygpLmxheWVyKCkgOiBwYXJlbnQoKTsKKyAgICBhdXRvIGNvbnRhaW5lckxheWVyID0g
cGFyZW50KCk7CiAgICAgYXV0byB0ZW1wb3JhcnlQYXJlbnRDbGlwUmVjdHMgPSBbJl0oY29uc3Qg
Q2xpcFJlY3RzQ29udGV4dCYgY2xpcENvbnRleHQpIHsKICAgICAgICAgYXV0byBwYXJlbnRDbGlw
UmVjdHMgPSBDbGlwUmVjdHM6OmNyZWF0ZSgpOwogICAgICAgICBjb250YWluZXJMYXllci0+Y2Fs
Y3VsYXRlQ2xpcFJlY3RzKGNsaXBDb250ZXh0LCBwYXJlbnRDbGlwUmVjdHMpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJi
M2E4NTFmZjlmZTQ5YTVhNmZmZjJiNGM5M2RkMDY3ZWM4OTFhOTcuLjg3ODNlMGY3ZjEwOTJmZWNj
MjdlZDgzMzk4N2ZmMTM3MGFlOTk3MTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMS0x
OCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICA8ZGlh
bG9nPiB3aXRoIHRyYW5zZm9ybWVkIGFuY2VzdG9yIGFzc2VydHMgdW5kZXIgUmVuZGVyR2VvbWV0
cnlNYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NTE5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdEV4cGVjdGF0aW9uczogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90aGUtZGlhbG9nLWVsZW1lbnQvdG9wLWxheWVy
LXBhcmVudC10cmFuc2Zvcm0uaHRtbAorICAgICAgICBubyBsb25nZXIgYXNzZXJ0cy4KKwogMjAy
Mi0wMS0xOSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE51bGwgY2hl
Y2sgcGxheWVyIGluIHRhaW50c09yaWdpbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggY2E2YWY2N2I3
YTBkMTdlMDlmZDA4YTJlNWNkYWRiMzFkMjhiZDVmZC4uODc3ZGZlNDVkZGYxZmY2NzFlZmIyYTRi
NjdhMTE4YjQwMmNlNjdlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMzY4LDggKzIzNjgsNiBA
QCBmYXN0L211bHRpY29sL211bHRpY29sLXdpdGgtY2hpbGQtcmVuZGVyTGF5ZXItZm9yLWlucHV0
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlCiAjIFRvcCBsYXllciB0ZXN0cwogd2Via2l0Lm9yZy9i
LzIyOTMxNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2lu
dGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ctZWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tcmVw
bGFjZWQtcmVuZGVyZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIy
OTMxNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVy
YWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ctZWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tdGFibGUt
Y29sdW1uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLSMgTmVlZHMgbGF5ZXIgcmUtcGFyZW50
aW5nCi13ZWJraXQub3JnL2IvMjM0OTgwIFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ct
ZWxlbWVudC90b3AtbGF5ZXItcGFyZW50LXRyYW5zZm9ybS5odG1sIFsgQ3Jhc2ggXQogCiAjIEFz
c2VydGlvbiBmYWlsdXJlIGluIE1lc3NhZ2VQb3J0Ojpjb250ZXh0RGVzdHJveWVkLCB1c3VhbGx5
IGF0dHJpYnV0ZWQgdG8gbGF0ZXIgdGVzdHMKIHdlYmtpdC5vcmcvYi85NDQ1OCBodHRwL3Rlc3Rz
L3NlY3VyaXR5L01lc3NhZ2VQb3J0L2V2ZW50LWxpc3RlbmVyLWNvbnRleHQuaHRtbCBbIFNraXAg
XQo=
</data>
<flag name="review"
          id="475603"
          type_id="1"
          status="+"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="475612"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449504</attachid>
            <date>2022-01-19 12:05:16 -0800</date>
            <delta_ts>2022-01-19 12:20:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235194-20220119120515.patch</filename>
            <type>text/plain</type>
            <size>18573</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5ZDFmNTQ0YmY1NTRi
NjAxYTIyMWM3ZGNjOTQ5ZjUyZGVlMDNmOC4uZDYxNjNjZjkyNWIyYjdkZjg5ZTUwNGZjNDI4OWI1
YTMxNzA4YzFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAxLTE4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIDxkaWFsb2c+IHdp
dGggdHJhbnNmb3JtZWQgYW5jZXN0b3IgYXNzZXJ0cyB1bmRlciBSZW5kZXJHZW9tZXRyeU1hcAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MTk0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgV2l0aCB0aGlz
IGNoYW5nZSB3ZSByZXBhcmVudCB0aGUgUmVuZGVyTGF5ZXJzIG9mIHRvcCBsYXllciBlbGVtZW50
cyB1bmRlciB0aGUgUmVuZGVyVmlldydzCisgICAgICAgIGxheWVyLiBUaGlzIG1ha2VzIHRoZSBS
ZW5kZXJMYXllciBoaWVyYXJjaHkgYSBjbG9zZXIgbWF0Y2ggdG8gdGhlIGNvbnRhaW5pbmcgYmxv
Y2sKKyAgICAgICAgaGllcmFyY2h5LCBhbmQgbWVhbnMgdGhhdCBhbGwgdGhlIGV4aXN0aW5nIFJl
bmRlckxheWVyIHRyZWUgd2Fsa3MgdGhhdCB1c2UKKyAgICAgICAgcGFyZW50KCkvZmlyc3RDaGls
ZCgpL25leHRTaWJsaW5nKCkgdHJhdmVyc2UgdGhlIHRoZSAidG9wIGxheWVyIiBsYXllcnMgYXMg
Y2hpbGRyZW4gb2YgdGhlCisgICAgICAgIFJlbmRlclZpZXcuIFRoaXMgaW4gdHVybiBtZWFucyB0
aGF0IHRoZSB2YXJpb3VzIGJpdHMgb2YgUmVuZGVyTGF5ZXIgc3RhdGUgdGhhdCB0cmFjayB0aGUK
KyAgICAgICAgc3RhdGUgb2YgZGVzY2VuZGFudHMgKGUuZy4gbV9oYXNWaXNpYmxlRGVzY2VuZGFu
dCwgbV9oYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQsCisgICAgICAgIG1faGFzTm90SXNv
bGF0ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzKSByZWZsZWN0IGRlc2NlbmRlbmN5IGluIHRoZSB0b3At
bGF5ZXItYXdhcmUgaGllcmFyY2h5LgorCisgICAgICAgIE5vdGUgdGhhdCBtX2hhc1Zpc2libGVE
ZXNjZW5kYW50IGlzIGFib3V0IHRoZSBpbmhlcml0ZWQgYHZpc2liaWxpdHlgIHByb3BlcnR5IHdo
aWNoIGZvbGxvd3MKKyAgICAgICAgRE9NIG9yZGVyLCBidXQgc2luY2Ugd2UgY29uc3VsdCBpdCBk
dXJpbmcgcGFpbnRpbmctcmVsYXRlZCB0cmVlIHdhbGtzLCB3ZSB3YW50IHRoaXMgc3RhdGUgdG8K
KyAgICAgICAgcmVmbGVjdCB0aGUgdG9wLWxheWVyLWF3YXJlIHRyZWUuCisgICAgICAgIAorICAg
ICAgICBUaGUgcGF0Y2ggYWRkcyB0b3AtbGF5ZXItYXdhcmUgaGVscGVycyBvbiBSZW5kZXJFbGVt
ZW50IHRvIGZpbmQgdGhlIHBhcmVudCBhbmQgbmV4dCBzaWJsaW5nLAorICAgICAgICBhbmQgdXNl
cyB0aG9zZSB3aGVuIHBhcmVudGluZyBsYXllcnMuCisgICAgICAgIAorICAgICAgICBJbiBhZGRp
dGlvbiwgd2hlbiB0aGUgdG9wIGxheWVyIHN0YXR1cyBjaGFuZ2VzIGZvciBhIFJlbmRlckxheWVy
LCB3ZSB1bnBhcmVudCBhbmQKKyAgICAgICAgcmUtcGFyZW50IGl0cyBsYXllciAod2hpY2ggaW4g
dHVybiBzaG91bGQgdG9nZ2xlIHRoZSByZWxldmFudCBkaXJ0eSBiaXRzKS4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmROZXh0
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJOZXh0U2libGluZ1Jlc3BlY3RpbmdUb3BM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjphZGRMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6bGF5ZXJQYXJlbnRSZXNwZWN0aW5nVG9wTGF5ZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6bGF5ZXJOZXh0U2libGluZ1Jlc3BlY3RpbmdU
b3BMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjppbnNlcnRl
ZEludG9UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OndpbGxCZVJlbW92
ZWRGcm9tVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpmaW5kTmV4dExh
eWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aW5zZXJ0T25seVRoaXNMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6c3RhY2tpbmdDb250ZXh0IGNvbnN0KTogTm8gbmVlZCBmb3IgdGhlIGV4cGxp
Y2l0IGVzdGFibGlzaGVzVG9wTGF5ZXIoKSBjaGVjay4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpzZXRIYXNWaXNpYmxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6ZGlydHlBbmNlc3RvckNoYWluVmlzaWJsZURlc2NlbmRhbnRTdGF0dXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNldEFuY2VzdG9yQ2hhaW5IYXNWaXNpYmxlRGVzY2Vu
ZGFudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZW5jbG9zaW5nQW5jZXN0b3JG
b3JQb3NpdGlvbiBjb25zdCk6IE5vIG5lZWQgZm9yIHRoZSBleHBsaWNpdCBlc3RhYmxpc2hlc1Rv
cExheWVyKCkgY2hlY2suCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZXN0YWJsaXNo
ZXNUb3BMYXllcldpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmVz
dGFibGlzaGVzVG9wTGF5ZXJEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6IE5vIG5lZWQgZm9yIHRoZSBleHBsaWNpdCBl
c3RhYmxpc2hlc1RvcExheWVyKCkgY2hlY2suCisKIDIwMjItMDEtMTkgIFJvYiBCdWlzICA8cmJ1
aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBOdWxsIGNoZWNrIHBsYXllciBpbiB0YWludHNPcmln
aW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCAyNmMy
NTBlMzE5MjhjNzMxMDU3YThlOWM5NTY0Mjk2YTFjMmVmMWZlLi5hOWJkYjlhNzU5NzIwY2RhNmE2
ZWExY2JkYTgxMDQxOWU5ZjVkZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwCkBAIC02MzQsMTEgKzYzNCw2MCBAQCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0
PiBSZW5kZXJFbGVtZW50OjpkZXRhY2hSZW5kZXJlckludGVybmFsKFJlbmRlck9iamVjdCYgcmVu
ZAogICAgIHJldHVybiBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PigmcmVuZGVyZXIpOwogfQogCitz
dGF0aWMgUmVuZGVyTGF5ZXIqIGZpbmROZXh0TGF5ZXIoY29uc3QgUmVuZGVyRWxlbWVudCYgY3Vy
clJlbmRlcmVyLCBSZW5kZXJMYXllciYgcGFyZW50TGF5ZXIsIGNvbnN0IFJlbmRlck9iamVjdCog
c2libGluZ1RvVHJhdmVyc2VGcm9tLCBib29sIGNoZWNrUGFyZW50ID0gdHJ1ZSkKK3sKKyAgICAv
LyBTdGVwIDE6IElmIG91ciBsYXllciBpcyBhIGNoaWxkIG9mIHRoZSBkZXNpcmVkIHBhcmVudCwg
dGhlbiByZXR1cm4gb3VyIGxheWVyLgorICAgIGF1dG8qIG91ckxheWVyID0gY3VyclJlbmRlcmVy
Lmhhc0xheWVyKCkgPyBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PihjdXJyUmVuZGVy
ZXIpLmxheWVyKCkgOiBudWxscHRyOworICAgIGlmIChvdXJMYXllciAmJiBvdXJMYXllci0+cGFy
ZW50KCkgPT0gJnBhcmVudExheWVyKQorICAgICAgICByZXR1cm4gb3VyTGF5ZXI7CisKKyAgICAv
LyBTdGVwIDI6IElmIHdlIGRvbid0IGhhdmUgYSBsYXllciwgb3Igb3VyIGxheWVyIGlzIHRoZSBk
ZXNpcmVkIHBhcmVudCwgdGhlbiBkZXNjZW5kCisgICAgLy8gaW50byBvdXIgc2libGluZ3MgdHJ5
aW5nIHRvIGZpbmQgdGhlIG5leHQgbGF5ZXIgd2hvc2UgcGFyZW50IGlzIHRoZSBkZXNpcmVkIHBh
cmVudC4KKyAgICBpZiAoIW91ckxheWVyIHx8IG91ckxheWVyID09ICZwYXJlbnRMYXllcikgewor
ICAgICAgICBmb3IgKGF1dG8qIGNoaWxkID0gc2libGluZ1RvVHJhdmVyc2VGcm9tID8gc2libGlu
Z1RvVHJhdmVyc2VGcm9tLT5uZXh0U2libGluZygpIDogY3VyclJlbmRlcmVyLmZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlm
ICghaXM8UmVuZGVyRWxlbWVudD4oKmNoaWxkKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGlmIChhdXRvKiBuZXh0TGF5ZXIgPSBmaW5kTmV4dExheWVyKGRvd25jYXN0
PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCksIHBhcmVudExheWVyLCBudWxscHRyLCBmYWxzZSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIG5leHRMYXllcjsKKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vIFN0ZXAgMzogSWYgb3VyIGxheWVyIGlzIHRoZSBkZXNpcmVkIHBhcmVudCBsYXllciwgdGhl
biB3ZSdyZSBmaW5pc2hlZC4gV2UgZGlkbid0CisgICAgLy8gZmluZCBhbnl0aGluZy4KKyAgICBp
ZiAob3VyTGF5ZXIgPT0gJnBhcmVudExheWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIC8vIFN0ZXAgNDogSWYgfGNoZWNrUGFyZW50fCBpcyBzZXQsIGNsaW1iIHVwIHRvIG91ciBw
YXJlbnQgYW5kIGNoZWNrIGl0cyBzaWJsaW5ncyB0aGF0CisgICAgLy8gZm9sbG93IHVzIHRvIHNl
ZSBpZiB3ZSBjYW4gbG9jYXRlIGEgbGF5ZXIuCisgICAgaWYgKGNoZWNrUGFyZW50ICYmIGN1cnJS
ZW5kZXJlci5wYXJlbnQoKSkKKyAgICAgICAgcmV0dXJuIGZpbmROZXh0TGF5ZXIoKmN1cnJSZW5k
ZXJlci5wYXJlbnQoKSwgcGFyZW50TGF5ZXIsICZjdXJyUmVuZGVyZXIsIHRydWUpOworCisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBSZW5kZXJMYXllciogbGF5ZXJOZXh0U2libGlu
Z1Jlc3BlY3RpbmdUb3BMYXllcihjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgUmVuZGVy
TGF5ZXImIHBhcmVudExheWVyKQoreworICAgIEFTU0VSVF9JTVBMSUVTKGlzSW5Ub3BMYXllck9y
QmFja2Ryb3AocmVuZGVyZXIuc3R5bGUoKSwgcmVuZGVyZXIuZWxlbWVudCgpKSwgcmVuZGVyZXIu
aGFzTGF5ZXIoKSk7CisKKyAgICBpZiAoaXM8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4ocmVuZGVy
ZXIpICYmIGlzSW5Ub3BMYXllck9yQmFja2Ryb3AocmVuZGVyZXIuc3R5bGUoKSwgcmVuZGVyZXIu
ZWxlbWVudCgpKSkgeworICAgICAgICBhdXRvJiBsYXllck1vZGVsT2JqZWN0ID0gZG93bmNhc3Q8
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4ocmVuZGVyZXIpOworICAgICAgICBBU1NFUlQobGF5ZXJN
b2RlbE9iamVjdC5oYXNMYXllcigpKTsKKyAgICAgICAgYXV0byB0b3BMYXllckxheWVycyA9IFJl
bmRlckxheWVyOjp0b3BMYXllclJlbmRlckxheWVycyhyZW5kZXJlci52aWV3KCkpOworICAgICAg
ICBhdXRvIGxheWVySW5kZXggPSB0b3BMYXllckxheWVycy5maW5kKGxheWVyTW9kZWxPYmplY3Qu
bGF5ZXIoKSk7CisgICAgICAgIGlmIChsYXllckluZGV4ICE9IG5vdEZvdW5kICYmIGxheWVySW5k
ZXggPCB0b3BMYXllckxheWVycy5zaXplKCkgLSAxKQorICAgICAgICAgICAgcmV0dXJuIHRvcExh
eWVyTGF5ZXJzW2xheWVySW5kZXggKyAxXTsKKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmluZE5leHRMYXllcigqcmVuZGVyZXIucGFyZW50KCksIHBhcmVu
dExheWVyLCAmcmVuZGVyZXIpOworfQorCiBzdGF0aWMgdm9pZCBhZGRMYXllcnMoY29uc3QgUmVu
ZGVyRWxlbWVudCYgYWRkZWRSZW5kZXJlciwgUmVuZGVyRWxlbWVudCYgY3VycmVudFJlbmRlcmVy
LCBSZW5kZXJMYXllciYgcGFyZW50TGF5ZXIsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyTGF5ZXIqPiYg
YmVmb3JlQ2hpbGQpCiB7CiAgICAgaWYgKGN1cnJlbnRSZW5kZXJlci5oYXNMYXllcigpKSB7CiAg
ICAgICAgIGlmICghYmVmb3JlQ2hpbGQuaGFzX3ZhbHVlKCkpCi0gICAgICAgICAgICBiZWZvcmVD
aGlsZCA9IGFkZGVkUmVuZGVyZXIucGFyZW50KCktPmZpbmROZXh0TGF5ZXIocGFyZW50TGF5ZXIs
ICZhZGRlZFJlbmRlcmVyKTsKKyAgICAgICAgICAgIGJlZm9yZUNoaWxkID0gbGF5ZXJOZXh0U2li
bGluZ1Jlc3BlY3RpbmdUb3BMYXllcihhZGRlZFJlbmRlcmVyLCBwYXJlbnRMYXllcik7CiAKICAg
ICAgICAgcGFyZW50TGF5ZXIuYWRkQ2hpbGQoKmRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmpl
Y3Q+KGN1cnJlbnRSZW5kZXJlcikubGF5ZXIoKSwgYmVmb3JlQ2hpbGQudmFsdWUoKSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTY4NiwzNSArNzM1LDIwIEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6bW92
ZUxheWVycyhSZW5kZXJMYXllciogb2xkUGFyZW50LCBSZW5kZXJMYXllciYgbmV3UGFyZW50KQog
ICAgICAgICBjaGlsZC5tb3ZlTGF5ZXJzKG9sZFBhcmVudCwgbmV3UGFyZW50KTsKIH0KIAotUmVu
ZGVyTGF5ZXIqIFJlbmRlckVsZW1lbnQ6OmZpbmROZXh0TGF5ZXIoUmVuZGVyTGF5ZXImIHBhcmVu
dExheWVyLCBjb25zdCBSZW5kZXJPYmplY3QqIHNpYmxpbmdUb1RyYXZlcnNlRnJvbSwgYm9vbCBj
aGVja1BhcmVudCkgY29uc3QKK1JlbmRlckxheWVyKiBSZW5kZXJFbGVtZW50OjpsYXllclBhcmVu
dCgpIGNvbnN0CiB7Ci0gICAgLy8gU3RlcCAxOiBJZiBvdXIgbGF5ZXIgaXMgYSBjaGlsZCBvZiB0
aGUgZGVzaXJlZCBwYXJlbnQsIHRoZW4gcmV0dXJuIG91ciBsYXllci4KLSAgICBhdXRvKiBvdXJM
YXllciA9IGhhc0xheWVyKCkgPyBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhp
cykubGF5ZXIoKSA6IG51bGxwdHI7Ci0gICAgaWYgKG91ckxheWVyICYmIG91ckxheWVyLT5wYXJl
bnQoKSA9PSAmcGFyZW50TGF5ZXIpCi0gICAgICAgIHJldHVybiBvdXJMYXllcjsKKyAgICBBU1NF
UlRfSU1QTElFUyhpc0luVG9wTGF5ZXJPckJhY2tkcm9wKHN0eWxlKCksIGVsZW1lbnQoKSksIGhh
c0xheWVyKCkpOwogCi0gICAgLy8gU3RlcCAyOiBJZiB3ZSBkb24ndCBoYXZlIGEgbGF5ZXIsIG9y
IG91ciBsYXllciBpcyB0aGUgZGVzaXJlZCBwYXJlbnQsIHRoZW4gZGVzY2VuZAotICAgIC8vIGlu
dG8gb3VyIHNpYmxpbmdzIHRyeWluZyB0byBmaW5kIHRoZSBuZXh0IGxheWVyIHdob3NlIHBhcmVu
dCBpcyB0aGUgZGVzaXJlZCBwYXJlbnQuCi0gICAgaWYgKCFvdXJMYXllciB8fCBvdXJMYXllciA9
PSAmcGFyZW50TGF5ZXIpIHsKLSAgICAgICAgZm9yIChhdXRvKiBjaGlsZCA9IHNpYmxpbmdUb1Ry
YXZlcnNlRnJvbSA/IHNpYmxpbmdUb1RyYXZlcnNlRnJvbS0+bmV4dFNpYmxpbmcoKSA6IGZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAg
ICAgIGlmICghaXM8UmVuZGVyRWxlbWVudD4oKmNoaWxkKSkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBuZXh0TGF5ZXIgPSBkb3duY2FzdDxSZW5kZXJF
bGVtZW50PigqY2hpbGQpLmZpbmROZXh0TGF5ZXIocGFyZW50TGF5ZXIsIG51bGxwdHIsIGZhbHNl
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV4dExheWVyOwotICAgICAgICB9Ci0gICAgfQor
ICAgIGlmIChoYXNMYXllcigpICYmIGlzSW5Ub3BMYXllck9yQmFja2Ryb3Aoc3R5bGUoKSwgZWxl
bWVudCgpKSkKKyAgICAgICAgcmV0dXJuIHZpZXcoKS5sYXllcigpOwogCi0gICAgLy8gU3RlcCAz
OiBJZiBvdXIgbGF5ZXIgaXMgdGhlIGRlc2lyZWQgcGFyZW50IGxheWVyLCB0aGVuIHdlJ3JlIGZp
bmlzaGVkLiBXZSBkaWRuJ3QKLSAgICAvLyBmaW5kIGFueXRoaW5nLgotICAgIGlmIChvdXJMYXll
ciA9PSAmcGFyZW50TGF5ZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgLy8gU3Rl
cCA0OiBJZiB8Y2hlY2tQYXJlbnR8IGlzIHNldCwgY2xpbWIgdXAgdG8gb3VyIHBhcmVudCBhbmQg
Y2hlY2sgaXRzIHNpYmxpbmdzIHRoYXQKLSAgICAvLyBmb2xsb3cgdXMgdG8gc2VlIGlmIHdlIGNh
biBsb2NhdGUgYSBsYXllci4KLSAgICBpZiAoY2hlY2tQYXJlbnQgJiYgcGFyZW50KCkpCi0gICAg
ICAgIHJldHVybiBwYXJlbnQoKS0+ZmluZE5leHRMYXllcihwYXJlbnRMYXllciwgdGhpcywgdHJ1
ZSk7CisgICAgcmV0dXJuIHBhcmVudCgpLT5lbmNsb3NpbmdMYXllcigpOworfQogCi0gICAgcmV0
dXJuIG51bGxwdHI7CisvLyBUaGlzIGFuc3dlcnMgdGhlIHF1ZXN0aW9uICJpZiB0aGlzIHJlbmRl
cmVyIGhhZCBhIGxheWVyLCB3aGF0IHdvdWxkIGl0cyBuZXh0IHNpYmxpbmcgbGF5ZXIgYmUiLgor
UmVuZGVyTGF5ZXIqIFJlbmRlckVsZW1lbnQ6OmxheWVyTmV4dFNpYmxpbmcoUmVuZGVyTGF5ZXIm
IHBhcmVudExheWVyKSBjb25zdAoreworICAgIHJldHVybiBXZWJDb3JlOjpsYXllck5leHRTaWJs
aW5nUmVzcGVjdGluZ1RvcExheWVyKCp0aGlzLCBwYXJlbnRMYXllcik7CiB9CiAKIGJvb2wgUmVu
ZGVyRWxlbWVudDo6bGF5ZXJDcmVhdGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkgY29uc3QKQEAgLTk2
MSwxOSArOTk1LDE5IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShJc0lu
dGVybmFsTW92ZSBpc0ludGVybmFsTW92ZSkKIHsKICAgICAvLyBLZWVwIG91ciBsYXllciBoaWVy
YXJjaHkgdXBkYXRlZC4gT3B0aW1pemUgZm9yIHRoZSBjb21tb24gY2FzZSB3aGVyZSB3ZSBkb24n
dCBoYXZlIGFueSBjaGlsZHJlbgogICAgIC8vIGFuZCBkb24ndCBoYXZlIGEgbGF5ZXIgYXR0YWNo
ZWQgdG8gb3Vyc2VsdmVzLgotICAgIFJlbmRlckxheWVyKiBsYXllciA9IG51bGxwdHI7CisgICAg
UmVuZGVyTGF5ZXIqIHBhcmVudExheWVyID0gbnVsbHB0cjsKICAgICBpZiAoZmlyc3RDaGlsZCgp
IHx8IGhhc0xheWVyKCkpIHsKLSAgICAgICAgbGF5ZXIgPSBwYXJlbnQoKS0+ZW5jbG9zaW5nTGF5
ZXIoKTsKLSAgICAgICAgYWRkTGF5ZXJzKGxheWVyKTsKKyAgICAgICAgYXV0byogcGFyZW50TGF5
ZXIgPSBsYXllclBhcmVudCgpOworICAgICAgICBhZGRMYXllcnMocGFyZW50TGF5ZXIpOwogICAg
IH0KIAogICAgIC8vIElmIHx0aGlzfCBpcyB2aXNpYmxlIGJ1dCB0aGlzIG9iamVjdCB3YXMgbm90
LCB0ZWxsIHRoZSBsYXllciBpdCBoYXMgc29tZSB2aXNpYmxlIGNvbnRlbnQKICAgICAvLyB0aGF0
IG5lZWRzIHRvIGJlIGRyYXduIGFuZCBsYXllciB2aXNpYmlsaXR5IG9wdGltaXphdGlvbiBjYW4n
dCBiZSB1c2VkCiAgICAgaWYgKHBhcmVudCgpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNp
YmlsaXR5OjpWaXNpYmxlICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZp
c2libGUgJiYgIWhhc0xheWVyKCkpIHsKLSAgICAgICAgaWYgKCFsYXllcikKLSAgICAgICAgICAg
IGxheWVyID0gcGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgICAgIGlmIChsYXllcikK
LSAgICAgICAgICAgIGxheWVyLT5kaXJ0eVZpc2libGVDb250ZW50U3RhdHVzKCk7CisgICAgICAg
IGlmICghcGFyZW50TGF5ZXIpCisgICAgICAgICAgICBwYXJlbnRMYXllciA9IGxheWVyUGFyZW50
KCk7CisgICAgICAgIGlmIChwYXJlbnRMYXllcikKKyAgICAgICAgICAgIHBhcmVudExheWVyLT5k
aXJ0eVZpc2libGVDb250ZW50U3RhdHVzKCk7CiAgICAgfQogCiAgICAgUmVuZGVyT2JqZWN0Ojpp
bnNlcnRlZEludG9UcmVlKGlzSW50ZXJuYWxNb3ZlKTsKQEAgLTk4MiwxNiArMTAxNiwxNSBAQCB2
b2lkIFJlbmRlckVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoSXNJbnRlcm5hbE1vdmUgaXNJbnRl
cm5hbE1vdmUpCiB2b2lkIFJlbmRlckVsZW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9tVHJlZShJc0lu
dGVybmFsTW92ZSBpc0ludGVybmFsTW92ZSkKIHsKICAgICAvLyBJZiB3ZSByZW1vdmUgYSB2aXNp
YmxlIGNoaWxkIGZyb20gYW4gaW52aXNpYmxlIHBhcmVudCwgd2UgZG9uJ3Qga25vdyB0aGUgbGF5
ZXIgdmlzaWJpbGl0eSBhbnkgbW9yZS4KLSAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBudWxscHRy
OwogICAgIGlmIChwYXJlbnQoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6
VmlzaWJsZSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYm
ICFoYXNMYXllcigpKSB7Ci0gICAgICAgIGlmICgobGF5ZXIgPSBwYXJlbnQoKS0+ZW5jbG9zaW5n
TGF5ZXIoKSkpCi0gICAgICAgICAgICBsYXllci0+ZGlydHlWaXNpYmxlQ29udGVudFN0YXR1cygp
OworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGdldCBwYXJlbnQgbGF5ZXIuIE5lY2Vzc2FyeT8K
KyAgICAgICAgaWYgKGF1dG8qIGVuY2xvc2luZ0xheWVyID0gcGFyZW50KCktPmVuY2xvc2luZ0xh
eWVyKCkpCisgICAgICAgICAgICBlbmNsb3NpbmdMYXllci0+ZGlydHlWaXNpYmxlQ29udGVudFN0
YXR1cygpOwogICAgIH0KICAgICAvLyBLZWVwIG91ciBsYXllciBoaWVyYXJjaHkgdXBkYXRlZC4K
ICAgICBpZiAoZmlyc3RDaGlsZCgpIHx8IGhhc0xheWVyKCkpIHsKLSAgICAgICAgaWYgKCFsYXll
cikKLSAgICAgICAgICAgIGxheWVyID0gcGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAg
ICAgIHJlbW92ZUxheWVycyhsYXllcik7CisgICAgICAgIGF1dG8qIHBhcmVudExheWVyID0gbGF5
ZXJQYXJlbnQoKTsKKyAgICAgICAgcmVtb3ZlTGF5ZXJzKHBhcmVudExheWVyKTsKICAgICB9CiAK
ICAgICBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgcGFyZW50KCktPmNoaWxkcmVuSW5s
aW5lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCBmNWUx
NmEyMjI5YTdkOTQ4ZGY3MmJkNWQ0ZjgyNzlmZGY2Njk1ODcwLi5hNjJmNGZlNTAzMDE4MzAxNjg3
YTE4Mjk0ODAxOGI2NGExZGJhZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmgKQEAgLTEwOCwxMCArMTA4LDExIEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93
aW5nIGZ1bmN0aW9ucyBhcmUgdXNlZCB3aGVuIHRoZSByZW5kZXIgdHJlZSBoaWVyYXJjaHkgY2hh
bmdlcyB0byBtYWtlIHN1cmUgbGF5ZXJzIGdldAogICAgIC8vIHByb3Blcmx5IGFkZGVkIGFuZCBy
ZW1vdmVkLiBTaW5jZSBjb250YWluZXJzaGlwIGNhbiBiZSBpbXBsZW1lbnRlZCBieSBhbnkgc3Vi
Y2xhc3MsIGFuZCBzaW5jZSBhIGhpZXJhcmNoeQogICAgIC8vIGNhbiBjb250YWluIGEgbWl4dHVy
ZSBvZiBib3hlcyBhbmQgb3RoZXIgb2JqZWN0IHR5cGVzLCB0aGVzZSBmdW5jdGlvbnMgbmVlZCB0
byBiZSBpbiB0aGUgYmFzZSBjbGFzcy4KKyAgICBSZW5kZXJMYXllciogbGF5ZXJQYXJlbnQoKSBj
b25zdDsKKyAgICBSZW5kZXJMYXllciogbGF5ZXJOZXh0U2libGluZyhSZW5kZXJMYXllciYgcGFy
ZW50TGF5ZXIpIGNvbnN0OwogICAgIHZvaWQgYWRkTGF5ZXJzKFJlbmRlckxheWVyKiBwYXJlbnRM
YXllcik7CiAgICAgdm9pZCByZW1vdmVMYXllcnMoUmVuZGVyTGF5ZXIqIHBhcmVudExheWVyKTsK
ICAgICB2b2lkIG1vdmVMYXllcnMoUmVuZGVyTGF5ZXIqIG9sZFBhcmVudCwgUmVuZGVyTGF5ZXIm
IG5ld1BhcmVudCk7Ci0gICAgUmVuZGVyTGF5ZXIqIGZpbmROZXh0TGF5ZXIoUmVuZGVyTGF5ZXIm
IHBhcmVudExheWVyLCBjb25zdCBSZW5kZXJPYmplY3QqIHNpYmxpbmdUb1RyYXZlcnNlRnJvbSwg
Ym9vbCBjaGVja1BhcmVudCA9IHRydWUpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGRpcnR5
TGluZXNGcm9tQ2hhbmdlZENoaWxkKFJlbmRlck9iamVjdCYpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAwOTZkNWYxNzcyMjdmYzljODZmMmY1NGE2
MDVlNzRkNTk2N2VkYzVjLi42MGE5MThhOGJkOTExMzAzYjAzNmJhNDVmMTYzNDYzMjY3OWFkMmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTQ4MywxMSAr
NDgzLDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6Omluc2VydE9ubHlUaGlzTGF5ZXIoTGF5ZXJDaGFu
Z2VUaW1pbmcgdGltaW5nKQogICAgIGlmICghbV9wYXJlbnQgJiYgcmVuZGVyZXIoKS5wYXJlbnQo
KSkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIGNvbm5lY3Qgb3Vyc2VsdmVzIHdoZW4gb3VyIHJl
bmRlcmVyKCkgaGFzIGEgcGFyZW50LgogICAgICAgICAvLyBGaW5kIG91ciBlbmNsb3NpbmdMYXll
ciBhbmQgYWRkIG91cnNlbHZlcy4KLSAgICAgICAgYXV0byogcGFyZW50TGF5ZXIgPSByZW5kZXJl
cigpLnBhcmVudCgpLT5lbmNsb3NpbmdMYXllcigpOworICAgICAgICBhdXRvKiBwYXJlbnRMYXll
ciA9IHJlbmRlcmVyKCkubGF5ZXJQYXJlbnQoKTsKICAgICAgICAgaWYgKCFwYXJlbnRMYXllcikK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvKiBiZWZvcmVDaGlsZCA9IHBhcmVu
dExheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKSAhPSB0aGlzID8gcmVuZGVyZXIoKS5wYXJlbnQoKS0+
ZmluZE5leHRMYXllcigqcGFyZW50TGF5ZXIsICZyZW5kZXJlcigpKSA6IG51bGxwdHI7CisgICAg
ICAgIGF1dG8qIGJlZm9yZUNoaWxkID0gcGFyZW50TGF5ZXItPnJlZmxlY3Rpb25MYXllcigpICE9
IHRoaXMgPyByZW5kZXJlcigpLmxheWVyTmV4dFNpYmxpbmcoKnBhcmVudExheWVyKSA6IG51bGxw
dHI7CiAgICAgICAgIHBhcmVudExheWVyLT5hZGRDaGlsZCgqdGhpcywgYmVmb3JlQ2hpbGQpOwog
ICAgIH0KIApAQCAtNjUzLDE0ICs2NTMsMTIgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0UGFyZW50
KFJlbmRlckxheWVyKiBwYXJlbnQpCiAKIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6c3RhY2tp
bmdDb250ZXh0KCkgY29uc3QKIHsKLSAgICBpZiAoZXN0YWJsaXNoZXNUb3BMYXllcigpKQotICAg
ICAgICByZXR1cm4gcmVuZGVyZXIoKS52aWV3KCkubGF5ZXIoKTsKLQogICAgIGF1dG8qIGxheWVy
ID0gcGFyZW50KCk7CiAgICAgd2hpbGUgKGxheWVyICYmICFsYXllci0+aXNTdGFja2luZ0NvbnRl
eHQoKSkKICAgICAgICAgbGF5ZXIgPSBsYXllci0+cGFyZW50KCk7CiAKICAgICBBU1NFUlQoIWxh
eWVyIHx8IGxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKTsKKyAgICBBU1NFUlRfSU1QTElFUyhl
c3RhYmxpc2hlc1RvcExheWVyKCksICFsYXllciB8fCBsYXllciA9PSByZW5kZXJlcigpLnZpZXco
KS5sYXllcigpKTsKICAgICByZXR1cm4gbGF5ZXI7CiB9CiAKQEAgLTE0ODIsNyArMTQ4MCw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnNldEhhc1Zpc2libGVDb250ZW50KCkKICAgICAgICAgLy8gV2Ug
ZG9uJ3QgY29sbGVjdCBpbnZpc2libGUgbGF5ZXJzIGluIHotb3JkZXIgbGlzdHMgaWYgd2UgYXJl
IG5vdCBpbiBjb21wb3NpdGluZyBtb2RlLgogICAgICAgICAvLyBBcyB3ZSBiZWNhbWUgdmlzaWJs
ZSwgd2UgbmVlZCB0byBkaXJ0eSBvdXIgc3RhY2tpbmcgY29udGFpbmVycyBhbmNlc3RvcnMgdG8g
YmUgcHJvcGVybHkKICAgICAgICAgLy8gY29sbGVjdGVkLiBGSVhNRTogV2hlbiBjb21wb3NpdGlu
Zywgd2UgY291bGQgc2tpcCB0aGlzIGRpcnR5aW5nIHBoYXNlLgotICAgICAgICBmb3IgKFJlbmRl
ckxheWVyKiBzYyA9IHN0YWNraW5nQ29udGV4dCgpOyBzYzsgc2MgPSBzYy0+c3RhY2tpbmdDb250
ZXh0KCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiBzYyA9IHN0YWNraW5nQ29udGV4dCgpOyBzYzsg
c2MgPSBzYy0+c3RhY2tpbmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgIHNjLT5kaXJ0eVpPcmRl
ckxpc3RzKCk7CiAgICAgICAgICAgICBpZiAoc2MtPmhhc1Zpc2libGVDb250ZW50KCkpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTAyLDcgKzE1MDAsNyBAQCB2b2lkIFJlbmRlckxheWVy
OjpkaXJ0eVZpc2libGVDb250ZW50U3RhdHVzKCkKIAogdm9pZCBSZW5kZXJMYXllcjo6ZGlydHlB
bmNlc3RvckNoYWluVmlzaWJsZURlc2NlbmRhbnRTdGF0dXMoKQogewotICAgIGZvciAoUmVuZGVy
TGF5ZXIqIGxheWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKSB7Cisg
ICAgZm9yIChhdXRvKiBsYXllciA9IHRoaXM7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQo
KSkgewogICAgICAgICBpZiAobGF5ZXItPm1fdmlzaWJsZURlc2NlbmRhbnRTdGF0dXNEaXJ0eSkK
ICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0xNTEyLDcgKzE1MTAsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpkaXJ0eUFuY2VzdG9yQ2hhaW5WaXNpYmxlRGVzY2VuZGFudFN0YXR1cygpCiAKIHZvaWQg
UmVuZGVyTGF5ZXI6OnNldEFuY2VzdG9yQ2hhaW5IYXNWaXNpYmxlRGVzY2VuZGFudCgpCiB7Ci0g
ICAgZm9yIChSZW5kZXJMYXllciogbGF5ZXIgPSB0aGlzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+
cGFyZW50KCkpIHsKKyAgICBmb3IgKGF1dG8qIGxheWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0g
bGF5ZXItPnBhcmVudCgpKSB7CiAgICAgICAgIGlmIChzaG91bGRBcHBseVBhaW50Q29udGFpbm1l
bnQocmVuZGVyZXIoKSkpIHsKICAgICAgICAgICAgIG1faGFzVmlzaWJsZURlc2NlbmRhbnQgPSB0
cnVlOwogICAgICAgICAgICAgbV92aXNpYmxlRGVzY2VuZGFudFN0YXR1c0RpcnR5ID0gZmFsc2U7
CkBAIC0xODM2LDEzICsxODM0LDExIEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmFuY2VzdG9yTGF5ZXJJ
c0luQ29udGFpbmluZ0Jsb2NrQ2hhaW4oY29uc3QgUmVuZGVyTGF5ZXImIGFuY2VzCiAKIFJlbmRl
ckxheWVyKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nQW5jZXN0b3JGb3JQb3NpdGlvbihQb3NpdGlv
blR5cGUgcG9zaXRpb24pIGNvbnN0CiB7Ci0gICAgaWYgKGVzdGFibGlzaGVzVG9wTGF5ZXIoKSkK
LSAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCkudmlldygpLmxheWVyKCk7Ci0KLSAgICBSZW5kZXJM
YXllciogY3VyciA9IHBhcmVudCgpOworICAgIGF1dG8qIGN1cnIgPSBwYXJlbnQoKTsKICAgICB3
aGlsZSAoY3VyciAmJiAhaXNDb250YWluZXJGb3JQb3NpdGlvbmVkKCpjdXJyLCBwb3NpdGlvbiwg
ZXN0YWJsaXNoZXNUb3BMYXllcigpKSkKICAgICAgICAgY3VyciA9IGN1cnItPnBhcmVudCgpOwog
CisgICAgQVNTRVJUX0lNUExJRVMoZXN0YWJsaXNoZXNUb3BMYXllcigpLCAhY3VyciB8fCBjdXJy
ID09IHJlbmRlcmVyKCkudmlldygpLmxheWVyKCkpOwogICAgIHJldHVybiBjdXJyOwogfQogCkBA
IC00MDIxLDE0ICs0MDE3LDE0IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmVzdGFibGlzaGVzVG9wTGF5
ZXIoKSBjb25zdAogCiB2b2lkIFJlbmRlckxheWVyOjplc3RhYmxpc2hlc1RvcExheWVyV2lsbENo
YW5nZSgpCiB7Ci0gICAgZGlydHlTdGFja2luZ0NvbnRleHRaT3JkZXJMaXN0cygpOworICAgIGlm
IChhdXRvKiBwYXJlbnRMYXllciA9IHBhcmVudCgpKQorICAgICAgICBwYXJlbnRMYXllci0+cmVt
b3ZlQ2hpbGQoKnRoaXMpOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjplc3RhYmxpc2hlc1RvcExh
eWVyRGlkQ2hhbmdlKCkKIHsKLSAgICBkaXJ0eVN0YWNraW5nQ29udGV4dFpPcmRlckxpc3RzKCk7
Ci0gICAgaWYgKGlzU3RhY2tpbmdDb250ZXh0KCkpCi0gICAgICAgIGRpcnR5Wk9yZGVyTGlzdHMo
KTsKKyAgICBpZiAoYXV0byogcGFyZW50TGF5ZXIgPSByZW5kZXJlcigpLmxheWVyUGFyZW50KCkp
CisgICAgICAgIHBhcmVudExheWVyLT5hZGRDaGlsZCgqdGhpcyk7CiB9CiAKIFJlbmRlckxheWVy
KiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3dBbmNlc3RvcigpIGNvbnN0CkBA
IC00NTg4LDkgKzQ1ODQsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMo
Y29uc3QgQ2xpcFJlY3RzQ29udGV4dCYgY2xpcFJlY3RzQ29udGV4dCwgQwogCiBSZWY8Q2xpcFJl
Y3RzPiBSZW5kZXJMYXllcjo6cGFyZW50Q2xpcFJlY3RzKGNvbnN0IENsaXBSZWN0c0NvbnRleHQm
IGNsaXBSZWN0c0NvbnRleHQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHBhcmVudCgpIHx8IGVzdGFi
bGlzaGVzVG9wTGF5ZXIoKSk7CisgICAgQVNTRVJUKHBhcmVudCgpKTsKIAotICAgIGF1dG8gY29u
dGFpbmVyTGF5ZXIgPSBlc3RhYmxpc2hlc1RvcExheWVyKCkgPyByZW5kZXJlcigpLnZpZXcoKS5s
YXllcigpIDogcGFyZW50KCk7CisgICAgYXV0byBjb250YWluZXJMYXllciA9IHBhcmVudCgpOwog
ICAgIGF1dG8gdGVtcG9yYXJ5UGFyZW50Q2xpcFJlY3RzID0gWyZdKGNvbnN0IENsaXBSZWN0c0Nv
bnRleHQmIGNsaXBDb250ZXh0KSB7CiAgICAgICAgIGF1dG8gcGFyZW50Q2xpcFJlY3RzID0gQ2xp
cFJlY3RzOjpjcmVhdGUoKTsKICAgICAgICAgY29udGFpbmVyTGF5ZXItPmNhbGN1bGF0ZUNsaXBS
ZWN0cyhjbGlwQ29udGV4dCwgcGFyZW50Q2xpcFJlY3RzKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyYjNhODUxZmY5ZmU0
OWE1YTZmZmYyYjRjOTNkZDA2N2VjODkxYTk3Li42NDlhMzhkMzNmNTQ0NTdmNDc1NmI3YmJmNzFk
NzdmYTc4YmY3ZjllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMTggIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgPGRpYWxvZz4gd2l0aCB0
cmFuc2Zvcm1lZCBhbmNlc3RvciBhc3NlcnRzIHVuZGVyIFJlbmRlckdlb21ldHJ5TWFwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUxOTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICAqIFRlc3RFeHBlY3Rh
dGlvbnM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50
ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L3RvcC1sYXllci1wYXJlbnQtdHJh
bnNmb3JtLmh0bWwKKyAgICAgICAgbm8gbG9uZ2VyIGFzc2VydHMuCisKIDIwMjItMDEtMTkgIFJv
YiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBOdWxsIGNoZWNrIHBsYXllciBp
biB0YWludHNPcmlnaW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGNhNmFmNjdiN2EwZDE3ZTA5ZmQw
OGEyZTVjZGFkYjMxZDI4YmQ1ZmQuLjg3N2RmZTQ1ZGRmMWZmNjcxZWZiMmE0YjY3YTExOGI0MDJj
ZTY3ZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjM2OCw4ICsyMzY4LDYgQEAgZmFzdC9tdWx0
aWNvbC9tdWx0aWNvbC13aXRoLWNoaWxkLXJlbmRlckxheWVyLWZvci1pbnB1dC5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZQogIyBUb3AgbGF5ZXIgdGVzdHMKIHdlYmtpdC5vcmcvYi8yMjkzMTUgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1l
bGVtZW50cy90aGUtZGlhbG9nLWVsZW1lbnQvbW9kYWwtZGlhbG9nLWluLXJlcGxhY2VkLXJlbmRl
cmVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMjkzMTUgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVt
ZW50cy90aGUtZGlhbG9nLWVsZW1lbnQvbW9kYWwtZGlhbG9nLWluLXRhYmxlLWNvbHVtbi5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi0jIE5lZWRzIGxheWVyIHJlLXBhcmVudGluZwotd2Via2l0
Lm9yZy9iLzIzNDk4MCBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90aGUtZGlhbG9nLWVsZW1lbnQvdG9w
LWxheWVyLXBhcmVudC10cmFuc2Zvcm0uaHRtbCBbIENyYXNoIF0KIAogIyBBc3NlcnRpb24gZmFp
bHVyZSBpbiBNZXNzYWdlUG9ydDo6Y29udGV4dERlc3Ryb3llZCwgdXN1YWxseSBhdHRyaWJ1dGVk
IHRvIGxhdGVyIHRlc3RzCiB3ZWJraXQub3JnL2IvOTQ0NTggaHR0cC90ZXN0cy9zZWN1cml0eS9N
ZXNzYWdlUG9ydC9ldmVudC1saXN0ZW5lci1jb250ZXh0Lmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449506</attachid>
            <date>2022-01-19 12:20:00 -0800</date>
            <delta_ts>2022-01-19 19:54:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235194-20220119121959.patch</filename>
            <type>text/plain</type>
            <size>19905</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5ZDFmNTQ0YmY1NTRi
NjAxYTIyMWM3ZGNjOTQ5ZjUyZGVlMDNmOC4uNTFlMjE1Mjc1ZTVmZWI2NzI5YzU0ZTRlMzkxNTE3
NTk2MzNiZmVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIyLTAxLTE4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIDxkaWFsb2c+IHdp
dGggdHJhbnNmb3JtZWQgYW5jZXN0b3IgYXNzZXJ0cyB1bmRlciBSZW5kZXJHZW9tZXRyeU1hcAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MTk0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgV2l0aCB0aGlz
IGNoYW5nZSB3ZSByZXBhcmVudCB0aGUgUmVuZGVyTGF5ZXJzIG9mIHRvcCBsYXllciBlbGVtZW50
cyB1bmRlciB0aGUgUmVuZGVyVmlldydzCisgICAgICAgIGxheWVyLiBUaGlzIG1ha2VzIHRoZSBS
ZW5kZXJMYXllciBoaWVyYXJjaHkgYSBjbG9zZXIgbWF0Y2ggdG8gdGhlIGNvbnRhaW5pbmcgYmxv
Y2sKKyAgICAgICAgaGllcmFyY2h5LCBhbmQgbWVhbnMgdGhhdCBhbGwgdGhlIGV4aXN0aW5nIFJl
bmRlckxheWVyIHRyZWUgd2Fsa3MgdGhhdCB1c2UKKyAgICAgICAgcGFyZW50KCkvZmlyc3RDaGls
ZCgpL25leHRTaWJsaW5nKCkgdHJhdmVyc2UgdGhlIHRoZSAidG9wIGxheWVyIiBsYXllcnMgYXMg
Y2hpbGRyZW4gb2YgdGhlCisgICAgICAgIFJlbmRlclZpZXcuIFRoaXMgaW4gdHVybiBtZWFucyB0
aGF0IHRoZSB2YXJpb3VzIGJpdHMgb2YgUmVuZGVyTGF5ZXIgc3RhdGUgdGhhdCB0cmFjayB0aGUK
KyAgICAgICAgc3RhdGUgb2YgZGVzY2VuZGFudHMgKGUuZy4gbV9oYXNWaXNpYmxlRGVzY2VuZGFu
dCwgbV9oYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQsCisgICAgICAgIG1faGFzTm90SXNv
bGF0ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzKSByZWZsZWN0IGRlc2NlbmRlbmN5IGluIHRoZSB0b3At
bGF5ZXItYXdhcmUgaGllcmFyY2h5LgorCisgICAgICAgIE5vdGUgdGhhdCBtX2hhc1Zpc2libGVE
ZXNjZW5kYW50IGlzIGFib3V0IHRoZSBpbmhlcml0ZWQgYHZpc2liaWxpdHlgIHByb3BlcnR5IHdo
aWNoIGZvbGxvd3MKKyAgICAgICAgRE9NIG9yZGVyLCBidXQgc2luY2Ugd2UgY29uc3VsdCBpdCBk
dXJpbmcgcGFpbnRpbmctcmVsYXRlZCB0cmVlIHdhbGtzLCB3ZSB3YW50IHRoaXMgc3RhdGUgdG8K
KyAgICAgICAgcmVmbGVjdCB0aGUgdG9wLWxheWVyLWF3YXJlIHRyZWUuCisgICAgICAgIAorICAg
ICAgICBUaGUgcGF0Y2ggYWRkcyB0b3AtbGF5ZXItYXdhcmUgaGVscGVycyBvbiBSZW5kZXJFbGVt
ZW50IHRvIGZpbmQgdGhlIHBhcmVudCBhbmQgbmV4dCBzaWJsaW5nLAorICAgICAgICBhbmQgdXNl
cyB0aG9zZSB3aGVuIHBhcmVudGluZyBsYXllcnMuCisgICAgICAgIAorICAgICAgICBJbiBhZGRp
dGlvbiwgd2hlbiB0aGUgdG9wIGxheWVyIHN0YXR1cyBjaGFuZ2VzIGZvciBhIFJlbmRlckxheWVy
LCB3ZSB1bnBhcmVudCBhbmQKKyAgICAgICAgcmUtcGFyZW50IGl0cyBsYXllciAod2hpY2ggaW4g
dHVybiBzaG91bGQgdG9nZ2xlIHRoZSByZWxldmFudCBkaXJ0eSBiaXRzKS4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmROZXh0
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJOZXh0U2libGluZ1Jlc3BlY3RpbmdUb3BM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjphZGRMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6bGF5ZXJQYXJlbnRSZXNwZWN0aW5nVG9wTGF5ZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6bGF5ZXJOZXh0U2libGluZ1Jlc3BlY3RpbmdU
b3BMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjppbnNlcnRl
ZEludG9UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OndpbGxCZVJlbW92
ZWRGcm9tVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpmaW5kTmV4dExh
eWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aW5zZXJ0T25seVRoaXNMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6c3RhY2tpbmdDb250ZXh0IGNvbnN0KTogTm8gbmVlZCBmb3IgdGhlIGV4cGxp
Y2l0IGVzdGFibGlzaGVzVG9wTGF5ZXIoKSBjaGVjay4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpzZXRIYXNWaXNpYmxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6ZGlydHlBbmNlc3RvckNoYWluVmlzaWJsZURlc2NlbmRhbnRTdGF0dXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNldEFuY2VzdG9yQ2hhaW5IYXNWaXNpYmxlRGVzY2Vu
ZGFudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZW5jbG9zaW5nQW5jZXN0b3JG
b3JQb3NpdGlvbiBjb25zdCk6IE5vIG5lZWQgZm9yIHRoZSBleHBsaWNpdCBlc3RhYmxpc2hlc1Rv
cExheWVyKCkgY2hlY2suCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXll
cldpdGhFZmZlY3RzKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjplc3Rh
Ymxpc2hlc1RvcExheWVyV2lsbENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6ZXN0YWJsaXNoZXNUb3BMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6Y2xpcENyb3NzZXNQYWludGluZ0JvdW5kYXJ5IGNvbnN0KTogTm8gbmVlZCBmb3Ig
dGhlIGV4cGxpY2l0IGVzdGFibGlzaGVzVG9wTGF5ZXIoKSBjaGVjay4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOiBEaXR0bworCiAyMDIy
LTAxLTE5ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgTnVsbCBjaGVj
ayBwbGF5ZXIgaW4gdGFpbnRzT3JpZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHAKaW5kZXggMjZjMjUwZTMxOTI4YzczMTA1N2E4ZTljOTU2NDI5NmExYzJlZjFm
ZS4uYTliZGI5YTc1OTcyMGNkYTZhNmVhMWNiZGE4MTA0MTllOWY1ZGVjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtNjM0LDExICs2MzQsNjAgQEAg
UmVuZGVyUHRyPFJlbmRlck9iamVjdD4gUmVuZGVyRWxlbWVudDo6ZGV0YWNoUmVuZGVyZXJJbnRl
cm5hbChSZW5kZXJPYmplY3QmIHJlbmQKICAgICByZXR1cm4gUmVuZGVyUHRyPFJlbmRlck9iamVj
dD4oJnJlbmRlcmVyKTsKIH0KIAorc3RhdGljIFJlbmRlckxheWVyKiBmaW5kTmV4dExheWVyKGNv
bnN0IFJlbmRlckVsZW1lbnQmIGN1cnJSZW5kZXJlciwgUmVuZGVyTGF5ZXImIHBhcmVudExheWVy
LCBjb25zdCBSZW5kZXJPYmplY3QqIHNpYmxpbmdUb1RyYXZlcnNlRnJvbSwgYm9vbCBjaGVja1Bh
cmVudCA9IHRydWUpCit7CisgICAgLy8gU3RlcCAxOiBJZiBvdXIgbGF5ZXIgaXMgYSBjaGlsZCBv
ZiB0aGUgZGVzaXJlZCBwYXJlbnQsIHRoZW4gcmV0dXJuIG91ciBsYXllci4KKyAgICBhdXRvKiBv
dXJMYXllciA9IGN1cnJSZW5kZXJlci5oYXNMYXllcigpID8gZG93bmNhc3Q8UmVuZGVyTGF5ZXJN
b2RlbE9iamVjdD4oY3VyclJlbmRlcmVyKS5sYXllcigpIDogbnVsbHB0cjsKKyAgICBpZiAob3Vy
TGF5ZXIgJiYgb3VyTGF5ZXItPnBhcmVudCgpID09ICZwYXJlbnRMYXllcikKKyAgICAgICAgcmV0
dXJuIG91ckxheWVyOworCisgICAgLy8gU3RlcCAyOiBJZiB3ZSBkb24ndCBoYXZlIGEgbGF5ZXIs
IG9yIG91ciBsYXllciBpcyB0aGUgZGVzaXJlZCBwYXJlbnQsIHRoZW4gZGVzY2VuZAorICAgIC8v
IGludG8gb3VyIHNpYmxpbmdzIHRyeWluZyB0byBmaW5kIHRoZSBuZXh0IGxheWVyIHdob3NlIHBh
cmVudCBpcyB0aGUgZGVzaXJlZCBwYXJlbnQuCisgICAgaWYgKCFvdXJMYXllciB8fCBvdXJMYXll
ciA9PSAmcGFyZW50TGF5ZXIpIHsKKyAgICAgICAgZm9yIChhdXRvKiBjaGlsZCA9IHNpYmxpbmdU
b1RyYXZlcnNlRnJvbSA/IHNpYmxpbmdUb1RyYXZlcnNlRnJvbS0+bmV4dFNpYmxpbmcoKSA6IGN1
cnJSZW5kZXJlci5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGlu
ZygpKSB7CisgICAgICAgICAgICBpZiAoIWlzPFJlbmRlckVsZW1lbnQ+KCpjaGlsZCkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoYXV0byogbmV4dExheWVyID0g
ZmluZE5leHRMYXllcihkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqY2hpbGQpLCBwYXJlbnRMYXll
ciwgbnVsbHB0ciwgZmFsc2UpKQorICAgICAgICAgICAgICAgIHJldHVybiBuZXh0TGF5ZXI7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBTdGVwIDM6IElmIG91ciBsYXllciBpcyB0aGUgZGVz
aXJlZCBwYXJlbnQgbGF5ZXIsIHRoZW4gd2UncmUgZmluaXNoZWQuIFdlIGRpZG4ndAorICAgIC8v
IGZpbmQgYW55dGhpbmcuCisgICAgaWYgKG91ckxheWVyID09ICZwYXJlbnRMYXllcikKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBTdGVwIDQ6IElmIHxjaGVja1BhcmVudHwgaXMg
c2V0LCBjbGltYiB1cCB0byBvdXIgcGFyZW50IGFuZCBjaGVjayBpdHMgc2libGluZ3MgdGhhdAor
ICAgIC8vIGZvbGxvdyB1cyB0byBzZWUgaWYgd2UgY2FuIGxvY2F0ZSBhIGxheWVyLgorICAgIGlm
IChjaGVja1BhcmVudCAmJiBjdXJyUmVuZGVyZXIucGFyZW50KCkpCisgICAgICAgIHJldHVybiBm
aW5kTmV4dExheWVyKCpjdXJyUmVuZGVyZXIucGFyZW50KCksIHBhcmVudExheWVyLCAmY3VyclJl
bmRlcmVyLCB0cnVlKTsKKworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVuZGVy
TGF5ZXIqIGxheWVyTmV4dFNpYmxpbmdSZXNwZWN0aW5nVG9wTGF5ZXIoY29uc3QgUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIFJlbmRlckxheWVyJiBwYXJlbnRMYXllcikKK3sKKyAgICBBU1NFUlRf
SU1QTElFUyhpc0luVG9wTGF5ZXJPckJhY2tkcm9wKHJlbmRlcmVyLnN0eWxlKCksIHJlbmRlcmVy
LmVsZW1lbnQoKSksIHJlbmRlcmVyLmhhc0xheWVyKCkpOworCisgICAgaWYgKGlzPFJlbmRlckxh
eWVyTW9kZWxPYmplY3Q+KHJlbmRlcmVyKSAmJiBpc0luVG9wTGF5ZXJPckJhY2tkcm9wKHJlbmRl
cmVyLnN0eWxlKCksIHJlbmRlcmVyLmVsZW1lbnQoKSkpIHsKKyAgICAgICAgYXV0byYgbGF5ZXJN
b2RlbE9iamVjdCA9IGRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KHJlbmRlcmVyKTsK
KyAgICAgICAgQVNTRVJUKGxheWVyTW9kZWxPYmplY3QuaGFzTGF5ZXIoKSk7CisgICAgICAgIGF1
dG8gdG9wTGF5ZXJMYXllcnMgPSBSZW5kZXJMYXllcjo6dG9wTGF5ZXJSZW5kZXJMYXllcnMocmVu
ZGVyZXIudmlldygpKTsKKyAgICAgICAgYXV0byBsYXllckluZGV4ID0gdG9wTGF5ZXJMYXllcnMu
ZmluZChsYXllck1vZGVsT2JqZWN0LmxheWVyKCkpOworICAgICAgICBpZiAobGF5ZXJJbmRleCAh
PSBub3RGb3VuZCAmJiBsYXllckluZGV4IDwgdG9wTGF5ZXJMYXllcnMuc2l6ZSgpIC0gMSkKKyAg
ICAgICAgICAgIHJldHVybiB0b3BMYXllckxheWVyc1tsYXllckluZGV4ICsgMV07CisKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGZpbmROZXh0TGF5ZXIoKnJl
bmRlcmVyLnBhcmVudCgpLCBwYXJlbnRMYXllciwgJnJlbmRlcmVyKTsKK30KKwogc3RhdGljIHZv
aWQgYWRkTGF5ZXJzKGNvbnN0IFJlbmRlckVsZW1lbnQmIGFkZGVkUmVuZGVyZXIsIFJlbmRlckVs
ZW1lbnQmIGN1cnJlbnRSZW5kZXJlciwgUmVuZGVyTGF5ZXImIHBhcmVudExheWVyLCBzdGQ6Om9w
dGlvbmFsPFJlbmRlckxheWVyKj4mIGJlZm9yZUNoaWxkKQogewogICAgIGlmIChjdXJyZW50UmVu
ZGVyZXIuaGFzTGF5ZXIoKSkgewogICAgICAgICBpZiAoIWJlZm9yZUNoaWxkLmhhc192YWx1ZSgp
KQotICAgICAgICAgICAgYmVmb3JlQ2hpbGQgPSBhZGRlZFJlbmRlcmVyLnBhcmVudCgpLT5maW5k
TmV4dExheWVyKHBhcmVudExheWVyLCAmYWRkZWRSZW5kZXJlcik7CisgICAgICAgICAgICBiZWZv
cmVDaGlsZCA9IGxheWVyTmV4dFNpYmxpbmdSZXNwZWN0aW5nVG9wTGF5ZXIoYWRkZWRSZW5kZXJl
ciwgcGFyZW50TGF5ZXIpOwogCiAgICAgICAgIHBhcmVudExheWVyLmFkZENoaWxkKCpkb3duY2Fz
dDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PihjdXJyZW50UmVuZGVyZXIpLmxheWVyKCksIGJlZm9y
ZUNoaWxkLnZhbHVlKCkpOwogICAgICAgICByZXR1cm47CkBAIC02ODYsMzUgKzczNSwyMCBAQCB2
b2lkIFJlbmRlckVsZW1lbnQ6Om1vdmVMYXllcnMoUmVuZGVyTGF5ZXIqIG9sZFBhcmVudCwgUmVu
ZGVyTGF5ZXImIG5ld1BhcmVudCkKICAgICAgICAgY2hpbGQubW92ZUxheWVycyhvbGRQYXJlbnQs
IG5ld1BhcmVudCk7CiB9CiAKLVJlbmRlckxheWVyKiBSZW5kZXJFbGVtZW50OjpmaW5kTmV4dExh
eWVyKFJlbmRlckxheWVyJiBwYXJlbnRMYXllciwgY29uc3QgUmVuZGVyT2JqZWN0KiBzaWJsaW5n
VG9UcmF2ZXJzZUZyb20sIGJvb2wgY2hlY2tQYXJlbnQpIGNvbnN0CitSZW5kZXJMYXllciogUmVu
ZGVyRWxlbWVudDo6bGF5ZXJQYXJlbnQoKSBjb25zdAogewotICAgIC8vIFN0ZXAgMTogSWYgb3Vy
IGxheWVyIGlzIGEgY2hpbGQgb2YgdGhlIGRlc2lyZWQgcGFyZW50LCB0aGVuIHJldHVybiBvdXIg
bGF5ZXIuCi0gICAgYXV0byogb3VyTGF5ZXIgPSBoYXNMYXllcigpID8gZG93bmNhc3Q8UmVuZGVy
TGF5ZXJNb2RlbE9iamVjdD4oKnRoaXMpLmxheWVyKCkgOiBudWxscHRyOwotICAgIGlmIChvdXJM
YXllciAmJiBvdXJMYXllci0+cGFyZW50KCkgPT0gJnBhcmVudExheWVyKQotICAgICAgICByZXR1
cm4gb3VyTGF5ZXI7CisgICAgQVNTRVJUX0lNUExJRVMoaXNJblRvcExheWVyT3JCYWNrZHJvcChz
dHlsZSgpLCBlbGVtZW50KCkpLCBoYXNMYXllcigpKTsKIAotICAgIC8vIFN0ZXAgMjogSWYgd2Ug
ZG9uJ3QgaGF2ZSBhIGxheWVyLCBvciBvdXIgbGF5ZXIgaXMgdGhlIGRlc2lyZWQgcGFyZW50LCB0
aGVuIGRlc2NlbmQKLSAgICAvLyBpbnRvIG91ciBzaWJsaW5ncyB0cnlpbmcgdG8gZmluZCB0aGUg
bmV4dCBsYXllciB3aG9zZSBwYXJlbnQgaXMgdGhlIGRlc2lyZWQgcGFyZW50LgotICAgIGlmICgh
b3VyTGF5ZXIgfHwgb3VyTGF5ZXIgPT0gJnBhcmVudExheWVyKSB7Ci0gICAgICAgIGZvciAoYXV0
byogY2hpbGQgPSBzaWJsaW5nVG9UcmF2ZXJzZUZyb20gPyBzaWJsaW5nVG9UcmF2ZXJzZUZyb20t
Pm5leHRTaWJsaW5nKCkgOiBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0
U2libGluZygpKSB7Ci0gICAgICAgICAgICBpZiAoIWlzPFJlbmRlckVsZW1lbnQ+KCpjaGlsZCkp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoYXV0byogbmV4dExh
eWVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmNoaWxkKS5maW5kTmV4dExheWVyKHBhcmVu
dExheWVyLCBudWxscHRyLCBmYWxzZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5leHRMYXll
cjsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoaGFzTGF5ZXIoKSAmJiBpc0luVG9wTGF5ZXJP
ckJhY2tkcm9wKHN0eWxlKCksIGVsZW1lbnQoKSkpCisgICAgICAgIHJldHVybiB2aWV3KCkubGF5
ZXIoKTsKIAotICAgIC8vIFN0ZXAgMzogSWYgb3VyIGxheWVyIGlzIHRoZSBkZXNpcmVkIHBhcmVu
dCBsYXllciwgdGhlbiB3ZSdyZSBmaW5pc2hlZC4gV2UgZGlkbid0Ci0gICAgLy8gZmluZCBhbnl0
aGluZy4KLSAgICBpZiAob3VyTGF5ZXIgPT0gJnBhcmVudExheWVyKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIC8vIFN0ZXAgNDogSWYgfGNoZWNrUGFyZW50fCBpcyBzZXQsIGNsaW1i
IHVwIHRvIG91ciBwYXJlbnQgYW5kIGNoZWNrIGl0cyBzaWJsaW5ncyB0aGF0Ci0gICAgLy8gZm9s
bG93IHVzIHRvIHNlZSBpZiB3ZSBjYW4gbG9jYXRlIGEgbGF5ZXIuCi0gICAgaWYgKGNoZWNrUGFy
ZW50ICYmIHBhcmVudCgpKQotICAgICAgICByZXR1cm4gcGFyZW50KCktPmZpbmROZXh0TGF5ZXIo
cGFyZW50TGF5ZXIsIHRoaXMsIHRydWUpOworICAgIHJldHVybiBwYXJlbnQoKS0+ZW5jbG9zaW5n
TGF5ZXIoKTsKK30KIAotICAgIHJldHVybiBudWxscHRyOworLy8gVGhpcyBhbnN3ZXJzIHRoZSBx
dWVzdGlvbiAiaWYgdGhpcyByZW5kZXJlciBoYWQgYSBsYXllciwgd2hhdCB3b3VsZCBpdHMgbmV4
dCBzaWJsaW5nIGxheWVyIGJlIi4KK1JlbmRlckxheWVyKiBSZW5kZXJFbGVtZW50OjpsYXllck5l
eHRTaWJsaW5nKFJlbmRlckxheWVyJiBwYXJlbnRMYXllcikgY29uc3QKK3sKKyAgICByZXR1cm4g
V2ViQ29yZTo6bGF5ZXJOZXh0U2libGluZ1Jlc3BlY3RpbmdUb3BMYXllcigqdGhpcywgcGFyZW50
TGF5ZXIpOwogfQogCiBib29sIFJlbmRlckVsZW1lbnQ6OmxheWVyQ3JlYXRpb25BbGxvd2VkRm9y
U3VidHJlZSgpIGNvbnN0CkBAIC05NjEsMTkgKzk5NSwxOSBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6
Omluc2VydGVkSW50b1RyZWUoSXNJbnRlcm5hbE1vdmUgaXNJbnRlcm5hbE1vdmUpCiB7CiAgICAg
Ly8gS2VlcCBvdXIgbGF5ZXIgaGllcmFyY2h5IHVwZGF0ZWQuIE9wdGltaXplIGZvciB0aGUgY29t
bW9uIGNhc2Ugd2hlcmUgd2UgZG9uJ3QgaGF2ZSBhbnkgY2hpbGRyZW4KICAgICAvLyBhbmQgZG9u
J3QgaGF2ZSBhIGxheWVyIGF0dGFjaGVkIHRvIG91cnNlbHZlcy4KLSAgICBSZW5kZXJMYXllciog
bGF5ZXIgPSBudWxscHRyOworICAgIFJlbmRlckxheWVyKiBwYXJlbnRMYXllciA9IG51bGxwdHI7
CiAgICAgaWYgKGZpcnN0Q2hpbGQoKSB8fCBoYXNMYXllcigpKSB7Ci0gICAgICAgIGxheWVyID0g
cGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgICAgIGFkZExheWVycyhsYXllcik7Cisg
ICAgICAgIGF1dG8qIHBhcmVudExheWVyID0gbGF5ZXJQYXJlbnQoKTsKKyAgICAgICAgYWRkTGF5
ZXJzKHBhcmVudExheWVyKTsKICAgICB9CiAKICAgICAvLyBJZiB8dGhpc3wgaXMgdmlzaWJsZSBi
dXQgdGhpcyBvYmplY3Qgd2FzIG5vdCwgdGVsbCB0aGUgbGF5ZXIgaXQgaGFzIHNvbWUgdmlzaWJs
ZSBjb250ZW50CiAgICAgLy8gdGhhdCBuZWVkcyB0byBiZSBkcmF3biBhbmQgbGF5ZXIgdmlzaWJp
bGl0eSBvcHRpbWl6YXRpb24gY2FuJ3QgYmUgdXNlZAogICAgIGlmIChwYXJlbnQoKS0+c3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiBzdHlsZSgpLnZpc2liaWxp
dHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFoYXNMYXllcigpKSB7Ci0gICAgICAgIGlm
ICghbGF5ZXIpCi0gICAgICAgICAgICBsYXllciA9IHBhcmVudCgpLT5lbmNsb3NpbmdMYXllcigp
OwotICAgICAgICBpZiAobGF5ZXIpCi0gICAgICAgICAgICBsYXllci0+ZGlydHlWaXNpYmxlQ29u
dGVudFN0YXR1cygpOworICAgICAgICBpZiAoIXBhcmVudExheWVyKQorICAgICAgICAgICAgcGFy
ZW50TGF5ZXIgPSBsYXllclBhcmVudCgpOworICAgICAgICBpZiAocGFyZW50TGF5ZXIpCisgICAg
ICAgICAgICBwYXJlbnRMYXllci0+ZGlydHlWaXNpYmxlQ29udGVudFN0YXR1cygpOwogICAgIH0K
IAogICAgIFJlbmRlck9iamVjdDo6aW5zZXJ0ZWRJbnRvVHJlZShpc0ludGVybmFsTW92ZSk7CkBA
IC05ODIsMTYgKzEwMTYsMTUgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjppbnNlcnRlZEludG9UcmVl
KElzSW50ZXJuYWxNb3ZlIGlzSW50ZXJuYWxNb3ZlKQogdm9pZCBSZW5kZXJFbGVtZW50Ojp3aWxs
QmVSZW1vdmVkRnJvbVRyZWUoSXNJbnRlcm5hbE1vdmUgaXNJbnRlcm5hbE1vdmUpCiB7CiAgICAg
Ly8gSWYgd2UgcmVtb3ZlIGEgdmlzaWJsZSBjaGlsZCBmcm9tIGFuIGludmlzaWJsZSBwYXJlbnQs
IHdlIGRvbid0IGtub3cgdGhlIGxheWVyIHZpc2liaWxpdHkgYW55IG1vcmUuCi0gICAgUmVuZGVy
TGF5ZXIqIGxheWVyID0gbnVsbHB0cjsKICAgICBpZiAocGFyZW50KCktPnN0eWxlKCkudmlzaWJp
bGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0g
VmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhaGFzTGF5ZXIoKSkgewotICAgICAgICBpZiAoKGxheWVy
ID0gcGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCkpKQotICAgICAgICAgICAgbGF5ZXItPmRpcnR5
VmlzaWJsZUNvbnRlbnRTdGF0dXMoKTsKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBnZXQgcGFy
ZW50IGxheWVyLiBOZWNlc3Nhcnk/CisgICAgICAgIGlmIChhdXRvKiBlbmNsb3NpbmdMYXllciA9
IHBhcmVudCgpLT5lbmNsb3NpbmdMYXllcigpKQorICAgICAgICAgICAgZW5jbG9zaW5nTGF5ZXIt
PmRpcnR5VmlzaWJsZUNvbnRlbnRTdGF0dXMoKTsKICAgICB9CiAgICAgLy8gS2VlcCBvdXIgbGF5
ZXIgaGllcmFyY2h5IHVwZGF0ZWQuCiAgICAgaWYgKGZpcnN0Q2hpbGQoKSB8fCBoYXNMYXllcigp
KSB7Ci0gICAgICAgIGlmICghbGF5ZXIpCi0gICAgICAgICAgICBsYXllciA9IHBhcmVudCgpLT5l
bmNsb3NpbmdMYXllcigpOwotICAgICAgICByZW1vdmVMYXllcnMobGF5ZXIpOworICAgICAgICBh
dXRvKiBwYXJlbnRMYXllciA9IGxheWVyUGFyZW50KCk7CisgICAgICAgIHJlbW92ZUxheWVycyhw
YXJlbnRMYXllcik7CiAgICAgfQogCiAgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYm
IHBhcmVudCgpLT5jaGlsZHJlbklubGluZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmgKaW5kZXggZjVlMTZhMjIyOWE3ZDk0OGRmNzJiZDVkNGY4Mjc5ZmRmNjY5NTg3
MC4uYTYyZjRmZTUwMzAxODMwMTY4N2ExODI5NDgwMThiNjRhMWRiYWQxYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC0xMDgsMTAgKzEwOCwxMSBAQCBwdWJs
aWM6CiAgICAgLy8gVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHVzZWQgd2hlbiB0aGUgcmVu
ZGVyIHRyZWUgaGllcmFyY2h5IGNoYW5nZXMgdG8gbWFrZSBzdXJlIGxheWVycyBnZXQKICAgICAv
LyBwcm9wZXJseSBhZGRlZCBhbmQgcmVtb3ZlZC4gU2luY2UgY29udGFpbmVyc2hpcCBjYW4gYmUg
aW1wbGVtZW50ZWQgYnkgYW55IHN1YmNsYXNzLCBhbmQgc2luY2UgYSBoaWVyYXJjaHkKICAgICAv
LyBjYW4gY29udGFpbiBhIG1peHR1cmUgb2YgYm94ZXMgYW5kIG90aGVyIG9iamVjdCB0eXBlcywg
dGhlc2UgZnVuY3Rpb25zIG5lZWQgdG8gYmUgaW4gdGhlIGJhc2UgY2xhc3MuCisgICAgUmVuZGVy
TGF5ZXIqIGxheWVyUGFyZW50KCkgY29uc3Q7CisgICAgUmVuZGVyTGF5ZXIqIGxheWVyTmV4dFNp
YmxpbmcoUmVuZGVyTGF5ZXImIHBhcmVudExheWVyKSBjb25zdDsKICAgICB2b2lkIGFkZExheWVy
cyhSZW5kZXJMYXllciogcGFyZW50TGF5ZXIpOwogICAgIHZvaWQgcmVtb3ZlTGF5ZXJzKFJlbmRl
ckxheWVyKiBwYXJlbnRMYXllcik7CiAgICAgdm9pZCBtb3ZlTGF5ZXJzKFJlbmRlckxheWVyKiBv
bGRQYXJlbnQsIFJlbmRlckxheWVyJiBuZXdQYXJlbnQpOwotICAgIFJlbmRlckxheWVyKiBmaW5k
TmV4dExheWVyKFJlbmRlckxheWVyJiBwYXJlbnRMYXllciwgY29uc3QgUmVuZGVyT2JqZWN0KiBz
aWJsaW5nVG9UcmF2ZXJzZUZyb20sIGJvb2wgY2hlY2tQYXJlbnQgPSB0cnVlKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChSZW5kZXJPYmplY3Qm
KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMDk2
ZDVmMTc3MjI3ZmM5Yzg2ZjJmNTRhNjA1ZTc0ZDU5NjdlZGM1Yy4uZDIxN2VlM2IzMjRkODQ3MzFm
MmY2YzA4OGJiNzQxMDNmMjgxOTA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCkBAIC00ODMsMTEgKzQ4MywxMSBAQCB2b2lkIFJlbmRlckxheWVyOjppbnNlcnRP
bmx5VGhpc0xheWVyKExheWVyQ2hhbmdlVGltaW5nIHRpbWluZykKICAgICBpZiAoIW1fcGFyZW50
ICYmIHJlbmRlcmVyKCkucGFyZW50KCkpIHsKICAgICAgICAgLy8gV2UgbmVlZCB0byBjb25uZWN0
IG91cnNlbHZlcyB3aGVuIG91ciByZW5kZXJlcigpIGhhcyBhIHBhcmVudC4KICAgICAgICAgLy8g
RmluZCBvdXIgZW5jbG9zaW5nTGF5ZXIgYW5kIGFkZCBvdXJzZWx2ZXMuCi0gICAgICAgIGF1dG8q
IHBhcmVudExheWVyID0gcmVuZGVyZXIoKS5wYXJlbnQoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKKyAg
ICAgICAgYXV0byogcGFyZW50TGF5ZXIgPSByZW5kZXJlcigpLmxheWVyUGFyZW50KCk7CiAgICAg
ICAgIGlmICghcGFyZW50TGF5ZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0
byogYmVmb3JlQ2hpbGQgPSBwYXJlbnRMYXllci0+cmVmbGVjdGlvbkxheWVyKCkgIT0gdGhpcyA/
IHJlbmRlcmVyKCkucGFyZW50KCktPmZpbmROZXh0TGF5ZXIoKnBhcmVudExheWVyLCAmcmVuZGVy
ZXIoKSkgOiBudWxscHRyOworICAgICAgICBhdXRvKiBiZWZvcmVDaGlsZCA9IHBhcmVudExheWVy
LT5yZWZsZWN0aW9uTGF5ZXIoKSAhPSB0aGlzID8gcmVuZGVyZXIoKS5sYXllck5leHRTaWJsaW5n
KCpwYXJlbnRMYXllcikgOiBudWxscHRyOwogICAgICAgICBwYXJlbnRMYXllci0+YWRkQ2hpbGQo
KnRoaXMsIGJlZm9yZUNoaWxkKTsKICAgICB9CiAKQEAgLTY1MywxNCArNjUzLDEyIEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnNldFBhcmVudChSZW5kZXJMYXllciogcGFyZW50KQogCiBSZW5kZXJMYXll
ciogUmVuZGVyTGF5ZXI6OnN0YWNraW5nQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgaWYgKGVzdGFi
bGlzaGVzVG9wTGF5ZXIoKSkKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCkudmlldygpLmxheWVy
KCk7Ci0KICAgICBhdXRvKiBsYXllciA9IHBhcmVudCgpOwogICAgIHdoaWxlIChsYXllciAmJiAh
bGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpCiAgICAgICAgIGxheWVyID0gbGF5ZXItPnBhcmVu
dCgpOwogCiAgICAgQVNTRVJUKCFsYXllciB8fCBsYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSk7
CisgICAgQVNTRVJUX0lNUExJRVMoZXN0YWJsaXNoZXNUb3BMYXllcigpLCAhbGF5ZXIgfHwgbGF5
ZXIgPT0gcmVuZGVyZXIoKS52aWV3KCkubGF5ZXIoKSk7CiAgICAgcmV0dXJuIGxheWVyOwogfQog
CkBAIC0xNDgyLDcgKzE0ODAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzZXRIYXNWaXNpYmxlQ29u
dGVudCgpCiAgICAgICAgIC8vIFdlIGRvbid0IGNvbGxlY3QgaW52aXNpYmxlIGxheWVycyBpbiB6
LW9yZGVyIGxpc3RzIGlmIHdlIGFyZSBub3QgaW4gY29tcG9zaXRpbmcgbW9kZS4KICAgICAgICAg
Ly8gQXMgd2UgYmVjYW1lIHZpc2libGUsIHdlIG5lZWQgdG8gZGlydHkgb3VyIHN0YWNraW5nIGNv
bnRhaW5lcnMgYW5jZXN0b3JzIHRvIGJlIHByb3Blcmx5CiAgICAgICAgIC8vIGNvbGxlY3RlZC4g
RklYTUU6IFdoZW4gY29tcG9zaXRpbmcsIHdlIGNvdWxkIHNraXAgdGhpcyBkaXJ0eWluZyBwaGFz
ZS4KLSAgICAgICAgZm9yIChSZW5kZXJMYXllciogc2MgPSBzdGFja2luZ0NvbnRleHQoKTsgc2M7
IHNjID0gc2MtPnN0YWNraW5nQ29udGV4dCgpKSB7CisgICAgICAgIGZvciAoYXV0byogc2MgPSBz
dGFja2luZ0NvbnRleHQoKTsgc2M7IHNjID0gc2MtPnN0YWNraW5nQ29udGV4dCgpKSB7CiAgICAg
ICAgICAgICBzYy0+ZGlydHlaT3JkZXJMaXN0cygpOwogICAgICAgICAgICAgaWYgKHNjLT5oYXNW
aXNpYmxlQ29udGVudCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTUwMiw3ICsxNTAw
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZGlydHlWaXNpYmxlQ29udGVudFN0YXR1cygpCiAKIHZv
aWQgUmVuZGVyTGF5ZXI6OmRpcnR5QW5jZXN0b3JDaGFpblZpc2libGVEZXNjZW5kYW50U3RhdHVz
KCkKIHsKLSAgICBmb3IgKFJlbmRlckxheWVyKiBsYXllciA9IHRoaXM7IGxheWVyOyBsYXllciA9
IGxheWVyLT5wYXJlbnQoKSkgeworICAgIGZvciAoYXV0byogbGF5ZXIgPSB0aGlzOyBsYXllcjsg
bGF5ZXIgPSBsYXllci0+cGFyZW50KCkpIHsKICAgICAgICAgaWYgKGxheWVyLT5tX3Zpc2libGVE
ZXNjZW5kYW50U3RhdHVzRGlydHkpCiAgICAgICAgICAgICBicmVhazsKIApAQCAtMTUxMiw3ICsx
NTEwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZGlydHlBbmNlc3RvckNoYWluVmlzaWJsZURlc2Nl
bmRhbnRTdGF0dXMoKQogCiB2b2lkIFJlbmRlckxheWVyOjpzZXRBbmNlc3RvckNoYWluSGFzVmlz
aWJsZURlc2NlbmRhbnQoKQogewotICAgIGZvciAoUmVuZGVyTGF5ZXIqIGxheWVyID0gdGhpczsg
bGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKSB7CisgICAgZm9yIChhdXRvKiBsYXllciA9
IHRoaXM7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQoKSkgewogICAgICAgICBpZiAoc2hv
dWxkQXBwbHlQYWludENvbnRhaW5tZW50KHJlbmRlcmVyKCkpKSB7CiAgICAgICAgICAgICBtX2hh
c1Zpc2libGVEZXNjZW5kYW50ID0gdHJ1ZTsKICAgICAgICAgICAgIG1fdmlzaWJsZURlc2NlbmRh
bnRTdGF0dXNEaXJ0eSA9IGZhbHNlOwpAQCAtMTgzNiwxMyArMTgzNCwxMSBAQCBib29sIFJlbmRl
ckxheWVyOjphbmNlc3RvckxheWVySXNJbkNvbnRhaW5pbmdCbG9ja0NoYWluKGNvbnN0IFJlbmRl
ckxheWVyJiBhbmNlcwogCiBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmVuY2xvc2luZ0FuY2Vz
dG9yRm9yUG9zaXRpb24oUG9zaXRpb25UeXBlIHBvc2l0aW9uKSBjb25zdAogewotICAgIGlmIChl
c3RhYmxpc2hlc1RvcExheWVyKCkpCi0gICAgICAgIHJldHVybiByZW5kZXJlcigpLnZpZXcoKS5s
YXllcigpOwotCi0gICAgUmVuZGVyTGF5ZXIqIGN1cnIgPSBwYXJlbnQoKTsKKyAgICBhdXRvKiBj
dXJyID0gcGFyZW50KCk7CiAgICAgd2hpbGUgKGN1cnIgJiYgIWlzQ29udGFpbmVyRm9yUG9zaXRp
b25lZCgqY3VyciwgcG9zaXRpb24sIGVzdGFibGlzaGVzVG9wTGF5ZXIoKSkpCiAgICAgICAgIGN1
cnIgPSBjdXJyLT5wYXJlbnQoKTsKIAorICAgIEFTU0VSVF9JTVBMSUVTKGVzdGFibGlzaGVzVG9w
TGF5ZXIoKSwgIWN1cnIgfHwgY3VyciA9PSByZW5kZXJlcigpLnZpZXcoKS5sYXllcigpKTsKICAg
ICByZXR1cm4gY3VycjsKIH0KIApAQCAtMzA3MSw4ICszMDY3LDcgQEAgdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRMYXllcldpdGhFZmZlY3RzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
TGF5ZXJQYWkKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRyYW5zcGFyZW5jeSBsYXllciBlbmNs
b3NpbmcgdXMgYW5kIHdlIGFyZSB0aGUgcm9vdCBvZiBhIHRyYW5zZm9ybSwgdGhlbiB3ZSBuZWVk
IHRvIGVzdGFibGlzaCB0aGUgdHJhbnNwYXJlbmN5CiAgICAgICAgIC8vIGxheWVyIGZyb20gdGhl
IHBhcmVudCBub3csIGFzc3VtaW5nIHRoZXJlIGlzIGEgcGFyZW50CiAgICAgICAgIGlmIChwYWlu
dEZsYWdzICYgUGFpbnRMYXllckZsYWc6OkhhdmVUcmFuc3BhcmVuY3kpIHsKLSAgICAgICAgICAg
IC8vIFRvcCBsYXllciBlbGVtZW50cyBhcmUgbm90IGFmZmVjdGVkIGJ5IGFuY2VzdG9yIG9wYWNp
dGllcwotICAgICAgICAgICAgaWYgKCFlc3RhYmxpc2hlc1RvcExheWVyKCkgJiYgcGFyZW50KCkp
CisgICAgICAgICAgICBpZiAocGFyZW50KCkpCiAgICAgICAgICAgICAgICAgcGFyZW50KCktPmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXJzKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRpbmdJbmZv
LnBhaW50RGlydHlSZWN0KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBiZWdp
blRyYW5zcGFyZW5jeUxheWVycyhjb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50aW5nSW5mby5w
YWludERpcnR5UmVjdCk7CkBAIC00MDIxLDE0ICs0MDE2LDE0IEBAIGJvb2wgUmVuZGVyTGF5ZXI6
OmVzdGFibGlzaGVzVG9wTGF5ZXIoKSBjb25zdAogCiB2b2lkIFJlbmRlckxheWVyOjplc3RhYmxp
c2hlc1RvcExheWVyV2lsbENoYW5nZSgpCiB7Ci0gICAgZGlydHlTdGFja2luZ0NvbnRleHRaT3Jk
ZXJMaXN0cygpOworICAgIGlmIChhdXRvKiBwYXJlbnRMYXllciA9IHBhcmVudCgpKQorICAgICAg
ICBwYXJlbnRMYXllci0+cmVtb3ZlQ2hpbGQoKnRoaXMpOwogfQogCiB2b2lkIFJlbmRlckxheWVy
Ojplc3RhYmxpc2hlc1RvcExheWVyRGlkQ2hhbmdlKCkKIHsKLSAgICBkaXJ0eVN0YWNraW5nQ29u
dGV4dFpPcmRlckxpc3RzKCk7Ci0gICAgaWYgKGlzU3RhY2tpbmdDb250ZXh0KCkpCi0gICAgICAg
IGRpcnR5Wk9yZGVyTGlzdHMoKTsKKyAgICBpZiAoYXV0byogcGFyZW50TGF5ZXIgPSByZW5kZXJl
cigpLmxheWVyUGFyZW50KCkpCisgICAgICAgIHBhcmVudExheWVyLT5hZGRDaGlsZCgqdGhpcyk7
CiB9CiAKIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3dB
bmNlc3RvcigpIGNvbnN0CkBAIC00NDk4LDkgKzQ0OTMsNiBAQCBDbGlwUmVjdHMqIFJlbmRlckxh
eWVyOjpjbGlwUmVjdHMoY29uc3QgQ2xpcFJlY3RzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIAog
Ym9vbCBSZW5kZXJMYXllcjo6Y2xpcENyb3NzZXNQYWludGluZ0JvdW5kYXJ5KCkgY29uc3QKIHsK
LSAgICBpZiAoZXN0YWJsaXNoZXNUb3BMYXllcigpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQog
ICAgIHJldHVybiBwYXJlbnQoKS0+ZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKEluY2x1ZGVDb21w
b3NpdGVkUGFnaW5hdGVkTGF5ZXJzKSAhPSBlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoSW5jbHVk
ZUNvbXBvc2l0ZWRQYWdpbmF0ZWRMYXllcnMpCiAgICAgICAgIHx8IHBhcmVudCgpLT5lbmNsb3Np
bmdDb21wb3NpdGluZ0xheWVyRm9yUmVwYWludCgpICE9IGVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5
ZXJGb3JSZXBhaW50KCk7CiB9CkBAIC00NTg4LDkgKzQ1ODAsOSBAQCB2b2lkIFJlbmRlckxheWVy
OjpjYWxjdWxhdGVDbGlwUmVjdHMoY29uc3QgQ2xpcFJlY3RzQ29udGV4dCYgY2xpcFJlY3RzQ29u
dGV4dCwgQwogCiBSZWY8Q2xpcFJlY3RzPiBSZW5kZXJMYXllcjo6cGFyZW50Q2xpcFJlY3RzKGNv
bnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0NvbnRleHQpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKHBhcmVudCgpIHx8IGVzdGFibGlzaGVzVG9wTGF5ZXIoKSk7CisgICAgQVNTRVJUKHBhcmVu
dCgpKTsKIAotICAgIGF1dG8gY29udGFpbmVyTGF5ZXIgPSBlc3RhYmxpc2hlc1RvcExheWVyKCkg
PyByZW5kZXJlcigpLnZpZXcoKS5sYXllcigpIDogcGFyZW50KCk7CisgICAgYXV0byBjb250YWlu
ZXJMYXllciA9IHBhcmVudCgpOwogICAgIGF1dG8gdGVtcG9yYXJ5UGFyZW50Q2xpcFJlY3RzID0g
WyZdKGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBDb250ZXh0KSB7CiAgICAgICAgIGF1dG8g
cGFyZW50Q2xpcFJlY3RzID0gQ2xpcFJlY3RzOjpjcmVhdGUoKTsKICAgICAgICAgY29udGFpbmVy
TGF5ZXItPmNhbGN1bGF0ZUNsaXBSZWN0cyhjbGlwQ29udGV4dCwgcGFyZW50Q2xpcFJlY3RzKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyYjNhODUxZmY5ZmU0OWE1YTZmZmYyYjRjOTNkZDA2N2VjODkxYTk3Li42NDlhMzhk
MzNmNTQ0NTdmNDc1NmI3YmJmNzFkNzdmYTc4YmY3ZjllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMjItMDEtMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgPGRpYWxvZz4gd2l0aCB0cmFuc2Zvcm1lZCBhbmNlc3RvciBhc3NlcnRzIHVuZGVyIFJl
bmRlckdlb21ldHJ5TWFwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzUxOTQKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKwor
ICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50
L3RvcC1sYXllci1wYXJlbnQtdHJhbnNmb3JtLmh0bWwKKyAgICAgICAgbm8gbG9uZ2VyIGFzc2Vy
dHMuCisKIDIwMjItMDEtMTkgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBOdWxsIGNoZWNrIHBsYXllciBpbiB0YWludHNPcmlnaW4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IGNhNmFmNjdiN2EwZDE3ZTA5ZmQwOGEyZTVjZGFkYjMxZDI4YmQ1ZmQuLjg3N2RmZTQ1ZGRmMWZm
NjcxZWZiMmE0YjY3YTExOGI0MDJjZTY3ZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjM2OCw4
ICsyMzY4LDYgQEAgZmFzdC9tdWx0aWNvbC9tdWx0aWNvbC13aXRoLWNoaWxkLXJlbmRlckxheWVy
LWZvci1pbnB1dC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZQogIyBUb3AgbGF5ZXIgdGVzdHMKIHdl
YmtpdC5vcmcvYi8yMjkzMTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90aGUtZGlhbG9nLWVsZW1lbnQvbW9kYWwtZGlh
bG9nLWluLXJlcGxhY2VkLXJlbmRlcmVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8yMjkzMTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90aGUtZGlhbG9nLWVsZW1lbnQvbW9kYWwtZGlhbG9n
LWluLXRhYmxlLWNvbHVtbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi0jIE5lZWRzIGxheWVy
IHJlLXBhcmVudGluZwotd2Via2l0Lm9yZy9iLzIzNDk4MCBbIERlYnVnIF0gaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90
aGUtZGlhbG9nLWVsZW1lbnQvdG9wLWxheWVyLXBhcmVudC10cmFuc2Zvcm0uaHRtbCBbIENyYXNo
IF0KIAogIyBBc3NlcnRpb24gZmFpbHVyZSBpbiBNZXNzYWdlUG9ydDo6Y29udGV4dERlc3Ryb3ll
ZCwgdXN1YWxseSBhdHRyaWJ1dGVkIHRvIGxhdGVyIHRlc3RzCiB3ZWJraXQub3JnL2IvOTQ0NTgg
aHR0cC90ZXN0cy9zZWN1cml0eS9NZXNzYWdlUG9ydC9ldmVudC1saXN0ZW5lci1jb250ZXh0Lmh0
bWwgWyBTa2lwIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>