<?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>81413</bug_id>
          
          <creation_ts>2012-03-16 14:53:46 -0700</creation_ts>
          <short_desc>Rename Node::getRect/getPixelSnappedRect and remove ContainerNode::getRect</short_desc>
          <delta_ts>2012-09-12 09:04:29 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>81016</dependson>
    
    <dependson>96226</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hyatt</cc>
    
    <cc>kling</cc>
    
    <cc>mifenton</cc>
    
    <cc>mitz</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>580990</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-03-16 14:53:46 -0700</bug_when>
    <thetext>Node::getRect isn&apos;t very descriptive and has the word get in the name which is generally disroucaged in WebKit. Come up with a more descriptive name and rename it.

Perhaps boundingBox or absoluteRect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582406</commentid>
    <comment_count>1</comment_count>
      <attachid>132704</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-03-19 16:20:41 -0700</bug_when>
    <thetext>Created attachment 132704
Patch for landing

Added math.h include to FractionalLayoutUnit.h, should make the gtk bot happy. If it does I&apos;ll set cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582409</commentid>
    <comment_count>2</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-03-19 16:21:04 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=132704) [details]
&gt; Patch for landing
&gt; 
&gt; Added math.h include to FractionalLayoutUnit.h, should make the gtk bot happy. If it does I&apos;ll set cq+.

Wrong bug, please ignore patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701055</commentid>
    <comment_count>3</comment_count>
      <attachid>159753</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-08-21 13:24:58 -0700</bug_when>
    <thetext>Created attachment 159753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701108</commentid>
    <comment_count>4</comment_count>
      <attachid>159765</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-08-21 14:05:18 -0700</bug_when>
    <thetext>Created attachment 159765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701131</commentid>
    <comment_count>5</comment_count>
      <attachid>159765</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-08-21 14:33:47 -0700</bug_when>
    <thetext>Comment on attachment 159765
Patch

Why BoxRect in these names instead of just Box?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701140</commentid>
    <comment_count>6</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-08-21 14:39:21 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 159765 [details])
&gt; Why BoxRect in these names instead of just Box?

Trying to be consistent with existing methods that return a bounding box. Most methods we have that return a bounding box are named BoxRect, such as
contentBoxRect, clientBoxRect, borderBoxRectInRegion and absoluteBoundingBoxRect.

I&apos;d be more than happy to rename this to just Box though if you think that is a better name. I certainly prefer it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701142</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-08-21 14:44:34 -0700</bug_when>
    <thetext>I think the relevant question is whether there is more than one type that could be used to return a box. For example, maybe there’s a quad and a rect, and the rect version is lossy. If there is not more than one type, then we should s/BoxRect/Box/g. I&apos;d want to ask Hyatt, I guess, in case he knows something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701145</commentid>
    <comment_count>8</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-08-21 14:47:04 -0700</bug_when>
    <thetext>That makes sense. As these are the only versions in Node I&apos;ll rename them. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701166</commentid>
    <comment_count>9</comment_count>
      <attachid>159775</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-08-21 15:09:11 -0700</bug_when>
    <thetext>Created attachment 159775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701293</commentid>
    <comment_count>10</comment_count>
      <attachid>159775</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-21 16:43:31 -0700</bug_when>
    <thetext>Comment on attachment 159775
Patch

Attachment 159775 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13559061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701393</commentid>
    <comment_count>11</comment_count>
      <attachid>159821</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-08-21 17:51:59 -0700</bug_when>
    <thetext>Created attachment 159821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711164</commentid>
    <comment_count>12</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-09-04 09:06:01 -0700</bug_when>
    <thetext>Darin/Hyatt any further comments on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715060</commentid>
    <comment_count>13</comment_count>
      <attachid>159821</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-09-07 15:40:33 -0700</bug_when>
    <thetext>Comment on attachment 159821
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715085</commentid>
    <comment_count>14</comment_count>
      <attachid>159821</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 15:59:32 -0700</bug_when>
    <thetext>Comment on attachment 159821
Patch

Rejecting attachment 159821 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ed at 1608 (offset 3 lines).
patching file Source/WebKit/qt/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKit/qt/Api/qwebelement.cpp
Hunk #1 succeeded at 546 (offset 1 line).
Hunk #2 succeeded at 1454 (offset 1 line).
patching file Source/WebKit/qt/Api/qwebpage.cpp
Hunk #1 succeeded at 1577 (offset -8 lines).

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;David Hyatt&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/13774925</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715197</commentid>
    <comment_count>15</comment_count>
      <attachid>162926</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-09-07 18:22:49 -0700</bug_when>
    <thetext>Created attachment 162926
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715637</commentid>
    <comment_count>16</comment_count>
      <attachid>162926</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-09 17:29:00 -0700</bug_when>
    <thetext>Comment on attachment 162926
Patch for landing

Clearing flags on attachment: 162926

Committed r128006: &lt;http://trac.webkit.org/changeset/128006&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715638</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-09 17:29:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715647</commentid>
    <comment_count>18</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-09 18:00:50 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; All reviewed patches have been landed.  Closing bug.

I suspect this broke our MountainLion build:

http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20%28Build%29/builds/1003/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715649</commentid>
    <comment_count>19</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-09-09 18:02:11 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 162926 [details])
&gt; Clearing flags on attachment: 162926
&gt; 
&gt; Committed r128006: &lt;http://trac.webkit.org/changeset/128006&gt;

This broke the build because SVGElement has its own non-virtual boundingBox. See for example &lt;http://build.webkit.org/builders/Apple%20Lion%20Release%20%28Build%29/builds/3594/steps/compile-webkit/logs/stdio/text&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715651</commentid>
    <comment_count>20</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-09-09 18:09:34 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 162926 [details] [details])
&gt; &gt; Clearing flags on attachment: 162926
&gt; &gt; 
&gt; &gt; Committed r128006: &lt;http://trac.webkit.org/changeset/128006&gt;
&gt; 
&gt; This broke the build because SVGElement has its own non-virtual boundingBox. See for example &lt;http://build.webkit.org/builders/Apple%20Lion%20Release%20%28Build%29/builds/3594/steps/compile-webkit/logs/stdio/text&gt;.

I tried to fix this in &lt;http://trac.webkit.org/r128009&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715652</commentid>
    <comment_count>21</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-09-09 18:11:37 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; (From update of attachment 162926 [details] [details] [details])
&gt; &gt; &gt; Clearing flags on attachment: 162926
&gt; &gt; &gt; 
&gt; &gt; &gt; Committed r128006: &lt;http://trac.webkit.org/changeset/128006&gt;
&gt; &gt; 
&gt; &gt; This broke the build because SVGElement has its own non-virtual boundingBox. See for example &lt;http://build.webkit.org/builders/Apple%20Lion%20Release%20%28Build%29/builds/3594/steps/compile-webkit/logs/stdio/text&gt;.
&gt; 
&gt; I tried to fix this in &lt;http://trac.webkit.org/r128009&gt;.

Was just about to commit a similar fix myself, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715705</commentid>
    <comment_count>22</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-09-09 21:58:52 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 162926 [details])
&gt; Clearing flags on attachment: 162926
&gt; 
&gt; Committed r128006: &lt;http://trac.webkit.org/changeset/128006&gt;

This caused three spatial navigation tests to fail. See for example &lt;http://build.webkit.org/results/Apple%20Lion%20Debug%20WK1%20(Tests)/r128010%20(2654)/results.html&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715709</commentid>
    <comment_count>23</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-09-09 22:01:18 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 162926 [details] [details])
&gt; &gt; Clearing flags on attachment: 162926
&gt; &gt; 
&gt; &gt; Committed r128006: &lt;http://trac.webkit.org/changeset/128006&gt;
&gt; 
&gt; This caused three spatial navigation tests to fail. See for example &lt;http://build.webkit.org/results/Apple%20Lion%20Debug%20WK1%20(Tests)/r128010%20(2654)/results.html&gt;.

Filed bug 96226.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717854</commentid>
    <comment_count>24</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-09-11 20:19:33 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 162926 [details] [details])
&gt; &gt; Clearing flags on attachment: 162926
&gt; &gt; 
&gt; &gt; Committed r128006: &lt;http://trac.webkit.org/changeset/128006&gt;
&gt; 
&gt; This caused three spatial navigation tests to fail. See for example &lt;http://build.webkit.org/results/Apple%20Lion%20Debug%20WK1%20(Tests)/r128010%20(2654)/results.html&gt;.

If this is a rename, as the title says, it should really not fail any test, and even, leave the test skipped is not a nice solution.

Emil, do you have plans to investigate it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718428</commentid>
    <comment_count>25</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-09-12 09:04:29 -0700</bug_when>
    <thetext>I&apos;m looking into it at the moment, it is being tracked by 96226.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132704</attachid>
            <date>2012-03-19 16:20:41 -0700</date>
            <delta_ts>2012-03-19 16:21:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>81572.patch</filename>
            <type>text/plain</type>
            <size>2148</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTI2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAzLTE5ICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgRnJhY3Rpb25hbExheW91
dFVuaXQgdmVyc2lvbiBvZiBibGVuZCB0byBBbmltYXRpb25VdGlsaXRpZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTcyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisgICAgICAgIAorICAgICAgICBBZGQgdmVyc2lvbiBvZiBi
bGVuZCBtZXRob2QgdGhhdCBvcGVyYXRlcyBvbiBGcmFjdGlvbmFsTGF5b3V0VW5pdHMuIFRoaXMK
KyAgICAgICAgd2lsbCBiZSB1c2VkIGluIHBsYWNlIG9mIHRoZSBpbnRlZ2VyIHZlcnNpb24gaW4g
bWFueSBwbGFjZXMgb25jZSB3ZQorICAgICAgICBlbmFibGUgc3VwcG9ydCBmb3Igc3VicGl4ZWwg
bGF5b3V0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL0Zy
YWN0aW9uYWxMYXlvdXRVbml0Lmg6CisgICAgICAgIEluY2x1ZGUgbWF0aC5oIHRvIG1ha2UgR1RL
IGJ1aWxkIGhhcHB5LgorCisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblV0
aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmQpOgorCiAyMDEyLTAzLTE5ICBBYmhp
c2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggZHVlIHRv
IGxheWVyIHRyZWUgaW5mb3JtYXRpb24gbm90IHVwZGF0ZWQgd2hlbiBtb3ZpbmcgcnVuLWluIGNo
aWxkcmVuLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRnJhY3Rpb25hbExheW91dFVu
aXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GcmFjdGlvbmFsTGF5
b3V0VW5pdC5oCShyZXZpc2lvbiAxMTEyNjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
cmFjdGlvbmFsTGF5b3V0VW5pdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAK
ICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bWF0aC5o
PgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVXRpbGl0aWVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblV0aWxp
dGllcy5oCShyZXZpc2lvbiAxMTEyNjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmlt
YXRpb24vQW5pbWF0aW9uVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcg
QEAKICNpZm5kZWYgQW5pbWF0aW9uVXRpbGl0aWVzX2gKICNkZWZpbmUgQW5pbWF0aW9uVXRpbGl0
aWVzX2gKIAorI2luY2x1ZGUgIkZyYWN0aW9uYWxMYXlvdXRVbml0LmgiCiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNiArNTEsMTEgQEAg
aW5saW5lIGZsb2F0IGJsZW5kKGZsb2F0IGZyb20sIGZsb2F0IHRvLAogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxmbG9hdD4oZnJvbSArICh0byAtIGZyb20pICogcHJvZ3Jlc3MpOwogfQogCitpbmxp
bmUgRnJhY3Rpb25hbExheW91dFVuaXQgYmxlbmQoRnJhY3Rpb25hbExheW91dFVuaXQgZnJvbSwg
RnJhY3Rpb25hbExheW91dFVuaXQgdG8sIGRvdWJsZSBwcm9ncmVzcykKK3sgIAorICAgIHJldHVy
biBmcm9tICsgKHRvIC0gZnJvbSkgKiBwcm9ncmVzczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gQW5pbWF0aW9uVXRpbGl0aWVzX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159753</attachid>
            <date>2012-08-21 13:24:58 -0700</date>
            <delta_ts>2012-08-21 14:05:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81413-20120821132457.patch</filename>
            <type>text/plain</type>
            <size>18407</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNjE3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA4LTIxICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgTm9kZTo6Z2V0UmVj
