<?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>151157</bug_id>
          
          <creation_ts>2015-11-11 14:50:38 -0800</creation_ts>
          <short_desc>Web Inspector: yank/kill shortcuts (CTRL+Y, K) don&apos;t work in Console / QuickConsole</short_desc>
          <delta_ts>2015-11-19 15:00:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>151300</dependson>
          <blocked>151312</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>ap</cc>
    
    <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1141231</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-11 14:50:38 -0800</bug_when>
    <thetext>SUMMARY:

Yanking and killing doesn&apos;t work correctly in Web Inspector console. In particular, it seems Kill (CTRL+K) will clear the line but not put the text into the pasteboard. You can kill text from a search box and yank it into the console, and it works correctly. I don&apos;t know if this is inspector accidentally preventing default, or an editing bug.

STEPS TO REPRODUCE:

* Open the inspector
* Type some text in the console at the bottom
* Place caret at start of line (CTRL+A)
* Kill the text (CTRL+K)
* Yank the text (CTRL+Y)

EXPECTED:

The same killed text should be placed back into the console.

ACTUAL:

Any previously-killed text is yanked into place, or nothing if the kill pasteboard is empty.

NOTES:

I don&apos;t know if this ever worked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141232</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-11-11 14:51:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/23506965&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141233</commentid>
    <comment_count>2</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-11 14:53:39 -0800</bug_when>
    <thetext>To clarify, yank/kill doesn&apos;t use a system pasteboard, it&apos;s implemented by editor commands executeYank etc in EditorComand.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141234</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-11-11 14:53:53 -0800</bug_when>
    <thetext>&lt;rdar://problem/23507024&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141250</commentid>
    <comment_count>4</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-11 15:24:28 -0800</bug_when>
    <thetext>Nikita suspects that this is a CodeMirror issue. We may simply not have those shortcut bindings implemented. We need to expose kill/yank in InspectorFrontendHost to have a consistent yank/kill experience across Web Inspector&apos;s native controls (&lt;input type=search&gt;) and CodeMirror instances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141296</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-11 17:02:01 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Nikita suspects that this is a CodeMirror issue. We may simply not have
&gt; those shortcut bindings implemented. We need to expose kill/yank in
&gt; InspectorFrontendHost to have a consistent yank/kill experience across Web
&gt; Inspector&apos;s native controls (&lt;input type=search&gt;) and CodeMirror instances.

CodeMirror implements CTRL + K entirely within the editor by removing some text from the editor. It doesn&apos;t handle CTRL + Y on Mac (it&apos;s redo on Windows). Since WebCore editing didn&apos;t handle the kill, it yanks old text if it had any but never gets kills done in CodeMirror. I think we can add a host function to tell WebCore about the killed text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141390</commentid>
    <comment_count>6</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-11 22:09:57 -0800</bug_when>
    <thetext>I have a fix in the works, going to try to write a test for the non-CodeMirror parts tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142057</commentid>
    <comment_count>7</comment_count>
      <attachid>265546</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-14 11:06:19 -0800</bug_when>
    <thetext>Created attachment 265546
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142058</commentid>
    <comment_count>8</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-14 11:08:36 -0800</bug_when>
    <thetext>Ryosuke, could you take a look at the changes to WebCore::Editor? I believe that the changes should reflect the refactor we discussed, but let me know if anything is wrong.

Joe, you are probably best to look at the Inspector side, since I already explained most of the bug to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142074</commentid>
    <comment_count>9</comment_count>
      <attachid>265546</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-14 16:46:59 -0800</bug_when>
    <thetext>Comment on attachment 265546
Proposed Fix

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

&gt; Source/WebCore/ChangeLog:21
&gt; +        No new tests, because we need to use both InspectorFrontendHost
&gt; +        and TestRunner.execCommand, but the latter is not available in
&gt; +        the inspector context where we would need to simulate a kill.

Isn’t that fixable?

&gt; Source/WebCore/ChangeLog:22
&gt; +        Editor refactorings are covered by existing tests.

I do not think that we have kill/yank tests that sufficiently cover the refactoring. I can only find a single test calling the &quot;yank&quot; command; seems unlikely that this is sufficient coverage. For example, I believe there is code here that runs only when the delete key is pressed and other code that runs only when the forward delete key is pressed.

&gt; Source/WebCore/editing/Editor.h:339
&gt; +    void addRangeToKillRing(Range*);

Since we are touching this function, I suggest making it take a Range&amp; rather than a Range* as we would have done in new code.

&gt; Source/WebCore/editing/Editor.h:341
&gt; +    void addTextToKillRing(const String&amp;, bool shouldStartNewSequence = false);
&gt; +    void setStartNewKillRingSequence(bool);

I don’t think we need both a “shouldStartNewSequence” boolean argument *and* a setStartNewKillRingSequence function. We should have the caller use setStartNewKillRingSequence instead of passing a boolean.

&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:272
&gt; +    m_frontendPage-&gt;focusController().focusedOrMainFrame().editor().addTextToKillRing(text, shouldStartNewSequence);

Given that this class has a disconnectClient function, I’m surprised that functions like this don’t check m_frontendPage for null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142110</commentid>
    <comment_count>10</comment_count>
      <attachid>265546</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-14 23:58:38 -0800</bug_when>
    <thetext>Comment on attachment 265546
Proposed Fix

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

&gt;&gt; Source/WebCore/ChangeLog:21
&gt;&gt; +        the inspector context where we would need to simulate a kill.
&gt; 
&gt; Isn’t that fixable?

It would require very significant refactoring of the test infrastructure, and we haven&apos;t needed it for anything else so far. My understanding is that EventSender, TestRunner and friends are installed in a WebProcess through the InjectedBundle provided by WebKitTestRunner. But, the Inspector context is its own WKWebView, which doesn&apos;t really have an injected bundle.

When it becomes possible to write UI tests via via UIScriptController or WebDriver, then this point will be moot; in that case, we can simulate raw user keystrokes into the inspector (ctrl-k, ctrl-y, etc) without using execCommand.

&gt;&gt; Source/WebCore/ChangeLog:22
&gt;&gt; +        Editor refactorings are covered by existing tests.
&gt; 
&gt; I do not think that we have kill/yank tests that sufficiently cover the refactoring. I can only find a single test calling the &quot;yank&quot; command; seems unlikely that this is sufficient coverage. For example, I believe there is code here that runs only when the delete key is pressed and other code that runs only when the forward delete key is pressed.

I agree that WebKit has poor coverage of editor commands that can lead to a kill in the kill ring, such as {backward,forward} delete {word, paragraph, line}. For the commands that have key bindings in Safari, I manually verified that there was no behavior change.

Since kills are only ever appended, it was my judgement that a test for just one of these code paths is sufficient for coverage of the kill ring&apos;s append / yank behavior. We seem to have the following tests specifically to yank / verify what&apos;s in the kill ring:

* LayoutTests/editing/pasteboard/emacs-ctrl-a-k-y.html
* LayoutTests/editing/pasteboard/emacs-ctrl-k-with-move.html

Other deletion-related editing tests could be improved to assert the contents of the kill ring, but I propose we make that a separate task so that this patch doesn&apos;t rot.

&gt;&gt; Source/WebCore/editing/Editor.h:339
&gt;&gt; +    void addRangeToKillRing(Range*);
&gt; 
&gt; Since we are touching this function, I suggest making it take a Range&amp; rather than a Range* as we would have done in new code.

I was inclined to agree, but it seems there&apos;s no guarantee that the range (coming from RefPtr) is actually non-null. plainText() takes a pointer and handles the null case, so we would null-check it then immediately pass a pointer again. Someone with more background in TextIterator should do that cleanup.

&gt;&gt; Source/WebCore/editing/Editor.h:341
&gt;&gt; +    void setStartNewKillRingSequence(bool);
&gt; 
&gt; I don’t think we need both a “shouldStartNewSequence” boolean argument *and* a setStartNewKillRingSequence function. We should have the caller use setStartNewKillRingSequence instead of passing a boolean.

That&apos;s a good point. Will fix.

&gt;&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:272
&gt;&gt; +    m_frontendPage-&gt;focusController().focusedOrMainFrame().editor().addTextToKillRing(text, shouldStartNewSequence);
&gt; 
&gt; Given that this class has a disconnectClient function, I’m surprised that functions like this don’t check m_frontendPage for null.

The Page represented by m_frontendPage always exists when these methods are called by frontend code, because that is the page which is making the call to killText. 

However, the pointer could have been nulled out for other reasons, so I agree that these should all be null-checking m_frontendPage or m_client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142160</commentid>
    <comment_count>11</comment_count>
      <attachid>265546</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-15 22:31:42 -0800</bug_when>
    <thetext>Comment on attachment 265546
Proposed Fix

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:22
&gt;&gt;&gt; +        Editor refactorings are covered by existing tests.
&gt;&gt; 
&gt;&gt; I do not think that we have kill/yank tests that sufficiently cover the refactoring. I can only find a single test calling the &quot;yank&quot; command; seems unlikely that this is sufficient coverage. For example, I believe there is code here that runs only when the delete key is pressed and other code that runs only when the forward delete key is pressed.
&gt; 
&gt; I agree that WebKit has poor coverage of editor commands that can lead to a kill in the kill ring, such as {backward,forward} delete {word, paragraph, line}. For the commands that have key bindings in Safari, I manually verified that there was no behavior change.
&gt; 
&gt; Since kills are only ever appended, it was my judgement that a test for just one of these code paths is sufficient for coverage of the kill ring&apos;s append / yank behavior. We seem to have the following tests specifically to yank / verify what&apos;s in the kill ring:
&gt; 
&gt; * LayoutTests/editing/pasteboard/emacs-ctrl-a-k-y.html
&gt; * LayoutTests/editing/pasteboard/emacs-ctrl-k-with-move.html
&gt; 
&gt; Other deletion-related editing tests could be improved to assert the contents of the kill ring, but I propose we make that a separate task so that this patch doesn&apos;t rot.

After further thinking about your comment, I convinced myself i was overlooking something, then I discovered https://bugs.webkit.org/show_bug.cgi?id=151300. So you are totally correct, however I don&apos;t think it should be addressed in this patch. I will add a note to the changelog.

&gt; Source/WebCore/ChangeLog:35
&gt; +            Remove the bool &apos;prepend&apos; argument, since it&apos;s always false.

Per discovery in https://bugs.webkit.org/show_bug.cgi?id=151300, I will revert this part of the patch and submit a test case for that code path as part of that bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143389</commentid>
    <comment_count>12</comment_count>
      <attachid>265884</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-19 12:37:52 -0800</bug_when>
    <thetext>Created attachment 265884
Rebased Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143440</commentid>
    <comment_count>13</comment_count>
      <attachid>265884</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-11-19 14:13:16 -0800</bug_when>
    <thetext>Comment on attachment 265884
Rebased Patch

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

r=me, Sounds good.

&gt; Source/WebInspectorUI/UserInterface/Views/CodeMirrorEditor.js:33
&gt; +        // Set up default controllers that should be present for
&gt; +        // all CodeMirror editor instances.

This comment seems unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143462</commentid>
    <comment_count>14</comment_count>
      <attachid>265884</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-19 15:00:45 -0800</bug_when>
    <thetext>Comment on attachment 265884
Rebased Patch

Clearing flags on attachment: 265884

Committed r192662: &lt;http://trac.webkit.org/changeset/192662&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143463</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-19 15:00:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265546</attachid>
            <date>2015-11-14 11:06:19 -0800</date>
            <delta_ts>2015-11-19 12:37:49 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-151157-20151114110611.patch</filename>
            <type>text/plain</type>
            <size>27072</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk3N2UyMTI0MjJjYTIy
