<?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>81787</bug_id>
          
          <creation_ts>2012-03-21 08:42:03 -0700</creation_ts>
          <short_desc>Web Inspector: make CSS and JavaScript files editable by default.</short_desc>
          <delta_ts>2012-03-22 06:26:16 -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="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</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>584161</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-21 08:42:03 -0700</bug_when>
    <thetext>This change is finalizing the migration to the experiment, fixing many things along the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584164</commentid>
    <comment_count>1</comment_count>
      <attachid>133049</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-21 08:44:09 -0700</bug_when>
    <thetext>Created attachment 133049
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584201</commentid>
    <comment_count>2</comment_count>
      <attachid>133055</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-21 09:11:28 -0700</bug_when>
    <thetext>Created attachment 133055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584301</commentid>
    <comment_count>3</comment_count>
      <attachid>133055</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-03-21 10:27:38 -0700</bug_when>
    <thetext>Comment on attachment 133055
Patch

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

&gt; Source/WebCore/inspector/front-end/JavaScriptSourceFrame.js:72
&gt; +        function mycallback(mimeType, content)

myCallback?

&gt; Source/WebCore/inspector/front-end/JavaScriptSourceFrame.js:90
&gt;      editContent: function(newContent, callback)

consider renaming to saveContent.

&gt; Source/WebCore/inspector/front-end/JavaScriptSourceFrame.js:92
&gt; +        this._originalContent = newContent;

Please move to didEditContent

&gt; Source/WebCore/inspector/front-end/SourceFrame.js:97
&gt;              this._wasHiddenWhileEditing = true;

Please remove these 2 lines.

&gt; Source/WebCore/inspector/front-end/SourceFrame.js:530
&gt;      doubleClick: function(lineNumber)

Consider removing this method.

&gt; Source/WebCore/inspector/front-end/TextViewer.js:1016
&gt; +            this.revealLine(lineNumber);

revealLine() should be called in both modes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584493</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-03-21 12:29:10 -0700</bug_when>
    <thetext>Please stop disguising random fixes under a bug that implies a simple switch is being flipped. Ideally these fixes would have been done in separate, logically grouped changes before the switch was flipped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584498</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-21 12:33:01 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Please stop disguising random fixes under a bug that implies a simple switch is being flipped. Ideally these fixes would have been done in separate, logically grouped changes before the switch was flipped.

I am sorry, I don&apos;t get it. Could you be more specific?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584508</commentid>
    <comment_count>6</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-03-21 12:39:08 -0700</bug_when>
    <thetext>The bug title implies this should be a simple 1-10 line change. Instead the change is a collection of misc fixes (not described in the ChangeLog either.)

These fixes should be broken up into smaller patches, with descriptions of what was fixed in the ChangeLog for each function. Then a final change to move the feature out of experiment status.

No comments in the ChangeLog is the main issue here. Breaking things up into smaller changes would be nice too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584515</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-21 12:47:10 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; The bug title implies this should be a simple 1-10 line change. Instead the change is a collection of misc fixes (not described in the ChangeLog either.)
&gt; 
&gt; These fixes should be broken up into smaller patches, with descriptions of what was fixed in the ChangeLog for each function. Then a final change to move the feature out of experiment status.
&gt; 

This change is not &apos;flipping the switch&apos;, all these changes are required for editing to be enabled by default. Changes under the experiment were only used to assess the user experience. I had no intention to complete it as an experiment and then flip the switch - too much work.

&gt; No comments in the ChangeLog is the main issue here. Breaking things up into smaller changes would be nice too.

This change removes cancelEditing and setReadOnly. It establishes proper content dispatching. All three are inter-dependent, need to be landed simultaneously. Popover change removes the readOnly guard, also necessary. I&apos;ll update the log.

Two drive-by fixes I can think of are: hiding popover upon Esc and a fix with the no-op change in the text model. I&apos;ll extract them into separate patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584521</commentid>
    <comment_count>8</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-03-21 12:52:13 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; The bug title implies this should be a simple 1-10 line change. Instead the change is a collection of misc fixes (not described in the ChangeLog either.)
&gt; &gt; 
&gt; &gt; These fixes should be broken up into smaller patches, with descriptions of what was fixed in the ChangeLog for each function. Then a final change to move the feature out of experiment status.
&gt; &gt; 
&gt; 
&gt; This change is not &apos;flipping the switch&apos;, all these changes are required for editing to be enabled by default. Changes under the experiment were only used to assess the user experience. I had no intention to complete it as an experiment and then flip the switch - too much work.

Okay, the bug title (and lack of details) made it sound like a switch flip.

&gt; &gt; No comments in the ChangeLog is the main issue here. Breaking things up into smaller changes would be nice too.
&gt; 
&gt; This change removes cancelEditing and setReadOnly. It establishes proper content dispatching. All three are inter-dependent, need to be landed simultaneously. Popover change removes the readOnly guard, also necessary. I&apos;ll update the log.
&gt; 
&gt; Two drive-by fixes I can think of are: hiding popover upon Esc and a fix with the no-op change in the text model. I&apos;ll extract them into separate patches.

And I wouldn&apos;t know this without asking you or trying to infer this from the code. That is great info to add to the bug and the ChangeLog. Please revise this patch and add that info (ideally per changed function).

I filed bug 81828 about making the style bot complain about sparse ChangeLogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584522</commentid>
    <comment_count>9</comment_count>
      <attachid>133055</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-03-21 12:52:38 -0700</bug_when>
    <thetext>Comment on attachment 133055
Patch

Please revise the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584530</commentid>
    <comment_count>10</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-21 12:58:04 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 133055 [details])
&gt; Please revise the ChangeLog.

Now that you r- ed it, I hope you will be available to review revised ChangeLog tomorrow at 4am PST :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584538</commentid>
    <comment_count>11</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-03-21 13:07:11 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (From update of attachment 133055 [details] [details])
&gt; &gt; Please revise the ChangeLog.
&gt; 
&gt; Now that you r- ed it, I hope you will be available to review revised ChangeLog tomorrow at 4am PST :)

It is the responsibility of all reviewers to make sure the ChangeLog has decent info. If not, maybe they shouldn&apos;t be reviewers.

http://www.webkit.org/coding/contributing.html#changelogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585189</commentid>
    <comment_count>12</comment_count>
      <attachid>133241</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-22 06:05:49 -0700</bug_when>
    <thetext>Created attachment 133241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585194</commentid>
    <comment_count>13</comment_count>
      <attachid>133241</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-03-22 06:14:35 -0700</bug_when>
    <thetext>Comment on attachment 133241
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        I removes dblclick handler as well since one does not need to enter editing mode.

I -&gt; It

&gt; Source/WebCore/inspector/front-end/TextViewer.js:1173
&gt; +        this._restoreSelection(newRange.collapseToEnd(), true);

Please mention this change in ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585199</commentid>
    <comment_count>14</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-22 06:26:16 -0700</bug_when>
    <thetext>Committed r111682: &lt;http://trac.webkit.org/changeset/111682&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133049</attachid>
            <date>2012-03-21 08:44:09 -0700</date>
            <delta_ts>2012-03-21 09:11:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81787-20120321194407.patch</filename>
            <type>text/plain</type>
            <size>35618</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDczMTg3NTZmOTc5ZTlk
