<?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>43746</bug_id>
          
          <creation_ts>2010-08-09 14:19:46 -0700</creation_ts>
          <short_desc>Port view-source to new parser</short_desc>
          <delta_ts>2010-08-11 00:31:22 -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>New Bugs</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>
          <dependson>43765</dependson>
    
    <dependson>43766</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>262316</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-09 14:19:46 -0700</bug_when>
    <thetext>Port view-source to new parser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262317</commentid>
    <comment_count>1</comment_count>
      <attachid>63928</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-09 14:20:45 -0700</bug_when>
    <thetext>Created attachment 63928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262318</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-09 14:21:11 -0700</bug_when>
    <thetext>I&apos;m going to try another approach of creating the view-source view directly from the input stream.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262333</commentid>
    <comment_count>3</comment_count>
      <attachid>63931</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-09 14:57:26 -0700</bug_when>
    <thetext>Created attachment 63931
now with HTMLViewSourceParser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262458</commentid>
    <comment_count>4</comment_count>
      <attachid>63931</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-09 19:59:54 -0700</bug_when>
    <thetext>Comment on attachment 63931
now with HTMLViewSourceParser

Ok.  I&apos;ve got this working.  I&apos;m going to upload the changes in three dependent bugs for ease of reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262471</commentid>
    <comment_count>5</comment_count>
      <attachid>63970</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-09 20:27:16 -0700</bug_when>
    <thetext>Created attachment 63970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262472</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-09 20:28:14 -0700</bug_when>
    <thetext>I should say that most (all?) of the code in HTMLViewSourceDocument should really be in a HTMLViewSourceTreeBuilder, but I didn&apos;t have the heart to do that in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262485</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-09 21:10:35 -0700</bug_when>
    <thetext>Attachment 63970 did not build on qt:
Build output: http://queues.webkit.org/results/3750009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262509</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-09 23:22:04 -0700</bug_when>
    <thetext>Attachment 63970 did not build on mac:
Build output: http://queues.webkit.org/results/3745016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262517</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-09 23:52:23 -0700</bug_when>
    <thetext>Attachment 63970 did not build on chromium:
Build output: http://queues.webkit.org/results/3731006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262536</commentid>
    <comment_count>10</comment_count>
      <attachid>63970</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-10 00:49:43 -0700</bug_when>
    <thetext>Comment on attachment 63970
Patch

WebCore/html/HTMLToken.h:293
 +      int m_startIndex;
I&apos;m surprised you didn&apos;t use your little Range object here.

WebCore/html/HTMLViewSourceDocument.cpp:105
 +      if (!m_current)
This seems like an old treebuilder concept.  Strange to see it in this Document class?

WebCore/html/HTMLViewSourceDocument.cpp:144
 +      String tagName = String(token.name().data(), token.name().size());
I&apos;m slightly surprised Token doesn&apos;t have a method to do this for you, but I guess that&apos;s what AtomicToken is all about?

WebCore/html/HTMLViewSourceDocument.cpp:162
 +          if (tagName == &quot;base&quot; &amp;&amp; name == &quot;href&quot;) {
We have AtomicStrings for these.

WebCore/html/HTMLViewSourceDocument.cpp:156
 +          String name = String(iter-&gt;m_name.data(), iter-&gt;m_name.size());
Don&apos;t we have a String-From-Vector conversion function?  Or shouldn&apos;t we use an inline for these?  Seems silly that this is the 3rd time in this patch so far... :)

WebCore/html/HTMLViewSourceDocument.cpp:168
 +          index = addRange(source, index, iter-&gt;m_valueRange.m_start - token.startIndex(), &quot;&quot;);
We keep doing this same code too.  Maybe this needs a wrapper around addRange?  Or something to do this subtraction?  Seems like a lot of copy/paste code here.

WebCore/html/HTMLViewSourceDocument.cpp:170
 +          bool isLink = name == &quot;src&quot; || name == &quot;href&quot;;
We have AtomicStrings for these.

WebCore/html/HTMLViewSourceDocument.cpp:171
 +          index = addRange(source, index, iter-&gt;m_valueRange.m_end - token.startIndex(), &quot;webkit-html-attribute-value&quot;, isLink, tagName == &quot;a&quot;);
And these...

WebCore/html/HTMLViewSourceDocument.cpp:276
 +      if (start &lt; end) {
Early return instead?

WebCore/html/HTMLViewSourceDocument.cpp:277
 +          String text = source.substring(start, end - start);
I might have put this whole block in a function &quot;spanForText&quot;.  Not sure I understand welle enough yet.  The setting m_current feels like something wanting to call a function to return whatever your&apos;e about to set m_current too.

Overall I think this is great.  I&apos;d like to see a refreshed patch though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262908</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-10 16:53:28 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 63970 [details])
&gt; WebCore/html/HTMLToken.h:293
&gt;  +      int m_startIndex;
&gt; I&apos;m surprised you didn&apos;t use your little Range object here.

Fixed.

&gt; WebCore/html/HTMLViewSourceDocument.cpp:105
&gt;  +      if (!m_current)
&gt; This seems like an old treebuilder concept.  Strange to see it in this Document class?

Yes.  This is wrong code inherited from the old HTMLViewSourceDocument.  I&apos;d like to move it to an HTMLViewSourceTreeBuilder at some point.

&gt; I&apos;m slightly surprised Token doesn&apos;t have a method to do this for you, but I guess that&apos;s what AtomicToken is all about?

Yes.  Token had a bunch of string caching infrastructure at some point, but we moved all that to atomic token.

&gt; WebCore/html/HTMLViewSourceDocument.cpp:162
&gt;  +          if (tagName == &quot;base&quot; &amp;&amp; name == &quot;href&quot;) {
&gt; We have AtomicStrings for these.

True!  Now that we don&apos;t need to do case-insensitive compares we can use the atomics.

&gt; WebCore/html/HTMLViewSourceDocument.cpp:156
&gt;  +          String name = String(iter-&gt;m_name.data(), iter-&gt;m_name.size());
&gt; Don&apos;t we have a String-From-Vector conversion function?  Or shouldn&apos;t we use an inline for these?  Seems silly that this is the 3rd time in this patch so far... :)

We have one, but not for vectors with inline capacity, I believe.

&gt; WebCore/html/HTMLViewSourceDocument.cpp:168
&gt;  +          index = addRange(source, index, iter-&gt;m_valueRange.m_start - token.startIndex(), &quot;&quot;);
&gt; We keep doing this same code too.  Maybe this needs a wrapper around addRange?  Or something to do this subtraction?  Seems like a lot of copy/paste code here.

Hum...  Ok.  I look at that.

&gt; WebCore/html/HTMLViewSourceDocument.cpp:170
&gt;  +          bool isLink = name == &quot;src&quot; || name == &quot;href&quot;;
&gt; We have AtomicStrings for these.

Yep.

&gt; WebCore/html/HTMLViewSourceDocument.cpp:171
&gt;  +          index = addRange(source, index, iter-&gt;m_valueRange.m_end - token.startIndex(), &quot;webkit-html-attribute-value&quot;, isLink, tagName == &quot;a&quot;);
&gt; And these...

Yep.

&gt; WebCore/html/HTMLViewSourceDocument.cpp:276
&gt;  +      if (start &lt; end) {
&gt; Early return instead?

Sure.

&gt; WebCore/html/HTMLViewSourceDocument.cpp:277
&gt;  +          String text = source.substring(start, end - start);
&gt; I might have put this whole block in a function &quot;spanForText&quot;.  Not sure I understand welle enough yet.  The setting m_current feels like something wanting to call a function to return whatever your&apos;e about to set m_current too.

Hum...  I&apos;m not sure I quite understand.

&gt; Overall I think this is great.  I&apos;d like to see a refreshed patch though.

Okiedokes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262927</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-10 17:58:47 -0700</bug_when>
    <thetext>&gt; &gt; WebCore/html/HTMLViewSourceDocument.cpp:156
&gt; &gt;  +          String name = String(iter-&gt;m_name.data(), iter-&gt;m_name.size());
&gt; &gt; Don&apos;t we have a String-From-Vector conversion function?  Or shouldn&apos;t we use an inline for these?  Seems silly that this is the 3rd time in this patch so far... :)
&gt; 
&gt; We have one, but not for vectors with inline capacity, I believe.

