<?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>40968</bug_id>
          
          <creation_ts>2010-06-21 22:46:53 -0700</creation_ts>
          <short_desc>Make PendingScript hold a CachedResourceClient open for its lifetime</short_desc>
          <delta_ts>2010-06-25 22:27:56 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>40934</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Gentilcore">tonyg</reporter>
          <assigned_to name="Tony Gentilcore">tonyg</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>241117</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-21 22:46:53 -0700</bug_when>
    <thetext>Make PendingScript hold a CachedResourceClient open for its lifetime</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241123</commentid>
    <comment_count>1</comment_count>
      <attachid>59340</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-21 22:53:30 -0700</bug_when>
    <thetext>Created attachment 59340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241127</commentid>
    <comment_count>2</comment_count>
      <attachid>59340</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-21 22:56:42 -0700</bug_when>
    <thetext>Comment on attachment 59340
Patch

WebCore/html/HTML5ScriptRunner.h:31
 +  #include &quot;CachedScript.h&quot;
Would be better to do this in the .cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241134</commentid>
    <comment_count>3</comment_count>
      <attachid>59340</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-21 23:10:58 -0700</bug_when>
    <thetext>Comment on attachment 59340
Patch

WebCore/html/HTML5ScriptRunner.cpp:57
 +      if (m_parsingBlockingScript.cachedScript() &amp;&amp; m_parsingBlockingScript.watchingForLoad)
I don&apos;t thin we should bother moving watchingForLoad() back to being a direct-access member.  I suspect that PendingScript is only going to be moving more and more towards class-ness.

I&apos;m also not sure it maters. :)

Move the implementation stuff into the cpp, and then I think this is good to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241261</commentid>
    <comment_count>4</comment_count>
      <attachid>59370</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-22 08:30:29 -0700</bug_when>
    <thetext>Created attachment 59370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241367</commentid>
    <comment_count>5</comment_count>
      <attachid>59370</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-22 11:51:59 -0700</bug_when>
    <thetext>Comment on attachment 59370
Patch

LGTM!  Note, no need for argument names when they don&apos;t add anything ( 78         void setCachedScript(CachedScript* cachedScript);
)

No need to change it here though.  We really need you to have commit-bit so nits are easier to fix on landing. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241370</commentid>
    <comment_count>6</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-22 11:53:52 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 59370 [details])
&gt; LGTM!  Note, no need for argument names when they don&apos;t add anything ( 78         void setCachedScript(CachedScript* cachedScript);
&gt; )

I think this is the second time I&apos;ve done that. So I&apos;ll put together a style-nit patch to fix those problems in WebCore/html/HTML5*

&gt; 
&gt; No need to change it here though.  We really need you to have commit-bit so nits are easier to fix on landing. :)

Paperwork is in the mail :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241537</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-22 16:47:06 -0700</bug_when>
    <thetext>Committed r61638: &lt;http://trac.webkit.org/changeset/61638&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241563</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-22 17:36:03 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/61638 might have broken Qt Linux Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/61640
http://trac.webkit.org/changeset/61638
http://trac.webkit.org/changeset/61639</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241571</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-22 17:50:03 -0700</bug_when>
    <thetext>I think this caused 2 test cases to crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241582</commentid>
    <comment_count>10</comment_count>
      <attachid>59455</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-22 18:24:35 -0700</bug_when>
    <thetext>Created attachment 59455
Rollback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241583</commentid>
    <comment_count>11</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-22 18:26:29 -0700</bug_when>
    <thetext>Rollback tested by building and running http/tests/security/frame-loading-via-document-write.html on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241586</commentid>
    <comment_count>12</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-22 18:30:50 -0700</bug_when>
    <thetext>reopening for rollback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241588</commentid>
    <comment_count>13</comment_count>
      <attachid>59455</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-22 18:36:08 -0700</bug_when>
    <thetext>Comment on attachment 59455
Rollback

ChangeLogs are append-only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241591</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-22 18:41:57 -0700</bug_when>
    <thetext>Committed r61646: &lt;http://trac.webkit.org/changeset/61646&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241592</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-22 18:42:28 -0700</bug_when>
    <thetext>Rolled out in above commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241772</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-23 02:23:26 -0700</bug_when>
    <thetext>Sorry Tony.  I just renamed everything under the sun.  :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242288</commentid>
    <comment_count>17</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-06-23 21:57:06 -0700</bug_when>
    <thetext>We happened to pick up r61638 in one of our internal builds before we noticed that it was rolled out.  It was causing crashes in Safari too.  I spent some time debugging and tracked it down to PendingScript’s lack of a copy constructor and assignment operator.  The fact that HTMLScriptRunner::executePendingScript clears m_parsingBlockingScript by doing:

    m_parsingBlockingScript = PendingScript();

combined with the fact that PendingScript::setCachedScript unregisters / registers the PendingScript as a client of the CachedScript results in PendingScript instances sticking around as clients of CachedScripts even after they’re deleted, since they never have an opportunity to unregister themselves as a client.

A trivial fix for that would be to add a clear method to PendingScript that uses setCachedScript(0) to clear the m_cachedScript member and just zeroes the other members, and then to adopt .clear() in place of the assignment operator above.  Updating the class to inherit from Noncopyable will also avoid this mistake from being repeated.

Hope that helps!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242289</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-23 22:02:45 -0700</bug_when>
    <thetext>Thanks Mark.  That&apos;s very helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242800</commentid>
    <comment_count>19</comment_count>
      <attachid>59722</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-24 20:56:09 -0700</bug_when>
    <thetext>Created attachment 59722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242802</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-24 21:01:38 -0700</bug_when>
    <thetext>Attachment 59722 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/ChangeLog:13:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242803</commentid>
    <comment_count>21</comment_count>
      <attachid>59722</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-24 21:02:04 -0700</bug_when>
    <thetext>Comment on attachment 59722
Patch

WebCore/ChangeLog:14
 +          No new tests because making a CachedResource purse itself is not
purge

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242805</commentid>
    <comment_count>22</comment_count>
      <attachid>59725</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-24 21:04:04 -0700</bug_when>
    <thetext>Created attachment 59725
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243061</commentid>
    <comment_count>23</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-25 10:10:33 -0700</bug_when>
    <thetext>Is the crash also untestable, or only the original fix isn&apos;t?

We really need better testing hooks for WebCore resource cache. It&apos;s such a large and important area of code, and almost untested!

Can a layoutTestController method be added that would make this testable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243072</commentid>
    <comment_count>24</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-25 10:44:12 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Is the crash also untestable, or only the original fix isn&apos;t?

The crash showed up on two layout tests, so it is tested.

This was landed without the CQ, the crashes showed up, and it was rolled back just a few revisions later. It was kind of a strange fluke that the nightly was cut in between the landing and the rollback.

&gt; 
&gt; We really need better testing hooks for WebCore resource cache. It&apos;s such a large and important area of code, and almost untested!

Totally agreed. It is scary.

&gt; 
&gt; Can a layoutTestController method be added that would make this testable?

Good idea. I think a method that purges all purgeable buffers would be perfect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243092</commentid>
    <comment_count>25</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-25 11:27:39 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; &gt; Can a layoutTestController method be added that would make this testable?
&gt; 
&gt; Good idea. I think a method that purges all purgeable buffers would be perfect.

Woh, that would be useful!  We should at least file a bug for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243096</commentid>
    <comment_count>26</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-25 11:32:24 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; &gt; Can a layoutTestController method be added that would make this testable?
&gt; &gt; 
&gt; &gt; Good idea. I think a method that purges all purgeable buffers would be perfect.
&gt; 
&gt; Woh, that would be useful!  We should at least file a bug for that.

https://bugs.webkit.org/show_bug.cgi?id=41219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243325</commentid>
    <comment_count>27</comment_count>
      <attachid>59725</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-25 22:27:49 -0700</bug_when>
    <thetext>Comment on attachment 59725
Patch for landing

Clearing flags on attachment: 59725

Committed r61940: &lt;http://trac.webkit.org/changeset/61940&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243326</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-25 22:27:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59340</attachid>
            <date>2010-06-21 22:53:30 -0700</date>
            <delta_ts>2010-06-22 08:30:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40968-20100621225329.patch</filename>
            <type>text/plain</type>
            <size>14553</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmNlYzRjMmIyODkxYjI2NDlhYjZlOGFkNGJjYWQ3ZTBlMzE1Y2RiNS4uMmY5ZTNkNjEyMzE4OTRk