MTgxNWJjNTc3NjNjN2U2YjFmNmIzZWY3Ny4uNTRiNThlYzZkODQ5ODZlNDQ1NTA0YzliM2IwNTI4
Y2IzZGMyNTUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAzLTIxICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1ha2UgQ1NTIGFuZCBKYXZhU2NyaXB0IGZpbGVzIGVkaXRhYmxlIGJ5IGRlZmF1bHQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTc4NworCisg
ICAgICAgIFRoaXMgY2hhbmdlIGlzIGZpbmFsaXppbmcgdGhlIG1pZ3JhdGlvbiB0byB0aGUgZXhw
ZXJpbWVudCwgZml4aW5nIG1hbnkgdGhpbmdzIGFsb25nIHRoZSB3YXkuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0RldGFpbGVkSGVhcHNob3RWaWV3LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RWxlbWVudHNQYW5lbC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3Jp
cHRTb3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNl
RnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZS5wcm90
b3R5cGUucmVxdWVzdENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRT
b3VyY2VGcmFtZS5wcm90b3R5cGUuYWZ0ZXJUZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZS5iZWZvcmVUZXh0Q2hhbmdlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZS5k
aWRFZGl0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZy
YW1lLnByb3RvdHlwZS5fcmVzb2x2ZU9iamVjdEZvclBvcG92ZXIuc2hvd09iamVjdFBvcG92ZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZS5wcm90b3R5cGUu
X3Jlc29sdmVPYmplY3RGb3JQb3BvdmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2Ny
aXB0U291cmNlRnJhbWUucHJvdG90eXBlLl9vbktleURvd24pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZS5wcm90b3R5cGUuX2xpbmVOdW1iZXJBZnRlckVkaXRp
bmcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UG9wb3ZlckhlbHBlci5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5PYmplY3RQb3BvdmVySGVscGVyLnByb3RvdHlwZS5fc2hvd09iamVj
dFBvcG92ZXIuc2hvd09iamVjdFBvcG92ZXIuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmpl
Y3RQb3BvdmVySGVscGVyLnByb3RvdHlwZS5fc2hvd09iamVjdFBvcG92ZXIpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Q
b3BvdmVySGVscGVyLnByb3RvdHlwZS5pc1BvcG92ZXJWaXNpYmxlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVNvdXJjZUZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJj
ZUZyYW1lLnByb3RvdHlwZS5zdWdnZXN0ZWRGaWxlTmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUuX2NvbnRlbnRDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FZGl0YWJsZVJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlLmNh
bkVkaXRTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVkaXRhYmxlUmVzb3VyY2VTb3Vy
Y2VGcmFtZS5wcm90b3R5cGUuZWRpdENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVk
aXRhYmxlUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUuX2NvbnRlbnRDaGFuZ2VkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5faW5uZXJTaG93Vmlldyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZS5f
YXBwZW5kUmV2aXNpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1Bh
bmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuc2V0
U2NyaXB0U291cmNlSXNEaXJ0eSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0
aW5ncy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHBlcmltZW50c1NldHRpbmdzKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZS5wcm90b3R5cGUud2FzU2hvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1l
LnByb3RvdHlwZS53aWxsSGlkZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUu
cHJvdG90eXBlLmJlZm9yZVRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3Vy
Y2VGcmFtZS5wcm90b3R5cGUuc2V0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291
cmNlRnJhbWUucHJvdG90eXBlLmNvbW1pdEVkaXRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNvdXJjZUZyYW1lLnByb3RvdHlwZS5kaWRFZGl0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLmVkaXRDb250ZW50KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0Vmlld2VyRGVsZWdhdGVGb3JTb3VyY2VGcmFtZS5wcm90b3R5cGUuZG91Ymxl
Q2xpY2spOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5lbmRzV2l0aEJyYWNrZXRS
ZWdleC4pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGV4dFByb21wdC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5fc3RhcnRFZGl0aW5nKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5fc3RvcEVkaXRpbmcp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdlci5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZS5fcmVnaXN0ZXJTaG9ydGN1dHMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLmhhbmRs
ZVVuZG9SZWRvLmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFp
blBhbmVsLnByb3RvdHlwZS5oYW5kbGVVbmRvUmVkbyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZVBhbmVsLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5fZG9Mb2FkQ1NT
KToKKwogMjAxMi0wMy0yMSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmViYXNlbGluZWQgcnVuLWJpbmRpbmdzLXRlc3RzIHJlc3Vs
dHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFp
bGVkSGVhcHNob3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
ZXRhaWxlZEhlYXBzaG90Vmlldy5qcwppbmRleCBjNmIzZDExMTVhOGQ5ZWI5ZGUxNTMyNGY0NmVl
NWI5ZmY5YmEyYzdhLi44Njc2MTczOTU4YmMxZTNjZGQ5MjI2MTg3N2FmODgwYjgzYjY0MjUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVh
cHNob3RWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0
YWlsZWRIZWFwc2hvdFZpZXcuanMKQEAgLTUyNyw3ICs1MjcsNyBAQCBXZWJJbnNwZWN0b3IuRGV0
YWlsZWRIZWFwc2hvdFZpZXcgPSBmdW5jdGlvbihwYXJlbnQsIHByb2ZpbGUpCiAgICAgdGhpcy5o
ZWxwQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oIiIsICJoZWFwc2hv
dC1oZWxwLXN0YXR1cy1iYXItaXRlbSBzdGF0dXMtYmFyLWl0ZW0iKTsKICAgICB0aGlzLmhlbHBC
dXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9oZWxwQ2xpY2tlZC5iaW5kKHRo
aXMpLCBmYWxzZSk7CiAKLSAgICB0aGlzLl9wb3BvdmVySGVscGVyID0gbmV3IFdlYkluc3BlY3Rv
ci5PYmplY3RQb3BvdmVySGVscGVyKHRoaXMuZWxlbWVudCwgdGhpcy5fZ2V0SG92ZXJBbmNob3Iu
YmluZCh0aGlzKSwgdGhpcy5fcmVzb2x2ZU9iamVjdEZvclBvcG92ZXIuYmluZCh0aGlzKSwgbnVs
bCwgdHJ1ZSk7CisgICAgdGhpcy5fcG9wb3ZlckhlbHBlciA9IG5ldyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0UG9wb3ZlckhlbHBlcih0aGlzLmVsZW1lbnQsIHRoaXMuX2dldEhvdmVyQW5jaG9yLmJpbmQo
dGhpcyksIHRoaXMuX3Jlc29sdmVPYmplY3RGb3JQb3BvdmVyLmJpbmQodGhpcyksIHVuZGVmaW5l
ZCwgdHJ1ZSk7CiAKICAgICB0aGlzLl9sb2FkUHJvZmlsZSh0aGlzLl9wcm9maWxlVWlkLCBwcm9m
aWxlQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCA3ZGJjMmM4ZmZmMzA1ZDBlM2Nl
MTc0YTI4YzUwMDA3ZWVjZDczYzU3Li4xOTNlOGRmOTI0OGE4NTI3NWZiMzAwNDJkZDcxNGIwZjIw
NWVhODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Vs
ZW1lbnRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
bGVtZW50c1BhbmVsLmpzCkBAIC0zOTEsNiArMzkxLDEwIEBAIFdlYkluc3BlY3Rvci5FbGVtZW50
c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge0VsZW1lbnR9IGFuY2hvcgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlBv
cG92ZXJ9IHBvcG92ZXIKKyAgICAgKi8KICAgICBfc2hvd1BvcG92ZXI6IGZ1bmN0aW9uKGFuY2hv
ciwgcG9wb3ZlcikKICAgICB7CiAgICAgICAgIHZhciBsaXN0SXRlbSA9IGFuY2hvci5lbmNsb3Np
bmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lSW5BcnJheShbImxpIl0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFt
ZS5qcwppbmRleCAwYjZmYzE4YzJlZWU2YWFlNmE1OGYwZjg0ZTc0MTlhNDBjY2E4YzE2Li4xZjc0
NDQ1OThlZWM0NzlkMjJkMDk0ZWMzMjhmMmU4MjE2YTc4NTA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFtZS5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFt
ZS5qcwpAQCAtNDgsNiArNDgsNyBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1l
ID0gZnVuY3Rpb24oc2NyaXB0c1BhbmVsLCBtb2RlbCwgdWlTb3VyY2VDb2RlKQogICAgICAgICAg
ICAgdGhpcy5fZ2V0UG9wb3ZlckFuY2hvci5iaW5kKHRoaXMpLCB0aGlzLl9yZXNvbHZlT2JqZWN0
Rm9yUG9wb3Zlci5iaW5kKHRoaXMpLCB0aGlzLl9vbkhpZGVQb3BvdmVyLmJpbmQodGhpcyksIHRy
dWUpOwogCiAgICAgdGhpcy50ZXh0Vmlld2VyLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2Vkb3duIiwgdGhpcy5fb25Nb3VzZURvd24uYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgdGhpcy50
ZXh0Vmlld2VyLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX29uS2V5
RG93bi5iaW5kKHRoaXMpLCB0cnVlKTsKICAgICB0aGlzLl91aVNvdXJjZUNvZGUuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlLkV2ZW50cy5Db250ZW50Q2hhbmdlZCwg
dGhpcy5fb25Db250ZW50Q2hhbmdlZCwgdGhpcyk7CiAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5FdmVudHMuTG9hZGVkLCB0aGlzLl9vblRleHRWaWV3
ZXJDb250ZW50TG9hZGVkLCB0aGlzKTsKIH0KQEAgLTY4LDcgKzY5LDEyIEBAIFdlYkluc3BlY3Rv
ci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgIC8vIFNvdXJjZUZyYW1l
IG92ZXJyaWRlcwogICAgIHJlcXVlc3RDb250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7
Ci0gICAgICAgIHRoaXMuX3VpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChjYWxsYmFjayk7Cisg
ICAgICAgIGZ1bmN0aW9uIG15Y2FsbGJhY2sobWltZVR5cGUsIGNvbnRlbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHRoaXMuX29yaWdpbmFsQ29udGVudCA9IGNvbnRlbnQ7CisgICAgICAgICAg
ICBjYWxsYmFjayhtaW1lVHlwZSwgY29udGVudCk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5f
dWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50KG15Y2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAg
fSwKIAogICAgIGNhbkVkaXRTb3VyY2U6IGZ1bmN0aW9uKCkKQEAgLTkzLDE1ICs5OSw2IEBAIFdl
Ykluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLnJlcXVlc3RDb250ZW50KHRoaXMuc2V0Q29udGVudC5iaW5kKHRoaXMpKTsKICAgICB9LAog
Ci0gICAgc2V0UmVhZE9ubHk6IGZ1bmN0aW9uKHJlYWRPbmx5KQotICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuX3BvcG92ZXJIZWxwZXIgJiYgIXJlYWRPbmx5KQotICAgICAgICAgICAgdGhpcy5fcG9w
b3ZlckhlbHBlci5oaWRlUG9wb3ZlcigpOwotICAgICAgICBXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWUucHJvdG90eXBlLnNldFJlYWRPbmx5LmNhbGwodGhpcywgcmVhZE9ubHkpOwotICAgICAgICBp
ZiAocmVhZE9ubHkpCi0gICAgICAgICAgICB0aGlzLl9zY3JpcHRzUGFuZWwuc2V0U2NyaXB0U291
cmNlSXNCZWluZ0VkaXRlZCh0aGlzLl91aVNvdXJjZUNvZGUsIGZhbHNlKTsKLSAgICB9LAotCiAg
ICAgcG9wdWxhdGVMaW5lR3V0dGVyQ29udGV4dE1lbnU6IGZ1bmN0aW9uKGNvbnRleHRNZW51LCBs
aW5lTnVtYmVyKQogICAgIHsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJD
b250aW51ZSB0byBoZXJlIiA6ICJDb250aW51ZSB0byBIZXJlIiksIHRoaXMuX21vZGVsLmNvbnRp
bnVlVG9MaW5lLmJpbmQodGhpcy5fbW9kZWwsIHRoaXMuX3VpU291cmNlQ29kZSwgbGluZU51bWJl
cikpOwpAQCAtMTg2LDYgKzE4Myw4IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJh
bWUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMuYWRkQnJlYWtwb2ludChuZXdM
aW5lTnVtYmVyLCBicmVha3BvaW50LnJlc29sdmVkLCBicmVha3BvaW50LmNvbmRpdGlvbmFsLCBi
cmVha3BvaW50LmVuYWJsZWQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAg
dGhpcy5fc2NyaXB0c1BhbmVsLnNldFNjcmlwdFNvdXJjZUlzRGlydHkodGhpcy5fdWlTb3VyY2VD
b2RlLCB0aGlzLnRleHRNb2RlbC5jb3B5UmFuZ2UoKSAhPT0gdGhpcy5fb3JpZ2luYWxDb250ZW50
KTsKICAgICB9LAogCiAgICAgYmVmb3JlVGV4dENoYW5nZWQ6IGZ1bmN0aW9uKCkKQEAgLTE5NSw0
MiArMTk0LDEwIEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgICAgIGV4ZWN1dGlvbkxpbmVOdW1iZXI6IHRoaXMuX2V4ZWN1dGlv
bkxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgYnJlYWtwb2ludHM6IHRoaXMuX2JyZWFrcG9p
bnRzCiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLl9zY3JpcHRzUGFuZWwuc2V0U2Ny
aXB0U291cmNlSXNCZWluZ0VkaXRlZCh0aGlzLl91aVNvdXJjZUNvZGUsIHRydWUpOwogICAgICAg
ICB9CiAgICAgICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuYmVmb3JlVGV4
dENoYW5nZWQuY2FsbCh0aGlzKTsKICAgICB9LAogCi0gICAgY2FuY2VsRWRpdGluZzogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdz
LnNvdXJjZUZyYW1lQWx3YXlzRWRpdGFibGUuaXNFbmFibGVkKCkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5j
YW5jZWxFZGl0aW5nLmNhbGwodGhpcyk7Ci0KLSAgICAgICAgaWYgKCF0aGlzLl9qYXZhU2NyaXB0
U291cmNlRnJhbWVTdGF0ZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGlm
ICh0eXBlb2YgdGhpcy5famF2YVNjcmlwdFNvdXJjZUZyYW1lU3RhdGUuZXhlY3V0aW9uTGluZU51
bWJlciA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgIHRoaXMuY2xlYXJFeGVjdXRpb25MaW5l
KCk7Ci0gICAgICAgICAgICB0aGlzLnNldEV4ZWN1dGlvbkxpbmUodGhpcy5famF2YVNjcmlwdFNv
dXJjZUZyYW1lU3RhdGUuZXhlY3V0aW9uTGluZU51bWJlcik7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2YXIgb2xkQnJlYWtwb2ludHMgPSB0aGlzLl9icmVha3BvaW50czsKLSAgICAgICAgdGhpcy5f
YnJlYWtwb2ludHMgPSB7fTsKLSAgICAgICAgZm9yICh2YXIgbGluZU51bWJlciBpbiBvbGRCcmVh
a3BvaW50cykKLSAgICAgICAgICAgIHRoaXMucmVtb3ZlQnJlYWtwb2ludChOdW1iZXIobGluZU51
bWJlcikpOwotCi0gICAgICAgIHZhciBuZXdCcmVha3BvaW50cyA9IHRoaXMuX2phdmFTY3JpcHRT
b3VyY2VGcmFtZVN0YXRlLmJyZWFrcG9pbnRzOwotICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVy
IGluIG5ld0JyZWFrcG9pbnRzKSB7Ci0gICAgICAgICAgICBsaW5lTnVtYmVyID0gTnVtYmVyKGxp
bmVOdW1iZXIpOwotICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXdCcmVha3BvaW50c1ts
aW5lTnVtYmVyXTsKLSAgICAgICAgICAgIHRoaXMuYWRkQnJlYWtwb2ludChsaW5lTnVtYmVyLCBi
cmVha3BvaW50LnJlc29sdmVkLCBicmVha3BvaW50LmNvbmRpdGlvbmFsLCBicmVha3BvaW50LmVu
YWJsZWQpOwotICAgICAgICB9Ci0KLSAgICAgICAgZGVsZXRlIHRoaXMuX2phdmFTY3JpcHRTb3Vy
Y2VGcmFtZVN0YXRlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCiAgICAgZGlkRWRp
dENvbnRlbnQ6IGZ1bmN0aW9uKGVycm9yKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlNv
dXJjZUZyYW1lLnByb3RvdHlwZS5kaWRFZGl0Q29udGVudC5jYWxsKHRoaXMsIGVycm9yKTsKQEAg
LTI1MCw3ICsyMTcsNyBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3QnJlYWtwb2ludHNbbGlu
ZU51bWJlcl07CiAgICAgICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50KE51bWJlcihsaW5lTnVt
YmVyKSwgYnJlYWtwb2ludC5jb25kaXRpb24sIGJyZWFrcG9pbnQuZW5hYmxlZCk7CiAgICAgICAg
IH0KLSAgICAgICAgdGhpcy5fc2NyaXB0c1BhbmVsLnNldFNjcmlwdFNvdXJjZUlzQmVpbmdFZGl0
ZWQodGhpcy5fdWlTb3VyY2VDb2RlLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX3NjcmlwdHNQYW5l
bC5zZXRTY3JpcHRTb3VyY2VJc0RpcnR5KHRoaXMuX3VpU291cmNlQ29kZSwgZmFsc2UpOwogICAg
ICAgICBkZWxldGUgdGhpcy5famF2YVNjcmlwdFNvdXJjZUZyYW1lU3RhdGU7CiAgICAgfSwKIApA
QCAtMzAzLDEwICsyNzAsNiBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnBy
b3RvdHlwZSA9IHsKIAogICAgIF9yZXNvbHZlT2JqZWN0Rm9yUG9wb3ZlcjogZnVuY3Rpb24oZWxl
bWVudCwgc2hvd0NhbGxiYWNrLCBvYmplY3RHcm91cE5hbWUpCiAgICAgewotICAgICAgICBpZiAo
IXRoaXMucmVhZE9ubHkpIHsKLSAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJIZWxwZXIuaGlkZVBv
cG92ZXIoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogICAgICAgICB0aGlzLl9o
aWdobGlnaHRFbGVtZW50ID0gdGhpcy5faGlnaGxpZ2h0RXhwcmVzc2lvbihlbGVtZW50KTsKIAog
ICAgICAgICBmdW5jdGlvbiBzaG93T2JqZWN0UG9wb3ZlcihyZXN1bHQsIHdhc1Rocm93bikKQEAg
LTMxNSw3ICsyNzgsNyBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICB0aGlzLl9wb3BvdmVySGVscGVyLmhpZGVQb3BvdmVy
KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
c2hvd0NhbGxiYWNrKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocmVzdWx0
KSwgd2FzVGhyb3duKTsKKyAgICAgICAgICAgIHNob3dDYWxsYmFjayhXZWJJbnNwZWN0b3IuUmVt
b3RlT2JqZWN0LmZyb21QYXlsb2FkKHJlc3VsdCksIHdhc1Rocm93biwgdGhpcy5faGlnaGxpZ2h0
RWxlbWVudCk7CiAgICAgICAgICAgICAvLyBQb3BvdmVyIG1heSBoYXZlIGJlZW4gcmVtb3ZlZCBi
eSBzaG93Q2FsbGJhY2soKS4KICAgICAgICAgICAgIGlmICh0aGlzLl9oaWdobGlnaHRFbGVtZW50
KQogICAgICAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodEVsZW1lbnQuYWRkU3R5bGVDbGFzcygi
c291cmNlLWZyYW1lLWV2YWwtZXhwcmVzc2lvbiIpOwpAQCAtNDE5LDYgKzM4MiwxNiBAQCBXZWJJ
bnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKICAgICB9LAogCisgICAgX29uS2V5RG93bjogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlUrMDAx
QiIpIHsgLy8gRXNjYXBlIGtleQorICAgICAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXJIZWxwZXIu
aXNQb3BvdmVyVmlzaWJsZSgpKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fcG9wb3ZlckhlbHBl
ci5oaWRlUG9wb3ZlcigpOworICAgICAgICAgICAgICAgIGV2ZW50LmNvbnN1bWUoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisKICAgICBfZWRpdEJyZWFrcG9pbnRDb25kaXRp
b246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgY2FsbGJhY2spCiAgICAgewogICAg
ICAgICB0aGlzLl9jb25kaXRpb25FbGVtZW50ID0gdGhpcy5fY3JlYXRlQ29uZGl0aW9uRWxlbWVu
dChsaW5lTnVtYmVyKTsKQEAgLTQ4NCw3ICs0NTcsNyBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlw
dFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPT09IG9s
ZFJhbmdlLnN0YXJ0TGluZSkgewogICAgICAgICAgICAgdmFyIHdoaXRlU3BhY2VzUmVnZXggPSAv
Xltcc1x4QTBdKiQvOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGxpbmVOdW1iZXIgKyBp
IDw9IG5ld1JhbmdlLmVuZExpbmU7ICsraSkgewotICAgICAgICAgICAgICAgIGlmICghd2hpdGVT
cGFjZXNSZWdleC50ZXN0KHRoaXMuX3RleHRNb2RlbC5saW5lKGxpbmVOdW1iZXIgKyBpKSkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoIXdoaXRlU3BhY2VzUmVnZXgudGVzdCh0aGlzLnRleHRNb2Rl
bC5saW5lKGxpbmVOdW1iZXIgKyBpKSkpIHsKICAgICAgICAgICAgICAgICAgICAgc2hpZnRPZmZz
ZXQgPSBpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5l
bC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpz
CmluZGV4IGRkM2E4NGRlNGY1YzZjYThlZDI0ZWY0ZDc2ZDY1ZWQyMTRmMGE2MGMuLmNjNjcxNzk5
MTA1NDQ0ZjhhNDEzMjM1MDg5OTg0MjQ4NDM4OTExNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCkBAIC05MTcsNiArOTE3LDEw
IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJl
dHVybiByZXNvdXJjZSAmJiByZXNvdXJjZS50aW1pbmcgPyBhbmNob3IgOiBudWxsOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGFuY2hvcgorICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlBvcG92ZXJ9IHBvcG92ZXIKKyAgICAgKi8KICAgICBfc2hvd1BvcG92
ZXI6IGZ1bmN0aW9uKGFuY2hvciwgcG9wb3ZlcikKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJj
ZSA9IGFuY2hvci5wYXJlbnRFbGVtZW50LnJlc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQb3BvdmVySGVscGVyLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQb3BvdmVySGVscGVyLmpzCmluZGV4
IGY0YTA5OWQ4NmUwNjBiMDY2NzFkMWI4MjBiODlkMzQ4YmMwNzk0NGEuLjU4ODYyMTNkNzNkNDJi
ZDA1MmIwYjIzNTJjMzM0Yjg5NGVlMzdmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UG9wb3ZlckhlbHBlci5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdFBvcG92ZXJIZWxwZXIuanMKQEAgLTMxLDYg
KzMxLDExIEBACiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rv
ci5Qb3BvdmVySGVscGVyfQorICogQHBhcmFtIHtFbGVtZW50fSBwYW5lbEVsZW1lbnQKKyAqIEBw
YXJhbSB7ZnVuY3Rpb24oRWxlbWVudCwgRXZlbnQpOkVsZW1lbnR8dW5kZWZpbmVkfSBnZXRBbmNo
b3IKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oRWxlbWVudCwgZnVuY3Rpb24oV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdCwgYm9vbGVhbiwgRWxlbWVudD0pOnVuZGVmaW5lZCwgc3RyaW5nKTp1bmRlZmlu
ZWR9IHF1ZXJ5T2JqZWN0CisgKiBAcGFyYW0ge2Z1bmN0aW9uKCk9fSBvbkhpZGUKKyAqIEBwYXJh
bSB7Ym9vbGVhbj19IGRpc2FibGVPbkNsaWNrCiAgKi8KIFdlYkluc3BlY3Rvci5PYmplY3RQb3Bv
dmVySGVscGVyID0gZnVuY3Rpb24ocGFuZWxFbGVtZW50LCBnZXRBbmNob3IsIHF1ZXJ5T2JqZWN0
LCBvbkhpZGUsIGRpc2FibGVPbkNsaWNrKQogewpAQCAtNDIsOSArNDcsMTggQEAgV2ViSW5zcGVj
dG9yLk9iamVjdFBvcG92ZXJIZWxwZXIgPSBmdW5jdGlvbihwYW5lbEVsZW1lbnQsIGdldEFuY2hv
ciwgcXVlcnlPYmplY3QKIH07CiAKIFdlYkluc3BlY3Rvci5PYmplY3RQb3BvdmVySGVscGVyLnBy
b3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQKKyAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qb3BvdmVyfSBwb3BvdmVyCisgICAgICovCiAgICAg
X3Nob3dPYmplY3RQb3BvdmVyOiBmdW5jdGlvbihlbGVtZW50LCBwb3BvdmVyKQogICAgIHsKLSAg
ICAgICAgZnVuY3Rpb24gc2hvd09iamVjdFBvcG92ZXIocmVzdWx0LCB3YXNUaHJvd24pCisgICAg
ICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3R9IHJl
c3VsdAorICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHdhc1Rocm93bgorICAgICAgICAgKiBA
cGFyYW0ge0VsZW1lbnQ9fSBhbmNob3JPdmVycmlkZQorICAgICAgICAgKi8KKyAgICAgICAgZnVu
Y3Rpb24gc2hvd09iamVjdFBvcG92ZXIocmVzdWx0LCB3YXNUaHJvd24sIGFuY2hvck92ZXJyaWRl
KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAocG9wb3Zlci5kaXNwb3NlZCkKICAgICAgICAg
ICAgICAgICByZXR1cm47CkBAIC01Miw2ICs2Niw5IEBAIFdlYkluc3BlY3Rvci5PYmplY3RQb3Bv
dmVySGVscGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB0aGlzLmhpZGVQb3BvdmVy
KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgYW5jaG9yRWxlbWVudCA9IGFuY2hvck92ZXJyaWRlIHx8IGVsZW1lbnQ7CisKICAgICAg
ICAgICAgIHZhciBwb3BvdmVyQ29udGVudEVsZW1lbnQgPSBudWxsOwogICAgICAgICAgICAgaWYg
KHJlc3VsdC50eXBlICE9PSAib2JqZWN0IikgewogICAgICAgICAgICAgICAgIHBvcG92ZXJDb250
ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKQEAgLTc5LDE0ICs5
NiwxNCBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0UG9wb3ZlckhlbHBlci5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChwb3BvdmVyQ29u
dGVudEVsZW1lbnQpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyLnNob3coY29u
dGFpbmVyLCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXIuc2hvdyhj
b250YWluZXIsIGFuY2hvckVsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIERlYnVnZ2VyQWdlbnQuZ2V0RnVuY3Rpb25EZXRhaWxzKHJlc3VsdC5vYmpl
Y3RJZCwgZGlkR2V0RGV0YWlscy5iaW5kKHRoaXMpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5cGUg
PT09ICJzdHJpbmciKQogICAgICAgICAgICAgICAgICAgICBwb3BvdmVyQ29udGVudEVsZW1lbnQu
dGV4dENvbnRlbnQgPSAiXCIiICsgcG9wb3ZlckNvbnRlbnRFbGVtZW50LnRleHRDb250ZW50ICsg
IlwiIjsKLSAgICAgICAgICAgICAgICBwb3BvdmVyLnNob3cocG9wb3ZlckNvbnRlbnRFbGVtZW50
LCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBwb3BvdmVyLnNob3cocG9wb3ZlckNvbnRlbnRF
bGVtZW50LCBhbmNob3JFbGVtZW50KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgcG9wb3ZlckNvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CiAKQEAgLTEwOCw3ICsxMjUsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0UG9wb3ZlckhlbHBl
ci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgICAgICBjb25zdCBwb3BvdmVyV2lkdGggPSAz
MDA7CiAgICAgICAgICAgICAgICAgY29uc3QgcG9wb3ZlckhlaWdodCA9IDI1MDsKLSAgICAgICAg
ICAgICAgICBwb3BvdmVyLnNob3cocG9wb3ZlckNvbnRlbnRFbGVtZW50LCBlbGVtZW50LCBwb3Bv
dmVyV2lkdGgsIHBvcG92ZXJIZWlnaHQpOworICAgICAgICAgICAgICAgIHBvcG92ZXIuc2hvdyhw
b3BvdmVyQ29udGVudEVsZW1lbnQsIGFuY2hvckVsZW1lbnQsIHBvcG92ZXJXaWR0aCwgcG9wb3Zl
ckhlaWdodCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5fcXVlcnlP
YmplY3QoZWxlbWVudCwgc2hvd09iamVjdFBvcG92ZXIuYmluZCh0aGlzKSwgdGhpcy5fcG9wb3Zl
ck9iamVjdEdyb3VwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUG9wb3Zlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUG9w
b3Zlci5qcwppbmRleCAxYTg0YzMwMzM2ZWE1MmZjYjBkZjE1ZmIzYmI4ZTIyNTc5NmRlOWVkLi4y
NGU5YTc5MTRlN2NlYmZjMmJmNGFmNTBhYmZjZGNmNWJjMDJjZjI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzCkBAIC0xOTAsNiArMTkwLDkgQEAg
V2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogCiAvKioKICAqIEBjb25zdHJ1Y3Rv
cgorICogQHBhcmFtIHtFbGVtZW50fSBwYW5lbEVsZW1lbnQKKyAqIEBwYXJhbSB7ZnVuY3Rpb24o
RWxlbWVudCwgRXZlbnQpOkVsZW1lbnR8dW5kZWZpbmVkfSBnZXRBbmNob3IKKyAqIEBwYXJhbSB7
ZnVuY3Rpb24oRWxlbWVudCwgV2ViSW5zcGVjdG9yLlBvcG92ZXIpOnVuZGVmaW5lZH0gc2hvd1Bv
cG92ZXIKICAqIEBwYXJhbSB7ZnVuY3Rpb24oKT19IG9uSGlkZQogICogQHBhcmFtIHtib29sZWFu
PX0gZGlzYWJsZU9uQ2xpY2sKICAqLwpAQCAtMjYxLDYgKzI2NCwxMSBAQCBXZWJJbnNwZWN0b3Iu
UG9wb3ZlckhlbHBlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCisgICAgaXNQ
b3BvdmVyVmlzaWJsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEhdGhpcy5f
cG9wb3ZlcjsKKyAgICB9LAorCiAgICAgaGlkZVBvcG92ZXI6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX3Jlc2V0SG92ZXJUaW1lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcwppbmRleCAzZDM2ODZjYTJjMzcxYzk5
YTMyYjdmZDQ4NTI1M2FhNzk2ZTg5NjlhLi5iYmNhOTQ0MDRjNjY0YzU0NmY0ZTcwZDA4YmYyNDY3
ZDhiYmI4YTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlVmlldy5qcwpAQCAtODQsNiArODQsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VT
b3VyY2VGcmFtZSA9IGZ1bmN0aW9uKHJlc291cmNlKQogewogICAgIHRoaXMuX3Jlc291cmNlID0g
cmVzb3VyY2U7CiAgICAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLmNhbGwodGhpcywgcmVzb3Vy
Y2UudXJsKTsKKyAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5FdmVudHMuUmV2aXNpb25BZGRlZCwgdGhpcy5fY29udGVudENoYW5nZWQsIHRo
aXMpOwogfQogCiAvL1RoaXMgaXMgYSBtYXAgZnJvbSByZXNvdXJjZS50eXBlIHRvIG1pbWUgdHlw
ZXMKQEAgLTExOCw2ICsxMTksMTEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUu
cHJvdG90eXBlID0gewogICAgIHN1Z2dlc3RlZEZpbGVOYW1lOiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5kaXNwbGF5TmFtZTsKKyAgICB9LAorCisgICAg
X2NvbnRlbnRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuc2V0
Q29udGVudChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5taW1lVHlwZUZvclJlc291
cmNlW3RoaXMuX3Jlc291cmNlXSwgdGhpcy5fcmVzb3VyY2UuY29udGVudCk7CiAgICAgfQogfQog
CkBAIC0xMzUsMjcgKzE0MSwxNyBAQCBXZWJJbnNwZWN0b3IuRWRpdGFibGVSZXNvdXJjZVNvdXJj
ZUZyYW1lID0gZnVuY3Rpb24ocmVzb3VyY2UpCiBXZWJJbnNwZWN0b3IuRWRpdGFibGVSZXNvdXJj
ZVNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICBjYW5FZGl0U291cmNlOiBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5pc0VkaXRhYmxlKCkgJiYgIXRo
aXMuX2NvbW1pdEVkaXRpbmdJblByb2dyZXNzOworICAgICAgICAvL0ZJWE1FOiBtYWtlIGxpdmUg
ZWRpdCBzdG9wIHVzaW5nIHJlc291cmNlIGNvbnRlbnQgYmluZGluZy4KKyAgICAgICAgcmV0dXJu
IHRoaXMuX3Jlc291cmNlLmlzRWRpdGFibGUoKSAmJiB0aGlzLl9yZXNvdXJjZS50eXBlID09PSBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0OwogICAgIH0sCiAKICAgICBlZGl0
Q29udGVudDogZnVuY3Rpb24obmV3VGV4dCwgY2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlz
Ll9jbGVhckluY3JlbWVudGFsVXBkYXRlVGltZXIoKTsKICAgICAgICAgdmFyIG1ham9yQ2hhbmdl
ID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fc2V0dGluZ0NvbnRlbnQgPSB0cnVlOwogICAgICAgICB0
aGlzLnJlc291cmNlLnNldENvbnRlbnQobmV3VGV4dCwgbWFqb3JDaGFuZ2UsIGNhbGxiYWNrKTsK
LSAgICB9LAotCi0gICAgY2FuY2VsRWRpdGluZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
aWYgKFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLnNvdXJjZUZyYW1lQWx3YXlzRWRp
dGFibGUuaXNFbmFibGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
dGhpcy5fY2xlYXJJbmNyZW1lbnRhbFVwZGF0ZVRpbWVyKCk7Ci0gICAgICAgIGNvbnN0IG1ham9y
Q2hhbmdlID0gZmFsc2U7Ci0gICAgICAgIGlmICh0aGlzLl92aWV3ZXJTdGF0ZSkKLSAgICAgICAg
ICAgIHRoaXMucmVzb3VyY2Uuc2V0Q29udGVudCh0aGlzLl92aWV3ZXJTdGF0ZS50ZXh0TW9kZWxD
b250ZW50LCBtYWpvckNoYW5nZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5w
cm90b3R5cGUuY2FuY2VsRWRpdGluZy5jYWxsKHRoaXMpOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgZGVsZXRlIHRoaXMuX3NldHRpbmdDb250ZW50OwogICAgIH0sCiAKICAgICBhZnRl
clRleHRDaGFuZ2VkOiBmdW5jdGlvbihvbGRSYW5nZSwgbmV3UmFuZ2UpCkBAIC0xNzUsNiArMTcx
LDEyIEBAIFdlYkluc3BlY3Rvci5FZGl0YWJsZVJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2luY3JlbWVudGFsVXBkYXRlVGlt
ZXIpOwogICAgICAgICBkZWxldGUgdGhpcy5faW5jcmVtZW50YWxVcGRhdGVUaW1lcjsKICAgICB9
LAorCisgICAgX2NvbnRlbnRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IGlmICghdGhpcy5fc2V0dGluZ0NvbnRlbnQpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUuX2NvbnRlbnRDaGFuZ2VkLmNhbGwodGhpcywgZXZl
bnQpOworICAgIH0KIH0KIAogV2ViSW5zcGVjdG9yLkVkaXRhYmxlUmVzb3VyY2VTb3VyY2VGcmFt
ZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUu
cHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2VzUGFuZWwuanMKaW5kZXggYmRhNDU1ZjY3MGU4OWJhMzNlN2RhN2MzMTEzZGRjYmVk
NzNjYThjNi4uNTkyYzQ0MWQ1NmJjOTc0ZjgxNzRlMGI0NzE0ZTljNGJmODM5Nzk2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVs
LmpzCkBAIC01MTMsNiArNTEzLDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3Rv
dHlwZSA9IHsKIAogICAgIF9pbm5lclNob3dWaWV3OiBmdW5jdGlvbih2aWV3KQogICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMudmlzaWJsZVZpZXcgPT09IHZpZXcpCisgICAgICAgICAgICByZXR1cm47
CisKICAgICAgICAgaWYgKHRoaXMudmlzaWJsZVZpZXcpCiAgICAgICAgICAgICB0aGlzLnZpc2li
bGVWaWV3LmRldGFjaCgpOwogCkBAIC0xMzgxLDEzICsxMzg0LDggQEAgV2ViSW5zcGVjdG9yLkZy
YW1lUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgX2FwcGVuZFJldmlzaW9u
OiBmdW5jdGlvbihyZXZpc2lvbikKICAgICB7CiAgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQobmV3
IFdlYkluc3BlY3Rvci5SZXNvdXJjZVJldmlzaW9uVHJlZUVsZW1lbnQodGhpcy5fc3RvcmFnZVBh
bmVsLCByZXZpc2lvbiksIDApOwotICAgICAgICB2YXIgb2xkVmlldyA9IHRoaXMuX3NvdXJjZVZp
ZXc7Ci0gICAgICAgIGlmIChvbGRWaWV3KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRl
ZCB3aGVuIHJlc291cmNlIGNvbnRlbnQgd2FzIGNoYW5nZWQgZnJvbSBzY3JpcHRzIHBhbmVsLgot
ICAgICAgICAgICAgdmFyIG5ld1ZpZXcgPSB0aGlzLl9yZWNyZWF0ZVNvdXJjZVZpZXcoKTsKLSAg
ICAgICAgICAgIGlmIChvbGRWaWV3ID09PSB0aGlzLl9zdG9yYWdlUGFuZWwudmlzaWJsZVZpZXcp
Ci0gICAgICAgICAgICAgICAgdGhpcy5fc3RvcmFnZVBhbmVsLl9zaG93UmVzb3VyY2VWaWV3KHRo
aXMuX3Jlc291cmNlKTsKLSAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5fc291cmNlVmlldyA9
PT0gdGhpcy5fc3RvcmFnZVBhbmVsLnZpc2libGVWaWV3KQorICAgICAgICAgICAgdGhpcy5fc3Rv
cmFnZVBhbmVsLl9zaG93UmVzb3VyY2VWaWV3KHRoaXMuX3Jlc291cmNlKTsKICAgICB9LAogCiAg
ICAgc291cmNlVmlldzogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCA3MTZiZmZkMzBhZmY5ZGQ1NTdmMDgz
ODEzM2VkNGI2ODNlNjkzZjc3Li45OTNjY2I3ZWViOGUzMjNmN2QxNDFlNWUzYjIyZWI2MTY4ODcz
Nzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Njcmlw
dHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Njcmlw
dHNQYW5lbC5qcwpAQCAtMjg0LDEyICsyODQsMTIgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5V
SVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5FZGl0
TW9kZQorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNEaXJ0eQogICAgICAqLwotICAgIHNldFNj
cmlwdFNvdXJjZUlzQmVpbmdFZGl0ZWQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgaW5FZGl0TW9k
ZSkKKyAgICBzZXRTY3JpcHRTb3VyY2VJc0RpcnR5OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGlz
RGlydHkpCiAgICAgewotICAgICAgICB0aGlzLl9maWxlU2VsZWN0b3Iuc2V0U2NyaXB0U291cmNl
SXNEaXJ0eSh1aVNvdXJjZUNvZGUsIGluRWRpdE1vZGUpOwotICAgICAgICB0aGlzLl9lZGl0b3JD
b250YWluZXIuc2V0RmlsZUlzRGlydHkodWlTb3VyY2VDb2RlLCBpbkVkaXRNb2RlKTsKKyAgICAg
ICAgdGhpcy5fZmlsZVNlbGVjdG9yLnNldFNjcmlwdFNvdXJjZUlzRGlydHkodWlTb3VyY2VDb2Rl
LCBpc0RpcnR5KTsKKyAgICAgICAgdGhpcy5fZWRpdG9yQ29udGFpbmVyLnNldEZpbGVJc0RpcnR5
KHVpU291cmNlQ29kZSwgaXNEaXJ0eSk7CiAgICAgfSwKIAogICAgIF9jb25zb2xlTWVzc2FnZXND
bGVhcmVkOiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NldHRpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TZXR0aW5ncy5qcwppbmRleCAxZDBiYzQ0Y2VkNTBlZDBlZWM4Y2EyZmNmNTVkZDgwNDA5ODAw
NTcwLi4yNDAyYTdiOWVkMGZjZTFkZGRkOGNkOWRjMDNjNmY3NmEwYWJiYjVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTE3NCw3ICsx
NzQsNiBAQCBXZWJJbnNwZWN0b3IuRXhwZXJpbWVudHNTZXR0aW5ncyA9IGZ1bmN0aW9uKCkKICAg
ICB0aGlzLl9lbmFibGVkRm9yVGVzdCA9IHt9OwogICAgIAogICAgIC8vIEFkZCBjdXJyZW50bHkg
cnVubmluZyBleHBlcmltZW50cyBoZXJlLgotICAgIHRoaXMuc291cmNlRnJhbWVBbHdheXNFZGl0
YWJsZSA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoInNvdXJjZUZyYW1lQWx3YXlzRWRpdGFibGUi
LCAiTWFrZSByZXNvdXJjZXMgYWx3YXlzIGVkaXRhYmxlIik7CiAgICAgdGhpcy50aW1lbGluZVZl
cnRpY2FsT3ZlcnZpZXcgPSB0aGlzLl9jcmVhdGVFeHBlcmltZW50KCJ0aW1lbGluZVN0YXJ0QXRa
ZXJvIiwgIkVuYWJsZSB2ZXJ0aWNhbCBvdmVydmlldyBtb2RlIGluIHRoZSBUaW1lbGluZSBwYW5l
bCIpOwogICAgIC8vIEZJWE1FOiBFbmFibGUgaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRi
L3Jlc291cmNlcy1wYW5lbC5odG1sIHdoZW4gcmVtb3ZlZCBmcm9tIGV4cGVyaW1lbnRzLgogICAg
IHRoaXMuc2hvd0luZGV4ZWREQiA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoInNob3dJbmRleGVk
REIiLCAiU2hvdyBJbmRleGVkREIgaW4gUmVzb3VyY2VzIHBhbmVsIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwppbmRleCA5ZTIyNWFl
ZmUwZjkwMTdlYTRiNzVhMTRlZTM1ZWViMDc5YWJlZDIzLi44YThkMTQ1OWI4OWMxOTRhOTdhMGVh
MzFmODczNmNlYWQxYTExZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU291cmNlRnJhbWUuanMKQEAgLTQ0LDkgKzQ0LDYgQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZUZyYW1lID0gZnVuY3Rpb24odXJsKQogICAgIHZhciB0ZXh0Vmlld2VyRGVsZWdhdGUgPSBu
ZXcgV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXJEZWxlZ2F0ZUZvclNvdXJjZUZyYW1lKHRoaXMpOwog
ICAgIHRoaXMuX3RleHRWaWV3ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXIodGhpcy5f
dGV4dE1vZGVsLCBXZWJJbnNwZWN0b3IucGxhdGZvcm0oKSwgdGhpcy5fdXJsLCB0ZXh0Vmlld2Vy
RGVsZWdhdGUpOwogCi0gICAgdGhpcy5fZWRpdEJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3Rh
dHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRWRpdCIpLCAiZWRpdC1zb3VyY2Ut
c3RhdHVzLWJhci1pdGVtIik7Ci0gICAgdGhpcy5fZWRpdEJ1dHRvbi5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIHRoaXMuX2VkaXRCdXR0b25DbGlja2VkLmJpbmQodGhpcyksIHRoaXMpOwotCiAg
ICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gLTE7CiAgICAgdGhpcy5fc2VhcmNo
UmVzdWx0cyA9IFtdOwogCkBAIC01NCw4ICs1MSw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZSA9IGZ1bmN0aW9uKHVybCkKICAgICB0aGlzLl9yb3dNZXNzYWdlcyA9IHt9OwogICAgIHRoaXMu
X21lc3NhZ2VCdWJibGVzID0ge307CiAKLSAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRz
U2V0dGluZ3Muc291cmNlRnJhbWVBbHdheXNFZGl0YWJsZS5pc0VuYWJsZWQoKSkKLSAgICAgICAg
dGhpcy5zdGFydEVkaXRpbmcoKTsKKyAgICB0aGlzLl90ZXh0Vmlld2VyLnJlYWRPbmx5ID0gIXRo
aXMuY2FuRWRpdFNvdXJjZSgpOwogfQogCiBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUuRXZlbnRz
ID0gewpAQCAtODYsOCArODIsNiBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBl
ID0gewogICAgIHsKICAgICAgICAgdGhpcy5fZW5zdXJlQ29udGVudExvYWRlZCgpOwogICAgICAg
ICB0aGlzLl90ZXh0Vmlld2VyLnNob3codGhpcy5lbGVtZW50KTsKLSAgICAgICAgaWYgKHRoaXMu
X3dhc0hpZGRlbldoaWxlRWRpdGluZykKLSAgICAgICAgICAgIHRoaXMuc2V0UmVhZE9ubHkoZmFs
c2UpOwogICAgIH0sCiAKICAgICB3aWxsSGlkZTogZnVuY3Rpb24oKQpAQCAtMTAxLDcgKzk1LDYg
QEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgCiAgICAg
ICAgIGlmICghdGhpcy5fdGV4dFZpZXdlci5yZWFkT25seSkKICAgICAgICAgICAgIHRoaXMuX3dh
c0hpZGRlbldoaWxlRWRpdGluZyA9IHRydWU7Ci0gICAgICAgIHRoaXMuc2V0UmVhZE9ubHkodHJ1
ZSk7CiAgICAgfSwKIAogICAgIGZvY3VzOiBmdW5jdGlvbigpCkBAIC0xMDksMTEgKzEwMiw2IEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Rl
eHRWaWV3ZXIuZm9jdXMoKTsKICAgICB9LAogCi0gICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5zb3Vy
Y2VGcmFtZUFsd2F5c0VkaXRhYmxlLmlzRW5hYmxlZCgpID8gW10gOiBbdGhpcy5fZWRpdEJ1dHRv
bi5lbGVtZW50XTsKLSAgICB9LAotCiAgICAgZ2V0IGxvYWRlZCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fbG9hZGVkOwpAQCAtMjE2LDMzICsyMDQsOCBAQCBXZWJJbnNwZWN0b3IuU291
cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICBkZWxldGUgdGhpcy5fbGluZVRvUmV2ZWFs
OwogICAgIH0sCiAKLSAgICBfc2F2ZVZpZXdlclN0YXRlOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB0aGlzLl92aWV3ZXJTdGF0ZSA9IHsKLSAgICAgICAgICAgIHRleHRNb2RlbENvbnRlbnQ6
IHRoaXMuX3RleHRNb2RlbC50ZXh0LAotICAgICAgICAgICAgbWVzc2FnZXM6IHRoaXMuX21lc3Nh
Z2VzLAotICAgICAgICAgICAgZGlmZkxpbmVzOiB0aGlzLl9kaWZmTGluZXMsCi0gICAgICAgIH07
Ci0gICAgfSwKLQotICAgIF9yZXN0b3JlVmlld2VyU3RhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIGlmICghdGhpcy5fdmlld2VyU3RhdGUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIHRoaXMuX3RleHRNb2RlbC5zZXRUZXh0KG51bGwsIHRoaXMuX3ZpZXdlclN0YXRlLnRleHRN
b2RlbENvbnRlbnQpOwotCi0gICAgICAgIHRoaXMuX21lc3NhZ2VzID0gdGhpcy5fdmlld2VyU3Rh
dGUubWVzc2FnZXM7Ci0gICAgICAgIHRoaXMuX2RpZmZMaW5lcyA9IHRoaXMuX3ZpZXdlclN0YXRl
LmRpZmZMaW5lczsKLSAgICAgICAgdGhpcy5fc2V0VGV4dFZpZXdlckRlY29yYXRpb25zKCk7Ci0K
LSAgICAgICAgZGVsZXRlIHRoaXMuX3ZpZXdlclN0YXRlOwotICAgIH0sCi0KICAgICBiZWZvcmVU
ZXh0Q2hhbmdlZDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl92aWV3ZXJT
dGF0ZSkKLSAgICAgICAgICAgIHRoaXMuX3NhdmVWaWV3ZXJTdGF0ZSgpOwotCiAgICAgICAgIFdl
Ykluc3BlY3Rvci5zZWFyY2hDb250cm9sbGVyLmNhbmNlbFNlYXJjaCgpOwogICAgICAgICB0aGlz
LmNsZWFyTWVzc2FnZXMoKTsKICAgICB9LApAQCAtMjgwLDkgKzI0Myw2IEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5FdmVudHMuTG9hZGVkKTsKIAogICAg
ICAgICB0aGlzLl90ZXh0Vmlld2VyLmVuZFVwZGF0ZXMoKTsKLQotICAgICAgICBpZiAoIXRoaXMu
Y2FuRWRpdFNvdXJjZSgpKQotICAgICAgICAgICAgdGhpcy5fZWRpdEJ1dHRvbi5kaXNhYmxlZCA9
IHRydWU7CiAgICAgfSwKIAogICAgIF9zZXRUZXh0Vmlld2VyRGVjb3JhdGlvbnM6IGZ1bmN0aW9u
KCkKQEAgLTUzMCw4OCArNDkwLDI3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIuaW5oZXJpdFNjcm9sbFBvc2l0aW9ucyhz
b3VyY2VGcmFtZS5fdGV4dFZpZXdlcik7CiAgICAgfSwKIAotICAgIF9lZGl0QnV0dG9uQ2xpY2tl
ZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmNhbkVkaXRTb3VyY2UoKSkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBjb25zdCBzaG91bGRTdGFydEVkaXRpbmcg
PSAhdGhpcy5fZWRpdEJ1dHRvbi50b2dnbGVkOwotICAgICAgICBpZiAoc2hvdWxkU3RhcnRFZGl0
aW5nKQotICAgICAgICAgICAgdGhpcy5zdGFydEVkaXRpbmcoKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgdGhpcy5jb21taXRFZGl0aW5nKCk7Ci0gICAgfSwKLQogICAgIGNhbkVkaXRTb3Vy
Y2U6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LAogCi0g
ICAgc3RhcnRFZGl0aW5nOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuY2Fu
RWRpdFNvdXJjZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmICh0
aGlzLl9jb21taXRFZGl0aW5nSW5Qcm9ncmVzcykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICB0aGlzLnNldFJlYWRPbmx5KGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfSwKLQogICAgIGNvbW1pdEVkaXRpbmc6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IGlmICghdGhpcy5fdmlld2VyU3RhdGUpIHsKLSAgICAgICAgICAgIC8vIE5vIGVkaXRpbmcgd2Fz
IGFjdHVhbGx5IGRvbmUuCi0gICAgICAgICAgICB0aGlzLnNldFJlYWRPbmx5KHRydWUpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fY29tbWl0RWRpdGlu
Z0luUHJvZ3Jlc3MgPSB0cnVlOwotICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLnJlYWRPbmx5ID0g
dHJ1ZTsKLSAgICAgICAgdGhpcy5fZWRpdEJ1dHRvbi50b2dnbGVkID0gZmFsc2U7CiAgICAgICAg
IHRoaXMuZWRpdENvbnRlbnQodGhpcy5fdGV4dE1vZGVsLnRleHQsIHRoaXMuZGlkRWRpdENvbnRl
bnQuYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIGRpZEVkaXRDb250ZW50OiBmdW5jdGlvbihl
cnJvcikKICAgICB7Ci0gICAgICAgIHRoaXMuX2NvbW1pdEVkaXRpbmdJblByb2dyZXNzID0gZmFs
c2U7Ci0gICAgICAgIHRoaXMuX3RleHRWaWV3ZXIucmVhZE9ubHkgPSBmYWxzZTsKLQogICAgICAg
ICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGlmIChlcnJvci5tZXNzYWdlKQogICAgICAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5sb2coZXJyb3IubWVzc2FnZSwgV2ViSW5zcGVjdG9yLkNvbnNv
bGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvciwgdHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLQotICAgICAgICBkZWxldGUgdGhpcy5fdmlld2VyU3RhdGU7CiAgICAgfSwK
IAogICAgIGVkaXRDb250ZW50OiBmdW5jdGlvbihuZXdDb250ZW50LCBjYWxsYmFjaykKICAgICB7
Ci0gICAgfSwKLQotICAgIGNhbmNlbEVkaXRpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5zb3VyY2VGcmFtZUFsd2F5c0Vk
aXRhYmxlLmlzRW5hYmxlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
IHRoaXMuX3Jlc3RvcmVWaWV3ZXJTdGF0ZSgpOwotICAgICAgICB0aGlzLnNldFJlYWRPbmx5KHRy
dWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgZ2V0IHJlYWRPbmx5KCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90ZXh0Vmlld2VyLnJlYWRPbmx5OwotICAgIH0s
Ci0KLSAgICBzZXRSZWFkT25seTogZnVuY3Rpb24ocmVhZE9ubHkpCi0gICAgewotICAgICAgICBp
ZiAocmVhZE9ubHkgJiYgV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3Muc291cmNlRnJh
bWVBbHdheXNFZGl0YWJsZS5pc0VuYWJsZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgdGhpcy5fdGV4dFZpZXdlci5yZWFkT25seSA9IHJlYWRPbmx5OwotICAgICAgICB0aGlzLl9l
ZGl0QnV0dG9uLnRvZ2dsZWQgPSAhcmVhZE9ubHk7CiAgICAgfQogfQogCkBAIC02MzAsNyArNTI5
LDYgQEAgV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXJEZWxlZ2F0ZUZvclNvdXJjZUZyYW1lID0gZnVu
Y3Rpb24oc291cmNlRnJhbWUpCiBXZWJJbnNwZWN0b3IuVGV4dFZpZXdlckRlbGVnYXRlRm9yU291
cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgIGRvdWJsZUNsaWNrOiBmdW5jdGlvbihsaW5lTnVt
YmVyKQogICAgIHsKLSAgICAgICAgdGhpcy5fc291cmNlRnJhbWUuc3RhcnRFZGl0aW5nKGxpbmVO
dW1iZXIpOwogICAgIH0sCiAKICAgICBiZWZvcmVUZXh0Q2hhbmdlZDogZnVuY3Rpb24oKQpAQCAt
NjQ4LDExICs1NDYsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dFZpZXdlckRlbGVnYXRlRm9yU291cmNl
RnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zb3VyY2VGcmFtZS5jb21taXRFZGl0
aW5nKCk7CiAgICAgfSwKIAotICAgIGNhbmNlbEVkaXRpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VGcmFtZS5jYW5jZWxFZGl0aW5nKCk7Ci0gICAgfSwK
LQogICAgIHBvcHVsYXRlTGluZUd1dHRlckNvbnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0TWVu
dSwgbGluZU51bWJlcikKICAgICB7CiAgICAgICAgIHRoaXMuX3NvdXJjZUZyYW1lLnBvcHVsYXRl
TGluZUd1dHRlckNvbnRleHRNZW51KGNvbnRleHRNZW51LCBsaW5lTnVtYmVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVsLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9kZWwuanMK
aW5kZXggMDg1M2U2NzliYzA5ZDI5Yzc2YjcxZWE1NzNhNDc1ZTRkNWJiOGE1My4uMjcwMGI0MjRm
N2JkYjZhZWNjNTJlN2YyZDU3NzZkMzgyMTIwODUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9kZWwuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9kZWwuanMKQEAgLTEzMCw3ICsx
MzAsMTAgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICByYW5nZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKDAsIDAsIHRoaXMuX2xp
bmVzLmxlbmd0aCAtIDEsIHRoaXMuX2xpbmVzW3RoaXMuX2xpbmVzLmxlbmd0aCAtIDFdLmxlbmd0
aCk7CiAgICAgICAgICAgICB0aGlzLl9saW5lQnJlYWsgPSAvXHJcbi8udGVzdCh0ZXh0KSA/ICJc
clxuIiA6ICJcbiI7CiAgICAgICAgIH0KLSAgICAgICAgdmFyIGNvbW1hbmQgPSB0aGlzLl9wdXNo
VW5kb2FibGVDb21tYW5kKHJhbmdlKTsKKyAgICAgICAgdmFyIGNvbW1hbmQgPSB0aGlzLl9wdXNo
VW5kb2FibGVDb21tYW5kKHJhbmdlLCB0ZXh0KTsKKyAgICAgICAgaWYgKCFjb21tYW5kKQorICAg
ICAgICAgICAgcmV0dXJuIHJhbmdlOyAvLyBOb29wCisKICAgICAgICAgdmFyIG5ld1JhbmdlID0g
dGhpcy5faW5uZXJTZXRUZXh0KHJhbmdlLCB0ZXh0KTsKICAgICAgICAgY29tbWFuZC5yYW5nZSA9
IG5ld1JhbmdlLmNsb25lKCk7CiAKQEAgLTI1Nyw3ICsyNjAsNyBAQCBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGRlbGV0ZSBhdHRyc1tuYW1l
XTsKICAgICB9LAogCi0gICAgX3B1c2hVbmRvYWJsZUNvbW1hbmQ6IGZ1bmN0aW9uKHJhbmdlKQor
ICAgIF9wdXNoVW5kb2FibGVDb21tYW5kOiBmdW5jdGlvbihyYW5nZSwgdGV4dCkKICAgICB7CiAg
ICAgICAgIHZhciBjb21tYW5kID0gewogICAgICAgICAgICAgdGV4dDogdGhpcy5jb3B5UmFuZ2Uo
cmFuZ2UpLApAQCAtMjY2LDYgKzI2OSw5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgZW5kTGluZTogcmFuZ2Uuc3RhcnRMaW5lLAogICAg
ICAgICAgICAgZW5kQ29sdW1uOiByYW5nZS5zdGFydENvbHVtbgogICAgICAgICB9OworICAgICAg
ICBpZiAodGV4dCA9PT0gY29tbWFuZC50ZXh0KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisK
ICAgICAgICAgaWYgKHRoaXMuX2luVW5kbykKICAgICAgICAgICAgIHRoaXMuX3JlZG9TdGFjay5w
dXNoKGNvbW1hbmQpOwogICAgICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFByb21wdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGV4dFByb21wdC5qcwppbmRleCA4YmEzZGRhNDcyZTU2OWRmZDJlOWJl
ZjJjZjdmNGMyNzA0NjYxNmVkLi5iZWUwMDQzNTNmZjA1Zjk1OTYwNGZkMzIyYjIwMmMzY2E4YTRi
NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQ
cm9tcHQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJv
bXB0LmpzCkBAIC0xNjEsOCArMTYxLDYgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90
eXBlID0gewogCiAgICAgX3N0YXJ0RWRpdGluZzogZnVuY3Rpb24oYmx1ckxpc3RlbmVyKQogICAg
IHsKLSAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IubWFya0JlaW5nRWRpdGVkKHRoaXMuX2VsZW1l
bnQsIHRydWUpKQotICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLl9pc0VkaXRpbmcg
PSB0cnVlOwogICAgICAgICB0aGlzLl9lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImVkaXRpbmciKTsK
ICAgICAgICAgaWYgKGJsdXJMaXN0ZW5lcikgewpAQCAtMTgyLDcgKzE4MCw2IEBAIFdlYkluc3Bl
Y3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2JsdXJMaXN0ZW5lciwgZmFsc2UpOwog
ICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImVkaXRpbmciKTsKICAgICAg
ICAgZGVsZXRlIHRoaXMuX2lzRWRpdGluZzsKLSAgICAgICAgV2ViSW5zcGVjdG9yLm1hcmtCZWlu
Z0VkaXRlZCh0aGlzLl9lbGVtZW50LCBmYWxzZSk7CiAgICAgfSwKIAogICAgIF9yZW1vdmVTdWdn
ZXN0aW9uQWlkczogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9UZXh0Vmlld2VyLmpzCmluZGV4IGE4Y2M3Mzk0NWFiZmI5NmJjZTc4NmY1MGM3ODIx
MDkxMTViNTFiZGYuLjE2ODk2YzVmYTU2YmMxYmIzODA3MDA1ZTY2NzQ0NGRlOWUxODM1ODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdlci5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanMK
QEAgLTI2NywxMCArMjY3LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXIucHJvdG90eXBlID0g
ewogCiAgICAgICAgIHRoaXMuX3Nob3J0Y3V0cyA9IHt9OwogICAgICAgICB2YXIgY29tbWl0RWRp
dGluZyA9IHRoaXMuX2NvbW1pdEVkaXRpbmcuYmluZCh0aGlzKTsKLSAgICAgICAgdmFyIGNhbmNl
bEVkaXRpbmcgPSB0aGlzLl9jYW5jZWxFZGl0aW5nLmJpbmQodGhpcyk7CiAgICAgICAgIHRoaXMu
X3Nob3J0Y3V0c1tXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KCJzIiwgbW9k
aWZpZXJzLkN0cmxPck1ldGEpXSA9IGNvbW1pdEVkaXRpbmc7Ci0gICAgICAgIHRoaXMuX3Nob3J0
Y3V0c1tXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KGtleXMuRW50ZXIuY29k
ZSwgbW9kaWZpZXJzLkN0cmxPck1ldGEpXSA9IGNvbW1pdEVkaXRpbmc7Ci0gICAgICAgIHRoaXMu
X3Nob3J0Y3V0c1tXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KGtleXMuRXNj
LmNvZGUpXSA9IGNhbmNlbEVkaXRpbmc7CiAKICAgICAgICAgdmFyIGhhbmRsZUVudGVyS2V5ID0g
dGhpcy5fbWFpblBhbmVsLmhhbmRsZUVudGVyS2V5LmJpbmQodGhpcy5fbWFpblBhbmVsKTsKICAg
ICAgICAgdGhpcy5fc2hvcnRjdXRzW1dlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VL
ZXkoa2V5cy5FbnRlci5jb2RlLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmll
cnMuTm9uZSldID0gaGFuZGxlRW50ZXJLZXk7CkBAIC0zMjMsMTQgKzMyMCw2IEBAIFdlYkluc3Bl
Y3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fSwKIAotICAgIF9jYW5jZWxFZGl0aW5nOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAo
dGhpcy5yZWFkT25seSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICByZXR1
cm4gdGhpcy5fZGVsZWdhdGUuY2FuY2VsRWRpdGluZygpOwotICAgIH0sCi0KICAgICB3YXNTaG93
bjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnJlYWRPbmx5KQpAQCAtMzYy
LDggKzM1MSw2IEBAIFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyRGVsZWdhdGUucHJvdG90eXBlID0g
ewogCiAgICAgY29tbWl0RWRpdGluZzogZnVuY3Rpb24oKSB7IH0sCiAKLSAgICBjYW5jZWxFZGl0
aW5nOiBmdW5jdGlvbigpIHsgfSwKLQogICAgIHBvcHVsYXRlTGluZUd1dHRlckNvbnRleHRNZW51
OiBmdW5jdGlvbihjb250ZXh0TWVudSwgbGluZU51bWJlcikgeyB9LAogCiAgICAgcG9wdWxhdGVU
ZXh0QXJlYUNvbnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0TWVudSwgbGluZU51bWJlcikgeyB9
LApAQCAtMTA0OSwxOCArMTAzNiwxOSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuYmVnaW5VcGRhdGVzKCk7CiAgICAgICAgIHRo
aXMuX2VudGVyVGV4dENoYW5nZU1vZGUoKTsKIAotICAgICAgICB2YXIgY2FsbGJhY2sgPSBmdW5j
dGlvbihvbGRSYW5nZSwgbmV3UmFuZ2UpIHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sob2xk
UmFuZ2UsIG5ld1JhbmdlKQorICAgICAgICB7CiAgICAgICAgICAgICB0aGlzLl9leGl0VGV4dENo
YW5nZU1vZGUob2xkUmFuZ2UsIG5ld1JhbmdlKTsKICAgICAgICAgICAgIHRoaXMuX2VudGVyVGV4
dENoYW5nZU1vZGUoKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpOworICAgICAgICB9CisgICAgICAg
IHZhciByYW5nZSA9IHJlZG8gPyB0aGlzLl90ZXh0TW9kZWwucmVkbyhjYWxsYmFjay5iaW5kKHRo
aXMpKSA6IHRoaXMuX3RleHRNb2RlbC51bmRvKGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAg
ICB0aGlzLl9leGl0VGV4dENoYW5nZU1vZGUobnVsbCwgbnVsbCk7CisgICAgICAgIHRoaXMuZW5k
VXBkYXRlcygpOwogCi0gICAgICAgIHZhciByYW5nZSA9IHJlZG8gPyB0aGlzLl90ZXh0TW9kZWwu
cmVkbyhjYWxsYmFjaykgOiB0aGlzLl90ZXh0TW9kZWwudW5kbyhjYWxsYmFjayk7CisgICAgICAg
IC8vIFJlc3RvcmUgbG9jYXRpb24gcG9zdC1yZXBhaW50LgogICAgICAgICBpZiAocmFuZ2UpCiAg
ICAgICAgICAgICB0aGlzLl9zZXRDYXJldExvY2F0aW9uKHJhbmdlLmVuZExpbmUsIHJhbmdlLmVu
ZENvbHVtbiwgdHJ1ZSk7CiAKLSAgICAgICAgdGhpcy5fZXhpdFRleHRDaGFuZ2VNb2RlKG51bGws
IG51bGwpOwotICAgICAgICB0aGlzLmVuZFVwZGF0ZXMoKTsKLQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RpbWVsaW5lUGFuZWwuanMKaW5kZXggZTlmOGQ5MjdlYjZhOTA2ZDM2YWEwN2ZhMThiZGQ2MjYx
NmI2MDA0Ny4uNzFjMjJlNGEzMDA4YWY1YjFhODQyMjE4MTllMGVhNDI5NmY0NTNlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5q
cwpAQCAtNzMxLDYgKzczMSwxMCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtFbGVt
ZW50fSBhbmNob3IKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qb3BvdmVyfSBwb3BvdmVy
CisgICAgICovCiAgICAgX3Nob3dQb3BvdmVyOiBmdW5jdGlvbihhbmNob3IsIHBvcG92ZXIpCiAg
ICAgewogICAgICAgICB2YXIgcmVjb3JkID0gYW5jaG9yLnJvdy5fcmVjb3JkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9WaWV3LmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9WaWV3LmpzCmluZGV4IDcxYzFjMmUzZjAwNGJlMjFk
NWM4NTQyOGE2NjRkMmVmZGQ5MTgyZWUuLjQ2OGVlM2UzZjE3ODUyOGNiZWUwNTc3NDdkZThjMDQw
Y2VhNzcwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1ZpZXcuanMK
QEAgLTI3OCw3ICsyNzgsNyBAQCBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoMCkgeyAvKiBkZWJ1Z2dp
bmcgc3VwcG9ydCAqLworICAgICAgICBpZiAod2luZG93LmRlYnVnQ1NTKSB7IC8qIGRlYnVnZ2lu
ZyBzdXBwb3J0ICovCiAgICAgICAgICAgICBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJsaW5rIik7CiAgICAgICAgICAgICBzdHlsZUVsZW1lbnQucmVsID0gInN0eWxlc2hl
ZXQiOwogICAgICAgICAgICAgc3R5bGVFbGVtZW50LnR5cGUgPSAidGV4dC9jc3MiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133055</attachid>
            <date>2012-03-21 09:11:28 -0700</date>
            <delta_ts>2012-03-22 06:05:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81787-20120321201126.patch</filename>
            <type>text/plain</type>
            <size>36344</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDczMTg3NTZmOTc5ZTlk
