<?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>87642</bug_id>
          
          <creation_ts>2012-05-28 02:32:09 -0700</creation_ts>
          <short_desc>Web Inspector: REGRESSION: load heap snapshot doesn&apos;t work</short_desc>
          <delta_ts>2012-05-29 07:01:38 -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>
          <dependson>87741</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>alph</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>kadam</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>635038</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-28 02:32:09 -0700</bug_when>
    <thetext>Uncaught TypeError: Cannot call method &apos;finishLoading&apos; of null</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635689</commentid>
    <comment_count>1</comment_count>
      <attachid>144469</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-29 01:04:31 -0700</bug_when>
    <thetext>Created attachment 144469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635716</commentid>
    <comment_count>2</comment_count>
      <attachid>144469</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-29 01:34:55 -0700</bug_when>
    <thetext>Comment on attachment 144469
Patch

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

&gt; Source/WebCore/ChangeLog:7
&gt; +        It declares the API for HSLoader, HSLoaderProxy and HSSaveToFileReceiver.

Please don&apos;t abbreviate, use HeapSnapshotLoader etc.

&gt; Source/WebCore/inspector/front-end/HeapSnapshotLoader.js:52
&gt; +        this._reset();

It looks as if you were going to reuse the object after dispose.

&gt; Source/WebCore/inspector/front-end/HeapSnapshotView.js:839
&gt; +    this._loader = null;

_loader -&gt; _receiver

&gt; Source/WebCore/inspector/front-end/HeapSnapshotView.js:936
&gt; +        this.sidebarElement.subtitle = Number.bytesToString(this._snapshotProxy.totalSize);

This will fail if _snapshotProxy is null.

&gt; Source/WebCore/inspector/front-end/HeapSnapshotView.js:1016
&gt; +        this._file = file;

All file loading stuff can be extracted into a separate entity.

&gt; LayoutTests/inspector/profiler/heap-snapshot-loader.html:42
&gt; +                maxJSObjectId: 6

Can you extract this value from the snapshot mock?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635769</commentid>
    <comment_count>3</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-29 02:17:55 -0700</bug_when>
    <thetext>Committed r118742: &lt;http://trac.webkit.org/changeset/118742&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635879</commentid>
    <comment_count>4</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-29 04:40:25 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 144469 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144469&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:7
&gt; &gt; +        It declares the API for HSLoader, HSLoaderProxy and HSSaveToFileReceiver.
&gt; 
&gt; Please don&apos;t abbreviate, use HeapSnapshotLoader etc.
&gt; 

done

&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshotLoader.js:52
&gt; &gt; +        this._reset();
&gt; 
&gt; It looks as if you were going to reuse the object after dispose.
&gt; 

technically it is possible but practically it lives in a worker and is using only once.

&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshotView.js:839
&gt; &gt; +    this._loader = null;
&gt; 
&gt; _loader -&gt; _receiver

done 

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshotView.js:936
&gt; &gt; +        this.sidebarElement.subtitle = Number.bytesToString(this._snapshotProxy.totalSize);
&gt; 
&gt; This will fail if _snapshotProxy is null.

We can save a snapshot only if it has been loaded. In such case _snapshotProxy property is set.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshotView.js:1016
&gt; &gt; +        this._file = file;
&gt; 
&gt; All file loading stuff can be extracted into a separate entity.

I&apos;ll do that in a separate patch.

&gt; 
&gt; &gt; LayoutTests/inspector/profiler/heap-snapshot-loader.html:42
&gt; &gt; +                maxJSObjectId: 6
&gt; 
&gt; Can you extract this value from the snapshot mock?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635984</commentid>
    <comment_count>5</comment_count>
    <who name="Ádám Kallai">kadam</who>
    <bug_when>2012-05-29 07:01:38 -0700</bug_when>
    <thetext>This test fails on Lion and Qt.
 * inspector/profiler/heap-snapshot-loader.html

I created a new bug report.
 * https://bugs.webkit.org/show_bug.cgi?id=87741</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144469</attachid>
            <date>2012-05-29 01:04:31 -0700</date>
            <delta_ts>2012-05-29 01:34:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87642-20120529120429.patch</filename>
            <type>text/plain</type>
            <size>27303</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdlOTczOTc1YTFiZjFj
