<?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>109340</bug_id>
          
          <creation_ts>2013-02-08 20:24:52 -0800</creation_ts>
          <short_desc>Web Inspector: protocol should support setStyleText</short_desc>
          <delta_ts>2013-04-18 22:57:53 -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>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>apavlov</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>828900</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-02-08 20:24:52 -0800</bug_when>
    <thetext>You should be able to edit a whole CSSStyleDeclaration (like you can in the CSSOM with the cssText property).

Something like:

            {
                &quot;name&quot;: &quot;setStyleText&quot;,
                &quot;parameters&quot;: [
                    { &quot;name&quot;: &quot;styleId&quot;, &quot;$ref&quot;: &quot;CSSStyleId&quot; },
                    { &quot;name&quot;: &quot;text&quot;, &quot;type&quot;: &quot;string&quot; },
                ],
                &quot;returns&quot;: [
                    { &quot;name&quot;: &quot;style&quot;, &quot;$ref&quot;: &quot;CSSStyle&quot;, &quot;description&quot;: &quot;The resulting style after the text modification.&quot; }
                ],
                &quot;description&quot;: &quot;Sets the new &lt;code&gt;text&lt;/code&gt; for the respective style.&quot;
            },

I understand you can get this crudely by using getStyleSheetText, replace the range gotten from the CSSStyle, then call setStyleSheetText. But that is fairly heavy handed, and would cause a world update for all rules in that stylesheet instead of a single rule.

Having this setStyleText call would allow features like free-form editing of inline styles or rules in the sidebar, instead of individual property editing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877829</commentid>
    <comment_count>1</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-04-18 05:30:59 -0700</bug_when>
    <thetext>I have a patch for this. Working on the test now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877858</commentid>
    <comment_count>2</comment_count>
      <attachid>198728</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-04-18 06:28:22 -0700</bug_when>
    <thetext>Created attachment 198728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878065</commentid>
    <comment_count>3</comment_count>
      <attachid>198728</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-18 13:51:33 -0700</bug_when>
    <thetext>Comment on attachment 198728
Patch

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

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:363
&gt; +        : InspectorCSSAgent::StyleSheetAction(&quot;SetStyleText&quot;, styleSheet)

-&gt; ASCIILiteral(&quot;SetStyleText&quot;) :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878095</commentid>
    <comment_count>4</comment_count>
      <attachid>198767</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-04-18 14:53:38 -0700</bug_when>
    <thetext>Created attachment 198767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878230</commentid>
    <comment_count>5</comment_count>
      <attachid>198767</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-04-18 22:17:05 -0700</bug_when>
    <thetext>Comment on attachment 198767
Patch

Nice! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878248</commentid>
    <comment_count>6</comment_count>
      <attachid>198767</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-18 22:57:50 -0700</bug_when>
    <thetext>Comment on attachment 198767
Patch

Clearing flags on attachment: 198767

Committed r148723: &lt;http://trac.webkit.org/changeset/148723&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878249</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-18 22:57:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198728</attachid>
            <date>2013-04-18 06:28:22 -0700</date>
            <delta_ts>2013-04-18 14:53:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109340-20130418092752.patch</filename>
            <type>text/plain</type>
            <size>22559</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzk2NjM2NTQyMTFmZWRl
