<?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>170570</bug_id>
          
          <creation_ts>2017-04-06 15:04:44 -0700</creation_ts>
          <short_desc>Web Inspector: Event Listeners section does not update when listeners are added/removed</short_desc>
          <delta_ts>2017-09-13 16:50:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=167080</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=176827</see_also>
          <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="Devin Rousso">hi</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1295072</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-04-06 15:04:44 -0700</bug_when>
    <thetext>If a listener is removed using removeEventListener, or it&apos;s a once listener, it doesn&apos;t get removed from the sidebar until you select away and back to the element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295354</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-04-07 09:00:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/31501645&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348141</commentid>
    <comment_count>2</comment_count>
      <attachid>320593</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-09-12 18:19:35 -0700</bug_when>
    <thetext>Created attachment 320593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348174</commentid>
    <comment_count>3</comment_count>
      <attachid>320593</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-12 19:41:09 -0700</bug_when>
    <thetext>Comment on attachment 320593
Patch

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

r=me, but I&apos;m fine with looking at another patch if you have a bunch of changes.

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:2183
&gt; +    UNUSED_PARAM(eventType);

Instead of doing this you should just remove the parameter. We don&apos;t use it.

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:2190
&gt; +    Node* node = target.toNode();
&gt; +    if (!node)
&gt; +        return;
&gt; +
&gt; +    int nodeId = boundNodeId(node);
&gt; +    m_frontendDispatcher-&gt;didAddEventListener(nodeId);

This should bail if `nodeId` is `0`, meaning it is a node that has not been sent to the frontend:

    int nodeId = boundNodeId(node);
    if (!nodeId)
        return;

However, I think we may want to reduce the traffic here by only sending updates to the frontend for the Active / Selected node.

Currently the frontend tells the backend about the selected node via `Console.addInspectedNode(nodeId)`, which informs `$0` in the Command Line API.

Maybe we should make that a real concept, like `DOM.setActiveNode(nodeId)` or `DOM.setSelectedNode(nodeId)`, and here we could do:

    Node* node = target.toNode();
    if (!node)
        return;

    if (node != ...activeNode...)
        return;

I&apos;m not sure how I feel about this.

    Pro: A lot less spam sent to the frontend for event listener changes.
    Con: The frontend would only be able to monitor changes to the active node,
         so if we ever want to more broadly monitor we would have issues.

I guess I&apos;d want to know how spammy this is on heavy pages. How many event listener events are sent to the inspector? Given this is limited to bound nodes it seems fine because only if the user starts digging around their DOM tree would it get spammy. Given I currently suspect this is not too much of a problem (DOM modifications are likely to be far more frequent) I&apos;m only with this as is.

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:2197
&gt; +    UNUSED_PARAM(eventType);
&gt; +    UNUSED_PARAM(listener);
&gt; +    UNUSED_PARAM(capture);

Instead of doing this you should just remove the parameters. We don&apos;t use them.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMTreeManager.js:111
&gt; +        node.dispatchEventToListeners(WI.DOMNode.Event.EventListenerAdded);

Since there is no state in the frontend maybe we should just dispatch a WI.DOMNode.Event.EventListenersChanged?

Also I can&apos;t think of a situation where a client would want to know about only one event. Every client will want to know about both Add and Remove. So lets merge them.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMNodeDetailsSidebarPanel.js:41
&gt; +    addEventListeners()

These would then add and remove a single listener instead of two.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMNodeDetailsSidebarPanel.js:756
&gt; +        this._refreshEventListeners();

Does this happen even if the panel is not visible? That would seem like wasted work. However its likely to be small and rare.