dC9nZXRQaXhlbFNuYXBwZWRSZWN0IGFuZCByZW1vdmUgQ29udGFpbmVyTm9kZTo6Z2V0UmVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0MTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgTm9k
ZTo6Z2V0UmVjdCBhbmQgZ2V0UGl4ZWxTbmFwcGVkUmVjdCB0byBib3VuZGluZ0JveFJlY3QgYW5k
CisgICAgICAgIHBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdCByZXNwZWN0aXZlbHkuCisKKyAg
ICAgICAgUmVtb3ZlIG92ZXJyaWRkZW4gZ2V0UmVjdCBtZXRob2QgZnJvbSBDb250YWluZXJOb2Rl
IGFzIGl0IGNhbGN1bGF0ZXMgdGhlCisgICAgICAgIHNhbWUgcmVjdCBhcyB0aGUgTm9kZSBpbXBs
ZW1lbnRhdGlvbiBidXQgaW4gYSBtb3JlIGNvbXBsaWNhdGVkIGFuZAorICAgICAgICBlcnJvci1w
cm9uZSB3YXkuIEFsc28gcmVtb3ZlIHRoZSBnZXRVcHBlckxlZnRDb3JuZXIvZ2V0TG93ZXJSaWdo
dENvcm5lcgorICAgICAgICBzdXBwb3J0IGZ1bmN0aW9ucyBhcyB0aGV5IGFyZSBubyBsb25nZXIg
bmVlZGVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxp
dHkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iOjplbGVtZW50UmVjdCk6
CisgICAgICAgIFVwZGF0ZSB0byBjYWxsIGJvdW5kaW5nQm94UmVjdC4KKworICAgICAgICAqIGRv
bS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAg
ICAgICBSZW1vdmUgb3ZlcnJpZGRlbiBnZXRSZWN0IG1ldGhvZCBhbmQgdGhlIGdldFVwcGVyTGVm
dENvcm5lci8KKyAgICAgICAgZ2V0TG93ZXJSaWdodENvcm5lciBzdXBwb3J0IG1ldGhvZHMgLgor
CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
c2Nyb2xsSW50b1ZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsSW50b1Zp
ZXdJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVh
cmFuY2UpOgorICAgICAgICBVcGRhdGUgdG8gY2FsbCBib3VuZGluZ0JveFJlY3QuCisgICAgICAg
IAorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6Ym91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgUmVuYW1lIGdldFJl
Y3QgdG8gYm91bmRpbmdCb3hSZWN0LgorCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwaXhlbFNu
YXBwZWRCb3VuZGluZ0JveFJlY3QpOgorICAgICAgICBSZW5hbWUgZ2V0UGl4ZWxTbmFwcGVkUmVj
dCB0byBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QuCisgICAgICAgIAorICAgICAgICAqIGh0
bWwvQ29sb3JJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6
OmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KToKKyAgICAgICAgKiBodG1sL1ZhbGlkYXRp
b25NZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpidWls
ZEJ1YmJsZVRyZWUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6Om9wZW5Qb3B1
cCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNw
ZWVjaElucHV0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnNjcm9sbEVsZW1lbnRUb1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzY3JvbGxUb0FuY2hvcik6CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlUmVjdEluQWJzb2x1dGVDb29yZGluYXRl
cyk6CisgICAgICAgIFVwZGF0ZSB0byBjYWxsIGJvdW5kaW5nQm94UmVjdC9waXhlbFNuYXBwZWRC
b3VuZGluZ0JveFJlY3QuCisKIDIwMTItMDgtMjEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtOZXcgTXVsdGljb2x1bW5dIE1ha2UgY29sdW1uIHJ1bGVzIHBhaW50
IHByb3Blcmx5LgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2xpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCShyZXZpc2lvbiAxMjYxNjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzcsNyArMTc3LDcgQEAgTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6
OmVsZQogICAgIFJlbmRlck9iamVjdCogc2xpZGVyUmVuZGVyZXIgPSBtX3BhcmVudC0+cmVuZGVy
ZXIoKTsKICAgICBpZiAoIXNsaWRlclJlbmRlcmVyIHx8ICFzbGlkZXJSZW5kZXJlci0+aXNTbGlk
ZXIoKSkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKLSAgICByZXR1cm4gc2xpZGVyVGh1
bWJFbGVtZW50T2Yoc2xpZGVyUmVuZGVyZXItPm5vZGUoKSktPmdldFJlY3QoKTsKKyAgICByZXR1
cm4gc2xpZGVyVGh1bWJFbGVtZW50T2Yoc2xpZGVyUmVuZGVyZXItPm5vZGUoKSktPmJvdW5kaW5n
Qm94UmVjdCgpOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCShyZXZpc2lvbiAxMjYxNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwOSwxMzUgKzcwOSw2IEBAIHZvaWQgQ29udGFpbmVy
Tm9kZTo6Y2xvbmVDaGlsZE5vZGVzKENvbnQKICAgICB9CiB9CiAKLWJvb2wgQ29udGFpbmVyTm9k
ZTo6Z2V0VXBwZXJMZWZ0Q29ybmVyKEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAotewotICAgIGlm
ICghcmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIC8vIFdoYXQgaXMgdGhp
cyBjb2RlIHJlYWxseSB0cnlpbmcgdG8gZG8/Ci0gICAgUmVuZGVyT2JqZWN0ICpvID0gcmVuZGVy
ZXIoKTsKLSAgICBSZW5kZXJPYmplY3QgKnAgPSBvOwotCi0gICAgaWYgKCFvLT5pc0lubGluZSgp
IHx8IG8tPmlzUmVwbGFjZWQoKSkgewotICAgICAgICBwb2ludCA9IG8tPmxvY2FsVG9BYnNvbHV0
ZShGbG9hdFBvaW50KCksIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0gICAgLy8gZmluZCB0aGUgbmV4dCB0ZXh0L2ltYWdlIGNoaWxkLCB0byBnZXQgYSBwb3Np
dGlvbgotICAgIHdoaWxlIChvKSB7Ci0gICAgICAgIHAgPSBvOwotICAgICAgICBpZiAoby0+Zmly
c3RDaGlsZCgpKQotICAgICAgICAgICAgbyA9IG8tPmZpcnN0Q2hpbGQoKTsKLSAgICAgICAgZWxz
ZSBpZiAoby0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgICAgIG8gPSBvLT5uZXh0U2libGluZygp
OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCAqbmV4dCA9IDA7Ci0g
ICAgICAgICAgICB3aGlsZSAoIW5leHQgJiYgby0+cGFyZW50KCkpIHsKLSAgICAgICAgICAgICAg
ICBvID0gby0+cGFyZW50KCk7Ci0gICAgICAgICAgICAgICAgbmV4dCA9IG8tPm5leHRTaWJsaW5n
KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBvID0gbmV4dDsKLQotICAgICAgICAgICAg
aWYgKCFvKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VS
VChvKTsKLQotICAgICAgICBpZiAoIW8tPmlzSW5saW5lKCkgfHwgby0+aXNSZXBsYWNlZCgpKSB7
Ci0gICAgICAgICAgICBwb2ludCA9IG8tPmxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50KCksIGZh
bHNlLCB0cnVlKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKHAtPm5vZGUoKSAmJiBwLT5ub2RlKCkgPT0gdGhpcyAmJiBvLT5pc1RleHQoKSAmJiAh
by0+aXNCUigpICYmICF0b1JlbmRlclRleHQobyktPmZpcnN0VGV4dEJveCgpKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gZG8gbm90aGluZyAtIHNraXAgdW5yZW5kZXJlZCB3aGl0ZXNwYWNlIHRoYXQg
aXMgYSBjaGlsZCBvciBuZXh0IHNpYmxpbmcgb2YgdGhlIGFuY2hvcgotICAgICAgICB9IGVsc2Ug
aWYgKChvLT5pc1RleHQoKSAmJiAhby0+aXNCUigpKSB8fCBvLT5pc1JlcGxhY2VkKCkpIHsKLSAg
ICAgICAgICAgIHBvaW50ID0gRmxvYXRQb2ludCgpOwotICAgICAgICAgICAgaWYgKG8tPmlzVGV4
dCgpICYmIHRvUmVuZGVyVGV4dChvKS0+Zmlyc3RUZXh0Qm94KCkpIHsKLSAgICAgICAgICAgICAg
ICBwb2ludC5tb3ZlKHRvUmVuZGVyVGV4dChvKS0+bGluZXNCb3VuZGluZ0JveCgpLngoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvUmVuZGVyVGV4dChvKS0+Zmlyc3RUZXh0Qm94KCkt
PnJvb3QoKS0+bGluZVRvcCgpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoby0+aXNCb3goKSkg
ewotICAgICAgICAgICAgICAgIFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3gobyk7Ci0gICAg
ICAgICAgICAgICAgcG9pbnQubW92ZUJ5KGJveC0+bG9jYXRpb24oKSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBwb2ludCA9IG8tPmNvbnRhaW5lcigpLT5sb2NhbFRvQWJzb2x1dGUocG9p
bnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0g
ICAgfQotICAgIAotICAgIC8vIElmIHRoZSB0YXJnZXQgZG9lc24ndCBoYXZlIGFueSBjaGlsZHJl
biBvciBzaWJsaW5ncyB0aGF0IGNvdWxkIGJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzY3JvbGwg
cG9zaXRpb24sIHdlIG11c3QgYmUKLSAgICAvLyBhdCB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudC4g
IFNjcm9sbCB0byB0aGUgYm90dG9tLiBGSVhNRTogd2hvIHNhaWQgYW55dGhpbmcgYWJvdXQgc2Ny
b2xsaW5nPwotICAgIGlmICghbyAmJiBkb2N1bWVudCgpLT52aWV3KCkpIHsKLSAgICAgICAgcG9p
bnQgPSBGbG9hdFBvaW50KDAsIGRvY3VtZW50KCktPnZpZXcoKS0+Y29udGVudHNIZWlnaHQoKSk7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJv
b2wgQ29udGFpbmVyTm9kZTo6Z2V0TG93ZXJSaWdodENvcm5lcihGbG9hdFBvaW50JiBwb2ludCkg
Y29uc3QKLXsKLSAgICBpZiAoIXJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIFJlbmRlck9iamVjdCogbyA9IHJlbmRlcmVyKCk7Ci0gICAgaWYgKCFvLT5pc0lubGluZSgp
IHx8IG8tPmlzUmVwbGFjZWQoKSkgewotICAgICAgICBSZW5kZXJCb3gqIGJveCA9IHRvUmVuZGVy
Qm94KG8pOwotICAgICAgICBwb2ludCA9IG8tPmxvY2FsVG9BYnNvbHV0ZShMYXlvdXRQb2ludChi
b3gtPnNpemUoKSksIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci0gICAgLy8gZmluZCB0aGUgbGFzdCB0ZXh0L2ltYWdlIGNoaWxkLCB0byBnZXQgYSBwb3NpdGlv
bgotICAgIHdoaWxlIChvKSB7Ci0gICAgICAgIGlmIChvLT5sYXN0Q2hpbGQoKSkKLSAgICAgICAg
ICAgIG8gPSBvLT5sYXN0Q2hpbGQoKTsKLSAgICAgICAgZWxzZSBpZiAoby0+cHJldmlvdXNTaWJs
aW5nKCkpCi0gICAgICAgICAgICBvID0gby0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgICAgIGVs
c2UgewotICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBwcmV2ID0gMDsKLSAgICAgICAgICAgIHdo
aWxlICghcHJldikgewotICAgICAgICAgICAgICAgIG8gPSBvLT5wYXJlbnQoKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIW8pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgICAgICBwcmV2ID0gby0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBvID0gcHJldjsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQobyk7Ci0gICAg
ICAgIGlmIChvLT5pc1RleHQoKSB8fCBvLT5pc1JlcGxhY2VkKCkpIHsKLSAgICAgICAgICAgIHBv
aW50ID0gRmxvYXRQb2ludCgpOwotICAgICAgICAgICAgaWYgKG8tPmlzVGV4dCgpKSB7Ci0gICAg
ICAgICAgICAgICAgUmVuZGVyVGV4dCogdGV4dCA9IHRvUmVuZGVyVGV4dChvKTsKLSAgICAgICAg
ICAgICAgICBJbnRSZWN0IGxpbmVzQm94ID0gdGV4dC0+bGluZXNCb3VuZGluZ0JveCgpOwotICAg
ICAgICAgICAgICAgIGlmICghbGluZXNCb3gubWF4WCgpICYmICFsaW5lc0JveC5tYXhZKCkpCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHBvaW50Lm1vdmVC
eShsaW5lc0JveC5tYXhYTWF4WUNvcm5lcigpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJveChvKTsKLSAgICAgICAgICAg
ICAgICBwb2ludC5tb3ZlQnkoYm94LT5mcmFtZVJlY3QoKS5tYXhYTWF4WUNvcm5lcigpKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvaW50ID0gby0+Y29udGFpbmVyKCktPmxvY2FsVG9B
YnNvbHV0ZShwb2ludCwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUxheW91dFJlY3QgQ29udGFp
bmVyTm9kZTo6Z2V0UmVjdCgpIGNvbnN0Ci17Ci0gICAgRmxvYXRQb2ludCAgdXBwZXJMZWZ0LCBs
b3dlclJpZ2h0OwotICAgIGJvb2wgZm91bmRVcHBlckxlZnQgPSBnZXRVcHBlckxlZnRDb3JuZXIo
dXBwZXJMZWZ0KTsKLSAgICBib29sIGZvdW5kTG93ZXJSaWdodCA9IGdldExvd2VyUmlnaHRDb3Ju
ZXIobG93ZXJSaWdodCk7Ci0gICAgCi0gICAgLy8gSWYgd2UndmUgZm91bmQgb25lIGNvcm5lciwg
YnV0IG5vdCB0aGUgb3RoZXIsCi0gICAgLy8gdGhlbiB3ZSBzaG91bGQganVzdCByZXR1cm4gYSBw
b2ludCBhdCB0aGUgY29ybmVyIHRoYXQgd2UgZGlkIGZpbmQuCi0gICAgaWYgKGZvdW5kVXBwZXJM
ZWZ0ICE9IGZvdW5kTG93ZXJSaWdodCkgewotICAgICAgICBpZiAoZm91bmRVcHBlckxlZnQpCi0g
ICAgICAgICAgICBsb3dlclJpZ2h0ID0gdXBwZXJMZWZ0OwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB1cHBlckxlZnQgPSBsb3dlclJpZ2h0OwotICAgIH0gCi0KLSAgICByZXR1cm4gZW5jbG9z
aW5nTGF5b3V0UmVjdChGbG9hdFJlY3QodXBwZXJMZWZ0LCBsb3dlclJpZ2h0LmV4cGFuZGVkVG8o
dXBwZXJMZWZ0KSAtIHVwcGVyTGVmdCkpOwotfQotCiB2b2lkIENvbnRhaW5lck5vZGU6OnNldEZv
Y3VzKGJvb2wgcmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZvY3VzZWQoKSA9PSByZWNlaXZlZCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAkocmV2aXNpb24gMTI2MTY2KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyAr
NzUsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGRldGFjaCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBnZXRSZWN0KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJv
b2wgPSB0cnVlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wgYWN0
aXZlID0gdHJ1ZSwgYm9vbCBwYXVzZSA9IGZhbHNlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SG92ZXJlZChib29sID0gdHJ1ZSkgT1ZFUlJJREU7CkBAIC0xMzMsOSArMTMyLDYgQEAg
cHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUG9zdEF0dGFjaENhbGxiYWNrcygp
OwogCi0gICAgYm9vbCBnZXRVcHBlckxlZnRDb3JuZXIoRmxvYXRQb2ludCYpIGNvbnN0OwotICAg
IGJvb2wgZ2V0TG93ZXJSaWdodENvcm5lcihGbG9hdFBvaW50JikgY29uc3Q7Ci0KICAgICBOb2Rl
KiBtX2ZpcnN0Q2hpbGQ7CiAgICAgTm9kZSogbV9sYXN0Q2hpbGQ7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTI2MTY2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBFbGVtZW50
OjpzY3JvbGxJbnRvVmlldyhib29sIGFsaWduVAogICAgIGlmICghcmVuZGVyZXIoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgTGF5b3V0UmVjdCBib3VuZHMgPSBnZXRSZWN0KCk7CisgICAgTGF5
b3V0UmVjdCBib3VuZHMgPSBib3VuZGluZ0JveFJlY3QoKTsKICAgICAvLyBBbGlnbiB0byB0aGUg
dG9wIC8gYm90dG9tIGFuZCB0byB0aGUgY2xvc2VzdCBlZGdlLgogICAgIGlmIChhbGlnblRvVG9w
KQogICAgICAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKGJvdW5kcywgU2Nyb2xs
QWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9w
QWx3YXlzKTsKQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3
SWZOZWVkZWQoYm9vCiAgICAgaWYgKCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBMYXlvdXRSZWN0IGJvdW5kcyA9IGdldFJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IGJvdW5kcyA9
IGJvdW5kaW5nQm94UmVjdCgpOwogICAgIGlmIChjZW50ZXJJZk5lZWRlZCkKICAgICAgICAgcmVu
ZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShib3VuZHMsIFNjcm9sbEFsaWdubWVudDo6YWxp
Z25DZW50ZXJJZk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkKTsK
ICAgICBlbHNlCkBAIC0xNjE3LDcgKzE2MTcsNyBAQCB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUZvY3Vz
QXBwZWFyYW5jZShib29sCiAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnJldmVhbFNl
bGVjdGlvbigpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChyZW5kZXJlcigpICYmICFyZW5k
ZXJlcigpLT5pc1dpZGdldCgpKQotICAgICAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNp
YmxlKGdldFJlY3QoKSk7CisgICAgICAgIHJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUo
Ym91bmRpbmdCb3hSZWN0KCkpOwogfQogCiB2b2lkIEVsZW1lbnQ6OmJsdXIoKQpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAkocmV2aXNpb24gMTI2MTY2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTUsNyArNzk1LDcgQEAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIE5vZGU6OnJlbmRlckJveE1vZAogICAgIHJldHVybiBtX3JlbmRlcmVyICYmIG1fcmVuZGVy
ZXItPmlzQm94TW9kZWxPYmplY3QoKSA/IHRvUmVuZGVyQm94TW9kZWxPYmplY3QobV9yZW5kZXJl
cikgOiAwOwogfQogCi1MYXlvdXRSZWN0IE5vZGU6OmdldFJlY3QoKSBjb25zdAorTGF5b3V0UmVj
dCBOb2RlOjpib3VuZGluZ0JveFJlY3QoKSBjb25zdAogewogICAgIGlmIChyZW5kZXJlcigpKQog
ICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAkocmV2aXNpb24gMTI2MTY2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAxLDggKzQwMSw4IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKTsKLSAgICB2aXJ0dWFsIExh
eW91dFJlY3QgZ2V0UmVjdCgpIGNvbnN0OwotICAgIEludFJlY3QgZ2V0UGl4ZWxTbmFwcGVkUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QoZ2V0UmVjdCgpKTsgfQorICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25zdDsKKyAgICBJbnRSZWN0
IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIHBpeGVsU25hcHBl
ZEludFJlY3QoYm91bmRpbmdCb3hSZWN0KCkpOyB9CiAgICAgTGF5b3V0UmVjdCByZW5kZXJSZWN0
KGJvb2wqIGlzUmVwbGFjZWQpOwogICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkUmVuZGVyUmVjdChi
b29sKiBpc1JlcGxhY2VkKSB7IHJldHVybiBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlclJlY3Qo
aXNSZXBsYWNlZCkpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUu
Y3BwCShyZXZpc2lvbiAxMjYxNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRU
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDcgKzIwOCw3IEBAIEhUTUxFbGVtZW50KiBD
b2xvcklucHV0VHlwZTo6c2hhZG93Q29sb3IKIAogSW50UmVjdCBDb2xvcklucHV0VHlwZTo6ZWxl
bWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSBjb25zdAogewotICAgIHJldHVybiBlbGVtZW50
KCktPmRvY3VtZW50KCktPnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGVsZW1lbnQoKS0+Z2V0
UGl4ZWxTbmFwcGVkUmVjdCgpKTsKKyAgICByZXR1cm4gZWxlbWVudCgpLT5kb2N1bWVudCgpLT52
aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhlbGVtZW50KCktPnBpeGVsU25hcHBlZEJvdW5kaW5n
Qm94UmVjdCgpKTsKIH0KIAogQ29sb3IgQ29sb3JJbnB1dFR5cGU6OmN1cnJlbnRDb2xvcigpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAkocmV2aXNpb24g
MTI2MTY2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpi
dWlsZEJ1YmJsZVRyZWUoCiAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQobV9idWJibGUuZ2V0
KCksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKICAgICBob3N0LT5kb2N1bWVudCgpLT51cGRhdGVM
YXlvdXQoKTsKLSAgICBhZGp1c3RCdWJibGVQb3NpdGlvbihob3N0LT5nZXRSZWN0KCksIG1fYnVi
YmxlLmdldCgpKTsKKyAgICBhZGp1c3RCdWJibGVQb3NpdGlvbihob3N0LT5ib3VuZGluZ0JveFJl
Y3QoKSwgbV9idWJibGUuZ2V0KCkpOwogCiAgICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBjbGlw
cGVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2MpOwogICAgIGNsaXBwZXItPnNldFNoYWRv
d1BzZXVkb0lkKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLWFycm93LWNsaXBwZXIiKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJF
bGVtZW50LmNwcAkocmV2aXNpb24gMTI2MTY2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEy
NSw3IEBAIHZvaWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50OjpvcGVuUG9wdXAoKQogICAgICAgICBy
ZXR1cm47CiAgICAgaWYgKCFkb2N1bWVudCgpLT52aWV3KCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBJbnRSZWN0IGVsZW1lbnRSZWN0SW5Sb290VmlldyA9IGRvY3VtZW50KCktPnZpZXcoKS0+Y29u
dGVudHNUb1Jvb3RWaWV3KGhvc3RJbnB1dCgpLT5nZXRQaXhlbFNuYXBwZWRSZWN0KCkpOworICAg
IEludFJlY3QgZWxlbWVudFJlY3RJblJvb3RWaWV3ID0gZG9jdW1lbnQoKS0+dmlldygpLT5jb250
ZW50c1RvUm9vdFZpZXcoaG9zdElucHV0KCktPnBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdCgp
KTsKICAgICBtX3BvcHVwID0gY2hyb21lLT5jbGllbnQoKS0+b3BlblBhZ2VQb3B1cCh0aGlzLCBl
bGVtZW50UmVjdEluUm9vdFZpZXcpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAJKHJldmlzaW9u
IDEyNjE2NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNCw3ICs0MjQsNyBAQCB2b2lkIElucHV0
RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFyCiAgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1l
bnQ+IGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0hvc3QoKSk7
CiAgICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlID0gaW5wdXQtPmNvbXB1dGVJbmhlcml0ZWRMYW5n
dWFnZSgpOwogICAgIFN0cmluZyBncmFtbWFyID0gaW5wdXQtPmdldEF0dHJpYnV0ZSh3ZWJraXRn
cmFtbWFyQXR0cik7Ci0gICAgSW50UmVjdCByZWN0ID0gZG9jdW1lbnQoKS0+dmlldygpLT5jb250
ZW50c1RvUm9vdFZpZXcoZ2V0UGl4ZWxTbmFwcGVkUmVjdCgpKTsKKyAgICBJbnRSZWN0IHJlY3Qg
PSBkb2N1bWVudCgpLT52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhwaXhlbFNuYXBwZWRCb3Vu
ZGluZ0JveFJlY3QoKSk7CiAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24o
bV9saXN0ZW5lcklkLCByZWN0LCBsYW5ndWFnZSwgZ3JhbW1hciwgZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSkpCiAgICAgICAgIHNldFN0YXRlKFJlY29yZGluZyk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAxMjYxNjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2ODYsNyArMTY4Niw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxFbGVtZW50VG9SZWN0KEVsZW0KIHsKICAgICBtX2ZyYW1l
LT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAot
ICAgIExheW91dFJlY3QgYm91bmRzID0gZWxlbWVudC0+Z2V0UmVjdCgpOworICAgIExheW91dFJl
Y3QgYm91bmRzID0gZWxlbWVudC0+Ym91bmRpbmdCb3hSZWN0KCk7CiAgICAgaW50IGNlbnRlcmlu
Z09mZnNldFggPSAocmVjdC53aWR0aCgpIC0gYm91bmRzLndpZHRoKCkpIC8gMjsKICAgICBpbnQg
Y2VudGVyaW5nT2Zmc2V0WSA9IChyZWN0LmhlaWdodCgpIC0gYm91bmRzLmhlaWdodCgpKSAvIDI7
CiAgICAgc2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoYm91bmRzLngoKSAtIGNlbnRlcmluZ09m
ZnNldFggLSByZWN0LngoKSwgYm91bmRzLnkoKSAtIGNlbnRlcmluZ09mZnNldFkgLSByZWN0Lnko
KSkpOwpAQCAtMjI2Myw3ICsyMjYzLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNjcm9sbFRvQW5jaG9y
KCkKIAogICAgIExheW91dFJlY3QgcmVjdDsKICAgICBpZiAoYW5jaG9yTm9kZSAhPSBtX2ZyYW1l
LT5kb2N1bWVudCgpKQotICAgICAgICByZWN0ID0gYW5jaG9yTm9kZS0+Z2V0UmVjdCgpOworICAg
ICAgICByZWN0ID0gYW5jaG9yTm9kZS0+Ym91bmRpbmdCb3hSZWN0KCk7CiAKICAgICAvLyBTY3Jv
bGwgbmVzdGVkIGxheWVycyBhbmQgZnJhbWVzIHRvIHJldmVhbCB0aGUgYW5jaG9yLgogICAgIC8v
IEFsaWduIHRvIHRoZSB0b3AgYW5kIHRvIHRoZSBjbG9zZXN0IHNpZGUgKHRoaXMgbWF0Y2hlcyBv
dGhlciBicm93c2VycykuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0
aW9uLmNwcAkocmV2aXNpb24gMTI2MTY2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFs
TmF2aWdhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMiw3ICs1MjIsNyBAQCBMYXlvdXRS
ZWN0IG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzCiAKICAgICBpZiAobm9kZS0+aXNEb2N1
bWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuIGZyYW1lUmVjdEluQWJzb2x1dGVDb29yZGluYXRl
cyhzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG5vZGUpLT5mcmFtZSgpKTsKLSAgICBMYXlvdXRSZWN0
IHJlY3QgPSByZWN0VG9BYnNvbHV0ZUNvb3JkaW5hdGVzKG5vZGUtPmRvY3VtZW50KCktPmZyYW1l
KCksIG5vZGUtPmdldFJlY3QoKSk7CisgICAgTGF5b3V0UmVjdCByZWN0ID0gcmVjdFRvQWJzb2x1
dGVDb29yZGluYXRlcyhub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLCBub2RlLT5ib3VuZGluZ0Jv
eFJlY3QoKSk7CiAKICAgICAvLyBGb3IgYXV0aG9ycyB0aGF0IHVzZSBib3JkZXIgaW5zdGVhZCBv
ZiBvdXRsaW5lIGluIHRoZWlyIENTUywgd2UgY29tcGVuc2F0ZSBieSBpZ25vcmluZyB0aGUgYm9y
ZGVyIHdoZW4gY2FsY3VsYXRpbmcKICAgICAvLyB0aGUgcmVjdCBvZiB0aGUgZm9jdXNlZCBlbGVt
ZW50LgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNjE3OSkKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTItMDgtMjEgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJlbmFtZSBOb2RlOjpnZXRSZWN0L2dldFBpeGVsU25hcHBlZFJlY3QgYW5kIHJl
bW92ZSBDb250YWluZXJOb2RlOjpnZXRSZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBXZWJWaWV3SW1wbCB0byBjYWxsIGJvdW5kaW5nQm94
UmVjdC9waXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QuCisKKyAgICAgICAgKiBzcmMvV2ViVmll
d0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29tcHV0ZUJsb2NrQm91
bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5QXV0b2ZpbGxTdWdnZXN0
aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZWZyZXNoQXV0b2ZpbGxQb3B1
cCk6CisKIDIwMTItMDgtMjEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI2MTcwLgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24gMTI2MTY2KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05OTgsNyArOTk4LDcgQEAgV2ViUmVjdCBXZWJWaWV3SW1wbDo6Y29tcHV0ZUJsb2Nr
Qm91bmRzKAogCiAgICAgLy8gUmV0dXJuIHRoZSBib3VuZGluZyBib3ggaW4gdGhlIHdpbmRvdyBj
b29yZGluYXRlIHN5c3RlbS4KICAgICBpZiAobm9kZSkgewotICAgICAgICBJbnRSZWN0IHJlY3Qg
PSBub2RlLT5Ob2RlOjpnZXRQaXhlbFNuYXBwZWRSZWN0KCk7CisgICAgICAgIEludFJlY3QgcmVj
dCA9IG5vZGUtPk5vZGU6OnBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdCgpOwogICAgICAgICBG
cmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOwogICAgICAgICByZXR1cm4g
ZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZWN0KTsKICAgICB9CkBAIC0zMTYyLDcg
KzMxNjIsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjphcHBseUF1dG9maWxsU3VnZ2VzdGlvCiAgICAg
ICAgIHJlZnJlc2hBdXRvZmlsbFBvcHVwKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9hdXRv
ZmlsbFBvcHVwU2hvd2luZyA9IHRydWU7Ci0gICAgICAgIG1fYXV0b2ZpbGxQb3B1cC0+c2hvd0lu
UmVjdChmb2N1c2VkTm9kZS0+Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpLCBmb2N1c2VkTm9kZS0+b3du
ZXJEb2N1bWVudCgpLT52aWV3KCksIDApOworICAgICAgICBtX2F1dG9maWxsUG9wdXAtPnNob3dJ
blJlY3QoZm9jdXNlZE5vZGUtPnBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdCgpLCBmb2N1c2Vk
Tm9kZS0+b3duZXJEb2N1bWVudCgpLT52aWV3KCksIDApOwogICAgIH0KIH0KIApAQCAtMzQ2OCw3
ICszNDY4LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVmcmVzaEF1dG9maWxsUG9wdXAoKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgV2ViUmVjdCBuZXdXaWRnZXRSZWN0ID0gbV9hdXRv
ZmlsbFBvcHVwLT5yZWZyZXNoKGZvY3VzZWRXZWJDb3JlTm9kZSgpLT5nZXRQaXhlbFNuYXBwZWRS
ZWN0KCkpOworICAgIFdlYlJlY3QgbmV3V2lkZ2V0UmVjdCA9IG1fYXV0b2ZpbGxQb3B1cC0+cmVm
cmVzaChmb2N1c2VkV2ViQ29yZU5vZGUoKS0+cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3hSZWN0KCkp
OwogICAgIC8vIExldCdzIHJlc2l6ZSB0aGUgYmFja2luZyB3aW5kb3cgaWYgbmVjZXNzYXJ5Lgog
ICAgIFdlYlBvcHVwTWVudUltcGwqIHBvcHVwTWVudSA9IHN0YXRpY19jYXN0PFdlYlBvcHVwTWVu
dUltcGwqPihtX2F1dG9maWxsUG9wdXAtPmNsaWVudCgpKTsKICAgICBpZiAocG9wdXBNZW51ICYm
IHBvcHVwTWVudS0+Y2xpZW50KCktPndpbmRvd1JlY3QoKSAhPSBuZXdXaWRnZXRSZWN0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159765</attachid>
            <date>2012-08-21 14:05:18 -0700</date>
            <delta_ts>2012-08-21 15:09:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81413-20120821140517.patch</filename>
            <type>text/plain</type>
            <size>25101</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNjE4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA4LTIxICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgTm9kZTo6Z2V0UmVj
