<?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>189817</bug_id>
          
          <creation_ts>2018-09-20 20:18:57 -0700</creation_ts>
          <short_desc>Web Inspector: remove setting for Sources tab</short_desc>
          <delta_ts>2018-09-21 11:57:19 -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>
          
          
          <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="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1461694</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-09-20 20:18:57 -0700</bug_when>
    <thetext>The Sources tab is almost a direct copy of the Resources tab, so there&apos;s no reason to have both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461711</commentid>
    <comment_count>1</comment_count>
      <attachid>350319</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-09-20 20:49:10 -0700</bug_when>
    <thetext>Created attachment 350319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461937</commentid>
    <comment_count>2</comment_count>
      <attachid>350319</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-09-21 11:08:31 -0700</bug_when>
    <thetext>Comment on attachment 350319
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461953</commentid>
    <comment_count>3</comment_count>
      <attachid>350319</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-21 11:34:06 -0700</bug_when>
    <thetext>Comment on attachment 350319
Patch

Rejecting attachment 350319 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 350319, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=350319&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=189817&amp;ctype=xml&amp;excludefield=attachmentdata
Processing 1 patch from 1 bug.
Processing patch 350319 from bug 189817.
Fetching: https://bugs.webkit.org/attachment.cgi?id=350319
Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Joseph Pecoraro&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Parsed 11 diffs from patch file(s).
patching file Source/WebInspectorUI/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
Hunk #1 succeeded at 337 (offset -7 lines).
Hunk #2 succeeded at 711 (offset -12 lines).
Hunk #3 succeeded at 801 (offset -12 lines).
patching file Source/WebInspectorUI/UserInterface/Base/Main.js
patching file Source/WebInspectorUI/UserInterface/Base/Setting.js
Hunk #1 FAILED at 120.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebInspectorUI/UserInterface/Base/Setting.js.rej
patching file Source/WebInspectorUI/UserInterface/Main.html
Hunk #1 succeeded at 178 (offset -3 lines).
Hunk #2 succeeded at 517 (offset -4 lines).
Hunk #3 succeeded at 730 (offset -7 lines).
patching file Source/WebInspectorUI/UserInterface/Views/ContextMenuUtilities.js
patching file Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.js
Hunk #1 succeeded at 244 (offset -5 lines).
Hunk #2 succeeded at 265 with fuzz 2 (offset -9 lines).
patching file Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js
patching file Source/WebInspectorUI/UserInterface/Views/SourcesSidebarPanel.css
rm &apos;Source/WebInspectorUI/UserInterface/Views/SourcesSidebarPanel.css&apos;
patching file Source/WebInspectorUI/UserInterface/Views/SourcesSidebarPanel.js
rm &apos;Source/WebInspectorUI/UserInterface/Views/SourcesSidebarPanel.js&apos;
patching file Source/WebInspectorUI/UserInterface/Views/SourcesTabContentView.js
rm &apos;Source/WebInspectorUI/UserInterface/Views/SourcesTabContentView.js&apos;

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Joseph Pecoraro&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/9299070</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461958</commentid>
    <comment_count>4</comment_count>
      <attachid>350392</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-09-21 11:39:06 -0700</bug_when>
    <thetext>Created attachment 350392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461974</commentid>
    <comment_count>5</comment_count>
      <attachid>350392</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-21 11:56:08 -0700</bug_when>
    <thetext>Comment on attachment 350392
Patch

Clearing flags on attachment: 350392

Committed r236342: &lt;https://trac.webkit.org/changeset/236342&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461975</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-21 11:56:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461977</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-21 11:57:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/44687957&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350319</attachid>
            <date>2018-09-20 20:49:10 -0700</date>
            <delta_ts>2018-09-21 11:39:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189817-20180920204908.patch</filename>
            <type>text/plain</type>
            <size>38072</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGU0YzMyOWFlZTUwMmFiMGExNWNmMzE3M2Y0ODll