ZTE4ZjE2MGEyOTdhNmUyMDg4ZDVjZGNmZC4uNjQ2OTc3MjEyNzQwYzIwY2IyNmU0YmZhNTY3MTU1
NjNkYmVhMzFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTA0LTE4ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQ1NTLnNldFN0
eWxlVGV4dCB0byB0aGUgV2ViIEluc3BlY3RvciBwcm90b2NvbC4KKworICAgICAgICBUaGlzIHBy
b3ZpZGVzIGEgZGlyZWN0IHBhdGggZm9yIHRoZSBTYWZhcmkgV2ViIEluc3BlY3RvciB0byBsaXZl
IGVkaXQgd2hvbGUgc3R5bGUgcnVsZXMuCisKKyAgICAgICAgaHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTA5MzQwCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzEzMzM3MjExCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b246CisgICAgICAgIChDU1Muc2V0U3R5bGVUZXh0KTogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3RvckNTU0FnZW50OjpT
ZXRTdHlsZVRleHRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OlNldFN0eWxlVGV4dEFjdGlvbjo6U2V0U3R5bGVUZXh0QWN0aW9uKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6U2V0U3R5bGVUZXh0QWN0aW9uOjpwZXJmb3Jt
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6U2V0U3R5bGVU
ZXh0QWN0aW9uOjp1bmRvKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NB
Z2VudDo6U2V0U3R5bGVUZXh0QWN0aW9uOjpyZWRvKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6U2V0U3R5bGVUZXh0QWN0aW9uOjptZXJnZUlkKTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6U2V0U3R5bGVUZXh0QWN0aW9u
OjptZXJnZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OlNl
dFByb3BlcnR5VGV4dEFjdGlvbjo6cmVkbyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6c2V0U3R5bGVUZXh0KTogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OmdldFRleHQpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpzZXRUZXh0KTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpzZXRTdHlsZVRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpzZXRTdHlsZVRl
eHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6c3R5bGVUZXh0KTogQWRkZWQgYXMgYW4gYWxpYXMg
dG8gZ2V0VGV4dC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjphcHBseVN0eWxl
VGV4dCk6IEFkZGVkIGFzIGFuIGFsaWFzIHRvIHNldFRleHQuCisKIDIwMTMtMDQtMTMgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE0ODEy
OCk6IHdpbmRvdy5yZXNpemVUbyBkb2Vzbid0IHdvcmsgZnJvbSBTYWZhcmkgYWRkcmVzcyBiYXIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggOWQzMTRkNGU5NDUx
NGJmNGI3Y2YyNTViNjlmYjZkZmZkNmNiNjg2ZC4uNTQ5OGZmZGI0NDExNGQyZGZhZjNiMWFjNGMw
MWIxNmI3NTMwMTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpA
QCAtMjUxNiw2ICsyNTE2LDE3IEBACiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNl
dHMgdGhlIG5ldyBzdHlsZXNoZWV0IHRleHQsIHRoZXJlYnkgaW52YWxpZGF0aW5nIGFsbCBleGlz
dGluZyA8Y29kZT5DU1NTdHlsZUlkPC9jb2RlPidzIGFuZCA8Y29kZT5DU1NSdWxlSWQ8L2NvZGU+
J3MgY29udGFpbmVkIGJ5IHRoaXMgc3R5bGVzaGVldC4iCiAgICAgICAgICAgICB9LAogICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInNldFN0eWxlVGV4dCIsCisgICAgICAg
ICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
c3R5bGVJZCIsICIkcmVmIjogIkNTU1N0eWxlSWQiIH0sCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAidGV4dCIsICJ0eXBlIjogInN0cmluZyIgfQorICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAic3R5bGUiLCAiJHJlZiI6ICJDU1NTdHlsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgcmVzdWx0
aW5nIHN0eWxlIGFmdGVyIHRoZSB0ZXh0IG1vZGlmaWNhdGlvbi4iIH0KKyAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZXRzIHRoZSBuZXcgPGNvZGU+
dGV4dDwvY29kZT4gZm9yIHRoZSByZXNwZWN0aXZlIHN0eWxlLiIKKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAic2V0UHJvcGVydHlUZXh0IiwK
ICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzdHlsZUlkIiwgIiRyZWYiOiAiQ1NTU3R5bGVJZCIgfSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDgzNTA2YjU4ODFmY2I0
YmNlZWZmNDE5YWE4MjA4MGU1YjBlYTQ5Y2MuLjlhMDliNWRkOGVkOGM5YjZlYmUyYzdmNDkxOWMy
OWEzYTYxYjJjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcApAQCAtMzU2LDYgKzM1Niw1MSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX29s
ZFRleHQ7CiB9OwogCitjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDo6U2V0U3R5bGVUZXh0QWN0aW9u
IDogcHVibGljIEluc3BlY3RvckNTU0FnZW50OjpTdHlsZVNoZWV0QWN0aW9uIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTZXRTdHlsZVRleHRBY3Rpb24pOworcHVibGljOgorICAgIFNldFN0
eWxlVGV4dEFjdGlvbihJbnNwZWN0b3JTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBJbnNw
ZWN0b3JDU1NJZCYgY3NzSWQsIGNvbnN0IFN0cmluZyYgdGV4dCkKKyAgICAgICAgOiBJbnNwZWN0
b3JDU1NBZ2VudDo6U3R5bGVTaGVldEFjdGlvbigiU2V0U3R5bGVUZXh0Iiwgc3R5bGVTaGVldCkK
KyAgICAgICAgLCBtX2Nzc0lkKGNzc0lkKQorICAgICAgICAsIG1fdGV4dCh0ZXh0KQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybShFeGNlcHRpb25Db2RlJiBlYykKKyAg
ICB7CisgICAgICAgIHJldHVybiByZWRvKGVjKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wg
dW5kbyhFeGNlcHRpb25Db2RlJiBlYykKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N0eWxlU2hl
ZXQtPnNldFN0eWxlVGV4dChtX2Nzc0lkLCBtX29sZFRleHQsIDAsIGVjKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIGJvb2wgcmVkbyhFeGNlcHRpb25Db2RlJiBlYykKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX3N0eWxlU2hlZXQtPnNldFN0eWxlVGV4dChtX2Nzc0lkLCBtX3RleHQsICZtX29sZFRl
eHQsIGVjKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFN0cmluZyBtZXJnZUlkKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3N0eWxlU2hlZXQtPmlkKCkgPT0gbV9jc3NJZC5zdHlsZVNoZWV0SWQo
KSk7CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiU2V0U3R5bGVUZXh0ICVzOiV1Iiwg
bV9zdHlsZVNoZWV0LT5pZCgpLnV0ZjgoKS5kYXRhKCksIG1fY3NzSWQub3JkaW5hbCgpKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbWVyZ2UoUGFzc093blB0cjxBY3Rpb24+IGFjdGlvbikK
KyAgICB7CisgICAgICAgIEFTU0VSVChhY3Rpb24tPm1lcmdlSWQoKSA9PSBtZXJnZUlkKCkpOwor
CisgICAgICAgIFNldFN0eWxlVGV4dEFjdGlvbiogb3RoZXIgPSBzdGF0aWNfY2FzdDxTZXRTdHls
ZVRleHRBY3Rpb24qPihhY3Rpb24uZ2V0KCkpOworICAgICAgICBtX3RleHQgPSBvdGhlci0+bV90
ZXh0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBJbnNwZWN0b3JDU1NJZCBtX2Nzc0lkOworICAg
IFN0cmluZyBtX3RleHQ7CisgICAgU3RyaW5nIG1fb2xkVGV4dDsKK307CisKIGNsYXNzIEluc3Bl
Y3RvckNTU0FnZW50OjpTZXRQcm9wZXJ0eVRleHRBY3Rpb24gOiBwdWJsaWMgSW5zcGVjdG9yQ1NT
QWdlbnQ6OlN0eWxlU2hlZXRBY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNldFBy
b3BlcnR5VGV4dEFjdGlvbik7CiBwdWJsaWM6CkBAIC0zOTIsNiArNDM3LDcgQEAgcHVibGljOgog
ICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgb25jZSB0aGUgbW9kZWwgaGFuZGxlcyB0aGlz
IGNhc2UuCiAgICAgICAgIGlmICghbV9vbGRUZXh0LmVuZHNXaXRoKCc7JykpCiAgICAgICAgICAg
ICBtX29sZFRleHQuYXBwZW5kKCc7Jyk7CisKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAKQEAgLTgwMCw2ICs4NDYsMjIgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVT
aGVldFRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICAqZXJy
b3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5bGVJZCwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpCit7
CisgICAgSW5zcGVjdG9yQ1NTSWQgY29tcG91bmRJZChmdWxsU3R5bGVJZCk7CisgICAgQVNTRVJU
KCFjb21wb3VuZElkLmlzRW1wdHkoKSk7CisKKyAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNw
ZWN0b3JTdHlsZVNoZWV0ID0gYXNzZXJ0U3R5bGVTaGVldEZvcklkKGVycm9yU3RyaW5nLCBjb21w
b3VuZElkLnN0eWxlU2hlZXRJZCgpKTsKKyAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpCisg
ICAgICAgIHJldHVybjsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGJvb2wgc3Vj
Y2VzcyA9IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShhZG9wdFB0cihuZXcgU2V0U3R5
bGVUZXh0QWN0aW9uKGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHRleHQpKSwgZWMp
OworICAgIGlmIChzdWNjZXNzKQorICAgICAgICByZXN1bHQgPSBpbnNwZWN0b3JTdHlsZVNoZWV0
LT5idWlsZE9iamVjdEZvclN0eWxlKGluc3BlY3RvclN0eWxlU2hlZXQtPnN0eWxlRm9ySWQoY29t
cG91bmRJZCkpOworICAgICplcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9y
U3RyaW5nKGVjKTsKK30KKwogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UHJvcGVydHlUZXh0
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
IGZ1bGxTdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29s
IG92ZXJ3cml0ZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQog
ewogICAgIEluc3BlY3RvckNTU0lkIGNvbXBvdW5kSWQoZnVsbFN0eWxlSWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCA0MGY4ODIwZTJhMjc5
YWI1ZTY4YWY5MGQ4MDY0NDZhMmJlNTg3ZGEyLi5mNmI5MDgyNjYyZmE1MTA2OWM5OGFhNjBmZTU4
NGNjODI0MDY3NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuaApAQCAtMTE1LDYgKzExNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
U3R5bGVTaGVldChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1bHQpOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
c3R5bGVTaGVldElkLCBTdHJpbmcqIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0eWxl
U2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0
IFN0cmluZyYgdGV4dCk7CisgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlVGV4dChFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBjb25zdCBTdHJpbmcm
IHRleHQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
PiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcq
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5SW5k
ZXgsIGJvb2wgZGlzYWJsZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVz
dWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3Rv
ciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+JiByZXN1bHQpOwpAQCAtMTM1LDYg
KzEzNiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgY2xhc3MgU3R5bGVTaGVldEFjdGlvbjsK
ICAgICBjbGFzcyBTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbjsKKyAgICBjbGFzcyBTZXRTdHlsZVRl
eHRBY3Rpb247CiAgICAgY2xhc3MgU2V0UHJvcGVydHlUZXh0QWN0aW9uOwogICAgIGNsYXNzIFRv
Z2dsZVByb3BlcnR5QWN0aW9uOwogICAgIGNsYXNzIFNldFJ1bGVTZWxlY3RvckFjdGlvbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRl
eCBmZWM2NTAwOWM3YmM1NmI3OTMzNWU3YjI1OWJiY2FhOWQ3YzczZGEzLi42YTNiZmMxNzlkNjE2
OTU2NDg4OTg3NWVkNTcwNzVhMGI4YThjZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC00NjAsNyArNDYwLDcgQEAgYm9vbCBJ
bnNwZWN0b3JTdHlsZTo6dG9nZ2xlUHJvcGVydHkodW5zaWduZWQgaW5kZXgsIGJvb2wgZGlzYWJs
ZSwgRXhjZXB0aW9uQ29kZSYKICAgICByZXR1cm4gYXBwbHlTdHlsZVRleHQoZWRpdG9yLnN0eWxl
VGV4dCgpKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JTdHlsZTo6c3R5bGVUZXh0KFN0cmluZyogcmVz
dWx0KSBjb25zdAorYm9vbCBJbnNwZWN0b3JTdHlsZTo6Z2V0VGV4dChTdHJpbmcqIHJlc3VsdCkg
Y29uc3QKIHsKICAgICAvLyBQcmVjb25kaXRpb246IG1fcGFyZW50U3R5bGVTaGVldC0+ZW5zdXJl
UGFyc2VkRGF0YVJlYWR5KCkgaGFzIGJlZW4gY2FsbGVkIHN1Y2Nlc3NmdWxseS4KICAgICBSZWZQ
dHI8Q1NTUnVsZVNvdXJjZURhdGE+IHNvdXJjZURhdGEgPSBleHRyYWN0U291cmNlRGF0YSgpOwpA
QCAtNjQxLDkgKzY0MSw5IEBAIFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IEluc3BlY3Rv
clN0eWxlOjpleHRyYWN0U291cmNlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFyZW50U3R5
bGVTaGVldC0+cnVsZVNvdXJjZURhdGFGb3IobV9zdHlsZS5nZXQoKSk7CiB9CiAKLWJvb2wgSW5z
cGVjdG9yU3R5bGU6OmFwcGx5U3R5bGVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKK2Jvb2wgSW5z
cGVjdG9yU3R5bGU6OnNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKLSAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0LT5zZXRTdHlsZVRleHQobV9zdHls
ZS5nZXQoKSwgdGV4dCk7CisgICAgcmV0dXJuIG1fcGFyZW50U3R5bGVTaGVldC0+c2V0U3R5bGVU
ZXh0KG1fc3R5bGUuZ2V0KCksIHRleHQsIGVjKTsKIH0KIAogU3RyaW5nIEluc3BlY3RvclN0eWxl
OjpzaG9ydGhhbmRWYWx1ZShjb25zdCBTdHJpbmcmIHNob3J0aGFuZFByb3BlcnR5KSBjb25zdApA
QCAtMTEwOSw2ICsxMTA5LDIzIEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoCiAgICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6c2V0U3R5
bGVUZXh0KGNvbnN0IEluc3BlY3RvckNTU0lkJiBpZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBTdHJp
bmcqIG9sZFRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JT
dHlsZT4gaW5zcGVjdG9yU3R5bGUgPSBpbnNwZWN0b3JTdHlsZUZvcklkKGlkKTsKKyAgICBpZiAo
IWluc3BlY3RvclN0eWxlKSB7CisgICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChvbGRUZXh0ICYmICFpbnNwZWN0b3JTdHls
ZS0+Z2V0VGV4dChvbGRUZXh0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBz
dWNjZXNzID0gaW5zcGVjdG9yU3R5bGUtPnNldFRleHQodGV4dCwgZWMpOworICAgIGlmIChzdWNj
ZXNzKQorICAgICAgICBmaXJlU3R5bGVTaGVldENoYW5nZWQoKTsKKyAgICByZXR1cm4gc3VjY2Vz
czsKK30KKwogYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpzZXRQcm9wZXJ0eVRleHQoY29uc3Qg
SW5zcGVjdG9yQ1NTSWQmIGlkLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcm
IHRleHQsIGJvb2wgb3ZlcndyaXRlLCBTdHJpbmcqIG9sZFRleHQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gaW5zcGVjdG9yU3R5bGUgPSBpbnNwZWN0
b3JTdHlsZUZvcklkKGlkKTsKQEAgLTEyNzksNyArMTI5Niw3IEBAIHZvaWQgSW5zcGVjdG9yU3R5
bGVTaGVldDo6ZW5zdXJlRmxhdFJ1bGVzKCkgY29uc3QKICAgICAgICAgY29sbGVjdEZsYXRSdWxl
cyhhc0NTU1J1bGVMaXN0KHBhZ2VTdHlsZVNoZWV0KCkpLCAmbV9mbGF0UnVsZXMpOwogfQogCi1i
b29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OnNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9u
KiBzdHlsZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQorYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpz
ZXRTdHlsZVRleHQoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIGNvbnN0IFN0cmluZyYgdGV4
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFtX3BhZ2VTdHlsZVNoZWV0KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjk1LDcgKzEzMTIsNiBAQCBib29sIEluc3BlY3RvclN0
eWxlU2hlZXQ6OnNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgY29uc3Qg
U3RyaW5nJgogICAgIGlmIChpZC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHN0eWxlLT5zZXRDc3NUZXh0KHRleHQsIGVj
KTsKICAgICBpZiAoIWVjKQogICAgICAgICBtX3BhcnNlZFN0eWxlU2hlZXQtPnNldFRleHQocGF0
Y2hlZFN0eWxlU2hlZXRUZXh0KTsKQEAgLTEzNDIsNyArMTM1OCw5IEBAIHZvaWQgSW5zcGVjdG9y
U3R5bGVTaGVldDo6cmV2YWxpZGF0ZVN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHBhZ2VTdHls
ZSkKICAgICAgICAgICAgIGlmIChwYXJzZWRSdWxlLT5zdHlsZVJ1bGUoKS0+cHJvcGVydGllcygp
LT5hc1RleHQoKSAhPSBwYWdlU3R5bGUtPmNzc1RleHQoKSkgewogICAgICAgICAgICAgICAgIC8v
IENsZWFyIHRoZSBkaXNhYmxlZCBwcm9wZXJ0aWVzIGZvciB0aGUgaW52YWxpZCBzdHlsZSBoZXJl
LgogICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yU3R5bGVzLnJlbW92ZShwYWdlU3R5bGUpOwot
ICAgICAgICAgICAgICAgIHNldFN0eWxlVGV4dChwYWdlU3R5bGUsIHBhZ2VTdHlsZS0+Y3NzVGV4
dCgpKTsKKworICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICAg
ICAgICAgIHNldFN0eWxlVGV4dChwYWdlU3R5bGUsIHBhZ2VTdHlsZS0+Y3NzVGV4dCgpLCBlYyk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTQ2MCwx
MCArMTQ3OCw5IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpnZXRU
ZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIElu
c3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6c2V0U3R5bGVUZXh0KENTU1N0eWxlRGVj
bGFyYXRpb24qIHN0eWxlLCBjb25zdCBTdHJpbmcmIHRleHQpCitib29sIEluc3BlY3RvclN0eWxl
U2hlZXRGb3JJbmxpbmVTdHlsZTo6c2V0U3R5bGVUZXh0KENTU1N0eWxlRGVjbGFyYXRpb24qIHN0
eWxlLCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VS
VF9VTlVTRUQoc3R5bGUsIHN0eWxlID09IGlubGluZVN0eWxlKCkpOwotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogCiAgICAgewogICAgICAgICBJbnNwZWN0b3JDU1NBZ2VudDo6SW5saW5lU3R5
bGVPdmVycmlkZVNjb3BlIG92ZXJyaWRlU2NvcGUobV9lbGVtZW50LT5vd25lckRvY3VtZW50KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKaW5k
ZXggNWUyNjhiZWEwYzBhNDU5MzBhMzFlMTNmZjQ3NTdiODUzYTVmNGNiNi4uOWI4YTgzMGM0YzFl
NThiNTBhM2VkM2VkOTBhMjJjN2EwMzNjMmQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCkBAIC0xNDYsMTQgKzE0NiwxOSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBzZXRQcm9wZXJ0eVRleHQodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
dGV4dCwgYm9vbCBvdmVyd3JpdGUsIFN0cmluZyogb2xkVGV4dCwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIGJvb2wgdG9nZ2xlUHJvcGVydHkodW5zaWduZWQgaW5kZXgsIGJvb2wgZGlzYWJsZSwgRXhj
ZXB0aW9uQ29kZSYpOwogCisgICAgYm9vbCBnZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsK
KyAgICBib29sIHNldFRleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworCiBwcml2
YXRlOgogICAgIEluc3BlY3RvclN0eWxlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBQ
YXNzUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+IHN0eWxlLCBJbnNwZWN0b3JTdHlsZVNoZWV0
KiBwYXJlbnRTdHlsZVNoZWV0KTsKIAotICAgIGJvb2wgc3R5bGVUZXh0KFN0cmluZyogcmVzdWx0
KSBjb25zdDsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIGFsaWFzZXMgYW5kIHVwZGF0ZSBh
bGwgdGhlIGN1cnJlbnQgY2FsbCBzaXRlcyB0byB1c2UgdGhlIG5ldyBwdWJsaWMgbWV0aG9kcy4K
KyAgICBib29sIHN0eWxlVGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3QgeyByZXR1cm4gZ2V0VGV4
dChyZXN1bHQpOyB9CisgICAgYm9vbCBhcHBseVN0eWxlVGV4dChjb25zdCBTdHJpbmcmIHRleHQp
IHsgRXhjZXB0aW9uQ29kZSBlYyA9IDA7IHJldHVybiBzZXRUZXh0KHRleHQsIGVjKTsgfQorCiAg
ICAgYm9vbCBwb3B1bGF0ZUFsbFByb3BlcnRpZXMoVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVy
dHk+KiByZXN1bHQpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
U3R5bGU+IHN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPENTU1J1
bGVTb3VyY2VEYXRhPiBleHRyYWN0U291cmNlRGF0YSgpIGNvbnN0OwotICAgIGJvb2wgYXBwbHlT
dHlsZVRleHQoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIHNob3J0aGFuZFZhbHVlKGNvbnN0
IFN0cmluZyYgc2hvcnRoYW5kUHJvcGVydHkpIGNvbnN0OwogICAgIFN0cmluZyBzaG9ydGhhbmRQ
cmlvcml0eShjb25zdCBTdHJpbmcmIHNob3J0aGFuZFByb3BlcnR5KSBjb25zdDsKICAgICBWZWN0
b3I8U3RyaW5nPiBsb25naGFuZFByb3BlcnRpZXMoY29uc3QgU3RyaW5nJiBzaG9ydGhhbmRQcm9w
ZXJ0eSkgY29uc3Q7CkBAIC0xOTYsNiArMjAxLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gYnVpbGRPYmplY3RGb3JTdHls
ZVNoZWV0SW5mbygpOwogICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4g
YnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZSopOwogICAgIFBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yU3R5bGUoQ1NTU3R5bGVEZWNsYXJh
dGlvbiopOworICAgIGJvb2wgc2V0U3R5bGVUZXh0KGNvbnN0IEluc3BlY3RvckNTU0lkJiwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBTdHJpbmcqIG9sZFRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBi
b29sIHNldFByb3BlcnR5VGV4dChjb25zdCBJbnNwZWN0b3JDU1NJZCYsIHVuc2lnbmVkIHByb3Bl
cnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFN0cmluZyogb2xk
UHJvcGVydHlUZXh0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCB0b2dnbGVQcm9wZXJ0eShj
b25zdCBJbnNwZWN0b3JDU1NJZCYsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJs
ZSwgRXhjZXB0aW9uQ29kZSYpOwogCkBAIC0yMjAsNyArMjI2LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgdm9pZCBmb3JnZXRJbnNwZWN0b3JTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBz
dHlsZSk7CiAKICAgICAvLyBBbHNvIGFjY2Vzc2VkIGJ5IGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JT
dHlsZS4KLSAgICB2aXJ0dWFsIGJvb2wgc2V0U3R5bGVUZXh0KENTU1N0eWxlRGVjbGFyYXRpb24q
LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0U3R5bGVUZXh0KENTU1N0eWxl
RGVjbGFyYXRpb24qLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVh
bCBQYXNzT3duUHRyPFZlY3RvcjxzaXplX3Q+ID4gbGluZUVuZGluZ3MoKSBjb25zdDsKIAogcHJp
dmF0ZToKQEAgLTI3Miw3ICsyNzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGZv
cmdldEluc3BlY3RvclN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qKSB7IH0KIAogICAgIC8vIEFs
c28gYWNjZXNzZWQgYnkgZnJpZW5kIGNsYXNzIEluc3BlY3RvclN0eWxlLgotICAgIHZpcnR1YWwg
Ym9vbCBzZXRTdHlsZVRleHQoQ1NTU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0IFN0cmluZyYpOwor
ICAgIHZpcnR1YWwgYm9vbCBzZXRTdHlsZVRleHQoQ1NTU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0
IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8VmVjdG9y
PHNpemVfdD4gPiBsaW5lRW5kaW5ncygpIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg3OGNk
ZTRmNzgyMTA5NmY0NzU0M2YzNmIyNjU2OWQ1NDlmN2YxZWEuLmU1NTRjMDhmMzZlYTZhZjE1MjFm
YTc1MmMzODRlMzFiMzU4NzNiM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0wNC0xOCAg
VGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIENTUy5z
ZXRTdHlsZVRleHQgdG8gdGhlIFdlYiBJbnNwZWN0b3IgcHJvdG9jb2wuCisKKyAgICAgICAgVGhp
cyBwcm92aWRlcyBhIGRpcmVjdCBwYXRoIGZvciB0aGUgU2FmYXJpIFdlYiBJbnNwZWN0b3IgdG8g
bGl2ZSBlZGl0IHdob2xlIHN0eWxlIHJ1bGVzLgorCisgICAgICAgIGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzEwOTM0MAorICAgICAgICByZGFyOi8vcHJvYmxlbS8xMzMzNzIxMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQ6IFVwZGF0ZWQuCisgICAgICAgICogaW5zcGVjdG9y
L3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sOiBUZXN0IENTU0FnZW50LnNldFN0eWxlVGV4dC4K
KwogMjAxMy0wNC0xNiAgUGFuIERlbmcgIDxwYW4uZGVuZ0BpbnRlbC5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogW05ldHdvcmtdIENvdmVyIHRoZSB0eXBlIG9mIHByZWZsaWdodCB4aHIu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJ
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1B
UEktZXhwZWN0ZWQudHh0CmluZGV4IGM0OTg5ZWQzNGE5NGU2MTc1YzQzYzE4YmMyNjRjZWRjMDA1
MTY4ZTkuLmZkNzk0YTQ4OTM2YmYyMzRjNGU1YzdkYzNiNjFmODQ3NjRhYzRhYWIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEktZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEktZXhw
ZWN0ZWQudHh0CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9keTogW3JlZ3VsYXIsIDA6ODktMDo5M10g
ewogICAgIFsndGV4dC1hbGlnbic6J2p1c3RpZnknXSBAWzA6OTktMDoxMTldIGFjdGl2ZQogfQog
Ci09PT0gQWZ0ZXIgc3R5bGUgdGV4dCBzZXQgPT09Cis9PT0gQWZ0ZXIgcHJvcGVydHkgdGV4dCBz
ZXQgPT09CiAKIFN0eWxlU2hlZXQ6ICdodG1sICosIGJvZHlbZm9vPSJiYXIiXSB7CiAgICAgY29s
b3I6IHdoaXRlOyBiYWNrZ3JvdW5kOiBibGFjazsKQEAgLTM3Niw2ICszNzYsMzggQEAgYm9keTog
W3JlZ3VsYXIsIDI6MS0yOjVdIHsKICAgICBbJ3RleHQtYWxpZ24nOidqdXN0aWZ5J10gQFsyOjEx
LTI6MzFdIGFjdGl2ZQogfQogCis9PT0gQWZ0ZXIgZmlyc3Qgc3R5bGUgdGV4dCBzZXQgPT09CisK
K1N0eWxlU2hlZXQ6ICdodG1sICosIGJvZHlbZm9vPSJiYXIiXSB7fWJvZHkgeyAgICB0ZXh0LWFs
aWduOiBqdXN0aWZ5O30nCitodG1sICosIGJvZHlbZm9vPSJiYXIiXTogW3JlZ3VsYXIsIDA6MC0w
OjIzXSB7Cit9Citib2R5OiBbcmVndWxhciwgMDoyNi0wOjMwXSB7CisgICAgWyd0ZXh0LWFsaWdu
JzonanVzdGlmeSddIEBbMDozNi0wOjU2XSBhY3RpdmUKK30KKworPT09IEFmdGVyIHNlY29uZCBz
dHlsZSB0ZXh0IHNldCA9PT0KKworU3R5bGVTaGVldDogJ2h0bWwgKiwgYm9keVtmb289ImJhciJd
IHtjb2xvcjogZ3JlZW47IGJhY2tncm91bmQ6IHJlZDsgZm9vOiBiYXI7ICpiYXo6IGJhcjsgLyog
Q29tbWVudCAqLyBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50fWJvZHkgeyAgICB0ZXh0LWFs
aWduOiBqdXN0aWZ5O30nCitodG1sICosIGJvZHlbZm9vPSJiYXIiXTogW3JlZ3VsYXIsIDA6MC0w
OjIzXSB7CisgICAgWydjb2xvcic6J2dyZWVuJ10gQFswOjI1LTA6MzhdIGFjdGl2ZQorICAgIFsn
YmFja2dyb3VuZCc6J3JlZCddIEBbMDozOS0wOjU1XSBhY3RpdmUKKyAgICBbJ2Zvbyc6J2Jhcicg
bm9uLXBhcnNlZF0gQFswOjU2LTA6NjVdIGFjdGl2ZQorICAgIFsnZm9udC13ZWlnaHQnOidib2xk
ICFpbXBvcnRhbnQnIGlzLWltcG9ydGFudF0gQFswOjkxLTA6MTE5XSBhY3RpdmUKKyAgICBbJ2Jh
Y2tncm91bmQtaW1hZ2UnOidpbml0aWFsJ10gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQor
ICAgIFsnYmFja2dyb3VuZC1yZXBlYXQteCc6J2luaXRpYWwnXSBAW3VuZGVmaW5lZC11bmRlZmlu
ZWRdIHN0eWxlCisgICAgWydiYWNrZ3JvdW5kLXJlcGVhdC15JzonaW5pdGlhbCddIEBbdW5kZWZp
bmVkLXVuZGVmaW5lZF0gc3R5bGUKKyAgICBbJ2JhY2tncm91bmQtYXR0YWNobWVudCc6J2luaXRp
YWwnXSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxlCisgICAgWydiYWNrZ3JvdW5kLXBvc2l0
aW9uLXgnOidpbml0aWFsJ10gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorICAgIFsnYmFj
a2dyb3VuZC1wb3NpdGlvbi15JzonaW5pdGlhbCddIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5
bGUKKyAgICBbJ2JhY2tncm91bmQtb3JpZ2luJzonaW5pdGlhbCddIEBbdW5kZWZpbmVkLXVuZGVm
aW5lZF0gc3R5bGUKKyAgICBbJ2JhY2tncm91bmQtY2xpcCc6J2luaXRpYWwnXSBAW3VuZGVmaW5l
ZC11bmRlZmluZWRdIHN0eWxlCisgICAgWydiYWNrZ3JvdW5kLWNvbG9yJzoncmVkJ10gQFt1bmRl
ZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorICAgIFsnYmFja2dyb3VuZC1zaXplJzonaW5pdGlhbCdd
IEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKK30KK2JvZHk6IFtyZWd1bGFyLCAwOjEyMC0w
OjEyNF0geworICAgIFsndGV4dC1hbGlnbic6J2p1c3RpZnknXSBAWzA6MTMwLTA6MTUwXSBhY3Rp
dmUKK30KKwogPT09IE1hdGNoZWQgcnVsZXMgYWZ0ZXIgcnVsZSBhZGRlZCA9PT0KIGJvZHk6IFt1
c2VyLWFnZW50XSB7CiAgICAgWydkaXNwbGF5JzonYmxvY2snXSBAW3VuZGVmaW5lZC11bmRlZmlu
ZWRdIHN0eWxlCkBAIC00MDIsOCArNDM0LDEwIEBAIGJvZHk6IFtyZWd1bGFyLCA5OjAtOTo0XSB7
CiAgICAgWydjb2xvcic6JyJiYWRjb2xvciIgISBpbXBvcnRhbnQgLyogZ29vZCBwcm9wZXJ0eSB3
aXRoIHN0cmFuZ2UgdmFsdWUgKi8nIGlzLWltcG9ydGFudCBub24tcGFyc2VkXSBAWzE4OjQtMTg6
NzNdIGFjdGl2ZQogfQogaHRtbCAqLCBib2R5W2Zvbz0iYmFyIl06IFtyZWd1bGFyLCAwOjAtMDoy
M10gewotICAgIFsnY29sb3InOid3aGl0ZSddIEBbMTo0LTE6MTddIGFjdGl2ZQotICAgIFsnYmFj
a2dyb3VuZCc6J2JsYWNrJ10gQFsxOjE4LTE6MzZdIGFjdGl2ZQorICAgIFsnY29sb3InOidncmVl
biddIEBbMDoyNS0wOjM4XSBhY3RpdmUKKyAgICBbJ2JhY2tncm91bmQnOidyZWQnXSBAWzA6Mzkt
MDo1NV0gYWN0aXZlCisgICAgWydmb28nOidiYXInIG5vbi1wYXJzZWRdIEBbMDo1Ni0wOjY1XSBh
Y3RpdmUKKyAgICBbJ2ZvbnQtd2VpZ2h0JzonYm9sZCAhaW1wb3J0YW50JyBpcy1pbXBvcnRhbnRd
IEBbMDo5MS0wOjExOV0gYWN0aXZlCiAgICAgWydiYWNrZ3JvdW5kLWltYWdlJzonaW5pdGlhbCdd
IEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKICAgICBbJ2JhY2tncm91bmQtcmVwZWF0LXgn
Oidpbml0aWFsJ10gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQogICAgIFsnYmFja2dyb3Vu
ZC1yZXBlYXQteSc6J2luaXRpYWwnXSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxlCkBAIC00
MTIsMTEgKzQ0NiwxMSBAQCBodG1sICosIGJvZHlbZm9vPSJiYXIiXTogW3JlZ3VsYXIsIDA6MC0w
OjIzXSB7CiAgICAgWydiYWNrZ3JvdW5kLXBvc2l0aW9uLXknOidpbml0aWFsJ10gQFt1bmRlZmlu
ZWQtdW5kZWZpbmVkXSBzdHlsZQogICAgIFsnYmFja2dyb3VuZC1vcmlnaW4nOidpbml0aWFsJ10g
QFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQogICAgIFsnYmFja2dyb3VuZC1jbGlwJzonaW5p
dGlhbCddIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKLSAgICBbJ2JhY2tncm91bmQtY29s
b3InOidibGFjayddIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKKyAgICBbJ2JhY2tncm91
bmQtY29sb3InOidyZWQnXSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxlCiAgICAgWydiYWNr
Z3JvdW5kLXNpemUnOidpbml0aWFsJ10gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQogfQot
Ym9keTogW3JlZ3VsYXIsIDI6MS0yOjVdIHsKLSAgICBbJ3RleHQtYWxpZ24nOidqdXN0aWZ5J10g
QFsyOjExLTI6MzFdIGFjdGl2ZQorYm9keTogW3JlZ3VsYXIsIDA6MTIwLTA6MTI0XSB7CisgICAg
Wyd0ZXh0LWFsaWduJzonanVzdGlmeSddIEBbMDoxMzAtMDoxNTBdIGFjdGl2ZQogfQogYm9keTog
W2luc3BlY3RvciwgMDowLTA6NF0gewogICAgIFsnZm9udC1mYW1pbHknOidzZXJpZiddIEBbMTo0
LTE6MjNdIGFjdGl2ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtbmV3LUFQSS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMt
bmV3LUFQSS5odG1sCmluZGV4IDU2N2U3OGI1ODE1NjM0MzdjMzcyM2FiMTNkZDA3NTE2Y2FkZTIz
MjcuLjY1ZjVkMmI5M2Y5MjhlNDc5ODE1ZTAyY2I0YjcyMmI3NzkzYTcwZDIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEkuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWwKQEAgLTE5Miwy
MyArMTkyLDIzIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIj09PSBBZnRlciBzZWxlY3RvciBzZXQgPT09Iik7Ci0gICAgICAgICAgICBsb2Fk
QW5kRHVtcFN0eWxlU2hlZXQocnVsZS5ydWxlSWQuc3R5bGVTaGVldElkLCB0ZXN0X3NldFN0eWxl
VGV4dCk7CisgICAgICAgICAgICBsb2FkQW5kRHVtcFN0eWxlU2hlZXQocnVsZS5ydWxlSWQuc3R5
bGVTaGVldElkLCB0ZXN0X3NldFByb3BlcnR5VGV4dCk7CiAgICAgICAgIH0KIAogICAgICAgICBD
U1NBZ2VudC5zZXRSdWxlU2VsZWN0b3Ioc3R5bGVTaGVldC5ydWxlc1swXS5ydWxlSWQsICJodG1s
ICosIGJvZHlbZm9vPVwiYmFyXCJdIiwgZGlkU2V0U2VsZWN0b3IpOwogICAgIH0KIAotICAgIGZ1
bmN0aW9uIHRlc3Rfc2V0U3R5bGVUZXh0KHN0eWxlU2hlZXQpCisgICAgZnVuY3Rpb24gdGVzdF9z
ZXRQcm9wZXJ0eVRleHQoc3R5bGVTaGVldCkKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGRpZFNl
dFN0eWxlVGV4dChlcnJvciwgc3R5bGUpCisgICAgICAgIGZ1bmN0aW9uIGRpZFNldFByb3BlcnR5
VGV4dChlcnJvciwgc3R5bGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewog
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlcnJvcjogIiArIGVycm9y
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiPT09IEFmdGVyIHN0eWxlIHRleHQgc2V0ID09PSIpOwotICAgICAgICAgICAgbG9h
ZEFuZER1bXBTdHlsZVNoZWV0KHN0eWxlLnN0eWxlSWQuc3R5bGVTaGVldElkLCB0ZXN0X2FkZFJ1
bGUpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBBZnRlciBwcm9w
ZXJ0eSB0ZXh0IHNldCA9PT0iKTsKKyAgICAgICAgICAgIGxvYWRBbmREdW1wU3R5bGVTaGVldChz
dHlsZS5zdHlsZUlkLnN0eWxlU2hlZXRJZCwgdGVzdF9zZXRTdHlsZVRleHQxKTsKICAgICAgICAg
fQogCiAgICAgICAgIENTU0FnZW50LnNldFByb3BlcnR5VGV4dChzdHlsZVNoZWV0LnJ1bGVzWzBd
LnN0eWxlLnN0eWxlSWQsIDAsICIiLCB0cnVlKTsKQEAgLTIxNiw3ICsyMTYsMzkgQEAgZnVuY3Rp
b24gdGVzdCgpCiAKICAgICAgICAgLy8gVGhpcyBvcGVyYXRpb24gc2hvdWxkIG5vdCB1cGRhdGUg
dGhlIHN0eWxlIGFzIHRoZSBuZXcgcHJvcGVydHkgdGV4dCBpcyBub3QgcGFyc2FibGUuCiAgICAg
ICAgIENTU0FnZW50LnNldFByb3BlcnR5VGV4dChzdHlsZVNoZWV0LnJ1bGVzWzBdLnN0eWxlLnN0
eWxlSWQsIDAsICJ6eno7IiwgZmFsc2UpOwotICAgICAgICBDU1NBZ2VudC5zZXRQcm9wZXJ0eVRl
eHQoc3R5bGVTaGVldC5ydWxlc1swXS5zdHlsZS5zdHlsZUlkLCAwLCAiY29sb3I6IHdoaXRlOyBi
YWNrZ3JvdW5kOiBibGFjazsiLCBmYWxzZSwgZGlkU2V0U3R5bGVUZXh0KTsKKyAgICAgICAgQ1NT
QWdlbnQuc2V0UHJvcGVydHlUZXh0KHN0eWxlU2hlZXQucnVsZXNbMF0uc3R5bGUuc3R5bGVJZCwg
MCwgImNvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZDogYmxhY2s7IiwgZmFsc2UsIGRpZFNldFByb3Bl
cnR5VGV4dCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdF9zZXRTdHlsZVRleHQxKHN0eWxl
U2hlZXQpCisgICAgeworICAgICAgICBmdW5jdGlvbiBkaWRTZXRTdHlsZVRleHQxKGVycm9yLCBz
dHlsZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVycm9yOiAiICsgZXJyb3IpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCIiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0g
QWZ0ZXIgZmlyc3Qgc3R5bGUgdGV4dCBzZXQgPT09Iik7CisgICAgICAgICAgICBsb2FkQW5kRHVt
cFN0eWxlU2hlZXQoc3R5bGUuc3R5bGVJZC5zdHlsZVNoZWV0SWQsIHRlc3Rfc2V0U3R5bGVUZXh0
Mik7CisgICAgICAgIH0KKworICAgICAgICBDU1NBZ2VudC5zZXRTdHlsZVRleHQoc3R5bGVTaGVl
dC5ydWxlc1swXS5zdHlsZS5zdHlsZUlkLCAiIiwgZGlkU2V0U3R5bGVUZXh0MSk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gdGVzdF9zZXRTdHlsZVRleHQyKHN0eWxlU2hlZXQpCisgICAgeworICAg
ICAgICBmdW5jdGlvbiBkaWRTZXRTdHlsZVRleHQyKGVycm9yLCBzdHlsZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoImVycm9yOiAiICsgZXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQWZ0ZXIgc2Vjb25kIHN0eWxl
IHRleHQgc2V0ID09PSIpOworICAgICAgICAgICAgbG9hZEFuZER1bXBTdHlsZVNoZWV0KHN0eWxl
LnN0eWxlSWQuc3R5bGVTaGVldElkLCB0ZXN0X2FkZFJ1bGUpOworICAgICAgICB9CisKKyAgICAg
ICAgQ1NTQWdlbnQuc2V0U3R5bGVUZXh0KHN0eWxlU2hlZXQucnVsZXNbMF0uc3R5bGUuc3R5bGVJ
ZCwgImNvbG9yOiBncmVlbjsgYmFja2dyb3VuZDogcmVkOyBmb286IGJhcjsgKmJhejogYmFyOyAv
KiBDb21tZW50ICovIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQiLCBkaWRTZXRTdHlsZVRl
eHQyKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiB0ZXN0X2FkZFJ1bGUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198767</attachid>
            <date>2013-04-18 14:53:38 -0700</date>
            <delta_ts>2013-04-18 22:57:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109340-20130418175307.patch</filename>
            <type>text/plain</type>
            <size>22573</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzk2NjM2NTQyMTFmZWRl