dC9nZXRQaXhlbFNuYXBwZWRSZWN0IGFuZCByZW1vdmUgQ29udGFpbmVyTm9kZTo6Z2V0UmVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0MTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgTm9k
ZTo6Z2V0UmVjdCBhbmQgZ2V0UGl4ZWxTbmFwcGVkUmVjdCB0byBib3VuZGluZ0JveFJlY3QgYW5k
CisgICAgICAgIHBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdCByZXNwZWN0aXZlbHkuCisKKyAg
ICAgICAgUmVtb3ZlIG92ZXJyaWRkZW4gZ2V0UmVjdCBtZXRob2QgZnJvbSBDb250YWluZXJOb2Rl
IGFzIGl0IGNhbGN1bGF0ZXMgdGhlCisgICAgICAgIHNhbWUgcmVjdCBhcyB0aGUgTm9kZSBpbXBs
ZW1lbnRhdGlvbiBidXQgaW4gYSBtb3JlIGNvbXBsaWNhdGVkIGFuZAorICAgICAgICBlcnJvci1w
cm9uZSB3YXkuIEFsc28gcmVtb3ZlIHRoZSBnZXRVcHBlckxlZnRDb3JuZXIvZ2V0TG93ZXJSaWdo
dENvcm5lcgorICAgICAgICBzdXBwb3J0IGZ1bmN0aW9ucyBhcyB0aGV5IGFyZSBubyBsb25nZXIg
bmVlZGVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxp
dHkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iOjplbGVtZW50UmVjdCk6
CisgICAgICAgIFVwZGF0ZSB0byBjYWxsIGJvdW5kaW5nQm94UmVjdC4KKworICAgICAgICAqIGRv
bS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAg
ICAgICBSZW1vdmUgb3ZlcnJpZGRlbiBnZXRSZWN0IG1ldGhvZCBhbmQgdGhlIGdldFVwcGVyTGVm
dENvcm5lci8KKyAgICAgICAgZ2V0TG93ZXJSaWdodENvcm5lciBzdXBwb3J0IG1ldGhvZHMgLgor
CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
c2Nyb2xsSW50b1ZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsSW50b1Zp
ZXdJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVh
cmFuY2UpOgorICAgICAgICBVcGRhdGUgdG8gY2FsbCBib3VuZGluZ0JveFJlY3QuCisgICAgICAg
IAorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6Ym91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgUmVuYW1lIGdldFJl
Y3QgdG8gYm91bmRpbmdCb3hSZWN0LgorCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwaXhlbFNu
YXBwZWRCb3VuZGluZ0JveFJlY3QpOgorICAgICAgICBSZW5hbWUgZ2V0UGl4ZWxTbmFwcGVkUmVj
dCB0byBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QuCisgICAgICAgIAorICAgICAgICAqIGh0
bWwvQ29sb3JJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6
OmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KToKKyAgICAgICAgKiBodG1sL1ZhbGlkYXRp
b25NZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpidWls
ZEJ1YmJsZVRyZWUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWxlbmRhclBpY2tlckVsZW1lbnQ6Om9wZW5Qb3B1
cCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNw
ZWVjaElucHV0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnNjcm9sbEVsZW1lbnRUb1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzY3JvbGxUb0FuY2hvcik6CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlUmVjdEluQWJzb2x1dGVDb29yZGluYXRl
cyk6CisgICAgICAgIFVwZGF0ZSB0byBjYWxsIGJvdW5kaW5nQm94UmVjdC9waXhlbFNuYXBwZWRC
b3VuZGluZ0JveFJlY3QuCisKIDIwMTItMDgtMjEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNv
bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVzaW5nIGEgbmF0aXZlIHdpbmRvdyBmb3Ig
dGhlIFdlYlZpZXcgYnJlYWtzIEd0a092ZXJsYXkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAkocmV2aXNpb24gMTI2
MTgzKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw3IEBAIExheW91dFJlY3QgQWNjZXNz
aWJpbGl0eVNsaWRlclRodW1iOjplbGUKICAgICBSZW5kZXJPYmplY3QqIHNsaWRlclJlbmRlcmVy
ID0gbV9wYXJlbnQtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFzbGlkZXJSZW5kZXJlciB8fCAhc2xp
ZGVyUmVuZGVyZXItPmlzU2xpZGVyKCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7Ci0g
ICAgcmV0dXJuIHNsaWRlclRodW1iRWxlbWVudE9mKHNsaWRlclJlbmRlcmVyLT5ub2RlKCkpLT5n
ZXRSZWN0KCk7CisgICAgcmV0dXJuIHNsaWRlclRodW1iRWxlbWVudE9mKHNsaWRlclJlbmRlcmVy
LT5ub2RlKCkpLT5ib3VuZGluZ0JveFJlY3QoKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5U2xp
ZGVyVGh1bWI6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcAkocmV2aXNpb24gMTI2MTgzKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDksMTM1ICs3MDks
NiBAQCB2b2lkIENvbnRhaW5lck5vZGU6OmNsb25lQ2hpbGROb2RlcyhDb250CiAgICAgfQogfQog
Ci1ib29sIENvbnRhaW5lck5vZGU6OmdldFVwcGVyTGVmdENvcm5lcihGbG9hdFBvaW50JiBwb2lu
dCkgY29uc3QKLXsKLSAgICBpZiAoIXJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAvLyBXaGF0IGlzIHRoaXMgY29kZSByZWFsbHkgdHJ5aW5nIHRvIGRvPwotICAgIFJlbmRl
ck9iamVjdCAqbyA9IHJlbmRlcmVyKCk7Ci0gICAgUmVuZGVyT2JqZWN0ICpwID0gbzsKLQotICAg
IGlmICghby0+aXNJbmxpbmUoKSB8fCBvLT5pc1JlcGxhY2VkKCkpIHsKLSAgICAgICAgcG9pbnQg
PSBvLT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIGZpbmQgdGhlIG5leHQgdGV4dC9pbWFnZSBj
aGlsZCwgdG8gZ2V0IGEgcG9zaXRpb24KLSAgICB3aGlsZSAobykgewotICAgICAgICBwID0gbzsK
LSAgICAgICAgaWYgKG8tPmZpcnN0Q2hpbGQoKSkKLSAgICAgICAgICAgIG8gPSBvLT5maXJzdENo
aWxkKCk7Ci0gICAgICAgIGVsc2UgaWYgKG8tPm5leHRTaWJsaW5nKCkpCi0gICAgICAgICAgICBv
ID0gby0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZW5kZXJP
YmplY3QgKm5leHQgPSAwOwotICAgICAgICAgICAgd2hpbGUgKCFuZXh0ICYmIG8tPnBhcmVudCgp
KSB7Ci0gICAgICAgICAgICAgICAgbyA9IG8tPnBhcmVudCgpOwotICAgICAgICAgICAgICAgIG5l
eHQgPSBvLT5uZXh0U2libGluZygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbyA9IG5l
eHQ7Ci0KLSAgICAgICAgICAgIGlmICghbykKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBBU1NFUlQobyk7Ci0KLSAgICAgICAgaWYgKCFvLT5pc0lubGluZSgpIHx8
IG8tPmlzUmVwbGFjZWQoKSkgewotICAgICAgICAgICAgcG9pbnQgPSBvLT5sb2NhbFRvQWJzb2x1
dGUoRmxvYXRQb2ludCgpLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChwLT5ub2RlKCkgJiYgcC0+bm9kZSgpID09IHRoaXMg
JiYgby0+aXNUZXh0KCkgJiYgIW8tPmlzQlIoKSAmJiAhdG9SZW5kZXJUZXh0KG8pLT5maXJzdFRl
eHRCb3goKSkgewotICAgICAgICAgICAgICAgIC8vIGRvIG5vdGhpbmcgLSBza2lwIHVucmVuZGVy
ZWQgd2hpdGVzcGFjZSB0aGF0IGlzIGEgY2hpbGQgb3IgbmV4dCBzaWJsaW5nIG9mIHRoZSBhbmNo
b3IKLSAgICAgICAgfSBlbHNlIGlmICgoby0+aXNUZXh0KCkgJiYgIW8tPmlzQlIoKSkgfHwgby0+
aXNSZXBsYWNlZCgpKSB7Ci0gICAgICAgICAgICBwb2ludCA9IEZsb2F0UG9pbnQoKTsKLSAgICAg
ICAgICAgIGlmIChvLT5pc1RleHQoKSAmJiB0b1JlbmRlclRleHQobyktPmZpcnN0VGV4dEJveCgp
KSB7Ci0gICAgICAgICAgICAgICAgcG9pbnQubW92ZSh0b1JlbmRlclRleHQobyktPmxpbmVzQm91
bmRpbmdCb3goKS54KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0b1JlbmRlclRleHQo
byktPmZpcnN0VGV4dEJveCgpLT5yb290KCktPmxpbmVUb3AoKSk7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKG8tPmlzQm94KCkpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJCb3gqIGJveCA9IHRv
UmVuZGVyQm94KG8pOwotICAgICAgICAgICAgICAgIHBvaW50Lm1vdmVCeShib3gtPmxvY2F0aW9u
KCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9pbnQgPSBvLT5jb250YWluZXIoKS0+
bG9jYWxUb0Fic29sdXRlKHBvaW50LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBJZiB0aGUgdGFyZ2V0IGRvZXNu
J3QgaGF2ZSBhbnkgY2hpbGRyZW4gb3Igc2libGluZ3MgdGhhdCBjb3VsZCBiZSB1c2VkIHRvIGNh
bGN1bGF0ZSB0aGUgc2Nyb2xsIHBvc2l0aW9uLCB3ZSBtdXN0IGJlCi0gICAgLy8gYXQgdGhlIGVu
ZCBvZiB0aGUgZG9jdW1lbnQuICBTY3JvbGwgdG8gdGhlIGJvdHRvbS4gRklYTUU6IHdobyBzYWlk
IGFueXRoaW5nIGFib3V0IHNjcm9sbGluZz8KLSAgICBpZiAoIW8gJiYgZG9jdW1lbnQoKS0+dmll
dygpKSB7Ci0gICAgICAgIHBvaW50ID0gRmxvYXRQb2ludCgwLCBkb2N1bWVudCgpLT52aWV3KCkt
PmNvbnRlbnRzSGVpZ2h0KCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1ib29sIENvbnRhaW5lck5vZGU6OmdldExvd2VyUmlnaHRDb3JuZXIo
RmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Ci17Ci0gICAgaWYgKCFyZW5kZXJlcigpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBSZW5kZXJPYmplY3QqIG8gPSByZW5kZXJlcigpOwotICAg
IGlmICghby0+aXNJbmxpbmUoKSB8fCBvLT5pc1JlcGxhY2VkKCkpIHsKLSAgICAgICAgUmVuZGVy
Qm94KiBib3ggPSB0b1JlbmRlckJveChvKTsKLSAgICAgICAgcG9pbnQgPSBvLT5sb2NhbFRvQWJz
b2x1dGUoTGF5b3V0UG9pbnQoYm94LT5zaXplKCkpLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIGZpbmQgdGhlIGxhc3QgdGV4dC9pbWFnZSBjaGls
ZCwgdG8gZ2V0IGEgcG9zaXRpb24KLSAgICB3aGlsZSAobykgewotICAgICAgICBpZiAoby0+bGFz
dENoaWxkKCkpCi0gICAgICAgICAgICBvID0gby0+bGFzdENoaWxkKCk7Ci0gICAgICAgIGVsc2Ug
aWYgKG8tPnByZXZpb3VzU2libGluZygpKQotICAgICAgICAgICAgbyA9IG8tPnByZXZpb3VzU2li
bGluZygpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCogcHJldiA9
IDA7Ci0gICAgICAgICAgICB3aGlsZSAoIXByZXYpIHsKLSAgICAgICAgICAgICAgICBvID0gby0+
cGFyZW50KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFvKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcHJldiA9IG8tPnByZXZpb3VzU2libGluZygp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbyA9IHByZXY7Ci0gICAgICAgIH0KLSAgICAg
ICAgQVNTRVJUKG8pOwotICAgICAgICBpZiAoby0+aXNUZXh0KCkgfHwgby0+aXNSZXBsYWNlZCgp
KSB7Ci0gICAgICAgICAgICBwb2ludCA9IEZsb2F0UG9pbnQoKTsKLSAgICAgICAgICAgIGlmIChv
LT5pc1RleHQoKSkgewotICAgICAgICAgICAgICAgIFJlbmRlclRleHQqIHRleHQgPSB0b1JlbmRl
clRleHQobyk7Ci0gICAgICAgICAgICAgICAgSW50UmVjdCBsaW5lc0JveCA9IHRleHQtPmxpbmVz
Qm91bmRpbmdCb3goKTsKLSAgICAgICAgICAgICAgICBpZiAoIWxpbmVzQm94Lm1heFgoKSAmJiAh
bGluZXNCb3gubWF4WSgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgICAgICBwb2ludC5tb3ZlQnkobGluZXNCb3gubWF4WE1heFlDb3JuZXIoKSk7Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJC
b3gobyk7Ci0gICAgICAgICAgICAgICAgcG9pbnQubW92ZUJ5KGJveC0+ZnJhbWVSZWN0KCkubWF4
WE1heFlDb3JuZXIoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb2ludCA9IG8tPmNv
bnRhaW5lcigpLT5sb2NhbFRvQWJzb2x1dGUocG9pbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1MYXlvdXRSZWN0IENvbnRhaW5lck5vZGU6OmdldFJlY3QoKSBjb25zdAotewotICAgIEZsb2F0
UG9pbnQgIHVwcGVyTGVmdCwgbG93ZXJSaWdodDsKLSAgICBib29sIGZvdW5kVXBwZXJMZWZ0ID0g
Z2V0VXBwZXJMZWZ0Q29ybmVyKHVwcGVyTGVmdCk7Ci0gICAgYm9vbCBmb3VuZExvd2VyUmlnaHQg
PSBnZXRMb3dlclJpZ2h0Q29ybmVyKGxvd2VyUmlnaHQpOwotICAgIAotICAgIC8vIElmIHdlJ3Zl
IGZvdW5kIG9uZSBjb3JuZXIsIGJ1dCBub3QgdGhlIG90aGVyLAotICAgIC8vIHRoZW4gd2Ugc2hv
dWxkIGp1c3QgcmV0dXJuIGEgcG9pbnQgYXQgdGhlIGNvcm5lciB0aGF0IHdlIGRpZCBmaW5kLgot
ICAgIGlmIChmb3VuZFVwcGVyTGVmdCAhPSBmb3VuZExvd2VyUmlnaHQpIHsKLSAgICAgICAgaWYg
KGZvdW5kVXBwZXJMZWZ0KQotICAgICAgICAgICAgbG93ZXJSaWdodCA9IHVwcGVyTGVmdDsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgdXBwZXJMZWZ0ID0gbG93ZXJSaWdodDsKLSAgICB9IAot
Ci0gICAgcmV0dXJuIGVuY2xvc2luZ0xheW91dFJlY3QoRmxvYXRSZWN0KHVwcGVyTGVmdCwgbG93
ZXJSaWdodC5leHBhbmRlZFRvKHVwcGVyTGVmdCkgLSB1cHBlckxlZnQpKTsKLX0KLQogdm9pZCBD
b250YWluZXJOb2RlOjpzZXRGb2N1cyhib29sIHJlY2VpdmVkKQogewogICAgIGlmIChmb2N1c2Vk
KCkgPT0gcmVjZWl2ZWQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgJKHJldmlz
aW9uIDEyNjE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc1LDcgKzc1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGF0
dGFjaCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIExheW91dFJlY3QgZ2V0UmVjdCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRGb2N1cyhib29sID0gdHJ1ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHNldEFjdGl2ZShib29sIGFjdGl2ZSA9IHRydWUsIGJvb2wgcGF1c2UgPSBmYWxzZSkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHNldEhvdmVyZWQoYm9vbCA9IHRydWUpIE9WRVJSSURFOwpA
QCAtMTMzLDkgKzEzMiw2IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFBv
c3RBdHRhY2hDYWxsYmFja3MoKTsKIAotICAgIGJvb2wgZ2V0VXBwZXJMZWZ0Q29ybmVyKEZsb2F0
UG9pbnQmKSBjb25zdDsKLSAgICBib29sIGdldExvd2VyUmlnaHRDb3JuZXIoRmxvYXRQb2ludCYp
IGNvbnN0OwotCiAgICAgTm9kZSogbV9maXJzdENoaWxkOwogICAgIE5vZGUqIG1fbGFzdENoaWxk
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDEyNjE4MykKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDcgKzI4
OSw3IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoYm9vbCBhbGlnblQKICAgICBpZiAo
IXJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExheW91dFJlY3QgYm91bmRzID0g
Z2V0UmVjdCgpOworICAgIExheW91dFJlY3QgYm91bmRzID0gYm91bmRpbmdCb3hSZWN0KCk7CiAg
ICAgLy8gQWxpZ24gdG8gdGhlIHRvcCAvIGJvdHRvbSBhbmQgdG8gdGhlIGNsb3Nlc3QgZWRnZS4K
ICAgICBpZiAoYWxpZ25Ub1RvcCkKICAgICAgICAgcmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlz
aWJsZShib3VuZHMsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xs
QWxpZ25tZW50OjphbGlnblRvcEFsd2F5cyk7CkBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBFbGVt
ZW50OjpzY3JvbGxJbnRvVmlld0lmTmVlZGVkKGJvbwogICAgIGlmICghcmVuZGVyZXIoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgTGF5b3V0UmVjdCBib3VuZHMgPSBnZXRSZWN0KCk7CisgICAg
TGF5b3V0UmVjdCBib3VuZHMgPSBib3VuZGluZ0JveFJlY3QoKTsKICAgICBpZiAoY2VudGVySWZO
ZWVkZWQpCiAgICAgICAgIHJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoYm91bmRzLCBT
Y3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxp
Z25DZW50ZXJJZk5lZWRlZCk7CiAgICAgZWxzZQpAQCAtMTYxNyw3ICsxNjE3LDcgQEAgdm9pZCBF
bGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbAogICAgICAgICAgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5yZXZlYWxTZWxlY3Rpb24oKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAo
cmVuZGVyZXIoKSAmJiAhcmVuZGVyZXIoKS0+aXNXaWRnZXQoKSkKLSAgICAgICAgcmVuZGVyZXIo
KS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShnZXRSZWN0KCkpOworICAgICAgICByZW5kZXJlcigpLT5z
Y3JvbGxSZWN0VG9WaXNpYmxlKGJvdW5kaW5nQm94UmVjdCgpKTsKIH0KIAogdm9pZCBFbGVtZW50
OjpibHVyKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDEyNjE4MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk1LDcgKzc5NSw3IEBA
IFJlbmRlckJveE1vZGVsT2JqZWN0KiBOb2RlOjpyZW5kZXJCb3hNb2QKICAgICByZXR1cm4gbV9y
ZW5kZXJlciAmJiBtX3JlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkgPyB0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KG1fcmVuZGVyZXIpIDogMDsKIH0KIAotTGF5b3V0UmVjdCBOb2RlOjpnZXRSZWN0
KCkgY29uc3QKK0xheW91dFJlY3QgTm9kZTo6Ym91bmRpbmdCb3hSZWN0KCkgY29uc3QKIHsKICAg
ICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCktPmFic29sdXRlQm91
bmRpbmdCb3hSZWN0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDEyNjE4MykKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwMSw4ICs0MDEsOCBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUlucHV0TWV0aG9k
KCk7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGdldFJlY3QoKSBjb25zdDsKLSAgICBJbnRSZWN0
IGdldFBpeGVsU25hcHBlZFJlY3QoKSBjb25zdCB7IHJldHVybiBwaXhlbFNuYXBwZWRJbnRSZWN0
KGdldFJlY3QoKSk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0KCkg
Y29uc3Q7CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QoKSBjb25zdCB7
IHJldHVybiBwaXhlbFNuYXBwZWRJbnRSZWN0KGJvdW5kaW5nQm94UmVjdCgpKTsgfQogICAgIExh
eW91dFJlY3QgcmVuZGVyUmVjdChib29sKiBpc1JlcGxhY2VkKTsKICAgICBJbnRSZWN0IHBpeGVs
U25hcHBlZFJlbmRlclJlY3QoYm9vbCogaXNSZXBsYWNlZCkgeyByZXR1cm4gcGl4ZWxTbmFwcGVk
SW50UmVjdChyZW5kZXJSZWN0KGlzUmVwbGFjZWQpKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0NvbG9ySW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMTI2MTgzKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw3ICsyMDgs
NyBAQCBIVE1MRWxlbWVudCogQ29sb3JJbnB1dFR5cGU6OnNoYWRvd0NvbG9yCiAKIEludFJlY3Qg
Q29sb3JJbnB1dFR5cGU6OmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gZWxlbWVudCgpLT5kb2N1bWVudCgpLT52aWV3KCktPmNvbnRlbnRzVG9Sb290
VmlldyhlbGVtZW50KCktPmdldFBpeGVsU25hcHBlZFJlY3QoKSk7CisgICAgcmV0dXJuIGVsZW1l
bnQoKS0+ZG9jdW1lbnQoKS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoZWxlbWVudCgpLT5w
aXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QoKSk7CiB9CiAKIENvbG9yIENvbG9ySW5wdXRUeXBl
OjpjdXJyZW50Q29sb3IoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVz
c2FnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVz
c2FnZS5jcHAJKHJldmlzaW9uIDEyNjE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRh
dGlvbk1lc3NhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBW
YWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKAogICAgIHNoYWRvd1Jvb3QtPmFwcGVu
ZENoaWxkKG1fYnViYmxlLmdldCgpLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CiAgICAgaG9zdC0+
ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgYWRqdXN0QnViYmxlUG9zaXRpb24oaG9z
dC0+Z2V0UmVjdCgpLCBtX2J1YmJsZS5nZXQoKSk7CisgICAgYWRqdXN0QnViYmxlUG9zaXRpb24o
aG9zdC0+Ym91bmRpbmdCb3hSZWN0KCksIG1fYnViYmxlLmdldCgpKTsKIAogICAgIFJlZlB0cjxI
VE1MRGl2RWxlbWVudD4gY2xpcHBlciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKICAg
ICBjbGlwcGVyLT5zZXRTaGFkb3dQc2V1ZG9JZCgiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1h
cnJvdy1jbGlwcGVyIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRh
clBpY2tlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAJKHJldmlzaW9uIDEyNjE4MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6b3Bl
blBvcHVwKCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghZG9jdW1lbnQoKS0+dmlldygpKQog
ICAgICAgICByZXR1cm47Ci0gICAgSW50UmVjdCBlbGVtZW50UmVjdEluUm9vdFZpZXcgPSBkb2N1
bWVudCgpLT52aWV3KCktPmNvbnRlbnRzVG9Sb290Vmlldyhob3N0SW5wdXQoKS0+Z2V0UGl4ZWxT
bmFwcGVkUmVjdCgpKTsKKyAgICBJbnRSZWN0IGVsZW1lbnRSZWN0SW5Sb290VmlldyA9IGRvY3Vt
ZW50KCktPnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGhvc3RJbnB1dCgpLT5waXhlbFNuYXBw
ZWRCb3VuZGluZ0JveFJlY3QoKSk7CiAgICAgbV9wb3B1cCA9IGNocm9tZS0+Y2xpZW50KCktPm9w
ZW5QYWdlUG9wdXAodGhpcywgZWxlbWVudFJlY3RJblJvb3RWaWV3KTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCShyZXZpc2lvbiAxMjYxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjQsNyAr
NDI0LDcgQEAgdm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c3RhcgogICAgIFJl
ZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1l
bnQqPihzaGFkb3dIb3N0KCkpOwogICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSA9IGlucHV0LT5j
b21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKTsKICAgICBTdHJpbmcgZ3JhbW1hciA9IGlucHV0LT5n
ZXRBdHRyaWJ1dGUod2Via2l0Z3JhbW1hckF0dHIpOwotICAgIEludFJlY3QgcmVjdCA9IGRvY3Vt
ZW50KCktPnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGdldFBpeGVsU25hcHBlZFJlY3QoKSk7
CisgICAgSW50UmVjdCByZWN0ID0gZG9jdW1lbnQoKS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZp
ZXcocGl4ZWxTbmFwcGVkQm91bmRpbmdCb3hSZWN0KCkpOwogICAgIGlmIChzcGVlY2hJbnB1dCgp
LT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCwgcmVjdCwgbGFuZ3VhZ2UsIGdyYW1tYXIs
IGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICBzZXRTdGF0ZShSZWNvcmRp
bmcpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTI2MTgz
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjg2LDcgKzE2ODYsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsRWxlbWVudFRvUmVjdChF
bGVtCiB7CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKCk7CiAKLSAgICBMYXlvdXRSZWN0IGJvdW5kcyA9IGVsZW1lbnQtPmdldFJl
Y3QoKTsKKyAgICBMYXlvdXRSZWN0IGJvdW5kcyA9IGVsZW1lbnQtPmJvdW5kaW5nQm94UmVjdCgp
OwogICAgIGludCBjZW50ZXJpbmdPZmZzZXRYID0gKHJlY3Qud2lkdGgoKSAtIGJvdW5kcy53aWR0
aCgpKSAvIDI7CiAgICAgaW50IGNlbnRlcmluZ09mZnNldFkgPSAocmVjdC5oZWlnaHQoKSAtIGJv
dW5kcy5oZWlnaHQoKSkgLyAyOwogICAgIHNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KGJvdW5k
cy54KCkgLSBjZW50ZXJpbmdPZmZzZXRYIC0gcmVjdC54KCksIGJvdW5kcy55KCkgLSBjZW50ZXJp
bmdPZmZzZXRZIC0gcmVjdC55KCkpKTsKQEAgLTIyNjMsNyArMjI2Myw3IEBAIHZvaWQgRnJhbWVW
aWV3OjpzY3JvbGxUb0FuY2hvcigpCiAKICAgICBMYXlvdXRSZWN0IHJlY3Q7CiAgICAgaWYgKGFu
Y2hvck5vZGUgIT0gbV9mcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgcmVjdCA9IGFuY2hvck5v
ZGUtPmdldFJlY3QoKTsKKyAgICAgICAgcmVjdCA9IGFuY2hvck5vZGUtPmJvdW5kaW5nQm94UmVj
dCgpOwogCiAgICAgLy8gU2Nyb2xsIG5lc3RlZCBsYXllcnMgYW5kIGZyYW1lcyB0byByZXZlYWwg
dGhlIGFuY2hvci4KICAgICAvLyBBbGlnbiB0byB0aGUgdG9wIGFuZCB0byB0aGUgY2xvc2VzdCBz
aWRlICh0aGlzIG1hdGNoZXMgb3RoZXIgYnJvd3NlcnMpLgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAJKHJldmlzaW9uIDEyNjE4MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjIs
NyArNTIyLDcgQEAgTGF5b3V0UmVjdCBub2RlUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcwogCiAg
ICAgaWYgKG5vZGUtPmlzRG9jdW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybiBmcmFtZVJlY3RJ
bkFic29sdXRlQ29vcmRpbmF0ZXMoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihub2RlKS0+ZnJhbWUo
KSk7Ci0gICAgTGF5b3V0UmVjdCByZWN0ID0gcmVjdFRvQWJzb2x1dGVDb29yZGluYXRlcyhub2Rl
LT5kb2N1bWVudCgpLT5mcmFtZSgpLCBub2RlLT5nZXRSZWN0KCkpOworICAgIExheW91dFJlY3Qg
cmVjdCA9IHJlY3RUb0Fic29sdXRlQ29vcmRpbmF0ZXMobm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUo
KSwgbm9kZS0+Ym91bmRpbmdCb3hSZWN0KCkpOwogCiAgICAgLy8gRm9yIGF1dGhvcnMgdGhhdCB1
c2UgYm9yZGVyIGluc3RlYWQgb2Ygb3V0bGluZSBpbiB0aGVpciBDU1MsIHdlIGNvbXBlbnNhdGUg
YnkgaWdub3JpbmcgdGhlIGJvcmRlciB3aGVuIGNhbGN1bGF0aW5nCiAgICAgLy8gdGhlIHJlY3Qg
b2YgdGhlIGZvY3VzZWQgZWxlbWVudC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMjYxODMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA4LTIxICBFbWlsIEEgRWtsdW5kICA8
ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgTm9kZTo6Z2V0UmVjdC9nZXRQaXhl
bFNuYXBwZWRSZWN0IGFuZCByZW1vdmUgQ29udGFpbmVyTm9kZTo6Z2V0UmVjdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0MTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgV2ViVmlld0ltcGwg
dG8gY2FsbCBib3VuZGluZ0JveFJlY3QvcGl4ZWxTbmFwcGVkQm91bmRpbmdCb3hSZWN0LgorCisg
ICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OmNvbXB1dGVCbG9ja0JvdW5kcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjph
cHBseUF1dG9maWxsU3VnZ2VzdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
cmVmcmVzaEF1dG9maWxsUG9wdXApOgorCiAyMDEyLTA4LTIxICBKYW1lcyBSb2JpbnNvbiAgPGph
bWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEy
NjE3MC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJ
KHJldmlzaW9uIDEyNjE4MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk3LDcgKzk5Nyw3IEBAIFdlYlJlY3QgV2ViVmll
d0ltcGw6OmNvbXB1dGVCbG9ja0JvdW5kcygKIAogICAgIC8vIFJldHVybiB0aGUgYm91bmRpbmcg
Ym94IGluIHRoZSB3aW5kb3cgY29vcmRpbmF0ZSBzeXN0ZW0uCiAgICAgaWYgKG5vZGUpIHsKLSAg
ICAgICAgSW50UmVjdCByZWN0ID0gbm9kZS0+Tm9kZTo6Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpOwor
ICAgICAgICBJbnRSZWN0IHJlY3QgPSBub2RlLT5Ob2RlOjpwaXhlbFNuYXBwZWRCb3VuZGluZ0Jv
eFJlY3QoKTsKICAgICAgICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUo
KTsKICAgICAgICAgcmV0dXJuIGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocmVjdCk7
CiAgICAgfQpAQCAtMzE2MSw3ICszMTYxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6YXBwbHlBdXRv
ZmlsbFN1Z2dlc3RpbwogICAgICAgICByZWZyZXNoQXV0b2ZpbGxQb3B1cCgpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIG1fYXV0b2ZpbGxQb3B1cFNob3dpbmcgPSB0cnVlOwotICAgICAgICBtX2F1
dG9maWxsUG9wdXAtPnNob3dJblJlY3QoZm9jdXNlZE5vZGUtPmdldFBpeGVsU25hcHBlZFJlY3Qo
KSwgZm9jdXNlZE5vZGUtPm93bmVyRG9jdW1lbnQoKS0+dmlldygpLCAwKTsKKyAgICAgICAgbV9h
dXRvZmlsbFBvcHVwLT5zaG93SW5SZWN0KGZvY3VzZWROb2RlLT5waXhlbFNuYXBwZWRCb3VuZGlu
Z0JveFJlY3QoKSwgZm9jdXNlZE5vZGUtPm93bmVyRG9jdW1lbnQoKS0+dmlldygpLCAwKTsKICAg
ICB9CiB9CiAKQEAgLTM0NjcsNyArMzQ2Nyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlZnJlc2hB
dXRvZmlsbFBvcHVwKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFdlYlJlY3QgbmV3
V2lkZ2V0UmVjdCA9IG1fYXV0b2ZpbGxQb3B1cC0+cmVmcmVzaChmb2N1c2VkV2ViQ29yZU5vZGUo
KS0+Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpKTsKKyAgICBXZWJSZWN0IG5ld1dpZGdldFJlY3QgPSBt
X2F1dG9maWxsUG9wdXAtPnJlZnJlc2goZm9jdXNlZFdlYkNvcmVOb2RlKCktPnBpeGVsU25hcHBl
ZEJvdW5kaW5nQm94UmVjdCgpKTsKICAgICAvLyBMZXQncyByZXNpemUgdGhlIGJhY2tpbmcgd2lu
ZG93IGlmIG5lY2Vzc2FyeS4KICAgICBXZWJQb3B1cE1lbnVJbXBsKiBwb3B1cE1lbnUgPSBzdGF0
aWNfY2FzdDxXZWJQb3B1cE1lbnVJbXBsKj4obV9hdXRvZmlsbFBvcHVwLT5jbGllbnQoKSk7CiAg
ICAgaWYgKHBvcHVwTWVudSAmJiBwb3B1cE1lbnUtPmNsaWVudCgpLT53aW5kb3dSZWN0KCkgIT0g
bmV3V2lkZ2V0UmVjdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNjE4MykKKysr
IFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDEyLTA4LTIxICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZW5hbWUgTm9kZTo6Z2V0UmVjdC9nZXRQaXhlbFNuYXBwZWRSZWN0IGFuZCByZW1vdmUg
Q29udGFpbmVyTm9kZTo6Z2V0UmVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODE0MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGUgZXdrX2ZyYW1lIHRvIGNhbGwgcGl4ZWxTbmFwcGVkQm91bmRp
bmdCb3hSZWN0LgorCisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAgICAgIChld2tf
ZnJhbWVfZm9jdXNlZF9lbGVtZW50X2dlb21ldHJ5X2dldCk6CisKIDIwMTItMDgtMjAgIFRoaWFn
byBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+CiAKICAgICAgICAg
UmVncmVzc2lvbihyMTI0OTQ1KTogQnVpbGQgaXMgYnJva2VuIHdoZW4gdG91Y2ggZXZlbnRzIGlz
IGRpc2FibGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAkocmV2aXNpb24g
MTI2MTgzKQorKysgU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg5Nyw3ICs4OTcsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZvY3VzZWRfZWxl
bWVudF9nZW9tCiAgICAgV2ViQ29yZTo6Tm9kZSogZm9jdXNlZE5vZGUgPSBkb2N1bWVudC0+Zm9j
dXNlZE5vZGUoKTsKICAgICBpZiAoIWZvY3VzZWROb2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBub2RlUmVjdCA9IGZvY3VzZWROb2RlLT5nZXRQaXhlbFNu
YXBwZWRSZWN0KCk7CisgICAgV2ViQ29yZTo6SW50UmVjdCBub2RlUmVjdCA9IGZvY3VzZWROb2Rl
LT5waXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3QoKTsKICAgICBpZiAoeCkKICAgICAgICAgKngg
PSBub2RlUmVjdC54KCk7CiAgICAgaWYgKHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMjYxODMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOC0yMSAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIE5vZGU6OmdldFJlY3QvZ2V0UGl4ZWxTbmFwcGVkUmVj
dCBhbmQgcmVtb3ZlIENvbnRhaW5lck5vZGU6OmdldFJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIENocm9tZUNsaWVudEd0ayBhbmQgd2Vi
a2l0d2VidmlldyB0byBjYWxsIHBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdC4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIHdlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKGdldExvY2F0aW9uRm9yS2V5Ym9hcmRHZW5l
cmF0ZWRDb250ZXh0TWVudSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcXVlcnlfdG9vbHRp
cCk6CisKIDIwMTItMDgtMjEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIFVzaW5nIGEgbmF0aXZlIHdpbmRvdyBmb3IgdGhlIFdlYlZpZXcg
YnJlYWtzIEd0a092ZXJsYXkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gMTI2MTgzKQorKysgU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzg2LDcgKzc4Niw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojptb3VzZURpZE1v
dmVPdmVyRWxlbWUKICAgICBpZiAoTm9kZSogbm9kZSA9IGhpdC5pbm5lck5vblNoYXJlZE5vZGUo
KSkgewogICAgICAgICBGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOwog
ICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZSA/IGZyYW1lLT52aWV3KCkgOiAwOwotICAg
ICAgICBtX3dlYlZpZXctPnByaXYtPnRvb2x0aXBBcmVhID0gdmlldyA/IHZpZXctPmNvbnRlbnRz
VG9XaW5kb3cobm9kZS0+Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpKSA6IEludFJlY3QoKTsKKyAgICAg
ICAgbV93ZWJWaWV3LT5wcml2LT50b29sdGlwQXJlYSA9IHZpZXcgPyB2aWV3LT5jb250ZW50c1Rv
V2luZG93KG5vZGUtPnBpeGVsU25hcHBlZEJvdW5kaW5nQm94UmVjdCgpKSA6IEludFJlY3QoKTsK
ICAgICB9IGVsc2UKICAgICAgICAgbV93ZWJWaWV3LT5wcml2LT50b29sdGlwQXJlYSA9IEludFJl
Y3QoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAJKHJldmlzaW9uIDEyNjE4MykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI3LDcgKzQyNyw3IEBAIHN0YXRpYyBJbnRQ
b2ludCBnZXRMb2NhdGlvbkZvcktleWJvYXJkR2UKICAgICBpZiAoIXNlbGVjdGlvbi0+c2VsZWN0
aW9uKCkuaXNOb25PcnBoYW5lZENhcmV0T3JSYW5nZSgpCiAgICAgICAgICB8fCAoc2VsZWN0aW9u
LT5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgIXNlbGVjdGlvbi0+c2VsZWN0aW9uKCkuaXNDb250
ZW50RWRpdGFibGUoKSkpIHsKICAgICAgICAgaWYgKE5vZGUqIGZvY3VzZWROb2RlID0gZ2V0Rm9j
dXNlZE5vZGUoZnJhbWUpKQotICAgICAgICAgICAgcmV0dXJuIGZvY3VzZWROb2RlLT5nZXRQaXhl
bFNuYXBwZWRSZWN0KCkubG9jYXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiBmb2N1c2VkTm9k
ZS0+cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3hSZWN0KCkubG9jYXRpb24oKTsKIAogICAgICAgICAv
LyBUaGVyZSB3YXMgbm8gc2VsZWN0aW9uIGFuZCBubyBmb2N1c2VkIG5vZGUsIHNvIGp1c3QgcHV0
IHRoZSBjb250ZXh0CiAgICAgICAgIC8vIG1lbnUgaW50byB0aGUgY29ybmVyIG9mIHRoZSB2aWV3
LCBvZmZzZXQgc2xpZ2h0bHkuCkBAIC0xNjA1LDcgKzE2MDUsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0X3dlYl92aWV3X3F1ZXJ5X3RvCiAgICAgICAgICAgICAgICAgU3RyaW5nIHRpdGxlID0g
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KHRpdGxlTm9kZSktPnRpdGxlKCk7CiAgICAgICAgICAgICAg
ICAgaWYgKCF0aXRsZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKEZyYW1l
VmlldyogdmlldyA9IGNvcmVGcmFtZS0+dmlldygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBHZGtSZWN0YW5nbGUgYXJlYSA9IHZpZXctPmNvbnRlbnRzVG9XaW5kb3cobm9kZS0+Z2V0UGl4
ZWxTbmFwcGVkUmVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSBh
cmVhID0gdmlldy0+Y29udGVudHNUb1dpbmRvdyhub2RlLT5waXhlbFNuYXBwZWRCb3VuZGluZ0Jv
eFJlY3QoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBndGtfdG9vbHRpcF9zZXRfdGlwX2Fy
ZWEodG9vbHRpcCwgJmFyZWEpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIGd0a190b29sdGlwX3NldF90ZXh0KHRvb2x0aXAsIHRpdGxlLnV0ZjgoKS5kYXRhKCkp
OwpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNjE4MykKKysrIFNvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDgtMjEg
IEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmFtZSBOb2Rl
OjpnZXRSZWN0L2dldFBpeGVsU25hcHBlZFJlY3QgYW5kIHJlbW92ZSBDb250YWluZXJOb2RlOjpn
ZXRSZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVw
ZGF0ZSBxd2ViZWxlbWVudCBhbmQgcXdlYnBhZ2UgdG8gY2FsbCBwaXhlbFNuYXBwZWRCb3VuZGlu
Z0JveFJlY3QuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdl
YkVsZW1lbnQ6Omdlb21ldHJ5KToKKyAgICAgICAgKFFXZWJFbGVtZW50OjpyZW5kZXIpOgorICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlRvdWNo
QWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKToKKwogMjAxMi0wOC0yMSAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjEyNjE0Ni4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJlbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxl
bWVudC5jcHAJKHJldmlzaW9uIDEyNjE4MykKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJl
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ1LDcgKzU0NSw3IEBAIFFSZWN0IFFXZWJF
bGVtZW50OjpnZW9tZXRyeSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAg
IHJldHVybiBRUmVjdCgpOwotICAgIHJldHVybiBtX2VsZW1lbnQtPmdldFBpeGVsU25hcHBlZFJl
Y3QoKTsKKyAgICByZXR1cm4gbV9lbGVtZW50LT5waXhlbFNuYXBwZWRCb3VuZGluZ0JveFJlY3Qo
KTsKIH0KIAogLyohCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCB2b2lkIFFXZWJFbGVtZW50OjpyZW5k
ZXIoUVBhaW50ZXIqIHBhaW50CiAKICAgICB2aWV3LT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVl
ZGVkUmVjdXJzaXZlKCk7CiAKLSAgICBJbnRSZWN0IHJlY3QgPSBlLT5nZXRQaXhlbFNuYXBwZWRS
ZWN0KCk7CisgICAgSW50UmVjdCByZWN0ID0gZS0+cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3hSZWN0
KCk7CiAKICAgICBpZiAocmVjdC5zaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lvbiAxMjYxODMpCisrKyBTb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1ODUsNyAr
MTU4NSw3IEBAIEludFBvaW50IFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3RlcjoKICAgICAg
ICAgaWYgKCFjdXJyZW50RWxlbWVudCB8fCAoIWlzQ2xpY2thYmxlRWxlbWVudChjdXJyZW50RWxl
bWVudCwgMCkgJiYgIWlzVmFsaWRGcmFtZU93bmVyKGN1cnJlbnRFbGVtZW50KSkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBJbnRSZWN0IGN1cnJlbnRFbGVtZW50Qm91bmRpbmdS
ZWN0ID0gY3VycmVudEVsZW1lbnQtPmdldFBpeGVsU25hcHBlZFJlY3QoKTsKKyAgICAgICAgSW50
UmVjdCBjdXJyZW50RWxlbWVudEJvdW5kaW5nUmVjdCA9IGN1cnJlbnRFbGVtZW50LT5waXhlbFNu
YXBwZWRCb3VuZGluZ0JveFJlY3QoKTsKICAgICAgICAgY3VycmVudEVsZW1lbnRCb3VuZGluZ1Jl
Y3QuaW50ZXJzZWN0KHRvdWNoUmVjdCk7CiAKICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50Qm91
bmRpbmdSZWN0LmlzRW1wdHkoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159775</attachid>
            <date>2012-08-21 15:09:11 -0700</date>
            <delta_ts>2012-08-21 17:51:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81413-20120821150910.patch</filename>
            <type>text/plain</type>
            <size>25464</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNjE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA4LTIxICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgTm9kZTo6Z2V0UmVj
