<?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>72388</bug_id>
          
          <creation_ts>2011-11-15 08:02:29 -0800</creation_ts>
          <short_desc>Web Inspector: [Extensions API] drop ExtensionSidebarPane.onUpdated, use callbacks instead</short_desc>
          <delta_ts>2011-11-16 05:03:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (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>1</everconfirmed>
          <reporter name="Andrey Kosyakov">caseq</reporter>
          <assigned_to name="Andrey Kosyakov">caseq</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>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>502909</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-11-15 08:02:29 -0800</bug_when>
    <thetext>- fire ExtensionSidebarPane.on{Hidden,Shown} for non-iframe content (experssions/objects);
- drop ExtensionsSidebarPane.onUpdated, provide callback for setObject()/setExpression() instead;
- split LayoutTests/inspector/extensions.html into extensions-panel.html &amp; extensions-sidebar.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502910</commentid>
    <comment_count>1</comment_count>
      <attachid>115167</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-11-15 08:06:28 -0800</bug_when>
    <thetext>Created attachment 115167
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503671</commentid>
    <comment_count>2</comment_count>
      <attachid>115167</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-16 00:18:21 -0800</bug_when>
    <thetext>Comment on attachment 115167
Patch

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

&gt; Source/WebCore/inspector/front-end/ExtensionPanel.js:84
&gt; +WebInspector.ExtensionNotifierView = function(id)

You should probably make this a superclass of the ExtensionView.

&gt; Source/WebCore/inspector/front-end/ExtensionPanel.js:183
&gt; +    setObject: function(object, title, callback)

Drive-by: you should start annotating your code.

&gt; Source/WebCore/inspector/front-end/ExtensionPanel.js:215
&gt; +    _makeObjectPropertiesView: function()

_createObjectPropertiesView

&gt; Source/WebCore/inspector/front-end/ExtensionPanel.js:231
&gt; +            callback(&quot;operation cancelled&quot;);

What does &quot;operation cancelled&quot; mean for the client? Annotating this callback would give me a clue.

&gt; Source/WebCore/inspector/front-end/ExtensionServer.js:234
&gt; +            var result = error ? this._status.E_FAILED(error) : this._status.OK();

aha. so non-empty is error string.

&gt; Source/WebCore/inspector/front-end/View.js:173
&gt; +    detach: function(force)

force -&gt; overrideHideOnDetach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503774</commentid>
    <comment_count>3</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-11-16 04:56:46 -0800</bug_when>
    <thetext>Committed r100433: &lt;http://trac.webkit.org/changeset/100433&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503776</commentid>
    <comment_count>4</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-11-16 05:03:35 -0800</bug_when>
    <thetext>(In reply to comment #2)

&gt; &gt; Source/WebCore/inspector/front-end/ExtensionPanel.js:84
&gt; &gt; +WebInspector.ExtensionNotifierView = function(id)
&gt; 
&gt; You should probably make this a superclass of the ExtensionView.

I&apos;ve started with doing exactly this, then realized they won&apos;t even share a single method implementation due to checks for _frameIndex being present in willHide()/willShow().


&gt; &gt; Source/WebCore/inspector/front-end/ExtensionPanel.js:183
&gt; &gt; +    setObject: function(object, title, callback)
&gt; 
&gt; Drive-by: you should start annotating your code.

Done for entire ExtensionsPanel.js

&gt; &gt; Source/WebCore/inspector/front-end/ExtensionPanel.js:215
&gt; &gt; +    _makeObjectPropertiesView: function()
&gt; 
&gt; _createObjectPropertiesView

Done.

&gt; &gt; Source/WebCore/inspector/front-end/ExtensionPanel.js:231
&gt; &gt; +            callback(&quot;operation cancelled&quot;);
&gt; 
&gt; What does &quot;operation cancelled&quot; mean for the client? Annotating this callback would give me a clue.

Unfortunately it won&apos;t -- we can&apos;t specify parameter names in type annotation of callbacks.

&gt; &gt; Source/WebCore/inspector/front-end/View.js:173
&gt; &gt; +    detach: function(force)
&gt; 
&gt; force -&gt; overrideHideOnDetach

Done.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115167</attachid>
            <date>2011-11-15 08:06:28 -0800</date>
            <delta_ts>2011-11-16 00:18:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72388-20111115200626.patch</filename>
            <type>text/plain</type>
            <size>29978</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UwOGZmODA2MTE2YTk1
ZWU3NGFkZTliNmE3YTFiZmYxNjMxMzJhMi4uYTEzMWIzMDM4NmMwMmQyOGRjOTQ3MThiZjY4NDJk
YzBkZDYwZDIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDExLTExLTE1ICBBbmRy
ZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogW0V4dGVuc2lvbnMgQVBJXSBkcm9wIEV4dGVuc2lvblNpZGViYXJQYW5lLm9uVXBkYXRlZCwg
dXNlIGNhbGxiYWNrcyBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MjM4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3RzOiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXBhbmVs
Lmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtc2lk
ZWJhci5odG1sCisKKyAgICAgICAgLSBmaXJlIEV4dGVuc2lvblNpZGViYXJQYW5lLm9ue0hpZGRl
bixTaG93bn0gZm9yIG5vbi1pZnJhbWUgY29udGVudCAoZXhwZXJzc2lvbnMvb2JqZWN0cyk7Cisg
ICAgICAgIC0gZHJvcCBFeHRlbnNpb25zU2lkZWJhclBhbmUub25VcGRhdGVkLCBwcm92aWRlIGNh
bGxiYWNrIGZvciBzZXRPYmplY3QoKS9zZXRFeHByZXNzaW9uKCkgaW5zdGVhZDsKKyAgICAgICAg
LSBmaXggYW4gZXhjZXB0aW9uIHdoZW4gYSBwYWdlIGlzIHJlcGxhY2VkIHdpdGggb2JqZWN0L2V4
cHJlc3Npb24uCisKKyAgICAgICAgIGluc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpz
OgorICAgICAgICAoaW5qZWN0ZWRFeHRlbnNpb25BUEkuRXh0ZW5zaW9uU2lkZWJhclBhbmVJbXBs
KToKKyAgICAgICAgKGluamVjdGVkRXh0ZW5zaW9uQVBJLkV4dGVuc2lvblNpZGViYXJQYW5lSW1w
bC5wcm90b3R5cGUuc2V0RXhwcmVzc2lvbik6CisgICAgICAgIChpbmplY3RlZEV4dGVuc2lvbkFQ
SS5FeHRlbnNpb25TaWRlYmFyUGFuZUltcGwucHJvdG90eXBlLnNldE9iamVjdCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25QYW5lbC5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5FeHRlbnNpb25Ob3RpZmllclZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4
dGVuc2lvbk5vdGlmaWVyVmlldy5wcm90b3R5cGUud2FzU2hvd24pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkV4dGVuc2lvbk5vdGlmaWVyVmlldy5wcm90b3R5cGUud2lsbEhpZGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNpZGViYXJQYW5lLnByb3RvdHlwZS5zZXRPYmplY3Qp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNpZGViYXJQYW5lLnByb3RvdHlwZS5z
ZXRFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TaWRlYmFyUGFu
ZS5wcm90b3R5cGUuc2V0UGFnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2lk
ZWJhclBhbmUucHJvdG90eXBlLl9vbkV2YWx1YXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5F
eHRlbnNpb25TaWRlYmFyUGFuZS5wcm90b3R5cGUuX21ha2VPYmplY3RQcm9wZXJ0aWVzVmlldyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2lkZWJhclBhbmUucHJvdG90eXBlLl9z
ZXRPYmplY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVy
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29u
U2V0U2lkZWJhckNvbnRlbnQuY2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVu
c2lvblNlcnZlci5wcm90b3R5cGUuX29uU2V0U2lkZWJhckNvbnRlbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX2Rpc3BhdGNoQ2FsbGJhY2spOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVmlldy5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaWV3LnByb3RvdHlwZS5kZXRhY2gpOgorCiAyMDExLTExLTE1ICBTaW1vbiBIYXVzbWFu
biAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIENlbnRyYWxpemUg
aGlkZV9zeW1ib2xzIGFuZCBlbnN1cmUgYWxsIGxpYnMgYXJlIGJ1aWx0IHdpdGggc3ltYm9sIHZp
c2liaWxpdHkgJiBic3ltYm9saWNfZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkFQSS5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzCmluZGV4IDMzM2Y5YzBhYWM5NzYzYjEx
ZmQ5NzhjOWU5OGRiOTBkYmMyYTdlNGUuLmRlMjA5ZmNkZDc4MWQzN2QwMTZiZjliMDUzNmFhOTVl
YWJhNTVkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RXh0ZW5zaW9uQVBJLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RXh0ZW5zaW9uQVBJLmpzCkBAIC0zNDUsNyArMzQ1LDYgQEAgRXh0ZW5zaW9uUGFuZWxJbXBsLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBFeHRlbnNpb25WaWV3SW1wbC5wcm90b3R5cGU7CiBmdW5jdGlv
biBFeHRlbnNpb25TaWRlYmFyUGFuZUltcGwoaWQpCiB7CiAgICAgRXh0ZW5zaW9uVmlld0ltcGwu
Y2FsbCh0aGlzLCBpZCk7Ci0gICAgdGhpcy5vblVwZGF0ZWQgPSBuZXcgRXZlbnRTaW5rKCJzaWRl
YmFyLXVwZGF0ZWQtIiArIGlkKTsKIH0KIAogRXh0ZW5zaW9uU2lkZWJhclBhbmVJbXBsLnByb3Rv
dHlwZSA9IHsKQEAgLTM1NCwxNCArMzUzLDE0IEBAIEV4dGVuc2lvblNpZGViYXJQYW5lSW1wbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdCh7IGNvbW1h
bmQ6ICJzZXRTaWRlYmFySGVpZ2h0IiwgaWQ6IHRoaXMuX2lkLCBoZWlnaHQ6IGhlaWdodCB9KTsK
ICAgICB9LAogCi0gICAgc2V0RXhwcmVzc2lvbjogZnVuY3Rpb24oZXhwcmVzc2lvbiwgcm9vdFRp
dGxlKQorICAgIHNldEV4cHJlc3Npb246IGZ1bmN0aW9uKGV4cHJlc3Npb24sIHJvb3RUaXRsZSwg
Y2FsbGJhY2spCiAgICAgewotICAgICAgICBleHRlbnNpb25TZXJ2ZXIuc2VuZFJlcXVlc3QoeyBj
b21tYW5kOiAic2V0U2lkZWJhckNvbnRlbnQiLCBpZDogdGhpcy5faWQsIGV4cHJlc3Npb246IGV4
cHJlc3Npb24sIHJvb3RUaXRsZTogcm9vdFRpdGxlLCBldmFsdWF0ZU9uUGFnZTogdHJ1ZSB9KTsK
KyAgICAgICAgZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFuZDogInNldFNpZGVi
YXJDb250ZW50IiwgaWQ6IHRoaXMuX2lkLCBleHByZXNzaW9uOiBleHByZXNzaW9uLCByb290VGl0
bGU6IHJvb3RUaXRsZSwgZXZhbHVhdGVPblBhZ2U6IHRydWUgfSwgY2FsbGJhY2spOwogICAgIH0s
CiAKLSAgICBzZXRPYmplY3Q6IGZ1bmN0aW9uKGpzb25PYmplY3QsIHJvb3RUaXRsZSkKKyAgICBz
ZXRPYmplY3Q6IGZ1bmN0aW9uKGpzb25PYmplY3QsIHJvb3RUaXRsZSwgY2FsbGJhY2spCiAgICAg
ewotICAgICAgICBleHRlbnNpb25TZXJ2ZXIuc2VuZFJlcXVlc3QoeyBjb21tYW5kOiAic2V0U2lk
ZWJhckNvbnRlbnQiLCBpZDogdGhpcy5faWQsIGV4cHJlc3Npb246IGpzb25PYmplY3QsIHJvb3RU
aXRsZTogcm9vdFRpdGxlIH0pOworICAgICAgICBleHRlbnNpb25TZXJ2ZXIuc2VuZFJlcXVlc3Qo
eyBjb21tYW5kOiAic2V0U2lkZWJhckNvbnRlbnQiLCBpZDogdGhpcy5faWQsIGV4cHJlc3Npb246
IGpzb25PYmplY3QsIHJvb3RUaXRsZTogcm9vdFRpdGxlIH0sIGNhbGxiYWNrKTsKICAgICB9LAog
CiAgICAgc2V0UGFnZTogZnVuY3Rpb24ocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblBhbmVsLmpzCmluZGV4IDA0YTlkZGJiMDExZTE3
OGNjZDRjNDM4YjUwN2E5ODZmZmFhYzMyZmIuLmYxZTVmYzAxMzA4NWRiYmZiYTYwZTlhOGQ5MTA3
MzlhMWEyMmU1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRXh0ZW5zaW9uUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FeHRlbnNpb25QYW5lbC5qcwpAQCAtNzcsNiArNzcsMzQgQEAgV2ViSW5zcGVjdG9yLkV4
dGVuc2lvblZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3Rv
dHlwZTsKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3Iu
Vmlld30KKyAqIEBwYXJhbSB7bnVtYmVyfSBpZAorICovCisKK1dlYkluc3BlY3Rvci5FeHRlbnNp
b25Ob3RpZmllclZpZXcgPSBmdW5jdGlvbihpZCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuVmlldy5j
YWxsKHRoaXMpOworICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSAiZmlsbCI7CisKKyAgICB0
aGlzLl9pZCA9IGlkOworfQorCitXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uTm90aWZpZXJWaWV3LnBy
b3RvdHlwZSA9IHsKKyAgICB3YXNTaG93bjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLmV4dGVuc2lvblNlcnZlci5ub3RpZnlWaWV3U2hvd24odGhpcy5faWQpOworICAg
IH0sCisKKyAgICB3aWxsSGlkZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLmV4dGVuc2lvblNlcnZlci5ub3RpZnlWaWV3SGlkZGVuKHRoaXMuX2lkKTsKKyAgICB9Cit9
CisKK1dlYkluc3BlY3Rvci5FeHRlbnNpb25Ob3RpZmllclZpZXcucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IK
ICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUGFuZWx9CiAgKiBAcGFyYW0ge3N0cmluZ30gaWQK
ICAqIEBwYXJhbSB7c3RyaW5nfSBsYWJlbApAQCAtMTUyLDQwICsxODAsNjUgQEAgV2ViSW5zcGVj
dG9yLkV4dGVuc2lvblNpZGViYXJQYW5lID0gZnVuY3Rpb24odGl0bGUsIGlkKQogfQogCiBXZWJJ
bnNwZWN0b3IuRXh0ZW5zaW9uU2lkZWJhclBhbmUucHJvdG90eXBlID0gewotICAgIHNldE9iamVj
dDogZnVuY3Rpb24ob2JqZWN0LCB0aXRsZSkKKyAgICBzZXRPYmplY3Q6IGZ1bmN0aW9uKG9iamVj
dCwgdGl0bGUsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgdGhpcy5fc2V0T2JqZWN0KFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbUxvY2FsT2JqZWN0KG9iamVjdCksIHRpdGxlKTsKKyAg
ICAgICAgdGhpcy5fbWFrZU9iamVjdFByb3BlcnRpZXNWaWV3KCk7CisgICAgICAgIHRoaXMuX3Nl
dE9iamVjdChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21Mb2NhbE9iamVjdChvYmplY3Qp
LCB0aXRsZSwgY2FsbGJhY2spOwogICAgIH0sCiAKLSAgICBzZXRFeHByZXNzaW9uOiBmdW5jdGlv
bihleHByZXNzaW9uLCB0aXRsZSkKKyAgICBzZXRFeHByZXNzaW9uOiBmdW5jdGlvbihleHByZXNz
aW9uLCB0aXRsZSwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBSdW50aW1lQWdlbnQuZXZhbHVh
dGUoZXhwcmVzc2lvbiwgImV4dGVuc2lvbi13YXRjaCIsIHRydWUsIHVuZGVmaW5lZCwgdW5kZWZp
bmVkLCB1bmRlZmluZWQsIHRoaXMuX29uRXZhbHVhdGUuYmluZCh0aGlzLCB0aXRsZSkpOworICAg
ICAgICB0aGlzLl9tYWtlT2JqZWN0UHJvcGVydGllc1ZpZXcoKTsKKyAgICAgICAgUnVudGltZUFn
ZW50LmV2YWx1YXRlKGV4cHJlc3Npb24sICJleHRlbnNpb24td2F0Y2giLCB0cnVlLCB1bmRlZmlu
ZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzLl9vbkV2YWx1YXRlLmJpbmQodGhpcywgdGl0
bGUsIGNhbGxiYWNrKSk7CiAgICAgfSwKIAogICAgIHNldFBhZ2U6IGZ1bmN0aW9uKHVybCkKICAg
ICB7Ci0gICAgICAgIHRoaXMuYm9keUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAg
dmFyIHZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblZpZXcodGhpcy5faWQsIHRoaXMu
Ym9keUVsZW1lbnQsIHVybCwgImV4dGVuc2lvbiIpOwotICAgICAgICAvLyBUT0RPOiBDb25zaWRl
ciBkb2luZyB0aGlzIHVwb24gbG9hZCBldmVudC4KLSAgICAgICAgV2ViSW5zcGVjdG9yLmV4dGVu
c2lvblNlcnZlci5ub3RpZnlFeHRlbnNpb25TaWRlYmFyVXBkYXRlZCh0aGlzLl9pZCk7CisgICAg
ICAgIGlmICh0aGlzLl9vYmplY3RQcm9wZXJ0aWVzVmlldykgeworICAgICAgICAgICAgdGhpcy5f
b2JqZWN0UHJvcGVydGllc1ZpZXcuZGV0YWNoKCk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5f
b2JqZWN0UHJvcGVydGllc1ZpZXc7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMuX2V4dGVu
c2lvblZpZXcpCisgICAgICAgICAgICB0aGlzLl9leHRlbnNpb25WaWV3LmRldGFjaCh0cnVlKTsK
KworICAgICAgICB0aGlzLl9leHRlbnNpb25WaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5FeHRlbnNp
b25WaWV3KHRoaXMuX2lkLCB0aGlzLmJvZHlFbGVtZW50LCB1cmwsICJleHRlbnNpb24iKTsKKyAg
ICB9LAorCisgICAgX29uRXZhbHVhdGU6IGZ1bmN0aW9uKHRpdGxlLCBjYWxsYmFjaywgZXJyb3Is
IHJlc3VsdCwgd2FzVGhyb3duKQorICAgIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAg
ICAgY2FsbGJhY2soZXJyb3IpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9zZXRP
YmplY3QoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChyZXN1bHQpLCB0aXRs
ZSwgY2FsbGJhY2spOwogICAgIH0sCiAKLSAgICBfb25FdmFsdWF0ZTogZnVuY3Rpb24odGl0bGUs
IGVycm9yLCByZXN1bHQsIHdhc1Rocm93bikKKyAgICBfbWFrZU9iamVjdFByb3BlcnRpZXNWaWV3
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAoIWVycm9yKQotICAgICAgICAgICAgdGhp
cy5fc2V0T2JqZWN0KFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocmVzdWx0
KSwgdGl0bGUpOworICAgICAgICBpZiAodGhpcy5fb2JqZWN0UHJvcGVydGllc1ZpZXcpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0aGlzLl9leHRlbnNpb25WaWV3KSB7CisgICAg
ICAgICAgICB0aGlzLl9leHRlbnNpb25WaWV3LmRldGFjaCh0cnVlKTsKKyAgICAgICAgICAgIGRl
bGV0ZSB0aGlzLl9leHRlbnNpb25WaWV3OworICAgICAgICB9CisgICAgICAgIHRoaXMuX29iamVj
dFByb3BlcnRpZXNWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5FeHRlbnNpb25Ob3RpZmllclZpZXco
dGhpcy5faWQpOworICAgICAgICB0aGlzLl9vYmplY3RQcm9wZXJ0aWVzVmlldy5zaG93KHRoaXMu
Ym9keUVsZW1lbnQpOwogICAgIH0sCiAKLSAgICBfc2V0T2JqZWN0OiBmdW5jdGlvbihvYmplY3Qs
IHRpdGxlKQorICAgIF9zZXRPYmplY3Q6IGZ1bmN0aW9uKG9iamVjdCwgdGl0bGUsIGNhbGxiYWNr
KQogICAgIHsKLSAgICAgICAgdGhpcy5ib2R5RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOworICAg
ICAgICAvLyBUaGlzIG1heSBvbmx5IGhhcHBlbiBpZiBzZXRQYWdlKCkgd2FzIGNhbGxlZCB3aGls
ZSB3ZSB3ZXJlIGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb24uCisgICAgICAgIGlmICghdGhpcy5f
b2JqZWN0UHJvcGVydGllc1ZpZXcpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKCJvcGVyYXRpb24g
Y2FuY2VsbGVkIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdGhp
cy5fb2JqZWN0UHJvcGVydGllc1ZpZXcuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAg
ICB2YXIgc2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydGllc1NlY3Rpb24o
b2JqZWN0LCB0aXRsZSk7CiAgICAgICAgIGlmICghdGl0bGUpCiAgICAgICAgICAgICBzZWN0aW9u
LmhlYWRlckVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CiAgICAgICAgIHNlY3Rpb24u
ZXhwYW5kZWQgPSB0cnVlOwogICAgICAgICBzZWN0aW9uLmVkaXRhYmxlID0gZmFsc2U7Ci0gICAg
ICAgIHRoaXMuYm9keUVsZW1lbnQuYXBwZW5kQ2hpbGQoc2VjdGlvbi5lbGVtZW50KTsKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLmV4dGVuc2lvblNlcnZlci5ub3RpZnlFeHRlbnNpb25TaWRlYmFyVXBk
YXRlZCh0aGlzLl9pZCk7CisgICAgICAgIHRoaXMuX29iamVjdFByb3BlcnRpZXNWaWV3LmVsZW1l
bnQuYXBwZW5kQ2hpbGQoc2VjdGlvbi5lbGVtZW50KTsKKyAgICAgICAgY2FsbGJhY2soKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RXh0ZW5zaW9uU2VydmVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25TZXJ2ZXIuanMKaW5kZXggNzdjMDQ3Mjg0YTY0M2E1YjFiNDQxMjZjMGY1ZTE3Njc0
OTUyMDYxNS4uZmExZGI0MDY4MzJmNmIxYTM1Y2Y2NmZmZWViODliZTBjMjMwNTM2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2
ZXIuanMKQEAgLTEwMywxMSArMTAzLDYgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Bvc3ROb3RpZmljYXRpb24oInJlc2V0Iik7CiAg
ICAgfSwKIAotICAgIG5vdGlmeUV4dGVuc2lvblNpZGViYXJVcGRhdGVkOiBmdW5jdGlvbihpZCkK
LSAgICB7Ci0gICAgICAgIHRoaXMuX3Bvc3ROb3RpZmljYXRpb24oInNpZGViYXItdXBkYXRlZC0i
ICsgaWQpOwotICAgIH0sCi0KICAgICBzdGFydEF1ZGl0UnVuOiBmdW5jdGlvbihjYXRlZ29yeSwg
YXVkaXRSdW4pCiAgICAgewogICAgICAgICB0aGlzLl9jbGllbnRPYmplY3RzW2F1ZGl0UnVuLmlk
XSA9IGF1ZGl0UnVuOwpAQCAtMjI5LDE1ICsyMjQsMjAgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lv
blNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHNpZGViYXIuYm9keUVsZW1lbnQuZmlyc3RD
aGlsZC5zdHlsZS5oZWlnaHQgPSBtZXNzYWdlLmhlaWdodDsKICAgICB9LAogCi0gICAgX29uU2V0
U2lkZWJhckNvbnRlbnQ6IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAgX29uU2V0U2lkZWJhckNvbnRl
bnQ6IGZ1bmN0aW9uKG1lc3NhZ2UsIHBvcnQpCiAgICAgewogICAgICAgICB2YXIgc2lkZWJhciA9
IHRoaXMuX2NsaWVudE9iamVjdHNbbWVzc2FnZS5pZF07CiAgICAgICAgIGlmICghc2lkZWJhcikK
ICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMuRV9OT1RGT1VORChtZXNzYWdlLmlkKTsK
KyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciByZXN1bHQgPSBlcnJvciA/IHRoaXMuX3N0YXR1cy5FX0ZBSUxFRChlcnJvcikgOiB0aGlz
Ll9zdGF0dXMuT0soKTsKKyAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ2FsbGJhY2sobWVzc2Fn
ZS5yZXF1ZXN0SWQsIHBvcnQsIHJlc3VsdCk7CisgICAgICAgIH0KICAgICAgICAgaWYgKG1lc3Nh
Z2UuZXZhbHVhdGVPblBhZ2UpCi0gICAgICAgICAgICBzaWRlYmFyLnNldEV4cHJlc3Npb24obWVz
c2FnZS5leHByZXNzaW9uLCBtZXNzYWdlLnJvb3RUaXRsZSk7CisgICAgICAgICAgICBzaWRlYmFy
LnNldEV4cHJlc3Npb24obWVzc2FnZS5leHByZXNzaW9uLCBtZXNzYWdlLnJvb3RUaXRsZSwgY2Fs
bGJhY2suYmluZCh0aGlzKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNpZGViYXIuc2V0
T2JqZWN0KG1lc3NhZ2UuZXhwcmVzc2lvbiwgbWVzc2FnZS5yb290VGl0bGUpOworICAgICAgICAg
ICAgc2lkZWJhci5zZXRPYmplY3QobWVzc2FnZS5leHByZXNzaW9uLCBtZXNzYWdlLnJvb3RUaXRs
ZSwgY2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIF9vblNldFNpZGViYXJQYWdl
OiBmdW5jdGlvbihtZXNzYWdlLCBwb3J0KQpAQCAtNDkxLDcgKzQ5MSw4IEBAIFdlYkluc3BlY3Rv
ci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogCiAgICAgX2Rpc3BhdGNoQ2FsbGJhY2s6
IGZ1bmN0aW9uKHJlcXVlc3RJZCwgcG9ydCwgcmVzdWx0KQogICAgIHsKLSAgICAgICAgcG9ydC5w
b3N0TWVzc2FnZSh7IGNvbW1hbmQ6ICJjYWxsYmFjayIsIHJlcXVlc3RJZDogcmVxdWVzdElkLCBy
ZXN1bHQ6IHJlc3VsdCB9KTsKKyAgICAgICAgaWYgKHJlcXVlc3RJZCkKKyAgICAgICAgICAgIHBv
cnQucG9zdE1lc3NhZ2UoeyBjb21tYW5kOiAiY2FsbGJhY2siLCByZXF1ZXN0SWQ6IHJlcXVlc3RJ
ZCwgcmVzdWx0OiByZXN1bHQgfSk7CiAgICAgfSwKIAogICAgIGluaXRFeHRlbnNpb25zOiBmdW5j
dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Zp
ZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1ZpZXcuanMKaW5kZXgg
MTIxMzRjZTFmZDFlOTI0ZjNhZDM2OTA0N2ZmNzNkMGJhNmE2MGUxOC4uMjI0YzkzNGI1YWExYmNm
ZjQ0NGM2NDU5MGJlMmExZjZiZmRhZDg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9WaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVmlldy5qcwpAQCAtMTY3LDcgKzE2NywxMCBAQCBXZWJJbnNwZWN0b3IuVmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzV2FzU2hvd24oKTsKICAgICB9
LAogCi0gICAgZGV0YWNoOiBmdW5jdGlvbigpCisgICAgLyoKKyAgICAgKiBAcGFyYW0ge0Jvb2xl
YW49fSBmb3JjZQorICAgICAqLworICAgIGRldGFjaDogZnVuY3Rpb24oZm9yY2UpCiAgICAgewog
ICAgICAgICB2YXIgcGFyZW50RWxlbWVudCA9IHRoaXMuZWxlbWVudC5wYXJlbnRFbGVtZW50Owog
ICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQpCkBAIC0xNzYsNyArMTc5LDcgQEAgV2ViSW5zcGVj
dG9yLlZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fcGFyZW50SXNTaG93aW5n
KCkpCiAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzV2lsbEhpZGUoKTsKIAotICAgICAgICBpZiAo
dGhpcy5faGlkZU9uRGV0YWNoKSB7CisgICAgICAgIGlmICh0aGlzLl9oaWRlT25EZXRhY2ggJiYg
IWZvcmNlKSB7CiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygidmlz
aWJsZSIpOwogICAgICAgICAgICAgdGhpcy5fdmlzaWJsZSA9IGZhbHNlOwogICAgICAgICAgICAg
aWYgKHRoaXMuX3BhcmVudElzU2hvd2luZygpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIyNWYzYjNhZDAzYTVkYTA0MTA0
NTY4OGVkMDViOGU5OWEyNzZlNjQuLmQxODNlZmQ4YmY3Y2VkYjc0ZjVkY2RkNWUwYjYyYjZmNWMw
NTcyNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMS0xNSAgQW5kcmV5IEtvc3lha292
ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFeHRlbnNp
b25zIEFQSV0gZHJvcCBFeHRlbnNpb25TaWRlYmFyUGFuZS5vblVwZGF0ZWQsIHVzZSBjYWxsYmFj
a3MgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzIzODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAtIHNwbGl0IExheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLmh0bWwgaW50byBleHRl
bnNpb25zLXBhbmVsLmh0bWwgJiBleHRlbnNpb25zLXNpZGViYXIuaHRtbC4KKworICAgICAgICAq
IGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtcGFuZWwtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXBhbmVsLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtc2lkZWJh
ci1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5z
aW9ucy9leHRlbnNpb25zLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZXh0ZW5z
aW9ucy9leHRlbnNpb25zLXNpZGViYXIuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2lu
c3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMuaHRtbC4KKwogMjAxMS0xMS0xNSAgVG9ueSBH
ZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gZmFz
dC9mb3Jtcy9maWxlL2lucHV0LWZpbGUtbGFiZWwuaHRtbCBpcyBmbGFreSBvbiB3aW4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxZjJkNjg3ZWZkNDY0MmY1
NDNmYjU5ZTlkNzY4YzcxMDlkY2RiYWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9u
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1UZXN0cyBXZWJJ
bnNwZWN0b3IgZXh0ZW5zaW9uIEFQSQotCi1TdGFydGVkIGV4dGVuc2lvbi4KLVJ1bm5pbmcgdGVz
dHMuLi4KLVJVTk5JTkcgVEVTVDogZXh0ZW5zaW9uX3Rlc3RDcmVhdGVQYW5lbAotUGFuZWwgY3Jl
YXRlZAotewotICAgIG9uU2hvd24gOiB7Ci0gICAgICAgIGFkZExpc3RlbmVyIDogPGZ1bmN0aW9u
PgotICAgICAgICByZW1vdmVMaXN0ZW5lciA6IDxmdW5jdGlvbj4KLSAgICB9Ci0gICAgb25IaWRk
ZW4gOiB7Ci0gICAgICAgIGFkZExpc3RlbmVyIDogPGZ1bmN0aW9uPgotICAgICAgICByZW1vdmVM
aXN0ZW5lciA6IDxmdW5jdGlvbj4KLSAgICB9Ci0gICAgb25TZWFyY2ggOiB7Ci0gICAgICAgIGFk
ZExpc3RlbmVyIDogPGZ1bmN0aW9uPgotICAgICAgICByZW1vdmVMaXN0ZW5lciA6IDxmdW5jdGlv
bj4KLSAgICB9Ci19Ci1FeHRlbnNpb24gcGFuZWwgc2l6ZSBjb3JyZWN0Ci1SVU5OSU5HIFRFU1Q6
IGV4dGVuc2lvbl90ZXN0U2lkZWJhclBhZ2UKLVNpZGViYXIgY3JlYXRlZAotewotICAgIG9uU2hv
d24gOiB7Ci0gICAgICAgIGFkZExpc3RlbmVyIDogPGZ1bmN0aW9uPgotICAgICAgICByZW1vdmVM
aXN0ZW5lciA6IDxmdW5jdGlvbj4KLSAgICB9Ci0gICAgb25IaWRkZW4gOiB7Ci0gICAgICAgIGFk
ZExpc3RlbmVyIDogPGZ1bmN0aW9uPgotICAgICAgICByZW1vdmVMaXN0ZW5lciA6IDxmdW5jdGlv
bj4KLSAgICB9Ci0gICAgb25VcGRhdGVkIDogewotICAgICAgICBhZGRMaXN0ZW5lciA6IDxmdW5j
dGlvbj4KLSAgICAgICAgcmVtb3ZlTGlzdGVuZXIgOiA8ZnVuY3Rpb24+Ci0gICAgfQotICAgIHNl
dEhlaWdodCA6IDxmdW5jdGlvbj4KLSAgICBzZXRFeHByZXNzaW9uIDogPGZ1bmN0aW9uPgotICAg
IHNldE9iamVjdCA6IDxmdW5jdGlvbj4KLSAgICBzZXRQYWdlIDogPGZ1bmN0aW9uPgotfQotUlVO
TklORyBURVNUOiBleHRlbnNpb25fdGVzdFNpZGViYXJXYXRjaEV4cHJlc3Npb24KLVNpZGViYXIg
Y29udGVudDogdGl0bGVmMDogImV4cHJlc3Npb24iZjE6IHVuZGVmaW5lZGYyOiBudWxsZjM6IE9i
amVjdGY0OiBBcnJheVswXWY1OiBBcnJheVszXWY2OiBPYmplY3RmNzogNDJmODogTG9jYXRpb25m
OTogSFRNTENvbGxlY3Rpb25bMl1mMTA6IGZ1bmN0aW9uICgpIHt9ZjExOiAiZm9vIl9fcHJvdG9f
XzogT2JqZWN0Ci1SVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0U2lkZWJhcldhdGNoT2JqZWN0
Ci1XYXRjaCBzaWRlYmFyIGNyZWF0ZWQsIGNhbGxiYWNrIGFyZ3VtZW50cyBkdW1wIGZvbGxvd3M6
Ci17Ci0gICAgMCA6IHsKLSAgICAgICAgb25TaG93biA6IHsKLSAgICAgICAgICAgIGFkZExpc3Rl
bmVyIDogPGZ1bmN0aW9uPgotICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXIgOiA8ZnVuY3Rpb24+
Ci0gICAgICAgIH0KLSAgICAgICAgb25IaWRkZW4gOiB7Ci0gICAgICAgICAgICBhZGRMaXN0ZW5l
ciA6IDxmdW5jdGlvbj4KLSAgICAgICAgICAgIHJlbW92ZUxpc3RlbmVyIDogPGZ1bmN0aW9uPgot
ICAgICAgICB9Ci0gICAgICAgIG9uVXBkYXRlZCA6IHsKLSAgICAgICAgICAgIGFkZExpc3RlbmVy
IDogPGZ1bmN0aW9uPgotICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXIgOiA8ZnVuY3Rpb24+Ci0g
ICAgICAgIH0KLSAgICAgICAgc2V0SGVpZ2h0IDogPGZ1bmN0aW9uPgotICAgICAgICBzZXRFeHBy
ZXNzaW9uIDogPGZ1bmN0aW9uPgotICAgICAgICBzZXRPYmplY3QgOiA8ZnVuY3Rpb24+Ci0gICAg
ICAgIHNldFBhZ2UgOiA8ZnVuY3Rpb24+Ci0gICAgfQotfQotU2lkZWJhciBjb250ZW50OiBmMDog
Im9iamVjdCJmMTogdW5kZWZpbmVkZjI6IG51bGxmMzoge31mNDogW11mNTogW2FhLCBiYiwgY2Nd
ZjY6IHtmNjA6NDIsIGY2MTpmb28sIGY2MjpbXX1mNzogNDIKLUFsbCB0ZXN0cyBkb25lLgotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXBh
bmVsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVu
c2lvbnMtcGFuZWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZWQ5ZGJmZGU3MDNkYWQ0YTRi
OWE3MzBmMzRlMWRiOTZmNTE2ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXBhbmVsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIzIEBACitUZXN0cyBXZWJJbnNwZWN0b3IgZXh0ZW5zaW9uIEFQSQorCitTdGFydGVkIGV4dGVu
c2lvbi4KK1J1bm5pbmcgdGVzdHMuLi4KK1JVTk5JTkcgVEVTVDogZXh0ZW5zaW9uX3Rlc3RDcmVh
dGVQYW5lbAorUGFuZWwgY3JlYXRlZAoreworICAgIG9uU2hvd24gOiB7CisgICAgICAgIGFkZExp
c3RlbmVyIDogPGZ1bmN0aW9uPgorICAgICAgICByZW1vdmVMaXN0ZW5lciA6IDxmdW5jdGlvbj4K
KyAgICB9CisgICAgb25IaWRkZW4gOiB7CisgICAgICAgIGFkZExpc3RlbmVyIDogPGZ1bmN0aW9u
PgorICAgICAgICByZW1vdmVMaXN0ZW5lciA6IDxmdW5jdGlvbj4KKyAgICB9CisgICAgb25TZWFy
Y2ggOiB7CisgICAgICAgIGFkZExpc3RlbmVyIDogPGZ1bmN0aW9uPgorICAgICAgICByZW1vdmVM
aXN0ZW5lciA6IDxmdW5jdGlvbj4KKyAgICB9Cit9CitFeHRlbnNpb24gcGFuZWwgc2l6ZSBjb3Jy
ZWN0CitBbGwgdGVzdHMgZG9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1wYW5lbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1wYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYzA5MTcwMWYw
ZmQwZGRmYWQ5MDBjZDU3ZTZkYWMzYzVhYTAzOWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXBhbmVsLmh0bWwKQEAgLTAsMCAr
MSw1NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZnVuY3Rpb24gaW5pdGlhbGl6ZV9leHRlbnNp
b25zUGFuZWxUZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LnBhbmVsQ2FsbGJhY2sgPSBmdW5j
dGlvbih3aWR0aCwgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1Bh
bmVsU2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgdmFyIGNhbGxiYWNrID0gSW5zcGVjdG9y
VGVzdC5fcGVuZGluZ1BhbmVsU2l6ZVRlc3RDYWxsYmFjazsKKyAgICAgICAgaWYgKGNhbGxiYWNr
KSB7CisgICAgICAgICAgICBkZWxldGUgSW5zcGVjdG9yVGVzdC5fcGVuZGluZ1BhbmVsU2l6ZVRl
c3RDYWxsYmFjazsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JQYW5lbCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAg
IHsKKyAgICAgICAgIEluc3BlY3RvclRlc3QuX3BlbmRpbmdQYW5lbFNpemVUZXN0Q2FsbGJhY2sg
PSBjYWxsYmFjazsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LmNoZWNrUGFuZWxTaXplID0g
ZnVuY3Rpb24od2lkdGgsIGhlaWdodCkKKyAgICB7CisgICAgICAgIHZhciBleHRlbnNpb25QYW5l
bCA9IFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3Ll9wYW5lbE9yZGVyW1dlYkluc3BlY3Rvci5p
bnNwZWN0b3JWaWV3Ll9wYW5lbE9yZGVyLmxlbmd0aCAtIDFdOworICAgICAgICB2YXIgYm91bmRp
bmdSZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW4tcGFuZWxzIikuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGJvdW5k
aW5nUmVjdC53aWR0aCwgd2lkdGgsICJwYW5lbCB3aWR0aCBtaXNtYXRjaCIpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhib3VuZGluZ1JlY3QuaGVpZ2h0LCBoZWlnaHQsICJw
YW5lbCBoZWlnaHQgbWlzbWF0Y2giKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IkV4dGVuc2lvbiBwYW5lbCBzaXplIGNvcnJlY3QiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGV4
dGVuc2lvbl90ZXN0Q3JlYXRlUGFuZWwobmV4dFRlc3QpCit7CisgICAgdmFyIGNhbGxiYWNrQ291
bnQgPSAwOworCisgICAgZnVuY3Rpb24gb25QYW5lbENyZWF0ZWQocGFuZWwpCisgICAgeworICAg
ICAgICBvdXRwdXQoIlBhbmVsIGNyZWF0ZWQiKTsKKyAgICAgICAgZHVtcE9iamVjdChwYW5lbCk7
CisgICAgICAgIC8vIFRoaXMgd2lsbCBmb3JjZSBleHRlbnNpb24gaWZyYW1lIHRvIGJlIHJlYWxs
eSBsb2FkZWQgYW5kIHdpbGwgY2F1c2Ugd2FpdEZvclBhbmVsKCkgY2FsbGJhY2sgYmVsb3cuCisg
ICAgICAgIGV4dGVuc2lvbl9zaG93UGFuZWwoImV4dGVuc2lvbiIpOworICAgIH0KKyAgICAvLyBU
aGUgcGFuZWwgY29kZSBpcyBleHBlY3RlZCB0byByZXBvcnQgaXRzIHNpemUgdmlhIEluc3BlY3Rv
clRlc3QucGFuZWxDYWxsYmFjaygpCisgICAgZXZhbHVhdGVPbkZyb250ZW5kKCJJbnNwZWN0b3JU
ZXN0LndhaXRGb3JQYW5lbChyZXBseSk7IiwgbmV4dFRlc3QpOworICAgIHZhciBiYXNlUGF0aCA9
IGxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1wvW14vXSokLywgIi8iKTsKKyAgICB3ZWJJbnNw
ZWN0b3IucGFuZWxzLmNyZWF0ZSgiVGVzdCBQYW5lbCIsIGJhc2VQYXRoICsgImV4dGVuc2lvbi1w
YW5lbC5wbmciLCBiYXNlUGF0aCArICJleHRlbnNpb24tcGFuZWwuaHRtbCIsIG9uUGFuZWxDcmVh
dGVkKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
Cis8cD5UZXN0cyBXZWJJbnNwZWN0b3IgZXh0ZW5zaW9uIEFQSTwvcD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lv
bnMtc2lkZWJhci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9u
cy9leHRlbnNpb25zLXNpZGViYXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkZGUzMWYwOTEw
OTkwOTJkYzI3NjFkM2ExZjljMDBiZWJmMTFiN2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXNpZGViYXItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNDYgQEAKK1Rlc3RzIHNpZGViYXJzIGluIFdlYkluc3BlY3RvciBleHRlbnNp
b25zIEFQSQorCitTdGFydGVkIGV4dGVuc2lvbi4KK1J1bm5pbmcgdGVzdHMuLi4KK1JVTk5JTkcg
VEVTVDogZXh0ZW5zaW9uX3Rlc3RTaWRlYmFyUGFnZVJlcGxhY2VkV2l0aE9iamVjdAorR290IG9u
U2hvd24oKSwgZnJhbWUgZGVmaW5lZAorR290IG9uU2hvd24oKSwgZnJhbWUgbm90IGRlZmluZWQK
K1JVTk5JTkcgVEVTVDogZXh0ZW5zaW9uX3Rlc3RTaWRlYmFyU2V0RXhwcmVzc2lvbgorU2lkZWJh
ciBjb250ZW50OiB0aXRsZWYwOiAiZXhwcmVzc2lvbiJmMTogdW5kZWZpbmVkZjI6IG51bGxmMzog
T2JqZWN0ZjQ6IEFycmF5WzBdZjU6IEFycmF5WzNdZjY6IE9iamVjdGY3OiA0MmY4OiBMb2NhdGlv
bmY5OiBIVE1MQ29sbGVjdGlvblsyXWYxMDogZnVuY3Rpb24gKCkge31mMTE6ICJmb28iX19wcm90
b19fOiBPYmplY3QKK1JVTk5JTkcgVEVTVDogZXh0ZW5zaW9uX3Rlc3RTaWRlYmFyU2V0T2JqZWN0
CitXYXRjaCBzaWRlYmFyIGNyZWF0ZWQsIGNhbGxiYWNrIGFyZ3VtZW50cyBkdW1wIGZvbGxvd3M6
Cit7CisgICAgMCA6IHsKKyAgICAgICAgb25TaG93biA6IHsKKyAgICAgICAgICAgIGFkZExpc3Rl
bmVyIDogPGZ1bmN0aW9uPgorICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXIgOiA8ZnVuY3Rpb24+
CisgICAgICAgIH0KKyAgICAgICAgb25IaWRkZW4gOiB7CisgICAgICAgICAgICBhZGRMaXN0ZW5l
ciA6IDxmdW5jdGlvbj4KKyAgICAgICAgICAgIHJlbW92ZUxpc3RlbmVyIDogPGZ1bmN0aW9uPgor
ICAgICAgICB9CisgICAgICAgIHNldEhlaWdodCA6IDxmdW5jdGlvbj4KKyAgICAgICAgc2V0RXhw
cmVzc2lvbiA6IDxmdW5jdGlvbj4KKyAgICAgICAgc2V0T2JqZWN0IDogPGZ1bmN0aW9uPgorICAg
ICAgICBzZXRQYWdlIDogPGZ1bmN0aW9uPgorICAgIH0KK30KK1NpZGViYXIgY29udGVudDogZjA6
ICJvYmplY3QiZjE6IHVuZGVmaW5lZGYyOiBudWxsZjM6IHt9ZjQ6IFtdZjU6IFthYSwgYmIsIGNj
XWY2OiB7ZjYwOjQyLCBmNjE6Zm9vLCBmNjI6W119Zjc6IDQyCitSVU5OSU5HIFRFU1Q6IGV4dGVu
c2lvbl90ZXN0U2lkZWJhclNldFBhZ2UKK1NpZGViYXIgY3JlYXRlZAoreworICAgIG9uU2hvd24g
OiB7CisgICAgICAgIGFkZExpc3RlbmVyIDogPGZ1bmN0aW9uPgorICAgICAgICByZW1vdmVMaXN0
ZW5lciA6IDxmdW5jdGlvbj4KKyAgICB9CisgICAgb25IaWRkZW4gOiB7CisgICAgICAgIGFkZExp
c3RlbmVyIDogPGZ1bmN0aW9uPgorICAgICAgICByZW1vdmVMaXN0ZW5lciA6IDxmdW5jdGlvbj4K
KyAgICB9CisgICAgc2V0SGVpZ2h0IDogPGZ1bmN0aW9uPgorICAgIHNldEV4cHJlc3Npb24gOiA8
ZnVuY3Rpb24+CisgICAgc2V0T2JqZWN0IDogPGZ1bmN0aW9uPgorICAgIHNldFBhZ2UgOiA8ZnVu
Y3Rpb24+Cit9CitBbGwgdGVzdHMgZG9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1zaWRlYmFyLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXNpZGViYXIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
Mzg2NTA2N2JkNzJmMGQ3Mzg4MzI0ZDg2NjczYTVhMzdhZTBjYWY5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1zaWRlYmFyLmh0
bWwKQEAgLTAsMCArMSwxMzAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2Z1bmN0aW9uIGluaXRp
YWxpemVfZXh0ZW5zaW9uc1NpZGViYXJUZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmR1bXBT
aWRlYmFyQ29udGVudCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIHNp
ZGViYXJQYW5lcyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc2lkZWJhclBhbmVzOwor
ICAgICAgICAvLyB0aGUgc2lkZWJhciBvZiBpbnRlcmVzdCBpcyBwcmVzdW1lZCB0byBhbHdheXMg
YmUgbGFzdC4KKyAgICAgICAgdmFyIHNpZGViYXIgPSBzaWRlYmFyUGFuZXNbT2JqZWN0LmtleXMo
c2lkZWJhclBhbmVzKS5wb3AoKV07CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5k
aW5nRGlzcGF0Y2hlcyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJTaWRlYmFyIGNvbnRlbnQ6ICIgKyBzaWRlYmFyLmJvZHlFbGVtZW50LnRleHRDb250
ZW50KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0pOworICAgIH0KK30KKwor
ZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RTaWRlYmFyU2V0UGFnZShuZXh0VGVzdCkKK3sKKyAgICBm
dW5jdGlvbiBvblNpZGViYXJDcmVhdGVkKHNpZGViYXIpCisgICAgeworICAgICAgICBvdXRwdXQo
IlNpZGViYXIgY3JlYXRlZCIpOworICAgICAgICBkdW1wT2JqZWN0KHNpZGViYXIpOworICAgICAg
ICBmdW5jdGlvbiBvblNob3duKCkKKyAgICAgICAgeworICAgICAgICAgICAgc2lkZWJhci5vblNo
b3duLnJlbW92ZUxpc3RlbmVyKG9uU2hvd24pOworICAgICAgICAgICAgbmV4dFRlc3QoKTsKKyAg
ICAgICAgfQorICAgICAgICBzaWRlYmFyLm9uU2hvd24uYWRkTGlzdGVuZXIob25TaG93bik7Cisg
ICAgICAgIHZhciBiYXNlUGF0aCA9IGxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1wvW14vXSok
LywgIi8iKTsKKyAgICAgICAgc2lkZWJhci5zZXRQYWdlKGJhc2VQYXRoICsgImV4dGVuc2lvbi1z
aWRlYmFyLmh0bWwiKTsKKyAgICAgICAgZXh0ZW5zaW9uX3Nob3dQYW5lbCgiZWxlbWVudHMiKTsK
KyAgICB9CisgICAgd2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5jcmVhdGVTaWRlYmFyUGFu
ZSgiVGVzdCBTaWRlYmFyIiwgb25TaWRlYmFyQ3JlYXRlZCk7Cit9CisKK2Z1bmN0aW9uIGV4dGVu
c2lvbl9kdW1wU2lkZWJhckNvbnRlbnQobmV4dFRlc3QpCit7CisgICAgZXZhbHVhdGVPbkZyb250
ZW5kKCJJbnNwZWN0b3JUZXN0LmR1bXBTaWRlYmFyQ29udGVudChyZXBseSk7IiwgbmV4dFRlc3Qp
OworfQorCitmdW5jdGlvbiBleHRlbnNpb25fdGVzdFNpZGViYXJTZXRPYmplY3QobmV4dFRlc3Qp
Cit7CisgICAgZnVuY3Rpb24gb25TaWRlYmFyQ3JlYXRlZChzaWRlYmFyKQorICAgIHsKKyAgICAg
ICAgb3V0cHV0KCJXYXRjaCBzaWRlYmFyIGNyZWF0ZWQsIGNhbGxiYWNrIGFyZ3VtZW50cyBkdW1w
IGZvbGxvd3M6Iik7CisgICAgICAgIGR1bXBPYmplY3QoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNh
bGwoYXJndW1lbnRzKSk7CisgICAgICAgIHNpZGViYXIuc2V0T2JqZWN0KHsKKyAgICAgICAgICAg
IGYwOiAib2JqZWN0IiwKKyAgICAgICAgICAgIGYxOiB1bmRlZmluZWQsCisgICAgICAgICAgICBm
MjogbnVsbCwKKyAgICAgICAgICAgIGYzOiB7fSwKKyAgICAgICAgICAgIGY0OiBbXSwKKyAgICAg
ICAgICAgIGY1OiBbImFhIiwgImJiIiwgImNjIl0sCisgICAgICAgICAgICBmNjogeyBmNjA6IDQy
LCBmNjE6ICJmb28iLCBmNjI6IFtdIH0sCisgICAgICAgICAgICBmNzogNDIKKyAgICAgICAgfSwg
bnVsbCwgZXh0ZW5zaW9uX2R1bXBTaWRlYmFyQ29udGVudC5iaW5kKHRoaXMsIG5leHRUZXN0KSk7
CisgICAgfQorICAgIHdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuY3JlYXRlU2lkZWJhclBh
bmUoIldhdGNoIFRlc3Q6IE9iamVjdCIsIG9uU2lkZWJhckNyZWF0ZWQpOworfQorCitmdW5jdGlv
biBleHRlbnNpb25fdGVzdFNpZGViYXJTZXRFeHByZXNzaW9uKG5leHRUZXN0KQoreworICAgIGZ1
bmN0aW9uIG9uU2lkZWJhckNyZWF0ZWQoc2lkZWJhcikKKyAgICB7CisgICAgICAgIGZ1bmN0aW9u
IGV4cHJlc3Npb24oKQorICAgICAgICB7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnRlc3RQ
cm9wZXJ0eSA9ICdmb28nOworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICBm
MDogJ2V4cHJlc3Npb24nLAorICAgICAgICAgICAgICAgIGYxOiB1bmRlZmluZWQsCisgICAgICAg
ICAgICAgICAgZjI6IG51bGwsCisgICAgICAgICAgICAgICAgZjM6IHt9LAorICAgICAgICAgICAg
ICAgIGY0OiBbXSwKKyAgICAgICAgICAgICAgICBmNTogWyJhYSIsICJiYiIsICJjYyJdLAorICAg
ICAgICAgICAgICAgIGY2OiB7IGY2MDogNDIsIGY2MTogImZvbyIsIGY2MjogW10gfSwKKyAgICAg
ICAgICAgICAgICBmNzogNDIsCisgICAgICAgICAgICAgICAgZjg6IHdpbmRvdy5sb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICBmOTogZG9jdW1lbnQuYm9keS5jaGlsZHJlbiwKKyAgICAgICAgICAg
ICAgICBmMTA6IGZ1bmN0aW9uKCkge30sCisgICAgICAgICAgICAgICAgZjExOiAkMC50ZXN0UHJv
cGVydHkKKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgLy8gRG8gYW4gZXh0cmEg
cm91bmQtdHJpcCB0byB0aGUgaW5zcGVjdGVkIHBhZ2UgdG8gYXNzdXJlIGluc3BlY3QoKSdzIHJv
dW5kLXRyaXAgdG8KKyAgICAgICAgLy8gZnJvbnQtZW5kIGlzIGNvbXBsZXRlIGFuZCAkMCBpcyBw
cm9wZXJseSB1cGRhdGVkIHdpdGggY3VycmVudGx5IGluc3BlY3RlZCBub2RlLgorICAgICAgICB3
ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93LmV2YWwoIiIsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgc2lkZWJhci5zZXRFeHByZXNzaW9uKCIoIiArIGV4cHJlc3Npb24udG9TdHJpbmcoKSAr
ICIpKCk7IiwgInRpdGxlIiwgZXh0ZW5zaW9uX2R1bXBTaWRlYmFyQ29udGVudC5iaW5kKHRoaXMs
IG5leHRUZXN0KSk7CisgICAgICAgIH0pOworICAgIH0KKyAgICB3ZWJJbnNwZWN0b3IuaW5zcGVj
dGVkV2luZG93LmV2YWwoImluc3BlY3QoZG9jdW1lbnQuYm9keSkiLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgd2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5jcmVhdGVTaWRlYmFyUGFuZSgiV2F0
Y2ggVGVzdDogRXhwcmVzc2lvbiIsIG9uU2lkZWJhckNyZWF0ZWQpOworICAgIH0pOworfQorCitm
dW5jdGlvbiBleHRlbnNpb25fdGVzdFNpZGViYXJQYWdlUmVwbGFjZWRXaXRoT2JqZWN0KG5leHRU
ZXN0KQoreworICAgICB2YXIgYmFzZVBhdGggPSBsb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9c
L1teL10qJC8sICIvIik7CisgICAgIHZhciBzaWRlYmFyOworCisgICAgIGZ1bmN0aW9uIG9uU2lk
ZWJhckNyZWF0ZWQoYVNpZGViYXIpCisgICAgIHsKKyAgICAgICAgIHNpZGViYXIgPSBhU2lkZWJh
cjsKKyAgICAgICAgIHNpZGViYXIub25TaG93bi5hZGRMaXN0ZW5lcihvblNob3duKTsKKyAgICAg
ICAgIHNpZGViYXIuc2V0UGFnZShiYXNlUGF0aCArICJleHRlbnNpb24tc2lkZWJhci5odG1sIik7
CisgICAgICAgICBleHRlbnNpb25fc2hvd1BhbmVsKCJlbGVtZW50cyIpOworICAgICB9CisgICAg
IHZhciBkaWRTZXRPYmplY3QgPSBmYWxzZTsKKyAgICAgZnVuY3Rpb24gb25TaG93bihmcmFtZSkK
KyAgICAgeworICAgICAgICAgb3V0cHV0KCJHb3Qgb25TaG93bigpLCBmcmFtZSAiICsgKGZyYW1l
ID8gImRlZmluZWQiIDogIm5vdCBkZWZpbmVkIikpOworICAgICAgICAgaWYgKCFkaWRTZXRPYmpl
Y3QpIHsKKyAgICAgICAgICAgICBkaWRTZXRPYmplY3QgPSB0cnVlOworICAgICAgICAgICAgIHNp
ZGViYXIuc2V0T2JqZWN0KHsgZm9vOiAnYmFyJyB9KTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBzaWRlYmFyLm9uU2hvd24ucmVtb3ZlTGlzdGVuZXIob25TaG93bik7CisgICAgICAg
ICAgICBuZXh0VGVzdCgpOworICAgICAgICAgfQorICAgICB9CisgICAgIHdlYkluc3BlY3Rvci5w
YW5lbHMuZWxlbWVudHMuY3JlYXRlU2lkZWJhclBhbmUoIlNpZGViYXIgVGVzdDogcmVwbGFjZSBw
YWdlIHdpdGggb2JqZWN0Iiwgb25TaWRlYmFyQ3JlYXRlZCk7Cit9CisKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMgc2lkZWJhcnMgaW4gV2Vi
SW5zcGVjdG9yIGV4dGVuc2lvbnMgQVBJPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDQ2ZjBiYTFjMDRjMDhkNGZlYzA0ZTQ4MzNkMDk5MWM0MWI3
N2EyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDE0MCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXRlc3QuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotCi1mdW5jdGlvbiBpbml0aWFs
aXplX2V4dGVuc2lvbnNVSVRlc3QoKQotewotICAgIEluc3BlY3RvclRlc3QuZHVtcFNpZGViYXJD
b250ZW50ID0gZnVuY3Rpb24oY2FsbGJhY2spCi0gICAgewotICAgICAgICB2YXIgc2lkZWJhclBh
bmVzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zaWRlYmFyUGFuZXM7Ci0gICAgICAg
IC8vIHRoZSBzaWRlYmFyIG9mIGludGVyZXN0IGlzIHByZXN1bWVkIHRvIGFsd2F5cyBiZSBsYXN0
LgotICAgICAgICB2YXIgc2lkZWJhciA9IHNpZGViYXJQYW5lc1tPYmplY3Qua2V5cyhzaWRlYmFy
UGFuZXMpLnBvcCgpXTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNw
YXRjaGVzKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IlNpZGViYXIgY29udGVudDogIiArIHNpZGViYXIuYm9keUVsZW1lbnQudGV4dENvbnRlbnQpOwot
ICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgSW5zcGVj
dG9yVGVzdC5wYW5lbENhbGxiYWNrID0gZnVuY3Rpb24od2lkdGgsIGhlaWdodCkKLSAgICB7Ci0g
ICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tQYW5lbFNpemUod2lkdGgsIGhlaWdodCk7Ci0gICAg
ICAgIHZhciBjYWxsYmFjayA9IEluc3BlY3RvclRlc3QuX3BlbmRpbmdQYW5lbFNpemVUZXN0Q2Fs
bGJhY2s7Ci0gICAgICAgIGlmIChjYWxsYmFjaykgewotICAgICAgICAgICAgZGVsZXRlIEluc3Bl
Y3RvclRlc3QuX3BlbmRpbmdQYW5lbFNpemVUZXN0Q2FsbGJhY2s7Ci0gICAgICAgICAgICBjYWxs
YmFjaygpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yUGFu
ZWwgPSBmdW5jdGlvbihjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgICBJbnNwZWN0b3JUZXN0Ll9w
ZW5kaW5nUGFuZWxTaXplVGVzdENhbGxiYWNrID0gY2FsbGJhY2s7Ci0gICAgfQotCi0gICAgSW5z
cGVjdG9yVGVzdC5jaGVja1BhbmVsU2l6ZSA9IGZ1bmN0aW9uKHdpZHRoLCBoZWlnaHQpCi0gICAg
ewotICAgICAgICB2YXIgZXh0ZW5zaW9uUGFuZWwgPSBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmll
dy5fcGFuZWxPcmRlcltXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5fcGFuZWxPcmRlci5sZW5n
dGggLSAxXTsKLSAgICAgICAgdmFyIGJvdW5kaW5nUmVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJtYWluLXBhbmVscyIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscyhib3VuZGluZ1JlY3Qud2lkdGgsIHdpZHRoLCAicGFuZWwg
d2lkdGggbWlzbWF0Y2giKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoYm91
bmRpbmdSZWN0LmhlaWdodCwgaGVpZ2h0LCAicGFuZWwgaGVpZ2h0IG1pc21hdGNoIik7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJFeHRlbnNpb24gcGFuZWwgc2l6ZSBjb3JyZWN0
Iik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBleHRlbnNpb25fdGVzdENyZWF0ZVBhbmVsKG5leHRU
ZXN0KQotewotICAgIHZhciBjYWxsYmFja0NvdW50ID0gMDsKLQotICAgIGZ1bmN0aW9uIG9uUGFu
ZWxDcmVhdGVkKHBhbmVsKQotICAgIHsKLSAgICAgICAgb3V0cHV0KCJQYW5lbCBjcmVhdGVkIik7
Ci0gICAgICAgIGR1bXBPYmplY3QocGFuZWwpOwotICAgICAgICAvLyBUaGlzIHdpbGwgZm9yY2Ug
ZXh0ZW5zaW9uIGlmcmFtZSB0byBiZSByZWFsbHkgbG9hZGVkIGFuZCB3aWxsIGNhdXNlIHdhaXRG
b3JQYW5lbCgpIGNhbGxiYWNrIGJlbG93LgotICAgICAgICBleHRlbnNpb25fc2hvd1BhbmVsKCJl
eHRlbnNpb24iKTsKLSAgICB9Ci0gICAgLy8gVGhlIHBhbmVsIGNvZGUgaXMgZXhwZWN0ZWQgdG8g
cmVwb3J0IGl0cyBzaXplIHZpYSBJbnNwZWN0b3JUZXN0LnBhbmVsQ2FsbGJhY2soKQotICAgIGV2
YWx1YXRlT25Gcm9udGVuZCgiSW5zcGVjdG9yVGVzdC53YWl0Rm9yUGFuZWwocmVwbHkpOyIsIG5l
eHRUZXN0KTsKLSAgICB2YXIgYmFzZVBhdGggPSBsb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9c
L1teL10qJC8sICIvIik7Ci0gICAgd2ViSW5zcGVjdG9yLnBhbmVscy5jcmVhdGUoIlRlc3QgUGFu
ZWwiLCBiYXNlUGF0aCArICJleHRlbnNpb24tcGFuZWwucG5nIiwgYmFzZVBhdGggKyAiZXh0ZW5z
aW9uLXBhbmVsLmh0bWwiLCBvblBhbmVsQ3JlYXRlZCk7Ci19Ci0KLWZ1bmN0aW9uIGV4dGVuc2lv
bl90ZXN0U2lkZWJhclBhZ2UobmV4dFRlc3QpCi17Ci0gICAgZnVuY3Rpb24gb25TaWRlYmFyQ3Jl
YXRlZChzaWRlYmFyKQotICAgIHsKLSAgICAgICAgb3V0cHV0KCJTaWRlYmFyIGNyZWF0ZWQiKTsK
LSAgICAgICAgZHVtcE9iamVjdChzaWRlYmFyKTsKLSAgICAgICAgc2lkZWJhci5vblVwZGF0ZWQu
YWRkTGlzdGVuZXIobmV4dFRlc3QpOwotICAgICAgICB2YXIgYmFzZVBhdGggPSBsb2NhdGlvbi5w
YXRobmFtZS5yZXBsYWNlKC9cL1teL10qJC8sICIvIik7Ci0gICAgICAgIHNpZGViYXIuc2V0UGFn
ZShiYXNlUGF0aCArICJleHRlbnNpb24tc2lkZWJhci5odG1sIik7Ci0gICAgfQotICAgIHdlYklu
c3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuY3JlYXRlU2lkZWJhclBhbmUoIlRlc3QgU2lkZWJhciIs
IG9uU2lkZWJhckNyZWF0ZWQpOwotfQotCi1mdW5jdGlvbiBleHRlbnNpb25fZHVtcFNpZGViYXJD
b250ZW50KG5leHRUZXN0KQotewotICAgIGV2YWx1YXRlT25Gcm9udGVuZCgiSW5zcGVjdG9yVGVz
dC5kdW1wU2lkZWJhckNvbnRlbnQocmVwbHkpOyIsIG5leHRUZXN0KTsKLX0KLQotZnVuY3Rpb24g
ZXh0ZW5zaW9uX3Rlc3RTaWRlYmFyV2F0Y2hPYmplY3QobmV4dFRlc3QpCi17Ci0gICAgZnVuY3Rp
b24gb25TaWRlYmFyQ3JlYXRlZChzaWRlYmFyKQotICAgIHsKLSAgICAgICAgb3V0cHV0KCJXYXRj
aCBzaWRlYmFyIGNyZWF0ZWQsIGNhbGxiYWNrIGFyZ3VtZW50cyBkdW1wIGZvbGxvd3M6Iik7Ci0g
ICAgICAgIGR1bXBPYmplY3QoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7
Ci0gICAgICAgIHNpZGViYXIub25VcGRhdGVkLmFkZExpc3RlbmVyKGJpbmQoZXh0ZW5zaW9uX2R1
bXBTaWRlYmFyQ29udGVudCwgdGhpcywgbmV4dFRlc3QpKTsKLSAgICAgICAgc2lkZWJhci5zZXRP
YmplY3QoewotICAgICAgICAgICAgZjA6ICJvYmplY3QiLAotICAgICAgICAgICAgZjE6IHVuZGVm
aW5lZCwKLSAgICAgICAgICAgIGYyOiBudWxsLAotICAgICAgICAgICAgZjM6IHt9LAotICAgICAg
ICAgICAgZjQ6IFtdLAotICAgICAgICAgICAgZjU6IFsiYWEiLCAiYmIiLCAiY2MiXSwKLSAgICAg
ICAgICAgIGY2OiB7IGY2MDogNDIsIGY2MTogImZvbyIsIGY2MjogW10gfSwKLSAgICAgICAgICAg
IGY3OiA0MgotICAgICAgICB9KTsKLSAgICB9Ci0gICAgd2ViSW5zcGVjdG9yLnBhbmVscy5lbGVt
ZW50cy5jcmVhdGVTaWRlYmFyUGFuZSgiV2F0Y2ggVGVzdDogT2JqZWN0Iiwgb25TaWRlYmFyQ3Jl
YXRlZCk7Ci19Ci0KLWZ1bmN0aW9uIGV4dGVuc2lvbl90ZXN0U2lkZWJhcldhdGNoRXhwcmVzc2lv
bihuZXh0VGVzdCkKLXsKLSAgICBmdW5jdGlvbiBvblNpZGViYXJDcmVhdGVkKHNpZGViYXIpCi0g
ICAgewotICAgICAgICBzaWRlYmFyLm9uVXBkYXRlZC5hZGRMaXN0ZW5lcihiaW5kKGV4dGVuc2lv
bl9kdW1wU2lkZWJhckNvbnRlbnQsIHRoaXMsIG5leHRUZXN0KSk7Ci0gICAgICAgIGZ1bmN0aW9u
IGV4cHJlc3Npb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnRlc3RQ
cm9wZXJ0eSA9ICdmb28nOwotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBm
MDogJ2V4cHJlc3Npb24nLAotICAgICAgICAgICAgICAgIGYxOiB1bmRlZmluZWQsCi0gICAgICAg
ICAgICAgICAgZjI6IG51bGwsCi0gICAgICAgICAgICAgICAgZjM6IHt9LAotICAgICAgICAgICAg
ICAgIGY0OiBbXSwKLSAgICAgICAgICAgICAgICBmNTogWyJhYSIsICJiYiIsICJjYyJdLAotICAg
ICAgICAgICAgICAgIGY2OiB7IGY2MDogNDIsIGY2MTogImZvbyIsIGY2MjogW10gfSwKLSAgICAg
ICAgICAgICAgICBmNzogNDIsCi0gICAgICAgICAgICAgICAgZjg6IHdpbmRvdy5sb2NhdGlvbiwK
LSAgICAgICAgICAgICAgICBmOTogZG9jdW1lbnQuYm9keS5jaGlsZHJlbiwKLSAgICAgICAgICAg
ICAgICBmMTA6IGZ1bmN0aW9uKCkge30sCi0gICAgICAgICAgICAgICAgZjExOiAkMC50ZXN0UHJv
cGVydHkKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRG8gYW4gZXh0cmEg
cm91bmQtdHJpcCB0byB0aGUgaW5zcGVjdGVkIHBhZ2UgdG8gYXNzdXJlIGluc3BlY3QoKSdzIHJv
dW5kLXRyaXAgdG8KLSAgICAgICAgLy8gZnJvbnQtZW5kIGlzIGNvbXBsZXRlIGFuZCAkMCBpcyBw
cm9wZXJseSB1cGRhdGVkIHdpdGggY3VycmVudGx5IGluc3BlY3RlZCBub2RlLgotICAgICAgICB3
ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93LmV2YWwoIiIsIGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgc2lkZWJhci5zZXRFeHByZXNzaW9uKCIoIiArIGV4cHJlc3Npb24udG9TdHJpbmcoKSAr
ICIpKCk7IiwgInRpdGxlIik7Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICB3ZWJJbnNwZWN0b3Iu
aW5zcGVjdGVkV2luZG93LmV2YWwoImluc3BlY3QoZG9jdW1lbnQuYm9keSkiLCBmdW5jdGlvbigp
IHsKLSAgICAgICAgd2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5jcmVhdGVTaWRlYmFyUGFu
ZSgiV2F0Y2ggVGVzdDogRXhwcmVzc2lvbiIsIG9uU2lkZWJhckNyZWF0ZWQpOwotICAgIH0pOwot
fQotCi08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPlRl
c3RzIFdlYkluc3BlY3RvciBleHRlbnNpb24gQVBJPC9wPgotPC9ib2R5PgotPC9odG1sPgo=
</data>
<flag name="review"
          id="114004"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>