MTgxNWJjNTc3NjNjN2U2YjFmNmIzZWY3Ny4uNTRiNThlYzZkODQ5ODZlNDQ1NTA0YzliM2IwNTI4
Y2IzZGMyNTUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAzLTIxICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1ha2UgQ1NTIGFuZCBKYXZhU2NyaXB0IGZpbGVzIGVkaXRhYmxlIGJ5IGRlZmF1bHQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTc4NworCisg
ICAgICAgIFRoaXMgY2hhbmdlIGlzIGZpbmFsaXppbmcgdGhlIG1pZ3JhdGlvbiB0byB0aGUgZXhw
ZXJpbWVudCwgZml4aW5nIG1hbnkgdGhpbmdzIGFsb25nIHRoZSB3YXkuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0RldGFpbGVkSGVhcHNob3RWaWV3LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RWxlbWVudHNQYW5lbC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3Jp
cHRTb3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNl
RnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZS5wcm90
b3R5cGUucmVxdWVzdENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRT
b3VyY2VGcmFtZS5wcm90b3R5cGUuYWZ0ZXJUZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZS5iZWZvcmVUZXh0Q2hhbmdlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZS5k
aWRFZGl0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZy
YW1lLnByb3RvdHlwZS5fcmVzb2x2ZU9iamVjdEZvclBvcG92ZXIuc2hvd09iamVjdFBvcG92ZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZS5wcm90b3R5cGUu
X3Jlc29sdmVPYmplY3RGb3JQb3BvdmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2Ny
aXB0U291cmNlRnJhbWUucHJvdG90eXBlLl9vbktleURvd24pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZS5wcm90b3R5cGUuX2xpbmVOdW1iZXJBZnRlckVkaXRp
bmcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UG9wb3ZlckhlbHBlci5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5PYmplY3RQb3BvdmVySGVscGVyLnByb3RvdHlwZS5fc2hvd09iamVj
dFBvcG92ZXIuc2hvd09iamVjdFBvcG92ZXIuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmpl
Y3RQb3BvdmVySGVscGVyLnByb3RvdHlwZS5fc2hvd09iamVjdFBvcG92ZXIpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Q
b3BvdmVySGVscGVyLnByb3RvdHlwZS5pc1BvcG92ZXJWaXNpYmxlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVNvdXJjZUZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJj
ZUZyYW1lLnByb3RvdHlwZS5zdWdnZXN0ZWRGaWxlTmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUuX2NvbnRlbnRDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FZGl0YWJsZVJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlLmNh
bkVkaXRTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVkaXRhYmxlUmVzb3VyY2VTb3Vy
Y2VGcmFtZS5wcm90b3R5cGUuZWRpdENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVk
aXRhYmxlUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUuX2NvbnRlbnRDaGFuZ2VkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5faW5uZXJTaG93Vmlldyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZS5f
YXBwZW5kUmV2aXNpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1Bh
bmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuc2V0
U2NyaXB0U291cmNlSXNEaXJ0eSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0
aW5ncy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHBlcmltZW50c1NldHRpbmdzKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZS5wcm90b3R5cGUud2FzU2hvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1l
LnByb3RvdHlwZS53aWxsSGlkZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUu
cHJvdG90eXBlLmJlZm9yZVRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3Vy
Y2VGcmFtZS5wcm90b3R5cGUuc2V0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291
cmNlRnJhbWUucHJvdG90eXBlLmNvbW1pdEVkaXRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNvdXJjZUZyYW1lLnByb3RvdHlwZS5kaWRFZGl0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLmVkaXRDb250ZW50KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0Vmlld2VyRGVsZWdhdGVGb3JTb3VyY2VGcmFtZS5wcm90b3R5cGUuZG91Ymxl
Q2xpY2spOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5lbmRzV2l0aEJyYWNrZXRS
ZWdleC4pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGV4dFByb21wdC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5fc3RhcnRFZGl0aW5nKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5fc3RvcEVkaXRpbmcp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdlci5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZS5fcmVnaXN0ZXJTaG9ydGN1dHMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLmhhbmRs
ZVVuZG9SZWRvLmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFp
blBhbmVsLnByb3RvdHlwZS5oYW5kbGVVbmRvUmVkbyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZVBhbmVsLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5fZG9Mb2FkQ1NT
KToKKwogMjAxMi0wMy0yMSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmViYXNlbGluZWQgcnVuLWJpbmRpbmdzLXRlc3RzIHJlc3Vs
dHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFp
bGVkSGVhcHNob3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
ZXRhaWxlZEhlYXBzaG90Vmlldy5qcwppbmRleCBjNmIzZDExMTVhOGQ5ZWI5ZGUxNTMyNGY0NmVl
NWI5ZmY5YmEyYzdhLi44Njc2MTczOTU4YmMxZTNjZGQ5MjI2MTg3N2FmODgwYjgzYjY0MjUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVh
cHNob3RWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0
YWlsZWRIZWFwc2hvdFZpZXcuanMKQEAgLTUyNyw3ICs1MjcsNyBAQCBXZWJJbnNwZWN0b3IuRGV0
YWlsZWRIZWFwc2hvdFZpZXcgPSBmdW5jdGlvbihwYXJlbnQsIHByb2ZpbGUpCiAgICAgdGhpcy5o
ZWxwQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oIiIsICJoZWFwc2hv
dC1oZWxwLXN0YXR1cy1iYXItaXRlbSBzdGF0dXMtYmFyLWl0ZW0iKTsKICAgICB0aGlzLmhlbHBC
dXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9oZWxwQ2xpY2tlZC5iaW5kKHRo
aXMpLCBmYWxzZSk7CiAKLSAgICB0aGlzLl9wb3BvdmVySGVscGVyID0gbmV3IFdlYkluc3BlY3Rv
ci5PYmplY3RQb3BvdmVySGVscGVyKHRoaXMuZWxlbWVudCwgdGhpcy5fZ2V0SG92ZXJBbmNob3Iu
YmluZCh0aGlzKSwgdGhpcy5fcmVzb2x2ZU9iamVjdEZvclBvcG92ZXIuYmluZCh0aGlzKSwgbnVs
bCwgdHJ1ZSk7CisgICAgdGhpcy5fcG9wb3ZlckhlbHBlciA9IG5ldyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0UG9wb3ZlckhlbHBlcih0aGlzLmVsZW1lbnQsIHRoaXMuX2dldEhvdmVyQW5jaG9yLmJpbmQo
dGhpcyksIHRoaXMuX3Jlc29sdmVPYmplY3RGb3JQb3BvdmVyLmJpbmQodGhpcyksIHVuZGVmaW5l
ZCwgdHJ1ZSk7CiAKICAgICB0aGlzLl9sb2FkUHJvZmlsZSh0aGlzLl9wcm9maWxlVWlkLCBwcm9m
aWxlQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCA3ZGJjMmM4ZmZmMzA1ZDBlM2Nl
MTc0YTI4YzUwMDA3ZWVjZDczYzU3Li4xOTNlOGRmOTI0OGE4NTI3NWZiMzAwNDJkZDcxNGIwZjIw
NWVhODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Vs
ZW1lbnRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
bGVtZW50c1BhbmVsLmpzCkBAIC0zOTEsNiArMzkxLDEwIEBAIFdlYkluc3BlY3Rvci5FbGVtZW50
c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge0VsZW1lbnR9IGFuY2hvcgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlBv
cG92ZXJ9IHBvcG92ZXIKKyAgICAgKi8KICAgICBfc2hvd1BvcG92ZXI6IGZ1bmN0aW9uKGFuY2hv
ciwgcG9wb3ZlcikKICAgICB7CiAgICAgICAgIHZhciBsaXN0SXRlbSA9IGFuY2hvci5lbmNsb3Np
bmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lSW5BcnJheShbImxpIl0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFt
ZS5qcwppbmRleCAwYjZmYzE4YzJlZWU2YWFlNmE1OGYwZjg0ZTc0MTlhNDBjY2E4YzE2Li44ZTEw
ZWY4ZTI2NzUzNTg2Y2QzNjFlODIzZTA1NzM3ZjJiNThiNmNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFtZS5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFt
ZS5qcwpAQCAtNDgsNiArNDgsNyBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1l
ID0gZnVuY3Rpb24oc2NyaXB0c1BhbmVsLCBtb2RlbCwgdWlTb3VyY2VDb2RlKQogICAgICAgICAg
ICAgdGhpcy5fZ2V0UG9wb3ZlckFuY2hvci5iaW5kKHRoaXMpLCB0aGlzLl9yZXNvbHZlT2JqZWN0
Rm9yUG9wb3Zlci5iaW5kKHRoaXMpLCB0aGlzLl9vbkhpZGVQb3BvdmVyLmJpbmQodGhpcyksIHRy
dWUpOwogCiAgICAgdGhpcy50ZXh0Vmlld2VyLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2Vkb3duIiwgdGhpcy5fb25Nb3VzZURvd24uYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgdGhpcy50
ZXh0Vmlld2VyLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX29uS2V5
RG93bi5iaW5kKHRoaXMpLCB0cnVlKTsKICAgICB0aGlzLl91aVNvdXJjZUNvZGUuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlLkV2ZW50cy5Db250ZW50Q2hhbmdlZCwg
dGhpcy5fb25Db250ZW50Q2hhbmdlZCwgdGhpcyk7CiAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5FdmVudHMuTG9hZGVkLCB0aGlzLl9vblRleHRWaWV3
ZXJDb250ZW50TG9hZGVkLCB0aGlzKTsKIH0KQEAgLTY4LDcgKzY5LDEyIEBAIFdlYkluc3BlY3Rv
ci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgIC8vIFNvdXJjZUZyYW1l
IG92ZXJyaWRlcwogICAgIHJlcXVlc3RDb250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7
Ci0gICAgICAgIHRoaXMuX3VpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChjYWxsYmFjayk7Cisg
ICAgICAgIGZ1bmN0aW9uIG15Y2FsbGJhY2sobWltZVR5cGUsIGNvbnRlbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHRoaXMuX29yaWdpbmFsQ29udGVudCA9IGNvbnRlbnQ7CisgICAgICAgICAg
ICBjYWxsYmFjayhtaW1lVHlwZSwgY29udGVudCk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5f
dWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50KG15Y2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAg
fSwKIAogICAgIGNhbkVkaXRTb3VyY2U6IGZ1bmN0aW9uKCkKQEAgLTgzLDYgKzg5LDcgQEAgV2Vi
SW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAKICAgICBlZGl0
Q29udGVudDogZnVuY3Rpb24obmV3Q29udGVudCwgY2FsbGJhY2spCiAgICAgeworICAgICAgICB0
aGlzLl9vcmlnaW5hbENvbnRlbnQgPSBuZXdDb250ZW50OwogICAgICAgICB0aGlzLl9tb2RlbC5z
ZXRTY3JpcHRTb3VyY2UodGhpcy5fdWlTb3VyY2VDb2RlLCBuZXdDb250ZW50LCBjYWxsYmFjayk7
CiAgICAgfSwKIApAQCAtOTMsMTUgKzEwMCw2IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291
cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnJlcXVlc3RDb250ZW50KHRoaXMu
c2V0Q29udGVudC5iaW5kKHRoaXMpKTsKICAgICB9LAogCi0gICAgc2V0UmVhZE9ubHk6IGZ1bmN0
aW9uKHJlYWRPbmx5KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXJIZWxwZXIgJiYg
IXJlYWRPbmx5KQotICAgICAgICAgICAgdGhpcy5fcG9wb3ZlckhlbHBlci5oaWRlUG9wb3Zlcigp
OwotICAgICAgICBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLnNldFJlYWRPbmx5
LmNhbGwodGhpcywgcmVhZE9ubHkpOwotICAgICAgICBpZiAocmVhZE9ubHkpCi0gICAgICAgICAg
ICB0aGlzLl9zY3JpcHRzUGFuZWwuc2V0U2NyaXB0U291cmNlSXNCZWluZ0VkaXRlZCh0aGlzLl91
aVNvdXJjZUNvZGUsIGZhbHNlKTsKLSAgICB9LAotCiAgICAgcG9wdWxhdGVMaW5lR3V0dGVyQ29u
dGV4dE1lbnU6IGZ1bmN0aW9uKGNvbnRleHRNZW51LCBsaW5lTnVtYmVyKQogICAgIHsKICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVj
dG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJDb250aW51ZSB0byBoZXJlIiA6ICJDb250
aW51ZSB0byBIZXJlIiksIHRoaXMuX21vZGVsLmNvbnRpbnVlVG9MaW5lLmJpbmQodGhpcy5fbW9k
ZWwsIHRoaXMuX3VpU291cmNlQ29kZSwgbGluZU51bWJlcikpOwpAQCAtMTg2LDYgKzE4NCw4IEBA
IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgICAgIHRoaXMuYWRkQnJlYWtwb2ludChuZXdMaW5lTnVtYmVyLCBicmVha3BvaW50LnJl
c29sdmVkLCBicmVha3BvaW50LmNvbmRpdGlvbmFsLCBicmVha3BvaW50LmVuYWJsZWQpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fc2NyaXB0c1BhbmVsLnNldFNj
cmlwdFNvdXJjZUlzRGlydHkodGhpcy5fdWlTb3VyY2VDb2RlLCB0aGlzLnRleHRNb2RlbC5jb3B5
UmFuZ2UoKSAhPT0gdGhpcy5fb3JpZ2luYWxDb250ZW50KTsKICAgICB9LAogCiAgICAgYmVmb3Jl
VGV4dENoYW5nZWQ6IGZ1bmN0aW9uKCkKQEAgLTE5NSw0MiArMTk1LDEwIEBAIFdlYkluc3BlY3Rv
ci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGV4
ZWN1dGlvbkxpbmVOdW1iZXI6IHRoaXMuX2V4ZWN1dGlvbkxpbmVOdW1iZXIsCiAgICAgICAgICAg
ICAgICAgYnJlYWtwb2ludHM6IHRoaXMuX2JyZWFrcG9pbnRzCiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB0aGlzLl9zY3JpcHRzUGFuZWwuc2V0U2NyaXB0U291cmNlSXNCZWluZ0VkaXRlZCh0
aGlzLl91aVNvdXJjZUNvZGUsIHRydWUpOwogICAgICAgICB9CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuYmVmb3JlVGV4dENoYW5nZWQuY2FsbCh0aGlzKTsKICAg
ICB9LAogCi0gICAgY2FuY2VsRWRpdGluZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYg
KFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLnNvdXJjZUZyYW1lQWx3YXlzRWRpdGFi
bGUuaXNFbmFibGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5jYW5jZWxFZGl0aW5nLmNhbGwodGhpcyk7
Ci0KLSAgICAgICAgaWYgKCF0aGlzLl9qYXZhU2NyaXB0U291cmNlRnJhbWVTdGF0ZSkKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGlmICh0eXBlb2YgdGhpcy5famF2YVNjcmlw
dFNvdXJjZUZyYW1lU3RhdGUuZXhlY3V0aW9uTGluZU51bWJlciA9PT0gIm51bWJlciIpIHsKLSAg
ICAgICAgICAgIHRoaXMuY2xlYXJFeGVjdXRpb25MaW5lKCk7Ci0gICAgICAgICAgICB0aGlzLnNl
dEV4ZWN1dGlvbkxpbmUodGhpcy5famF2YVNjcmlwdFNvdXJjZUZyYW1lU3RhdGUuZXhlY3V0aW9u
TGluZU51bWJlcik7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgb2xkQnJlYWtwb2ludHMgPSB0
aGlzLl9icmVha3BvaW50czsKLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludHMgPSB7fTsKLSAgICAg
ICAgZm9yICh2YXIgbGluZU51bWJlciBpbiBvbGRCcmVha3BvaW50cykKLSAgICAgICAgICAgIHRo
aXMucmVtb3ZlQnJlYWtwb2ludChOdW1iZXIobGluZU51bWJlcikpOwotCi0gICAgICAgIHZhciBu
ZXdCcmVha3BvaW50cyA9IHRoaXMuX2phdmFTY3JpcHRTb3VyY2VGcmFtZVN0YXRlLmJyZWFrcG9p
bnRzOwotICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVyIGluIG5ld0JyZWFrcG9pbnRzKSB7Ci0g
ICAgICAgICAgICBsaW5lTnVtYmVyID0gTnVtYmVyKGxpbmVOdW1iZXIpOwotICAgICAgICAgICAg
dmFyIGJyZWFrcG9pbnQgPSBuZXdCcmVha3BvaW50c1tsaW5lTnVtYmVyXTsKLSAgICAgICAgICAg
IHRoaXMuYWRkQnJlYWtwb2ludChsaW5lTnVtYmVyLCBicmVha3BvaW50LnJlc29sdmVkLCBicmVh
a3BvaW50LmNvbmRpdGlvbmFsLCBicmVha3BvaW50LmVuYWJsZWQpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZGVsZXRlIHRoaXMuX2phdmFTY3JpcHRTb3VyY2VGcmFtZVN0YXRlOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9LAotCiAgICAgZGlkRWRpdENvbnRlbnQ6IGZ1bmN0aW9uKGVycm9y
KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5kaWRF
ZGl0Q29udGVudC5jYWxsKHRoaXMsIGVycm9yKTsKQEAgLTI1MCw3ICsyMTgsNyBAQCBXZWJJbnNw
ZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZh
ciBicmVha3BvaW50ID0gbmV3QnJlYWtwb2ludHNbbGluZU51bWJlcl07CiAgICAgICAgICAgICB0
aGlzLl9zZXRCcmVha3BvaW50KE51bWJlcihsaW5lTnVtYmVyKSwgYnJlYWtwb2ludC5jb25kaXRp
b24sIGJyZWFrcG9pbnQuZW5hYmxlZCk7CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5fc2NyaXB0
c1BhbmVsLnNldFNjcmlwdFNvdXJjZUlzQmVpbmdFZGl0ZWQodGhpcy5fdWlTb3VyY2VDb2RlLCBm
YWxzZSk7CisgICAgICAgIHRoaXMuX3NjcmlwdHNQYW5lbC5zZXRTY3JpcHRTb3VyY2VJc0RpcnR5
KHRoaXMuX3VpU291cmNlQ29kZSwgZmFsc2UpOwogICAgICAgICBkZWxldGUgdGhpcy5famF2YVNj
cmlwdFNvdXJjZUZyYW1lU3RhdGU7CiAgICAgfSwKIApAQCAtMzAzLDEwICsyNzEsNiBAQCBXZWJJ
bnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKIAogICAgIF9yZXNv
bHZlT2JqZWN0Rm9yUG9wb3ZlcjogZnVuY3Rpb24oZWxlbWVudCwgc2hvd0NhbGxiYWNrLCBvYmpl
Y3RHcm91cE5hbWUpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMucmVhZE9ubHkpIHsKLSAgICAg
ICAgICAgIHRoaXMuX3BvcG92ZXJIZWxwZXIuaGlkZVBvcG92ZXIoKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQogICAgICAgICB0aGlzLl9oaWdobGlnaHRFbGVtZW50ID0gdGhpcy5f
aGlnaGxpZ2h0RXhwcmVzc2lvbihlbGVtZW50KTsKIAogICAgICAgICBmdW5jdGlvbiBzaG93T2Jq
ZWN0UG9wb3ZlcihyZXN1bHQsIHdhc1Rocm93bikKQEAgLTMxNSw3ICsyNzksNyBAQCBXZWJJbnNw
ZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICB0aGlzLl9wb3BvdmVySGVscGVyLmhpZGVQb3BvdmVyKCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc2hvd0NhbGxiYWNrKFdlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocmVzdWx0KSwgd2FzVGhyb3duKTsKKyAgICAgICAg
ICAgIHNob3dDYWxsYmFjayhXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHJl
c3VsdCksIHdhc1Rocm93biwgdGhpcy5faGlnaGxpZ2h0RWxlbWVudCk7CiAgICAgICAgICAgICAv
LyBQb3BvdmVyIG1heSBoYXZlIGJlZW4gcmVtb3ZlZCBieSBzaG93Q2FsbGJhY2soKS4KICAgICAg
ICAgICAgIGlmICh0aGlzLl9oaWdobGlnaHRFbGVtZW50KQogICAgICAgICAgICAgICAgIHRoaXMu
X2hpZ2hsaWdodEVsZW1lbnQuYWRkU3R5bGVDbGFzcygic291cmNlLWZyYW1lLWV2YWwtZXhwcmVz
c2lvbiIpOwpAQCAtNDE5LDYgKzM4MywxNiBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJj
ZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAg
ICB9LAogCisgICAgX29uS2V5RG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBp
ZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlUrMDAxQiIpIHsgLy8gRXNjYXBlIGtleQorICAg
ICAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXJIZWxwZXIuaXNQb3BvdmVyVmlzaWJsZSgpKSB7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fcG9wb3ZlckhlbHBlci5oaWRlUG9wb3ZlcigpOworICAgICAg
ICAgICAgICAgIGV2ZW50LmNvbnN1bWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0sCisKICAgICBfZWRpdEJyZWFrcG9pbnRDb25kaXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIs
IGNvbmRpdGlvbiwgY2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlzLl9jb25kaXRpb25FbGVt
ZW50ID0gdGhpcy5fY3JlYXRlQ29uZGl0aW9uRWxlbWVudChsaW5lTnVtYmVyKTsKQEAgLTQ4NCw3
ICs0NTgsNyBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9
IHsKICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPT09IG9sZFJhbmdlLnN0YXJ0TGluZSkgewogICAg
ICAgICAgICAgdmFyIHdoaXRlU3BhY2VzUmVnZXggPSAvXltcc1x4QTBdKiQvOwogICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGxpbmVOdW1iZXIgKyBpIDw9IG5ld1JhbmdlLmVuZExpbmU7ICsr
aSkgewotICAgICAgICAgICAgICAgIGlmICghd2hpdGVTcGFjZXNSZWdleC50ZXN0KHRoaXMuX3Rl
eHRNb2RlbC5saW5lKGxpbmVOdW1iZXIgKyBpKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdo
aXRlU3BhY2VzUmVnZXgudGVzdCh0aGlzLnRleHRNb2RlbC5saW5lKGxpbmVOdW1iZXIgKyBpKSkp
IHsKICAgICAgICAgICAgICAgICAgICAgc2hpZnRPZmZzZXQgPSBpOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCmluZGV4IGRkM2E4NGRlNGY1YzZjYThl
ZDI0ZWY0ZDc2ZDY1ZWQyMTRmMGE2MGMuLmNjNjcxNzk5MTA1NDQ0ZjhhNDEzMjM1MDg5OTg0MjQ4
NDM4OTExNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1BhbmVsLmpzCkBAIC05MTcsNiArOTE3LDEwIEBAIFdlYkluc3BlY3Rvci5OZXR3b3Jr
TG9nVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiByZXNvdXJjZSAmJiByZXNvdXJj
ZS50aW1pbmcgPyBhbmNob3IgOiBudWxsOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge0VsZW1lbnR9IGFuY2hvcgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlBvcG92ZXJ9
IHBvcG92ZXIKKyAgICAgKi8KICAgICBfc2hvd1BvcG92ZXI6IGZ1bmN0aW9uKGFuY2hvciwgcG9w
b3ZlcikKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IGFuY2hvci5wYXJlbnRFbGVtZW50
LnJlc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9PYmplY3RQb3BvdmVySGVscGVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9PYmplY3RQb3BvdmVySGVscGVyLmpzCmluZGV4IGY0YTA5OWQ4NmUwNjBiMDY2NzFkMWI4
MjBiODlkMzQ4YmMwNzk0NGEuLjU4ODYyMTNkNzNkNDJiZDA1MmIwYjIzNTJjMzM0Yjg5NGVlMzdm
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0
UG9wb3ZlckhlbHBlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L09iamVjdFBvcG92ZXJIZWxwZXIuanMKQEAgLTMxLDYgKzMxLDExIEBACiAvKioKICAqIEBjb25z
dHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Qb3BvdmVySGVscGVyfQorICogQHBh
cmFtIHtFbGVtZW50fSBwYW5lbEVsZW1lbnQKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oRWxlbWVudCwg
RXZlbnQpOkVsZW1lbnR8dW5kZWZpbmVkfSBnZXRBbmNob3IKKyAqIEBwYXJhbSB7ZnVuY3Rpb24o
RWxlbWVudCwgZnVuY3Rpb24oV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCwgYm9vbGVhbiwgRWxl
bWVudD0pOnVuZGVmaW5lZCwgc3RyaW5nKTp1bmRlZmluZWR9IHF1ZXJ5T2JqZWN0CisgKiBAcGFy
YW0ge2Z1bmN0aW9uKCk9fSBvbkhpZGUKKyAqIEBwYXJhbSB7Ym9vbGVhbj19IGRpc2FibGVPbkNs
aWNrCiAgKi8KIFdlYkluc3BlY3Rvci5PYmplY3RQb3BvdmVySGVscGVyID0gZnVuY3Rpb24ocGFu
ZWxFbGVtZW50LCBnZXRBbmNob3IsIHF1ZXJ5T2JqZWN0LCBvbkhpZGUsIGRpc2FibGVPbkNsaWNr
KQogewpAQCAtNDIsOSArNDcsMTggQEAgV2ViSW5zcGVjdG9yLk9iamVjdFBvcG92ZXJIZWxwZXIg
PSBmdW5jdGlvbihwYW5lbEVsZW1lbnQsIGdldEFuY2hvciwgcXVlcnlPYmplY3QKIH07CiAKIFdl
Ykluc3BlY3Rvci5PYmplY3RQb3BvdmVySGVscGVyLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5Qb3BvdmVyfSBwb3BvdmVyCisgICAgICovCiAgICAgX3Nob3dPYmplY3RQb3BvdmVyOiBmdW5j
dGlvbihlbGVtZW50LCBwb3BvdmVyKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gc2hvd09iamVj
dFBvcG92ZXIocmVzdWx0LCB3YXNUaHJvd24pCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3R9IHJlc3VsdAorICAgICAgICAgKiBAcGFyYW0g
e2Jvb2xlYW59IHdhc1Rocm93bgorICAgICAgICAgKiBAcGFyYW0ge0VsZW1lbnQ9fSBhbmNob3JP
dmVycmlkZQorICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gc2hvd09iamVjdFBvcG92ZXIo
cmVzdWx0LCB3YXNUaHJvd24sIGFuY2hvck92ZXJyaWRlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAocG9wb3Zlci5kaXNwb3NlZCkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01Miw2
ICs2Niw5IEBAIFdlYkluc3BlY3Rvci5PYmplY3RQb3BvdmVySGVscGVyLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgICAgICB0aGlzLmhpZGVQb3BvdmVyKCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgYW5jaG9yRWxlbWVudCA9IGFu
Y2hvck92ZXJyaWRlIHx8IGVsZW1lbnQ7CisKICAgICAgICAgICAgIHZhciBwb3BvdmVyQ29udGVu
dEVsZW1lbnQgPSBudWxsOwogICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlICE9PSAib2JqZWN0
IikgewogICAgICAgICAgICAgICAgIHBvcG92ZXJDb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInNwYW4iKTsKQEAgLTc5LDE0ICs5NiwxNCBAQCBXZWJJbnNwZWN0b3IuT2Jq
ZWN0UG9wb3ZlckhlbHBlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRhaW5lci5hcHBlbmRDaGlsZChwb3BvdmVyQ29udGVudEVsZW1lbnQpOwogCi0gICAgICAg
ICAgICAgICAgICAgICAgICBwb3BvdmVyLnNob3coY29udGFpbmVyLCBlbGVtZW50KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHBvcG92ZXIuc2hvdyhjb250YWluZXIsIGFuY2hvckVsZW1lbnQp
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIERlYnVnZ2VyQWdl
bnQuZ2V0RnVuY3Rpb25EZXRhaWxzKHJlc3VsdC5vYmplY3RJZCwgZGlkR2V0RGV0YWlscy5iaW5k
KHRoaXMpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT09ICJzdHJpbmciKQogICAgICAgICAg
ICAgICAgICAgICBwb3BvdmVyQ29udGVudEVsZW1lbnQudGV4dENvbnRlbnQgPSAiXCIiICsgcG9w
b3ZlckNvbnRlbnRFbGVtZW50LnRleHRDb250ZW50ICsgIlwiIjsKLSAgICAgICAgICAgICAgICBw
b3BvdmVyLnNob3cocG9wb3ZlckNvbnRlbnRFbGVtZW50LCBlbGVtZW50KTsKKyAgICAgICAgICAg
ICAgICBwb3BvdmVyLnNob3cocG9wb3ZlckNvbnRlbnRFbGVtZW50LCBhbmNob3JFbGVtZW50KTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcG9wb3ZlckNvbnRlbnRFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAKQEAgLTEwOCw3ICsxMjUsNyBA
QCBXZWJJbnNwZWN0b3IuT2JqZWN0UG9wb3ZlckhlbHBlci5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgICAgICAgICBjb25zdCBwb3BvdmVyV2lkdGggPSAzMDA7CiAgICAgICAgICAgICAgICAgY29u
c3QgcG9wb3ZlckhlaWdodCA9IDI1MDsKLSAgICAgICAgICAgICAgICBwb3BvdmVyLnNob3cocG9w
b3ZlckNvbnRlbnRFbGVtZW50LCBlbGVtZW50LCBwb3BvdmVyV2lkdGgsIHBvcG92ZXJIZWlnaHQp
OworICAgICAgICAgICAgICAgIHBvcG92ZXIuc2hvdyhwb3BvdmVyQ29udGVudEVsZW1lbnQsIGFu
Y2hvckVsZW1lbnQsIHBvcG92ZXJXaWR0aCwgcG9wb3ZlckhlaWdodCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5fcXVlcnlPYmplY3QoZWxlbWVudCwgc2hvd09iamVj
dFBvcG92ZXIuYmluZCh0aGlzKSwgdGhpcy5fcG9wb3Zlck9iamVjdEdyb3VwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qcwppbmRleCAxYTg0YzMwMzM2
ZWE1MmZjYjBkZjE1ZmIzYmI4ZTIyNTc5NmRlOWVkLi4yNGU5YTc5MTRlN2NlYmZjMmJmNGFmNTBh
YmZjZGNmNWJjMDJjZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1BvcG92ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Qb3BvdmVyLmpzCkBAIC0xOTAsNiArMTkwLDkgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJv
dG90eXBlID0gewogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtFbGVtZW50fSBw
YW5lbEVsZW1lbnQKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oRWxlbWVudCwgRXZlbnQpOkVsZW1lbnR8
dW5kZWZpbmVkfSBnZXRBbmNob3IKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oRWxlbWVudCwgV2ViSW5z
cGVjdG9yLlBvcG92ZXIpOnVuZGVmaW5lZH0gc2hvd1BvcG92ZXIKICAqIEBwYXJhbSB7ZnVuY3Rp
b24oKT19IG9uSGlkZQogICogQHBhcmFtIHtib29sZWFuPX0gZGlzYWJsZU9uQ2xpY2sKICAqLwpA
QCAtMjYxLDYgKzI2NCwxMSBAQCBXZWJJbnNwZWN0b3IuUG9wb3ZlckhlbHBlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KICAgICB9LAogCisgICAgaXNQb3BvdmVyVmlzaWJsZTogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICEhdGhpcy5fcG9wb3ZlcjsKKyAgICB9LAorCiAgICAg
aGlkZVBvcG92ZXI6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Jlc2V0SG92ZXJU
aW1lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlVmlldy5qcwppbmRleCAzZDM2ODZjYTJjMzcxYzk5YTMyYjdmZDQ4NTI1M2FhNzk2ZTg5Njlh
Li5iYmNhOTQ0MDRjNjY0YzU0NmY0ZTcwZDA4YmYyNDY3ZDhiYmI4YTA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcwpAQCAtODQs
NiArODQsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZSA9IGZ1bmN0aW9uKHJl
c291cmNlKQogewogICAgIHRoaXMuX3Jlc291cmNlID0gcmVzb3VyY2U7CiAgICAgV2ViSW5zcGVj
dG9yLlNvdXJjZUZyYW1lLmNhbGwodGhpcywgcmVzb3VyY2UudXJsKTsKKyAgICB0aGlzLl9yZXNv
dXJjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudHMuUmV2aXNp
b25BZGRlZCwgdGhpcy5fY29udGVudENoYW5nZWQsIHRoaXMpOwogfQogCiAvL1RoaXMgaXMgYSBt
YXAgZnJvbSByZXNvdXJjZS50eXBlIHRvIG1pbWUgdHlwZXMKQEAgLTExOCw2ICsxMTksMTEgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgIHN1Z2dl
c3RlZEZpbGVOYW1lOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5yZXNv
dXJjZS5kaXNwbGF5TmFtZTsKKyAgICB9LAorCisgICAgX2NvbnRlbnRDaGFuZ2VkOiBmdW5jdGlv
bihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuc2V0Q29udGVudChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VTb3VyY2VGcmFtZS5taW1lVHlwZUZvclJlc291cmNlW3RoaXMuX3Jlc291cmNlXSwgdGhp
cy5fcmVzb3VyY2UuY29udGVudCk7CiAgICAgfQogfQogCkBAIC0xMzUsMjcgKzE0MSwxNyBAQCBX
ZWJJbnNwZWN0b3IuRWRpdGFibGVSZXNvdXJjZVNvdXJjZUZyYW1lID0gZnVuY3Rpb24ocmVzb3Vy
Y2UpCiBXZWJJbnNwZWN0b3IuRWRpdGFibGVSZXNvdXJjZVNvdXJjZUZyYW1lLnByb3RvdHlwZSA9
IHsKICAgICBjYW5FZGl0U291cmNlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4g
dGhpcy5yZXNvdXJjZS5pc0VkaXRhYmxlKCkgJiYgIXRoaXMuX2NvbW1pdEVkaXRpbmdJblByb2dy
ZXNzOworICAgICAgICAvL0ZJWE1FOiBtYWtlIGxpdmUgZWRpdCBzdG9wIHVzaW5nIHJlc291cmNl
IGNvbnRlbnQgYmluZGluZy4KKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlLmlzRWRpdGFi
bGUoKSAmJiB0aGlzLl9yZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlw
ZS5TdHlsZXNoZWV0OwogICAgIH0sCiAKICAgICBlZGl0Q29udGVudDogZnVuY3Rpb24obmV3VGV4
dCwgY2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlzLl9jbGVhckluY3JlbWVudGFsVXBkYXRl
VGltZXIoKTsKICAgICAgICAgdmFyIG1ham9yQ2hhbmdlID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5f
c2V0dGluZ0NvbnRlbnQgPSB0cnVlOwogICAgICAgICB0aGlzLnJlc291cmNlLnNldENvbnRlbnQo
bmV3VGV4dCwgbWFqb3JDaGFuZ2UsIGNhbGxiYWNrKTsKLSAgICB9LAotCi0gICAgY2FuY2VsRWRp
dGluZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmlt
ZW50c1NldHRpbmdzLnNvdXJjZUZyYW1lQWx3YXlzRWRpdGFibGUuaXNFbmFibGVkKCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5fY2xlYXJJbmNyZW1lbnRhbFVw
ZGF0ZVRpbWVyKCk7Ci0gICAgICAgIGNvbnN0IG1ham9yQ2hhbmdlID0gZmFsc2U7Ci0gICAgICAg
IGlmICh0aGlzLl92aWV3ZXJTdGF0ZSkKLSAgICAgICAgICAgIHRoaXMucmVzb3VyY2Uuc2V0Q29u
dGVudCh0aGlzLl92aWV3ZXJTdGF0ZS50ZXh0TW9kZWxDb250ZW50LCBtYWpvckNoYW5nZSk7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuY2FuY2VsRWRpdGluZy5j
YWxsKHRoaXMpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3Nl
dHRpbmdDb250ZW50OwogICAgIH0sCiAKICAgICBhZnRlclRleHRDaGFuZ2VkOiBmdW5jdGlvbihv
bGRSYW5nZSwgbmV3UmFuZ2UpCkBAIC0xNzUsNiArMTcxLDEyIEBAIFdlYkluc3BlY3Rvci5FZGl0
YWJsZVJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICAgICAgY2xlYXJU
aW1lb3V0KHRoaXMuX2luY3JlbWVudGFsVXBkYXRlVGltZXIpOwogICAgICAgICBkZWxldGUgdGhp
cy5faW5jcmVtZW50YWxVcGRhdGVUaW1lcjsKICAgICB9LAorCisgICAgX2NvbnRlbnRDaGFuZ2Vk
OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fc2V0dGluZ0NvbnRl
bnQpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5
cGUuX2NvbnRlbnRDaGFuZ2VkLmNhbGwodGhpcywgZXZlbnQpOworICAgIH0KIH0KIAogV2ViSW5z
cGVjdG9yLkVkaXRhYmxlUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLlJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXgg
YmRhNDU1ZjY3MGU4OWJhMzNlN2RhN2MzMTEzZGRjYmVkNzNjYThjNi4uNTkyYzQ0MWQ1NmJjOTc0
ZjgxNzRlMGI0NzE0ZTljNGJmODM5Nzk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC01MTMsNiArNTEzLDkgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9pbm5lclNo
b3dWaWV3OiBmdW5jdGlvbih2aWV3KQogICAgIHsKKyAgICAgICAgaWYgKHRoaXMudmlzaWJsZVZp
ZXcgPT09IHZpZXcpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgaWYgKHRoaXMudmlz
aWJsZVZpZXcpCiAgICAgICAgICAgICB0aGlzLnZpc2libGVWaWV3LmRldGFjaCgpOwogCkBAIC0x
MzgxLDEzICsxMzg0LDggQEAgV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgX2FwcGVuZFJldmlzaW9uOiBmdW5jdGlvbihyZXZpc2lvbikKICAg
ICB7CiAgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQobmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVJl
dmlzaW9uVHJlZUVsZW1lbnQodGhpcy5fc3RvcmFnZVBhbmVsLCByZXZpc2lvbiksIDApOwotICAg
ICAgICB2YXIgb2xkVmlldyA9IHRoaXMuX3NvdXJjZVZpZXc7Ci0gICAgICAgIGlmIChvbGRWaWV3
KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCB3aGVuIHJlc291cmNlIGNvbnRlbnQg
d2FzIGNoYW5nZWQgZnJvbSBzY3JpcHRzIHBhbmVsLgotICAgICAgICAgICAgdmFyIG5ld1ZpZXcg
PSB0aGlzLl9yZWNyZWF0ZVNvdXJjZVZpZXcoKTsKLSAgICAgICAgICAgIGlmIChvbGRWaWV3ID09
PSB0aGlzLl9zdG9yYWdlUGFuZWwudmlzaWJsZVZpZXcpCi0gICAgICAgICAgICAgICAgdGhpcy5f
c3RvcmFnZVBhbmVsLl9zaG93UmVzb3VyY2VWaWV3KHRoaXMuX3Jlc291cmNlKTsKLSAgICAgICAg
fQorICAgICAgICBpZiAodGhpcy5fc291cmNlVmlldyA9PT0gdGhpcy5fc3RvcmFnZVBhbmVsLnZp
c2libGVWaWV3KQorICAgICAgICAgICAgdGhpcy5fc3RvcmFnZVBhbmVsLl9zaG93UmVzb3VyY2VW
aWV3KHRoaXMuX3Jlc291cmNlKTsKICAgICB9LAogCiAgICAgc291cmNlVmlldzogZnVuY3Rpb24o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRz
UGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5l
bC5qcwppbmRleCA3MTZiZmZkMzBhZmY5ZGQ1NTdmMDgzODEzM2VkNGI2ODNlNjkzZjc3Li45OTNj
Y2I3ZWViOGUzMjNmN2QxNDFlNWUzYjIyZWI2MTY4ODczNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMjg0LDEyICsy
ODQsMTIgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAv
KioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29k
ZQotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5FZGl0TW9kZQorICAgICAqIEBwYXJhbSB7Ym9v
bGVhbn0gaXNEaXJ0eQogICAgICAqLwotICAgIHNldFNjcmlwdFNvdXJjZUlzQmVpbmdFZGl0ZWQ6
IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgaW5FZGl0TW9kZSkKKyAgICBzZXRTY3JpcHRTb3VyY2VJ
c0RpcnR5OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGlzRGlydHkpCiAgICAgewotICAgICAgICB0
aGlzLl9maWxlU2VsZWN0b3Iuc2V0U2NyaXB0U291cmNlSXNEaXJ0eSh1aVNvdXJjZUNvZGUsIGlu
RWRpdE1vZGUpOwotICAgICAgICB0aGlzLl9lZGl0b3JDb250YWluZXIuc2V0RmlsZUlzRGlydHko
dWlTb3VyY2VDb2RlLCBpbkVkaXRNb2RlKTsKKyAgICAgICAgdGhpcy5fZmlsZVNlbGVjdG9yLnNl
dFNjcmlwdFNvdXJjZUlzRGlydHkodWlTb3VyY2VDb2RlLCBpc0RpcnR5KTsKKyAgICAgICAgdGhp
cy5fZWRpdG9yQ29udGFpbmVyLnNldEZpbGVJc0RpcnR5KHVpU291cmNlQ29kZSwgaXNEaXJ0eSk7
CiAgICAgfSwKIAogICAgIF9jb25zb2xlTWVzc2FnZXNDbGVhcmVkOiBmdW5jdGlvbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCAxZDBi
YzQ0Y2VkNTBlZDBlZWM4Y2EyZmNmNTVkZDgwNDA5ODAwNTcwLi4yNDAyYTdiOWVkMGZjZTFkZGRk
OGNkOWRjMDNjNmY3NmEwYWJiYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTE3NCw3ICsxNzQsNiBAQCBXZWJJbnNwZWN0b3IuRXhw
ZXJpbWVudHNTZXR0aW5ncyA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9lbmFibGVkRm9yVGVzdCA9
IHt9OwogICAgIAogICAgIC8vIEFkZCBjdXJyZW50bHkgcnVubmluZyBleHBlcmltZW50cyBoZXJl
LgotICAgIHRoaXMuc291cmNlRnJhbWVBbHdheXNFZGl0YWJsZSA9IHRoaXMuX2NyZWF0ZUV4cGVy
aW1lbnQoInNvdXJjZUZyYW1lQWx3YXlzRWRpdGFibGUiLCAiTWFrZSByZXNvdXJjZXMgYWx3YXlz
IGVkaXRhYmxlIik7CiAgICAgdGhpcy50aW1lbGluZVZlcnRpY2FsT3ZlcnZpZXcgPSB0aGlzLl9j
cmVhdGVFeHBlcmltZW50KCJ0aW1lbGluZVN0YXJ0QXRaZXJvIiwgIkVuYWJsZSB2ZXJ0aWNhbCBv
dmVydmlldyBtb2RlIGluIHRoZSBUaW1lbGluZSBwYW5lbCIpOwogICAgIC8vIEZJWE1FOiBFbmFi
bGUgaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL3Jlc291cmNlcy1wYW5lbC5odG1sIHdo
ZW4gcmVtb3ZlZCBmcm9tIGV4cGVyaW1lbnRzLgogICAgIHRoaXMuc2hvd0luZGV4ZWREQiA9IHRo
aXMuX2NyZWF0ZUV4cGVyaW1lbnQoInNob3dJbmRleGVkREIiLCAiU2hvdyBJbmRleGVkREIgaW4g
UmVzb3VyY2VzIHBhbmVsIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Tb3VyY2VGcmFtZS5qcwppbmRleCA5ZTIyNWFlZmUwZjkwMTdlYTRiNzVhMTRlZTM1ZWVi
MDc5YWJlZDIzLi44YThkMTQ1OWI4OWMxOTRhOTdhMGVhMzFmODczNmNlYWQxYTExZGFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMK
QEAgLTQ0LDkgKzQ0LDYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lID0gZnVuY3Rpb24odXJs
KQogICAgIHZhciB0ZXh0Vmlld2VyRGVsZWdhdGUgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRWaWV3
ZXJEZWxlZ2F0ZUZvclNvdXJjZUZyYW1lKHRoaXMpOwogICAgIHRoaXMuX3RleHRWaWV3ZXIgPSBu
ZXcgV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXIodGhpcy5fdGV4dE1vZGVsLCBXZWJJbnNwZWN0b3Iu
cGxhdGZvcm0oKSwgdGhpcy5fdXJsLCB0ZXh0Vmlld2VyRGVsZWdhdGUpOwogCi0gICAgdGhpcy5f
ZWRpdEJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRWRpdCIpLCAiZWRpdC1zb3VyY2Utc3RhdHVzLWJhci1pdGVtIik7Ci0gICAg
dGhpcy5fZWRpdEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2VkaXRCdXR0
b25DbGlja2VkLmJpbmQodGhpcyksIHRoaXMpOwotCiAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJl
c3VsdEluZGV4ID0gLTE7CiAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IFtdOwogCkBAIC01NCw4
ICs1MSw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZSA9IGZ1bmN0aW9uKHVybCkKICAgICB0
aGlzLl9yb3dNZXNzYWdlcyA9IHt9OwogICAgIHRoaXMuX21lc3NhZ2VCdWJibGVzID0ge307CiAK
LSAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3Muc291cmNlRnJhbWVBbHdh
eXNFZGl0YWJsZS5pc0VuYWJsZWQoKSkKLSAgICAgICAgdGhpcy5zdGFydEVkaXRpbmcoKTsKKyAg
ICB0aGlzLl90ZXh0Vmlld2VyLnJlYWRPbmx5ID0gIXRoaXMuY2FuRWRpdFNvdXJjZSgpOwogfQog
CiBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUuRXZlbnRzID0gewpAQCAtODYsOCArODIsNiBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhp
cy5fZW5zdXJlQ29udGVudExvYWRlZCgpOwogICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLnNob3co
dGhpcy5lbGVtZW50KTsKLSAgICAgICAgaWYgKHRoaXMuX3dhc0hpZGRlbldoaWxlRWRpdGluZykK
LSAgICAgICAgICAgIHRoaXMuc2V0UmVhZE9ubHkoZmFsc2UpOwogICAgIH0sCiAKICAgICB3aWxs
SGlkZTogZnVuY3Rpb24oKQpAQCAtMTAxLDcgKzk1LDYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZy
YW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgCiAgICAgICAgIGlmICghdGhpcy5fdGV4dFZpZXdl
ci5yZWFkT25seSkKICAgICAgICAgICAgIHRoaXMuX3dhc0hpZGRlbldoaWxlRWRpdGluZyA9IHRy
dWU7Ci0gICAgICAgIHRoaXMuc2V0UmVhZE9ubHkodHJ1ZSk7CiAgICAgfSwKIAogICAgIGZvY3Vz
OiBmdW5jdGlvbigpCkBAIC0xMDksMTEgKzEwMiw2IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIuZm9jdXMoKTsKICAgICB9
LAogCi0gICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5zb3VyY2VGcmFtZUFsd2F5c0VkaXRhYmxlLmlz
RW5hYmxlZCgpID8gW10gOiBbdGhpcy5fZWRpdEJ1dHRvbi5lbGVtZW50XTsKLSAgICB9LAotCiAg
ICAgZ2V0IGxvYWRlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGVkOwpAQCAt
MjE2LDMzICsyMDQsOCBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewog
ICAgICAgICBkZWxldGUgdGhpcy5fbGluZVRvUmV2ZWFsOwogICAgIH0sCiAKLSAgICBfc2F2ZVZp
ZXdlclN0YXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl92aWV3ZXJTdGF0ZSA9
IHsKLSAgICAgICAgICAgIHRleHRNb2RlbENvbnRlbnQ6IHRoaXMuX3RleHRNb2RlbC50ZXh0LAot
ICAgICAgICAgICAgbWVzc2FnZXM6IHRoaXMuX21lc3NhZ2VzLAotICAgICAgICAgICAgZGlmZkxp
bmVzOiB0aGlzLl9kaWZmTGluZXMsCi0gICAgICAgIH07Ci0gICAgfSwKLQotICAgIF9yZXN0b3Jl
Vmlld2VyU3RhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fdmlld2Vy
U3RhdGUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX3RleHRNb2RlbC5zZXRU
ZXh0KG51bGwsIHRoaXMuX3ZpZXdlclN0YXRlLnRleHRNb2RlbENvbnRlbnQpOwotCi0gICAgICAg
IHRoaXMuX21lc3NhZ2VzID0gdGhpcy5fdmlld2VyU3RhdGUubWVzc2FnZXM7Ci0gICAgICAgIHRo
aXMuX2RpZmZMaW5lcyA9IHRoaXMuX3ZpZXdlclN0YXRlLmRpZmZMaW5lczsKLSAgICAgICAgdGhp
cy5fc2V0VGV4dFZpZXdlckRlY29yYXRpb25zKCk7Ci0KLSAgICAgICAgZGVsZXRlIHRoaXMuX3Zp
ZXdlclN0YXRlOwotICAgIH0sCi0KICAgICBiZWZvcmVUZXh0Q2hhbmdlZDogZnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl92aWV3ZXJTdGF0ZSkKLSAgICAgICAgICAgIHRoaXMu
X3NhdmVWaWV3ZXJTdGF0ZSgpOwotCiAgICAgICAgIFdlYkluc3BlY3Rvci5zZWFyY2hDb250cm9s
bGVyLmNhbmNlbFNlYXJjaCgpOwogICAgICAgICB0aGlzLmNsZWFyTWVzc2FnZXMoKTsKICAgICB9
LApAQCAtMjgwLDkgKzI0Myw2IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5T
b3VyY2VGcmFtZS5FdmVudHMuTG9hZGVkKTsKIAogICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmVu
ZFVwZGF0ZXMoKTsKLQotICAgICAgICBpZiAoIXRoaXMuY2FuRWRpdFNvdXJjZSgpKQotICAgICAg
ICAgICAgdGhpcy5fZWRpdEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7CiAgICAgfSwKIAogICAgIF9z
ZXRUZXh0Vmlld2VyRGVjb3JhdGlvbnM6IGZ1bmN0aW9uKCkKQEAgLTUzMCw4OCArNDkwLDI3IEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Rl
eHRWaWV3ZXIuaW5oZXJpdFNjcm9sbFBvc2l0aW9ucyhzb3VyY2VGcmFtZS5fdGV4dFZpZXdlcik7
CiAgICAgfSwKIAotICAgIF9lZGl0QnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgaWYgKCF0aGlzLmNhbkVkaXRTb3VyY2UoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBjb25zdCBzaG91bGRTdGFydEVkaXRpbmcgPSAhdGhpcy5fZWRpdEJ1dHRvbi50b2dn
bGVkOwotICAgICAgICBpZiAoc2hvdWxkU3RhcnRFZGl0aW5nKQotICAgICAgICAgICAgdGhpcy5z
dGFydEVkaXRpbmcoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5jb21taXRFZGl0
aW5nKCk7Ci0gICAgfSwKLQogICAgIGNhbkVkaXRTb3VyY2U6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LAogCi0gICAgc3RhcnRFZGl0aW5nOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuY2FuRWRpdFNvdXJjZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmICh0aGlzLl9jb21taXRFZGl0aW5nSW5Qcm9n
cmVzcykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICB0aGlzLnNldFJlYWRP
bmx5KGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQogICAgIGNvbW1pdEVk
aXRpbmc6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fdmlld2VyU3RhdGUp
IHsKLSAgICAgICAgICAgIC8vIE5vIGVkaXRpbmcgd2FzIGFjdHVhbGx5IGRvbmUuCi0gICAgICAg
ICAgICB0aGlzLnNldFJlYWRPbmx5KHRydWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhpcy5fY29tbWl0RWRpdGluZ0luUHJvZ3Jlc3MgPSB0cnVlOwotICAg
ICAgICB0aGlzLl90ZXh0Vmlld2VyLnJlYWRPbmx5ID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fZWRp
dEJ1dHRvbi50b2dnbGVkID0gZmFsc2U7CiAgICAgICAgIHRoaXMuZWRpdENvbnRlbnQodGhpcy5f
dGV4dE1vZGVsLnRleHQsIHRoaXMuZGlkRWRpdENvbnRlbnQuYmluZCh0aGlzKSk7CiAgICAgfSwK
IAogICAgIGRpZEVkaXRDb250ZW50OiBmdW5jdGlvbihlcnJvcikKICAgICB7Ci0gICAgICAgIHRo
aXMuX2NvbW1pdEVkaXRpbmdJblByb2dyZXNzID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX3RleHRW
aWV3ZXIucmVhZE9ubHkgPSBmYWxzZTsKLQogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAg
ICAgIGlmIChlcnJvci5tZXNzYWdlKQogICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5sb2co
ZXJyb3IubWVzc2FnZSwgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5F
cnJvciwgdHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICBk
ZWxldGUgdGhpcy5fdmlld2VyU3RhdGU7CiAgICAgfSwKIAogICAgIGVkaXRDb250ZW50OiBmdW5j
dGlvbihuZXdDb250ZW50LCBjYWxsYmFjaykKICAgICB7Ci0gICAgfSwKLQotICAgIGNhbmNlbEVk
aXRpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJp
bWVudHNTZXR0aW5ncy5zb3VyY2VGcmFtZUFsd2F5c0VkaXRhYmxlLmlzRW5hYmxlZCgpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHRoaXMuX3Jlc3RvcmVWaWV3ZXJTdGF0
ZSgpOwotICAgICAgICB0aGlzLnNldFJlYWRPbmx5KHRydWUpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9LAotCi0gICAgZ2V0IHJlYWRPbmx5KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLl90ZXh0Vmlld2VyLnJlYWRPbmx5OwotICAgIH0sCi0KLSAgICBzZXRSZWFkT25seTogZnVu
Y3Rpb24ocmVhZE9ubHkpCi0gICAgewotICAgICAgICBpZiAocmVhZE9ubHkgJiYgV2ViSW5zcGVj
dG9yLmV4cGVyaW1lbnRzU2V0dGluZ3Muc291cmNlRnJhbWVBbHdheXNFZGl0YWJsZS5pc0VuYWJs
ZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5yZWFk
T25seSA9IHJlYWRPbmx5OwotICAgICAgICB0aGlzLl9lZGl0QnV0dG9uLnRvZ2dsZWQgPSAhcmVh
ZE9ubHk7CiAgICAgfQogfQogCkBAIC02MzAsNyArNTI5LDYgQEAgV2ViSW5zcGVjdG9yLlRleHRW
aWV3ZXJEZWxlZ2F0ZUZvclNvdXJjZUZyYW1lID0gZnVuY3Rpb24oc291cmNlRnJhbWUpCiBXZWJJ
bnNwZWN0b3IuVGV4dFZpZXdlckRlbGVnYXRlRm9yU291cmNlRnJhbWUucHJvdG90eXBlID0gewog
ICAgIGRvdWJsZUNsaWNrOiBmdW5jdGlvbihsaW5lTnVtYmVyKQogICAgIHsKLSAgICAgICAgdGhp
cy5fc291cmNlRnJhbWUuc3RhcnRFZGl0aW5nKGxpbmVOdW1iZXIpOwogICAgIH0sCiAKICAgICBi
ZWZvcmVUZXh0Q2hhbmdlZDogZnVuY3Rpb24oKQpAQCAtNjQ4LDExICs1NDYsNiBAQCBXZWJJbnNw
ZWN0b3IuVGV4dFZpZXdlckRlbGVnYXRlRm9yU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl9zb3VyY2VGcmFtZS5jb21taXRFZGl0aW5nKCk7CiAgICAgfSwKIAotICAgIGNh
bmNlbEVkaXRpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zb3Vy
Y2VGcmFtZS5jYW5jZWxFZGl0aW5nKCk7Ci0gICAgfSwKLQogICAgIHBvcHVsYXRlTGluZUd1dHRl
ckNvbnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0TWVudSwgbGluZU51bWJlcikKICAgICB7CiAg
ICAgICAgIHRoaXMuX3NvdXJjZUZyYW1lLnBvcHVsYXRlTGluZUd1dHRlckNvbnRleHRNZW51KGNv
bnRleHRNZW51LCBsaW5lTnVtYmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9kZWwuanMKaW5kZXggMDg1M2U2NzliYzA5ZDI5Yzc2
YjcxZWE1NzNhNDc1ZTRkNWJiOGE1My4uMjcwMGI0MjRmN2JkYjZhZWNjNTJlN2YyZDU3NzZkMzgy
MTIwODUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9U
ZXh0RWRpdG9yTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UZXh0RWRpdG9yTW9kZWwuanMKQEAgLTEzMCw3ICsxMzAsMTAgQEAgV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3JNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByYW5nZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuVGV4dFJhbmdlKDAsIDAsIHRoaXMuX2xpbmVzLmxlbmd0aCAtIDEsIHRoaXMuX2xp
bmVzW3RoaXMuX2xpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCk7CiAgICAgICAgICAgICB0aGlzLl9s
aW5lQnJlYWsgPSAvXHJcbi8udGVzdCh0ZXh0KSA/ICJcclxuIiA6ICJcbiI7CiAgICAgICAgIH0K
LSAgICAgICAgdmFyIGNvbW1hbmQgPSB0aGlzLl9wdXNoVW5kb2FibGVDb21tYW5kKHJhbmdlKTsK
KyAgICAgICAgdmFyIGNvbW1hbmQgPSB0aGlzLl9wdXNoVW5kb2FibGVDb21tYW5kKHJhbmdlLCB0
ZXh0KTsKKyAgICAgICAgaWYgKCFjb21tYW5kKQorICAgICAgICAgICAgcmV0dXJuIHJhbmdlOyAv
LyBOb29wCisKICAgICAgICAgdmFyIG5ld1JhbmdlID0gdGhpcy5faW5uZXJTZXRUZXh0KHJhbmdl
LCB0ZXh0KTsKICAgICAgICAgY29tbWFuZC5yYW5nZSA9IG5ld1JhbmdlLmNsb25lKCk7CiAKQEAg
LTI1Nyw3ICsyNjAsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIGRlbGV0ZSBhdHRyc1tuYW1lXTsKICAgICB9LAogCi0gICAgX3B1c2hV
bmRvYWJsZUNvbW1hbmQ6IGZ1bmN0aW9uKHJhbmdlKQorICAgIF9wdXNoVW5kb2FibGVDb21tYW5k
OiBmdW5jdGlvbihyYW5nZSwgdGV4dCkKICAgICB7CiAgICAgICAgIHZhciBjb21tYW5kID0gewog
ICAgICAgICAgICAgdGV4dDogdGhpcy5jb3B5UmFuZ2UocmFuZ2UpLApAQCAtMjY2LDYgKzI2OSw5
IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgZW5kTGluZTogcmFuZ2Uuc3RhcnRMaW5lLAogICAgICAgICAgICAgZW5kQ29sdW1uOiByYW5n
ZS5zdGFydENvbHVtbgogICAgICAgICB9OworICAgICAgICBpZiAodGV4dCA9PT0gY29tbWFuZC50
ZXh0KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKICAgICAgICAgaWYgKHRoaXMuX2luVW5k
bykKICAgICAgICAgICAgIHRoaXMuX3JlZG9TdGFjay5wdXNoKGNvbW1hbmQpOwogICAgICAgICBl
bHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4
dFByb21wdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFByb21w
dC5qcwppbmRleCA4YmEzZGRhNDcyZTU2OWRmZDJlOWJlZjJjZjdmNGMyNzA0NjYxNmVkLi5iZWUw
MDQzNTNmZjA1Zjk1OTYwNGZkMzIyYjIwMmMzY2E4YTRiNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzCkBAIC0xNjEsOCArMTYxLDYg
QEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogCiAgICAgX3N0YXJ0RWRp
dGluZzogZnVuY3Rpb24oYmx1ckxpc3RlbmVyKQogICAgIHsKLSAgICAgICAgaWYgKCFXZWJJbnNw
ZWN0b3IubWFya0JlaW5nRWRpdGVkKHRoaXMuX2VsZW1lbnQsIHRydWUpKQotICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB0aGlzLl9pc0VkaXRpbmcgPSB0cnVlOwogICAgICAgICB0aGlzLl9l
bGVtZW50LmFkZFN0eWxlQ2xhc3MoImVkaXRpbmciKTsKICAgICAgICAgaWYgKGJsdXJMaXN0ZW5l
cikgewpAQCAtMTgyLDcgKzE4MCw2IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1
ciIsIHRoaXMuX2JsdXJMaXN0ZW5lciwgZmFsc2UpOwogICAgICAgICB0aGlzLl9lbGVtZW50LnJl
bW92ZVN0eWxlQ2xhc3MoImVkaXRpbmciKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX2lzRWRpdGlu
ZzsKLSAgICAgICAgV2ViSW5zcGVjdG9yLm1hcmtCZWluZ0VkaXRlZCh0aGlzLl9lbGVtZW50LCBm
YWxzZSk7CiAgICAgfSwKIAogICAgIF9yZW1vdmVTdWdnZXN0aW9uQWlkczogZnVuY3Rpb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0Vmlld2Vy
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzCmlu
ZGV4IGE4Y2M3Mzk0NWFiZmI5NmJjZTc4NmY1MGM3ODIxMDkxMTViNTFiZGYuLjEwYzdmN2ZmNGZj
NjE5ZmE3YTIwNGJkNjFiOWIwZTVmMzYxY2Y5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanMKQEAgLTI2NywxMCArMjY3LDcgQEAgV2Vi
SW5zcGVjdG9yLlRleHRWaWV3ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX3Nob3J0
Y3V0cyA9IHt9OwogICAgICAgICB2YXIgY29tbWl0RWRpdGluZyA9IHRoaXMuX2NvbW1pdEVkaXRp
bmcuYmluZCh0aGlzKTsKLSAgICAgICAgdmFyIGNhbmNlbEVkaXRpbmcgPSB0aGlzLl9jYW5jZWxF
ZGl0aW5nLmJpbmQodGhpcyk7CiAgICAgICAgIHRoaXMuX3Nob3J0Y3V0c1tXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KCJzIiwgbW9kaWZpZXJzLkN0cmxPck1ldGEpXSA9IGNv
bW1pdEVkaXRpbmc7Ci0gICAgICAgIHRoaXMuX3Nob3J0Y3V0c1tXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5tYWtlS2V5KGtleXMuRW50ZXIuY29kZSwgbW9kaWZpZXJzLkN0cmxPck1ldGEp
XSA9IGNvbW1pdEVkaXRpbmc7Ci0gICAgICAgIHRoaXMuX3Nob3J0Y3V0c1tXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5KGtleXMuRXNjLmNvZGUpXSA9IGNhbmNlbEVkaXRpbmc7
CiAKICAgICAgICAgdmFyIGhhbmRsZUVudGVyS2V5ID0gdGhpcy5fbWFpblBhbmVsLmhhbmRsZUVu
dGVyS2V5LmJpbmQodGhpcy5fbWFpblBhbmVsKTsKICAgICAgICAgdGhpcy5fc2hvcnRjdXRzW1dl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXkoa2V5cy5FbnRlci5jb2RlLCBXZWJJ
bnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllcnMuTm9uZSldID0gaGFuZGxlRW50ZXJL
ZXk7CkBAIC0zMjMsMTQgKzMyMCw2IEBAIFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIAotICAgIF9jYW5jZWxFZGl0aW5n
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5yZWFkT25seSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUuY2FuY2Vs
RWRpdGluZygpOwotICAgIH0sCi0KICAgICB3YXNTaG93bjogZnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLnJlYWRPbmx5KQpAQCAtMzYyLDggKzM1MSw2IEBAIFdlYkluc3BlY3Rv
ci5UZXh0Vmlld2VyRGVsZWdhdGUucHJvdG90eXBlID0gewogCiAgICAgY29tbWl0RWRpdGluZzog
ZnVuY3Rpb24oKSB7IH0sCiAKLSAgICBjYW5jZWxFZGl0aW5nOiBmdW5jdGlvbigpIHsgfSwKLQog
ICAgIHBvcHVsYXRlTGluZUd1dHRlckNvbnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0TWVudSwg
bGluZU51bWJlcikgeyB9LAogCiAgICAgcG9wdWxhdGVUZXh0QXJlYUNvbnRleHRNZW51OiBmdW5j
dGlvbihjb250ZXh0TWVudSwgbGluZU51bWJlcikgeyB9LApAQCAtMTAyMiw3ICsxMDA5LDEyIEBA
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAg
ICAgICAgIHRoaXMuY2xlYXJMaW5lSGlnaGxpZ2h0KCk7CiAgICAgICAgIHRoaXMuX2hpZ2hsaWdo
dGVkTGluZSA9IGxpbmVOdW1iZXI7Ci0gICAgICAgIHRoaXMucmV2ZWFsTGluZShsaW5lTnVtYmVy
KTsKKworICAgICAgICBpZiAoIXRoaXMuX3JlYWRPbmx5KQorICAgICAgICAgICAgdGhpcy5fcmVz
dG9yZVNlbGVjdGlvbihuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShsaW5lTnVtYmVyLCAwLCBs
aW5lTnVtYmVyLCAwKSwgdHJ1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMucmV2
ZWFsTGluZShsaW5lTnVtYmVyKTsKKwogICAgICAgICB0aGlzLmFkZERlY29yYXRpb24obGluZU51
bWJlciwgIndlYmtpdC1oaWdobGlnaHRlZC1saW5lIik7CiAgICAgfSwKIApAQCAtMTA0OSwxOCAr
MTA0MSwxOSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuYmVnaW5VcGRhdGVzKCk7CiAgICAgICAgIHRoaXMuX2VudGVyVGV4dENo
YW5nZU1vZGUoKTsKIAotICAgICAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbihvbGRSYW5nZSwg
bmV3UmFuZ2UpIHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sob2xkUmFuZ2UsIG5ld1Jhbmdl
KQorICAgICAgICB7CiAgICAgICAgICAgICB0aGlzLl9leGl0VGV4dENoYW5nZU1vZGUob2xkUmFu
Z2UsIG5ld1JhbmdlKTsKICAgICAgICAgICAgIHRoaXMuX2VudGVyVGV4dENoYW5nZU1vZGUoKTsK
LSAgICAgICAgfS5iaW5kKHRoaXMpOworICAgICAgICB9CisgICAgICAgIHZhciByYW5nZSA9IHJl
ZG8gPyB0aGlzLl90ZXh0TW9kZWwucmVkbyhjYWxsYmFjay5iaW5kKHRoaXMpKSA6IHRoaXMuX3Rl
eHRNb2RlbC51bmRvKGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9leGl0VGV4
dENoYW5nZU1vZGUobnVsbCwgbnVsbCk7CisgICAgICAgIHRoaXMuZW5kVXBkYXRlcygpOwogCi0g
ICAgICAgIHZhciByYW5nZSA9IHJlZG8gPyB0aGlzLl90ZXh0TW9kZWwucmVkbyhjYWxsYmFjaykg
OiB0aGlzLl90ZXh0TW9kZWwudW5kbyhjYWxsYmFjayk7CisgICAgICAgIC8vIFJlc3RvcmUgbG9j
YXRpb24gcG9zdC1yZXBhaW50LgogICAgICAgICBpZiAocmFuZ2UpCiAgICAgICAgICAgICB0aGlz
Ll9zZXRDYXJldExvY2F0aW9uKHJhbmdlLmVuZExpbmUsIHJhbmdlLmVuZENvbHVtbiwgdHJ1ZSk7
CiAKLSAgICAgICAgdGhpcy5fZXhpdFRleHRDaGFuZ2VNb2RlKG51bGwsIG51bGwpOwotICAgICAg
ICB0aGlzLmVuZFVwZGF0ZXMoKTsKLQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFu
ZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwu
anMKaW5kZXggZTlmOGQ5MjdlYjZhOTA2ZDM2YWEwN2ZhMThiZGQ2MjYxNmI2MDA0Ny4uNzFjMjJl
NGEzMDA4YWY1YjFhODQyMjE4MTllMGVhNDI5NmY0NTNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtNzMxLDYgKzcz
MSwxMCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtFbGVtZW50fSBhbmNob3IKKyAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qb3BvdmVyfSBwb3BvdmVyCisgICAgICovCiAgICAg
X3Nob3dQb3BvdmVyOiBmdW5jdGlvbihhbmNob3IsIHBvcG92ZXIpCiAgICAgewogICAgICAgICB2
YXIgcmVjb3JkID0gYW5jaG9yLnJvdy5fcmVjb3JkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9WaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9WaWV3LmpzCmluZGV4IDcxYzFjMmUzZjAwNGJlMjFkNWM4NTQyOGE2NjRkMmVm
ZGQ5MTgyZWUuLjQ2OGVlM2UzZjE3ODUyOGNiZWUwNTc3NDdkZThjMDQwY2VhNzcwOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVmlldy5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1ZpZXcuanMKQEAgLTI3OCw3ICsyNzgs
NyBAQCBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoMCkgeyAvKiBkZWJ1Z2dpbmcgc3VwcG9ydCAqLwor
ICAgICAgICBpZiAod2luZG93LmRlYnVnQ1NTKSB7IC8qIGRlYnVnZ2luZyBzdXBwb3J0ICovCiAg
ICAgICAgICAgICBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7
CiAgICAgICAgICAgICBzdHlsZUVsZW1lbnQucmVsID0gInN0eWxlc2hlZXQiOwogICAgICAgICAg
ICAgc3R5bGVFbGVtZW50LnR5cGUgPSAidGV4dC9jc3MiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133241</attachid>
            <date>2012-03-22 06:05:49 -0700</date>
            <delta_ts>2012-03-22 06:14:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81787-20120322170547.patch</filename>
            <type>text/plain</type>
            <size>25954</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTkwY2Q1ZmNjZTM4MTU1