dC9nZXRQaXhlbFNuYXBwZWRSZWN0IGFuZCByZW1vdmUgQ29udGFpbmVyTm9kZTo6Z2V0UmVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0MTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgTm9k
ZTo6Z2V0UmVjdCBhbmQgZ2V0UGl4ZWxTbmFwcGVkUmVjdCB0byBib3VuZGluZ0JveCBhbmQKKyAg
ICAgICAgcGl4ZWxTbmFwcGVkQm91bmRpbmdCb3ggcmVzcGVjdGl2ZWx5LgorCisgICAgICAgIFJl
bW92ZSBvdmVycmlkZGVuIGdldFJlY3QgbWV0aG9kIGZyb20gQ29udGFpbmVyTm9kZSBhcyBpdCBj
YWxjdWxhdGVzIHRoZQorICAgICAgICBzYW1lIHJlY3QgYXMgdGhlIE5vZGUgaW1wbGVtZW50YXRp
b24gYnV0IGluIGEgbW9yZSBjb21wbGljYXRlZCBhbmQKKyAgICAgICAgZXJyb3ItcHJvbmUgd2F5
LiBBbHNvIHJlbW92ZSB0aGUgZ2V0VXBwZXJMZWZ0Q29ybmVyL2dldExvd2VyUmlnaHRDb3JuZXIK
KyAgICAgICAgc3VwcG9ydCBmdW5jdGlvbnMgYXMgdGhleSBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6ZWxlbWVudFJlY3QpOgorICAgICAg
ICBVcGRhdGUgdG8gY2FsbCBib3VuZGluZ0JveC4KKworICAgICAgICAqIGRvbS9Db250YWluZXJO
b2RlLmNwcDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICBSZW1vdmUg
b3ZlcnJpZGRlbiBnZXRSZWN0IG1ldGhvZCBhbmQgdGhlIGdldFVwcGVyTGVmdENvcm5lci8KKyAg
ICAgICAgZ2V0TG93ZXJSaWdodENvcm5lciBzdXBwb3J0IG1ldGhvZHMgLgorCisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsSW50b1Zp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UpOgorICAg
ICAgICBVcGRhdGUgdG8gY2FsbCBib3VuZGluZ0JveC4KKyAgICAgICAgCisgICAgICAgICogZG9t
L05vZGUuaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
Ojpib3VuZGluZ0JveCk6CisgICAgICAgIFJlbmFtZSBnZXRSZWN0IHRvIGJvdW5kaW5nQm94Lgor
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwaXhlbFNuYXBwZWRCb3VuZGluZ0JveCk6CisgICAg
ICAgIFJlbmFtZSBnZXRQaXhlbFNuYXBwZWRSZWN0IHRvIHBpeGVsU25hcHBlZEJvdW5kaW5nQm94
LgorICAgICAgICAKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjplbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290Vmlldyk6
CisgICAgICAgICogaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FsZW5k
YXJQaWNrZXJFbGVtZW50OjpvcGVuUG9wdXApOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3Bl
ZWNoQnV0dG9uRWxlbWVudDo6c3RhcnRTcGVlY2hJbnB1dCk6CisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxFbGVtZW50VG9S
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IpOgorICAg
ICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9k
ZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMpOgorICAgICAgICBVcGRhdGUgdG8gY2FsbCBib3Vu
ZGluZ0JveC9waXhlbFNuYXBwZWRCb3VuZGluZ0JveC4KKwogMjAxMi0wOC0yMSAgQmVuamFtaW4g
UG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9yZSBDU3RyaW5nIGRh
dGEgaW4gdGhlIENTdHJpbmdCdWZmZXIgdG8gYXZvaWQgdGhlIGRvdWJsZSBpbmRpcmVjdGlvbgpJ
bmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTbGlkZXIuY3BwCShyZXZpc2lvbiAxMjYxOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNyAr
MTc3LDcgQEAgTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmVsZQogICAgIFJl
bmRlck9iamVjdCogc2xpZGVyUmVuZGVyZXIgPSBtX3BhcmVudC0+cmVuZGVyZXIoKTsKICAgICBp
ZiAoIXNsaWRlclJlbmRlcmVyIHx8ICFzbGlkZXJSZW5kZXJlci0+aXNTbGlkZXIoKSkKICAgICAg
ICAgcmV0dXJuIExheW91dFJlY3QoKTsKLSAgICByZXR1cm4gc2xpZGVyVGh1bWJFbGVtZW50T2Yo
c2xpZGVyUmVuZGVyZXItPm5vZGUoKSktPmdldFJlY3QoKTsKKyAgICByZXR1cm4gc2xpZGVyVGh1
bWJFbGVtZW50T2Yoc2xpZGVyUmVuZGVyZXItPm5vZGUoKSktPmJvdW5kaW5nQm94KCk7CiB9CiAK
IGJvb2wgQWNjZXNzaWJpbGl0eVNsaWRlclRodW1iOjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9uIDEy
NjE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzA5LDEzNSArNzA5LDYgQEAgdm9pZCBDb250YWluZXJOb2RlOjpjbG9uZUNoaWxk
Tm9kZXMoQ29udAogICAgIH0KIH0KIAotYm9vbCBDb250YWluZXJOb2RlOjpnZXRVcHBlckxlZnRD
b3JuZXIoRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Ci17Ci0gICAgaWYgKCFyZW5kZXJlcigpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy8gV2hhdCBpcyB0aGlzIGNvZGUgcmVhbGx5IHRy
eWluZyB0byBkbz8KLSAgICBSZW5kZXJPYmplY3QgKm8gPSByZW5kZXJlcigpOwotICAgIFJlbmRl
ck9iamVjdCAqcCA9IG87Ci0KLSAgICBpZiAoIW8tPmlzSW5saW5lKCkgfHwgby0+aXNSZXBsYWNl
ZCgpKSB7Ci0gICAgICAgIHBvaW50ID0gby0+bG9jYWxUb0Fic29sdXRlKEZsb2F0UG9pbnQoKSwg
ZmFsc2UsIHRydWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBmaW5k
IHRoZSBuZXh0IHRleHQvaW1hZ2UgY2hpbGQsIHRvIGdldCBhIHBvc2l0aW9uCi0gICAgd2hpbGUg
KG8pIHsKLSAgICAgICAgcCA9IG87Ci0gICAgICAgIGlmIChvLT5maXJzdENoaWxkKCkpCi0gICAg
ICAgICAgICBvID0gby0+Zmlyc3RDaGlsZCgpOwotICAgICAgICBlbHNlIGlmIChvLT5uZXh0U2li
bGluZygpKQotICAgICAgICAgICAgbyA9IG8tPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgUmVuZGVyT2JqZWN0ICpuZXh0ID0gMDsKLSAgICAgICAgICAgIHdoaWxl
ICghbmV4dCAmJiBvLT5wYXJlbnQoKSkgewotICAgICAgICAgICAgICAgIG8gPSBvLT5wYXJlbnQo
KTsKLSAgICAgICAgICAgICAgICBuZXh0ID0gby0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG8gPSBuZXh0OwotCi0gICAgICAgICAgICBpZiAoIW8pCi0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG8pOwotCi0gICAgICAg
IGlmICghby0+aXNJbmxpbmUoKSB8fCBvLT5pc1JlcGxhY2VkKCkpIHsKLSAgICAgICAgICAgIHBv
aW50ID0gby0+bG9jYWxUb0Fic29sdXRlKEZsb2F0UG9pbnQoKSwgZmFsc2UsIHRydWUpOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocC0+bm9kZSgp
ICYmIHAtPm5vZGUoKSA9PSB0aGlzICYmIG8tPmlzVGV4dCgpICYmICFvLT5pc0JSKCkgJiYgIXRv
UmVuZGVyVGV4dChvKS0+Zmlyc3RUZXh0Qm94KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBkbyBu
b3RoaW5nIC0gc2tpcCB1bnJlbmRlcmVkIHdoaXRlc3BhY2UgdGhhdCBpcyBhIGNoaWxkIG9yIG5l
eHQgc2libGluZyBvZiB0aGUgYW5jaG9yCi0gICAgICAgIH0gZWxzZSBpZiAoKG8tPmlzVGV4dCgp
ICYmICFvLT5pc0JSKCkpIHx8IG8tPmlzUmVwbGFjZWQoKSkgewotICAgICAgICAgICAgcG9pbnQg
PSBGbG9hdFBvaW50KCk7Ci0gICAgICAgICAgICBpZiAoby0+aXNUZXh0KCkgJiYgdG9SZW5kZXJU
ZXh0KG8pLT5maXJzdFRleHRCb3goKSkgewotICAgICAgICAgICAgICAgIHBvaW50Lm1vdmUodG9S
ZW5kZXJUZXh0KG8pLT5saW5lc0JvdW5kaW5nQm94KCkueCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdG9SZW5kZXJUZXh0KG8pLT5maXJzdFRleHRCb3goKS0+cm9vdCgpLT5saW5lVG9w
KCkpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChvLT5pc0JveCgpKSB7Ci0gICAgICAgICAgICAg
ICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJveChvKTsKLSAgICAgICAgICAgICAgICBwb2lu
dC5tb3ZlQnkoYm94LT5sb2NhdGlvbigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBv
aW50ID0gby0+Y29udGFpbmVyKCktPmxvY2FsVG9BYnNvbHV0ZShwb2ludCwgZmFsc2UsIHRydWUp
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAg
Ly8gSWYgdGhlIHRhcmdldCBkb2Vzbid0IGhhdmUgYW55IGNoaWxkcmVuIG9yIHNpYmxpbmdzIHRo
YXQgY291bGQgYmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNjcm9sbCBwb3NpdGlvbiwgd2UgbXVz
dCBiZQotICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50LiAgU2Nyb2xsIHRvIHRoZSBi
b3R0b20uIEZJWE1FOiB3aG8gc2FpZCBhbnl0aGluZyBhYm91dCBzY3JvbGxpbmc/Ci0gICAgaWYg
KCFvICYmIGRvY3VtZW50KCktPnZpZXcoKSkgewotICAgICAgICBwb2ludCA9IEZsb2F0UG9pbnQo
MCwgZG9jdW1lbnQoKS0+dmlldygpLT5jb250ZW50c0hlaWdodCgpKTsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBDb250YWluZXJOb2Rl
OjpnZXRMb3dlclJpZ2h0Q29ybmVyKEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAotewotICAgIGlm
ICghcmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVuZGVyT2JqZWN0
KiBvID0gcmVuZGVyZXIoKTsKLSAgICBpZiAoIW8tPmlzSW5saW5lKCkgfHwgby0+aXNSZXBsYWNl
ZCgpKSB7Ci0gICAgICAgIFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3gobyk7Ci0gICAgICAg
IHBvaW50ID0gby0+bG9jYWxUb0Fic29sdXRlKExheW91dFBvaW50KGJveC0+c2l6ZSgpKSwgZmFs
c2UsIHRydWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBmaW5kIHRo
ZSBsYXN0IHRleHQvaW1hZ2UgY2hpbGQsIHRvIGdldCBhIHBvc2l0aW9uCi0gICAgd2hpbGUgKG8p
IHsKLSAgICAgICAgaWYgKG8tPmxhc3RDaGlsZCgpKQotICAgICAgICAgICAgbyA9IG8tPmxhc3RD
aGlsZCgpOwotICAgICAgICBlbHNlIGlmIChvLT5wcmV2aW91c1NpYmxpbmcoKSkKLSAgICAgICAg
ICAgIG8gPSBvLT5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBSZW5kZXJPYmplY3QqIHByZXYgPSAwOwotICAgICAgICAgICAgd2hpbGUgKCFwcmV2KSB7Ci0g
ICAgICAgICAgICAgICAgbyA9IG8tPnBhcmVudCgpOwotICAgICAgICAgICAgICAgIGlmICghbykK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIHByZXYg
PSBvLT5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG8gPSBw
cmV2OwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChvKTsKLSAgICAgICAgaWYgKG8tPmlzVGV4
dCgpIHx8IG8tPmlzUmVwbGFjZWQoKSkgewotICAgICAgICAgICAgcG9pbnQgPSBGbG9hdFBvaW50
KCk7Ci0gICAgICAgICAgICBpZiAoby0+aXNUZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBSZW5k
ZXJUZXh0KiB0ZXh0ID0gdG9SZW5kZXJUZXh0KG8pOwotICAgICAgICAgICAgICAgIEludFJlY3Qg
bGluZXNCb3ggPSB0ZXh0LT5saW5lc0JvdW5kaW5nQm94KCk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFsaW5lc0JveC5tYXhYKCkgJiYgIWxpbmVzQm94Lm1heFkoKSkKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgcG9pbnQubW92ZUJ5KGxpbmVzQm94Lm1heFhN
YXhZQ29ybmVyKCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBSZW5k
ZXJCb3gqIGJveCA9IHRvUmVuZGVyQm94KG8pOwotICAgICAgICAgICAgICAgIHBvaW50Lm1vdmVC
eShib3gtPmZyYW1lUmVjdCgpLm1heFhNYXhZQ29ybmVyKCkpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgcG9pbnQgPSBvLT5jb250YWluZXIoKS0+bG9jYWxUb0Fic29sdXRlKHBvaW50LCBm
YWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotTGF5b3V0UmVjdCBDb250YWluZXJOb2RlOjpnZXRSZWN0
KCkgY29uc3QKLXsKLSAgICBGbG9hdFBvaW50ICB1cHBlckxlZnQsIGxvd2VyUmlnaHQ7Ci0gICAg
Ym9vbCBmb3VuZFVwcGVyTGVmdCA9IGdldFVwcGVyTGVmdENvcm5lcih1cHBlckxlZnQpOwotICAg
IGJvb2wgZm91bmRMb3dlclJpZ2h0ID0gZ2V0TG93ZXJSaWdodENvcm5lcihsb3dlclJpZ2h0KTsK
LSAgICAKLSAgICAvLyBJZiB3ZSd2ZSBmb3VuZCBvbmUgY29ybmVyLCBidXQgbm90IHRoZSBvdGhl
ciwKLSAgICAvLyB0aGVuIHdlIHNob3VsZCBqdXN0IHJldHVybiBhIHBvaW50IGF0IHRoZSBjb3Ju
ZXIgdGhhdCB3ZSBkaWQgZmluZC4KLSAgICBpZiAoZm91bmRVcHBlckxlZnQgIT0gZm91bmRMb3dl
clJpZ2h0KSB7Ci0gICAgICAgIGlmIChmb3VuZFVwcGVyTGVmdCkKLSAgICAgICAgICAgIGxvd2Vy
UmlnaHQgPSB1cHBlckxlZnQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHVwcGVyTGVmdCA9
IGxvd2VyUmlnaHQ7Ci0gICAgfSAKLQotICAgIHJldHVybiBlbmNsb3NpbmdMYXlvdXRSZWN0KEZs
b2F0UmVjdCh1cHBlckxlZnQsIGxvd2VyUmlnaHQuZXhwYW5kZWRUbyh1cHBlckxlZnQpIC0gdXBw
ZXJMZWZ0KSk7Ci19Ci0KIHZvaWQgQ29udGFpbmVyTm9kZTo6c2V0Rm9jdXMoYm9vbCByZWNlaXZl
ZCkKIHsKICAgICBpZiAoZm9jdXNlZCgpID09IHJlY2VpdmVkKQpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oCShyZXZpc2lvbiAxMjYxOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw2IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGdldFJlY3QoKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoYm9vbCA9IHRydWUpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCBhY3RpdmUgPSB0cnVlLCBib29s
IHBhdXNlID0gZmFsc2UpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIb3ZlcmVkKGJv
b2wgPSB0cnVlKSBPVkVSUklERTsKQEAgLTEzMyw5ICsxMzIsNiBAQCBwcml2YXRlOgogCiAgICAg
c3RhdGljIHZvaWQgZGlzcGF0Y2hQb3N0QXR0YWNoQ2FsbGJhY2tzKCk7CiAKLSAgICBib29sIGdl
dFVwcGVyTGVmdENvcm5lcihGbG9hdFBvaW50JikgY29uc3Q7Ci0gICAgYm9vbCBnZXRMb3dlclJp
Z2h0Q29ybmVyKEZsb2F0UG9pbnQmKSBjb25zdDsKLQogICAgIE5vZGUqIG1fZmlyc3RDaGlsZDsK
ICAgICBOb2RlKiBtX2xhc3RDaGlsZDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxMjYxOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3
KGJvb2wgYWxpZ25UCiAgICAgaWYgKCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBMYXlvdXRSZWN0IGJvdW5kcyA9IGdldFJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IGJvdW5kcyA9
IGJvdW5kaW5nQm94KCk7CiAgICAgLy8gQWxpZ24gdG8gdGhlIHRvcCAvIGJvdHRvbSBhbmQgdG8g
dGhlIGNsb3Nlc3QgZWRnZS4KICAgICBpZiAoYWxpZ25Ub1RvcCkKICAgICAgICAgcmVuZGVyZXIo
KS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShib3VuZHMsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0Vk
Z2VJZk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvcEFsd2F5cyk7CkBAIC0zMDQsNyAr
MzA0LDcgQEAgdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlld0lmTmVlZGVkKGJvbwogICAgIGlm
ICghcmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGF5b3V0UmVjdCBib3VuZHMg
PSBnZXRSZWN0KCk7CisgICAgTGF5b3V0UmVjdCBib3VuZHMgPSBib3VuZGluZ0JveCgpOwogICAg
IGlmIChjZW50ZXJJZk5lZWRlZCkKICAgICAgICAgcmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlz
aWJsZShib3VuZHMsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCwgU2Nyb2xs
QWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkKTsKICAgICBlbHNlCkBAIC0xNjE3LDcgKzE2
MTcsNyBAQCB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZShib29sCiAgICAgICAg
ICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnJldmVhbFNlbGVjdGlvbigpOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIGlmIChyZW5kZXJlcigpICYmICFyZW5kZXJlcigpLT5pc1dpZGdldCgpKQotICAg
ICAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKGdldFJlY3QoKSk7CisgICAgICAg
IHJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoYm91bmRpbmdCb3goKSk7CiB9CiAKIHZv
aWQgRWxlbWVudDo6Ymx1cigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiAxMjYxOTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5NSw3
ICs3OTUsNyBAQCBSZW5kZXJCb3hNb2RlbE9iamVjdCogTm9kZTo6cmVuZGVyQm94TW9kCiAgICAg
cmV0dXJuIG1fcmVuZGVyZXIgJiYgbV9yZW5kZXJlci0+aXNCb3hNb2RlbE9iamVjdCgpID8gdG9S
ZW5kZXJCb3hNb2RlbE9iamVjdChtX3JlbmRlcmVyKSA6IDA7CiB9CiAKLUxheW91dFJlY3QgTm9k
ZTo6Z2V0UmVjdCgpIGNvbnN0CitMYXlvdXRSZWN0IE5vZGU6OmJvdW5kaW5nQm94KCkgY29uc3QK
IHsKICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCktPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDEyNjE5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwMSw4ICs0
MDEsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUlucHV0
TWV0aG9kKCk7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGdldFJlY3QoKSBjb25zdDsKLSAgICBJ
bnRSZWN0IGdldFBpeGVsU25hcHBlZFJlY3QoKSBjb25zdCB7IHJldHVybiBwaXhlbFNuYXBwZWRJ
bnRSZWN0KGdldFJlY3QoKSk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3go
KSBjb25zdDsKKyAgICBJbnRSZWN0IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCkgY29uc3QgeyBy
ZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChib3VuZGluZ0JveCgpKTsgfQogICAgIExheW91dFJl
Y3QgcmVuZGVyUmVjdChib29sKiBpc1JlcGxhY2VkKTsKICAgICBJbnRSZWN0IHBpeGVsU25hcHBl
ZFJlbmRlclJlY3QoYm9vbCogaXNSZXBsYWNlZCkgeyByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVj
dChyZW5kZXJSZWN0KGlzUmVwbGFjZWQpKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0NvbG9ySW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0Nv
bG9ySW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMTI2MTkxKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9Db2xvcklucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBI
VE1MRWxlbWVudCogQ29sb3JJbnB1dFR5cGU6OnNoYWRvd0NvbG9yCiAKIEludFJlY3QgQ29sb3JJ
bnB1dFR5cGU6OmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gZWxlbWVudCgpLT5kb2N1bWVudCgpLT52aWV3KCktPmNvbnRlbnRzVG9Sb290Vmlldyhl
bGVtZW50KCktPmdldFBpeGVsU25hcHBlZFJlY3QoKSk7CisgICAgcmV0dXJuIGVsZW1lbnQoKS0+
ZG9jdW1lbnQoKS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoZWxlbWVudCgpLT5waXhlbFNu
YXBwZWRCb3VuZGluZ0JveCgpKTsKIH0KIAogQ29sb3IgQ29sb3JJbnB1dFR5cGU6OmN1cnJlbnRD
b2xvcigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAko
cmV2aXNpb24gMTI2MTkxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2Fn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFZhbGlkYXRpb25N
ZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUoCiAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQobV9i
dWJibGUuZ2V0KCksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKICAgICBob3N0LT5kb2N1bWVudCgp
LT51cGRhdGVMYXlvdXQoKTsKLSAgICBhZGp1c3RCdWJibGVQb3NpdGlvbihob3N0LT5nZXRSZWN0
KCksIG1fYnViYmxlLmdldCgpKTsKKyAgICBhZGp1c3RCdWJibGVQb3NpdGlvbihob3N0LT5ib3Vu
ZGluZ0JveCgpLCBtX2J1YmJsZS5nZXQoKSk7CiAKICAgICBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+
IGNsaXBwZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7CiAgICAgY2xpcHBlci0+c2V0
U2hhZG93UHNldWRvSWQoIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtYXJyb3ctY2xpcHBlciIp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBp
Y2tlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMjYxOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUs
NyArMTI1LDcgQEAgdm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6Om9wZW5Qb3B1cCgpCiAgICAg
ICAgIHJldHVybjsKICAgICBpZiAoIWRvY3VtZW50KCktPnZpZXcoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIEludFJlY3QgZWxlbWVudFJlY3RJblJvb3RWaWV3ID0gZG9jdW1lbnQoKS0+dmlldygp
LT5jb250ZW50c1RvUm9vdFZpZXcoaG9zdElucHV0KCktPmdldFBpeGVsU25hcHBlZFJlY3QoKSk7
CisgICAgSW50UmVjdCBlbGVtZW50UmVjdEluUm9vdFZpZXcgPSBkb2N1bWVudCgpLT52aWV3KCkt
PmNvbnRlbnRzVG9Sb290Vmlldyhob3N0SW5wdXQoKS0+cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3go
KSk7CiAgICAgbV9wb3B1cCA9IGNocm9tZS0+Y2xpZW50KCktPm9wZW5QYWdlUG9wdXAodGhpcywg
ZWxlbWVudFJlY3RJblJvb3RWaWV3KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCShyZXZpc2lv
biAxMjYxOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjQsNyArNDI0LDcgQEAgdm9pZCBJbnB1
dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c3RhcgogICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVt
ZW50PiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dIb3N0KCkp
OwogICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSA9IGlucHV0LT5jb21wdXRlSW5oZXJpdGVkTGFu
Z3VhZ2UoKTsKICAgICBTdHJpbmcgZ3JhbW1hciA9IGlucHV0LT5nZXRBdHRyaWJ1dGUod2Via2l0
Z3JhbW1hckF0dHIpOwotICAgIEludFJlY3QgcmVjdCA9IGRvY3VtZW50KCktPnZpZXcoKS0+Y29u
dGVudHNUb1Jvb3RWaWV3KGdldFBpeGVsU25hcHBlZFJlY3QoKSk7CisgICAgSW50UmVjdCByZWN0
ID0gZG9jdW1lbnQoKS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcocGl4ZWxTbmFwcGVkQm91
bmRpbmdCb3goKSk7CiAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9s
aXN0ZW5lcklkLCByZWN0LCBsYW5ndWFnZSwgZ3JhbW1hciwgZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSkpCiAgICAgICAgIHNldFN0YXRlKFJlY29yZGluZyk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAxMjYxOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2ODYsNyArMTY4Niw3IEBAIHZv
aWQgRnJhbWVWaWV3OjpzY3JvbGxFbGVtZW50VG9SZWN0KEVsZW0KIHsKICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAotICAg
IExheW91dFJlY3QgYm91bmRzID0gZWxlbWVudC0+Z2V0UmVjdCgpOworICAgIExheW91dFJlY3Qg
Ym91bmRzID0gZWxlbWVudC0+Ym91bmRpbmdCb3goKTsKICAgICBpbnQgY2VudGVyaW5nT2Zmc2V0
WCA9IChyZWN0LndpZHRoKCkgLSBib3VuZHMud2lkdGgoKSkgLyAyOwogICAgIGludCBjZW50ZXJp
bmdPZmZzZXRZID0gKHJlY3QuaGVpZ2h0KCkgLSBib3VuZHMuaGVpZ2h0KCkpIC8gMjsKICAgICBz
ZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludChib3VuZHMueCgpIC0gY2VudGVyaW5nT2Zmc2V0WCAt
IHJlY3QueCgpLCBib3VuZHMueSgpIC0gY2VudGVyaW5nT2Zmc2V0WSAtIHJlY3QueSgpKSk7CkBA
IC0yMjYzLDcgKzIyNjMsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IoKQogCiAg
ICAgTGF5b3V0UmVjdCByZWN0OwogICAgIGlmIChhbmNob3JOb2RlICE9IG1fZnJhbWUtPmRvY3Vt
ZW50KCkpCi0gICAgICAgIHJlY3QgPSBhbmNob3JOb2RlLT5nZXRSZWN0KCk7CisgICAgICAgIHJl
Y3QgPSBhbmNob3JOb2RlLT5ib3VuZGluZ0JveCgpOwogCiAgICAgLy8gU2Nyb2xsIG5lc3RlZCBs
YXllcnMgYW5kIGZyYW1lcyB0byByZXZlYWwgdGhlIGFuY2hvci4KICAgICAvLyBBbGlnbiB0byB0
aGUgdG9wIGFuZCB0byB0aGUgY2xvc2VzdCBzaWRlICh0aGlzIG1hdGNoZXMgb3RoZXIgYnJvd3Nl
cnMpLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAJKHJl
dmlzaW9uIDEyNjE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjIsNyArNTIyLDcgQEAgTGF5b3V0UmVjdCBub2RlUmVj
dEluQWJzb2x1dGVDb29yZGluYXRlcwogCiAgICAgaWYgKG5vZGUtPmlzRG9jdW1lbnROb2RlKCkp
CiAgICAgICAgIHJldHVybiBmcmFtZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMoc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihub2RlKS0+ZnJhbWUoKSk7Ci0gICAgTGF5b3V0UmVjdCByZWN0ID0gcmVj
dFRvQWJzb2x1dGVDb29yZGluYXRlcyhub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLCBub2RlLT5n
ZXRSZWN0KCkpOworICAgIExheW91dFJlY3QgcmVjdCA9IHJlY3RUb0Fic29sdXRlQ29vcmRpbmF0
ZXMobm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbm9kZS0+Ym91bmRpbmdCb3goKSk7CiAKICAg
ICAvLyBGb3IgYXV0aG9ycyB0aGF0IHVzZSBib3JkZXIgaW5zdGVhZCBvZiBvdXRsaW5lIGluIHRo
ZWlyIENTUywgd2UgY29tcGVuc2F0ZSBieSBpZ25vcmluZyB0aGUgYm9yZGVyIHdoZW4gY2FsY3Vs
YXRpbmcKICAgICAvLyB0aGUgcmVjdCBvZiB0aGUgZm9jdXNlZCBlbGVtZW50LgpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNjE5MSkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTIt
MDgtMjEgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmFt
ZSBOb2RlOjpnZXRSZWN0L2dldFBpeGVsU25hcHBlZFJlY3QgYW5kIHJlbW92ZSBDb250YWluZXJO
b2RlOjpnZXRSZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZSBXZWJWaWV3SW1wbCB0byBjYWxsIGJvdW5kaW5nQm94L3BpeGVsU25hcHBlZEJv
dW5kaW5nQm94LgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OmNvbXB1dGVCbG9ja0JvdW5kcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjphcHBseUF1dG9maWxsU3VnZ2VzdGlvbnMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6cmVmcmVzaEF1dG9maWxsUG9wdXApOgorCiAyMDEyLTA4LTIxICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjEyNjE3MC4KQEAgLTEzNTA2LDcgKzEzNTIwLDcgQEAKICAgICAgICAgKFdl
YktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUxpdmVSZWdpb25CdXN5KToKICAgICAg
ICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUxpdmVSZWdpb25SZWxldmFu
dCk6CiAgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFMaXZlUmVn
aW9uU3RhdHVzKToKLSAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6Ym91
bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6
Ym91bmRpbmdCb3gpOgogICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpl
c3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MpOgogICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0OjpoZWxwVGV4dCk6CiAgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmhlYWRpbmdMZXZlbCk6CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiAxMjYxOTEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5Nyw3ICs5OTcsNyBA
QCBXZWJSZWN0IFdlYlZpZXdJbXBsOjpjb21wdXRlQmxvY2tCb3VuZHMoCiAKICAgICAvLyBSZXR1
cm4gdGhlIGJvdW5kaW5nIGJveCBpbiB0aGUgd2luZG93IGNvb3JkaW5hdGUgc3lzdGVtLgogICAg
IGlmIChub2RlKSB7Ci0gICAgICAgIEludFJlY3QgcmVjdCA9IG5vZGUtPk5vZGU6OmdldFBpeGVs
U25hcHBlZFJlY3QoKTsKKyAgICAgICAgSW50UmVjdCByZWN0ID0gbm9kZS0+Tm9kZTo6cGl4ZWxT
bmFwcGVkQm91bmRpbmdCb3goKTsKICAgICAgICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1l
bnQoKS0+ZnJhbWUoKTsKICAgICAgICAgcmV0dXJuIGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9X
aW5kb3cocmVjdCk7CiAgICAgfQpAQCAtMzE2MSw3ICszMTYxLDcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6YXBwbHlBdXRvZmlsbFN1Z2dlc3RpbwogICAgICAgICByZWZyZXNoQXV0b2ZpbGxQb3B1cCgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYXV0b2ZpbGxQb3B1cFNob3dpbmcgPSB0cnVlOwot
ICAgICAgICBtX2F1dG9maWxsUG9wdXAtPnNob3dJblJlY3QoZm9jdXNlZE5vZGUtPmdldFBpeGVs
U25hcHBlZFJlY3QoKSwgZm9jdXNlZE5vZGUtPm93bmVyRG9jdW1lbnQoKS0+dmlldygpLCAwKTsK
KyAgICAgICAgbV9hdXRvZmlsbFBvcHVwLT5zaG93SW5SZWN0KGZvY3VzZWROb2RlLT5waXhlbFNu
YXBwZWRCb3VuZGluZ0JveCgpLCBmb2N1c2VkTm9kZS0+b3duZXJEb2N1bWVudCgpLT52aWV3KCks
IDApOwogICAgIH0KIH0KIApAQCAtMzQ2Nyw3ICszNDY3LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
cmVmcmVzaEF1dG9maWxsUG9wdXAoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgV2Vi
UmVjdCBuZXdXaWRnZXRSZWN0ID0gbV9hdXRvZmlsbFBvcHVwLT5yZWZyZXNoKGZvY3VzZWRXZWJD
b3JlTm9kZSgpLT5nZXRQaXhlbFNuYXBwZWRSZWN0KCkpOworICAgIFdlYlJlY3QgbmV3V2lkZ2V0
UmVjdCA9IG1fYXV0b2ZpbGxQb3B1cC0+cmVmcmVzaChmb2N1c2VkV2ViQ29yZU5vZGUoKS0+cGl4
ZWxTbmFwcGVkQm91bmRpbmdCb3goKSk7CiAgICAgLy8gTGV0J3MgcmVzaXplIHRoZSBiYWNraW5n
IHdpbmRvdyBpZiBuZWNlc3NhcnkuCiAgICAgV2ViUG9wdXBNZW51SW1wbCogcG9wdXBNZW51ID0g
c3RhdGljX2Nhc3Q8V2ViUG9wdXBNZW51SW1wbCo+KG1fYXV0b2ZpbGxQb3B1cC0+Y2xpZW50KCkp
OwogICAgIGlmIChwb3B1cE1lbnUgJiYgcG9wdXBNZW51LT5jbGllbnQoKS0+d2luZG93UmVjdCgp
ICE9IG5ld1dpZGdldFJlY3QpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjYxOTEp
CisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMi0wOC0yMSAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmVuYW1lIE5vZGU6OmdldFJlY3QvZ2V0UGl4ZWxTbmFwcGVkUmVjdCBhbmQgcmVt
b3ZlIENvbnRhaW5lck5vZGU6OmdldFJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgxNDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV3a19mcmFtZSB0byBjYWxsIHBpeGVsU25hcHBlZEJv
dW5kaW5nQm94LgorCisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAgICAgIChld2tf
ZnJhbWVfZm9jdXNlZF9lbGVtZW50X2dlb21ldHJ5X2dldCk6CisKIDIwMTItMDgtMjAgIFRoaWFn
byBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+CiAKICAgICAgICAg
UmVncmVzc2lvbihyMTI0OTQ1KTogQnVpbGQgaXMgYnJva2VuIHdoZW4gdG91Y2ggZXZlbnRzIGlz
IGRpc2FibGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAkocmV2aXNpb24g
MTI2MTkxKQorKysgU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg5Nyw3ICs4OTcsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZvY3VzZWRfZWxl
bWVudF9nZW9tCiAgICAgV2ViQ29yZTo6Tm9kZSogZm9jdXNlZE5vZGUgPSBkb2N1bWVudC0+Zm9j
dXNlZE5vZGUoKTsKICAgICBpZiAoIWZvY3VzZWROb2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBub2RlUmVjdCA9IGZvY3VzZWROb2RlLT5nZXRQaXhlbFNu
YXBwZWRSZWN0KCk7CisgICAgV2ViQ29yZTo6SW50UmVjdCBub2RlUmVjdCA9IGZvY3VzZWROb2Rl
LT5waXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpOwogICAgIGlmICh4KQogICAgICAgICAqeCA9IG5v
ZGVSZWN0LngoKTsKICAgICBpZiAoeSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDEy
NjE5MSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE4IEBACisyMDEyLTA4LTIxICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZW5hbWUgTm9kZTo6Z2V0UmVjdC9nZXRQaXhlbFNuYXBwZWRSZWN0IGFu
ZCByZW1vdmUgQ29udGFpbmVyTm9kZTo6Z2V0UmVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQ2hyb21lQ2xpZW50R3RrIGFuZCB3ZWJraXR3
ZWJ2aWV3IHRvIGNhbGwgcGl4ZWxTbmFwcGVkQm91bmRpbmdCb3guCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVD
bGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2Vidmlldy5jcHA6CisgICAgICAgIChnZXRMb2NhdGlvbkZvcktleWJvYXJkR2VuZXJhdGVkQ29u
dGV4dE1lbnUpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3F1ZXJ5X3Rvb2x0aXApOgorCiAy
MDEyLTA4LTIxICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBVc2luZyBhIG5hdGl2ZSB3aW5kb3cgZm9yIHRoZSBXZWJWaWV3IGJyZWFrcyBH
dGtPdmVybGF5CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDEyNjE5MSkKKysrIFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc4Niw3ICs3ODYsNyBAQCB2b2lkIENocm9tZUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVs
ZW1lCiAgICAgaWYgKE5vZGUqIG5vZGUgPSBoaXQuaW5uZXJOb25TaGFyZWROb2RlKCkpIHsKICAg
ICAgICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKICAgICAgICAg
RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUgPyBmcmFtZS0+dmlldygpIDogMDsKLSAgICAgICAgbV93
ZWJWaWV3LT5wcml2LT50b29sdGlwQXJlYSA9IHZpZXcgPyB2aWV3LT5jb250ZW50c1RvV2luZG93
KG5vZGUtPmdldFBpeGVsU25hcHBlZFJlY3QoKSkgOiBJbnRSZWN0KCk7CisgICAgICAgIG1fd2Vi
Vmlldy0+cHJpdi0+dG9vbHRpcEFyZWEgPSB2aWV3ID8gdmlldy0+Y29udGVudHNUb1dpbmRvdyhu
b2RlLT5waXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpKSA6IEludFJlY3QoKTsKICAgICB9IGVsc2UK
ICAgICAgICAgbV93ZWJWaWV3LT5wcml2LT50b29sdGlwQXJlYSA9IEludFJlY3QoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9u
IDEyNjE5MSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDI3LDcgKzQyNyw3IEBAIHN0YXRpYyBJbnRQb2ludCBnZXRMb2Nh
dGlvbkZvcktleWJvYXJkR2UKICAgICBpZiAoIXNlbGVjdGlvbi0+c2VsZWN0aW9uKCkuaXNOb25P
cnBoYW5lZENhcmV0T3JSYW5nZSgpCiAgICAgICAgICB8fCAoc2VsZWN0aW9uLT5zZWxlY3Rpb24o
KS5pc0NhcmV0KCkgJiYgIXNlbGVjdGlvbi0+c2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUo
KSkpIHsKICAgICAgICAgaWYgKE5vZGUqIGZvY3VzZWROb2RlID0gZ2V0Rm9jdXNlZE5vZGUoZnJh
bWUpKQotICAgICAgICAgICAgcmV0dXJuIGZvY3VzZWROb2RlLT5nZXRQaXhlbFNuYXBwZWRSZWN0
KCkubG9jYXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiBmb2N1c2VkTm9kZS0+cGl4ZWxTbmFw
cGVkQm91bmRpbmdCb3goKS5sb2NhdGlvbigpOwogCiAgICAgICAgIC8vIFRoZXJlIHdhcyBubyBz
ZWxlY3Rpb24gYW5kIG5vIGZvY3VzZWQgbm9kZSwgc28ganVzdCBwdXQgdGhlIGNvbnRleHQKICAg
ICAgICAgLy8gbWVudSBpbnRvIHRoZSBjb3JuZXIgb2YgdGhlIHZpZXcsIG9mZnNldCBzbGlnaHRs
eS4KQEAgLTE2MDUsNyArMTYwNSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdf
cXVlcnlfdG8KICAgICAgICAgICAgICAgICBTdHJpbmcgdGl0bGUgPSBzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4odGl0bGVOb2RlKS0+dGl0bGUoKTsKICAgICAgICAgICAgICAgICBpZiAoIXRpdGxlLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gY29y
ZUZyYW1lLT52aWV3KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSBh
cmVhID0gdmlldy0+Y29udGVudHNUb1dpbmRvdyhub2RlLT5nZXRQaXhlbFNuYXBwZWRSZWN0KCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlIGFyZWEgPSB2aWV3LT5jb250
ZW50c1RvV2luZG93KG5vZGUtPnBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgZ3RrX3Rvb2x0aXBfc2V0X3RpcF9hcmVhKHRvb2x0aXAsICZhcmVhKTsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBndGtfdG9vbHRpcF9z
ZXRfdGV4dCh0b29sdGlwLCB0aXRsZS51dGY4KCkuZGF0YSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMjYxOTEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA4LTIxICBFbWlsIEEgRWtsdW5kICA8ZWFl
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgTm9kZTo6Z2V0UmVjdC9nZXRQaXhlbFNu
YXBwZWRSZWN0IGFuZCByZW1vdmUgQ29udGFpbmVyTm9kZTo6Z2V0UmVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgcXdlYmVsZW1lbnQgYW5k
IHF3ZWJwYWdlIHRvIGNhbGwgcGl4ZWxTbmFwcGVkQm91bmRpbmdCb3guCisKKyAgICAgICAgKiBB
cGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6Omdlb21ldHJ5KToKKyAg
ICAgICAgKFFXZWJFbGVtZW50OjpyZW5kZXIpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQ
b2ludEZvclRvdWNoKToKKwogMjAxMi0wOC0yMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNjE0
Ni4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAJKHJldmlzaW9uIDEyNjE5
MSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTQ1LDcgKzU0NSw3IEBAIFFSZWN0IFFXZWJFbGVtZW50OjpnZW9tZXRyeSgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVybiBRUmVjdCgpOwotICAgIHJl
dHVybiBtX2VsZW1lbnQtPmdldFBpeGVsU25hcHBlZFJlY3QoKTsKKyAgICByZXR1cm4gbV9lbGVt
ZW50LT5waXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpOwogfQogCiAvKiEKQEAgLTE0NTMsNyArMTQ1
Myw3IEBAIHZvaWQgUVdlYkVsZW1lbnQ6OnJlbmRlcihRUGFpbnRlciogcGFpbnQKIAogICAgIHZp
ZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKIAotICAgIEludFJl
Y3QgcmVjdCA9IGUtPmdldFBpeGVsU25hcHBlZFJlY3QoKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBl
LT5waXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpOwogCiAgICAgaWYgKHJlY3Quc2l6ZSgpLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAko
cmV2aXNpb24gMTI2MTkxKQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTg1LDcgKzE1ODUsNyBAQCBJbnRQb2ludCBRV2ViUGFnZVByaXZh
dGU6OlRvdWNoQWRqdXN0ZXI6CiAgICAgICAgIGlmICghY3VycmVudEVsZW1lbnQgfHwgKCFpc0Ns
aWNrYWJsZUVsZW1lbnQoY3VycmVudEVsZW1lbnQsIDApICYmICFpc1ZhbGlkRnJhbWVPd25lcihj
dXJyZW50RWxlbWVudCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgSW50UmVj
dCBjdXJyZW50RWxlbWVudEJvdW5kaW5nUmVjdCA9IGN1cnJlbnRFbGVtZW50LT5nZXRQaXhlbFNu
YXBwZWRSZWN0KCk7CisgICAgICAgIEludFJlY3QgY3VycmVudEVsZW1lbnRCb3VuZGluZ1JlY3Qg
PSBjdXJyZW50RWxlbWVudC0+cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3goKTsKICAgICAgICAgY3Vy
cmVudEVsZW1lbnRCb3VuZGluZ1JlY3QuaW50ZXJzZWN0KHRvdWNoUmVjdCk7CiAKICAgICAgICAg
aWYgKGN1cnJlbnRFbGVtZW50Qm91bmRpbmdSZWN0LmlzRW1wdHkoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159821</attachid>
            <date>2012-08-21 17:51:59 -0700</date>
            <delta_ts>2012-09-07 18:22:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81413-20120821175158.patch</filename>
            <type>text/plain</type>
            <size>26843</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNjE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA4LTIxICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgTm9kZTo6Z2V0UmVj