YjQyM2FhNGIxYTUuLjU0MTZmZTZhYjllYzk2NmEyN2M1YmZlOGVmYjJhZjgyYjRmNThhZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTA5LTIwICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBy
ZW1vdmUgc2V0dGluZyBmb3IgU291cmNlcyB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTgxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRT
dHJpbmdzLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
QmFzZS9NYWluLmpzOgorICAgICAgICAoV0kuY29udGVudExvYWRlZCk6CisgICAgICAgIChXSS5f
ZGVidWdnZXJEaWRQYXVzZSk6CisgICAgICAgIChXSS5pc1Nob3dpbmdTb3VyY2VzVGFiKTogUmVt
b3ZlZC4KKyAgICAgICAgKFdJLnNob3dTb3VyY2VzVGFiKTogUmVtb3ZlZC4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc1NpZGViYXJQYW5lbC5jc3M6IFJlbW92ZWQuCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzU2lkZWJhclBhbmVsLmpzOiBSZW1v
dmVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc1RhYkNvbnRlbnRWaWV3
LmpzOiBSZW1vdmVkLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVu
dVV0aWxpdGllcy5qczoKKyAgICAgICAgKFdJLmFwcGVuZENvbnRleHRNZW51SXRlbXNGb3JVUkwp
OgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3
LmpzOgorICAgICAgICAoV0kuU2V0dGluZ3NUYWJDb250ZW50Vmlldy5wcm90b3R5cGUuX2NyZWF0
ZUV4cGVyaW1lbnRhbFNldHRpbmdzVmlldyk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV0kuU291cmNlQ29kZVRleHRF
ZGl0b3IucHJvdG90eXBlLnRleHRFZGl0b3JHdXR0ZXJDb250ZXh0TWVudSk6CisKIDIwMTgtMDkt
MjAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHJlbW92ZSBWaXN1YWwgU3R5bGUgQ1NTIGRldGFpbHMgc2lkZWJhciBwYW5lbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9j
YWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2Vu
Lmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggNTA1NmM1YThlYjk0MjIxZmI0NWZhYzky
ZDJhMTJlMTFkYzA2YmUzZC4uYzZjZTNiMmQ3YjY2N2UwMjFlYjk4ZDcyZjQ3ZmMyZjMxOTJjYzYz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxp
emF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBAIC0zNDQsNyArMzQ0LDYgQEAg
bG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIEV2ZW50IExpc3RlbmVyIl0gPSAiRW5hYmxlIEV2ZW50
IExpc3RlbmVyIjsKIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBMYXllcnMgVGFiIl0gPSAiRW5h
YmxlIExheWVycyBUYWIiOwogbG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIE5ldyBUYWIgQmFyIl0g
PSAiRW5hYmxlIE5ldyBUYWIgQmFyIjsKIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBQcm9ncmFt
Il0gPSAiRW5hYmxlIFByb2dyYW0iOwotbG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIFNvdXJjZXMg
VGFiIl0gPSAiRW5hYmxlIFNvdXJjZXMgVGFiIjsKIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBW
aXN1YWwgQ2hhbmdlIERldGVjdGlvbiJdID0gIkVuYWJsZSBWaXN1YWwgQ2hhbmdlIERldGVjdGlv
biI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFbmFibGUgYWxsIGJyZWFrcG9pbnRzICglcykiXSA9ICJF
bmFibGUgYWxsIGJyZWFrcG9pbnRzICglcykiOwogbG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIGJy
ZWFrcG9pbnRzIl0gPSAiRW5hYmxlIGJyZWFrcG9pbnRzIjsKQEAgLTcyNCw3ICs3MjMsNiBAQCBs
b2NhbGl6ZWRTdHJpbmdzWyJSZXZlYWwgaW4gTGF5ZXJzIFRhYiJdID0gIlJldmVhbCBpbiBMYXll
cnMgVGFiIjsKIGxvY2FsaXplZFN0cmluZ3NbIlJldmVhbCBpbiBOZXR3b3JrIFRhYiJdID0gIlJl
dmVhbCBpbiBOZXR3b3JrIFRhYiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXZlYWwgaW4gT3JpZ2lu
YWwgUmVzb3VyY2UiXSA9ICJSZXZlYWwgaW4gT3JpZ2luYWwgUmVzb3VyY2UiOwogbG9jYWxpemVk
U3RyaW5nc1siUmV2ZWFsIGluIFJlc291cmNlcyBUYWIiXSA9ICJSZXZlYWwgaW4gUmVzb3VyY2Vz
IFRhYiI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyJSZXZlYWwgaW4gU291cmNlcyBUYWIiXSA9ICJSZXZl
YWwgaW4gU291cmNlcyBUYWIiOwogbG9jYWxpemVkU3RyaW5nc1siUm9sZSJdID0gIlJvbGUiOwog
bG9jYWxpemVkU3RyaW5nc1siU2FtZS1TaXRlIl0gPSAiU2FtZS1TaXRlIjsKIGxvY2FsaXplZFN0
cmluZ3NbIlNhbXBsZXMiXSA9ICJTYW1wbGVzIjsKQEAgLTgxNSw3ICs4MTMsNiBAQCBsb2NhbGl6
ZWRTdHJpbmdzWyJTb3J0IEFzY2VuZGluZyJdID0gIlNvcnQgQXNjZW5kaW5nIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIlNvcnQgRGVzY2VuZGluZyJdID0gIlNvcnQgRGVzY2VuZGluZyI7CiBsb2NhbGl6
ZWRTdHJpbmdzWyJTb3VyY2UiXSA9ICJTb3VyY2UiOwogbG9jYWxpemVkU3RyaW5nc1siU291cmNl
cyJdID0gIlNvdXJjZXMiOwotbG9jYWxpemVkU3RyaW5nc1siU291cmNlczoiXSA9ICJTb3VyY2Vz
OiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTcGFjZSJdID0gIlNwYWNlIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIlNwYWNlcyJdID0gIlNwYWNlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTcGVjaWZpY2l0eTog
KCVkLCAlZCwgJWQpIl0gPSAiU3BlY2lmaWNpdHk6ICglZCwgJWQsICVkKSI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKaW5kZXggYmM4MWQ5
ZDkwYmY0YTVmMWQ2Y2MwZTFkMTQ0ODY2M2E0NGU1MTMwNS4uYmI0NjNhMmIxYjdlY2MwMTVlZjBk
MDJmNmZmMDlhMzNlZjMxMDU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtNDM4LDcgKzQzOCw2IEBAIFdJLmNvbnRlbnRMb2Fk
ZWQgPSBmdW5jdGlvbigpCiAgICAgbGV0IHByb2R1Y3Rpb25UYWJDbGFzc2VzID0gWwogICAgICAg
ICBXSS5FbGVtZW50c1RhYkNvbnRlbnRWaWV3LAogICAgICAgICBXSS5OZXR3b3JrVGFiQ29udGVu
dFZpZXcsCi0gICAgICAgIFdJLlNvdXJjZXNUYWJDb250ZW50VmlldywKICAgICAgICAgV0kuRGVi
dWdnZXJUYWJDb250ZW50VmlldywKICAgICAgICAgV0kuUmVzb3VyY2VzVGFiQ29udGVudFZpZXcs
CiAgICAgICAgIFdJLlRpbWVsaW5lVGFiQ29udGVudFZpZXcsCkBAIC05NjYsMjMgKzk2NSw2IEBA
IFdJLmlzU2hvd2luZ1Jlc291cmNlc1RhYiA9IGZ1bmN0aW9uKCkKICAgICByZXR1cm4gdGhpcy50
YWJCcm93c2VyLnNlbGVjdGVkVGFiQ29udGVudFZpZXcgaW5zdGFuY2VvZiBXSS5SZXNvdXJjZXNU
YWJDb250ZW50VmlldzsKIH07CiAKLVdJLmlzU2hvd2luZ1NvdXJjZXNUYWIgPSBmdW5jdGlvbigp
Ci17Ci0gICAgcmV0dXJuIHRoaXMudGFiQnJvd3Nlci5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3IGlu
c3RhbmNlb2YgV0kuU291cmNlc1RhYkNvbnRlbnRWaWV3OwotfTsKLQotV0kuc2hvd1NvdXJjZXNU
YWIgPSBmdW5jdGlvbihvcHRpb25zID0ge30pCi17Ci0gICAgbGV0IHRhYkNvbnRlbnRWaWV3ID0g
dGhpcy50YWJCcm93c2VyLmJlc3RUYWJDb250ZW50Vmlld0ZvckNsYXNzKFdJLlNvdXJjZXNUYWJD
b250ZW50Vmlldyk7Ci0gICAgaWYgKCF0YWJDb250ZW50VmlldykKLSAgICAgICAgdGFiQ29udGVu
dFZpZXcgPSBuZXcgV0kuU291cmNlc1RhYkNvbnRlbnRWaWV3OwotCi0gICAgaWYgKG9wdGlvbnMu
YnJlYWtwb2ludFRvU2VsZWN0IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCkKLSAgICAgICAgdGFi
Q29udGVudFZpZXcucmV2ZWFsQW5kU2VsZWN0QnJlYWtwb2ludChvcHRpb25zLmJyZWFrcG9pbnRU
b1NlbGVjdCk7Ci0KLSAgICB0aGlzLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KHRh
YkNvbnRlbnRWaWV3KTsKLX07Ci0KIFdJLnNob3dTdG9yYWdlVGFiID0gZnVuY3Rpb24oKQogewog
ICAgIHZhciB0YWJDb250ZW50VmlldyA9IHRoaXMudGFiQnJvd3Nlci5iZXN0VGFiQ29udGVudFZp
ZXdGb3JDbGFzcyhXSS5TdG9yYWdlVGFiQ29udGVudFZpZXcpOwpAQCAtMTM2OCwxMCArMTM1MCw3
IEBAIFdJLl9kcmFnT3ZlciA9IGZ1bmN0aW9uKGV2ZW50KQogCiBXSS5fZGVidWdnZXJEaWRQYXVz
ZSA9IGZ1bmN0aW9uKGV2ZW50KQogewotICAgIGlmIChXSS5zZXR0aW5ncy5leHBlcmltZW50YWxF
bmFibGVTb3VyY2VzVGFiLnZhbHVlKQotICAgICAgICB0aGlzLnNob3dTb3VyY2VzVGFiKCk7Ci0g
ICAgZWxzZQotICAgICAgICB0aGlzLnNob3dEZWJ1Z2dlclRhYih7c2hvd1Njb3BlQ2hhaW5TaWRl
YmFyOiBXSS5zZXR0aW5ncy5zaG93U2NvcGVDaGFpbk9uUGF1c2UudmFsdWV9KTsKKyAgICB0aGlz
LnNob3dEZWJ1Z2dlclRhYih7c2hvd1Njb3BlQ2hhaW5TaWRlYmFyOiBXSS5zZXR0aW5ncy5zaG93
U2NvcGVDaGFpbk9uUGF1c2UudmFsdWV9KTsKIAogICAgIHRoaXMuX2Rhc2hib2FyZENvbnRhaW5l
ci5zaG93RGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHRoaXMuZGFzaGJvYXJkTWFu
YWdlci5kYXNoYm9hcmRzLmRlYnVnZ2VyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCmluZGV4IDhkODRlZjMyNDMwYjlmYWVl
OGJiYTk5NjFjNjliZWU2NDlmNTVlYzMuLjMxMjFjZmU5NDQ3YzExMjlhMjRkMjg4OWI2M2M2MzA4
NWU4NzI3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Jhc2UvU2V0dGluZy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9CYXNlL1NldHRpbmcuanMKQEAgLTEyMCw3ICsxMjAsNiBAQCBXSS5zZXR0aW5ncyA9IHsKIAog
ICAgIC8vIEV4cGVyaW1lbnRhbAogICAgIGV4cGVyaW1lbnRhbEVuYWJsZUxheWVyc1RhYjogbmV3
IFdJLlNldHRpbmcoImV4cGVyaW1lbnRhbC1lbmFibGUtbGF5ZXJzLXRhYiIsIGZhbHNlKSwKLSAg
ICBleHBlcmltZW50YWxFbmFibGVTb3VyY2VzVGFiOiBuZXcgV0kuU2V0dGluZygiZXhwZXJpbWVu
dGFsLWVuYWJsZS1zb3VyY2VzLWJhciIsIGZhbHNlKSwKICAgICBleHBlcmltZW50YWxMZWdhY3lT
dHlsZUVkaXRvcjogbmV3IFdJLlNldHRpbmcoImV4cGVyaW1lbnRhbC1sZWdhY3ktc3R5bGUtZWRp
dG9yIiwgZmFsc2UpLAogICAgIGV4cGVyaW1lbnRhbEVuYWJsZU5ld1RhYkJhcjogbmV3IFdJLlNl
dHRpbmcoImV4cGVyaW1lbnRhbC1lbmFibGUtbmV3LXRhYi1iYXIiLCBmYWxzZSksCiAgICAgZXhw
ZXJpbWVudGFsRW5hYmxlQWNjZXNzaWJpbGl0eUF1ZGl0VGFiOiBuZXcgV0kuU2V0dGluZygiZXhw
ZXJpbWVudGFsLWVuYWJsZS1hY2Nlc3NpYmlsaXR5LWF1ZGl0LXRhYiIsIGZhbHNlKSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA4ODRlYzc2
NDJmODYzMDE0OTQ0Y2EyMmI2YWU5ZDM4ZjFkNDdlNGUzLi4yMjE4Mjk4YWFlYjY2MTBmMjRmMDQx
NTljOTljNDEzNzVlNTk2OGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTWFpbi5odG1sCkBAIC0xODEsNyArMTgxLDYgQEAKICAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9IlZpZXdzL1NsaWRlci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iVmlld3MvU29mdENvbnRleHRNZW51LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJWaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5jc3MiPgotICAgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvU291cmNlc1NpZGViYXJQYW5lbC5jc3MiPgog
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvU3ByZWFkc2hlZXRDU1NTdHls
ZURlY2xhcmF0aW9uRWRpdG9yLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9TcHJlYWRzaGVldENTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmNzcyI+CiAgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9TcHJlYWRzaGVldFJ1bGVzU3R5bGVE
ZXRhaWxzUGFuZWwuY3NzIj4KQEAgLTUyMiw3ICs1MjEsNiBAQAogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9SZXNvdXJjZXNUYWJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL1NlYXJjaFRhYkNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9IlZpZXdzL1NvdXJjZXNUYWJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL1N0b3JhZ2VUYWJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanMiPjwvc2NyaXB0
PgogCkBAIC03MzksNyArNzM3LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU291cmNlQ29k
ZVRpbWVsaW5lVGltZWxpbmVEYXRhR3JpZE5vZGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9Tb3VyY2VDb2RlVGltZWxpbmVUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL1NvdXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnQuanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Tb3VyY2VzU2lkZWJhclBhbmVsLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU3Bhbm5pbmdEYXRhR3JpZE5vZGUuanMi
Pjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1NwcmVhZHNoZWV0Q1NTU3R5bGVE
ZWNsYXJhdGlvbkVkaXRvci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVudVV0aWxpdGllcy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0
aWVzLmpzCmluZGV4IGNiOWZjMzFhY2RmOTdkYTJjZmY5ZWE3MGY5ODFmNjQ1ZjhhNjk1NWMuLmYw
ZTdmZTJlNTU3NDg3ZDExNDMxMjQ1ODJiMGZiY2I1NzNkNTVmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVz
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRl
eHRNZW51VXRpbGl0aWVzLmpzCkBAIC0xMDEsMTMgKzEwMSw3IEBAIFdJLmFwcGVuZENvbnRleHRN
ZW51SXRlbXNGb3JVUkwgPSBmdW5jdGlvbihjb250ZXh0TWVudSwgdXJsLCBvcHRpb25zKQogICAg
IH0pOwogCiAgICAgaWYgKFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHVy
bCkpIHsKLSAgICAgICAgaWYgKFdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEVuYWJsZVNvdXJjZXNU
YWIudmFsdWUpIHsKLSAgICAgICAgICAgIGlmICghV0kuaXNTaG93aW5nU291cmNlc1RhYigpKSB7
Ci0gICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiUmV2
ZWFsIGluIFNvdXJjZXMgVGFiIiksICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgc2hvd1Jl
c291cmNlV2l0aE9wdGlvbnMoe3ByZWZlcnJlZFRhYlR5cGU6IFdJLlNvdXJjZXNUYWJDb250ZW50
Vmlldy5UeXBlfSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0gZWxzZSBpZiAoIVdJLmlzU2hvd2luZ1Jlc291cmNlc1RhYigpKSB7CisgICAgICAgIGlmICgh
V0kuaXNTaG93aW5nUmVzb3VyY2VzVGFiKCkpIHsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZEl0ZW0oV0kuVUlTdHJpbmcoIlJldmVhbCBpbiBSZXNvdXJjZXMgVGFiIiksICgpID0+IHsK
ICAgICAgICAgICAgICAgICBzaG93UmVzb3VyY2VXaXRoT3B0aW9ucyh7aWdub3JlTmV0d29ya1Rh
YjogdHJ1ZSwgaWdub3JlU2VhcmNoVGFiOiB0cnVlfSk7CiAgICAgICAgICAgICB9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdz
VGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IGM0ZGY2NGVhMTAzNjBiNzk0NzQ2
NTg0OTkyMWZiMWE5OTVkMzI5YWYuLmQ5MGYxZWRkMzg5YWY4ODIzNzY4ZDBjZjRkNmZmMmZlYjkz
NTViODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcwpAQCAtMjQ5LDkg
KzI0OSw2IEBAIFdJLlNldHRpbmdzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTZXR0aW5nc1RhYkNv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuVGFiQ29udGVudFZpCiAgICAgICAgICAgICBleHBlcmltZW50
YWxTZXR0aW5nc1ZpZXcuYWRkU2VwYXJhdG9yKCk7CiAgICAgICAgIH0KIAotICAgICAgICBleHBl
cmltZW50YWxTZXR0aW5nc1ZpZXcuYWRkU2V0dGluZyhXSS5VSVN0cmluZygiU291cmNlczoiKSwg
V0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlU291cmNlc1RhYiwgV0kuVUlTdHJpbmcoIkVu
YWJsZSBTb3VyY2VzIFRhYiIpKTsKLSAgICAgICAgZXhwZXJpbWVudGFsU2V0dGluZ3NWaWV3LmFk
ZFNlcGFyYXRvcigpOwotCiAgICAgICAgIGV4cGVyaW1lbnRhbFNldHRpbmdzVmlldy5hZGRTZXR0
aW5nKFdJLlVJU3RyaW5nKCJVc2VyIEludGVyZmFjZToiKSwgV0kuc2V0dGluZ3MuZXhwZXJpbWVu
dGFsRW5hYmxlTmV3VGFiQmFyLCBXSS5VSVN0cmluZygiRW5hYmxlIE5ldyBUYWIgQmFyIikpOwog
ICAgICAgICBleHBlcmltZW50YWxTZXR0aW5nc1ZpZXcuYWRkU2VwYXJhdG9yKCk7CiAKQEAgLTI3
Nyw3ICsyNzQsNiBAQCBXSS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU2V0dGluZ3NU
YWJDb250ZW50VmlldyBleHRlbmRzIFdJLlRhYkNvbnRlbnRWaQogCiAgICAgICAgIGxpc3RlbkZv
ckNoYW5nZShXSS5zZXR0aW5ncy5leHBlcmltZW50YWxMZWdhY3lTdHlsZUVkaXRvcik7CiAgICAg
ICAgIGxpc3RlbkZvckNoYW5nZShXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVMYXllcnNU
YWIpOwotICAgICAgICBsaXN0ZW5Gb3JDaGFuZ2UoV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5h
YmxlU291cmNlc1RhYik7CiAgICAgICAgIGxpc3RlbkZvckNoYW5nZShXSS5zZXR0aW5ncy5leHBl
cmltZW50YWxFbmFibGVOZXdUYWJCYXIpOwogICAgICAgICBsaXN0ZW5Gb3JDaGFuZ2UoV0kuc2V0
dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlQWNjZXNzaWJpbGl0eUF1ZGl0VGFiKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29k
ZVRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwppbmRleCA5M2IzYjlhMzU1NDA2MGIzYzMwYWE0MDUw
Nzk4MDQ2MzhlZGU2MDUzLi41MmZlNzFjYTJjYjE1Mzg5MWRmZmFiZTExZWUwMWE5MzYyNmVkNDIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
b3VyY2VDb2RlVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwpAQCAtMTI0OCwxNCArMTI0OCw3
IEBAIFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3Ig
ZXh0ZW5kcyBXSS5UZXh0RWRpdG9yCiAgICAgICAgIGlmIChicmVha3BvaW50cy5sZW5ndGggPT09
IDEpIHsKICAgICAgICAgICAgIFdJLmJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5hcHBlbmRD
b250ZXh0TWVudUl0ZW1zKGNvbnRleHRNZW51LCBicmVha3BvaW50c1swXSwgZXZlbnQudGFyZ2V0
KTsKIAotICAgICAgICAgICAgaWYgKFdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEVuYWJsZVNvdXJj
ZXNUYWIudmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAoIVdJLmlzU2hvd2luZ1NvdXJjZXNU
YWIoKSkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3Io
KTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmlu
ZygiUmV2ZWFsIGluIFNvdXJjZXMgVGFiIiksICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFdJLnNob3dTb3VyY2VzVGFiKHticmVha3BvaW50VG9TZWxlY3Q6IGJyZWFrcG9pbnRzWzBd
fSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIVdJLmlzU2hvd2luZ0RlYnVnZ2VyVGFiKCkpIHsKKyAgICAgICAgICAg
IGlmICghV0kuaXNTaG93aW5nRGVidWdnZXJUYWIoKSkgewogICAgICAgICAgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwogICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZEl0ZW0oV0kuVUlTdHJpbmcoIlJldmVhbCBpbiBEZWJ1Z2dlciBUYWIiKSwgKCkgPT4gewog
ICAgICAgICAgICAgICAgICAgICBXSS5zaG93RGVidWdnZXJUYWIoe2JyZWFrcG9pbnRUb1NlbGVj
dDogYnJlYWtwb2ludHNbMF19KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNTaWRlYmFyUGFuZWwuY3NzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc1NpZGViYXJQYW5lbC5jc3MKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4Zjg5YTAwNGU3YjM0YjljYzlkMzkxYjI2MzFh
MzE0MzMzZjU0YzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc1NpZGVi
YXJQYW5lbC5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
LnNpZGViYXIgPiAucGFuZWwubmF2aWdhdGlvbi5zb3VyY2VzID4gLmNvbnRlbnQgewotICAgIHRv
cDogdmFyKC0tbmF2aWdhdGlvbi1iYXItaGVpZ2h0KTsKLX0KLQotLnNpZGViYXIgPiAucGFuZWwu
bmF2aWdhdGlvbi5zb3VyY2VzID4gLm5hdmlnYXRpb24tYmFyIHsKLSAgICBwb3NpdGlvbjogYWJz
b2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIGxlZnQ6IDA7Ci0gICAgcmlnaHQ6IDA7Ci19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2Vz
U2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU291cmNlc1NpZGViYXJQYW5lbC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGJiMGYwMzRlYjQzYTg2YmNlZDMyNTgyYzRhYmRkY2Q3Mzg5MzdiYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzU2lkZWJhclBhbmVsLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsNTA0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1XSS5Tb3VyY2VzU2lkZWJhclBhbmVsID0gY2xh
c3MgU291cmNlc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwK
LXsKLSAgICBjb25zdHJ1Y3RvcigpCi0gICAgewotICAgICAgICBzdXBlcigic291cmNlcyIsIFdJ
LlVJU3RyaW5nKCJTb3VyY2VzIiksIHRydWUpOwotCi0gICAgICAgIHRoaXMuX25hdmlnYXRpb25C
YXIgPSBuZXcgV0kuTmF2aWdhdGlvbkJhcjsKLSAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMu
X25hdmlnYXRpb25CYXIpOwotCi0gICAgICAgIHRoaXMuX3RhcmdldFRyZWVFbGVtZW50TWFwID0g
bmV3IE1hcDsKLQotICAgICAgICBsZXQgc2NvcGVJdGVtUHJlZml4ID0gInNvdXJjZXMtc2lkZWJh
ci0iOwotICAgICAgICBsZXQgc2NvcGVCYXJJdGVtcyA9IFtdOwotCi0gICAgICAgIHNjb3BlQmFy
SXRlbXMucHVzaChuZXcgV0kuU2NvcGVCYXJJdGVtKHNjb3BlSXRlbVByZWZpeCArICJ0eXBlLWFs
bCIsIFdJLlVJU3RyaW5nKCJBbGwgUmVzb3VyY2VzIiksIHRydWUpKTsKLQotICAgICAgICBmb3Ig
KGxldCBrZXkgaW4gV0kuUmVzb3VyY2UuVHlwZSkgewotICAgICAgICAgICAgbGV0IHZhbHVlID0g
V0kuUmVzb3VyY2UuVHlwZVtrZXldOwotICAgICAgICAgICAgbGV0IHNjb3BlQmFySXRlbSA9IG5l
dyBXSS5TY29wZUJhckl0ZW0oc2NvcGVJdGVtUHJlZml4ICsgdmFsdWUsIFdJLlJlc291cmNlLmRp
c3BsYXlOYW1lRm9yVHlwZSh2YWx1ZSwgdHJ1ZSkpOwotICAgICAgICAgICAgc2NvcGVCYXJJdGVt
W1dJLlNvdXJjZXNTaWRlYmFyUGFuZWwuUmVzb3VyY2VUeXBlU3ltYm9sXSA9IHZhbHVlOwotICAg
ICAgICAgICAgc2NvcGVCYXJJdGVtcy5wdXNoKHNjb3BlQmFySXRlbSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB0aGlzLl9zY29wZUJhciA9IG5ldyBXSS5TY29wZUJhcigic291cmNlcy1zaWRlYmFy
LXNjb3BlLWJhciIsIHNjb3BlQmFySXRlbXMsIHNjb3BlQmFySXRlbXNbMF0sIHRydWUpOwotICAg
ICAgICB0aGlzLl9zY29wZUJhci5hZGRFdmVudExpc3RlbmVyKFdJLlNjb3BlQmFyLkV2ZW50LlNl
bGVjdGlvbkNoYW5nZWQsIHRoaXMuX3Njb3BlQmFyU2VsZWN0aW9uRGlkQ2hhbmdlLCB0aGlzKTsK
LQotICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX3Nj
b3BlQmFyKTsKLQotICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2
ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0
aGlzKTsKLQotICAgICAgICBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdJLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLkV2ZW50Lk1haW5GcmFtZURpZENoYW5nZSwgdGhpcy5f
bWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzKTsKLQotICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuU2NyaXB0QWRkZWQsIHRo
aXMuX3NjcmlwdFdhc0FkZGVkLCB0aGlzKTsKLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlNjcmlwdFJlbW92ZWQsIHRo
aXMuX3NjcmlwdFdhc1JlbW92ZWQsIHRoaXMpOwotICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuU2NyaXB0c0NsZWFyZWQs
IHRoaXMuX3NjcmlwdHNDbGVhcmVkLCB0aGlzKTsKLQotICAgICAgICBXSS5jc3NTdHlsZU1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5DU1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFk
ZGVkLCB0aGlzLl9zdHlsZVNoZWV0QWRkZWQsIHRoaXMpOwotCi0gICAgICAgIFdJLnRhcmdldE1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRhcmdldFJlbW92
ZWQsIHRoaXMuX3RhcmdldFJlbW92ZWQsIHRoaXMpOwotCi0gICAgICAgIFdJLm5vdGlmaWNhdGlv
bnMuYWRkRXZlbnRMaXN0ZW5lcihXSS5Ob3RpZmljYXRpb24uRXh0cmFEb21haW5zQWN0aXZhdGVk
LCB0aGlzLl9leHRyYURvbWFpbnNBY3RpdmF0ZWQsIHRoaXMpOwotCi0gICAgICAgIHRoaXMuY29u
dGVudFRyZWVPdXRsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV0kuVHJlZU91dGxpbmUuRXZlbnQuU2Vs
ZWN0aW9uRGlkQ2hhbmdlLCB0aGlzLl90cmVlU2VsZWN0aW9uRGlkQ2hhbmdlLCB0aGlzKTsKLSAg
ICAgICAgdGhpcy5jb250ZW50VHJlZU91dGxpbmUuaW5jbHVkZVNvdXJjZU1hcFJlc291cmNlQ2hp
bGRyZW4gPSB0cnVlOwotCi0gICAgICAgIGlmIChTb3VyY2VzU2lkZWJhclBhbmVsLnNob3VsZFBs
YWNlUmVzb3VyY2VzQXRUb3BMZXZlbCgpKSB7Ci0gICAgICAgICAgICB0aGlzLmNvbnRlbnRUcmVl
T3V0bGluZS5kaXNjbG9zdXJlQnV0dG9ucyA9IGZhbHNlOwotICAgICAgICAgICAgV0kuU291cmNl
Q29kZS5hZGRFdmVudExpc3RlbmVyKFdJLlNvdXJjZUNvZGUuRXZlbnQuU291cmNlTWFwQWRkZWQs
ICgpID0+IHsgdGhpcy5jb250ZW50VHJlZU91dGxpbmUuZGlzY2xvc3VyZUJ1dHRvbnMgPSB0cnVl
OyB9LCB0aGlzKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFN0YXRpYwotCi0gICAgc3Rh
dGljIHNob3VsZFBsYWNlUmVzb3VyY2VzQXRUb3BMZXZlbCgpCi0gICAgewotICAgICAgICByZXR1
cm4gKFdJLnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlwZSA9PT0gV0kuRGVidWdnYWJsZVR5cGUuSmF2
YVNjcmlwdCAmJiAhV0kuc2hhcmVkQXBwLmhhc0V4dHJhRG9tYWlucykKLSAgICAgICAgICAgIHx8
IFdJLnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlwZSA9PT0gV0kuRGVidWdnYWJsZVR5cGUuU2Vydmlj
ZVdvcmtlcjsKLSAgICB9Ci0KLSAgICAvLyBQdWJsaWMKLQotICAgIGdldCBtaW5pbXVtV2lkdGgo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25CYXIubWluaW11bVdpZHRo
OwotICAgIH0KLQotICAgIGNsb3NlZCgpCi0gICAgewotICAgICAgICBzdXBlci5jbG9zZWQoKTsK
LQotICAgICAgICBXSS5GcmFtZS5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMp
OwotICAgICAgICBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51
bGwsIG51bGwsIHRoaXMpOwotICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRM
aXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKLSAgICAgICAgV0kubm90aWZpY2F0aW9ucy5yZW1v
dmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwotICAgIH0KLQotICAgIHNob3dEZWZh
dWx0Q29udGVudFZpZXcoKQotICAgIHsKLSAgICAgICAgaWYgKFdJLmZyYW1lUmVzb3VyY2VNYW5h
Z2VyLm1haW5GcmFtZSkgewotICAgICAgICAgICAgdGhpcy5jb250ZW50QnJvd3Nlci5zaG93Q29u
dGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWlu
RnJhbWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbGV0IGZp
cnN0VHJlZUVsZW1lbnQgPSB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZS5jaGlsZHJlblswXTsKLSAg
ICAgICAgaWYgKGZpcnN0VHJlZUVsZW1lbnQpCi0gICAgICAgICAgICB0aGlzLnNob3dEZWZhdWx0
Q29udGVudFZpZXdGb3JUcmVlRWxlbWVudChmaXJzdFRyZWVFbGVtZW50KTsKLSAgICB9Ci0KLSAg
ICB0cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQotICAg
IHsKLSAgICAgICAgLy8gQSBjdXN0b20gaW1wbGVtZW50YXRpb24gaXMgbmVlZGVkIGZvciB0aGlz
IHNpbmNlIHRoZSBmcmFtZXMgYXJlIHBvcHVsYXRlZCBsYXppbHkuCi0KLSAgICAgICAgaWYgKCF0
aGlzLl9tYWluRnJhbWVUcmVlRWxlbWVudCAmJiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2Vv
ZiBXSS5SZXNvdXJjZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkZyYW1lIHx8
IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuQ29sbGVjdGlvbikpIHsKLSAgICAgICAg
ICAgIC8vIEFsbCByZXNvdXJjZXMgYXJlIHVuZGVyIHRoZSBtYWluIGZyYW1lLCBzbyB3ZSBuZWVk
IHRvIHJldHVybiBlYXJseSBpZiB3ZSBkb24ndCBoYXZlIHRoZSBtYWluIGZyYW1lIHlldC4KLSAg
ICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlIEZyYW1l
IGlzIHVzZWQgYXMgdGhlIHJlcHJlc2VudGVkT2JqZWN0IGluc3RlYWQgb2YgdGhlIG1haW4gcmVz
b3VyY2UgaW4gb3VyIHRyZWUuCi0gICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdJLlJlc291cmNlICYmIHJlcHJlc2VudGVkT2JqZWN0LnBhcmVudEZyYW1lICYmIHJlcHJl
c2VudGVkT2JqZWN0LnBhcmVudEZyYW1lLm1haW5SZXNvdXJjZSA9PT0gcmVwcmVzZW50ZWRPYmpl
Y3QpCi0gICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0LnBh
cmVudEZyYW1lOwotCi0gICAgICAgIGZ1bmN0aW9uIGlzQW5jZXN0b3IoYW5jZXN0b3IsIHJlc291
cmNlT3JGcmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gU291cmNlTWFwUmVzb3VyY2Vz
IGFyZSBkZXNjZW5kYW50cyBvZiBhbm90aGVyIFNvdXJjZUNvZGUgb2JqZWN0LgotICAgICAgICAg
ICAgaWYgKHJlc291cmNlT3JGcmFtZSBpbnN0YW5jZW9mIFdJLlNvdXJjZU1hcFJlc291cmNlKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHJlc291cmNlT3JGcmFtZS5zb3VyY2VNYXAub3JpZ2luYWxT
b3VyY2VDb2RlID09PSBhbmNlc3RvcikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICAgICAgICAgICAgICAvLyBOb3QgYSBkaXJlY3QgYW5jZXN0b3IsIHNvIGNoZWNrIHRo
ZSBhbmNlc3RvcnMgb2YgdGhlIHBhcmVudCBTb3VyY2VDb2RlIG9iamVjdC4KLSAgICAgICAgICAg
ICAgICByZXNvdXJjZU9yRnJhbWUgPSByZXNvdXJjZU9yRnJhbWUuc291cmNlTWFwLm9yaWdpbmFs
U291cmNlQ29kZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbGV0IGN1cnJlbnRGcmFt
ZSA9IHJlc291cmNlT3JGcmFtZS5wYXJlbnRGcmFtZTsKLSAgICAgICAgICAgIHdoaWxlIChjdXJy
ZW50RnJhbWUpIHsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZyYW1lID09PSBhbmNlc3Rv
cikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgY3Vy
cmVudEZyYW1lID0gY3VycmVudEZyYW1lLnBhcmVudEZyYW1lOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBn
ZXRQYXJlbnQocmVzb3VyY2VPckZyYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBTb3Vy
Y2VNYXBSZXNvdXJjZXMgYXJlIGRlc2NlbmRhbnRzIG9mIGFub3RoZXIgU291cmNlQ29kZSBvYmpl
Y3QuCi0gICAgICAgICAgICBpZiAocmVzb3VyY2VPckZyYW1lIGluc3RhbmNlb2YgV0kuU291cmNl
TWFwUmVzb3VyY2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlT3JGcmFtZS5zb3Vy
Y2VNYXAub3JpZ2luYWxTb3VyY2VDb2RlOwotICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlT3JG
cmFtZS5wYXJlbnRGcmFtZTsKLSAgICAgICAgfQotCi0gICAgICAgIGxldCB0cmVlRWxlbWVudCA9
IHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChyZXByZXNlbnRlZE9iamVj
dCwgaXNBbmNlc3RvciwgZ2V0UGFyZW50KTsKLSAgICAgICAgaWYgKHRyZWVFbGVtZW50KQotICAg
ICAgICAgICAgcmV0dXJuIHRyZWVFbGVtZW50OwotCi0gICAgICAgIC8vIE9ubHkgc3BlY2lhbCBj
YXNlIFNjcmlwdCBvYmplY3RzLgotICAgICAgICBpZiAoIShyZXByZXNlbnRlZE9iamVjdCBpbnN0
YW5jZW9mIFdJLlNjcmlwdCkpIHsKLSAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkRpZG4ndCBm
aW5kIGEgVHJlZUVsZW1lbnQgZm9yIHJlcHJlc2VudGVkT2JqZWN0IiwgcmVwcmVzZW50ZWRPYmpl
Y3QpOwotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJ
ZiB0aGUgU2NyaXB0IGhhcyBhIFVSTCB3ZSBzaG91bGQgaGF2ZSBmb3VuZCBpdCBlYXJsaWVyLgot
ICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QudXJsKSB7Ci0gICAgICAgICAgICBjb25zb2xl
LmVycm9yKCJEaWRuJ3QgZmluZCBhIFNjcmlwdFRyZWVFbGVtZW50IGZvciBhIFNjcmlwdCB3aXRo
IGEgVVJMLiIpOwotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBTaW5jZSB0aGUgU2NyaXB0IGRvZXMgbm90IGhhdmUgYSBVUkwgd2UgY29uc2lkZXIgaXQg
YW4gJ2Fub255bW91cycgc2NyaXB0LiBUaGVzZSBzY3JpcHRzIGhhcHBlbiBmcm9tIGNhbGxzIHRv
Ci0gICAgICAgIC8vIHdpbmRvdy5ldmFsKCkgb3IgYnJvd3NlciBmZWF0dXJlcyBsaWtlIEF1dG8g
RmlsbCBhbmQgUmVhZGVyLiBUaGV5IGFyZSBub3Qgbm9ybWFsbHkgYWRkZWQgdG8gdGhlIHNpZGVi
YXIsIGJ1dCBzaW5jZQotICAgICAgICAvLyB3ZSBoYXZlIGEgU2NyaXB0Q29udGVudFZpZXcgYXNr
aW5nIGZvciB0aGUgdHJlZSBlbGVtZW50IHdlIHdpbGwgbWFrZSBhIFNjcmlwdFRyZWVFbGVtZW50
IG9uIGRlbWFuZCBhbmQgYWRkIGl0LgotCi0gICAgICAgIGlmICghdGhpcy5fYW5vbnltb3VzU2Ny
aXB0c0ZvbGRlclRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICBsZXQgY29sbGVjdGlvbiA9IG5l
dyBXSS5TY3JpcHRDb2xsZWN0aW9uOwotICAgICAgICAgICAgdGhpcy5fYW5vbnltb3VzU2NyaXB0
c0ZvbGRlclRyZWVFbGVtZW50ID0gbmV3IFdJLkZvbGRlclRyZWVFbGVtZW50KFdJLlVJU3RyaW5n
KCJBbm9ueW1vdXMgU2NyaXB0cyIpLCBjb2xsZWN0aW9uKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmICghdGhpcy5fYW5vbnltb3VzU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50LnBhcmVudCkgewot
ICAgICAgICAgICAgbGV0IGluZGV4ID0gaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0
ZWRCeUZ1bmN0aW9uKHRoaXMuX2Fub255bW91c1NjcmlwdHNGb2xkZXJUcmVlRWxlbWVudCwgdGhp
cy5jb250ZW50VHJlZU91dGxpbmUuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVUcmVlRWxlbWVudHMp
OwotICAgICAgICAgICAgdGhpcy5jb250ZW50VHJlZU91dGxpbmUuaW5zZXJ0Q2hpbGQodGhpcy5f
YW5vbnltb3VzU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50LCBpbmRleCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB0aGlzLl9hbm9ueW1vdXNTY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQucmVwcmVzZW50
ZWRPYmplY3QuYWRkKHJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAgICAgICBsZXQgc2NyaXB0VHJl
ZUVsZW1lbnQgPSBuZXcgV0kuU2NyaXB0VHJlZUVsZW1lbnQocmVwcmVzZW50ZWRPYmplY3QpOwot
ICAgICAgICB0aGlzLl9hbm9ueW1vdXNTY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQuYXBwZW5kQ2hp
bGQoc2NyaXB0VHJlZUVsZW1lbnQpOwotCi0gICAgICAgIHJldHVybiBzY3JpcHRUcmVlRWxlbWVu
dDsKLSAgICB9Ci0KLSAgICAvLyBQcm90ZWN0ZWQKLQotICAgIGluaXRpYWxMYXlvdXQoKQotICAg
IHsKLSAgICAgICAgc3VwZXIuaW5pdGlhbExheW91dCgpOwotCi0gICAgICAgIGlmIChXSS5mcmFt
ZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUpCi0gICAgICAgICAgICB0aGlzLl9tYWluRnJhbWVN
YWluUmVzb3VyY2VEaWRDaGFuZ2UoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKTsK
LQotICAgICAgICBmb3IgKGxldCBzY3JpcHQgb2YgV0kuZGVidWdnZXJNYW5hZ2VyLmtub3duTm9u
UmVzb3VyY2VTY3JpcHRzKSB7Ci0gICAgICAgICAgICB0aGlzLl9hZGRTY3JpcHQoc2NyaXB0KTsK
LQotICAgICAgICAgICAgaWYgKHNjcmlwdC5zb3VyY2VNYXBzLmxlbmd0aCAmJiBTb3VyY2VzU2lk
ZWJhclBhbmVsLnNob3VsZFBsYWNlUmVzb3VyY2VzQXRUb3BMZXZlbCgpKQotICAgICAgICAgICAg
ICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmRpc2Nsb3N1cmVCdXR0b25zID0gdHJ1ZTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIGhhc0N1c3RvbUZpbHRlcnMoKQotICAgIHsKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQodGhpcy5fc2NvcGVCYXIuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDEp
OwotICAgICAgICBsZXQgc2VsZWN0ZWRTY29wZUJhckl0ZW0gPSB0aGlzLl9zY29wZUJhci5zZWxl
Y3RlZEl0ZW1zWzBdOwotICAgICAgICByZXR1cm4gc2VsZWN0ZWRTY29wZUJhckl0ZW0gJiYgIXNl
bGVjdGVkU2NvcGVCYXJJdGVtLmV4Y2x1c2l2ZTsKLSAgICB9Ci0KLSAgICBtYXRjaFRyZWVFbGVt
ZW50QWdhaW5zdEN1c3RvbUZpbHRlcnModHJlZUVsZW1lbnQsIGZsYWdzKQotICAgIHsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2NvcGVCYXIuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09
IDEpOwotICAgICAgICBsZXQgc2VsZWN0ZWRTY29wZUJhckl0ZW0gPSB0aGlzLl9zY29wZUJhci5z
ZWxlY3RlZEl0ZW1zWzBdOwotCi0gICAgICAgIC8vIFNob3cgZXZlcnl0aGluZyBpZiB0aGVyZSBp
cyBubyBzZWxlY3Rpb24gb3IgIkFsbCBSZXNvdXJjZXMiIGlzIHNlbGVjdGVkICh0aGUgZXhjbHVz
aXZlIGl0ZW0pLgotICAgICAgICBpZiAoIXNlbGVjdGVkU2NvcGVCYXJJdGVtIHx8IHNlbGVjdGVk
U2NvcGVCYXJJdGVtLmV4Y2x1c2l2ZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
ICAgIC8vIEZvbGRlcnMgYXJlIGhpZGRlbiBvbiB0aGUgZmlyc3QgcGFzcywgYnV0IHZpc2libGUg
Y2hpbGRlbiB1bmRlciB0aGUgZm9sZGVyIHdpbGwgZm9yY2UgdGhlIGZvbGRlciB2aXNpYmxlIGFn
YWluLgotICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5Gb2xkZXJUcmVlRWxl
bWVudCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBmdW5jdGlvbiBtYXRj
aCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJ
LkZyYW1lVHJlZUVsZW1lbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkU2NvcGVC
YXJJdGVtW1dJLlNvdXJjZXNTaWRlYmFyUGFuZWwuUmVzb3VyY2VUeXBlU3ltYm9sXSA9PT0gV0ku
UmVzb3VyY2UuVHlwZS5Eb2N1bWVudDsKLQotICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50IGlu
c3RhbmNlb2YgV0kuU2NyaXB0VHJlZUVsZW1lbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGVjdGVkU2NvcGVCYXJJdGVtW1dJLlNvdXJjZXNTaWRlYmFyUGFuZWwuUmVzb3VyY2VUeXBlU3lt
Ym9sXSA9PT0gV0kuUmVzb3VyY2UuVHlwZS5TY3JpcHQ7Ci0KLSAgICAgICAgICAgIGlmICh0cmVl
RWxlbWVudCBpbnN0YW5jZW9mIFdJLkNTU1N0eWxlU2hlZXRUcmVlRWxlbWVudCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc2VsZWN0ZWRTY29wZUJhckl0ZW1bV0kuU291cmNlc1NpZGViYXJQYW5l
bC5SZXNvdXJjZVR5cGVTeW1ib2xdID09PSBXSS5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQ7Ci0K
LSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuUmVz
b3VyY2VUcmVlRWxlbWVudCwgIlVua25vd24gdHJlZUVsZW1lbnQiLCB0cmVlRWxlbWVudCk7Ci0g
ICAgICAgICAgICBpZiAoISh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLlJlc291cmNlVHJlZUVs
ZW1lbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgcmV0
dXJuIHRyZWVFbGVtZW50LnJlc291cmNlLnR5cGUgPT09IHNlbGVjdGVkU2NvcGVCYXJJdGVtW1dJ
LlNvdXJjZXNTaWRlYmFyUGFuZWwuUmVzb3VyY2VUeXBlU3ltYm9sXTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGxldCBtYXRjaGVkID0gbWF0Y2goKTsKLSAgICAgICAgaWYgKG1hdGNoZWQpCi0gICAg
ICAgICAgICBmbGFncy5leHBhbmRUcmVlRWxlbWVudCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBt
YXRjaGVkOwotICAgIH0KLQotICAgIC8vIFByaXZhdGUKLQotICAgIF9tYWluUmVzb3VyY2VEaWRD
aGFuZ2UoZXZlbnQpCi0gICAgewotICAgICAgICBpZiAoIWV2ZW50LnRhcmdldC5pc01haW5GcmFt
ZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX21haW5GcmFtZU1haW5S
ZXNvdXJjZURpZENoYW5nZShldmVudC50YXJnZXQpOwotICAgIH0KLQotICAgIF9tYWluRnJhbWVE
aWRDaGFuZ2UoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl9tYWluRnJhbWVNYWluUmVzb3Vy
Y2VEaWRDaGFuZ2UoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKTsKLSAgICB9Ci0K
LSAgICBfbWFpbkZyYW1lTWFpblJlc291cmNlRGlkQ2hhbmdlKG1haW5GcmFtZSkKLSAgICB7Ci0g
ICAgICAgIHRoaXMuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdDb250YWluZXIuY2xvc2VBbGxD
b250ZW50Vmlld3MoKTsKLQotICAgICAgICBpZiAodGhpcy5fbWFpbkZyYW1lVHJlZUVsZW1lbnQp
IHsKLSAgICAgICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLnJlbW92ZUNoaWxkKHRoaXMu
X21haW5GcmFtZVRyZWVFbGVtZW50KTsKLSAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZVRyZWVF
bGVtZW50ID0gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghbWFpbkZyYW1lKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX21haW5GcmFtZVRyZWVFbGVtZW50ID0g
bmV3IFdJLkZyYW1lVHJlZUVsZW1lbnQobWFpbkZyYW1lKTsKLSAgICAgICAgdGhpcy5jb250ZW50
VHJlZU91dGxpbmUuaW5zZXJ0Q2hpbGQodGhpcy5fbWFpbkZyYW1lVHJlZUVsZW1lbnQsIDApOwot
Ci0gICAgICAgIGZ1bmN0aW9uIGRlbGF5ZWRXb3JrKCkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKCF0aGlzLmNvbnRlbnRUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KSB7Ci0gICAg
ICAgICAgICAgICAgbGV0IGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY29udGVudEJyb3dzZXIu
Y3VycmVudENvbnRlbnRWaWV3OwotICAgICAgICAgICAgICAgIGxldCB0cmVlRWxlbWVudCA9IGN1
cnJlbnRDb250ZW50VmlldyA/IHRoaXMudHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdChj
dXJyZW50Q29udGVudFZpZXcucmVwcmVzZW50ZWRPYmplY3QpIDogbnVsbDsKLSAgICAgICAgICAg
ICAgICBpZiAoIXRyZWVFbGVtZW50KQotICAgICAgICAgICAgICAgICAgICB0cmVlRWxlbWVudCA9
IHRoaXMuX21haW5GcmFtZVRyZWVFbGVtZW50OwotICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Rl
ZmF1bHRDb250ZW50Vmlld0ZvclRyZWVFbGVtZW50KHRyZWVFbGVtZW50KTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIENvb2tpZSByZXN0b3JhdGlvbiB3aWxsIGF0dGVt
cHQgdG8gcmUtc2VsZWN0IHRoZSByZXNvdXJjZSB3ZSB3ZXJlIHNob3dpbmcuCi0gICAgICAgIC8v
IEdpdmUgaXQgdGltZSB0byBkbyB0aGF0IGJlZm9yZSBzZWxlY3RpbmcgdGhlIG1haW4gZnJhbWUg
cmVzb3VyY2UuCi0gICAgICAgIHNldFRpbWVvdXQoZGVsYXllZFdvcmsuYmluZCh0aGlzKSk7Ci0g
ICAgfQotCi0gICAgX3NjcmlwdFdhc0FkZGVkKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5f
YWRkU2NyaXB0KGV2ZW50LmRhdGEuc2NyaXB0KTsKLSAgICB9Ci0KLSAgICBfYWRkU2NyaXB0KHNj
cmlwdCkKLSAgICB7Ci0gICAgICAgIC8vIFdlIGRvbid0IGFkZCBzY3JpcHRzIHdpdGhvdXQgVVJM
cyBoZXJlLiBUaG9zZSBzY3JpcHRzIGNhbiBxdWlja2x5IGNsdXR0ZXIgdGhlIGludGVyZmFjZSBh
bmQKLSAgICAgICAgLy8gYXJlIHVzdWFsbHkgbW9yZSB0cmFuc2llbnQuIFRoZXkgd2lsbCBnZXQg
YWRkZWQgaWYvd2hlbiB0aGV5IG5lZWQgdG8gYmUgc2hvd24gaW4gYSBjb250ZW50IHZpZXcuCi0g
ICAgICAgIGlmICghc2NyaXB0LnVybCAmJiAhc2NyaXB0LnNvdXJjZVVSTCkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAvLyBUYXJnZXQgbWFpbiByZXNvdXJjZS4KLSAgICAgICAgaWYg
KHNjcmlwdC50YXJnZXQgIT09IFdJLnBhZ2VUYXJnZXQpIHsKLSAgICAgICAgICAgIGlmIChzY3Jp
cHQuaXNNYWluUmVzb3VyY2UoKSkKLSAgICAgICAgICAgICAgICB0aGlzLl9hZGRUYXJnZXRXaXRo
TWFpblJlc291cmNlKHNjcmlwdC50YXJnZXQpOwotICAgICAgICAgICAgdGhpcy5jb250ZW50VHJl
ZU91dGxpbmUuZGlzY2xvc3VyZUJ1dHRvbnMgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlIHNjcmlwdCBVUkwgbWF0Y2hlcyBhIHJlc291
cmNlIHdlIGNhbiBhc3N1bWUgaXQgaXMgcGFydCBvZiB0aGF0IHJlc291cmNlIGFuZCBkb2VzIG5v
dCBuZWVkIGFkZGVkLgotICAgICAgICBpZiAoc2NyaXB0LnJlc291cmNlIHx8IHNjcmlwdC5keW5h
bWljYWxseUFkZGVkU2NyaXB0RWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBsZXQgaW5zZXJ0SW50b1RvcExldmVsID0gZmFsc2U7Ci0gICAgICAgIGxldCBwYXJlbnRGb2xk
ZXJUcmVlRWxlbWVudCA9IG51bGw7Ci0KLSAgICAgICAgaWYgKHNjcmlwdC5pbmplY3RlZCkgewot
ICAgICAgICAgICAgaWYgKCF0aGlzLl9leHRlbnNpb25TY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQp
IHsKLSAgICAgICAgICAgICAgICBsZXQgY29sbGVjdGlvbiA9IG5ldyBXSS5TY3JpcHRDb2xsZWN0
aW9uOwotICAgICAgICAgICAgICAgIHRoaXMuX2V4dGVuc2lvblNjcmlwdHNGb2xkZXJUcmVlRWxl
bWVudCA9IG5ldyBXSS5Gb2xkZXJUcmVlRWxlbWVudChXSS5VSVN0cmluZygiRXh0ZW5zaW9uIFNj
cmlwdHMiKSwgY29sbGVjdGlvbik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHBhcmVu
dEZvbGRlclRyZWVFbGVtZW50ID0gdGhpcy5fZXh0ZW5zaW9uU2NyaXB0c0ZvbGRlclRyZWVFbGVt
ZW50OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKFNvdXJjZXNTaWRlYmFyUGFu
ZWwuc2hvdWxkUGxhY2VSZXNvdXJjZXNBdFRvcExldmVsKCkpCi0gICAgICAgICAgICAgICAgaW5z
ZXJ0SW50b1RvcExldmVsID0gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIGlmICghdGhpcy5fZXh0cmFTY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgbGV0IGNvbGxlY3Rpb24gPSBuZXcgV0kuU2NyaXB0Q29sbGVjdGlvbjsKLSAg
ICAgICAgICAgICAgICAgICAgdGhpcy5fZXh0cmFTY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQgPSBu
ZXcgV0kuRm9sZGVyVHJlZUVsZW1lbnQoV0kuVUlTdHJpbmcoIkV4dHJhIFNjcmlwdHMiKSwgY29s
bGVjdGlvbik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcGFyZW50Rm9s
ZGVyVHJlZUVsZW1lbnQgPSB0aGlzLl9leHRyYVNjcmlwdHNGb2xkZXJUcmVlRWxlbWVudDsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChwYXJlbnRGb2xkZXJUcmVlRWxl
bWVudCkKLSAgICAgICAgICAgIHBhcmVudEZvbGRlclRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2Jq
ZWN0LmFkZChzY3JpcHQpOwotCi0gICAgICAgIGxldCBzY3JpcHRUcmVlRWxlbWVudCA9IG5ldyBX
SS5TY3JpcHRUcmVlRWxlbWVudChzY3JpcHQpOwotCi0gICAgICAgIGlmIChpbnNlcnRJbnRvVG9w
TGV2ZWwpIHsKLSAgICAgICAgICAgIGxldCBpbmRleCA9IGluc2VydGlvbkluZGV4Rm9yT2JqZWN0
SW5MaXN0U29ydGVkQnlGdW5jdGlvbihzY3JpcHRUcmVlRWxlbWVudCwgdGhpcy5jb250ZW50VHJl
ZU91dGxpbmUuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVUcmVlRWxlbWVudHMpOwotICAgICAgICAg
ICAgdGhpcy5jb250ZW50VHJlZU91dGxpbmUuaW5zZXJ0Q2hpbGQoc2NyaXB0VHJlZUVsZW1lbnQs
IGluZGV4KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcGFyZW50Rm9sZGVy
VHJlZUVsZW1lbnQucGFyZW50KSB7Ci0gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gaW5zZXJ0
aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKHBhcmVudEZvbGRlclRyZWVF
bGVtZW50LCB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZS5jaGlsZHJlbiwgdGhpcy5fY29tcGFyZVRy
ZWVFbGVtZW50cyk7Ci0gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VHJlZU91dGxpbmUuaW5z
ZXJ0Q2hpbGQocGFyZW50Rm9sZGVyVHJlZUVsZW1lbnQsIGluZGV4KTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgcGFyZW50Rm9sZGVyVHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc2NyaXB0
VHJlZUVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgX3NjcmlwdFdhc1JlbW92ZWQo
ZXZlbnQpCi0gICAgewotICAgICAgICBsZXQgc2NyaXB0ID0gZXZlbnQuZGF0YS5zY3JpcHQ7Ci0g
ICAgICAgIGxldCBzY3JpcHRUcmVlRWxlbWVudCA9IHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmdl
dENhY2hlZFRyZWVFbGVtZW50KHNjcmlwdCk7Ci0gICAgICAgIGlmICghc2NyaXB0VHJlZUVsZW1l
bnQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbGV0IHBhcmVudFRyZWVFbGVtZW50
ID0gc2NyaXB0VHJlZUVsZW1lbnQucGFyZW50OwotICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5y
ZW1vdmVDaGlsZChzY3JpcHRUcmVlRWxlbWVudCk7Ci0KLSAgICAgICAgaWYgKHBhcmVudFRyZWVF
bGVtZW50IGluc3RhbmNlb2YgV0kuRm9sZGVyVHJlZUVsZW1lbnQpIHsKLSAgICAgICAgICAgIHBh
cmVudFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZShzY3JpcHQpOwotCi0gICAg
ICAgICAgICBpZiAoIXBhcmVudFRyZWVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkKLSAgICAgICAg
ICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5wYXJlbnQucmVtb3ZlQ2hpbGQocGFyZW50VHJlZUVs
ZW1lbnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgX3NjcmlwdHNDbGVhcmVkKGV2ZW50KQot
ICAgIHsKLSAgICAgICAgY29uc3Qgc3VwcHJlc3NPbkRlc2VsZWN0ID0gdHJ1ZTsKLSAgICAgICAg
Y29uc3Qgc3VwcHJlc3NTZWxlY3RTaWJsaW5nID0gdHJ1ZTsKLQotICAgICAgICBpZiAodGhpcy5f
ZXh0ZW5zaW9uU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICBpZiAodGhp
cy5fZXh0ZW5zaW9uU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50LnBhcmVudCkKLSAgICAgICAgICAg
ICAgICB0aGlzLl9leHRlbnNpb25TY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQucGFyZW50LnJlbW92
ZUNoaWxkKHRoaXMuX2V4dGVuc2lvblNjcmlwdHNGb2xkZXJUcmVlRWxlbWVudCwgc3VwcHJlc3NP
bkRlc2VsZWN0LCBzdXBwcmVzc1NlbGVjdFNpYmxpbmcpOwotCi0gICAgICAgICAgICB0aGlzLl9l
eHRlbnNpb25TY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QuY2xlYXIo
KTsKLSAgICAgICAgICAgIHRoaXMuX2V4dGVuc2lvblNjcmlwdHNGb2xkZXJUcmVlRWxlbWVudCA9
IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy5fZXh0cmFTY3JpcHRzRm9sZGVy
VHJlZUVsZW1lbnQpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9leHRyYVNjcmlwdHNGb2xkZXJU
cmVlRWxlbWVudC5wYXJlbnQpCi0gICAgICAgICAgICAgICAgdGhpcy5fZXh0cmFTY3JpcHRzRm9s
ZGVyVHJlZUVsZW1lbnQucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMuX2V4dHJhU2NyaXB0c0ZvbGRl
clRyZWVFbGVtZW50LCBzdXBwcmVzc09uRGVzZWxlY3QsIHN1cHByZXNzU2VsZWN0U2libGluZyk7
Ci0KLSAgICAgICAgICAgIHRoaXMuX2V4dHJhU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50LnJlcHJl
c2VudGVkT2JqZWN0LmNsZWFyKCk7Ci0gICAgICAgICAgICB0aGlzLl9leHRyYVNjcmlwdHNGb2xk
ZXJUcmVlRWxlbWVudCA9IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy5fYW5v
bnltb3VzU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5f
YW5vbnltb3VzU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50LnBhcmVudCkKLSAgICAgICAgICAgICAg
ICB0aGlzLl9hbm9ueW1vdXNTY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQucGFyZW50LnJlbW92ZUNo
aWxkKHRoaXMuX2Fub255bW91c1NjcmlwdHNGb2xkZXJUcmVlRWxlbWVudCwgc3VwcHJlc3NPbkRl
c2VsZWN0LCBzdXBwcmVzc1NlbGVjdFNpYmxpbmcpOwotCi0gICAgICAgICAgICB0aGlzLl9hbm9u
eW1vdXNTY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QuY2xlYXIoKTsK
LSAgICAgICAgICAgIHRoaXMuX2Fub255bW91c1NjcmlwdHNGb2xkZXJUcmVlRWxlbWVudCA9IG51
bGw7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy5fdGFyZ2V0VHJlZUVsZW1lbnRNYXAu
c2l6ZSkgewotICAgICAgICAgICAgZm9yIChsZXQgdHJlZUVsZW1lbnQgb2YgdGhpcy5fdGFyZ2V0
VHJlZUVsZW1lbnRNYXApCi0gICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQucGFyZW50LnJlbW92
ZUNoaWxkKHRyZWVFbGVtZW50LCBzdXBwcmVzc09uRGVzZWxlY3QsIHN1cHByZXNzU2VsZWN0U2li
bGluZyk7Ci0gICAgICAgICAgICB0aGlzLl90YXJnZXRUcmVlRWxlbWVudE1hcC5jbGVhcigpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgX3N0eWxlU2hlZXRBZGRlZChldmVudCkKLSAgICB7Ci0g
ICAgICAgIGxldCBzdHlsZVNoZWV0ID0gZXZlbnQuZGF0YS5zdHlsZVNoZWV0OwotICAgICAgICBp
ZiAoIXN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgbGV0IGZyYW1lVHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVFbGVtZW50Rm9y
UmVwcmVzZW50ZWRPYmplY3Qoc3R5bGVTaGVldC5wYXJlbnRGcmFtZSk7Ci0gICAgICAgIGlmICgh
ZnJhbWVUcmVlRWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmcmFtZVRy
ZWVFbGVtZW50LmFkZFJlcHJlc2VudGVkT2JqZWN0VG9OZXdDaGlsZFF1ZXVlKHN0eWxlU2hlZXQp
OwotICAgIH0KLQotICAgIF9hZGRUYXJnZXRXaXRoTWFpblJlc291cmNlKHRhcmdldCkKLSAgICB7
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldC50eXBlID09PSBXSS5UYXJnZXQuVHlwZS5X
b3JrZXIgfHwgdGFyZ2V0LnR5cGUgPT09IFdJLlRhcmdldC5UeXBlLlNlcnZpY2VXb3JrZXIpOwot
Ci0gICAgICAgIGxldCB0YXJnZXRUcmVlRWxlbWVudCA9IG5ldyBXSS5Xb3JrZXJUcmVlRWxlbWVu
dCh0YXJnZXQpOwotICAgICAgICB0aGlzLl90YXJnZXRUcmVlRWxlbWVudE1hcC5zZXQodGFyZ2V0
LCB0YXJnZXRUcmVlRWxlbWVudCk7Ci0KLSAgICAgICAgbGV0IGluZGV4ID0gaW5zZXJ0aW9uSW5k
ZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKHRhcmdldFRyZWVFbGVtZW50LCB0aGlz
LmNvbnRlbnRUcmVlT3V0bGluZS5jaGlsZHJlbiwgdGhpcy5fY29tcGFyZVRyZWVFbGVtZW50cyk7
Ci0gICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmluc2VydENoaWxkKHRhcmdldFRyZWVF
bGVtZW50LCBpbmRleCk7Ci0gICAgfQotCi0gICAgX3RhcmdldFJlbW92ZWQoZXZlbnQpCi0gICAg
ewotICAgICAgICBsZXQgcmVtb3ZlZFRhcmdldCA9IGV2ZW50LmRhdGEudGFyZ2V0OwotCi0gICAg
ICAgIGxldCB0YXJnZXRUcmVlRWxlbWVudCA9IHRoaXMuX3RhcmdldFRyZWVFbGVtZW50TWFwLnRh
a2UocmVtb3ZlZFRhcmdldCk7Ci0gICAgICAgIGlmICh0YXJnZXRUcmVlRWxlbWVudCkKLSAgICAg
ICAgICAgIHRhcmdldFRyZWVFbGVtZW50LnBhcmVudC5yZW1vdmVDaGlsZCh0YXJnZXRUcmVlRWxl
bWVudCk7Ci0gICAgfQotCi0gICAgX3RyZWVTZWxlY3Rpb25EaWRDaGFuZ2UoZXZlbnQpCi0gICAg
ewotICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgbGV0IHRyZWVFbGVtZW50ID0gZXZlbnQuZGF0YS5zZWxlY3RlZEVsZW1lbnQ7Ci0gICAg
ICAgIGlmICghdHJlZUVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYg
KHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuRm9sZGVyVHJlZUVsZW1lbnQKLSAgICAgICAgICAg
IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuUmVzb3VyY2VUcmVlRWxlbWVudAotICAgICAg
ICAgICAgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5TY3JpcHRUcmVlRWxlbWVudAotICAg
ICAgICAgICAgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5DU1NTdHlsZVNoZWV0VHJlZUVs
ZW1lbnQpIHsKLSAgICAgICAgICAgIGNvbnN0IGNvb2tpZSA9IG51bGw7Ci0gICAgICAgICAgICBj
b25zdCBvcHRpb25zID0gewotICAgICAgICAgICAgICAgIGlnbm9yZU5ldHdvcmtUYWI6IHRydWUs
Ci0gICAgICAgICAgICAgICAgaWdub3JlU2VhcmNoVGFiOiB0cnVlLAotICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgIFdJLnNob3dSZXByZXNlbnRlZE9iamVjdCh0cmVlRWxlbWVudC5yZXByZXNl
bnRlZE9iamVjdCwgY29va2llLCBvcHRpb25zKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gdHJlZSBlbGVtZW50IiwgdHJl
ZUVsZW1lbnQpOwotICAgIH0KLQotICAgIF9jb21wYXJlVHJlZUVsZW1lbnRzKGEsIGIpCi0gICAg
ewotICAgICAgICAvLyBBbHdheXMgc29ydCB0aGUgbWFpbiBmcmFtZSBlbGVtZW50IGZpcnN0Lgot
ICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFdJLkZyYW1lVHJlZUVsZW1lbnQpCi0gICAgICAgICAg
ICByZXR1cm4gLTE7Ci0gICAgICAgIGlmIChiIGluc3RhbmNlb2YgV0kuRnJhbWVUcmVlRWxlbWVu
dCkKLSAgICAgICAgICAgIHJldHVybiAxOwotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGEubWFp
blRpdGxlKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYi5tYWluVGl0bGUpOwotCi0gICAgICAg
IHJldHVybiAoYS5tYWluVGl0bGUgfHwgIiIpLmV4dGVuZGVkTG9jYWxlQ29tcGFyZShiLm1haW5U
aXRsZSB8fCAiIik7Ci0gICAgfQotCi0gICAgX2V4dHJhRG9tYWluc0FjdGl2YXRlZCgpCi0gICAg
ewotICAgICAgICBpZiAoU291cmNlc1NpZGViYXJQYW5lbC5zaG91bGRQbGFjZVJlc291cmNlc0F0
VG9wTGV2ZWwoKSkKLSAgICAgICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmRpc2Nsb3N1
cmVCdXR0b25zID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBfc2NvcGVCYXJTZWxlY3Rpb25EaWRDaGFu
Z2UoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlcigpOwotICAgIH0KLX07
Ci0KLVdJLlNvdXJjZXNTaWRlYmFyUGFuZWwuUmVzb3VyY2VUeXBlU3ltYm9sID0gU3ltYm9sKCJy
ZXNvdXJjZS10eXBlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Tb3VyY2VzVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzVGFiQ29udGVudFZpZXcuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyNjI5OGIxMGY4MTMxYzU0MTI1OTZhZTAxNTI0OGYz
YmQ4YmJiYzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc1RhYkNvbnRl
bnRWaWV3LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdJ
LlNvdXJjZXNUYWJDb250ZW50VmlldyA9IGNsYXNzIFNvdXJjZXNUYWJDb250ZW50VmlldyBleHRl
bmRzIFdJLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcKLXsKLSAgICBjb25zdHJ1Y3Rvcihp
ZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAgbGV0IHRhYkJhckl0ZW0gPSBXSS5HZW5lcmFsVGFi
QmFySXRlbS5mcm9tVGFiSW5mbyhXSS5Tb3VyY2VzVGFiQ29udGVudFZpZXcudGFiSW5mbygpKTsK
LSAgICAgICAgY29uc3QgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyA9IFtXSS5SZXNv
dXJjZURldGFpbHNTaWRlYmFyUGFuZWwsIFdJLlByb2JlRGV0YWlsc1NpZGViYXJQYW5lbF07Ci0g
ICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgInNvdXJjZXMiLCAic291cmNlcyIsIHRhYkJhckl0
ZW0sIFdJLlNvdXJjZXNTaWRlYmFyUGFuZWwsIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3Rv
cnMpOwotICAgIH0KLQotICAgIHN0YXRpYyB0YWJJbmZvKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB7Ci0gICAgICAgICAgICBpbWFnZTogIkltYWdlcy9SZXNvdXJjZXMuc3ZnIiwKLSAgICAgICAg
ICAgIHRpdGxlOiBXSS5VSVN0cmluZygiU291cmNlcyIpLAotICAgICAgICB9OwotICAgIH0KLQot
ICAgIHN0YXRpYyBpc1RhYkFsbG93ZWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdJLnNldHRp
bmdzLmV4cGVyaW1lbnRhbEVuYWJsZVNvdXJjZXNUYWIudmFsdWU7Ci0gICAgfQotCi0gICAgLy8g
UHVibGljCi0KLSAgICBnZXQgdHlwZSgpCi0gICAgewotICAgICAgICByZXR1cm4gV0kuU291cmNl
c1RhYkNvbnRlbnRWaWV3LlR5cGU7Ci0gICAgfQotCi0gICAgZ2V0IHN1cHBvcnRzU3BsaXRDb250
ZW50QnJvd3NlcigpCi0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBj
YW5TaG93UmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCi0gICAgewotICAgICAg
ICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5GcmFtZQotICAgICAgICAg
ICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5SZXNvdXJjZQotICAgICAgICAg
ICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5TY3JpcHQKLSAgICAgICAgICAg
IHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuQ1NTU3R5bGVTaGVldAotICAgICAg
ICAgICAgfHwgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuQ29sbGVjdGlvbiAmJiAh
KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuQ2FudmFzQ29sbGVjdGlvbikpOwotICAg
IH0KLX07Ci0KLVdJLlNvdXJjZXNUYWJDb250ZW50Vmlldy5UeXBlID0gInNvdXJjZXMiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350392</attachid>
            <date>2018-09-21 11:39:06 -0700</date>
            <delta_ts>2018-09-21 11:56:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189817-20180921113905.patch</filename>
            <type>text/plain</type>
            <size>38838</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGVkMGI3ZDAxZGNiNzc4ZjVkZWY4MTNhYTU1ZWVl
