<?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>129441</bug_id>
          
          <creation_ts>2014-02-27 11:25:17 -0800</creation_ts>
          <short_desc>Web Inspector: highlight data for overlay should use protocol type builders</short_desc>
          <delta_ts>2015-01-18 16:05:21 -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>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>achicu</cc>
    
    <cc>burg</cc>
    
    <cc>dbates</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>985279</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-27 11:25:17 -0800</bug_when>
    <thetext>Right now, InspectorOverlay::buildObjectForHighlightedNode and its helper methods manually build up InspectorObjects. This makes it really hard to tell what the shape of the data is without looking at the code that builds it. It also is a very thin abstraction between the code on the overlay page and its backend.

I suggest we add a new Overlay domain that contains these types. This will give us type builders for free. At a later time, we could easily convert the InspectorOverlay::evaluateInOverlay calls into protocol commands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985280</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-27 11:26:02 -0800</bug_when>
    <thetext>&lt;rdar://problem/16186822&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062119</commentid>
    <comment_count>2</comment_count>
      <attachid>244843</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-01-17 12:05:58 -0800</bug_when>
    <thetext>Created attachment 244843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062122</commentid>
    <comment_count>3</comment_count>
      <attachid>244843</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-01-17 13:09:27 -0800</bug_when>
    <thetext>Comment on attachment 244843
Patch

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

Looks good! There might be one issue with the ElementData change.

&gt; Source/WebCore/inspector/InspectorController.h:55
&gt; +namespace Protocol { namespace OverlayTypes {
&gt; +class NodeHighlightData;
&gt; +} }
&gt;  }

Some newlines would help. (Unless this is the common style now.)

&gt; Source/WebCore/inspector/InspectorOverlay.cpp:719
&gt; -    elementInfo-&gt;setString(&quot;nodeWidth&quot;, String::number(modelObject ? adjustForAbsoluteZoom(modelObject-&gt;pixelSnappedOffsetWidth(), *modelObject) : boundingBox.width()));
&gt; -    elementInfo-&gt;setString(&quot;nodeHeight&quot;, String::number(modelObject ? adjustForAbsoluteZoom(modelObject-&gt;pixelSnappedOffsetHeight(), *modelObject) : boundingBox.height()));
&gt; -    
&gt; +    auto sizeObject = Inspector::Protocol::OverlayTypes::Size::create()
&gt; +        .setWidth(modelObject ? adjustForAbsoluteZoom(modelObject-&gt;pixelSnappedOffsetWidth(), *modelObject) : boundingBox.width())
&gt; +        .setHeight(modelObject ? adjustForAbsoluteZoom(modelObject-&gt;pixelSnappedOffsetHeight(), *modelObject) : boundingBox.height())
&gt; +        .release();
&gt; +    elementData-&gt;setSize(WTF::move(sizeObject));

Doesn&apos;t this require a change in the OverlayPage script? nodeWidth and nodeHeight is now size.width and size.height, right?

&gt; Source/WebCore/inspector/InspectorOverlay.cpp:870
&gt; +        .setDeviceScaleFactor(m_page.deviceScaleFactor())

I&apos;m surprised we need to pass this along.

&gt; Source/WebCore/inspector/InspectorOverlay.h:49
&gt; +namespace Protocol {
&gt; +namespace OverlayTypes {
&gt; +class NodeHighlightData;
&gt; +}
&gt; +}

Like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062123</commentid>
    <comment_count>4</comment_count>
      <attachid>244843</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-01-17 13:10:28 -0800</bug_when>
    <thetext>Comment on attachment 244843
Patch

Never mind, I didn&apos;t see the InspectorOverlayPage.js changes on the first pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062144</commentid>
    <comment_count>5</comment_count>
      <attachid>244846</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-01-17 17:02:27 -0800</bug_when>
    <thetext>Created attachment 244846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062148</commentid>
    <comment_count>6</comment_count>
      <attachid>244847</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-01-17 17:52:10 -0800</bug_when>
    <thetext>Created attachment 244847
EWS Round 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062164</commentid>
    <comment_count>7</comment_count>
      <attachid>244851</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-01-17 20:32:13 -0800</bug_when>
    <thetext>Created attachment 244851
EWS Round 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062202</commentid>
    <comment_count>8</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-01-18 09:07:03 -0800</bug_when>
    <thetext>Committed r178631: &lt;http://trac.webkit.org/changeset/178631&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062203</commentid>
    <comment_count>9</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-01-18 09:07:34 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Committed r178631: &lt;http://trac.webkit.org/changeset/178631&gt;

Includes windows and GTK build fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062230</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-01-18 16:05:21 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Committed r178631: &lt;http://trac.webkit.org/changeset/178631&gt;

This broke the iOS build.

Committed build fix in &lt;http://trac.webkit.org/changeset/178636&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244843</attachid>
            <date>2015-01-17 12:05:58 -0800</date>
            <delta_ts>2015-01-17 17:02:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129441-20150117120519.patch</filename>
            <type>text/plain</type>
            <size>53886</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4NDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ODA4OGJmYWFlYjRjMjAwN2I5YjJhNzM0MmUyYzY3MGUzNDUzOTcxLi43ZTdkZDExZTM1NjE4NmNi
Y2M4NmU1NDVlYzQ5Nzg3OTgyMDUwMmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNS0wMS0xNyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaGlnaGxpZ2h0IGRhdGEgZm9yIG92ZXJs
YXkgc2hvdWxkIHVzZSBwcm90b2NvbCB0eXBlIGJ1aWxkZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0NDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgZG9tYWluIGZvciBvdmVybGF5
IHR5cGVzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcHJvdG9jb2wvT3ZlcmxheVR5cGVzLmpzb246IEFkZGVkLgorCiAyMDE1LTAxLTE2ICBC
cmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBjb2RlIGdlbmVyYXRvciBzaG91bGQgaW50cm9kdWNlIHR5cGVkZWZzIGZvciBwcm90
b2NvbCB0eXBlcyB0aGF0IGFyZSBhcnJheXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZDM2NGY1MTJiN2M5ODJj
NDg2OTU3ODJjMTcwMjMzYjk3NzFiYzlkLi42MThkMWI3YTNmNzkwZTE1YzEyY2VkYjIzMTRhOGUw
OTI1ZGU2YjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTUtMDEtMTcgIEJyaWFu
IEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGhpZ2hsaWdodCBkYXRhIGZvciBvdmVybGF5IHNob3VsZCB1c2UgcHJvdG9jb2wgdHlwZSBi
dWlsZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI5NDQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QXMgYSBmaXJzdCBzdGVwIHRvd2FyZHMgY2xlYW5pbmcgdXAgdGhlIGluc3BlY3RvciBvdmVybGF5
LCBjb252ZXJ0IGhpZ2hsaWdodAorICAgICAgICBkYXRhIGNvbnN0cnVjdGlvbiB0byB1c2UgcHJv
dG9jb2wgdHlwZSBidWlsZGVycy4gSXQncyBub3cgcmVhbGx5IG9idmlvdXMgd2hhdAorICAgICAg
ICBkYXRhIGlzIGJlaW5nIHNlbnQgdG8gdGhlIGluc3BlY3RvciBvdmVybGF5IHBhZ2UuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgcGF2ZXMgdGhlIHdheSB0b3dhcmRzIHVzaW5nIGluc3BlY3RvciBw
cm90b2NvbCBjb21tYW5kcyBhbmQgZXZlbnRzCisgICAgICAgIGlmIHdlIHdhbnQgdG8gc3VwcG9y
dCBtb3JlIGludGVyYWN0aXZlIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIGluc3BlY3RvciBvdmVybGF5
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgYSBmZXcgc3R5bGUgY2xlYW51cHMsIHN1Y2gg
YXMgc3RhbmRhcmRpemluZyB2YXJpYWJsZSBuYW1lcywKKyAgICAgICAgdXNpbmcgZGVmYXVsdCBt
ZW1iZXIgaW5pdGlhbGl6ZXJzLCBwYXNzaW5nIGJ5IHJlZmVyZW5jZSwgYW5kIGZpeGluZyBjYXN0
cy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZWQuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRIaWdo
bGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YnVpbGRPYmpl
Y3RGb3JIaWdobGlnaHRlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6aW5zcGVjdCk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpidWlsZFJlbmRlcmVySGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWxkTm9kZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFF1YWRIaWdo
bGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6SW5zcGVjdG9yT3Zl
cmxheSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpnZXRIaWdobGlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JQb2ludCk6CisgICAgICAgIChXZWJD
b3JlOjpidWlsZE9iamVjdEZvclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRBcnJheUZv
clF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHQpOgorICAg
ICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6
YnVpbGRPYmplY3RGb3JGbG93UmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVj
dEZvclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRRdWFkT2JqZWN0Rm9yQ1NTUmVnaW9u
Q29udGVudENsaXApOgorICAgICAgICBTaW1wbGlmeSBob3cgdGhlIGNsaXBwaW5nIGFyZWEgaXMg
ZW5jb2RlZC4gSXQncyBub3cgJ3JlZ2lvbkNsaXBwaW5nQXJlYScKKyAgICAgICAgc3RvcmVkIG9u
IGEgRnJhZ21lbnRIaWdobGlnaHREYXRhIGluc3RhbmNlLgorCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JPdmVybGF5Ojp1cGRhdGVQYWludFJlY3RzVGltZXJGaXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3UGFpbnRSZWN0cyk6CisgICAgICAgIChXZWJD
b3JlOjpidWlsZEFycmF5Rm9yUmVuZGVyZXJGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
YXBwZW5kUGF0aENvbW1hbmRBbmRQb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUGF0
aFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JTaGFwZU91dHNpZGUp
OgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JFbGVtZW50RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3Tm9kZUhpZ2hsaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3UXVhZEhpZ2hsaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpyZXNldCk6CisgICAgICAg
IChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJlZ2lvbkhpZ2hsaWdodCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvckNTU1JlZ2lvbnNIaWdobGlnaHQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JDU1NSZWdpb25Db250ZW50Q2xpcCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJlbmRlcmVyRnJhZ21l
bnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudElu
Zm8pOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpIaWdobGlnaHQ6OkhpZ2hsaWdodCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpzOgorICAgICAgICAoX2NyZWF0ZUVsZW1lbnRUaXRs
ZSk6CisgICAgICAgIChfZHJhd0VsZW1lbnRUaXRsZSk6CisgICAgICAgIChfZHJhd0ZyYWdtZW50
SGlnaGxpZ2h0KToKKyAgICAgICAgKGRyYXdOb2RlSGlnaGxpZ2h0KToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omluc3BlY3Rv
ckhpZ2hsaWdodFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aW5zcGVjdG9y
SGlnaGxpZ2h0T2JqZWN0KToKKwogMjAxNS0wMS0xMiAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mu
d2FzaGluZ3Rvbi5lZHU+CiAKICAgICAgICAgV2ViIFJlcGxheTogcmVjb3JkIGV2ZW50IGxvb3Ag
dGltaW5ncyB1c2luZyBlbGFwc2VkIHRpbWUgZHVyaW5nIGNhcHR1cmluZyBvbmx5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDUzMGE2MmE1MGZiMTVjZjUy
NTI3ZmU5Zjg1YjM4NDQ0MjIwOGMwOGEuLjBlMDBmNjJlMjhlZTViMzY1MjU0Nzk1NjIzMGNiYzEy
YTQxNmNmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC0xMjUsNiArMTI1LDcgQEAgSU5TUEVDVE9SX0RPTUFJTlMgPSBcCiAgICAgJChKYXZhU2NyaXB0
Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0luc3BlY3Rvci5qc29uIFwKICAgICAkKEphdmFTY3Jp
cHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvTGF5ZXJUcmVlLmpzb24gXAogICAgICQoSmF2YVNj
cmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24gXAorICAgICQoSmF2YVNj
cmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9PdmVybGF5VHlwZXMuanNvbiBcCiAgICAgJChK
YXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbiBcCiAgICAgJChKYXZh
U2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbiBcCiAgICAgJChKYXZh
U2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL1RpbWVsaW5lLmpzb24gXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9PdmVybGF5VHlwZXMu
anNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvT3ZlcmxheVR5
cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDdlZmE3NWVmY2ZhZWU3NDQ4YjY2OWZmMTgyYzRhYjAwZGFi
OTEyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cHJvdG9jb2wvT3ZlcmxheVR5cGVzLmpzb24KQEAgLTAsMCArMSwxMjkgQEAKK3sKKyAgICAiZG9t
YWluIjogIk92ZXJsYXlUeXBlcyIsCisgICAgImRlc2NyaXB0aW9uIjogIkV4cG9zZXMgdHlwZXMg
dG8gYmUgdXNlZCBieSB0aGUgaW5zcGVjdG9yIG92ZXJsYXkuIiwKKyAgICAidHlwZXMiOiBbCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJQb2ludCIsCisgICAgICAgICAgICAidHlwZSI6
ICJvYmplY3QiLAorICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJ4IiwgInR5cGUiOiAibnVtYmVyIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAieSIsICJ0eXBlIjogIm51bWJlciIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiU2l6ZSIsCisgICAgICAgICAgICAidHlwZSI6
ICJvYmplY3QiLAorICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJ3aWR0aCIsICJ0eXBlIjogImludGVnZXIiIH0sCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJoZWlnaHQiLCAidHlwZSI6ICJpbnRlZ2VyIiB9CisgICAgICAgICAgICBdCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJRdWFkIiwKKyAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJBIHF1YWQgaXMgYSBjb2xsZWN0aW9uIG9mIDQgcG9pbnRzLiBX
aGVuIGluaXRpYWxpemVkIGZyb20gYSByZWN0LCB0aGUgcG9pbnRzIGFyZSBpbiBjbG9ja3dpc2Ug
b3JkZXIgZnJvbSB0b3AgbGVmdC4iLAorICAgICAgICAgICAgInR5cGUiOiAiYXJyYXkiLAorICAg
ICAgICAgICAgIml0ZW1zIjogeyAiJHJlZiI6ICJQb2ludCIgfQorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAiaWQiOiAiUmVjdCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiQSByZWN0YW5nbGUgc3BlY2lmaWVkIGJ5IGEgcmVmZXJlbmNlIGNvb3JkaW5hdGUgYW5kIHdp
ZHRoL2hlaWdodCBvZmZzZXRzLiIsCisgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAg
ICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ4Iiwg
InR5cGUiOiAibnVtYmVyIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAieSIsICJ0eXBl
IjogIm51bWJlciIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIndpZHRoIiwgInR5cGUi
OiAibnVtYmVyIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVpZ2h0IiwgInR5cGUi
OiAibnVtYmVyIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJpZCI6ICJSZWdpb24iLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgc2lu
Z2xlIHJlZ2lvbiBpbiBhIGZsb3cgdGhyZWFkLiIsCisgICAgICAgICAgICAidHlwZSI6ICJvYmpl
Y3QiLAorICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJib3JkZXJRdWFkIiwgIiRyZWYiOiAiUXVhZCIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImluY29taW5nUXVhZCIsICIkcmVmIjogIlF1YWQiIH0sCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJvdXRnb2luZ1F1YWQiLCAiJHJlZiI6ICJRdWFkIiB9LAorICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiaXNIaWdobGlnaHRlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9u
YWwiOiB0cnVlIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgImlkIjogIkRpc3BsYXlQYXRoIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJB
IHZlY3RvciBwYXRoIGRlc2NyaWJlZCB1c2luZyBTVkcgcGF0aCBzeW50YXguIiwKKyAgICAgICAg
ICAgICJ0eXBlIjogImFycmF5IiwKKyAgICAgICAgICAgICJpdGVtcyI6IHsgInR5cGUiOiAiYW55
IiB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJSZWdpb25GbG93
RGF0YSIsCisgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAgInByb3Bl
cnRpZXMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZWdpb25zIiwgInR5cGUiOiAi
YXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIlJlZ2lvbiJ9IH0sCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJuYW1lIiwgInR5cGUiOiAic3RyaW5nIiB9CisgICAgICAgICAgICBdCisgICAg
ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJDb250ZW50Rmxvd0RhdGEiLAor
ICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjog
WworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZSIsICJ0eXBlIjogInN0cmluZyIgfQor
ICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAi
U2hhcGVPdXRzaWRlRGF0YSIsCisgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAg
ICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3VuZHMi
LCAiJHJlZiI6ICJRdWFkIiwgImRlc2NyaXB0aW9uIjogIkJvdW5kcyBmb3IgdGhlIHNoYXBlLW91
dHNpZGUgcGF0aHMuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hhcGUiLCAiJHJl
ZiI6ICJEaXNwbGF5UGF0aCIsICJkZXNjcmlwdGlvbiI6ICJQYXRoIGZvciB0aGUgZWxlbWVudCdz
IHNoYXBlLiIsICJvcHRpb25hbCI6IHRydWUgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
Im1hcmdpblNoYXBlIiwgIiRyZWYiOiAiRGlzcGxheVBhdGgiLCAiZGVzY3JpcHRpb24iOiAiUGF0
aCBmb3IgdGhlIGVsZW1lbnQncyBtYXJnaW4gc2hhcGUuIiwgIm9wdGlvbmFsIjogdHJ1ZSB9Cisg
ICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJF
bGVtZW50RGF0YSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGF0YSB0aGF0IGRlc2Ny
aWJlcyBhbiBlbGVtZW50IHRvIGJlIGhpZ2hsaWdodGVkLiIsCisgICAgICAgICAgICAidHlwZSI6
ICJvYmplY3QiLAorICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJ0YWdOYW1lIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiaWRWYWx1ZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJU
aGUgdmFsdWUgb2YgdGhlIGVsZW1lbnQncyAnaWQnIGF0dHJpYnV0ZS4iIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJjbGFzc05hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwi
OiB0cnVlIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaXplIiwgIiRyZWYiOiAiU2l6
ZSIsICJvcHRpb25hbCI6IHRydWUgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJvbGUi
LCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiQ29tcHV0ZWQgYWNjZXNzaWJpbGl0
eSByb2xlIGZvciB0aGUgZWxlbWVudC4iLCAib3B0aW9uYWwiOiB0cnVlIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJyZWdpb25GbG93RGF0YSIsICIkcmVmIjogIlJlZ2lvbkZsb3dEYXRh
IiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVu
dEZsb3dEYXRhIiwgIiRyZWYiOiAiQ29udGVudEZsb3dEYXRhIiwgIm9wdGlvbmFsIjogdHJ1ZSB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hhcGVPdXRzaWRlRGF0YSIsICIkcmVmIjog
IlNoYXBlT3V0c2lkZURhdGEiLCAib3B0aW9uYWwiOiB0cnVlIH0KKyAgICAgICAgICAgIF0KKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIkZyYWdtZW50SGlnaGxpZ2h0
RGF0YSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGF0YSByZXF1aXJlZCB0byBoaWdo
bGlnaHQgbXVsdGlwbGUgcXVhZHMuIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisg
ICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInF1
YWRzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIlF1YWQiIH0sICJkZXNj
cmlwdGlvbiI6ICJRdWFkcyBmb3Igd2hpY2ggdGhlIGhpZ2hsaWdodCBzaG91bGQgYmUgYXBwbGll
ZC4ifSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnRDb2xvciIsICJ0eXBlIjog
InN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnRPdXRsaW5lQ29s
b3IiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwYWRk
aW5nQ29sb3IiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJib3JkZXJDb2xvciIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm1hcmdpbkNvbG9yIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAicmVnaW9uQ2xpcHBpbmdBcmVhIiwgIiRyZWYiOiAiUXVhZCIsICJvcHRpb25h
bCI6IHRydWUgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgICAiaWQiOiAiTm9kZUhpZ2hsaWdodERhdGEiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIkRhdGEgcmVxdWlyZWQgdG8gaGlnaGxpZ2h0IGEgRE9NIG5vZGUuIiwKKyAgICAgICAgICAg
ICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInNjcm9sbE9mZnNldCIsICIkcmVmIjogIlBvaW50IiwgImRlc2Ny
aXB0aW9uIjogIlNjcm9sbCBvZmZzZXQgZm9yIHRoZSBNYWluRnJhbWUncyBGcmFtZVZpZXcgdGhh
dCBpcyBzaGFyZWQgYWNyb3NzIGFsbCBxdWFkcy4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJmcmFnbWVudHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiRnJh
Z21lbnRIaWdobGlnaHREYXRhIiB9IH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbGVt
ZW50RGF0YSIsICIkcmVmIjogIkVsZW1lbnREYXRhIiwgIm9wdGlvbmFsIjogdHJ1ZSB9CisgICAg
ICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJPdmVy
bGF5Q29uZmlndXJhdGlvbiIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGF0YSByZXF1
aXJlZCB0byBjb25maWd1cmUgdGhlIG92ZXJsYXkncyBzaXplIGFuZCBzY2FsaW5nIGJlaGF2aW9y
LiIsCisgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAgInByb3BlcnRp
ZXMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkZXZpY2VTY2FsZUZhY3RvciIsICJ0
eXBlIjogIm51bWJlciIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInZpZXdwb3J0U2l6
ZSIsICIkcmVmIjogIlNpemUiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZVZp
ZXdGdWxsU2l6ZSIsICIkcmVmIjogIlNpemUiIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQor
ICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggM2Y0OGJkYThiNzU0NmZiODIxYjlhZjhj
MzViZjlkYWU5MTY3YTVmYi4uNGM5ODZjMTQ5MDk1ZWJkZWYzYzZjN2IxMWJhM2M5NTI2ZDQ4Njk2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE4NDUsNyArMTg0NSw3IEBAIF9fWk5LN1dlYkNv
cmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIzM2FsbG93c05ld0FuaW1hdGlvbnNXaGlsZVN1c3BlbmRl
ZEV2CiBfX1pOSzdXZWJDb3JlMTlIVE1MT3B0R3JvdXBFbGVtZW50MTRncm91cExhYmVsVGV4dEV2
CiBfX1pOSzdXZWJDb3JlMTlIVE1MVGV4dEFyZWFFbGVtZW50NXZhbHVlRXYKIF9fWk5LN1dlYkNv
cmUxOUlEQkRhdGFiYXNlTWV0YWRhdGExMmlzb2xhdGVkQ29weUV2Ci1fX1pOSzdXZWJDb3JlMTlJ
bnNwZWN0b3JDb250cm9sbGVyMTJnZXRIaWdobGlnaHRFUE5TXzlIaWdobGlnaHRFTlNfMTZJbnNw
ZWN0b3JPdmVybGF5MTZDb29yZGluYXRlU3lzdGVtRQorX19aTks3V2ViQ29yZTE5SW5zcGVjdG9y
Q29udHJvbGxlcjEyZ2V0SGlnaGxpZ2h0RVJOU185SGlnaGxpZ2h0RU5TXzE2SW5zcGVjdG9yT3Zl
cmxheTE2Q29vcmRpbmF0ZVN5c3RlbUUKIF9fWk5LN1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xs
ZXIyOWJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlRXYKIF9fWk5LN1dlYkNvcmUxOU1lZGlh
U2Vzc2lvbk1hbmFnZXIzMGFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZEV2CiBfX1pOSzdX
ZWJDb3JlMTlNZWRpYVNlc3Npb25NYW5hZ2VyMzBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmRFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCmluZGV4IDU3MGU4MTEyZjg3MmFlNGI5Zjk4NmQ2OTZmZDc0ZDYxMmQ4ZWY5YmIuLmY2OGFj
YTY5YzVjYjNkZGY3YWY4MWFlYWI3N2Y1ZWEwMzQzY2EyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTMyOCwxMiArMzI4LDEy
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZHJhd0hpZ2hsaWdodChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiAgICAgbV9vdmVybGF5LT5wYWludChjb250ZXh0KTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRIaWdobGlnaHQoSGlnaGxpZ2h0KiBoaWdobGln
aHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkg
Y29uc3QKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCYg
aGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVT
eXN0ZW0pIGNvbnN0CiB7CiAgICAgbV9vdmVybGF5LT5nZXRIaWdobGlnaHQoaGlnaGxpZ2h0LCBj
b29yZGluYXRlU3lzdGVtKTsKIH0KIAotUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9y
Q29udHJvbGxlcjo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdAorUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE+IElu
c3BlY3RvckNvbnRyb2xsZXI6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9vdmVybGF5LT5idWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgK
aW5kZXggMzhhZWVhYWE4NThhZGMwMjZkZDUzOTViMjAwNDE5ZGJiYmUxNzJhZC4uY2VhZmU4NmM1
MGMwMjQ3NzUzZjNkNDIxZWVhZDgwNTY3MDZiZWUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC00OCw2ICs0OCwxMCBAQCBjbGFzcyBJ
bnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3Mg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworICAgIAor
bmFtZXNwYWNlIFByb3RvY29sIHsgbmFtZXNwYWNlIE92ZXJsYXlUeXBlcyB7CitjbGFzcyBOb2Rl
SGlnaGxpZ2h0RGF0YTsKK30gfQogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDQsMTMg
KzEwOCwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluc3BlY3QoTm9kZSopOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZHJhd0hpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEhpZ2hsaWdodChIaWdobGlnaHQqLCBJbnNwZWN0b3JP
dmVybGF5OjpDb29yZGluYXRlU3lzdGVtKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGdldEhpZ2hsaWdodChIaWdobGlnaHQmLCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lz
dGVtKSBjb25zdDsKICAgICB2b2lkIGhpZGVIaWdobGlnaHQoKTsKICAgICBOb2RlKiBoaWdobGln
aHRlZE5vZGUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0SW5kaWNhdGluZyhib29sKTsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gYnVpbGRP
YmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT4g
YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNVbmRl
clRlc3QoKSBjb25zdCB7IHJldHVybiBtX2lzVW5kZXJUZXN0OyB9CiAgICAgdm9pZCBzZXRJc1Vu
ZGVyVGVzdChib29sIGlzVW5kZXJUZXN0KSB7IG1faXNVbmRlclRlc3QgPSBpc1VuZGVyVGVzdDsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4
IDI5NGMwNGQ0MWY0M2Y3Nzg0ZjBkNjA0OTgyNzRjMGE3NmNiYzNlZjEuLmZkMmZjZGQ2ODIyY2Fi
YTZhMzZlMzI0OTJhYWI4NTc3NjczZjhjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbE9iamVj
dHMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC04MCwxMyArODEsMTMgQEAgc3RhdGljIHZv
aWQgY29udGVudHNRdWFkVG9QYWdlKGNvbnN0IEZyYW1lVmlldyogbWFpblZpZXcsIGNvbnN0IEZy
YW1lVmlldyogdmlldywKICAgICBjb250ZW50c1F1YWRUb0Nvb3JkaW5hdGVTeXN0ZW0obWFpblZp
ZXcsIHZpZXcsIHF1YWQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0ZW06OlZpZXcp
OwogfQogCi1zdGF0aWMgdm9pZCBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhp
Z2hsaWdodENvbmZpZywgSGlnaGxpZ2h0KiBoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNv
b3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkKK3N0YXRpYyB2b2lkIGJ1aWxkUmVuZGVy
ZXJIaWdobGlnaHQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyUmVnaW9uKiByZWdpb24s
IGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQmIGhpZ2hs
aWdodCwgSW5zcGVjdG9yT3ZlcmxheTo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVt
KQogewogICAgIEZyYW1lKiBjb250YWluaW5nRnJhbWUgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS5m
cmFtZSgpOwogICAgIGlmICghY29udGFpbmluZ0ZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBoaWdobGlnaHQtPnNldERhdGFGcm9tQ29uZmlnKGhpZ2hsaWdodENvbmZpZyk7CisgICAgaGln
aGxpZ2h0LnNldERhdGFGcm9tQ29uZmlnKGhpZ2hsaWdodENvbmZpZyk7CiAgICAgRnJhbWVWaWV3
KiBjb250YWluaW5nVmlldyA9IGNvbnRhaW5pbmdGcmFtZS0+dmlldygpOwogICAgIEZyYW1lVmll
dyogbWFpblZpZXcgPSBjb250YWluaW5nRnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygp
OwogCkBAIC05NCwxMCArOTUsMTAgQEAgc3RhdGljIHZvaWQgYnVpbGRSZW5kZXJlckhpZ2hsaWdo
dChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwKICAgICBib29s
IGlzU1ZHUmVuZGVyZXIgPSByZW5kZXJlci0+bm9kZSgpICYmIHJlbmRlcmVyLT5ub2RlKCktPmlz
U1ZHRWxlbWVudCgpICYmICFyZW5kZXJlci0+aXNTVkdSb290KCk7CiAKICAgICBpZiAoaXNTVkdS
ZW5kZXJlcikgewotICAgICAgICBoaWdobGlnaHQtPnR5cGUgPSBIaWdobGlnaHRUeXBlUmVjdHM7
Ci0gICAgICAgIHJlbmRlcmVyLT5hYnNvbHV0ZVF1YWRzKGhpZ2hsaWdodC0+cXVhZHMpOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhpZ2hsaWdodC0+cXVhZHMuc2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICBjb250ZW50c1F1YWRUb0Nvb3JkaW5hdGVTeXN0ZW0obWFpblZpZXcsIGNv
bnRhaW5pbmdWaWV3LCBoaWdobGlnaHQtPnF1YWRzW2ldLCBjb29yZGluYXRlU3lzdGVtKTsKKyAg
ICAgICAgaGlnaGxpZ2h0LnR5cGUgPSBIaWdobGlnaHRUeXBlOjpSZWN0czsKKyAgICAgICAgcmVu
ZGVyZXItPmFic29sdXRlUXVhZHMoaGlnaGxpZ2h0LnF1YWRzKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBoaWdobGlnaHQucXVhZHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBj
b250ZW50c1F1YWRUb0Nvb3JkaW5hdGVTeXN0ZW0obWFpblZpZXcsIGNvbnRhaW5pbmdWaWV3LCBo
aWdobGlnaHQucXVhZHNbaV0sIGNvb3JkaW5hdGVTeXN0ZW0pOwogICAgIH0gZWxzZSBpZiAoaXM8
UmVuZGVyQm94PigqcmVuZGVyZXIpIHx8IGlzPFJlbmRlcklubGluZT4oKnJlbmRlcmVyKSkgewog
ICAgICAgICBMYXlvdXRSZWN0IGNvbnRlbnRCb3g7CiAgICAgICAgIExheW91dFJlY3QgcGFkZGlu
Z0JveDsKQEAgLTE3OCwzNSArMTc5LDM0IEBAIHN0YXRpYyB2b2lkIGJ1aWxkUmVuZGVyZXJIaWdo
bGlnaHQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyUmVnaW9uKiByZWdpb24sCiAgICAg
ICAgIGNvbnRlbnRzUXVhZFRvQ29vcmRpbmF0ZVN5c3RlbShtYWluVmlldywgY29udGFpbmluZ1Zp
ZXcsIGFic0JvcmRlclF1YWQsIGNvb3JkaW5hdGVTeXN0ZW0pOwogICAgICAgICBjb250ZW50c1F1
YWRUb0Nvb3JkaW5hdGVTeXN0ZW0obWFpblZpZXcsIGNvbnRhaW5pbmdWaWV3LCBhYnNNYXJnaW5R
dWFkLCBjb29yZGluYXRlU3lzdGVtKTsKIAotICAgICAgICBoaWdobGlnaHQtPnR5cGUgPSBIaWdo
bGlnaHRUeXBlTm9kZTsKLSAgICAgICAgaGlnaGxpZ2h0LT5xdWFkcy5hcHBlbmQoYWJzTWFyZ2lu
UXVhZCk7Ci0gICAgICAgIGhpZ2hsaWdodC0+cXVhZHMuYXBwZW5kKGFic0JvcmRlclF1YWQpOwot
ICAgICAgICBoaWdobGlnaHQtPnF1YWRzLmFwcGVuZChhYnNQYWRkaW5nUXVhZCk7Ci0gICAgICAg
IGhpZ2hsaWdodC0+cXVhZHMuYXBwZW5kKGFic0NvbnRlbnRRdWFkKTsKKyAgICAgICAgaGlnaGxp
Z2h0LnR5cGUgPSBIaWdobGlnaHRUeXBlOjpOb2RlOworICAgICAgICBoaWdobGlnaHQucXVhZHMu
YXBwZW5kKGFic01hcmdpblF1YWQpOworICAgICAgICBoaWdobGlnaHQucXVhZHMuYXBwZW5kKGFi
c0JvcmRlclF1YWQpOworICAgICAgICBoaWdobGlnaHQucXVhZHMuYXBwZW5kKGFic1BhZGRpbmdR
dWFkKTsKKyAgICAgICAgaGlnaGxpZ2h0LnF1YWRzLmFwcGVuZChhYnNDb250ZW50UXVhZCk7CiAg
ICAgfQogfQogCi1zdGF0aWMgdm9pZCBidWlsZE5vZGVIaWdobGlnaHQoTm9kZSogbm9kZSwgUmVu
ZGVyUmVnaW9uKiByZWdpb24sIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmln
LCBIaWdobGlnaHQqIGhpZ2hsaWdodCwgSW5zcGVjdG9yT3ZlcmxheTo6Q29vcmRpbmF0ZVN5c3Rl
bSBjb29yZGluYXRlU3lzdGVtKQorc3RhdGljIHZvaWQgYnVpbGROb2RlSGlnaGxpZ2h0KE5vZGUm
IG5vZGUsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hs
aWdodENvbmZpZywgSGlnaGxpZ2h0JiBoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3Jk
aW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkKIHsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9k
ZS5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKKwogICAg
IGJ1aWxkUmVuZGVyZXJIaWdobGlnaHQocmVuZGVyZXIsIHJlZ2lvbiwgaGlnaGxpZ2h0Q29uZmln
LCBoaWdobGlnaHQsIGNvb3JkaW5hdGVTeXN0ZW0pOwogfQogCi1zdGF0aWMgdm9pZCBidWlsZFF1
YWRIaWdobGlnaHQoY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBIaWdobGlnaHRDb25maWcm
IGhpZ2hsaWdodENvbmZpZywgSGlnaGxpZ2h0ICpoaWdobGlnaHQpCitzdGF0aWMgdm9pZCBidWls
ZFF1YWRIaWdobGlnaHQoY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBIaWdobGlnaHRDb25m
aWcmIGhpZ2hsaWdodENvbmZpZywgSGlnaGxpZ2h0JiBoaWdobGlnaHQpCiB7Ci0gICAgaGlnaGxp
Z2h0LT5zZXREYXRhRnJvbUNvbmZpZyhoaWdobGlnaHRDb25maWcpOwotICAgIGhpZ2hsaWdodC0+
dHlwZSA9IEhpZ2hsaWdodFR5cGVSZWN0czsKLSAgICBoaWdobGlnaHQtPnF1YWRzLmFwcGVuZChx
dWFkKTsKKyAgICBoaWdobGlnaHQuc2V0RGF0YUZyb21Db25maWcoaGlnaGxpZ2h0Q29uZmlnKTsK
KyAgICBoaWdobGlnaHQudHlwZSA9IEhpZ2hsaWdodFR5cGU6OlJlY3RzOworICAgIGhpZ2hsaWdo
dC5xdWFkcy5hcHBlbmQocXVhZCk7CiB9CiAKIEluc3BlY3Rvck92ZXJsYXk6Okluc3BlY3Rvck92
ZXJsYXkoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX3BhZ2Uo
cGFnZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fcGFpbnRSZWN0VXBkYXRlVGlt
ZXIoKnRoaXMsICZJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGVQYWludFJlY3RzVGltZXJGaXJlZCkK
LSAgICAsIG1faW5kaWNhdGluZyhmYWxzZSkKLSAgICAsIG1fc2hvd2luZ1BhaW50UmVjdHMoZmFs
c2UpCiB7CiB9CiAKQEAgLTIyNSwxNCArMjI1LDE0IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIHZpZXctPnBhaW50KCZjb250ZXh0
LCBJbnRSZWN0KDAsIDAsIHZpZXctPndpZHRoKCksIHZpZXctPmhlaWdodCgpKSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCogaGlnaGxpZ2h0LCBJ
bnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0
Cit2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmdldEhpZ2hsaWdodChIaWdobGlnaHQmIGhpZ2hsaWdo
dCwgSW5zcGVjdG9yT3ZlcmxheTo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBj
b25zdAogewogICAgIGlmICghbV9oaWdobGlnaHROb2RlICYmICFtX2hpZ2hsaWdodFF1YWQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGhpZ2hsaWdodC0+dHlwZSA9IEhpZ2hsaWdodFR5cGVSZWN0
czsKKyAgICBoaWdobGlnaHQudHlwZSA9IEhpZ2hsaWdodFR5cGU6OlJlY3RzOwogICAgIGlmICht
X2hpZ2hsaWdodE5vZGUpCi0gICAgICAgIGJ1aWxkTm9kZUhpZ2hsaWdodChtX2hpZ2hsaWdodE5v
ZGUuZ2V0KCksIG51bGxwdHIsIG1fbm9kZUhpZ2hsaWdodENvbmZpZywgaGlnaGxpZ2h0LCBjb29y
ZGluYXRlU3lzdGVtKTsKKyAgICAgICAgYnVpbGROb2RlSGlnaGxpZ2h0KCptX2hpZ2hsaWdodE5v
ZGUsIG51bGxwdHIsIG1fbm9kZUhpZ2hsaWdodENvbmZpZywgaGlnaGxpZ2h0LCBjb29yZGluYXRl
U3lzdGVtKTsKICAgICBlbHNlCiAgICAgICAgIGJ1aWxkUXVhZEhpZ2hsaWdodCgqbV9oaWdobGln
aHRRdWFkLCBtX3F1YWRIaWdobGlnaHRDb25maWcsIGhpZ2hsaWdodCk7CiB9CkBAIC0zMzEsNTAg
KzMzMSw1MSBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnVwZGF0ZSgpCiAgICAgZm9yY2VQYWlu
dCgpOwogfQogCi1zdGF0aWMgUmVmPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JQb2lu
dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKK3N0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3ZlcmxheVR5cGVzOjpQb2ludD4gYnVpbGRPYmplY3RGb3JQb2ludChjb25zdCBGbG9hdFBv
aW50JiBwb2ludCkKIHsKLSAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3QgPSBJbnNwZWN0
b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG9iamVjdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgi
eCIpLCBwb2ludC54KCkpOwotICAgIG9iamVjdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgieSIp
LCBwb2ludC55KCkpOwotICAgIHJldHVybiBXVEY6Om1vdmUob2JqZWN0KTsKKyAgICByZXR1cm4g
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpQb2ludDo6Y3JlYXRlKCkKKyAgICAg
ICAgLnNldFgocG9pbnQueCgpKQorICAgICAgICAuc2V0WShwb2ludC55KCkpCisgICAgICAgIC5y
ZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBSZWY8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZv
clJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQorc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPdmVybGF5VHlwZXM6OlJlY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiB7Ci0gICAgUmVmPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0ID0gSW5zcGVjdG9y
T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBvYmplY3QtPnNldERvdWJsZShBU0NJSUxpdGVyYWwoIngi
KSwgcmVjdC54KCkpOwotICAgIG9iamVjdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgieSIpLCBy
ZWN0LnkoKSk7Ci0gICAgb2JqZWN0LT5zZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ3aWR0aCIpLCBy
ZWN0LndpZHRoKCkpOwotICAgIG9iamVjdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgiaGVpZ2h0
IiksIHJlY3QuaGVpZ2h0KCkpOwotICAgIHJldHVybiBXVEY6Om1vdmUob2JqZWN0KTsKKyAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWN0OjpjcmVhdGUoKQor
ICAgICAgICAuc2V0WChyZWN0LngoKSkKKyAgICAgICAgLnNldFkocmVjdC55KCkpCisgICAgICAg
IC5zZXRXaWR0aChyZWN0LndpZHRoKCkpCisgICAgICAgIC5zZXRIZWlnaHQocmVjdC5oZWlnaHQo
KSkKKyAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFJlZjxJbnNwZWN0b3JBcnJheT4g
YnVpbGRBcnJheUZvclF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQorc3RhdGljIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlF1YWQ+IGJ1aWxkQXJyYXlGb3JRdWFkKGNv
bnN0IEZsb2F0UXVhZCYgcXVhZCkKIHsKLSAgICBSZWY8SW5zcGVjdG9yQXJyYXk+IGFycmF5ID0g
SW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwotICAgIGFycmF5LT5wdXNoT2JqZWN0KGJ1aWxkT2Jq
ZWN0Rm9yUG9pbnQocXVhZC5wMSgpKSk7Ci0gICAgYXJyYXktPnB1c2hPYmplY3QoYnVpbGRPYmpl
Y3RGb3JQb2ludChxdWFkLnAyKCkpKTsKLSAgICBhcnJheS0+cHVzaE9iamVjdChidWlsZE9iamVj
dEZvclBvaW50KHF1YWQucDMoKSkpOwotICAgIGFycmF5LT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0
Rm9yUG9pbnQocXVhZC5wNCgpKSk7CisgICAgYXV0byBhcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok92ZXJsYXlUeXBlczo6UXVhZDo6Y3JlYXRlKCk7CisgICAgYXJyYXktPmFkZEl0ZW0oYnVp
bGRPYmplY3RGb3JQb2ludChxdWFkLnAxKCkpKTsKKyAgICBhcnJheS0+YWRkSXRlbShidWlsZE9i
amVjdEZvclBvaW50KHF1YWQucDIoKSkpOworICAgIGFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0
Rm9yUG9pbnQocXVhZC5wMygpKSk7CisgICAgYXJyYXktPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JQ
b2ludChxdWFkLnA0KCkpKTsKICAgICByZXR1cm4gV1RGOjptb3ZlKGFycmF5KTsKIH0KIAotc3Rh
dGljIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KGNvbnN0IEhp
Z2hsaWdodCYgaGlnaGxpZ2h0KQorc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVy
bGF5VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0RGF0YT4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHQo
Y29uc3QgSGlnaGxpZ2h0JiBoaWdobGlnaHQpCiB7Ci0gICAgUmVmPEluc3BlY3Rvck9iamVjdD4g
b2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBSZWY8SW5zcGVjdG9yQXJy
YXk+IGFycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIGF1dG8gYXJyYXlPZlF1
YWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3Zl
cmxheVR5cGVzOjpRdWFkPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBo
aWdobGlnaHQucXVhZHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGFycmF5LT5wdXNoQXJyYXkoYnVp
bGRBcnJheUZvclF1YWQoaGlnaGxpZ2h0LnF1YWRzW2ldKSk7Ci0gICAgb2JqZWN0LT5zZXRBcnJh
eSgicXVhZHMiLCBXVEY6Om1vdmUoYXJyYXkpKTsKLSAgICBvYmplY3QtPnNldFN0cmluZygiY29u
dGVudENvbG9yIiwgaGlnaGxpZ2h0LmNvbnRlbnRDb2xvci5zZXJpYWxpemVkKCkpOwotICAgIG9i
amVjdC0+c2V0U3RyaW5nKCJjb250ZW50T3V0bGluZUNvbG9yIiwgaGlnaGxpZ2h0LmNvbnRlbnRP
dXRsaW5lQ29sb3Iuc2VyaWFsaXplZCgpKTsKLSAgICBvYmplY3QtPnNldFN0cmluZygicGFkZGlu
Z0NvbG9yIiwgaGlnaGxpZ2h0LnBhZGRpbmdDb2xvci5zZXJpYWxpemVkKCkpOwotICAgIG9iamVj
dC0+c2V0U3RyaW5nKCJib3JkZXJDb2xvciIsIGhpZ2hsaWdodC5ib3JkZXJDb2xvci5zZXJpYWxp
emVkKCkpOwotICAgIG9iamVjdC0+c2V0U3RyaW5nKCJtYXJnaW5Db2xvciIsIGhpZ2hsaWdodC5t
YXJnaW5Db2xvci5zZXJpYWxpemVkKCkpOwotICAgIHJldHVybiBXVEY6Om1vdmUob2JqZWN0KTsK
KyAgICAgICAgYXJyYXlPZlF1YWRzLT5hZGRJdGVtKGJ1aWxkQXJyYXlGb3JRdWFkKGhpZ2hsaWdo
dC5xdWFkc1tpXSkpOworCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlU
eXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRhOjpjcmVhdGUoKQorICAgICAgICAuc2V0UXVhZHMo
V1RGOjptb3ZlKGFycmF5T2ZRdWFkcykpCisgICAgICAgIC5zZXRDb250ZW50Q29sb3IoaGlnaGxp
Z2h0LmNvbnRlbnRDb2xvci5zZXJpYWxpemVkKCkpCisgICAgICAgIC5zZXRDb250ZW50T3V0bGlu
ZUNvbG9yKGhpZ2hsaWdodC5jb250ZW50T3V0bGluZUNvbG9yLnNlcmlhbGl6ZWQoKSkKKyAgICAg
ICAgLnNldFBhZGRpbmdDb2xvcihoaWdobGlnaHQucGFkZGluZ0NvbG9yLnNlcmlhbGl6ZWQoKSkK
KyAgICAgICAgLnNldEJvcmRlckNvbG9yKGhpZ2hsaWdodC5ib3JkZXJDb2xvci5zZXJpYWxpemVk
KCkpCisgICAgICAgIC5zZXRNYXJnaW5Db2xvcihoaWdobGlnaHQubWFyZ2luQ29sb3Iuc2VyaWFs
aXplZCgpKQorICAgICAgICAucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gYnVpbGRPYmplY3RGb3JSZWdpb25IaWdobGlnaHQoRnJhbWVWaWV3KiBtYWluVmll
dywgUmVuZGVyUmVnaW9uKiByZWdpb24pCitzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok92ZXJsYXlUeXBlczo6UmVnaW9uPiBidWlsZE9iamVjdEZvclJlZ2lvbihGcmFtZVZpZXcq
IG1haW5WaWV3LCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKIHsKICAgICBGcmFtZVZpZXcqIGNvbnRh
aW5pbmdWaWV3ID0gcmVnaW9uLT5mcmFtZSgpLnZpZXcoKTsKICAgICBpZiAoIWNvbnRhaW5pbmdW
aWV3KQpAQCAtMzg4LDcgKzM4OSw3IEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBi
dWlsZE9iamVjdEZvclJlZ2lvbkhpZ2hsaWdodChGcmFtZVZpZXcqIG1haW5WaWV3CiAgICAgLy8g
Q3JlYXRlIGluY29taW5nIGFuZCBvdXRnb2luZyBib3hlcyB0aGF0IHdlIHVzZSB0byBjaGFpbiB0
aGUgcmVnaW9ucyB0b2doZXRoZXIuCiAgICAgY29uc3QgTGF5b3V0U2l6ZSBsaW5rQm94U2l6ZSgx
MCwgMTApOwogICAgIGNvbnN0IExheW91dFNpemUgbGlua0JveE1pZHBvaW50KGxpbmtCb3hTaXpl
LndpZHRoKCkgLyAyLCBsaW5rQm94U2l6ZS5oZWlnaHQoKSAvIDIpOwotICAgIAorCiAgICAgTGF5
b3V0UmVjdCBpbmNvbWluZ1JlY3RCb3ggPSBMYXlvdXRSZWN0KGJvcmRlckJveC5sb2NhdGlvbigp
IC0gbGlua0JveE1pZHBvaW50LCBsaW5rQm94U2l6ZSk7CiAgICAgTGF5b3V0UmVjdCBvdXRnb2lu
Z1JlY3RCb3ggPSBMYXlvdXRSZWN0KGJvcmRlckJveC5sb2NhdGlvbigpIC0gbGlua0JveE1pZHBv
aW50ICsgYm9yZGVyQm94LnNpemUoKSwgbGlua0JveFNpemUpOwogCkBAIC00MDYsNDcgKzQwNyw0
NSBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JSZWdpb25I
aWdobGlnaHQoRnJhbWVWaWV3KiBtYWluVmlldwogICAgIGNvbnRlbnRzUXVhZFRvUGFnZShtYWlu
VmlldywgY29udGFpbmluZ1ZpZXcsIGluY29taW5nUmVjdFF1YWQpOwogICAgIGNvbnRlbnRzUXVh
ZFRvUGFnZShtYWluVmlldywgY29udGFpbmluZ1ZpZXcsIG91dGdvaW5nUmVjdFF1YWQpOwogCi0g
ICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVnaW9uT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsKLQotICAgIHJlZ2lvbk9iamVjdC0+c2V0QXJyYXkoImJvcmRlclF1YWQiLCBidWls
ZEFycmF5Rm9yUXVhZChib3JkZXJSZWN0UXVhZCkpOwotICAgIHJlZ2lvbk9iamVjdC0+c2V0QXJy
YXkoImluY29taW5nUXVhZCIsIGJ1aWxkQXJyYXlGb3JRdWFkKGluY29taW5nUmVjdFF1YWQpKTsK
LSAgICByZWdpb25PYmplY3QtPnNldEFycmF5KCJvdXRnb2luZ1F1YWQiLCBidWlsZEFycmF5Rm9y
UXVhZChvdXRnb2luZ1JlY3RRdWFkKSk7Ci0KLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlZ2lvbk9i
amVjdCk7CisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UmVn
aW9uOjpjcmVhdGUoKQorICAgICAgICAuc2V0Qm9yZGVyUXVhZChidWlsZEFycmF5Rm9yUXVhZChi
b3JkZXJSZWN0UXVhZCkpCisgICAgICAgIC5zZXRJbmNvbWluZ1F1YWQoYnVpbGRBcnJheUZvclF1
YWQoaW5jb21pbmdSZWN0UXVhZCkpCisgICAgICAgIC5zZXRPdXRnb2luZ1F1YWQoYnVpbGRBcnJh
eUZvclF1YWQob3V0Z29pbmdSZWN0UXVhZCkpCisgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLXN0
YXRpYyBSZWY8SW5zcGVjdG9yQXJyYXk+IGJ1aWxkT2JqZWN0Rm9yQ1NTUmVnaW9uc0hpZ2hsaWdo
dChSZW5kZXJSZWdpb24qIHJlZ2lvbiwgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkKK3N0
YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
T3ZlcmxheVR5cGVzOjpSZWdpb24+PiBidWlsZE9iamVjdEZvckZsb3dSZWdpb25zKFJlbmRlclJl
Z2lvbiogcmVnaW9uLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQogewogICAgIEZyYW1l
VmlldyogbWFpbkZyYW1lVmlldyA9IHJlZ2lvbi0+ZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFt
ZSgpLnZpZXcoKTsKIAotICAgIFJlZjxJbnNwZWN0b3JBcnJheT4gYXJyYXkgPSBJbnNwZWN0b3JB
cnJheTo6Y3JlYXRlKCk7CisgICAgYXV0byBhcnJheU9mUmVnaW9ucyA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UmVnaW9uPjo6
Y3JlYXRlKCk7CiAKICAgICBjb25zdCBSZW5kZXJSZWdpb25MaXN0JiByZWdpb25MaXN0ID0gZmxv
d1RocmVhZC0+cmVuZGVyUmVnaW9uTGlzdCgpOwogICAgIGZvciAoYXV0byYgaXRlclJlZ2lvbiA6
IHJlZ2lvbkxpc3QpIHsKICAgICAgICAgaWYgKCFpdGVyUmVnaW9uLT5pc1ZhbGlkKCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVnaW9u
SGlnaGxpZ2h0T2JqZWN0ID0gYnVpbGRPYmplY3RGb3JSZWdpb25IaWdobGlnaHQobWFpbkZyYW1l
VmlldywgaXRlclJlZ2lvbik7Ci0gICAgICAgIGlmICghcmVnaW9uSGlnaGxpZ2h0T2JqZWN0KQor
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWdpb24+
IHJlZ2lvbk9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yUmVnaW9uKG1haW5GcmFtZVZpZXcsIGl0ZXJS
ZWdpb24pOworICAgICAgICBpZiAoIXJlZ2lvbk9iamVjdCkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBpZiAocmVnaW9uID09IGl0ZXJSZWdpb24pIHsKICAgICAgICAgICAgIC8vIExl
dCB0aGUgc2NyaXB0IGtub3cgdGhhdCB0aGlzIGlzIHRoZSBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQg
bm9kZS4KLSAgICAgICAgICAgIHJlZ2lvbkhpZ2hsaWdodE9iamVjdC0+c2V0Qm9vbGVhbigiaXNI
aWdobGlnaHRlZCIsIHRydWUpOworICAgICAgICAgICAgcmVnaW9uT2JqZWN0LT5zZXRJc0hpZ2hs
aWdodGVkKHRydWUpOwogICAgICAgICB9Ci0gICAgICAgIGFycmF5LT5wdXNoT2JqZWN0KHJlZ2lv
bkhpZ2hsaWdodE9iamVjdC5yZWxlYXNlKCkpOworICAgICAgICBhcnJheU9mUmVnaW9ucy0+YWRk
SXRlbShXVEY6Om1vdmUocmVnaW9uT2JqZWN0KSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6
bW92ZShhcnJheSk7CisgICAgcmV0dXJuIFdURjo6bW92ZShhcnJheU9mUmVnaW9ucyk7CiB9CiAK
LXN0YXRpYyBSZWY8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKK3N0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVz
OjpTaXplPiBidWlsZE9iamVjdEZvclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBS
ZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwot
ICAgIHJlc3VsdC0+c2V0SW50ZWdlcigid2lkdGgiLCBzaXplLndpZHRoKCkpOwotICAgIHJlc3Vs
dC0+c2V0SW50ZWdlcigiaGVpZ2h0Iiwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgcmV0dXJuIFdURjo6
bW92ZShyZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlw
ZXM6OlNpemU6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRXaWR0aChzaXplLndpZHRoKCkpCisgICAg
ICAgIC5zZXRIZWlnaHQoc2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAot
c3RhdGljIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQ1NTUmVnaW9uQ29u
dGVudENsaXAoUmVuZGVyUmVnaW9uKiByZWdpb24pCitzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UXVhZD4gYnVpbGRRdWFkT2JqZWN0Rm9yQ1NTUmVnaW9u
Q29udGVudENsaXAoUmVuZGVyUmVnaW9uKiByZWdpb24pCiB7CiAgICAgRnJhbWUqIGNvbnRhaW5p
bmdGcmFtZSA9IHJlZ2lvbi0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghY29udGFpbmlu
Z0ZyYW1lKQpAQCAtNDY2LDkgKzQ2NSw3IEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBidWlsZE9iamVjdEZvckNTU1JlZ2lvbkNvbnRlbnRDbGlwKFJlbmRlclJlZ2lvbioKICAgICBG
bG9hdFF1YWQgY2xpcFF1YWQgPSByZWdpb24tPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0
KGZsaXBwZWRSZWdpb25SZWN0KSk7CiAgICAgY29udGVudHNRdWFkVG9QYWdlKG1haW5WaWV3LCBj
b250YWluaW5nVmlldywgY2xpcFF1YWQpOwogCi0gICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVn
aW9uT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICByZWdpb25PYmplY3Qt
PnNldEFycmF5KCJxdWFkIiwgYnVpbGRBcnJheUZvclF1YWQoY2xpcFF1YWQpKTsKLSAgICByZXR1
cm4gV1RGOjptb3ZlKHJlZ2lvbk9iamVjdCk7CisgICAgcmV0dXJuIGJ1aWxkQXJyYXlGb3JRdWFk
KGNsaXBRdWFkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpzZXRTaG93aW5nUGFpbnRS
ZWN0cyhib29sIHNob3dpbmdQYWludFJlY3RzKQpAQCAtNTE0LDcgKzUxMSw3IEBAIHZvaWQgSW5z
cGVjdG9yT3ZlcmxheTo6dXBkYXRlUGFpbnRSZWN0c1RpbWVyRmlyZWQoKQogICAgICAgICBtX3Bh
aW50UmVjdHMucmVtb3ZlRmlyc3QoKTsKICAgICAgICAgcmVjdHNDaGFuZ2VkID0gdHJ1ZTsKICAg
ICB9Ci0gICAgCisKICAgICBpZiAobV9wYWludFJlY3RzLmlzRW1wdHkoKSkKICAgICAgICAgbV9w
YWludFJlY3RVcGRhdGVUaW1lci5zdG9wKCk7CiAKQEAgLTUyNiwxMSArNTIzLDExIEBAIHZvaWQg
SW5zcGVjdG9yT3ZlcmxheTo6dXBkYXRlUGFpbnRSZWN0c1RpbWVyRmlyZWQoKQogCiB2b2lkIElu
c3BlY3Rvck92ZXJsYXk6OmRyYXdQYWludFJlY3RzKCkKIHsKLSAgICBSZWY8SW5zcGVjdG9yQXJy
YXk+IGZyYWdtZW50c0FycmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIGF1dG8g
YXJyYXlPZlJlY3RzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWN0Pjo6Y3JlYXRlKCk7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBwYWlyIDogbV9wYWludFJlY3RzKQotICAgICAgICBmcmFnbWVudHNBcnJheS0+cHVzaE9iamVj
dChidWlsZE9iamVjdEZvclJlY3QocGFpci5zZWNvbmQpKTsKKyAgICAgICAgYXJyYXlPZlJlY3Rz
LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yUmVjdChwYWlyLnNlY29uZCkpOwogCi0gICAgZXZhbHVh
dGVJbk92ZXJsYXkoQVNDSUlMaXRlcmFsKCJ1cGRhdGVQYWludFJlY3RzIiksIFdURjo6bW92ZShm
cmFnbWVudHNBcnJheSkpOworICAgIGV2YWx1YXRlSW5PdmVybGF5KEFTQ0lJTGl0ZXJhbCgidXBk
YXRlUGFpbnRSZWN0cyIpLCBXVEY6Om1vdmUoYXJyYXlPZlJlY3RzKSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yT3ZlcmxheTo6ZHJhd0d1dHRlcigpCkBAIC01MzgsMTUgKzUzNSwxNSBAQCB2b2lkIElu
c3BlY3Rvck92ZXJsYXk6OmRyYXdHdXR0ZXIoKQogICAgIGV2YWx1YXRlSW5PdmVybGF5KEFTQ0lJ
TGl0ZXJhbCgiZHJhd0d1dHRlciIpKTsKIH0KIAotc3RhdGljIFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gYnVpbGRPYmplY3RGb3JSZW5kZXJlckZyYWdtZW50cyhSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBjb25zdCBIaWdobGlnaHRDb25maWcmIGNvbmZpZykKK3N0YXRpYyBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFn
bWVudEhpZ2hsaWdodERhdGE+PiBidWlsZEFycmF5Rm9yUmVuZGVyZXJGcmFnbWVudHMoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBjb25maWcpCiB7Ci0gICAg
UmVmPEluc3BlY3RvckFycmF5PiBmcmFnbWVudHNBcnJheSA9IEluc3BlY3RvckFycmF5OjpjcmVh
dGUoKTsKKyAgICBhdXRvIGFycmF5T2ZGcmFnbWVudHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0
RGF0YT46OmNyZWF0ZSgpOwogCiAgICAgUmVuZGVyRmxvd1RocmVhZCogY29udGFpbmluZ0Zsb3dU
aHJlYWQgPSByZW5kZXJlci0+Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOwogICAgIGlmICgh
Y29udGFpbmluZ0Zsb3dUaHJlYWQpIHsKICAgICAgICAgSGlnaGxpZ2h0IGhpZ2hsaWdodDsKLSAg
ICAgICAgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChyZW5kZXJlciwgbnVsbHB0ciwgY29uZmlnLCAm
aGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtOjpWaWV3KTsKLSAg
ICAgICAgZnJhZ21lbnRzQXJyYXktPnB1c2hPYmplY3QoYnVpbGRPYmplY3RGb3JIaWdobGlnaHQo
aGlnaGxpZ2h0KSk7CisgICAgICAgIGJ1aWxkUmVuZGVyZXJIaWdobGlnaHQocmVuZGVyZXIsIG51
bGxwdHIsIGNvbmZpZywgaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lz
dGVtOjpWaWV3KTsKKyAgICAgICAgYXJyYXlPZkZyYWdtZW50cy0+YWRkSXRlbShidWlsZE9iamVj
dEZvckhpZ2hsaWdodChoaWdobGlnaHQpKTsKICAgICB9IGVsc2UgewogICAgICAgICBSZW5kZXJS
ZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKICAgICAgICAgUmVuZGVyUmVnaW9uKiBlbmRS
ZWdpb24gPSBudWxscHRyOwpAQCAtNTYxLDE5ICs1NTgsMTkgQEAgc3RhdGljIFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gYnVpbGRPYmplY3RGb3JSZW5kZXJlckZyYWdtZW50cyhSZW5kZXJPYmplY3Qq
IHJlbmQKICAgICAgICAgICAgIGlmIChyZWdpb24tPmlzVmFsaWQoKSkgewogICAgICAgICAgICAg
ICAgIC8vIENvbXB1dGUgdGhlIGhpZ2hsaWdodCBvZiB0aGUgZnJhZ21lbnQgaW5zaWRlIHRoZSBj
dXJyZW50IHJlZ2lvbi4KICAgICAgICAgICAgICAgICBIaWdobGlnaHQgaGlnaGxpZ2h0OwotICAg
ICAgICAgICAgICAgIGJ1aWxkUmVuZGVyZXJIaWdobGlnaHQocmVuZGVyZXIsIHJlZ2lvbiwgY29u
ZmlnLCAmaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtOjpWaWV3
KTsKLSAgICAgICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBmcmFnbWVudE9iamVjdCA9
IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KGhpZ2hsaWdodCk7CisgICAgICAgICAgICAgICAgYnVp
bGRSZW5kZXJlckhpZ2hsaWdodChyZW5kZXJlciwgcmVnaW9uLCBjb25maWcsIGhpZ2hsaWdodCwg
SW5zcGVjdG9yT3ZlcmxheTo6Q29vcmRpbmF0ZVN5c3RlbTo6Vmlldyk7CisgICAgICAgICAgICAg
ICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdobGln
aHREYXRhPiBmcmFnbWVudEhpZ2hsaWdodCA9IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KGhpZ2hs
aWdodCk7CiAKICAgICAgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBjbGlwcGluZyBhcmVhIG9m
IHRoZSByZWdpb24uCi0gICAgICAgICAgICAgICAgZnJhZ21lbnRPYmplY3QtPnNldE9iamVjdCgi
cmVnaW9uIiwgYnVpbGRPYmplY3RGb3JDU1NSZWdpb25Db250ZW50Q2xpcChyZWdpb24pKTsKLSAg
ICAgICAgICAgICAgICBmcmFnbWVudHNBcnJheS0+cHVzaE9iamVjdChXVEY6Om1vdmUoZnJhZ21l
bnRPYmplY3QpKTsKKyAgICAgICAgICAgICAgICBmcmFnbWVudEhpZ2hsaWdodC0+c2V0UmVnaW9u
Q2xpcHBpbmdBcmVhKGJ1aWxkUXVhZE9iamVjdEZvckNTU1JlZ2lvbkNvbnRlbnRDbGlwKHJlZ2lv
bikpOworICAgICAgICAgICAgICAgIGFycmF5T2ZGcmFnbWVudHMtPmFkZEl0ZW0oV1RGOjptb3Zl
KGZyYWdtZW50SGlnaGxpZ2h0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAocmVn
aW9uID09IGVuZFJlZ2lvbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
IH0KIAotICAgIHJldHVybiBXVEY6Om1vdmUoZnJhZ21lbnRzQXJyYXkpOworICAgIHJldHVybiBX
VEY6Om1vdmUoYXJyYXlPZkZyYWdtZW50cyk7CiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykK
QEAgLTU4OCwyNiArNTg1LDI3IEBAIHN0YXRpYyBGbG9hdFBvaW50IGxvY2FsUG9pbnRUb1Jvb3Qo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgRnJhbWVWaWV3KiBtYWluCiBzdHJ1Y3QgUGF0
aEFwcGx5SW5mbyB7CiAgICAgRnJhbWVWaWV3KiByb290VmlldzsKICAgICBGcmFtZVZpZXcqIHZp
ZXc7Ci0gICAgSW5zcGVjdG9yQXJyYXkqIGFycmF5OworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok92ZXJsYXlUeXBlczo6RGlzcGxheVBhdGgqIHBhdGhBcnJheTsKICAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyOwogICAgIGNvbnN0IFNoYXBlT3V0c2lkZUluZm8qIHNoYXBlT3V0c2lkZUluZm87
CiB9OwogCi1zdGF0aWMgdm9pZCBhcHBlbmRQYXRoQ29tbWFuZEFuZFBvaW50cyhQYXRoQXBwbHlJ
bmZvKiBpbmZvLCBjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGNvbnN0IEZsb2F0UG9pbnQgcG9pbnRz
W10sIHVuc2lnbmVkIGxlbmd0aCkKK3N0YXRpYyB2b2lkIGFwcGVuZFBhdGhDb21tYW5kQW5kUG9p
bnRzKFBhdGhBcHBseUluZm8mIGluZm8sIGNvbnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3QgRmxv
YXRQb2ludCBwb2ludHNbXSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIEZsb2F0UG9pbnQgcG9p
bnQ7Ci0gICAgaW5mby0+YXJyYXktPnB1c2hTdHJpbmcoY29tbWFuZCk7CisgICAgaW5mby5wYXRo
QXJyYXktPmFkZEl0ZW0oY29tbWFuZCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgaSsrKSB7Ci0gICAgICAgIHBvaW50ID0gaW5mby0+c2hhcGVPdXRzaWRlSW5mby0+c2hh
cGVUb1JlbmRlcmVyUG9pbnQocG9pbnRzW2ldKTsKLSAgICAgICAgcG9pbnQgPSBsb2NhbFBvaW50
VG9Sb290KGluZm8tPnJlbmRlcmVyLCBpbmZvLT5yb290VmlldywgaW5mby0+dmlldywgcG9pbnQp
OwotICAgICAgICBpbmZvLT5hcnJheS0+cHVzaERvdWJsZShwb2ludC54KCkpOwotICAgICAgICBp
bmZvLT5hcnJheS0+cHVzaERvdWJsZShwb2ludC55KCkpOworICAgICAgICBwb2ludCA9IGluZm8u
c2hhcGVPdXRzaWRlSW5mby0+c2hhcGVUb1JlbmRlcmVyUG9pbnQocG9pbnRzW2ldKTsKKyAgICAg
ICAgcG9pbnQgPSBsb2NhbFBvaW50VG9Sb290KGluZm8ucmVuZGVyZXIsIGluZm8ucm9vdFZpZXcs
IGluZm8udmlldywgcG9pbnQpOworICAgICAgICBpbmZvLnBhdGhBcnJheS0+YWRkSXRlbShwb2lu
dC54KCkpOworICAgICAgICBpbmZvLnBhdGhBcnJheS0+YWRkSXRlbShwb2ludC55KCkpOwogICAg
IH0KIH0KIAorLy8gVXNlZCBhcyBhIGZ1bmN0b3IgZm9yIFNoYXBlOjphcHBseSwgd2hpY2ggaGFz
IG5vdCBiZWVuIGNsZWFuZWQgdXAgdG8gdXNlIG1vZGVybiBDKysuCiBzdGF0aWMgdm9pZCBhcHBl
bmRQYXRoU2VnbWVudCh2b2lkKiBpbmZvLCBjb25zdCBQYXRoRWxlbWVudCogcGF0aEVsZW1lbnQp
CiB7Ci0gICAgUGF0aEFwcGx5SW5mbyogcGF0aEFwcGx5SW5mbyA9IHN0YXRpY19jYXN0PFBhdGhB
cHBseUluZm8qPihpbmZvKTsKKyAgICBQYXRoQXBwbHlJbmZvJiBwYXRoQXBwbHlJbmZvID0gKnN0
YXRpY19jYXN0PFBhdGhBcHBseUluZm8qPihpbmZvKTsKICAgICBGbG9hdFBvaW50IHBvaW50Owog
ICAgIHN3aXRjaCAocGF0aEVsZW1lbnQtPnR5cGUpIHsKICAgICAvLyBUaGUgcG9pbnRzIG1lbWJl
ciB3aWxsIGNvbnRhaW4gMSB2YWx1ZS4KQEAgLTYzMyw0MSArNjMxLDQzIEBAIHN0YXRpYyB2b2lk
IGFwcGVuZFBhdGhTZWdtZW50KHZvaWQqIGluZm8sIGNvbnN0IFBhdGhFbGVtZW50KiBwYXRoRWxl
bWVudCkKICAgICB9CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9i
amVjdEZvclNoYXBlT3V0c2lkZShGcmFtZSogY29udGFpbmluZ0ZyYW1lLCBSZW5kZXJCb3gqIHJl
bmRlcmVyKQorc3RhdGljIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6
OlNoYXBlT3V0c2lkZURhdGE+IGJ1aWxkT2JqZWN0Rm9yU2hhcGVPdXRzaWRlKEZyYW1lKiBjb250
YWluaW5nRnJhbWUsIFJlbmRlckJveCogcmVuZGVyZXIpCiB7CiAgICAgY29uc3QgU2hhcGVPdXRz
aWRlSW5mbyogc2hhcGVPdXRzaWRlSW5mbyA9IHJlbmRlcmVyLT5zaGFwZU91dHNpZGVJbmZvKCk7
CiAgICAgaWYgKCFzaGFwZU91dHNpZGVJbmZvKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHNoYXBlT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBMYXlvdXRSZWN0IHNoYXBlQm91bmRzID0gc2hhcGVPdXRzaWRlSW5mby0+
Y29tcHV0ZWRTaGFwZVBoeXNpY2FsQm91bmRpbmdCb3goKTsKICAgICBGbG9hdFF1YWQgc2hhcGVR
dWFkID0gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KHNoYXBlQm91bmRz
KSk7CiAgICAgY29udGVudHNRdWFkVG9QYWdlKGNvbnRhaW5pbmdGcmFtZS0+cGFnZSgpLT5tYWlu
RnJhbWUoKS52aWV3KCksIGNvbnRhaW5pbmdGcmFtZS0+dmlldygpLCBzaGFwZVF1YWQpOwotICAg
IHNoYXBlT2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImJvdW5kcyIpLCBidWlsZEFycmF5
Rm9yUXVhZChzaGFwZVF1YWQpKTsKKworICAgIGF1dG8gc2hhcGVPYmplY3QgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlNoYXBlT3V0c2lkZURhdGE6OmNyZWF0ZSgpCisgICAg
ICAgIC5zZXRCb3VuZHMoYnVpbGRBcnJheUZvclF1YWQoc2hhcGVRdWFkKSkKKyAgICAgICAgLnJl
bGVhc2UoKTsKIAogICAgIFNoYXBlOjpEaXNwbGF5UGF0aHMgcGF0aHM7CiAgICAgc2hhcGVPdXRz
aWRlSW5mby0+Y29tcHV0ZWRTaGFwZSgpLmJ1aWxkRGlzcGxheVBhdGhzKHBhdGhzKTsKIAogICAg
IGlmIChwYXRocy5zaGFwZS5sZW5ndGgoKSkgewotICAgICAgICBSZWY8SW5zcGVjdG9yQXJyYXk+
IHNoYXBlUGF0aCA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBzaGFw
ZVBhdGggPSBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkRpc3BsYXlQYXRoOjpj
cmVhdGUoKTsKICAgICAgICAgUGF0aEFwcGx5SW5mbyBpbmZvOwogICAgICAgICBpbmZvLnJvb3RW
aWV3ID0gY29udGFpbmluZ0ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKTsKICAgICAg
ICAgaW5mby52aWV3ID0gY29udGFpbmluZ0ZyYW1lLT52aWV3KCk7Ci0gICAgICAgIGluZm8uYXJy
YXkgPSAmc2hhcGVQYXRoLmdldCgpOworICAgICAgICBpbmZvLnBhdGhBcnJheSA9ICZzaGFwZVBh
dGguZ2V0KCk7CiAgICAgICAgIGluZm8ucmVuZGVyZXIgPSByZW5kZXJlcjsKICAgICAgICAgaW5m
by5zaGFwZU91dHNpZGVJbmZvID0gc2hhcGVPdXRzaWRlSW5mbzsKIAogICAgICAgICBwYXRocy5z
aGFwZS5hcHBseSgmaW5mbywgJmFwcGVuZFBhdGhTZWdtZW50KTsKIAotICAgICAgICBzaGFwZU9i
amVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJzaGFwZSIpLCBzaGFwZVBhdGguY29weVJlZigp
KTsKKyAgICAgICAgc2hhcGVPYmplY3QtPnNldFNoYXBlKHNoYXBlUGF0aC5jb3B5UmVmKCkpOwog
CiAgICAgICAgIGlmIChwYXRocy5tYXJnaW5TaGFwZS5sZW5ndGgoKSkgewotICAgICAgICAgICAg
c2hhcGVQYXRoID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwotICAgICAgICAgICAgaW5mby5h
cnJheSA9ICZzaGFwZVBhdGguZ2V0KCk7CisgICAgICAgICAgICBhdXRvIG1hcmdpblNoYXBlUGF0
aCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RGlzcGxheVBhdGg6OmNyZWF0
ZSgpOworICAgICAgICAgICAgaW5mby5wYXRoQXJyYXkgPSAmbWFyZ2luU2hhcGVQYXRoLmdldCgp
OwogCiAgICAgICAgICAgICBwYXRocy5tYXJnaW5TaGFwZS5hcHBseSgmaW5mbywgJmFwcGVuZFBh
dGhTZWdtZW50KTsKIAotICAgICAgICAgICAgc2hhcGVPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0
ZXJhbCgibWFyZ2luU2hhcGUiKSwgc2hhcGVQYXRoLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBz
aGFwZU9iamVjdC0+c2V0TWFyZ2luU2hhcGUoc2hhcGVQYXRoLmNvcHlSZWYoKSk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTY3NSwxOCArNjc1LDE5IEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBidWlsZE9iamVjdEZvclNoYXBlT3V0c2lkZShGcmFtZSogY29udGFpbmluZ0ZyYW1l
CiB9CiAjZW5kaWYKIAotc3RhdGljIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0
Rm9yRWxlbWVudEluZm8oTm9kZSogbm9kZSkKK3N0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6T3ZlcmxheVR5cGVzOjpFbGVtZW50RGF0YT4gYnVpbGRPYmplY3RGb3JFbGVtZW50RGF0
YShOb2RlKiBub2RlKQogewotICAgIEFTU0VSVChub2RlKTsKLSAgICBpZiAoIWlzPEVsZW1lbnQ+
KCpub2RlKSB8fCAhbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKQorICAgIGlmICghaXM8RWxlbWVu
dD4obm9kZSkgfHwgIW5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBlbGVtZW50SW5mbyA9IEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCk7Ci0KICAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxl
bWVudD4oKm5vZGUpOwogICAgIGJvb2wgaXNYSFRNTCA9IGVsZW1lbnQuZG9jdW1lbnQoKS5pc1hI
VE1MRG9jdW1lbnQoKTsKLSAgICBlbGVtZW50SW5mby0+c2V0U3RyaW5nKCJ0YWdOYW1lIiwgaXNY
SFRNTCA/IGVsZW1lbnQubm9kZU5hbWUoKSA6IGVsZW1lbnQubm9kZU5hbWUoKS5sb3dlcigpKTsK
LSAgICBlbGVtZW50SW5mby0+c2V0U3RyaW5nKCJpZFZhbHVlIiwgZWxlbWVudC5nZXRJZEF0dHJp
YnV0ZSgpKTsKKworICAgIGF1dG8gZWxlbWVudERhdGEgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpP
dmVybGF5VHlwZXM6OkVsZW1lbnREYXRhOjpjcmVhdGUoKQorICAgICAgICAuc2V0VGFnTmFtZShp
c1hIVE1MID8gZWxlbWVudC5ub2RlTmFtZSgpIDogZWxlbWVudC5ub2RlTmFtZSgpLmxvd2VyKCkp
CisgICAgICAgIC5zZXRJZFZhbHVlKGVsZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKSkKKyAgICAgICAg
LnJlbGVhc2UoKTsKKwogICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiB1c2VkQ2xhc3NOYW1lczsK
ICAgICBpZiAoZWxlbWVudC5oYXNDbGFzcygpICYmIGlzPFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQp
KSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgY2xhc3NOYW1lczsKQEAgLTcwMCw0MCArNzAxLDQ5
IEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckVsZW1lbnRJ
bmZvKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBjbGFzc05hbWVzLmFwcGVuZCgnLicpOwogICAg
ICAgICAgICAgY2xhc3NOYW1lcy5hcHBlbmQoY2xhc3NOYW1lKTsKICAgICAgICAgfQotICAgICAg
ICBlbGVtZW50SW5mby0+c2V0U3RyaW5nKCJjbGFzc05hbWUiLCBjbGFzc05hbWVzLnRvU3RyaW5n
KCkpOworICAgICAgICBlbGVtZW50RGF0YS0+c2V0Q2xhc3NOYW1lKGNsYXNzTmFtZXMudG9TdHJp
bmcoKSk7CiAgICAgfQogCiAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBlbGVtZW50LnJl
bmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
ICAgICBGcmFtZSogY29udGFpbmluZ0ZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwog
ICAgIEZyYW1lVmlldyogY29udGFpbmluZ1ZpZXcgPSBjb250YWluaW5nRnJhbWUtPnZpZXcoKTsK
ICAgICBJbnRSZWN0IGJvdW5kaW5nQm94ID0gc25hcHBlZEludFJlY3QoY29udGFpbmluZ1ZpZXct
PmNvbnRlbnRzVG9Sb290VmlldyhyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkp
OwogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBtb2RlbE9iamVjdCA9IGlzPFJlbmRlckJveE1v
ZGVsT2JqZWN0PigqcmVuZGVyZXIpID8gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KHJl
bmRlcmVyKSA6IG51bGxwdHI7Ci0gICAgZWxlbWVudEluZm8tPnNldFN0cmluZygibm9kZVdpZHRo
IiwgU3RyaW5nOjpudW1iZXIobW9kZWxPYmplY3QgPyBhZGp1c3RGb3JBYnNvbHV0ZVpvb20obW9k
ZWxPYmplY3QtPnBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksICptb2RlbE9iamVjdCkgOiBib3Vu
ZGluZ0JveC53aWR0aCgpKSk7Ci0gICAgZWxlbWVudEluZm8tPnNldFN0cmluZygibm9kZUhlaWdo
dCIsIFN0cmluZzo6bnVtYmVyKG1vZGVsT2JqZWN0ID8gYWRqdXN0Rm9yQWJzb2x1dGVab29tKG1v
ZGVsT2JqZWN0LT5waXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSwgKm1vZGVsT2JqZWN0KSA6IGJv
dW5kaW5nQm94LmhlaWdodCgpKSk7Ci0gICAgCisgICAgYXV0byBzaXplT2JqZWN0ID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpTaXplOjpjcmVhdGUoKQorICAgICAgICAuc2V0
V2lkdGgobW9kZWxPYmplY3QgPyBhZGp1c3RGb3JBYnNvbHV0ZVpvb20obW9kZWxPYmplY3QtPnBp
eGVsU25hcHBlZE9mZnNldFdpZHRoKCksICptb2RlbE9iamVjdCkgOiBib3VuZGluZ0JveC53aWR0
aCgpKQorICAgICAgICAuc2V0SGVpZ2h0KG1vZGVsT2JqZWN0ID8gYWRqdXN0Rm9yQWJzb2x1dGVa
b29tKG1vZGVsT2JqZWN0LT5waXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSwgKm1vZGVsT2JqZWN0
KSA6IGJvdW5kaW5nQm94LmhlaWdodCgpKQorICAgICAgICAucmVsZWFzZSgpOworICAgIGVsZW1l
bnREYXRhLT5zZXRTaXplKFdURjo6bW92ZShzaXplT2JqZWN0KSk7CisKICAgICBpZiAocmVuZGVy
ZXItPmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRDb250YWluZXIoKSkgewogICAgICAgICBSZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCYgcmVnaW9uID0gKmRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4o
KnJlbmRlcmVyKS5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOwogICAgICAgICBpZiAocmVnaW9u
LmlzVmFsaWQoKSkgewogICAgICAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9
IHJlZ2lvbi5mbG93VGhyZWFkKCk7Ci0gICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiByZWdpb25GbG93SW5mbyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAg
ICByZWdpb25GbG93SW5mby0+c2V0U3RyaW5nKCJuYW1lIiwgZG93bmNhc3Q8UmVuZGVyTmFtZWRG
bG93VGhyZWFkPigqZmxvd1RocmVhZCkuZmxvd1RocmVhZE5hbWUoKSk7Ci0gICAgICAgICAgICBy
ZWdpb25GbG93SW5mby0+c2V0QXJyYXkoInJlZ2lvbnMiLCBidWlsZE9iamVjdEZvckNTU1JlZ2lv
bnNIaWdobGlnaHQoJnJlZ2lvbiwgZmxvd1RocmVhZCkpOwotICAgICAgICAgICAgZWxlbWVudElu
Zm8tPnNldE9iamVjdCgicmVnaW9uRmxvd0luZm8iLCByZWdpb25GbG93SW5mby5yZWxlYXNlKCkp
OworICAgICAgICAgICAgYXV0byByZWdpb25GbG93RGF0YSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok92ZXJsYXlUeXBlczo6UmVnaW9uRmxvd0RhdGE6OmNyZWF0ZSgpCisgICAgICAgICAgICAgICAg
LnNldE5hbWUoZG93bmNhc3Q8UmVuZGVyTmFtZWRGbG93VGhyZWFkPigqZmxvd1RocmVhZCkuZmxv
d1RocmVhZE5hbWUoKSkKKyAgICAgICAgICAgICAgICAuc2V0UmVnaW9ucyhidWlsZE9iamVjdEZv
ckZsb3dSZWdpb25zKCZyZWdpb24sIGZsb3dUaHJlYWQpKQorICAgICAgICAgICAgICAgIC5yZWxl
YXNlKCk7CisgICAgICAgICAgICBlbGVtZW50RGF0YS0+c2V0UmVnaW9uRmxvd0RhdGEoV1RGOjpt
b3ZlKHJlZ2lvbkZsb3dEYXRhKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBSZW5kZXJGbG93
VGhyZWFkKiBjb250YWluaW5nRmxvd1RocmVhZCA9IHJlbmRlcmVyLT5mbG93VGhyZWFkQ29udGFp
bmluZ0Jsb2NrKCk7CiAgICAgaWYgKGlzPFJlbmRlck5hbWVkRmxvd1RocmVhZD4oY29udGFpbmlu
Z0Zsb3dUaHJlYWQpKSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNvbnRlbnRG
bG93SW5mbyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgIGNvbnRlbnRGbG93
SW5mby0+c2V0U3RyaW5nKCJuYW1lIiwgZG93bmNhc3Q8UmVuZGVyTmFtZWRGbG93VGhyZWFkPigq
Y29udGFpbmluZ0Zsb3dUaHJlYWQpLmZsb3dUaHJlYWROYW1lKCkpOwotICAgICAgICBlbGVtZW50
SW5mby0+c2V0T2JqZWN0KCJjb250ZW50Rmxvd0luZm8iLCBjb250ZW50Rmxvd0luZm8ucmVsZWFz
ZSgpKTsKKyAgICAgICAgYXV0byBjb250ZW50Rmxvd0RhdGEgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpPdmVybGF5VHlwZXM6OkNvbnRlbnRGbG93RGF0YTo6Y3JlYXRlKCkKKyAgICAgICAgICAgIC5z
ZXROYW1lKGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd1RocmVhZD4oKmNvbnRhaW5pbmdGbG93VGhy
ZWFkKS5mbG93VGhyZWFkTmFtZSgpKQorICAgICAgICAgICAgLnJlbGVhc2UoKTsKKworICAgICAg
ICBlbGVtZW50RGF0YS0+c2V0Q29udGVudEZsb3dEYXRhKFdURjo6bW92ZShjb250ZW50Rmxvd0Rh
dGEpKTsKICAgICB9CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKICAgICBpZiAoaXM8UmVuZGVy
Qm94PigqcmVuZGVyZXIpKSB7CiAgICAgICAgIGF1dG8mIHJlbmRlckJveCA9IGRvd25jYXN0PFJl
bmRlckJveD4oKnJlbmRlcmVyKTsKLSAgICAgICAgaWYgKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IHNoYXBlT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JTaGFwZU91dHNpZGUoY29udGFpbmluZ0ZyYW1l
LCAmcmVuZGVyQm94KSkKLSAgICAgICAgICAgIGVsZW1lbnRJbmZvLT5zZXRPYmplY3QoInNoYXBl
T3V0c2lkZUluZm8iLCBzaGFwZU9iamVjdC5yZWxlYXNlKCkpOworICAgICAgICBpZiAoUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6U2hhcGVPdXRzaWRlRGF0YT4gc2hh
cGVPYmplY3QgPSBidWlsZE9iamVjdEZvclNoYXBlT3V0c2lkZShjb250YWluaW5nRnJhbWUsICZy
ZW5kZXJCb3gpKQorICAgICAgICAgICAgZWxlbWVudERhdGEtPnNldFNoYXBlT3V0c2lkZURhdGEo
V1RGOjptb3ZlKHNoYXBlT2JqZWN0KSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTc0MywxMyArNzUz
LDEzIEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckVsZW1l
bnRJbmZvKE5vZGUqIG5vZGUpCiAKICAgICBpZiAoQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNo
ZSA9IG5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpKSB7CiAgICAgICAgIGlmIChBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUtPmdldE9yQ3JlYXRlKG5v
ZGUpKQotICAgICAgICAgICAgZWxlbWVudEluZm8tPnNldFN0cmluZygicm9sZSIsIGF4T2JqZWN0
LT5jb21wdXRlZFJvbGVTdHJpbmcoKSk7CisgICAgICAgICAgICBlbGVtZW50RGF0YS0+c2V0Um9s
ZShheE9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCkpOwogICAgIH0KIAotICAgIHJldHVybiBX
VEY6Om1vdmUoZWxlbWVudEluZm8pOworICAgIHJldHVybiBXVEY6Om1vdmUoZWxlbWVudERhdGEp
OwogfQogCi1SZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JPdmVybGF5OjpidWlsZE9i
amVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0CitSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT4gSW5zcGVjdG9yT3ZlcmxheTo6YnVp
bGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdAogewogICAgIGlmICghbV9oaWdobGln
aHROb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc1OSwzMyArNzY5LDMwIEBAIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3Rvck92ZXJsYXk6OmJ1aWxkT2JqZWN0Rm9ySGln
aGxpZ2h0ZWROb2RlKCkgY29uc3QKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gaGlnaGxpZ2h0RnJhZ21lbnRz
ID0gYnVpbGRPYmplY3RGb3JSZW5kZXJlckZyYWdtZW50cyhyZW5kZXJlciwgbV9ub2RlSGlnaGxp
Z2h0Q29uZmlnKTsKLSAgICBpZiAoIWhpZ2hsaWdodEZyYWdtZW50cykKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVz
OjpGcmFnbWVudEhpZ2hsaWdodERhdGE+PiBhcnJheU9mRnJhZ21lbnRIaWdobGlnaHRzID0gYnVp
bGRBcnJheUZvclJlbmRlcmVyRnJhZ21lbnRzKHJlbmRlcmVyLCBtX25vZGVIaWdobGlnaHRDb25m
aWcpOworICAgIGlmICghYXJyYXlPZkZyYWdtZW50SGlnaGxpZ2h0cykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBoaWdobGlnaHRPYmplY3QgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotCiAgICAgLy8gVGhlIG1haW4gdmlldydzIHNjcm9s
bCBvZmZzZXQgaXMgc2hhcmVkIGFjcm9zcyBhbGwgcXVhZHMuCiAgICAgRnJhbWVWaWV3KiBtYWlu
VmlldyA9IG1fcGFnZS5tYWluRnJhbWUoKS52aWV3KCk7Ci0gICAgaGlnaGxpZ2h0T2JqZWN0LT5z
ZXRPYmplY3QoInNjcm9sbCIsIGJ1aWxkT2JqZWN0Rm9yUG9pbnQoIW1haW5WaWV3LT5kZWxlZ2F0
ZXNTY3JvbGxpbmcoKSA/IG1haW5WaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigp
IDogRmxvYXRQb2ludCgpKSk7CiAKLSAgICBoaWdobGlnaHRPYmplY3QtPnNldEFycmF5KCJmcmFn
bWVudHMiLCBoaWdobGlnaHRGcmFnbWVudHMucmVsZWFzZSgpKTsKKyAgICBhdXRvIG5vZGVIaWdo
bGlnaHRPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdo
bGlnaHREYXRhOjpjcmVhdGUoKQorICAgICAgICAuc2V0U2Nyb2xsT2Zmc2V0KGJ1aWxkT2JqZWN0
Rm9yUG9pbnQoIW1haW5WaWV3LT5kZWxlZ2F0ZXNTY3JvbGxpbmcoKSA/IG1haW5WaWV3LT52aXNp
YmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpIDogRmxvYXRQb2ludCgpKSkKKyAgICAgICAgLnNl
dEZyYWdtZW50cyhXVEY6Om1vdmUoYXJyYXlPZkZyYWdtZW50SGlnaGxpZ2h0cykpCisgICAgICAg
IC5yZWxlYXNlKCk7CiAKICAgICBpZiAobV9ub2RlSGlnaGxpZ2h0Q29uZmlnLnNob3dJbmZvKSB7
Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGVsZW1lbnRJbmZvID0gYnVpbGRPYmpl
Y3RGb3JFbGVtZW50SW5mbyhub2RlKTsKLSAgICAgICAgaWYgKGVsZW1lbnRJbmZvKQotICAgICAg
ICAgICAgaGlnaGxpZ2h0T2JqZWN0LT5zZXRPYmplY3QoImVsZW1lbnRJbmZvIiwgZWxlbWVudElu
Zm8ucmVsZWFzZSgpKTsKKyAgICAgICAgaWYgKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpP
dmVybGF5VHlwZXM6OkVsZW1lbnREYXRhPiBlbGVtZW50RGF0YSA9IGJ1aWxkT2JqZWN0Rm9yRWxl
bWVudERhdGEobm9kZSkpCisgICAgICAgICAgICBub2RlSGlnaGxpZ2h0T2JqZWN0LT5zZXRFbGVt
ZW50RGF0YShXVEY6Om1vdmUoZWxlbWVudERhdGEpKTsKICAgICB9Ci0gICAgICAgIAotICAgIHJl
dHVybiBXVEY6Om1vdmUoaGlnaGxpZ2h0T2JqZWN0KTsKKworICAgIHJldHVybiBXVEY6Om1vdmUo
bm9kZUhpZ2hsaWdodE9iamVjdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd05v
ZGVIaWdobGlnaHQoKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpZ2hsaWdodE9i
amVjdCA9IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCk7Ci0gICAgaWYgKCFoaWdobGln
aHRPYmplY3QpCi0gICAgICAgIHJldHVybjsKLSAgICBldmFsdWF0ZUluT3ZlcmxheSgiZHJhd05v
ZGVIaWdobGlnaHQiLCBoaWdobGlnaHRPYmplY3QpOworICAgIGlmIChSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT4gaGlnaGxpZ2h0T2Jq
ZWN0ID0gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSkKKyAgICAgICAgZXZhbHVhdGVJ
bk92ZXJsYXkoImRyYXdOb2RlSGlnaGxpZ2h0IiwgV1RGOjptb3ZlKGhpZ2hsaWdodE9iamVjdCkp
OwogfQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdRdWFkSGlnaGxpZ2h0KCkKQEAgLTc5
NCw3ICs4MDEsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdRdWFkSGlnaGxpZ2h0KCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgSGlnaGxpZ2h0IGhpZ2hsaWdodDsKLSAgICBidWlsZFF1
YWRIaWdobGlnaHQoKm1faGlnaGxpZ2h0UXVhZCwgbV9xdWFkSGlnaGxpZ2h0Q29uZmlnLCAmaGln
aGxpZ2h0KTsKKyAgICBidWlsZFF1YWRIaWdobGlnaHQoKm1faGlnaGxpZ2h0UXVhZCwgbV9xdWFk
SGlnaGxpZ2h0Q29uZmlnLCBoaWdobGlnaHQpOwogICAgIGV2YWx1YXRlSW5PdmVybGF5KCJkcmF3
UXVhZEhpZ2hsaWdodCIsIGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KGhpZ2hsaWdodCkpOwogfQog
CkBAIC04NTksMTEgKzg2NiwxMiBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmZvcmNlUGFpbnQo
KQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnJlc2V0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0
U2l6ZSwgY29uc3QgSW50U2l6ZSYgZnJhbWVWaWV3RnVsbFNpemUpCiB7Ci0gICAgUmVmPEluc3Bl
Y3Rvck9iamVjdD4gcmVzZXREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBy
ZXNldERhdGEtPnNldERvdWJsZSgiZGV2aWNlU2NhbGVGYWN0b3IiLCBtX3BhZ2UuZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7Ci0gICAgcmVzZXREYXRhLT5zZXRPYmplY3QoInZpZXdwb3J0U2l6ZSIsIGJ1
aWxkT2JqZWN0Rm9yU2l6ZSh2aWV3cG9ydFNpemUpKTsKLSAgICByZXNldERhdGEtPnNldE9iamVj
dCgiZnJhbWVWaWV3RnVsbFNpemUiLCBidWlsZE9iamVjdEZvclNpemUoZnJhbWVWaWV3RnVsbFNp
emUpKTsKLSAgICBldmFsdWF0ZUluT3ZlcmxheSgicmVzZXQiLCBXVEY6Om1vdmUocmVzZXREYXRh
KSk7CisgICAgYXV0byBjb25maWdPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5
VHlwZXM6Ok92ZXJsYXlDb25maWd1cmF0aW9uOjpjcmVhdGUoKQorICAgICAgICAuc2V0RGV2aWNl
U2NhbGVGYWN0b3IobV9wYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpCisgICAgICAgIC5zZXRWaWV3
cG9ydFNpemUoYnVpbGRPYmplY3RGb3JTaXplKHZpZXdwb3J0U2l6ZSkpCisgICAgICAgIC5zZXRG
cmFtZVZpZXdGdWxsU2l6ZShidWlsZE9iamVjdEZvclNpemUoZnJhbWVWaWV3RnVsbFNpemUpKQor
ICAgICAgICAucmVsZWFzZSgpOworICAgIGV2YWx1YXRlSW5PdmVybGF5KCJyZXNldCIsIFdURjo6
bW92ZShjb25maWdPYmplY3QpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpldmFsdWF0
ZUluT3ZlcmxheShjb25zdCBTdHJpbmcmIG1ldGhvZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5oCmluZGV4IGU1Y2ZlZWYyNTc1NmZiZWZmMmUwZDcyZWYyYmM5
YWZlMGVjOGE3ZjUuLjQzMjZhMTA1YTA5NjA3ZDlkYTAwZjk5OGFkMzYwYjFhNjgwZmNkYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaApAQCAtNDEsNiAr
NDEsMTIgQEAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yT2JqZWN0Owog
Y2xhc3MgSW5zcGVjdG9yVmFsdWU7CisKK25hbWVzcGFjZSBQcm90b2NvbCB7CituYW1lc3BhY2Ug
T3ZlcmxheVR5cGVzIHsKK2NsYXNzIE5vZGVIaWdobGlnaHREYXRhOworfQorfQogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC02NCwxNyArNzAsMTMgQEAgcHVibGljOgogICAgIGJvb2wgdXNl
UGFnZUNvb3JkaW5hdGVzOwogfTsKIAotZW51bSBIaWdobGlnaHRUeXBlIHsKLSAgICBIaWdobGln
aHRUeXBlTm9kZSwKLSAgICBIaWdobGlnaHRUeXBlUmVjdHMsCitlbnVtIGNsYXNzIEhpZ2hsaWdo
dFR5cGUgeworICAgIE5vZGUsIC8vIFByb3ZpZGVzIDQgcXVhZHM6IG1hcmdpbiwgYm9yZGVyLCBw
YWRkaW5nLCBjb250ZW50LgorICAgIFJlY3RzLCAvLyBQcm92aWRlcyBhIGxpc3Qgb2YgcXVhZHMu
CiB9OwogCiBzdHJ1Y3QgSGlnaGxpZ2h0IHsKLSAgICBIaWdobGlnaHQoKQotICAgICAgICA6IHR5
cGUoSGlnaGxpZ2h0VHlwZU5vZGUpCi0gICAgICAgICwgdXNlUGFnZUNvb3JkaW5hdGVzKHRydWUp
Ci0gICAgewotICAgIH0KKyAgICBIaWdobGlnaHQoKSB7IH0KIAogICAgIHZvaWQgc2V0RGF0YUZy
b21Db25maWcoY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcpCiAgICAgewpA
QCAtOTIsMTEgKzk0LDkgQEAgc3RydWN0IEhpZ2hsaWdodCB7CiAgICAgQ29sb3IgYm9yZGVyQ29s
b3I7CiAgICAgQ29sb3IgbWFyZ2luQ29sb3I7CiAKLSAgICAvLyBXaGVuIHRoZSB0eXBlIGlzIE5v
ZGUsIHRoZXJlIGFyZSA0IHF1YWRzIChtYXJnaW4sIGJvcmRlciwgcGFkZGluZywgY29udGVudCku
Ci0gICAgLy8gV2hlbiB0aGUgdHlwZSBpcyBSZWN0cywgdGhpcyBpcyBqdXN0IGEgbGlzdCBvZiBx
dWFkcy4KLSAgICBIaWdobGlnaHRUeXBlIHR5cGU7CisgICAgSGlnaGxpZ2h0VHlwZSB0eXBlIHtI
aWdobGlnaHRUeXBlOjpOb2RlfTsKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKLSAgICBi
b29sIHVzZVBhZ2VDb29yZGluYXRlczsKKyAgICBib29sIHVzZVBhZ2VDb29yZGluYXRlcyB7dHJ1
ZX07CiB9OwogCiBjbGFzcyBJbnNwZWN0b3JPdmVybGF5IHsKQEAgLTExMiw3ICsxMTIsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZSgpOwogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250
ZXh0Jik7Ci0gICAgdm9pZCBnZXRIaWdobGlnaHQoSGlnaGxpZ2h0KiwgQ29vcmRpbmF0ZVN5c3Rl
bSkgY29uc3Q7CisgICAgdm9pZCBnZXRIaWdobGlnaHQoSGlnaGxpZ2h0JiwgQ29vcmRpbmF0ZVN5
c3RlbSkgY29uc3Q7CiAKICAgICB2b2lkIHNldFBhdXNlZEluRGVidWdnZXJNZXNzYWdlKGNvbnN0
IFN0cmluZyopOwogCkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJ
bmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZyk7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERh
dGE+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CiAKICAgICB2b2lkIGZy
ZWVQYWdlKCk7CiBwcml2YXRlOgpAQCAtMTYxLDggKzE2MSw4IEBAIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBzdGQ6OnBhaXI8c3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGltZV9wb2ludCwgRmxv
YXRSZWN0PiBUaW1lUmVjdFBhaXI7CiAgICAgRGVxdWU8VGltZVJlY3RQYWlyPiBtX3BhaW50UmVj
dHM7CiAgICAgVGltZXIgbV9wYWludFJlY3RVcGRhdGVUaW1lcjsKLSAgICBib29sIG1faW5kaWNh
dGluZzsKLSAgICBib29sIG1fc2hvd2luZ1BhaW50UmVjdHM7CisgICAgYm9vbCBtX2luZGljYXRp
bmcge2ZhbHNlfTsKKyAgICBib29sIG1fc2hvd2luZ1BhaW50UmVjdHMge2ZhbHNlfTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5UGFnZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5UGFnZS5qcwppbmRleCAwMjE5NWM3MDkxNGVmNWIxMTkzMzM5NTliOGZm
YTc5NWViYzNmZDMwLi5jYTViMzk4ZmYzMmZiZDM3NDQ3NmJhMGUwODI5YmQ1OGUxZDY4NDIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2Uu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpz
CkBAIC0yNjEsMzYgKzI2MSwzNiBAQCBmdW5jdGlvbiBfdHJ1bmNhdGVTdHJpbmcodmFsdWUsIG1h
eExlbmd0aCkKICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoID8g
dmFsdWUuc3Vic3RyaW5nKDAsIDUwKSArICJcdTIwMjYiIDogdmFsdWU7CiB9CiAKLWZ1bmN0aW9u
IF9jcmVhdGVFbGVtZW50VGl0bGUoZWxlbWVudEluZm8pCitmdW5jdGlvbiBfY3JlYXRlRWxlbWVu
dFRpdGxlKGVsZW1lbnREYXRhKQogewogICAgIHZhciBidWlsZGVyID0gbmV3IERPTUJ1aWxkZXIo
ImRpdiIsICJlbGVtZW50LXRpdGxlIik7CiAgICAgCi0gICAgYnVpbGRlci5hcHBlbmRTcGFuSWZO
b3ROdWxsKCJ0YWctbmFtZSIsIGVsZW1lbnRJbmZvLnRhZ05hbWUpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kU3BhbklmTm90TnVsbCgibm9kZS1pZCIsIGVsZW1lbnRJbmZvLmlkVmFsdWUsICIjIik7Ci0g
ICAgYnVpbGRlci5hcHBlbmRTcGFuSWZOb3ROdWxsKCJjbGFzcy1uYW1lIiwgX3RydW5jYXRlU3Ry
aW5nKGVsZW1lbnRJbmZvLmNsYXNzTmFtZSwgNTApKTsKKyAgICBidWlsZGVyLmFwcGVuZFNwYW5J
Zk5vdE51bGwoInRhZy1uYW1lIiwgZWxlbWVudERhdGEudGFnTmFtZSk7CisgICAgYnVpbGRlci5h
cHBlbmRTcGFuSWZOb3ROdWxsKCJub2RlLWlkIiwgZWxlbWVudERhdGEuaWRWYWx1ZSwgIiMiKTsK
KyAgICBidWlsZGVyLmFwcGVuZFNwYW5JZk5vdE51bGwoImNsYXNzLW5hbWUiLCBfdHJ1bmNhdGVT
dHJpbmcoZWxlbWVudERhdGEuY2xhc3NOYW1lLCA1MCkpOwogCiAgICAgYnVpbGRlci5hcHBlbmRU
ZXh0Tm9kZSgiICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kU3Bhbigibm9kZS13aWR0aCIsIGVsZW1l
bnRJbmZvLm5vZGVXaWR0aCk7CisgICAgYnVpbGRlci5hcHBlbmRTcGFuKCJub2RlLXdpZHRoIiwg
ZWxlbWVudERhdGEuc2l6ZS53aWR0aCk7CiAgICAgLy8gXHhkNyBpcyB0aGUgY29kZSBmb3IgdGhl
ICZ0aW1lczsgSFRNTCBlbnRpdHkuCiAgICAgYnVpbGRlci5hcHBlbmRTcGFuKCJweCIsICJweCBc
eGQ3ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kU3Bhbigibm9kZS1oZWlnaHQiLCBlbGVtZW50SW5m
by5ub2RlSGVpZ2h0KTsKKyAgICBidWlsZGVyLmFwcGVuZFNwYW4oIm5vZGUtaGVpZ2h0IiwgZWxl
bWVudERhdGEuc2l6ZS5oZWlnaHQpOwogICAgIGJ1aWxkZXIuYXBwZW5kU3BhbigicHgiLCAicHgi
KTsKIAotICAgIGJ1aWxkZXIuYXBwZW5kUHJvcGVydHlJZk5vdE51bGwoInJvbGUtbmFtZSIsICJS
b2xlIiwgZWxlbWVudEluZm8ucm9sZSk7Ci0gICAgYnVpbGRlci5hcHBlbmRQcm9wZXJ0eUlmTm90
TnVsbCgicmVnaW9uLWZsb3ctbmFtZSIsICJSZWdpb24gRmxvdyIsIGVsZW1lbnRJbmZvLnJlZ2lv
bkZsb3dJbmZvID8gZWxlbWVudEluZm8ucmVnaW9uRmxvd0luZm8ubmFtZSA6IG51bGwpOwotICAg
IGJ1aWxkZXIuYXBwZW5kUHJvcGVydHlJZk5vdE51bGwoImNvbnRlbnQtZmxvdy1uYW1lIiwgIkNv
bnRlbnQgRmxvdyIsIGVsZW1lbnRJbmZvLmNvbnRlbnRGbG93SW5mbyA/IGVsZW1lbnRJbmZvLmNv
bnRlbnRGbG93SW5mby5uYW1lIDogbnVsbCk7CisgICAgYnVpbGRlci5hcHBlbmRQcm9wZXJ0eUlm
Tm90TnVsbCgicm9sZS1uYW1lIiwgIlJvbGUiLCBlbGVtZW50RGF0YS5yb2xlKTsKKyAgICBidWls
ZGVyLmFwcGVuZFByb3BlcnR5SWZOb3ROdWxsKCJyZWdpb24tZmxvdy1uYW1lIiwgIlJlZ2lvbiBG
bG93IiwgZWxlbWVudERhdGEucmVnaW9uRmxvd0RhdGEgPyBlbGVtZW50RGF0YS5yZWdpb25GbG93
RGF0YS5uYW1lIDogbnVsbCk7CisgICAgYnVpbGRlci5hcHBlbmRQcm9wZXJ0eUlmTm90TnVsbCgi
Y29udGVudC1mbG93LW5hbWUiLCAiQ29udGVudCBGbG93IiwgZWxlbWVudERhdGEuY29udGVudEZs
b3dEYXRhID8gZWxlbWVudERhdGEuY29udGVudEZsb3dEYXRhLm5hbWUgOiBudWxsKTsKIAogICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGVtZW50LXRpdGxlLWNvbnRhaW5lciIpLmFwcGVu
ZENoaWxkKGJ1aWxkZXIuZWxlbWVudCk7CiAKICAgICByZXR1cm4gYnVpbGRlci5lbGVtZW50Owog
fQogCi1mdW5jdGlvbiBfZHJhd0VsZW1lbnRUaXRsZShlbGVtZW50SW5mbywgZnJhZ21lbnRIaWdo
bGlnaHQsIHNjcm9sbCkKK2Z1bmN0aW9uIF9kcmF3RWxlbWVudFRpdGxlKGVsZW1lbnREYXRhLCBm
cmFnbWVudEhpZ2hsaWdodCwgc2Nyb2xsKQogewotICAgIGlmICghZWxlbWVudEluZm8gfHwgIWZy
YWdtZW50SGlnaGxpZ2h0LnF1YWRzLmxlbmd0aCkKKyAgICBpZiAoIWVsZW1lbnREYXRhIHx8ICFm
cmFnbWVudEhpZ2hsaWdodC5xdWFkcy5sZW5ndGgpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICB2YXIgZWxlbWVudFRpdGxlID0gX2NyZWF0ZUVsZW1lbnRUaXRsZShlbGVtZW50SW5mbyk7CisK
KyAgICB2YXIgZWxlbWVudFRpdGxlID0gX2NyZWF0ZUVsZW1lbnRUaXRsZShlbGVtZW50RGF0YSk7
CiAKICAgICB2YXIgbWFyZ2luUXVhZCA9IGZyYWdtZW50SGlnaGxpZ2h0LnF1YWRzWzBdOwogCkBA
IC0zMDUsMTEgKzMwNSwxMCBAQCBmdW5jdGlvbiBfZHJhd0VsZW1lbnRUaXRsZShlbGVtZW50SW5m
bywgZnJhZ21lbnRIaWdobGlnaHQsIHNjcm9sbCkKICAgICB2YXIgcmVuZGVyQXJyb3dEb3duID0g
ZmFsc2U7CiAKICAgICB2YXIgYm94WCA9IG1hcmdpblF1YWRbMF0ueDsKLSAgICAKLSAgICB2YXIg
Y29udGFpbmluZ1JlZ2lvbiA9IGZyYWdtZW50SGlnaGxpZ2h0LnJlZ2lvbjsKLSAgICBpZiAoY29u
dGFpbmluZ1JlZ2lvbikgeworCisgICAgdmFyIGNsaXBRdWFkID0gZnJhZ21lbnRIaWdobGlnaHQu
cmVnaW9uQ2xpcHBpbmdBcmVhOworICAgIGlmIChjbGlwUXVhZCkgewogICAgICAgICAvLyBSZXN0
cmljdCB0aGUgcG9zaXRpb24gb2YgdGhlIHRpdGxlIGJveCB0byB0aGUgYXJlYSBvZiB0aGUgY29u
dGFpbmluZyByZWdpb24uCi0gICAgICAgIHZhciBjbGlwUXVhZCA9IGNvbnRhaW5pbmdSZWdpb24u
cXVhZDsKICAgICAgICAgYW5jaG9yVG9wID0gTWF0aC5tYXgoYW5jaG9yVG9wLCBNYXRoLm1pbihj
bGlwUXVhZFswXS55LCBjbGlwUXVhZFsxXS55LCBjbGlwUXVhZFsyXS55LCBjbGlwUXVhZFszXS55
KSk7CiAgICAgICAgIGFuY2hvckJvdHRvbSA9IE1hdGgubWluKGFuY2hvckJvdHRvbSwgTWF0aC5t
YXgoY2xpcFF1YWRbMF0ueSwgY2xpcFF1YWRbMV0ueSwgY2xpcFF1YWRbMl0ueSwgY2xpcFF1YWRb
M10ueSkpOwogICAgICAgICBib3hYID0gTWF0aC5tYXgoYm94WCwgTWF0aC5taW4oY2xpcFF1YWRb
MF0ueCwgY2xpcFF1YWRbMV0ueCwgY2xpcFF1YWRbMl0ueCwgY2xpcFF1YWRbM10ueCkpOwpAQCAt
NDMwLDkgKzQyOSw5IEBAIGZ1bmN0aW9uIF9kcmF3RnJhZ21lbnRIaWdobGlnaHQoaGlnaGxpZ2h0
KQogCiAgICAgY29udGV4dC5zYXZlKCk7CiAKLSAgICBpZiAoaGlnaGxpZ2h0LnJlZ2lvbikgewor
ICAgIGlmIChoaWdobGlnaHQucmVnaW9uQ2xpcHBpbmdBcmVhKSB7CiAgICAgICAgIC8vIENsaXAg
dG8gdGhlIGNvbnRhaW5pbmcgcmVnaW9uIHRvIGF2b2lkIHNob3dpbmcgZnJhZ21lbnRzIHRoYXQg
YXJlIG5vdCByZW5kZXJlZCBieSB0aGlzIHJlZ2lvbi4KLSAgICAgICAgcXVhZFRvUGF0aChoaWdo
bGlnaHQucmVnaW9uLnF1YWQpLmNsaXAoKTsKKyAgICAgICAgcXVhZFRvUGF0aChoaWdobGlnaHQu
cmVnaW9uQ2xpcHBpbmdBcmVhKS5jbGlwKCk7CiAgICAgfQogCiAgICAgdmFyIHF1YWRzID0gaGln
aGxpZ2h0LnF1YWRzLnNsaWNlKCk7CkBAIC00OTEsMjMgKzQ5MCwyMyBAQCBmdW5jdGlvbiBoaWRl
UGFnZUluZGljYXRpb24oKQogZnVuY3Rpb24gZHJhd05vZGVIaWdobGlnaHQoaGlnaGxpZ2h0KQog
ewogICAgIGNvbnRleHQuc2F2ZSgpOwotICAgIGNvbnRleHQudHJhbnNsYXRlKC1oaWdobGlnaHQu
c2Nyb2xsLngsIC1oaWdobGlnaHQuc2Nyb2xsLnkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKC1o
aWdobGlnaHQuc2Nyb2xsT2Zmc2V0LngsIC1oaWdobGlnaHQuc2Nyb2xsT2Zmc2V0LnkpOwogCiAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoaWdobGlnaHQuZnJhZ21lbnRzLmxlbmd0aDsgKytpKQog
ICAgICAgICBfZHJhd0ZyYWdtZW50SGlnaGxpZ2h0KGhpZ2hsaWdodC5mcmFnbWVudHNbaV0pOwog
Ci0gICAgaWYgKGhpZ2hsaWdodC5lbGVtZW50SW5mbyAmJiBoaWdobGlnaHQuZWxlbWVudEluZm8u
cmVnaW9uRmxvd0luZm8pCi0gICAgICAgIF9kcmF3UmVnaW9uc0hpZ2hsaWdodChoaWdobGlnaHQu
ZWxlbWVudEluZm8ucmVnaW9uRmxvd0luZm8ucmVnaW9ucyk7CisgICAgaWYgKGhpZ2hsaWdodC5l
bGVtZW50RGF0YSAmJiBoaWdobGlnaHQuZWxlbWVudERhdGEucmVnaW9uRmxvd0RhdGEpCisgICAg
ICAgIF9kcmF3UmVnaW9uc0hpZ2hsaWdodChoaWdobGlnaHQuZWxlbWVudERhdGEucmVnaW9uRmxv
d0RhdGEucmVnaW9ucyk7CiAKLSAgICBpZiAoaGlnaGxpZ2h0LmVsZW1lbnRJbmZvICYmIGhpZ2hs
aWdodC5lbGVtZW50SW5mby5zaGFwZU91dHNpZGVJbmZvKQotICAgICAgICBfZHJhd1NoYXBlSGln
aGxpZ2h0KGhpZ2hsaWdodC5lbGVtZW50SW5mby5zaGFwZU91dHNpZGVJbmZvKTsKKyAgICBpZiAo
aGlnaGxpZ2h0LmVsZW1lbnREYXRhICYmIGhpZ2hsaWdodC5lbGVtZW50RGF0YS5zaGFwZU91dHNp
ZGVEYXRhKQorICAgICAgICBfZHJhd1NoYXBlSGlnaGxpZ2h0KGhpZ2hsaWdodC5lbGVtZW50RGF0
YS5zaGFwZU91dHNpZGVEYXRhKTsKIAogICAgIGNvbnRleHQucmVzdG9yZSgpOwogCiAgICAgdmFy
IGVsZW1lbnRUaXRsZUNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGVtZW50
LXRpdGxlLWNvbnRhaW5lciIpOwogICAgIGVsZW1lbnRUaXRsZUNvbnRhaW5lci5pbm5lckhUTUwg
PSAiIjsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhpZ2hsaWdodC5mcmFnbWVudHMubGVuZ3Ro
OyArK2kpCi0gICAgICAgIF9kcmF3RWxlbWVudFRpdGxlKGhpZ2hsaWdodC5lbGVtZW50SW5mbywg
aGlnaGxpZ2h0LmZyYWdtZW50c1tpXSwgaGlnaGxpZ2h0LnNjcm9sbCk7CisgICAgICAgIF9kcmF3
RWxlbWVudFRpdGxlKGhpZ2hsaWdodC5lbGVtZW50RGF0YSwgaGlnaGxpZ2h0LmZyYWdtZW50c1tp
XSwgaGlnaGxpZ2h0LnNjcm9sbE9mZnNldCk7CiB9CiAKIGZ1bmN0aW9uIGRyYXdRdWFkSGlnaGxp
Z2h0KGhpZ2hsaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA5YTA1
NTNkM2RkMDU4Mjk4ZGE3ZDQwMjVjMjQ0NGIwYmRmZjgyMDUwLi4zYTg4OWNiMzU4Njc1YWVjNjY1
ZDY5YTg2ZjQ3NWFkYTQ5YzNjOTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC03ODQsNyArNzg0LDcgQEAgUmVmPENsaWVudFJlY3RMaXN0PiBJbnRlcm5hbHM6Omluc3Bl
Y3RvckhpZ2hsaWdodFJlY3RzKEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0KIAogICAgIEhpZ2hs
aWdodCBoaWdobGlnaHQ7Ci0gICAgZG9jdW1lbnQtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLmdldEhpZ2hsaWdodCgmaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRl
U3lzdGVtOjpWaWV3KTsKKyAgICBkb2N1bWVudC0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkuZ2V0SGlnaGxpZ2h0KGhpZ2hsaWdodCwgSW5zcGVjdG9yT3ZlcmxheTo6Q29vcmRpbmF0ZVN5
c3RlbTo6Vmlldyk7CiAgICAgcmV0dXJuIENsaWVudFJlY3RMaXN0OjpjcmVhdGUoaGlnaGxpZ2h0
LnF1YWRzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKQEAgLTgwMCw3ICs4MDAsNyBA
QCBTdHJpbmcgSW50ZXJuYWxzOjppbnNwZWN0b3JIaWdobGlnaHRPYmplY3QoRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAgICAgfQotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdCA9IGRv
Y3VtZW50LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5idWlsZE9iamVjdEZvckhpZ2hs
aWdodGVkTm9kZSgpOworICAgIGF1dG8gb2JqZWN0ID0gZG9jdW1lbnQtPnBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCk7CiAgICAgcmV0
dXJuIG9iamVjdCA/IG9iamVjdC0+dG9KU09OU3RyaW5nKCkgOiBTdHJpbmcoKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGVjKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244846</attachid>
            <date>2015-01-17 17:02:27 -0800</date>
            <delta_ts>2015-01-17 17:52:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129441-20150117170147.patch</filename>
            <type>text/plain</type>
            <size>56266</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MjFmZWEzN2ZjMTM2NTYyMDM4ODk1N2MxNmUwMTVkNDQzYTZmOTIyLi45NTAwOGMwYWQxMWEyNzJl
NjIxZTUyYzRkYWNmNTgyMzg1ZmY5M2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNS0wMS0xNyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaGlnaGxpZ2h0IGRhdGEgZm9yIG92ZXJs
YXkgc2hvdWxkIHVzZSBwcm90b2NvbCB0eXBlIGJ1aWxkZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0NDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgQWRkIGEgbmV3IGRvbWFpbiBmb3Igb3Zlcmxh
eSB0eXBlcy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogaW5z
cGVjdG9yL3Byb3RvY29sL092ZXJsYXlUeXBlcy5qc29uOiBBZGRlZC4KKwogMjAxNS0wMS0xNyAg
TWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCBpbiBK
U1Njb3BlOjpyZXNvbHZlKCkgb24gdG9vbHMudXBzLmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhiNjMyZjAz
NDFkZjE5OTFkYTdjYzM0MTk3MzQzZGQ3Zjc1NmMyZDUuLmY5M2Q4YTA4MzRmMmExNWVjOGNjMWU0
OTUxYTZjMWE5MmRjZDliNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxNS0wMS0x
NyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogaGlnaGxpZ2h0IGRhdGEgZm9yIG92ZXJsYXkgc2hvdWxkIHVzZSBwcm90b2Nv
bCB0eXBlIGJ1aWxkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjk0NDEKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisK
KyAgICAgICAgQXMgYSBmaXJzdCBzdGVwIHRvd2FyZHMgY2xlYW5pbmcgdXAgdGhlIGluc3BlY3Rv
ciBvdmVybGF5LCBjb252ZXJ0IGhpZ2hsaWdodAorICAgICAgICBkYXRhIGNvbnN0cnVjdGlvbiB0
byB1c2UgcHJvdG9jb2wgdHlwZSBidWlsZGVycy4gSXQncyBub3cgcmVhbGx5IG9idmlvdXMgd2hh
dAorICAgICAgICBkYXRhIGlzIGJlaW5nIHNlbnQgdG8gdGhlIGluc3BlY3RvciBvdmVybGF5IHBh
Z2UuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgcGF2ZXMgdGhlIHdheSB0b3dhcmRzIHVzaW5nIGlu
c3BlY3RvciBwcm90b2NvbCBjb21tYW5kcyBhbmQgZXZlbnRzCisgICAgICAgIGlmIHdlIHdhbnQg
dG8gc3VwcG9ydCBtb3JlIGludGVyYWN0aXZlIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIGluc3BlY3Rv
ciBvdmVybGF5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgYSBmZXcgc3R5bGUgY2xlYW51
cHMsIHN1Y2ggYXMgc3RhbmRhcmRpemluZyB2YXJpYWJsZSBuYW1lcywKKyAgICAgICAgdXNpbmcg
ZGVmYXVsdCBtZW1iZXIgaW5pdGlhbGl6ZXJzLCBwYXNzaW5nIGJ5IHJlZmVyZW5jZSwgYW5kIGZp
eGluZyBjYXN0cy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZWQu
CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpnZXRIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6aW5zcGVjdCk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFJlbmRlcmVySGlnaGxpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1aWxkTm9kZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZFF1YWRIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6SW5z
cGVjdG9yT3ZlcmxheSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpnZXRI
aWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6YnVp
bGRBcnJheUZvclF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JIaWdobGln
aHQpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JSZWdpb24pOgorICAgICAgICAo
V2ViQ29yZTo6YnVpbGRPYmplY3RGb3JGbG93UmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpi
dWlsZE9iamVjdEZvclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRRdWFkT2JqZWN0Rm9y
Q1NTUmVnaW9uQ29udGVudENsaXApOgorICAgICAgICBTaW1wbGlmeSBob3cgdGhlIGNsaXBwaW5n
IGFyZWEgaXMgZW5jb2RlZC4gSXQncyBub3cgJ3JlZ2lvbkNsaXBwaW5nQXJlYScKKyAgICAgICAg
c3RvcmVkIG9uIGEgRnJhZ21lbnRIaWdobGlnaHREYXRhIGluc3RhbmNlLgorCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGVQYWludFJlY3RzVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3UGFpbnRSZWN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpidWlsZEFycmF5Rm9yUmVuZGVyZXJGcmFnbWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6YXBwZW5kUGF0aENvbW1hbmRBbmRQb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6
YXBwZW5kUGF0aFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JTaGFw
ZU91dHNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JFbGVtZW50RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpidWlsZE9iamVjdEZvckhpZ2hs
aWdodGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3Tm9k
ZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3UXVh
ZEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpyZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJlZ2lvbkhpZ2hsaWdodCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvckNTU1JlZ2lvbnNIaWdobGlnaHQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JDU1NSZWdpb25Db250
ZW50Q2xpcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJlbmRl
cmVyRnJhZ21lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9y
RWxlbWVudEluZm8pOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5Lmg6CisgICAgICAgIChXZWJDb3JlOjpIaWdobGlnaHQ6OkhpZ2hsaWdodCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpzOgorICAgICAgICAoX2NyZWF0ZUVs
ZW1lbnRUaXRsZSk6CisgICAgICAgIChfZHJhd0VsZW1lbnRUaXRsZSk6CisgICAgICAgIChfZHJh
d0ZyYWdtZW50SGlnaGxpZ2h0KToKKyAgICAgICAgKGRyYXdOb2RlSGlnaGxpZ2h0KToKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
Omluc3BlY3RvckhpZ2hsaWdodFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
aW5zcGVjdG9ySGlnaGxpZ2h0T2JqZWN0KToKKwogMjAxNS0wMS0xNyAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtTVkcgLT4gT1RGIENvbnZlcnRl
cl0gQ3Jhc2hlcyB3aGVuIFNWRyBmb250IGlzIGludmFsaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzgwYmM4ODlk
ZjA2YTJhZDNkNzExNThjMTJhOTMwNjgyNjA4ZmI0OC4uZTU4ZWFjOGViY2JjN2EyMmNkNWMzNzgw
Nzc0MTk4NWRlOWY1ZWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wMS0xNyAg
QnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogaGlnaGxpZ2h0IGRhdGEgZm9yIG92ZXJsYXkgc2hvdWxkIHVzZSBwcm90b2NvbCB0
eXBlIGJ1aWxkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjk0NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRz
LmRlZi5pbjogVXBkYXRlIHN5bWJvbC4KKwogMjAxNS0wMS0xNCAgQnJlbnQgRnVsZ2hhbSAgPGJm
dWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBVbnJldmlld2VkIGJ1aWxkIGZpeCBh
ZnRlciByMTc4NDU5IGFuZCByMTc4NDYyLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCA1MjQyMWVjODgxMTUxYjE2YTkzZDU0NWZkOWM1NDQ5YWMxOTg3MDk3
Li4xMmFmZWEyNGE2ZWU1NmE2MGRjNWI4MmVmYmYwNmM0MmFiMzBkYzQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTI1LDYgKzEyNSw3IEBAIElOU1BF
Q1RPUl9ET01BSU5TID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2Nv
bC9JbnNwZWN0b3IuanNvbiBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3Rv
Y29sL0xheWVyVHJlZS5qc29uIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJv
dG9jb2wvTmV0d29yay5qc29uIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJv
dG9jb2wvT3ZlcmxheVR5cGVzLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rv
ci9wcm90b2NvbC9QYWdlLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9w
cm90b2NvbC9SdW50aW1lLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9w
cm90b2NvbC9UaW1lbGluZS5qc29uIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcHJvdG9jb2wvT3ZlcmxheVR5cGVzLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL092ZXJsYXlUeXBlcy5qc29uCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3
ZWZhNzVlZmNmYWVlNzQ0OGI2NjlmZjE4MmM0YWIwMGRhYjkxMmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL092ZXJsYXlUeXBlcy5q
c29uCkBAIC0wLDAgKzEsMTI5IEBACit7CisgICAgImRvbWFpbiI6ICJPdmVybGF5VHlwZXMiLAor
ICAgICJkZXNjcmlwdGlvbiI6ICJFeHBvc2VzIHR5cGVzIHRvIGJlIHVzZWQgYnkgdGhlIGluc3Bl
Y3RvciBvdmVybGF5LiIsCisgICAgInR5cGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAi
aWQiOiAiUG9pbnQiLAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAg
ICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAieCIsICJ0eXBlIjog
Im51bWJlciIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInkiLCAidHlwZSI6ICJudW1i
ZXIiIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
ImlkIjogIlNpemUiLAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAg
ICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid2lkdGgiLCAidHlw
ZSI6ICJpbnRlZ2VyIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVpZ2h0IiwgInR5
cGUiOiAiaW50ZWdlciIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgICAiaWQiOiAiUXVhZCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBx
dWFkIGlzIGEgY29sbGVjdGlvbiBvZiA0IHBvaW50cy4gV2hlbiBpbml0aWFsaXplZCBmcm9tIGEg
cmVjdCwgdGhlIHBvaW50cyBhcmUgaW4gY2xvY2t3aXNlIG9yZGVyIGZyb20gdG9wIGxlZnQuIiwK
KyAgICAgICAgICAgICJ0eXBlIjogImFycmF5IiwKKyAgICAgICAgICAgICJpdGVtcyI6IHsgIiRy
ZWYiOiAiUG9pbnQiIH0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjog
IlJlY3QiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgcmVjdGFuZ2xlIHNwZWNpZmll
ZCBieSBhIHJlZmVyZW5jZSBjb29yZGluYXRlIGFuZCB3aWR0aC9oZWlnaHQgb2Zmc2V0cy4iLAor
ICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjog
WworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAieCIsICJ0eXBlIjogIm51bWJlciIgfSwKKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInkiLCAidHlwZSI6ICJudW1iZXIiIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJ3aWR0aCIsICJ0eXBlIjogIm51bWJlciIgfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImhlaWdodCIsICJ0eXBlIjogIm51bWJlciIgfQorICAgICAgICAg
ICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiUmVnaW9uIiwK
KyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHNpbmdsZSByZWdpb24gaW4gYSBmbG93IHRo
cmVhZC4iLAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9w
ZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm9yZGVyUXVhZCIsICIkcmVm
IjogIlF1YWQiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpbmNvbWluZ1F1YWQiLCAi
JHJlZiI6ICJRdWFkIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3V0Z29pbmdRdWFk
IiwgIiRyZWYiOiAiUXVhZCIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzSGlnaGxp
Z2h0ZWQiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSB9CisgICAgICAgICAg
ICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJEaXNwbGF5UGF0
aCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSB2ZWN0b3IgcGF0aCBkZXNjcmliZWQg
dXNpbmcgU1ZHIHBhdGggc3ludGF4LiIsCisgICAgICAgICAgICAidHlwZSI6ICJhcnJheSIsCisg
ICAgICAgICAgICAiaXRlbXMiOiB7ICJ0eXBlIjogImFueSIgfQorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAiaWQiOiAiUmVnaW9uRmxvd0RhdGEiLAorICAgICAgICAgICAgInR5
cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAicmVnaW9ucyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJl
ZiI6ICJSZWdpb24ifSB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZSIsICJ0eXBl
IjogInN0cmluZyIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICAiaWQiOiAiQ29udGVudEZsb3dEYXRhIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9i
amVjdCIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJpbmciIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIlNoYXBlT3V0c2lkZURhdGEiLAorICAg
ICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWwor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm91bmRzIiwgIiRyZWYiOiAiUXVhZCIsICJkZXNj
cmlwdGlvbiI6ICJCb3VuZHMgZm9yIHRoZSBzaGFwZS1vdXRzaWRlIHBhdGhzLiIgfSwKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInNoYXBlIiwgIiRyZWYiOiAiRGlzcGxheVBhdGgiLCAiZGVz
Y3JpcHRpb24iOiAiUGF0aCBmb3IgdGhlIGVsZW1lbnQncyBzaGFwZS4iLCAib3B0aW9uYWwiOiB0
cnVlIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtYXJnaW5TaGFwZSIsICIkcmVmIjog
IkRpc3BsYXlQYXRoIiwgImRlc2NyaXB0aW9uIjogIlBhdGggZm9yIHRoZSBlbGVtZW50J3MgbWFy
Z2luIHNoYXBlLiIsICJvcHRpb25hbCI6IHRydWUgfQorICAgICAgICAgICAgXQorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiRWxlbWVudERhdGEiLAorICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIkRhdGEgdGhhdCBkZXNjcmliZXMgYW4gZWxlbWVudCB0byBiZSBo
aWdobGlnaHRlZC4iLAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAg
ICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFnTmFtZSIsICJ0
eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlkVmFsdWUiLCAi
dHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVGhlIHZhbHVlIG9mIHRoZSBlbGVtZW50
J3MgJ2lkJyBhdHRyaWJ1dGUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2xhc3NO
YW1lIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAorICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAic2l6ZSIsICIkcmVmIjogIlNpemUiLCAib3B0aW9uYWwiOiB0cnVlIH0s
CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyb2xlIiwgInR5cGUiOiAic3RyaW5nIiwgImRl
c2NyaXB0aW9uIjogIkNvbXB1dGVkIGFjY2Vzc2liaWxpdHkgcm9sZSBmb3IgdGhlIGVsZW1lbnQu
IiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVnaW9u
Rmxvd0RhdGEiLCAiJHJlZiI6ICJSZWdpb25GbG93RGF0YSIsICJvcHRpb25hbCI6IHRydWUgfSwK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnRGbG93RGF0YSIsICIkcmVmIjogIkNv
bnRlbnRGbG93RGF0YSIsICJvcHRpb25hbCI6IHRydWUgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInNoYXBlT3V0c2lkZURhdGEiLCAiJHJlZiI6ICJTaGFwZU91dHNpZGVEYXRhIiwgIm9w
dGlvbmFsIjogdHJ1ZSB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJpZCI6ICJGcmFnbWVudEhpZ2hsaWdodERhdGEiLAorICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIkRhdGEgcmVxdWlyZWQgdG8gaGlnaGxpZ2h0IG11bHRpcGxlIHF1YWRzLiIs
CisgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAgInByb3BlcnRpZXMi
OiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJxdWFkcyIsICJ0eXBlIjogImFycmF5Iiwg
Iml0ZW1zIjogeyAiJHJlZiI6ICJRdWFkIiB9LCAiZGVzY3JpcHRpb24iOiAiUXVhZHMgZm9yIHdo
aWNoIHRoZSBoaWdobGlnaHQgc2hvdWxkIGJlIGFwcGxpZWQuIn0sCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJjb250ZW50Q29sb3IiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJjb250ZW50T3V0bGluZUNvbG9yIiwgInR5cGUiOiAic3RyaW5nIiB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGFkZGluZ0NvbG9yIiwgInR5cGUiOiAic3Ry
aW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm9yZGVyQ29sb3IiLCAidHlwZSI6
ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtYXJnaW5Db2xvciIsICJ0
eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlZ2lvbkNsaXBw
aW5nQXJlYSIsICIkcmVmIjogIlF1YWQiLCAib3B0aW9uYWwiOiB0cnVlIH0KKyAgICAgICAgICAg
IF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIk5vZGVIaWdobGln
aHREYXRhIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEYXRhIHJlcXVpcmVkIHRvIGhp
Z2hsaWdodCBhIERPTSBub2RlLiIsCisgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAg
ICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzY3Jv
bGxPZmZzZXQiLCAiJHJlZiI6ICJQb2ludCIsICJkZXNjcmlwdGlvbiI6ICJTY3JvbGwgb2Zmc2V0
IGZvciB0aGUgTWFpbkZyYW1lJ3MgRnJhbWVWaWV3IHRoYXQgaXMgc2hhcmVkIGFjcm9zcyBhbGwg
cXVhZHMuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnJhZ21lbnRzIiwgInR5cGUi
OiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkZyYWdtZW50SGlnaGxpZ2h0RGF0YSIgfSB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZWxlbWVudERhdGEiLCAiJHJlZiI6ICJFbGVt
ZW50RGF0YSIsICJvcHRpb25hbCI6IHRydWUgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiT3ZlcmxheUNvbmZpZ3VyYXRpb24iLAorICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRhdGEgcmVxdWlyZWQgdG8gY29uZmlndXJlIHRoZSBv
dmVybGF5J3Mgc2l6ZSBhbmQgc2NhbGluZyBiZWhhdmlvci4iLAorICAgICAgICAgICAgInR5cGUi
OiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiZGV2aWNlU2NhbGVGYWN0b3IiLCAidHlwZSI6ICJudW1iZXIiIH0sCisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJ2aWV3cG9ydFNpemUiLCAiJHJlZiI6ICJTaXplIiB9LAor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnJhbWVWaWV3RnVsbFNpemUiLCAiJHJlZiI6ICJT
aXplIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCmluZGV4IDY5ZWMyMWMzNDc1ZGZhNGNhZDNhMTY3ODQyNDQzMTI4MmE3OTRjMDAuLjdkMTMy
NTY3M2UxODQwMDk0YmJhZWVkZWM3MGQ4YzRmOWI2MGZhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CkBAIC0xODU5LDcgKzE4NTksNyBAQCBfX1pOSzdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVy
MzNhbGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNwZW5kZWRFdgogX19aTks3V2ViQ29yZTE5SFRN
TE9wdEdyb3VwRWxlbWVudDE0Z3JvdXBMYWJlbFRleHRFdgogX19aTks3V2ViQ29yZTE5SFRNTFRl
eHRBcmVhRWxlbWVudDV2YWx1ZUV2CiBfX1pOSzdXZWJDb3JlMTlJREJEYXRhYmFzZU1ldGFkYXRh
MTJpc29sYXRlZENvcHlFdgotX19aTks3V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjEyZ2V0
SGlnaGxpZ2h0RVBOU185SGlnaGxpZ2h0RU5TXzE2SW5zcGVjdG9yT3ZlcmxheTE2Q29vcmRpbmF0
ZVN5c3RlbUUKK19fWk5LN1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxMmdldEhpZ2hsaWdo
dEVSTlNfOUhpZ2hsaWdodEVOU18xNkluc3BlY3Rvck92ZXJsYXkxNkNvb3JkaW5hdGVTeXN0ZW1F
CiBfX1pOSzdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjlidWlsZE9iamVjdEZvckhpZ2hs
aWdodGVkTm9kZUV2CiBfX1pOSzdXZWJDb3JlMTlNZWRpYVNlc3Npb25NYW5hZ2VyMzBhcHBsaWNh
dGlvbldpbGxFbnRlckJhY2tncm91bmRFdgogX19aTks3V2ViQ29yZTE5TWVkaWFTZXNzaW9uTWFu
YWdlcjMwYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kRXYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAwODkyYTIwOTlmNWRk
NmY0MDk1YTg2NjAxYzYzOWE5NmIxNDIzM2MwLi40MzMxMjlhYmMwZTA3Zjg2NzgzNzk2NWUwNTU4
MTMxNjAwNWJlMDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZERpc3BhdGNoZXJzLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29s
T2JqZWN0cy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaD4K
ICNpbmNsdWRlIDxwcm9maWxlci9MZWdhY3lQcm9maWxlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
SlNMb2NrLmg+CkBAIC0zMjEsMTIgKzMyMiwxMiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRyYXdIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIG1fb3Zl
cmxheS0+cGFpbnQoY29udGV4dCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0
SGlnaGxpZ2h0KEhpZ2hsaWdodCogaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGlu
YXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0Cit2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmdldEhpZ2hsaWdodChIaWdobGlnaHQmIGhpZ2hsaWdodCwgSW5zcGVjdG9yT3ZlcmxheTo6
Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIG1fb3Zlcmxh
eS0+Z2V0SGlnaGxpZ2h0KGhpZ2hsaWdodCwgY29vcmRpbmF0ZVN5c3RlbSk7CiB9CiAKLVJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvckNvbnRyb2xsZXI6OmJ1aWxkT2JqZWN0Rm9ySGln
aGxpZ2h0ZWROb2RlKCkgY29uc3QKK1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5
VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPiBJbnNwZWN0b3JDb250cm9sbGVyOjpidWlsZE9iamVj
dEZvckhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fb3ZlcmxheS0+YnVp
bGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDM4YWVlYWFhODU4YWRjMDI2ZGQ1Mzk1
YjIwMDQxOWRiYmJlMTcyYWQuLjNkMzRhZGY0YzhiYTMzODIxZmFkZWY2MjQzZWY5ZTFmNjI1YTI3
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aApAQCAtNDgsNiArNDgsMTIgQEAgY2xhc3MgSW5zcGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNs
YXNzIEluc3BlY3Rvck9iamVjdDsKKworbmFtZXNwYWNlIFByb3RvY29sIHsKK25hbWVzcGFjZSBP
dmVybGF5VHlwZXMgeworY2xhc3MgTm9kZUhpZ2hsaWdodERhdGE7Cit9Cit9CiB9CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTEwNCwxMyArMTEwLDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
aW5zcGVjdChOb2RlKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SGlnaGxpZ2h0KEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SGlnaGxp
Z2h0KEhpZ2hsaWdodCosIEluc3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCYsIEluc3Bl
Y3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0OwogICAgIHZvaWQgaGlkZUhpZ2hs
aWdodCgpOwogICAgIE5vZGUqIGhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0OwogCiAgICAgdm9pZCBz
ZXRJbmRpY2F0aW5nKGJvb2wpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5
VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPiBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgp
IGNvbnN0OwogCiAgICAgYm9vbCBpc1VuZGVyVGVzdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNVbmRl
clRlc3Q7IH0KICAgICB2b2lkIHNldElzVW5kZXJUZXN0KGJvb2wgaXNVbmRlclRlc3QpIHsgbV9p
c1VuZGVyVGVzdCA9IGlzVW5kZXJUZXN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggMjk0YzA0ZDQxZjQzZjc3ODRmMGQ2MDQ5ODI3NGMw
YTc2Y2JjM2VmMS4uZmQyZmNkZDY4MjJjYWJhNmEzNmUzMjQ5MmFhYjg1Nzc2NzNmOGMyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtNTcs
NiArNTcsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVu
dC5oIgogI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8aW5zcGVj
dG9yL0luc3BlY3RvclByb3RvY29sT2JqZWN0cy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAg
LTgwLDEzICs4MSwxMyBAQCBzdGF0aWMgdm9pZCBjb250ZW50c1F1YWRUb1BhZ2UoY29uc3QgRnJh
bWVWaWV3KiBtYWluVmlldywgY29uc3QgRnJhbWVWaWV3KiB2aWV3LAogICAgIGNvbnRlbnRzUXVh
ZFRvQ29vcmRpbmF0ZVN5c3RlbShtYWluVmlldywgdmlldywgcXVhZCwgSW5zcGVjdG9yT3Zlcmxh
eTo6Q29vcmRpbmF0ZVN5c3RlbTo6Vmlldyk7CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkUmVuZGVy
ZXJIaWdobGlnaHQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyUmVnaW9uKiByZWdpb24s
IGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQqIGhpZ2hs
aWdodCwgSW5zcGVjdG9yT3ZlcmxheTo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVt
KQorc3RhdGljIHZvaWQgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGln
aHRDb25maWcsIEhpZ2hsaWdodCYgaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGlu
YXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pCiB7CiAgICAgRnJhbWUqIGNvbnRhaW5pbmdGcmFt
ZSA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFjb250YWluaW5nRnJh
bWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGhpZ2hsaWdodC0+c2V0RGF0YUZyb21Db25maWco
aGlnaGxpZ2h0Q29uZmlnKTsKKyAgICBoaWdobGlnaHQuc2V0RGF0YUZyb21Db25maWcoaGlnaGxp
Z2h0Q29uZmlnKTsKICAgICBGcmFtZVZpZXcqIGNvbnRhaW5pbmdWaWV3ID0gY29udGFpbmluZ0Zy
YW1lLT52aWV3KCk7CiAgICAgRnJhbWVWaWV3KiBtYWluVmlldyA9IGNvbnRhaW5pbmdGcmFtZS0+
cGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCk7CiAKQEAgLTk0LDEwICs5NSwxMCBAQCBzdGF0aWMg
dm9pZCBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlbmRl
clJlZ2lvbiogcmVnaW9uLAogICAgIGJvb2wgaXNTVkdSZW5kZXJlciA9IHJlbmRlcmVyLT5ub2Rl
KCkgJiYgcmVuZGVyZXItPm5vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgIXJlbmRlcmVyLT5pc1NW
R1Jvb3QoKTsKIAogICAgIGlmIChpc1NWR1JlbmRlcmVyKSB7Ci0gICAgICAgIGhpZ2hsaWdodC0+
dHlwZSA9IEhpZ2hsaWdodFR5cGVSZWN0czsKLSAgICAgICAgcmVuZGVyZXItPmFic29sdXRlUXVh
ZHMoaGlnaGxpZ2h0LT5xdWFkcyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaGln
aGxpZ2h0LT5xdWFkcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGNvbnRlbnRzUXVhZFRvQ29v
cmRpbmF0ZVN5c3RlbShtYWluVmlldywgY29udGFpbmluZ1ZpZXcsIGhpZ2hsaWdodC0+cXVhZHNb
aV0sIGNvb3JkaW5hdGVTeXN0ZW0pOworICAgICAgICBoaWdobGlnaHQudHlwZSA9IEhpZ2hsaWdo
dFR5cGU6OlJlY3RzOworICAgICAgICByZW5kZXJlci0+YWJzb2x1dGVRdWFkcyhoaWdobGlnaHQu
cXVhZHMpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhpZ2hsaWdodC5xdWFkcy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgIGNvbnRlbnRzUXVhZFRvQ29vcmRpbmF0ZVN5c3RlbSht
YWluVmlldywgY29udGFpbmluZ1ZpZXcsIGhpZ2hsaWdodC5xdWFkc1tpXSwgY29vcmRpbmF0ZVN5
c3RlbSk7CiAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJCb3g+KCpyZW5kZXJlcikgfHwgaXM8UmVu
ZGVySW5saW5lPigqcmVuZGVyZXIpKSB7CiAgICAgICAgIExheW91dFJlY3QgY29udGVudEJveDsK
ICAgICAgICAgTGF5b3V0UmVjdCBwYWRkaW5nQm94OwpAQCAtMTc4LDM1ICsxNzksMzQgQEAgc3Rh
dGljIHZvaWQgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBS
ZW5kZXJSZWdpb24qIHJlZ2lvbiwKICAgICAgICAgY29udGVudHNRdWFkVG9Db29yZGluYXRlU3lz
dGVtKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgYWJzQm9yZGVyUXVhZCwgY29vcmRpbmF0ZVN5
c3RlbSk7CiAgICAgICAgIGNvbnRlbnRzUXVhZFRvQ29vcmRpbmF0ZVN5c3RlbShtYWluVmlldywg
Y29udGFpbmluZ1ZpZXcsIGFic01hcmdpblF1YWQsIGNvb3JkaW5hdGVTeXN0ZW0pOwogCi0gICAg
ICAgIGhpZ2hsaWdodC0+dHlwZSA9IEhpZ2hsaWdodFR5cGVOb2RlOwotICAgICAgICBoaWdobGln
aHQtPnF1YWRzLmFwcGVuZChhYnNNYXJnaW5RdWFkKTsKLSAgICAgICAgaGlnaGxpZ2h0LT5xdWFk
cy5hcHBlbmQoYWJzQm9yZGVyUXVhZCk7Ci0gICAgICAgIGhpZ2hsaWdodC0+cXVhZHMuYXBwZW5k
KGFic1BhZGRpbmdRdWFkKTsKLSAgICAgICAgaGlnaGxpZ2h0LT5xdWFkcy5hcHBlbmQoYWJzQ29u
dGVudFF1YWQpOworICAgICAgICBoaWdobGlnaHQudHlwZSA9IEhpZ2hsaWdodFR5cGU6Ok5vZGU7
CisgICAgICAgIGhpZ2hsaWdodC5xdWFkcy5hcHBlbmQoYWJzTWFyZ2luUXVhZCk7CisgICAgICAg
IGhpZ2hsaWdodC5xdWFkcy5hcHBlbmQoYWJzQm9yZGVyUXVhZCk7CisgICAgICAgIGhpZ2hsaWdo
dC5xdWFkcy5hcHBlbmQoYWJzUGFkZGluZ1F1YWQpOworICAgICAgICBoaWdobGlnaHQucXVhZHMu
YXBwZW5kKGFic0NvbnRlbnRRdWFkKTsKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkTm9k
ZUhpZ2hsaWdodChOb2RlKiBub2RlLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgY29uc3QgSGlnaGxp
Z2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcsIEhpZ2hsaWdodCogaGlnaGxpZ2h0LCBJbnNwZWN0
b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pCitzdGF0aWMgdm9p
ZCBidWlsZE5vZGVIaWdobGlnaHQoTm9kZSYgbm9kZSwgUmVuZGVyUmVnaW9uKiByZWdpb24sIGNv
bnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQmIGhpZ2hsaWdo
dCwgSW5zcGVjdG9yT3ZlcmxheTo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKQog
ewotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJl
cikKICAgICAgICAgcmV0dXJuOworCiAgICAgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChyZW5kZXJl
ciwgcmVnaW9uLCBoaWdobGlnaHRDb25maWcsIGhpZ2hsaWdodCwgY29vcmRpbmF0ZVN5c3RlbSk7
CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkUXVhZEhpZ2hsaWdodChjb25zdCBGbG9hdFF1YWQmIHF1
YWQsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQgKmhp
Z2hsaWdodCkKK3N0YXRpYyB2b2lkIGJ1aWxkUXVhZEhpZ2hsaWdodChjb25zdCBGbG9hdFF1YWQm
IHF1YWQsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQm
IGhpZ2hsaWdodCkKIHsKLSAgICBoaWdobGlnaHQtPnNldERhdGFGcm9tQ29uZmlnKGhpZ2hsaWdo
dENvbmZpZyk7Ci0gICAgaGlnaGxpZ2h0LT50eXBlID0gSGlnaGxpZ2h0VHlwZVJlY3RzOwotICAg
IGhpZ2hsaWdodC0+cXVhZHMuYXBwZW5kKHF1YWQpOworICAgIGhpZ2hsaWdodC5zZXREYXRhRnJv
bUNvbmZpZyhoaWdobGlnaHRDb25maWcpOworICAgIGhpZ2hsaWdodC50eXBlID0gSGlnaGxpZ2h0
VHlwZTo6UmVjdHM7CisgICAgaGlnaGxpZ2h0LnF1YWRzLmFwcGVuZChxdWFkKTsKIH0KIAogSW5z
cGVjdG9yT3ZlcmxheTo6SW5zcGVjdG9yT3ZlcmxheShQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGll
bnQqIGNsaWVudCkKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQog
ICAgICwgbV9wYWludFJlY3RVcGRhdGVUaW1lcigqdGhpcywgJkluc3BlY3Rvck92ZXJsYXk6OnVw
ZGF0ZVBhaW50UmVjdHNUaW1lckZpcmVkKQotICAgICwgbV9pbmRpY2F0aW5nKGZhbHNlKQotICAg
ICwgbV9zaG93aW5nUGFpbnRSZWN0cyhmYWxzZSkKIHsKIH0KIApAQCAtMjI1LDE0ICsyMjUsMTQg
QEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
CiAgICAgdmlldy0+cGFpbnQoJmNvbnRleHQsIEludFJlY3QoMCwgMCwgdmlldy0+d2lkdGgoKSwg
dmlldy0+aGVpZ2h0KCkpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpnZXRIaWdobGln
aHQoSGlnaGxpZ2h0KiBoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0
ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK3ZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGln
aGxpZ2h0KEhpZ2hsaWdodCYgaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRl
U3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgaWYgKCFtX2hpZ2hsaWdodE5v
ZGUgJiYgIW1faGlnaGxpZ2h0UXVhZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaGlnaGxpZ2h0
LT50eXBlID0gSGlnaGxpZ2h0VHlwZVJlY3RzOworICAgIGhpZ2hsaWdodC50eXBlID0gSGlnaGxp
Z2h0VHlwZTo6UmVjdHM7CiAgICAgaWYgKG1faGlnaGxpZ2h0Tm9kZSkKLSAgICAgICAgYnVpbGRO
b2RlSGlnaGxpZ2h0KG1faGlnaGxpZ2h0Tm9kZS5nZXQoKSwgbnVsbHB0ciwgbV9ub2RlSGlnaGxp
Z2h0Q29uZmlnLCBoaWdobGlnaHQsIGNvb3JkaW5hdGVTeXN0ZW0pOworICAgICAgICBidWlsZE5v
ZGVIaWdobGlnaHQoKm1faGlnaGxpZ2h0Tm9kZSwgbnVsbHB0ciwgbV9ub2RlSGlnaGxpZ2h0Q29u
ZmlnLCBoaWdobGlnaHQsIGNvb3JkaW5hdGVTeXN0ZW0pOwogICAgIGVsc2UKICAgICAgICAgYnVp
bGRRdWFkSGlnaGxpZ2h0KCptX2hpZ2hsaWdodFF1YWQsIG1fcXVhZEhpZ2hsaWdodENvbmZpZywg
aGlnaGxpZ2h0KTsKIH0KQEAgLTMzMSw1MCArMzMxLDUxIEBAIHZvaWQgSW5zcGVjdG9yT3Zlcmxh
eTo6dXBkYXRlKCkKICAgICBmb3JjZVBhaW50KCk7CiB9CiAKLXN0YXRpYyBSZWY8SW5zcGVjdG9y
T2JqZWN0PiBidWlsZE9iamVjdEZvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQorc3Rh
dGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlBvaW50PiBidWlsZE9i
amVjdEZvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQogewotICAgIFJlZjxJbnNwZWN0
b3JPYmplY3Q+IG9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgb2JqZWN0
LT5zZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ4IiksIHBvaW50LngoKSk7Ci0gICAgb2JqZWN0LT5z
ZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ5IiksIHBvaW50LnkoKSk7Ci0gICAgcmV0dXJuIFdURjo6
bW92ZShvYmplY3QpOworICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlw
ZXM6OlBvaW50OjpjcmVhdGUoKQorICAgICAgICAuc2V0WChwb2ludC54KCkpCisgICAgICAgIC5z
ZXRZKHBvaW50LnkoKSkKKyAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFJlZjxJbnNw
ZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCitz
dGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UmVjdD4gYnVpbGRP
YmplY3RGb3JSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBSZWY8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG9iamVjdC0+
c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgieCIpLCByZWN0LngoKSk7Ci0gICAgb2JqZWN0LT5zZXRE
b3VibGUoQVNDSUlMaXRlcmFsKCJ5IiksIHJlY3QueSgpKTsKLSAgICBvYmplY3QtPnNldERvdWJs
ZShBU0NJSUxpdGVyYWwoIndpZHRoIiksIHJlY3Qud2lkdGgoKSk7Ci0gICAgb2JqZWN0LT5zZXRE
b3VibGUoQVNDSUlMaXRlcmFsKCJoZWlnaHQiKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgcmV0dXJu
IFdURjo6bW92ZShvYmplY3QpOworICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVy
bGF5VHlwZXM6OlJlY3Q6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRYKHJlY3QueCgpKQorICAgICAg
ICAuc2V0WShyZWN0LnkoKSkKKyAgICAgICAgLnNldFdpZHRoKHJlY3Qud2lkdGgoKSkKKyAgICAg
ICAgLnNldEhlaWdodChyZWN0LmhlaWdodCgpKQorICAgICAgICAucmVsZWFzZSgpOwogfQogCi1z
dGF0aWMgUmVmPEluc3BlY3RvckFycmF5PiBidWlsZEFycmF5Rm9yUXVhZChjb25zdCBGbG9hdFF1
YWQmIHF1YWQpCitzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6
UXVhZD4gYnVpbGRBcnJheUZvclF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQogewotICAgIFJl
ZjxJbnNwZWN0b3JBcnJheT4gYXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7Ci0gICAg
YXJyYXktPnB1c2hPYmplY3QoYnVpbGRPYmplY3RGb3JQb2ludChxdWFkLnAxKCkpKTsKLSAgICBh
cnJheS0+cHVzaE9iamVjdChidWlsZE9iamVjdEZvclBvaW50KHF1YWQucDIoKSkpOwotICAgIGFy
cmF5LT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0Rm9yUG9pbnQocXVhZC5wMygpKSk7Ci0gICAgYXJy
YXktPnB1c2hPYmplY3QoYnVpbGRPYmplY3RGb3JQb2ludChxdWFkLnA0KCkpKTsKKyAgICBhdXRv
IGFycmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpRdWFkOjpjcmVhdGUo
KTsKKyAgICBhcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvclBvaW50KHF1YWQucDEoKSkpOwor
ICAgIGFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yUG9pbnQocXVhZC5wMigpKSk7CisgICAg
YXJyYXktPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JQb2ludChxdWFkLnAzKCkpKTsKKyAgICBhcnJh
eS0+YWRkSXRlbShidWlsZE9iamVjdEZvclBvaW50KHF1YWQucDQoKSkpOwogICAgIHJldHVybiBX
VEY6Om1vdmUoYXJyYXkpOwogfQogCi1zdGF0aWMgUmVmPEluc3BlY3Rvck9iamVjdD4gYnVpbGRP
YmplY3RGb3JIaWdobGlnaHQoY29uc3QgSGlnaGxpZ2h0JiBoaWdobGlnaHQpCitzdGF0aWMgUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRh
PiBidWlsZE9iamVjdEZvckhpZ2hsaWdodChjb25zdCBIaWdobGlnaHQmIGhpZ2hsaWdodCkKIHsK
LSAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwotICAgIFJlZjxJbnNwZWN0b3JBcnJheT4gYXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3Jl
YXRlKCk7CisgICAgYXV0byBhcnJheU9mUXVhZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlF1YWQ+OjpjcmVhdGUoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhpZ2hsaWdodC5xdWFkcy5zaXplKCk7ICsraSkKLSAg
ICAgICAgYXJyYXktPnB1c2hBcnJheShidWlsZEFycmF5Rm9yUXVhZChoaWdobGlnaHQucXVhZHNb
aV0pKTsKLSAgICBvYmplY3QtPnNldEFycmF5KCJxdWFkcyIsIFdURjo6bW92ZShhcnJheSkpOwot
ICAgIG9iamVjdC0+c2V0U3RyaW5nKCJjb250ZW50Q29sb3IiLCBoaWdobGlnaHQuY29udGVudENv
bG9yLnNlcmlhbGl6ZWQoKSk7Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoImNvbnRlbnRPdXRsaW5l
Q29sb3IiLCBoaWdobGlnaHQuY29udGVudE91dGxpbmVDb2xvci5zZXJpYWxpemVkKCkpOwotICAg
IG9iamVjdC0+c2V0U3RyaW5nKCJwYWRkaW5nQ29sb3IiLCBoaWdobGlnaHQucGFkZGluZ0NvbG9y
LnNlcmlhbGl6ZWQoKSk7Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoImJvcmRlckNvbG9yIiwgaGln
aGxpZ2h0LmJvcmRlckNvbG9yLnNlcmlhbGl6ZWQoKSk7Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmco
Im1hcmdpbkNvbG9yIiwgaGlnaGxpZ2h0Lm1hcmdpbkNvbG9yLnNlcmlhbGl6ZWQoKSk7Ci0gICAg
cmV0dXJuIFdURjo6bW92ZShvYmplY3QpOworICAgICAgICBhcnJheU9mUXVhZHMtPmFkZEl0ZW0o
YnVpbGRBcnJheUZvclF1YWQoaGlnaGxpZ2h0LnF1YWRzW2ldKSk7CisKKyAgICByZXR1cm4gSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVudEhpZ2hsaWdodERhdGE6OmNy
ZWF0ZSgpCisgICAgICAgIC5zZXRRdWFkcyhXVEY6Om1vdmUoYXJyYXlPZlF1YWRzKSkKKyAgICAg
ICAgLnNldENvbnRlbnRDb2xvcihoaWdobGlnaHQuY29udGVudENvbG9yLnNlcmlhbGl6ZWQoKSkK
KyAgICAgICAgLnNldENvbnRlbnRPdXRsaW5lQ29sb3IoaGlnaGxpZ2h0LmNvbnRlbnRPdXRsaW5l
Q29sb3Iuc2VyaWFsaXplZCgpKQorICAgICAgICAuc2V0UGFkZGluZ0NvbG9yKGhpZ2hsaWdodC5w
YWRkaW5nQ29sb3Iuc2VyaWFsaXplZCgpKQorICAgICAgICAuc2V0Qm9yZGVyQ29sb3IoaGlnaGxp
Z2h0LmJvcmRlckNvbG9yLnNlcmlhbGl6ZWQoKSkKKyAgICAgICAgLnNldE1hcmdpbkNvbG9yKGhp
Z2hsaWdodC5tYXJnaW5Db2xvci5zZXJpYWxpemVkKCkpCisgICAgICAgIC5yZWxlYXNlKCk7CiB9
CiAKLXN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclJlZ2lvbkhp
Z2hsaWdodChGcmFtZVZpZXcqIG1haW5WaWV3LCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKK3N0YXRp
YyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWdpb24+IGJ1aWxk
T2JqZWN0Rm9yUmVnaW9uKEZyYW1lVmlldyogbWFpblZpZXcsIFJlbmRlclJlZ2lvbiogcmVnaW9u
KQogewogICAgIEZyYW1lVmlldyogY29udGFpbmluZ1ZpZXcgPSByZWdpb24tPmZyYW1lKCkudmll
dygpOwogICAgIGlmICghY29udGFpbmluZ1ZpZXcpCkBAIC0zODgsNyArMzg5LDcgQEAgc3RhdGlj
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVnaW9uSGlnaGxpZ2h0KEZy
YW1lVmlldyogbWFpblZpZXcKICAgICAvLyBDcmVhdGUgaW5jb21pbmcgYW5kIG91dGdvaW5nIGJv
eGVzIHRoYXQgd2UgdXNlIHRvIGNoYWluIHRoZSByZWdpb25zIHRvZ2hldGhlci4KICAgICBjb25z
dCBMYXlvdXRTaXplIGxpbmtCb3hTaXplKDEwLCAxMCk7CiAgICAgY29uc3QgTGF5b3V0U2l6ZSBs
aW5rQm94TWlkcG9pbnQobGlua0JveFNpemUud2lkdGgoKSAvIDIsIGxpbmtCb3hTaXplLmhlaWdo
dCgpIC8gMik7Ci0gICAgCisKICAgICBMYXlvdXRSZWN0IGluY29taW5nUmVjdEJveCA9IExheW91
dFJlY3QoYm9yZGVyQm94LmxvY2F0aW9uKCkgLSBsaW5rQm94TWlkcG9pbnQsIGxpbmtCb3hTaXpl
KTsKICAgICBMYXlvdXRSZWN0IG91dGdvaW5nUmVjdEJveCA9IExheW91dFJlY3QoYm9yZGVyQm94
LmxvY2F0aW9uKCkgLSBsaW5rQm94TWlkcG9pbnQgKyBib3JkZXJCb3guc2l6ZSgpLCBsaW5rQm94
U2l6ZSk7CiAKQEAgLTQwNiw0NyArNDA3LDQ1IEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBidWlsZE9iamVjdEZvclJlZ2lvbkhpZ2hsaWdodChGcmFtZVZpZXcqIG1haW5WaWV3CiAg
ICAgY29udGVudHNRdWFkVG9QYWdlKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgaW5jb21pbmdS
ZWN0UXVhZCk7CiAgICAgY29udGVudHNRdWFkVG9QYWdlKG1haW5WaWV3LCBjb250YWluaW5nVmll
dywgb3V0Z29pbmdSZWN0UXVhZCk7CiAKLSAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZWdpb25P
YmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotCi0gICAgcmVnaW9uT2JqZWN0LT5z
ZXRBcnJheSgiYm9yZGVyUXVhZCIsIGJ1aWxkQXJyYXlGb3JRdWFkKGJvcmRlclJlY3RRdWFkKSk7
Ci0gICAgcmVnaW9uT2JqZWN0LT5zZXRBcnJheSgiaW5jb21pbmdRdWFkIiwgYnVpbGRBcnJheUZv
clF1YWQoaW5jb21pbmdSZWN0UXVhZCkpOwotICAgIHJlZ2lvbk9iamVjdC0+c2V0QXJyYXkoIm91
dGdvaW5nUXVhZCIsIGJ1aWxkQXJyYXlGb3JRdWFkKG91dGdvaW5nUmVjdFF1YWQpKTsKLQotICAg
IHJldHVybiBXVEY6Om1vdmUocmVnaW9uT2JqZWN0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWdpb246OmNyZWF0ZSgpCisgICAgICAgIC5zZXRCb3Jk
ZXJRdWFkKGJ1aWxkQXJyYXlGb3JRdWFkKGJvcmRlclJlY3RRdWFkKSkKKyAgICAgICAgLnNldElu
Y29taW5nUXVhZChidWlsZEFycmF5Rm9yUXVhZChpbmNvbWluZ1JlY3RRdWFkKSkKKyAgICAgICAg
LnNldE91dGdvaW5nUXVhZChidWlsZEFycmF5Rm9yUXVhZChvdXRnb2luZ1JlY3RRdWFkKSkKKyAg
ICAgICAgLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFJlZjxJbnNwZWN0b3JBcnJheT4gYnVpbGRP
YmplY3RGb3JDU1NSZWdpb25zSGlnaGxpZ2h0KFJlbmRlclJlZ2lvbiogcmVnaW9uLCBSZW5kZXJG
bG93VGhyZWFkKiBmbG93VGhyZWFkKQorc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlZ2lvbj4+IGJ1aWxkT2Jq
ZWN0Rm9yRmxvd1JlZ2lvbnMoUmVuZGVyUmVnaW9uKiByZWdpb24sIFJlbmRlckZsb3dUaHJlYWQq
IGZsb3dUaHJlYWQpCiB7CiAgICAgRnJhbWVWaWV3KiBtYWluRnJhbWVWaWV3ID0gcmVnaW9uLT5k
b2N1bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwogCi0gICAgUmVmPEluc3BlY3Rv
ckFycmF5PiBhcnJheSA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICBhdXRvIGFycmF5
T2ZSZWdpb25zID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3ZlcmxheVR5cGVzOjpSZWdpb24+OjpjcmVhdGUoKTsKIAogICAgIGNvbnN0IFJlbmRlclJl
Z2lvbkxpc3QmIHJlZ2lvbkxpc3QgPSBmbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0KCk7CiAg
ICAgZm9yIChhdXRvJiBpdGVyUmVnaW9uIDogcmVnaW9uTGlzdCkgewogICAgICAgICBpZiAoIWl0
ZXJSZWdpb24tPmlzVmFsaWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiByZWdpb25IaWdobGlnaHRPYmplY3QgPSBidWlsZE9iamVjdEZv
clJlZ2lvbkhpZ2hsaWdodChtYWluRnJhbWVWaWV3LCBpdGVyUmVnaW9uKTsKLSAgICAgICAgaWYg
KCFyZWdpb25IaWdobGlnaHRPYmplY3QpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPdmVybGF5VHlwZXM6OlJlZ2lvbj4gcmVnaW9uT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JS
ZWdpb24obWFpbkZyYW1lVmlldywgaXRlclJlZ2lvbik7CisgICAgICAgIGlmICghcmVnaW9uT2Jq
ZWN0KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChyZWdpb24gPT0gaXRlclJl
Z2lvbikgewogICAgICAgICAgICAgLy8gTGV0IHRoZSBzY3JpcHQga25vdyB0aGF0IHRoaXMgaXMg
dGhlIGN1cnJlbnRseSBoaWdobGlnaHRlZCBub2RlLgotICAgICAgICAgICAgcmVnaW9uSGlnaGxp
Z2h0T2JqZWN0LT5zZXRCb29sZWFuKCJpc0hpZ2hsaWdodGVkIiwgdHJ1ZSk7CisgICAgICAgICAg
ICByZWdpb25PYmplY3QtPnNldElzSGlnaGxpZ2h0ZWQodHJ1ZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgYXJyYXktPnB1c2hPYmplY3QocmVnaW9uSGlnaGxpZ2h0T2JqZWN0LnJlbGVhc2UoKSk7Cisg
ICAgICAgIGFycmF5T2ZSZWdpb25zLT5hZGRJdGVtKFdURjo6bW92ZShyZWdpb25PYmplY3QpKTsK
ICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKGFycmF5KTsKKyAgICByZXR1cm4gV1RGOjpt
b3ZlKGFycmF5T2ZSZWdpb25zKTsKIH0KIAotc3RhdGljIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGJ1
aWxkT2JqZWN0Rm9yU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQorc3RhdGljIFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlNpemU+IGJ1aWxkT2JqZWN0Rm9yU2l6ZShjb25z
dCBJbnRTaXplJiBzaXplKQogewotICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgcmVzdWx0LT5zZXRJbnRlZ2VyKCJ3aWR0aCIs
IHNpemUud2lkdGgoKSk7Ci0gICAgcmVzdWx0LT5zZXRJbnRlZ2VyKCJoZWlnaHQiLCBzaXplLmhl
aWdodCgpKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6U2l6ZTo6Y3JlYXRlKCkKKyAgICAgICAgLnNl
dFdpZHRoKHNpemUud2lkdGgoKSkKKyAgICAgICAgLnNldEhlaWdodChzaXplLmhlaWdodCgpKQor
ICAgICAgICAucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
YnVpbGRPYmplY3RGb3JDU1NSZWdpb25Db250ZW50Q2xpcChSZW5kZXJSZWdpb24qIHJlZ2lvbikK
K3N0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpRdWFkPiBi
dWlsZFF1YWRPYmplY3RGb3JDU1NSZWdpb25Db250ZW50Q2xpcChSZW5kZXJSZWdpb24qIHJlZ2lv
bikKIHsKICAgICBGcmFtZSogY29udGFpbmluZ0ZyYW1lID0gcmVnaW9uLT5kb2N1bWVudCgpLmZy
YW1lKCk7CiAgICAgaWYgKCFjb250YWluaW5nRnJhbWUpCkBAIC00NjYsOSArNDY1LDcgQEAgc3Rh
dGljIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQ1NTUmVnaW9uQ29udGVu
dENsaXAoUmVuZGVyUmVnaW9uKgogICAgIEZsb2F0UXVhZCBjbGlwUXVhZCA9IHJlZ2lvbi0+bG9j
YWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoZmxpcHBlZFJlZ2lvblJlY3QpKTsKICAgICBjb250
ZW50c1F1YWRUb1BhZ2UobWFpblZpZXcsIGNvbnRhaW5pbmdWaWV3LCBjbGlwUXVhZCk7CiAKLSAg
ICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZWdpb25PYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpOwotICAgIHJlZ2lvbk9iamVjdC0+c2V0QXJyYXkoInF1YWQiLCBidWlsZEFycmF5Rm9y
UXVhZChjbGlwUXVhZCkpOwotICAgIHJldHVybiBXVEY6Om1vdmUocmVnaW9uT2JqZWN0KTsKKyAg
ICByZXR1cm4gYnVpbGRBcnJheUZvclF1YWQoY2xpcFF1YWQpOwogfQogCiB2b2lkIEluc3BlY3Rv
ck92ZXJsYXk6OnNldFNob3dpbmdQYWludFJlY3RzKGJvb2wgc2hvd2luZ1BhaW50UmVjdHMpCkBA
IC01MTQsNyArNTExLDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGVQYWludFJlY3Rz
VGltZXJGaXJlZCgpCiAgICAgICAgIG1fcGFpbnRSZWN0cy5yZW1vdmVGaXJzdCgpOwogICAgICAg
ICByZWN0c0NoYW5nZWQgPSB0cnVlOwogICAgIH0KLSAgICAKKwogICAgIGlmIChtX3BhaW50UmVj
dHMuaXNFbXB0eSgpKQogICAgICAgICBtX3BhaW50UmVjdFVwZGF0ZVRpbWVyLnN0b3AoKTsKIApA
QCAtNTI2LDExICs1MjMsMTEgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGVQYWludFJl
Y3RzVGltZXJGaXJlZCgpCiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1BhaW50UmVjdHMo
KQogewotICAgIFJlZjxJbnNwZWN0b3JBcnJheT4gZnJhZ21lbnRzQXJyYXkgPSBJbnNwZWN0b3JB
cnJheTo6Y3JlYXRlKCk7CisgICAgYXV0byBhcnJheU9mUmVjdHMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlY3Q+OjpjcmVh
dGUoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX3BhaW50UmVjdHMpCi0gICAgICAg
IGZyYWdtZW50c0FycmF5LT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0Rm9yUmVjdChwYWlyLnNlY29u
ZCkpOworICAgICAgICBhcnJheU9mUmVjdHMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JSZWN0KHBh
aXIuc2Vjb25kKSk7CiAKLSAgICBldmFsdWF0ZUluT3ZlcmxheShBU0NJSUxpdGVyYWwoInVwZGF0
ZVBhaW50UmVjdHMiKSwgV1RGOjptb3ZlKGZyYWdtZW50c0FycmF5KSk7CisgICAgZXZhbHVhdGVJ
bk92ZXJsYXkoQVNDSUlMaXRlcmFsKCJ1cGRhdGVQYWludFJlY3RzIiksIFdURjo6bW92ZShhcnJh
eU9mUmVjdHMpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3R3V0dGVyKCkKQEAg
LTUzOCwxNSArNTM1LDE1IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0d1dHRlcigpCiAg
ICAgZXZhbHVhdGVJbk92ZXJsYXkoQVNDSUlMaXRlcmFsKCJkcmF3R3V0dGVyIikpOwogfQogCi1z
dGF0aWMgUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZE9iamVjdEZvclJlbmRlcmVyRnJhZ21l
bnRzKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgY29uZmln
KQorc3RhdGljIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpPdmVybGF5VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0RGF0YT4+IGJ1aWxkQXJyYXlG
b3JSZW5kZXJlckZyYWdtZW50cyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBIaWdobGln
aHRDb25maWcmIGNvbmZpZykKIHsKLSAgICBSZWY8SW5zcGVjdG9yQXJyYXk+IGZyYWdtZW50c0Fy
cmF5ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIGF1dG8gYXJyYXlPZkZyYWdtZW50
cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJs
YXlUeXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRhPjo6Y3JlYXRlKCk7CiAKICAgICBSZW5kZXJG
bG93VGhyZWFkKiBjb250YWluaW5nRmxvd1RocmVhZCA9IHJlbmRlcmVyLT5mbG93VGhyZWFkQ29u
dGFpbmluZ0Jsb2NrKCk7CiAgICAgaWYgKCFjb250YWluaW5nRmxvd1RocmVhZCkgewogICAgICAg
ICBIaWdobGlnaHQgaGlnaGxpZ2h0OwotICAgICAgICBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KHJl
bmRlcmVyLCBudWxscHRyLCBjb25maWcsICZoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNv
b3JkaW5hdGVTeXN0ZW06OlZpZXcpOwotICAgICAgICBmcmFnbWVudHNBcnJheS0+cHVzaE9iamVj
dChidWlsZE9iamVjdEZvckhpZ2hsaWdodChoaWdobGlnaHQpKTsKKyAgICAgICAgYnVpbGRSZW5k
ZXJlckhpZ2hsaWdodChyZW5kZXJlciwgbnVsbHB0ciwgY29uZmlnLCBoaWdobGlnaHQsIEluc3Bl
Y3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0ZW06OlZpZXcpOworICAgICAgICBhcnJheU9mRnJh
Z21lbnRzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KGhpZ2hsaWdodCkpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBudWxscHRyOwog
ICAgICAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CkBAIC01NjEsMTkgKzU1
OCwxOSBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZE9iamVjdEZvclJlbmRl
cmVyRnJhZ21lbnRzKFJlbmRlck9iamVjdCogcmVuZAogICAgICAgICAgICAgaWYgKHJlZ2lvbi0+
aXNWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgaGlnaGxpZ2h0IG9m
IHRoZSBmcmFnbWVudCBpbnNpZGUgdGhlIGN1cnJlbnQgcmVnaW9uLgogICAgICAgICAgICAgICAg
IEhpZ2hsaWdodCBoaWdobGlnaHQ7Ci0gICAgICAgICAgICAgICAgYnVpbGRSZW5kZXJlckhpZ2hs
aWdodChyZW5kZXJlciwgcmVnaW9uLCBjb25maWcsICZoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJs
YXk6OkNvb3JkaW5hdGVTeXN0ZW06OlZpZXcpOwotICAgICAgICAgICAgICAgIFJlZjxJbnNwZWN0
b3JPYmplY3Q+IGZyYWdtZW50T2JqZWN0ID0gYnVpbGRPYmplY3RGb3JIaWdobGlnaHQoaGlnaGxp
Z2h0KTsKKyAgICAgICAgICAgICAgICBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KHJlbmRlcmVyLCBy
ZWdpb24sIGNvbmZpZywgaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lz
dGVtOjpWaWV3KTsKKyAgICAgICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3Zl
cmxheVR5cGVzOjpGcmFnbWVudEhpZ2hsaWdodERhdGE+IGZyYWdtZW50SGlnaGxpZ2h0ID0gYnVp
bGRPYmplY3RGb3JIaWdobGlnaHQoaGlnaGxpZ2h0KTsKIAogICAgICAgICAgICAgICAgIC8vIENv
bXB1dGUgdGhlIGNsaXBwaW5nIGFyZWEgb2YgdGhlIHJlZ2lvbi4KLSAgICAgICAgICAgICAgICBm
cmFnbWVudE9iamVjdC0+c2V0T2JqZWN0KCJyZWdpb24iLCBidWlsZE9iamVjdEZvckNTU1JlZ2lv
bkNvbnRlbnRDbGlwKHJlZ2lvbikpOwotICAgICAgICAgICAgICAgIGZyYWdtZW50c0FycmF5LT5w
dXNoT2JqZWN0KFdURjo6bW92ZShmcmFnbWVudE9iamVjdCkpOworICAgICAgICAgICAgICAgIGZy
YWdtZW50SGlnaGxpZ2h0LT5zZXRSZWdpb25DbGlwcGluZ0FyZWEoYnVpbGRRdWFkT2JqZWN0Rm9y
Q1NTUmVnaW9uQ29udGVudENsaXAocmVnaW9uKSk7CisgICAgICAgICAgICAgICAgYXJyYXlPZkZy
YWdtZW50cy0+YWRkSXRlbShXVEY6Om1vdmUoZnJhZ21lbnRIaWdobGlnaHQpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChyZWdpb24gPT0gZW5kUmVnaW9uKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bW92ZShmcmFn
bWVudHNBcnJheSk7CisgICAgcmV0dXJuIFdURjo6bW92ZShhcnJheU9mRnJhZ21lbnRzKTsKIH0K
IAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQpAQCAtNTg4LDI2ICs1ODUsMjcgQEAgc3RhdGljIEZs
b2F0UG9pbnQgbG9jYWxQb2ludFRvUm9vdChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBG
cmFtZVZpZXcqIG1haW4KIHN0cnVjdCBQYXRoQXBwbHlJbmZvIHsKICAgICBGcmFtZVZpZXcqIHJv
b3RWaWV3OwogICAgIEZyYW1lVmlldyogdmlldzsKLSAgICBJbnNwZWN0b3JBcnJheSogYXJyYXk7
CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpEaXNwbGF5UGF0aCogcGF0
aEFycmF5OwogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXI7CiAgICAgY29uc3QgU2hhcGVPdXRz
aWRlSW5mbyogc2hhcGVPdXRzaWRlSW5mbzsKIH07CiAKLXN0YXRpYyB2b2lkIGFwcGVuZFBhdGhD
b21tYW5kQW5kUG9pbnRzKFBhdGhBcHBseUluZm8qIGluZm8sIGNvbnN0IFN0cmluZyYgY29tbWFu
ZCwgY29uc3QgRmxvYXRQb2ludCBwb2ludHNbXSwgdW5zaWduZWQgbGVuZ3RoKQorc3RhdGljIHZv
aWQgYXBwZW5kUGF0aENvbW1hbmRBbmRQb2ludHMoUGF0aEFwcGx5SW5mbyYgaW5mbywgY29uc3Qg
U3RyaW5nJiBjb21tYW5kLCBjb25zdCBGbG9hdFBvaW50IHBvaW50c1tdLCB1bnNpZ25lZCBsZW5n
dGgpCiB7CiAgICAgRmxvYXRQb2ludCBwb2ludDsKLSAgICBpbmZvLT5hcnJheS0+cHVzaFN0cmlu
Zyhjb21tYW5kKTsKKyAgICBpbmZvLnBhdGhBcnJheS0+YWRkSXRlbShjb21tYW5kKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgcG9pbnQgPSBp
bmZvLT5zaGFwZU91dHNpZGVJbmZvLT5zaGFwZVRvUmVuZGVyZXJQb2ludChwb2ludHNbaV0pOwot
ICAgICAgICBwb2ludCA9IGxvY2FsUG9pbnRUb1Jvb3QoaW5mby0+cmVuZGVyZXIsIGluZm8tPnJv
b3RWaWV3LCBpbmZvLT52aWV3LCBwb2ludCk7Ci0gICAgICAgIGluZm8tPmFycmF5LT5wdXNoRG91
YmxlKHBvaW50LngoKSk7Ci0gICAgICAgIGluZm8tPmFycmF5LT5wdXNoRG91YmxlKHBvaW50Lnko
KSk7CisgICAgICAgIHBvaW50ID0gaW5mby5zaGFwZU91dHNpZGVJbmZvLT5zaGFwZVRvUmVuZGVy
ZXJQb2ludChwb2ludHNbaV0pOworICAgICAgICBwb2ludCA9IGxvY2FsUG9pbnRUb1Jvb3QoaW5m
by5yZW5kZXJlciwgaW5mby5yb290VmlldywgaW5mby52aWV3LCBwb2ludCk7CisgICAgICAgIGlu
Zm8ucGF0aEFycmF5LT5hZGRJdGVtKHBvaW50LngoKSk7CisgICAgICAgIGluZm8ucGF0aEFycmF5
LT5hZGRJdGVtKHBvaW50LnkoKSk7CiAgICAgfQogfQogCisvLyBVc2VkIGFzIGEgZnVuY3RvciBm
b3IgU2hhcGU6OmFwcGx5LCB3aGljaCBoYXMgbm90IGJlZW4gY2xlYW5lZCB1cCB0byB1c2UgbW9k
ZXJuIEMrKy4KIHN0YXRpYyB2b2lkIGFwcGVuZFBhdGhTZWdtZW50KHZvaWQqIGluZm8sIGNvbnN0
IFBhdGhFbGVtZW50KiBwYXRoRWxlbWVudCkKIHsKLSAgICBQYXRoQXBwbHlJbmZvKiBwYXRoQXBw
bHlJbmZvID0gc3RhdGljX2Nhc3Q8UGF0aEFwcGx5SW5mbyo+KGluZm8pOworICAgIFBhdGhBcHBs
eUluZm8mIHBhdGhBcHBseUluZm8gPSAqc3RhdGljX2Nhc3Q8UGF0aEFwcGx5SW5mbyo+KGluZm8p
OwogICAgIEZsb2F0UG9pbnQgcG9pbnQ7CiAgICAgc3dpdGNoIChwYXRoRWxlbWVudC0+dHlwZSkg
ewogICAgIC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAxIHZhbHVlLgpAQCAtNjMz
LDQxICs2MzEsNDMgQEAgc3RhdGljIHZvaWQgYXBwZW5kUGF0aFNlZ21lbnQodm9pZCogaW5mbywg
Y29uc3QgUGF0aEVsZW1lbnQqIHBhdGhFbGVtZW50KQogICAgIH0KIH0KIAotc3RhdGljIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yU2hhcGVPdXRzaWRlKEZyYW1lKiBjb250
YWluaW5nRnJhbWUsIFJlbmRlckJveCogcmVuZGVyZXIpCitzdGF0aWMgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6U2hhcGVPdXRzaWRlRGF0YT4gYnVpbGRPYmplY3RG
b3JTaGFwZU91dHNpZGUoRnJhbWUqIGNvbnRhaW5pbmdGcmFtZSwgUmVuZGVyQm94KiByZW5kZXJl
cikKIHsKICAgICBjb25zdCBTaGFwZU91dHNpZGVJbmZvKiBzaGFwZU91dHNpZGVJbmZvID0gcmVu
ZGVyZXItPnNoYXBlT3V0c2lkZUluZm8oKTsKICAgICBpZiAoIXNoYXBlT3V0c2lkZUluZm8pCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmPEluc3BlY3Rvck9iamVjdD4gc2hhcGVP
YmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIExheW91dFJlY3Qgc2hhcGVC
b3VuZHMgPSBzaGFwZU91dHNpZGVJbmZvLT5jb21wdXRlZFNoYXBlUGh5c2ljYWxCb3VuZGluZ0Jv
eCgpOwogICAgIEZsb2F0UXVhZCBzaGFwZVF1YWQgPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRl
UXVhZChGbG9hdFJlY3Qoc2hhcGVCb3VuZHMpKTsKICAgICBjb250ZW50c1F1YWRUb1BhZ2UoY29u
dGFpbmluZ0ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSwgY29udGFpbmluZ0ZyYW1l
LT52aWV3KCksIHNoYXBlUXVhZCk7Ci0gICAgc2hhcGVPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0
ZXJhbCgiYm91bmRzIiksIGJ1aWxkQXJyYXlGb3JRdWFkKHNoYXBlUXVhZCkpOworCisgICAgYXV0
byBzaGFwZU9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6U2hhcGVP
dXRzaWRlRGF0YTo6Y3JlYXRlKCkKKyAgICAgICAgLnNldEJvdW5kcyhidWlsZEFycmF5Rm9yUXVh
ZChzaGFwZVF1YWQpKQorICAgICAgICAucmVsZWFzZSgpOwogCiAgICAgU2hhcGU6OkRpc3BsYXlQ
YXRocyBwYXRoczsKICAgICBzaGFwZU91dHNpZGVJbmZvLT5jb21wdXRlZFNoYXBlKCkuYnVpbGRE
aXNwbGF5UGF0aHMocGF0aHMpOwogCiAgICAgaWYgKHBhdGhzLnNoYXBlLmxlbmd0aCgpKSB7Ci0g
ICAgICAgIFJlZjxJbnNwZWN0b3JBcnJheT4gc2hhcGVQYXRoID0gSW5zcGVjdG9yQXJyYXk6OmNy
ZWF0ZSgpOworICAgICAgICBhdXRvIHNoYXBlUGF0aCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92
ZXJsYXlUeXBlczo6RGlzcGxheVBhdGg6OmNyZWF0ZSgpOwogICAgICAgICBQYXRoQXBwbHlJbmZv
IGluZm87CiAgICAgICAgIGluZm8ucm9vdFZpZXcgPSBjb250YWluaW5nRnJhbWUtPnBhZ2UoKS0+
bWFpbkZyYW1lKCkudmlldygpOwogICAgICAgICBpbmZvLnZpZXcgPSBjb250YWluaW5nRnJhbWUt
PnZpZXcoKTsKLSAgICAgICAgaW5mby5hcnJheSA9ICZzaGFwZVBhdGguZ2V0KCk7CisgICAgICAg
IGluZm8ucGF0aEFycmF5ID0gJnNoYXBlUGF0aC5nZXQoKTsKICAgICAgICAgaW5mby5yZW5kZXJl
ciA9IHJlbmRlcmVyOwogICAgICAgICBpbmZvLnNoYXBlT3V0c2lkZUluZm8gPSBzaGFwZU91dHNp
ZGVJbmZvOwogCiAgICAgICAgIHBhdGhzLnNoYXBlLmFwcGx5KCZpbmZvLCAmYXBwZW5kUGF0aFNl
Z21lbnQpOwogCi0gICAgICAgIHNoYXBlT2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoInNo
YXBlIiksIHNoYXBlUGF0aC5jb3B5UmVmKCkpOworICAgICAgICBzaGFwZU9iamVjdC0+c2V0U2hh
cGUoc2hhcGVQYXRoLmNvcHlSZWYoKSk7CiAKICAgICAgICAgaWYgKHBhdGhzLm1hcmdpblNoYXBl
Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBzaGFwZVBhdGggPSBJbnNwZWN0b3JBcnJheTo6Y3Jl
YXRlKCk7Ci0gICAgICAgICAgICBpbmZvLmFycmF5ID0gJnNoYXBlUGF0aC5nZXQoKTsKKyAgICAg
ICAgICAgIGF1dG8gbWFyZ2luU2hhcGVQYXRoID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6T3Zlcmxh
eVR5cGVzOjpEaXNwbGF5UGF0aDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBpbmZvLnBhdGhBcnJh
eSA9ICZtYXJnaW5TaGFwZVBhdGguZ2V0KCk7CiAKICAgICAgICAgICAgIHBhdGhzLm1hcmdpblNo
YXBlLmFwcGx5KCZpbmZvLCAmYXBwZW5kUGF0aFNlZ21lbnQpOwogCi0gICAgICAgICAgICBzaGFw
ZU9iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJtYXJnaW5TaGFwZSIpLCBzaGFwZVBhdGgu
Y29weVJlZigpKTsKKyAgICAgICAgICAgIHNoYXBlT2JqZWN0LT5zZXRNYXJnaW5TaGFwZShzaGFw
ZVBhdGguY29weVJlZigpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNjc1LDE4ICs2NzUsMTkg
QEAgc3RhdGljIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yU2hhcGVPdXRz
aWRlKEZyYW1lKiBjb250YWluaW5nRnJhbWUKIH0KICNlbmRpZgogCi1zdGF0aWMgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JFbGVtZW50SW5mbyhOb2RlKiBub2RlKQorc3Rh
dGljIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkVsZW1lbnREYXRh
PiBidWlsZE9iamVjdEZvckVsZW1lbnREYXRhKE5vZGUqIG5vZGUpCiB7Ci0gICAgQVNTRVJUKG5v
ZGUpOwotICAgIGlmICghaXM8RWxlbWVudD4oKm5vZGUpIHx8ICFub2RlLT5kb2N1bWVudCgpLmZy
YW1lKCkpCisgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSB8fCAhbm9kZS0+ZG9jdW1lbnQoKS5m
cmFtZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZjxJbnNwZWN0b3JPYmpl
Y3Q+IGVsZW1lbnRJbmZvID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLQogICAgIEVsZW1l
bnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSk7CiAgICAgYm9vbCBpc1hIVE1M
ID0gZWxlbWVudC5kb2N1bWVudCgpLmlzWEhUTUxEb2N1bWVudCgpOwotICAgIGVsZW1lbnRJbmZv
LT5zZXRTdHJpbmcoInRhZ05hbWUiLCBpc1hIVE1MID8gZWxlbWVudC5ub2RlTmFtZSgpIDogZWxl
bWVudC5ub2RlTmFtZSgpLmxvd2VyKCkpOwotICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJpbmcoImlk
VmFsdWUiLCBlbGVtZW50LmdldElkQXR0cmlidXRlKCkpOworCisgICAgYXV0byBlbGVtZW50RGF0
YSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RWxlbWVudERhdGE6OmNyZWF0
ZSgpCisgICAgICAgIC5zZXRUYWdOYW1lKGlzWEhUTUwgPyBlbGVtZW50Lm5vZGVOYW1lKCkgOiBl
bGVtZW50Lm5vZGVOYW1lKCkubG93ZXIoKSkKKyAgICAgICAgLnNldElkVmFsdWUoZWxlbWVudC5n
ZXRJZEF0dHJpYnV0ZSgpKQorICAgICAgICAucmVsZWFzZSgpOworCiAgICAgSGFzaFNldDxBdG9t
aWNTdHJpbmc+IHVzZWRDbGFzc05hbWVzOwogICAgIGlmIChlbGVtZW50Lmhhc0NsYXNzKCkgJiYg
aXM8U3R5bGVkRWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBjbGFz
c05hbWVzOwpAQCAtNzAwLDQwICs3MDEsNDkgQEAgc3RhdGljIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGJ1aWxkT2JqZWN0Rm9yRWxlbWVudEluZm8oTm9kZSogbm9kZSkKICAgICAgICAgICAgIGNs
YXNzTmFtZXMuYXBwZW5kKCcuJyk7CiAgICAgICAgICAgICBjbGFzc05hbWVzLmFwcGVuZChjbGFz
c05hbWUpOwogICAgICAgICB9Ci0gICAgICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJpbmcoImNsYXNz
TmFtZSIsIGNsYXNzTmFtZXMudG9TdHJpbmcoKSk7CisgICAgICAgIGVsZW1lbnREYXRhLT5zZXRD
bGFzc05hbWUoY2xhc3NOYW1lcy50b1N0cmluZygpKTsKICAgICB9CiAKICAgICBSZW5kZXJFbGVt
ZW50KiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIEZyYW1lKiBjb250YWluaW5nRnJhbWUgPSBu
b2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgRnJhbWVWaWV3KiBjb250YWluaW5nVmlldyA9
IGNvbnRhaW5pbmdGcmFtZS0+dmlldygpOwogICAgIEludFJlY3QgYm91bmRpbmdCb3ggPSBzbmFw
cGVkSW50UmVjdChjb250YWluaW5nVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHJlbmRlcmVyLT5h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKSk7CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG1v
ZGVsT2JqZWN0ID0gaXM8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpyZW5kZXJlcikgPyBkb3duY2Fz
dDxSZW5kZXJCb3hNb2RlbE9iamVjdD4ocmVuZGVyZXIpIDogbnVsbHB0cjsKLSAgICBlbGVtZW50
SW5mby0+c2V0U3RyaW5nKCJub2RlV2lkdGgiLCBTdHJpbmc6Om51bWJlcihtb2RlbE9iamVjdCA/
IGFkanVzdEZvckFic29sdXRlWm9vbShtb2RlbE9iamVjdC0+cGl4ZWxTbmFwcGVkT2Zmc2V0V2lk
dGgoKSwgKm1vZGVsT2JqZWN0KSA6IGJvdW5kaW5nQm94LndpZHRoKCkpKTsKLSAgICBlbGVtZW50
SW5mby0+c2V0U3RyaW5nKCJub2RlSGVpZ2h0IiwgU3RyaW5nOjpudW1iZXIobW9kZWxPYmplY3Qg
PyBhZGp1c3RGb3JBYnNvbHV0ZVpvb20obW9kZWxPYmplY3QtPnBpeGVsU25hcHBlZE9mZnNldEhl
aWdodCgpLCAqbW9kZWxPYmplY3QpIDogYm91bmRpbmdCb3guaGVpZ2h0KCkpKTsKLSAgICAKKyAg
ICBhdXRvIHNpemVPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlNp
emU6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRXaWR0aChtb2RlbE9iamVjdCA/IGFkanVzdEZvckFi
c29sdXRlWm9vbShtb2RlbE9iamVjdC0+cGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgKm1vZGVs
T2JqZWN0KSA6IGJvdW5kaW5nQm94LndpZHRoKCkpCisgICAgICAgIC5zZXRIZWlnaHQobW9kZWxP
YmplY3QgPyBhZGp1c3RGb3JBYnNvbHV0ZVpvb20obW9kZWxPYmplY3QtPnBpeGVsU25hcHBlZE9m
ZnNldEhlaWdodCgpLCAqbW9kZWxPYmplY3QpIDogYm91bmRpbmdCb3guaGVpZ2h0KCkpCisgICAg
ICAgIC5yZWxlYXNlKCk7CisgICAgZWxlbWVudERhdGEtPnNldFNpemUoV1RGOjptb3ZlKHNpemVP
YmplY3QpKTsKKwogICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENv
bnRhaW5lcigpKSB7CiAgICAgICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50JiByZWdpb24gPSAq
ZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIpLnJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50KCk7CiAgICAgICAgIGlmIChyZWdpb24uaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBSZW5k
ZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gcmVnaW9uLmZsb3dUaHJlYWQoKTsKLSAgICAgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlZ2lvbkZsb3dJbmZvID0gSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHJlZ2lvbkZsb3dJbmZvLT5zZXRTdHJpbmcoIm5h
bWUiLCBkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dUaHJlYWQ+KCpmbG93VGhyZWFkKS5mbG93VGhy
ZWFkTmFtZSgpKTsKLSAgICAgICAgICAgIHJlZ2lvbkZsb3dJbmZvLT5zZXRBcnJheSgicmVnaW9u
cyIsIGJ1aWxkT2JqZWN0Rm9yQ1NTUmVnaW9uc0hpZ2hsaWdodCgmcmVnaW9uLCBmbG93VGhyZWFk
KSk7Ci0gICAgICAgICAgICBlbGVtZW50SW5mby0+c2V0T2JqZWN0KCJyZWdpb25GbG93SW5mbyIs
IHJlZ2lvbkZsb3dJbmZvLnJlbGVhc2UoKSk7CisgICAgICAgICAgICBhdXRvIHJlZ2lvbkZsb3dE
YXRhID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWdpb25GbG93RGF0YTo6
Y3JlYXRlKCkKKyAgICAgICAgICAgICAgICAuc2V0TmFtZShkb3duY2FzdDxSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ+KCpmbG93VGhyZWFkKS5mbG93VGhyZWFkTmFtZSgpKQorICAgICAgICAgICAgICAg
IC5zZXRSZWdpb25zKGJ1aWxkT2JqZWN0Rm9yRmxvd1JlZ2lvbnMoJnJlZ2lvbiwgZmxvd1RocmVh
ZCkpCisgICAgICAgICAgICAgICAgLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGVsZW1lbnREYXRh
LT5zZXRSZWdpb25GbG93RGF0YShXVEY6Om1vdmUocmVnaW9uRmxvd0RhdGEpKTsKICAgICAgICAg
fQogICAgIH0KIAogICAgIFJlbmRlckZsb3dUaHJlYWQqIGNvbnRhaW5pbmdGbG93VGhyZWFkID0g
cmVuZGVyZXItPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKICAgICBpZiAoaXM8UmVuZGVy
TmFtZWRGbG93VGhyZWFkPihjb250YWluaW5nRmxvd1RocmVhZCkpIHsKLSAgICAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gY29udGVudEZsb3dJbmZvID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKLSAgICAgICAgY29udGVudEZsb3dJbmZvLT5zZXRTdHJpbmcoIm5hbWUiLCBkb3duY2Fz
dDxSZW5kZXJOYW1lZEZsb3dUaHJlYWQ+KCpjb250YWluaW5nRmxvd1RocmVhZCkuZmxvd1RocmVh
ZE5hbWUoKSk7Ci0gICAgICAgIGVsZW1lbnRJbmZvLT5zZXRPYmplY3QoImNvbnRlbnRGbG93SW5m
byIsIGNvbnRlbnRGbG93SW5mby5yZWxlYXNlKCkpOworICAgICAgICBhdXRvIGNvbnRlbnRGbG93
RGF0YSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Q29udGVudEZsb3dEYXRh
OjpjcmVhdGUoKQorICAgICAgICAgICAgLnNldE5hbWUoZG93bmNhc3Q8UmVuZGVyTmFtZWRGbG93
VGhyZWFkPigqY29udGFpbmluZ0Zsb3dUaHJlYWQpLmZsb3dUaHJlYWROYW1lKCkpCisgICAgICAg
ICAgICAucmVsZWFzZSgpOworCisgICAgICAgIGVsZW1lbnREYXRhLT5zZXRDb250ZW50Rmxvd0Rh
dGEoV1RGOjptb3ZlKGNvbnRlbnRGbG93RGF0YSkpOwogICAgIH0KIAogI2lmIEVOQUJMRShDU1Nf
U0hBUEVTKQogICAgIGlmIChpczxSZW5kZXJCb3g+KCpyZW5kZXJlcikpIHsKICAgICAgICAgYXV0
byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqcmVuZGVyZXIpOwotICAgICAgICBp
ZiAoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2hhcGVPYmplY3QgPSBidWlsZE9iamVjdEZvclNo
YXBlT3V0c2lkZShjb250YWluaW5nRnJhbWUsICZyZW5kZXJCb3gpKQotICAgICAgICAgICAgZWxl
bWVudEluZm8tPnNldE9iamVjdCgic2hhcGVPdXRzaWRlSW5mbyIsIHNoYXBlT2JqZWN0LnJlbGVh
c2UoKSk7CisgICAgICAgIGlmIChSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5
cGVzOjpTaGFwZU91dHNpZGVEYXRhPiBzaGFwZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yU2hhcGVP
dXRzaWRlKGNvbnRhaW5pbmdGcmFtZSwgJnJlbmRlckJveCkpCisgICAgICAgICAgICBlbGVtZW50
RGF0YS0+c2V0U2hhcGVPdXRzaWRlRGF0YShXVEY6Om1vdmUoc2hhcGVPYmplY3QpKTsKICAgICB9
CiAjZW5kaWYKIApAQCAtNzQzLDEzICs3NTMsMTMgQEAgc3RhdGljIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGJ1aWxkT2JqZWN0Rm9yRWxlbWVudEluZm8oTm9kZSogbm9kZSkKIAogICAgIGlmIChB
WE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlID0gbm9kZS0+ZG9jdW1lbnQoKS5heE9iamVjdENh
Y2hlKCkpIHsKICAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYXhP
YmplY3RDYWNoZS0+Z2V0T3JDcmVhdGUobm9kZSkpCi0gICAgICAgICAgICBlbGVtZW50SW5mby0+
c2V0U3RyaW5nKCJyb2xlIiwgYXhPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpKTsKKyAgICAg
ICAgICAgIGVsZW1lbnREYXRhLT5zZXRSb2xlKGF4T2JqZWN0LT5jb21wdXRlZFJvbGVTdHJpbmco
KSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bW92ZShlbGVtZW50SW5mbyk7CisgICAgcmV0
dXJuIFdURjo6bW92ZShlbGVtZW50RGF0YSk7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IEluc3BlY3Rvck92ZXJsYXk6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29uc3QK
K1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHRE
YXRhPiBJbnNwZWN0b3JPdmVybGF5OjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2hpZ2hsaWdodE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtNzU5LDMzICs3NjksMzAgQEAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9y
T3ZlcmxheTo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdAogICAgIGlmICgh
cmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBoaWdobGlnaHRGcmFnbWVudHMgPSBidWlsZE9iamVjdEZvclJlbmRlcmVyRnJhZ21l
bnRzKHJlbmRlcmVyLCBtX25vZGVIaWdobGlnaHRDb25maWcpOwotICAgIGlmICghaGlnaGxpZ2h0
RnJhZ21lbnRzKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0RGF0YT4+IGFycmF5
T2ZGcmFnbWVudEhpZ2hsaWdodHMgPSBidWlsZEFycmF5Rm9yUmVuZGVyZXJGcmFnbWVudHMocmVu
ZGVyZXIsIG1fbm9kZUhpZ2hsaWdodENvbmZpZyk7CisgICAgaWYgKCFhcnJheU9mRnJhZ21lbnRI
aWdobGlnaHRzKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZjxJbnNwZWN0b3JP
YmplY3Q+IGhpZ2hsaWdodE9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0KICAg
ICAvLyBUaGUgbWFpbiB2aWV3J3Mgc2Nyb2xsIG9mZnNldCBpcyBzaGFyZWQgYWNyb3NzIGFsbCBx
dWFkcy4KICAgICBGcmFtZVZpZXcqIG1haW5WaWV3ID0gbV9wYWdlLm1haW5GcmFtZSgpLnZpZXco
KTsKLSAgICBoaWdobGlnaHRPYmplY3QtPnNldE9iamVjdCgic2Nyb2xsIiwgYnVpbGRPYmplY3RG
b3JQb2ludCghbWFpblZpZXctPmRlbGVnYXRlc1Njcm9sbGluZygpID8gbWFpblZpZXctPnZpc2li
bGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkgOiBGbG9hdFBvaW50KCkpKTsKIAotICAgIGhpZ2hs
aWdodE9iamVjdC0+c2V0QXJyYXkoImZyYWdtZW50cyIsIGhpZ2hsaWdodEZyYWdtZW50cy5yZWxl
YXNlKCkpOworICAgIGF1dG8gbm9kZUhpZ2hsaWdodE9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE6OmNyZWF0ZSgpCisgICAgICAgIC5z
ZXRTY3JvbGxPZmZzZXQoYnVpbGRPYmplY3RGb3JQb2ludCghbWFpblZpZXctPmRlbGVnYXRlc1Nj
cm9sbGluZygpID8gbWFpblZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkgOiBG
bG9hdFBvaW50KCkpKQorICAgICAgICAuc2V0RnJhZ21lbnRzKFdURjo6bW92ZShhcnJheU9mRnJh
Z21lbnRIaWdobGlnaHRzKSkKKyAgICAgICAgLnJlbGVhc2UoKTsKIAogICAgIGlmIChtX25vZGVI
aWdobGlnaHRDb25maWcuc2hvd0luZm8pIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gZWxlbWVudEluZm8gPSBidWlsZE9iamVjdEZvckVsZW1lbnRJbmZvKG5vZGUpOwotICAgICAg
ICBpZiAoZWxlbWVudEluZm8pCi0gICAgICAgICAgICBoaWdobGlnaHRPYmplY3QtPnNldE9iamVj
dCgiZWxlbWVudEluZm8iLCBlbGVtZW50SW5mby5yZWxlYXNlKCkpOworICAgICAgICBpZiAoUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RWxlbWVudERhdGE+IGVsZW1l
bnREYXRhID0gYnVpbGRPYmplY3RGb3JFbGVtZW50RGF0YShub2RlKSkKKyAgICAgICAgICAgIG5v
ZGVIaWdobGlnaHRPYmplY3QtPnNldEVsZW1lbnREYXRhKFdURjo6bW92ZShlbGVtZW50RGF0YSkp
OwogICAgIH0KLSAgICAgICAgCi0gICAgcmV0dXJuIFdURjo6bW92ZShoaWdobGlnaHRPYmplY3Qp
OworCisgICAgcmV0dXJuIFdURjo6bW92ZShub2RlSGlnaGxpZ2h0T2JqZWN0KTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3Tm9kZUhpZ2hsaWdodCgpCiB7Ci0gICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gaGlnaGxpZ2h0T2JqZWN0ID0gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRl
ZE5vZGUoKTsKLSAgICBpZiAoIWhpZ2hsaWdodE9iamVjdCkKLSAgICAgICAgcmV0dXJuOwotICAg
IGV2YWx1YXRlSW5PdmVybGF5KCJkcmF3Tm9kZUhpZ2hsaWdodCIsIGhpZ2hsaWdodE9iamVjdCk7
CisgICAgaWYgKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVI
aWdobGlnaHREYXRhPiBoaWdobGlnaHRPYmplY3QgPSBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVk
Tm9kZSgpKQorICAgICAgICBldmFsdWF0ZUluT3ZlcmxheSgiZHJhd05vZGVIaWdobGlnaHQiLCBX
VEY6Om1vdmUoaGlnaGxpZ2h0T2JqZWN0KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6
ZHJhd1F1YWRIaWdobGlnaHQoKQpAQCAtNzk0LDcgKzgwMSw3IEBAIHZvaWQgSW5zcGVjdG9yT3Zl
cmxheTo6ZHJhd1F1YWRIaWdobGlnaHQoKQogICAgICAgICByZXR1cm47CiAKICAgICBIaWdobGln
aHQgaGlnaGxpZ2h0OwotICAgIGJ1aWxkUXVhZEhpZ2hsaWdodCgqbV9oaWdobGlnaHRRdWFkLCBt
X3F1YWRIaWdobGlnaHRDb25maWcsICZoaWdobGlnaHQpOworICAgIGJ1aWxkUXVhZEhpZ2hsaWdo
dCgqbV9oaWdobGlnaHRRdWFkLCBtX3F1YWRIaWdobGlnaHRDb25maWcsIGhpZ2hsaWdodCk7CiAg
ICAgZXZhbHVhdGVJbk92ZXJsYXkoImRyYXdRdWFkSGlnaGxpZ2h0IiwgYnVpbGRPYmplY3RGb3JI
aWdobGlnaHQoaGlnaGxpZ2h0KSk7CiB9CiAKQEAgLTg1OSwxMSArODY2LDEyIEBAIHZvaWQgSW5z
cGVjdG9yT3ZlcmxheTo6Zm9yY2VQYWludCgpCiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6cmVz
ZXQoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBJbnRTaXplJiBmcmFtZVZpZXdG
dWxsU2l6ZSkKIHsKLSAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXNldERhdGEgPSBJbnNwZWN0
b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHJlc2V0RGF0YS0+c2V0RG91YmxlKCJkZXZpY2VTY2Fs
ZUZhY3RvciIsIG1fcGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICByZXNldERhdGEtPnNl
dE9iamVjdCgidmlld3BvcnRTaXplIiwgYnVpbGRPYmplY3RGb3JTaXplKHZpZXdwb3J0U2l6ZSkp
OwotICAgIHJlc2V0RGF0YS0+c2V0T2JqZWN0KCJmcmFtZVZpZXdGdWxsU2l6ZSIsIGJ1aWxkT2Jq
ZWN0Rm9yU2l6ZShmcmFtZVZpZXdGdWxsU2l6ZSkpOwotICAgIGV2YWx1YXRlSW5PdmVybGF5KCJy
ZXNldCIsIFdURjo6bW92ZShyZXNldERhdGEpKTsKKyAgICBhdXRvIGNvbmZpZ09iamVjdCA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6T3ZlcmxheUNvbmZpZ3VyYXRpb246OmNy
ZWF0ZSgpCisgICAgICAgIC5zZXREZXZpY2VTY2FsZUZhY3RvcihtX3BhZ2UuZGV2aWNlU2NhbGVG
YWN0b3IoKSkKKyAgICAgICAgLnNldFZpZXdwb3J0U2l6ZShidWlsZE9iamVjdEZvclNpemUodmll
d3BvcnRTaXplKSkKKyAgICAgICAgLnNldEZyYW1lVmlld0Z1bGxTaXplKGJ1aWxkT2JqZWN0Rm9y
U2l6ZShmcmFtZVZpZXdGdWxsU2l6ZSkpCisgICAgICAgIC5yZWxlYXNlKCk7CisgICAgZXZhbHVh
dGVJbk92ZXJsYXkoInJlc2V0IiwgV1RGOjptb3ZlKGNvbmZpZ09iamVjdCkpOwogfQogCiB2b2lk
IEluc3BlY3Rvck92ZXJsYXk6OmV2YWx1YXRlSW5PdmVybGF5KGNvbnN0IFN0cmluZyYgbWV0aG9k
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKaW5kZXggZTVj
ZmVlZjI1NzU2ZmJlZmYyZTBkNzJlZjJiYzlhZmUwZWM4YTdmNS4uNDMyNmExMDVhMDk2MDdkOWRh
MDBmOTk4YWQzNjBiMWE2ODBmY2RhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5oCkBAIC00MSw2ICs0MSwxMiBAQAogbmFtZXNwYWNlIEluc3BlY3RvciB7
CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKKworbmFtZXNw
YWNlIFByb3RvY29sIHsKK25hbWVzcGFjZSBPdmVybGF5VHlwZXMgeworY2xhc3MgTm9kZUhpZ2hs
aWdodERhdGE7Cit9Cit9CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY0LDE3ICs3MCwx
MyBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VQYWdlQ29vcmRpbmF0ZXM7CiB9OwogCi1lbnVtIEhp
Z2hsaWdodFR5cGUgewotICAgIEhpZ2hsaWdodFR5cGVOb2RlLAotICAgIEhpZ2hsaWdodFR5cGVS
ZWN0cywKK2VudW0gY2xhc3MgSGlnaGxpZ2h0VHlwZSB7CisgICAgTm9kZSwgLy8gUHJvdmlkZXMg
NCBxdWFkczogbWFyZ2luLCBib3JkZXIsIHBhZGRpbmcsIGNvbnRlbnQuCisgICAgUmVjdHMsIC8v
IFByb3ZpZGVzIGEgbGlzdCBvZiBxdWFkcy4KIH07CiAKIHN0cnVjdCBIaWdobGlnaHQgewotICAg
IEhpZ2hsaWdodCgpCi0gICAgICAgIDogdHlwZShIaWdobGlnaHRUeXBlTm9kZSkKLSAgICAgICAg
LCB1c2VQYWdlQ29vcmRpbmF0ZXModHJ1ZSkKLSAgICB7Ci0gICAgfQorICAgIEhpZ2hsaWdodCgp
IHsgfQogCiAgICAgdm9pZCBzZXREYXRhRnJvbUNvbmZpZyhjb25zdCBIaWdobGlnaHRDb25maWcm
IGhpZ2hsaWdodENvbmZpZykKICAgICB7CkBAIC05MiwxMSArOTQsOSBAQCBzdHJ1Y3QgSGlnaGxp
Z2h0IHsKICAgICBDb2xvciBib3JkZXJDb2xvcjsKICAgICBDb2xvciBtYXJnaW5Db2xvcjsKIAot
ICAgIC8vIFdoZW4gdGhlIHR5cGUgaXMgTm9kZSwgdGhlcmUgYXJlIDQgcXVhZHMgKG1hcmdpbiwg
Ym9yZGVyLCBwYWRkaW5nLCBjb250ZW50KS4KLSAgICAvLyBXaGVuIHRoZSB0eXBlIGlzIFJlY3Rz
LCB0aGlzIGlzIGp1c3QgYSBsaXN0IG9mIHF1YWRzLgotICAgIEhpZ2hsaWdodFR5cGUgdHlwZTsK
KyAgICBIaWdobGlnaHRUeXBlIHR5cGUge0hpZ2hsaWdodFR5cGU6Ok5vZGV9OwogICAgIFZlY3Rv
cjxGbG9hdFF1YWQ+IHF1YWRzOwotICAgIGJvb2wgdXNlUGFnZUNvb3JkaW5hdGVzOworICAgIGJv
b2wgdXNlUGFnZUNvb3JkaW5hdGVzIHt0cnVlfTsKIH07CiAKIGNsYXNzIEluc3BlY3Rvck92ZXJs
YXkgewpAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlKCk7CiAg
ICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmKTsKLSAgICB2b2lkIGdldEhpZ2hsaWdodChI
aWdobGlnaHQqLCBDb29yZGluYXRlU3lzdGVtKSBjb25zdDsKKyAgICB2b2lkIGdldEhpZ2hsaWdo
dChIaWdobGlnaHQmLCBDb29yZGluYXRlU3lzdGVtKSBjb25zdDsKIAogICAgIHZvaWQgc2V0UGF1
c2VkSW5EZWJ1Z2dlck1lc3NhZ2UoY29uc3QgU3RyaW5nKik7CiAKQEAgLTEyOSw3ICsxMjksNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKTsKIAot
ICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIaWdo
bGlnaHRlZE5vZGUoKSBjb25zdDsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3Zl
cmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0RGF0YT4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5v
ZGUoKSBjb25zdDsKIAogICAgIHZvaWQgZnJlZVBhZ2UoKTsKIHByaXZhdGU6CkBAIC0xNjEsOCAr
MTYxLDggQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxzdGQ6OmNocm9ubzo6c3Rl
YWR5X2Nsb2NrOjp0aW1lX3BvaW50LCBGbG9hdFJlY3Q+IFRpbWVSZWN0UGFpcjsKICAgICBEZXF1
ZTxUaW1lUmVjdFBhaXI+IG1fcGFpbnRSZWN0czsKICAgICBUaW1lciBtX3BhaW50UmVjdFVwZGF0
ZVRpbWVyOwotICAgIGJvb2wgbV9pbmRpY2F0aW5nOwotICAgIGJvb2wgbV9zaG93aW5nUGFpbnRS
ZWN0czsKKyAgICBib29sIG1faW5kaWNhdGluZyB7ZmFsc2V9OworICAgIGJvb2wgbV9zaG93aW5n
UGFpbnRSZWN0cyB7ZmFsc2V9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpzCmluZGV4IDAy
MTk1YzcwOTE0ZWY1YjExOTMzMzk1OWI4ZmZhNzk1ZWJjM2ZkMzAuLmNhNWIzOThmZjMyZmJkMzc0
NDc2YmEwZTA4MjliZDU4ZTFkNjg0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5UGFnZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuanMKQEAgLTI2MSwzNiArMjYxLDM2IEBAIGZ1bmN0aW9u
IF90cnVuY2F0ZVN0cmluZyh2YWx1ZSwgbWF4TGVuZ3RoKQogICAgIHJldHVybiB2YWx1ZSAmJiB2
YWx1ZS5sZW5ndGggPiBtYXhMZW5ndGggPyB2YWx1ZS5zdWJzdHJpbmcoMCwgNTApICsgIlx1MjAy
NiIgOiB2YWx1ZTsKIH0KIAotZnVuY3Rpb24gX2NyZWF0ZUVsZW1lbnRUaXRsZShlbGVtZW50SW5m
bykKK2Z1bmN0aW9uIF9jcmVhdGVFbGVtZW50VGl0bGUoZWxlbWVudERhdGEpCiB7CiAgICAgdmFy
IGJ1aWxkZXIgPSBuZXcgRE9NQnVpbGRlcigiZGl2IiwgImVsZW1lbnQtdGl0bGUiKTsKICAgICAK
LSAgICBidWlsZGVyLmFwcGVuZFNwYW5JZk5vdE51bGwoInRhZy1uYW1lIiwgZWxlbWVudEluZm8u
dGFnTmFtZSk7Ci0gICAgYnVpbGRlci5hcHBlbmRTcGFuSWZOb3ROdWxsKCJub2RlLWlkIiwgZWxl
bWVudEluZm8uaWRWYWx1ZSwgIiMiKTsKLSAgICBidWlsZGVyLmFwcGVuZFNwYW5JZk5vdE51bGwo
ImNsYXNzLW5hbWUiLCBfdHJ1bmNhdGVTdHJpbmcoZWxlbWVudEluZm8uY2xhc3NOYW1lLCA1MCkp
OworICAgIGJ1aWxkZXIuYXBwZW5kU3BhbklmTm90TnVsbCgidGFnLW5hbWUiLCBlbGVtZW50RGF0
YS50YWdOYW1lKTsKKyAgICBidWlsZGVyLmFwcGVuZFNwYW5JZk5vdE51bGwoIm5vZGUtaWQiLCBl
bGVtZW50RGF0YS5pZFZhbHVlLCAiIyIpOworICAgIGJ1aWxkZXIuYXBwZW5kU3BhbklmTm90TnVs
bCgiY2xhc3MtbmFtZSIsIF90cnVuY2F0ZVN0cmluZyhlbGVtZW50RGF0YS5jbGFzc05hbWUsIDUw
KSk7CiAKICAgICBidWlsZGVyLmFwcGVuZFRleHROb2RlKCIgIik7Ci0gICAgYnVpbGRlci5hcHBl
bmRTcGFuKCJub2RlLXdpZHRoIiwgZWxlbWVudEluZm8ubm9kZVdpZHRoKTsKKyAgICBidWlsZGVy
LmFwcGVuZFNwYW4oIm5vZGUtd2lkdGgiLCBlbGVtZW50RGF0YS5zaXplLndpZHRoKTsKICAgICAv
LyBceGQ3IGlzIHRoZSBjb2RlIGZvciB0aGUgJnRpbWVzOyBIVE1MIGVudGl0eS4KICAgICBidWls
ZGVyLmFwcGVuZFNwYW4oInB4IiwgInB4IFx4ZDcgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRTcGFu
KCJub2RlLWhlaWdodCIsIGVsZW1lbnRJbmZvLm5vZGVIZWlnaHQpOworICAgIGJ1aWxkZXIuYXBw
ZW5kU3Bhbigibm9kZS1oZWlnaHQiLCBlbGVtZW50RGF0YS5zaXplLmhlaWdodCk7CiAgICAgYnVp
bGRlci5hcHBlbmRTcGFuKCJweCIsICJweCIpOwogCi0gICAgYnVpbGRlci5hcHBlbmRQcm9wZXJ0
eUlmTm90TnVsbCgicm9sZS1uYW1lIiwgIlJvbGUiLCBlbGVtZW50SW5mby5yb2xlKTsKLSAgICBi
dWlsZGVyLmFwcGVuZFByb3BlcnR5SWZOb3ROdWxsKCJyZWdpb24tZmxvdy1uYW1lIiwgIlJlZ2lv
biBGbG93IiwgZWxlbWVudEluZm8ucmVnaW9uRmxvd0luZm8gPyBlbGVtZW50SW5mby5yZWdpb25G
bG93SW5mby5uYW1lIDogbnVsbCk7Ci0gICAgYnVpbGRlci5hcHBlbmRQcm9wZXJ0eUlmTm90TnVs
bCgiY29udGVudC1mbG93LW5hbWUiLCAiQ29udGVudCBGbG93IiwgZWxlbWVudEluZm8uY29udGVu
dEZsb3dJbmZvID8gZWxlbWVudEluZm8uY29udGVudEZsb3dJbmZvLm5hbWUgOiBudWxsKTsKKyAg
ICBidWlsZGVyLmFwcGVuZFByb3BlcnR5SWZOb3ROdWxsKCJyb2xlLW5hbWUiLCAiUm9sZSIsIGVs
ZW1lbnREYXRhLnJvbGUpOworICAgIGJ1aWxkZXIuYXBwZW5kUHJvcGVydHlJZk5vdE51bGwoInJl
Z2lvbi1mbG93LW5hbWUiLCAiUmVnaW9uIEZsb3ciLCBlbGVtZW50RGF0YS5yZWdpb25GbG93RGF0
YSA/IGVsZW1lbnREYXRhLnJlZ2lvbkZsb3dEYXRhLm5hbWUgOiBudWxsKTsKKyAgICBidWlsZGVy
LmFwcGVuZFByb3BlcnR5SWZOb3ROdWxsKCJjb250ZW50LWZsb3ctbmFtZSIsICJDb250ZW50IEZs
b3ciLCBlbGVtZW50RGF0YS5jb250ZW50Rmxvd0RhdGEgPyBlbGVtZW50RGF0YS5jb250ZW50Rmxv
d0RhdGEubmFtZSA6IG51bGwpOwogCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZW1l
bnQtdGl0bGUtY29udGFpbmVyIikuYXBwZW5kQ2hpbGQoYnVpbGRlci5lbGVtZW50KTsKIAogICAg
IHJldHVybiBidWlsZGVyLmVsZW1lbnQ7CiB9CiAKLWZ1bmN0aW9uIF9kcmF3RWxlbWVudFRpdGxl
KGVsZW1lbnRJbmZvLCBmcmFnbWVudEhpZ2hsaWdodCwgc2Nyb2xsKQorZnVuY3Rpb24gX2RyYXdF
bGVtZW50VGl0bGUoZWxlbWVudERhdGEsIGZyYWdtZW50SGlnaGxpZ2h0LCBzY3JvbGwpCiB7Ci0g
ICAgaWYgKCFlbGVtZW50SW5mbyB8fCAhZnJhZ21lbnRIaWdobGlnaHQucXVhZHMubGVuZ3RoKQor
ICAgIGlmICghZWxlbWVudERhdGEgfHwgIWZyYWdtZW50SGlnaGxpZ2h0LnF1YWRzLmxlbmd0aCkK
ICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHZhciBlbGVtZW50VGl0bGUgPSBfY3JlYXRlRWxl
bWVudFRpdGxlKGVsZW1lbnRJbmZvKTsKKworICAgIHZhciBlbGVtZW50VGl0bGUgPSBfY3JlYXRl
RWxlbWVudFRpdGxlKGVsZW1lbnREYXRhKTsKIAogICAgIHZhciBtYXJnaW5RdWFkID0gZnJhZ21l
bnRIaWdobGlnaHQucXVhZHNbMF07CiAKQEAgLTMwNSwxMSArMzA1LDEwIEBAIGZ1bmN0aW9uIF9k
cmF3RWxlbWVudFRpdGxlKGVsZW1lbnRJbmZvLCBmcmFnbWVudEhpZ2hsaWdodCwgc2Nyb2xsKQog
ICAgIHZhciByZW5kZXJBcnJvd0Rvd24gPSBmYWxzZTsKIAogICAgIHZhciBib3hYID0gbWFyZ2lu
UXVhZFswXS54OwotICAgIAotICAgIHZhciBjb250YWluaW5nUmVnaW9uID0gZnJhZ21lbnRIaWdo
bGlnaHQucmVnaW9uOwotICAgIGlmIChjb250YWluaW5nUmVnaW9uKSB7CisKKyAgICB2YXIgY2xp
cFF1YWQgPSBmcmFnbWVudEhpZ2hsaWdodC5yZWdpb25DbGlwcGluZ0FyZWE7CisgICAgaWYgKGNs
aXBRdWFkKSB7CiAgICAgICAgIC8vIFJlc3RyaWN0IHRoZSBwb3NpdGlvbiBvZiB0aGUgdGl0bGUg
Ym94IHRvIHRoZSBhcmVhIG9mIHRoZSBjb250YWluaW5nIHJlZ2lvbi4KLSAgICAgICAgdmFyIGNs
aXBRdWFkID0gY29udGFpbmluZ1JlZ2lvbi5xdWFkOwogICAgICAgICBhbmNob3JUb3AgPSBNYXRo
Lm1heChhbmNob3JUb3AsIE1hdGgubWluKGNsaXBRdWFkWzBdLnksIGNsaXBRdWFkWzFdLnksIGNs
aXBRdWFkWzJdLnksIGNsaXBRdWFkWzNdLnkpKTsKICAgICAgICAgYW5jaG9yQm90dG9tID0gTWF0
aC5taW4oYW5jaG9yQm90dG9tLCBNYXRoLm1heChjbGlwUXVhZFswXS55LCBjbGlwUXVhZFsxXS55
LCBjbGlwUXVhZFsyXS55LCBjbGlwUXVhZFszXS55KSk7CiAgICAgICAgIGJveFggPSBNYXRoLm1h
eChib3hYLCBNYXRoLm1pbihjbGlwUXVhZFswXS54LCBjbGlwUXVhZFsxXS54LCBjbGlwUXVhZFsy
XS54LCBjbGlwUXVhZFszXS54KSk7CkBAIC00MzAsOSArNDI5LDkgQEAgZnVuY3Rpb24gX2RyYXdG
cmFnbWVudEhpZ2hsaWdodChoaWdobGlnaHQpCiAKICAgICBjb250ZXh0LnNhdmUoKTsKIAotICAg
IGlmIChoaWdobGlnaHQucmVnaW9uKSB7CisgICAgaWYgKGhpZ2hsaWdodC5yZWdpb25DbGlwcGlu
Z0FyZWEpIHsKICAgICAgICAgLy8gQ2xpcCB0byB0aGUgY29udGFpbmluZyByZWdpb24gdG8gYXZv
aWQgc2hvd2luZyBmcmFnbWVudHMgdGhhdCBhcmUgbm90IHJlbmRlcmVkIGJ5IHRoaXMgcmVnaW9u
LgotICAgICAgICBxdWFkVG9QYXRoKGhpZ2hsaWdodC5yZWdpb24ucXVhZCkuY2xpcCgpOworICAg
ICAgICBxdWFkVG9QYXRoKGhpZ2hsaWdodC5yZWdpb25DbGlwcGluZ0FyZWEpLmNsaXAoKTsKICAg
ICB9CiAKICAgICB2YXIgcXVhZHMgPSBoaWdobGlnaHQucXVhZHMuc2xpY2UoKTsKQEAgLTQ5MSwy
MyArNDkwLDIzIEBAIGZ1bmN0aW9uIGhpZGVQYWdlSW5kaWNhdGlvbigpCiBmdW5jdGlvbiBkcmF3
Tm9kZUhpZ2hsaWdodChoaWdobGlnaHQpCiB7CiAgICAgY29udGV4dC5zYXZlKCk7Ci0gICAgY29u
dGV4dC50cmFuc2xhdGUoLWhpZ2hsaWdodC5zY3JvbGwueCwgLWhpZ2hsaWdodC5zY3JvbGwueSk7
CisgICAgY29udGV4dC50cmFuc2xhdGUoLWhpZ2hsaWdodC5zY3JvbGxPZmZzZXQueCwgLWhpZ2hs
aWdodC5zY3JvbGxPZmZzZXQueSk7CiAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhpZ2hsaWdo
dC5mcmFnbWVudHMubGVuZ3RoOyArK2kpCiAgICAgICAgIF9kcmF3RnJhZ21lbnRIaWdobGlnaHQo
aGlnaGxpZ2h0LmZyYWdtZW50c1tpXSk7CiAKLSAgICBpZiAoaGlnaGxpZ2h0LmVsZW1lbnRJbmZv
ICYmIGhpZ2hsaWdodC5lbGVtZW50SW5mby5yZWdpb25GbG93SW5mbykKLSAgICAgICAgX2RyYXdS
ZWdpb25zSGlnaGxpZ2h0KGhpZ2hsaWdodC5lbGVtZW50SW5mby5yZWdpb25GbG93SW5mby5yZWdp
b25zKTsKKyAgICBpZiAoaGlnaGxpZ2h0LmVsZW1lbnREYXRhICYmIGhpZ2hsaWdodC5lbGVtZW50
RGF0YS5yZWdpb25GbG93RGF0YSkKKyAgICAgICAgX2RyYXdSZWdpb25zSGlnaGxpZ2h0KGhpZ2hs
aWdodC5lbGVtZW50RGF0YS5yZWdpb25GbG93RGF0YS5yZWdpb25zKTsKIAotICAgIGlmIChoaWdo
bGlnaHQuZWxlbWVudEluZm8gJiYgaGlnaGxpZ2h0LmVsZW1lbnRJbmZvLnNoYXBlT3V0c2lkZUlu
Zm8pCi0gICAgICAgIF9kcmF3U2hhcGVIaWdobGlnaHQoaGlnaGxpZ2h0LmVsZW1lbnRJbmZvLnNo
YXBlT3V0c2lkZUluZm8pOworICAgIGlmIChoaWdobGlnaHQuZWxlbWVudERhdGEgJiYgaGlnaGxp
Z2h0LmVsZW1lbnREYXRhLnNoYXBlT3V0c2lkZURhdGEpCisgICAgICAgIF9kcmF3U2hhcGVIaWdo
bGlnaHQoaGlnaGxpZ2h0LmVsZW1lbnREYXRhLnNoYXBlT3V0c2lkZURhdGEpOwogCiAgICAgY29u
dGV4dC5yZXN0b3JlKCk7CiAKICAgICB2YXIgZWxlbWVudFRpdGxlQ29udGFpbmVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImVsZW1lbnQtdGl0bGUtY29udGFpbmVyIik7CiAgICAgZWxlbWVu
dFRpdGxlQ29udGFpbmVyLmlubmVySFRNTCA9ICIiOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
aGlnaGxpZ2h0LmZyYWdtZW50cy5sZW5ndGg7ICsraSkKLSAgICAgICAgX2RyYXdFbGVtZW50VGl0
bGUoaGlnaGxpZ2h0LmVsZW1lbnRJbmZvLCBoaWdobGlnaHQuZnJhZ21lbnRzW2ldLCBoaWdobGln
aHQuc2Nyb2xsKTsKKyAgICAgICAgX2RyYXdFbGVtZW50VGl0bGUoaGlnaGxpZ2h0LmVsZW1lbnRE
YXRhLCBoaWdobGlnaHQuZnJhZ21lbnRzW2ldLCBoaWdobGlnaHQuc2Nyb2xsT2Zmc2V0KTsKIH0K
IAogZnVuY3Rpb24gZHJhd1F1YWRIaWdobGlnaHQoaGlnaGxpZ2h0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IGQyODYzN2Q2MmU2MzFiOTQwOGU5YTM2ODQ3MWY4Nzk5ZjJm
NDM0MjAuLmU5ZmFlZDAxNmU5OTBlNTExMDQ3M2JmZDZmZjEwY2VlNDU4ZmZmYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTc4NSw3ICs3ODUsNyBAQCBSZWY8Q2xpZW50
UmVjdExpc3Q+IEludGVybmFsczo6aW5zcGVjdG9ySGlnaGxpZ2h0UmVjdHMoRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgfQogCiAgICAgSGlnaGxpZ2h0IGhpZ2hsaWdodDsKLSAgICBkb2N1bWVudC0+
cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZ2V0SGlnaGxpZ2h0KCZoaWdobGlnaHQsIElu
c3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0ZW06OlZpZXcpOworICAgIGRvY3VtZW50LT5w
YWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5nZXRIaWdobGlnaHQoaGlnaGxpZ2h0LCBJbnNw
ZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtOjpWaWV3KTsKICAgICByZXR1cm4gQ2xpZW50
UmVjdExpc3Q6OmNyZWF0ZShoaWdobGlnaHQucXVhZHMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZWMpOwpAQCAtODAxLDcgKzgwMSw3IEBAIFN0cmluZyBJbnRlcm5hbHM6Omluc3BlY3Rvckhp
Z2hsaWdodE9iamVjdChFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgZWMgPSBJTlZBTElEX0FD
Q0VTU19FUlI7CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9Ci0gICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gb2JqZWN0ID0gZG9jdW1lbnQtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCk7CisgICAgYXV0byBvYmplY3Qg
PSBkb2N1bWVudC0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuYnVpbGRPYmplY3RGb3JI
aWdobGlnaHRlZE5vZGUoKTsKICAgICByZXR1cm4gb2JqZWN0ID8gb2JqZWN0LT50b0pTT05TdHJp
bmcoKSA6IFN0cmluZygpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZWMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2Vi
S2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4
cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRleCAxYWYxZTM1YWNkZGQ2YjZh
NDQ3ZTE2Mzk3OTkxMjVlNzcxNjZlYWJhLi5lZDQ3NTU2YzMzZDYzNmUxOWY5MWE3YWU5YjFjY2Uy
OGNiNmU2Njg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktp
dEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5p
bgpAQCAtMjA4LDcgKzIwOCw2IEBAIEVYUE9SVFMKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIo
P2l0ZW1AU3RhdGljTm9kZUxpc3RAV2ViQ29yZUBAVUJFUEFWTm9kZUAyQElAWiwgP2l0ZW1AU3Rh
dGljTm9kZUxpc3RAV2ViQ29yZUBAVUVCQVBFQVZOb2RlQDJASUBaKQogICAgICAgICA/c2VsZWN0
VGFnQEhUTUxOYW1lc0BXZWJDb3JlQEAzVkhUTUxRdWFsaWZpZWROYW1lQDJAQgogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9idWlsZE9iamVjdEZvckhp
Z2hsaWdodGVkTm9kZUBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFCRT9BVj8kUmVmUHRy
QFZJbnNwZWN0b3JPYmplY3RASW5zcGVjdG9yQEBAV1RGQEBYWiwgP2J1aWxkT2JqZWN0Rm9ySGln
aGxpZ2h0ZWROb2RlQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUVCQT9BVj8kUmVmUHRy
QFZJbnNwZWN0b3JPYmplY3RASW5zcGVjdG9yQEBAV1RGQEBYWikKICAgICAgICAgc3ltYm9sV2l0
aFBvaW50ZXIoP2dldEhpZ2hsaWdodEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFCRVhQ
QVVIaWdobGlnaHRAMkBXNENvb3JkaW5hdGVTeXN0ZW1ASW5zcGVjdG9yT3ZlcmxheUAyQEBaLCA/
Z2V0SGlnaGxpZ2h0QEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUVCQVhQRUFVSGlnaGxp
Z2h0QDJAVzRDb29yZGluYXRlU3lzdGVtQEluc3BlY3Rvck92ZXJsYXlAMkBAWikKICAgICAgICAg
c3ltYm9sV2l0aFBvaW50ZXIoP2luc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlQEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkBXZWJDb3JlQEBTQVBBVkluc3RydW1lbnRpbmdBZ2VudHNAMkBQQVZQYWdl
QDJAQFosID9pbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZUBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25AV2ViQ29yZUBAU0FQRUFWSW5zdHJ1bWVudGluZ0FnZW50c0AyQFBFQVZQYWdlQDJAQFopCiAg
ICAgICAgID9zX2Zyb250ZW5kQ291bnRlckBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25AV2ViQ29y
ZUBAMEhBCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244847</attachid>
            <date>2015-01-17 17:52:10 -0800</date>
            <delta_ts>2015-01-17 20:32:10 -0800</delta_ts>
            <desc>EWS Round 2</desc>
            <filename>bug-129441-20150117175130.patch</filename>
            <type>text/plain</type>
            <size>56855</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MjFmZWEzN2ZjMTM2NTYyMDM4ODk1N2MxNmUwMTVkNDQzYTZmOTIyLi5iODMyM2FjM2I0ZDdkMjYx
NjgwM2JlODgzYzUxNDNiMjdlOTNhMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNS0wMS0xNyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaGlnaGxpZ2h0IGRhdGEgZm9yIG92ZXJs
YXkgc2hvdWxkIHVzZSBwcm90b2NvbCB0eXBlIGJ1aWxkZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0NDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgQWRkIGEgbmV3IGRvbWFpbiBmb3Igb3Zlcmxh
eSB0eXBlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL092ZXJsYXlUeXBlcy5q
c29uOiBBZGRlZC4KKwogMjAxNS0wMS0xNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxl
LmNvbT4KIAogICAgICAgICBDcmFzaCBpbiBKU1Njb3BlOjpyZXNvbHZlKCkgb24gdG9vbHMudXBz
LmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDhiNjMyZjAzNDFkZjE5OTFkYTdjYzM0MTk3MzQzZGQ3Zjc1NmMy
ZDUuLmY5M2Q4YTA4MzRmMmExNWVjOGNjMWU0OTUxYTZjMWE5MmRjZDliNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw3MiBAQAorMjAxNS0wMS0xNyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2Fz
aGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaGlnaGxpZ2h0IGRhdGEgZm9y
IG92ZXJsYXkgc2hvdWxkIHVzZSBwcm90b2NvbCB0eXBlIGJ1aWxkZXJzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0NDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgQXMgYSBmaXJzdCBzdGVwIHRvd2Fy
ZHMgY2xlYW5pbmcgdXAgdGhlIGluc3BlY3RvciBvdmVybGF5LCBjb252ZXJ0IGhpZ2hsaWdodAor
ICAgICAgICBkYXRhIGNvbnN0cnVjdGlvbiB0byB1c2UgcHJvdG9jb2wgdHlwZSBidWlsZGVycy4g
SXQncyBub3cgcmVhbGx5IG9idmlvdXMgd2hhdAorICAgICAgICBkYXRhIGlzIGJlaW5nIHNlbnQg
dG8gdGhlIGluc3BlY3RvciBvdmVybGF5IHBhZ2UuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgcGF2
ZXMgdGhlIHdheSB0b3dhcmRzIHVzaW5nIGluc3BlY3RvciBwcm90b2NvbCBjb21tYW5kcyBhbmQg
ZXZlbnRzCisgICAgICAgIGlmIHdlIHdhbnQgdG8gc3VwcG9ydCBtb3JlIGludGVyYWN0aXZlIGZ1
bmN0aW9uYWxpdHkgaW4gdGhlIGluc3BlY3RvciBvdmVybGF5LgorCisgICAgICAgIFRoaXMgcGF0
Y2ggbWFrZXMgYSBmZXcgc3R5bGUgY2xlYW51cHMsIHN1Y2ggYXMgc3RhbmRhcmRpemluZyB2YXJp
YWJsZSBuYW1lcywKKyAgICAgICAgdXNpbmcgZGVmYXVsdCBtZW1iZXIgaW5pdGlhbGl6ZXJzLCBw
YXNzaW5nIGJ5IHJlZmVyZW5jZSwgYW5kIGZpeGluZyBjYXN0cy4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRIaWdobGlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdCk6IERlbGV0
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZFJlbmRlcmVySGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkTm9kZUhpZ2hsaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFF1YWRIaWdobGlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6SW5zcGVjdG9yT3ZlcmxheSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JPdmVybGF5OjpnZXRIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
YnVpbGRPYmplY3RGb3JQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRBcnJheUZvclF1YWQpOgorICAgICAgICAoV2Vi
Q29yZTo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRP
YmplY3RGb3JSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JGbG93UmVn
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6YnVpbGRRdWFkT2JqZWN0Rm9yQ1NTUmVnaW9uQ29udGVudENsaXApOgorICAgICAg
ICBTaW1wbGlmeSBob3cgdGhlIGNsaXBwaW5nIGFyZWEgaXMgZW5jb2RlZC4gSXQncyBub3cgJ3Jl
Z2lvbkNsaXBwaW5nQXJlYScKKyAgICAgICAgc3RvcmVkIG9uIGEgRnJhZ21lbnRIaWdobGlnaHRE
YXRhIGluc3RhbmNlLgorCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5Ojp1cGRh
dGVQYWludFJlY3RzVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVy
bGF5OjpkcmF3UGFpbnRSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEFycmF5Rm9yUmVu
ZGVyZXJGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUGF0aENvbW1hbmRBbmRQ
b2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUGF0aFNlZ21lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6YnVpbGRPYmplY3RGb3JTaGFwZU91dHNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6
YnVpbGRPYmplY3RGb3JFbGVtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JP
dmVybGF5OjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3Tm9kZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3UXVhZEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JPdmVybGF5OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVj
dEZvclJlZ2lvbkhpZ2hsaWdodCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpidWlsZE9i
amVjdEZvckNTU1JlZ2lvbnNIaWdobGlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
YnVpbGRPYmplY3RGb3JDU1NSZWdpb25Db250ZW50Q2xpcCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpidWlsZE9iamVjdEZvclJlbmRlcmVyRnJhZ21lbnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudEluZm8pOiBEZWxldGVkLgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5Lmg6CisgICAgICAgIChXZWJDb3JlOjpIaWdo
bGlnaHQ6OkhpZ2hsaWdodCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQ
YWdlLmpzOgorICAgICAgICAoX2NyZWF0ZUVsZW1lbnRUaXRsZSk6CisgICAgICAgIChfZHJhd0Vs
ZW1lbnRUaXRsZSk6CisgICAgICAgIChfZHJhd0ZyYWdtZW50SGlnaGxpZ2h0KToKKyAgICAgICAg
KGRyYXdOb2RlSGlnaGxpZ2h0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omluc3BlY3RvckhpZ2hsaWdodFJlY3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aW5zcGVjdG9ySGlnaGxpZ2h0T2JqZWN0KToKKwog
MjAxNS0wMS0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtTVkcgLT4gT1RGIENvbnZlcnRlcl0gQ3Jhc2hlcyB3aGVuIFNWRyBmb250IGlzIGlu
dmFsaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNzgwYmM4ODlkZjA2YTJhZDNkNzExNThjMTJhOTMwNjgyNjA4ZmI0
OC4uZTU4ZWFjOGViY2JjN2EyMmNkNWMzNzgwNzc0MTk4NWRlOWY1ZWFhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAxNS0wMS0xNyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGlu
Z3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaGlnaGxpZ2h0IGRhdGEgZm9yIG92
ZXJsYXkgc2hvdWxkIHVzZSBwcm90b2NvbCB0eXBlIGJ1aWxkZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0NDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdEV4
cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbjogVXBkYXRlIHN5bWJvbC4KKwogMjAx
NS0wMS0xNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2luXSBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMTc4NDU5IGFuZCByMTc4NDYyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDZiMjE1MjBmZjJhYzhiZjUyNjVlYjM1
ODAwMTYyZjZmOTEyYzk3YzAuLjQ2YWU0NGVlMjU5M2I2ODIzNjMyZDFlOTgwMmI3YWI1NmExZjIz
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwMjQsNiArMTAyNCw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9JTlNQRUNUT1JfRE9NQUlOUwogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9pbnNwZWN0b3IvcHJvdG9jb2wvSW5zcGVjdG9yLmpzb24KICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0xheWVyVHJlZS5qc29uCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KKyAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL092ZXJsYXlUeXBlcy5qc29u
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb24K
ICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNv
bgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvcHJvdG9jb2wvVGltZWxpbmUu
anNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA1MjQy
MWVjODgxMTUxYjE2YTkzZDU0NWZkOWM1NDQ5YWMxOTg3MDk3Li4xMmFmZWEyNGE2ZWU1NmE2MGRj
NWI4MmVmYmYwNmM0MmFiMzBkYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtMTI1LDYgKzEyNSw3IEBAIElOU1BFQ1RPUl9ET01BSU5TID0gXAogICAg
ICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9JbnNwZWN0b3IuanNvbiBcCiAg
ICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0xheWVyVHJlZS5qc29uIFwK
ICAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uIFwK
KyAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvT3ZlcmxheVR5cGVzLmpz
b24gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb24g
XAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpzb24g
XAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9UaW1lbGluZS5qc29u
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
T3ZlcmxheVR5cGVzLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL092ZXJsYXlUeXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3ZWZhNzVlZmNmYWVlNzQ0OGI2Njlm
ZjE4MmM0YWIwMGRhYjkxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3Byb3RvY29sL092ZXJsYXlUeXBlcy5qc29uCkBAIC0wLDAgKzEsMTI5IEBA
Cit7CisgICAgImRvbWFpbiI6ICJPdmVybGF5VHlwZXMiLAorICAgICJkZXNjcmlwdGlvbiI6ICJF
eHBvc2VzIHR5cGVzIHRvIGJlIHVzZWQgYnkgdGhlIGluc3BlY3RvciBvdmVybGF5LiIsCisgICAg
InR5cGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiUG9pbnQiLAorICAgICAg
ICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAieCIsICJ0eXBlIjogIm51bWJlciIgfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInkiLCAidHlwZSI6ICJudW1iZXIiIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIlNpemUiLAorICAgICAg
ICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAid2lkdGgiLCAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVpZ2h0IiwgInR5cGUiOiAiaW50ZWdlciIgfQorICAg
ICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiUXVh
ZCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBxdWFkIGlzIGEgY29sbGVjdGlvbiBv
ZiA0IHBvaW50cy4gV2hlbiBpbml0aWFsaXplZCBmcm9tIGEgcmVjdCwgdGhlIHBvaW50cyBhcmUg
aW4gY2xvY2t3aXNlIG9yZGVyIGZyb20gdG9wIGxlZnQuIiwKKyAgICAgICAgICAgICJ0eXBlIjog
ImFycmF5IiwKKyAgICAgICAgICAgICJpdGVtcyI6IHsgIiRyZWYiOiAiUG9pbnQiIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIlJlY3QiLAorICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIkEgcmVjdGFuZ2xlIHNwZWNpZmllZCBieSBhIHJlZmVyZW5jZSBjb29y
ZGluYXRlIGFuZCB3aWR0aC9oZWlnaHQgb2Zmc2V0cy4iLAorICAgICAgICAgICAgInR5cGUiOiAi
b2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAieCIsICJ0eXBlIjogIm51bWJlciIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInkiLCAidHlwZSI6ICJudW1iZXIiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ3
aWR0aCIsICJ0eXBlIjogIm51bWJlciIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhl
aWdodCIsICJ0eXBlIjogIm51bWJlciIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgICAiaWQiOiAiUmVnaW9uIiwKKyAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJBIHNpbmdsZSByZWdpb24gaW4gYSBmbG93IHRocmVhZC4iLAorICAgICAgICAgICAg
InR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiYm9yZGVyUXVhZCIsICIkcmVmIjogIlF1YWQiIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJpbmNvbWluZ1F1YWQiLCAiJHJlZiI6ICJRdWFkIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAib3V0Z29pbmdRdWFkIiwgIiRyZWYiOiAiUXVhZCIgfSwK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzSGlnaGxpZ2h0ZWQiLCAidHlwZSI6ICJib29s
ZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJEaXNwbGF5UGF0aCIsCisgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiQSB2ZWN0b3IgcGF0aCBkZXNjcmliZWQgdXNpbmcgU1ZHIHBhdGggc3ludGF4
LiIsCisgICAgICAgICAgICAidHlwZSI6ICJhcnJheSIsCisgICAgICAgICAgICAiaXRlbXMiOiB7
ICJ0eXBlIjogImFueSIgfQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQi
OiAiUmVnaW9uRmxvd0RhdGEiLAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAg
ICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVnaW9u
cyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJSZWdpb24ifSB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZSIsICJ0eXBlIjogInN0cmluZyIgfQorICAgICAg
ICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiQ29udGVu
dEZsb3dEYXRhIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAi
cHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6
ICJzdHJpbmciIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgImlkIjogIlNoYXBlT3V0c2lkZURhdGEiLAorICAgICAgICAgICAgInR5cGUiOiAib2Jq
ZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiYm91bmRzIiwgIiRyZWYiOiAiUXVhZCIsICJkZXNjcmlwdGlvbiI6ICJCb3VuZHMgZm9y
IHRoZSBzaGFwZS1vdXRzaWRlIHBhdGhzLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InNoYXBlIiwgIiRyZWYiOiAiRGlzcGxheVBhdGgiLCAiZGVzY3JpcHRpb24iOiAiUGF0aCBmb3Ig
dGhlIGVsZW1lbnQncyBzaGFwZS4iLCAib3B0aW9uYWwiOiB0cnVlIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJtYXJnaW5TaGFwZSIsICIkcmVmIjogIkRpc3BsYXlQYXRoIiwgImRlc2Ny
aXB0aW9uIjogIlBhdGggZm9yIHRoZSBlbGVtZW50J3MgbWFyZ2luIHNoYXBlLiIsICJvcHRpb25h
bCI6IHRydWUgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgICAiaWQiOiAiRWxlbWVudERhdGEiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRh
dGEgdGhhdCBkZXNjcmliZXMgYW4gZWxlbWVudCB0byBiZSBoaWdobGlnaHRlZC4iLAorICAgICAg
ICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFnTmFtZSIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImlkVmFsdWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIHZhbHVlIG9mIHRoZSBlbGVtZW50J3MgJ2lkJyBhdHRyaWJ1dGUuIiB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2xhc3NOYW1lIiwgInR5cGUiOiAic3RyaW5n
IiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2l6ZSIs
ICIkcmVmIjogIlNpemUiLCAib3B0aW9uYWwiOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJyb2xlIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkNvbXB1dGVk
IGFjY2Vzc2liaWxpdHkgcm9sZSBmb3IgdGhlIGVsZW1lbnQuIiwgIm9wdGlvbmFsIjogdHJ1ZSB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVnaW9uRmxvd0RhdGEiLCAiJHJlZiI6ICJS
ZWdpb25GbG93RGF0YSIsICJvcHRpb25hbCI6IHRydWUgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImNvbnRlbnRGbG93RGF0YSIsICIkcmVmIjogIkNvbnRlbnRGbG93RGF0YSIsICJvcHRp
b25hbCI6IHRydWUgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNoYXBlT3V0c2lkZURh
dGEiLCAiJHJlZiI6ICJTaGFwZU91dHNpZGVEYXRhIiwgIm9wdGlvbmFsIjogdHJ1ZSB9CisgICAg
ICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJGcmFn
bWVudEhpZ2hsaWdodERhdGEiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRhdGEgcmVx
dWlyZWQgdG8gaGlnaGxpZ2h0IG11bHRpcGxlIHF1YWRzLiIsCisgICAgICAgICAgICAidHlwZSI6
ICJvYmplY3QiLAorICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJxdWFkcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJR
dWFkIiB9LCAiZGVzY3JpcHRpb24iOiAiUXVhZHMgZm9yIHdoaWNoIHRoZSBoaWdobGlnaHQgc2hv
dWxkIGJlIGFwcGxpZWQuIn0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50Q29s
b3IiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250
ZW50T3V0bGluZUNvbG9yIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAicGFkZGluZ0NvbG9yIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiYm9yZGVyQ29sb3IiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJtYXJnaW5Db2xvciIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInJlZ2lvbkNsaXBwaW5nQXJlYSIsICIkcmVmIjogIlF1
YWQiLCAib3B0aW9uYWwiOiB0cnVlIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgImlkIjogIk5vZGVIaWdobGlnaHREYXRhIiwKKyAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJEYXRhIHJlcXVpcmVkIHRvIGhpZ2hsaWdodCBhIERPTSBub2RlLiIs
CisgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAgInByb3BlcnRpZXMi
OiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzY3JvbGxPZmZzZXQiLCAiJHJlZiI6ICJQ
b2ludCIsICJkZXNjcmlwdGlvbiI6ICJTY3JvbGwgb2Zmc2V0IGZvciB0aGUgTWFpbkZyYW1lJ3Mg
RnJhbWVWaWV3IHRoYXQgaXMgc2hhcmVkIGFjcm9zcyBhbGwgcXVhZHMuIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZnJhZ21lbnRzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7
ICIkcmVmIjogIkZyYWdtZW50SGlnaGxpZ2h0RGF0YSIgfSB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiZWxlbWVudERhdGEiLCAiJHJlZiI6ICJFbGVtZW50RGF0YSIsICJvcHRpb25hbCI6
IHRydWUgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICAiaWQiOiAiT3ZlcmxheUNvbmZpZ3VyYXRpb24iLAorICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIkRhdGEgcmVxdWlyZWQgdG8gY29uZmlndXJlIHRoZSBvdmVybGF5J3Mgc2l6ZSBhbmQgc2Nh
bGluZyBiZWhhdmlvci4iLAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAg
ICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGV2aWNlU2Nh
bGVGYWN0b3IiLCAidHlwZSI6ICJudW1iZXIiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ2aWV3cG9ydFNpemUiLCAiJHJlZiI6ICJTaXplIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZnJhbWVWaWV3RnVsbFNpemUiLCAiJHJlZiI6ICJTaXplIiB9CisgICAgICAgICAgICBd
CisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDY5ZWMyMWMzNDc1
ZGZhNGNhZDNhMTY3ODQyNDQzMTI4MmE3OTRjMDAuLjdkMTMyNTY3M2UxODQwMDk0YmJhZWVkZWM3
MGQ4YzRmOWI2MGZhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xODU5LDcgKzE4NTksNyBA
QCBfX1pOSzdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMzNhbGxvd3NOZXdBbmltYXRpb25z
V2hpbGVTdXNwZW5kZWRFdgogX19aTks3V2ViQ29yZTE5SFRNTE9wdEdyb3VwRWxlbWVudDE0Z3Jv
dXBMYWJlbFRleHRFdgogX19aTks3V2ViQ29yZTE5SFRNTFRleHRBcmVhRWxlbWVudDV2YWx1ZUV2
CiBfX1pOSzdXZWJDb3JlMTlJREJEYXRhYmFzZU1ldGFkYXRhMTJpc29sYXRlZENvcHlFdgotX19a
Tks3V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjEyZ2V0SGlnaGxpZ2h0RVBOU185SGlnaGxp
Z2h0RU5TXzE2SW5zcGVjdG9yT3ZlcmxheTE2Q29vcmRpbmF0ZVN5c3RlbUUKK19fWk5LN1dlYkNv
cmUxOUluc3BlY3RvckNvbnRyb2xsZXIxMmdldEhpZ2hsaWdodEVSTlNfOUhpZ2hsaWdodEVOU18x
Nkluc3BlY3Rvck92ZXJsYXkxNkNvb3JkaW5hdGVTeXN0ZW1FCiBfX1pOSzdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMjlidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZUV2CiBfX1pOSzdX
ZWJDb3JlMTlNZWRpYVNlc3Npb25NYW5hZ2VyMzBhcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91
bmRFdgogX19aTks3V2ViQ29yZTE5TWVkaWFTZXNzaW9uTWFuYWdlcjMwYXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAppbmRleCAwODkyYTIwOTlmNWRkNmY0MDk1YTg2NjAxYzYzOWE5NmIx
NDIzM2MwLi4yMDkxZjFjNzZlOTZkZjExY2NlOTQ2ZGUxZGY0ZTgzYTY0YzQ4OGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0z
MjEsMTIgKzMyMSwxMiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRyYXdIaWdobGlnaHQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIG1fb3ZlcmxheS0+cGFpbnQoY29u
dGV4dCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0SGlnaGxpZ2h0KEhpZ2hs
aWdodCogaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtIGNvb3Jk
aW5hdGVTeXN0ZW0pIGNvbnN0Cit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmdldEhpZ2hsaWdo
dChIaWdobGlnaHQmIGhpZ2hsaWdodCwgSW5zcGVjdG9yT3ZlcmxheTo6Q29vcmRpbmF0ZVN5c3Rl
bSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIG1fb3ZlcmxheS0+Z2V0SGlnaGxpZ2h0
KGhpZ2hsaWdodCwgY29vcmRpbmF0ZVN5c3RlbSk7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IEluc3BlY3RvckNvbnRyb2xsZXI6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkg
Y29uc3QKK1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdo
bGlnaHREYXRhPiBJbnNwZWN0b3JDb250cm9sbGVyOjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVk
Tm9kZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fb3ZlcmxheS0+YnVpbGRPYmplY3RGb3JIaWdo
bGlnaHRlZE5vZGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oCmluZGV4IDM4YWVlYWFhODU4YWRjMDI2ZGQ1Mzk1YjIwMDQxOWRiYmJlMTcy
YWQuLjNkMzRhZGY0YzhiYTMzODIxZmFkZWY2MjQzZWY5ZTFmNjI1YTI3YTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDgsNiArNDgs
MTIgQEAgY2xhc3MgSW5zcGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEluc3BlY3Rvck9i
amVjdDsKKworbmFtZXNwYWNlIFByb3RvY29sIHsKK25hbWVzcGFjZSBPdmVybGF5VHlwZXMgewor
Y2xhc3MgTm9kZUhpZ2hsaWdodERhdGE7Cit9Cit9CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTEwNCwxMyArMTEwLDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5zcGVjdChOb2RlKik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCos
IEluc3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZ2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCYsIEluc3BlY3Rvck92ZXJsYXk6OkNv
b3JkaW5hdGVTeXN0ZW0pIGNvbnN0OwogICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwogICAgIE5v
ZGUqIGhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJv
b2wpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdo
bGlnaHREYXRhPiBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0OwogCiAgICAg
Ym9vbCBpc1VuZGVyVGVzdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNVbmRlclRlc3Q7IH0KICAgICB2
b2lkIHNldElzVW5kZXJUZXN0KGJvb2wgaXNVbmRlclRlc3QpIHsgbV9pc1VuZGVyVGVzdCA9IGlz
VW5kZXJUZXN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5jcHAKaW5kZXggMjk0YzA0ZDQxZjQzZjc3ODRmMGQ2MDQ5ODI3NGMwYTc2Y2JjM2VmMS4uZmQy
ZmNkZDY4MjJjYWJhNmEzNmUzMjQ5MmFhYjg1Nzc2NzNmOGMyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtNTcsNiArNTcsNyBAQAogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclBy
b3RvY29sT2JqZWN0cy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTgwLDEzICs4MSwxMyBA
QCBzdGF0aWMgdm9pZCBjb250ZW50c1F1YWRUb1BhZ2UoY29uc3QgRnJhbWVWaWV3KiBtYWluVmll
dywgY29uc3QgRnJhbWVWaWV3KiB2aWV3LAogICAgIGNvbnRlbnRzUXVhZFRvQ29vcmRpbmF0ZVN5
c3RlbShtYWluVmlldywgdmlldywgcXVhZCwgSW5zcGVjdG9yT3ZlcmxheTo6Q29vcmRpbmF0ZVN5
c3RlbTo6Vmlldyk7CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkUmVuZGVyZXJIaWdobGlnaHQoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyUmVnaW9uKiByZWdpb24sIGNvbnN0IEhpZ2hsaWdo
dENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQqIGhpZ2hsaWdodCwgSW5zcGVjdG9y
T3ZlcmxheTo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKQorc3RhdGljIHZvaWQg
YnVpbGRSZW5kZXJlckhpZ2hsaWdodChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJSZWdp
b24qIHJlZ2lvbiwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcsIEhpZ2hs
aWdodCYgaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtIGNvb3Jk
aW5hdGVTeXN0ZW0pCiB7CiAgICAgRnJhbWUqIGNvbnRhaW5pbmdGcmFtZSA9IHJlbmRlcmVyLT5k
b2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFjb250YWluaW5nRnJhbWUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGhpZ2hsaWdodC0+c2V0RGF0YUZyb21Db25maWcoaGlnaGxpZ2h0Q29uZmln
KTsKKyAgICBoaWdobGlnaHQuc2V0RGF0YUZyb21Db25maWcoaGlnaGxpZ2h0Q29uZmlnKTsKICAg
ICBGcmFtZVZpZXcqIGNvbnRhaW5pbmdWaWV3ID0gY29udGFpbmluZ0ZyYW1lLT52aWV3KCk7CiAg
ICAgRnJhbWVWaWV3KiBtYWluVmlldyA9IGNvbnRhaW5pbmdGcmFtZS0+cGFnZSgpLT5tYWluRnJh
bWUoKS52aWV3KCk7CiAKQEAgLTk0LDEwICs5NSwxMCBAQCBzdGF0aWMgdm9pZCBidWlsZFJlbmRl
cmVySGlnaGxpZ2h0KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlbmRlclJlZ2lvbiogcmVnaW9u
LAogICAgIGJvb2wgaXNTVkdSZW5kZXJlciA9IHJlbmRlcmVyLT5ub2RlKCkgJiYgcmVuZGVyZXIt
Pm5vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgIXJlbmRlcmVyLT5pc1NWR1Jvb3QoKTsKIAogICAg
IGlmIChpc1NWR1JlbmRlcmVyKSB7Ci0gICAgICAgIGhpZ2hsaWdodC0+dHlwZSA9IEhpZ2hsaWdo
dFR5cGVSZWN0czsKLSAgICAgICAgcmVuZGVyZXItPmFic29sdXRlUXVhZHMoaGlnaGxpZ2h0LT5x
dWFkcyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaGlnaGxpZ2h0LT5xdWFkcy5z
aXplKCk7ICsraSkKLSAgICAgICAgICAgIGNvbnRlbnRzUXVhZFRvQ29vcmRpbmF0ZVN5c3RlbSht
YWluVmlldywgY29udGFpbmluZ1ZpZXcsIGhpZ2hsaWdodC0+cXVhZHNbaV0sIGNvb3JkaW5hdGVT
eXN0ZW0pOworICAgICAgICBoaWdobGlnaHQudHlwZSA9IEhpZ2hsaWdodFR5cGU6OlJlY3RzOwor
ICAgICAgICByZW5kZXJlci0+YWJzb2x1dGVRdWFkcyhoaWdobGlnaHQucXVhZHMpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhpZ2hsaWdodC5xdWFkcy5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgIGNvbnRlbnRzUXVhZFRvQ29vcmRpbmF0ZVN5c3RlbShtYWluVmlldywgY29udGFp
bmluZ1ZpZXcsIGhpZ2hsaWdodC5xdWFkc1tpXSwgY29vcmRpbmF0ZVN5c3RlbSk7CiAgICAgfSBl
bHNlIGlmIChpczxSZW5kZXJCb3g+KCpyZW5kZXJlcikgfHwgaXM8UmVuZGVySW5saW5lPigqcmVu
ZGVyZXIpKSB7CiAgICAgICAgIExheW91dFJlY3QgY29udGVudEJveDsKICAgICAgICAgTGF5b3V0
UmVjdCBwYWRkaW5nQm94OwpAQCAtMTc4LDM1ICsxNzksMzQgQEAgc3RhdGljIHZvaWQgYnVpbGRS
ZW5kZXJlckhpZ2hsaWdodChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJSZWdpb24qIHJl
Z2lvbiwKICAgICAgICAgY29udGVudHNRdWFkVG9Db29yZGluYXRlU3lzdGVtKG1haW5WaWV3LCBj
b250YWluaW5nVmlldywgYWJzQm9yZGVyUXVhZCwgY29vcmRpbmF0ZVN5c3RlbSk7CiAgICAgICAg
IGNvbnRlbnRzUXVhZFRvQ29vcmRpbmF0ZVN5c3RlbShtYWluVmlldywgY29udGFpbmluZ1ZpZXcs
IGFic01hcmdpblF1YWQsIGNvb3JkaW5hdGVTeXN0ZW0pOwogCi0gICAgICAgIGhpZ2hsaWdodC0+
dHlwZSA9IEhpZ2hsaWdodFR5cGVOb2RlOwotICAgICAgICBoaWdobGlnaHQtPnF1YWRzLmFwcGVu
ZChhYnNNYXJnaW5RdWFkKTsKLSAgICAgICAgaGlnaGxpZ2h0LT5xdWFkcy5hcHBlbmQoYWJzQm9y
ZGVyUXVhZCk7Ci0gICAgICAgIGhpZ2hsaWdodC0+cXVhZHMuYXBwZW5kKGFic1BhZGRpbmdRdWFk
KTsKLSAgICAgICAgaGlnaGxpZ2h0LT5xdWFkcy5hcHBlbmQoYWJzQ29udGVudFF1YWQpOworICAg
ICAgICBoaWdobGlnaHQudHlwZSA9IEhpZ2hsaWdodFR5cGU6Ok5vZGU7CisgICAgICAgIGhpZ2hs
aWdodC5xdWFkcy5hcHBlbmQoYWJzTWFyZ2luUXVhZCk7CisgICAgICAgIGhpZ2hsaWdodC5xdWFk
cy5hcHBlbmQoYWJzQm9yZGVyUXVhZCk7CisgICAgICAgIGhpZ2hsaWdodC5xdWFkcy5hcHBlbmQo
YWJzUGFkZGluZ1F1YWQpOworICAgICAgICBoaWdobGlnaHQucXVhZHMuYXBwZW5kKGFic0NvbnRl
bnRRdWFkKTsKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkTm9kZUhpZ2hsaWdodChOb2Rl
KiBub2RlLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdo
bGlnaHRDb25maWcsIEhpZ2hsaWdodCogaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29y
ZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pCitzdGF0aWMgdm9pZCBidWlsZE5vZGVIaWdo
bGlnaHQoTm9kZSYgbm9kZSwgUmVuZGVyUmVnaW9uKiByZWdpb24sIGNvbnN0IEhpZ2hsaWdodENv
bmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQmIGhpZ2hsaWdodCwgSW5zcGVjdG9yT3Zl
cmxheTo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKQogewotICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0
dXJuOworCiAgICAgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChyZW5kZXJlciwgcmVnaW9uLCBoaWdo
bGlnaHRDb25maWcsIGhpZ2hsaWdodCwgY29vcmRpbmF0ZVN5c3RlbSk7CiB9CiAKLXN0YXRpYyB2
b2lkIGJ1aWxkUXVhZEhpZ2hsaWdodChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IEhpZ2hs
aWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQgKmhpZ2hsaWdodCkKK3N0YXRp
YyB2b2lkIGJ1aWxkUXVhZEhpZ2hsaWdodChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IEhp
Z2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQmIGhpZ2hsaWdodCkKIHsK
LSAgICBoaWdobGlnaHQtPnNldERhdGFGcm9tQ29uZmlnKGhpZ2hsaWdodENvbmZpZyk7Ci0gICAg
aGlnaGxpZ2h0LT50eXBlID0gSGlnaGxpZ2h0VHlwZVJlY3RzOwotICAgIGhpZ2hsaWdodC0+cXVh
ZHMuYXBwZW5kKHF1YWQpOworICAgIGhpZ2hsaWdodC5zZXREYXRhRnJvbUNvbmZpZyhoaWdobGln
aHRDb25maWcpOworICAgIGhpZ2hsaWdodC50eXBlID0gSGlnaGxpZ2h0VHlwZTo6UmVjdHM7Cisg
ICAgaGlnaGxpZ2h0LnF1YWRzLmFwcGVuZChxdWFkKTsKIH0KIAogSW5zcGVjdG9yT3ZlcmxheTo6
SW5zcGVjdG9yT3ZlcmxheShQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAg
ICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9wYWludFJl
Y3RVcGRhdGVUaW1lcigqdGhpcywgJkluc3BlY3Rvck92ZXJsYXk6OnVwZGF0ZVBhaW50UmVjdHNU
aW1lckZpcmVkKQotICAgICwgbV9pbmRpY2F0aW5nKGZhbHNlKQotICAgICwgbV9zaG93aW5nUGFp
bnRSZWN0cyhmYWxzZSkKIHsKIH0KIApAQCAtMjI1LDE0ICsyMjUsMTQgQEAgdm9pZCBJbnNwZWN0
b3JPdmVybGF5OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgdmlldy0+cGFp
bnQoJmNvbnRleHQsIEludFJlY3QoMCwgMCwgdmlldy0+d2lkdGgoKSwgdmlldy0+aGVpZ2h0KCkp
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpnZXRIaWdobGlnaHQoSGlnaGxpZ2h0KiBo
aWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5
c3RlbSkgY29uc3QKK3ZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KEhpZ2hsaWdo
dCYgaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5h
dGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgaWYgKCFtX2hpZ2hsaWdodE5vZGUgJiYgIW1faGlnaGxp
Z2h0UXVhZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaGlnaGxpZ2h0LT50eXBlID0gSGlnaGxp
Z2h0VHlwZVJlY3RzOworICAgIGhpZ2hsaWdodC50eXBlID0gSGlnaGxpZ2h0VHlwZTo6UmVjdHM7
CiAgICAgaWYgKG1faGlnaGxpZ2h0Tm9kZSkKLSAgICAgICAgYnVpbGROb2RlSGlnaGxpZ2h0KG1f
aGlnaGxpZ2h0Tm9kZS5nZXQoKSwgbnVsbHB0ciwgbV9ub2RlSGlnaGxpZ2h0Q29uZmlnLCBoaWdo
bGlnaHQsIGNvb3JkaW5hdGVTeXN0ZW0pOworICAgICAgICBidWlsZE5vZGVIaWdobGlnaHQoKm1f
aGlnaGxpZ2h0Tm9kZSwgbnVsbHB0ciwgbV9ub2RlSGlnaGxpZ2h0Q29uZmlnLCBoaWdobGlnaHQs
IGNvb3JkaW5hdGVTeXN0ZW0pOwogICAgIGVsc2UKICAgICAgICAgYnVpbGRRdWFkSGlnaGxpZ2h0
KCptX2hpZ2hsaWdodFF1YWQsIG1fcXVhZEhpZ2hsaWdodENvbmZpZywgaGlnaGxpZ2h0KTsKIH0K
QEAgLTMzMSw1MCArMzMxLDUxIEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6dXBkYXRlKCkKICAg
ICBmb3JjZVBhaW50KCk7CiB9CiAKLXN0YXRpYyBSZWY8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9i
amVjdEZvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQorc3RhdGljIFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlBvaW50PiBidWlsZE9iamVjdEZvclBvaW50KGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50KQogewotICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IG9iamVj
dCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgb2JqZWN0LT5zZXREb3VibGUoQVND
SUlMaXRlcmFsKCJ4IiksIHBvaW50LngoKSk7Ci0gICAgb2JqZWN0LT5zZXREb3VibGUoQVNDSUlM
aXRlcmFsKCJ5IiksIHBvaW50LnkoKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShvYmplY3QpOwor
ICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlBvaW50OjpjcmVh
dGUoKQorICAgICAgICAuc2V0WChwb2ludC54KCkpCisgICAgICAgIC5zZXRZKHBvaW50LnkoKSkK
KyAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGJ1
aWxkT2JqZWN0Rm9yUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCitzdGF0aWMgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UmVjdD4gYnVpbGRPYmplY3RGb3JSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Qg
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG9iamVjdC0+c2V0RG91YmxlKEFTQ0lJ
TGl0ZXJhbCgieCIpLCByZWN0LngoKSk7Ci0gICAgb2JqZWN0LT5zZXREb3VibGUoQVNDSUlMaXRl
cmFsKCJ5IiksIHJlY3QueSgpKTsKLSAgICBvYmplY3QtPnNldERvdWJsZShBU0NJSUxpdGVyYWwo
IndpZHRoIiksIHJlY3Qud2lkdGgoKSk7Ci0gICAgb2JqZWN0LT5zZXREb3VibGUoQVNDSUlMaXRl
cmFsKCJoZWlnaHQiKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShvYmpl
Y3QpOworICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlY3Q6
OmNyZWF0ZSgpCisgICAgICAgIC5zZXRYKHJlY3QueCgpKQorICAgICAgICAuc2V0WShyZWN0Lnko
KSkKKyAgICAgICAgLnNldFdpZHRoKHJlY3Qud2lkdGgoKSkKKyAgICAgICAgLnNldEhlaWdodChy
ZWN0LmhlaWdodCgpKQorICAgICAgICAucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUmVmPEluc3Bl
Y3RvckFycmF5PiBidWlsZEFycmF5Rm9yUXVhZChjb25zdCBGbG9hdFF1YWQmIHF1YWQpCitzdGF0
aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UXVhZD4gYnVpbGRBcnJh
eUZvclF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQogewotICAgIFJlZjxJbnNwZWN0b3JBcnJh
eT4gYXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7Ci0gICAgYXJyYXktPnB1c2hPYmpl
Y3QoYnVpbGRPYmplY3RGb3JQb2ludChxdWFkLnAxKCkpKTsKLSAgICBhcnJheS0+cHVzaE9iamVj
dChidWlsZE9iamVjdEZvclBvaW50KHF1YWQucDIoKSkpOwotICAgIGFycmF5LT5wdXNoT2JqZWN0
KGJ1aWxkT2JqZWN0Rm9yUG9pbnQocXVhZC5wMygpKSk7Ci0gICAgYXJyYXktPnB1c2hPYmplY3Qo
YnVpbGRPYmplY3RGb3JQb2ludChxdWFkLnA0KCkpKTsKKyAgICBhdXRvIGFycmF5ID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpRdWFkOjpjcmVhdGUoKTsKKyAgICBhcnJheS0+
YWRkSXRlbShidWlsZE9iamVjdEZvclBvaW50KHF1YWQucDEoKSkpOworICAgIGFycmF5LT5hZGRJ
dGVtKGJ1aWxkT2JqZWN0Rm9yUG9pbnQocXVhZC5wMigpKSk7CisgICAgYXJyYXktPmFkZEl0ZW0o
YnVpbGRPYmplY3RGb3JQb2ludChxdWFkLnAzKCkpKTsKKyAgICBhcnJheS0+YWRkSXRlbShidWls
ZE9iamVjdEZvclBvaW50KHF1YWQucDQoKSkpOwogICAgIHJldHVybiBXVEY6Om1vdmUoYXJyYXkp
OwogfQogCi1zdGF0aWMgUmVmPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIaWdobGln
aHQoY29uc3QgSGlnaGxpZ2h0JiBoaWdobGlnaHQpCitzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRhPiBidWlsZE9iamVjdEZv
ckhpZ2hsaWdodChjb25zdCBIaWdobGlnaHQmIGhpZ2hsaWdodCkKIHsKLSAgICBSZWY8SW5zcGVj
dG9yT2JqZWN0PiBvYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIFJlZjxJ
bnNwZWN0b3JBcnJheT4gYXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CisgICAgYXV0
byBhcnJheU9mUXVhZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpPdmVybGF5VHlwZXM6OlF1YWQ+OjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGhpZ2hsaWdodC5xdWFkcy5zaXplKCk7ICsraSkKLSAgICAgICAgYXJyYXktPnB1
c2hBcnJheShidWlsZEFycmF5Rm9yUXVhZChoaWdobGlnaHQucXVhZHNbaV0pKTsKLSAgICBvYmpl
Y3QtPnNldEFycmF5KCJxdWFkcyIsIFdURjo6bW92ZShhcnJheSkpOwotICAgIG9iamVjdC0+c2V0
U3RyaW5nKCJjb250ZW50Q29sb3IiLCBoaWdobGlnaHQuY29udGVudENvbG9yLnNlcmlhbGl6ZWQo
KSk7Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoImNvbnRlbnRPdXRsaW5lQ29sb3IiLCBoaWdobGln
aHQuY29udGVudE91dGxpbmVDb2xvci5zZXJpYWxpemVkKCkpOwotICAgIG9iamVjdC0+c2V0U3Ry
aW5nKCJwYWRkaW5nQ29sb3IiLCBoaWdobGlnaHQucGFkZGluZ0NvbG9yLnNlcmlhbGl6ZWQoKSk7
Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoImJvcmRlckNvbG9yIiwgaGlnaGxpZ2h0LmJvcmRlckNv
bG9yLnNlcmlhbGl6ZWQoKSk7Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoIm1hcmdpbkNvbG9yIiwg
aGlnaGxpZ2h0Lm1hcmdpbkNvbG9yLnNlcmlhbGl6ZWQoKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92
ZShvYmplY3QpOworICAgICAgICBhcnJheU9mUXVhZHMtPmFkZEl0ZW0oYnVpbGRBcnJheUZvclF1
YWQoaGlnaGxpZ2h0LnF1YWRzW2ldKSk7CisKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVudEhpZ2hsaWdodERhdGE6OmNyZWF0ZSgpCisgICAgICAg
IC5zZXRRdWFkcyhXVEY6Om1vdmUoYXJyYXlPZlF1YWRzKSkKKyAgICAgICAgLnNldENvbnRlbnRD
b2xvcihoaWdobGlnaHQuY29udGVudENvbG9yLnNlcmlhbGl6ZWQoKSkKKyAgICAgICAgLnNldENv
bnRlbnRPdXRsaW5lQ29sb3IoaGlnaGxpZ2h0LmNvbnRlbnRPdXRsaW5lQ29sb3Iuc2VyaWFsaXpl
ZCgpKQorICAgICAgICAuc2V0UGFkZGluZ0NvbG9yKGhpZ2hsaWdodC5wYWRkaW5nQ29sb3Iuc2Vy
aWFsaXplZCgpKQorICAgICAgICAuc2V0Qm9yZGVyQ29sb3IoaGlnaGxpZ2h0LmJvcmRlckNvbG9y
LnNlcmlhbGl6ZWQoKSkKKyAgICAgICAgLnNldE1hcmdpbkNvbG9yKGhpZ2hsaWdodC5tYXJnaW5D
b2xvci5zZXJpYWxpemVkKCkpCisgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclJlZ2lvbkhpZ2hsaWdodChGcmFtZVZp
ZXcqIG1haW5WaWV3LCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKK3N0YXRpYyBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWdpb24+IGJ1aWxkT2JqZWN0Rm9yUmVnaW9u
KEZyYW1lVmlldyogbWFpblZpZXcsIFJlbmRlclJlZ2lvbiogcmVnaW9uKQogewogICAgIEZyYW1l
VmlldyogY29udGFpbmluZ1ZpZXcgPSByZWdpb24tPmZyYW1lKCkudmlldygpOwogICAgIGlmICgh
Y29udGFpbmluZ1ZpZXcpCkBAIC0zODgsNyArMzg5LDcgQEAgc3RhdGljIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVnaW9uSGlnaGxpZ2h0KEZyYW1lVmlldyogbWFpblZp
ZXcKICAgICAvLyBDcmVhdGUgaW5jb21pbmcgYW5kIG91dGdvaW5nIGJveGVzIHRoYXQgd2UgdXNl
IHRvIGNoYWluIHRoZSByZWdpb25zIHRvZ2hldGhlci4KICAgICBjb25zdCBMYXlvdXRTaXplIGxp
bmtCb3hTaXplKDEwLCAxMCk7CiAgICAgY29uc3QgTGF5b3V0U2l6ZSBsaW5rQm94TWlkcG9pbnQo
bGlua0JveFNpemUud2lkdGgoKSAvIDIsIGxpbmtCb3hTaXplLmhlaWdodCgpIC8gMik7Ci0gICAg
CisKICAgICBMYXlvdXRSZWN0IGluY29taW5nUmVjdEJveCA9IExheW91dFJlY3QoYm9yZGVyQm94
LmxvY2F0aW9uKCkgLSBsaW5rQm94TWlkcG9pbnQsIGxpbmtCb3hTaXplKTsKICAgICBMYXlvdXRS
ZWN0IG91dGdvaW5nUmVjdEJveCA9IExheW91dFJlY3QoYm9yZGVyQm94LmxvY2F0aW9uKCkgLSBs
aW5rQm94TWlkcG9pbnQgKyBib3JkZXJCb3guc2l6ZSgpLCBsaW5rQm94U2l6ZSk7CiAKQEAgLTQw
Niw0NyArNDA3LDQ1IEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVj
dEZvclJlZ2lvbkhpZ2hsaWdodChGcmFtZVZpZXcqIG1haW5WaWV3CiAgICAgY29udGVudHNRdWFk
VG9QYWdlKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgaW5jb21pbmdSZWN0UXVhZCk7CiAgICAg
Y29udGVudHNRdWFkVG9QYWdlKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgb3V0Z29pbmdSZWN0
UXVhZCk7CiAKLSAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZWdpb25PYmplY3QgPSBJbnNwZWN0
b3JPYmplY3Q6OmNyZWF0ZSgpOwotCi0gICAgcmVnaW9uT2JqZWN0LT5zZXRBcnJheSgiYm9yZGVy
UXVhZCIsIGJ1aWxkQXJyYXlGb3JRdWFkKGJvcmRlclJlY3RRdWFkKSk7Ci0gICAgcmVnaW9uT2Jq
ZWN0LT5zZXRBcnJheSgiaW5jb21pbmdRdWFkIiwgYnVpbGRBcnJheUZvclF1YWQoaW5jb21pbmdS
ZWN0UXVhZCkpOwotICAgIHJlZ2lvbk9iamVjdC0+c2V0QXJyYXkoIm91dGdvaW5nUXVhZCIsIGJ1
aWxkQXJyYXlGb3JRdWFkKG91dGdvaW5nUmVjdFF1YWQpKTsKLQotICAgIHJldHVybiBXVEY6Om1v
dmUocmVnaW9uT2JqZWN0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6T3Zlcmxh
eVR5cGVzOjpSZWdpb246OmNyZWF0ZSgpCisgICAgICAgIC5zZXRCb3JkZXJRdWFkKGJ1aWxkQXJy
YXlGb3JRdWFkKGJvcmRlclJlY3RRdWFkKSkKKyAgICAgICAgLnNldEluY29taW5nUXVhZChidWls
ZEFycmF5Rm9yUXVhZChpbmNvbWluZ1JlY3RRdWFkKSkKKyAgICAgICAgLnNldE91dGdvaW5nUXVh
ZChidWlsZEFycmF5Rm9yUXVhZChvdXRnb2luZ1JlY3RRdWFkKSkKKyAgICAgICAgLnJlbGVhc2Uo
KTsKIH0KIAotc3RhdGljIFJlZjxJbnNwZWN0b3JBcnJheT4gYnVpbGRPYmplY3RGb3JDU1NSZWdp
b25zSGlnaGxpZ2h0KFJlbmRlclJlZ2lvbiogcmVnaW9uLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93
VGhyZWFkKQorc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlZ2lvbj4+IGJ1aWxkT2JqZWN0Rm9yRmxvd1JlZ2lv
bnMoUmVuZGVyUmVnaW9uKiByZWdpb24sIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpCiB7
CiAgICAgRnJhbWVWaWV3KiBtYWluRnJhbWVWaWV3ID0gcmVnaW9uLT5kb2N1bWVudCgpLnBhZ2Uo
KS0+bWFpbkZyYW1lKCkudmlldygpOwogCi0gICAgUmVmPEluc3BlY3RvckFycmF5PiBhcnJheSA9
IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICBhdXRvIGFycmF5T2ZSZWdpb25zID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVz
OjpSZWdpb24+OjpjcmVhdGUoKTsKIAogICAgIGNvbnN0IFJlbmRlclJlZ2lvbkxpc3QmIHJlZ2lv
bkxpc3QgPSBmbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0KCk7CiAgICAgZm9yIChhdXRvJiBp
dGVyUmVnaW9uIDogcmVnaW9uTGlzdCkgewogICAgICAgICBpZiAoIWl0ZXJSZWdpb24tPmlzVmFs
aWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiByZWdpb25IaWdobGlnaHRPYmplY3QgPSBidWlsZE9iamVjdEZvclJlZ2lvbkhpZ2hsaWdo
dChtYWluRnJhbWVWaWV3LCBpdGVyUmVnaW9uKTsKLSAgICAgICAgaWYgKCFyZWdpb25IaWdobGln
aHRPYmplY3QpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlw
ZXM6OlJlZ2lvbj4gcmVnaW9uT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JSZWdpb24obWFpbkZyYW1l
VmlldywgaXRlclJlZ2lvbik7CisgICAgICAgIGlmICghcmVnaW9uT2JqZWN0KQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGlmIChyZWdpb24gPT0gaXRlclJlZ2lvbikgewogICAgICAg
ICAgICAgLy8gTGV0IHRoZSBzY3JpcHQga25vdyB0aGF0IHRoaXMgaXMgdGhlIGN1cnJlbnRseSBo
aWdobGlnaHRlZCBub2RlLgotICAgICAgICAgICAgcmVnaW9uSGlnaGxpZ2h0T2JqZWN0LT5zZXRC
b29sZWFuKCJpc0hpZ2hsaWdodGVkIiwgdHJ1ZSk7CisgICAgICAgICAgICByZWdpb25PYmplY3Qt
PnNldElzSGlnaGxpZ2h0ZWQodHJ1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgYXJyYXktPnB1c2hP
YmplY3QocmVnaW9uSGlnaGxpZ2h0T2JqZWN0LnJlbGVhc2UoKSk7CisgICAgICAgIGFycmF5T2ZS
ZWdpb25zLT5hZGRJdGVtKFdURjo6bW92ZShyZWdpb25PYmplY3QpKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gV1RGOjptb3ZlKGFycmF5KTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKGFycmF5T2ZSZWdp
b25zKTsKIH0KIAotc3RhdGljIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yU2l6
ZShjb25zdCBJbnRTaXplJiBzaXplKQorc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpP
dmVybGF5VHlwZXM6OlNpemU+IGJ1aWxkT2JqZWN0Rm9yU2l6ZShjb25zdCBJbnRTaXplJiBzaXpl
KQogewotICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7Ci0gICAgcmVzdWx0LT5zZXRJbnRlZ2VyKCJ3aWR0aCIsIHNpemUud2lkdGgoKSk7
Ci0gICAgcmVzdWx0LT5zZXRJbnRlZ2VyKCJoZWlnaHQiLCBzaXplLmhlaWdodCgpKTsKLSAgICBy
ZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok92ZXJsYXlUeXBlczo6U2l6ZTo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFdpZHRoKHNpemUud2lk
dGgoKSkKKyAgICAgICAgLnNldEhlaWdodChzaXplLmhlaWdodCgpKQorICAgICAgICAucmVsZWFz
ZSgpOwogfQogCi1zdGF0aWMgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JD
U1NSZWdpb25Db250ZW50Q2xpcChSZW5kZXJSZWdpb24qIHJlZ2lvbikKK3N0YXRpYyBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpRdWFkPiBidWlsZFF1YWRPYmplY3RG
b3JDU1NSZWdpb25Db250ZW50Q2xpcChSZW5kZXJSZWdpb24qIHJlZ2lvbikKIHsKICAgICBGcmFt
ZSogY29udGFpbmluZ0ZyYW1lID0gcmVnaW9uLT5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYg
KCFjb250YWluaW5nRnJhbWUpCkBAIC00NjYsOSArNDY1LDcgQEAgc3RhdGljIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQ1NTUmVnaW9uQ29udGVudENsaXAoUmVuZGVyUmVn
aW9uKgogICAgIEZsb2F0UXVhZCBjbGlwUXVhZCA9IHJlZ2lvbi0+bG9jYWxUb0Fic29sdXRlUXVh
ZChGbG9hdFJlY3QoZmxpcHBlZFJlZ2lvblJlY3QpKTsKICAgICBjb250ZW50c1F1YWRUb1BhZ2Uo
bWFpblZpZXcsIGNvbnRhaW5pbmdWaWV3LCBjbGlwUXVhZCk7CiAKLSAgICBSZWY8SW5zcGVjdG9y
T2JqZWN0PiByZWdpb25PYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHJl
Z2lvbk9iamVjdC0+c2V0QXJyYXkoInF1YWQiLCBidWlsZEFycmF5Rm9yUXVhZChjbGlwUXVhZCkp
OwotICAgIHJldHVybiBXVEY6Om1vdmUocmVnaW9uT2JqZWN0KTsKKyAgICByZXR1cm4gYnVpbGRB
cnJheUZvclF1YWQoY2xpcFF1YWQpOwogfQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnNldFNo
b3dpbmdQYWludFJlY3RzKGJvb2wgc2hvd2luZ1BhaW50UmVjdHMpCkBAIC01MTQsNyArNTExLDcg
QEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGVQYWludFJlY3RzVGltZXJGaXJlZCgpCiAg
ICAgICAgIG1fcGFpbnRSZWN0cy5yZW1vdmVGaXJzdCgpOwogICAgICAgICByZWN0c0NoYW5nZWQg
PSB0cnVlOwogICAgIH0KLSAgICAKKwogICAgIGlmIChtX3BhaW50UmVjdHMuaXNFbXB0eSgpKQog
ICAgICAgICBtX3BhaW50UmVjdFVwZGF0ZVRpbWVyLnN0b3AoKTsKIApAQCAtNTI2LDExICs1MjMs
MTEgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGVQYWludFJlY3RzVGltZXJGaXJlZCgp
CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1BhaW50UmVjdHMoKQogewotICAgIFJlZjxJ
bnNwZWN0b3JBcnJheT4gZnJhZ21lbnRzQXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7
CisgICAgYXV0byBhcnJheU9mUmVjdHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlY3Q+OjpjcmVhdGUoKTsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHBhaXIgOiBtX3BhaW50UmVjdHMpCi0gICAgICAgIGZyYWdtZW50c0FycmF5
LT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0Rm9yUmVjdChwYWlyLnNlY29uZCkpOworICAgICAgICBh
cnJheU9mUmVjdHMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JSZWN0KHBhaXIuc2Vjb25kKSk7CiAK
LSAgICBldmFsdWF0ZUluT3ZlcmxheShBU0NJSUxpdGVyYWwoInVwZGF0ZVBhaW50UmVjdHMiKSwg
V1RGOjptb3ZlKGZyYWdtZW50c0FycmF5KSk7CisgICAgZXZhbHVhdGVJbk92ZXJsYXkoQVNDSUlM
aXRlcmFsKCJ1cGRhdGVQYWludFJlY3RzIiksIFdURjo6bW92ZShhcnJheU9mUmVjdHMpKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3R3V0dGVyKCkKQEAgLTUzOCwxNSArNTM1LDE1
IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0d1dHRlcigpCiAgICAgZXZhbHVhdGVJbk92
ZXJsYXkoQVNDSUlMaXRlcmFsKCJkcmF3R3V0dGVyIikpOwogfQogCi1zdGF0aWMgUmVmUHRyPElu
c3BlY3RvckFycmF5PiBidWlsZE9iamVjdEZvclJlbmRlcmVyRnJhZ21lbnRzKFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgY29uZmlnKQorc3RhdGljIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5
VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0RGF0YT4+IGJ1aWxkQXJyYXlGb3JSZW5kZXJlckZyYWdt
ZW50cyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGNvbmZp
ZykKIHsKLSAgICBSZWY8SW5zcGVjdG9yQXJyYXk+IGZyYWdtZW50c0FycmF5ID0gSW5zcGVjdG9y
QXJyYXk6OmNyZWF0ZSgpOworICAgIGF1dG8gYXJyYXlPZkZyYWdtZW50cyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21l
bnRIaWdobGlnaHREYXRhPjo6Y3JlYXRlKCk7CiAKICAgICBSZW5kZXJGbG93VGhyZWFkKiBjb250
YWluaW5nRmxvd1RocmVhZCA9IHJlbmRlcmVyLT5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7
CiAgICAgaWYgKCFjb250YWluaW5nRmxvd1RocmVhZCkgewogICAgICAgICBIaWdobGlnaHQgaGln
aGxpZ2h0OwotICAgICAgICBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KHJlbmRlcmVyLCBudWxscHRy
LCBjb25maWcsICZoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0ZW06
OlZpZXcpOwotICAgICAgICBmcmFnbWVudHNBcnJheS0+cHVzaE9iamVjdChidWlsZE9iamVjdEZv
ckhpZ2hsaWdodChoaWdobGlnaHQpKTsKKyAgICAgICAgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChy
ZW5kZXJlciwgbnVsbHB0ciwgY29uZmlnLCBoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNv
b3JkaW5hdGVTeXN0ZW06OlZpZXcpOworICAgICAgICBhcnJheU9mRnJhZ21lbnRzLT5hZGRJdGVt
KGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KGhpZ2hsaWdodCkpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBudWxscHRyOwogICAgICAgICBSZW5kZXJS
ZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CkBAIC01NjEsMTkgKzU1OCwxOSBAQCBzdGF0aWMg
UmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZE9iamVjdEZvclJlbmRlcmVyRnJhZ21lbnRzKFJl
bmRlck9iamVjdCogcmVuZAogICAgICAgICAgICAgaWYgKHJlZ2lvbi0+aXNWYWxpZCgpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgaGlnaGxpZ2h0IG9mIHRoZSBmcmFnbWVudCBp
bnNpZGUgdGhlIGN1cnJlbnQgcmVnaW9uLgogICAgICAgICAgICAgICAgIEhpZ2hsaWdodCBoaWdo
bGlnaHQ7Ci0gICAgICAgICAgICAgICAgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChyZW5kZXJlciwg
cmVnaW9uLCBjb25maWcsICZoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVT
eXN0ZW06OlZpZXcpOwotICAgICAgICAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGZyYWdt
ZW50T2JqZWN0ID0gYnVpbGRPYmplY3RGb3JIaWdobGlnaHQoaGlnaGxpZ2h0KTsKKyAgICAgICAg
ICAgICAgICBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KHJlbmRlcmVyLCByZWdpb24sIGNvbmZpZywg
aGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtOjpWaWV3KTsKKyAg
ICAgICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFn
bWVudEhpZ2hsaWdodERhdGE+IGZyYWdtZW50SGlnaGxpZ2h0ID0gYnVpbGRPYmplY3RGb3JIaWdo
bGlnaHQoaGlnaGxpZ2h0KTsKIAogICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGNsaXBw
aW5nIGFyZWEgb2YgdGhlIHJlZ2lvbi4KLSAgICAgICAgICAgICAgICBmcmFnbWVudE9iamVjdC0+
c2V0T2JqZWN0KCJyZWdpb24iLCBidWlsZE9iamVjdEZvckNTU1JlZ2lvbkNvbnRlbnRDbGlwKHJl
Z2lvbikpOwotICAgICAgICAgICAgICAgIGZyYWdtZW50c0FycmF5LT5wdXNoT2JqZWN0KFdURjo6
bW92ZShmcmFnbWVudE9iamVjdCkpOworICAgICAgICAgICAgICAgIGZyYWdtZW50SGlnaGxpZ2h0
LT5zZXRSZWdpb25DbGlwcGluZ0FyZWEoYnVpbGRRdWFkT2JqZWN0Rm9yQ1NTUmVnaW9uQ29udGVu
dENsaXAocmVnaW9uKSk7CisgICAgICAgICAgICAgICAgYXJyYXlPZkZyYWdtZW50cy0+YWRkSXRl
bShXVEY6Om1vdmUoZnJhZ21lbnRIaWdobGlnaHQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChyZWdpb24gPT0gZW5kUmVnaW9uKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bW92ZShmcmFnbWVudHNBcnJheSk7Cisg
ICAgcmV0dXJuIFdURjo6bW92ZShhcnJheU9mRnJhZ21lbnRzKTsKIH0KIAogI2lmIEVOQUJMRShD
U1NfU0hBUEVTKQpAQCAtNTg4LDI2ICs1ODUsMjcgQEAgc3RhdGljIEZsb2F0UG9pbnQgbG9jYWxQ
b2ludFRvUm9vdChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBGcmFtZVZpZXcqIG1haW4K
IHN0cnVjdCBQYXRoQXBwbHlJbmZvIHsKICAgICBGcmFtZVZpZXcqIHJvb3RWaWV3OwogICAgIEZy
YW1lVmlldyogdmlldzsKLSAgICBJbnNwZWN0b3JBcnJheSogYXJyYXk7CisgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpEaXNwbGF5UGF0aCogcGF0aEFycmF5OwogICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXI7CiAgICAgY29uc3QgU2hhcGVPdXRzaWRlSW5mbyogc2hhcGVP
dXRzaWRlSW5mbzsKIH07CiAKLXN0YXRpYyB2b2lkIGFwcGVuZFBhdGhDb21tYW5kQW5kUG9pbnRz
KFBhdGhBcHBseUluZm8qIGluZm8sIGNvbnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3QgRmxvYXRQ
b2ludCBwb2ludHNbXSwgdW5zaWduZWQgbGVuZ3RoKQorc3RhdGljIHZvaWQgYXBwZW5kUGF0aENv
bW1hbmRBbmRQb2ludHMoUGF0aEFwcGx5SW5mbyYgaW5mbywgY29uc3QgU3RyaW5nJiBjb21tYW5k
LCBjb25zdCBGbG9hdFBvaW50IHBvaW50c1tdLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgRmxv
YXRQb2ludCBwb2ludDsKLSAgICBpbmZvLT5hcnJheS0+cHVzaFN0cmluZyhjb21tYW5kKTsKKyAg
ICBpbmZvLnBhdGhBcnJheS0+YWRkSXRlbShjb21tYW5kKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgcG9pbnQgPSBpbmZvLT5zaGFwZU91dHNp
ZGVJbmZvLT5zaGFwZVRvUmVuZGVyZXJQb2ludChwb2ludHNbaV0pOwotICAgICAgICBwb2ludCA9
IGxvY2FsUG9pbnRUb1Jvb3QoaW5mby0+cmVuZGVyZXIsIGluZm8tPnJvb3RWaWV3LCBpbmZvLT52
aWV3LCBwb2ludCk7Ci0gICAgICAgIGluZm8tPmFycmF5LT5wdXNoRG91YmxlKHBvaW50LngoKSk7
Ci0gICAgICAgIGluZm8tPmFycmF5LT5wdXNoRG91YmxlKHBvaW50LnkoKSk7CisgICAgICAgIHBv
aW50ID0gaW5mby5zaGFwZU91dHNpZGVJbmZvLT5zaGFwZVRvUmVuZGVyZXJQb2ludChwb2ludHNb
aV0pOworICAgICAgICBwb2ludCA9IGxvY2FsUG9pbnRUb1Jvb3QoaW5mby5yZW5kZXJlciwgaW5m
by5yb290VmlldywgaW5mby52aWV3LCBwb2ludCk7CisgICAgICAgIGluZm8ucGF0aEFycmF5LT5h
ZGRJdGVtKHBvaW50LngoKSk7CisgICAgICAgIGluZm8ucGF0aEFycmF5LT5hZGRJdGVtKHBvaW50
LnkoKSk7CiAgICAgfQogfQogCisvLyBVc2VkIGFzIGEgZnVuY3RvciBmb3IgU2hhcGU6OmFwcGx5
LCB3aGljaCBoYXMgbm90IGJlZW4gY2xlYW5lZCB1cCB0byB1c2UgbW9kZXJuIEMrKy4KIHN0YXRp
YyB2b2lkIGFwcGVuZFBhdGhTZWdtZW50KHZvaWQqIGluZm8sIGNvbnN0IFBhdGhFbGVtZW50KiBw
YXRoRWxlbWVudCkKIHsKLSAgICBQYXRoQXBwbHlJbmZvKiBwYXRoQXBwbHlJbmZvID0gc3RhdGlj
X2Nhc3Q8UGF0aEFwcGx5SW5mbyo+KGluZm8pOworICAgIFBhdGhBcHBseUluZm8mIHBhdGhBcHBs
eUluZm8gPSAqc3RhdGljX2Nhc3Q8UGF0aEFwcGx5SW5mbyo+KGluZm8pOwogICAgIEZsb2F0UG9p
bnQgcG9pbnQ7CiAgICAgc3dpdGNoIChwYXRoRWxlbWVudC0+dHlwZSkgewogICAgIC8vIFRoZSBw
b2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAxIHZhbHVlLgpAQCAtNjMzLDQxICs2MzEsNDMgQEAg
c3RhdGljIHZvaWQgYXBwZW5kUGF0aFNlZ21lbnQodm9pZCogaW5mbywgY29uc3QgUGF0aEVsZW1l
bnQqIHBhdGhFbGVtZW50KQogICAgIH0KIH0KIAotc3RhdGljIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGJ1aWxkT2JqZWN0Rm9yU2hhcGVPdXRzaWRlKEZyYW1lKiBjb250YWluaW5nRnJhbWUsIFJl
bmRlckJveCogcmVuZGVyZXIpCitzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92
ZXJsYXlUeXBlczo6U2hhcGVPdXRzaWRlRGF0YT4gYnVpbGRPYmplY3RGb3JTaGFwZU91dHNpZGUo
RnJhbWUqIGNvbnRhaW5pbmdGcmFtZSwgUmVuZGVyQm94KiByZW5kZXJlcikKIHsKICAgICBjb25z
dCBTaGFwZU91dHNpZGVJbmZvKiBzaGFwZU91dHNpZGVJbmZvID0gcmVuZGVyZXItPnNoYXBlT3V0
c2lkZUluZm8oKTsKICAgICBpZiAoIXNoYXBlT3V0c2lkZUluZm8pCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgUmVmPEluc3BlY3Rvck9iamVjdD4gc2hhcGVPYmplY3QgPSBJbnNwZWN0
b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIExheW91dFJlY3Qgc2hhcGVCb3VuZHMgPSBzaGFwZU91
dHNpZGVJbmZvLT5jb21wdXRlZFNoYXBlUGh5c2ljYWxCb3VuZGluZ0JveCgpOwogICAgIEZsb2F0
UXVhZCBzaGFwZVF1YWQgPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3Qo
c2hhcGVCb3VuZHMpKTsKICAgICBjb250ZW50c1F1YWRUb1BhZ2UoY29udGFpbmluZ0ZyYW1lLT5w
YWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSwgY29udGFpbmluZ0ZyYW1lLT52aWV3KCksIHNoYXBl
UXVhZCk7Ci0gICAgc2hhcGVPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYm91bmRzIiks
IGJ1aWxkQXJyYXlGb3JRdWFkKHNoYXBlUXVhZCkpOworCisgICAgYXV0byBzaGFwZU9iamVjdCA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6U2hhcGVPdXRzaWRlRGF0YTo6Y3Jl
YXRlKCkKKyAgICAgICAgLnNldEJvdW5kcyhidWlsZEFycmF5Rm9yUXVhZChzaGFwZVF1YWQpKQor
ICAgICAgICAucmVsZWFzZSgpOwogCiAgICAgU2hhcGU6OkRpc3BsYXlQYXRocyBwYXRoczsKICAg
ICBzaGFwZU91dHNpZGVJbmZvLT5jb21wdXRlZFNoYXBlKCkuYnVpbGREaXNwbGF5UGF0aHMocGF0
aHMpOwogCiAgICAgaWYgKHBhdGhzLnNoYXBlLmxlbmd0aCgpKSB7Ci0gICAgICAgIFJlZjxJbnNw
ZWN0b3JBcnJheT4gc2hhcGVQYXRoID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgICAg
ICBhdXRvIHNoYXBlUGF0aCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RGlz
cGxheVBhdGg6OmNyZWF0ZSgpOwogICAgICAgICBQYXRoQXBwbHlJbmZvIGluZm87CiAgICAgICAg
IGluZm8ucm9vdFZpZXcgPSBjb250YWluaW5nRnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkudmll
dygpOwogICAgICAgICBpbmZvLnZpZXcgPSBjb250YWluaW5nRnJhbWUtPnZpZXcoKTsKLSAgICAg
ICAgaW5mby5hcnJheSA9ICZzaGFwZVBhdGguZ2V0KCk7CisgICAgICAgIGluZm8ucGF0aEFycmF5
ID0gJnNoYXBlUGF0aC5nZXQoKTsKICAgICAgICAgaW5mby5yZW5kZXJlciA9IHJlbmRlcmVyOwog
ICAgICAgICBpbmZvLnNoYXBlT3V0c2lkZUluZm8gPSBzaGFwZU91dHNpZGVJbmZvOwogCiAgICAg
ICAgIHBhdGhzLnNoYXBlLmFwcGx5KCZpbmZvLCAmYXBwZW5kUGF0aFNlZ21lbnQpOwogCi0gICAg
ICAgIHNoYXBlT2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoInNoYXBlIiksIHNoYXBlUGF0
aC5jb3B5UmVmKCkpOworICAgICAgICBzaGFwZU9iamVjdC0+c2V0U2hhcGUoc2hhcGVQYXRoLmNv
cHlSZWYoKSk7CiAKICAgICAgICAgaWYgKHBhdGhzLm1hcmdpblNoYXBlLmxlbmd0aCgpKSB7Ci0g
ICAgICAgICAgICBzaGFwZVBhdGggPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7Ci0gICAgICAg
ICAgICBpbmZvLmFycmF5ID0gJnNoYXBlUGF0aC5nZXQoKTsKKyAgICAgICAgICAgIGF1dG8gbWFy
Z2luU2hhcGVQYXRoID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpEaXNwbGF5
UGF0aDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBpbmZvLnBhdGhBcnJheSA9ICZtYXJnaW5TaGFw
ZVBhdGguZ2V0KCk7CiAKICAgICAgICAgICAgIHBhdGhzLm1hcmdpblNoYXBlLmFwcGx5KCZpbmZv
LCAmYXBwZW5kUGF0aFNlZ21lbnQpOwogCi0gICAgICAgICAgICBzaGFwZU9iamVjdC0+c2V0QXJy
YXkoQVNDSUlMaXRlcmFsKCJtYXJnaW5TaGFwZSIpLCBzaGFwZVBhdGguY29weVJlZigpKTsKKyAg
ICAgICAgICAgIHNoYXBlT2JqZWN0LT5zZXRNYXJnaW5TaGFwZShzaGFwZVBhdGguY29weVJlZigp
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNjc1LDE4ICs2NzUsMTkgQEAgc3RhdGljIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yU2hhcGVPdXRzaWRlKEZyYW1lKiBjb250
YWluaW5nRnJhbWUKIH0KICNlbmRpZgogCi1zdGF0aWMgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
YnVpbGRPYmplY3RGb3JFbGVtZW50SW5mbyhOb2RlKiBub2RlKQorc3RhdGljIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkVsZW1lbnREYXRhPiBidWlsZE9iamVjdEZv
ckVsZW1lbnREYXRhKE5vZGUqIG5vZGUpCiB7Ci0gICAgQVNTRVJUKG5vZGUpOwotICAgIGlmICgh
aXM8RWxlbWVudD4oKm5vZGUpIHx8ICFub2RlLT5kb2N1bWVudCgpLmZyYW1lKCkpCisgICAgaWYg
KCFpczxFbGVtZW50Pihub2RlKSB8fCAhbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGVsZW1lbnRJbmZv
ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLQogICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBk
b3duY2FzdDxFbGVtZW50Pigqbm9kZSk7CiAgICAgYm9vbCBpc1hIVE1MID0gZWxlbWVudC5kb2N1
bWVudCgpLmlzWEhUTUxEb2N1bWVudCgpOwotICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJpbmcoInRh
Z05hbWUiLCBpc1hIVE1MID8gZWxlbWVudC5ub2RlTmFtZSgpIDogZWxlbWVudC5ub2RlTmFtZSgp
Lmxvd2VyKCkpOwotICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJpbmcoImlkVmFsdWUiLCBlbGVtZW50
LmdldElkQXR0cmlidXRlKCkpOworCisgICAgYXV0byBlbGVtZW50RGF0YSA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RWxlbWVudERhdGE6OmNyZWF0ZSgpCisgICAgICAgIC5z
ZXRUYWdOYW1lKGlzWEhUTUwgPyBlbGVtZW50Lm5vZGVOYW1lKCkgOiBlbGVtZW50Lm5vZGVOYW1l
KCkubG93ZXIoKSkKKyAgICAgICAgLnNldElkVmFsdWUoZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgp
KQorICAgICAgICAucmVsZWFzZSgpOworCiAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHVzZWRD
bGFzc05hbWVzOwogICAgIGlmIChlbGVtZW50Lmhhc0NsYXNzKCkgJiYgaXM8U3R5bGVkRWxlbWVu
dD4oZWxlbWVudCkpIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBjbGFzc05hbWVzOwpAQCAtNzAw
LDQwICs3MDEsNDkgQEAgc3RhdGljIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0
Rm9yRWxlbWVudEluZm8oTm9kZSogbm9kZSkKICAgICAgICAgICAgIGNsYXNzTmFtZXMuYXBwZW5k
KCcuJyk7CiAgICAgICAgICAgICBjbGFzc05hbWVzLmFwcGVuZChjbGFzc05hbWUpOwogICAgICAg
ICB9Ci0gICAgICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJpbmcoImNsYXNzTmFtZSIsIGNsYXNzTmFt
ZXMudG9TdHJpbmcoKSk7CisgICAgICAgIGVsZW1lbnREYXRhLT5zZXRDbGFzc05hbWUoY2xhc3NO
YW1lcy50b1N0cmluZygpKTsKICAgICB9CiAKICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9
IGVsZW1lbnQucmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKwogICAgIEZyYW1lKiBjb250YWluaW5nRnJhbWUgPSBub2RlLT5kb2N1bWVudCgp
LmZyYW1lKCk7CiAgICAgRnJhbWVWaWV3KiBjb250YWluaW5nVmlldyA9IGNvbnRhaW5pbmdGcmFt
ZS0+dmlldygpOwogICAgIEludFJlY3QgYm91bmRpbmdCb3ggPSBzbmFwcGVkSW50UmVjdChjb250
YWluaW5nVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdCgpKSk7CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG1vZGVsT2JqZWN0ID0gaXM8
UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpyZW5kZXJlcikgPyBkb3duY2FzdDxSZW5kZXJCb3hNb2Rl
bE9iamVjdD4ocmVuZGVyZXIpIDogbnVsbHB0cjsKLSAgICBlbGVtZW50SW5mby0+c2V0U3RyaW5n
KCJub2RlV2lkdGgiLCBTdHJpbmc6Om51bWJlcihtb2RlbE9iamVjdCA/IGFkanVzdEZvckFic29s
dXRlWm9vbShtb2RlbE9iamVjdC0+cGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgKm1vZGVsT2Jq
ZWN0KSA6IGJvdW5kaW5nQm94LndpZHRoKCkpKTsKLSAgICBlbGVtZW50SW5mby0+c2V0U3RyaW5n
KCJub2RlSGVpZ2h0IiwgU3RyaW5nOjpudW1iZXIobW9kZWxPYmplY3QgPyBhZGp1c3RGb3JBYnNv
bHV0ZVpvb20obW9kZWxPYmplY3QtPnBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpLCAqbW9kZWxP
YmplY3QpIDogYm91bmRpbmdCb3guaGVpZ2h0KCkpKTsKLSAgICAKKyAgICBhdXRvIHNpemVPYmpl
Y3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlNpemU6OmNyZWF0ZSgpCisg
ICAgICAgIC5zZXRXaWR0aChtb2RlbE9iamVjdCA/IGFkanVzdEZvckFic29sdXRlWm9vbShtb2Rl
bE9iamVjdC0+cGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgKm1vZGVsT2JqZWN0KSA6IGJvdW5k
aW5nQm94LndpZHRoKCkpCisgICAgICAgIC5zZXRIZWlnaHQobW9kZWxPYmplY3QgPyBhZGp1c3RG
b3JBYnNvbHV0ZVpvb20obW9kZWxPYmplY3QtPnBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpLCAq
bW9kZWxPYmplY3QpIDogYm91bmRpbmdCb3guaGVpZ2h0KCkpCisgICAgICAgIC5yZWxlYXNlKCk7
CisgICAgZWxlbWVudERhdGEtPnNldFNpemUoV1RGOjptb3ZlKHNpemVPYmplY3QpKTsKKwogICAg
IGlmIChyZW5kZXJlci0+aXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpKSB7CiAg
ICAgICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50JiByZWdpb24gPSAqZG93bmNhc3Q8UmVuZGVy
QmxvY2tGbG93PigqcmVuZGVyZXIpLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7CiAgICAgICAg
IGlmIChyZWdpb24uaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBSZW5kZXJGbG93VGhyZWFkKiBm
bG93VGhyZWFkID0gcmVnaW9uLmZsb3dUaHJlYWQoKTsKLSAgICAgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IHJlZ2lvbkZsb3dJbmZvID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
LSAgICAgICAgICAgIHJlZ2lvbkZsb3dJbmZvLT5zZXRTdHJpbmcoIm5hbWUiLCBkb3duY2FzdDxS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQ+KCpmbG93VGhyZWFkKS5mbG93VGhyZWFkTmFtZSgpKTsKLSAg
ICAgICAgICAgIHJlZ2lvbkZsb3dJbmZvLT5zZXRBcnJheSgicmVnaW9ucyIsIGJ1aWxkT2JqZWN0
Rm9yQ1NTUmVnaW9uc0hpZ2hsaWdodCgmcmVnaW9uLCBmbG93VGhyZWFkKSk7Ci0gICAgICAgICAg
ICBlbGVtZW50SW5mby0+c2V0T2JqZWN0KCJyZWdpb25GbG93SW5mbyIsIHJlZ2lvbkZsb3dJbmZv
LnJlbGVhc2UoKSk7CisgICAgICAgICAgICBhdXRvIHJlZ2lvbkZsb3dEYXRhID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWdpb25GbG93RGF0YTo6Y3JlYXRlKCkKKyAgICAg
ICAgICAgICAgICAuc2V0TmFtZShkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dUaHJlYWQ+KCpmbG93
VGhyZWFkKS5mbG93VGhyZWFkTmFtZSgpKQorICAgICAgICAgICAgICAgIC5zZXRSZWdpb25zKGJ1
aWxkT2JqZWN0Rm9yRmxvd1JlZ2lvbnMoJnJlZ2lvbiwgZmxvd1RocmVhZCkpCisgICAgICAgICAg
ICAgICAgLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGVsZW1lbnREYXRhLT5zZXRSZWdpb25GbG93
RGF0YShXVEY6Om1vdmUocmVnaW9uRmxvd0RhdGEpKTsKICAgICAgICAgfQogICAgIH0KIAogICAg
IFJlbmRlckZsb3dUaHJlYWQqIGNvbnRhaW5pbmdGbG93VGhyZWFkID0gcmVuZGVyZXItPmZsb3dU
aHJlYWRDb250YWluaW5nQmxvY2soKTsKICAgICBpZiAoaXM8UmVuZGVyTmFtZWRGbG93VGhyZWFk
Pihjb250YWluaW5nRmxvd1RocmVhZCkpIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gY29udGVudEZsb3dJbmZvID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAg
Y29udGVudEZsb3dJbmZvLT5zZXRTdHJpbmcoIm5hbWUiLCBkb3duY2FzdDxSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ+KCpjb250YWluaW5nRmxvd1RocmVhZCkuZmxvd1RocmVhZE5hbWUoKSk7Ci0gICAg
ICAgIGVsZW1lbnRJbmZvLT5zZXRPYmplY3QoImNvbnRlbnRGbG93SW5mbyIsIGNvbnRlbnRGbG93
SW5mby5yZWxlYXNlKCkpOworICAgICAgICBhdXRvIGNvbnRlbnRGbG93RGF0YSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Q29udGVudEZsb3dEYXRhOjpjcmVhdGUoKQorICAg
ICAgICAgICAgLnNldE5hbWUoZG93bmNhc3Q8UmVuZGVyTmFtZWRGbG93VGhyZWFkPigqY29udGFp
bmluZ0Zsb3dUaHJlYWQpLmZsb3dUaHJlYWROYW1lKCkpCisgICAgICAgICAgICAucmVsZWFzZSgp
OworCisgICAgICAgIGVsZW1lbnREYXRhLT5zZXRDb250ZW50Rmxvd0RhdGEoV1RGOjptb3ZlKGNv
bnRlbnRGbG93RGF0YSkpOwogICAgIH0KIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgIGlm
IChpczxSZW5kZXJCb3g+KCpyZW5kZXJlcikpIHsKICAgICAgICAgYXV0byYgcmVuZGVyQm94ID0g
ZG93bmNhc3Q8UmVuZGVyQm94PigqcmVuZGVyZXIpOwotICAgICAgICBpZiAoUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gc2hhcGVPYmplY3QgPSBidWlsZE9iamVjdEZvclNoYXBlT3V0c2lkZShjb250
YWluaW5nRnJhbWUsICZyZW5kZXJCb3gpKQotICAgICAgICAgICAgZWxlbWVudEluZm8tPnNldE9i
amVjdCgic2hhcGVPdXRzaWRlSW5mbyIsIHNoYXBlT2JqZWN0LnJlbGVhc2UoKSk7CisgICAgICAg
IGlmIChSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpTaGFwZU91dHNp
ZGVEYXRhPiBzaGFwZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yU2hhcGVPdXRzaWRlKGNvbnRhaW5p
bmdGcmFtZSwgJnJlbmRlckJveCkpCisgICAgICAgICAgICBlbGVtZW50RGF0YS0+c2V0U2hhcGVP
dXRzaWRlRGF0YShXVEY6Om1vdmUoc2hhcGVPYmplY3QpKTsKICAgICB9CiAjZW5kaWYKIApAQCAt
NzQzLDEzICs3NTMsMTMgQEAgc3RhdGljIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2Jq
ZWN0Rm9yRWxlbWVudEluZm8oTm9kZSogbm9kZSkKIAogICAgIGlmIChBWE9iamVjdENhY2hlKiBh
eE9iamVjdENhY2hlID0gbm9kZS0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCkpIHsKICAgICAg
ICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYXhPYmplY3RDYWNoZS0+Z2V0
T3JDcmVhdGUobm9kZSkpCi0gICAgICAgICAgICBlbGVtZW50SW5mby0+c2V0U3RyaW5nKCJyb2xl
IiwgYXhPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpKTsKKyAgICAgICAgICAgIGVsZW1lbnRE
YXRhLT5zZXRSb2xlKGF4T2JqZWN0LT5jb21wdXRlZFJvbGVTdHJpbmcoKSk7CiAgICAgfQogCi0g
ICAgcmV0dXJuIFdURjo6bW92ZShlbGVtZW50SW5mbyk7CisgICAgcmV0dXJuIFdURjo6bW92ZShl
bGVtZW50RGF0YSk7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3Rvck92ZXJs
YXk6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29uc3QKK1JlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPiBJbnNwZWN0b3JP
dmVybGF5OjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2hpZ2hsaWdodE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzU5LDMzICs3
NjksMzAgQEAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yT3ZlcmxheTo6YnVpbGRP
YmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdAogICAgIGlmICghcmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBoaWdobGln
aHRGcmFnbWVudHMgPSBidWlsZE9iamVjdEZvclJlbmRlcmVyRnJhZ21lbnRzKHJlbmRlcmVyLCBt
X25vZGVIaWdobGlnaHRDb25maWcpOwotICAgIGlmICghaGlnaGxpZ2h0RnJhZ21lbnRzKQorICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpP
dmVybGF5VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0RGF0YT4+IGFycmF5T2ZGcmFnbWVudEhpZ2hs
aWdodHMgPSBidWlsZEFycmF5Rm9yUmVuZGVyZXJGcmFnbWVudHMocmVuZGVyZXIsIG1fbm9kZUhp
Z2hsaWdodENvbmZpZyk7CisgICAgaWYgKCFhcnJheU9mRnJhZ21lbnRIaWdobGlnaHRzKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGhpZ2hsaWdo
dE9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0KICAgICAvLyBUaGUgbWFpbiB2
aWV3J3Mgc2Nyb2xsIG9mZnNldCBpcyBzaGFyZWQgYWNyb3NzIGFsbCBxdWFkcy4KICAgICBGcmFt
ZVZpZXcqIG1haW5WaWV3ID0gbV9wYWdlLm1haW5GcmFtZSgpLnZpZXcoKTsKLSAgICBoaWdobGln
aHRPYmplY3QtPnNldE9iamVjdCgic2Nyb2xsIiwgYnVpbGRPYmplY3RGb3JQb2ludCghbWFpblZp
ZXctPmRlbGVnYXRlc1Njcm9sbGluZygpID8gbWFpblZpZXctPnZpc2libGVDb250ZW50UmVjdCgp
LmxvY2F0aW9uKCkgOiBGbG9hdFBvaW50KCkpKTsKIAotICAgIGhpZ2hsaWdodE9iamVjdC0+c2V0
QXJyYXkoImZyYWdtZW50cyIsIGhpZ2hsaWdodEZyYWdtZW50cy5yZWxlYXNlKCkpOworICAgIGF1
dG8gbm9kZUhpZ2hsaWdodE9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBl
czo6Tm9kZUhpZ2hsaWdodERhdGE6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRTY3JvbGxPZmZzZXQo
YnVpbGRPYmplY3RGb3JQb2ludCghbWFpblZpZXctPmRlbGVnYXRlc1Njcm9sbGluZygpID8gbWFp
blZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkgOiBGbG9hdFBvaW50KCkpKQor
ICAgICAgICAuc2V0RnJhZ21lbnRzKFdURjo6bW92ZShhcnJheU9mRnJhZ21lbnRIaWdobGlnaHRz
KSkKKyAgICAgICAgLnJlbGVhc2UoKTsKIAogICAgIGlmIChtX25vZGVIaWdobGlnaHRDb25maWcu
c2hvd0luZm8pIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZWxlbWVudEluZm8g
PSBidWlsZE9iamVjdEZvckVsZW1lbnRJbmZvKG5vZGUpOwotICAgICAgICBpZiAoZWxlbWVudElu
Zm8pCi0gICAgICAgICAgICBoaWdobGlnaHRPYmplY3QtPnNldE9iamVjdCgiZWxlbWVudEluZm8i
LCBlbGVtZW50SW5mby5yZWxlYXNlKCkpOworICAgICAgICBpZiAoUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RWxlbWVudERhdGE+IGVsZW1lbnREYXRhID0gYnVpbGRP
YmplY3RGb3JFbGVtZW50RGF0YShub2RlKSkKKyAgICAgICAgICAgIG5vZGVIaWdobGlnaHRPYmpl
Y3QtPnNldEVsZW1lbnREYXRhKFdURjo6bW92ZShlbGVtZW50RGF0YSkpOwogICAgIH0KLSAgICAg
ICAgCi0gICAgcmV0dXJuIFdURjo6bW92ZShoaWdobGlnaHRPYmplY3QpOworCisgICAgcmV0dXJu
IFdURjo6bW92ZShub2RlSGlnaGxpZ2h0T2JqZWN0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVy
bGF5OjpkcmF3Tm9kZUhpZ2hsaWdodCgpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
aGlnaGxpZ2h0T2JqZWN0ID0gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKTsKLSAgICBp
ZiAoIWhpZ2hsaWdodE9iamVjdCkKLSAgICAgICAgcmV0dXJuOwotICAgIGV2YWx1YXRlSW5PdmVy
bGF5KCJkcmF3Tm9kZUhpZ2hsaWdodCIsIGhpZ2hsaWdodE9iamVjdCk7CisgICAgaWYgKFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPiBo
aWdobGlnaHRPYmplY3QgPSBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpKQorICAgICAg
ICBldmFsdWF0ZUluT3ZlcmxheSgiZHJhd05vZGVIaWdobGlnaHQiLCBXVEY6Om1vdmUoaGlnaGxp
Z2h0T2JqZWN0KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1F1YWRIaWdobGln
aHQoKQpAQCAtNzk0LDcgKzgwMSw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1F1YWRI
aWdobGlnaHQoKQogICAgICAgICByZXR1cm47CiAKICAgICBIaWdobGlnaHQgaGlnaGxpZ2h0Owot
ICAgIGJ1aWxkUXVhZEhpZ2hsaWdodCgqbV9oaWdobGlnaHRRdWFkLCBtX3F1YWRIaWdobGlnaHRD
b25maWcsICZoaWdobGlnaHQpOworICAgIGJ1aWxkUXVhZEhpZ2hsaWdodCgqbV9oaWdobGlnaHRR
dWFkLCBtX3F1YWRIaWdobGlnaHRDb25maWcsIGhpZ2hsaWdodCk7CiAgICAgZXZhbHVhdGVJbk92
ZXJsYXkoImRyYXdRdWFkSGlnaGxpZ2h0IiwgYnVpbGRPYmplY3RGb3JIaWdobGlnaHQoaGlnaGxp
Z2h0KSk7CiB9CiAKQEAgLTg1OSwxMSArODY2LDEyIEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6
Zm9yY2VQYWludCgpCiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6cmVzZXQoY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplLCBjb25zdCBJbnRTaXplJiBmcmFtZVZpZXdGdWxsU2l6ZSkKIHsKLSAg
ICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXNldERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwotICAgIHJlc2V0RGF0YS0+c2V0RG91YmxlKCJkZXZpY2VTY2FsZUZhY3RvciIsIG1fcGFn
ZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICByZXNldERhdGEtPnNldE9iamVjdCgidmlld3Bv
cnRTaXplIiwgYnVpbGRPYmplY3RGb3JTaXplKHZpZXdwb3J0U2l6ZSkpOwotICAgIHJlc2V0RGF0
YS0+c2V0T2JqZWN0KCJmcmFtZVZpZXdGdWxsU2l6ZSIsIGJ1aWxkT2JqZWN0Rm9yU2l6ZShmcmFt
ZVZpZXdGdWxsU2l6ZSkpOwotICAgIGV2YWx1YXRlSW5PdmVybGF5KCJyZXNldCIsIFdURjo6bW92
ZShyZXNldERhdGEpKTsKKyAgICBhdXRvIGNvbmZpZ09iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok92ZXJsYXlUeXBlczo6T3ZlcmxheUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpCisgICAgICAg
IC5zZXREZXZpY2VTY2FsZUZhY3RvcihtX3BhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSkKKyAgICAg
ICAgLnNldFZpZXdwb3J0U2l6ZShidWlsZE9iamVjdEZvclNpemUodmlld3BvcnRTaXplKSkKKyAg
ICAgICAgLnNldEZyYW1lVmlld0Z1bGxTaXplKGJ1aWxkT2JqZWN0Rm9yU2l6ZShmcmFtZVZpZXdG
dWxsU2l6ZSkpCisgICAgICAgIC5yZWxlYXNlKCk7CisgICAgZXZhbHVhdGVJbk92ZXJsYXkoInJl
c2V0IiwgV1RGOjptb3ZlKGNvbmZpZ09iamVjdCkpOwogfQogCiB2b2lkIEluc3BlY3Rvck92ZXJs
YXk6OmV2YWx1YXRlSW5PdmVybGF5KGNvbnN0IFN0cmluZyYgbWV0aG9kKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKaW5kZXggZTVjZmVlZjI1NzU2ZmJlZmYy
ZTBkNzJlZjJiYzlhZmUwZWM4YTdmNS4uNDMyNmExMDVhMDk2MDdkOWRhMDBmOTk4YWQzNjBiMWE2
ODBmY2RhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5o
CkBAIC00MSw2ICs0MSwxMiBAQAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0
b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKKworbmFtZXNwYWNlIFByb3RvY29sIHsK
K25hbWVzcGFjZSBPdmVybGF5VHlwZXMgeworY2xhc3MgTm9kZUhpZ2hsaWdodERhdGE7Cit9Cit9
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY0LDE3ICs3MCwxMyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCB1c2VQYWdlQ29vcmRpbmF0ZXM7CiB9OwogCi1lbnVtIEhpZ2hsaWdodFR5cGUgewot
ICAgIEhpZ2hsaWdodFR5cGVOb2RlLAotICAgIEhpZ2hsaWdodFR5cGVSZWN0cywKK2VudW0gY2xh
c3MgSGlnaGxpZ2h0VHlwZSB7CisgICAgTm9kZSwgLy8gUHJvdmlkZXMgNCBxdWFkczogbWFyZ2lu
LCBib3JkZXIsIHBhZGRpbmcsIGNvbnRlbnQuCisgICAgUmVjdHMsIC8vIFByb3ZpZGVzIGEgbGlz
dCBvZiBxdWFkcy4KIH07CiAKIHN0cnVjdCBIaWdobGlnaHQgewotICAgIEhpZ2hsaWdodCgpCi0g
ICAgICAgIDogdHlwZShIaWdobGlnaHRUeXBlTm9kZSkKLSAgICAgICAgLCB1c2VQYWdlQ29vcmRp
bmF0ZXModHJ1ZSkKLSAgICB7Ci0gICAgfQorICAgIEhpZ2hsaWdodCgpIHsgfQogCiAgICAgdm9p
ZCBzZXREYXRhRnJvbUNvbmZpZyhjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdodENvbmZp
ZykKICAgICB7CkBAIC05MiwxMSArOTQsOSBAQCBzdHJ1Y3QgSGlnaGxpZ2h0IHsKICAgICBDb2xv
ciBib3JkZXJDb2xvcjsKICAgICBDb2xvciBtYXJnaW5Db2xvcjsKIAotICAgIC8vIFdoZW4gdGhl
IHR5cGUgaXMgTm9kZSwgdGhlcmUgYXJlIDQgcXVhZHMgKG1hcmdpbiwgYm9yZGVyLCBwYWRkaW5n
LCBjb250ZW50KS4KLSAgICAvLyBXaGVuIHRoZSB0eXBlIGlzIFJlY3RzLCB0aGlzIGlzIGp1c3Qg
YSBsaXN0IG9mIHF1YWRzLgotICAgIEhpZ2hsaWdodFR5cGUgdHlwZTsKKyAgICBIaWdobGlnaHRU
eXBlIHR5cGUge0hpZ2hsaWdodFR5cGU6Ok5vZGV9OwogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1
YWRzOwotICAgIGJvb2wgdXNlUGFnZUNvb3JkaW5hdGVzOworICAgIGJvb2wgdXNlUGFnZUNvb3Jk
aW5hdGVzIHt0cnVlfTsKIH07CiAKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXkgewpAQCAtMTEyLDcg
KzExMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlKCk7CiAgICAgdm9pZCBwYWludChH
cmFwaGljc0NvbnRleHQmKTsKLSAgICB2b2lkIGdldEhpZ2hsaWdodChIaWdobGlnaHQqLCBDb29y
ZGluYXRlU3lzdGVtKSBjb25zdDsKKyAgICB2b2lkIGdldEhpZ2hsaWdodChIaWdobGlnaHQmLCBD
b29yZGluYXRlU3lzdGVtKSBjb25zdDsKIAogICAgIHZvaWQgc2V0UGF1c2VkSW5EZWJ1Z2dlck1l
c3NhZ2UoY29uc3QgU3RyaW5nKik7CiAKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKTsKIAotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBj
b25zdDsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2Rl
SGlnaGxpZ2h0RGF0YT4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIAog
ICAgIHZvaWQgZnJlZVBhZ2UoKTsKIHByaXZhdGU6CkBAIC0xNjEsOCArMTYxLDggQEAgcHJpdmF0
ZToKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1l
X3BvaW50LCBGbG9hdFJlY3Q+IFRpbWVSZWN0UGFpcjsKICAgICBEZXF1ZTxUaW1lUmVjdFBhaXI+
IG1fcGFpbnRSZWN0czsKICAgICBUaW1lciBtX3BhaW50UmVjdFVwZGF0ZVRpbWVyOwotICAgIGJv
b2wgbV9pbmRpY2F0aW5nOwotICAgIGJvb2wgbV9zaG93aW5nUGFpbnRSZWN0czsKKyAgICBib29s
IG1faW5kaWNhdGluZyB7ZmFsc2V9OworICAgIGJvb2wgbV9zaG93aW5nUGFpbnRSZWN0cyB7ZmFs
c2V9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpzCmluZGV4IDAyMTk1YzcwOTE0ZWY1YjEx
OTMzMzk1OWI4ZmZhNzk1ZWJjM2ZkMzAuLmNhNWIzOThmZjMyZmJkMzc0NDc2YmEwZTA4MjliZDU4
ZTFkNjg0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JP
dmVybGF5UGFnZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheVBhZ2UuanMKQEAgLTI2MSwzNiArMjYxLDM2IEBAIGZ1bmN0aW9uIF90cnVuY2F0ZVN0cmlu
Zyh2YWx1ZSwgbWF4TGVuZ3RoKQogICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiBt
YXhMZW5ndGggPyB2YWx1ZS5zdWJzdHJpbmcoMCwgNTApICsgIlx1MjAyNiIgOiB2YWx1ZTsKIH0K
IAotZnVuY3Rpb24gX2NyZWF0ZUVsZW1lbnRUaXRsZShlbGVtZW50SW5mbykKK2Z1bmN0aW9uIF9j
cmVhdGVFbGVtZW50VGl0bGUoZWxlbWVudERhdGEpCiB7CiAgICAgdmFyIGJ1aWxkZXIgPSBuZXcg
RE9NQnVpbGRlcigiZGl2IiwgImVsZW1lbnQtdGl0bGUiKTsKICAgICAKLSAgICBidWlsZGVyLmFw
cGVuZFNwYW5JZk5vdE51bGwoInRhZy1uYW1lIiwgZWxlbWVudEluZm8udGFnTmFtZSk7Ci0gICAg
YnVpbGRlci5hcHBlbmRTcGFuSWZOb3ROdWxsKCJub2RlLWlkIiwgZWxlbWVudEluZm8uaWRWYWx1
ZSwgIiMiKTsKLSAgICBidWlsZGVyLmFwcGVuZFNwYW5JZk5vdE51bGwoImNsYXNzLW5hbWUiLCBf
dHJ1bmNhdGVTdHJpbmcoZWxlbWVudEluZm8uY2xhc3NOYW1lLCA1MCkpOworICAgIGJ1aWxkZXIu
YXBwZW5kU3BhbklmTm90TnVsbCgidGFnLW5hbWUiLCBlbGVtZW50RGF0YS50YWdOYW1lKTsKKyAg
ICBidWlsZGVyLmFwcGVuZFNwYW5JZk5vdE51bGwoIm5vZGUtaWQiLCBlbGVtZW50RGF0YS5pZFZh
bHVlLCAiIyIpOworICAgIGJ1aWxkZXIuYXBwZW5kU3BhbklmTm90TnVsbCgiY2xhc3MtbmFtZSIs
IF90cnVuY2F0ZVN0cmluZyhlbGVtZW50RGF0YS5jbGFzc05hbWUsIDUwKSk7CiAKICAgICBidWls
ZGVyLmFwcGVuZFRleHROb2RlKCIgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRTcGFuKCJub2RlLXdp
ZHRoIiwgZWxlbWVudEluZm8ubm9kZVdpZHRoKTsKKyAgICBidWlsZGVyLmFwcGVuZFNwYW4oIm5v
ZGUtd2lkdGgiLCBlbGVtZW50RGF0YS5zaXplLndpZHRoKTsKICAgICAvLyBceGQ3IGlzIHRoZSBj
b2RlIGZvciB0aGUgJnRpbWVzOyBIVE1MIGVudGl0eS4KICAgICBidWlsZGVyLmFwcGVuZFNwYW4o
InB4IiwgInB4IFx4ZDcgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRTcGFuKCJub2RlLWhlaWdodCIs
IGVsZW1lbnRJbmZvLm5vZGVIZWlnaHQpOworICAgIGJ1aWxkZXIuYXBwZW5kU3Bhbigibm9kZS1o
ZWlnaHQiLCBlbGVtZW50RGF0YS5zaXplLmhlaWdodCk7CiAgICAgYnVpbGRlci5hcHBlbmRTcGFu
KCJweCIsICJweCIpOwogCi0gICAgYnVpbGRlci5hcHBlbmRQcm9wZXJ0eUlmTm90TnVsbCgicm9s
ZS1uYW1lIiwgIlJvbGUiLCBlbGVtZW50SW5mby5yb2xlKTsKLSAgICBidWlsZGVyLmFwcGVuZFBy
b3BlcnR5SWZOb3ROdWxsKCJyZWdpb24tZmxvdy1uYW1lIiwgIlJlZ2lvbiBGbG93IiwgZWxlbWVu
dEluZm8ucmVnaW9uRmxvd0luZm8gPyBlbGVtZW50SW5mby5yZWdpb25GbG93SW5mby5uYW1lIDog
bnVsbCk7Ci0gICAgYnVpbGRlci5hcHBlbmRQcm9wZXJ0eUlmTm90TnVsbCgiY29udGVudC1mbG93
LW5hbWUiLCAiQ29udGVudCBGbG93IiwgZWxlbWVudEluZm8uY29udGVudEZsb3dJbmZvID8gZWxl
bWVudEluZm8uY29udGVudEZsb3dJbmZvLm5hbWUgOiBudWxsKTsKKyAgICBidWlsZGVyLmFwcGVu
ZFByb3BlcnR5SWZOb3ROdWxsKCJyb2xlLW5hbWUiLCAiUm9sZSIsIGVsZW1lbnREYXRhLnJvbGUp
OworICAgIGJ1aWxkZXIuYXBwZW5kUHJvcGVydHlJZk5vdE51bGwoInJlZ2lvbi1mbG93LW5hbWUi
LCAiUmVnaW9uIEZsb3ciLCBlbGVtZW50RGF0YS5yZWdpb25GbG93RGF0YSA/IGVsZW1lbnREYXRh
LnJlZ2lvbkZsb3dEYXRhLm5hbWUgOiBudWxsKTsKKyAgICBidWlsZGVyLmFwcGVuZFByb3BlcnR5
SWZOb3ROdWxsKCJjb250ZW50LWZsb3ctbmFtZSIsICJDb250ZW50IEZsb3ciLCBlbGVtZW50RGF0
YS5jb250ZW50Rmxvd0RhdGEgPyBlbGVtZW50RGF0YS5jb250ZW50Rmxvd0RhdGEubmFtZSA6IG51
bGwpOwogCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZW1lbnQtdGl0bGUtY29udGFp
bmVyIikuYXBwZW5kQ2hpbGQoYnVpbGRlci5lbGVtZW50KTsKIAogICAgIHJldHVybiBidWlsZGVy
LmVsZW1lbnQ7CiB9CiAKLWZ1bmN0aW9uIF9kcmF3RWxlbWVudFRpdGxlKGVsZW1lbnRJbmZvLCBm
cmFnbWVudEhpZ2hsaWdodCwgc2Nyb2xsKQorZnVuY3Rpb24gX2RyYXdFbGVtZW50VGl0bGUoZWxl
bWVudERhdGEsIGZyYWdtZW50SGlnaGxpZ2h0LCBzY3JvbGwpCiB7Ci0gICAgaWYgKCFlbGVtZW50
SW5mbyB8fCAhZnJhZ21lbnRIaWdobGlnaHQucXVhZHMubGVuZ3RoKQorICAgIGlmICghZWxlbWVu
dERhdGEgfHwgIWZyYWdtZW50SGlnaGxpZ2h0LnF1YWRzLmxlbmd0aCkKICAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIHZhciBlbGVtZW50VGl0bGUgPSBfY3JlYXRlRWxlbWVudFRpdGxlKGVsZW1l
bnRJbmZvKTsKKworICAgIHZhciBlbGVtZW50VGl0bGUgPSBfY3JlYXRlRWxlbWVudFRpdGxlKGVs
ZW1lbnREYXRhKTsKIAogICAgIHZhciBtYXJnaW5RdWFkID0gZnJhZ21lbnRIaWdobGlnaHQucXVh
ZHNbMF07CiAKQEAgLTMwNSwxMSArMzA1LDEwIEBAIGZ1bmN0aW9uIF9kcmF3RWxlbWVudFRpdGxl
KGVsZW1lbnRJbmZvLCBmcmFnbWVudEhpZ2hsaWdodCwgc2Nyb2xsKQogICAgIHZhciByZW5kZXJB
cnJvd0Rvd24gPSBmYWxzZTsKIAogICAgIHZhciBib3hYID0gbWFyZ2luUXVhZFswXS54OwotICAg
IAotICAgIHZhciBjb250YWluaW5nUmVnaW9uID0gZnJhZ21lbnRIaWdobGlnaHQucmVnaW9uOwot
ICAgIGlmIChjb250YWluaW5nUmVnaW9uKSB7CisKKyAgICB2YXIgY2xpcFF1YWQgPSBmcmFnbWVu
dEhpZ2hsaWdodC5yZWdpb25DbGlwcGluZ0FyZWE7CisgICAgaWYgKGNsaXBRdWFkKSB7CiAgICAg
ICAgIC8vIFJlc3RyaWN0IHRoZSBwb3NpdGlvbiBvZiB0aGUgdGl0bGUgYm94IHRvIHRoZSBhcmVh
IG9mIHRoZSBjb250YWluaW5nIHJlZ2lvbi4KLSAgICAgICAgdmFyIGNsaXBRdWFkID0gY29udGFp
bmluZ1JlZ2lvbi5xdWFkOwogICAgICAgICBhbmNob3JUb3AgPSBNYXRoLm1heChhbmNob3JUb3As
IE1hdGgubWluKGNsaXBRdWFkWzBdLnksIGNsaXBRdWFkWzFdLnksIGNsaXBRdWFkWzJdLnksIGNs
aXBRdWFkWzNdLnkpKTsKICAgICAgICAgYW5jaG9yQm90dG9tID0gTWF0aC5taW4oYW5jaG9yQm90
dG9tLCBNYXRoLm1heChjbGlwUXVhZFswXS55LCBjbGlwUXVhZFsxXS55LCBjbGlwUXVhZFsyXS55
LCBjbGlwUXVhZFszXS55KSk7CiAgICAgICAgIGJveFggPSBNYXRoLm1heChib3hYLCBNYXRoLm1p
bihjbGlwUXVhZFswXS54LCBjbGlwUXVhZFsxXS54LCBjbGlwUXVhZFsyXS54LCBjbGlwUXVhZFsz
XS54KSk7CkBAIC00MzAsOSArNDI5LDkgQEAgZnVuY3Rpb24gX2RyYXdGcmFnbWVudEhpZ2hsaWdo
dChoaWdobGlnaHQpCiAKICAgICBjb250ZXh0LnNhdmUoKTsKIAotICAgIGlmIChoaWdobGlnaHQu
cmVnaW9uKSB7CisgICAgaWYgKGhpZ2hsaWdodC5yZWdpb25DbGlwcGluZ0FyZWEpIHsKICAgICAg
ICAgLy8gQ2xpcCB0byB0aGUgY29udGFpbmluZyByZWdpb24gdG8gYXZvaWQgc2hvd2luZyBmcmFn
bWVudHMgdGhhdCBhcmUgbm90IHJlbmRlcmVkIGJ5IHRoaXMgcmVnaW9uLgotICAgICAgICBxdWFk
VG9QYXRoKGhpZ2hsaWdodC5yZWdpb24ucXVhZCkuY2xpcCgpOworICAgICAgICBxdWFkVG9QYXRo
KGhpZ2hsaWdodC5yZWdpb25DbGlwcGluZ0FyZWEpLmNsaXAoKTsKICAgICB9CiAKICAgICB2YXIg
cXVhZHMgPSBoaWdobGlnaHQucXVhZHMuc2xpY2UoKTsKQEAgLTQ5MSwyMyArNDkwLDIzIEBAIGZ1
bmN0aW9uIGhpZGVQYWdlSW5kaWNhdGlvbigpCiBmdW5jdGlvbiBkcmF3Tm9kZUhpZ2hsaWdodCho
aWdobGlnaHQpCiB7CiAgICAgY29udGV4dC5zYXZlKCk7Ci0gICAgY29udGV4dC50cmFuc2xhdGUo
LWhpZ2hsaWdodC5zY3JvbGwueCwgLWhpZ2hsaWdodC5zY3JvbGwueSk7CisgICAgY29udGV4dC50
cmFuc2xhdGUoLWhpZ2hsaWdodC5zY3JvbGxPZmZzZXQueCwgLWhpZ2hsaWdodC5zY3JvbGxPZmZz
ZXQueSk7CiAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhpZ2hsaWdodC5mcmFnbWVudHMubGVu
Z3RoOyArK2kpCiAgICAgICAgIF9kcmF3RnJhZ21lbnRIaWdobGlnaHQoaGlnaGxpZ2h0LmZyYWdt
ZW50c1tpXSk7CiAKLSAgICBpZiAoaGlnaGxpZ2h0LmVsZW1lbnRJbmZvICYmIGhpZ2hsaWdodC5l
bGVtZW50SW5mby5yZWdpb25GbG93SW5mbykKLSAgICAgICAgX2RyYXdSZWdpb25zSGlnaGxpZ2h0
KGhpZ2hsaWdodC5lbGVtZW50SW5mby5yZWdpb25GbG93SW5mby5yZWdpb25zKTsKKyAgICBpZiAo
aGlnaGxpZ2h0LmVsZW1lbnREYXRhICYmIGhpZ2hsaWdodC5lbGVtZW50RGF0YS5yZWdpb25GbG93
RGF0YSkKKyAgICAgICAgX2RyYXdSZWdpb25zSGlnaGxpZ2h0KGhpZ2hsaWdodC5lbGVtZW50RGF0
YS5yZWdpb25GbG93RGF0YS5yZWdpb25zKTsKIAotICAgIGlmIChoaWdobGlnaHQuZWxlbWVudElu
Zm8gJiYgaGlnaGxpZ2h0LmVsZW1lbnRJbmZvLnNoYXBlT3V0c2lkZUluZm8pCi0gICAgICAgIF9k
cmF3U2hhcGVIaWdobGlnaHQoaGlnaGxpZ2h0LmVsZW1lbnRJbmZvLnNoYXBlT3V0c2lkZUluZm8p
OworICAgIGlmIChoaWdobGlnaHQuZWxlbWVudERhdGEgJiYgaGlnaGxpZ2h0LmVsZW1lbnREYXRh
LnNoYXBlT3V0c2lkZURhdGEpCisgICAgICAgIF9kcmF3U2hhcGVIaWdobGlnaHQoaGlnaGxpZ2h0
LmVsZW1lbnREYXRhLnNoYXBlT3V0c2lkZURhdGEpOwogCiAgICAgY29udGV4dC5yZXN0b3JlKCk7
CiAKICAgICB2YXIgZWxlbWVudFRpdGxlQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImVsZW1lbnQtdGl0bGUtY29udGFpbmVyIik7CiAgICAgZWxlbWVudFRpdGxlQ29udGFpbmVy
LmlubmVySFRNTCA9ICIiOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGlnaGxpZ2h0LmZyYWdt
ZW50cy5sZW5ndGg7ICsraSkKLSAgICAgICAgX2RyYXdFbGVtZW50VGl0bGUoaGlnaGxpZ2h0LmVs
ZW1lbnRJbmZvLCBoaWdobGlnaHQuZnJhZ21lbnRzW2ldLCBoaWdobGlnaHQuc2Nyb2xsKTsKKyAg
ICAgICAgX2RyYXdFbGVtZW50VGl0bGUoaGlnaGxpZ2h0LmVsZW1lbnREYXRhLCBoaWdobGlnaHQu
ZnJhZ21lbnRzW2ldLCBoaWdobGlnaHQuc2Nyb2xsT2Zmc2V0KTsKIH0KIAogZnVuY3Rpb24gZHJh
d1F1YWRIaWdobGlnaHQoaGlnaGxpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IGQyODYzN2Q2MmU2MzFiOTQwOGU5YTM2ODQ3MWY4Nzk5ZjJmNDM0MjAuLmU5ZmFlZDAx
NmU5OTBlNTExMDQ3M2JmZDZmZjEwY2VlNDU4ZmZmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTc4NSw3ICs3ODUsNyBAQCBSZWY8Q2xpZW50UmVjdExpc3Q+IEludGVy
bmFsczo6aW5zcGVjdG9ySGlnaGxpZ2h0UmVjdHMoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgfQog
CiAgICAgSGlnaGxpZ2h0IGhpZ2hsaWdodDsKLSAgICBkb2N1bWVudC0+cGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuZ2V0SGlnaGxpZ2h0KCZoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6
OkNvb3JkaW5hdGVTeXN0ZW06OlZpZXcpOworICAgIGRvY3VtZW50LT5wYWdlKCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5nZXRIaWdobGlnaHQoaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpD
b29yZGluYXRlU3lzdGVtOjpWaWV3KTsKICAgICByZXR1cm4gQ2xpZW50UmVjdExpc3Q6OmNyZWF0
ZShoaWdobGlnaHQucXVhZHMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZWMpOwpAQCAtODAx
LDcgKzgwMSw3IEBAIFN0cmluZyBJbnRlcm5hbHM6Omluc3BlY3RvckhpZ2hsaWdodE9iamVjdChF
eGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
b2JqZWN0ID0gZG9jdW1lbnQtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmJ1aWxkT2Jq
ZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCk7CisgICAgYXV0byBvYmplY3QgPSBkb2N1bWVudC0+cGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUo
KTsKICAgICByZXR1cm4gb2JqZWN0ID8gb2JqZWN0LT50b0pTT05TdHJpbmcoKSA6IFN0cmluZygp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9X
ZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRleCAxYWYxZTM1YWNkZGQ2YjZhNDQ3ZTE2Mzk3OTkxMjVl
NzcxNjZlYWJhLi5mYzcxZjEyZDY4OGQxZTM2NDYxM2M4NTBjMGEzYjBiZjRiNjMxMmE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRv
ci9XZWJLaXRFeHBvcnRzLmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9q
L1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgpAQCAtMjA4LDggKzIw
OCw2IEBAIEVYUE9SVFMKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2l0ZW1AU3RhdGljTm9k
ZUxpc3RAV2ViQ29yZUBAVUJFUEFWTm9kZUAyQElAWiwgP2l0ZW1AU3RhdGljTm9kZUxpc3RAV2Vi
Q29yZUBAVUVCQVBFQVZOb2RlQDJASUBaKQogICAgICAgICA/c2VsZWN0VGFnQEhUTUxOYW1lc0BX
ZWJDb3JlQEAzVkhUTUxRdWFsaWZpZWROYW1lQDJAQgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9idWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZUBJ
bnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFCRT9BVj8kUmVmUHRyQFZJbnNwZWN0b3JPYmpl
Y3RASW5zcGVjdG9yQEBAV1RGQEBYWiwgP2J1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlQElu
c3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUVCQT9BVj8kUmVmUHRyQFZJbnNwZWN0b3JPYmpl
Y3RASW5zcGVjdG9yQEBAV1RGQEBYWikKLSAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2dldEhp
Z2hsaWdodEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFCRVhQQVVIaWdobGlnaHRAMkBX
NENvb3JkaW5hdGVTeXN0ZW1ASW5zcGVjdG9yT3ZlcmxheUAyQEBaLCA/Z2V0SGlnaGxpZ2h0QElu
c3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUVCQVhQRUFVSGlnaGxpZ2h0QDJAVzRDb29yZGlu
YXRlU3lzdGVtQEluc3BlY3Rvck92ZXJsYXlAMkBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50
ZXIoP2luc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkBX
ZWJDb3JlQEBTQVBBVkluc3RydW1lbnRpbmdBZ2VudHNAMkBQQVZQYWdlQDJAQFosID9pbnN0cnVt
ZW50aW5nQWdlbnRzRm9yUGFnZUBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25AV2ViQ29yZUBAU0FQ
RUFWSW5zdHJ1bWVudGluZ0FnZW50c0AyQFBFQVZQYWdlQDJAQFopCiAgICAgICAgID9zX2Zyb250
ZW5kQ291bnRlckBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25AV2ViQ29yZUBAMEhBCiAgICAgICAg
IHN5bWJvbFdpdGhQb2ludGVyKD9pc1VuZGVyVGVzdEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsQFdlYkNvcmVAQFVBRV9OWFosID9pc1VuZGVyVGVzdEBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsQFdlYkNvcmVAQFVFQUFfTlhaKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244851</attachid>
            <date>2015-01-17 20:32:13 -0800</date>
            <delta_ts>2015-01-17 20:32:13 -0800</delta_ts>
            <desc>EWS Round 3</desc>
            <filename>bug-129441-20150117203132.patch</filename>
            <type>text/plain</type>
            <size>57393</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MjFmZWEzN2ZjMTM2NTYyMDM4ODk1N2MxNmUwMTVkNDQzYTZmOTIyLi5iODMyM2FjM2I0ZDdkMjYx
NjgwM2JlODgzYzUxNDNiMjdlOTNhMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNS0wMS0xNyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaGlnaGxpZ2h0IGRhdGEgZm9yIG92ZXJs
YXkgc2hvdWxkIHVzZSBwcm90b2NvbCB0eXBlIGJ1aWxkZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0NDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgQWRkIGEgbmV3IGRvbWFpbiBmb3Igb3Zlcmxh
eSB0eXBlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL092ZXJsYXlUeXBlcy5q
c29uOiBBZGRlZC4KKwogMjAxNS0wMS0xNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxl
LmNvbT4KIAogICAgICAgICBDcmFzaCBpbiBKU1Njb3BlOjpyZXNvbHZlKCkgb24gdG9vbHMudXBz
LmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDhiNjMyZjAzNDFkZjE5OTFkYTdjYzM0MTk3MzQzZGQ3Zjc1NmMy
ZDUuLmY5M2Q4YTA4MzRmMmExNWVjOGNjMWU0OTUxYTZjMWE5MmRjZDliNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw3MiBAQAorMjAxNS0wMS0xNyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2Fz
aGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaGlnaGxpZ2h0IGRhdGEgZm9y
IG92ZXJsYXkgc2hvdWxkIHVzZSBwcm90b2NvbCB0eXBlIGJ1aWxkZXJzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0NDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgQXMgYSBmaXJzdCBzdGVwIHRvd2Fy
ZHMgY2xlYW5pbmcgdXAgdGhlIGluc3BlY3RvciBvdmVybGF5LCBjb252ZXJ0IGhpZ2hsaWdodAor
ICAgICAgICBkYXRhIGNvbnN0cnVjdGlvbiB0byB1c2UgcHJvdG9jb2wgdHlwZSBidWlsZGVycy4g
SXQncyBub3cgcmVhbGx5IG9idmlvdXMgd2hhdAorICAgICAgICBkYXRhIGlzIGJlaW5nIHNlbnQg
dG8gdGhlIGluc3BlY3RvciBvdmVybGF5IHBhZ2UuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgcGF2
ZXMgdGhlIHdheSB0b3dhcmRzIHVzaW5nIGluc3BlY3RvciBwcm90b2NvbCBjb21tYW5kcyBhbmQg
ZXZlbnRzCisgICAgICAgIGlmIHdlIHdhbnQgdG8gc3VwcG9ydCBtb3JlIGludGVyYWN0aXZlIGZ1
bmN0aW9uYWxpdHkgaW4gdGhlIGluc3BlY3RvciBvdmVybGF5LgorCisgICAgICAgIFRoaXMgcGF0
Y2ggbWFrZXMgYSBmZXcgc3R5bGUgY2xlYW51cHMsIHN1Y2ggYXMgc3RhbmRhcmRpemluZyB2YXJp
YWJsZSBuYW1lcywKKyAgICAgICAgdXNpbmcgZGVmYXVsdCBtZW1iZXIgaW5pdGlhbGl6ZXJzLCBw
YXNzaW5nIGJ5IHJlZmVyZW5jZSwgYW5kIGZpeGluZyBjYXN0cy4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRIaWdobGlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdCk6IERlbGV0
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZFJlbmRlcmVySGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkTm9kZUhpZ2hsaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFF1YWRIaWdobGlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6SW5zcGVjdG9yT3ZlcmxheSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JPdmVybGF5OjpnZXRIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
YnVpbGRPYmplY3RGb3JQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRBcnJheUZvclF1YWQpOgorICAgICAgICAoV2Vi
Q29yZTo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRP
YmplY3RGb3JSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JGbG93UmVn
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6YnVpbGRRdWFkT2JqZWN0Rm9yQ1NTUmVnaW9uQ29udGVudENsaXApOgorICAgICAg
ICBTaW1wbGlmeSBob3cgdGhlIGNsaXBwaW5nIGFyZWEgaXMgZW5jb2RlZC4gSXQncyBub3cgJ3Jl
Z2lvbkNsaXBwaW5nQXJlYScKKyAgICAgICAgc3RvcmVkIG9uIGEgRnJhZ21lbnRIaWdobGlnaHRE
YXRhIGluc3RhbmNlLgorCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5Ojp1cGRh
dGVQYWludFJlY3RzVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVy
bGF5OjpkcmF3UGFpbnRSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEFycmF5Rm9yUmVu
ZGVyZXJGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUGF0aENvbW1hbmRBbmRQ
b2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUGF0aFNlZ21lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6YnVpbGRPYmplY3RGb3JTaGFwZU91dHNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6
YnVpbGRPYmplY3RGb3JFbGVtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JP
dmVybGF5OjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3Tm9kZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3UXVhZEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JPdmVybGF5OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVj
dEZvclJlZ2lvbkhpZ2hsaWdodCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpidWlsZE9i
amVjdEZvckNTU1JlZ2lvbnNIaWdobGlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
YnVpbGRPYmplY3RGb3JDU1NSZWdpb25Db250ZW50Q2xpcCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpidWlsZE9iamVjdEZvclJlbmRlcmVyRnJhZ21lbnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudEluZm8pOiBEZWxldGVkLgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5Lmg6CisgICAgICAgIChXZWJDb3JlOjpIaWdo
bGlnaHQ6OkhpZ2hsaWdodCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQ
YWdlLmpzOgorICAgICAgICAoX2NyZWF0ZUVsZW1lbnRUaXRsZSk6CisgICAgICAgIChfZHJhd0Vs
ZW1lbnRUaXRsZSk6CisgICAgICAgIChfZHJhd0ZyYWdtZW50SGlnaGxpZ2h0KToKKyAgICAgICAg
KGRyYXdOb2RlSGlnaGxpZ2h0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omluc3BlY3RvckhpZ2hsaWdodFJlY3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aW5zcGVjdG9ySGlnaGxpZ2h0T2JqZWN0KToKKwog
MjAxNS0wMS0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtTVkcgLT4gT1RGIENvbnZlcnRlcl0gQ3Jhc2hlcyB3aGVuIFNWRyBmb250IGlzIGlu
dmFsaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNzgwYmM4ODlkZjA2YTJhZDNkNzExNThjMTJhOTMwNjgyNjA4ZmI0
OC4uZTU4ZWFjOGViY2JjN2EyMmNkNWMzNzgwNzc0MTk4NWRlOWY1ZWFhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAxNS0wMS0xNyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGlu
Z3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaGlnaGxpZ2h0IGRhdGEgZm9yIG92
ZXJsYXkgc2hvdWxkIHVzZSBwcm90b2NvbCB0eXBlIGJ1aWxkZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0NDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdEV4
cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbjogVXBkYXRlIHN5bWJvbC4KKwogMjAx
NS0wMS0xNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2luXSBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMTc4NDU5IGFuZCByMTc4NDYyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDZiMjE1MjBmZjJhYzhiZjUyNjVlYjM1
ODAwMTYyZjZmOTEyYzk3YzAuLjQ2YWU0NGVlMjU5M2I2ODIzNjMyZDFlOTgwMmI3YWI1NmExZjIz
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwMjQsNiArMTAyNCw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9JTlNQRUNUT1JfRE9NQUlOUwogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9pbnNwZWN0b3IvcHJvdG9jb2wvSW5zcGVjdG9yLmpzb24KICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0xheWVyVHJlZS5qc29uCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KKyAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL092ZXJsYXlUeXBlcy5qc29u
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb24K
ICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNv
bgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvcHJvdG9jb2wvVGltZWxpbmUu
anNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA1MjQy
MWVjODgxMTUxYjE2YTkzZDU0NWZkOWM1NDQ5YWMxOTg3MDk3Li4xMmFmZWEyNGE2ZWU1NmE2MGRj
NWI4MmVmYmYwNmM0MmFiMzBkYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtMTI1LDYgKzEyNSw3IEBAIElOU1BFQ1RPUl9ET01BSU5TID0gXAogICAg
ICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9JbnNwZWN0b3IuanNvbiBcCiAg
ICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0xheWVyVHJlZS5qc29uIFwK
ICAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uIFwK
KyAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvT3ZlcmxheVR5cGVzLmpz
b24gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb24g
XAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpzb24g
XAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9UaW1lbGluZS5qc29u
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
T3ZlcmxheVR5cGVzLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL092ZXJsYXlUeXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3ZWZhNzVlZmNmYWVlNzQ0OGI2Njlm
ZjE4MmM0YWIwMGRhYjkxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3Byb3RvY29sL092ZXJsYXlUeXBlcy5qc29uCkBAIC0wLDAgKzEsMTI5IEBA
Cit7CisgICAgImRvbWFpbiI6ICJPdmVybGF5VHlwZXMiLAorICAgICJkZXNjcmlwdGlvbiI6ICJF
eHBvc2VzIHR5cGVzIHRvIGJlIHVzZWQgYnkgdGhlIGluc3BlY3RvciBvdmVybGF5LiIsCisgICAg
InR5cGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiUG9pbnQiLAorICAgICAg
ICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAieCIsICJ0eXBlIjogIm51bWJlciIgfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInkiLCAidHlwZSI6ICJudW1iZXIiIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIlNpemUiLAorICAgICAg
ICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAid2lkdGgiLCAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVpZ2h0IiwgInR5cGUiOiAiaW50ZWdlciIgfQorICAg
ICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiUXVh
ZCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBxdWFkIGlzIGEgY29sbGVjdGlvbiBv
ZiA0IHBvaW50cy4gV2hlbiBpbml0aWFsaXplZCBmcm9tIGEgcmVjdCwgdGhlIHBvaW50cyBhcmUg
aW4gY2xvY2t3aXNlIG9yZGVyIGZyb20gdG9wIGxlZnQuIiwKKyAgICAgICAgICAgICJ0eXBlIjog
ImFycmF5IiwKKyAgICAgICAgICAgICJpdGVtcyI6IHsgIiRyZWYiOiAiUG9pbnQiIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIlJlY3QiLAorICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIkEgcmVjdGFuZ2xlIHNwZWNpZmllZCBieSBhIHJlZmVyZW5jZSBjb29y
ZGluYXRlIGFuZCB3aWR0aC9oZWlnaHQgb2Zmc2V0cy4iLAorICAgICAgICAgICAgInR5cGUiOiAi
b2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAieCIsICJ0eXBlIjogIm51bWJlciIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInkiLCAidHlwZSI6ICJudW1iZXIiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ3
aWR0aCIsICJ0eXBlIjogIm51bWJlciIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhl
aWdodCIsICJ0eXBlIjogIm51bWJlciIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgICAiaWQiOiAiUmVnaW9uIiwKKyAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJBIHNpbmdsZSByZWdpb24gaW4gYSBmbG93IHRocmVhZC4iLAorICAgICAgICAgICAg
InR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiYm9yZGVyUXVhZCIsICIkcmVmIjogIlF1YWQiIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJpbmNvbWluZ1F1YWQiLCAiJHJlZiI6ICJRdWFkIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAib3V0Z29pbmdRdWFkIiwgIiRyZWYiOiAiUXVhZCIgfSwK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzSGlnaGxpZ2h0ZWQiLCAidHlwZSI6ICJib29s
ZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJEaXNwbGF5UGF0aCIsCisgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiQSB2ZWN0b3IgcGF0aCBkZXNjcmliZWQgdXNpbmcgU1ZHIHBhdGggc3ludGF4
LiIsCisgICAgICAgICAgICAidHlwZSI6ICJhcnJheSIsCisgICAgICAgICAgICAiaXRlbXMiOiB7
ICJ0eXBlIjogImFueSIgfQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQi
OiAiUmVnaW9uRmxvd0RhdGEiLAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAg
ICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVnaW9u
cyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJSZWdpb24ifSB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZSIsICJ0eXBlIjogInN0cmluZyIgfQorICAgICAg
ICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiQ29udGVu
dEZsb3dEYXRhIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAi
cHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6
ICJzdHJpbmciIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgImlkIjogIlNoYXBlT3V0c2lkZURhdGEiLAorICAgICAgICAgICAgInR5cGUiOiAib2Jq
ZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiYm91bmRzIiwgIiRyZWYiOiAiUXVhZCIsICJkZXNjcmlwdGlvbiI6ICJCb3VuZHMgZm9y
IHRoZSBzaGFwZS1vdXRzaWRlIHBhdGhzLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InNoYXBlIiwgIiRyZWYiOiAiRGlzcGxheVBhdGgiLCAiZGVzY3JpcHRpb24iOiAiUGF0aCBmb3Ig
dGhlIGVsZW1lbnQncyBzaGFwZS4iLCAib3B0aW9uYWwiOiB0cnVlIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJtYXJnaW5TaGFwZSIsICIkcmVmIjogIkRpc3BsYXlQYXRoIiwgImRlc2Ny
aXB0aW9uIjogIlBhdGggZm9yIHRoZSBlbGVtZW50J3MgbWFyZ2luIHNoYXBlLiIsICJvcHRpb25h
bCI6IHRydWUgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgICAiaWQiOiAiRWxlbWVudERhdGEiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRh
dGEgdGhhdCBkZXNjcmliZXMgYW4gZWxlbWVudCB0byBiZSBoaWdobGlnaHRlZC4iLAorICAgICAg
ICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFnTmFtZSIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImlkVmFsdWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIHZhbHVlIG9mIHRoZSBlbGVtZW50J3MgJ2lkJyBhdHRyaWJ1dGUuIiB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2xhc3NOYW1lIiwgInR5cGUiOiAic3RyaW5n
IiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2l6ZSIs
ICIkcmVmIjogIlNpemUiLCAib3B0aW9uYWwiOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJyb2xlIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkNvbXB1dGVk
IGFjY2Vzc2liaWxpdHkgcm9sZSBmb3IgdGhlIGVsZW1lbnQuIiwgIm9wdGlvbmFsIjogdHJ1ZSB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVnaW9uRmxvd0RhdGEiLCAiJHJlZiI6ICJS
ZWdpb25GbG93RGF0YSIsICJvcHRpb25hbCI6IHRydWUgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImNvbnRlbnRGbG93RGF0YSIsICIkcmVmIjogIkNvbnRlbnRGbG93RGF0YSIsICJvcHRp
b25hbCI6IHRydWUgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNoYXBlT3V0c2lkZURh
dGEiLCAiJHJlZiI6ICJTaGFwZU91dHNpZGVEYXRhIiwgIm9wdGlvbmFsIjogdHJ1ZSB9CisgICAg
ICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJGcmFn
bWVudEhpZ2hsaWdodERhdGEiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRhdGEgcmVx
dWlyZWQgdG8gaGlnaGxpZ2h0IG11bHRpcGxlIHF1YWRzLiIsCisgICAgICAgICAgICAidHlwZSI6
ICJvYmplY3QiLAorICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJxdWFkcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJR
dWFkIiB9LCAiZGVzY3JpcHRpb24iOiAiUXVhZHMgZm9yIHdoaWNoIHRoZSBoaWdobGlnaHQgc2hv
dWxkIGJlIGFwcGxpZWQuIn0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50Q29s
b3IiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250
ZW50T3V0bGluZUNvbG9yIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAicGFkZGluZ0NvbG9yIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiYm9yZGVyQ29sb3IiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJtYXJnaW5Db2xvciIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInJlZ2lvbkNsaXBwaW5nQXJlYSIsICIkcmVmIjogIlF1
YWQiLCAib3B0aW9uYWwiOiB0cnVlIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgImlkIjogIk5vZGVIaWdobGlnaHREYXRhIiwKKyAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJEYXRhIHJlcXVpcmVkIHRvIGhpZ2hsaWdodCBhIERPTSBub2RlLiIs
CisgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAgInByb3BlcnRpZXMi
OiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzY3JvbGxPZmZzZXQiLCAiJHJlZiI6ICJQ
b2ludCIsICJkZXNjcmlwdGlvbiI6ICJTY3JvbGwgb2Zmc2V0IGZvciB0aGUgTWFpbkZyYW1lJ3Mg
RnJhbWVWaWV3IHRoYXQgaXMgc2hhcmVkIGFjcm9zcyBhbGwgcXVhZHMuIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZnJhZ21lbnRzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7
ICIkcmVmIjogIkZyYWdtZW50SGlnaGxpZ2h0RGF0YSIgfSB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiZWxlbWVudERhdGEiLCAiJHJlZiI6ICJFbGVtZW50RGF0YSIsICJvcHRpb25hbCI6
IHRydWUgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICAiaWQiOiAiT3ZlcmxheUNvbmZpZ3VyYXRpb24iLAorICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIkRhdGEgcmVxdWlyZWQgdG8gY29uZmlndXJlIHRoZSBvdmVybGF5J3Mgc2l6ZSBhbmQgc2Nh
bGluZyBiZWhhdmlvci4iLAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAg
ICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGV2aWNlU2Nh
bGVGYWN0b3IiLCAidHlwZSI6ICJudW1iZXIiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ2aWV3cG9ydFNpemUiLCAiJHJlZiI6ICJTaXplIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZnJhbWVWaWV3RnVsbFNpemUiLCAiJHJlZiI6ICJTaXplIiB9CisgICAgICAgICAgICBd
CisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDY5ZWMyMWMzNDc1
ZGZhNGNhZDNhMTY3ODQyNDQzMTI4MmE3OTRjMDAuLjdkMTMyNTY3M2UxODQwMDk0YmJhZWVkZWM3
MGQ4YzRmOWI2MGZhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xODU5LDcgKzE4NTksNyBA
QCBfX1pOSzdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMzNhbGxvd3NOZXdBbmltYXRpb25z
V2hpbGVTdXNwZW5kZWRFdgogX19aTks3V2ViQ29yZTE5SFRNTE9wdEdyb3VwRWxlbWVudDE0Z3Jv
dXBMYWJlbFRleHRFdgogX19aTks3V2ViQ29yZTE5SFRNTFRleHRBcmVhRWxlbWVudDV2YWx1ZUV2
CiBfX1pOSzdXZWJDb3JlMTlJREJEYXRhYmFzZU1ldGFkYXRhMTJpc29sYXRlZENvcHlFdgotX19a
Tks3V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjEyZ2V0SGlnaGxpZ2h0RVBOU185SGlnaGxp
Z2h0RU5TXzE2SW5zcGVjdG9yT3ZlcmxheTE2Q29vcmRpbmF0ZVN5c3RlbUUKK19fWk5LN1dlYkNv
cmUxOUluc3BlY3RvckNvbnRyb2xsZXIxMmdldEhpZ2hsaWdodEVSTlNfOUhpZ2hsaWdodEVOU18x
Nkluc3BlY3Rvck92ZXJsYXkxNkNvb3JkaW5hdGVTeXN0ZW1FCiBfX1pOSzdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMjlidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZUV2CiBfX1pOSzdX
ZWJDb3JlMTlNZWRpYVNlc3Npb25NYW5hZ2VyMzBhcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91
bmRFdgogX19aTks3V2ViQ29yZTE5TWVkaWFTZXNzaW9uTWFuYWdlcjMwYXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAppbmRleCAwODkyYTIwOTlmNWRkNmY0MDk1YTg2NjAxYzYzOWE5NmIx
NDIzM2MwLi4yMDkxZjFjNzZlOTZkZjExY2NlOTQ2ZGUxZGY0ZTgzYTY0YzQ4OGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0z
MjEsMTIgKzMyMSwxMiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRyYXdIaWdobGlnaHQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIG1fb3ZlcmxheS0+cGFpbnQoY29u
dGV4dCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0SGlnaGxpZ2h0KEhpZ2hs
aWdodCogaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtIGNvb3Jk
aW5hdGVTeXN0ZW0pIGNvbnN0Cit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmdldEhpZ2hsaWdo
dChIaWdobGlnaHQmIGhpZ2hsaWdodCwgSW5zcGVjdG9yT3ZlcmxheTo6Q29vcmRpbmF0ZVN5c3Rl
bSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIG1fb3ZlcmxheS0+Z2V0SGlnaGxpZ2h0
KGhpZ2hsaWdodCwgY29vcmRpbmF0ZVN5c3RlbSk7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IEluc3BlY3RvckNvbnRyb2xsZXI6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkg
Y29uc3QKK1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdo
bGlnaHREYXRhPiBJbnNwZWN0b3JDb250cm9sbGVyOjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVk
Tm9kZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fb3ZlcmxheS0+YnVpbGRPYmplY3RGb3JIaWdo
bGlnaHRlZE5vZGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oCmluZGV4IDM4YWVlYWFhODU4YWRjMDI2ZGQ1Mzk1YjIwMDQxOWRiYmJlMTcy
YWQuLjNkMzRhZGY0YzhiYTMzODIxZmFkZWY2MjQzZWY5ZTFmNjI1YTI3YTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDgsNiArNDgs
MTIgQEAgY2xhc3MgSW5zcGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEluc3BlY3Rvck9i
amVjdDsKKworbmFtZXNwYWNlIFByb3RvY29sIHsKK25hbWVzcGFjZSBPdmVybGF5VHlwZXMgewor
Y2xhc3MgTm9kZUhpZ2hsaWdodERhdGE7Cit9Cit9CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTEwNCwxMyArMTEwLDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5zcGVjdChOb2RlKik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCos
IEluc3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZ2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCYsIEluc3BlY3Rvck92ZXJsYXk6OkNv
b3JkaW5hdGVTeXN0ZW0pIGNvbnN0OwogICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwogICAgIE5v
ZGUqIGhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJv
b2wpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdo
bGlnaHREYXRhPiBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0OwogCiAgICAg
Ym9vbCBpc1VuZGVyVGVzdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNVbmRlclRlc3Q7IH0KICAgICB2
b2lkIHNldElzVW5kZXJUZXN0KGJvb2wgaXNVbmRlclRlc3QpIHsgbV9pc1VuZGVyVGVzdCA9IGlz
VW5kZXJUZXN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5jcHAKaW5kZXggMjk0YzA0ZDQxZjQzZjc3ODRmMGQ2MDQ5ODI3NGMwYTc2Y2JjM2VmMS4uZmQy
ZmNkZDY4MjJjYWJhNmEzNmUzMjQ5MmFhYjg1Nzc2NzNmOGMyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtNTcsNiArNTcsNyBAQAogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclBy
b3RvY29sT2JqZWN0cy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTgwLDEzICs4MSwxMyBA
QCBzdGF0aWMgdm9pZCBjb250ZW50c1F1YWRUb1BhZ2UoY29uc3QgRnJhbWVWaWV3KiBtYWluVmll
dywgY29uc3QgRnJhbWVWaWV3KiB2aWV3LAogICAgIGNvbnRlbnRzUXVhZFRvQ29vcmRpbmF0ZVN5
c3RlbShtYWluVmlldywgdmlldywgcXVhZCwgSW5zcGVjdG9yT3ZlcmxheTo6Q29vcmRpbmF0ZVN5
c3RlbTo6Vmlldyk7CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkUmVuZGVyZXJIaWdobGlnaHQoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyUmVnaW9uKiByZWdpb24sIGNvbnN0IEhpZ2hsaWdo
dENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQqIGhpZ2hsaWdodCwgSW5zcGVjdG9y
T3ZlcmxheTo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKQorc3RhdGljIHZvaWQg
YnVpbGRSZW5kZXJlckhpZ2hsaWdodChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJSZWdp
b24qIHJlZ2lvbiwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcsIEhpZ2hs
aWdodCYgaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtIGNvb3Jk
aW5hdGVTeXN0ZW0pCiB7CiAgICAgRnJhbWUqIGNvbnRhaW5pbmdGcmFtZSA9IHJlbmRlcmVyLT5k
b2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFjb250YWluaW5nRnJhbWUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGhpZ2hsaWdodC0+c2V0RGF0YUZyb21Db25maWcoaGlnaGxpZ2h0Q29uZmln
KTsKKyAgICBoaWdobGlnaHQuc2V0RGF0YUZyb21Db25maWcoaGlnaGxpZ2h0Q29uZmlnKTsKICAg
ICBGcmFtZVZpZXcqIGNvbnRhaW5pbmdWaWV3ID0gY29udGFpbmluZ0ZyYW1lLT52aWV3KCk7CiAg
ICAgRnJhbWVWaWV3KiBtYWluVmlldyA9IGNvbnRhaW5pbmdGcmFtZS0+cGFnZSgpLT5tYWluRnJh
bWUoKS52aWV3KCk7CiAKQEAgLTk0LDEwICs5NSwxMCBAQCBzdGF0aWMgdm9pZCBidWlsZFJlbmRl
cmVySGlnaGxpZ2h0KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlbmRlclJlZ2lvbiogcmVnaW9u
LAogICAgIGJvb2wgaXNTVkdSZW5kZXJlciA9IHJlbmRlcmVyLT5ub2RlKCkgJiYgcmVuZGVyZXIt
Pm5vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgIXJlbmRlcmVyLT5pc1NWR1Jvb3QoKTsKIAogICAg
IGlmIChpc1NWR1JlbmRlcmVyKSB7Ci0gICAgICAgIGhpZ2hsaWdodC0+dHlwZSA9IEhpZ2hsaWdo
dFR5cGVSZWN0czsKLSAgICAgICAgcmVuZGVyZXItPmFic29sdXRlUXVhZHMoaGlnaGxpZ2h0LT5x
dWFkcyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaGlnaGxpZ2h0LT5xdWFkcy5z
aXplKCk7ICsraSkKLSAgICAgICAgICAgIGNvbnRlbnRzUXVhZFRvQ29vcmRpbmF0ZVN5c3RlbSht
YWluVmlldywgY29udGFpbmluZ1ZpZXcsIGhpZ2hsaWdodC0+cXVhZHNbaV0sIGNvb3JkaW5hdGVT
eXN0ZW0pOworICAgICAgICBoaWdobGlnaHQudHlwZSA9IEhpZ2hsaWdodFR5cGU6OlJlY3RzOwor
ICAgICAgICByZW5kZXJlci0+YWJzb2x1dGVRdWFkcyhoaWdobGlnaHQucXVhZHMpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhpZ2hsaWdodC5xdWFkcy5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgIGNvbnRlbnRzUXVhZFRvQ29vcmRpbmF0ZVN5c3RlbShtYWluVmlldywgY29udGFp
bmluZ1ZpZXcsIGhpZ2hsaWdodC5xdWFkc1tpXSwgY29vcmRpbmF0ZVN5c3RlbSk7CiAgICAgfSBl
bHNlIGlmIChpczxSZW5kZXJCb3g+KCpyZW5kZXJlcikgfHwgaXM8UmVuZGVySW5saW5lPigqcmVu
ZGVyZXIpKSB7CiAgICAgICAgIExheW91dFJlY3QgY29udGVudEJveDsKICAgICAgICAgTGF5b3V0
UmVjdCBwYWRkaW5nQm94OwpAQCAtMTc4LDM1ICsxNzksMzQgQEAgc3RhdGljIHZvaWQgYnVpbGRS
ZW5kZXJlckhpZ2hsaWdodChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJSZWdpb24qIHJl
Z2lvbiwKICAgICAgICAgY29udGVudHNRdWFkVG9Db29yZGluYXRlU3lzdGVtKG1haW5WaWV3LCBj
b250YWluaW5nVmlldywgYWJzQm9yZGVyUXVhZCwgY29vcmRpbmF0ZVN5c3RlbSk7CiAgICAgICAg
IGNvbnRlbnRzUXVhZFRvQ29vcmRpbmF0ZVN5c3RlbShtYWluVmlldywgY29udGFpbmluZ1ZpZXcs
IGFic01hcmdpblF1YWQsIGNvb3JkaW5hdGVTeXN0ZW0pOwogCi0gICAgICAgIGhpZ2hsaWdodC0+
dHlwZSA9IEhpZ2hsaWdodFR5cGVOb2RlOwotICAgICAgICBoaWdobGlnaHQtPnF1YWRzLmFwcGVu
ZChhYnNNYXJnaW5RdWFkKTsKLSAgICAgICAgaGlnaGxpZ2h0LT5xdWFkcy5hcHBlbmQoYWJzQm9y
ZGVyUXVhZCk7Ci0gICAgICAgIGhpZ2hsaWdodC0+cXVhZHMuYXBwZW5kKGFic1BhZGRpbmdRdWFk
KTsKLSAgICAgICAgaGlnaGxpZ2h0LT5xdWFkcy5hcHBlbmQoYWJzQ29udGVudFF1YWQpOworICAg
ICAgICBoaWdobGlnaHQudHlwZSA9IEhpZ2hsaWdodFR5cGU6Ok5vZGU7CisgICAgICAgIGhpZ2hs
aWdodC5xdWFkcy5hcHBlbmQoYWJzTWFyZ2luUXVhZCk7CisgICAgICAgIGhpZ2hsaWdodC5xdWFk
cy5hcHBlbmQoYWJzQm9yZGVyUXVhZCk7CisgICAgICAgIGhpZ2hsaWdodC5xdWFkcy5hcHBlbmQo
YWJzUGFkZGluZ1F1YWQpOworICAgICAgICBoaWdobGlnaHQucXVhZHMuYXBwZW5kKGFic0NvbnRl
bnRRdWFkKTsKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkTm9kZUhpZ2hsaWdodChOb2Rl
KiBub2RlLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdo
bGlnaHRDb25maWcsIEhpZ2hsaWdodCogaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29y
ZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pCitzdGF0aWMgdm9pZCBidWlsZE5vZGVIaWdo
bGlnaHQoTm9kZSYgbm9kZSwgUmVuZGVyUmVnaW9uKiByZWdpb24sIGNvbnN0IEhpZ2hsaWdodENv
bmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQmIGhpZ2hsaWdodCwgSW5zcGVjdG9yT3Zl
cmxheTo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKQogewotICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0
dXJuOworCiAgICAgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChyZW5kZXJlciwgcmVnaW9uLCBoaWdo
bGlnaHRDb25maWcsIGhpZ2hsaWdodCwgY29vcmRpbmF0ZVN5c3RlbSk7CiB9CiAKLXN0YXRpYyB2
b2lkIGJ1aWxkUXVhZEhpZ2hsaWdodChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IEhpZ2hs
aWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQgKmhpZ2hsaWdodCkKK3N0YXRp
YyB2b2lkIGJ1aWxkUXVhZEhpZ2hsaWdodChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IEhp
Z2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQmIGhpZ2hsaWdodCkKIHsK
LSAgICBoaWdobGlnaHQtPnNldERhdGFGcm9tQ29uZmlnKGhpZ2hsaWdodENvbmZpZyk7Ci0gICAg
aGlnaGxpZ2h0LT50eXBlID0gSGlnaGxpZ2h0VHlwZVJlY3RzOwotICAgIGhpZ2hsaWdodC0+cXVh
ZHMuYXBwZW5kKHF1YWQpOworICAgIGhpZ2hsaWdodC5zZXREYXRhRnJvbUNvbmZpZyhoaWdobGln
aHRDb25maWcpOworICAgIGhpZ2hsaWdodC50eXBlID0gSGlnaGxpZ2h0VHlwZTo6UmVjdHM7Cisg
ICAgaGlnaGxpZ2h0LnF1YWRzLmFwcGVuZChxdWFkKTsKIH0KIAogSW5zcGVjdG9yT3ZlcmxheTo6
SW5zcGVjdG9yT3ZlcmxheShQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAg
ICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9wYWludFJl
Y3RVcGRhdGVUaW1lcigqdGhpcywgJkluc3BlY3Rvck92ZXJsYXk6OnVwZGF0ZVBhaW50UmVjdHNU
aW1lckZpcmVkKQotICAgICwgbV9pbmRpY2F0aW5nKGZhbHNlKQotICAgICwgbV9zaG93aW5nUGFp
bnRSZWN0cyhmYWxzZSkKIHsKIH0KIApAQCAtMjI1LDE0ICsyMjUsMTQgQEAgdm9pZCBJbnNwZWN0
b3JPdmVybGF5OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgdmlldy0+cGFp
bnQoJmNvbnRleHQsIEludFJlY3QoMCwgMCwgdmlldy0+d2lkdGgoKSwgdmlldy0+aGVpZ2h0KCkp
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpnZXRIaWdobGlnaHQoSGlnaGxpZ2h0KiBo
aWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5
c3RlbSkgY29uc3QKK3ZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KEhpZ2hsaWdo
dCYgaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5h
dGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgaWYgKCFtX2hpZ2hsaWdodE5vZGUgJiYgIW1faGlnaGxp
Z2h0UXVhZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaGlnaGxpZ2h0LT50eXBlID0gSGlnaGxp
Z2h0VHlwZVJlY3RzOworICAgIGhpZ2hsaWdodC50eXBlID0gSGlnaGxpZ2h0VHlwZTo6UmVjdHM7
CiAgICAgaWYgKG1faGlnaGxpZ2h0Tm9kZSkKLSAgICAgICAgYnVpbGROb2RlSGlnaGxpZ2h0KG1f
aGlnaGxpZ2h0Tm9kZS5nZXQoKSwgbnVsbHB0ciwgbV9ub2RlSGlnaGxpZ2h0Q29uZmlnLCBoaWdo
bGlnaHQsIGNvb3JkaW5hdGVTeXN0ZW0pOworICAgICAgICBidWlsZE5vZGVIaWdobGlnaHQoKm1f
aGlnaGxpZ2h0Tm9kZSwgbnVsbHB0ciwgbV9ub2RlSGlnaGxpZ2h0Q29uZmlnLCBoaWdobGlnaHQs
IGNvb3JkaW5hdGVTeXN0ZW0pOwogICAgIGVsc2UKICAgICAgICAgYnVpbGRRdWFkSGlnaGxpZ2h0
KCptX2hpZ2hsaWdodFF1YWQsIG1fcXVhZEhpZ2hsaWdodENvbmZpZywgaGlnaGxpZ2h0KTsKIH0K
QEAgLTMzMSw1MCArMzMxLDUxIEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6dXBkYXRlKCkKICAg
ICBmb3JjZVBhaW50KCk7CiB9CiAKLXN0YXRpYyBSZWY8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9i
amVjdEZvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQorc3RhdGljIFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlBvaW50PiBidWlsZE9iamVjdEZvclBvaW50KGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50KQogewotICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IG9iamVj
dCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgb2JqZWN0LT5zZXREb3VibGUoQVND
SUlMaXRlcmFsKCJ4IiksIHBvaW50LngoKSk7Ci0gICAgb2JqZWN0LT5zZXREb3VibGUoQVNDSUlM
aXRlcmFsKCJ5IiksIHBvaW50LnkoKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShvYmplY3QpOwor
ICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlBvaW50OjpjcmVh
dGUoKQorICAgICAgICAuc2V0WChwb2ludC54KCkpCisgICAgICAgIC5zZXRZKHBvaW50LnkoKSkK
KyAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGJ1
aWxkT2JqZWN0Rm9yUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCitzdGF0aWMgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UmVjdD4gYnVpbGRPYmplY3RGb3JSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Qg
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG9iamVjdC0+c2V0RG91YmxlKEFTQ0lJ
TGl0ZXJhbCgieCIpLCByZWN0LngoKSk7Ci0gICAgb2JqZWN0LT5zZXREb3VibGUoQVNDSUlMaXRl
cmFsKCJ5IiksIHJlY3QueSgpKTsKLSAgICBvYmplY3QtPnNldERvdWJsZShBU0NJSUxpdGVyYWwo
IndpZHRoIiksIHJlY3Qud2lkdGgoKSk7Ci0gICAgb2JqZWN0LT5zZXREb3VibGUoQVNDSUlMaXRl
cmFsKCJoZWlnaHQiKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShvYmpl
Y3QpOworICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlY3Q6
OmNyZWF0ZSgpCisgICAgICAgIC5zZXRYKHJlY3QueCgpKQorICAgICAgICAuc2V0WShyZWN0Lnko
KSkKKyAgICAgICAgLnNldFdpZHRoKHJlY3Qud2lkdGgoKSkKKyAgICAgICAgLnNldEhlaWdodChy
ZWN0LmhlaWdodCgpKQorICAgICAgICAucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUmVmPEluc3Bl
Y3RvckFycmF5PiBidWlsZEFycmF5Rm9yUXVhZChjb25zdCBGbG9hdFF1YWQmIHF1YWQpCitzdGF0
aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UXVhZD4gYnVpbGRBcnJh
eUZvclF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQogewotICAgIFJlZjxJbnNwZWN0b3JBcnJh
eT4gYXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7Ci0gICAgYXJyYXktPnB1c2hPYmpl
Y3QoYnVpbGRPYmplY3RGb3JQb2ludChxdWFkLnAxKCkpKTsKLSAgICBhcnJheS0+cHVzaE9iamVj
dChidWlsZE9iamVjdEZvclBvaW50KHF1YWQucDIoKSkpOwotICAgIGFycmF5LT5wdXNoT2JqZWN0
KGJ1aWxkT2JqZWN0Rm9yUG9pbnQocXVhZC5wMygpKSk7Ci0gICAgYXJyYXktPnB1c2hPYmplY3Qo
YnVpbGRPYmplY3RGb3JQb2ludChxdWFkLnA0KCkpKTsKKyAgICBhdXRvIGFycmF5ID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpRdWFkOjpjcmVhdGUoKTsKKyAgICBhcnJheS0+
YWRkSXRlbShidWlsZE9iamVjdEZvclBvaW50KHF1YWQucDEoKSkpOworICAgIGFycmF5LT5hZGRJ
dGVtKGJ1aWxkT2JqZWN0Rm9yUG9pbnQocXVhZC5wMigpKSk7CisgICAgYXJyYXktPmFkZEl0ZW0o
YnVpbGRPYmplY3RGb3JQb2ludChxdWFkLnAzKCkpKTsKKyAgICBhcnJheS0+YWRkSXRlbShidWls
ZE9iamVjdEZvclBvaW50KHF1YWQucDQoKSkpOwogICAgIHJldHVybiBXVEY6Om1vdmUoYXJyYXkp
OwogfQogCi1zdGF0aWMgUmVmPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIaWdobGln
aHQoY29uc3QgSGlnaGxpZ2h0JiBoaWdobGlnaHQpCitzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRhPiBidWlsZE9iamVjdEZv
ckhpZ2hsaWdodChjb25zdCBIaWdobGlnaHQmIGhpZ2hsaWdodCkKIHsKLSAgICBSZWY8SW5zcGVj
dG9yT2JqZWN0PiBvYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIFJlZjxJ
bnNwZWN0b3JBcnJheT4gYXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CisgICAgYXV0
byBhcnJheU9mUXVhZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpPdmVybGF5VHlwZXM6OlF1YWQ+OjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGhpZ2hsaWdodC5xdWFkcy5zaXplKCk7ICsraSkKLSAgICAgICAgYXJyYXktPnB1
c2hBcnJheShidWlsZEFycmF5Rm9yUXVhZChoaWdobGlnaHQucXVhZHNbaV0pKTsKLSAgICBvYmpl
Y3QtPnNldEFycmF5KCJxdWFkcyIsIFdURjo6bW92ZShhcnJheSkpOwotICAgIG9iamVjdC0+c2V0
U3RyaW5nKCJjb250ZW50Q29sb3IiLCBoaWdobGlnaHQuY29udGVudENvbG9yLnNlcmlhbGl6ZWQo
KSk7Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoImNvbnRlbnRPdXRsaW5lQ29sb3IiLCBoaWdobGln
aHQuY29udGVudE91dGxpbmVDb2xvci5zZXJpYWxpemVkKCkpOwotICAgIG9iamVjdC0+c2V0U3Ry
aW5nKCJwYWRkaW5nQ29sb3IiLCBoaWdobGlnaHQucGFkZGluZ0NvbG9yLnNlcmlhbGl6ZWQoKSk7
Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoImJvcmRlckNvbG9yIiwgaGlnaGxpZ2h0LmJvcmRlckNv
bG9yLnNlcmlhbGl6ZWQoKSk7Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoIm1hcmdpbkNvbG9yIiwg
aGlnaGxpZ2h0Lm1hcmdpbkNvbG9yLnNlcmlhbGl6ZWQoKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92
ZShvYmplY3QpOworICAgICAgICBhcnJheU9mUXVhZHMtPmFkZEl0ZW0oYnVpbGRBcnJheUZvclF1
YWQoaGlnaGxpZ2h0LnF1YWRzW2ldKSk7CisKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVudEhpZ2hsaWdodERhdGE6OmNyZWF0ZSgpCisgICAgICAg
IC5zZXRRdWFkcyhXVEY6Om1vdmUoYXJyYXlPZlF1YWRzKSkKKyAgICAgICAgLnNldENvbnRlbnRD
b2xvcihoaWdobGlnaHQuY29udGVudENvbG9yLnNlcmlhbGl6ZWQoKSkKKyAgICAgICAgLnNldENv
bnRlbnRPdXRsaW5lQ29sb3IoaGlnaGxpZ2h0LmNvbnRlbnRPdXRsaW5lQ29sb3Iuc2VyaWFsaXpl
ZCgpKQorICAgICAgICAuc2V0UGFkZGluZ0NvbG9yKGhpZ2hsaWdodC5wYWRkaW5nQ29sb3Iuc2Vy
aWFsaXplZCgpKQorICAgICAgICAuc2V0Qm9yZGVyQ29sb3IoaGlnaGxpZ2h0LmJvcmRlckNvbG9y
LnNlcmlhbGl6ZWQoKSkKKyAgICAgICAgLnNldE1hcmdpbkNvbG9yKGhpZ2hsaWdodC5tYXJnaW5D
b2xvci5zZXJpYWxpemVkKCkpCisgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclJlZ2lvbkhpZ2hsaWdodChGcmFtZVZp
ZXcqIG1haW5WaWV3LCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKK3N0YXRpYyBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWdpb24+IGJ1aWxkT2JqZWN0Rm9yUmVnaW9u
KEZyYW1lVmlldyogbWFpblZpZXcsIFJlbmRlclJlZ2lvbiogcmVnaW9uKQogewogICAgIEZyYW1l
VmlldyogY29udGFpbmluZ1ZpZXcgPSByZWdpb24tPmZyYW1lKCkudmlldygpOwogICAgIGlmICgh
Y29udGFpbmluZ1ZpZXcpCkBAIC0zODgsNyArMzg5LDcgQEAgc3RhdGljIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVnaW9uSGlnaGxpZ2h0KEZyYW1lVmlldyogbWFpblZp
ZXcKICAgICAvLyBDcmVhdGUgaW5jb21pbmcgYW5kIG91dGdvaW5nIGJveGVzIHRoYXQgd2UgdXNl
IHRvIGNoYWluIHRoZSByZWdpb25zIHRvZ2hldGhlci4KICAgICBjb25zdCBMYXlvdXRTaXplIGxp
bmtCb3hTaXplKDEwLCAxMCk7CiAgICAgY29uc3QgTGF5b3V0U2l6ZSBsaW5rQm94TWlkcG9pbnQo
bGlua0JveFNpemUud2lkdGgoKSAvIDIsIGxpbmtCb3hTaXplLmhlaWdodCgpIC8gMik7Ci0gICAg
CisKICAgICBMYXlvdXRSZWN0IGluY29taW5nUmVjdEJveCA9IExheW91dFJlY3QoYm9yZGVyQm94
LmxvY2F0aW9uKCkgLSBsaW5rQm94TWlkcG9pbnQsIGxpbmtCb3hTaXplKTsKICAgICBMYXlvdXRS
ZWN0IG91dGdvaW5nUmVjdEJveCA9IExheW91dFJlY3QoYm9yZGVyQm94LmxvY2F0aW9uKCkgLSBs
aW5rQm94TWlkcG9pbnQgKyBib3JkZXJCb3guc2l6ZSgpLCBsaW5rQm94U2l6ZSk7CiAKQEAgLTQw
Niw0NyArNDA3LDQ1IEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVj
dEZvclJlZ2lvbkhpZ2hsaWdodChGcmFtZVZpZXcqIG1haW5WaWV3CiAgICAgY29udGVudHNRdWFk
VG9QYWdlKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgaW5jb21pbmdSZWN0UXVhZCk7CiAgICAg
Y29udGVudHNRdWFkVG9QYWdlKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgb3V0Z29pbmdSZWN0
UXVhZCk7CiAKLSAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZWdpb25PYmplY3QgPSBJbnNwZWN0
b3JPYmplY3Q6OmNyZWF0ZSgpOwotCi0gICAgcmVnaW9uT2JqZWN0LT5zZXRBcnJheSgiYm9yZGVy
UXVhZCIsIGJ1aWxkQXJyYXlGb3JRdWFkKGJvcmRlclJlY3RRdWFkKSk7Ci0gICAgcmVnaW9uT2Jq
ZWN0LT5zZXRBcnJheSgiaW5jb21pbmdRdWFkIiwgYnVpbGRBcnJheUZvclF1YWQoaW5jb21pbmdS
ZWN0UXVhZCkpOwotICAgIHJlZ2lvbk9iamVjdC0+c2V0QXJyYXkoIm91dGdvaW5nUXVhZCIsIGJ1
aWxkQXJyYXlGb3JRdWFkKG91dGdvaW5nUmVjdFF1YWQpKTsKLQotICAgIHJldHVybiBXVEY6Om1v
dmUocmVnaW9uT2JqZWN0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6T3Zlcmxh
eVR5cGVzOjpSZWdpb246OmNyZWF0ZSgpCisgICAgICAgIC5zZXRCb3JkZXJRdWFkKGJ1aWxkQXJy
YXlGb3JRdWFkKGJvcmRlclJlY3RRdWFkKSkKKyAgICAgICAgLnNldEluY29taW5nUXVhZChidWls
ZEFycmF5Rm9yUXVhZChpbmNvbWluZ1JlY3RRdWFkKSkKKyAgICAgICAgLnNldE91dGdvaW5nUXVh
ZChidWlsZEFycmF5Rm9yUXVhZChvdXRnb2luZ1JlY3RRdWFkKSkKKyAgICAgICAgLnJlbGVhc2Uo
KTsKIH0KIAotc3RhdGljIFJlZjxJbnNwZWN0b3JBcnJheT4gYnVpbGRPYmplY3RGb3JDU1NSZWdp
b25zSGlnaGxpZ2h0KFJlbmRlclJlZ2lvbiogcmVnaW9uLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93
VGhyZWFkKQorc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlZ2lvbj4+IGJ1aWxkT2JqZWN0Rm9yRmxvd1JlZ2lv
bnMoUmVuZGVyUmVnaW9uKiByZWdpb24sIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpCiB7
CiAgICAgRnJhbWVWaWV3KiBtYWluRnJhbWVWaWV3ID0gcmVnaW9uLT5kb2N1bWVudCgpLnBhZ2Uo
KS0+bWFpbkZyYW1lKCkudmlldygpOwogCi0gICAgUmVmPEluc3BlY3RvckFycmF5PiBhcnJheSA9
IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICBhdXRvIGFycmF5T2ZSZWdpb25zID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVz
OjpSZWdpb24+OjpjcmVhdGUoKTsKIAogICAgIGNvbnN0IFJlbmRlclJlZ2lvbkxpc3QmIHJlZ2lv
bkxpc3QgPSBmbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0KCk7CiAgICAgZm9yIChhdXRvJiBp
dGVyUmVnaW9uIDogcmVnaW9uTGlzdCkgewogICAgICAgICBpZiAoIWl0ZXJSZWdpb24tPmlzVmFs
aWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiByZWdpb25IaWdobGlnaHRPYmplY3QgPSBidWlsZE9iamVjdEZvclJlZ2lvbkhpZ2hsaWdo
dChtYWluRnJhbWVWaWV3LCBpdGVyUmVnaW9uKTsKLSAgICAgICAgaWYgKCFyZWdpb25IaWdobGln
aHRPYmplY3QpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlw
ZXM6OlJlZ2lvbj4gcmVnaW9uT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JSZWdpb24obWFpbkZyYW1l
VmlldywgaXRlclJlZ2lvbik7CisgICAgICAgIGlmICghcmVnaW9uT2JqZWN0KQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGlmIChyZWdpb24gPT0gaXRlclJlZ2lvbikgewogICAgICAg
ICAgICAgLy8gTGV0IHRoZSBzY3JpcHQga25vdyB0aGF0IHRoaXMgaXMgdGhlIGN1cnJlbnRseSBo
aWdobGlnaHRlZCBub2RlLgotICAgICAgICAgICAgcmVnaW9uSGlnaGxpZ2h0T2JqZWN0LT5zZXRC
b29sZWFuKCJpc0hpZ2hsaWdodGVkIiwgdHJ1ZSk7CisgICAgICAgICAgICByZWdpb25PYmplY3Qt
PnNldElzSGlnaGxpZ2h0ZWQodHJ1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgYXJyYXktPnB1c2hP
YmplY3QocmVnaW9uSGlnaGxpZ2h0T2JqZWN0LnJlbGVhc2UoKSk7CisgICAgICAgIGFycmF5T2ZS
ZWdpb25zLT5hZGRJdGVtKFdURjo6bW92ZShyZWdpb25PYmplY3QpKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gV1RGOjptb3ZlKGFycmF5KTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKGFycmF5T2ZSZWdp
b25zKTsKIH0KIAotc3RhdGljIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yU2l6
ZShjb25zdCBJbnRTaXplJiBzaXplKQorc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpP
dmVybGF5VHlwZXM6OlNpemU+IGJ1aWxkT2JqZWN0Rm9yU2l6ZShjb25zdCBJbnRTaXplJiBzaXpl
KQogewotICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7Ci0gICAgcmVzdWx0LT5zZXRJbnRlZ2VyKCJ3aWR0aCIsIHNpemUud2lkdGgoKSk7
Ci0gICAgcmVzdWx0LT5zZXRJbnRlZ2VyKCJoZWlnaHQiLCBzaXplLmhlaWdodCgpKTsKLSAgICBy
ZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok92ZXJsYXlUeXBlczo6U2l6ZTo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFdpZHRoKHNpemUud2lk
dGgoKSkKKyAgICAgICAgLnNldEhlaWdodChzaXplLmhlaWdodCgpKQorICAgICAgICAucmVsZWFz
ZSgpOwogfQogCi1zdGF0aWMgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JD
U1NSZWdpb25Db250ZW50Q2xpcChSZW5kZXJSZWdpb24qIHJlZ2lvbikKK3N0YXRpYyBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpRdWFkPiBidWlsZFF1YWRPYmplY3RG
b3JDU1NSZWdpb25Db250ZW50Q2xpcChSZW5kZXJSZWdpb24qIHJlZ2lvbikKIHsKICAgICBGcmFt
ZSogY29udGFpbmluZ0ZyYW1lID0gcmVnaW9uLT5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYg
KCFjb250YWluaW5nRnJhbWUpCkBAIC00NjYsOSArNDY1LDcgQEAgc3RhdGljIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQ1NTUmVnaW9uQ29udGVudENsaXAoUmVuZGVyUmVn
aW9uKgogICAgIEZsb2F0UXVhZCBjbGlwUXVhZCA9IHJlZ2lvbi0+bG9jYWxUb0Fic29sdXRlUXVh
ZChGbG9hdFJlY3QoZmxpcHBlZFJlZ2lvblJlY3QpKTsKICAgICBjb250ZW50c1F1YWRUb1BhZ2Uo
bWFpblZpZXcsIGNvbnRhaW5pbmdWaWV3LCBjbGlwUXVhZCk7CiAKLSAgICBSZWY8SW5zcGVjdG9y
T2JqZWN0PiByZWdpb25PYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHJl
Z2lvbk9iamVjdC0+c2V0QXJyYXkoInF1YWQiLCBidWlsZEFycmF5Rm9yUXVhZChjbGlwUXVhZCkp
OwotICAgIHJldHVybiBXVEY6Om1vdmUocmVnaW9uT2JqZWN0KTsKKyAgICByZXR1cm4gYnVpbGRB
cnJheUZvclF1YWQoY2xpcFF1YWQpOwogfQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnNldFNo
b3dpbmdQYWludFJlY3RzKGJvb2wgc2hvd2luZ1BhaW50UmVjdHMpCkBAIC01MTQsNyArNTExLDcg
QEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGVQYWludFJlY3RzVGltZXJGaXJlZCgpCiAg
ICAgICAgIG1fcGFpbnRSZWN0cy5yZW1vdmVGaXJzdCgpOwogICAgICAgICByZWN0c0NoYW5nZWQg
PSB0cnVlOwogICAgIH0KLSAgICAKKwogICAgIGlmIChtX3BhaW50UmVjdHMuaXNFbXB0eSgpKQog
ICAgICAgICBtX3BhaW50UmVjdFVwZGF0ZVRpbWVyLnN0b3AoKTsKIApAQCAtNTI2LDExICs1MjMs
MTEgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGVQYWludFJlY3RzVGltZXJGaXJlZCgp
CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1BhaW50UmVjdHMoKQogewotICAgIFJlZjxJ
bnNwZWN0b3JBcnJheT4gZnJhZ21lbnRzQXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7
CisgICAgYXV0byBhcnJheU9mUmVjdHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlY3Q+OjpjcmVhdGUoKTsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHBhaXIgOiBtX3BhaW50UmVjdHMpCi0gICAgICAgIGZyYWdtZW50c0FycmF5
LT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0Rm9yUmVjdChwYWlyLnNlY29uZCkpOworICAgICAgICBh
cnJheU9mUmVjdHMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JSZWN0KHBhaXIuc2Vjb25kKSk7CiAK
LSAgICBldmFsdWF0ZUluT3ZlcmxheShBU0NJSUxpdGVyYWwoInVwZGF0ZVBhaW50UmVjdHMiKSwg
V1RGOjptb3ZlKGZyYWdtZW50c0FycmF5KSk7CisgICAgZXZhbHVhdGVJbk92ZXJsYXkoQVNDSUlM
aXRlcmFsKCJ1cGRhdGVQYWludFJlY3RzIiksIFdURjo6bW92ZShhcnJheU9mUmVjdHMpKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3R3V0dGVyKCkKQEAgLTUzOCwxNSArNTM1LDE1
IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0d1dHRlcigpCiAgICAgZXZhbHVhdGVJbk92
ZXJsYXkoQVNDSUlMaXRlcmFsKCJkcmF3R3V0dGVyIikpOwogfQogCi1zdGF0aWMgUmVmUHRyPElu
c3BlY3RvckFycmF5PiBidWlsZE9iamVjdEZvclJlbmRlcmVyRnJhZ21lbnRzKFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgY29uZmlnKQorc3RhdGljIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5
VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0RGF0YT4+IGJ1aWxkQXJyYXlGb3JSZW5kZXJlckZyYWdt
ZW50cyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGNvbmZp
ZykKIHsKLSAgICBSZWY8SW5zcGVjdG9yQXJyYXk+IGZyYWdtZW50c0FycmF5ID0gSW5zcGVjdG9y
QXJyYXk6OmNyZWF0ZSgpOworICAgIGF1dG8gYXJyYXlPZkZyYWdtZW50cyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21l
bnRIaWdobGlnaHREYXRhPjo6Y3JlYXRlKCk7CiAKICAgICBSZW5kZXJGbG93VGhyZWFkKiBjb250
YWluaW5nRmxvd1RocmVhZCA9IHJlbmRlcmVyLT5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7
CiAgICAgaWYgKCFjb250YWluaW5nRmxvd1RocmVhZCkgewogICAgICAgICBIaWdobGlnaHQgaGln
aGxpZ2h0OwotICAgICAgICBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KHJlbmRlcmVyLCBudWxscHRy
LCBjb25maWcsICZoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0ZW06
OlZpZXcpOwotICAgICAgICBmcmFnbWVudHNBcnJheS0+cHVzaE9iamVjdChidWlsZE9iamVjdEZv
ckhpZ2hsaWdodChoaWdobGlnaHQpKTsKKyAgICAgICAgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChy
ZW5kZXJlciwgbnVsbHB0ciwgY29uZmlnLCBoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNv
b3JkaW5hdGVTeXN0ZW06OlZpZXcpOworICAgICAgICBhcnJheU9mRnJhZ21lbnRzLT5hZGRJdGVt
KGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KGhpZ2hsaWdodCkpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBudWxscHRyOwogICAgICAgICBSZW5kZXJS
ZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CkBAIC01NjEsMTkgKzU1OCwxOSBAQCBzdGF0aWMg
UmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZE9iamVjdEZvclJlbmRlcmVyRnJhZ21lbnRzKFJl
bmRlck9iamVjdCogcmVuZAogICAgICAgICAgICAgaWYgKHJlZ2lvbi0+aXNWYWxpZCgpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgaGlnaGxpZ2h0IG9mIHRoZSBmcmFnbWVudCBp
bnNpZGUgdGhlIGN1cnJlbnQgcmVnaW9uLgogICAgICAgICAgICAgICAgIEhpZ2hsaWdodCBoaWdo
bGlnaHQ7Ci0gICAgICAgICAgICAgICAgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChyZW5kZXJlciwg
cmVnaW9uLCBjb25maWcsICZoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVT
eXN0ZW06OlZpZXcpOwotICAgICAgICAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGZyYWdt
ZW50T2JqZWN0ID0gYnVpbGRPYmplY3RGb3JIaWdobGlnaHQoaGlnaGxpZ2h0KTsKKyAgICAgICAg
ICAgICAgICBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KHJlbmRlcmVyLCByZWdpb24sIGNvbmZpZywg
aGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtOjpWaWV3KTsKKyAg
ICAgICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFn
bWVudEhpZ2hsaWdodERhdGE+IGZyYWdtZW50SGlnaGxpZ2h0ID0gYnVpbGRPYmplY3RGb3JIaWdo
bGlnaHQoaGlnaGxpZ2h0KTsKIAogICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGNsaXBw
aW5nIGFyZWEgb2YgdGhlIHJlZ2lvbi4KLSAgICAgICAgICAgICAgICBmcmFnbWVudE9iamVjdC0+
c2V0T2JqZWN0KCJyZWdpb24iLCBidWlsZE9iamVjdEZvckNTU1JlZ2lvbkNvbnRlbnRDbGlwKHJl
Z2lvbikpOwotICAgICAgICAgICAgICAgIGZyYWdtZW50c0FycmF5LT5wdXNoT2JqZWN0KFdURjo6
bW92ZShmcmFnbWVudE9iamVjdCkpOworICAgICAgICAgICAgICAgIGZyYWdtZW50SGlnaGxpZ2h0
LT5zZXRSZWdpb25DbGlwcGluZ0FyZWEoYnVpbGRRdWFkT2JqZWN0Rm9yQ1NTUmVnaW9uQ29udGVu
dENsaXAocmVnaW9uKSk7CisgICAgICAgICAgICAgICAgYXJyYXlPZkZyYWdtZW50cy0+YWRkSXRl
bShXVEY6Om1vdmUoZnJhZ21lbnRIaWdobGlnaHQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChyZWdpb24gPT0gZW5kUmVnaW9uKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bW92ZShmcmFnbWVudHNBcnJheSk7Cisg
ICAgcmV0dXJuIFdURjo6bW92ZShhcnJheU9mRnJhZ21lbnRzKTsKIH0KIAogI2lmIEVOQUJMRShD
U1NfU0hBUEVTKQpAQCAtNTg4LDI2ICs1ODUsMjcgQEAgc3RhdGljIEZsb2F0UG9pbnQgbG9jYWxQ
b2ludFRvUm9vdChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBGcmFtZVZpZXcqIG1haW4K
IHN0cnVjdCBQYXRoQXBwbHlJbmZvIHsKICAgICBGcmFtZVZpZXcqIHJvb3RWaWV3OwogICAgIEZy
YW1lVmlldyogdmlldzsKLSAgICBJbnNwZWN0b3JBcnJheSogYXJyYXk7CisgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpEaXNwbGF5UGF0aCogcGF0aEFycmF5OwogICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXI7CiAgICAgY29uc3QgU2hhcGVPdXRzaWRlSW5mbyogc2hhcGVP
dXRzaWRlSW5mbzsKIH07CiAKLXN0YXRpYyB2b2lkIGFwcGVuZFBhdGhDb21tYW5kQW5kUG9pbnRz
KFBhdGhBcHBseUluZm8qIGluZm8sIGNvbnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3QgRmxvYXRQ
b2ludCBwb2ludHNbXSwgdW5zaWduZWQgbGVuZ3RoKQorc3RhdGljIHZvaWQgYXBwZW5kUGF0aENv
bW1hbmRBbmRQb2ludHMoUGF0aEFwcGx5SW5mbyYgaW5mbywgY29uc3QgU3RyaW5nJiBjb21tYW5k
LCBjb25zdCBGbG9hdFBvaW50IHBvaW50c1tdLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgRmxv
YXRQb2ludCBwb2ludDsKLSAgICBpbmZvLT5hcnJheS0+cHVzaFN0cmluZyhjb21tYW5kKTsKKyAg
ICBpbmZvLnBhdGhBcnJheS0+YWRkSXRlbShjb21tYW5kKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgcG9pbnQgPSBpbmZvLT5zaGFwZU91dHNp
ZGVJbmZvLT5zaGFwZVRvUmVuZGVyZXJQb2ludChwb2ludHNbaV0pOwotICAgICAgICBwb2ludCA9
IGxvY2FsUG9pbnRUb1Jvb3QoaW5mby0+cmVuZGVyZXIsIGluZm8tPnJvb3RWaWV3LCBpbmZvLT52
aWV3LCBwb2ludCk7Ci0gICAgICAgIGluZm8tPmFycmF5LT5wdXNoRG91YmxlKHBvaW50LngoKSk7
Ci0gICAgICAgIGluZm8tPmFycmF5LT5wdXNoRG91YmxlKHBvaW50LnkoKSk7CisgICAgICAgIHBv
aW50ID0gaW5mby5zaGFwZU91dHNpZGVJbmZvLT5zaGFwZVRvUmVuZGVyZXJQb2ludChwb2ludHNb
aV0pOworICAgICAgICBwb2ludCA9IGxvY2FsUG9pbnRUb1Jvb3QoaW5mby5yZW5kZXJlciwgaW5m
by5yb290VmlldywgaW5mby52aWV3LCBwb2ludCk7CisgICAgICAgIGluZm8ucGF0aEFycmF5LT5h
ZGRJdGVtKHBvaW50LngoKSk7CisgICAgICAgIGluZm8ucGF0aEFycmF5LT5hZGRJdGVtKHBvaW50
LnkoKSk7CiAgICAgfQogfQogCisvLyBVc2VkIGFzIGEgZnVuY3RvciBmb3IgU2hhcGU6OmFwcGx5
LCB3aGljaCBoYXMgbm90IGJlZW4gY2xlYW5lZCB1cCB0byB1c2UgbW9kZXJuIEMrKy4KIHN0YXRp
YyB2b2lkIGFwcGVuZFBhdGhTZWdtZW50KHZvaWQqIGluZm8sIGNvbnN0IFBhdGhFbGVtZW50KiBw
YXRoRWxlbWVudCkKIHsKLSAgICBQYXRoQXBwbHlJbmZvKiBwYXRoQXBwbHlJbmZvID0gc3RhdGlj
X2Nhc3Q8UGF0aEFwcGx5SW5mbyo+KGluZm8pOworICAgIFBhdGhBcHBseUluZm8mIHBhdGhBcHBs
eUluZm8gPSAqc3RhdGljX2Nhc3Q8UGF0aEFwcGx5SW5mbyo+KGluZm8pOwogICAgIEZsb2F0UG9p
bnQgcG9pbnQ7CiAgICAgc3dpdGNoIChwYXRoRWxlbWVudC0+dHlwZSkgewogICAgIC8vIFRoZSBw
b2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAxIHZhbHVlLgpAQCAtNjMzLDQxICs2MzEsNDMgQEAg
c3RhdGljIHZvaWQgYXBwZW5kUGF0aFNlZ21lbnQodm9pZCogaW5mbywgY29uc3QgUGF0aEVsZW1l
bnQqIHBhdGhFbGVtZW50KQogICAgIH0KIH0KIAotc3RhdGljIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGJ1aWxkT2JqZWN0Rm9yU2hhcGVPdXRzaWRlKEZyYW1lKiBjb250YWluaW5nRnJhbWUsIFJl
bmRlckJveCogcmVuZGVyZXIpCitzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92
ZXJsYXlUeXBlczo6U2hhcGVPdXRzaWRlRGF0YT4gYnVpbGRPYmplY3RGb3JTaGFwZU91dHNpZGUo
RnJhbWUqIGNvbnRhaW5pbmdGcmFtZSwgUmVuZGVyQm94KiByZW5kZXJlcikKIHsKICAgICBjb25z
dCBTaGFwZU91dHNpZGVJbmZvKiBzaGFwZU91dHNpZGVJbmZvID0gcmVuZGVyZXItPnNoYXBlT3V0
c2lkZUluZm8oKTsKICAgICBpZiAoIXNoYXBlT3V0c2lkZUluZm8pCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgUmVmPEluc3BlY3Rvck9iamVjdD4gc2hhcGVPYmplY3QgPSBJbnNwZWN0
b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIExheW91dFJlY3Qgc2hhcGVCb3VuZHMgPSBzaGFwZU91
dHNpZGVJbmZvLT5jb21wdXRlZFNoYXBlUGh5c2ljYWxCb3VuZGluZ0JveCgpOwogICAgIEZsb2F0
UXVhZCBzaGFwZVF1YWQgPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3Qo
c2hhcGVCb3VuZHMpKTsKICAgICBjb250ZW50c1F1YWRUb1BhZ2UoY29udGFpbmluZ0ZyYW1lLT5w
YWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSwgY29udGFpbmluZ0ZyYW1lLT52aWV3KCksIHNoYXBl
UXVhZCk7Ci0gICAgc2hhcGVPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYm91bmRzIiks
IGJ1aWxkQXJyYXlGb3JRdWFkKHNoYXBlUXVhZCkpOworCisgICAgYXV0byBzaGFwZU9iamVjdCA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6U2hhcGVPdXRzaWRlRGF0YTo6Y3Jl
YXRlKCkKKyAgICAgICAgLnNldEJvdW5kcyhidWlsZEFycmF5Rm9yUXVhZChzaGFwZVF1YWQpKQor
ICAgICAgICAucmVsZWFzZSgpOwogCiAgICAgU2hhcGU6OkRpc3BsYXlQYXRocyBwYXRoczsKICAg
ICBzaGFwZU91dHNpZGVJbmZvLT5jb21wdXRlZFNoYXBlKCkuYnVpbGREaXNwbGF5UGF0aHMocGF0
aHMpOwogCiAgICAgaWYgKHBhdGhzLnNoYXBlLmxlbmd0aCgpKSB7Ci0gICAgICAgIFJlZjxJbnNw
ZWN0b3JBcnJheT4gc2hhcGVQYXRoID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgICAg
ICBhdXRvIHNoYXBlUGF0aCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RGlz
cGxheVBhdGg6OmNyZWF0ZSgpOwogICAgICAgICBQYXRoQXBwbHlJbmZvIGluZm87CiAgICAgICAg
IGluZm8ucm9vdFZpZXcgPSBjb250YWluaW5nRnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkudmll
dygpOwogICAgICAgICBpbmZvLnZpZXcgPSBjb250YWluaW5nRnJhbWUtPnZpZXcoKTsKLSAgICAg
ICAgaW5mby5hcnJheSA9ICZzaGFwZVBhdGguZ2V0KCk7CisgICAgICAgIGluZm8ucGF0aEFycmF5
ID0gJnNoYXBlUGF0aC5nZXQoKTsKICAgICAgICAgaW5mby5yZW5kZXJlciA9IHJlbmRlcmVyOwog
ICAgICAgICBpbmZvLnNoYXBlT3V0c2lkZUluZm8gPSBzaGFwZU91dHNpZGVJbmZvOwogCiAgICAg
ICAgIHBhdGhzLnNoYXBlLmFwcGx5KCZpbmZvLCAmYXBwZW5kUGF0aFNlZ21lbnQpOwogCi0gICAg
ICAgIHNoYXBlT2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoInNoYXBlIiksIHNoYXBlUGF0
aC5jb3B5UmVmKCkpOworICAgICAgICBzaGFwZU9iamVjdC0+c2V0U2hhcGUoc2hhcGVQYXRoLmNv
cHlSZWYoKSk7CiAKICAgICAgICAgaWYgKHBhdGhzLm1hcmdpblNoYXBlLmxlbmd0aCgpKSB7Ci0g
ICAgICAgICAgICBzaGFwZVBhdGggPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7Ci0gICAgICAg
ICAgICBpbmZvLmFycmF5ID0gJnNoYXBlUGF0aC5nZXQoKTsKKyAgICAgICAgICAgIGF1dG8gbWFy
Z2luU2hhcGVQYXRoID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpEaXNwbGF5
UGF0aDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBpbmZvLnBhdGhBcnJheSA9ICZtYXJnaW5TaGFw
ZVBhdGguZ2V0KCk7CiAKICAgICAgICAgICAgIHBhdGhzLm1hcmdpblNoYXBlLmFwcGx5KCZpbmZv
LCAmYXBwZW5kUGF0aFNlZ21lbnQpOwogCi0gICAgICAgICAgICBzaGFwZU9iamVjdC0+c2V0QXJy
YXkoQVNDSUlMaXRlcmFsKCJtYXJnaW5TaGFwZSIpLCBzaGFwZVBhdGguY29weVJlZigpKTsKKyAg
ICAgICAgICAgIHNoYXBlT2JqZWN0LT5zZXRNYXJnaW5TaGFwZShzaGFwZVBhdGguY29weVJlZigp
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNjc1LDE4ICs2NzUsMTkgQEAgc3RhdGljIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yU2hhcGVPdXRzaWRlKEZyYW1lKiBjb250
YWluaW5nRnJhbWUKIH0KICNlbmRpZgogCi1zdGF0aWMgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
YnVpbGRPYmplY3RGb3JFbGVtZW50SW5mbyhOb2RlKiBub2RlKQorc3RhdGljIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkVsZW1lbnREYXRhPiBidWlsZE9iamVjdEZv
ckVsZW1lbnREYXRhKE5vZGUqIG5vZGUpCiB7Ci0gICAgQVNTRVJUKG5vZGUpOwotICAgIGlmICgh
aXM8RWxlbWVudD4oKm5vZGUpIHx8ICFub2RlLT5kb2N1bWVudCgpLmZyYW1lKCkpCisgICAgaWYg
KCFpczxFbGVtZW50Pihub2RlKSB8fCAhbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGVsZW1lbnRJbmZv
ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLQogICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBk
b3duY2FzdDxFbGVtZW50Pigqbm9kZSk7CiAgICAgYm9vbCBpc1hIVE1MID0gZWxlbWVudC5kb2N1
bWVudCgpLmlzWEhUTUxEb2N1bWVudCgpOwotICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJpbmcoInRh
Z05hbWUiLCBpc1hIVE1MID8gZWxlbWVudC5ub2RlTmFtZSgpIDogZWxlbWVudC5ub2RlTmFtZSgp
Lmxvd2VyKCkpOwotICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJpbmcoImlkVmFsdWUiLCBlbGVtZW50
LmdldElkQXR0cmlidXRlKCkpOworCisgICAgYXV0byBlbGVtZW50RGF0YSA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RWxlbWVudERhdGE6OmNyZWF0ZSgpCisgICAgICAgIC5z
ZXRUYWdOYW1lKGlzWEhUTUwgPyBlbGVtZW50Lm5vZGVOYW1lKCkgOiBlbGVtZW50Lm5vZGVOYW1l
KCkubG93ZXIoKSkKKyAgICAgICAgLnNldElkVmFsdWUoZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgp
KQorICAgICAgICAucmVsZWFzZSgpOworCiAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHVzZWRD
bGFzc05hbWVzOwogICAgIGlmIChlbGVtZW50Lmhhc0NsYXNzKCkgJiYgaXM8U3R5bGVkRWxlbWVu
dD4oZWxlbWVudCkpIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBjbGFzc05hbWVzOwpAQCAtNzAw
LDQwICs3MDEsNDkgQEAgc3RhdGljIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0
Rm9yRWxlbWVudEluZm8oTm9kZSogbm9kZSkKICAgICAgICAgICAgIGNsYXNzTmFtZXMuYXBwZW5k
KCcuJyk7CiAgICAgICAgICAgICBjbGFzc05hbWVzLmFwcGVuZChjbGFzc05hbWUpOwogICAgICAg
ICB9Ci0gICAgICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJpbmcoImNsYXNzTmFtZSIsIGNsYXNzTmFt
ZXMudG9TdHJpbmcoKSk7CisgICAgICAgIGVsZW1lbnREYXRhLT5zZXRDbGFzc05hbWUoY2xhc3NO
YW1lcy50b1N0cmluZygpKTsKICAgICB9CiAKICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9
IGVsZW1lbnQucmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKwogICAgIEZyYW1lKiBjb250YWluaW5nRnJhbWUgPSBub2RlLT5kb2N1bWVudCgp
LmZyYW1lKCk7CiAgICAgRnJhbWVWaWV3KiBjb250YWluaW5nVmlldyA9IGNvbnRhaW5pbmdGcmFt
ZS0+dmlldygpOwogICAgIEludFJlY3QgYm91bmRpbmdCb3ggPSBzbmFwcGVkSW50UmVjdChjb250
YWluaW5nVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdCgpKSk7CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG1vZGVsT2JqZWN0ID0gaXM8
UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpyZW5kZXJlcikgPyBkb3duY2FzdDxSZW5kZXJCb3hNb2Rl
bE9iamVjdD4ocmVuZGVyZXIpIDogbnVsbHB0cjsKLSAgICBlbGVtZW50SW5mby0+c2V0U3RyaW5n
KCJub2RlV2lkdGgiLCBTdHJpbmc6Om51bWJlcihtb2RlbE9iamVjdCA/IGFkanVzdEZvckFic29s
dXRlWm9vbShtb2RlbE9iamVjdC0+cGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgKm1vZGVsT2Jq
ZWN0KSA6IGJvdW5kaW5nQm94LndpZHRoKCkpKTsKLSAgICBlbGVtZW50SW5mby0+c2V0U3RyaW5n
KCJub2RlSGVpZ2h0IiwgU3RyaW5nOjpudW1iZXIobW9kZWxPYmplY3QgPyBhZGp1c3RGb3JBYnNv
bHV0ZVpvb20obW9kZWxPYmplY3QtPnBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpLCAqbW9kZWxP
YmplY3QpIDogYm91bmRpbmdCb3guaGVpZ2h0KCkpKTsKLSAgICAKKyAgICBhdXRvIHNpemVPYmpl
Y3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlNpemU6OmNyZWF0ZSgpCisg
ICAgICAgIC5zZXRXaWR0aChtb2RlbE9iamVjdCA/IGFkanVzdEZvckFic29sdXRlWm9vbShtb2Rl
bE9iamVjdC0+cGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgKm1vZGVsT2JqZWN0KSA6IGJvdW5k
aW5nQm94LndpZHRoKCkpCisgICAgICAgIC5zZXRIZWlnaHQobW9kZWxPYmplY3QgPyBhZGp1c3RG
b3JBYnNvbHV0ZVpvb20obW9kZWxPYmplY3QtPnBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpLCAq
bW9kZWxPYmplY3QpIDogYm91bmRpbmdCb3guaGVpZ2h0KCkpCisgICAgICAgIC5yZWxlYXNlKCk7
CisgICAgZWxlbWVudERhdGEtPnNldFNpemUoV1RGOjptb3ZlKHNpemVPYmplY3QpKTsKKwogICAg
IGlmIChyZW5kZXJlci0+aXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpKSB7CiAg
ICAgICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50JiByZWdpb24gPSAqZG93bmNhc3Q8UmVuZGVy
QmxvY2tGbG93PigqcmVuZGVyZXIpLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7CiAgICAgICAg
IGlmIChyZWdpb24uaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBSZW5kZXJGbG93VGhyZWFkKiBm
bG93VGhyZWFkID0gcmVnaW9uLmZsb3dUaHJlYWQoKTsKLSAgICAgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IHJlZ2lvbkZsb3dJbmZvID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
LSAgICAgICAgICAgIHJlZ2lvbkZsb3dJbmZvLT5zZXRTdHJpbmcoIm5hbWUiLCBkb3duY2FzdDxS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQ+KCpmbG93VGhyZWFkKS5mbG93VGhyZWFkTmFtZSgpKTsKLSAg
ICAgICAgICAgIHJlZ2lvbkZsb3dJbmZvLT5zZXRBcnJheSgicmVnaW9ucyIsIGJ1aWxkT2JqZWN0
Rm9yQ1NTUmVnaW9uc0hpZ2hsaWdodCgmcmVnaW9uLCBmbG93VGhyZWFkKSk7Ci0gICAgICAgICAg
ICBlbGVtZW50SW5mby0+c2V0T2JqZWN0KCJyZWdpb25GbG93SW5mbyIsIHJlZ2lvbkZsb3dJbmZv
LnJlbGVhc2UoKSk7CisgICAgICAgICAgICBhdXRvIHJlZ2lvbkZsb3dEYXRhID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWdpb25GbG93RGF0YTo6Y3JlYXRlKCkKKyAgICAg
ICAgICAgICAgICAuc2V0TmFtZShkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dUaHJlYWQ+KCpmbG93
VGhyZWFkKS5mbG93VGhyZWFkTmFtZSgpKQorICAgICAgICAgICAgICAgIC5zZXRSZWdpb25zKGJ1
aWxkT2JqZWN0Rm9yRmxvd1JlZ2lvbnMoJnJlZ2lvbiwgZmxvd1RocmVhZCkpCisgICAgICAgICAg
ICAgICAgLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGVsZW1lbnREYXRhLT5zZXRSZWdpb25GbG93
RGF0YShXVEY6Om1vdmUocmVnaW9uRmxvd0RhdGEpKTsKICAgICAgICAgfQogICAgIH0KIAogICAg
IFJlbmRlckZsb3dUaHJlYWQqIGNvbnRhaW5pbmdGbG93VGhyZWFkID0gcmVuZGVyZXItPmZsb3dU
aHJlYWRDb250YWluaW5nQmxvY2soKTsKICAgICBpZiAoaXM8UmVuZGVyTmFtZWRGbG93VGhyZWFk
Pihjb250YWluaW5nRmxvd1RocmVhZCkpIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gY29udGVudEZsb3dJbmZvID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAg
Y29udGVudEZsb3dJbmZvLT5zZXRTdHJpbmcoIm5hbWUiLCBkb3duY2FzdDxSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ+KCpjb250YWluaW5nRmxvd1RocmVhZCkuZmxvd1RocmVhZE5hbWUoKSk7Ci0gICAg
ICAgIGVsZW1lbnRJbmZvLT5zZXRPYmplY3QoImNvbnRlbnRGbG93SW5mbyIsIGNvbnRlbnRGbG93
SW5mby5yZWxlYXNlKCkpOworICAgICAgICBhdXRvIGNvbnRlbnRGbG93RGF0YSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Q29udGVudEZsb3dEYXRhOjpjcmVhdGUoKQorICAg
ICAgICAgICAgLnNldE5hbWUoZG93bmNhc3Q8UmVuZGVyTmFtZWRGbG93VGhyZWFkPigqY29udGFp
bmluZ0Zsb3dUaHJlYWQpLmZsb3dUaHJlYWROYW1lKCkpCisgICAgICAgICAgICAucmVsZWFzZSgp
OworCisgICAgICAgIGVsZW1lbnREYXRhLT5zZXRDb250ZW50Rmxvd0RhdGEoV1RGOjptb3ZlKGNv
bnRlbnRGbG93RGF0YSkpOwogICAgIH0KIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgIGlm
IChpczxSZW5kZXJCb3g+KCpyZW5kZXJlcikpIHsKICAgICAgICAgYXV0byYgcmVuZGVyQm94ID0g
ZG93bmNhc3Q8UmVuZGVyQm94PigqcmVuZGVyZXIpOwotICAgICAgICBpZiAoUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gc2hhcGVPYmplY3QgPSBidWlsZE9iamVjdEZvclNoYXBlT3V0c2lkZShjb250
YWluaW5nRnJhbWUsICZyZW5kZXJCb3gpKQotICAgICAgICAgICAgZWxlbWVudEluZm8tPnNldE9i
amVjdCgic2hhcGVPdXRzaWRlSW5mbyIsIHNoYXBlT2JqZWN0LnJlbGVhc2UoKSk7CisgICAgICAg
IGlmIChSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpTaGFwZU91dHNp
ZGVEYXRhPiBzaGFwZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yU2hhcGVPdXRzaWRlKGNvbnRhaW5p
bmdGcmFtZSwgJnJlbmRlckJveCkpCisgICAgICAgICAgICBlbGVtZW50RGF0YS0+c2V0U2hhcGVP
dXRzaWRlRGF0YShXVEY6Om1vdmUoc2hhcGVPYmplY3QpKTsKICAgICB9CiAjZW5kaWYKIApAQCAt
NzQzLDEzICs3NTMsMTMgQEAgc3RhdGljIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2Jq
ZWN0Rm9yRWxlbWVudEluZm8oTm9kZSogbm9kZSkKIAogICAgIGlmIChBWE9iamVjdENhY2hlKiBh
eE9iamVjdENhY2hlID0gbm9kZS0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCkpIHsKICAgICAg
ICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gYXhPYmplY3RDYWNoZS0+Z2V0
T3JDcmVhdGUobm9kZSkpCi0gICAgICAgICAgICBlbGVtZW50SW5mby0+c2V0U3RyaW5nKCJyb2xl
IiwgYXhPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpKTsKKyAgICAgICAgICAgIGVsZW1lbnRE
YXRhLT5zZXRSb2xlKGF4T2JqZWN0LT5jb21wdXRlZFJvbGVTdHJpbmcoKSk7CiAgICAgfQogCi0g
ICAgcmV0dXJuIFdURjo6bW92ZShlbGVtZW50SW5mbyk7CisgICAgcmV0dXJuIFdURjo6bW92ZShl
bGVtZW50RGF0YSk7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3Rvck92ZXJs
YXk6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29uc3QKK1JlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPiBJbnNwZWN0b3JP
dmVybGF5OjpidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2hpZ2hsaWdodE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzU5LDMzICs3
NjksMzAgQEAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yT3ZlcmxheTo6YnVpbGRP
YmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdAogICAgIGlmICghcmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBoaWdobGln
aHRGcmFnbWVudHMgPSBidWlsZE9iamVjdEZvclJlbmRlcmVyRnJhZ21lbnRzKHJlbmRlcmVyLCBt
X25vZGVIaWdobGlnaHRDb25maWcpOwotICAgIGlmICghaGlnaGxpZ2h0RnJhZ21lbnRzKQorICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpP
dmVybGF5VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0RGF0YT4+IGFycmF5T2ZGcmFnbWVudEhpZ2hs
aWdodHMgPSBidWlsZEFycmF5Rm9yUmVuZGVyZXJGcmFnbWVudHMocmVuZGVyZXIsIG1fbm9kZUhp
Z2hsaWdodENvbmZpZyk7CisgICAgaWYgKCFhcnJheU9mRnJhZ21lbnRIaWdobGlnaHRzKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGhpZ2hsaWdo
dE9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0KICAgICAvLyBUaGUgbWFpbiB2
aWV3J3Mgc2Nyb2xsIG9mZnNldCBpcyBzaGFyZWQgYWNyb3NzIGFsbCBxdWFkcy4KICAgICBGcmFt
ZVZpZXcqIG1haW5WaWV3ID0gbV9wYWdlLm1haW5GcmFtZSgpLnZpZXcoKTsKLSAgICBoaWdobGln
aHRPYmplY3QtPnNldE9iamVjdCgic2Nyb2xsIiwgYnVpbGRPYmplY3RGb3JQb2ludCghbWFpblZp
ZXctPmRlbGVnYXRlc1Njcm9sbGluZygpID8gbWFpblZpZXctPnZpc2libGVDb250ZW50UmVjdCgp
LmxvY2F0aW9uKCkgOiBGbG9hdFBvaW50KCkpKTsKIAotICAgIGhpZ2hsaWdodE9iamVjdC0+c2V0
QXJyYXkoImZyYWdtZW50cyIsIGhpZ2hsaWdodEZyYWdtZW50cy5yZWxlYXNlKCkpOworICAgIGF1
dG8gbm9kZUhpZ2hsaWdodE9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBl
czo6Tm9kZUhpZ2hsaWdodERhdGE6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRTY3JvbGxPZmZzZXQo
YnVpbGRPYmplY3RGb3JQb2ludCghbWFpblZpZXctPmRlbGVnYXRlc1Njcm9sbGluZygpID8gbWFp
blZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkgOiBGbG9hdFBvaW50KCkpKQor
ICAgICAgICAuc2V0RnJhZ21lbnRzKFdURjo6bW92ZShhcnJheU9mRnJhZ21lbnRIaWdobGlnaHRz
KSkKKyAgICAgICAgLnJlbGVhc2UoKTsKIAogICAgIGlmIChtX25vZGVIaWdobGlnaHRDb25maWcu
c2hvd0luZm8pIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZWxlbWVudEluZm8g
PSBidWlsZE9iamVjdEZvckVsZW1lbnRJbmZvKG5vZGUpOwotICAgICAgICBpZiAoZWxlbWVudElu
Zm8pCi0gICAgICAgICAgICBoaWdobGlnaHRPYmplY3QtPnNldE9iamVjdCgiZWxlbWVudEluZm8i
LCBlbGVtZW50SW5mby5yZWxlYXNlKCkpOworICAgICAgICBpZiAoUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RWxlbWVudERhdGE+IGVsZW1lbnREYXRhID0gYnVpbGRP
YmplY3RGb3JFbGVtZW50RGF0YShub2RlKSkKKyAgICAgICAgICAgIG5vZGVIaWdobGlnaHRPYmpl
Y3QtPnNldEVsZW1lbnREYXRhKFdURjo6bW92ZShlbGVtZW50RGF0YSkpOwogICAgIH0KLSAgICAg
ICAgCi0gICAgcmV0dXJuIFdURjo6bW92ZShoaWdobGlnaHRPYmplY3QpOworCisgICAgcmV0dXJu
IFdURjo6bW92ZShub2RlSGlnaGxpZ2h0T2JqZWN0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVy
bGF5OjpkcmF3Tm9kZUhpZ2hsaWdodCgpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
aGlnaGxpZ2h0T2JqZWN0ID0gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKTsKLSAgICBp
ZiAoIWhpZ2hsaWdodE9iamVjdCkKLSAgICAgICAgcmV0dXJuOwotICAgIGV2YWx1YXRlSW5PdmVy
bGF5KCJkcmF3Tm9kZUhpZ2hsaWdodCIsIGhpZ2hsaWdodE9iamVjdCk7CisgICAgaWYgKFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPiBo
aWdobGlnaHRPYmplY3QgPSBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpKQorICAgICAg
ICBldmFsdWF0ZUluT3ZlcmxheSgiZHJhd05vZGVIaWdobGlnaHQiLCBXVEY6Om1vdmUoaGlnaGxp
Z2h0T2JqZWN0KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1F1YWRIaWdobGln
aHQoKQpAQCAtNzk0LDcgKzgwMSw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1F1YWRI
aWdobGlnaHQoKQogICAgICAgICByZXR1cm47CiAKICAgICBIaWdobGlnaHQgaGlnaGxpZ2h0Owot
ICAgIGJ1aWxkUXVhZEhpZ2hsaWdodCgqbV9oaWdobGlnaHRRdWFkLCBtX3F1YWRIaWdobGlnaHRD
b25maWcsICZoaWdobGlnaHQpOworICAgIGJ1aWxkUXVhZEhpZ2hsaWdodCgqbV9oaWdobGlnaHRR
dWFkLCBtX3F1YWRIaWdobGlnaHRDb25maWcsIGhpZ2hsaWdodCk7CiAgICAgZXZhbHVhdGVJbk92
ZXJsYXkoImRyYXdRdWFkSGlnaGxpZ2h0IiwgYnVpbGRPYmplY3RGb3JIaWdobGlnaHQoaGlnaGxp
Z2h0KSk7CiB9CiAKQEAgLTg1OSwxMSArODY2LDEyIEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6
Zm9yY2VQYWludCgpCiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6cmVzZXQoY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplLCBjb25zdCBJbnRTaXplJiBmcmFtZVZpZXdGdWxsU2l6ZSkKIHsKLSAg
ICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXNldERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwotICAgIHJlc2V0RGF0YS0+c2V0RG91YmxlKCJkZXZpY2VTY2FsZUZhY3RvciIsIG1fcGFn
ZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICByZXNldERhdGEtPnNldE9iamVjdCgidmlld3Bv
cnRTaXplIiwgYnVpbGRPYmplY3RGb3JTaXplKHZpZXdwb3J0U2l6ZSkpOwotICAgIHJlc2V0RGF0
YS0+c2V0T2JqZWN0KCJmcmFtZVZpZXdGdWxsU2l6ZSIsIGJ1aWxkT2JqZWN0Rm9yU2l6ZShmcmFt
ZVZpZXdGdWxsU2l6ZSkpOwotICAgIGV2YWx1YXRlSW5PdmVybGF5KCJyZXNldCIsIFdURjo6bW92
ZShyZXNldERhdGEpKTsKKyAgICBhdXRvIGNvbmZpZ09iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok92ZXJsYXlUeXBlczo6T3ZlcmxheUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpCisgICAgICAg
IC5zZXREZXZpY2VTY2FsZUZhY3RvcihtX3BhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSkKKyAgICAg
ICAgLnNldFZpZXdwb3J0U2l6ZShidWlsZE9iamVjdEZvclNpemUodmlld3BvcnRTaXplKSkKKyAg
ICAgICAgLnNldEZyYW1lVmlld0Z1bGxTaXplKGJ1aWxkT2JqZWN0Rm9yU2l6ZShmcmFtZVZpZXdG
dWxsU2l6ZSkpCisgICAgICAgIC5yZWxlYXNlKCk7CisgICAgZXZhbHVhdGVJbk92ZXJsYXkoInJl
c2V0IiwgV1RGOjptb3ZlKGNvbmZpZ09iamVjdCkpOwogfQogCiB2b2lkIEluc3BlY3Rvck92ZXJs
YXk6OmV2YWx1YXRlSW5PdmVybGF5KGNvbnN0IFN0cmluZyYgbWV0aG9kKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKaW5kZXggZTVjZmVlZjI1NzU2ZmJlZmYy
ZTBkNzJlZjJiYzlhZmUwZWM4YTdmNS4uNDMyNmExMDVhMDk2MDdkOWRhMDBmOTk4YWQzNjBiMWE2
ODBmY2RhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5o
CkBAIC00MSw2ICs0MSwxMiBAQAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0
b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKKworbmFtZXNwYWNlIFByb3RvY29sIHsK
K25hbWVzcGFjZSBPdmVybGF5VHlwZXMgeworY2xhc3MgTm9kZUhpZ2hsaWdodERhdGE7Cit9Cit9
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY0LDE3ICs3MCwxMyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCB1c2VQYWdlQ29vcmRpbmF0ZXM7CiB9OwogCi1lbnVtIEhpZ2hsaWdodFR5cGUgewot
ICAgIEhpZ2hsaWdodFR5cGVOb2RlLAotICAgIEhpZ2hsaWdodFR5cGVSZWN0cywKK2VudW0gY2xh
c3MgSGlnaGxpZ2h0VHlwZSB7CisgICAgTm9kZSwgLy8gUHJvdmlkZXMgNCBxdWFkczogbWFyZ2lu
LCBib3JkZXIsIHBhZGRpbmcsIGNvbnRlbnQuCisgICAgUmVjdHMsIC8vIFByb3ZpZGVzIGEgbGlz
dCBvZiBxdWFkcy4KIH07CiAKIHN0cnVjdCBIaWdobGlnaHQgewotICAgIEhpZ2hsaWdodCgpCi0g
ICAgICAgIDogdHlwZShIaWdobGlnaHRUeXBlTm9kZSkKLSAgICAgICAgLCB1c2VQYWdlQ29vcmRp
bmF0ZXModHJ1ZSkKLSAgICB7Ci0gICAgfQorICAgIEhpZ2hsaWdodCgpIHsgfQogCiAgICAgdm9p
ZCBzZXREYXRhRnJvbUNvbmZpZyhjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdodENvbmZp
ZykKICAgICB7CkBAIC05MiwxMSArOTQsOSBAQCBzdHJ1Y3QgSGlnaGxpZ2h0IHsKICAgICBDb2xv
ciBib3JkZXJDb2xvcjsKICAgICBDb2xvciBtYXJnaW5Db2xvcjsKIAotICAgIC8vIFdoZW4gdGhl
IHR5cGUgaXMgTm9kZSwgdGhlcmUgYXJlIDQgcXVhZHMgKG1hcmdpbiwgYm9yZGVyLCBwYWRkaW5n
LCBjb250ZW50KS4KLSAgICAvLyBXaGVuIHRoZSB0eXBlIGlzIFJlY3RzLCB0aGlzIGlzIGp1c3Qg
YSBsaXN0IG9mIHF1YWRzLgotICAgIEhpZ2hsaWdodFR5cGUgdHlwZTsKKyAgICBIaWdobGlnaHRU
eXBlIHR5cGUge0hpZ2hsaWdodFR5cGU6Ok5vZGV9OwogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1
YWRzOwotICAgIGJvb2wgdXNlUGFnZUNvb3JkaW5hdGVzOworICAgIGJvb2wgdXNlUGFnZUNvb3Jk
aW5hdGVzIHt0cnVlfTsKIH07CiAKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXkgewpAQCAtMTEyLDcg
KzExMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlKCk7CiAgICAgdm9pZCBwYWludChH
cmFwaGljc0NvbnRleHQmKTsKLSAgICB2b2lkIGdldEhpZ2hsaWdodChIaWdobGlnaHQqLCBDb29y
ZGluYXRlU3lzdGVtKSBjb25zdDsKKyAgICB2b2lkIGdldEhpZ2hsaWdodChIaWdobGlnaHQmLCBD
b29yZGluYXRlU3lzdGVtKSBjb25zdDsKIAogICAgIHZvaWQgc2V0UGF1c2VkSW5EZWJ1Z2dlck1l
c3NhZ2UoY29uc3QgU3RyaW5nKik7CiAKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKTsKIAotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBj
b25zdDsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2Rl
SGlnaGxpZ2h0RGF0YT4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIAog
ICAgIHZvaWQgZnJlZVBhZ2UoKTsKIHByaXZhdGU6CkBAIC0xNjEsOCArMTYxLDggQEAgcHJpdmF0
ZToKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1l
X3BvaW50LCBGbG9hdFJlY3Q+IFRpbWVSZWN0UGFpcjsKICAgICBEZXF1ZTxUaW1lUmVjdFBhaXI+
IG1fcGFpbnRSZWN0czsKICAgICBUaW1lciBtX3BhaW50UmVjdFVwZGF0ZVRpbWVyOwotICAgIGJv
b2wgbV9pbmRpY2F0aW5nOwotICAgIGJvb2wgbV9zaG93aW5nUGFpbnRSZWN0czsKKyAgICBib29s
IG1faW5kaWNhdGluZyB7ZmFsc2V9OworICAgIGJvb2wgbV9zaG93aW5nUGFpbnRSZWN0cyB7ZmFs
c2V9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpzCmluZGV4IDAyMTk1YzcwOTE0ZWY1YjEx
OTMzMzk1OWI4ZmZhNzk1ZWJjM2ZkMzAuLmNhNWIzOThmZjMyZmJkMzc0NDc2YmEwZTA4MjliZDU4
ZTFkNjg0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JP
dmVybGF5UGFnZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheVBhZ2UuanMKQEAgLTI2MSwzNiArMjYxLDM2IEBAIGZ1bmN0aW9uIF90cnVuY2F0ZVN0cmlu
Zyh2YWx1ZSwgbWF4TGVuZ3RoKQogICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiBt
YXhMZW5ndGggPyB2YWx1ZS5zdWJzdHJpbmcoMCwgNTApICsgIlx1MjAyNiIgOiB2YWx1ZTsKIH0K
IAotZnVuY3Rpb24gX2NyZWF0ZUVsZW1lbnRUaXRsZShlbGVtZW50SW5mbykKK2Z1bmN0aW9uIF9j
cmVhdGVFbGVtZW50VGl0bGUoZWxlbWVudERhdGEpCiB7CiAgICAgdmFyIGJ1aWxkZXIgPSBuZXcg
RE9NQnVpbGRlcigiZGl2IiwgImVsZW1lbnQtdGl0bGUiKTsKICAgICAKLSAgICBidWlsZGVyLmFw
cGVuZFNwYW5JZk5vdE51bGwoInRhZy1uYW1lIiwgZWxlbWVudEluZm8udGFnTmFtZSk7Ci0gICAg
YnVpbGRlci5hcHBlbmRTcGFuSWZOb3ROdWxsKCJub2RlLWlkIiwgZWxlbWVudEluZm8uaWRWYWx1
ZSwgIiMiKTsKLSAgICBidWlsZGVyLmFwcGVuZFNwYW5JZk5vdE51bGwoImNsYXNzLW5hbWUiLCBf
dHJ1bmNhdGVTdHJpbmcoZWxlbWVudEluZm8uY2xhc3NOYW1lLCA1MCkpOworICAgIGJ1aWxkZXIu
YXBwZW5kU3BhbklmTm90TnVsbCgidGFnLW5hbWUiLCBlbGVtZW50RGF0YS50YWdOYW1lKTsKKyAg
ICBidWlsZGVyLmFwcGVuZFNwYW5JZk5vdE51bGwoIm5vZGUtaWQiLCBlbGVtZW50RGF0YS5pZFZh
bHVlLCAiIyIpOworICAgIGJ1aWxkZXIuYXBwZW5kU3BhbklmTm90TnVsbCgiY2xhc3MtbmFtZSIs
IF90cnVuY2F0ZVN0cmluZyhlbGVtZW50RGF0YS5jbGFzc05hbWUsIDUwKSk7CiAKICAgICBidWls
ZGVyLmFwcGVuZFRleHROb2RlKCIgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRTcGFuKCJub2RlLXdp
ZHRoIiwgZWxlbWVudEluZm8ubm9kZVdpZHRoKTsKKyAgICBidWlsZGVyLmFwcGVuZFNwYW4oIm5v
ZGUtd2lkdGgiLCBlbGVtZW50RGF0YS5zaXplLndpZHRoKTsKICAgICAvLyBceGQ3IGlzIHRoZSBj
b2RlIGZvciB0aGUgJnRpbWVzOyBIVE1MIGVudGl0eS4KICAgICBidWlsZGVyLmFwcGVuZFNwYW4o
InB4IiwgInB4IFx4ZDcgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRTcGFuKCJub2RlLWhlaWdodCIs
IGVsZW1lbnRJbmZvLm5vZGVIZWlnaHQpOworICAgIGJ1aWxkZXIuYXBwZW5kU3Bhbigibm9kZS1o
ZWlnaHQiLCBlbGVtZW50RGF0YS5zaXplLmhlaWdodCk7CiAgICAgYnVpbGRlci5hcHBlbmRTcGFu
KCJweCIsICJweCIpOwogCi0gICAgYnVpbGRlci5hcHBlbmRQcm9wZXJ0eUlmTm90TnVsbCgicm9s
ZS1uYW1lIiwgIlJvbGUiLCBlbGVtZW50SW5mby5yb2xlKTsKLSAgICBidWlsZGVyLmFwcGVuZFBy
b3BlcnR5SWZOb3ROdWxsKCJyZWdpb24tZmxvdy1uYW1lIiwgIlJlZ2lvbiBGbG93IiwgZWxlbWVu
dEluZm8ucmVnaW9uRmxvd0luZm8gPyBlbGVtZW50SW5mby5yZWdpb25GbG93SW5mby5uYW1lIDog
bnVsbCk7Ci0gICAgYnVpbGRlci5hcHBlbmRQcm9wZXJ0eUlmTm90TnVsbCgiY29udGVudC1mbG93
LW5hbWUiLCAiQ29udGVudCBGbG93IiwgZWxlbWVudEluZm8uY29udGVudEZsb3dJbmZvID8gZWxl
bWVudEluZm8uY29udGVudEZsb3dJbmZvLm5hbWUgOiBudWxsKTsKKyAgICBidWlsZGVyLmFwcGVu
ZFByb3BlcnR5SWZOb3ROdWxsKCJyb2xlLW5hbWUiLCAiUm9sZSIsIGVsZW1lbnREYXRhLnJvbGUp
OworICAgIGJ1aWxkZXIuYXBwZW5kUHJvcGVydHlJZk5vdE51bGwoInJlZ2lvbi1mbG93LW5hbWUi
LCAiUmVnaW9uIEZsb3ciLCBlbGVtZW50RGF0YS5yZWdpb25GbG93RGF0YSA/IGVsZW1lbnREYXRh
LnJlZ2lvbkZsb3dEYXRhLm5hbWUgOiBudWxsKTsKKyAgICBidWlsZGVyLmFwcGVuZFByb3BlcnR5
SWZOb3ROdWxsKCJjb250ZW50LWZsb3ctbmFtZSIsICJDb250ZW50IEZsb3ciLCBlbGVtZW50RGF0
YS5jb250ZW50Rmxvd0RhdGEgPyBlbGVtZW50RGF0YS5jb250ZW50Rmxvd0RhdGEubmFtZSA6IG51
bGwpOwogCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZW1lbnQtdGl0bGUtY29udGFp
bmVyIikuYXBwZW5kQ2hpbGQoYnVpbGRlci5lbGVtZW50KTsKIAogICAgIHJldHVybiBidWlsZGVy
LmVsZW1lbnQ7CiB9CiAKLWZ1bmN0aW9uIF9kcmF3RWxlbWVudFRpdGxlKGVsZW1lbnRJbmZvLCBm
cmFnbWVudEhpZ2hsaWdodCwgc2Nyb2xsKQorZnVuY3Rpb24gX2RyYXdFbGVtZW50VGl0bGUoZWxl
bWVudERhdGEsIGZyYWdtZW50SGlnaGxpZ2h0LCBzY3JvbGwpCiB7Ci0gICAgaWYgKCFlbGVtZW50
SW5mbyB8fCAhZnJhZ21lbnRIaWdobGlnaHQucXVhZHMubGVuZ3RoKQorICAgIGlmICghZWxlbWVu
dERhdGEgfHwgIWZyYWdtZW50SGlnaGxpZ2h0LnF1YWRzLmxlbmd0aCkKICAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIHZhciBlbGVtZW50VGl0bGUgPSBfY3JlYXRlRWxlbWVudFRpdGxlKGVsZW1l
bnRJbmZvKTsKKworICAgIHZhciBlbGVtZW50VGl0bGUgPSBfY3JlYXRlRWxlbWVudFRpdGxlKGVs
ZW1lbnREYXRhKTsKIAogICAgIHZhciBtYXJnaW5RdWFkID0gZnJhZ21lbnRIaWdobGlnaHQucXVh
ZHNbMF07CiAKQEAgLTMwNSwxMSArMzA1LDEwIEBAIGZ1bmN0aW9uIF9kcmF3RWxlbWVudFRpdGxl
KGVsZW1lbnRJbmZvLCBmcmFnbWVudEhpZ2hsaWdodCwgc2Nyb2xsKQogICAgIHZhciByZW5kZXJB
cnJvd0Rvd24gPSBmYWxzZTsKIAogICAgIHZhciBib3hYID0gbWFyZ2luUXVhZFswXS54OwotICAg
IAotICAgIHZhciBjb250YWluaW5nUmVnaW9uID0gZnJhZ21lbnRIaWdobGlnaHQucmVnaW9uOwot
ICAgIGlmIChjb250YWluaW5nUmVnaW9uKSB7CisKKyAgICB2YXIgY2xpcFF1YWQgPSBmcmFnbWVu
dEhpZ2hsaWdodC5yZWdpb25DbGlwcGluZ0FyZWE7CisgICAgaWYgKGNsaXBRdWFkKSB7CiAgICAg
ICAgIC8vIFJlc3RyaWN0IHRoZSBwb3NpdGlvbiBvZiB0aGUgdGl0bGUgYm94IHRvIHRoZSBhcmVh
IG9mIHRoZSBjb250YWluaW5nIHJlZ2lvbi4KLSAgICAgICAgdmFyIGNsaXBRdWFkID0gY29udGFp
bmluZ1JlZ2lvbi5xdWFkOwogICAgICAgICBhbmNob3JUb3AgPSBNYXRoLm1heChhbmNob3JUb3As
IE1hdGgubWluKGNsaXBRdWFkWzBdLnksIGNsaXBRdWFkWzFdLnksIGNsaXBRdWFkWzJdLnksIGNs
aXBRdWFkWzNdLnkpKTsKICAgICAgICAgYW5jaG9yQm90dG9tID0gTWF0aC5taW4oYW5jaG9yQm90
dG9tLCBNYXRoLm1heChjbGlwUXVhZFswXS55LCBjbGlwUXVhZFsxXS55LCBjbGlwUXVhZFsyXS55
LCBjbGlwUXVhZFszXS55KSk7CiAgICAgICAgIGJveFggPSBNYXRoLm1heChib3hYLCBNYXRoLm1p
bihjbGlwUXVhZFswXS54LCBjbGlwUXVhZFsxXS54LCBjbGlwUXVhZFsyXS54LCBjbGlwUXVhZFsz
XS54KSk7CkBAIC00MzAsOSArNDI5LDkgQEAgZnVuY3Rpb24gX2RyYXdGcmFnbWVudEhpZ2hsaWdo
dChoaWdobGlnaHQpCiAKICAgICBjb250ZXh0LnNhdmUoKTsKIAotICAgIGlmIChoaWdobGlnaHQu
cmVnaW9uKSB7CisgICAgaWYgKGhpZ2hsaWdodC5yZWdpb25DbGlwcGluZ0FyZWEpIHsKICAgICAg
ICAgLy8gQ2xpcCB0byB0aGUgY29udGFpbmluZyByZWdpb24gdG8gYXZvaWQgc2hvd2luZyBmcmFn
bWVudHMgdGhhdCBhcmUgbm90IHJlbmRlcmVkIGJ5IHRoaXMgcmVnaW9uLgotICAgICAgICBxdWFk
VG9QYXRoKGhpZ2hsaWdodC5yZWdpb24ucXVhZCkuY2xpcCgpOworICAgICAgICBxdWFkVG9QYXRo
KGhpZ2hsaWdodC5yZWdpb25DbGlwcGluZ0FyZWEpLmNsaXAoKTsKICAgICB9CiAKICAgICB2YXIg
cXVhZHMgPSBoaWdobGlnaHQucXVhZHMuc2xpY2UoKTsKQEAgLTQ5MSwyMyArNDkwLDIzIEBAIGZ1
bmN0aW9uIGhpZGVQYWdlSW5kaWNhdGlvbigpCiBmdW5jdGlvbiBkcmF3Tm9kZUhpZ2hsaWdodCho
aWdobGlnaHQpCiB7CiAgICAgY29udGV4dC5zYXZlKCk7Ci0gICAgY29udGV4dC50cmFuc2xhdGUo
LWhpZ2hsaWdodC5zY3JvbGwueCwgLWhpZ2hsaWdodC5zY3JvbGwueSk7CisgICAgY29udGV4dC50
cmFuc2xhdGUoLWhpZ2hsaWdodC5zY3JvbGxPZmZzZXQueCwgLWhpZ2hsaWdodC5zY3JvbGxPZmZz
ZXQueSk7CiAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhpZ2hsaWdodC5mcmFnbWVudHMubGVu
Z3RoOyArK2kpCiAgICAgICAgIF9kcmF3RnJhZ21lbnRIaWdobGlnaHQoaGlnaGxpZ2h0LmZyYWdt
ZW50c1tpXSk7CiAKLSAgICBpZiAoaGlnaGxpZ2h0LmVsZW1lbnRJbmZvICYmIGhpZ2hsaWdodC5l
bGVtZW50SW5mby5yZWdpb25GbG93SW5mbykKLSAgICAgICAgX2RyYXdSZWdpb25zSGlnaGxpZ2h0
KGhpZ2hsaWdodC5lbGVtZW50SW5mby5yZWdpb25GbG93SW5mby5yZWdpb25zKTsKKyAgICBpZiAo
aGlnaGxpZ2h0LmVsZW1lbnREYXRhICYmIGhpZ2hsaWdodC5lbGVtZW50RGF0YS5yZWdpb25GbG93
RGF0YSkKKyAgICAgICAgX2RyYXdSZWdpb25zSGlnaGxpZ2h0KGhpZ2hsaWdodC5lbGVtZW50RGF0
YS5yZWdpb25GbG93RGF0YS5yZWdpb25zKTsKIAotICAgIGlmIChoaWdobGlnaHQuZWxlbWVudElu
Zm8gJiYgaGlnaGxpZ2h0LmVsZW1lbnRJbmZvLnNoYXBlT3V0c2lkZUluZm8pCi0gICAgICAgIF9k
cmF3U2hhcGVIaWdobGlnaHQoaGlnaGxpZ2h0LmVsZW1lbnRJbmZvLnNoYXBlT3V0c2lkZUluZm8p
OworICAgIGlmIChoaWdobGlnaHQuZWxlbWVudERhdGEgJiYgaGlnaGxpZ2h0LmVsZW1lbnREYXRh
LnNoYXBlT3V0c2lkZURhdGEpCisgICAgICAgIF9kcmF3U2hhcGVIaWdobGlnaHQoaGlnaGxpZ2h0
LmVsZW1lbnREYXRhLnNoYXBlT3V0c2lkZURhdGEpOwogCiAgICAgY29udGV4dC5yZXN0b3JlKCk7
CiAKICAgICB2YXIgZWxlbWVudFRpdGxlQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImVsZW1lbnQtdGl0bGUtY29udGFpbmVyIik7CiAgICAgZWxlbWVudFRpdGxlQ29udGFpbmVy
LmlubmVySFRNTCA9ICIiOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGlnaGxpZ2h0LmZyYWdt
ZW50cy5sZW5ndGg7ICsraSkKLSAgICAgICAgX2RyYXdFbGVtZW50VGl0bGUoaGlnaGxpZ2h0LmVs
ZW1lbnRJbmZvLCBoaWdobGlnaHQuZnJhZ21lbnRzW2ldLCBoaWdobGlnaHQuc2Nyb2xsKTsKKyAg
ICAgICAgX2RyYXdFbGVtZW50VGl0bGUoaGlnaGxpZ2h0LmVsZW1lbnREYXRhLCBoaWdobGlnaHQu
ZnJhZ21lbnRzW2ldLCBoaWdobGlnaHQuc2Nyb2xsT2Zmc2V0KTsKIH0KIAogZnVuY3Rpb24gZHJh
d1F1YWRIaWdobGlnaHQoaGlnaGxpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IGQyODYzN2Q2MmU2MzFiOTQwOGU5YTM2ODQ3MWY4Nzk5ZjJmNDM0MjAuLmU5ZmFlZDAx
NmU5OTBlNTExMDQ3M2JmZDZmZjEwY2VlNDU4ZmZmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTc4NSw3ICs3ODUsNyBAQCBSZWY8Q2xpZW50UmVjdExpc3Q+IEludGVy
bmFsczo6aW5zcGVjdG9ySGlnaGxpZ2h0UmVjdHMoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgfQog
CiAgICAgSGlnaGxpZ2h0IGhpZ2hsaWdodDsKLSAgICBkb2N1bWVudC0+cGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuZ2V0SGlnaGxpZ2h0KCZoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6
OkNvb3JkaW5hdGVTeXN0ZW06OlZpZXcpOworICAgIGRvY3VtZW50LT5wYWdlKCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5nZXRIaWdobGlnaHQoaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpD
b29yZGluYXRlU3lzdGVtOjpWaWV3KTsKICAgICByZXR1cm4gQ2xpZW50UmVjdExpc3Q6OmNyZWF0
ZShoaWdobGlnaHQucXVhZHMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZWMpOwpAQCAtODAx
LDcgKzgwMSw3IEBAIFN0cmluZyBJbnRlcm5hbHM6Omluc3BlY3RvckhpZ2hsaWdodE9iamVjdChF
eGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
b2JqZWN0ID0gZG9jdW1lbnQtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmJ1aWxkT2Jq
ZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCk7CisgICAgYXV0byBvYmplY3QgPSBkb2N1bWVudC0+cGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUo
KTsKICAgICByZXR1cm4gb2JqZWN0ID8gb2JqZWN0LT50b0pTT05TdHJpbmcoKSA6IFN0cmluZygp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9X
ZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRleCAxYWYxZTM1YWNkZGQ2YjZhNDQ3ZTE2Mzk3OTkxMjVl
NzcxNjZlYWJhLi40NzU5YmQwNjBiZWQ2ZGM1NmQxZmU4MzBmNTQwMmVhMjlhMzk0YjJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRv
ci9XZWJLaXRFeHBvcnRzLmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9q
L1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgpAQCAtMjA4LDggKzIw
OCw4IEBAIEVYUE9SVFMKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2l0ZW1AU3RhdGljTm9k
ZUxpc3RAV2ViQ29yZUBAVUJFUEFWTm9kZUAyQElAWiwgP2l0ZW1AU3RhdGljTm9kZUxpc3RAV2Vi
Q29yZUBAVUVCQVBFQVZOb2RlQDJASUBaKQogICAgICAgICA/c2VsZWN0VGFnQEhUTUxOYW1lc0BX
ZWJDb3JlQEAzVkhUTUxRdWFsaWZpZWROYW1lQDJAQgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9idWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZUBJ
bnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFCRT9BVj8kUmVmUHRyQFZJbnNwZWN0b3JPYmpl
Y3RASW5zcGVjdG9yQEBAV1RGQEBYWiwgP2J1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlQElu
c3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUVCQT9BVj8kUmVmUHRyQFZJbnNwZWN0b3JPYmpl
Y3RASW5zcGVjdG9yQEBAV1RGQEBYWikKLSAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2dldEhp
Z2hsaWdodEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFCRVhQQVVIaWdobGlnaHRAMkBX
NENvb3JkaW5hdGVTeXN0ZW1ASW5zcGVjdG9yT3ZlcmxheUAyQEBaLCA/Z2V0SGlnaGxpZ2h0QElu
c3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUVCQVhQRUFVSGlnaGxpZ2h0QDJAVzRDb29yZGlu
YXRlU3lzdGVtQEluc3BlY3Rvck92ZXJsYXlAMkBAWikKKyAgICAgICAgc3ltYm9sV2l0aFBvaW50
ZXIoP2J1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlQEluc3BlY3RvckNvbnRyb2xsZXJAV2Vi
Q29yZUBAUUJFP0FWPyRSZWZQdHJAVk5vZGVIaWdobGlnaHREYXRhQE92ZXJsYXlUeXBlc0BQcm90
b2NvbEBJbnNwZWN0b3JAQEBXVEZAQFhaLCA/YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGVA
SW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQkVBP0FWPyRSZWZQdHJAVk5vZGVIaWdobGln
aHREYXRhQE92ZXJsYXlUeXBlc0BQcm90b2NvbEBJbnNwZWN0b3JAQEBXVEZAQFhaKQorICAgICAg
ICBzeW1ib2xXaXRoUG9pbnRlcig/Z2V0SGlnaGxpZ2h0QEluc3BlY3RvckNvbnRyb2xsZXJAV2Vi
Q29yZUBAUUJFWEFBVUhpZ2hsaWdodEAyQFc0Q29vcmRpbmF0ZVN5c3RlbUBJbnNwZWN0b3JPdmVy
bGF5QDJAQFosID9nZXRIaWdobGlnaHRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQkVY
RUFBVUhpZ2hsaWdodEAyQFc0Q29vcmRpbmF0ZVN5c3RlbUBJbnNwZWN0b3JPdmVybGF5QDJAQFop
CiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9pbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZUBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25AV2ViQ29yZUBAU0FQQVZJbnN0cnVtZW50aW5nQWdlbnRz
QDJAUEFWUGFnZUAyQEBaLCA/aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2VASW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQFdlYkNvcmVAQFNBUEVBVkluc3RydW1lbnRpbmdBZ2VudHNAMkBQRUFWUGFn
ZUAyQEBaKQogICAgICAgICA/c19mcm9udGVuZENvdW50ZXJASW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQFdlYkNvcmVAQDBIQQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/aXNVbmRlclRlc3RA
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUVfTlhaLCA/aXNVbmRlclRl
c3RASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVRUFBX05YWikK
</data>

          </attachment>
      

    </bug>

</bugzilla>