ZTE4ZjE2MGEyOTdhNmUyMDg4ZDVjZGNmZC4uNjQ2OTc3MjEyNzQwYzIwY2IyNmU0YmZhNTY3MTU1
NjNkYmVhMzFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTA0LTE4ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQ1NTLnNldFN0
eWxlVGV4dCB0byB0aGUgV2ViIEluc3BlY3RvciBwcm90b2NvbC4KKworICAgICAgICBUaGlzIHBy
b3ZpZGVzIGEgZGlyZWN0IHBhdGggZm9yIHRoZSBTYWZhcmkgV2ViIEluc3BlY3RvciB0byBsaXZl
IGVkaXQgd2hvbGUgc3R5bGUgcnVsZXMuCisKKyAgICAgICAgaHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTA5MzQwCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzEzMzM3MjExCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b246CisgICAgICAgIChDU1Muc2V0U3R5bGVUZXh0KTogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3RvckNTU0FnZW50OjpT
ZXRTdHlsZVRleHRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OlNldFN0eWxlVGV4dEFjdGlvbjo6U2V0U3R5bGVUZXh0QWN0aW9uKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6U2V0U3R5bGVUZXh0QWN0aW9uOjpwZXJmb3Jt
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6U2V0U3R5bGVU
ZXh0QWN0aW9uOjp1bmRvKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NB
Z2VudDo6U2V0U3R5bGVUZXh0QWN0aW9uOjpyZWRvKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6U2V0U3R5bGVUZXh0QWN0aW9uOjptZXJnZUlkKTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6U2V0U3R5bGVUZXh0QWN0aW9u
OjptZXJnZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OlNl
dFByb3BlcnR5VGV4dEFjdGlvbjo6cmVkbyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6c2V0U3R5bGVUZXh0KTogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OmdldFRleHQpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpzZXRUZXh0KTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpzZXRTdHlsZVRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpzZXRTdHlsZVRl
eHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6c3R5bGVUZXh0KTogQWRkZWQgYXMgYW4gYWxpYXMg
dG8gZ2V0VGV4dC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjphcHBseVN0eWxl
VGV4dCk6IEFkZGVkIGFzIGFuIGFsaWFzIHRvIHNldFRleHQuCisKIDIwMTMtMDQtMTMgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE0ODEy
OCk6IHdpbmRvdy5yZXNpemVUbyBkb2Vzbid0IHdvcmsgZnJvbSBTYWZhcmkgYWRkcmVzcyBiYXIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggOWQzMTRkNGU5NDUx
NGJmNGI3Y2YyNTViNjlmYjZkZmZkNmNiNjg2ZC4uNTQ5OGZmZGI0NDExNGQyZGZhZjNiMWFjNGMw
MWIxNmI3NTMwMTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpA
QCAtMjUxNiw2ICsyNTE2LDE3IEBACiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNl
dHMgdGhlIG5ldyBzdHlsZXNoZWV0IHRleHQsIHRoZXJlYnkgaW52YWxpZGF0aW5nIGFsbCBleGlz
dGluZyA8Y29kZT5DU1NTdHlsZUlkPC9jb2RlPidzIGFuZCA8Y29kZT5DU1NSdWxlSWQ8L2NvZGU+
J3MgY29udGFpbmVkIGJ5IHRoaXMgc3R5bGVzaGVldC4iCiAgICAgICAgICAgICB9LAogICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInNldFN0eWxlVGV4dCIsCisgICAgICAg
ICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
c3R5bGVJZCIsICIkcmVmIjogIkNTU1N0eWxlSWQiIH0sCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAidGV4dCIsICJ0eXBlIjogInN0cmluZyIgfQorICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAic3R5bGUiLCAiJHJlZiI6ICJDU1NTdHlsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgcmVzdWx0
aW5nIHN0eWxlIGFmdGVyIHRoZSB0ZXh0IG1vZGlmaWNhdGlvbi4iIH0KKyAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZXRzIHRoZSBuZXcgPGNvZGU+
dGV4dDwvY29kZT4gZm9yIHRoZSByZXNwZWN0aXZlIHN0eWxlLiIKKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAic2V0UHJvcGVydHlUZXh0IiwK
ICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzdHlsZUlkIiwgIiRyZWYiOiAiQ1NTU3R5bGVJZCIgfSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDgzNTA2YjU4ODFmY2I0
YmNlZWZmNDE5YWE4MjA4MGU1YjBlYTQ5Y2MuLjIxZDY5OTEwMDExZjNiNjk0NTIwY2FmZTNlZWNj
NzUyMDA5OGEyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcApAQCAtMzU2LDYgKzM1Niw1MSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX29s
ZFRleHQ7CiB9OwogCitjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDo6U2V0U3R5bGVUZXh0QWN0aW9u
IDogcHVibGljIEluc3BlY3RvckNTU0FnZW50OjpTdHlsZVNoZWV0QWN0aW9uIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTZXRTdHlsZVRleHRBY3Rpb24pOworcHVibGljOgorICAgIFNldFN0
eWxlVGV4dEFjdGlvbihJbnNwZWN0b3JTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBJbnNw
ZWN0b3JDU1NJZCYgY3NzSWQsIGNvbnN0IFN0cmluZyYgdGV4dCkKKyAgICAgICAgOiBJbnNwZWN0
b3JDU1NBZ2VudDo6U3R5bGVTaGVldEFjdGlvbihBU0NJSUxpdGVyYWwoIlNldFN0eWxlVGV4dCIp
LCBzdHlsZVNoZWV0KQorICAgICAgICAsIG1fY3NzSWQoY3NzSWQpCisgICAgICAgICwgbV90ZXh0
KHRleHQpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlv
bkNvZGUmIGVjKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlZG8oZWMpOworICAgIH0KKworICAg
IHZpcnR1YWwgYm9vbCB1bmRvKEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fc3R5bGVTaGVldC0+c2V0U3R5bGVUZXh0KG1fY3NzSWQsIG1fb2xkVGV4dCwgMCwgZWMp
OworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCByZWRvKEV4Y2VwdGlvbkNvZGUmIGVjKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fc3R5bGVTaGVldC0+c2V0U3R5bGVUZXh0KG1fY3NzSWQsIG1f
dGV4dCwgJm1fb2xkVGV4dCwgZWMpOworICAgIH0KKworICAgIHZpcnR1YWwgU3RyaW5nIG1lcmdl
SWQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc3R5bGVTaGVldC0+aWQoKSA9PSBtX2Nzc0lk
LnN0eWxlU2hlZXRJZCgpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJTZXRTdHls
ZVRleHQgJXM6JXUiLCBtX3N0eWxlU2hlZXQtPmlkKCkudXRmOCgpLmRhdGEoKSwgbV9jc3NJZC5v
cmRpbmFsKCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBtZXJnZShQYXNzT3duUHRyPEFj
dGlvbj4gYWN0aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGFjdGlvbi0+bWVyZ2VJZCgpID09
IG1lcmdlSWQoKSk7CisKKyAgICAgICAgU2V0U3R5bGVUZXh0QWN0aW9uKiBvdGhlciA9IHN0YXRp
Y19jYXN0PFNldFN0eWxlVGV4dEFjdGlvbio+KGFjdGlvbi5nZXQoKSk7CisgICAgICAgIG1fdGV4
dCA9IG90aGVyLT5tX3RleHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIEluc3BlY3RvckNTU0lk
IG1fY3NzSWQ7CisgICAgU3RyaW5nIG1fdGV4dDsKKyAgICBTdHJpbmcgbV9vbGRUZXh0OworfTsK
KwogY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQ6OlNldFByb3BlcnR5VGV4dEFjdGlvbiA6IHB1Ymxp
YyBJbnNwZWN0b3JDU1NBZ2VudDo6U3R5bGVTaGVldEFjdGlvbiB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoU2V0UHJvcGVydHlUZXh0QWN0aW9uKTsKIHB1YmxpYzoKQEAgLTM5Miw2ICs0Mzcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyBvbmNlIHRoZSBtb2Rl
bCBoYW5kbGVzIHRoaXMgY2FzZS4KICAgICAgICAgaWYgKCFtX29sZFRleHQuZW5kc1dpdGgoJzsn
KSkKICAgICAgICAgICAgIG1fb2xkVGV4dC5hcHBlbmQoJzsnKTsKKwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIApAQCAtODAwLDYgKzg0NiwyMiBAQCB2b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZwogICAgICplcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5n
KGVjKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGZ1bGxTdHls
ZUlkLCBjb25zdCBTdHJpbmcmIHRleHQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZT4mIHJlc3VsdCkKK3sKKyAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxTdHlsZUlk
KTsKKyAgICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsKKworICAgIEluc3BlY3RvclN0
eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBhc3NlcnRTdHlsZVNoZWV0Rm9ySWQoZXJy
b3JTdHJpbmcsIGNvbXBvdW5kSWQuc3R5bGVTaGVldElkKCkpOworICAgIGlmICghaW5zcGVjdG9y
U3R5bGVTaGVldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgYm9vbCBzdWNjZXNzID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKGFkb3B0
UHRyKG5ldyBTZXRTdHlsZVRleHRBY3Rpb24oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJ
ZCwgdGV4dCkpLCBlYyk7CisgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgIHJlc3VsdCA9IGluc3Bl
Y3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoaW5zcGVjdG9yU3R5bGVTaGVldC0+
c3R5bGVGb3JJZChjb21wb3VuZElkKSk7CisgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9N
QWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOworfQorCiB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpz
ZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJp
bmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGU+JiByZXN1bHQpCiB7CiAgICAgSW5zcGVjdG9yQ1NTSWQgY29tcG91bmRJZChmdWxsU3R5bGVJ
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4
IDQwZjg4MjBlMmEyNzlhYjVlNjhhZjkwZDgwNjQ0NmEyYmU1ODdkYTIuLmY2YjkwODI2NjJmYTUx
MDY5Yzk4YWE2MGZlNTg0Y2M4MjQwNjc3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0xMTUsNiArMTE1LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBnZXRTdHlsZVNoZWV0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHls
ZVNoZWV0SWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4mIHJl
c3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFN0cmluZyogcmVzdWx0KTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxl
U2hlZXRJZCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVU
ZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQs
IGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYg
cmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHlUZXh0KEVycm9yU3RyaW5nKiwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4
LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQcm9wZXJ0
eShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBp
bnQgcHJvcGVydHlJbmRleCwgYm9vbCBkaXNhYmxlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTU3R5bGU+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSdWxlU2VsZWN0b3IoRXJy
b3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBT
dHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3Vs
dCk7CkBAIC0xMzUsNiArMTM2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBjbGFzcyBTdHls
ZVNoZWV0QWN0aW9uOwogICAgIGNsYXNzIFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uOworICAgIGNs
YXNzIFNldFN0eWxlVGV4dEFjdGlvbjsKICAgICBjbGFzcyBTZXRQcm9wZXJ0eVRleHRBY3Rpb247
CiAgICAgY2xhc3MgVG9nZ2xlUHJvcGVydHlBY3Rpb247CiAgICAgY2xhc3MgU2V0UnVsZVNlbGVj
dG9yQWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwCmluZGV4IGZlYzY1MDA5YzdiYzU2Yjc5MzM1ZTdiMjU5YmJjYWE5ZDdjNzNkYTMu
LjZhM2JmYzE3OWQ2MTY5NTY0ODg5ODc1ZWQ1NzA3NWEwYjhhOGNmMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTQ2MCw3ICs0
NjAsNyBAQCBib29sIEluc3BlY3RvclN0eWxlOjp0b2dnbGVQcm9wZXJ0eSh1bnNpZ25lZCBpbmRl
eCwgYm9vbCBkaXNhYmxlLCBFeGNlcHRpb25Db2RlJgogICAgIHJldHVybiBhcHBseVN0eWxlVGV4
dChlZGl0b3Iuc3R5bGVUZXh0KCkpOwogfQogCi1ib29sIEluc3BlY3RvclN0eWxlOjpzdHlsZVRl
eHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0Citib29sIEluc3BlY3RvclN0eWxlOjpnZXRUZXh0KFN0
cmluZyogcmVzdWx0KSBjb25zdAogewogICAgIC8vIFByZWNvbmRpdGlvbjogbV9wYXJlbnRTdHls
ZVNoZWV0LT5lbnN1cmVQYXJzZWREYXRhUmVhZHkoKSBoYXMgYmVlbiBjYWxsZWQgc3VjY2Vzc2Z1
bGx5LgogICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gc291cmNlRGF0YSA9IGV4dHJhY3RT
b3VyY2VEYXRhKCk7CkBAIC02NDEsOSArNjQxLDkgQEAgUGFzc1JlZlB0cjxDU1NSdWxlU291cmNl
RGF0YT4gSW5zcGVjdG9yU3R5bGU6OmV4dHJhY3RTb3VyY2VEYXRhKCkgY29uc3QKICAgICByZXR1
cm4gbV9wYXJlbnRTdHlsZVNoZWV0LT5ydWxlU291cmNlRGF0YUZvcihtX3N0eWxlLmdldCgpKTsK
IH0KIAotYm9vbCBJbnNwZWN0b3JTdHlsZTo6YXBwbHlTdHlsZVRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0KQorYm9vbCBJbnNwZWN0b3JTdHlsZTo6c2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHJldHVybiBtX3BhcmVudFN0eWxlU2hlZXQtPnNldFN0
eWxlVGV4dChtX3N0eWxlLmdldCgpLCB0ZXh0KTsKKyAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNo
ZWV0LT5zZXRTdHlsZVRleHQobV9zdHlsZS5nZXQoKSwgdGV4dCwgZWMpOwogfQogCiBTdHJpbmcg
SW5zcGVjdG9yU3R5bGU6OnNob3J0aGFuZFZhbHVlKGNvbnN0IFN0cmluZyYgc2hvcnRoYW5kUHJv
cGVydHkpIGNvbnN0CkBAIC0xMTA5LDYgKzExMDksMjMgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHls
ZSgKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAorYm9vbCBJbnNwZWN0b3JTdHls
ZVNoZWV0OjpzZXRTdHlsZVRleHQoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIGlkLCBjb25zdCBTdHJp
bmcmIHRleHQsIFN0cmluZyogb2xkVGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVm
UHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZSA9IGluc3BlY3RvclN0eWxlRm9ySWQo
aWQpOworICAgIGlmICghaW5zcGVjdG9yU3R5bGUpIHsKKyAgICAgICAgZWMgPSBOT1RfRk9VTkRf
RVJSOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG9sZFRleHQgJiYg
IWluc3BlY3RvclN0eWxlLT5nZXRUZXh0KG9sZFRleHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBib29sIHN1Y2Nlc3MgPSBpbnNwZWN0b3JTdHlsZS0+c2V0VGV4dCh0ZXh0LCBlYyk7
CisgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgIGZpcmVTdHlsZVNoZWV0Q2hhbmdlZCgpOworICAg
IHJldHVybiBzdWNjZXNzOworfQorCiBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OnNldFByb3Bl
cnR5VGV4dChjb25zdCBJbnNwZWN0b3JDU1NJZCYgaWQsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgs
IGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFN0cmluZyogb2xkVGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JT
dHlsZSA9IGluc3BlY3RvclN0eWxlRm9ySWQoaWQpOwpAQCAtMTI3OSw3ICsxMjk2LDcgQEAgdm9p
ZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVGbGF0UnVsZXMoKSBjb25zdAogICAgICAgICBj
b2xsZWN0RmxhdFJ1bGVzKGFzQ1NTUnVsZUxpc3QocGFnZVN0eWxlU2hlZXQoKSksICZtX2ZsYXRS
dWxlcyk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6c2V0U3R5bGVUZXh0KENTU1N0
eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBjb25zdCBTdHJpbmcmIHRleHQpCitib29sIEluc3BlY3Rv
clN0eWxlU2hlZXQ6OnNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIW1fcGFnZVN0
eWxlU2hlZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyOTUsNyArMTMxMiw2IEBAIGJv
b2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6c2V0U3R5bGVUZXh0KENTU1N0eWxlRGVjbGFyYXRpb24q
IHN0eWxlLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKGlkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgc3R5bGUtPnNldENz
c1RleHQodGV4dCwgZWMpOwogICAgIGlmICghZWMpCiAgICAgICAgIG1fcGFyc2VkU3R5bGVTaGVl
dC0+c2V0VGV4dChwYXRjaGVkU3R5bGVTaGVldFRleHQpOwpAQCAtMTM0Miw3ICsxMzU4LDkgQEAg
dm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXZhbGlkYXRlU3R5bGUoQ1NTU3R5bGVEZWNsYXJh
dGlvbiogcGFnZVN0eWxlKQogICAgICAgICAgICAgaWYgKHBhcnNlZFJ1bGUtPnN0eWxlUnVsZSgp
LT5wcm9wZXJ0aWVzKCktPmFzVGV4dCgpICE9IHBhZ2VTdHlsZS0+Y3NzVGV4dCgpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIGRpc2FibGVkIHByb3BlcnRpZXMgZm9yIHRoZSBpbnZh
bGlkIHN0eWxlIGhlcmUuCiAgICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JTdHlsZXMucmVtb3Zl
KHBhZ2VTdHlsZSk7Ci0gICAgICAgICAgICAgICAgc2V0U3R5bGVUZXh0KHBhZ2VTdHlsZSwgcGFn
ZVN0eWxlLT5jc3NUZXh0KCkpOworCisgICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgICAgICAgICAgICAgc2V0U3R5bGVUZXh0KHBhZ2VTdHlsZSwgcGFnZVN0eWxlLT5j
c3NUZXh0KCksIGVjKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0xNDYwLDEwICsxNDc4LDkgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5s
aW5lU3R5bGU6OmdldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpzZXRTdHlsZVRl
eHQoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKK2Jvb2wg
SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpzZXRTdHlsZVRleHQoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChzdHlsZSwgc3R5bGUgPT0gaW5saW5lU3R5bGUoKSk7Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAKICAgICB7CiAgICAgICAgIEluc3BlY3RvckNTU0Fn
ZW50OjpJbmxpbmVTdHlsZU92ZXJyaWRlU2NvcGUgb3ZlcnJpZGVTY29wZShtX2VsZW1lbnQtPm93
bmVyRG9jdW1lbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuaAppbmRleCA1ZTI2OGJlYTBjMGE0NTkzMGEzMWUxM2ZmNDc1N2I4NTNhNWY0Y2I2
Li45YjhhODMwYzRjMWU1OGI1MGEzZWQzZWQ5MGEyMmM3YTAzM2MyZDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKQEAgLTE0NiwxNCArMTQ2
LDE5IEBAIHB1YmxpYzoKICAgICBib29sIHNldFByb3BlcnR5VGV4dCh1bnNpZ25lZCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgU3RyaW5nKiBvbGRUZXh0LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgYm9vbCB0b2dnbGVQcm9wZXJ0eSh1bnNpZ25lZCBpbmRleCwgYm9v
bCBkaXNhYmxlLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBib29sIGdldFRleHQoU3RyaW5nKiBy
ZXN1bHQpIGNvbnN0OworICAgIGJvb2wgc2V0VGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CisKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yU3R5bGUoY29uc3QgSW5zcGVjdG9yQ1NT
SWQmIHN0eWxlSWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUsIEluc3Bl
Y3RvclN0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQpOwogCi0gICAgYm9vbCBzdHlsZVRleHQo
U3RyaW5nKiByZXN1bHQpIGNvbnN0OworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2UgYWxpYXNl
cyBhbmQgdXBkYXRlIGFsbCB0aGUgY3VycmVudCBjYWxsIHNpdGVzIHRvIHVzZSB0aGUgbmV3IHB1
YmxpYyBtZXRob2RzLgorICAgIGJvb2wgc3R5bGVUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdCB7
IHJldHVybiBnZXRUZXh0KHJlc3VsdCk7IH0KKyAgICBib29sIGFwcGx5U3R5bGVUZXh0KGNvbnN0
IFN0cmluZyYgdGV4dCkgeyBFeGNlcHRpb25Db2RlIGVjID0gMDsgcmV0dXJuIHNldFRleHQodGV4
dCwgZWMpOyB9CisKICAgICBib29sIHBvcHVsYXRlQWxsUHJvcGVydGllcyhWZWN0b3I8SW5zcGVj
dG9yU3R5bGVQcm9wZXJ0eT4qIHJlc3VsdCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZT4gc3R5bGVXaXRoUHJvcGVydGllcygpIGNvbnN0OwogICAgIFBh
c3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IGV4dHJhY3RTb3VyY2VEYXRhKCkgY29uc3Q7Ci0g
ICAgYm9vbCBhcHBseVN0eWxlVGV4dChjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgc2hvcnRo
YW5kVmFsdWUoY29uc3QgU3RyaW5nJiBzaG9ydGhhbmRQcm9wZXJ0eSkgY29uc3Q7CiAgICAgU3Ry
aW5nIHNob3J0aGFuZFByaW9yaXR5KGNvbnN0IFN0cmluZyYgc2hvcnRoYW5kUHJvcGVydHkpIGNv
bnN0OwogICAgIFZlY3RvcjxTdHJpbmc+IGxvbmdoYW5kUHJvcGVydGllcyhjb25zdCBTdHJpbmcm
IHNob3J0aGFuZFByb3BlcnR5KSBjb25zdDsKQEAgLTE5Niw2ICsyMDEsNyBAQCBwdWJsaWM6CiAg
ICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiBidWls
ZE9iamVjdEZvclN0eWxlU2hlZXRJbmZvKCk7CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKik7CiAgICAgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JTdHlsZShD
U1NTdHlsZURlY2xhcmF0aW9uKik7CisgICAgYm9vbCBzZXRTdHlsZVRleHQoY29uc3QgSW5zcGVj
dG9yQ1NTSWQmLCBjb25zdCBTdHJpbmcmIHRleHQsIFN0cmluZyogb2xkVGV4dCwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIGJvb2wgc2V0UHJvcGVydHlUZXh0KGNvbnN0IEluc3BlY3RvckNTU0lkJiwg
dW5zaWduZWQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0
ZSwgU3RyaW5nKiBvbGRQcm9wZXJ0eVRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIHRv
Z2dsZVByb3BlcnR5KGNvbnN0IEluc3BlY3RvckNTU0lkJiwgdW5zaWduZWQgcHJvcGVydHlJbmRl
eCwgYm9vbCBkaXNhYmxlLCBFeGNlcHRpb25Db2RlJik7CiAKQEAgLTIyMCw3ICsyMjYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGZvcmdldEluc3BlY3RvclN0eWxlKENTU1N0eWxl
RGVjbGFyYXRpb24qIHN0eWxlKTsKIAogICAgIC8vIEFsc28gYWNjZXNzZWQgYnkgZnJpZW5kIGNs
YXNzIEluc3BlY3RvclN0eWxlLgotICAgIHZpcnR1YWwgYm9vbCBzZXRTdHlsZVRleHQoQ1NTU3R5
bGVEZWNsYXJhdGlvbiosIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBzZXRTdHls
ZVRleHQoQ1NTU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8VmVjdG9yPHNpemVfdD4gPiBsaW5lRW5kaW5ncygp
IGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMjcyLDcgKzI3OCw3IEBAIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIHZvaWQgZm9yZ2V0SW5zcGVjdG9yU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiopIHsg
fQogCiAgICAgLy8gQWxzbyBhY2Nlc3NlZCBieSBmcmllbmQgY2xhc3MgSW5zcGVjdG9yU3R5bGUu
Ci0gICAgdmlydHVhbCBib29sIHNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9uKiwgY29u
c3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIHNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xh
cmF0aW9uKiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgUGFz
c093blB0cjxWZWN0b3I8c2l6ZV90PiA+IGxpbmVFbmRpbmdzKCkgY29uc3Q7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggODc4Y2RlNGY3ODIxMDk2ZjQ3NTQzZjM2YjI2NTY5ZDU0OWY3ZjFlYS4uZTU1NGMw
OGYzNmVhNmFmMTUyMWZhNzUyYzM4NGUzMWIzNTg3M2IzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDEzLTA0LTE4ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgQ1NTLnNldFN0eWxlVGV4dCB0byB0aGUgV2ViIEluc3BlY3RvciBwcm90b2NvbC4K
KworICAgICAgICBUaGlzIHByb3ZpZGVzIGEgZGlyZWN0IHBhdGggZm9yIHRoZSBTYWZhcmkgV2Vi
IEluc3BlY3RvciB0byBsaXZlIGVkaXQgd2hvbGUgc3R5bGUgcnVsZXMuCisKKyAgICAgICAgaHR0
cHM6Ly93ZWJraXQub3JnL2IvMTA5MzQwCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzEzMzM3MjEx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLWV4cGVjdGVkLnR4dDogVXBkYXRlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWw6IFRlc3QgQ1NTQWdlbnQu
c2V0U3R5bGVUZXh0LgorCiAyMDEzLTA0LTE2ICBQYW4gRGVuZyAgPHBhbi5kZW5nQGludGVsLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbTmV0d29ya10gQ292ZXIgdGhlIHR5cGUgb2Yg
cHJlZmxpZ2h0IHhoci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
c3R5bGVzLW5ldy1BUEktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy9zdHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQKaW5kZXggYzQ5ODllZDM0YTk0ZTYxNzVjNDNj
MThiYzI2NGNlZGMwMDUxNjhlOS4uZmQ3OTRhNDg5MzZiZjIzNGM0ZTVjN2RjM2I2MWY4NDc2NGFj
NGFhYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3
LUFQSS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHls
ZXMtbmV3LUFQSS1leHBlY3RlZC50eHQKQEAgLTM1Myw3ICszNTMsNyBAQCBib2R5OiBbcmVndWxh
ciwgMDo4OS0wOjkzXSB7CiAgICAgWyd0ZXh0LWFsaWduJzonanVzdGlmeSddIEBbMDo5OS0wOjEx
OV0gYWN0aXZlCiB9CiAKLT09PSBBZnRlciBzdHlsZSB0ZXh0IHNldCA9PT0KKz09PSBBZnRlciBw
cm9wZXJ0eSB0ZXh0IHNldCA9PT0KIAogU3R5bGVTaGVldDogJ2h0bWwgKiwgYm9keVtmb289ImJh
ciJdIHsKICAgICBjb2xvcjogd2hpdGU7IGJhY2tncm91bmQ6IGJsYWNrOwpAQCAtMzc2LDYgKzM3
NiwzOCBAQCBib2R5OiBbcmVndWxhciwgMjoxLTI6NV0gewogICAgIFsndGV4dC1hbGlnbic6J2p1
c3RpZnknXSBAWzI6MTEtMjozMV0gYWN0aXZlCiB9CiAKKz09PSBBZnRlciBmaXJzdCBzdHlsZSB0
ZXh0IHNldCA9PT0KKworU3R5bGVTaGVldDogJ2h0bWwgKiwgYm9keVtmb289ImJhciJdIHt9Ym9k
eSB7ICAgIHRleHQtYWxpZ246IGp1c3RpZnk7fScKK2h0bWwgKiwgYm9keVtmb289ImJhciJdOiBb
cmVndWxhciwgMDowLTA6MjNdIHsKK30KK2JvZHk6IFtyZWd1bGFyLCAwOjI2LTA6MzBdIHsKKyAg
ICBbJ3RleHQtYWxpZ24nOidqdXN0aWZ5J10gQFswOjM2LTA6NTZdIGFjdGl2ZQorfQorCis9PT0g
QWZ0ZXIgc2Vjb25kIHN0eWxlIHRleHQgc2V0ID09PQorCitTdHlsZVNoZWV0OiAnaHRtbCAqLCBi
b2R5W2Zvbz0iYmFyIl0ge2NvbG9yOiBncmVlbjsgYmFja2dyb3VuZDogcmVkOyBmb286IGJhcjsg
KmJhejogYmFyOyAvKiBDb21tZW50ICovIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnR9Ym9k
eSB7ICAgIHRleHQtYWxpZ246IGp1c3RpZnk7fScKK2h0bWwgKiwgYm9keVtmb289ImJhciJdOiBb
cmVndWxhciwgMDowLTA6MjNdIHsKKyAgICBbJ2NvbG9yJzonZ3JlZW4nXSBAWzA6MjUtMDozOF0g
YWN0aXZlCisgICAgWydiYWNrZ3JvdW5kJzoncmVkJ10gQFswOjM5LTA6NTVdIGFjdGl2ZQorICAg
IFsnZm9vJzonYmFyJyBub24tcGFyc2VkXSBAWzA6NTYtMDo2NV0gYWN0aXZlCisgICAgWydmb250
LXdlaWdodCc6J2JvbGQgIWltcG9ydGFudCcgaXMtaW1wb3J0YW50XSBAWzA6OTEtMDoxMTldIGFj
dGl2ZQorICAgIFsnYmFja2dyb3VuZC1pbWFnZSc6J2luaXRpYWwnXSBAW3VuZGVmaW5lZC11bmRl
ZmluZWRdIHN0eWxlCisgICAgWydiYWNrZ3JvdW5kLXJlcGVhdC14JzonaW5pdGlhbCddIEBbdW5k
ZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKKyAgICBbJ2JhY2tncm91bmQtcmVwZWF0LXknOidpbml0
aWFsJ10gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorICAgIFsnYmFja2dyb3VuZC1hdHRh
Y2htZW50JzonaW5pdGlhbCddIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKKyAgICBbJ2Jh
Y2tncm91bmQtcG9zaXRpb24teCc6J2luaXRpYWwnXSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0
eWxlCisgICAgWydiYWNrZ3JvdW5kLXBvc2l0aW9uLXknOidpbml0aWFsJ10gQFt1bmRlZmluZWQt
dW5kZWZpbmVkXSBzdHlsZQorICAgIFsnYmFja2dyb3VuZC1vcmlnaW4nOidpbml0aWFsJ10gQFt1
bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorICAgIFsnYmFja2dyb3VuZC1jbGlwJzonaW5pdGlh
bCddIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKKyAgICBbJ2JhY2tncm91bmQtY29sb3In
OidyZWQnXSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxlCisgICAgWydiYWNrZ3JvdW5kLXNp
emUnOidpbml0aWFsJ10gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQorfQorYm9keTogW3Jl
Z3VsYXIsIDA6MTIwLTA6MTI0XSB7CisgICAgWyd0ZXh0LWFsaWduJzonanVzdGlmeSddIEBbMDox
MzAtMDoxNTBdIGFjdGl2ZQorfQorCiA9PT0gTWF0Y2hlZCBydWxlcyBhZnRlciBydWxlIGFkZGVk
ID09PQogYm9keTogW3VzZXItYWdlbnRdIHsKICAgICBbJ2Rpc3BsYXknOidibG9jayddIEBbdW5k
ZWZpbmVkLXVuZGVmaW5lZF0gc3R5bGUKQEAgLTQwMiw4ICs0MzQsMTAgQEAgYm9keTogW3JlZ3Vs
YXIsIDk6MC05OjRdIHsKICAgICBbJ2NvbG9yJzonImJhZGNvbG9yIiAhIGltcG9ydGFudCAvKiBn
b29kIHByb3BlcnR5IHdpdGggc3RyYW5nZSB2YWx1ZSAqLycgaXMtaW1wb3J0YW50IG5vbi1wYXJz
ZWRdIEBbMTg6NC0xODo3M10gYWN0aXZlCiB9CiBodG1sICosIGJvZHlbZm9vPSJiYXIiXTogW3Jl
Z3VsYXIsIDA6MC0wOjIzXSB7Ci0gICAgWydjb2xvcic6J3doaXRlJ10gQFsxOjQtMToxN10gYWN0
aXZlCi0gICAgWydiYWNrZ3JvdW5kJzonYmxhY2snXSBAWzE6MTgtMTozNl0gYWN0aXZlCisgICAg
Wydjb2xvcic6J2dyZWVuJ10gQFswOjI1LTA6MzhdIGFjdGl2ZQorICAgIFsnYmFja2dyb3VuZCc6
J3JlZCddIEBbMDozOS0wOjU1XSBhY3RpdmUKKyAgICBbJ2Zvbyc6J2Jhcicgbm9uLXBhcnNlZF0g
QFswOjU2LTA6NjVdIGFjdGl2ZQorICAgIFsnZm9udC13ZWlnaHQnOidib2xkICFpbXBvcnRhbnQn
IGlzLWltcG9ydGFudF0gQFswOjkxLTA6MTE5XSBhY3RpdmUKICAgICBbJ2JhY2tncm91bmQtaW1h
Z2UnOidpbml0aWFsJ10gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQogICAgIFsnYmFja2dy
b3VuZC1yZXBlYXQteCc6J2luaXRpYWwnXSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxlCiAg
ICAgWydiYWNrZ3JvdW5kLXJlcGVhdC15JzonaW5pdGlhbCddIEBbdW5kZWZpbmVkLXVuZGVmaW5l
ZF0gc3R5bGUKQEAgLTQxMiwxMSArNDQ2LDExIEBAIGh0bWwgKiwgYm9keVtmb289ImJhciJdOiBb
cmVndWxhciwgMDowLTA6MjNdIHsKICAgICBbJ2JhY2tncm91bmQtcG9zaXRpb24teSc6J2luaXRp
YWwnXSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxlCiAgICAgWydiYWNrZ3JvdW5kLW9yaWdp
bic6J2luaXRpYWwnXSBAW3VuZGVmaW5lZC11bmRlZmluZWRdIHN0eWxlCiAgICAgWydiYWNrZ3Jv
dW5kLWNsaXAnOidpbml0aWFsJ10gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQotICAgIFsn
YmFja2dyb3VuZC1jb2xvcic6J2JsYWNrJ10gQFt1bmRlZmluZWQtdW5kZWZpbmVkXSBzdHlsZQor
ICAgIFsnYmFja2dyb3VuZC1jb2xvcic6J3JlZCddIEBbdW5kZWZpbmVkLXVuZGVmaW5lZF0gc3R5
bGUKICAgICBbJ2JhY2tncm91bmQtc2l6ZSc6J2luaXRpYWwnXSBAW3VuZGVmaW5lZC11bmRlZmlu
ZWRdIHN0eWxlCiB9Ci1ib2R5OiBbcmVndWxhciwgMjoxLTI6NV0gewotICAgIFsndGV4dC1hbGln
bic6J2p1c3RpZnknXSBAWzI6MTEtMjozMV0gYWN0aXZlCitib2R5OiBbcmVndWxhciwgMDoxMjAt
MDoxMjRdIHsKKyAgICBbJ3RleHQtYWxpZ24nOidqdXN0aWZ5J10gQFswOjEzMC0wOjE1MF0gYWN0
aXZlCiB9CiBib2R5OiBbaW5zcGVjdG9yLCAwOjAtMDo0XSB7CiAgICAgWydmb250LWZhbWlseSc6
J3NlcmlmJ10gQFsxOjQtMToyM10gYWN0aXZlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
c3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWwKaW5kZXggNTY3ZTc4YjU4MTU2MzQzN2MzNzIzYWIx
M2RkMDc1MTZjYWRlMjMyNy4uNjVmNWQyYjkzZjkyOGU0Nzk4MTVlMDJjYjRiNzIyYjc3OTNhNzBk
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQ
SS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEku
aHRtbApAQCAtMTkyLDIzICsxOTIsMjMgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IEFmdGVyIHNlbGVjdG9yIHNldCA9PT0iKTsKLSAg
ICAgICAgICAgIGxvYWRBbmREdW1wU3R5bGVTaGVldChydWxlLnJ1bGVJZC5zdHlsZVNoZWV0SWQs
IHRlc3Rfc2V0U3R5bGVUZXh0KTsKKyAgICAgICAgICAgIGxvYWRBbmREdW1wU3R5bGVTaGVldChy
dWxlLnJ1bGVJZC5zdHlsZVNoZWV0SWQsIHRlc3Rfc2V0UHJvcGVydHlUZXh0KTsKICAgICAgICAg
fQogCiAgICAgICAgIENTU0FnZW50LnNldFJ1bGVTZWxlY3RvcihzdHlsZVNoZWV0LnJ1bGVzWzBd
LnJ1bGVJZCwgImh0bWwgKiwgYm9keVtmb289XCJiYXJcIl0iLCBkaWRTZXRTZWxlY3Rvcik7CiAg
ICAgfQogCi0gICAgZnVuY3Rpb24gdGVzdF9zZXRTdHlsZVRleHQoc3R5bGVTaGVldCkKKyAgICBm
dW5jdGlvbiB0ZXN0X3NldFByb3BlcnR5VGV4dChzdHlsZVNoZWV0KQogICAgIHsKLSAgICAgICAg
ZnVuY3Rpb24gZGlkU2V0U3R5bGVUZXh0KGVycm9yLCBzdHlsZSkKKyAgICAgICAgZnVuY3Rpb24g
ZGlkU2V0UHJvcGVydHlUZXh0KGVycm9yLCBzdHlsZSkKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVy
cm9yOiAiICsgZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQWZ0ZXIgc3R5bGUgdGV4dCBzZXQgPT09Iik7Ci0g
ICAgICAgICAgICBsb2FkQW5kRHVtcFN0eWxlU2hlZXQoc3R5bGUuc3R5bGVJZC5zdHlsZVNoZWV0
SWQsIHRlc3RfYWRkUnVsZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
PT09IEFmdGVyIHByb3BlcnR5IHRleHQgc2V0ID09PSIpOworICAgICAgICAgICAgbG9hZEFuZER1
bXBTdHlsZVNoZWV0KHN0eWxlLnN0eWxlSWQuc3R5bGVTaGVldElkLCB0ZXN0X3NldFN0eWxlVGV4
dDEpOwogICAgICAgICB9CiAKICAgICAgICAgQ1NTQWdlbnQuc2V0UHJvcGVydHlUZXh0KHN0eWxl
U2hlZXQucnVsZXNbMF0uc3R5bGUuc3R5bGVJZCwgMCwgIiIsIHRydWUpOwpAQCAtMjE2LDcgKzIx
NiwzOSBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAvLyBUaGlzIG9wZXJhdGlvbiBzaG91
bGQgbm90IHVwZGF0ZSB0aGUgc3R5bGUgYXMgdGhlIG5ldyBwcm9wZXJ0eSB0ZXh0IGlzIG5vdCBw
YXJzYWJsZS4KICAgICAgICAgQ1NTQWdlbnQuc2V0UHJvcGVydHlUZXh0KHN0eWxlU2hlZXQucnVs
ZXNbMF0uc3R5bGUuc3R5bGVJZCwgMCwgInp6ejsiLCBmYWxzZSk7Ci0gICAgICAgIENTU0FnZW50
LnNldFByb3BlcnR5VGV4dChzdHlsZVNoZWV0LnJ1bGVzWzBdLnN0eWxlLnN0eWxlSWQsIDAsICJj
b2xvcjogd2hpdGU7IGJhY2tncm91bmQ6IGJsYWNrOyIsIGZhbHNlLCBkaWRTZXRTdHlsZVRleHQp
OworICAgICAgICBDU1NBZ2VudC5zZXRQcm9wZXJ0eVRleHQoc3R5bGVTaGVldC5ydWxlc1swXS5z
dHlsZS5zdHlsZUlkLCAwLCAiY29sb3I6IHdoaXRlOyBiYWNrZ3JvdW5kOiBibGFjazsiLCBmYWxz
ZSwgZGlkU2V0UHJvcGVydHlUZXh0KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0X3NldFN0
eWxlVGV4dDEoc3R5bGVTaGVldCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGRpZFNldFN0eWxl
VGV4dDEoZXJyb3IsIHN0eWxlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3I6ICIgKyBlcnJv
cik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIj09PSBBZnRlciBmaXJzdCBzdHlsZSB0ZXh0IHNldCA9PT0iKTsKKyAgICAgICAg
ICAgIGxvYWRBbmREdW1wU3R5bGVTaGVldChzdHlsZS5zdHlsZUlkLnN0eWxlU2hlZXRJZCwgdGVz
dF9zZXRTdHlsZVRleHQyKTsKKyAgICAgICAgfQorCisgICAgICAgIENTU0FnZW50LnNldFN0eWxl
VGV4dChzdHlsZVNoZWV0LnJ1bGVzWzBdLnN0eWxlLnN0eWxlSWQsICIiLCBkaWRTZXRTdHlsZVRl
eHQxKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0X3NldFN0eWxlVGV4dDIoc3R5bGVTaGVl
dCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGRpZFNldFN0eWxlVGV4dDIoZXJyb3IsIHN0eWxl
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3I6ICIgKyBlcnJvcik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBBZnRl
ciBzZWNvbmQgc3R5bGUgdGV4dCBzZXQgPT09Iik7CisgICAgICAgICAgICBsb2FkQW5kRHVtcFN0
eWxlU2hlZXQoc3R5bGUuc3R5bGVJZC5zdHlsZVNoZWV0SWQsIHRlc3RfYWRkUnVsZSk7CisgICAg
ICAgIH0KKworICAgICAgICBDU1NBZ2VudC5zZXRTdHlsZVRleHQoc3R5bGVTaGVldC5ydWxlc1sw
XS5zdHlsZS5zdHlsZUlkLCAiY29sb3I6IGdyZWVuOyBiYWNrZ3JvdW5kOiByZWQ7IGZvbzogYmFy
OyAqYmF6OiBiYXI7IC8qIENvbW1lbnQgKi8gZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudCIs
IGRpZFNldFN0eWxlVGV4dDIpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3RfYWRkUnVsZSgp
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>