&gt; LayoutTests/inspector/dom/event-listener-add-remove.html:62
&gt; +    suite.addTestCase({
&gt; +        name: &quot;DOM.eventListeners.Add&quot;,
&gt; +        description: &quot;Test that adding an event listener is tracked.&quot;,

Can we add an attribute event listeners and verify this triggers.

    elem.onclick = function() { };

Also what happens if there was an attribute listener and then someone replaces it. Do we get a Remove + Add? Do we get no Add? It seems we would want something to know to update the frontend for the new value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348234</commentid>
    <comment_count>4</comment_count>
      <attachid>320593</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-09-13 01:34:52 -0700</bug_when>
    <thetext>Comment on attachment 320593
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:2190
&gt;&gt; +    m_frontendDispatcher-&gt;didAddEventListener(nodeId);
&gt; 
&gt; This should bail if `nodeId` is `0`, meaning it is a node that has not been sent to the frontend:
&gt; 
&gt;     int nodeId = boundNodeId(node);
&gt;     if (!nodeId)
&gt;         return;
&gt; 
&gt; However, I think we may want to reduce the traffic here by only sending updates to the frontend for the Active / Selected node.
&gt; 
&gt; Currently the frontend tells the backend about the selected node via `Console.addInspectedNode(nodeId)`, which informs `$0` in the Command Line API.
&gt; 
&gt; Maybe we should make that a real concept, like `DOM.setActiveNode(nodeId)` or `DOM.setSelectedNode(nodeId)`, and here we could do:
&gt; 
&gt;     Node* node = target.toNode();
&gt;     if (!node)
&gt;         return;
&gt; 
&gt;     if (node != ...activeNode...)
&gt;         return;
&gt; 
&gt; I&apos;m not sure how I feel about this.
&gt; 
&gt;     Pro: A lot less spam sent to the frontend for event listener changes.
&gt;     Con: The frontend would only be able to monitor changes to the active node,
&gt;          so if we ever want to more broadly monitor we would have issues.
&gt; 
&gt; I guess I&apos;d want to know how spammy this is on heavy pages. How many event listener events are sent to the inspector? Given this is limited to bound nodes it seems fine because only if the user starts digging around their DOM tree would it get spammy. Given I currently suspect this is not too much of a problem (DOM modifications are likely to be far more frequent) I&apos;m only with this as is.

This seems reasonable.  I think we can move the backend logic to `DOM.setSelectedNode(nodeId)` in a future patch.  The frontend will not need to change, as all that will happen is the rest of the nodes will stop receiving events :P

Filed a followup &lt;https://webkit.org/b/176827&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348235</commentid>
    <comment_count>5</comment_count>
      <attachid>320625</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-09-13 01:39:54 -0700</bug_when>
    <thetext>Created attachment 320625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348511</commentid>
    <comment_count>6</comment_count>
      <attachid>320625</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-13 15:14:02 -0700</bug_when>
    <thetext>Comment on attachment 320625
Patch

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

r=me Nice tests!

&gt; LayoutTests/inspector/dom/event-listener-add-remove.html:110
&gt; +                    logListeners(0)
&gt; +                    .then(resolve, reject);

I really dislike this .then on a random line style. It is so unusual, especially in a case like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348539</commentid>
    <comment_count>7</comment_count>
      <attachid>320703</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-09-13 16:01:32 -0700</bug_when>
    <thetext>Created attachment 320703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348566</commentid>
    <comment_count>8</comment_count>
      <attachid>320703</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-13 16:50:57 -0700</bug_when>
    <thetext>Comment on attachment 320703
Patch

Clearing flags on attachment: 320703

Committed r222002: &lt;http://trac.webkit.org/changeset/222002&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348567</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-13 16:50:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320593</attachid>
            <date>2017-09-12 18:19:35 -0700</date>
            <delta_ts>2017-09-13 01:39:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170570-20170912181934.patch</filename>
            <type>text/plain</type>
            <size>20710</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDhjODJmM2VmNGJhODBkMGVjZGM4NGQ3YzA2OWM1
OTc0N2MwZTI1YzMuLmExNjE1YWMxMGM0ZGFiNzcyMjAxMjhjNWFhMzdmZTFkZjdmZmFlZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA5LTEyICBEZXZp
biBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEV2ZW50IExpc3RlbmVycyBzZWN0aW9uIGRvZXMgbm90IHVwZGF0ZSB3aGVuIGxpc3RlbmVy
cyBhcmUgYWRkZWQvcmVtb3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcwNTcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTUwMTY0NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9wcm90b2NvbC9ET00uanNvbjoKKyAgICAgICAgQWRkIHR3byBuZXcgZXZlbnRzOiAiZGlkQWRk
RXZlbnRMaXN0ZW5lciIgYW5kICJ3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lciIuIFRoZXNlIGV2ZW50
cyBkbyBub3QKKyAgICAgICAgY29udGFpbiBhbnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGV2ZW50
IGxpc3RlbmVycyB0aGF0IHdlcmUgYWRkZWQvcmVtb3ZlZC4gVGhleSBzZXJ2ZSBtb3JlCisgICAg
ICAgIGFzIGluZGljYXRpb25zIHRoYXQgc29tZXRoaW5nIGhhcyBjaGFuZ2VkLCBhbmQgdG8gcmVm
ZXRjaCB0aGUgZGF0YSBhZ2FpbiB2aWEgYGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZWAuCisKIDIw
MTctMDktMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUg
ZXhjZXB0aW9uIGNoZWNrIGJvb2sta2VlcGluZyBuZWVkZWQgZm91bmQgYnkgMzItYml0IEpTQyB0
ZXN0IGZhaWx1cmVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGIzNTRjOTExNWM2OGZiOTU2NmU2MTNjYmY4NDBj
NzVhNGU3NGQ0ZDcuLjE0ZjAzOGViYWFmYTBlN2VjZjcxMWZjYzBiYjBhYjAxZjUyZTRkZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNy0wOS0xMiAgRGV2aW4gUm91c3NvICA8d2Vi
a2l0QGRldmlucm91c3NvLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBFdmVudCBMaXN0
ZW5lcnMgc2VjdGlvbiBkb2VzIG5vdCB1cGRhdGUgd2hlbiBsaXN0ZW5lcnMgYXJlIGFkZGVkL3Jl
bW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MDU3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzE1MDE2NDU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL2RvbS9ldmVu
dC1saXN0ZW5lci1hZGQtcmVtb3ZlLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkQWRkRXZlbnRMaXN0ZW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6d2lsbFJlbW92ZUV2ZW50
TGlzdGVuZXIpOgorICAgICAgICBEaXNwYXRjaCBhbiBldmVudCB0byB0aGUgaW5zcGVjdG9yIGZy
b250ZW5kIHdoZW5ldmVyIGFuIGV2ZW50IGxpc3RlbmVyIGlzIGFkZGVkL3JlbW92ZWQuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQWRkRXZlbnRMaXN0ZW5lcklt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVt
b3ZlRXZlbnRMaXN0ZW5lckltcGwpOgorICAgICAgICBUaWUgaW50byBleGlzdGluZyBpbnN0cnVt
ZW50YXRpb24gcG9pbnRzIGZvciBhZGRpbmcvcmVtb3ZpbmcgZXZlbnQgbGlzdGVuZXJzLgorCiAy
MDE3LTA5LTEyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2luXSBBZGQgTW9kdWxlcy9mZXRjaCB0byBsaXN0IG9mIGZvcndhcmRpbmcgaGVhZGVycyBm
b2xkZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMWEyNzliOGViNWRkMGJkOTQ5OTAz
YTUxYjEyMWE5M2NjYjZiNWM1Mi4uYzQzZWZhNWIwMzU3MGIzNDRjMWFhYjBkYTRmMTY2YTMzODA1
ZGRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTctMDkt
MTIgIERldmluIFJvdXNzbyAgPHdlYmtpdEBkZXZpbnJvdXNzby5jb20+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogRXZlbnQgTGlzdGVuZXJzIHNlY3Rpb24gZG9lcyBub3QgdXBkYXRlIHdoZW4g
bGlzdGVuZXJzIGFyZSBhZGRlZC9yZW1vdmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA1NzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxNTAx
NjQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qczoKKyAgICAgICAgKFdJLkRPTU9i
c2VydmVyLnByb3RvdHlwZS5kaWRBZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdJLkRPTU9i
c2VydmVyLnByb3RvdHlwZS53aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzOgorICAgICAgICAoV0ku
RE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLmRpZEFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAo
V0kuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLndpbGxSZW1vdmVFdmVudExpc3RlbmVyKToKKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanM6CisgICAgICAgIEFkZCAi
RXZlbnRMaXN0ZW5lckFkZGVkIiBhbmQgIkV2ZW50TGlzdGVuZXJSZW1vdmVkIiBldmVudHMuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVs
LmpzOgorICAgICAgICAoV0kuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLmFk
ZEV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdJLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVs
LnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVycyk6CisgICAgICAgIChXSS5ET01Ob2RlRGV0
YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUuX2V2ZW50TGlzdGVuZXJzQ2hhbmdlZCk6CisgICAg
ICAgIFJlZnJlc2ggdGhlIGV2ZW50IGxpc3RlbmVycyBzZWN0aW9uIHdoZW5ldmVyIGEgbm9kZSdz
IGV2ZW50IGxpc3RlbmVycyBjaGFuZ2UgKGFkZC9yZW1vdmUpLgorCiAyMDE3LTA5LTExICBNYXR0
IEJha2VyICA8bWF0dGJha2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBD
YW52YXM6IGltcHJvdmUgcmVjb3JkaW5nIGNvbnRyb2xzIGFuZCBzdGF0ZSBtYW5hZ2VtZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5q
c29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbgpp
bmRleCA0Nzc1NWFiNWMwNWU2MTU4MzgzMzk4MTczMzY3NjI1NzZkYjQzN2NlLi4yNmE3NTQ1NWQ4
NGQ2NjZjNThhZWViZDUzZjA2YTFjMWE2YjQ1OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KQEAgLTU5Myw2ICs1OTMsMjAgQEAK
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBhcmVudElkIiwgIiRyZWYiOiAiTm9kZUlkIiwg
ImRlc2NyaXB0aW9uIjogIlBzZXVkbyBlbGVtZW50J3MgcGFyZW50IGVsZW1lbnQgaWQuIiB9LAog
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHNldWRvRWxlbWVudElkIiwgIiRyZWYiOiAiTm9k
ZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSByZW1vdmVkIHBzZXVkbyBlbGVtZW50IGlkLiIgfQog
ICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6
ICJkaWRBZGRFdmVudExpc3RlbmVyIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYWxs
ZWQgd2hlbiBhbiBldmVudCBsaXN0ZW5lciBpcyBhZGRlZCB0byBhIG5vZGUuIiwKKyAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwg
IiRyZWYiOiAiTm9kZUlkIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgICJuYW1lIjogIndpbGxSZW1vdmVFdmVudExpc3RlbmVyIiwKKyAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJDYWxsZWQgYWZ0ZXIgYSByZXF1ZXN0IGhhcyBiZWVuIG1hZGUg
dG8gcmVtb3ZlIGFuIGV2ZW50IGxpc3RlbmVyIGZyb20gYSBub2RlLiIsCisgICAgICAgICAgICAi
cGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVm
IjogIk5vZGVJZCIgfQorICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggYjI0NTkz
YmU3ZjhlNTkxYjQxMDU0NzBlYWUyNGM4MmJkMWQ4YjZhNy4uYjEwZmNlZGZkNzY1NjkzZjU1YWQ2
Yjk2NzEyOTM1ODc3MDU0YTkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yMTc4LDYgKzIxNzgsMzIgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6cHNldWRvRWxlbWVudERlc3Ryb3llZChQc2V1ZG9FbGVtZW50JiBwc2V1ZG9FbGVt
ZW50KQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5wc2V1ZG9FbGVtZW50UmVtb3ZlZChwYXJl
bnRJZCwgcHNldWRvRWxlbWVudElkKTsKIH0KIAordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlk
QWRkRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oZXZlbnRUeXBlKTsKKworICAgIE5vZGUq
IG5vZGUgPSB0YXJnZXQudG9Ob2RlKCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47
CisKKyAgICBpbnQgbm9kZUlkID0gYm91bmROb2RlSWQobm9kZSk7CisgICAgbV9mcm9udGVuZERp
c3BhdGNoZXItPmRpZEFkZEV2ZW50TGlzdGVuZXIobm9kZUlkKTsKK30KKwordm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6d2lsbFJlbW92ZUV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmIHRhcmdldCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBi
b29sIGNhcHR1cmUpCit7CisgICAgVU5VU0VEX1BBUkFNKGV2ZW50VHlwZSk7CisgICAgVU5VU0VE
X1BBUkFNKGxpc3RlbmVyKTsKKyAgICBVTlVTRURfUEFSQU0oY2FwdHVyZSk7CisKKyAgICBOb2Rl
KiBub2RlID0gdGFyZ2V0LnRvTm9kZSgpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaW50IG5vZGVJZCA9IGJvdW5kTm9kZUlkKG5vZGUpOworICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT53aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlSWQpOworfQorCiBOb2RlKiBJ
bnNwZWN0b3JET01BZ2VudDo6bm9kZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAg
IC8vIFRoZSBwYXRoIGlzIG9mIGZvcm0gIjEsSFRNTCwyLEJPRFksMSxESVYiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDkzMzk3OTdjZGYwZjUy
MjEyMDgwZDMyMjlmZjAzZGQ4NzZmYzEzNzMuLjRmZDE1MjlhZjM5ZjhjOGE5MGUzNWUyZTY4Zjg5
Y2NiYjgwM2UwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oCkBAIC0xNjcsNiArMTY3LDggQEAgcHVibGljOgogICAgIHZvaWQgZnJhbWVEb2N1bWVu
dFVwZGF0ZWQoRnJhbWUmKTsKICAgICB2b2lkIHBzZXVkb0VsZW1lbnRDcmVhdGVkKFBzZXVkb0Vs
ZW1lbnQmKTsKICAgICB2b2lkIHBzZXVkb0VsZW1lbnREZXN0cm95ZWQoUHNldWRvRWxlbWVudCYp
OworICAgIHZvaWQgZGlkQWRkRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlKTsKKyAgICB2b2lkIHdpbGxSZW1vdmVFdmVudExpc3RlbmVyKEV2
ZW50VGFyZ2V0JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIm
LCBib29sIGNhcHR1cmUpOwogCiAgICAgLy8gQ2FsbGJhY2tzIHRoYXQgZG9uJ3QgZGlyZWN0bHkg
Y29ycmVzcG9uZCB0byBhbiBpbnN0cnVtZW50YXRpb24gZW50cnkgcG9pbnQuCiAgICAgdm9pZCBz
ZXREb2N1bWVudChEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAxMTY2MmMxMzdmYzQzNDg2MTY4
MmZiNDc1ZGFiYjk3OGFlOGM4M2RkLi40ZjRiYmI2YzUyMjYxZmEzM2M2ZTIyMTBmYTFmNzVlZGY2
NjA3ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMzU1LDEyICszNTUsMTYgQEAgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEFkZEV2ZW50TGlzdGVuZXJJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3QKIHsKICAgICBpZiAoUGFnZURlYnVnZ2VyQWdlbnQqIHBhZ2VEZWJ1Z2dlckFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wYWdlRGVidWdnZXJBZ2VudCgpKQogICAgICAgICBwYWdl
RGVidWdnZXJBZ2VudC0+ZGlkQWRkRXZlbnRMaXN0ZW5lcih0YXJnZXQsIGV2ZW50VHlwZSk7Cisg
ICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICAgICAgZG9tQWdlbnQtPmRpZEFkZEV2ZW50TGlzdGVu
ZXIodGFyZ2V0LCBldmVudFR5cGUpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFJlbW92ZUV2ZW50TGlzdGVuZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCBjYXB0dXJlKQogewogICAg
IGlmIChQYWdlRGVidWdnZXJBZ2VudCogcGFnZURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLnBhZ2VEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIHBhZ2VEZWJ1Z2dlckFnZW50LT53
aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIGV2ZW50VHlwZSwgbGlzdGVuZXIsIGNhcHR1
cmUpOworICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgICAgIGRvbUFnZW50LT53aWxsUmVtb3Zl
RXZlbnRMaXN0ZW5lcih0YXJnZXQsIGV2ZW50VHlwZSwgbGlzdGVuZXIsIGNhcHR1cmUpOwogfQog
CiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUG9zdE1lc3NhZ2VJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFRpbWVyQmFzZSYgdGlt
ZXIsIEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIu
anMKaW5kZXggZTk1MGExOTQzMmFjNDQ4YjdiYmE1Zjk1MDcxZDlhNWI4YmRmNGJjZC4uZmZmYzQy
YmIyMGRhMTNiMGMwNzc5MjNjZTU5ODBkYmRiMTRlMzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9N
VHJlZU1hbmFnZXIuanMKQEAgLTEwMCw2ICsxMDAsMjggQEAgV0kuRE9NVHJlZU1hbmFnZXIgPSBj
bGFzcyBET01UcmVlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9kaXNw
YXRjaFdoZW5Eb2N1bWVudEF2YWlsYWJsZShET01BZ2VudC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRl
bmQuYmluZChET01BZ2VudCwgcGF0aCksIGNhbGxiYWNrKTsKICAgICB9CiAKKyAgICBkaWRBZGRF
dmVudExpc3RlbmVyKG5vZGVJZCkKKyAgICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLkRP
TU9ic2VydmVyLgorCisgICAgICAgIGxldCBub2RlID0gdGhpcy5faWRUb0RPTU5vZGVbbm9kZUlk
XTsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG5v
ZGUuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTU5vZGUuRXZlbnQuRXZlbnRMaXN0ZW5l
ckFkZGVkKTsKKyAgICB9CisKKyAgICB3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlSWQpCisg
ICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5ET01PYnNlcnZlci4KKworICAgICAgICBs
ZXQgbm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CisgICAgICAgIGlmICghbm9kZSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBub2RlLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5ET01Ob2RlLkV2ZW50LkV2ZW50TGlzdGVuZXJSZW1vdmVkKTsKKyAgICB9CisKICAg
ICAvLyBQcml2YXRlCiAKICAgICBfd3JhcENsaWVudENhbGxiYWNrKGNhbGxiYWNrKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5q
cwppbmRleCBiMWFhOWQ4YmZhODA1NmRjODUxNGQ4MzI3OTRlMWU0MmJhMDRmODAwLi4zZjBkZGYx
MDEwOGM3ODhhN2IyYmRmN2RkNjg1Y2I3OTYxZjYxYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcwpAQCAtODMzLDcg
KzgzMyw5IEBAIFdJLkRPTU5vZGUgPSBjbGFzcyBET01Ob2RlIGV4dGVuZHMgV0kuT2JqZWN0CiBX
SS5ET01Ob2RlLkV2ZW50ID0gewogICAgIEVuYWJsZWRQc2V1ZG9DbGFzc2VzQ2hhbmdlZDogImRv
bS1ub2RlLWVuYWJsZWQtcHNldWRvLWNsYXNzZXMtZGlkLWNoYW5nZSIsCiAgICAgQXR0cmlidXRl
TW9kaWZpZWQ6ICJkb20tbm9kZS1hdHRyaWJ1dGUtbW9kaWZpZWQiLAotICAgIEF0dHJpYnV0ZVJl
bW92ZWQ6ICJkb20tbm9kZS1hdHRyaWJ1dGUtcmVtb3ZlZCIKKyAgICBBdHRyaWJ1dGVSZW1vdmVk
OiAiZG9tLW5vZGUtYXR0cmlidXRlLXJlbW92ZWQiLAorICAgIEV2ZW50TGlzdGVuZXJBZGRlZDog
ImRvbS1ub2RlLWV2ZW50LWxpc3RlbmVyLWFkZGVkIiwKKyAgICBFdmVudExpc3RlbmVyUmVtb3Zl
ZDogImRvbS1ub2RlLWV2ZW50LWxpc3RlbmVyLXJlbW92ZWQiLAogfTsKIAogV0kuRE9NTm9kZS5Q
c2V1ZG9FbGVtZW50VHlwZSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKaW5kZXggNTM3OGM5NTUz
NzEyZjllNjYwZDA3MWY5MmQwYTc4YWVlZjE1OGNkMS4uMDZjNzg2ZDVkZWJlOGI1NTNjMGM1NzQ0
ZGI1M2YwNmFhNTQ1YTI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKQEAgLTEwMSw0ICsxMDEs
MTQgQEAgV0kuRE9NT2JzZXJ2ZXIgPSBjbGFzcyBET01PYnNlcnZlcgogICAgIHsKICAgICAgICAg
V0kuZG9tVHJlZU1hbmFnZXIuX3BzZXVkb0VsZW1lbnRSZW1vdmVkKHBhcmVudE5vZGVJZCwgcHNl
dWRvRWxlbWVudElkKTsKICAgICB9CisKKyAgICBkaWRBZGRFdmVudExpc3RlbmVyKG5vZGVJZCkK
KyAgICB7CisgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmRpZEFkZEV2ZW50TGlzdGVuZXIobm9k
ZUlkKTsKKyAgICB9CisKKyAgICB3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlSWQpCisgICAg
eworICAgICAgICBXSS5kb21UcmVlTWFuYWdlci53aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihub2Rl
SWQpOworICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVs
LmpzCmluZGV4IDZlM2I5MGNjMGIzZDgwNzVjNjdjZjA0ZDRmYjUxZGNkMTVkZTUzMmMuLjdhODdh
MTE4NjFlNzUwZDM0MjYwNGMzNWZlMTM5YjJlYmM1MzE4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJhclBh
bmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RP
TU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC0zNiw2ICszNiwyMCBAQCBXSS5ET01Ob2Rl
RGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIERPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4
dGVuZHMgV0kuRE9NRAogICAgICAgICB0aGlzLl9ub2RlUmVtb3RlT2JqZWN0ID0gbnVsbDsKICAg
ICB9CiAKKyAgICAvLyBQdWJsaWMKKworICAgIGFkZEV2ZW50TGlzdGVuZXJzKCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuZG9tTm9kZS5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuRXZl
bnRMaXN0ZW5lckFkZGVkLCB0aGlzLl9ldmVudExpc3RlbmVyc0NoYW5nZWQsIHRoaXMpOworICAg
ICAgICB0aGlzLmRvbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkV2ZW50
TGlzdGVuZXJSZW1vdmVkLCB0aGlzLl9ldmVudExpc3RlbmVyc0NoYW5nZWQsIHRoaXMpOworICAg
IH0KKworICAgIHJlbW92ZUV2ZW50TGlzdGVuZXJzKCkKKyAgICB7CisgICAgICAgIHRoaXMuZG9t
Tm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuRXZlbnRMaXN0ZW5lckFk
ZGVkLCB0aGlzLl9ldmVudExpc3RlbmVyc0NoYW5nZWQsIHRoaXMpOworICAgICAgICB0aGlzLmRv
bU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkV2ZW50TGlzdGVuZXJS
ZW1vdmVkLCB0aGlzLl9ldmVudExpc3RlbmVyc0NoYW5nZWQsIHRoaXMpOworICAgIH0KKwogICAg
IC8vIFByb3RlY3RlZAogCiAgICAgaW5pdGlhbExheW91dCgpCkBAIC03MzcsNiArNzUxLDExIEBA
IFdJLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgRE9NTm9kZURldGFpbHNTaWRl
YmFyUGFuZWwgZXh0ZW5kcyBXSS5ET01ECiAgICAgICAgIGRvbU5vZGUuYWNjZXNzaWJpbGl0eVBy
b3BlcnRpZXMoYWNjZXNzaWJpbGl0eVByb3BlcnRpZXNDYWxsYmFjay5iaW5kKHRoaXMpKTsKICAg
ICB9CiAKKyAgICBfZXZlbnRMaXN0ZW5lcnNDaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAg
dGhpcy5fcmVmcmVzaEV2ZW50TGlzdGVuZXJzKCk7CisgICAgfQorCiAgICAgX2F0dHJpYnV0ZXND
aGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LmRhdGEubm9kZSAhPT0gdGhp
cy5kb21Ob2RlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDMzZGNhODhmMDIzMDE1NTkxYmIyN2RkNzQwYzIyNGM1ZmM2MjRk
ODYuLjNlMDA4Y2IwYTc5ZDA0Yjg1ZWY5NTQ5ZWI5NTkxOGYwY2U3YWU5NTMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNy0wOS0xMiAgRGV2aW4gUm91c3NvICA8d2Via2l0QGRldmlucm91c3Nv
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBFdmVudCBMaXN0ZW5lcnMgc2VjdGlvbiBk
b2VzIG5vdCB1cGRhdGUgd2hlbiBsaXN0ZW5lcnMgYXJlIGFkZGVkL3JlbW92ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDU3MAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzE1MDE2NDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2V2ZW50LWxpc3RlbmVyLWFkZC1yZW1v
dmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2V2ZW50LWxp
c3RlbmVyLWFkZC1yZW1vdmUuaHRtbDogQWRkZWQuCisKIDIwMTctMDktMTIgIE1pY2hhZWwgQ2F0
YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVucmV2aWV3
ZWQsIHVwZGF0ZSBjcmFzaCBleHBlY3RhdGlvbnMgYWZ0ZXIgcjIyMTkyNQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9ldmVudC1saXN0ZW5lci1hZGQtcmVtb3ZlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vZXZlbnQtbGlzdGVuZXItYWRkLXJl
bW92ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU5MTY1NGI0ZDM3ZDQ1ZWJlYmI0Njc2NDFm
YjMwNTY2YzhhOWUwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20vZXZlbnQtbGlzdGVuZXItYWRkLXJlbW92ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMiBA
QAorVGVzdGluZyBldmVudHMgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgZXZlbnQgbGlzdGVuZXJz
LgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9NLmV2ZW50TGlzdGVuZXJzCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogRE9NLmV2ZW50TGlzdGVuZXJzLkluaXRpYWwKK1BBU1M6IFRoZXJlIHNo
b3VsZCBiZSBubyBldmVudCBsaXN0ZW5lcnMuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00u
ZXZlbnRMaXN0ZW5lcnMuQWRkCitBZGRpbmcgbGlzdGVuZXIgInRlc3QiLgorUEFTUzogVGhlcmUg
c2hvdWxkIGJlIDEgZXZlbnQgbGlzdGVuZXJzLgorICAtICJ0ZXN0IgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogRE9NLmV2ZW50TGlzdGVuZXJzLlJlbW92ZQorUmVtb3ZpbmcgbGlzdGVuZXIgInRl
c3QiLgorUEFTUzogVGhlcmUgc2hvdWxkIGJlIDAgZXZlbnQgbGlzdGVuZXJzLgorCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogRE9NLmV2ZW50TGlzdGVuZXJzLkFkZEFuZFJlbW92ZQorQWRkaW5nIGxp
c3RlbmVyICJ0ZXN0Ii4KK1BBU1M6IFRoZXJlIHNob3VsZCBiZSAxIGV2ZW50IGxpc3RlbmVycy4K
KyAgLSAidGVzdCIKKworUmVtb3ZpbmcgbGlzdGVuZXIgInRlc3QiLgorUEFTUzogVGhlcmUgc2hv
dWxkIGJlIDAgZXZlbnQgbGlzdGVuZXJzLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NLmV2
ZW50TGlzdGVuZXJzLk9uY2UKK0FkZGluZyBsaXN0ZW5lciAiY2xpY2siLgorUEFTUzogVGhlcmUg
c2hvdWxkIGJlIDEgZXZlbnQgbGlzdGVuZXJzLgorICAtICJjbGljayIKKworVHJpZ2dlciAiY2xp
Y2siIGV2ZW50LgorUEFTUzogVGhlcmUgc2hvdWxkIGJlIDAgZXZlbnQgbGlzdGVuZXJzLgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2V2ZW50LWxpc3RlbmVyLWFkZC1y
ZW1vdmUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vZXZlbnQtbGlzdGVuZXItYWRk
LXJlbW92ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwZmFkODk5YmE4OTRhOWE4YzZiMzk1MWRmZTFmMjhh
NTczMzM2M2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2V2
ZW50LWxpc3RlbmVyLWFkZC1yZW1vdmUuaHRtbApAQCAtMCwwICsxLDE2OCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
bGV0IGNhbGxiYWNrID0gKGV2ZW50KSA9PiB7IH07CisKK2Z1bmN0aW9uIGFkZExpc3RlbmVyKG5h
bWUsIG9wdGlvbnMpIHsKKyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKG5hbWUsIGNhbGxi
YWNrLCBvcHRpb25zKTsKK30KKworZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIobmFtZSkgeworICAg
IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgY2FsbGJhY2spOworfQorCitmdW5j
dGlvbiBjbGljaygpIHsKKyAgICBkb2N1bWVudC5ib2R5LmNsaWNrKCk7Cit9CisKK2Z1bmN0aW9u
IHRlc3QoKSB7CisgICAgbGV0IG5vZGUgPSBudWxsOworCisgICAgZnVuY3Rpb24gYWRkTGlzdGVu
ZXIobmFtZSwgb3B0aW9ucyA9IHt9KSB7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBBZGRp
bmcgbGlzdGVuZXIgIiR7bmFtZX0iLmApOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRl
SW5QYWdlKGBhZGRMaXN0ZW5lcigiJHtuYW1lfSIsICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9
KWApOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKG5hbWUpIHsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coYFJlbW92aW5nIGxpc3RlbmVyICIke25hbWV9Ii5gKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgcmVtb3ZlTGlzdGVuZXIoIiR7bmFt
ZX0iKWApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGxvZ0xpc3RlbmVycyhleHBlY3RlZENvdW50
KSB7CisgICAgICAgIHJldHVybiBET01BZ2VudC5nZXRFdmVudExpc3RlbmVyc0Zvck5vZGUobm9k
ZS5pZCkKKyAgICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwocGF5bG9hZC5saXN0ZW5lcnMubGVuZ3RoLCBleHBlY3RlZENvdW50
LCBgVGhlcmUgc2hvdWxkIGJlICR7ZXhwZWN0ZWRDb3VudH0gZXZlbnQgbGlzdGVuZXJzLmApOwor
CisgICAgICAgICAgICBmb3IgKGxldCBldmVudExpc3RlbmVyIG9mIHBheWxvYWQubGlzdGVuZXJz
KQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIC0gIiR7ZXZlbnRMaXN0ZW5l
ci50eXBlfSJgKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgbGV0IHN1aXRlID0gSW5zcGVj
dG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJET00uZXZlbnRMaXN0ZW5lcnMiKTsKKworICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRPTS5ldmVudExpc3RlbmVycy5Jbml0
aWFsIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IHRoYXQgdGhlIGRvY3VtZW50IGhhcyBu
byBldmVudCBsaXN0ZW5lcnMuIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAg
ICAgICAgICAgIERPTUFnZW50LmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShub2RlLmlkKQorICAg
ICAgICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKHBheWxvYWQubGlzdGVuZXJzLmxlbmd0aCwgMCwgIlRoZXJlIHNob3Vs
ZCBiZSBubyBldmVudCBsaXN0ZW5lcnMuIik7CisKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBl
dmVudExpc3RlbmVyIG9mIHBheWxvYWQubGlzdGVuZXJzKQorICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhldmVudExpc3RlbmVyLnR5cGUpOworICAgICAgICAgICAgfSkKKyAg
ICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJlamVjdCk7CisgICAgICAgIH0KKyAgICB9KTsKKwor
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRPTS5ldmVudExpc3RlbmVy
cy5BZGQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgdGhhdCBhZGRpbmcgYW4gZXZlbnQg
bGlzdGVuZXIgaXMgdHJhY2tlZC4iLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewor
ICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuRE9NTm9kZS5zaW5nbGVGaXJlRXZlbnRMaXN0
ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkV2ZW50TGlzdGVuZXJSZW1vdmVkLCAoZXZlbnQpID0+IHsK
KyAgICAgICAgICAgICAgICByZWplY3QoIk5vIGV2ZW50IGxpc3RlbmVycyBzaG91bGQgYmUgcmVt
b3ZlZC4iKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBXSS5ET01Ob2RlLmF3YWl0
RXZlbnQoV0kuRE9NTm9kZS5FdmVudC5FdmVudExpc3RlbmVyQWRkZWQpCisgICAgICAgICAgICAu
dGhlbigoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChl
dmVudC50YXJnZXQgPT09IG5vZGUsICJUYXJnZXQgc2hvdWxkIGJlIGRvY3VtZW50IG5vZGUuIik7
CisKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9nTGlzdGVuZXJzKDEpOworICAgICAgICAgICAg
fSkKKyAgICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJlamVjdCk7CisKKyAgICAgICAgICAgIGFk
ZExpc3RlbmVyKCJ0ZXN0Iik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRPTS5ldmVudExpc3RlbmVycy5SZW1vdmUiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlRlc3QgdGhhdCBhZGRpbmcgYW4gZXZlbnQgbGlzdGVuZXIgaXMg
cmVtb3ZlZC4iLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAg
bGV0IGxpc3RlbmVyID0gV0kuRE9NTm9kZS5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5ET01O
b2RlLkV2ZW50LkV2ZW50TGlzdGVuZXJBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAg
ICAgcmVqZWN0KCJObyBldmVudCBsaXN0ZW5lcnMgc2hvdWxkIGJlIGFkZGVkLiIpOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIFdJLkRPTU5vZGUuYXdhaXRFdmVudChXSS5ET01Ob2Rl
LkV2ZW50LkV2ZW50TGlzdGVuZXJSZW1vdmVkKQorICAgICAgICAgICAgLnRoZW4oKGV2ZW50KSA9
PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQudGFyZ2V0ID09
PSBub2RlLCAiVGFyZ2V0IHNob3VsZCBiZSBkb2N1bWVudCBub2RlLiIpOworCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGxvZ0xpc3RlbmVycygwKTsKKyAgICAgICAgICAgIH0pCisgICAgICAgICAg
ICAudGhlbihyZXNvbHZlLCByZWplY3QpOworCisgICAgICAgICAgICByZW1vdmVMaXN0ZW5lcigi
dGVzdCIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJET00uZXZlbnRMaXN0ZW5lcnMuQWRkQW5kUmVtb3ZlIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJUZXN0IHRoYXQgYSBmdWxsIGFkZC1yZW1vdmUgY3ljbGUgaXMgdHJhY2tl
ZC4iLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgV0kuRE9N
Tm9kZS5hd2FpdEV2ZW50KFdJLkRPTU5vZGUuRXZlbnQuRXZlbnRMaXN0ZW5lclJlbW92ZWQpCisg
ICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydChldmVudC50YXJnZXQgPT09IG5vZGUsICJUYXJnZXQgc2hvdWxkIGJlIGRvY3Vt
ZW50IG5vZGUuIik7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9nTGlzdGVuZXJzKDApOwor
ICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJlamVjdCk7CisKKyAg
ICAgICAgICAgIFdJLkRPTU5vZGUuYXdhaXRFdmVudChXSS5ET01Ob2RlLkV2ZW50LkV2ZW50TGlz
dGVuZXJBZGRlZCkKKyAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4geworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGV2ZW50LnRhcmdldCA9PT0gbm9kZSwgIlRhcmdldCBz
aG91bGQgYmUgZG9jdW1lbnQgbm9kZS4iKTsKKworICAgICAgICAgICAgICAgIGxvZ0xpc3RlbmVy
cygxKQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIiIpOworCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxpc3Rl
bmVyKCJ0ZXN0Iik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgYWRkTGlzdGVuZXIoInRlc3QiKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAg
c3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRE9NLmV2ZW50TGlzdGVuZXJzLk9u
Y2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgdGhhdCBhbiBldmVudCBsaXN0ZW5lciB0
aGF0IHJlbW92ZXMgaXRzZWxmIGFmdGVyIGZpcmluZyBpcyB0cmFja2VkIiwKKyAgICAgICAgdGVz
dChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIFdJLkRPTU5vZGUuYXdhaXRFdmVudChX
SS5ET01Ob2RlLkV2ZW50LkV2ZW50TGlzdGVuZXJSZW1vdmVkKQorICAgICAgICAgICAgLnRoZW4o
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQu
dGFyZ2V0ID09PSBub2RlLCAiVGFyZ2V0IHNob3VsZCBiZSBkb2N1bWVudCBub2RlLiIpOworCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGxvZ0xpc3RlbmVycygwKTsKKyAgICAgICAgICAgIH0pCisg
ICAgICAgICAgICAudGhlbihyZXNvbHZlLCByZWplY3QpOworCisgICAgICAgICAgICBXSS5ET01O
b2RlLmF3YWl0RXZlbnQoV0kuRE9NTm9kZS5FdmVudC5FdmVudExpc3RlbmVyQWRkZWQpCisgICAg
ICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydChldmVudC50YXJnZXQgPT09IG5vZGUsICJUYXJnZXQgc2hvdWxkIGJlIGRvY3VtZW50
IG5vZGUuIik7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9nTGlzdGVuZXJzKDEpCisgICAg
ICAgICAgICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiIik7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmln
Z2VyIFwiY2xpY2tcIiBldmVudC4iKTsKKworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKGBjbGljaygpYCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgYWRkTGlzdGVuZXIoImNsaWNrIiwge29uY2U6IHRy
dWV9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVz
dERvY3VtZW50KChkb2N1bWVudE5vZGUpID0+IHsKKyAgICAgICAgbm9kZSA9IGRvY3VtZW50Tm9k
ZTsKKworICAgICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKKyAgICB9KTsKK30K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRl
c3RpbmcgZXZlbnRzIGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIGV2ZW50IGxpc3RlbmVycy48L3A+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320625</attachid>
            <date>2017-09-13 01:39:54 -0700</date>
            <delta_ts>2017-09-13 16:01:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170570-20170913013953.patch</filename>
            <type>text/plain</type>
            <size>24417</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDhjODJmM2VmNGJhODBkMGVjZGM4NGQ3YzA2OWM1
OTc0N2MwZTI1YzMuLjQ0MWYwODQ0MzkyODAyYjhlMjNlOTA2NDQ0OWZiOGEyNDViMGIyNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA5LTEzICBEZXZp
biBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEV2ZW50IExpc3RlbmVycyBzZWN0aW9uIGRvZXMgbm90IHVwZGF0ZSB3aGVuIGxpc3RlbmVy
cyBhcmUgYWRkZWQvcmVtb3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcwNTcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTUwMTY0NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9wcm90b2NvbC9ET00uanNvbjoKKyAgICAgICAgQWRkIHR3byBuZXcgZXZlbnRzOiAiZGlkQWRk
RXZlbnRMaXN0ZW5lciIgYW5kICJ3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lciIuIFRoZXNlIGV2ZW50
cyBkbyBub3QKKyAgICAgICAgY29udGFpbiBhbnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGV2ZW50
IGxpc3RlbmVycyB0aGF0IHdlcmUgYWRkZWQvcmVtb3ZlZC4gVGhleSBzZXJ2ZSBtb3JlCisgICAg
ICAgIGFzIGluZGljYXRpb25zIHRoYXQgc29tZXRoaW5nIGhhcyBjaGFuZ2VkLCBhbmQgdG8gcmVm
ZXRjaCB0aGUgZGF0YSBhZ2FpbiB2aWEgYGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZWAuCisKIDIw
MTctMDktMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUg
ZXhjZXB0aW9uIGNoZWNrIGJvb2sta2VlcGluZyBuZWVkZWQgZm91bmQgYnkgMzItYml0IEpTQyB0
ZXN0IGZhaWx1cmVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGIzNTRjOTExNWM2OGZiOTU2NmU2MTNjYmY4NDBj
NzVhNGU3NGQ0ZDcuLjRmYzVlYThkMzU0NzBjYjgyNjYyNjJhMmRkZjZkMzVjYmE2MDdmYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxNy0wOS0xMyAgRGV2aW4gUm91c3NvICA8d2Vi
a2l0QGRldmlucm91c3NvLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBFdmVudCBMaXN0
ZW5lcnMgc2VjdGlvbiBkb2VzIG5vdCB1cGRhdGUgd2hlbiBsaXN0ZW5lcnMgYXJlIGFkZGVkL3Jl
bW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MDU3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzE1MDE2NDU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL2RvbS9ldmVu
dC1saXN0ZW5lci1hZGQtcmVtb3ZlLmh0bWwKKworICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6c2V0QXR0cmlidXRlRXZlbnRMaXN0
ZW5lcik6CisgICAgICAgIEZpcmUgd2lsbFJlbW92ZUV2ZW50TGlzdGVuZXIvZGlkQWRkRXZlbnRM
aXN0ZW5lciBldmVudHMgd2hlbiBhbiBhdHRyaWJ1dGUgZXZlbnQgbGlzdGVuZXIgaXMKKyAgICAg
ICAgcmVwbGFjZWQgYnkgYW5vdGhlciBldmVudCBsaXN0ZW5lci4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkQWRk
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6d2ls
bFJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICBEaXNwYXRjaCBhbiBldmVudCB0byB0aGUg
aW5zcGVjdG9yIGZyb250ZW5kIHdoZW5ldmVyIGFuIGV2ZW50IGxpc3RlbmVyIGlzIGFkZGVkL3Jl
bW92ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQWRkRXZl
bnRMaXN0ZW5lckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lckltcGwpOgorICAgICAgICBUaWUgaW50byBleGlz
dGluZyBpbnN0cnVtZW50YXRpb24gcG9pbnRzIGZvciBhZGRpbmcvcmVtb3ZpbmcgZXZlbnQgbGlz
dGVuZXJzLgorCiAyMDE3LTA5LTEyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2luXSBBZGQgTW9kdWxlcy9mZXRjaCB0byBsaXN0IG9mIGZvcndhcmRp
bmcgaGVhZGVycyBmb2xkZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMWEyNzliOGVi
NWRkMGJkOTQ5OTAzYTUxYjEyMWE5M2NjYjZiNWM1Mi4uODE1Y2JiZWQ2NmIwOWY1ZWRiYzE2MjA2
ZTcwZTI2NTQ3OTJlMzM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTctMDktMTMgIERldmluIFJvdXNzbyAgPHdlYmtpdEBkZXZpbnJvdXNzby5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogRXZlbnQgTGlzdGVuZXJzIHNlY3Rpb24gZG9lcyBub3Qg
dXBkYXRlIHdoZW4gbGlzdGVuZXJzIGFyZSBhZGRlZC9yZW1vdmVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA1NzAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzMxNTAxNjQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qczoKKyAgICAg
ICAgKFdJLkRPTU9ic2VydmVyLnByb3RvdHlwZS5kaWRBZGRFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKFdJLkRPTU9ic2VydmVyLnByb3RvdHlwZS53aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzOgor
ICAgICAgICAoV0kuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLmRpZEFkZEV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAoV0kuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLndpbGxSZW1vdmVFdmVudExp
c3RlbmVyKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanM6Cisg
ICAgICAgIEFkZCAiRXZlbnRMaXN0ZW5lcnNDaGFuZ2VkIiBldmVudC4gRmlyZWQgd2hlbiBhbiBl
dmVudCBsaXN0ZW5lciBpcyBhZGRlZCBvciByZW1vdmVkLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdJLkRP
TU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVycyk6Cisg
ICAgICAgIChXSS5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUucmVtb3ZlRXZl
bnRMaXN0ZW5lcnMpOgorICAgICAgICAoV0kuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwucHJv
dG90eXBlLl9ldmVudExpc3RlbmVyc0NoYW5nZWQpOgorICAgICAgICBSZWZyZXNoIHRoZSBldmVu
dCBsaXN0ZW5lcnMgc2VjdGlvbiB3aGVuZXZlciBhIG5vZGUncyBldmVudCBsaXN0ZW5lcnMgY2hh
bmdlLgorCiAyMDE3LTA5LTExICBNYXR0IEJha2VyICA8bWF0dGJha2VyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBDYW52YXM6IGltcHJvdmUgcmVjb3JkaW5nIGNvbnRyb2xz
IGFuZCBzdGF0ZSBtYW5hZ2VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9ET00uanNvbgppbmRleCA0Nzc1NWFiNWMwNWU2MTU4MzgzMzk4MTczMzY3
NjI1NzZkYjQzN2NlLi4yNmE3NTQ1NWQ4NGQ2NjZjNThhZWViZDUzZjA2YTFjMWE2YjQ1OWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5q
c29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpz
b24KQEAgLTU5Myw2ICs1OTMsMjAgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBhcmVu
dElkIiwgIiRyZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlBzZXVkbyBlbGVtZW50J3Mg
cGFyZW50IGVsZW1lbnQgaWQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHNldWRv
RWxlbWVudElkIiwgIiRyZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSByZW1vdmVk
IHBzZXVkbyBlbGVtZW50IGlkLiIgfQogICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAibmFtZSI6ICJkaWRBZGRFdmVudExpc3RlbmVyIiwKKyAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJDYWxsZWQgd2hlbiBhbiBldmVudCBsaXN0ZW5lciBpcyBhZGRl
ZCB0byBhIG5vZGUuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiTm9kZUlkIiB9CisgICAgICAgICAgICBd
CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIndpbGxSZW1vdmVF
dmVudExpc3RlbmVyIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYWxsZWQgYWZ0ZXIg
YSByZXF1ZXN0IGhhcyBiZWVuIG1hZGUgdG8gcmVtb3ZlIGFuIGV2ZW50IGxpc3RlbmVyIGZyb20g
YSBub2RlLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIk5vZGVJZCIgfQorICAgICAgICAgICAgXQogICAg
ICAgICB9CiAgICAgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggZmYzODZi
YjMwYTI2OTIzMzhkYzU1ZThjMGE1MDE0ZGJkYmFjZjU1My4uNWEzMzBhMWQ0MzdkYzllYzY1MDQ1
MGZiNzc3ZmVmMzQ0ODQ2NzJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC0x
MzksNyArMTM5LDEyIEBAIGJvb2wgRXZlbnRUYXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgaWYgKGV4aXN0aW5nTGlzdGVuZXIpIHsKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcigqdGhpcywgZXZlbnRU
eXBlLCAqZXhpc3RpbmdMaXN0ZW5lciwgZmFsc2UpOworCiAgICAgICAgIGV2ZW50VGFyZ2V0RGF0
YSgpLT5ldmVudExpc3RlbmVyTWFwLnJlcGxhY2UoZXZlbnRUeXBlLCAqZXhpc3RpbmdMaXN0ZW5l
ciwgbGlzdGVuZXIucmVsZWFzZU5vbk51bGwoKSwgeyB9KTsKKworICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEFkZEV2ZW50TGlzdGVuZXIoKnRoaXMsIGV2ZW50VHlwZSk7CisK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBhZGRFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgbGlzdGVuZXIucmVsZWFzZU5vbk51bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBiMjQ1OTNiZTdmOGU1OTFi
NDEwNTQ3MGVhZTI0YzgyYmQxZDhiNmE3Li40OWZmNzNkN2M0OWFmZjZlMjhhNGM4MTY2NTg4YjQ1
MjhjMzJkMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKQEAgLTIxNzgsNiArMjE3OCwzMiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpw
c2V1ZG9FbGVtZW50RGVzdHJveWVkKFBzZXVkb0VsZW1lbnQmIHBzZXVkb0VsZW1lbnQpCiAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPnBzZXVkb0VsZW1lbnRSZW1vdmVkKHBhcmVudElkLCBwc2V1
ZG9FbGVtZW50SWQpOwogfQogCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRBZGRFdmVudExp
c3RlbmVyKEV2ZW50VGFyZ2V0JiB0YXJnZXQpCit7CisgICAgTm9kZSogbm9kZSA9IHRhcmdldC50
b05vZGUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBub2Rl
SWQgPSBib3VuZE5vZGVJZChub2RlKTsKKyAgICBpZiAoIW5vZGVJZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRpZEFkZEV2ZW50TGlzdGVuZXIobm9kZUlk
KTsKK30KKwordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6d2lsbFJlbW92ZUV2ZW50TGlzdGVuZXIo
RXZlbnRUYXJnZXQmIHRhcmdldCkKK3sKKyAgICBOb2RlKiBub2RlID0gdGFyZ2V0LnRvTm9kZSgp
OworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IG5vZGVJZCA9IGJv
dW5kTm9kZUlkKG5vZGUpOworICAgIGlmICghbm9kZUlkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2lsbFJlbW92ZUV2ZW50TGlzdGVuZXIobm9kZUlkKTsK
K30KKwogTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKICAgICAvLyBUaGUgcGF0aCBpcyBvZiBmb3JtICIxLEhUTUwsMixCT0RZLDEsRElW
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA5
MzM5Nzk3Y2RmMGY1MjIxMjA4MGQzMjI5ZmYwM2RkODc2ZmMxMzczLi4xN2FmMjg0ZDE5Zjk4NDBj
MmQ5OThmYWRhNzJmOGE3YmQyNTRlZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTY3LDYgKzE2Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGZyYW1lRG9jdW1lbnRVcGRhdGVkKEZyYW1lJik7CiAgICAgdm9pZCBwc2V1ZG9FbGVtZW50Q3Jl
YXRlZChQc2V1ZG9FbGVtZW50Jik7CiAgICAgdm9pZCBwc2V1ZG9FbGVtZW50RGVzdHJveWVkKFBz
ZXVkb0VsZW1lbnQmKTsKKyAgICB2b2lkIGRpZEFkZEV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQm
KTsKKyAgICB2b2lkIHdpbGxSZW1vdmVFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0Jik7CiAKICAg
ICAvLyBDYWxsYmFja3MgdGhhdCBkb24ndCBkaXJlY3RseSBjb3JyZXNwb25kIHRvIGFuIGluc3Ry
dW1lbnRhdGlvbiBlbnRyeSBwb2ludC4KICAgICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwCmluZGV4IDExNjYyYzEzN2ZjNDM0ODYxNjgyZmI0NzVkYWJiOTc4YWU4YzgzZGQu
LjczZTU5MzQ2OGQ0OWFmN2YxOWZhOTA4MDgwNjZkMWQyODFmMzA1ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBA
IC0zNTUsMTIgKzM1NSwxNiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQWRk
RXZlbnRMaXN0ZW5lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdAogewogICAgIGlmIChQ
YWdlRGVidWdnZXJBZ2VudCogcGFnZURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LnBhZ2VEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIHBhZ2VEZWJ1Z2dlckFnZW50LT5kaWRBZGRF
dmVudExpc3RlbmVyKHRhcmdldCwgZXZlbnRUeXBlKTsKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdl
bnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQor
ICAgICAgICBkb21BZ2VudC0+ZGlkQWRkRXZlbnRMaXN0ZW5lcih0YXJnZXQpOwogfQogCiB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZUV2ZW50TGlzdGVuZXJJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEV2ZW50VGFyZ2V0JiB0YXJn
ZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5l
ciwgYm9vbCBjYXB0dXJlKQogewogICAgIGlmIChQYWdlRGVidWdnZXJBZ2VudCogcGFnZURlYnVn
Z2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VEZWJ1Z2dlckFnZW50KCkpCiAgICAg
ICAgIHBhZ2VEZWJ1Z2dlckFnZW50LT53aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIGV2
ZW50VHlwZSwgbGlzdGVuZXIsIGNhcHR1cmUpOworICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCog
ZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCisgICAg
ICAgIGRvbUFnZW50LT53aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcih0YXJnZXQpOwogfQogCiB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUG9zdE1lc3NhZ2VJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFRpbWVyQmFzZSYgdGltZXIsIEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMKaW5k
ZXggZTk1MGExOTQzMmFjNDQ4YjdiYmE1Zjk1MDcxZDlhNWI4YmRmNGJjZC4uMGUyYmQ0OWM4NWIw
NzllYTJhZTA2YWJmMGQyOTkzMTQzNWUxYzczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1h
bmFnZXIuanMKQEAgLTEwMCw2ICsxMDAsMjggQEAgV0kuRE9NVHJlZU1hbmFnZXIgPSBjbGFzcyBE
T01UcmVlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9kaXNwYXRjaFdo
ZW5Eb2N1bWVudEF2YWlsYWJsZShET01BZ2VudC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQuYmlu
ZChET01BZ2VudCwgcGF0aCksIGNhbGxiYWNrKTsKICAgICB9CiAKKyAgICBkaWRBZGRFdmVudExp
c3RlbmVyKG5vZGVJZCkKKyAgICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLkRPTU9ic2Vy
dmVyLgorCisgICAgICAgIGxldCBub2RlID0gdGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKKyAg
ICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG5vZGUuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTU5vZGUuRXZlbnQuRXZlbnRMaXN0ZW5lcnNDaGFu
Z2VkKTsKKyAgICB9CisKKyAgICB3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlSWQpCisgICAg
eworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5ET01PYnNlcnZlci4KKworICAgICAgICBsZXQg
bm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CisgICAgICAgIGlmICghbm9kZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBub2RlLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXSS5ET01Ob2RlLkV2ZW50LkV2ZW50TGlzdGVuZXJzQ2hhbmdlZCk7CisgICAgfQorCiAgICAg
Ly8gUHJpdmF0ZQogCiAgICAgX3dyYXBDbGllbnRDYWxsYmFjayhjYWxsYmFjaykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMK
aW5kZXggYjFhYTlkOGJmYTgwNTZkYzg1MTRkODMyNzk0ZTFlNDJiYTA0ZjgwMC4uMDdmYWZkNTRm
YWM2MDAzODBhNzBiOTlkYmE1ZDAxYjYwZWE0YjVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMKQEAgLTgzMyw3ICs4
MzMsOCBAQCBXSS5ET01Ob2RlID0gY2xhc3MgRE9NTm9kZSBleHRlbmRzIFdJLk9iamVjdAogV0ku
RE9NTm9kZS5FdmVudCA9IHsKICAgICBFbmFibGVkUHNldWRvQ2xhc3Nlc0NoYW5nZWQ6ICJkb20t
bm9kZS1lbmFibGVkLXBzZXVkby1jbGFzc2VzLWRpZC1jaGFuZ2UiLAogICAgIEF0dHJpYnV0ZU1v
ZGlmaWVkOiAiZG9tLW5vZGUtYXR0cmlidXRlLW1vZGlmaWVkIiwKLSAgICBBdHRyaWJ1dGVSZW1v
dmVkOiAiZG9tLW5vZGUtYXR0cmlidXRlLXJlbW92ZWQiCisgICAgQXR0cmlidXRlUmVtb3ZlZDog
ImRvbS1ub2RlLWF0dHJpYnV0ZS1yZW1vdmVkIiwKKyAgICBFdmVudExpc3RlbmVyc0NoYW5nZWQ6
ICJkb20tbm9kZS1ldmVudC1saXN0ZW5lcnMtY2hhbmdlZCIsCiB9OwogCiBXSS5ET01Ob2RlLlBz
ZXVkb0VsZW1lbnRUeXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qcwppbmRleCA1Mzc4Yzk1NTM3
MTJmOWU2NjBkMDcxZjkyZDBhNzhhZWVmMTU4Y2QxLi4wNmM3ODZkNWRlYmU4YjU1M2MwYzU3NDRk
YjUzZjA2YWE1NDVhMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qcwpAQCAtMTAxLDQgKzEwMSwx
NCBAQCBXSS5ET01PYnNlcnZlciA9IGNsYXNzIERPTU9ic2VydmVyCiAgICAgewogICAgICAgICBX
SS5kb21UcmVlTWFuYWdlci5fcHNldWRvRWxlbWVudFJlbW92ZWQocGFyZW50Tm9kZUlkLCBwc2V1
ZG9FbGVtZW50SWQpOwogICAgIH0KKworICAgIGRpZEFkZEV2ZW50TGlzdGVuZXIobm9kZUlkKQor
ICAgIHsKKyAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuZGlkQWRkRXZlbnRMaXN0ZW5lcihub2Rl
SWQpOworICAgIH0KKworICAgIHdpbGxSZW1vdmVFdmVudExpc3RlbmVyKG5vZGVJZCkKKyAgICB7
CisgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLndpbGxSZW1vdmVFdmVudExpc3RlbmVyKG5vZGVJ
ZCk7CisgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwu
anMKaW5kZXggNmUzYjkwY2MwYjNkODA3NWM2N2NmMDRkNGZiNTFkY2QxNWRlNTMyYy4uNDIyNjcw
YWM1ZGU3ZWU4NjE5MGRiZWZjMGFmN2ZiOTI0NjkyMzMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NTm9kZURldGFpbHNTaWRlYmFyUGFu
ZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9N
Tm9kZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTM2LDYgKzM2LDE4IEBAIFdJLkRPTU5vZGVE
ZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0
ZW5kcyBXSS5ET01ECiAgICAgICAgIHRoaXMuX25vZGVSZW1vdGVPYmplY3QgPSBudWxsOwogICAg
IH0KIAorICAgIC8vIFB1YmxpYworCisgICAgYWRkRXZlbnRMaXN0ZW5lcnMoKQorICAgIHsKKyAg
ICAgICAgdGhpcy5kb21Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5FdmVu
dExpc3RlbmVyc0NoYW5nZWQsIHRoaXMuX2V2ZW50TGlzdGVuZXJzQ2hhbmdlZCwgdGhpcyk7Cisg
ICAgfQorCisgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKQorICAgIHsKKyAgICAgICAgdGhpcy5k
b21Ob2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5FdmVudExpc3RlbmVy
c0NoYW5nZWQsIHRoaXMuX2V2ZW50TGlzdGVuZXJzQ2hhbmdlZCwgdGhpcyk7CisgICAgfQorCiAg
ICAgLy8gUHJvdGVjdGVkCiAKICAgICBpbml0aWFsTGF5b3V0KCkKQEAgLTczNyw2ICs3NDksMTEg
QEAgV0kuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBET01Ob2RlRGV0YWlsc1Np
ZGViYXJQYW5lbCBleHRlbmRzIFdJLkRPTUQKICAgICAgICAgZG9tTm9kZS5hY2Nlc3NpYmlsaXR5
UHJvcGVydGllcyhhY2Nlc3NpYmlsaXR5UHJvcGVydGllc0NhbGxiYWNrLmJpbmQodGhpcykpOwog
ICAgIH0KIAorICAgIF9ldmVudExpc3RlbmVyc0NoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAg
ICB0aGlzLl9yZWZyZXNoRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICB9CisKICAgICBfYXR0cmlidXRl
c0NoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQuZGF0YS5ub2RlICE9PSB0
aGlzLmRvbU5vZGUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzNkY2E4OGYwMjMwMTU1OTFiYjI3ZGQ3NDBjMjI0YzVmYzYy
NGQ4Ni4uMzgyNTgzZWI2NDk0NWRmNDgzYzM1NWFkZTM1Njc5MTY5NmM4MTM4NiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDE3LTA5LTEzICBEZXZpbiBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vz
c28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEV2ZW50IExpc3RlbmVycyBzZWN0aW9u
IGRvZXMgbm90IHVwZGF0ZSB3aGVuIGxpc3RlbmVycyBhcmUgYWRkZWQvcmVtb3ZlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNTcwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zMTUwMTY0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9kb20vZXZlbnQtbGlzdGVuZXItYWRkLXJl
bW92ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9kb20vZXZlbnQt
bGlzdGVuZXItYWRkLXJlbW92ZS5odG1sOiBBZGRlZC4KKwogMjAxNy0wOS0xMiAgTWljaGFlbCBD
YXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVW5yZXZp
ZXdlZCwgdXBkYXRlIGNyYXNoIGV4cGVjdGF0aW9ucyBhZnRlciByMjIxOTI1CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2V2ZW50LWxpc3RlbmVyLWFkZC1yZW1vdmUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9ldmVudC1saXN0ZW5lci1hZGQt
cmVtb3ZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OGRmMTc5YWVkMjQ4MzU0M2JmMTJiZDUx
YzFjYmRjZTBhZDk1NjgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS9ldmVudC1saXN0ZW5lci1hZGQtcmVtb3ZlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ3
IEBACitUZXN0aW5nIGV2ZW50cyBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyBldmVudCBsaXN0ZW5l
cnMuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBET00uZXZlbnRMaXN0ZW5lcnMKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBET00uZXZlbnRMaXN0ZW5lcnMuSW5pdGlhbAorUEFTUzogVGhlcmUg
c2hvdWxkIGJlIG5vIGV2ZW50IGxpc3RlbmVycy4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERP
TS5ldmVudExpc3RlbmVycy5BZGQKK0FkZGluZyBsaXN0ZW5lciAidGVzdCIuCitQQVNTOiBUaGVy
ZSBzaG91bGQgYmUgMSBldmVudCBsaXN0ZW5lcnMuCisgIC0gInRlc3QiCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBET00uZXZlbnRMaXN0ZW5lcnMuUmVtb3ZlCitSZW1vdmluZyBsaXN0ZW5lciAi
dGVzdCIuCitQQVNTOiBUaGVyZSBzaG91bGQgYmUgMCBldmVudCBsaXN0ZW5lcnMuCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBET00uZXZlbnRMaXN0ZW5lcnMuQWRkQW5kUmVtb3ZlCitBZGRpbmcg
bGlzdGVuZXIgInRlc3QiLgorUEFTUzogVGhlcmUgc2hvdWxkIGJlIDEgZXZlbnQgbGlzdGVuZXJz
LgorICAtICJ0ZXN0IgorCitSZW1vdmluZyBsaXN0ZW5lciAidGVzdCIuCitQQVNTOiBUaGVyZSBz
aG91bGQgYmUgMCBldmVudCBsaXN0ZW5lcnMuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00u
ZXZlbnRMaXN0ZW5lcnMuT25jZQorQWRkaW5nIGxpc3RlbmVyICJjbGljayIuCitQQVNTOiBUaGVy
ZSBzaG91bGQgYmUgMSBldmVudCBsaXN0ZW5lcnMuCisgIC0gImNsaWNrIgorCitUcmlnZ2VyICJj
bGljayIgZXZlbnQuCitQQVNTOiBUaGVyZSBzaG91bGQgYmUgMCBldmVudCBsaXN0ZW5lcnMuCisK
Ky0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uZXZlbnRMaXN0ZW5lcnMuQXR0cmlidXRlQWRkQW5k
UmVtb3ZlCitBZGRpbmcgYXR0cmlidXRlICJvbmxvYWQiIHdpdGggY2FsbGJhY2sgMS4KK1BBU1M6
IFRoZXJlIHNob3VsZCBiZSAxIGV2ZW50IGxpc3RlbmVycy4KKyAgLSAibG9hZCIKKworUmVtb3Zp
bmcgYXR0cmlidXRlICJvbmxvYWQiLgorUEFTUzogVGhlcmUgc2hvdWxkIGJlIDAgZXZlbnQgbGlz
dGVuZXJzLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NLmV2ZW50TGlzdGVuZXJzLkF0dHJp
YnV0ZVJlcGxhY2UKK0FkZGluZyBhdHRyaWJ1dGUgIm9ubG9hZCIgd2l0aCBjYWxsYmFjayAxLgor
QWRkaW5nIGF0dHJpYnV0ZSAib25sb2FkIiB3aXRoIGNhbGxiYWNrIDIuCitBdHRyaWJ1dGUgZXZl
bnQgbGlzdGVuZXIgcmVwbGFjZWQuCitSZW1vdmluZyBhdHRyaWJ1dGUgIm9ubG9hZCIuCitQQVNT
OiBUaGVyZSBzaG91bGQgYmUgMCBldmVudCBsaXN0ZW5lcnMuCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20vZXZlbnQtbGlzdGVuZXItYWRkLXJlbW92ZS5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9ldmVudC1saXN0ZW5lci1hZGQtcmVtb3ZlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTMxOWNjOTY0OGJkMTNlMzVkZTFiYzlkOTk2MWNkMWQyZmFjY2Y0YgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vZXZlbnQtbGlzdGVuZXItYWRk
LXJlbW92ZS5odG1sCkBAIC0wLDAgKzEsMjQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Vz
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitsZXQgY2FsbGJhY2sxID0g
KGV2ZW50KSA9PiB7IH07CitsZXQgY2FsbGJhY2syID0gKGV2ZW50KSA9PiB7IH07CisKK2Z1bmN0
aW9uIGFkZExpc3RlbmVyKG5hbWUsIG9wdGlvbnMpIHsKKyAgICBkb2N1bWVudC5hZGRFdmVudExp
c3RlbmVyKG5hbWUsIGNhbGxiYWNrMSwgb3B0aW9ucyk7Cit9CisKK2Z1bmN0aW9uIHJlbW92ZUxp
c3RlbmVyKG5hbWUpIHsKKyAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIGNh
bGxiYWNrMSk7Cit9CisKK2Z1bmN0aW9uIGFkZEF0dHJpYnV0ZShuYW1lLCBjYWxsYmFja051bWJl
cikgeworICAgIGlmIChjYWxsYmFja051bWJlciA9PT0gMSkKKyAgICAgICAgZG9jdW1lbnRbbmFt
ZV0gPSBjYWxsYmFjazE7CisgICAgZWxzZSBpZiAoY2FsbGJhY2tOdW1iZXIgPT09IDIpCisgICAg
ICAgIGRvY3VtZW50W25hbWVdID0gY2FsbGJhY2syOworfQorCitmdW5jdGlvbiByZW1vdmVBdHRy
aWJ1dGUobmFtZSkgeworICAgIGRvY3VtZW50W25hbWVdID0gbnVsbDsKK30KKworZnVuY3Rpb24g
Y2xpY2soKSB7CisgICAgZG9jdW1lbnQuYm9keS5jbGljaygpOworfQorCitmdW5jdGlvbiB0ZXN0
KCkgeworICAgIGxldCBub2RlID0gbnVsbDsKKworICAgIGZ1bmN0aW9uIGFkZExpc3RlbmVyKG5h
bWUsIG9wdGlvbnMgPSB7fSkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgQWRkaW5nIGxp
c3RlbmVyICIke25hbWV9Ii5gKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFn
ZShgYWRkTGlzdGVuZXIoIiR7bmFtZX0iLCAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfSlgKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcihuYW1lKSB7CisgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKGBSZW1vdmluZyBsaXN0ZW5lciAiJHtuYW1lfSIuYCk7CisgICAgICAg
IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHJlbW92ZUxpc3RlbmVyKCIke25hbWV9Iilg
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRBdHRyaWJ1dGUobmFtZSwgY2FsbGJhY2tOdW1i
ZXIpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYEFkZGluZyBhdHRyaWJ1dGUgIiR7bmFt
ZX0iIHdpdGggY2FsbGJhY2sgJHtjYWxsYmFja051bWJlcn0uYCk7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoYGFkZEF0dHJpYnV0ZSgiJHtuYW1lfSIsICR7Y2FsbGJhY2tO
dW1iZXJ9KWApOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJlbW92ZUF0dHJpYnV0ZShuYW1lKSB7
CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBSZW1vdmluZyBhdHRyaWJ1dGUgIiR7bmFtZX0i
LmApOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGByZW1vdmVBdHRyaWJ1
dGUoIiR7bmFtZX0iKWApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGxvZ0xpc3RlbmVycyhleHBl
Y3RlZENvdW50KSB7CisgICAgICAgIHJldHVybiBET01BZ2VudC5nZXRFdmVudExpc3RlbmVyc0Zv
ck5vZGUobm9kZS5pZCkKKyAgICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF5bG9hZC5saXN0ZW5lcnMubGVuZ3RoLCBleHBl
Y3RlZENvdW50LCBgVGhlcmUgc2hvdWxkIGJlICR7ZXhwZWN0ZWRDb3VudH0gZXZlbnQgbGlzdGVu
ZXJzLmApOworCisgICAgICAgICAgICBmb3IgKGxldCBldmVudExpc3RlbmVyIG9mIHBheWxvYWQu
bGlzdGVuZXJzKQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIC0gIiR7ZXZl
bnRMaXN0ZW5lci50eXBlfSJgKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgbGV0IHN1aXRl
ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJET00uZXZlbnRMaXN0ZW5lcnMiKTsK
KworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRPTS5ldmVudExpc3Rl
bmVycy5Jbml0aWFsIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IHRoYXQgdGhlIGRvY3Vt
ZW50IGhhcyBubyBldmVudCBsaXN0ZW5lcnMuIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWpl
Y3QpIHsKKyAgICAgICAgICAgIERPTUFnZW50LmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShub2Rl
LmlkKQorICAgICAgICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBheWxvYWQubGlzdGVuZXJzLmxlbmd0aCwgMCwgIlRo
ZXJlIHNob3VsZCBiZSBubyBldmVudCBsaXN0ZW5lcnMuIik7CisKKyAgICAgICAgICAgICAgICBm
b3IgKGxldCBldmVudExpc3RlbmVyIG9mIHBheWxvYWQubGlzdGVuZXJzKQorICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhldmVudExpc3RlbmVyLnR5cGUpOworICAgICAgICAg
ICAgfSkKKyAgICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJlamVjdCk7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRPTS5ldmVu
dExpc3RlbmVycy5BZGQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgdGhhdCBhZGRpbmcg
YW4gZXZlbnQgbGlzdGVuZXIgaXMgdHJhY2tlZC4iLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJl
amVjdCkgeworICAgICAgICAgICAgV0kuRE9NTm9kZS5hd2FpdEV2ZW50KFdJLkRPTU5vZGUuRXZl
bnQuRXZlbnRMaXN0ZW5lcnNDaGFuZ2VkKQorICAgICAgICAgICAgLnRoZW4oKGV2ZW50KSA9PiB7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQudGFyZ2V0ID09PSBu
b2RlLCAiVGFyZ2V0IHNob3VsZCBiZSBkb2N1bWVudCBub2RlLiIpOworCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvZ0xpc3RlbmVycygxKTsKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAu
dGhlbihyZXNvbHZlLCByZWplY3QpOworCisgICAgICAgICAgICBhZGRMaXN0ZW5lcigidGVzdCIp
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJET00uZXZlbnRMaXN0ZW5lcnMuUmVtb3ZlIiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJUZXN0IHRoYXQgYWRkaW5nIGFuIGV2ZW50IGxpc3RlbmVyIGlzIHJlbW92ZWQuIiwKKyAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxldCBldmVudENvdW50ID0g
MDsKKworICAgICAgICAgICAgV0kuRE9NTm9kZS5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUu
RXZlbnQuRXZlbnRMaXN0ZW5lcnNDaGFuZ2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChldmVudC50YXJnZXQgPT09IG5vZGUsICJUYXJnZXQgc2hv
dWxkIGJlIGRvY3VtZW50IG5vZGUuIik7CisKKyAgICAgICAgICAgICAgICBldmVudENvdW50Kys7
CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50Q291bnQgPT09IDEpIHsKKyAgICAgICAgICAgICAg
ICAgICAgbG9nTGlzdGVuZXJzKDApCisgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc29sdmUs
IHJlamVjdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJl
amVjdCgiRXZlbnQgbGlzdGVuZXJzIGNoYW5nZWQgdG9vIG1hbnkgdGltZXMuIik7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXIoInRlc3QiKTsKKyAgICAgICAg
fQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRE9N
LmV2ZW50TGlzdGVuZXJzLkFkZEFuZFJlbW92ZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVz
dCB0aGF0IGEgZnVsbCBhZGQtcmVtb3ZlIGN5Y2xlIGlzIHRyYWNrZWQuIiwKKyAgICAgICAgdGVz
dChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxldCBldmVudENvdW50ID0gMDsKKwor
ICAgICAgICAgICAgV0kuRE9NTm9kZS5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQu
RXZlbnRMaXN0ZW5lcnNDaGFuZ2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydChldmVudC50YXJnZXQgPT09IG5vZGUsICJUYXJnZXQgc2hvdWxkIGJl
IGRvY3VtZW50IG5vZGUuIik7CisKKyAgICAgICAgICAgICAgICBldmVudENvdW50Kys7CisgICAg
ICAgICAgICAgICAgaWYgKGV2ZW50Q291bnQgPT09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAg
bG9nTGlzdGVuZXJzKDEpCisgICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCIiKTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXIoInRlc3QiKTsKKyAgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudENvdW50ID09PSAyKSB7CisgICAg
ICAgICAgICAgICAgICAgIGxvZ0xpc3RlbmVycygwKQorICAgICAgICAgICAgICAgICAgICAudGhl
bihyZXNvbHZlLCByZWplY3QpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICByZWplY3QoIkV2ZW50IGxpc3RlbmVycyBjaGFuZ2VkIHRvbyBtYW55IHRpbWVzLiIp
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGFkZExpc3RlbmVyKCJ0ZXN0Iik7Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIkRPTS5ldmVudExpc3RlbmVycy5PbmNlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0
IHRoYXQgYW4gZXZlbnQgbGlzdGVuZXIgdGhhdCByZW1vdmVzIGl0c2VsZiBhZnRlciBmaXJpbmcg
aXMgdHJhY2tlZC4iLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAg
ICAgbGV0IGV2ZW50Q291bnQgPSAwOworCisgICAgICAgICAgICBXSS5ET01Ob2RlLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5FdmVudExpc3RlbmVyc0NoYW5nZWQsIChldmVudCkg
PT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGV2ZW50LnRhcmdldCA9
PT0gbm9kZSwgIlRhcmdldCBzaG91bGQgYmUgZG9jdW1lbnQgbm9kZS4iKTsKKworICAgICAgICAg
ICAgICAgIGV2ZW50Q291bnQrKzsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnRDb3VudCA9PT0g
MSkgeworICAgICAgICAgICAgICAgICAgICBsb2dMaXN0ZW5lcnMoMSkKKyAgICAgICAgICAgICAg
ICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRy
aWdnZXIgXCJjbGlja1wiIGV2ZW50LiIpOworCisgICAgICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjbGljaygpYCk7CisgICAgICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnRDb3VudCA9PT0gMikgeworICAg
ICAgICAgICAgICAgICAgICBsb2dMaXN0ZW5lcnMoMCkKKyAgICAgICAgICAgICAgICAgICAgLnRo
ZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgcmVqZWN0KCJFdmVudCBsaXN0ZW5lcnMgY2hhbmdlZCB0b28gbWFueSB0aW1lcy4i
KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhZGRMaXN0ZW5lcigiY2xpY2siLCB7
b25jZTogdHJ1ZX0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJET00uZXZlbnRMaXN0ZW5lcnMuQXR0cmlidXRlQWRkQW5kUmVt
b3ZlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IHRoYXQgYWRkaW5nL3JlbW92aW5nIGFu
IGV2ZW50IGxpc3RlbmVyIHZpYSBhbiBhdHRyaWJ1dGUgaXMgdHJhY2tlZC4iLAorICAgICAgICB0
ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgbGV0IGV2ZW50Q291bnQgPSAwOwor
CisgICAgICAgICAgICBXSS5ET01Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVu
dC5FdmVudExpc3RlbmVyc0NoYW5nZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KGV2ZW50LnRhcmdldCA9PT0gbm9kZSwgIlRhcmdldCBzaG91bGQg
YmUgZG9jdW1lbnQgbm9kZS4iKTsKKworICAgICAgICAgICAgICAgIGV2ZW50Q291bnQrKzsKKyAg
ICAgICAgICAgICAgICBpZiAoZXZlbnRDb3VudCA9PT0gMSkgeworICAgICAgICAgICAgICAgICAg
ICBsb2dMaXN0ZW5lcnMoMSkKKyAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIiIpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICByZW1vdmVBdHRyaWJ1dGUoIm9ubG9hZCIpOworICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50Q291bnQgPT09IDIpIHsK
KyAgICAgICAgICAgICAgICAgICAgbG9nTGlzdGVuZXJzKDApCisgICAgICAgICAgICAgICAgICAg
IC50aGVuKHJlc29sdmUsIHJlamVjdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIHJlamVjdCgiRXZlbnQgbGlzdGVuZXJzIGNoYW5nZWQgdG9vIG1hbnkgdGlt
ZXMuIik7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYWRkQXR0cmlidXRlKCJvbmxv
YWQiLCAxKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2Uoewor
ICAgICAgICBuYW1lOiAiRE9NLmV2ZW50TGlzdGVuZXJzLkF0dHJpYnV0ZVJlcGxhY2UiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlRlc3QgdGhhdCByZXBsYWNpbmcgYW4gYXR0cmlidXRlIGV2ZW50
IGxpc3RlbmVyIHdpdGhvdXQgcmVtb3ZpbmcgaXQgaXMgdHJhY2tlZC4iLAorICAgICAgICB0ZXN0
KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgbGV0IGV2ZW50Q291bnQgPSAwOworCisg
ICAgICAgICAgICBXSS5ET01Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5F
dmVudExpc3RlbmVyc0NoYW5nZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0KGV2ZW50LnRhcmdldCA9PT0gbm9kZSwgIlRhcmdldCBzaG91bGQgYmUg
ZG9jdW1lbnQgbm9kZS4iKTsKKworICAgICAgICAgICAgICAgIGV2ZW50Q291bnQrKzsKKyAgICAg
ICAgICAgICAgICBpZiAoZXZlbnRDb3VudCA9PT0gMSkKKyAgICAgICAgICAgICAgICAgICAgYWRk
QXR0cmlidXRlKCJvbmxvYWQiLCAyKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChldmVudENv
dW50ID09PSAyKQorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQXR0cmli
dXRlIGV2ZW50IGxpc3RlbmVyIHJlcGxhY2VkLiIpOworICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGV2ZW50Q291bnQgPT09IDMpCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZUF0dHJpYnV0ZSgi
b25sb2FkIik7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnRDb3VudCA9PT0gNCkgewor
ICAgICAgICAgICAgICAgICAgICBsb2dMaXN0ZW5lcnMoMCkKKyAgICAgICAgICAgICAgICAgICAg
LnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgcmVqZWN0KCJFdmVudCBsaXN0ZW5lcnMgY2hhbmdlZCB0b28gbWFueSB0aW1l
cy4iKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhZGRBdHRyaWJ1dGUoIm9ubG9h
ZCIsIDEpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1
ZXN0RG9jdW1lbnQoKGRvY3VtZW50Tm9kZSkgPT4geworICAgICAgICBub2RlID0gZG9jdW1lbnRO
b2RlOworCisgICAgICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworICAgIH0pOwor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+
VGVzdGluZyBldmVudHMgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgZXZlbnQgbGlzdGVuZXJzLjwv
cD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320703</attachid>
            <date>2017-09-13 16:01:32 -0700</date>
            <delta_ts>2017-09-13 16:50:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170570-20170913160131.patch</filename>
            <type>text/plain</type>
            <size>24524</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDk0N2IzZTcxMzQ3NGY2NDM4NDc0NjViN2M1YzAw
ZTgzNzMyZTY0NjIuLmZhODc3NjFiOTI0MTI5NDk0NDgxNTlkZTRiOGIyNmYyYjYxNThmYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA5LTEzICBEZXZp
biBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEV2ZW50IExpc3RlbmVycyBzZWN0aW9uIGRvZXMgbm90IHVwZGF0ZSB3aGVuIGxpc3RlbmVy
cyBhcmUgYWRkZWQvcmVtb3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcwNTcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTUwMTY0NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvcHJvdG9jb2wvRE9NLmpzb246CisgICAgICAgIEFkZCB0d28gbmV3IGV2ZW50czogImRpZEFk
ZEV2ZW50TGlzdGVuZXIiIGFuZCAid2lsbFJlbW92ZUV2ZW50TGlzdGVuZXIiLiBUaGVzZSBldmVu
dHMgZG8gbm90CisgICAgICAgIGNvbnRhaW4gYW55IGluZm9ybWF0aW9uIGFib3V0IHRoZSBldmVu
dCBsaXN0ZW5lcnMgdGhhdCB3ZXJlIGFkZGVkL3JlbW92ZWQuIFRoZXkgc2VydmUgbW9yZQorICAg
ICAgICBhcyBpbmRpY2F0aW9ucyB0aGF0IHNvbWV0aGluZyBoYXMgY2hhbmdlZCwgYW5kIHRvIHJl
ZmV0Y2ggdGhlIGRhdGEgYWdhaW4gdmlhIGBnZXRFdmVudExpc3RlbmVyc0Zvck5vZGVgLgorCiAy
MDE3LTA5LTEzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAg
ICAgIFtKU0NdIEZpeCBBcnJheSBhbGxvY2F0aW9uIGluIE9iamVjdC5rZXlzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggZjUzMTlmNWMwMDhlMjNkOTMxMDU0ZjVmNmM2YjU5ODkzNDBjNjk4Yi4uMGE5M2EzMDNmNjg5
ZDVmN2Y0OGQzYTNiMTM4NjZiOTkyYjIyMzdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBA
CisyMDE3LTA5LTEzICBEZXZpbiBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEV2ZW50IExpc3RlbmVycyBzZWN0aW9uIGRvZXMgbm90IHVw
ZGF0ZSB3aGVuIGxpc3RlbmVycyBhcmUgYWRkZWQvcmVtb3ZlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNTcwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMTUwMTY0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisK
KyAgICAgICAgVGVzdDogaW5zcGVjdG9yL2RvbS9ldmVudC1saXN0ZW5lci1hZGQtcmVtb3ZlLmh0
bWwKKworICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFRhcmdldDo6c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIEZpcmUgd2ls
bFJlbW92ZUV2ZW50TGlzdGVuZXIvZGlkQWRkRXZlbnRMaXN0ZW5lciBldmVudHMgd2hlbiBhbiBh
dHRyaWJ1dGUgZXZlbnQgbGlzdGVuZXIgaXMKKyAgICAgICAgcmVwbGFjZWQgYnkgYW5vdGhlciBl
dmVudCBsaXN0ZW5lci4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkQWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6d2lsbFJlbW92ZUV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICBEaXNwYXRjaCBhbiBldmVudCB0byB0aGUgaW5zcGVjdG9yIGZyb250ZW5kIHdoZW5l
dmVyIGFuIGV2ZW50IGxpc3RlbmVyIGlzIGFkZGVkL3JlbW92ZWQuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQWRkRXZlbnRMaXN0ZW5lckltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRXZlbnRMaXN0
ZW5lckltcGwpOgorICAgICAgICBUaWUgaW50byBleGlzdGluZyBpbnN0cnVtZW50YXRpb24gcG9p
bnRzIGZvciBhZGRpbmcvcmVtb3ZpbmcgZXZlbnQgbGlzdGVuZXJzLgorCiAyMDE3LTA5LTEzICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgRm9s
bG93dXAgKHIyMjE4MDUpOiBBZGRyZXNzIGNvbW1lbnRzIGFuZCBhZGQgbW9yZSB0ZXN0cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggOGU0Njg0Yzg1YWUyMjUzMzc3MDhjMWIxMjE4NzBiYmVm
MjRmMGQwZC4uODMxMmVhMTVhMGNkZTcyODM3Njc5YzljNDlkZWIxYzRlZDk0Mjc5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTctMDktMTMgIERldmluIFJv
dXNzbyAgPHdlYmtpdEBkZXZpbnJvdXNzby5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
RXZlbnQgTGlzdGVuZXJzIHNlY3Rpb24gZG9lcyBub3QgdXBkYXRlIHdoZW4gbGlzdGVuZXJzIGFy
ZSBhZGRlZC9yZW1vdmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzA1NzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxNTAxNjQ1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanM6CisgICAgICAgIChXSS5ET01PYnNlcnZlci5wcm90
b3R5cGUuZGlkQWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXSS5ET01PYnNlcnZlci5wcm90
b3R5cGUud2lsbFJlbW92ZUV2ZW50TGlzdGVuZXIpOgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRPTVRyZWVNYW5h
Z2VyLnByb3RvdHlwZS5kaWRBZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdJLkRPTVRyZWVN
YW5hZ2VyLnByb3RvdHlwZS53aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzOgorICAgICAgICBBZGQgIkV2ZW50TGlzdGVu
ZXJzQ2hhbmdlZCIgZXZlbnQuIEZpcmVkIHdoZW4gYW4gZXZlbnQgbGlzdGVuZXIgaXMgYWRkZWQg
b3IgcmVtb3ZlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NTm9kZURldGFp
bHNTaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXSS5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5l
bC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV0kuRE9NTm9kZURldGFp
bHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAg
KFdJLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fZXZlbnRMaXN0ZW5lcnND
aGFuZ2VkKToKKyAgICAgICAgUmVmcmVzaCB0aGUgZXZlbnQgbGlzdGVuZXJzIHNlY3Rpb24gd2hl
bmV2ZXIgYSBub2RlJ3MgZXZlbnQgbGlzdGVuZXJzIGNoYW5nZS4KKwogMjAxNy0wOS0xMyAgTmlr
aXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBGcm9udGVuZCBzaG91bGQgYmUgbWFkZSB0byBleHBlY3QgYW5kIGhhbmRsZSBkaXNhYmxl
ZCBwcm9wZXJ0aWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3Byb3RvY29sL0RPTS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9ET00uanNvbgppbmRleCA0Nzc1NWFiNWMwNWU2MTU4MzgzMzk4MTczMzY3NjI1NzZkYjQz
N2NlLi4yNmE3NTQ1NWQ4NGQ2NjZjNThhZWViZDUzZjA2YTFjMWE2YjQ1OWRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KQEAgLTU5
Myw2ICs1OTMsMjAgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBhcmVudElkIiwgIiRy
ZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlBzZXVkbyBlbGVtZW50J3MgcGFyZW50IGVs
ZW1lbnQgaWQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHNldWRvRWxlbWVudElk
IiwgIiRyZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSByZW1vdmVkIHBzZXVkbyBl
bGVtZW50IGlkLiIgfQogICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICAibmFtZSI6ICJkaWRBZGRFdmVudExpc3RlbmVyIiwKKyAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJDYWxsZWQgd2hlbiBhbiBldmVudCBsaXN0ZW5lciBpcyBhZGRlZCB0byBhIG5v
ZGUuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiTm9kZUlkIiB9CisgICAgICAgICAgICBdCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIndpbGxSZW1vdmVFdmVudExpc3Rl
bmVyIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYWxsZWQgYWZ0ZXIgYSByZXF1ZXN0
IGhhcyBiZWVuIG1hZGUgdG8gcmVtb3ZlIGFuIGV2ZW50IGxpc3RlbmVyIGZyb20gYSBub2RlLiIs
CisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
Im5vZGVJZCIsICIkcmVmIjogIk5vZGVJZCIgfQorICAgICAgICAgICAgXQogICAgICAgICB9CiAg
ICAgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggZmYzODZiYjMwYTI2OTIz
MzhkYzU1ZThjMGE1MDE0ZGJkYmFjZjU1My4uNWEzMzBhMWQ0MzdkYzllYzY1MDQ1MGZiNzc3ZmVm
MzQ0ODQ2NzJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC0xMzksNyArMTM5
LDEyIEBAIGJvb2wgRXZlbnRUYXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgaWYgKGV4aXN0aW5nTGlzdGVuZXIpIHsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcigqdGhpcywgZXZlbnRUeXBlLCAqZXhp
c3RpbmdMaXN0ZW5lciwgZmFsc2UpOworCiAgICAgICAgIGV2ZW50VGFyZ2V0RGF0YSgpLT5ldmVu
dExpc3RlbmVyTWFwLnJlcGxhY2UoZXZlbnRUeXBlLCAqZXhpc3RpbmdMaXN0ZW5lciwgbGlzdGVu
ZXIucmVsZWFzZU5vbk51bGwoKSwgeyB9KTsKKworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEFkZEV2ZW50TGlzdGVuZXIoKnRoaXMsIGV2ZW50VHlwZSk7CisKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBhZGRFdmVudExpc3RlbmVyKGV2ZW50VHlw
ZSwgbGlzdGVuZXIucmVsZWFzZU5vbk51bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBiMjQ1OTNiZTdmOGU1OTFiNDEwNTQ3MGVh
ZTI0YzgyYmQxZDhiNmE3Li40OWZmNzNkN2M0OWFmZjZlMjhhNGM4MTY2NTg4YjQ1MjhjMzJkMjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
QEAgLTIxNzgsNiArMjE3OCwzMiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpwc2V1ZG9FbGVt
ZW50RGVzdHJveWVkKFBzZXVkb0VsZW1lbnQmIHBzZXVkb0VsZW1lbnQpCiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPnBzZXVkb0VsZW1lbnRSZW1vdmVkKHBhcmVudElkLCBwc2V1ZG9FbGVtZW50
SWQpOwogfQogCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRBZGRFdmVudExpc3RlbmVyKEV2
ZW50VGFyZ2V0JiB0YXJnZXQpCit7CisgICAgTm9kZSogbm9kZSA9IHRhcmdldC50b05vZGUoKTsK
KyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBub2RlSWQgPSBib3Vu
ZE5vZGVJZChub2RlKTsKKyAgICBpZiAoIW5vZGVJZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPmRpZEFkZEV2ZW50TGlzdGVuZXIobm9kZUlkKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6d2lsbFJlbW92ZUV2ZW50TGlzdGVuZXIoRXZlbnRUYXJn
ZXQmIHRhcmdldCkKK3sKKyAgICBOb2RlKiBub2RlID0gdGFyZ2V0LnRvTm9kZSgpOworICAgIGlm
ICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IG5vZGVJZCA9IGJvdW5kTm9kZUlk
KG5vZGUpOworICAgIGlmICghbm9kZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+d2lsbFJlbW92ZUV2ZW50TGlzdGVuZXIobm9kZUlkKTsKK30KKwogTm9k
ZSogSW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ICAgICAvLyBUaGUgcGF0aCBpcyBvZiBmb3JtICIxLEhUTUwsMixCT0RZLDEsRElWIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA5MzM5Nzk3Y2Rm
MGY1MjIxMjA4MGQzMjI5ZmYwM2RkODc2ZmMxMzczLi4xN2FmMjg0ZDE5Zjk4NDBjMmQ5OThmYWRh
NzJmOGE3YmQyNTRlZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaApAQCAtMTY3LDYgKzE2Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGZyYW1lRG9j
dW1lbnRVcGRhdGVkKEZyYW1lJik7CiAgICAgdm9pZCBwc2V1ZG9FbGVtZW50Q3JlYXRlZChQc2V1
ZG9FbGVtZW50Jik7CiAgICAgdm9pZCBwc2V1ZG9FbGVtZW50RGVzdHJveWVkKFBzZXVkb0VsZW1l
bnQmKTsKKyAgICB2b2lkIGRpZEFkZEV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmKTsKKyAgICB2
b2lkIHdpbGxSZW1vdmVFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0Jik7CiAKICAgICAvLyBDYWxs
YmFja3MgdGhhdCBkb24ndCBkaXJlY3RseSBjb3JyZXNwb25kIHRvIGFuIGluc3RydW1lbnRhdGlv
biBlbnRyeSBwb2ludC4KICAgICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CmluZGV4IDExNjYyYzEzN2ZjNDM0ODYxNjgyZmI0NzVkYWJiOTc4YWU4YzgzZGQuLjczZTU5MzQ2
OGQ0OWFmN2YxOWZhOTA4MDgwNjZkMWQyODFmMzA1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zNTUsMTIg
KzM1NSwxNiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQWRkRXZlbnRMaXN0
ZW5lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdAogewogICAgIGlmIChQYWdlRGVidWdn
ZXJBZ2VudCogcGFnZURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VEZWJ1
Z2dlckFnZW50KCkpCiAgICAgICAgIHBhZ2VEZWJ1Z2dlckFnZW50LT5kaWRBZGRFdmVudExpc3Rl
bmVyKHRhcmdldCwgZXZlbnRUeXBlKTsKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgICAgICBk
b21BZ2VudC0+ZGlkQWRkRXZlbnRMaXN0ZW5lcih0YXJnZXQpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZUV2ZW50TGlzdGVuZXJJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCBj
YXB0dXJlKQogewogICAgIGlmIChQYWdlRGVidWdnZXJBZ2VudCogcGFnZURlYnVnZ2VyQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLnBhZ2VEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIHBhZ2VE
ZWJ1Z2dlckFnZW50LT53aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcih0YXJnZXQsIGV2ZW50VHlwZSwg
bGlzdGVuZXIsIGNhcHR1cmUpOworICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgICAgIGRvbUFn
ZW50LT53aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcih0YXJnZXQpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUG9zdE1lc3NhZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFRpbWVyQmFzZSYgdGltZXIsIEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMKaW5kZXggZTk1MGEx
OTQzMmFjNDQ4YjdiYmE1Zjk1MDcxZDlhNWI4YmRmNGJjZC4uMGUyYmQ0OWM4NWIwNzllYTJhZTA2
YWJmMGQyOTkzMTQzNWUxYzczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMK
QEAgLTEwMCw2ICsxMDAsMjggQEAgV0kuRE9NVHJlZU1hbmFnZXIgPSBjbGFzcyBET01UcmVlTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9kaXNwYXRjaFdoZW5Eb2N1bWVu
dEF2YWlsYWJsZShET01BZ2VudC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQuYmluZChET01BZ2Vu
dCwgcGF0aCksIGNhbGxiYWNrKTsKICAgICB9CiAKKyAgICBkaWRBZGRFdmVudExpc3RlbmVyKG5v
ZGVJZCkKKyAgICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLkRPTU9ic2VydmVyLgorCisg
ICAgICAgIGxldCBub2RlID0gdGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKKyAgICAgICAgaWYg
KCFub2RlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG5vZGUuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLkRPTU5vZGUuRXZlbnQuRXZlbnRMaXN0ZW5lcnNDaGFuZ2VkKTsKKyAg
ICB9CisKKyAgICB3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlSWQpCisgICAgeworICAgICAg
ICAvLyBDYWxsZWQgZnJvbSBXSS5ET01PYnNlcnZlci4KKworICAgICAgICBsZXQgbm9kZSA9IHRo
aXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBub2RlLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01O
b2RlLkV2ZW50LkV2ZW50TGlzdGVuZXJzQ2hhbmdlZCk7CisgICAgfQorCiAgICAgLy8gUHJpdmF0
ZQogCiAgICAgX3dyYXBDbGllbnRDYWxsYmFjayhjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMKaW5kZXggYjFh
YTlkOGJmYTgwNTZkYzg1MTRkODMyNzk0ZTFlNDJiYTA0ZjgwMC4uMDdmYWZkNTRmYWM2MDAzODBh
NzBiOTlkYmE1ZDAxYjYwZWE0YjVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMKQEAgLTgzMyw3ICs4MzMsOCBAQCBX
SS5ET01Ob2RlID0gY2xhc3MgRE9NTm9kZSBleHRlbmRzIFdJLk9iamVjdAogV0kuRE9NTm9kZS5F
dmVudCA9IHsKICAgICBFbmFibGVkUHNldWRvQ2xhc3Nlc0NoYW5nZWQ6ICJkb20tbm9kZS1lbmFi
bGVkLXBzZXVkby1jbGFzc2VzLWRpZC1jaGFuZ2UiLAogICAgIEF0dHJpYnV0ZU1vZGlmaWVkOiAi
ZG9tLW5vZGUtYXR0cmlidXRlLW1vZGlmaWVkIiwKLSAgICBBdHRyaWJ1dGVSZW1vdmVkOiAiZG9t
LW5vZGUtYXR0cmlidXRlLXJlbW92ZWQiCisgICAgQXR0cmlidXRlUmVtb3ZlZDogImRvbS1ub2Rl
LWF0dHJpYnV0ZS1yZW1vdmVkIiwKKyAgICBFdmVudExpc3RlbmVyc0NoYW5nZWQ6ICJkb20tbm9k
ZS1ldmVudC1saXN0ZW5lcnMtY2hhbmdlZCIsCiB9OwogCiBXSS5ET01Ob2RlLlBzZXVkb0VsZW1l
bnRUeXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qcwppbmRleCA1Mzc4Yzk1NTM3MTJmOWU2NjBk
MDcxZjkyZDBhNzhhZWVmMTU4Y2QxLi4wNmM3ODZkNWRlYmU4YjU1M2MwYzU3NDRkYjUzZjA2YWE1
NDVhMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9ET01PYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qcwpAQCAtMTAxLDQgKzEwMSwxNCBAQCBXSS5E
T01PYnNlcnZlciA9IGNsYXNzIERPTU9ic2VydmVyCiAgICAgewogICAgICAgICBXSS5kb21UcmVl
TWFuYWdlci5fcHNldWRvRWxlbWVudFJlbW92ZWQocGFyZW50Tm9kZUlkLCBwc2V1ZG9FbGVtZW50
SWQpOwogICAgIH0KKworICAgIGRpZEFkZEV2ZW50TGlzdGVuZXIobm9kZUlkKQorICAgIHsKKyAg
ICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuZGlkQWRkRXZlbnRMaXN0ZW5lcihub2RlSWQpOworICAg
IH0KKworICAgIHdpbGxSZW1vdmVFdmVudExpc3RlbmVyKG5vZGVJZCkKKyAgICB7CisgICAgICAg
IFdJLmRvbVRyZWVNYW5hZ2VyLndpbGxSZW1vdmVFdmVudExpc3RlbmVyKG5vZGVJZCk7CisgICAg
fQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXgg
NmUzYjkwY2MwYjNkODA3NWM2N2NmMDRkNGZiNTFkY2QxNWRlNTMyYy4uNDIyNjcwYWM1ZGU3ZWU4
NjE5MGRiZWZjMGFmN2ZiOTI0NjkyMzMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NTm9kZURldGFp
bHNTaWRlYmFyUGFuZWwuanMKQEAgLTM2LDYgKzM2LDE4IEBAIFdJLkRPTU5vZGVEZXRhaWxzU2lk
ZWJhclBhbmVsID0gY2xhc3MgRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5E
T01ECiAgICAgICAgIHRoaXMuX25vZGVSZW1vdGVPYmplY3QgPSBudWxsOwogICAgIH0KIAorICAg
IC8vIFB1YmxpYworCisgICAgYWRkRXZlbnRMaXN0ZW5lcnMoKQorICAgIHsKKyAgICAgICAgdGhp
cy5kb21Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5FdmVudExpc3RlbmVy
c0NoYW5nZWQsIHRoaXMuX2V2ZW50TGlzdGVuZXJzQ2hhbmdlZCwgdGhpcyk7CisgICAgfQorCisg
ICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKQorICAgIHsKKyAgICAgICAgdGhpcy5kb21Ob2RlLnJl
bW92ZUV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5FdmVudExpc3RlbmVyc0NoYW5nZWQs
IHRoaXMuX2V2ZW50TGlzdGVuZXJzQ2hhbmdlZCwgdGhpcyk7CisgICAgfQorCiAgICAgLy8gUHJv
dGVjdGVkCiAKICAgICBpbml0aWFsTGF5b3V0KCkKQEAgLTczNyw2ICs3NDksMTEgQEAgV0kuRE9N
Tm9kZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5l
bCBleHRlbmRzIFdJLkRPTUQKICAgICAgICAgZG9tTm9kZS5hY2Nlc3NpYmlsaXR5UHJvcGVydGll
cyhhY2Nlc3NpYmlsaXR5UHJvcGVydGllc0NhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0KIAor
ICAgIF9ldmVudExpc3RlbmVyc0NoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9y
ZWZyZXNoRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICB9CisKICAgICBfYXR0cmlidXRlc0NoYW5nZWQo
ZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQuZGF0YS5ub2RlICE9PSB0aGlzLmRvbU5v
ZGUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNzdiNWI5N2RiMGE1MGU4YTkxNDQ0ZWQxYWM2NDg5ZDBmNTMzNjk2NC4uMjQ4
MDFiYjYxZWQ3YmJmNWQ2Njk4MjY1ZjUzMjc3M2E4NzA2YmQwNSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDE3LTA5LTEzICBEZXZpbiBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEV2ZW50IExpc3RlbmVycyBzZWN0aW9uIGRvZXMgbm90
IHVwZGF0ZSB3aGVuIGxpc3RlbmVycyBhcmUgYWRkZWQvcmVtb3ZlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNTcwCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zMTUwMTY0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8u
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2V2ZW50LWxpc3RlbmVyLWFkZC1yZW1vdmUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2V2ZW50LWxpc3RlbmVy
LWFkZC1yZW1vdmUuaHRtbDogQWRkZWQuCisKIDIwMTctMDktMTMgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBGb2xsb3d1cCAocjIyMTgwNSk6
IEFkZHJlc3MgY29tbWVudHMgYW5kIGFkZCBtb3JlIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tL2V2ZW50LWxpc3RlbmVyLWFkZC1yZW1vdmUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9ldmVudC1saXN0ZW5lci1hZGQtcmVtb3ZlLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzM3MDdkMTdiMmM0NGNkNTg4ZGI1MjYzNjk1NmM4N2Rk
ZTY4ZWRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9ldmVu
dC1saXN0ZW5lci1hZGQtcmVtb3ZlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUzIEBACitUZXN0
aW5nIGV2ZW50cyBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyBldmVudCBsaXN0ZW5lcnMuCisKKwor
PT0gUnVubmluZyB0ZXN0IHN1aXRlOiBET00uZXZlbnRMaXN0ZW5lcnMKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBET00uZXZlbnRMaXN0ZW5lcnMuSW5pdGlhbAorUEFTUzogVGhlcmUgc2hvdWxkIGJl
IG5vIGV2ZW50IGxpc3RlbmVycy4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTS5ldmVudExp
c3RlbmVycy5BZGQKK0FkZGluZyBsaXN0ZW5lciAidGVzdCIuCitQQVNTOiBUaGVyZSBzaG91bGQg
YmUgMSBldmVudCBsaXN0ZW5lcnMuCisgIC0gInRlc3QiCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBET00uZXZlbnRMaXN0ZW5lcnMuUmVtb3ZlCitSZW1vdmluZyBsaXN0ZW5lciAidGVzdCIuCitQ
QVNTOiBUaGVyZSBzaG91bGQgYmUgMCBldmVudCBsaXN0ZW5lcnMuCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBET00uZXZlbnRMaXN0ZW5lcnMuQWRkQW5kUmVtb3ZlCitBZGRpbmcgbGlzdGVuZXIg
InRlc3QiLgorUEFTUzogVGhlcmUgc2hvdWxkIGJlIDEgZXZlbnQgbGlzdGVuZXJzLgorICAtICJ0
ZXN0IgorCitSZW1vdmluZyBsaXN0ZW5lciAidGVzdCIuCitQQVNTOiBUaGVyZSBzaG91bGQgYmUg
MCBldmVudCBsaXN0ZW5lcnMuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uZXZlbnRMaXN0
ZW5lcnMuT25jZQorQWRkaW5nIGxpc3RlbmVyICJjbGljayIuCitQQVNTOiBUaGVyZSBzaG91bGQg
YmUgMSBldmVudCBsaXN0ZW5lcnMuCisgIC0gImNsaWNrIgorCitUcmlnZ2VyICJjbGljayIgZXZl
bnQuCitQQVNTOiBUaGVyZSBzaG91bGQgYmUgMCBldmVudCBsaXN0ZW5lcnMuCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBET00uZXZlbnRMaXN0ZW5lcnMuQXR0cmlidXRlQWRkQW5kUmVtb3ZlCitB
ZGRpbmcgYXR0cmlidXRlICJvbmxvYWQiIHdpdGggY2FsbGJhY2sgMS4KK1BBU1M6IFRoZXJlIHNo
b3VsZCBiZSAxIGV2ZW50IGxpc3RlbmVycy4KKyAgLSAibG9hZCIKKworUmVtb3ZpbmcgYXR0cmli
dXRlICJvbmxvYWQiLgorUEFTUzogVGhlcmUgc2hvdWxkIGJlIDAgZXZlbnQgbGlzdGVuZXJzLgor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NLmV2ZW50TGlzdGVuZXJzLkF0dHJpYnV0ZVJlcGxh
Y2UKK0FkZGluZyBhdHRyaWJ1dGUgIm9ubG9hZCIgd2l0aCBjYWxsYmFjayAxLgorUEFTUzogVGhl
cmUgc2hvdWxkIGJlIDEgZXZlbnQgbGlzdGVuZXJzLgorICAtICJsb2FkIgorCitBZGRpbmcgYXR0
cmlidXRlICJvbmxvYWQiIHdpdGggY2FsbGJhY2sgMi4KK0F0dHJpYnV0ZSBldmVudCBsaXN0ZW5l
ciByZXBsYWNlZC4KK1BBU1M6IFRoZXJlIHNob3VsZCBiZSAxIGV2ZW50IGxpc3RlbmVycy4KKyAg
LSAibG9hZCIKKworUmVtb3ZpbmcgYXR0cmlidXRlICJvbmxvYWQiLgorUEFTUzogVGhlcmUgc2hv
dWxkIGJlIDAgZXZlbnQgbGlzdGVuZXJzLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tL2V2ZW50LWxpc3RlbmVyLWFkZC1yZW1vdmUuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kb20vZXZlbnQtbGlzdGVuZXItYWRkLXJlbW92ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5
NWU5ZjRhZmJmMjg3YzRiOWFlNTQ2MDk2ZWZkZWRjMmUyNGYyN2QKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2V2ZW50LWxpc3RlbmVyLWFkZC1yZW1vdmUuaHRt
bApAQCAtMCwwICsxLDIzNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3It
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorbGV0IGNhbGxiYWNrMSA9IChldmVudCkgPT4g
eyB9OworbGV0IGNhbGxiYWNrMiA9IChldmVudCkgPT4geyB9OworCitmdW5jdGlvbiBhZGRMaXN0
ZW5lcihuYW1lLCBvcHRpb25zKSB7CisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihuYW1l
LCBjYWxsYmFjazEsIG9wdGlvbnMpOworfQorCitmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcihuYW1l
KSB7CisgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBjYWxsYmFjazEpOwor
fQorCitmdW5jdGlvbiBhZGRBdHRyaWJ1dGUobmFtZSwgY2FsbGJhY2tOdW1iZXIpIHsKKyAgICBp
ZiAoY2FsbGJhY2tOdW1iZXIgPT09IDEpCisgICAgICAgIGRvY3VtZW50W25hbWVdID0gY2FsbGJh
Y2sxOworICAgIGVsc2UgaWYgKGNhbGxiYWNrTnVtYmVyID09PSAyKQorICAgICAgICBkb2N1bWVu
dFtuYW1lXSA9IGNhbGxiYWNrMjsKK30KKworZnVuY3Rpb24gcmVtb3ZlQXR0cmlidXRlKG5hbWUp
IHsKKyAgICBkb2N1bWVudFtuYW1lXSA9IG51bGw7Cit9CisKK2Z1bmN0aW9uIGNsaWNrKCkgewor
ICAgIGRvY3VtZW50LmJvZHkuY2xpY2soKTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBs
ZXQgbm9kZSA9IG51bGw7CisKKyAgICBmdW5jdGlvbiBhZGRMaXN0ZW5lcihuYW1lLCBvcHRpb25z
ID0ge30pIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYEFkZGluZyBsaXN0ZW5lciAiJHtu
YW1lfSIuYCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGFkZExpc3Rl
bmVyKCIke25hbWV9IiwgJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX0pYCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIobmFtZSkgeworICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZyhgUmVtb3ZpbmcgbGlzdGVuZXIgIiR7bmFtZX0iLmApOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKGByZW1vdmVMaXN0ZW5lcigiJHtuYW1lfSIpYCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gYWRkQXR0cmlidXRlKG5hbWUsIGNhbGxiYWNrTnVtYmVyKSB7CisgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKGBBZGRpbmcgYXR0cmlidXRlICIke25hbWV9IiB3aXRoIGNh
bGxiYWNrICR7Y2FsbGJhY2tOdW1iZXJ9LmApOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1
YXRlSW5QYWdlKGBhZGRBdHRyaWJ1dGUoIiR7bmFtZX0iLCAke2NhbGxiYWNrTnVtYmVyfSlgKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiByZW1vdmVBdHRyaWJ1dGUobmFtZSkgeworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhgUmVtb3ZpbmcgYXR0cmlidXRlICIke25hbWV9Ii5gKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgcmVtb3ZlQXR0cmlidXRlKCIke25hbWV9
IilgKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBsb2dMaXN0ZW5lcnMoZXhwZWN0ZWRDb3VudCkg
eworICAgICAgICByZXR1cm4gRE9NQWdlbnQuZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKG5vZGUu
aWQpLnRoZW4oKHBheWxvYWQpID0+IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwocGF5bG9hZC5saXN0ZW5lcnMubGVuZ3RoLCBleHBlY3RlZENvdW50LCBgVGhlcmUgc2hv
dWxkIGJlICR7ZXhwZWN0ZWRDb3VudH0gZXZlbnQgbGlzdGVuZXJzLmApOworCisgICAgICAgICAg
ICBmb3IgKGxldCBldmVudExpc3RlbmVyIG9mIHBheWxvYWQubGlzdGVuZXJzKQorICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIC0gIiR7ZXZlbnRMaXN0ZW5lci50eXBlfSJgKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVh
dGVBc3luY1N1aXRlKCJET00uZXZlbnRMaXN0ZW5lcnMiKTsKKworICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKKyAgICAgICAgbmFtZTogIkRPTS5ldmVudExpc3RlbmVycy5Jbml0aWFsIiwKKyAgICAg
ICAgZGVzY3JpcHRpb246ICJUZXN0IHRoYXQgdGhlIGRvY3VtZW50IGhhcyBubyBldmVudCBsaXN0
ZW5lcnMuIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIERP
TUFnZW50LmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShub2RlLmlkKS50aGVuKChwYXlsb2FkKSA9
PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXlsb2FkLmxp
c3RlbmVycy5sZW5ndGgsIDAsICJUaGVyZSBzaG91bGQgYmUgbm8gZXZlbnQgbGlzdGVuZXJzLiIp
OworCisgICAgICAgICAgICAgICAgZm9yIChsZXQgZXZlbnRMaXN0ZW5lciBvZiBwYXlsb2FkLmxp
c3RlbmVycykKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coZXZlbnRMaXN0
ZW5lci50eXBlKTsKKyAgICAgICAgICAgIH0pLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
RE9NLmV2ZW50TGlzdGVuZXJzLkFkZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCB0aGF0
IGFkZGluZyBhbiBldmVudCBsaXN0ZW5lciBpcyB0cmFja2VkLiIsCisgICAgICAgIHRlc3QocmVz
b2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBXSS5ET01Ob2RlLmF3YWl0RXZlbnQoV0kuRE9N
Tm9kZS5FdmVudC5FdmVudExpc3RlbmVyc0NoYW5nZWQpLnRoZW4oKGV2ZW50KSA9PiB7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQudGFyZ2V0ID09PSBub2RlLCAi
VGFyZ2V0IHNob3VsZCBiZSBkb2N1bWVudCBub2RlLiIpOworCisgICAgICAgICAgICAgICAgcmV0
dXJuIGxvZ0xpc3RlbmVycygxKTsKKyAgICAgICAgICAgIH0pLnRoZW4ocmVzb2x2ZSwgcmVqZWN0
KTsKKworICAgICAgICAgICAgYWRkTGlzdGVuZXIoInRlc3QiKTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRE9NLmV2ZW50TGlz
dGVuZXJzLlJlbW92ZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCB0aGF0IGFkZGluZyBh
biBldmVudCBsaXN0ZW5lciBpcyByZW1vdmVkLiIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVq
ZWN0KSB7CisgICAgICAgICAgICBsZXQgZXZlbnRDb3VudCA9IDA7CisKKyAgICAgICAgICAgIFdJ
LkRPTU5vZGUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkV2ZW50TGlzdGVuZXJz
Q2hhbmdlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnQoZXZlbnQudGFyZ2V0ID09PSBub2RlLCAiVGFyZ2V0IHNob3VsZCBiZSBkb2N1bWVudCBub2Rl
LiIpOworCisgICAgICAgICAgICAgICAgZXZlbnRDb3VudCsrOworICAgICAgICAgICAgICAgIGlm
IChldmVudENvdW50ID09PSAxKQorICAgICAgICAgICAgICAgICAgICBsb2dMaXN0ZW5lcnMoMCku
dGhlbihyZXNvbHZlLCByZWplY3QpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgcmVqZWN0KCJFdmVudCBsaXN0ZW5lcnMgY2hhbmdlZCB0b28gbWFueSB0aW1lcy4i
KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICByZW1vdmVMaXN0ZW5lcigidGVzdCIp
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJET00uZXZlbnRMaXN0ZW5lcnMuQWRkQW5kUmVtb3ZlIiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJUZXN0IHRoYXQgYSBmdWxsIGFkZC1yZW1vdmUgY3ljbGUgaXMgdHJhY2tlZC4iLAor
ICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgbGV0IGV2ZW50Q291
bnQgPSAwOworCisgICAgICAgICAgICBXSS5ET01Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9N
Tm9kZS5FdmVudC5FdmVudExpc3RlbmVyc0NoYW5nZWQsIChldmVudCkgPT4geworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGV2ZW50LnRhcmdldCA9PT0gbm9kZSwgIlRhcmdl
dCBzaG91bGQgYmUgZG9jdW1lbnQgbm9kZS4iKTsKKworICAgICAgICAgICAgICAgIGV2ZW50Q291
bnQrKzsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnRDb3VudCA9PT0gMSkgeworICAgICAgICAg
ICAgICAgICAgICBsb2dMaXN0ZW5lcnMoMSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiIik7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlbW92ZUxpc3RlbmVyKCJ0ZXN0Iik7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnRDb3VudCA9PT0gMikKKyAgICAgICAgICAgICAgICAg
ICAgbG9nTGlzdGVuZXJzKDApLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlamVjdCgiRXZlbnQgbGlzdGVuZXJzIGNoYW5n
ZWQgdG9vIG1hbnkgdGltZXMuIik7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYWRk
TGlzdGVuZXIoInRlc3QiKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiRE9NLmV2ZW50TGlzdGVuZXJzLk9uY2UiLAorICAgICAg
ICBkZXNjcmlwdGlvbjogIlRlc3QgdGhhdCBhbiBldmVudCBsaXN0ZW5lciB0aGF0IHJlbW92ZXMg
aXRzZWxmIGFmdGVyIGZpcmluZyBpcyB0cmFja2VkLiIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwg
cmVqZWN0KSB7CisgICAgICAgICAgICBsZXQgZXZlbnRDb3VudCA9IDA7CisKKyAgICAgICAgICAg
IFdJLkRPTU5vZGUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkV2ZW50TGlzdGVu
ZXJzQ2hhbmdlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQoZXZlbnQudGFyZ2V0ID09PSBub2RlLCAiVGFyZ2V0IHNob3VsZCBiZSBkb2N1bWVudCBu
b2RlLiIpOworCisgICAgICAgICAgICAgICAgZXZlbnRDb3VudCsrOworICAgICAgICAgICAgICAg
IGlmIChldmVudENvdW50ID09PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ0xpc3RlbmVy
cygxKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmln
Z2VyIFwiY2xpY2tcIiBldmVudC4iKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY2xpY2soKWApOworICAgICAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50Q291bnQgPT09IDIpCisgICAgICAg
ICAgICAgICAgICAgIGxvZ0xpc3RlbmVycygwKS50aGVuKHJlc29sdmUsIHJlamVjdCk7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZWplY3QoIkV2ZW50IGxpc3Rl
bmVycyBjaGFuZ2VkIHRvbyBtYW55IHRpbWVzLiIpOworICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIGFkZExpc3RlbmVyKCJjbGljayIsIHtvbmNlOiB0cnVlfSk7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRPTS5ldmVu
dExpc3RlbmVycy5BdHRyaWJ1dGVBZGRBbmRSZW1vdmUiLAorICAgICAgICBkZXNjcmlwdGlvbjog
IlRlc3QgdGhhdCBhZGRpbmcvcmVtb3ZpbmcgYW4gZXZlbnQgbGlzdGVuZXIgdmlhIGFuIGF0dHJp
YnV0ZSBpcyB0cmFja2VkLiIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAg
ICAgICAgICBsZXQgZXZlbnRDb3VudCA9IDA7CisKKyAgICAgICAgICAgIFdJLkRPTU5vZGUuYWRk
RXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkV2ZW50TGlzdGVuZXJzQ2hhbmdlZCwgKGV2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZlbnQudGFy
Z2V0ID09PSBub2RlLCAiVGFyZ2V0IHNob3VsZCBiZSBkb2N1bWVudCBub2RlLiIpOworCisgICAg
ICAgICAgICAgICAgZXZlbnRDb3VudCsrOworICAgICAgICAgICAgICAgIGlmIChldmVudENvdW50
ID09PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ0xpc3RlbmVycygxKS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCIiKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQXR0cmlidXRlKCJvbmxvYWQiKTsKKyAgICAgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudENvdW50ID09
PSAyKQorICAgICAgICAgICAgICAgICAgICBsb2dMaXN0ZW5lcnMoMCkudGhlbihyZXNvbHZlLCBy
ZWplY3QpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmVqZWN0
KCJFdmVudCBsaXN0ZW5lcnMgY2hhbmdlZCB0b28gbWFueSB0aW1lcy4iKTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICBhZGRBdHRyaWJ1dGUoIm9ubG9hZCIsIDEpOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJET00u
ZXZlbnRMaXN0ZW5lcnMuQXR0cmlidXRlUmVwbGFjZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAi
VGVzdCB0aGF0IHJlcGxhY2luZyBhbiBhdHRyaWJ1dGUgZXZlbnQgbGlzdGVuZXIgd2l0aG91dCBy
ZW1vdmluZyBpdCBpcyB0cmFja2VkLiIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7
CisgICAgICAgICAgICBsZXQgZXZlbnRDb3VudCA9IDA7CisKKyAgICAgICAgICAgIFdJLkRPTU5v
ZGUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkV2ZW50TGlzdGVuZXJzQ2hhbmdl
ZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZXZl
bnQudGFyZ2V0ID09PSBub2RlLCAiVGFyZ2V0IHNob3VsZCBiZSBkb2N1bWVudCBub2RlLiIpOwor
CisgICAgICAgICAgICAgICAgZXZlbnRDb3VudCsrOworICAgICAgICAgICAgICAgIGlmIChldmVu
dENvdW50ID09PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ0xpc3RlbmVycygxKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCIiKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgYWRkQXR0cmlidXRlKCJvbmxvYWQiLCAyKTsKKyAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudENv
dW50ID09PSAyKQorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQXR0cmli
dXRlIGV2ZW50IGxpc3RlbmVyIHJlcGxhY2VkLiIpOworICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGV2ZW50Q291bnQgPT09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nTGlzdGVuZXJzKDEp
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IiIpOworCisgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVBdHRyaWJ1dGUoIm9ubG9hZCIp
OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2
ZW50Q291bnQgPT09IDQpCisgICAgICAgICAgICAgICAgICAgIGxvZ0xpc3RlbmVycygwKS50aGVu
KHJlc29sdmUsIHJlamVjdCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICByZWplY3QoIkV2ZW50IGxpc3RlbmVycyBjaGFuZ2VkIHRvbyBtYW55IHRpbWVzLiIpOwor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGFkZEF0dHJpYnV0ZSgib25sb2FkIiwgMSk7
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1
bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7CisgICAgICAgIG5vZGUgPSBkb2N1bWVudE5vZGU7CisK
KyAgICAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CisgICAgfSk7Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0aW5n
IGV2ZW50cyBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyBldmVudCBsaXN0ZW5lcnMuPC9wPgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>