NDNhYTIxZGQ1YTYxN2NmOTRlNzk3Y2QwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0wNi0yMSAgVG9u
eSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgUGVuZGluZ1NjcmlwdCBob2xkIGEgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgb3BlbiBmb3IgaXRzIGxpZmV0aW1lCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDk2OAorCisgICAgICAgIFRoaXMgcmVw
bGFjZXMgdGhlIG1lY2hhbmlzbSBpbnRyb2R1Y2VkIGluIHI2MTM3NCB3aXRoIGEgc2ltcGxlcgor
ICAgICAgICBhcHByb2FjaCBmcm9tIHByZXZlbnRpbmcgdW5leHBlY3RlZCBwdXJnZXM7IGFsd2F5
cyBrZWVwIGEgY2xpZW50IG9wZW4uCisgICAgICAgIFRoaXMgd2lsbCBhcHByb2FjaCB3aWxsIGFs
bG93IGRlZmVycmVkIHNjcmlwdHMgdG8gYWRkIGEgY2xpZW50IGFmdGVyCisgICAgICAgIHRoZSBy
ZXNvdXJjZSBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gbG9hZGVkIHdpdGhvdXQgaGF2aW5nIHRvIHdv
cnJ5IGFib3V0CisgICAgICAgIHRoZSBidWZmZXIgYmVpbmcgcHVyZ2VkIGluIHRoZSBtZWFudGlt
ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBtYWtpbmcgYSBDYWNoZWRSZXNvdXJj
ZSBwdXJnZSBpdHNlbGYgaXMgbm90CisgICAgICAgIHRlc3RhYmxlIGZyb20gYSBMYXlvdXRUZXN0
LgorCisgICAgICAgICogaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUw1RG9jdW1lbnRQYXJzZXI6OndhdGNoRm9yTG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MNURvY3VtZW50UGFyc2VyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogaHRt
bC9IVE1MNVNjcmlwdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1
bm5lcjo6fkhUTUw1U2NyaXB0UnVubmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0
UnVubmVyOjpzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
NVNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5nU2NyaXB0UmVhZHkpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUw1U2NyaXB0UnVubmVyOjp3YXRjaEZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTDVTY3JpcHRSdW5uZXI6OnN0b3BXYXRjaGluZ0ZvckxvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0Zv
clN0eWxlc2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjpyZXF1
ZXN0U2NyaXB0KToKKyAgICAgICAgKiBodG1sL0hUTUw1U2NyaXB0UnVubmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6UGVuZGluZ1Njcmlw
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6
flBlbmRpbmdTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OlBl
bmRpbmdTY3JpcHQ6OnNldENhY2hlZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNj
cmlwdFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6Y2FjaGVkU2NyaXB0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUw1U2NyaXB0UnVubmVyOjpQZW5kaW5nU2NyaXB0Ojpub3RpZnlGaW5pc2hlZCk6Cisg
ICAgICAgICogaHRtbC9IVE1MNVNjcmlwdFJ1bm5lckhvc3QuaDoKKwogMjAxMC0wNi0yMSAgQ2hy
aXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIE5vIHJldmlldy4g
UVQgYnVpbGQgZml4IGFnYWluLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1l
bnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4
IDg5Y2NmNTc5MDkzYzEwOTk5YzA5NTkyNTk4MjQ5NGE5YTdkYmJhNzUuLmYwYTA5YjdjNWU4Yzcy
MjBkYzRiNTAxODQ4NWFjMjUwNzgyN2NlZWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
NURvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNl
ci5jcHAKQEAgLTM3OSw2ICszNzksMTAgQEAgdm9pZCBIVE1MNURvY3VtZW50UGFyc2VyOjpyZXN1
bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKQogCiB2b2lkIEhUTUw1RG9jdW1lbnRQYXJz
ZXI6OndhdGNoRm9yTG9hZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkU2NyaXB0KQogeworICAgIEFT
U0VSVCghY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpKTsKKyAgICAvLyBhZGRDbGllbnQgd291bGQg
Y2FsbCBub3RpZnlGaW5pc2hlZCBpZiB0aGUgbG9hZCB3ZXJlIGNvbXBsZXRlLgorICAgIC8vIENh
bGxlcnMgZG8gbm90IGV4cGVjdCB0byBiZSByZS1lbnRlcmVkIGZyb20gdGhpcyBjYWxsLCBzbyB0
aGV5IHNob3VsZAorICAgIC8vIG5vdCBhbiBhbHJlYWR5LWxvYWRlZCBDYWNoZWRSZXNvdXJjZS4K
ICAgICBjYWNoZWRTY3JpcHQtPmFkZENsaWVudCh0aGlzKTsKIH0KIApAQCAtNDA1LDE0ICs0MDks
NiBAQCB2b2lkIEhUTUw1RG9jdW1lbnRQYXJzZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSkKIAogdm9pZCBIVE1MNURvY3VtZW50UGFyc2VyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7Ci0gICAgLy8gSWdu
b3JlIGNhbGxzIHVubGVzcyB3ZSBoYXZlIGEgc2NyaXB0IGJsb2NraW5nIHRoZSBwYXJzZXIgd2Fp
dGluZwotICAgIC8vIGZvciBpdHMgb3duIGxvYWQuICBPdGhlcndpc2UgdGhpcyBtYXkgYmUgYSBs
b2FkIGNhbGxiYWNrIGZyb20KLSAgICAvLyBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50IGJlY2F1
c2UgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgY2FjaGUuCi0gICAgLy8gSFRNTDVTY3Jp
cHRSdW5uZXIgbWF5IG5vdCBiZSByZWFkeSB0byBoYW5kbGUgcnVubmluZyB0aGF0IHNjcmlwdCB5
ZXQuCi0gICAgaWYgKCFtX3NjcmlwdFJ1bm5lci0+aGFzU2NyaXB0c1dhaXRpbmdGb3JMb2FkKCkp
IHsKLSAgICAgICAgQVNTRVJUKG1fc2NyaXB0UnVubmVyLT5pblNjcmlwdEV4ZWN1dGlvbigpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBBU1NFUlQoIW1fc2NyaXB0UnVubmVyLT5pblNj
cmlwdEV4ZWN1dGlvbigpKTsKICAgICBBU1NFUlQobV90cmVlQ29uc3RydWN0b3ItPmlzUGF1c2Vk
KCkpOwogICAgIC8vIE5vdGU6IFdlIG9ubHkgZXZlciB3YWl0IG9uIG9uZSBzY3JpcHQgYXQgYSB0
aW1lLCBzbyB3ZSBhbHdheXMga25vdyB0aGlzCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRN
TDVTY3JpcHRSdW5uZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmNwcApp
bmRleCA0MGY0NDY1NDQwZTBlODY5N2RjYzcyODMwMDUwZDFmNjVlZDg2NjY4Li5hMzUxODhmY2Uw
ZGNhZmU1MmFmNTU0ZDBmMTJlOTg4MzQ0MWUwMGI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTDVTY3JpcHRSdW5uZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5l
ci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSFRNTDVTY3JpcHRSdW5uZXI6OkhUTUw1U2NyaXB0UnVu
bmVyKERvY3VtZW50KiBkb2N1bWVudCwgSFRNTDVTY3JpcHRSdW5uZXJIb3N0KgogSFRNTDVTY3Jp
cHRSdW5uZXI6On5IVE1MNVNjcmlwdFJ1bm5lcigpCiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCB3
ZSBiZSBwYXNzZWQgYSAiZG9uZSBsb2FkaW5nL3BhcnNpbmciIGNhbGxiYWNrIHNvb25lciB0aGFu
IGRlc3RydWN0aW9uPwotICAgIGlmIChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3Jp
cHQgJiYgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkKCkpCisgICAgaWYg
KG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpICYmIG1fcGFyc2luZ0Jsb2Nr
aW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCkKICAgICAgICAgc3RvcFdhdGNoaW5nRm9yTG9hZCht
X3BhcnNpbmdCbG9ja2luZ1NjcmlwdCk7CiB9CiAKQEAgLTc5LDEwICs3OSwxMCBAQCBpbmxpbmUg
UGFzc1JlZlB0cjxFdmVudD4gY3JlYXRlU2NyaXB0RXJyb3JFdmVudCgpCiAKIFNjcmlwdFNvdXJj
ZUNvZGUgSFRNTDVTY3JpcHRSdW5uZXI6OnNvdXJjZUZyb21QZW5kaW5nU2NyaXB0KGNvbnN0IFBl
bmRpbmdTY3JpcHQmIHNjcmlwdCwgYm9vbCYgZXJyb3JPY2N1cnJlZCkKIHsKLSAgICBpZiAoc2Ny
aXB0LmNhY2hlZFNjcmlwdCkgewotICAgICAgICBlcnJvck9jY3VycmVkID0gc2NyaXB0LmNhY2hl
ZFNjcmlwdC0+ZXJyb3JPY2N1cnJlZCgpOwotICAgICAgICBBU1NFUlQoc2NyaXB0LmNhY2hlZFNj
cmlwdC0+aXNMb2FkZWQoKSk7Ci0gICAgICAgIHJldHVybiBTY3JpcHRTb3VyY2VDb2RlKHNjcmlw
dC5jYWNoZWRTY3JpcHQuZ2V0KCkpOworICAgIGlmIChzY3JpcHQuY2FjaGVkU2NyaXB0KCkpIHsK
KyAgICAgICAgZXJyb3JPY2N1cnJlZCA9IHNjcmlwdC5jYWNoZWRTY3JpcHQoKS0+ZXJyb3JPY2N1
cnJlZCgpOworICAgICAgICBBU1NFUlQoc2NyaXB0LmNhY2hlZFNjcmlwdCgpLT5pc0xvYWRlZCgp
KTsKKyAgICAgICAgcmV0dXJuIFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LmNhY2hlZFNjcmlwdCgp
KTsKICAgICB9CiAgICAgZXJyb3JPY2N1cnJlZCA9IGZhbHNlOwogICAgIHJldHVybiBTY3JpcHRT
b3VyY2VDb2RlKHNjcmlwdC5lbGVtZW50LT50ZXh0Q29udGVudCgpLCBkb2N1bWVudFVSTEZvclNj
cmlwdEV4ZWN1dGlvbihtX2RvY3VtZW50KSwgc2NyaXB0LnN0YXJ0aW5nTGluZU51bWJlcik7CkBA
IC05Myw3ICs5Myw3IEBAIGJvb2wgSFRNTDVTY3JpcHRSdW5uZXI6OmlzUGVuZGluZ1NjcmlwdFJl
YWR5KGNvbnN0IFBlbmRpbmdTY3JpcHQmIHNjcmlwdCkKICAgICBtX2hhc1NjcmlwdHNXYWl0aW5n
Rm9yU3R5bGVzaGVldHMgPSAhbV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCk7CiAg
ICAgaWYgKG1faGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChzY3JpcHQuY2FjaGVkU2NyaXB0ICYmICFzY3JpcHQuY2FjaGVkU2Ny
aXB0LT5pc0xvYWRlZCgpKQorICAgIGlmIChzY3JpcHQuY2FjaGVkU2NyaXB0KCkgJiYgIXNjcmlw
dC5jYWNoZWRTY3JpcHQoKS0+aXNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IHJldHVybiB0cnVlOwogfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgSFRNTDVTY3JpcHRSdW5u
ZXI6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0KCkKICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNv
ZGUgPSBzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCwgZXJy
b3JPY2N1cnJlZCk7CiAKICAgICAvLyBTdG9wIHdhdGNoaW5nIGxvYWRzIGJlZm9yZSBleGVjdXRl
U2NyaXB0IHRvIHByZXZlbnQgcmVjdXJzaW9uIGlmIHRoZSBzY3JpcHQgcmVsb2FkcyBpdHNlbGYu
Ci0gICAgaWYgKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCAmJiBtX3BhcnNp
bmdCbG9ja2luZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQoKSkKKyAgICBpZiAobV9wYXJzaW5nQmxv
Y2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkgJiYgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQud2F0
Y2hpbmdGb3JMb2FkKQogICAgICAgICBzdG9wV2F0Y2hpbmdGb3JMb2FkKG1fcGFyc2luZ0Jsb2Nr
aW5nU2NyaXB0KTsKIAogICAgIC8vIENsZWFyIHRoZSBwZW5kaW5nIHNjcmlwdCBiZWZvcmUgcG9z
c2libGUgcmVudHJhbmN5IGZyb20gZXhlY3V0ZVNjcmlwdCgpCkBAIC0xNDEsMzAgKzE0MSwxOCBA
QCB2b2lkIEhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0KEVsZW1lbnQqIGVsZW1lbnQs
IGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmCiAgICAgbV9ob3N0LT5leGVjdXRlU2NyaXB0KHNvdXJj
ZUNvZGUpOwogfQogCi1ib29sIEhUTUw1U2NyaXB0UnVubmVyOjpoYXNTY3JpcHRzV2FpdGluZ0Zv
ckxvYWQoKSBjb25zdAotewotICAgIC8vIFdlJ3JlIG9ubHkgYWN0dWFsbHkgd2FpdGluZyBmb3Ig
YSBsb2FkLiAgVGhpcyBhbGxvd3MgdXMgdG8gaWdub3JlIGxvYWQKLSAgICAvLyBjYWxsYmFja3Mg
d2hlbiBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50IGNhbGxzIG5vdGlmeUZpbmlzaGVkIGJlY2F1
c2UKLSAgICAvLyBvZiBhIGNhY2hlIGhpdCAobm90IGJlY2F1c2Ugb2YgYSBsb2FkIHdlIHdlcmUg
c2V0IHVwIHRvIHdhaXQgZm9yKS4KLSAgICByZXR1cm4gbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQu
d2F0Y2hpbmdGb3JMb2FkU3RhdGUgPT0gUGVuZGluZ1NjcmlwdDo6V2F0Y2hpbmdGb3JMb2FkOwot
fQotCiB2b2lkIEhUTUw1U2NyaXB0UnVubmVyOjp3YXRjaEZvckxvYWQoUGVuZGluZ1NjcmlwdCYg
cGVuZGluZ1NjcmlwdCkKIHsKLSAgICBBU1NFUlQoIXBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JM
b2FkKCkpOwotICAgIC8vIENhY2hlZFJlc291cmNlOjphZGRDbGllbnQgd2lsbCBjYWxsIG5vdGlm
eUZpbmlzaGVkIGlmIHRoZSBsb2FkIGlzIGFscmVhZHkKLSAgICAvLyBjb21wbGV0ZS4gIFdlIHNl
dCB3YXRjaGluZ0ZvckxvYWRTdGF0ZSB0byBSZWdpc3RlcmluZ0ZvcldhdGNoIHNvIHRoYXQgd2UK
LSAgICAvLyBrbm93IHRvIGlnbm9yZSBhbnkgbm90aWZ5RmluaXNoZWQgY2FsbCBkdXJpbmcgYWRk
Q2xpZW50LgotICAgIHBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkU3RhdGUgPSBQZW5kaW5n
U2NyaXB0OjpSZWdpc3RlcmluZ0ZvcldhdGNoOwotICAgIG1faG9zdC0+d2F0Y2hGb3JMb2FkKHBl
bmRpbmdTY3JpcHQuY2FjaGVkU2NyaXB0LmdldCgpKTsKLSAgICBwZW5kaW5nU2NyaXB0LndhdGNo
aW5nRm9yTG9hZFN0YXRlID0gUGVuZGluZ1NjcmlwdDo6V2F0Y2hpbmdGb3JMb2FkOworICAgIEFT
U0VSVCghcGVuZGluZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQpOworICAgIG1faG9zdC0+d2F0Y2hG
b3JMb2FkKHBlbmRpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkpOworICAgIHBlbmRpbmdTY3JpcHQu
d2F0Y2hpbmdGb3JMb2FkID0gdHJ1ZTsKIH0KIAogdm9pZCBIVE1MNVNjcmlwdFJ1bm5lcjo6c3Rv
cFdhdGNoaW5nRm9yTG9hZChQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQogewotICAgIEFT
U0VSVChwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCgpKTsKLSAgICBtX2hvc3QtPnN0b3BX
YXRjaGluZ0ZvckxvYWQocGVuZGluZ1NjcmlwdC5jYWNoZWRTY3JpcHQuZ2V0KCkpOwotICAgIHBl
bmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkU3RhdGUgPSBQZW5kaW5nU2NyaXB0OjpOb3RXYXRj
aGluZ0ZvckxvYWQ7CisgICAgQVNTRVJUKHBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkKTsK
KyAgICBtX2hvc3QtPnN0b3BXYXRjaGluZ0ZvckxvYWQocGVuZGluZ1NjcmlwdC5jYWNoZWRTY3Jp
cHQoKSk7CisgICAgcGVuZGluZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQgPSBmYWxzZTsKIH0KIAog
Ly8gVGhpcyBmdW5jdGlvbiBzaG91bGQgbWF0Y2ggMTAuMi41LjExICJBbiBlbmQgdGFnIHdob3Nl
IHRhZyBuYW1lIGlzICdzY3JpcHQnIgpAQCAtMjA0LDE0ICsxOTIsMTAgQEAgYm9vbCBIVE1MNVNj
cmlwdFJ1bm5lcjo6ZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKQogCiBib29sIEhUTUw1
U2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkKENhY2hlZFJlc291cmNl
KiBjYWNoZWRTY3JpcHQpCiB7Ci0gICAgLy8gQ2FsbGVycyBzaG91bGQgY2hlY2sgaGFzU2NyaXB0
c1dhaXRpbmdGb3JMb2FkKCkgYmVmb3JlIGNhbGxpbmcKLSAgICAvLyB0byBwcmV2ZW50IHBhcnNl
ciBvciBzY3JpcHQgcmUtZW50cnkgZHVyaW5nIGR1ZSB0bwotICAgIC8vIENhY2hlZFJlc291cmNl
OjphZGRDbGllbnQgY2FsbGluZyBub3RpZnlGaW5pc2hlZCBvbiBjYWNoZS1oaXRzLgotICAgIEFT
U0VSVChoYXNTY3JpcHRzV2FpdGluZ0ZvckxvYWQoKSk7CiAgICAgQVNTRVJUKCFtX3NjcmlwdE5l
c3RpbmdMZXZlbCk7CiAgICAgQVNTRVJUKGhhdmVQYXJzaW5nQmxvY2tpbmdTY3JpcHQoKSk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChjYWNoZWRTY3JpcHQsIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNh
Y2hlZFNjcmlwdCA9PSBjYWNoZWRTY3JpcHQpOwotICAgIEFTU0VSVChtX3BhcnNpbmdCbG9ja2lu
Z1NjcmlwdC5jYWNoZWRTY3JpcHQtPmlzTG9hZGVkKCkpOworICAgIEFTU0VSVF9VTlVTRUQoY2Fj
aGVkU2NyaXB0LCBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQoKSA9PSBjYWNo
ZWRTY3JpcHQpOworICAgIEFTU0VSVChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3Jp
cHQoKS0+aXNMb2FkZWQoKSk7CiAgICAgcmV0dXJuIGV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3Jp
cHRzKCk7CiB9CiAKQEAgLTIxOSw3ICsyMDMsNyBAQCBib29sIEhUTUw1U2NyaXB0UnVubmVyOjpl
eGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpCiB7CiAgICAgLy8gQ2FsbGVycyBz
aG91bGQgY2hlY2sgaGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpIGJlZm9yZSBjYWxs
aW5nCiAgICAgLy8gdG8gcHJldmVudCBwYXJzZXIgb3Igc2NyaXB0IHJlLWVudHJ5IGR1cmluZyA8
L3N0eWxlPiBwYXJzaW5nLgotICAgIEFTU0VSVChoYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hl
ZXRzKCkpOworICAgIEFTU0VSVChtX2hhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMpOwog
ICAgIEFTU0VSVCghbV9zY3JpcHROZXN0aW5nTGV2ZWwpOwogICAgIEFTU0VSVChtX2RvY3VtZW50
LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSk7CiAgICAgcmV0dXJuIGV4ZWN1dGVQYXJzaW5nQmxv
Y2tpbmdTY3JpcHRzKCk7CkBAIC0yNDMsMTYgKzIyNywxMyBAQCB2b2lkIEhUTUw1U2NyaXB0UnVu
bmVyOjpyZXF1ZXN0U2NyaXB0KEVsZW1lbnQqIHNjcmlwdCkKICAgICAgICAgbm90SW1wbGVtZW50
ZWQoKTsgLy8gRGlzcGF0Y2ggZXJyb3IgZXZlbnQuCiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0ID0gY2FjaGVkU2NyaXB0Owot
Ci0gICAgLy8gQWx3YXlzIGNhbGwgd2F0Y2hGb3JMb2FkLCBldmVuIGlmIHRoZSBzY3JpcHQgaXMg
YWxyZWFkeSBsb2FkZWQuCi0gICAgLy8gQ2FjaGVkUmVzb3VyY2UgbWF5IHB1cmdlIGl0cyBkYXRh
IGlmIGl0IGhhcyBubyBjbGllbnRzLCB3aGljaCB3b3VsZCBjYXVzZQotICAgIC8vIGxhdGVyIHNj
cmlwdCBleGVjdXRpb24gdG8gZmFpbC4gIHdhdGNoRm9yTG9hZCBzZXRzIG1fcGFyc2luZ0Jsb2Nr
aW5nU2NyaXB0Ci0gICAgLy8gdG8gdGhlIFJlZ2lzdGVyaW5nRm9yV2F0Y2ggc3RhdGUgc28gd2Ug
a25vdyB0byBpZ25vcmUgYW55Ci0gICAgLy8gZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZCBj
YWxsYmFja3MgZHVyaW5nIHRoZSB3YXRjaEZvckxvYWQgY2FsbC4KLSAgICB3YXRjaEZvckxvYWQo
bV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQpOwotICAgIC8vIENhbGxlcnMgd2lsbCBhdHRlbXB0IHRv
IHJ1biB0aGUgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQgaWYgcG9zc2libGUKLSAgICAvLyBiZWZv
cmUgcmV0dXJuaW5nIGNvbnRyb2wgdG8gdGhlIHBhcnNlci4KKyAgICBtX3BhcnNpbmdCbG9ja2lu
Z1NjcmlwdC5zZXRDYWNoZWRTY3JpcHQoY2FjaGVkU2NyaXB0KTsKKworICAgIC8vIFdlIG9ubHkg
Y2FyZSBhYm91dCBhIGxvYWQgY2FsbGJhY2sgaWYgY2FjaGVkU2NyaXB0IGlzIG5vdCBhbHJlYWR5
CisgICAgLy8gaW4gdGhlIGNhY2hlLiAgQ2FsbGVycyB3aWxsIGF0dGVtcHQgdG8gcnVuIHRoZSBt
X3BhcnNpbmdCbG9ja2luZ1NjcmlwdAorICAgIC8vIGlmIHBvc3NpYmxlIGJlZm9yZSByZXR1cm5p
bmcgY29udHJvbCB0byB0aGUgcGFyc2VyLgorICAgIGlmICghbV9wYXJzaW5nQmxvY2tpbmdTY3Jp
cHQuY2FjaGVkU2NyaXB0KCktPmlzTG9hZGVkKCkpCisgICAgICAgIHdhdGNoRm9yTG9hZChtX3Bh
cnNpbmdCbG9ja2luZ1NjcmlwdCk7CiB9CiAKIC8vIFRoaXMgbWV0aG9kIGlzIG1lYW50IHRvIG1h
dGNoIHRoZSBIVE1MNSBkZWZpbml0aW9uIG9mICJydW5uaW5nIGEgc2NyaXB0IgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmggYi9XZWJDb3JlL2h0bWwvSFRNTDVT
Y3JpcHRSdW5uZXIuaAppbmRleCAzMTA5NzIwOTZmYjZiMjhiMjg5NjEzMWU1NDRjOTVmNmI3ZTg1
MWVlLi5mZTMzZDFiYjBkNDdmZDI0OWFmNGRiMGI0YWQ2YmUxNGI2MWFjYmFhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TDVTY3JpcHRSdW5uZXIuaApAQCAtMjgsMTMgKzI4LDEzIEBACiAKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5j
bHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
YWNoZWRSZXNvdXJjZUNsaWVudDsKLWNsYXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwpAQCAtNDgsNDMgKzQ4LDU5IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFByb2Nlc3NlcyB0aGUgcGFzc2VkIGluIHNjcmlwdCBhbmQgYW55IHBlbmRp
bmcgc2NyaXB0cyBpZiBwb3NzaWJsZS4KICAgICBib29sIGV4ZWN1dGUoUGFzc1JlZlB0cjxFbGVt
ZW50PiBzY3JpcHRUb1Byb2Nlc3MsIGludCBzY3JpcHRTdGFydExpbmUpOwotCi0gICAgYm9vbCBo
YXNTY3JpcHRzV2FpdGluZ0ZvckxvYWQoKSBjb25zdDsKKyAgICAvLyBQcm9jZXNzZXMgYW55IHBl
bmRpbmcgc2NyaXB0cy4KICAgICBib29sIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQoQ2Fj
aGVkUmVzb3VyY2UqKTsKLQogICAgIGJvb2wgaGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0
cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0czsgfQog
ICAgIGJvb2wgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKIAogICAgIGJv
b2wgaW5TY3JpcHRFeGVjdXRpb24oKSB7IHJldHVybiAhIW1fc2NyaXB0TmVzdGluZ0xldmVsOyB9
CiAKIHByaXZhdGU6Ci0gICAgc3RydWN0IFBlbmRpbmdTY3JpcHQgewotICAgICAgICAvLyBUaGlz
IHN0YXRlIGNvbnRyb2xzIHdoZXRoZXIgd2UgbmVlZCB0byBkbyBhbnl0aGluZyB3aXRoIHRoaXMg
c2NyaXB0Ci0gICAgICAgIC8vIHdoZW4gd2UgZ2V0IGEgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9y
TG9hZCBjYWxsYmFjay4KLSAgICAgICAgLy8gV2UgaWdub3JlIGNhbGxiYWNrcyBkdXJpbmcgUmVn
aXN0ZXJpbmdGb3JXYXRjaC4KLSAgICAgICAgZW51bSBXYXRjaGluZ0ZvckxvYWRTdGF0ZSB7Ci0g
ICAgICAgICAgICBOb3RXYXRjaGluZ0ZvckxvYWQsCi0gICAgICAgICAgICBSZWdpc3RlcmluZ0Zv
cldhdGNoLAotICAgICAgICAgICAgV2F0Y2hpbmdGb3JMb2FkLAotICAgICAgICB9OwotCisgICAg
Ly8gQSBjb250YWluZXIgZm9yIGFuIGV4dGVybmFsIHNjcmlwdCB3aGljaCBtYXkgYmUgbG9hZGVk
IGFuZCBleGVjdXRlZC4KKyAgICAvLworICAgIC8vIEEgQ2FjaGVkUmVzb3VyY2VIYW5kbGUgYWxv
bmUgZG9lcyBub3QgcHJldmVudCB0aGUgdW5kZXJseWluZyBDYWNoZWRSZXNvdXJjZQorICAgIC8v
IGZyb20gcHVyZ2luZyBpdHMgZGF0YSBidWZmZXIuIFRoaXMgY2xhc3MgaG9sZHMgYSBkdW1teSBj
bGllbnQgb3BlbiBmb3IgaXRzCisgICAgLy8gbGlmZXRpbWUgaW4gb3JkZXIgdG8gZ3VhcmFudGVl
IHRoYXQgdGhlIGRhdGEgYnVmZmVyIHdpbGwgbm90IGJlIHB1cmdlZC4KKyAgICBjbGFzcyBQZW5k
aW5nU2NyaXB0IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKKyAgICBwdWJsaWM6CiAg
ICAgICAgIFBlbmRpbmdTY3JpcHQoKQotICAgICAgICAgICAgOiB3YXRjaGluZ0ZvckxvYWRTdGF0
ZShOb3RXYXRjaGluZ0ZvckxvYWQpCisgICAgICAgICAgICA6IHdhdGNoaW5nRm9yTG9hZChmYWxz
ZSkKICAgICAgICAgICAgICwgc3RhcnRpbmdMaW5lTnVtYmVyKDApCiAgICAgICAgIHsKICAgICAg
ICAgfQogCi0gICAgICAgIGJvb2wgd2F0Y2hpbmdGb3JMb2FkKCkKKyAgICAgICAgflBlbmRpbmdT
Y3JpcHQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9jYWNoZWRTY3JpcHQpCisgICAg
ICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHQtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICAgICAg
fQorCisgICAgICAgIHZvaWQgc2V0Q2FjaGVkU2NyaXB0KENhY2hlZFNjcmlwdCogY2FjaGVkU2Ny
aXB0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9jYWNoZWRTY3JpcHQpCisgICAgICAg
ICAgICAgICAgbV9jYWNoZWRTY3JpcHQtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICAgICAgICAg
IG1fY2FjaGVkU2NyaXB0ID0gY2FjaGVkU2NyaXB0OworICAgICAgICAgICAgaWYgKG1fY2FjaGVk
U2NyaXB0KQorICAgICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0LT5hZGRDbGllbnQodGhpcyk7
CisgICAgICAgIH0KKworICAgICAgICBDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCgpIGNvbnN0
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2NhY2hlZFNjcmlwdC5nZXQoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSopCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB3YXRjaGluZ0ZvckxvYWRTdGF0
ZSAhPSBOb3RXYXRjaGluZ0ZvckxvYWQ7CiAgICAgICAgIH0KIAogICAgICAgICBSZWZQdHI8RWxl
bWVudD4gZWxlbWVudDsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0
PiBjYWNoZWRTY3JpcHQ7Ci0gICAgICAgIFdhdGNoaW5nRm9yTG9hZFN0YXRlIHdhdGNoaW5nRm9y
TG9hZFN0YXRlOworICAgICAgICBib29sIHdhdGNoaW5nRm9yTG9hZDsgLy8gRGlkIHdlIHBhc3Mg
dGhlIGNhY2hlZFNjcmlwdCB0byB0aGUgSFRNTDVTY3JpcHRSdW5uZXJIb3N0LgogICAgICAgICBp
bnQgc3RhcnRpbmdMaW5lTnVtYmVyOyAvLyBPbmx5IHVzZWQgZm9yIGlubGluZSBzY3JpcHQgdGFn
cy4KICAgICAgICAgLy8gSFRNTDUgaGFzIGFuIGlzUmVhZHkgcGFyYW1ldGVyLCBob3dldmVyIGlz
UmVhZHkgZW5kcyB1cCBlcXVpdmFsZW50IHRvCiAgICAgICAgIC8vIG1fZG9jdW1lbnQtPmhhdmVT
dHlsZXNoZWV0c0xvYWRlZCgpICYmIGNhY2hlZFNjcmlwdC0+aXNMb2FkZWQoKQorCisgICAgcHJp
dmF0ZToKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBtX2NhY2hl
ZFNjcmlwdDsKICAgICB9OwogCiAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXJIb3N0LmggYi9XZWJDb3JlL2h0bWwvSFRN
TDVTY3JpcHRSdW5uZXJIb3N0LmgKaW5kZXggNjhmMTAwZTdmYjQyZGNkMzNlMGVlMzhmMTZhOWIx
NDZjNjMzMTE1ZC4uOWE3NzM4NTU1MjM4ODk3MTI3ZTRhZmRmYjJhOTdmYTVkNDY0ZGQwNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVySG9zdC5oCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lckhvc3QuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBI
VE1MNVNjcmlwdFJ1bm5lckhvc3QgewogcHVibGljOgogICAgIHZpcnR1YWwgfkhUTUw1U2NyaXB0
UnVubmVySG9zdCgpIHsgfQogCi0gICAgLy8gSW1wbGVtZW50b3JzIG11c3QgY2FsbCBjYWNoZWRS
ZXNvdXJjZS0+YWRkQ2xpZW50KCkgaW1tZWRpYXRlbHkuCisgICAgLy8gSW1wbGVtZW50b3JzIHNo
b3VsZCBjYWxsIGNhY2hlZFJlc291cmNlLT5hZGRDbGllbnQoKSBoZXJlIG9yIHNvb24gYWZ0ZXIu
CiAgICAgdmlydHVhbCB2b2lkIHdhdGNoRm9yTG9hZChDYWNoZWRSZXNvdXJjZSopID0gMDsKICAg
ICAvLyBJbXBsZW1lbnRvcnMgbXVzdCBjYWxsIGNhY2hlZFJlc291cmNlLT5yZW1vdmVDbGllbnQo
KSBpbW1lZGlhdGVseS4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcFdhdGNoaW5nRm9yTG9hZChDYWNo
ZWRSZXNvdXJjZSopID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59370</attachid>
            <date>2010-06-22 08:30:29 -0700</date>
            <delta_ts>2010-06-23 02:22:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40968-20100622083028.patch</filename>
            <type>text/plain</type>
            <size>14548</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmNlYzRjMmIyODkxYjI2NDlhYjZlOGFkNGJjYWQ3ZTBlMzE1Y2RiNS4uMmY5ZTNkNjEyMzE4OTRk