MDkyOWE2NWY1MDYzY2NlODFkNGIwZDU1Ny4uODZlYjllMGYzNzI5ZjdiMDAzMjU5YjhiNGUyNTM1
MmM5MzBjMjgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA1LTI5ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBSRUdSRVNTSU9OOiBsb2FkIGhlYXAgc25hcHNob3QgZG9lc24ndCB3b3JrLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc2NDIKKworICAgICAg
ICBIZWFwU25hcHNob3RSZWNlaXZlciBpbnRlcmZhY2Ugd2FzIGludHJvZHVjZWQuCisgICAgICAg
IEl0IGRlY2xhcmVzIHRoZSBBUEkgZm9yIEhTTG9hZGVyLCBIU0xvYWRlclByb3h5IGFuZCBIU1Nh
dmVUb0ZpbGVSZWNlaXZlci4KKyAgICAgICAgVGhlIEhlYXBQcm9maWxlSGVhZGVyIHdhcyByZWZh
Y3RvcmVkIGFuZCB0ZXN0cyB3ZXJlIGFkZGVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RM
b2FkZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXIucHJvdG90eXBlLnN0YXJ0TG9h
ZGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyLnByb3RvdHlw
ZS5kaXNwb3NlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXIucHJv
dG90eXBlLl9yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVy
LnByb3RvdHlwZS5maW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0hlYXBTbmFwc2hvdFByb3h5LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFdvcmtlci5wcm90b3R5cGUuc3RhcnRDaGVja2luZ0ZvckxvbmdSdW5uaW5nQ2FsbHMpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5LnByb3RvdHlwZS5zdGFy
dExvYWRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5
LnByb3RvdHlwZS5wdXNoSlNPTkNodW5rKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RMb2FkZXJQcm94eS5wcm90b3R5cGUuZmluaXNoTG9hZGluZyk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFJlY2VpdmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RSZWNlaXZlci5wcm90b3R5cGUuc3RhcnRMb2FkaW5nKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RSZWNlaXZlci5wcm90b3R5cGUucHVzaEpTT05DaHVuayk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmVjZWl2ZXIucHJvdG90eXBlLmZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJlY2VpdmVyLnByb3Rv
dHlwZS5kaXNwb3NlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlcik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlLmxvYWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5fc2V0
dXBXb3JrZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3Rv
dHlwZS5kaXNwb3NlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5w
cm90b3R5cGUuX3NhdmVTdGF0dXNVcGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQ
cm9maWxlSGVhZGVyLnByb3RvdHlwZS5wdXNoSlNPTkNodW5rKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuX3BhcnNlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlLmZpbmlzaEhlYXBTbmFwc2hvdCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlLnNhdmVU
b0ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlw
ZS5sb2FkRnJvbUZpbGUub25Mb2FkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmls
ZUhlYWRlci5wcm90b3R5cGUubG9hZEZyb21GaWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuX2xvYWROZXh0Q2h1bmspOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5fbmV4dENodW5rTG9hZGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuX2NyZWF0
ZUZpbGVSZWFkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNhdmVUb0Zp
bGVSZWNlaXZlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U2F2ZVRvRmls
ZVJlY2VpdmVyLnByb3RvdHlwZS5zdGFydExvYWRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFNhdmVUb0ZpbGVSZWNlaXZlci5wcm90b3R5cGUucHVzaEpTT05DaHVuayk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U2F2ZVRvRmlsZVJlY2VpdmVyLnBy
b3RvdHlwZS5maW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RTYXZlVG9GaWxlUmVjZWl2ZXIucHJvdG90eXBlLmRpc3Bvc2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFNhdmVUb0ZpbGVSZWNlaXZlci5wcm90b3R5cGUuX3N0YXJ0U2F2
aW5nU25hcHNob3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNhdmVUb0Zp
bGVSZWNlaXZlci5wcm90b3R5cGUuX3NhdmVTdGF0dXNVcGRhdGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Q
cm9maWxlc1BhbmVsLnByb3RvdHlwZS5fY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudC5vbkNoYW5n
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX2NyZWF0
ZUZpbGVTZWxlY3RvckVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFu
ZWwucHJvdG90eXBlLl9sb2FkRnJvbUZpbGUpOgorCiAyMDEyLTA1LTI4ICBLZW50YXJvIEhhcmEg
IDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbVjhdIEltcGxlbWVudCBWOEJpbmRp
bmc6OnY4TnVsbChpc29sYXRlKSBhbmQgdXNlIGl0IGluIENvZGVHZW5lcmF0b3JWOC5wbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RM
b2FkZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hv
dExvYWRlci5qcwppbmRleCBhZWI1NTI3Y2NmZTE1YTcyZjZmZTViY2Y1MTJmMTRkMzU2ZmVkNTk4
Li4wODRlZjk2MzU5NmQ4YmMyMWEwOTZkZGM4OTdmMDUxMjU5YjE3ODI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdExvYWRlci5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdExvYWRl
ci5qcwpAQCAtMzAsMTUgKzMwLDM1IEBACiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAaW1w
bGVtZW50cyB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJlY2VpdmVyfQogICovCiBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyID0gZnVuY3Rpb24oKQogewotICAgIHRoaXMuX2pzb24g
PSAiIjsKLSAgICB0aGlzLl9zdGF0ZSA9ICJmaW5kLXNuYXBzaG90LWluZm8iOwotICAgIHRoaXMu
X3NuYXBzaG90ID0ge307CisgICAgdGhpcy5fcmVzZXQoKTsKIH0KIAogV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdExvYWRlci5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtm
dW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkpfSBjYWxsYmFjaworICAgICAq
IEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgc3RhcnRMb2FkaW5nOiBmdW5jdGlvbihj
YWxsYmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICBkaXNw
b3NlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9yZXNldCgpOworICAgIH0sCisK
KyAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2pzb24gPSAiIjsK
KyAgICAgICAgdGhpcy5fc3RhdGUgPSAiZmluZC1zbmFwc2hvdC1pbmZvIjsKKyAgICAgICAgdGhp
cy5fc25hcHNob3QgPSB7fTsKKyAgICB9LAorCiAgICAgX2ZpbmRCYWxhbmNlZEN1cmx5QnJhY2tl
dHM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBjb3VudGVyID0gMDsKQEAgLTYwLDEw
ICs4MCw4IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXIucHJvdG90eXBlID0gewog
ICAgICAgICBpZiAoIXRoaXMuX2pzb24pCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAg
ICAgdGhpcy5fcGFyc2VTdHJpbmdzQXJyYXkoKTsKLSAgICAgICAgdGhpcy5fanNvbiA9ICIiOwog
ICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QodGhpcy5f
c25hcHNob3QpOwotICAgICAgICB0aGlzLl9qc29uID0gIiI7Ci0gICAgICAgIHRoaXMuX3NuYXBz
aG90ID0ge307CisgICAgICAgIHRoaXMuX3Jlc2V0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfSwKIApAQCAtMTE0LDYgKzEzMiw5IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RM
b2FkZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zbmFwc2hvdC5zdHJpbmdzID0gSlNP
Ti5wYXJzZSh0aGlzLl9qc29uKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IGNodW5rCisgICAgICovCiAgICAgcHVzaEpTT05DaHVuazogZnVuY3Rpb24oY2h1bmsp
CiAgICAgewogICAgICAgICB0aGlzLl9qc29uICs9IGNodW5rOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJveHkuanMKaW5kZXgg
NzY1YmFlNGRhY2I2MzMwNzgyZmEyZWU2ZmU5YmMyZDIxYTNmOGJmYS4uOTdhMzM3NTU3YWQ2ODZh
OTg0ZjMxOWExZjAzYzMxOGE2MmNiMTJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzCkBAIC0yNDUsNiArMjQ1
LDggQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlci5wcm90b3R5cGUgPSB7CiAKICAg
ICBzdGFydENoZWNraW5nRm9yTG9uZ1J1bm5pbmdDYWxsczogZnVuY3Rpb24oKQogICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMuX2ludGVydmFsKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0
aGlzLl9jaGVja0xvbmdSdW5uaW5nQ2FsbHMoKTsKICAgICAgICAgdGhpcy5faW50ZXJ2YWwgPSBz
ZXRJbnRlcnZhbCh0aGlzLl9jaGVja0xvbmdSdW5uaW5nQ2FsbHMuYmluZCh0aGlzKSwgMzAwKTsK
ICAgICB9LApAQCAtMzUzLDYgKzM1NSw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94
eU9iamVjdC5wcm90b3R5cGUgPSB7CiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMg
e1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eU9iamVjdH0KKyAqIEBpbXBsZW1lbnRzIHtX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmVjZWl2ZXJ9CiAgKi8KIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RMb2FkZXJQcm94eSA9IGZ1bmN0aW9uKHdvcmtlciwgb2JqZWN0SWQpCiB7CkBAIC0z
NjMsNiArMzY2LDI1IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXJQcm94eSA9IGZ1
bmN0aW9uKHdvcmtlciwgb2JqZWN0SWQpCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVy
UHJveHkucHJvdG90eXBlID0gewogICAgIC8qKgogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5KX0gY2FsbGJhY2sKKyAgICAgKiBAcmV0dXJuIHti
b29sZWFufQorICAgICAqLworICAgIHN0YXJ0TG9hZGluZzogZnVuY3Rpb24oY2FsbGJhY2spCisg
ICAgeworICAgICAgICB2YXIgbG9hZGluZ0hhc0p1c3RTdGFydGVkID0gIXRoaXMuX29uTG9hZENh
bGxiYWNrcy5sZW5ndGg7CisgICAgICAgIHRoaXMuX29uTG9hZENhbGxiYWNrcy5wdXNoKGNhbGxi
YWNrKTsKKyAgICAgICAgcmV0dXJuIGxvYWRpbmdIYXNKdXN0U3RhcnRlZDsKKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNodW5rCisgICAgICovCisgICAgcHVzaEpT
T05DaHVuazogZnVuY3Rpb24oY2h1bmspCisgICAgeworICAgICAgICB0aGlzLmNhbGxNZXRob2Qo
bnVsbCwgInB1c2hKU09OQ2h1bmsiLCBjaHVuayk7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5KX0gY2FsbGJh
Y2sKICAgICAgKi8KICAgICBmaW5pc2hMb2FkaW5nOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7
CkBAIC0zODAsMjIgKzQwMiw2IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXJQcm94
eS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9vbkxvYWRDYWxsYmFja3MgPSBudWxs
OwogICAgICAgICB9CiAgICAgICAgIHRoaXMuY2FsbEZhY3RvcnlNZXRob2QodXBkYXRlU3RhdGlj
RGF0YS5iaW5kKHRoaXMpLCAiZmluaXNoTG9hZGluZyIsICJXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90UHJveHkiKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtmdW5jdGlvbihX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkpfSBjYWxsYmFjawotICAgICAqIEByZXR1cm4g
e2Jvb2xlYW59Ci0gICAgICovCi0gICAgc3RhcnRMb2FkaW5nOiBmdW5jdGlvbihjYWxsYmFjaykK
LSAgICB7Ci0gICAgICAgIHZhciBsb2FkaW5nSGFzSnVzdFN0YXJ0ZWQgPSAhdGhpcy5fb25Mb2Fk
Q2FsbGJhY2tzLmxlbmd0aDsKLSAgICAgICAgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzLnB1c2goY2Fs
bGJhY2spOwotICAgICAgICByZXR1cm4gbG9hZGluZ0hhc0p1c3RTdGFydGVkOwotICAgIH0sCi0K
LSAgICBwdXNoSlNPTkNodW5rOiBmdW5jdGlvbihjaHVuaykKLSAgICB7Ci0gICAgICAgIHRoaXMu
Y2FsbE1ldGhvZChudWxsLCAicHVzaEpTT05DaHVuayIsIGNodW5rKTsKICAgICB9CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hv
dFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hv
dFZpZXcuanMKaW5kZXggNmMzZGZkZmE5YjJkOWE2YWY2ZWZkMWMxYjEzYzFiNjYzYzc4MTA5Ny4u
NTU4NTQ3YWE2Njc5MWNjNmQ0MTUzNWU1NDM2ZmMyMTQ4NDUzYzkzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcwpA
QCAtNzg1LDYgKzc4NSw0MiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUu
cHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5wcm90b3R5cGU7CiAK
KworLyoqCisgKiBAaW50ZXJmYWNlCisgKi8KK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZWNl
aXZlciA9IGZ1bmN0aW9uKCkKK3sKK30KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJlY2Vp
dmVyLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RQcm94eSl9IGNhbGxiYWNrCisgICAgICogQHJldHVybiB7Ym9v
bGVhbn0KKyAgICAgKi8KKyAgICBzdGFydExvYWRpbmc6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAg
IHsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNodW5rCisgICAg
ICovCisgICAgcHVzaEpTT05DaHVuazogZnVuY3Rpb24oY2h1bmspCisgICAgeworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RQcm94eSl9IGNhbGxiYWNrCisgICAgICovCisgICAgZmluaXNoTG9hZGluZzogZnVuY3Rpb24o
Y2FsbGJhY2spCisgICAgeworICAgIH0sCisKKyAgICBkaXNwb3NlOiBmdW5jdGlvbigpCisgICAg
eworICAgIH0KK307CisKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5z
cGVjdG9yLlByb2ZpbGVIZWFkZXJ9CkBAIC03OTgsOSArODM0LDkgQEAgV2ViSW5zcGVjdG9yLkhl
YXBQcm9maWxlSGVhZGVyID0gZnVuY3Rpb24odHlwZSwgdGl0bGUsIHVpZCwgbWF4SlNPYmplY3RJ
ZCkKICAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlci5jYWxsKHRoaXMsIHR5cGUsIHRpdGxl
LCB1aWQpOwogICAgIHRoaXMubWF4SlNPYmplY3RJZCA9IG1heEpTT2JqZWN0SWQ7CiAgICAgLyoq
Ci0gICAgICogQHR5cGUge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXJQcm94eX0KKyAg
ICAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJlY2VpdmVyfQogICAgICAqLwot
ICAgIHRoaXMuX2xvYWRlclByb3h5ID0gbnVsbDsKKyAgICB0aGlzLl9sb2FkZXIgPSBudWxsOwog
ICAgIC8qKgogICAgICAqIEB0eXBlIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHl9CiAg
ICAgICovCkBAIC04NDEsMTAgKzg3NywxMSBAQCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFk
ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKCF0aGlzLl9sb2FkZXJQcm94eSkKKyAgICAgICAgaWYgKCF0aGlzLl9yZWNlaXZlcikK
ICAgICAgICAgICAgIHRoaXMuX3NldHVwV29ya2VyKCk7CiAKLSAgICAgICAgaWYgKHRoaXMuX2xv
YWRlclByb3h5LnN0YXJ0TG9hZGluZyhjYWxsYmFjaykpIHsKKyAgICAgICAgdGhpcy5fbnVtYmVy
T2ZDaHVua3MgPSAwOworICAgICAgICBpZiAodGhpcy5fcmVjZWl2ZXIuc3RhcnRMb2FkaW5nKGNh
bGxiYWNrKSkgewogICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiTG9hZGluZ1x1MjAyNiIpOwogICAgICAgICAgICAgdGhpcy5z
aWRlYmFyRWxlbWVudC53YWl0ID0gdHJ1ZTsKICAgICAgICAgICAgIFByb2ZpbGVyQWdlbnQuZ2V0
UHJvZmlsZSh0aGlzLnByb2ZpbGVUeXBlKCkuaWQsIHRoaXMudWlkKTsKQEAgLTg1OCwzMSArODk1
LDI4IEBAIFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KICAgICAgICAgdmFyIHdvcmtlciA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
V29ya2VyKCk7CiAgICAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJ3YWl0Iiwgc2V0UHJv
ZmlsZVdhaXQsIHRoaXMpOwotICAgICAgICB0aGlzLl9sb2FkZXJQcm94eSA9IHdvcmtlci5jcmVh
dGVPYmplY3QoIldlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXIiKTsKKyAgICAgICAgdGhp
cy5fcmVjZWl2ZXIgPSB3b3JrZXIuY3JlYXRlT2JqZWN0KCJXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90TG9hZGVyIik7CiAgICAgfSwKIAogICAgIGRpc3Bvc2U6IGZ1bmN0aW9uKCkKICAgICB7Ci0g
ICAgICAgIGlmICh0aGlzLl9sb2FkZXJQcm94eSkKLSAgICAgICAgICAgIHRoaXMuX2xvYWRlclBy
b3h5LmRpc3Bvc2UoKTsKKyAgICAgICAgaWYgKHRoaXMuX3JlY2VpdmVyKQorICAgICAgICAgICAg
dGhpcy5fcmVjZWl2ZXIuZGlzcG9zZSgpOwogICAgICAgICBlbHNlIGlmICh0aGlzLl9zbmFwc2hv
dFByb3h5KQogICAgICAgICAgICAgdGhpcy5fc25hcHNob3RQcm94eS5kaXNwb3NlKCk7CiAgICAg
fSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzYXZlZENodW5rc0NvdW50CiAgICAgICovCi0gICAgX3Nh
dmVTdGF0dXNVcGRhdGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zYXZlU3RhdHVzVXBkYXRlOiBm
dW5jdGlvbihzYXZlZENodW5rc0NvdW50KQogICAgIHsKLSAgICAgICAgaWYgKGV2ZW50LmRhdGEg
IT09IHRoaXMuX2ZpbGVOYW1lKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoKyt0
aGlzLl9zYXZlZENodW5rc0NvdW50ID09PSB0aGlzLl90b3RhbE51bWJlck9mQ2h1bmtzKSB7Cisg
ICAgICAgIGlmIChzYXZlZENodW5rc0NvdW50ID09PSB0aGlzLl90b3RhbE51bWJlck9mQ2h1bmtz
KSB7CiAgICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0gTnVtYmVyLmJ5
dGVzVG9TdHJpbmcodGhpcy5fc25hcHNob3RQcm94eS50b3RhbFNpemUpOwogICAgICAgICAgICAg
dGhpcy5zaWRlYmFyRWxlbWVudC53YWl0ID0gZmFsc2U7CiAgICAgICAgICAgICB0aGlzLl9zYXZl
ZENodW5rc0NvdW50ID0gMDsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5y
ZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaWxlTWFuYWdlci5FdmVudFR5cGVzLkFw
cGVuZGVkVG9VUkwsIHRoaXMuX3NhdmVTdGF0dXNVcGRhdGUsIHRoaXMpOwogICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlNhdmluZ1x1MjAyNiAlZFwlIiwgKHRoaXMuX3NhdmVkQ2h1bmtzQ291bnQg
KiAxMDAgLyB0aGlzLl90b3RhbE51bWJlck9mQ2h1bmtzKS50b0ZpeGVkKDIpKTsKKyAgICAgICAg
ICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlNhdmluZ1x1MjAyNiAlZFwlIiwgKHNhdmVkQ2h1bmtzQ291bnQgKiAxMDAgLyB0aGlzLl90b3Rh
bE51bWJlck9mQ2h1bmtzKS50b0ZpeGVkKDIpKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC04OTAs
MjggKzkyNCwyNiBAQCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlID0g
ewogICAgICAqLwogICAgIHB1c2hKU09OQ2h1bms6IGZ1bmN0aW9uKGNodW5rKQogICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMuX2xvYWRlclByb3h5KSB7Ci0gICAgICAgICAgICArK3RoaXMuX3RvdGFs
TnVtYmVyT2ZDaHVua3M7Ci0gICAgICAgICAgICB0aGlzLl9sb2FkZXJQcm94eS5wdXNoSlNPTkNo
dW5rKGNodW5rKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuc2lkZWJhckVs
ZW1lbnQud2FpdCA9IHRydWU7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuZmlsZU1hbmFnZXIu
YXBwZW5kKHRoaXMuX2ZpbGVOYW1lLCBjaHVuayk7Ci0gICAgICAgIH0KKyAgICAgICAgKyt0aGlz
Ll9udW1iZXJPZkNodW5rczsKKyAgICAgICAgdGhpcy5fcmVjZWl2ZXIucHVzaEpTT05DaHVuayhj
aHVuayk7CiAgICAgfSwKIAotICAgIGZpbmlzaEhlYXBTbmFwc2hvdDogZnVuY3Rpb24oKQorICAg
IF9wYXJzZWQ6IGZ1bmN0aW9uKHNuYXBzaG90UHJveHkpCiAgICAgewotICAgICAgICBmdW5jdGlv
biBwYXJzZWQoc25hcHNob3RQcm94eSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5fbG9h
ZGVyUHJveHkgPSBudWxsOworICAgICAgICB0aGlzLl9yZWNlaXZlciA9IG51bGw7CisgICAgICAg
IGlmIChzbmFwc2hvdFByb3h5KQogICAgICAgICAgICAgdGhpcy5fc25hcHNob3RQcm94eSA9IHNu
YXBzaG90UHJveHk7Ci0gICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0g
TnVtYmVyLmJ5dGVzVG9TdHJpbmcoc25hcHNob3RQcm94eS50b3RhbFNpemUpOwotICAgICAgICAg
ICAgdGhpcy5zaWRlYmFyRWxlbWVudC53YWl0ID0gZmFsc2U7Ci0gICAgICAgICAgICB2YXIgd29y
a2VyID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90V29ya2VyfSAqLyBzbmFw
c2hvdFByb3h5LndvcmtlcjsKLSAgICAgICAgICAgIHRoaXMuaXNUZW1wb3JhcnkgPSBmYWxzZTsK
LSAgICAgICAgICAgIHdvcmtlci5zdGFydENoZWNraW5nRm9yTG9uZ1J1bm5pbmdDYWxscygpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmICh0aGlzLl9sb2FkZXJQcm94eS5maW5pc2hMb2FkaW5nKHBh
cnNlZC5iaW5kKHRoaXMpKSkKKyAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9
IE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuX3NuYXBzaG90UHJveHkudG90YWxTaXplKTsKKyAg
ICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC53YWl0ID0gZmFsc2U7CisgICAgICAgIHZhciB3b3Jr
ZXIgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXJ9ICovIHRoaXMu
X3NuYXBzaG90UHJveHkud29ya2VyOworICAgICAgICB0aGlzLmlzVGVtcG9yYXJ5ID0gZmFsc2U7
CisgICAgICAgIHdvcmtlci5zdGFydENoZWNraW5nRm9yTG9uZ1J1bm5pbmdDYWxscygpOworICAg
IH0sCisKKyAgICBmaW5pc2hIZWFwU25hcHNob3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHRoaXMuX3RvdGFsTnVtYmVyT2ZDaHVua3MgPSB0aGlzLl9udW1iZXJPZkNodW5rczsKKyAgICAg
ICAgaWYgKHRoaXMuX3JlY2VpdmVyLmZpbmlzaExvYWRpbmcodGhpcy5fcGFyc2VkLmJpbmQodGhp
cykpKQogICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUGFyc2luZ1x1MjAyNiIpOwogICAgIH0sCiAKQEAgLTkyOSwyNCArOTYx
LDkgQEAgV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZSA9IHsKICAgICAg
Ki8KICAgICBzYXZlVG9GaWxlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICAvKioKLSAgICAg
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50Ci0gICAgICAgICAqLwotICAg
ICAgICBmdW5jdGlvbiBzdGFydFNhdmluZ1NuYXBzaG90KGV2ZW50KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoZXZlbnQuZGF0YSAhPT0gdGhpcy5fZmlsZU5hbWUpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC53YWl0ID0gdHJ1ZTsK
LSAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlNhdmluZ1x1MjAyNiAlZFwlIiwgMCk7Ci0gICAgICAgICAgICB0aGlzLl9zYXZl
ZENodW5rc0NvdW50ID0gMDsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5y
ZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaWxlTWFuYWdlci5FdmVudFR5cGVzLlNh
dmVkVVJMLCBzdGFydFNhdmluZ1NuYXBzaG90LCB0aGlzKTsKLSAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5maWxlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaWxlTWFuYWdl
ci5FdmVudFR5cGVzLkFwcGVuZGVkVG9VUkwsIHRoaXMuX3NhdmVTdGF0dXNVcGRhdGUsIHRoaXMp
OwotICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5nZXRQcm9maWxlKHRoaXMucHJvZmlsZVR5cGUo
KS5pZCwgdGhpcy51aWQpOwotICAgICAgICB9Ci0KICAgICAgICAgdGhpcy5fZmlsZU5hbWUgPSB0
aGlzLl9maWxlTmFtZSB8fCAiSGVhcC0iICsgbmV3IERhdGUoKS50b0lTTzg2MDFDb21wYWN0KCkg
KyAiLmhlYXBzbmFwc2hvdCI7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaWxlTWFuYWdlci5FdmVudFR5cGVzLlNhdmVkVVJM
LCBzdGFydFNhdmluZ1NuYXBzaG90LCB0aGlzKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmZpbGVN
YW5hZ2VyLnNhdmUodGhpcy5fZmlsZU5hbWUsICIiLCB0cnVlKTsKKyAgICAgICAgdGhpcy5fcmVj
ZWl2ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNhdmVUb0ZpbGVSZWNlaXZlcih0
aGlzLl9maWxlTmFtZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX3JlY2VpdmVyLnN0YXJ0TG9hZGlu
ZyhmdW5jdGlvbihzbmFwc2hvdCkgeyB9KTsKICAgICB9LAogCiAgICAgLyoqCkBAIC05ODMsMTUg
KzEwMDAsOCBAQCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJMb2FkaW5nXHUyMDI2Iik7CiAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQud2FpdCA9
IHRydWU7CiAgICAgICAgIHRoaXMuX3NldHVwV29ya2VyKCk7Ci0gICAgICAgIHRoaXMuX2xvYWRl
clByb3h5LnN0YXJ0TG9hZGluZyhmdW5jdGlvbihpZ25vcmVkU25hcHNob3RQcm94eSkgeyB9KTsK
LQotICAgICAgICBmdW5jdGlvbiBsb2FkTmV4dENodW5rKGZpbGUsIHJlYWRlciwgbG9hZGVkU2l6
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGNodW5rU2l6ZSA9IDEwMDAwMDAwOwotICAg
ICAgICAgICAgdmFyIHNpemUgPSBmaWxlLnNpemUgPCBsb2FkZWRTaXplICsgY2h1bmtTaXplID8g
ZmlsZS5zaXplIC0gbG9hZGVkU2l6ZSA6IGNodW5rU2l6ZTsKLSAgICAgICAgICAgIHZhciBuZXh0
UGFydCA9IGZpbGUud2Via2l0U2xpY2UobG9hZGVkU2l6ZSwgbG9hZGVkU2l6ZSArIHNpemUpOwot
ICAgICAgICAgICAgcmVhZGVyLnJlYWRBc1RleHQobmV4dFBhcnQpOwotICAgICAgICB9CisgICAg
ICAgIHRoaXMuX251bWJlck9mQ2h1bmtzID0gMDsKKyAgICAgICAgdGhpcy5fcmVjZWl2ZXIuc3Rh
cnRMb2FkaW5nKGZ1bmN0aW9uKGlnbm9yZWRTbmFwc2hvdFByb3h5KSB7IH0pOwogCiAgICAgICAg
IC8qKgogICAgICAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudApAQCAtMTAwMCwyNSArMTAxMCwx
MjAgQEAgV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlICE9PSBGaWxlUmVh
ZGVyLkRPTkUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgdGhpcy5fbmV4
dENodW5rTG9hZGVkKGV2ZW50LnRhcmdldC5yZXN1bHQpOworICAgICAgICB9CisKKyAgICAgICAg
dGhpcy5fZmlsZSA9IGZpbGU7CisgICAgICAgIHRoaXMuX2V4cGVjdGVkU2l6ZSA9IGZpbGUuc2l6
ZTsKKyAgICAgICAgdGhpcy5fbG9hZGVkU2l6ZSA9IDA7CisgICAgICAgIHRoaXMuX3JlYWRlciA9
IHRoaXMuX2NyZWF0ZUZpbGVSZWFkZXIoKTsKKyAgICAgICAgdGhpcy5fcmVhZGVyLm9ubG9hZCA9
IG9uTG9hZC5iaW5kKHRoaXMpOworICAgICAgICB0aGlzLl9yZWFkZXIub25lcnJvciA9IG9uRXJy
b3I7CisgICAgICAgIHRoaXMuX2xvYWROZXh0Q2h1bmsoKTsKKyAgICB9LAogCi0gICAgICAgICAg
ICB0aGlzLl9sb2FkZWRTaXplICs9IGV2ZW50LnRhcmdldC5yZXN1bHQubGVuZ3RoOwotICAgICAg
ICAgICAgdGhpcy5fbG9hZGVyUHJveHkucHVzaEpTT05DaHVuayhldmVudC50YXJnZXQucmVzdWx0
KTsKLSAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkxvYWRpbmdcdTIwMjYgJWQlIiwgKHRoaXMuX2xvYWRlZFNpemUgKiAxMDAg
LyBmaWxlLnNpemUpLnRvRml4ZWQoMikpOworICAgIF9sb2FkTmV4dENodW5rOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB2YXIgbG9hZGVkU2l6ZSA9IHRoaXMuX2xvYWRlZFNpemU7CisgICAg
ICAgIHZhciBjaHVua1NpemUgPSAxMDAwMDAwMDsKKyAgICAgICAgdmFyIHNpemUgPSB0aGlzLl9l
eHBlY3RlZFNpemUgPCBsb2FkZWRTaXplICsgY2h1bmtTaXplID8gdGhpcy5fZXhwZWN0ZWRTaXpl
IC0gbG9hZGVkU2l6ZSA6IGNodW5rU2l6ZTsKKyAgICAgICAgdmFyIG5leHRQYXJ0ID0gdGhpcy5f
ZmlsZS53ZWJraXRTbGljZShsb2FkZWRTaXplLCBsb2FkZWRTaXplICsgc2l6ZSk7CisgICAgICAg
IHRoaXMuX3JlYWRlci5yZWFkQXNUZXh0KG5leHRQYXJ0KTsKKyAgICB9LAogCi0gICAgICAgICAg
ICBpZiAodGhpcy5fbG9hZGVkU2l6ZSA9PT0gZmlsZS5zaXplKSB7Ci0gICAgICAgICAgICAgICAg
dGhpcy5maW5pc2hIZWFwU25hcHNob3QoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9CisgICAgX25leHRDaHVua0xvYWRlZDogZnVuY3Rpb24oZGF0YSkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2xvYWRlZFNpemUgKz0gZGF0YS5sZW5ndGg7CisgICAgICAgIHRoaXMuX3Jl
Y2VpdmVyLnB1c2hKU09OQ2h1bmsoZGF0YSk7CisgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQu
c3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvYWRpbmdcdTIwMjYgJWQlIiwgKHRo
aXMuX2xvYWRlZFNpemUgKiAxMDAgLyB0aGlzLl9leHBlY3RlZFNpemUpLnRvRml4ZWQoMikpOwog
Ci0gICAgICAgICAgICBsb2FkTmV4dENodW5rKGZpbGUsIHJlYWRlciwgdGhpcy5fbG9hZGVkU2l6
ZSk7CisgICAgICAgIGlmICh0aGlzLl9sb2FkZWRTaXplID09PSB0aGlzLl9leHBlY3RlZFNpemUp
IHsKKyAgICAgICAgICAgIHRoaXMuZmluaXNoSGVhcFNuYXBzaG90KCk7CisgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgdGhpcy5fbG9hZE5leHRDaHVuaygpOworICAgIH0s
CiAKLSAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7Ci0gICAgICAgIHJlYWRl
ci5vbmxvYWQgPSBvbkxvYWQuYmluZCh0aGlzKTsKLSAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSBv
bkVycm9yOwotICAgICAgICB0aGlzLl9sb2FkZWRTaXplID0gMDsKLSAgICAgICAgbG9hZE5leHRD
aHVuayhmaWxlLCByZWFkZXIsIHRoaXMuX2xvYWRlZFNpemUpOworICAgIF9jcmVhdGVGaWxlUmVh
ZGVyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IEZpbGVSZWFkZXIoKTsK
ICAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFkZXIucHJvdG90eXBlOworCisKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKiBAaW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFJlY2VpdmVyfQorICovCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U2F2ZVRvRmlsZVJlY2Vp
dmVyID0gZnVuY3Rpb24oZmlsZU5hbWUsIHNuYXBzaG90SGVhZGVyKQoreworICAgIHRoaXMuX2Zp
bGVOYW1lID0gZmlsZU5hbWU7CisgICAgdGhpcy5fc25hcHNob3RIZWFkZXIgPSBzbmFwc2hvdEhl
YWRlcjsKKyAgICB0aGlzLl9zYXZlZENodW5rcyA9IDA7CisgICAgdGhpcy5fZmluaXNoTG9hZGlu
Z0NhbGxiYWNrcyA9IFtdOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U2F2ZVRvRmls
ZVJlY2VpdmVyLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9u
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eSl9IGNhbGxiYWNrCisgICAgICogQHJldHVy
biB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBzdGFydExvYWRpbmc6IGZ1bmN0aW9uKGNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkZpbGVNYW5hZ2VyLkV2ZW50VHlwZXMuU2F2ZWRVUkwsIHRoaXMuX3N0
YXJ0U2F2aW5nU25hcHNob3QsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuZmlsZU1hbmFn
ZXIuc2F2ZSh0aGlzLl9maWxlTmFtZSwgIiIsIHRydWUpOworICAgICAgICBpZiAoY2FsbGJhY2sp
CisgICAgICAgICAgICB0aGlzLl9maW5pc2hMb2FkaW5nQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2sp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IGNodW5rCisgICAgICovCisgICAgcHVzaEpTT05DaHVuazogZnVuY3Rpb24oY2h1
bmspCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuZmlsZU1hbmFnZXIuYXBwZW5kKHRoaXMu
X2ZpbGVOYW1lLCBjaHVuayk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5KX0gY2FsbGJhY2sKKyAgICAgKi8K
KyAgICBmaW5pc2hMb2FkaW5nOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRo
aXMuX2ZpbmlzaExvYWRpbmdDYWxsYmFja3MucHVzaChjYWxsYmFjayk7CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy5fZmluaXNoTG9hZGluZ0NhbGxiYWNrcy5sZW5ndGg7ICsraSkK
KyAgICAgICAgICAgIHRoaXMuX2ZpbmlzaExvYWRpbmdDYWxsYmFja3NbaV0obnVsbCk7CisgICAg
fSwKKworICAgIGRpc3Bvc2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLworICAgIF9z
dGFydFNhdmluZ1NuYXBzaG90OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChl
dmVudC5kYXRhICE9PSB0aGlzLl9maWxlTmFtZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgdGhpcy5fc25hcHNob3RIZWFkZXIuX3NhdmVTdGF0dXNVcGRhdGUoMCk7CisgICAgICAgIFdl
Ykluc3BlY3Rvci5maWxlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5G
aWxlTWFuYWdlci5FdmVudFR5cGVzLlNhdmVkVVJMLCB0aGlzLl9zdGFydFNhdmluZ1NuYXBzaG90
LCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkZpbGVNYW5hZ2VyLkV2ZW50VHlwZXMuQXBwZW5kZWRUb1VSTCwgdGhp
cy5fc2F2ZVN0YXR1c1VwZGF0ZSwgdGhpcyk7CisgICAgICAgIFByb2ZpbGVyQWdlbnQuZ2V0UHJv
ZmlsZSh0aGlzLl9zbmFwc2hvdEhlYWRlci5wcm9maWxlVHlwZSgpLmlkLCB0aGlzLl9zbmFwc2hv
dEhlYWRlci51aWQpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBfc2F2ZVN0YXR1c1VwZGF0ZTogZnVuY3Rp
b24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQuZGF0YSAhPT0gdGhpcy5fZmlsZU5h
bWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX3NuYXBzaG90SGVhZGVyLl9z
YXZlU3RhdHVzVXBkYXRlKCsrdGhpcy5fc2F2ZWRDaHVua3MpOworICAgICAgICBpZiAodGhpcy5f
c2F2ZWRDaHVua3MgPT09IHRoaXMuX3NuYXBzaG90SGVhZGVyLl90b3RhbE51bWJlck9mQ2h1bmtz
KQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkZpbGVNYW5hZ2VyLkV2ZW50VHlwZXMuQXBwZW5kZWRUb1VSTCwgdGhp
cy5fc2F2ZVN0YXR1c1VwZGF0ZSwgdGhpcyk7CisgICAgfQorfTsKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCmluZGV4IDE4OGJh
MTAzYjY5OGFkMDlhZGM4NzFjN2YzNTg2ZmVmOTdkMDJiMWQuLjlkMWM0NjdjNDE5OTE2NGE5MWEw
ZWIzMjVkNmE4MmE3NmE5MjlkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAgLTI2NCwxNCArMjY0LDE2IEBAIFdlYklu
c3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgZmlsZVNlbGVjdG9y
RWxlbWVudC50eXBlID0gImZpbGUiOwogICAgICAgICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxl
LnpJbmRleCA9IC0xOwogICAgICAgICBmaWxlU2VsZWN0b3JFbGVtZW50LnN0eWxlLnBvc2l0aW9u
ID0gImFic29sdXRlIjsKLSAgICAgICAgZmlsZVNlbGVjdG9yRWxlbWVudC5vbmNoYW5nZSA9IHRo
aXMuX2xvYWRGcm9tRmlsZS5iaW5kKHRoaXMpOworICAgICAgICBmdW5jdGlvbiBvbkNoYW5nZShl
dmVudCkgeworICAgICAgICAgICAgdGhpcy5fbG9hZEZyb21GaWxlKHRoaXMuX2ZpbGVTZWxlY3Rv
ckVsZW1lbnQuZmlsZXNbMF0pOworICAgICAgICB9CisgICAgICAgIGZpbGVTZWxlY3RvckVsZW1l
bnQub25jaGFuZ2UgPSBvbkNoYW5nZS5iaW5kKHRoaXMpOwogICAgICAgICB0aGlzLmVsZW1lbnQu
YXBwZW5kQ2hpbGQoZmlsZVNlbGVjdG9yRWxlbWVudCk7CiAgICAgICAgIHRoaXMuX2ZpbGVTZWxl
Y3RvckVsZW1lbnQgPSBmaWxlU2VsZWN0b3JFbGVtZW50OwogICAgIH0sCiAKLSAgICBfbG9hZEZy
b21GaWxlOiBmdW5jdGlvbihldmVudCkKKyAgICBfbG9hZEZyb21GaWxlOiBmdW5jdGlvbihmaWxl
KQogICAgIHsKLSAgICAgICAgdmFyIGZpbGUgPSB0aGlzLl9maWxlU2VsZWN0b3JFbGVtZW50LmZp
bGVzWzBdOwogICAgICAgICBpZiAoIWZpbGUubmFtZS5lbmRzV2l0aCgiLmhlYXBzbmFwc2hvdCIp
KSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IubG9nKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
T25seSBoZWFwIHNuYXBzaG90cyBmcm9tIGZpbGVzIHdpdGggZXh0ZW5zaW9uICcuaGVhcHNuYXBz
aG90JyBjYW4gYmUgbG9hZGVkLiIpKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyOWJm
NTM3NGE3MzQ0NzUzNGY3NzE3ZDU3YjBkZGZjMDg5YWYzN2M5Li4xZTk4MjI2ZWZiNjA2MGE0Y2Iy
NWJhNjQwMTMxNzM2N2Y4YWY0YmQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDUtMjkg
IElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFJFR1JFU1NJT046IGxvYWQgaGVhcCBzbmFwc2hvdCBkb2Vzbid0IHdvcmsuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzY0MgorCisg
ICAgICAgIEhlYXBTbmFwc2hvdFJlY2VpdmVyIGludGVyZmFjZSB3YXMgaW50cm9kdWNlZC4KKyAg
ICAgICAgSXQgZGVjbGFyZXMgdGhlIEFQSSBmb3IgSFNMb2FkZXIsIEhTTG9hZGVyUHJveHkgYW5k
IEhTU2F2ZVRvRmlsZVJlY2VpdmVyLgorICAgICAgICBUaGUgSGVhcFByb2ZpbGVIZWFkZXIgd2Fz
IHJlZmFjdG9yZWQgYW5kIHRlc3RzIHdlcmUgYWRkZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFw
c2hvdC1sb2FkZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9o
ZWFwLXNuYXBzaG90LWxvYWRlci5odG1sOgorCiAyMDEyLTA1LTI5ICBKw6Fub3MgQmFkaWNzICA8
amJhZGljc0BpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRl
bmluZyBhZnRlciByMTE4NjMxLiBodHRwL3Rlc3RzL2FwcGNhY2hlL2xvYWQtZnJvbS1hcHBjYWNo
ZS1kZWZlci1yZXN1bWUtY3Jhc2guaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtbG9hZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWxvYWRlci1leHBlY3RlZC50eHQK
aW5kZXggMjMwYTM5NzUyMWE1YWY1Y2ZjMzlhN2QyNGU0MTc2MTFlMTljMzZhYS4uMTEzNDZiMDJl
NmU1OWZhYjA1YjgyMDEwYzU0ZmNlZmIzZWRhZDMzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtbG9hZGVyLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1sb2FkZXItZXhw
ZWN0ZWQudHh0CkBAIC0zLDMgKzMsNyBAQCBUaGlzIHRlc3QgY2hlY2tzIEhlYXBTbmFwc2hvdHMg
bG9hZGVyLgogCiBSdW5uaW5nOiBoZWFwU25hcHNob3RMb2FkZXJUZXN0CiAKK1J1bm5pbmc6IGhl
YXBTbmFwc2hvdFNhdmVUb0ZpbGVUZXN0CisKK1J1bm5pbmc6IGhlYXBTbmFwc2hvdExvYWRGcm9t
RmlsZVRlc3QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hl
YXAtc25hcHNob3QtbG9hZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIv
aGVhcC1zbmFwc2hvdC1sb2FkZXIuaHRtbAppbmRleCBmZDgzZTgwNjFjMWM2ZDhkNjY1NDM0ZDg0
OTZmNGZmYjc5NTYzODIyLi5kZTNkNGQ3MjgxZDAyZTA5MDY4MGUxODJhNjQxMGRhY2Y4ZWU2ZDVh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hv
dC1sb2FkZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1z
bmFwc2hvdC1sb2FkZXIuaHRtbApAQCAtMTEsMTIgKzExLDEzIEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhKU09OLnN0cmluZ2lmeShyZWZlcmVu
Y2UpLCBKU09OLnN0cmluZ2lmeShhY3R1YWwpKTsKICAgICB9CiAKKyAgICB2YXIgc291cmNlID0g
SW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrUmF3KCk7CisgICAgdmFyIHNvdXJj
ZVN0cmluZ2lmaWVkID0gSlNPTi5zdHJpbmdpZnkoc291cmNlKTsKKyAgICB2YXIgcGFydFNpemUg
PSBzb3VyY2VTdHJpbmdpZmllZC5sZW5ndGggPj4gMzsKKwogICAgIEluc3BlY3RvclRlc3QucnVu
VGVzdFN1aXRlKFsKICAgICAgICAgZnVuY3Rpb24gaGVhcFNuYXBzaG90TG9hZGVyVGVzdChuZXh0
KQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgc291cmNlID0gSW5zcGVjdG9yVGVzdC5jcmVh
dGVIZWFwU25hcHNob3RNb2NrUmF3KCk7Ci0gICAgICAgICAgICB2YXIgc291cmNlU3RyaW5naWZp
ZWQgPSBKU09OLnN0cmluZ2lmeShzb3VyY2UpOwotICAgICAgICAgICAgdmFyIHBhcnRTaXplID0g
c291cmNlU3RyaW5naWZpZWQubGVuZ3RoID4+IDM7CiAgICAgICAgICAgICB2YXIgbG9hZGVyID0g
bmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXIoKTsKICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwLCBsID0gc291cmNlU3RyaW5naWZpZWQubGVuZ3RoOyBpIDwgbDsgaSArPSBwYXJ0
U2l6ZSkKICAgICAgICAgICAgICAgICBsb2FkZXIucHVzaEpTT05DaHVuayhzb3VyY2VTdHJpbmdp
ZmllZC5zbGljZShpLCBpICsgcGFydFNpemUpKTsKQEAgLTI1LDYgKzI2LDgzIEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICAgICAgcmVzdWx0Ll9jb250YWlubWVudEVkZ2VzID0gbmV3IFVpbnQz
MkFycmF5KHJlc3VsdC5fY29udGFpbm1lbnRFZGdlcyk7CiAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydFNuYXBzaG90RXF1YWxzKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90KElu
c3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKSwgcmVzdWx0KTsKICAgICAgICAg
ICAgIG5leHQoKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiBoZWFwU25hcHNob3RT
YXZlVG9GaWxlVGVzdChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcHJvZmlsZVVJ
RCA9IDQyOworCisgICAgICAgICAgICB2YXIgZGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tlbmQu
X2RvbWFpbkRpc3BhdGNoZXJzWyJQcm9maWxlciJdOworICAgICAgICAgICAgdmFyIHBhbmVsID0g
V2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlczsKKworICAgICAgICAgICAgZGlzcGF0Y2hlci5h
ZGRQcm9maWxlSGVhZGVyKHsKKyAgICAgICAgICAgICAgICB0eXBlSWQ6IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQsCisgICAgICAgICAgICAgICAgdGl0bGU6ICJo
ZWFwU25hcHNob3RTYXZlVG9GaWxlVGVzdCIsCisgICAgICAgICAgICAgICAgdWlkOiBwcm9maWxl
VUlELAorICAgICAgICAgICAgICAgIG1heEpTT2JqZWN0SWQ6IDYKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICB2YXIgcHJvZmlsZUhlYWRlciA9IHBhbmVsLl9wcm9maWxlc1swXTsKKwor
ICAgICAgICAgICAgdmFyIG9sZEdldFByb2ZpbGUgPSBQcm9maWxlckFnZW50LmdldFByb2ZpbGU7
CisgICAgICAgICAgICBQcm9maWxlckFnZW50LmdldFByb2ZpbGUgPSBmdW5jdGlvbiBnZXRQcm9m
aWxlTW9jayhwcm9maWxlVHlwZU5hbWUsIHVpZCkgeworICAgICAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwLCBsID0gc291cmNlU3RyaW5naWZpZWQubGVuZ3RoOyBpIDwgbDsgaSArPSBwYXJ0U2l6
ZSkKKyAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hlci5hZGRIZWFwU25hcHNob3RDaHVuayh1
aWQsIHNvdXJjZVN0cmluZ2lmaWVkLnNsaWNlKGksIGkgKyBwYXJ0U2l6ZSkpOworICAgICAgICAg
ICAgICAgIGRpc3BhdGNoZXIuZmluaXNoSGVhcFNuYXBzaG90KHVpZCk7CisgICAgICAgICAgICB9
OworCisgICAgICAgICAgICB2YXIgc2F2ZWRTbmFwc2hvdERhdGE7CisgICAgICAgICAgICB2YXIg
b2xkU2F2ZSA9IEluc3BlY3RvckZyb250ZW5kSG9zdC5zYXZlOworICAgICAgICAgICAgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LnNhdmUgPSBmdW5jdGlvbiBzYXZlTW9jayh1cmwsIGRhdGEpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgc2F2ZWRTbmFwc2hvdERhdGEgPSBkYXRhOworICAg
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5zYXZlZFVSTCh1cmwpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgb2xkQXBwZW5kID0gSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmFwcGVuZDsKKyAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5hcHBlbmQg
PSBmdW5jdGlvbiBhcHBlbmRNb2NrKHVybCwgZGF0YSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBzYXZlZFNuYXBzaG90RGF0YSArPSBkYXRhOworICAgICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5maWxlTWFuYWdlci5hcHBlbmRlZFRvVVJMKHVybCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHBhcnNlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcHJvZmlsZUhlYWRlci5zYXZlVG9GaWxlKCk7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRFcXVhbHMoc291cmNlU3RyaW5naWZpZWQsIHNhdmVkU25hcHNob3REYXRh
LCAiU2F2ZWQgc25hcHNob3QgZGF0YSIpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LnNhdmUgPSBvbGRTYXZlOworICAgICAgICAgICAgICAgIEluc3BlY3RvckZyb250
ZW5kSG9zdC5hcHBlbmQgPSBvbGRBcHBlbmQ7CisgICAgICAgICAgICAgICAgUHJvZmlsZXJBZ2Vu
dC5nZXRQcm9maWxlID0gb2xkR2V0UHJvZmlsZTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIocHJvZmls
ZUhlYWRlciwgIl9wYXJzZWQiLCBwYXJzZWQpOworCisgICAgICAgICAgICBwYW5lbC5zaG93UHJv
ZmlsZShwcm9maWxlSGVhZGVyKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiBoZWFw
U25hcHNob3RMb2FkRnJvbUZpbGVUZXN0KG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwYW5lbCA9IFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXM7CisKKyAgICAgICAgICAgIHZh
ciBmaWxlTW9jayA9IHsKKyAgICAgICAgICAgICAgICBuYW1lOiAibW9jay5oZWFwc25hcHNob3Qi
LAorICAgICAgICAgICAgICAgIHNpemU6IHNvdXJjZVN0cmluZ2lmaWVkLmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICB3ZWJraXRTbGljZTogZnVuY3Rpb24oYmVnaW4sIGVuZCkgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
OworCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBl
Ll9jcmVhdGVGaWxlUmVhZGVyID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHsKKyAgICAgICAgICAgICAgICAgICAgcmVhZEFzVGV4dDogZnVuY3Rpb24oZmlsZVBhcnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcm9maWxlSGVhZGVyID0gcGFuZWwuX3Byb2Zp
bGVzW3BhbmVsLl9wcm9maWxlcy5sZW5ndGggLSAxXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihwcm9maWxlSGVhZGVyLCAiX3BhcnNlZCIsIGZ1bmN0
aW9uIHBhcnNlZCgpIHsgbmV4dCgpOyB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Zp
bGVIZWFkZXIuX25leHRDaHVua0xvYWRlZChzb3VyY2VTdHJpbmdpZmllZCk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcGFuZWwuX2xvYWRGcm9tRmlsZShmaWxlTW9jayk7CiAgICAgICAgIH0KICAgICBdKTsKIH0K
</data>
<flag name="review"
          id="151312"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>