dC9nZXRQaXhlbFNuYXBwZWRSZWN0IGFuZCByZW1vdmUgQ29udGFpbmVyTm9kZTo6Z2V0UmVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0MTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgTm9k
ZTo6Z2V0UmVjdCBhbmQgZ2V0UGl4ZWxTbmFwcGVkUmVjdCB0byBib3VuZGluZ0JveCBhbmQKKyAg
ICAgICAgcGl4ZWxTbmFwcGVkQm91bmRpbmdCb3ggcmVzcGVjdGl2ZWx5LgorCisgICAgICAgIFJl
bW92ZSBvdmVycmlkZGVuIGdldFJlY3QgbWV0aG9kIGZyb20gQ29udGFpbmVyTm9kZSBhcyBpdCBj
YWxjdWxhdGVzIHRoZQorICAgICAgICBzYW1lIHJlY3QgYXMgdGhlIE5vZGUgaW1wbGVtZW50YXRp
b24gYnV0IGluIGEgbW9yZSBjb21wbGljYXRlZCBhbmQKKyAgICAgICAgZXJyb3ItcHJvbmUgd2F5
LiBBbHNvIHJlbW92ZSB0aGUgZ2V0VXBwZXJMZWZ0Q29ybmVyL2dldExvd2VyUmlnaHRDb3JuZXIK
KyAgICAgICAgc3VwcG9ydCBmdW5jdGlvbnMgYXMgdGhleSBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6ZWxlbWVudFJlY3QpOgorICAgICAg
ICBVcGRhdGUgdG8gY2FsbCBib3VuZGluZ0JveC4KKworICAgICAgICAqIGRvbS9Db250YWluZXJO
b2RlLmNwcDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICBSZW1vdmUg
b3ZlcnJpZGRlbiBnZXRSZWN0IG1ldGhvZCBhbmQgdGhlIGdldFVwcGVyTGVmdENvcm5lci8KKyAg
ICAgICAgZ2V0TG93ZXJSaWdodENvcm5lciBzdXBwb3J0IG1ldGhvZHMgLgorCisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsSW50b1Zp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UpOgorICAg
ICAgICBVcGRhdGUgdG8gY2FsbCBib3VuZGluZ0JveC4KKyAgICAgICAgCisgICAgICAgICogZG9t
L05vZGUuaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
Ojpib3VuZGluZ0JveCk6CisgICAgICAgIFJlbmFtZSBnZXRSZWN0IHRvIGJvdW5kaW5nQm94Lgor
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwaXhlbFNuYXBwZWRCb3VuZGluZ0JveCk6CisgICAg
ICAgIFJlbmFtZSBnZXRQaXhlbFNuYXBwZWRSZWN0IHRvIHBpeGVsU25hcHBlZEJvdW5kaW5nQm94
LgorICAgICAgICAKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjplbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290Vmlldyk6
CisgICAgICAgICogaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FsZW5k
YXJQaWNrZXJFbGVtZW50OjpvcGVuUG9wdXApOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3Bl
ZWNoQnV0dG9uRWxlbWVudDo6c3RhcnRTcGVlY2hJbnB1dCk6CisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxFbGVtZW50VG9S
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IpOgorICAg
ICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9k
ZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMpOgorICAgICAgICBVcGRhdGUgdG8gY2FsbCBib3Vu
ZGluZ0JveC9waXhlbFNuYXBwZWRCb3VuZGluZ0JveC4KKwogMjAxMi0wOC0yMSAgQmVuamFtaW4g
UG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9yZSBDU3RyaW5nIGRh
dGEgaW4gdGhlIENTdHJpbmdCdWZmZXIgdG8gYXZvaWQgdGhlIGRvdWJsZSBpbmRpcmVjdGlvbgpJ
bmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTbGlkZXIuY3BwCShyZXZpc2lvbiAxMjYxOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNyAr
MTc3LDcgQEAgTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmVsZQogICAgIFJl
bmRlck9iamVjdCogc2xpZGVyUmVuZGVyZXIgPSBtX3BhcmVudC0+cmVuZGVyZXIoKTsKICAgICBp
ZiAoIXNsaWRlclJlbmRlcmVyIHx8ICFzbGlkZXJSZW5kZXJlci0+aXNTbGlkZXIoKSkKICAgICAg
ICAgcmV0dXJuIExheW91dFJlY3QoKTsKLSAgICByZXR1cm4gc2xpZGVyVGh1bWJFbGVtZW50T2Yo
c2xpZGVyUmVuZGVyZXItPm5vZGUoKSktPmdldFJlY3QoKTsKKyAgICByZXR1cm4gc2xpZGVyVGh1
bWJFbGVtZW50T2Yoc2xpZGVyUmVuZGVyZXItPm5vZGUoKSktPmJvdW5kaW5nQm94KCk7CiB9CiAK
IGJvb2wgQWNjZXNzaWJpbGl0eVNsaWRlclRodW1iOjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9uIDEy
NjE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzA5LDEzNSArNzA5LDYgQEAgdm9pZCBDb250YWluZXJOb2RlOjpjbG9uZUNoaWxk
Tm9kZXMoQ29udAogICAgIH0KIH0KIAotYm9vbCBDb250YWluZXJOb2RlOjpnZXRVcHBlckxlZnRD
b3JuZXIoRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Ci17Ci0gICAgaWYgKCFyZW5kZXJlcigpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy8gV2hhdCBpcyB0aGlzIGNvZGUgcmVhbGx5IHRy
eWluZyB0byBkbz8KLSAgICBSZW5kZXJPYmplY3QgKm8gPSByZW5kZXJlcigpOwotICAgIFJlbmRl
ck9iamVjdCAqcCA9IG87Ci0KLSAgICBpZiAoIW8tPmlzSW5saW5lKCkgfHwgby0+aXNSZXBsYWNl
ZCgpKSB7Ci0gICAgICAgIHBvaW50ID0gby0+bG9jYWxUb0Fic29sdXRlKEZsb2F0UG9pbnQoKSwg
ZmFsc2UsIHRydWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBmaW5k
IHRoZSBuZXh0IHRleHQvaW1hZ2UgY2hpbGQsIHRvIGdldCBhIHBvc2l0aW9uCi0gICAgd2hpbGUg
KG8pIHsKLSAgICAgICAgcCA9IG87Ci0gICAgICAgIGlmIChvLT5maXJzdENoaWxkKCkpCi0gICAg
ICAgICAgICBvID0gby0+Zmlyc3RDaGlsZCgpOwotICAgICAgICBlbHNlIGlmIChvLT5uZXh0U2li
bGluZygpKQotICAgICAgICAgICAgbyA9IG8tPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgUmVuZGVyT2JqZWN0ICpuZXh0ID0gMDsKLSAgICAgICAgICAgIHdoaWxl
ICghbmV4dCAmJiBvLT5wYXJlbnQoKSkgewotICAgICAgICAgICAgICAgIG8gPSBvLT5wYXJlbnQo
KTsKLSAgICAgICAgICAgICAgICBuZXh0ID0gby0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG8gPSBuZXh0OwotCi0gICAgICAgICAgICBpZiAoIW8pCi0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG8pOwotCi0gICAgICAg
IGlmICghby0+aXNJbmxpbmUoKSB8fCBvLT5pc1JlcGxhY2VkKCkpIHsKLSAgICAgICAgICAgIHBv
aW50ID0gby0+bG9jYWxUb0Fic29sdXRlKEZsb2F0UG9pbnQoKSwgZmFsc2UsIHRydWUpOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocC0+bm9kZSgp
ICYmIHAtPm5vZGUoKSA9PSB0aGlzICYmIG8tPmlzVGV4dCgpICYmICFvLT5pc0JSKCkgJiYgIXRv
UmVuZGVyVGV4dChvKS0+Zmlyc3RUZXh0Qm94KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBkbyBu
b3RoaW5nIC0gc2tpcCB1bnJlbmRlcmVkIHdoaXRlc3BhY2UgdGhhdCBpcyBhIGNoaWxkIG9yIG5l
eHQgc2libGluZyBvZiB0aGUgYW5jaG9yCi0gICAgICAgIH0gZWxzZSBpZiAoKG8tPmlzVGV4dCgp
ICYmICFvLT5pc0JSKCkpIHx8IG8tPmlzUmVwbGFjZWQoKSkgewotICAgICAgICAgICAgcG9pbnQg
PSBGbG9hdFBvaW50KCk7Ci0gICAgICAgICAgICBpZiAoby0+aXNUZXh0KCkgJiYgdG9SZW5kZXJU
ZXh0KG8pLT5maXJzdFRleHRCb3goKSkgewotICAgICAgICAgICAgICAgIHBvaW50Lm1vdmUodG9S
ZW5kZXJUZXh0KG8pLT5saW5lc0JvdW5kaW5nQm94KCkueCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdG9SZW5kZXJUZXh0KG8pLT5maXJzdFRleHRCb3goKS0+cm9vdCgpLT5saW5lVG9w
KCkpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChvLT5pc0JveCgpKSB7Ci0gICAgICAgICAgICAg
ICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJveChvKTsKLSAgICAgICAgICAgICAgICBwb2lu
dC5tb3ZlQnkoYm94LT5sb2NhdGlvbigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBv
aW50ID0gby0+Y29udGFpbmVyKCktPmxvY2FsVG9BYnNvbHV0ZShwb2ludCwgZmFsc2UsIHRydWUp
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAg
Ly8gSWYgdGhlIHRhcmdldCBkb2Vzbid0IGhhdmUgYW55IGNoaWxkcmVuIG9yIHNpYmxpbmdzIHRo
YXQgY291bGQgYmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNjcm9sbCBwb3NpdGlvbiwgd2UgbXVz
dCBiZQotICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50LiAgU2Nyb2xsIHRvIHRoZSBi
b3R0b20uIEZJWE1FOiB3aG8gc2FpZCBhbnl0aGluZyBhYm91dCBzY3JvbGxpbmc/Ci0gICAgaWYg
KCFvICYmIGRvY3VtZW50KCktPnZpZXcoKSkgewotICAgICAgICBwb2ludCA9IEZsb2F0UG9pbnQo
MCwgZG9jdW1lbnQoKS0+dmlldygpLT5jb250ZW50c0hlaWdodCgpKTsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBDb250YWluZXJOb2Rl
OjpnZXRMb3dlclJpZ2h0Q29ybmVyKEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAotewotICAgIGlm
ICghcmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVuZGVyT2JqZWN0
KiBvID0gcmVuZGVyZXIoKTsKLSAgICBpZiAoIW8tPmlzSW5saW5lKCkgfHwgby0+aXNSZXBsYWNl
ZCgpKSB7Ci0gICAgICAgIFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3gobyk7Ci0gICAgICAg
IHBvaW50ID0gby0+bG9jYWxUb0Fic29sdXRlKExheW91dFBvaW50KGJveC0+c2l6ZSgpKSwgZmFs
c2UsIHRydWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBmaW5kIHRo
ZSBsYXN0IHRleHQvaW1hZ2UgY2hpbGQsIHRvIGdldCBhIHBvc2l0aW9uCi0gICAgd2hpbGUgKG8p
IHsKLSAgICAgICAgaWYgKG8tPmxhc3RDaGlsZCgpKQotICAgICAgICAgICAgbyA9IG8tPmxhc3RD
aGlsZCgpOwotICAgICAgICBlbHNlIGlmIChvLT5wcmV2aW91c1NpYmxpbmcoKSkKLSAgICAgICAg
ICAgIG8gPSBvLT5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBSZW5kZXJPYmplY3QqIHByZXYgPSAwOwotICAgICAgICAgICAgd2hpbGUgKCFwcmV2KSB7Ci0g
ICAgICAgICAgICAgICAgbyA9IG8tPnBhcmVudCgpOwotICAgICAgICAgICAgICAgIGlmICghbykK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIHByZXYg
PSBvLT5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG8gPSBw
cmV2OwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChvKTsKLSAgICAgICAgaWYgKG8tPmlzVGV4
dCgpIHx8IG8tPmlzUmVwbGFjZWQoKSkgewotICAgICAgICAgICAgcG9pbnQgPSBGbG9hdFBvaW50
KCk7Ci0gICAgICAgICAgICBpZiAoby0+aXNUZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBSZW5k
ZXJUZXh0KiB0ZXh0ID0gdG9SZW5kZXJUZXh0KG8pOwotICAgICAgICAgICAgICAgIEludFJlY3Qg
bGluZXNCb3ggPSB0ZXh0LT5saW5lc0JvdW5kaW5nQm94KCk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFsaW5lc0JveC5tYXhYKCkgJiYgIWxpbmVzQm94Lm1heFkoKSkKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgcG9pbnQubW92ZUJ5KGxpbmVzQm94Lm1heFhN
YXhZQ29ybmVyKCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBSZW5k
ZXJCb3gqIGJveCA9IHRvUmVuZGVyQm94KG8pOwotICAgICAgICAgICAgICAgIHBvaW50Lm1vdmVC
eShib3gtPmZyYW1lUmVjdCgpLm1heFhNYXhZQ29ybmVyKCkpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgcG9pbnQgPSBvLT5jb250YWluZXIoKS0+bG9jYWxUb0Fic29sdXRlKHBvaW50LCBm
YWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotTGF5b3V0UmVjdCBDb250YWluZXJOb2RlOjpnZXRSZWN0
KCkgY29uc3QKLXsKLSAgICBGbG9hdFBvaW50ICB1cHBlckxlZnQsIGxvd2VyUmlnaHQ7Ci0gICAg
Ym9vbCBmb3VuZFVwcGVyTGVmdCA9IGdldFVwcGVyTGVmdENvcm5lcih1cHBlckxlZnQpOwotICAg
IGJvb2wgZm91bmRMb3dlclJpZ2h0ID0gZ2V0TG93ZXJSaWdodENvcm5lcihsb3dlclJpZ2h0KTsK
LSAgICAKLSAgICAvLyBJZiB3ZSd2ZSBmb3VuZCBvbmUgY29ybmVyLCBidXQgbm90IHRoZSBvdGhl
ciwKLSAgICAvLyB0aGVuIHdlIHNob3VsZCBqdXN0IHJldHVybiBhIHBvaW50IGF0IHRoZSBjb3Ju
ZXIgdGhhdCB3ZSBkaWQgZmluZC4KLSAgICBpZiAoZm91bmRVcHBlckxlZnQgIT0gZm91bmRMb3dl
clJpZ2h0KSB7Ci0gICAgICAgIGlmIChmb3VuZFVwcGVyTGVmdCkKLSAgICAgICAgICAgIGxvd2Vy
UmlnaHQgPSB1cHBlckxlZnQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHVwcGVyTGVmdCA9
IGxvd2VyUmlnaHQ7Ci0gICAgfSAKLQotICAgIHJldHVybiBlbmNsb3NpbmdMYXlvdXRSZWN0KEZs
b2F0UmVjdCh1cHBlckxlZnQsIGxvd2VyUmlnaHQuZXhwYW5kZWRUbyh1cHBlckxlZnQpIC0gdXBw
ZXJMZWZ0KSk7Ci19Ci0KIHZvaWQgQ29udGFpbmVyTm9kZTo6c2V0Rm9jdXMoYm9vbCByZWNlaXZl
ZCkKIHsKICAgICBpZiAoZm9jdXNlZCgpID09IHJlY2VpdmVkKQpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oCShyZXZpc2lvbiAxMjYxOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw2IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGdldFJlY3QoKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoYm9vbCA9IHRydWUpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCBhY3RpdmUgPSB0cnVlLCBib29s
IHBhdXNlID0gZmFsc2UpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIb3ZlcmVkKGJv
b2wgPSB0cnVlKSBPVkVSUklERTsKQEAgLTEzMyw5ICsxMzIsNiBAQCBwcml2YXRlOgogCiAgICAg
c3RhdGljIHZvaWQgZGlzcGF0Y2hQb3N0QXR0YWNoQ2FsbGJhY2tzKCk7CiAKLSAgICBib29sIGdl
dFVwcGVyTGVmdENvcm5lcihGbG9hdFBvaW50JikgY29uc3Q7Ci0gICAgYm9vbCBnZXRMb3dlclJp
Z2h0Q29ybmVyKEZsb2F0UG9pbnQmKSBjb25zdDsKLQogICAgIE5vZGUqIG1fZmlyc3RDaGlsZDsK
ICAgICBOb2RlKiBtX2xhc3RDaGlsZDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxMjYxOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3
KGJvb2wgYWxpZ25UCiAgICAgaWYgKCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBMYXlvdXRSZWN0IGJvdW5kcyA9IGdldFJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IGJvdW5kcyA9
IGJvdW5kaW5nQm94KCk7CiAgICAgLy8gQWxpZ24gdG8gdGhlIHRvcCAvIGJvdHRvbSBhbmQgdG8g
dGhlIGNsb3Nlc3QgZWRnZS4KICAgICBpZiAoYWxpZ25Ub1RvcCkKICAgICAgICAgcmVuZGVyZXIo
KS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShib3VuZHMsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0Vk
Z2VJZk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvcEFsd2F5cyk7CkBAIC0zMDQsNyAr
MzA0LDcgQEAgdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlld0lmTmVlZGVkKGJvbwogICAgIGlm
ICghcmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGF5b3V0UmVjdCBib3VuZHMg
PSBnZXRSZWN0KCk7CisgICAgTGF5b3V0UmVjdCBib3VuZHMgPSBib3VuZGluZ0JveCgpOwogICAg
IGlmIChjZW50ZXJJZk5lZWRlZCkKICAgICAgICAgcmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlz
aWJsZShib3VuZHMsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCwgU2Nyb2xs
QWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkKTsKICAgICBlbHNlCkBAIC0xNjE3LDcgKzE2
MTcsNyBAQCB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZShib29sCiAgICAgICAg
ICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnJldmVhbFNlbGVjdGlvbigpOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIGlmIChyZW5kZXJlcigpICYmICFyZW5kZXJlcigpLT5pc1dpZGdldCgpKQotICAg
ICAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKGdldFJlY3QoKSk7CisgICAgICAg
IHJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoYm91bmRpbmdCb3goKSk7CiB9CiAKIHZv
aWQgRWxlbWVudDo6Ymx1cigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiAxMjYxOTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5NSw3
ICs3OTUsNyBAQCBSZW5kZXJCb3hNb2RlbE9iamVjdCogTm9kZTo6cmVuZGVyQm94TW9kCiAgICAg
cmV0dXJuIG1fcmVuZGVyZXIgJiYgbV9yZW5kZXJlci0+aXNCb3hNb2RlbE9iamVjdCgpID8gdG9S
ZW5kZXJCb3hNb2RlbE9iamVjdChtX3JlbmRlcmVyKSA6IDA7CiB9CiAKLUxheW91dFJlY3QgTm9k
ZTo6Z2V0UmVjdCgpIGNvbnN0CitMYXlvdXRSZWN0IE5vZGU6OmJvdW5kaW5nQm94KCkgY29uc3QK
IHsKICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCktPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDEyNjE5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwMSw4ICs0
MDEsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUlucHV0
TWV0aG9kKCk7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGdldFJlY3QoKSBjb25zdDsKLSAgICBJ
bnRSZWN0IGdldFBpeGVsU25hcHBlZFJlY3QoKSBjb25zdCB7IHJldHVybiBwaXhlbFNuYXBwZWRJ
bnRSZWN0KGdldFJlY3QoKSk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3go
KSBjb25zdDsKKyAgICBJbnRSZWN0IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCkgY29uc3QgeyBy
ZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChib3VuZGluZ0JveCgpKTsgfQogICAgIExheW91dFJl
Y3QgcmVuZGVyUmVjdChib29sKiBpc1JlcGxhY2VkKTsKICAgICBJbnRSZWN0IHBpeGVsU25hcHBl
ZFJlbmRlclJlY3QoYm9vbCogaXNSZXBsYWNlZCkgeyByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVj
dChyZW5kZXJSZWN0KGlzUmVwbGFjZWQpKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0NvbG9ySW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0Nv
bG9ySW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMTI2MTkxKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9Db2xvcklucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBI
VE1MRWxlbWVudCogQ29sb3JJbnB1dFR5cGU6OnNoYWRvd0NvbG9yCiAKIEludFJlY3QgQ29sb3JJ
bnB1dFR5cGU6OmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gZWxlbWVudCgpLT5kb2N1bWVudCgpLT52aWV3KCktPmNvbnRlbnRzVG9Sb290Vmlldyhl
bGVtZW50KCktPmdldFBpeGVsU25hcHBlZFJlY3QoKSk7CisgICAgcmV0dXJuIGVsZW1lbnQoKS0+
ZG9jdW1lbnQoKS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoZWxlbWVudCgpLT5waXhlbFNu
YXBwZWRCb3VuZGluZ0JveCgpKTsKIH0KIAogQ29sb3IgQ29sb3JJbnB1dFR5cGU6OmN1cnJlbnRD
b2xvcigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAko
cmV2aXNpb24gMTI2MTkxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2Fn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFZhbGlkYXRpb25N
ZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUoCiAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQobV9i
dWJibGUuZ2V0KCksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKICAgICBob3N0LT5kb2N1bWVudCgp
LT51cGRhdGVMYXlvdXQoKTsKLSAgICBhZGp1c3RCdWJibGVQb3NpdGlvbihob3N0LT5nZXRSZWN0
KCksIG1fYnViYmxlLmdldCgpKTsKKyAgICBhZGp1c3RCdWJibGVQb3NpdGlvbihob3N0LT5ib3Vu
ZGluZ0JveCgpLCBtX2J1YmJsZS5nZXQoKSk7CiAKICAgICBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+
IGNsaXBwZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7CiAgICAgY2xpcHBlci0+c2V0
U2hhZG93UHNldWRvSWQoIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtYXJyb3ctY2xpcHBlciIp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBp
Y2tlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMjYxOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUs
NyArMTI1LDcgQEAgdm9pZCBDYWxlbmRhclBpY2tlckVsZW1lbnQ6Om9wZW5Qb3B1cCgpCiAgICAg
ICAgIHJldHVybjsKICAgICBpZiAoIWRvY3VtZW50KCktPnZpZXcoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIEludFJlY3QgZWxlbWVudFJlY3RJblJvb3RWaWV3ID0gZG9jdW1lbnQoKS0+dmlldygp
LT5jb250ZW50c1RvUm9vdFZpZXcoaG9zdElucHV0KCktPmdldFBpeGVsU25hcHBlZFJlY3QoKSk7
CisgICAgSW50UmVjdCBlbGVtZW50UmVjdEluUm9vdFZpZXcgPSBkb2N1bWVudCgpLT52aWV3KCkt
PmNvbnRlbnRzVG9Sb290Vmlldyhob3N0SW5wdXQoKS0+cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3go
KSk7CiAgICAgbV9wb3B1cCA9IGNocm9tZS0+Y2xpZW50KCktPm9wZW5QYWdlUG9wdXAodGhpcywg
ZWxlbWVudFJlY3RJblJvb3RWaWV3KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCShyZXZpc2lv
biAxMjYxOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjQsNyArNDI0LDcgQEAgdm9pZCBJbnB1
dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c3RhcgogICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVt
ZW50PiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dIb3N0KCkp
OwogICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSA9IGlucHV0LT5jb21wdXRlSW5oZXJpdGVkTGFu
Z3VhZ2UoKTsKICAgICBTdHJpbmcgZ3JhbW1hciA9IGlucHV0LT5nZXRBdHRyaWJ1dGUod2Via2l0
Z3JhbW1hckF0dHIpOwotICAgIEludFJlY3QgcmVjdCA9IGRvY3VtZW50KCktPnZpZXcoKS0+Y29u
dGVudHNUb1Jvb3RWaWV3KGdldFBpeGVsU25hcHBlZFJlY3QoKSk7CisgICAgSW50UmVjdCByZWN0
ID0gZG9jdW1lbnQoKS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcocGl4ZWxTbmFwcGVkQm91
bmRpbmdCb3goKSk7CiAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9s
aXN0ZW5lcklkLCByZWN0LCBsYW5ndWFnZSwgZ3JhbW1hciwgZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSkpCiAgICAgICAgIHNldFN0YXRlKFJlY29yZGluZyk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAxMjYxOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2ODYsNyArMTY4Niw3IEBAIHZv
aWQgRnJhbWVWaWV3OjpzY3JvbGxFbGVtZW50VG9SZWN0KEVsZW0KIHsKICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAotICAg
IExheW91dFJlY3QgYm91bmRzID0gZWxlbWVudC0+Z2V0UmVjdCgpOworICAgIExheW91dFJlY3Qg
Ym91bmRzID0gZWxlbWVudC0+Ym91bmRpbmdCb3goKTsKICAgICBpbnQgY2VudGVyaW5nT2Zmc2V0
WCA9IChyZWN0LndpZHRoKCkgLSBib3VuZHMud2lkdGgoKSkgLyAyOwogICAgIGludCBjZW50ZXJp
bmdPZmZzZXRZID0gKHJlY3QuaGVpZ2h0KCkgLSBib3VuZHMuaGVpZ2h0KCkpIC8gMjsKICAgICBz
ZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludChib3VuZHMueCgpIC0gY2VudGVyaW5nT2Zmc2V0WCAt
IHJlY3QueCgpLCBib3VuZHMueSgpIC0gY2VudGVyaW5nT2Zmc2V0WSAtIHJlY3QueSgpKSk7CkBA
IC0yMjYzLDcgKzIyNjMsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IoKQogCiAg
ICAgTGF5b3V0UmVjdCByZWN0OwogICAgIGlmIChhbmNob3JOb2RlICE9IG1fZnJhbWUtPmRvY3Vt
ZW50KCkpCi0gICAgICAgIHJlY3QgPSBhbmNob3JOb2RlLT5nZXRSZWN0KCk7CisgICAgICAgIHJl
Y3QgPSBhbmNob3JOb2RlLT5ib3VuZGluZ0JveCgpOwogCiAgICAgLy8gU2Nyb2xsIG5lc3RlZCBs
YXllcnMgYW5kIGZyYW1lcyB0byByZXZlYWwgdGhlIGFuY2hvci4KICAgICAvLyBBbGlnbiB0byB0
aGUgdG9wIGFuZCB0byB0aGUgY2xvc2VzdCBzaWRlICh0aGlzIG1hdGNoZXMgb3RoZXIgYnJvd3Nl
cnMpLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAJKHJl
dmlzaW9uIDEyNjE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjIsNyArNTIyLDcgQEAgTGF5b3V0UmVjdCBub2RlUmVj
dEluQWJzb2x1dGVDb29yZGluYXRlcwogCiAgICAgaWYgKG5vZGUtPmlzRG9jdW1lbnROb2RlKCkp
CiAgICAgICAgIHJldHVybiBmcmFtZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMoc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihub2RlKS0+ZnJhbWUoKSk7Ci0gICAgTGF5b3V0UmVjdCByZWN0ID0gcmVj
dFRvQWJzb2x1dGVDb29yZGluYXRlcyhub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLCBub2RlLT5n
ZXRSZWN0KCkpOworICAgIExheW91dFJlY3QgcmVjdCA9IHJlY3RUb0Fic29sdXRlQ29vcmRpbmF0
ZXMobm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbm9kZS0+Ym91bmRpbmdCb3goKSk7CiAKICAg
ICAvLyBGb3IgYXV0aG9ycyB0aGF0IHVzZSBib3JkZXIgaW5zdGVhZCBvZiBvdXRsaW5lIGluIHRo
ZWlyIENTUywgd2UgY29tcGVuc2F0ZSBieSBpZ25vcmluZyB0aGUgYm9yZGVyIHdoZW4gY2FsY3Vs
YXRpbmcKICAgICAvLyB0aGUgcmVjdCBvZiB0aGUgZm9jdXNlZCBlbGVtZW50LgpJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTI2MjM3KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgtMjEgIEVtaWwgQSBFa2x1bmQgIDxl
YWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmFtZSBOb2RlOjpnZXRSZWN0L2dldFBpeGVs
U25hcHBlZFJlY3QgYW5kIHJlbW92ZSBDb250YWluZXJOb2RlOjpnZXRSZWN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQxMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBXZWJQYWdlIHRvIGNh
bGwgcGl4ZWxTbmFwcGVkQm91bmRpbmdCb3guCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmVkaXRvclN0YXRlKToK
KwogMjAxMi0wOC0yMSAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGxp
bnV4LmludGVsLmNvbT4KIAogICAgICAgICBbR1RLXSBbV0syXSBNZW1vcnkgbGVha3MgaW4gVGVz
dFdlYktpdEZpbmRDb250cm9sbGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxMjYxOTEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNSw3
ICs1MTUsNyBAQCBFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZSgpIGNvbnN0CiAgICAg
fQogCiAgICAgaWYgKHNlbGVjdGlvblJvb3QpCi0gICAgICAgIHJlc3VsdC5lZGl0b3JSZWN0ID0g
ZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhzZWxlY3Rpb25Sb290LT5nZXRQaXhlbFNu
YXBwZWRSZWN0KCkpOworICAgICAgICByZXN1bHQuZWRpdG9yUmVjdCA9IGZyYW1lLT52aWV3KCkt
PmNvbnRlbnRzVG9XaW5kb3coc2VsZWN0aW9uUm9vdC0+cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3go
KSk7CiAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOwogICAgIGlmIChyZXN1bHQuaGFzQ29tcG9z
aXRpb24gJiYgKHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLT5jb21wb3NpdGlvblJhbmdlKCkpKSB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTI2MTkxKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NyBAQAorMjAxMi0wOC0yMSAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmVuYW1lIE5vZGU6OmdldFJlY3QvZ2V0UGl4ZWxTbmFwcGVkUmVjdCBhbmQgcmVtb3Zl
IENvbnRhaW5lck5vZGU6OmdldFJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxNDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlIFdlYlZpZXdJbXBsIHRvIGNhbGwgYm91bmRpbmdCb3gvcGl4
ZWxTbmFwcGVkQm91bmRpbmdCb3guCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29tcHV0ZUJsb2NrQm91bmRzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5QXV0b2ZpbGxTdWdnZXN0aW9ucyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZWZyZXNoQXV0b2ZpbGxQb3B1cCk6CisKIDIwMTIt
MDgtMjEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTI2MTcwLgpAQCAtMTM1MDYsNyArMTM1MjAsNyBAQAog
ICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhTGl2ZVJlZ2lvbkJ1
c3kpOgogICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhTGl2ZVJl
Z2lvblJlbGV2YW50KToKICAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6
YXJpYUxpdmVSZWdpb25TdGF0dXMpOgotICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpib3VuZGluZ0JveFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0Ojpib3VuZGluZ0JveCk6CiAgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmVzdGltYXRlZExvYWRpbmdQcm9ncmVzcyk6CiAgICAgICAgIChXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHlPYmplY3Q6OmhlbHBUZXh0KToKICAgICAgICAgKFdlYktpdDo6V2ViQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGVhZGluZ0xldmVsKToKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDEyNjE5MSkKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk3
LDcgKzk5Nyw3IEBAIFdlYlJlY3QgV2ViVmlld0ltcGw6OmNvbXB1dGVCbG9ja0JvdW5kcygKIAog
ICAgIC8vIFJldHVybiB0aGUgYm91bmRpbmcgYm94IGluIHRoZSB3aW5kb3cgY29vcmRpbmF0ZSBz
eXN0ZW0uCiAgICAgaWYgKG5vZGUpIHsKLSAgICAgICAgSW50UmVjdCByZWN0ID0gbm9kZS0+Tm9k
ZTo6Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpOworICAgICAgICBJbnRSZWN0IHJlY3QgPSBub2RlLT5O
b2RlOjpwaXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpOwogICAgICAgICBGcmFtZSogZnJhbWUgPSBu
b2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOwogICAgICAgICByZXR1cm4gZnJhbWUtPnZpZXcoKS0+
Y29udGVudHNUb1dpbmRvdyhyZWN0KTsKICAgICB9CkBAIC0zMTYxLDcgKzMxNjEsNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjphcHBseUF1dG9maWxsU3VnZ2VzdGlvCiAgICAgICAgIHJlZnJlc2hBdXRv
ZmlsbFBvcHVwKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9hdXRvZmlsbFBvcHVwU2hvd2lu
ZyA9IHRydWU7Ci0gICAgICAgIG1fYXV0b2ZpbGxQb3B1cC0+c2hvd0luUmVjdChmb2N1c2VkTm9k
ZS0+Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpLCBmb2N1c2VkTm9kZS0+b3duZXJEb2N1bWVudCgpLT52
aWV3KCksIDApOworICAgICAgICBtX2F1dG9maWxsUG9wdXAtPnNob3dJblJlY3QoZm9jdXNlZE5v
ZGUtPnBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCksIGZvY3VzZWROb2RlLT5vd25lckRvY3VtZW50
KCktPnZpZXcoKSwgMCk7CiAgICAgfQogfQogCkBAIC0zNDY3LDcgKzM0NjcsNyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpyZWZyZXNoQXV0b2ZpbGxQb3B1cCgpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBXZWJSZWN0IG5ld1dpZGdldFJlY3QgPSBtX2F1dG9maWxsUG9wdXAtPnJlZnJlc2go
Zm9jdXNlZFdlYkNvcmVOb2RlKCktPmdldFBpeGVsU25hcHBlZFJlY3QoKSk7CisgICAgV2ViUmVj
dCBuZXdXaWRnZXRSZWN0ID0gbV9hdXRvZmlsbFBvcHVwLT5yZWZyZXNoKGZvY3VzZWRXZWJDb3Jl
Tm9kZSgpLT5waXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpKTsKICAgICAvLyBMZXQncyByZXNpemUg
dGhlIGJhY2tpbmcgd2luZG93IGlmIG5lY2Vzc2FyeS4KICAgICBXZWJQb3B1cE1lbnVJbXBsKiBw
b3B1cE1lbnUgPSBzdGF0aWNfY2FzdDxXZWJQb3B1cE1lbnVJbXBsKj4obV9hdXRvZmlsbFBvcHVw
LT5jbGllbnQoKSk7CiAgICAgaWYgKHBvcHVwTWVudSAmJiBwb3B1cE1lbnUtPmNsaWVudCgpLT53
aW5kb3dSZWN0KCkgIT0gbmV3V2lkZ2V0UmVjdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDEyNjE5MSkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4LTIxICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgTm9kZTo6Z2V0UmVjdC9nZXRQaXhlbFNuYXBwZWRS
ZWN0IGFuZCByZW1vdmUgQ29udGFpbmVyTm9kZTo6Z2V0UmVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0MTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZXdrX2ZyYW1lIHRvIGNhbGwgcGl4
ZWxTbmFwcGVkQm91bmRpbmdCb3guCisKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKKyAg
ICAgICAgKGV3a19mcmFtZV9mb2N1c2VkX2VsZW1lbnRfZ2VvbWV0cnlfZ2V0KToKKwogMjAxMi0w
OC0yMCAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4K
IAogICAgICAgICBSZWdyZXNzaW9uKHIxMjQ5NDUpOiBCdWlsZCBpcyBicm9rZW4gd2hlbiB0b3Vj
aCBldmVudHMgaXMgZGlzYWJsZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJh
bWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3Bw
CShyZXZpc2lvbiAxMjYxOTEpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODk3LDcgKzg5Nyw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVf
Zm9jdXNlZF9lbGVtZW50X2dlb20KICAgICBXZWJDb3JlOjpOb2RlKiBmb2N1c2VkTm9kZSA9IGRv
Y3VtZW50LT5mb2N1c2VkTm9kZSgpOwogICAgIGlmICghZm9jdXNlZE5vZGUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IG5vZGVSZWN0ID0gZm9jdXNlZE5vZGUt
PmdldFBpeGVsU25hcHBlZFJlY3QoKTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IG5vZGVSZWN0ID0g
Zm9jdXNlZE5vZGUtPnBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCk7CiAgICAgaWYgKHgpCiAgICAg
ICAgICp4ID0gbm9kZVJlY3QueCgpOwogICAgIGlmICh5KQpJbmRleDogU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwko
cmV2aXNpb24gMTI2MTkxKQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDgtMjEgIEVtaWwgQSBFa2x1bmQgIDxlYWVA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmFtZSBOb2RlOjpnZXRSZWN0L2dldFBpeGVsU25h
cHBlZFJlY3QgYW5kIHJlbW92ZSBDb250YWluZXJOb2RlOjpnZXRSZWN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBDaHJvbWVDbGllbnRHdGsg
YW5kIHdlYmtpdHdlYnZpZXcgdG8gY2FsbCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveC4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNocm9tZUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIHdl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKGdldExvY2F0aW9uRm9yS2V5Ym9hcmRH
ZW5lcmF0ZWRDb250ZXh0TWVudSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcXVlcnlfdG9v
bHRpcCk6CisKIDIwMTItMDgtMjEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIFVzaW5nIGEgbmF0aXZlIHdpbmRvdyBmb3IgdGhlIFdlYlZp
ZXcgYnJlYWtzIEd0a092ZXJsYXkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gMTI2MTkxKQorKysg
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzg2LDcgKzc4Niw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojptb3VzZURp
ZE1vdmVPdmVyRWxlbWUKICAgICBpZiAoTm9kZSogbm9kZSA9IGhpdC5pbm5lck5vblNoYXJlZE5v
ZGUoKSkgewogICAgICAgICBGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgp
OwogICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZSA/IGZyYW1lLT52aWV3KCkgOiAwOwot
ICAgICAgICBtX3dlYlZpZXctPnByaXYtPnRvb2x0aXBBcmVhID0gdmlldyA/IHZpZXctPmNvbnRl
bnRzVG9XaW5kb3cobm9kZS0+Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpKSA6IEludFJlY3QoKTsKKyAg
ICAgICAgbV93ZWJWaWV3LT5wcml2LT50b29sdGlwQXJlYSA9IHZpZXcgPyB2aWV3LT5jb250ZW50
c1RvV2luZG93KG5vZGUtPnBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCkpIDogSW50UmVjdCgpOwog
ICAgIH0gZWxzZQogICAgICAgICBtX3dlYlZpZXctPnByaXYtPnRvb2x0aXBBcmVhID0gSW50UmVj
dCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cAkocmV2aXNpb24gMTI2MTkxKQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjcsNyArNDI3LDcgQEAgc3RhdGljIEludFBv
aW50IGdldExvY2F0aW9uRm9yS2V5Ym9hcmRHZQogICAgIGlmICghc2VsZWN0aW9uLT5zZWxlY3Rp
b24oKS5pc05vbk9ycGhhbmVkQ2FyZXRPclJhbmdlKCkKICAgICAgICAgIHx8IChzZWxlY3Rpb24t
PnNlbGVjdGlvbigpLmlzQ2FyZXQoKSAmJiAhc2VsZWN0aW9uLT5zZWxlY3Rpb24oKS5pc0NvbnRl
bnRFZGl0YWJsZSgpKSkgewogICAgICAgICBpZiAoTm9kZSogZm9jdXNlZE5vZGUgPSBnZXRGb2N1
c2VkTm9kZShmcmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gZm9jdXNlZE5vZGUtPmdldFBpeGVs
U25hcHBlZFJlY3QoKS5sb2NhdGlvbigpOworICAgICAgICAgICAgcmV0dXJuIGZvY3VzZWROb2Rl
LT5waXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpLmxvY2F0aW9uKCk7CiAKICAgICAgICAgLy8gVGhl
cmUgd2FzIG5vIHNlbGVjdGlvbiBhbmQgbm8gZm9jdXNlZCBub2RlLCBzbyBqdXN0IHB1dCB0aGUg
Y29udGV4dAogICAgICAgICAvLyBtZW51IGludG8gdGhlIGNvcm5lciBvZiB0aGUgdmlldywgb2Zm
c2V0IHNsaWdodGx5LgpAQCAtMTYwNSw3ICsxNjA1LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtp
dF93ZWJfdmlld19xdWVyeV90bwogICAgICAgICAgICAgICAgIFN0cmluZyB0aXRsZSA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPih0aXRsZU5vZGUpLT50aXRsZSgpOwogICAgICAgICAgICAgICAgIGlm
ICghdGl0bGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChGcmFtZVZpZXcq
IHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgR2Rr
UmVjdGFuZ2xlIGFyZWEgPSB2aWV3LT5jb250ZW50c1RvV2luZG93KG5vZGUtPmdldFBpeGVsU25h
cHBlZFJlY3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUgYXJlYSA9
IHZpZXctPmNvbnRlbnRzVG9XaW5kb3cobm9kZS0+cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3goKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBndGtfdG9vbHRpcF9zZXRfdGlwX2FyZWEodG9vbHRp
cCwgJmFyZWEpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGd0
a190b29sdGlwX3NldF90ZXh0KHRvb2x0aXAsIHRpdGxlLnV0ZjgoKS5kYXRhKCkpOwpJbmRleDog
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNjE5MSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDgtMjEgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmFtZSBOb2RlOjpnZXRSZWN0
L2dldFBpeGVsU25hcHBlZFJlY3QgYW5kIHJlbW92ZSBDb250YWluZXJOb2RlOjpnZXRSZWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQxMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBxd2Vi
ZWxlbWVudCBhbmQgcXdlYnBhZ2UgdG8gY2FsbCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveC4KKwor
ICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6Z2Vv
bWV0cnkpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnJlbmRlcik6CisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6Zmlu
ZENhbmRpZGF0ZVBvaW50Rm9yVG91Y2gpOgorCiAyMDEyLTA4LTIxICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTI2MTQ2LgpJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAkocmV2
aXNpb24gMTI2MTkxKQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NDUsNyArNTQ1LDcgQEAgUVJlY3QgUVdlYkVsZW1lbnQ6Omdlb21l
dHJ5KCkgY29uc3QKIHsKICAgICBpZiAoIW1fZWxlbWVudCkKICAgICAgICAgcmV0dXJuIFFSZWN0
KCk7Ci0gICAgcmV0dXJuIG1fZWxlbWVudC0+Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpOworICAgIHJl
dHVybiBtX2VsZW1lbnQtPnBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCk7CiB9CiAKIC8qIQpAQCAt
MTQ1Myw3ICsxNDUzLDcgQEAgdm9pZCBRV2ViRWxlbWVudDo6cmVuZGVyKFFQYWludGVyKiBwYWlu
dAogCiAgICAgdmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwog
Ci0gICAgSW50UmVjdCByZWN0ID0gZS0+Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpOworICAgIEludFJl
Y3QgcmVjdCA9IGUtPnBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCk7CiAKICAgICBpZiAocmVjdC5z
aXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuY3BwCShyZXZpc2lvbiAxMjYxOTEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
cGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1ODUsNyArMTU4NSw3IEBAIEludFBvaW50IFFX
ZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3RlcjoKICAgICAgICAgaWYgKCFjdXJyZW50RWxlbWVu
dCB8fCAoIWlzQ2xpY2thYmxlRWxlbWVudChjdXJyZW50RWxlbWVudCwgMCkgJiYgIWlzVmFsaWRG
cmFtZU93bmVyKGN1cnJlbnRFbGVtZW50KSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBJbnRSZWN0IGN1cnJlbnRFbGVtZW50Qm91bmRpbmdSZWN0ID0gY3VycmVudEVsZW1lbnQt
PmdldFBpeGVsU25hcHBlZFJlY3QoKTsKKyAgICAgICAgSW50UmVjdCBjdXJyZW50RWxlbWVudEJv
dW5kaW5nUmVjdCA9IGN1cnJlbnRFbGVtZW50LT5waXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpOwog
ICAgICAgICBjdXJyZW50RWxlbWVudEJvdW5kaW5nUmVjdC5pbnRlcnNlY3QodG91Y2hSZWN0KTsK
IAogICAgICAgICBpZiAoY3VycmVudEVsZW1lbnRCb3VuZGluZ1JlY3QuaXNFbXB0eSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162926</attachid>
            <date>2012-09-07 18:22:49 -0700</date>
            <delta_ts>2012-09-09 17:29:00 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-81413-20120907182228.patch</filename>
            <type>text/plain</type>
            <size>28314</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzk0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA4LTIxICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgTm9kZTo6Z2V0UmVj