NDNhYTIxZGQ1YTYxN2NmOTRlNzk3Y2QwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0wNi0yMSAgVG9u
eSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgUGVuZGluZ1NjcmlwdCBob2xkIGEgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgb3BlbiBmb3IgaXRzIGxpZmV0aW1lCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDk2OAorCisgICAgICAgIFRoaXMgcmVw
bGFjZXMgdGhlIG1lY2hhbmlzbSBpbnRyb2R1Y2VkIGluIHI2MTM3NCB3aXRoIGEgc2ltcGxlcgor
ICAgICAgICBhcHByb2FjaCBmcm9tIHByZXZlbnRpbmcgdW5leHBlY3RlZCBwdXJnZXM7IGFsd2F5
cyBrZWVwIGEgY2xpZW50IG9wZW4uCisgICAgICAgIFRoaXMgd2lsbCBhcHByb2FjaCB3aWxsIGFs
bG93IGRlZmVycmVkIHNjcmlwdHMgdG8gYWRkIGEgY2xpZW50IGFmdGVyCisgICAgICAgIHRoZSBy
ZXNvdXJjZSBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gbG9hZGVkIHdpdGhvdXQgaGF2aW5nIHRvIHdv
cnJ5IGFib3V0CisgICAgICAgIHRoZSBidWZmZXIgYmVpbmcgcHVyZ2VkIGluIHRoZSBtZWFudGlt
ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBtYWtpbmcgYSBDYWNoZWRSZXNvdXJj
ZSBwdXJnZSBpdHNlbGYgaXMgbm90CisgICAgICAgIHRlc3RhYmxlIGZyb20gYSBMYXlvdXRUZXN0
LgorCisgICAgICAgICogaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUw1RG9jdW1lbnRQYXJzZXI6OndhdGNoRm9yTG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MNURvY3VtZW50UGFyc2VyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogaHRt
bC9IVE1MNVNjcmlwdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1
bm5lcjo6fkhUTUw1U2NyaXB0UnVubmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0
UnVubmVyOjpzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
NVNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5nU2NyaXB0UmVhZHkpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUw1U2NyaXB0UnVubmVyOjp3YXRjaEZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTDVTY3JpcHRSdW5uZXI6OnN0b3BXYXRjaGluZ0ZvckxvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0Zv
clN0eWxlc2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjpyZXF1
ZXN0U2NyaXB0KToKKyAgICAgICAgKiBodG1sL0hUTUw1U2NyaXB0UnVubmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6UGVuZGluZ1Njcmlw
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6
flBlbmRpbmdTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OlBl
bmRpbmdTY3JpcHQ6OnNldENhY2hlZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNj
cmlwdFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6Y2FjaGVkU2NyaXB0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUw1U2NyaXB0UnVubmVyOjpQZW5kaW5nU2NyaXB0Ojpub3RpZnlGaW5pc2hlZCk6Cisg
ICAgICAgICogaHRtbC9IVE1MNVNjcmlwdFJ1bm5lckhvc3QuaDoKKwogMjAxMC0wNi0yMSAgQ2hy
aXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIE5vIHJldmlldy4g
UVQgYnVpbGQgZml4IGFnYWluLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1l
bnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4
IDg5Y2NmNTc5MDkzYzEwOTk5YzA5NTkyNTk4MjQ5NGE5YTdkYmJhNzUuLmYwYTA5YjdjNWU4Yzcy
MjBkYzRiNTAxODQ4NWFjMjUwNzgyN2NlZWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
NURvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNl
ci5jcHAKQEAgLTM3OSw2ICszNzksMTAgQEAgdm9pZCBIVE1MNURvY3VtZW50UGFyc2VyOjpyZXN1
bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKQogCiB2b2lkIEhUTUw1RG9jdW1lbnRQYXJz
ZXI6OndhdGNoRm9yTG9hZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkU2NyaXB0KQogeworICAgIEFT
U0VSVCghY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpKTsKKyAgICAvLyBhZGRDbGllbnQgd291bGQg
Y2FsbCBub3RpZnlGaW5pc2hlZCBpZiB0aGUgbG9hZCB3ZXJlIGNvbXBsZXRlLgorICAgIC8vIENh
bGxlcnMgZG8gbm90IGV4cGVjdCB0byBiZSByZS1lbnRlcmVkIGZyb20gdGhpcyBjYWxsLCBzbyB0
aGV5IHNob3VsZAorICAgIC8vIG5vdCBhbiBhbHJlYWR5LWxvYWRlZCBDYWNoZWRSZXNvdXJjZS4K
ICAgICBjYWNoZWRTY3JpcHQtPmFkZENsaWVudCh0aGlzKTsKIH0KIApAQCAtNDA1LDE0ICs0MDks
NiBAQCB2b2lkIEhUTUw1RG9jdW1lbnRQYXJzZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSkKIAogdm9pZCBIVE1MNURvY3VtZW50UGFyc2VyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7Ci0gICAgLy8gSWdu
b3JlIGNhbGxzIHVubGVzcyB3ZSBoYXZlIGEgc2NyaXB0IGJsb2NraW5nIHRoZSBwYXJzZXIgd2Fp
dGluZwotICAgIC8vIGZvciBpdHMgb3duIGxvYWQuICBPdGhlcndpc2UgdGhpcyBtYXkgYmUgYSBs
b2FkIGNhbGxiYWNrIGZyb20KLSAgICAvLyBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50IGJlY2F1
c2UgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgY2FjaGUuCi0gICAgLy8gSFRNTDVTY3Jp
cHRSdW5uZXIgbWF5IG5vdCBiZSByZWFkeSB0byBoYW5kbGUgcnVubmluZyB0aGF0IHNjcmlwdCB5
ZXQuCi0gICAgaWYgKCFtX3NjcmlwdFJ1bm5lci0+aGFzU2NyaXB0c1dhaXRpbmdGb3JMb2FkKCkp
IHsKLSAgICAgICAgQVNTRVJUKG1fc2NyaXB0UnVubmVyLT5pblNjcmlwdEV4ZWN1dGlvbigpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBBU1NFUlQoIW1fc2NyaXB0UnVubmVyLT5pblNj
cmlwdEV4ZWN1dGlvbigpKTsKICAgICBBU1NFUlQobV90cmVlQ29uc3RydWN0b3ItPmlzUGF1c2Vk
KCkpOwogICAgIC8vIE5vdGU6IFdlIG9ubHkgZXZlciB3YWl0IG9uIG9uZSBzY3JpcHQgYXQgYSB0
aW1lLCBzbyB3ZSBhbHdheXMga25vdyB0aGlzCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRN
TDVTY3JpcHRSdW5uZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmNwcApp
bmRleCA0MGY0NDY1NDQwZTBlODY5N2RjYzcyODMwMDUwZDFmNjVlZDg2NjY4Li5jNGNmYTAxOTUy
MDQ1NWZlZDAyY2VjYTA0NGYyZmUxM2RmMmM4ZmIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTDVTY3JpcHRSdW5uZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5l
ci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSFRNTDVTY3JpcHRSdW5uZXI6OkhUTUw1U2NyaXB0UnVu
bmVyKERvY3VtZW50KiBkb2N1bWVudCwgSFRNTDVTY3JpcHRSdW5uZXJIb3N0KgogSFRNTDVTY3Jp
cHRSdW5uZXI6On5IVE1MNVNjcmlwdFJ1bm5lcigpCiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCB3
ZSBiZSBwYXNzZWQgYSAiZG9uZSBsb2FkaW5nL3BhcnNpbmciIGNhbGxiYWNrIHNvb25lciB0aGFu
IGRlc3RydWN0aW9uPwotICAgIGlmIChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3Jp
cHQgJiYgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkKCkpCisgICAgaWYg
KG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpICYmIG1fcGFyc2luZ0Jsb2Nr
aW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCgpKQogICAgICAgICBzdG9wV2F0Y2hpbmdGb3JMb2Fk
KG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0KTsKIH0KIApAQCAtNzksMTAgKzc5LDEwIEBAIGlubGlu
ZSBQYXNzUmVmUHRyPEV2ZW50PiBjcmVhdGVTY3JpcHRFcnJvckV2ZW50KCkKIAogU2NyaXB0U291
cmNlQ29kZSBIVE1MNVNjcmlwdFJ1bm5lcjo6c291cmNlRnJvbVBlbmRpbmdTY3JpcHQoY29uc3Qg
UGVuZGluZ1NjcmlwdCYgc2NyaXB0LCBib29sJiBlcnJvck9jY3VycmVkKQogewotICAgIGlmIChz
Y3JpcHQuY2FjaGVkU2NyaXB0KSB7Ci0gICAgICAgIGVycm9yT2NjdXJyZWQgPSBzY3JpcHQuY2Fj
aGVkU2NyaXB0LT5lcnJvck9jY3VycmVkKCk7Ci0gICAgICAgIEFTU0VSVChzY3JpcHQuY2FjaGVk
U2NyaXB0LT5pc0xvYWRlZCgpKTsKLSAgICAgICAgcmV0dXJuIFNjcmlwdFNvdXJjZUNvZGUoc2Ny
aXB0LmNhY2hlZFNjcmlwdC5nZXQoKSk7CisgICAgaWYgKHNjcmlwdC5jYWNoZWRTY3JpcHQoKSkg
eworICAgICAgICBlcnJvck9jY3VycmVkID0gc2NyaXB0LmNhY2hlZFNjcmlwdCgpLT5lcnJvck9j
Y3VycmVkKCk7CisgICAgICAgIEFTU0VSVChzY3JpcHQuY2FjaGVkU2NyaXB0KCktPmlzTG9hZGVk
KCkpOworICAgICAgICByZXR1cm4gU2NyaXB0U291cmNlQ29kZShzY3JpcHQuY2FjaGVkU2NyaXB0
KCkpOwogICAgIH0KICAgICBlcnJvck9jY3VycmVkID0gZmFsc2U7CiAgICAgcmV0dXJuIFNjcmlw
dFNvdXJjZUNvZGUoc2NyaXB0LmVsZW1lbnQtPnRleHRDb250ZW50KCksIGRvY3VtZW50VVJMRm9y
U2NyaXB0RXhlY3V0aW9uKG1fZG9jdW1lbnQpLCBzY3JpcHQuc3RhcnRpbmdMaW5lTnVtYmVyKTsK
QEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBIVE1MNVNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5nU2NyaXB0
UmVhZHkoY29uc3QgUGVuZGluZ1NjcmlwdCYgc2NyaXB0KQogICAgIG1faGFzU2NyaXB0c1dhaXRp
bmdGb3JTdHlsZXNoZWV0cyA9ICFtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKTsK
ICAgICBpZiAobV9oYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKHNjcmlwdC5jYWNoZWRTY3JpcHQgJiYgIXNjcmlwdC5jYWNoZWRT
Y3JpcHQtPmlzTG9hZGVkKCkpCisgICAgaWYgKHNjcmlwdC5jYWNoZWRTY3JpcHQoKSAmJiAhc2Ny
aXB0LmNhY2hlZFNjcmlwdCgpLT5pc0xvYWRlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBIVE1MNVNjcmlwdFJ1
bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3JpcHQoKQogICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNl
Q29kZSA9IHNvdXJjZUZyb21QZW5kaW5nU2NyaXB0KG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LCBl
cnJvck9jY3VycmVkKTsKIAogICAgIC8vIFN0b3Agd2F0Y2hpbmcgbG9hZHMgYmVmb3JlIGV4ZWN1
dGVTY3JpcHQgdG8gcHJldmVudCByZWN1cnNpb24gaWYgdGhlIHNjcmlwdCByZWxvYWRzIGl0c2Vs
Zi4KLSAgICBpZiAobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0ICYmIG1fcGFy
c2luZ0Jsb2NraW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCgpKQorICAgIGlmIChtX3BhcnNpbmdC
bG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQoKSAmJiBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC53
YXRjaGluZ0ZvckxvYWQoKSkKICAgICAgICAgc3RvcFdhdGNoaW5nRm9yTG9hZChtX3BhcnNpbmdC
bG9ja2luZ1NjcmlwdCk7CiAKICAgICAvLyBDbGVhciB0aGUgcGVuZGluZyBzY3JpcHQgYmVmb3Jl
IHBvc3NpYmxlIHJlbnRyYW5jeSBmcm9tIGV4ZWN1dGVTY3JpcHQoKQpAQCAtMTQxLDMwICsxNDEs
MTggQEAgdm9pZCBIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdChFbGVtZW50KiBlbGVt
ZW50LCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJgogICAgIG1faG9zdC0+ZXhlY3V0ZVNjcmlwdChz
b3VyY2VDb2RlKTsKIH0KIAotYm9vbCBIVE1MNVNjcmlwdFJ1bm5lcjo6aGFzU2NyaXB0c1dhaXRp
bmdGb3JMb2FkKCkgY29uc3QKLXsKLSAgICAvLyBXZSdyZSBvbmx5IGFjdHVhbGx5IHdhaXRpbmcg
Zm9yIGEgbG9hZC4gIFRoaXMgYWxsb3dzIHVzIHRvIGlnbm9yZSBsb2FkCi0gICAgLy8gY2FsbGJh
Y2tzIHdoZW4gQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudCBjYWxscyBub3RpZnlGaW5pc2hlZCBi
ZWNhdXNlCi0gICAgLy8gb2YgYSBjYWNoZSBoaXQgKG5vdCBiZWNhdXNlIG9mIGEgbG9hZCB3ZSB3
ZXJlIHNldCB1cCB0byB3YWl0IGZvcikuCi0gICAgcmV0dXJuIG1fcGFyc2luZ0Jsb2NraW5nU2Ny
aXB0LndhdGNoaW5nRm9yTG9hZFN0YXRlID09IFBlbmRpbmdTY3JpcHQ6OldhdGNoaW5nRm9yTG9h
ZDsKLX0KLQogdm9pZCBIVE1MNVNjcmlwdFJ1bm5lcjo6d2F0Y2hGb3JMb2FkKFBlbmRpbmdTY3Jp
cHQmIHBlbmRpbmdTY3JpcHQpCiB7CiAgICAgQVNTRVJUKCFwZW5kaW5nU2NyaXB0LndhdGNoaW5n
Rm9yTG9hZCgpKTsKLSAgICAvLyBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50IHdpbGwgY2FsbCBu
b3RpZnlGaW5pc2hlZCBpZiB0aGUgbG9hZCBpcyBhbHJlYWR5Ci0gICAgLy8gY29tcGxldGUuICBX
ZSBzZXQgd2F0Y2hpbmdGb3JMb2FkU3RhdGUgdG8gUmVnaXN0ZXJpbmdGb3JXYXRjaCBzbyB0aGF0
IHdlCi0gICAgLy8ga25vdyB0byBpZ25vcmUgYW55IG5vdGlmeUZpbmlzaGVkIGNhbGwgZHVyaW5n
IGFkZENsaWVudC4KLSAgICBwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZFN0YXRlID0gUGVu
ZGluZ1NjcmlwdDo6UmVnaXN0ZXJpbmdGb3JXYXRjaDsKLSAgICBtX2hvc3QtPndhdGNoRm9yTG9h
ZChwZW5kaW5nU2NyaXB0LmNhY2hlZFNjcmlwdC5nZXQoKSk7Ci0gICAgcGVuZGluZ1NjcmlwdC53
YXRjaGluZ0ZvckxvYWRTdGF0ZSA9IFBlbmRpbmdTY3JpcHQ6OldhdGNoaW5nRm9yTG9hZDsKKyAg
ICBtX2hvc3QtPndhdGNoRm9yTG9hZChwZW5kaW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpKTsKKyAg
ICBwZW5kaW5nU2NyaXB0LnNldFdhdGNoaW5nRm9yTG9hZCh0cnVlKTsKIH0KIAogdm9pZCBIVE1M
NVNjcmlwdFJ1bm5lcjo6c3RvcFdhdGNoaW5nRm9yTG9hZChQZW5kaW5nU2NyaXB0JiBwZW5kaW5n
U2NyaXB0KQogewogICAgIEFTU0VSVChwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCgpKTsK
LSAgICBtX2hvc3QtPnN0b3BXYXRjaGluZ0ZvckxvYWQocGVuZGluZ1NjcmlwdC5jYWNoZWRTY3Jp
cHQuZ2V0KCkpOwotICAgIHBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkU3RhdGUgPSBQZW5k
aW5nU2NyaXB0OjpOb3RXYXRjaGluZ0ZvckxvYWQ7CisgICAgbV9ob3N0LT5zdG9wV2F0Y2hpbmdG
b3JMb2FkKHBlbmRpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkpOworICAgIHBlbmRpbmdTY3JpcHQu
c2V0V2F0Y2hpbmdGb3JMb2FkKGZhbHNlKTsKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBzaG91bGQg
bWF0Y2ggMTAuMi41LjExICJBbiBlbmQgdGFnIHdob3NlIHRhZyBuYW1lIGlzICdzY3JpcHQnIgpA
QCAtMjA0LDE0ICsxOTIsMTAgQEAgYm9vbCBIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBhcnNp
bmdCbG9ja2luZ1NjcmlwdHMoKQogCiBib29sIEhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlU2Ny
aXB0c1dhaXRpbmdGb3JMb2FkKENhY2hlZFJlc291cmNlKiBjYWNoZWRTY3JpcHQpCiB7Ci0gICAg
Ly8gQ2FsbGVycyBzaG91bGQgY2hlY2sgaGFzU2NyaXB0c1dhaXRpbmdGb3JMb2FkKCkgYmVmb3Jl
IGNhbGxpbmcKLSAgICAvLyB0byBwcmV2ZW50IHBhcnNlciBvciBzY3JpcHQgcmUtZW50cnkgZHVy
aW5nIGR1ZSB0bwotICAgIC8vIENhY2hlZFJlc291cmNlOjphZGRDbGllbnQgY2FsbGluZyBub3Rp
ZnlGaW5pc2hlZCBvbiBjYWNoZS1oaXRzLgotICAgIEFTU0VSVChoYXNTY3JpcHRzV2FpdGluZ0Zv
ckxvYWQoKSk7CiAgICAgQVNTRVJUKCFtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CiAgICAgQVNTRVJU
KGhhdmVQYXJzaW5nQmxvY2tpbmdTY3JpcHQoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChjYWNoZWRT
Y3JpcHQsIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCA9PSBjYWNoZWRTY3Jp
cHQpOwotICAgIEFTU0VSVChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQtPmlz
TG9hZGVkKCkpOworICAgIEFTU0VSVF9VTlVTRUQoY2FjaGVkU2NyaXB0LCBtX3BhcnNpbmdCbG9j
a2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQoKSA9PSBjYWNoZWRTY3JpcHQpOworICAgIEFTU0VSVCht
X3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQoKS0+aXNMb2FkZWQoKSk7CiAgICAg
cmV0dXJuIGV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRzKCk7CiB9CiAKQEAgLTIxOSw3ICsy
MDMsNyBAQCBib29sIEhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JT
dHlsZXNoZWV0cygpCiB7CiAgICAgLy8gQ2FsbGVycyBzaG91bGQgY2hlY2sgaGFzU2NyaXB0c1dh
aXRpbmdGb3JTdHlsZXNoZWV0cygpIGJlZm9yZSBjYWxsaW5nCiAgICAgLy8gdG8gcHJldmVudCBw
YXJzZXIgb3Igc2NyaXB0IHJlLWVudHJ5IGR1cmluZyA8L3N0eWxlPiBwYXJzaW5nLgotICAgIEFT
U0VSVChoYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkpOworICAgIEFTU0VSVChtX2hh
c1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMpOwogICAgIEFTU0VSVCghbV9zY3JpcHROZXN0
aW5nTGV2ZWwpOwogICAgIEFTU0VSVChtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQo
KSk7CiAgICAgcmV0dXJuIGV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRzKCk7CkBAIC0yNDMs
MTYgKzIyNywxMyBAQCB2b2lkIEhUTUw1U2NyaXB0UnVubmVyOjpyZXF1ZXN0U2NyaXB0KEVsZW1l
bnQqIHNjcmlwdCkKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsgLy8gRGlzcGF0Y2ggZXJyb3Ig
ZXZlbnQuCiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9wYXJzaW5nQmxvY2tpbmdTY3Jp
cHQuY2FjaGVkU2NyaXB0ID0gY2FjaGVkU2NyaXB0OwotCi0gICAgLy8gQWx3YXlzIGNhbGwgd2F0
Y2hGb3JMb2FkLCBldmVuIGlmIHRoZSBzY3JpcHQgaXMgYWxyZWFkeSBsb2FkZWQuCi0gICAgLy8g
Q2FjaGVkUmVzb3VyY2UgbWF5IHB1cmdlIGl0cyBkYXRhIGlmIGl0IGhhcyBubyBjbGllbnRzLCB3
aGljaCB3b3VsZCBjYXVzZQotICAgIC8vIGxhdGVyIHNjcmlwdCBleGVjdXRpb24gdG8gZmFpbC4g
IHdhdGNoRm9yTG9hZCBzZXRzIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0Ci0gICAgLy8gdG8gdGhl
IFJlZ2lzdGVyaW5nRm9yV2F0Y2ggc3RhdGUgc28gd2Uga25vdyB0byBpZ25vcmUgYW55Ci0gICAg
Ly8gZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZCBjYWxsYmFja3MgZHVyaW5nIHRoZSB3YXRj
aEZvckxvYWQgY2FsbC4KLSAgICB3YXRjaEZvckxvYWQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQp
OwotICAgIC8vIENhbGxlcnMgd2lsbCBhdHRlbXB0IHRvIHJ1biB0aGUgbV9wYXJzaW5nQmxvY2tp
bmdTY3JpcHQgaWYgcG9zc2libGUKLSAgICAvLyBiZWZvcmUgcmV0dXJuaW5nIGNvbnRyb2wgdG8g
dGhlIHBhcnNlci4KKyAgICBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5zZXRDYWNoZWRTY3JpcHQo
Y2FjaGVkU2NyaXB0KTsKKworICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCBhIGxvYWQgY2FsbGJh
Y2sgaWYgY2FjaGVkU2NyaXB0IGlzIG5vdCBhbHJlYWR5CisgICAgLy8gaW4gdGhlIGNhY2hlLiAg
Q2FsbGVycyB3aWxsIGF0dGVtcHQgdG8gcnVuIHRoZSBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdAor
ICAgIC8vIGlmIHBvc3NpYmxlIGJlZm9yZSByZXR1cm5pbmcgY29udHJvbCB0byB0aGUgcGFyc2Vy
LgorICAgIGlmICghbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCktPmlzTG9h
ZGVkKCkpCisgICAgICAgIHdhdGNoRm9yTG9hZChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCk7CiB9
CiAKIC8vIFRoaXMgbWV0aG9kIGlzIG1lYW50IHRvIG1hdGNoIHRoZSBIVE1MNSBkZWZpbml0aW9u
IG9mICJydW5uaW5nIGEgc2NyaXB0IgpAQCAtMjc2LDQgKzI1NywyNCBAQCB2b2lkIEhUTUw1U2Ny
aXB0UnVubmVyOjpydW5TY3JpcHQoRWxlbWVudCogc2NyaXB0LCBpbnQgc3RhcnRpbmdMaW5lTnVt
YmVyKQogICAgIG1fc2NyaXB0TmVzdGluZ0xldmVsLS07CiB9CiAKK0hUTUw1U2NyaXB0UnVubmVy
OjpQZW5kaW5nU2NyaXB0Ojp+UGVuZGluZ1NjcmlwdCgpCit7CisgICAgaWYgKG1fY2FjaGVkU2Ny
aXB0KQorICAgICAgICBtX2NhY2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50KHRoaXMpOworfQorCit2
b2lkIEhUTUw1U2NyaXB0UnVubmVyOjpQZW5kaW5nU2NyaXB0OjpzZXRDYWNoZWRTY3JpcHQoQ2Fj
aGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQpCit7CisgICAgaWYgKG1fY2FjaGVkU2NyaXB0KQorICAg
ICAgICBtX2NhY2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgIG1fY2FjaGVkU2Ny
aXB0ID0gY2FjaGVkU2NyaXB0OworICAgIGlmIChtX2NhY2hlZFNjcmlwdCkKKyAgICAgICAgbV9j
YWNoZWRTY3JpcHQtPmFkZENsaWVudCh0aGlzKTsKK30KKworQ2FjaGVkU2NyaXB0KiBIVE1MNVNj
cmlwdFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6Y2FjaGVkU2NyaXB0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jYWNoZWRTY3JpcHQuZ2V0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5oIGIvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVy
LmgKaW5kZXggMzEwOTcyMDk2ZmI2YjI4YjI4OTYxMzFlNTQ0Yzk1ZjZiN2U4NTFlZS4uMjczMTEw
MTViY2RhMjQwNTc3MzNlNjY0YTVmYzY2MDI0YjUwMzVkNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUw1U2NyaXB0UnVubmVyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVu
bmVyLmgKQEAgLTQ4LDQzICs0OCw0NyBAQCBwdWJsaWM6CiAKICAgICAvLyBQcm9jZXNzZXMgdGhl
IHBhc3NlZCBpbiBzY3JpcHQgYW5kIGFueSBwZW5kaW5nIHNjcmlwdHMgaWYgcG9zc2libGUuCiAg
ICAgYm9vbCBleGVjdXRlKFBhc3NSZWZQdHI8RWxlbWVudD4gc2NyaXB0VG9Qcm9jZXNzLCBpbnQg
c2NyaXB0U3RhcnRMaW5lKTsKLQotICAgIGJvb2wgaGFzU2NyaXB0c1dhaXRpbmdGb3JMb2FkKCkg
Y29uc3Q7CisgICAgLy8gUHJvY2Vzc2VzIGFueSBwZW5kaW5nIHNjcmlwdHMuCiAgICAgYm9vbCBl
eGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkKENhY2hlZFJlc291cmNlKik7Ci0KICAgICBib29s
IGhhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKSBjb25zdCB7IHJldHVybiBtX2hhc1Nj
cmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHM7IH0KICAgICBib29sIGV4ZWN1dGVTY3JpcHRzV2Fp
dGluZ0ZvclN0eWxlc2hlZXRzKCk7CiAKICAgICBib29sIGluU2NyaXB0RXhlY3V0aW9uKCkgeyBy
ZXR1cm4gISFtX3NjcmlwdE5lc3RpbmdMZXZlbDsgfQogCiBwcml2YXRlOgotICAgIHN0cnVjdCBQ
ZW5kaW5nU2NyaXB0IHsKLSAgICAgICAgLy8gVGhpcyBzdGF0ZSBjb250cm9scyB3aGV0aGVyIHdl
IG5lZWQgdG8gZG8gYW55dGhpbmcgd2l0aCB0aGlzIHNjcmlwdAotICAgICAgICAvLyB3aGVuIHdl
IGdldCBhIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQgY2FsbGJhY2suCi0gICAgICAgIC8v
IFdlIGlnbm9yZSBjYWxsYmFja3MgZHVyaW5nIFJlZ2lzdGVyaW5nRm9yV2F0Y2guCi0gICAgICAg
IGVudW0gV2F0Y2hpbmdGb3JMb2FkU3RhdGUgewotICAgICAgICAgICAgTm90V2F0Y2hpbmdGb3JM
b2FkLAotICAgICAgICAgICAgUmVnaXN0ZXJpbmdGb3JXYXRjaCwKLSAgICAgICAgICAgIFdhdGNo
aW5nRm9yTG9hZCwKLSAgICAgICAgfTsKLQorICAgIC8vIEEgY29udGFpbmVyIGZvciBhbiBleHRl
cm5hbCBzY3JpcHQgd2hpY2ggbWF5IGJlIGxvYWRlZCBhbmQgZXhlY3V0ZWQuCisgICAgLy8KKyAg
ICAvLyBBIENhY2hlZFJlc291cmNlSGFuZGxlIGFsb25lIGRvZXMgbm90IHByZXZlbnQgdGhlIHVu
ZGVybHlpbmcgQ2FjaGVkUmVzb3VyY2UKKyAgICAvLyBmcm9tIHB1cmdpbmcgaXRzIGRhdGEgYnVm
ZmVyLiBUaGlzIGNsYXNzIGhvbGRzIGEgZHVtbXkgY2xpZW50IG9wZW4gZm9yIGl0cworICAgIC8v
IGxpZmV0aW1lIGluIG9yZGVyIHRvIGd1YXJhbnRlZSB0aGF0IHRoZSBkYXRhIGJ1ZmZlciB3aWxs
IG5vdCBiZSBwdXJnZWQuCisgICAgY2xhc3MgUGVuZGluZ1NjcmlwdCA6IHB1YmxpYyBDYWNoZWRS
ZXNvdXJjZUNsaWVudCB7CisgICAgcHVibGljOgogICAgICAgICBQZW5kaW5nU2NyaXB0KCkKLSAg
ICAgICAgICAgIDogd2F0Y2hpbmdGb3JMb2FkU3RhdGUoTm90V2F0Y2hpbmdGb3JMb2FkKQorICAg
ICAgICAgICAgOiBtX3dhdGNoaW5nRm9yTG9hZChmYWxzZSkKICAgICAgICAgICAgICwgc3RhcnRp
bmdMaW5lTnVtYmVyKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgd2F0
Y2hpbmdGb3JMb2FkKCkKKyAgICAgICAgflBlbmRpbmdTY3JpcHQoKTsKKworICAgICAgICBib29s
IHdhdGNoaW5nRm9yTG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2F0Y2hpbmdGb3JMb2FkOyB9Cisg
ICAgICAgIHZvaWQgc2V0V2F0Y2hpbmdGb3JMb2FkKGJvb2wgYikgeyBtX3dhdGNoaW5nRm9yTG9h
ZCA9IGI7IH0KKworICAgICAgICBDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCgpIGNvbnN0Owor
ICAgICAgICB2b2lkIHNldENhY2hlZFNjcmlwdChDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCk7
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHdhdGNoaW5nRm9yTG9hZFN0YXRlICE9IE5v
dFdhdGNoaW5nRm9yTG9hZDsKICAgICAgICAgfQogCiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBl
bGVtZW50OwotICAgICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IGNhY2hl
ZFNjcmlwdDsKLSAgICAgICAgV2F0Y2hpbmdGb3JMb2FkU3RhdGUgd2F0Y2hpbmdGb3JMb2FkU3Rh
dGU7CiAgICAgICAgIGludCBzdGFydGluZ0xpbmVOdW1iZXI7IC8vIE9ubHkgdXNlZCBmb3IgaW5s
aW5lIHNjcmlwdCB0YWdzLgogICAgICAgICAvLyBIVE1MNSBoYXMgYW4gaXNSZWFkeSBwYXJhbWV0
ZXIsIGhvd2V2ZXIgaXNSZWFkeSBlbmRzIHVwIGVxdWl2YWxlbnQgdG8KICAgICAgICAgLy8gbV9k
b2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkgJiYgY2FjaGVkU2NyaXB0LT5pc0xvYWRl
ZCgpCisKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIG1fd2F0Y2hpbmdGb3JMb2FkOyAvLyBE
aWQgd2UgcGFzcyB0aGUgY2FjaGVkU2NyaXB0IHRvIHRoZSBIVE1MNVNjcmlwdFJ1bm5lckhvc3Qu
CisgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gbV9jYWNoZWRTY3Jp
cHQ7CiAgICAgfTsKIAogICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVySG9zdC5oIGIvV2ViQ29yZS9odG1sL0hUTUw1U2Ny
aXB0UnVubmVySG9zdC5oCmluZGV4IDY4ZjEwMGU3ZmI0MmRjZDMzZTBlZTM4ZjE2YTliMTQ2YzYz
MzExNWQuLjlhNzczODU1NTIzODg5NzEyN2U0YWZkZmIyYTk3ZmE1ZDQ2NGRkMDYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lckhvc3QuaAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTDVTY3JpcHRSdW5uZXJIb3N0LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgSFRNTDVT
Y3JpcHRSdW5uZXJIb3N0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5IVE1MNVNjcmlwdFJ1bm5l
ckhvc3QoKSB7IH0KIAotICAgIC8vIEltcGxlbWVudG9ycyBtdXN0IGNhbGwgY2FjaGVkUmVzb3Vy
Y2UtPmFkZENsaWVudCgpIGltbWVkaWF0ZWx5LgorICAgIC8vIEltcGxlbWVudG9ycyBzaG91bGQg
Y2FsbCBjYWNoZWRSZXNvdXJjZS0+YWRkQ2xpZW50KCkgaGVyZSBvciBzb29uIGFmdGVyLgogICAg
IHZpcnR1YWwgdm9pZCB3YXRjaEZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqKSA9IDA7CiAgICAgLy8g
SW1wbGVtZW50b3JzIG11c3QgY2FsbCBjYWNoZWRSZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCkgaW1t
ZWRpYXRlbHkuCiAgICAgdmlydHVhbCB2b2lkIHN0b3BXYXRjaGluZ0ZvckxvYWQoQ2FjaGVkUmVz
b3VyY2UqKSA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59455</attachid>
            <date>2010-06-22 18:24:35 -0700</date>
            <delta_ts>2010-06-24 20:56:03 -0700</delta_ts>
            <desc>Rollback</desc>
            <filename>attachment.cgi.txt</filename>
            <type>text/plain</type>
            <size>14790</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTJhNDM5ZWNjZTUwYjJmNzFjZGQwOWUzOGRlNTM2ZTY4NjgxODVhMC4uODYzOTIyYmVmOGQ1N2Ux