I tried adding this, but I failed.  I&apos;m not sure why, but I couldn&apos;t get it to compile.  :(

&gt; &gt; WebCore/html/HTMLViewSourceDocument.cpp:168
&gt; &gt;  +          index = addRange(source, index, iter-&gt;m_valueRange.m_start - token.startIndex(), &quot;&quot;);
&gt; &gt; We keep doing this same code too.  Maybe this needs a wrapper around addRange?  Or something to do this subtraction?  Seems like a lot of copy/paste code here.
&gt; 
&gt; Hum...  Ok.  I look at that.

The problem is that these are all independent pieces of data.  I could turn the &quot;-&quot; into a &quot;,&quot; but I&apos;m not sure that would buy us much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262954</commentid>
    <comment_count>13</comment_count>
      <attachid>64065</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-10 18:38:55 -0700</bug_when>
    <thetext>Created attachment 64065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262956</commentid>
    <comment_count>14</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-10 18:45:14 -0700</bug_when>
    <thetext>Attachment 64065 did not build on qt:
Build output: http://queues.webkit.org/results/3752029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262957</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-10 18:48:10 -0700</bug_when>
    <thetext>Attachment 64065 did not build on mac:
Build output: http://queues.webkit.org/results/3775036</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262958</commentid>
    <comment_count>16</comment_count>
      <attachid>64066</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-10 18:48:22 -0700</bug_when>
    <thetext>Created attachment 64066
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263069</commentid>
    <comment_count>17</comment_count>
      <attachid>64066</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-10 23:36:34 -0700</bug_when>
    <thetext>Comment on attachment 64066
Patch

Slightly sad you weren&apos;t able to make the String constructor work.  It probably had to be a template itself or something.

WebCore/html/HTMLToken.h:75
 +      int startIndex() const { return m_range.m_start; }
Feels slightly odd to not just expose the Range object, but seems fine.

WebCore/html/HTMLViewSourceParser.cpp:41
 +      ASSERT_NOT_REACHED();
I&apos;m surprised you have to implement insert()

WebCore/html/HTMLViewSourceParser.cpp:79
 +      // FIXME: The tokenizer should do this work for us.
I don&apos;t understand what you mean here.  Could you file a bug?

Looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263095</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-11 00:31:22 -0700</bug_when>
    <thetext>Committed r65132: &lt;http://trac.webkit.org/changeset/65132&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63928</attachid>
            <date>2010-08-09 14:20:45 -0700</date>
            <delta_ts>2010-08-09 14:57:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43746-20100809142044.patch</filename>
            <type>text/plain</type>
            <size>14328</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTM0YTM2ZGQ2ODMwYjFlYTc2NmM5YWQ5NzBiM2NlNDkyNzY3YjdmYy4uMTdiYmQ1NzllMGE5Yzk1
ZTZiYWMzMTQzYThjZjYzYTI1MTMwMzMyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwzMiBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIFBvcnQgdmlldy1zb3VyY2UgdG8gbmV3
IHBhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDM3NDYKKworICAgICAgICBUaGlzIHBhdGNoIGhhcyB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSB3
b3JraW5nIGluIHRoZSBvbGQgZGVzaWduIG9mCisgICAgICAgIGNvbnN0cnVjdGluZyB0aGUgdmll
dy1zb3VyY2UgdmlldyBmcm9tIHRoZSB0b2tlbiBzdHJlYW0uCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAg
ICAgICAqIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVmlld1NvdXJjZURvY3VtZW50OjpjcmVhdGVQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkVmlld1NvdXJjZVRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnByb2Nlc3NDaGFyYWN0ZXJUb2tlbik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzQ29tbWVu
dFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnByb2Nl
c3NEb2N0eXBlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVu
dDo6cHJvY2Vzc1RhZ1Rva2VuKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NEb2N0eXBl
VG9rZW4pOgorCisyMDEwLTA4LTA5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgUmVtb3ZlIHRy
YWlsaW5nIHdoaXRlc3BhY2UgaW4gSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNzQxCiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMzU0ZTdlZDUyZDY5YjkwM2M3NmVmZjQxMmViMDhi
YjRmMWMwNWZkZC4uYjI1MWEwMTBmZjg2MzY4ZDI4NTgyN2ViNzljMDIyMDk3MmY4MWMzOSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTI5LDEyICsyOSwxMyBAQAogI2luY2x1
ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2Vy
U2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgogI2luY2x1ZGUgIkhUTUxQ
cmVsb2FkU2Nhbm5lci5oIgogI2luY2x1ZGUgIkhUTUxTY3JpcHRSdW5uZXIuaCIKICNpbmNsdWRl
ICJIVE1MVHJlZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJIVE1MVmlld1NvdXJjZURvY3VtZW50LmgiCiAjaW5jbHVkZSAiWFNTQXVkaXRvci5oIgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCkBAIC0xNjksNiArMTcwLDE0IEBAIHZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNocm9ub3VzTW9kZSBtb2RlKQogICAg
ICAgICBpZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJyZW50KCksIG1fdG9r
ZW4pKQogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgaWYgKGluVmlld1NvdXJjZU1vZGUo
KSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBpbXBsZW1lbnQgdmlldy1zb3Vy
Y2UgYXMgYSB0cmVlIGJ1aWxkZXIKKyAgICAgICAgICAgIC8vIGluc3RlYWQgb2YgY2FsbGluZyBi
YWNrIHRvIGRvY3VtZW50LgorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFZpZXdTb3VyY2VE
b2N1bWVudCo+KGRvY3VtZW50KCkpLT5hZGRWaWV3U291cmNlVG9rZW4obV90b2tlbik7CisgICAg
ICAgICAgICBtX3Rva2VuLmNsZWFyKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorCiAgICAgICAgIG1fdHJlZUJ1aWxkZXItPmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4obV90b2tl
bik7CiAgICAgICAgIG1fdG9rZW4uY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNl
RG9jdW1lbnQuY3BwCmluZGV4IGUxYjk1OWJmZjU2ZDZlZDkyM2NkMGIwYzNhNzFhNWFjNzViYTJj
ZmEuLjkyYTA2NDg1ZjdjZTE3MzU4YTgxZGQ0OTM1N2JlZWFkZWE0YTYyY2MgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKQEAgLTMwLDEzICszMCwxNCBAQAogI2luY2x1
ZGUgIkhUTUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIu
aCIKICNpbmNsdWRlICJIVE1MSHRtbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJIVE1MVGFibGVDZWxsRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQuaCIKLSNpbmNsdWRlICJMZWdhY3lIVE1MRG9jdW1lbnRQYXJz
ZXIuaCIKKyNpbmNsdWRlICJIVE1MVG9rZW4uaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVk
ZSAiVGV4dERvY3VtZW50LmgiCiAKQEAgLTU5LDggKzYwLDkgQEAgRG9jdW1lbnRQYXJzZXIqIEhU
TUxWaWV3U291cmNlRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiAgICAgICAgIHx8IG1fdHlwZSA9
PSAiYXBwbGljYXRpb24vdm5kLndhcC54aHRtbCt4bWwiCiAjZW5kaWYKICAgICAgICAgKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBTaG91bGQgcmVzcGVjdCBTZXR0aW5nczo6aHRtbDVQYXJzZXJFbmFi
bGVkKCkKLSAgICAgICAgcmV0dXJuIG5ldyBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIodGhpcyk7
CisgICAgICAgIEhUTUxEb2N1bWVudFBhcnNlciogcGFyc2VyID0gbmV3IEhUTUxEb2N1bWVudFBh
cnNlcih0aGlzLCBmYWxzZSk7CisgICAgICAgIHBhcnNlci0+c2V0SW5WaWV3U291cmNlTW9kZSh0
cnVlKTsKKyAgICAgICAgcmV0dXJuIHBhcnNlcjsKICAgICB9CiAKICAgICByZXR1cm4gY3JlYXRl
VGV4dERvY3VtZW50UGFyc2VyKHRoaXMpOwpAQCAtMTAwLDEwOSArMTAyLDk4IEBAIHZvaWQgSFRN
TFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkVmlld1NvdXJjZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
KQogICAgIGFkZFRleHQodGV4dCwgIiIpOwogfQogCi12b2lkIEhUTUxWaWV3U291cmNlRG9jdW1l
bnQ6OmFkZFZpZXdTb3VyY2VUb2tlbihUb2tlbiogdG9rZW4pCit2b2lkIEhUTUxWaWV3U291cmNl
RG9jdW1lbnQ6OmFkZFZpZXdTb3VyY2VUb2tlbihIVE1MVG9rZW4mIHRva2VuKQogewogICAgIGlm
ICghbV9jdXJyZW50KQogICAgICAgICBjcmVhdGVDb250YWluaW5nVGFibGUoKTsKIAotICAgIGlm
ICh0b2tlbi0+dGFnTmFtZSA9PSB0ZXh0QXRvbSkKLSAgICAgICAgYWRkVGV4dCh0b2tlbi0+dGV4
dC5nZXQoKSwgIiIpOwotICAgIGVsc2UgaWYgKHRva2VuLT50YWdOYW1lID09IGNvbW1lbnRBdG9t
KSB7Ci0gICAgICAgIGlmICh0b2tlbi0+YmVnaW5UYWcpIHsKLSAgICAgICAgICAgIG1fY3VycmVu
dCA9IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKCJ3ZWJraXQtaHRtbC1jb21tZW50Iik7Ci0gICAgICAg
ICAgICBhZGRUZXh0KFN0cmluZygiPCEtLSIpICsgdG9rZW4tPnRleHQuZ2V0KCkgKyAiLS0+Iiwg
IndlYmtpdC1odG1sLWNvbW1lbnQiKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIEhhbmRsZSB0aGUgdGFnLgotICAgICAgICBTdHJpbmcgY2xhc3NOYW1lU3RyID0gIndlYmtp
dC1odG1sLXRhZyI7Ci0gICAgICAgIG1fY3VycmVudCA9IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKGNs
YXNzTmFtZVN0cik7Ci0KLSAgICAgICAgU3RyaW5nIHRleHQgPSAiPCI7Ci0gICAgICAgIGlmICgh
dG9rZW4tPmJlZ2luVGFnKQotICAgICAgICAgICAgdGV4dCArPSAiLyI7Ci0gICAgICAgIHRleHQg
Kz0gdG9rZW4tPnRhZ05hbWU7Ci0gICAgICAgIFZlY3RvcjxVQ2hhcj4qIGd1aWRlID0gdG9rZW4t
Pm1fc291cmNlSW5mby5nZXQoKTsKLSAgICAgICAgaWYgKCFndWlkZSB8fCAhZ3VpZGUtPnNpemUo
KSkKLSAgICAgICAgICAgIHRleHQgKz0gIj4iOwotCi0gICAgICAgIGFkZFRleHQodGV4dCwgY2xh
c3NOYW1lU3RyKTsKLQotICAgICAgICAvLyBXYWxrIG91ciBndWlkZSBzdHJpbmcgdGhhdCB0ZWxs
cyB1cyB3aGVyZSBhdHRyaWJ1dGUgbmFtZXMvdmFsdWVzIHNob3VsZCBnby4KLSAgICAgICAgaWYg
KGd1aWRlICYmIGd1aWRlLT5zaXplKCkpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBn
dWlkZS0+c2l6ZSgpOwotICAgICAgICAgICAgdW5zaWduZWQgYmVnaW4gPSAwOwotICAgICAgICAg
ICAgdW5zaWduZWQgY3VyckF0dHIgPSAwOwotICAgICAgICAgICAgUmVmUHRyPEF0dHJpYnV0ZT4g
YXR0ciA9IDA7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsr
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGd1aWRlLT5hdChpKSA9PSAnYScgfHwgZ3VpZGUtPmF0
KGkpID09ICd4JyB8fCBndWlkZS0+YXQoaSkgPT0gJ3YnKSB7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIEFkZCBpbiB0aGUgc3RyaW5nLgotICAgICAgICAgICAgICAgICAgICBhZGRUZXh0KFN0cmlu
ZyhzdGF0aWNfY2FzdDxVQ2hhcio+KGd1aWRlLT5kYXRhKCkpICsgYmVnaW4sIGkgLSBiZWdpbiks
IGNsYXNzTmFtZVN0cik7Ci0KLSAgICAgICAgICAgICAgICAgICAgYmVnaW4gPSBpICsgMTsKLQot
ICAgICAgICAgICAgICAgICAgICBpZiAoZ3VpZGUtPmF0KGkpID09ICdhJykgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHRva2VuLT5hdHRycyAmJiBjdXJyQXR0ciA8IHRva2VuLT5hdHRy
cy0+bGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciA9IHRva2VuLT5h
dHRycy0+YXR0cmlidXRlSXRlbShjdXJyQXR0cisrKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyID0gMDsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoYXR0cikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGd1aWRlLT5hdChpKSA9PSAnYScpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdHJpbmcgbmFtZSA9IGF0dHItPm5hbWUoKS50b1N0cmluZygpOwotCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gYWRkU3BhbldpdGhDbGFzc05hbWUo
IndlYmtpdC1odG1sLWF0dHJpYnV0ZS1uYW1lIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWRkVGV4dChuYW1lLCAid2Via2l0LWh0bWwtYXR0cmlidXRlLW5hbWUiKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50ICE9IG1fdGJvZHkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPiht
X2N1cnJlbnQtPnBhcmVudCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZh
bHVlKCkuc3RyaW5nKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb21wYXJl
IGlnbm9yaW5nIGNhc2Ugc2luY2UgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyIGRvZXNuJ3QKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb3dlciBuYW1lcyB3aGVuIHBhc3NpbmcgaW4g
dG9rZW5zIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSFRNTFZpZXdTb3VyY2VE
b2N1bWVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UodG9rZW4tPnRhZ05hbWUsICJiYXNlIikgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+bmFt
ZSgpLmxvY2FsTmFtZSgpLCAiaHJlZiIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIENhdGNoIHRoZSBocmVmIGF0dHJpYnV0ZSBpbiB0aGUgYmFzZSBlbGVtZW50LgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCB3aWxsIGJlIHVzZWQgZm9yIHJlbmRl
cmluZyBhbmNob3JzIGNyZWF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
YnkgYWRkTGluaygpIGJlbG93LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRC
YXNlRWxlbWVudFVSTChLVVJMKHVybCgpLCB2YWx1ZSkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBYTUwgY291
bGQgdXNlIG5hbWVzcGFjZSBwcmVmaXhlcyBhbmQgY29uZnVzZSB1cy4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+bmFtZSgpLmxvY2FsTmFt
ZSgpLCAic3JjIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+bmFtZSgpLmxvY2FsTmFtZSgp
LCAiaHJlZiIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBh
ZGRMaW5rKHZhbHVlLCBlcXVhbElnbm9yaW5nQ2FzZSh0b2tlbi0+dGFnTmFtZSwgImEiKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2N1cnJlbnQgPSBhZGRTcGFuV2l0aENsYXNzTmFtZSgid2Via2l0LWh0bWwtYXR0
cmlidXRlLXZhbHVlIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVGV4dCh2YWx1
ZSwgIndlYmtpdC1odG1sLWF0dHJpYnV0ZS12YWx1ZSIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChtX2N1cnJlbnQgIT0gbV90Ym9keSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9jdXJyZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fY3VycmVudC0+cGFy
ZW50KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBBZGQg
aW4gYW55IHN0cmluZyB0aGF0IG1pZ2h0IGJlIGxlZnQuCi0gICAgICAgICAgICBpZiAoYmVnaW4g
PCBzaXplKQotICAgICAgICAgICAgICAgIGFkZFRleHQoU3RyaW5nKHN0YXRpY19jYXN0PFVDaGFy
Kj4oZ3VpZGUtPmRhdGEoKSkgKyBiZWdpbiwgc2l6ZSAtIGJlZ2luKSwgY2xhc3NOYW1lU3RyKTsK
LQotICAgICAgICAgICAgLy8gQWRkIGluIHRoZSBlbmQgdGFnLgotICAgICAgICAgICAgYWRkVGV4
dCgiPiIsIGNsYXNzTmFtZVN0cik7Ci0gICAgICAgIH0KLQotICAgICAgICBtX2N1cnJlbnQgPSBt
X3RkOworICAgIHN3aXRjaCAodG9rZW4udHlwZSgpKSB7CisgICAgY2FzZSBIVE1MVG9rZW46OlVu
aW5pdGlhbGl6ZWQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRToKKyAgICAgICAgcHJvY2Vzc0RvY3R5cGVU
b2tlbih0b2tlbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSFRNTFRva2VuOjpFbmRPZkZp
bGU6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKKyAgICBj
YXNlIEhUTUxUb2tlbjo6RW5kVGFnOgorICAgICAgICBwcm9jZXNzVGFnVG9rZW4odG9rZW4pOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEhUTUxUb2tlbjo6Q29tbWVudDoKKyAgICAgICAgcHJv
Y2Vzc0NvbW1lbnRUb2tlbih0b2tlbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSFRNTFRv
a2VuOjpDaGFyYWN0ZXI6CisgICAgICAgIHByb2Nlc3NDaGFyYWN0ZXJUb2tlbih0b2tlbik7Cisg
ICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50Ojph
ZGRWaWV3U291cmNlRG9jdHlwZVRva2VuKERvY3R5cGVUb2tlbiogZG9jdHlwZVRva2VuKQordm9p
ZCBIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzQ2hhcmFjdGVyVG9rZW4oSFRNTFRva2Vu
JiB0b2tlbikKK3sKKyAgICBhZGRUZXh0KFN0cmluZyh0b2tlbi5jaGFyYWN0ZXJzKCkuZGF0YSgp
LCB0b2tlbi5jaGFyYWN0ZXJzKCkuc2l6ZSgpKSwgIiIpOworfQorCit2b2lkIEhUTUxWaWV3U291
cmNlRG9jdW1lbnQ6OnByb2Nlc3NDb21tZW50VG9rZW4oSFRNTFRva2VuJiB0b2tlbikKK3sKKyAg
ICBtX2N1cnJlbnQgPSBhZGRTcGFuV2l0aENsYXNzTmFtZSgid2Via2l0LWh0bWwtY29tbWVudCIp
OworICAgIGFkZFRleHQoU3RyaW5nKCI8IS0tIikgKyBTdHJpbmcodG9rZW4uY29tbWVudCgpLmRh
dGEoKSwgdG9rZW4uY29tbWVudCgpLnNpemUoKSkgKyAiLS0+IiwgIndlYmtpdC1odG1sLWNvbW1l
bnQiKTsKK30KKwordm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzRG9jdHlwZVRv
a2VuKEhUTUxUb2tlbiYpCiB7CiAgICAgaWYgKCFtX2N1cnJlbnQpCiAgICAgICAgIGNyZWF0ZUNv
bnRhaW5pbmdUYWJsZSgpOwogICAgIG1fY3VycmVudCA9IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKCJ3
ZWJraXQtaHRtbC1kb2N0eXBlIik7CiAgICAgU3RyaW5nIHRleHQgPSAiPCI7Ci0gICAgdGV4dCAr
PSBTdHJpbmc6OmFkb3B0KGRvY3R5cGVUb2tlbi0+bV9zb3VyY2UpOworICAgIC8vIHRleHQgKz0g
U3RyaW5nOjphZG9wdChkb2N0eXBlVG9rZW4tPm1fc291cmNlKTsKKyAgICB0ZXh0ICs9ICJPT1BT
ISI7CiAgICAgdGV4dCArPSAiPiI7CiAgICAgYWRkVGV4dCh0ZXh0LCAid2Via2l0LWh0bWwtZG9j
dHlwZSIpOwogfQogCit2b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnByb2Nlc3NUYWdUb2tl
bihIVE1MVG9rZW4mIHRva2VuKQoreworICAgIFN0cmluZyBjbGFzc05hbWVTdHIgPSAid2Via2l0
LWh0bWwtdGFnIjsKKyAgICBtX2N1cnJlbnQgPSBhZGRTcGFuV2l0aENsYXNzTmFtZShjbGFzc05h
bWVTdHIpOworCisgICAgU3RyaW5nIHRhZ05hbWUgPSBTdHJpbmcodG9rZW4ubmFtZSgpLmRhdGEo
KSwgdG9rZW4ubmFtZSgpLnNpemUoKSk7CisgICAgCisgICAgU3RyaW5nIHRleHQgPSAiPCI7Cisg
ICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZykKKyAgICAgICAgdGV4dCAr
PSAiLyI7CisgICAgdGV4dCArPSB0YWdOYW1lOworICAgIGFkZFRleHQodGV4dCwgY2xhc3NOYW1l
U3RyKTsKKworICAgIEhUTUxUb2tlbjo6QXR0cmlidXRlTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IHRva2VuLmF0dHJpYnV0ZXMoKS5iZWdpbigpOworICAgIGZvciAoOyBpdGVyICE9IHRva2Vu
LmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIFN0cmluZyBuYW1lKGl0ZXIt
Pm1fbmFtZS5kYXRhKCksIGl0ZXItPm1fbmFtZS5zaXplKCkpOworICAgICAgICBTdHJpbmcgdmFs
dWUoaXRlci0+bV92YWx1ZS5kYXRhKCksIGl0ZXItPm1fdmFsdWUuc2l6ZSgpKTsKKworICAgICAg
ICBtX2N1cnJlbnQgPSBhZGRTcGFuV2l0aENsYXNzTmFtZSgid2Via2l0LWh0bWwtYXR0cmlidXRl
LW5hbWUiKTsKKyAgICAgICAgYWRkVGV4dChuYW1lLCAid2Via2l0LWh0bWwtYXR0cmlidXRlLW5h
bWUiKTsKKyAgICAgICAgaWYgKG1fY3VycmVudCAhPSBtX3Rib2R5KQorICAgICAgICAgICAgbV9j
dXJyZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fY3VycmVudC0+cGFyZW50KCkpOworCisg
ICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh0YWdOYW1lLCAiYmFzZSIpICYmIGVxdWFsSWdu
b3JpbmdDYXNlKHRhZ05hbWUsICJocmVmIikpIHsKKyAgICAgICAgICAgIC8vIENhdGNoIHRoZSBo
cmVmIGF0dHJpYnV0ZSBpbiB0aGUgYmFzZSBlbGVtZW50LiBJdCB3aWxsIGJlIHVzZWQKKyAgICAg
ICAgICAgIC8vIGZvciByZW5kZXJpbmcgYW5jaG9ycyBjcmVhdGVkIGJ5IGFkZExpbmsoKSBiZWxv
dy4KKyAgICAgICAgICAgIHNldEJhc2VFbGVtZW50VVJMKEtVUkwodXJsKCksIHZhbHVlKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNyYyIpIHx8
IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJocmVmIikpCisgICAgICAgICAgICBtX2N1cnJlbnQg
PSBhZGRMaW5rKHZhbHVlLCBlcXVhbElnbm9yaW5nQ2FzZSh0YWdOYW1lLCAiYSIpKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9jdXJyZW50ID0gYWRkU3BhbldpdGhDbGFzc05hbWUoIndl
YmtpdC1odG1sLWF0dHJpYnV0ZS12YWx1ZSIpOworICAgICAgICBhZGRUZXh0KHZhbHVlLCAid2Vi
a2l0LWh0bWwtYXR0cmlidXRlLXZhbHVlIik7CisgICAgICAgIGlmIChtX2N1cnJlbnQgIT0gbV90
Ym9keSkKKyAgICAgICAgICAgIG1fY3VycmVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX2N1
cnJlbnQtPnBhcmVudCgpKTsKKyAgICB9CisKKyAgICBhZGRUZXh0KCI+IiwgY2xhc3NOYW1lU3Ry
KTsKKyAgICBtX2N1cnJlbnQgPSBtX3RkOworfQorCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxW
aWV3U291cmNlRG9jdW1lbnQ6OmFkZFNwYW5XaXRoQ2xhc3NOYW1lKGNvbnN0IFN0cmluZyYgY2xh
c3NOYW1lKQogewogICAgIGlmIChtX2N1cnJlbnQgPT0gbV90Ym9keSkgewpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1M
Vmlld1NvdXJjZURvY3VtZW50LmgKaW5kZXggY2Y2Y2ZjMWRlZDRlMGZjNWZkYjg3OWU4MDQxN2E3
Mjk4YzI1ZGI5OC4uY2ZkZjBkZjI5ZDliMTVjMTZhY2E1NmQ0ZjhhNzE2YzE3ZTg5YTNhNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCkBAIC0yOSwxMSArMjksOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERvY3R5cGVUb2tlbjsKIGNsYXNzIEhUTUxUYWJs
ZUNlbGxFbGVtZW50OwogY2xhc3MgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ7Ci0KLXN0cnVjdCBU
b2tlbjsKK2NsYXNzIEhUTUxUb2tlbjsKIAogY2xhc3MgSFRNTFZpZXdTb3VyY2VEb2N1bWVudCA6
IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgpAQCAtNDIsOSArNDAsOCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFZpZXdTb3VyY2VEb2N1bWVudChmcmFt
ZSwgdXJsLCBtaW1lVHlwZSkpOwogICAgIH0KIAotICAgIHZvaWQgYWRkVmlld1NvdXJjZVRva2Vu
KFRva2VuKik7IC8vIFVzZWQgYnkgdGhlIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci4KKyAgICB2
b2lkIGFkZFZpZXdTb3VyY2VUb2tlbihIVE1MVG9rZW4mKTsgLy8gVXNlZCBieSB0aGUgSFRNTERv
Y3VtZW50UGFyc2VyLgogICAgIHZvaWQgYWRkVmlld1NvdXJjZVRleHQoY29uc3QgU3RyaW5nJik7
IC8vIFVzZWQgYnkgdGhlIFRleHREb2N1bWVudFBhcnNlci4KLSAgICB2b2lkIGFkZFZpZXdTb3Vy
Y2VEb2N0eXBlVG9rZW4oRG9jdHlwZVRva2VuKik7CiAKIHByaXZhdGU6CiAgICAgSFRNTFZpZXdT
b3VyY2VEb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KTsKQEAgLTUyLDYgKzQ5LDExIEBAIHByaXZhdGU6CiAgICAgLy8gUmV0dXJucyBMZWdhY3lIVE1M
RG9jdW1lbnRQYXJzZXIgb3IgVGV4dERvY3VtZW50UGFyc2VyIGJhc2VkIG9uIG1fdHlwZS4KICAg
ICB2aXJ0dWFsIERvY3VtZW50UGFyc2VyKiBjcmVhdGVQYXJzZXIoKTsKIAorICAgIHZvaWQgcHJv
Y2Vzc0RvY3R5cGVUb2tlbihIVE1MVG9rZW4mKTsKKyAgICB2b2lkIHByb2Nlc3NUYWdUb2tlbihI
VE1MVG9rZW4mKTsKKyAgICB2b2lkIHByb2Nlc3NDb21tZW50VG9rZW4oSFRNTFRva2VuJik7Cisg
ICAgdm9pZCBwcm9jZXNzQ2hhcmFjdGVyVG9rZW4oSFRNTFRva2VuJik7CisKICAgICB2b2lkIGNy
ZWF0ZUNvbnRhaW5pbmdUYWJsZSgpOwogICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gYWRkU3Bhbldp
dGhDbGFzc05hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBhZGRMaW5lKGNvbnN0IFN0cmlu
ZyYgY2xhc3NOYW1lKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1l
bnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5jcHAK
aW5kZXggY2I1ZmFjODlmMDk3MmZkNzM1MjBmYTE1OGUzYWUzYzFmYjFiMzUwOC4uNmYxMTBkYWY1
YzI5NjQxNmZmZjQ5NzM3ZWMxZjM5ODhiMTFiZmRmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0xlZ2FjeUhU
TUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTE5MjYsMTEgKzE5MjYsOCBAQCBQYXNzUmVmUHRyPE5v
ZGU+IExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1Rva2VuKCkKICAgICBpZiAoIW1f
cGFyc2VyU3RvcHBlZCkgewogICAgICAgICBpZiAoTmFtZWROb2RlTWFwKiBtYXAgPSBtX2N1cnJl
bnRUb2tlbi5hdHRycy5nZXQoKSkKICAgICAgICAgICAgIG1hcC0+c2hyaW5rVG9MZW5ndGgoKTsK
LSAgICAgICAgaWYgKGluVmlld1NvdXJjZU1vZGUoKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0
PEhUTUxWaWV3U291cmNlRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+YWRkVmlld1NvdXJjZVRva2Vu
KCZtX2N1cnJlbnRUb2tlbik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIC8vIHBhc3MgdGhl
IHRva2VuIG92ZXIgdG8gdGhlIHBhcnNlciwgdGhlIHBhcnNlciBET0VTIE5PVCBkZWxldGUgdGhl
IHRva2VuCi0gICAgICAgICAgICBuID0gbV90cmVlQnVpbGRlci0+cGFyc2VUb2tlbigmbV9jdXJy
ZW50VG9rZW4pOworICAgICAgICAvLyBwYXNzIHRoZSB0b2tlbiBvdmVyIHRvIHRoZSBwYXJzZXIs
IHRoZSBwYXJzZXIgRE9FUyBOT1QgZGVsZXRlIHRoZSB0b2tlbgorICAgICAgICBuID0gbV90cmVl
QnVpbGRlci0+cGFyc2VUb2tlbigmbV9jdXJyZW50VG9rZW4pOwogICAgIH0KICAgICBtX2N1cnJl
bnRUb2tlbi5yZXNldCgpOwogCkBAIC0xOTM5LDEwICsxOTM2LDcgQEAgUGFzc1JlZlB0cjxOb2Rl
PiBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbigpCiAKIHZvaWQgTGVnYWN5
SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzRG9jdHlwZVRva2VuKCkKIHsKLSAgICBpZiAoaW5W
aWV3U291cmNlTW9kZSgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVmlld1NvdXJjZURvY3Vt
ZW50Kj4oZG9jdW1lbnQoKSktPmFkZFZpZXdTb3VyY2VEb2N0eXBlVG9rZW4oJm1fZG9jdHlwZVRv
a2VuKTsKLSAgICBlbHNlCi0gICAgICAgIG1fdHJlZUJ1aWxkZXItPnBhcnNlRG9jdHlwZVRva2Vu
KCZtX2RvY3R5cGVUb2tlbik7CisgICAgbV90cmVlQnVpbGRlci0+cGFyc2VEb2N0eXBlVG9rZW4o
Jm1fZG9jdHlwZVRva2VuKTsKIH0KIAogTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjp+TGVnYWN5
SFRNTERvY3VtZW50UGFyc2VyKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63931</attachid>
            <date>2010-08-09 14:57:26 -0700</date>
            <delta_ts>2010-08-09 19:59:54 -0700</delta_ts>
            <desc>now with HTMLViewSourceParser</desc>
            <filename>bug-43746-20100809145724.patch</filename>
            <type>text/plain</type>
            <size>17932</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTM0YTM2ZGQ2ODMwYjFlYTc2NmM5YWQ5NzBiM2NlNDkyNzY3YjdmYy4uMTdiYmQ1NzllMGE5Yzk1
ZTZiYWMzMTQzYThjZjYzYTI1MTMwMzMyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwzMiBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIFBvcnQgdmlldy1zb3VyY2UgdG8gbmV3
IHBhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDM3NDYKKworICAgICAgICBUaGlzIHBhdGNoIGhhcyB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSB3
b3JraW5nIGluIHRoZSBvbGQgZGVzaWduIG9mCisgICAgICAgIGNvbnN0cnVjdGluZyB0aGUgdmll
dy1zb3VyY2UgdmlldyBmcm9tIHRoZSB0b2tlbiBzdHJlYW0uCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAg
ICAgICAqIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVmlld1NvdXJjZURvY3VtZW50OjpjcmVhdGVQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkVmlld1NvdXJjZVRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnByb2Nlc3NDaGFyYWN0ZXJUb2tlbik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzQ29tbWVu
dFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnByb2Nl
c3NEb2N0eXBlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVu
dDo6cHJvY2Vzc1RhZ1Rva2VuKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NEb2N0eXBl
VG9rZW4pOgorCisyMDEwLTA4LTA5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgUmVtb3ZlIHRy
YWlsaW5nIHdoaXRlc3BhY2UgaW4gSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNzQxCiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2M2N2I2ZDg3MWE4YThiNTA4
YTNjODcwOTY3YTA4MzRjNWU2ZDBhYS4uZTRmMWM3MTkwMGZjNmFhMTdiMzgxNjQ0ODgxMzRmM2Qw
N2M3MmY5NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTI2NjcsNiArMjY2Nyw4IEBACiAJCTk3NkU4OTYxMTFDMENBM0EwMEVBOUNBOSAvKiBIVE1MRW50
aXR5UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NzZFODk1RjExQzBDQTNBMDBFQTlDQTkgLyogSFRNTEVudGl0eVBhcnNlci5oICovOyB9Owog
CQk5NzlGNDNEMzEwNzVFNDRBMDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5RjQzRDExMDc1RTQ0
QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCAqLzsgfTsKIAkJOTc5RjQzRDQxMDc1
RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzlGNDNEMjEwNzVFNDRBMDAwMEY4M0IgLyogUmVk
aXJlY3RTY2hlZHVsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk5N0I3NDMxMzEyMTBBQ0Q5MDA4MzZFOUMgLyogSFRNTFZpZXdTb3VyY2VQYXJz
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdC
NzQzMTExMjEwQUNEOTAwODM2RTlDIC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmNwcCAqLzsgfTsK
KwkJOTdCNzQzMTQxMjEwQUNEOTAwODM2RTlDIC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0I3NDMxMjEyMTBB
Q0Q5MDA4MzZFOUMgLyogSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCAqLzsgfTsKIAkJOTdDMDc4NTAx
MTY1RDVCRTAwM0EzMkVGIC8qIFN1ZmZpeFRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QzA3ODRGMTE2NUQ1QkUwMDNBMzJFRiAvKiBTdWZmaXhU
cmVlLmggKi87IH07CiAJCTk3RENFMjAxMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
N0RDRTFGRjEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuY3BwICovOyB9Owog
CQk5N0RDRTIwMjEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RENFMjAwMTA4MDdDNzUw
MDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NDY5LDYgKzg0NzEsOCBAQAogCQk5NzZFODk1RjEx
QzBDQTNBMDBFQTlDQTkgLyogSFRNTEVudGl0eVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIVE1MRW50aXR5UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk3OUY0M0QxMTA3NUU0NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWRpcmVjdFNjaGVkdWxlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0M0QyMTA3NUU0NEEwMDAwRjgz
QiAvKiBSZWRpcmVjdFNjaGVkdWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWRpcmVjdFNjaGVkdWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0I3
NDMxMTEyMTBBQ0Q5MDA4MzZFOUMgLyogSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0I3NDMxMjEyMTBBQ0Q5MDA4MzZFOUMgLyog
SFRNTFZpZXdTb3VyY2VQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SFRNTFZpZXdTb3VyY2VQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdD
MDc4NEYxMTY1RDVCRTAwM0EzMkVGIC8qIFN1ZmZpeFRyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3VmZml4VHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5N0RDRTFGRjEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGlzdG9yeUNvbnRyb2xsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0RDRTIwMDEwODA3Qzc1MDA1N0QzOTQgLyog
SGlzdG9yeUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlz
dG9yeUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MTYwLDYg
KzE0MTY0LDggQEAKIAkJCQlFNDQ2MTM5QTBDRDYzMzEwMDBGQURBNzUgLyogSFRNTFZpZGVvRWxl
bWVudC5pZGwgKi8sCiAJCQkJQkNDRDc0RTQwQTRDOERERjAwNUZEQTZEIC8qIEhUTUxWaWV3U291
cmNlRG9jdW1lbnQuY3BwICovLAogCQkJCUJDQ0Q3NERCMEE0QzhEMzUwMDVGREE2RCAvKiBIVE1M
Vmlld1NvdXJjZURvY3VtZW50LmggKi8sCisJCQkJOTdCNzQzMTExMjEwQUNEOTAwODM2RTlDIC8q
IEhUTUxWaWV3U291cmNlUGFyc2VyLmNwcCAqLywKKwkJCQk5N0I3NDMxMjEyMTBBQ0Q5MDA4MzZF
OUMgLyogSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCAqLywKIAkJCQlBNzc5NzkxMzBENkI5RDBDMDAz
ODUxQjkgLyogSW1hZ2VEYXRhLmNwcCAqLywKIAkJCQlBNzc5NzkxNDBENkI5RDBDMDAzODUxQjkg
LyogSW1hZ2VEYXRhLmggKi8sCiAJCQkJQTc3OTc5MTUwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdl
RGF0YS5pZGwgKi8sCkBAIC0yMDEzOSw2ICsyMDE0NSw3IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUx
MjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDRE
ODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUNF
MTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTdCNzQzMTQxMjEwQUNEOTAwODM2RTlDIC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTIyNTYyLDYgKzIyNTY5LDcgQEAKIAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAx
RTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFC
RTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk5N0I3NDMxMzEyMTBBQ0Q5MDA4MzZFOUMgLyogSFRNTFZpZXdTb3VyY2VQ
YXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmlu
ZGV4IDM1NGU3ZWQ1MmQ2OWI5MDNjNzZlZmY0MTJlYjA4YmI0ZjFjMDVmZGQuLjNkNzA5YjQ4ZGNl
NjViNjQ4ZjNjZDEwOTFjMzY5MTJkOGJlMGE2OWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJz
ZXIuY3BwCkBAIC0yOSwxMiArMjksMTMgQEAKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50Lmgi
CiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRN
TERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlclNjaGVkdWxlci5oIgogI2luY2x1ZGUg
IkhUTUxUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJIVE1MUHJlbG9hZFNjYW5uZXIuaCIKICNpbmNs
dWRlICJIVE1MU2NyaXB0UnVubmVyLmgiCiAjaW5jbHVkZSAiSFRNTFRyZWVCdWlsZGVyLmgiCi0j
aW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCisjaW5jbHVkZSAiSFRNTFZpZXdTb3VyY2VEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3Bw
IGIvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCmluZGV4IGUxYjk1OWJm
ZjU2ZDZlZDkyM2NkMGIwYzNhNzFhNWFjNzViYTJjZmEuLmYzNzEwYjNmMDM3MjI4NTAyODgyZTgw
OWI5OWM5ODRmNGM0ZDc2MjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJj
ZURvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5j
cHAKQEAgLTM2LDcgKzM2LDggQEAKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTFRhYmxlUm93RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVNlY3Rpb25F
bGVtZW50LmgiCi0jaW5jbHVkZSAiTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVk
ZSAiSFRNTFRva2VuLmgiCisjaW5jbHVkZSAiSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCIKICNpbmNs
dWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dERvY3VtZW50LmgiCiAKQEAgLTU4LDEwICs1OSw4
IEBAIERvY3VtZW50UGFyc2VyKiBIVE1MVmlld1NvdXJjZURvY3VtZW50OjpjcmVhdGVQYXJzZXIo
KQogI2lmIEVOQUJMRShYSFRNTE1QKQogICAgICAgICB8fCBtX3R5cGUgPT0gImFwcGxpY2F0aW9u
L3ZuZC53YXAueGh0bWwreG1sIgogI2VuZGlmCi0gICAgICAgICkgewotICAgICAgICAvLyBGSVhN
RTogU2hvdWxkIHJlc3BlY3QgU2V0dGluZ3M6Omh0bWw1UGFyc2VyRW5hYmxlZCgpCi0gICAgICAg
IHJldHVybiBuZXcgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKHRoaXMpOwotICAgIH0KKyAgICAg
ICAgKQorICAgICAgICByZXR1cm4gbmV3IEhUTUxWaWV3U291cmNlUGFyc2VyKHRoaXMpOwogCiAg
ICAgcmV0dXJuIGNyZWF0ZVRleHREb2N1bWVudFBhcnNlcih0aGlzKTsKIH0KQEAgLTEwMCwxMDkg
Kzk5LDk4IEBAIHZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkVmlld1NvdXJjZVRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIGFkZFRleHQodGV4dCwgIiIpOwogfQogCi12b2lkIEhU
TUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFZpZXdTb3VyY2VUb2tlbihUb2tlbiogdG9rZW4pCit2
b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFZpZXdTb3VyY2VUb2tlbihIVE1MVG9rZW4m
IHRva2VuKQogewogICAgIGlmICghbV9jdXJyZW50KQogICAgICAgICBjcmVhdGVDb250YWluaW5n
VGFibGUoKTsKIAotICAgIGlmICh0b2tlbi0+dGFnTmFtZSA9PSB0ZXh0QXRvbSkKLSAgICAgICAg
YWRkVGV4dCh0b2tlbi0+dGV4dC5nZXQoKSwgIiIpOwotICAgIGVsc2UgaWYgKHRva2VuLT50YWdO
YW1lID09IGNvbW1lbnRBdG9tKSB7Ci0gICAgICAgIGlmICh0b2tlbi0+YmVnaW5UYWcpIHsKLSAg
ICAgICAgICAgIG1fY3VycmVudCA9IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKCJ3ZWJraXQtaHRtbC1j
b21tZW50Iik7Ci0gICAgICAgICAgICBhZGRUZXh0KFN0cmluZygiPCEtLSIpICsgdG9rZW4tPnRl
eHQuZ2V0KCkgKyAiLS0+IiwgIndlYmtpdC1odG1sLWNvbW1lbnQiKTsKLSAgICAgICAgfQotICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8vIEhhbmRsZSB0aGUgdGFnLgotICAgICAgICBTdHJpbmcgY2xh
c3NOYW1lU3RyID0gIndlYmtpdC1odG1sLXRhZyI7Ci0gICAgICAgIG1fY3VycmVudCA9IGFkZFNw
YW5XaXRoQ2xhc3NOYW1lKGNsYXNzTmFtZVN0cik7Ci0KLSAgICAgICAgU3RyaW5nIHRleHQgPSAi
PCI7Ci0gICAgICAgIGlmICghdG9rZW4tPmJlZ2luVGFnKQotICAgICAgICAgICAgdGV4dCArPSAi
LyI7Ci0gICAgICAgIHRleHQgKz0gdG9rZW4tPnRhZ05hbWU7Ci0gICAgICAgIFZlY3RvcjxVQ2hh
cj4qIGd1aWRlID0gdG9rZW4tPm1fc291cmNlSW5mby5nZXQoKTsKLSAgICAgICAgaWYgKCFndWlk
ZSB8fCAhZ3VpZGUtPnNpemUoKSkKLSAgICAgICAgICAgIHRleHQgKz0gIj4iOwotCi0gICAgICAg
IGFkZFRleHQodGV4dCwgY2xhc3NOYW1lU3RyKTsKLQotICAgICAgICAvLyBXYWxrIG91ciBndWlk
ZSBzdHJpbmcgdGhhdCB0ZWxscyB1cyB3aGVyZSBhdHRyaWJ1dGUgbmFtZXMvdmFsdWVzIHNob3Vs
ZCBnby4KLSAgICAgICAgaWYgKGd1aWRlICYmIGd1aWRlLT5zaXplKCkpIHsKLSAgICAgICAgICAg
IHVuc2lnbmVkIHNpemUgPSBndWlkZS0+c2l6ZSgpOwotICAgICAgICAgICAgdW5zaWduZWQgYmVn
aW4gPSAwOwotICAgICAgICAgICAgdW5zaWduZWQgY3VyckF0dHIgPSAwOwotICAgICAgICAgICAg
UmVmUHRyPEF0dHJpYnV0ZT4gYXR0ciA9IDA7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGd1aWRlLT5hdChpKSA9
PSAnYScgfHwgZ3VpZGUtPmF0KGkpID09ICd4JyB8fCBndWlkZS0+YXQoaSkgPT0gJ3YnKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIC8vIEFkZCBpbiB0aGUgc3RyaW5nLgotICAgICAgICAgICAgICAg
ICAgICBhZGRUZXh0KFN0cmluZyhzdGF0aWNfY2FzdDxVQ2hhcio+KGd1aWRlLT5kYXRhKCkpICsg
YmVnaW4sIGkgLSBiZWdpbiksIGNsYXNzTmFtZVN0cik7Ci0KLSAgICAgICAgICAgICAgICAgICAg
YmVnaW4gPSBpICsgMTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoZ3VpZGUtPmF0KGkpID09
ICdhJykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuLT5hdHRycyAmJiBjdXJy
QXR0ciA8IHRva2VuLT5hdHRycy0+bGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXR0ciA9IHRva2VuLT5hdHRycy0+YXR0cmlidXRlSXRlbShjdXJyQXR0cisrKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRy
ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoYXR0
cikgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGd1aWRlLT5hdChpKSA9PSAnYScpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IGF0dHItPm5hbWUoKS50
b1N0cmluZygpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gYWRk
U3BhbldpdGhDbGFzc05hbWUoIndlYmtpdC1odG1sLWF0dHJpYnV0ZS1uYW1lIik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkVGV4dChuYW1lLCAid2Via2l0LWh0bWwtYXR0cmlidXRl
LW5hbWUiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50ICE9IG1f
dGJvZHkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihtX2N1cnJlbnQtPnBhcmVudCgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5n
JiB2YWx1ZSA9IGF0dHItPnZhbHVlKCkuc3RyaW5nKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBDb21wYXJlIGlnbm9yaW5nIGNhc2Ugc2luY2UgTGVnYWN5SFRNTERvY3VtZW50
UGFyc2VyIGRvZXNuJ3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb3dlciBuYW1l
cyB3aGVuIHBhc3NpbmcgaW4gdG9rZW5zIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gSFRNTFZpZXdTb3VyY2VEb2N1bWVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UodG9rZW4tPnRhZ05hbWUsICJiYXNlIikgJiYgZXF1YWxJZ25v
cmluZ0Nhc2UoYXR0ci0+bmFtZSgpLmxvY2FsTmFtZSgpLCAiaHJlZiIpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIENhdGNoIHRoZSBocmVmIGF0dHJpYnV0ZSBpbiB0aGUg
YmFzZSBlbGVtZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCB3aWxs
IGJlIHVzZWQgZm9yIHJlbmRlcmluZyBhbmNob3JzIGNyZWF0ZWQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gYnkgYWRkTGluaygpIGJlbG93LgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRCYXNlRWxlbWVudFVSTChLVVJMKHVybCgpLCB2YWx1ZSkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBYTUwgY291bGQgdXNlIG5hbWVzcGFjZSBwcmVmaXhlcyBhbmQgY29uZnVzZSB1
cy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0
ci0+bmFtZSgpLmxvY2FsTmFtZSgpLCAic3JjIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+
bmFtZSgpLmxvY2FsTmFtZSgpLCAiaHJlZiIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2N1cnJlbnQgPSBhZGRMaW5rKHZhbHVlLCBlcXVhbElnbm9yaW5nQ2FzZSh0b2tlbi0+
dGFnTmFtZSwgImEiKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBhZGRTcGFuV2l0aENsYXNzTmFt
ZSgid2Via2l0LWh0bWwtYXR0cmlidXRlLXZhbHVlIik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkVGV4dCh2YWx1ZSwgIndlYmtpdC1odG1sLWF0dHJpYnV0ZS12YWx1ZSIpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgIT0gbV90Ym9keSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG1fY3VycmVudC0+cGFyZW50KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAvLyBBZGQgaW4gYW55IHN0cmluZyB0aGF0IG1pZ2h0IGJlIGxlZnQuCi0gICAg
ICAgICAgICBpZiAoYmVnaW4gPCBzaXplKQotICAgICAgICAgICAgICAgIGFkZFRleHQoU3RyaW5n
KHN0YXRpY19jYXN0PFVDaGFyKj4oZ3VpZGUtPmRhdGEoKSkgKyBiZWdpbiwgc2l6ZSAtIGJlZ2lu
KSwgY2xhc3NOYW1lU3RyKTsKLQotICAgICAgICAgICAgLy8gQWRkIGluIHRoZSBlbmQgdGFnLgot
ICAgICAgICAgICAgYWRkVGV4dCgiPiIsIGNsYXNzTmFtZVN0cik7Ci0gICAgICAgIH0KLQotICAg
ICAgICBtX2N1cnJlbnQgPSBtX3RkOworICAgIHN3aXRjaCAodG9rZW4udHlwZSgpKSB7CisgICAg
Y2FzZSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRToKKyAgICAg
ICAgcHJvY2Vzc0RvY3R5cGVUb2tlbih0b2tlbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SFRNTFRva2VuOjpFbmRPZkZpbGU6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSFRNTFRva2Vu
OjpTdGFydFRhZzoKKyAgICBjYXNlIEhUTUxUb2tlbjo6RW5kVGFnOgorICAgICAgICBwcm9jZXNz
VGFnVG9rZW4odG9rZW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhUTUxUb2tlbjo6Q29t
bWVudDoKKyAgICAgICAgcHJvY2Vzc0NvbW1lbnRUb2tlbih0b2tlbik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6CisgICAgICAgIHByb2Nlc3NDaGFyYWN0
ZXJUb2tlbih0b2tlbik7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdm9pZCBIVE1MVmll
d1NvdXJjZURvY3VtZW50OjphZGRWaWV3U291cmNlRG9jdHlwZVRva2VuKERvY3R5cGVUb2tlbiog
ZG9jdHlwZVRva2VuKQordm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzQ2hhcmFj
dGVyVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKK3sKKyAgICBhZGRUZXh0KFN0cmluZyh0b2tlbi5j
aGFyYWN0ZXJzKCkuZGF0YSgpLCB0b2tlbi5jaGFyYWN0ZXJzKCkuc2l6ZSgpKSwgIiIpOworfQor
Cit2b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnByb2Nlc3NDb21tZW50VG9rZW4oSFRNTFRv
a2VuJiB0b2tlbikKK3sKKyAgICBtX2N1cnJlbnQgPSBhZGRTcGFuV2l0aENsYXNzTmFtZSgid2Vi
a2l0LWh0bWwtY29tbWVudCIpOworICAgIGFkZFRleHQoU3RyaW5nKCI8IS0tIikgKyBTdHJpbmco
dG9rZW4uY29tbWVudCgpLmRhdGEoKSwgdG9rZW4uY29tbWVudCgpLnNpemUoKSkgKyAiLS0+Iiwg
IndlYmtpdC1odG1sLWNvbW1lbnQiKTsKK30KKwordm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50
Ojpwcm9jZXNzRG9jdHlwZVRva2VuKEhUTUxUb2tlbiYpCiB7CiAgICAgaWYgKCFtX2N1cnJlbnQp
CiAgICAgICAgIGNyZWF0ZUNvbnRhaW5pbmdUYWJsZSgpOwogICAgIG1fY3VycmVudCA9IGFkZFNw
YW5XaXRoQ2xhc3NOYW1lKCJ3ZWJraXQtaHRtbC1kb2N0eXBlIik7CiAgICAgU3RyaW5nIHRleHQg
PSAiPCI7Ci0gICAgdGV4dCArPSBTdHJpbmc6OmFkb3B0KGRvY3R5cGVUb2tlbi0+bV9zb3VyY2Up
OworICAgIC8vIHRleHQgKz0gU3RyaW5nOjphZG9wdChkb2N0eXBlVG9rZW4tPm1fc291cmNlKTsK
KyAgICB0ZXh0ICs9ICJPT1BTISI7CiAgICAgdGV4dCArPSAiPiI7CiAgICAgYWRkVGV4dCh0ZXh0
LCAid2Via2l0LWh0bWwtZG9jdHlwZSIpOwogfQogCit2b2lkIEhUTUxWaWV3U291cmNlRG9jdW1l
bnQ6OnByb2Nlc3NUYWdUb2tlbihIVE1MVG9rZW4mIHRva2VuKQoreworICAgIFN0cmluZyBjbGFz
c05hbWVTdHIgPSAid2Via2l0LWh0bWwtdGFnIjsKKyAgICBtX2N1cnJlbnQgPSBhZGRTcGFuV2l0
aENsYXNzTmFtZShjbGFzc05hbWVTdHIpOworCisgICAgU3RyaW5nIHRhZ05hbWUgPSBTdHJpbmco
dG9rZW4ubmFtZSgpLmRhdGEoKSwgdG9rZW4ubmFtZSgpLnNpemUoKSk7CisgICAgCisgICAgU3Ry
aW5nIHRleHQgPSAiPCI7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRh
ZykKKyAgICAgICAgdGV4dCArPSAiLyI7CisgICAgdGV4dCArPSB0YWdOYW1lOworICAgIGFkZFRl
eHQodGV4dCwgY2xhc3NOYW1lU3RyKTsKKworICAgIEhUTUxUb2tlbjo6QXR0cmlidXRlTGlzdDo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IHRva2VuLmF0dHJpYnV0ZXMoKS5iZWdpbigpOworICAgIGZv
ciAoOyBpdGVyICE9IHRva2VuLmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytpdGVyKSB7CisgICAgICAg
IFN0cmluZyBuYW1lKGl0ZXItPm1fbmFtZS5kYXRhKCksIGl0ZXItPm1fbmFtZS5zaXplKCkpOwor
ICAgICAgICBTdHJpbmcgdmFsdWUoaXRlci0+bV92YWx1ZS5kYXRhKCksIGl0ZXItPm1fdmFsdWUu
c2l6ZSgpKTsKKworICAgICAgICBtX2N1cnJlbnQgPSBhZGRTcGFuV2l0aENsYXNzTmFtZSgid2Vi
a2l0LWh0bWwtYXR0cmlidXRlLW5hbWUiKTsKKyAgICAgICAgYWRkVGV4dChuYW1lLCAid2Via2l0
LWh0bWwtYXR0cmlidXRlLW5hbWUiKTsKKyAgICAgICAgaWYgKG1fY3VycmVudCAhPSBtX3Rib2R5
KQorICAgICAgICAgICAgbV9jdXJyZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fY3VycmVu
dC0+cGFyZW50KCkpOworCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh0YWdOYW1lLCAi
YmFzZSIpICYmIGVxdWFsSWdub3JpbmdDYXNlKHRhZ05hbWUsICJocmVmIikpIHsKKyAgICAgICAg
ICAgIC8vIENhdGNoIHRoZSBocmVmIGF0dHJpYnV0ZSBpbiB0aGUgYmFzZSBlbGVtZW50LiBJdCB3
aWxsIGJlIHVzZWQKKyAgICAgICAgICAgIC8vIGZvciByZW5kZXJpbmcgYW5jaG9ycyBjcmVhdGVk
IGJ5IGFkZExpbmsoKSBiZWxvdy4KKyAgICAgICAgICAgIHNldEJhc2VFbGVtZW50VVJMKEtVUkwo
dXJsKCksIHZhbHVlKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UobmFtZSwgInNyYyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJocmVmIikpCisgICAg
ICAgICAgICBtX2N1cnJlbnQgPSBhZGRMaW5rKHZhbHVlLCBlcXVhbElnbm9yaW5nQ2FzZSh0YWdO
YW1lLCAiYSIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9jdXJyZW50ID0gYWRkU3Bh
bldpdGhDbGFzc05hbWUoIndlYmtpdC1odG1sLWF0dHJpYnV0ZS12YWx1ZSIpOworICAgICAgICBh
ZGRUZXh0KHZhbHVlLCAid2Via2l0LWh0bWwtYXR0cmlidXRlLXZhbHVlIik7CisgICAgICAgIGlm
IChtX2N1cnJlbnQgIT0gbV90Ym9keSkKKyAgICAgICAgICAgIG1fY3VycmVudCA9IHN0YXRpY19j
YXN0PEVsZW1lbnQqPihtX2N1cnJlbnQtPnBhcmVudCgpKTsKKyAgICB9CisKKyAgICBhZGRUZXh0
KCI+IiwgY2xhc3NOYW1lU3RyKTsKKyAgICBtX2N1cnJlbnQgPSBtX3RkOworfQorCiBQYXNzUmVm
UHRyPEVsZW1lbnQ+IEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFNwYW5XaXRoQ2xhc3NOYW1l
KGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lKQogewogICAgIGlmIChtX2N1cnJlbnQgPT0gbV90Ym9k
eSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCBi
L1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmgKaW5kZXggY2Y2Y2ZjMWRlZDRl
MGZjNWZkYjg3OWU4MDQxN2E3Mjk4YzI1ZGI5OC4uZmQ2ZTRkMmY0NGRmZTE0MTcxMDExZDFlYzQ1
MWU2ODA5YzNhNDJjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9j
dW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCkBAIC0y
OSwxMSArMjksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERvY3R5cGVUb2tl
bjsKIGNsYXNzIEhUTUxUYWJsZUNlbGxFbGVtZW50OwogY2xhc3MgSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQ7Ci0KLXN0cnVjdCBUb2tlbjsKK2NsYXNzIEhUTUxUb2tlbjsKIAogY2xhc3MgSFRNTFZp
ZXdTb3VyY2VEb2N1bWVudCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgpAQCAtNDIs
MTYgKzQwLDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVmll
d1NvdXJjZURvY3VtZW50KGZyYW1lLCB1cmwsIG1pbWVUeXBlKSk7CiAgICAgfQogCi0gICAgdm9p
ZCBhZGRWaWV3U291cmNlVG9rZW4oVG9rZW4qKTsgLy8gVXNlZCBieSB0aGUgTGVnYWN5SFRNTERv
Y3VtZW50UGFyc2VyLgorICAgIHZvaWQgYWRkVmlld1NvdXJjZVRva2VuKEhUTUxUb2tlbiYpOyAv
LyBVc2VkIGJ5IHRoZSBIVE1MRG9jdW1lbnRQYXJzZXIuCiAgICAgdm9pZCBhZGRWaWV3U291cmNl
VGV4dChjb25zdCBTdHJpbmcmKTsgLy8gVXNlZCBieSB0aGUgVGV4dERvY3VtZW50UGFyc2VyLgot
ICAgIHZvaWQgYWRkVmlld1NvdXJjZURvY3R5cGVUb2tlbihEb2N0eXBlVG9rZW4qKTsKIAogcHJp
dmF0ZToKICAgICBIVE1MVmlld1NvdXJjZURvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpOwogCi0gICAgLy8gUmV0dXJucyBMZWdhY3lIVE1MRG9jdW1l
bnRQYXJzZXIgb3IgVGV4dERvY3VtZW50UGFyc2VyIGJhc2VkIG9uIG1fdHlwZS4KKyAgICAvLyBS
ZXR1cm5zIEhUTUxWaWV3U291cmNlUGFyc2VyIG9yIFRleHREb2N1bWVudFBhcnNlciBiYXNlZCBv
biBtX3R5cGUuCiAgICAgdmlydHVhbCBEb2N1bWVudFBhcnNlciogY3JlYXRlUGFyc2VyKCk7CiAK
KyAgICB2b2lkIHByb2Nlc3NEb2N0eXBlVG9rZW4oSFRNTFRva2VuJik7CisgICAgdm9pZCBwcm9j
ZXNzVGFnVG9rZW4oSFRNTFRva2VuJik7CisgICAgdm9pZCBwcm9jZXNzQ29tbWVudFRva2VuKEhU
TUxUb2tlbiYpOworICAgIHZvaWQgcHJvY2Vzc0NoYXJhY3RlclRva2VuKEhUTUxUb2tlbiYpOwor
CiAgICAgdm9pZCBjcmVhdGVDb250YWluaW5nVGFibGUoKTsKICAgICBQYXNzUmVmUHRyPEVsZW1l
bnQ+IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgYWRkTGlu
ZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvTGVn
YWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1l
bnRQYXJzZXIuY3BwCmluZGV4IGNiNWZhYzg5ZjA5NzJmZDczNTIwZmExNThlM2FlM2MxZmIxYjM1
MDguLjZmMTEwZGFmNWMyOTY0MTZmZmY0OTczN2VjMWYzOTg4YjExYmZkZjIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xOTI2LDExICsxOTI2LDggQEAg
UGFzc1JlZlB0cjxOb2RlPiBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbigp
CiAgICAgaWYgKCFtX3BhcnNlclN0b3BwZWQpIHsKICAgICAgICAgaWYgKE5hbWVkTm9kZU1hcCog
bWFwID0gbV9jdXJyZW50VG9rZW4uYXR0cnMuZ2V0KCkpCiAgICAgICAgICAgICBtYXAtPnNocmlu
a1RvTGVuZ3RoKCk7Ci0gICAgICAgIGlmIChpblZpZXdTb3VyY2VNb2RlKCkpCi0gICAgICAgICAg
ICBzdGF0aWNfY2FzdDxIVE1MVmlld1NvdXJjZURvY3VtZW50Kj4oZG9jdW1lbnQoKSktPmFkZFZp
ZXdTb3VyY2VUb2tlbigmbV9jdXJyZW50VG9rZW4pOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAvLyBwYXNzIHRoZSB0b2tlbiBvdmVyIHRvIHRoZSBwYXJzZXIsIHRoZSBwYXJzZXIgRE9FUyBO
T1QgZGVsZXRlIHRoZSB0b2tlbgotICAgICAgICAgICAgbiA9IG1fdHJlZUJ1aWxkZXItPnBhcnNl
VG9rZW4oJm1fY3VycmVudFRva2VuKTsKKyAgICAgICAgLy8gcGFzcyB0aGUgdG9rZW4gb3ZlciB0
byB0aGUgcGFyc2VyLCB0aGUgcGFyc2VyIERPRVMgTk9UIGRlbGV0ZSB0aGUgdG9rZW4KKyAgICAg
ICAgbiA9IG1fdHJlZUJ1aWxkZXItPnBhcnNlVG9rZW4oJm1fY3VycmVudFRva2VuKTsKICAgICB9
CiAgICAgbV9jdXJyZW50VG9rZW4ucmVzZXQoKTsKIApAQCAtMTkzOSwxMCArMTkzNiw3IEBAIFBh
c3NSZWZQdHI8Tm9kZT4gTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzVG9rZW4oKQog
CiB2b2lkIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc0RvY3R5cGVUb2tlbigpCiB7
Ci0gICAgaWYgKGluVmlld1NvdXJjZU1vZGUoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFZp
ZXdTb3VyY2VEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5hZGRWaWV3U291cmNlRG9jdHlwZVRva2Vu
KCZtX2RvY3R5cGVUb2tlbik7Ci0gICAgZWxzZQotICAgICAgICBtX3RyZWVCdWlsZGVyLT5wYXJz
ZURvY3R5cGVUb2tlbigmbV9kb2N0eXBlVG9rZW4pOworICAgIG1fdHJlZUJ1aWxkZXItPnBhcnNl
RG9jdHlwZVRva2VuKCZtX2RvY3R5cGVUb2tlbik7CiB9CiAKIExlZ2FjeUhUTUxEb2N1bWVudFBh
cnNlcjo6fkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63970</attachid>
            <date>2010-08-09 20:27:16 -0700</date>
            <delta_ts>2010-08-10 18:38:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43746-20100809202715.patch</filename>
            <type>text/plain</type>
            <size>32070</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTA0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMTAtMDgtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3J0
IHZpZXctc291cmNlIHRvIG5ldyBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQzNzQ2CisKKyAgICAgICAgVGhpcyBwYXRjaCBzd2l0Y2hlcyB0
aGUgdmlldy1zb3VyY2UgbW9kZSBmb3IgZnJhbWVzIG92ZXIgdG8gdXNpbmcgdGhlCisgICAgICAg
IG5ldyBIVE1MIHBhcnNpbmcgaW5mcmFzdHJ1Y3R1cmUuICBUaGlzIHBhdGNoIGlzIGFuIGFyY2hp
dGVjdHVyYWwgY2hhbmdlCisgICAgICAgIHRvIGhvdyB3ZSBwYXJzZXIgdmlldyBzb3VyY2UgZG9j
dW1lbnRzLgorCisgICAgICAgIFByZXZpb3VzbHksIHRoZSBMZWdhY3lIVE1MRG9jdW1lbnRQYXJz
ZXIgd291bGQgb3V0cHV0IGEgImd1aWRlIHN0cmluZyIKKyAgICAgICAgdGhhdCBjb25zaWRlZCBv
ZiB0aGUgaW50ZXItYXR0cmlidXRlIHdoaXRlc3BhY2UgYW5kIHZhcmlvdXMgImNvbnRyb2wiCisg
ICAgICAgIGNoYXJhY3RlcnMuICBUaGUgSFRNTFZpZXdTb3VyY2VEb2N1bWVudCB3b3VsZCB0aGVu
IGludGVycHJldCB0aGlzIGd1aWRlCisgICAgICAgIHN0cmluZyB0byBhcHByb3hpbWF0ZWx5IHJl
Y29uc3RydWN0IHRoZSBzb3VyY2Ugb2YgdGhlIG9yaWdpbmFsIGRvY3VtZW50CisgICAgICAgIGFu
ZCBjb2xvcml6ZSB2YXJpb3VzIHN5bnRhdGljIGNvbnN0cnVjdHMuCisKKyAgICAgICAgVW5mb3J0
dW5hdGVseSwgdGhhdCBhcHByb2FjaCBpcyBpbmhlcmVudGx5IGxvdy1maWRlbGl0eS4gIEl0J3Mg
bm90CisgICAgICAgIHJlYWxseSBmZWFzaWJsZSB0byByZWNvbnN0cnVjdCB0aGUgaW5wdXQgZG9j
dW1lbnQgZnJvbSB0aGUgdG9rZW4KKyAgICAgICAgc3RyZWFtLiAgVGhlIG9sZCB2aWV3IHNvdXJj
ZSBtb2RlIGFsc28gaGFkIGEgbnVtYmVyIG9mIGhhY2tzIGluIHRoZSBvbGQKKyAgICAgICAgcGFy
c2VyIChlLmcuLCB0byB0dXJuIG9mIGRlY29kaW5nIG9mIEhUTUwgZW50aXRpZXMpLgorCisgICAg
ICAgIEluc3RlYWQgb2YgdHJ5aW5nIHRvIHJlY29uc3RydWN0IHRoZSBvcmlnaW5hbCBkb2N1bWVu
dCBmcm9tIHRoZSB0b2tlbgorICAgICAgICBzdHJlYW0sIHdlIHVzZSB0aGUgc2VnbWVudGF0aW9u
IGluZm9ybWF0aW9uIGdpdmVuIGJ5IHRoZSB0b2tlbnMgdG8KKyAgICAgICAgY29sb3JpemUgdGhl
IGlucHV0IGRvY3VtZW50IGl0c2VsZi4gIEVhY2ggdG9rZW4gbm93IGNhcmllcyBpbmZvcm1hdGlv
bgorICAgICAgICBhYm91dCB3aGVyZSBpbiB0aGUgaW5wdXQgc3RyZWFtIGl0IGNhbWUgZnJvbSBh
bmQgd2hlcmUgdmFyaW91cworICAgICAgICBzdWJjb21wb25lbnRzIChlLmcuLCBhdHRyaWJ1dGUg
bmFtZXMgYW5kIHZhbHVlcykgYXJlIGxvY2F0ZWQuICBUaGlzCisgICAgICAgIGFwcHJvYWNoIGlz
IGhpZ2hlciBmaWRlbGl0eSBiZWNhdXNlIHdlIHVzZSB0aGlzIHNlZ21lbnRhdGlvbgorICAgICAg
ICBpbmZvcm1hdGlvbiB0byBjb2xvcml6ZSB0aGUgb3JpZ2luYWwgaW5wdXQgaW5zdGVhZCBvZiBh
dHRlbXB0aW5nIHRvCisgICAgICAgIHJlY29uc3RydWN0IHRoZSBvcmlnaW5hbCBpbnB1dC4KKwor
ICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdl
YkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1s
L0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVG9rZW4uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuOjpzdGFydEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6bGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZW5kKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWV3U291cmNlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3Vy
Y2VEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291
cmNlRG9jdW1lbnQ6OmFkZFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJj
ZURvY3VtZW50Ojpwcm9jZXNzRG9jdHlwZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxW
aWV3U291cmNlRG9jdW1lbnQ6OnByb2Nlc3NUYWdUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzQ29tbWVudFRva2VuKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnByb2Nlc3NDaGFyYWN0ZXJUb2tlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRSYW5nZSk6CisgICAg
ICAgICogaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
Vmlld1NvdXJjZVBhcnNlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdT
b3VyY2VQYXJzZXI6On5IVE1MVmlld1NvdXJjZVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVmlld1NvdXJjZVBhcnNlcjo6aW5zZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3
U291cmNlUGFyc2VyOjpwdW1wVG9rZW5pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3
U291cmNlUGFyc2VyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VQ
YXJzZXI6OnNvdXJjZUZvclRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNl
UGFyc2VyOjp1cGRhdGVUb2tlbml6ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmll
d1NvdXJjZVBhcnNlcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNl
UGFyc2VyOjpmaW5pc2hXYXNDYWxsZWQpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZXdTb3VyY2VQ
YXJzZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZVBhcnNlcjo6
SFRNTFZpZXdTb3VyY2VQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VQ
YXJzZXI6OmRvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nl
c3NUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OnBy
b2Nlc3NEb2N0eXBlVG9rZW4pOgorCiAyMDEwLTA4LTA5ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJh
cnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBRdCBidWlsZCBmaXggYXR0ZW1wdCBJVi4K
SW5kZXg6IFdlYkNvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQu
bWsJKHJldmlzaW9uIDY1MDM4KQorKysgV2ViQ29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkp
CkBAIC0yODUsNiArMjg1LDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVT
KSBcCiAJaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAgXAogCWh0bWwvTGVnYWN5SFRN
TERvY3VtZW50UGFyc2VyLmNwcCBcCiAJaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcCBc
CisJaHRtbC9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAgXAogCWh0bWwvSW1hZ2VEYXRhLmNwcCBc
CiAJaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIFwKIAlodG1sL0xlZ2FjeVByZWxvYWRTY2Fu
bmVyLmNwcCBcCkluZGV4OiBXZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDY1MDM4KQorKysgV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAzNCw2ICsxMDM0LDcgQEAgU0VUKFdlYkNvcmVf
U09VUkNFUwogICAgIGh0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcAogICAgIGh0bWwv
SFRNTFVMaXN0RWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3Bw
CisgICAgaHRtbC9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAKICAgICBodG1sL0ltYWdlRGF0YS5j
cHAKICAgICBodG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAKICAgICBodG1sL0xhYmVsc05vZGVM
aXN0LmNwcApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2NTAzOCkKKysrIFdlYkNvcmUvR05VbWFrZWZp
bGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NTAsNiArMTU1MCw4IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuaCBcCiAJV2ViQ29yZS9odG1s
L0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwIFwKIAlXZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3Vy
Y2VEb2N1bWVudC5oIFwKKwlXZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwIFwK
KwlXZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCBcCiAJV2ViQ29yZS9odG1sL0lt
YWdlRGF0YS5jcHAgXAogCVdlYkNvcmUvaHRtbC9JbWFnZURhdGEuaCBcCiAJV2ViQ29yZS9odG1s
L0ltYWdlUmVzaXplclRocmVhZC5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDY1MDM4KQorKysgV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE3MTYsNiArMTcxNiw4IEBACiAg
ICAgICAgICAgICAnaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwv
SFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTFZpZXdT
b3VyY2VEb2N1bWVudC5oJywKKyAgICAgICAgICAgICdodG1sL0hUTUxWaWV3U291cmNlUGFyc2Vy
LmNwcCcsCisgICAgICAgICAgICAnaHRtbC9IVE1MVmlld1NvdXJjZVBhcnNlci5oJywKICAgICAg
ICAgICAgICdodG1sL0ltYWdlRGF0YS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvSW1hZ2VEYXRh
LmgnLAogICAgICAgICAgICAgJ2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCcsCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJl
dmlzaW9uIDY1MDM4KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAt
NzMzLDYgKzczMyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvTGVnYWN5SFRNTERvY3VtZW50
UGFyc2VyLmNwcCBcCiAgICAgaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9I
VE1MVmlld1NvdXJjZURvY3VtZW50LmNwcCBcCisgICAgaHRtbC9IVE1MVmlld1NvdXJjZVBhcnNl
ci5jcHAgXAogICAgIGh0bWwvSW1hZ2VEYXRhLmNwcCBcCiAgICAgaHRtbC9JbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwIFwKICAgICBodG1sL0xhYmVsc05vZGVMaXN0LmNwcCBcCkBAIC0xNDk0LDYgKzE0
OTUsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL0hUTUxVTGlzdEVsZW1lbnQuaCBcCiAgICAg
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmggXAogICAgIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVu
dC5oIFwKKyAgICBodG1sL0hUTUxWaWV3U291cmNlUGFyc2VyLmggXAogICAgIGh0bWwvSW1hZ2VE
YXRhLmggXAogICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmggXAogICAgIGh0bWwvTGFiZWxz
Tm9kZUxpc3QuaCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJl
dmlzaW9uIDY1MDM4KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtNDA4NzMsNiArNDA4NzMsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxl
Pg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MVmlld1NvdXJjZVBh
cnNlci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxodG1sXEhUTUxWaWV3U291cmNlUGFyc2VyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEltYWdlRGF0YS5jcHAiDQog
CQkJCT4NCiAJCQk8L0ZpbGU+DQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDY1MDM4KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2NjcsNiArMjY2Nyw4IEBACiAJ
CTk3NkU4OTYxMTFDMENBM0EwMEVBOUNBOSAvKiBIVE1MRW50aXR5UGFyc2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZFODk1RjExQzBDQTNBMDBF
QTlDQTkgLyogSFRNTEVudGl0eVBhcnNlci5oICovOyB9OwogCQk5NzlGNDNEMzEwNzVFNDRBMDAw
MEY4M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0
U2NoZWR1bGVyLmNwcCAqLzsgfTsKIAkJOTc5RjQzRDQxMDc1RTQ0QTAwMDBGODNCIC8qIFJlZGly
ZWN0U2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NzlGNDNEMjEwNzVFNDRBMDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5N0I3NDMxMzEy
MTBBQ0Q5MDA4MzZFOUMgLyogSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCNzQzMTExMjEwQUNEOTAwODM2RTlD
IC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmNwcCAqLzsgfTsKKwkJOTdCNzQzMTQxMjEwQUNEOTAw
ODM2RTlDIC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0I3NDMxMjEyMTBBQ0Q5MDA4MzZFOUMgLyogSFRNTFZp
ZXdTb3VyY2VQYXJzZXIuaCAqLzsgfTsKIAkJOTdDMDc4NTAxMTY1RDVCRTAwM0EzMkVGIC8qIFN1
ZmZpeFRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk3QzA3ODRGMTE2NUQ1QkUwMDNBMzJFRiAvKiBTdWZmaXhUcmVlLmggKi87IH07CiAJCTk3RENF
MjAxMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0RDRTFGRjEwODA3Qzc1MDA1N0Qz
OTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQk5N0RDRTIwMjEwODA3Qzc1MDA1
N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3RENFMjAwMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29u
dHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC04NDY3LDYgKzg0NjksOCBAQAogCQk5NzZFODk1RjExQzBDQTNBMDBFQTlDQTkgLyogSFRN
TEVudGl0eVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRW50
aXR5UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0M0QxMTA3NUU0
NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZWRpcmVjdFNjaGVkdWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk3OUY0M0QyMTA3NUU0NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWRpcmVjdFNjaGVkdWxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0I3NDMxMTEyMTBBQ0Q5MDA4MzZFOUMg
LyogSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5N0I3NDMxMjEyMTBBQ0Q5MDA4MzZFOUMgLyogSFRNTFZpZXdTb3VyY2VQYXJzZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFZpZXdTb3VyY2VQYXJzZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdDMDc4NEYxMTY1RDVCRTAwM0EzMkVG
IC8qIFN1ZmZpeFRyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3VmZml4
VHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0RDRTFGRjEwODA3Qzc1MDA1
N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSGlzdG9yeUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5N0RDRTIwMDEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlzdG9yeUNvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MTU2LDYgKzE0MTYwLDggQEAKIAkJCQlFNDQ2
MTM5QTBDRDYzMzEwMDBGQURBNzUgLyogSFRNTFZpZGVvRWxlbWVudC5pZGwgKi8sCiAJCQkJQkND
RDc0RTQwQTRDOERERjAwNUZEQTZEIC8qIEhUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwICovLAog
CQkJCUJDQ0Q3NERCMEE0QzhEMzUwMDVGREE2RCAvKiBIVE1MVmlld1NvdXJjZURvY3VtZW50Lmgg
Ki8sCisJCQkJOTdCNzQzMTExMjEwQUNEOTAwODM2RTlDIC8qIEhUTUxWaWV3U291cmNlUGFyc2Vy
LmNwcCAqLywKKwkJCQk5N0I3NDMxMjEyMTBBQ0Q5MDA4MzZFOUMgLyogSFRNTFZpZXdTb3VyY2VQ
YXJzZXIuaCAqLywKIAkJCQlBNzc5NzkxMzBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmNw
cCAqLywKIAkJCQlBNzc5NzkxNDBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggKi8sCiAJ
CQkJQTc3OTc5MTUwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5pZGwgKi8sCkBAIC0yMDEz
Myw2ICsyMDEzOSw3IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmlj
b2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8q
IFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUz
MyAvKiBab29tTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTdCNzQzMTQxMjEwQUNEOTAwODM2
RTlDIC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyNTU1LDYg
KzIyNTYyLDcgQEAKIAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nv
ckxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5
IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0
RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5N0I3NDMx
MzEyMTBBQ0Q5MDA4MzZFOUMgLyogSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAkocmV2aXNpb24gNjUwMzgp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksMTMgKzI5LDE0IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhUTUxEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJTY2hlZHVs
ZXIuaCIKICNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiSFRNTFByZWxvYWRT
Y2FubmVyLmgiCiAjaW5jbHVkZSAiSFRNTFNjcmlwdFJ1bm5lci5oIgogI2luY2x1ZGUgIkhUTUxU
cmVlQnVpbGRlci5oIgotI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgorI2luY2x1ZGUgIkhUTUxW
aWV3U291cmNlRG9jdW1lbnQuaCIKICNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVG9rZW4uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRva2VuLmgJKHJldmlzaW9uIDY1MDM4KQorKysg
V2ViQ29yZS9odG1sL0hUTUxUb2tlbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMiArNTYsMjIg
QEAgcHVibGljOgogCiAgICAgSFRNTFRva2VuKCkgeyBjbGVhcigpOyB9CiAKLSAgICB2b2lkIGNs
ZWFyKCkKKyAgICB2b2lkIGNsZWFyKGludCBzdGFydEluZGV4ID0gMCkKICAgICB7CiAgICAgICAg
IG1fdHlwZSA9IFVuaW5pdGlhbGl6ZWQ7CisgICAgICAgIG1fc3RhcnRJbmRleCA9IHN0YXJ0SW5k
ZXg7CisgICAgICAgIG1fbGVuZ3RoID0gMDsKICAgICAgICAgbV9kYXRhLmNsZWFyKCk7CiAgICAg
fQogCisgICAgaW50IHN0YXJ0SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0SW5kZXg7IH0K
KyAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKworICAgIHZvaWQg
ZW5kKGludCBlbmRJbmRleCkKKyAgICB7CisgICAgICAgIG1fbGVuZ3RoID0gZW5kSW5kZXggLSBt
X3N0YXJ0SW5kZXg7CisgICAgfQorCiAgICAgdm9pZCBtYWtlRW5kT2ZGaWxlKCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7CkBAIC0yODAsNiArMjkwLDkg
QEAgcHJpdmF0ZToKIAogICAgIFR5cGUgbV90eXBlOwogCisgICAgaW50IG1fc3RhcnRJbmRleDsK
KyAgICBpbnQgbV9sZW5ndGg7CisKICAgICAvLyAibmFtZSIgZm9yIERPQ1RZUEUsIFN0YXJ0VGFn
LCBhbmQgRW5kVGFnCiAgICAgLy8gImNoYXJhY3RlcnMiIGZvciBDaGFyYWN0ZXIKICAgICAvLyAi
ZGF0YSIgZm9yIENvbW1lbnQKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3Vt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVu
dC5jcHAJKHJldmlzaW9uIDY1MDM4KQorKysgV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9j
dW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw5IEBACiAjaW5jbHVkZSAiSFRN
TFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd0VsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIgotI2luY2x1ZGUgIkxlZ2FjeUhUTUxEb2N1
bWVudFBhcnNlci5oIgorI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgorI2luY2x1ZGUgIkhUTUxWaWV3
U291cmNlUGFyc2VyLmgiCisjaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAi
VGV4dC5oIgogI2luY2x1ZGUgIlRleHREb2N1bWVudC5oIgogCkBAIC01OCwxMCArNjAsOCBAQCBE
b2N1bWVudFBhcnNlciogSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6CiAjaWYgRU5BQkxFKFhIVE1M
TVApCiAgICAgICAgIHx8IG1fdHlwZSA9PSAiYXBwbGljYXRpb24vdm5kLndhcC54aHRtbCt4bWwi
CiAjZW5kaWYKLSAgICAgICAgKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBTaG91bGQgcmVzcGVjdCBT
ZXR0aW5nczo6aHRtbDVQYXJzZXJFbmFibGVkKCkKLSAgICAgICAgcmV0dXJuIG5ldyBMZWdhY3lI
VE1MRG9jdW1lbnRQYXJzZXIodGhpcyk7Ci0gICAgfQorICAgICAgICApCisgICAgICAgIHJldHVy
biBuZXcgSFRNTFZpZXdTb3VyY2VQYXJzZXIodGhpcyk7CiAKICAgICByZXR1cm4gY3JlYXRlVGV4
dERvY3VtZW50UGFyc2VyKHRoaXMpOwogfQpAQCAtMTAwLDEwNyArMTAwLDkxIEBAIHZvaWQgSFRN
TFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkVmlld1NvdXIKICAgICBhZGRUZXh0KHRleHQsICIiKTsK
IH0KIAotdm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRWaWV3U291cmNlVG9rZW4oVG9r
ZW4qIHRva2VuKQordm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRTb3VyY2UoY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCit7CisgICAgaWYgKCFtX2N1cnJlbnQp
CisgICAgICAgIGNyZWF0ZUNvbnRhaW5pbmdUYWJsZSgpOworCisgICAgc3dpdGNoICh0b2tlbi50
eXBlKCkpIHsKKyAgICBjYXNlIEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSFRNTFRva2VuOjpE
T0NUWVBFOgorICAgICAgICBwcm9jZXNzRG9jdHlwZVRva2VuKHNvdXJjZSwgdG9rZW4pOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgorICAgICAgICBicmVh
azsKKyAgICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6CisgICAgY2FzZSBIVE1MVG9rZW46OkVu
ZFRhZzoKKyAgICAgICAgcHJvY2Vzc1RhZ1Rva2VuKHNvdXJjZSwgdG9rZW4pOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEhUTUxUb2tlbjo6Q29tbWVudDoKKyAgICAgICAgcHJvY2Vzc0NvbW1l
bnRUb2tlbihzb3VyY2UsIHRva2VuKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIVE1MVG9r
ZW46OkNoYXJhY3RlcjoKKyAgICAgICAgcHJvY2Vzc0NoYXJhY3RlclRva2VuKHNvdXJjZSwgdG9r
ZW4pOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1
bWVudDo6cHJvY2Vzc0RvY3R5cGVUb2tlbihjb25zdCBTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2Vu
JikKIHsKICAgICBpZiAoIW1fY3VycmVudCkKICAgICAgICAgY3JlYXRlQ29udGFpbmluZ1RhYmxl
KCk7CisgICAgbV9jdXJyZW50ID0gYWRkU3BhbldpdGhDbGFzc05hbWUoIndlYmtpdC1odG1sLWRv
Y3R5cGUiKTsKKyAgICBhZGRUZXh0KHNvdXJjZSwgIndlYmtpdC1odG1sLWRvY3R5cGUiKTsKKyAg
ICBtX2N1cnJlbnQgPSBtX3RkOworfQogCi0gICAgaWYgKHRva2VuLT50YWdOYW1lID09IHRleHRB
dG9tKQotICAgICAgICBhZGRUZXh0KHRva2VuLT50ZXh0LmdldCgpLCAiIik7Ci0gICAgZWxzZSBp
ZiAodG9rZW4tPnRhZ05hbWUgPT0gY29tbWVudEF0b20pIHsKLSAgICAgICAgaWYgKHRva2VuLT5i
ZWdpblRhZykgewotICAgICAgICAgICAgbV9jdXJyZW50ID0gYWRkU3BhbldpdGhDbGFzc05hbWUo
IndlYmtpdC1odG1sLWNvbW1lbnQiKTsKLSAgICAgICAgICAgIGFkZFRleHQoU3RyaW5nKCI8IS0t
IikgKyB0b2tlbi0+dGV4dC5nZXQoKSArICItLT4iLCAid2Via2l0LWh0bWwtY29tbWVudCIpOwor
dm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzVGFnVG9rZW4oY29uc3QgU3RyaW5n
JiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCit7CisgICAgU3RyaW5nIGNsYXNzTmFtZVN0ciA9
ICJ3ZWJraXQtaHRtbC10YWciOworICAgIG1fY3VycmVudCA9IGFkZFNwYW5XaXRoQ2xhc3NOYW1l
KGNsYXNzTmFtZVN0cik7CisKKyAgICBTdHJpbmcgdGFnTmFtZSA9IFN0cmluZyh0b2tlbi5uYW1l
KCkuZGF0YSgpLCB0b2tlbi5uYW1lKCkuc2l6ZSgpKTsKKworICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKKyAgICBIVE1MVG9rZW46OkF0dHJpYnV0ZUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSB0
b2tlbi5hdHRyaWJ1dGVzKCkuYmVnaW4oKTsKKyAgICB3aGlsZSAoaW5kZXggPCBzb3VyY2UubGVu
Z3RoKCkpIHsKKyAgICAgICAgaWYgKGl0ZXIgPT0gdG9rZW4uYXR0cmlidXRlcygpLmVuZCgpKSB7
CisgICAgICAgICAgICAvLyBXZSB3YW50IHRvIHNob3cgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJz
IGluIHRoZSB0b2tlbi4KKyAgICAgICAgICAgIGluZGV4ID0gYWRkUmFuZ2Uoc291cmNlLCBpbmRl
eCwgc291cmNlLmxlbmd0aCgpLCAiIik7CisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPT0gc291
cmNlLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgLy8gSGFuZGxlIHRoZSB0YWcuCi0gICAgICAgIFN0cmluZyBjbGFzc05hbWVT
dHIgPSAid2Via2l0LWh0bWwtdGFnIjsKLSAgICAgICAgbV9jdXJyZW50ID0gYWRkU3BhbldpdGhD
bGFzc05hbWUoY2xhc3NOYW1lU3RyKTsKLQotICAgICAgICBTdHJpbmcgdGV4dCA9ICI8IjsKLSAg
ICAgICAgaWYgKCF0b2tlbi0+YmVnaW5UYWcpCi0gICAgICAgICAgICB0ZXh0ICs9ICIvIjsKLSAg
ICAgICAgdGV4dCArPSB0b2tlbi0+dGFnTmFtZTsKLSAgICAgICAgVmVjdG9yPFVDaGFyPiogZ3Vp
ZGUgPSB0b2tlbi0+bV9zb3VyY2VJbmZvLmdldCgpOwotICAgICAgICBpZiAoIWd1aWRlIHx8ICFn
dWlkZS0+c2l6ZSgpKQotICAgICAgICAgICAgdGV4dCArPSAiPiI7Ci0KLSAgICAgICAgYWRkVGV4
dCh0ZXh0LCBjbGFzc05hbWVTdHIpOwotCi0gICAgICAgIC8vIFdhbGsgb3VyIGd1aWRlIHN0cmlu
ZyB0aGF0IHRlbGxzIHVzIHdoZXJlIGF0dHJpYnV0ZSBuYW1lcy92YWx1ZXMgc2hvdWxkIGdvLgot
ICAgICAgICBpZiAoZ3VpZGUgJiYgZ3VpZGUtPnNpemUoKSkgewotICAgICAgICAgICAgdW5zaWdu
ZWQgc2l6ZSA9IGd1aWRlLT5zaXplKCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBiZWdpbiA9IDA7
Ci0gICAgICAgICAgICB1bnNpZ25lZCBjdXJyQXR0ciA9IDA7Ci0gICAgICAgICAgICBSZWZQdHI8
QXR0cmlidXRlPiBhdHRyID0gMDsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoZ3VpZGUtPmF0KGkpID09ICdhJyB8
fCBndWlkZS0+YXQoaSkgPT0gJ3gnIHx8IGd1aWRlLT5hdChpKSA9PSAndicpIHsKLSAgICAgICAg
ICAgICAgICAgICAgLy8gQWRkIGluIHRoZSBzdHJpbmcuCi0gICAgICAgICAgICAgICAgICAgIGFk
ZFRleHQoU3RyaW5nKHN0YXRpY19jYXN0PFVDaGFyKj4oZ3VpZGUtPmRhdGEoKSkgKyBiZWdpbiwg
aSAtIGJlZ2luKSwgY2xhc3NOYW1lU3RyKTsKLQotICAgICAgICAgICAgICAgICAgICBiZWdpbiA9
IGkgKyAxOwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChndWlkZS0+YXQoaSkgPT0gJ2EnKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4tPmF0dHJzICYmIGN1cnJBdHRyIDwg
dG9rZW4tPmF0dHJzLT5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRy
ID0gdG9rZW4tPmF0dHJzLT5hdHRyaWJ1dGVJdGVtKGN1cnJBdHRyKyspOwotICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgPSAwOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhdHRyKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3VpZGUtPmF0KGkpID09ICdhJykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gYXR0ci0+bmFtZSgpLnRvU3RyaW5n
KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBhZGRTcGFuV2l0
aENsYXNzTmFtZSgid2Via2l0LWh0bWwtYXR0cmlidXRlLW5hbWUiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhZGRUZXh0KG5hbWUsICJ3ZWJraXQtaHRtbC1hdHRyaWJ1dGUtbmFtZSIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgIT0gbV90Ym9keSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KG1fY3VycmVudC0+cGFyZW50KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHZhbHVl
ID0gYXR0ci0+dmFsdWUoKS5zdHJpbmcoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIENvbXBhcmUgaWdub3JpbmcgY2FzZSBzaW5jZSBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIg
ZG9lc24ndAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvd2VyIG5hbWVzIHdoZW4g
cGFzc2luZyBpbiB0b2tlbnMgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIVE1M
Vmlld1NvdXJjZURvY3VtZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZSh0b2tlbi0+dGFnTmFtZSwgImJhc2UiKSAmJiBlcXVhbElnbm9yaW5nQ2Fz
ZShhdHRyLT5uYW1lKCkubG9jYWxOYW1lKCksICJocmVmIikpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gQ2F0Y2ggdGhlIGhyZWYgYXR0cmlidXRlIGluIHRoZSBiYXNlIGVs
ZW1lbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0IHdpbGwgYmUgdXNl
ZCBmb3IgcmVuZGVyaW5nIGFuY2hvcnMgY3JlYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBieSBhZGRMaW5rKCkgYmVsb3cuCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldEJhc2VFbGVtZW50VVJMKEtVUkwodXJsKCksIHZhbHVlKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFhNTCBjb3VsZCB1c2UgbmFtZXNwYWNlIHByZWZpeGVzIGFuZCBjb25mdXNlIHVzLgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT5uYW1l
KCkubG9jYWxOYW1lKCksICJzcmMiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT5uYW1lKCku
bG9jYWxOYW1lKCksICJocmVmIikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Y3VycmVudCA9IGFkZExpbmsodmFsdWUsIGVxdWFsSWdub3JpbmdDYXNlKHRva2VuLT50YWdOYW1l
LCAiYSIpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKCJ3ZWJr
aXQtaHRtbC1hdHRyaWJ1dGUtdmFsdWUiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
ZGRUZXh0KHZhbHVlLCAid2Via2l0LWh0bWwtYXR0cmlidXRlLXZhbHVlIik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCAhPSBtX3Rib2R5KQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9j
dXJyZW50LT5wYXJlbnQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIC8vIEFkZCBpbiBhbnkgc3RyaW5nIHRoYXQgbWlnaHQgYmUgbGVmdC4KLSAgICAgICAgICAg
IGlmIChiZWdpbiA8IHNpemUpCi0gICAgICAgICAgICAgICAgYWRkVGV4dChTdHJpbmcoc3RhdGlj
X2Nhc3Q8VUNoYXIqPihndWlkZS0+ZGF0YSgpKSArIGJlZ2luLCBzaXplIC0gYmVnaW4pLCBjbGFz
c05hbWVTdHIpOwogCi0gICAgICAgICAgICAvLyBBZGQgaW4gdGhlIGVuZCB0YWcuCi0gICAgICAg
ICAgICBhZGRUZXh0KCI+IiwgY2xhc3NOYW1lU3RyKTsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSBT
dHJpbmcoaXRlci0+bV9uYW1lLmRhdGEoKSwgaXRlci0+bV9uYW1lLnNpemUoKSk7CisgICAgICAg
IFN0cmluZyB2YWx1ZSA9IFN0cmluZyhpdGVyLT5tX3ZhbHVlLmRhdGEoKSwgaXRlci0+bV92YWx1
ZS5zaXplKCkpOyAKKworICAgICAgICBpbmRleCA9IGFkZFJhbmdlKHNvdXJjZSwgaW5kZXgsIGl0
ZXItPm1fbmFtZVJhbmdlLm1fc3RhcnQgLSB0b2tlbi5zdGFydEluZGV4KCksICIiKTsKKyAgICAg
ICAgaW5kZXggPSBhZGRSYW5nZShzb3VyY2UsIGluZGV4LCBpdGVyLT5tX25hbWVSYW5nZS5tX2Vu
ZCAtIHRva2VuLnN0YXJ0SW5kZXgoKSwgIndlYmtpdC1odG1sLWF0dHJpYnV0ZS1uYW1lIik7CisK
KyAgICAgICAgaWYgKHRhZ05hbWUgPT0gImJhc2UiICYmIG5hbWUgPT0gImhyZWYiKSB7CisgICAg
ICAgICAgICAvLyBDYXRjaCB0aGUgaHJlZiBhdHRyaWJ1dGUgaW4gdGhlIGJhc2UgZWxlbWVudC4g
SXQgd2lsbCBiZSB1c2VkCisgICAgICAgICAgICAvLyBmb3IgcmVuZGVyaW5nIGFuY2hvcnMgY3Jl
YXRlZCBieSBhZGRMaW5rKCkgYmVsb3cuCisgICAgICAgICAgICBzZXRCYXNlRWxlbWVudFVSTChL
VVJMKHVybCgpLCB2YWx1ZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9jdXJyZW50ID0gbV90
ZDsKKyAgICAgICAgaW5kZXggPSBhZGRSYW5nZShzb3VyY2UsIGluZGV4LCBpdGVyLT5tX3ZhbHVl
UmFuZ2UubV9zdGFydCAtIHRva2VuLnN0YXJ0SW5kZXgoKSwgIiIpOworCisgICAgICAgIGJvb2wg
aXNMaW5rID0gbmFtZSA9PSAic3JjIiB8fCBuYW1lID09ICJocmVmIjsKKyAgICAgICAgaW5kZXgg
PSBhZGRSYW5nZShzb3VyY2UsIGluZGV4LCBpdGVyLT5tX3ZhbHVlUmFuZ2UubV9lbmQgLSB0b2tl
bi5zdGFydEluZGV4KCksICJ3ZWJraXQtaHRtbC1hdHRyaWJ1dGUtdmFsdWUiLCBpc0xpbmssIHRh
Z05hbWUgPT0gImEiKTsKKworICAgICAgICArK2l0ZXI7CiAgICAgfQorICAgIG1fY3VycmVudCA9
IG1fdGQ7CiB9CiAKLXZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkVmlld1NvdXJjZURv
Y3R5cGVUb2tlbihEb2N0eXBlVG9rZW4qIGRvY3R5cGVUb2tlbikKK3ZvaWQgSFRNTFZpZXdTb3Vy
Y2VEb2N1bWVudDo6cHJvY2Vzc0NvbW1lbnRUb2tlbihjb25zdCBTdHJpbmcmIHNvdXJjZSwgSFRN
TFRva2VuJikKIHsKLSAgICBpZiAoIW1fY3VycmVudCkKLSAgICAgICAgY3JlYXRlQ29udGFpbmlu
Z1RhYmxlKCk7Ci0gICAgbV9jdXJyZW50ID0gYWRkU3BhbldpdGhDbGFzc05hbWUoIndlYmtpdC1o
dG1sLWRvY3R5cGUiKTsKLSAgICBTdHJpbmcgdGV4dCA9ICI8IjsKLSAgICB0ZXh0ICs9IFN0cmlu
Zzo6YWRvcHQoZG9jdHlwZVRva2VuLT5tX3NvdXJjZSk7Ci0gICAgdGV4dCArPSAiPiI7Ci0gICAg
YWRkVGV4dCh0ZXh0LCAid2Via2l0LWh0bWwtZG9jdHlwZSIpOworICAgIG1fY3VycmVudCA9IGFk
ZFNwYW5XaXRoQ2xhc3NOYW1lKCJ3ZWJraXQtaHRtbC1jb21tZW50Iik7CisgICAgYWRkVGV4dChz
b3VyY2UsICJ3ZWJraXQtaHRtbC1jb21tZW50Iik7CisgICAgbV9jdXJyZW50ID0gbV90ZDsKK30K
Kwordm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzQ2hhcmFjdGVyVG9rZW4oY29u
c3QgU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYpCit7CisgICAgYWRkVGV4dChzb3VyY2UsICIi
KTsKIH0KIAogUGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRT
cGFuV2l0aENsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSkKQEAgLTI4Nyw2ICsyNzEs
MjQgQEAgdm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRUZXh0KGNvbgogICAgICAgICBt
X2N1cnJlbnQgPSBtX3Rib2R5OwogfQogCitpbnQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRk
UmFuZ2UoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGludCBzdGFydCwgaW50IGVuZCwgY29uc3QgU3Ry
aW5nJiBjbGFzc05hbWUsIGJvb2wgaXNMaW5rLCBib29sIGlzQW5jaG9yKQoreworICAgIGlmIChz
dGFydCA8IGVuZCkgeworICAgICAgICBTdHJpbmcgdGV4dCA9IHNvdXJjZS5zdWJzdHJpbmcoc3Rh
cnQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgaWYgKCFjbGFzc05hbWUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICBpZiAoaXNMaW5rKQorICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IGFkZExp
bmsodGV4dCwgaXNBbmNob3IpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1f
Y3VycmVudCA9IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKGNsYXNzTmFtZSk7CisgICAgICAgIH0KKyAg
ICAgICAgYWRkVGV4dCh0ZXh0LCBjbGFzc05hbWUpOworICAgICAgICBpZiAoIWNsYXNzTmFtZS5p
c0VtcHR5KCkgJiYgbV9jdXJyZW50ICE9IG1fdGJvZHkpCisgICAgICAgICAgICBtX2N1cnJlbnQg
PSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9jdXJyZW50LT5wYXJlbnQoKSk7CisgICAgICAgIHJl
dHVybiBlbmQ7CisgICAgfQorICAgIHJldHVybiBzdGFydDsKK30KKwogUGFzc1JlZlB0cjxFbGVt
ZW50PiBIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRMaW5rKGNvbnN0IFN0cmluZyYgdXJsLCBi
b29sIGlzQW5jaG9yKQogewogICAgIGlmIChtX2N1cnJlbnQgPT0gbV90Ym9keSkKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaAkocmV2aXNpb24gNjUwMzgpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwx
MSArMjksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERvY3R5cGVUb2tlbjsK
IGNsYXNzIEhUTUxUYWJsZUNlbGxFbGVtZW50OwogY2xhc3MgSFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQ7Ci0KLXN0cnVjdCBUb2tlbjsKK2NsYXNzIEhUTUxUb2tlbjsKIAogY2xhc3MgSFRNTFZpZXdT
b3VyY2VEb2N1bWVudCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgpAQCAtNDIsMjAg
KzQwLDI3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVmlld1Nv
dXJjZURvY3VtZW50KGZyYW1lLCB1cmwsIG1pbWVUeXBlKSk7CiAgICAgfQogCi0gICAgdm9pZCBh
ZGRWaWV3U291cmNlVG9rZW4oVG9rZW4qKTsgLy8gVXNlZCBieSB0aGUgTGVnYWN5SFRNTERvY3Vt
ZW50UGFyc2VyLgorICAgIHZvaWQgYWRkU291cmNlKGNvbnN0IFN0cmluZyYsIEhUTUxUb2tlbiYp
OworCisgICAgdm9pZCBhZGRWaWV3U291cmNlVG9rZW4oSFRNTFRva2VuJik7IC8vIFVzZWQgYnkg
dGhlIEhUTUxEb2N1bWVudFBhcnNlci4KICAgICB2b2lkIGFkZFZpZXdTb3VyY2VUZXh0KGNvbnN0
IFN0cmluZyYpOyAvLyBVc2VkIGJ5IHRoZSBUZXh0RG9jdW1lbnRQYXJzZXIuCi0gICAgdm9pZCBh
ZGRWaWV3U291cmNlRG9jdHlwZVRva2VuKERvY3R5cGVUb2tlbiopOwogCiBwcml2YXRlOgogICAg
IEhUTUxWaWV3U291cmNlRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSk7CiAKLSAgICAvLyBSZXR1cm5zIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlciBv
ciBUZXh0RG9jdW1lbnRQYXJzZXIgYmFzZWQgb24gbV90eXBlLgorICAgIC8vIFJldHVybnMgSFRN
TFZpZXdTb3VyY2VQYXJzZXIgb3IgVGV4dERvY3VtZW50UGFyc2VyIGJhc2VkIG9uIG1fdHlwZS4K
ICAgICB2aXJ0dWFsIERvY3VtZW50UGFyc2VyKiBjcmVhdGVQYXJzZXIoKTsKIAorICAgIHZvaWQg
cHJvY2Vzc0RvY3R5cGVUb2tlbihjb25zdCBTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJik7Cisg
ICAgdm9pZCBwcm9jZXNzVGFnVG9rZW4oY29uc3QgU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYp
OworICAgIHZvaWQgcHJvY2Vzc0NvbW1lbnRUb2tlbihjb25zdCBTdHJpbmcmIHNvdXJjZSwgSFRN
TFRva2VuJik7CisgICAgdm9pZCBwcm9jZXNzQ2hhcmFjdGVyVG9rZW4oY29uc3QgU3RyaW5nJiBz
b3VyY2UsIEhUTUxUb2tlbiYpOworCiAgICAgdm9pZCBjcmVhdGVDb250YWluaW5nVGFibGUoKTsK
ICAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgYWRkTGluZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSk7CiAgICAgdm9p
ZCBhZGRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBjbGFzc05hbWUpOwor
ICAgIGludCBhZGRSYW5nZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgaW50IHN0YXJ0LCBpbnQgZW5k
LCBjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSwgYm9vbCBpc0xpbmsgPSBmYWxzZSwgYm9vbCBpc0Fu
Y2hvciA9IGZhbHNlKTsKICAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGFkZExpbmsoY29uc3QgU3Ry
aW5nJiB1cmwsIGJvb2wgaXNBbmNob3IpOwogCiAgICAgU3RyaW5nIG1fdHlwZTsKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
aHRtbC9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCIKKworI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxUcmVlQnVpbGRlci5oIgorI2luY2x1
ZGUgIkhUTUxWaWV3U291cmNlRG9jdW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitI
VE1MVmlld1NvdXJjZVBhcnNlcjo6fkhUTUxWaWV3U291cmNlUGFyc2VyKCkKK3sKK30KKwordm9p
ZCBIVE1MVmlld1NvdXJjZVBhcnNlcjo6aW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpCit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgSFRNTFZpZXdTb3VyY2VQYXJz
ZXI6OnB1bXBUb2tlbml6ZXIoKQoreworICAgIHdoaWxlIChtX3Rva2VuaXplci5uZXh0VG9rZW4o
bV9pbnB1dC5jdXJyZW50KCksIG1fdG9rZW4pKSB7CisgICAgICAgIG1fdG9rZW4uZW5kKG1faW5w
dXQuY3VycmVudCgpLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAgICAgICBkb2N1
bWVudCgpLT5hZGRTb3VyY2Uoc291cmNlRm9yVG9rZW4oKSwgbV90b2tlbik7CisgICAgICAgIHVw
ZGF0ZVRva2VuaXplclN0YXRlKCk7CisgICAgICAgIG1fdG9rZW4uY2xlYXIobV9pbnB1dC5jdXJy
ZW50KCkubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CisgICAgfQorfQorCit2b2lkIEhU
TUxWaWV3U291cmNlUGFyc2VyOjphcHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBpbnB1dCkK
K3sKKyAgICBtX2lucHV0LmFwcGVuZFRvRW5kKGlucHV0KTsKKyAgICBtX3NvdXJjZS5hcHBlbmQo
aW5wdXQpOworICAgIHB1bXBUb2tlbml6ZXIoKTsKK30KKworU3RyaW5nIEhUTUxWaWV3U291cmNl
UGFyc2VyOjpzb3VyY2VGb3JUb2tlbigpCit7CisgICAgaWYgKG1fdG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6RW5kT2ZGaWxlKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBBU1NF
UlQobV9zb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSA9PSBtX3Rva2VuLnN0YXJ0
SW5kZXgoKSk7CisgICAgVUNoYXIqIGRhdGEgPSAwOworICAgIFN0cmluZyBzb3VyY2UgPSBTdHJp
bmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV90b2tlbi5sZW5ndGgoKSwgZGF0YSk7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBtX3Rva2VuLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgZGF0YVtp
XSA9ICptX3NvdXJjZTsKKyAgICAgICAgbV9zb3VyY2UuYWR2YW5jZSgpOworICAgIH0KKyAgICBy
ZXR1cm4gc291cmNlOworfQorCit2b2lkIEhUTUxWaWV3U291cmNlUGFyc2VyOjp1cGRhdGVUb2tl
bml6ZXJTdGF0ZSgpCit7CisgICAgLy8gRklYTUU6IFRoZSB0b2tlbml6ZXIgc2hvdWxkIGRvIHRo
aXMgd29yayBmb3IgdXMuCisgICAgaWYgKG1fdG9rZW4udHlwZSgpICE9IEhUTUxUb2tlbjo6U3Rh
cnRUYWcpCisgICAgICAgIHJldHVybjsKKworICAgIEF0b21pY1N0cmluZyB0YWdOYW1lKG1fdG9r
ZW4ubmFtZSgpLmRhdGEoKSwgbV90b2tlbi5uYW1lKCkuc2l6ZSgpKTsKKyAgICBtX3Rva2VuaXpl
ci5zZXRTdGF0ZShIVE1MVHJlZUJ1aWxkZXI6OmFkanVzdGVkTGV4ZXJTdGF0ZShtX3Rva2VuaXpl
ci5zdGF0ZSgpLCB0YWdOYW1lLCBtX2RvY3VtZW50LT5mcmFtZSgpKSk7CisgICAgaWYgKHRhZ05h
bWUgPT0gSFRNTE5hbWVzOjpzY3JpcHRUYWcpIHsKKyAgICAgICAgLy8gVGhlIHRyZWUgYnVpbGRl
ciBoYW5kbGVzIHNjcmlwdFRhZyBzZXBhcmF0ZWx5IGZyb20gdGhlIG90aGVyIHRva2VuaXplcgor
ICAgICAgICAvLyBzdGF0ZSBhZGp1c3RtZW50cywgc28gd2UgbmVlZCB0byBoYW5kbGUgaXQgc2Vw
YXJhdGVseSB0b28uCisgICAgICAgIEFTU0VSVChtX3Rva2VuaXplci5zdGF0ZSgpID09IEhUTUxU
b2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgIG1fdG9rZW5pemVyLnNldFN0YXRlKEhUTUxU
b2tlbml6ZXI6OlNjcmlwdERhdGFTdGF0ZSk7CisgICAgfQorfQorCit2b2lkIEhUTUxWaWV3U291
cmNlUGFyc2VyOjpmaW5pc2goKQoreworICAgIGlmICghbV9pbnB1dC5oYXZlU2VlbkVuZE9mRmls
ZSgpKQorICAgICAgICBtX2lucHV0Lm1hcmtFbmRPZkZpbGUoKTsKKyAgICBwdW1wVG9rZW5pemVy
KCk7CisgICAgZG9jdW1lbnQoKS0+ZmluaXNoZWRQYXJzaW5nKCk7Cit9CisKK2Jvb2wgSFRNTFZp
ZXdTb3VyY2VQYXJzZXI6OmZpbmlzaFdhc0NhbGxlZCgpCit7CisgICAgcmV0dXJuIG1faW5wdXQu
aGF2ZVNlZW5FbmRPZkZpbGUoKTsKK30KKworfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxWaWV3
U291cmNlUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNl
UGFyc2VyLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VQYXJz
ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIVE1MVmlld1NvdXJjZVBhcnNlcl9o
CisjZGVmaW5lIEhUTUxWaWV3U291cmNlUGFyc2VyX2gKKworI2luY2x1ZGUgIkRlY29kZWREYXRh
RG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRTdHJlYW0uaCIKKyNpbmNsdWRl
ICJIVE1MVG9rZW4uaCIKKyNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCisjaW5jbHVkZSAiSFRN
TFZpZXdTb3VyY2VEb2N1bWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTFRva2VuaXplcjsKK2NsYXNzIEhUTUxTY3Jp
cHRSdW5uZXI7CitjbGFzcyBIVE1MVHJlZUJ1aWxkZXI7CitjbGFzcyBIVE1MUHJlbG9hZFNjYW5u
ZXI7CitjbGFzcyBMZWdhY3lIVE1MVHJlZUJ1aWxkZXI7CitjbGFzcyBTY3JpcHRDb250cm9sbGVy
OworY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKKworY2xhc3MgSFRNTFZpZXdTb3VyY2VQYXJzZXIg
OiAgcHVibGljIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIgeworcHVibGljOgorICAgIC8vIEZJ
WE1FOiBNYWtlIHByaXZhdGUgd2l0aCBhIGNyZWF0ZSBtZXRob2QuCisgICAgSFRNTFZpZXdTb3Vy
Y2VQYXJzZXIoSFRNTFZpZXdTb3VyY2VEb2N1bWVudCogZG9jdW1lbnQpCisgICAgICAgIDogRGVj
b2RlZERhdGFEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKKyAgICB7CisgICAgfQorCisgICAgdmly
dHVhbCB+SFRNTFZpZXdTb3VyY2VQYXJzZXIoKTsKKworcHJpdmF0ZToKKyAgICAvLyBEb2N1bWVu
dFBhcnNlcgorICAgIHZpcnR1YWwgdm9pZCBpbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJik7
CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoKCk7CisgICAgdmlydHVhbCBib29sIGZpbmlzaFdhc0NhbGxlZCgp
OworCisgICAgSFRNTFZpZXdTb3VyY2VEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxIVE1MVmlld1NvdXJjZURvY3VtZW50Kj4obV9kb2N1bWVudCk7IH0KKwor
ICAgIHZvaWQgcHVtcFRva2VuaXplcigpOworICAgIFN0cmluZyBzb3VyY2VGb3JUb2tlbigpOwor
ICAgIHZvaWQgdXBkYXRlVG9rZW5pemVyU3RhdGUoKTsKKworICAgIEhUTUxJbnB1dFN0cmVhbSBt
X2lucHV0OworICAgIFNlZ21lbnRlZFN0cmluZyBtX3NvdXJjZTsKKyAgICBIVE1MVG9rZW4gbV90
b2tlbjsKKyAgICBIVE1MVG9rZW5pemVyIG1fdG9rZW5pemVyOworfTsKKworfQorCisjZW5kaWYK
SW5kZXg6IFdlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwCShyZXZpc2lv
biA2NTAzOCkKKysrIFdlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTI2LDExICsxOTI2LDggQEAgUGFzc1JlZlB0cjxOb2RlPiBMZWdh
Y3lIVE1MRG9jdW1lbnRQYXJzZQogICAgIGlmICghbV9wYXJzZXJTdG9wcGVkKSB7CiAgICAgICAg
IGlmIChOYW1lZE5vZGVNYXAqIG1hcCA9IG1fY3VycmVudFRva2VuLmF0dHJzLmdldCgpKQogICAg
ICAgICAgICAgbWFwLT5zaHJpbmtUb0xlbmd0aCgpOwotICAgICAgICBpZiAoaW5WaWV3U291cmNl
TW9kZSgpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFZpZXdTb3VyY2VEb2N1bWVudCo+
KGRvY3VtZW50KCkpLT5hZGRWaWV3U291cmNlVG9rZW4oJm1fY3VycmVudFRva2VuKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgLy8gcGFzcyB0aGUgdG9rZW4gb3ZlciB0byB0aGUgcGFyc2Vy
LCB0aGUgcGFyc2VyIERPRVMgTk9UIGRlbGV0ZSB0aGUgdG9rZW4KLSAgICAgICAgICAgIG4gPSBt
X3RyZWVCdWlsZGVyLT5wYXJzZVRva2VuKCZtX2N1cnJlbnRUb2tlbik7CisgICAgICAgIC8vIHBh
c3MgdGhlIHRva2VuIG92ZXIgdG8gdGhlIHBhcnNlciwgdGhlIHBhcnNlciBET0VTIE5PVCBkZWxl
dGUgdGhlIHRva2VuCisgICAgICAgIG4gPSBtX3RyZWVCdWlsZGVyLT5wYXJzZVRva2VuKCZtX2N1
cnJlbnRUb2tlbik7CiAgICAgfQogICAgIG1fY3VycmVudFRva2VuLnJlc2V0KCk7CiAKQEAgLTE5
MzksMTAgKzE5MzYsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IExlZ2FjeUhUTUxEb2N1bWVudFBhcnNl
CiAKIHZvaWQgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzRG9jdHlwZVRva2VuKCkK
IHsKLSAgICBpZiAoaW5WaWV3U291cmNlTW9kZSgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1M
Vmlld1NvdXJjZURvY3VtZW50Kj4oZG9jdW1lbnQoKSktPmFkZFZpZXdTb3VyY2VEb2N0eXBlVG9r
ZW4oJm1fZG9jdHlwZVRva2VuKTsKLSAgICBlbHNlCi0gICAgICAgIG1fdHJlZUJ1aWxkZXItPnBh
cnNlRG9jdHlwZVRva2VuKCZtX2RvY3R5cGVUb2tlbik7CisgICAgbV90cmVlQnVpbGRlci0+cGFy
c2VEb2N0eXBlVG9rZW4oJm1fZG9jdHlwZVRva2VuKTsKIH0KIAogTGVnYWN5SFRNTERvY3VtZW50
UGFyc2VyOjp+TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64065</attachid>
            <date>2010-08-10 18:38:55 -0700</date>
            <delta_ts>2010-08-10 18:48:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43746-20100810183854.patch</filename>
            <type>text/plain</type>
            <size>15178</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTM0YTM2ZGQ2ODMwYjFlYTc2NmM5YWQ5NzBiM2NlNDkyNzY3YjdmYy4uMTdiYmQ1NzllMGE5Yzk1
ZTZiYWMzMTQzYThjZjYzYTI1MTMwMzMyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwzMiBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIFBvcnQgdmlldy1zb3VyY2UgdG8gbmV3
IHBhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDM3NDYKKworICAgICAgICBUaGlzIHBhdGNoIGhhcyB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSB3
b3JraW5nIGluIHRoZSBvbGQgZGVzaWduIG9mCisgICAgICAgIGNvbnN0cnVjdGluZyB0aGUgdmll
dy1zb3VyY2UgdmlldyBmcm9tIHRoZSB0b2tlbiBzdHJlYW0uCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAg
ICAgICAqIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVmlld1NvdXJjZURvY3VtZW50OjpjcmVhdGVQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkVmlld1NvdXJjZVRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnByb2Nlc3NDaGFyYWN0ZXJUb2tlbik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzQ29tbWVu
dFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnByb2Nl
c3NEb2N0eXBlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVu
dDo6cHJvY2Vzc1RhZ1Rva2VuKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NEb2N0eXBl
VG9rZW4pOgorCisyMDEwLTA4LTA5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgUmVtb3ZlIHRy
YWlsaW5nIHdoaXRlc3BhY2UgaW4gSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNzQxCiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW4uaCBiL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW4uaApp
bmRleCAyOTIyNzI3NTUwOWJkZmJhYzIxY2MwMDA3YmQ2NGQ3MmE0NzYwNWNmLi5lNDJhODI5N2M1
MDhhY2Q5ZGIzNGI4OTE2YjllNzk5NGIxNmM0ZTEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTFRva2VuLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUb2tlbi5oCkBAIC02NCwxMiArNjQs
MjIgQEAgcHVibGljOgogCiAgICAgSFRNTFRva2VuKCkgeyBjbGVhcigpOyB9CiAKLSAgICB2b2lk
IGNsZWFyKCkKKyAgICB2b2lkIGNsZWFyKGludCBzdGFydEluZGV4ID0gMCkKICAgICB7CiAgICAg
ICAgIG1fdHlwZSA9IFVuaW5pdGlhbGl6ZWQ7CisgICAgICAgIG1fcmFuZ2UubV9zdGFydCA9IHN0
YXJ0SW5kZXg7CisgICAgICAgIG1fcmFuZ2UubV9lbmQgPSBzdGFydEluZGV4OwogICAgICAgICBt
X2RhdGEuY2xlYXIoKTsKICAgICB9CiAKKyAgICBpbnQgc3RhcnRJbmRleCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFuZ2UubV9zdGFydDsgfQorICAgIGludCBlbmRJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFuZ2UubV9lbmQ7IH0KKworICAgIHZvaWQgZW5kKGludCBlbmRJbmRleCkKKyAgICB7Cisg
ICAgICAgIG1fcmFuZ2UubV9lbmQgPSBlbmRJbmRleDsKKyAgICB9CisKICAgICB2b2lkIG1ha2VF
bmRPZkZpbGUoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVk
KTsKQEAgLTMyMSw2ICszMzEsOSBAQCBwcml2YXRlOgogCiAgICAgVHlwZSBtX3R5cGU7CiAKKyAg
ICAvLyBXaGljaCBjaGFyYWN0ZXJzIGZyb20gdGhlIGlucHV0IHN0cmVhbSBhcmUgcmVwcmVzZW50
ZWQgYnkgdGhpcyB0b2tlbi4KKyAgICBSYW5nZSBtX3JhbmdlOworCiAgICAgLy8gIm5hbWUiIGZv
ciBET0NUWVBFLCBTdGFydFRhZywgYW5kIEVuZFRhZwogICAgIC8vICJjaGFyYWN0ZXJzIiBmb3Ig
Q2hhcmFjdGVyCiAgICAgLy8gImRhdGEiIGZvciBDb21tZW50CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFZpZXdT
b3VyY2VEb2N1bWVudC5jcHAKaW5kZXggZTFiOTU5YmZmNTZkNmVkOTIzY2QwYjBjM2E3MWE1YWM3
NWJhMmNmYS4uYzMzMGM0ZDY5ZWFlY2NkZDEzZDgyODZlNTVmMTM2ZGVkZWVhY2RhZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcApAQCAtMzYsNyArMzYsOSBAQAogI2lu
Y2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaCIKLSNpbmNsdWRlICJMZWdh
Y3lIVE1MRG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJIVE1MVG9rZW4uaCIKKyNpbmNsdWRl
ICJIVE1MVmlld1NvdXJjZVBhcnNlci5oIgorI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgog
I2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0RG9jdW1lbnQuaCIKIApAQCAtNTgsMTAg
KzYwLDggQEAgRG9jdW1lbnRQYXJzZXIqIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmNyZWF0ZVBh
cnNlcigpCiAjaWYgRU5BQkxFKFhIVE1MTVApCiAgICAgICAgIHx8IG1fdHlwZSA9PSAiYXBwbGlj
YXRpb24vdm5kLndhcC54aHRtbCt4bWwiCiAjZW5kaWYKLSAgICAgICAgKSB7Ci0gICAgICAgIC8v
IEZJWE1FOiBTaG91bGQgcmVzcGVjdCBTZXR0aW5nczo6aHRtbDVQYXJzZXJFbmFibGVkKCkKLSAg
ICAgICAgcmV0dXJuIG5ldyBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIodGhpcyk7Ci0gICAgfQor
ICAgICAgICApCisgICAgICAgIHJldHVybiBuZXcgSFRNTFZpZXdTb3VyY2VQYXJzZXIodGhpcyk7
CiAKICAgICByZXR1cm4gY3JlYXRlVGV4dERvY3VtZW50UGFyc2VyKHRoaXMpOwogfQpAQCAtMTAw
LDEwNyArMTAwLDkxIEBAIHZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkVmlld1NvdXJj
ZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIGFkZFRleHQodGV4dCwgIiIpOwogfQogCi12
b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFZpZXdTb3VyY2VUb2tlbihUb2tlbiogdG9r
ZW4pCit2b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFNvdXJjZShjb25zdCBTdHJpbmcm
IHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBpZiAoIW1fY3VycmVudCkKICAgICAg
ICAgY3JlYXRlQ29udGFpbmluZ1RhYmxlKCk7CiAKLSAgICBpZiAodG9rZW4tPnRhZ05hbWUgPT0g
dGV4dEF0b20pCi0gICAgICAgIGFkZFRleHQodG9rZW4tPnRleHQuZ2V0KCksICIiKTsKLSAgICBl
bHNlIGlmICh0b2tlbi0+dGFnTmFtZSA9PSBjb21tZW50QXRvbSkgewotICAgICAgICBpZiAodG9r
ZW4tPmJlZ2luVGFnKSB7Ci0gICAgICAgICAgICBtX2N1cnJlbnQgPSBhZGRTcGFuV2l0aENsYXNz
TmFtZSgid2Via2l0LWh0bWwtY29tbWVudCIpOwotICAgICAgICAgICAgYWRkVGV4dChTdHJpbmco
IjwhLS0iKSArIHRva2VuLT50ZXh0LmdldCgpICsgIi0tPiIsICJ3ZWJraXQtaHRtbC1jb21tZW50
Iik7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAvLyBIYW5kbGUgdGhlIHRhZy4K
LSAgICAgICAgU3RyaW5nIGNsYXNzTmFtZVN0ciA9ICJ3ZWJraXQtaHRtbC10YWciOwotICAgICAg
ICBtX2N1cnJlbnQgPSBhZGRTcGFuV2l0aENsYXNzTmFtZShjbGFzc05hbWVTdHIpOwotCi0gICAg
ICAgIFN0cmluZyB0ZXh0ID0gIjwiOwotICAgICAgICBpZiAoIXRva2VuLT5iZWdpblRhZykKLSAg
ICAgICAgICAgIHRleHQgKz0gIi8iOwotICAgICAgICB0ZXh0ICs9IHRva2VuLT50YWdOYW1lOwot
ICAgICAgICBWZWN0b3I8VUNoYXI+KiBndWlkZSA9IHRva2VuLT5tX3NvdXJjZUluZm8uZ2V0KCk7
Ci0gICAgICAgIGlmICghZ3VpZGUgfHwgIWd1aWRlLT5zaXplKCkpCi0gICAgICAgICAgICB0ZXh0
ICs9ICI+IjsKLQotICAgICAgICBhZGRUZXh0KHRleHQsIGNsYXNzTmFtZVN0cik7Ci0KLSAgICAg
ICAgLy8gV2FsayBvdXIgZ3VpZGUgc3RyaW5nIHRoYXQgdGVsbHMgdXMgd2hlcmUgYXR0cmlidXRl
IG5hbWVzL3ZhbHVlcyBzaG91bGQgZ28uCi0gICAgICAgIGlmIChndWlkZSAmJiBndWlkZS0+c2l6
ZSgpKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaXplID0gZ3VpZGUtPnNpemUoKTsKLSAgICAg
ICAgICAgIHVuc2lnbmVkIGJlZ2luID0gMDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJBdHRy
ID0gMDsKLSAgICAgICAgICAgIFJlZlB0cjxBdHRyaWJ1dGU+IGF0dHIgPSAwOwotICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAg
IGlmIChndWlkZS0+YXQoaSkgPT0gJ2EnIHx8IGd1aWRlLT5hdChpKSA9PSAneCcgfHwgZ3VpZGUt
PmF0KGkpID09ICd2JykgewotICAgICAgICAgICAgICAgICAgICAvLyBBZGQgaW4gdGhlIHN0cmlu
Zy4KLSAgICAgICAgICAgICAgICAgICAgYWRkVGV4dChTdHJpbmcoc3RhdGljX2Nhc3Q8VUNoYXIq
PihndWlkZS0+ZGF0YSgpKSArIGJlZ2luLCBpIC0gYmVnaW4pLCBjbGFzc05hbWVTdHIpOwotCi0g
ICAgICAgICAgICAgICAgICAgIGJlZ2luID0gaSArIDE7Ci0KLSAgICAgICAgICAgICAgICAgICAg
aWYgKGd1aWRlLT5hdChpKSA9PSAnYScpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0
b2tlbi0+YXR0cnMgJiYgY3VyckF0dHIgPCB0b2tlbi0+YXR0cnMtPmxlbmd0aCgpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF0dHIgPSB0b2tlbi0+YXR0cnMtPmF0dHJpYnV0ZUl0ZW0o
Y3VyckF0dHIrKyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXR0ciA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGF0dHIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChndWlk
ZS0+YXQoaSkgPT0gJ2EnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5h
bWUgPSBhdHRyLT5uYW1lKCkudG9TdHJpbmcoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fY3VycmVudCA9IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKCJ3ZWJraXQtaHRtbC1hdHRyaWJ1
dGUtbmFtZSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRleHQobmFtZSwgIndl
YmtpdC1odG1sLWF0dHJpYnV0ZS1uYW1lIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG1fY3VycmVudCAhPSBtX3Rib2R5KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2N1cnJlbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9jdXJyZW50LT5wYXJlbnQoKSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpLnN0cmluZygpOwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29tcGFyZSBpZ25vcmluZyBjYXNlIHNpbmNl
IExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlciBkb2Vzbid0Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gbG93ZXIgbmFtZXMgd2hlbiBwYXNzaW5nIGluIHRva2VucyB0bwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEhUTUxWaWV3U291cmNlRG9jdW1lbnQuCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHRva2VuLT50YWdOYW1lLCAi
YmFzZSIpICYmIGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPm5hbWUoKS5sb2NhbE5hbWUoKSwgImhy
ZWYiKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYXRjaCB0aGUgaHJl
ZiBhdHRyaWJ1dGUgaW4gdGhlIGJhc2UgZWxlbWVudC4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gSXQgd2lsbCBiZSB1c2VkIGZvciByZW5kZXJpbmcgYW5jaG9ycyBjcmVhdGVk
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IGFkZExpbmsoKSBiZWxvdy4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QmFzZUVsZW1lbnRVUkwoS1VSTCh1
cmwoKSwgdmFsdWUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogWE1MIGNvdWxkIHVzZSBuYW1lc3BhY2UgcHJl
Zml4ZXMgYW5kIGNvbmZ1c2UgdXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGF0dHItPm5hbWUoKS5sb2NhbE5hbWUoKSwgInNyYyIpIHx8IGVxdWFs
SWdub3JpbmdDYXNlKGF0dHItPm5hbWUoKS5sb2NhbE5hbWUoKSwgImhyZWYiKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gYWRkTGluayh2YWx1ZSwgZXF1YWxJ
Z25vcmluZ0Nhc2UodG9rZW4tPnRhZ05hbWUsICJhIikpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0g
YWRkU3BhbldpdGhDbGFzc05hbWUoIndlYmtpdC1odG1sLWF0dHJpYnV0ZS12YWx1ZSIpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRleHQodmFsdWUsICJ3ZWJraXQtaHRtbC1hdHRy
aWJ1dGUtdmFsdWUiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50
ICE9IG1fdGJvZHkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudCA9
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX2N1cnJlbnQtPnBhcmVudCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQWRkIGluIGFueSBzdHJpbmcgdGhhdCBt
aWdodCBiZSBsZWZ0LgotICAgICAgICAgICAgaWYgKGJlZ2luIDwgc2l6ZSkKLSAgICAgICAgICAg
ICAgICBhZGRUZXh0KFN0cmluZyhzdGF0aWNfY2FzdDxVQ2hhcio+KGd1aWRlLT5kYXRhKCkpICsg
YmVnaW4sIHNpemUgLSBiZWdpbiksIGNsYXNzTmFtZVN0cik7Ci0KLSAgICAgICAgICAgIC8vIEFk
ZCBpbiB0aGUgZW5kIHRhZy4KLSAgICAgICAgICAgIGFkZFRleHQoIj4iLCBjbGFzc05hbWVTdHIp
OwotICAgICAgICB9Ci0KLSAgICAgICAgbV9jdXJyZW50ID0gbV90ZDsKKyAgICBzd2l0Y2ggKHRv
a2VuLnR5cGUoKSkgeworICAgIGNhc2UgSFRNTFRva2VuOjpVbmluaXRpYWxpemVkOgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIVE1MVG9r
ZW46OkRPQ1RZUEU6CisgICAgICAgIHByb2Nlc3NEb2N0eXBlVG9rZW4oc291cmNlLCB0b2tlbik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSFRNTFRva2VuOjpFbmRPZkZpbGU6CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKKyAgICBjYXNlIEhUTUxUb2tl
bjo6RW5kVGFnOgorICAgICAgICBwcm9jZXNzVGFnVG9rZW4oc291cmNlLCB0b2tlbik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgorICAgICAgICBwcm9jZXNz
Q29tbWVudFRva2VuKHNvdXJjZSwgdG9rZW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhU
TUxUb2tlbjo6Q2hhcmFjdGVyOgorICAgICAgICBwcm9jZXNzQ2hhcmFjdGVyVG9rZW4oc291cmNl
LCB0b2tlbik7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdm9pZCBIVE1MVmlld1NvdXJj
ZURvY3VtZW50OjphZGRWaWV3U291cmNlRG9jdHlwZVRva2VuKERvY3R5cGVUb2tlbiogZG9jdHlw
ZVRva2VuKQordm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzRG9jdHlwZVRva2Vu
KGNvbnN0IFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mKQogewogICAgIGlmICghbV9jdXJyZW50
KQogICAgICAgICBjcmVhdGVDb250YWluaW5nVGFibGUoKTsKICAgICBtX2N1cnJlbnQgPSBhZGRT
cGFuV2l0aENsYXNzTmFtZSgid2Via2l0LWh0bWwtZG9jdHlwZSIpOwotICAgIFN0cmluZyB0ZXh0
ID0gIjwiOwotICAgIHRleHQgKz0gU3RyaW5nOjphZG9wdChkb2N0eXBlVG9rZW4tPm1fc291cmNl
KTsKLSAgICB0ZXh0ICs9ICI+IjsKLSAgICBhZGRUZXh0KHRleHQsICJ3ZWJraXQtaHRtbC1kb2N0
eXBlIik7CisgICAgYWRkVGV4dChzb3VyY2UsICJ3ZWJraXQtaHRtbC1kb2N0eXBlIik7CisgICAg
bV9jdXJyZW50ID0gbV90ZDsKK30KKwordm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9j
ZXNzVGFnVG9rZW4oY29uc3QgU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCit7Cisg
ICAgU3RyaW5nIGNsYXNzTmFtZVN0ciA9ICJ3ZWJraXQtaHRtbC10YWciOworICAgIG1fY3VycmVu
dCA9IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKGNsYXNzTmFtZVN0cik7CisKKyAgICBBdG9taWNTdHJp
bmcgdGFnTmFtZSh0b2tlbi5uYW1lKCkuZGF0YSgpLCB0b2tlbi5uYW1lKCkuc2l6ZSgpKTsKKwor
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBIVE1MVG9rZW46OkF0dHJpYnV0ZUxpc3Q6OmNv
bnN0X2l0ZXJhdG9yIGl0ZXIgPSB0b2tlbi5hdHRyaWJ1dGVzKCkuYmVnaW4oKTsKKyAgICB3aGls
ZSAoaW5kZXggPCBzb3VyY2UubGVuZ3RoKCkpIHsKKyAgICAgICAgaWYgKGl0ZXIgPT0gdG9rZW4u
YXR0cmlidXRlcygpLmVuZCgpKSB7CisgICAgICAgICAgICAvLyBXZSB3YW50IHRvIHNob3cgdGhl
IHJlbWFpbmluZyBjaGFyYWN0ZXJzIGluIHRoZSB0b2tlbi4KKyAgICAgICAgICAgIGluZGV4ID0g
YWRkUmFuZ2Uoc291cmNlLCBpbmRleCwgc291cmNlLmxlbmd0aCgpLCAiIik7CisgICAgICAgICAg
ICBBU1NFUlQoaW5kZXggPT0gc291cmNlLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgQXRvbWljU3RyaW5nIG5hbWUoaXRlci0+bV9uYW1lLmRhdGEo
KSwgaXRlci0+bV9uYW1lLnNpemUoKSk7CisgICAgICAgIFN0cmluZyB2YWx1ZShpdGVyLT5tX3Zh
bHVlLmRhdGEoKSwgaXRlci0+bV92YWx1ZS5zaXplKCkpOyAKKworICAgICAgICBpbmRleCA9IGFk
ZFJhbmdlKHNvdXJjZSwgaW5kZXgsIGl0ZXItPm1fbmFtZVJhbmdlLm1fc3RhcnQgLSB0b2tlbi5z
dGFydEluZGV4KCksICIiKTsKKyAgICAgICAgaW5kZXggPSBhZGRSYW5nZShzb3VyY2UsIGluZGV4
LCBpdGVyLT5tX25hbWVSYW5nZS5tX2VuZCAtIHRva2VuLnN0YXJ0SW5kZXgoKSwgIndlYmtpdC1o
dG1sLWF0dHJpYnV0ZS1uYW1lIik7CisKKyAgICAgICAgaWYgKHRhZ05hbWUgPT0gYmFzZVRhZyAm
JiBuYW1lID09IGhyZWZBdHRyKSB7CisgICAgICAgICAgICAvLyBDYXRjaCB0aGUgaHJlZiBhdHRy
aWJ1dGUgaW4gdGhlIGJhc2UgZWxlbWVudC4gSXQgd2lsbCBiZSB1c2VkCisgICAgICAgICAgICAv
LyBmb3IgcmVuZGVyaW5nIGFuY2hvcnMgY3JlYXRlZCBieSBhZGRMaW5rKCkgYmVsb3cuCisgICAg
ICAgICAgICBzZXRCYXNlRWxlbWVudFVSTChLVVJMKHVybCgpLCB2YWx1ZSkpOworICAgICAgICB9
CisKKyAgICAgICAgaW5kZXggPSBhZGRSYW5nZShzb3VyY2UsIGluZGV4LCBpdGVyLT5tX3ZhbHVl
UmFuZ2UubV9zdGFydCAtIHRva2VuLnN0YXJ0SW5kZXgoKSwgIiIpOworCisgICAgICAgIGJvb2wg
aXNMaW5rID0gbmFtZSA9PSBzcmNBdHRyIHx8IG5hbWUgPT0gaHJlZkF0dHI7CisgICAgICAgIGlu
ZGV4ID0gYWRkUmFuZ2Uoc291cmNlLCBpbmRleCwgaXRlci0+bV92YWx1ZVJhbmdlLm1fZW5kIC0g
dG9rZW4uc3RhcnRJbmRleCgpLCAid2Via2l0LWh0bWwtYXR0cmlidXRlLXZhbHVlIiwgaXNMaW5r
LCB0YWdOYW1lID09IGFUYWcpOworCisgICAgICAgICsraXRlcjsKKyAgICB9CisgICAgbV9jdXJy
ZW50ID0gbV90ZDsKK30KKwordm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzQ29t
bWVudFRva2VuKGNvbnN0IFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mKQoreworICAgIG1fY3Vy
cmVudCA9IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKCJ3ZWJraXQtaHRtbC1jb21tZW50Iik7CisgICAg
YWRkVGV4dChzb3VyY2UsICJ3ZWJraXQtaHRtbC1jb21tZW50Iik7CisgICAgbV9jdXJyZW50ID0g
bV90ZDsKK30KKwordm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzQ2hhcmFjdGVy
VG9rZW4oY29uc3QgU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYpCit7CisgICAgYWRkVGV4dChz
b3VyY2UsICIiKTsKIH0KIAogUGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MVmlld1NvdXJjZURvY3Vt
ZW50OjphZGRTcGFuV2l0aENsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSkKQEAgLTI4
Nyw2ICsyNzEsMjUgQEAgdm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRUZXh0KGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBjbGFzc05hbWUKICAgICAgICAgbV9jdXJyZW50
ID0gbV90Ym9keTsKIH0KIAoraW50IEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFJhbmdlKGNv
bnN0IFN0cmluZyYgc291cmNlLCBpbnQgc3RhcnQsIGludCBlbmQsIGNvbnN0IFN0cmluZyYgY2xh
c3NOYW1lLCBib29sIGlzTGluaywgYm9vbCBpc0FuY2hvcikKK3sKKyAgICBBU1NFUlQoc3RhcnQg
PD0gZW5kKTsKKyAgICBpZiAoc3RhcnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gc3RhcnQ7CisK
KyAgICBTdHJpbmcgdGV4dCA9IHNvdXJjZS5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0KTsK
KyAgICBpZiAoIWNsYXNzTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGlzTGluaykKKyAg
ICAgICAgICAgIG1fY3VycmVudCA9IGFkZExpbmsodGV4dCwgaXNBbmNob3IpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX2N1cnJlbnQgPSBhZGRTcGFuV2l0aENsYXNzTmFtZShjbGFzc05h
bWUpOworICAgIH0KKyAgICBhZGRUZXh0KHRleHQsIGNsYXNzTmFtZSk7CisgICAgaWYgKCFjbGFz
c05hbWUuaXNFbXB0eSgpICYmIG1fY3VycmVudCAhPSBtX3Rib2R5KQorICAgICAgICBtX2N1cnJl
bnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9jdXJyZW50LT5wYXJlbnQoKSk7CisgICAgcmV0
dXJuIGVuZDsKK30KKwogUGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MVmlld1NvdXJjZURvY3VtZW50
OjphZGRMaW5rKGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGlzQW5jaG9yKQogewogICAgIGlmICht
X2N1cnJlbnQgPT0gbV90Ym9keSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVmlld1Nv
dXJjZURvY3VtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCmlu
ZGV4IGNmNmNmYzFkZWQ0ZTBmYzVmZGI4NzllODA0MTdhNzI5OGMyNWRiOTguLjg4MDU4NDg0NTFk
M2FkMGFkYjNiNjE3OWFjZTJmNzM5MzQ1NTkzNTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MVmlld1NvdXJjZURvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNl
RG9jdW1lbnQuaApAQCAtMjksMTEgKzI5LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBEb2N0eXBlVG9rZW47CiBjbGFzcyBIVE1MVGFibGVDZWxsRWxlbWVudDsKIGNsYXNzIEhU
TUxUYWJsZVNlY3Rpb25FbGVtZW50OwotCi1zdHJ1Y3QgVG9rZW47CitjbGFzcyBIVE1MVG9rZW47
CiAKIGNsYXNzIEhUTUxWaWV3U291cmNlRG9jdW1lbnQgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsK
IHB1YmxpYzoKQEAgLTQyLDIwICs0MCwyNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSFRNTFZpZXdTb3VyY2VEb2N1bWVudChmcmFtZSwgdXJsLCBtaW1lVHlwZSkpOwog
ICAgIH0KIAotICAgIHZvaWQgYWRkVmlld1NvdXJjZVRva2VuKFRva2VuKik7IC8vIFVzZWQgYnkg
dGhlIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci4KKyAgICB2b2lkIGFkZFNvdXJjZShjb25zdCBT
dHJpbmcmLCBIVE1MVG9rZW4mKTsKKworICAgIHZvaWQgYWRkVmlld1NvdXJjZVRva2VuKEhUTUxU
b2tlbiYpOyAvLyBVc2VkIGJ5IHRoZSBIVE1MRG9jdW1lbnRQYXJzZXIuCiAgICAgdm9pZCBhZGRW
aWV3U291cmNlVGV4dChjb25zdCBTdHJpbmcmKTsgLy8gVXNlZCBieSB0aGUgVGV4dERvY3VtZW50
UGFyc2VyLgotICAgIHZvaWQgYWRkVmlld1NvdXJjZURvY3R5cGVUb2tlbihEb2N0eXBlVG9rZW4q
KTsKIAogcHJpdmF0ZToKICAgICBIVE1MVmlld1NvdXJjZURvY3VtZW50KEZyYW1lKiwgY29uc3Qg
S1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCi0gICAgLy8gUmV0dXJucyBMZWdhY3lI
VE1MRG9jdW1lbnRQYXJzZXIgb3IgVGV4dERvY3VtZW50UGFyc2VyIGJhc2VkIG9uIG1fdHlwZS4K
KyAgICAvLyBSZXR1cm5zIEhUTUxWaWV3U291cmNlUGFyc2VyIG9yIFRleHREb2N1bWVudFBhcnNl
ciBiYXNlZCBvbiBtX3R5cGUuCiAgICAgdmlydHVhbCBEb2N1bWVudFBhcnNlciogY3JlYXRlUGFy
c2VyKCk7CiAKKyAgICB2b2lkIHByb2Nlc3NEb2N0eXBlVG9rZW4oY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIEhUTUxUb2tlbiYpOworICAgIHZvaWQgcHJvY2Vzc1RhZ1Rva2VuKGNvbnN0IFN0cmluZyYg
c291cmNlLCBIVE1MVG9rZW4mKTsKKyAgICB2b2lkIHByb2Nlc3NDb21tZW50VG9rZW4oY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYpOworICAgIHZvaWQgcHJvY2Vzc0NoYXJhY3RlclRv
a2VuKGNvbnN0IFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mKTsKKwogICAgIHZvaWQgY3JlYXRl
Q29udGFpbmluZ1RhYmxlKCk7CiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBhZGRTcGFuV2l0aENs
YXNzTmFtZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGFkZExpbmUoY29uc3QgU3RyaW5nJiBj
bGFzc05hbWUpOwogICAgIHZvaWQgYWRkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0
cmluZyYgY2xhc3NOYW1lKTsKKyAgICBpbnQgYWRkUmFuZ2UoY29uc3QgU3RyaW5nJiBzb3VyY2Us
IGludCBzdGFydCwgaW50IGVuZCwgY29uc3QgU3RyaW5nJiBjbGFzc05hbWUsIGJvb2wgaXNMaW5r
ID0gZmFsc2UsIGJvb2wgaXNBbmNob3IgPSBmYWxzZSk7CiAgICAgUGFzc1JlZlB0cjxFbGVtZW50
PiBhZGRMaW5rKGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGlzQW5jaG9yKTsKIAogICAgIFN0cmlu
ZyBtX3R5cGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFy
c2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4
IDk4MGQ2ZWQ4ZWIxNzUyMDZjOGZjMjQ0NjdhOWJiZTBjOTg0YTc5N2QuLjBkNGQ2MTU3ZjA0OGI3
MWU2N2E4YjU4MTI3M2UxMGMyZTViNDljNjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9MZWdh
Y3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9j
dW1lbnRQYXJzZXIuY3BwCkBAIC0xOTI2LDExICsxOTI2LDggQEAgUGFzc1JlZlB0cjxOb2RlPiBM
ZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbigpCiAgICAgaWYgKCFtX3BhcnNl
clN0b3BwZWQpIHsKICAgICAgICAgaWYgKE5hbWVkTm9kZU1hcCogbWFwID0gbV9jdXJyZW50VG9r
ZW4uYXR0cnMuZ2V0KCkpCiAgICAgICAgICAgICBtYXAtPnNocmlua1RvTGVuZ3RoKCk7Ci0gICAg
ICAgIGlmIChpblZpZXdTb3VyY2VNb2RlKCkpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1M
Vmlld1NvdXJjZURvY3VtZW50Kj4oZG9jdW1lbnQoKSktPmFkZFZpZXdTb3VyY2VUb2tlbigmbV9j
dXJyZW50VG9rZW4pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAvLyBwYXNzIHRoZSB0b2tl
biBvdmVyIHRvIHRoZSBwYXJzZXIsIHRoZSBwYXJzZXIgRE9FUyBOT1QgZGVsZXRlIHRoZSB0b2tl
bgotICAgICAgICAgICAgbiA9IG1fdHJlZUJ1aWxkZXItPnBhcnNlVG9rZW4oJm1fY3VycmVudFRv
a2VuKTsKKyAgICAgICAgLy8gcGFzcyB0aGUgdG9rZW4gb3ZlciB0byB0aGUgcGFyc2VyLCB0aGUg
cGFyc2VyIERPRVMgTk9UIGRlbGV0ZSB0aGUgdG9rZW4KKyAgICAgICAgbiA9IG1fdHJlZUJ1aWxk
ZXItPnBhcnNlVG9rZW4oJm1fY3VycmVudFRva2VuKTsKICAgICB9CiAgICAgbV9jdXJyZW50VG9r
ZW4ucmVzZXQoKTsKIApAQCAtMTkzOSwxMCArMTkzNiw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4gTGVn
YWN5SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzVG9rZW4oKQogCiB2b2lkIExlZ2FjeUhUTUxE
b2N1bWVudFBhcnNlcjo6cHJvY2Vzc0RvY3R5cGVUb2tlbigpCiB7Ci0gICAgaWYgKGluVmlld1Nv
dXJjZU1vZGUoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFZpZXdTb3VyY2VEb2N1bWVudCo+
KGRvY3VtZW50KCkpLT5hZGRWaWV3U291cmNlRG9jdHlwZVRva2VuKCZtX2RvY3R5cGVUb2tlbik7
Ci0gICAgZWxzZQotICAgICAgICBtX3RyZWVCdWlsZGVyLT5wYXJzZURvY3R5cGVUb2tlbigmbV9k
b2N0eXBlVG9rZW4pOworICAgIG1fdHJlZUJ1aWxkZXItPnBhcnNlRG9jdHlwZVRva2VuKCZtX2Rv
Y3R5cGVUb2tlbik7CiB9CiAKIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6fkxlZ2FjeUhUTUxE
b2N1bWVudFBhcnNlcigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64066</attachid>
            <date>2010-08-10 18:48:22 -0700</date>
            <delta_ts>2010-08-10 23:36:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43746-20100810184820.patch</filename>
            <type>text/plain</type>
            <size>32046</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA0YjU1YTQ2NDI2NWI3NzFhMmFlNzgwMDY2OGY3NWJkYWMwMjdmMzAyLi45YWMyNzAxOWM4MmJk
ODNiM2Y5NmM3YjE5NWE1ZjljZDY2MTQ1YzZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yODUsNiArMjg1LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVj
dGlvbi5jcHAgXAogCWh0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcCBcCiAJaHRtbC9I
VE1MVmlld1NvdXJjZURvY3VtZW50LmNwcCBcCisJaHRtbC9IVE1MVmlld1NvdXJjZVBhcnNlci5j
cHAgXAogCWh0bWwvSW1hZ2VEYXRhLmNwcCBcCiAJaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3Bw
IFwKIAlodG1sL0xlZ2FjeVByZWxvYWRTY2FubmVyLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2NGQxMmVkOWMx
YmI1ODlhMjg4NjljZDRkMGI2NTg4ODM4ZmYxNmRhLi5lMTkxZGE3OWFjZTRlNTE4NzA1NWMyMGM4
NDI3YTI1NDJmNTE3MmY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwMzcsNiArMTAzNyw3IEBAIFNFVChXZWJDb3Jl
X1NPVVJDRVMKICAgICBodG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5jcHAKICAgICBodG1s
L0hUTUxVTGlzdEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNw
cAorICAgIGh0bWwvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwCiAgICAgaHRtbC9JbWFnZURhdGEu
Y3BwCiAgICAgaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwCiAgICAgaHRtbC9MYWJlbHNOb2Rl
TGlzdC5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZTM0YTM2ZGQ2ODMwYjFlYTc2NmM5YWQ5NzBiM2NlNDkyNzY3YjdmYy4uYjM1Yzc2
NzM5YmViOTFlODQ3Mzg4ZjhhNDg0Y2M2MmMwNzg3N2MwZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxMC0w
OC0xMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcnQgdmlldy1zb3VyY2UgdG8gbmV3IHBh
cnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3
NDYKKworICAgICAgICBUaGlzIHBhdGNoIHN3aXRjaGVzIHRoZSB2aWV3LXNvdXJjZSBtb2RlIGZv
ciBmcmFtZXMgb3ZlciB0byB1c2luZyB0aGUKKyAgICAgICAgbmV3IEhUTUwgcGFyc2luZyBpbmZy
YXN0cnVjdHVyZS4gIFRoaXMgcGF0Y2ggaXMgYW4gYXJjaGl0ZWN0dXJhbCBjaGFuZ2UKKyAgICAg
ICAgdG8gaG93IHdlIHBhcnNlciB2aWV3IHNvdXJjZSBkb2N1bWVudHMuCisKKyAgICAgICAgUHJl
dmlvdXNseSwgdGhlIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlciB3b3VsZCBvdXRwdXQgYSAiZ3Vp
ZGUgc3RyaW5nIgorICAgICAgICB0aGF0IGNvbnNpZGVkIG9mIHRoZSBpbnRlci1hdHRyaWJ1dGUg
d2hpdGVzcGFjZSBhbmQgdmFyaW91cyAiY29udHJvbCIKKyAgICAgICAgY2hhcmFjdGVycy4gIFRo
ZSBIVE1MVmlld1NvdXJjZURvY3VtZW50IHdvdWxkIHRoZW4gaW50ZXJwcmV0IHRoaXMgZ3VpZGUK
KyAgICAgICAgc3RyaW5nIHRvIGFwcHJveGltYXRlbHkgcmVjb25zdHJ1Y3QgdGhlIHNvdXJjZSBv
ZiB0aGUgb3JpZ2luYWwgZG9jdW1lbnQKKyAgICAgICAgYW5kIGNvbG9yaXplIHZhcmlvdXMgc3lu
dGF0aWMgY29uc3RydWN0cy4KKworICAgICAgICBVbmZvcnR1bmF0ZWx5LCB0aGF0IGFwcHJvYWNo
IGlzIGluaGVyZW50bHkgbG93LWZpZGVsaXR5LiAgSXQncyBub3QKKyAgICAgICAgcmVhbGx5IGZl
YXNpYmxlIHRvIHJlY29uc3RydWN0IHRoZSBpbnB1dCBkb2N1bWVudCBmcm9tIHRoZSB0b2tlbgor
ICAgICAgICBzdHJlYW0uICBUaGUgb2xkIHZpZXcgc291cmNlIG1vZGUgYWxzbyBoYWQgYSBudW1i
ZXIgb2YgaGFja3MgaW4gdGhlIG9sZAorICAgICAgICBwYXJzZXIgKGUuZy4sIHRvIHR1cm4gb2Yg
ZGVjb2Rpbmcgb2YgSFRNTCBlbnRpdGllcykuCisKKyAgICAgICAgSW5zdGVhZCBvZiB0cnlpbmcg
dG8gcmVjb25zdHJ1Y3QgdGhlIG9yaWdpbmFsIGRvY3VtZW50IGZyb20gdGhlIHRva2VuCisgICAg
ICAgIHN0cmVhbSwgd2UgdXNlIHRoZSBzZWdtZW50YXRpb24gaW5mb3JtYXRpb24gZ2l2ZW4gYnkg
dGhlIHRva2VucyB0bworICAgICAgICBjb2xvcml6ZSB0aGUgaW5wdXQgZG9jdW1lbnQgaXRzZWxm
LiAgRWFjaCB0b2tlbiBub3cgY2FyaWVzIGluZm9ybWF0aW9uCisgICAgICAgIGFib3V0IHdoZXJl
IGluIHRoZSBpbnB1dCBzdHJlYW0gaXQgY2FtZSBmcm9tIGFuZCB3aGVyZSB2YXJpb3VzCisgICAg
ICAgIHN1YmNvbXBvbmVudHMgKGUuZy4sIGF0dHJpYnV0ZSBuYW1lcyBhbmQgdmFsdWVzKSBhcmUg
bG9jYXRlZC4gIFRoaXMKKyAgICAgICAgYXBwcm9hY2ggaXMgaGlnaGVyIGZpZGVsaXR5IGJlY2F1
c2Ugd2UgdXNlIHRoaXMgc2VnbWVudGF0aW9uCisgICAgICAgIGluZm9ybWF0aW9uIHRvIGNvbG9y
aXplIHRoZSBvcmlnaW5hbCBpbnB1dCBpbnN0ZWFkIG9mIGF0dGVtcHRpbmcgdG8KKyAgICAgICAg
cmVjb25zdHJ1Y3QgdGhlIG9yaWdpbmFsIGlucHV0LgorCisgICAgICAgICogQW5kcm9pZC5tazoK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNw
cDoKKyAgICAgICAgKiBodG1sL0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRv
a2VuOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OnN0YXJ0SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRva2VuOjplbmQpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZURvY3VtZW50OjpjcmVhdGVQYXJz
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnByb2Nlc3NEb2N0
eXBlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6cHJv
Y2Vzc1RhZ1Rva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6
OnByb2Nlc3NDb21tZW50VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VE
b2N1bWVudDo6cHJvY2Vzc0NoYXJhY3RlclRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxW
aWV3U291cmNlRG9jdW1lbnQ6OmFkZFJhbmdlKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWV3U291
cmNlRG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZVBhcnNlcjo6fkhUTUxWaWV3
U291cmNlUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlUGFyc2VyOjpp
bnNlcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VQYXJzZXI6OnB1bXBUb2tl
bml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VQYXJzZXI6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZVBhcnNlcjo6c291cmNlRm9yVG9rZW4p
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VQYXJzZXI6OnVwZGF0ZVRva2VuaXpl
clN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlUGFyc2VyOjpmaW5pc2gp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VQYXJzZXI6OmZpbmlzaFdhc0NhbGxl
ZCk6CisgICAgICAgICogaHRtbC9IVE1MVmlld1NvdXJjZVBhcnNlci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlUGFyc2VyOjpIVE1MVmlld1NvdXJjZVBhcnNlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZVBhcnNlcjo6ZG9jdW1lbnQpOgorICAg
ICAgICAqIGh0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1Rva2VuKToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc0RvY3R5cGVUb2tlbik6CisK
IDIwMTAtMDgtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGFiYTBmZjExYTg0ODlhNGQwMWMx
MjI4ODQ1ODBlN2E5ZTlkMTM5NWEuLmE3NDU4MGJkNzM4ZDhkODMwMDE4MDllMWNiODFlMGY3Mjkw
NzVlYjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQpAQCAtMTU1MCw2ICsxNTUwLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlXZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5oIFwKIAlXZWJDb3JlL2h0bWwvSFRNTFZp
ZXdTb3VyY2VEb2N1bWVudC5jcHAgXAogCVdlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3Vt
ZW50LmggXAorCVdlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAgXAorCVdlYkNv
cmUvaHRtbC9IVE1MVmlld1NvdXJjZVBhcnNlci5oIFwKIAlXZWJDb3JlL2h0bWwvSW1hZ2VEYXRh
LmNwcCBcCiAJV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oIFwKIAlXZWJDb3JlL2h0bWwvSW1hZ2VS
ZXNpemVyVGhyZWFkLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGI5ODE0YjczZDc0NjFiZWJlZGE1MzQwMWEzODgwMGI4
ZTIyNjMxODguLjU1N2E3ZjFmNDk0ZDE2OGFhOWY1OTkwYmI2YmY3NTFiOTJhYjYzZjQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0xNzIwLDYgKzE3MjAsOCBAQAogICAgICAgICAgICAgJ2h0bWwvSFRNTFZpZGVvRWxlbWVudC5o
JywKICAgICAgICAgICAgICdodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwJywKICAgICAg
ICAgICAgICdodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCcsCisgICAgICAgICAgICAnaHRt
bC9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvSFRNTFZpZXdT
b3VyY2VQYXJzZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9JbWFnZURhdGEuY3BwJywKICAgICAg
ICAgICAgICdodG1sL0ltYWdlRGF0YS5oJywKICAgICAgICAgICAgICdodG1sL0ltYWdlUmVzaXpl
clRocmVhZC5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggMzU0NDU3OWY1NzZjYmNhMTI3ZjdmMWIyNzI2NTNkODI2ZTU4MjRl
NC4uYjU3ZTU2ZWY2MmRjMTMzOTA5NjNlZjIyZTU2NDU3MTk5MzgzZjQ2MCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC03MzMsNiAr
NzMzLDcgQEAgU09VUkNFUyArPSBcCiAgICAgaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwIFwKICAgICBodG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxWaWV3
U291cmNlRG9jdW1lbnQuY3BwIFwKKyAgICBodG1sL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcCBc
CiAgICAgaHRtbC9JbWFnZURhdGEuY3BwIFwKICAgICBodG1sL0ltYWdlUmVzaXplclRocmVhZC5j
cHAgXAogICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuY3BwIFwKQEAgLTE0OTQsNiArMTQ5NSw3IEBA
IEhFQURFUlMgKz0gXAogICAgIGh0bWwvSFRNTFVMaXN0RWxlbWVudC5oIFwKICAgICBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmggXAor
ICAgIGh0bWwvSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCBcCiAgICAgaHRtbC9JbWFnZURhdGEuaCBc
CiAgICAgaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBcCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlz
dC5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGNhOTBkZjQyNmUx
YWUxMmViODAxMGI3MjJlMmE4OWY4ZTcyYTkwOGUuLjdiZGFlNmM5ZmE3ZDgzZjM2YjI5ZTAyNWJl
YTdlYzk1NjE0NTAxNWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAt
NDA4NzMsNiArNDA4NzMsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MVmlld1NvdXJjZVBhcnNlci5jcHAiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxW
aWV3U291cmNlUGFyc2VyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxodG1sXEltYWdlRGF0YS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+
DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjYzY3YjZk
ODcxYThhOGI1MDhhM2M4NzA5NjdhMDgzNGM1ZTZkMGFhLi5lNGYxYzcxOTAwZmM2YWExN2IzODE2
NDQ4ODEzNGYzZDA3YzcyZjk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjY2Nyw2ICsyNjY3LDggQEAKIAkJOTc2RTg5NjExMUMwQ0EzQTAwRUE5Q0E5
IC8qIEhUTUxFbnRpdHlQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3NkU4OTVGMTFDMENBM0EwMEVBOUNBOSAvKiBIVE1MRW50aXR5UGFyc2Vy
LmggKi87IH07CiAJCTk3OUY0M0QzMTA3NUU0NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzlG
NDNEMTEwNzVFNDRBMDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIuY3BwICovOyB9OwogCQk5
NzlGNDNENDEwNzVFNDRBMDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QyMTA3NUU0NEEwMDAw
RjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTk3Qjc0MzEzMTIxMEFDRDkwMDgzNkU5QyAvKiBIVE1MVmll
d1NvdXJjZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5N0I3NDMxMTEyMTBBQ0Q5MDA4MzZFOUMgLyogSFRNTFZpZXdTb3VyY2VQYXJzZXIu
Y3BwICovOyB9OworCQk5N0I3NDMxNDEyMTBBQ0Q5MDA4MzZFOUMgLyogSFRNTFZpZXdTb3VyY2VQ
YXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
Qjc0MzEyMTIxMEFDRDkwMDgzNkU5QyAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5oICovOyB9Owog
CQk5N0MwNzg1MDExNjVENUJFMDAzQTMyRUYgLyogU3VmZml4VHJlZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdDMDc4NEYxMTY1RDVCRTAwM0EzMkVG
IC8qIFN1ZmZpeFRyZWUuaCAqLzsgfTsKIAkJOTdEQ0UyMDExMDgwN0M3NTAwNTdEMzk0IC8qIEhp
c3RvcnlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3RENFMUZGMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5j
cHAgKi87IH07CiAJCTk3RENFMjAyMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdEQ0Uy
MDAxMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg0NjksNiArODQ3MSw4IEBACiAJ
CTk3NkU4OTVGMTFDMENBM0EwMEVBOUNBOSAvKiBIVE1MRW50aXR5UGFyc2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxFbnRpdHlQYXJzZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2No
ZWR1bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZGlyZWN0
U2NoZWR1bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc5RjQzRDIxMDc1
RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZGlyZWN0U2NoZWR1bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk3Qjc0MzExMTIxMEFDRDkwMDgzNkU5QyAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MVmlld1NvdXJjZVBh
cnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3Qjc0MzEyMTIxMEFDRDkw
MDgzNkU5QyAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIVE1MVmlld1NvdXJjZVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5N0MwNzg0RjExNjVENUJFMDAzQTMyRUYgLyogU3VmZml4VHJlZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWZmaXhUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk3RENFMUZGMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXN0b3J5Q29udHJv
bGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3RENFMjAwMTA4MDdDNzUw
MDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIaXN0b3J5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTQxNjAsNiArMTQxNjQsOCBAQAogCQkJCUU0NDYxMzlBMENENjMzMTAwMEZBREE3NSAvKiBI
VE1MVmlkZW9FbGVtZW50LmlkbCAqLywKIAkJCQlCQ0NENzRFNDBBNEM4RERGMDA1RkRBNkQgLyog
SFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAgKi8sCiAJCQkJQkNDRDc0REIwQTRDOEQzNTAwNUZE
QTZEIC8qIEhUTUxWaWV3U291cmNlRG9jdW1lbnQuaCAqLywKKwkJCQk5N0I3NDMxMTEyMTBBQ0Q5
MDA4MzZFOUMgLyogSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwICovLAorCQkJCTk3Qjc0MzEyMTIx
MEFDRDkwMDgzNkU5QyAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5oICovLAogCQkJCUE3Nzk3OTEz
MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuY3BwICovLAogCQkJCUE3Nzk3OTE0MEQ2QjlE
MEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCAqLywKIAkJCQlBNzc5NzkxNTBENkI5RDBDMDAzODUx
QjkgLyogSW1hZ2VEYXRhLmlkbCAqLywKQEAgLTIwMTM5LDYgKzIwMTQ1LDcgQEAKIAkJCQlFMUJF
NTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0UxNzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5N0I3NDMxNDEyMTBBQ0Q5MDA4MzZFOUMgLyogSFRNTFZpZXdTb3VyY2VQYXJz
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjI1NjIsNiArMjI1NjksNyBAQAogCQkJCTkzRjE5QjA1
MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9y
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3Qjc0MzEzMTIxMEFDRDkwMDgzNkU5QyAvKiBIVE1M
Vmlld1NvdXJjZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MVG9rZW4uaCBiL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW4uaAppbmRleCAyOTIyNzI3
NTUwOWJkZmJhYzIxY2MwMDA3YmQ2NGQ3MmE0NzYwNWNmLi5lNDJhODI5N2M1MDhhY2Q5ZGIzNGI4
OTE2YjllNzk5NGIxNmM0ZTEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuLmgK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxUb2tlbi5oCkBAIC02NCwxMiArNjQsMjIgQEAgcHVibGlj
OgogCiAgICAgSFRNTFRva2VuKCkgeyBjbGVhcigpOyB9CiAKLSAgICB2b2lkIGNsZWFyKCkKKyAg
ICB2b2lkIGNsZWFyKGludCBzdGFydEluZGV4ID0gMCkKICAgICB7CiAgICAgICAgIG1fdHlwZSA9
IFVuaW5pdGlhbGl6ZWQ7CisgICAgICAgIG1fcmFuZ2UubV9zdGFydCA9IHN0YXJ0SW5kZXg7Cisg
ICAgICAgIG1fcmFuZ2UubV9lbmQgPSBzdGFydEluZGV4OwogICAgICAgICBtX2RhdGEuY2xlYXIo
KTsKICAgICB9CiAKKyAgICBpbnQgc3RhcnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2Uu
bV9zdGFydDsgfQorICAgIGludCBlbmRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2UubV9l
bmQ7IH0KKworICAgIHZvaWQgZW5kKGludCBlbmRJbmRleCkKKyAgICB7CisgICAgICAgIG1fcmFu
Z2UubV9lbmQgPSBlbmRJbmRleDsKKyAgICB9CisKICAgICB2b2lkIG1ha2VFbmRPZkZpbGUoKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKQEAgLTMyMSw2
ICszMzEsOSBAQCBwcml2YXRlOgogCiAgICAgVHlwZSBtX3R5cGU7CiAKKyAgICAvLyBXaGljaCBj
aGFyYWN0ZXJzIGZyb20gdGhlIGlucHV0IHN0cmVhbSBhcmUgcmVwcmVzZW50ZWQgYnkgdGhpcyB0
b2tlbi4KKyAgICBSYW5nZSBtX3JhbmdlOworCiAgICAgLy8gIm5hbWUiIGZvciBET0NUWVBFLCBT
dGFydFRhZywgYW5kIEVuZFRhZwogICAgIC8vICJjaGFyYWN0ZXJzIiBmb3IgQ2hhcmFjdGVyCiAg
ICAgLy8gImRhdGEiIGZvciBDb21tZW50CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZXdTb3VyY2VEb2N1bWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVu
dC5jcHAKaW5kZXggZTFiOTU5YmZmNTZkNmVkOTIzY2QwYjBjM2E3MWE1YWM3NWJhMmNmYS4uYzMz
MGM0ZDY5ZWFlY2NkZDEzZDgyODZlNTVmMTM2ZGVkZWVhY2RhZCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
Vmlld1NvdXJjZURvY3VtZW50LmNwcApAQCAtMzYsNyArMzYsOSBAQAogI2luY2x1ZGUgIkhUTUxU
YWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaCIKLSNpbmNsdWRlICJMZWdhY3lIVE1MRG9jdW1l
bnRQYXJzZXIuaCIKKyNpbmNsdWRlICJIVE1MVG9rZW4uaCIKKyNpbmNsdWRlICJIVE1MVmlld1Nv
dXJjZVBhcnNlci5oIgorI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgogI2luY2x1ZGUgIlRl
eHQuaCIKICNpbmNsdWRlICJUZXh0RG9jdW1lbnQuaCIKIApAQCAtNTgsMTAgKzYwLDggQEAgRG9j
dW1lbnRQYXJzZXIqIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiAjaWYg
RU5BQkxFKFhIVE1MTVApCiAgICAgICAgIHx8IG1fdHlwZSA9PSAiYXBwbGljYXRpb24vdm5kLndh
cC54aHRtbCt4bWwiCiAjZW5kaWYKLSAgICAgICAgKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBTaG91
bGQgcmVzcGVjdCBTZXR0aW5nczo6aHRtbDVQYXJzZXJFbmFibGVkKCkKLSAgICAgICAgcmV0dXJu
IG5ldyBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIodGhpcyk7Ci0gICAgfQorICAgICAgICApCisg
ICAgICAgIHJldHVybiBuZXcgSFRNTFZpZXdTb3VyY2VQYXJzZXIodGhpcyk7CiAKICAgICByZXR1
cm4gY3JlYXRlVGV4dERvY3VtZW50UGFyc2VyKHRoaXMpOwogfQpAQCAtMTAwLDEwNyArMTAwLDkx
IEBAIHZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkVmlld1NvdXJjZVRleHQoY29uc3Qg
U3RyaW5nJiB0ZXh0KQogICAgIGFkZFRleHQodGV4dCwgIiIpOwogfQogCi12b2lkIEhUTUxWaWV3
U291cmNlRG9jdW1lbnQ6OmFkZFZpZXdTb3VyY2VUb2tlbihUb2tlbiogdG9rZW4pCit2b2lkIEhU
TUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgSFRN
TFRva2VuJiB0b2tlbikKIHsKICAgICBpZiAoIW1fY3VycmVudCkKICAgICAgICAgY3JlYXRlQ29u
dGFpbmluZ1RhYmxlKCk7CiAKLSAgICBpZiAodG9rZW4tPnRhZ05hbWUgPT0gdGV4dEF0b20pCi0g
ICAgICAgIGFkZFRleHQodG9rZW4tPnRleHQuZ2V0KCksICIiKTsKLSAgICBlbHNlIGlmICh0b2tl
bi0+dGFnTmFtZSA9PSBjb21tZW50QXRvbSkgewotICAgICAgICBpZiAodG9rZW4tPmJlZ2luVGFn
KSB7Ci0gICAgICAgICAgICBtX2N1cnJlbnQgPSBhZGRTcGFuV2l0aENsYXNzTmFtZSgid2Via2l0
LWh0bWwtY29tbWVudCIpOwotICAgICAgICAgICAgYWRkVGV4dChTdHJpbmcoIjwhLS0iKSArIHRv
a2VuLT50ZXh0LmdldCgpICsgIi0tPiIsICJ3ZWJraXQtaHRtbC1jb21tZW50Iik7Ci0gICAgICAg
IH0KLSAgICB9IGVsc2UgewotICAgICAgICAvLyBIYW5kbGUgdGhlIHRhZy4KLSAgICAgICAgU3Ry
aW5nIGNsYXNzTmFtZVN0ciA9ICJ3ZWJraXQtaHRtbC10YWciOwotICAgICAgICBtX2N1cnJlbnQg
PSBhZGRTcGFuV2l0aENsYXNzTmFtZShjbGFzc05hbWVTdHIpOwotCi0gICAgICAgIFN0cmluZyB0
ZXh0ID0gIjwiOwotICAgICAgICBpZiAoIXRva2VuLT5iZWdpblRhZykKLSAgICAgICAgICAgIHRl
eHQgKz0gIi8iOwotICAgICAgICB0ZXh0ICs9IHRva2VuLT50YWdOYW1lOwotICAgICAgICBWZWN0
b3I8VUNoYXI+KiBndWlkZSA9IHRva2VuLT5tX3NvdXJjZUluZm8uZ2V0KCk7Ci0gICAgICAgIGlm
ICghZ3VpZGUgfHwgIWd1aWRlLT5zaXplKCkpCi0gICAgICAgICAgICB0ZXh0ICs9ICI+IjsKLQot
ICAgICAgICBhZGRUZXh0KHRleHQsIGNsYXNzTmFtZVN0cik7Ci0KLSAgICAgICAgLy8gV2FsayBv
dXIgZ3VpZGUgc3RyaW5nIHRoYXQgdGVsbHMgdXMgd2hlcmUgYXR0cmlidXRlIG5hbWVzL3ZhbHVl
cyBzaG91bGQgZ28uCi0gICAgICAgIGlmIChndWlkZSAmJiBndWlkZS0+c2l6ZSgpKSB7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBzaXplID0gZ3VpZGUtPnNpemUoKTsKLSAgICAgICAgICAgIHVuc2ln
bmVkIGJlZ2luID0gMDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJBdHRyID0gMDsKLSAgICAg
ICAgICAgIFJlZlB0cjxBdHRyaWJ1dGU+IGF0dHIgPSAwOwotICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChndWlkZS0+
YXQoaSkgPT0gJ2EnIHx8IGd1aWRlLT5hdChpKSA9PSAneCcgfHwgZ3VpZGUtPmF0KGkpID09ICd2
JykgewotICAgICAgICAgICAgICAgICAgICAvLyBBZGQgaW4gdGhlIHN0cmluZy4KLSAgICAgICAg
ICAgICAgICAgICAgYWRkVGV4dChTdHJpbmcoc3RhdGljX2Nhc3Q8VUNoYXIqPihndWlkZS0+ZGF0
YSgpKSArIGJlZ2luLCBpIC0gYmVnaW4pLCBjbGFzc05hbWVTdHIpOwotCi0gICAgICAgICAgICAg
ICAgICAgIGJlZ2luID0gaSArIDE7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGd1aWRlLT5h
dChpKSA9PSAnYScpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbi0+YXR0cnMg
JiYgY3VyckF0dHIgPCB0b2tlbi0+YXR0cnMtPmxlbmd0aCgpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGF0dHIgPSB0b2tlbi0+YXR0cnMtPmF0dHJpYnV0ZUl0ZW0oY3VyckF0dHIrKyk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXR0ciA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
aWYgKGF0dHIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChndWlkZS0+YXQoaSkgPT0g
J2EnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSBhdHRyLT5u
YW1lKCkudG9TdHJpbmcoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dCA9IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKCJ3ZWJraXQtaHRtbC1hdHRyaWJ1dGUtbmFtZSIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRleHQobmFtZSwgIndlYmtpdC1odG1sLWF0
dHJpYnV0ZS1uYW1lIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVu
dCAhPSBtX3Rib2R5KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnQg
PSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9jdXJyZW50LT5wYXJlbnQoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpLnN0cmluZygpOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gQ29tcGFyZSBpZ25vcmluZyBjYXNlIHNpbmNlIExlZ2FjeUhUTUxE
b2N1bWVudFBhcnNlciBkb2Vzbid0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG93
ZXIgbmFtZXMgd2hlbiBwYXNzaW5nIGluIHRva2VucyB0bwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEhUTUxWaWV3U291cmNlRG9jdW1lbnQuCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHRva2VuLT50YWdOYW1lLCAiYmFzZSIpICYmIGVx
dWFsSWdub3JpbmdDYXNlKGF0dHItPm5hbWUoKS5sb2NhbE5hbWUoKSwgImhyZWYiKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYXRjaCB0aGUgaHJlZiBhdHRyaWJ1dGUg
aW4gdGhlIGJhc2UgZWxlbWVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
SXQgd2lsbCBiZSB1c2VkIGZvciByZW5kZXJpbmcgYW5jaG9ycyBjcmVhdGVkCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IGFkZExpbmsoKSBiZWxvdy4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0QmFzZUVsZW1lbnRVUkwoS1VSTCh1cmwoKSwgdmFsdWUp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogWE1MIGNvdWxkIHVzZSBuYW1lc3BhY2UgcHJlZml4ZXMgYW5kIGNv
bmZ1c2UgdXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGF0dHItPm5hbWUoKS5sb2NhbE5hbWUoKSwgInNyYyIpIHx8IGVxdWFsSWdub3JpbmdDYXNl
KGF0dHItPm5hbWUoKS5sb2NhbE5hbWUoKSwgImhyZWYiKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9jdXJyZW50ID0gYWRkTGluayh2YWx1ZSwgZXF1YWxJZ25vcmluZ0Nhc2Uo
dG9rZW4tPnRhZ05hbWUsICJhIikpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gYWRkU3BhbldpdGhD
bGFzc05hbWUoIndlYmtpdC1odG1sLWF0dHJpYnV0ZS12YWx1ZSIpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZFRleHQodmFsdWUsICJ3ZWJraXQtaHRtbC1hdHRyaWJ1dGUtdmFsdWUi
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50ICE9IG1fdGJvZHkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IHN0YXRpY19jYXN0
PEVsZW1lbnQqPihtX2N1cnJlbnQtPnBhcmVudCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgLy8gQWRkIGluIGFueSBzdHJpbmcgdGhhdCBtaWdodCBiZSBsZWZ0
LgotICAgICAgICAgICAgaWYgKGJlZ2luIDwgc2l6ZSkKLSAgICAgICAgICAgICAgICBhZGRUZXh0
KFN0cmluZyhzdGF0aWNfY2FzdDxVQ2hhcio+KGd1aWRlLT5kYXRhKCkpICsgYmVnaW4sIHNpemUg
LSBiZWdpbiksIGNsYXNzTmFtZVN0cik7Ci0KLSAgICAgICAgICAgIC8vIEFkZCBpbiB0aGUgZW5k
IHRhZy4KLSAgICAgICAgICAgIGFkZFRleHQoIj4iLCBjbGFzc05hbWVTdHIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgbV9jdXJyZW50ID0gbV90ZDsKKyAgICBzd2l0Y2ggKHRva2VuLnR5cGUoKSkg
eworICAgIGNhc2UgSFRNTFRva2VuOjpVbmluaXRpYWxpemVkOgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6
CisgICAgICAgIHByb2Nlc3NEb2N0eXBlVG9rZW4oc291cmNlLCB0b2tlbik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSFRNTFRva2VuOjpFbmRPZkZpbGU6CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKKyAgICBjYXNlIEhUTUxUb2tlbjo6RW5kVGFnOgor
ICAgICAgICBwcm9jZXNzVGFnVG9rZW4oc291cmNlLCB0b2tlbik7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgorICAgICAgICBwcm9jZXNzQ29tbWVudFRva2Vu
KHNvdXJjZSwgdG9rZW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhUTUxUb2tlbjo6Q2hh
cmFjdGVyOgorICAgICAgICBwcm9jZXNzQ2hhcmFjdGVyVG9rZW4oc291cmNlLCB0b2tlbik7Cisg
ICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50Ojph
ZGRWaWV3U291cmNlRG9jdHlwZVRva2VuKERvY3R5cGVUb2tlbiogZG9jdHlwZVRva2VuKQordm9p
ZCBIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzRG9jdHlwZVRva2VuKGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBIVE1MVG9rZW4mKQogewogICAgIGlmICghbV9jdXJyZW50KQogICAgICAgICBj
cmVhdGVDb250YWluaW5nVGFibGUoKTsKICAgICBtX2N1cnJlbnQgPSBhZGRTcGFuV2l0aENsYXNz
TmFtZSgid2Via2l0LWh0bWwtZG9jdHlwZSIpOwotICAgIFN0cmluZyB0ZXh0ID0gIjwiOwotICAg
IHRleHQgKz0gU3RyaW5nOjphZG9wdChkb2N0eXBlVG9rZW4tPm1fc291cmNlKTsKLSAgICB0ZXh0
ICs9ICI+IjsKLSAgICBhZGRUZXh0KHRleHQsICJ3ZWJraXQtaHRtbC1kb2N0eXBlIik7CisgICAg
YWRkVGV4dChzb3VyY2UsICJ3ZWJraXQtaHRtbC1kb2N0eXBlIik7CisgICAgbV9jdXJyZW50ID0g
bV90ZDsKK30KKwordm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzVGFnVG9rZW4o
Y29uc3QgU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCit7CisgICAgU3RyaW5nIGNs
YXNzTmFtZVN0ciA9ICJ3ZWJraXQtaHRtbC10YWciOworICAgIG1fY3VycmVudCA9IGFkZFNwYW5X
aXRoQ2xhc3NOYW1lKGNsYXNzTmFtZVN0cik7CisKKyAgICBBdG9taWNTdHJpbmcgdGFnTmFtZSh0
b2tlbi5uYW1lKCkuZGF0YSgpLCB0b2tlbi5uYW1lKCkuc2l6ZSgpKTsKKworICAgIHVuc2lnbmVk
IGluZGV4ID0gMDsKKyAgICBIVE1MVG9rZW46OkF0dHJpYnV0ZUxpc3Q6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPSB0b2tlbi5hdHRyaWJ1dGVzKCkuYmVnaW4oKTsKKyAgICB3aGlsZSAoaW5kZXggPCBz
b3VyY2UubGVuZ3RoKCkpIHsKKyAgICAgICAgaWYgKGl0ZXIgPT0gdG9rZW4uYXR0cmlidXRlcygp
LmVuZCgpKSB7CisgICAgICAgICAgICAvLyBXZSB3YW50IHRvIHNob3cgdGhlIHJlbWFpbmluZyBj
aGFyYWN0ZXJzIGluIHRoZSB0b2tlbi4KKyAgICAgICAgICAgIGluZGV4ID0gYWRkUmFuZ2Uoc291
cmNlLCBpbmRleCwgc291cmNlLmxlbmd0aCgpLCAiIik7CisgICAgICAgICAgICBBU1NFUlQoaW5k
ZXggPT0gc291cmNlLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgQXRvbWljU3RyaW5nIG5hbWUoaXRlci0+bV9uYW1lLmRhdGEoKSwgaXRlci0+bV9u
YW1lLnNpemUoKSk7CisgICAgICAgIFN0cmluZyB2YWx1ZShpdGVyLT5tX3ZhbHVlLmRhdGEoKSwg
aXRlci0+bV92YWx1ZS5zaXplKCkpOyAKKworICAgICAgICBpbmRleCA9IGFkZFJhbmdlKHNvdXJj
ZSwgaW5kZXgsIGl0ZXItPm1fbmFtZVJhbmdlLm1fc3RhcnQgLSB0b2tlbi5zdGFydEluZGV4KCks
ICIiKTsKKyAgICAgICAgaW5kZXggPSBhZGRSYW5nZShzb3VyY2UsIGluZGV4LCBpdGVyLT5tX25h
bWVSYW5nZS5tX2VuZCAtIHRva2VuLnN0YXJ0SW5kZXgoKSwgIndlYmtpdC1odG1sLWF0dHJpYnV0
ZS1uYW1lIik7CisKKyAgICAgICAgaWYgKHRhZ05hbWUgPT0gYmFzZVRhZyAmJiBuYW1lID09IGhy
ZWZBdHRyKSB7CisgICAgICAgICAgICAvLyBDYXRjaCB0aGUgaHJlZiBhdHRyaWJ1dGUgaW4gdGhl
IGJhc2UgZWxlbWVudC4gSXQgd2lsbCBiZSB1c2VkCisgICAgICAgICAgICAvLyBmb3IgcmVuZGVy
aW5nIGFuY2hvcnMgY3JlYXRlZCBieSBhZGRMaW5rKCkgYmVsb3cuCisgICAgICAgICAgICBzZXRC
YXNlRWxlbWVudFVSTChLVVJMKHVybCgpLCB2YWx1ZSkpOworICAgICAgICB9CisKKyAgICAgICAg
aW5kZXggPSBhZGRSYW5nZShzb3VyY2UsIGluZGV4LCBpdGVyLT5tX3ZhbHVlUmFuZ2UubV9zdGFy
dCAtIHRva2VuLnN0YXJ0SW5kZXgoKSwgIiIpOworCisgICAgICAgIGJvb2wgaXNMaW5rID0gbmFt
ZSA9PSBzcmNBdHRyIHx8IG5hbWUgPT0gaHJlZkF0dHI7CisgICAgICAgIGluZGV4ID0gYWRkUmFu
Z2Uoc291cmNlLCBpbmRleCwgaXRlci0+bV92YWx1ZVJhbmdlLm1fZW5kIC0gdG9rZW4uc3RhcnRJ
bmRleCgpLCAid2Via2l0LWh0bWwtYXR0cmlidXRlLXZhbHVlIiwgaXNMaW5rLCB0YWdOYW1lID09
IGFUYWcpOworCisgICAgICAgICsraXRlcjsKKyAgICB9CisgICAgbV9jdXJyZW50ID0gbV90ZDsK
K30KKwordm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzQ29tbWVudFRva2VuKGNv
bnN0IFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mKQoreworICAgIG1fY3VycmVudCA9IGFkZFNw
YW5XaXRoQ2xhc3NOYW1lKCJ3ZWJraXQtaHRtbC1jb21tZW50Iik7CisgICAgYWRkVGV4dChzb3Vy
Y2UsICJ3ZWJraXQtaHRtbC1jb21tZW50Iik7CisgICAgbV9jdXJyZW50ID0gbV90ZDsKK30KKwor
dm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzQ2hhcmFjdGVyVG9rZW4oY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYpCit7CisgICAgYWRkVGV4dChzb3VyY2UsICIiKTsK
IH0KIAogUGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRTcGFu
V2l0aENsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSkKQEAgLTI4Nyw2ICsyNzEsMjUg
QEAgdm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRUZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgU3RyaW5nJiBjbGFzc05hbWUKICAgICAgICAgbV9jdXJyZW50ID0gbV90Ym9keTsK
IH0KIAoraW50IEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFJhbmdlKGNvbnN0IFN0cmluZyYg
c291cmNlLCBpbnQgc3RhcnQsIGludCBlbmQsIGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lLCBib29s
IGlzTGluaywgYm9vbCBpc0FuY2hvcikKK3sKKyAgICBBU1NFUlQoc3RhcnQgPD0gZW5kKTsKKyAg
ICBpZiAoc3RhcnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gc3RhcnQ7CisKKyAgICBTdHJpbmcg
dGV4dCA9IHNvdXJjZS5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKyAgICBpZiAoIWNs
YXNzTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGlzTGluaykKKyAgICAgICAgICAgIG1f
Y3VycmVudCA9IGFkZExpbmsodGV4dCwgaXNBbmNob3IpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBtX2N1cnJlbnQgPSBhZGRTcGFuV2l0aENsYXNzTmFtZShjbGFzc05hbWUpOworICAgIH0K
KyAgICBhZGRUZXh0KHRleHQsIGNsYXNzTmFtZSk7CisgICAgaWYgKCFjbGFzc05hbWUuaXNFbXB0
eSgpICYmIG1fY3VycmVudCAhPSBtX3Rib2R5KQorICAgICAgICBtX2N1cnJlbnQgPSBzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obV9jdXJyZW50LT5wYXJlbnQoKSk7CisgICAgcmV0dXJuIGVuZDsKK30K
KwogUGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRMaW5rKGNv
bnN0IFN0cmluZyYgdXJsLCBib29sIGlzQW5jaG9yKQogewogICAgIGlmIChtX2N1cnJlbnQgPT0g
bV90Ym9keSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50
LmggYi9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCmluZGV4IGNmNmNmYzFk
ZWQ0ZTBmYzVmZGI4NzllODA0MTdhNzI5OGMyNWRiOTguLjg4MDU4NDg0NTFkM2FkMGFkYjNiNjE3
OWFjZTJmNzM5MzQ1NTkzNTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJj
ZURvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaApA
QCAtMjksMTEgKzI5LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEb2N0eXBl
VG9rZW47CiBjbGFzcyBIVE1MVGFibGVDZWxsRWxlbWVudDsKIGNsYXNzIEhUTUxUYWJsZVNlY3Rp
b25FbGVtZW50OwotCi1zdHJ1Y3QgVG9rZW47CitjbGFzcyBIVE1MVG9rZW47CiAKIGNsYXNzIEhU
TUxWaWV3U291cmNlRG9jdW1lbnQgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKQEAg
LTQyLDIwICs0MCwyNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TFZpZXdTb3VyY2VEb2N1bWVudChmcmFtZSwgdXJsLCBtaW1lVHlwZSkpOwogICAgIH0KIAotICAg
IHZvaWQgYWRkVmlld1NvdXJjZVRva2VuKFRva2VuKik7IC8vIFVzZWQgYnkgdGhlIExlZ2FjeUhU
TUxEb2N1bWVudFBhcnNlci4KKyAgICB2b2lkIGFkZFNvdXJjZShjb25zdCBTdHJpbmcmLCBIVE1M
VG9rZW4mKTsKKworICAgIHZvaWQgYWRkVmlld1NvdXJjZVRva2VuKEhUTUxUb2tlbiYpOyAvLyBV
c2VkIGJ5IHRoZSBIVE1MRG9jdW1lbnRQYXJzZXIuCiAgICAgdm9pZCBhZGRWaWV3U291cmNlVGV4
dChjb25zdCBTdHJpbmcmKTsgLy8gVXNlZCBieSB0aGUgVGV4dERvY3VtZW50UGFyc2VyLgotICAg
IHZvaWQgYWRkVmlld1NvdXJjZURvY3R5cGVUb2tlbihEb2N0eXBlVG9rZW4qKTsKIAogcHJpdmF0
ZToKICAgICBIVE1MVmlld1NvdXJjZURvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpOwogCi0gICAgLy8gUmV0dXJucyBMZWdhY3lIVE1MRG9jdW1lbnRQ
YXJzZXIgb3IgVGV4dERvY3VtZW50UGFyc2VyIGJhc2VkIG9uIG1fdHlwZS4KKyAgICAvLyBSZXR1
cm5zIEhUTUxWaWV3U291cmNlUGFyc2VyIG9yIFRleHREb2N1bWVudFBhcnNlciBiYXNlZCBvbiBt
X3R5cGUuCiAgICAgdmlydHVhbCBEb2N1bWVudFBhcnNlciogY3JlYXRlUGFyc2VyKCk7CiAKKyAg
ICB2b2lkIHByb2Nlc3NEb2N0eXBlVG9rZW4oY29uc3QgU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tl
biYpOworICAgIHZvaWQgcHJvY2Vzc1RhZ1Rva2VuKGNvbnN0IFN0cmluZyYgc291cmNlLCBIVE1M
VG9rZW4mKTsKKyAgICB2b2lkIHByb2Nlc3NDb21tZW50VG9rZW4oY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIEhUTUxUb2tlbiYpOworICAgIHZvaWQgcHJvY2Vzc0NoYXJhY3RlclRva2VuKGNvbnN0IFN0
cmluZyYgc291cmNlLCBIVE1MVG9rZW4mKTsKKwogICAgIHZvaWQgY3JlYXRlQ29udGFpbmluZ1Rh
YmxlKCk7CiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBhZGRTcGFuV2l0aENsYXNzTmFtZShjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIGFkZExpbmUoY29uc3QgU3RyaW5nJiBjbGFzc05hbWUpOwog
ICAgIHZvaWQgYWRkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgY2xhc3NO
YW1lKTsKKyAgICBpbnQgYWRkUmFuZ2UoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGludCBzdGFydCwg
aW50IGVuZCwgY29uc3QgU3RyaW5nJiBjbGFzc05hbWUsIGJvb2wgaXNMaW5rID0gZmFsc2UsIGJv
b2wgaXNBbmNob3IgPSBmYWxzZSk7CiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBhZGRMaW5rKGNv
bnN0IFN0cmluZyYgdXJsLCBib29sIGlzQW5jaG9yKTsKIAogICAgIFN0cmluZyBtX3R5cGU7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwIGIvV2ViQ29y
ZS9odG1sL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGE0YzIzNzBkNjMz
ZDU4MTNmNWU2OTMzNDUxNjEzOGYzMjExMzkxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9o
dG1sL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkhUTUxWaWV3U291cmNlUGFyc2VyLmgiCisKKyNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKKyNpbmNsdWRlICJIVE1MVHJlZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJIVE1MVmlld1Nv
dXJjZURvY3VtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSFRNTFZpZXdTb3VyY2VQ
YXJzZXI6On5IVE1MVmlld1NvdXJjZVBhcnNlcigpCit7Cit9CisKK3ZvaWQgSFRNTFZpZXdTb3Vy
Y2VQYXJzZXI6Omluc2VydChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKQoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEhUTUxWaWV3U291cmNlUGFyc2VyOjpwdW1wVG9rZW5p
emVyKCkKK3sKKyAgICB3aGlsZSAobV90b2tlbml6ZXIubmV4dFRva2VuKG1faW5wdXQuY3VycmVu
dCgpLCBtX3Rva2VuKSkgeworICAgICAgICBtX3Rva2VuLmVuZChtX2lucHV0LmN1cnJlbnQoKS5u
dW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+YWRkU291
cmNlKHNvdXJjZUZvclRva2VuKCksIG1fdG9rZW4pOworICAgICAgICB1cGRhdGVUb2tlbml6ZXJT
dGF0ZSgpOworICAgICAgICBtX3Rva2VuLmNsZWFyKG1faW5wdXQuY3VycmVudCgpLm51bWJlck9m
Q2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAgIH0KK30KKwordm9pZCBIVE1MVmlld1NvdXJjZVBh
cnNlcjo6YXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgaW5wdXQpCit7CisgICAgbV9pbnB1
dC5hcHBlbmRUb0VuZChpbnB1dCk7CisgICAgbV9zb3VyY2UuYXBwZW5kKGlucHV0KTsKKyAgICBw
dW1wVG9rZW5pemVyKCk7Cit9CisKK1N0cmluZyBIVE1MVmlld1NvdXJjZVBhcnNlcjo6c291cmNl
Rm9yVG9rZW4oKQoreworICAgIGlmIChtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZE9m
RmlsZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgQVNTRVJUKG1fc291cmNlLm51
bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkgPT0gbV90b2tlbi5zdGFydEluZGV4KCkpOworICAg
IFVDaGFyKiBkYXRhID0gMDsKKyAgICBpbnQgbGVuZ3RoID0gbV90b2tlbi5lbmRJbmRleCgpIC0g
bV90b2tlbi5zdGFydEluZGV4KCk7CisgICAgU3RyaW5nIHNvdXJjZSA9IFN0cmluZzo6Y3JlYXRl
VW5pbml0aWFsaXplZChsZW5ndGgsIGRhdGEpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgZGF0YVtpXSA9ICptX3NvdXJjZTsKKyAgICAgICAgbV9zb3Vy
Y2UuYWR2YW5jZSgpOworICAgIH0KKyAgICByZXR1cm4gc291cmNlOworfQorCit2b2lkIEhUTUxW
aWV3U291cmNlUGFyc2VyOjp1cGRhdGVUb2tlbml6ZXJTdGF0ZSgpCit7CisgICAgLy8gRklYTUU6
IFRoZSB0b2tlbml6ZXIgc2hvdWxkIGRvIHRoaXMgd29yayBmb3IgdXMuCisgICAgaWYgKG1fdG9r
ZW4udHlwZSgpICE9IEhUTUxUb2tlbjo6U3RhcnRUYWcpCisgICAgICAgIHJldHVybjsKKworICAg
IEF0b21pY1N0cmluZyB0YWdOYW1lKG1fdG9rZW4ubmFtZSgpLmRhdGEoKSwgbV90b2tlbi5uYW1l
KCkuc2l6ZSgpKTsKKyAgICBtX3Rva2VuaXplci5zZXRTdGF0ZShIVE1MVHJlZUJ1aWxkZXI6OmFk
anVzdGVkTGV4ZXJTdGF0ZShtX3Rva2VuaXplci5zdGF0ZSgpLCB0YWdOYW1lLCBtX2RvY3VtZW50
LT5mcmFtZSgpKSk7CisgICAgaWYgKHRhZ05hbWUgPT0gSFRNTE5hbWVzOjpzY3JpcHRUYWcpIHsK
KyAgICAgICAgLy8gVGhlIHRyZWUgYnVpbGRlciBoYW5kbGVzIHNjcmlwdFRhZyBzZXBhcmF0ZWx5
IGZyb20gdGhlIG90aGVyIHRva2VuaXplcgorICAgICAgICAvLyBzdGF0ZSBhZGp1c3RtZW50cywg
c28gd2UgbmVlZCB0byBoYW5kbGUgaXQgc2VwYXJhdGVseSB0b28uCisgICAgICAgIEFTU0VSVCht
X3Rva2VuaXplci5zdGF0ZSgpID09IEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAg
IG1fdG9rZW5pemVyLnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlNjcmlwdERhdGFTdGF0ZSk7Cisg
ICAgfQorfQorCit2b2lkIEhUTUxWaWV3U291cmNlUGFyc2VyOjpmaW5pc2goKQoreworICAgIGlm
ICghbV9pbnB1dC5oYXZlU2VlbkVuZE9mRmlsZSgpKQorICAgICAgICBtX2lucHV0Lm1hcmtFbmRP
ZkZpbGUoKTsKKyAgICBwdW1wVG9rZW5pemVyKCk7CisgICAgZG9jdW1lbnQoKS0+ZmluaXNoZWRQ
YXJzaW5nKCk7Cit9CisKK2Jvb2wgSFRNTFZpZXdTb3VyY2VQYXJzZXI6OmZpbmlzaFdhc0NhbGxl
ZCgpCit7CisgICAgcmV0dXJuIG1faW5wdXQuaGF2ZVNlZW5FbmRPZkZpbGUoKTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlUGFyc2VyLmggYi9XZWJDb3Jl
L2h0bWwvSFRNTFZpZXdTb3VyY2VQYXJzZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNTcxMzAxY2UwZGU5OGUx
Njg4YWJlYjg0MTU5NDU4YWMzZWU0OGUyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxWaWV3U291cmNlUGFyc2VyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIVE1MVmlld1NvdXJjZVBh
cnNlcl9oCisjZGVmaW5lIEhUTUxWaWV3U291cmNlUGFyc2VyX2gKKworI2luY2x1ZGUgIkRlY29k
ZWREYXRhRG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRTdHJlYW0uaCIKKyNp
bmNsdWRlICJIVE1MVG9rZW4uaCIKKyNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCisjaW5jbHVk
ZSAiSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTFRva2VuaXplcjsKK2NsYXNzIEhU
TUxTY3JpcHRSdW5uZXI7CitjbGFzcyBIVE1MVHJlZUJ1aWxkZXI7CitjbGFzcyBIVE1MUHJlbG9h
ZFNjYW5uZXI7CitjbGFzcyBMZWdhY3lIVE1MVHJlZUJ1aWxkZXI7CitjbGFzcyBTY3JpcHRDb250
cm9sbGVyOworY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKKworY2xhc3MgSFRNTFZpZXdTb3VyY2VQ
YXJzZXIgOiAgcHVibGljIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIgeworcHVibGljOgorICAg
IC8vIEZJWE1FOiBNYWtlIHByaXZhdGUgd2l0aCBhIGNyZWF0ZSBtZXRob2QuCisgICAgSFRNTFZp
ZXdTb3VyY2VQYXJzZXIoSFRNTFZpZXdTb3VyY2VEb2N1bWVudCogZG9jdW1lbnQpCisgICAgICAg
IDogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB+SFRNTFZpZXdTb3VyY2VQYXJzZXIoKTsKKworcHJpdmF0ZToKKyAgICAvLyBE
b2N1bWVudFBhcnNlcgorICAgIHZpcnR1YWwgdm9pZCBpbnNlcnQoY29uc3QgU2VnbWVudGVkU3Ry
aW5nJik7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCk7CisgICAgdmlydHVhbCBib29sIGZpbmlzaFdhc0Nh
bGxlZCgpOworCisgICAgSFRNTFZpZXdTb3VyY2VEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MVmlld1NvdXJjZURvY3VtZW50Kj4obV9kb2N1bWVudCk7
IH0KKworICAgIHZvaWQgcHVtcFRva2VuaXplcigpOworICAgIFN0cmluZyBzb3VyY2VGb3JUb2tl
bigpOworICAgIHZvaWQgdXBkYXRlVG9rZW5pemVyU3RhdGUoKTsKKworICAgIEhUTUxJbnB1dFN0
cmVhbSBtX2lucHV0OworICAgIFNlZ21lbnRlZFN0cmluZyBtX3NvdXJjZTsKKyAgICBIVE1MVG9r
ZW4gbV90b2tlbjsKKyAgICBIVE1MVG9rZW5pemVyIG1fdG9rZW5pemVyOworfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwIGIvV2ViQ29yZS9odG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggOTgw
ZDZlZDhlYjE3NTIwNmM4ZmMyNDQ2N2E5YmJlMGM5ODRhNzk3ZC4uMGQ0ZDYxNTdmMDQ4YjcxZTY3
YThiNTgxMjczZTEwYzJlNWI0OWM2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0xlZ2FjeUhU
TUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0xlZ2FjeUhUTUxEb2N1bWVu
dFBhcnNlci5jcHAKQEAgLTE5MjYsMTEgKzE5MjYsOCBAQCBQYXNzUmVmUHRyPE5vZGU+IExlZ2Fj
eUhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1Rva2VuKCkKICAgICBpZiAoIW1fcGFyc2VyU3Rv
cHBlZCkgewogICAgICAgICBpZiAoTmFtZWROb2RlTWFwKiBtYXAgPSBtX2N1cnJlbnRUb2tlbi5h
dHRycy5nZXQoKSkKICAgICAgICAgICAgIG1hcC0+c2hyaW5rVG9MZW5ndGgoKTsKLSAgICAgICAg
aWYgKGluVmlld1NvdXJjZU1vZGUoKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxWaWV3
U291cmNlRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+YWRkVmlld1NvdXJjZVRva2VuKCZtX2N1cnJl
bnRUb2tlbik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIC8vIHBhc3MgdGhlIHRva2VuIG92
ZXIgdG8gdGhlIHBhcnNlciwgdGhlIHBhcnNlciBET0VTIE5PVCBkZWxldGUgdGhlIHRva2VuCi0g
ICAgICAgICAgICBuID0gbV90cmVlQnVpbGRlci0+cGFyc2VUb2tlbigmbV9jdXJyZW50VG9rZW4p
OworICAgICAgICAvLyBwYXNzIHRoZSB0b2tlbiBvdmVyIHRvIHRoZSBwYXJzZXIsIHRoZSBwYXJz
ZXIgRE9FUyBOT1QgZGVsZXRlIHRoZSB0b2tlbgorICAgICAgICBuID0gbV90cmVlQnVpbGRlci0+
cGFyc2VUb2tlbigmbV9jdXJyZW50VG9rZW4pOwogICAgIH0KICAgICBtX2N1cnJlbnRUb2tlbi5y
ZXNldCgpOwogCkBAIC0xOTM5LDEwICsxOTM2LDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBMZWdhY3lI
VE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbigpCiAKIHZvaWQgTGVnYWN5SFRNTERvY3Vt
ZW50UGFyc2VyOjpwcm9jZXNzRG9jdHlwZVRva2VuKCkKIHsKLSAgICBpZiAoaW5WaWV3U291cmNl
TW9kZSgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVmlld1NvdXJjZURvY3VtZW50Kj4oZG9j
dW1lbnQoKSktPmFkZFZpZXdTb3VyY2VEb2N0eXBlVG9rZW4oJm1fZG9jdHlwZVRva2VuKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fdHJlZUJ1aWxkZXItPnBhcnNlRG9jdHlwZVRva2VuKCZtX2RvY3R5
cGVUb2tlbik7CisgICAgbV90cmVlQnVpbGRlci0+cGFyc2VEb2N0eXBlVG9rZW4oJm1fZG9jdHlw
ZVRva2VuKTsKIH0KIAogTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjp+TGVnYWN5SFRNTERvY3Vt
ZW50UGFyc2VyKCkK
</data>
<flag name="review"
          id="52533"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>