dC9nZXRQaXhlbFNuYXBwZWRSZWN0IGFuZCByZW1vdmUgQ29udGFpbmVyTm9kZTo6Z2V0UmVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0MTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KKworICAgICAgICBSZW5hbWUgTm9kZTo6
Z2V0UmVjdCBhbmQgZ2V0UGl4ZWxTbmFwcGVkUmVjdCB0byBib3VuZGluZ0JveCBhbmQKKyAgICAg
ICAgcGl4ZWxTbmFwcGVkQm91bmRpbmdCb3ggcmVzcGVjdGl2ZWx5LgorCisgICAgICAgIFJlbW92
ZSBvdmVycmlkZGVuIGdldFJlY3QgbWV0aG9kIGZyb20gQ29udGFpbmVyTm9kZSBhcyBpdCBjYWxj
dWxhdGVzIHRoZQorICAgICAgICBzYW1lIHJlY3QgYXMgdGhlIE5vZGUgaW1wbGVtZW50YXRpb24g
YnV0IGluIGEgbW9yZSBjb21wbGljYXRlZCBhbmQKKyAgICAgICAgZXJyb3ItcHJvbmUgd2F5LiBB
bHNvIHJlbW92ZSB0aGUgZ2V0VXBwZXJMZWZ0Q29ybmVyL2dldExvd2VyUmlnaHRDb3JuZXIKKyAg
ICAgICAgc3VwcG9ydCBmdW5jdGlvbnMgYXMgdGhleSBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6ZWxlbWVudFJlY3QpOgorICAgICAgICBV
cGRhdGUgdG8gY2FsbCBib3VuZGluZ0JveC4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2Rl
LmNwcDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICBSZW1vdmUgb3Zl
cnJpZGRlbiBnZXRSZWN0IG1ldGhvZCBhbmQgdGhlIGdldFVwcGVyTGVmdENvcm5lci8KKyAgICAg
ICAgZ2V0TG93ZXJSaWdodENvcm5lciBzdXBwb3J0IG1ldGhvZHMgLgorCisgICAgICAgICogZG9t
L0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UpOgorICAgICAg
ICBVcGRhdGUgdG8gY2FsbCBib3VuZGluZ0JveC4KKyAgICAgICAgCisgICAgICAgICogZG9tL05v
ZGUuaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpi
b3VuZGluZ0JveCk6CisgICAgICAgIFJlbmFtZSBnZXRSZWN0IHRvIGJvdW5kaW5nQm94LgorCisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpwaXhlbFNuYXBwZWRCb3VuZGluZ0JveCk6CisgICAgICAg
IFJlbmFtZSBnZXRQaXhlbFNuYXBwZWRSZWN0IHRvIHBpeGVsU25hcHBlZEJvdW5kaW5nQm94Lgor
ICAgICAgICAKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbG9ySW5wdXRUeXBlOjplbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290Vmlldyk6Cisg
ICAgICAgICogaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
YWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKToKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQ
aWNrZXJFbGVtZW50OjpvcGVuUG9wdXApOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNo
QnV0dG9uRWxlbWVudDo6c3RhcnRTcGVlY2hJbnB1dCk6CisgICAgICAgICogcGFnZS9GcmFtZVZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxFbGVtZW50VG9SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IpOgorICAgICAg
ICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZVJl
Y3RJbkFic29sdXRlQ29vcmRpbmF0ZXMpOgorICAgICAgICBVcGRhdGUgdG8gY2FsbCBib3VuZGlu
Z0JveC9waXhlbFNuYXBwZWRCb3VuZGluZ0JveC4KKwogMjAxMi0wOS0wNyAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBib3gtc2hhZG93IGNhdXNlcyBv
dmVybGF5IHNjcm9sbGJhcnMgdG8gYmUgaW4gdGhlIHdyb25nIHBvc2l0aW9uIHdoZW4gZWxlbWVu
dCBpcyBjb21wb3NpdGVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTbGlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAJKHJldmlzaW9uIDEyNzk0NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlTbGlkZXJU
aHVtYjo6ZWxlCiAgICAgUmVuZGVyT2JqZWN0KiBzbGlkZXJSZW5kZXJlciA9IG1fcGFyZW50LT5y
ZW5kZXJlcigpOwogICAgIGlmICghc2xpZGVyUmVuZGVyZXIgfHwgIXNsaWRlclJlbmRlcmVyLT5p
c1NsaWRlcigpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwotICAgIHJldHVybiBzbGlk
ZXJUaHVtYkVsZW1lbnRPZihzbGlkZXJSZW5kZXJlci0+bm9kZSgpKS0+Z2V0UmVjdCgpOworICAg
IHJldHVybiBzbGlkZXJUaHVtYkVsZW1lbnRPZihzbGlkZXJSZW5kZXJlci0+bm9kZSgpKS0+Ym91
bmRpbmdCb3goKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcAkocmV2aXNpb24gMTI3OTQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsMTM1ICs3MjAsNiBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OmNsb25lQ2hpbGROb2RlcyhDb250CiAgICAgfQogfQogCi1ib29sIENvbnRhaW5lck5v
ZGU6OmdldFVwcGVyTGVmdENvcm5lcihGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKLXsKLSAgICBp
ZiAoIXJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyBXaGF0IGlzIHRo
aXMgY29kZSByZWFsbHkgdHJ5aW5nIHRvIGRvPwotICAgIFJlbmRlck9iamVjdCAqbyA9IHJlbmRl
cmVyKCk7Ci0gICAgUmVuZGVyT2JqZWN0ICpwID0gbzsKLQotICAgIGlmICghby0+aXNJbmxpbmUo
KSB8fCBvLT5pc1JlcGxhY2VkKCkpIHsKLSAgICAgICAgcG9pbnQgPSBvLT5sb2NhbFRvQWJzb2x1
dGUoRmxvYXRQb2ludCgpLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotICAgIC8vIGZpbmQgdGhlIG5leHQgdGV4dC9pbWFnZSBjaGlsZCwgdG8gZ2V0IGEgcG9z
aXRpb24KLSAgICB3aGlsZSAobykgewotICAgICAgICBwID0gbzsKLSAgICAgICAgaWYgKG8tPmZp
cnN0Q2hpbGQoKSkKLSAgICAgICAgICAgIG8gPSBvLT5maXJzdENoaWxkKCk7Ci0gICAgICAgIGVs
c2UgaWYgKG8tPm5leHRTaWJsaW5nKCkpCi0gICAgICAgICAgICBvID0gby0+bmV4dFNpYmxpbmco
KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZW5kZXJPYmplY3QgKm5leHQgPSAwOwot
ICAgICAgICAgICAgd2hpbGUgKCFuZXh0ICYmIG8tPnBhcmVudCgpKSB7Ci0gICAgICAgICAgICAg
ICAgbyA9IG8tPnBhcmVudCgpOwotICAgICAgICAgICAgICAgIG5leHQgPSBvLT5uZXh0U2libGlu
ZygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbyA9IG5leHQ7Ci0KLSAgICAgICAgICAg
IGlmICghbykKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBBU1NF
UlQobyk7Ci0KLSAgICAgICAgaWYgKCFvLT5pc0lubGluZSgpIHx8IG8tPmlzUmVwbGFjZWQoKSkg
ewotICAgICAgICAgICAgcG9pbnQgPSBvLT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpLCBm
YWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmIChwLT5ub2RlKCkgJiYgcC0+bm9kZSgpID09IHRoaXMgJiYgby0+aXNUZXh0KCkgJiYg
IW8tPmlzQlIoKSAmJiAhdG9SZW5kZXJUZXh0KG8pLT5maXJzdFRleHRCb3goKSkgewotICAgICAg
ICAgICAgICAgIC8vIGRvIG5vdGhpbmcgLSBza2lwIHVucmVuZGVyZWQgd2hpdGVzcGFjZSB0aGF0
IGlzIGEgY2hpbGQgb3IgbmV4dCBzaWJsaW5nIG9mIHRoZSBhbmNob3IKLSAgICAgICAgfSBlbHNl
IGlmICgoby0+aXNUZXh0KCkgJiYgIW8tPmlzQlIoKSkgfHwgby0+aXNSZXBsYWNlZCgpKSB7Ci0g
ICAgICAgICAgICBwb2ludCA9IEZsb2F0UG9pbnQoKTsKLSAgICAgICAgICAgIGlmIChvLT5pc1Rl
eHQoKSAmJiB0b1JlbmRlclRleHQobyktPmZpcnN0VGV4dEJveCgpKSB7Ci0gICAgICAgICAgICAg
ICAgcG9pbnQubW92ZSh0b1JlbmRlclRleHQobyktPmxpbmVzQm91bmRpbmdCb3goKS54KCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICB0b1JlbmRlclRleHQobyktPmZpcnN0VGV4dEJveCgp
LT5yb290KCktPmxpbmVUb3AoKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG8tPmlzQm94KCkp
IHsKLSAgICAgICAgICAgICAgICBSZW5kZXJCb3gqIGJveCA9IHRvUmVuZGVyQm94KG8pOwotICAg
ICAgICAgICAgICAgIHBvaW50Lm1vdmVCeShib3gtPmxvY2F0aW9uKCkpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgcG9pbnQgPSBvLT5jb250YWluZXIoKS0+bG9jYWxUb0Fic29sdXRlKHBv
aW50LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICAKLSAgICAvLyBJZiB0aGUgdGFyZ2V0IGRvZXNuJ3QgaGF2ZSBhbnkgY2hpbGRy
ZW4gb3Igc2libGluZ3MgdGhhdCBjb3VsZCBiZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgc2Nyb2xs
IHBvc2l0aW9uLCB3ZSBtdXN0IGJlCi0gICAgLy8gYXQgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQu
ICBTY3JvbGwgdG8gdGhlIGJvdHRvbS4gRklYTUU6IHdobyBzYWlkIGFueXRoaW5nIGFib3V0IHNj
cm9sbGluZz8KLSAgICBpZiAoIW8gJiYgZG9jdW1lbnQoKS0+dmlldygpKSB7Ci0gICAgICAgIHBv
aW50ID0gRmxvYXRQb2ludCgwLCBkb2N1bWVudCgpLT52aWV3KCktPmNvbnRlbnRzSGVpZ2h0KCkp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1i
b29sIENvbnRhaW5lck5vZGU6OmdldExvd2VyUmlnaHRDb3JuZXIoRmxvYXRQb2ludCYgcG9pbnQp
IGNvbnN0Ci17Ci0gICAgaWYgKCFyZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBSZW5kZXJPYmplY3QqIG8gPSByZW5kZXJlcigpOwotICAgIGlmICghby0+aXNJbmxpbmUo
KSB8fCBvLT5pc1JlcGxhY2VkKCkpIHsKLSAgICAgICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRl
ckJveChvKTsKLSAgICAgICAgcG9pbnQgPSBvLT5sb2NhbFRvQWJzb2x1dGUoTGF5b3V0UG9pbnQo
Ym94LT5zaXplKCkpLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIC8vIGZpbmQgdGhlIGxhc3QgdGV4dC9pbWFnZSBjaGlsZCwgdG8gZ2V0IGEgcG9zaXRp
b24KLSAgICB3aGlsZSAobykgewotICAgICAgICBpZiAoby0+bGFzdENoaWxkKCkpCi0gICAgICAg
ICAgICBvID0gby0+bGFzdENoaWxkKCk7Ci0gICAgICAgIGVsc2UgaWYgKG8tPnByZXZpb3VzU2li
bGluZygpKQotICAgICAgICAgICAgbyA9IG8tPnByZXZpb3VzU2libGluZygpOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCogcHJldiA9IDA7Ci0gICAgICAgICAgICB3
aGlsZSAoIXByZXYpIHsKLSAgICAgICAgICAgICAgICBvID0gby0+cGFyZW50KCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFvKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgcHJldiA9IG8tPnByZXZpb3VzU2libGluZygpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgbyA9IHByZXY7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG8pOwotICAg
ICAgICBpZiAoby0+aXNUZXh0KCkgfHwgby0+aXNSZXBsYWNlZCgpKSB7Ci0gICAgICAgICAgICBw
b2ludCA9IEZsb2F0UG9pbnQoKTsKLSAgICAgICAgICAgIGlmIChvLT5pc1RleHQoKSkgewotICAg
ICAgICAgICAgICAgIFJlbmRlclRleHQqIHRleHQgPSB0b1JlbmRlclRleHQobyk7Ci0gICAgICAg
ICAgICAgICAgSW50UmVjdCBsaW5lc0JveCA9IHRleHQtPmxpbmVzQm91bmRpbmdCb3goKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIWxpbmVzQm94Lm1heFgoKSAmJiAhbGluZXNCb3gubWF4WSgpKQot
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBwb2ludC5tb3Zl
QnkobGluZXNCb3gubWF4WE1heFlDb3JuZXIoKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3gobyk7Ci0gICAgICAgICAg
ICAgICAgcG9pbnQubW92ZUJ5KGJveC0+ZnJhbWVSZWN0KCkubWF4WE1heFlDb3JuZXIoKSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb2ludCA9IG8tPmNvbnRhaW5lcigpLT5sb2NhbFRv
QWJzb2x1dGUocG9pbnQsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1MYXlvdXRSZWN0IENvbnRh
aW5lck5vZGU6OmdldFJlY3QoKSBjb25zdAotewotICAgIEZsb2F0UG9pbnQgIHVwcGVyTGVmdCwg
bG93ZXJSaWdodDsKLSAgICBib29sIGZvdW5kVXBwZXJMZWZ0ID0gZ2V0VXBwZXJMZWZ0Q29ybmVy
KHVwcGVyTGVmdCk7Ci0gICAgYm9vbCBmb3VuZExvd2VyUmlnaHQgPSBnZXRMb3dlclJpZ2h0Q29y
bmVyKGxvd2VyUmlnaHQpOwotICAgIAotICAgIC8vIElmIHdlJ3ZlIGZvdW5kIG9uZSBjb3JuZXIs
IGJ1dCBub3QgdGhlIG90aGVyLAotICAgIC8vIHRoZW4gd2Ugc2hvdWxkIGp1c3QgcmV0dXJuIGEg
cG9pbnQgYXQgdGhlIGNvcm5lciB0aGF0IHdlIGRpZCBmaW5kLgotICAgIGlmIChmb3VuZFVwcGVy
TGVmdCAhPSBmb3VuZExvd2VyUmlnaHQpIHsKLSAgICAgICAgaWYgKGZvdW5kVXBwZXJMZWZ0KQot
ICAgICAgICAgICAgbG93ZXJSaWdodCA9IHVwcGVyTGVmdDsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgdXBwZXJMZWZ0ID0gbG93ZXJSaWdodDsKLSAgICB9IAotCi0gICAgcmV0dXJuIGVuY2xv
c2luZ0xheW91dFJlY3QoRmxvYXRSZWN0KHVwcGVyTGVmdCwgbG93ZXJSaWdodC5leHBhbmRlZFRv
KHVwcGVyTGVmdCkgLSB1cHBlckxlZnQpKTsKLX0KLQogdm9pZCBDb250YWluZXJOb2RlOjpzZXRG
b2N1cyhib29sIHJlY2VpdmVkKQogewogICAgIGlmIChmb2N1c2VkKCkgPT0gcmVjZWl2ZWQpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgJKHJldmlzaW9uIDEyNzk0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcg
Kzc1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIExheW91dFJl
Y3QgZ2V0UmVjdCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1cyhi
b29sID0gdHJ1ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sIGFj
dGl2ZSA9IHRydWUsIGJvb2wgcGF1c2UgPSBmYWxzZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHNldEhvdmVyZWQoYm9vbCA9IHRydWUpIE9WRVJSSURFOwpAQCAtMTMyLDkgKzEzMSw2IEBA
IHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFBvc3RBdHRhY2hDYWxsYmFja3Mo
KTsKIAotICAgIGJvb2wgZ2V0VXBwZXJMZWZ0Q29ybmVyKEZsb2F0UG9pbnQmKSBjb25zdDsKLSAg
ICBib29sIGdldExvd2VyUmlnaHRDb3JuZXIoRmxvYXRQb2ludCYpIGNvbnN0OwotCiAgICAgTm9k
ZSogbV9maXJzdENoaWxkOwogICAgIE5vZGUqIG1fbGFzdENoaWxkOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDEyNzk0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgRWxlbWVu
dDo6c2Nyb2xsSW50b1ZpZXcoYm9vbCBhbGlnblQKICAgICBpZiAoIXJlbmRlcmVyKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIExheW91dFJlY3QgYm91bmRzID0gZ2V0UmVjdCgpOworICAgIExh
eW91dFJlY3QgYm91bmRzID0gYm91bmRpbmdCb3goKTsKICAgICAvLyBBbGlnbiB0byB0aGUgdG9w
IC8gYm90dG9tIGFuZCB0byB0aGUgY2xvc2VzdCBlZGdlLgogICAgIGlmIChhbGlnblRvVG9wKQog
ICAgICAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKGJvdW5kcywgU2Nyb2xsQWxp
Z25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9wQWx3
YXlzKTsKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZO
ZWVkZWQoYm9vCiAgICAgaWYgKCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBM
YXlvdXRSZWN0IGJvdW5kcyA9IGdldFJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IGJvdW5kcyA9IGJv
dW5kaW5nQm94KCk7CiAgICAgaWYgKGNlbnRlcklmTmVlZGVkKQogICAgICAgICByZW5kZXJlcigp
LT5zY3JvbGxSZWN0VG9WaXNpYmxlKGJvdW5kcywgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRl
cklmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQpOwogICAgIGVs
c2UKQEAgLTE2MzksNyArMTYzOSw3IEBAIHZvaWQgRWxlbWVudDo6dXBkYXRlRm9jdXNBcHBlYXJh
bmNlKGJvb2wKICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+cmV2ZWFsU2VsZWN0aW9u
KCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHJlbmRlcmVyKCkgJiYgIXJlbmRlcmVyKCkt
PmlzV2lkZ2V0KCkpCi0gICAgICAgIHJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoZ2V0
UmVjdCgpKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShib3VuZGlu
Z0JveCgpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpibHVyKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJ
KHJldmlzaW9uIDEyNzk0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzk2LDcgKzc5Niw3IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0KiBOb2RlOjpy
ZW5kZXJCb3hNb2QKICAgICByZXR1cm4gbV9yZW5kZXJlciAmJiBtX3JlbmRlcmVyLT5pc0JveE1v
ZGVsT2JqZWN0KCkgPyB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG1fcmVuZGVyZXIpIDogMDsKIH0K
IAotTGF5b3V0UmVjdCBOb2RlOjpnZXRSZWN0KCkgY29uc3QKK0xheW91dFJlY3QgTm9kZTo6Ym91
bmRpbmdCb3goKSBjb25zdAogewogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZXR1cm4g
cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAko
cmV2aXNpb24gMTI3OTQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDAxLDggKzQwMSw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKTsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgZ2V0UmVj
dCgpIGNvbnN0OwotICAgIEludFJlY3QgZ2V0UGl4ZWxTbmFwcGVkUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIHBpeGVsU25hcHBlZEludFJlY3QoZ2V0UmVjdCgpKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0
UmVjdCBib3VuZGluZ0JveCgpIGNvbnN0OworICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkQm91bmRp
bmdCb3goKSBjb25zdCB7IHJldHVybiBwaXhlbFNuYXBwZWRJbnRSZWN0KGJvdW5kaW5nQm94KCkp
OyB9CiAgICAgTGF5b3V0UmVjdCByZW5kZXJSZWN0KGJvb2wqIGlzUmVwbGFjZWQpOwogICAgIElu
dFJlY3QgcGl4ZWxTbmFwcGVkUmVuZGVyUmVjdChib29sKiBpc1JlcGxhY2VkKSB7IHJldHVybiBw
aXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlclJlY3QoaXNSZXBsYWNlZCkpOyB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAxMjc5NDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjA4LDcgKzIwOCw3IEBAIEhUTUxFbGVtZW50KiBDb2xvcklucHV0VHlwZTo6c2hhZG93Q29sb3IK
IAogSW50UmVjdCBDb2xvcklucHV0VHlwZTo6ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXco
KSBjb25zdAogewotICAgIHJldHVybiBlbGVtZW50KCktPmRvY3VtZW50KCktPnZpZXcoKS0+Y29u
dGVudHNUb1Jvb3RWaWV3KGVsZW1lbnQoKS0+Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpKTsKKyAgICBy
ZXR1cm4gZWxlbWVudCgpLT5kb2N1bWVudCgpLT52aWV3KCktPmNvbnRlbnRzVG9Sb290Vmlldyhl
bGVtZW50KCktPnBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCkpOwogfQogCiBDb2xvciBDb2xvcklu
cHV0VHlwZTo6Y3VycmVudENvbG9yKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRh
dGlvbk1lc3NhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRh
dGlvbk1lc3NhZ2UuY3BwCShyZXZpc2lvbiAxMjc5NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L1ZhbGlkYXRpb25NZXNzYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBA
IHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSgKICAgICBzaGFkb3dSb290
LT5hcHBlbmRDaGlsZChtX2J1YmJsZS5nZXQoKSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogICAg
IGhvc3QtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwotICAgIGFkanVzdEJ1YmJsZVBvc2l0
aW9uKGhvc3QtPmdldFJlY3QoKSwgbV9idWJibGUuZ2V0KCkpOworICAgIGFkanVzdEJ1YmJsZVBv
c2l0aW9uKGhvc3QtPmJvdW5kaW5nQm94KCksIG1fYnViYmxlLmdldCgpKTsKIAogICAgIFJlZlB0
cjxIVE1MRGl2RWxlbWVudD4gY2xpcHBlciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsK
ICAgICBjbGlwcGVyLT5zZXRTaGFkb3dQc2V1ZG9JZCgiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJs
ZS1hcnJvdy1jbGlwcGVyIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxl
bmRhclBpY2tlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAJKHJldmlzaW9uIDEyNzk0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6
b3BlblBvcHVwKCkKICAgICAgICAgcGFyYW1ldGVycy5zdGVwID0gMS4wOwogICAgIGVsc2UKICAg
ICAgICAgcGFyYW1ldGVycy5zdGVwID0gc3RlcC50b0RvdWJsZSgpOwotICAgIHBhcmFtZXRlcnMu
YW5jaG9yUmVjdEluUm9vdFZpZXcgPSBkb2N1bWVudCgpLT52aWV3KCktPmNvbnRlbnRzVG9Sb290
Vmlldyhob3N0SW5wdXQoKS0+Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpKTsKKyAgICBwYXJhbWV0ZXJz
LmFuY2hvclJlY3RJblJvb3RWaWV3ID0gZG9jdW1lbnQoKS0+dmlldygpLT5jb250ZW50c1RvUm9v
dFZpZXcoaG9zdElucHV0KCktPnBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCkpOwogICAgIHBhcmFt
ZXRlcnMuY3VycmVudFZhbHVlID0gaW5wdXQtPnZhbHVlKCk7CiAgICAgLy8gRklYTUU6IHBhcmFt
ZXRlcnMuc3VnZ2VzdGlvblZhbHVlcyBhbmQgc3VnZ2VzdGlvbkxhYmVscyB3aWxsIGJlIHVzZWQg
d2hlbiB3ZSBzdXBwb3J0IGRhdGFsaXN0LgogICAgIG1fY2hvb3NlciA9IGNocm9tZS0+Y2xpZW50
KCktPm9wZW5EYXRlVGltZUNob29zZXIodGhpcywgcGFyYW1ldGVycyk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAJKHJldmlzaW9uIDEyNzk0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNSw3ICs0MjUs
NyBAQCB2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFyCiAgICAgUmVmUHRy
PEhUTUxJbnB1dEVsZW1lbnQ+IGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+
KHNoYWRvd0hvc3QoKSk7CiAgICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlID0gaW5wdXQtPmNvbXB1
dGVJbmhlcml0ZWRMYW5ndWFnZSgpOwogICAgIFN0cmluZyBncmFtbWFyID0gaW5wdXQtPmdldEF0
dHJpYnV0ZSh3ZWJraXRncmFtbWFyQXR0cik7Ci0gICAgSW50UmVjdCByZWN0ID0gZG9jdW1lbnQo
KS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoZ2V0UGl4ZWxTbmFwcGVkUmVjdCgpKTsKKyAg
ICBJbnRSZWN0IHJlY3QgPSBkb2N1bWVudCgpLT52aWV3KCktPmNvbnRlbnRzVG9Sb290Vmlldyhw
aXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpKTsKICAgICBpZiAoc3BlZWNoSW5wdXQoKS0+c3RhcnRS
ZWNvZ25pdGlvbihtX2xpc3RlbmVySWQsIHJlY3QsIGxhbmd1YWdlLCBncmFtbWFyLCBkb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpKSkKICAgICAgICAgc2V0U3RhdGUoUmVjb3JkaW5nKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDEyNzk0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0Myw3
ICsxNzQzLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNjcm9sbEVsZW1lbnRUb1JlY3QoRWxlbQogewog
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cygpOwogCi0gICAgTGF5b3V0UmVjdCBib3VuZHMgPSBlbGVtZW50LT5nZXRSZWN0KCk7Cisg
ICAgTGF5b3V0UmVjdCBib3VuZHMgPSBlbGVtZW50LT5ib3VuZGluZ0JveCgpOwogICAgIGludCBj
ZW50ZXJpbmdPZmZzZXRYID0gKHJlY3Qud2lkdGgoKSAtIGJvdW5kcy53aWR0aCgpKSAvIDI7CiAg
ICAgaW50IGNlbnRlcmluZ09mZnNldFkgPSAocmVjdC5oZWlnaHQoKSAtIGJvdW5kcy5oZWlnaHQo
KSkgLyAyOwogICAgIHNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KGJvdW5kcy54KCkgLSBjZW50
ZXJpbmdPZmZzZXRYIC0gcmVjdC54KCksIGJvdW5kcy55KCkgLSBjZW50ZXJpbmdPZmZzZXRZIC0g
cmVjdC55KCkpKTsKQEAgLTIzNDEsNyArMjM0MSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxU
b0FuY2hvcigpCiAKICAgICBMYXlvdXRSZWN0IHJlY3Q7CiAgICAgaWYgKGFuY2hvck5vZGUgIT0g
bV9mcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgcmVjdCA9IGFuY2hvck5vZGUtPmdldFJlY3Qo
KTsKKyAgICAgICAgcmVjdCA9IGFuY2hvck5vZGUtPmJvdW5kaW5nQm94KCk7CiAKICAgICAvLyBT
Y3JvbGwgbmVzdGVkIGxheWVycyBhbmQgZnJhbWVzIHRvIHJldmVhbCB0aGUgYW5jaG9yLgogICAg
IC8vIEFsaWduIHRvIHRoZSB0b3AgYW5kIHRvIHRoZSBjbG9zZXN0IHNpZGUgKHRoaXMgbWF0Y2hl
cyBvdGhlciBicm93c2VycykuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZp
Z2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZp
Z2F0aW9uLmNwcAkocmV2aXNpb24gMTI3OTQ0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0
aWFsTmF2aWdhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMiw3ICs1MjIsNyBAQCBMYXlv
dXRSZWN0IG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzCiAKICAgICBpZiAobm9kZS0+aXNE
b2N1bWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuIGZyYW1lUmVjdEluQWJzb2x1dGVDb29yZGlu
YXRlcyhzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG5vZGUpLT5mcmFtZSgpKTsKLSAgICBMYXlvdXRS
ZWN0IHJlY3QgPSByZWN0VG9BYnNvbHV0ZUNvb3JkaW5hdGVzKG5vZGUtPmRvY3VtZW50KCktPmZy
YW1lKCksIG5vZGUtPmdldFJlY3QoKSk7CisgICAgTGF5b3V0UmVjdCByZWN0ID0gcmVjdFRvQWJz
b2x1dGVDb29yZGluYXRlcyhub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLCBub2RlLT5ib3VuZGlu
Z0JveCgpKTsKIAogICAgIC8vIEZvciBhdXRob3JzIHRoYXQgdXNlIGJvcmRlciBpbnN0ZWFkIG9m
IG91dGxpbmUgaW4gdGhlaXIgQ1NTLCB3ZSBjb21wZW5zYXRlIGJ5IGlnbm9yaW5nIHRoZSBib3Jk
ZXIgd2hlbiBjYWxjdWxhdGluZwogICAgIC8vIHRoZSByZWN0IG9mIHRoZSBmb2N1c2VkIGVsZW1l
bnQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoRGlzYW1iaWd1YXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hEaXNhbWJpZ3VhdGlvbi5jcHAJ
KHJldmlzaW9uIDEyNzk0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hEaXNhbWJpZ3Vh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIEludFJlY3Qg
Ym91bmRpbmdCb3hGb3JFdmVudE5vZGVzKAogICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZl
cnNlTmV4dFNpYmxpbmcoZXZlbnROb2RlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9Ci0gICAgICAgIHJlc3VsdC51bml0ZShwaXhlbFNuYXBwZWRJbnRSZWN0KG5vZGUtPmdldFJl
Y3QoKSkpOworICAgICAgICByZXN1bHQudW5pdGUobm9kZS0+cGl4ZWxTbmFwcGVkQm91bmRpbmdC
b3goKSk7CiAgICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKGV2ZW50Tm9kZSk7
CiAgICAgfQogICAgIHJldHVybiBldmVudE5vZGUtPmRvY3VtZW50KCktPnZpZXcoKS0+Y29udGVu
dHNUb1dpbmRvdyhyZXN1bHQpOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTI3OTQ0KQorKysg
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTItMDgtMjEgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJlbmFtZSBOb2RlOjpnZXRSZWN0L2dldFBpeGVsU25hcHBlZFJlY3QgYW5kIHJlbW92ZSBDb250
YWluZXJOb2RlOjpnZXRSZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgorCisg
ICAgICAgIFVwZGF0ZSBXZWJQYWdlIHRvIGNhbGwgcGl4ZWxTbmFwcGVkQm91bmRpbmdCb3guCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmVkaXRvclN0YXRlKToKKwogMjAxMi0wOS0wNyAgU3VkYXJzYW5hIE5hZ2lu
ZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGxpbnV4LmludGVsLmNvbT4KIAogICAgICAgICBbRUZM
XSBbV0syXSBTZXQgdGhlbWUgZm9yIHRoZSBpbnNwZWN0b3IgdmlldwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTI3OTQ0
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MTUsNyArNTE1LDcgQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9y
U3RhdGUoKSBjb25zdAogICAgIH0KIAogICAgIGlmIChzZWxlY3Rpb25Sb290KQotICAgICAgICBy
ZXN1bHQuZWRpdG9yUmVjdCA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coc2VsZWN0
aW9uUm9vdC0+Z2V0UGl4ZWxTbmFwcGVkUmVjdCgpKTsKKyAgICAgICAgcmVzdWx0LmVkaXRvclJl
Y3QgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHNlbGVjdGlvblJvb3QtPnBpeGVs
U25hcHBlZEJvdW5kaW5nQm94KCkpOwogCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZTsKICAgICBp
ZiAocmVzdWx0Lmhhc0NvbXBvc2l0aW9uICYmIChyYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y29t
cG9zaXRpb25SYW5nZSgpKSkgewpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDEyNzk0NCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDgtMjEgIEVtaWwgQSBFa2x1bmQgIDxlYWVA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmFtZSBOb2RlOjpnZXRSZWN0L2dldFBpeGVsU25h
cHBlZFJlY3QgYW5kIHJlbW92ZSBDb250YWluZXJOb2RlOjpnZXRSZWN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQxMworCisgICAgICAgIFJldmll
d2VkIGJ5IERhdmlkIEh5YXR0LgorCisgICAgICAgIFVwZGF0ZSBXZWJWaWV3SW1wbCB0byBjYWxs
IGJvdW5kaW5nQm94L3BpeGVsU25hcHBlZEJvdW5kaW5nQm94LgorCisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXB1dGVCbG9j
a0JvdW5kcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjphcHBseUF1dG9maWxsU3Vn
Z2VzdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVmcmVzaEF1dG9maWxs
UG9wdXApOgorCiAyMDEyLTA5LTA3ICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBNdWx0aXBsZSBjb21taXRzIHdpdGhvdXQgaW52YWxp
ZGF0aW9uIGFsbG93ZWQgcGVyIHJlZHJhdy4KQEAgLTE2Nzk5LDcgKzE2ODEzLDcgQEAKICAgICAg
ICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUxpdmVSZWdpb25CdXN5KToK
ICAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUxpdmVSZWdpb25S
ZWxldmFudCk6CiAgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFM
aXZlUmVnaW9uU3RhdHVzKToKLSAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVj
dDo6Ym91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9i
amVjdDo6Ym91bmRpbmdCb3gpOgogICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojplc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MpOgogICAgICAgICAoV2ViS2l0OjpXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpoZWxwVGV4dCk6CiAgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmhlYWRpbmdMZXZlbCk6CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9MaW5rSGlnaGxpZ2h0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcAkocmV2aXNpb24gMTI3OTQ0KQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvTGlua0hpZ2hsaWdodC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
Myw3ICsxNTMsNyBAQCBib29sIExpbmtIaWdobGlnaHQ6OmNvbXB1dGVIaWdobGlnaHRMYXllCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcGF0aEhhc0NoYW5nZWQgPSBmYWxzZTsK
LSAgICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0ID0gbV9ub2RlLT5nZXRQaXhlbFNuYXBwZWRSZWN0
KCk7CisgICAgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdCA9IG1fbm9kZS0+cGl4ZWxTbmFwcGVkQm91
bmRpbmdCb3goKTsKIAogICAgIC8vIEZJWE1FOiBJZiB3ZSBldmVyIHVzZSBhIG1vcmUgc29waGlz
dGljYXRlZCBoaWdobGlnaHQgcGF0aCwgd2UnbGwgbmVlZAogICAgIC8vIHRvIGRldmlzZSBhIHdh
eSBvZiBkZXRlY3Rpbmcgd2hlbiBpdCBjaGFuZ2VzLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24gMTI3OTQ0KQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE0
LDcgKzEwMTQsNyBAQCBXZWJSZWN0IFdlYlZpZXdJbXBsOjpjb21wdXRlQmxvY2tCb3VuZHMoCiAK
ICAgICAvLyBSZXR1cm4gdGhlIGJvdW5kaW5nIGJveCBpbiB0aGUgd2luZG93IGNvb3JkaW5hdGUg
c3lzdGVtLgogICAgIGlmIChub2RlKSB7Ci0gICAgICAgIEludFJlY3QgcmVjdCA9IG5vZGUtPk5v
ZGU6OmdldFBpeGVsU25hcHBlZFJlY3QoKTsKKyAgICAgICAgSW50UmVjdCByZWN0ID0gbm9kZS0+
Tm9kZTo6cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3goKTsKICAgICAgICAgRnJhbWUqIGZyYW1lID0g
bm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKICAgICAgICAgcmV0dXJuIGZyYW1lLT52aWV3KCkt
PmNvbnRlbnRzVG9XaW5kb3cocmVjdCk7CiAgICAgfQpAQCAtMzMwNSw3ICszMzA1LDcgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6YXBwbHlBdXRvZmlsbFN1Z2dlc3RpbwogICAgICAgICByZWZyZXNoQXV0
b2ZpbGxQb3B1cCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYXV0b2ZpbGxQb3B1cFNob3dp
bmcgPSB0cnVlOwotICAgICAgICBtX2F1dG9maWxsUG9wdXAtPnNob3dJblJlY3QoZm9jdXNlZE5v
ZGUtPmdldFBpeGVsU25hcHBlZFJlY3QoKSwgZm9jdXNlZE5vZGUtPm93bmVyRG9jdW1lbnQoKS0+
dmlldygpLCAwKTsKKyAgICAgICAgbV9hdXRvZmlsbFBvcHVwLT5zaG93SW5SZWN0KGZvY3VzZWRO
b2RlLT5waXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpLCBmb2N1c2VkTm9kZS0+b3duZXJEb2N1bWVu
dCgpLT52aWV3KCksIDApOwogICAgIH0KIH0KIApAQCAtMzYxMyw3ICszNjEzLDcgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6cmVmcmVzaEF1dG9maWxsUG9wdXAoKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgV2ViUmVjdCBuZXdXaWRnZXRSZWN0ID0gbV9hdXRvZmlsbFBvcHVwLT5yZWZyZXNo
KGZvY3VzZWRXZWJDb3JlTm9kZSgpLT5nZXRQaXhlbFNuYXBwZWRSZWN0KCkpOworICAgIFdlYlJl
Y3QgbmV3V2lkZ2V0UmVjdCA9IG1fYXV0b2ZpbGxQb3B1cC0+cmVmcmVzaChmb2N1c2VkV2ViQ29y
ZU5vZGUoKS0+cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3goKSk7CiAgICAgLy8gTGV0J3MgcmVzaXpl
IHRoZSBiYWNraW5nIHdpbmRvdyBpZiBuZWNlc3NhcnkuCiAgICAgV2ViUG9wdXBNZW51SW1wbCog
cG9wdXBNZW51ID0gc3RhdGljX2Nhc3Q8V2ViUG9wdXBNZW51SW1wbCo+KG1fYXV0b2ZpbGxQb3B1
cC0+Y2xpZW50KCkpOwogICAgIGlmIChwb3B1cE1lbnUgJiYgcG9wdXBNZW51LT5jbGllbnQoKS0+
d2luZG93UmVjdCgpICE9IG5ld1dpZGdldFJlY3QpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxMjc5NDQpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOC0yMSAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIE5vZGU6OmdldFJlY3QvZ2V0UGl4ZWxTbmFwcGVk
UmVjdCBhbmQgcmVtb3ZlIENvbnRhaW5lck5vZGU6OmdldFJlY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDEzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGF2aWQgSHlhdHQuCisKKyAgICAgICAgVXBkYXRlIGV3a19mcmFtZSB0byBjYWxsIHBpeGVs
U25hcHBlZEJvdW5kaW5nQm94LgorCisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAg
ICAgIChld2tfZnJhbWVfZm9jdXNlZF9lbGVtZW50X2dlb21ldHJ5X2dldCk6CisKIDIwMTItMDkt
MDcgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAg
ICAgICBbRUZMXSBVc2Ugc2FtZSBkZWZhdWx0IG1pbmltdW0gbG9naWNhbCBmb250IHNpemUgaW4g
RFJUIGFuZCBXVFIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCShyZXZpc2lv
biAxMjc5NDQpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODk4LDcgKzg5OCw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZm9jdXNlZF9l
bGVtZW50X2dlb20KICAgICBXZWJDb3JlOjpOb2RlKiBmb2N1c2VkTm9kZSA9IGRvY3VtZW50LT5m
b2N1c2VkTm9kZSgpOwogICAgIGlmICghZm9jdXNlZE5vZGUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IG5vZGVSZWN0ID0gZm9jdXNlZE5vZGUtPmdldFBpeGVs
U25hcHBlZFJlY3QoKTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IG5vZGVSZWN0ID0gZm9jdXNlZE5v
ZGUtPnBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCk7CiAgICAgaWYgKHgpCiAgICAgICAgICp4ID0g
bm9kZVJlY3QueCgpOwogICAgIGlmICh5KQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24g
MTI3OTQ0KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTItMDgtMjEgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJlbmFtZSBOb2RlOjpnZXRSZWN0L2dldFBpeGVsU25hcHBlZFJlY3Qg
YW5kIHJlbW92ZSBDb250YWluZXJOb2RlOjpnZXRSZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IERh
dmlkIEh5YXR0LgorCisgICAgICAgIFVwZGF0ZSBDaHJvbWVDbGllbnRHdGsgYW5kIHdlYmtpdHdl
YnZpZXcgdG8gY2FsbCBwaXhlbFNuYXBwZWRCb3VuZGluZ0JveC4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcDoKKyAgICAgICAgKGdldExvY2F0aW9uRm9yS2V5Ym9hcmRHZW5lcmF0ZWRDb250
ZXh0TWVudSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcXVlcnlfdG9vbHRpcCk6CisKIDIw
MTItMDktMDcgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIE1vdmUgdXNlciBhZ2VudCBoZWxwZXJzIHRvIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNw
cAkocmV2aXNpb24gMTI3OTQ0KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg2LDcgKzc4Niw3IEBAIHZv
aWQgQ2hyb21lQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWUKICAgICBpZiAoTm9kZSogbm9k
ZSA9IGhpdC5pbm5lck5vblNoYXJlZE5vZGUoKSkgewogICAgICAgICBGcmFtZSogZnJhbWUgPSBu
b2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOwogICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFt
ZSA/IGZyYW1lLT52aWV3KCkgOiAwOwotICAgICAgICBtX3dlYlZpZXctPnByaXYtPnRvb2x0aXBB
cmVhID0gdmlldyA/IHZpZXctPmNvbnRlbnRzVG9XaW5kb3cobm9kZS0+Z2V0UGl4ZWxTbmFwcGVk
UmVjdCgpKSA6IEludFJlY3QoKTsKKyAgICAgICAgbV93ZWJWaWV3LT5wcml2LT50b29sdGlwQXJl
YSA9IHZpZXcgPyB2aWV3LT5jb250ZW50c1RvV2luZG93KG5vZGUtPnBpeGVsU25hcHBlZEJvdW5k
aW5nQm94KCkpIDogSW50UmVjdCgpOwogICAgIH0gZWxzZQogICAgICAgICBtX3dlYlZpZXctPnBy
aXYtPnRvb2x0aXBBcmVhID0gSW50UmVjdCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gMTI3OTQ0KQorKysgU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Mjcs
NyArNDI3LDcgQEAgc3RhdGljIEludFBvaW50IGdldExvY2F0aW9uRm9yS2V5Ym9hcmRHZQogICAg
IGlmICghc2VsZWN0aW9uLT5zZWxlY3Rpb24oKS5pc05vbk9ycGhhbmVkQ2FyZXRPclJhbmdlKCkK
ICAgICAgICAgIHx8IChzZWxlY3Rpb24tPnNlbGVjdGlvbigpLmlzQ2FyZXQoKSAmJiAhc2VsZWN0
aW9uLT5zZWxlY3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpKSkgewogICAgICAgICBpZiAoTm9k
ZSogZm9jdXNlZE5vZGUgPSBnZXRGb2N1c2VkTm9kZShmcmFtZSkpCi0gICAgICAgICAgICByZXR1
cm4gZm9jdXNlZE5vZGUtPmdldFBpeGVsU25hcHBlZFJlY3QoKS5sb2NhdGlvbigpOworICAgICAg
ICAgICAgcmV0dXJuIGZvY3VzZWROb2RlLT5waXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpLmxvY2F0
aW9uKCk7CiAKICAgICAgICAgLy8gVGhlcmUgd2FzIG5vIHNlbGVjdGlvbiBhbmQgbm8gZm9jdXNl
ZCBub2RlLCBzbyBqdXN0IHB1dCB0aGUgY29udGV4dAogICAgICAgICAvLyBtZW51IGludG8gdGhl
IGNvcm5lciBvZiB0aGUgdmlldywgb2Zmc2V0IHNsaWdodGx5LgpAQCAtMTYwOCw3ICsxNjA4LDcg
QEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19xdWVyeV90bwogICAgICAgICAgICAg
ICAgIFN0cmluZyB0aXRsZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPih0aXRsZU5vZGUpLT50aXRs
ZSgpOwogICAgICAgICAgICAgICAgIGlmICghdGl0bGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlIGFyZWEgPSB2aWV3LT5jb250ZW50c1Rv
V2luZG93KG5vZGUtPmdldFBpeGVsU25hcHBlZFJlY3QoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBHZGtSZWN0YW5nbGUgYXJlYSA9IHZpZXctPmNvbnRlbnRzVG9XaW5kb3cobm9kZS0+cGl4
ZWxTbmFwcGVkQm91bmRpbmdCb3goKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBndGtfdG9v
bHRpcF9zZXRfdGlwX2FyZWEodG9vbHRpcCwgJmFyZWEpOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIGd0a190b29sdGlwX3NldF90ZXh0KHRvb2x0aXAsIHRpdGxl
LnV0ZjgoKS5kYXRhKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzk0NCkKKysr
IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTItMDgtMjEgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJlbmFtZSBOb2RlOjpnZXRSZWN0L2dldFBpeGVsU25hcHBlZFJlY3QgYW5kIHJlbW92ZSBD
b250YWluZXJOb2RlOjpnZXRSZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0Lgor
CisgICAgICAgIFVwZGF0ZSBxd2ViZWxlbWVudCBhbmQgcXdlYnBhZ2UgdG8gY2FsbCBwaXhlbFNu
YXBwZWRCb3VuZGluZ0JveC4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAg
ICAgIChRV2ViRWxlbWVudDo6Z2VvbWV0cnkpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnJlbmRl
cik6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0
ZTo6VG91Y2hBZGp1c3Rlcjo6ZmluZENhbmRpZGF0ZVBvaW50Rm9yVG91Y2gpOgorCiAyMDEyLTA5
LTA3ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgogCiAg
ICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQ
SXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAJKHJldmlzaW9uIDEyNzk0
NCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTQ2LDcgKzU0Niw3IEBAIFFSZWN0IFFXZWJFbGVtZW50OjpnZW9tZXRyeSgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVybiBRUmVjdCgpOwotICAgIHJl
dHVybiBtX2VsZW1lbnQtPmdldFBpeGVsU25hcHBlZFJlY3QoKTsKKyAgICByZXR1cm4gbV9lbGVt
ZW50LT5waXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpOwogfQogCiAvKiEKQEAgLTE0NTQsNyArMTQ1
NCw3IEBAIHZvaWQgUVdlYkVsZW1lbnQ6OnJlbmRlcihRUGFpbnRlciogcGFpbnQKIAogICAgIHZp
ZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKIAotICAgIEludFJl
Y3QgcmVjdCA9IGUtPmdldFBpeGVsU25hcHBlZFJlY3QoKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBl
LT5waXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpOwogCiAgICAgaWYgKHJlY3Quc2l6ZSgpLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAko
cmV2aXNpb24gMTI3OTQ0KQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTc3LDcgKzE1NzcsNyBAQCBJbnRQb2ludCBRV2ViUGFnZVByaXZh
dGU6OlRvdWNoQWRqdXN0ZXI6CiAgICAgICAgIGlmICghY3VycmVudEVsZW1lbnQgfHwgKCFpc0Ns
aWNrYWJsZUVsZW1lbnQoY3VycmVudEVsZW1lbnQsIDApICYmICFpc1ZhbGlkRnJhbWVPd25lcihj
dXJyZW50RWxlbWVudCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgSW50UmVj
dCBjdXJyZW50RWxlbWVudEJvdW5kaW5nUmVjdCA9IGN1cnJlbnRFbGVtZW50LT5nZXRQaXhlbFNu
YXBwZWRSZWN0KCk7CisgICAgICAgIEludFJlY3QgY3VycmVudEVsZW1lbnRCb3VuZGluZ1JlY3Qg
PSBjdXJyZW50RWxlbWVudC0+cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3goKTsKICAgICAgICAgY3Vy
cmVudEVsZW1lbnRCb3VuZGluZ1JlY3QuaW50ZXJzZWN0KHRvdWNoUmVjdCk7CiAKICAgICAgICAg
aWYgKGN1cnJlbnRFbGVtZW50Qm91bmRpbmdSZWN0LmlzRW1wdHkoKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>