MmQ0ZjA1NmEyODI4NmRlNmFkMzYwMTJmOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0IEBACisKIDIwMTAtMDYtMjIgIFRv
bnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KQEAgLTI3LDQzICsyOCw2IEBACiAgICAgICAgICogaHRtbC9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwOgogICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpw
cm9jZXNzVG9rZW4pOgogCi0yMDEwLTA2LTIyICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJv
bWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAg
TWFrZSBQZW5kaW5nU2NyaXB0IGhvbGQgYSBDYWNoZWRSZXNvdXJjZUNsaWVudCBvcGVuIGZvciBp
dHMgbGlmZXRpbWUKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQwOTY4Ci0KLSAgICAgICAgVGhpcyByZXBsYWNlcyB0aGUgbWVjaGFuaXNtIGludHJvZHVj
ZWQgaW4gcjYxMzc0IHdpdGggYSBzaW1wbGVyCi0gICAgICAgIGFwcHJvYWNoIGZyb20gcHJldmVu
dGluZyB1bmV4cGVjdGVkIHB1cmdlczsgYWx3YXlzIGtlZXAgYSBjbGllbnQgb3Blbi4KLSAgICAg
ICAgVGhpcyB3aWxsIGFwcHJvYWNoIHdpbGwgYWxsb3cgZGVmZXJyZWQgc2NyaXB0cyB0byBhZGQg
YSBjbGllbnQgYWZ0ZXIKLSAgICAgICAgdGhlIHJlc291cmNlIG1heSBoYXZlIGFscmVhZHkgYmVl
biBsb2FkZWQgd2l0aG91dCBoYXZpbmcgdG8gd29ycnkgYWJvdXQKLSAgICAgICAgdGhlIGJ1ZmZl
ciBiZWluZyBwdXJnZWQgaW4gdGhlIG1lYW50aW1lLgotCi0gICAgICAgIE5vIG5ldyB0ZXN0cyBi
ZWNhdXNlIG1ha2luZyBhIENhY2hlZFJlc291cmNlIHB1cmdlIGl0c2VsZiBpcyBub3QKLSAgICAg
ICAgdGVzdGFibGUgZnJvbSBhIExheW91dFRlc3QuCi0KLSAgICAgICAgKiBodG1sL0hUTUw1RG9j
dW1lbnRQYXJzZXIuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SFRNTDVEb2N1bWVudFBhcnNlcjo6
d2F0Y2hGb3JMb2FkKToKLSAgICAgICAgKFdlYkNvcmU6OkhUTUw1RG9jdW1lbnRQYXJzZXI6Om5v
dGlmeUZpbmlzaGVkKToKLSAgICAgICAgKiBodG1sL0hUTUw1U2NyaXB0UnVubmVyLmNwcDoKLSAg
ICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjp+SFRNTDVTY3JpcHRSdW5uZXIpOgot
ICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OnNvdXJjZUZyb21QZW5kaW5nU2Ny
aXB0KToKLSAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjppc1BlbmRpbmdTY3Jp
cHRSZWFkeSk6Ci0gICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBl
bmRpbmdTY3JpcHQpOgotICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OndhdGNo
Rm9yTG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6c3RvcFdhdGNo
aW5nRm9yTG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0
ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZCk6Ci0gICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1
bm5lcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMpOgotICAgICAgICAoV2Vi
Q29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OnJlcXVlc3RTY3JpcHQpOgotICAgICAgICAqIGh0bWwv
SFRNTDVTY3JpcHRSdW5uZXIuaDoKLSAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVy
OjpQZW5kaW5nU2NyaXB0OjpQZW5kaW5nU2NyaXB0KToKLSAgICAgICAgKFdlYkNvcmU6OkhUTUw1
U2NyaXB0UnVubmVyOjpQZW5kaW5nU2NyaXB0Ojp+UGVuZGluZ1NjcmlwdCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6c2V0Q2FjaGVkU2NyaXB0
KToKLSAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjpQZW5kaW5nU2NyaXB0Ojpj
YWNoZWRTY3JpcHQpOgotICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OlBlbmRp
bmdTY3JpcHQ6Om5vdGlmeUZpbmlzaGVkKToKLSAgICAgICAgKiBodG1sL0hUTUw1U2NyaXB0UnVu
bmVySG9zdC5oOgotCiAyMDEwLTA2LTIyICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQ
YXJzZXIuY3BwCmluZGV4IGZlNDRhZmM0ODBkNjI4NmQzYjJmZGQ0ZTQwMWU5MmU5YjQwNmZkNWQu
LmM5OGZkZTAyZjE1MWM1YmEzNGE4NDFiMjc1MzAzNjhmOWU2YjVkYTUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TDVEb2N1bWVudFBhcnNlci5jcHAKQEAgLTQwNiwxMCArNDA2LDYgQEAgdm9pZCBIVE1MNURvY3Vt
ZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKQogCiB2b2lkIEhU
TUw1RG9jdW1lbnRQYXJzZXI6OndhdGNoRm9yTG9hZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkU2Ny
aXB0KQogewotICAgIEFTU0VSVCghY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpKTsKLSAgICAvLyBh
ZGRDbGllbnQgd291bGQgY2FsbCBub3RpZnlGaW5pc2hlZCBpZiB0aGUgbG9hZCB3ZXJlIGNvbXBs
ZXRlLgotICAgIC8vIENhbGxlcnMgZG8gbm90IGV4cGVjdCB0byBiZSByZS1lbnRlcmVkIGZyb20g
dGhpcyBjYWxsLCBzbyB0aGV5IHNob3VsZAotICAgIC8vIG5vdCBhbiBhbHJlYWR5LWxvYWRlZCBD
YWNoZWRSZXNvdXJjZS4KICAgICBjYWNoZWRTY3JpcHQtPmFkZENsaWVudCh0aGlzKTsKIH0KIApA
QCAtNDI4LDYgKzQyNCwxNCBAQCBib29sIEhUTUw1RG9jdW1lbnRQYXJzZXI6OnNob3VsZExvYWRF
eHRlcm5hbFNjcmlwdEZyb21TcmMoY29uc3QgQXRvbWljU3RyaW5nJiBzcgogdm9pZCBIVE1MNURv
Y3VtZW50UGFyc2VyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3Vy
Y2UpCiB7CiAgICAgQVNTRVJUKG1fc2NyaXB0UnVubmVyKTsKKyAgICAvLyBJZ25vcmUgY2FsbHMg
dW5sZXNzIHdlIGhhdmUgYSBzY3JpcHQgYmxvY2tpbmcgdGhlIHBhcnNlciB3YWl0aW5nCisgICAg
Ly8gZm9yIGl0cyBvd24gbG9hZC4gIE90aGVyd2lzZSB0aGlzIG1heSBiZSBhIGxvYWQgY2FsbGJh
Y2sgZnJvbQorICAgIC8vIENhY2hlZFJlc291cmNlOjphZGRDbGllbnQgYmVjYXVzZSB0aGUgc2Ny
aXB0IHdhcyBhbHJlYWR5IGluIHRoZSBjYWNoZS4KKyAgICAvLyBIVE1MNVNjcmlwdFJ1bm5lciBt
YXkgbm90IGJlIHJlYWR5IHRvIGhhbmRsZSBydW5uaW5nIHRoYXQgc2NyaXB0IHlldC4KKyAgICBp
ZiAoIW1fc2NyaXB0UnVubmVyLT5oYXNTY3JpcHRzV2FpdGluZ0ZvckxvYWQoKSkgeworICAgICAg
ICBBU1NFUlQobV9zY3JpcHRSdW5uZXItPmluU2NyaXB0RXhlY3V0aW9uKCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIEFTU0VSVCghaW5TY3JpcHRFeGVjdXRpb24oKSk7CiAgICAgQVNT
RVJUKG1fdHJlZUNvbnN0cnVjdG9yLT5pc1BhdXNlZCgpKTsKICAgICAvLyBOb3RlOiBXZSBvbmx5
IGV2ZXIgd2FpdCBvbiBvbmUgc2NyaXB0IGF0IGEgdGltZSwgc28gd2UgYWx3YXlzIGtub3cgdGhp
cwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmNwcCBiL1dlYkNv
cmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAKaW5kZXggYzcyOGUwNGQyMmFjZWRmZTM3Yjkx
YzM3ODUwNjI2Y2UxYmVhMzkxYS4uM2UxNmQ0MTQzNzA1OGI0YWVmYWFhNTM0ZTc0OTY3MDcxNzkx
MTRiOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIEhU
TUw1U2NyaXB0UnVubmVyOjpIVE1MNVNjcmlwdFJ1bm5lcihEb2N1bWVudCogZG9jdW1lbnQsIEhU
TUw1U2NyaXB0UnVubmVySG9zdCoKIEhUTUw1U2NyaXB0UnVubmVyOjp+SFRNTDVTY3JpcHRSdW5u
ZXIoKQogewogICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYmUgcGFzc2VkIGEgImRvbmUgbG9hZGlu
Zy9wYXJzaW5nIiBjYWxsYmFjayBzb29uZXIgdGhhbiBkZXN0cnVjdGlvbj8KLSAgICBpZiAobV9w
YXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkgJiYgbV9wYXJzaW5nQmxvY2tpbmdT
Y3JpcHQud2F0Y2hpbmdGb3JMb2FkKCkpCisgICAgaWYgKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0
LmNhY2hlZFNjcmlwdCAmJiBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQo
KSkKICAgICAgICAgc3RvcFdhdGNoaW5nRm9yTG9hZChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCk7
CiB9CiAKQEAgLTk5LDEwICs5OSwxMCBAQCBpbmxpbmUgUGFzc1JlZlB0cjxFdmVudD4gY3JlYXRl
U2NyaXB0RXJyb3JFdmVudCgpCiAKIFNjcmlwdFNvdXJjZUNvZGUgSFRNTDVTY3JpcHRSdW5uZXI6
OnNvdXJjZUZyb21QZW5kaW5nU2NyaXB0KGNvbnN0IFBlbmRpbmdTY3JpcHQmIHNjcmlwdCwgYm9v
bCYgZXJyb3JPY2N1cnJlZCkKIHsKLSAgICBpZiAoc2NyaXB0LmNhY2hlZFNjcmlwdCgpKSB7Ci0g
ICAgICAgIGVycm9yT2NjdXJyZWQgPSBzY3JpcHQuY2FjaGVkU2NyaXB0KCktPmVycm9yT2NjdXJy
ZWQoKTsKLSAgICAgICAgQVNTRVJUKHNjcmlwdC5jYWNoZWRTY3JpcHQoKS0+aXNMb2FkZWQoKSk7
Ci0gICAgICAgIHJldHVybiBTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5jYWNoZWRTY3JpcHQoKSk7
CisgICAgaWYgKHNjcmlwdC5jYWNoZWRTY3JpcHQpIHsKKyAgICAgICAgZXJyb3JPY2N1cnJlZCA9
IHNjcmlwdC5jYWNoZWRTY3JpcHQtPmVycm9yT2NjdXJyZWQoKTsKKyAgICAgICAgQVNTRVJUKHNj
cmlwdC5jYWNoZWRTY3JpcHQtPmlzTG9hZGVkKCkpOworICAgICAgICByZXR1cm4gU2NyaXB0U291
cmNlQ29kZShzY3JpcHQuY2FjaGVkU2NyaXB0LmdldCgpKTsKICAgICB9CiAgICAgZXJyb3JPY2N1
cnJlZCA9IGZhbHNlOwogICAgIHJldHVybiBTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5lbGVtZW50
LT50ZXh0Q29udGVudCgpLCBkb2N1bWVudFVSTEZvclNjcmlwdEV4ZWN1dGlvbihtX2RvY3VtZW50
KSwgc2NyaXB0LnN0YXJ0aW5nTGluZU51bWJlcik7CkBAIC0xMTMsNyArMTEzLDcgQEAgYm9vbCBI
VE1MNVNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5nU2NyaXB0UmVhZHkoY29uc3QgUGVuZGluZ1Njcmlw
dCYgc2NyaXB0KQogICAgIG1faGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyA9ICFtX2Rv
Y3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKTsKICAgICBpZiAobV9oYXNTY3JpcHRzV2Fp
dGluZ0ZvclN0eWxlc2hlZXRzKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHNjcmlw
dC5jYWNoZWRTY3JpcHQoKSAmJiAhc2NyaXB0LmNhY2hlZFNjcmlwdCgpLT5pc0xvYWRlZCgpKQor
ICAgIGlmIChzY3JpcHQuY2FjaGVkU2NyaXB0ICYmICFzY3JpcHQuY2FjaGVkU2NyaXB0LT5pc0xv
YWRlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0x
MjcsNyArMTI3LDcgQEAgdm9pZCBIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3Jp
cHQoKQogICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IHNvdXJjZUZyb21QZW5kaW5n
U2NyaXB0KG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LCBlcnJvck9jY3VycmVkKTsKIAogICAgIC8v
IFN0b3Agd2F0Y2hpbmcgbG9hZHMgYmVmb3JlIGV4ZWN1dGVTY3JpcHQgdG8gcHJldmVudCByZWN1
cnNpb24gaWYgdGhlIHNjcmlwdCByZWxvYWRzIGl0c2VsZi4KLSAgICBpZiAobV9wYXJzaW5nQmxv
Y2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkgJiYgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQud2F0
Y2hpbmdGb3JMb2FkKCkpCisgICAgaWYgKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNj
cmlwdCAmJiBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQoKSkKICAgICAg
ICAgc3RvcFdhdGNoaW5nRm9yTG9hZChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCk7CiAKICAgICAv
LyBDbGVhciB0aGUgcGVuZGluZyBzY3JpcHQgYmVmb3JlIHBvc3NpYmxlIHJlbnRyYW5jeSBmcm9t
IGV4ZWN1dGVTY3JpcHQoKQpAQCAtMTYxLDE4ICsxNjEsMzAgQEAgdm9pZCBIVE1MNVNjcmlwdFJ1
bm5lcjo6ZXhlY3V0ZVNjcmlwdChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJgogICAgIG1fZG9jdW1lbnQtPmZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHNv
dXJjZUNvZGUpOwogfQogCitib29sIEhUTUw1U2NyaXB0UnVubmVyOjpoYXNTY3JpcHRzV2FpdGlu
Z0ZvckxvYWQoKSBjb25zdAoreworICAgIC8vIFdlJ3JlIG9ubHkgYWN0dWFsbHkgd2FpdGluZyBm
b3IgYSBsb2FkLiAgVGhpcyBhbGxvd3MgdXMgdG8gaWdub3JlIGxvYWQKKyAgICAvLyBjYWxsYmFj
a3Mgd2hlbiBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50IGNhbGxzIG5vdGlmeUZpbmlzaGVkIGJl
Y2F1c2UKKyAgICAvLyBvZiBhIGNhY2hlIGhpdCAobm90IGJlY2F1c2Ugb2YgYSBsb2FkIHdlIHdl
cmUgc2V0IHVwIHRvIHdhaXQgZm9yKS4KKyAgICByZXR1cm4gbV9wYXJzaW5nQmxvY2tpbmdTY3Jp
cHQud2F0Y2hpbmdGb3JMb2FkU3RhdGUgPT0gUGVuZGluZ1NjcmlwdDo6V2F0Y2hpbmdGb3JMb2Fk
OworfQorCiB2b2lkIEhUTUw1U2NyaXB0UnVubmVyOjp3YXRjaEZvckxvYWQoUGVuZGluZ1Njcmlw
dCYgcGVuZGluZ1NjcmlwdCkKIHsKICAgICBBU1NFUlQoIXBlbmRpbmdTY3JpcHQud2F0Y2hpbmdG
b3JMb2FkKCkpOwotICAgIG1faG9zdC0+d2F0Y2hGb3JMb2FkKHBlbmRpbmdTY3JpcHQuY2FjaGVk
U2NyaXB0KCkpOwotICAgIHBlbmRpbmdTY3JpcHQuc2V0V2F0Y2hpbmdGb3JMb2FkKHRydWUpOwor
ICAgIC8vIENhY2hlZFJlc291cmNlOjphZGRDbGllbnQgd2lsbCBjYWxsIG5vdGlmeUZpbmlzaGVk
IGlmIHRoZSBsb2FkIGlzIGFscmVhZHkKKyAgICAvLyBjb21wbGV0ZS4gIFdlIHNldCB3YXRjaGlu
Z0ZvckxvYWRTdGF0ZSB0byBSZWdpc3RlcmluZ0ZvcldhdGNoIHNvIHRoYXQgd2UKKyAgICAvLyBr
bm93IHRvIGlnbm9yZSBhbnkgbm90aWZ5RmluaXNoZWQgY2FsbCBkdXJpbmcgYWRkQ2xpZW50Lgor
ICAgIHBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkU3RhdGUgPSBQZW5kaW5nU2NyaXB0OjpS
ZWdpc3RlcmluZ0ZvcldhdGNoOworICAgIG1faG9zdC0+d2F0Y2hGb3JMb2FkKHBlbmRpbmdTY3Jp
cHQuY2FjaGVkU2NyaXB0LmdldCgpKTsKKyAgICBwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9h
ZFN0YXRlID0gUGVuZGluZ1NjcmlwdDo6V2F0Y2hpbmdGb3JMb2FkOwogfQogCiB2b2lkIEhUTUw1
U2NyaXB0UnVubmVyOjpzdG9wV2F0Y2hpbmdGb3JMb2FkKFBlbmRpbmdTY3JpcHQmIHBlbmRpbmdT
Y3JpcHQpCiB7CiAgICAgQVNTRVJUKHBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkKCkpOwot
ICAgIG1faG9zdC0+c3RvcFdhdGNoaW5nRm9yTG9hZChwZW5kaW5nU2NyaXB0LmNhY2hlZFNjcmlw
dCgpKTsKLSAgICBwZW5kaW5nU2NyaXB0LnNldFdhdGNoaW5nRm9yTG9hZChmYWxzZSk7CisgICAg
bV9ob3N0LT5zdG9wV2F0Y2hpbmdGb3JMb2FkKHBlbmRpbmdTY3JpcHQuY2FjaGVkU2NyaXB0Lmdl
dCgpKTsKKyAgICBwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZFN0YXRlID0gUGVuZGluZ1Nj
cmlwdDo6Tm90V2F0Y2hpbmdGb3JMb2FkOwogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBt
YXRjaCAxMC4yLjUuMTEgIkFuIGVuZCB0YWcgd2hvc2UgdGFnIG5hbWUgaXMgJ3NjcmlwdCciCkBA
IC0yMTIsMTAgKzIyNCwxNCBAQCBib29sIEhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlUGFyc2lu
Z0Jsb2NraW5nU2NyaXB0cygpCiAKIGJvb2wgSFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3Jp
cHRzV2FpdGluZ0ZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFNjcmlwdCkKIHsKKyAgICAv
LyBDYWxsZXJzIHNob3VsZCBjaGVjayBoYXNTY3JpcHRzV2FpdGluZ0ZvckxvYWQoKSBiZWZvcmUg
Y2FsbGluZworICAgIC8vIHRvIHByZXZlbnQgcGFyc2VyIG9yIHNjcmlwdCByZS1lbnRyeSBkdXJp
bmcgZHVlIHRvCisgICAgLy8gQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudCBjYWxsaW5nIG5vdGlm
eUZpbmlzaGVkIG9uIGNhY2hlLWhpdHMuCisgICAgQVNTRVJUKGhhc1NjcmlwdHNXYWl0aW5nRm9y
TG9hZCgpKTsKICAgICBBU1NFUlQoIW1fc2NyaXB0TmVzdGluZ0xldmVsKTsKICAgICBBU1NFUlQo
aGF2ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdCgpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGNhY2hlZFNj
cmlwdCwgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkgPT0gY2FjaGVkU2Ny
aXB0KTsKLSAgICBBU1NFUlQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkt
PmlzTG9hZGVkKCkpOworICAgIEFTU0VSVF9VTlVTRUQoY2FjaGVkU2NyaXB0LCBtX3BhcnNpbmdC
bG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQgPT0gY2FjaGVkU2NyaXB0KTsKKyAgICBBU1NFUlQo
bV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpKTsKICAgICBy
ZXR1cm4gZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKTsKIH0KIApAQCAtMjIzLDcgKzIz
OSw3IEBAIGJvb2wgSFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0
eWxlc2hlZXRzKCkKIHsKICAgICAvLyBDYWxsZXJzIHNob3VsZCBjaGVjayBoYXNTY3JpcHRzV2Fp
dGluZ0ZvclN0eWxlc2hlZXRzKCkgYmVmb3JlIGNhbGxpbmcKICAgICAvLyB0byBwcmV2ZW50IHBh
cnNlciBvciBzY3JpcHQgcmUtZW50cnkgZHVyaW5nIDwvc3R5bGU+IHBhcnNpbmcuCi0gICAgQVNT
RVJUKG1faGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyk7CisgICAgQVNTRVJUKGhhc1Nj
cmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKSk7CiAgICAgQVNTRVJUKCFtX3NjcmlwdE5lc3Rp
bmdMZXZlbCk7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgp
KTsKICAgICByZXR1cm4gZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKTsKQEAgLTI0Niwx
MyArMjYyLDE2IEBAIHZvaWQgSFRNTDVTY3JpcHRSdW5uZXI6OnJlcXVlc3RTY3JpcHQoRWxlbWVu
dCogc2NyaXB0KQogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOyAvLyBEaXNwYXRjaCBlcnJvciBl
dmVudC4KICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3BhcnNpbmdCbG9ja2luZ1Njcmlw
dC5zZXRDYWNoZWRTY3JpcHQoY2FjaGVkU2NyaXB0KTsKLQotICAgIC8vIFdlIG9ubHkgY2FyZSBh
Ym91dCBhIGxvYWQgY2FsbGJhY2sgaWYgY2FjaGVkU2NyaXB0IGlzIG5vdCBhbHJlYWR5Ci0gICAg
Ly8gaW4gdGhlIGNhY2hlLiAgQ2FsbGVycyB3aWxsIGF0dGVtcHQgdG8gcnVuIHRoZSBtX3BhcnNp
bmdCbG9ja2luZ1NjcmlwdAotICAgIC8vIGlmIHBvc3NpYmxlIGJlZm9yZSByZXR1cm5pbmcgY29u
dHJvbCB0byB0aGUgcGFyc2VyLgotICAgIGlmICghbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2Fj
aGVkU2NyaXB0KCktPmlzTG9hZGVkKCkpCi0gICAgICAgIHdhdGNoRm9yTG9hZChtX3BhcnNpbmdC
bG9ja2luZ1NjcmlwdCk7CisgICAgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0
ID0gY2FjaGVkU2NyaXB0OworCisgICAgLy8gQWx3YXlzIGNhbGwgd2F0Y2hGb3JMb2FkLCBldmVu
IGlmIHRoZSBzY3JpcHQgaXMgYWxyZWFkeSBsb2FkZWQuCisgICAgLy8gQ2FjaGVkUmVzb3VyY2Ug
bWF5IHB1cmdlIGl0cyBkYXRhIGlmIGl0IGhhcyBubyBjbGllbnRzLCB3aGljaCB3b3VsZCBjYXVz
ZQorICAgIC8vIGxhdGVyIHNjcmlwdCBleGVjdXRpb24gdG8gZmFpbC4gIHdhdGNoRm9yTG9hZCBz
ZXRzIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0CisgICAgLy8gdG8gdGhlIFJlZ2lzdGVyaW5nRm9y
V2F0Y2ggc3RhdGUgc28gd2Uga25vdyB0byBpZ25vcmUgYW55CisgICAgLy8gZXhlY3V0ZVNjcmlw
dHNXYWl0aW5nRm9yTG9hZCBjYWxsYmFja3MgZHVyaW5nIHRoZSB3YXRjaEZvckxvYWQgY2FsbC4K
KyAgICB3YXRjaEZvckxvYWQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQpOworICAgIC8vIENhbGxl
cnMgd2lsbCBhdHRlbXB0IHRvIHJ1biB0aGUgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQgaWYgcG9z
c2libGUKKyAgICAvLyBiZWZvcmUgcmV0dXJuaW5nIGNvbnRyb2wgdG8gdGhlIHBhcnNlci4KIH0K
IAogLy8gVGhpcyBtZXRob2QgaXMgbWVhbnQgdG8gbWF0Y2ggdGhlIEhUTUw1IGRlZmluaXRpb24g
b2YgInJ1bm5pbmcgYSBzY3JpcHQiCkBAIC0yNzgsMjQgKzI5Nyw0IEBAIHZvaWQgSFRNTDVTY3Jp
cHRSdW5uZXI6OnJ1blNjcmlwdChFbGVtZW50KiBzY3JpcHQsIGludCBzdGFydGluZ0xpbmVOdW1i
ZXIpCiAgICAgfQogfQogCi1IVE1MNVNjcmlwdFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6flBlbmRp
bmdTY3JpcHQoKQotewotICAgIGlmIChtX2NhY2hlZFNjcmlwdCkKLSAgICAgICAgbV9jYWNoZWRT
Y3JpcHQtPnJlbW92ZUNsaWVudCh0aGlzKTsKLX0KLQotdm9pZCBIVE1MNVNjcmlwdFJ1bm5lcjo6
UGVuZGluZ1NjcmlwdDo6c2V0Q2FjaGVkU2NyaXB0KENhY2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0
KQotewotICAgIGlmIChtX2NhY2hlZFNjcmlwdCkKLSAgICAgICAgbV9jYWNoZWRTY3JpcHQtPnJl
bW92ZUNsaWVudCh0aGlzKTsKLSAgICBtX2NhY2hlZFNjcmlwdCA9IGNhY2hlZFNjcmlwdDsKLSAg
ICBpZiAobV9jYWNoZWRTY3JpcHQpCi0gICAgICAgIG1fY2FjaGVkU2NyaXB0LT5hZGRDbGllbnQo
dGhpcyk7Ci19Ci0KLUNhY2hlZFNjcmlwdCogSFRNTDVTY3JpcHRSdW5uZXI6OlBlbmRpbmdTY3Jp
cHQ6OmNhY2hlZFNjcmlwdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2FjaGVkU2NyaXB0Lmdl
dCgpOwotfQotCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIu
aCBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5oCmluZGV4IDljMmZiMzYwMmY0NzUx
YzY2YjU4YTE5YzI2MDFhYjY0NmIyMTQ1MDQuLjMxMDk3MjA5NmZiNmIyOGIyODk2MTMxZTU0NGM5
NWY2YjdlODUxZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5o
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5oCkBAIC00OCw0NyArNDgsNDMg
QEAgcHVibGljOgogCiAgICAgLy8gUHJvY2Vzc2VzIHRoZSBwYXNzZWQgaW4gc2NyaXB0IGFuZCBh
bnkgcGVuZGluZyBzY3JpcHRzIGlmIHBvc3NpYmxlLgogICAgIGJvb2wgZXhlY3V0ZShQYXNzUmVm
UHRyPEVsZW1lbnQ+IHNjcmlwdFRvUHJvY2VzcywgaW50IHNjcmlwdFN0YXJ0TGluZSk7Ci0gICAg
Ly8gUHJvY2Vzc2VzIGFueSBwZW5kaW5nIHNjcmlwdHMuCisKKyAgICBib29sIGhhc1NjcmlwdHNX
YWl0aW5nRm9yTG9hZCgpIGNvbnN0OwogICAgIGJvb2wgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9y
TG9hZChDYWNoZWRSZXNvdXJjZSopOworCiAgICAgYm9vbCBoYXNTY3JpcHRzV2FpdGluZ0ZvclN0
eWxlc2hlZXRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hl
ZXRzOyB9CiAgICAgYm9vbCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpOwog
CiAgICAgYm9vbCBpblNjcmlwdEV4ZWN1dGlvbigpIHsgcmV0dXJuICEhbV9zY3JpcHROZXN0aW5n
TGV2ZWw7IH0KIAogcHJpdmF0ZToKLSAgICAvLyBBIGNvbnRhaW5lciBmb3IgYW4gZXh0ZXJuYWwg
c2NyaXB0IHdoaWNoIG1heSBiZSBsb2FkZWQgYW5kIGV4ZWN1dGVkLgotICAgIC8vCi0gICAgLy8g
QSBDYWNoZWRSZXNvdXJjZUhhbmRsZSBhbG9uZSBkb2VzIG5vdCBwcmV2ZW50IHRoZSB1bmRlcmx5
aW5nIENhY2hlZFJlc291cmNlCi0gICAgLy8gZnJvbSBwdXJnaW5nIGl0cyBkYXRhIGJ1ZmZlci4g
VGhpcyBjbGFzcyBob2xkcyBhIGR1bW15IGNsaWVudCBvcGVuIGZvciBpdHMKLSAgICAvLyBsaWZl
dGltZSBpbiBvcmRlciB0byBndWFyYW50ZWUgdGhhdCB0aGUgZGF0YSBidWZmZXIgd2lsbCBub3Qg
YmUgcHVyZ2VkLgotICAgIGNsYXNzIFBlbmRpbmdTY3JpcHQgOiBwdWJsaWMgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQgewotICAgIHB1YmxpYzoKKyAgICBzdHJ1Y3QgUGVuZGluZ1NjcmlwdCB7CisgICAg
ICAgIC8vIFRoaXMgc3RhdGUgY29udHJvbHMgd2hldGhlciB3ZSBuZWVkIHRvIGRvIGFueXRoaW5n
IHdpdGggdGhpcyBzY3JpcHQKKyAgICAgICAgLy8gd2hlbiB3ZSBnZXQgYSBleGVjdXRlU2NyaXB0
c1dhaXRpbmdGb3JMb2FkIGNhbGxiYWNrLgorICAgICAgICAvLyBXZSBpZ25vcmUgY2FsbGJhY2tz
IGR1cmluZyBSZWdpc3RlcmluZ0ZvcldhdGNoLgorICAgICAgICBlbnVtIFdhdGNoaW5nRm9yTG9h
ZFN0YXRlIHsKKyAgICAgICAgICAgIE5vdFdhdGNoaW5nRm9yTG9hZCwKKyAgICAgICAgICAgIFJl
Z2lzdGVyaW5nRm9yV2F0Y2gsCisgICAgICAgICAgICBXYXRjaGluZ0ZvckxvYWQsCisgICAgICAg
IH07CisKICAgICAgICAgUGVuZGluZ1NjcmlwdCgpCi0gICAgICAgICAgICA6IHN0YXJ0aW5nTGlu
ZU51bWJlcigwKQotICAgICAgICAgICAgLCBtX3dhdGNoaW5nRm9yTG9hZChmYWxzZSkKKyAgICAg
ICAgICAgIDogd2F0Y2hpbmdGb3JMb2FkU3RhdGUoTm90V2F0Y2hpbmdGb3JMb2FkKQorICAgICAg
ICAgICAgLCBzdGFydGluZ0xpbmVOdW1iZXIoMCkKICAgICAgICAgewogICAgICAgICB9CiAKLSAg
ICAgICAgflBlbmRpbmdTY3JpcHQoKTsKLQotICAgICAgICBib29sIHdhdGNoaW5nRm9yTG9hZCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2F0Y2hpbmdGb3JMb2FkOyB9Ci0gICAgICAgIHZvaWQgc2V0V2F0
Y2hpbmdGb3JMb2FkKGJvb2wgYikgeyBtX3dhdGNoaW5nRm9yTG9hZCA9IGI7IH0KLQotICAgICAg
ICBDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCgpIGNvbnN0OwotICAgICAgICB2b2lkIHNldENh
Y2hlZFNjcmlwdChDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCk7Ci0KLSAgICAgICAgdmlydHVh
bCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikKKyAgICAgICAgYm9vbCB3YXRj
aGluZ0ZvckxvYWQoKQogICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gd2F0Y2hpbmdGb3JM
b2FkU3RhdGUgIT0gTm90V2F0Y2hpbmdGb3JMb2FkOwogICAgICAgICB9CiAKICAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IGVsZW1lbnQ7CisgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFNjcmlwdD4gY2FjaGVkU2NyaXB0OworICAgICAgICBXYXRjaGluZ0ZvckxvYWRTdGF0ZSB3YXRj
aGluZ0ZvckxvYWRTdGF0ZTsKICAgICAgICAgaW50IHN0YXJ0aW5nTGluZU51bWJlcjsgLy8gT25s
eSB1c2VkIGZvciBpbmxpbmUgc2NyaXB0IHRhZ3MuCiAgICAgICAgIC8vIEhUTUw1IGhhcyBhbiBp
c1JlYWR5IHBhcmFtZXRlciwgaG93ZXZlciBpc1JlYWR5IGVuZHMgdXAgZXF1aXZhbGVudCB0bwog
ICAgICAgICAvLyBtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSAmJiBjYWNoZWRT
Y3JpcHQtPmlzTG9hZGVkKCkKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgbV93YXRjaGlu
Z0ZvckxvYWQ7IC8vIERpZCB3ZSBwYXNzIHRoZSBjYWNoZWRTY3JpcHQgdG8gdGhlIEhUTUw1U2Ny
aXB0UnVubmVySG9zdC4KLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0
PiBtX2NhY2hlZFNjcmlwdDsKICAgICB9OwogCiAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXJIb3N0LmggYi9XZWJDb3Jl
L2h0bWwvSFRNTDVTY3JpcHRSdW5uZXJIb3N0LmgKaW5kZXggYzc5NjhkODJlZDJhMzAzNzFmMDZl
NmU0NGNmMTRlYzRmMjQ0YjNlNy4uYjBlNWEwYmJhYWJmNTMzNjU0ZDBkZDAxMWM0ZmE1OTY3OWMw
YWViOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVySG9zdC5oCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lckhvc3QuaApAQCAtMzgsNyArMzgsNyBA
QCBjbGFzcyBIVE1MNVNjcmlwdFJ1bm5lckhvc3QgewogcHVibGljOgogICAgIHZpcnR1YWwgfkhU
TUw1U2NyaXB0UnVubmVySG9zdCgpIHsgfQogCi0gICAgLy8gSW1wbGVtZW50b3JzIHNob3VsZCBj
YWxsIGNhY2hlZFJlc291cmNlLT5hZGRDbGllbnQoKSBoZXJlIG9yIHNvb24gYWZ0ZXIuCisgICAg
Ly8gSW1wbGVtZW50b3JzIG11c3QgY2FsbCBjYWNoZWRSZXNvdXJjZS0+YWRkQ2xpZW50KCkgaW1t
ZWRpYXRlbHkuCiAgICAgdmlydHVhbCB2b2lkIHdhdGNoRm9yTG9hZChDYWNoZWRSZXNvdXJjZSop
ID0gMDsKICAgICAvLyBJbXBsZW1lbnRvcnMgbXVzdCBjYWxsIGNhY2hlZFJlc291cmNlLT5yZW1v
dmVDbGllbnQoKSBpbW1lZGlhdGVseS4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcFdhdGNoaW5nRm9y
TG9hZChDYWNoZWRSZXNvdXJjZSopID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59722</attachid>
            <date>2010-06-24 20:56:09 -0700</date>
            <delta_ts>2010-06-24 21:03:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40968-20100624205606.patch</filename>
            <type>text/plain</type>
            <size>14827</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTFhNzY0ZjEyZDU0MTdkNmM4ODJhZWFiYTQ2MWYyYTczYjExZTZiMi4uYTllMDVmMGVhMjYyNzA0