YzczNTQwYjg3NWE4OGM2NzI5NTAyYmI0YS4uNWU0NDRlOWZlYjY1ZGE1NjJjMTAyYmNiZjQ1Yjky
YTVhOGYzNmMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAzLTIyICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1ha2UgQ1NTIGFuZCBKYXZhU2NyaXB0IGZpbGVzIGVkaXRhYmxlIGJ5IGRlZmF1bHQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTc4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IHJlbW92ZXMgY2FuY2VsRWRpdGluZyBhbmQgc2V0UmVhZE9ubHkgY2FwYWJpbGl0aWVzIGZyb20g
c291cmNlIGZyYW1lLgorICAgICAgICBJIHJlbW92ZXMgZGJsY2xpY2sgaGFuZGxlciBhcyB3ZWxs
IHNpbmNlIG9uZSBkb2VzIG5vdCBuZWVkIHRvIGVudGVyIGVkaXRpbmcgbW9kZS4KKyAgICAgICAg
SXQgYWxzbyBlc3RhYmxpc2hlcyBwcm9wZXIgY29udGVudCBkaXNwYXRjaGluZyBzbyB0aGF0IHZp
ZXdzIGFyZSB1cGRhdGVkIHdpdGggdGhlCisgICAgICAgIHJlc291cmNlIGNvbnRlbnQuIEFsbCB0
aGVzZSBhcmUgaW50ZXItZGVwZW5kZW50LCBuZWVkIHRvIGJlIGxhbmRlZCBzaW11bHRhbmVvdXNs
eS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZUZyYW1l
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZS5yZXF1ZXN0
Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnBy
b3RvdHlwZS5hZnRlclRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2Ny
aXB0U291cmNlRnJhbWUucHJvdG90eXBlLmJlZm9yZVRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlLmRpZEVkaXRDb250ZW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBl
Ll9saW5lTnVtYmVyQWZ0ZXJFZGl0aW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZy
YW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1lLnByb3RvdHlw
ZS5zdWdnZXN0ZWRGaWxlTmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3Vy
Y2VGcmFtZS5wcm90b3R5cGUuX2NvbnRlbnRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5FZGl0YWJsZVJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlLmNhbkVkaXRTb3VyY2UpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkVkaXRhYmxlUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5
cGUuZWRpdENvbnRlbnQuY2FsbGJhY2tXcmFwcGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5F
ZGl0YWJsZVJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlLmVkaXRDb250ZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FZGl0YWJsZVJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlLl9j
b250ZW50Q2hhbmdlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQ
YW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUu
X2lubmVyU2hvd1ZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVl
RWxlbWVudC5wcm90b3R5cGUuX2FwcGVuZFJldmlzaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwucHJvdG90eXBlLnNldFNjcmlwdFNvdXJjZUlzRGlydHkpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXhwZXJp
bWVudHNTZXR0aW5ncyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFt
ZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLndhc1Nob3duKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUud2lsbEhpZGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5iZWZvcmVUZXh0Q2hhbmdlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLnNldENvbnRlbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5jb21taXRFZGl0aW5nKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuZGlkRWRpdENvbnRlbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5lZGl0Q29udGVu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLl9zdGFydEVkaXRpbmcpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLl9zdG9wRWRpdGluZyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRWaWV3ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXIu
cHJvdG90eXBlLl9yZWdpc3RlclNob3J0Y3V0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuaGFuZGxlRW50ZXJLZXkpOgorCiAyMDEyLTAzLTIx
ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gdGltaW5nIGZ1bmN0aW9ucyBhcmUgZ2V0dGluZyBpbmNvcnJlY3RseSBhcHBsaWVkIGZvciBh
Y2NlbGVyYXRlZCBjc3MgdHJhbnNpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMKaW5kZXggNmJj
NTQzZTc3MGFkMWMxMmFkNTBjMmY0MzFkYjUyZDljZDE5OGY2Ni4uMGU4ODM4OWRjNDVkYzMwODM4
NGQ4MTRkZmU2ODRjYjFlMmQ4OTFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMKQEAgLTQ4LDYg
KzQ4LDcgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZSA9IGZ1bmN0aW9uKHNj
cmlwdHNQYW5lbCwgbW9kZWwsIHVpU291cmNlQ29kZSkKICAgICAgICAgICAgIHRoaXMuX2dldFBv
cG92ZXJBbmNob3IuYmluZCh0aGlzKSwgdGhpcy5fcmVzb2x2ZU9iamVjdEZvclBvcG92ZXIuYmlu
ZCh0aGlzKSwgdGhpcy5fb25IaWRlUG9wb3Zlci5iaW5kKHRoaXMpLCB0cnVlKTsKIAogICAgIHRo
aXMudGV4dFZpZXdlci5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMu
X29uTW91c2VEb3duLmJpbmQodGhpcyksIHRydWUpOworICAgIHRoaXMudGV4dFZpZXdlci5lbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9vbktleURvd24uYmluZCh0aGlz
KSwgdHJ1ZSk7CiAgICAgdGhpcy5fdWlTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlVJU291cmNlQ29kZS5FdmVudHMuQ29udGVudENoYW5nZWQsIHRoaXMuX29uQ29udGVu
dENoYW5nZWQsIHRoaXMpOwogICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
U291cmNlRnJhbWUuRXZlbnRzLkxvYWRlZCwgdGhpcy5fb25UZXh0Vmlld2VyQ29udGVudExvYWRl
ZCwgdGhpcyk7CiB9CkBAIC02OCw3ICs2OSwxMiBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNv
dXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAvLyBTb3VyY2VGcmFtZSBvdmVycmlkZXMKICAg
ICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewotICAgICAgICB0aGlz
Ll91aVNvdXJjZUNvZGUucmVxdWVzdENvbnRlbnQoY2FsbGJhY2spOworICAgICAgICBmdW5jdGlv
biBteWNhbGxiYWNrKG1pbWVUeXBlLCBjb250ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB0
aGlzLl9vcmlnaW5hbENvbnRlbnQgPSBjb250ZW50OworICAgICAgICAgICAgY2FsbGJhY2sobWlt
ZVR5cGUsIGNvbnRlbnQpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3VpU291cmNlQ29kZS5y
ZXF1ZXN0Q29udGVudChteWNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKICAgICBjYW5F
ZGl0U291cmNlOiBmdW5jdGlvbigpCkBAIC05MywxNSArOTksNiBAQCBXZWJJbnNwZWN0b3IuSmF2
YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5yZXF1ZXN0Q29u
dGVudCh0aGlzLnNldENvbnRlbnQuYmluZCh0aGlzKSk7CiAgICAgfSwKIAotICAgIHNldFJlYWRP
bmx5OiBmdW5jdGlvbihyZWFkT25seSkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9wb3BvdmVy
SGVscGVyICYmICFyZWFkT25seSkKLSAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJIZWxwZXIuaGlk
ZVBvcG92ZXIoKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5z
ZXRSZWFkT25seS5jYWxsKHRoaXMsIHJlYWRPbmx5KTsKLSAgICAgICAgaWYgKHJlYWRPbmx5KQot
ICAgICAgICAgICAgdGhpcy5fc2NyaXB0c1BhbmVsLnNldFNjcmlwdFNvdXJjZUlzQmVpbmdFZGl0
ZWQodGhpcy5fdWlTb3VyY2VDb2RlLCBmYWxzZSk7Ci0gICAgfSwKLQogICAgIHBvcHVsYXRlTGlu
ZUd1dHRlckNvbnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0TWVudSwgbGluZU51bWJlcikKICAg
ICB7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiQ29udGludWUgdG8gaGVy
ZSIgOiAiQ29udGludWUgdG8gSGVyZSIpLCB0aGlzLl9tb2RlbC5jb250aW51ZVRvTGluZS5iaW5k
KHRoaXMuX21vZGVsLCB0aGlzLl91aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIpKTsKQEAgLTE4Niw2
ICsxODMsOCBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgICAgICB0aGlzLmFkZEJyZWFrcG9pbnQobmV3TGluZU51bWJlciwgYnJl
YWtwb2ludC5yZXNvbHZlZCwgYnJlYWtwb2ludC5jb25kaXRpb25hbCwgYnJlYWtwb2ludC5lbmFi
bGVkKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3NjcmlwdHNQ
YW5lbC5zZXRTY3JpcHRTb3VyY2VJc0RpcnR5KHRoaXMuX3VpU291cmNlQ29kZSwgdGhpcy50ZXh0
TW9kZWwuY29weVJhbmdlKCkgIT09IHRoaXMuX29yaWdpbmFsQ29udGVudCk7CiAgICAgfSwKIAog
ICAgIGJlZm9yZVRleHRDaGFuZ2VkOiBmdW5jdGlvbigpCkBAIC0xOTUsNDggKzE5NCwxNyBAQCBX
ZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICBleGVjdXRpb25MaW5lTnVtYmVyOiB0aGlzLl9leGVjdXRpb25MaW5lTnVtYmVyLAog
ICAgICAgICAgICAgICAgIGJyZWFrcG9pbnRzOiB0aGlzLl9icmVha3BvaW50cwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgdGhpcy5fc2NyaXB0c1BhbmVsLnNldFNjcmlwdFNvdXJjZUlzQmVp
bmdFZGl0ZWQodGhpcy5fdWlTb3VyY2VDb2RlLCB0cnVlKTsKICAgICAgICAgfQogICAgICAgICBX
ZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLmJlZm9yZVRleHRDaGFuZ2VkLmNhbGwo
dGhpcyk7CiAgICAgfSwKIAotICAgIGNhbmNlbEVkaXRpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5zb3VyY2VGcmFtZUFs
d2F5c0VkaXRhYmxlLmlzRW5hYmxlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuY2FuY2VsRWRpdGluZy5j
YWxsKHRoaXMpOwotCi0gICAgICAgIGlmICghdGhpcy5famF2YVNjcmlwdFNvdXJjZUZyYW1lU3Rh
dGUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBpZiAodHlwZW9mIHRoaXMu
X2phdmFTY3JpcHRTb3VyY2VGcmFtZVN0YXRlLmV4ZWN1dGlvbkxpbmVOdW1iZXIgPT09ICJudW1i
ZXIiKSB7Ci0gICAgICAgICAgICB0aGlzLmNsZWFyRXhlY3V0aW9uTGluZSgpOwotICAgICAgICAg
ICAgdGhpcy5zZXRFeGVjdXRpb25MaW5lKHRoaXMuX2phdmFTY3JpcHRTb3VyY2VGcmFtZVN0YXRl
LmV4ZWN1dGlvbkxpbmVOdW1iZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIG9sZEJyZWFr
cG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludHM7Ci0gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzID0g
e307Ci0gICAgICAgIGZvciAodmFyIGxpbmVOdW1iZXIgaW4gb2xkQnJlYWtwb2ludHMpCi0gICAg
ICAgICAgICB0aGlzLnJlbW92ZUJyZWFrcG9pbnQoTnVtYmVyKGxpbmVOdW1iZXIpKTsKLQotICAg
ICAgICB2YXIgbmV3QnJlYWtwb2ludHMgPSB0aGlzLl9qYXZhU2NyaXB0U291cmNlRnJhbWVTdGF0
ZS5icmVha3BvaW50czsKLSAgICAgICAgZm9yICh2YXIgbGluZU51bWJlciBpbiBuZXdCcmVha3Bv
aW50cykgewotICAgICAgICAgICAgbGluZU51bWJlciA9IE51bWJlcihsaW5lTnVtYmVyKTsKLSAg
ICAgICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3QnJlYWtwb2ludHNbbGluZU51bWJlcl07Ci0g
ICAgICAgICAgICB0aGlzLmFkZEJyZWFrcG9pbnQobGluZU51bWJlciwgYnJlYWtwb2ludC5yZXNv
bHZlZCwgYnJlYWtwb2ludC5jb25kaXRpb25hbCwgYnJlYWtwb2ludC5lbmFibGVkKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGRlbGV0ZSB0aGlzLl9qYXZhU2NyaXB0U291cmNlRnJhbWVTdGF0ZTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQotICAgIGRpZEVkaXRDb250ZW50OiBmdW5j
dGlvbihlcnJvcikKKyAgICBkaWRFZGl0Q29udGVudDogZnVuY3Rpb24oZXJyb3IsIGNvbnRlbnQp
CiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLmRpZEVk
aXRDb250ZW50LmNhbGwodGhpcywgZXJyb3IpOworICAgICAgICBXZWJJbnNwZWN0b3IuU291cmNl
RnJhbWUucHJvdG90eXBlLmRpZEVkaXRDb250ZW50LmNhbGwodGhpcywgZXJyb3IsIGNvbnRlbnQp
OwogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgdGhp
cy5fb3JpZ2luYWxDb250ZW50ID0gY29udGVudDsKICAgICAgICAgdmFyIG5ld0JyZWFrcG9pbnRz
ID0ge307CiAgICAgICAgIGZvciAodmFyIGxpbmVOdW1iZXIgaW4gdGhpcy5fYnJlYWtwb2ludHMp
IHsKICAgICAgICAgICAgIG5ld0JyZWFrcG9pbnRzW2xpbmVOdW1iZXJdID0gdGhpcy5fYnJlYWtw
b2ludHNbbGluZU51bWJlcl07CkBAIC0yNTAsNyArMjE4LDcgQEAgV2ViSW5zcGVjdG9yLkphdmFT
Y3JpcHRTb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgYnJlYWtwb2lu
dCA9IG5ld0JyZWFrcG9pbnRzW2xpbmVOdW1iZXJdOwogICAgICAgICAgICAgdGhpcy5fc2V0QnJl
YWtwb2ludChOdW1iZXIobGluZU51bWJlciksIGJyZWFrcG9pbnQuY29uZGl0aW9uLCBicmVha3Bv
aW50LmVuYWJsZWQpOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3NjcmlwdHNQYW5lbC5zZXRT
Y3JpcHRTb3VyY2VJc0JlaW5nRWRpdGVkKHRoaXMuX3VpU291cmNlQ29kZSwgZmFsc2UpOworICAg
ICAgICB0aGlzLl9zY3JpcHRzUGFuZWwuc2V0U2NyaXB0U291cmNlSXNEaXJ0eSh0aGlzLl91aVNv
dXJjZUNvZGUsIGZhbHNlKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX2phdmFTY3JpcHRTb3VyY2VG
cmFtZVN0YXRlOwogICAgIH0sCiAKQEAgLTQ5MCw3ICs0NTgsNyBAQCBXZWJJbnNwZWN0b3IuSmF2
YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKGxpbmVOdW1iZXIg
PT09IG9sZFJhbmdlLnN0YXJ0TGluZSkgewogICAgICAgICAgICAgdmFyIHdoaXRlU3BhY2VzUmVn
ZXggPSAvXltcc1x4QTBdKiQvOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGxpbmVOdW1i
ZXIgKyBpIDw9IG5ld1JhbmdlLmVuZExpbmU7ICsraSkgewotICAgICAgICAgICAgICAgIGlmICgh
d2hpdGVTcGFjZXNSZWdleC50ZXN0KHRoaXMuX3RleHRNb2RlbC5saW5lKGxpbmVOdW1iZXIgKyBp
KSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdoaXRlU3BhY2VzUmVnZXgudGVzdCh0aGlzLnRl
eHRNb2RlbC5saW5lKGxpbmVOdW1iZXIgKyBpKSkpIHsKICAgICAgICAgICAgICAgICAgICAgc2hp
ZnRPZmZzZXQgPSBpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VW
aWV3LmpzCmluZGV4IDNkMzY4NmNhMmMzNzFjOTlhMzJiN2ZkNDg1MjUzYWE3OTZlODk2OWEuLjhk
Y2RkZTkzOTExYjEwNWZiNjU0Yzk5NGQ3MDA0NjQ0NzJhNzA5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCkBAIC04NCw2ICs4
NCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1lID0gZnVuY3Rpb24ocmVzb3Vy
Y2UpCiB7CiAgICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKICAgICBXZWJJbnNwZWN0b3Iu
U291cmNlRnJhbWUuY2FsbCh0aGlzLCByZXNvdXJjZS51cmwpOworICAgIHRoaXMuX3Jlc291cmNl
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50cy5SZXZpc2lvbkFk
ZGVkLCB0aGlzLl9jb250ZW50Q2hhbmdlZCwgdGhpcyk7CiB9CiAKIC8vVGhpcyBpcyBhIG1hcCBm
cm9tIHJlc291cmNlLnR5cGUgdG8gbWltZSB0eXBlcwpAQCAtMTE4LDYgKzExOSwxMSBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgc3VnZ2VzdGVk
RmlsZU5hbWU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLnJlc291cmNl
LmRpc3BsYXlOYW1lOworICAgIH0sCisKKyAgICBfY29udGVudENoYW5nZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5zZXRDb250ZW50KFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVNvdXJjZUZyYW1lLm1pbWVUeXBlRm9yUmVzb3VyY2VbdGhpcy5fcmVzb3VyY2VdLCB0aGlzLl9y
ZXNvdXJjZS5jb250ZW50KTsKICAgICB9CiB9CiAKQEAgLTEzNSwyNyArMTQxLDIxIEBAIFdlYklu
c3BlY3Rvci5FZGl0YWJsZVJlc291cmNlU291cmNlRnJhbWUgPSBmdW5jdGlvbihyZXNvdXJjZSkK
IFdlYkluc3BlY3Rvci5FZGl0YWJsZVJlc291cmNlU291cmNlRnJhbWUucHJvdG90eXBlID0gewog
ICAgIGNhbkVkaXRTb3VyY2U6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnJlc291cmNlLmlzRWRpdGFibGUoKSAmJiAhdGhpcy5fY29tbWl0RWRpdGluZ0luUHJvZ3Jlc3M7
CisgICAgICAgIC8vRklYTUU6IG1ha2UgbGl2ZSBlZGl0IHN0b3AgdXNpbmcgcmVzb3VyY2UgY29u
dGVudCBiaW5kaW5nLgorICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2UuaXNFZGl0YWJsZSgp
ICYmIHRoaXMuX3Jlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0
eWxlc2hlZXQ7CiAgICAgfSwKIAogICAgIGVkaXRDb250ZW50OiBmdW5jdGlvbihuZXdUZXh0LCBj
YWxsYmFjaykKICAgICB7CiAgICAgICAgIHRoaXMuX2NsZWFySW5jcmVtZW50YWxVcGRhdGVUaW1l
cigpOwogICAgICAgICB2YXIgbWFqb3JDaGFuZ2UgPSB0cnVlOwotICAgICAgICB0aGlzLnJlc291
cmNlLnNldENvbnRlbnQobmV3VGV4dCwgbWFqb3JDaGFuZ2UsIGNhbGxiYWNrKTsKLSAgICB9LAot
Ci0gICAgY2FuY2VsRWRpdGluZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKFdlYklu
c3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLnNvdXJjZUZyYW1lQWx3YXlzRWRpdGFibGUuaXNF
bmFibGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5fY2xl
YXJJbmNyZW1lbnRhbFVwZGF0ZVRpbWVyKCk7Ci0gICAgICAgIGNvbnN0IG1ham9yQ2hhbmdlID0g
ZmFsc2U7Ci0gICAgICAgIGlmICh0aGlzLl92aWV3ZXJTdGF0ZSkKLSAgICAgICAgICAgIHRoaXMu
cmVzb3VyY2Uuc2V0Q29udGVudCh0aGlzLl92aWV3ZXJTdGF0ZS50ZXh0TW9kZWxDb250ZW50LCBt
YWpvckNoYW5nZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUu
Y2FuY2VsRWRpdGluZy5jYWxsKHRoaXMpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
dGhpcy5fc2V0dGluZ0NvbnRlbnQgPSB0cnVlOworICAgICAgICBmdW5jdGlvbiBjYWxsYmFja1dy
YXBwZXIodGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY2FsbGJhY2sodGV4dCk7CisgICAg
ICAgICAgICBkZWxldGUgdGhpcy5fc2V0dGluZ0NvbnRlbnQ7CisgICAgICAgIH0KKyAgICAgICAg
dGhpcy5yZXNvdXJjZS5zZXRDb250ZW50KG5ld1RleHQsIG1ham9yQ2hhbmdlLCBjYWxsYmFja1dy
YXBwZXIuYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIGFmdGVyVGV4dENoYW5nZWQ6IGZ1bmN0
aW9uKG9sZFJhbmdlLCBuZXdSYW5nZSkKQEAgLTE3NSw2ICsxNzUsMTIgQEAgV2ViSW5zcGVjdG9y
LkVkaXRhYmxlUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBj
bGVhclRpbWVvdXQodGhpcy5faW5jcmVtZW50YWxVcGRhdGVUaW1lcik7CiAgICAgICAgIGRlbGV0
ZSB0aGlzLl9pbmNyZW1lbnRhbFVwZGF0ZVRpbWVyOwogICAgIH0sCisKKyAgICBfY29udGVudENo
YW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9zZXR0aW5n
Q29udGVudCkKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJjZUZyYW1lLnBy
b3RvdHlwZS5fY29udGVudENoYW5nZWQuY2FsbCh0aGlzLCBldmVudCk7CisgICAgfQogfQogCiBX
ZWJJbnNwZWN0b3IuRWRpdGFibGVSZXNvdXJjZVNvdXJjZUZyYW1lLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZS5wcm90b3R5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpp
bmRleCBiZGE0NTVmNjcwZTg5YmEzM2U3ZGE3YzMxMTNkZGNiZWQ3M2NhOGM2Li41OTJjNDQxZDU2
YmM5NzRmODE3NGUwYjQ3MTRlOWM0YmY4Mzk3OTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKQEAgLTUxMyw2ICs1MTMs
OSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX2lu
bmVyU2hvd1ZpZXc6IGZ1bmN0aW9uKHZpZXcpCiAgICAgeworICAgICAgICBpZiAodGhpcy52aXNp
YmxlVmlldyA9PT0gdmlldykKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAodGhp
cy52aXNpYmxlVmlldykKICAgICAgICAgICAgIHRoaXMudmlzaWJsZVZpZXcuZGV0YWNoKCk7CiAK
QEAgLTEzODEsMTMgKzEzODQsOCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICBfYXBwZW5kUmV2aXNpb246IGZ1bmN0aW9uKHJldmlzaW9u
KQogICAgIHsKICAgICAgICAgdGhpcy5pbnNlcnRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlJlc291
cmNlUmV2aXNpb25UcmVlRWxlbWVudCh0aGlzLl9zdG9yYWdlUGFuZWwsIHJldmlzaW9uKSwgMCk7
Ci0gICAgICAgIHZhciBvbGRWaWV3ID0gdGhpcy5fc291cmNlVmlldzsKLSAgICAgICAgaWYgKG9s
ZFZpZXcpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIHdoZW4gcmVzb3VyY2UgY29u
dGVudCB3YXMgY2hhbmdlZCBmcm9tIHNjcmlwdHMgcGFuZWwuCi0gICAgICAgICAgICB2YXIgbmV3
VmlldyA9IHRoaXMuX3JlY3JlYXRlU291cmNlVmlldygpOwotICAgICAgICAgICAgaWYgKG9sZFZp
ZXcgPT09IHRoaXMuX3N0b3JhZ2VQYW5lbC52aXNpYmxlVmlldykKLSAgICAgICAgICAgICAgICB0
aGlzLl9zdG9yYWdlUGFuZWwuX3Nob3dSZXNvdXJjZVZpZXcodGhpcy5fcmVzb3VyY2UpOwotICAg
ICAgICB9CisgICAgICAgIGlmICh0aGlzLl9zb3VyY2VWaWV3ID09PSB0aGlzLl9zdG9yYWdlUGFu
ZWwudmlzaWJsZVZpZXcpCisgICAgICAgICAgICB0aGlzLl9zdG9yYWdlUGFuZWwuX3Nob3dSZXNv
dXJjZVZpZXcodGhpcy5fcmVzb3VyY2UpOwogICAgIH0sCiAKICAgICBzb3VyY2VWaWV3OiBmdW5j
dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0
c1BhbmVsLmpzCmluZGV4IDJmMmU4ZDIyMjM3YzgzMDRiZDlmNWE1MGQ1ODRjYjc0NTkyNjkxNzgu
LjdiZmQyNzdjNDQwMGQzMTJiZWRkZmJjMWE3YzQ2MjUzYmFmNTQ0YjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC0yODQs
MTIgKzI4NCwxMiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAog
ICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3Vy
Y2VDb2RlCi0gICAgICogQHBhcmFtIHtib29sZWFufSBpbkVkaXRNb2RlCisgICAgICogQHBhcmFt
IHtib29sZWFufSBpc0RpcnR5CiAgICAgICovCi0gICAgc2V0U2NyaXB0U291cmNlSXNCZWluZ0Vk
aXRlZDogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBpbkVkaXRNb2RlKQorICAgIHNldFNjcmlwdFNv
dXJjZUlzRGlydHk6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgaXNEaXJ0eSkKICAgICB7Ci0gICAg
ICAgIHRoaXMuX2ZpbGVTZWxlY3Rvci5zZXRTY3JpcHRTb3VyY2VJc0RpcnR5KHVpU291cmNlQ29k
ZSwgaW5FZGl0TW9kZSk7Ci0gICAgICAgIHRoaXMuX2VkaXRvckNvbnRhaW5lci5zZXRGaWxlSXNE
aXJ0eSh1aVNvdXJjZUNvZGUsIGluRWRpdE1vZGUpOworICAgICAgICB0aGlzLl9maWxlU2VsZWN0
b3Iuc2V0U2NyaXB0U291cmNlSXNEaXJ0eSh1aVNvdXJjZUNvZGUsIGlzRGlydHkpOworICAgICAg
ICB0aGlzLl9lZGl0b3JDb250YWluZXIuc2V0RmlsZUlzRGlydHkodWlTb3VyY2VDb2RlLCBpc0Rp
cnR5KTsKICAgICB9LAogCiAgICAgX2NvbnNvbGVNZXNzYWdlc0NsZWFyZWQ6IGZ1bmN0aW9uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3Mu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4
IDFkMGJjNDRjZWQ1MGVkMGVlYzhjYTJmY2Y1NWRkODA0MDk4MDA1NzAuLjI0MDJhN2I5ZWQwZmNl
MWRkZGQ4Y2Q5ZGMwM2M2Zjc2YTBhYmJiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwpAQCAtMTc0LDcgKzE3NCw2IEBAIFdlYkluc3BlY3Rv
ci5FeHBlcmltZW50c1NldHRpbmdzID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2VuYWJsZWRGb3JU
ZXN0ID0ge307CiAgICAgCiAgICAgLy8gQWRkIGN1cnJlbnRseSBydW5uaW5nIGV4cGVyaW1lbnRz
IGhlcmUuCi0gICAgdGhpcy5zb3VyY2VGcmFtZUFsd2F5c0VkaXRhYmxlID0gdGhpcy5fY3JlYXRl
RXhwZXJpbWVudCgic291cmNlRnJhbWVBbHdheXNFZGl0YWJsZSIsICJNYWtlIHJlc291cmNlcyBh
bHdheXMgZWRpdGFibGUiKTsKICAgICB0aGlzLnRpbWVsaW5lVmVydGljYWxPdmVydmlldyA9IHRo
aXMuX2NyZWF0ZUV4cGVyaW1lbnQoInRpbWVsaW5lU3RhcnRBdFplcm8iLCAiRW5hYmxlIHZlcnRp
Y2FsIG92ZXJ2aWV3IG1vZGUgaW4gdGhlIFRpbWVsaW5lIHBhbmVsIik7CiAgICAgLy8gRklYTUU6
IEVuYWJsZSBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvcmVzb3VyY2VzLXBhbmVsLmh0
bWwgd2hlbiByZW1vdmVkIGZyb20gZXhwZXJpbWVudHMuCiAgICAgdGhpcy5zaG93SW5kZXhlZERC
ID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVudCgic2hvd0luZGV4ZWREQiIsICJTaG93IEluZGV4ZWRE
QiBpbiBSZXNvdXJjZXMgcGFuZWwiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCmluZGV4IDllMjI1YWVmZTBmOTAxN2VhNGI3NWExNGVl
MzVlZWIwNzlhYmVkMjMuLjQ4OGM0ZTQ4YjkwYWIxZTFiZGQzZjA1ZmNiMDZmZjNkMzUyMzdhNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJh
bWUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFt
ZS5qcwpAQCAtNDQsOSArNDQsNiBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUgPSBmdW5jdGlv
bih1cmwpCiAgICAgdmFyIHRleHRWaWV3ZXJEZWxlZ2F0ZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4
dFZpZXdlckRlbGVnYXRlRm9yU291cmNlRnJhbWUodGhpcyk7CiAgICAgdGhpcy5fdGV4dFZpZXdl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFZpZXdlcih0aGlzLl90ZXh0TW9kZWwsIFdlYkluc3Bl
Y3Rvci5wbGF0Zm9ybSgpLCB0aGlzLl91cmwsIHRleHRWaWV3ZXJEZWxlZ2F0ZSk7CiAKLSAgICB0
aGlzLl9lZGl0QnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJFZGl0IiksICJlZGl0LXNvdXJjZS1zdGF0dXMtYmFyLWl0ZW0iKTsK
LSAgICB0aGlzLl9lZGl0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fZWRp
dEJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSwgdGhpcyk7Ci0KICAgICB0aGlzLl9jdXJyZW50U2Vh
cmNoUmVzdWx0SW5kZXggPSAtMTsKICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzID0gW107CiAKQEAg
LTU0LDggKzUxLDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lID0gZnVuY3Rpb24odXJsKQog
ICAgIHRoaXMuX3Jvd01lc3NhZ2VzID0ge307CiAgICAgdGhpcy5fbWVzc2FnZUJ1YmJsZXMgPSB7
fTsKIAotICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5zb3VyY2VGcmFt
ZUFsd2F5c0VkaXRhYmxlLmlzRW5hYmxlZCgpKQotICAgICAgICB0aGlzLnN0YXJ0RWRpdGluZygp
OworICAgIHRoaXMuX3RleHRWaWV3ZXIucmVhZE9ubHkgPSAhdGhpcy5jYW5FZGl0U291cmNlKCk7
CiB9CiAKIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5FdmVudHMgPSB7CkBAIC04Niw4ICs4Miw2
IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAg
ICB0aGlzLl9lbnN1cmVDb250ZW50TG9hZGVkKCk7CiAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIu
c2hvdyh0aGlzLmVsZW1lbnQpOwotICAgICAgICBpZiAodGhpcy5fd2FzSGlkZGVuV2hpbGVFZGl0
aW5nKQotICAgICAgICAgICAgdGhpcy5zZXRSZWFkT25seShmYWxzZSk7CiAgICAgfSwKIAogICAg
IHdpbGxIaWRlOiBmdW5jdGlvbigpCkBAIC05OCwxMCArOTIsNiBAQCBXZWJJbnNwZWN0b3IuU291
cmNlRnJhbWUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2NsZWFyTGluZUhpZ2hsaWdo
dCgpOwogICAgICAgICB0aGlzLl9jbGVhckxpbmVUb1JldmVhbCgpOwotICAgICAgICAKLSAgICAg
ICAgaWYgKCF0aGlzLl90ZXh0Vmlld2VyLnJlYWRPbmx5KQotICAgICAgICAgICAgdGhpcy5fd2Fz
SGlkZGVuV2hpbGVFZGl0aW5nID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5zZXRSZWFkT25seSh0cnVl
KTsKICAgICB9LAogCiAgICAgZm9jdXM6IGZ1bmN0aW9uKCkKQEAgLTEwOSwxMSArOTksNiBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90ZXh0
Vmlld2VyLmZvY3VzKCk7CiAgICAgfSwKIAotICAgIGdldCBzdGF0dXNCYXJJdGVtcygpCi0gICAg
ewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3Muc291cmNl
RnJhbWVBbHdheXNFZGl0YWJsZS5pc0VuYWJsZWQoKSA/IFtdIDogW3RoaXMuX2VkaXRCdXR0b24u
ZWxlbWVudF07Ci0gICAgfSwKLQogICAgIGdldCBsb2FkZWQoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2xvYWRlZDsKQEAgLTIxNiwzMyArMjAxLDggQEAgV2ViSW5zcGVjdG9yLlNvdXJj
ZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX2xpbmVUb1JldmVhbDsK
ICAgICB9LAogCi0gICAgX3NhdmVWaWV3ZXJTdGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgdGhpcy5fdmlld2VyU3RhdGUgPSB7Ci0gICAgICAgICAgICB0ZXh0TW9kZWxDb250ZW50OiB0
aGlzLl90ZXh0TW9kZWwudGV4dCwKLSAgICAgICAgICAgIG1lc3NhZ2VzOiB0aGlzLl9tZXNzYWdl
cywKLSAgICAgICAgICAgIGRpZmZMaW5lczogdGhpcy5fZGlmZkxpbmVzLAotICAgICAgICB9Owot
ICAgIH0sCi0KLSAgICBfcmVzdG9yZVZpZXdlclN0YXRlOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICBpZiAoIXRoaXMuX3ZpZXdlclN0YXRlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB0aGlzLl90ZXh0TW9kZWwuc2V0VGV4dChudWxsLCB0aGlzLl92aWV3ZXJTdGF0ZS50ZXh0TW9k
ZWxDb250ZW50KTsKLQotICAgICAgICB0aGlzLl9tZXNzYWdlcyA9IHRoaXMuX3ZpZXdlclN0YXRl
Lm1lc3NhZ2VzOwotICAgICAgICB0aGlzLl9kaWZmTGluZXMgPSB0aGlzLl92aWV3ZXJTdGF0ZS5k
aWZmTGluZXM7Ci0gICAgICAgIHRoaXMuX3NldFRleHRWaWV3ZXJEZWNvcmF0aW9ucygpOwotCi0g
ICAgICAgIGRlbGV0ZSB0aGlzLl92aWV3ZXJTdGF0ZTsKLSAgICB9LAotCiAgICAgYmVmb3JlVGV4
dENoYW5nZWQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fdmlld2VyU3Rh
dGUpCi0gICAgICAgICAgICB0aGlzLl9zYXZlVmlld2VyU3RhdGUoKTsKLQogICAgICAgICBXZWJJ
bnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci5jYW5jZWxTZWFyY2goKTsKICAgICAgICAgdGhpcy5j
bGVhck1lc3NhZ2VzKCk7CiAgICAgfSwKQEAgLTI4MCw5ICsyNDAsNiBAQCBXZWJJbnNwZWN0b3Iu
U291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUuRXZlbnRzLkxvYWRlZCk7CiAKICAgICAg
ICAgdGhpcy5fdGV4dFZpZXdlci5lbmRVcGRhdGVzKCk7Ci0KLSAgICAgICAgaWYgKCF0aGlzLmNh
bkVkaXRTb3VyY2UoKSkKLSAgICAgICAgICAgIHRoaXMuX2VkaXRCdXR0b24uZGlzYWJsZWQgPSB0
cnVlOwogICAgIH0sCiAKICAgICBfc2V0VGV4dFZpZXdlckRlY29yYXRpb25zOiBmdW5jdGlvbigp
CkBAIC01MzAsODggKzQ4NywzMSBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmluaGVyaXRTY3JvbGxQb3NpdGlvbnMoc291
cmNlRnJhbWUuX3RleHRWaWV3ZXIpOwogICAgIH0sCiAKLSAgICBfZWRpdEJ1dHRvbkNsaWNrZWQ6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5jYW5FZGl0U291cmNlKCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY29uc3Qgc2hvdWxkU3RhcnRFZGl0aW5nID0g
IXRoaXMuX2VkaXRCdXR0b24udG9nZ2xlZDsKLSAgICAgICAgaWYgKHNob3VsZFN0YXJ0RWRpdGlu
ZykKLSAgICAgICAgICAgIHRoaXMuc3RhcnRFZGl0aW5nKCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHRoaXMuY29tbWl0RWRpdGluZygpOwotICAgIH0sCi0KICAgICBjYW5FZGl0U291cmNl
OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAotICAg
IHN0YXJ0RWRpdGluZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmNhbkVk
aXRTb3VyY2UoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAodGhp
cy5fY29tbWl0RWRpdGluZ0luUHJvZ3Jlc3MpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAgICAgdGhpcy5zZXRSZWFkT25seShmYWxzZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0sCi0KICAgICBjb21taXRFZGl0aW5nOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBp
ZiAoIXRoaXMuX3ZpZXdlclN0YXRlKSB7Ci0gICAgICAgICAgICAvLyBObyBlZGl0aW5nIHdhcyBh
Y3R1YWxseSBkb25lLgotICAgICAgICAgICAgdGhpcy5zZXRSZWFkT25seSh0cnVlKTsKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHRoaXMuZGlkRWRpdENvbnRlbnQoZXJyb3IsIHRoaXMuX3RleHRNb2Rl
bC50ZXh0KTsKICAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX2NvbW1pdEVkaXRpbmdJblByb2dy
ZXNzID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5yZWFkT25seSA9IHRydWU7Ci0g
ICAgICAgIHRoaXMuX2VkaXRCdXR0b24udG9nZ2xlZCA9IGZhbHNlOwotICAgICAgICB0aGlzLmVk
aXRDb250ZW50KHRoaXMuX3RleHRNb2RlbC50ZXh0LCB0aGlzLmRpZEVkaXRDb250ZW50LmJpbmQo
dGhpcykpOworICAgICAgICB0aGlzLmVkaXRDb250ZW50KHRoaXMuX3RleHRNb2RlbC50ZXh0LCBj
YWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCi0gICAgZGlkRWRpdENvbnRlbnQ6IGZ1bmN0
aW9uKGVycm9yKQorICAgIGRpZEVkaXRDb250ZW50OiBmdW5jdGlvbihlcnJvciwgY29udGVudCkK
ICAgICB7Ci0gICAgICAgIHRoaXMuX2NvbW1pdEVkaXRpbmdJblByb2dyZXNzID0gZmFsc2U7Ci0g
ICAgICAgIHRoaXMuX3RleHRWaWV3ZXIucmVhZE9ubHkgPSBmYWxzZTsKLQogICAgICAgICBpZiAo
ZXJyb3IpIHsKICAgICAgICAgICAgIGlmIChlcnJvci5tZXNzYWdlKQogICAgICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5sb2coZXJyb3IubWVzc2FnZSwgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VMZXZlbC5FcnJvciwgdHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLQotICAgICAgICBkZWxldGUgdGhpcy5fdmlld2VyU3RhdGU7CiAgICAgfSwKIAogICAg
IGVkaXRDb250ZW50OiBmdW5jdGlvbihuZXdDb250ZW50LCBjYWxsYmFjaykKICAgICB7Ci0gICAg
fSwKLQotICAgIGNhbmNlbEVkaXRpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmIChX
ZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5zb3VyY2VGcmFtZUFsd2F5c0VkaXRhYmxl
LmlzRW5hYmxlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHRoaXMu
X3Jlc3RvcmVWaWV3ZXJTdGF0ZSgpOwotICAgICAgICB0aGlzLnNldFJlYWRPbmx5KHRydWUpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgZ2V0IHJlYWRPbmx5KCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLl90ZXh0Vmlld2VyLnJlYWRPbmx5OwotICAgIH0sCi0KLSAg
ICBzZXRSZWFkT25seTogZnVuY3Rpb24ocmVhZE9ubHkpCi0gICAgewotICAgICAgICBpZiAocmVh
ZE9ubHkgJiYgV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3Muc291cmNlRnJhbWVBbHdh
eXNFZGl0YWJsZS5pc0VuYWJsZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhp
cy5fdGV4dFZpZXdlci5yZWFkT25seSA9IHJlYWRPbmx5OwotICAgICAgICB0aGlzLl9lZGl0QnV0
dG9uLnRvZ2dsZWQgPSAhcmVhZE9ubHk7CiAgICAgfQogfQogCkBAIC02MjgsMTEgKzUyOCw2IEBA
IFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyRGVsZWdhdGVGb3JTb3VyY2VGcmFtZSA9IGZ1bmN0aW9u
KHNvdXJjZUZyYW1lKQogfQogCiBXZWJJbnNwZWN0b3IuVGV4dFZpZXdlckRlbGVnYXRlRm9yU291
cmNlRnJhbWUucHJvdG90eXBlID0gewotICAgIGRvdWJsZUNsaWNrOiBmdW5jdGlvbihsaW5lTnVt
YmVyKQotICAgIHsKLSAgICAgICAgdGhpcy5fc291cmNlRnJhbWUuc3RhcnRFZGl0aW5nKGxpbmVO
dW1iZXIpOwotICAgIH0sCi0KICAgICBiZWZvcmVUZXh0Q2hhbmdlZDogZnVuY3Rpb24oKQogICAg
IHsKICAgICAgICAgdGhpcy5fc291cmNlRnJhbWUuYmVmb3JlVGV4dENoYW5nZWQoKTsKQEAgLTY0
OCwxMSArNTQzLDYgQEAgV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXJEZWxlZ2F0ZUZvclNvdXJjZUZy
YW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc291cmNlRnJhbWUuY29tbWl0RWRpdGlu
ZygpOwogICAgIH0sCiAKLSAgICBjYW5jZWxFZGl0aW5nOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fc291cmNlRnJhbWUuY2FuY2VsRWRpdGluZygpOwotICAgIH0sCi0K
ICAgICBwb3B1bGF0ZUxpbmVHdXR0ZXJDb250ZXh0TWVudTogZnVuY3Rpb24oY29udGV4dE1lbnUs
IGxpbmVOdW1iZXIpCiAgICAgewogICAgICAgICB0aGlzLl9zb3VyY2VGcmFtZS5wb3B1bGF0ZUxp
bmVHdXR0ZXJDb250ZXh0TWVudShjb250ZXh0TWVudSwgbGluZU51bWJlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMKaW5kZXggOGJhM2Rk
YTQ3MmU1NjlkZmQyZTliZWYyY2Y3ZjRjMjcwNDY2MTZlZC4uYmVlMDA0MzUzZmYwNWY5NTk2MDRm
ZDMyMmIyMDJjM2NhOGE0YjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGV4dFByb21wdC5qcwpAQCAtMTYxLDggKzE2MSw2IEBAIFdlYkluc3BlY3Rvci5U
ZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKIAogICAgIF9zdGFydEVkaXRpbmc6IGZ1bmN0aW9uKGJs
dXJMaXN0ZW5lcikKICAgICB7Ci0gICAgICAgIGlmICghV2ViSW5zcGVjdG9yLm1hcmtCZWluZ0Vk
aXRlZCh0aGlzLl9lbGVtZW50LCB0cnVlKSkKLSAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
dGhpcy5faXNFZGl0aW5nID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRTdHlsZUNs
YXNzKCJlZGl0aW5nIik7CiAgICAgICAgIGlmIChibHVyTGlzdGVuZXIpIHsKQEAgLTE4Miw3ICsx
ODAsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLl9lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9ibHVyTGlz
dGVuZXIsIGZhbHNlKTsKICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJl
ZGl0aW5nIik7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9pc0VkaXRpbmc7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5tYXJrQmVpbmdFZGl0ZWQodGhpcy5fZWxlbWVudCwgZmFsc2UpOwogICAgIH0sCiAK
ICAgICBfcmVtb3ZlU3VnZ2VzdGlvbkFpZHM6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdlci5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdlci5qcwppbmRleCBkYjAxM2NiZjdhMzlm
MmY0MDMwNzlhMjNhNWNhYWE1YWI4NGI5MjBmLi44YjlhYzU3NWIxN2MyYTA2OWIyMTY4MWQ5Nzhk
MWQ5YzQwNjU3NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RleHRWaWV3ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UZXh0Vmlld2VyLmpzCkBAIC02OCw3ICs2OCw2IEBAIFdlYkluc3BlY3Rvci5UZXh0Vmlld2Vy
ID0gZnVuY3Rpb24odGV4dE1vZGVsLCBwbGF0Zm9ybSwgdXJsLCBkZWxlZ2F0ZSkKICAgICB9CiAg
ICAgdGhpcy5fZ3V0dGVyUGFuZWwuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVs
IiwgZm9yd2FyZFdoZWVsRXZlbnQuYmluZCh0aGlzKSwgZmFsc2UpOwogCi0gICAgdGhpcy5lbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5fZG91YmxlQ2xpY2suYmluZCh0
aGlzKSwgdHJ1ZSk7CiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24i
LCB0aGlzLl9oYW5kbGVLZXlEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlzLmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9jb250ZXh0TWVudS5iaW5k
KHRoaXMpLCB0cnVlKTsKIApAQCAtMjQ3LDE5ICsyNDYsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dFZp
ZXdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgX2RvdWJsZUNsaWNr
OiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5yZWFkT25seSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgbGluZVJvdyA9IGV2ZW50LnRhcmdldC5l
bmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJ3ZWJraXQtbGluZS1jb250ZW50Iik7Ci0gICAg
ICAgIGlmICghbGluZVJvdykKLSAgICAgICAgICAgIHJldHVybjsgIC8vIERvIG5vdCB0cmlnZ2Vy
IGVkaXRpbmcgZnJvbSBsaW5lIG51bWJlcnMuCi0KLSAgICAgICAgdGhpcy5fZGVsZWdhdGUuZG91
YmxlQ2xpY2sobGluZVJvdy5saW5lTnVtYmVyKTsKLSAgICAgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmNvbGxhcHNlVG9TdGFydCgpOwotICAgIH0sCi0KICAgICBfcmVnaXN0ZXJTaG9ydGN1dHM6
IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBrZXlzID0gV2ViSW5zcGVjdG9yLktleWJv
YXJkU2hvcnRjdXQuS2V5czsKQEAgLTI2NywxMCArMjUzLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRW
aWV3ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX3Nob3J0Y3V0cyA9IHt9OwogICAg
ICAgICB2YXIgY29tbWl0RWRpdGluZyA9IHRoaXMuX2NvbW1pdEVkaXRpbmcuYmluZCh0aGlzKTsK
LSAgICAgICAgdmFyIGNhbmNlbEVkaXRpbmcgPSB0aGlzLl9jYW5jZWxFZGl0aW5nLmJpbmQodGhp
cyk7CiAgICAgICAgIHRoaXMuX3Nob3J0Y3V0c1tXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1
dC5tYWtlS2V5KCJzIiwgbW9kaWZpZXJzLkN0cmxPck1ldGEpXSA9IGNvbW1pdEVkaXRpbmc7Ci0g
ICAgICAgIHRoaXMuX3Nob3J0Y3V0c1tXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtl
S2V5KGtleXMuRW50ZXIuY29kZSwgbW9kaWZpZXJzLkN0cmxPck1ldGEpXSA9IGNvbW1pdEVkaXRp
bmc7Ci0gICAgICAgIHRoaXMuX3Nob3J0Y3V0c1tXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1
dC5tYWtlS2V5KGtleXMuRXNjLmNvZGUpXSA9IGNhbmNlbEVkaXRpbmc7CiAKICAgICAgICAgdmFy
IGhhbmRsZUVudGVyS2V5ID0gdGhpcy5fbWFpblBhbmVsLmhhbmRsZUVudGVyS2V5LmJpbmQodGhp
cy5fbWFpblBhbmVsKTsKICAgICAgICAgdGhpcy5fc2hvcnRjdXRzW1dlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0Lm1ha2VLZXkoa2V5cy5FbnRlci5jb2RlLCBXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5Nb2RpZmllcnMuTm9uZSldID0gaGFuZGxlRW50ZXJLZXk7CkBAIC0zMjMsMTQg
KzMwNiw2IEBAIFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfSwKIAotICAgIF9jYW5jZWxFZGl0aW5nOiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICBpZiAodGhpcy5yZWFkT25seSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUuY2FuY2VsRWRpdGluZygpOwotICAg
IH0sCi0KICAgICB3YXNTaG93bjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
LnJlYWRPbmx5KQpAQCAtMzU0LDE2ICszMjksMTIgQEAgV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXJE
ZWxlZ2F0ZSA9IGZ1bmN0aW9uKCkKIH0KIAogV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXJEZWxlZ2F0
ZS5wcm90b3R5cGUgPSB7Ci0gICAgZG91YmxlQ2xpY2s6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpIHsg
fSwKLQogICAgIGJlZm9yZVRleHRDaGFuZ2VkOiBmdW5jdGlvbigpIHsgfSwKIAogICAgIGFmdGVy
VGV4dENoYW5nZWQ6IGZ1bmN0aW9uKG9sZFJhbmdlLCBuZXdSYW5nZSkgeyB9LAogCiAgICAgY29t
bWl0RWRpdGluZzogZnVuY3Rpb24oKSB7IH0sCiAKLSAgICBjYW5jZWxFZGl0aW5nOiBmdW5jdGlv
bigpIHsgfSwKLQogICAgIHBvcHVsYXRlTGluZUd1dHRlckNvbnRleHRNZW51OiBmdW5jdGlvbihj
b250ZXh0TWVudSwgbGluZU51bWJlcikgeyB9LAogCiAgICAgcG9wdWxhdGVUZXh0QXJlYUNvbnRl
eHRNZW51OiBmdW5jdGlvbihjb250ZXh0TWVudSwgbGluZU51bWJlcikgeyB9LApAQCAtMTE5Nywx
MSArMTE2OCw5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBuZXdSYW5nZSA9IHRoaXMuX3NldFRleHQo
cmFuZ2UsIGxpbmVCcmVhayArIGluZGVudCk7CiAKLSAgICAgICAgbmV3UmFuZ2UgPSBuZXdSYW5n
ZS5jb2xsYXBzZVRvRW5kKCk7Ci0KICAgICAgICAgdGhpcy5fZXhpdFRleHRDaGFuZ2VNb2RlKHJh
bmdlLCBuZXdSYW5nZSk7CiAgICAgICAgIHRoaXMuZW5kVXBkYXRlcygpOwotICAgICAgICB0aGlz
Ll9yZXN0b3JlU2VsZWN0aW9uKG5ld1JhbmdlLCB0cnVlKTsKKyAgICAgICAgdGhpcy5fcmVzdG9y
ZVNlbGVjdGlvbihuZXdSYW5nZS5jb2xsYXBzZVRvRW5kKCksIHRydWUpOwogCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0sCg==
</data>
<flag name="review"
          id="137164"
          type_id="1"
          status="+"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>