ZmMxN2Y2Y2MxMDUuLjVhZDBiODQ5MjNjMDhkNWVjNWUwMDJlM2UzY2JjZTQxODVhNjM5MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTA5LTIxICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBy
ZW1vdmUgc2V0dGluZyBmb3IgU291cmNlcyB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTgxNworCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2Vw
aCBQZWNvcmFyby4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0Jhc2UvTWFpbi5qczoKKyAgICAgICAgKFdJLmNvbnRlbnRMb2FkZWQpOgorICAgICAgICAoV0ku
X2RlYnVnZ2VyRGlkUGF1c2UpOgorICAgICAgICAoV0kuaXNTaG93aW5nU291cmNlc1RhYik6IFJl
bW92ZWQuCisgICAgICAgIChXSS5zaG93U291cmNlc1RhYik6IFJlbW92ZWQuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNTaWRlYmFyUGFuZWwuY3NzOiBSZW1vdmVkLgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc1NpZGViYXJQYW5lbC5qczogUmVt
b3ZlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNUYWJDb250ZW50Vmll
dy5qczogUmVtb3ZlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1l
bnVVdGlsaXRpZXMuanM6CisgICAgICAgIChXSS5hcHBlbmRDb250ZXh0TWVudUl0ZW1zRm9yVVJM
KToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmll
dy5qczoKKyAgICAgICAgKFdJLlNldHRpbmdzVGFiQ29udGVudFZpZXcucHJvdG90eXBlLl9jcmVh
dGVFeHBlcmltZW50YWxTZXR0aW5nc1ZpZXcpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdJLlNvdXJjZUNvZGVUZXh0
RWRpdG9yLnByb3RvdHlwZS50ZXh0RWRpdG9yR3V0dGVyQ29udGV4dE1lbnUpOgorCiAyMDE4LTA5
LTIxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBoaWRlIEFjY2Vzc2liaWxpdHkgQXVkaXQgVGFiIHNldHRpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9s
b2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDMxYmViYTc5Nzc1ODUwNmI5YTMyNzM1ZjFjNjBkYmE1
ZDU1NGU4N2EuLmYzYjRmYzFlMzM4ZDlhNzJiYzhmMzUwYTNhM2IwZGU0ZjA3NzExMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMv
ZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtNjQsNyArNjQsNiBAQCBsb2NhbGl6ZWRT
dHJpbmdzWyIsICJdID0gIiwgIjsKIGxvY2FsaXplZFN0cmluZ3NbIjEgbWF0Y2giXSA9ICIxIG1h
dGNoIjsKIGxvY2FsaXplZFN0cmluZ3NbIjJEIl0gPSAiMkQiOwogbG9jYWxpemVkU3RyaW5nc1si
QWNjZXNzaWJpbGl0eSJdID0gIkFjY2Vzc2liaWxpdHkiOwotbG9jYWxpemVkU3RyaW5nc1siQWNj
ZXNzaWJpbGl0eSBBdWRpdDoiXSA9ICJBY2Nlc3NpYmlsaXR5IEF1ZGl0OiI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJBY3Rpb24iXSA9ICJBY3Rpb24iOwogbG9jYWxpemVkU3RyaW5nc1siQWN0aXZpdHkg
Vmlld2VyIl0gPSAiQWN0aXZpdHkgVmlld2VyIjsKIGxvY2FsaXplZFN0cmluZ3NbIkFkZCJdID0g
IkFkZCI7CkBAIC0zMzAsMTQgKzMyOSwxMiBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJFbGVtZW50IGlz
IHRoZSByb290IGVsZW1lbnQiXSA9ICJFbGVtZW50IGlzIHRoZSByb290IGVsZW1lbnQiOwogbG9j
YWxpemVkU3RyaW5nc1siRWxlbWVudCBtYXkgb3ZlcmxhcCBhbm90aGVyIGNvbXBvc2l0aW5nIGVs
ZW1lbnQiXSA9ICJFbGVtZW50IG1heSBvdmVybGFwIGFub3RoZXIgY29tcG9zaXRpbmcgZWxlbWVu
dCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFbGVtZW50IG92ZXJsYXBzIG90aGVyIGNvbXBvc2l0aW5n
IGVsZW1lbnQiXSA9ICJFbGVtZW50IG92ZXJsYXBzIG90aGVyIGNvbXBvc2l0aW5nIGVsZW1lbnQi
OwogbG9jYWxpemVkU3RyaW5nc1siRWxlbWVudHMiXSA9ICJFbGVtZW50cyI7Ci1sb2NhbGl6ZWRT
dHJpbmdzWyJFbmFibGUgQWNjZXNzaWJpbGl0eSBBdWRpdCBUYWIiXSA9ICJFbmFibGUgQWNjZXNz
aWJpbGl0eSBBdWRpdCBUYWIiOwogbG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIEJyZWFrcG9pbnQi
XSA9ICJFbmFibGUgQnJlYWtwb2ludCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFbmFibGUgQnJlYWtw
b2ludHMiXSA9ICJFbmFibGUgQnJlYWtwb2ludHMiOwogbG9jYWxpemVkU3RyaW5nc1siRW5hYmxl
IEV2ZW50IExpc3RlbmVyIl0gPSAiRW5hYmxlIEV2ZW50IExpc3RlbmVyIjsKIGxvY2FsaXplZFN0
cmluZ3NbIkVuYWJsZSBMYXllcnMgVGFiIl0gPSAiRW5hYmxlIExheWVycyBUYWIiOwogbG9jYWxp
emVkU3RyaW5nc1siRW5hYmxlIE5ldyBUYWIgQmFyIl0gPSAiRW5hYmxlIE5ldyBUYWIgQmFyIjsK
IGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBQcm9ncmFtIl0gPSAiRW5hYmxlIFByb2dyYW0iOwot
bG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIFNvdXJjZXMgVGFiIl0gPSAiRW5hYmxlIFNvdXJjZXMg
VGFiIjsKIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBWaXN1YWwgQ2hhbmdlIERldGVjdGlvbiJd
ID0gIkVuYWJsZSBWaXN1YWwgQ2hhbmdlIERldGVjdGlvbiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJF
bmFibGUgYWxsIGJyZWFrcG9pbnRzICglcykiXSA9ICJFbmFibGUgYWxsIGJyZWFrcG9pbnRzICgl
cykiOwogbG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIGJyZWFrcG9pbnRzIl0gPSAiRW5hYmxlIGJy
ZWFrcG9pbnRzIjsKQEAgLTcxMiw3ICs3MDksNiBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJSZXZlYWwg
aW4gTGF5ZXJzIFRhYiJdID0gIlJldmVhbCBpbiBMYXllcnMgVGFiIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIlJldmVhbCBpbiBOZXR3b3JrIFRhYiJdID0gIlJldmVhbCBpbiBOZXR3b3JrIFRhYiI7CiBs
b2NhbGl6ZWRTdHJpbmdzWyJSZXZlYWwgaW4gT3JpZ2luYWwgUmVzb3VyY2UiXSA9ICJSZXZlYWwg
aW4gT3JpZ2luYWwgUmVzb3VyY2UiOwogbG9jYWxpemVkU3RyaW5nc1siUmV2ZWFsIGluIFJlc291
cmNlcyBUYWIiXSA9ICJSZXZlYWwgaW4gUmVzb3VyY2VzIFRhYiI7Ci1sb2NhbGl6ZWRTdHJpbmdz
WyJSZXZlYWwgaW4gU291cmNlcyBUYWIiXSA9ICJSZXZlYWwgaW4gU291cmNlcyBUYWIiOwogbG9j
YWxpemVkU3RyaW5nc1siUm9sZSJdID0gIlJvbGUiOwogbG9jYWxpemVkU3RyaW5nc1siU2FtZS1T
aXRlIl0gPSAiU2FtZS1TaXRlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNhbXBsZXMiXSA9ICJTYW1w
bGVzIjsKQEAgLTgwMyw3ICs3OTksNiBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJTb3J0IEFzY2VuZGlu
ZyJdID0gIlNvcnQgQXNjZW5kaW5nIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNvcnQgRGVzY2VuZGlu
ZyJdID0gIlNvcnQgRGVzY2VuZGluZyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTb3VyY2UiXSA9ICJT
b3VyY2UiOwogbG9jYWxpemVkU3RyaW5nc1siU291cmNlcyJdID0gIlNvdXJjZXMiOwotbG9jYWxp
emVkU3RyaW5nc1siU291cmNlczoiXSA9ICJTb3VyY2VzOiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJT
cGFjZSJdID0gIlNwYWNlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNwYWNlcyJdID0gIlNwYWNlcyI7
CiBsb2NhbGl6ZWRTdHJpbmdzWyJTcGVjaWZpY2l0eTogKCVkLCAlZCwgJWQpIl0gPSAiU3BlY2lm
aWNpdHk6ICglZCwgJWQsICVkKSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9CYXNlL01haW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9CYXNlL01haW4uanMKaW5kZXggYmM4MWQ5ZDkwYmY0YTVmMWQ2Y2MwZTFkMTQ0ODY2
M2E0NGU1MTMwNS4uYmI0NjNhMmIxYjdlY2MwMTVlZjBkMDJmNmZmMDlhMzNlZjMxMDU3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpA
QCAtNDM4LDcgKzQzOCw2IEBAIFdJLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgbGV0
IHByb2R1Y3Rpb25UYWJDbGFzc2VzID0gWwogICAgICAgICBXSS5FbGVtZW50c1RhYkNvbnRlbnRW
aWV3LAogICAgICAgICBXSS5OZXR3b3JrVGFiQ29udGVudFZpZXcsCi0gICAgICAgIFdJLlNvdXJj
ZXNUYWJDb250ZW50VmlldywKICAgICAgICAgV0kuRGVidWdnZXJUYWJDb250ZW50VmlldywKICAg
ICAgICAgV0kuUmVzb3VyY2VzVGFiQ29udGVudFZpZXcsCiAgICAgICAgIFdJLlRpbWVsaW5lVGFi
Q29udGVudFZpZXcsCkBAIC05NjYsMjMgKzk2NSw2IEBAIFdJLmlzU2hvd2luZ1Jlc291cmNlc1Rh
YiA9IGZ1bmN0aW9uKCkKICAgICByZXR1cm4gdGhpcy50YWJCcm93c2VyLnNlbGVjdGVkVGFiQ29u
dGVudFZpZXcgaW5zdGFuY2VvZiBXSS5SZXNvdXJjZXNUYWJDb250ZW50VmlldzsKIH07CiAKLVdJ
LmlzU2hvd2luZ1NvdXJjZXNUYWIgPSBmdW5jdGlvbigpCi17Ci0gICAgcmV0dXJuIHRoaXMudGFi
QnJvd3Nlci5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV0kuU291cmNlc1RhYkNv
bnRlbnRWaWV3OwotfTsKLQotV0kuc2hvd1NvdXJjZXNUYWIgPSBmdW5jdGlvbihvcHRpb25zID0g
e30pCi17Ci0gICAgbGV0IHRhYkNvbnRlbnRWaWV3ID0gdGhpcy50YWJCcm93c2VyLmJlc3RUYWJD
b250ZW50Vmlld0ZvckNsYXNzKFdJLlNvdXJjZXNUYWJDb250ZW50Vmlldyk7Ci0gICAgaWYgKCF0
YWJDb250ZW50VmlldykKLSAgICAgICAgdGFiQ29udGVudFZpZXcgPSBuZXcgV0kuU291cmNlc1Rh
YkNvbnRlbnRWaWV3OwotCi0gICAgaWYgKG9wdGlvbnMuYnJlYWtwb2ludFRvU2VsZWN0IGluc3Rh
bmNlb2YgV0kuQnJlYWtwb2ludCkKLSAgICAgICAgdGFiQ29udGVudFZpZXcucmV2ZWFsQW5kU2Vs
ZWN0QnJlYWtwb2ludChvcHRpb25zLmJyZWFrcG9pbnRUb1NlbGVjdCk7Ci0KLSAgICB0aGlzLnRh
YkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3KTsKLX07Ci0KIFdJ
LnNob3dTdG9yYWdlVGFiID0gZnVuY3Rpb24oKQogewogICAgIHZhciB0YWJDb250ZW50VmlldyA9
IHRoaXMudGFiQnJvd3Nlci5iZXN0VGFiQ29udGVudFZpZXdGb3JDbGFzcyhXSS5TdG9yYWdlVGFi
Q29udGVudFZpZXcpOwpAQCAtMTM2OCwxMCArMTM1MCw3IEBAIFdJLl9kcmFnT3ZlciA9IGZ1bmN0
aW9uKGV2ZW50KQogCiBXSS5fZGVidWdnZXJEaWRQYXVzZSA9IGZ1bmN0aW9uKGV2ZW50KQogewot
ICAgIGlmIChXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVTb3VyY2VzVGFiLnZhbHVlKQot
ICAgICAgICB0aGlzLnNob3dTb3VyY2VzVGFiKCk7Ci0gICAgZWxzZQotICAgICAgICB0aGlzLnNo
b3dEZWJ1Z2dlclRhYih7c2hvd1Njb3BlQ2hhaW5TaWRlYmFyOiBXSS5zZXR0aW5ncy5zaG93U2Nv
cGVDaGFpbk9uUGF1c2UudmFsdWV9KTsKKyAgICB0aGlzLnNob3dEZWJ1Z2dlclRhYih7c2hvd1Nj
b3BlQ2hhaW5TaWRlYmFyOiBXSS5zZXR0aW5ncy5zaG93U2NvcGVDaGFpbk9uUGF1c2UudmFsdWV9
KTsKIAogICAgIHRoaXMuX2Rhc2hib2FyZENvbnRhaW5lci5zaG93RGFzaGJvYXJkVmlld0ZvclJl
cHJlc2VudGVkT2JqZWN0KHRoaXMuZGFzaGJvYXJkTWFuYWdlci5kYXNoYm9hcmRzLmRlYnVnZ2Vy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9T
ZXR0aW5nLmpzCmluZGV4IDRhMDE0MjUyZTg5NGM3ZGQwNzhmZTYyYjUwOTI2ZWE0MmE5MWVmZDAu
LjEzMmEzN2IwZTYxNTAyMDZiZTM4YzUwNzMzNWI1MjY3MjhlNGY1YzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMKQEAgLTEy
MCw3ICsxMjAsNiBAQCBXSS5zZXR0aW5ncyA9IHsKIAogICAgIC8vIEV4cGVyaW1lbnRhbAogICAg
IGV4cGVyaW1lbnRhbEVuYWJsZUxheWVyc1RhYjogbmV3IFdJLlNldHRpbmcoImV4cGVyaW1lbnRh
bC1lbmFibGUtbGF5ZXJzLXRhYiIsIGZhbHNlKSwKLSAgICBleHBlcmltZW50YWxFbmFibGVTb3Vy
Y2VzVGFiOiBuZXcgV0kuU2V0dGluZygiZXhwZXJpbWVudGFsLWVuYWJsZS1zb3VyY2VzLWJhciIs
IGZhbHNlKSwKICAgICBleHBlcmltZW50YWxFbmFibGVOZXdUYWJCYXI6IG5ldyBXSS5TZXR0aW5n
KCJleHBlcmltZW50YWwtZW5hYmxlLW5ldy10YWItYmFyIiwgZmFsc2UpLAogICAgIGV4cGVyaW1l
bnRhbFJlY29yZGluZ0hhc1Zpc3VhbEVmZmVjdDogbmV3IFdJLlNldHRpbmcoImV4cGVyaW1lbnRh
bC1yZWNvcmRpbmctaGFzLXZpc3VhbC1lZmZlY3QiLCBmYWxzZSksCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA4OWFjZWJhOTdjMzY3MTVl
ZTMyMzRmMjgyZjA0ZmEzNGFmMmU2ZDg0Li5lNDMzOTRkMmJiMWNjYTg1MmI3ZmMxNzE0ZWFiMWY0
MDc3OTE0MmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFp
bi5odG1sCkBAIC0xNzgsNyArMTc4LDYgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9IlZpZXdzL1NsaWRlci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Vmlld3MvU29mdENvbnRleHRNZW51LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJWaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5jc3MiPgotICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iVmlld3MvU291cmNlc1NpZGViYXJQYW5lbC5jc3MiPgogICAgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvU3ByZWFkc2hlZXRDU1NTdHlsZURlY2xhcmF0
aW9uRWRpdG9yLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9T
cHJlYWRzaGVldENTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmNzcyI+CiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFu
ZWwuY3NzIj4KQEAgLTUxOCw3ICs1MTcsNiBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZXNv
dXJjZXNUYWJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L1NlYXJjaFRhYkNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmll
d3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9
IlZpZXdzL1NvdXJjZXNUYWJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL1N0b3JhZ2VUYWJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogCkBAIC03
MzIsNyArNzMwLDYgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU291cmNlQ29kZVRpbWVsaW5l
VGltZWxpbmVEYXRhR3JpZE5vZGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9Tb3VyY2VDb2RlVGltZWxpbmVUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL1NvdXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Tb3VyY2VzU2lkZWJhclBhbmVsLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU3Bhbm5pbmdEYXRhR3JpZE5vZGUuanMiPjwvc2NyaXB0
PgogCiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1NwcmVhZHNoZWV0Q1NTU3R5bGVEZWNsYXJhdGlv
bkVkaXRvci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVudVV0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzCmlu
ZGV4IGNiOWZjMzFhY2RmOTdkYTJjZmY5ZWE3MGY5ODFmNjQ1ZjhhNjk1NWMuLmYwZTdmZTJlNTU3
NDg3ZDExNDMxMjQ1ODJiMGZiY2I1NzNkNTVmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51VXRp
bGl0aWVzLmpzCkBAIC0xMDEsMTMgKzEwMSw3IEBAIFdJLmFwcGVuZENvbnRleHRNZW51SXRlbXNG
b3JVUkwgPSBmdW5jdGlvbihjb250ZXh0TWVudSwgdXJsLCBvcHRpb25zKQogICAgIH0pOwogCiAg
ICAgaWYgKFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHVybCkpIHsKLSAg
ICAgICAgaWYgKFdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEVuYWJsZVNvdXJjZXNUYWIudmFsdWUp
IHsKLSAgICAgICAgICAgIGlmICghV0kuaXNTaG93aW5nU291cmNlc1RhYigpKSB7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiUmV2ZWFsIGluIFNv
dXJjZXMgVGFiIiksICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgc2hvd1Jlc291cmNlV2l0
aE9wdGlvbnMoe3ByZWZlcnJlZFRhYlR5cGU6IFdJLlNvdXJjZXNUYWJDb250ZW50Vmlldy5UeXBl
fSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBp
ZiAoIVdJLmlzU2hvd2luZ1Jlc291cmNlc1RhYigpKSB7CisgICAgICAgIGlmICghV0kuaXNTaG93
aW5nUmVzb3VyY2VzVGFiKCkpIHsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V0kuVUlTdHJpbmcoIlJldmVhbCBpbiBSZXNvdXJjZXMgVGFiIiksICgpID0+IHsKICAgICAgICAg
ICAgICAgICBzaG93UmVzb3VyY2VXaXRoT3B0aW9ucyh7aWdub3JlTmV0d29ya1RhYjogdHJ1ZSwg
aWdub3JlU2VhcmNoVGFiOiB0cnVlfSk7CiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29udGVu
dFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0
aW5nc1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDRkODg4YTkzOGI2NDBlZmE2NjcwZmYyNmY1MDc1
Mjg2MTA4NDk0ODguLjM4NTRlYzI1YjA4MGJmYTJiNjQ0NWFmNWQ2NGQzOTAwYzU0ZmQyOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NldHRp
bmdzVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcwpAQCAtMjQ0LDkgKzI0NCw2IEBA
IFdJLlNldHRpbmdzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTZXR0aW5nc1RhYkNvbnRlbnRWaWV3
IGV4dGVuZHMgV0kuVGFiQ29udGVudFZpCiAgICAgICAgICAgICBleHBlcmltZW50YWxTZXR0aW5n
c1ZpZXcuYWRkU2VwYXJhdG9yKCk7CiAgICAgICAgIH0KIAotICAgICAgICBleHBlcmltZW50YWxT
ZXR0aW5nc1ZpZXcuYWRkU2V0dGluZyhXSS5VSVN0cmluZygiU291cmNlczoiKSwgV0kuc2V0dGlu
Z3MuZXhwZXJpbWVudGFsRW5hYmxlU291cmNlc1RhYiwgV0kuVUlTdHJpbmcoIkVuYWJsZSBTb3Vy
Y2VzIFRhYiIpKTsKLSAgICAgICAgZXhwZXJpbWVudGFsU2V0dGluZ3NWaWV3LmFkZFNlcGFyYXRv
cigpOwotCiAgICAgICAgIGV4cGVyaW1lbnRhbFNldHRpbmdzVmlldy5hZGRTZXR0aW5nKFdJLlVJ
U3RyaW5nKCJVc2VyIEludGVyZmFjZToiKSwgV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxl
TmV3VGFiQmFyLCBXSS5VSVN0cmluZygiRW5hYmxlIE5ldyBUYWIgQmFyIikpOwogICAgICAgICBl
eHBlcmltZW50YWxTZXR0aW5nc1ZpZXcuYWRkU2VwYXJhdG9yKCk7CiAKQEAgLTI2OCw3ICsyNjUs
NiBAQCBXSS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU2V0dGluZ3NUYWJDb250ZW50
VmlldyBleHRlbmRzIFdJLlRhYkNvbnRlbnRWaQogICAgICAgICB9CiAKICAgICAgICAgbGlzdGVu
Rm9yQ2hhbmdlKFdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEVuYWJsZUxheWVyc1RhYik7Ci0gICAg
ICAgIGxpc3RlbkZvckNoYW5nZShXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVTb3VyY2Vz
VGFiKTsKICAgICAgICAgbGlzdGVuRm9yQ2hhbmdlKFdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEVu
YWJsZU5ld1RhYkJhcik7CiAKICAgICAgICAgdGhpcy5hZGRTZXR0aW5nc1ZpZXcoZXhwZXJpbWVu
dGFsU2V0dGluZ3NWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKaW5kZXgg
OTNiM2I5YTM1NTQwNjBiM2MzMGFhNDA1MDc5ODA0NjM4ZWRlNjA1My4uNTJmZTcxY2EyY2IxNTM4
OTFkZmZhYmUxMWVlMDFhOTM2MjZlZDQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0
b3IuanMKQEAgLTEyNDgsMTQgKzEyNDgsNyBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNs
YXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogICAgICAgICBp
ZiAoYnJlYWtwb2ludHMubGVuZ3RoID09PSAxKSB7CiAgICAgICAgICAgICBXSS5icmVha3BvaW50
UG9wb3ZlckNvbnRyb2xsZXIuYXBwZW5kQ29udGV4dE1lbnVJdGVtcyhjb250ZXh0TWVudSwgYnJl
YWtwb2ludHNbMF0sIGV2ZW50LnRhcmdldCk7CiAKLSAgICAgICAgICAgIGlmIChXSS5zZXR0aW5n
cy5leHBlcmltZW50YWxFbmFibGVTb3VyY2VzVGFiLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCFXSS5pc1Nob3dpbmdTb3VyY2VzVGFiKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIlJldmVhbCBpbiBTb3VyY2VzIFRhYiIpLCAoKSA9
PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBXSS5zaG93U291cmNlc1RhYih7YnJlYWtwb2lu
dFRvU2VsZWN0OiBicmVha3BvaW50c1swXX0pOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFXSS5pc1Nob3dpbmdEZWJ1
Z2dlclRhYigpKSB7CisgICAgICAgICAgICBpZiAoIVdJLmlzU2hvd2luZ0RlYnVnZ2VyVGFiKCkp
IHsKICAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKICAgICAg
ICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJSZXZlYWwgaW4g
RGVidWdnZXIgVGFiIiksICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgV0kuc2hvd0RlYnVn
Z2VyVGFiKHticmVha3BvaW50VG9TZWxlY3Q6IGJyZWFrcG9pbnRzWzBdfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzU2lkZWJh
clBhbmVsLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Nv
dXJjZXNTaWRlYmFyUGFuZWwuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGY4
OWEwMDRlN2IzNGI5Y2M5ZDM5MWIyNjMxYTMxNDMzM2Y1NGM0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NvdXJjZXNTaWRlYmFyUGFuZWwuY3NzCisrKyAvZGV2L251bGwKQEAgLTEs
MzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS5zaWRlYmFyID4gLnBhbmVsLm5hdmlnYXRpb24uc291
cmNlcyA+IC5jb250ZW50IHsKLSAgICB0b3A6IHZhcigtLW5hdmlnYXRpb24tYmFyLWhlaWdodCk7
Ci19Ci0KLS5zaWRlYmFyID4gLnBhbmVsLm5hdmlnYXRpb24uc291cmNlcyA+IC5uYXZpZ2F0aW9u
LWJhciB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICBsZWZ0OiAw
OwotICAgIHJpZ2h0OiAwOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNTaWRlYmFyUGFuZWwuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiYjBmMDM0ZWI0M2E4NmJjZWQzMjU4MmM0YWJkZGNk
NzM4OTM3YmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc1NpZGViYXJQ
YW5lbC5qcworKysgL2Rldi9udWxsCkBAIC0xLDUwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotV0ku
U291cmNlc1NpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBX
SS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsCi17Ci0gICAgY29uc3RydWN0b3IoKQotICAgIHsKLSAg
ICAgICAgc3VwZXIoInNvdXJjZXMiLCBXSS5VSVN0cmluZygiU291cmNlcyIpLCB0cnVlKTsKLQot
ICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3IFdJLk5hdmlnYXRpb25CYXI7Ci0gICAg
ICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9uYXZpZ2F0aW9uQmFyKTsKLQotICAgICAgICB0aGlz
Ll90YXJnZXRUcmVlRWxlbWVudE1hcCA9IG5ldyBNYXA7Ci0KLSAgICAgICAgbGV0IHNjb3BlSXRl
bVByZWZpeCA9ICJzb3VyY2VzLXNpZGViYXItIjsKLSAgICAgICAgbGV0IHNjb3BlQmFySXRlbXMg
PSBbXTsKLQotICAgICAgICBzY29wZUJhckl0ZW1zLnB1c2gobmV3IFdJLlNjb3BlQmFySXRlbShz
Y29wZUl0ZW1QcmVmaXggKyAidHlwZS1hbGwiLCBXSS5VSVN0cmluZygiQWxsIFJlc291cmNlcyIp
LCB0cnVlKSk7Ci0KLSAgICAgICAgZm9yIChsZXQga2V5IGluIFdJLlJlc291cmNlLlR5cGUpIHsK
LSAgICAgICAgICAgIGxldCB2YWx1ZSA9IFdJLlJlc291cmNlLlR5cGVba2V5XTsKLSAgICAgICAg
ICAgIGxldCBzY29wZUJhckl0ZW0gPSBuZXcgV0kuU2NvcGVCYXJJdGVtKHNjb3BlSXRlbVByZWZp
eCArIHZhbHVlLCBXSS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUodmFsdWUsIHRydWUpKTsK
LSAgICAgICAgICAgIHNjb3BlQmFySXRlbVtXSS5Tb3VyY2VzU2lkZWJhclBhbmVsLlJlc291cmNl
VHlwZVN5bWJvbF0gPSB2YWx1ZTsKLSAgICAgICAgICAgIHNjb3BlQmFySXRlbXMucHVzaChzY29w
ZUJhckl0ZW0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fc2NvcGVCYXIgPSBuZXcgV0ku
U2NvcGVCYXIoInNvdXJjZXMtc2lkZWJhci1zY29wZS1iYXIiLCBzY29wZUJhckl0ZW1zLCBzY29w
ZUJhckl0ZW1zWzBdLCB0cnVlKTsKLSAgICAgICAgdGhpcy5fc2NvcGVCYXIuYWRkRXZlbnRMaXN0
ZW5lcihXSS5TY29wZUJhci5FdmVudC5TZWxlY3Rpb25DaGFuZ2VkLCB0aGlzLl9zY29wZUJhclNl
bGVjdGlvbkRpZENoYW5nZSwgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci5h
ZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9zY29wZUJhcik7Ci0KLSAgICAgICAgV0kuRnJhbWUuYWRk
RXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMu
X21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7Ci0KLSAgICAgICAgV0kuZnJhbWVSZXNvdXJj
ZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZVJlc291cmNlTWFuYWdlci5FdmVudC5N
YWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX21haW5GcmFtZURpZENoYW5nZSwgdGhpcyk7Ci0KLSAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LlNjcmlwdEFkZGVkLCB0aGlzLl9zY3JpcHRXYXNBZGRlZCwgdGhpcyk7Ci0gICAg
ICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdl
ci5FdmVudC5TY3JpcHRSZW1vdmVkLCB0aGlzLl9zY3JpcHRXYXNSZW1vdmVkLCB0aGlzKTsKLSAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LlNjcmlwdHNDbGVhcmVkLCB0aGlzLl9zY3JpcHRzQ2xlYXJlZCwgdGhpcyk7Ci0K
LSAgICAgICAgV0kuY3NzU3R5bGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ1NTU3R5bGVN
YW5hZ2VyLkV2ZW50LlN0eWxlU2hlZXRBZGRlZCwgdGhpcy5fc3R5bGVTaGVldEFkZGVkLCB0aGlz
KTsKLQotICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0
TWFuYWdlci5FdmVudC5UYXJnZXRSZW1vdmVkLCB0aGlzLl90YXJnZXRSZW1vdmVkLCB0aGlzKTsK
LQotICAgICAgICBXSS5ub3RpZmljYXRpb25zLmFkZEV2ZW50TGlzdGVuZXIoV0kuTm90aWZpY2F0
aW9uLkV4dHJhRG9tYWluc0FjdGl2YXRlZCwgdGhpcy5fZXh0cmFEb21haW5zQWN0aXZhdGVkLCB0
aGlzKTsKLQotICAgICAgICB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZS5hZGRFdmVudExpc3RlbmVy
KFdJLlRyZWVPdXRsaW5lLkV2ZW50LlNlbGVjdGlvbkRpZENoYW5nZSwgdGhpcy5fdHJlZVNlbGVj
dGlvbkRpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmlu
Y2x1ZGVTb3VyY2VNYXBSZXNvdXJjZUNoaWxkcmVuID0gdHJ1ZTsKLQotICAgICAgICBpZiAoU291
cmNlc1NpZGViYXJQYW5lbC5zaG91bGRQbGFjZVJlc291cmNlc0F0VG9wTGV2ZWwoKSkgewotICAg
ICAgICAgICAgdGhpcy5jb250ZW50VHJlZU91dGxpbmUuZGlzY2xvc3VyZUJ1dHRvbnMgPSBmYWxz
ZTsKLSAgICAgICAgICAgIFdJLlNvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXSS5Tb3VyY2VD
b2RlLkV2ZW50LlNvdXJjZU1hcEFkZGVkLCAoKSA9PiB7IHRoaXMuY29udGVudFRyZWVPdXRsaW5l
LmRpc2Nsb3N1cmVCdXR0b25zID0gdHJ1ZTsgfSwgdGhpcyk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICAvLyBTdGF0aWMKLQotICAgIHN0YXRpYyBzaG91bGRQbGFjZVJlc291cmNlc0F0VG9wTGV2
ZWwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUg
PT09IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQgJiYgIVdJLnNoYXJlZEFwcC5oYXNFeHRy
YURvbWFpbnMpCi0gICAgICAgICAgICB8fCBXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgPT09
IFdJLkRlYnVnZ2FibGVUeXBlLlNlcnZpY2VXb3JrZXI7Ci0gICAgfQotCi0gICAgLy8gUHVibGlj
Ci0KLSAgICBnZXQgbWluaW11bVdpZHRoKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9u
YXZpZ2F0aW9uQmFyLm1pbmltdW1XaWR0aDsKLSAgICB9Ci0KLSAgICBjbG9zZWQoKQotICAgIHsK
LSAgICAgICAgc3VwZXIuY2xvc2VkKCk7Ci0KLSAgICAgICAgV0kuRnJhbWUucmVtb3ZlRXZlbnRM
aXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKLSAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFn
ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKLSAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7Ci0gICAg
ICAgIFdJLm5vdGlmaWNhdGlvbnMucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlz
KTsKLSAgICB9Ci0KLSAgICBzaG93RGVmYXVsdENvbnRlbnRWaWV3KCkKLSAgICB7Ci0gICAgICAg
IGlmIChXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUpIHsKLSAgICAgICAgICAgIHRo
aXMuY29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QoV0ku
ZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGxldCBmaXJzdFRyZWVFbGVtZW50ID0gdGhpcy5jb250ZW50VHJl
ZU91dGxpbmUuY2hpbGRyZW5bMF07Ci0gICAgICAgIGlmIChmaXJzdFRyZWVFbGVtZW50KQotICAg
ICAgICAgICAgdGhpcy5zaG93RGVmYXVsdENvbnRlbnRWaWV3Rm9yVHJlZUVsZW1lbnQoZmlyc3RU
cmVlRWxlbWVudCk7Ci0gICAgfQotCi0gICAgdHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVj
dChyZXByZXNlbnRlZE9iamVjdCkKLSAgICB7Ci0gICAgICAgIC8vIEEgY3VzdG9tIGltcGxlbWVu
dGF0aW9uIGlzIG5lZWRlZCBmb3IgdGhpcyBzaW5jZSB0aGUgZnJhbWVzIGFyZSBwb3B1bGF0ZWQg
bGF6aWx5LgotCi0gICAgICAgIGlmICghdGhpcy5fbWFpbkZyYW1lVHJlZUVsZW1lbnQgJiYgKHJl
cHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuUmVzb3VyY2UgfHwgcmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXSS5GcmFtZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJ
LkNvbGxlY3Rpb24pKSB7Ci0gICAgICAgICAgICAvLyBBbGwgcmVzb3VyY2VzIGFyZSB1bmRlciB0
aGUgbWFpbiBmcmFtZSwgc28gd2UgbmVlZCB0byByZXR1cm4gZWFybHkgaWYgd2UgZG9uJ3QgaGF2
ZSB0aGUgbWFpbiBmcmFtZSB5ZXQuCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFRoZSBGcmFtZSBpcyB1c2VkIGFzIHRoZSByZXByZXNlbnRlZE9iamVj
dCBpbnN0ZWFkIG9mIHRoZSBtYWluIHJlc291cmNlIGluIG91ciB0cmVlLgotICAgICAgICBpZiAo
cmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5SZXNvdXJjZSAmJiByZXByZXNlbnRlZE9i
amVjdC5wYXJlbnRGcmFtZSAmJiByZXByZXNlbnRlZE9iamVjdC5wYXJlbnRGcmFtZS5tYWluUmVz
b3VyY2UgPT09IHJlcHJlc2VudGVkT2JqZWN0KQotICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmpl
Y3QgPSByZXByZXNlbnRlZE9iamVjdC5wYXJlbnRGcmFtZTsKLQotICAgICAgICBmdW5jdGlvbiBp
c0FuY2VzdG9yKGFuY2VzdG9yLCByZXNvdXJjZU9yRnJhbWUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIC8vIFNvdXJjZU1hcFJlc291cmNlcyBhcmUgZGVzY2VuZGFudHMgb2YgYW5vdGhlciBTb3Vy
Y2VDb2RlIG9iamVjdC4KLSAgICAgICAgICAgIGlmIChyZXNvdXJjZU9yRnJhbWUgaW5zdGFuY2Vv
ZiBXSS5Tb3VyY2VNYXBSZXNvdXJjZSkgewotICAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZU9y
RnJhbWUuc291cmNlTWFwLm9yaWdpbmFsU291cmNlQ29kZSA9PT0gYW5jZXN0b3IpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICAgICAgLy8gTm90IGEgZGly
ZWN0IGFuY2VzdG9yLCBzbyBjaGVjayB0aGUgYW5jZXN0b3JzIG9mIHRoZSBwYXJlbnQgU291cmNl
Q29kZSBvYmplY3QuCi0gICAgICAgICAgICAgICAgcmVzb3VyY2VPckZyYW1lID0gcmVzb3VyY2VP
ckZyYW1lLnNvdXJjZU1hcC5vcmlnaW5hbFNvdXJjZUNvZGU7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGxldCBjdXJyZW50RnJhbWUgPSByZXNvdXJjZU9yRnJhbWUucGFyZW50RnJhbWU7
Ci0gICAgICAgICAgICB3aGlsZSAoY3VycmVudEZyYW1lKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGN1cnJlbnRGcmFtZSA9PT0gYW5jZXN0b3IpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICAgICAgICAgIGN1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZS5wYXJlbnRG
cmFtZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gZ2V0UGFyZW50KHJlc291cmNlT3JGcmFtZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgLy8gU291cmNlTWFwUmVzb3VyY2VzIGFyZSBkZXNjZW5kYW50cyBv
ZiBhbm90aGVyIFNvdXJjZUNvZGUgb2JqZWN0LgotICAgICAgICAgICAgaWYgKHJlc291cmNlT3JG
cmFtZSBpbnN0YW5jZW9mIFdJLlNvdXJjZU1hcFJlc291cmNlKQotICAgICAgICAgICAgICAgIHJl
dHVybiByZXNvdXJjZU9yRnJhbWUuc291cmNlTWFwLm9yaWdpbmFsU291cmNlQ29kZTsKLSAgICAg
ICAgICAgIHJldHVybiByZXNvdXJjZU9yRnJhbWUucGFyZW50RnJhbWU7Ci0gICAgICAgIH0KLQot
ICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZS5maW5kVHJl
ZUVsZW1lbnQocmVwcmVzZW50ZWRPYmplY3QsIGlzQW5jZXN0b3IsIGdldFBhcmVudCk7Ci0gICAg
ICAgIGlmICh0cmVlRWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiB0cmVlRWxlbWVudDsKLQot
ICAgICAgICAvLyBPbmx5IHNwZWNpYWwgY2FzZSBTY3JpcHQgb2JqZWN0cy4KLSAgICAgICAgaWYg
KCEocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5TY3JpcHQpKSB7Ci0gICAgICAgICAg
ICBjb25zb2xlLmVycm9yKCJEaWRuJ3QgZmluZCBhIFRyZWVFbGVtZW50IGZvciByZXByZXNlbnRl
ZE9iamVjdCIsIHJlcHJlc2VudGVkT2JqZWN0KTsKLSAgICAgICAgICAgIHJldHVybiBudWxsOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlIFNjcmlwdCBoYXMgYSBVUkwgd2Ugc2hvdWxk
IGhhdmUgZm91bmQgaXQgZWFybGllci4KLSAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0LnVy
bCkgewotICAgICAgICAgICAgY29uc29sZS5lcnJvcigiRGlkbid0IGZpbmQgYSBTY3JpcHRUcmVl
RWxlbWVudCBmb3IgYSBTY3JpcHQgd2l0aCBhIFVSTC4iKTsKLSAgICAgICAgICAgIHJldHVybiBu
dWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU2luY2UgdGhlIFNjcmlwdCBkb2VzIG5vdCBo
YXZlIGEgVVJMIHdlIGNvbnNpZGVyIGl0IGFuICdhbm9ueW1vdXMnIHNjcmlwdC4gVGhlc2Ugc2Ny
aXB0cyBoYXBwZW4gZnJvbSBjYWxscyB0bwotICAgICAgICAvLyB3aW5kb3cuZXZhbCgpIG9yIGJy
b3dzZXIgZmVhdHVyZXMgbGlrZSBBdXRvIEZpbGwgYW5kIFJlYWRlci4gVGhleSBhcmUgbm90IG5v
cm1hbGx5IGFkZGVkIHRvIHRoZSBzaWRlYmFyLCBidXQgc2luY2UKLSAgICAgICAgLy8gd2UgaGF2
ZSBhIFNjcmlwdENvbnRlbnRWaWV3IGFza2luZyBmb3IgdGhlIHRyZWUgZWxlbWVudCB3ZSB3aWxs
IG1ha2UgYSBTY3JpcHRUcmVlRWxlbWVudCBvbiBkZW1hbmQgYW5kIGFkZCBpdC4KLQotICAgICAg
ICBpZiAoIXRoaXMuX2Fub255bW91c1NjcmlwdHNGb2xkZXJUcmVlRWxlbWVudCkgewotICAgICAg
ICAgICAgbGV0IGNvbGxlY3Rpb24gPSBuZXcgV0kuU2NyaXB0Q29sbGVjdGlvbjsKLSAgICAgICAg
ICAgIHRoaXMuX2Fub255bW91c1NjcmlwdHNGb2xkZXJUcmVlRWxlbWVudCA9IG5ldyBXSS5Gb2xk
ZXJUcmVlRWxlbWVudChXSS5VSVN0cmluZygiQW5vbnltb3VzIFNjcmlwdHMiKSwgY29sbGVjdGlv
bik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXRoaXMuX2Fub255bW91c1NjcmlwdHNGb2xk
ZXJUcmVlRWxlbWVudC5wYXJlbnQpIHsKLSAgICAgICAgICAgIGxldCBpbmRleCA9IGluc2VydGlv
bkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbih0aGlzLl9hbm9ueW1vdXNTY3Jp
cHRzRm9sZGVyVHJlZUVsZW1lbnQsIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmNoaWxkcmVuLCB0
aGlzLl9jb21wYXJlVHJlZUVsZW1lbnRzKTsKLSAgICAgICAgICAgIHRoaXMuY29udGVudFRyZWVP
dXRsaW5lLmluc2VydENoaWxkKHRoaXMuX2Fub255bW91c1NjcmlwdHNGb2xkZXJUcmVlRWxlbWVu
dCwgaW5kZXgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fYW5vbnltb3VzU2NyaXB0c0Zv
bGRlclRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0LmFkZChyZXByZXNlbnRlZE9iamVjdCk7
Ci0KLSAgICAgICAgbGV0IHNjcmlwdFRyZWVFbGVtZW50ID0gbmV3IFdJLlNjcmlwdFRyZWVFbGVt
ZW50KHJlcHJlc2VudGVkT2JqZWN0KTsKLSAgICAgICAgdGhpcy5fYW5vbnltb3VzU2NyaXB0c0Zv
bGRlclRyZWVFbGVtZW50LmFwcGVuZENoaWxkKHNjcmlwdFRyZWVFbGVtZW50KTsKLQotICAgICAg
ICByZXR1cm4gc2NyaXB0VHJlZUVsZW1lbnQ7Ci0gICAgfQotCi0gICAgLy8gUHJvdGVjdGVkCi0K
LSAgICBpbml0aWFsTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIHN1cGVyLmluaXRpYWxMYXlvdXQo
KTsKLQotICAgICAgICBpZiAoV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKQotICAg
ICAgICAgICAgdGhpcy5fbWFpbkZyYW1lTWFpblJlc291cmNlRGlkQ2hhbmdlKFdJLmZyYW1lUmVz
b3VyY2VNYW5hZ2VyLm1haW5GcmFtZSk7Ci0KLSAgICAgICAgZm9yIChsZXQgc2NyaXB0IG9mIFdJ
LmRlYnVnZ2VyTWFuYWdlci5rbm93bk5vblJlc291cmNlU2NyaXB0cykgewotICAgICAgICAgICAg
dGhpcy5fYWRkU2NyaXB0KHNjcmlwdCk7Ci0KLSAgICAgICAgICAgIGlmIChzY3JpcHQuc291cmNl
TWFwcy5sZW5ndGggJiYgU291cmNlc1NpZGViYXJQYW5lbC5zaG91bGRQbGFjZVJlc291cmNlc0F0
VG9wTGV2ZWwoKSkKLSAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZS5kaXNj
bG9zdXJlQnV0dG9ucyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBoYXNDdXN0b21G
aWx0ZXJzKCkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Njb3BlQmFyLnNl
bGVjdGVkSXRlbXMubGVuZ3RoID09PSAxKTsKLSAgICAgICAgbGV0IHNlbGVjdGVkU2NvcGVCYXJJ
dGVtID0gdGhpcy5fc2NvcGVCYXIuc2VsZWN0ZWRJdGVtc1swXTsKLSAgICAgICAgcmV0dXJuIHNl
bGVjdGVkU2NvcGVCYXJJdGVtICYmICFzZWxlY3RlZFNjb3BlQmFySXRlbS5leGNsdXNpdmU7Ci0g
ICAgfQotCi0gICAgbWF0Y2hUcmVlRWxlbWVudEFnYWluc3RDdXN0b21GaWx0ZXJzKHRyZWVFbGVt
ZW50LCBmbGFncykKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Njb3BlQmFy
LnNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAxKTsKLSAgICAgICAgbGV0IHNlbGVjdGVkU2NvcGVC
YXJJdGVtID0gdGhpcy5fc2NvcGVCYXIuc2VsZWN0ZWRJdGVtc1swXTsKLQotICAgICAgICAvLyBT
aG93IGV2ZXJ5dGhpbmcgaWYgdGhlcmUgaXMgbm8gc2VsZWN0aW9uIG9yICJBbGwgUmVzb3VyY2Vz
IiBpcyBzZWxlY3RlZCAodGhlIGV4Y2x1c2l2ZSBpdGVtKS4KLSAgICAgICAgaWYgKCFzZWxlY3Rl
ZFNjb3BlQmFySXRlbSB8fCBzZWxlY3RlZFNjb3BlQmFySXRlbS5leGNsdXNpdmUpCi0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAvLyBGb2xkZXJzIGFyZSBoaWRkZW4gb24gdGhl
IGZpcnN0IHBhc3MsIGJ1dCB2aXNpYmxlIGNoaWxkZW4gdW5kZXIgdGhlIGZvbGRlciB3aWxsIGZv
cmNlIHRoZSBmb2xkZXIgdmlzaWJsZSBhZ2Fpbi4KLSAgICAgICAgaWYgKHRyZWVFbGVtZW50IGlu
c3RhbmNlb2YgV0kuRm9sZGVyVHJlZUVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgZnVuY3Rpb24gbWF0Y2goKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
dHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5GcmFtZVRyZWVFbGVtZW50KQotICAgICAgICAgICAg
ICAgIHJldHVybiBzZWxlY3RlZFNjb3BlQmFySXRlbVtXSS5Tb3VyY2VzU2lkZWJhclBhbmVsLlJl
c291cmNlVHlwZVN5bWJvbF0gPT09IFdJLlJlc291cmNlLlR5cGUuRG9jdW1lbnQ7Ci0KLSAgICAg
ICAgICAgIGlmICh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLlNjcmlwdFRyZWVFbGVtZW50KQot
ICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZFNjb3BlQmFySXRlbVtXSS5Tb3VyY2VzU2lk
ZWJhclBhbmVsLlJlc291cmNlVHlwZVN5bWJvbF0gPT09IFdJLlJlc291cmNlLlR5cGUuU2NyaXB0
OwotCi0gICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5DU1NTdHlsZVNo
ZWV0VHJlZUVsZW1lbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkU2NvcGVCYXJJ
dGVtW1dJLlNvdXJjZXNTaWRlYmFyUGFuZWwuUmVzb3VyY2VUeXBlU3ltYm9sXSA9PT0gV0kuUmVz
b3VyY2UuVHlwZS5TdHlsZXNoZWV0OwotCi0gICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0cmVl
RWxlbWVudCBpbnN0YW5jZW9mIFdJLlJlc291cmNlVHJlZUVsZW1lbnQsICJVbmtub3duIHRyZWVF
bGVtZW50IiwgdHJlZUVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKCEodHJlZUVsZW1lbnQgaW5z
dGFuY2VvZiBXSS5SZXNvdXJjZVRyZWVFbGVtZW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAgICAgICAgIHJldHVybiB0cmVlRWxlbWVudC5yZXNvdXJjZS50eXBlID09
PSBzZWxlY3RlZFNjb3BlQmFySXRlbVtXSS5Tb3VyY2VzU2lkZWJhclBhbmVsLlJlc291cmNlVHlw
ZVN5bWJvbF07Ci0gICAgICAgIH0KLQotICAgICAgICBsZXQgbWF0Y2hlZCA9IG1hdGNoKCk7Ci0g
ICAgICAgIGlmIChtYXRjaGVkKQotICAgICAgICAgICAgZmxhZ3MuZXhwYW5kVHJlZUVsZW1lbnQg
PSB0cnVlOwotICAgICAgICByZXR1cm4gbWF0Y2hlZDsKLSAgICB9Ci0KLSAgICAvLyBQcml2YXRl
Ci0KLSAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYg
KCFldmVudC50YXJnZXQuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICB0aGlzLl9tYWluRnJhbWVNYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQudGFyZ2V0KTsK
LSAgICB9Ci0KLSAgICBfbWFpbkZyYW1lRGlkQ2hhbmdlKGV2ZW50KQotICAgIHsKLSAgICAgICAg
dGhpcy5fbWFpbkZyYW1lTWFpblJlc291cmNlRGlkQ2hhbmdlKFdJLmZyYW1lUmVzb3VyY2VNYW5h
Z2VyLm1haW5GcmFtZSk7Ci0gICAgfQotCi0gICAgX21haW5GcmFtZU1haW5SZXNvdXJjZURpZENo
YW5nZShtYWluRnJhbWUpCi0gICAgewotICAgICAgICB0aGlzLmNvbnRlbnRCcm93c2VyLmNvbnRl
bnRWaWV3Q29udGFpbmVyLmNsb3NlQWxsQ29udGVudFZpZXdzKCk7Ci0KLSAgICAgICAgaWYgKHRo
aXMuX21haW5GcmFtZVRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICB0aGlzLmNvbnRlbnRUcmVl
T3V0bGluZS5yZW1vdmVDaGlsZCh0aGlzLl9tYWluRnJhbWVUcmVlRWxlbWVudCk7Ci0gICAgICAg
ICAgICB0aGlzLl9tYWluRnJhbWVUcmVlRWxlbWVudCA9IG51bGw7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoIW1haW5GcmFtZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlz
Ll9tYWluRnJhbWVUcmVlRWxlbWVudCA9IG5ldyBXSS5GcmFtZVRyZWVFbGVtZW50KG1haW5GcmFt
ZSk7Ci0gICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmluc2VydENoaWxkKHRoaXMuX21h
aW5GcmFtZVRyZWVFbGVtZW50LCAwKTsKLQotICAgICAgICBmdW5jdGlvbiBkZWxheWVkV29yaygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5jb250ZW50VHJlZU91dGxpbmUuc2Vs
ZWN0ZWRUcmVlRWxlbWVudCkgewotICAgICAgICAgICAgICAgIGxldCBjdXJyZW50Q29udGVudFZp
ZXcgPSB0aGlzLmNvbnRlbnRCcm93c2VyLmN1cnJlbnRDb250ZW50VmlldzsKLSAgICAgICAgICAg
ICAgICBsZXQgdHJlZUVsZW1lbnQgPSBjdXJyZW50Q29udGVudFZpZXcgPyB0aGlzLnRyZWVFbGVt
ZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QoY3VycmVudENvbnRlbnRWaWV3LnJlcHJlc2VudGVkT2Jq
ZWN0KSA6IG51bGw7Ci0gICAgICAgICAgICAgICAgaWYgKCF0cmVlRWxlbWVudCkKLSAgICAgICAg
ICAgICAgICAgICAgdHJlZUVsZW1lbnQgPSB0aGlzLl9tYWluRnJhbWVUcmVlRWxlbWVudDsKLSAg
ICAgICAgICAgICAgICB0aGlzLnNob3dEZWZhdWx0Q29udGVudFZpZXdGb3JUcmVlRWxlbWVudCh0
cmVlRWxlbWVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDb29r
aWUgcmVzdG9yYXRpb24gd2lsbCBhdHRlbXB0IHRvIHJlLXNlbGVjdCB0aGUgcmVzb3VyY2Ugd2Ug
d2VyZSBzaG93aW5nLgotICAgICAgICAvLyBHaXZlIGl0IHRpbWUgdG8gZG8gdGhhdCBiZWZvcmUg
c2VsZWN0aW5nIHRoZSBtYWluIGZyYW1lIHJlc291cmNlLgotICAgICAgICBzZXRUaW1lb3V0KGRl
bGF5ZWRXb3JrLmJpbmQodGhpcykpOwotICAgIH0KLQotICAgIF9zY3JpcHRXYXNBZGRlZChldmVu
dCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2FkZFNjcmlwdChldmVudC5kYXRhLnNjcmlwdCk7Ci0g
ICAgfQotCi0gICAgX2FkZFNjcmlwdChzY3JpcHQpCi0gICAgewotICAgICAgICAvLyBXZSBkb24n
dCBhZGQgc2NyaXB0cyB3aXRob3V0IFVSTHMgaGVyZS4gVGhvc2Ugc2NyaXB0cyBjYW4gcXVpY2ts
eSBjbHV0dGVyIHRoZSBpbnRlcmZhY2UgYW5kCi0gICAgICAgIC8vIGFyZSB1c3VhbGx5IG1vcmUg
dHJhbnNpZW50LiBUaGV5IHdpbGwgZ2V0IGFkZGVkIGlmL3doZW4gdGhleSBuZWVkIHRvIGJlIHNo
b3duIGluIGEgY29udGVudCB2aWV3LgotICAgICAgICBpZiAoIXNjcmlwdC51cmwgJiYgIXNjcmlw
dC5zb3VyY2VVUkwpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gVGFyZ2V0IG1h
aW4gcmVzb3VyY2UuCi0gICAgICAgIGlmIChzY3JpcHQudGFyZ2V0ICE9PSBXSS5wYWdlVGFyZ2V0
KSB7Ci0gICAgICAgICAgICBpZiAoc2NyaXB0LmlzTWFpblJlc291cmNlKCkpCi0gICAgICAgICAg
ICAgICAgdGhpcy5fYWRkVGFyZ2V0V2l0aE1haW5SZXNvdXJjZShzY3JpcHQudGFyZ2V0KTsKLSAg
ICAgICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmRpc2Nsb3N1cmVCdXR0b25zID0gdHJ1
ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIHRoZSBz
Y3JpcHQgVVJMIG1hdGNoZXMgYSByZXNvdXJjZSB3ZSBjYW4gYXNzdW1lIGl0IGlzIHBhcnQgb2Yg
dGhhdCByZXNvdXJjZSBhbmQgZG9lcyBub3QgbmVlZCBhZGRlZC4KLSAgICAgICAgaWYgKHNjcmlw
dC5yZXNvdXJjZSB8fCBzY3JpcHQuZHluYW1pY2FsbHlBZGRlZFNjcmlwdEVsZW1lbnQpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbGV0IGluc2VydEludG9Ub3BMZXZlbCA9IGZhbHNl
OwotICAgICAgICBsZXQgcGFyZW50Rm9sZGVyVHJlZUVsZW1lbnQgPSBudWxsOwotCi0gICAgICAg
IGlmIChzY3JpcHQuaW5qZWN0ZWQpIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5fZXh0ZW5zaW9u
U2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgbGV0IGNvbGxlY3Rp
b24gPSBuZXcgV0kuU2NyaXB0Q29sbGVjdGlvbjsKLSAgICAgICAgICAgICAgICB0aGlzLl9leHRl
bnNpb25TY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQgPSBuZXcgV0kuRm9sZGVyVHJlZUVsZW1lbnQo
V0kuVUlTdHJpbmcoIkV4dGVuc2lvbiBTY3JpcHRzIiksIGNvbGxlY3Rpb24pOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBwYXJlbnRGb2xkZXJUcmVlRWxlbWVudCA9IHRoaXMuX2V4dGVu
c2lvblNjcmlwdHNGb2xkZXJUcmVlRWxlbWVudDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGlmIChTb3VyY2VzU2lkZWJhclBhbmVsLnNob3VsZFBsYWNlUmVzb3VyY2VzQXRUb3BMZXZl
bCgpKQotICAgICAgICAgICAgICAgIGluc2VydEludG9Ub3BMZXZlbCA9IHRydWU7Ci0gICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2V4dHJhU2NyaXB0c0ZvbGRl
clRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBjb2xsZWN0aW9uID0gbmV3
IFdJLlNjcmlwdENvbGxlY3Rpb247Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2V4dHJhU2Ny
aXB0c0ZvbGRlclRyZWVFbGVtZW50ID0gbmV3IFdJLkZvbGRlclRyZWVFbGVtZW50KFdJLlVJU3Ry
aW5nKCJFeHRyYSBTY3JpcHRzIiksIGNvbGxlY3Rpb24pOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIHBhcmVudEZvbGRlclRyZWVFbGVtZW50ID0gdGhpcy5fZXh0cmFTY3Jp
cHRzRm9sZGVyVHJlZUVsZW1lbnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAocGFyZW50Rm9sZGVyVHJlZUVsZW1lbnQpCi0gICAgICAgICAgICBwYXJlbnRGb2xkZXJU
cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdC5hZGQoc2NyaXB0KTsKLQotICAgICAgICBsZXQg
c2NyaXB0VHJlZUVsZW1lbnQgPSBuZXcgV0kuU2NyaXB0VHJlZUVsZW1lbnQoc2NyaXB0KTsKLQot
ICAgICAgICBpZiAoaW5zZXJ0SW50b1RvcExldmVsKSB7Ci0gICAgICAgICAgICBsZXQgaW5kZXgg
PSBpbnNlcnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oc2NyaXB0VHJl
ZUVsZW1lbnQsIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmNoaWxkcmVuLCB0aGlzLl9jb21wYXJl
VHJlZUVsZW1lbnRzKTsKLSAgICAgICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmluc2Vy
dENoaWxkKHNjcmlwdFRyZWVFbGVtZW50LCBpbmRleCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBpZiAoIXBhcmVudEZvbGRlclRyZWVFbGVtZW50LnBhcmVudCkgewotICAgICAgICAg
ICAgICAgIGxldCBpbmRleCA9IGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlG
dW5jdGlvbihwYXJlbnRGb2xkZXJUcmVlRWxlbWVudCwgdGhpcy5jb250ZW50VHJlZU91dGxpbmUu
Y2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVUcmVlRWxlbWVudHMpOwotICAgICAgICAgICAgICAgIHRo
aXMuY29udGVudFRyZWVPdXRsaW5lLmluc2VydENoaWxkKHBhcmVudEZvbGRlclRyZWVFbGVtZW50
LCBpbmRleCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHBhcmVudEZvbGRlclRyZWVF
bGVtZW50LmFwcGVuZENoaWxkKHNjcmlwdFRyZWVFbGVtZW50KTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIF9zY3JpcHRXYXNSZW1vdmVkKGV2ZW50KQotICAgIHsKLSAgICAgICAgbGV0IHNjcmlw
dCA9IGV2ZW50LmRhdGEuc2NyaXB0OwotICAgICAgICBsZXQgc2NyaXB0VHJlZUVsZW1lbnQgPSB0
aGlzLmNvbnRlbnRUcmVlT3V0bGluZS5nZXRDYWNoZWRUcmVlRWxlbWVudChzY3JpcHQpOwotICAg
ICAgICBpZiAoIXNjcmlwdFRyZWVFbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGxldCBwYXJlbnRUcmVlRWxlbWVudCA9IHNjcmlwdFRyZWVFbGVtZW50LnBhcmVudDsKLSAg
ICAgICAgcGFyZW50VHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc2NyaXB0VHJlZUVsZW1lbnQpOwot
Ci0gICAgICAgIGlmIChwYXJlbnRUcmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLkZvbGRlclRyZWVF
bGVtZW50KSB7Ci0gICAgICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVj
dC5yZW1vdmUoc2NyaXB0KTsKLQotICAgICAgICAgICAgaWYgKCFwYXJlbnRUcmVlRWxlbWVudC5j
aGlsZHJlbi5sZW5ndGgpCi0gICAgICAgICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQucGFyZW50
LnJlbW92ZUNoaWxkKHBhcmVudFRyZWVFbGVtZW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IF9zY3JpcHRzQ2xlYXJlZChldmVudCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IHN1cHByZXNzT25E
ZXNlbGVjdCA9IHRydWU7Ci0gICAgICAgIGNvbnN0IHN1cHByZXNzU2VsZWN0U2libGluZyA9IHRy
dWU7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2V4dGVuc2lvblNjcmlwdHNGb2xkZXJUcmVlRWxlbWVu
dCkgewotICAgICAgICAgICAgaWYgKHRoaXMuX2V4dGVuc2lvblNjcmlwdHNGb2xkZXJUcmVlRWxl
bWVudC5wYXJlbnQpCi0gICAgICAgICAgICAgICAgdGhpcy5fZXh0ZW5zaW9uU2NyaXB0c0ZvbGRl
clRyZWVFbGVtZW50LnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzLl9leHRlbnNpb25TY3JpcHRzRm9s
ZGVyVHJlZUVsZW1lbnQsIHN1cHByZXNzT25EZXNlbGVjdCwgc3VwcHJlc3NTZWxlY3RTaWJsaW5n
KTsKLQotICAgICAgICAgICAgdGhpcy5fZXh0ZW5zaW9uU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50
LnJlcHJlc2VudGVkT2JqZWN0LmNsZWFyKCk7Ci0gICAgICAgICAgICB0aGlzLl9leHRlbnNpb25T
Y3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQgPSBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KHRoaXMuX2V4dHJhU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICBpZiAo
dGhpcy5fZXh0cmFTY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQucGFyZW50KQotICAgICAgICAgICAg
ICAgIHRoaXMuX2V4dHJhU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50LnBhcmVudC5yZW1vdmVDaGls
ZCh0aGlzLl9leHRyYVNjcmlwdHNGb2xkZXJUcmVlRWxlbWVudCwgc3VwcHJlc3NPbkRlc2VsZWN0
LCBzdXBwcmVzc1NlbGVjdFNpYmxpbmcpOwotCi0gICAgICAgICAgICB0aGlzLl9leHRyYVNjcmlw
dHNGb2xkZXJUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdC5jbGVhcigpOwotICAgICAgICAg
ICAgdGhpcy5fZXh0cmFTY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQgPSBudWxsOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKHRoaXMuX2Fub255bW91c1NjcmlwdHNGb2xkZXJUcmVlRWxlbWVudCkg
ewotICAgICAgICAgICAgaWYgKHRoaXMuX2Fub255bW91c1NjcmlwdHNGb2xkZXJUcmVlRWxlbWVu
dC5wYXJlbnQpCi0gICAgICAgICAgICAgICAgdGhpcy5fYW5vbnltb3VzU2NyaXB0c0ZvbGRlclRy
ZWVFbGVtZW50LnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzLl9hbm9ueW1vdXNTY3JpcHRzRm9sZGVy
VHJlZUVsZW1lbnQsIHN1cHByZXNzT25EZXNlbGVjdCwgc3VwcHJlc3NTZWxlY3RTaWJsaW5nKTsK
LQotICAgICAgICAgICAgdGhpcy5fYW5vbnltb3VzU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50LnJl
cHJlc2VudGVkT2JqZWN0LmNsZWFyKCk7Ci0gICAgICAgICAgICB0aGlzLl9hbm9ueW1vdXNTY3Jp
cHRzRm9sZGVyVHJlZUVsZW1lbnQgPSBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRo
aXMuX3RhcmdldFRyZWVFbGVtZW50TWFwLnNpemUpIHsKLSAgICAgICAgICAgIGZvciAobGV0IHRy
ZWVFbGVtZW50IG9mIHRoaXMuX3RhcmdldFRyZWVFbGVtZW50TWFwKQotICAgICAgICAgICAgICAg
IHRyZWVFbGVtZW50LnBhcmVudC5yZW1vdmVDaGlsZCh0cmVlRWxlbWVudCwgc3VwcHJlc3NPbkRl
c2VsZWN0LCBzdXBwcmVzc1NlbGVjdFNpYmxpbmcpOwotICAgICAgICAgICAgdGhpcy5fdGFyZ2V0
VHJlZUVsZW1lbnRNYXAuY2xlYXIoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIF9zdHlsZVNo
ZWV0QWRkZWQoZXZlbnQpCi0gICAgewotICAgICAgICBsZXQgc3R5bGVTaGVldCA9IGV2ZW50LmRh
dGEuc3R5bGVTaGVldDsKLSAgICAgICAgaWYgKCFzdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVT
aGVldCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGxldCBmcmFtZVRyZWVFbGVt
ZW50ID0gdGhpcy50cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KHN0eWxlU2hlZXQucGFy
ZW50RnJhbWUpOwotICAgICAgICBpZiAoIWZyYW1lVHJlZUVsZW1lbnQpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgZnJhbWVUcmVlRWxlbWVudC5hZGRSZXByZXNlbnRlZE9iamVjdFRv
TmV3Q2hpbGRRdWV1ZShzdHlsZVNoZWV0KTsKLSAgICB9Ci0KLSAgICBfYWRkVGFyZ2V0V2l0aE1h
aW5SZXNvdXJjZSh0YXJnZXQpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0YXJnZXQu
dHlwZSA9PT0gV0kuVGFyZ2V0LlR5cGUuV29ya2VyIHx8IHRhcmdldC50eXBlID09PSBXSS5UYXJn
ZXQuVHlwZS5TZXJ2aWNlV29ya2VyKTsKLQotICAgICAgICBsZXQgdGFyZ2V0VHJlZUVsZW1lbnQg
PSBuZXcgV0kuV29ya2VyVHJlZUVsZW1lbnQodGFyZ2V0KTsKLSAgICAgICAgdGhpcy5fdGFyZ2V0
VHJlZUVsZW1lbnRNYXAuc2V0KHRhcmdldCwgdGFyZ2V0VHJlZUVsZW1lbnQpOwotCi0gICAgICAg
IGxldCBpbmRleCA9IGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlv
bih0YXJnZXRUcmVlRWxlbWVudCwgdGhpcy5jb250ZW50VHJlZU91dGxpbmUuY2hpbGRyZW4sIHRo
aXMuX2NvbXBhcmVUcmVlRWxlbWVudHMpOwotICAgICAgICB0aGlzLmNvbnRlbnRUcmVlT3V0bGlu
ZS5pbnNlcnRDaGlsZCh0YXJnZXRUcmVlRWxlbWVudCwgaW5kZXgpOwotICAgIH0KLQotICAgIF90
YXJnZXRSZW1vdmVkKGV2ZW50KQotICAgIHsKLSAgICAgICAgbGV0IHJlbW92ZWRUYXJnZXQgPSBl
dmVudC5kYXRhLnRhcmdldDsKLQotICAgICAgICBsZXQgdGFyZ2V0VHJlZUVsZW1lbnQgPSB0aGlz
Ll90YXJnZXRUcmVlRWxlbWVudE1hcC50YWtlKHJlbW92ZWRUYXJnZXQpOwotICAgICAgICBpZiAo
dGFyZ2V0VHJlZUVsZW1lbnQpCi0gICAgICAgICAgICB0YXJnZXRUcmVlRWxlbWVudC5wYXJlbnQu
cmVtb3ZlQ2hpbGQodGFyZ2V0VHJlZUVsZW1lbnQpOwotICAgIH0KLQotICAgIF90cmVlU2VsZWN0
aW9uRGlkQ2hhbmdlKGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGxldCB0cmVlRWxlbWVudCA9IGV2ZW50LmRh
dGEuc2VsZWN0ZWRFbGVtZW50OwotICAgICAgICBpZiAoIXRyZWVFbGVtZW50KQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLkZvbGRl
clRyZWVFbGVtZW50Ci0gICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLlJl
c291cmNlVHJlZUVsZW1lbnQKLSAgICAgICAgICAgIHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2Yg
V0kuU2NyaXB0VHJlZUVsZW1lbnQKLSAgICAgICAgICAgIHx8IHRyZWVFbGVtZW50IGluc3RhbmNl
b2YgV0kuQ1NTU3R5bGVTaGVldFRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICBjb25zdCBjb29r
aWUgPSBudWxsOwotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAg
ICBpZ25vcmVOZXR3b3JrVGFiOiB0cnVlLAotICAgICAgICAgICAgICAgIGlnbm9yZVNlYXJjaFRh
YjogdHJ1ZSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBXSS5zaG93UmVwcmVzZW50ZWRP
YmplY3QodHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QsIGNvb2tpZSwgb3B0aW9ucyk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zb2xlLmVycm9yKCJV
bmtub3duIHRyZWUgZWxlbWVudCIsIHRyZWVFbGVtZW50KTsKLSAgICB9Ci0KLSAgICBfY29tcGFy
ZVRyZWVFbGVtZW50cyhhLCBiKQotICAgIHsKLSAgICAgICAgLy8gQWx3YXlzIHNvcnQgdGhlIG1h
aW4gZnJhbWUgZWxlbWVudCBmaXJzdC4KLSAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBXSS5GcmFt
ZVRyZWVFbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoYiBpbnN0
YW5jZW9mIFdJLkZyYW1lVHJlZUVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gMTsKLQotICAg
ICAgICBjb25zb2xlLmFzc2VydChhLm1haW5UaXRsZSk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGIubWFpblRpdGxlKTsKLQotICAgICAgICByZXR1cm4gKGEubWFpblRpdGxlIHx8ICIiKS5leHRl
bmRlZExvY2FsZUNvbXBhcmUoYi5tYWluVGl0bGUgfHwgIiIpOwotICAgIH0KLQotICAgIF9leHRy
YURvbWFpbnNBY3RpdmF0ZWQoKQotICAgIHsKLSAgICAgICAgaWYgKFNvdXJjZXNTaWRlYmFyUGFu
ZWwuc2hvdWxkUGxhY2VSZXNvdXJjZXNBdFRvcExldmVsKCkpCi0gICAgICAgICAgICB0aGlzLmNv
bnRlbnRUcmVlT3V0bGluZS5kaXNjbG9zdXJlQnV0dG9ucyA9IHRydWU7Ci0gICAgfQotCi0gICAg
X3Njb3BlQmFyU2VsZWN0aW9uRGlkQ2hhbmdlKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy51
cGRhdGVGaWx0ZXIoKTsKLSAgICB9Ci19OwotCi1XSS5Tb3VyY2VzU2lkZWJhclBhbmVsLlJlc291
cmNlVHlwZVN5bWJvbCA9IFN5bWJvbCgicmVzb3VyY2UtdHlwZSIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc1RhYkNvbnRlbnRW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNl
c1RhYkNvbnRlbnRWaWV3LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjYyOThi
MTBmODEzMWM1NDEyNTk2YWUwMTUyNDhmM2JkOGJiYmM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NvdXJjZXNUYWJDb250ZW50Vmlldy5qcworKysgL2Rldi9udWxsCkBAIC0xLDcw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi1XSS5Tb3VyY2VzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBT
b3VyY2VzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRW
aWV3Ci17Ci0gICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIGxldCB0
YWJCYXJJdGVtID0gV0kuR2VuZXJhbFRhYkJhckl0ZW0uZnJvbVRhYkluZm8oV0kuU291cmNlc1Rh
YkNvbnRlbnRWaWV3LnRhYkluZm8oKSk7Ci0gICAgICAgIGNvbnN0IGRldGFpbHNTaWRlYmFyUGFu
ZWxDb25zdHJ1Y3RvcnMgPSBbV0kuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLCBXSS5Qcm9i
ZURldGFpbHNTaWRlYmFyUGFuZWxdOwotICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJzb3Vy
Y2VzIiwgInNvdXJjZXMiLCB0YWJCYXJJdGVtLCBXSS5Tb3VyY2VzU2lkZWJhclBhbmVsLCBkZXRh
aWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdGFiSW5m
bygpCi0gICAgewotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgaW1hZ2U6ICJJbWFnZXMv
UmVzb3VyY2VzLnN2ZyIsCi0gICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIlNvdXJjZXMi
KSwKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgaXNUYWJBbGxvd2VkKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVTb3VyY2VzVGFi
LnZhbHVlOwotICAgIH0KLQotICAgIC8vIFB1YmxpYwotCi0gICAgZ2V0IHR5cGUoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIFdJLlNvdXJjZXNUYWJDb250ZW50Vmlldy5UeXBlOwotICAgIH0KLQot
ICAgIGdldCBzdXBwb3J0c1NwbGl0Q29udGVudEJyb3dzZXIoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotCi0gICAgY2FuU2hvd1JlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2Vu
dGVkT2JqZWN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV0kuRnJhbWUKLSAgICAgICAgICAgIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV0kuUmVzb3VyY2UKLSAgICAgICAgICAgIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV0kuU2NyaXB0Ci0gICAgICAgICAgICB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9m
IFdJLkNTU1N0eWxlU2hlZXQKLSAgICAgICAgICAgIHx8IChyZXByZXNlbnRlZE9iamVjdCBpbnN0
YW5jZW9mIFdJLkNvbGxlY3Rpb24gJiYgIShyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJ
LkNhbnZhc0NvbGxlY3Rpb24pKTsKLSAgICB9Ci19OwotCi1XSS5Tb3VyY2VzVGFiQ29udGVudFZp
ZXcuVHlwZSA9ICJzb3VyY2VzIjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>