<?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>36613</bug_id>
          
          <creation_ts>2010-03-25 11:27:11 -0700</creation_ts>
          <short_desc>Web Inspector: Cover the Audits panel with tests</short_desc>
          <delta_ts>2010-03-29 11:01:01 -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="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>204162</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-03-25 11:27:11 -0700</bug_when>
    <thetext>Currently there are no tests for the Audits panel, which should be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204505</commentid>
    <comment_count>1</comment_count>
      <attachid>51727</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-03-26 04:56:10 -0700</bug_when>
    <thetext>Created attachment 51727
[PATCH] Test for the Audits panel + drive-by rule fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204513</commentid>
    <comment_count>2</comment_count>
      <attachid>51727</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-26 05:30:09 -0700</bug_when>
    <thetext>Comment on attachment 51727
[PATCH] Test for the Audits panel + drive-by rule fix

&gt; +&lt;!-- These scripts are needed to result in a violation of the max JS file count from the same domain --&gt;

You should put artificial scripts into the resources folder for this test instead.
 
&gt; +            frontend_assertEquals(&quot;&apos;&quot; + ruleResult.value + &quot;&apos; violation count&quot;, expectedData[ruleResult.value], ruleResult.violationCount);

You should push information back to the inspected page instead and dump it onto the screen. That way expectations would reflect what is happening in the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204556</commentid>
    <comment_count>3</comment_count>
      <attachid>51739</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-03-26 07:15:40 -0700</bug_when>
    <thetext>Created attachment 51739
[PATCH] Comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204638</commentid>
    <comment_count>4</comment_count>
      <attachid>51754</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-03-26 09:50:39 -0700</bug_when>
    <thetext>Created attachment 51754
[PATCH] Full results tree dump in the test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205159</commentid>
    <comment_count>5</comment_count>
      <attachid>51754</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-28 05:15:39 -0700</bug_when>
    <thetext>Comment on attachment 51754
[PATCH] Full results tree dump in the test

Couple of nits you should fix prior to landing:
- WebInspector.displayNameForURL is now test-friendly, no need to work around it
- You should try adding line breaks into the results dump as I do it for styles and elements tree for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205449</commentid>
    <comment_count>6</comment_count>
      <attachid>51912</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-03-29 08:22:19 -0700</bug_when>
    <thetext>Created attachment 51912
[PATCH] Comments addressed, some changes for environment-independent testing

Apologies for another round, I spotted another host-dependent test result (resource coalescing audit which involved printing resource.domain), so had to add an interim method to change one in test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205541</commentid>
    <comment_count>7</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-03-29 11:01:01 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
        M       LayoutTests/ChangeLog
        M       WebCore/ChangeLog
        M       WebCore/English.lproj/localizedStrings.js
        M       WebCore/inspector/front-end/AuditResultView.js
        M       WebCore/inspector/front-end/AuditRules.js
        M       WebCore/inspector/front-end/AuditsPanel.js
        M       WebCore/inspector/front-end/inspector.js
Committed r56732</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51727</attachid>
            <date>2010-03-26 04:56:10 -0700</date>
            <delta_ts>2010-03-26 07:15:40 -0700</delta_ts>
            <desc>[PATCH] Test for the Audits panel + drive-by rule fix</desc>
            <filename>audittests.patch</filename>
            <type>text/plain</type>
            <size>9116</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMmFjZTA3Li4yNzk0NjkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDMt
MjYgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb3Zl
ciB0aGUgQXVkaXRzIHBhbmVsIHdpdGggdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjEzCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYXVkaXRz
LXBhbmVsLWZ1bmN0aW9uYWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvYXVkaXRzLXBhbmVsLWZ1bmN0aW9uYWwuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL2F1ZGl0cy10ZXN0cy5qczogQWRkZWQuCisgICAgICAgIChmcm9udGVuZF9hc3NlcnRFcXVh
bHMpOgorICAgICAgICAoZnJvbnRlbmRfYXNzZXJ0TnVsbCk6CisgICAgICAgIChmcm9udGVuZF9h
c3NlcnRUcnVlKToKKyAgICAgICAgKGZyb250ZW5kX2Fzc2VydEZhbHNlKToKKyAgICAgICAgKGZy
b250ZW5kX2Fzc2VydE5vdE51bGwpOgorICAgICAgICAoZnJvbnRlbmRfZmFpbCk6CisKIDIwMTAt
MDMtMjUgIERpZWdvIEdvbnphbGV6ICA8ZGllZ28uZ29uemFsZXpAb3BlbmJvc3NhLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9hdWRpdHMtcGFuZWwtZnVuY3Rpb25hbC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvYXVkaXRzLXBhbmVsLWZ1bmN0aW9uYWwtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZDFhMTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXRzLXBhbmVsLWZ1bmN0aW9uYWwtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdHMgYXVkaXQgcnVsZXMuICAgIAorUEFTU0VECisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdHMtcGFuZWwtZnVuY3Rpb25hbC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0cy1wYW5lbC1mdW5jdGlvbmFsLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y0Zjc3YwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdHMtcGFuZWwtZnVuY3Rpb25hbC5odG1s
CkBAIC0wLDAgKzEsMTM0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhU
TUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9v
c2UuZHRkIj4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisudW51c2VkIHsKKyAgICBjb2xvcjog
Z3JlZW47Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJhdWRpdHMtdGVzdHMu
anMiPjwvc2NyaXB0PgorCis8IS0tIFRoZXNlIHNjcmlwdHMgYXJlIG5lZWRlZCB0byByZXN1bHQg
aW4gYSB2aW9sYXRpb24gb2YgdGhlIG1heCBKUyBmaWxlIGNvdW50IGZyb20gdGhlIHNhbWUgZG9t
YWluIC0tPgorPHNjcmlwdCBzcmM9ImNvbnNvbGUtdGVzdHMuanMiPjwvc2NyaXB0PgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSItZG9lcy1ub3QtZXhpc3QtLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iZWxlbWVudHMtdGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gZG9p
dCgpCit7CisgICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQorICAgIHsKKyAgICAgICAgdmFy
IG91dHB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXRQcmUiKTsKKyAgICAgICAg
b3V0cHV0LnRleHRDb250ZW50ID0gcmVzdWx0LnJlcGxhY2UoL1x1MjAwYi9nLCAiIikucmVwbGFj
ZSgvXG4vZywgIiIpLnJlcGxhY2UoLzwvZywgIlxuPCIpOworICAgICAgICBub3RpZnlEb25lKCk7
CisgICAgfQorICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3J1bkF1ZGl0cyIs
IGNhbGxiYWNrKTsKK30KKworCisvLyBGcm9udGVuZCBmdW5jdGlvbnMuCisKK2Z1bmN0aW9uIGZy
b250ZW5kX3J1bkF1ZGl0cyh0ZXN0Q29udHJvbGxlcikKK3sKKyAgICBpZiAoIVdlYkluc3BlY3Rv
ci5wYW5lbHMucmVzb3VyY2VzLnJlc291cmNlVHJhY2tpbmdFbmFibGVkKSB7CisgICAgICAgIElu
c3BlY3RvckJhY2tlbmQuZW5hYmxlUmVzb3VyY2VUcmFja2luZyhmYWxzZSk7CisgICAgICAgIHRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoIiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGNvbnN0IGNhdGVnb3J5VGVz
dERhdGEgPSB7CisgICAgICAgICJOZXR3b3JrIFV0aWxpemF0aW9uIjogeworICAgICAgICAgICAg
IlNwZWNpZnkgaW1hZ2UgZGltZW5zaW9ucyI6IDIsCisgICAgICAgICAgICAiQ29tYmluZSBleHRl
cm5hbCBKYXZhU2NyaXB0IjogNAorICAgICAgICB9LAorICAgICAgICAiV2ViIFBhZ2UgUGVyZm9y
bWFuY2UiOiB7CisgICAgICAgICAgICAiUmVtb3ZlIHVudXNlZCBDU1MgcnVsZXMiOiAyLAorICAg
ICAgICAgICAgIlB1dCBDU1MgaW4gdGhlIGRvY3VtZW50IGhlYWQiOiAxLAorICAgICAgICAgICAg
Ik9wdGltaXplIHRoZSBvcmRlciBvZiBzdHlsZXMgYW5kIHNjcmlwdHMiOiAyCisgICAgICAgIH0K
KyAgICB9OworCisgICAgdHJ5IHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMu
X2xhdW5jaGVyVmlldy5fc2VsZWN0QWxsQ2xpY2tlZCh0cnVlKTsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLnBhbmVscy5hdWRpdHMuX2xhdW5jaGVyVmlldy5fYXVkaXRQcmVzZW50U3RhdGVFbGVtZW50
LmNoZWNrZWQgPSB0cnVlOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5fbGF1
bmNoZXJWaWV3Ll9sYXVuY2hCdXR0b25DbGlja2VkKCk7CisKKyAgICAgICAgdGVzdENvbnRyb2xs
ZXIucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8v
IEF1ZGl0cyBhcmUgZG9uZSwgY2hlY2sgcmVzdWx0cy4KKyAgICAgICAgICAgIHZhciBjYXRlZ29y
eVJlc3VsdHMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5hdWRpdFJlc3VsdHNUcmVlRWxl
bWVudC5jaGlsZHJlblswXS5yZXN1bHRzOworICAgICAgICAgICAgdmFyIHRlc3RDb250ZXh0ID0g
e21lc3NhZ2U6IG51bGx9OworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGNhdGVnb3J5UmVzdWx0cy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgY2F0ZWdvcnlSZXN1bHQgPSBjYXRlZ29yeVJlc3VsdHNbaV07CisgICAg
ICAgICAgICAgICAgICAgIHZhciBleHBlY3RlZERhdGEgPSBjYXRlZ29yeVRlc3REYXRhW2NhdGVn
b3J5UmVzdWx0LnRpdGxlXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFleHBlY3RlZERhdGEp
CisgICAgICAgICAgICAgICAgICAgICAgICBmcm9udGVuZF9mYWlsKCJVbmtub3duIGNhdGVnb3J5
IGluIGF1ZGl0IHJlc3VsdHM6ICIgKyBjYXRlZ29yeVJlc3VsdC50aXRsZSk7CisgICAgICAgICAg
ICAgICAgICAgIGZyb250ZW5kX3Rlc3RBdWRpdENhdGVnb3J5KGNhdGVnb3J5UmVzdWx0LCBleHBl
Y3RlZERhdGEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKGUudG9TdHJpbmcoKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgiUEFTU0VEIik7CisgICAgICAgIH0pOworICAgIH0gY2F0
Y2goZSkgeworICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJFeGNlcHRpb246ICIg
KyBlLnRvU3RyaW5nKCkpOworICAgIH0KK30KKworZnVuY3Rpb24gZnJvbnRlbmRfdGVzdEF1ZGl0
Q2F0ZWdvcnkoY2F0ZWdvcnlSZXN1bHQsIGV4cGVjdGVkRGF0YSkKK3sKKyAgICBjb25zdCBydWxl
UmVzdWx0cyA9IGNhdGVnb3J5UmVzdWx0LnJ1bGVSZXN1bHRzOworCisgICAgY29uc3QgdW5oYW5k
bGVkUnVsZVJlc3VsdHMgPSB7fTsKKyAgICBjb25zdCB1bmhhbmRsZWRFeHBlY3RlZFJlc3VsdHMg
PSB7fTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVSZXN1bHRzLmxlbmd0aDsgKytpKQor
ICAgICAgICB1bmhhbmRsZWRSdWxlUmVzdWx0c1tydWxlUmVzdWx0c1tpXS52YWx1ZV0gPSAxOwor
CisgICAgdmFyIG1hdGNoZXNMZWZ0SW5FeHBlY3RlZCA9IDA7CisgICAgZm9yICh2YXIgaWQgaW4g
ZXhwZWN0ZWREYXRhKSB7CisgICAgICAgIHVuaGFuZGxlZEV4cGVjdGVkUmVzdWx0c1tpZF0gPSAx
OworICAgICAgICArK21hdGNoZXNMZWZ0SW5FeHBlY3RlZDsKKyAgICB9CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHJ1bGVSZXN1bHRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBydWxl
UmVzdWx0ID0gcnVsZVJlc3VsdHNbaV07CisgICAgICAgIHZhciB2YWx1ZSA9IHJ1bGVSZXN1bHQu
dmFsdWU7CisgICAgICAgIGlmICghdW5oYW5kbGVkUnVsZVJlc3VsdHNbdmFsdWVdKQorICAgICAg
ICAgICAgZnJvbnRlbmRfZmFpbCgiRHVwbGljYXRlIHJ1bGUgcmVzdWx0OiAiICsgdmFsdWUpOwor
ICAgICAgICBpZiAocnVsZVJlc3VsdC52YWx1ZSBpbiB1bmhhbmRsZWRFeHBlY3RlZFJlc3VsdHMp
IHsKKyAgICAgICAgICAgIGZyb250ZW5kX2Fzc2VydEVxdWFscygiJyIgKyBydWxlUmVzdWx0LnZh
bHVlICsgIicgdmlvbGF0aW9uIGNvdW50IiwgZXhwZWN0ZWREYXRhW3J1bGVSZXN1bHQudmFsdWVd
LCBydWxlUmVzdWx0LnZpb2xhdGlvbkNvdW50KTsKKyAgICAgICAgICAgIGRlbGV0ZSB1bmhhbmRs
ZWRSdWxlUmVzdWx0c1tydWxlUmVzdWx0LnZhbHVlXTsKKyAgICAgICAgICAgIGRlbGV0ZSB1bmhh
bmRsZWRFeHBlY3RlZFJlc3VsdHNbcnVsZVJlc3VsdC52YWx1ZV07CisgICAgICAgICAgICAtLW1h
dGNoZXNMZWZ0SW5FeHBlY3RlZDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBmcm9udGVu
ZF9mYWlsKCJVbmV4cGVjdGVkIGF1ZGl0IGZhaWx1cmUgZm9yIGNhdGVnb3J5ICciICsgY2F0ZWdv
cnlSZXN1bHQudGl0bGUgKyAiJzogIiArIHJ1bGVSZXN1bHQudmFsdWUpOworICAgIH0KKyAgICBp
ZiAobWF0Y2hlc0xlZnRJbkV4cGVjdGVkKSB7CisgICAgICAgIHZhciBydWxlc05vdEZpcmVkID0g
W107CisgICAgICAgIGZvciAodmFyIHJ1bGVOYW1lIGluIHVuaGFuZGxlZEV4cGVjdGVkUmVzdWx0
cykKKyAgICAgICAgICAgIHJ1bGVzTm90RmlyZWQucHVzaChydWxlTmFtZSk7CisgICAgICAgIGZy
b250ZW5kX2ZhaWwoIkV4cGVjdGVkIGZhaWx1cmVzIGRpZCBub3Qgb2NjdXIgZm9yIGNhdGVnb3J5
ICciICsgY2F0ZWdvcnlSZXN1bHQudGl0bGUgKyAiJzogIiArIHJ1bGVzTm90RmlyZWQuam9pbigi
LCIpKTsKKyAgICB9Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9Im9u
bG9hZCgpIj4KK1Rlc3RzIGF1ZGl0IHJ1bGVzLgorCis8c3R5bGU+CisudmlvbGF0aW9uIHsgY29s
b3I6IHJlZDsgfQorPC9zdHlsZT4KKzxpbWcgc3JjPSJmb28xLmpwZyI+Cis8aW1nIHNyYz0iZm9v
Mi5qcGciIHdpZHRoPTEwMD4KKzxpbWcgc3JjPSJmb28zLmpwZyIgc3R5bGU9InBvc2l0aW9uOiBh
YnNvbHV0ZSI+CisKKzxwcmUgaWQ9Im91dHB1dFByZSI+Cis8L3ByZT4KKworPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0cy10ZXN0cy5qcyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdHMtdGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZGY2ZGU2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9hdWRpdHMtdGVzdHMuanMKQEAgLTAsMCArMSwzNyBAQAorLy8gRnJvbnRlbmQg
ZnVuY3Rpb25zLgorCitmdW5jdGlvbiBmcm9udGVuZF9hc3NlcnRFcXVhbHMoaWQsIGV4cGVjdGVk
LCBhY3R1YWwpIHsKKyAgIHZhciBteUFjdHVhbDsKKyAgIGlmIChleHBlY3RlZCAhPSBhY3R1YWwp
IHsKKyAgICAgICBteUFjdHVhbCA9IGFjdHVhbDsKKyAgICAgICBpZiAoYWN0dWFsID09IG51bGwp
CisgICAgICAgICAgbXlBY3R1YWwgPSAibnVsbCI7CisgICAgICAgdGhyb3cgImZhaWx1cmU6IiAr
IGlkICsgIjogYXNzZXJ0RXF1YWxzIGZhaWxlZCwgYWN0dWFsICIgKyBteUFjdHVhbCArICIsIGV4
cGVjdGVkICIgKyBleHBlY3RlZCArICIuIjsgCisgICB9Cit9CisKK2Z1bmN0aW9uIGZyb250ZW5k
X2Fzc2VydE51bGwoaWQsIGFjdHVhbCkgeworICAgaWYgKGFjdHVhbCAhPSBudWxsKQorICAgICAg
IHRocm93ICJmYWlsdXJlOiIgKyBpZCArICI6IGFzc2VydE51bGwgZmFpbGVkLCBhY3R1YWwgIiAr
IGFjdHVhbDsKK30KKworCitmdW5jdGlvbiBmcm9udGVuZF9hc3NlcnRUcnVlKGlkLCBhY3R1YWwp
IHsKKyAgIGlmICghYWN0dWFsKQorICAgICAgIHRocm93ICJmYWlsdXJlOiIgKyBpZCArICI6IGFz
c2VydFRydWUgZmFpbGVkIjsKK30KKworCitmdW5jdGlvbiBmcm9udGVuZF9hc3NlcnRGYWxzZShp
ZCwgYWN0dWFsKSB7CisgICBpZiAoYWN0dWFsKQorICAgICAgIHRocm93ICJmYWlsdXJlOiIgKyBp
ZCArICAiOiBhc3NlcnRUcnVlIGZhaWxlZCI7Cit9CisKK2Z1bmN0aW9uIGZyb250ZW5kX2Fzc2Vy
dE5vdE51bGwoaWQsIGFjdHVhbCkgeworICAgaWYgKGFjdHVhbCA9PSBudWxsKQorICAgICAgIHRo
cm93ICJmYWlsdXJlOiIgKyBpZCArICI6IGFzc2VydE5vdE51bGwgZmFpbGVkIjsKK30KKworZnVu
Y3Rpb24gZnJvbnRlbmRfZmFpbChpZCkgeworICAgIHRocm93ICJmYWlsdXJlOiIgKyBpZCArICAi
OiBmYWlsIjsKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggOWRkNDZlMy4uN2IxYjA3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wMy0yNiAg
QWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvdmVyIHRo
ZSBBdWRpdHMgcGFuZWwgd2l0aCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzY2MTMKKworICAgICAgICBEcml2ZS1ieSBDc3NJbkhlYWRSdWxl
IGZpeAorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9hdWRpdHMtcGFuZWwtZnVuY3Rpb25hbC5o
dG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Dc3NJbkhlYWRSdWxlLnByb3RvdHlwZS5kb1J1
bik6CisKIDIwMTAtMDMtMjUgIEFudHRpIEtvaXZpc3RvICA8a29pdmlzdG9AaWtpLmZpPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcwppbmRleCBjNjFmMmMxLi4xYTcwNTUxIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcworKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcwpAQCAtNzI4LDExICs3
MjgsMTMgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ3NzSW5IZWFkUnVsZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB2YXIgb3V0cHV0TWVzc2FnZXMgPSBbXTsKICAgICAgICAgICAgIGZv
ciAodmFyIHVybCBpbiBldmFsUmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgdmFyIHVybFZpb2xh
dGlvbnMgPSBldmFsUmVzdWx0W3VybF07Ci0gICAgICAgICAgICAgICAgaWYgKHVybFZpb2xhdGlv
bnNbMF0pCisgICAgICAgICAgICAgICAgaWYgKHVybFZpb2xhdGlvbnNbMF0pIHsKICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LmFkZENoaWxkKFN0cmluZy5zcHJpbnRmKCIlcyBzdHlsZSBibG9j
ayhzKSBpbiB0aGUgJXMgYm9keSBzaG91bGQgYmUgbW92ZWQgdG8gdGhlIGRvY3VtZW50IGhlYWQu
IiwgdXJsVmlvbGF0aW9uc1swXSwgV2ViSW5zcGVjdG9yLmxpbmtpZnlVUkwodXJsKSkpOworICAg
ICAgICAgICAgICAgICAgICByZXN1bHQudmlvbGF0aW9uQ291bnQgKz0gdXJsVmlvbGF0aW9uc1sw
XTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB1cmxWaW9sYXRpb25zWzFdLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgICAgICAgICByZXN1
bHQuYWRkQ2hpbGQoU3RyaW5nLnNwcmludGYoIkxpbmsgbm9kZSAlcyBzaG91bGQgYmUgbW92ZWQg
dG8gdGhlIGRvY3VtZW50IGhlYWQgaW4gJXMiLCBXZWJJbnNwZWN0b3IubGlua2lmeVVSTCh1cmxW
aW9sYXRpb25zWzFdKSksIFdlYkluc3BlY3Rvci5saW5raWZ5VVJMKHVybCkpOwotICAgICAgICAg
ICAgICAgIHJlc3VsdC52aW9sYXRpb25Db3VudCArPSB1cmxWaW9sYXRpb25zLmxlbmd0aDsKKyAg
ICAgICAgICAgICAgICByZXN1bHQudmlvbGF0aW9uQ291bnQgKz0gdXJsVmlvbGF0aW9uc1sxXS5s
ZW5ndGg7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzdW1tYXJ5LnZhbHVlID0gU3RyaW5n
LnNwcmludGYoIkNTUyBpbiB0aGUgZG9jdW1lbnQgYm9keSBhZHZlcnNlbHkgaW1wYWN0cyByZW5k
ZXJpbmcgcGVyZm9ybWFuY2UuIik7CiAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwo=
</data>
<flag name="review"
          id="35055"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51739</attachid>
            <date>2010-03-26 07:15:40 -0700</date>
            <delta_ts>2010-03-26 09:50:39 -0700</delta_ts>
            <desc>[PATCH] Comments addressed</desc>
            <filename>audittests.patch</filename>
            <type>text/plain</type>
            <size>9414</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMmFjZTA3Li5iMDc0ZjhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDMt
MjYgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb3Zl
ciB0aGUgQXVkaXRzIHBhbmVsIHdpdGggdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjEzCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYXVkaXRz
LXBhbmVsLWZ1bmN0aW9uYWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvYXVkaXRzLXBhbmVsLWZ1bmN0aW9uYWwuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL3Jlc291cmNlcy9hdWRpdHMtc2NyaXB0MS5qczogQWRkZWQuCisgICAgICAgIChmb28xKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQyLmpzOiBBZGRlZC4K
KyAgICAgICAgKGZvbzIpOgorICAgICAgICAqIGluc3BlY3Rvci9yZXNvdXJjZXMvYXVkaXRzLXNj
cmlwdDMuanM6IEFkZGVkLgorICAgICAgICAoZm9vMik6CisKIDIwMTAtMDMtMjUgIERpZWdvIEdv
bnphbGV6ICA8ZGllZ28uZ29uemFsZXpAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRp
dHMtcGFuZWwtZnVuY3Rpb25hbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
YXVkaXRzLXBhbmVsLWZ1bmN0aW9uYWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmRlZWFlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvYXVkaXRzLXBhbmVsLWZ1bmN0aW9uYWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
OSBAQAorVGVzdHMgYXVkaXQgcnVsZXMuICAgIAorQ2F0ZWdvcnk6IE5ldHdvcmsgVXRpbGl6YXRp
b24KK0NvbWJpbmUgZXh0ZXJuYWwgSmF2YVNjcmlwdDogNAorU3BlY2lmeSBpbWFnZSBkaW1lbnNp
b25zOiAyCitDYXRlZ29yeTogV2ViIFBhZ2UgUGVyZm9ybWFuY2UKK09wdGltaXplIHRoZSBvcmRl
ciBvZiBzdHlsZXMgYW5kIHNjcmlwdHM6IDIKK1B1dCBDU1MgaW4gdGhlIGRvY3VtZW50IGhlYWQ6
IDEKK1JlbW92ZSB1bnVzZWQgQ1NTIHJ1bGVzOiAyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9hdWRpdHMtcGFuZWwtZnVuY3Rpb25hbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2F1ZGl0cy1wYW5lbC1mdW5jdGlvbmFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZTQ3YjJmZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9hdWRpdHMtcGFuZWwtZnVuY3Rpb25hbC5odG1sCkBAIC0wLDAgKzEsOTUgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8v
RU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorPGh0bWw+Cis8aGVh
ZD4KKzxzdHlsZT4KKy51bnVzZWQgeworICAgIGNvbG9yOiBncmVlbjsKK30KKzwvc3R5bGU+Cis8
c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorCis8IS0tIFRoZXNlIHNjcmlwdHMgYXJlIG5lZWRlZCB0byByZXN1bHQgaW4gYSB2
aW9sYXRpb24gb2YgdGhlIG1heCBKUyByZXNvdXJjZSBjb3VudCBmcm9tIHRoZSBzYW1lIGRvbWFp
biAtLT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYXVkaXRzLXNjcmlwdDEuanMiPjwvc2NyaXB0
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSItZG9lcy1ub3QtZXhpc3QtLmNzcyI+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQyLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvYXVkaXRzLXNjcmlwdDMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
KworZnVuY3Rpb24gZG9pdCgpCit7CisgICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQorICAg
IHsKKyAgICAgICAgdmFyIG91dHB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXRQ
cmUiKTsKKyAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gcmVzdWx0LmpvaW4oIlxuIik7Cisg
ICAgICAgIG5vdGlmeURvbmUoKTsKKyAgICB9CisgICAgZXZhbHVhdGVJbldlYkluc3BlY3Rvcigi
ZnJvbnRlbmRfcnVuQXVkaXRzIiwgY2FsbGJhY2spOworfQorCisKKy8vIEZyb250ZW5kIGZ1bmN0
aW9ucy4KKworZnVuY3Rpb24gZnJvbnRlbmRfcnVuQXVkaXRzKHRlc3RDb250cm9sbGVyKQorewor
ICAgIGlmICghV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMucmVzb3VyY2VUcmFja2luZ0Vu
YWJsZWQpIHsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5lbmFibGVSZXNvdXJjZVRyYWNraW5n
KGZhbHNlKTsKKyAgICAgICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZShbXSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBvdXRwdXQgPSBbXTsKKworICAgIHRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0cnkgeworICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLmF1ZGl0cy5fbGF1bmNoZXJWaWV3Ll9zZWxlY3RBbGxDbGlja2VkKHRydWUpOworICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5fbGF1bmNoZXJWaWV3Ll9hdWRpdFByZXNl
bnRTdGF0ZUVsZW1lbnQuY2hlY2tlZCA9IHRydWU7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5l
bHMuYXVkaXRzLl9sYXVuY2hlclZpZXcuX2xhdW5jaEJ1dHRvbkNsaWNrZWQoKTsKKworICAgICAg
ICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgLy8gQXVkaXRzIGFyZSBkb25lLCBjaGVjayByZXN1bHRzLgorICAgICAgICAg
ICAgdmFyIGNhdGVnb3J5UmVzdWx0cyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLmF1ZGl0
UmVzdWx0c1RyZWVFbGVtZW50LmNoaWxkcmVuWzBdLnJlc3VsdHM7CisgICAgICAgICAgICB0cnkg
eworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2F0ZWdvcnlSZXN1bHRzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjYXRlZ29yeVJlc3VsdCA9IGNh
dGVnb3J5UmVzdWx0c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1c2goIkNhdGVn
b3J5OiAiICsgY2F0ZWdvcnlSZXN1bHQudGl0bGUpOworICAgICAgICAgICAgICAgICAgICBmcm9u
dGVuZF90ZXN0QXVkaXRDYXRlZ29yeShjYXRlZ29yeVJlc3VsdCwgb3V0cHV0KTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgb3V0
cHV0LnB1c2goZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUob3V0cHV0KTsKKyAgICAgICAgfSk7CisgICAgfSBjYXRjaChl
KSB7CisgICAgICAgIG91dHB1dC5wdXNoKCJFeGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwor
ICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKG91dHB1dCk7CisgICAgfQorfQorCitm
dW5jdGlvbiBmcm9udGVuZF90ZXN0QXVkaXRDYXRlZ29yeShjYXRlZ29yeVJlc3VsdCwgb3V0cHV0
KQoreworICAgIGNvbnN0IHJ1bGVSZXN1bHRzID0gY2F0ZWdvcnlSZXN1bHQucnVsZVJlc3VsdHM7
CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVSZXN1bHRzLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIHZhciBydWxlUmVzdWx0ID0gcnVsZVJlc3VsdHNbaV07CisgICAgICAgIG91dHB1dC5w
dXNoKHJ1bGVSZXN1bHQudmFsdWUgKyAiOiAiICsgcnVsZVJlc3VsdC52aW9sYXRpb25Db3VudCk7
CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJvbmxvYWQo
KSI+CitUZXN0cyBhdWRpdCBydWxlcy4KKworPHN0eWxlPgorLnZpb2xhdGlvbiB7IGNvbG9yOiBy
ZWQ7IH0KKzwvc3R5bGU+Cis8aW1nIHNyYz0iZm9vMS5qcGciPgorPGltZyBzcmM9ImZvbzIuanBn
IiB3aWR0aD0xMDA+Cis8aW1nIHNyYz0iZm9vMy5qcGciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1
dGUiPgorCis8cHJlIGlkPSJvdXRwdXRQcmUiPgorPC9wcmU+CisKKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvYXVkaXRzLXNjcmlw
dDEuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQxLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM5OTIwYWMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQxLmpz
CkBAIC0wLDAgKzEsMyBAQAorZnVuY3Rpb24gZm9vMSgpCit7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQyLmpzIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlcy9hdWRpdHMtc2NyaXB0Mi5qcwpuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwLi4yODNmZTFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlcy9hdWRpdHMtc2NyaXB0Mi5qcwpAQCAtMCwwICsxLDMgQEAK
K2Z1bmN0aW9uIGZvbzIoKQoreworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9hdWRpdHMtc2NyaXB0My5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNv
dXJjZXMvYXVkaXRzLXNjcmlwdDMuanMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MC4uZmQ2MDUwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNv
dXJjZXMvYXVkaXRzLXNjcmlwdDMuanMKQEAgLTAsMCArMSwzIEBACitmdW5jdGlvbiBmb28zKCkK
K3sKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggOWRkNDZlMy4uMDU1ZTViZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wMy0yNiAgQWxleGFu
ZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvdmVyIHRoZSBBdWRp
dHMgcGFuZWwgd2l0aCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzY2MTMKKworICAgICAgICBEcml2ZS1ieSBDc3NJbkhlYWRSdWxlIGZpeCBh
bmQgc29ydGVkIHJlc3VsdHMgZm9yIGRldGVybWluaXN0aWMgb3JkZXIuCisKKyAgICAgICAgVGVz
dDogaW5zcGVjdG9yL2F1ZGl0cy1wYW5lbC1mdW5jdGlvbmFsLmh0bWwKKworICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1bHRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkF1ZGl0UmVzdWx0Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29y
eVJlc3VsdFBhbmUucnVsZVNvcnRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRDYXRl
Z29yeVJlc3VsdFBhbmUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxl
cy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNzc0luSGVhZFJ1bGUucHJv
dG90eXBlLmRvUnVuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVs
LmpzOgorCiAyMDEwLTAzLTI1ICBBbnR0aSBLb2l2aXN0byAgPGtvaXZpc3RvQGlraS5maT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJlc3VsdFZpZXcuanMgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1bHRWaWV3LmpzCmluZGV4IDBmNDNkMjQu
LjJmNGFmYmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJl
c3VsdFZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UmVzdWx0
Vmlldy5qcwpAQCAtMzMsNiArMzMsMTAgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UmVzdWx0VmlldyA9
IGZ1bmN0aW9uKGNhdGVnb3J5UmVzdWx0cykKICAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRo
aXMpOwogICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSAiYXVkaXQtcmVzdWx0LXZpZXciOwog
CisgICAgZnVuY3Rpb24gY2F0ZWdvcnlTb3J0ZXIoYSwgYikgeworICAgICAgICByZXR1cm4gKGEu
dGl0bGUgfHwgIiIpLmxvY2FsZUNvbXBhcmUoYi50aXRsZSB8fCAiIik7CisgICAgfQorICAgIGNh
dGVnb3J5UmVzdWx0cy5zb3J0KGNhdGVnb3J5U29ydGVyKTsKICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGNhdGVnb3J5UmVzdWx0cy5sZW5ndGg7ICsraSkKICAgICAgICAgdGhpcy5lbGVtZW50LmFw
cGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeVJlc3VsdFBhbmUoY2F0ZWdv
cnlSZXN1bHRzW2ldKS5lbGVtZW50KTsKIH0KQEAgLTQ5LDYgKzUzLDE3IEBAIFdlYkluc3BlY3Rv
ci5BdWRpdENhdGVnb3J5UmVzdWx0UGFuZSA9IGZ1bmN0aW9uKGNhdGVnb3J5UmVzdWx0KQogCiAg
ICAgdGhpcy5fdHJlZU91dGxpbmUgPSBuZXcgVHJlZU91dGxpbmUodHJlZU91dGxpbmVFbGVtZW50
KTsKICAgICB0aGlzLl90cmVlT3V0bGluZS5leHBhbmRUcmVlRWxlbWVudHNXaGVuQXJyb3dpbmcg
PSB0cnVlOworCisgICAgZnVuY3Rpb24gcnVsZVNvcnRlcihhLCBiKQorICAgIHsKKyAgICAgICAg
dmFyIHJlc3VsdCA9IFdlYkluc3BlY3Rvci5BdWRpdFJ1bGUuU2V2ZXJpdHlPcmRlclthLnNldmVy
aXR5IHx8IDBdIC0gV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZS5TZXZlcml0eU9yZGVyW2Iuc2V2ZXJp
dHkgfHwgMF07CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmVzdWx0ID0gKGEu
dmFsdWUgfHwgIiIpLmxvY2FsZUNvbXBhcmUoYi52YWx1ZSB8fCAiIik7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgY2F0ZWdvcnlSZXN1bHQucnVsZVJlc3VsdHMuc29ydChy
dWxlU29ydGVyKTsKKwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2F0ZWdvcnlSZXN1bHQucnVs
ZVJlc3VsdHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgdmFyIHJ1bGVSZXN1bHQgPSBjYXRlZ29y
eVJlc3VsdC5ydWxlUmVzdWx0c1tpXTsKICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy5f
YXBwZW5kUmVzdWx0KHRoaXMuX3RyZWVPdXRsaW5lLCBydWxlUmVzdWx0KTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMKaW5kZXggYzYxZjJjMS4uMWE3MDU1MSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMKQEAgLTcyOCwxMSArNzI4
LDEzIEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNzc0luSGVhZFJ1bGUucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdmFyIG91dHB1dE1lc3NhZ2VzID0gW107CiAgICAgICAgICAgICBmb3Ig
KHZhciB1cmwgaW4gZXZhbFJlc3VsdCkgewogICAgICAgICAgICAgICAgIHZhciB1cmxWaW9sYXRp
b25zID0gZXZhbFJlc3VsdFt1cmxdOwotICAgICAgICAgICAgICAgIGlmICh1cmxWaW9sYXRpb25z
WzBdKQorICAgICAgICAgICAgICAgIGlmICh1cmxWaW9sYXRpb25zWzBdKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC5hZGRDaGlsZChTdHJpbmcuc3ByaW50ZigiJXMgc3R5bGUgYmxvY2so
cykgaW4gdGhlICVzIGJvZHkgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBkb2N1bWVudCBoZWFkLiIs
IHVybFZpb2xhdGlvbnNbMF0sIFdlYkluc3BlY3Rvci5saW5raWZ5VVJMKHVybCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LnZpb2xhdGlvbkNvdW50ICs9IHVybFZpb2xhdGlvbnNbMF07
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dXJsVmlvbGF0aW9uc1sxXS5sZW5ndGg7ICsraSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LmFkZENoaWxkKFN0cmluZy5zcHJpbnRmKCJMaW5rIG5vZGUgJXMgc2hvdWxkIGJlIG1vdmVkIHRv
IHRoZSBkb2N1bWVudCBoZWFkIGluICVzIiwgV2ViSW5zcGVjdG9yLmxpbmtpZnlVUkwodXJsVmlv
bGF0aW9uc1sxXSkpLCBXZWJJbnNwZWN0b3IubGlua2lmeVVSTCh1cmwpKTsKLSAgICAgICAgICAg
ICAgICByZXN1bHQudmlvbGF0aW9uQ291bnQgKz0gdXJsVmlvbGF0aW9ucy5sZW5ndGg7CisgICAg
ICAgICAgICAgICAgcmVzdWx0LnZpb2xhdGlvbkNvdW50ICs9IHVybFZpb2xhdGlvbnNbMV0ubGVu
Z3RoOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3VtbWFyeS52YWx1ZSA9IFN0cmluZy5z
cHJpbnRmKCJDU1MgaW4gdGhlIGRvY3VtZW50IGJvZHkgYWR2ZXJzZWx5IGltcGFjdHMgcmVuZGVy
aW5nIHBlcmZvcm1hbmNlLiIpOwogICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcwppbmRleCA4ZDNjMzk2Li5lNjgy
MmU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwu
anMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCkBAIC0z
NDUsNiArMzQ1LDEyIEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGUuU2V2ZXJpdHkgPSB7CiAgICAg
U2V2ZXJlOiAic2V2ZXJlIgogfQogCitXZWJJbnNwZWN0b3IuQXVkaXRSdWxlLlNldmVyaXR5T3Jk
ZXIgPSB7CisgICAgImluZm8iOiAzLAorICAgICJ3YXJuaW5nIjogMiwKKyAgICAic2V2ZXJlIjog
MQorfQorCiBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlLnByb3RvdHlwZSA9IHsKICAgICBnZXQgaWQo
KQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51754</attachid>
            <date>2010-03-26 09:50:39 -0700</date>
            <delta_ts>2010-03-29 08:22:19 -0700</delta_ts>
            <desc>[PATCH] Full results tree dump in the test</desc>
            <filename>audittests.patch</filename>
            <type>text/plain</type>
            <size>14467</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMmFjZTA3Li43ZmU0OWIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDMt
MjYgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb3Zl
ciB0aGUgQXVkaXRzIHBhbmVsIHdpdGggdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjEzCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYXVkaXRz
LXBhbmVsLWZ1bmN0aW9uYWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvYXVkaXRzLXBhbmVsLWZ1bmN0aW9uYWwuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL3Jlc291cmNlcy9hdWRpdHMtc2NyaXB0MS5qczogQWRkZWQuCisgICAgICAgIChmb28xKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQyLmpzOiBBZGRlZC4K
KyAgICAgICAgKGZvbzIpOgorICAgICAgICAqIGluc3BlY3Rvci9yZXNvdXJjZXMvYXVkaXRzLXNj
cmlwdDMuanM6IEFkZGVkLgorICAgICAgICAoZm9vMyk6CisKIDIwMTAtMDMtMjUgIERpZWdvIEdv
bnphbGV6ICA8ZGllZ28uZ29uemFsZXpAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRp
dHMtcGFuZWwtZnVuY3Rpb25hbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
YXVkaXRzLXBhbmVsLWZ1bmN0aW9uYWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjc5MTczODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvYXVkaXRzLXBhbmVsLWZ1bmN0aW9uYWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MyBAQAorVGVzdHMgYXVkaXQgcnVsZXMuICAgIAorTmV0d29yayBVdGlsaXphdGlvbkNvbWJpbmUg
ZXh0ZXJuYWwgSmF2YVNjcmlwdCAoNClUaGVyZSBhcmUgbXVsdGlwbGUgcmVzb3VyY2VzIHNlcnZl
ZCBmcm9tIHNhbWUgZG9tYWluLiBDb25zaWRlciBjb21iaW5pbmcgdGhlbSBpbnRvIGFzIGZldyBm
aWxlcyBhcyBwb3NzaWJsZS40IEphdmFTY3JpcHQgcmVzb3VyY2VzIHNlcnZlZCBmcm9tIC5TcGVj
aWZ5IGltYWdlIGRpbWVuc2lvbnMgKDIpQSB3aWR0aCBhbmQgaGVpZ2h0IHNob3VsZCBiZSBzcGVj
aWZpZWQgZm9yIGFsbCBpbWFnZXMgaW4gb3JkZXIgdG8gc3BlZWQgdXAgcGFnZSBkaXNwbGF5LiBU
aGUgZm9sbG93aW5nIGltYWdlKHMpIGFyZSBtaXNzaW5nIGEgd2lkdGggYW5kL29yIGhlaWdodDpm
b28yLmpwZ2ZvbzEuanBnV2ViIFBhZ2UgUGVyZm9ybWFuY2VPcHRpbWl6ZSB0aGUgb3JkZXIgb2Yg
c3R5bGVzIGFuZCBzY3JpcHRzICgyKVRoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgQ1NTIGZpbGVzIHdl
cmUgaW5jbHVkZWQgYWZ0ZXIgYW4gZXh0ZXJuYWwgSmF2YVNjcmlwdCBmaWxlIGluIHRoZSBkb2N1
bWVudCBoZWFkLiBUbyBlbnN1cmUgQ1NTIGZpbGVzIGFyZSBkb3dubG9hZGVkIGluIHBhcmFsbGVs
LCBhbHdheXMgaW5jbHVkZSBleHRlcm5hbCBDU1MgYmVmb3JlIGV4dGVybmFsIEphdmFTY3JpcHQu
YXVkaXRzLXN0eWxlMS5jc3MgMSBpbmxpbmUgc2NyaXB0IGJsb2NrIHdhcyBmb3VuZCBpbiB0aGUg
aGVhZCBiZXR3ZWVuIGFuIGV4dGVybmFsIENTUyBmaWxlIGFuZCBhbm90aGVyIHJlc291cmNlLiBU
byBhbGxvdyBwYXJhbGxlbCBkb3dubG9hZGluZywgbW92ZSB0aGUgaW5saW5lIHNjcmlwdCBiZWZv
cmUgdGhlIGV4dGVybmFsIENTUyBmaWxlLCBvciBhZnRlciB0aGUgbmV4dCByZXNvdXJjZS5QdXQg
Q1NTIGluIHRoZSBkb2N1bWVudCBoZWFkICgxKUNTUyBpbiB0aGUgZG9jdW1lbnQgYm9keSBhZHZl
cnNlbHkgaW1wYWN0cyByZW5kZXJpbmcgcGVyZm9ybWFuY2UuMSBzdHlsZSBibG9jayhzKSBpbiB0
aGUgYXVkaXRzLXBhbmVsLWZ1bmN0aW9uYWwuaHRtbCBib2R5IHNob3VsZCBiZSBtb3ZlZCB0byB0
aGUgZG9jdW1lbnQgaGVhZC5SZW1vdmUgdW51c2VkIENTUyBydWxlcyAoMykxMDAlIG9mIENTUyAo
ZXN0aW1hdGVkKSBpcyBub3QgdXNlZCBieSB0aGUgY3VycmVudCBwYWdlLklubGluZSBibG9jayAj
MTogMTAwJSAoZXN0aW1hdGVkKSBpcyBub3QgdXNlZCBieSB0aGUgY3VycmVudCBwYWdlLi51bnVz
ZWRhdWRpdHMtc3R5bGUxLmNzczogMTAwJSAoZXN0aW1hdGVkKSBpcyBub3QgdXNlZCBieSB0aGUg
Y3VycmVudCBwYWdlLi5zb21lLXN0eWxlSW5saW5lIGJsb2NrICMyOiAxMDAlIChlc3RpbWF0ZWQp
IGlzIG5vdCB1c2VkIGJ5IHRoZSBjdXJyZW50IHBhZ2UuLnZpb2xhdGlvbgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXRzLXBhbmVsLWZ1bmN0aW9uYWwuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdHMtcGFuZWwtZnVuY3Rpb25hbC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MjNhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXRzLXBhbmVsLWZ1bmN0aW9uYWwuaHRtbApAQCAtMCww
ICsxLDk5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBU
cmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4K
KzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisudW51c2VkIHsKKyAgICBjb2xvcjogZ3JlZW47Cit9
Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rv
ci10ZXN0LmpzIj48L3NjcmlwdD4KKworPCEtLSBUaGVzZSBzY3JpcHRzIGFyZSBuZWVkZWQgdG8g
cmVzdWx0IGluIGEgdmlvbGF0aW9uIG9mIHRoZSBtYXggSlMgcmVzb3VyY2UgY291bnQgZnJvbSB0
aGUgc2FtZSBkb21haW4gLS0+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQx
LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2F1
ZGl0cy1zdHlsZTEuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2F1ZGl0cy1zY3JpcHQyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYXVk
aXRzLXNjcmlwdDMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gZG9pdCgpCit7
CisgICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQorICAgIHsKKyAgICAgICAgdmFyIG91dHB1
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXRQcmUiKTsKKyAgICAgICAgb3V0cHV0
LnRleHRDb250ZW50ID0gcmVzdWx0OworICAgICAgICBub3RpZnlEb25lKCk7CisgICAgfQorICAg
IGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3J1bkF1ZGl0cyIsIGNhbGxiYWNrKTsK
K30KKworCisvLyBGcm9udGVuZCBmdW5jdGlvbnMuCisKK2Z1bmN0aW9uIGZyb250ZW5kX3J1bkF1
ZGl0cyh0ZXN0Q29udHJvbGxlcikKK3sKKyAgICBpZiAoIVdlYkluc3BlY3Rvci5wYW5lbHMucmVz
b3VyY2VzLnJlc291cmNlVHJhY2tpbmdFbmFibGVkKSB7CisgICAgICAgIEluc3BlY3RvckJhY2tl
bmQuZW5hYmxlUmVzb3VyY2VUcmFja2luZyhmYWxzZSk7CisgICAgICAgIHRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoW10pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRyeSB7CisgICAgICAgIGNvbnN0IGxhdW5jaGVy
VmlldyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLl9sYXVuY2hlclZpZXc7CisgICAgICAg
IGxhdW5jaGVyVmlldy5fc2VsZWN0QWxsQ2xpY2tlZCh0cnVlKTsKKyAgICAgICAgbGF1bmNoZXJW
aWV3Ll9hdWRpdFByZXNlbnRTdGF0ZUVsZW1lbnQuY2hlY2tlZCA9IHRydWU7CisgICAgICAgIGxh
dW5jaGVyVmlldy5fbGF1bmNoQnV0dG9uQ2xpY2tlZCgpOworCisgICAgICAgIHRlc3RDb250cm9s
bGVyLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAv
LyBBdWRpdHMgYXJlIGRvbmUsIGNoZWNrIHJlc3VsdHMuCisgICAgICAgICAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLmF1ZGl0cy5zaG93UmVzdWx0cyhXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5h
dWRpdFJlc3VsdHNUcmVlRWxlbWVudC5jaGlsZHJlblswXS5yZXN1bHRzKTsKKyAgICAgICAgICAg
IHZhciBsaUVsZW1lbnRzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMudmlzaWJsZVZpZXcu
ZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGkiKTsKKyAgICAgICAgICAgIGZvciAodmFy
IGogPSAwOyBqIDwgbGlFbGVtZW50cy5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgICAgIGlm
IChsaUVsZW1lbnRzW2pdLnRyZWVFbGVtZW50KQorICAgICAgICAgICAgICAgICAgICBsaUVsZW1l
bnRzW2pdLnRyZWVFbGVtZW50LmV4cGFuZCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmdW5jdGlvbiByZXBsYWNlcihtYXRjaFN0cmluZykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICB2YXIgbWF0Y2ggPSBXZWJJbnNwZWN0b3IuVVJMUmVnRXhwLmV4ZWMobWF0Y2hTdHJp
bmcpOworICAgICAgICAgICAgICAgIHZhciByZXN1bHQ7CisgICAgICAgICAgICAgICAgaWYgKG1h
dGNoWzRdKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICIiOworICAgICAgICAgICAg
ICAgICAgICB2YXIgc2VnbWVudHMgPSBtYXRjaFs0XS5zcGxpdCgiLyIpOworICAgICAgICAgICAg
ICAgICAgICB2YXIgYXBwZW5kZWRDb3VudCA9IDA7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSBzZWdtZW50cy5sZW5ndGggLSAxOyBhcHBlbmRlZENvdW50IDwgMyAmJiBpID49IDA7
ICsrYXBwZW5kZWRDb3VudCwgLS1pKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9
ICIvIiArIHNlZ21lbnRzW2ldOworICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hbNV0pCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIiMiICsgbWF0Y2hbNV07CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgfHwgIltwYXRoXSI7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB0ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rv
ci5wYW5lbHMuYXVkaXRzLnZpc2libGVWaWV3LmVsZW1lbnQudGV4dENvbnRlbnQ7CisgICAgICAg
ICAgICB2YXIgcmVwbGFjZVJlZ0V4cCA9IG5ldyBSZWdFeHAoV2ViSW5zcGVjdG9yLlVSTFJlZ0V4
cC5zb3VyY2UsICJnIik7CisgICAgICAgICAgICB0ZXh0Q29udGVudCA9IHRleHRDb250ZW50LnJl
cGxhY2UocmVwbGFjZVJlZ0V4cCwgcmVwbGFjZXIpOworICAgICAgICAgICAgdGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSh0ZXh0Q29udGVudCk7CisgICAgICAgIH0pOworICAgIH0gY2F0Y2goZSkg
eworICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJFeGNlcHRpb246ICIgKyBlLnRv
U3RyaW5nKCkpOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9h
ZD0ib25sb2FkKCkiPgorVGVzdHMgYXVkaXQgcnVsZXMuCisKKzxzdHlsZT4KKy52aW9sYXRpb24g
eyBjb2xvcjogcmVkOyB9Cis8L3N0eWxlPgorPGltZyBzcmM9ImZvbzEuanBnIj4KKzxpbWcgc3Jj
PSJmb28yLmpwZyIgd2lkdGg9MTAwPgorPGltZyBzcmM9ImZvbzMuanBnIiBzdHlsZT0icG9zaXRp
b246IGFic29sdXRlIj4KKworPHByZSBpZD0ib3V0cHV0UHJlIj4KKzwvcHJlPgorCis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2F1
ZGl0cy1zY3JpcHQxLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9hdWRpdHMt
c2NyaXB0MS5qcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jOTkyMGFjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9hdWRpdHMt
c2NyaXB0MS5qcwpAQCAtMCwwICsxLDMgQEAKK2Z1bmN0aW9uIGZvbzEoKQoreworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9hdWRpdHMtc2NyaXB0Mi5qcyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvYXVkaXRzLXNjcmlwdDIuanMKbmV3IGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjgzZmUxZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvYXVkaXRzLXNjcmlwdDIuanMKQEAgLTAs
MCArMSwzIEBACitmdW5jdGlvbiBmb28yKCkKK3sKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvYXVkaXRzLXNjcmlwdDMuanMgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAuLmZkNjA1MDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQzLmpzCkBAIC0wLDAgKzEsMyBAQAorZnVuY3Rp
b24gZm9vMygpCit7Cit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDlkZDQ2ZTMuLmM0OGQ4NmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTAtMDMt
MjYgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb3Zl
ciB0aGUgQXVkaXRzIHBhbmVsIHdpdGggdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjEzCisKKyAgICAgICAgVXNlIGRpc3BsYXlOYW1lIGZv
ciByZXNvdXJjZXMsIHNvcnQgcmVzdWx0cyBmb3IgZGV0ZXJtaW5pc3RpYyBvdXRwdXQuCisgICAg
ICAgIERyaXZlLWJ5IGZpeCBpbiBDc3NJbkhlYWRSdWxlLgorCisgICAgICAgIFRlc3Q6IGluc3Bl
Y3Rvci9hdWRpdHMtcGFuZWwtZnVuY3Rpb25hbC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0F1ZGl0UmVzdWx0Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRp
dFJlc3VsdFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcnlSZXN1bHRQ
YW5lLnJ1bGVTb3J0ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcnlSZXN1
bHRQYW5lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5HemlwUnVsZS5wcm90b3R5cGUuZG9SdW4p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuVW51c2VkQ3NzUnVsZS5wcm90b3R5
cGUuZG9SdW4uZXZhbENhbGxiYWNrLnNlbGVjdG9yc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5BdWRpdFJ1bGVzLkltYWdlRGltZW5zaW9uc1J1bGUucHJvdG90eXBlLmRvUnVuKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNzc0luSGVhZFJ1bGUucHJvdG90eXBl
LmRvUnVuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZVJlc3VsdC5saW5raWZ5RGlzcGxheU5hbWUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZVJlc3VsdC5wcm90b3R5cGUuYWRkVVJM
KToKKwogMjAxMC0wMy0yNSAgQW50dGkgS29pdmlzdG8gIDxrb2l2aXN0b0Bpa2kuZmk+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1bHRWaWV3LmpzIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UmVzdWx0Vmlldy5qcwppbmRleCAwZjQzZDI0Li4y
ZjRhZmJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1
bHRWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJlc3VsdFZp
ZXcuanMKQEAgLTMzLDYgKzMzLDEwIEBAIFdlYkluc3BlY3Rvci5BdWRpdFJlc3VsdFZpZXcgPSBm
dW5jdGlvbihjYXRlZ29yeVJlc3VsdHMpCiAgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlz
KTsKICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gImF1ZGl0LXJlc3VsdC12aWV3IjsKIAor
ICAgIGZ1bmN0aW9uIGNhdGVnb3J5U29ydGVyKGEsIGIpIHsKKyAgICAgICAgcmV0dXJuIChhLnRp
dGxlIHx8ICIiKS5sb2NhbGVDb21wYXJlKGIudGl0bGUgfHwgIiIpOworICAgIH0KKyAgICBjYXRl
Z29yeVJlc3VsdHMuc29ydChjYXRlZ29yeVNvcnRlcik7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBjYXRlZ29yeVJlc3VsdHMubGVuZ3RoOyArK2kpCiAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBl
bmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcnlSZXN1bHRQYW5lKGNhdGVnb3J5
UmVzdWx0c1tpXSkuZWxlbWVudCk7CiB9CkBAIC00OSw2ICs1MywxNyBAQCBXZWJJbnNwZWN0b3Iu
QXVkaXRDYXRlZ29yeVJlc3VsdFBhbmUgPSBmdW5jdGlvbihjYXRlZ29yeVJlc3VsdCkKIAogICAg
IHRoaXMuX3RyZWVPdXRsaW5lID0gbmV3IFRyZWVPdXRsaW5lKHRyZWVPdXRsaW5lRWxlbWVudCk7
CiAgICAgdGhpcy5fdHJlZU91dGxpbmUuZXhwYW5kVHJlZUVsZW1lbnRzV2hlbkFycm93aW5nID0g
dHJ1ZTsKKworICAgIGZ1bmN0aW9uIHJ1bGVTb3J0ZXIoYSwgYikKKyAgICB7CisgICAgICAgIHZh
ciByZXN1bHQgPSBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlLlNldmVyaXR5T3JkZXJbYS5zZXZlcml0
eSB8fCAwXSAtIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGUuU2V2ZXJpdHlPcmRlcltiLnNldmVyaXR5
IHx8IDBdOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJlc3VsdCA9IChhLnZh
bHVlIHx8ICIiKS5sb2NhbGVDb21wYXJlKGIudmFsdWUgfHwgIiIpOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKworICAgIGNhdGVnb3J5UmVzdWx0LnJ1bGVSZXN1bHRzLnNvcnQocnVs
ZVNvcnRlcik7CisKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhdGVnb3J5UmVzdWx0LnJ1bGVS
ZXN1bHRzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgIHZhciBydWxlUmVzdWx0ID0gY2F0ZWdvcnlS
ZXN1bHQucnVsZVJlc3VsdHNbaV07CiAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuX2Fw
cGVuZFJlc3VsdCh0aGlzLl90cmVlT3V0bGluZSwgcnVsZVJlc3VsdCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzCmluZGV4IGM2MWYyYzEuLmJhOGE2ODYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzCkBAIC05Miw3ICs5Miw3IEBA
IFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkd6aXBSdWxlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgdmFyIHNhdmluZ3MgPSAyICogc2l6ZSAvIDM7CiAg
ICAgICAgICAgICAgICAgdG90YWxTYXZpbmdzICs9IHNhdmluZ3M7Ci0gICAgICAgICAgICAgICAg
c3VtbWFyeS5hZGRDaGlsZChTdHJpbmcuc3ByaW50ZigiJXMgY291bGQgc2F2ZSB+JXMiLCBXZWJJ
bnNwZWN0b3IubGlua2lmeVVSTChyZXNvdXJjZS51cmwpLCBOdW1iZXIuYnl0ZXNUb1N0cmluZyhz
YXZpbmdzKSkpOworICAgICAgICAgICAgICAgIHN1bW1hcnkuYWRkQ2hpbGQoU3RyaW5nLnNwcmlu
dGYoIiVzIGNvdWxkIHNhdmUgfiVzIiwgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZVJlc3VsdC5saW5r
aWZ5RGlzcGxheU5hbWUocmVzb3VyY2UudXJsKSwgTnVtYmVyLmJ5dGVzVG9TdHJpbmcoc2F2aW5n
cykpKTsKICAgICAgICAgICAgICAgICByZXN1bHQudmlvbGF0aW9uQ291bnQrKzsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtMzIzLDcgKzMyMyw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1
bGVzLlVudXNlZENzc1J1bGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICBpZiAo
IXVudXNlZFJ1bGVzLmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBzdHlsZVNoZWV0LmhyZWYgPyBXZWJJbnNw
ZWN0b3IubGlua2lmeVVSTChzdHlsZVNoZWV0LmhyZWYpIDogU3RyaW5nLnNwcmludGYoIklubGlu
ZSBibG9jayAjJWQiLCArK2lubGluZUJsb2NrT3JkaW5hbCk7CisgICAgICAgICAgICAgICAgICAg
IHZhciB1cmwgPSBzdHlsZVNoZWV0LmhyZWYgPyBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlUmVzdWx0
LmxpbmtpZnlEaXNwbGF5TmFtZShzdHlsZVNoZWV0LmhyZWYpIDogU3RyaW5nLnNwcmludGYoIklu
bGluZSBibG9jayAjJWQiLCArK2lubGluZUJsb2NrT3JkaW5hbCk7CiAgICAgICAgICAgICAgICAg
ICAgIHZhciBwY3RVbnVzZWQgPSBNYXRoLnJvdW5kKDEwMCAqIHVudXNlZFN0eWxlc2hlZXRTaXpl
IC8gc3R5bGVzaGVldFNpemUpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXN1bW1hcnkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5ID0gcmVzdWx0LmFkZENoaWxkKCIiLCB0cnVl
KTsKQEAgLTYyOCw3ICs2MjgsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5JbWFnZURpbWVu
c2lvbnNSdWxlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBtYXAgPSBjb250ZXh0LnVy
bFRvTm9EaW1lbnNpb25Db3VudDsKICAgICAgICAgICAgIGZvciAodmFyIHVybCBpbiBtYXApIHsK
ICAgICAgICAgICAgICAgICB2YXIgZW50cnkgPSBlbnRyeSB8fCByZXN1bHQuYWRkQ2hpbGQoIkEg
d2lkdGggYW5kIGhlaWdodCBzaG91bGQgYmUgc3BlY2lmaWVkIGZvciBhbGwgaW1hZ2VzIGluIG9y
ZGVyIHRvIHNwZWVkIHVwIHBhZ2UgZGlzcGxheS4gVGhlIGZvbGxvd2luZyBpbWFnZShzKSBhcmUg
bWlzc2luZyBhIHdpZHRoIGFuZC9vciBoZWlnaHQ6IiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAg
dmFyIHZhbHVlID0gV2ViSW5zcGVjdG9yLmxpbmtpZnlVUkwodXJsKTsKKyAgICAgICAgICAgICAg
ICB2YXIgdmFsdWUgPSBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlUmVzdWx0LmxpbmtpZnlEaXNwbGF5
TmFtZSh1cmwpOwogICAgICAgICAgICAgICAgIGlmIChtYXBbdXJsXSA+IDEpCiAgICAgICAgICAg
ICAgICAgICAgIHZhbHVlICs9IFN0cmluZy5zcHJpbnRmKCIgKCVkIHVzZXMpIiwgbWFwW3VybF0p
OwogICAgICAgICAgICAgICAgIGVudHJ5LmFkZENoaWxkKHZhbHVlKTsKQEAgLTcyOCwxMSArNzI4
LDEzIEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNzc0luSGVhZFJ1bGUucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdmFyIG91dHB1dE1lc3NhZ2VzID0gW107CiAgICAgICAgICAgICBmb3Ig
KHZhciB1cmwgaW4gZXZhbFJlc3VsdCkgewogICAgICAgICAgICAgICAgIHZhciB1cmxWaW9sYXRp
b25zID0gZXZhbFJlc3VsdFt1cmxdOwotICAgICAgICAgICAgICAgIGlmICh1cmxWaW9sYXRpb25z
WzBdKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYWRkQ2hpbGQoU3RyaW5nLnNwcmludGYo
IiVzIHN0eWxlIGJsb2NrKHMpIGluIHRoZSAlcyBib2R5IHNob3VsZCBiZSBtb3ZlZCB0byB0aGUg
ZG9jdW1lbnQgaGVhZC4iLCB1cmxWaW9sYXRpb25zWzBdLCBXZWJJbnNwZWN0b3IubGlua2lmeVVS
TCh1cmwpKSk7CisgICAgICAgICAgICAgICAgaWYgKHVybFZpb2xhdGlvbnNbMF0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LmFkZENoaWxkKFN0cmluZy5zcHJpbnRmKCIlcyBzdHlsZSBi
bG9jayhzKSBpbiB0aGUgJXMgYm9keSBzaG91bGQgYmUgbW92ZWQgdG8gdGhlIGRvY3VtZW50IGhl
YWQuIiwgdXJsVmlvbGF0aW9uc1swXSwgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZVJlc3VsdC5saW5r
aWZ5RGlzcGxheU5hbWUodXJsKSkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQudmlvbGF0
aW9uQ291bnQgKz0gdXJsVmlvbGF0aW9uc1swXTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1cmxWaW9sYXRpb25zWzFdLmxlbmd0aDsgKytp
KQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYWRkQ2hpbGQoU3RyaW5nLnNwcmludGYoIkxp
bmsgbm9kZSAlcyBzaG91bGQgYmUgbW92ZWQgdG8gdGhlIGRvY3VtZW50IGhlYWQgaW4gJXMiLCBX
ZWJJbnNwZWN0b3IubGlua2lmeVVSTCh1cmxWaW9sYXRpb25zWzFdKSksIFdlYkluc3BlY3Rvci5s
aW5raWZ5VVJMKHVybCkpOwotICAgICAgICAgICAgICAgIHJlc3VsdC52aW9sYXRpb25Db3VudCAr
PSB1cmxWaW9sYXRpb25zLmxlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZENo
aWxkKFN0cmluZy5zcHJpbnRmKCJMaW5rIG5vZGUgJXMgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBk
b2N1bWVudCBoZWFkIGluICVzIiwgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZVJlc3VsdC5saW5raWZ5
RGlzcGxheU5hbWUodXJsVmlvbGF0aW9uc1sxXSkpLCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlUmVz
dWx0LmxpbmtpZnlEaXNwbGF5TmFtZSh1cmwpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQudmlv
bGF0aW9uQ291bnQgKz0gdXJsVmlvbGF0aW9uc1sxXS5sZW5ndGg7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBzdW1tYXJ5LnZhbHVlID0gU3RyaW5nLnNwcmludGYoIkNTUyBpbiB0aGUgZG9j
dW1lbnQgYm9keSBhZHZlcnNlbHkgaW1wYWN0cyByZW5kZXJpbmcgcGVyZm9ybWFuY2UuIik7CiAg
ICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0F1ZGl0c1BhbmVsLmpzCmluZGV4IDhkM2MzOTYuLmQyYzA2MmQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMKQEAgLTM0NSw2ICszNDUsMTIgQEAgV2ViSW5z
cGVjdG9yLkF1ZGl0UnVsZS5TZXZlcml0eSA9IHsKICAgICBTZXZlcmU6ICJzZXZlcmUiCiB9CiAK
K1dlYkluc3BlY3Rvci5BdWRpdFJ1bGUuU2V2ZXJpdHlPcmRlciA9IHsKKyAgICAiaW5mbyI6IDMs
CisgICAgIndhcm5pbmciOiAyLAorICAgICJzZXZlcmUiOiAxCit9CisKIFdlYkluc3BlY3Rvci5B
dWRpdFJ1bGUucHJvdG90eXBlID0gewogICAgIGdldCBpZCgpCiAgICAgewpAQCAtMzk1LDYgKzQw
MSwxNCBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlUmVzdWx0ID0gZnVuY3Rpb24odmFsdWUsIGV4
cGFuZGVkLCBjbGFzc05hbWUpCiAgICAgdGhpcy52aW9sYXRpb25Db3VudCA9IDA7CiB9CiAKK1dl
Ykluc3BlY3Rvci5BdWRpdFJ1bGVSZXN1bHQubGlua2lmeURpc3BsYXlOYW1lID0gZnVuY3Rpb24o
dXJsKQoreworICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVVSTE1hcFt1
cmxdOworICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgIHJldHVybiB1cmw7CisgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5saW5raWZ5VVJMKHVybCwgcmVzb3VyY2UuZGlzcGxheU5hbWUpOworfQor
CiBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlUmVzdWx0LnByb3RvdHlwZSA9IHsKICAgICBhZGRDaGls
ZDogZnVuY3Rpb24odmFsdWUsIGV4cGFuZGVkLCBjbGFzc05hbWUpCiAgICAgewpAQCAtNDA3LDcg
KzQyMSw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVSZXN1bHQucHJvdG90eXBlID0gewogCiAg
ICAgYWRkVVJMOiBmdW5jdGlvbih1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5hZGRD
aGlsZChXZWJJbnNwZWN0b3IubGlua2lmeVVSTCh1cmwpKTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
YWRkQ2hpbGQoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZVJlc3VsdC5saW5raWZ5RGlzcGxheU5hbWUo
dXJsKSk7CiAgICAgfSwKIAogICAgIGFkZFVSTHM6IGZ1bmN0aW9uKHVybHMpCg==
</data>
<flag name="review"
          id="35089"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51912</attachid>
            <date>2010-03-29 08:22:19 -0700</date>
            <delta_ts>2010-03-29 09:02:03 -0700</delta_ts>
            <desc>[PATCH] Comments addressed, some changes for environment-independent testing</desc>
            <filename>audittests.patch</filename>
            <type>text/plain</type>
            <size>18816</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlN2M1N2NkLi5lN2Q4YzRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDMt
MjkgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb3Zl
ciB0aGUgQXVkaXRzIHBhbmVsIHdpdGggdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjEzCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYXVkaXRz
LXBhbmVsLWZ1bmN0aW9uYWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvYXVkaXRzLXBhbmVsLWZ1bmN0aW9uYWwuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL3Jlc291cmNlcy9hdWRpdHMtc2NyaXB0MS5qczogQWRkZWQuCisgICAgICAgIChmb28xKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQyLmpzOiBBZGRlZC4K
KyAgICAgICAgKGZvbzIpOgorICAgICAgICAqIGluc3BlY3Rvci9yZXNvdXJjZXMvYXVkaXRzLXNj
cmlwdDMuanM6IEFkZGVkLgorICAgICAgICAoZm9vMyk6CisKIDIwMTAtMDMtMjkgIFl1cnkgU2Vt
aWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2
ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdHMtcGFu
ZWwtZnVuY3Rpb25hbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXRz
LXBhbmVsLWZ1bmN0aW9uYWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjIyNzU3MzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvYXVkaXRzLXBhbmVsLWZ1bmN0aW9uYWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjkgQEAK
K1Rlc3RzIGF1ZGl0IHJ1bGVzLiAgICAKKyAgTmV0d29yayBVdGlsaXphdGlvbgorICAgIENvbWJp
bmUgZXh0ZXJuYWwgSmF2YVNjcmlwdCAoNCkKKyAgICAgVGhlcmUgYXJlIG11bHRpcGxlIHJlc291
cmNlcyBzZXJ2ZWQgZnJvbSBzYW1lIGRvbWFpbi4gQ29uc2lkZXIgY29tYmluaW5nIHRoZW0gaW50
byBhcyBmZXcgZmlsZXMgYXMgcG9zc2libGUuCisgICAgICA0IEphdmFTY3JpcHQgcmVzb3VyY2Vz
IHNlcnZlZCBmcm9tIFtkb21haW5dLgorICAgIFNwZWNpZnkgaW1hZ2UgZGltZW5zaW9ucyAoMikK
KyAgICAgQSB3aWR0aCBhbmQgaGVpZ2h0IHNob3VsZCBiZSBzcGVjaWZpZWQgZm9yIGFsbCBpbWFn
ZXMgaW4gb3JkZXIgdG8gc3BlZWQgdXAgcGFnZSBkaXNwbGF5LiBUaGUgZm9sbG93aW5nIGltYWdl
KHMpIGFyZSBtaXNzaW5nIGEgd2lkdGggYW5kL29yIGhlaWdodDoKKyAgICAgICBmb28yLmpwZwor
ICAgICAgIGZvbzEuanBnCisgIFdlYiBQYWdlIFBlcmZvcm1hbmNlCisgICAgT3B0aW1pemUgdGhl
IG9yZGVyIG9mIHN0eWxlcyBhbmQgc2NyaXB0cyAoMikKKyAgICAgVGhlIGZvbGxvd2luZyBleHRl
cm5hbCBDU1MgZmlsZXMgd2VyZSBpbmNsdWRlZCBhZnRlciBhbiBleHRlcm5hbCBKYXZhU2NyaXB0
IGZpbGUgaW4gdGhlIGRvY3VtZW50IGhlYWQuIFRvIGVuc3VyZSBDU1MgZmlsZXMgYXJlIGRvd25s
b2FkZWQgaW4gcGFyYWxsZWwsIGFsd2F5cyBpbmNsdWRlIGV4dGVybmFsIENTUyBiZWZvcmUgZXh0
ZXJuYWwgSmF2YVNjcmlwdC4KKyAgICAgICBhdWRpdHMtc3R5bGUxLmNzcworICAgICAgMSBpbmxp
bmUgc2NyaXB0IGJsb2NrIHdhcyBmb3VuZCBpbiB0aGUgaGVhZCBiZXR3ZWVuIGFuIGV4dGVybmFs
IENTUyBmaWxlIGFuZCBhbm90aGVyIHJlc291cmNlLiBUbyBhbGxvdyBwYXJhbGxlbCBkb3dubG9h
ZGluZywgbW92ZSB0aGUgaW5saW5lIHNjcmlwdCBiZWZvcmUgdGhlIGV4dGVybmFsIENTUyBmaWxl
LCBvciBhZnRlciB0aGUgbmV4dCByZXNvdXJjZS4KKyAgICBQdXQgQ1NTIGluIHRoZSBkb2N1bWVu
dCBoZWFkICgxKQorICAgICBDU1MgaW4gdGhlIGRvY3VtZW50IGJvZHkgYWR2ZXJzZWx5IGltcGFj
dHMgcmVuZGVyaW5nIHBlcmZvcm1hbmNlLgorICAgICAxIHN0eWxlIGJsb2NrKHMpIGluIHRoZSAK
KyAgICAgIGF1ZGl0cy1wYW5lbC1mdW5jdGlvbmFsLmh0bWwKKyAgICAgIGJvZHkgc2hvdWxkIGJl
IG1vdmVkIHRvIHRoZSBkb2N1bWVudCBoZWFkLgorICAgIFJlbW92ZSB1bnVzZWQgQ1NTIHJ1bGVz
ICgzKQorICAgICAxMDAlIG9mIENTUyAoZXN0aW1hdGVkKSBpcyBub3QgdXNlZCBieSB0aGUgY3Vy
cmVudCBwYWdlLgorICAgICAgSW5saW5lIGJsb2NrICMxOiAxMDAlIChlc3RpbWF0ZWQpIGlzIG5v
dCB1c2VkIGJ5IHRoZSBjdXJyZW50IHBhZ2UuCisgICAgICAgLnVudXNlZAorICAgICAgIGF1ZGl0
cy1zdHlsZTEuY3NzCisgICAgICA6IDEwMCUgKGVzdGltYXRlZCkgaXMgbm90IHVzZWQgYnkgdGhl
IGN1cnJlbnQgcGFnZS4KKyAgICAgICAuc29tZS1zdHlsZQorICAgICAgSW5saW5lIGJsb2NrICMy
OiAxMDAlIChlc3RpbWF0ZWQpIGlzIG5vdCB1c2VkIGJ5IHRoZSBjdXJyZW50IHBhZ2UuCisgICAg
ICAgLnZpb2xhdGlvbgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXRz
LXBhbmVsLWZ1bmN0aW9uYWwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdHMtcGFu
ZWwtZnVuY3Rpb25hbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2
ZTM2MDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXRzLXBh
bmVsLWZ1bmN0aW9uYWwuaHRtbApAQCAtMCwwICsxLDExMSBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cu
dzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLnVu
dXNlZCB7CisgICAgY29sb3I6IGdyZWVuOworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CisKKzwhLS0g
VGhlc2Ugc2NyaXB0cyBhcmUgbmVlZGVkIHRvIHJlc3VsdCBpbiBhIHZpb2xhdGlvbiBvZiB0aGUg
bWF4IEpTIHJlc291cmNlIGNvdW50IGZyb20gdGhlIHNhbWUgZG9tYWluIC0tPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9hdWRpdHMtc2NyaXB0MS5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9hdWRpdHMtc3R5bGUxLmNzcyIgdHlwZT0idGV4dC9j
c3MiPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdWRpdHMtc2NyaXB0Mi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CisKK2Z1bmN0aW9uIGRvaXQoKQoreworICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIHZhciBvdXRwdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
b3V0cHV0UHJlIik7CisgICAgICAgIG91dHB1dC50ZXh0Q29udGVudCA9IHJlc3VsdDsKKyAgICAg
ICAgbm90aWZ5RG9uZSgpOworICAgIH0KKyAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9u
dGVuZF9ydW5BdWRpdHMiLCBjYWxsYmFjayk7Cit9CisKKworLy8gRnJvbnRlbmQgZnVuY3Rpb25z
LgorCitmdW5jdGlvbiBmcm9udGVuZF9ydW5BdWRpdHModGVzdENvbnRyb2xsZXIpCit7CisgICAg
aWYgKCFXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5yZXNvdXJjZVRyYWNraW5nRW5hYmxl
ZCkgeworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmVuYWJsZVJlc291cmNlVHJhY2tpbmcoZmFs
c2UpOworICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKFtdKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBX
ZWJJbnNwZWN0b3IuQXVkaXRSdWxlUmVzdWx0LnJlc291cmNlRG9tYWluID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHJldHVybiAiW2RvbWFpbl0iOworICAgIH07CisgICAgdHJ5IHsKKyAgICAgICAg
Y29uc3QgbGF1bmNoZXJWaWV3ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMuX2xhdW5jaGVy
VmlldzsKKyAgICAgICAgbGF1bmNoZXJWaWV3Ll9zZWxlY3RBbGxDbGlja2VkKHRydWUpOworICAg
ICAgICBsYXVuY2hlclZpZXcuX2F1ZGl0UHJlc2VudFN0YXRlRWxlbWVudC5jaGVja2VkID0gdHJ1
ZTsKKyAgICAgICAgbGF1bmNoZXJWaWV3Ll9sYXVuY2hCdXR0b25DbGlja2VkKCk7CisKKyAgICAg
ICAgdGVzdENvbnRyb2xsZXIucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIC8vIEF1ZGl0cyBhcmUgZG9uZSwgY2hlY2sgcmVzdWx0cy4KKyAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnNob3dSZXN1bHRzKFdlYkluc3BlY3Rvci5w
YW5lbHMuYXVkaXRzLmF1ZGl0UmVzdWx0c1RyZWVFbGVtZW50LmNoaWxkcmVuWzBdLnJlc3VsdHMp
OworICAgICAgICAgICAgdmFyIGxpRWxlbWVudHMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0
cy52aXNpYmxlVmlldy5lbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaSIpOworICAgICAg
ICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBsaUVsZW1lbnRzLmxlbmd0aDsgKytqKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGxpRWxlbWVudHNbal0udHJlZUVsZW1lbnQpCisgICAgICAgICAgICAg
ICAgICAgIGxpRWxlbWVudHNbal0udHJlZUVsZW1lbnQuZXhwYW5kKCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICB2YXIgb3V0cHV0ID0gW107CisgICAgICAgICAgICBmcm9udGVuZF9jb2xs
ZWN0VGV4dENvbnRlbnQoV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMudmlzaWJsZVZpZXcuZWxl
bWVudCwgMCwgb3V0cHV0KTsKKyAgICAgICAgICAgIC8vIEF2b2lkIGluZmx1ZW5jaW5nIHRlc3Rz
IHRoYXQgcmVxdWlyZWQgcmVzb3VyY2UgdHJhY2tpbmcgdG8gYmUgZGlzYWJsZWQuCisgICAgICAg
ICAgICBJbnNwZWN0b3JCYWNrZW5kLmRpc2FibGVSZXNvdXJjZVRyYWNraW5nKGZhbHNlKTsKKyAg
ICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZShvdXRwdXQu
am9pbigiXG4iKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSBjYXRjaChl
KSB7CisgICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoIkV4Y2VwdGlvbjogIiArIGUu
dG9TdHJpbmcoKSk7CisgICAgfQorfQorCitmdW5jdGlvbiBmcm9udGVuZF9jb2xsZWN0VGV4dENv
bnRlbnQoZWxlbWVudCwgbGV2ZWwsIG91dHB1dCkKK3sKKyAgICB2YXIgbm9kZU91dHB1dCA9ICIi
OworICAgIHZhciBjaGlsZCA9IGVsZW1lbnQuZmlyc3RDaGlsZDsKKyAgICB3aGlsZSAoY2hpbGQp
IHsKKyAgICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkgeworICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZXZlbDsgKytpKQorICAgICAgICAgICAgICAg
IG5vZGVPdXRwdXQgKz0gIiAiOworICAgICAgICAgICAgbm9kZU91dHB1dCArPSBjaGlsZC5ub2Rl
VmFsdWU7CisgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVO
VF9OT0RFKSB7CisgICAgICAgICAgICBpZiAobm9kZU91dHB1dCAhPT0gIiIpIHsKKyAgICAgICAg
ICAgICAgICBvdXRwdXQucHVzaChub2RlT3V0cHV0KTsKKyAgICAgICAgICAgICAgICBub2RlT3V0
cHV0ID0gIiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmcm9udGVuZF9jb2xsZWN0VGV4
dENvbnRlbnQoY2hpbGQsIGxldmVsICsgMSwgb3V0cHV0KTsKKyAgICAgICAgfQorICAgICAgICBj
aGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nOworICAgIH0KKyAgICBpZiAobm9kZU91dHB1dCAhPT0g
IiIpCisgICAgICAgIG91dHB1dC5wdXNoKG5vZGVPdXRwdXQpOworICAgIHJldHVybjsKK30KKwor
PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorVGVzdHMgYXVk
aXQgcnVsZXMuCisKKzxzdHlsZT4KKy52aW9sYXRpb24geyBjb2xvcjogcmVkOyB9Cis8L3N0eWxl
PgorPGltZyBzcmM9ImZvbzEuanBnIj4KKzxpbWcgc3JjPSJmb28yLmpwZyIgd2lkdGg9MTAwPgor
PGltZyBzcmM9ImZvbzMuanBnIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlIj4KKworPHByZSBp
ZD0ib3V0cHV0UHJlIj4KKzwvcHJlPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQxLmpzIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9hdWRpdHMtc2NyaXB0MS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwLi5jOTkyMGFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9hdWRpdHMtc2NyaXB0MS5qcwpAQCAtMCwwICsxLDMg
QEAKK2Z1bmN0aW9uIGZvbzEoKQoreworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlcy9hdWRpdHMtc2NyaXB0Mi5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZXMvYXVkaXRzLXNjcmlwdDIuanMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw
MDAwMC4uMjgzZmUxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZXMvYXVkaXRzLXNjcmlwdDIuanMKQEAgLTAsMCArMSwzIEBACitmdW5jdGlvbiBmb28y
KCkKK3sKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvYXVk
aXRzLXNjcmlwdDMuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1z
Y3JpcHQzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmZkNjA1MDQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1z
Y3JpcHQzLmpzCkBAIC0wLDAgKzEsMyBAQAorZnVuY3Rpb24gZm9vMygpCit7Cit9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGViNGNlM2Eu
LjZiMDBlNzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMDMtMjkgIEFsZXhhbmRlciBQYXZsb3YgIDxh
cGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb3ZlciB0aGUgQXVkaXRzIHBhbmVsIHdpdGgg
dGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2
NjEzCisKKyAgICAgICAgU29ydCByZXN1bHRzLCBhZGQgYSBmZXcgZHJpdmUtYnkgZml4ZXMgYW5k
IHJlZmFjdG9yaW5ncyB0byBpbXByb3ZlIHRlc3RhYmlsaXR5LgorCisgICAgICAgIFRlc3Q6IGlu
c3BlY3Rvci9hdWRpdHMtcGFuZWwtZnVuY3Rpb25hbC5odG1sCisKKyAgICAgICAgKiBFbmdsaXNo
Lmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9BdWRpdFJlc3VsdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSZXN1bHRW
aWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdENhdGVnb3J5UmVzdWx0UGFuZS5ydWxl
U29ydGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdENhdGVnb3J5UmVzdWx0UGFuZSk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuR3ppcFJ1bGUucHJvdG90eXBlLmRvUnVuKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNvbWJpbmVFeHRlcm5hbFJlc291cmNlc1J1bGUu
cHJvdG90eXBlLmRvUnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLlVudXNl
ZENzc1J1bGUucHJvdG90eXBlLmRvUnVuLmV2YWxDYWxsYmFjay5zZWxlY3RvcnNDYWxsYmFjayk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5JbWFnZURpbWVuc2lvbnNSdWxlLnBy
b3RvdHlwZS5kb1J1bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Dc3NJbkhl
YWRSdWxlLnByb3RvdHlwZS5kb1J1bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxl
cy5Db29raWVTaXplUnVsZS5wcm90b3R5cGUucHJvY2Vzc0Nvb2tpZXMpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QXVkaXRSdWxlUmVzdWx0LmxpbmtpZnlEaXNwbGF5TmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQXVkaXRSdWxlUmVzdWx0LnJlc291cmNlRG9tYWluKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5BdWRpdFJ1bGVSZXN1bHQucHJvdG90eXBlLmFkZFVSTCk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZGlzcGxheU5h
bWVGb3JVUkwpOgorCiAyMDEwLTAzLTI5ICBUaG9tYXMgWmFuZGVyICA8dC56YW5kZXJAbm9raWEu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9XZWJDb3JlL0VuZ2xp
c2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCA0Yzg3MTUwLi44MzhhNWE5IDEwMDY0
NApCaW5hcnkgZmlsZXMgYS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5q
cyBhbmQgYi9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBkaWZmZXIK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJlc3VsdFZpZXcu
anMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1bHRWaWV3LmpzCmluZGV4
IDBmNDNkMjQuLjJmNGFmYmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9BdWRpdFJlc3VsdFZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1
ZGl0UmVzdWx0Vmlldy5qcwpAQCAtMzMsNiArMzMsMTAgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UmVz
dWx0VmlldyA9IGZ1bmN0aW9uKGNhdGVnb3J5UmVzdWx0cykKICAgICBXZWJJbnNwZWN0b3IuVmll
dy5jYWxsKHRoaXMpOwogICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSAiYXVkaXQtcmVzdWx0
LXZpZXciOwogCisgICAgZnVuY3Rpb24gY2F0ZWdvcnlTb3J0ZXIoYSwgYikgeworICAgICAgICBy
ZXR1cm4gKGEudGl0bGUgfHwgIiIpLmxvY2FsZUNvbXBhcmUoYi50aXRsZSB8fCAiIik7CisgICAg
fQorICAgIGNhdGVnb3J5UmVzdWx0cy5zb3J0KGNhdGVnb3J5U29ydGVyKTsKICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGNhdGVnb3J5UmVzdWx0cy5sZW5ndGg7ICsraSkKICAgICAgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeVJlc3VsdFBh
bmUoY2F0ZWdvcnlSZXN1bHRzW2ldKS5lbGVtZW50KTsKIH0KQEAgLTQ5LDYgKzUzLDE3IEBAIFdl
Ykluc3BlY3Rvci5BdWRpdENhdGVnb3J5UmVzdWx0UGFuZSA9IGZ1bmN0aW9uKGNhdGVnb3J5UmVz
dWx0KQogCiAgICAgdGhpcy5fdHJlZU91dGxpbmUgPSBuZXcgVHJlZU91dGxpbmUodHJlZU91dGxp
bmVFbGVtZW50KTsKICAgICB0aGlzLl90cmVlT3V0bGluZS5leHBhbmRUcmVlRWxlbWVudHNXaGVu
QXJyb3dpbmcgPSB0cnVlOworCisgICAgZnVuY3Rpb24gcnVsZVNvcnRlcihhLCBiKQorICAgIHsK
KyAgICAgICAgdmFyIHJlc3VsdCA9IFdlYkluc3BlY3Rvci5BdWRpdFJ1bGUuU2V2ZXJpdHlPcmRl
clthLnNldmVyaXR5IHx8IDBdIC0gV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZS5TZXZlcml0eU9yZGVy
W2Iuc2V2ZXJpdHkgfHwgMF07CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmVz
dWx0ID0gKGEudmFsdWUgfHwgIiIpLmxvY2FsZUNvbXBhcmUoYi52YWx1ZSB8fCAiIik7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgY2F0ZWdvcnlSZXN1bHQucnVsZVJlc3Vs
dHMuc29ydChydWxlU29ydGVyKTsKKwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2F0ZWdvcnlS
ZXN1bHQucnVsZVJlc3VsdHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgdmFyIHJ1bGVSZXN1bHQg
PSBjYXRlZ29yeVJlc3VsdC5ydWxlUmVzdWx0c1tpXTsKICAgICAgICAgdmFyIHRyZWVFbGVtZW50
ID0gdGhpcy5fYXBwZW5kUmVzdWx0KHRoaXMuX3RyZWVPdXRsaW5lLCBydWxlUmVzdWx0KTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMKaW5kZXggYzYxZjJjMS4uODhl
NzY2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMu
anMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMKQEAgLTky
LDcgKzkyLDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuR3ppcFJ1bGUucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB2YXIgc2F2aW5ncyA9IDIgKiBz
aXplIC8gMzsKICAgICAgICAgICAgICAgICB0b3RhbFNhdmluZ3MgKz0gc2F2aW5nczsKLSAgICAg
ICAgICAgICAgICBzdW1tYXJ5LmFkZENoaWxkKFN0cmluZy5zcHJpbnRmKCIlcyBjb3VsZCBzYXZl
IH4lcyIsIFdlYkluc3BlY3Rvci5saW5raWZ5VVJMKHJlc291cmNlLnVybCksIE51bWJlci5ieXRl
c1RvU3RyaW5nKHNhdmluZ3MpKSk7CisgICAgICAgICAgICAgICAgc3VtbWFyeS5hZGRDaGlsZChT
dHJpbmcuc3ByaW50ZigiJXMgY291bGQgc2F2ZSB+JXMiLCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxl
UmVzdWx0LmxpbmtpZnlEaXNwbGF5TmFtZShyZXNvdXJjZS51cmwpLCBOdW1iZXIuYnl0ZXNUb1N0
cmluZyhzYXZpbmdzKSkpOwogICAgICAgICAgICAgICAgIHJlc3VsdC52aW9sYXRpb25Db3VudCsr
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMzgsNyArMTM4LDcgQEAgV2ViSW5zcGVj
dG9yLkF1ZGl0UnVsZXMuQ29tYmluZUV4dGVybmFsUmVzb3VyY2VzUnVsZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICBpZiAoZXh0cmFSZXNvdXJjZUNvdW50IDw9IDApCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBwZW5hbGl6ZWRSZXNvdXJjZUNvdW50ICs9IGV4dHJh
UmVzb3VyY2VDb3VudCAtIDE7Ci0gICAgICAgICAgICBzdW1tYXJ5LmFkZENoaWxkKFN0cmluZy5z
cHJpbnRmKCIlZCAlcyByZXNvdXJjZXMgc2VydmVkIGZyb20gJXMuIiwgZG9tYWluUmVzb3VyY2Vz
Lmxlbmd0aCwgdGhpcy5fcmVzb3VyY2VUeXBlTmFtZSwgZG9tYWluKSk7CisgICAgICAgICAgICBz
dW1tYXJ5LmFkZENoaWxkKFN0cmluZy5zcHJpbnRmKCIlZCAlcyByZXNvdXJjZXMgc2VydmVkIGZy
b20gJXMuIiwgZG9tYWluUmVzb3VyY2VzLmxlbmd0aCwgdGhpcy5fcmVzb3VyY2VUeXBlTmFtZSwg
V2ViSW5zcGVjdG9yLkF1ZGl0UnVsZVJlc3VsdC5yZXNvdXJjZURvbWFpbihkb21haW4pKSk7CiAg
ICAgICAgICAgICByZXN1bHQudmlvbGF0aW9uQ291bnQgKz0gZG9tYWluUmVzb3VyY2VzLmxlbmd0
aDsKICAgICAgICAgfQogICAgICAgICBpZiAoIXBlbmFsaXplZFJlc291cmNlQ291bnQpCkBAIC0z
MjMsNyArMzIzLDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuVW51c2VkQ3NzUnVsZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghdW51c2VkUnVsZXMubGVuZ3RoKQog
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICAgICAg
dmFyIHVybCA9IHN0eWxlU2hlZXQuaHJlZiA/IFdlYkluc3BlY3Rvci5saW5raWZ5VVJMKHN0eWxl
U2hlZXQuaHJlZikgOiBTdHJpbmcuc3ByaW50ZigiSW5saW5lIGJsb2NrICMlZCIsICsraW5saW5l
QmxvY2tPcmRpbmFsKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IHN0eWxlU2hlZXQu
aHJlZiA/IFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVSZXN1bHQubGlua2lmeURpc3BsYXlOYW1lKHN0
eWxlU2hlZXQuaHJlZikgOiBTdHJpbmcuc3ByaW50ZigiSW5saW5lIGJsb2NrICMlZCIsICsraW5s
aW5lQmxvY2tPcmRpbmFsKTsKICAgICAgICAgICAgICAgICAgICAgdmFyIHBjdFVudXNlZCA9IE1h
dGgucm91bmQoMTAwICogdW51c2VkU3R5bGVzaGVldFNpemUgLyBzdHlsZXNoZWV0U2l6ZSk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICghc3VtbWFyeSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHN1bW1hcnkgPSByZXN1bHQuYWRkQ2hpbGQoIiIsIHRydWUpOwpAQCAtNjI4LDcgKzYyOCw3IEBA
IFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkltYWdlRGltZW5zaW9uc1J1bGUucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdmFyIG1hcCA9IGNvbnRleHQudXJsVG9Ob0RpbWVuc2lvbkNvdW50Owog
ICAgICAgICAgICAgZm9yICh2YXIgdXJsIGluIG1hcCkgewogICAgICAgICAgICAgICAgIHZhciBl
bnRyeSA9IGVudHJ5IHx8IHJlc3VsdC5hZGRDaGlsZCgiQSB3aWR0aCBhbmQgaGVpZ2h0IHNob3Vs
ZCBiZSBzcGVjaWZpZWQgZm9yIGFsbCBpbWFnZXMgaW4gb3JkZXIgdG8gc3BlZWQgdXAgcGFnZSBk
aXNwbGF5LiBUaGUgZm9sbG93aW5nIGltYWdlKHMpIGFyZSBtaXNzaW5nIGEgd2lkdGggYW5kL29y
IGhlaWdodDoiLCB0cnVlKTsKLSAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBXZWJJbnNwZWN0
b3IubGlua2lmeVVSTCh1cmwpOworICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IFdlYkluc3Bl
Y3Rvci5BdWRpdFJ1bGVSZXN1bHQubGlua2lmeURpc3BsYXlOYW1lKHVybCk7CiAgICAgICAgICAg
ICAgICAgaWYgKG1hcFt1cmxdID4gMSkKICAgICAgICAgICAgICAgICAgICAgdmFsdWUgKz0gU3Ry
aW5nLnNwcmludGYoIiAoJWQgdXNlcykiLCBtYXBbdXJsXSk7CiAgICAgICAgICAgICAgICAgZW50
cnkuYWRkQ2hpbGQodmFsdWUpOwpAQCAtNzI4LDExICs3MjgsMTMgQEAgV2ViSW5zcGVjdG9yLkF1
ZGl0UnVsZXMuQ3NzSW5IZWFkUnVsZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgb3V0
cHV0TWVzc2FnZXMgPSBbXTsKICAgICAgICAgICAgIGZvciAodmFyIHVybCBpbiBldmFsUmVzdWx0
KSB7CiAgICAgICAgICAgICAgICAgdmFyIHVybFZpb2xhdGlvbnMgPSBldmFsUmVzdWx0W3VybF07
Ci0gICAgICAgICAgICAgICAgaWYgKHVybFZpb2xhdGlvbnNbMF0pCi0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5hZGRDaGlsZChTdHJpbmcuc3ByaW50ZigiJXMgc3R5bGUgYmxvY2socykgaW4g
dGhlICVzIGJvZHkgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBkb2N1bWVudCBoZWFkLiIsIHVybFZp
b2xhdGlvbnNbMF0sIFdlYkluc3BlY3Rvci5saW5raWZ5VVJMKHVybCkpKTsKKyAgICAgICAgICAg
ICAgICBpZiAodXJsVmlvbGF0aW9uc1swXSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQu
YWRkQ2hpbGQoU3RyaW5nLnNwcmludGYoIiVzIHN0eWxlIGJsb2NrKHMpIGluIHRoZSAlcyBib2R5
IHNob3VsZCBiZSBtb3ZlZCB0byB0aGUgZG9jdW1lbnQgaGVhZC4iLCB1cmxWaW9sYXRpb25zWzBd
LCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlUmVzdWx0LmxpbmtpZnlEaXNwbGF5TmFtZSh1cmwpKSk7
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC52aW9sYXRpb25Db3VudCArPSB1cmxWaW9sYXRp
b25zWzBdOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHVybFZpb2xhdGlvbnNbMV0ubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5hZGRDaGlsZChTdHJpbmcuc3ByaW50ZigiTGluayBub2RlICVzIHNob3VsZCBiZSBt
b3ZlZCB0byB0aGUgZG9jdW1lbnQgaGVhZCBpbiAlcyIsIFdlYkluc3BlY3Rvci5saW5raWZ5VVJM
KHVybFZpb2xhdGlvbnNbMV0pKSwgV2ViSW5zcGVjdG9yLmxpbmtpZnlVUkwodXJsKSk7Ci0gICAg
ICAgICAgICAgICAgcmVzdWx0LnZpb2xhdGlvbkNvdW50ICs9IHVybFZpb2xhdGlvbnMubGVuZ3Ro
OworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYWRkQ2hpbGQoU3RyaW5nLnNwcmludGYoIkxp
bmsgbm9kZSAlcyBzaG91bGQgYmUgbW92ZWQgdG8gdGhlIGRvY3VtZW50IGhlYWQgaW4gJXMiLCBX
ZWJJbnNwZWN0b3IuQXVkaXRSdWxlUmVzdWx0LmxpbmtpZnlEaXNwbGF5TmFtZSh1cmxWaW9sYXRp
b25zWzFdKSksIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVSZXN1bHQubGlua2lmeURpc3BsYXlOYW1l
KHVybCkpOworICAgICAgICAgICAgICAgIHJlc3VsdC52aW9sYXRpb25Db3VudCArPSB1cmxWaW9s
YXRpb25zWzFdLmxlbmd0aDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN1bW1hcnkudmFs
dWUgPSBTdHJpbmcuc3ByaW50ZigiQ1NTIGluIHRoZSBkb2N1bWVudCBib2R5IGFkdmVyc2VseSBp
bXBhY3RzIHJlbmRlcmluZyBwZXJmb3JtYW5jZS4iKTsKICAgICAgICAgICAgIGNhbGxiYWNrKHJl
c3VsdCk7CkBAIC05NDcsNyArOTQ5LDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ29va2ll
U2l6ZVJ1bGUucHJvdG90eXBlID0gewogICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gc29y
dGVkQ29va2llU2l6ZXMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAgICAgIHZhciBt
YXhDb29raWVTaXplID0gc29ydGVkQ29va2llU2l6ZXNbaV0ubWF4Q29va2llU2l6ZTsKICAgICAg
ICAgICAgIGlmIChtYXhDb29raWVTaXplID4gdGhpcy5fbWF4Qnl0ZXNUaHJlc2hvbGQpCi0gICAg
ICAgICAgICAgICAgaHVnZUNvb2tpZURvbWFpbnMucHVzaChzb3J0ZWRDb29raWVTaXplc1tpXS5k
b21haW4gKyAiOiAiICsgTnVtYmVyLmJ5dGVzVG9TdHJpbmcobWF4Q29va2llU2l6ZSkpOworICAg
ICAgICAgICAgICAgIGh1Z2VDb29raWVEb21haW5zLnB1c2goV2ViSW5zcGVjdG9yLkF1ZGl0UnVs
ZVJlc3VsdC5yZXNvdXJjZURvbWFpbihzb3J0ZWRDb29raWVTaXplc1tpXS5kb21haW4pICsgIjog
IiArIE51bWJlci5ieXRlc1RvU3RyaW5nKG1heENvb2tpZVNpemUpKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHZhciBiaWdBdmdDb29raWVEb21haW5zID0gW107CkBAIC05NTYsNyArOTU4LDcgQEAg
V2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ29va2llU2l6ZVJ1bGUucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdmFyIGRvbWFpbiA9IHNvcnRlZENvb2tpZVNpemVzW2ldLmRvbWFpbjsKICAgICAg
ICAgICAgIHZhciBhdmdDb29raWVTaXplID0gc29ydGVkQ29va2llU2l6ZXNbaV0uYXZnQ29va2ll
U2l6ZTsKICAgICAgICAgICAgIGlmIChhdmdDb29raWVTaXplID4gdGhpcy5fYXZnQnl0ZXNUaHJl
c2hvbGQgJiYgYXZnQ29va2llU2l6ZSA8IHRoaXMuX21heEJ5dGVzVGhyZXNob2xkKQotICAgICAg
ICAgICAgICAgIGJpZ0F2Z0Nvb2tpZURvbWFpbnMucHVzaChkb21haW4gKyAiOiAiICsgTnVtYmVy
LmJ5dGVzVG9TdHJpbmcoYXZnQ29va2llU2l6ZSkpOworICAgICAgICAgICAgICAgIGJpZ0F2Z0Nv
b2tpZURvbWFpbnMucHVzaChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlUmVzdWx0LnJlc291cmNlRG9t
YWluKGRvbWFpbikgKyAiOiAiICsgTnVtYmVyLmJ5dGVzVG9TdHJpbmcoYXZnQ29va2llU2l6ZSkp
OwogICAgICAgICB9CiAgICAgICAgIHJlc3VsdC5hZGRDaGlsZChTdHJpbmcuc3ByaW50ZigiVGhl
IGF2ZXJhZ2UgY29va2llIHNpemUgZm9yIGFsbCByZXF1ZXN0cyBvbiB0aGlzIHBhZ2UgaXMgJXMi
LCBOdW1iZXIuYnl0ZXNUb1N0cmluZyhhdmdBbGxDb29raWVzU2l6ZSkpKTsKIApAQCAtOTY5LDcg
Kzk3MSw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNvb2tpZVNpemVSdWxlLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBpZiAoYmlnQXZnQ29va2llRG9tYWlucy5sZW5ndGgpIHsKICAgICAg
ICAgICAgIHZhciBlbnRyeSA9IHJlc3VsdC5hZGRDaGlsZChTdHJpbmcuc3ByaW50ZigiVGhlIGZv
bGxvd2luZyBkb21haW5zIGhhdmUgYW4gYXZlcmFnZSBjb29raWUgc2l6ZSBpbiBleGNlc3Mgb2Yg
JWQgYnl0ZXMuIFJlZHVjaW5nIHRoZSBzaXplIG9mIGNvb2tpZXMgZm9yIHRoZXNlIGRvbWFpbnMg
Y2FuIHJlZHVjZSB0aGUgdGltZSBpdCB0YWtlcyB0byBzZW5kIHJlcXVlc3RzLiIsIHRoaXMuX2F2
Z0J5dGVzVGhyZXNob2xkKSwgdHJ1ZSk7Ci0gICAgICAgICAgICBlbnRyeS5hZGRVUkxzKGJpZ0F2
Z0Nvb2tpZURvbWFpbnMubGVuZ3RoKTsKKyAgICAgICAgICAgIGVudHJ5LmFkZFVSTHMoYmlnQXZn
Q29va2llRG9tYWlucyk7CiAgICAgICAgICAgICByZXN1bHQudmlvbGF0aW9uQ291bnQgKz0gYmln
QXZnQ29va2llRG9tYWlucy5sZW5ndGg7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMKaW5kZXggOGQzYzM5Ni4uYzMzMThjZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcwpAQCAtMzQ1LDYgKzM0
NSwxMiBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlLlNldmVyaXR5ID0gewogICAgIFNldmVyZTog
InNldmVyZSIKIH0KIAorV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZS5TZXZlcml0eU9yZGVyID0gewor
ICAgICJpbmZvIjogMywKKyAgICAid2FybmluZyI6IDIsCisgICAgInNldmVyZSI6IDEKK30KKwog
V2ViSW5zcGVjdG9yLkF1ZGl0UnVsZS5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IGlkKCkKICAgICB7
CkBAIC0zOTUsNiArNDAxLDE2IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVSZXN1bHQgPSBmdW5j
dGlvbih2YWx1ZSwgZXhwYW5kZWQsIGNsYXNzTmFtZSkKICAgICB0aGlzLnZpb2xhdGlvbkNvdW50
ID0gMDsKIH0KIAorV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZVJlc3VsdC5saW5raWZ5RGlzcGxheU5h
bWUgPSBmdW5jdGlvbih1cmwpCit7CisgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5saW5raWZ5VVJM
KHVybCwgV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHVybCkpOworfQorCitXZWJJbnNw
ZWN0b3IuQXVkaXRSdWxlUmVzdWx0LnJlc291cmNlRG9tYWluID0gZnVuY3Rpb24oZG9tYWluKQor
eworICAgIHJldHVybiBkb21haW4gfHwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJbZW1wdHkgZG9t
YWluXSIpOworfQorCiBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlUmVzdWx0LnByb3RvdHlwZSA9IHsK
ICAgICBhZGRDaGlsZDogZnVuY3Rpb24odmFsdWUsIGV4cGFuZGVkLCBjbGFzc05hbWUpCiAgICAg
ewpAQCAtNDA3LDcgKzQyMyw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVSZXN1bHQucHJvdG90
eXBlID0gewogCiAgICAgYWRkVVJMOiBmdW5jdGlvbih1cmwpCiAgICAgewotICAgICAgICByZXR1
cm4gdGhpcy5hZGRDaGlsZChXZWJJbnNwZWN0b3IubGlua2lmeVVSTCh1cmwpKTsKKyAgICAgICAg
cmV0dXJuIHRoaXMuYWRkQ2hpbGQoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZVJlc3VsdC5saW5raWZ5
RGlzcGxheU5hbWUodXJsKSk7CiAgICAgfSwKIAogICAgIGFkZFVSTHM6IGZ1bmN0aW9uKHVybHMp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCBhZWVhNTY1Li5h
YjE0YTVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTE1
MTcsOSArMTUxNyw4IEBAIFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTCA9IGZ1bmN0aW9u
KHVybCkKICAgICB2YXIgaW5kZXggPSBXZWJJbnNwZWN0b3IubWFpblJlc291cmNlLnVybC5pbmRl
eE9mKGxhc3RQYXRoQ29tcG9uZW50KTsKICAgICBpZiAoaW5kZXggIT09IC0xICYmIGluZGV4ICsg
bGFzdFBhdGhDb21wb25lbnQubGVuZ3RoID09PSBXZWJJbnNwZWN0b3IubWFpblJlc291cmNlLnVy
bC5sZW5ndGgpIHsKICAgICAgICAgdmFyIGJhc2VVUkwgPSBXZWJJbnNwZWN0b3IubWFpblJlc291
cmNlLnVybC5zdWJzdHJpbmcoMCwgaW5kZXgpOwotICAgICAgICBpZiAodXJsLmluZGV4T2YoYmFz
ZVVSTCkgPT09IDApIHsKKyAgICAgICAgaWYgKHVybC5pbmRleE9mKGJhc2VVUkwpID09PSAwKQog
ICAgICAgICAgICAgcmV0dXJuIHVybC5zdWJzdHJpbmcoaW5kZXgpOwotICAgICAgICB9CiAgICAg
fQogCiAgICAgcmV0dXJuIHVybC50cmltVVJMKFdlYkluc3BlY3Rvci5tYWluUmVzb3VyY2UuZG9t
YWluKTsK
</data>
<flag name="review"
          id="35284"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>