MmUzZDI2ZjIwYWY0NDkzYzAwN2MzN2MyYi4uOWIwNjYzYjQzN2ZjM2QyN2NjMWQzNGNmMjI2MjEy
MGY2ZjNjZDk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE1LTExLTE0ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHlhbmsv
a2lsbCBzaG9ydGN1dHMgKENUUkwrWSwgSykgZG9uJ3Qgd29yayBpbiBDb25zb2xlIC8gUXVpY2tD
b25zb2xlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTExNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
b2RlTWlycm9yIG1haW50YWlucyBpdHMgb3duIGVkaXRvciBidWZmZXIgYW5kIGltcGxlbWVudHMg
aXRzIG93bgorICAgICAgICBga2lsbExpbmVgIGNvbW1hbmQgYnV0IGRvZXNuJ3QgaW1wbGVtZW50
IHRoZSB5YW5rIGNvbW1hbmQuIFNvLCB0ZXh0CisgICAgICAgIHRoYXQgaXMgImtpbGxlZCIgd2l0
aCBDVFJMLWsgaW5zaWRlIGEgQ29kZU1pcnJvciBpbnN0YW5jZSBpc24ndAorICAgICAgICBhZGRl
ZCB0byBFZGl0b3IncyBraWxsIHJpbmcuIFN1YnNlcXVlbnQgeWFuayBjb21tYW5kcyB3b24ndCBt
YXRjaAorICAgICAgICB1cCB3aXRoIHRoZSBraWxsZWQgdGV4dCwgaW5zdGVhZCByZXR1cm5pbmcg
dGV4dCBmcm9tIGEgcHJpb3Iga2lsbAorICAgICAgICB0aGF0IHdhcyBoYW5kbGVkIGJ5IEVkaXRv
ciAoaS5lLiwgaW4gYSBjb250ZW50ZWRpdGFibGUgb3IgZm9ybSBpbnB1dCkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhZGRzIGEgaG9zdCBmdW5jdGlvbiBzbyB0aGF0IHRoZSBJbnNwZWN0b3IgZnJv
bnRlbmQgY2FuCisgICAgICAgIGFwcGVuZCAibWlzc2VkIiBraWxsZWQgdGV4dCB0byBFZGl0b3In
cyBraWxsIHJpbmcuIFN1YnNlcXVlbnQKKyAgICAgICAgeWFua3MgaGFuZGxlZCBieSBFZGl0b3Ig
d2lsbCB0aGVuIG1hdGNoIHRoZSB0ZXh0IGtpbGxlZCBieSBDb2RlTWlycm9yLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgYmVjYXVzZSB3ZSBuZWVkIHRvIHVzZSBib3RoIEluc3BlY3RvckZyb250
ZW5kSG9zdAorICAgICAgICBhbmQgVGVzdFJ1bm5lci5leGVjQ29tbWFuZCwgYnV0IHRoZSBsYXR0
ZXIgaXMgbm90IGF2YWlsYWJsZSBpbgorICAgICAgICB0aGUgaW5zcGVjdG9yIGNvbnRleHQgd2hl
cmUgd2Ugd291bGQgbmVlZCB0byBzaW11bGF0ZSBhIGtpbGwuCisgICAgICAgIEVkaXRvciByZWZh
Y3RvcmluZ3MgYXJlIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5jcHA6CisKKyAgICAgICAgICAgIERpc2FtYmlndWF0ZSB3aGV0aGVyIGEgcmFu
Z2Ugb3IgcGxhaW4gdGV4dCBpcyBiZWluZyBhZGRlZC4KKworICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGVy
Zm9ybURlbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFkZFJhbmdlVG9LaWxsUmlu
Zyk6IFJlbmFtZWQgZnJvbSBhZGRUb0tpbGxSaW5nLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjphZGRUZXh0VG9LaWxsUmluZyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjph
ZGRUb0tpbGxSaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorCisg
ICAgICAgICAgICBSZW1vdmUgdGhlIGJvb2wgJ3ByZXBlbmQnIGFyZ3VtZW50LCBzaW5jZSBpdCdz
IGFsd2F5cyBmYWxzZS4KKworICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6a2lsbFRleHQpOgorCisgICAgICAgICAgICBB
ZGRlZC4gVGhpcyBhcHBlbmRzIHRoZSBraWxsZWQgdGV4dCB0byB0aGUga2lsbCByaW5nLCBzdGFy
dGluZworICAgICAgICAgICAgYSBuZXcgc2VxdWVuY2UgaWYgbmVjZXNzYXJ5LiBVbmxpa2UgRWRp
dG9yLCBJbnNwZWN0b3Igd2FpdHMKKyAgICAgICAgICAgIHVudGlsIHRoZSBuZXh0IGtpbGwgY29t
bWFuZCB0byBjbGVhciB0aGUgZXhpc3Rpbmcgc2VxdWVuY2UuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5pZGw6CisKIDIwMTUtMTEtMTQgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxl
LmNvbT4KIAogICAgICAgICBBWDogYWRkIGEgbmV3IHRyYWl0IGZvciBlbGVtZW50cyBpbiBmaWVs
ZHNldCBvbiBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDA1OTdiZjU2NTViMjY2YTEz
MTE5ZWNlMDE2MzZlZGFmYzY0OGVhODkuLjc0ZjM4YjA0Zjc5MzRjODYxZGNiZjllNjMyMTExYTQ2
NWRmYTQ5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE1
LTExLTE0ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHlhbmsva2lsbCBzaG9ydGN1dHMgKENUUkwrWSwgSykgZG9uJ3Qgd29yayBpbiBDb25z
b2xlIC8gUXVpY2tDb25zb2xlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTExNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDb2RlTWlycm9yIG1haW50YWlucyBpdHMgb3duIGVkaXRvciBidWZmZXIgYW5k
IGltcGxlbWVudHMgaXRzIG93bgorICAgICAgICBga2lsbExpbmVgIGNvbW1hbmQgYnV0IGRvZXNu
J3QgaW1wbGVtZW50IHRoZSB5YW5rIGNvbW1hbmQuIFNvLCB0ZXh0CisgICAgICAgIHRoYXQgaXMg
ImtpbGxlZCIgd2l0aCBDVFJMLWsgaW5zaWRlIGEgQ29kZU1pcnJvciBpbnN0YW5jZSBpc24ndAor
ICAgICAgICBhZGRlZCB0byBXZWJDb3JlJ3Mga2lsbCByaW5nLiBTdWJzZXF1ZW50IHlhbmsgY29t
bWFuZHMgd29uJ3QgbWF0Y2gKKyAgICAgICAgdXAgd2l0aCB0aGUga2lsbGVkIHRleHQsIGluc3Rl
YWQgcmV0dXJuaW5nIHRleHQgZnJvbSBhIHByaW9yIGtpbGwKKyAgICAgICAgdGhhdCB3YXMgaGFu
ZGxlZCBieSBXZWJDb3JlIChpLmUuLCBpbiBhIGNvbnRlbnRlZGl0YWJsZSBvciBmb3JtIGlucHV0
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBob3N0IGZ1bmN0aW9uIHNvIHRoYXQgdGhl
IEluc3BlY3RvciBmcm9udGVuZCBjYW4KKyAgICAgICAgYXBwZW5kICJtaXNzZWQiIGtpbGxlZCB0
ZXh0IHRvIFdlYkNvcmUncyBraWxsIHJpbmcuIFN1YnNlcXVlbnQKKyAgICAgICAgeWFua3MgaGFu
ZGxlZCBieSBXZWJDb3JlIHdpbGwgdGhlbiBtYXRjaCB0aGUgdGV4dCBraWxsZWQgYnkgQ29kZU1p
cnJvci4KKworICAgICAgICBJbiB0aGUgZnJvbnRlbmQsIHdlIGltcGxlbWVudCBvdXIgb3duIGtl
eSBiaW5kaW5nIGhhbmRsZXIgZm9yCisgICAgICAgIENUUkwtayB0aGF0IGNhcHR1cmVzIGtpbGxl
ZCB0ZXh0LCBkZXRlY3RzIHdoZXRoZXIgdGhlIGtpbGwKKyAgICAgICAgc2hvdWxkIHN0YXJ0IGEg
bmV3IHNlcXVlbmNlLCBhbmQgc2VuZHMgaXQgdG8gV2ViQ29yZS4gQmVjYXVzZSB0aGlzCisgICAg
ICAgIGludm9sdmVzIHNldmVyYWwgZmxhZ3MgYW5kIGxpc3RlbmVycywgYW5kIHdlIHdhbnQgdGhp
cyBiZWhhdmlvciBmb3IKKyAgICAgICAgYWxsIGVkaXRhYmxlIENvZGVNaXJyb3IgaW5zdGFuY2Vz
LCB0aGUga2lsbC15YW5rIGhhbmRsaW5nIGlzCisgICAgICAgIGZhY3RvcmVkIGludG8gaXRzIG93
biBDb2RlTWlycm9yS2lsbEFuZFlhbmtDb250cm9sbGVyLgorCisgICAgICAgIFRvIGFkZCB0aGlz
IGJlaGF2aW9yIHRvIGFsbCBpbnN0YW5jZXMsIHRoaXMgcGF0Y2ggY2VudHJhbGl6ZXMgdGhlCisg
ICAgICAgIGNvZGUgdGhhdCBjb25zdHJ1Y3RzIGEgYmFzZSBDb2RlTWlycm9yIGluc3RhbmNlLCBh
bmQgYXR0YWNoZXMgdGhlCisgICAgICAgIENvZGVNaXJyb3JLaWxsQW5kWWFua0NvbnRyb2xsZXIg
dG8gYWxsIGluc3RhbmNlcy4gVGhlIHNob3J0Y3V0CisgICAgICAgIGRvZXMgbm90aGluZyB3aGVu
IGl0cyBDb2RlTWlycm9yIGluc3RhbmNlIGlzIHJlYWQtb25seS4KKworICAgICAgICBUaGUgcGFy
dGljdWxhcnMgb2YgdGhlIGtpbGwteWFuayBjb250cm9sbGVyIGFyZSBkb2N1bWVudGVkIGlubGlu
ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGJlY2F1c2Ugd2UgbmVlZCB0byB1c2UgYm90aCBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QKKyAgICAgICAgYW5kIFRlc3RSdW5uZXIuZXhlY0NvbW1hbmQs
IGJ1dCB0aGUgbGF0dGVyIGlzIG5vdCBhdmFpbGFibGUgaW4KKyAgICAgICAgdGhlIGluc3BlY3Rv
ciBjb250ZXh0IHdoZXJlIHdlIHdvdWxkIG5lZWQgdG8gc2ltdWxhdGUgYSBraWxsLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yS2lsbEFuZFlhbmtDb250
cm9sbGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yS2lsbEFu
ZFlhbmtDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yS2lsbEFu
ZFlhbmtDb250cm9sbGVyLnByb3RvdHlwZS5faGFuZGxlS2lsbExpbmUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvZGVNaXJyb3JLaWxsQW5kWWFua0NvbnRyb2xsZXIucHJvdG90eXBlLl9oYW5k
bGVUZXh0Q2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yS2lsbEFuZFlh
bmtDb250cm9sbGVyLnByb3RvdHlwZS5faGFuZGxlRWRpdG9yQmx1cik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29kZU1pcnJvcktpbGxBbmRZYW5rQ29udHJvbGxlci5wcm90b3R5cGUuX2hhbmRs
ZVNlbGVjdGlvbk9yQ2FyZXRDaGFuZ2UpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0U3R1Yi5qczoKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV2ViSW5z
cGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLmtpbGxUZXh0KTogQWRk
IGEgc3R1YiB0byBhdm9pZCBjaGVjay1iZWZvcmUtdXNlLgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludEFjdGlvblZpZXcucHJvdG90eXBlLl91cGRhdGVCb2R5KToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JFZGl0b3IuanM6IEFkZGVkLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0b3IuY3JlYXRlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db2RlTWlycm9yRWRpdG9yKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbnNvbGVQcm9tcHQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVByb21w
dCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TY29wZUNoYWluRGV0YWlsc1NpZGVi
YXJQYW5lbC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvcik6CisKIDIwMTUtMTEtMTIgIE1hdHQg
QmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERl
bGV0aW5nIGEgcHJvYmUgc2hvdWxkIHJlbW92ZSBwcm9iZSBicmVha3BvaW50IGFjdGlvbnMgb25s
eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBjZjFiZTJhYmU2NGZhNzQ2YWU2YjEw
NWI0NjQxNzgwYjc0NTBlNTNiLi5hOTNjMDViOWJlYzVkYWFiYmFlNzUzOTU3NjJjMjUzMGJjNmYy
ZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgYm9v
bCBFZGl0b3I6OmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlv
biwgVGV4dEdyYW51bGFyaXR5IGcKICAgICAgICAgICAgIHJldmVhbFNlbGVjdGlvbkFmdGVyRWRp
dGluZ09wZXJhdGlvbigpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGtpbGxS
aW5nKQotICAgICAgICAgICAgICAgIGFkZFRvS2lsbFJpbmcoc2VsZWN0ZWRSYW5nZSgpLmdldCgp
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgYWRkUmFuZ2VUb0tpbGxSaW5nKHNlbGVjdGVkUmFu
Z2UoKS5nZXQoKSk7CiAgICAgICAgICAgICBkZWxldGVTZWxlY3Rpb25XaXRoU21hcnREZWxldGUo
Y2FuU21hcnRDb3B5T3JEZWxldGUoKSk7CiAgICAgICAgICAgICAvLyBJbXBsaWNpdGx5IGNhbGxz
IHJldmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigpLgogICAgICAgICB9CkBAIC0x
MzM0LDcgKzEzMzQsNyBAQCB2b2lkIEVkaXRvcjo6cGVyZm9ybURlbGV0ZSgpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhZGRUb0tpbGxSaW5nKHNlbGVjdGVkUmFuZ2UoKS5nZXQoKSwg
ZmFsc2UpOworICAgIGFkZFJhbmdlVG9LaWxsUmluZyhzZWxlY3RlZFJhbmdlKCkuZ2V0KCkpOwog
ICAgIGRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShjYW5TbWFydENvcHlPckRlbGV0ZSgp
KTsKIAogICAgIC8vIGNsZWFyIHRoZSAic3RhcnQgbmV3IGtpbGwgcmluZyBzZXF1ZW5jZSIgc2V0
dGluZywgYmVjYXVzZSBpdCB3YXMgc2V0IHRvIHRydWUKQEAgLTI4NDcsMTYgKzI4NDcsMTcgQEAg
dm9pZCBFZGl0b3I6OnRyYW5zcG9zZSgpCiAgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHRy
YW5zcG9zZWQsIGZhbHNlLCBmYWxzZSwgRWRpdEFjdGlvbkluc2VydCk7CiB9CiAKLXZvaWQgRWRp
dG9yOjphZGRUb0tpbGxSaW5nKFJhbmdlKiByYW5nZSwgYm9vbCBwcmVwZW5kKQordm9pZCBFZGl0
b3I6OmFkZFJhbmdlVG9LaWxsUmluZyhSYW5nZSogcmFuZ2UpCiB7Ci0gICAgaWYgKG1fc2hvdWxk
U3RhcnROZXdLaWxsUmluZ1NlcXVlbmNlKQotICAgICAgICBraWxsUmluZygpLnN0YXJ0TmV3U2Vx
dWVuY2UoKTsKKyAgICBhZGRUZXh0VG9LaWxsUmluZyhwbGFpblRleHQocmFuZ2UpKTsKK30KIAot
ICAgIFN0cmluZyB0ZXh0ID0gcGxhaW5UZXh0KHJhbmdlKTsKLSAgICBpZiAocHJlcGVuZCkKLSAg
ICAgICAga2lsbFJpbmcoKS5wcmVwZW5kKHRleHQpOwotICAgIGVsc2UKLSAgICAgICAga2lsbFJp
bmcoKS5hcHBlbmQodGV4dCk7Cit2b2lkIEVkaXRvcjo6YWRkVGV4dFRvS2lsbFJpbmcoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBib29sIHNob3VsZFN0YXJ0TmV3U2VxdWVuY2UpCit7CisgICAgaWYgKG1f
c2hvdWxkU3RhcnROZXdLaWxsUmluZ1NlcXVlbmNlIHx8IHNob3VsZFN0YXJ0TmV3U2VxdWVuY2Up
CisgICAgICAgIGtpbGxSaW5nKCkuc3RhcnROZXdTZXF1ZW5jZSgpOworICAgIAorICAgIGtpbGxS
aW5nKCkuYXBwZW5kKHRleHQpOwogICAgIG1fc2hvdWxkU3RhcnROZXdLaWxsUmluZ1NlcXVlbmNl
ID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDllNmQ3ODBjZmFjZTgy
MDA5MjFkYzlkNmE0YWNlODRjYjkyYmIzNDMuLjE2MGE0YzA3YzhiYTExNGU0ZTQwMmU3YTA4MjE4
MDA1ODg3NDk5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMzE1LDggKzMxNSw2IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElnbm9yZUNvbXBvc2l0aW9uU2Vs
ZWN0aW9uQ2hhbmdlKGJvb2wsIFJldmVhbFNlbGVjdGlvbiBzaG91bGRSZXZlYWxFeGlzdGluZ1Nl
bGVjdGlvbiA9IFJldmVhbFNlbGVjdGlvbjo6WWVzKTsKICAgICBib29sIGlnbm9yZUNvbXBvc2l0
aW9uU2VsZWN0aW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVDb21wb3NpdGlvblNl
bGVjdGlvbkNoYW5nZTsgfQogCi0gICAgdm9pZCBzZXRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2Uo
Ym9vbCk7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvclBv
aW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCk7CiAKICAgICB2b2lkIGNsZWFyKCk7CkBA
IC0zMzgsNyArMzM2LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGlj
dGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQoY29uc3QgVmVjdG9yPFZlY3RvcjxTdHJpbmc+
PiYgZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSwgRWxlbWVudCYpOwog
I2VuZGlmCiAgICAgCi0gICAgdm9pZCBhZGRUb0tpbGxSaW5nKFJhbmdlKiwgYm9vbCBwcmVwZW5k
KTsKKyAgICB2b2lkIGFkZFJhbmdlVG9LaWxsUmluZyhSYW5nZSopOworICAgIHZvaWQgYWRkVGV4
dFRvS2lsbFJpbmcoY29uc3QgU3RyaW5nJiwgYm9vbCBzaG91bGRTdGFydE5ld1NlcXVlbmNlID0g
ZmFsc2UpOworICAgIHZvaWQgc2V0U3RhcnROZXdLaWxsUmluZ1NlcXVlbmNlKGJvb2wpOwogCiAg
ICAgdm9pZCBzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoKTsKICAgICAvLyBJZiB1c2VyIGNv
bmZpcm1lZCBhIGNvcnJlY3Rpb24gaW4gdGhlIGNvcnJlY3Rpb24gcGFuZWwsIGNvcnJlY3Rpb24g
aGFzIG5vbi16ZXJvIGxlbmd0aCwgb3RoZXJ3aXNlIGl0IG1lYW5zIHRoYXQgdXNlciBoYXMgZGlz
bWlzc2VkIHRoZSBwYW5lbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3Bw
CmluZGV4IGYwNzQ0NDhhNjllMmVjMDJmMDNiMWQ5NGVhMjYyMjcwZmI4MzBkODcuLjU0ZTllOWVm
YTViNjRkMDIxNzM4YTcxZjJlY2ZkMDc0OGY0MzUyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UeXBpbmdDb21tYW5kLmNwcApAQCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQgVHlwaW5nQ29tbWFu
ZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2ls
bFJpbmcpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoa2lsbFJpbmcpCi0gICAgICAg
IGZyYW1lLmVkaXRvcigpLmFkZFRvS2lsbFJpbmcoc2VsZWN0aW9uVG9EZWxldGUudG9Ob3JtYWxp
emVkUmFuZ2UoKS5nZXQoKSwgZmFsc2UpOworICAgICAgICBmcmFtZS5lZGl0b3IoKS5hZGRSYW5n
ZVRvS2lsbFJpbmcoc2VsZWN0aW9uVG9EZWxldGUudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7
CiAgICAgLy8gTWFrZSB1bmRvIHNlbGVjdCBldmVyeXRoaW5nIHRoYXQgaGFzIGJlZW4gZGVsZXRl
ZCwgdW5sZXNzIGFuIHVuZG8gd2lsbCB1bmRvIG1vcmUgdGhhbiBqdXN0IHRoaXMgZGVsZXRpb24u
CiAgICAgLy8gRklYTUU6IFRoaXMgYmVoYXZlcyBsaWtlIFRleHRFZGl0IGV4Y2VwdCBmb3IgdGhl
IGNhc2Ugd2hlcmUgeW91IG9wZW4gd2l0aCB0ZXh0IGluc2VydGlvbiBhbmQgdGhlbiBkZWxldGUK
ICAgICAvLyBtb3JlIHRleHQgdGhhbiB5b3UgaW5zZXJ0LiAgSW4gdGhhdCBjYXNlIGFsbCBvZiB0
aGUgdGV4dCB0aGF0IHdhcyBhcm91bmQgb3JpZ2luYWxseSBzaG91bGQgYmUgc2VsZWN0ZWQuCkBA
IC02MjksNyArNjI5LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJl
c3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2kKICAgICAgICAgcmV0dXJu
OwogICAgICAgICAKICAgICBpZiAoa2lsbFJpbmcpCi0gICAgICAgIGZyYW1lLmVkaXRvcigpLmFk
ZFRvS2lsbFJpbmcoc2VsZWN0aW9uVG9EZWxldGUudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwg
ZmFsc2UpOworICAgICAgICBmcmFtZS5lZGl0b3IoKS5hZGRSYW5nZVRvS2lsbFJpbmcoc2VsZWN0
aW9uVG9EZWxldGUudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAgICAgLy8gbWFrZSB1bmRv
IHNlbGVjdCB3aGF0IHdhcyBkZWxldGVkCiAgICAgc2V0U3RhcnRpbmdTZWxlY3Rpb24oc2VsZWN0
aW9uQWZ0ZXJVbmRvKTsKICAgICBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9u
KHNlbGVjdGlvblRvRGVsZXRlLCBtX3NtYXJ0RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggNjBiMjZiODRhODVi
NWIwYmVhMmFmNDIzMGRmMzViMGI0MDJlMWZhZC4uODQ0ODg1YjY0NjIyNDc2Y2RkMTRmMTQwMjE5
NTRmY2RlMzIwZGQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTM2LDcgKzM2LDkgQEAKICNpbmNsdWRlICJDb250ZXh0
TWVudVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFdmVudC5oIgorI2lu
Y2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgogI2luY2x1ZGUgIkpTTWFpblRocmVh
ZEV4ZWNTdGF0ZS5oIgpAQCAtMjY1LDYgKzI2NywxMSBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5k
SG9zdDo6Y29weVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIFBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckNvcHlBbmRQYXN0ZSgpLT53cml0ZVBsYWluVGV4dCh0ZXh0LCBQYXN0ZWJvYXJkOjpDYW5u
b3RTbWFydFJlcGxhY2UpOwogfQogCit2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6a2lsbFRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNob3VsZFN0YXJ0TmV3U2VxdWVuY2UpCit7Cisg
ICAgbV9mcm9udGVuZFBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
LmVkaXRvcigpLmFkZFRleHRUb0tpbGxSaW5nKHRleHQsIHNob3VsZFN0YXJ0TmV3U2VxdWVuY2Up
OworfQorCiB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6b3BlbkluTmV3VGFiKGNvbnN0IFN0
cmluZyYgdXJsKQogewogICAgIGlmIChtX2NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCBiMTk5MjViYzQ2YTUxODg4NjU4
NjZmNzJmNTlmZjdkNWE4YzM0NzMyLi4yYTRiZDJhMDhjYzdkOWQ5ZmFhMWNlMzI5ODExNjcwOGU1
MjcyZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kSG9zdC5oCkBAIC03Niw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgcG9ydCgpOwog
CiAgICAgdm9pZCBjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpOworICAgIHZvaWQga2lsbFRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNob3VsZFN0YXJ0TmV3U2VxdWVuY2UgPSBmYWxz
ZSk7CiAgICAgdm9pZCBvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIGJvb2wg
Y2FuU2F2ZSgpOwogICAgIHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAppbmRl
eCBkNWM2NTRhYmVmM2U1NWUxYzllZjhhZDA4MzM0ZmZlMWFiZjk1ZWM2Li5lZTY2NGE1OWZmODJh
ZThkMDcyYmNkNzlkYTZhNWFhZTc2Nzc4YTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbApAQCAtNTUsNiArNTUsNyBAQAogICAg
IERPTVN0cmluZyBkZWJ1Z2dhYmxlVHlwZSgpOwogCiAgICAgdm9pZCBjb3B5VGV4dChET01TdHJp
bmcgdGV4dCk7CisgICAgdm9pZCBraWxsVGV4dChET01TdHJpbmcgdGV4dCwgYm9vbGVhbiBzaG91
bGRTdGFydE5ld1NlcXVlbmNlKTsKICAgICB2b2lkIG9wZW5Jbk5ld1RhYihET01TdHJpbmcgdXJs
KTsKICAgICBib29sZWFuIGNhblNhdmUoKTsKICAgICB2b2lkIHNhdmUoRE9NU3RyaW5nIHVybCwg
RE9NU3RyaW5nIGNvbnRlbnQsIGJvb2xlYW4gYmFzZTY0RW5jb2RlZCwgYm9vbGVhbiBmb3JjZVNh
dmVBcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9Db2RlTWlycm9yS2lsbEFuZFlhbmtDb250cm9sbGVyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvcktpbGxBbmRZ
YW5rQ29udHJvbGxlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDBkZTgwODI0NmIwOTc3M2JmOWFmMDk5Y2Qx
MGQ4YjU1ZTM4ODZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvcktpbGxBbmRZYW5rQ29udHJvbGxlci5q
cwpAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5Db2RlTWlycm9y
S2lsbEFuZFlhbmtDb250cm9sbGVyID0gY2xhc3MgQ29kZU1pcnJvcktpbGxBbmRZYW5rQ29udHJv
bGxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rvcihjb2Rl
TWlycm9yKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICBjb25zb2xlLmFzc2Vy
dChjb2RlTWlycm9yKTsKKworICAgICAgICB0aGlzLl9jb2RlTWlycm9yID0gY29kZU1pcnJvcjsK
KyAgICAgICAgdGhpcy5fZXhwZWN0aW5nQ2hhbmdlRXZlbnRGb3JLaWxsID0gZmFsc2U7CisgICAg
ICAgIHRoaXMuX25leHRLaWxsU3RhcnRzTmV3U2VxdWVuY2UgPSB0cnVlOworCisgICAgICAgIHRo
aXMuX2hhbmRsZVRleHRDaGFuZ2VMaXN0ZW5lciA9IHRoaXMuX2hhbmRsZVRleHRDaGFuZ2UuYmlu
ZCh0aGlzKTsKKyAgICAgICAgdGhpcy5faGFuZGxlRWRpdG9yQmx1ckxpc3RlbmVyID0gdGhpcy5f
aGFuZGxlRWRpdG9yQmx1ci5iaW5kKHRoaXMpOworICAgICAgICB0aGlzLl9oYW5kbGVTZWxlY3Rp
b25PckNhcmV0Q2hhbmdlTGlzdGVuZXIgPSB0aGlzLl9oYW5kbGVTZWxlY3Rpb25PckNhcmV0Q2hh
bmdlLmJpbmQodGhpcyk7CisKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5hZGRLZXlNYXAoewor
ICAgICAgICAgICAgIkN0cmwtSyI6IHRoaXMuX2hhbmRsZUtpbGxMaW5lLmJpbmQodGhpcyksCisg
ICAgICAgIH0pOworICAgIH0KKworICAgIF9oYW5kbGVLaWxsTGluZShjb2RlTWlycm9yKQorICAg
IHsKKyAgICAgICAgLy8gUmVhZC1vbmx5IG1vZGUgaXMgZHluYW1pYyBpbiBzb21lIGVkaXRvcnMs
IHNvIGNoZWNrIGV2ZXJ5IHRpbWUKKyAgICAgICAgLy8gYW5kIGlnbm9yZSB0aGUgc2hvcnRjdXQg
aWYgaW4gcmVhZC1vbmx5IG1vZGUuCisgICAgICAgIGlmICh0aGlzLl9jb2RlTWlycm9yLmdldE9w
dGlvbigicmVhZE9ubHkiKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBEb24n
dCBhZGQgdGhlIGxpc3RlbmVyIGlmIGl0J3Mgc3RpbGwgcmVnaXN0ZXJlZCBiZWNhdXNlCisgICAg
ICAgIC8vIGEgcHJldmlvdXMgZW1wdHkga2lsbCBkaWRuJ3QgZ2VuZXJhdGUgY2hhbmdlIGV2ZW50
cy4KKyAgICAgICAgaWYgKCF0aGlzLl9leHBlY3RpbmdDaGFuZ2VFdmVudEZvcktpbGwpCisgICAg
ICAgICAgICBjb2RlTWlycm9yLm9uKCJjaGFuZ2VzIiwgdGhpcy5faGFuZGxlVGV4dENoYW5nZUxp
c3RlbmVyKTsKKworICAgICAgICB0aGlzLl9leHBlY3RpbmdDaGFuZ2VFdmVudEZvcktpbGwgPSB0
cnVlOworICAgICAgICBjb2RlTWlycm9yLmV4ZWNDb21tYW5kKCJraWxsTGluZSIpOworICAgIH0K
KworICAgIF9oYW5kbGVUZXh0Q2hhbmdlKGNvZGVNaXJyb3IsIGNoYW5nZXMpCisgICAgeworICAg
ICAgICB0aGlzLl9jb2RlTWlycm9yLm9mZigiY2hhbmdlcyIsIHRoaXMuX2hhbmRsZVRleHRDaGFu
Z2VMaXN0ZW5lcik7CisKKyAgICAgICAgLy8gU29tZXRpbWVzIGEgc2Vjb25kIGNoYW5nZSBldmVu
dCBmaXJlcyBhZnRlciByZW1vdmluZyB0aGUgbGlzdGVuZXIKKyAgICAgICAgLy8gaWYgeW91IHBl
cmZvcm0gYW4gImVtcHR5IGtpbGwiIGFuZCB0eXBlIGFmdGVyIG1vdmluZyB0aGUgY2FyZXQuCisg
ICAgICAgIGlmICghdGhpcy5fZXhwZWN0aW5nQ2hhbmdlRXZlbnRGb3JLaWxsKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2V4cGVjdGluZ0NoYW5nZUV2ZW50Rm9yS2lsbCA9
IGZhbHNlOworCisgICAgICAgIC8vIEl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBnZXQgbW9yZSB0
aGFuIG9uZSBjaGFuZ2UgcGVyIGtpbGwuCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNoYW5nZXMu
bGVuZ3RoID09PSAxKTsKKyAgICAgICAgbGV0IGNoYW5nZSA9IGNoYW5nZXNbMF07CisKKyAgICAg
ICAgLy8gSWYgYW4gImVtcHR5IGtpbGwiIGlzIGZvbGxvd2VkIGJ5IHVwL2Rvd24gb3IgdHlwaW5n
LAorICAgICAgICAvLyB0aGUgZW1wdHkga2lsbCB3b24ndCBmaXJlIGEgY2hhbmdlIGV2ZW50LCB0
aGVuIHdlJ2xsIGdldCBhbgorICAgICAgICAvLyB1bnJlbGF0ZWQgY2hhbmdlIGV2ZW50IHRoYXQg
c2hvdWxkbid0IGJlIHRyZWF0ZWQgYXMgYSBraWxsLgorICAgICAgICBpZiAoY2hhbmdlLm9yaWdp
biAhPT0gIitkZWxldGUiKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIEtpbGxp
bmcgYSBuZXdsaW5lIGJ5IGl0c2VsZiBpcyByZXBvcnRlZCBhcyBkZWxldGlvbiBvZiB0d28KKyAg
ICAgICAgLy8gZW1wdHkgc3RyaW5ncywgc28gY2hlY2sgdGhlIGNoYW5nZSdzIHJhbmdlcyB0byBk
ZXRlY3QgdGhpcy4KKyAgICAgICAgbGV0IGtpbGxlZFRleHQ7CisgICAgICAgIGlmIChjaGFuZ2Uu
dG8ubGluZSA9PT0gY2hhbmdlLmZyb20ubGluZSArIDEpCisgICAgICAgICAgICBraWxsZWRUZXh0
ID0gIlxuIjsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChjaGFu
Z2UucmVtb3ZlZC5sZW5ndGggPT09IDEpOworICAgICAgICAgICAga2lsbGVkVGV4dCA9IGNoYW5n
ZS5yZW1vdmVkWzBdOworICAgICAgICB9CisKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmtpbGxUZXh0KGtpbGxlZFRleHQsIHRoaXMuX25leHRLaWxsU3RhcnRzTmV3U2VxdWVuY2UpOwor
CisgICAgICAgIC8vIElmIHRoZSBlZGl0b3IgbG9zZXMgZm9jdXMgb3IgdGhlIGNhcmV0IC8gc2Vs
ZWN0aW9uIGNoYW5nZXMKKyAgICAgICAgLy8gKG5vdCBhcyBhIHJlc3VsdCBvZiB0aGUga2lsbCks
IHRoZW4gdGhlIG5leHQga2lsbCBzaG91bGQKKyAgICAgICAgLy8gc3RhcnQgYSBuZXcga2lsbCBy
aW5nIHNlcXVlbmNlLgorICAgICAgICB0aGlzLl9uZXh0S2lsbFN0YXJ0c05ld1NlcXVlbmNlID0g
ZmFsc2U7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iub24oImJsdXIiLCB0aGlzLl9oYW5kbGVF
ZGl0b3JCbHVyTGlzdGVuZXIpOworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLm9uKCJjdXJzb3JB
Y3Rpdml0eSIsIHRoaXMuX2hhbmRsZVNlbGVjdGlvbk9yQ2FyZXRDaGFuZ2VMaXN0ZW5lcik7Cisg
ICAgfQorCisgICAgX2hhbmRsZUVkaXRvckJsdXIoY29kZU1pcnJvcikKKyAgICB7CisgICAgICAg
IHRoaXMuX25leHRLaWxsU3RhcnRzTmV3U2VxdWVuY2UgPSB0cnVlOworICAgICAgICB0aGlzLl9j
b2RlTWlycm9yLm9mZigiYmx1ciIsIHRoaXMuX2hhbmRsZUVkaXRvckJsdXJMaXN0ZW5lcik7Cisg
ICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iub2ZmKCJjdXJzb3JBY3Rpdml0eSIsIHRoaXMuX2hhbmRs
ZVNlbGVjdGlvbk9yQ2FyZXRDaGFuZ2VMaXN0ZW5lcik7CisgICAgfQorCisgICAgX2hhbmRsZVNl
bGVjdGlvbk9yQ2FyZXRDaGFuZ2UoY29kZU1pcnJvcikKKyAgICB7CisgICAgICAgIGlmICh0aGlz
Ll9leHBlY3RpbmdDaGFuZ2VFdmVudEZvcktpbGwpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdGhpcy5fbmV4dEtpbGxTdGFydHNOZXdTZXF1ZW5jZSA9IHRydWU7CisgICAgICAgIHRo
aXMuX2NvZGVNaXJyb3Iub2ZmKCJibHVyIiwgdGhpcy5faGFuZGxlRWRpdG9yQmx1ckxpc3RlbmVy
KTsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5vZmYoImN1cnNvckFjdGl2aXR5IiwgdGhpcy5f
aGFuZGxlU2VsZWN0aW9uT3JDYXJldENoYW5nZUxpc3RlbmVyKTsKKyAgICB9Cit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IGRjNjJjMzRj
NzE5MzdlOTQ4NjY2MTE2ZDg3NzI5OThmNmJlNmE1YmQuLjIwZDMwMWUwMjBkMDRmMzgxZWE2MzVl
YTFhYjA5MDgxOTE1MmI4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKQEAgLTQxNyw2ICs0MTcsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9DaGFydERldGFpbHNTZWN0aW9uUm93LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ2x1c3RlckNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ29kZU1pcnJvckFkZGl0aW9ucy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0NvZGVNaXJyb3JFZGl0b3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9Db2RlTWlycm9yRm9ybWF0dGVycy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0NvZGVNaXJyb3JUZXh0TWFya2Vycy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL0NvbG9yUGlja2VyLmpzIj48L3NjcmlwdD4KQEAgLTU5OSw2ICs2MDAsNyBAQAog
ICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Db2RlTWlycm9yRHJhZ1RvQWRqdXN0TnVtYmVy
Q29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0Nv
ZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQ29udHJvbGxlcnMvQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ29kZU1pcnJvcktpbGxB
bmRZYW5rQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xs
ZXJzL0RPTVRyZWVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJv
bGxlcnMvRGFzaGJvYXJkTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNv
bnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVu
ZEhvc3RTdHViLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcwppbmRleCBhYzhhMmMxNjcwOTU4NWFhODYx
MThiYjY1NTJkYzFjZDc1NDNmNGFjLi5hY2U2YmYxYTljN2E0YzgyZGEyOTI3YzA5YWQ0ZjBhMWQy
YjkzNjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kSG9zdFN0dWIu
anMKQEAgLTEyMiw2ICsxMjIsMTAgQEAgaWYgKCF3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0
KSB7CiAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQ2xpcGJvYXJkIGFjY2VzcyBpcyBk
ZW5pZWQiKTsKICAgICAgICAgfSwKIAorICAgICAgICBraWxsVGV4dDogZnVuY3Rpb24odGV4dCwg
c2hvdWxkU3RhcnROZXdTZXF1ZW5jZSkKKyAgICAgICAgeworICAgICAgICB9LAorCiAgICAgICAg
IG9wZW5Jbk5ld1RhYjogZnVuY3Rpb24odXJsKQogICAgICAgICB7CiAgICAgICAgICAgICB3aW5k
b3cub3Blbih1cmwsICJfYmxhbmsiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMK
aW5kZXggOWNmZjg2ZWRhMzAyZGQ1MTM5NTE5ZmFlY2VlMzc3ZDkzZTRjMTYzOS4uN2IwZjE4ZDRi
MTMzZjZhNGMzMWI3OTY4MzBmOGU3ZDViMmYwN2IwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludEFj
dGlvblZpZXcuanMKQEAgLTE0OSw3ICsxNDksNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFj
dGlvblZpZXcgPSBjbGFzcyBCcmVha3BvaW50QWN0aW9uVmlldyBleHRlbmRzIFdlYkluc3BlYwog
ICAgICAgICAgICAgZWRpdG9yRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJicmVha3BvaW50LWFjdGlv
bi1ldmFsLWVkaXRvciIpOwogICAgICAgICAgICAgZWRpdG9yRWxlbWVudC5jbGFzc0xpc3QuYWRk
KFdlYkluc3BlY3Rvci5TeW50YXhIaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lKTsKIAotICAgICAg
ICAgICAgdGhpcy5fY29kZU1pcnJvciA9IENvZGVNaXJyb3IoZWRpdG9yRWxlbWVudCwgeworICAg
ICAgICAgICAgdGhpcy5fY29kZU1pcnJvciA9IFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdG9y
LmNyZWF0ZShlZGl0b3JFbGVtZW50LCB7CiAgICAgICAgICAgICAgICAgbGluZVdyYXBwaW5nOiB0
cnVlLAogICAgICAgICAgICAgICAgIG1vZGU6ICJ0ZXh0L2phdmFzY3JpcHQiLAogICAgICAgICAg
ICAgICAgIGluZGVudFdpdGhUYWJzOiB0cnVlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3Iu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5qcwppbmRleCA4NzI3OWU0N2E4MzM5NzA1YzkwYzYwMGVjNTNi
NTNmZmZiZTUyMjFjLi5lNzM0NWQ4N2Q0ZGExZmQ4Y2ZkZjQ3MWE2ZjA1NzMzNjIxYjYwOGIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NT
dHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwpAQCAt
NDksNyArNDksNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3Ig
PSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogCiAgICAgICAgIHRoaXMuX2Rl
bGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKIAotICAgICAgICB0aGlzLl9jb2RlTWlycm9yID0g
Q29kZU1pcnJvcih0aGlzLmVsZW1lbnQsIHsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvciA9IFdl
Ykluc3BlY3Rvci5Db2RlTWlycm9yRWRpdG9yLmNyZWF0ZSh0aGlzLmVsZW1lbnQsIHsKICAgICAg
ICAgICAgIHJlYWRPbmx5OiB0cnVlLAogICAgICAgICAgICAgbGluZVdyYXBwaW5nOiB0cnVlLAog
ICAgICAgICAgICAgbW9kZTogImNzcy1ydWxlIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JFZGl0b3IuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9yRWRpdG9yLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJmYTExYzE0NzMyMTAzODMzZTVlZDA3YTRjODAxOGFjMzJhMTk1MDEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b2RlTWlycm9yRWRpdG9yLmpzCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNw
ZWN0b3IuQ29kZU1pcnJvckVkaXRvciA9IGNsYXNzIENvZGVNaXJyb3JFZGl0b3IKK3sKKyAgICBz
dGF0aWMgY3JlYXRlKHBsYWNlLCBvcHRpb25zKQorICAgIHsKKyAgICAgICAgbGV0IGNvZGVNaXJy
b3IgPSBuZXcgQ29kZU1pcnJvcihwbGFjZSwgb3B0aW9ucyk7CisKKyAgICAgICAgLy8gU2V0IHVw
IGRlZmF1bHQgY29udHJvbGxlcnMgdGhhdCBzaG91bGQgYmUgcHJlc2VudCBmb3IKKyAgICAgICAg
Ly8gYWxsIENvZGVNaXJyb3IgZWRpdG9yIGluc3RhbmNlcy4KKyAgICAgICAgbmV3IFdlYkluc3Bl
Y3Rvci5Db2RlTWlycm9yS2lsbEFuZFlhbmtDb250cm9sbGVyKGNvZGVNaXJyb3IpOworCisgICAg
ICAgIHJldHVybiBjb2RlTWlycm9yOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db25zb2xlUHJvbXB0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29uc29sZVByb21wdC5qcwppbmRleCA1YmFiOWUxMjhjMzgxZGQyMWI1YWIwNDRiMTdi
ZTdhYzY4OTk3ODI0Li4yMDEwZjliMDMzNTFlMjM0YzliNDhiMWZiNTQ0YWQ4ZjBiMmYzNDRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25z
b2xlUHJvbXB0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbnNvbGVQcm9tcHQuanMKQEAgLTM1LDcgKzM1LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNv
bGVQcm9tcHQgPSBjbGFzcyBDb25zb2xlUHJvbXB0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcK
IAogICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7CiAKLSAgICAgICAg
dGhpcy5fY29kZU1pcnJvciA9IENvZGVNaXJyb3IodGhpcy5lbGVtZW50LCB7CisgICAgICAgIHRo
aXMuX2NvZGVNaXJyb3IgPSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRvci5jcmVhdGUodGhp
cy5lbGVtZW50LCB7CiAgICAgICAgICAgICBsaW5lV3JhcHBpbmc6IHRydWUsCiAgICAgICAgICAg
ICBtb2RlOiBtaW1lVHlwZSwKICAgICAgICAgICAgIGluZGVudFdpdGhUYWJzOiB0cnVlLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NvcGVD
aGFpbkRldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCAyMGRi
NTFlNWVmNmYwZjA0NzNlOWFjNGJlNGM1NDcyOTNhZGMyOGUxLi5kMWJhYTM1ZjdjN2IxODRlMGJj
ZDllNzgxNjY2MGRiMGE3OTczY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY29wZUNoYWluRGV0
YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtMzE2LDcgKzMxNiw3IEBAIFdlYkluc3BlY3Rvci5TY29w
ZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIFNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJh
clBhbmVsCiAgICAgICAgIGxldCBlZGl0b3JFbGVtZW50ID0gY29udGVudC5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CiAgICAgICAgIGVkaXRvckVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgid2F0Y2gtZXhwcmVzc2lvbi1lZGl0b3IiLCBXZWJJbnNwZWN0b3IuU3ludGF4
SGlnaGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZSk7CiAKLSAgICAgICAgdGhpcy5fY29kZU1pcnJvciA9
IENvZGVNaXJyb3IoZWRpdG9yRWxlbWVudCwgeworICAgICAgICB0aGlzLl9jb2RlTWlycm9yID0g
V2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0b3IuY3JlYXRlKGVkaXRvckVsZW1lbnQsIHsKICAg
ICAgICAgICAgIGxpbmVXcmFwcGluZzogdHJ1ZSwKICAgICAgICAgICAgIG1vZGU6ICJ0ZXh0L2ph
dmFzY3JpcHQiLAogICAgICAgICAgICAgaW5kZW50V2l0aFRhYnM6IHRydWUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5q
cwppbmRleCA0YzcxOGY1NzZjM2Y2NzQ3ZjRjZWQ0NTQ2MmRkNTUzOGJkNjZlZTk5Li43ZWJkZjI2
ODFhZGVjZWVlMjc2ZGU3YmI0MDVmMGQxMmNjZDQ3NDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMKQEAgLTMy
LDcgKzMyLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IgPSBjbGFzcyBUZXh0RWRpdG9yIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoInRleHQtZWRpdG9yIiwgV2ViSW5zcGVjdG9yLlN5bnRheEhpZ2hsaWdodGVkU3R5bGVDbGFz
c05hbWUpOwogCiAgICAgICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQ5MTIw
PiBXZWIgSW5zcGVjdG9yOiBQcmVmZXJlbmNlcyBmb3IgVGV4dCBFZGl0b3IgYmVoYXZpb3IKLSAg
ICAgICAgdGhpcy5fY29kZU1pcnJvciA9IENvZGVNaXJyb3IodGhpcy5lbGVtZW50LCB7CisgICAg
ICAgIHRoaXMuX2NvZGVNaXJyb3IgPSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRvci5jcmVh
dGUodGhpcy5lbGVtZW50LCB7CiAgICAgICAgICAgICByZWFkT25seTogdHJ1ZSwKICAgICAgICAg
ICAgIGluZGVudFdpdGhUYWJzOiB0cnVlLAogICAgICAgICAgICAgaW5kZW50VW5pdDogNCwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265884</attachid>
            <date>2015-11-19 12:37:52 -0800</date>
            <delta_ts>2015-11-19 15:00:45 -0800</delta_ts>
            <desc>Rebased Patch</desc>
            <filename>bug-151157-20151119123740.patch</filename>
            <type>text/plain</type>
            <size>24012</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDExMjdiMDRmYWRlYzcz
NWUxOTA1MjRlNTkwMDIxNzEwNjQ1ODE0MC4uYzVmZTJhOTk1MzE0NzRhOWYxOTQ4YzhiYjA2OGVl
YzZlZDU3YWM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM3IEBACiAyMDE1LTExLTE5ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHlhbmsv
a2lsbCBzaG9ydGN1dHMgKENUUkwrWSwgSykgZG9uJ3Qgd29yayBpbiBDb25zb2xlIC8gUXVpY2tD
b25zb2xlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTExNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
b2RlTWlycm9yIG1haW50YWlucyBpdHMgb3duIGVkaXRvciBidWZmZXIgYW5kIGltcGxlbWVudHMg
aXRzIG93bgorICAgICAgICBga2lsbExpbmVgIGNvbW1hbmQgYnV0IGRvZXNuJ3QgaW1wbGVtZW50
IHRoZSB5YW5rIGNvbW1hbmQuIFNvLCB0ZXh0CisgICAgICAgIHRoYXQgaXMgImtpbGxlZCIgd2l0
aCBDVFJMLWsgaW5zaWRlIGEgQ29kZU1pcnJvciBpbnN0YW5jZSBpc24ndAorICAgICAgICBhZGRl
ZCB0byBFZGl0b3IncyBraWxsIHJpbmcuIFN1YnNlcXVlbnQgeWFuayBjb21tYW5kcyB3b24ndCBt
YXRjaAorICAgICAgICB1cCB3aXRoIHRoZSBraWxsZWQgdGV4dCwgaW5zdGVhZCByZXR1cm5pbmcg
dGV4dCBmcm9tIGEgcHJpb3Iga2lsbAorICAgICAgICB0aGF0IHdhcyBoYW5kbGVkIGJ5IEVkaXRv
ciAoaS5lLiwgaW4gYSBjb250ZW50ZWRpdGFibGUgb3IgZm9ybSBpbnB1dCkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhZGRzIGEgaG9zdCBmdW5jdGlvbiBzbyB0aGF0IHRoZSBJbnNwZWN0b3IgZnJv
bnRlbmQgY2FuCisgICAgICAgIGFwcGVuZCAibWlzc2VkIiBraWxsZWQgdGV4dCB0byBFZGl0b3In
cyBraWxsIHJpbmcuIFN1YnNlcXVlbnQKKyAgICAgICAgeWFua3MgaGFuZGxlZCBieSBFZGl0b3Ig
d2lsbCB0aGVuIG1hdGNoIHRoZSB0ZXh0IGtpbGxlZCBieSBDb2RlTWlycm9yLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgYmVjYXVzZSB3ZSBuZWVkIHRvIHVzZSBib3RoIEluc3BlY3RvckZyb250
ZW5kSG9zdAorICAgICAgICBhbmQgVGVzdFJ1bm5lci5leGVjQ29tbWFuZCwgYnV0IHRoZSBsYXR0
ZXIgaXMgbm90IGF2YWlsYWJsZSBpbgorICAgICAgICB0aGUgaW5zcGVjdG9yIGNvbnRleHQgd2hl
cmUgd2Ugd291bGQgbmVlZCB0byBzaW11bGF0ZSBhIGtpbGwuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kSG9zdDo6a2lsbFRleHQpOgorCisgICAgICAgICAgICBBZGRlZC4gVGhpcyBhcHBl
bmRzIHRoZSBraWxsZWQgdGV4dCB0byB0aGUga2lsbCByaW5nLCBzdGFydGluZworICAgICAgICAg
ICAgYSBuZXcgc2VxdWVuY2UgaWYgbmVjZXNzYXJ5LiBVbmxpa2UgRWRpdG9yLCBJbnNwZWN0b3Ig
d2FpdHMKKyAgICAgICAgICAgIHVudGlsIHRoZSBuZXh0IGtpbGwgY29tbWFuZCB0byBjbGVhciB0
aGUgZXhpc3Rpbmcgc2VxdWVuY2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5p
ZGw6CisKKzIwMTUtMTEtMTkgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKICAgICAg
ICAgUkVHUkVTU0lPTihyODc4MCk6IEJhY2t3YXJkcyBkZWxldGUgYnkgd29yZCBpbmNvcnJlY3Rs
eSBhcHBlbmRzIGRlbGV0ZWQgdGV4dCB0byBraWxsIHJpbmcsIHNob3VsZCBiZSBwcmVwZW5kCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEzMDAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMDJiMmUwMDg5ZWM2ZTEyMzMyZDFlYWRiOWU0NTJm
NWNhNWY4ZWE3Yy4uYmYyOGU3MDhmN2QzYjFlMTQ1ODQ0ZDMwNjYyMmE4NDUwYmIyODNjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTUtMTEtMTQgIEJyaWFu
IEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogeWFuay9r
aWxsIHNob3J0Y3V0cyAoQ1RSTCtZLCBLKSBkb24ndCB3b3JrIGluIENvbnNvbGUgLyBRdWlja0Nv
bnNvbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MTE1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
ZGVNaXJyb3IgbWFpbnRhaW5zIGl0cyBvd24gZWRpdG9yIGJ1ZmZlciBhbmQgaW1wbGVtZW50cyBp
dHMgb3duCisgICAgICAgIGBraWxsTGluZWAgY29tbWFuZCBidXQgZG9lc24ndCBpbXBsZW1lbnQg
dGhlIHlhbmsgY29tbWFuZC4gU28sIHRleHQKKyAgICAgICAgdGhhdCBpcyAia2lsbGVkIiB3aXRo
IENUUkwtayBpbnNpZGUgYSBDb2RlTWlycm9yIGluc3RhbmNlIGlzbid0CisgICAgICAgIGFkZGVk
IHRvIFdlYkNvcmUncyBraWxsIHJpbmcuIFN1YnNlcXVlbnQgeWFuayBjb21tYW5kcyB3b24ndCBt
YXRjaAorICAgICAgICB1cCB3aXRoIHRoZSBraWxsZWQgdGV4dCwgaW5zdGVhZCByZXR1cm5pbmcg
dGV4dCBmcm9tIGEgcHJpb3Iga2lsbAorICAgICAgICB0aGF0IHdhcyBoYW5kbGVkIGJ5IFdlYkNv
cmUgKGkuZS4sIGluIGEgY29udGVudGVkaXRhYmxlIG9yIGZvcm0gaW5wdXQpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBhIGhvc3QgZnVuY3Rpb24gc28gdGhhdCB0aGUgSW5zcGVjdG9yIGZy
b250ZW5kIGNhbgorICAgICAgICBhcHBlbmQgIm1pc3NlZCIga2lsbGVkIHRleHQgdG8gV2ViQ29y
ZSdzIGtpbGwgcmluZy4gU3Vic2VxdWVudAorICAgICAgICB5YW5rcyBoYW5kbGVkIGJ5IFdlYkNv
cmUgd2lsbCB0aGVuIG1hdGNoIHRoZSB0ZXh0IGtpbGxlZCBieSBDb2RlTWlycm9yLgorCisgICAg
ICAgIEluIHRoZSBmcm9udGVuZCwgd2UgaW1wbGVtZW50IG91ciBvd24ga2V5IGJpbmRpbmcgaGFu
ZGxlciBmb3IKKyAgICAgICAgQ1RSTC1rIHRoYXQgY2FwdHVyZXMga2lsbGVkIHRleHQsIGRldGVj
dHMgd2hldGhlciB0aGUga2lsbAorICAgICAgICBzaG91bGQgc3RhcnQgYSBuZXcgc2VxdWVuY2Us
IGFuZCBzZW5kcyBpdCB0byBXZWJDb3JlLiBCZWNhdXNlIHRoaXMKKyAgICAgICAgaW52b2x2ZXMg
c2V2ZXJhbCBmbGFncyBhbmQgbGlzdGVuZXJzLCBhbmQgd2Ugd2FudCB0aGlzIGJlaGF2aW9yIGZv
cgorICAgICAgICBhbGwgZWRpdGFibGUgQ29kZU1pcnJvciBpbnN0YW5jZXMsIHRoZSB0ZXh0IGtp
bGwgaGFuZGxpbmcgaXMKKyAgICAgICAgZmFjdG9yZWQgaW50byBpdHMgb3duIENvZGVNaXJyb3JU
ZXh0S2lsbENvbnRyb2xsZXIuCisKKyAgICAgICAgVG8gYWRkIHRoaXMgYmVoYXZpb3IgdG8gYWxs
IGluc3RhbmNlcywgdGhpcyBwYXRjaCBjZW50cmFsaXplcyB0aGUKKyAgICAgICAgY29kZSB0aGF0
IGNvbnN0cnVjdHMgYSBiYXNlIENvZGVNaXJyb3IgaW5zdGFuY2UsIGFuZCBhdHRhY2hlcyB0aGUK
KyAgICAgICAgQ29kZU1pcnJvclRleHRLaWxsQ29udHJvbGxlciB0byBhbGwgaW5zdGFuY2VzLiBU
aGUgc2hvcnRjdXQKKyAgICAgICAgZG9lcyBub3RoaW5nIHdoZW4gaXRzIENvZGVNaXJyb3IgaW5z
dGFuY2UgaXMgcmVhZC1vbmx5LgorCisgICAgICAgIFRoZSBwYXJ0aWN1bGFycyBvZiB0aGUga2ls
bCBjb250cm9sbGVyIGFyZSBkb2N1bWVudGVkIGlubGluZS4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIGJlY2F1c2Ugd2UgbmVlZCB0byB1c2UgYm90aCBJbnNwZWN0b3JGcm9udGVuZEhvc3QKKyAg
ICAgICAgYW5kIFRlc3RSdW5uZXIuZXhlY0NvbW1hbmQsIGJ1dCB0aGUgbGF0dGVyIGlzIG5vdCBh
dmFpbGFibGUgaW4KKyAgICAgICAgdGhlIGluc3BlY3RvciBjb250ZXh0IHdoZXJlIHdlIHdvdWxk
IG5lZWQgdG8gc2ltdWxhdGUgYSBraWxsLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9Db2RlTWlycm9yVGV4dEtpbGxDb250cm9sbGVyLmpzOiBBZGRlZC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEtpbGxDb250cm9sbGVyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEtpbGxDb250cm9sbGVyLnByb3RvdHlwZS5faGFuZGxl
S2lsbExpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUZXh0S2lsbENvbnRy
b2xsZXIucHJvdG90eXBlLl9oYW5kbGVUZXh0Q2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db2RlTWlycm9yVGV4dEtpbGxDb250cm9sbGVyLnByb3RvdHlwZS5faGFuZGxlRWRpdG9yQmx1
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRleHRLaWxsQ29udHJvbGxlci5w
cm90b3R5cGUuX2hhbmRsZVNlbGVjdGlvbk9yQ2FyZXRDaGFuZ2UpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qczoKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuV2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBl
LmtpbGxUZXh0KTogQWRkIGEgc3R1YiB0byBhdm9pZCBjaGVjay1iZWZvcmUtdXNlLgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvblZpZXcucHJvdG90eXBlLl91cGRhdGVCb2R5
KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0
RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0
RWRpdG9yKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JFZGl0b3Iu
anM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0b3IuY3JlYXRl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdG9yKToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVQcm9tcHQuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZVByb21wdCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TY29wZUNo
YWluRGV0YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1RleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvcik6CisKIDIw
MTUtMTEtMTkgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IENvbnZlcnQgcmVtYWluaW5nIHRpbWVsaW5lIHZpZXdzIHRvIHVzZSBWaWV3
IGJhc2UgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5jcHAKaW5kZXggNjBiMjZiODRhODViNWIwYmVhMmFmNDIzMGRmMzViMGI0MDJl
MWZhZC4uOGUyNzVhODczZjM1N2FmNTIwMWI5ODcyMWQ5OWU0ZTIwZGJlMDMzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAg
LTM2LDcgKzM2LDkgQEAKICNpbmNsdWRlICJDb250ZXh0TWVudVByb3ZpZGVyLmgiCiAjaW5jbHVk
ZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJF
ZGl0b3IuaCIKICNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5oIgogI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgpAQCAtMTgyLDEy
ICsxODQsMTYgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Omluc3BlY3RlZFVSTENoYW5n
ZWQoY29uc3QgU3RyaW5nJiBuZXdVUkwpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpz
ZXRab29tRmFjdG9yKGZsb2F0IHpvb20pCiB7Ci0gICAgbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFt
ZSgpLnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoem9vbSwgMSk7CisgICAgaWYgKG1fZnJvbnRl
bmRQYWdlKQorICAgICAgICBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2V0UGFnZUFuZFRl
eHRab29tRmFjdG9ycyh6b29tLCAxKTsKIH0KIAogZmxvYXQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
Ojp6b29tRmFjdG9yKCkKIHsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgp
LnBhZ2Vab29tRmFjdG9yKCk7CisgICAgaWYgKG1fZnJvbnRlbmRQYWdlKQorICAgICAgICByZXR1
cm4gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnBhZ2Vab29tRmFjdG9yKCk7CisKKyAgICBy
ZXR1cm4gMS4wOwogfQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2V0QXR0YWNoZWRX
aW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQpAQCAtMjY1LDYgKzI3MSwxNyBAQCB2b2lkIElu
c3BlY3RvckZyb250ZW5kSG9zdDo6Y29weVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIFBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLT53cml0ZVBsYWluVGV4dCh0ZXh0LCBQ
YXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2UpOwogfQogCit2b2lkIEluc3BlY3RvckZyb250
ZW5kSG9zdDo6a2lsbFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNob3VsZFByZXBlbmRU
b0tpbGxSaW5nLCBib29sIHNob3VsZFN0YXJ0TmV3U2VxdWVuY2UpCit7CisgICAgaWYgKCFtX2Zy
b250ZW5kUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRWRpdG9yJiBlZGl0b3IgPSBtX2Zy
b250ZW5kUGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9y
KCk7CisgICAgZWRpdG9yLnNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZShzaG91bGRTdGFydE5l
d1NlcXVlbmNlKTsKKyAgICBFZGl0b3I6OktpbGxSaW5nSW5zZXJ0aW9uTW9kZSBpbnNlcnRpb25N
b2RlID0gc2hvdWxkUHJlcGVuZFRvS2lsbFJpbmcgPyBFZGl0b3I6OktpbGxSaW5nSW5zZXJ0aW9u
TW9kZTo6UHJlcGVuZFRleHQgOiBFZGl0b3I6OktpbGxSaW5nSW5zZXJ0aW9uTW9kZTo6QXBwZW5k
VGV4dDsKKyAgICBlZGl0b3IuYWRkVGV4dFRvS2lsbFJpbmcodGV4dCwgaW5zZXJ0aW9uTW9kZSk7
Cit9CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpvcGVuSW5OZXdUYWIoY29uc3QgU3Ry
aW5nJiB1cmwpCiB7CiAgICAgaWYgKG1fY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCmluZGV4IGIxOTkyNWJjNDZhNTE4ODg2NTg2
NmY3MmY1OWZmN2Q1YThjMzQ3MzIuLmQxMTU3NWRkNmI2N2NhMGYzYzQxYjcwMTJlYjYwZWIwNDIz
MDYyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmgKQEAgLTc2LDYgKzc2LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBwb3J0KCk7CiAK
ICAgICB2b2lkIGNvcHlUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCk7CisgICAgdm9pZCBraWxsVGV4
dChjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgc2hvdWxkUHJlcGVuZFRvS2lsbFJpbmcsIGJvb2wg
c2hvdWxkU3RhcnROZXdTZXF1ZW5jZSk7CiAgICAgdm9pZCBvcGVuSW5OZXdUYWIoY29uc3QgU3Ry
aW5nJiB1cmwpOwogICAgIGJvb2wgY2FuU2F2ZSgpOwogICAgIHZvaWQgc2F2ZShjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wg
Zm9yY2VTYXZlQXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmlkbAppbmRleCBkNWM2NTRhYmVmM2U1NWUxYzllZjhhZDA4MzM0ZmZlMWFi
Zjk1ZWM2Li5mYWZjZGU1ZmRhMTM0N2YyOTI1M2IwZjJhNDRhOTQ4YzQyNmU5YWU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbApA
QCAtNTUsNiArNTUsNyBAQAogICAgIERPTVN0cmluZyBkZWJ1Z2dhYmxlVHlwZSgpOwogCiAgICAg
dm9pZCBjb3B5VGV4dChET01TdHJpbmcgdGV4dCk7CisgICAgdm9pZCBraWxsVGV4dChET01TdHJp
bmcgdGV4dCwgYm9vbGVhbiBzaG91bGRQcmVwZW5kVG9LaWxsUmluZywgYm9vbGVhbiBzaG91bGRT
dGFydE5ld1NlcXVlbmNlKTsKICAgICB2b2lkIG9wZW5Jbk5ld1RhYihET01TdHJpbmcgdXJsKTsK
ICAgICBib29sZWFuIGNhblNhdmUoKTsKICAgICB2b2lkIHNhdmUoRE9NU3RyaW5nIHVybCwgRE9N
U3RyaW5nIGNvbnRlbnQsIGJvb2xlYW4gYmFzZTY0RW5jb2RlZCwgYm9vbGVhbiBmb3JjZVNhdmVB
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xs
ZXIuanMKaW5kZXggM2VkZGNiYjFlODc0ZjZkZWUxMThkNTIxYzE2NDYwNjExMjI4NzIxZi4uOGFm
YjIzOGFkNjM3ZWM5ZTk4NjM3NzMxM2M5ZWViYzA3NDcxZTIyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJlYWtwb2ludFBvcG92
ZXJDb250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5qcwpAQCAtMTM5LDcgKzEz
OSw3IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIgPSBjbGFzcyBC
cmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIgZXh0CiAgICAgICAgIGxldCBjb25kaXRpb25FZGl0
b3JFbGVtZW50ID0gY29uZGl0aW9uRGF0YS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKSk7CiAgICAgICAgIGNvbmRpdGlvbkVkaXRvckVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiZWRpdC1icmVha3BvaW50LXBvcG92ZXItY29uZGl0aW9uIiwgV2ViSW5zcGVjdG9yLlN5bnRh
eEhpZ2hsaWdodGVkU3R5bGVDbGFzc05hbWUpOwogCi0gICAgICAgIHRoaXMuX2NvbmRpdGlvbkNv
ZGVNaXJyb3IgPSBDb2RlTWlycm9yKGNvbmRpdGlvbkVkaXRvckVsZW1lbnQsIHsKKyAgICAgICAg
dGhpcy5fY29uZGl0aW9uQ29kZU1pcnJvciA9IFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdG9y
LmNyZWF0ZShjb25kaXRpb25FZGl0b3JFbGVtZW50LCB7CiAgICAgICAgICAgICBleHRyYUtleXM6
IHtUYWI6IGZhbHNlfSwKICAgICAgICAgICAgIGxpbmVXcmFwcGluZzogZmFsc2UsCiAgICAgICAg
ICAgICBtb2RlOiAidGV4dC9qYXZhc2NyaXB0IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JUZXh0S2lsbENvbnRy
b2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9Db2RlTWlycm9yVGV4dEtpbGxDb250cm9sbGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2ZTc2MTQ5MmI2
OGIxNzBiZTQwZjFjNGNlYzUyOTQ5NDljZWMxNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yVGV4dEtp
bGxDb250cm9sbGVyLmpzCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVj
dG9yLkNvZGVNaXJyb3JUZXh0S2lsbENvbnRyb2xsZXIgPSBjbGFzcyBDb2RlTWlycm9yVGV4dEtp
bGxDb250cm9sbGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0cnVj
dG9yKGNvZGVNaXJyb3IpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGNvZGVNaXJyb3IpOworCisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IgPSBjb2Rl
TWlycm9yOworICAgICAgICB0aGlzLl9leHBlY3RpbmdDaGFuZ2VFdmVudEZvcktpbGwgPSBmYWxz
ZTsKKyAgICAgICAgdGhpcy5fbmV4dEtpbGxTdGFydHNOZXdTZXF1ZW5jZSA9IHRydWU7CisKKyAg
ICAgICAgdGhpcy5faGFuZGxlVGV4dENoYW5nZUxpc3RlbmVyID0gdGhpcy5faGFuZGxlVGV4dENo
YW5nZS5iaW5kKHRoaXMpOworICAgICAgICB0aGlzLl9oYW5kbGVFZGl0b3JCbHVyTGlzdGVuZXIg
PSB0aGlzLl9oYW5kbGVFZGl0b3JCbHVyLmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMuX2hhbmRs
ZVNlbGVjdGlvbk9yQ2FyZXRDaGFuZ2VMaXN0ZW5lciA9IHRoaXMuX2hhbmRsZVNlbGVjdGlvbk9y
Q2FyZXRDaGFuZ2UuYmluZCh0aGlzKTsKKworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLmFkZEtl
eU1hcCh7CisgICAgICAgICAgICAiQ3RybC1LIjogdGhpcy5faGFuZGxlS2lsbExpbmUuYmluZCh0
aGlzKSwKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgX2hhbmRsZUtpbGxMaW5lKGNvZGVNaXJy
b3IpCisgICAgeworICAgICAgICAvLyBSZWFkLW9ubHkgbW9kZSBpcyBkeW5hbWljIGluIHNvbWUg
ZWRpdG9ycywgc28gY2hlY2sgZXZlcnkgdGltZQorICAgICAgICAvLyBhbmQgaWdub3JlIHRoZSBz
aG9ydGN1dCBpZiBpbiByZWFkLW9ubHkgbW9kZS4KKyAgICAgICAgaWYgKHRoaXMuX2NvZGVNaXJy
b3IuZ2V0T3B0aW9uKCJyZWFkT25seSIpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IC8vIERvbid0IGFkZCB0aGUgbGlzdGVuZXIgaWYgaXQncyBzdGlsbCByZWdpc3RlcmVkIGJlY2F1
c2UKKyAgICAgICAgLy8gYSBwcmV2aW91cyBlbXB0eSBraWxsIGRpZG4ndCBnZW5lcmF0ZSBjaGFu
Z2UgZXZlbnRzLgorICAgICAgICBpZiAoIXRoaXMuX2V4cGVjdGluZ0NoYW5nZUV2ZW50Rm9yS2ls
bCkKKyAgICAgICAgICAgIGNvZGVNaXJyb3Iub24oImNoYW5nZXMiLCB0aGlzLl9oYW5kbGVUZXh0
Q2hhbmdlTGlzdGVuZXIpOworCisgICAgICAgIHRoaXMuX2V4cGVjdGluZ0NoYW5nZUV2ZW50Rm9y
S2lsbCA9IHRydWU7CisgICAgICAgIGNvZGVNaXJyb3IuZXhlY0NvbW1hbmQoImtpbGxMaW5lIik7
CisgICAgfQorCisgICAgX2hhbmRsZVRleHRDaGFuZ2UoY29kZU1pcnJvciwgY2hhbmdlcykKKyAg
ICB7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iub2ZmKCJjaGFuZ2VzIiwgdGhpcy5faGFuZGxl
VGV4dENoYW5nZUxpc3RlbmVyKTsKKworICAgICAgICAvLyBTb21ldGltZXMgYSBzZWNvbmQgY2hh
bmdlIGV2ZW50IGZpcmVzIGFmdGVyIHJlbW92aW5nIHRoZSBsaXN0ZW5lcgorICAgICAgICAvLyBp
ZiB5b3UgcGVyZm9ybSBhbiAiZW1wdHkga2lsbCIgYW5kIHR5cGUgYWZ0ZXIgbW92aW5nIHRoZSBj
YXJldC4KKyAgICAgICAgaWYgKCF0aGlzLl9leHBlY3RpbmdDaGFuZ2VFdmVudEZvcktpbGwpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fZXhwZWN0aW5nQ2hhbmdlRXZlbnRG
b3JLaWxsID0gZmFsc2U7CisKKyAgICAgICAgLy8gSXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGdl
dCBtb3JlIHRoYW4gb25lIGNoYW5nZSBwZXIga2lsbC4KKyAgICAgICAgY29uc29sZS5hc3NlcnQo
Y2hhbmdlcy5sZW5ndGggPT09IDEpOworICAgICAgICBsZXQgY2hhbmdlID0gY2hhbmdlc1swXTsK
KworICAgICAgICAvLyBJZiBhbiAiZW1wdHkga2lsbCIgaXMgZm9sbG93ZWQgYnkgdXAvZG93biBv
ciB0eXBpbmcsCisgICAgICAgIC8vIHRoZSBlbXB0eSBraWxsIHdvbid0IGZpcmUgYSBjaGFuZ2Ug
ZXZlbnQsIHRoZW4gd2UnbGwgZ2V0IGFuCisgICAgICAgIC8vIHVucmVsYXRlZCBjaGFuZ2UgZXZl
bnQgdGhhdCBzaG91bGRuJ3QgYmUgdHJlYXRlZCBhcyBhIGtpbGwuCisgICAgICAgIGlmIChjaGFu
Z2Uub3JpZ2luICE9PSAiK2RlbGV0ZSIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
Ly8gS2lsbGluZyBhIG5ld2xpbmUgYnkgaXRzZWxmIGlzIHJlcG9ydGVkIGFzIGRlbGV0aW9uIG9m
IHR3bworICAgICAgICAvLyBlbXB0eSBzdHJpbmdzLCBzbyBjaGVjayB0aGUgY2hhbmdlJ3MgcmFu
Z2VzIHRvIGRldGVjdCB0aGlzLgorICAgICAgICBsZXQga2lsbGVkVGV4dDsKKyAgICAgICAgaWYg
KGNoYW5nZS50by5saW5lID09PSBjaGFuZ2UuZnJvbS5saW5lICsgMSkKKyAgICAgICAgICAgIGtp
bGxlZFRleHQgPSAiXG4iOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGNoYW5nZS5yZW1vdmVkLmxlbmd0aCA9PT0gMSk7CisgICAgICAgICAgICBraWxsZWRUZXh0
ID0gY2hhbmdlLnJlbW92ZWRbMF07CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBzaG91bGRQ
cmVwZW5kVG9LaWxsUmluZyA9IGZhbHNlOworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Qu
a2lsbFRleHQoa2lsbGVkVGV4dCwgc2hvdWxkUHJlcGVuZFRvS2lsbFJpbmcsIHRoaXMuX25leHRL
aWxsU3RhcnRzTmV3U2VxdWVuY2UpOworCisgICAgICAgIC8vIElmIHRoZSBlZGl0b3IgbG9zZXMg
Zm9jdXMgb3IgdGhlIGNhcmV0IC8gc2VsZWN0aW9uIGNoYW5nZXMKKyAgICAgICAgLy8gKG5vdCBh
cyBhIHJlc3VsdCBvZiB0aGUga2lsbCksIHRoZW4gdGhlIG5leHQga2lsbCBzaG91bGQKKyAgICAg
ICAgLy8gc3RhcnQgYSBuZXcga2lsbCByaW5nIHNlcXVlbmNlLgorICAgICAgICB0aGlzLl9uZXh0
S2lsbFN0YXJ0c05ld1NlcXVlbmNlID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iu
b24oImJsdXIiLCB0aGlzLl9oYW5kbGVFZGl0b3JCbHVyTGlzdGVuZXIpOworICAgICAgICB0aGlz
Ll9jb2RlTWlycm9yLm9uKCJjdXJzb3JBY3Rpdml0eSIsIHRoaXMuX2hhbmRsZVNlbGVjdGlvbk9y
Q2FyZXRDaGFuZ2VMaXN0ZW5lcik7CisgICAgfQorCisgICAgX2hhbmRsZUVkaXRvckJsdXIoY29k
ZU1pcnJvcikKKyAgICB7CisgICAgICAgIHRoaXMuX25leHRLaWxsU3RhcnRzTmV3U2VxdWVuY2Ug
PSB0cnVlOworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLm9mZigiYmx1ciIsIHRoaXMuX2hhbmRs
ZUVkaXRvckJsdXJMaXN0ZW5lcik7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iub2ZmKCJjdXJz
b3JBY3Rpdml0eSIsIHRoaXMuX2hhbmRsZVNlbGVjdGlvbk9yQ2FyZXRDaGFuZ2VMaXN0ZW5lcik7
CisgICAgfQorCisgICAgX2hhbmRsZVNlbGVjdGlvbk9yQ2FyZXRDaGFuZ2UoY29kZU1pcnJvcikK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLl9leHBlY3RpbmdDaGFuZ2VFdmVudEZvcktpbGwpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fbmV4dEtpbGxTdGFydHNOZXdTZXF1
ZW5jZSA9IHRydWU7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iub2ZmKCJibHVyIiwgdGhpcy5f
aGFuZGxlRWRpdG9yQmx1ckxpc3RlbmVyKTsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5vZmYo
ImN1cnNvckFjdGl2aXR5IiwgdGhpcy5faGFuZGxlU2VsZWN0aW9uT3JDYXJldENoYW5nZUxpc3Rl
bmVyKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sCmluZGV4IGRjNjJjMzRjNzE5MzdlOTQ4NjY2MTE2ZDg3NzI5OThmNmJlNmE1YmQu
LjZiZTQyYzI5ODNmYjEyNzc0YzQ0ZGYzOTM4MWUzNWFhYWQ3NDFmNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTQxNyw2ICs0MTcsNyBA
QAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9DaGFydERldGFpbHNTZWN0aW9uUm93LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ2x1c3RlckNvbnRlbnRWaWV3LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29kZU1pcnJvckFkZGl0aW9ucy5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvZGVNaXJyb3JFZGl0b3IuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db2RlTWlycm9yRm9ybWF0dGVycy5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvZGVNaXJyb3JUZXh0TWFya2Vycy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbG9yUGlja2VyLmpzIj48L3Njcmlw
dD4KQEAgLTU5OSw2ICs2MDAsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Db2Rl
TWlycm9yRHJhZ1RvQWRqdXN0TnVtYmVyQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NvZGVNaXJyb3JHcmFkaWVudEVkaXRpbmdDb250cm9sbGVy
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ29kZU1pcnJvclRv
a2VuVHJhY2tpbmdDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29u
dHJvbGxlcnMvQ29kZU1pcnJvclRleHRLaWxsQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvRGFzaGJvYXJkTWFuYWdlci5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcwppbmRl
eCBhYzhhMmMxNjcwOTU4NWFhODYxMThiYjY1NTJkYzFjZDc1NDNmNGFjLi5hY2U2YmYxYTljN2E0
YzgyZGEyOTI3YzA5YWQ0ZjBhMWQyYjkzNjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3Bl
Y3RvckZyb250ZW5kSG9zdFN0dWIuanMKQEAgLTEyMiw2ICsxMjIsMTAgQEAgaWYgKCF3aW5kb3cu
SW5zcGVjdG9yRnJvbnRlbmRIb3N0KSB7CiAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigi
Q2xpcGJvYXJkIGFjY2VzcyBpcyBkZW5pZWQiKTsKICAgICAgICAgfSwKIAorICAgICAgICBraWxs
VGV4dDogZnVuY3Rpb24odGV4dCwgc2hvdWxkU3RhcnROZXdTZXF1ZW5jZSkKKyAgICAgICAgewor
ICAgICAgICB9LAorCiAgICAgICAgIG9wZW5Jbk5ld1RhYjogZnVuY3Rpb24odXJsKQogICAgICAg
ICB7CiAgICAgICAgICAgICB3aW5kb3cub3Blbih1cmwsICJfYmxhbmsiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rp
b25WaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJl
YWtwb2ludEFjdGlvblZpZXcuanMKaW5kZXggOWNmZjg2ZWRhMzAyZGQ1MTM5NTE5ZmFlY2VlMzc3
ZDkzZTRjMTYzOS4uN2IwZjE4ZDRiMTMzZjZhNGMzMWI3OTY4MzBmOGU3ZDViMmYwN2IwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtw
b2ludEFjdGlvblZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMKQEAgLTE0OSw3ICsxNDksNyBAQCBXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvblZpZXcgPSBjbGFzcyBCcmVha3BvaW50QWN0aW9uVmll
dyBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICAgICAgZWRpdG9yRWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJicmVha3BvaW50LWFjdGlvbi1ldmFsLWVkaXRvciIpOwogICAgICAgICAgICAgZWRpdG9y
RWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5TeW50YXhIaWdobGlnaHRlZFN0eWxl
Q2xhc3NOYW1lKTsKIAotICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvciA9IENvZGVNaXJyb3Io
ZWRpdG9yRWxlbWVudCwgeworICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvciA9IFdlYkluc3Bl
Y3Rvci5Db2RlTWlycm9yRWRpdG9yLmNyZWF0ZShlZGl0b3JFbGVtZW50LCB7CiAgICAgICAgICAg
ICAgICAgbGluZVdyYXBwaW5nOiB0cnVlLAogICAgICAgICAgICAgICAgIG1vZGU6ICJ0ZXh0L2ph
dmFzY3JpcHQiLAogICAgICAgICAgICAgICAgIGluZGVudFdpdGhUYWJzOiB0cnVlLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwppbmRleCA4NzI3OWU0
N2E4MzM5NzA1YzkwYzYwMGVjNTNiNTNmZmZiZTUyMjFjLi5lNzM0NWQ4N2Q0ZGExZmQ4Y2ZkZjQ3
MWE2ZjA1NzMzNjIxYjYwOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0
aW9uVGV4dEVkaXRvci5qcwpAQCAtNDksNyArNDksNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRv
cgogCiAgICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKIAotICAgICAg
ICB0aGlzLl9jb2RlTWlycm9yID0gQ29kZU1pcnJvcih0aGlzLmVsZW1lbnQsIHsKKyAgICAgICAg
dGhpcy5fY29kZU1pcnJvciA9IFdlYkluc3BlY3Rvci5Db2RlTWlycm9yRWRpdG9yLmNyZWF0ZSh0
aGlzLmVsZW1lbnQsIHsKICAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLAogICAgICAgICAgICAg
bGluZVdyYXBwaW5nOiB0cnVlLAogICAgICAgICAgICAgbW9kZTogImNzcy1ydWxlIiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJy
b3JFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b2RlTWlycm9yRWRpdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzMWMxNDQ4YjY0MzhmNmI5OTc4YTM4NmY4
NWE1YjYzNjAxY2RkNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9yRWRpdG9yLmpzCkBAIC0wLDAgKzEsMzggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRvciA9IGNsYXNzIENvZGVN
aXJyb3JFZGl0b3IKK3sKKyAgICBzdGF0aWMgY3JlYXRlKHBsYWNlLCBvcHRpb25zKQorICAgIHsK
KyAgICAgICAgbGV0IGNvZGVNaXJyb3IgPSBuZXcgQ29kZU1pcnJvcihwbGFjZSwgb3B0aW9ucyk7
CisKKyAgICAgICAgLy8gU2V0IHVwIGRlZmF1bHQgY29udHJvbGxlcnMgdGhhdCBzaG91bGQgYmUg
cHJlc2VudCBmb3IKKyAgICAgICAgLy8gYWxsIENvZGVNaXJyb3IgZWRpdG9yIGluc3RhbmNlcy4K
KyAgICAgICAgbmV3IFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVGV4dEtpbGxDb250cm9sbGVyKGNv
ZGVNaXJyb3IpOworCisgICAgICAgIHJldHVybiBjb2RlTWlycm9yOworICAgIH0KK30KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlUHJvbXB0LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVByb21wdC5qcwppbmRleCA1YmFiOWUxMjhj
MzgxZGQyMWI1YWIwNDRiMTdiZTdhYzY4OTk3ODI0Li4yMDEwZjliMDMzNTFlMjM0YzliNDhiMWZi
NTQ0YWQ4ZjBiMmYzNDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db25zb2xlUHJvbXB0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVQcm9tcHQuanMKQEAgLTM1LDcgKzM1LDcgQEAg
V2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQgPSBjbGFzcyBDb25zb2xlUHJvbXB0IGV4dGVuZHMg
V2ViSW5zcGVjdG9yLlZpZXcKIAogICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8
IG51bGw7CiAKLSAgICAgICAgdGhpcy5fY29kZU1pcnJvciA9IENvZGVNaXJyb3IodGhpcy5lbGVt
ZW50LCB7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IgPSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJv
ckVkaXRvci5jcmVhdGUodGhpcy5lbGVtZW50LCB7CiAgICAgICAgICAgICBsaW5lV3JhcHBpbmc6
IHRydWUsCiAgICAgICAgICAgICBtb2RlOiBtaW1lVHlwZSwKICAgICAgICAgICAgIGluZGVudFdp
dGhUYWJzOiB0cnVlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQ
YW5lbC5qcwppbmRleCAzMWU4MTEwNGIzYWZiYjVjMTg2YTc3NDFlZmRjYjM0MjFlOTBhMDUyLi5j
NmVkOTAyZjQ2OTc4NTU4ZDA4NmYyZWQ4N2QzNmU3NmZmNzc4N2QyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY29wZUNoYWluRGV0YWlsc1Np
ZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtMzE2LDcgKzMxNiw3IEBA
IFdlYkluc3BlY3Rvci5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIFNjb3Bl
Q2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsCiAgICAgICAgIGxldCBlZGl0b3JFbGVtZW50ID0gY29u
dGVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CiAgICAgICAg
IGVkaXRvckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgid2F0Y2gtZXhwcmVzc2lvbi1lZGl0b3IiLCBX
ZWJJbnNwZWN0b3IuU3ludGF4SGlnaGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZSk7CiAKLSAgICAgICAg
dGhpcy5fY29kZU1pcnJvciA9IENvZGVNaXJyb3IoZWRpdG9yRWxlbWVudCwgeworICAgICAgICB0
aGlzLl9jb2RlTWlycm9yID0gV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0b3IuY3JlYXRlKGVk
aXRvckVsZW1lbnQsIHsKICAgICAgICAgICAgIGxpbmVXcmFwcGluZzogdHJ1ZSwKICAgICAgICAg
ICAgIG1vZGU6ICJ0ZXh0L2phdmFzY3JpcHQiLAogICAgICAgICAgICAgaW5kZW50V2l0aFRhYnM6
IHRydWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGV4dEVkaXRvci5qcwppbmRleCA0YzcxOGY1NzZjM2Y2NzQ3ZjRjZWQ0NTQ2MmRkNTUz
OGJkNjZlZTk5Li43ZWJkZjI2ODFhZGVjZWVlMjc2ZGU3YmI0MDVmMGQxMmNjZDQ3NDJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRp
dG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rl
eHRFZGl0b3IuanMKQEAgLTMyLDcgKzMyLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IgPSBj
bGFzcyBUZXh0RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKICAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoInRleHQtZWRpdG9yIiwgV2ViSW5zcGVjdG9yLlN5bnRheEhp
Z2hsaWdodGVkU3R5bGVDbGFzc05hbWUpOwogCiAgICAgICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93
ZWJraXQub3JnL2IvMTQ5MTIwPiBXZWIgSW5zcGVjdG9yOiBQcmVmZXJlbmNlcyBmb3IgVGV4dCBF
ZGl0b3IgYmVoYXZpb3IKLSAgICAgICAgdGhpcy5fY29kZU1pcnJvciA9IENvZGVNaXJyb3IodGhp
cy5lbGVtZW50LCB7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IgPSBXZWJJbnNwZWN0b3IuQ29k
ZU1pcnJvckVkaXRvci5jcmVhdGUodGhpcy5lbGVtZW50LCB7CiAgICAgICAgICAgICByZWFkT25s
eTogdHJ1ZSwKICAgICAgICAgICAgIGluZGVudFdpdGhUYWJzOiB0cnVlLAogICAgICAgICAgICAg
aW5kZW50VW5pdDogNCwK
</data>

          </attachment>
      

    </bug>

</bugzilla>