YWMwNWU5NTAyYmI3Yjk5YWRhZGYzMTEzYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wNi0yNCAgVG9u
eSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgUGVuZGluZ1NjcmlwdCBob2xkIGEgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgb3BlbiBmb3IgaXRzIGxpZmV0aW1lCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDk2OAorCisgICAgICAgIFRoaXMgcmVw
bGFjZXMgdGhlIG1lY2hhbmlzbSBpbnRyb2R1Y2VkIGluIHI2MTM3NCB3aXRoIGEgc2ltcGxlcgor
ICAgICAgICBhcHByYW9jaCBmb3IgcHJldmVudGluZyB1bmV4cGVjdGVkIHB1cmdlczogYWx3YXlz
IGtlZXAgYSBjbGllbnQgb3Blbi4KKyAgICAgICAgVGhpcyBhcHByb2FjaCB3aWxsIGFsbG93IGRl
ZmVycmVkIHNjcmlwdHMgdG8gYWRkIGEgY2xpZW50IGFmdGVyCisgICAgICAgIHRoZSByZXNvdXJj
ZSBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gbG9hZGVkIHdpdGhvdXQgaGF2aW5nIHRvIHdvcnJ5IGFi
b3V0CisgICAgICAgIHRoZSBidWZmZXIgYmVpbmcgcHVyZ2VkIGluIHRoZSBtZWFudGltZS4KKwkK
KyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgbWFraW5nIGEgQ2FjaGVkUmVzb3VyY2UgcHVy
c2UgaXRzZWxmIGlzIG5vdAorICAgICAgICB0ZXN0YWJsZSBmcm9tIGEgTGF5b3V0VGVzdC4KKwor
ICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxEb2N1bWVudFBhcnNlcjo6d2F0Y2hGb3JMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudFBhcnNlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGh0bWwvSFRNTFNj
cmlwdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjp+SFRN
TFNjcmlwdFJ1bm5lcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpzb3Vy
Y2VGcm9tUGVuZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVy
Ojppc1BlbmRpbmdTY3JpcHRSZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVu
bmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0
UnVubmVyOjp3YXRjaEZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5l
cjo6c3RvcFdhdGNoaW5nRm9yTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVu
bmVyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTY3JpcHRSdW5uZXI6OnJlcXVlc3RTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNj
cmlwdFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6flBlbmRpbmdTY3JpcHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6cmVsZWFzZUVsZW1lbnRBbmRD
bGVhcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpQZW5kaW5nU2NyaXB0
OjpzZXRDYWNoZWRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6
UGVuZGluZ1NjcmlwdDo6Y2FjaGVkU2NyaXB0KToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRS
dW5uZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OlBlbmRpbmdTY3Jp
cHQ6OlBlbmRpbmdTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6
UGVuZGluZ1NjcmlwdDo6d2F0Y2hpbmdGb3JMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
Y3JpcHRSdW5uZXI6OlBlbmRpbmdTY3JpcHQ6OnNldFdhdGNoaW5nRm9yTG9hZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpQZW5kaW5nU2NyaXB0Ojpub3RpZnlGaW5pc2hl
ZCk6CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0UnVubmVySG9zdC5oOgorCiAyMDEwLTA2LTI0
ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJz
ZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggOWQ1YmE1
OTg4NzM4MDI2NmQ2MzA0NjlkMWNhYjYzODcyNjRlYzliNy4uMDM0ZGNmOTVmMjlmZWQ3NmU4Njdl
M2QxNDZhOTNlYjk4M2MxZjI4NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAg
LTMzMiw2ICszMzIsMTAgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnJlc3VtZVBhcnNpbmdB
ZnRlclNjcmlwdEV4ZWN1dGlvbigpCiAKIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjp3YXRjaEZv
ckxvYWQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFNjcmlwdCkKIHsKKyAgICBBU1NFUlQoIWNhY2hl
ZFNjcmlwdC0+aXNMb2FkZWQoKSk7CisgICAgLy8gYWRkQ2xpZW50IHdvdWxkIGNhbGwgbm90aWZ5
RmluaXNoZWQgaWYgdGhlIGxvYWQgd2VyZSBjb21wbGV0ZS4KKyAgICAvLyBDYWxsZXJzIGRvIG5v
dCBleHBlY3QgdG8gYmUgcmUtZW50ZXJlZCBmcm9tIHRoaXMgY2FsbCwgc28gdGhleSBzaG91bGQK
KyAgICAvLyBub3QgYW4gYWxyZWFkeS1sb2FkZWQgQ2FjaGVkUmVzb3VyY2UuCiAgICAgY2FjaGVk
U2NyaXB0LT5hZGRDbGllbnQodGhpcyk7CiB9CiAKQEAgLTM1MCwxNCArMzU0LDYgQEAgYm9vbCBI
VE1MRG9jdW1lbnRQYXJzZXI6OnNob3VsZExvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoY29uc3Qg
QXRvbWljU3RyaW5nJiBzcmMKIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgQVNTRVJUKG1fc2NyaXB0
UnVubmVyKTsKLSAgICAvLyBJZ25vcmUgY2FsbHMgdW5sZXNzIHdlIGhhdmUgYSBzY3JpcHQgYmxv
Y2tpbmcgdGhlIHBhcnNlciB3YWl0aW5nCi0gICAgLy8gZm9yIGl0cyBvd24gbG9hZC4gIE90aGVy
d2lzZSB0aGlzIG1heSBiZSBhIGxvYWQgY2FsbGJhY2sgZnJvbQotICAgIC8vIENhY2hlZFJlc291
cmNlOjphZGRDbGllbnQgYmVjYXVzZSB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBjYWNo
ZS4KLSAgICAvLyBIVE1MU2NyaXB0UnVubmVyIG1heSBub3QgYmUgcmVhZHkgdG8gaGFuZGxlIHJ1
bm5pbmcgdGhhdCBzY3JpcHQgeWV0LgotICAgIGlmICghbV9zY3JpcHRSdW5uZXItPmhhc1Njcmlw
dHNXYWl0aW5nRm9yTG9hZCgpKSB7Ci0gICAgICAgIEFTU0VSVChtX3NjcmlwdFJ1bm5lci0+aW5T
Y3JpcHRFeGVjdXRpb24oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgQVNTRVJUKCFp
blNjcmlwdEV4ZWN1dGlvbigpKTsKICAgICBBU1NFUlQobV90cmVlQnVpbGRlci0+aXNQYXVzZWQo
KSk7CiAgICAgLy8gTm90ZTogV2Ugb25seSBldmVyIHdhaXQgb24gb25lIHNjcmlwdCBhdCBhIHRp
bWUsIHNvIHdlIGFsd2F5cyBrbm93IHRoaXMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
U2NyaXB0UnVubmVyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0UnVubmVyLmNwcAppbmRl
eCBhYjM1NDQ5OTZjZDRjODFiYjRkZGY2ZDMxZGY4MDEyYjBkOGIzNzk0Li4yOTc5MGMwNTZiZDk0
NTljYWMwN2UzNTdjOWM4MGI0ZDkwNDM0Yzc2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TFNjcmlwdFJ1bm5lci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRSdW5uZXIuY3Bw
CkBAIC03NCw3ICs3NCw3IEBAIEhUTUxTY3JpcHRSdW5uZXI6OkhUTUxTY3JpcHRSdW5uZXIoRG9j
dW1lbnQqIGRvY3VtZW50LCBIVE1MU2NyaXB0UnVubmVySG9zdCogaG9zCiBIVE1MU2NyaXB0UnVu
bmVyOjp+SFRNTFNjcmlwdFJ1bm5lcigpCiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBiZSBw
YXNzZWQgYSAiZG9uZSBsb2FkaW5nL3BhcnNpbmciIGNhbGxiYWNrIHNvb25lciB0aGFuIGRlc3Ry
dWN0aW9uPwotICAgIGlmIChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQgJiYg
bV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkKCkpCisgICAgaWYgKG1fcGFy
c2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpICYmIG1fcGFyc2luZ0Jsb2NraW5nU2Ny
aXB0LndhdGNoaW5nRm9yTG9hZCgpKQogICAgICAgICBzdG9wV2F0Y2hpbmdGb3JMb2FkKG1fcGFy
c2luZ0Jsb2NraW5nU2NyaXB0KTsKIH0KIApAQCAtOTksMTAgKzk5LDEwIEBAIGlubGluZSBQYXNz
UmVmUHRyPEV2ZW50PiBjcmVhdGVTY3JpcHRFcnJvckV2ZW50KCkKIAogU2NyaXB0U291cmNlQ29k
ZSBIVE1MU2NyaXB0UnVubmVyOjpzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChjb25zdCBQZW5kaW5n
U2NyaXB0JiBzY3JpcHQsIGJvb2wmIGVycm9yT2NjdXJyZWQpCiB7Ci0gICAgaWYgKHNjcmlwdC5j
YWNoZWRTY3JpcHQpIHsKLSAgICAgICAgZXJyb3JPY2N1cnJlZCA9IHNjcmlwdC5jYWNoZWRTY3Jp
cHQtPmVycm9yT2NjdXJyZWQoKTsKLSAgICAgICAgQVNTRVJUKHNjcmlwdC5jYWNoZWRTY3JpcHQt
PmlzTG9hZGVkKCkpOwotICAgICAgICByZXR1cm4gU2NyaXB0U291cmNlQ29kZShzY3JpcHQuY2Fj
aGVkU2NyaXB0LmdldCgpKTsKKyAgICBpZiAoc2NyaXB0LmNhY2hlZFNjcmlwdCgpKSB7CisgICAg
ICAgIGVycm9yT2NjdXJyZWQgPSBzY3JpcHQuY2FjaGVkU2NyaXB0KCktPmVycm9yT2NjdXJyZWQo
KTsKKyAgICAgICAgQVNTRVJUKHNjcmlwdC5jYWNoZWRTY3JpcHQoKS0+aXNMb2FkZWQoKSk7Cisg
ICAgICAgIHJldHVybiBTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5jYWNoZWRTY3JpcHQoKSk7CiAg
ICAgfQogICAgIGVycm9yT2NjdXJyZWQgPSBmYWxzZTsKICAgICByZXR1cm4gU2NyaXB0U291cmNl
Q29kZShzY3JpcHQuZWxlbWVudC0+dGV4dENvbnRlbnQoKSwgZG9jdW1lbnRVUkxGb3JTY3JpcHRF
eGVjdXRpb24obV9kb2N1bWVudCksIHNjcmlwdC5zdGFydGluZ0xpbmVOdW1iZXIpOwpAQCAtMTEz
LDcgKzExMyw3IEBAIGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5nU2NyaXB0UmVhZHko
Y29uc3QgUGVuZGluZ1NjcmlwdCYgc2NyaXB0KQogICAgIG1faGFzU2NyaXB0c1dhaXRpbmdGb3JT
dHlsZXNoZWV0cyA9ICFtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKTsKICAgICBp
ZiAobV9oYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKHNjcmlwdC5jYWNoZWRTY3JpcHQgJiYgIXNjcmlwdC5jYWNoZWRTY3JpcHQt
PmlzTG9hZGVkKCkpCisgICAgaWYgKHNjcmlwdC5jYWNoZWRTY3JpcHQoKSAmJiAhc2NyaXB0LmNh
Y2hlZFNjcmlwdCgpLT5pc0xvYWRlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0xMjcsMTIgKzEyNywxMSBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6
OmV4ZWN1dGVQZW5kaW5nU2NyaXB0KCkKICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUg
PSBzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCwgZXJyb3JP
Y2N1cnJlZCk7CiAKICAgICAvLyBTdG9wIHdhdGNoaW5nIGxvYWRzIGJlZm9yZSBleGVjdXRlU2Ny
aXB0IHRvIHByZXZlbnQgcmVjdXJzaW9uIGlmIHRoZSBzY3JpcHQgcmVsb2FkcyBpdHNlbGYuCi0g
ICAgaWYgKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCAmJiBtX3BhcnNpbmdC
bG9ja2luZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQoKSkKKyAgICBpZiAobV9wYXJzaW5nQmxvY2tp
bmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkgJiYgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQud2F0Y2hp
bmdGb3JMb2FkKCkpCiAgICAgICAgIHN0b3BXYXRjaGluZ0ZvckxvYWQobV9wYXJzaW5nQmxvY2tp
bmdTY3JpcHQpOwogCiAgICAgLy8gQ2xlYXIgdGhlIHBlbmRpbmcgc2NyaXB0IGJlZm9yZSBwb3Nz
aWJsZSByZW50cmFuY3kgZnJvbSBleGVjdXRlU2NyaXB0KCkKLSAgICBSZWZQdHI8RWxlbWVudD4g
c2NyaXB0RWxlbWVudCA9IG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmVsZW1lbnQucmVsZWFzZSgp
OwotICAgIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0ID0gUGVuZGluZ1NjcmlwdCgpOworICAgIFJl
ZlB0cjxFbGVtZW50PiBzY3JpcHRFbGVtZW50ID0gbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQucmVs
ZWFzZUVsZW1lbnRBbmRDbGVhcigpOwogICAgIHsKICAgICAgICAgTmVzdFNjcmlwdCBuZXN0aW5n
TGV2ZWwobV9zY3JpcHROZXN0aW5nTGV2ZWwsIG1faG9zdC0+aW5wdXRTdHJlYW0oKSk7CiAgICAg
ICAgIGlmIChlcnJvck9jY3VycmVkKQpAQCAtMTYxLDMwICsxNjAsMTggQEAgdm9pZCBIVE1MU2Ny
aXB0UnVubmVyOjpleGVjdXRlU2NyaXB0KEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHMKICAgICBtX2RvY3VtZW50LT5mcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNj
cmlwdChzb3VyY2VDb2RlKTsKIH0KIAotYm9vbCBIVE1MU2NyaXB0UnVubmVyOjpoYXNTY3JpcHRz
V2FpdGluZ0ZvckxvYWQoKSBjb25zdAotewotICAgIC8vIFdlJ3JlIG9ubHkgYWN0dWFsbHkgd2Fp
dGluZyBmb3IgYSBsb2FkLiAgVGhpcyBhbGxvd3MgdXMgdG8gaWdub3JlIGxvYWQKLSAgICAvLyBj
YWxsYmFja3Mgd2hlbiBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50IGNhbGxzIG5vdGlmeUZpbmlz
aGVkIGJlY2F1c2UKLSAgICAvLyBvZiBhIGNhY2hlIGhpdCAobm90IGJlY2F1c2Ugb2YgYSBsb2Fk
IHdlIHdlcmUgc2V0IHVwIHRvIHdhaXQgZm9yKS4KLSAgICByZXR1cm4gbV9wYXJzaW5nQmxvY2tp
bmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkU3RhdGUgPT0gUGVuZGluZ1NjcmlwdDo6V2F0Y2hpbmdG
b3JMb2FkOwotfQotCiB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OndhdGNoRm9yTG9hZChQZW5kaW5n
U2NyaXB0JiBwZW5kaW5nU2NyaXB0KQogewogICAgIEFTU0VSVCghcGVuZGluZ1NjcmlwdC53YXRj
aGluZ0ZvckxvYWQoKSk7Ci0gICAgLy8gQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudCB3aWxsIGNh
bGwgbm90aWZ5RmluaXNoZWQgaWYgdGhlIGxvYWQgaXMgYWxyZWFkeQotICAgIC8vIGNvbXBsZXRl
LiAgV2Ugc2V0IHdhdGNoaW5nRm9yTG9hZFN0YXRlIHRvIFJlZ2lzdGVyaW5nRm9yV2F0Y2ggc28g
dGhhdCB3ZQotICAgIC8vIGtub3cgdG8gaWdub3JlIGFueSBub3RpZnlGaW5pc2hlZCBjYWxsIGR1
cmluZyBhZGRDbGllbnQuCi0gICAgcGVuZGluZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWRTdGF0ZSA9
IFBlbmRpbmdTY3JpcHQ6OlJlZ2lzdGVyaW5nRm9yV2F0Y2g7Ci0gICAgbV9ob3N0LT53YXRjaEZv
ckxvYWQocGVuZGluZ1NjcmlwdC5jYWNoZWRTY3JpcHQuZ2V0KCkpOwotICAgIHBlbmRpbmdTY3Jp
cHQud2F0Y2hpbmdGb3JMb2FkU3RhdGUgPSBQZW5kaW5nU2NyaXB0OjpXYXRjaGluZ0ZvckxvYWQ7
CisgICAgbV9ob3N0LT53YXRjaEZvckxvYWQocGVuZGluZ1NjcmlwdC5jYWNoZWRTY3JpcHQoKSk7
CisgICAgcGVuZGluZ1NjcmlwdC5zZXRXYXRjaGluZ0ZvckxvYWQodHJ1ZSk7CiB9CiAKIHZvaWQg
SFRNTFNjcmlwdFJ1bm5lcjo6c3RvcFdhdGNoaW5nRm9yTG9hZChQZW5kaW5nU2NyaXB0JiBwZW5k
aW5nU2NyaXB0KQogewogICAgIEFTU0VSVChwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCgp
KTsKLSAgICBtX2hvc3QtPnN0b3BXYXRjaGluZ0ZvckxvYWQocGVuZGluZ1NjcmlwdC5jYWNoZWRT
Y3JpcHQuZ2V0KCkpOwotICAgIHBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkU3RhdGUgPSBQ
ZW5kaW5nU2NyaXB0OjpOb3RXYXRjaGluZ0ZvckxvYWQ7CisgICAgbV9ob3N0LT5zdG9wV2F0Y2hp
bmdGb3JMb2FkKHBlbmRpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkpOworICAgIHBlbmRpbmdTY3Jp
cHQuc2V0V2F0Y2hpbmdGb3JMb2FkKGZhbHNlKTsKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBzaG91
bGQgbWF0Y2ggMTAuMi41LjExICJBbiBlbmQgdGFnIHdob3NlIHRhZyBuYW1lIGlzICdzY3JpcHQn
IgpAQCAtMjI0LDE0ICsyMTEsMTAgQEAgYm9vbCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGFy
c2luZ0Jsb2NraW5nU2NyaXB0cygpCiAKIGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNj
cmlwdHNXYWl0aW5nRm9yTG9hZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkU2NyaXB0KQogewotICAg
IC8vIENhbGxlcnMgc2hvdWxkIGNoZWNrIGhhc1NjcmlwdHNXYWl0aW5nRm9yTG9hZCgpIGJlZm9y
ZSBjYWxsaW5nCi0gICAgLy8gdG8gcHJldmVudCBwYXJzZXIgb3Igc2NyaXB0IHJlLWVudHJ5IGR1
cmluZyBkdWUgdG8KLSAgICAvLyBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50IGNhbGxpbmcgbm90
aWZ5RmluaXNoZWQgb24gY2FjaGUtaGl0cy4KLSAgICBBU1NFUlQoaGFzU2NyaXB0c1dhaXRpbmdG
b3JMb2FkKCkpOwogICAgIEFTU0VSVCghbV9zY3JpcHROZXN0aW5nTGV2ZWwpOwogICAgIEFTU0VS
VChoYXZlUGFyc2luZ0Jsb2NraW5nU2NyaXB0KCkpOwotICAgIEFTU0VSVF9VTlVTRUQoY2FjaGVk
U2NyaXB0LCBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQgPT0gY2FjaGVkU2Ny
aXB0KTsKLSAgICBBU1NFUlQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0LT5p
c0xvYWRlZCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGNhY2hlZFNjcmlwdCwgbV9wYXJzaW5nQmxv
Y2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkgPT0gY2FjaGVkU2NyaXB0KTsKKyAgICBBU1NFUlQo
bV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCktPmlzTG9hZGVkKCkpOwogICAg
IHJldHVybiBleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cygpOwogfQogCkBAIC0yNjIsMTYg
KzI0NSwxNCBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OnJlcXVlc3RTY3JpcHQoRWxlbWVudCog
c2NyaXB0KQogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOyAvLyBEaXNwYXRjaCBlcnJvciBldmVu
dC4KICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5j
YWNoZWRTY3JpcHQgPSBjYWNoZWRTY3JpcHQ7Ci0KLSAgICAvLyBBbHdheXMgY2FsbCB3YXRjaEZv
ckxvYWQsIGV2ZW4gaWYgdGhlIHNjcmlwdCBpcyBhbHJlYWR5IGxvYWRlZC4KLSAgICAvLyBDYWNo
ZWRSZXNvdXJjZSBtYXkgcHVyZ2UgaXRzIGRhdGEgaWYgaXQgaGFzIG5vIGNsaWVudHMsIHdoaWNo
IHdvdWxkIGNhdXNlCi0gICAgLy8gbGF0ZXIgc2NyaXB0IGV4ZWN1dGlvbiB0byBmYWlsLiAgd2F0
Y2hGb3JMb2FkIHNldHMgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQKLSAgICAvLyB0byB0aGUgUmVn
aXN0ZXJpbmdGb3JXYXRjaCBzdGF0ZSBzbyB3ZSBrbm93IHRvIGlnbm9yZSBhbnkKLSAgICAvLyBl
eGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkIGNhbGxiYWNrcyBkdXJpbmcgdGhlIHdhdGNoRm9y
TG9hZCBjYWxsLgotICAgIHdhdGNoRm9yTG9hZChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCk7Ci0g
ICAgLy8gQ2FsbGVycyB3aWxsIGF0dGVtcHQgdG8gcnVuIHRoZSBtX3BhcnNpbmdCbG9ja2luZ1Nj
cmlwdCBpZiBwb3NzaWJsZQotICAgIC8vIGJlZm9yZSByZXR1cm5pbmcgY29udHJvbCB0byB0aGUg
cGFyc2VyLgorCisgICAgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuc2V0Q2FjaGVkU2NyaXB0KGNh
Y2hlZFNjcmlwdCk7CisKKyAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgYSBsb2FkIGNhbGxiYWNr
IGlmIGNhY2hlZFNjcmlwdCBpcyBub3QgYWxyZWFkeQorICAgIC8vIGluIHRoZSBjYWNoZS4gIENh
bGxlcnMgd2lsbCBhdHRlbXB0IHRvIHJ1biB0aGUgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQKKyAg
ICAvLyBpZiBwb3NzaWJsZSBiZWZvcmUgcmV0dXJuaW5nIGNvbnRyb2wgdG8gdGhlIHBhcnNlci4K
KyAgICBpZiAoIW1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpLT5pc0xvYWRl
ZCgpKQorICAgICAgICB3YXRjaEZvckxvYWQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQpOwogfQog
CiAvLyBUaGlzIG1ldGhvZCBpcyBtZWFudCB0byBtYXRjaCB0aGUgSFRNTDUgZGVmaW5pdGlvbiBv
ZiAicnVubmluZyBhIHNjcmlwdCIKQEAgLTI5Nyw0ICsyNzgsMzQgQEAgdm9pZCBIVE1MU2NyaXB0
UnVubmVyOjpydW5TY3JpcHQoRWxlbWVudCogc2NyaXB0LCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVy
KQogICAgIH0KIH0KIAorSFRNTFNjcmlwdFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6flBlbmRpbmdT
Y3JpcHQoKQoreworICAgIGlmIChtX2NhY2hlZFNjcmlwdCkKKyAgICAgICAgbV9jYWNoZWRTY3Jp
cHQtPnJlbW92ZUNsaWVudCh0aGlzKTsKK30KKworUGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MU2Ny
aXB0UnVubmVyOjpQZW5kaW5nU2NyaXB0OjpyZWxlYXNlRWxlbWVudEFuZENsZWFyKCkKK3sKKyAg
ICBzZXRDYWNoZWRTY3JpcHQoMCk7CisgICAgc3RhcnRpbmdMaW5lTnVtYmVyID0gMDsKKyAgICBt
X3dhdGNoaW5nRm9yTG9hZCA9IGZhbHNlOworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsK
K30KKwordm9pZCBIVE1MU2NyaXB0UnVubmVyOjpQZW5kaW5nU2NyaXB0OjpzZXRDYWNoZWRTY3Jp
cHQoQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQpCit7CisgICAgaWYgKG1fY2FjaGVkU2NyaXB0
ID09IGNhY2hlZFNjcmlwdCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2NhY2hlZFNjcmlw
dCkKKyAgICAgICAgbV9jYWNoZWRTY3JpcHQtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBtX2Nh
Y2hlZFNjcmlwdCA9IGNhY2hlZFNjcmlwdDsKKyAgICBpZiAobV9jYWNoZWRTY3JpcHQpCisgICAg
ICAgIG1fY2FjaGVkU2NyaXB0LT5hZGRDbGllbnQodGhpcyk7Cit9CisKK0NhY2hlZFNjcmlwdCog
SFRNTFNjcmlwdFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6Y2FjaGVkU2NyaXB0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9jYWNoZWRTY3JpcHQuZ2V0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0UnVubmVyLmggYi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdFJ1
bm5lci5oCmluZGV4IDcyNjAwMDc5N2M0OThmNWQ2NmJkZTY5ZDAyZDU0YjUyOGFjOGUyYjIuLmY5
M2FlMTAyYjdkMjhlNzIxNWNlNzk4YTFkYWY3ZDJmNGU3ZjkwYWQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MU2NyaXB0UnVubmVyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRS
dW5uZXIuaApAQCAtNDksNDIgKzQ5LDUwIEBAIHB1YmxpYzoKICAgICAvLyBQcm9jZXNzZXMgdGhl
IHBhc3NlZCBpbiBzY3JpcHQgYW5kIGFueSBwZW5kaW5nIHNjcmlwdHMgaWYgcG9zc2libGUuCiAg
ICAgYm9vbCBleGVjdXRlKFBhc3NSZWZQdHI8RWxlbWVudD4gc2NyaXB0VG9Qcm9jZXNzLCBpbnQg
c2NyaXB0U3RhcnRMaW5lKTsKIAotICAgIGJvb2wgaGFzU2NyaXB0c1dhaXRpbmdGb3JMb2FkKCkg
Y29uc3Q7CiAgICAgYm9vbCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkKENhY2hlZFJlc291
cmNlKik7Ci0KICAgICBib29sIGhhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKSBjb25z
dCB7IHJldHVybiBtX2hhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHM7IH0KICAgICBib29s
IGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCk7CiAKICAgICBib29sIGluU2Ny
aXB0RXhlY3V0aW9uKCkgeyByZXR1cm4gISFtX3NjcmlwdE5lc3RpbmdMZXZlbDsgfQogCiBwcml2
YXRlOgotICAgIHN0cnVjdCBQZW5kaW5nU2NyaXB0IHsKLSAgICAgICAgLy8gVGhpcyBzdGF0ZSBj
b250cm9scyB3aGV0aGVyIHdlIG5lZWQgdG8gZG8gYW55dGhpbmcgd2l0aCB0aGlzIHNjcmlwdAot
ICAgICAgICAvLyB3aGVuIHdlIGdldCBhIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQgY2Fs
bGJhY2suCi0gICAgICAgIC8vIFdlIGlnbm9yZSBjYWxsYmFja3MgZHVyaW5nIFJlZ2lzdGVyaW5n
Rm9yV2F0Y2guCi0gICAgICAgIGVudW0gV2F0Y2hpbmdGb3JMb2FkU3RhdGUgewotICAgICAgICAg
ICAgTm90V2F0Y2hpbmdGb3JMb2FkLAotICAgICAgICAgICAgUmVnaXN0ZXJpbmdGb3JXYXRjaCwK
LSAgICAgICAgICAgIFdhdGNoaW5nRm9yTG9hZCwKLSAgICAgICAgfTsKLQorICAgIC8vIEEgY29u
dGFpbmVyIGZvciBhbiBleHRlcm5hbCBzY3JpcHQgd2hpY2ggbWF5IGJlIGxvYWRlZCBhbmQgZXhl
Y3V0ZWQuCisgICAgLy8KKyAgICAvLyBBIENhY2hlZFJlc291cmNlSGFuZGxlIGFsb25lIGRvZXMg
bm90IHByZXZlbnQgdGhlIHVuZGVybHlpbmcgQ2FjaGVkUmVzb3VyY2UKKyAgICAvLyBmcm9tIHB1
cmdpbmcgaXRzIGRhdGEgYnVmZmVyLiBUaGlzIGNsYXNzIGhvbGRzIGEgZHVtbXkgY2xpZW50IG9w
ZW4gZm9yIGl0cworICAgIC8vIGxpZmV0aW1lIGluIG9yZGVyIHRvIGd1YXJhbnRlZSB0aGF0IHRo
ZSBkYXRhIGJ1ZmZlciB3aWxsIG5vdCBiZSBwdXJnZWQuCisgICAgLy8KKyAgICAvLyBGSVhNRTog
RmluaXNoIHR1cm5pbmcgdGhpcyBpbnRvIGEgcHJvcGVyIGNsYXNzLgorICAgIGNsYXNzIFBlbmRp
bmdTY3JpcHQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQsIE5vbmNvcHlhYmxlIHsKKyAg
ICBwdWJsaWM6CiAgICAgICAgIFBlbmRpbmdTY3JpcHQoKQotICAgICAgICAgICAgOiB3YXRjaGlu
Z0ZvckxvYWRTdGF0ZShOb3RXYXRjaGluZ0ZvckxvYWQpCi0gICAgICAgICAgICAsIHN0YXJ0aW5n
TGluZU51bWJlcigwKQorICAgICAgICAgICAgOiBzdGFydGluZ0xpbmVOdW1iZXIoMCkKKyAgICAg
ICAgICAgICwgbV93YXRjaGluZ0ZvckxvYWQoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIGJvb2wgd2F0Y2hpbmdGb3JMb2FkKCkKKyAgICAgICAgflBlbmRpbmdTY3JpcHQo
KTsKKworICAgICAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IHJlbGVhc2VFbGVtZW50QW5kQ2xlYXIo
KTsKKworICAgICAgICBib29sIHdhdGNoaW5nRm9yTG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2F0
Y2hpbmdGb3JMb2FkOyB9CisgICAgICAgIHZvaWQgc2V0V2F0Y2hpbmdGb3JMb2FkKGJvb2wgYikg
eyBtX3dhdGNoaW5nRm9yTG9hZCA9IGI7IH0KKworICAgICAgICBDYWNoZWRTY3JpcHQqIGNhY2hl
ZFNjcmlwdCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldENhY2hlZFNjcmlwdChDYWNoZWRTY3Jp
cHQqKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UqKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gd2F0Y2hpbmdGb3JMb2FkU3RhdGUg
IT0gTm90V2F0Y2hpbmdGb3JMb2FkOwogICAgICAgICB9CiAKICAgICAgICAgUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQ7Ci0gICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4g
Y2FjaGVkU2NyaXB0OwotICAgICAgICBXYXRjaGluZ0ZvckxvYWRTdGF0ZSB3YXRjaGluZ0Zvckxv
YWRTdGF0ZTsKICAgICAgICAgaW50IHN0YXJ0aW5nTGluZU51bWJlcjsgLy8gT25seSB1c2VkIGZv
ciBpbmxpbmUgc2NyaXB0IHRhZ3MuCiAgICAgICAgIC8vIEhUTUw1IGhhcyBhbiBpc1JlYWR5IHBh
cmFtZXRlciwgaG93ZXZlciBpc1JlYWR5IGVuZHMgdXAgZXF1aXZhbGVudCB0bwogICAgICAgICAv
LyBtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSAmJiBjYWNoZWRTY3JpcHQtPmlz
TG9hZGVkKCkKKworICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgbV93YXRjaGluZ0ZvckxvYWQ7
CisgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gbV9jYWNoZWRTY3Jp
cHQ7CiAgICAgfTsKIAogICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxTY3JpcHRSdW5uZXJIb3N0LmggYi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dFJ1bm5lckhvc3QuaAppbmRleCA4MmFkNzBkZGJjMjA5ODkyMDg3MWQ4YjhlNmZmODJiM2I0YzVk
MDNjLi5hMTI5NTIwNzlmODk0NjcxYjQ2MWU2NzE0MTY1ZDc4NmFhZTIxNzEzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdFJ1bm5lckhvc3QuaAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTFNjcmlwdFJ1bm5lckhvc3QuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBIVE1MU2NyaXB0
UnVubmVySG9zdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SFRNTFNjcmlwdFJ1bm5lckhvc3Qo
KSB7IH0KIAotICAgIC8vIEltcGxlbWVudG9ycyBtdXN0IGNhbGwgY2FjaGVkUmVzb3VyY2UtPmFk
ZENsaWVudCgpIGltbWVkaWF0ZWx5LgorICAgIC8vIEltcGxlbWVudG9ycyBzaG91bGQgY2FsbCBj
YWNoZWRSZXNvdXJjZS0+YWRkQ2xpZW50KCkgaGVyZSBvciBzb29uIGFmdGVyLgogICAgIHZpcnR1
YWwgdm9pZCB3YXRjaEZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqKSA9IDA7CiAgICAgLy8gSW1wbGVt
ZW50b3JzIG11c3QgY2FsbCBjYWNoZWRSZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCkgaW1tZWRpYXRl
bHkuCiAgICAgdmlydHVhbCB2b2lkIHN0b3BXYXRjaGluZ0ZvckxvYWQoQ2FjaGVkUmVzb3VyY2Uq
KSA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59725</attachid>
            <date>2010-06-24 21:04:04 -0700</date>
            <delta_ts>2010-06-25 22:27:49 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-40968-20100624210402.patch</filename>
            <type>text/plain</type>
            <size>14823</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTFhNzY0ZjEyZDU0MTdkNmM4ODJhZWFiYTQ2MWYyYTczYjExZTZiMi4uNDU4MGYzMzM0OWM4YTU5
