<?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>83700</bug_id>
          
          <creation_ts>2012-04-11 09:36:10 -0700</creation_ts>
          <short_desc>Web Inspector: add closure compiler annotations for profiler code</short_desc>
          <delta_ts>2012-04-12 05:04:06 -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 (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>600326</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-11 09:36:10 -0700</bug_when>
    <thetext>Add closure compiler annotations for profiler code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600327</commentid>
    <comment_count>1</comment_count>
      <attachid>136678</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-11 09:37:31 -0700</bug_when>
    <thetext>Created attachment 136678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600501</commentid>
    <comment_count>2</comment_count>
      <attachid>136678</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-11 12:43:03 -0700</bug_when>
    <thetext>Comment on attachment 136678
Patch

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

&gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:32
&gt; + * @param {boolean=} deferNodeContentCreation

@param should be below the @constructor and @extends

&gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:102
&gt; + * @constructor

Annotating parameter types while you are here might make type checking more complete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601100</commentid>
    <comment_count>3</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-12 04:49:32 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 136678 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136678&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:32
&gt; &gt; + * @param {boolean=} deferNodeContentCreation
&gt; 
&gt; @param should be below the @constructor and @extends
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:102
&gt; &gt; + * @constructor
&gt; 
&gt; Annotating parameter types while you are here might make type checking more complete.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601111</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-12 05:04:06 -0700</bug_when>
    <thetext>Committed r113963: &lt;http://trac.webkit.org/changeset/113963&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136678</attachid>
            <date>2012-04-11 09:37:31 -0700</date>
            <delta_ts>2012-04-11 12:43:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83700-20120411203729.patch</filename>
            <type>text/plain</type>
            <size>50791</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzkzNjA0MmE0NmVkMGZi
ZTkwNTg4ZTQ3ZTIzNjNjNjAzZGViZWMxMS4uZWE1NWM3NjliNjc2NWM1MWQ3NmMyOTkzYzk5Mzdi
OWYwMTVkN2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY3IEBACiAyMDEyLTA0LTExICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGFkZCBjbG9zdXJlIGNvbXBpbGVyIGFubm90YXRpb25zIGZvciBwcm9maWxlciBjb2RlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzcwMAorCisg
ICAgICAgIEJhc2ljIHR5cGUgYW5ub3RhdGlvbnMgYXJlIGFkZGVkIHRvIG1vc3Qgb2YgdGhlIHBy
b2ZpbGVyIGZyb250LWVuZC4gU29tZQorICAgICAgICBkZWFkIGNvZGUgcmVtb3ZlZC4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9j
b21waWxlLWZyb250LWVuZC5weToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0JpbmFy
eVNlYXJjaC5qczoKKyAgICAgICAgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5f
cmVzdG9yZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWRO
b2RlLnByb3RvdHlwZS5fc2hhcmVkUG9wdWxhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJv
dHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3dpbGxIYXZlQ2hpbGRyZW4pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhR3JpZC5qczoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RHcmlkTm9kZXMuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlLnByb3RvdHlwZS5fY3JlYXRlQ2hpbGRO
b2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90b3R5
cGUucG9wdWxhdGVDaGlsZHJlbi5maXJzdFByb3ZpZGVyUG9wdWxhdGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90b3R5cGUucG9wdWxhdGVDaGlsZHJl
bi5lbHNlLmZpcnN0UHJvdmlkZXJQb3B1bGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdERpZmZOb2RlLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5fY2hhbmdlQmFzZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLl9z
ZXRSZXRhaW5tZW50RGF0YUdyaWRTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFp
bGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5faGVscENsaWNrZWQuYXBwZW5kSGVscCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLl9oZWxwQ2xp
Y2tlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90KToKKyAgICAgICAgKEhlYXBTbmFwc2hv
dE1ldGFpbmZvKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBl
Ll9idWlsZFJldGFpbmVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZS5fYnVpbGREb21pbmF0ZWROb2Rlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90LnByb3RvdHlwZS5fbWFya1F1ZXJpYWJsZUhlYXBPYmplY3RzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVEYXRhR3JpZFRyZWUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLnJlbW92
ZUNoaWxkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3Rv
dHlwZS5yZW1vdmVDaGlsZHJlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFH
cmlkTm9kZS5wcm90b3R5cGUuX3BvcHVsYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9m
aWxlRGF0YUdyaWRUcmVlLnByb3BlcnR5Q29tcGFyYXRvcik6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9Qcm9maWxlVmlldy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1Byb2ZpbGVzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX2ZpbmlzaEhl
YXBTbmFwc2hvdC5wYXJzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwu
cHJvdG90eXBlLl9maW5pc2hIZWFwU25hcHNob3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBy
b2ZpbGVzUGFuZWwucHJvdG90eXBlLnBlcmZvcm1TZWFyY2guZmluaXNoZWRDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuc2V0UmVjb3JkaW5n
UHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUu
dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRj
aGVyLnByb3RvdHlwZS5hZGRQcm9maWxlSGVhZGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
b3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5wcm90b3R5cGUuZXhjbHVkZSk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzOgorICAgICAgICAoQXJyYXkucHJvdG90eXBl
LmJpbmFyeUluZGV4T2YpOgorICAgICAgICAoQXJyYXkucHJvdG90eXBlLnNvcnRSYW5nZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90V29ya2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RXb3JrZXIucHJvdG90eXBlLmNyZWF0ZU9iamVjdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90V29ya2VyLnByb3RvdHlwZS5zdGFydENoZWNraW5nRm9yTG9u
Z1J1bm5pbmdDYWxscyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9oZWFwUHJvZmls
ZXIuY3NzOgorCisyMDEyLTA0LTExICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0u
b3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNob3dpbmcgc3VtbWFyeSB2aWV3IGlzIHZl
cnkgc2xvdyBvbiBhIHNuYXBzaG90IHdpdGggdGhvdXNhbmRzIG9mIGNvbnN0cnVjdG9ycwogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM2ODIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5IGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CmluZGV4IDY4NGM3
ZDVmYjc1MzZlZWYzYzgyODdlMDM3MWM3NTE1YjMyODZlMDEuLmNkNzdiYjVlZWU2ZmM2MGJkZmY5
M2ZlYTliY2UzMGIwYjZhMDUwOTMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9jb21waWxlLWZyb250LWVuZC5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29t
cGlsZS1mcm9udC1lbmQucHkKQEAgLTI3MCw2ICsyNzAsMjEgQEAgbW9kdWxlcyA9IFsKICAgICAg
ICAgICAgICJUZXN0Q29udHJvbGxlci5qcyIsCiAgICAgICAgIF0KICAgICB9LAorICAgIHsKKyAg
ICAgICAgInRhcmdldF9uYW1lIjogInByb2ZpbGVyIiwKKyAgICAgICAgImRlcGVuZGVuY2llcyI6
IFsiY29tcG9uZW50cyJdLAorICAgICAgICAic291cmNlcyI6IFsKKyAgICAgICAgICAgICJCb3R0
b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanMiLAorICAgICAgICAgICAgIkRldGFpbGVkSGVhcHNo
b3RWaWV3LmpzIiwKKyAgICAgICAgICAgICJEZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzIiwK
KyAgICAgICAgICAgICJQcm9maWxlRGF0YUdyaWRUcmVlLmpzIiwKKyAgICAgICAgICAgICJQcm9m
aWxlc1BhbmVsLmpzIiwKKyAgICAgICAgICAgICJQcm9maWxlTGF1bmNoZXJWaWV3LmpzIiwKKyAg
ICAgICAgICAgICJQcm9maWxlVmlldy5qcyIsCisgICAgICAgICAgICAiVG9wRG93blByb2ZpbGVE
YXRhR3JpZFRyZWUuanMiLAorICAgICAgICAgICAgIkhlYXBTbmFwc2hvdC5qcyIsCisgICAgICAg
IF0KKyAgICB9LAogIyAgICB7CiAjICAgICAgICAidGFyZ2V0X25hbWUiOiAidG9rZW5pemVycyIs
CiAjICAgICAgICAiZGVwZW5kZW5jaWVzIjogWyJjb21wb25lbnRzIl0sCkBAIC0yODUsMTcgKzMw
MCw5IEBAIG1vZHVsZXMgPSBbCiAjCiAjIFtQcm9maWxlcl0KICMgQ1NTU2VsZWN0b3JQcm9maWxl
VmlldwotIyBCb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUKLSMgRGV0YWlsZWRIZWFwc2hvdEdy
aWROb2RlcwotIyBEZXRhaWxlZEhlYXBzaG90VmlldwotIyBIZWFwU25hcHNob3QKICMgSGVhcFNu
YXBzaG90UHJveHkKICMgSGVhcFNuYXBzaG90V29ya2VyCiAjIEhlYXBTbmFwc2hvdFdvcmtlckRp
c3BhdGNoZXIKLSMgUHJvZmlsZURhdGFHcmlkVHJlZQotIyBQcm9maWxlc1BhbmVsCi0jIFByb2Zp
bGVWaWV3Ci0jIFRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlCiAjCiAjIFtNaXNjXQogIyBpbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQmlu
YXJ5U2VhcmNoLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CaW5hcnlT
ZWFyY2guanMKaW5kZXggZTZjOTljMjcyYjc0OTc5NjkzZWUyNmNhNDQwZDIyOTI0NmFhYzRjMC4u
OGQwM2NhNDkyOTM4ZDZlNTZlMWZjMTZiNWNlMmE2NmUwZDhiNzg5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CaW5hcnlTZWFyY2guanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CaW5hcnlTZWFyY2guanMKQEAgLTU0LDEx
ICs1NCwxNyBAQCBmdW5jdGlvbiBiaW5hcnlTZWFyY2gob2JqZWN0LCBhcnJheSwgY29tcGFyYXRv
cikKICAgICByZXR1cm4gLShmaXJzdCArIDEpOwogfQogCi1PYmplY3QuZGVmaW5lUHJvcGVydHko
QXJyYXkucHJvdG90eXBlLCAiYmluYXJ5SW5kZXhPZiIsIHsgdmFsdWU6IGZ1bmN0aW9uKHZhbHVl
LCBjb21wYXJhdG9yKQorT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgImJp
bmFyeUluZGV4T2YiLAogewotICAgIHZhciByZXN1bHQgPSBiaW5hcnlTZWFyY2godmFsdWUsIHRo
aXMsIGNvbXBhcmF0b3IpOwotICAgIHJldHVybiByZXN1bHQgPj0gMCA/IHJlc3VsdCA6IC0xOwot
fX0pOworICAgIC8qKgorICAgICAqIEB0aGlzIHtBcnJheS48Kj59CisgICAgICovCisgICAgdmFs
dWU6IGZ1bmN0aW9uKHZhbHVlLCBjb21wYXJhdG9yKQorICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IGJpbmFyeVNlYXJjaCh2YWx1ZSwgdGhpcywgY29tcGFyYXRvcik7CisgICAgICAgIHJldHVy
biByZXN1bHQgPj0gMCA/IHJlc3VsdCA6IC0xOworICAgIH0KK30pOwogCiAvKioKICAqIEBwYXJh
bSB7Kn0gYW5PYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanMKaW5kZXggNWFh
YWUwY2RlNzZiY2QyMWZjMTk2ZjViZWY2NzFiMTMzZGI0ZmJjNy4uZjU5ODJhZDg1MDEzYjllODc3
OTc1YWY0NjMzMWQyYWY5NjlmYzBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUu
anMKQEAgLTI5LDYgKzI5LDEwIEBACiAvLyBlYWNoIGNoaWxkIHN0aWxsIHJlcHJlc2VudCB0aGUg
cm9vdCBub2RlLiBXZSBoYXZlIHRvIGJlIHBhcnRpY3VsYXJseSBjYXJlZnVsIG9mIHJlY3Vyc2lv
biB3aXRoIHRoaXMgbW9kZQogLy8gYmVjYXVzZSBhIHJvb3Qgbm9kZSBjYW4gcmVwcmVzZW50IGl0
c2VsZiBBTkQgYW4gYW5jZXN0b3IuCiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5k
cyB7V2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGV9CisgKi8KIFdlYkluc3BlY3Rvci5C
b3R0b21VcFByb2ZpbGVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbigvKlByb2ZpbGVWaWV3Ki8gcHJv
ZmlsZVZpZXcsIC8qUHJvZmlsZU5vZGUqLyBwcm9maWxlTm9kZSwgLypCb3R0b21VcFByb2ZpbGVE
YXRhR3JpZFRyZWUqLyBvd25pbmdUcmVlKQogewogICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0
YUdyaWROb2RlLmNhbGwodGhpcywgcHJvZmlsZVZpZXcsIHByb2ZpbGVOb2RlLCBvd25pbmdUcmVl
LCB0aGlzLl93aWxsSGF2ZUNoaWxkcmVuKHByb2ZpbGVOb2RlKSk7CkBAIC03OSw3ICs4Myw3IEBA
IFdlYkluc3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewog
ICAgICAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3Jlc3Rv
cmUoKTsKIAogICAgICAgICBpZiAoIXRoaXMuY2hpbGRyZW4ubGVuZ3RoKQotICAgICAgICAgICAg
dGhpcy5oYXNDaGlsZHJlbiA9IHRoaXMuX3dpbGxIYXZlQ2hpbGRyZW4oKTsKKyAgICAgICAgICAg
IHRoaXMuaGFzQ2hpbGRyZW4gPSB0aGlzLl93aWxsSGF2ZUNoaWxkcmVuKHRoaXMucHJvZmlsZU5v
ZGUpOwogICAgIH0sCiAKICAgICBfbWVyZ2U6IGZ1bmN0aW9uKC8qUHJvZmlsZURhdGFHcmlkTm9k
ZSovIGNoaWxkLCAvKkJvb2xlYW4qLyBzaG91bGRBYnNvcmIpCkBAIC0xMTIsNyArMTE2LDcgQEAg
V2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIElmIG5vdCwgYWRkIGl0IGFz
IGEgdHJ1ZSBhbmNlc3Rvci4KICAgICAgICAgICAgICAgICAvLyBJbiBoZWF2eSBtb2RlLCB3ZSB0
YWtlIG91ciB2aXN1YWwgaWRlbnRpdHkgZnJvbSBhbmNlc3RvciBub2RlLi4uCi0gICAgICAgICAg
ICAgICAgdmFyIGNoaWxkID0gbmV3IFdlYkluc3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRhR3Jp
ZE5vZGUodGhpcy5wcm9maWxlVmlldywgYW5jZXN0b3IsIHRoaXMudHJlZSk7CisgICAgICAgICAg
ICAgICAgY2hpbGQgPSBuZXcgV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9k
ZSh0aGlzLnByb2ZpbGVWaWV3LCBhbmNlc3RvciwgdGhpcy50cmVlKTsKIAogICAgICAgICAgICAg
ICAgIGlmIChhbmNlc3RvciAhPT0gZm9jdXNOb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8v
IGJ1dCB0aGUgYWN0dWFsIHN0YXRpc3RpY3MgZnJvbSB0aGUgInJvb3QiIG5vZGUgKGJvdHRvbSBv
ZiB0aGUgY2FsbHN0YWNrKS4KQEAgLTEzNiw3ICsxNDAsNiBAQCBXZWJJbnNwZWN0b3IuQm90dG9t
VXBQcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgIF93aWxsSGF2ZUNoaWxk
cmVuOiBmdW5jdGlvbihwcm9maWxlTm9kZSkKICAgICB7Ci0gICAgICAgIHByb2ZpbGVOb2RlID0g
cHJvZmlsZU5vZGUgfHwgdGhpcy5wcm9maWxlTm9kZTsKICAgICAgICAgLy8gSW4gYm90dG9tIHVw
IG1vZGUsIG91ciBwYXJlbnRzIGFyZSBvdXIgY2hpbGRyZW4gc2luY2Ugd2UgZGlzcGxheSBhbiBp
bnZlcnRlZCB0cmVlLgogICAgICAgICAvLyBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHRvIHNob3cg
dGhlIHZlcnkgdG9wIHBhcmVudCBzaW5jZSBpdCBpcyByZWR1bmRhbnQuCiAgICAgICAgIHJldHVy
biAhIShwcm9maWxlTm9kZS5wYXJlbnQgJiYgcHJvZmlsZU5vZGUucGFyZW50LnBhcmVudCk7CkBA
IC0xNDUsNiArMTQ4LDEwIEBAIFdlYkluc3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZE5v
ZGUucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWRO
b2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9k
ZS5wcm90b3R5cGU7CiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5z
cGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRyZWV9CisgKi8KIFdlYkluc3BlY3Rvci5Cb3R0b21VcFBy
b2ZpbGVEYXRhR3JpZFRyZWUgPSBmdW5jdGlvbigvKlByb2ZpbGVWaWV3Ki8gYVByb2ZpbGVWaWV3
LCAvKlByb2ZpbGVOb2RlKi8gYVByb2ZpbGVOb2RlKQogewogICAgIFdlYkluc3BlY3Rvci5Qcm9m
aWxlRGF0YUdyaWRUcmVlLmNhbGwodGhpcywgYVByb2ZpbGVWaWV3LCBhUHJvZmlsZU5vZGUpOwpA
QCAtMjAxLDcgKzIwOCw5IEBAIFdlYkluc3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRy
ZWUgPSBmdW5jdGlvbigvKlByb2ZpbGVWaWV3Ki8gYVByb2ZpbGVWaWV3CiAgICAgfQogCiAgICAg
Ly8gUG9wdWxhdGUgdGhlIHRvcCBsZXZlbCBub2Rlcy4KLSAgICBXZWJJbnNwZWN0b3IuQm90dG9t
VXBQcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fcG9wdWxhdGUuY2FsbCh0aGlzKTsKKyAg
ICB2YXIgYW55ID0gLyoqIEB0eXBleyp9ICovdGhpczsKKyAgICB2YXIgbm9kZSA9IC8qKiBAdHlw
ZXtXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZX0gKi9hbnk7CisgICAgV2ViSW5zcGVj
dG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3BvcHVsYXRlLmNhbGwo
bm9kZSk7CiAKICAgICByZXR1cm4gdGhpczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdyaWQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzCmluZGV4IDI0ZmQ3NzdhOTY2OTY4NTU4MzcwOTdlNWYz
ODJlNDUwMWQ4YWIzZWMuLjIzNzZkZTQzMGU0NGI5MzNhODQ4ODNjZWExYTYzMWRkMDc5MTYyMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdyaWQu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhR3JpZC5qcwpA
QCAtNjc3LDYgKzY3Nyw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQoY2hpbGQsIHRoaXMuY2hpbGRyZW4ubGVuZ3RoKTsKICAg
ICB9LAogCisgICAgLyoqCisgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5EYXRhR3JpZHxXZWJJ
bnNwZWN0b3IuRGF0YUdyaWROb2RlfQorICAgICAqLwogICAgIGluc2VydENoaWxkOiBmdW5jdGlv
bihjaGlsZCwgaW5kZXgpCiAgICAgewogICAgICAgICBpZiAoIWNoaWxkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5v
ZGVzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBz
aG90R3JpZE5vZGVzLmpzCmluZGV4IDk0MGRlNDVlYjc1NGZjMjM2MTlhMmRiZmJiMjZjN2ZkODg2
YjQ4ZGQuLjQ3M2Q1MGIxMDg5NmI2NGVkOWM3ZDc5ZmQzNmYwZWE4NGM0ZjcxM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdy
aWROb2Rlcy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFp
bGVkSGVhcHNob3RHcmlkTm9kZXMuanMKQEAgLTI4LDYgKzI4LDEwIEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9y
LkRhdGFHcmlkTm9kZX0KKyAqLwogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlID0g
ZnVuY3Rpb24odHJlZSwgaGFzQ2hpbGRyZW4pCiB7CiAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZS5jYWxsKHRoaXMsIG51bGwsIGhhc0NoaWxkcmVuKTsKQEAgLTIwMyw2ICsyMDcsMTAgQEAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZTsKIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
IEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGV9CisgKi8KIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RMYXp5R3JpZE5vZGUgPSBmdW5jdGlvbih0cmVlLCBoYXNDaGls
ZHJlbikKIHsKICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUuY2FsbCh0aGlz
LCB0cmVlLCBoYXNDaGlsZHJlbik7CkBAIC0yMjgsNiArMjM2LDEwIEBAIFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RMYXp5R3JpZE5vZGUucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90TGF6eUdyaWROb2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90R3JpZE5vZGUucHJvdG90eXBlOwogCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZX0KKyAqLwogV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlID0gZnVuY3Rpb24odHJlZSwg
bm9kZSkKIHsKICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUuY2FsbCh0aGlz
LCB0cmVlLCBmYWxzZSk7CkBAIC0yODUsMTEgKzI5Nyw2IEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RHZW5lcmljT2JqZWN0Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBjZWxs
OwogICAgIH0sCiAKLSAgICBnZXQgX2NvdW50UGVyY2VudCgpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fY291bnQgLyB0aGlzLmRhdGFHcmlkLnNuYXBzaG90Lm5vZGVDb3VudCAqIDEwMC4w
OwotICAgIH0sCi0KICAgICBnZXQgZGF0YSgpCiAgICAgewogICAgICAgICB2YXIgZGF0YSA9IHRo
aXMuX2VtcHR5RGF0YSgpOwpAQCAtMzk3LDYgKzQwNCwxMCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90R2VuZXJpY09iamVjdE5vZGUucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90R2VuZXJpY09iamVjdE5vZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGU7CiAKKy8qKgorICogQGNvbnN0cnVj
dG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3RO
b2RlfQorICovCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZSA9IGZ1bmN0aW9u
KHRyZWUsIGlzRnJvbUJhc2VTbmFwc2hvdCwgZWRnZSwgcGFyZW50R3JpZE5vZGUpCiB7CiAgICAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLmNhbGwodGhpcywgdHJl
ZSwgZWRnZS5ub2RlKTsKQEAgLTUxNyw2ICs1MjgsMTAgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdE9iamVjdE5vZGUucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
T2JqZWN0Tm9kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dEdlbmVyaWNPYmplY3ROb2RlLnByb3RvdHlwZTsKIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
IEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R2VuZXJpY09iamVjdE5vZGV9Cisg
Ki8KIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJbnN0YW5jZU5vZGUgPSBmdW5jdGlvbih0cmVl
LCBiYXNlU25hcHNob3QsIHNuYXBzaG90LCBub2RlKQogewogICAgIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5jYWxsKHRoaXMsIHRyZWUsIG5vZGUpOwpAQCAtNTI4
LDcgKzU0Myw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJbnN0YW5jZU5vZGUgPSBmdW5j
dGlvbih0cmVlLCBiYXNlU25hcHNob3QsIHNuYXBzaG90LCBuCiBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90SW5zdGFuY2VOb2RlLnByb3RvdHlwZSA9IHsKICAgICBfY3JlYXRlQ2hpbGROb2RlOiBm
dW5jdGlvbihpdGVtKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90T2JqZWN0Tm9kZSh0aGlzLmRhdGFHcmlkLCB0aGlzLl9pc0RlbGV0ZWROb2RlLCBp
dGVtKTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0
Tm9kZSh0aGlzLmRhdGFHcmlkLCB0aGlzLl9pc0RlbGV0ZWROb2RlLCBpdGVtLCBudWxsKTsKICAg
ICB9LAogCiAgICAgX2NyZWF0ZVByb3ZpZGVyOiBmdW5jdGlvbihzbmFwc2hvdCwgbm9kZUluZGV4
KQpAQCAtNTk3LDYgKzYxMiwxMCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VO
b2RlLnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEluc3RhbmNlTm9k
ZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNP
YmplY3ROb2RlLnByb3RvdHlwZTsKIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRz
IHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TGF6eUdyaWROb2RlfQorICovCiBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlID0gZnVuY3Rpb24odHJlZSwgY2xhc3NOYW1l
LCBhZ2dyZWdhdGUsIGFnZ3JlZ2F0ZXNLZXkpCiB7CiAgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdExhenlHcmlkTm9kZS5jYWxsKHRoaXMsIHRyZWUsIGFnZ3JlZ2F0ZS5jb3VudCA+IDApOwpA
QCAtNjgzLDYgKzcwMiw5IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rvck5v
ZGUucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JO
b2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TGF6eUdy
aWROb2RlLnByb3RvdHlwZTsKIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLwogV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdEl0ZXJhdG9yc1R1cGxlID0gZnVuY3Rpb24oaXQxLCBpdDIpCiB7CiAg
ICAgdGhpcy5faXQxID0gaXQxOwpAQCAtNzA2LDYgKzcyOCwxMCBAQCBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90SXRlcmF0b3JzVHVwbGUucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExh
enlHcmlkTm9kZX0KKyAqLwogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlID0gZnVu
Y3Rpb24odHJlZSwgY2xhc3NOYW1lLCBiYXNlQWdncmVnYXRlLCBhZ2dyZWdhdGUpCiB7CiAgICAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExhenlHcmlkTm9kZS5jYWxsKHRoaXMsIHRyZWUsIHRy
dWUpOwpAQCAtODExLDE3ICs4MzcsMTcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZO
b2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFwcm92aWRlciAmJiAhaG93TWFueSkgewog
ICAgICAgICAgICAgdmFyIGZpcnN0UHJvdmlkZXJQb3B1bGF0ZWQgPSBmdW5jdGlvbigpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWRO
b2RlLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuLmNhbGwodGhpcywgdGhpcy5fcHJvdmlkZXIu
X2l0MiwgdGhpcy5fZGVmYXVsdFBvcHVsYXRlQ291bnQsIGF0SW5kZXgsIGFmdGVyUG9wdWxhdGUp
OworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90
b3R5cGUucG9wdWxhdGVDaGlsZHJlbi5jYWxsKHRoaXMsIHRoaXMuX3Byb3ZpZGVyLl9pdDIsIHRo
aXMuX2RlZmF1bHRQb3B1bGF0ZUNvdW50LCBhdEluZGV4LCBhZnRlclBvcHVsYXRlLCBmYWxzZSk7
CiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdy
aWROb2RlLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuLmNhbGwodGhpcywgdGhpcy5fcHJvdmlk
ZXIuX2l0MSwgdGhpcy5fZGVmYXVsdFBvcHVsYXRlQ291bnQsIGF0SW5kZXgsIGZpcnN0UHJvdmlk
ZXJQb3B1bGF0ZWQuYmluZCh0aGlzKSwgdHJ1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWhvd01h
bnkpIHsKICAgICAgICAgICAgIHZhciBmaXJzdFByb3ZpZGVyUG9wdWxhdGVkID0gZnVuY3Rpb24o
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RHcmlkTm9kZS5wcm90b3R5cGUucG9wdWxhdGVDaGlsZHJlbi5jYWxsKHRoaXMsIHRoaXMuX3By
b3ZpZGVyLl9pdDIsIG51bGwsIGF0SW5kZXgsIGFmdGVyUG9wdWxhdGUpOworICAgICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUucG9wdWxhdGVD
aGlsZHJlbi5jYWxsKHRoaXMsIHRoaXMuX3Byb3ZpZGVyLl9pdDIsIG51bGwsIGF0SW5kZXgsIGFm
dGVyUG9wdWxhdGUsIGZhbHNlKTsKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUucHJvdG90eXBlLnBvcHVsYXRlQ2hpbGRyZW4uY2Fs
bCh0aGlzLCB0aGlzLl9wcm92aWRlci5faXQxLCBudWxsLCBhdEluZGV4LCBmaXJzdFByb3ZpZGVy
UG9wdWxhdGVkLmJpbmQodGhpcyksIHRydWUpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUucG9wdWxhdGVDaGls
ZHJlbi5jYWxsKHRoaXMsIHByb3ZpZGVyLCBob3dNYW55LCBhdEluZGV4LCBhZnRlclBvcHVsYXRl
KTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5
cGUucG9wdWxhdGVDaGlsZHJlbi5jYWxsKHRoaXMsIHByb3ZpZGVyLCBob3dNYW55LCBhdEluZGV4
LCBhZnRlclBvcHVsYXRlLCBmYWxzZSk7CiAgICAgfSwKIAogICAgIF9zaWduRm9yRGVsdGE6IGZ1
bmN0aW9uKGRlbHRhKQpAQCAtODUxLDYgKzg3NywxMCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90RGlmZk5vZGUucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlm
Zk5vZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMYXp5
R3JpZE5vZGUucHJvdG90eXBlOwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMg
e1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZX0KKyAqLwogV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvck9iamVjdE5vZGUgPSBmdW5jdGlvbih0cmVlLCBu
b2RlKQogewogICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5j
YWxsKHRoaXMsIHRyZWUsIG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMKaW5kZXggYWQ0YmRlMDI2
MWU0YjQ4OTNlNzNlOThhZTJiNTZiNDI0ZjgyOGI1NC4uMWM0Njc4YTUyODkyYTkwZTgwMDBiNjU0
ODVkZTMxY2U2MjJiZWYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzCkBAIC0yOCw2ICsyOCwxMSBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisvKioKKyAqIEBwYXJhbSB7Ym9vbGVhbj19IGRlZmVy
Tm9kZUNvbnRlbnRDcmVhdGlvbgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5z
cGVjdG9yLkRhdGFHcmlkfQorICovCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVE
YXRhR3JpZCA9IGZ1bmN0aW9uKGNvbHVtbnMsIGRlZmVyTm9kZUNvbnRlbnRDcmVhdGlvbikKIHsK
ICAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5zKTsKQEAgLTE2MCw2
ICsxNjUsMTEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJv
dG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3JpZC5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZTsKIAor
LyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90U29ydGFibGVEYXRhR3JpZH0KKyAqIEBwYXJhbSB7T2JqZWN0PX0gY29sdW1ucworICovCiBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFpbm1lbnREYXRhR3JpZCA9IGZ1bmN0aW9uKGNv
bHVtbnMpCiB7CiAgICAgY29sdW1ucyA9IGNvbHVtbnMgfHwgewpAQCAtMjI4LDYgKzIzOCwxMCBA
QCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFpbm1lbnREYXRhR3JpZC5wcm90b3R5cGUg
PSB7CiBNaXhJblNuYXBzaG90Tm9kZUZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
T2JqZWN0Tm9kZS5wcm90b3R5cGUsIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb250YWlubWVu
dERhdGFHcmlkLnByb3RvdHlwZSk7CiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFpbm1l
bnREYXRhR3JpZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlOwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICog
QGV4dGVuZHMge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb250YWlubWVudERhdGFHcmlkfQor
ICovCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWlubWVudERhdGFHcmlkID0gZnVuY3Rp
b24oKQogewogICAgIHRoaXMuc2hvd1JldGFpbmluZ0VkZ2VzID0gdHJ1ZTsKQEAgLTI2MSw2ICsy
NzUsMTAgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbm1lbnREYXRhR3JpZC5wcm90
b3R5cGUgPSB7CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5tZW50RGF0YUdyaWQu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb250YWlubWVu
dERhdGFHcmlkLnByb3RvdHlwZTsKIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRz
IHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3JpZH0KKyAqLwogV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yc0RhdGFHcmlkID0gZnVuY3Rpb24oKQogewog
ICAgIHZhciBjb2x1bW5zID0gewpAQCAtMzM0LDYgKzM1MiwxMCBAQCBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90Q29uc3RydWN0b3JzRGF0YUdyaWQucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JzRGF0YUdyaWQucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3RvdHlwZTsKIAor
LyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90U29ydGFibGVEYXRhR3JpZH0KKyAqLwogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZE
YXRhR3JpZCA9IGZ1bmN0aW9uKCkKIHsKICAgICB2YXIgY29sdW1ucyA9IHsKQEAgLTQyMyw2ICs0
NDUsMTAgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZEYXRhR3JpZC5wcm90b3R5cGUg
PSB7CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3Rv
dHlwZTsKIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3JpZH0KKyAqLwogV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdERvbWluYXRvcnNEYXRhR3JpZCA9IGZ1bmN0aW9uKCkKIHsKICAgICB2YXIgY29sdW1ucyA9
IHsKQEAgLTQ1NCw2ICs0ODAsMTAgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRv
cnNEYXRhR3JpZC5wcm90b3R5cGUgPSB7CiBNaXhJblNuYXBzaG90Tm9kZUZ1bmN0aW9ucyhXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90RG9taW5hdG9yT2JqZWN0Tm9kZS5wcm90b3R5cGUsIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JzRGF0YUdyaWQucHJvdG90eXBlKTsKIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JzRGF0YUdyaWQucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3RvdHlwZTsK
IAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuVmlld30K
KyAqLwogV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3ID0gZnVuY3Rpb24ocGFyZW50
LCBwcm9maWxlKQogewogICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CkBAIC01MTYs
NyArNTQ2LDYgQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3ID0gZnVuY3Rpb24o
cGFyZW50LCBwcm9maWxlKQogICAgIHRoaXMucmV0YWlubWVudFZpZXcuZWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJ2aWV3Iik7CiAgICAgdGhpcy5yZXRhaW5tZW50Vmlldy5lbGVtZW50LmFkZFN0eWxl
Q2xhc3MoInJldGFpbmluZy1wYXRocy12aWV3Iik7CiAgICAgdGhpcy5yZXRhaW5tZW50RGF0YUdy
aWQgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbm1lbnREYXRhR3JpZCgpOwot
ICAgIHRoaXMucmV0YWlubWVudERhdGFHcmlkLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCB0aGlzLl9tb3VzZUNsaWNrSW5SZXRhaW5tZW50R3JpZC5iaW5kKHRoaXMpLCB0cnVlKTsK
ICAgICB0aGlzLnJldGFpbm1lbnREYXRhR3JpZC5zaG93KHRoaXMucmV0YWlubWVudFZpZXcuZWxl
bWVudCk7CiAgICAgdGhpcy5yZXRhaW5tZW50RGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQuRXZlbnRzLlNlbGVjdGVkTm9kZSwgdGhpcy5faW5zcGVjdGVkT2Jq
ZWN0Q2hhbmdlZCwgdGhpcyk7CiAgICAgdGhpcy5yZXRhaW5tZW50Vmlldy5zaG93KHRoaXMuZWxl
bWVudCk7CkBAIC01NTQsNyArNTgzLDcgQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RW
aWV3ID0gZnVuY3Rpb24ocGFyZW50LCBwcm9maWxlKQogICAgIHRoaXMuX3VwZGF0ZUZpbHRlck9w
dGlvbnMoKTsKIAogICAgIHRoaXMuaGVscEJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVz
QmFyQnV0dG9uKCIiLCAiaGVhcHNob3QtaGVscC1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVzLWJhci1p
dGVtIik7Ci0gICAgdGhpcy5oZWxwQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhp
cy5faGVscENsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgIHRoaXMuaGVscEJ1dHRvbi5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hlbHBDbGlja2VkLCB0aGlzKTsKIAogICAg
IHRoaXMuX3BvcG92ZXJIZWxwZXIgPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVjdFBvcG92ZXJIZWxw
ZXIodGhpcy5lbGVtZW50LCB0aGlzLl9nZXRIb3ZlckFuY2hvci5iaW5kKHRoaXMpLCB0aGlzLl9y
ZXNvbHZlT2JqZWN0Rm9yUG9wb3Zlci5iaW5kKHRoaXMpLCB1bmRlZmluZWQsIHRydWUpOwogCkBA
IC03OTIsNyArODIxLDggQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9iYXNlUHJvZmls
ZVVpZCA9IHRoaXMuX3Byb2ZpbGVzKClbdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5zZWxlY3RlZElu
ZGV4XS51aWQ7Ci0gICAgICAgIHRoaXMuZGF0YUdyaWQuX2Jhc2VQcm9maWxlSW5kZXhDaGFuZ2Vk
KHRoaXMuX2xvYWRQcm9maWxlQnlJbmRleC5iaW5kKHRoaXMpLCB0aGlzLmJhc2VTZWxlY3RFbGVt
ZW50LnNlbGVjdGVkSW5kZXgpOworICAgICAgICB2YXIgZGF0YUdyaWQgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWR9ICovIHRoaXMuZGF0YUdyaWQ7Cisg
ICAgICAgIGRhdGFHcmlkLl9iYXNlUHJvZmlsZUluZGV4Q2hhbmdlZCh0aGlzLl9sb2FkUHJvZmls
ZUJ5SW5kZXguYmluZCh0aGlzKSwgdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4
KTsKIAogICAgICAgICBpZiAoIXRoaXMuY3VycmVudFF1ZXJ5IHx8ICF0aGlzLl9zZWFyY2hGaW5p
c2hlZENhbGxiYWNrIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRzKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtODkzLDcgKzkyMyw3IEBAIFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5w
cm90b3R5cGUgPSB7CiAgICAgX3NldFJldGFpbm1lbnREYXRhR3JpZFNvdXJjZTogZnVuY3Rpb24o
bm9kZUl0ZW0pCiAgICAgewogICAgICAgICBpZiAobm9kZUl0ZW0gJiYgbm9kZUl0ZW0uc25hcHNo
b3ROb2RlSW5kZXgpCi0gICAgICAgICAgICB0aGlzLnJldGFpbm1lbnREYXRhR3JpZC5zZXREYXRh
U291cmNlKHRoaXMsIG5vZGVJdGVtLmlzRGVsZXRlZE5vZGUgPyBub2RlSXRlbS5kYXRhR3JpZC5i
YXNlU25hcHNob3QgOiBub2RlSXRlbS5kYXRhR3JpZC5zbmFwc2hvdCwgbm9kZUl0ZW0uc25hcHNo
b3ROb2RlSW5kZXgsIG5vZGVJdGVtLmlzRGVsZXRlZE5vZGUgPyB0aGlzLmJhc2VTZWxlY3RFbGVt
ZW50LmNoaWxkTm9kZXNbdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4XS5sYWJl
bCArICIgfCAiIDogIiIpOworICAgICAgICAgICAgdGhpcy5yZXRhaW5tZW50RGF0YUdyaWQuc2V0
RGF0YVNvdXJjZSh0aGlzLCBub2RlSXRlbS5pc0RlbGV0ZWROb2RlID8gbm9kZUl0ZW0uZGF0YUdy
aWQuYmFzZVNuYXBzaG90IDogbm9kZUl0ZW0uZGF0YUdyaWQuc25hcHNob3QsIG5vZGVJdGVtLnNu
YXBzaG90Tm9kZUluZGV4KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5yZXRhaW5t
ZW50RGF0YUdyaWQucmVzZXQoKTsKICAgICB9LApAQCAtOTEwLDIyICs5NDAsNiBAQCBXZWJJbnNw
ZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBldmVudC5j
b25zdW1lKHRydWUpOwogICAgIH0sCiAKLSAgICBfbW91c2VDbGlja0luUmV0YWlubWVudEdyaWQ6
IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIGNlbGwgPSBldmVudC50YXJnZXQu
ZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhOb2RlTmFtZSgidGQiKTsKLSAgICAgICAgaWYgKCFjZWxs
IHx8ICghY2VsbC5oYXNTdHlsZUNsYXNzKCJwYXRoLWNvbHVtbiIpKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgdmFyIHJvdyA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxm
V2l0aE5vZGVOYW1lKCJ0ciIpOwotICAgICAgICB2YXIgbm9kZUl0ZW0gPSByb3cuX2RhdGFHcmlk
Tm9kZTsKLSAgICAgICAgaWYgKCFub2RlSXRlbSB8fCAhbm9kZUl0ZW0ucm91dGUpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGZ1bmN0aW9uIGV4cGFuZFJvdXRlKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5leHBhbmRSb3V0ZShub2RlSXRlbS5yb3V0ZSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgdGhpcy5jaGFuZ2VWaWV3KCJDb250YWlubWVudCIsIGV4cGFuZFJv
dXRlLmJpbmQodGhpcykpOwotICAgIH0sCi0KICAgICBjaGFuZ2VWaWV3OiBmdW5jdGlvbih2aWV3
VGl0bGUsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgdmFyIHZpZXdJbmRleCA9IG51bGw7CkBA
IC0xMDM3LDYgKzEwNTEsMjEgQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIG9ianNIZWFkZXIudGV4dENvbnRlbnQgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk9iamVjdCB0eXBlczoiKTsKICAgICAgICAgICAgIGhlYWRlclJvdy5h
cHBlbmRDaGlsZChvYmpzSGVhZGVyKTsKICAgICAgICAgICAgIGNvbnRlbnRFbGVtZW50LmFwcGVu
ZENoaWxkKGhlYWRlclJvdyk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGFwcGVuZEhlbHAoaGVs
cCwgaW5kZXgsIGNlbGwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgICAgIGRpdi5jbGFz
c05hbWUgPSAic291cmNlLWNvZGUgZXZlbnQtcHJvcGVydGllcyI7CisgICAgICAgICAgICAgICAg
dmFyIG5hbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICAg
ICAgbmFtZS50ZXh0Q29udGVudCA9IGhlbHBbaW5kZXhdOworICAgICAgICAgICAgICAgIG5hbWUu
Y2xhc3NOYW1lID0gaGVscFtpbmRleCArIDFdOworICAgICAgICAgICAgICAgIGRpdi5hcHBlbmRD
aGlsZChuYW1lKTsKKyAgICAgICAgICAgICAgICB2YXIgZGVzYyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgICAgICBkZXNjLnRleHRDb250ZW50ID0gIiAiICsg
aGVscFtpbmRleCArIDJdOworICAgICAgICAgICAgICAgIGRpdi5hcHBlbmRDaGlsZChkZXNjKTsK
KyAgICAgICAgICAgICAgICBjZWxsLmFwcGVuZENoaWxkKGRpdik7CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIHZhciBsZW4gPSBNYXRoLm1heChyZWZUeXBlcy5sZW5ndGgsIG9ialR5cGVz
Lmxlbmd0aCk7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSAzKSB7
CiAgICAgICAgICAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7
CkBAIC0xMDUyLDIwICsxMDgxLDYgQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRoaXMuX2hlbHBQb3Bv
dmVyQ29udGVudEVsZW1lbnQgPSBjb250ZW50RWxlbWVudDsKICAgICAgICAgICAgIHRoaXMuaGVs
cFBvcG92ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXIoKTsKLQotICAgICAgICAgICAgZnVu
Y3Rpb24gYXBwZW5kSGVscChoZWxwLCBpbmRleCwgY2VsbCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
ICAgICAgICAgICAgZGl2LmNsYXNzTmFtZSA9ICJzb3VyY2UtY29kZSBldmVudC1wcm9wZXJ0aWVz
IjsKLSAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNw
YW4iKTsKLSAgICAgICAgICAgICAgICBuYW1lLnRleHRDb250ZW50ID0gaGVscFtpbmRleF07Ci0g
ICAgICAgICAgICAgICAgbmFtZS5jbGFzc05hbWUgPSBoZWxwW2luZGV4ICsgMV07Ci0gICAgICAg
ICAgICAgICAgZGl2LmFwcGVuZENoaWxkKG5hbWUpOwotICAgICAgICAgICAgICAgIHZhciBkZXNj
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAgICAgIGRlc2Mu
dGV4dENvbnRlbnQgPSAiICIgKyBoZWxwW2luZGV4ICsgMl07Ci0gICAgICAgICAgICAgICAgZGl2
LmFwcGVuZENoaWxkKGRlc2MpOwotICAgICAgICAgICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQoZGl2
KTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAodGhpcy5oZWxwUG9wb3Zl
ci52aXNpYmxlKQogICAgICAgICAgICAgdGhpcy5oZWxwUG9wb3Zlci5oaWRlKCk7CkBAIC0xMTU2
LDYgKzExNzEsMTAgQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3QKIAogV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLnNob3dIZWFwU25hcHNob3RPYmplY3RzSGlkZGVuUHJvcGVydGllcyA9IFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5jcmVhdGVTZXR0aW5nKCJzaG93SGVhU25hcHNob3RPYmplY3RzSGlkZGVu
UHJvcGVydGllcyIsIGZhbHNlKTsKIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRz
IHtXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGV9CisgKi8KIFdlYkluc3BlY3Rvci5EZXRhaWxlZEhl
YXBzaG90UHJvZmlsZVR5cGUgPSBmdW5jdGlvbigpCiB7CiAgICAgV2ViSW5zcGVjdG9yLlByb2Zp
bGVUeXBlLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlw
ZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGFrZSBIZWFwIFNuYXBzaG90IikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNo
b3QuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5q
cwppbmRleCA0OTAyNjFlZWM5ZmQwYzQ3M2NjMzkxN2UyNzhjZDI2MWVhYjg4MjlkLi4xMTAzNmEx
NjgzYThkYTkzZmQwMWE2OWMzNTc3ZTUyOTJkMmQyMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcwpAQCAtMjgsNiArMjgsMTAg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJh
bSB7bnVtYmVyPX0gc2l6ZQorICovCiBXZWJJbnNwZWN0b3IuVWludDMyQXJyYXkgPSBmdW5jdGlv
bihzaXplKQogewogICAgIGNvbnN0IHByZWFsbG9jYXRlU2l6ZSA9IDEwMDA7CkBAIC01Myw2ICs1
Nyw5IEBAIFdlYkluc3BlY3Rvci5VaW50MzJBcnJheS5wcm90b3R5cGUgPSB7CiAgICAgfQogfQog
CisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9h
ZGVyID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuX2pzb24gPSAiIjsKQEAgLTI0MSw2ICsyNDgs
OSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyLnByb3RvdHlwZSA9IHsKICAgICB9
CiB9OwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90QXJyYXlTbGljZSA9IGZ1bmN0aW9uKGFycmF5LCBzdGFydCwgZW5kKQogewogICAgIHRoaXMu
X2FycmF5ID0gYXJyYXk7CkBAIC0yNjIsNiArMjcyLDEwIEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RBcnJheVNsaWNlLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKKy8qKgorICogQGNvbnN0
cnVjdG9yCisgKiBAcGFyYW0ge251bWJlcj19IGVkZ2VJbmRleAorICovCiBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RWRnZSA9IGZ1bmN0aW9uKHNuYXBzaG90LCBlZGdlcywgZWRnZUluZGV4KQog
ewogICAgIHRoaXMuX3NuYXBzaG90ID0gc25hcHNob3Q7CkBAIC0zODMsNiArMzk3LDkgQEAgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2UucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKKy8q
KgorICogQGNvbnN0cnVjdG9yCisgKi8KIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlSXRl
cmF0b3IgPSBmdW5jdGlvbihlZGdlKQogewogICAgIHRoaXMuZWRnZSA9IGVkZ2U7CkBAIC00MjAs
NiArNDM3LDkgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VJdGVyYXRvci5wcm90b3R5
cGUgPSB7CiAgICAgfQogfTsKIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLwogV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFJldGFpbmVyRWRnZSA9IGZ1bmN0aW9uKHNuYXBzaG90LCByZXRhaW5l
ZE5vZGVJbmRleCwgcmV0YWluZXJJbmRleCkKIHsKICAgICB0aGlzLl9zbmFwc2hvdCA9IHNuYXBz
aG90OwpAQCAtNTM3LDYgKzU1Nyw5IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5l
ckVkZ2UucHJvdG90eXBlID0gewogICAgIH0KIH0KIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
LwogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbmVyRWRnZUl0ZXJhdG9yID0gZnVuY3Rp
b24ocmV0YWluZXIpCiB7CiAgICAgdGhpcy5yZXRhaW5lciA9IHJldGFpbmVyOwpAQCAtNTc0LDYg
KzU5NywxMCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlSXRlcmF0b3Iu
cHJvdG90eXBlID0gewogICAgIH0KIH07CiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFy
YW0ge251bWJlcj19IG5vZGVJbmRleAorICovCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9k
ZSA9IGZ1bmN0aW9uKHNuYXBzaG90LCBub2RlSW5kZXgpCiB7CiAgICAgdGhpcy5fc25hcHNob3Qg
PSBzbmFwc2hvdDsKQEAgLTc0Niw2ICs3NzMsOSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
LwogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVJdGVyYXRvciA9IGZ1bmN0aW9uKG5vZGUp
CiB7CiAgICAgdGhpcy5ub2RlID0gbm9kZTsKQEAgLTc4MywxOCArODEzLDM4IEBAIFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3ROb2RlSXRlcmF0b3IucHJvdG90eXBlID0gewogICAgIH0KIH0KIAor
LyoqCisgKiBAY29uc3RydWN0b3IKKyAqLwogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdCA9IGZ1
bmN0aW9uKHByb2ZpbGUpCiB7CiAgICAgdGhpcy51aWQgPSBwcm9maWxlLnNuYXBzaG90LnVpZDsK
ICAgICB0aGlzLl9ub2RlcyA9IHByb2ZpbGUubm9kZXM7CiAgICAgdGhpcy5fb25seU5vZGVzID0g
cHJvZmlsZS5vbmx5Tm9kZXM7CiAgICAgdGhpcy5fY29udGFpbm1lbnRFZGdlcyA9IHByb2ZpbGUu
Y29udGFpbm1lbnRFZGdlczsKKyAgICAvKiogQHR5cGV7SGVhcFNuYXBzaG90TWV0YWluZm99ICov
CiAgICAgdGhpcy5fbWV0YU5vZGUgPSBwcm9maWxlLm1ldGFOb2RlOwogICAgIHRoaXMuX3N0cmlu
Z3MgPSBwcm9maWxlLnN0cmluZ3M7CiAKICAgICB0aGlzLl9pbml0KCk7CiB9CiAKKy8qKgorICog
QGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIEhlYXBTbmFwc2hvdE1ldGFpbmZvKCkKK3sKKyAg
ICAvLyBOZXcgZm9ybWF0LgorICAgIHRoaXMubm9kZV9maWVsZHMgPSBbXTsKKyAgICB0aGlzLm5v
ZGVfdHlwZXMgPSBbXTsKKyAgICB0aGlzLmVkZ2VfZmllbGRzID0gW107CisgICAgdGhpcy5lZGdl
X3R5cGVzID0gW107CisKKyAgICAvLyBPbGQgZm9ybWF0LgorICAgIHRoaXMuZmllbGRzID0gW107
CisgICAgdGhpcy50eXBlcyA9IFtdOworfQorCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZSA9IHsKICAgICBfaW5pdDogZnVuY3Rpb24oKQogICAgIHsKQEAgLTEwMDMsOSArMTA1
Myw5IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICB3
aGlsZSAoc3JjTm9kZUluZGV4IDwgb25seU5vZGVzTGVuZ3RoKSB7CiAgICAgICAgICAgICB2YXIg
Zmlyc3RFZGdlSW5kZXggPSBuZXh0Tm9kZUZpcnN0RWRnZUluZGV4OwogICAgICAgICAgICAgdmFy
IG5leHROb2RlSW5kZXggPSBzcmNOb2RlSW5kZXggKyBub2RlRmllbGRDb3VudDsKLSAgICAgICAg
ICAgIHZhciBuZXh0Tm9kZUZpcnN0RWRnZUluZGV4ID0gbmV4dE5vZGVJbmRleCA8IG9ubHlOb2Rl
c0xlbmd0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBvbmx5Tm9k
ZXNbbmV4dE5vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiBjb250YWlubWVudEVkZ2VzLmxlbmd0aDsKKyAgICAg
ICAgICAgIG5leHROb2RlRmlyc3RFZGdlSW5kZXggPSBuZXh0Tm9kZUluZGV4IDwgb25seU5vZGVz
TGVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gb25seU5vZGVzW25l
eHROb2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBjb250YWlubWVudEVkZ2VzLmxlbmd0aDsKICAgICAgICAgICAgIGZv
ciAodmFyIGVkZ2VJbmRleCA9IGZpcnN0RWRnZUluZGV4OyBlZGdlSW5kZXggPCBuZXh0Tm9kZUZp
cnN0RWRnZUluZGV4OyBlZGdlSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7CiAgICAgICAgICAg
ICAgICAgdmFyIHRvTm9kZUluZGV4ID0gY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdl
VG9Ob2RlT2Zmc2V0XTsKICAgICAgICAgICAgICAgICBpZiAodG9Ob2RlSW5kZXggJSBub2RlRmll
bGRDb3VudCkKQEAgLTEwODcsNiArMTEzNyw5IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fZmxhZ3Nbbm9kZS5ub2RlSW5kZXhd
OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1N0cmluZz19IGZpbHRlclN0cmlu
ZworICAgICAqLwogICAgIGFnZ3JlZ2F0ZXM6IGZ1bmN0aW9uKHNvcnRlZEluZGV4ZXMsIGtleSwg
ZmlsdGVyU3RyaW5nKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9hZ2dyZWdhdGVzKSB7CkBA
IC0xMzEyLDcgKzEzNjUsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9
IHsKICAgICAgICAgLy8gUHV0IGluIHRoZSBmaXJzdCBzbG90IG9mIGVhY2ggZG9taW5hdGVkTm9k
ZXMgc2xpY2UgdGhlIGNvdW50IG9mIGVudHJpZXMKICAgICAgICAgLy8gdGhhdCB3aWxsIGJlIGZp
bGxlZC4KICAgICAgICAgdmFyIGZpcnN0RG9taW5hdGVkTm9kZUluZGV4ID0gMDsKLSAgICAgICAg
Zm9yIChpID0gMDsgaSA8IHRoaXMubm9kZUNvdW50OyArK2kpIHsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0aGlzLm5vZGVDb3VudDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgZG9taW5h
dGVkQ291bnQgPSBkb21pbmF0ZWROb2Rlc1tmaXJzdERvbWluYXRlZE5vZGVJbmRleF0gPSBpbmRl
eEFycmF5W2ldOwogICAgICAgICAgICAgaW5kZXhBcnJheVtpXSA9IGZpcnN0RG9taW5hdGVkTm9k
ZUluZGV4OwogICAgICAgICAgICAgZmlyc3REb21pbmF0ZWROb2RlSW5kZXggKz0gZG9taW5hdGVk
Q291bnQ7CkBAIC0xNDAwLDcgKzE0NTMsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBsaXN0LnB1c2goaXRlci5lZGdlLm5vZGUubm9k
ZUluZGV4KTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBlZGdlID0gbmV3IFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RFZGdlKHRoaXMpOworICAgICAgICB2YXIgZWRnZSA9IG5ldyBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90RWRnZSh0aGlzLCB1bmRlZmluZWQpOwogICAgICAgICB2YXIgbm9k
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSh0aGlzKTsKICAgICAgICAgd2hp
bGUgKGxpc3QubGVuZ3RoKSB7CiAgICAgICAgICAgICB2YXIgbm9kZUluZGV4ID0gbGlzdC5wb3Ao
KTsKQEAgLTE0MTIsNyArMTQ2NSw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90
eXBlID0gewogICAgICAgICAgICAgZWRnZS5fZWRnZXMgPSBub2RlLnJhd0VkZ2VzOwogICAgICAg
ICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBlZGdlc0NvdW50OyArK2opIHsKICAgICAgICAgICAg
ICAgICBlZGdlLmVkZ2VJbmRleCA9IGogKiB0aGlzLl9lZGdlRmllbGRzQ291bnQ7Ci0gICAgICAg
ICAgICAgICAgdmFyIG5vZGVJbmRleCA9IGVkZ2Uubm9kZUluZGV4OworICAgICAgICAgICAgICAg
IG5vZGVJbmRleCA9IGVkZ2Uubm9kZUluZGV4OwogICAgICAgICAgICAgICAgIGlmICh0aGlzLl9m
bGFnc1tub2RlSW5kZXhdICYgZmxhZykKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICAgaWYgKGVkZ2UuaXNIaWRkZW4gfHwgZWRnZS5pc0ludmlzaWJsZSkKQEAg
LTE0OTUsNiArMTU0OCwxMCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9
IHsKICAgICB9CiB9OwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtBcnJheS48
bnVtYmVyPj19IHVuZmlsdGVyZWRJdGVyYXRpb25PcmRlcgorICovCiBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IgPSBmdW5jdGlvbihpdGVyYXRvciwgZmls
dGVyLCB1bmZpbHRlcmVkSXRlcmF0aW9uT3JkZXIpCiB7CiAgICAgdGhpcy5fZmlsdGVyID0gZmls
dGVyOwpAQCAtMTYyMSw2ICsxNjc4LDEwIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0
ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGUuY3JlYXRlQ29tcGFyYXRvciA9IGZ1CiAgICAg
cmV0dXJuIHtmaWVsZE5hbWUxOmZpZWxkTmFtZXNbMF0sIGFzY2VuZGluZzE6ZmllbGROYW1lc1sx
XSwgZmllbGROYW1lMjpmaWVsZE5hbWVzWzJdLCBhc2NlbmRpbmcyOmZpZWxkTmFtZXNbM119Owog
fQogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvcn0KKyAqLwogV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdEVkZ2VzUHJvdmlkZXIgPSBmdW5jdGlvbihzbmFwc2hvdCwgbm9kZUluZGV4LCBmaWx0
ZXIsIGVkZ2VzSXRlcikKIHsKICAgICB0aGlzLnNuYXBzaG90ID0gc25hcHNob3Q7CkBAIC0xNzEx
LDYgKzE3NzIsMTEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzUHJvdmlkZXIucHJv
dG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZXNQcm92aWRlci5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJl
ZEl0ZXJhdG9yLnByb3RvdHlwZTsKIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRz
IHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3J9CisgKiBA
cGFyYW0ge0FycmF5LjxudW1iZXI+PX0gbm9kZUluZGV4ZXMKKyAqLwogV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIgPSBmdW5jdGlvbihzbmFwc2hvdCwgZmlsdGVyLCBub2Rl
SW5kZXhlcykKIHsKICAgICB0aGlzLnNuYXBzaG90ID0gc25hcHNob3Q7CkBAIC0xNzY1LDYgKzE4
MzEsOSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRlci5wcm90b3R5cGUg
PSB7CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyLnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0
b3IucHJvdG90eXBlOwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCiBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90c0RpZmYgPSBmdW5jdGlvbihzbmFwc2hvdCwgY2xhc3NOYW1lKQogewogICAg
IHRoaXMuX3NuYXBzaG90ID0gc25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVEYXRhR3JpZFRyZWUuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVEYXRhR3JpZFRyZWUuanMKaW5kZXggNzQ5MGI0
YmQ4NzVhOTVlZjIyNjY5Mzk4ZjNlMmFlZjA1MWM0ZmJlMi4uM2U4YTU5YzNkNjNjYWIzYjY3NDg3
YzZhNDM3NzMzYjYwMDU0MTUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Qcm9maWxlRGF0YUdyaWRUcmVlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qcwpAQCAtMjMsNiArMjMsMTAg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRl
bmRzIHtXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlfQorICovCiBXZWJJbnNwZWN0b3IuUHJvZmls
ZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKHByb2ZpbGVWaWV3LCBwcm9maWxlTm9kZSwgb3duaW5n
VHJlZSwgaGFzQ2hpbGRyZW4pCiB7CiAgICAgdGhpcy5wcm9maWxlVmlldyA9IHByb2ZpbGVWaWV3
OwpAQCAtMTU2LDIxICsxNjAsMjcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUu
cHJvdG90eXBlID0gewogCiAgICAgaW5zZXJ0Q2hpbGQ6IGZ1bmN0aW9uKC8qUHJvZmlsZURhdGFH
cmlkTm9kZSovIHByb2ZpbGVEYXRhR3JpZE5vZGUsIGluZGV4KQogICAgIHsKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQuY2FsbCh0aGlzLCBw
cm9maWxlRGF0YUdyaWROb2RlLCBpbmRleCk7CisgICAgICAgIHZhciBhbnkgPSAvKiogQHR5cGUg
eyp9ICovdGhpczsKKyAgICAgICAgdmFyIGRhdGFHcmlkID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0
b3IuRGF0YUdyaWR9ICovYW55OworICAgICAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnBy
b3RvdHlwZS5pbnNlcnRDaGlsZC5jYWxsKGRhdGFHcmlkLCBwcm9maWxlRGF0YUdyaWROb2RlLCBp
bmRleCk7CiAKICAgICAgICAgdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRFtwcm9maWxlRGF0YUdyaWRO
b2RlLmNhbGxVSURdID0gcHJvZmlsZURhdGFHcmlkTm9kZTsKICAgICB9LAogCiAgICAgcmVtb3Zl
Q2hpbGQ6IGZ1bmN0aW9uKC8qUHJvZmlsZURhdGFHcmlkTm9kZSovIHByb2ZpbGVEYXRhR3JpZE5v
ZGUpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5y
ZW1vdmVDaGlsZC5jYWxsKHRoaXMsIHByb2ZpbGVEYXRhR3JpZE5vZGUpOworICAgICAgICB2YXIg
YW55ID0gLyoqIEB0eXBlIHsqfSAqL3RoaXM7CisgICAgICAgIHZhciBkYXRhR3JpZCA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLkRhdGFHcmlkfSAqL2FueTsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LkRhdGFHcmlkTm9kZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQuY2FsbChkYXRhR3JpZCwgcHJvZmls
ZURhdGFHcmlkTm9kZSk7CiAKICAgICAgICAgZGVsZXRlIHRoaXMuY2hpbGRyZW5CeUNhbGxVSURb
cHJvZmlsZURhdGFHcmlkTm9kZS5jYWxsVUlEXTsKICAgICB9LAogCiAgICAgcmVtb3ZlQ2hpbGRy
ZW46IGZ1bmN0aW9uKC8qUHJvZmlsZURhdGFHcmlkTm9kZSovIHByb2ZpbGVEYXRhR3JpZE5vZGUp
CiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5yZW1v
dmVDaGlsZHJlbi5jYWxsKHRoaXMpOworICAgICAgICB2YXIgYW55ID0gLyoqIEB0eXBlIHsqfSAq
L3RoaXM7CisgICAgICAgIHZhciBkYXRhR3JpZCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRh
dGFHcmlkfSAqL2FueTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5
cGUucmVtb3ZlQ2hpbGRyZW4uY2FsbChkYXRhR3JpZCk7CiAKICAgICAgICAgdGhpcy5jaGlsZHJl
bkJ5Q2FsbFVJRCA9IHt9OwogICAgIH0sCkBAIC0yMDcsNyArMjE3LDcgQEAgV2ViSW5zcGVjdG9y
LlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5w
YXJlbnQgIT09IHRoaXMuZGF0YUdyaWQgPyB0aGlzLnBhcmVudCA6IHRoaXMudHJlZTsKICAgICB9
LAogCi0gICAgX3BvcHVsYXRlOiBmdW5jdGlvbihldmVudCkKKyAgICBfcG9wdWxhdGU6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3NoYXJlZFBvcHVsYXRlKCk7CiAKQEAgLTI5NSw2
ICszMDUsOSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7
CiAKIFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZTsKIAorLyoqCisgKiBAY29uc3Ry
dWN0b3IKKyAqLwogV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUgPSBmdW5jdGlvbihw
cm9maWxlVmlldywgcHJvZmlsZU5vZGUpCiB7CiAgICAgdGhpcy50cmVlID0gdGhpczsKQEAgLTM2
NSw3ICszNzgsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkVHJlZS5wcm9wZXJ0eUNv
bXBhcmF0b3JzID0gW3t9LCB7fV07CiAKIFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVl
LnByb3BlcnR5Q29tcGFyYXRvciA9IGZ1bmN0aW9uKC8qU3RyaW5nKi8gcHJvcGVydHksIC8qQm9v
bGVhbiovIGlzQXNjZW5kaW5nKQogewotICAgIHZhciBjb21wYXJhdG9yID0gdGhpcy5wcm9wZXJ0
eUNvbXBhcmF0b3JzWyhpc0FzY2VuZGluZyA/IDEgOiAwKV1bcHJvcGVydHldOworICAgIHZhciBj
b21wYXJhdG9yID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUucHJvcGVydHlDb21w
YXJhdG9yc1soaXNBc2NlbmRpbmcgPyAxIDogMCldW3Byb3BlcnR5XTsKIAogICAgIGlmICghY29t
cGFyYXRvcikgewogICAgICAgICBpZiAoaXNBc2NlbmRpbmcpIHsKQEAgLTM5Miw3ICs0MDUsNyBA
QCBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkVHJlZS5wcm9wZXJ0eUNvbXBhcmF0b3IgPSBm
dW5jdGlvbigvKlN0cmluZyovIHByb3BlcgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAg
ICAgICAgdGhpcy5wcm9wZXJ0eUNvbXBhcmF0b3JzWyhpc0FzY2VuZGluZyA/IDEgOiAwKV1bcHJv
cGVydHldID0gY29tcGFyYXRvcjsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3Jp
ZFRyZWUucHJvcGVydHlDb21wYXJhdG9yc1soaXNBc2NlbmRpbmcgPyAxIDogMCldW3Byb3BlcnR5
XSA9IGNvbXBhcmF0b3I7CiAgICAgfQogCiAgICAgcmV0dXJuIGNvbXBhcmF0b3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcwppbmRleCAy
ZWU0YmIyNTAxNmQwMzQ0MTM1YzZiMGY0ZTZhOTZmMDc2MjNjYTExLi5mNDc0MDExMGQyMGYwYmVj
OGVmOTdkYTVjMmZlYzE0ZjQ1ZDg3ZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMKQEAgLTI1LDYgKzI1LDEwIEBACiAKIC8vIEZJ
WE1FOiBSZW5hbWUgdGhlIGZpbGUuCiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5k
cyB7V2ViSW5zcGVjdG9yLlZpZXd9CisgKi8KIFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldyA9
IGZ1bmN0aW9uKHByb2ZpbGUpCiB7CiAgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlzKTsK
QEAgLTQ4LDcgKzUyLDcgQEAgV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3ID0gZnVuY3Rpb24o
cHJvZmlsZSkKICAgICB9CiAKICAgICB0aGlzLmRhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5E
YXRhR3JpZChjb2x1bW5zKTsKLSAgICB0aGlzLmRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoInNv
cnRpbmcgY2hhbmdlZCIsIHRoaXMuX3NvcnREYXRhLCB0aGlzKTsKKyAgICB0aGlzLmRhdGFHcmlk
LmFkZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY2hhbmdlZCIsIHRoaXMuX3NvcnRQcm9maWxlLCB0
aGlzKTsKICAgICB0aGlzLmRhdGFHcmlkLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vk
b3duIiwgdGhpcy5fbW91c2VEb3duSW5EYXRhR3JpZC5iaW5kKHRoaXMpLCB0cnVlKTsKICAgICB0
aGlzLmRhdGFHcmlkLnNob3codGhpcy5lbGVtZW50KTsKIApAQCAtNjUsMTkgKzY5LDE5IEBAIFdl
Ykluc3BlY3Rvci5DUFVQcm9maWxlVmlldyA9IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAgdGhpcy52
aWV3U2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID0gdGhpcy5fdmlld1R5cGUuZ2V0KCkgPT09
IFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5fVHlwZUhlYXZ5ID8gMCA6IDE7CiAKICAgICB0
aGlzLnBlcmNlbnRCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbigiIiwg
InBlcmNlbnQtdGltZS1zdGF0dXMtYmFyLWl0ZW0iKTsKLSAgICB0aGlzLnBlcmNlbnRCdXR0b24u
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9wZXJjZW50Q2xpY2tlZC5iaW5kKHRoaXMp
LCBmYWxzZSk7CisgICAgdGhpcy5wZXJjZW50QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgdGhpcy5fcGVyY2VudENsaWNrZWQsIHRoaXMpOwogCiAgICAgdGhpcy5mb2N1c0J1dHRvbiA9
IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Rm9jdXMgc2VsZWN0ZWQgZnVuY3Rpb24uIiksICJmb2N1cy1wcm9maWxlLW5vZGUtc3RhdHVzLWJh
ci1pdGVtIik7CiAgICAgdGhpcy5mb2N1c0J1dHRvbi5kaXNhYmxlZCA9IHRydWU7Ci0gICAgdGhp
cy5mb2N1c0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2ZvY3VzQ2xpY2tl
ZC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5mb2N1c0J1dHRvbi5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuX2ZvY3VzQ2xpY2tlZCwgdGhpcyk7CiAKICAgICB0aGlzLmV4Y2x1
ZGVCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkV4Y2x1ZGUgc2VsZWN0ZWQgZnVuY3Rpb24uIiksICJleGNsdWRlLXByb2ZpbGUt
bm9kZS1zdGF0dXMtYmFyLWl0ZW0iKTsKICAgICB0aGlzLmV4Y2x1ZGVCdXR0b24uZGlzYWJsZWQg
PSB0cnVlOwotICAgIHRoaXMuZXhjbHVkZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX2V4Y2x1ZGVDbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlzLmV4Y2x1
ZGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9leGNsdWRlQ2xpY2tlZCwg
dGhpcyk7CiAKICAgICB0aGlzLnJlc2V0QnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNC
YXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXN0b3JlIGFsbCBmdW5jdGlvbnMuIiks
ICJyZXNldC1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSIpOwogICAgIHRoaXMucmVzZXRCdXR0b24u
dmlzaWJsZSA9IGZhbHNlOwotICAgIHRoaXMucmVzZXRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzLl9yZXNldENsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgIHRoaXMu
cmVzZXRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9yZXNldENsaWNrZWQs
IHRoaXMpOwogCiAgICAgdGhpcy5wcm9maWxlID0gcHJvZmlsZTsKIApAQCAtMTQ5LDI2ICsxNTMs
NiBAQCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLnJlZnJlc2goKTsKICAgICB9LAogCi0gICAgZ2V0IHRvcERvd25UcmVlKCkKLSAgICB7Ci0g
ICAgICAgIGlmICghdGhpcy5fdG9wRG93blRyZWUpIHsKLSAgICAgICAgICAgIHRoaXMuX3RvcERv
d25UcmVlID0gV2ViSW5zcGVjdG9yLlRvcERvd25UcmVlRmFjdG9yeS5jcmVhdGUodGhpcy5wcm9m
aWxlLmhlYWQpOwotICAgICAgICAgICAgdGhpcy5fc29ydFByb2ZpbGUodGhpcy5fdG9wRG93blRy
ZWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMuX3RvcERvd25UcmVlOwotICAg
IH0sCi0KLSAgICBnZXQgYm90dG9tVXBUcmVlKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5f
Ym90dG9tVXBUcmVlKSB7Ci0gICAgICAgICAgICB0aGlzLl9ib3R0b21VcFRyZWUgPSBXZWJJbnNw
ZWN0b3IuQm90dG9tVXBUcmVlRmFjdG9yeS5jcmVhdGUodGhpcy5wcm9maWxlLmhlYWQpOwotICAg
ICAgICAgICAgdGhpcy5fc29ydFByb2ZpbGUodGhpcy5fYm90dG9tVXBUcmVlKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiB0aGlzLl9ib3R0b21VcFRyZWU7Ci0gICAgfSwKLQogICAgIHdp
bGxIaWRlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVz
dWx0SW5kZXggPSAtMTsKQEAgLTUwMCwxMSArNDg0LDYgQEAgV2ViSW5zcGVjdG9yLkNQVVByb2Zp
bGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5leGNsdWRlQnV0dG9uLmRpc2FibGVk
ID0gdHJ1ZTsKICAgICB9LAogCi0gICAgX3NvcnREYXRhOiBmdW5jdGlvbihldmVudCkKLSAgICB7
Ci0gICAgICAgIHRoaXMuX3NvcnRQcm9maWxlKHRoaXMucHJvZmlsZSk7Ci0gICAgfSwKLQogICAg
IF9zb3J0UHJvZmlsZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHNvcnRBc2NlbmRp
bmcgPSB0aGlzLmRhdGFHcmlkLnNvcnRPcmRlciA9PT0gImFzY2VuZGluZyI7CkBAIC01NjYsNiAr
NTQ1LDEwIEBAIFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5wcm90b3R5cGUgPSB7CiAKIFdl
Ykluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLlZpZXcucHJvdG90eXBlOwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMg
e1dlYkluc3BlY3Rvci5Qcm9maWxlVHlwZX0KKyAqLwogV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVU
eXBlID0gZnVuY3Rpb24oKQogewogICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5jYWxsKHRo
aXMsIFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ29sbGVjdCBKYXZhU2NyaXB0IENQVSBQcm9maWxlIikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCmluZGV4IDZkMTM5
YjcwYTQ2MTNkMWEwMjdjMmFkMDhmNTNkM2VmODBjYTBmNTUuLjU3NzQ1NGMwYzg0YjA1ZDg1N2Iy
YTJlYjZmMDJkOGVkMWJlNzVmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAgLTI1LDYgKzI1LDkgQEAKIAogY29uc3Qg
VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lID0gIm9yZy53ZWJraXQucHJvZmlsZXMudXNlci1pbml0
aWF0ZWQiOwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCiBXZWJJbnNwZWN0b3IuUHJvZmls
ZVR5cGUgPSBmdW5jdGlvbihpZCwgbmFtZSkKIHsKICAgICB0aGlzLl9pZCA9IGlkOwpAQCAtOTUs
NiArOTgsMjMgQEAgV2ViSW5zcGVjdG9yLnJlZ2lzdGVyTGlua2lmaWVyUGx1Z2luKGZ1bmN0aW9u
KHRpdGxlKQogICAgIHJldHVybiB0aXRsZTsKIH0pOwogCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICovCitXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlciA9IGZ1bmN0aW9uKHByb2ZpbGVUeXBlLCB0
aXRsZSwgdWlkLCBpc1RlbXBvcmFyeSkKK3sKKyAgICB0aGlzLnR5cGVJZCA9IHByb2ZpbGVUeXBl
LAorICAgIHRoaXMudGl0bGUgPSB0aXRsZTsKKyAgICB0aGlzLnVpZCA9IHVpZDsKKyAgICB0aGlz
LmlzVGVtcG9yYXJ5ID0gaXNUZW1wb3Jhcnk7CisKKyAgICB0aGlzLm1heEpTT2JqZWN0SWQgPSAw
OworfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Q
YW5lbH0KKyAqLwogV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwgPSBmdW5jdGlvbigpCiB7CiAg
ICAgV2ViSW5zcGVjdG9yLlBhbmVsLmNhbGwodGhpcywgInByb2ZpbGVzIik7CkBAIC0xMjAsNyAr
MTQwLDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgdGhp
cy5zcGxpdFZpZXcubWFpbkVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5wcm9maWxlVmlld3MpOwog
CiAgICAgdGhpcy5lbmFibGVUb2dnbGVCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0Jh
ckJ1dHRvbigiIiwgImVuYWJsZS10b2dnbGUtc3RhdHVzLWJhci1pdGVtIik7Ci0gICAgdGhpcy5l
bmFibGVUb2dnbGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90b2dnbGVQ
cm9maWxpbmcuYmluZCh0aGlzKSwgZmFsc2UpOworICAgIHRoaXMuZW5hYmxlVG9nZ2xlQnV0dG9u
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdG9nZ2xlUHJvZmlsaW5nLCB0aGlzKTsK
ICAgICBpZiAoIUNhcGFiaWxpdGllcy5wcm9maWxlckNhdXNlc1JlY29tcGlsYXRpb24pCiAgICAg
ICAgIHRoaXMuZW5hYmxlVG9nZ2xlQnV0dG9uLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVu
Iik7CiAKQEAgLTEyOCw3ICsxNDgsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbCA9IGZ1
bmN0aW9uKCkKICAgICB0aGlzLnJlY29yZEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMudG9nZ2xlUmVjb3JkQnV0dG9uLCB0aGlzKTsKIAogICAgIHRoaXMuY2xlYXJSZXN1bHRz
QnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDbGVhciBhbGwgcHJvZmlsZXMuIiksICJjbGVhci1zdGF0dXMtYmFyLWl0ZW0iKTsK
LSAgICB0aGlzLmNsZWFyUmVzdWx0c0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRo
aXMuX2NsZWFyUHJvZmlsZXMuYmluZCh0aGlzKSwgZmFsc2UpOworICAgIHRoaXMuY2xlYXJSZXN1
bHRzQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY2xlYXJQcm9maWxlcywg
dGhpcyk7CiAKICAgICB0aGlzLnByb2ZpbGVWaWV3U3RhdHVzQmFySXRlbXNDb250YWluZXIgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLnByb2ZpbGVWaWV3U3RhdHVz
QmFySXRlbXNDb250YWluZXIuY2xhc3NOYW1lID0gInN0YXR1cy1iYXItaXRlbXMiOwpAQCAtMjgx
LDYgKzMwMSwxMCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHJldHVybiBlc2NhcGUodGV4dCkgKyAnLycgKyBlc2NhcGUocHJvZmlsZVR5cGVJZCk7
CiAgICAgfSwKIAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUHJvZmls
ZUhlYWRlcn0gcHJvZmlsZQorICAgICAqLwogICAgIGFkZFByb2ZpbGVIZWFkZXI6IGZ1bmN0aW9u
KHByb2ZpbGUpCiAgICAgewogICAgICAgICBpZiAodGhpcy5oYXNUZW1wb3JhcnlQcm9maWxlKHBy
b2ZpbGUudHlwZUlkKSkKQEAgLTQ4OCw3ICs1MTIsOCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBwcm9maWxlLnByb3h5ID0gc25hcHNob3RQ
cm94eTsKICAgICAgICAgICAgIHByb2ZpbGUuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBOdW1i
ZXIuYnl0ZXNUb1N0cmluZyhzbmFwc2hvdFByb3h5LnRvdGFsU2l6ZSk7CiAgICAgICAgICAgICBw
cm9maWxlLnNpZGViYXJFbGVtZW50LndhaXQgPSBmYWxzZTsKLSAgICAgICAgICAgIHNuYXBzaG90
UHJveHkud29ya2VyLnN0YXJ0Q2hlY2tpbmdGb3JMb25nUnVubmluZ0NhbGxzKCk7CisgICAgICAg
ICAgICB2YXIgd29ya2VyID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90V29y
a2VyfSAqLyBzbmFwc2hvdFByb3h5LndvcmtlcjsKKyAgICAgICAgICAgIHdvcmtlci5zdGFydENo
ZWNraW5nRm9yTG9uZ1J1bm5pbmdDYWxscygpOwogICAgICAgICB9CiAgICAgICAgIGlmIChwcm94
eS5maW5pc2hMb2FkaW5nKHBhcnNlZCkpCiAgICAgICAgICAgICBwcm9maWxlLnNpZGViYXJFbGVt
ZW50LnN1YnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYXJzaW5nXHUyMDI2Iik7CkBA
IC01NDgsOSArNTczLDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAoIXNlYXJjaGFibGVWaWV3cyB8fCAhc2VhcmNoYWJsZVZpZXdzLmxlbmd0
aCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2YXIgcGFyZW50RWxlbWVudCA9IHRo
aXMudmlld3NDb250YWluZXJFbGVtZW50OwogICAgICAgICB2YXIgdmlzaWJsZVZpZXcgPSB0aGlz
LnZpc2libGVWaWV3OwotICAgICAgICB2YXIgc29ydEZ1Y3Rpb24gPSB0aGlzLnNlYXJjaFJlc3Vs
dHNTb3J0RnVuY3Rpb247CiAKICAgICAgICAgdmFyIG1hdGNoZXNDb3VudFVwZGF0ZVRpbWVvdXQg
PSBudWxsOwogCkBAIC01NzYsOSArNTk5LDYgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdG90YWxTZWFyY2hNYXRjaGVzICs9IHNl
YXJjaE1hdGNoZXM7CiAgICAgICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzLnB1c2godmlldyk7
CiAKLSAgICAgICAgICAgIGlmIChzb3J0RnVjdGlvbikKLSAgICAgICAgICAgICAgICB0aGlzLl9z
ZWFyY2hSZXN1bHRzLnNvcnQoc29ydEZ1Y3Rpb24pOwotCiAgICAgICAgICAgICBpZiAodGhpcy5z
ZWFyY2hNYXRjaEZvdW5kKQogICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWF0Y2hGb3VuZCh2
aWV3LCBzZWFyY2hNYXRjaGVzKTsKIApAQCAtODIyLDE0ICs4NDIsOCBAQCBXZWJJbnNwZWN0b3Iu
UHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlzLmdldFByb2Zp
bGVUeXBlKHByb2ZpbGVUeXBlKS5zZXRSZWNvcmRpbmdQcm9maWxlKGlzUHJvZmlsaW5nKTsKICAg
ICAgICAgaWYgKHRoaXMuaGFzVGVtcG9yYXJ5UHJvZmlsZShwcm9maWxlVHlwZSkgIT09IGlzUHJv
ZmlsaW5nKSB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2Zp
bGUpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlID0g
ewotICAgICAgICAgICAgICAgICAgICB0eXBlSWQ6IHByb2ZpbGVUeXBlLAotICAgICAgICAgICAg
ICAgICAgICB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNvcmRpbmdcdTIwMjYiKSwK
LSAgICAgICAgICAgICAgICAgICAgdWlkOiAtMSwKLSAgICAgICAgICAgICAgICAgICAgaXNUZW1w
b3Jhcnk6IHRydWUKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKCF0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlKQorICAgICAgICAgICAgICAg
IHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUgPSBuZXcgV2ViSW5zcGVjdG9yLlByb2Zp
bGVIZWFkZXIocHJvZmlsZVR5cGUsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjb3JkaW5nXHUy
MDI2IiksIC0xLCB0cnVlKTsKICAgICAgICAgICAgIGlmIChpc1Byb2ZpbGluZykgewogICAgICAg
ICAgICAgICAgIHRoaXMuYWRkUHJvZmlsZUhlYWRlcih0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQ
cm9maWxlKTsKICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZVR5cGUgPT09IFdlYkluc3BlY3Rv
ci5DUFVQcm9maWxlVHlwZS5UeXBlSWQpCkBAIC04NDMsMTIgKzg1NywxMSBAQCBXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
aGFzVGVtcG9yYXJ5UHJvZmlsZShXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVU
eXBlLlR5cGVJZCkpIHsKICAgICAgICAgICAgIGlmICghdGhpcy5fdGVtcG9yYXJ5UmVjb3JkaW5n
UHJvZmlsZSkgewotICAgICAgICAgICAgICAgIHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2Zp
bGUgPSB7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVJZDogV2ViSW5zcGVjdG9yLkRldGFpbGVk
SGVhcHNob3RQcm9maWxlVHlwZS5UeXBlSWQsCi0gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNuYXBzaG90dGluZ1x1MjAyNiIpLAotICAgICAgICAgICAg
ICAgICAgICB1aWQ6IC0xLAotICAgICAgICAgICAgICAgICAgICBpc1RlbXBvcmFyeTogdHJ1ZQot
ICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgdGhpcy5fdGVtcG9yYXJ5UmVjb3Jk
aW5nUHJvZmlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcigKKyAgICAgICAgICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5UeXBlSWQs
CisgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU25hcHNob3R0aW5n
XHUyMDI2IiksCisgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICB0
cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRoaXMuYWRkUHJvZmlsZUhlYWRlcih0
aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlKTsKICAgICAgICAgfQpAQCAtODY5LDcgKzg4
MiwxMCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAKIFdlYklu
c3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
UGFuZWwucHJvdG90eXBlOwogCi0KKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAaW1wbGVtZW50
cyB7UHJvZmlsZXJBZ2VudC5EaXNwYXRjaGVyfQorICovCiBXZWJJbnNwZWN0b3IuUHJvZmlsZXJE
aXNwYXRjaGVyID0gZnVuY3Rpb24ocHJvZmlsZXIpCiB7CiAgICAgdGhpcy5fcHJvZmlsZXIgPSBw
cm9maWxlcjsKQEAgLTg4MSw5ICs4OTcsMTIgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVyRGlzcGF0
Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Byb2ZpbGVyLl9yZXNldCgpOwogICAg
IH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1Byb2ZpbGVyQWdlbnQuUHJvZmlsZUhlYWRl
cn0gcHJvZmlsZQorICAgICAqLwogICAgIGFkZFByb2ZpbGVIZWFkZXI6IGZ1bmN0aW9uKHByb2Zp
bGUpCiAgICAgewotICAgICAgICB0aGlzLl9wcm9maWxlci5hZGRQcm9maWxlSGVhZGVyKHByb2Zp
bGUpOworICAgICAgICB0aGlzLl9wcm9maWxlci5hZGRQcm9maWxlSGVhZGVyKG5ldyBXZWJJbnNw
ZWN0b3IuUHJvZmlsZUhlYWRlcihwcm9maWxlWyJ0eXBlSWQiXSwgcHJvZmlsZVsidGl0bGUiXSwg
cHJvZmlsZVsidWlkIl0sIGZhbHNlKSk7CiAgICAgfSwKIAogICAgIGFkZEhlYXBTbmFwc2hvdENo
dW5rOiBmdW5jdGlvbih1aWQsIGNodW5rKQpAQCAtOTA3LDYgKzkyNiwxMCBAQCBXZWJJbnNwZWN0
b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKKy8qKgorICog
QGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlNpZGViYXJUcmVlRWxlbWVu
dH0KKyAqLwogV2ViSW5zcGVjdG9yLlByb2ZpbGVTaWRlYmFyVHJlZUVsZW1lbnQgPSBmdW5jdGlv
bihwcm9maWxlLCB0aXRsZUZvcm1hdCwgY2xhc3NOYW1lKQogewogICAgIHRoaXMucHJvZmlsZSA9
IHByb2ZpbGU7CkBAIC05NjUsNiArOTg4LDEyIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlU2lkZWJh
clRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLlByb2ZpbGVTaWRlYmFy
VHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TaWRlYmFyVHJl
ZUVsZW1lbnQucHJvdG90eXBlOwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMg
e1dlYkluc3BlY3Rvci5TaWRlYmFyVHJlZUVsZW1lbnR9CisgKiBAcGFyYW0ge3N0cmluZ30gdGl0
bGUKKyAqIEBwYXJhbSB7c3RyaW5nPX0gc3VidGl0bGUKKyAqLwogV2ViSW5zcGVjdG9yLlByb2Zp
bGVHcm91cFNpZGViYXJUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHRpdGxlLCBzdWJ0aXRsZSkKIHsK
ICAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclRyZWVFbGVtZW50LmNhbGwodGhpcywgInByb2ZpbGUt
Z3JvdXAtc2lkZWJhci10cmVlLWl0ZW0iLCB0aXRsZSwgc3VidGl0bGUsIG51bGwsIHRydWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Ub3BEb3duUHJv
ZmlsZURhdGFHcmlkVHJlZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanMKaW5kZXggYmZjYzI1ZWVlYmM0MWMwMGM0YTY2
NGIzN2JmYWRhYzdlNDgxYWRhNi4uNDE2MjllZDIxYWIxZjUyMWZiMjJhMThiM2NjMDY3NTgwNGVm
NDQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Ub3BE
b3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzCkBAIC0yMyw2ICsyMywxMCBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVu
ZHMge1dlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlfQorICovCiBXZWJJbnNwZWN0b3Iu
VG9wRG93blByb2ZpbGVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbigvKlByb2ZpbGVWaWV3Ki8gcHJv
ZmlsZVZpZXcsIC8qUHJvZmlsZU5vZGUqLyBwcm9maWxlTm9kZSwgLypUb3BEb3duUHJvZmlsZURh
dGFHcmlkVHJlZSovIG93bmluZ1RyZWUpCiB7CiAgICAgdmFyIGhhc0NoaWxkcmVuID0gKHByb2Zp
bGVOb2RlLmNoaWxkcmVuICYmIHByb2ZpbGVOb2RlLmNoaWxkcmVuLmxlbmd0aCk7CkBAIC02Niwx
MyArNzAsMTkgQEAgV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWROb2RlLnByb3Rv
dHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWROb2RlLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5
cGU7CiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlBy
b2ZpbGVEYXRhR3JpZFRyZWV9CisgKi8KIFdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFH
cmlkVHJlZSA9IGZ1bmN0aW9uKC8qUHJvZmlsZVZpZXcqLyBwcm9maWxlVmlldywgLypQcm9maWxl
Tm9kZSovIHByb2ZpbGVOb2RlKQogewogICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRU
cmVlLmNhbGwodGhpcywgcHJvZmlsZVZpZXcsIHByb2ZpbGVOb2RlKTsKIAogICAgIHRoaXMuX3Jl
bWFpbmluZ0NoaWxkcmVuID0gcHJvZmlsZU5vZGUuY2hpbGRyZW47CiAKLSAgICBXZWJJbnNwZWN0
b3IuVG9wRG93blByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9wb3B1bGF0ZS5jYWxsKHRo
aXMpOworICAgIHZhciBhbnkgPSAvKiogQHR5cGV7Kn0gKi90aGlzOworICAgIHZhciBub2RlID0g
LyoqIEB0eXBle1dlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlfSAqLworICAgIFdlYklu
c3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3BvcHVsYXRlLmNh
bGwobm9kZSk7CiB9CiAKIFdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5w
cm90b3R5cGUgPSB7CkBAIC05Nyw3ICsxMDcsOSBAQCBXZWJJbnNwZWN0b3IuVG9wRG93blByb2Zp
bGVEYXRhR3JpZFRyZWUucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBleGNsdWRlZENhbGxV
SUQgPSBwcm9maWxlRGF0YUdyaWRlTm9kZS5jYWxsVUlEOwogCi0gICAgICAgIFdlYkluc3BlY3Rv
ci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX2V4Y2x1ZGUuY2FsbCh0aGlz
LCBleGNsdWRlZENhbGxVSUQpOworICAgICAgICB2YXIgYW55ID0gLyoqIEB0eXBleyp9ICovdGhp
czsKKyAgICAgICAgdmFyIG5vZGUgPSAvKiogQHR5cGV7V2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRh
R3JpZE5vZGV9ICovCisgICAgICAgIFdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlk
Tm9kZS5wcm90b3R5cGUuX2V4Y2x1ZGUuY2FsbChub2RlLCBleGNsdWRlZENhbGxVSUQpOwogCiAg
ICAgICAgIGlmICh0aGlzLmxhc3RDb21wYXJhdG9yKQogICAgICAgICAgICAgdGhpcy5zb3J0KHRo
aXMubGFzdENvbXBhcmF0b3IsIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9leHRlcm5zLmpzCmluZGV4IDkyNzBjMWU2YmIxNDE3Y2YxOWU0OWVjZjk2MmY2ZmEw
ZjM5ZTRjNjQuLmQ3ZjY4NzFmYmRjZmI5NWY3NDJkOGU1ZTYyZjY2ZjdlMmZjMjBjZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKQEAgLTY1LDYg
KzY1LDkgQEAgQXJyYXkucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKG9iaiwgb25seUZpcnN0
KSB7fQogQXJyYXkucHJvdG90eXBlLmtleVNldCA9IGZ1bmN0aW9uKCkge30KIC8qKiBAcmV0dXJu
IHtudW1iZXJ9ICovCiBBcnJheS5wcm90b3R5cGUudXBwZXJCb3VuZCA9IGZ1bmN0aW9uKGFuY2hv
cikge30KKy8qKiBAcmV0dXJuIHtudW1iZXJ9ICovCitBcnJheS5wcm90b3R5cGUuYmluYXJ5SW5k
ZXhPZiA9IGZ1bmN0aW9uKGFuY2hvcikge30KK0FycmF5LnByb3RvdHlwZS5zb3J0UmFuZ2UgPSBm
dW5jdGlvbihjb21wYXJhdG9yLCBsZWZ0Qm91bmQsIHJpZ2h0Qm91bmQsIGspIHt9CiAKIAogRE9N
QXBwbGljYXRpb25DYWNoZS5wcm90b3R5cGUuVU5DQUNIRUQgPSAwOwpAQCAtMjAyLDMgKzIwNSwx
NCBAQCBXZWJJbnNwZWN0b3IuaXNDb21wYWN0TW9kZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFs
c2U7IH0KIAogV2ViSW5zcGVjdG9yLlNvdXJjZUphdmFTY3JpcHRUb2tlbml6ZXIgPSB7fQogV2Vi
SW5zcGVjdG9yLlNvdXJjZUphdmFTY3JpcHRUb2tlbml6ZXIuS2V5d29yZHMgPSB7fQorCisvKiog
QGNvbnN0cnVjdG9yICovCitXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZSA9IGZ1
bmN0aW9uKCkge30KKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVj
dG9yLk9iamVjdH0KKyAqLworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlciA9IGZ1bmN0
aW9uKCkge30KK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXIucHJvdG90eXBlLmNyZWF0
ZU9iamVjdCA9IGZ1bmN0aW9uKHR5cGUpIHt9CitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90V29y
a2VyLnByb3RvdHlwZS5zdGFydENoZWNraW5nRm9yTG9uZ1J1bm5pbmdDYWxscyA9IGZ1bmN0aW9u
KCkge30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9o
ZWFwUHJvZmlsZXIuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9oZWFw
UHJvZmlsZXIuY3NzCmluZGV4IDc1N2ZmMGYwMjhiZTZjMTllZGFiNDMyNWVmNGE0MDhmNWUyZTRh
ZGMuLjc5YzczOTlhN2FkMjViNDNmNmFmODIyMzUyZWViY2NhZTc1NjRjYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaGVhcFByb2ZpbGVyLmNzcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2hlYXBQcm9maWxlci5jc3MKQEAg
LTI1NywxMSArMjU3LDYgQEAgdGFibGUuaGVhcHNob3QtaGVscCB7CiAgICAgYm9yZGVyLXNwYWNp
bmc6IDEycHggMnB4OwogfQogCi1kaXYucmV0YWluaW5nLXBhdGhzLXZpZXcgdGQucGF0aC1jb2x1
bW4gZGl2OmhvdmVyIHsKLSAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKLSAgICBjb2xv
cjogYmx1ZTsKLX0KLQogLmN5Y2xlZC1hbmNlc3Nvci1ub2RlIHsKICAgICBvcGFjaXR5OiAwLjY7
CiB9Cg==
</data>
<flag name="review"
          id="141567"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>