ZGE1NmNlNGVjNTk3ZDFhMmUzYmRlNmZiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wNi0yNCAgVG9u
eSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgU2VpZGVsLgorCisgICAgICAgIE1ha2UgUGVuZGluZ1NjcmlwdCBob2xkIGEgQ2FjaGVk
UmVzb3VyY2VDbGllbnQgb3BlbiBmb3IgaXRzIGxpZmV0aW1lCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDk2OAorCisgICAgICAgIFRoaXMgcmVwbGFj
ZXMgdGhlIG1lY2hhbmlzbSBpbnRyb2R1Y2VkIGluIHI2MTM3NCB3aXRoIGEgc2ltcGxlcgorICAg
ICAgICBhcHByYW9jaCBmb3IgcHJldmVudGluZyB1bmV4cGVjdGVkIHB1cmdlczogYWx3YXlzIGtl
ZXAgYSBjbGllbnQgb3Blbi4KKyAgICAgICAgVGhpcyBhcHByb2FjaCB3aWxsIGFsbG93IGRlZmVy
cmVkIHNjcmlwdHMgdG8gYWRkIGEgY2xpZW50IGFmdGVyCisgICAgICAgIHRoZSByZXNvdXJjZSBt
YXkgaGF2ZSBhbHJlYWR5IGJlZW4gbG9hZGVkIHdpdGhvdXQgaGF2aW5nIHRvIHdvcnJ5IGFib3V0
CisgICAgICAgIHRoZSBidWZmZXIgYmVpbmcgcHVyZ2VkIGluIHRoZSBtZWFudGltZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBtYWtpbmcgYSBDYWNoZWRSZXNvdXJjZSBwdXJzZSBp
dHNlbGYgaXMgbm90CisgICAgICAgIHRlc3RhYmxlIGZyb20gYSBMYXlvdXRUZXN0LgorCisgICAg
ICAgICogaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50UGFyc2VyOjp3YXRjaEZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERv
Y3VtZW50UGFyc2VyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0
UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6On5IVE1MU2Ny
aXB0UnVubmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OnNvdXJjZUZy
b21QZW5kaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6Omlz
UGVuZGluZ1NjcmlwdFJlYWR5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6
OmV4ZWN1dGVQZW5kaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5u
ZXI6OndhdGNoRm9yTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpz
dG9wV2F0Y2hpbmdGb3JMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6
OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNj
cmlwdFJ1bm5lcjo6cmVxdWVzdFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0
UnVubmVyOjpQZW5kaW5nU2NyaXB0Ojp+UGVuZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2NyaXB0UnVubmVyOjpQZW5kaW5nU2NyaXB0OjpyZWxlYXNlRWxlbWVudEFuZENsZWFy
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OlBlbmRpbmdTY3JpcHQ6OnNl
dENhY2hlZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpQZW5k
aW5nU2NyaXB0OjpjYWNoZWRTY3JpcHQpOgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdFJ1bm5l
ci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6
UGVuZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpQZW5k
aW5nU2NyaXB0Ojp3YXRjaGluZ0ZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlw
dFJ1bm5lcjo6UGVuZGluZ1NjcmlwdDo6c2V0V2F0Y2hpbmdGb3JMb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OlBlbmRpbmdTY3JpcHQ6Om5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRSdW5uZXJIb3N0Lmg6CisKIDIwMTAtMDYtMjQgIE5h
dGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5j
cHAgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA5ZDViYTU5ODg3
MzgwMjY2ZDYzMDQ2OWQxY2FiNjM4NzI2NGVjOWI3Li4wMzRkY2Y5NWYyOWZlZDc2ZTg2N2UzZDE0
NmE5M2ViOTgzYzFmMjg2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFy
c2VyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMzMy
LDYgKzMzMiwxMCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVy
U2NyaXB0RXhlY3V0aW9uKCkKIAogdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OndhdGNoRm9yTG9h
ZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkU2NyaXB0KQogeworICAgIEFTU0VSVCghY2FjaGVkU2Ny
aXB0LT5pc0xvYWRlZCgpKTsKKyAgICAvLyBhZGRDbGllbnQgd291bGQgY2FsbCBub3RpZnlGaW5p
c2hlZCBpZiB0aGUgbG9hZCB3ZXJlIGNvbXBsZXRlLgorICAgIC8vIENhbGxlcnMgZG8gbm90IGV4
cGVjdCB0byBiZSByZS1lbnRlcmVkIGZyb20gdGhpcyBjYWxsLCBzbyB0aGV5IHNob3VsZAorICAg
IC8vIG5vdCBhbiBhbHJlYWR5LWxvYWRlZCBDYWNoZWRSZXNvdXJjZS4KICAgICBjYWNoZWRTY3Jp
cHQtPmFkZENsaWVudCh0aGlzKTsKIH0KIApAQCAtMzUwLDE0ICszNTQsNiBAQCBib29sIEhUTUxE
b2N1bWVudFBhcnNlcjo6c2hvdWxkTG9hZEV4dGVybmFsU2NyaXB0RnJvbVNyYyhjb25zdCBBdG9t
aWNTdHJpbmcmIHNyYwogdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKICAgICBBU1NFUlQobV9zY3JpcHRSdW5u
ZXIpOwotICAgIC8vIElnbm9yZSBjYWxscyB1bmxlc3Mgd2UgaGF2ZSBhIHNjcmlwdCBibG9ja2lu
ZyB0aGUgcGFyc2VyIHdhaXRpbmcKLSAgICAvLyBmb3IgaXRzIG93biBsb2FkLiAgT3RoZXJ3aXNl
IHRoaXMgbWF5IGJlIGEgbG9hZCBjYWxsYmFjayBmcm9tCi0gICAgLy8gQ2FjaGVkUmVzb3VyY2U6
OmFkZENsaWVudCBiZWNhdXNlIHRoZSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIGNhY2hlLgot
ICAgIC8vIEhUTUxTY3JpcHRSdW5uZXIgbWF5IG5vdCBiZSByZWFkeSB0byBoYW5kbGUgcnVubmlu
ZyB0aGF0IHNjcmlwdCB5ZXQuCi0gICAgaWYgKCFtX3NjcmlwdFJ1bm5lci0+aGFzU2NyaXB0c1dh
aXRpbmdGb3JMb2FkKCkpIHsKLSAgICAgICAgQVNTRVJUKG1fc2NyaXB0UnVubmVyLT5pblNjcmlw
dEV4ZWN1dGlvbigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBBU1NFUlQoIWluU2Ny
aXB0RXhlY3V0aW9uKCkpOwogICAgIEFTU0VSVChtX3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKTsK
ICAgICAvLyBOb3RlOiBXZSBvbmx5IGV2ZXIgd2FpdCBvbiBvbmUgc2NyaXB0IGF0IGEgdGltZSwg
c28gd2UgYWx3YXlzIGtub3cgdGhpcwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxTY3Jp
cHRSdW5uZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRSdW5uZXIuY3BwCmluZGV4IGFi
MzU0NDk5NmNkNGM4MWJiNGRkZjZkMzFkZjgwMTJiMGQ4YjM3OTQuLjI5NzkwYzA1NmJkOTQ1OWNh
YzA3ZTM1N2M5YzgwYjRkOTA0MzRjNzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0UnVubmVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdFJ1bm5lci5jcHAKQEAg
LTc0LDcgKzc0LDcgQEAgSFRNTFNjcmlwdFJ1bm5lcjo6SFRNTFNjcmlwdFJ1bm5lcihEb2N1bWVu
dCogZG9jdW1lbnQsIEhUTUxTY3JpcHRSdW5uZXJIb3N0KiBob3MKIEhUTUxTY3JpcHRSdW5uZXI6
On5IVE1MU2NyaXB0UnVubmVyKCkKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGJlIHBhc3Nl
ZCBhICJkb25lIGxvYWRpbmcvcGFyc2luZyIgY2FsbGJhY2sgc29vbmVyIHRoYW4gZGVzdHJ1Y3Rp
b24/Ci0gICAgaWYgKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCAmJiBtX3Bh
cnNpbmdCbG9ja2luZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQoKSkKKyAgICBpZiAobV9wYXJzaW5n
QmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkgJiYgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQu
d2F0Y2hpbmdGb3JMb2FkKCkpCiAgICAgICAgIHN0b3BXYXRjaGluZ0ZvckxvYWQobV9wYXJzaW5n
QmxvY2tpbmdTY3JpcHQpOwogfQogCkBAIC05OSwxMCArOTksMTAgQEAgaW5saW5lIFBhc3NSZWZQ
dHI8RXZlbnQ+IGNyZWF0ZVNjcmlwdEVycm9yRXZlbnQoKQogCiBTY3JpcHRTb3VyY2VDb2RlIEhU
TUxTY3JpcHRSdW5uZXI6OnNvdXJjZUZyb21QZW5kaW5nU2NyaXB0KGNvbnN0IFBlbmRpbmdTY3Jp
cHQmIHNjcmlwdCwgYm9vbCYgZXJyb3JPY2N1cnJlZCkKIHsKLSAgICBpZiAoc2NyaXB0LmNhY2hl
ZFNjcmlwdCkgewotICAgICAgICBlcnJvck9jY3VycmVkID0gc2NyaXB0LmNhY2hlZFNjcmlwdC0+
ZXJyb3JPY2N1cnJlZCgpOwotICAgICAgICBBU1NFUlQoc2NyaXB0LmNhY2hlZFNjcmlwdC0+aXNM
b2FkZWQoKSk7Ci0gICAgICAgIHJldHVybiBTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5jYWNoZWRT
Y3JpcHQuZ2V0KCkpOworICAgIGlmIChzY3JpcHQuY2FjaGVkU2NyaXB0KCkpIHsKKyAgICAgICAg
ZXJyb3JPY2N1cnJlZCA9IHNjcmlwdC5jYWNoZWRTY3JpcHQoKS0+ZXJyb3JPY2N1cnJlZCgpOwor
ICAgICAgICBBU1NFUlQoc2NyaXB0LmNhY2hlZFNjcmlwdCgpLT5pc0xvYWRlZCgpKTsKKyAgICAg
ICAgcmV0dXJuIFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LmNhY2hlZFNjcmlwdCgpKTsKICAgICB9
CiAgICAgZXJyb3JPY2N1cnJlZCA9IGZhbHNlOwogICAgIHJldHVybiBTY3JpcHRTb3VyY2VDb2Rl
KHNjcmlwdC5lbGVtZW50LT50ZXh0Q29udGVudCgpLCBkb2N1bWVudFVSTEZvclNjcmlwdEV4ZWN1
dGlvbihtX2RvY3VtZW50KSwgc2NyaXB0LnN0YXJ0aW5nTGluZU51bWJlcik7CkBAIC0xMTMsNyAr
MTEzLDcgQEAgYm9vbCBIVE1MU2NyaXB0UnVubmVyOjppc1BlbmRpbmdTY3JpcHRSZWFkeShjb25z
dCBQZW5kaW5nU2NyaXB0JiBzY3JpcHQpCiAgICAgbV9oYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxl
c2hlZXRzID0gIW1fZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpOwogICAgIGlmICht
X2hhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoc2NyaXB0LmNhY2hlZFNjcmlwdCAmJiAhc2NyaXB0LmNhY2hlZFNjcmlwdC0+aXNM
b2FkZWQoKSkKKyAgICBpZiAoc2NyaXB0LmNhY2hlZFNjcmlwdCgpICYmICFzY3JpcHQuY2FjaGVk
U2NyaXB0KCktPmlzTG9hZGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTEyNywxMiArMTI3LDExIEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhl
Y3V0ZVBlbmRpbmdTY3JpcHQoKQogICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IHNv
dXJjZUZyb21QZW5kaW5nU2NyaXB0KG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LCBlcnJvck9jY3Vy
cmVkKTsKIAogICAgIC8vIFN0b3Agd2F0Y2hpbmcgbG9hZHMgYmVmb3JlIGV4ZWN1dGVTY3JpcHQg
dG8gcHJldmVudCByZWN1cnNpb24gaWYgdGhlIHNjcmlwdCByZWxvYWRzIGl0c2VsZi4KLSAgICBp
ZiAobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0ICYmIG1fcGFyc2luZ0Jsb2Nr
aW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCgpKQorICAgIGlmIChtX3BhcnNpbmdCbG9ja2luZ1Nj
cmlwdC5jYWNoZWRTY3JpcHQoKSAmJiBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC53YXRjaGluZ0Zv
ckxvYWQoKSkKICAgICAgICAgc3RvcFdhdGNoaW5nRm9yTG9hZChtX3BhcnNpbmdCbG9ja2luZ1Nj
cmlwdCk7CiAKICAgICAvLyBDbGVhciB0aGUgcGVuZGluZyBzY3JpcHQgYmVmb3JlIHBvc3NpYmxl
IHJlbnRyYW5jeSBmcm9tIGV4ZWN1dGVTY3JpcHQoKQotICAgIFJlZlB0cjxFbGVtZW50PiBzY3Jp
cHRFbGVtZW50ID0gbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuZWxlbWVudC5yZWxlYXNlKCk7Ci0g
ICAgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQgPSBQZW5kaW5nU2NyaXB0KCk7CisgICAgUmVmUHRy
PEVsZW1lbnQ+IHNjcmlwdEVsZW1lbnQgPSBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5yZWxlYXNl
RWxlbWVudEFuZENsZWFyKCk7CiAgICAgewogICAgICAgICBOZXN0U2NyaXB0IG5lc3RpbmdMZXZl
bChtX3NjcmlwdE5lc3RpbmdMZXZlbCwgbV9ob3N0LT5pbnB1dFN0cmVhbSgpKTsKICAgICAgICAg
aWYgKGVycm9yT2NjdXJyZWQpCkBAIC0xNjEsMzAgKzE2MCwxOCBAQCB2b2lkIEhUTUxTY3JpcHRS
dW5uZXI6OmV4ZWN1dGVTY3JpcHQoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU2NyaXB0U291cmNl
Q29kZSYgcwogICAgIG1fZG9jdW1lbnQtPmZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0
KHNvdXJjZUNvZGUpOwogfQogCi1ib29sIEhUTUxTY3JpcHRSdW5uZXI6Omhhc1NjcmlwdHNXYWl0
aW5nRm9yTG9hZCgpIGNvbnN0Ci17Ci0gICAgLy8gV2UncmUgb25seSBhY3R1YWxseSB3YWl0aW5n
IGZvciBhIGxvYWQuICBUaGlzIGFsbG93cyB1cyB0byBpZ25vcmUgbG9hZAotICAgIC8vIGNhbGxi
YWNrcyB3aGVuIENhY2hlZFJlc291cmNlOjphZGRDbGllbnQgY2FsbHMgbm90aWZ5RmluaXNoZWQg
YmVjYXVzZQotICAgIC8vIG9mIGEgY2FjaGUgaGl0IChub3QgYmVjYXVzZSBvZiBhIGxvYWQgd2Ug
d2VyZSBzZXQgdXAgdG8gd2FpdCBmb3IpLgotICAgIHJldHVybiBtX3BhcnNpbmdCbG9ja2luZ1Nj
cmlwdC53YXRjaGluZ0ZvckxvYWRTdGF0ZSA9PSBQZW5kaW5nU2NyaXB0OjpXYXRjaGluZ0Zvckxv
YWQ7Ci19Ci0KIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6d2F0Y2hGb3JMb2FkKFBlbmRpbmdTY3Jp
cHQmIHBlbmRpbmdTY3JpcHQpCiB7CiAgICAgQVNTRVJUKCFwZW5kaW5nU2NyaXB0LndhdGNoaW5n
Rm9yTG9hZCgpKTsKLSAgICAvLyBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50IHdpbGwgY2FsbCBu
b3RpZnlGaW5pc2hlZCBpZiB0aGUgbG9hZCBpcyBhbHJlYWR5Ci0gICAgLy8gY29tcGxldGUuICBX
ZSBzZXQgd2F0Y2hpbmdGb3JMb2FkU3RhdGUgdG8gUmVnaXN0ZXJpbmdGb3JXYXRjaCBzbyB0aGF0
IHdlCi0gICAgLy8ga25vdyB0byBpZ25vcmUgYW55IG5vdGlmeUZpbmlzaGVkIGNhbGwgZHVyaW5n
IGFkZENsaWVudC4KLSAgICBwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZFN0YXRlID0gUGVu
ZGluZ1NjcmlwdDo6UmVnaXN0ZXJpbmdGb3JXYXRjaDsKLSAgICBtX2hvc3QtPndhdGNoRm9yTG9h
ZChwZW5kaW5nU2NyaXB0LmNhY2hlZFNjcmlwdC5nZXQoKSk7Ci0gICAgcGVuZGluZ1NjcmlwdC53
YXRjaGluZ0ZvckxvYWRTdGF0ZSA9IFBlbmRpbmdTY3JpcHQ6OldhdGNoaW5nRm9yTG9hZDsKKyAg
ICBtX2hvc3QtPndhdGNoRm9yTG9hZChwZW5kaW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpKTsKKyAg
ICBwZW5kaW5nU2NyaXB0LnNldFdhdGNoaW5nRm9yTG9hZCh0cnVlKTsKIH0KIAogdm9pZCBIVE1M
U2NyaXB0UnVubmVyOjpzdG9wV2F0Y2hpbmdGb3JMb2FkKFBlbmRpbmdTY3JpcHQmIHBlbmRpbmdT
Y3JpcHQpCiB7CiAgICAgQVNTRVJUKHBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkKCkpOwot
ICAgIG1faG9zdC0+c3RvcFdhdGNoaW5nRm9yTG9hZChwZW5kaW5nU2NyaXB0LmNhY2hlZFNjcmlw
dC5nZXQoKSk7Ci0gICAgcGVuZGluZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWRTdGF0ZSA9IFBlbmRp
bmdTY3JpcHQ6Ok5vdFdhdGNoaW5nRm9yTG9hZDsKKyAgICBtX2hvc3QtPnN0b3BXYXRjaGluZ0Zv
ckxvYWQocGVuZGluZ1NjcmlwdC5jYWNoZWRTY3JpcHQoKSk7CisgICAgcGVuZGluZ1NjcmlwdC5z
ZXRXYXRjaGluZ0ZvckxvYWQoZmFsc2UpOwogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBt
YXRjaCAxMC4yLjUuMTEgIkFuIGVuZCB0YWcgd2hvc2UgdGFnIG5hbWUgaXMgJ3NjcmlwdCciCkBA
IC0yMjQsMTQgKzIxMSwxMCBAQCBib29sIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQYXJzaW5n
QmxvY2tpbmdTY3JpcHRzKCkKIAogYm9vbCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0
c1dhaXRpbmdGb3JMb2FkKENhY2hlZFJlc291cmNlKiBjYWNoZWRTY3JpcHQpCiB7Ci0gICAgLy8g
Q2FsbGVycyBzaG91bGQgY2hlY2sgaGFzU2NyaXB0c1dhaXRpbmdGb3JMb2FkKCkgYmVmb3JlIGNh
bGxpbmcKLSAgICAvLyB0byBwcmV2ZW50IHBhcnNlciBvciBzY3JpcHQgcmUtZW50cnkgZHVyaW5n
IGR1ZSB0bwotICAgIC8vIENhY2hlZFJlc291cmNlOjphZGRDbGllbnQgY2FsbGluZyBub3RpZnlG
aW5pc2hlZCBvbiBjYWNoZS1oaXRzLgotICAgIEFTU0VSVChoYXNTY3JpcHRzV2FpdGluZ0Zvckxv
YWQoKSk7CiAgICAgQVNTRVJUKCFtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CiAgICAgQVNTRVJUKGhh
dmVQYXJzaW5nQmxvY2tpbmdTY3JpcHQoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChjYWNoZWRTY3Jp
cHQsIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCA9PSBjYWNoZWRTY3JpcHQp
OwotICAgIEFTU0VSVChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQtPmlzTG9h
ZGVkKCkpOworICAgIEFTU0VSVF9VTlVTRUQoY2FjaGVkU2NyaXB0LCBtX3BhcnNpbmdCbG9ja2lu
Z1NjcmlwdC5jYWNoZWRTY3JpcHQoKSA9PSBjYWNoZWRTY3JpcHQpOworICAgIEFTU0VSVChtX3Bh
cnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQoKS0+aXNMb2FkZWQoKSk7CiAgICAgcmV0
dXJuIGV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRzKCk7CiB9CiAKQEAgLTI2MiwxNiArMjQ1
LDE0IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6cmVxdWVzdFNjcmlwdChFbGVtZW50KiBzY3Jp
cHQpCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7IC8vIERpc3BhdGNoIGVycm9yIGV2ZW50Lgog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hl
ZFNjcmlwdCA9IGNhY2hlZFNjcmlwdDsKLQotICAgIC8vIEFsd2F5cyBjYWxsIHdhdGNoRm9yTG9h
ZCwgZXZlbiBpZiB0aGUgc2NyaXB0IGlzIGFscmVhZHkgbG9hZGVkLgotICAgIC8vIENhY2hlZFJl
c291cmNlIG1heSBwdXJnZSBpdHMgZGF0YSBpZiBpdCBoYXMgbm8gY2xpZW50cywgd2hpY2ggd291
bGQgY2F1c2UKLSAgICAvLyBsYXRlciBzY3JpcHQgZXhlY3V0aW9uIHRvIGZhaWwuICB3YXRjaEZv
ckxvYWQgc2V0cyBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdAotICAgIC8vIHRvIHRoZSBSZWdpc3Rl
cmluZ0ZvcldhdGNoIHN0YXRlIHNvIHdlIGtub3cgdG8gaWdub3JlIGFueQotICAgIC8vIGV4ZWN1
dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQgY2FsbGJhY2tzIGR1cmluZyB0aGUgd2F0Y2hGb3JMb2Fk
IGNhbGwuCi0gICAgd2F0Y2hGb3JMb2FkKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0KTsKLSAgICAv
LyBDYWxsZXJzIHdpbGwgYXR0ZW1wdCB0byBydW4gdGhlIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0
IGlmIHBvc3NpYmxlCi0gICAgLy8gYmVmb3JlIHJldHVybmluZyBjb250cm9sIHRvIHRoZSBwYXJz
ZXIuCisKKyAgICBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5zZXRDYWNoZWRTY3JpcHQoY2FjaGVk
U2NyaXB0KTsKKworICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCBhIGxvYWQgY2FsbGJhY2sgaWYg
Y2FjaGVkU2NyaXB0IGlzIG5vdCBhbHJlYWR5CisgICAgLy8gaW4gdGhlIGNhY2hlLiAgQ2FsbGVy
cyB3aWxsIGF0dGVtcHQgdG8gcnVuIHRoZSBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdAorICAgIC8v
IGlmIHBvc3NpYmxlIGJlZm9yZSByZXR1cm5pbmcgY29udHJvbCB0byB0aGUgcGFyc2VyLgorICAg
IGlmICghbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCktPmlzTG9hZGVkKCkp
CisgICAgICAgIHdhdGNoRm9yTG9hZChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCk7CiB9CiAKIC8v
IFRoaXMgbWV0aG9kIGlzIG1lYW50IHRvIG1hdGNoIHRoZSBIVE1MNSBkZWZpbml0aW9uIG9mICJy
dW5uaW5nIGEgc2NyaXB0IgpAQCAtMjk3LDQgKzI3OCwzNCBAQCB2b2lkIEhUTUxTY3JpcHRSdW5u
ZXI6OnJ1blNjcmlwdChFbGVtZW50KiBzY3JpcHQsIGludCBzdGFydGluZ0xpbmVOdW1iZXIpCiAg
ICAgfQogfQogCitIVE1MU2NyaXB0UnVubmVyOjpQZW5kaW5nU2NyaXB0Ojp+UGVuZGluZ1Njcmlw
dCgpCit7CisgICAgaWYgKG1fY2FjaGVkU2NyaXB0KQorICAgICAgICBtX2NhY2hlZFNjcmlwdC0+
cmVtb3ZlQ2xpZW50KHRoaXMpOworfQorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxTY3JpcHRS
dW5uZXI6OlBlbmRpbmdTY3JpcHQ6OnJlbGVhc2VFbGVtZW50QW5kQ2xlYXIoKQoreworICAgIHNl
dENhY2hlZFNjcmlwdCgwKTsKKyAgICBzdGFydGluZ0xpbmVOdW1iZXIgPSAwOworICAgIG1fd2F0
Y2hpbmdGb3JMb2FkID0gZmFsc2U7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOworfQor
Cit2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OlBlbmRpbmdTY3JpcHQ6OnNldENhY2hlZFNjcmlwdChD
YWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCkKK3sKKyAgICBpZiAobV9jYWNoZWRTY3JpcHQgPT0g
Y2FjaGVkU2NyaXB0KQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fY2FjaGVkU2NyaXB0KQor
ICAgICAgICBtX2NhY2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgIG1fY2FjaGVk
U2NyaXB0ID0gY2FjaGVkU2NyaXB0OworICAgIGlmIChtX2NhY2hlZFNjcmlwdCkKKyAgICAgICAg
bV9jYWNoZWRTY3JpcHQtPmFkZENsaWVudCh0aGlzKTsKK30KKworQ2FjaGVkU2NyaXB0KiBIVE1M
U2NyaXB0UnVubmVyOjpQZW5kaW5nU2NyaXB0OjpjYWNoZWRTY3JpcHQoKSBjb25zdAoreworICAg
IHJldHVybiBtX2NhY2hlZFNjcmlwdC5nZXQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0hUTUxTY3JpcHRSdW5uZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0UnVubmVy
LmgKaW5kZXggNzI2MDAwNzk3YzQ5OGY1ZDY2YmRlNjlkMDJkNTRiNTI4YWM4ZTJiMi4uZjkzYWUx
MDJiN2QyOGU3MjE1Y2U3OThhMWRhZjdkMmY0ZTdmOTBhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxTY3JpcHRSdW5uZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdFJ1bm5l
ci5oCkBAIC00OSw0MiArNDksNTAgQEAgcHVibGljOgogICAgIC8vIFByb2Nlc3NlcyB0aGUgcGFz
c2VkIGluIHNjcmlwdCBhbmQgYW55IHBlbmRpbmcgc2NyaXB0cyBpZiBwb3NzaWJsZS4KICAgICBi
b29sIGV4ZWN1dGUoUGFzc1JlZlB0cjxFbGVtZW50PiBzY3JpcHRUb1Byb2Nlc3MsIGludCBzY3Jp
cHRTdGFydExpbmUpOwogCi0gICAgYm9vbCBoYXNTY3JpcHRzV2FpdGluZ0ZvckxvYWQoKSBjb25z
dDsKICAgICBib29sIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQoQ2FjaGVkUmVzb3VyY2Uq
KTsKLQogICAgIGJvb2wgaGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0czsgfQogICAgIGJvb2wgZXhl
Y3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKIAogICAgIGJvb2wgaW5TY3JpcHRF
eGVjdXRpb24oKSB7IHJldHVybiAhIW1fc2NyaXB0TmVzdGluZ0xldmVsOyB9CiAKIHByaXZhdGU6
Ci0gICAgc3RydWN0IFBlbmRpbmdTY3JpcHQgewotICAgICAgICAvLyBUaGlzIHN0YXRlIGNvbnRy
b2xzIHdoZXRoZXIgd2UgbmVlZCB0byBkbyBhbnl0aGluZyB3aXRoIHRoaXMgc2NyaXB0Ci0gICAg
ICAgIC8vIHdoZW4gd2UgZ2V0IGEgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZCBjYWxsYmFj
ay4KLSAgICAgICAgLy8gV2UgaWdub3JlIGNhbGxiYWNrcyBkdXJpbmcgUmVnaXN0ZXJpbmdGb3JX
YXRjaC4KLSAgICAgICAgZW51bSBXYXRjaGluZ0ZvckxvYWRTdGF0ZSB7Ci0gICAgICAgICAgICBO
b3RXYXRjaGluZ0ZvckxvYWQsCi0gICAgICAgICAgICBSZWdpc3RlcmluZ0ZvcldhdGNoLAotICAg
ICAgICAgICAgV2F0Y2hpbmdGb3JMb2FkLAotICAgICAgICB9OwotCisgICAgLy8gQSBjb250YWlu
ZXIgZm9yIGFuIGV4dGVybmFsIHNjcmlwdCB3aGljaCBtYXkgYmUgbG9hZGVkIGFuZCBleGVjdXRl
ZC4KKyAgICAvLworICAgIC8vIEEgQ2FjaGVkUmVzb3VyY2VIYW5kbGUgYWxvbmUgZG9lcyBub3Qg
cHJldmVudCB0aGUgdW5kZXJseWluZyBDYWNoZWRSZXNvdXJjZQorICAgIC8vIGZyb20gcHVyZ2lu
ZyBpdHMgZGF0YSBidWZmZXIuIFRoaXMgY2xhc3MgaG9sZHMgYSBkdW1teSBjbGllbnQgb3BlbiBm
b3IgaXRzCisgICAgLy8gbGlmZXRpbWUgaW4gb3JkZXIgdG8gZ3VhcmFudGVlIHRoYXQgdGhlIGRh
dGEgYnVmZmVyIHdpbGwgbm90IGJlIHB1cmdlZC4KKyAgICAvLworICAgIC8vIEZJWE1FOiBGaW5p
c2ggdHVybmluZyB0aGlzIGludG8gYSBwcm9wZXIgY2xhc3MuCisgICAgY2xhc3MgUGVuZGluZ1Nj
cmlwdCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCwgTm9uY29weWFibGUgeworICAgIHB1
YmxpYzoKICAgICAgICAgUGVuZGluZ1NjcmlwdCgpCi0gICAgICAgICAgICA6IHdhdGNoaW5nRm9y
TG9hZFN0YXRlKE5vdFdhdGNoaW5nRm9yTG9hZCkKLSAgICAgICAgICAgICwgc3RhcnRpbmdMaW5l
TnVtYmVyKDApCisgICAgICAgICAgICA6IHN0YXJ0aW5nTGluZU51bWJlcigwKQorICAgICAgICAg
ICAgLCBtX3dhdGNoaW5nRm9yTG9hZChmYWxzZSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAg
ICAgICAgYm9vbCB3YXRjaGluZ0ZvckxvYWQoKQorICAgICAgICB+UGVuZGluZ1NjcmlwdCgpOwor
CisgICAgICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gcmVsZWFzZUVsZW1lbnRBbmRDbGVhcigpOwor
CisgICAgICAgIGJvb2wgd2F0Y2hpbmdGb3JMb2FkKCkgY29uc3QgeyByZXR1cm4gbV93YXRjaGlu
Z0ZvckxvYWQ7IH0KKyAgICAgICAgdm9pZCBzZXRXYXRjaGluZ0ZvckxvYWQoYm9vbCBiKSB7IG1f
d2F0Y2hpbmdGb3JMb2FkID0gYjsgfQorCisgICAgICAgIENhY2hlZFNjcmlwdCogY2FjaGVkU2Ny
aXB0KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Q2FjaGVkU2NyaXB0KENhY2hlZFNjcmlwdCop
OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSop
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB3YXRjaGluZ0ZvckxvYWRTdGF0ZSAhPSBO
b3RXYXRjaGluZ0ZvckxvYWQ7CiAgICAgICAgIH0KIAogICAgICAgICBSZWZQdHI8RWxlbWVudD4g
ZWxlbWVudDsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBjYWNo
ZWRTY3JpcHQ7Ci0gICAgICAgIFdhdGNoaW5nRm9yTG9hZFN0YXRlIHdhdGNoaW5nRm9yTG9hZFN0
YXRlOwogICAgICAgICBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyOyAvLyBPbmx5IHVzZWQgZm9yIGlu
bGluZSBzY3JpcHQgdGFncy4KICAgICAgICAgLy8gSFRNTDUgaGFzIGFuIGlzUmVhZHkgcGFyYW1l
dGVyLCBob3dldmVyIGlzUmVhZHkgZW5kcyB1cCBlcXVpdmFsZW50IHRvCiAgICAgICAgIC8vIG1f
ZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpICYmIGNhY2hlZFNjcmlwdC0+aXNMb2Fk
ZWQoKQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBtX3dhdGNoaW5nRm9yTG9hZDsKKyAg
ICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBtX2NhY2hlZFNjcmlwdDsK
ICAgICB9OwogCiAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTFNjcmlwdFJ1bm5lckhvc3QuaCBiL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0UnVu
bmVySG9zdC5oCmluZGV4IDgyYWQ3MGRkYmMyMDk4OTIwODcxZDhiOGU2ZmY4MmIzYjRjNWQwM2Mu
LmExMjk1MjA3OWY4OTQ2NzFiNDYxZTY3MTQxNjVkNzg2YWFlMjE3MTMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0UnVubmVySG9zdC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
U2NyaXB0UnVubmVySG9zdC5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEhUTUxTY3JpcHRSdW5u
ZXJIb3N0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5IVE1MU2NyaXB0UnVubmVySG9zdCgpIHsg
fQogCi0gICAgLy8gSW1wbGVtZW50b3JzIG11c3QgY2FsbCBjYWNoZWRSZXNvdXJjZS0+YWRkQ2xp
ZW50KCkgaW1tZWRpYXRlbHkuCisgICAgLy8gSW1wbGVtZW50b3JzIHNob3VsZCBjYWxsIGNhY2hl
ZFJlc291cmNlLT5hZGRDbGllbnQoKSBoZXJlIG9yIHNvb24gYWZ0ZXIuCiAgICAgdmlydHVhbCB2
b2lkIHdhdGNoRm9yTG9hZChDYWNoZWRSZXNvdXJjZSopID0gMDsKICAgICAvLyBJbXBsZW1lbnRv
cnMgbXVzdCBjYWxsIGNhY2hlZFJlc291cmNlLT5yZW1vdmVDbGllbnQoKSBpbW1lZGlhdGVseS4K
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcFdhdGNoaW5nRm9yTG9hZChDYWNoZWRSZXNvdXJjZSopID0g
MDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>