<?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>12499</bug_id>
          
          <creation_ts>2007-01-31 04:27:22 -0800</creation_ts>
          <short_desc>External &lt;use&gt; xlink:href references do not work</short_desc>
          <delta_ts>2012-07-13 07:08:21 -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>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.w3.org/Graphics/SVG/Test/20061213/htmlEmbedHarness/full-struct-use-05-b.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>65344</dependson>
    
    <dependson>81109</dependson>
    
    <dependson>91237</dependson>
          <blocked>55931</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Renata Hodovan">rhodovan.u-szeged</assigned_to>
          <cc>abarth</cc>
    
    <cc>adkdmp</cc>
    
    <cc>alex</cc>
    
    <cc>ap</cc>
    
    <cc>basmith7</cc>
    
    <cc>boadadf</cc>
    
    <cc>buildbot</cc>
    
    <cc>chicmovement</cc>
    
    <cc>ctruta</cc>
    
    <cc>ctruta</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jay</cc>
    
    <cc>jschuh</cc>
    
    <cc>j.tosovsky</cc>
    
    <cc>krit</cc>
    
    <cc>lea</cc>
    
    <cc>mkorourk</cc>
    
    <cc>morrita</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>rhodovan.u-szeged</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>szeky</cc>
    
    <cc>thienthang</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>webkit</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zajec5</cc>
    
    <cc>zbynek.jun</cc>
    
    <cc>zherczeg</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>29893</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-01-31 04:27:22 -0800</bug_when>
    <thetext>External &lt;use&gt; xlink:href references do not work

This has to be one of the craziest aspects of SVG, the ability to do fragment references from within xlink:href attributes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29899</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-01-31 04:37:28 -0800</bug_when>
    <thetext>Another example of external references:
http://www.w3.org/Graphics/SVG/Test/20061213/htmlEmbedHarness/full-text-tref-01-b.html
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7813</commentid>
    <comment_count>2</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-06-12 10:07:23 -0700</bug_when>
    <thetext>We are lowering the priority because this is not heavily used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71017</commentid>
    <comment_count>3</comment_count>
    <who name="jay">jay</who>
    <bug_when>2008-02-18 01:13:28 -0800</bug_when>
    <thetext>Parity Opera:
http://files.myopera.com/MacDev_ed/sarpsborg2007/external-use.svg

does this bug need a testcase or description?

#2 Rob, this is not heavily used, because support is not widespread...
ubiquitous support makes a huge difference.
please raise priority.

symbol languages are used by people with low literacy. 
just one example:
they purchase symbol libraries at high expense, which are stored locally.
email applications then only transmit text which has symbols added.

there are very similar requirements for the web...
regards</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73134</commentid>
    <comment_count>4</comment_count>
    <who name="jay">jay</who>
    <bug_when>2008-03-09 13:22:57 -0700</bug_when>
    <thetext>Parity Amaya

SVG microformat for icons:
http://www.gnote.org/svgSearch/requirements.html

Authoring Tool Guidelines to follow shortly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79035</commentid>
    <comment_count>5</comment_count>
    <who name="jay">jay</who>
    <bug_when>2008-04-27 02:15:05 -0700</bug_when>
    <thetext>parity Batik,

openclipart.org and inkscape output are stymied because this has not been implemented.
It&apos;s pretty close to impossible to search svg as graphic unless one understands and implements use.
http://www.openicon.org/icon-ark/weather-icons.svgz
18 icons in 2.3K

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80062</commentid>
    <comment_count>6</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-05-10 03:48:21 -0700</bug_when>
    <thetext>Would be nice to have this, and also external tref. Any security issues to consider?
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80249</commentid>
    <comment_count>7</comment_count>
      <attachid>21102</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-05-12 23:51:27 -0700</bug_when>
    <thetext>Created attachment 21102
Initial patch

This patch makes external trefs work. External use is a bit harder, I did not
succeed yet in making the external document references like paintserver work yet.
Still there is a lot of code already that can be reviewed I think. Maybe we can even land the tref and use stuff separately.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80255</commentid>
    <comment_count>8</comment_count>
    <who name="jay">jay</who>
    <bug_when>2008-05-13 02:50:23 -0700</bug_when>
    <thetext>#7
if this bug needs to be taken to bits, 
the bit I&apos;m voting for is &lt;symbols&gt; that are externally referenced..
test case in #5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81289</commentid>
    <comment_count>9</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-05-23 03:47:36 -0700</bug_when>
    <thetext>What are the security implications of external references? Are they allowed cross-site?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81406</commentid>
    <comment_count>10</comment_count>
      <attachid>21102</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-05-24 23:01:30 -0700</bug_when>
    <thetext>Comment on attachment 21102
Initial patch

+    This file is part of the KDE libraries

I don&apos;t think it&apos;s helpful to include this in WebKit source files.

 #include &quot;CachedXSLStyleSheet.h&quot;
+#if ENABLE(SVG)
+#include &quot;CachedSVGDocument.h&quot;
+#endif
 #include &quot;CString.h&quot;

We normally put includes that require an #if in a separate paragraph, after all the unconditional includes.

 class CachedXSLStyleSheet;
+#if ENABLE(SVG)
+class CachedSVGDocument;
+#endif
 class Document;

Same with class forward declarations.

+    CachedSVGDocument* requestSVGDocument(const String &amp;url);

Please put the &amp; next to the typename.

 #include &quot;XLinkNames.h&quot;
+#include &quot;DocLoader.h&quot;
+#include &quot;CachedSVGDocument.h&quot;

Please keep includes sorted alphabetically.

+    , m_cachedDoc(0)

Why abbreviate? Why not &quot;m_cachedDocument&quot;?

+    if (url.find(&apos;#&apos;) &gt; -1) { // format is #target
+        unsigned int end = url.find(&apos;#&apos;);

It doesn&apos;t make sense to call find twice here. Since this is URL parsing, I think this should be done with a helper function in KURL.h. It would go along with the others, like equalIgnoringRef and protocolIs. No need to do that in this patch, but a good idea in the end. I really don&apos;t think that getDocUrl is a good name for this function. The abbreviation is unclear, for one thing.

+    if (docUrl.isEmpty())
+        return document();
+    else

We normally don&apos;t do else after return.

+    const Document* doc = referencedDocument();

Why const?

You need a test case for this new feature! I&apos;m setting review- because of the lack of a test case mainly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81411</commentid>
    <comment_count>11</comment_count>
      <attachid>21329</attachid>
    <who name="jay">jay</who>
    <bug_when>2008-05-24 23:16:18 -0700</bug_when>
    <thetext>Created attachment 21329
use #carrot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81412</commentid>
    <comment_count>12</comment_count>
    <who name="jay">jay</who>
    <bug_when>2008-05-24 23:17:41 -0700</bug_when>
    <thetext>apologies, reduced testcase now attached..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81420</commentid>
    <comment_count>13</comment_count>
    <who name="jay">jay</who>
    <bug_when>2008-05-24 23:57:11 -0700</bug_when>
    <thetext>nb, this bug covers other cases than &lt;use:symbol&gt; which is the reduction test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82392</commentid>
    <comment_count>14</comment_count>
    <who name="jay">jay</who>
    <bug_when>2008-06-05 23:50:36 -0700</bug_when>
    <thetext>practical example: http://www.openicon.org/irc/ircwithIcon.svg

follows irc://irc.freenode.net/#svg and appends an icon for each word, where available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83314</commentid>
    <comment_count>15</comment_count>
    <who name="jay">jay</who>
    <bug_when>2008-06-14 05:20:42 -0700</bug_when>
    <thetext>#14 please use http://www.openicon.org and follow the links
wfm Opera</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91030</commentid>
    <comment_count>16</comment_count>
    <who name="jay">jay</who>
    <bug_when>2008-09-13 03:35:55 -0700</bug_when>
    <thetext>I would now like to purchase an itouch or iphone with safari and SVG support.

however I&apos;m waiting on this bug....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108264</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Stukalov">astukalov</who>
    <bug_when>2009-02-04 07:45:21 -0800</bug_when>
    <thetext>IIUC this bugs also has big impact on the usability of external stylesheets in SVG.

Suppose SVG file &apos;a.svg&apos; uses stylesheet file &apos;style.css&apos;. &apos;style.css&apos;, on the other hand, uses &apos;b.svg&apos; to define gradients, patterns etc (.myfill { fill:url(b.svg#fooGrad)} ).

The effect of this bug is that &apos;myfill&apos; style would be undefined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108269</commentid>
    <comment_count>18</comment_count>
      <attachid>27315</attachid>
    <who name="Alexey Stukalov">astukalov</who>
    <bug_when>2009-02-04 08:05:51 -0800</bug_when>
    <thetext>Created attachment 27315
external stylesheet referencing svg defs

Attached testcase:
 * test8.svg - actual image to test, uses prologo.css
 * prologo.css - CSS for test8.svg, uses prologoDefs.svg
 * prologoDefs.svg - SVG file with definitions of gradients and patterns
 * test8.png - rendering of what seems to be the correct implementation (batik 1.7)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108272</commentid>
    <comment_count>19</comment_count>
    <who name="jay">jay</who>
    <bug_when>2009-02-04 08:52:24 -0800</bug_when>
    <thetext>(In reply to comment #18)

Alexay

thanks for raising the issue of css, however please file a separate bug.
also a simple example might work better.
eg red for fail, green for success might be easier to interpret

filters, gradients and patterns are not necessarily core to your bug...
they may need to be filed as separate bugs at a later date.

are you sure your attachment is standards based?

prologoDefs.svg did not render in recent mozilla or opera builds using os x
similarly test8.svg was not easy to interpret.

regards
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108288</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Stukalov">astukalov</who>
    <bug_when>2009-02-04 10:00:37 -0800</bug_when>
    <thetext>(In reply to comment #19)
Thanks for quick reply. I&apos;ll try to submit the more specific bug with simplified test case later. I&apos;ve submitted that one just to demonstrate, that external fragment referencing has one important usecase.

I believe the case is based on standards; but, unfortunately, mozilla, webkit and opera have (different) issues with their implementations.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119232</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-28 17:29:39 -0700</bug_when>
    <thetext>*** Bug 22172 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134886</commentid>
    <comment_count>22</comment_count>
    <who name="jay">jay</who>
    <bug_when>2009-07-27 04:12:44 -0700</bug_when>
    <thetext>one not so simple workaround is to:

Parse XML to js objects then use DOM manipulation.

why so slow to fix this &apos;n&apos; xslt bugs?

this sure aint a web 2.0 world...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136125</commentid>
    <comment_count>23</comment_count>
    <who name="jay">jay</who>
    <bug_when>2009-07-31 02:57:18 -0700</bug_when>
    <thetext>crash

this has now become a crash bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136126</commentid>
    <comment_count>24</comment_count>
    <who name="jay">jay</who>
    <bug_when>2009-07-31 03:01:04 -0700</bug_when>
    <thetext>oops apologies needs new bug, slightly different issue.

however if there is one webkit bug that I would vote to be fixed

This is it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136135</commentid>
    <comment_count>25</comment_count>
    <who name="jay">jay</who>
    <bug_when>2009-07-31 03:48:55 -0700</bug_when>
    <thetext>maybe related to bug 27872</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136514</commentid>
    <comment_count>26</comment_count>
    <who name="Doug Schepers">webkit</who>
    <bug_when>2009-08-02 00:17:31 -0700</bug_when>
    <thetext>The ability to use external references is actually a primary use case for the &lt;use&gt; element, and is very important to SVG&apos;s usability.  With external references, gradients and other paint servers, filters, and symbols can be stored in a &quot;library&quot; of resources, and easily reused.

This functionality works in Firefox 3.5 and Opera, and should be supported in WebKit.  If there are concerns about security issues, a sensible restriction would be to allow only same-domain resources to be referenced.

If there is anything the SVG WG can do to clarify the specification, improve tests, or help coordinate between implementers to ensure interoperability of this feature, please send an email to www-svg@w3.org.  We&apos;ll be happy to help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192197</commentid>
    <comment_count>27</comment_count>
    <who name="Jason Felds">jafelds</who>
    <bug_when>2010-02-20 11:15:14 -0800</bug_when>
    <thetext>Perhaps an actual example of SVG in use could convince this bug to be fixed.

http://beta.pumpproedits.com/chart/quick/79/rhythm

This is one of the many SVG generated stepcharts for edits for the game Pump It Up Pro. I wish to use SVG due to scalability and better file sizes. The format also compresses well due to the repeating tags. I have my core SVG files stored elsewhere on the server, and I link to them to try to help with caching, similar to how CSS does its magic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197880</commentid>
    <comment_count>28</comment_count>
    <who name="Adk">adkdmp</who>
    <bug_when>2010-03-09 21:32:35 -0800</bug_when>
    <thetext>Any update on this bug...?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250874</commentid>
    <comment_count>29</comment_count>
    <who name="Dakota Schneider">dakota</who>
    <bug_when>2010-07-13 18:10:40 -0700</bug_when>
    <thetext>Kicking this case because it&apos;s still broken and is a MAJOR problem.

As said, it is imperative that &lt;use&gt; work externally, otherwise it is close to useless to have in the first place.

Example: http://hackthetruth.org/index-svg.php

Works in FF and O nightly, but not Webkit nightly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253576</commentid>
    <comment_count>30</comment_count>
      <attachid>62037</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-07-19 23:49:30 -0700</bug_when>
    <thetext>Created attachment 62037
Patch reworked against trunk

This is the original patch reworked against master. The main difference is that KURL is better reused now. It is not up for review since a lot needs to be done still:

- &lt;use&gt; referring an external fragment that uses an external paintserver does not work
- there is a &lt;use&gt; bug when referring to &lt;symbol&gt;, when not as outer use width/height are not transferred, see batikLogo.svg
- could still crash with certain testcases
- cycles are not detected yet
- needs lots more tests

Hopefully in the next few weeks I can work on it and it should also get lots of attention during the upcoming ksvg hack weekend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253668</commentid>
    <comment_count>31</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-07-20 05:45:17 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; Created an attachment (id=62037) [details]
&gt; Patch reworked against trunk
&gt; 
&gt; This is the original patch reworked against master. The main difference is that KURL is better reused now. It is not up for review since a lot needs to be done still:
&gt; 
&gt; - &lt;use&gt; referring an external fragment that uses an external paintserver does not work
&gt; - there is a &lt;use&gt; bug when referring to &lt;symbol&gt;, when not as outer use width/height are not transferred, see batikLogo.svg
&gt; - could still crash with certain testcases
&gt; - cycles are not detected yet
&gt; - needs lots more tests

Hi Rob,

good to see you working again on it. A general comment: I&apos;d propose to refactor the CachedXBLDocument code into a shared CachedDocument class, so that both CachedSVGDocument &amp; CachedXBLDocument can inherit from it.

Cheers,
Niko</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314886</commentid>
    <comment_count>32</comment_count>
    <who name="SKhan">chicmovement</who>
    <bug_when>2010-11-30 00:17:20 -0800</bug_when>
    <thetext>Desperately wanting this patch. Thanks Rob for working on this for us all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350874</commentid>
    <comment_count>33</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2011-02-14 14:11:17 -0800</bug_when>
    <thetext>I looked at Rob Buis&apos; patch, and I discussed it with Nate Chapin. The patch no longer applies to today&apos;s trunk, because of the move of WebCore into Source/, as well as other structural changes that happened since Rob&apos;s last submission in July 2010. But more importantly, there seem to be semantic issues.

In the WebKit bug 15443 &quot;SVGImage does not support sub-resource loading&quot; a couple of problems are outlined, one of which is the fact that subresources have a bunch of limitations when compared to the main resources. They cannot further load other subresources, etc. I believe that Niko&apos;s suggestion in comment #31 to introduce the CachedDocument class is (partially) related to the issue of having &lt;use&gt;&apos;d resources act as main resources.

We (i.e. Nate and I) believe that Rob&apos;s patch that modifies classes from WebCore/loader/cache/ (CachedResource, CachedResourceClient, CachedResourceLoader, etc.) can only deal with subresources, just like anything else that is accessing these classes. (Anything that goes through this cache is a subresource -- CachedResourceRequest is the loader client for subresources.) We might therefore get a strange behavior, because we&apos;re loading something that should be a main resource, as a subresource; but subresources are not designed to carry themselves other subresources.

Instead, a solution that resembles handling of frames in HTML would be the better way to go. Load &lt;use&gt;&apos;d elements as real frames, not as subresources.
Loading HTML frames is handled by the means of the class HTMLFrameOwnerElement. We could have a similar class, say, SVGAssetOwnerElement, that could perhaps share a common ancestor with HTMLFrameOwnerElement, (let&apos;s call it Owner), and then split the semantics: the HTML-specific semantics would go to HTMLFrameOwnerElement, while the SVG-specific semantics would go to SVGAssetOwnerElement. (And &quot;SVG asset&quot; could be &lt;svg&gt;, &lt;g&gt;, &lt;symbol&gt;, or anything else that could be &lt;use&gt;&apos;d.)

  class Owner
  class HTMLFrameOwnerElement : public Owner, public HTMLElement
  class SVGAssetOwnerElement : public Owner, public SVGElement
  class SVGTextAssetOwnerElement : public SVGAssetElement  // used by &lt;tref&gt;

Perhaps, to avoid confusion that might arise because these classes do not correspond directly to actual elements, alternative names like HTMLFrameOwner (instead of HTMLFrameOwnerElement) and SVGAssetOwner (instead of SVGAssetOwnerElement) might be better.

Security-wise, just as with the current HTMLFrameOwnerElement, we must be careful about the newly-introduced SVGAssetOwnerElement. As far as I know, SVG has no SandboxFlags, although, I think it should. At least in the beginning, SVGAssetOwnerElement&apos;s SandboxFlags should be set to SandboxNone (and tested for that).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351061</commentid>
    <comment_count>34</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2011-02-14 19:20:37 -0800</bug_when>
    <thetext>(In reply to comment #33)
s/SVGAssetOwner/SVGResourceOwner/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357766</commentid>
    <comment_count>35</comment_count>
      <attachid>83784</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2011-02-25 01:01:47 -0800</bug_when>
    <thetext>Created attachment 83784
Draft patch, asking for a preliminary review

This is an incomplete patch. I&apos;m asking for a preliminary review only.

I split HTMLFrameOwnerElement in three, with the parent Owner, and the children HTMLFrameOwnerElement (same name and behavior as the old one) and SVGResourceOwnerElement.

Then I tried to adapt Rob&apos;s patch to this design. I modified SVGUseElement accordingly. But two essential things are still missing: loading the resource, and using it. See the &quot;TODO(ctruta)&quot; placeholders, in SVGUseElement::parseMappedAttribute, and in SVGUseElement::referencedDocument. The bulk of the work will be in parseMappedAttribute; finishing referencedDocument should be trivial.

Care must be taken when &quot;file.svg#FOO&quot; and &quot;file.svg#BAR&quot; appear together in the tree (but not necessarily in the same document). Niko pointed out the following:

How would the &quot;frame-like&quot; concept integrate into the existing &lt;use&gt; shadow tree? Whenever a &lt;use&gt; element is created, it will clone it&apos;s target into it&apos;s own shadow tree (a child of the &lt;use&gt; itself), and deep-clone that target tree into the &lt;use&gt; shadow tree. That would remove the need for &apos;subresource&apos; loading. It&apos;s just as if the content has been textually included in the original document.
So, if we have &lt;use &quot;file.svg#FOO&quot;&gt;, then later, we encounter &lt;use &quot;file.svg#BAR&quot;&gt;, we construct the whole tree for &quot;file.svg&quot;, then clone the shadow subtree for &quot;foo.svg#FOO&quot;, then do the same for &quot;foo.svg#BAR&quot;.

In summary, here are the steps:
1) Import first external reference, include into shadow tree. Don&apos;t build shadow tree renderers yet, only the DOM.
2) Walk the DOM, resolve any external uses, etc. Don&apos;t do any renderer creation until the whole resolving is a) done or b) abort if it cycles.

In addition, we&apos;ll need to find a certain class/object that handles cycles. Cycles are to be identified by URIs that match all the way to the #fragment component (excluding the #fragment component).
I&apos;ll worry about cycles later, though. I&apos;d be happy to see the basics done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357774</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-25 01:14:34 -0800</bug_when>
    <thetext>Attachment 83784 did not build on chromium:
Build output: http://queues.webkit.org/results/8019133</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357793</commentid>
    <comment_count>37</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-25 02:35:45 -0800</bug_when>
    <thetext>Attachment 83784 did not build on win:
Build output: http://queues.webkit.org/results/8032158</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357815</commentid>
    <comment_count>38</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-25 03:29:59 -0800</bug_when>
    <thetext>Attachment 83784 did not build on win:
Build output: http://queues.webkit.org/results/8035137</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357818</commentid>
    <comment_count>39</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-02-25 03:50:38 -0800</bug_when>
    <thetext>Attachment 83784 did not build on qt:
Build output: http://queues.webkit.org/results/8035152</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357822</commentid>
    <comment_count>40</comment_count>
      <attachid>83784</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-02-25 04:01:31 -0800</bug_when>
    <thetext>Comment on attachment 83784
Draft patch, asking for a preliminary review

svg/SVGResourceOwnerElement.cpp and .h are missing from this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357892</commentid>
    <comment_count>41</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-02-25 07:05:31 -0800</bug_when>
    <thetext>Attachment 83784 did not build on gtk:
Build output: http://queues.webkit.org/results/8032255</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357908</commentid>
    <comment_count>42</comment_count>
      <attachid>83812</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2011-02-25 07:44:53 -0800</bug_when>
    <thetext>Created attachment 83812
Draft patch, asking for a preliminary review

(In reply to comment #40)
&gt; svg/SVGResourceOwnerElement.cpp and .h are missing from this patch.

Oops. Resubmitted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357910</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-25 07:47:36 -0800</bug_when>
    <thetext>Attachment 83812 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/svg/SVGResourceOwnerElement.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/svg/SVGResourceOwnerElement.h:26:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357915</commentid>
    <comment_count>44</comment_count>
      <attachid>83814</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2011-02-25 07:53:26 -0800</bug_when>
    <thetext>Created attachment 83814
Draft patch, asking for a preliminary review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357917</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-25 07:57:36 -0800</bug_when>
    <thetext>Attachment 83812 did not build on chromium:
Build output: http://queues.webkit.org/results/8031281</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357918</commentid>
    <comment_count>46</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-25 08:06:33 -0800</bug_when>
    <thetext>Attachment 83814 did not build on chromium:
Build output: http://queues.webkit.org/results/8032286</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357943</commentid>
    <comment_count>47</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-02-25 08:46:52 -0800</bug_when>
    <thetext>Attachment 83814 did not build on qt:
Build output: http://queues.webkit.org/results/8031310</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358438</commentid>
    <comment_count>48</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-02-26 01:57:11 -0800</bug_when>
    <thetext>(In reply to comment #33) 
&gt; This is an incomplete patch. I&apos;m asking for a preliminary review only.
&gt; 
&gt; I split HTMLFrameOwnerElement in three, with the parent Owner, and the children HTMLFrameOwnerElement (same name and behavior as the old one) and SVGResourceOwnerElement.
I fail to see the need to reuse anything of the frame logic. It boils down to the question how loading is now handled? My first attempt would be to make SVGUseElement a CachedResourceClient, and let it load a CachedDocument, async, then process it. How is loading handled for frames? How do you want to implement it, using this frame-like concept?

&gt; 1) Import first external reference, include into shadow tree. Don&apos;t build shadow tree renderers yet, only the DOM.
&gt; 2) Walk the DOM, resolve any external uses, etc. Don&apos;t do any renderer creation until the whole resolving is a) done or b) abort if it cycles.
&gt; 
&gt; In addition, we&apos;ll need to find a certain class/object that handles cycles. Cycles are to be identified by URIs that match all the way to the #fragment component (excluding the #fragment component).
&gt; I&apos;ll worry about cycles later, though. I&apos;d be happy to see the basics done.
Sure. Let&apos;s get a simple version working first :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372687</commentid>
    <comment_count>49</comment_count>
      <attachid>86746</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2011-03-23 23:23:39 -0700</bug_when>
    <thetext>Created attachment 86746
Draft patch, asking for review

I am abandoning the direction taken in the previous patch that involved SVGResourceOwnerElement, in response to Niko&apos;s suggestion in comment #48.

This is a heavily-reworked version of the old patch submitted by Rob Buis in 2010-07-19.
Rob&apos;s CachedSVGDocument is replaced with the more generic CachedDocument. Although CachedDocument is not meant to be SVG-specific, it is conditionally compiled with #if ENABLED(SVG), because, currently, only SVG needs it.

The ChangeLog entry needs more details, and the external &lt;tref&gt; element is yet to be handled, perhaps in a different bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372707</commentid>
    <comment_count>50</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-24 00:33:19 -0700</bug_when>
    <thetext>Attachment 86746 did not build on win:
Build output: http://queues.webkit.org/results/8237189</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372709</commentid>
    <comment_count>51</comment_count>
    <who name="Justin Schuh">jschuh</who>
    <bug_when>2011-03-24 00:37:57 -0700</bug_when>
    <thetext>This is just an informal drive-by on my part, but it looks like you&apos;re going to be left with a stale m_cachedDocument in the case where the USE element is moved to a new document and the original document is destroyed. It seems like you should factor out the logic from parseMappedattribute into it&apos;s own method that you call from insertedIntoDocument as well. It also looks like you&apos;ll need a similar call in svgAttributeChanged for when SVGURIReference::isKnownAttribute returns true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372711</commentid>
    <comment_count>52</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-24 00:54:50 -0700</bug_when>
    <thetext>Attachment 86746 did not build on win:
Build output: http://queues.webkit.org/results/8234353</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372951</commentid>
    <comment_count>53</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-03-24 11:12:40 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; (In reply to comment #33) 
&gt; &gt; This is an incomplete patch. I&apos;m asking for a preliminary review only.
&gt; &gt; 
&gt; &gt; I split HTMLFrameOwnerElement in three, with the parent Owner, and the children HTMLFrameOwnerElement (same name and behavior as the old one) and SVGResourceOwnerElement.
&gt; I fail to see the need to reuse anything of the frame logic. It boils down to the question how loading is now handled? My first attempt would be to make SVGUseElement a CachedResourceClient, and let it load a CachedDocument, async, then process it. How is loading handled for frames? How do you want to implement it, using this frame-like concept?

I&apos;m really sorry for not jumping in sooner on this.

The reason for implementing this with a FrameOwner concept is that Subresources can&apos;t load if they&apos;re in a Document with a null frame.  Note that we exit early in http://trac.webkit.org/browser/trunk/Source/WebCore/loader/SubresourceLoader.cpp#L65 if frame is null, and that Frame will be the Document&apos;s Frame.

I&apos;m not an svg expert, but my understanding is that external use references should be able to pull in, e.g., images from the external document, and for that you need the Document to have a Frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373286</commentid>
    <comment_count>54</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2011-03-24 20:34:55 -0700</bug_when>
    <thetext>In addition to Justin&apos;s remarks in comment #51, I can also see that SVGUseElement::parseMappedAttribute is currently broken.

If I have the following three files:

** file &quot;main.svg&quot;
&lt;svg&gt;
&lt;use href=&quot;level1.svg#TOP&quot;&gt;
&lt;/svg&gt;

** file &quot;level1.svg&quot;
&lt;svg&gt;
&lt;circle id=&quot;RECT&quot;&gt; &lt;!-- deliberate mismatch to show error --&gt;
&lt;use href=&quot;level2.svg#RECT&quot;&gt;
&lt;/svg&gt;

** file &quot;level2.svg&quot;
&lt;svg&gt;
&lt;rect id=&quot;RECT&quot;&gt;
&lt;/svg&gt;

Then, with the currently-submitted patch, I am seeing the &lt;circle&gt; from &quot;level1.svg&quot;, instead of the &lt;rect&gt; from &quot;level2.svg&quot;. That&apos;s because, while processing &quot;level1.svg&quot;, the cachedDocument being loaded in parseMappedAttribute is &quot;level1.svg&quot; instead of &quot;level2.svg&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374199</commentid>
    <comment_count>55</comment_count>
      <attachid>86746</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-03-27 12:30:07 -0700</bug_when>
    <thetext>Comment on attachment 86746
Draft patch, asking for review

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

Overall the code looks good. Some of the asserts and returns on document testing may need good studying, but I think it is done correct. Apart from the minor gripes above I think a few more tests are needed.

&gt; Source/WebCore/ChangeLog:9
&gt; +        (Currently it only needs to handle SVG documents.)

Don&apos;t forget the overall goal. I&apos;d personally say &quot;Support external references on &lt;use&gt; by introducing CachedDocument, which handles document subresources.&quot;

&gt; Source/WebCore/ChangeLog:10
&gt; +        An instance of this class is a member in SVGUseElement.

This line is not very helpful and can be discarded. Better may be to add such info here:
* svg/SVGUseElement.h: store CachedDocument

&gt; Source/WebCore/loader/cache/CachedDocument.cpp:73
&gt; +    // FIXME: this should not be SVG-specific. Try Document::create.

Is the FIXME still valid?

&gt; Source/WebCore/svg/SVGUseElement.cpp:130
&gt; +                KURL kurl(document()-&gt;baseURI(), href());

Better just use url instead of kurl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374200</commentid>
    <comment_count>56</comment_count>
      <attachid>86746</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-03-27 12:31:24 -0700</bug_when>
    <thetext>Comment on attachment 86746
Draft patch, asking for review

Oops, forgot to r-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378362</commentid>
    <comment_count>57</comment_count>
      <attachid>86746</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-04-02 00:22:35 -0700</bug_when>
    <thetext>Comment on attachment 86746
Draft patch, asking for review

Cosmin, can you update the patch with Robs suggestions?
Btw, I&apos;m sure we have lots of batik tests that embed an external &lt;use&gt; file. You need to run all layout tests, I&apos;m sure there are changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378388</commentid>
    <comment_count>58</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2011-04-02 06:35:41 -0700</bug_when>
    <thetext>(In reply to comment #57)
&gt; (From update of attachment 86746 [details])
&gt; Cosmin, can you update the patch with Robs suggestions?

Yes, I&apos;m fixing the problem that I mentioned in comment #54, and while at it, I am also addressing Rob&apos;s concerns.

Then I&apos;ll go and address Justin&apos;s comment #51.

&gt; Btw, I&apos;m sure we have lots of batik tests that embed an external &lt;use&gt; file. You need to run all layout tests, I&apos;m sure there are changes.

I had run the layout tests before I submitted my patch, and I saw no regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390713</commentid>
    <comment_count>59</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-04-22 04:54:38 -0700</bug_when>
    <thetext>(In reply to comment #58)
&gt; (In reply to comment #57)
&gt; &gt; (From update of attachment 86746 [details] [details])
&gt; &gt; Cosmin, can you update the patch with Robs suggestions?
&gt; 
&gt; Yes, I&apos;m fixing the problem that I mentioned in comment #54, and while at it, I am also addressing Rob&apos;s concerns.
&gt; 
&gt; Then I&apos;ll go and address Justin&apos;s comment #51.
&gt; 
&gt; &gt; Btw, I&apos;m sure we have lots of batik tests that embed an external &lt;use&gt; file. You need to run all layout tests, I&apos;m sure there are changes.
&gt; 
&gt; I had run the layout tests before I submitted my patch, and I saw no regressions.

Cosmin, are you still on this bug? :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391444</commentid>
    <comment_count>60</comment_count>
      <attachid>90851</attachid>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2011-04-23 02:17:50 -0700</bug_when>
    <thetext>Created attachment 90851
Draft patch

Here is a patch in which I&apos;m addressing Rob&apos;s comments, and making other necessary changes in order to make it build with the WebKit du jour. Notably, I accounted for CachedResource::DocumentResource inside CachedResourceLoader::canRequest, in the light of the newly-added ContentSecurityPolicy class.

There are no significant fixes, though, as I haven&apos;t had sufficient time for that. (I&apos;m only working on this in my spare time, which, nowadays, is very little.)

I noticed that, inside SVGUseElement::parseMappedAttribute, document()-&gt;baseURI() is invalid when the &lt;use&gt; element is inside a cached document. This is the reason behind the failure that I described in the example from comment #54. The cached document&apos;s m_baseURL needs to be initialized, and the place to do that (I think) is right at the point where it&apos;s created, i.e. inside CachedDocument::data(). I didn&apos;t get to make it work yet, though. A simple call to m_document-&gt;setDocumentURI(m_url) doesn&apos;t seem to be sufficient, and I&apos;m looking into that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414945</commentid>
    <comment_count>61</comment_count>
    <who name="Harald Szekely">szeky</who>
    <bug_when>2011-06-03 09:22:56 -0700</bug_when>
    <thetext>I&apos;ve read all of the comments here and hope that my comment is right in here: 

We really desperately need support for loading external style sheets into svg images referenced by html&apos;s &quot;img&quot;-tag! Every other browser does this today, even Internet Explorer. Why not WebKit? I&apos;m very frustrated with the actual situation, with WebKit being the only one not being able to read external stylesheets or other external ressources, when used as image!  

Any news on that issue? Please let us use external stylesheets! That would make svg&apos;s really usable at last, even if there are more issues open! 

I&apos;m not completely sure if my request is right here, but others have also mentioned external css ressources (see comments 17, 18, 19, 27).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414951</commentid>
    <comment_count>62</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-03 09:29:18 -0700</bug_when>
    <thetext>This is the wrong bug for your comments. :)  I suspect you meant to vent in bug 15443.  Then again, venting in bugs is not helpful.  Patches are.  There are folks in #webkit on irc.freenode.org who are happy to help you hack webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416292</commentid>
    <comment_count>63</comment_count>
    <who name="Cosmin Truta">ctruta</who>
    <bug_when>2011-06-06 21:33:42 -0700</bug_when>
    <thetext>I&apos;m awfully sorry, but I can no longer work on this bug (nor on any other WebKit bug), due to a conflict of interests. I wish good luck to the people who will take over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429018</commentid>
    <comment_count>64</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-06-28 11:23:38 -0700</bug_when>
    <thetext>*** Bug 55931 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432842</commentid>
    <comment_count>65</comment_count>
    <who name="Alex gRay">alex</who>
    <bug_when>2011-07-06 09:55:19 -0700</bug_when>
    <thetext>&lt;&lt;BUMP.&gt;&gt;  Is there ANY update on this?  This bug is YEARS OLD!   Webkit is the ONLY browser not supporting this VITAL feature that would FINALLY allow SVG to be of some discernible purpose in this world.  PLEASE MAKE PRIORITY.  

If there is confusion as to why this is needed... take the following example...  On a website that uses &quot;icons&quot;...  They could all be defined as SVG symbols in a simple XML document and then referenced by ID in the main document.  Its basically a free database for graphics on any site.  This is so essential, I can&apos;t even state...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434990</commentid>
    <comment_count>66</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-07-11 10:39:07 -0700</bug_when>
    <thetext>*** Bug 63670 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443875</commentid>
    <comment_count>67</comment_count>
    <who name="jay">jay</who>
    <bug_when>2011-07-29 04:08:14 -0700</bug_when>
    <thetext>due to a conflict of interests I am no longer filing bugs on webkit.
please ensure I do not receive emails regarding this bug.

my email doesnt seem to be in the cc list?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443879</commentid>
    <comment_count>68</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-07-29 04:20:21 -0700</bug_when>
    <thetext>(In reply to comment #67)
&gt; due to a conflict of interests I am no longer filing bugs on webkit.
&gt; please ensure I do not receive emails regarding this bug.
&gt; 
&gt; my email doesnt seem to be in the cc list?

You added yourself to this bug again - see history. Make sure that you remove your email from this bug and that you are not following someone on this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492253</commentid>
    <comment_count>69</comment_count>
    <who name="Lea Verou">lea</who>
    <bug_when>2011-10-27 23:03:54 -0700</bug_when>
    <thetext>Is there anyone working on this bug? It’s a vital SVG feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492471</commentid>
    <comment_count>70</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2011-10-28 08:44:56 -0700</bug_when>
    <thetext>(In reply to comment #69)
&gt; Is there anyone working on this bug? It’s a vital SVG feature.

Yeah, I try to continue Cosmin&apos;s work. Wish me luck :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493192</commentid>
    <comment_count>71</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-10-31 00:41:16 -0700</bug_when>
    <thetext>*** Bug 36071 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519898</commentid>
    <comment_count>72</comment_count>
    <who name="Dani FB">boadadf</who>
    <bug_when>2011-12-13 00:01:24 -0800</bug_when>
    <thetext>(In reply to comment #70)
&gt; (In reply to comment #69)
&gt; &gt; Is there anyone working on this bug? It’s a vital SVG feature.
&gt; 
&gt; Yeah, I try to continue Cosmin&apos;s work. Wish me luck :P

I wish you all luck on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528539</commentid>
    <comment_count>73</comment_count>
      <attachid>120886</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-01-02 09:07:43 -0800</bug_when>
    <thetext>Created attachment 120886
Draft patch

This is a draft patch which based on Cosmin&apos;s previous patch and adapted to the current repo.
It doesn&apos;t support recursive references and sandboxing yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528542</commentid>
    <comment_count>74</comment_count>
      <attachid>120886</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-02 09:30:24 -0800</bug_when>
    <thetext>Comment on attachment 120886
Draft patch

Attachment 120886 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11073037</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528544</commentid>
    <comment_count>75</comment_count>
      <attachid>120886</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-02 09:31:52 -0800</bug_when>
    <thetext>Comment on attachment 120886
Draft patch

Attachment 120886 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11076048</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528580</commentid>
    <comment_count>76</comment_count>
      <attachid>120886</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-01-02 14:19:43 -0800</bug_when>
    <thetext>Comment on attachment 120886
Draft patch

You should definitely write some security tests with self referencing, self referencing across documents. Referencing of resources over documents (patterns, gradients, masks, clipper, filter). Also resources that reference resources (with self referencing as well).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528682</commentid>
    <comment_count>77</comment_count>
      <attachid>120886</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-01-03 00:16:06 -0800</bug_when>
    <thetext>Comment on attachment 120886
Draft patch

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

Thanks Reni for taking this over, it obviously needs lots of new testcases, as Dirk already pointed out, but here&apos;s a first round of code comments:

&gt; LayoutTests/ChangeLog:8
&gt; +        * svg/custom/resources/rgb.svg: Wrapped &lt;rect&gt; elements in &lt;g&gt; and added id attributes.

This will affect lots of more testcases, all test cases in svg/batik import external files, and thus will change.
I&apos;d like to see the full set of changes, even when generated on non-mac platforms, to see how it affects those tests.

&gt; Source/WebCore/ChangeLog:9
&gt; +        Support external references on &lt;use&gt; by introducing CachedSVGDocument,
&gt; +        which handles document subresources.

In a final version of this patch, this ChangeLog needs to be much more verbose, as this is an important new feature.

&gt; Source/WebCore/GNUmakefile.list.am:2456
&gt; +        Source/WebCore/loader/cache/CachedSVGDocument.cpp \

Formatting.

&gt; Source/WebCore/loader/cache/CachedResourceClient.h:42
&gt; +        SVGDocumentType,

Why is this not conditionalized, or rather why is it done in Cachedresource.h at all? It should be consistent.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:41
&gt; +    setAccept(&quot;image/svg+xml&quot;);

Hm, can you avoid the temp strings. Or is this a char*, I didn&apos;t check?

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:80
&gt; +    String decodedText;
&gt; +    if (m_data) {
&gt; +        decodedText = m_decoder-&gt;decode(m_data-&gt;data(), m_data-&gt;size());
&gt; +        decodedText += m_decoder-&gt;flush();
&gt; +    }
&gt; +

That can be rewritten using StringBuilder, to avoid reallocations when using operator+=.
if (m_data) {
   StringBuilder builder;
   builder-&gt;append(....);
   m_document-&gt;setContent(builder.toString());
} else
    m_document-&gt;setContent(emptyString());

&gt; Source/WebCore/svg/SVGUseElement.cpp:155
&gt; +            if (!href().startsWith(&quot;#&quot;)) {

There should be better ways to detect that, or at least a central implementation like &quot;static inline bool isExternalURIReference&quot;, maybe even in SVGURIReference.

&gt; Source/WebCore/svg/SVGUseElement.cpp:193
&gt; +    if (href().startsWith(&quot;#&quot;))

Ditto.

&gt; Source/WebCore/svg/SVGUseElement.cpp:482
&gt; +    Document* doc = referencedDocument();

s/doc/document.

&gt; Source/WebCore/svg/SVGUseElement.cpp:543
&gt; +//    targetElement = doc-&gt;getElementById(m_resourceId);

Leftover?

&gt; Source/WebCore/svg/SVGUseElement.cpp:866
&gt; +        Document* doc = referencedDocument();

s/doc/document/

&gt; Source/WebCore/svg/SVGUseElement.cpp:925
&gt; +        Document* doc = referencedDocument();

Ditto.

&gt; Source/WebCore/svg/SVGUseElement.cpp:1100
&gt; +void SVGUseElement::setSVGDocument()

This needs a better name, here and in CachedSVGDocument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531634</commentid>
    <comment_count>78</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-01-07 03:54:59 -0800</bug_when>
    <thetext>The previous suggestions from Krit and Niko are done.
Even so I don&apos;t want to upload the patch till it doesn&apos;t work recursively. But now I faced a conceptual problem and I need a little help how it should work.
The issue described below:

                  +---- SVGCachedDocument -----+  
 +-------+        | +------ Document ------- + |
 |  USE  |  ----&gt; | |                        | |
 +-------+        | +------------------------+ |
                  +----------------------------+
								|			  
								|			 +---- SVGCachedDocument -----+  
							+-------+        | +------ Document ------- + |
							|  USE  |  ----&gt; | |                        | |
							+-------+        | +------------------------+ |
								             +----------------------------+
															|
															|
														+-------+
														|  RECT |
														+-------+
														

The test consist of three steps/files. The first one has a use element which points out the second file with an other use element. This second file refers to the third one with a rect element.
Processing the first file the algoritm creates a document using a visible frame and a CacedSVGDocument for the second svg. To be able to insert the proper instance based on this CachedSVGDocument to the instance tree later, the cached documents should have the same frame like their anchestor. At the same time this cached document doesn&apos;t have any information about it. One solution could be if we pass around this anchestor&apos;s frame. I don&apos;t know if it is correct.
On the other hand if I don&apos;t do this way and the Document is created w/o a frame then it&apos;s security origin will be &quot;unique&quot; and CachedResourceLoader::canRequest() in requestResource() will return with false and the request is rejected. We can avoid it if we create an own SecurityOrigin for the cached document, but I don&apos;t know again how rude hack is it.

Whatever... my questions are the following:
1) Could I propagate a frame around the documents or is it a layer violation?
2) Shall I maintain a list inside the SVGCachedDocument about the USE elements, who refers to this particular SVGCachedDocument?
3) How should been bounded the new document to the UseElement what it belongs to?

I CC-d Abarth &apos;cos I&apos;m sure he is one of the most competent developers in security related questions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531672</commentid>
    <comment_count>79</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-07 10:41:39 -0800</bug_when>
    <thetext>Woah, this bug has is long and complicated.  I&apos;m happy to help, but it&apos;s going to take me a while to sort through everything here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531739</commentid>
    <comment_count>80</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-08 02:01:09 -0800</bug_when>
    <thetext>Crazy.  Nate should really look at this patch.  We&apos;d like to load all sorts of documents through the CachedResourceLoader.  It&apos;s unclear to me why SVGDocuments should be handled specially, but maybe there&apos;s a good reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531813</commentid>
    <comment_count>81</comment_count>
      <attachid>120886</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-08 14:11:22 -0800</bug_when>
    <thetext>Comment on attachment 120886
Draft patch

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

This patch isn&apos;t a crazy as I thought at first.  You&apos;ve still got a good number of bugs that you&apos;ll want to resolve before landing this.  As I wrote above, Nat should really look at this patch before landing because he&apos;s more tuned into our long-term plans for created CachedDocument objects.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:26
&gt; +// Currently, we only need CachedSVGDocument for SVG documents.

That&apos;s not really true.  We can use them in HTML documents when using SVG-in-HTML.  The guard is still fine, but we should remove the comment.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:72
&gt; +    m_document = Document::create(0, KURL());

Why do we create a document with no URL?  Shouldn&apos;t we use the URL from which we received the document?

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:81
&gt; +    m_document-&gt;setContent(decodedText);

Do we want to wait for allDataReceived before calling setContent?  It seems better to use functions that let us supply data incrementally rather than blowing away all the content for each network packet.

&gt;&gt; Source/WebCore/svg/SVGUseElement.cpp:155
&gt;&gt; +            if (!href().startsWith(&quot;#&quot;)) {
&gt; 
&gt; There should be better ways to detect that, or at least a central implementation like &quot;static inline bool isExternalURIReference&quot;, maybe even in SVGURIReference.

This check seems wrong.  Why do we need to special-case fragments here?

&gt; Source/WebCore/svg/SVGUseElement.h:135
&gt; +    CachedSVGDocument* m_cachedDocument;

Don&apos;t we need to use a CachedResourceHandle rather than a raw pointer here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532267</commentid>
    <comment_count>82</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-01-09 10:16:17 -0800</bug_when>
    <thetext>Will this patch allow nested external references to work? I don&apos;t know enough about how &lt;use&gt; is supposed to work to be clear from this.

In terms of the CachedResource piece of this: as far as I&apos;m concerned, the design is fine as it stands. However, you should be warned that I&apos;m working on getting a standardized way of loading Documents through the MemoryCache (see https://bugs.webkit.org/show_bug.cgi?id=49246), and I may rewrite and scrap CachedSVGDocument as a part of that refactoring.

In the long run, a special CachedResource type for SVG documents should be unnecessary cruft, but as a temporary solution while I get the refactoring right, I don&apos;t object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536601</commentid>
    <comment_count>83</comment_count>
      <attachid>122648</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-01-16 09:03:28 -0800</bug_when>
    <thetext>Created attachment 122648
Proposed patch

This patch is still a draft. It needs better changelog ofc and maybe more tests, etc...
The following are contained in this version:
 * External resoruces are supported recursively too.
 * Self referencing is handled.
 * For some reason I needed to pass the ancestor&apos;s frame around (instead the security origin wouldn&apos;t be set to the proper value). I&apos;m not sure wheter it&apos;s the correct solution.
 * There are two functions in CachedResourceLoader (checkInsecureContent() and canRequest()) which are dealing with security settings. I tried to understand what are they for but I guess it needs more refinement.
 * Tests are added to check self referencing, self referencing across documents (these come from w3.org) and referencing of resources over documents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536608</commentid>
    <comment_count>84</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-01-16 09:09:03 -0800</bug_when>
    <thetext>The previous patch is maybe a bit large because it contains a lot of batik tests rebase. But Niko would like to see their results. Furthermore I have to admit that LayoutTests/platform/mac-snowleopard/svg/hixie/intrinsic/003.html shouldn&apos;t be rebased. It was a mistake. Sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536823</commentid>
    <comment_count>85</comment_count>
      <attachid>122648</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-16 17:25:28 -0800</bug_when>
    <thetext>Comment on attachment 122648
Proposed patch

Attachment 122648 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11252400</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536949</commentid>
    <comment_count>86</comment_count>
      <attachid>122648</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-01-17 01:09:50 -0800</bug_when>
    <thetext>Comment on attachment 122648
Proposed patch

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

Test results look very promising! I think there&apos;s a design flaw related to the SVGDocument creation, see below:

&gt; Source/WebCore/ChangeLog:10
&gt; +

You already said it: the ChangeLog is too short :-)

&gt; Source/WebCore/GNUmakefile.list.am:2486
&gt; +        Source/WebCore/loader/cache/CachedSVGDocument.cpp \
&gt; +        Source/WebCore/loader/cache/CachedSVGDocument.h \

Indentation.

&gt; Source/WebCore/loader/cache/CachedResourceClient.h:42
&gt; +        SVGDocumentType,

You forgot about my last comment here: either conditionalize both SVGDocumentType &amp; Resource or none, not a mixture.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:420
&gt; -    
&gt; +

Unnecessary.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:26
&gt; +// Currently, we only need CachedSVGDocument for SVG documents.

This can be removed IMHO.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:67
&gt; +        String decodedText;
&gt; +        decodedText = m_decoder-&gt;decode(data-&gt;data(), data-&gt;size());
&gt; +        decodedText += m_decoder-&gt;flush();
&gt; +        m_document-&gt;setContent(decodedText);

You should switch to StringBuilder here. I think I already mentioned that.

&gt; Source/WebCore/page/ContentSecurityPolicy.h:72
&gt; +    bool allowSVGDocumentFromSource(const KURL&amp;) const;

No SVG conditional here? Why?

&gt; Source/WebCore/svg/SVGURIReference.cpp:70
&gt; +

The newline can go as well.

&gt; Source/WebCore/svg/SVGUseElement.cpp:95
&gt; -    
&gt; +

I&apos;d remove the lines alltogether.

&gt; Source/WebCore/svg/SVGUseElement.cpp:162
&gt; +            if (!href().startsWith(&quot;#&quot;)) {

This...

&gt; Source/WebCore/svg/SVGUseElement.cpp:167
&gt; +                    m_cachedDocument-&gt;setFrame(document()-&gt;frame());

Aha, that&apos;s the suspicious part you found suspicious. You store the originating documents Frame in CachedSVGDocument::m_frame, and once CachedSVGDocument::data() is called, you pass it to the newly created SVGDocument.

Let&apos;s assume the approach is right in general, you still have an implementation bug here:
There doesn&apos;t seem to be any place that clears this Frame again, that means CachedSVGDocument will hold a RefPtr&lt;Frame&gt; keeping the original document alive.

The approach can&apos;t be right though. Think of 1.svg referencing foo.svg, and 2.svg referncing foo.svg
When I open Safari, browse to 1.svg, a CachedSVGDocument of foo.svg is created and its underlying SVGDocument is associated with 1.svg.
Next I browse to 2.svg, which now doesn&apos;t load foo.svg from the network, but from the cache and sees the same CachedSVGDocument than 1.svg saw, but still associated with 1.svg.

This implies you&apos;re always marrying the external document to the first originating document that references it.
We need to discuss this on IRC I think - in the meanwhile we should check how other parts of WebCore solve this for HTML.

&gt; Source/WebCore/svg/SVGUseElement.cpp:201
&gt; +    if (href().startsWith(&quot;#&quot;))

... should go in an extra helper function, either static inline here, or on SVGURIReference.

&gt; Source/WebCore/svg/SVGUseElement.cpp:339
&gt; +    SVGUseElement* correspondingUseElement = static_cast&lt;SVGUseElement*&gt;(correspondingElement);

This needs a comment, I don&apos;t understand why its needed at present.

&gt; Source/WebCore/svg/SVGUseElement.cpp:341
&gt; +    if ((correspondingUseElement-&gt;m_cachedDocument
&gt; +            &amp;&amp; correspondingUseElement-&gt;m_cachedDocument-&gt;isLoading()))

Outer braces can be omitted.

&gt; Source/WebCore/svg/SVGUseElement.cpp:495
&gt; +    Document* doc = referencedDocument();

s/doc/document/ No abbrev. pls ;-)

&gt; Source/WebCore/svg/SVGUseElement.cpp:538
&gt; +    Document* doc = referencedDocument();

Ditto.

&gt; Source/WebCore/svg/SVGUseElement.cpp:552
&gt; -    Element* targetElement = SVGURIReference::targetElementFromIRIString(href(), document());
&gt; +    String targetHref;
&gt; +    if (!href().startsWith(&quot;#&quot;)) {
&gt; +        KURL url(document()-&gt;baseURI(), href());
&gt; +        targetHref = url.string();
&gt; +    } else
&gt; +        targetHref = href();

This should be documented, and reorderered:
if (href().startsWith(&quot;#&quot;)) { .. } else { .. } to avoid one !.
Also it should make use of the aforementioned new helper function, to avoid repeating the startsWith(..) logic in several places.

&gt; Source/WebCore/svg/SVGUseElement.cpp:797
&gt; +    Element* targetElement = SVGURIReference::targetElementFromIRIString(use-&gt;href(), doc);

Why is the same logic regarding targetHref not needed here, as it is in buildShadowAndInstanceTree? This should be documented.

&gt; Source/WebCore/svg/SVGUseElement.cpp:877
&gt; +        if (use-&gt;m_cachedDocument &amp;&amp; use-&gt;m_cachedDocument-&gt;isLoading())

I&apos;ve already seen that above, should be refactored. Maybe a self-explainatory name for the function can avoid a comment for this alltogether.
if (cachedDocumentIsStillLoading()) ?

&gt; Source/WebCore/svg/SVGUseElement.cpp:880
&gt; +        Document* doc = referencedDocument();

s/doc/document/

&gt; Source/WebCore/svg/SVGUseElement.cpp:883
&gt; +        Element* targetElement = SVGURIReference::targetElementFromIRIString(use-&gt;href(), doc);

Again the use-&gt;href() question.

&gt; Source/WebCore/svg/SVGUseElement.cpp:939
&gt; +        Document* doc = referencedDocument();

s/doc/document/

&gt; Source/WebCore/svg/SVGUseElement.cpp:1015
&gt; +                   &amp;&amp; static_cast&lt;SVGUseElement*&gt;(target)-&gt;m_cachedDocument
&gt; +                   &amp;&amp; static_cast&lt;SVGUseElement*&gt;(target)-&gt;m_cachedDocument-&gt;isLoading()));

The function appears again :-)

&gt; Source/WebCore/svg/SVGUseElement.cpp:1122
&gt; +    if (renderer()) {

If we have no renderer, why do we need to notify the parent-&gt;renderer()? Nothing changed in that case. I think you can early exit if (!renderer())

&gt; Source/WebCore/svg/SVGUseElement.h:48
&gt; +    ~SVGUseElement();

This needs to be virtual!

&gt; Source/WebCore/svg/SVGUseElement.h:110
&gt; +    static void updateContainerOffset(SVGElementInstance* targetInstance);

I don&apos;t think we need the targetInstance name here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537879</commentid>
    <comment_count>87</comment_count>
      <attachid>122933</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-01-18 08:02:43 -0800</bug_when>
    <thetext>Created attachment 122933
Proposed patch

Yeah, I know... changelog :$ I&apos;ll summarize it tomorrow.
This patch contains Niko&apos;s suggestions from his last review and from our IRC conversation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537922</commentid>
    <comment_count>88</comment_count>
      <attachid>122945</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-01-18 09:31:57 -0800</bug_when>
    <thetext>Created attachment 122945
Proposed patch

I hope ews will like this version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537977</commentid>
    <comment_count>89</comment_count>
      <attachid>122945</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 10:30:35 -0800</bug_when>
    <thetext>Comment on attachment 122945
Proposed patch

Attachment 122945 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11281256</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539337</commentid>
    <comment_count>90</comment_count>
      <attachid>123267</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-01-20 01:11:14 -0800</bug_when>
    <thetext>Created attachment 123267
Proposed patch

This patch contains the missing changelogs and a speculative buildfix for the failing chromium ews.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539399</commentid>
    <comment_count>91</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-01-20 03:44:38 -0800</bug_when>
    <thetext>Failing chromium tests need just rebaseline, like batik tests on all the other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539983</commentid>
    <comment_count>92</comment_count>
      <attachid>123267</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-20 18:16:03 -0800</bug_when>
    <thetext>Comment on attachment 123267
Proposed patch

Attachment 123267 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11173759

New failing tests:
svg/batik/filters/filterRegions.svg
svg/batik/text/textProperties.svg
svg/batik/text/textAnchor.svg
svg/batik/text/textLength.svg
svg/batik/paints/patternRegions-positioned-objects.svg
svg/batik/text/verticalText.svg
svg/batik/text/textEffect2.svg
svg/batik/filters/feTile.svg
svg/batik/text/textLayout.svg
svg/batik/text/textOnPathSpaces.svg
svg/batik/text/textStyles.svg
svg/batik/text/textPosition2.svg
svg/batik/text/textOnPath.svg
svg/batik/text/textLayout2.svg
svg/batik/text/verticalTextOnPath.svg
svg/batik/paints/gradientLimit.svg
svg/batik/text/textProperties2.svg
svg/batik/text/textFeatures.svg
svg/batik/text/longTextOnPath.svg
svg/batik/paints/patternRegionA.svg
svg/batik/paints/patternRegions.svg
svg/batik/text/textDecoration.svg
svg/batik/paints/patternPreserveAspectRatioA.svg
svg/batik/text/textPosition.svg
fast/js/navigator-language.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540082</commentid>
    <comment_count>93</comment_count>
      <attachid>123267</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-20 23:51:14 -0800</bug_when>
    <thetext>Comment on attachment 123267
Proposed patch

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

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:65
&gt; +        decodedText.append(m_decoder-&gt;flush());

Why do we always flush?  Usually we flush only at the end.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:90
&gt; +    m_document = SVGDocument::create(0, url());
&gt; +    m_document-&gt;setSecurityOrigin(SecurityOrigin::create(parentUrl));

Woah there.  You shouldn&apos;t need to call setSecurityOrigin.  That&apos;s bad news bears.

Also, is url() the URL that we request or the one that we finally get the document from (e.g., at the end of the redirect chain)?  It&apos;s very important that we set the URL of the document to the one at the end of the redirection chain.

&gt; Source/WebCore/page/ContentSecurityPolicy.cpp:686
&gt; +bool ContentSecurityPolicy::allowSVGDocumentFromSource(const KURL&amp; url) const
&gt; +{
&gt; +    DEFINE_STATIC_LOCAL(String, type, (&quot;svg&quot;));
&gt; +    return checkSourceAndReportViolation(operativeDirective(m_svgSrc.get()), url, type);
&gt; +}

We shouldn&apos;t just make up new Content-Security-Policy directives.  Probably this should go under another directive...  We can ask the working group which one.

&gt; Source/WebCore/svg/SVGUseElement.cpp:163
&gt; +                KURL url(document()-&gt;baseURI(), href());

Why not just use document()-&gt;completeURL(href()) ?

&gt; Source/WebCore/svg/SVGUseElement.cpp:168
&gt; +                        m_cachedDocument-&gt;createDocument(document()-&gt;url());

You shouldn&apos;t need to pass in document()-&gt;url() here.  A cached document can be re-used in many contexts.  You shouldn&apos;t need to tell it about the context in which it is used.

&gt; Source/WebCore/svg/SVGUseElement.cpp:205
&gt; +    if (m_cachedDocument &amp;&amp; m_cachedDocument-&gt;isLoaded())
&gt; +        return m_cachedDocument-&gt;document();

Is this document mutable?  What happens when many SVGUseElements point to the same CachedSVGDocument ?

&gt; Source/WebCore/svg/SVGUseElement.h:134
&gt; +    CachedSVGDocument* m_cachedDocument;

Should this be a CachedResourceHandle?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540083</commentid>
    <comment_count>94</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-20 23:55:01 -0800</bug_when>
    <thetext>We really should break up this patch into many smaller patches that can be reviewed carefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540084</commentid>
    <comment_count>95</comment_count>
      <attachid>123267</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-20 23:59:12 -0800</bug_when>
    <thetext>Comment on attachment 123267
Proposed patch

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

&gt;&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:65
&gt;&gt; +        decodedText.append(m_decoder-&gt;flush());
&gt; 
&gt; Why do we always flush?  Usually we flush only at the end.

Why do we always flush?  Usually we flush only at the end.

&gt;&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:90
&gt;&gt; +    m_document = SVGDocument::create(0, url());
&gt;&gt; +    m_document-&gt;setSecurityOrigin(SecurityOrigin::create(parentUrl));
&gt; 
&gt; Woah there.  You shouldn&apos;t need to call setSecurityOrigin.  That&apos;s bad news bears.
&gt; 
&gt; Also, is url() the URL that we request or the one that we finally get the document from (e.g., at the end of the redirect chain)?  It&apos;s very important that we set the URL of the document to the one at the end of the redirection chain.

Woah there.  You shouldn&apos;t need to call setSecurityOrigin.  That&apos;s bad news bears.

Also, is url() the URL that we request or the one that we finally get the document from (e.g., at the end of the redirect chain)?  It&apos;s very important that we set the URL of the document to the one at the end of the redirection chain.

&gt;&gt; Source/WebCore/page/ContentSecurityPolicy.cpp:686
&gt;&gt; +bool ContentSecurityPolicy::allowSVGDocumentFromSource(const KURL&amp; url) const
&gt;&gt; +{
&gt;&gt; +    DEFINE_STATIC_LOCAL(String, type, (&quot;svg&quot;));
&gt;&gt; +    return checkSourceAndReportViolation(operativeDirective(m_svgSrc.get()), url, type);
&gt;&gt; +}
&gt; 
&gt; We shouldn&apos;t just make up new Content-Security-Policy directives.  Probably this should go under another directive...  We can ask the working group which one.

We shouldn&apos;t just make up new Content-Security-Policy directives.  Probably this should go under another directive...  We can ask the working group which one.

&gt;&gt; Source/WebCore/svg/SVGUseElement.cpp:163
&gt;&gt; +                KURL url(document()-&gt;baseURI(), href());
&gt; 
&gt; Why not just use document()-&gt;completeURL(href()) ?

Why not just use document()-&gt;completeURL(href()) ?

&gt;&gt; Source/WebCore/svg/SVGUseElement.cpp:168
&gt;&gt; +                        m_cachedDocument-&gt;createDocument(document()-&gt;url());
&gt; 
&gt; You shouldn&apos;t need to pass in document()-&gt;url() here.  A cached document can be re-used in many contexts.  You shouldn&apos;t need to tell it about the context in which it is used.

You shouldn&apos;t need to pass in document()-&gt;url() here.  A cached document can be re-used in many contexts.  You shouldn&apos;t need to tell it about the context in which it is used.

&gt;&gt; Source/WebCore/svg/SVGUseElement.cpp:205
&gt;&gt; +    if (m_cachedDocument &amp;&amp; m_cachedDocument-&gt;isLoaded())
&gt;&gt; +        return m_cachedDocument-&gt;document();
&gt; 
&gt; Is this document mutable?  What happens when many SVGUseElements point to the same CachedSVGDocument ?

Is this document mutable?  What happens when many SVGUseElements point to the same CachedSVGDocument ?

&gt;&gt; Source/WebCore/svg/SVGUseElement.h:134
&gt;&gt; +    CachedSVGDocument* m_cachedDocument;
&gt; 
&gt; Should this be a CachedResourceHandle?

Should this be a CachedResourceHandle?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540624</commentid>
    <comment_count>96</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-01-23 09:57:36 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:65
&gt; &gt; +        decodedText.append(m_decoder-&gt;flush());
&gt; 
&gt; Why do we always flush?  Usually we flush only at the end.
You are right. Updated.

&gt; &gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:90
&gt; &gt; +    m_document = SVGDocument::create(0, url());
&gt; &gt; +    m_document-&gt;setSecurityOrigin(SecurityOrigin::create(parentUrl));
&gt; 
&gt; Woah there.  You shouldn&apos;t need to call setSecurityOrigin.  That&apos;s bad news bears.
&gt; 
&gt; Also, is url() the URL that we request or the one that we finally get the document from (e.g., at the end of the redirect chain)?  It&apos;s very important that we set the URL of the document to the one at the end of the redirection chain.
This url is what we requested. I not really understand what else could it be. Perhaps do you think of the last piece of use-&gt;use-&gt;use-&gt;data chain?

&gt; &gt; Source/WebCore/page/ContentSecurityPolicy.cpp:686
&gt; &gt; +bool ContentSecurityPolicy::allowSVGDocumentFromSource(const KURL&amp; url) const
&gt; &gt; +{
&gt; &gt; +    DEFINE_STATIC_LOCAL(String, type, (&quot;svg&quot;));
&gt; &gt; +    return checkSourceAndReportViolation(operativeDirective(m_svgSrc.get()), url, type);
&gt; &gt; +}
&gt; 
&gt; We shouldn&apos;t just make up new Content-Security-Policy directives.  Probably this should go under another directive...  We can ask the working group which one.
Which wg did you think of? Perhaps whatwg? Could you ask them pls? Or could you give me a contact who I can ask about this?

&gt; &gt; Source/WebCore/svg/SVGUseElement.cpp:163
&gt; &gt; +                KURL url(document()-&gt;baseURI(), href());
&gt; 
&gt; Why not just use document()-&gt;completeURL(href()) ?
&gt; 
&gt; &gt; Source/WebCore/svg/SVGUseElement.cpp:168
&gt; &gt; +                        m_cachedDocument-&gt;createDocument(document()-&gt;url());
&gt; 
&gt; You shouldn&apos;t need to pass in document()-&gt;url() here.  A cached document can be re-used in many contexts.  You shouldn&apos;t need to tell it about the context in which it is used.
Okay.

&gt; &gt; Source/WebCore/svg/SVGUseElement.cpp:205
&gt; &gt; +    if (m_cachedDocument &amp;&amp; m_cachedDocument-&gt;isLoaded())
&gt; &gt; +        return m_cachedDocument-&gt;document();
&gt; 
&gt; Is this document mutable?  What happens when many SVGUseElements point to the same CachedSVGDocument ?
What does &quot;mutable&quot; mean in security context? It can be changed? According to the spec the referenced document inherits its ancestors attributes. So if the same source is referenced many times it could be displayed different. What should we do in this case? Should it be regenerated? But currently the cached document is available just until its inherited data are built into the shadow tree. Or should we regenerate it? But then it&apos;s not &quot;mutable&quot; anymore (at least IMHO).

&gt; &gt; Source/WebCore/svg/SVGUseElement.h:134
&gt; &gt; +    CachedSVGDocument* m_cachedDocument;
&gt; 
&gt; Should this be a CachedResourceHandle?
Yeah, it should be and it is already :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542905</commentid>
    <comment_count>97</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-01-25 23:55:34 -0800</bug_when>
    <thetext>Any comments would be appreciated :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544762</commentid>
    <comment_count>98</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-29 14:02:58 -0800</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:90
&gt; &gt; &gt; +    m_document = SVGDocument::create(0, url());
&gt; &gt; &gt; +    m_document-&gt;setSecurityOrigin(SecurityOrigin::create(parentUrl));
&gt; &gt; 
&gt; &gt; Woah there.  You shouldn&apos;t need to call setSecurityOrigin.  That&apos;s bad news bears.
&gt; &gt; 
&gt; &gt; Also, is url() the URL that we request or the one that we finally get the document from (e.g., at the end of the redirect chain)?  It&apos;s very important that we set the URL of the document to the one at the end of the redirection chain.
&gt;
&gt; This url is what we requested. I not really understand what else could it be. Perhaps do you think of the last piece of use-&gt;use-&gt;use-&gt;data chain?

In that case, we should be able to get the URL from the CachedSVGDocument object itself rather than needed to pipe it in from the caller.

&gt; &gt; &gt; Source/WebCore/page/ContentSecurityPolicy.cpp:686
&gt; &gt; &gt; +bool ContentSecurityPolicy::allowSVGDocumentFromSource(const KURL&amp; url) const
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    DEFINE_STATIC_LOCAL(String, type, (&quot;svg&quot;));
&gt; &gt; &gt; +    return checkSourceAndReportViolation(operativeDirective(m_svgSrc.get()), url, type);
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; We shouldn&apos;t just make up new Content-Security-Policy directives.  Probably this should go under another directive...  We can ask the working group which one.
&gt;
&gt; Which wg did you think of? Perhaps whatwg? Could you ask them pls? Or could you give me a contact who I can ask about this?

http://www.w3.org/2011/webappsec/
http://lists.w3.org/Archives/Public/public-webappsec/

&gt; &gt; &gt; Source/WebCore/svg/SVGUseElement.cpp:205
&gt; &gt; &gt; +    if (m_cachedDocument &amp;&amp; m_cachedDocument-&gt;isLoaded())
&gt; &gt; &gt; +        return m_cachedDocument-&gt;document();
&gt; &gt; 
&gt; &gt; Is this document mutable?  What happens when many SVGUseElements point to the same CachedSVGDocument ?
&gt;
&gt; What does &quot;mutable&quot; mean in security context? It can be changed? According to the spec the referenced document inherits its ancestors attributes. So if the same source is referenced many times it could be displayed different. What should we do in this case? Should it be regenerated? But currently the cached document is available just until its inherited data are built into the shadow tree. Or should we regenerate it? But then it&apos;s not &quot;mutable&quot; anymore (at least IMHO).

What I meant to ask is whether the nodes in the document are exposed to JavaScript for modifications.  The way you&apos;ve written this patch, the document is shared by everyone who uses the cached object.  That means if one person modifies the document&apos;s nodes, everyone else see the modifications, which seems very wrong.
 
&gt; &gt; &gt; Source/WebCore/svg/SVGUseElement.h:134
&gt; &gt; &gt; +    CachedSVGDocument* m_cachedDocument;
&gt; &gt; 
&gt; &gt; Should this be a CachedResourceHandle?
&gt;
&gt; Yeah, it should be and it is already :)

I&apos;m not sure I understand.  The declaration says CachedSVGDocument* rather than CachedResourceHandle&lt;CachedSVGDocument&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544989</commentid>
    <comment_count>99</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-01-30 03:36:43 -0800</bug_when>
    <thetext>(In reply to comment #98) 
&gt; In that case, we should be able to get the URL from the CachedSVGDocument object itself rather than needed to pipe it in from the caller.
We both don&apos;t get this sentence. Anyhow, Reni made a new approach, that avoids calling setSecOrigin directly, maybe we should discuss that, once the patch is here.

&gt; http://www.w3.org/2011/webappsec/
&gt; http://lists.w3.org/Archives/Public/public-webappsec/
Is this already decided? Shall Reni post a mail here to ask which directive to use?

 
&gt; &gt; &gt; &gt; Source/WebCore/svg/SVGUseElement.cpp:205
&gt; &gt; &gt; &gt; +    if (m_cachedDocument &amp;&amp; m_cachedDocument-&gt;isLoaded())
&gt; &gt; &gt; &gt; +        return m_cachedDocument-&gt;document();
&gt; &gt; &gt; 
&gt; &gt; &gt; Is this document mutable?  What happens when many SVGUseElements point to the same CachedSVGDocument ?
&gt; &gt;
&gt; &gt; What does &quot;mutable&quot; mean in security context? It can be changed? According to the spec the referenced document inherits its ancestors attributes. So if the same source is referenced many times it could be displayed different. What should we do in this case? Should it be regenerated? But currently the cached document is available just until its inherited data are built into the shadow tree. Or should we regenerate it? But then it&apos;s not &quot;mutable&quot; anymore (at least IMHO).
&gt; 
&gt; What I meant to ask is whether the nodes in the document are exposed to JavaScript for modifications.  The way you&apos;ve written this patch, the document is shared by everyone who uses the cached object.  That means if one person modifies the document&apos;s nodes, everyone else see the modifications, which seems very wrong.
That can not happen. The external CachedSVGDocument is always cloned into the target document, so if you script the shadow tree, or the &lt;use&gt; element it can never affect the CachedSVGDocument. Reni will include a test for this.

 &gt; I&apos;m not sure I understand.  The declaration says CachedSVGDocument* rather than CachedResourceHandle&lt;CachedSVGDocument&gt;.
She changed it locally I think :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545088</commentid>
    <comment_count>100</comment_count>
      <attachid>124547</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-01-30 07:25:21 -0800</bug_when>
    <thetext>Created attachment 124547
Proposed patch

&gt; &gt; http://www.w3.org/2011/webappsec/
&gt; &gt; http://lists.w3.org/Archives/Public/public-webappsec/
&gt; Is this already decided? Shall Reni post a mail here to ask which directive to use?
In this patch I rate the cached SVG document to the image directive. Lack of more precise source it&apos;s based on this conversation: http://old.nabble.com/preventing-SVG-script-from-running-td30014840.html
 
&gt; That can not happen. The external CachedSVGDocument is always cloned into the target document, so if you script the shadow tree, or the &lt;use&gt; element it can never affect the CachedSVGDocument. Reni will include a test for this.
Yeah, a dynamic update test is attached. This test refers the same source two times via a use element. After an event (mouse click) the parent of the first one will change, but the second remains the same.

&gt;  &gt; I&apos;m not sure I understand.  The declaration says CachedSVGDocument* rather than CachedResourceHandle&lt;CachedSVGDocument&gt;.
&gt; She changed it locally I think :-)
Exactly! Sorry if I was ambiguous :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545110</commentid>
    <comment_count>101</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-01-30 08:23:28 -0800</bug_when>
    <thetext>One more comment: I&apos;ll split the patch into smaller pieces ofc... but currently it&apos;s better to see the whole concept in the same block at least IMO :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545403</commentid>
    <comment_count>102</comment_count>
      <attachid>124547</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-01-30 14:13:05 -0800</bug_when>
    <thetext>Comment on attachment 124547
Proposed patch

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

&gt; Source/WebCore/svg/SVGUseElement.h:135
&gt; +    RefPtr&lt;Document&gt; m_ownerDocument;

Oops... this is unused... i forgot to remove it..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545423</commentid>
    <comment_count>103</comment_count>
      <attachid>124547</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-30 14:37:56 -0800</bug_when>
    <thetext>Comment on attachment 124547
Proposed patch

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

This looks much better!  Thanks.  I have a few comments, but there&apos;s mostly just me trying to understand.  The only real important one is to use response().url() rather than url() when creating the document.  I think we&apos;re ready to split this up into manageable pieces and land it.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:370
&gt; +#if ENABLE(SVG)
&gt; +    case CachedResource::SVGDocumentResource:
&gt; +#endif

Treating this as an image seems ok.  We should confirm with the working group (but we don&apos;t need to block this patch on that).  Would you be willing to email public-webappsec about this question?

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:65
&gt; +    if (!allDataReceived)
&gt; +        return;

So, there&apos;s no incremental rendering.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:67
&gt; +    if (data) {

You&apos;ve checked that |data| accumulates (and isn&apos;t just the last block)?  I don&apos;t remember off-hand.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:92
&gt; +void CachedSVGDocument::createDocument()
&gt; +{
&gt; +    if (m_document)
&gt; +        return;
&gt; +
&gt; +    m_document = SVGDocument::create(0, url());
&gt; +}

Why do you create this document with this function?  I would have expected you to create the document right before calling m_document-&gt;setContent().

Also, this should be response().url() so that we get the final URL, which is another reason we need to wait until after we&apos;ve gotten a response before creating the document.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.h:38
&gt; +    CachedSVGDocument(const ResourceRequest&amp;);

Please add the keyword explicit to one-argument constructors.

&gt; Source/WebCore/page/ContentSecurityPolicy.h:109
&gt; +

This change seem spurious.

&gt; Source/WebCore/platform/network/chromium/ResourceRequest.h:49
&gt; +            TargetIsSVGResource,

I bet there&apos;s a matching enum in the Chromium WebKit API.  I&apos;m surprised there isn&apos;t a COMPILE_ASSERT failures with this patch.

&gt; Source/WebCore/svg/SVGUseElement.cpp:107
&gt; +       m_cachedDocument-&gt;removeClient(this);

Bad indent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545631</commentid>
    <comment_count>104</comment_count>
      <attachid>124547</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 17:20:28 -0800</bug_when>
    <thetext>Comment on attachment 124547
Proposed patch

Attachment 124547 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11366753

New failing tests:
svg/batik/filters/filterRegions.svg
svg/batik/text/textProperties.svg
svg/batik/text/textAnchor.svg
svg/batik/text/textLength.svg
svg/batik/paints/patternRegions-positioned-objects.svg
http/tests/inspector/inspect-element.html
svg/batik/text/textEffect2.svg
svg/batik/filters/feTile.svg
fast/frames/lots-of-objects.html
svg/batik/text/textLayout.svg
svg/batik/text/textOnPathSpaces.svg
css2.1/20110323/abspos-containing-block-initial-004d.htm
svg/batik/text/textPosition2.svg
svg/batik/text/textOnPath.svg
svg/batik/text/textLayout2.svg
css2.1/20110323/abspos-containing-block-initial-004b.htm
svg/batik/paints/gradientLimit.svg
svg/batik/text/textProperties2.svg
svg/batik/text/textFeatures.svg
svg/batik/text/longTextOnPath.svg
svg/batik/paints/patternRegionA.svg
svg/batik/paints/patternRegions.svg
svg/batik/text/textDecoration.svg
svg/batik/paints/patternPreserveAspectRatioA.svg
svg/batik/text/textPosition.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546120</commentid>
    <comment_count>105</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-01-31 08:58:12 -0800</bug_when>
    <thetext>&gt; This looks much better!  Thanks.  I have a few comments, but there&apos;s mostly just me trying to understand.  The only real important one is to use response().url() rather than url() when creating the document.  I think we&apos;re ready to split this up into manageable pieces and land it.
We were talking about the splitting with Niko on IRC. We thought that bisecting the patch would be good. The first part would contain only the new class (CachedSVGDocument) with the forthcoming changes. This is just for testing the new code on the different platforms w/o any functional changes. And the second patch would bind it into the use element and add the new tests. Is it okay for you?

&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:370
&gt; &gt; +#if ENABLE(SVG)
&gt; &gt; +    case CachedResource::SVGDocumentResource:
&gt; &gt; +#endif
&gt; 
&gt; Treating this as an image seems ok.  We should confirm with the working group (but we don&apos;t need to block this patch on that).  Would you be willing to email public-webappsec about this question?
I&apos;ve sent a mail. Waiting for reply...

&gt; &gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:67
&gt; &gt; +    if (data) {
&gt; 
&gt; You&apos;ve checked that |data| accumulates (and isn&apos;t just the last block)?  I don&apos;t remember off-hand.
Yeah, it contains all blocks already.

&gt; &gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:92
&gt; &gt; +void CachedSVGDocument::createDocument()
&gt; &gt; +{
&gt; &gt; +    if (m_document)
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    m_document = SVGDocument::create(0, url());
&gt; &gt; +}
&gt; 
&gt; Why do you create this document with this function?  I would have expected you to create the document right before calling m_document-&gt;setContent().
Right. It was needed when I passed around the ancestor&apos;s url. This was the only way to get it... but never mind... it&apos;s useless already and I moved back into data(). 

&gt; Also, this should be response().url() so that we get the final URL, which is another reason we need to wait until after we&apos;ve gotten a response before creating the document.
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedSVGDocument.h:38
&gt; &gt; +    CachedSVGDocument(const ResourceRequest&amp;);
&gt; 
&gt; Please add the keyword explicit to one-argument constructors.
Ok.

&gt; &gt; Source/WebCore/page/ContentSecurityPolicy.h:109
&gt; &gt; +
&gt; 
&gt; This change seem spurious.
Ok.
&gt; &gt; Source/WebCore/platform/network/chromium/ResourceRequest.h:49
&gt; &gt; +            TargetIsSVGResource,
&gt; 
&gt; I bet there&apos;s a matching enum in the Chromium WebKit API.  I&apos;m surprised there isn&apos;t a COMPILE_ASSERT failures with this patch.
Right again. I added it to TargetIsImage group. Is it right?

&gt; &gt; Source/WebCore/svg/SVGUseElement.cpp:107
&gt; &gt; +       m_cachedDocument-&gt;removeClient(this);
&gt; 
&gt; Bad indent.
Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546126</commentid>
    <comment_count>106</comment_count>
      <attachid>124750</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-01-31 09:04:19 -0800</bug_when>
    <thetext>Created attachment 124750
Proposed patch

This is how the first part would look like</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546129</commentid>
    <comment_count>107</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 09:06:42 -0800</bug_when>
    <thetext>Attachment 124750 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/qt/Skipped
CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553164</commentid>
    <comment_count>108</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-02-09 07:50:55 -0800</bug_when>
    <thetext>(In reply to comment #103)
&gt; (From update of attachment 124547 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124547&amp;action=review
&gt; 

&gt; Treating this as an image seems ok.  We should confirm with the working group (but we don&apos;t need to block this patch on that).  Would you be willing to email public-webappsec about this question?
As I wrote on the list we can be sure that treating these resources as an image is right indeed.
For the others: after trying to display an external resource test with various directives I saw that only the following one blocked the load of the resource:

X-WebKit-CSP: default-src *; img-src &apos;none&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555096</commentid>
    <comment_count>109</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-02-13 00:59:22 -0800</bug_when>
    <thetext>Any comments would be welcomed ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557646</commentid>
    <comment_count>110</comment_count>
      <attachid>124750</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-15 15:38:15 -0800</bug_when>
    <thetext>Comment on attachment 124750
Proposed patch

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

Sorry Reni for the long delay - I hoped someone else would look as well, anyhow almost there, but still some issues that lead to r-:
You should mention in the ChangeLog - a bit more explicit - that this is not yet testable, as its still unused.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:280
&gt; +

You can remove this.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:380
&gt; +

Ditto.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:412
&gt; -    
&gt; +

Ditto.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:414
&gt; -    
&gt; +

Ditto.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:61
&gt; +    ASSERT(m_document.get());

m_document is 0 initially, this will fail in debug builds!

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:67
&gt; +    if (data) {
&gt; +        StringBuilder decodedText;

Ok, this is just as CachedResource::data, but doesn&apos;t store m_data, but m_document - seems fine.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:78
&gt; +void CachedSVGDocument::error(CachedResource::Status status)

Why is this custom error() impl needed? CachedResource::error only contains an additional m_data.clear() - that can&apos;t hurt, so why not leave it to the base-class?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559075</commentid>
    <comment_count>111</comment_count>
      <attachid>127563</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-02-17 02:43:52 -0800</bug_when>
    <thetext>Created attachment 127563
Proposed patch

&gt; Why is this custom error() impl needed? CachedResource::error only contains an additional m_data.clear() - that can&apos;t hurt, so why not leave it to the base-class?
Right, I removed it.

Changelog is also updated. This first part contains just a minimal explanation about the newly added classes. The functionality and its description will be in the follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559082</commentid>
    <comment_count>112</comment_count>
      <attachid>127563</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-17 03:04:56 -0800</bug_when>
    <thetext>Comment on attachment 127563
Proposed patch

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

Some nitpicks:

&gt; Source/WebCore/loader/cache/CachedResourceClient.h:-48
&gt; -    

You should omit this change.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:26
&gt; +

One newline too much :-)

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:31
&gt; +#include &quot;CachedResourceClient.h&quot;
&gt; +#include &quot;CachedResourceHandle.h&quot;
&gt; +#include &quot;SVGDocument.h&quot;

Already included by the header.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:33
&gt; +#include &quot;TextResourceDecoder.h&quot;

To be safe, just move this into the header.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:68
&gt; +        m_document = SVGDocument::create(0, response().url());

ah, the 0 parameter needs to be explained here first.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.h:25
&gt; +

Oh this is missing #if ENABLE(SVG) guards!

&gt; Source/WebCore/loader/cache/CachedSVGDocument.h:33
&gt; +class Document;

Unused.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.h:34
&gt; +class TextResourceDecoder;

Is this needed? IIRC. RefPtr&lt;T&gt; requires a T include, not only a forward.
Maybe this works, because sth. else pulls in this header already? If so, you can remove the class forward.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.h:47
&gt; +    virtual bool schedule() const { return true; }

This seems like a left-over, no other class uses this, you can remove it.

&gt; Source/WebCore/loader/cache/CachedSVGDocument.h:52
&gt; +    RefPtr&lt;SharedBuffer&gt; m_data;

Unused, please remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560875</commentid>
    <comment_count>113</comment_count>
      <attachid>127971</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-02-21 07:48:49 -0800</bug_when>
    <thetext>Created attachment 127971
Proposed first part</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563084</commentid>
    <comment_count>114</comment_count>
      <attachid>127971</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-23 06:40:57 -0800</bug_when>
    <thetext>Comment on attachment 127971
Proposed first part

Looks great! r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564277</commentid>
    <comment_count>115</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-02-24 06:31:55 -0800</bug_when>
    <thetext>Committed r108785: &lt;http://trac.webkit.org/changeset/108785&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564318</commentid>
    <comment_count>116</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-02-24 07:33:03 -0800</bug_when>
    <thetext>The commited patch was just the initial step of supporting external resources. Further patches are coming...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564348</commentid>
    <comment_count>117</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-24 08:52:44 -0800</bug_when>
    <thetext>(In reply to comment #115)
&gt; Committed r108785: &lt;http://trac.webkit.org/changeset/108785&gt;

I landed a speculative buildfix for Qt MIPS and Qt SH1 - http://trac.webkit.org/changeset/108804 (ENABLE(SVG) &amp;&amp; !ENABLE(XSLT) platforms)

The following code was incorrect, because the first case didn&apos;t have statement: 
-----------------
switch ... {
...
  case .... :
  #if 0
  case .... :
  break;
  #endif
}
-----------------

My fix isn&apos;t the best, but in this kind of hacked code I couldn&apos;t find nicer fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564349</commentid>
    <comment_count>118</comment_count>
      <attachid>127971</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-24 08:54:32 -0800</bug_when>
    <thetext>Comment on attachment 127971
Proposed first part

Remove flags, because it is landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565735</commentid>
    <comment_count>119</comment_count>
      <attachid>129054</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-02-27 09:32:45 -0800</bug_when>
    <thetext>Created attachment 129054
Proposed second part

This patch binds the previously introduced CachedSVGDocument class into SVGUseElement caching mechanism.
Patch only contains the code base of this modification. Since the test rebaseline will have bigger size I plan to upload it in a follow-up patch or to rebase them as an unreviewed gardening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566630</commentid>
    <comment_count>120</comment_count>
      <attachid>129054</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-28 07:06:02 -0800</bug_when>
    <thetext>Comment on attachment 129054
Proposed second part

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

Looks good in general! Still needs an iteration, as ToT changed SVGUseElements shadow tree construction.

&gt; Source/WebCore/ChangeLog:20
&gt; +        of the size of that test refactor they will be commited in a follow-up patch.

Okay, once the code is fine, you should still upload one big final patch, that shows that you modified the chromium expectations file correctly (aka. cr-linux turns green)

&gt; Source/WebCore/svg/SVGURIReference.cpp:59
&gt; +    else
&gt; +        base = start ? KURL(document-&gt;baseURI(), url.substring(0, start)) : document-&gt;baseURI();

I&apos;d prefer:
else if (start) {
    base = KURL(d...
else {
   base = document-&gt;baseURI();

Isn&apos;t there a generic function for that? Just guessing, but we should verify that.

&gt; Source/WebCore/svg/SVGUseElement.cpp:1109
&gt; +    static_cast&lt;RenderSVGShadowTreeRootContainer*&gt;(renderer())-&gt;markShadowTreeForRecreation();
&gt; +    renderer()-&gt;updateFromElement();

This needs to be updated, within the new SVGUseElement implementation that landed some hours ago.
SVGUseElement is now properly integrated within the standard ShadowTree.

You&apos;ll likely find that your code needs to be changed now, but the attachment and rebuilding should be much more straight-forward &amp; logical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567710</commentid>
    <comment_count>121</comment_count>
      <attachid>129471</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-02-29 10:27:42 -0800</bug_when>
    <thetext>Created attachment 129471
Proposed second part

(In reply to comment #120)
&gt; (From update of attachment 129054 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129054&amp;action=review
&gt; 
&gt; Looks good in general! Still needs an iteration, as ToT changed SVGUseElements shadow tree construction.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:20
&gt; &gt; +        of the size of that test refactor they will be commited in a follow-up patch.
&gt; 
&gt; Okay, once the code is fine, you should still upload one big final patch, that shows that you modified the chromium expectations file correctly (aka. cr-linux turns green)
Expecteds are attached, but these are generated on Mac Lion. Unfortunately I only have access to this (besides linux ofc.). Btw the patch caused 0 regression on it.

&gt; &gt; Source/WebCore/svg/SVGURIReference.cpp:59
&gt; &gt; +    else
&gt; &gt; +        base = start ? KURL(document-&gt;baseURI(), url.substring(0, start)) : document-&gt;baseURI();
&gt; 
&gt; I&apos;d prefer:
&gt; else if (start) {
&gt;     base = KURL(d...
&gt; else {
&gt;    base = document-&gt;baseURI();
&gt; 
&gt; Isn&apos;t there a generic function for that? Just guessing, but we should verify that.
Done. I think this is the way how we should handle this.

&gt; &gt; Source/WebCore/svg/SVGUseElement.cpp:1109
&gt; &gt; +    static_cast&lt;RenderSVGShadowTreeRootContainer*&gt;(renderer())-&gt;markShadowTreeForRecreation();
&gt; &gt; +    renderer()-&gt;updateFromElement();
&gt; 
&gt; This needs to be updated, within the new SVGUseElement implementation that landed some hours ago.
&gt; SVGUseElement is now properly integrated within the standard ShadowTree.
&gt; 
&gt; You&apos;ll likely find that your code needs to be changed now, but the attachment and rebuilding should be much more straight-forward &amp; logical.
Nice patch :) I adopted my modification to that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568504</commentid>
    <comment_count>122</comment_count>
      <attachid>129471</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-01 02:50:23 -0800</bug_when>
    <thetext>Comment on attachment 129471
Proposed second part

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

Nice patch, still another iteration needed. I&apos;ve also noticed that some of the svg/batik/ tests, don&apos;t include the correct CSS style sheet, that&apos;s why the text is so large in eg. textSTyles-expected.png. You could fix these in one-shot, as the tests already need rebaselining anyways.

&gt; Source/WebCore/svg/SVGUseElement.cpp:90
&gt; +    , m_cachedDocument(0)

This doesn&apos;t seem to be needed at all, is it?

&gt; Source/WebCore/svg/SVGUseElement.cpp:164
&gt; +            if (isExternalURIReference(href())) {

You need to test transitions from xlink:href pointing to internal -&gt; external resource, and the other way round.
Currently if you change from an external href to an internal, m_cachedDocument won&apos;t be released, if I read the code correctly.
This is important to get right!

Also if the &lt;use&gt; element itself gets removed from the tree (removedFromDocument) shouldn&apos;t we release the document?
I&apos;m thinking of a &lt;use&gt; element which loads a slooow external resource (say over 1mb large). Now if we remove the &lt;use&gt; from the document, while the external document is still loading, we could abort the load, and release m_cachedDocument, no?
Whatever you decide, write a test for it :-)

&gt; Source/WebCore/svg/SVGUseElement.cpp:647
&gt; +        if (use-&gt;cachedDocumentIsStillLoading())
&gt; +            return;

Shouldn&apos;t we detect this earlier? We end up expanding parts of the tree - and then throw away the whole shadow tree, once the external document loaded.
I&apos;d rather ASSERT here that the document is not loading, and detect this earlier. (Walk whole instance tree to find instances corresponding to use elements, and check if those use elements are still loading..)

&gt; Source/WebCore/svg/SVGUseElement.cpp:770
&gt; +               || (target-&gt;nodeName() == SVGNames::useTag &amp;&amp; (static_cast&lt;SVGUseElement*&gt;(target))-&gt;cachedDocumentIsStillLoading()));

This assertion change could go away, if you&apos;d stop expanding parts of the tree only.

&gt; Source/WebCore/svg/SVGUseElement.cpp:879
&gt; +    renderer()-&gt;updateFromElement();

This shouldn&apos;t be necessary anymore.

&gt; Source/WebCore/svg/SVGUseElement.cpp:882
&gt; +    ASSERT(parent);

No need to check that, you already tested inDocument().
This is also not 100% correct, you need to mark the &lt;use&gt; itself as needing layout.
So RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer()) is the way to go here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571680</commentid>
    <comment_count>123</comment_count>
      <attachid>130341</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-03-06 02:23:07 -0800</bug_when>
    <thetext>Created attachment 130341
Proposed second part

I&apos;m not pretty sure I understood everything correctly what you asked, but here is what i thought...

&gt; Also if the &lt;use&gt; element itself gets removed from the tree (removedFromDocument) shouldn&apos;t we release the document?
&gt; I&apos;m thinking of a &lt;use&gt; element which loads a slooow external resource (say over 1mb large). Now if we remove the &lt;use&gt; from the document, while the external document is still loading, we could abort the load, and release m_cachedDocument, no?
This is an ambiguous part for me. If i remove the cachedDocument here, then it broke the dynamic update by changing from external to internal. So I missed this part. The others are fulfilled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571724</commentid>
    <comment_count>124</comment_count>
      <attachid>130341</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-06 04:32:56 -0800</bug_when>
    <thetext>Comment on attachment 130341
Proposed second part

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

Almost there, next round of comments:

&gt; LayoutTests/svg/custom/struct-use-recursion-02-t.svg:1
&gt; +&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;

Where did you grab these from? If its SVG 1.1 2nd edition testsuite, these should go to svg/W3C-SVG-1.1-SE/

&gt; LayoutTests/svg/dynamic-updates/SVGUseElement-dom-href2-attr-expected.txt:1
&gt; +CONSOLE MESSAGE: line 10: ReferenceError: Can&apos;t find variable: repaintTest

Oops. This testcase doesn&apos;t work.

&gt; LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-dom-href1-attr.js:1
&gt; +// [Name] SVGFEUseElement-dom-href1-attr.js

Description is wrong.

&gt; LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-dom-href1-attr.js:4
&gt; +description(&quot;Tests dynamic updates of the &apos;href&apos; attribute of the SVGFEUseElement object&quot;)

Ditto.

&gt; LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-dom-href1-attr.js:32
&gt; +    useElement.setAttributeNS(xlinkNS, &quot;xlink:href&quot;, &quot;../custom/resources/rgb.svg#R&quot;);

How about referencing #G? Green is better as pass color, than red ;-)

&gt; LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-dom-href2-attr.js:1
&gt; +// [Name] SVGFEUseElement-dom-href1-attr.js

Description is wrong.

&gt; LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-dom-href2-attr.js:4
&gt; +description(&quot;Tests dynamic updates of the &apos;href&apos; attribute of the SVGFEUseElement object&quot;)

Ditto.

&gt; LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-dom-href2-attr.js:9
&gt; +rootSVGElement.appendChild(
&gt; +defsElement);

Typo.

&gt; LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-dom-href2-attr.js:22
&gt; +rectElement.setAttribute(&quot;fill&quot;, &quot;#408067&quot;);

Why not green?

&gt; Source/WebCore/ChangeLog:16
&gt; +        SVGURIReference::targetElementFromIRIString() also need to be extended. The creation
&gt; +        of baseURI should be based on the referenced document&apos;s URL instead of the actual one and

&quot;The baseURI computation needs to take the referenced documents URL into account, instead of the current documents.&quot; ?

&gt; Source/WebCore/svg/SVGUseElement.cpp:236
&gt; +        if (m_cachedDocument &amp;&amp; !isExternalURIReference(href())) {

Aha, you handle the cleanup here, when switching from internal &lt;-&gt; external. That seems fine.

&gt; Source/WebCore/svg/SVGUseElement.cpp:246
&gt; +            || SVGExternalResourcesRequired::isKnownAttribute(attrName)) {

This should be left out. Whitespace only change.

&gt; Source/WebCore/svg/SVGUseElement.cpp:268
&gt; +    SVGUseElement* correspondingUseElement = static_cast&lt;SVGUseElement*&gt;(correspondingElement);
&gt; +    if (correspondingUseElement-&gt;cachedDocumentIsStillLoading())

Huh, how can you be sure its a SVGUseElement? Even if this is debug code, this crashes :-) You need to check the hasTagName first, before casting.

&gt; Source/WebCore/svg/SVGUseElement.cpp:746
&gt; +        RefPtr&lt;SVGSVGElement&gt; svgElement = SVGSVGElement::create(SVGNames::svgTag, document);

How about you move the assert(document) into referencedDocument. Then you could just do a s/document()/referencedDocument()/ and save introducing local variables here.

&gt; Source/WebCore/svg/SVGUseElement.cpp:921
&gt; +    Element* parent = parentElement();
&gt; +    if (!parent-&gt;renderer())
&gt; +        return;
&gt; +
&gt; +    RenderSVGResource::markForLayoutAndParentResourceInvalidation(parent-&gt;renderer());

I asked this before I think: why the parent-&gt;renderer() only? Why not this?
Is this needed at all, when doing invalidateShadowTree(). I would have expected that this is enough. If not, then markForLayoutAndParentResourceInvalidation(renderer()), but not parent-&gt;renderer().

&gt; Source/WebCore/svg/SVGUseElement.cpp:934
&gt; +        if (node-&gt;correspondingUseElement()) {

if (SVGUseElement* use = node-&gt;correspondingUseElement()) {
..
Saves calling it twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571815</commentid>
    <comment_count>125</comment_count>
      <attachid>130373</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-03-06 06:59:58 -0800</bug_when>
    <thetext>Created attachment 130373
Proposed second part

&gt; &gt; LayoutTests/svg/custom/struct-use-recursion-02-t.svg:1
&gt; &gt; +&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&gt; 
&gt; Where did you grab these from? If its SVG 1.1 2nd edition testsuite, these should go to svg/W3C-SVG-1.1-SE/
They were moved into a new W3C-SVG-1.2-Tiny directory because they come from that testsuite.

&gt; &gt; LayoutTests/svg/dynamic-updates/SVGUseElement-dom-href2-attr-expected.txt:1
&gt; &gt; +CONSOLE MESSAGE: line 10: ReferenceError: Can&apos;t find variable: repaintTest
&gt; 
&gt; Oops. This testcase doesn&apos;t work.
Sorry, updated.

&gt; &gt; Source/WebCore/svg/SVGUseElement.cpp:268
&gt; &gt; +    SVGUseElement* correspondingUseElement = static_cast&lt;SVGUseElement*&gt;(correspondingElement);
&gt; &gt; +    if (correspondingUseElement-&gt;cachedDocumentIsStillLoading())
&gt; 
&gt; Huh, how can you be sure its a SVGUseElement? Even if this is debug code, this crashes :-) You need to check the hasTagName first, before casting.
Right. Fixed.

&gt; &gt; Source/WebCore/svg/SVGUseElement.cpp:746
&gt; &gt; +        RefPtr&lt;SVGSVGElement&gt; svgElement = SVGSVGElement::create(SVGNames::svgTag, document);
&gt; 
&gt; How about you move the assert(document) into referencedDocument. Then you could just do a s/document()/referencedDocument()/ and save introducing local variables here.
Good idea. Done.

&gt; &gt; Source/WebCore/svg/SVGUseElement.cpp:921
&gt; &gt; +    Element* parent = parentElement();
&gt; &gt; +    if (!parent-&gt;renderer())
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    RenderSVGResource::markForLayoutAndParentResourceInvalidation(parent-&gt;renderer());
&gt; 
&gt; I asked this before I think: why the parent-&gt;renderer() only? Why not this?
&gt; Is this needed at all, when doing invalidateShadowTree(). I would have expected that this is enough. If not, then markForLayoutAndParentResourceInvalidation(renderer()), but not parent-&gt;renderer().
Really, we don&apos;t need it anymore. It&apos;s thrown off.

&gt; &gt; Source/WebCore/svg/SVGUseElement.cpp:934
&gt; &gt; +        if (node-&gt;correspondingUseElement()) {
&gt; 
&gt; if (SVGUseElement* use = node-&gt;correspondingUseElement()) {
&gt; ..
&gt; Saves calling it twice.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571833</commentid>
    <comment_count>126</comment_count>
      <attachid>130373</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-06 07:18:11 -0800</bug_when>
    <thetext>Comment on attachment 130373
Proposed second part

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

Discussed some things with reni on IRC, for the record:

&gt; Source/WebCore/svg/SVGUseElement.cpp:163
&gt; +            if (isExternalURIReference(href())) {

Oh, just noticing that this is in parseAttribute, not in svgAttributeChanged.
You won&apos;t react properly to SVG DOM changes like myUseElement.href.baseVal.value = &quot;some-external-reference&quot;; it only works through setAttribute() using this way.
Move it into svgAttributeChanged, and it should work - please add a testcase covering this.

&gt; Source/WebCore/svg/SVGUseElement.cpp:248
&gt; +            || SVGExternalResourcesRequired::isKnownAttribute(attrName)) {

Please restore the formatting.

&gt; Source/WebCore/svg/SVGUseElement.cpp:270
&gt; +//        SVGUseElement* correspondingUseElement = static_cast&lt;SVGUseElement*&gt;(element);

Commented code should go away.

&gt; Source/WebCore/svg/SVGUseElement.cpp:919
&gt; +    for (SVGElementInstance* node = targetElementInstance-&gt;firstChild(); node; node = node-&gt;nextSibling()) {

I&apos;d s/node/instance/ here otherwise this is confusing. You&apos;re walking a SVGElementInstance tree here, not a DOM tree.

&gt; Source/WebCore/svg/SVGUseElement.h:1
&gt; +/* Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann &lt;zimmermann@kde.org&gt;

Hm?

&gt; Source/WebCore/svg/SVGUseElement.h:107
&gt; +    Document* referencedDocument() const;
&gt; +    virtual void notifyFinished(CachedResource*);

For beauty, reorder this :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571911</commentid>
    <comment_count>127</comment_count>
      <attachid>130393</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-03-06 09:36:22 -0800</bug_when>
    <thetext>Created attachment 130393
Proposed second part

&gt; Discussed some things with reni on IRC, for the record:
&gt; 
&gt; &gt; Source/WebCore/svg/SVGUseElement.cpp:163
&gt; &gt; +            if (isExternalURIReference(href())) {
&gt; 
&gt; Oh, just noticing that this is in parseAttribute, not in svgAttributeChanged.
&gt; You won&apos;t react properly to SVG DOM changes like myUseElement.href.baseVal.value = &quot;some-external-reference&quot;; it only works through setAttribute() using this way.
&gt; Move it into svgAttributeChanged, and it should work - please add a testcase covering this.
This and the other fixes are done. The old dyn-up tests are also updated to produce nicer expected pngs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571976</commentid>
    <comment_count>128</comment_count>
      <attachid>130393</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-06 10:44:42 -0800</bug_when>
    <thetext>Comment on attachment 130393
Proposed second part

Attachment 130393 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11832444

New failing tests:
svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t.svg
svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t.svg
svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572027</commentid>
    <comment_count>129</comment_count>
      <attachid>130393</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-06 11:43:52 -0800</bug_when>
    <thetext>Comment on attachment 130393
Proposed second part

Attachment 130393 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11836485

New failing tests:
svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t.svg
svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t.svg
svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572588</commentid>
    <comment_count>130</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-03-06 23:35:10 -0800</bug_when>
    <thetext>The only failing tests are the newly introduced recursive tests. The expecteds were created on Mac Lion. Furthermore they contain texts too what easily could cause mismatches. Unfortunately I cannot check it on chrome build but I&apos;m sure that all we need is just a rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572673</commentid>
    <comment_count>131</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-07 01:00:22 -0800</bug_when>
    <thetext>(In reply to comment #130)
&gt; The only failing tests are the newly introduced recursive tests. The expecteds were created on Mac Lion. Furthermore they contain texts too what easily could cause mismatches. Unfortunately I cannot check it on chrome build but I&apos;m sure that all we need is just a rebase.

You should suppress those as IMAGE+TEXT IMAGE TEXT PASS in the expectations - this is the sledgehammer turning cr-linux green until those are rebaselined - I was told this is best practice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572971</commentid>
    <comment_count>132</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-03-07 09:47:08 -0800</bug_when>
    <thetext>I tried out what we talked on IRC about: leaving fragmentIdentifierFromIRIString() in its original state and rewriting targetElementFromIRIString() as follows:

Element* SVGURIReference::targetElementFromIRIString(const String&amp; iri, Document* document, Document* externalDocument, String* fragmentIdentifier)
{
     String id = fragmentIdentifierFromIRIString(iri, document);
     if (fragmentIdentifier)
         *fragmentIdentifier = id;
     if (id.isEmpty())
         return 0;
     if (externalDocument) 
         return externalDocument-&gt;getElementById(id);
     else if (isExternalURIReference(iri))
         return 0; // Non-existing external resource
     // Local reference
     return document-&gt;getElementById(id);
}

Furthermore externalResource parameter would come from a new externalDocument() function what only gives the external document or NULL.
Well... i shall continue to think it isn&apos;t the good idea. Let&apos;s take an example:
&lt;use y=&quot;80&quot; xlink:href=&quot;resources/rgb.svg#RGB&quot;/&gt;
In this case:

KURL base = start ? KURL(document-&gt;baseURI(), url.substring(0, start)) : document-&gt;baseURI();
will results: document-&gt;baseURI() = file://path/to/reference/resources/rgb.svg#RGB
url.substring(0, start) = resources/rgb.svg#RGB

KURL kurl(base, fragmentIdentifier); results:
base = file://path/to/reference/resources/resources/rgb.svg#RGB

This is obviously wrong and also will fail at:
if (equalIgnoringFragmentIdentifier(kurl, document-&gt;url()))

So I submit that we should pass information to fragmentIdentifierFromIRIString() about the location of resource (external or internal) and create the path according to it. And if we do this way then we don&apos;t need to extend targetElementFromIRIString().
Furthermore I agree that the current solution is not the cleanest approach. We could maybe keep the externalDocument() function and stick some comment to the resource path creating part to make the source more readable.
What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573711</commentid>
    <comment_count>133</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-08 01:38:33 -0800</bug_when>
    <thetext>(In reply to comment #132)
&gt; I tried out what we talked on IRC about: leaving fragmentIdentifierFromIRIString() in its original state and rewriting targetElementFromIRIString() as follows:
... 
&gt; Furthermore externalResource parameter would come from a new externalDocument() function what only gives the external document or NULL.
Sounds good so far, much cleaner.

&gt; Well... i shall continue to think it isn&apos;t the good idea. Let&apos;s take an example:
&gt; &lt;use y=&quot;80&quot; xlink:href=&quot;resources/rgb.svg#RGB&quot;/&gt;
&gt; In this case:

I can&apos;t follow your example. First of all let&apos;s agree on a baseURI for the host document containing the &lt;use&gt;. &quot;/home/reni/testcase.svg&quot; contains this &lt;use&gt;, which is supposed to reference the &quot;RGB&quot; element from the &quot;/home/reni/resources/rgb.svg&quot; file). That means the host document has a baseURI like this: &quot;file:///home/reni/testcase.svg&quot;.

targetElementFromIRIString() should be called with the _host_ document() as parameter (not the external one), as you correctly to in the revised version from above.

&apos;start&apos; is named badly, and means the startOfTheFragmentIdentifier.
 
&gt; KURL base = start ? KURL(document-&gt;baseURI(), url.substring(0, start)) : document-&gt;baseURI();
&gt; will results: document-&gt;baseURI() = file://path/to/reference/resources/rgb.svg#RGB
XXX This baseURI is wrong, it&apos;s not the baseURI of the host document(). See beow.

&gt; url.substring(0, start) = resources/rgb.svg#RGB
XXXX This doesn&apos;t include the fragment part, it&apos;s only resources/rgb.svg

&gt; KURL kurl(base, fragmentIdentifier); results:
&gt; base = file://path/to/reference/resources/resources/rgb.svg#RGB

This is unfortunately wrong, I&apos;ll repaint your code with the correct baseURI.
KURL base = KURL(&quot;file:///home/reni/testcase.svg&quot;, &quot;resources/rgb.svg&quot;);
results to: base = &quot;file:///home/reni/resources/rgb.svg&quot;.

Now KURL kur(base, fragmentIdentifier) is called with:
KURL kurl(&quot;file:///home/reni/resources/rgb.svg&quot;, &quot;#RGB&quot;);
This should result in &quot;file:///home/reni/resources/rgb.svg#RGB&quot;.

&gt; This is obviously wrong and also will fail at:
&gt; if (equalIgnoringFragmentIdentifier(kurl, document-&gt;url()))
Yeah, this is of course wrong now. It would need to be verified against the _external_ document URI here.

I&apos;d still like to avoid having to pass both the internal &amp; external document to fragmentIdentifierFromIRIString. This requires to decouple the KURL construction fully from the validation of the URL. Here&apos;s an untested sketch-up:

static inline KURL urlFromIRIStringWithFragmentIdentifier(const String&amp; url, Document* document, String&amp; fragmentIdentifier)
{
    ASSERT(document);
    size_t startOfFragmentIdentifier = url.find(&apos;#&apos;);
    if (startOfFragmentIdentifier == notFound)
        return KURL();

    // Exclude the &apos;#&apos; character when determining the fragmentIdentifier.
    fragmentIdentifier = url.substring(start + 1);
    if (startOfFragmentIdentifier) {
        KURL base(document-&gt;baseURI(), url.substring(0, start));
        return KURL(base, url.substring(start));
    }

    return KURL(document-&gt;baseURI(), url.substring(start));
}

Element* SVGURIReference::targetElementFromIRIString(const String&amp; iri, Document* document, Document* externalDocument, String* fragmentIdentifier)
{
    // If there&apos;s no fragment identifier contained within the IRI string, we can&apos;t lookup an element.
    String id;
    KURL url = urlFromIRIStringWithFragmentIdentifier(iri, document, id);
    if (url == KURL()) 
        return 0;

    // If we&apos;re requesting an external resources, and externalDocument is non-zero, the load already succeeded.
    // Go ahead and check if the externalDocuments URL matches the expected URL, that we resolved using the
    // host document before in urlFromIRIStringWithFragmentIdentifier(). For internal resources, the same
    // assumption must hold true, just with the host documents URL, not the external documents URL.
    if (!equalIgnoringFragmentIdentifier(url, externalDocument ? externalDocument-&gt;url() : document-&gt;url()))
        return 0;
        
    if (fragmentIdentifier)
        *fragmentIdentifier = id;

    if (id.isEmpty)
        return 0;

    if (externalDocument)
        return externalDocument-&gt;getElementById(id);
    else if (isExternalURIReference(iri))
        return 0; // Non-existing external resource

    return document-&gt;getElementById(id);
}

I think its more obvious what&apos;s going on now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575003</commentid>
    <comment_count>134</comment_count>
      <attachid>131061</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-03-09 10:44:44 -0800</bug_when>
    <thetext>Created attachment 131061
Proposed second part</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577253</commentid>
    <comment_count>135</comment_count>
      <attachid>131597</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-03-13 05:42:18 -0700</bug_when>
    <thetext>Created attachment 131597
Proposed second part</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577360</commentid>
    <comment_count>136</comment_count>
      <attachid>131597</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-13 08:48:08 -0700</bug_when>
    <thetext>Comment on attachment 131597
Proposed second part

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

Looks much better, still some minor things to clean up:

&gt; LayoutTests/platform/mac-lion/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt:1
&gt; +layer at (0,0) size 800x600

The location of these test results is wrong. Lion results should be in platform/mac/svg, not in platform/mac-lion/svg.
Also a ChangeLog seems to be missing for LayoutTests.

&gt; LayoutTests/svg/custom/use-referencing-an-image-expected.svg:4
&gt; +&lt;svg version=&quot;1.2&quot; baseProfile=&quot;tiny&quot; xml:id=&quot;svg-root&quot; width=&quot;100%&quot; height=&quot;100%&quot;
&gt; +  viewBox=&quot;0 0 480 360&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;
&gt; +  xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; xmlns:xe=&quot;http://www.w3.org/2001/xml-events&quot;&gt;

You should strip off all unneeded variables, like xmlns:xlink, xmlns:xe, width/height xml:id/baseProfile/version here.

&gt; LayoutTests/svg/custom/use-referencing-an-image.svg:3
&gt; +&lt;svg version=&quot;1.2&quot; baseProfile=&quot;tiny&quot; xml:id=&quot;svg-root&quot; width=&quot;100%&quot; height=&quot;100%&quot;
&gt; +  viewBox=&quot;0 0 480 360&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;

Ditto.

&gt; LayoutTests/svg/custom/use-referencing-indirectly-itself-expected.svg:3
&gt; +&lt;svg version=&quot;1.2&quot; baseProfile=&quot;tiny&quot; xml:id=&quot;svg-root&quot; width=&quot;100%&quot; height=&quot;100%&quot;
&gt; +  viewBox=&quot;0 0 480 360&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;

Ditto.

&gt; LayoutTests/svg/custom/use-referencing-indirectly-itself-expected.svg:6
&gt; +  &lt;rect id=&quot;greenRect&quot; width=&quot;100&quot; height=&quot;100&quot; fill=&quot;green&quot;/&gt;

id is not need here, please make those as minimal as possible.

&gt; LayoutTests/svg/custom/use-referencing-indirectly-itself.svg:4
&gt; +  viewBox=&quot;0 0 480 360&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;
&gt; +  xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; xmlns:xe=&quot;http://www.w3.org/2001/xml-events&quot;&gt;

Ditto.

&gt; LayoutTests/svg/custom/use-referencing-itself-expected.svg:3
&gt; +&lt;svg version=&quot;1.2&quot; baseProfile=&quot;tiny&quot; xml:id=&quot;svg-root&quot; width=&quot;100%&quot; height=&quot;100%&quot;
&gt; +  viewBox=&quot;0 0 480 360&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;

Ditto.

&gt; LayoutTests/svg/custom/use-referencing-itself.svg:4
&gt; +  viewBox=&quot;0 0 480 360&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;
&gt; +  xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; xmlns:xe=&quot;http://www.w3.org/2001/xml-events&quot;&gt;

Ditto.

&gt; Source/WebCore/platform/KURL.cpp:1391
&gt; +    if (a.m_queryEnd != b.m_queryEnd) {
&gt; +        return false;}

Please revert this.

&gt; Source/WebCore/svg/SVGURIReference.cpp:85
&gt; +    String id = &quot;&quot;;

Do you need an empty string here? If so use String id = emptyString(); But I don&apos;t think that&apos;s need here, String id; should do it.

&gt; Source/WebCore/svg/SVGURIReference.cpp:106
&gt; +        return 0; // Non-existing external resource

trailing period missing.

&gt; Source/WebCore/svg/SVGURIReference.h:47
&gt; +        if (!uri.startsWith(&quot;#&quot;)) {

Reverse the logic here.
if (uri,startsWith(&apos;#&apos;))
    return false;

&gt; Source/WebCore/svg/SVGUseElement.cpp:231
&gt; +        if (isExternalURIReference(href(), document())) {

I&apos;d cache the result of isExternalURIREference in a boolean, to avoid calling it twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577493</commentid>
    <comment_count>137</comment_count>
      <attachid>131655</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-03-13 10:11:48 -0700</bug_when>
    <thetext>Created attachment 131655
Proposed second part

Done :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577809</commentid>
    <comment_count>138</comment_count>
      <attachid>131655</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-13 14:17:33 -0700</bug_when>
    <thetext>Comment on attachment 131655
Proposed second part

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

Excellent work Reni! Thanks for your patience, it took a while :-) r=me with some last comments. There are some &quot;new mode 100755&quot; changes to page/ContentSecurityPolicy.h and platform/network/chromium/ResourceRequest.h that should be avoided.

&gt; LayoutTests/svg/custom/use-referencing-itself-expected.svg:4
&gt; +  xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; xmlns:xe=&quot;http://www.w3.org/2001/xml-events&quot;&gt;

version/baseProfile/xm:id/width/height/xmlns:xinkxmns:xe are useless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578252</commentid>
    <comment_count>139</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2012-03-14 01:53:31 -0700</bug_when>
    <thetext>Committed r110676: &lt;http://trac.webkit.org/changeset/110676&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578300</commentid>
    <comment_count>140</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-14 04:18:30 -0700</bug_when>
    <thetext>I&apos;m sorry for bothering you... but it looks this makes chromium to crash.

svg/custom/use-mutation-event-crash.svg
----
[11795:11795:17234733813326:ERROR:process_util_posix.cc(142)] Received signal 11
	base::debug::StackTrace::StackTrace() [0x851842]
	base::(anonymous namespace)::StackDumpSignalHandler() [0x80b425]
	0x7fccc9956af0
	WebCore::SVGUseElement::externalDocument() [0x1d2f11c]
	WebCore::SVGUseElement::referencedDocument() [0x1d2f070]
	WebCore::SVGUseElement::buildPendingResource() [0x1d2fc67]
	WebCore::SVGUseElement::willRecalcStyle() [0x1d2f65e]
	WebCore::Element::recalcStyle() [0x6e16a7]
	WebCore::Element::recalcStyle() [0x6e1f50]
----</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578303</commentid>
    <comment_count>141</comment_count>
      <attachid>131824</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-14 04:37:52 -0700</bug_when>
    <thetext>Created attachment 131824
Follow-up patch

We&apos;ve discussed this on IRC - I&apos;m adding a patch fixing these problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578307</commentid>
    <comment_count>142</comment_count>
      <attachid>131824</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-03-14 04:44:57 -0700</bug_when>
    <thetext>Comment on attachment 131824
Follow-up patch

r=me

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

&gt; Source/WebCore/ChangeLog:7
&gt; +        Assertions are firing due last minute changes, and some general problems.

A little more explanation please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578317</commentid>
    <comment_count>143</comment_count>
      <attachid>131824</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-14 05:02:08 -0700</bug_when>
    <thetext>Comment on attachment 131824
Follow-up patch

Landed with improved ChangeLog ok&apos;ed by Zoltan on IRC in r110692.
(Sorry I couldn&apos;t upload a patch that applies, as webkit-patch upload is not working, due my bad line to git.webkit.org)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578318</commentid>
    <comment_count>144</comment_count>
      <attachid>131824</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-14 05:02:11 -0700</bug_when>
    <thetext>Comment on attachment 131824
Follow-up patch

Landed with improved ChangeLog ok&apos;ed by Zoltan on IRC in r110692.
(Sorry I couldn&apos;t upload a patch that applies, as webkit-patch upload is not working, due my bad line to git.webkit.org)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578329</commentid>
    <comment_count>145</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-14 05:39:56 -0700</bug_when>
    <thetext>Renis new tests in svg/dynamic-updates are flaky.  They switch the xlink:href attribute to an external resource and call completeTest() afterwards (which calls layoutTestController.notifyDone()).

Currently SVGUseElement doesn&apos;t support dispatching SVGLoad events at all, nor does it respect externalResourcesRequired. The code is already present in SVGScriptElement, it only needs refactoring.
Then we can specify &lt;use externalResourcesRequired=&quot;true&quot; xlink:href=&quot;foo.svg&quot; onload=&quot;alert(&apos;blub&apos;);&gt;, and the alert() only fires after the external resource finished loading, or an SVGError event gets dispatched.

This framework is needed otherwise we can&apos;t reliable test dynamic changes from internal to external resources. I will look into this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579240</commentid>
    <comment_count>146</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-15 03:06:48 -0700</bug_when>
    <thetext>(In reply to comment #145)
&gt; This framework is needed otherwise we can&apos;t reliable test dynamic changes from internal to external resources. I will look into this.

All fixed in trunk, see bug 81109. externalResourcesRequired support is now enabled for &lt;use&gt;, and the flakiness is gone, by making the new tests depend on that.

Closing this bug finally!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666666</commentid>
    <comment_count>147</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-07-11 04:50:09 -0700</bug_when>
    <thetext>It works on WebKit nightly, but not on Chromium. Reading the patch it should work for Chromium as well, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666983</commentid>
    <comment_count>148</comment_count>
    <who name="jay">jay</who>
    <bug_when>2012-07-11 13:00:47 -0700</bug_when>
    <thetext>#147  dirke, 

neither testcase nor example from #3 wfm 

Version 5.1.7 (6534.57.2, r122160)
OS X 10.6.8



given the bug was &apos;fixed in trunk&apos; some 3 months ago,
you may begin to understand why frankly i stopped filing webkit-applebugs some time ago.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667469</commentid>
    <comment_count>149</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-07-12 00:47:18 -0700</bug_when>
    <thetext>(In reply to comment #148)
&gt; given the bug was &apos;fixed in trunk&apos; some 3 months ago,
&gt; you may begin to understand why frankly i stopped filing webkit-applebugs some time ago.

I&apos;m tired of this.

nzimmermann ~/Downloads/extsvgref &gt; cat prologo.css 
...
.nodeCons { 
	fill: url(prologoDefs.svg#consGrad);
}
...

This is not about external use elements, it&apos;s about referencing paint servers from external documents, which we do NOT support at present.

As external use references work in WebKit at present, the bug is fixed. External fill paint servers aren&apos;t fixed/supported, and are still not working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667527</commentid>
    <comment_count>150</comment_count>
    <who name="jay">jay</who>
    <bug_when>2012-07-12 01:49:47 -0700</bug_when>
    <thetext>#147, Nikolas

I didn&apos;t morph the bug, 
the description, and the reduced test cases provided, do not fit your supposed morph.
how is anyone else supposed to recognise the morph?

where is the bug that fits the description of #12499, and these test cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668990</commentid>
    <comment_count>151</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-07-13 07:08:21 -0700</bug_when>
    <thetext>(In reply to comment #149)
&gt; (In reply to comment #148)
&gt; As external use references work in WebKit at present, the bug is fixed. External fill paint servers aren&apos;t fixed/supported, and are still not working.

It seems to be a Chromium only bug. I opened bug 91237.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21102</attachid>
            <date>2008-05-12 23:51:27 -0700</date>
            <delta_ts>2012-01-16 09:03:28 -0800</delta_ts>
            <desc>Initial patch</desc>
            <filename>12499-3.diff</filename>
            <type>text/plain</type>
            <size>25458</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAzMzM3MSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjY3LDYgKzI2NjcsOCBAQAogCQlBQTMxQjVCNTBDMURGRDEwMDBB
RTcwODMgLyogUmVuZGVyU1ZHUm9vdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUEzMUI1QjMwQzFERkQxMDAwQUU3MDgzIC8qIFJlbmRlclNWR1Jvb3Qu
aCAqLzsgfTsKIAkJQUE0QzNBNzYwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTRDM0E3NDBC
MkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQUE0QzNBNzcwQjJC
MTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUE0QzNBNzUwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxl
bWVudC5oICovOyB9OworCQlBQTVGQkUxQjBERDYxNzY1MDAwNDBFMjEgLyogQ2FjaGVkU1ZHRG9j
dW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QUE1RkJFMTkwREQ2MTc2NTAwMDQwRTIxIC8qIENhY2hlZFNWR0RvY3VtZW50LmNwcCAqLzsgfTsK
KwkJQUE1RkJFMUMwREQ2MTc2NTAwMDQwRTIxIC8qIENhY2hlZFNWR0RvY3VtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTVGQkUxQTBERDYxNzY1
MDAwNDBFMjEgLyogQ2FjaGVkU1ZHRG9jdW1lbnQuaCAqLzsgfTsKIAkJQUIyM0EzMTIwOUJCQTc3
NjAwNjdDQzUzIC8qIEhUTUxUZXh0RmllbGRJbm5lckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUIyM0EzMTAwOUJCQTc3NjAwNjdDQzUz
IC8qIEhUTUxUZXh0RmllbGRJbm5lckVsZW1lbnQuY3BwICovOyB9OwogCQlBQjIzQTMxMzA5QkJB
Nzc2MDA2N0NDNTMgLyogSFRNTFRleHRGaWVsZElubmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUIyM0EzMTEwOUJCQTc3NjAwNjdDQzUz
IC8qIEhUTUxUZXh0RmllbGRJbm5lckVsZW1lbnQuaCAqLzsgfTsKIAkJQUIyM0EzMjcwOUJCQTdE
MDAwNjdDQzUzIC8qIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCMjNBMzI1MDlCQkE3RDAwMDY3Q0M1MyAv
KiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAgKi87IH07CkBAIC02ODIxLDYgKzY4MjMsOCBA
QAogCQlBQTMxQjVCMzBDMURGRDEwMDBBRTcwODMgLyogUmVuZGVyU1ZHUm9vdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHUm9vdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBQTRDM0E3NDBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTRDM0E3NTBCMkIxNjc5MDAyMzM0
QTIgLyogU3R5bGVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dHlsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUE1RkJFMTkwREQ2
MTc2NTAwMDQwRTIxIC8qIENhY2hlZFNWR0RvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRTVkdEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUFBNUZCRTFBMERENjE3NjUwMDA0MEUyMSAvKiBDYWNoZWRTVkdEb2N1
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkU1ZHRG9jdW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUIyM0EzMTAwOUJCQTc3NjAwNjdD
QzUzIC8qIEhUTUxUZXh0RmllbGRJbm5lckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxUZXh0RmllbGRJbm5lckVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBQjIzQTMxMTA5QkJBNzc2MDA2N0NDNTMgLyogSFRNTFRl
eHRGaWVsZElubmVyRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SFRNTFRleHRGaWVsZElubmVyRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBQjIzQTMyNTA5QkJBN0QwMDA2N0NDNTMgLyogQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJlZm9yZVRleHRJbnNlcnRl
ZEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMjkyLDYgKzEyMjk2
LDggQEAKIAkJQkNCMTZCRkIwOTc5QzM4NzAwNDY3NzQxIC8qIGxvYWRlciAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQUE1RkJFMTkwREQ2MTc2NTAwMDQw
RTIxIC8qIENhY2hlZFNWR0RvY3VtZW50LmNwcCAqLywKKwkJCQlBQTVGQkUxQTBERDYxNzY1MDAw
NDBFMjEgLyogQ2FjaGVkU1ZHRG9jdW1lbnQuaCAqLywKIAkJCQkxQThGNkJCMDBEQjU1Q0RDMDAx
REI3OTQgLyogYXBwY2FjaGUgKi8sCiAJCQkJNTEyREQ4RTgwRDkxRTY5MTAwMEY4OUVFIC8qIGFy
Y2hpdmUgKi8sCiAJCQkJOTNBMUVBQTIwQTU2MzREODAwNjk2MEEwIC8qIG1hYyAqLywKQEAgLTE1
MDQxLDYgKzE1MDQ3LDcgQEAKIAkJCQlCQ0JGQjUzRDBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01X
aW5kb3dTaGVsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk5OTg2OUUwREQwREVFQTAwRjhEMjYx
IC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTk5
ODZBMDBERDBERUVBMDBGOEQyNjEgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3guaCBpbiBIZWFkZXJz
ICovLAorCQkJCUFBNUZCRTFDMERENjE3NjUwMDA0MEUyMSAvKiBDYWNoZWRTVkdEb2N1bWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzNEMzM0IwREQ2MDdERTAwMDkwMTIzIC8qIEFjY2Vzc0Nv
bnRyb2xMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzM0QzMzRDBERDYwN0RFMDAwOTAxMjMg
LyogQWNjZXNzSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzNEMzM0YwREQ2MDdERTAwMDkw
MTIzIC8qIEFjY2Vzc0l0ZW1SdWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTE1MDg0LDcgKzE1MDkx
LDYgQEAKIAkJMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0g
ewogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlD
Mjg0MzA4OTAyQjExMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQ
cm9qZWN0ICJXZWJDb3JlIiAqLzsKLQkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDIu
NCI7CiAJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsKIAkJCWtub3duUmVnaW9ucyA9ICgK
IAkJCQlFbmdsaXNoLApAQCAtMTY3NTIsNiArMTY3NTgsNyBAQAogCQkJCUJDQkZCNTNDMERDRDI5
Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5
OTk4NjlGMEREMERFRUEwMEY4RDI2MSAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyOTk5ODZBMTBERDBERUVBMDBGOEQyNjEgLyogQWNjZXNzaWJp
bGl0eUxpc3RCb3guY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUE1RkJFMUIwREQ2MTc2NTAwMDQw
RTIxIC8qIENhY2hlZFNWR0RvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMzRDMzNB
MERENjA3REUwMDA5MDEyMyAvKiBBY2Nlc3NDb250cm9sTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzM0QzMzQzBERDYwN0RFMDAwOTAxMjMgLyogQWNjZXNzSXRlbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzM0QzMzRTBERDYwN0RFMDAwOTAxMjMgLyogQWNjZXNzSXRlbVJ1bGUuY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCShyZXZpc2lvbiAzMzM3MSkKKysrIFdlYkNv
cmUvbG9hZGVyL0NhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOSBAQAogI2lu
Y2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkWFNMU3R5bGVTaGVldC5oIgorI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiQ2Fj
aGVkU1ZHRG9jdW1lbnQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTgxLDYgKzg0LDEwIEBAIHN0
YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVzb3VyY2UoQ2EKICAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpYQkxTdHlsZVNoZWV0OgogICAgICAgICByZXR1cm4gbmV3IENhY2hlZFhCTERvY3Vt
ZW50KHVybC5zdHJpbmcoKSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OlNWR0RvYzoKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRTVkdEb2N1bWVu
dCh1cmwuc3RyaW5nKCkpOworI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiAzMzM3MSkKKysrIFdl
YkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2
LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShYQkwpCiAgICAgICAgICwgWEJMCiAjZW5kaWYKKyNp
ZiBFTkFCTEUoU1ZHKQorICAgICAgICAsIFNWR0RvYworI2VuZGlmCiAgICAgfTsKIAogICAgIGVu
dW0gU3RhdHVzIHsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaAkocmV2
aXNpb24gMzMzNzEpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBTdHJpbmc7CiAgICAgY2xhc3MgSW1hZ2U7CiAgICAgY2xhc3MgSW50UmVjdDsKKyNpZiBF
TkFCTEUoU1ZHKQorICAgIGNsYXNzIFNWR0RvY3VtZW50OworI2VuZGlmCiAKICAgICAvKioKICAg
ICAgKiBAaW50ZXJuYWwKQEAgLTczLDYgKzc2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNp
ZiBFTkFCTEUoWEJMKQogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0WEJMRG9jdW1lbnQoY29uc3Qg
U3RyaW5nJiAvKlVSTCovLCBYQkw6OlhCTERvY3VtZW50KikgeyB9CiAjZW5kaWYKKyNpZiBFTkFC
TEUoU1ZHKQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0U1ZHRG9jdW1lbnQoY29uc3QgU3RyaW5n
JiAvKlVSTCovLCBTVkdEb2N1bWVudCopIHsgfQorI2VuZGlmCisKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSB7IH0KICAgICB9OwpJbmRleDog
V2ViQ29yZS9sb2FkZXIvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0NhY2hlZFNWR0RvY3VtZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
bG9hZGVyL0NhY2hlZFNWR0RvY3VtZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDcg
QEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMKKworICAg
IENvcHlyaWdodCAoQykgMjAwOCBSb2IgQnVpcyAoYnVpc0BrZGUub3JnKQorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTVkcpCisKKyNpbmNsdWRlICJDYWNoZWRTVkdEb2N1
bWVudC5oIgorCisjaW5jbHVkZSAiQ2FjaGUuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNs
aWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCisjaW5jbHVk
ZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgi
CisjaW5jbHVkZSAibG9hZGVyLmgiCisjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitDYWNoZWRTVkdEb2N1bWVudDo6Q2FjaGVkU1ZHRG9jdW1lbnQoY29u
c3QgU3RyaW5nICZ1cmwpCis6IENhY2hlZFJlc291cmNlKHVybCwgU1ZHRG9jKSwgbV9kZWNvZGVy
KG5ldyBUZXh0UmVzb3VyY2VEZWNvZGVyKCJhcHBsaWNhdGlvbi94bWwiKSkKK3sKKyAgICAvLyBJ
dCdzIFNWRyB3ZSB3YW50LgorICAgIHNldEFjY2VwdCgiaW1hZ2Uvc3ZnK3htbCIpOworfQorCitD
YWNoZWRTVkdEb2N1bWVudDo6fkNhY2hlZFNWR0RvY3VtZW50KCkKK3sKK30KKwordm9pZCBDYWNo
ZWRTVkdEb2N1bWVudDo6YWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50ICpjKQoreworICAg
IENhY2hlZFJlc291cmNlOjphZGRDbGllbnQoYyk7CisgICAgaWYgKCFtX2xvYWRpbmcpCisgICAg
ICAgIGMtPnNldFNWR0RvY3VtZW50KG1fdXJsLCBkb2N1bWVudCgpKTsKK30KKwordm9pZCBDYWNo
ZWRTVkdEb2N1bWVudDo6c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBjaHMpCit7CisgICAgbV9k
ZWNvZGVyLT5zZXRFbmNvZGluZyhjaHMsIFRleHRSZXNvdXJjZURlY29kZXI6OkVuY29kaW5nRnJv
bUhUVFBIZWFkZXIpOworfQorCitTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKK30KKwor
dm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVCghbV9kb2N1bWVudCk7CisKKyAgICBtX2RvY3Vt
ZW50ID0gbmV3IFNWR0RvY3VtZW50KERPTUltcGxlbWVudGF0aW9uOjppbnN0YW5jZSgpLCAwKTsK
KyAgICBtX2RvY3VtZW50LT5vcGVuKCk7CisKKyAgICBtX2RhdGEgPSBkYXRhOworICAgIHNldEVu
Y29kZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKG1f
ZGF0YS5nZXQoKSkgeworICAgICAgICBtX2RvY3VtZW50LT53cml0ZShtX2RlY29kZXItPmRlY29k
ZShtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSkpOworICAgIH0KKworICAgIG1fZG9jdW1l
bnQtPmZpbmlzaFBhcnNpbmcoKTsKKyAgICBtX2RvY3VtZW50LT5jbG9zZSgpOworICAgIG1fbG9h
ZGluZyA9IGZhbHNlOworICAgIGNoZWNrTm90aWZ5KCk7Cit9CisKK3ZvaWQgQ2FjaGVkU1ZHRG9j
dW1lbnQ6OmNoZWNrTm90aWZ5KCkKK3sKKyAgICBpZiAobV9sb2FkaW5nKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIgdyhtX2NsaWVudHMpOwor
ICAgIHdoaWxlIChDYWNoZWRSZXNvdXJjZUNsaWVudCAqYyA9IHcubmV4dCgpKQorICAgICAgICBj
LT5zZXRTVkdEb2N1bWVudChtX3VybCwgZG9jdW1lbnQoKSk7Cit9CisKK3ZvaWQgQ2FjaGVkU1ZH
RG9jdW1lbnQ6OmVycm9yKCkKK3sKKyAgICBtX2xvYWRpbmcgPSBmYWxzZTsKKyAgICBtX2Vycm9y
T2NjdXJyZWQgPSB0cnVlOworICAgIGNoZWNrTm90aWZ5KCk7Cit9CisKK30KKworI2VuZGlmCklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRTVkdEb2N1bWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL0NhY2hlZFNWR0RvY3VtZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2xvYWRlci9DYWNoZWRTVkdEb2N1bWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBA
CisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzCisKKyAgICBD
b3B5cmlnaHQgKEMpIDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisKKyovCisKKyNpZm5kZWYg
Q2FjaGVkU1ZHRG9jdW1lbnRfaAorI2RlZmluZSBDYWNoZWRTVkdEb2N1bWVudF9oCisKKyNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3Mg
VGV4dFJlc291cmNlRGVjb2RlcjsKKyAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKKyAg
ICBjbGFzcyBTVkdEb2N1bWVudDsKKworI2lmIEVOQUJMRShTVkcpCisgICAgY2xhc3MgQ2FjaGVk
U1ZHRG9jdW1lbnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgQ2FjaGVkU1ZHRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB1cmwpOworICAgICAgICB2aXJ0dWFs
IH5DYWNoZWRTVkdEb2N1bWVudCgpOworCisgICAgICAgIFNWR0RvY3VtZW50KiBkb2N1bWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KKworICAgICAgICB2aXJ0dWFsIHZv
aWQgYWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7CisKKyAgICAgICAgdmlydHVhbCB2
b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2aXJ0dWFsIFN0cmluZyBl
bmNvZGluZygpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZXJyb3IoKTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGUoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisKKyAgICAgICAgdm9pZCBjaGVja05vdGlmeSgpOworCisgICAgcHJv
dGVjdGVkOgorICAgICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgICAg
IFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CisgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICB9OworCisjZW5kaWYKKworfQorCisjZW5kaWYKSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvRG9jTG9hZGVyLmNwcAkocmV2aXNpb24gMzMzNzEpCisrKyBXZWJDb3JlL2xvYWRlci9E
b2NMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw5IEBACiAjaW5jbHVkZSAi
Q2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKICNpbmNsdWRlICJDYWNo
ZWRYU0xTdHlsZVNoZWV0LmgiCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJDYWNoZWRTVkdE
b2N1bWVudC5oIgorI2VuZGlmCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTEzNSw2ICsxMzgsMTMgQEAgQ2FjaGVkWEJM
RG9jdW1lbnQqIERvY0xvYWRlcjo6cmVxdWVzdFhCTAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
U1ZHKQorQ2FjaGVkU1ZHRG9jdW1lbnQqIERvY0xvYWRlcjo6cmVxdWVzdFNWR0RvY3VtZW50KGNv
bnN0IFN0cmluZyYgdXJsKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRTVkdEb2N1
bWVudCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6U1ZHRG9jLCB1cmwsIFN0cmlu
ZygpKSk7Cit9CisjZW5kaWYKKwogQ2FjaGVkUmVzb3VyY2UqIERvY0xvYWRlcjo6cmVxdWVzdFJl
c291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIGNoYXJzZXQsIGJvb2wgaXNQcmVsb2FkKQogewogICAgIEtVUkwgZnVsbFVSTCA9
IG1fZG9jLT5jb21wbGV0ZVVSTCh1cmwpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgJKHJldmlzaW9uIDMz
MzcxKQorKysgV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDYgKzM5LDkgQEAgY2xhc3MgQ2FjaGVkRm9udDsKIGNsYXNzIENhY2hlZEltYWdlOwogY2xhc3Mg
Q2FjaGVkU2NyaXB0OwogY2xhc3MgQ2FjaGVkWFNMU3R5bGVTaGVldDsKKyNpZiBFTkFCTEUoU1ZH
KQorY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnQ7CisjZW5kaWYKIGNsYXNzIERvY3VtZW50OwogY2xh
c3MgRnJhbWU7CiBjbGFzcyBIVE1MSW1hZ2VMb2FkZXI7CkBAIC02Niw2ICs2OSw5IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoWEJMKQogICAgIENhY2hlZFhCTERvY3VtZW50KiByZXF1ZXN0WEJMRG9j
dW1lbnQoY29uc3QgU3RyaW5nICZ1cmwpOwogI2VuZGlmCisjaWYgRU5BQkxFKFNWRykKKyAgICBD
YWNoZWRTVkdEb2N1bWVudCogcmVxdWVzdFNWR0RvY3VtZW50KGNvbnN0IFN0cmluZyAmdXJsKTsK
KyNlbmRpZgogCiAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKGNvbnN0IFN0cmlu
ZyYgdXJsKSBjb25zdCB7IHJldHVybiBtX2RvY1Jlc291cmNlcy5nZXQodXJsKTsgfQogICAgIGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBDYWNoZWRSZXNvdXJjZSo+JiBhbGxDYWNoZWRSZXNvdXJjZXMo
KSBjb25zdCB7IHJldHVybiBtX2RvY1Jlc291cmNlczsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIv
bG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCShyZXZp
c2lvbiAzMzM3MSkKKysrIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc2LDYgKzc2LDkgQEAgTG9hZGVyOjpQcmlvcml0eSBMb2FkZXI6OmRldGVybWluZVByaW9y
aQogI2lmIEVOQUJMRShYQkwpCiAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhCTDoKICNl
bmRpZgorI2lmIEVOQUJMRShTVkcpCisgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0Rv
YzoKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIEhpZ2g7CiAgICAgICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6CiAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZv
bnRSZXNvdXJjZToKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJKHJldmlzaW9uIDMzMzcxKQor
KysgV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJt
YW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA4IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgS0RFIHByb2plY3QKIApAQCAtMjksMjIgKzI5LDI3IEBACiAjaW5jbHVkZSAiU1ZH
TmFtZXMuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiWExpbmtOYW1lcy5oIgorI2lu
Y2x1ZGUgIkRvY0xvYWRlci5oIgorI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHVFJlZkVsZW1lbnQ6OlNWR1RSZWZFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRvYykKICAgICAsIFNWR1VSSVJlZmVyZW5jZSgpCisg
ICAgLCBtX2NhY2hlZERvYygwKQogewogfQogCiBTVkdUUmVmRWxlbWVudDo6flNWR1RSZWZFbGVt
ZW50KCkKIHsKKyAgICBpZiAobV9jYWNoZWREb2MpCisgICAgICAgIG1fY2FjaGVkRG9jLT5yZW1v
dmVDbGllbnQodGhpcyk7CiB9CiAKLXZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnVwZGF0ZVJlZmVyZW5j
ZWRUZXh0KCkKK3ZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnVwZGF0ZVJlZmVyZW5jZWRUZXh0KERvY3Vt
ZW50KiBkb2MpCiB7Ci0gICAgRWxlbWVudCogdGFyZ2V0ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVu
dEJ5SWQoU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQoaHJlZigpKSk7CisgICAgRWxlbWVudCog
dGFyZ2V0ID0gZG9jLT5nZXRFbGVtZW50QnlJZChTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdldCho
cmVmKCkpKTsKICAgICBTdHJpbmcgdGV4dENvbnRlbnQ7CiAgICAgaWYgKHRhcmdldCAmJiB0YXJn
ZXQtPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICB0ZXh0Q29udGVudCA9IHN0YXRpY19jYXN0PFNW
R0VsZW1lbnQqPih0YXJnZXQpLT50ZXh0Q29udGVudCgpOwpAQCAtNTUsNyArNjAsMTQgQEAgdm9p
ZCBTVkdUUmVmRWxlbWVudDo6dXBkYXRlUmVmZXJlbmNlZFRleAogdm9pZCBTVkdUUmVmRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlm
IChTVkdVUklSZWZlcmVuY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSB7Ci0gICAgICAg
IHVwZGF0ZVJlZmVyZW5jZWRUZXh0KCk7CisgICAgICAgIFN0cmluZyBkb2NVcmwgPSBTVkdVUklS
ZWZlcmVuY2U6OmdldERvY1VybChocmVmKCkpOworICAgICAgICBpZiAoZG9jVXJsLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIHVwZGF0ZVJlZmVyZW5jZWRUZXh0KGRvY3VtZW50KCkpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIG1fY2FjaGVkRG9jID0gZG9jdW1lbnQoKS0+ZG9jTG9hZGVy
KCktPnJlcXVlc3RTVkdEb2N1bWVudChkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChkb2NVcmwpLnN0
cmluZygpKTsKKyAgICAgICAgICAgIGlmIChtX2NhY2hlZERvYykKKyAgICAgICAgICAgICAgICBt
X2NhY2hlZERvYy0+YWRkQ2xpZW50KHRoaXMpOworICAgICAgICB9CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTc1LDYgKzg3LDEyIEBAIFJlbmRlck9iamVjdCogU1ZHVFJlZkVsZW1lbnQ6
OmNyZWF0ZVJlbmQKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHSW5saW5lKHRoaXMp
OwogfQogCit2b2lkIFNWR1RSZWZFbGVtZW50OjpzZXRTVkdEb2N1bWVudChjb25zdCBTdHJpbmcm
IC8qVVJMKi8sIFNWR0RvY3VtZW50KiBkb2MpCit7CisgICAgaWYgKCFtX2NhY2hlZERvYy0+ZXJy
b3JPY2N1cnJlZCgpKQorICAgICAgICB1cGRhdGVSZWZlcmVuY2VkVGV4dChkb2MpOworfQorCiB9
CiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkocmV2aXNpb24gMzMz
NzEpCisrKyBXZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAy
MDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA4IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgS0RFIHByb2plY3QKIApAQCAtMjUsMTIgKzI1LDE2IEBACiAjaWYgRU5BQkxF
KFNWRykKIAogI2luY2x1ZGUgIlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaCIKKyNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZQogewotICAgIGNsYXNzIFNWR1RSZWZFbGVtZW50IDogcHVibGlj
IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIHB1YmxpYyBTVkdVUklSZWZlcmVuY2UKLSAgICB7
CisgICAgY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnQ7CisKKyAgICBjbGFzcyBTVkdUUmVmRWxlbWVu
dCA6IHB1YmxpYyBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIFNWR1VSSVJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBT
VkdUUmVmRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAg
dmlydHVhbCB+U1ZHVFJlZkVsZW1lbnQoKTsKQEAgLTQwLDEzICs0NCwxNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZQogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgICAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRl
UmVuZGVyZXIoTm9kZSopIGNvbnN0OwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRTVkdEb2N1
bWVudChjb25zdCBTdHJpbmcmIC8qVVJMKi8sIFNWR0RvY3VtZW50Kik7CisKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiB0aGlzOyB9CiAKKyAgICAgICAgdm9pZCB1cGRhdGVSZWZlcmVuY2VkVGV4
dChEb2N1bWVudCopOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
Rk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYp
Ci0KLSAgICAgICAgdm9pZCB1cGRhdGVSZWZlcmVuY2VkVGV4dCgpOworICAgICAgICBDYWNoZWRT
VkdEb2N1bWVudCogbV9jYWNoZWREb2M7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCShyZXZpc2lvbiAzMzM3MSkKKysrIFdlYkNv
cmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDE1
IEBAIFN0cmluZyBTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdldChjb25zdCAKICAgICAgICAgcmV0
dXJuIHVybDsKIH0KIAorU3RyaW5nIFNWR1VSSVJlZmVyZW5jZTo6Z2V0RG9jVXJsKGNvbnN0IFN0
cmluZyYgdXJsKQoreworICAgIGlmICh1cmwuZmluZCgnIycpID4gLTEpIHsgLy8gZm9ybWF0IGlz
ICN0YXJnZXQKKyAgICAgICAgdW5zaWduZWQgaW50IGVuZCA9IHVybC5maW5kKCcjJyk7CisgICAg
ICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDAsIGVuZCk7CisgICAgfQorICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR1VSSVJlZmVyZW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1VSSVJlZmVy
ZW5jZS5oCShyZXZpc2lvbiAzMzM3MSkKKysrIFdlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICBzdGF0aWMgU3RyaW5nIGdldFRhcmdldChjb25zdCBTdHJpbmcmIHVybCk7CiAKKyAg
ICAgICAgc3RhdGljIFN0cmluZyBnZXREb2NVcmwoY29uc3QgU3RyaW5nJiB1cmwpOworCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50KCkgY29uc3QgPSAwOwogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMzMz
NzEpCisrKyBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgor
ICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0
CiAKQEAgLTMxLDEyICszMSwxNSBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHVXNl
RWxlbWVudC5oIgogCisjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJD
U1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyLmgiCisjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5z
dGFuY2UuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2VMaXN0LmgiCiAjaW5jbHVkZSAi
U1ZHR0VsZW1lbnQuaCIKQEAgLTYyLDExICs2NSwxNCBAQCBTVkdVc2VFbGVtZW50OjpTVkdVc2VF
bGVtZW50KGNvbnN0IFF1YWxpCiAgICAgLCBtX3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKICAg
ICAsIG1fd2lkdGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQogICAgICwgbV9oZWlnaHQodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fY2FjaGVkRG9jKDApCiB7CiB9CiAKIFNWR1VzZUVs
ZW1lbnQ6On5TVkdVc2VFbGVtZW50KCkKIHsKKyAgICBpZiAobV9jYWNoZWREb2MpCisgICAgICAg
IG1fY2FjaGVkRG9jLT5yZW1vdmVDbGllbnQodGhpcyk7CiB9CiAKIEFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgs
IHgsIFNWR05hbWVzOjp4QXR0ciwgbV94KQpAQCAtMTA2LDggKzExMiwxNSBAQCB2b2lkIFNWR1Vz
ZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShhdHRyKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKFNWR1VSSVJlZmVyZW5j
ZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCisgICAgICAgIGlmIChTVkdVUklSZWZlcmVu
Y2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSB7CisgICAgICAgICAgICBTdHJpbmcgZG9j
VXJsID0gU1ZHVVJJUmVmZXJlbmNlOjpnZXREb2NVcmwoaHJlZigpKTsKKyAgICAgICAgICAgIGlm
ICghZG9jVXJsLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIG1fY2FjaGVkRG9jID0gZG9j
dW1lbnQoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTVkdEb2N1bWVudChkb2N1bWVudCgpLT5jb21w
bGV0ZVVSTChkb2NVcmwpLnN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBpZiAobV9jYWNoZWRE
b2MpCisgICAgICAgICAgICAgICAgICAgICBtX2NhY2hlZERvYy0+YWRkQ2xpZW50KHRoaXMpOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsK
ICAgICB9CiB9CkBAIC0yNDksMTEgKzI2MiwyNiBAQCBzdGF0aWMgYm9vbCBzdWJ0cmVlQ29udGFp
bnNEaXNhbGxvd2VkRWxlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitEb2N1bWVudCogU1ZHVXNl
RWxlbWVudDo6cmVmZXJlbmNlZERvY3VtZW50KCkgY29uc3QKK3sKKyAgICBTdHJpbmcgZG9jVXJs
ID0gU1ZHVVJJUmVmZXJlbmNlOjpnZXREb2NVcmwoaHJlZigpKTsKKyAgICBpZiAoZG9jVXJsLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50KCk7CisgICAgZWxzZQorICAgICAgICBp
ZiAobV9jYWNoZWREb2MgJiYgbV9jYWNoZWREb2MtPmlzTG9hZGVkKCkpCisgICAgICAgICAgICBy
ZXR1cm4gbV9jYWNoZWREb2MtPmRvY3VtZW50KCk7CisKKyAgICByZXR1cm4gMDsKK30KKwogdm9p
ZCBTVkdVc2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiB7Ci0gICAgU3RyaW5nIGlk
ID0gU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQoaHJlZigpKTsKLSAgICBFbGVtZW50KiB0YXJn
ZXRFbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoaWQpOworICAgIGNvbnN0IERv
Y3VtZW50KiBkb2MgPSByZWZlcmVuY2VkRG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvYykKKyAgICAg
ICAgcmV0dXJuOwogCisgICAgU3RyaW5nIGlkID0gU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQo
aHJlZigpKTsKKyAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jLT5nZXRFbGVtZW50QnlJ
ZChpZCk7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KSB7CiAgICAgICAgIC8vIFRPRE86IFdlIHdh
bnQgdG8gZGVyZWdpc3RlciBhcyBwZW5kaW5nIHJlc291cmNlLCBpZiBvdXIgaHJlZigpIGNoYW5n
ZWQhCiAgICAgICAgIC8vIFRPRE86IE1vdmUgdG8gc3ZnQXR0cmlidXRlQ2hhbmdlZCwgb25jZSB3
ZSdyZSBmaXhpbmcgdXNlICYgdGhlIG5ldyBkeW5hbWljIHVwZGF0ZSBjb25jZXB0LgpAQCAtNDY0
LDcgKzQ5Miw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6YnVpbGRJbnN0YW5jZVRyZWUoU1YKIHZv
aWQgU1ZHVXNlRWxlbWVudDo6aGFuZGxlRGVlcFVzZVJlZmVyZW5jaW5nKFNWR0VsZW1lbnQqIHVz
ZSwgU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXRJbnN0YW5jZSwgYm9vbCYgZm91bmRQcm9ibGVt
KQogewogICAgIFN0cmluZyBpZCA9IFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KHVzZS0+aHJl
ZigpKTsKLSAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVu
dEJ5SWQoaWQpOyAKKyAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gcmVmZXJlbmNlZERvY3Vt
ZW50KCktPmdldEVsZW1lbnRCeUlkKGlkKTsgCiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0ID0gMDsK
ICAgICBpZiAodGFyZ2V0RWxlbWVudCAmJiB0YXJnZXRFbGVtZW50LT5pc1NWR0VsZW1lbnQoKSkK
ICAgICAgICAgdGFyZ2V0ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KHRhcmdldEVsZW1lbnQp
OwpAQCAtNTcxLDcgKzU5OSw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6ZXhwYW5kVXNlRWxlbWVu
dHNJblMKICAgICAgICAgU1ZHVXNlRWxlbWVudCogdXNlID0gc3RhdGljX2Nhc3Q8U1ZHVXNlRWxl
bWVudCo+KGVsZW1lbnQpOwogCiAgICAgICAgIFN0cmluZyBpZCA9IFNWR1VSSVJlZmVyZW5jZTo6
Z2V0VGFyZ2V0KHVzZS0+aHJlZigpKTsKLSAgICAgICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9
IGRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKGlkKTsgCisgICAgICAgIEVsZW1lbnQqIHRhcmdl
dEVsZW1lbnQgPSByZWZlcmVuY2VkRG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoaWQpOyAKICAg
ICAgICAgU1ZHRWxlbWVudCogdGFyZ2V0ID0gMDsKICAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQg
JiYgdGFyZ2V0RWxlbWVudC0+aXNTVkdFbGVtZW50KCkpCiAgICAgICAgICAgICB0YXJnZXQgPSBz
dGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4odGFyZ2V0RWxlbWVudCk7CkBAIC03MTAsNiArNzM4LDcg
QEAgdm9pZCBTVkdVc2VFbGVtZW50OjphdHRhY2hTaGFkb3dUcmVlKCkKIAogICAgIC8vIEluc3Bp
cmVkIGJ5IFJlbmRlclRleHRDb250cm9sOjpjcmVhdGVTdWJ0cmVlSWZOZWVkZWQoKS4gCiAgICAg
aWYgKHJlbmRlcmVyKCktPmNhbkhhdmVDaGlsZHJlbigpICYmIGNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIobV9zaGFkb3dUcmVlUm9vdEVsZW1lbnQuZ2V0KCkpKSB7CisgICAgICAgIC8vcmVmZXJl
bmNlZERvY3VtZW50KCktPmF0dGFjaCgpOwogICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBt
X3NoYWRvd1RyZWVSb290RWxlbWVudC0+c3R5bGVGb3JSZW5kZXJlcihyZW5kZXJlcigpKTsKIAog
ICAgICAgICBpZiAobV9zaGFkb3dUcmVlUm9vdEVsZW1lbnQtPnJlbmRlcmVySXNOZWVkZWQoc3R5
bGUpKSB7CkBAIC04MTcsNiArODQ2LDExIEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6dHJhbnNmZXJV
c2VBdHRyaWJ1dGUKICAgICBBU1NFUlQoZWMgPT0gMCk7CiB9CiAKK3ZvaWQgU1ZHVXNlRWxlbWVu
dDo6c2V0U1ZHRG9jdW1lbnQoY29uc3QgU3RyaW5nJiAvKlVSTCovLCBTVkdEb2N1bWVudCogZG9j
KQoreworICAgIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCShyZXZpc2lvbiAzMzM3MSkKKysrIFdlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgog
CiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTI5LDE3ICsy
OSwyMCBAQAogI2luY2x1ZGUgIlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU1ZHVGVzdHMuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7CiAgICAgY2xhc3MgU1ZHTGVuZ3RoOworICAgIGNsYXNz
IENhY2hlZFNWR0RvY3VtZW50OwogCiAgICAgY2xhc3MgU1ZHVXNlRWxlbWVudCA6IHB1YmxpYyBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR1Rlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFu
Z1NwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1VSSVJl
ZmVyZW5jZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVu
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVu
dCB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdVc2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdVc2VFbGVtZW50KCk7CkBAIC02
Nyw2ICs3MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCBy
ZW1vdmVEaXNhbGxvd2VkRWxlbWVudHNGcm9tU3VidHJlZShOb2RlKiBlbGVtZW50KTsKIAorICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U1ZHRG9jdW1lbnQoY29uc3QgU3RyaW5nJiAvKlVSTCovLCBT
VkdEb2N1bWVudCopOworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCkBAIC04
Miw2ICs4Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICBm
cmllbmQgY2xhc3MgU1ZHRWxlbWVudDsKICAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0
YW5jZUZvclNoYWRvd1RyZWVFbGVtZW50KE5vZGUqIGVsZW1lbnQpIGNvbnN0OworICAgICAgICBE
b2N1bWVudCogcmVmZXJlbmNlZERvY3VtZW50KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICAvLyBJbnN0YW5jZSB0cmVlIGhhbmRsaW5nCkBAIC0xMDksNiArMTE1LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIFJlZlB0cjxTVkdFbGVtZW50PiBtX3NoYWRvd1RyZWVS
b290RWxlbWVudDsKICAgICAgICAgUmVmUHRyPFNWR0VsZW1lbnRJbnN0YW5jZT4gbV90YXJnZXRF
bGVtZW50SW5zdGFuY2U7CisKKyAgICAgICAgQ2FjaGVkU1ZHRG9jdW1lbnQqIG1fY2FjaGVkRG9j
OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="9220"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>21329</attachid>
            <date>2008-05-24 23:16:18 -0700</date>
            <delta_ts>2011-07-29 04:06:30 -0700</delta_ts>
            <desc>use #carrot</desc>
            <filename>stick.svg</filename>
            <type>image/svg+xml</type>
            <size>338</size>
            <attacher name="jay">jay</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyINCgl4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayINCiAgIHZlcnNpb249IjEuMiINCiAgIHdpZHRoPSIx
MDAlIg0KICAgaGVpZ2h0PSIxMDAlIg0Kdmlld0JveD0iMCAwIDgwMCA4MDAiID4NCiAgPHRpdGxl
PnN0aWNrPC90aXRsZT4KCjx1c2UgeGxpbms6aHJlZj0iaHR0cDovL3d3dy5wZWVwby5jby51ay9p
Y29uLWFyay92ZWdldGFibGUuc3ZneiNjYXJyb3QiIHg9IjAiIHk9IjAiIC8+Cgo8L3N2Zz4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>27315</attachid>
            <date>2009-02-04 08:05:51 -0800</date>
            <delta_ts>2012-01-16 09:03:28 -0800</delta_ts>
            <desc>external stylesheet referencing svg defs</desc>
            <filename>extsvgref.zip</filename>
            <type>application/zip</type>
            <size>9489</size>
            <attacher name="Alexey Stukalov">astukalov</attacher>
            
              <data encoding="base64">UEsDBBQAAgAIACeXRDpoLE/HcRoAAB0bAAAJAAAAdGVzdDgucG5nrXZ1UBvQs26wtFjxIkWCFynF
3UJxKU5xJzgUt+JQtBC8QYtD8eDFCwGCllLcCqVYgkNxePzue//cmTtv5s28s7NnZ893dubI7s4X
p/VWiRCPBg8AABCqKMvrPNrhRw1+Cnycty24DR8NyEZZRwMACGQDAMKiAIDrx6WwHQDAhxcA2LME
AMQ/AwCU73O/aUs+Atj2YA0wANCQ9OFGO+3Rx/DSUZID1E7Q7j46QGs1JXnAw3/kS1f5f2Dc98pG
XgAAD/N/FMO/VMYXAKDxVpEH6/kv7ps5Q8nnfO4DVzsaG4l8s6LtAnDnM16hM17h1r+ijmAdMXCJ
UwZK8GTYXJVydty+UbXWLoVH1ddU5KbbKiXPp3DjKPXZ2ZLYlnK2aPPCi0WVQThYmCz5+Giem1y/
SfUez8n9A9iqHXhUffLgS3uM+PLB6u5BkFvBYb6Xe0GQMT9VYbzDH7Vpv0N9s0QJ7byzfzy/h2t3
Ox7shZ/7ZNct5k9HvtY4vKt6DsJOyqInB1T6/yw/XgV+zUp0dLthUgHI/z/KZpeccUZEI6k4mwZA
3pDYChyFQwL4/ycwHuMfHfiX22bTvg+f0GveU1nXn28xQZggSpxhI2CShYbFSdOTchJQVe1/7R7r
qvLRGLbj7ADEHvVHozFB3yOe4jMBmLhj60H/s/M/YkWUFHD8sFhzvWGe/45vcGr4+frVqGIwwTvw
8f8PZE3ANPh/C/pvDn/eWa9f2eHqJ8KqsGTNYnSF+QKOLJvKi3JdtfqRDcdUuhmuoIbNcBA4AlsW
G5cUQMKiDJCHgjCIwRGcER+KcHk+fYyJ8ThYFiMgJLTy9iZvN32WXQae8+kueFt+JcxHcucqOcWn
kvr7mPyaPahg/vCiuKbmk/vNB2lsTIwQl4lcsafASAcXl83Qci8eP34C5rVMZmbmncNDJQsLBuCT
J1drg9NYRJIggI6jPNF+85x5f+GbGCjSlk0YoQ6j5DGNxcF/bnmw3B5Qmi/mxebk5HQyIkNC8vmp
4JQDeYMhQXwRKEN1Hb3Q+OHhaL3/VqSu5/6aSra5paWouBhLLZMbbG+/jVMnYxav6aqQh+vDxEKG
lKMjoCtPKmltzXrQMISOpu8Udp/9VJvvCX3ACX0ja9juyVrbcSD+LLbo1hRfsuRoQNgsaL+5U0+f
IujiADGRJ3GKp4Anysvbe/VJZFX2Jfn3k7+jHnfnc15VAjNNdqPP3XCVjytXnv7AtnYqUGaJKCsr
6xQqCcYUaqbeFxER8apqc5xmw4COxrW4ryW1rgaiinqu0PYyowy+Rgykutw695mZzyUvlr3I7j8G
/n1nHhDdwYaarck5aWHiDeoyj+q3qj1qMlN5rgEoIZCvHe/Qbu9bL1FIeN6us+1J3O5/qEDaaEhZ
WKqW1Y1yH0bAOLPHumo7T1SPf2PLln10a//7/IDdIrHFdWnQ3nJEQ7D/9Dv+a9MzkZWVFcMO3xr/
998R2TRMMtdbOe6D8RRc9faT9NKGmmxpNiFvGgWTpf5R1bZt4DW1tp6ChQklHZctid4iKcudzRJz
dRFx8hGH9o1GIcHZChIht5dR0/mbp34+Psd8vY+fg3hDBoAFZvPZAGerjfphZWyaeeKIjExIlnJK
nKNvHCQ7dkeUo/GOJyq2hV3nCL+LqDBVVgHLPPACbEMX9DwWiMLuNGqEHH97TM9KKiYuMPdwcPZe
VthjHShDAbEgMCYoAlv/gCoKovsyKuxzy27Nq2gy4iUsvSCtb04zX08nyntKfxHYCsXkFspZ5UbG
VxfWPwhVpA4WflUR10tudz09b+OUGR7n5Nic9/EMBHJKvLOf0/5E6+1L3wCM/uQ5fkrOMaRqM9Yc
W7d4Cfffm1F+IfLtCbHOjr/kRDltZYmjEl4+cwvW+FNa7OeYT+kasQ5cwmz1ce6Q2gNwDnkvtKnZ
x7F08dF0w3Pe93zRE/U6NmFakuK/7S7OBer9fRoNpHUL6962/lkeVmHZJBk2xuPEivn+uzSAamA+
gEDnRxcNgW/+lv6VT6z+a6yENd4LurmOvb4now7J1OJ3aDaMQemEXSo+jLmk7tIF7nzgEK/RjMYE
n4H36bzddoJeG9oNEFXGzpEZEzHxci/V/C2JrAtg3mVyQaL/W97vQPt6SvbiOyrlIajWtDINv7eJ
Sh4eyks0kDJ2OeR0+FkiGzBlJm27wNmCaNjkGVXSnSfnm1cdAZ8QYIM4Yi4sczUVw1270nec6f8C
ZMG4ggZOgYVjjmWpWjAry0m4joHG26oMjFzONCki4kAMX/Q8n3SPJoCx1ZEJ0PmCbu+w7yC/le+l
klGd9LOnClprPzy8Vvq9NZXnnnyZuTlO0XAkmJvq1+HmIVIgJzIPCKGn2ai+m44vfVmtzv+WL2k7
Cq2LQxw/LeN/BHpbIJ3H8I5crS5fNCrF+7tQdP6sAlidT1RJ/R4Bp9WF/kpfFl+fOz4bob2/3jeC
JKvipY4YxX8fiUIcmwaQl2Xb+WFGLXNiKmlqTrKaJMQ5pPdqsy1eXEv4bxTWHF11taEkWotvgAKp
vsFzQBepf/USIowihXwOnl2IEhYfDJfuf5fpG6e7/0KWw1kd1Ph1udMi5lVTX71UlXT2/GWtQAnv
wCU2XlVeJ3PTFpNC2NMHk6zdTgR6+072T4f20H0c6p1h8OMYy/7wl5pRVyxbrsxT0NDOjPhhie2P
g2vZzqgIY6K2qTFRbpr3rY3a626GW+LTPhjmJrysCJpaUp1KzjK4NzMwMpVY+ZKZerqVEp4lvVnk
EfMi04bT4Uso+cpo5hc22oHW7gsx9GoDw51U/0EbmRez7JM/7efVtpKt4RmJSxr3yAgv1pUN+ruW
ookgaX/yoYiQ2Y5WONgDX/cjxPKtTbd5Z1Jn7bnBCnMZN0satMs77If6zF85OnzIxo9usqu7uuXW
55qrFx8cKV2tpP5W1yMbUYbItlfWJ+qcKA+Xj0Q9RATPgxP+/tT5sOonwVTRteklBEkL1WqMWbim
ZrupgXfHzY1XFyP0/HgiWYmQbLavCUGCwHbTnSq/OkQyA2d13JeG4W/uy7GZ/wY3eOaN+2lSpdpm
jRs3aYXbYR5Yzu9DsYTn8jkrV/0u5/rIXAZVD5USxB/s1khon/JSIibJ+0cD1QsQ1W6dSePrcl2u
Yi4wZUXGoGMATBVn7ajvnDVv7Tz86nLq9T1krIHogy1f/u3KRybaP5ZWsqohfmTOY4oJL6jm4MAL
ReLzJ0cffu8XoZa3HBHszm44mJ8MyW5tp+au3H7PVUv7PJ8zsRuw/eocWXzPoqY7zGihNWw+Iui+
ADg+PsVoWOc8ne8fanm7R7OuxczfTk7EkbIceKP0uq16gdoL5OTaiMExfwlknO2ln8UKcDpyD8dy
6TW8bbqglPPr7SfHTn0iApz9ntOd1f4sK6RL6iffbV8onoglRk+mGLNcoeA3MSHSn+OUbmcGxlPq
ZVluRgkCswmtThldpBjwraoCpTaOiL8otw2/xaP1c//L37Nq31BKHQ+Y7EEXNiw+SeEs+ONVsmkv
m+Qj3xaymecp8R35cyv9QX30tZKNrm7taQ5prC782acT1jjhj6+bWsQ+ON9zniIB6/RZNnwiRZoZ
Lf1RBhJi8ev8/u1i0gvJi4jQuEEtDTZYZYl4DHn8MZ9dhfZ4cGqKeW3KGDb0fx/qOqHVattrqT5o
6Rm3Raiu9pxD4tjAjFlB2NfKWPYYqKpCCpLNyGRYyxtHlWe8t/dLYZXWTDXFRb84cbcr4m4+qeQT
ZQ/F83W/AcIpPk5Hx+oYoYRNREJf8c4F+YP5dlm2phXEMj9AKjnrVGO9WYELSbJLYH7WHWdyXlod
Ip3GMasI30OfJ2UgtjmGdy/wFrgIQbQsFtagq3fAVIuDl3u31bmKLt7Eu/6Yuw60MHm8BXka1VSj
NO9neChGb5gRhVFkttbY01haCXc9IM6ZteSSbINN5PCtcpLrC6vEe9YjiAo8lO/WB3VNr6vSKV0d
/4Em5+Mhx3V2sr/5gH29d0Rfsb67I2Y7OqzPKevxOb6DPdmxkFuPLCXIf41haskLs7KPhEqMmQgw
QbmQyfOvVtlLPmmxuwrSUOixitofwnA/5gh+7k9p3e5O3cFWlQi+sIZYZPAyNDbMr0UXj6QU1QYB
+/1nO/AtpmqFVgj5UxQLVwP+K/MRi7W+C1wU/7ltO2HV4bczSkX3B8fkmwykU3SFtvTn4p/Wi7Xa
R+oOoSqtopV5vUX3RnaOo+WdEsdZbaTNpnzpmMlZNomJ2dCun+UBXB9Jk4a14lGFP6LTKYjZt9/P
UiHqsMo5W64jdUg1b8ztpIrHAlU2CFBCApCxVN3MkmYNOBs5400QHegmqTOyLvTw5nJQRjIxeGgN
yWDx4E9yCLY2CDMZi9+Nsx9rox+UOaWrumzx5zyiKaKyik+1xkul0Q3tpptMytAeNl/gyXxxNtZC
eTx+jpoSC6LPD/GQaKwG1h685DdMGTuIZQZMGv9lU6NpEcyvvGxRbgyfJeuTanvd/pkjylQLWuEC
PPhU76ksbEd7aK3XiD60CyNITCzq8MJliA113t8+SrPoCjPyGUdYQFfxCUpqWAvK3Lvtjnl/5v+M
FJmjYhiUoV6Dm7sE0DbKlymuRisd8//L9E4eFxo6KnVg3iKgxmFtoIhKj7yUY/w9w30TNIPYc8iJ
e8NO2xfvPLuBXEunqlb+5J/EoepOKprTO5kpb1aJIhyRLPPGSnxCJwmV+cfnE4K8+GLZrZSdBP82
RM3ufyeWxs0y3cGhLDQqbQZIGWkDbVa1PjbI0N2nBmeBDQfMIkWsPw2vETZincukQzDgeMY3nknF
z/xnAgcCoy5rVN2MqLcjP/a9ikS5ibDKrWWJdDPTPHgSoHQZuNCDJK4RILQ2+vS4uIeOslrU/bEJ
VhHWmj5UmpjCvQOpEnZ0XU3BsZP8Bz7oC2srxUHTmomMmztLatRVsgAr9cTTBTM2aWAhwUayzL2o
5qIsg2P7nySJI3Tj5Ild2xlhp8Rhp9dYeR+PoohPcOw5Wvq28oFKT2WbrZTcxp73QZ+/jK0Y8fqg
4DeopqVxDhJzB7G0mJcRzudw4JtEWzW0rqVcD9r4KODI5NLYzfU2R/8SWbyUlXCWXjNP07ALcTLg
qEZuVW17MwbBYrE2Y2RuGbtv/74+TdYiffky7qi15871Hqw6Yns/JjD5ezXoMC9XxZrwJG7Crdrw
R3QklpRoGo2cReDTeKXIiV7rekXmYapbBqGcPiyBqyRGIyX8pmsBi951ET+bI28i7+t/dERpP04/
uYlIRHNmMwK3Gtu0vPtq9auORrCR+yOKQL/PHn0gg68VaxtaAVVwz7narxl34ToAORBoFKzmjrTW
GmG4XsXZn6Y02XWuylJdl306Ki7eQJAnqTZST2ufK288KmfQ2KnuRG3rZWRbidNFziinslmNjjVv
xDBZlHh/Vy7+pQKPtP+NskKxMjupJL3a+CZUhaXQnrClRlYDMhYD3k0v4lD+OtCaRytOJ2sjGO/E
IoPq/Kr/L5X7aXjYMhcclH4d060E/vKFCJ4r5vUxtOBGR8UeAkZqR9UMjg5AE3/JAj1zw5khfKcv
/moDoVEj5W4zTR/RsfxsbVpLNUzlI8Mc6ItV0Z8+uMNCKpvGdlqY04k8AlVFx3rF6a0pWAnnytQc
GBygvCwXt+gzk+rLfffy2mhYjrUoFjY+oe1bBwfdHOJ9Gwk/g3J0srSxpOxB943bASQlSCFzs/vm
oF8z9Fr3WWbA6ZbHhfNPgwwM5jwkE43Gxo8UgR0JqYiQwUAIafhHMnnsXLREGFnXDV82JKRG4NUu
gl+IhhznlUYc5mYjfiqRW9Z9w67IqY9H2VpUKWjiLMcX0ldt00fUVfeDk5fCMWN4Qj++W+/sxxui
TyqvAh/uLgqynLz505XLGlDNd6LebTGerZ9VLb6LOh2ur33+E6fqX6qCR9ICrBhoYoCL1oEyU/1f
sR6Le/5KQilMJlTonzVUrfPPys5McA+TVRjdyP2rxIrNafozI+LRVE7kxjqUUfaCnCTUKu6rVE4/
xQAR88YbayugcZTU6BYtPIX8DIDS+wDkJxFWPKmU7Jes8RW05x2rxJVu/qI2y+i1VH5JHD/3vVjl
yHYhZDEh2wt8SRryK/+sT8a2dL3J3uOEGkjBePMXG1os1WWni+JAVivLS1ljsWriJyJ5Pu9DiQ9T
Uz6/ULA2IHWqaHsyYL8nWYbqZfef3xfsiUdfbrok1WkF6REx2e8RHxAyebY993GfoYDj/xzlwxsZ
dZL7p/pEWezmFg4xYClqHvVVTARydYB0oTsz1LkdW7SpNUhHAdtvmkou4Fy+pauXpw46IU3dq7Et
D05Rgnux5qX+Jdap5I/NVRcfepKSZ5TipAGjCD3pouR1BnvtUrbouqdGaKmM9KXLuz/7vVNQYCsF
6dxYZKI0eO87A9rI4890gfWTR5+XEFI3DjGMq0vj2AuN3ptjxeYZHQfPcW/epBt5TD8yv/2is5qE
LZrBX0GLYkXqCrtmU6jsiKbk2qHq+RoogaroFxvR2zXRhWt55JxGE7vHAZnj2HVB2felfWPnI0nu
nLVZYjilRpa+YB0KRuFIvGjgfDLGywVzXxoZMTBo+cU4e7Cq1rxwMgfCgfAx9ERvZ7sauPnsLxa/
kx8XbzXmf2/E3f4fQuljSPxOgGuxa5sgIccJjxrIoWvBEmWq7Ft3kv7Od6wDcLF14Tj7VKN5W7Ny
sZXRr38hx6ARneECFpb8sFupNHqSHXvrRhM7uyQg1CdHjQtD456KnB2MJ/JxUTrwLqz6OhOrnTeh
9tNLV1NTbJst5vUfgyFg4WUB8N6UUvWvYj8NnvMdn8MOavbACyuWlSf9NcPj4j0LCalrNC1twpb8
djTpyioRB8KKoIgGkhoeTTWdPI5iSx5eYSYDtgVyXUg2aY3BAhcJyNntXvJ739PM0Es2elX4egfq
+EjK5DWVAT/JeMFdSFMrj/UJBAqNYdzeGLNmg06Nf+iilsIdV3pdordZ4n1vkw9P2Ur5TibD6x6+
T7x/y8flXED+vpXvtvlP99nX9Wx0LEw87URpN1FolvcbwjjTY/DWn+C1QLQ6vZ7Od8w8ZFXpuI5q
tk/PF1NzxqBSDNvzT48s0b3F6gIlUd/Z0farmD6Zsk/2FdedFpnRjgeFceI5KS6eW4n5VP+idjQn
1xHclb5ZDaPvDb3yBNXrbT925DufkLJ555qcf/POFaO/A64jIfHqB5RaTEIItD5SaQsFERTAKlyv
iNysThb0taB59y5ozQa5QXBab1fzSJM8oN2BQljIZ8DULkQpPR1a4tMb91uSyPJAKuImFXsDycPP
AucVVuQb4YkerMt08lsqdiJZ1X1Mk8IVObVA19OosUyUFVV0cAfPhOu9SNfvWtFWDwwYev+R8unY
NxjU2YIWjEz3ptbuhibHKaLdpEXslv3avWadhKMDRWY+fE4d9ZBuP2uD0dIFvXGtNbvPXkGNfUsj
8P1RoKsoEQcWGjVHTndW1fUQVmWtGewg2CXuOYc8l9IzaCzK/uY2+UcVKez/LXZZGvpg0T+EhSJo
hcLU8stZ3GqK0ry3FKmMdOkX4j+MG6rpX3U32zYv2tXZhrWB042O416ZwEx2EWYF3XQrXjWWiCER
S5RZFnH15+lxSxEJ9aVtw37LmzorXPoV/PE/Ov4+PL7dqW1/N7jGhjQb+pwjCCFkC98pLcVMUurE
zIbNCWQdzi2Fc7q4ARtOEAUnyWwGBhklNztqlqQBY2LXPT9kzYsGYOGWBgHlyudvKYrXsl0Zshot
qeVGRsC4P2KMQSmbMDGvLTsbMHosXojg12PJX6Tc7SRnHlE7xGOXstikl3nGZmBxWM5vFLJkJwt1
GFx0/9Dl9d9osgKivXZqgn82O08ur5lWiCB5bZHy8E+QaDQr1P14A7Gzv9/F3Z3hZm/wYY2Wy9Bj
3NhlUce6numc99/J24UUp48eNuKxmVswKmNRLc+VoJyQiYVz4YWV8COwag8MUASTE0TZnvx8rOG0
ZtD4+PgOGr3pjOTKG8k0SqFpTD6XLieDfOyeHuCbOH3owsE3h8VY8hvy7YN2SY2fify5y6Es3JeJ
NDD7Y7BCVsadpg91ygzmfx51YphCUXjSG47FapIa0GgyNS1imDmItDfwbsu4Got3a2v24GKkPpcn
nP1eeA3KjsF0CPGRTlXTG8gsScl/xTyVbenWLG2nSkIfD5IklluJoxGkJZCNnz7RbYfuFbSls1Y8
UtGOceuZX7/eQ3/NzBzTGqXvlc+H34zYqR3HdLmvb+LS/FZp4+awCvaOhhcswXCo5875VkfJy1uS
PCTgrkB+Vzy9lhw3lTc1U5ffXPqdZZ+VF15RCIOERPt59p+414xnEsRp6gP/Et96QutG/0GkKui+
hstsgR16k7V6hm6JE7t4JDLgs7YmqnnT0Wi7olvB1+MQ7Z9tZWVszzLv70MmsLCwJKuQtpVdNTih
LbeROxa8lOya/2wqZMILu/2nvPbM3tXJrlUWKxMQdPC/7hndUNF8QmSnzlYtUa64fybcdJiBB5M8
2RVG1RApq0YTqdAEEHKMUYmtXS6qF1JJ0iN5LbwXHD30lJxymbKt9SlGuxv0wogDYJoWFhaTsDC5
SiU7I0V+mDz38z+51k/LgsXfUlPFOQaNjcl5MWe/YN75vBKRmPuGEwZ2YYkeiCWAwYZcOGNcEvOG
RMl0ocXePEbxCtML54MTXX7Bv8WbJk2ivJnizhwEHzKWTJmwPhFyevHBYr7sOBLi2XWALhJ4RLg1
HXqUwfTcZaU7hbaCc3OSmkL6VehawIDKpi8JWeXXEViv7GxUy76pke8q92pSUrh0uKuiLrYDfzJX
PMxK214qHNJoDa/NLmQBooS8EcMxK1rU1ZV/XXjTajnxbrq+h9TB1C/Kf2DOnh556b8KrQ3ofE/X
IXk5z2h5CtFjvrPwE6l3Z8BuB0D5ZE6uRGPkEIgnymO/gJjSEwpEs/NCt+GA7dRYI4RTqYNN8Y9L
tZKHJwZjRGn0YD0FwONQUXgrXytnGfG/AFBLAwQUAAIACADWlkQ6Z39eLzUEAAChFQAACQAAAHRl
c3Q4LnN2Z+1YQW+jOBi9V+p/8HqlVSsFsA0GO00ySts5rNRVD9nbaA4E3AQN4Cw4TTKr/e9rICTQ
JG0n23RmpalSFYj9vvfeZ56hvQ/LJAaPIssjmfYhNhEEIg1kGKWTPvx9dG8wRrmB4YfB+VmvGGzk
ahWLfCqEAtNMPPThLJOxnEgzyHMI1Gom+lCJpbLK83Je/jgBemqa9+FUqVnXshaLhbmwTZlNLIIQ
svQICBZRqKZ9qC9AMBXRZKo0I0JhNbe7jKP0yz4EzDm3ym+hrgZAT0UqFoM7TQrIB/CbP5P5lRK5
YmYQz01dq7oE/hgNwTQSmZ8F0xW40ELCeSBCMF4BfzaLV9oE8PEeJEJNZQiUBLfDe6BHjWORXPas
qkxZMRR5MLiRiYaNlACFH6AJt/ZIY8i4Ay5uLoFWycEwFkuxAiM1/+LH8vH8bCTnWSBA4qssWnYB
A7n4a64bIvKOPglkPE/SvGeV5daFH/LySB+XnXnagcL/Xz7d3A7/HH46PzMLFqNVMpYx+Bs8yFQZ
efRVdAFGs+XVP+dnnz8XE6wSaoNbjY/CPvTh+qK+PAEq89P8QWaJrlccxr4SF7ZJO/xyO67ohyYD
SsiKmOGnwVRmXZBEYRiLKwiC2M/16ggQ2BKEg6H2WA/flrQmNSerIrWH4vjEFFmL4vUxFIMTUyQt
ijfHUAxPTJG2KN4eQ1G8K8WPx1CM3/V2uXsdxSI+1qHRy0SgarRUhkIn77IPdRZAsOpDD5m0ONwE
c3FSJzMlpseQjV3HRhxTz2X6W2sdwIWCBuydPxZxhW1w12QcYcoIpg71GGPrariEb5iUSVU4ZHBk
okv4nCMglEmU+jrNxn4u9E4gtmYNWMOWHcG4JEVepZi4pt1i7ryguAI3mG26nCKPY+R5hHHHWVez
T6TYeVaxH6u26P0deSML6moGxloUo8T2bGJj5jL7e7pASlLOq/qObRO3+kdeEF2BG55nIu5Rm1Nq
M9dxXLquRk+kmDyruO7ERvT+dflGFmz6rjURTlzdcRdTbjuIf1cX2hZ8w9I/dhVgZJsO81zu6V+b
EPsHWwU79yU5xSrA2DU1tPaAeR6imLD3dOHA3uuiDroEeeDH4oJ38GYXPjQedajOiXqG1zGKs8YW
3zQ7jB6v/ay1naKGseu82TiLtNqNmTtgfjLegJn0ZTjaRqsfBDZ/y2Yti97re9NtfOquuLQCbNhQ
iWY60lo/buHb5oGkfEEpWw8HqN2B9hD92AIPNsVruNzqy9PVfCPTfDQTwUGbvVduXhp7nosdlB35
uENM9wmIll++fHar1+Ff/S1msSZrvplcjIS6llkosuLBANe18AFmYEnWAlbk+Z23bus3mbwbff9f
y4OXLUensnyvv5jYP0q00DdNlqdBdThauIk8p/Fx3zBa8HHRUnTlZ7acOlsKl3+Gy3/2vFf8U3Tw
L1BLAwQUAAIACABClkQ6vBT+1yECAADtCAAACwAAAHByb2xvZ28uY3NznZXZbuIwFIavi8Q7WEJV
FynUCUshXMGMGFXqXZ/AOCfBqhMj20CZUd99nAXikjYJ+Arw9/3HO30q+DZOXkUk0D/U7dxw0Bqk
ozaEsiTyEZ51O8i0UCTaCUnM+MFHdy+x6dd3pu8m61DsL/hoPNp8zLIQloCzBhattY+m+NZwn91O
t9NPRAC/RKLyWiHj3Edbye83UnAzhN8Qqr7aRT1qmD+SBA9fzLcN0CZTGaZqpjXb2LTg8gR0jKBn
Q+7NTVsuS0CdZfeWyxQ5S/geq+TkcC0nxf4N9ELIACQ2pNJSvJsdWHFC32fFV2fPAr320XCGPs8c
13IiCYdzZVBVvAbFqyqDBsWtKkNL4en5aemNrvTGV3rPV3qT9l5xdNPt/fnA7haSUMAPeaWUfyUr
4KlkbraQpyNhXVPXS6/pF96t5XGVJ1xfqHiX8heVcFuskmutUjGBRsVgluW1UDybb1fFO1XJXors
QU6X4KRGkhy+2UINH9ohCV2nKxSzIOBwTAnYbkFkbW2DFM/cDqgW0oEwNB98lIjEUZSYRzxy8oOZ
z4jEq6ZMg1yU2e08PaJ4x2CPJCgWbCHfcIMhRdcQA3p8yia04uhYuTgLKBtUjK3ftzD74Y8qZ90T
KyGoRWkZ2/O8+RzjerxM7mE8mTThXolT05rwwWWDGdrpGDfhI3vsrrtY1OPjEh+PMaa0Hn+204fD
MKzHJ3Z62urxaYlPs1aH/wdQSwMEFAACAAgAIJZEOiF66ISsAgAAGwwAAA8AAABwcm9sb2dvRGVm
cy5zdmfNll1vmzAUhq9baf/BczVpk5pgQLSQQiuyKdOkTdWW9WZVL2hwiFVqI+zmY9P++46hdEvr
dJBJU25COLw653l9ODbh2fI2R3NaSiZ4hO0+wYjyiUgZzyL8YXze830v6Nn47PTFfijnGQI9lxGe
KVUMLGuxWPQXbl+UmeUQQixQ4FoyWOaM35iEdhAEVvUUQ1KEwpROZfUP/ku1yilSq4JGWNGlsiZS
aln48vLtu/hrfPliv5+LTIxXt9ciRz/QVHDVk+w7HSDbL5YnP0HARUqJfsbyfIDuyvz1gQ69L5OU
vDlBjcQ2S+xacnXVMFkVFNzthfCYJblWMcoVYmmEZUEnOoBRGWGfvNK0e3tgRBRITKeSqghDFFVJ
QA7x3kTkohwcjEZxTMgJqmKiSCZMrQakb2PLkMMmz2TxvCdZjussobXOvMnGRHC5pQ1oPBmN/tWG
63qeIcsWNsZNR7p04ujIUNw1Wjj2NicxtPO4azv1ej7Kogdz8zrALNGkXFuHh/fdtAg1f1MywmlS
3oB4hZGJNHgsz35LQ2u99t9w7DY4B74/HMZxSxpQ6wnYFijJVUumIOjC5LpbMzmtgOJ4OPT9tkBx
PBo9qDsDtV2kOA6CLkyu25kpub2ut6nsPnrBmYID6U7ScgzTQs/5haRwCNkw7Bit6svSqe+cavA2
bwx/0NVzaPbSDO+aXA9/RzMpm/8fM/UW3doMIXo7fMYMCotEKVryysZ8WAIrIM0ZXQzFEgAQQZAX
uXpJipKCnzmN9VGpviSKCf1ucTC2YKmaNQgzyrJZA1SDQpUZggqfIHZI0Gf9Qw49gj6SQ8erAlBC
l6qu33B1oMMCrp/5zd55D13dPDVg76oBu60BPae76gHYWtpwdtWDYzJgGgVnhxvhmBuhv3PvP8RD
/Rl/+gtQSwECFAAUAAIACAAnl0Q6aCxPx3EaAAAdGwAACQAAAAAAAAAAACAAAAAAAAAAdGVzdDgu
cG5nUEsBAhQAFAACAAgA1pZEOmd/Xi81BAAAoRUAAAkAAAAAAAAAAAAgAAAAmBoAAHRlc3Q4LnN2
Z1BLAQIUABQAAgAIAEKWRDq8FP7XIQIAAO0IAAALAAAAAAAAAAAAIAAAAPQeAABwcm9sb2dvLmNz
c1BLAQIUABQAAgAIACCWRDoheuiErAIAABsMAAAPAAAAAAAAAAAAIAAAAD4hAABwcm9sb2dvRGVm
cy5zdmdQSwUGAAAAAAQABADkAAAAFyQAAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62037</attachid>
            <date>2010-07-19 23:49:30 -0700</date>
            <delta_ts>2012-01-16 09:03:28 -0800</delta_ts>
            <desc>Patch reworked against trunk</desc>
            <filename>useext.diff</filename>
            <type>text/plain</type>
            <size>26765</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTk2YTA2MS4u
OGQ5YjY5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTM1NTMsNiArMzU1Myw4IEBACiAJCUE5RDI0ODA5MEQ3NTdFN0QwMEZERjk1OSAvKiBKU0RPTU1p
bWVUeXBlQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE5RDI0ODA1MEQ3NTdFN0QwMEZERjk1OSAvKiBKU0RPTU1pbWVUeXBlQXJyYXkuaCAqLzsg
fTsKIAkJQUEwOTcyQ0MwQjY5NDdBODAwQTcwNUU5IC8qIFNWR0lubGluZVRleHRCb3guY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEwOTcyQ0EwQjY5
NDdBODAwQTcwNUU5IC8qIFNWR0lubGluZVRleHRCb3guY3BwICovOyB9OwogCQlBQTA5NzJDRDBC
Njk0N0E4MDBBNzA1RTkgLyogU1ZHSW5saW5lVGV4dEJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEwOTcyQ0IwQjY5NDdBODAwQTcwNUU5IC8qIFNW
R0lubGluZVRleHRCb3guaCAqLzsgfTsKKwkJQUExRUNDQUYxMUYxOEQ4MTAwOTNBODVDIC8qIENh
Y2hlZFNWR0RvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFBMUVDQ0FEMTFGMThEODEwMDkzQTg1QyAvKiBDYWNoZWRTVkdEb2N1bWVudC5j
cHAgKi87IH07CisJCUFBMUVDQ0IwMTFGMThEODEwMDkzQTg1QyAvKiBDYWNoZWRTVkdEb2N1bWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUExRUND
QUUxMUYxOEQ4MTAwOTNBODVDIC8qIENhY2hlZFNWR0RvY3VtZW50LmggKi87IH07CiAJCUFBMjFF
Q0NBMEFCRjBGQkEwMDJCODM0QyAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBMDk3OEVEMEFCQUE2RTEwMDg3
NDQ4MCAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCAqLzsgfTsKIAkJQUEyMUVDQ0QwQUJGMEZD
NjAwMkI4MzRDIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBMDk3OEVFMEFCQUE2RTEwMDg3NDQ4MCAvKiBDU1ND
dXJzb3JJbWFnZVZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQUEzMUI1QjQwQzFERkQxMDAwQUU3MDgzIC8qIFJlbmRlclNWR1Jvb3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEzMUI1QjIw
QzFERkQxMDAwQUU3MDgzIC8qIFJlbmRlclNWR1Jvb3QuY3BwICovOyB9OwpAQCAtOTAwMyw2ICs5
MDA1LDggQEAKIAkJQUEwOTcyQ0IwQjY5NDdBODAwQTcwNUU5IC8qIFNWR0lubGluZVRleHRCb3gu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0lubGluZVRleHRCb3guaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUEwOTc4RUQwQUJBQTZFMTAwODc0NDgwIC8q
IENTU0N1cnNvckltYWdlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENTU0N1cnNvckltYWdlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBQTA5NzhFRTBBQkFBNkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQTFFQ0NBRDExRjE4RDgxMDA5M0E4NUMgLyog
Q2FjaGVkU1ZHRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
QTFFQ0NBRTExRjE4RDgxMDA5M0E4NUMgLyogQ2FjaGVkU1ZHRG9jdW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkU1ZHRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQUEzMUI1QjIwQzFERkQxMDAwQUU3MDgzIC8qIFJlbmRlclNWR1Jv
b3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1Jv
b3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTMxQjVCMzBDMURGRDEwMDBB
RTcwODMgLyogUmVuZGVyU1ZHUm9vdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVyU1ZHUm9vdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTRDM0E3
NDBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTU5ODUsNiArMTU5ODksOCBAQAogCQlCQ0IxNkJGQjA5NzlDMzg3MDA0Njc3
NDEgLyogbG9hZGVyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlBQTFFQ0NBRDExRjE4RDgxMDA5M0E4NUMgLyogQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwICov
LAorCQkJCUFBMUVDQ0FFMTFGMThEODEwMDkzQTg1QyAvKiBDYWNoZWRTVkdEb2N1bWVudC5oICov
LAogCQkJCTFBOEY2QkIwMERCNTVDREMwMDFEQjc5NCAvKiBhcHBjYWNoZSAqLywKIAkJCQk1MTJE
RDhFODBEOTFFNjkxMDAwRjg5RUUgLyogYXJjaGl2ZSAqLywKIAkJCQk1MTI2RTZCNjBBMkUzQUVG
MDA1QzI5RkEgLyogaWNvbiAqLywKQEAgLTE5ODExLDYgKzE5ODE3LDcgQEAKIAkJCQlFMUJFNTEy
RTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0UxNzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBQTFFQ0NCMDExRjE4RDgxMDA5M0E4NUMgLyogQ2FjaGVkU1ZHRG9jdW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMjIyMDEsNiArMjIyMDgsNyBAQAogCQkJCTkzRjE5QjA1MDgyNDVF
NTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUFBMUVDQ0FGMTFGMThEODEwMDkzQTg1QyAvKiBDYWNoZWRTVkdE
b2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0Nh
Y2hlLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAppbmRleCA1MjFkMDc1Li5kMmYwNjQ1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAKKysrIGIvV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGUuY3BwCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIkNh
Y2hlZFNWR0RvY3VtZW50LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtODYsNiArOTAsMTAgQEAgc3RhdGljIENhY2hlZFJlc291cmNl
KiBjcmVhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1
cmwKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYQkxTdHlsZVNoZWV0OgogICAgICAgICByZXR1
cm4gbmV3IENhY2hlZFhCTERvY3VtZW50KHVybC5zdHJpbmcoKSk7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoU1ZHKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0RvYzoKKyAgICAgICAgcmV0dXJu
IG5ldyBDYWNoZWRTVkdEb2N1bWVudCh1cmwuc3RyaW5nKCkpOworI2VuZGlmCiAjaWYgRU5BQkxF
KExJTktfUFJFRkVUQ0gpCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgog
ICAgICAgICByZXR1cm4gbmV3IENhY2hlZFJlc291cmNlKHVybC5zdHJpbmcoKSwgQ2FjaGVkUmVz
b3VyY2U6OkxpbmtQcmVmZXRjaCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRS
ZXNvdXJjZS5oIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBkNWJiOTdl
Li43ZWM4Y2Q4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCisr
KyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgKQEAgLTY0LDYgKzY0LDkgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShYQkwpCiAgICAgICAgICwgWEJMCiAjZW5kaWYKKyNpZiBFTkFCTEUo
U1ZHKQorICAgICAgICAsIFNWR0RvYworI2VuZGlmCiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gp
CiAgICAgICAgICwgTGlua1ByZWZldGNoCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9h
ZGVyL0NhY2hlZFJlc291cmNlQ2xpZW50LmggYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJj
ZUNsaWVudC5oCmluZGV4IGJlM2Y4N2UuLjFkZWJkZjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9h
ZGVyL0NhY2hlZFJlc291cmNlQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVz
b3VyY2VDbGllbnQuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiAgICAgY2xhc3MgQ2FjaGVkSW1hZ2U7CiAgICAgY2xhc3Mg
U3RyaW5nOworICAgIGNsYXNzIFNWR0RvY3VtZW50OwogICAgIGNsYXNzIEltYWdlOwogICAgIGNs
YXNzIEludFJlY3Q7CiAgICAgY2xhc3MgS1VSTDsKQEAgLTc0LDYgKzc1LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogI2lmIEVOQUJMRShYQkwpCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRYQkxE
b2N1bWVudChjb25zdCBTdHJpbmcmIC8qVVJMKi8sIFhCTDo6WEJMRG9jdW1lbnQqKSB7IH0KICNl
bmRpZgorI2lmIEVOQUJMRShTVkcpCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRTVkdEb2N1bWVu
dChjb25zdCBTdHJpbmcmIC8qVVJMKi8sIFNWR0RvY3VtZW50KikgeyB9CisjZW5kaWYKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSB7IH0KICAg
ICB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcCBiL1dlYkNvcmUv
bG9hZGVyL0RvY0xvYWRlci5jcHAKaW5kZXggMmY3NWZmOS4uYWM5NGFjZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9Eb2NMb2Fk
ZXIuY3BwCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJDYWNo
ZWRTVkdEb2N1bWVudC5oIgorI2VuZGlmCisKICNkZWZpbmUgUFJFTE9BRF9ERUJVRyAwCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE2Nyw2ICsxNzEsMTIgQEAgQ2FjaGVkWEJMRG9jdW1lbnQq
IERvY0xvYWRlcjo6cmVxdWVzdFhCTERvY3VtZW50KGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxDYWNoZWRYU0xTdHlsZVNoZWV0Kj4ocmVxdWVzdFJlc291cmNlKENh
Y2hlZFJlc291cmNlOjpYQkwsIHVybCwgU3RyaW5nKCkpKTsKIH0KICNlbmRpZgorI2lmIEVOQUJM
RShTVkcpCitDYWNoZWRTVkdEb2N1bWVudCogRG9jTG9hZGVyOjpyZXF1ZXN0U1ZHRG9jdW1lbnQo
Y29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZFNWR0Rv
Y3VtZW50Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpTVkdEb2MsIHVybCwgU3Ry
aW5nKCkpKTsKK30KKyNlbmRpZgogCiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCiBDYWNoZWRS
ZXNvdXJjZSogRG9jTG9hZGVyOjpyZXF1ZXN0TGlua1ByZWZldGNoKGNvbnN0IFN0cmluZyYgdXJs
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmggYi9XZWJDb3JlL2xvYWRl
ci9Eb2NMb2FkZXIuaAppbmRleCAyZTg4Nzk3Li5kNjc1MmJkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2xvYWRlci9Eb2NMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuaApAQCAt
NDAsNiArNDAsNyBAQCBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0OwogY2xhc3MgQ2FjaGVkRm9u
dDsKIGNsYXNzIENhY2hlZEltYWdlOwogY2xhc3MgQ2FjaGVkU2NyaXB0OworY2xhc3MgQ2FjaGVk
U1ZHRG9jdW1lbnQ7CiBjbGFzcyBDYWNoZWRYU0xTdHlsZVNoZWV0OwogY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBGcmFtZTsKQEAgLTY3LDYgKzY4LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShYQkwp
CiAgICAgQ2FjaGVkWEJMRG9jdW1lbnQqIHJlcXVlc3RYQkxEb2N1bWVudChjb25zdCBTdHJpbmcg
JnVybCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU1ZHKQorICAgIENhY2hlZFNWR0RvY3VtZW50KiBy
ZXF1ZXN0U1ZHRG9jdW1lbnQoY29uc3QgU3RyaW5nICZ1cmwpOworI2VuZGlmCiAjaWYgRU5BQkxF
KExJTktfUFJFRkVUQ0gpCiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVlc3RMaW5rUHJlZmV0Y2go
Y29uc3QgU3RyaW5nICZ1cmwpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9s
b2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAppbmRleCAyMzBkNmVhLi45OGVm
NTBiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUv
bG9hZGVyL2xvYWRlci5jcHAKQEAgLTgyLDYgKzgyLDkgQEAgc3RhdGljIFJlc291cmNlUmVxdWVz
dDo6VGFyZ2V0VHlwZSBjYWNoZWRSZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUoQ2FjaGVkUmVzb3Vy
Y2UKICNpZiBFTkFCTEUoWEJMKQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhCTDoKICNlbmRp
ZgorI2lmIEVOQUJMRShTVkcpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U1ZHRG9jOgorI2Vu
ZGlmCiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3R5bGVTaGVldDsK
ICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6IAogICAgICAgICByZXR1cm4gUmVzb3Vy
Y2VSZXF1ZXN0OjpUYXJnZXRJc1NjcmlwdDsKQEAgLTEwOSw2ICsxMTIsOSBAQCBMb2FkZXI6OlBy
aW9yaXR5IExvYWRlcjo6ZGV0ZXJtaW5lUHJpb3JpdHkoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJl
c291cmNlKSBjb25zdAogI2lmIEVOQUJMRShYQkwpCiAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OlhCTDoKICNlbmRpZgorI2lmIEVOQUJMRShTVkcpCisgICAgICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlNWR0RvYzoKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIEhpZ2g7CiAgICAgICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDogCiAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OkZvbnRSZXNvdXJjZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmNwcAppbmRleCA4ODhkZDU3Li4wNGRiZmY4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdTaGFkb3dUcmVlUm9vdENvbnRhaW5l
ci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250
YWluZXIuY3BwCkBAIC01Myw3ICs1Myw4IEBAIHZvaWQgUmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RD
b250YWluZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICBTVkdVc2VFbGVtZW50KiB1c2VFbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8U1ZHVXNlRWxlbWVudCo+KG5vZGUoKSk7CiAgICAgaWYgKCFtX3No
YWRvd1Jvb3QpIHsKICAgICAgICAgQVNTRVJUKCFtX3JlY3JlYXRlVHJlZSk7Ci0gICAgICAgIG1f
c2hhZG93Um9vdCA9IG5ldyBTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQoZG9jdW1lbnQoKSwgdXNl
RWxlbWVudCk7CisgICAgICAgIERvY3VtZW50ICpkb2MgPSB1c2VFbGVtZW50LT5yZWZlcmVuY2Vk
RG9jdW1lbnQoKTsKKyAgICAgICAgbV9zaGFkb3dSb290ID0gbmV3IFNWR1NoYWRvd1RyZWVSb290
RWxlbWVudChkb2MgPyBkb2MgOiBkb2N1bWVudCgpLCB1c2VFbGVtZW50KTsKICAgICAgICAgdXNl
RWxlbWVudC0+YnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3Bw
CmluZGV4IDVlMjcxYmQuLjA3MTdkMTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9EYXRh
YmFzZS5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcApAQCAtMTQ1LDcgKzE0
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5ldyBEZXJlZkNvbnRleHRUYXNrKGNvbnRl
eHQpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiApCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBtX2Nv
bnRleHQpOwogICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
c3ZnL1NWR1RSZWZFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcApp
bmRleCA0YzU5M2NhLi43OGViZTY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxl
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAy
MDA2LCAyMDEwIFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTIzLDYgKzIzLDggQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1RSZWZFbGVtZW50
LmgiCiAKKyNpbmNsdWRlICJDYWNoZWRTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY0xvYWRl
ci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0lubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jl
c291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKQEAgLTM1LDE2ICszNywxOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBTVkdUUmVmRWxlbWVudDo6U1ZHVFJlZkVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQodGFnTmFtZSwgZG9jKQogICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkKKyAg
ICAsIG1fY2FjaGVkRG9jdW1lbnQoMCkKIHsKIH0KIAogU1ZHVFJlZkVsZW1lbnQ6On5TVkdUUmVm
RWxlbWVudCgpCiB7CisgICAgaWYgKG1fY2FjaGVkRG9jdW1lbnQpCisgICAgICAgIG1fY2FjaGVk
RG9jdW1lbnQtPnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAotdm9pZCBTVkdUUmVmRWxlbWVudDo6
dXBkYXRlUmVmZXJlbmNlZFRleHQoKQordm9pZCBTVkdUUmVmRWxlbWVudDo6dXBkYXRlUmVmZXJl
bmNlZFRleHQoRG9jdW1lbnQqIGRvYykKIHsKLSAgICBFbGVtZW50KiB0YXJnZXQgPSBkb2N1bWVu
dCgpLT5nZXRFbGVtZW50QnlJZChTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdldChocmVmKCkpKTsK
KyAgICBFbGVtZW50KiB0YXJnZXQgPSBkb2MtPmdldEVsZW1lbnRCeUlkKFNWR1VSSVJlZmVyZW5j
ZTo6Z2V0VGFyZ2V0KGhyZWYoKSkpOwogICAgIFN0cmluZyB0ZXh0Q29udGVudDsKICAgICBpZiAo
dGFyZ2V0ICYmIHRhcmdldC0+aXNTVkdFbGVtZW50KCkpCiAgICAgICAgIHRleHRDb250ZW50ID0g
c3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KHRhcmdldCktPnRleHRDb250ZW50KCk7CkBAIC01NSw3
ICs2MCwxNCBAQCB2b2lkIFNWR1RSZWZFbGVtZW50Ojp1cGRhdGVSZWZlcmVuY2VkVGV4dCgpCiB2
b2lkIFNWR1RSZWZFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIp
CiB7CiAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikp
IHsKLSAgICAgICAgdXBkYXRlUmVmZXJlbmNlZFRleHQoKTsKKyAgICAgICAgaWYgKGhyZWYoKS5z
dGFydHNXaXRoKCAiIyIgKSkKKyAgICAgICAgICAgIHVwZGF0ZVJlZmVyZW5jZWRUZXh0KGRvY3Vt
ZW50KCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEtVUkwga3VybChkb2N1bWVudCgp
LT5iYXNlVVJJKCksIGhyZWYoKSk7CisgICAgICAgICAgICBtX2NhY2hlZERvY3VtZW50ID0gZG9j
dW1lbnQoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTVkdEb2N1bWVudChrdXJsLnN0cmluZygpKTsK
KyAgICAgICAgICAgIGlmIChtX2NhY2hlZERvY3VtZW50KQorICAgICAgICAgICAgICAgIG1fY2Fj
aGVkRG9jdW1lbnQtPmFkZENsaWVudCh0aGlzKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC05NCw2ICsxMDYsMTIgQEAgUmVuZGVyT2JqZWN0KiBTVkdUUmVmRWxlbWVu
dDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiAgICAg
cmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0lubGluZSh0aGlzKTsKIH0KIAordm9pZCBTVkdU
UmVmRWxlbWVudDo6c2V0U1ZHRG9jdW1lbnQoY29uc3QgU3RyaW5nJiAvKlVSTCovLCBTVkdEb2N1
bWVudCogZG9jKQoreworICAgIGlmICghbV9jYWNoZWREb2N1bWVudC0+ZXJyb3JPY2N1cnJlZCgp
KQorICAgICAgICB1cGRhdGVSZWZlcmVuY2VkVGV4dChkb2MpOworfQorCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaCBi
L1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKaW5kZXggMjYxZTJjZS4uNTBjNjBmNSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAorKysgYi9XZWJDb3JlL3N2Zy9T
VkdUUmVmRWxlbWVudC5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0g
ICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDEwIFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDEyICsyMywxNiBAQAogCiAjaWYg
RU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgiCisjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2Uu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisgICAgY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnQ7
CisKICAgICBjbGFzcyBTVkdUUmVmRWxlbWVudCA6IHB1YmxpYyBTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1VSSVJlZmVyZW5j
ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1RSZWZFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdUUmVmRWxlbWVudCgpOwpAQCAtNDAs
MTEgKzQ0LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICAg
ICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKIAorICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U1ZHRG9jdW1lbnQoY29uc3QgU3RyaW5nJiAvKlVSTCovLCBTVkdE
b2N1bWVudCopOworCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCB1cGRhdGVSZWZlcmVuY2Vk
VGV4dCgpOworICAgICAgICB2b2lkIHVwZGF0ZVJlZmVyZW5jZWRUZXh0KERvY3VtZW50Kik7CiAK
ICAgICAgICAgLy8gU1ZHVVJJUmVmZXJlbmNlCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVFkoU1ZHVFJlZkVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBTdHJpbmcsIEhyZWYs
IGhyZWYpCisKKyAgICAgICAgQ2FjaGVkU1ZHRG9jdW1lbnQqIG1fY2FjaGVkRG9jdW1lbnQ7CiAg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCBl
NDJhNzk0Li44MmM3MGRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNw
cAorKysgYi9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtMjUsOCArMjUsMTAgQEAK
ICNpbmNsdWRlICJTVkdVc2VFbGVtZW50LmgiCiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNp
bmNsdWRlICJDYWNoZWRTVkdEb2N1bWVudC5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3Iu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1
ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgpAQCAtMzQsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlZ2lzdGVyZWRFdmVudExpc3Rl
bmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJT
VkdTaGFkb3dUcmVlUm9vdENvbnRhaW5lci5oIgorI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCiAj
aW5jbHVkZSAiU1ZHRWxlbWVudEluc3RhbmNlLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudEluc3Rh
bmNlTGlzdC5oIgogI2luY2x1ZGUgIlNWR0dFbGVtZW50LmgiCkBAIC02NywxMSArNzAsMTQgQEAg
U1ZHVXNlRWxlbWVudDo6U1ZHVXNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jKQogICAgICwgbV91cGRhdGVzQmxvY2tlZChmYWxzZSkKICAgICAsIG1f
aXNQZW5kaW5nUmVzb3VyY2UoZmFsc2UpCiAgICAgLCBtX25lZWRzU2hhZG93VHJlZVJlY3JlYXRp
b24oZmFsc2UpCisgICAgLCBtX2NhY2hlZERvY3VtZW50KDApCiB7CiB9CiAKIFNWR1VzZUVsZW1l
bnQ6On5TVkdVc2VFbGVtZW50KCkKIHsKKyAgICBpZiAobV9jYWNoZWREb2N1bWVudCkKKyAgICAg
ICAgbV9jYWNoZWREb2N1bWVudC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogfQogCiBTVkdFbGVtZW50
SW5zdGFuY2UqIFNWR1VzZUVsZW1lbnQ6Omluc3RhbmNlUm9vdCgpIGNvbnN0CkBAIC0xMTMsOCAr
MTE5LDE3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKGF0dHIpKQorICAgICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShhdHRyKSkgeworICAgICAgICAgICAgaWYgKCFocmVmKCkuc3RhcnRzV2l0aCggIiMiICkp
IHsKKyAgICAgICAgICAgICAgICBLVVJMIGt1cmwoZG9jdW1lbnQoKS0+YmFzZVVSSSgpLCBocmVm
KCkpOworICAgICAgICAgICAgICAgIGlmIChrdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKSB7
CisgICAgICAgICAgICAgICAgICAgIG1fY2FjaGVkRG9jdW1lbnQgPSBkb2N1bWVudCgpLT5kb2NM
b2FkZXIoKS0+cmVxdWVzdFNWR0RvY3VtZW50KGt1cmwuc3RyaW5nKCkpOworICAgICAgICAgICAg
ICAgICAgICBpZiAobV9jYWNoZWREb2N1bWVudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBt
X2NhY2hlZERvY3VtZW50LT5hZGRDbGllbnQodGhpcyk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKICAg
ICB9CiB9CkBAIC00MjAsMTMgKzQzNSwzMCBAQCBzdGF0aWMgYm9vbCBzdWJ0cmVlQ29udGFpbnNE
aXNhbGxvd2VkRWxlbWVudChOb2RlKiBzdGFydCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK0Rv
Y3VtZW50KiBTVkdVc2VFbGVtZW50OjpyZWZlcmVuY2VkRG9jdW1lbnQoKSBjb25zdAoreworICAg
IGlmIChocmVmKCkuc3RhcnRzV2l0aCggIiMiICkpIHsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50
KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1fY2FjaGVkRG9jdW1lbnQgJiYgbV9jYWNo
ZWREb2N1bWVudC0+aXNMb2FkZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVkRG9j
dW1lbnQtPmRvY3VtZW50KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30K
Kwogdm9pZCBTVkdVc2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiB7CiAgICAgLy8g
SWYgd2UncmUgY2FsbGVkIHRoZSBmaXJzdCB0aW1lIChkdXJpbmcgc2hhZG93IHRyZWUgcm9vdCBj
cmVhdGlvbiBmcm9tIFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyKQogICAgIC8vIHdl
IGVpdGhlciBkZXRlcm1pbmUgdGhhdCBvdXIgdGFyZ2V0IGlzIGF2YWlsYWJsZSBvciBub3QgLSB0
aGVuIHdlIGFkZCBvdXJzZWx2ZXMgdG8gdGhlIHBlbmRpbmcgcmVzb3VyY2UgbGlzdAogICAgIC8v
IE9uY2UgdGhlIHBlbmRpbmcgcmVzb3VyY2UgYXBwZWFycywgaXQgd2lsbCBjYWxsIGJ1aWxkUGVu
ZGluZ1Jlc291cmNlKCksIHNvIHdlJ3JlIGNhbGxlZCBhIHNlY29uZCB0aW1lLgorICAgIERvY3Vt
ZW50KiBkb2MgPSByZWZlcmVuY2VkRG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvYykKKyAgICAgICAg
cmV0dXJuOworIAogICAgIFN0cmluZyBpZCA9IFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KGhy
ZWYoKSk7Ci0gICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50KCktPmdldEVsZW1l
bnRCeUlkKGlkKTsKKyAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jLT5nZXRFbGVtZW50
QnlJZChpZCk7CiAgICAgQVNTRVJUKCFtX3RhcmdldEVsZW1lbnRJbnN0YW5jZSk7CiAKICAgICBp
ZiAoIXRhcmdldEVsZW1lbnQpIHsKQEAgLTQ2OSw3ICs1MDEsMTAgQEAgdm9pZCBTVkdVc2VFbGVt
ZW50OjpidWlsZFNoYWRvd0FuZEluc3RhbmNlVHJlZShTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQq
IHNoYWRvd1IKICAgICBTaGFkb3dUcmVlVXBkYXRlQmxvY2tlciBibG9ja2VyKHRoaXMpOwogCiAg
ICAgU3RyaW5nIGlkID0gU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQoaHJlZigpKTsKLSAgICBF
bGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoaWQpOwor
ICAgIERvY3VtZW50ICpkb2MgPSByZWZlcmVuY2VkRG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvYykK
KyAgICAgICAgcmV0dXJuOworICAgIEVsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBkb2MtPmdldEVs
ZW1lbnRCeUlkKGlkKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpIHsKICAgICAgICAgLy8gVGhl
IG9ubHkgdGltZSB3ZSBzaG91bGQgZ2V0IGhlcmUgaXMgd2hlbiB0aGUgdXNlIGVsZW1lbnQgaGFz
IG5vdCBiZWVuCiAgICAgICAgIC8vIGdpdmVuIGEgcmVzb3VyY2UgdG8gdGFyZ2V0LgpAQCAtNjk4
LDcgKzczMyw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6YnVpbGRJbnN0YW5jZVRyZWUoU1ZHRWxl
bWVudCogdGFyZ2V0LCBTVkdFbGVtZW50SW5zdGFuY2UqIHRhCiB2b2lkIFNWR1VzZUVsZW1lbnQ6
OmhhbmRsZURlZXBVc2VSZWZlcmVuY2luZyhTVkdVc2VFbGVtZW50KiB1c2UsIFNWR0VsZW1lbnRJ
bnN0YW5jZSogdGFyZ2V0SW5zdGFuY2UsIGJvb2wmIGZvdW5kUHJvYmxlbSkKIHsKICAgICBTdHJp
bmcgaWQgPSBTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdldCh1c2UtPmhyZWYoKSk7Ci0gICAgRWxl
bWVudCogdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKGlkKTsgCisg
ICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHJlZmVyZW5jZWREb2N1bWVudCgpLT5nZXRFbGVt
ZW50QnlJZChpZCk7IAogICAgIFNWR0VsZW1lbnQqIHRhcmdldCA9IDA7CiAgICAgaWYgKHRhcmdl
dEVsZW1lbnQgJiYgdGFyZ2V0RWxlbWVudC0+aXNTVkdFbGVtZW50KCkpCiAgICAgICAgIHRhcmdl
dCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPih0YXJnZXRFbGVtZW50KTsKQEAgLTc5MSw3ICs4
MjYsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmV4cGFuZFVzZUVsZW1lbnRzSW5TaGFkb3dUcmVl
KFNWR1NoYWRvd1RyZWVSb290RWxlbWVudCogc2hhZAogICAgICAgICBTVkdVc2VFbGVtZW50KiB1
c2UgPSBzdGF0aWNfY2FzdDxTVkdVc2VFbGVtZW50Kj4oZWxlbWVudCk7CiAKICAgICAgICAgU3Ry
aW5nIGlkID0gU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQodXNlLT5ocmVmKCkpOwotICAgICAg
ICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoaWQp
OyAKKyAgICAgICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHJlZmVyZW5jZWREb2N1bWVudCgp
LT5nZXRFbGVtZW50QnlJZChpZCk7IAogICAgICAgICBTVkdFbGVtZW50KiB0YXJnZXQgPSAwOwog
ICAgICAgICBpZiAodGFyZ2V0RWxlbWVudCAmJiB0YXJnZXRFbGVtZW50LT5pc1NWR0VsZW1lbnQo
KSkKICAgICAgICAgICAgIHRhcmdldCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPih0YXJnZXRF
bGVtZW50KTsKQEAgLTgyMyw2ICs4NTgsMTEgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpleHBhbmRV
c2VFbGVtZW50c0luU2hhZG93VHJlZShTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQqIHNoYWQKIAog
ICAgICAgICAgICAgY2xvbmVQYXJlbnQtPmFwcGVuZENoaWxkKG5ld0NoaWxkLnJlbGVhc2UoKSwg
ZWMpOwogICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisvLyAgICAgICAgICAgIGlmICh0YXJnZXRF
bGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzeW1ib2xUYWcpKSB7CisvLyAgICAgICAgICAg
IHVzZS0+dXBkYXRlQ29udGFpbmVyU2l6ZXMoKTsKKy8vICAgICAgICAgICAgICAgIG5ld0NoaWxk
UHRyLT5zZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0ciwgdXNlLT5nZXRBdHRyaWJ1dGUo
U1ZHTmFtZXM6OndpZHRoQXR0cikpOworLy8gICAgICAgICAgICAgICAgbmV3Q2hpbGRQdHItPnNl
dEF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0ciwgdXNlLT5nZXRBdHRyaWJ1dGUoU1ZHTmFt
ZXM6OmhlaWdodEF0dHIpKTsKKy8vICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAg
Ly8gUmVwbGFjZSA8dXNlPiB3aXRoIHJlZmVyZW5jZWQgY29udGVudC4KQEAgLTEwMzcsNiArMTA3
NywxMiBAQCBib29sIFNWR1VzZUVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCktPmhh
c1JlbGF0aXZlTGVuZ3RocygpOwogfQogCit2b2lkIFNWR1VzZUVsZW1lbnQ6OnNldFNWR0RvY3Vt
ZW50KGNvbnN0IFN0cmluZyYgLypVUkwqLywgU1ZHRG9jdW1lbnQqIC8qZG9jKi8pCit7CisgICAg
bV9pc1BlbmRpbmdSZXNvdXJjZSA9IHRydWU7CisgICAgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsK
K30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuaCBiL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAppbmRleCBjYmJj
ZDBmLi5iZDcxY2UyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKKysr
IGIvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDEwIFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgU1ZHVXNlRWxlbWVudF9oCiAK
ICNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0xhbmdT
cGFjZS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgiCkBAIC0z
MCw2ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIENhY2hlZFNW
R0RvY3VtZW50OwogICAgIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsKICAgICBjbGFzcyBTVkdM
ZW5ndGg7CiAgICAgY2xhc3MgU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50OwpAQCAtMzgsNyArNDAs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyBTVkdUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0xhbmdTcGFj
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVu
Y2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewog
ICAgIHB1YmxpYzoKICAgICAgICAgU1ZHVXNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHVXNlRWxlbWVudCgpOwpAQCAtNzAsNiAr
NzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRVcGRhdGVzQmxv
Y2tlZChib29sIGJsb2NrZWQpIHsgbV91cGRhdGVzQmxvY2tlZCA9IGJsb2NrZWQ7IH0KIAorICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U1ZHRG9jdW1lbnQoY29uc3QgU3RyaW5nJiAvKlVSTCovLCBT
VkdEb2N1bWVudCopOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFJlbmRl
clNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyOwogICAgICAgICBib29sIGlzUGVuZGluZ1Jlc291
cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pc1BlbmRpbmdSZXNvdXJjZTsgfQpAQCAtMTA1LDYgKzEx
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gIlRyZWUgY29ubmVjdG9yIiAK
ICAgICAgICAgdm9pZCBhc3NvY2lhdGVJbnN0YW5jZXNXaXRoU2hhZG93VHJlZUVsZW1lbnRzKE5v
ZGUqIHRhcmdldCwgU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXRJbnN0YW5jZSk7CiAgICAgICAg
IFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2VGb3JTaGFkb3dUcmVlRWxlbWVudChOb2RlKiBl
bGVtZW50LCBTVkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdDsKKyAgICAgICAgRG9j
dW1lbnQqIHJlZmVyZW5jZWREb2N1bWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgdHJhbnNm
ZXJVc2VBdHRyaWJ1dGVzVG9SZXBsYWNlZEVsZW1lbnQoU1ZHRWxlbWVudCogZnJvbSwgU1ZHRWxl
bWVudCogdG8pIGNvbnN0OwogICAgICAgICB2b2lkIHRyYW5zZmVyRXZlbnRMaXN0ZW5lcnNUb1No
YWRvd1RyZWUoU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXQpOwpAQCAtMTE3LDYgKzEyMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX25lZWRzU2hhZG93VHJlZVJlY3Jl
YXRpb247CiAgICAgICAgIFN0cmluZyBtX3Jlc291cmNlSWQ7CiAgICAgICAgIFJlZlB0cjxTVkdF
bGVtZW50SW5zdGFuY2U+IG1fdGFyZ2V0RWxlbWVudEluc3RhbmNlOworICAgICAgICBDYWNoZWRT
VkdEb2N1bWVudCogbV9jYWNoZWREb2N1bWVudDsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2xvYWRlci9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9XZWJDb3JlL2xvYWRlci9DYWNo
ZWRTVkdEb2N1bWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI2
M2QyOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFNWR0RvY3VtZW50
LmNwcApAQCAtMCwwICsxLDExMCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTAgUm9iIEJ1
aXMgPHJ3bGJ1aXNAZ21haWwuY29tPgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShTVkcpCisKKyNpbmNsdWRlICJDYWNoZWRTVkdEb2N1bWVudC5oIgorCisjaW5jbHVkZSAi
Q2FjaGUuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCisjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24u
aCIKKyNpbmNsdWRlICJEb2NMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUg
ImxvYWRlci5oIgorI2luY2x1ZGUgIlJlcXVlc3QuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKKyNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29k
ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDYWNoZWRTVkdEb2N1bWVudDo6Q2FjaGVk
U1ZHRG9jdW1lbnQoY29uc3QgU3RyaW5nICZ1cmwpCisgICAgOiBDYWNoZWRSZXNvdXJjZSh1cmws
IFNWR0RvYykKKyAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFw
cGxpY2F0aW9uL3htbCIpKQoreworICAgIC8vIEl0J3MgU1ZHIHdlIHdhbnQuCisgICAgc2V0QWNj
ZXB0KCJpbWFnZS9zdmcreG1sIik7Cit9CisKK0NhY2hlZFNWR0RvY3VtZW50Ojp+Q2FjaGVkU1ZH
RG9jdW1lbnQoKQoreworfQorCit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjphZGRDbGllbnQoQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgKmMpCit7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudChj
KTsKKyAgICBpZiAoIWlzTG9hZGluZygpKQorICAgICAgICBjLT5zZXRTVkdEb2N1bWVudChtX3Vy
bCwgZG9jdW1lbnQoKSk7Cit9CisKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OnNldEVuY29kaW5n
KGNvbnN0IFN0cmluZyYgY2hzKQoreworICAgIG1fZGVjb2Rlci0+c2V0RW5jb2RpbmcoY2hzLCBU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpFbmNvZGluZ0Zyb21IVFRQSGVhZGVyKTsKK30KKworU3RyaW5n
IENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGVj
b2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7Cit9CisKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmRh
dGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQor
eworICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NF
UlQoIW1fZG9jdW1lbnQpOworCisgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUo
LyptX3JlcXVlc3QtPmRvY0xvYWRlcigpLT5mcmFtZSgpKi8wLCBLVVJMKCkpOworICAgIG1fZG9j
dW1lbnQtPm9wZW4oKTsKKworICAgIG1fZGF0YSA9IGRhdGE7CisgICAgc2V0RW5jb2RlZFNpemUo
bV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAobV9kYXRhLmdldCgp
KSB7CisgICAgICAgIG1fZG9jdW1lbnQtPndyaXRlKG1fZGVjb2Rlci0+ZGVjb2RlKG1fZGF0YS0+
ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKSk7CisgICAgfQorCisgICAgbV9kb2N1bWVudC0+ZmluaXNo
UGFyc2luZygpOworICAgIG1fZG9jdW1lbnQtPmNsb3NlKCk7CisgICAgc2V0TG9hZGluZyhmYWxz
ZSk7CisgICAgY2hlY2tOb3RpZnkoKTsKK30KKwordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6Y2hl
Y2tOb3RpZnkoKQoreworICAgIGlmIChpc0xvYWRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyIHcobV9jbGllbnRzKTsKKyAgICB3aGls
ZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQgKmMgPSB3Lm5leHQoKSkKKyAgICAgICAgYy0+c2V0U1ZH
RG9jdW1lbnQobV91cmwsIGRvY3VtZW50KCkpOworfQorCit2b2lkIENhY2hlZFNWR0RvY3VtZW50
OjplcnJvcigpCit7CisgICAgc2V0TG9hZGluZyhmYWxzZSk7CisgICAgc2V0RXJyb3JPY2N1cnJl
ZCh0cnVlKTsKKyAgICBjaGVja05vdGlmeSgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1dlYkNvcmUvbG9hZGVyL0Nh
Y2hlZFNWR0RvY3VtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZh
NzAwYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFNWR0RvY3VtZW50
LmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTAgUm9iIEJ1aXMg
PHJ3bGJ1aXNAZ21haWwuY29tPgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKworKi8KKworI2lmbmRlZiBDYWNoZWRTVkdEb2N1bWVudF9oCisj
ZGVmaW5lIENhY2hlZFNWR0RvY3VtZW50X2gKKworI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwor
ICAgIGNsYXNzIENhY2hlZFJlc291cmNlQ2xpZW50OworICAgIGNsYXNzIFNWR0RvY3VtZW50Owor
CisjaWYgRU5BQkxFKFNWRykKKyAgICBjbGFzcyBDYWNoZWRTVkdEb2N1bWVudCA6IHB1YmxpYyBD
YWNoZWRSZXNvdXJjZSB7CisgICAgcHVibGljOgorICAgICAgICBDYWNoZWRTVkdEb2N1bWVudChj
b25zdCBTdHJpbmcmIHVybCk7CisgICAgICAgIHZpcnR1YWwgfkNhY2hlZFNWR0RvY3VtZW50KCk7
CisKKyAgICAgICAgU1ZHRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1
bWVudC5nZXQoKTsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQoQ2FjaGVkUmVz
b3VyY2VDbGllbnQqKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3Qg
U3RyaW5nJik7CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlcnJvcigpOworCisgICAg
ICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAg
ICAgICB2b2lkIGNoZWNrTm90aWZ5KCk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIFJlZlB0
cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURl
Y29kZXI+IG1fZGVjb2RlcjsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwor
ICAgIH07CisKKyNlbmRpZgorCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83784</attachid>
            <date>2011-02-25 01:01:47 -0800</date>
            <delta_ts>2011-02-25 07:44:53 -0800</delta_ts>
            <desc>Draft patch, asking for a preliminary review</desc>
            <filename>wk12499-draft1.diff</filename>
            <type>text/plain</type>
            <size>17471</size>
            <attacher name="Cosmin Truta">ctruta</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMTg0ZDQyYy4uMTFlOWRhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KQEAgLTE4NDQsNiArMTg0NCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL051
bWJlcklucHV0VHlwZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBl
LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvT3duZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9o
dG1sL093bmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2Fu
bmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3Bw
IFwKQEAgLTM0NjcsNiArMzQ2OSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jl
Y3RFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZW5kZXJpbmdJbnRlbnQuaCBc
CisJU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jlc291cmNlT3duZXJFbGVtZW50LmNwcCBcCisJU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1Jlc291cmNlT3duZXJFbGVtZW50LmggXAogCVNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Nj
cmlwdEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NldEVsZW1lbnQuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBkYzRkMDQwLi4xNDc0ZThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0xODY0LDYgKzE4NjQsOCBAQAogICAgICAgICAgICAgJ2h0bWwvTW9udGhJbnB1dFR5cGUuaCcs
CiAgICAgICAgICAgICAnaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwJywKICAgICAgICAgICAgICdo
dG1sL051bWJlcklucHV0VHlwZS5oJywKKyAgICAgICAgICAgICdodG1sL093bmVyLmNwcCcsCisg
ICAgICAgICAgICAnaHRtbC9Pd25lci5oJywKICAgICAgICAgICAgICdodG1sL1Bhc3N3b3JkSW5w
dXRUeXBlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9QYXNzd29yZElucHV0VHlwZS5oJywKICAg
ICAgICAgICAgICdodG1sL1BsdWdpbkRvY3VtZW50LmNwcCcsCkBAIC00NDQwLDYgKzQ0NDIsOCBA
QAogICAgICAgICAgICAgJ3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ3N2
Zy9TVkdSZWN0RWxlbWVudC5oJywKICAgICAgICAgICAgICdzdmcvU1ZHUmVuZGVyaW5nSW50ZW50
LmgnLAorICAgICAgICAgICAgJ3N2Zy9TVkdSZXNvdXJjZU93bmVyRWxlbWVudC5jcHAnLAorICAg
ICAgICAgICAgJ3N2Zy9TVkdSZXNvdXJjZU93bmVyRWxlbWVudC5oJywKICAgICAgICAgICAgICdz
dmcvU1ZHU1ZHRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdTVkdFbGVtZW50Lmgn
LAogICAgICAgICAgICAgJ3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmlu
ZGV4IDA2YjU2MmUuLjBhNGQ0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC03MzUsNiArNzM1LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgaHRtbC9NZWRpYURvY3VtZW50LmNwcCBcCiAgICAgaHRtbC9Nb250
aElucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBcCisgICAgaHRt
bC9Pd25lci5jcHAgXAogICAgIGh0bWwvUGFzc3dvcmRJbnB1dFR5cGUuY3BwIFwKICAgICBodG1s
L1BsdWdpbkRvY3VtZW50LmNwcCBcCiAgICAgaHRtbC9SYWRpb0lucHV0VHlwZS5jcHAgXApAQCAt
MTY4MSw2ICsxNjgyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9JbWFnZVJlc2l6ZXJUaHJl
YWQuaCBcCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwKICAgICBodG1sL01lZGlhRG9jdW1l
bnQuaCBcCisgICAgaHRtbC9Pd25lci5oIFwKICAgICBodG1sL1BsdWdpbkRvY3VtZW50LmggXAog
ICAgIGh0bWwvU3RlcFJhbmdlLmggXAogICAgIGh0bWwvVGV4dERvY3VtZW50LmggXApAQCAtMjMz
Miw2ICsyMzM0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxl
bWVudC5oIFwKICAgICBzdmcvU1ZHUmVjdC5oIFwKICAgICBzdmcvU1ZHUmVjdEVsZW1lbnQuaCBc
CisgICAgc3ZnL1NWR1Jlc291cmNlT3duZXJFbGVtZW50LmggXAogICAgIHN2Zy9TVkdTY3JpcHRF
bGVtZW50LmggXAogICAgIHN2Zy9TVkdTZXRFbGVtZW50LmggXAogICAgIHN2Zy9TVkdTdG9wRWxl
bWVudC5oIFwKQEAgLTMyMjUsNiArMzIyOCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9T
Vkc9MSkgewogICAgICAgICBzdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAgXAogICAgICAg
ICBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBcCiAgICAgICAgIHN2Zy9TVkdSZWN0
RWxlbWVudC5jcHAgXAorICAgICAgICBzdmcvU1ZHUmVzb3VyY2VPd25lckVsZW1lbnQuY3BwIFwK
ICAgICAgICAgc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwIFwKICAgICAgICAgc3ZnL1NWR1NldEVs
ZW1lbnQuY3BwIFwKICAgICAgICAgc3ZnL1NWR1N0b3BFbGVtZW50LmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKaW5kZXggMmE3YjYxMC4uYWI4
MDg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNw
cApAQCAtMzQsOSArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBIVE1MRnJhbWVPd25l
ckVsZW1lbnQ6OkhUTUxGcmFtZU93bmVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKLSAgICAsIG1fY29udGVudEZyYW1lKDApCi0gICAgLCBtX3NhbmRib3hGbGFncyhTYW5k
Ym94Tm9uZSkKKyAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSwgT3duZXIoKQog
ewogfQogCkBAIC02Miw0MyArNjAsNCBAQCB2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6d2ls
bFJlbW92ZSgpCiAgICAgSFRNTEVsZW1lbnQ6OndpbGxSZW1vdmUoKTsKIH0KIAotSFRNTEZyYW1l
T3duZXJFbGVtZW50Ojp+SFRNTEZyYW1lT3duZXJFbGVtZW50KCkKLXsKLSAgICBpZiAobV9jb250
ZW50RnJhbWUpCi0gICAgICAgIG1fY29udGVudEZyYW1lLT5kaXNjb25uZWN0T3duZXJFbGVtZW50
KCk7Ci19Ci0KLURvY3VtZW50KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnREb2N1bWVu
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUt
PmRvY3VtZW50KCkgOiAwOwotfQotCi1ET01XaW5kb3cqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6
Y29udGVudFdpbmRvdygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gbV9j
b250ZW50RnJhbWUtPmRvbVdpbmRvdygpIDogMDsKLX0KLQotdm9pZCBIVE1MRnJhbWVPd25lckVs
ZW1lbnQ6OnNldFNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3MgZmxhZ3MpCi17Ci0gICAgaWYgKG1f
c2FuZGJveEZsYWdzID09IGZsYWdzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3NhbmRib3hG
bGFncyA9IGZsYWdzOwotCi0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IGNvbnRlbnRGcmFtZSgpKQot
ICAgICAgICBmcmFtZS0+bG9hZGVyKCktPm93bmVyRWxlbWVudFNhbmRib3hGbGFnc0NoYW5nZWQo
KTsKLX0KLQotI2lmIEVOQUJMRShTVkcpCi1TVkdEb2N1bWVudCogSFRNTEZyYW1lT3duZXJFbGVt
ZW50OjpnZXRTVkdEb2N1bWVudChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKLXsKLSAgICBEb2N1
bWVudCogZG9jID0gY29udGVudERvY3VtZW50KCk7Ci0gICAgaWYgKGRvYyAmJiBkb2MtPmlzU1ZH
RG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZG9j
KTsKLSAgICAvLyBTcGVjOiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvc3RydWN0Lmh0bWwjSW50
ZXJmYWNlR2V0U1ZHRG9jdW1lbnQKLSAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgIHJl
dHVybiAwOwotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCmluZGV4IGY3ODRmNGYuLmU4Mjg5Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaApAQCAtMjMs
NiArMjMsOCBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkhU
TUxFbGVtZW50LmgiCisjaW5jbHVkZSAiT3duZXIuaCIKKyNpbmNsdWRlICJTY3JvbGxUeXBlcy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM0LDQyICszNiwyNCBAQCBjbGFzcyBSZW5k
ZXJQYXJ0OwogY2xhc3MgU1ZHRG9jdW1lbnQ7CiAjZW5kaWYKIAotY2xhc3MgSFRNTEZyYW1lT3du
ZXJFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKK2NsYXNzIEhUTUxGcmFtZU93bmVyRWxl
bWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIE93bmVyIHsKIHB1YmxpYzoKLSAgICB2
aXJ0dWFsIH5IVE1MRnJhbWVPd25lckVsZW1lbnQoKTsKLQotICAgIEZyYW1lKiBjb250ZW50RnJh
bWUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRGcmFtZTsgfQotICAgIERPTVdpbmRvdyogY29u
dGVudFdpbmRvdygpIGNvbnN0OwotICAgIERvY3VtZW50KiBjb250ZW50RG9jdW1lbnQoKSBjb25z
dDsKLQogICAgIC8vIE1vc3Qgc3ViY2xhc3NlcyB1c2UgUmVuZGVyUGFydCAoZWl0aGVyIFJlbmRl
ckVtYmVkZGVkT2JqZWN0IG9yIFJlbmRlcklGcmFtZSkKICAgICAvLyBleGNlcHQgZm9yIEhUTUxP
YmplY3RFbGVtZW50IGFuZCBIVE1MRW1iZWRFbGVtZW50IHdoaWNoIG1heSByZXR1cm4gYW55CiAg
ICAgLy8gUmVuZGVyT2JqZWN0IHdoZW4gdXNpbmcgZmFsbGJhY2sgY29udGVudC4KICAgICBSZW5k
ZXJQYXJ0KiByZW5kZXJQYXJ0KCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoU1ZHKQotICAgIFNWR0Rv
Y3VtZW50KiBnZXRTVkdEb2N1bWVudChFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0jZW5kaWYKLQog
ICAgIHZpcnR1YWwgU2Nyb2xsYmFyTW9kZSBzY3JvbGxpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4g
U2Nyb2xsYmFyQXV0bzsgfQogCi0gICAgU2FuZGJveEZsYWdzIHNhbmRib3hGbGFncygpIGNvbnN0
IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzOyB9Ci0KIHByb3RlY3RlZDoKICAgICBIVE1MRnJhbWVP
d25lckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAot
ICAgIHZvaWQgc2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyk7Ci0KICAgICB2aXJ0dWFsIHZv
aWQgd2lsbFJlbW92ZSgpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBGcmFtZTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lT3duZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQq
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRGcmFtZTsgfQotCi0gICAgRnJhbWUqIG1fY29udGVu
dEZyYW1lOwotICAgIFNhbmRib3hGbGFncyBtX3NhbmRib3hGbGFnczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT3duZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9Pd25lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYWY2MWIwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvT3duZXIuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIk93bmVyLmgiCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAi
UmVuZGVyUGFydC5oIgorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCisjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK093bmVyOjpPd25lcigpCisgICAgOiBtX2NvbnRlbnRGcmFtZSgwKQorICAgICwgbV9z
YW5kYm94RmxhZ3MoU2FuZGJveE5vbmUpCit7Cit9CisKK093bmVyOjp+T3duZXIoKQoreworICAg
IGlmIChtX2NvbnRlbnRGcmFtZSkKKyAgICAgICAgbV9jb250ZW50RnJhbWUtPmRpc2Nvbm5lY3RP
d25lckVsZW1lbnQoKTsKK30KKworRG9jdW1lbnQqIE93bmVyOjpjb250ZW50RG9jdW1lbnQoKSBj
b25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRGcmFtZSA/IG1fY29udGVudEZyYW1lLT5kb2N1
bWVudCgpIDogMDsKK30KKworRE9NV2luZG93KiBPd25lcjo6Y29udGVudFdpbmRvdygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRvbVdpbmRv
dygpIDogMDsKK30KKwordm9pZCBPd25lcjo6c2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBm
bGFncykKK3sKKyAgICBpZiAobV9zYW5kYm94RmxhZ3MgPT0gZmxhZ3MpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc2FuZGJveEZsYWdzID0gZmxhZ3M7CisKKyAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gY29udGVudEZyYW1lKCkpCisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+b3duZXJFbGVtZW50
U2FuZGJveEZsYWdzQ2hhbmdlZCgpOworfQorCisjaWYgRU5BQkxFKFNWRykKK1NWR0RvY3VtZW50
KiBPd25lcjo6Z2V0U1ZHRG9jdW1lbnQoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAg
RG9jdW1lbnQqIGRvYyA9IGNvbnRlbnREb2N1bWVudCgpOworICAgIGlmIChkb2MgJiYgZG9jLT5p
c1NWR0RvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+
KGRvYyk7CisgICAgLy8gU3BlYzogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL3N0cnVjdC5odG1s
I0ludGVyZmFjZUdldFNWR0RvY3VtZW50CisgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAg
ICByZXR1cm4gMDsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL093bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL093
bmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQxNThkNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT3duZXIuaApAQCAtMCwwICsxLDcwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgT3duZXJfaAorI2RlZmluZSBPd25lcl9oCisKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdpbmRvdzsKK2NsYXNzIERvY3VtZW50
OworY2xhc3MgRnJhbWU7CitjbGFzcyBLZXlib2FyZEV2ZW50OworY2xhc3MgUXVhbGlmaWVkTmFt
ZTsKK2NsYXNzIFJlbmRlclBhcnQ7CisKKyNpZiBFTkFCTEUoU1ZHKQorY2xhc3MgU1ZHRG9jdW1l
bnQ7CisjZW5kaWYKKworY2xhc3MgT3duZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfk93bmVy
KCk7CisKKyAgICBGcmFtZSogY29udGVudEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
RnJhbWU7IH0KKyAgICBET01XaW5kb3cqIGNvbnRlbnRXaW5kb3coKSBjb25zdDsKKyAgICBEb2N1
bWVudCogY29udGVudERvY3VtZW50KCkgY29uc3Q7CisKKyNpZiBFTkFCTEUoU1ZHKQorICAgIFNW
R0RvY3VtZW50KiBnZXRTVkdEb2N1bWVudChFeGNlcHRpb25Db2RlJikgY29uc3Q7CisjZW5kaWYK
KworICAgIFNhbmRib3hGbGFncyBzYW5kYm94RmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3NhbmRi
b3hGbGFnczsgfQorCitwcm90ZWN0ZWQ6CisgICAgT3duZXIoKTsKKworICAgIHZvaWQgc2V0U2Fu
ZGJveEZsYWdzKFNhbmRib3hGbGFncyk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEZy
YW1lOworCisgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVu
dCopIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEZyYW1lOyB9CisKKyAgICBGcmFtZSogbV9jb250
ZW50RnJhbWU7CisgICAgU2FuZGJveEZsYWdzIG1fc2FuZGJveEZsYWdzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gT3duZXJfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwCmluZGV4IGE4YTFjZjkuLjA5ZjlhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAKQEAgLTEyMSw4ICsxMjEsMTQgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShhdHRyKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKFNWR1VSSVJl
ZmVyZW5jZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCisgICAgICAgIGlmIChTVkdVUklS
ZWZlcmVuY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSB7CisgICAgICAgICAgICBpZiAo
IWhyZWYoKS5zdGFydHNXaXRoKCIjIikpIHsKKyAgICAgICAgICAgICAgICBLVVJMIGt1cmwoZG9j
dW1lbnQoKS0+YmFzZVVSSSgpLCBocmVmKCkpOworICAgICAgICAgICAgICAgIGlmIChrdXJsLmhh
c0ZyYWdtZW50SWRlbnRpZmllcigpKQorICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIioqIFRPRE8oY3RydXRhKTogbG9hZCByZXNvdXJjZSBmcm9tICVzIGludG8gbV9leHRlcm5h
bFJlc291cmNlXG4iLCBrdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAg
fQogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKICAgICB9CiB9CkBA
IC0xMzEsNyArMTM3LDggQEAgdm9pZCBTVkdVc2VFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVu
dCgpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbnMgZXhpc3RzIHRvIGFzc3VyZSBhc3N1bXB0aW9u
cyBtYWRlIGluIHRoZSBjb2RlIHJlZ2FyZGluZyBTVkdFbGVtZW50SW5zdGFuY2UgY3JlYXRpb24v
ZGVzdHJ1Y3Rpb24gYXJlIHNhdGlzZmllZC4KICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKLSAgICBBU1NFUlQoIW1fdGFyZ2V0RWxlbWVu
dEluc3RhbmNlIHx8ICgoZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpIHx8IGRvY3VtZW50KCkt
PmlzWEhUTUxEb2N1bWVudCgpKSAmJiAhc3RhdGljX2Nhc3Q8WE1MRG9jdW1lbnRQYXJzZXIqPihk
b2N1bWVudCgpLT5wYXJzZXIoKSktPndlbGxGb3JtZWQoKSkpOworICAgIERvY3VtZW50KiBkb2Mg
PSByZWZlcmVuY2VkRG9jdW1lbnQoKTsKKyAgICBBU1NFUlQoIW1fdGFyZ2V0RWxlbWVudEluc3Rh
bmNlIHx8ICgoZG9jLT5pc1NWR0RvY3VtZW50KCkgfHwgZG9jLT5pc1hIVE1MRG9jdW1lbnQoKSkg
JiYgIXN0YXRpY19jYXN0PFhNTERvY3VtZW50UGFyc2VyKj4oZG9jLT5wYXJzZXIoKSktPndlbGxG
b3JtZWQoKSkpOwogICAgIEFTU0VSVCghbV9pc1BlbmRpbmdSZXNvdXJjZSk7CiB9CiAKQEAgLTE0
MSw2ICsxNDgsMTQgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkK
ICAgICBkZXRhY2hJbnN0YW5jZSgpOwogfQogCitEb2N1bWVudCogU1ZHVXNlRWxlbWVudDo6cmVm
ZXJlbmNlZERvY3VtZW50KCkgY29uc3QKK3sKKyAgICBpZiAoaHJlZigpLnN0YXJ0c1dpdGgoIiMi
KSkKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50KCk7CisgICAgZnByaW50ZihzdGRlcnIsICIqKiBU
T0RPKGN0cnV0YSk6IHJldHVybiBtX2V4dGVybmFsUmVzb3VyY2UuZG9jdW1lbnQoKVxuIik7Cisg
ICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgU1ZHVXNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CkBAIC00NTYsOCAr
NDcxLDEyIEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAg
IC8vIElmIHdlJ3JlIGNhbGxlZCB0aGUgZmlyc3QgdGltZSAoZHVyaW5nIHNoYWRvdyB0cmVlIHJv
b3QgY3JlYXRpb24gZnJvbSBSZW5kZXJTVkdTaGFkb3dUcmVlUm9vdENvbnRhaW5lcikKICAgICAv
LyB3ZSBlaXRoZXIgZGV0ZXJtaW5lIHRoYXQgb3VyIHRhcmdldCBpcyBhdmFpbGFibGUgb3Igbm90
IC0gdGhlbiB3ZSBhZGQgb3Vyc2VsdmVzIHRvIHRoZSBwZW5kaW5nIHJlc291cmNlIGxpc3QKICAg
ICAvLyBPbmNlIHRoZSBwZW5kaW5nIHJlc291cmNlIGFwcGVhcnMsIGl0IHdpbGwgY2FsbCBidWls
ZFBlbmRpbmdSZXNvdXJjZSgpLCBzbyB3ZSdyZSBjYWxsZWQgYSBzZWNvbmQgdGltZS4KKyAgICBE
b2N1bWVudCogZG9jID0gcmVmZXJlbmNlZERvY3VtZW50KCk7CisgICAgaWYgKCFkb2MpCisgICAg
ICAgIHJldHVybjsKKwogICAgIFN0cmluZyBpZCA9IFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0
KGhyZWYoKSk7Ci0gICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50KCktPmdldEVs
ZW1lbnRCeUlkKGlkKTsKKyAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jLT5nZXRFbGVt
ZW50QnlJZChpZCk7CiAgICAgQVNTRVJUKCFtX3RhcmdldEVsZW1lbnRJbnN0YW5jZSk7CiAKICAg
ICBpZiAoIXRhcmdldEVsZW1lbnQpIHsKQEAgLTUwMCw3ICs1MTksMTAgQEAgdm9pZCBTVkdVc2VF
bGVtZW50OjpidWlsZFNoYWRvd0FuZEluc3RhbmNlVHJlZShTVkdTaGFkb3dUcmVlUm9vdEVsZW1l
bnQqIHNoYWRvd1IKICAgICBTaGFkb3dUcmVlVXBkYXRlQmxvY2tlciBibG9ja2VyKHRoaXMpOwog
CiAgICAgU3RyaW5nIGlkID0gU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQoaHJlZigpKTsKLSAg
ICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoaWQp
OworICAgIERvY3VtZW50KiBkb2MgPSByZWZlcmVuY2VkRG9jdW1lbnQoKTsKKyAgICBpZiAoIWRv
YykKKyAgICAgICAgcmV0dXJuOworICAgIEVsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBkb2MtPmdl
dEVsZW1lbnRCeUlkKGlkKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpIHsKICAgICAgICAgLy8g
VGhlIG9ubHkgdGltZSB3ZSBzaG91bGQgZ2V0IGhlcmUgaXMgd2hlbiB0aGUgdXNlIGVsZW1lbnQg
aGFzIG5vdCBiZWVuCiAgICAgICAgIC8vIGdpdmVuIGEgcmVzb3VyY2UgdG8gdGFyZ2V0LgpAQCAt
NzQ5LDggKzc3MSwxMiBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1aWxkSW5zdGFuY2VUcmVlKFNW
R0VsZW1lbnQqIHRhcmdldCwgU1ZHRWxlbWVudEluc3RhbmNlKiB0YQogCiBib29sIFNWR1VzZUVs
ZW1lbnQ6Omhhc0N5Y2xlVXNlUmVmZXJlbmNpbmcoU1ZHVXNlRWxlbWVudCogdXNlLCBTVkdFbGVt
ZW50SW5zdGFuY2UqIHRhcmdldEluc3RhbmNlLCBTVkdFbGVtZW50KiYgbmV3VGFyZ2V0KQogewor
ICAgIERvY3VtZW50KiBkb2MgPSByZWZlcmVuY2VkRG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvYykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgU3RyaW5nIGlkID0gU1ZHVVJJUmVmZXJlbmNl
OjpnZXRUYXJnZXQodXNlLT5ocmVmKCkpOwotICAgIEVsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBk
b2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChpZCk7IAorICAgIEVsZW1lbnQqIHRhcmdldEVsZW1l
bnQgPSBkb2MtPmdldEVsZW1lbnRCeUlkKGlkKTsKICAgICBuZXdUYXJnZXQgPSAwOwogICAgIGlm
ICh0YXJnZXRFbGVtZW50ICYmIHRhcmdldEVsZW1lbnQtPmlzU1ZHRWxlbWVudCgpKQogICAgICAg
ICBuZXdUYXJnZXQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4odGFyZ2V0RWxlbWVudCk7CkBA
IC04MzAsMTUgKzg1NiwxOCBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmV4cGFuZFVzZUVsZW1lbnRz
SW5TaGFkb3dUcmVlKFNWR1NoYWRvd1RyZWVSb290RWxlbWVudCogc2hhZAogICAgIGlmIChlbGVt
ZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjp1c2VUYWcpKSB7CiAgICAgICAgIFNWR1VzZUVsZW1l
bnQqIHVzZSA9IHN0YXRpY19jYXN0PFNWR1VzZUVsZW1lbnQqPihlbGVtZW50KTsKIAorICAgICAg
ICBEb2N1bWVudCogZG9jID0gcmVmZXJlbmNlZERvY3VtZW50KCk7CisgICAgICAgIEFTU0VSVChk
b2MpOworCiAgICAgICAgIFN0cmluZyBpZCA9IFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KHVz
ZS0+aHJlZigpKTsKLSAgICAgICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50KCkt
PmdldEVsZW1lbnRCeUlkKGlkKTsgCisgICAgICAgIEVsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBk
b2MtPmdldEVsZW1lbnRCeUlkKGlkKTsKICAgICAgICAgU1ZHRWxlbWVudCogdGFyZ2V0ID0gMDsK
ICAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQgJiYgdGFyZ2V0RWxlbWVudC0+aXNTVkdFbGVtZW50
KCkpCiAgICAgICAgICAgICB0YXJnZXQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4odGFyZ2V0
RWxlbWVudCk7CiAKICAgICAgICAgLy8gRG9uJ3QgQVNTRVJUKHRhcmdldCkgaGVyZSwgaXQgbWF5
IGJlICJwZW5kaW5nIiwgdG9vLgogICAgICAgICAvLyBTZXR1cCBzdWItc2hhZG93IHRyZWUgcm9v
dCBub2RlCi0gICAgICAgIFJlZlB0cjxTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudD4gY2xv
bmVQYXJlbnQgPSBTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KCkpOworICAgICAgICBSZWZQdHI8U1ZHU2hhZG93VHJlZUNvbnRhaW5lckVsZW1lbnQ+IGNsb25l
UGFyZW50ID0gU1ZHU2hhZG93VHJlZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2MpOwogICAg
ICAgICB1c2UtPmNsb25lQ2hpbGROb2RlcyhjbG9uZVBhcmVudC5nZXQoKSk7CiAKICAgICAgICAg
Ly8gU3BlYzogSW4gdGhlIGdlbmVyYXRlZCBjb250ZW50LCB0aGUgJ3VzZScgd2lsbCBiZSByZXBs
YWNlZCBieSAnZycsIHdoZXJlIGFsbCBhdHRyaWJ1dGVzIGZyb20gdGhlCkBAIC04ODMsMTMgKzkx
MiwxNiBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmV4cGFuZFVzZUVsZW1lbnRzSW5TaGFkb3dUcmVl
KFNWR1NoYWRvd1RyZWVSb290RWxlbWVudCogc2hhZAogdm9pZCBTVkdVc2VFbGVtZW50OjpleHBh
bmRTeW1ib2xFbGVtZW50c0luU2hhZG93VHJlZShTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQqIHNo
YWRvd1Jvb3QsIE5vZGUqIGVsZW1lbnQpCiB7CiAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUo
U1ZHTmFtZXM6OnN5bWJvbFRhZykpIHsKKyAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHJlZmVyZW5j
ZWREb2N1bWVudCgpOworICAgICAgICBBU1NFUlQoZG9jKTsKKwogICAgICAgICAvLyBTcGVjOiBU
aGUgcmVmZXJlbmNlZCAnc3ltYm9sJyBhbmQgaXRzIGNvbnRlbnRzIGFyZSBkZWVwLWNsb25lZCBp
bnRvIHRoZSBnZW5lcmF0ZWQgdHJlZSwKICAgICAgICAgLy8gd2l0aCB0aGUgZXhjZXB0aW9uIHRo
YXQgdGhlICdzeW1ib2wnIGlzIHJlcGxhY2VkIGJ5IGFuICdzdmcnLiBUaGlzIGdlbmVyYXRlZCAn
c3ZnJyB3aWxsCiAgICAgICAgIC8vIGFsd2F5cyBoYXZlIGV4cGxpY2l0IHZhbHVlcyBmb3IgYXR0
cmlidXRlcyB3aWR0aCBhbmQgaGVpZ2h0LiBJZiBhdHRyaWJ1dGVzIHdpZHRoIGFuZC9vcgogICAg
ICAgICAvLyBoZWlnaHQgYXJlIHByb3ZpZGVkIG9uIHRoZSAndXNlJyBlbGVtZW50LCB0aGVuIHRo
ZXNlIGF0dHJpYnV0ZXMgd2lsbCBiZSB0cmFuc2ZlcnJlZCB0bwogICAgICAgICAvLyB0aGUgZ2Vu
ZXJhdGVkICdzdmcnLiBJZiBhdHRyaWJ1dGVzIHdpZHRoIGFuZC9vciBoZWlnaHQgYXJlIG5vdCBz
cGVjaWZpZWQsIHRoZSBnZW5lcmF0ZWQKICAgICAgICAgLy8gJ3N2ZycgZWxlbWVudCB3aWxsIHVz
ZSB2YWx1ZXMgb2YgMTAwJSBmb3IgdGhlc2UgYXR0cmlidXRlcy4KLSAgICAgICAgUmVmUHRyPFNW
R1NWR0VsZW1lbnQ+IHN2Z0VsZW1lbnQgPSBTVkdTVkdFbGVtZW50OjpjcmVhdGUoU1ZHTmFtZXM6
OnN2Z1RhZywgZG9jdW1lbnQoKSk7CisgICAgICAgIFJlZlB0cjxTVkdTVkdFbGVtZW50PiBzdmdF
bGVtZW50ID0gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlKFNWR05hbWVzOjpzdmdUYWcsIGRvYyk7CiAK
ICAgICAgICAgLy8gVHJhbnNmZXIgYWxsIGF0dHJpYnV0ZXMgZnJvbSA8c3ltYm9sPiB0byB0aGUg
bmV3IDxzdmc+IGVsZW1lbnQKICAgICAgICAgc3ZnRWxlbWVudC0+YXR0cmlidXRlcygpLT5zZXRB
dHRyaWJ1dGVzKCplbGVtZW50LT5hdHRyaWJ1dGVzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmgKaW5kZXggMTBjOWJlOS4uNjc3MTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1VzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5oCkBAIC01OCw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVk
SW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKKyAgICBEb2N1bWVudCog
cmVmZXJlbmNlZERvY3VtZW50KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwo=
</data>
<flag name="review"
          id="75662"
          type_id="1"
          status="-"
          setter="ossy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83812</attachid>
            <date>2011-02-25 07:44:53 -0800</date>
            <delta_ts>2011-02-25 07:53:26 -0800</delta_ts>
            <desc>Draft patch, asking for a preliminary review</desc>
            <filename>wk12499-draft1.diff</filename>
            <type>text/plain</type>
            <size>23538</size>
            <attacher name="Cosmin Truta">ctruta</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMTg0ZDQyYy4uMTFlOWRhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KQEAgLTE4NDQsNiArMTg0NCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL051
bWJlcklucHV0VHlwZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBl
LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvT3duZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9o
dG1sL093bmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2Fu
bmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3Bw
IFwKQEAgLTM0NjcsNiArMzQ2OSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jl
Y3RFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZW5kZXJpbmdJbnRlbnQuaCBc
CisJU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jlc291cmNlT3duZXJFbGVtZW50LmNwcCBcCisJU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1Jlc291cmNlT3duZXJFbGVtZW50LmggXAogCVNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Nj
cmlwdEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NldEVsZW1lbnQuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBkYzRkMDQwLi4xNDc0ZThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0xODY0LDYgKzE4NjQsOCBAQAogICAgICAgICAgICAgJ2h0bWwvTW9udGhJbnB1dFR5cGUuaCcs
CiAgICAgICAgICAgICAnaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwJywKICAgICAgICAgICAgICdo
dG1sL051bWJlcklucHV0VHlwZS5oJywKKyAgICAgICAgICAgICdodG1sL093bmVyLmNwcCcsCisg
ICAgICAgICAgICAnaHRtbC9Pd25lci5oJywKICAgICAgICAgICAgICdodG1sL1Bhc3N3b3JkSW5w
dXRUeXBlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9QYXNzd29yZElucHV0VHlwZS5oJywKICAg
ICAgICAgICAgICdodG1sL1BsdWdpbkRvY3VtZW50LmNwcCcsCkBAIC00NDQwLDYgKzQ0NDIsOCBA
QAogICAgICAgICAgICAgJ3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ3N2
Zy9TVkdSZWN0RWxlbWVudC5oJywKICAgICAgICAgICAgICdzdmcvU1ZHUmVuZGVyaW5nSW50ZW50
LmgnLAorICAgICAgICAgICAgJ3N2Zy9TVkdSZXNvdXJjZU93bmVyRWxlbWVudC5jcHAnLAorICAg
ICAgICAgICAgJ3N2Zy9TVkdSZXNvdXJjZU93bmVyRWxlbWVudC5oJywKICAgICAgICAgICAgICdz
dmcvU1ZHU1ZHRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdTVkdFbGVtZW50Lmgn
LAogICAgICAgICAgICAgJ3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmlu
ZGV4IDA2YjU2MmUuLjBhNGQ0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC03MzUsNiArNzM1LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgaHRtbC9NZWRpYURvY3VtZW50LmNwcCBcCiAgICAgaHRtbC9Nb250
aElucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBcCisgICAgaHRt
bC9Pd25lci5jcHAgXAogICAgIGh0bWwvUGFzc3dvcmRJbnB1dFR5cGUuY3BwIFwKICAgICBodG1s
L1BsdWdpbkRvY3VtZW50LmNwcCBcCiAgICAgaHRtbC9SYWRpb0lucHV0VHlwZS5jcHAgXApAQCAt
MTY4MSw2ICsxNjgyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9JbWFnZVJlc2l6ZXJUaHJl
YWQuaCBcCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwKICAgICBodG1sL01lZGlhRG9jdW1l
bnQuaCBcCisgICAgaHRtbC9Pd25lci5oIFwKICAgICBodG1sL1BsdWdpbkRvY3VtZW50LmggXAog
ICAgIGh0bWwvU3RlcFJhbmdlLmggXAogICAgIGh0bWwvVGV4dERvY3VtZW50LmggXApAQCAtMjMz
Miw2ICsyMzM0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxl
bWVudC5oIFwKICAgICBzdmcvU1ZHUmVjdC5oIFwKICAgICBzdmcvU1ZHUmVjdEVsZW1lbnQuaCBc
CisgICAgc3ZnL1NWR1Jlc291cmNlT3duZXJFbGVtZW50LmggXAogICAgIHN2Zy9TVkdTY3JpcHRF
bGVtZW50LmggXAogICAgIHN2Zy9TVkdTZXRFbGVtZW50LmggXAogICAgIHN2Zy9TVkdTdG9wRWxl
bWVudC5oIFwKQEAgLTMyMjUsNiArMzIyOCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9T
Vkc9MSkgewogICAgICAgICBzdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAgXAogICAgICAg
ICBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBcCiAgICAgICAgIHN2Zy9TVkdSZWN0
RWxlbWVudC5jcHAgXAorICAgICAgICBzdmcvU1ZHUmVzb3VyY2VPd25lckVsZW1lbnQuY3BwIFwK
ICAgICAgICAgc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwIFwKICAgICAgICAgc3ZnL1NWR1NldEVs
ZW1lbnQuY3BwIFwKICAgICAgICAgc3ZnL1NWR1N0b3BFbGVtZW50LmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDU4ZTIyMTEuLmNmNzM5
OTYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBA
IC01NTQ1OCw2ICs1NTQ1OCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxodG1sXE93bmVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxPd25lci5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXFBhc3N3b3JkSW5wdXRUeXBl
LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC02NDA5MCw2ICs2NDA5OCw2MiBAQAogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHUmVzb3Vy
Y2VPd25lckVsZW1lbnQuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRl
YnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iUmVsZWFzZV9MVENHfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdSZXNvdXJjZU93bmVyRWxlbWVudC5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZH
U2NyaXB0RWxlbWVudC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAppbmRleCAyYTdiNjEwLi5hYjgwODk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCkBAIC0zNCw5
ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6
SFRNTEZyYW1lT3duZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKLSAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAg
ICwgbV9jb250ZW50RnJhbWUoMCkKLSAgICAsIG1fc2FuZGJveEZsYWdzKFNhbmRib3hOb25lKQor
ICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpLCBPd25lcigpCiB7CiB9CiAKQEAg
LTYyLDQzICs2MCw0IEBAIHZvaWQgSFRNTEZyYW1lT3duZXJFbGVtZW50Ojp3aWxsUmVtb3ZlKCkK
ICAgICBIVE1MRWxlbWVudDo6d2lsbFJlbW92ZSgpOwogfQogCi1IVE1MRnJhbWVPd25lckVsZW1l
bnQ6On5IVE1MRnJhbWVPd25lckVsZW1lbnQoKQotewotICAgIGlmIChtX2NvbnRlbnRGcmFtZSkK
LSAgICAgICAgbV9jb250ZW50RnJhbWUtPmRpc2Nvbm5lY3RPd25lckVsZW1lbnQoKTsKLX0KLQot
RG9jdW1lbnQqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudERvY3VtZW50KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9jdW1lbnQo
KSA6IDA7Ci19Ci0KLURPTVdpbmRvdyogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2lu
ZG93KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFt
ZS0+ZG9tV2luZG93KCkgOiAwOwotfQotCi12b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2V0
U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykKLXsKLSAgICBpZiAobV9zYW5kYm94Rmxh
Z3MgPT0gZmxhZ3MpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc2FuZGJveEZsYWdzID0gZmxh
Z3M7Ci0KLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gY29udGVudEZyYW1lKCkpCi0gICAgICAgIGZy
YW1lLT5sb2FkZXIoKS0+b3duZXJFbGVtZW50U2FuZGJveEZsYWdzQ2hhbmdlZCgpOwotfQotCi0j
aWYgRU5BQkxFKFNWRykKLVNWR0RvY3VtZW50KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmdldFNW
R0RvY3VtZW50KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAotewotICAgIERvY3VtZW50KiBkb2Mg
PSBjb250ZW50RG9jdW1lbnQoKTsKLSAgICBpZiAoZG9jICYmIGRvYy0+aXNTVkdEb2N1bWVudCgp
KQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihkb2MpOwotICAgIC8v
IFNwZWM6IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9zdHJ1Y3QuaHRtbCNJbnRlcmZhY2VHZXRT
VkdEb2N1bWVudAotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgcmV0dXJuIDA7Ci19
Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lT3duZXJFbGVtZW50LmgKaW5kZXggZjc4NGY0Zi4uZTgyODkzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCkBAIC0yMyw2ICsyMyw4IEBA
CiAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJPd25lci5oIgorI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMzQsNDIgKzM2LDI0IEBAIGNsYXNzIFJlbmRlclBhcnQ7CiBj
bGFzcyBTVkdEb2N1bWVudDsKICNlbmRpZgogCi1jbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQg
OiBwdWJsaWMgSFRNTEVsZW1lbnQgeworY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50IDogcHVi
bGljIEhUTUxFbGVtZW50LCBwdWJsaWMgT3duZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgfkhU
TUxGcmFtZU93bmVyRWxlbWVudCgpOwotCi0gICAgRnJhbWUqIGNvbnRlbnRGcmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudEZyYW1lOyB9Ci0gICAgRE9NV2luZG93KiBjb250ZW50V2luZG93
KCkgY29uc3Q7Ci0gICAgRG9jdW1lbnQqIGNvbnRlbnREb2N1bWVudCgpIGNvbnN0OwotCiAgICAg
Ly8gTW9zdCBzdWJjbGFzc2VzIHVzZSBSZW5kZXJQYXJ0IChlaXRoZXIgUmVuZGVyRW1iZWRkZWRP
YmplY3Qgb3IgUmVuZGVySUZyYW1lKQogICAgIC8vIGV4Y2VwdCBmb3IgSFRNTE9iamVjdEVsZW1l
bnQgYW5kIEhUTUxFbWJlZEVsZW1lbnQgd2hpY2ggbWF5IHJldHVybiBhbnkKICAgICAvLyBSZW5k
ZXJPYmplY3Qgd2hlbiB1c2luZyBmYWxsYmFjayBjb250ZW50LgogICAgIFJlbmRlclBhcnQqIHJl
bmRlclBhcnQoKSBjb25zdDsKIAotI2lmIEVOQUJMRShTVkcpCi0gICAgU1ZHRG9jdW1lbnQqIGdl
dFNWR0RvY3VtZW50KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSNlbmRpZgotCiAgICAgdmlydHVh
bCBTY3JvbGxiYXJNb2RlIHNjcm9sbGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBTY3JvbGxiYXJB
dXRvOyB9CiAKLSAgICBTYW5kYm94RmxhZ3Mgc2FuZGJveEZsYWdzKCkgY29uc3QgeyByZXR1cm4g
bV9zYW5kYm94RmxhZ3M7IH0KLQogcHJvdGVjdGVkOgogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwogCi0gICAgdm9pZCBz
ZXRTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzKTsKLQogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVt
b3ZlKCk7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEZyYW1lOwogCiAgICAgdmlydHVh
bCBib29sIGlzRnJhbWVPd25lckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IHsg
cmV0dXJuIG1fY29udGVudEZyYW1lOyB9Ci0KLSAgICBGcmFtZSogbV9jb250ZW50RnJhbWU7Ci0g
ICAgU2FuZGJveEZsYWdzIG1fc2FuZGJveEZsYWdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Pd25lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL093bmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5hZjYxYjBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Pd25lci5j
cHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiT3duZXIuaCIKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJQYXJ0
LmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNs
dWRlICJTVkdEb2N1bWVudC5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworT3du
ZXI6Ok93bmVyKCkKKyAgICA6IG1fY29udGVudEZyYW1lKDApCisgICAgLCBtX3NhbmRib3hGbGFn
cyhTYW5kYm94Tm9uZSkKK3sKK30KKworT3duZXI6On5Pd25lcigpCit7CisgICAgaWYgKG1fY29u
dGVudEZyYW1lKQorICAgICAgICBtX2NvbnRlbnRGcmFtZS0+ZGlzY29ubmVjdE93bmVyRWxlbWVu
dCgpOworfQorCitEb2N1bWVudCogT3duZXI6OmNvbnRlbnREb2N1bWVudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRvY3VtZW50KCkgOiAw
OworfQorCitET01XaW5kb3cqIE93bmVyOjpjb250ZW50V2luZG93KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9tV2luZG93KCkgOiAwOwor
fQorCit2b2lkIE93bmVyOjpzZXRTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIGZsYWdzKQorewor
ICAgIGlmIChtX3NhbmRib3hGbGFncyA9PSBmbGFncykKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9zYW5kYm94RmxhZ3MgPSBmbGFnczsKKworICAgIGlmIChGcmFtZSogZnJhbWUgPSBjb250ZW50
RnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5vd25lckVsZW1lbnRTYW5kYm94Rmxh
Z3NDaGFuZ2VkKCk7Cit9CisKKyNpZiBFTkFCTEUoU1ZHKQorU1ZHRG9jdW1lbnQqIE93bmVyOjpn
ZXRTVkdEb2N1bWVudChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3sKKyAgICBEb2N1bWVudCog
ZG9jID0gY29udGVudERvY3VtZW50KCk7CisgICAgaWYgKGRvYyAmJiBkb2MtPmlzU1ZHRG9jdW1l
bnQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZG9jKTsKKyAg
ICAvLyBTcGVjOiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvc3RydWN0Lmh0bWwjSW50ZXJmYWNl
R2V0U1ZHRG9jdW1lbnQKKyAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgIHJldHVybiAw
OworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvT3duZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT3duZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDE1OGQ1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9Pd25lci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
CisgKi8KKworI2lmbmRlZiBPd25lcl9oCisjZGVmaW5lIE93bmVyX2gKKworI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV2luZG93OworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBG
cmFtZTsKK2NsYXNzIEtleWJvYXJkRXZlbnQ7CitjbGFzcyBRdWFsaWZpZWROYW1lOworY2xhc3Mg
UmVuZGVyUGFydDsKKworI2lmIEVOQUJMRShTVkcpCitjbGFzcyBTVkdEb2N1bWVudDsKKyNlbmRp
ZgorCitjbGFzcyBPd25lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+T3duZXIoKTsKKworICAg
IEZyYW1lKiBjb250ZW50RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRGcmFtZTsgfQor
ICAgIERPTVdpbmRvdyogY29udGVudFdpbmRvdygpIGNvbnN0OworICAgIERvY3VtZW50KiBjb250
ZW50RG9jdW1lbnQoKSBjb25zdDsKKworI2lmIEVOQUJMRShTVkcpCisgICAgU1ZHRG9jdW1lbnQq
IGdldFNWR0RvY3VtZW50KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyNlbmRpZgorCisgICAgU2Fu
ZGJveEZsYWdzIHNhbmRib3hGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzOyB9
CisKK3Byb3RlY3RlZDoKKyAgICBPd25lcigpOworCisgICAgdm9pZCBzZXRTYW5kYm94RmxhZ3Mo
U2FuZGJveEZsYWdzKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRnJhbWU7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3Qg
eyByZXR1cm4gbV9jb250ZW50RnJhbWU7IH0KKworICAgIEZyYW1lKiBtX2NvbnRlbnRGcmFtZTsK
KyAgICBTYW5kYm94RmxhZ3MgbV9zYW5kYm94RmxhZ3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBPd25lcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUmVzb3VyY2VPd25lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jl
c291cmNlT3duZXJFbGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42OTY4ZWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jlc291
cmNlT3duZXJFbGVtZW50LmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZHUmVzb3Vy
Y2VPd25lckVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkZy
YW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJQYXJ0Lmgi
CisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTVkdSZXNvdXJjZU93bmVyRWxlbWVudDo6U1ZHUmVz
b3VyY2VPd25lckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQorICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCksIE93bmVyKCkK
K3sKK30KKworUmVuZGVyUGFydCogU1ZHUmVzb3VyY2VPd25lckVsZW1lbnQ6OnJlbmRlclBhcnQo
KSBjb25zdAoreworICAgIC8vIEhUTUxPYmplY3RFbGVtZW50IGFuZCBIVE1MRW1iZWRFbGVtZW50
IG1heSByZXR1cm4gYXJiaXRyYXJ5IHJlbmRlcmVycworICAgIC8vIHdoZW4gdXNpbmcgZmFsbGJh
Y2sgY29udGVudC4KKyAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIXJlbmRlcmVyKCktPmlzUmVuZGVy
UGFydCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdG9SZW5kZXJQYXJ0KHJlbmRl
cmVyKCkpOworfQorCit2b2lkIFNWR1Jlc291cmNlT3duZXJFbGVtZW50Ojp3aWxsUmVtb3ZlKCkK
K3sKKyAgICAvLyBGSVhNRTogSXQgaXMgdW5jbGVhciB3aHkgdGhpcyBjYW4ndCBiZSBtb3ZlZCB0
byByZW1vdmVkRnJvbURvY3VtZW50KCkKKyAgICAvLyB0aGlzIGlzIHRoZSBvbmx5IGltcGxlbWVu
dGF0aW9uIG9mIHdpbGxSZW1vdmUgaW4gV2ViQ29yZSEKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0g
Y29udGVudEZyYW1lKCkpIHsKKyAgICAgICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0KGZyYW1lKTsK
KyAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5mcmFtZURldGFjaGVkKCk7CisgICAgICAgIGZyYW1l
LT5kaXNjb25uZWN0T3duZXJFbGVtZW50KCk7CisgICAgfQorCisgICAgU1ZHRWxlbWVudDo6d2ls
bFJlbW92ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jlc291cmNlT3duZXJF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVzb3VyY2VPd25lckVsZW1lbnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjJiOWM0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jlc291cmNlT3duZXJFbGVtZW50LmgKQEAgLTAs
MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFNWR1Jlc291cmNlT3duZXJFbGVt
ZW50X2gKKyNkZWZpbmUgU1ZHUmVzb3VyY2VPd25lckVsZW1lbnRfaAorCisjaW5jbHVkZSAiRnJh
bWVMb2FkZXJUeXBlcy5oIgorI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKKyNpbmNsdWRlICJPd25l
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdpbmRvdzsKK2NsYXNzIEZy
YW1lOworY2xhc3MgUmVuZGVyUGFydDsKKworI2lmIEVOQUJMRShTVkcpCitjbGFzcyBTVkdEb2N1
bWVudDsKKyNlbmRpZgorCitjbGFzcyBTVkdSZXNvdXJjZU93bmVyRWxlbWVudCA6IHB1YmxpYyBT
VkdFbGVtZW50LCBwdWJsaWMgT3duZXIgeworcHVibGljOgorICAgIC8vIE1vc3Qgc3ViY2xhc3Nl
cyB1c2UgUmVuZGVyUGFydCAoZWl0aGVyIFJlbmRlckVtYmVkZGVkT2JqZWN0IG9yIFJlbmRlcklG
cmFtZSkKKyAgICAvLyBleGNlcHQgZm9yIEhUTUxPYmplY3RFbGVtZW50IGFuZCBIVE1MRW1iZWRF
bGVtZW50IHdoaWNoIG1heSByZXR1cm4gYW55CisgICAgLy8gUmVuZGVyT2JqZWN0IHdoZW4gdXNp
bmcgZmFsbGJhY2sgY29udGVudC4KKyAgICBSZW5kZXJQYXJ0KiByZW5kZXJQYXJ0KCkgY29uc3Q7
CisKK3Byb3RlY3RlZDoKKyAgICBTVkdSZXNvdXJjZU93bmVyRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOworCisgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1v
dmUoKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRnJhbWU7CisKKyAgICB2aXJ0dWFs
IGJvb2wgaXNGcmFtZU93bmVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNWR1Jlc291cmNlT3duZXJFbGVt
ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCBhOGExY2Y5Li4wOWY5
YTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0xMjEsOCArMTIxLDE0
IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBh
dHRyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0
dHIpKQorICAgICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShh
dHRyKSkgeworICAgICAgICAgICAgaWYgKCFocmVmKCkuc3RhcnRzV2l0aCgiIyIpKSB7CisgICAg
ICAgICAgICAgICAgS1VSTCBrdXJsKGRvY3VtZW50KCktPmJhc2VVUkkoKSwgaHJlZigpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoa3VybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKKyAgICAgICAg
ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIqKiBUT0RPKGN0cnV0YSk6IGxvYWQgcmVzb3Vy
Y2UgZnJvbSAlcyBpbnRvIG1fZXh0ZXJuYWxSZXNvdXJjZVxuIiwga3VybC5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoYXR0cik7CiAgICAgfQogfQpAQCAtMTMxLDcgKzEzNyw4IEBAIHZvaWQgU1ZHVXNlRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb25zIGV4
aXN0cyB0byBhc3N1cmUgYXNzdW1wdGlvbnMgbWFkZSBpbiB0aGUgY29kZSByZWdhcmRpbmcgU1ZH
RWxlbWVudEluc3RhbmNlIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGFyZSBzYXRpc2ZpZWQuCiAgICAg
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7Ci0g
ICAgQVNTRVJUKCFtX3RhcmdldEVsZW1lbnRJbnN0YW5jZSB8fCAoKGRvY3VtZW50KCktPmlzU1ZH
RG9jdW1lbnQoKSB8fCBkb2N1bWVudCgpLT5pc1hIVE1MRG9jdW1lbnQoKSkgJiYgIXN0YXRpY19j
YXN0PFhNTERvY3VtZW50UGFyc2VyKj4oZG9jdW1lbnQoKS0+cGFyc2VyKCkpLT53ZWxsRm9ybWVk
KCkpKTsKKyAgICBEb2N1bWVudCogZG9jID0gcmVmZXJlbmNlZERvY3VtZW50KCk7CisgICAgQVNT
RVJUKCFtX3RhcmdldEVsZW1lbnRJbnN0YW5jZSB8fCAoKGRvYy0+aXNTVkdEb2N1bWVudCgpIHx8
IGRvYy0+aXNYSFRNTERvY3VtZW50KCkpICYmICFzdGF0aWNfY2FzdDxYTUxEb2N1bWVudFBhcnNl
cio+KGRvYy0+cGFyc2VyKCkpLT53ZWxsRm9ybWVkKCkpKTsKICAgICBBU1NFUlQoIW1faXNQZW5k
aW5nUmVzb3VyY2UpOwogfQogCkBAIC0xNDEsNiArMTQ4LDE0IEBAIHZvaWQgU1ZHVXNlRWxlbWVu
dDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiAgICAgZGV0YWNoSW5zdGFuY2UoKTsKIH0KIAorRG9j
dW1lbnQqIFNWR1VzZUVsZW1lbnQ6OnJlZmVyZW5jZWREb2N1bWVudCgpIGNvbnN0Cit7CisgICAg
aWYgKGhyZWYoKS5zdGFydHNXaXRoKCIjIikpCisgICAgICAgIHJldHVybiBkb2N1bWVudCgpOwor
ICAgIGZwcmludGYoc3RkZXJyLCAiKiogVE9ETyhjdHJ1dGEpOiByZXR1cm4gbV9leHRlcm5hbFJl
c291cmNlLmRvY3VtZW50KClcbiIpOworICAgIHJldHVybiAwOworfQorCiB2b2lkIFNWR1VzZUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CiB7CiAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoYXR0ck5hbWUpOwpAQCAtNDU2LDggKzQ3MSwxMiBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1
aWxkUGVuZGluZ1Jlc291cmNlKCkKICAgICAvLyBJZiB3ZSdyZSBjYWxsZWQgdGhlIGZpcnN0IHRp
bWUgKGR1cmluZyBzaGFkb3cgdHJlZSByb290IGNyZWF0aW9uIGZyb20gUmVuZGVyU1ZHU2hhZG93
VHJlZVJvb3RDb250YWluZXIpCiAgICAgLy8gd2UgZWl0aGVyIGRldGVybWluZSB0aGF0IG91ciB0
YXJnZXQgaXMgYXZhaWxhYmxlIG9yIG5vdCAtIHRoZW4gd2UgYWRkIG91cnNlbHZlcyB0byB0aGUg
cGVuZGluZyByZXNvdXJjZSBsaXN0CiAgICAgLy8gT25jZSB0aGUgcGVuZGluZyByZXNvdXJjZSBh
cHBlYXJzLCBpdCB3aWxsIGNhbGwgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKSwgc28gd2UncmUgY2Fs
bGVkIGEgc2Vjb25kIHRpbWUuCisgICAgRG9jdW1lbnQqIGRvYyA9IHJlZmVyZW5jZWREb2N1bWVu
dCgpOworICAgIGlmICghZG9jKQorICAgICAgICByZXR1cm47CisKICAgICBTdHJpbmcgaWQgPSBT
VkdVUklSZWZlcmVuY2U6OmdldFRhcmdldChocmVmKCkpOwotICAgIEVsZW1lbnQqIHRhcmdldEVs
ZW1lbnQgPSBkb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChpZCk7CisgICAgRWxlbWVudCogdGFy
Z2V0RWxlbWVudCA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQoaWQpOwogICAgIEFTU0VSVCghbV90YXJn
ZXRFbGVtZW50SW5zdGFuY2UpOwogCiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KSB7CkBAIC01MDAs
NyArNTE5LDEwIEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6YnVpbGRTaGFkb3dBbmRJbnN0YW5jZVRy
ZWUoU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50KiBzaGFkb3dSCiAgICAgU2hhZG93VHJlZVVwZGF0
ZUJsb2NrZXIgYmxvY2tlcih0aGlzKTsKIAogICAgIFN0cmluZyBpZCA9IFNWR1VSSVJlZmVyZW5j
ZTo6Z2V0VGFyZ2V0KGhyZWYoKSk7Ci0gICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IGRvY3Vt
ZW50KCktPmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICBEb2N1bWVudCogZG9jID0gcmVmZXJlbmNl
ZERvY3VtZW50KCk7CisgICAgaWYgKCFkb2MpCisgICAgICAgIHJldHVybjsKKyAgICBFbGVtZW50
KiB0YXJnZXRFbGVtZW50ID0gZG9jLT5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgaWYgKCF0YXJn
ZXRFbGVtZW50KSB7CiAgICAgICAgIC8vIFRoZSBvbmx5IHRpbWUgd2Ugc2hvdWxkIGdldCBoZXJl
IGlzIHdoZW4gdGhlIHVzZSBlbGVtZW50IGhhcyBub3QgYmVlbgogICAgICAgICAvLyBnaXZlbiBh
IHJlc291cmNlIHRvIHRhcmdldC4KQEAgLTc0OSw4ICs3NzEsMTIgQEAgdm9pZCBTVkdVc2VFbGVt
ZW50OjpidWlsZEluc3RhbmNlVHJlZShTVkdFbGVtZW50KiB0YXJnZXQsIFNWR0VsZW1lbnRJbnN0
YW5jZSogdGEKIAogYm9vbCBTVkdVc2VFbGVtZW50OjpoYXNDeWNsZVVzZVJlZmVyZW5jaW5nKFNW
R1VzZUVsZW1lbnQqIHVzZSwgU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXRJbnN0YW5jZSwgU1ZH
RWxlbWVudComIG5ld1RhcmdldCkKIHsKKyAgICBEb2N1bWVudCogZG9jID0gcmVmZXJlbmNlZERv
Y3VtZW50KCk7CisgICAgaWYgKCFkb2MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIFN0
cmluZyBpZCA9IFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KHVzZS0+aHJlZigpKTsKLSAgICBF
bGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoaWQpOyAK
KyAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jLT5nZXRFbGVtZW50QnlJZChpZCk7CiAg
ICAgbmV3VGFyZ2V0ID0gMDsKICAgICBpZiAodGFyZ2V0RWxlbWVudCAmJiB0YXJnZXRFbGVtZW50
LT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgbmV3VGFyZ2V0ID0gc3RhdGljX2Nhc3Q8U1ZHRWxl
bWVudCo+KHRhcmdldEVsZW1lbnQpOwpAQCAtODMwLDE1ICs4NTYsMTggQEAgdm9pZCBTVkdVc2VF
bGVtZW50OjpleHBhbmRVc2VFbGVtZW50c0luU2hhZG93VHJlZShTVkdTaGFkb3dUcmVlUm9vdEVs
ZW1lbnQqIHNoYWQKICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6dXNlVGFn
KSkgewogICAgICAgICBTVkdVc2VFbGVtZW50KiB1c2UgPSBzdGF0aWNfY2FzdDxTVkdVc2VFbGVt
ZW50Kj4oZWxlbWVudCk7CiAKKyAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHJlZmVyZW5jZWREb2N1
bWVudCgpOworICAgICAgICBBU1NFUlQoZG9jKTsKKwogICAgICAgICBTdHJpbmcgaWQgPSBTVkdV
UklSZWZlcmVuY2U6OmdldFRhcmdldCh1c2UtPmhyZWYoKSk7Ci0gICAgICAgIEVsZW1lbnQqIHRh
cmdldEVsZW1lbnQgPSBkb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChpZCk7IAorICAgICAgICBF
bGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jLT5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgICAg
IFNWR0VsZW1lbnQqIHRhcmdldCA9IDA7CiAgICAgICAgIGlmICh0YXJnZXRFbGVtZW50ICYmIHRh
cmdldEVsZW1lbnQtPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICAgICAgdGFyZ2V0ID0gc3RhdGlj
X2Nhc3Q8U1ZHRWxlbWVudCo+KHRhcmdldEVsZW1lbnQpOwogCiAgICAgICAgIC8vIERvbid0IEFT
U0VSVCh0YXJnZXQpIGhlcmUsIGl0IG1heSBiZSAicGVuZGluZyIsIHRvby4KICAgICAgICAgLy8g
U2V0dXAgc3ViLXNoYWRvdyB0cmVlIHJvb3Qgbm9kZQotICAgICAgICBSZWZQdHI8U1ZHU2hhZG93
VHJlZUNvbnRhaW5lckVsZW1lbnQ+IGNsb25lUGFyZW50ID0gU1ZHU2hhZG93VHJlZUNvbnRhaW5l
ckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKKyAgICAgICAgUmVmUHRyPFNWR1NoYWRvd1Ry
ZWVDb250YWluZXJFbGVtZW50PiBjbG9uZVBhcmVudCA9IFNWR1NoYWRvd1RyZWVDb250YWluZXJF
bGVtZW50OjpjcmVhdGUoZG9jKTsKICAgICAgICAgdXNlLT5jbG9uZUNoaWxkTm9kZXMoY2xvbmVQ
YXJlbnQuZ2V0KCkpOwogCiAgICAgICAgIC8vIFNwZWM6IEluIHRoZSBnZW5lcmF0ZWQgY29udGVu
dCwgdGhlICd1c2UnIHdpbGwgYmUgcmVwbGFjZWQgYnkgJ2cnLCB3aGVyZSBhbGwgYXR0cmlidXRl
cyBmcm9tIHRoZQpAQCAtODgzLDEzICs5MTIsMTYgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpleHBh
bmRVc2VFbGVtZW50c0luU2hhZG93VHJlZShTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQqIHNoYWQK
IHZvaWQgU1ZHVXNlRWxlbWVudDo6ZXhwYW5kU3ltYm9sRWxlbWVudHNJblNoYWRvd1RyZWUoU1ZH
U2hhZG93VHJlZVJvb3RFbGVtZW50KiBzaGFkb3dSb290LCBOb2RlKiBlbGVtZW50KQogewogICAg
IGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzeW1ib2xUYWcpKSB7CisgICAgICAg
IERvY3VtZW50KiBkb2MgPSByZWZlcmVuY2VkRG9jdW1lbnQoKTsKKyAgICAgICAgQVNTRVJUKGRv
Yyk7CisKICAgICAgICAgLy8gU3BlYzogVGhlIHJlZmVyZW5jZWQgJ3N5bWJvbCcgYW5kIGl0cyBj
b250ZW50cyBhcmUgZGVlcC1jbG9uZWQgaW50byB0aGUgZ2VuZXJhdGVkIHRyZWUsCiAgICAgICAg
IC8vIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IHRoZSAnc3ltYm9sJyBpcyByZXBsYWNlZCBieSBh
biAnc3ZnJy4gVGhpcyBnZW5lcmF0ZWQgJ3N2Zycgd2lsbAogICAgICAgICAvLyBhbHdheXMgaGF2
ZSBleHBsaWNpdCB2YWx1ZXMgZm9yIGF0dHJpYnV0ZXMgd2lkdGggYW5kIGhlaWdodC4gSWYgYXR0
cmlidXRlcyB3aWR0aCBhbmQvb3IKICAgICAgICAgLy8gaGVpZ2h0IGFyZSBwcm92aWRlZCBvbiB0
aGUgJ3VzZScgZWxlbWVudCwgdGhlbiB0aGVzZSBhdHRyaWJ1dGVzIHdpbGwgYmUgdHJhbnNmZXJy
ZWQgdG8KICAgICAgICAgLy8gdGhlIGdlbmVyYXRlZCAnc3ZnJy4gSWYgYXR0cmlidXRlcyB3aWR0
aCBhbmQvb3IgaGVpZ2h0IGFyZSBub3Qgc3BlY2lmaWVkLCB0aGUgZ2VuZXJhdGVkCiAgICAgICAg
IC8vICdzdmcnIGVsZW1lbnQgd2lsbCB1c2UgdmFsdWVzIG9mIDEwMCUgZm9yIHRoZXNlIGF0dHJp
YnV0ZXMuCi0gICAgICAgIFJlZlB0cjxTVkdTVkdFbGVtZW50PiBzdmdFbGVtZW50ID0gU1ZHU1ZH
RWxlbWVudDo6Y3JlYXRlKFNWR05hbWVzOjpzdmdUYWcsIGRvY3VtZW50KCkpOworICAgICAgICBS
ZWZQdHI8U1ZHU1ZHRWxlbWVudD4gc3ZnRWxlbWVudCA9IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZShT
VkdOYW1lczo6c3ZnVGFnLCBkb2MpOwogCiAgICAgICAgIC8vIFRyYW5zZmVyIGFsbCBhdHRyaWJ1
dGVzIGZyb20gPHN5bWJvbD4gdG8gdGhlIG5ldyA8c3ZnPiBlbGVtZW50CiAgICAgICAgIHN2Z0Vs
ZW1lbnQtPmF0dHJpYnV0ZXMoKS0+c2V0QXR0cmlidXRlcygqZWxlbWVudC0+YXR0cmlidXRlcygp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCmluZGV4IDEwYzliZTkuLjY3NzEwMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaApAQCAtNTgsNiArNTgsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGJ1aWxkUGVuZGluZ1Jl
c291cmNlKCk7CisgICAgRG9jdW1lbnQqIHJlZmVyZW5jZWREb2N1bWVudCgpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83814</attachid>
            <date>2011-02-25 07:53:26 -0800</date>
            <delta_ts>2011-03-23 23:26:17 -0700</delta_ts>
            <desc>Draft patch, asking for a preliminary review</desc>
            <filename>wk12499-draft1.diff</filename>
            <type>text/plain</type>
            <size>23536</size>
            <attacher name="Cosmin Truta">ctruta</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMTg0ZDQyYy4uMTFlOWRhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KQEAgLTE4NDQsNiArMTg0NCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL051
bWJlcklucHV0VHlwZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBl
LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvT3duZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9o
dG1sL093bmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2Fu
bmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3Bw
IFwKQEAgLTM0NjcsNiArMzQ2OSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jl
Y3RFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZW5kZXJpbmdJbnRlbnQuaCBc
CisJU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jlc291cmNlT3duZXJFbGVtZW50LmNwcCBcCisJU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1Jlc291cmNlT3duZXJFbGVtZW50LmggXAogCVNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Nj
cmlwdEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NldEVsZW1lbnQuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBkYzRkMDQwLi4xNDc0ZThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0xODY0LDYgKzE4NjQsOCBAQAogICAgICAgICAgICAgJ2h0bWwvTW9udGhJbnB1dFR5cGUuaCcs
CiAgICAgICAgICAgICAnaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwJywKICAgICAgICAgICAgICdo
dG1sL051bWJlcklucHV0VHlwZS5oJywKKyAgICAgICAgICAgICdodG1sL093bmVyLmNwcCcsCisg
ICAgICAgICAgICAnaHRtbC9Pd25lci5oJywKICAgICAgICAgICAgICdodG1sL1Bhc3N3b3JkSW5w
dXRUeXBlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9QYXNzd29yZElucHV0VHlwZS5oJywKICAg
ICAgICAgICAgICdodG1sL1BsdWdpbkRvY3VtZW50LmNwcCcsCkBAIC00NDQwLDYgKzQ0NDIsOCBA
QAogICAgICAgICAgICAgJ3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ3N2
Zy9TVkdSZWN0RWxlbWVudC5oJywKICAgICAgICAgICAgICdzdmcvU1ZHUmVuZGVyaW5nSW50ZW50
LmgnLAorICAgICAgICAgICAgJ3N2Zy9TVkdSZXNvdXJjZU93bmVyRWxlbWVudC5jcHAnLAorICAg
ICAgICAgICAgJ3N2Zy9TVkdSZXNvdXJjZU93bmVyRWxlbWVudC5oJywKICAgICAgICAgICAgICdz
dmcvU1ZHU1ZHRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdTVkdFbGVtZW50Lmgn
LAogICAgICAgICAgICAgJ3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmlu
ZGV4IDA2YjU2MmUuLjBhNGQ0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC03MzUsNiArNzM1LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgaHRtbC9NZWRpYURvY3VtZW50LmNwcCBcCiAgICAgaHRtbC9Nb250
aElucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBcCisgICAgaHRt
bC9Pd25lci5jcHAgXAogICAgIGh0bWwvUGFzc3dvcmRJbnB1dFR5cGUuY3BwIFwKICAgICBodG1s
L1BsdWdpbkRvY3VtZW50LmNwcCBcCiAgICAgaHRtbC9SYWRpb0lucHV0VHlwZS5jcHAgXApAQCAt
MTY4MSw2ICsxNjgyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9JbWFnZVJlc2l6ZXJUaHJl
YWQuaCBcCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwKICAgICBodG1sL01lZGlhRG9jdW1l
bnQuaCBcCisgICAgaHRtbC9Pd25lci5oIFwKICAgICBodG1sL1BsdWdpbkRvY3VtZW50LmggXAog
ICAgIGh0bWwvU3RlcFJhbmdlLmggXAogICAgIGh0bWwvVGV4dERvY3VtZW50LmggXApAQCAtMjMz
Miw2ICsyMzM0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxl
bWVudC5oIFwKICAgICBzdmcvU1ZHUmVjdC5oIFwKICAgICBzdmcvU1ZHUmVjdEVsZW1lbnQuaCBc
CisgICAgc3ZnL1NWR1Jlc291cmNlT3duZXJFbGVtZW50LmggXAogICAgIHN2Zy9TVkdTY3JpcHRF
bGVtZW50LmggXAogICAgIHN2Zy9TVkdTZXRFbGVtZW50LmggXAogICAgIHN2Zy9TVkdTdG9wRWxl
bWVudC5oIFwKQEAgLTMyMjUsNiArMzIyOCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9T
Vkc9MSkgewogICAgICAgICBzdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAgXAogICAgICAg
ICBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBcCiAgICAgICAgIHN2Zy9TVkdSZWN0
RWxlbWVudC5jcHAgXAorICAgICAgICBzdmcvU1ZHUmVzb3VyY2VPd25lckVsZW1lbnQuY3BwIFwK
ICAgICAgICAgc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwIFwKICAgICAgICAgc3ZnL1NWR1NldEVs
ZW1lbnQuY3BwIFwKICAgICAgICAgc3ZnL1NWR1N0b3BFbGVtZW50LmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDU4ZTIyMTEuLmNmNzM5
OTYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBA
IC01NTQ1OCw2ICs1NTQ1OCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxodG1sXE93bmVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxPd25lci5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXFBhc3N3b3JkSW5wdXRUeXBl
LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC02NDA5MCw2ICs2NDA5OCw2MiBAQAogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHUmVzb3Vy
Y2VPd25lckVsZW1lbnQuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRl
YnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iUmVsZWFzZV9MVENHfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdSZXNvdXJjZU93bmVyRWxlbWVudC5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZH
U2NyaXB0RWxlbWVudC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAppbmRleCAyYTdiNjEwLi5hYjgwODk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCkBAIC0zNCw5
ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6
SFRNTEZyYW1lT3duZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKLSAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAg
ICwgbV9jb250ZW50RnJhbWUoMCkKLSAgICAsIG1fc2FuZGJveEZsYWdzKFNhbmRib3hOb25lKQor
ICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpLCBPd25lcigpCiB7CiB9CiAKQEAg
LTYyLDQzICs2MCw0IEBAIHZvaWQgSFRNTEZyYW1lT3duZXJFbGVtZW50Ojp3aWxsUmVtb3ZlKCkK
ICAgICBIVE1MRWxlbWVudDo6d2lsbFJlbW92ZSgpOwogfQogCi1IVE1MRnJhbWVPd25lckVsZW1l
bnQ6On5IVE1MRnJhbWVPd25lckVsZW1lbnQoKQotewotICAgIGlmIChtX2NvbnRlbnRGcmFtZSkK
LSAgICAgICAgbV9jb250ZW50RnJhbWUtPmRpc2Nvbm5lY3RPd25lckVsZW1lbnQoKTsKLX0KLQot
RG9jdW1lbnQqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudERvY3VtZW50KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9jdW1lbnQo
KSA6IDA7Ci19Ci0KLURPTVdpbmRvdyogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2lu
ZG93KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFt
ZS0+ZG9tV2luZG93KCkgOiAwOwotfQotCi12b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2V0
U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykKLXsKLSAgICBpZiAobV9zYW5kYm94Rmxh
Z3MgPT0gZmxhZ3MpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc2FuZGJveEZsYWdzID0gZmxh
Z3M7Ci0KLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gY29udGVudEZyYW1lKCkpCi0gICAgICAgIGZy
YW1lLT5sb2FkZXIoKS0+b3duZXJFbGVtZW50U2FuZGJveEZsYWdzQ2hhbmdlZCgpOwotfQotCi0j
aWYgRU5BQkxFKFNWRykKLVNWR0RvY3VtZW50KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmdldFNW
R0RvY3VtZW50KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAotewotICAgIERvY3VtZW50KiBkb2Mg
PSBjb250ZW50RG9jdW1lbnQoKTsKLSAgICBpZiAoZG9jICYmIGRvYy0+aXNTVkdEb2N1bWVudCgp
KQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihkb2MpOwotICAgIC8v
IFNwZWM6IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9zdHJ1Y3QuaHRtbCNJbnRlcmZhY2VHZXRT
VkdEb2N1bWVudAotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgcmV0dXJuIDA7Ci19
Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lT3duZXJFbGVtZW50LmgKaW5kZXggZjc4NGY0Zi4uZTgyODkzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCkBAIC0yMyw2ICsyMyw4IEBA
CiAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJPd25lci5oIgorI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMzQsNDIgKzM2LDI0IEBAIGNsYXNzIFJlbmRlclBhcnQ7CiBj
bGFzcyBTVkdEb2N1bWVudDsKICNlbmRpZgogCi1jbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQg
OiBwdWJsaWMgSFRNTEVsZW1lbnQgeworY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50IDogcHVi
bGljIEhUTUxFbGVtZW50LCBwdWJsaWMgT3duZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgfkhU
TUxGcmFtZU93bmVyRWxlbWVudCgpOwotCi0gICAgRnJhbWUqIGNvbnRlbnRGcmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudEZyYW1lOyB9Ci0gICAgRE9NV2luZG93KiBjb250ZW50V2luZG93
KCkgY29uc3Q7Ci0gICAgRG9jdW1lbnQqIGNvbnRlbnREb2N1bWVudCgpIGNvbnN0OwotCiAgICAg
Ly8gTW9zdCBzdWJjbGFzc2VzIHVzZSBSZW5kZXJQYXJ0IChlaXRoZXIgUmVuZGVyRW1iZWRkZWRP
YmplY3Qgb3IgUmVuZGVySUZyYW1lKQogICAgIC8vIGV4Y2VwdCBmb3IgSFRNTE9iamVjdEVsZW1l
bnQgYW5kIEhUTUxFbWJlZEVsZW1lbnQgd2hpY2ggbWF5IHJldHVybiBhbnkKICAgICAvLyBSZW5k
ZXJPYmplY3Qgd2hlbiB1c2luZyBmYWxsYmFjayBjb250ZW50LgogICAgIFJlbmRlclBhcnQqIHJl
bmRlclBhcnQoKSBjb25zdDsKIAotI2lmIEVOQUJMRShTVkcpCi0gICAgU1ZHRG9jdW1lbnQqIGdl
dFNWR0RvY3VtZW50KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSNlbmRpZgotCiAgICAgdmlydHVh
bCBTY3JvbGxiYXJNb2RlIHNjcm9sbGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBTY3JvbGxiYXJB
dXRvOyB9CiAKLSAgICBTYW5kYm94RmxhZ3Mgc2FuZGJveEZsYWdzKCkgY29uc3QgeyByZXR1cm4g
bV9zYW5kYm94RmxhZ3M7IH0KLQogcHJvdGVjdGVkOgogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwogCi0gICAgdm9pZCBz
ZXRTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzKTsKLQogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVt
b3ZlKCk7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEZyYW1lOwogCiAgICAgdmlydHVh
bCBib29sIGlzRnJhbWVPd25lckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IHsg
cmV0dXJuIG1fY29udGVudEZyYW1lOyB9Ci0KLSAgICBGcmFtZSogbV9jb250ZW50RnJhbWU7Ci0g
ICAgU2FuZGJveEZsYWdzIG1fc2FuZGJveEZsYWdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Pd25lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL093bmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5hZjYxYjBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Pd25lci5j
cHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiT3duZXIuaCIKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJQYXJ0
LmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNs
dWRlICJTVkdEb2N1bWVudC5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworT3du
ZXI6Ok93bmVyKCkKKyAgICA6IG1fY29udGVudEZyYW1lKDApCisgICAgLCBtX3NhbmRib3hGbGFn
cyhTYW5kYm94Tm9uZSkKK3sKK30KKworT3duZXI6On5Pd25lcigpCit7CisgICAgaWYgKG1fY29u
dGVudEZyYW1lKQorICAgICAgICBtX2NvbnRlbnRGcmFtZS0+ZGlzY29ubmVjdE93bmVyRWxlbWVu
dCgpOworfQorCitEb2N1bWVudCogT3duZXI6OmNvbnRlbnREb2N1bWVudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRvY3VtZW50KCkgOiAw
OworfQorCitET01XaW5kb3cqIE93bmVyOjpjb250ZW50V2luZG93KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9tV2luZG93KCkgOiAwOwor
fQorCit2b2lkIE93bmVyOjpzZXRTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIGZsYWdzKQorewor
ICAgIGlmIChtX3NhbmRib3hGbGFncyA9PSBmbGFncykKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9zYW5kYm94RmxhZ3MgPSBmbGFnczsKKworICAgIGlmIChGcmFtZSogZnJhbWUgPSBjb250ZW50
RnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5vd25lckVsZW1lbnRTYW5kYm94Rmxh
Z3NDaGFuZ2VkKCk7Cit9CisKKyNpZiBFTkFCTEUoU1ZHKQorU1ZHRG9jdW1lbnQqIE93bmVyOjpn
ZXRTVkdEb2N1bWVudChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3sKKyAgICBEb2N1bWVudCog
ZG9jID0gY29udGVudERvY3VtZW50KCk7CisgICAgaWYgKGRvYyAmJiBkb2MtPmlzU1ZHRG9jdW1l
bnQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZG9jKTsKKyAg
ICAvLyBTcGVjOiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvc3RydWN0Lmh0bWwjSW50ZXJmYWNl
R2V0U1ZHRG9jdW1lbnQKKyAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgIHJldHVybiAw
OworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvT3duZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT3duZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDE1OGQ1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9Pd25lci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
CisgKi8KKworI2lmbmRlZiBPd25lcl9oCisjZGVmaW5lIE93bmVyX2gKKworI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV2luZG93OworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBG
cmFtZTsKK2NsYXNzIEtleWJvYXJkRXZlbnQ7CitjbGFzcyBRdWFsaWZpZWROYW1lOworY2xhc3Mg
UmVuZGVyUGFydDsKKworI2lmIEVOQUJMRShTVkcpCitjbGFzcyBTVkdEb2N1bWVudDsKKyNlbmRp
ZgorCitjbGFzcyBPd25lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+T3duZXIoKTsKKworICAg
IEZyYW1lKiBjb250ZW50RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRGcmFtZTsgfQor
ICAgIERPTVdpbmRvdyogY29udGVudFdpbmRvdygpIGNvbnN0OworICAgIERvY3VtZW50KiBjb250
ZW50RG9jdW1lbnQoKSBjb25zdDsKKworI2lmIEVOQUJMRShTVkcpCisgICAgU1ZHRG9jdW1lbnQq
IGdldFNWR0RvY3VtZW50KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyNlbmRpZgorCisgICAgU2Fu
ZGJveEZsYWdzIHNhbmRib3hGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzOyB9
CisKK3Byb3RlY3RlZDoKKyAgICBPd25lcigpOworCisgICAgdm9pZCBzZXRTYW5kYm94RmxhZ3Mo
U2FuZGJveEZsYWdzKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRnJhbWU7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3Qg
eyByZXR1cm4gbV9jb250ZW50RnJhbWU7IH0KKworICAgIEZyYW1lKiBtX2NvbnRlbnRGcmFtZTsK
KyAgICBTYW5kYm94RmxhZ3MgbV9zYW5kYm94RmxhZ3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBPd25lcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUmVzb3VyY2VPd25lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jl
c291cmNlT3duZXJFbGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45YjMyNTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jlc291
cmNlT3duZXJFbGVtZW50LmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZHUmVzb3Vy
Y2VPd25lckVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVy
LmgiCisjaW5jbHVkZSAiUmVuZGVyUGFydC5oIgorI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1ZHUmVzb3VyY2VPd25lckVsZW1lbnQ6OlNWR1Jlc291
cmNlT3duZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKKyAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpLCBPd25lcigpCit7
Cit9CisKK1JlbmRlclBhcnQqIFNWR1Jlc291cmNlT3duZXJFbGVtZW50OjpyZW5kZXJQYXJ0KCkg
Y29uc3QKK3sKKyAgICAvLyBIVE1MT2JqZWN0RWxlbWVudCBhbmQgSFRNTEVtYmVkRWxlbWVudCBt
YXkgcmV0dXJuIGFyYml0cmFyeSByZW5kZXJlcnMKKyAgICAvLyB3aGVuIHVzaW5nIGZhbGxiYWNr
IGNvbnRlbnQuCisgICAgaWYgKCFyZW5kZXJlcigpIHx8ICFyZW5kZXJlcigpLT5pc1JlbmRlclBh
cnQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHRvUmVuZGVyUGFydChyZW5kZXJl
cigpKTsKK30KKwordm9pZCBTVkdSZXNvdXJjZU93bmVyRWxlbWVudDo6d2lsbFJlbW92ZSgpCit7
CisgICAgLy8gRklYTUU6IEl0IGlzIHVuY2xlYXIgd2h5IHRoaXMgY2FuJ3QgYmUgbW92ZWQgdG8g
cmVtb3ZlZEZyb21Eb2N1bWVudCgpCisgICAgLy8gdGhpcyBpcyB0aGUgb25seSBpbXBsZW1lbnRh
dGlvbiBvZiB3aWxsUmVtb3ZlIGluIFdlYkNvcmUhCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGNv
bnRlbnRGcmFtZSgpKSB7CisgICAgICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdChmcmFtZSk7Cisg
ICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+ZnJhbWVEZXRhY2hlZCgpOworICAgICAgICBmcmFtZS0+
ZGlzY29ubmVjdE93bmVyRWxlbWVudCgpOworICAgIH0KKworICAgIFNWR0VsZW1lbnQ6OndpbGxS
ZW1vdmUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFNWRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZXNvdXJjZU93bmVyRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jlc291cmNlT3duZXJFbGVtZW50LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY4ZjJmNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZXNvdXJjZU93bmVyRWxlbWVudC5oCkBAIC0wLDAg
KzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBTVkdSZXNvdXJjZU93bmVyRWxlbWVu
dF9oCisjZGVmaW5lIFNWR1Jlc291cmNlT3duZXJFbGVtZW50X2gKKworI2luY2x1ZGUgIkZyYW1l
TG9hZGVyVHlwZXMuaCIKKyNpbmNsdWRlICJPd25lci5oIgorI2luY2x1ZGUgIlNWR0VsZW1lbnQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBET01XaW5kb3c7CitjbGFzcyBGcmFt
ZTsKK2NsYXNzIFJlbmRlclBhcnQ7CisKKyNpZiBFTkFCTEUoU1ZHKQorY2xhc3MgU1ZHRG9jdW1l
bnQ7CisjZW5kaWYKKworY2xhc3MgU1ZHUmVzb3VyY2VPd25lckVsZW1lbnQgOiBwdWJsaWMgU1ZH
RWxlbWVudCwgcHVibGljIE93bmVyIHsKK3B1YmxpYzoKKyAgICAvLyBNb3N0IHN1YmNsYXNzZXMg
dXNlIFJlbmRlclBhcnQgKGVpdGhlciBSZW5kZXJFbWJlZGRlZE9iamVjdCBvciBSZW5kZXJJRnJh
bWUpCisgICAgLy8gZXhjZXB0IGZvciBIVE1MT2JqZWN0RWxlbWVudCBhbmQgSFRNTEVtYmVkRWxl
bWVudCB3aGljaCBtYXkgcmV0dXJuIGFueQorICAgIC8vIFJlbmRlck9iamVjdCB3aGVuIHVzaW5n
IGZhbGxiYWNrIGNvbnRlbnQuCisgICAgUmVuZGVyUGFydCogcmVuZGVyUGFydCgpIGNvbnN0Owor
Citwcm90ZWN0ZWQ6CisgICAgU1ZHUmVzb3VyY2VPd25lckVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3Zl
KCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEZyYW1lOworCisgICAgdmlydHVhbCBi
b29sIGlzRnJhbWVPd25lckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTVkdSZXNvdXJjZU93bmVyRWxlbWVu
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggYThhMWNmOS4uMDlmOWEy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtMTIxLDggKzEyMSwxNCBA
QCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0
cikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KSkKKyAgICAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0
cikpIHsKKyAgICAgICAgICAgIGlmICghaHJlZigpLnN0YXJ0c1dpdGgoIiMiKSkgeworICAgICAg
ICAgICAgICAgIEtVUkwga3VybChkb2N1bWVudCgpLT5iYXNlVVJJKCksIGhyZWYoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKGt1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCisgICAgICAgICAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKiogVE9ETyhjdHJ1dGEpOiBsb2FkIHJlc291cmNl
IGZyb20gJXMgaW50byBtX2V4dGVybmFsUmVzb3VyY2VcbiIsIGt1cmwuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
ICAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKGF0dHIpOwogICAgIH0KIH0KQEAgLTEzMSw3ICsxMzcsOCBAQCB2b2lkIFNWR1VzZUVsZW1l
bnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9ucyBleGlz
dHMgdG8gYXNzdXJlIGFzc3VtcHRpb25zIG1hZGUgaW4gdGhlIGNvZGUgcmVnYXJkaW5nIFNWR0Vs
ZW1lbnRJbnN0YW5jZSBjcmVhdGlvbi9kZXN0cnVjdGlvbiBhcmUgc2F0aXNmaWVkLgogICAgIFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwotICAg
IEFTU0VSVCghbV90YXJnZXRFbGVtZW50SW5zdGFuY2UgfHwgKChkb2N1bWVudCgpLT5pc1NWR0Rv
Y3VtZW50KCkgfHwgZG9jdW1lbnQoKS0+aXNYSFRNTERvY3VtZW50KCkpICYmICFzdGF0aWNfY2Fz
dDxYTUxEb2N1bWVudFBhcnNlcio+KGRvY3VtZW50KCktPnBhcnNlcigpKS0+d2VsbEZvcm1lZCgp
KSk7CisgICAgRG9jdW1lbnQqIGRvYyA9IHJlZmVyZW5jZWREb2N1bWVudCgpOworICAgIEFTU0VS
VCghbV90YXJnZXRFbGVtZW50SW5zdGFuY2UgfHwgKChkb2MtPmlzU1ZHRG9jdW1lbnQoKSB8fCBk
b2MtPmlzWEhUTUxEb2N1bWVudCgpKSAmJiAhc3RhdGljX2Nhc3Q8WE1MRG9jdW1lbnRQYXJzZXIq
Pihkb2MtPnBhcnNlcigpKS0+d2VsbEZvcm1lZCgpKSk7CiAgICAgQVNTRVJUKCFtX2lzUGVuZGlu
Z1Jlc291cmNlKTsKIH0KIApAQCAtMTQxLDYgKzE0OCwxNCBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6
OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogICAgIGRldGFjaEluc3RhbmNlKCk7CiB9CiAKK0RvY3Vt
ZW50KiBTVkdVc2VFbGVtZW50OjpyZWZlcmVuY2VkRG9jdW1lbnQoKSBjb25zdAoreworICAgIGlm
IChocmVmKCkuc3RhcnRzV2l0aCgiIyIpKQorICAgICAgICByZXR1cm4gZG9jdW1lbnQoKTsKKyAg
ICBmcHJpbnRmKHN0ZGVyciwgIioqIFRPRE8oY3RydXRhKTogcmV0dXJuIG1fZXh0ZXJuYWxSZXNv
dXJjZS5kb2N1bWVudCgpXG4iKTsKKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBTVkdVc2VFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ewogICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJOYW1lKTsKQEAgLTQ1Niw4ICs0NzEsMTIgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpidWls
ZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgLy8gSWYgd2UncmUgY2FsbGVkIHRoZSBmaXJzdCB0aW1l
IChkdXJpbmcgc2hhZG93IHRyZWUgcm9vdCBjcmVhdGlvbiBmcm9tIFJlbmRlclNWR1NoYWRvd1Ry
ZWVSb290Q29udGFpbmVyKQogICAgIC8vIHdlIGVpdGhlciBkZXRlcm1pbmUgdGhhdCBvdXIgdGFy
Z2V0IGlzIGF2YWlsYWJsZSBvciBub3QgLSB0aGVuIHdlIGFkZCBvdXJzZWx2ZXMgdG8gdGhlIHBl
bmRpbmcgcmVzb3VyY2UgbGlzdAogICAgIC8vIE9uY2UgdGhlIHBlbmRpbmcgcmVzb3VyY2UgYXBw
ZWFycywgaXQgd2lsbCBjYWxsIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCksIHNvIHdlJ3JlIGNhbGxl
ZCBhIHNlY29uZCB0aW1lLgorICAgIERvY3VtZW50KiBkb2MgPSByZWZlcmVuY2VkRG9jdW1lbnQo
KTsKKyAgICBpZiAoIWRvYykKKyAgICAgICAgcmV0dXJuOworCiAgICAgU3RyaW5nIGlkID0gU1ZH
VVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQoaHJlZigpKTsKLSAgICBFbGVtZW50KiB0YXJnZXRFbGVt
ZW50ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoaWQpOworICAgIEVsZW1lbnQqIHRhcmdl
dEVsZW1lbnQgPSBkb2MtPmdldEVsZW1lbnRCeUlkKGlkKTsKICAgICBBU1NFUlQoIW1fdGFyZ2V0
RWxlbWVudEluc3RhbmNlKTsKIAogICAgIGlmICghdGFyZ2V0RWxlbWVudCkgewpAQCAtNTAwLDcg
KzUxOSwxMCBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1aWxkU2hhZG93QW5kSW5zdGFuY2VUcmVl
KFNWR1NoYWRvd1RyZWVSb290RWxlbWVudCogc2hhZG93UgogICAgIFNoYWRvd1RyZWVVcGRhdGVC
bG9ja2VyIGJsb2NrZXIodGhpcyk7CiAKICAgICBTdHJpbmcgaWQgPSBTVkdVUklSZWZlcmVuY2U6
OmdldFRhcmdldChocmVmKCkpOwotICAgIEVsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBkb2N1bWVu
dCgpLT5nZXRFbGVtZW50QnlJZChpZCk7CisgICAgRG9jdW1lbnQqIGRvYyA9IHJlZmVyZW5jZWRE
b2N1bWVudCgpOworICAgIGlmICghZG9jKQorICAgICAgICByZXR1cm47CisgICAgRWxlbWVudCog
dGFyZ2V0RWxlbWVudCA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQoaWQpOwogICAgIGlmICghdGFyZ2V0
RWxlbWVudCkgewogICAgICAgICAvLyBUaGUgb25seSB0aW1lIHdlIHNob3VsZCBnZXQgaGVyZSBp
cyB3aGVuIHRoZSB1c2UgZWxlbWVudCBoYXMgbm90IGJlZW4KICAgICAgICAgLy8gZ2l2ZW4gYSBy
ZXNvdXJjZSB0byB0YXJnZXQuCkBAIC03NDksOCArNzcxLDEyIEBAIHZvaWQgU1ZHVXNlRWxlbWVu
dDo6YnVpbGRJbnN0YW5jZVRyZWUoU1ZHRWxlbWVudCogdGFyZ2V0LCBTVkdFbGVtZW50SW5zdGFu
Y2UqIHRhCiAKIGJvb2wgU1ZHVXNlRWxlbWVudDo6aGFzQ3ljbGVVc2VSZWZlcmVuY2luZyhTVkdV
c2VFbGVtZW50KiB1c2UsIFNWR0VsZW1lbnRJbnN0YW5jZSogdGFyZ2V0SW5zdGFuY2UsIFNWR0Vs
ZW1lbnQqJiBuZXdUYXJnZXQpCiB7CisgICAgRG9jdW1lbnQqIGRvYyA9IHJlZmVyZW5jZWREb2N1
bWVudCgpOworICAgIGlmICghZG9jKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBTdHJp
bmcgaWQgPSBTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdldCh1c2UtPmhyZWYoKSk7Ci0gICAgRWxl
bWVudCogdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKGlkKTsgCisg
ICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQoaWQpOwogICAg
IG5ld1RhcmdldCA9IDA7CiAgICAgaWYgKHRhcmdldEVsZW1lbnQgJiYgdGFyZ2V0RWxlbWVudC0+
aXNTVkdFbGVtZW50KCkpCiAgICAgICAgIG5ld1RhcmdldCA9IHN0YXRpY19jYXN0PFNWR0VsZW1l
bnQqPih0YXJnZXRFbGVtZW50KTsKQEAgLTgzMCwxNSArODU2LDE4IEBAIHZvaWQgU1ZHVXNlRWxl
bWVudDo6ZXhwYW5kVXNlRWxlbWVudHNJblNoYWRvd1RyZWUoU1ZHU2hhZG93VHJlZVJvb3RFbGVt
ZW50KiBzaGFkCiAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnVzZVRhZykp
IHsKICAgICAgICAgU1ZHVXNlRWxlbWVudCogdXNlID0gc3RhdGljX2Nhc3Q8U1ZHVXNlRWxlbWVu
dCo+KGVsZW1lbnQpOwogCisgICAgICAgIERvY3VtZW50KiBkb2MgPSByZWZlcmVuY2VkRG9jdW1l
bnQoKTsKKyAgICAgICAgQVNTRVJUKGRvYyk7CisKICAgICAgICAgU3RyaW5nIGlkID0gU1ZHVVJJ
UmVmZXJlbmNlOjpnZXRUYXJnZXQodXNlLT5ocmVmKCkpOwotICAgICAgICBFbGVtZW50KiB0YXJn
ZXRFbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoaWQpOyAKKyAgICAgICAgRWxl
bWVudCogdGFyZ2V0RWxlbWVudCA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQoaWQpOwogICAgICAgICBT
VkdFbGVtZW50KiB0YXJnZXQgPSAwOwogICAgICAgICBpZiAodGFyZ2V0RWxlbWVudCAmJiB0YXJn
ZXRFbGVtZW50LT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgICAgIHRhcmdldCA9IHN0YXRpY19j
YXN0PFNWR0VsZW1lbnQqPih0YXJnZXRFbGVtZW50KTsKIAogICAgICAgICAvLyBEb24ndCBBU1NF
UlQodGFyZ2V0KSBoZXJlLCBpdCBtYXkgYmUgInBlbmRpbmciLCB0b28uCiAgICAgICAgIC8vIFNl
dHVwIHN1Yi1zaGFkb3cgdHJlZSByb290IG5vZGUKLSAgICAgICAgUmVmUHRyPFNWR1NoYWRvd1Ry
ZWVDb250YWluZXJFbGVtZW50PiBjbG9uZVBhcmVudCA9IFNWR1NoYWRvd1RyZWVDb250YWluZXJF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgICAgIFJlZlB0cjxTVkdTaGFkb3dUcmVl
Q29udGFpbmVyRWxlbWVudD4gY2xvbmVQYXJlbnQgPSBTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxl
bWVudDo6Y3JlYXRlKGRvYyk7CiAgICAgICAgIHVzZS0+Y2xvbmVDaGlsZE5vZGVzKGNsb25lUGFy
ZW50LmdldCgpKTsKIAogICAgICAgICAvLyBTcGVjOiBJbiB0aGUgZ2VuZXJhdGVkIGNvbnRlbnQs
IHRoZSAndXNlJyB3aWxsIGJlIHJlcGxhY2VkIGJ5ICdnJywgd2hlcmUgYWxsIGF0dHJpYnV0ZXMg
ZnJvbSB0aGUKQEAgLTg4MywxMyArOTEyLDE2IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6ZXhwYW5k
VXNlRWxlbWVudHNJblNoYWRvd1RyZWUoU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50KiBzaGFkCiB2
b2lkIFNWR1VzZUVsZW1lbnQ6OmV4cGFuZFN5bWJvbEVsZW1lbnRzSW5TaGFkb3dUcmVlKFNWR1No
YWRvd1RyZWVSb290RWxlbWVudCogc2hhZG93Um9vdCwgTm9kZSogZWxlbWVudCkKIHsKICAgICBp
ZiAoZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3ltYm9sVGFnKSkgeworICAgICAgICBE
b2N1bWVudCogZG9jID0gcmVmZXJlbmNlZERvY3VtZW50KCk7CisgICAgICAgIEFTU0VSVChkb2Mp
OworCiAgICAgICAgIC8vIFNwZWM6IFRoZSByZWZlcmVuY2VkICdzeW1ib2wnIGFuZCBpdHMgY29u
dGVudHMgYXJlIGRlZXAtY2xvbmVkIGludG8gdGhlIGdlbmVyYXRlZCB0cmVlLAogICAgICAgICAv
LyB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCB0aGUgJ3N5bWJvbCcgaXMgcmVwbGFjZWQgYnkgYW4g
J3N2ZycuIFRoaXMgZ2VuZXJhdGVkICdzdmcnIHdpbGwKICAgICAgICAgLy8gYWx3YXlzIGhhdmUg
ZXhwbGljaXQgdmFsdWVzIGZvciBhdHRyaWJ1dGVzIHdpZHRoIGFuZCBoZWlnaHQuIElmIGF0dHJp
YnV0ZXMgd2lkdGggYW5kL29yCiAgICAgICAgIC8vIGhlaWdodCBhcmUgcHJvdmlkZWQgb24gdGhl
ICd1c2UnIGVsZW1lbnQsIHRoZW4gdGhlc2UgYXR0cmlidXRlcyB3aWxsIGJlIHRyYW5zZmVycmVk
IHRvCiAgICAgICAgIC8vIHRoZSBnZW5lcmF0ZWQgJ3N2ZycuIElmIGF0dHJpYnV0ZXMgd2lkdGgg
YW5kL29yIGhlaWdodCBhcmUgbm90IHNwZWNpZmllZCwgdGhlIGdlbmVyYXRlZAogICAgICAgICAv
LyAnc3ZnJyBlbGVtZW50IHdpbGwgdXNlIHZhbHVlcyBvZiAxMDAlIGZvciB0aGVzZSBhdHRyaWJ1
dGVzLgotICAgICAgICBSZWZQdHI8U1ZHU1ZHRWxlbWVudD4gc3ZnRWxlbWVudCA9IFNWR1NWR0Vs
ZW1lbnQ6OmNyZWF0ZShTVkdOYW1lczo6c3ZnVGFnLCBkb2N1bWVudCgpKTsKKyAgICAgICAgUmVm
UHRyPFNWR1NWR0VsZW1lbnQ+IHN2Z0VsZW1lbnQgPSBTVkdTVkdFbGVtZW50OjpjcmVhdGUoU1ZH
TmFtZXM6OnN2Z1RhZywgZG9jKTsKIAogICAgICAgICAvLyBUcmFuc2ZlciBhbGwgYXR0cmlidXRl
cyBmcm9tIDxzeW1ib2w+IHRvIHRoZSBuZXcgPHN2Zz4gZWxlbWVudAogICAgICAgICBzdmdFbGVt
ZW50LT5hdHRyaWJ1dGVzKCktPnNldEF0dHJpYnV0ZXMoKmVsZW1lbnQtPmF0dHJpYnV0ZXMoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAppbmRleCAxMGM5YmU5Li42NzcxMDBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKQEAgLTU4LDYgKzU4LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBidWlsZFBlbmRpbmdSZXNv
dXJjZSgpOworICAgIERvY3VtZW50KiByZWZlcmVuY2VkRG9jdW1lbnQoKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86746</attachid>
            <date>2011-03-23 23:23:39 -0700</date>
            <delta_ts>2011-04-23 02:17:50 -0700</delta_ts>
            <desc>Draft patch, asking for review</desc>
            <filename>wk12499.diff.submit</filename>
            <type>text/plain</type>
            <size>31221</size>
            <attacher name="Cosmin Truta">ctruta</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzOGYyNzdkLi5kZGY5OGVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMt
MjMgIENvc21pbiBUcnV0YSAgPGN0cnV0YUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0ZXJuYWwgPHVzZT4geGxpbms6aHJlZiBy
ZWZlcmVuY2VzIGRvIG5vdCB3b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjQ5OQorCisgICAgICAgICogc3ZnL2N1c3RvbS9yZXNvdXJjZXMvcmdi
LnN2ZzogV3JhcHBlZCA8cmVjdD4gZWxlbWVudHMgaW4gPGc+IGFuZCBhZGRlZCBpZCBhdHRyaWJ1
dGVzLgorICAgICAgICAqIHN2Zy9jdXN0b20vdXNlLWV4dGVybi1ocmVmLWV4cGVjdGVkLmNoZWNr
c3VtOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL3VzZS1leHRlcm4taHJlZi1leHBlY3Rl
ZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20vdXNlLWV4dGVybi1ocmVmLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS91c2UtZXh0ZXJuLWhyZWYuc3Zn
OiBBZGRlZC4KKwogMjAxMS0wMy0yMyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtRdF0gVXBkYXRlIGV4cGVjdGVkIGZpbGVzIGFmdGVyIHI4MTY4NC4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcmVzb3VyY2VzL3JnYi5zdmcgYi9M
YXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy9yZ2Iuc3ZnCmluZGV4IGRjNTU4MTYuLjFj
NTk0Y2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcmVzb3VyY2VzL3JnYi5z
dmcKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvcmdiLnN2ZwpAQCAtMSw1
ICsxLDcgQEAKLTxzdmcgd2lkdGg9IjE5MiIgaGVpZ2h0PSI2NCIgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIj4KLSAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjY0IiBoZWlnaHQ9
IjY0IiBmaWxsPSIjYzAwIi8+Ci0gIDxyZWN0IHg9IjY0IiB5PSIwIiB3aWR0aD0iNjQiIGhlaWdo
dD0iNjQiIGZpbGw9IiMwOTAiLz4KLSAgPHJlY3QgeD0iMTI4IiB5PSIwIiB3aWR0aD0iNjQiIGhl
aWdodD0iNjQiIGZpbGw9IiMwMGYiLz4KKzxzdmcgaWQ9InN2Zy1yb290IiB3aWR0aD0iMTkyIiBo
ZWlnaHQ9IjY0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICA8ZyBpZD0i
UkdCIj4KKyAgICA8cmVjdCBpZD0iUiIgeD0iMCIgeT0iMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0
IiBmaWxsPSIjYzAwIi8+CisgICAgPHJlY3QgaWQ9IkciIHg9IjY0IiB5PSIwIiB3aWR0aD0iNjQi
IGhlaWdodD0iNjQiIGZpbGw9IiMwOTAiLz4KKyAgICA8cmVjdCBpZD0iQiIgeD0iMTI4IiB5PSIw
IiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIGZpbGw9IiMwMGYiLz4KKyAgPC9nPgogPC9zdmc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1leHRlcm4taHJlZi1leHBlY3Rl
ZC5jaGVja3N1bSBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWV4dGVybi1ocmVmLWV4cGVj
dGVkLmNoZWNrc3VtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3OWI0ZDIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1leHRlcm4taHJl
Zi1leHBlY3RlZC5jaGVja3N1bQpAQCAtMCwwICsxIEBACiszNjUxNzg3OWYzYTEwNTA3NGZhYWM1
Y2RkMjRiNWIwNQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWV4dGVybi1ocmVmLWV4cGVjdGVkLnBuZyBiL0xheW91dFRl
c3RzL3N2Zy9jdXN0b20vdXNlLWV4dGVybi1ocmVmLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
OGJiNjQ3MTU4NTczOThmNGE1MDA0MGI3MGVhYTkzNzZmNzJhNGFiCkdJVCBiaW5hcnkgcGF0Y2gK
bGl0ZXJhbCAyODU0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5q
TCVhSn1fKGFTVy1MXlkldHk/X21jSwp6bVY9KVlqbnRGNW1LUmhwWnA+WXE2Uko0bHs1Nl5UYF9y
eE1jWj0pbk84ZWZWYHVXWEloSng8QGNiT1ImP3p0cn0Kekc4fHpNVntxXnBXZ3JFQG47QTNqTjs1
RlQ5Y15aMTVEPD1GVUAmWVhuXzt+VjgxUG84cTBofWY4c3hhci1EdWJrCnpUIXk0KCppKUVvTXp4
YiY7KjE4fVh3WHFvVn53VnQoZXlKbyk2Wns0PikkZG43WVVfWjFoIyh9SllEQDwpO1QzSwpGMFJT
fks7clJkbgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS91c2UtZXh0ZXJuLWhyZWYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3Zn
L2N1c3RvbS91c2UtZXh0ZXJuLWhyZWYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmJjNjZiODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL3VzZS1leHRlcm4taHJlZi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyU1ZHUm9vdCB7c3Zn
fSBhdCAoMCwwKSBzaXplIDE5MngyMjQKKyAgICBSZW5kZXJTVkdDb250YWluZXIge3VzZX0gYXQg
KDAsMCkgc2l6ZSAxOTJ4NjQKKyAgICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDAsMCkg
c2l6ZSAxOTJ4NjQKKyAgICAgICAgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIge3N2Z30gYXQg
KDAsMCkgc2l6ZSAxOTJ4NjQKKyAgICAgICAgICBSZW5kZXJTVkdDb250YWluZXIge2d9IGF0ICgw
LDApIHNpemUgMTkyeDY0CisgICAgICAgICAgICBSZW5kZXJTVkdQYXRoIHtyZWN0fSBhdCAoMCww
KSBzaXplIDY0eDY0IFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSNDQzAwMDBdfV0gW3g9MC4w
MF0gW3k9MC4wMF0gW3dpZHRoPTY0LjAwXSBbaGVpZ2h0PTY0LjAwXQorICAgICAgICAgICAgUmVu
ZGVyU1ZHUGF0aCB7cmVjdH0gYXQgKDY0LDApIHNpemUgNjR4NjQgW2ZpbGw9e1t0eXBlPVNPTElE
XSBbY29sb3I9IzAwOTkwMF19XSBbeD02NC4wMF0gW3k9MC4wMF0gW3dpZHRoPTY0LjAwXSBbaGVp
Z2h0PTY0LjAwXQorICAgICAgICAgICAgUmVuZGVyU1ZHUGF0aCB7cmVjdH0gYXQgKDEyOCwwKSBz
aXplIDY0eDY0IFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwRkZdfV0gW3g9MTI4LjAw
XSBbeT0wLjAwXSBbd2lkdGg9NjQuMDBdIFtoZWlnaHQ9NjQuMDBdCisgICAgUmVuZGVyU1ZHQ29u
dGFpbmVyIHt1c2V9IGF0ICgwLDgwKSBzaXplIDE5Mng2NAorICAgICAgUmVuZGVyU1ZHQ29udGFp
bmVyIHtnfSBhdCAoMCw4MCkgc2l6ZSAxOTJ4NjQgW3RyYW5zZm9ybT17bT0oKDEuMDAsMC4wMCko
MC4wMCwxLjAwKSkgdD0oMC4wMCw4MC4wMCl9XQorICAgICAgICBSZW5kZXJTVkdDb250YWluZXIg
e2d9IGF0ICgwLDgwKSBzaXplIDE5Mng2NAorICAgICAgICAgIFJlbmRlclNWR1BhdGgge3JlY3R9
IGF0ICgwLDgwKSBzaXplIDY0eDY0IFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSNDQzAwMDBd
fV0gW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRoPTY0LjAwXSBbaGVpZ2h0PTY0LjAwXQorICAgICAg
ICAgIFJlbmRlclNWR1BhdGgge3JlY3R9IGF0ICg2NCw4MCkgc2l6ZSA2NHg2NCBbZmlsbD17W3R5
cGU9U09MSURdIFtjb2xvcj0jMDA5OTAwXX1dIFt4PTY0LjAwXSBbeT0wLjAwXSBbd2lkdGg9NjQu
MDBdIFtoZWlnaHQ9NjQuMDBdCisgICAgICAgICAgUmVuZGVyU1ZHUGF0aCB7cmVjdH0gYXQgKDEy
OCw4MCkgc2l6ZSA2NHg2NCBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDAwMEZGXX1dIFt4
PTEyOC4wMF0gW3k9MC4wMF0gW3dpZHRoPTY0LjAwXSBbaGVpZ2h0PTY0LjAwXQorICAgIFJlbmRl
clNWR0NvbnRhaW5lciB7dXNlfSBhdCAoMCwxNjApIHNpemUgNjR4NjQKKyAgICAgIFJlbmRlclNW
R0NvbnRhaW5lciB7Z30gYXQgKDAsMTYwKSBzaXplIDY0eDY0IFt0cmFuc2Zvcm09e209KCgxLjAw
LDAuMDApKDAuMDAsMS4wMCkpIHQ9KDAuMDAsMTYwLjAwKX1dCisgICAgICAgIFJlbmRlclNWR1Bh
dGgge3JlY3R9IGF0ICgwLDE2MCkgc2l6ZSA2NHg2NCBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xv
cj0jQ0MwMDAwXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD02NC4wMF0gW2hlaWdodD02NC4w
MF0KKyAgICBSZW5kZXJTVkdDb250YWluZXIge3VzZX0gYXQgKDY0LDE2MCkgc2l6ZSA2NHg2NAor
ICAgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoNjQsMTYwKSBzaXplIDY0eDY0IFt0cmFu
c2Zvcm09e209KCgxLjAwLDAuMDApKDAuMDAsMS4wMCkpIHQ9KDAuMDAsMTYwLjAwKX1dCisgICAg
ICAgIFJlbmRlclNWR1BhdGgge3JlY3R9IGF0ICg2NCwxNjApIHNpemUgNjR4NjQgW2ZpbGw9e1t0
eXBlPVNPTElEXSBbY29sb3I9IzAwOTkwMF19XSBbeD02NC4wMF0gW3k9MC4wMF0gW3dpZHRoPTY0
LjAwXSBbaGVpZ2h0PTY0LjAwXQorICAgIFJlbmRlclNWR0NvbnRhaW5lciB7dXNlfSBhdCAoMTI4
LDE2MCkgc2l6ZSA2NHg2NAorICAgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoMTI4LDE2
MCkgc2l6ZSA2NHg2NCBbdHJhbnNmb3JtPXttPSgoMS4wMCwwLjAwKSgwLjAwLDEuMDApKSB0PSgw
LjAwLDE2MC4wMCl9XQorICAgICAgICBSZW5kZXJTVkdQYXRoIHtyZWN0fSBhdCAoMTI4LDE2MCkg
c2l6ZSA2NHg2NCBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDAwMEZGXX1dIFt4PTEyOC4w
MF0gW3k9MC4wMF0gW3dpZHRoPTY0LjAwXSBbaGVpZ2h0PTY0LjAwXQorICAgIFJlbmRlclNWR0Nv
bnRhaW5lciB7dXNlfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgUmVuZGVyU1ZHQ29udGFpbmVy
IHtnfSBhdCAoMCwwKSBzaXplIDB4MAorICAgIFJlbmRlclNWR0NvbnRhaW5lciB7dXNlfSBhdCAo
MCwwKSBzaXplIDB4MAorICAgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoMCwwKSBzaXpl
IDB4MAorICAgIFJlbmRlclNWR0NvbnRhaW5lciB7dXNlfSBhdCAoMCwwKSBzaXplIDB4MAorICAg
ICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoMCwwKSBzaXplIDB4MApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtZXh0ZXJuLWhyZWYuc3ZnIGIvTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS91c2UtZXh0ZXJuLWhyZWYuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjExYjhkMjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3Vz
dG9tL3VzZS1leHRlcm4taHJlZi5zdmcKQEAgLTAsMCArMSwxMSBAQAorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIj4KKyAgPHVzZSB4bGluazpocmVmPSJyZXNvdXJjZXMvcmdiLnN2ZyNzdmctcm9v
dCIvPgorICA8dXNlIHk9IjgwIiB4bGluazpocmVmPSJyZXNvdXJjZXMvcmdiLnN2ZyNSR0IiLz4K
KyAgPHVzZSB5PSIxNjAiIHhsaW5rOmhyZWY9InJlc291cmNlcy9yZ2Iuc3ZnI1IiLz4KKyAgPHVz
ZSB5PSIxNjAiIHhsaW5rOmhyZWY9InJlc291cmNlcy9yZ2Iuc3ZnI0ciLz4KKyAgPHVzZSB5PSIx
NjAiIHhsaW5rOmhyZWY9InJlc291cmNlcy9yZ2Iuc3ZnI0IiLz4KKyAgPCEtLSBUaGUgZm9sbG93
aW5nIGVsZW1lbnRzIHNoYWxsIG5vdCBiZSBkaXNwbGF5ZWQuIC0tPgorICA8dXNlIHk9IjI0MCIg
eGxpbms6aHJlZj0icmVzb3VyY2VzL3JnYi5zdmciLz4KKyAgPHVzZSB5PSIyNDAiIHhsaW5rOmhy
ZWY9InJlc291cmNlcy9yZ2Iuc3ZnI01JU1NJTkciLz4KKyAgPHVzZSB5PSIyNDAiIHhsaW5rOmhy
ZWY9InJlc291cmNlcy9NSVNTSU5HLnN2ZyNNSVNTSU5HIi8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBjYWI1OGNlLi5lOGY0YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDMt
MjMgIENvc21pbiBUcnV0YSAgPGN0cnV0YUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0ZXJuYWwgPHVzZT4geGxpbms6aHJlZiBy
ZWZlcmVuY2VzIGRvIG5vdCB3b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjQ5OQorCisgICAgICAgIEFkZCBhIG5ldyBjbGFzcyBDYWNoZWREb2N1
bWVudCB0byBoYW5kbGUgZG9jdW1lbnQgc3VicmVzb3VyY2VzLgorICAgICAgICAoQ3VycmVudGx5
IGl0IG9ubHkgbmVlZHMgdG8gaGFuZGxlIFNWRyBkb2N1bWVudHMuKQorICAgICAgICBBbiBpbnN0
YW5jZSBvZiB0aGlzIGNsYXNzIGlzIGEgbWVtYmVyIGluIFNWR1VzZUVsZW1lbnQuCisKKyAgICAg
ICAgVGVzdDogc3ZnL2N1c3RvbS91c2UtZXh0ZXJuLWhyZWYuc3ZnCisKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkRG9jdW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkRG9jdW1lbnQuaDogQWRkZWQuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRQcmlvcml0eUZvclJlc291
cmNlVHlwZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZUNsaWVudDo6c2V0U1ZHRG9jdW1lbnQpOiBBZGRlZC4KKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RTVkdEb2N1bWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkUmVzb3VyY2VUeXBlVG9U
YXJnZXRUeXBlKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1VzZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1VzZUVsZW1lbnQ6OnJlZmVyZW5jZWREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdVc2VFbGVtZW50OjpzZXRTVkdEb2N1bWVudCk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1l
bnQuaDoKKwogMjAxMS0wMy0yMyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDY3NzhlNTYuLjYyZDNjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yMDcy
LDYgKzIwNzIsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuaCBcCisJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZERvY3VtZW50LmNwcCBcCisJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZERvY3Vt
ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBcCiAJU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOWJm
NTdiMS4uMzZjMWFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzI5NSw2ICszMjk1LDggQEAKICAg
ICAgICAgICAgICdsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlTWFjLm1tJywKICAg
ICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAnLAogICAgICAg
ICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgnLAorICAgICAgICAgICAg
J2xvYWRlci9jYWNoZS9DYWNoZWREb2N1bWVudC5jcHAnLAorICAgICAgICAgICAgJ2xvYWRlci9j
YWNoZS9DYWNoZWREb2N1bWVudC5oJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgnLAogICAg
ICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRl
eCAyYTkzNDA3Li5lZjcxMDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
bworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtODMzLDYgKzgzMyw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24u
Y3BwIFwKICAgICBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIFwKICAgICBsb2FkZXIvY2Fj
aGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgXAorICAgIGxvYWRlci9jYWNoZS9DYWNoZWREb2N1
bWVudC5jcHAgXAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBcCiAgICAgbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
Q2xpZW50V2Fsa2VyLmNwcCBcCkBAIC0xNzYxLDYgKzE3NjIsNyBAQCBIRUFERVJTICs9IFwKICAg
ICBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmggXAogICAgIGxvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5oIFwKKyAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkRG9jdW1lbnQuaCBcCiAgICAg
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmggXAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWREb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRG9jdW1lbnQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlN2E1N2QKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRG9jdW1lbnQuY3BwCkBAIC0wLDAgKzEs
MTA3IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMCBSb2IgQnVpcyA8cndsYnVpc0BnbWFp
bC5jb20+CisgICAgQ29weXJpZ2h0IChDKSAyMDExIENvc21pbiBUcnV0YSA8Y3RydXRhQGdtYWls
LmNvbT4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorLy8gQ3Vy
cmVudGx5LCB3ZSBvbmx5IG5lZWQgQ2FjaGVkRG9jdW1lbnQgZm9yIFNWRyBkb2N1bWVudHMuCisK
KyNpbmNsdWRlICJDYWNoZWREb2N1bWVudC5oIgorCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VD
bGllbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgorI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24u
aCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0NhY2hlZERvY3VtZW50OjpDYWNoZWREb2N1bWVudChjb25z
dCBTdHJpbmcgJnVybCkKKyAgICA6IENhY2hlZFJlc291cmNlKHVybCwgRG9jdW1lbnRSZXNvdXJj
ZSkKKyAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0
aW9uL3htbCIpKQoreworICAgIHNldEFjY2VwdCgiaW1hZ2Uvc3ZnK3htbCIpOworfQorCitDYWNo
ZWREb2N1bWVudDo6fkNhY2hlZERvY3VtZW50KCkKK3sKK30KKwordm9pZCBDYWNoZWREb2N1bWVu
dDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50ICpjKQoreworICAgIGlmICghaXNM
b2FkaW5nKCkpCisgICAgICAgIGMtPnNldFNWR0RvY3VtZW50KG1fdXJsLCBtX3Jlc3BvbnNlLnVy
bCgpLCBkb2N1bWVudCgpKTsKK30KKwordm9pZCBDYWNoZWREb2N1bWVudDo6c2V0RW5jb2Rpbmco
Y29uc3QgU3RyaW5nJiBjaHMpCit7CisgICAgbV9kZWNvZGVyLT5zZXRFbmNvZGluZyhjaHMsIFRl
eHRSZXNvdXJjZURlY29kZXI6OkVuY29kaW5nRnJvbUhUVFBIZWFkZXIpOworfQorCitTdHJpbmcg
Q2FjaGVkRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kZWNvZGVy
LT5lbmNvZGluZygpLm5hbWUoKTsKK30KKwordm9pZCBDYWNoZWREb2N1bWVudDo6ZGF0YShQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAg
aWYgKCFhbGxEYXRhUmVjZWl2ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVCghbV9k
b2N1bWVudCk7CisgICAgbV9kb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUoLyptX3JlcXVlc3Qt
PmRvY0xvYWRlcigpLT5mcmFtZSgpKi8wLCBLVVJMKCkpOworICAgIC8vIEZJWE1FOiB0aGlzIHNo
b3VsZCBub3QgYmUgU1ZHLXNwZWNpZmljLiBUcnkgRG9jdW1lbnQ6OmNyZWF0ZS4KKyAgICBtX2Rh
dGEgPSBkYXRhOworCisgICAgU3RyaW5nIGRlY29kZWRUZXh0OworICAgIGlmIChtX2RhdGEpIHsK
KyAgICAgICAgZGVjb2RlZFRleHQgPSBtX2RlY29kZXItPmRlY29kZShtX2RhdGEtPmRhdGEoKSwg
bV9kYXRhLT5zaXplKCkpOworICAgICAgICBkZWNvZGVkVGV4dCArPSBtX2RlY29kZXItPmZsdXNo
KCk7CisgICAgfQorCisgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVkVGV4dCk7Cisg
ICAgc2V0TG9hZGluZyhmYWxzZSk7CisgICAgY2hlY2tOb3RpZnkoKTsKK30KKwordm9pZCBDYWNo
ZWREb2N1bWVudDo6Y2hlY2tOb3RpZnkoKQoreworICAgIGlmIChpc0xvYWRpbmcoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIgdyhtX2NsaWVudHMp
OworICAgIHdoaWxlIChDYWNoZWRSZXNvdXJjZUNsaWVudCAqYyA9IHcubmV4dCgpKQorICAgICAg
ICBjLT5zZXRTVkdEb2N1bWVudChtX3VybCwgbV9yZXNwb25zZS51cmwoKSwgZG9jdW1lbnQoKSk7
Cit9CisKK3ZvaWQgQ2FjaGVkRG9jdW1lbnQ6OmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMg
c3RhdHVzKQoreworICAgIHNldFN0YXR1cyhzdGF0dXMpOworICAgIEFTU0VSVChlcnJvck9jY3Vy
cmVkKCkpOworICAgIHNldExvYWRpbmcoZmFsc2UpOworICAgIGNoZWNrTm90aWZ5KCk7Cit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWREb2N1bWVu
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2YjlhZWIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRG9jdW1lbnQuaApA
QCAtMCwwICsxLDU4IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMCBSb2IgQnVpcyA8cnds
YnVpc0BnbWFpbC5jb20+CisgICAgQ29weXJpZ2h0IChDKSAyMDExIENvc21pbiBUcnV0YSA8Y3Ry
dXRhQGdtYWlsLmNvbT4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIENhY2hlZERvY3VtZW50X2gKKyNkZWZpbmUgQ2Fj
aGVkRG9jdW1lbnRfaAorCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKK2NsYXNzIERvY3VtZW50
OworY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKKworY2xhc3MgQ2FjaGVkRG9jdW1lbnQgOiBw
dWJsaWMgQ2FjaGVkUmVzb3VyY2UgeworcHVibGljOgorICAgIENhY2hlZERvY3VtZW50KGNvbnN0
IFN0cmluZyYgdXJsKTsKKyAgICB2aXJ0dWFsIH5DYWNoZWREb2N1bWVudCgpOworCisgICAgRG9j
dW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQorCisg
ICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOworCisg
ICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGRhdGEoUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CisKKyAgICB2aXJ0dWFsIGJvb2wg
c2NoZWR1bGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2b2lkIGNoZWNrTm90aWZ5
KCk7CisKK3Byb3RlY3RlZDoKKyAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAg
UmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2RhdGE7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNjZlNTg5ZS4uNTE0YmRlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC01
Nyw2ICs1NywxMCBAQCBzdGF0aWMgUmVzb3VyY2VMb2FkUHJpb3JpdHkgZGVmYXVsdFByaW9yaXR5
Rm9yUmVzb3VyY2VUeXBlKENhY2hlZFJlc291cmNlOjpUeXBlCiAjZW5kaWYKICAgICAgICAgICAg
IHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eUhpZ2g7CiAgICAgICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlNjcmlwdDoKKyNpZiBFTkFCTEUoU1ZHKQorICAgICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpEb2N1bWVudFJlc291cmNlOgorICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFBy
aW9yaXR5TG93OworI2VuZGlmCiAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNv
dXJjZToKICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eU1lZGl1bTsKICAg
ICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggNWM4YjM4Zi4uY2ZkNDg2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTYx
LDYgKzYxLDkgQEAgcHVibGljOgogICAgICAgICBDU1NTdHlsZVNoZWV0LAogICAgICAgICBTY3Jp
cHQsCiAgICAgICAgIEZvbnRSZXNvdXJjZQorI2lmIEVOQUJMRShTVkcpCisgICAgICAgICwgRG9j
dW1lbnRSZXNvdXJjZQorI2VuZGlmCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgICAgICwgWFNMU3R5
bGVTaGVldAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUNsaWVudC5oCmluZGV4IDFjNTZmMTMuLjVkNGI3YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCkBAIC0zNCw2
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDYWNoZWRGb250OwogICAg
IGNsYXNzIENhY2hlZFJlc291cmNlOwogICAgIGNsYXNzIENhY2hlZEltYWdlOworICAgIGNsYXNz
IERvY3VtZW50OwogICAgIGNsYXNzIEltYWdlOwogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xh
c3MgS1VSTDsKQEAgLTYyLDYgKzYzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgLyogaHJlZiAqLywg
Y29uc3QgS1VSTCYgLyogYmFzZVVSTCAqLywgY29uc3QgU3RyaW5nJiAvKiBjaGFyc2V0ICovLCBj
b25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRY
U0xTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgLyogaHJlZiAqLywgY29uc3QgS1VSTCYgLyogYmFz
ZVVSTCAqLywgY29uc3QgU3RyaW5nJiAvKiBzaGVldCAqLykgeyB9CisjaWYgRU5BQkxFKFNWRykK
KyAgICAgICAgdmlydHVhbCB2b2lkIHNldFNWR0RvY3VtZW50KGNvbnN0IFN0cmluZyYgLyogaHJl
ZiAqLywgY29uc3QgS1VSTCYgLyogYmFzZVVSTCAqLywgY29uc3QgRG9jdW1lbnQqIC8qIGRvY3Vt
ZW50ICovKSB7IH0KKyNlbmRpZgogICAgICAgICB2aXJ0dWFsIHZvaWQgZm9udExvYWRlZChDYWNo
ZWRGb250Kikge307CiAgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSopIHsgfQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCBjNjgxZGE4Li45YzJiY2U0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5o
IgogCiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNhY2hlZERv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkRm9udC5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdl
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC02Miw2ICs2MywxMCBA
QCBzdGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhY2hlZFJlc291cmNlOjpU
eXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgICAgICByZXR1cm4gbmV3IENhY2hlZENTU1N0
eWxlU2hlZXQodXJsLnN0cmluZygpLCBjaGFyc2V0KTsKICAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpTY3JpcHQ6CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkU2NyaXB0KHVybC5zdHJpbmcoKSwg
Y2hhcnNldCk7CisjaWYgRU5BQkxFKFNWRykKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpEb2N1
bWVudFJlc291cmNlOgorICAgICAgICByZXR1cm4gbmV3IENhY2hlZERvY3VtZW50KHVybC5zdHJp
bmcoKSk7CisjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6CiAg
ICAgICAgIHJldHVybiBuZXcgQ2FjaGVkRm9udCh1cmwuc3RyaW5nKCkpOwogI2lmIEVOQUJMRShY
U0xUKQpAQCAtMTc4LDYgKzE4MywxMyBAQCBDYWNoZWRTY3JpcHQqIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0U2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbgogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxDYWNoZWRTY3JpcHQqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2U6OlNjcmlwdCwgdXJsLCBjaGFyc2V0KSk7CiB9CiAKKyNpZiBFTkFCTEUoU1ZHKQorQ2Fj
aGVkRG9jdW1lbnQqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0U1ZHRG9jdW1lbnQoY29u
c3QgU3RyaW5nJiB1cmwpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZERvY3VtZW50
Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpEb2N1bWVudFJlc291cmNlLCB1cmws
IFN0cmluZygpKSk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShYU0xUKQogQ2FjaGVkWFNMU3R5
bGVTaGVldCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RYU0xTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgdXJsKQogewpAQCAtMjA5LDggKzIyMSwxMyBAQCBib29sIENhY2hlZFJlc291cmNl
TG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwm
IHVybAogICAgICAgICAvLyBUaGVzZSB0eXBlcyBvZiByZXNvdXJjZXMgY2FuIGJlIGxvYWRlZCBm
cm9tIGFueSBvcmlnaW4uCiAgICAgICAgIC8vIEZJWE1FOiBBcmUgd2Ugc3VyZSBhYm91dCBDYWNo
ZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlPwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoU1ZH
KQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkRvY3VtZW50UmVzb3VyY2U6CisjZW5kaWYKICNp
ZiBFTkFCTEUoWFNMVCkKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0Ogor
I2VuZGlmCisjaWYgRU5BQkxFKFNWRykgfHwgRU5BQkxFKFhTTFQpCiAgICAgICAgIGlmICghbV9k
b2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwpKSB7CiAgICAgICAgICAg
ICBwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UodXJsKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTIzMSw2ICsyNDgsOSBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1
ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgIC8vIAog
ICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKKyNp
ZiBFTkFCTEUoU1ZHKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkRvY3VtZW50UmVzb3VyY2U6
CisjZW5kaWYKICNpZiBFTkFCTEUoWFNMVCkKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xT
dHlsZVNoZWV0OgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IDJkNmIxZDIuLjRhMGZhZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCkBAIC00
MCw2ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZENTU1N0eWxl
U2hlZXQ7CitjbGFzcyBDYWNoZWREb2N1bWVudDsKIGNsYXNzIENhY2hlZEZvbnQ7CiBjbGFzcyBD
YWNoZWRJbWFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNlUmVxdWVzdDsKQEAgLTY1LDYgKzY2LDkg
QEAgcHVibGljOgogICAgIENhY2hlZFNjcmlwdCogcmVxdWVzdFNjcmlwdChjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKICAgICBDYWNoZWRGb250KiByZXF1ZXN0Rm9u
dChjb25zdCBTdHJpbmcmIHVybCk7CiAKKyNpZiBFTkFCTEUoU1ZHKQorICAgIENhY2hlZERvY3Vt
ZW50KiByZXF1ZXN0U1ZHRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB1cmwpOworI2VuZGlmCiAjaWYg
RU5BQkxFKFhTTFQpCiAgICAgQ2FjaGVkWFNMU3R5bGVTaGVldCogcmVxdWVzdFhTTFN0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiB1cmwpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCmluZGV4IDAyY2YxM2UuLmUx
MGVkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZVJlcXVlc3QuY3BwCkBAIC01Miw2ICs1MiwxMCBAQCBzdGF0aWMgUmVzb3VyY2VSZXF1
ZXN0OjpUYXJnZXRUeXBlIGNhY2hlZFJlc291cmNlVHlwZVRvVGFyZ2V0VHlwZShDYWNoZWRSZXNv
dXJjZQogICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N0eWxlU2hlZXQ7
CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OiAKICAgICAgICAgcmV0dXJuIFJlc291
cmNlUmVxdWVzdDo6VGFyZ2V0SXNTY3JpcHQ7CisjaWYgRU5BQkxFKFNWRykKKyAgICBjYXNlIENh
Y2hlZFJlc291cmNlOjpEb2N1bWVudFJlc291cmNlOgorICAgICAgICByZXR1cm4gUmVzb3VyY2VS
ZXF1ZXN0OjpUYXJnZXRJc1N1YnJlc291cmNlOworI2VuZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6Rm9udFJlc291cmNlOgogICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJn
ZXRJc0ZvbnRSZXNvdXJjZTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFk
b3dUcmVlUm9vdENvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmNwcAppbmRleCA1NzM2MzMzLi4wY2QzNzEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYWRv
d1RyZWVSb290Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmNwcApAQCAtNTUsNyArNTUsOCBAQCB2
b2lkIFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyOjp1cGRhdGVGcm9tRWxlbWVudCgp
CiAgICAgU1ZHVXNlRWxlbWVudCogdXNlRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR1VzZUVsZW1l
bnQqPihub2RlKCkpOwogICAgIGlmICghbV9zaGFkb3dSb290KSB7CiAgICAgICAgIEFTU0VSVCgh
bV9yZWNyZWF0ZVRyZWUpOwotICAgICAgICBtX3NoYWRvd1Jvb3QgPSBTVkdTaGFkb3dUcmVlUm9v
dEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpLCB1c2VFbGVtZW50KTsKKyAgICAgICAgRG9jdW1l
bnQqIGRvYyA9IHVzZUVsZW1lbnQtPnJlZmVyZW5jZWREb2N1bWVudCgpOworICAgICAgICBtX3No
YWRvd1Jvb3QgPSBTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQ6OmNyZWF0ZShkb2MgPyBkb2MgOiBk
b2N1bWVudCgpLCB1c2VFbGVtZW50KTsKICAgICAgICAgdXNlRWxlbWVudC0+YnVpbGRQZW5kaW5n
UmVzb3VyY2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
c2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRl
eCA5MWQxNWRmLi41ZDY0YWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBA
IC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiU1ZHVXNlRWxlbWVudC5oIgogCiAjaW5jbHVkZSAi
QXR0cmlidXRlLmgiCisjaW5jbHVkZSAiQ2FjaGVkRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBAIC0zNSw2ICszNyw3IEBACiAj
aW5jbHVkZSAiUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdS
ZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmgi
CisjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2Uu
aCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2VMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHR0Vs
ZW1lbnQuaCIKQEAgLTc0LDYgKzc3LDcgQEAgaW5saW5lIFNWR1VzZUVsZW1lbnQ6OlNWR1VzZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3UKICAgICAs
IG1fdXBkYXRlc0Jsb2NrZWQoZmFsc2UpCiAgICAgLCBtX2lzUGVuZGluZ1Jlc291cmNlKGZhbHNl
KQogICAgICwgbV9uZWVkc1NoYWRvd1RyZWVSZWNyZWF0aW9uKGZhbHNlKQorICAgICwgbV9jYWNo
ZWREb2N1bWVudCgwKQogewogfQogCkBAIC0xMjEsOCArMTI1LDE3IEBAIHZvaWQgU1ZHVXNlRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChT
VkdVUklSZWZlcmVuY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQorICAgICAgICBpZiAo
U1ZHVVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkgeworICAgICAgICAg
ICAgaWYgKCFocmVmKCkuc3RhcnRzV2l0aCgiIyIpKSB7CisgICAgICAgICAgICAgICAgS1VSTCBr
dXJsKGRvY3VtZW50KCktPmJhc2VVUkkoKSwgaHJlZigpKTsKKyAgICAgICAgICAgICAgICBpZiAo
a3VybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkgeworICAgICAgICAgICAgICAgICAgICBtX2Nh
Y2hlZERvY3VtZW50ID0gZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVz
dFNWR0RvY3VtZW50KGt1cmwuc3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9j
YWNoZWREb2N1bWVudCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FjaGVkRG9jdW1lbnQt
PmFkZENsaWVudCh0aGlzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogICAgIH0KIH0KQEAgLTEzMSw3
ICsxNDQsOSBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsK
ICAgICAvLyBUaGlzIGZ1bmN0aW9ucyBleGlzdHMgdG8gYXNzdXJlIGFzc3VtcHRpb25zIG1hZGUg
aW4gdGhlIGNvZGUgcmVnYXJkaW5nIFNWR0VsZW1lbnRJbnN0YW5jZSBjcmVhdGlvbi9kZXN0cnVj
dGlvbiBhcmUgc2F0aXNmaWVkLgogICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpp
bnNlcnRlZEludG9Eb2N1bWVudCgpOwotICAgIEFTU0VSVCghbV90YXJnZXRFbGVtZW50SW5zdGFu
Y2UgfHwgKChkb2N1bWVudCgpLT5pc1NWR0RvY3VtZW50KCkgfHwgZG9jdW1lbnQoKS0+aXNYSFRN
TERvY3VtZW50KCkpICYmICFzdGF0aWNfY2FzdDxYTUxEb2N1bWVudFBhcnNlcio+KGRvY3VtZW50
KCktPnBhcnNlcigpKS0+d2VsbEZvcm1lZCgpKSk7CisgICAgQVNTRVJUKCFtX3RhcmdldEVsZW1l
bnRJbnN0YW5jZQorICAgICAgICAgICB8fCAoKHJlZmVyZW5jZWREb2N1bWVudCgpLT5pc1NWR0Rv
Y3VtZW50KCkgfHwgcmVmZXJlbmNlZERvY3VtZW50KCktPmlzWEhUTUxEb2N1bWVudCgpKQorICAg
ICAgICAgICAgICAgJiYgIXN0YXRpY19jYXN0PFhNTERvY3VtZW50UGFyc2VyKj4ocmVmZXJlbmNl
ZERvY3VtZW50KCktPnBhcnNlcigpKS0+d2VsbEZvcm1lZCgpKSk7CiAgICAgQVNTRVJUKCFtX2lz
UGVuZGluZ1Jlc291cmNlKTsKIH0KIApAQCAtMTQxLDYgKzE1NiwxNSBAQCB2b2lkIFNWR1VzZUVs
ZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogICAgIGRldGFjaEluc3RhbmNlKCk7CiB9CiAK
K0RvY3VtZW50KiBTVkdVc2VFbGVtZW50OjpyZWZlcmVuY2VkRG9jdW1lbnQoKSBjb25zdAorewor
ICAgIGlmIChocmVmKCkuc3RhcnRzV2l0aCgiIyIpKQorICAgICAgICByZXR1cm4gZG9jdW1lbnQo
KTsKKyAgICBpZiAobV9jYWNoZWREb2N1bWVudCAmJiBtX2NhY2hlZERvY3VtZW50LT5pc0xvYWRl
ZCgpKQorICAgICAgICByZXR1cm4gbV9jYWNoZWREb2N1bWVudC0+ZG9jdW1lbnQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKwogdm9pZCBTVkdVc2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKQEAgLTQ1OCw4ICs0ODIs
MTIgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgLy8g
SWYgd2UncmUgY2FsbGVkIHRoZSBmaXJzdCB0aW1lIChkdXJpbmcgc2hhZG93IHRyZWUgcm9vdCBj
cmVhdGlvbiBmcm9tIFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyKQogICAgIC8vIHdl
IGVpdGhlciBkZXRlcm1pbmUgdGhhdCBvdXIgdGFyZ2V0IGlzIGF2YWlsYWJsZSBvciBub3QgLSB0
aGVuIHdlIGFkZCBvdXJzZWx2ZXMgdG8gdGhlIHBlbmRpbmcgcmVzb3VyY2UgbGlzdAogICAgIC8v
IE9uY2UgdGhlIHBlbmRpbmcgcmVzb3VyY2UgYXBwZWFycywgaXQgd2lsbCBjYWxsIGJ1aWxkUGVu
ZGluZ1Jlc291cmNlKCksIHNvIHdlJ3JlIGNhbGxlZCBhIHNlY29uZCB0aW1lLgorICAgIERvY3Vt
ZW50KiBkb2MgPSByZWZlcmVuY2VkRG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvYykKKyAgICAgICAg
cmV0dXJuOworCiAgICAgU3RyaW5nIGlkID0gU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQoaHJl
ZigpKTsKLSAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVu
dEJ5SWQoaWQpOworICAgIEVsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBkb2MtPmdldEVsZW1lbnRC
eUlkKGlkKTsKICAgICBBU1NFUlQoIW1fdGFyZ2V0RWxlbWVudEluc3RhbmNlKTsKIAogICAgIGlm
ICghdGFyZ2V0RWxlbWVudCkgewpAQCAtNTAyLDcgKzUzMCwxMCBAQCB2b2lkIFNWR1VzZUVsZW1l
bnQ6OmJ1aWxkU2hhZG93QW5kSW5zdGFuY2VUcmVlKFNWR1NoYWRvd1RyZWVSb290RWxlbWVudCog
c2hhZG93UgogICAgIFNoYWRvd1RyZWVVcGRhdGVCbG9ja2VyIGJsb2NrZXIodGhpcyk7CiAKICAg
ICBTdHJpbmcgaWQgPSBTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdldChocmVmKCkpOwotICAgIEVs
ZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChpZCk7Cisg
ICAgRG9jdW1lbnQqIGRvYyA9IHJlZmVyZW5jZWREb2N1bWVudCgpOworICAgIGlmICghZG9jKQor
ICAgICAgICByZXR1cm47CisgICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IGRvYy0+Z2V0RWxl
bWVudEJ5SWQoaWQpOwogICAgIGlmICghdGFyZ2V0RWxlbWVudCkgewogICAgICAgICAvLyBUaGUg
b25seSB0aW1lIHdlIHNob3VsZCBnZXQgaGVyZSBpcyB3aGVuIHRoZSB1c2UgZWxlbWVudCBoYXMg
bm90IGJlZW4KICAgICAgICAgLy8gZ2l2ZW4gYSByZXNvdXJjZSB0byB0YXJnZXQuCkBAIC03NTIs
OCArNzgzLDEyIEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6YnVpbGRJbnN0YW5jZVRyZWUoU1ZHRWxl
bWVudCogdGFyZ2V0LCBTVkdFbGVtZW50SW5zdGFuY2UqIHRhCiAKIGJvb2wgU1ZHVXNlRWxlbWVu
dDo6aGFzQ3ljbGVVc2VSZWZlcmVuY2luZyhTVkdVc2VFbGVtZW50KiB1c2UsIFNWR0VsZW1lbnRJ
bnN0YW5jZSogdGFyZ2V0SW5zdGFuY2UsIFNWR0VsZW1lbnQqJiBuZXdUYXJnZXQpCiB7CisgICAg
RG9jdW1lbnQqIGRvYyA9IHJlZmVyZW5jZWREb2N1bWVudCgpOworICAgIGlmICghZG9jKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICBTdHJpbmcgaWQgPSBTVkdVUklSZWZlcmVuY2U6Omdl
dFRhcmdldCh1c2UtPmhyZWYoKSk7Ci0gICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IGRvY3Vt
ZW50KCktPmdldEVsZW1lbnRCeUlkKGlkKTsgCisgICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9
IGRvYy0+Z2V0RWxlbWVudEJ5SWQoaWQpOwogICAgIG5ld1RhcmdldCA9IDA7CiAgICAgaWYgKHRh
cmdldEVsZW1lbnQgJiYgdGFyZ2V0RWxlbWVudC0+aXNTVkdFbGVtZW50KCkpCiAgICAgICAgIG5l
d1RhcmdldCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPih0YXJnZXRFbGVtZW50KTsKQEAgLTgz
MywxNSArODY4LDE4IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6ZXhwYW5kVXNlRWxlbWVudHNJblNo
YWRvd1RyZWUoU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50KiBzaGFkCiAgICAgaWYgKGVsZW1lbnQt
Pmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnVzZVRhZykpIHsKICAgICAgICAgU1ZHVXNlRWxlbWVudCog
dXNlID0gc3RhdGljX2Nhc3Q8U1ZHVXNlRWxlbWVudCo+KGVsZW1lbnQpOwogCisgICAgICAgIERv
Y3VtZW50KiBkb2MgPSByZWZlcmVuY2VkRG9jdW1lbnQoKTsKKyAgICAgICAgQVNTRVJUKGRvYyk7
CisKICAgICAgICAgU3RyaW5nIGlkID0gU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQodXNlLT5o
cmVmKCkpOwotICAgICAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0
RWxlbWVudEJ5SWQoaWQpOyAKKyAgICAgICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IGRvYy0+
Z2V0RWxlbWVudEJ5SWQoaWQpOwogICAgICAgICBTVkdFbGVtZW50KiB0YXJnZXQgPSAwOwogICAg
ICAgICBpZiAodGFyZ2V0RWxlbWVudCAmJiB0YXJnZXRFbGVtZW50LT5pc1NWR0VsZW1lbnQoKSkK
ICAgICAgICAgICAgIHRhcmdldCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPih0YXJnZXRFbGVt
ZW50KTsKIAogICAgICAgICAvLyBEb24ndCBBU1NFUlQodGFyZ2V0KSBoZXJlLCBpdCBtYXkgYmUg
InBlbmRpbmciLCB0b28uCiAgICAgICAgIC8vIFNldHVwIHN1Yi1zaGFkb3cgdHJlZSByb290IG5v
ZGUKLSAgICAgICAgUmVmUHRyPFNWR1NoYWRvd1RyZWVDb250YWluZXJFbGVtZW50PiBjbG9uZVBh
cmVudCA9IFNWR1NoYWRvd1RyZWVDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7
CisgICAgICAgIFJlZlB0cjxTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudD4gY2xvbmVQYXJl
bnQgPSBTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvYyk7CiAgICAgICAg
IHVzZS0+Y2xvbmVDaGlsZE5vZGVzKGNsb25lUGFyZW50LmdldCgpKTsKIAogICAgICAgICAvLyBT
cGVjOiBJbiB0aGUgZ2VuZXJhdGVkIGNvbnRlbnQsIHRoZSAndXNlJyB3aWxsIGJlIHJlcGxhY2Vk
IGJ5ICdnJywgd2hlcmUgYWxsIGF0dHJpYnV0ZXMgZnJvbSB0aGUKQEAgLTg4NiwxMyArOTI0LDE2
IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6ZXhwYW5kVXNlRWxlbWVudHNJblNoYWRvd1RyZWUoU1ZH
U2hhZG93VHJlZVJvb3RFbGVtZW50KiBzaGFkCiB2b2lkIFNWR1VzZUVsZW1lbnQ6OmV4cGFuZFN5
bWJvbEVsZW1lbnRzSW5TaGFkb3dUcmVlKFNWR1NoYWRvd1RyZWVSb290RWxlbWVudCogc2hhZG93
Um9vdCwgTm9kZSogZWxlbWVudCkKIHsKICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShTVkdO
YW1lczo6c3ltYm9sVGFnKSkgeworICAgICAgICBEb2N1bWVudCogZG9jID0gcmVmZXJlbmNlZERv
Y3VtZW50KCk7CisgICAgICAgIEFTU0VSVChkb2MpOworCiAgICAgICAgIC8vIFNwZWM6IFRoZSBy
ZWZlcmVuY2VkICdzeW1ib2wnIGFuZCBpdHMgY29udGVudHMgYXJlIGRlZXAtY2xvbmVkIGludG8g
dGhlIGdlbmVyYXRlZCB0cmVlLAogICAgICAgICAvLyB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCB0
aGUgJ3N5bWJvbCcgaXMgcmVwbGFjZWQgYnkgYW4gJ3N2ZycuIFRoaXMgZ2VuZXJhdGVkICdzdmcn
IHdpbGwKICAgICAgICAgLy8gYWx3YXlzIGhhdmUgZXhwbGljaXQgdmFsdWVzIGZvciBhdHRyaWJ1
dGVzIHdpZHRoIGFuZCBoZWlnaHQuIElmIGF0dHJpYnV0ZXMgd2lkdGggYW5kL29yCiAgICAgICAg
IC8vIGhlaWdodCBhcmUgcHJvdmlkZWQgb24gdGhlICd1c2UnIGVsZW1lbnQsIHRoZW4gdGhlc2Ug
YXR0cmlidXRlcyB3aWxsIGJlIHRyYW5zZmVycmVkIHRvCiAgICAgICAgIC8vIHRoZSBnZW5lcmF0
ZWQgJ3N2ZycuIElmIGF0dHJpYnV0ZXMgd2lkdGggYW5kL29yIGhlaWdodCBhcmUgbm90IHNwZWNp
ZmllZCwgdGhlIGdlbmVyYXRlZAogICAgICAgICAvLyAnc3ZnJyBlbGVtZW50IHdpbGwgdXNlIHZh
bHVlcyBvZiAxMDAlIGZvciB0aGVzZSBhdHRyaWJ1dGVzLgotICAgICAgICBSZWZQdHI8U1ZHU1ZH
RWxlbWVudD4gc3ZnRWxlbWVudCA9IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZShTVkdOYW1lczo6c3Zn
VGFnLCBkb2N1bWVudCgpKTsKKyAgICAgICAgUmVmUHRyPFNWR1NWR0VsZW1lbnQ+IHN2Z0VsZW1l
bnQgPSBTVkdTVkdFbGVtZW50OjpjcmVhdGUoU1ZHTmFtZXM6OnN2Z1RhZywgZG9jKTsKIAogICAg
ICAgICAvLyBUcmFuc2ZlciBhbGwgYXR0cmlidXRlcyBmcm9tIDxzeW1ib2w+IHRvIHRoZSBuZXcg
PHN2Zz4gZWxlbWVudAogICAgICAgICBzdmdFbGVtZW50LT5hdHRyaWJ1dGVzKCktPnNldEF0dHJp
YnV0ZXMoKmVsZW1lbnQtPmF0dHJpYnV0ZXMoKSk7CkBAIC0xMDg0LDYgKzExMjUsMTIgQEAgYm9v
bCBTVkdVc2VFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KGVsZW1lbnQpLT5oYXNSZWxhdGl2ZUxl
bmd0aHMoKTsKIH0KIAordm9pZCBTVkdVc2VFbGVtZW50OjpzZXRTVkdEb2N1bWVudChjb25zdCBT
dHJpbmcmIC8qIGhyZWYgKi8sIGNvbnN0IEtVUkwmIC8qIGJhc2VVUkwgKi8sIGNvbnN0IERvY3Vt
ZW50KiAvKiBkb2N1bWVudCAqLykKK3sKKyAgICBtX2lzUGVuZGluZ1Jlc291cmNlID0gdHJ1ZTsK
KyAgICBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
U1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKaW5kZXggMTBjOWJlOS4uYzgxNjIyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5l
IFNWR1VzZUVsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUg
IlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZC5oIgpAQCAtMzIsNiArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IENhY2hlZERvY3VtZW50OwogY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwogY2xhc3MgU1ZHU2hh
ZG93VHJlZVJvb3RFbGVtZW50OwogCkBAIC0zOSw3ICs0MSw4IEBAIGNsYXNzIFNWR1VzZUVsZW1l
bnQgOiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAogICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBT
VkdMYW5nU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1VSSVJlZmVy
ZW5jZSB7CisgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1VSSVJlZmVyZW5jZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1VzZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtNTAsNiArNTMsMTAgQEAgcHVibGljOgogCiAg
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlckNsaXBDaGlsZCgpIGNvbnN0OwogCisjaWYgRU5BQkxF
KFNWRykKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U1ZHRG9jdW1lbnQoY29uc3QgU3RyaW5nJiwgY29u
c3QgS1VSTCYsIGNvbnN0IERvY3VtZW50Kik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBTVkdV
c2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC01OCw2ICs2
NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKKyAgICBEb2N1bWVudCogcmVmZXJlbmNlZERvY3Vt
ZW50KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0
cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwpAQCAtMTIyLDYgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX25l
ZWRzU2hhZG93VHJlZVJlY3JlYXRpb247CiAgICAgU3RyaW5nIG1fcmVzb3VyY2VJZDsKICAgICBS
ZWZQdHI8U1ZHRWxlbWVudEluc3RhbmNlPiBtX3RhcmdldEVsZW1lbnRJbnN0YW5jZTsKKyAgICBD
YWNoZWREb2N1bWVudCogbV9jYWNoZWREb2N1bWVudDsKIH07CiAKIH0K
</data>
<flag name="review"
          id="79069"
          type_id="1"
          status="-"
          setter="rwlbuis"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90851</attachid>
            <date>2011-04-23 02:17:50 -0700</date>
            <delta_ts>2012-01-16 09:03:28 -0800</delta_ts>
            <desc>Draft patch</desc>
            <filename>wk12499.diff.submit</filename>
            <type>text/plain</type>
            <size>31658</size>
            <attacher name="Cosmin Truta">ctruta</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MWM0ODYyLi5iYjdkODVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQt
MjMgIENvc21pbiBUcnV0YSAgPGN0cnV0YUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0ZXJuYWwgPHVzZT4geGxpbms6aHJlZiBy
ZWZlcmVuY2VzIGRvIG5vdCB3b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjQ5OQorCisgICAgICAgICogc3ZnL2N1c3RvbS9yZXNvdXJjZXMvcmdi
LnN2ZzogV3JhcHBlZCA8cmVjdD4gZWxlbWVudHMgaW4gPGc+IGFuZCBhZGRlZCBpZCBhdHRyaWJ1
dGVzLgorICAgICAgICAqIHN2Zy9jdXN0b20vdXNlLWV4dGVybi1ocmVmLWV4cGVjdGVkLmNoZWNr
c3VtOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL3VzZS1leHRlcm4taHJlZi1leHBlY3Rl
ZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20vdXNlLWV4dGVybi1ocmVmLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS91c2UtZXh0ZXJuLWhyZWYuc3Zn
OiBBZGRlZC4KKwogMjAxMS0wNC0yMiAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvcmdiLnN2ZyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20v
cmVzb3VyY2VzL3JnYi5zdmcKaW5kZXggZGM1NTgxNi4uMWM1OTRjZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvcmdiLnN2ZworKysgYi9MYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL3Jlc291cmNlcy9yZ2Iuc3ZnCkBAIC0xLDUgKzEsNyBAQAotPHN2ZyB3aWR0aD0i
MTkyIiBoZWlnaHQ9IjY0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgotICA8
cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIGZpbGw9IiNjMDAiLz4KLSAg
PHJlY3QgeD0iNjQiIHk9IjAiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgZmlsbD0iIzA5MCIvPgot
ICA8cmVjdCB4PSIxMjgiIHk9IjAiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgZmlsbD0iIzAwZiIv
PgorPHN2ZyBpZD0ic3ZnLXJvb3QiIHdpZHRoPSIxOTIiIGhlaWdodD0iNjQiIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgIDxnIGlkPSJSR0IiPgorICAgIDxyZWN0IGlkPSJS
IiB4PSIwIiB5PSIwIiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIGZpbGw9IiNjMDAiLz4KKyAgICA8
cmVjdCBpZD0iRyIgeD0iNjQiIHk9IjAiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgZmlsbD0iIzA5
MCIvPgorICAgIDxyZWN0IGlkPSJCIiB4PSIxMjgiIHk9IjAiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2
NCIgZmlsbD0iIzAwZiIvPgorICA8L2c+CiA8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N2Zy9jdXN0b20vdXNlLWV4dGVybi1ocmVmLWV4cGVjdGVkLmNoZWNrc3VtIGIvTGF5b3V0VGVz
dHMvc3ZnL2N1c3RvbS91c2UtZXh0ZXJuLWhyZWYtZXhwZWN0ZWQuY2hlY2tzdW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc5YjRkMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWV4dGVybi1ocmVmLWV4cGVjdGVkLmNoZWNrc3VtCkBA
IC0wLDAgKzEgQEAKKzM2NTE3ODc5ZjNhMTA1MDc0ZmFhYzVjZGQyNGI1YjA1ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2Ut
ZXh0ZXJuLWhyZWYtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtZXh0
ZXJuLWhyZWYtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4YmI2NDcxNTg1NzM5OGY0YTUwMDQw
YjcwZWFhOTM3NmY3MmE0YWIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4NTQKemNtZUFTQE4/
KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmpMJWFKfV8oYVNXLUxeWSV0eT9fbWNL
CnptVj0pWWpudEY1bUtSaHBacD5ZcTZSSjRsezU2XlRgX3J4TWNaPSluTzhlZlZgdVdYSWhKeDxA
Y2JPUiY/enRyfQp6Rzh8ek1We3FecFdnckVAbjtBM2pOOzVGVDljXloxNUQ8PUZVQCZZWG5fO35W
ODFQbzhxMGh9ZjhzeGFyLUR1YmsKelQheTQoKmkpRW9NenhiJjsqMTh9WHdYcW9WfndWdChleUpv
KTZaezQ+KSRkbjdZVV9aMWgjKH1KWURAPCk7VDNLCkYwUlN+SztyUmRuCgpsaXRlcmFsIDAKSGNt
Vj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1leHRlcm4t
aHJlZi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1leHRlcm4taHJl
Zi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM2NmI4
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWV4dGVybi1o
cmVmLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMyIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJTVkdSb290IHtzdmd9IGF0ICgwLDApIHNpemUgMTkyeDIy
NAorICAgIFJlbmRlclNWR0NvbnRhaW5lciB7dXNlfSBhdCAoMCwwKSBzaXplIDE5Mng2NAorICAg
ICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoMCwwKSBzaXplIDE5Mng2NAorICAgICAgICBS
ZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciB7c3ZnfSBhdCAoMCwwKSBzaXplIDE5Mng2NAorICAg
ICAgICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDAsMCkgc2l6ZSAxOTJ4NjQKKyAgICAg
ICAgICAgIFJlbmRlclNWR1BhdGgge3JlY3R9IGF0ICgwLDApIHNpemUgNjR4NjQgW2ZpbGw9e1t0
eXBlPVNPTElEXSBbY29sb3I9I0NDMDAwMF19XSBbeD0wLjAwXSBbeT0wLjAwXSBbd2lkdGg9NjQu
MDBdIFtoZWlnaHQ9NjQuMDBdCisgICAgICAgICAgICBSZW5kZXJTVkdQYXRoIHtyZWN0fSBhdCAo
NjQsMCkgc2l6ZSA2NHg2NCBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDA5OTAwXX1dIFt4
PTY0LjAwXSBbeT0wLjAwXSBbd2lkdGg9NjQuMDBdIFtoZWlnaHQ9NjQuMDBdCisgICAgICAgICAg
ICBSZW5kZXJTVkdQYXRoIHtyZWN0fSBhdCAoMTI4LDApIHNpemUgNjR4NjQgW2ZpbGw9e1t0eXBl
PVNPTElEXSBbY29sb3I9IzAwMDBGRl19XSBbeD0xMjguMDBdIFt5PTAuMDBdIFt3aWR0aD02NC4w
MF0gW2hlaWdodD02NC4wMF0KKyAgICBSZW5kZXJTVkdDb250YWluZXIge3VzZX0gYXQgKDAsODAp
IHNpemUgMTkyeDY0CisgICAgICBSZW5kZXJTVkdDb250YWluZXIge2d9IGF0ICgwLDgwKSBzaXpl
IDE5Mng2NCBbdHJhbnNmb3JtPXttPSgoMS4wMCwwLjAwKSgwLjAwLDEuMDApKSB0PSgwLjAwLDgw
LjAwKX1dCisgICAgICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDAsODApIHNpemUgMTky
eDY0CisgICAgICAgICAgUmVuZGVyU1ZHUGF0aCB7cmVjdH0gYXQgKDAsODApIHNpemUgNjR4NjQg
W2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9I0NDMDAwMF19XSBbeD0wLjAwXSBbeT0wLjAwXSBb
d2lkdGg9NjQuMDBdIFtoZWlnaHQ9NjQuMDBdCisgICAgICAgICAgUmVuZGVyU1ZHUGF0aCB7cmVj
dH0gYXQgKDY0LDgwKSBzaXplIDY0eDY0IFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDk5
MDBdfV0gW3g9NjQuMDBdIFt5PTAuMDBdIFt3aWR0aD02NC4wMF0gW2hlaWdodD02NC4wMF0KKyAg
ICAgICAgICBSZW5kZXJTVkdQYXRoIHtyZWN0fSBhdCAoMTI4LDgwKSBzaXplIDY0eDY0IFtmaWxs
PXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwRkZdfV0gW3g9MTI4LjAwXSBbeT0wLjAwXSBbd2lk
dGg9NjQuMDBdIFtoZWlnaHQ9NjQuMDBdCisgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHt1c2V9IGF0
ICgwLDE2MCkgc2l6ZSA2NHg2NAorICAgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoMCwx
NjApIHNpemUgNjR4NjQgW3RyYW5zZm9ybT17bT0oKDEuMDAsMC4wMCkoMC4wMCwxLjAwKSkgdD0o
MC4wMCwxNjAuMDApfV0KKyAgICAgICAgUmVuZGVyU1ZHUGF0aCB7cmVjdH0gYXQgKDAsMTYwKSBz
aXplIDY0eDY0IFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSNDQzAwMDBdfV0gW3g9MC4wMF0g
W3k9MC4wMF0gW3dpZHRoPTY0LjAwXSBbaGVpZ2h0PTY0LjAwXQorICAgIFJlbmRlclNWR0NvbnRh
aW5lciB7dXNlfSBhdCAoNjQsMTYwKSBzaXplIDY0eDY0CisgICAgICBSZW5kZXJTVkdDb250YWlu
ZXIge2d9IGF0ICg2NCwxNjApIHNpemUgNjR4NjQgW3RyYW5zZm9ybT17bT0oKDEuMDAsMC4wMCko
MC4wMCwxLjAwKSkgdD0oMC4wMCwxNjAuMDApfV0KKyAgICAgICAgUmVuZGVyU1ZHUGF0aCB7cmVj
dH0gYXQgKDY0LDE2MCkgc2l6ZSA2NHg2NCBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDA5
OTAwXX1dIFt4PTY0LjAwXSBbeT0wLjAwXSBbd2lkdGg9NjQuMDBdIFtoZWlnaHQ9NjQuMDBdCisg
ICAgUmVuZGVyU1ZHQ29udGFpbmVyIHt1c2V9IGF0ICgxMjgsMTYwKSBzaXplIDY0eDY0CisgICAg
ICBSZW5kZXJTVkdDb250YWluZXIge2d9IGF0ICgxMjgsMTYwKSBzaXplIDY0eDY0IFt0cmFuc2Zv
cm09e209KCgxLjAwLDAuMDApKDAuMDAsMS4wMCkpIHQ9KDAuMDAsMTYwLjAwKX1dCisgICAgICAg
IFJlbmRlclNWR1BhdGgge3JlY3R9IGF0ICgxMjgsMTYwKSBzaXplIDY0eDY0IFtmaWxsPXtbdHlw
ZT1TT0xJRF0gW2NvbG9yPSMwMDAwRkZdfV0gW3g9MTI4LjAwXSBbeT0wLjAwXSBbd2lkdGg9NjQu
MDBdIFtoZWlnaHQ9NjQuMDBdCisgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHt1c2V9IGF0ICgwLDAp
IHNpemUgMHgwCisgICAgICBSZW5kZXJTVkdDb250YWluZXIge2d9IGF0ICgwLDApIHNpemUgMHgw
CisgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHt1c2V9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBS
ZW5kZXJTVkdDb250YWluZXIge2d9IGF0ICgwLDApIHNpemUgMHgwCisgICAgUmVuZGVyU1ZHQ29u
dGFpbmVyIHt1c2V9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJTVkdDb250YWluZXIg
e2d9IGF0ICgwLDApIHNpemUgMHgwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9t
L3VzZS1leHRlcm4taHJlZi5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1leHRlcm4t
aHJlZi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFiOGQyOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWV4dGVybi1ocmVmLnN2
ZwpAQCAtMCwwICsxLDExIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8dXNlIHhs
aW5rOmhyZWY9InJlc291cmNlcy9yZ2Iuc3ZnI3N2Zy1yb290Ii8+CisgIDx1c2UgeT0iODAiIHhs
aW5rOmhyZWY9InJlc291cmNlcy9yZ2Iuc3ZnI1JHQiIvPgorICA8dXNlIHk9IjE2MCIgeGxpbms6
aHJlZj0icmVzb3VyY2VzL3JnYi5zdmcjUiIvPgorICA8dXNlIHk9IjE2MCIgeGxpbms6aHJlZj0i
cmVzb3VyY2VzL3JnYi5zdmcjRyIvPgorICA8dXNlIHk9IjE2MCIgeGxpbms6aHJlZj0icmVzb3Vy
Y2VzL3JnYi5zdmcjQiIvPgorICA8IS0tIFRoZSBmb2xsb3dpbmcgZWxlbWVudHMgc2hhbGwgbm90
IGJlIGRpc3BsYXllZC4gLS0+CisgIDx1c2UgeT0iMjQwIiB4bGluazpocmVmPSJyZXNvdXJjZXMv
cmdiLnN2ZyIvPgorICA8dXNlIHk9IjI0MCIgeGxpbms6aHJlZj0icmVzb3VyY2VzL3JnYi5zdmcj
TUlTU0lORyIvPgorICA8dXNlIHk9IjI0MCIgeGxpbms6aHJlZj0icmVzb3VyY2VzL01JU1NJTkcu
c3ZnI01JU1NJTkciLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU3NTI2OTAuLjcxZGQzZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMS0wNC0yMyAgQ29zbWluIFRydXRhICA8Y3Ry
dXRhQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFeHRlcm5hbCA8dXNlPiB4bGluazpocmVmIHJlZmVyZW5jZXMgZG8gbm90IHdvcmsK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDk5CisK
KyAgICAgICAgU3VwcG9ydCBleHRlcm5hbCByZWZlcmVuY2VzIG9uIDx1c2U+IGJ5IGludHJvZHVj
aW5nIENhY2hlZERvY3VtZW50LAorICAgICAgICB3aGljaCBoYW5kbGVzIGRvY3VtZW50IHN1YnJl
c291cmNlcy4KKworICAgICAgICBUZXN0OiBzdmcvY3VzdG9tL3VzZS1leHRlcm4taHJlZi5zdmcK
KworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWREb2N1bWVudC5jcHA6IEFkZGVkLgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWREb2N1bWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVs
dFByaW9yaXR5Rm9yUmVzb3VyY2VUeXBlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlQ2xpZW50OjpzZXRTVkdEb2N1bWVu
dCk6IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFNWR0RvY3VtZW50KTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdCk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNo
ZWRSZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OlNWR1VzZUVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6cmVmZXJlbmNlZERvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnNldFNWR0RvY3VtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorCiAyMDExLTA0LTIyICBYaWFvbWVpIEppICA8eGppQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5NDZjZGNhLi43NDRhYTExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIwMzYsNiArMjAzNiw4IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRG9jdW1lbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRG9jdW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwYmRiMDkwLi4zMDY0NzdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC0zMzcwLDYgKzMzNzAsOCBAQAogICAgICAgICAgICAgJ2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmVNYWMubW0nLAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaCcsCisgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZERvY3VtZW50LmNw
cCcsCisgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZERvY3VtZW50LmgnLAogICAgICAg
ICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDE5MWVlN2YuLjFhMzg1N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCkBAIC04NTQsNiArODU0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHAgXAogICAgIGxvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5jcHAgXAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBcCisg
ICAgbG9hZGVyL2NhY2hlL0NhY2hlZERvY3VtZW50LmNwcCBcCiAgICAgbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIFwKICAgICBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuY3BwIFwKQEAgLTE4MDUsNiAr
MTgwNiw3IEBAIEhFQURFUlMgKz0gXAogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24uaCBcCiAgICAgbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmggXAog
ICAgIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmggXAorICAgIGxvYWRlci9jYWNo
ZS9DYWNoZWREb2N1bWVudC5oIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIFwKICAg
ICBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlQ2xpZW50V2Fsa2VyLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWREb2N1bWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY2
MzRhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWREb2N1bWVudC5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAy
MDEwIFJvYiBCdWlzIDxyd2xidWlzQGdtYWlsLmNvbT4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEg
Q29zbWluIFRydXRhIDxjdHJ1dGFAZ21haWwuY29tPgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShTVkcpCisvLyBDdXJyZW50bHksIHdlIG9ubHkgbmVlZCBDYWNoZWREb2N1
bWVudCBmb3IgU1ZHIGRvY3VtZW50cy4KKworI2luY2x1ZGUgIkNhY2hlZERvY3VtZW50LmgiCisK
KyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlQ2xpZW50V2Fsa2VyLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNp
bmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiU1ZHRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJU
ZXh0UmVzb3VyY2VEZWNvZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ2FjaGVkRG9j
dW1lbnQ6OkNhY2hlZERvY3VtZW50KGNvbnN0IFN0cmluZyAmdXJsKQorICAgIDogQ2FjaGVkUmVz
b3VyY2UodXJsLCBEb2N1bWVudFJlc291cmNlKQorICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJj
ZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIikpCit7CisgICAgc2V0QWNjZXB0KCJp
bWFnZS9zdmcreG1sIik7Cit9CisKK0NhY2hlZERvY3VtZW50Ojp+Q2FjaGVkRG9jdW1lbnQoKQor
eworfQorCit2b2lkIENhY2hlZERvY3VtZW50OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VD
bGllbnQgKmMpCit7CisgICAgaWYgKCFpc0xvYWRpbmcoKSkKKyAgICAgICAgYy0+c2V0U1ZHRG9j
dW1lbnQobV91cmwsIG1fcmVzcG9uc2UudXJsKCksIGRvY3VtZW50KCkpOworfQorCit2b2lkIENh
Y2hlZERvY3VtZW50OjpzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmIGNocykKK3sKKyAgICBtX2Rl
Y29kZXItPnNldEVuY29kaW5nKGNocywgVGV4dFJlc291cmNlRGVjb2Rlcjo6RW5jb2RpbmdGcm9t
SFRUUEhlYWRlcik7Cit9CisKK1N0cmluZyBDYWNoZWREb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25z
dAoreworICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOworfQorCit2b2lk
IENhY2hlZERvY3VtZW50OjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKK3sKKyAgICBpZiAoIWFsbERhdGFSZWNlaXZlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgQVNTRVJUKCFtX2RvY3VtZW50KTsKKyAgICBtX2RvY3VtZW50ID0gRG9j
dW1lbnQ6OmNyZWF0ZSgvKm1fcmVxdWVzdC0+ZG9jTG9hZGVyKCktPmZyYW1lKCkqLzAsIEtVUkwo
KSk7CisgICAgbV9kYXRhID0gZGF0YTsKKworICAgIFN0cmluZyBkZWNvZGVkVGV4dDsKKyAgICBp
ZiAobV9kYXRhKSB7CisgICAgICAgIGRlY29kZWRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGUobV9k
YXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgZGVjb2RlZFRleHQgKz0gbV9k
ZWNvZGVyLT5mbHVzaCgpOworICAgIH0KKworICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQoZGVj
b2RlZFRleHQpOworICAgIHNldExvYWRpbmcoZmFsc2UpOworICAgIGNoZWNrTm90aWZ5KCk7Cit9
CisKK3ZvaWQgQ2FjaGVkRG9jdW1lbnQ6OmNoZWNrTm90aWZ5KCkKK3sKKyAgICBpZiAoaXNMb2Fk
aW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
IHcobV9jbGllbnRzKTsKKyAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQgKmMgPSB3Lm5l
eHQoKSkKKyAgICAgICAgYy0+c2V0U1ZHRG9jdW1lbnQobV91cmwsIG1fcmVzcG9uc2UudXJsKCks
IGRvY3VtZW50KCkpOworfQorCit2b2lkIENhY2hlZERvY3VtZW50OjplcnJvcihDYWNoZWRSZXNv
dXJjZTo6U3RhdHVzIHN0YXR1cykKK3sKKyAgICBzZXRTdGF0dXMoc3RhdHVzKTsKKyAgICBBU1NF
UlQoZXJyb3JPY2N1cnJlZCgpKTsKKyAgICBzZXRMb2FkaW5nKGZhbHNlKTsKKyAgICBjaGVja05v
dGlmeSgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZERvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRG9jdW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmI5
YWViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZERvY3VtZW50LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTAg
Um9iIEJ1aXMgPHJ3bGJ1aXNAZ21haWwuY29tPgorICAgIENvcHlyaWdodCAoQykgMjAxMSBDb3Nt
aW4gVHJ1dGEgPGN0cnV0YUBnbWFpbC5jb20+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBDYWNoZWREb2N1bWVudF9o
CisjZGVmaW5lIENhY2hlZERvY3VtZW50X2gKKworI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2FjaGVkUmVzb3VyY2VDbGllbnQ7Citj
bGFzcyBEb2N1bWVudDsKK2NsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CisKK2NsYXNzIENhY2hl
ZERvY3VtZW50IDogcHVibGljIENhY2hlZFJlc291cmNlIHsKK3B1YmxpYzoKKyAgICBDYWNoZWRE
b2N1bWVudChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdmlydHVhbCB+Q2FjaGVkRG9jdW1lbnQo
KTsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQu
Z2V0KCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VD
bGllbnQqKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBk
YXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7
CisgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOworCisgICAg
dmlydHVhbCBib29sIHNjaGVkdWxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9p
ZCBjaGVja05vdGlmeSgpOworCitwcm90ZWN0ZWQ6CisgICAgUmVmUHRyPERvY3VtZW50PiBtX2Rv
Y3VtZW50OworICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDk1ZjU1MjIu
LjRkYzJhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcApAQCAtNTcsNiArNTcsMTAgQEAgc3RhdGljIFJlc291cmNlTG9hZFByaW9yaXR5IGRl
ZmF1bHRQcmlvcml0eUZvclJlc291cmNlVHlwZShDYWNoZWRSZXNvdXJjZTo6VHlwZQogI2VuZGlm
CiAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHlIaWdoOwogICAgICAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6CisjaWYgRU5BQkxFKFNWRykKKyAgICAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6RG9jdW1lbnRSZXNvdXJjZToKKyAgICAgICAgICAgIHJldHVybiBS
ZXNvdXJjZUxvYWRQcmlvcml0eUxvdzsKKyNlbmRpZgogICAgICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpGb250UmVzb3VyY2U6CiAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3Jp
dHlNZWRpdW07CiAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDcyYjAw
ZTUuLmRhYTE3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCkBAIC02MSw2ICs2MSw5IEBAIHB1YmxpYzoKICAgICAgICAgQ1NTU3R5bGVTaGVldCwK
ICAgICAgICAgU2NyaXB0LAogICAgICAgICBGb250UmVzb3VyY2UKKyNpZiBFTkFCTEUoU1ZHKQor
ICAgICAgICAsIERvY3VtZW50UmVzb3VyY2UKKyNlbmRpZgogI2lmIEVOQUJMRShYU0xUKQogICAg
ICAgICAsIFhTTFN0eWxlU2hlZXQKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaAppbmRleCAxYzU2ZjEzLi41ZDRiN2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGll
bnQuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ2Fj
aGVkRm9udDsKICAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKICAgICBjbGFzcyBDYWNoZWRJbWFn
ZTsKKyAgICBjbGFzcyBEb2N1bWVudDsKICAgICBjbGFzcyBJbWFnZTsKICAgICBjbGFzcyBJbnRS
ZWN0OwogICAgIGNsYXNzIEtVUkw7CkBAIC02Miw2ICs2Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcm
IC8qIGhyZWYgKi8sIGNvbnN0IEtVUkwmIC8qIGJhc2VVUkwgKi8sIGNvbnN0IFN0cmluZyYgLyog
Y2hhcnNldCAqLywgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCopIHsgfQogICAgICAgICB2aXJ0
dWFsIHZvaWQgc2V0WFNMU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIC8qIGhyZWYgKi8sIGNvbnN0
IEtVUkwmIC8qIGJhc2VVUkwgKi8sIGNvbnN0IFN0cmluZyYgLyogc2hlZXQgKi8pIHsgfQorI2lm
IEVOQUJMRShTVkcpCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRTVkdEb2N1bWVudChjb25zdCBT
dHJpbmcmIC8qIGhyZWYgKi8sIGNvbnN0IEtVUkwmIC8qIGJhc2VVUkwgKi8sIGNvbnN0IERvY3Vt
ZW50KiAvKiBkb2N1bWVudCAqLykgeyB9CisjZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lkIGZv
bnRMb2FkZWQoQ2FjaGVkRm9udCopIHt9OwogICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSB7IH0KICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTQxYjMwYy4u
N2E0NGEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaCIKIAogI2luY2x1ZGUgIkNhY2hlZENTU1N0eWxlU2hlZXQuaCIKKyNpbmNs
dWRlICJDYWNoZWREb2N1bWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIKICNpbmNsdWRl
ICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgpAQCAt
NjQsNiArNjUsMTAgQEAgc3RhdGljIENhY2hlZFJlc291cmNlKiBjcmVhdGVSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwKICAgICAgICAgcmV0dXJuIG5l
dyBDYWNoZWRDU1NTdHlsZVNoZWV0KHVybC5zdHJpbmcoKSwgY2hhcnNldCk7CiAgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6U2NyaXB0OgogICAgICAgICByZXR1cm4gbmV3IENhY2hlZFNjcmlwdCh1
cmwuc3RyaW5nKCksIGNoYXJzZXQpOworI2lmIEVOQUJMRShTVkcpCisgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6RG9jdW1lbnRSZXNvdXJjZToKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWREb2N1
bWVudCh1cmwuc3RyaW5nKCkpOworI2VuZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9u
dFJlc291cmNlOgogICAgICAgICByZXR1cm4gbmV3IENhY2hlZEZvbnQodXJsLnN0cmluZygpKTsK
ICNpZiBFTkFCTEUoWFNMVCkKQEAgLTE4MCw2ICsxODUsMTMgQEAgQ2FjaGVkU2NyaXB0KiBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFNjcmlwdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW4KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkU2NyaXB0Kj4ocmVxdWVzdFJlc291
cmNlKENhY2hlZFJlc291cmNlOjpTY3JpcHQsIHVybCwgY2hhcnNldCkpOwogfQogCisjaWYgRU5B
QkxFKFNWRykKK0NhY2hlZERvY3VtZW50KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFNW
R0RvY3VtZW50KGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
YWNoZWREb2N1bWVudCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6RG9jdW1lbnRS
ZXNvdXJjZSwgdXJsLCBTdHJpbmcoKSkpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoWFNMVCkK
IENhY2hlZFhTTFN0eWxlU2hlZXQqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0WFNMU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCkKIHsKQEAgLTIxOCw4ICsyMzAsMTMgQEAgYm9vbCBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBl
LCBjb25zdCBLVVJMJiB1cmwKICAgICAgICAgLy8gVGhlc2UgdHlwZXMgb2YgcmVzb3VyY2VzIGNh
biBiZSBsb2FkZWQgZnJvbSBhbnkgb3JpZ2luLgogICAgICAgICAvLyBGSVhNRTogQXJlIHdlIHN1
cmUgYWJvdXQgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZT8KICAgICAgICAgYnJlYWs7Cisj
aWYgRU5BQkxFKFNWRykKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpEb2N1bWVudFJlc291cmNl
OgorI2VuZGlmCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6WFNM
U3R5bGVTaGVldDoKKyNlbmRpZgorI2lmIEVOQUJMRShTVkcpIHx8IEVOQUJMRShYU0xUKQogICAg
ICAgICBpZiAoIW1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QodXJsKSkg
ewogICAgICAgICAgICAgcHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKHVybCk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yMzksNiArMjU2LDkgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1
cmwKICAgICAvLwogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6
OlNjcmlwdDoKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkRvY3Vt
ZW50UmVzb3VyY2U6CisjZW5kaWYKICNpZiBFTkFCTEUoWFNMVCkKICAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpYU0xTdHlsZVNoZWV0OgogI2VuZGlmCkBAIC0yNzcsMTQgKzI5NywxNiBAQCBib29s
IENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5
cGUsIGNvbnN0IEtVUkwmIHVybAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgorI2lmIEVOQUJM
RShTVkcpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6RG9jdW1lbnRSZXNvdXJjZToKKyNlbmRp
ZgogICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxv
d0ltYWdlRnJvbVNvdXJjZSh1cmwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6IHsKKyAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6CiAgICAgICAgIGlmICghbV9kb2N1bWVu
dC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93Rm9udEZyb21Tb3VyY2UodXJsKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQogI2lmIEVOQUJM
RShMSU5LX1BSRUZFVENIKQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtSZXNvdXJjZToK
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IGUxY2JlNDEuLjM1MWYxMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCkBAIC00MCw2
ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hl
ZXQ7CitjbGFzcyBDYWNoZWREb2N1bWVudDsKIGNsYXNzIENhY2hlZEZvbnQ7CiBjbGFzcyBDYWNo
ZWRJbWFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNlUmVxdWVzdDsKQEAgLTY1LDYgKzY2LDkgQEAg
cHVibGljOgogICAgIENhY2hlZFNjcmlwdCogcmVxdWVzdFNjcmlwdChjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKICAgICBDYWNoZWRGb250KiByZXF1ZXN0Rm9udChj
b25zdCBTdHJpbmcmIHVybCk7CiAKKyNpZiBFTkFCTEUoU1ZHKQorICAgIENhY2hlZERvY3VtZW50
KiByZXF1ZXN0U1ZHRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB1cmwpOworI2VuZGlmCiAjaWYgRU5B
QkxFKFhTTFQpCiAgICAgQ2FjaGVkWFNMU3R5bGVTaGVldCogcmVxdWVzdFhTTFN0eWxlU2hlZXQo
Y29uc3QgU3RyaW5nJiB1cmwpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCmluZGV4IDllN2ZlOGYuLmQxMTcx
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuY3BwCkBAIC01NSw2ICs1NSwxMCBAQCBzdGF0aWMgUmVzb3VyY2VSZXF1ZXN0
OjpUYXJnZXRUeXBlIGNhY2hlZFJlc291cmNlVHlwZVRvVGFyZ2V0VHlwZShDYWNoZWRSZXNvdXJj
ZQogICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N0eWxlU2hlZXQ7CiAg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OiAKICAgICAgICAgcmV0dXJuIFJlc291cmNl
UmVxdWVzdDo6VGFyZ2V0SXNTY3JpcHQ7CisjaWYgRU5BQkxFKFNWRykKKyAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpEb2N1bWVudFJlc291cmNlOgorICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1
ZXN0OjpUYXJnZXRJc1N1YnJlc291cmNlOworI2VuZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6Rm9udFJlc291cmNlOgogICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJ
c0ZvbnRSZXNvdXJjZTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFkb3dU
cmVlUm9vdENvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmNwcAppbmRleCAyZmE4ODRhLi4zMGE3NzkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYWRvd1Ry
ZWVSb290Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmNwcApAQCAtNTMsNyArNTMsOCBAQCB2b2lk
IFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAg
ICAgU1ZHVXNlRWxlbWVudCogdXNlRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR1VzZUVsZW1lbnQq
Pihub2RlKCkpOwogICAgIGlmICghbV9zaGFkb3dSb290KSB7CiAgICAgICAgIEFTU0VSVCghbV9y
ZWNyZWF0ZVRyZWUpOwotICAgICAgICBtX3NoYWRvd1Jvb3QgPSBTVkdTaGFkb3dUcmVlUm9vdEVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpLCB1c2VFbGVtZW50KTsKKyAgICAgICAgRG9jdW1lbnQq
IGRvYyA9IHVzZUVsZW1lbnQtPnJlZmVyZW5jZWREb2N1bWVudCgpOworICAgICAgICBtX3NoYWRv
d1Jvb3QgPSBTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQ6OmNyZWF0ZShkb2MgPyBkb2MgOiBkb2N1
bWVudCgpLCB1c2VFbGVtZW50KTsKICAgICAgICAgdXNlRWxlbWVudC0+YnVpbGRQZW5kaW5nUmVz
b3VyY2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCA5
ODFiYzljLi5kNDYyNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0y
Niw2ICsyNiw4IEBACiAjaW5jbHVkZSAiU1ZHVXNlRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQXR0
cmlidXRlLmgiCisjaW5jbHVkZSAiQ2FjaGVkRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBAIC0zNSw2ICszNyw3IEBACiAjaW5j
bHVkZSAiUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNv
dXJjZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmgiCisj
aW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIK
ICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2VMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHR0VsZW1l
bnQuaCIKQEAgLTc0LDYgKzc3LDcgQEAgaW5saW5lIFNWR1VzZUVsZW1lbnQ6OlNWR1VzZUVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3UKICAgICAsIG1f
dXBkYXRlc0Jsb2NrZWQoZmFsc2UpCiAgICAgLCBtX2lzUGVuZGluZ1Jlc291cmNlKGZhbHNlKQog
ICAgICwgbV9uZWVkc1NoYWRvd1RyZWVSZWNyZWF0aW9uKGZhbHNlKQorICAgICwgbV9jYWNoZWRE
b2N1bWVudCgwKQogewogfQogCkBAIC0xMjEsOCArMTI1LDE3IEBAIHZvaWQgU1ZHVXNlRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChTVkdV
UklSZWZlcmVuY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQorICAgICAgICBpZiAoU1ZH
VVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkgeworICAgICAgICAgICAg
aWYgKCFocmVmKCkuc3RhcnRzV2l0aCgiIyIpKSB7CisgICAgICAgICAgICAgICAgS1VSTCB1cmwo
ZG9jdW1lbnQoKS0+YmFzZVVSSSgpLCBocmVmKCkpOworICAgICAgICAgICAgICAgIGlmICh1cmwu
aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jYWNoZWRE
b2N1bWVudCA9IGRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RTVkdE
b2N1bWVudCh1cmwuc3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9jYWNoZWRE
b2N1bWVudCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FjaGVkRG9jdW1lbnQtPmFkZENs
aWVudCh0aGlzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogICAgIH0KIH0KQEAgLTEzMSw3ICsxNDQs
OSBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAgICAv
LyBUaGlzIGZ1bmN0aW9ucyBleGlzdHMgdG8gYXNzdXJlIGFzc3VtcHRpb25zIG1hZGUgaW4gdGhl
IGNvZGUgcmVnYXJkaW5nIFNWR0VsZW1lbnRJbnN0YW5jZSBjcmVhdGlvbi9kZXN0cnVjdGlvbiBh
cmUgc2F0aXNmaWVkLgogICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjppbnNlcnRl
ZEludG9Eb2N1bWVudCgpOwotICAgIEFTU0VSVCghbV90YXJnZXRFbGVtZW50SW5zdGFuY2UgfHwg
KChkb2N1bWVudCgpLT5pc1NWR0RvY3VtZW50KCkgfHwgZG9jdW1lbnQoKS0+aXNYSFRNTERvY3Vt
ZW50KCkpICYmICFzdGF0aWNfY2FzdDxYTUxEb2N1bWVudFBhcnNlcio+KGRvY3VtZW50KCktPnBh
cnNlcigpKS0+d2VsbEZvcm1lZCgpKSk7CisgICAgQVNTRVJUKCFtX3RhcmdldEVsZW1lbnRJbnN0
YW5jZQorICAgICAgICAgICB8fCAoKHJlZmVyZW5jZWREb2N1bWVudCgpLT5pc1NWR0RvY3VtZW50
KCkgfHwgcmVmZXJlbmNlZERvY3VtZW50KCktPmlzWEhUTUxEb2N1bWVudCgpKQorICAgICAgICAg
ICAgICAgJiYgIXN0YXRpY19jYXN0PFhNTERvY3VtZW50UGFyc2VyKj4ocmVmZXJlbmNlZERvY3Vt
ZW50KCktPnBhcnNlcigpKS0+d2VsbEZvcm1lZCgpKSk7CiAgICAgQVNTRVJUKCFtX2lzUGVuZGlu
Z1Jlc291cmNlKTsKIH0KIApAQCAtMTQxLDYgKzE1NiwxNSBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6
OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogICAgIGRldGFjaEluc3RhbmNlKCk7CiB9CiAKK0RvY3Vt
ZW50KiBTVkdVc2VFbGVtZW50OjpyZWZlcmVuY2VkRG9jdW1lbnQoKSBjb25zdAoreworICAgIGlm
IChocmVmKCkuc3RhcnRzV2l0aCgiIyIpKQorICAgICAgICByZXR1cm4gZG9jdW1lbnQoKTsKKyAg
ICBpZiAobV9jYWNoZWREb2N1bWVudCAmJiBtX2NhY2hlZERvY3VtZW50LT5pc0xvYWRlZCgpKQor
ICAgICAgICByZXR1cm4gbV9jYWNoZWREb2N1bWVudC0+ZG9jdW1lbnQoKTsKKyAgICByZXR1cm4g
MDsKK30KKwogdm9pZCBTVkdVc2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKQEAgLTQ1OCw4ICs0ODIsMTIgQEAg
dm9pZCBTVkdVc2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgLy8gSWYgd2Un
cmUgY2FsbGVkIHRoZSBmaXJzdCB0aW1lIChkdXJpbmcgc2hhZG93IHRyZWUgcm9vdCBjcmVhdGlv
biBmcm9tIFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyKQogICAgIC8vIHdlIGVpdGhl
ciBkZXRlcm1pbmUgdGhhdCBvdXIgdGFyZ2V0IGlzIGF2YWlsYWJsZSBvciBub3QgLSB0aGVuIHdl
IGFkZCBvdXJzZWx2ZXMgdG8gdGhlIHBlbmRpbmcgcmVzb3VyY2UgbGlzdAogICAgIC8vIE9uY2Ug
dGhlIHBlbmRpbmcgcmVzb3VyY2UgYXBwZWFycywgaXQgd2lsbCBjYWxsIGJ1aWxkUGVuZGluZ1Jl
c291cmNlKCksIHNvIHdlJ3JlIGNhbGxlZCBhIHNlY29uZCB0aW1lLgorICAgIERvY3VtZW50KiBk
b2MgPSByZWZlcmVuY2VkRG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvYykKKyAgICAgICAgcmV0dXJu
OworCiAgICAgU3RyaW5nIGlkID0gU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQoaHJlZigpKTsK
LSAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQo
aWQpOworICAgIEVsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBkb2MtPmdldEVsZW1lbnRCeUlkKGlk
KTsKICAgICBBU1NFUlQoIW1fdGFyZ2V0RWxlbWVudEluc3RhbmNlKTsKIAogICAgIGlmICghdGFy
Z2V0RWxlbWVudCkgewpAQCAtNTAzLDcgKzUzMSwxMCBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1
aWxkU2hhZG93QW5kSW5zdGFuY2VUcmVlKFNWR1NoYWRvd1RyZWVSb290RWxlbWVudCogc2hhZG93
UgogICAgIFNoYWRvd1RyZWVVcGRhdGVCbG9ja2VyIGJsb2NrZXIodGhpcyk7CiAKICAgICBTdHJp
bmcgaWQgPSBTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdldChocmVmKCkpOwotICAgIEVsZW1lbnQq
IHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChpZCk7CisgICAgRG9j
dW1lbnQqIGRvYyA9IHJlZmVyZW5jZWREb2N1bWVudCgpOworICAgIGlmICghZG9jKQorICAgICAg
ICByZXR1cm47CisgICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IGRvYy0+Z2V0RWxlbWVudEJ5
SWQoaWQpOwogICAgIGlmICghdGFyZ2V0RWxlbWVudCkgewogICAgICAgICAvLyBUaGUgb25seSB0
aW1lIHdlIHNob3VsZCBnZXQgaGVyZSBpcyB3aGVuIHRoZSB1c2UgZWxlbWVudCBoYXMgbm90IGJl
ZW4KICAgICAgICAgLy8gZ2l2ZW4gYSByZXNvdXJjZSB0byB0YXJnZXQuCkBAIC03NTMsOCArNzg0
LDEyIEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6YnVpbGRJbnN0YW5jZVRyZWUoU1ZHRWxlbWVudCog
dGFyZ2V0LCBTVkdFbGVtZW50SW5zdGFuY2UqIHRhCiAKIGJvb2wgU1ZHVXNlRWxlbWVudDo6aGFz
Q3ljbGVVc2VSZWZlcmVuY2luZyhTVkdVc2VFbGVtZW50KiB1c2UsIFNWR0VsZW1lbnRJbnN0YW5j
ZSogdGFyZ2V0SW5zdGFuY2UsIFNWR0VsZW1lbnQqJiBuZXdUYXJnZXQpCiB7CisgICAgRG9jdW1l
bnQqIGRvYyA9IHJlZmVyZW5jZWREb2N1bWVudCgpOworICAgIGlmICghZG9jKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKICAgICBTdHJpbmcgaWQgPSBTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdl
dCh1c2UtPmhyZWYoKSk7Ci0gICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50KCkt
PmdldEVsZW1lbnRCeUlkKGlkKTsgCisgICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IGRvYy0+
Z2V0RWxlbWVudEJ5SWQoaWQpOwogICAgIG5ld1RhcmdldCA9IDA7CiAgICAgaWYgKHRhcmdldEVs
ZW1lbnQgJiYgdGFyZ2V0RWxlbWVudC0+aXNTVkdFbGVtZW50KCkpCiAgICAgICAgIG5ld1Rhcmdl
dCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPih0YXJnZXRFbGVtZW50KTsKQEAgLTgzNCwxNSAr
ODY5LDE4IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6ZXhwYW5kVXNlRWxlbWVudHNJblNoYWRvd1Ry
ZWUoTm9kZSogZWxlbWVudCkKICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6
dXNlVGFnKSkgewogICAgICAgICBTVkdVc2VFbGVtZW50KiB1c2UgPSBzdGF0aWNfY2FzdDxTVkdV
c2VFbGVtZW50Kj4oZWxlbWVudCk7CiAKKyAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHJlZmVyZW5j
ZWREb2N1bWVudCgpOworICAgICAgICBBU1NFUlQoZG9jKTsKKwogICAgICAgICBTdHJpbmcgaWQg
PSBTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdldCh1c2UtPmhyZWYoKSk7Ci0gICAgICAgIEVsZW1l
bnQqIHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChpZCk7IAorICAg
ICAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jLT5nZXRFbGVtZW50QnlJZChpZCk7CiAg
ICAgICAgIFNWR0VsZW1lbnQqIHRhcmdldCA9IDA7CiAgICAgICAgIGlmICh0YXJnZXRFbGVtZW50
ICYmIHRhcmdldEVsZW1lbnQtPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICAgICAgdGFyZ2V0ID0g
c3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KHRhcmdldEVsZW1lbnQpOwogCiAgICAgICAgIC8vIERv
bid0IEFTU0VSVCh0YXJnZXQpIGhlcmUsIGl0IG1heSBiZSAicGVuZGluZyIsIHRvby4KICAgICAg
ICAgLy8gU2V0dXAgc3ViLXNoYWRvdyB0cmVlIHJvb3Qgbm9kZQotICAgICAgICBSZWZQdHI8U1ZH
U2hhZG93VHJlZUNvbnRhaW5lckVsZW1lbnQ+IGNsb25lUGFyZW50ID0gU1ZHU2hhZG93VHJlZUNv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKKyAgICAgICAgUmVmUHRyPFNWR1No
YWRvd1RyZWVDb250YWluZXJFbGVtZW50PiBjbG9uZVBhcmVudCA9IFNWR1NoYWRvd1RyZWVDb250
YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jKTsKICAgICAgICAgdXNlLT5jbG9uZUNoaWxkTm9kZXMo
Y2xvbmVQYXJlbnQuZ2V0KCkpOwogCiAgICAgICAgIC8vIFNwZWM6IEluIHRoZSBnZW5lcmF0ZWQg
Y29udGVudCwgdGhlICd1c2UnIHdpbGwgYmUgcmVwbGFjZWQgYnkgJ2cnLCB3aGVyZSBhbGwgYXR0
cmlidXRlcyBmcm9tIHRoZQpAQCAtODkxLDEzICs5MjksMTYgQEAgdm9pZCBTVkdVc2VFbGVtZW50
OjpleHBhbmRVc2VFbGVtZW50c0luU2hhZG93VHJlZShOb2RlKiBlbGVtZW50KQogdm9pZCBTVkdV
c2VFbGVtZW50OjpleHBhbmRTeW1ib2xFbGVtZW50c0luU2hhZG93VHJlZShOb2RlKiBlbGVtZW50
KQogewogICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzeW1ib2xUYWcpKSB7
CisgICAgICAgIERvY3VtZW50KiBkb2MgPSByZWZlcmVuY2VkRG9jdW1lbnQoKTsKKyAgICAgICAg
QVNTRVJUKGRvYyk7CisKICAgICAgICAgLy8gU3BlYzogVGhlIHJlZmVyZW5jZWQgJ3N5bWJvbCcg
YW5kIGl0cyBjb250ZW50cyBhcmUgZGVlcC1jbG9uZWQgaW50byB0aGUgZ2VuZXJhdGVkIHRyZWUs
CiAgICAgICAgIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IHRoZSAnc3ltYm9sJyBpcyByZXBs
YWNlZCBieSBhbiAnc3ZnJy4gVGhpcyBnZW5lcmF0ZWQgJ3N2Zycgd2lsbAogICAgICAgICAvLyBh
bHdheXMgaGF2ZSBleHBsaWNpdCB2YWx1ZXMgZm9yIGF0dHJpYnV0ZXMgd2lkdGggYW5kIGhlaWdo
dC4gSWYgYXR0cmlidXRlcyB3aWR0aCBhbmQvb3IKICAgICAgICAgLy8gaGVpZ2h0IGFyZSBwcm92
aWRlZCBvbiB0aGUgJ3VzZScgZWxlbWVudCwgdGhlbiB0aGVzZSBhdHRyaWJ1dGVzIHdpbGwgYmUg
dHJhbnNmZXJyZWQgdG8KICAgICAgICAgLy8gdGhlIGdlbmVyYXRlZCAnc3ZnJy4gSWYgYXR0cmli
dXRlcyB3aWR0aCBhbmQvb3IgaGVpZ2h0IGFyZSBub3Qgc3BlY2lmaWVkLCB0aGUgZ2VuZXJhdGVk
CiAgICAgICAgIC8vICdzdmcnIGVsZW1lbnQgd2lsbCB1c2UgdmFsdWVzIG9mIDEwMCUgZm9yIHRo
ZXNlIGF0dHJpYnV0ZXMuCi0gICAgICAgIFJlZlB0cjxTVkdTVkdFbGVtZW50PiBzdmdFbGVtZW50
ID0gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlKFNWR05hbWVzOjpzdmdUYWcsIGRvY3VtZW50KCkpOwor
ICAgICAgICBSZWZQdHI8U1ZHU1ZHRWxlbWVudD4gc3ZnRWxlbWVudCA9IFNWR1NWR0VsZW1lbnQ6
OmNyZWF0ZShTVkdOYW1lczo6c3ZnVGFnLCBkb2MpOwogCiAgICAgICAgIC8vIFRyYW5zZmVyIGFs
bCBhdHRyaWJ1dGVzIGZyb20gPHN5bWJvbD4gdG8gdGhlIG5ldyA8c3ZnPiBlbGVtZW50CiAgICAg
ICAgIHN2Z0VsZW1lbnQtPmF0dHJpYnV0ZXMoKS0+c2V0QXR0cmlidXRlcygqZWxlbWVudC0+YXR0
cmlidXRlcygpKTsKQEAgLTEwOTMsNiArMTEzNCwxMiBAQCBib29sIFNWR1VzZUVsZW1lbnQ6OnNl
bGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdT
dHlsZWRFbGVtZW50Kj4oZWxlbWVudCktPmhhc1JlbGF0aXZlTGVuZ3RocygpOwogfQogCit2b2lk
IFNWR1VzZUVsZW1lbnQ6OnNldFNWR0RvY3VtZW50KGNvbnN0IFN0cmluZyYgLyogaHJlZiAqLywg
Y29uc3QgS1VSTCYgLyogYmFzZVVSTCAqLywgY29uc3QgRG9jdW1lbnQqIC8qIGRvY3VtZW50ICov
KQoreworICAgIG1faXNQZW5kaW5nUmVzb3VyY2UgPSB0cnVlOworICAgIGJ1aWxkUGVuZGluZ1Jl
c291cmNlKCk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1VzZUVsZW1lbnQuaAppbmRleCAzMDU2OWI1Li43ZjUxOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
c2VFbGVtZW50LmgKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgU1ZHVXNlRWxlbWVudF9oCiAK
ICNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGgu
aCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC0zMiw2ICsz
Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVkRG9jdW1lbnQ7CiBj
bGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7CiBjbGFzcyBTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQ7
CiAKQEAgLTM5LDcgKzQxLDggQEAgY2xhc3MgU1ZHVXNlRWxlbWVudCA6IHB1YmxpYyBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZH
VGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0xhbmdTcGFjZSwKICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U1ZHVXNlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwogCkBAIC01MCw2ICs1MywxMCBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyQ2xpcENoaWxkKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoU1ZHKQorICAgIHZpcnR1YWwg
dm9pZCBzZXRTVkdEb2N1bWVudChjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiwgY29uc3QgRG9j
dW1lbnQqKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFNWR1VzZUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKQEAgLTU4LDYgKzY1LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBidWlsZFBlbmRpbmdSZXNv
dXJjZSgpOworICAgIERvY3VtZW50KiByZWZlcmVuY2VkRG9jdW1lbnQoKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CkBAIC0x
MjIsNiArMTMwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbmVlZHNTaGFkb3dUcmVlUmVjcmVh
dGlvbjsKICAgICBTdHJpbmcgbV9yZXNvdXJjZUlkOwogICAgIFJlZlB0cjxTVkdFbGVtZW50SW5z
dGFuY2U+IG1fdGFyZ2V0RWxlbWVudEluc3RhbmNlOworICAgIENhY2hlZERvY3VtZW50KiBtX2Nh
Y2hlZERvY3VtZW50OwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120886</attachid>
            <date>2012-01-02 09:07:43 -0800</date>
            <delta_ts>2012-01-16 09:03:28 -0800</delta_ts>
            <desc>Draft patch</desc>
            <filename>0001-external-up.patch</filename>
            <type>text/plain</type>
            <size>32394</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64">RnJvbSA2YWQ5YWFlZThkZmFjNjEzZTlhNjY2YjVhZDAzZWMxYTA5N2IyYjJhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSZW5hdGEgSG9kb3ZhbiA8cmVuaUB3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDIgSmFuIDIwMTIgMTc6NTM6NDEgKzAxMDAKU3ViamVjdDogW1BBVENIXSBleHRlcm5h
bCB1cAoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMTMgKysrCiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy9yZ2Iuc3Zn
ICAgICAgICAgICB8ICAgMTAgKystCiAuLi4vc3ZnL2N1c3RvbS91c2UtZXh0ZXJuLWhyZWYtZXhw
ZWN0ZWQuY2hlY2tzdW0gICB8ICAgIDEgKwogLi4uL3N2Zy9jdXN0b20vdXNlLWV4dGVybi1ocmVm
LWV4cGVjdGVkLnBuZyAgICAgICAgfCAgQmluIDAgLT4gMjg1NCBieXRlcwogLi4uL3N2Zy9jdXN0
b20vdXNlLWV4dGVybi1ocmVmLWV4cGVjdGVkLnR4dCAgICAgICAgfCAgIDMyICsrKysrKysKIExh
eW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWV4dGVybi1ocmVmLnN2ZyAgICAgICAgIHwgICAxMSAr
KysKIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICA1MyArKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSAgICAg
ICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcCAgICAgfCAgICA0ICsKIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oICAgICAgIHwgICAgMyArCiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCB8ICAgIDEgKwogLi4uL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCAgfCAgIDE1ICsrKwogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggfCAgICA0ICsKIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgIHwgICA5NiArKysr
KysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmggICAgfCAgIDY3ICsrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VVJJUmVmZXJlbmNlLmNwcCAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmNwcCAgICAgICAgICAgICAgIHwgICA3MiArKysrKysrKysrKysrKy0K
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmggICAgICAgICAgICAgICAgIHwgICAx
MyArKystCiAyMCBmaWxlcyBjaGFuZ2VkLCAzOTIgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25z
KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtZXh0ZXJu
LWhyZWYtZXhwZWN0ZWQuY2hlY2tzdW0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL3VzZS1leHRlcm4taHJlZi1leHBlY3RlZC5wbmcKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1leHRlcm4taHJlZi1leHBlY3RlZC50eHQKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1leHRlcm4taHJlZi5z
dmcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWRhMzUwMi4uMzA4NjJiYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAxLTAyICBSZW5hdGEgSG9kb3ZhbiAgPHJlbmlAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBFeHRlcm5hbCA8dXNlPiB4bGluazpocmVmIHJlZmVyZW5jZXMg
ZG8gbm90IHdvcmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBzdmcvY3VzdG9tL3Jlc291cmNlcy9yZ2Iuc3ZnOiBXcmFwcGVkIDxyZWN0PiBlbGVtZW50
cyBpbiA8Zz4gYW5kIGFkZGVkIGlkIGF0dHJpYnV0ZXMuCisgICAgICAgICogc3ZnL2N1c3RvbS91
c2UtZXh0ZXJuLWhyZWYtZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIHN2Zy9j
dXN0b20vdXNlLWV4dGVybi1ocmVmLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogc3Zn
L2N1c3RvbS91c2UtZXh0ZXJuLWhyZWYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvY3VzdG9tL3VzZS1leHRlcm4taHJlZi5zdmc6IEFkZGVkLgorCiAyMDExLTEyLTI4ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIGdldENv
bXB1dGVkU3R5bGUgZm9yIGJvcmRlci1jb2xvciBpcyBub3QgaW1wbGVtZW50ZWQuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy9yZ2Iuc3ZnIGIvTGF5b3V0VGVz
dHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvcmdiLnN2ZwppbmRleCBkYzU1ODE2Li4xYzU5NGNlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy9yZ2Iuc3ZnCisrKyBi
L0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcmVzb3VyY2VzL3JnYi5zdmcKQEAgLTEsNSArMSw3IEBA
Ci08c3ZnIHdpZHRoPSIxOTIiIGhlaWdodD0iNjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyI+Ci0gIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgZmls
bD0iI2MwMCIvPgotICA8cmVjdCB4PSI2NCIgeT0iMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiBm
aWxsPSIjMDkwIi8+Ci0gIDxyZWN0IHg9IjEyOCIgeT0iMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0
IiBmaWxsPSIjMDBmIi8+Cis8c3ZnIGlkPSJzdmctcm9vdCIgd2lkdGg9IjE5MiIgaGVpZ2h0PSI2
NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgPGcgaWQ9IlJHQiI+Cisg
ICAgPHJlY3QgaWQ9IlIiIHg9IjAiIHk9IjAiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgZmlsbD0i
I2MwMCIvPgorICAgIDxyZWN0IGlkPSJHIiB4PSI2NCIgeT0iMCIgd2lkdGg9IjY0IiBoZWlnaHQ9
IjY0IiBmaWxsPSIjMDkwIi8+CisgICAgPHJlY3QgaWQ9IkIiIHg9IjEyOCIgeT0iMCIgd2lkdGg9
IjY0IiBoZWlnaHQ9IjY0IiBmaWxsPSIjMDBmIi8+CisgIDwvZz4KIDwvc3ZnPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtZXh0ZXJuLWhyZWYtZXhwZWN0ZWQuY2hlY2tz
dW0gYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1leHRlcm4taHJlZi1leHBlY3RlZC5jaGVj
a3N1bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzliNGQyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtZXh0ZXJuLWhyZWYtZXhwZWN0
ZWQuY2hlY2tzdW0KQEAgLTAsMCArMSBAQAorMzY1MTc4NzlmM2ExMDUwNzRmYWFjNWNkZDI0YjVi
MDUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL3VzZS1leHRlcm4taHJlZi1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9zdmcv
Y3VzdG9tL3VzZS1leHRlcm4taHJlZi1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhiYjY0NzE1
ODU3Mzk4ZjRhNTAwNDBiNzBlYWE5Mzc2ZjcyYTRhYgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwg
Mjg1NAp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheakwlYUp9Xyhh
U1ctTF5ZJXR5P19tY0sKem1WPSlZam50RjVtS1JocFpwPllxNlJKNGx7NTZeVGBfcnhNY1o9KW5P
OGVmVmB1V1hJaEp4PEBjYk9SJj96dHJ9CnpHOHx6TVZ7cV5wV2dyRUBuO0Ezak47NUZUOWNeWjE1
RDw9RlVAJllYbl87flY4MVBvOHEwaH1mOHN4YXItRHViawp6VCF5NCgqaSlFb016eGImOyoxOH1Y
d1hxb1Z+d1Z0KGV5Sm8pNlp7ND4pJGRuN1lVX1oxaCMofUpZREA8KTtUM0sKRjBSU35LO3JSZG4K
CmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0
b20vdXNlLWV4dGVybi1ocmVmLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20v
dXNlLWV4dGVybi1ocmVmLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40YTQxNDE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3Rv
bS91c2UtZXh0ZXJuLWhyZWYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzIgQEAKK2xheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclNWR1Jvb3Qge3N2Z30gYXQgKDAs
MCkgc2l6ZSAxOTJ4MjI0CisgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHt1c2V9IGF0ICgwLDApIHNp
emUgMTkyeDY0CisgICAgICBSZW5kZXJTVkdDb250YWluZXIge2d9IGF0ICgwLDApIHNpemUgMTky
eDY0CisgICAgICAgIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIHtzdmd9IGF0ICgwLDApIHNp
emUgMTkyeDY0CisgICAgICAgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoMCwwKSBzaXpl
IDE5Mng2NAorICAgICAgICAgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDAsMCkgc2l6ZSA2
NHg2NCBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jQ0MwMDAwXX1dIFt4PTAuMDBdIFt5PTAu
MDBdIFt3aWR0aD02NC4wMF0gW2hlaWdodD02NC4wMF0KKyAgICAgICAgICAgIFJlbmRlclNWR1Jl
Y3Qge3JlY3R9IGF0ICg2NCwwKSBzaXplIDY0eDY0IFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9y
PSMwMDk5MDBdfV0gW3g9NjQuMDBdIFt5PTAuMDBdIFt3aWR0aD02NC4wMF0gW2hlaWdodD02NC4w
MF0KKyAgICAgICAgICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0ICgxMjgsMCkgc2l6ZSA2NHg2
NCBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDAwMEZGXX1dIFt4PTEyOC4wMF0gW3k9MC4w
MF0gW3dpZHRoPTY0LjAwXSBbaGVpZ2h0PTY0LjAwXQorICAgIFJlbmRlclNWR0NvbnRhaW5lciB7
dXNlfSBhdCAoMCw4MCkgc2l6ZSAxOTJ4NjQKKyAgICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30g
YXQgKDAsODApIHNpemUgMTkyeDY0IFt0cmFuc2Zvcm09e209KCgxLjAwLDAuMDApKDAuMDAsMS4w
MCkpIHQ9KDAuMDAsODAuMDApfV0KKyAgICAgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAo
MCw4MCkgc2l6ZSAxOTJ4NjQKKyAgICAgICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMCw4
MCkgc2l6ZSA2NHg2NCBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jQ0MwMDAwXX1dIFt4PTAu
MDBdIFt5PTAuMDBdIFt3aWR0aD02NC4wMF0gW2hlaWdodD02NC4wMF0KKyAgICAgICAgICBSZW5k
ZXJTVkdSZWN0IHtyZWN0fSBhdCAoNjQsODApIHNpemUgNjR4NjQgW2ZpbGw9e1t0eXBlPVNPTElE
XSBbY29sb3I9IzAwOTkwMF19XSBbeD02NC4wMF0gW3k9MC4wMF0gW3dpZHRoPTY0LjAwXSBbaGVp
Z2h0PTY0LjAwXQorICAgICAgICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0ICgxMjgsODApIHNp
emUgNjR4NjQgW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwMDBGRl19XSBbeD0xMjguMDBd
IFt5PTAuMDBdIFt3aWR0aD02NC4wMF0gW2hlaWdodD02NC4wMF0KKyAgICBSZW5kZXJTVkdDb250
YWluZXIge3VzZX0gYXQgKDAsMTYwKSBzaXplIDY0eDY0CisgICAgICBSZW5kZXJTVkdDb250YWlu
ZXIge2d9IGF0ICgwLDE2MCkgc2l6ZSA2NHg2NCBbdHJhbnNmb3JtPXttPSgoMS4wMCwwLjAwKSgw
LjAwLDEuMDApKSB0PSgwLjAwLDE2MC4wMCl9XQorICAgICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0
fSBhdCAoMCwxNjApIHNpemUgNjR4NjQgW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9I0NDMDAw
MF19XSBbeD0wLjAwXSBbeT0wLjAwXSBbd2lkdGg9NjQuMDBdIFtoZWlnaHQ9NjQuMDBdCisgICAg
UmVuZGVyU1ZHQ29udGFpbmVyIHt1c2V9IGF0ICg2NCwxNjApIHNpemUgNjR4NjQKKyAgICAgIFJl
bmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDY0LDE2MCkgc2l6ZSA2NHg2NCBbdHJhbnNmb3JtPXtt
PSgoMS4wMCwwLjAwKSgwLjAwLDEuMDApKSB0PSgwLjAwLDE2MC4wMCl9XQorICAgICAgICBSZW5k
ZXJTVkdSZWN0IHtyZWN0fSBhdCAoNjQsMTYwKSBzaXplIDY0eDY0IFtmaWxsPXtbdHlwZT1TT0xJ
RF0gW2NvbG9yPSMwMDk5MDBdfV0gW3g9NjQuMDBdIFt5PTAuMDBdIFt3aWR0aD02NC4wMF0gW2hl
aWdodD02NC4wMF0KKyAgICBSZW5kZXJTVkdDb250YWluZXIge3VzZX0gYXQgKDEyOCwxNjApIHNp
emUgNjR4NjQKKyAgICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDEyOCwxNjApIHNpemUg
NjR4NjQgW3RyYW5zZm9ybT17bT0oKDEuMDAsMC4wMCkoMC4wMCwxLjAwKSkgdD0oMC4wMCwxNjAu
MDApfV0KKyAgICAgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDEyOCwxNjApIHNpemUgNjR4
NjQgW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwMDBGRl19XSBbeD0xMjguMDBdIFt5PTAu
MDBdIFt3aWR0aD02NC4wMF0gW2hlaWdodD02NC4wMF0KKyAgICBSZW5kZXJTVkdDb250YWluZXIg
e3VzZX0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQg
KDAsMCkgc2l6ZSAweDAKKyAgICBSZW5kZXJTVkdDb250YWluZXIge3VzZX0gYXQgKDAsMCkgc2l6
ZSAweDAKKyAgICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDAsMCkgc2l6ZSAweDAKKyAg
ICBSZW5kZXJTVkdDb250YWluZXIge3VzZX0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRl
clNWR0NvbnRhaW5lciB7Z30gYXQgKDAsMCkgc2l6ZSAweDAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N2Zy9jdXN0b20vdXNlLWV4dGVybi1ocmVmLnN2ZyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0
b20vdXNlLWV4dGVybi1ocmVmLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xMWI4ZDI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2Ut
ZXh0ZXJuLWhyZWYuc3ZnCkBAIC0wLDAgKzEsMTEgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI+CisgIDx1c2UgeGxpbms6aHJlZj0icmVzb3VyY2VzL3JnYi5zdmcjc3ZnLXJvb3QiLz4KKyAg
PHVzZSB5PSI4MCIgeGxpbms6aHJlZj0icmVzb3VyY2VzL3JnYi5zdmcjUkdCIi8+CisgIDx1c2Ug
eT0iMTYwIiB4bGluazpocmVmPSJyZXNvdXJjZXMvcmdiLnN2ZyNSIi8+CisgIDx1c2UgeT0iMTYw
IiB4bGluazpocmVmPSJyZXNvdXJjZXMvcmdiLnN2ZyNHIi8+CisgIDx1c2UgeT0iMTYwIiB4bGlu
azpocmVmPSJyZXNvdXJjZXMvcmdiLnN2ZyNCIi8+CisgIDwhLS0gVGhlIGZvbGxvd2luZyBlbGVt
ZW50cyBzaGFsbCBub3QgYmUgZGlzcGxheWVkLiAtLT4KKyAgPHVzZSB5PSIyNDAiIHhsaW5rOmhy
ZWY9InJlc291cmNlcy9yZ2Iuc3ZnIi8+CisgIDx1c2UgeT0iMjQwIiB4bGluazpocmVmPSJyZXNv
dXJjZXMvcmdiLnN2ZyNNSVNTSU5HIi8+CisgIDx1c2UgeT0iMjQwIiB4bGluazpocmVmPSJyZXNv
dXJjZXMvTUlTU0lORy5zdmcjTUlTU0lORyIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Y0ZjAw
ZC4uYzVhZTY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTAxLTAyICBSZW5h
dGEgSG9kb3ZhbiAgPHJlbmlAd2Via2l0Lm9yZz4KKworICAgICAgICBFeHRlcm5hbCA8dXNlPiB4
bGluazpocmVmIHJlZmVyZW5jZXMgZG8gbm90IHdvcmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBleHRlcm5hbCByZWZlcmVuY2VzIG9uIDx1
c2U+IGJ5IGludHJvZHVjaW5nIENhY2hlZFNWR0RvY3VtZW50LAorICAgICAgICB3aGljaCBoYW5k
bGVzIGRvY3VtZW50IHN1YnJlc291cmNlcy4KKworICAgICAgICBUZXN0OiBzdmcvY3VzdG9tL3Vz
ZS1leHRlcm4taHJlZi5zdmcKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRQ
cmlvcml0eUZvclJlc291cmNlVHlwZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0U1ZHRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6
OkNhY2hlZFNWR0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50
Ojp+Q2FjaGVkU1ZHRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1l
bnQ6OmRpZEFkZENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6
c2V0RW5jb2RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29k
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpkYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjplcnJvcik6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkU1ZHRG9jdW1lbnQ6OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50OjpzY2hlZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudENs
aWVudDo6fkNhY2hlZFNWR0RvY3VtZW50Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNWR0RvY3VtZW50Q2xpZW50OjpleHBlY3RlZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkU1ZHRG9jdW1lbnRDbGllbnQ6OnJlc291cmNlQ2xpZW50VHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTVkdEb2N1bWVudENsaWVudDo6c2V0U1ZHRG9jdW1lbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250YWluZXIuY3BwOgorICAg
ICAgICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVVJJ
UmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyk6CisgICAgICAgICogc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6U1ZHVXNl
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpyZWZlcmVuY2VkRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6ZXhwYW5kVXNlRWxlbWVu
dHNJblNoYWRvd1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6ZXhwYW5k
U3ltYm9sRWxlbWVudHNJblNoYWRvd1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxl
bWVudDo6c2V0U1ZHRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6
bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50Lmg6CisKIDIwMTEt
MTItMjggIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAg
ICAgICAgZ2V0Q29tcHV0ZWRTdHlsZSBmb3IgYm9yZGVyLWNvbG9yIGlzIG5vdCBpbXBsZW1lbnRl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDBiYzUyMWIuLjU3ZjM4ZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjQ1Myw2ICsyNDUzLDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmgg
XAorICAgICAgICBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
Y3BwIFwKKyAgICAgICAgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBcCiAJU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBkOGVkNThm
MC4uYmY0NTdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC05MDgsNiArOTA4LDggQEAgU09VUkNFUyArPSBc
CiAgICAgbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHAgXAogICAg
IGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgXAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcCBcCisgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNw
cCBcCisgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggXAogICAgIGxvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBc
CiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggYTE2M2E4ZC4uYjg3MWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjg5OSw2ICsyODk5
LDggQEAKICAgICAgICAgICAgICdsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAn
LAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCcsCiAg
ICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCcsCisgICAgICAg
ICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCcsCisgICAgICAgICAgICAn
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgnLAogICAgICAgICAgICAgJ2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBkMDAz
YzRhLi5iZjI1NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKQEAgLTYxLDYgKzYxLDEwIEBAIHN0YXRpYyBSZXNvdXJjZUxvYWRQcmlvcml0
eSBkZWZhdWx0UHJpb3JpdHlGb3JSZXNvdXJjZVR5cGUoQ2FjaGVkUmVzb3VyY2U6OlR5cGUKICNl
bmRpZgogICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5SGlnaDsKICAgICAg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OgorI2lmIEVOQUJMRShTVkcpCisgICAgICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0RvY3VtZW50UmVzb3VyY2U6CisgICAgICAgICAgICBy
ZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3c7CisjZW5kaWYKICAgICAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOgogICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpS
YXdSZXNvdXJjZToKICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eU1lZGl1
bTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXgg
ZWFjMjYyMS4uOWQyM2U4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKQEAgLTY1LDYgKzY1LDkgQEAgcHVibGljOgogICAgICAgICBTY3JpcHQsCiAg
ICAgICAgIEZvbnRSZXNvdXJjZSwKICAgICAgICAgUmF3UmVzb3VyY2UKKyNpZiBFTkFCTEUoU1ZH
KQorICAgICAgICAsIFNWR0RvY3VtZW50UmVzb3VyY2UKKyNlbmRpZgogI2lmIEVOQUJMRShYU0xU
KQogICAgICAgICAsIFhTTFN0eWxlU2hlZXQKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaAppbmRleCA0YWEyZGQyLi44NzUy
OWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQuaApAQCAtMzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgICAgIEltYWdlVHlwZSwK
ICAgICAgICAgRm9udFR5cGUsCiAgICAgICAgIFN0eWxlU2hlZXRUeXBlLAorICAgICAgICBTVkdE
b2N1bWVudFR5cGUsCiAgICAgICAgIFJhd1Jlc291cmNlVHlwZQogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IGM3ZjA2ODYuLjAxMzIzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAKICNpbmNsdWRlICJDYWNoZWRDU1NTdHlsZVNo
ZWV0LmgiCisjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJDYWNoZWRG
b250LmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNv
dXJjZS5oIgpAQCAtNzIsNiArNzMsMTAgQEAgc3RhdGljIENhY2hlZFJlc291cmNlKiBjcmVhdGVS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcXVlc3QKICAgICAg
ICAgcmV0dXJuIG5ldyBDYWNoZWRDU1NTdHlsZVNoZWV0KHJlcXVlc3QsIGNoYXJzZXQpOwogICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKICAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRT
Y3JpcHQocmVxdWVzdCwgY2hhcnNldCk7CisjaWYgRU5BQkxFKFNWRykKKyAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpTVkdEb2N1bWVudFJlc291cmNlOgorICAgICAgICByZXR1cm4gbmV3IENhY2hl
ZFNWR0RvY3VtZW50KHJlcXVlc3QpOworI2VuZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6
Rm9udFJlc291cmNlOgogICAgICAgICByZXR1cm4gbmV3IENhY2hlZEZvbnQocmVxdWVzdCk7CiAg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2U6CkBAIC0yMjUsNiArMjMwLDEzIEBA
IENhY2hlZFhTTFN0eWxlU2hlZXQqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0WFNMU3R5
bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTVkcpCitD
YWNoZWRTVkdEb2N1bWVudCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RTVkdEb2N1bWVu
dChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENh
Y2hlZFNWR0RvY3VtZW50Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpTVkdEb2N1
bWVudFJlc291cmNlLCByZXF1ZXN0LCByZXF1ZXN0LnVybCgpLCBkZWZhdWx0Q2FjaGVkUmVzb3Vy
Y2VPcHRpb25zKCkpKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCiBD
YWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RMaW5rUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
dXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKIHsKQEAgLTMxMyw2ICszMjUsOSBAQCBib29sIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUs
IGNvbnN0IEtVUkwmIHVybAogICAgICAgICAvLyBUaGVzZSB0eXBlcyBvZiByZXNvdXJjZXMgY2Fu
IGJlIGxvYWRlZCBmcm9tIGFueSBvcmlnaW4uCiAgICAgICAgIC8vIEZJWE1FOiBBcmUgd2Ugc3Vy
ZSBhYm91dCBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlPwogICAgICAgICBicmVhazsKKyNp
ZiBFTkFCTEUoU1ZHKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0RvY3VtZW50UmVzb3Vy
Y2U6CisjZW5kaWYKICNpZiBFTkFCTEUoWFNMVCkKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpY
U0xTdHlsZVNoZWV0OgogICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkt
PmNhblJlcXVlc3QodXJsKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCA4NmRjYTBlLi5lNWQ1MmNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaApAQCAt
NDAsNiArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRDU1NTdHls
ZVNoZWV0OworY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnQ7CiBjbGFzcyBDYWNoZWRGb250OwogY2xh
c3MgQ2FjaGVkSW1hZ2U7CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKQEAgLTY5LDYgKzcwLDkg
QEAgcHVibGljOgogICAgIENhY2hlZEZvbnQqIHJlcXVlc3RGb250KFJlc291cmNlUmVxdWVzdCYp
OwogICAgIENhY2hlZFJhd1Jlc291cmNlKiByZXF1ZXN0UmF3UmVzb3VyY2UoUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAKKyNpZiBFTkFCTEUoU1ZHKQor
ICAgIENhY2hlZFNWR0RvY3VtZW50KiByZXF1ZXN0U1ZHRG9jdW1lbnQoUmVzb3VyY2VSZXF1ZXN0
Jik7CisjZW5kaWYKICNpZiBFTkFCTEUoWFNMVCkKICAgICBDYWNoZWRYU0xTdHlsZVNoZWV0KiBy
ZXF1ZXN0WFNMU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZhMzJlNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTAsMCAr
MSw5NiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTAgUm9iIEJ1aXMgPHJ3bGJ1aXNAZ21h
aWwuY29tPgorICAgIENvcHlyaWdodCAoQykgMjAxMSBDb3NtaW4gVHJ1dGEgPGN0cnV0YUBnbWFp
bC5jb20+CisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisgICAg
Q29weXJpZ2h0IChDKSAyMDEyIFJlbmF0YSBIb2RvdmFuIDxyZW5pQHdlYmtpdC5vcmc+CisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNWRykKKy8vIEN1cnJlbnRseSwgd2Ug
b25seSBuZWVkIENhY2hlZFNWR0RvY3VtZW50IGZvciBTVkcgZG9jdW1lbnRzLgorCisjaW5jbHVk
ZSAiQ2FjaGVkU1ZHRG9jdW1lbnQuaCIKKworI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50
LmgiCisjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
KyNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworQ2FjaGVkU1ZHRG9jdW1lbnQ6OkNhY2hlZFNWR0RvY3VtZW50KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKKyAgICA6IENhY2hlZFJlc291cmNlKHJlcXVlc3QsIFNWR0RvY3VtZW50
UmVzb3VyY2UpCisgICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJh
cHBsaWNhdGlvbi94bWwiKSkKK3sKKyAgICBzZXRBY2NlcHQoImltYWdlL3N2Zyt4bWwiKTsKK30K
KworQ2FjaGVkU1ZHRG9jdW1lbnQ6On5DYWNoZWRTVkdEb2N1bWVudCgpCit7Cit9CisKK3ZvaWQg
Q2FjaGVkU1ZHRG9jdW1lbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCAqYykK
K3sKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8Q2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQqPihjKS0+
cmVzb3VyY2VDbGllbnRUeXBlKCkgPT0gQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQ6OmV4cGVjdGVk
VHlwZSgpKTsKKworICAgICBpZiAoIWlzTG9hZGluZygpKQorICAgICAgICBzdGF0aWNfY2FzdDxD
YWNoZWRTVkdEb2N1bWVudENsaWVudCo+KGMpLT5zZXRTVkdEb2N1bWVudCgpOworfQorCit2b2lk
IENhY2hlZFNWR0RvY3VtZW50OjpzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmIGNocykKK3sKKyAg
ICBtX2RlY29kZXItPnNldEVuY29kaW5nKGNocywgVGV4dFJlc291cmNlRGVjb2Rlcjo6RW5jb2Rp
bmdGcm9tSFRUUEhlYWRlcik7Cit9CisKK1N0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2Rp
bmcoKSBjb25zdAoreworICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwor
fQorCit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3sKKyAgICBpZiAoIWFsbERhdGFSZWNlaXZl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKCFtX2RvY3VtZW50KTsKKyAgICBtX2Rv
Y3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAgIG1fZGF0YSA9IGRhdGE7
CisKKyAgICBTdHJpbmcgZGVjb2RlZFRleHQ7CisgICAgaWYgKG1fZGF0YSkgeworICAgICAgICBk
ZWNvZGVkVGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNp
emUoKSk7CisgICAgICAgIGRlY29kZWRUZXh0ICs9IG1fZGVjb2Rlci0+Zmx1c2goKTsKKyAgICB9
CisKKyAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZWRUZXh0KTsKKyAgICBzZXRMb2Fk
aW5nKGZhbHNlKTsKKyAgICBjaGVja05vdGlmeSgpOworfQorCit2b2lkIENhY2hlZFNWR0RvY3Vt
ZW50OjplcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzIHN0YXR1cykKK3sKKyAgICBzZXRTdGF0
dXMoc3RhdHVzKTsKKyAgICBBU1NFUlQoZXJyb3JPY2N1cnJlZCgpKTsKKyAgICBzZXRMb2FkaW5n
KGZhbHNlKTsKKyAgICBjaGVja05vdGlmeSgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjI1ZmYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTAsMCArMSw2NyBA
QAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTAgUm9iIEJ1aXMgPHJ3bGJ1aXNAZ21haWwuY29t
PgorICAgIENvcHlyaWdodCAoQykgMjAxMSBDb3NtaW4gVHJ1dGEgPGN0cnV0YUBnbWFpbC5jb20+
CisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisgICAgQ29weXJp
Z2h0IChDKSAyMDEyIFJlbmF0YSBIb2RvdmFuIDxyZW5pQHdlYmtpdC5vcmc+CisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRl
ZiBDYWNoZWRTVkdEb2N1bWVudF9oCisjZGVmaW5lIENhY2hlZFNWR0RvY3VtZW50X2gKKworI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIFRleHRS
ZXNvdXJjZURlY29kZXI7CisKK2NsYXNzIENhY2hlZFNWR0RvY3VtZW50IDogcHVibGljIENhY2hl
ZFJlc291cmNlIHsKK3B1YmxpYzoKKyAgICBDYWNoZWRTVkdEb2N1bWVudChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKKyAgICB2aXJ0dWFsIH5DYWNoZWRTVkdEb2N1bWVudCgpOworCisgICAgRG9j
dW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQorCisg
ICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOworCisg
ICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGRhdGEoUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CisKKyAgICB2aXJ0dWFsIGJvb2wg
c2NoZWR1bGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBSZWZQ
dHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+
IG1fZGVjb2RlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7Cit9OworCitjbGFz
cyBDYWNoZWRTVkdEb2N1bWVudENsaWVudCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQoKSB7IH0KKyAg
ICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIGV4cGVjdGVkVHlwZSgpIHsgcmV0dXJu
IFNWR0RvY3VtZW50VHlwZTsgfQorICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBl
IHJlc291cmNlQ2xpZW50VHlwZSgpIHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U1ZHRG9jdW1lbnQoKSB7IH07Cit9OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAppbmRleCAwNTRiOTk5Li5mOWVmODhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcApAQCAtNjcsNyArNjcsNyBAQCBF
bGVtZW50KiBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGNvbnN0
IFN0cmluZyYgaXJpLCBEb2N1bWVudAogICAgIFN0cmluZyBpZCA9IGZyYWdtZW50SWRlbnRpZmll
ckZyb21JUklTdHJpbmcoaXJpLCBkb2N1bWVudCk7CiAgICAgaWYgKGZyYWdtZW50SWRlbnRpZmll
cikKICAgICAgICAgKmZyYWdtZW50SWRlbnRpZmllciA9IGlkOwotICAgIC8vIEZJWE1FOiBIYW5k
bGUgZXh0ZXJuYWwgcmVmZXJlbmNlcyAoQnVnIDY1MzQ0KS4KKwogICAgIHJldHVybiBkb2N1bWVu
dC0+Z2V0RWxlbWVudEJ5SWQoaWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5j
cHAKaW5kZXggNTVmNzBmNC4uM2FhZjkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50
LmNwcApAQCAtMyw2ICszLDggQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuYXRhIEhvZG92YW4gPHJlbmlAd2Via2l0Lm9yZz4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMjYsNiArMjgsNyBAQAogI2luY2x1ZGUgIlNWR1VzZUVsZW1l
bnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
TG9hZGVyLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKQEAgLTg0LDYgKzg3LDcgQEAgaW5saW5lIFNWR1Vz
ZUVsZW1lbnQ6OlNWR1VzZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3UKICAgICAsIG1faGVpZ2h0KExlbmd0aE1vZGVIZWlnaHQpCiAgICAgLCBtX3Vw
ZGF0ZXNCbG9ja2VkKGZhbHNlKQogICAgICwgbV9uZWVkc1NoYWRvd1RyZWVSZWNyZWF0aW9uKGZh
bHNlKQorICAgICwgbV9jYWNoZWREb2N1bWVudCgwKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KFNWR05hbWVzOjp1c2VUYWcpKTsKICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNW
R1VzZUVsZW1lbnQoKTsKQEAgLTE0OCw2ICsxNTIsMTUgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgICAgICAgfHwgU1ZH
TGFuZ1NwYWNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKQogICAgICAgICAgICAgIHx8IFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpCiAg
ICAgICAgICAgICAgfHwgU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KSkgeworICAgICAgICAgICAgaWYgKCFocmVmKCkuc3RhcnRzV2l0aCgiIyIpKSB7CisgICAgICAg
ICAgICBLVVJMIHVybChkb2N1bWVudCgpLT5iYXNlVVJJKCksIGhyZWYoKSk7CisgICAgICAgICAg
ICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKSB7CisgICAgICAgICAgICAgICAgUmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsLnN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBtX2Nh
Y2hlZERvY3VtZW50ID0gZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVz
dFNWR0RvY3VtZW50KHJlcXVlc3QpOworICAgICAgICAgICAgICAgIGlmIChtX2NhY2hlZERvY3Vt
ZW50KQorICAgICAgICAgICAgICAgICAgICBtX2NhY2hlZERvY3VtZW50LT5hZGRDbGllbnQodGhp
cyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAKQEAgLTE3NSw2ICsxODgsMTUgQEAgdm9pZCBTVkdVc2VFbGVtZW50
OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKICAgICBkZXRhY2hJbnN0YW5jZSgpOwogfQogCitEb2N1
bWVudCogU1ZHVXNlRWxlbWVudDo6cmVmZXJlbmNlZERvY3VtZW50KCkgY29uc3QKK3sKKyAgICBp
ZiAoaHJlZigpLnN0YXJ0c1dpdGgoIiMiKSkKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50KCk7Cisg
ICAgaWYgKG1fY2FjaGVkRG9jdW1lbnQgJiYgbV9jYWNoZWREb2N1bWVudC0+aXNMb2FkZWQoKSkK
KyAgICAgICAgcmV0dXJuIG1fY2FjaGVkRG9jdW1lbnQtPmRvY3VtZW50KCk7CisgICAgcmV0dXJu
IDA7Cit9CisKIHZvaWQgU1ZHVXNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRl
KGF0dHJOYW1lKSkgewpAQCAtNDU3LDggKzQ3OSwxMiBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1
aWxkUGVuZGluZ1Jlc291cmNlKCkKICAgICAvLyBJZiB3ZSdyZSBjYWxsZWQgdGhlIGZpcnN0IHRp
bWUgKGR1cmluZyBzaGFkb3cgdHJlZSByb290IGNyZWF0aW9uIGZyb20gUmVuZGVyU1ZHU2hhZG93
VHJlZVJvb3RDb250YWluZXIpCiAgICAgLy8gd2UgZWl0aGVyIGRldGVybWluZSB0aGF0IG91ciB0
YXJnZXQgaXMgYXZhaWxhYmxlIG9yIG5vdCAtIHRoZW4gd2UgYWRkIG91cnNlbHZlcyB0byB0aGUg
cGVuZGluZyByZXNvdXJjZSBsaXN0CiAgICAgLy8gT25jZSB0aGUgcGVuZGluZyByZXNvdXJjZSBh
cHBlYXJzLCBpdCB3aWxsIGNhbGwgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKSwgc28gd2UncmUgY2Fs
bGVkIGEgc2Vjb25kIHRpbWUuCisgICAgRG9jdW1lbnQqIGRvYyA9IHJlZmVyZW5jZWREb2N1bWVu
dCgpOworICAgIGlmICghZG9jKQorICAgICAgICByZXR1cm47CisKICAgICBTdHJpbmcgaWQ7Ci0g
ICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVu
dEZyb21JUklTdHJpbmcoaHJlZigpLCBkb2N1bWVudCgpLCAmaWQpOworICAgIEVsZW1lbnQqIHRh
cmdldEVsZW1lbnQgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5n
KGhyZWYoKSwgZG9jLCAmaWQpOwogICAgIEFTU0VSVCghbV90YXJnZXRFbGVtZW50SW5zdGFuY2Up
OwogCiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KSB7CkBAIC00OTcsMTIgKzUyMywxNiBAQCB2b2lk
IFNWR1VzZUVsZW1lbnQ6OmJ1aWxkU2hhZG93QW5kSW5zdGFuY2VUcmVlKFNWR1NoYWRvd1RyZWVS
b290RWxlbWVudCogc2hhZG93UgogICAgICAgICBTVkdVc2VFbGVtZW50KiB1c2VFbGVtZW50Owog
ICAgIH07CiAKKyAgICBEb2N1bWVudCogZG9jID0gcmVmZXJlbmNlZERvY3VtZW50KCk7CisgICAg
aWYgKCFkb2MpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIFdoZW4gY2xvbmluZyB0aGUgdGFy
Z2V0IG5vZGVzLCB0aGV5IG1heSBkZWNpZGUgdG8gc3luY2hyb25pemUgc3R5bGUgYW5kL29yIGFu
aW1hdGVkIFNWRyBhdHRyaWJ1dGVzLgogICAgIC8vIFRoYXQgY2F1c2VzIGNhbGxzIHRvIFNWR0Vs
ZW1lbnRJbnN0YW5jZTo6dXBkYXRlQWxsSW5zdGFuY2VzT2ZFbGVtZW50KCksIHdoaWNoIG1hcmsg
dGhlIHNoYWRvdyB0cmVlIGZvciByZWNyZWF0aW9uLgogICAgIC8vIFNvbHV0aW9uOiBibG9jayBh
bnkgdXBkYXRlcyB0byB0aGUgc2hhZG93IHRyZWUgd2hpbGUgd2UncmUgYnVpbGRpbmcgaXQuCiAg
ICAgU2hhZG93VHJlZVVwZGF0ZUJsb2NrZXIgYmxvY2tlcih0aGlzKTsKIAotICAgIEVsZW1lbnQq
IHRhcmdldEVsZW1lbnQgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3Ry
aW5nKGhyZWYoKSwgZG9jdW1lbnQoKSk7CisgICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IFNW
R1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoaHJlZigpLCBkb2MpOwog
ICAgIGlmICghdGFyZ2V0RWxlbWVudCkgewogICAgICAgICAvLyBUaGUgb25seSB0aW1lIHdlIHNo
b3VsZCBnZXQgaGVyZSBpcyB3aGVuIHRoZSB1c2UgZWxlbWVudCBoYXMgbm90IGJlZW4KICAgICAg
ICAgLy8gZ2l2ZW4gYSByZXNvdXJjZSB0byB0YXJnZXQuCkBAIC01MTAsNiArNTQwLDggQEAgdm9p
ZCBTVkdVc2VFbGVtZW50OjpidWlsZFNoYWRvd0FuZEluc3RhbmNlVHJlZShTVkdTaGFkb3dUcmVl
Um9vdEVsZW1lbnQqIHNoYWRvd1IKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorLy8gICAgdGFy
Z2V0RWxlbWVudCA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQobV9yZXNvdXJjZUlkKTsKKwogICAgIC8v
IERvIG5vdCBidWlsZCB0aGUgc2hhZG93L2luc3RhbmNlIHRyZWUgZm9yIDx1c2U+IGVsZW1lbnRz
IGxpdmluZyBpbiBhIHNoYWRvdyB0cmVlLgogICAgIC8vIFRoZSB3aWxsIGJlIGV4cGFuZGVkIHNv
b24gYW55d2F5IC0gc2VlIGV4cGFuZFVzZUVsZW1lbnRzSW5TaGFkb3dUcmVlKCkuCiAgICAgQ29u
dGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZSgpOwpAQCAtODMxLDE0ICs4NjMsMTcgQEAg
dm9pZCBTVkdVc2VFbGVtZW50OjpleHBhbmRVc2VFbGVtZW50c0luU2hhZG93VHJlZShOb2RlKiBl
bGVtZW50KQogICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjp1c2VUYWcpKSB7
CiAgICAgICAgIFNWR1VzZUVsZW1lbnQqIHVzZSA9IHN0YXRpY19jYXN0PFNWR1VzZUVsZW1lbnQq
PihlbGVtZW50KTsKIAotICAgICAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gU1ZHVVJJUmVm
ZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyh1c2UtPmhyZWYoKSwgZG9jdW1lbnQo
KSk7CisgICAgICAgIERvY3VtZW50KiBkb2MgPSByZWZlcmVuY2VkRG9jdW1lbnQoKTsKKyAgICAg
ICAgQVNTRVJUKGRvYyk7CisKKyAgICAgICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IFNWR1VS
SVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcodXNlLT5ocmVmKCksIGRvYyk7
CiAgICAgICAgIFNWR0VsZW1lbnQqIHRhcmdldCA9IDA7CiAgICAgICAgIGlmICh0YXJnZXRFbGVt
ZW50ICYmIHRhcmdldEVsZW1lbnQtPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICAgICAgdGFyZ2V0
ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KHRhcmdldEVsZW1lbnQpOwogCiAgICAgICAgIC8v
IERvbid0IEFTU0VSVCh0YXJnZXQpIGhlcmUsIGl0IG1heSBiZSAicGVuZGluZyIsIHRvby4KICAg
ICAgICAgLy8gU2V0dXAgc3ViLXNoYWRvdyB0cmVlIHJvb3Qgbm9kZQotICAgICAgICBSZWZQdHI8
U1ZHU2hhZG93VHJlZUNvbnRhaW5lckVsZW1lbnQ+IGNsb25lUGFyZW50ID0gU1ZHU2hhZG93VHJl
ZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKKyAgICAgICAgUmVmUHRyPFNW
R1NoYWRvd1RyZWVDb250YWluZXJFbGVtZW50PiBjbG9uZVBhcmVudCA9IFNWR1NoYWRvd1RyZWVD
b250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jKTsKICAgICAgICAgdXNlLT5jbG9uZUNoaWxkTm9k
ZXMoY2xvbmVQYXJlbnQuZ2V0KCkpOwogCiAgICAgICAgIC8vIFNwZWM6IEluIHRoZSBnZW5lcmF0
ZWQgY29udGVudCwgdGhlICd1c2UnIHdpbGwgYmUgcmVwbGFjZWQgYnkgJ2cnLCB3aGVyZSBhbGwg
YXR0cmlidXRlcyBmcm9tIHRoZQpAQCAtODg3LDEzICs5MjIsMTUgQEAgdm9pZCBTVkdVc2VFbGVt
ZW50OjpleHBhbmRVc2VFbGVtZW50c0luU2hhZG93VHJlZShOb2RlKiBlbGVtZW50KQogdm9pZCBT
VkdVc2VFbGVtZW50OjpleHBhbmRTeW1ib2xFbGVtZW50c0luU2hhZG93VHJlZShOb2RlKiBlbGVt
ZW50KQogewogICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzeW1ib2xUYWcp
KSB7CisgICAgICAgIERvY3VtZW50KiBkb2MgPSByZWZlcmVuY2VkRG9jdW1lbnQoKTsKKyAgICAg
ICAgQVNTRVJUKGRvYyk7CiAgICAgICAgIC8vIFNwZWM6IFRoZSByZWZlcmVuY2VkICdzeW1ib2wn
IGFuZCBpdHMgY29udGVudHMgYXJlIGRlZXAtY2xvbmVkIGludG8gdGhlIGdlbmVyYXRlZCB0cmVl
LAogICAgICAgICAvLyB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCB0aGUgJ3N5bWJvbCcgaXMgcmVw
bGFjZWQgYnkgYW4gJ3N2ZycuIFRoaXMgZ2VuZXJhdGVkICdzdmcnIHdpbGwKICAgICAgICAgLy8g
YWx3YXlzIGhhdmUgZXhwbGljaXQgdmFsdWVzIGZvciBhdHRyaWJ1dGVzIHdpZHRoIGFuZCBoZWln
aHQuIElmIGF0dHJpYnV0ZXMgd2lkdGggYW5kL29yCiAgICAgICAgIC8vIGhlaWdodCBhcmUgcHJv
dmlkZWQgb24gdGhlICd1c2UnIGVsZW1lbnQsIHRoZW4gdGhlc2UgYXR0cmlidXRlcyB3aWxsIGJl
IHRyYW5zZmVycmVkIHRvCiAgICAgICAgIC8vIHRoZSBnZW5lcmF0ZWQgJ3N2ZycuIElmIGF0dHJp
YnV0ZXMgd2lkdGggYW5kL29yIGhlaWdodCBhcmUgbm90IHNwZWNpZmllZCwgdGhlIGdlbmVyYXRl
ZAogICAgICAgICAvLyAnc3ZnJyBlbGVtZW50IHdpbGwgdXNlIHZhbHVlcyBvZiAxMDAlIGZvciB0
aGVzZSBhdHRyaWJ1dGVzLgotICAgICAgICBSZWZQdHI8U1ZHU1ZHRWxlbWVudD4gc3ZnRWxlbWVu
dCA9IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZShTVkdOYW1lczo6c3ZnVGFnLCBkb2N1bWVudCgpKTsK
KyAgICAgICAgUmVmUHRyPFNWR1NWR0VsZW1lbnQ+IHN2Z0VsZW1lbnQgPSBTVkdTVkdFbGVtZW50
OjpjcmVhdGUoU1ZHTmFtZXM6OnN2Z1RhZywgZG9jKTsKIAogICAgICAgICAvLyBUcmFuc2ZlciBh
bGwgYXR0cmlidXRlcyBmcm9tIDxzeW1ib2w+IHRvIHRoZSBuZXcgPHN2Zz4gZWxlbWVudAogICAg
ICAgICBzdmdFbGVtZW50LT5zZXRBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoKnRvRWxlbWVudChlbGVt
ZW50KSk7CkBAIC0xMDYwLDYgKzEwOTcsMzEgQEAgYm9vbCBTVkdVc2VFbGVtZW50OjpzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVk
RWxlbWVudCo+KGVsZW1lbnQpLT5oYXNSZWxhdGl2ZUxlbmd0aHMoKTsKIH0KIAordm9pZCBTVkdV
c2VFbGVtZW50OjpzZXRTVkdEb2N1bWVudCgpCit7CisgICAgc2V0SGFzUGVuZGluZ1Jlc291cmNl
cygpOworICAgIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCk7Cit9CisKK3ZvaWQgU1ZHVXNlRWxlbWVu
dDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQoreworICAgIGlmICghaW5Eb2N1bWVu
dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocmVuZGVyZXIoKSkgeworICAgICAgICBz
dGF0aWNfY2FzdDxSZW5kZXJTVkdTaGFkb3dUcmVlUm9vdENvbnRhaW5lcio+KHJlbmRlcmVyKCkp
LT5tYXJrU2hhZG93VHJlZUZvclJlY3JlYXRpb24oKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dXBk
YXRlRnJvbUVsZW1lbnQoKTsKKyAgICB9CisKKyAgICBFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRF
bGVtZW50KCk7CisgICAgQVNTRVJUKHBhcmVudCk7CisKKyAgICBpZiAoIXBhcmVudC0+cmVuZGVy
ZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihwYXJlbnQtPnJlbmRlcmVyKCkpOwor
fQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50
LmgKaW5kZXggZDBiMjc0Yy4uOWU1MmExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5o
CkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIFNWR1VzZUVsZW1lbnRfaAogCiAjaWYgRU5BQkxF
KFNWRykKKyNpbmNsdWRlICJDYWNoZWRTVkdEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNWR0FuaW1h
dGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAi
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtMzIsNiArMzMsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlZFNWR0RvY3VtZW50OwogY2xhc3MgU1ZHRWxl
bWVudEluc3RhbmNlOwogY2xhc3MgU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50OwogCkBAIC0zOSw3
ICs0MSw4IEBAIGNsYXNzIFNWR1VzZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAogICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIFNWR1VSSVJlZmVyZW5jZSB7CisgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR1VSSVJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgQ2Fj
aGVkU1ZHRG9jdW1lbnRDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R1VzZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApA
QCAtNTAsNiArNTMsMTAgQEAgcHVibGljOgogCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlckNs
aXBDaGlsZCgpIGNvbnN0OwogCisjaWYgRU5BQkxFKFNWRykKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U1ZHRG9jdW1lbnQoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFNWR1VzZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKQEAgLTYyLDYgKzY5LDcgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAg
ICBEb2N1bWVudCogcmVmZXJlbmNlZERvY3VtZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgdmlydHVh
bCBib29sIHdpbGxSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSk7CkBAIC0xMTgsMTAgKzEyNiwxMyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgbm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKKwogICAgIGJvb2wgbV91cGRhdGVzQmxvY2tl
ZDsKICAgICBib29sIG1fbmVlZHNTaGFkb3dUcmVlUmVjcmVhdGlvbjsKICAgICBTdHJpbmcgbV9y
ZXNvdXJjZUlkOwogICAgIFJlZlB0cjxTVkdFbGVtZW50SW5zdGFuY2U+IG1fdGFyZ2V0RWxlbWVu
dEluc3RhbmNlOworICAgIENhY2hlZFNWR0RvY3VtZW50KiBtX2NhY2hlZERvY3VtZW50OwogfTsK
IAogfQotLSAKMS43LjUuNAoK
</data>
<flag name="review"
          id="121229"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
    <flag name="commit-queue"
          id="121230"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122648</attachid>
            <date>2012-01-16 09:03:28 -0800</date>
            <delta_ts>2012-01-18 08:02:43 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>0001-external-up.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64"></data>
<flag name="review"
          id="123503"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
    <flag name="commit-queue"
          id="123504"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122933</attachid>
            <date>2012-01-18 08:02:43 -0800</date>
            <delta_ts>2012-01-18 09:31:57 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>0001-external-up-2.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64"></data>
<flag name="commit-queue"
          id="123866"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122945</attachid>
            <date>2012-01-18 09:31:57 -0800</date>
            <delta_ts>2012-01-20 01:11:14 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>0001-update-external.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64"></data>
<flag name="commit-queue"
          id="123880"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123267</attachid>
            <date>2012-01-20 01:11:14 -0800</date>
            <delta_ts>2012-01-30 07:25:21 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>0001-chr-change-ext.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64"></data>
<flag name="review"
          id="124293"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="124294"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124547</attachid>
            <date>2012-01-30 07:25:21 -0800</date>
            <delta_ts>2012-01-31 09:04:19 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>0001-external-wo-setsec.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64"></data>
<flag name="commit-queue"
          id="125832"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124750</attachid>
            <date>2012-01-31 09:04:19 -0800</date>
            <delta_ts>2012-02-17 02:43:52 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>0001-ext-first-part.patch</filename>
            <type>text/plain</type>
            <size>23817</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64">RnJvbSBmMjYxYmFkYjk0ZjA3YzZlMzU3ZjI1M2ZmY2JiMjllMzBkZjY0MTEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSZW5hdGEgSG9kb3ZhbiA8cmVuaUB3ZWJraXQub3JnPgpEYXRl
OiBUdWUsIDMxIEphbiAyMDEyIDE3OjQ4OjI5ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gZXh0IGZp
cnN0IHBhcnQKCi0tLQogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAg
ICAgICAgICAgfCAgICAxICsKIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICA2OCArKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qICAgICAgIHwgICAgOCArKwogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgfCAgICA4ICsr
CiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwICAgICB8ICAg
IDggKysKIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oICAgICAg
IHwgICAgMyArCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGll
bnQuaCB8ICAgIDUgKy0KIC4uLi9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAgIHwgICAyMCArKysrLQogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcCAgfCAgIDg5ICsrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCAgICB8ICAgNjUgKysrKysrKysr
KysrKysKIDEzIGZpbGVzIGNoYW5nZWQsIDI3OSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt
KQogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCiBjcmVhdGUgbW9kZSAxMDA3NTUgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAogY3JlYXRlIG1vZGUgMTAwNzU1IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCA3N2VmMGMyLi5jZmU0NGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
OTgxLDYgKzk4MSw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuY3BwCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisgICAgbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcAogICAgIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDE4MTY3NjYuLjRiOTEzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAxMi0w
MS0zMSAgUmVuYXRhIEhvZG92YW4gIDxyZW5pQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXh0ZXJu
YWwgPHVzZT4geGxpbms6aHJlZiByZWZlcmVuY2VzIGRvIG5vdCB3b3JrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ5OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgZXh0ZXJuYWwgcmVmZXJl
bmNlcyBvbiA8dXNlPiBieSBpbnRyb2R1Y2luZyBDYWNoZWRTVkdEb2N1bWVudC4KKyAgICAgICAg
Q2FjaGVkU1ZHRG9jdW1lbnQgaXMgYSBDYWNoZWRSZXNvdXJjZSBzcGVjaWFsaXplZCBmb3IgU1ZH
RG9jdW1lbnRzLgorICAgICAgICBUaGlzIENhY2hlZFNWR0RvY3VtZW50IGlzIHN0b3JlZCBmb3Ig
ZXZlcnkgdXNlIGVsZW1lbnQgd2l0aCBleHRlcm5hbCByZWZlcmVuY2UuCisgICAgICAgIFRoZSBt
b2RlIGhvdyBleHRlcm5hbCByZXNvdXJjZXMgYXJlIGhhbmRsZWQgaXMgc2ltaWxhciB0byB0aGUg
cHJvY2Vzc2luZyBvZiBpbnRlcm5hbCBvbmVzLgorICAgICAgICBXZSBidWlsZCB0aGUgaW5zdGFu
Y2UgYW5kIHNoYWRvdyB0cmVlIHRoZSBzYW1lIHdheSBidXQgd2UgaGF2ZSB0byBrZWVwIGluIG1p
bmQgdGhhdCB0aGUgcmVxdWVzdGVkIHJlc291cmNlcworICAgICAgICBtYXliZSBub3QgbG9hZGVk
IHlldC4gV2UgY2FuIGNoZWNrIGl0IHdpdGggY2FjaGVkRG9jdW1lbnRJc1N0aWxsTG9hZGluZygp
IGZ1bmN0aW9uLgorICAgICAgICBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJ
U3RyaW5nKCkgYWxzbyBuZWVkIHRvIGJlIGV4dGVuZGVkLiBUaGUgY3JlYXRpb24KKyAgICAgICAg
b2YgYmFzZVVSSSBzaG91bGQgYmUgYmFzZWQgb24gdGhlIHJlZmVyZW5jZWQgZG9jdW1lbnQncyBV
UkwgaW5zdGVhZCBvZiB0aGUgYWN0dWFsIG9uZSBhbmQKKyAgICAgICAgaXQgaGFzIHRvIHVzZSBh
YnNvbHV0ZSBhZGRyZXNzLgorCisgICAgICAgIFRlc3RzOiBzdmcvY3VzdG9tL3N0cnVjdC11c2Ut
cmVjdXJzaW9uLTAxLXQuc3ZnCisgICAgICAgICAgICAgICBzdmcvY3VzdG9tL3N0cnVjdC11c2Ut
cmVjdXJzaW9uLTAyLXQuc3ZnCisgICAgICAgICAgICAgICBzdmcvY3VzdG9tL3N0cnVjdC11c2Ut
cmVjdXJzaW9uLTAzLXQuc3ZnCisgICAgICAgICAgICAgICBzdmcvY3VzdG9tL3VzZS1leHRlcm4t
aHJlZi5zdmcKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFy
Z2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0UHJpb3JpdHlGb3JSZXNvdXJjZVR5
cGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFNWR0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpj
aGVja0luc2VjdXJlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6Y2FuUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdE
b2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6fkNhY2hlZFNW
R0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpzZXRFbmNv
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmVycm9yKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdE
b2N1bWVudDo6ZG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6
OnNjaGVkdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpzZXRGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudENsaWVudDo6fkNhY2hlZFNW
R0RvY3VtZW50Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50Q2xp
ZW50OjpleHBlY3RlZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRD
bGllbnQ6OnJlc291cmNlQ2xpZW50VHlwZSk6CisgICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5j
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRG
cm9tSVJJU3RyaW5nKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1VzZUVsZW1lbnQ6On5TVkdVc2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1VzZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1VzZUVsZW1lbnQ6OnJlZmVyZW5jZWREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdV
c2VFbGVtZW50Ojp1cGRhdGVDb250YWluZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VXNlRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
ZG93VHJlZVVwZGF0ZUJsb2NrZXI6OmlmKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1l
bnQ6Omhhc0N5Y2xlVXNlUmVmZXJlbmNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxl
bWVudDo6ZXhwYW5kVXNlRWxlbWVudHNJblNoYWRvd1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVXNlRWxlbWVudDo6ZXhwYW5kU3ltYm9sRWxlbWVudHNJblNoYWRvd1RyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6YXNzb2NpYXRlSW5zdGFuY2VzV2l0aFNoYWRvd1Ry
ZWVFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojpub3RpZnlGaW5p
c2hlZCk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKwogMjAxMi0wMS0zMSAgUGV0
ZXIgUnliaW4gIDxwZXRlci5yeWJpbkBnbWFpbC5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weTogcmVpbXBsZW1lbnQgZ2VuZXJhdGVkIGFycmF5
IHR5cGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBlM2U4ZTliLi4wYmMxNzYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI0OTksNiArMjQ5OSw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNo
YWRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaCBc
CiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCBc
CisJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggXAogCVNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmggXAogCVNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBmYWZk
OGUyLi40NzkzZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTkyMSw2ICs5MjEsOCBAQCBTT1VSQ0VTICs9
IFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIFwKICAgICBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmNwcCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAg
XAorICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgXAorICAgIGxvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5jcHAgXAogICAgIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwIFwK
ICAgICBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAgXApAQCAtMTk4
Myw2ICsxOTg1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlSGFuZGxlLmggXAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBcCiAgICAgbG9h
ZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oIFwKKyAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnQuaCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBcCiAgICAg
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmggXAogICAgIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2wuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTFmZWY1YS4uM2Q2YWViNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMjUyOSw2ICsyNTI5LDggQEAKICAgICAgICAgICAgICdsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmgnLAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRTaGFk
ZXIuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmgnLAorICAg
ICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAnLAorICAgICAgICAg
ICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oJywKICAgICAgICAgICAgICdsb2Fk
ZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5oJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCAxMzJhNDU0Li42NGI2ZDQ0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjY0MDksNiArMjY0MDksMTQgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxj
YWNoZVxDYWNoZWRTVkdEb2N1bWVudC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZp
bGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcY2FjaGVcQ2FjaGVkU1ZHRG9jdW1lbnQu
aCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGxvYWRlclxjYWNoZVxDYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCIKIAkJCQkJPgogCQkJCTwvRmls
ZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA0N2NiNGJjLi45YTk2OWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDYyLDYgKzM0NjIsOCBAQAogCQlBMEVF
MERGNjE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTBFRTBERjIxNDRGODI1NTAw
RjgwQjBEIC8qIFdlYkdMRGVidWdSZW5kZXJlckluZm8uaCAqLzsgfTsKIAkJQTBFRTBERjcxNDRG
ODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEwRUUwREYzMTQ0RjgyNTUwMEY4MEIwRCAvKiBX
ZWJHTERlYnVnU2hhZGVycy5jcHAgKi87IH07CiAJCUEwRUUwREY4MTQ0RjgyNTUwMEY4MEIwRCAv
KiBXZWJHTERlYnVnU2hhZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTBFRTBERjQxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJz
LmggKi87IH07CisJCUExMDRGMjQzMTRDNzFGN0EwMDlFMkMyMyAvKiBDYWNoZWRTVkdEb2N1bWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTA0
RjI0MTE0QzcxRjdBMDA5RTJDMjMgLyogQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwICovOyB9OworCQlB
MTA0RjI0NDE0QzcxRjdBMDA5RTJDMjMgLyogQ2FjaGVkU1ZHRG9jdW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDRGMjQyMTRDNzFGN0EwMDlF
MkMyMyAvKiBDYWNoZWRTVkdEb2N1bWVudC5oICovOyB9OwogCQlBMTBCQjU4NTE0ODRFM0E3MDBC
MkU4N0EgLyogUmVuZGVyU1ZHUmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTEwQkI1ODMxNDg0RTNBNzAwQjJFODdBIC8qIFJlbmRlclNWR1JlY3Qu
aCAqLzsgfTsKIAkJQTEwQkI1OEIxNDg0RTNCMzAwQjJFODdBIC8qIFJlbmRlclNWR1NoYXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTBCQjU4OTE0
ODRFM0IzMDBCMkU4N0EgLyogUmVuZGVyU1ZHU2hhcGUuaCAqLzsgfTsKIAkJQTEwREM3NkExNDc0
N0JBQjAwNUUyNDcxIC8qIFN0eWxlR3JpZERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwREM3NjgxNDc0N0JBQjAwNUUyNDcxIC8qIFN0eWxl
R3JpZERhdGEuY3BwICovOyB9OwpAQCAtMTAyOTksNiArMTAzMDEsOCBAQAogCQlBMEVFMERGMjE0
NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmg7IHBhdGggPSBjYW52
YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMEVFMERGMzE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwOyBw
YXRoID0gY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTBFRTBERjQxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMRGVidWdTaGFkZXJzLmg7IHBh
dGggPSBjYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTEwNEYyNDExNEM3MUY3QTAwOUUyQzIzIC8qIENhY2hlZFNWR0RvY3VtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFNWR0RvY3VtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTEwNEYyNDIxNEM3MUY3QTAwOUUyQzIz
IC8qIENhY2hlZFNWR0RvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENhY2hlZFNWR0RvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMEJC
NTgyMTQ4NEUzQTcwMEIyRTg3QSAvKiBSZW5kZXJTVkdSZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1JlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMTBCQjU4MzE0ODRFM0E3MDBCMkU4N0EgLyogUmVuZGVyU1ZHUmVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdSZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMEJCNTg4MTQ4NEUzQjMwMEIyRTg3QSAvKiBSZW5k
ZXJTVkdTaGFwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5k
ZXJTVkdTaGFwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODAzNCw2ICsx
ODAzOCw4IEBACiAJCUE4RDJCMjUyMTI4N0E1NjAwMEFGNEREQSAvKiBjYWNoZSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTEwNEYyNDExNEM3MUY3QTAw
OUUyQzIzIC8qIENhY2hlZFNWR0RvY3VtZW50LmNwcCAqLywKKwkJCQlBMTA0RjI0MjE0QzcxRjdB
MDA5RTJDMjMgLyogQ2FjaGVkU1ZHRG9jdW1lbnQuaCAqLywKIAkJCQlCQ0IxNkMwMDA5NzlDM0JE
MDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgKi8sCiAJCQkJQkNCMTZDMDEwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuaCAqLywKIAkJCQlCQzY0QjRDOTBD
QjQyOTVEMDA1RjJCNjIgLyogQ2FjaGVkRm9udC5jcHAgKi8sCkBAIC0yMTE0OSw2ICsyMTE1NSw3
IEBACiAJCQkJQkNENTMzNjQwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNvdXJjZVBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDM4QkU0MTE0NzJBRDk4MDA5NUUwRDEgLyog
Q2FjaGVkU2hhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMEJDNTQ0OTE0NDNBQzRBMDBFMTA1
REEgLyogQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTEwNEYy
NDQxNEM3MUY3QTAwOUUyQzIzIC8qIENhY2hlZFNWR0RvY3VtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwNzUzODYwMzE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0IxNkMyODA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkWFNMU3R5bGVT
aGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5NTAwODI0NUU1OTAwMUU5QUJDIC8qIENh
Y2hlUG9saWN5LmggaW4gSGVhZGVycyAqLywKQEAgLTI0NTY4LDYgKzI0NTc1LDcgQEAKIAkJCQlC
Q0IxNkMyOTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNCMTZDMjMwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFNjcmlwdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MDM4QkU0MDE0NzJBRDk4MDA5NUUwRDEgLyogQ2FjaGVk
U2hhZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExMDRGMjQzMTRDNzFGN0EwMDlFMkMyMyAv
KiBDYWNoZWRTVkdEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzUzODYwMjE0NDg5
RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
QjE2QzI3MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5QUUyRDk2MTM0RUU1RjkwMDcyOTIwQSAvKiBDYWxjdWxhdGlvblZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA4MGQz
NzNjLi41N2QwNWJhCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcApAQCAtNjEsNiArNjEsMTAgQEAgc3RhdGljIFJlc291cmNlTG9hZFByaW9yaXR5IGRlZmF1
bHRQcmlvcml0eUZvclJlc291cmNlVHlwZShDYWNoZWRSZXNvdXJjZTo6VHlwZQogI2VuZGlmCiAg
ICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHlIaWdoOwogICAgICAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpTY3JpcHQ6CisjaWYgRU5BQkxFKFNWRykKKyAgICAgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZToKKyAgICAgICAgICAgIHJldHVybiBS
ZXNvdXJjZUxvYWRQcmlvcml0eUxvdzsKKyNlbmRpZgogICAgICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpGb250UmVzb3VyY2U6CiAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291
cmNlOgogICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5TWVkaXVtOwpAQCAt
MTE2LDYgKzEyMCwxMCBAQCBzdGF0aWMgUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRUeXBlIGNhY2hl
ZFJlc291cmNlVHlwZVRvVGFyZ2V0VHlwZShDYWNoZWRSZXNvdXJjZQogICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OlRleHRUcmFja1Jlc291cmNlOgogICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1
ZXN0OjpUYXJnZXRJc1RleHRUcmFjazsKICNlbmRpZgorI2lmIEVOQUJMRShTVkcpCisgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZToKKyAgICAgICAgcmV0dXJuIFJl
c291cmNlUmVxdWVzdDo6VGFyZ2V0SXNJbWFnZTsKKyNlbmRpZgogICAgIH0KICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N1YnJl
c291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApp
bmRleCBiODdkYTcxLi44N2E0MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaApAQCAtNjUsNiArNjUsOSBAQCBwdWJsaWM6CiAgICAgICAgIFNjcmlw
dCwKICAgICAgICAgRm9udFJlc291cmNlLAogICAgICAgICBSYXdSZXNvdXJjZQorI2lmIEVOQUJM
RShTVkcpCisgICAgICAgICwgU1ZHRG9jdW1lbnRSZXNvdXJjZQorI2VuZGlmCiAjaWYgRU5BQkxF
KFhTTFQpCiAgICAgICAgICwgWFNMU3R5bGVTaGVldAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCmluZGV4IDRhYTJkZDIu
Ljk1Nzk2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUNsaWVudC5oCkBAIC0zOSwxMyArMzksMTYgQEAgcHVibGljOgogICAgICAgICBJbWFn
ZVR5cGUsCiAgICAgICAgIEZvbnRUeXBlLAogICAgICAgICBTdHlsZVNoZWV0VHlwZSwKKyNpZiBF
TkFCTEUoU1ZHKQorICAgICAgICBTVkdEb2N1bWVudFR5cGUsCisjZW5kaWYKICAgICAgICAgUmF3
UmVzb3VyY2VUeXBlCiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkNhY2hlZFJlc291cmNlQ2xpZW50
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKENhY2hlZFJlc291cmNlKikgeyB9
OwotICAgIAorCiAgICAgc3RhdGljIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSBleHBlY3RlZFR5
cGUoKSB7IHJldHVybiBCYXNlUmVzb3VyY2VUeXBlOyB9CiAgICAgdmlydHVhbCBDYWNoZWRSZXNv
dXJjZUNsaWVudFR5cGUgcmVzb3VyY2VDbGllbnRUeXBlKCkgeyByZXR1cm4gZXhwZWN0ZWRUeXBl
KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggNWRmNGEwZC4uNTdkNTllMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKIAogI2luY2x1ZGUg
IkNhY2hlZENTU1N0eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJDYWNoZWRTVkdEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1
ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgiCkBAIC03Miw2ICs3MywxMCBAQCBzdGF0aWMgQ2FjaGVk
UmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJlc291
cmNlUmVxdWVzdAogICAgICAgICByZXR1cm4gbmV3IENhY2hlZENTU1N0eWxlU2hlZXQocmVxdWVz
dCwgY2hhcnNldCk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OgogICAgICAgICBy
ZXR1cm4gbmV3IENhY2hlZFNjcmlwdChyZXF1ZXN0LCBjaGFyc2V0KTsKKyNpZiBFTkFCTEUoU1ZH
KQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0RvY3VtZW50UmVzb3VyY2U6CisgICAgICAg
IHJldHVybiBuZXcgQ2FjaGVkU1ZHRG9jdW1lbnQocmVxdWVzdCk7CisjZW5kaWYKICAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVk
Rm9udChyZXF1ZXN0KTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZToKQEAg
LTI0Niw2ICsyNTEsOSBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjaGVja0luc2VjdXJl
Q29udGVudChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdAogI2lmIEVOQUJMRShYU0xU
KQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhTTFN0eWxlU2hlZXQ6CiAjZW5kaWYKKyNpZiBF
TkFCTEUoU1ZHKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0RvY3VtZW50UmVzb3VyY2U6
CisjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgogICAgICAg
ICAvLyBUaGVzZSByZXNvdXJjZSBjYW4gaW5qZWN0IHNjcmlwdCBpbnRvIHRoZSBjdXJyZW50IGRv
Y3VtZW50IChTY3JpcHQsCiAgICAgICAgIC8vIFhTTCkgb3IgZXhmaWx0cmF0ZSB0aGUgY29udGVu
dCBvZiB0aGUgY3VycmVudCBkb2N1bWVudCAoQ1NTKS4KQEAgLTI2OSw2ICsyNzcsNyBAQCBib29s
IENhY2hlZFJlc291cmNlTG9hZGVyOjpjaGVja0luc2VjdXJlQ29udGVudChDYWNoZWRSZXNvdXJj
ZTo6VHlwZSB0eXBlLCBjb25zdAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KKwog
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlOgogI2lmIEVOQUJMRShMSU5LX1BS
RUZFVENIKQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKQEAgLTMxMyw2
ICszMjIsOSBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgICAgICAvLyBUaGVzZSB0eXBl
cyBvZiByZXNvdXJjZXMgY2FuIGJlIGxvYWRlZCBmcm9tIGFueSBvcmlnaW4uCiAgICAgICAgIC8v
IEZJWE1FOiBBcmUgd2Ugc3VyZSBhYm91dCBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlPwog
ICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6
OlNWR0RvY3VtZW50UmVzb3VyY2U6CisjZW5kaWYKICNpZiBFTkFCTEUoWFNMVCkKICAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0OgogICAgICAgICBpZiAoIW1fZG9jdW1lbnQt
PnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QodXJsKSkgewpAQCAtMzQ3LDYgKzM1OSw5IEBA
IGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5
cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsCiAgICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVu
dFNlY3VyaXR5UG9saWN5KCktPmFsbG93U3R5bGVGcm9tU291cmNlKHVybCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShTVkcpCisgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZToKKyNlbmRpZgogICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CiAgICAgICAgIGlmICghbV9kb2N1bWVudC0+
Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93SW1hZ2VGcm9tU291cmNlKHVybCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNjIsNiArMzc3LDcgQEAgYm9vbCBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBL
VVJMJiB1cmwKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQorCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2U6CiAjaWYgRU5BQkxFKExJ
TktfUFJFRkVUQ0gpCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgpAQCAt
MzkzLDkgKzQwOSw5IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2Fj
aGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsCiBDYWNoZWRSZXNvdXJjZSog
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlw
ZSB0eXBlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBSZXNvdXJjZUxvYWRQcmlvcml0
eSBwcmlvcml0eSwgYm9vbCBmb3JQcmVsb2FkKQogewogICAgIEtVUkwgdXJsID0gcmVxdWVzdC51
cmwoKTsKLSAgICAKKwogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVxdWVzdFJlc291cmNlICclcycsIGNoYXJzZXQgJyVzJywgcHJpb3JpdHk9JWQsIGZv
clByZWxvYWQ9JXUiLCB1cmwuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCBjaGFyc2V0LmxhdGlu
MSgpLmRhdGEoKSwgcHJpb3JpdHksIGZvclByZWxvYWQpOwotICAgIAorCiAgICAgLy8gSWYgb25s
eSB0aGUgZnJhZ21lbnQgaWRlbnRpZmllcnMgZGlmZmVyLCBpdCBpcyB0aGUgc2FtZSByZXNvdXJj
ZS4KICAgICB1cmwgPSBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVk
ZWQodXJsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmM4N2M0Ygot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTAg
Um9iIEJ1aXMgPHJ3bGJ1aXNAZ21haWwuY29tPgorICAgIENvcHlyaWdodCAoQykgMjAxMSBDb3Nt
aW4gVHJ1dGEgPGN0cnV0YUBnbWFpbC5jb20+CisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFVuaXZl
cnNpdHkgb2YgU3plZ2VkCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFJlbmF0YSBIb2RvdmFuIDxy
ZW5pQHdlYmtpdC5vcmc+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNW
RykKKworI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50LmgiCisKKyNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5j
bHVkZSAiU1ZHRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRl
ICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NhY2hlZFNWR0RvY3VtZW50OjpDYWNoZWRT
VkdEb2N1bWVudChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCisgICAgOiBDYWNoZWRS
ZXNvdXJjZShyZXF1ZXN0LCBTVkdEb2N1bWVudFJlc291cmNlKQorICAgICwgbV9kZWNvZGVyKFRl
eHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIikpCit7CisgICAgc2V0
QWNjZXB0KCJpbWFnZS9zdmcreG1sIik7Cit9CisKK0NhY2hlZFNWR0RvY3VtZW50Ojp+Q2FjaGVk
U1ZHRG9jdW1lbnQoKQoreworfQorCit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmIGNocykKK3sKKyAgICBtX2RlY29kZXItPnNldEVuY29kaW5nKGNocywg
VGV4dFJlc291cmNlRGVjb2Rlcjo6RW5jb2RpbmdGcm9tSFRUUEhlYWRlcik7Cit9CisKK1N0cmlu
ZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtX2Rl
Y29kZXItPmVuY29kaW5nKCkubmFtZSgpOworfQorCit2b2lkIENhY2hlZFNWR0RvY3VtZW50Ojpk
YXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
K3sKKyAgICBBU1NFUlQobV9kb2N1bWVudC5nZXQoKSk7CisKKyAgICBpZiAoIWFsbERhdGFSZWNl
aXZlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgU3RyaW5n
QnVpbGRlciBkZWNvZGVkVGV4dDsKKyAgICAgICAgZGVjb2RlZFRleHQuYXBwZW5kKG1fZGVjb2Rl
ci0+ZGVjb2RlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIGRlY29kZWRU
ZXh0LmFwcGVuZChtX2RlY29kZXItPmZsdXNoKCkpOworICAgICAgICBtX2RvY3VtZW50ID0gU1ZH
RG9jdW1lbnQ6OmNyZWF0ZSgwLCByZXNwb25zZSgpLnVybCgpKTsKKyAgICAgICAgbV9kb2N1bWVu
dC0+c2V0Q29udGVudChkZWNvZGVkVGV4dC50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICBzZXRM
b2FkaW5nKGZhbHNlKTsKKyAgICBjaGVja05vdGlmeSgpOworfQorCit2b2lkIENhY2hlZFNWR0Rv
Y3VtZW50OjplcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzIHN0YXR1cykKK3sKKyAgICBzZXRT
dGF0dXMoc3RhdHVzKTsKKyAgICBBU1NFUlQoZXJyb3JPY2N1cnJlZCgpKTsKKyAgICBzZXRMb2Fk
aW5nKGZhbHNlKTsKKyAgICBjaGVja05vdGlmeSgpOworfQorCit9CisKKyNlbmRpZgorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZiYmUxZWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtMCwwICsx
LDY1IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMCBSb2IgQnVpcyA8cndsYnVpc0BnbWFp
bC5jb20+CisgICAgQ29weXJpZ2h0IChDKSAyMDExIENvc21pbiBUcnV0YSA8Y3RydXRhQGdtYWls
LmNvbT4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAgICBD
b3B5cmlnaHQgKEMpIDIwMTIgUmVuYXRhIEhvZG92YW4gPHJlbmlAd2Via2l0Lm9yZz4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisj
aWZuZGVmIENhY2hlZFNWR0RvY3VtZW50X2gKKyNkZWZpbmUgQ2FjaGVkU1ZHRG9jdW1lbnRfaAor
CisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNs
aWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiU1ZH
RG9jdW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2Ns
YXNzIFRleHRSZXNvdXJjZURlY29kZXI7CisKK2NsYXNzIENhY2hlZFNWR0RvY3VtZW50IDogcHVi
bGljIENhY2hlZFJlc291cmNlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDYWNoZWRTVkdEb2N1
bWVudChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2aXJ0dWFsIH5DYWNoZWRTVkdEb2N1
bWVudCgpOworCisgICAgU1ZHRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9k
b2N1bWVudC5nZXQoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0
cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7
CisKKyAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisK
K3Byb3RlY3RlZDoKKyAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgUmVm
UHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2RhdGE7Cit9OworCitjbGFzcyBDYWNoZWRTVkdEb2N1bWVudENsaWVudCA6IHB1Ymxp
YyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q2FjaGVkU1ZH
RG9jdW1lbnRDbGllbnQoKSB7IH0KKyAgICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBl
IGV4cGVjdGVkVHlwZSgpIHsgcmV0dXJuIFNWR0RvY3VtZW50VHlwZTsgfQorICAgIHZpcnR1YWwg
Q2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIHsgcmV0dXJuIGV4
cGVjdGVkVHlwZSgpOyB9Cit9OworCit9CisKKyNlbmRpZgotLSAKMS43LjUuNAoK
</data>
<flag name="review"
          id="126092"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
    <flag name="commit-queue"
          id="126093"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127563</attachid>
            <date>2012-02-17 02:43:52 -0800</date>
            <delta_ts>2012-02-21 07:48:49 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>0001-first-up.patch</filename>
            <type>text/plain</type>
            <size>20955</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64">RnJvbSBjNDE0YTRmZmM0MGU5M2JlMWViMWM5MWMyNTA0YTkxMDg2MGU3NjExIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSZW5hdGEgSG9kb3ZhbiA8cmVuaUB3ZWJraXQub3JnPgpEYXRl
OiBGcmksIDE3IEZlYiAyMDEyIDExOjA3OjM3ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gZmlyc3Qt
dXAKCi0tLQogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAxICsKIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICA0OCArKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qICAgICAgIHwgICAgOCArKwogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgfCAgICA4ICsrCiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwICAgICB8ICAgIDggKysKIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oICAgICAgIHwgICAgMyAr
CiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCB8ICAg
IDUgKy0KIC4uLi9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAg
IHwgICAxNCArKysrCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwICB8ICAgNzkgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oICAgIHwgICA2NCArKysrKysrKysrKysrKysrCiAx
MyBmaWxlcyBjaGFuZ2VkLCAyNDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKIG1vZGUg
Y2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcAogY3JlYXRlIG1vZGUgMTAwNzU1IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDc1NSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggYzkzZTllNy4uMmUxYWE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTk4Myw2ICs5
ODMsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlSGFuZGxlLmNwcAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAK
ICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorICAgIGxvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHAKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHAKICAgICBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYmZl
NWM0Li44Y2U0ZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTItMDItMTcgIFJl
bmF0YSBIb2RvdmFuICA8cmVuaUB3ZWJraXQub3JnPgorCisgICAgICAgIEV4dGVybmFsIDx1c2U+
IHhsaW5rOmhyZWYgcmVmZXJlbmNlcyBkbyBub3Qgd29yaworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0OTkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBwb3J0IGV4dGVybmFsIHJlZmVyZW5jZXMgb24g
PHVzZT4gYnkgaW50cm9kdWNpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQuCisgICAgICAgIENhY2hlZFNW
R0RvY3VtZW50IGlzIGEgQ2FjaGVkUmVzb3VyY2Ugc3BlY2lhbGl6ZWQgZm9yIFNWR0RvY3VtZW50
cy4KKyAgICAgICAgVGhpcyBDYWNoZWRTVkdEb2N1bWVudCB3aWxsIGJlIHN0b3JlZCBmb3IgZXZl
cnkgdXNlIGVsZW1lbnQgd2l0aCBleHRlcm5hbCByZWZlcmVuY2UuCisgICAgICAgIFRoaXMgZmly
c3QgcGF0Y2ggb25seSBjb250YWlucyB0aGUgbmV3IGNsYXNzZXMgdG8gdGVzdCB3aGV0aGVyIGl0
IHdvcmtzIG9uIGV2ZXJ5IHBsYXRmb3JtLgorICAgICAgICBTbyB0aGV5IGFyZW4ndCB1c2VkIGFu
eXdoZXJlIGFuZCBqdXN0IGEgZm9sbG93LXVwIHBhdGNoIHdpbGwgYmluZCB0aGVtIGludG8gdGhl
IGNhY2hpbmcgc3lzdGVtLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIG5vIGNoYW5nZSBpbiBm
dW5jdGlvbmFsaXR5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRQcmlv
cml0eUZvclJlc291cmNlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRSZXNvdXJjZVR5
cGVUb1RhcmdldFR5cGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oOgorICAgICAg
ICAoQ2FjaGVkUmVzb3VyY2VDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2hlY2tJbnNlY3VyZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3Qp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6
Q2FjaGVkU1ZHRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6
On5DYWNoZWRTVkdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVu
dDo6c2V0RW5jb2RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmVu
Y29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpkYXRhKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKENhY2hlZFNWR0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNWR0RvY3VtZW50Ojpkb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6c2NoZWR1bGUpOgorICAgICAgICAoQ2FjaGVkU1ZHRG9jdW1lbnRDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQ6On5DYWNoZWRT
VkdEb2N1bWVudENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudENs
aWVudDo6ZXhwZWN0ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50
Q2xpZW50OjpyZXNvdXJjZUNsaWVudFR5cGUpOgorCiAyMDEyLTAyLTE3ICBZdXJ5IFNlbWlraGF0
c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIE1hYyBidWls
ZCBmaXggYWZ0ZXIgcjEwODA0Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDlh
YmRhZjAuLjg0YzZkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjUwOCw2
ICsyNTA4LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2hhZGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNoYWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVT
aGVldENsaWVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBcCiAJU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCmluZGV4IDJjNzkwNTguLjdmMDQ1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtOTIzLDYgKzkyMyw4
IEBAIFNPVVJDRVMgKz0gXAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgXAog
ICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIFwKICAgICBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU2hhZGVyLmNwcCBcCisgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBc
CisgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggXAogICAgIGxvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBcCiAgICAgbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5jcHAgXAogICAgIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hl
LmNwcCBcCkBAIC0xOTkxLDYgKzE5OTMsNyBAQCBIRUFERVJTICs9IFwKICAgICBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5oIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmggXAorICAgIGxvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5oIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5oIFwKICAgICBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBcCiAgICAgbG9hZGVyL0Ny
b3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4YmU4MGYzLi4y
M2Q5NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNTMyLDYgKzI1MzIsOCBAQAogICAgICAgICAg
ICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNoYWRlci5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRT
aGFkZXIuaCcsCisgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNw
cCcsCisgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgnLAogICAg
ICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwJywKICAgICAgICAgICAg
ICdsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9j
YWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGFkNjUwMzEuLjkzZjA0NTEgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNjQyNSw2ICsyNjQy
NSwxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cbG9hZGVyXGNhY2hlXENhY2hlZFNWR0RvY3VtZW50LmNwcCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxjYWNoZVxDYWNo
ZWRTVkdEb2N1bWVudC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cbG9hZGVyXGNhY2hlXENhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIgogCQkJ
CQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDNhM2UyYjAuLmFiN2FhNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0ODcsNiArMzQ4
Nyw4IEBACiAJCUEwRUUwREY2MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnUmVuZGVyZXJJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMEVF
MERGMjE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oICovOyB9Owog
CQlBMEVFMERGNzE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTBFRTBERjMxNDRGODI1
NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmNwcCAqLzsgfTsKIAkJQTBFRTBERjgxNDRG
ODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMEVFMERGNDE0NEY4MjU1MDBGODBCMEQgLyogV2Vi
R0xEZWJ1Z1NoYWRlcnMuaCAqLzsgfTsKKwkJQTEwNEYyNDMxNEM3MUY3QTAwOUUyQzIzIC8qIENh
Y2hlZFNWR0RvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExMDRGMjQxMTRDNzFGN0EwMDlFMkMyMyAvKiBDYWNoZWRTVkdEb2N1bWVudC5j
cHAgKi87IH07CisJCUExMDRGMjQ0MTRDNzFGN0EwMDlFMkMyMyAvKiBDYWNoZWRTVkdEb2N1bWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwNEYy
NDIxNEM3MUY3QTAwOUUyQzIzIC8qIENhY2hlZFNWR0RvY3VtZW50LmggKi87IH07CiAJCUExMEJC
NTg1MTQ4NEUzQTcwMEIyRTg3QSAvKiBSZW5kZXJTVkdSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTBCQjU4MzE0ODRFM0E3MDBCMkU4N0EgLyog
UmVuZGVyU1ZHUmVjdC5oICovOyB9OwogCQlBMTBCQjU4QjE0ODRFM0IzMDBCMkU4N0EgLyogUmVu
ZGVyU1ZHU2hhcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExMEJCNTg5MTQ4NEUzQjMwMEIyRTg3QSAvKiBSZW5kZXJTVkdTaGFwZS5oICovOyB9Owog
CQlBMTBEQzc2QTE0NzQ3QkFCMDA1RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTBEQzc2ODE0NzQ3QkFCMDA1
RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5jcHAgKi87IH07CkBAIC0xMDM1NCw2ICsxMDM1Niw4IEBA
CiAJCUEwRUUwREYyMTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMRGVidWdSZW5kZXJlckluZm8u
aDsgcGF0aCA9IGNhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUEwRUUwREYzMTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hh
ZGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTERlYnVn
U2hhZGVycy5jcHA7IHBhdGggPSBjYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMEVFMERGNDE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xE
ZWJ1Z1NoYWRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xEZWJ1
Z1NoYWRlcnMuaDsgcGF0aCA9IGNhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMTA0RjI0MTE0QzcxRjdBMDA5RTJDMjMgLyogQ2FjaGVkU1ZH
RG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTA0RjI0MjE0
QzcxRjdBMDA5RTJDMjMgLyogQ2FjaGVkU1ZHRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVkU1ZHRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTEwQkI1ODIxNDg0RTNBNzAwQjJFODdBIC8qIFJlbmRlclNWR1JlY3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHUmVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMEJCNTgzMTQ4NEUzQTcwMEIyRTg3QSAvKiBS
ZW5kZXJTVkdSZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNW
R1JlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwQkI1ODgxNDg0RTNCMzAw
QjJFODdBIC8qIFJlbmRlclNWR1NoYXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlclNWR1NoYXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE4MTkyLDYgKzE4MTk2LDggQEAKIAkJQThEMkIyNTIxMjg3QTU2MDAwQUY0RERBIC8qIGNh
Y2hlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBMTA0
RjI0MTE0QzcxRjdBMDA5RTJDMjMgLyogQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwICovLAorCQkJCUEx
MDRGMjQyMTRDNzFGN0EwMDlFMkMyMyAvKiBDYWNoZWRTVkdEb2N1bWVudC5oICovLAogCQkJCUJD
QjE2QzAwMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCAqLywKIAkJ
CQlCQ0IxNkMwMTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oICovLAog
CQkJCUJDNjRCNEM5MENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmNwcCAqLywKQEAgLTIx
MzA1LDYgKzIxMzExLDcgQEAKIAkJCQlCQ0Q1MzM2NDBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVk
U2NyaXB0U291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUwMzhCRTQxMTQ3MkFE
OTgwMDk1RTBEMSAvKiBDYWNoZWRTaGFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwQkM1NDQ5
MTQ0M0FDNEEwMEUxMDVEQSAvKiBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQlBMTA0RjI0NDE0QzcxRjdBMDA5RTJDMjMgLyogQ2FjaGVkU1ZHRG9jdW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0
VHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjE2QzI4MDk3OUMzQkQwMDQ2Nzc0MSAvKiBD
YWNoZWRYU0xTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTk1MDA4MjQ1RTU5
MDAxRTlBQkMgLyogQ2FjaGVQb2xpY3kuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ3MzcsNiArMjQ3
NDQsNyBAQAogCQkJCUJDQjE2QzI5MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0IxNkMyMzA5NzlDM0JEMDA0Njc3NDEgLyog
Q2FjaGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUwMzhCRTQwMTQ3MkFEOTgwMDk1
RTBEMSAvKiBDYWNoZWRTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTEwNEYyNDMxNEM3
MUY3QTAwOUUyQzIzIC8qIENhY2hlZFNWR0RvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkNCMTZDMjcwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlBRTJEOTYxMzRFRTVGOTAwNzI5MjBBIC8qIENh
bGN1bGF0aW9uVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAw
NzU1CmluZGV4IDgwZDM3M2MuLjU3ZDA1YmEKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCkBAIC02MSw2ICs2MSwxMCBAQCBzdGF0aWMgUmVzb3VyY2VMb2Fk
UHJpb3JpdHkgZGVmYXVsdFByaW9yaXR5Rm9yUmVzb3VyY2VUeXBlKENhY2hlZFJlc291cmNlOjpU
eXBlCiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eUhpZ2g7
CiAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKKyNpZiBFTkFCTEUoU1ZHKQor
ICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTVkdEb2N1bWVudFJlc291cmNlOgorICAgICAg
ICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5TG93OworI2VuZGlmCiAgICAgICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKICAgICAgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6UmF3UmVzb3VyY2U6CiAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3Jp
dHlNZWRpdW07CkBAIC0xMTYsNiArMTIwLDEwIEBAIHN0YXRpYyBSZXNvdXJjZVJlcXVlc3Q6OlRh
cmdldFR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJnZXRUeXBlKENhY2hlZFJlc291cmNlCiAg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VGV4dFRyYWNrUmVzb3VyY2U6CiAgICAgICAgIHJldHVy
biBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzVGV4dFRyYWNrOwogI2VuZGlmCisjaWYgRU5BQkxF
KFNWRykKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTVkdEb2N1bWVudFJlc291cmNlOgorICAg
ICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0ltYWdlOworI2VuZGlmCiAgICAg
fQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6
OlRhcmdldElzU3VicmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCmluZGV4IDJhNGJlNDMuLjk4NjM5ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC02NSw2ICs2NSw5IEBAIHB1YmxpYzoK
ICAgICAgICAgU2NyaXB0LAogICAgICAgICBGb250UmVzb3VyY2UsCiAgICAgICAgIFJhd1Jlc291
cmNlCisjaWYgRU5BQkxFKFNWRykKKyAgICAgICAgLCBTVkdEb2N1bWVudFJlc291cmNlCisjZW5k
aWYKICNpZiBFTkFCTEUoWFNMVCkKICAgICAgICAgLCBYU0xTdHlsZVNoZWV0CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgK
aW5kZXggNGFhMmRkMi4uOTU3OTZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgKQEAgLTM5LDEzICszOSwxNiBAQCBwdWJsaWM6
CiAgICAgICAgIEltYWdlVHlwZSwKICAgICAgICAgRm9udFR5cGUsCiAgICAgICAgIFN0eWxlU2hl
ZXRUeXBlLAorI2lmIEVOQUJMRShTVkcpCisgICAgICAgIFNWR0RvY3VtZW50VHlwZSwKKyNlbmRp
ZgogICAgICAgICBSYXdSZXNvdXJjZVR5cGUKICAgICB9OwogCiAgICAgdmlydHVhbCB+Q2FjaGVk
UmVzb3VyY2VDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ2FjaGVk
UmVzb3VyY2UqKSB7IH07Ci0gICAgCisKICAgICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnRU
eXBlIGV4cGVjdGVkVHlwZSgpIHsgcmV0dXJuIEJhc2VSZXNvdXJjZVR5cGU7IH0KICAgICB2aXJ0
dWFsIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSB7IHJldHVy
biBleHBlY3RlZFR5cGUoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCA5YjQwYmQ0Li5lMGUxZDk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5o
IgogCiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNhY2hlZFNW
R0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkRm9udC5oIgogI2luY2x1ZGUgIkNhY2hlZElt
YWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIKQEAgLTcyLDYgKzczLDEwIEBA
IHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5
cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkQ1NTU3R5
bGVTaGVldChyZXF1ZXN0LCBjaGFyc2V0KTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3Jp
cHQ6CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkU2NyaXB0KHJlcXVlc3QsIGNoYXJzZXQpOwor
I2lmIEVOQUJMRShTVkcpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U1ZHRG9jdW1lbnRSZXNv
dXJjZToKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRTVkdEb2N1bWVudChyZXF1ZXN0KTsKKyNl
bmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKICAgICAgICAgcmV0
dXJuIG5ldyBDYWNoZWRGb250KHJlcXVlc3QpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlJh
d1Jlc291cmNlOgpAQCAtMjQ2LDYgKzI1MSw5IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmNoZWNrSW5zZWN1cmVDb250ZW50KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0CiAj
aWYgRU5BQkxFKFhTTFQpCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6WFNMU3R5bGVTaGVldDoK
ICNlbmRpZgorI2lmIEVOQUJMRShTVkcpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U1ZHRG9j
dW1lbnRSZXNvdXJjZToKKyNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxl
U2hlZXQ6CiAgICAgICAgIC8vIFRoZXNlIHJlc291cmNlIGNhbiBpbmplY3Qgc2NyaXB0IGludG8g
dGhlIGN1cnJlbnQgZG9jdW1lbnQgKFNjcmlwdCwKICAgICAgICAgLy8gWFNMKSBvciBleGZpbHRy
YXRlIHRoZSBjb250ZW50IG9mIHRoZSBjdXJyZW50IGRvY3VtZW50IChDU1MpLgpAQCAtMzEzLDYg
KzMyMSw5IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVz
b3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsCiAgICAgICAgIC8vIFRoZXNlIHR5cGVz
IG9mIHJlc291cmNlcyBjYW4gYmUgbG9hZGVkIGZyb20gYW55IG9yaWdpbi4KICAgICAgICAgLy8g
RklYTUU6IEFyZSB3ZSBzdXJlIGFib3V0IENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U/CiAg
ICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShTVkcpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6
U1ZHRG9jdW1lbnRSZXNvdXJjZToKKyNlbmRpZgogI2lmIEVOQUJMRShYU0xUKQogICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlhTTFN0eWxlU2hlZXQ6CiAgICAgICAgIGlmICghbV9kb2N1bWVudC0+
c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwpKSB7CkBAIC0zNDcsNiArMzU4LDkgQEAg
Ym9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlw
ZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwKICAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50
U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dTdHlsZUZyb21Tb3VyY2UodXJsKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKFNWRykKKyAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpTVkdEb2N1bWVudFJlc291cmNlOgorI2VuZGlmCiAgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5j
b250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dJbWFnZUZyb21Tb3VyY2UodXJsKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAu
LjNiNGI3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgICAgQ29weXJpZ2h0
IChDKSAyMDEwIFJvYiBCdWlzIDxyd2xidWlzQGdtYWlsLmNvbT4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMTEgQ29zbWluIFRydXRhIDxjdHJ1dGFAZ21haWwuY29tPgorICAgIENvcHlyaWdodCAoQykg
MjAxMiBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICAgIENvcHlyaWdodCAoQykgMjAxMiBSZW5hdGEg
SG9kb3ZhbiA8cmVuaUB3ZWJraXQub3JnPgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShTVkcpCisKKyNpbmNsdWRlICJDYWNoZWRTVkdEb2N1bWVudC5oIgorCisjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRs
ZS5oIgorI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CisjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDYWNoZWRTVkdEb2N1bWVu
dDo6Q2FjaGVkU1ZHRG9jdW1lbnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorICAg
IDogQ2FjaGVkUmVzb3VyY2UocmVxdWVzdCwgU1ZHRG9jdW1lbnRSZXNvdXJjZSkKKyAgICAsIG1f
ZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIpKQor
eworICAgIHNldEFjY2VwdCgiaW1hZ2Uvc3ZnK3htbCIpOworfQorCitDYWNoZWRTVkdEb2N1bWVu
dDo6fkNhY2hlZFNWR0RvY3VtZW50KCkKK3sKK30KKwordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBjaHMpCit7CisgICAgbV9kZWNvZGVyLT5zZXRFbmNv
ZGluZyhjaHMsIFRleHRSZXNvdXJjZURlY29kZXI6OkVuY29kaW5nRnJvbUhUVFBIZWFkZXIpOwor
fQorCitTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKK30KKwordm9pZCBDYWNoZWRTVkdE
b2N1bWVudDo6ZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCit7CisgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChkYXRhKSB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgZGVjb2RlZFRleHQ7Cisg
ICAgICAgIGRlY29kZWRUZXh0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLT5kYXRhKCks
IGRhdGEtPnNpemUoKSkpOworICAgICAgICBkZWNvZGVkVGV4dC5hcHBlbmQobV9kZWNvZGVyLT5m
bHVzaCgpKTsKKyAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgcmVz
cG9uc2UoKS51cmwoKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2RlZFRl
eHQudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgc2V0TG9hZGluZyhmYWxzZSk7CisgICAgY2hl
Y2tOb3RpZnkoKTsKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAw
MDAwMDAwLi5jMDg0ZjE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMTAgUm9iIEJ1aXMgPHJ3bGJ1aXNAZ21haWwuY29tPgorICAgIENvcHlyaWdo
dCAoQykgMjAxMSBDb3NtaW4gVHJ1dGEgPGN0cnV0YUBnbWFpbC5jb20+CisgICAgQ29weXJpZ2h0
IChDKSAyMDEyIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFJl
bmF0YSBIb2RvdmFuIDxyZW5pQHdlYmtpdC5vcmc+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBDYWNoZWRTVkdEb2N1
bWVudF9oCisjZGVmaW5lIENhY2hlZFNWR0RvY3VtZW50X2gKKworI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBUZXh0UmVzb3VyY2VEZWNv
ZGVyOworCitjbGFzcyBDYWNoZWRTVkdEb2N1bWVudCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ2FjaGVkU1ZHRG9jdW1lbnQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CisgICAgdmlydHVhbCB+Q2FjaGVkU1ZHRG9jdW1lbnQoKTsKKworICAgIFNWR0Rv
Y3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFs
IFN0cmluZyBlbmNvZGluZygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBkYXRhKFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisKKyAgICB2aXJ0
dWFsIGJvb2wgc2NoZWR1bGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKK3Byb3RlY3RlZDoK
KyAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgUmVmUHRyPFRleHRSZXNv
dXJjZURlY29kZXI+IG1fZGVjb2RlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7
Cit9OworCitjbGFzcyBDYWNoZWRTVkdEb2N1bWVudENsaWVudCA6IHB1YmxpYyBDYWNoZWRSZXNv
dXJjZUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q2FjaGVkU1ZHRG9jdW1lbnRDbGll
bnQoKSB7IH0KKyAgICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIGV4cGVjdGVkVHlw
ZSgpIHsgcmV0dXJuIFNWR0RvY3VtZW50VHlwZTsgfQorICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgp
OyB9Cit9OworCit9CisKKyNlbmRpZgotLSAKMS43LjUuNAoK
</data>
<flag name="commit-queue"
          id="129729"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127971</attachid>
            <date>2012-02-21 07:48:49 -0800</date>
            <delta_ts>2012-02-27 09:32:45 -0800</delta_ts>
            <desc>Proposed first part</desc>
            <filename>0001-upload-ext-part-1.patch</filename>
            <type>text/plain</type>
            <size>20667</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64">RnJvbSA0NWNiMjU2OWU4NDI3YzhlNGNhYmQ2MWZkYjE3NTAwNjQ4ZWJkMmI1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSZW5hdGEgSG9kb3ZhbiA8cmVuaUB3ZWJraXQub3JnPgpEYXRl
OiBUdWUsIDIxIEZlYiAyMDEyIDE2OjQ4OjEwICswMTAwClN1YmplY3Q6IFtQQVRDSF0gdXBsb2Fk
IGV4dCBwYXJ0IDEKCi0tLQogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgICAgICAgICAg
ICAgICAgICAgICAgfCAgICAxICsKIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICA0OCArKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qICAgICAgIHwgICAgOCArKwogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgfCAgICA4ICsr
CiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwICAgICB8ICAg
IDggKysKIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oICAgICAg
IHwgICAgMyArCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGll
bnQuaCB8ICAgIDMgKwogLi4uL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcCAgfCAgIDE0ICsrKysKIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5jcHAgIHwgICA3NyArKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggICAgfCAgIDYyICsrKysrKysrKysr
KysrKysKIDEzIGZpbGVzIGNoYW5nZWQsIDIzOSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygt
KQogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCiBjcmVhdGUgbW9kZSAxMDA3NTUgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAogY3JlYXRlIG1vZGUgMTAwNzU1IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBlN2M3M2U2Li4zZTIwMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
OTg2LDYgKzk4Niw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuY3BwCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisgICAgbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcAogICAgIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGNjOTg3ZjIuLjFjMjM0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxMi0w
Mi0yMCAgUmVuYXRhIEhvZG92YW4gIDxyZW5pQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXh0ZXJu
YWwgPHVzZT4geGxpbms6aHJlZiByZWZlcmVuY2VzIGRvIG5vdCB3b3JrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ5OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgZXh0ZXJuYWwgcmVmZXJl
bmNlcyBvbiA8dXNlPiBieSBpbnRyb2R1Y2luZyBDYWNoZWRTVkdEb2N1bWVudC4KKyAgICAgICAg
Q2FjaGVkU1ZHRG9jdW1lbnQgaXMgYSBDYWNoZWRSZXNvdXJjZSBzcGVjaWFsaXplZCBmb3IgU1ZH
RG9jdW1lbnRzLgorICAgICAgICBUaGlzIENhY2hlZFNWR0RvY3VtZW50IHdpbGwgYmUgc3RvcmVk
IGZvciBldmVyeSB1c2UgZWxlbWVudCB3aXRoIGV4dGVybmFsIHJlZmVyZW5jZS4KKyAgICAgICAg
VGhpcyBmaXJzdCBwYXRjaCBvbmx5IGNvbnRhaW5zIHRoZSBuZXcgY2xhc3NlcyB0byB0ZXN0IHdo
ZXRoZXIgaXQgd29ya3Mgb24gZXZlcnkgcGxhdGZvcm0uCisgICAgICAgIFNvIHRoZXkgYXJlbid0
IHVzZWQgYW55d2hlcmUgYW5kIGp1c3QgYSBmb2xsb3ctdXAgcGF0Y2ggd2lsbCBiaW5kIHRoZW0g
aW50byB0aGUgY2FjaGluZyBzeXN0ZW0uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0gbm8gY2hh
bmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVm
YXVsdFByaW9yaXR5Rm9yUmVzb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZFJl
c291cmNlVHlwZVRvVGFyZ2V0VHlwZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50Lmg6
CisgICAgICAgIChDYWNoZWRSZXNvdXJjZUNsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjaGVja0luc2Vj
dXJlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2Fu
UmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50OjpDYWNoZWRTVkdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdE
b2N1bWVudDo6fkNhY2hlZFNWR0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNW
R0RvY3VtZW50OjpzZXRFbmNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1
bWVudDo6ZW5jb2RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmRh
dGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2FjaGVkU1ZHRG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNWR0RvY3VtZW50OjpzY2hlZHVsZSk6CisgICAgICAgIChDYWNoZWRTVkdEb2N1
bWVudENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudENsaWVudDo6
fkNhY2hlZFNWR0RvY3VtZW50Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50Q2xpZW50OjpleHBlY3RlZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZH
RG9jdW1lbnRDbGllbnQ6OnJlc291cmNlQ2xpZW50VHlwZSk6CisKIDIwMTItMDItMjAgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBJbnZhbGlkIGNhc3QgaW4gV2Vi
Q29yZTo6dG9FbGVtZW50IC8gV2ViQ29yZTo6SFRNTEVsZW1lbnRTdGFjazo6RWxlbWVudFJlY29y
ZDo6ZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNDJmYjlmYy4uYmQ0
NTMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNTEwLDYgKzI1MTAsOCBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTaGFkZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVy
LmggXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50
LmggXAorCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXgg
N2RlYWU2YS4uODYwNGQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC05MjQsNiArOTI0LDggQEAgU09VUkNF
UyArPSBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBcCiAgICAgbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgXAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIu
Y3BwIFwKKyAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIFwKKyAgICBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuY3BwIFwKICAgICBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNw
cCBcCiAgICAgbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwIFwKQEAg
LTE5OTIsNiArMTk5NCw3IEBAIEhFQURFUlMgKz0gXAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUhhbmRsZS5oIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggXAogICAg
IGxvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuaCBcCisgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmggXAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggXAog
ICAgIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oIFwKICAgICBsb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDY3NDY0ZGUuLjdkOThlMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTI1MzAsNiArMjUzMCw4IEBACiAgICAgICAgICAgICAnbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVk
U2hhZGVyLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5oJywK
KyAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwJywKKyAgICAg
ICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCcsCiAgICAgICAgICAgICAn
bG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suaCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggOTdlYjM5Mi4uYjE4OWVhOSAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI2NDg1LDYgKzI2NDg1LDE0IEBACiAJ
CQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2Fk
ZXJcY2FjaGVcQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXGNhY2hlXENhY2hlZFNWR0RvY3Vt
ZW50LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxsb2FkZXJcY2FjaGVcQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAiCiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYzcwZDM5ZS4uODc3NjU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzUwNCw2ICszNTA0LDggQEAKIAkJ
QTBFRTBERjYxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdSZW5kZXJlckluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEwRUUwREYyMTQ0Rjgy
NTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmggKi87IH07CiAJCUEwRUUwREY3
MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hhZGVycy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMEVFMERGMzE0NEY4MjU1MDBGODBCMEQg
LyogV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwICovOyB9OwogCQlBMEVFMERGODE0NEY4MjU1MDBGODBC
MEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEEwRUUwREY0MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hh
ZGVycy5oICovOyB9OworCQlBMTA0RjI0MzE0QzcxRjdBMDA5RTJDMjMgLyogQ2FjaGVkU1ZHRG9j
dW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTEwNEYyNDExNEM3MUY3QTAwOUUyQzIzIC8qIENhY2hlZFNWR0RvY3VtZW50LmNwcCAqLzsgfTsK
KwkJQTEwNEYyNDQxNEM3MUY3QTAwOUUyQzIzIC8qIENhY2hlZFNWR0RvY3VtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTA0RjI0MjE0QzcxRjdB
MDA5RTJDMjMgLyogQ2FjaGVkU1ZHRG9jdW1lbnQuaCAqLzsgfTsKIAkJQTEwQkI1ODUxNDg0RTNB
NzAwQjJFODdBIC8qIFJlbmRlclNWR1JlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExMEJCNTgzMTQ4NEUzQTcwMEIyRTg3QSAvKiBSZW5kZXJTVkdS
ZWN0LmggKi87IH07CiAJCUExMEJCNThCMTQ4NEUzQjMwMEIyRTg3QSAvKiBSZW5kZXJTVkdTaGFw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwQkI1
ODkxNDg0RTNCMzAwQjJFODdBIC8qIFJlbmRlclNWR1NoYXBlLmggKi87IH07CiAJCUExMERDNzZB
MTQ3NDdCQUIwMDVFMjQ3MSAvKiBTdHlsZUdyaWREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMERDNzY4MTQ3NDdCQUIwMDVFMjQ3MSAvKiBT
dHlsZUdyaWREYXRhLmNwcCAqLzsgfTsKQEAgLTEwMzc3LDYgKzEwMzc5LDggQEAKIAkJQTBFRTBE
RjIxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdSZW5kZXJlckluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oOyBwYXRoID0g
Y2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTBFRTBERjMxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMRGVidWdTaGFkZXJzLmNw
cDsgcGF0aCA9IGNhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUEwRUUwREY0MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hhZGVy
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTERlYnVnU2hhZGVycy5o
OyBwYXRoID0gY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExMDRGMjQxMTRDNzFGN0EwMDlFMkMyMyAvKiBDYWNoZWRTVkdEb2N1bWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRTVkdEb2N1bWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMDRGMjQyMTRDNzFGN0EwMDlF
MkMyMyAvKiBDYWNoZWRTVkdEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWNoZWRTVkdEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MTBCQjU4MjE0ODRFM0E3MDBCMkU4N0EgLyogUmVuZGVyU1ZHUmVjdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdSZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTEwQkI1ODMxNDg0RTNBNzAwQjJFODdBIC8qIFJlbmRlclNWR1Jl
Y3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHUmVjdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTBCQjU4ODE0ODRFM0IzMDBCMkU4N0EgLyog
UmVuZGVyU1ZHU2hhcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVuZGVyU1ZHU2hhcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgxOTgs
NiArMTgyMDIsOCBAQAogCQlBOEQyQjI1MjEyODdBNTYwMDBBRjREREEgLyogY2FjaGUgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUExMDRGMjQxMTRDNzFG
N0EwMDlFMkMyMyAvKiBDYWNoZWRTVkdEb2N1bWVudC5jcHAgKi8sCisJCQkJQTEwNEYyNDIxNEM3
MUY3QTAwOUUyQzIzIC8qIENhY2hlZFNWR0RvY3VtZW50LmggKi8sCiAJCQkJQkNCMTZDMDAwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuY3BwICovLAogCQkJCUJDQjE2QzAx
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmggKi8sCiAJCQkJQkM2NEI0
QzkwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuY3BwICovLApAQCAtMjEzMjIsNiArMjEz
MjgsNyBAQAogCQkJCUJDRDUzMzY0MEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3Vy
Y2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTAzOEJFNDExNDcyQUQ5ODAwOTVFMEQx
IC8qIENhY2hlZFNoYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDBCQzU0NDkxNDQzQUM0QTAw
RTEwNURBIC8qIENhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUEx
MDRGMjQ0MTRDNzFGN0EwMDlFMkMyMyAvKiBDYWNoZWRTVkdEb2N1bWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDc1Mzg2MDMxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMjgwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFhTTFN0
eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OTUwMDgyNDVFNTkwMDFFOUFCQyAv
KiBDYWNoZVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDc1Niw2ICsyNDc2Myw3IEBACiAJ
CQkJQkNCMTZDMjkwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDQjE2QzIzMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3Jp
cHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTAzOEJFNDAxNDcyQUQ5ODAwOTVFMEQxIC8qIENh
Y2hlZFNoYWRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMTA0RjI0MzE0QzcxRjdBMDA5RTJD
MjMgLyogQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc1Mzg2MDIx
NDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0IxNkMyNzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0OUFFMkQ5NjEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25W
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXgg
ODBkMzczYy4uNTdkMDViYQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKQEAgLTYxLDYgKzYxLDEwIEBAIHN0YXRpYyBSZXNvdXJjZUxvYWRQcmlvcml0eSBk
ZWZhdWx0UHJpb3JpdHlGb3JSZXNvdXJjZVR5cGUoQ2FjaGVkUmVzb3VyY2U6OlR5cGUKICNlbmRp
ZgogICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5SGlnaDsKICAgICAgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OgorI2lmIEVOQUJMRShTVkcpCisgICAgICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0RvY3VtZW50UmVzb3VyY2U6CisgICAgICAgICAgICByZXR1
cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3c7CisjZW5kaWYKICAgICAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6Rm9udFJlc291cmNlOgogICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpSYXdS
ZXNvdXJjZToKICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eU1lZGl1bTsK
QEAgLTExNiw2ICsxMjAsMTAgQEAgc3RhdGljIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0VHlwZSBj
YWNoZWRSZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUoQ2FjaGVkUmVzb3VyY2UKICAgICBjYXNlIENh
Y2hlZFJlc291cmNlOjpUZXh0VHJhY2tSZXNvdXJjZToKICAgICAgICAgcmV0dXJuIFJlc291cmNl
UmVxdWVzdDo6VGFyZ2V0SXNUZXh0VHJhY2s7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU1ZHKQorICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0RvY3VtZW50UmVzb3VyY2U6CisgICAgICAgIHJldHVy
biBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzSW1hZ2U7CisjZW5kaWYKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNT
dWJyZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmgKaW5kZXggMmE0YmU0My4uOTg2MzlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTY1LDYgKzY1LDkgQEAgcHVibGljOgogICAgICAgICBT
Y3JpcHQsCiAgICAgICAgIEZvbnRSZXNvdXJjZSwKICAgICAgICAgUmF3UmVzb3VyY2UKKyNpZiBF
TkFCTEUoU1ZHKQorICAgICAgICAsIFNWR0RvY3VtZW50UmVzb3VyY2UKKyNlbmRpZgogI2lmIEVO
QUJMRShYU0xUKQogICAgICAgICAsIFhTTFN0eWxlU2hlZXQKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaAppbmRleCA0YWEy
ZGQyLi5kZjZiZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VDbGllbnQuaApAQCAtMzksNiArMzksOSBAQCBwdWJsaWM6CiAgICAgICAgIElt
YWdlVHlwZSwKICAgICAgICAgRm9udFR5cGUsCiAgICAgICAgIFN0eWxlU2hlZXRUeXBlLAorI2lm
IEVOQUJMRShTVkcpCisgICAgICAgIFNWR0RvY3VtZW50VHlwZSwKKyNlbmRpZgogICAgICAgICBS
YXdSZXNvdXJjZVR5cGUKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCA5YjQwYmQ0Li5lMGUxZDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRl
ci5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNhY2hl
ZFNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkRm9udC5oIgogI2luY2x1ZGUgIkNhY2hl
ZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIKQEAgLTcyLDYgKzczLDEw
IEBAIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6
OlR5cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkQ1NT
U3R5bGVTaGVldChyZXF1ZXN0LCBjaGFyc2V0KTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpT
Y3JpcHQ6CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkU2NyaXB0KHJlcXVlc3QsIGNoYXJzZXQp
OworI2lmIEVOQUJMRShTVkcpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U1ZHRG9jdW1lbnRS
ZXNvdXJjZToKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRTVkdEb2N1bWVudChyZXF1ZXN0KTsK
KyNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKICAgICAgICAg
cmV0dXJuIG5ldyBDYWNoZWRGb250KHJlcXVlc3QpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6
OlJhd1Jlc291cmNlOgpAQCAtMjQ2LDYgKzI1MSw5IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmNoZWNrSW5zZWN1cmVDb250ZW50KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0
CiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6WFNMU3R5bGVTaGVl
dDoKICNlbmRpZgorI2lmIEVOQUJMRShTVkcpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U1ZH
RG9jdW1lbnRSZXNvdXJjZToKKyNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0
eWxlU2hlZXQ6CiAgICAgICAgIC8vIFRoZXNlIHJlc291cmNlIGNhbiBpbmplY3Qgc2NyaXB0IGlu
dG8gdGhlIGN1cnJlbnQgZG9jdW1lbnQgKFNjcmlwdCwKICAgICAgICAgLy8gWFNMKSBvciBleGZp
bHRyYXRlIHRoZSBjb250ZW50IG9mIHRoZSBjdXJyZW50IGRvY3VtZW50IChDU1MpLgpAQCAtMzEz
LDYgKzMyMSw5IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVk
UmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsCiAgICAgICAgIC8vIFRoZXNlIHR5
cGVzIG9mIHJlc291cmNlcyBjYW4gYmUgbG9hZGVkIGZyb20gYW55IG9yaWdpbi4KICAgICAgICAg
Ly8gRklYTUU6IEFyZSB3ZSBzdXJlIGFib3V0IENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U/
CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShTVkcpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZToKKyNlbmRpZgogI2lmIEVOQUJMRShYU0xUKQogICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OlhTTFN0eWxlU2hlZXQ6CiAgICAgICAgIGlmICghbV9kb2N1bWVu
dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwpKSB7CkBAIC0zNDcsNiArMzU4LDkg
QEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6
VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwKICAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dTdHlsZUZyb21Tb3VyY2UodXJsKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKFNWRykKKyAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpTVkdEb2N1bWVudFJlc291cmNlOgorI2VuZGlmCiAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAgICAgICAgaWYgKCFtX2RvY3VtZW50
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dJbWFnZUZyb21Tb3VyY2UodXJsKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAuLmYwM2ZhZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgICAgQ29weXJp
Z2h0IChDKSAyMDEwIFJvYiBCdWlzIDxyd2xidWlzQGdtYWlsLmNvbT4KKyAgICBDb3B5cmlnaHQg
KEMpIDIwMTEgQ29zbWluIFRydXRhIDxjdHJ1dGFAZ21haWwuY29tPgorICAgIENvcHlyaWdodCAo
QykgMjAxMiBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICAgIENvcHlyaWdodCAoQykgMjAxMiBSZW5h
dGEgSG9kb3ZhbiA8cmVuaUB3ZWJraXQub3JnPgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnQuaCIKKworI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5k
bGUuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ2FjaGVkU1ZHRG9jdW1lbnQ6
OkNhY2hlZFNWR0RvY3VtZW50KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKKyAgICA6
IENhY2hlZFJlc291cmNlKHJlcXVlc3QsIFNWR0RvY3VtZW50UmVzb3VyY2UpCisgICAgLCBtX2Rl
Y29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKSkKK3sK
KyAgICBzZXRBY2NlcHQoImltYWdlL3N2Zyt4bWwiKTsKK30KKworQ2FjaGVkU1ZHRG9jdW1lbnQ6
On5DYWNoZWRTVkdEb2N1bWVudCgpCit7Cit9CisKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OnNl
dEVuY29kaW5nKGNvbnN0IFN0cmluZyYgY2hzKQoreworICAgIG1fZGVjb2Rlci0+c2V0RW5jb2Rp
bmcoY2hzLCBUZXh0UmVzb3VyY2VEZWNvZGVyOjpFbmNvZGluZ0Zyb21IVFRQSGVhZGVyKTsKK30K
KworU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7Cit9CisKK3ZvaWQgQ2FjaGVkU1ZHRG9j
dW1lbnQ6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQoreworICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoZGF0YSkgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGRlY29kZWRUZXh0OworICAg
ICAgICBkZWNvZGVkVGV4dC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpKTsKKyAgICAgICAgZGVjb2RlZFRleHQuYXBwZW5kKG1fZGVjb2Rlci0+Zmx1
c2goKSk7CisgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJl
Y2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4K
KyAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgcmVzcG9uc2UoKS51
cmwoKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2RlZFRleHQudG9TdHJp
bmcoKSk7CisgICAgfQorCisgICAgc2V0TG9hZGluZyhmYWxzZSk7CisgICAgY2hlY2tOb3RpZnko
KTsKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44
NDM4OWVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMp
IDIwMTAgUm9iIEJ1aXMgPHJ3bGJ1aXNAZ21haWwuY29tPgorICAgIENvcHlyaWdodCAoQykgMjAx
MSBDb3NtaW4gVHJ1dGEgPGN0cnV0YUBnbWFpbC5jb20+CisgICAgQ29weXJpZ2h0IChDKSAyMDEy
IFVuaXZlcnNpdHkgb2YgU3plZ2VkCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFJlbmF0YSBIb2Rv
dmFuIDxyZW5pQHdlYmtpdC5vcmc+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBDYWNoZWRTVkdEb2N1bWVudF9oCisj
ZGVmaW5lIENhY2hlZFNWR0RvY3VtZW50X2gKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgorI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IENhY2hlZFNWR0RvY3VtZW50KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOworICAgIHZpcnR1YWwgfkNhY2hlZFNWR0RvY3VtZW50KCk7CisKKyAgICBTVkdEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJp
bmcgZW5jb2RpbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworCitwcm90ZWN0ZWQ6Cisg
ICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OworICAgIFJlZlB0cjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBtX2RlY29kZXI7Cit9OworCitjbGFzcyBDYWNoZWRTVkdEb2N1bWVudENsaWVu
dCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
Q2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQoKSB7IH0KKyAgICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2VD
bGllbnRUeXBlIGV4cGVjdGVkVHlwZSgpIHsgcmV0dXJuIFNWR0RvY3VtZW50VHlwZTsgfQorICAg
IHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIHsg
cmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYgLy8g
Q2FjaGVkU1ZHRG9jdW1lbnRfaAotLSAKMS43LjUuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129054</attachid>
            <date>2012-02-27 09:32:45 -0800</date>
            <delta_ts>2012-02-29 10:27:42 -0800</delta_ts>
            <desc>Proposed second part</desc>
            <filename>0001-second-up.patch</filename>
            <type>text/plain</type>
            <size>23242</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64">RnJvbSA4NmMwMDE0MjY1NDYwNTQ4MTI5YjViYWMyZGU5MmRlZGI4NDhjMTdmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSZW5hdGEgSG9kb3ZhbiA8cmVuaUB3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDI3IEZlYiAyMDEyIDE4OjE3OjE2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gc2Vjb25k
IHVwCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICA1NCArKysrKysrKysKIC4uLi9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHAgIHwgICAgNyArCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaCB8ICAgIDQgKwogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJl
ZmVyZW5jZS5jcHAgICAgICAgICAgICAgfCAgIDEzICsrLQogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1VSSVJlZmVyZW5jZS5oICAgICAgICAgICAgICAgfCAgIDExICsrLQogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1VzZUVsZW1lbnQuY3BwICAgICAgICAgICAgICAgfCAgMTE3ICsrKysrKysrKysrKysr
KystLS0tCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oICAgICAgICAgICAgICAg
ICB8ICAgMTUgKystCiA3IGZpbGVzIGNoYW5nZWQsIDE4OCBpbnNlcnRpb25zKCspLCAzMyBkZWxl
dGlvbnMoLSkKIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlUmVxdWVzdC5o
CiBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VF
bGVtZW50LmNwcAogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVXNlRWxlbWVudC5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM2YTlkZjcuLmYxYjc4YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxMi0wMi0yNyAgUmVuYXRhIEhvZG92YW4gIDxyZW5p
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXh0ZXJuYWwgPHVzZT4geGxpbms6aHJlZiByZWZlcmVu
Y2VzIGRvIG5vdCB3b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgaXMgYSBmb2xsb3ctdXAgcGF0Y2ggYWZ0ZXIgcjEwODc4NS4KKyAgICAgICAg
SW4gdGhpcyBwYXRjaCB3ZSBiaW5kIHRoZSBwcmV2aW91c2x5IGludHJvZHVjZWQgQ2FjaGVkU1ZH
RG9jdW1lbnQgY2xhc3MKKyAgICAgICAgaW50byB0aGUgY2FjaGluZyBtZWNoYW5pc20gb2YgU1ZH
VXNlRWxlbWVudC4gVGhlIG1vZGUgaG93IGV4dGVybmFsIHJlc291cmNlcworICAgICAgICBhcmUg
aGFuZGxlZCBpcyBzaW1pbGFyIHRvIHRoZSBwcm9jZXNzaW5nIG9mIGludGVybmFsIG9uZXMuIFdl
IGJ1aWxkIHRoZSBpbnN0YW5jZQorICAgICAgICBhbmQgc2hhZG93IHRyZWUgdGhlIHNhbWUgd2F5
IGJ1dCB3ZSBoYXZlIHRvIGtlZXAgaW4gbWluZCB0aGF0IHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2Vz
CisgICAgICAgIG1heWJlIG5vdCBsb2FkZWQgeWV0LiBXZSBjYW4gY2hlY2sgaXQgd2l0aCBjYWNo
ZWREb2N1bWVudElzU3RpbGxMb2FkaW5nKCkgZnVuY3Rpb24uCisKKyAgICAgICAgU1ZHVVJJUmVm
ZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZygpIGFsc28gbmVlZCB0byBiZSBleHRl
bmRlZC4gVGhlIGNyZWF0aW9uCisgICAgICAgIG9mIGJhc2VVUkkgc2hvdWxkIGJlIGJhc2VkIG9u
IHRoZSByZWZlcmVuY2VkIGRvY3VtZW50J3MgVVJMIGluc3RlYWQgb2YgdGhlIGFjdHVhbCBvbmUg
YW5kCisgICAgICAgIGl0IGhhcyB0byB1c2UgYWJzb2x1dGUgYWRkcmVzcy4KKworICAgICAgICBU
aGUgcGF0Y2ggYWZmZWN0cyBhIGxvdCBvZiB0ZXN0cyB3aGljaCBoYXZlIGV4dGVybmFsIHJlc291
cmNlcyBlc3BlY2lhbGx5IGluIHN2Zy9iYXRpay4gQmVjYXVzZQorICAgICAgICBvZiB0aGUgc2l6
ZSBvZiB0aGF0IHRlc3QgcmVmYWN0b3IgdGhleSB3aWxsIGJlIGNvbW1pdGVkIGluIGEgZm9sbG93
LXVwIHBhdGNoLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RTVkdEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhY2hl
ZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKiBwYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXF1ZXN0Lmg6
CisgICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdVUklSZWZlcmVuY2U6OmZyYWdtZW50SWRlbnRpZmllckZyb21JUklTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyk6
CisgICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5oOgorICAgICAgICAoU1ZHVVJJUmVmZXJl
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VSSVJlZmVyZW5jZTo6aXNFeHRlcm5hbFVSSVJl
ZmVyZW5jZSk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVXNlRWxlbWVudDo6U1ZHVXNlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdVc2VFbGVtZW50Ojp+U1ZHVXNlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnJlZmVyZW5jZWREb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdVc2VFbGVtZW50Ojp1cGRhdGVDb250YWluZXJPZmZzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVXNlRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVXNlRWxlbWVudDo6YnVpbGRTaGFkb3dBbmRJbnN0YW5jZVRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6aGFzQ3ljbGVVc2VSZWZlcmVuY2luZyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpleHBhbmRVc2VFbGVtZW50c0luU2hhZG93VHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpleHBhbmRTeW1ib2xFbGVtZW50
c0luU2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojphc3NvY2lh
dGVJbnN0YW5jZXNXaXRoU2hhZG93VHJlZUVsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1VzZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVs
ZW1lbnQ6OmNhY2hlZERvY3VtZW50SXNTdGlsbExvYWRpbmcpOgorICAgICAgICAqIHN2Zy9TVkdV
c2VFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNWR1VzZUVsZW1lbnQp
OgorCiAyMDEyLTAyLTI3ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW1N0eWxlc10gQWxsb3cgYWRkaW5nIENTUyBwcm9w
ZXJ0aWVzIGFueXdoZXJlIGluIHRoZSBzdHlsZSBkZWNsYXJhdGlvbiwgbm90IG9ubHkgYXQgdGhl
IGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggN2RjMjRmOS4uZmZmZDQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMzAsNiAr
MjMwLDEzIEBAIENhY2hlZFhTTFN0eWxlU2hlZXQqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0WFNMU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShTVkcpCitDYWNoZWRTVkdEb2N1bWVudCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RT
VkdEb2N1bWVudChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENhY2hlZFNWR0RvY3VtZW50Kj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNl
OjpTVkdEb2N1bWVudFJlc291cmNlLCByZXF1ZXN0LCByZXF1ZXN0LnVybCgpLCBkZWZhdWx0Q2Fj
aGVkUmVzb3VyY2VPcHRpb25zKCkpKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKExJTktfUFJF
RkVUQ0gpCiBDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RMaW5r
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggODZkY2EwZS4u
ZTVkNTJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKK2NsYXNzIENhY2hlZFNWR0RvY3VtZW50OwogY2xh
c3MgQ2FjaGVkRm9udDsKIGNsYXNzIENhY2hlZEltYWdlOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3Vy
Y2U7CkBAIC02OSw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICBDYWNoZWRGb250KiByZXF1ZXN0Rm9u
dChSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBDYWNoZWRSYXdSZXNvdXJjZSogcmVxdWVzdFJhd1Jl
c291cmNlKFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwog
CisjaWYgRU5BQkxFKFNWRykKKyAgICBDYWNoZWRTVkdEb2N1bWVudCogcmVxdWVzdFNWR0RvY3Vt
ZW50KFJlc291cmNlUmVxdWVzdCYpOworI2VuZGlmCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgQ2Fj
aGVkWFNMU3R5bGVTaGVldCogcmVxdWVzdFhTTFN0eWxlU2hlZXQoUmVzb3VyY2VSZXF1ZXN0Jik7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5
UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCm9s
ZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlUmVxdWVzdC5oCm9sZCBtb2Rl
IDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVUklSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5j
cHAKaW5kZXggZWUzYzc3My4uMjJkOGExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VSSVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVy
ZW5jZS5jcHAKQEAgLTQ1LDE0ICs0NSwxOCBAQCBib29sIFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICByZXR1cm4gYXR0
ck5hbWUubWF0Y2hlcyhYTGlua05hbWVzOjpocmVmQXR0cik7CiB9CiAKLVN0cmluZyBTVkdVUklS
ZWZlcmVuY2U6OmZyYWdtZW50SWRlbnRpZmllckZyb21JUklTdHJpbmcoY29uc3QgU3RyaW5nJiB1
cmwsIERvY3VtZW50KiBkb2N1bWVudCkKK1N0cmluZyBTVkdVUklSZWZlcmVuY2U6OmZyYWdtZW50
SWRlbnRpZmllckZyb21JUklTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmwsIERvY3VtZW50KiBkb2N1
bWVudCwgRG9jdW1lbnQqIGV4dGVybmFsRG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50
KTsKICAgICBzaXplX3Qgc3RhcnQgPSB1cmwuZmluZCgnIycpOwogICAgIGlmIChzdGFydCA9PSBu
b3RGb3VuZCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBLVVJMIGJhc2Ug
PSBzdGFydCA/IEtVUkwoZG9jdW1lbnQtPmJhc2VVUkkoKSwgdXJsLnN1YnN0cmluZygwLCBzdGFy
dCkpIDogZG9jdW1lbnQtPmJhc2VVUkkoKTsKKyAgICBLVVJMIGJhc2U7CisgICAgaWYgKGV4dGVy
bmFsRG9jdW1lbnQpCisgICAgICAgIGJhc2UgPSBleHRlcm5hbERvY3VtZW50LT5iYXNlVVJJKCk7
CisgICAgZWxzZQorICAgICAgICBiYXNlID0gc3RhcnQgPyBLVVJMKGRvY3VtZW50LT5iYXNlVVJJ
KCksIHVybC5zdWJzdHJpbmcoMCwgc3RhcnQpKSA6IGRvY3VtZW50LT5iYXNlVVJJKCk7CiAgICAg
U3RyaW5nIGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5zdWJzdHJpbmcoc3RhcnQpOwogICAgIEtV
Ukwga3VybChiYXNlLCBmcmFnbWVudElkZW50aWZpZXIpOwogICAgIGlmIChlcXVhbElnbm9yaW5n
RnJhZ21lbnRJZGVudGlmaWVyKGt1cmwsIGRvY3VtZW50LT51cmwoKSkpCkBAIC02MiwxMiArNjYs
MTEgQEAgU3RyaW5nIFNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlSSVN0
cmluZyhjb25zdCBTdHJpbmcmIHVybCwgRG9jdW0KICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IH0KIAotRWxlbWVudCogU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmlu
Zyhjb25zdCBTdHJpbmcmIGlyaSwgRG9jdW1lbnQqIGRvY3VtZW50LCBTdHJpbmcqIGZyYWdtZW50
SWRlbnRpZmllcikKK0VsZW1lbnQqIFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21J
UklTdHJpbmcoY29uc3QgU3RyaW5nJiBpcmksIERvY3VtZW50KiBkb2N1bWVudCwgU3RyaW5nKiBm
cmFnbWVudElkZW50aWZpZXIsIERvY3VtZW50KiBleHRlcm5hbERvY3VtZW50KQogewotICAgIFN0
cmluZyBpZCA9IGZyYWdtZW50SWRlbnRpZmllckZyb21JUklTdHJpbmcoaXJpLCBkb2N1bWVudCk7
CisgICAgU3RyaW5nIGlkID0gZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlSSVN0cmluZyhpcmksIGRv
Y3VtZW50LCBleHRlcm5hbERvY3VtZW50KTsKICAgICBpZiAoZnJhZ21lbnRJZGVudGlmaWVyKQog
ICAgICAgICAqZnJhZ21lbnRJZGVudGlmaWVyID0gaWQ7Ci0gICAgLy8gRklYTUU6IEhhbmRsZSBl
eHRlcm5hbCByZWZlcmVuY2VzIChCdWcgNjUzNDQpLgogICAgIHJldHVybiBkb2N1bWVudC0+Z2V0
RWxlbWVudEJ5SWQoaWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VVJJUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmgKaW5k
ZXggZWYwNDE1MS4uZTkwZjE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VS
SVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaApA
QCAtMzksOCArMzksMTUgQEAgcHVibGljOgogICAgIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgdm9pZCBhZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKEhhc2hT
ZXQ8UXVhbGlmaWVkTmFtZT4mKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgZnJhZ21lbnRJZGVudGlm
aWVyRnJvbUlSSVN0cmluZyhjb25zdCBTdHJpbmcmLCBEb2N1bWVudCopOwotICAgIHN0YXRpYyBF
bGVtZW50KiB0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhjb25zdCBTdHJpbmcmLCBEb2N1bWVu
dCosIFN0cmluZyogPSAwKTsKKyAgICBzdGF0aWMgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllckZy
b21JUklTdHJpbmcoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnQqLCBEb2N1bWVudCogPSAwKTsKKyAg
ICBzdGF0aWMgRWxlbWVudCogdGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoY29uc3QgU3RyaW5n
JiwgRG9jdW1lbnQqLCBTdHJpbmcqID0gMCwgRG9jdW1lbnQqID0gMCk7CisKKyAgICBzdGF0aWMg
aW5saW5lIGJvb2wgaXNFeHRlcm5hbFVSSVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHVyaSkKKyAg
ICB7CisgICAgICAgIGlmICghdXJpLnN0YXJ0c1dpdGgoIiMiKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB2b2lkIHNldEhyZWZCYXNlVmFsdWUoY29uc3QgU3RyaW5nJikgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUK
aW5kZXggZTM0MmVlNC4uMTg3YzJlMgotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0z
LDYgKzMsOCBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMSBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBSZW5hdGEgSG9kb3ZhbiA8cmVuaUB3ZWJraXQub3JnPgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0yNiw2ICsyOCw3IEBACiAjaW5jbHVkZSAiU1ZHVXNlRWxlbWVudC5oIgogCiAj
aW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIK
ICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJFdmVudC5oIgpAQCAtODQsMTAgKzg3LDExIEBAIGlubGluZSBTVkdVc2VFbGVtZW50
OjpTVkdVc2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1CiAgICAgLCBtX2hlaWdodChMZW5ndGhNb2RlSGVpZ2h0KQogICAgICwgbV91cGRhdGVzQmxv
Y2tlZChmYWxzZSkKICAgICAsIG1fbmVlZHNTaGFkb3dUcmVlUmVjcmVhdGlvbihmYWxzZSkKKyAg
ICAsIG1fY2FjaGVkRG9jdW1lbnQoMCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6dXNlVGFnKSk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdVc2VFbGVt
ZW50KCk7Ci0gICAgCisKICAgICBzZXRIYXNDdXN0b21XaWxsT3JEaWRSZWNhbGNTdHlsZSgpOwog
fQogCkBAIC05Niw2ICsxMDAsMTIgQEAgUGFzc1JlZlB0cjxTVkdVc2VFbGVtZW50PiBTVkdVc2VF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG8KICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNWR1VzZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAor
U1ZHVXNlRWxlbWVudDo6flNWR1VzZUVsZW1lbnQoKQoreworICAgIGlmIChtX2NhY2hlZERvY3Vt
ZW50KQorICAgICAgICBtX2NhY2hlZERvY3VtZW50LT5yZW1vdmVDbGllbnQodGhpcyk7Cit9CisK
IFNWR0VsZW1lbnRJbnN0YW5jZSogU1ZHVXNlRWxlbWVudDo6aW5zdGFuY2VSb290KCkKIHsKICAg
ICAvLyBJZiB0aGVyZSBpcyBubyBlbGVtZW50IGluc3RhbmNlIHRyZWUsIGZvcmNlIGltbWVkaWF0
ZSBTVkdFbGVtZW50SW5zdGFuY2UgdHJlZQpAQCAtMTQ4LDYgKzE1OCwxNSBAQCB2b2lkIFNWR1Vz
ZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgICB8
fCBTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKGF0dHIpCiAgICAgICAgICAgICAgfHwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikKICAgICAgICAg
ICAgICB8fCBTVkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0cmlidXRlKGF0dHIpKSB7CisgICAgICAg
ICAgICBpZiAoaXNFeHRlcm5hbFVSSVJlZmVyZW5jZShocmVmKCkpKSB7CisgICAgICAgICAgICAg
ICAgS1VSTCB1cmwgPSBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChocmVmKCkpOworICAgICAgICAg
ICAgICAgIGlmICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsLnN0cmluZygpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9jYWNoZWREb2N1bWVudCA9IGRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9h
ZGVyKCktPnJlcXVlc3RTVkdEb2N1bWVudChyZXF1ZXN0KTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKG1fY2FjaGVkRG9jdW1lbnQpCisgICAgICAgICAgICAgICAgICAgICAgICBtX2NhY2hlZERv
Y3VtZW50LT5hZGRDbGllbnQodGhpcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApAQCAtMTc1LDYg
KzE5NCwxNSBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogICAg
IGRldGFjaEluc3RhbmNlKCk7CiB9CiAKK0RvY3VtZW50KiBTVkdVc2VFbGVtZW50OjpyZWZlcmVu
Y2VkRG9jdW1lbnQoKSBjb25zdAoreworICAgIGlmICghaXNFeHRlcm5hbFVSSVJlZmVyZW5jZSho
cmVmKCkpKQorICAgICAgICByZXR1cm4gZG9jdW1lbnQoKTsKKyAgICBpZiAobV9jYWNoZWREb2N1
bWVudCAmJiBtX2NhY2hlZERvY3VtZW50LT5pc0xvYWRlZCgpKQorICAgICAgICByZXR1cm4gbV9j
YWNoZWREb2N1bWVudC0+ZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBTVkdV
c2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogewogICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CkBAIC0y
ODYsNyArMzE0LDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojp1cGRhdGVDb250YWluZXJTaXplcygp
CiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3Vy
Y2VJbnZhbGlkYXRpb24ob2JqZWN0KTsKIH0KIAotc3RhdGljIHZvaWQgdXBkYXRlQ29udGFpbmVy
T2Zmc2V0KFNWR0VsZW1lbnRJbnN0YW5jZSogdGFyZ2V0SW5zdGFuY2UpCit2b2lkIFNWR1VzZUVs
ZW1lbnQ6OnVwZGF0ZUNvbnRhaW5lck9mZnNldChTVkdFbGVtZW50SW5zdGFuY2UqIHRhcmdldElu
c3RhbmNlKQogewogICAgIC8vIERlcHRoLWZpcnN0IHVzZWQgdG8gd3JpdGUgdGhlIG1ldGhvZCBp
biBlYXJseSBleGl0IHN0eWxlLCBubyBwYXJ0aWN1bGFyIG90aGVyIHJlYXNvbi4KICAgICBmb3Ig
KFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UgPSB0YXJnZXRJbnN0YW5jZS0+Zmlyc3RDaGls
ZCgpOyBpbnN0YW5jZTsgaW5zdGFuY2UgPSBpbnN0YW5jZS0+bmV4dFNpYmxpbmcoKSkKQEAgLTI5
OCw2ICszMjYsMTAgQEAgc3RhdGljIHZvaWQgdXBkYXRlQ29udGFpbmVyT2Zmc2V0KFNWR0VsZW1l
bnRJbnN0YW5jZSogdGFyZ2V0SW5zdGFuY2UpCiAgICAgaWYgKCFjb3JyZXNwb25kaW5nRWxlbWVu
dC0+aGFzVGFnTmFtZShTVkdOYW1lczo6dXNlVGFnKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
U1ZHVXNlRWxlbWVudCogY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdV
c2VFbGVtZW50Kj4oY29ycmVzcG9uZGluZ0VsZW1lbnQpOworICAgIGlmIChjb3JyZXNwb25kaW5n
VXNlRWxlbWVudC0+Y2FjaGVkRG9jdW1lbnRJc1N0aWxsTG9hZGluZygpKQorICAgICAgICByZXR1
cm47CisKICAgICBTVkdFbGVtZW50KiBzaGFkb3dUcmVlRWxlbWVudCA9IHRhcmdldEluc3RhbmNl
LT5zaGFkb3dUcmVlRWxlbWVudCgpOwogICAgIEFTU0VSVChzaGFkb3dUcmVlRWxlbWVudCk7CiAg
ICAgQVNTRVJUKHNoYWRvd1RyZWVFbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpnVGFnKSk7
CkBAIC00NTEsMTcgKzQ4MywyMiBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jl
c291cmNlKCkKICAgICAvLyBJZiB3ZSdyZSBjYWxsZWQgdGhlIGZpcnN0IHRpbWUgKGR1cmluZyBz
aGFkb3cgdHJlZSByb290IGNyZWF0aW9uIGZyb20gUmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250
YWluZXIpCiAgICAgLy8gd2UgZWl0aGVyIGRldGVybWluZSB0aGF0IG91ciB0YXJnZXQgaXMgYXZh
aWxhYmxlIG9yIG5vdCAtIHRoZW4gd2UgYWRkIG91cnNlbHZlcyB0byB0aGUgcGVuZGluZyByZXNv
dXJjZSBsaXN0CiAgICAgLy8gT25jZSB0aGUgcGVuZGluZyByZXNvdXJjZSBhcHBlYXJzLCBpdCB3
aWxsIGNhbGwgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKSwgc28gd2UncmUgY2FsbGVkIGEgc2Vjb25k
IHRpbWUuCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcmVmZXJlbmNlZERvY3VtZW50KCk7Cisg
ICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgU3RyaW5nIGlkOwotICAg
IEVsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRG
cm9tSVJJU3RyaW5nKGhyZWYoKSwgZG9jdW1lbnQoKSwgJmlkKTsKKyAgICBFbGVtZW50KiB0YXJn
ZXRFbGVtZW50ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyho
cmVmKCksIGRvY3VtZW50LCAmaWQpOwogICAgIEFTU0VSVCghbV90YXJnZXRFbGVtZW50SW5zdGFu
Y2UpOwotICAgIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogZXh0ZW5zaW9ucyA9IGRvY3VtZW50KCkt
PmFjY2Vzc1NWR0V4dGVuc2lvbnMoKTsKKyAgICBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIGV4dGVu
c2lvbnMgPSBkb2N1bWVudC0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpOwogCiAgICAgaWYgKCF0YXJn
ZXRFbGVtZW50KSB7CiAgICAgICAgIGlmICgoaGFzUGVuZGluZ1Jlc291cmNlcygpICYmIGV4dGVu
c2lvbnMtPmlzRWxlbWVudFBlbmRpbmdSZXNvdXJjZSh0aGlzLCBpZCkpIHx8IGlkLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX3Jlc291cmNlSWQgPSBpZDsKLSAg
ICAgICAgZXh0ZW5zaW9ucy0+YWRkUGVuZGluZ1Jlc291cmNlKGlkLCB0aGlzKTsKKyAgICAgICAg
QVNTRVJUKCFoYXNQZW5kaW5nUmVzb3VyY2VzKCkpOworICAgICAgICBkb2N1bWVudC0+YWNjZXNz
U1ZHRXh0ZW5zaW9ucygpLT5hZGRQZW5kaW5nUmVzb3VyY2UoaWQsIHRoaXMpOwogICAgICAgICBB
U1NFUlQoaGFzUGVuZGluZ1Jlc291cmNlcygpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTQ5MCwxMiArNTI3LDE2IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6YnVpbGRTaGFkb3dBbmRJbnN0
YW5jZVRyZWUoU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50KiBzaGFkb3dSCiAgICAgICAgIFNWR1Vz
ZUVsZW1lbnQqIHVzZUVsZW1lbnQ7CiAgICAgfTsKIAorICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IHJlZmVyZW5jZWREb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVy
bjsKKwogICAgIC8vIFdoZW4gY2xvbmluZyB0aGUgdGFyZ2V0IG5vZGVzLCB0aGV5IG1heSBkZWNp
ZGUgdG8gc3luY2hyb25pemUgc3R5bGUgYW5kL29yIGFuaW1hdGVkIFNWRyBhdHRyaWJ1dGVzLgog
ICAgIC8vIFRoYXQgY2F1c2VzIGNhbGxzIHRvIFNWR0VsZW1lbnRJbnN0YW5jZTo6dXBkYXRlQWxs
SW5zdGFuY2VzT2ZFbGVtZW50KCksIHdoaWNoIG1hcmsgdGhlIHNoYWRvdyB0cmVlIGZvciByZWNy
ZWF0aW9uLgogICAgIC8vIFNvbHV0aW9uOiBibG9jayBhbnkgdXBkYXRlcyB0byB0aGUgc2hhZG93
IHRyZWUgd2hpbGUgd2UncmUgYnVpbGRpbmcgaXQuCiAgICAgU2hhZG93VHJlZVVwZGF0ZUJsb2Nr
ZXIgYmxvY2tlcih0aGlzKTsKIAotICAgIEVsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBTVkdVUklS
ZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYoKSwgZG9jdW1lbnQoKSk7
CisgICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxl
bWVudEZyb21JUklTdHJpbmcoaHJlZigpLCBkb2N1bWVudCwgMCwgbV9jYWNoZWREb2N1bWVudCA/
IG1fY2FjaGVkRG9jdW1lbnQtPmRvY3VtZW50KCkgOiAgMCk7CiAgICAgaWYgKCF0YXJnZXRFbGVt
ZW50KSB7CiAgICAgICAgIC8vIFRoZSBvbmx5IHRpbWUgd2Ugc2hvdWxkIGdldCBoZXJlIGlzIHdo
ZW4gdGhlIHVzZSBlbGVtZW50IGhhcyBub3QgYmVlbgogICAgICAgICAvLyBnaXZlbiBhIHJlc291
cmNlIHRvIHRhcmdldC4KQEAgLTUwMywxNiArNTQ0LDYgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojpi
dWlsZFNoYWRvd0FuZEluc3RhbmNlVHJlZShTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQqIHNoYWRv
d1IKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERvIG5vdCBidWlsZCB0aGUgc2hh
ZG93L2luc3RhbmNlIHRyZWUgZm9yIDx1c2U+IGVsZW1lbnRzIGxpdmluZyBpbiBhIHNoYWRvdyB0
cmVlLgotICAgIC8vIFRoZSB3aWxsIGJlIGV4cGFuZGVkIHNvb24gYW55d2F5IC0gc2VlIGV4cGFu
ZFVzZUVsZW1lbnRzSW5TaGFkb3dUcmVlKCkuCi0gICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0g
cGFyZW50Tm9kZSgpOwotICAgIHdoaWxlIChwYXJlbnQpIHsKLSAgICAgICAgaWYgKHBhcmVudC0+
aXNTVkdTaGFkb3dSb290KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgcGFyZW50
ID0gcGFyZW50LT5wYXJlbnROb2RlR3VhcmFudGVlZEhvc3RGcmVlKCk7Ci0gICAgfQotCiAgICAg
U1ZHRWxlbWVudCogdGFyZ2V0ID0gMDsKICAgICBpZiAodGFyZ2V0RWxlbWVudCAmJiB0YXJnZXRF
bGVtZW50LT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgdGFyZ2V0ID0gc3RhdGljX2Nhc3Q8U1ZH
RWxlbWVudCo+KHRhcmdldEVsZW1lbnQpOwpAQCAtNzQ1LDcgKzc3NiwxMCBAQCB2b2lkIFNWR1Vz
ZUVsZW1lbnQ6OmJ1aWxkSW5zdGFuY2VUcmVlKFNWR0VsZW1lbnQqIHRhcmdldCwgU1ZHRWxlbWVu
dEluc3RhbmNlKiB0YQogCiBib29sIFNWR1VzZUVsZW1lbnQ6Omhhc0N5Y2xlVXNlUmVmZXJlbmNp
bmcoU1ZHVXNlRWxlbWVudCogdXNlLCBTVkdFbGVtZW50SW5zdGFuY2UqIHRhcmdldEluc3RhbmNl
LCBTVkdFbGVtZW50KiYgbmV3VGFyZ2V0KQogewotICAgIEVsZW1lbnQqIHRhcmdldEVsZW1lbnQg
PSBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKHVzZS0+aHJlZigp
LCBkb2N1bWVudCgpKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSByZWZlcmVuY2VkRG9jdW1l
bnQoKTsKKyAgICBBU1NFUlQoZG9jdW1lbnQpOworCisgICAgRWxlbWVudCogdGFyZ2V0RWxlbWVu
dCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcodXNlLT5ocmVm
KCksIGRvY3VtZW50KTsKICAgICBuZXdUYXJnZXQgPSAwOwogICAgIGlmICh0YXJnZXRFbGVtZW50
ICYmIHRhcmdldEVsZW1lbnQtPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICBuZXdUYXJnZXQgPSBz
dGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4odGFyZ2V0RWxlbWVudCk7CkBAIC03NTcsMTQgKzc5MSwx
NSBAQCBib29sIFNWR1VzZUVsZW1lbnQ6Omhhc0N5Y2xlVXNlUmVmZXJlbmNpbmcoU1ZHVXNlRWxl
bWVudCogdXNlLCBTVkdFbGVtZW50SW5zdGFuYwogICAgIGlmIChuZXdUYXJnZXQgPT0gdGhpcykK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBBdG9taWNTdHJpbmcgdGFyZ2V0SWQgPSBuZXdU
YXJnZXQtPmdldElkQXR0cmlidXRlKCk7CiAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5j
ZSA9IHRhcmdldEluc3RhbmNlLT5wYXJlbnROb2RlKCk7CiAgICAgd2hpbGUgKGluc3RhbmNlKSB7
CiAgICAgICAgIFNWR0VsZW1lbnQqIGVsZW1lbnQgPSBpbnN0YW5jZS0+Y29ycmVzcG9uZGluZ0Vs
ZW1lbnQoKTsKIAogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgdXNp
bmcgZ2V0SWRBdHRyaWJ1dGUgaW5zdGVhZCBvZiBpZEZvclN0eWxlUmVzb2x1dGlvbi4KLSAgICAg
ICAgaWYgKGVsZW1lbnQtPmhhc0lEKCkgJiYgZWxlbWVudC0+aWRGb3JTdHlsZVJlc29sdXRpb24o
KSA9PSBuZXdUYXJnZXQtPmdldElkQXR0cmlidXRlKCkpCisgICAgICAgIGlmIChlbGVtZW50LT5o
YXNJRCgpICYmIGVsZW1lbnQtPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCkgPT0gdGFyZ2V0SWQgJiYg
ZWxlbWVudC0+ZG9jdW1lbnQoKSA9PSBuZXdUYXJnZXQtPmRvY3VtZW50KCkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAKKwogICAgICAgICBpbnN0YW5jZSA9IGluc3RhbmNlLT5wYXJl
bnROb2RlKCk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTgyNCwxNCArODU5LDIwIEBA
IHZvaWQgU1ZHVXNlRWxlbWVudDo6ZXhwYW5kVXNlRWxlbWVudHNJblNoYWRvd1RyZWUoTm9kZSog
ZWxlbWVudCkKICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6dXNlVGFnKSkg
ewogICAgICAgICBTVkdVc2VFbGVtZW50KiB1c2UgPSBzdGF0aWNfY2FzdDxTVkdVc2VFbGVtZW50
Kj4oZWxlbWVudCk7CiAKLSAgICAgICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IFNWR1VSSVJl
ZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcodXNlLT5ocmVmKCksIGRvY3VtZW50
KCkpOworICAgICAgICBpZiAodXNlLT5jYWNoZWREb2N1bWVudElzU3RpbGxMb2FkaW5nKCkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcmVmZXJl
bmNlZERvY3VtZW50KCk7CisgICAgICAgIEFTU0VSVChkb2N1bWVudCk7CisKKyAgICAgICAgRWxl
bWVudCogdGFyZ2V0RWxlbWVudCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21J
UklTdHJpbmcodXNlLT5ocmVmKCksIGRvY3VtZW50KTsKICAgICAgICAgU1ZHRWxlbWVudCogdGFy
Z2V0ID0gMDsKICAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQgJiYgdGFyZ2V0RWxlbWVudC0+aXNT
VkdFbGVtZW50KCkpCiAgICAgICAgICAgICB0YXJnZXQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50
Kj4odGFyZ2V0RWxlbWVudCk7CiAKICAgICAgICAgLy8gRG9uJ3QgQVNTRVJUKHRhcmdldCkgaGVy
ZSwgaXQgbWF5IGJlICJwZW5kaW5nIiwgdG9vLgogICAgICAgICAvLyBTZXR1cCBzdWItc2hhZG93
IHRyZWUgcm9vdCBub2RlCi0gICAgICAgIFJlZlB0cjxTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxl
bWVudD4gY2xvbmVQYXJlbnQgPSBTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KCkpOworICAgICAgICBSZWZQdHI8U1ZHU2hhZG93VHJlZUNvbnRhaW5lckVsZW1l
bnQ+IGNsb25lUGFyZW50ID0gU1ZHU2hhZG93VHJlZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7CiAgICAgICAgIHVzZS0+Y2xvbmVDaGlsZE5vZGVzKGNsb25lUGFyZW50LmdldCgp
KTsKIAogICAgICAgICAvLyBTcGVjOiBJbiB0aGUgZ2VuZXJhdGVkIGNvbnRlbnQsIHRoZSAndXNl
JyB3aWxsIGJlIHJlcGxhY2VkIGJ5ICdnJywgd2hlcmUgYWxsIGF0dHJpYnV0ZXMgZnJvbSB0aGUK
QEAgLTg4MCwxMyArOTIxLDE1IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6ZXhwYW5kVXNlRWxlbWVu
dHNJblNoYWRvd1RyZWUoTm9kZSogZWxlbWVudCkKIHZvaWQgU1ZHVXNlRWxlbWVudDo6ZXhwYW5k
U3ltYm9sRWxlbWVudHNJblNoYWRvd1RyZWUoTm9kZSogZWxlbWVudCkKIHsKICAgICBpZiAoZWxl
bWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3ltYm9sVGFnKSkgeworICAgICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSByZWZlcmVuY2VkRG9jdW1lbnQoKTsKKyAgICAgICAgQVNTRVJUKGRvY3Vt
ZW50KTsKICAgICAgICAgLy8gU3BlYzogVGhlIHJlZmVyZW5jZWQgJ3N5bWJvbCcgYW5kIGl0cyBj
b250ZW50cyBhcmUgZGVlcC1jbG9uZWQgaW50byB0aGUgZ2VuZXJhdGVkIHRyZWUsCiAgICAgICAg
IC8vIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IHRoZSAnc3ltYm9sJyBpcyByZXBsYWNlZCBieSBh
biAnc3ZnJy4gVGhpcyBnZW5lcmF0ZWQgJ3N2Zycgd2lsbAogICAgICAgICAvLyBhbHdheXMgaGF2
ZSBleHBsaWNpdCB2YWx1ZXMgZm9yIGF0dHJpYnV0ZXMgd2lkdGggYW5kIGhlaWdodC4gSWYgYXR0
cmlidXRlcyB3aWR0aCBhbmQvb3IKICAgICAgICAgLy8gaGVpZ2h0IGFyZSBwcm92aWRlZCBvbiB0
aGUgJ3VzZScgZWxlbWVudCwgdGhlbiB0aGVzZSBhdHRyaWJ1dGVzIHdpbGwgYmUgdHJhbnNmZXJy
ZWQgdG8KICAgICAgICAgLy8gdGhlIGdlbmVyYXRlZCAnc3ZnJy4gSWYgYXR0cmlidXRlcyB3aWR0
aCBhbmQvb3IgaGVpZ2h0IGFyZSBub3Qgc3BlY2lmaWVkLCB0aGUgZ2VuZXJhdGVkCiAgICAgICAg
IC8vICdzdmcnIGVsZW1lbnQgd2lsbCB1c2UgdmFsdWVzIG9mIDEwMCUgZm9yIHRoZXNlIGF0dHJp
YnV0ZXMuCi0gICAgICAgIFJlZlB0cjxTVkdTVkdFbGVtZW50PiBzdmdFbGVtZW50ID0gU1ZHU1ZH
RWxlbWVudDo6Y3JlYXRlKFNWR05hbWVzOjpzdmdUYWcsIGRvY3VtZW50KCkpOworICAgICAgICBS
ZWZQdHI8U1ZHU1ZHRWxlbWVudD4gc3ZnRWxlbWVudCA9IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZShT
VkdOYW1lczo6c3ZnVGFnLCBkb2N1bWVudCk7CiAKICAgICAgICAgLy8gVHJhbnNmZXIgYWxsIGF0
dHJpYnV0ZXMgZnJvbSA8c3ltYm9sPiB0byB0aGUgbmV3IDxzdmc+IGVsZW1lbnQKICAgICAgICAg
c3ZnRWxlbWVudC0+c2V0QXR0cmlidXRlc0Zyb21FbGVtZW50KCp0b0VsZW1lbnQoZWxlbWVudCkp
OwpAQCAtOTUxLDcgKzk5NCw4IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6YXNzb2NpYXRlSW5zdGFu
Y2VzV2l0aFNoYWRvd1RyZWVFbGVtZW50cyhOb2RlKiB0YXJnZXQsIFNWR0VsCiAKICAgICBpZiAo
b3JpZ2luYWxFbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjp1c2VUYWcpKSB7CiAgICAgICAg
IC8vIDx1c2U+IGdldHMgcmVwbGFjZWQgYnkgPGc+Ci0gICAgICAgIEFTU0VSVCh0YXJnZXQtPm5v
ZGVOYW1lKCkgPT0gU1ZHTmFtZXM6OmdUYWcpOworICAgICAgICBBU1NFUlQodGFyZ2V0LT5ub2Rl
TmFtZSgpID09IFNWR05hbWVzOjpnVGFnCisgICAgICAgICAgICAgICB8fCAodGFyZ2V0LT5ub2Rl
TmFtZSgpID09IFNWR05hbWVzOjp1c2VUYWcgJiYgKHN0YXRpY19jYXN0PFNWR1VzZUVsZW1lbnQq
Pih0YXJnZXQpKS0+Y2FjaGVkRG9jdW1lbnRJc1N0aWxsTG9hZGluZygpKSk7CiAgICAgfSBlbHNl
IGlmIChvcmlnaW5hbEVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN5bWJvbFRhZykpIHsK
ICAgICAgICAgLy8gPHN5bWJvbD4gZ2V0cyByZXBsYWNlZCBieSA8c3ZnPgogICAgICAgICBBU1NF
UlQodGFyZ2V0LT5ub2RlTmFtZSgpID09IFNWR05hbWVzOjpzdmdUYWcpOwpAQCAtMTA1Myw2ICsx
MDk3LDMzIEBAIGJvb2wgU1ZHVXNlRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1N0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+
aGFzUmVsYXRpdmVMZW5ndGhzKCk7CiB9CiAKK3ZvaWQgU1ZHVXNlRWxlbWVudDo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQoreworICAgIGlmICghaW5Eb2N1bWVudCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IHN0YXRpY19jYXN0PFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyKj4ocmVuZGVyZXIo
KSktPm1hcmtTaGFkb3dUcmVlRm9yUmVjcmVhdGlvbigpOworICAgIHJlbmRlcmVyKCktPnVwZGF0
ZUZyb21FbGVtZW50KCk7CisKKyAgICBFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7
CisgICAgQVNTRVJUKHBhcmVudCk7CisKKyAgICBpZiAoIXBhcmVudC0+cmVuZGVyZXIoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQ
YXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihwYXJlbnQtPnJlbmRlcmVyKCkpOworfQorCitib29s
IFNWR1VzZUVsZW1lbnQ6OmNhY2hlZERvY3VtZW50SXNTdGlsbExvYWRpbmcoKQoreworICAgIGlm
IChtX2NhY2hlZERvY3VtZW50ICYmIG1fY2FjaGVkRG9jdW1lbnQtPmlzTG9hZGluZygpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaApvbGQgbW9kZSAxMDA2NDQK
bmV3IG1vZGUgMTAwNzU1CmluZGV4IDBkOWMwNmUuLjBkMmM3MmUKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5oCkBAIC0xLDUgKzEsNCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
Ky8qIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTIy
LDYgKzIxLDcgQEAKICNkZWZpbmUgU1ZHVXNlRWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZHKQor
I2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29s
ZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnQ7CiBjbGFzcyBTVkdFbGVtZW50SW5z
dGFuY2U7CiBjbGFzcyBTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQ7CiAKQEAgLTM5LDkgKzQwLDEx
IEBAIGNsYXNzIFNWR1VzZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAogICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFNWR1VSSVJlZmVyZW5jZSB7CisgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFNWR1VSSVJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgQ2FjaGVkU1ZH
RG9jdW1lbnRDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1VzZUVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICB2aXJ0
dWFsIH5TVkdVc2VFbGVtZW50KCk7CiAKICAgICBTVkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNl
Um9vdCgpOwogICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogYW5pbWF0ZWRJbnN0YW5jZVJvb3QoKSBj
b25zdDsKQEAgLTEwMiw2ICsxMDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJhbnNmZXJFdmVu
dExpc3RlbmVyc1RvU2hhZG93VHJlZShTVkdFbGVtZW50SW5zdGFuY2UqIHRhcmdldCk7CiAKICAg
ICB2b2lkIHVwZGF0ZUNvbnRhaW5lck9mZnNldHMoKTsKKyAgICBzdGF0aWMgdm9pZCB1cGRhdGVD
b250YWluZXJPZmZzZXQoU1ZHRWxlbWVudEluc3RhbmNlKik7CiAgICAgdm9pZCB1cGRhdGVDb250
YWluZXJTaXplcygpOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R1VzZUVsZW1lbnQpCkBAIC0xMTgsMTAgKzEyMiwxNSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplU3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdl
KHRoaXMpOyB9CiAKKyAgICBEb2N1bWVudCogcmVmZXJlbmNlZERvY3VtZW50KCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CisgICAgYm9v
bCBjYWNoZWREb2N1bWVudElzU3RpbGxMb2FkaW5nKCk7CisKICAgICBib29sIG1fdXBkYXRlc0Js
b2NrZWQ7CiAgICAgYm9vbCBtX25lZWRzU2hhZG93VHJlZVJlY3JlYXRpb247CiAgICAgU3RyaW5n
IG1fcmVzb3VyY2VJZDsKICAgICBSZWZQdHI8U1ZHRWxlbWVudEluc3RhbmNlPiBtX3RhcmdldEVs
ZW1lbnRJbnN0YW5jZTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTVkdEb2N1bWVu
dD4gbV9jYWNoZWREb2N1bWVudDsKIH07CiAKIH0KLS0gCjEuNy41LjQKCg==
</data>
<flag name="review"
          id="131607"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
    <flag name="commit-queue"
          id="131608"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129471</attachid>
            <date>2012-02-29 10:27:42 -0800</date>
            <delta_ts>2012-03-06 02:23:07 -0800</delta_ts>
            <desc>Proposed second part</desc>
            <filename>0001-up_second_part.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64"></data>
<flag name="review"
          id="132190"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
    <flag name="commit-queue"
          id="132191"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130341</attachid>
            <date>2012-03-06 02:23:07 -0800</date>
            <delta_ts>2012-03-06 06:59:58 -0800</delta_ts>
            <desc>Proposed second part</desc>
            <filename>0001-felkuld_most.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64"></data>
<flag name="review"
          id="133319"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
    <flag name="commit-queue"
          id="133320"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130373</attachid>
            <date>2012-03-06 06:59:58 -0800</date>
            <delta_ts>2012-03-06 09:36:22 -0800</delta_ts>
            <desc>Proposed second part</desc>
            <filename>0001-megint-tenyleg-nagyon-felkuld.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64"></data>
<flag name="review"
          id="133359"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
    <flag name="commit-queue"
          id="133360"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130393</attachid>
            <date>2012-03-06 09:36:22 -0800</date>
            <delta_ts>2012-03-09 10:44:44 -0800</delta_ts>
            <desc>Proposed second part</desc>
            <filename>0001-megint-tenyleg-nagyon-felkuld.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64"></data>
<flag name="commit-queue"
          id="133379"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131061</attachid>
            <date>2012-03-09 10:44:44 -0800</date>
            <delta_ts>2012-03-09 11:22:59 -0800</delta_ts>
            <desc>Proposed second part</desc>
            <filename>0001-felkuld-most.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64"></data>
<flag name="commit-queue"
          id="134245"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131597</attachid>
            <date>2012-03-13 05:42:18 -0700</date>
            <delta_ts>2012-03-13 10:11:48 -0700</delta_ts>
            <desc>Proposed second part</desc>
            <filename>0001-reftests.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64"></data>
<flag name="review"
          id="134963"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
    <flag name="commit-queue"
          id="134964"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131655</attachid>
            <date>2012-03-13 10:11:48 -0700</date>
            <delta_ts>2012-03-14 04:37:52 -0700</delta_ts>
            <desc>Proposed second part</desc>
            <filename>0001-reftests_up.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64"></data>
<flag name="review"
          id="135039"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
    <flag name="commit-queue"
          id="135040"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131824</attachid>
            <date>2012-03-14 04:37:52 -0700</date>
            <delta_ts>2012-03-14 05:02:11 -0700</delta_ts>
            <desc>Follow-up patch</desc>
            <filename>FollowUpFix.diff</filename>
            <type>text/plain</type>
            <size>21898</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5M2U1ZmQ3Li5iMzI0MGFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjggQEAKIDIwMTItMDMt
MTQgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKKyAgICAgICAg
RXh0ZXJuYWwgPHVzZT4geGxpbms6aHJlZiByZWZlcmVuY2VzIGRvIG5vdCB3b3JrCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ5OQorCisgICAgICAg
IFJlYmFzZWxpbmUgdGVzdHMgYWZ0ZXIgcjExMDY3NiB1c2luZyBHZW5lcmljIFJHQiBQcm9maWxl
IG9uIExpb24sIGFuZCB1cGRhdGUgdGhlbSBhZnRlciBteSBmaXhlcy4KKyAgICAgICAgUmVwbGFj
ZSB4bWw6aWQgd2l0aCBpZCBldmVyeXdoZXJlLCB0byBtYWtlIHRoZSBuZXcgdGlueSB0ZXN0cyB3
b3JrLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9XM0MtU1ZHLTEuMi1UaW55L3N0cnVj
dC11c2UtcmVjdXJzaW9uLTAyLXQtZXhwZWN0ZWQucG5nOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9zdmcvVzNDLVNWRy0xLjItVGlueS9zdHJ1Y3QtdXNlLXJlY3Vyc2lvbi0wMi10LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvc3ZnL1czQy1TVkctMS4yLVRpbnkvc3RydWN0
LXVzZS1yZWN1cnNpb24tMDMtdC1leHBlY3RlZC5wbmc6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L3N2Zy9XM0MtU1ZHLTEuMi1UaW55L3N0cnVjdC11c2UtcmVjdXJzaW9uLTAzLXQtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9zdmcvYmF0aWsvZmlsdGVycy9mZVRpbGUtZXhw
ZWN0ZWQucG5nOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9zdmcvYmF0aWsvZmlsdGVycy9maWx0
ZXJSZWdpb25zLWV4cGVjdGVkLnBuZzoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvc3ZnL2JhdGlr
L3RleHQvdGV4dEVmZmVjdC1leHBlY3RlZC5wbmc6CisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2
Zy9iYXRpay90ZXh0L3RleHRFZmZlY3QzLWV4cGVjdGVkLnBuZzoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdVc2VFbGVtZW50LXN2Z2RvbS1ocmVmMS1wcm9w
LWV4cGVjdGVkLnBuZzoKKyAgICAgICAgKiBzdmcvVzNDLVNWRy0xLjItVGlueS9zdHJ1Y3QtdXNl
LXJlY3Vyc2lvbi0wMS10LnN2ZzoKKyAgICAgICAgKiBzdmcvVzNDLVNWRy0xLjItVGlueS9zdHJ1
Y3QtdXNlLXJlY3Vyc2lvbi0wMi10LnN2ZzoKKyAgICAgICAgKiBzdmcvVzNDLVNWRy0xLjItVGlu
eS9zdHJ1Y3QtdXNlLXJlY3Vyc2lvbi0wMy10LnN2ZzoKKyAgICAgICAgKiBzdmcvY3VzdG9tL3Vz
ZS1leHRlcm5hbC1jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0
b20vdXNlLWV4dGVybmFsLWNyYXNoLnN2ZzogQWRkZWQuCisKKzIwMTItMDMtMTQgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKICAgICAgICAgTm90IHJldmlld2Vk
LiBVcGRhdGUgdHdvIHBpeGVsIHRlc3QgcmVzdWx0cyBvbiBMaW9uLCBub3cgc3ZnLyBwYXNzZXMg
d2l0aCAtLXRvbGVyYW5jZSAwIGFnYWluLgogCiAgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9j
dXN0b20vaW5saW5lLXN2Zy1pbi14aHRtbC1leHBlY3RlZC5wbmc6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL1czQy1TVkctMS4yLVRpbnkvc3RydWN0LXVzZS1yZWN1
cnNpb24tMDItdC1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL1cz
Qy1TVkctMS4yLVRpbnkvc3RydWN0LXVzZS1yZWN1cnNpb24tMDItdC1leHBlY3RlZC5wbmcKaW5k
ZXggYzJkOWFjNC4uYzFhZGZiOCAxMDA2NDQKQmluYXJ5IGZpbGVzIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL3N2Zy9XM0MtU1ZHLTEuMi1UaW55L3N0cnVjdC11c2UtcmVjdXJzaW9uLTAyLXQt
ZXhwZWN0ZWQucG5nIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvVzNDLVNWRy0x
LjItVGlueS9zdHJ1Y3QtdXNlLXJlY3Vyc2lvbi0wMi10LWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvVzNDLVNWRy0xLjItVGlueS9z
dHJ1Y3QtdXNlLXJlY3Vyc2lvbi0wMi10LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9zdmcvVzNDLVNWRy0xLjItVGlueS9zdHJ1Y3QtdXNlLXJlY3Vyc2lvbi0wMi10LWV4
cGVjdGVkLnR4dAppbmRleCA1ZTlhODY1Li5kYTRlZGNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvc3ZnL1czQy1TVkctMS4yLVRpbnkvc3RydWN0LXVzZS1yZWN1cnNpb24t
MDItdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9XM0Mt
U1ZHLTEuMi1UaW55L3N0cnVjdC11c2UtcmVjdXJzaW9uLTAyLXQtZXhwZWN0ZWQudHh0CkBAIC0z
LDEwICszLDEzIEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCiAgIFJlbmRlclNWR1Jvb3Qge3N2Z30gYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CiAgICAgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIHtkZWZzfSBhdCAoMCwwKSBzaXplIDB4MAot
ICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDE1MCwyNSkgc2l6ZSA0ODR4NDUyCi0gICAg
ICBSZW5kZXJTVkdDb250YWluZXIge2d9IGF0ICgxNTAsMjUpIHNpemUgMzR4MzQKKyAgICBSZW5k
ZXJTVkdDb250YWluZXIge2d9IGF0ICgxNTAsMjUpIHNpemUgNTAyeDQ1MgorICAgICAgUmVuZGVy
U1ZHQ29udGFpbmVyIHtnfSBhdCAoMTUwLDI1KSBzaXplIDUwMng3NwogICAgICAgICBSZW5kZXJT
VkdQYXRoIHtjaXJjbGV9IGF0ICgxNTAsMjUpIHNpemUgMzR4MzQgW2ZpbGw9e1t0eXBlPVNPTElE
XSBbY29sb3I9I0ZGN0YwMF19XSBbY3g9MTAwLjAwXSBbY3k9MjUuMDBdIFtyPTEwLjAwXQotICAg
ICAgICBSZW5kZXJTVkdDb250YWluZXIge3VzZX0gYXQgKDAsMCkgc2l6ZSAweDAgW3RyYW5zZm9y
bT17bT0oKDEuMDAsMC4wMCkoMC4wMCwxLjAwKSkgdD0oMC4wMCwyNS4wMCl9XQorICAgICAgICBS
ZW5kZXJTVkdDb250YWluZXIge3VzZX0gYXQgKDYxNCw2NCkgc2l6ZSAzOHgzOCBbdHJhbnNmb3Jt
PXttPSgoMS4wMCwwLjAwKSgwLjAwLDEuMDApKSB0PSgwLjAwLDI1LjAwKX1dCisgICAgICAgICAg
UmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAoNjE0LDY0KSBzaXplIDM4eDM4CisgICAgICAgICAg
ICBSZW5kZXJTVkdDb250YWluZXIge2d9IGF0ICgwLDApIHNpemUgMHgwIFt0cmFuc2Zvcm09e209
KCgxLjAwLDAuMDApKDAuMDAsMS4wMCkpIHQ9KDAuMDAsMjUuMDApfV0KKyAgICAgICAgICAgIFJl
bmRlclNWR1BhdGgge2NpcmNsZX0gYXQgKDYxNCw2NCkgc2l6ZSAzOHgzOCBbc3Ryb2tlPXtbdHlw
ZT1TT0xJRF0gW2NvbG9yPSM4MDgwODBdIFtzdHJva2Ugd2lkdGg9Mi4wMF0gW2xpbmUgY2FwPVJP
VU5EXSBbZGFzaCBhcnJheT17NC4wMH1dfV0gW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9I0ZG
RkYwMF19XSBbY3g9MzgwLjAwXSBbY3k9MjUuMDBdIFtyPTEwLjAwXQogICAgICAgUmVuZGVyU1ZH
VGV4dCB7dGV4dH0gYXQgKDEwMCwyNTcpIHNpemUgMjgweDI4IGNvbnRhaW5zIDEgY2h1bmsocykK
ICAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjgweDI4
CiAgICAgICAgICAgY2h1bmsgMSAobWlkZGxlIGFuY2hvcikgdGV4dCBydW4gMSBhdCAoMTAwLjIw
LDI4MC4wMCkgc3RhcnRPZmZzZXQgMCBlbmRPZmZzZXQgMjggd2lkdGggMjc5LjYwOiAiVGhpcyB0
ZXh0IHNob3VsZCBiZSB2aXNpYmxlLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9zdmcvVzNDLVNWRy0xLjItVGlueS9zdHJ1Y3QtdXNlLXJlY3Vyc2lvbi0wMy10LWV4cGVj
dGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvVzNDLVNWRy0xLjItVGlueS9z
dHJ1Y3QtdXNlLXJlY3Vyc2lvbi0wMy10LWV4cGVjdGVkLnBuZwppbmRleCBiYmJjODMxLi4wMGFl
YjRkIDEwMDY0NApCaW5hcnkgZmlsZXMgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL1cz
Qy1TVkctMS4yLVRpbnkvc3RydWN0LXVzZS1yZWN1cnNpb24tMDMtdC1leHBlY3RlZC5wbmcgYW5k
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9XM0MtU1ZHLTEuMi1UaW55L3N0cnVjdC11
c2UtcmVjdXJzaW9uLTAzLXQtZXhwZWN0ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9XM0MtU1ZHLTEuMi1UaW55L3N0cnVjdC11c2UtcmVjdXJz
aW9uLTAzLXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9XM0Mt
U1ZHLTEuMi1UaW55L3N0cnVjdC11c2UtcmVjdXJzaW9uLTAzLXQtZXhwZWN0ZWQudHh0CmluZGV4
IDY0ZjMwY2QuLjhiMzkzNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9z
dmcvVzNDLVNWRy0xLjItVGlueS9zdHJ1Y3QtdXNlLXJlY3Vyc2lvbi0wMy10LWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL1czQy1TVkctMS4yLVRpbnkvc3Ry
dWN0LXVzZS1yZWN1cnNpb24tMDMtdC1leHBlY3RlZC50eHQKQEAgLTMsOSArMywxMiBAQCBsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICBS
ZW5kZXJTVkdSb290IHtzdmd9IGF0ICgwLDApIHNpemUgODAweDYwMAogICAgIFJlbmRlclNWR0hp
ZGRlbkNvbnRhaW5lciB7ZGVmc30gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICBSZW5kZXJTVkdDb250
YWluZXIge2d9IGF0ICgxNjYsMjUpIHNpemUgNDg0eDQ1MgotICAgICAgUmVuZGVyU1ZHQ29udGFp
bmVyIHtnfSBhdCAoNjE2LDI1KSBzaXplIDM0eDM0Ci0gICAgICAgIFJlbmRlclNWR0NvbnRhaW5l
ciB7dXNlfSBhdCAoMCwwKSBzaXplIDB4MCBbdHJhbnNmb3JtPXttPSgoMS4wMCwwLjAwKSgwLjAw
LDEuMDApKSB0PSgwLjAwLDI1LjAwKX1dCisgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHtnfSBhdCAo
MTQ4LDI1KSBzaXplIDUwMng0NTIKKyAgICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDE0
OCwyNSkgc2l6ZSA1MDJ4NzcKKyAgICAgICAgUmVuZGVyU1ZHQ29udGFpbmVyIHt1c2V9IGF0ICgx
NDgsNjQpIHNpemUgMzd4MzggW3RyYW5zZm9ybT17bT0oKDEuMDAsMC4wMCkoMC4wMCwxLjAwKSkg
dD0oMC4wMCwyNS4wMCl9XQorICAgICAgICAgIFJlbmRlclNWR0NvbnRhaW5lciB7Z30gYXQgKDE0
OCw2NCkgc2l6ZSAzN3gzOAorICAgICAgICAgICAgUmVuZGVyU1ZHUGF0aCB7Y2lyY2xlfSBhdCAo
MTQ4LDY0KSBzaXplIDM3eDM4IFtzdHJva2U9e1t0eXBlPVNPTElEXSBbY29sb3I9IzgwODA4MF0g
W3N0cm9rZSB3aWR0aD0yLjAwXSBbbGluZSBjYXA9Uk9VTkRdIFtkYXNoIGFycmF5PXs0LjAwfV19
XSBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jRkY3RjAwXX1dIFtjeD0xMDAuMDBdIFtjeT0y
NS4wMF0gW3I9MTAuMDBdCisgICAgICAgICAgICBSZW5kZXJTVkdDb250YWluZXIge2d9IGF0ICgw
LDApIHNpemUgMHgwIFt0cmFuc2Zvcm09e209KCgxLjAwLDAuMDApKDAuMDAsMS4wMCkpIHQ9KDAu
MDAsMjUuMDApfV0KICAgICAgICAgUmVuZGVyU1ZHUGF0aCB7Y2lyY2xlfSBhdCAoNjE2LDI1KSBz
aXplIDM0eDM0IFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSNGRkZGMDBdfV0gW2N4PTM4MC4w
MF0gW2N5PTI1LjAwXSBbcj0xMC4wMF0KICAgICAgIFJlbmRlclNWR1RleHQge3RleHR9IGF0ICgx
MDAsMjU3KSBzaXplIDI4MHgyOCBjb250YWlucyAxIGNodW5rKHMpCiAgICAgICAgIFJlbmRlclNW
R0lubGluZVRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDI4MHgyOApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9iYXRpay9maWx0ZXJzL2ZlVGlsZS1leHBlY3RlZC5w
bmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2JhdGlrL2ZpbHRlcnMvZmVUaWxlLWV4
cGVjdGVkLnBuZwppbmRleCBmN2FjNGVlLi4yY2I4NmY0MjAgMTAwNjQ0CkJpbmFyeSBmaWxlcyBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvYmF0aWsvZmlsdGVycy9mZVRpbGUtZXhwZWN0
ZWQucG5nIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvYmF0aWsvZmlsdGVycy9m
ZVRpbGUtZXhwZWN0ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL3N2Zy9iYXRpay9maWx0ZXJzL2ZpbHRlclJlZ2lvbnMtZXhwZWN0ZWQucG5nIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9iYXRpay9maWx0ZXJzL2ZpbHRlclJlZ2lvbnMtZXhw
ZWN0ZWQucG5nCmluZGV4IDU3MWQ0MmUuLmQzZDFmNTEgMTAwNjQ0CkJpbmFyeSBmaWxlcyBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvYmF0aWsvZmlsdGVycy9maWx0ZXJSZWdpb25zLWV4
cGVjdGVkLnBuZyBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2JhdGlrL2ZpbHRl
cnMvZmlsdGVyUmVnaW9ucy1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2JhdGlrL3RleHQvdGV4dEVmZmVjdC1leHBlY3RlZC5wbmcg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2JhdGlrL3RleHQvdGV4dEVmZmVjdC1leHBl
Y3RlZC5wbmcKaW5kZXggZjJjNmEzNS4uYjJjYmIwMCAxMDA2NDQKQmluYXJ5IGZpbGVzIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9iYXRpay90ZXh0L3RleHRFZmZlY3QtZXhwZWN0ZWQu
cG5nIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvYmF0aWsvdGV4dC90ZXh0RWZm
ZWN0LWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9zdmcvYmF0aWsvdGV4dC90ZXh0RWZmZWN0My1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvc3ZnL2JhdGlrL3RleHQvdGV4dEVmZmVjdDMtZXhwZWN0ZWQucG5nCmlu
ZGV4IDgzMGI1NDUuLmRhNjIyMWIgMTAwNjQ0CkJpbmFyeSBmaWxlcyBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9zdmcvYmF0aWsvdGV4dC90ZXh0RWZmZWN0My1leHBlY3RlZC5wbmcgYW5kIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9iYXRpay90ZXh0L3RleHRFZmZlY3QzLWV4cGVj
dGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcv
ZHluYW1pYy11cGRhdGVzL1NWR1VzZUVsZW1lbnQtc3ZnZG9tLWhyZWYxLXByb3AtZXhwZWN0ZWQu
cG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHVXNl
RWxlbWVudC1zdmdkb20taHJlZjEtcHJvcC1leHBlY3RlZC5wbmcKaW5kZXggY2Q3MTZlZS4uZmZl
YzA2OCAxMDA2NDQKQmluYXJ5IGZpbGVzIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9k
eW5hbWljLXVwZGF0ZXMvU1ZHVXNlRWxlbWVudC1zdmdkb20taHJlZjEtcHJvcC1leHBlY3RlZC5w
bmcgYW5kIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZH
VXNlRWxlbWVudC1zdmdkb20taHJlZjEtcHJvcC1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdmcvVzNDLVNWRy0xLjItVGlueS9zdHJ1Y3QtdXNlLXJlY3Vyc2lv
bi0wMS10LnN2ZyBiL0xheW91dFRlc3RzL3N2Zy9XM0MtU1ZHLTEuMi1UaW55L3N0cnVjdC11c2Ut
cmVjdXJzaW9uLTAxLXQuc3ZnCmluZGV4IDkyZjlhYTEuLjVkNmQ2MGQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N2Zy9XM0MtU1ZHLTEuMi1UaW55L3N0cnVjdC11c2UtcmVjdXJzaW9uLTAxLXQu
c3ZnCisrKyBiL0xheW91dFRlc3RzL3N2Zy9XM0MtU1ZHLTEuMi1UaW55L3N0cnVjdC11c2UtcmVj
dXJzaW9uLTAxLXQuc3ZnCkBAIC0xLDUgKzEsNSBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0iVVRGLTgiPz4KLTxzdmcgdmVyc2lvbj0iMS4yIiBiYXNlUHJvZmlsZT0idGlueSIgeG1s
OmlkPSJzdmctcm9vdCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIKKzxzdmcgdmVyc2lvbj0i
MS4yIiBiYXNlUHJvZmlsZT0idGlueSIgaWQ9InN2Zy1yb290IiB3aWR0aD0iMTAwJSIgaGVpZ2h0
PSIxMDAlIgogICB2aWV3Qm94PSIwIDAgNDgwIDM2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIgogICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIg
eG1sbnM6eGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLWV2ZW50cyI+CiAgIDwhLS09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09LS0+CkBAIC0yMSw3ICsyMSw3IEBACiAgICAgICA8L3A+CiAgICAgPC9kOk9wZXJh
dG9yU2NyaXB0PgogICA8L1NWR1Rlc3RDYXNlPgotICA8dGl0bGUgeG1sOmlkPSJ0ZXN0LXRpdGxl
Ij4kUkNTZmlsZTogc3RydWN0LXVzZS1yZWN1cnNpb24tMDEtdC5zdmcsdiAkPC90aXRsZT4KKyAg
PHRpdGxlIGlkPSJ0ZXN0LXRpdGxlIj4kUkNTZmlsZTogc3RydWN0LXVzZS1yZWN1cnNpb24tMDEt
dC5zdmcsdiAkPC90aXRsZT4KICAgPGRlZnM+CiAgICAgPGZvbnQtZmFjZQogICAgICAgZm9udC1m
YW1pbHk9IlNWR0ZyZWVTYW5zQVNDSUkiCkBAIC0zMSwyNCArMzEsMjQgQEAKICAgICAgIDwvZm9u
dC1mYWNlLXNyYz4KICAgICA8L2ZvbnQtZmFjZT4KICAgPC9kZWZzPgotICA8ZyB4bWw6aWQ9InRl
c3QtYm9keS1jb250ZW50IiBmb250LWZhbWlseT0iU1ZHRnJlZVNhbnNBU0NJSSxzYW5zLXNlcmlm
IiBmb250LXNpemU9IjE4Ij4KKyAgPGcgaWQ9InRlc3QtYm9keS1jb250ZW50IiBmb250LWZhbWls
eT0iU1ZHRnJlZVNhbnNBU0NJSSxzYW5zLXNlcmlmIiBmb250LXNpemU9IjE4Ij4KIAotICAgIDxn
IHhtbDppZD0iZ3JvdXAtMSI+Ci0gICAgICA8Y2lyY2xlIHhtbDppZD0iY2lyY2xlLTEiIGN4PScx
MDAnIGN5PScyNScgcj0nMTAnIGZpbGw9JyNGRjdGMDAnIC8+Ci0gICAgICA8dXNlIHhtbDppZD0i
dXNlLTEiIHg9IjAiIHk9IjI1IiB4bGluazpocmVmPSIjZ3JvdXAtMiIgc3Ryb2tlPSJncmF5IiBz
dHJva2Utd2lkdGg9IjIiIHN0cm9rZS1kYXNoYXJyYXk9IjQiIHN0cm9rZS1saW5lY2FwPSJyb3Vu
ZCIvPgorICAgIDxnIGlkPSJncm91cC0xIj4KKyAgICAgIDxjaXJjbGUgaWQ9ImNpcmNsZS0xIiBj
eD0nMTAwJyBjeT0nMjUnIHI9JzEwJyBmaWxsPScjRkY3RjAwJyAvPgorICAgICAgPHVzZSBpZD0i
dXNlLTEiIHg9IjAiIHk9IjI1IiB4bGluazpocmVmPSIjZ3JvdXAtMiIgc3Ryb2tlPSJncmF5IiBz
dHJva2Utd2lkdGg9IjIiIHN0cm9rZS1kYXNoYXJyYXk9IjQiIHN0cm9rZS1saW5lY2FwPSJyb3Vu
ZCIvPgogICAgIDwvZz4KLSAgICA8ZyB4bWw6aWQ9Imdyb3VwLTIiPgotICAgICAgPGNpcmNsZSB4
bWw6aWQ9ImNpcmNsZS0yIiBjeD0nMzgwJyBjeT0nMjUnIHI9JzEwJyBmaWxsPScjRkZGRjAwJyAv
PgotICAgICAgPHVzZSB4bWw6aWQ9InVzZS0yIiB4PSIwIiB5PSIyNSIgIHhsaW5rOmhyZWY9IiNn
cm91cC0xIiBzdHJva2U9ImdyYXkiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWRhc2hhcnJheT0i
NCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CisgICAgPGcgaWQ9Imdyb3VwLTIiPgorICAgICAg
PGNpcmNsZSBpZD0iY2lyY2xlLTIiIGN4PSczODAnIGN5PScyNScgcj0nMTAnIGZpbGw9JyNGRkZG
MDAnIC8+CisgICAgICA8dXNlIGlkPSJ1c2UtMiIgeD0iMCIgeT0iMjUiICB4bGluazpocmVmPSIj
Z3JvdXAtMSIgc3Ryb2tlPSJncmF5IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1kYXNoYXJyYXk9
IjQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgogICAgIDwvZz4KIAotICAgIDx0ZXh0IHhtbDpp
ZD0icGFzcyIgeD0iMjQwIiB5PSIyODAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9ImdyZWVu
IiBmb250LXNpemU9IjI0Ij5UaGlzIHRleHQgc2hvdWxkIGJlIHZpc2libGUuPC90ZXh0PgorICAg
IDx0ZXh0IGlkPSJwYXNzIiB4PSIyNDAiIHk9IjI4MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmls
bD0iZ3JlZW4iIGZvbnQtc2l6ZT0iMjQiPlRoaXMgdGV4dCBzaG91bGQgYmUgdmlzaWJsZS48L3Rl
eHQ+CiAKICAgPC9nPgogICA8ZyBmb250LWZhbWlseT0iU1ZHRnJlZVNhbnNBU0NJSSxzYW5zLXNl
cmlmIiBmb250LXNpemU9IjMyIj4KLSAgICA8dGV4dCB4bWw6aWQ9InJldmlzaW9uIiB4PSIxMCIg
eT0iMzQwIiBzdHJva2U9Im5vbmUiCisgICAgPHRleHQgaWQ9InJldmlzaW9uIiB4PSIxMCIgeT0i
MzQwIiBzdHJva2U9Im5vbmUiCiAgICAgICBmaWxsPSJibGFjayI+JFJldmlzaW9uOiAxLjUgJDwv
dGV4dD4KICAgPC9nPgotICA8cmVjdCB4bWw6aWQ9InRlc3QtZnJhbWUiIHg9IjEiIHk9IjEiIHdp
ZHRoPSI0NzgiIGhlaWdodD0iMzU4IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiLz4KKyAgPHJl
Y3QgaWQ9InRlc3QtZnJhbWUiIHg9IjEiIHk9IjEiIHdpZHRoPSI0NzgiIGhlaWdodD0iMzU4IiBm
aWxsPSJub25lIiBzdHJva2U9IiMwMDAiLz4KIAogPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdmcvVzNDLVNWRy0xLjItVGlueS9zdHJ1Y3QtdXNlLXJlY3Vyc2lvbi0wMi10LnN2ZyBi
L0xheW91dFRlc3RzL3N2Zy9XM0MtU1ZHLTEuMi1UaW55L3N0cnVjdC11c2UtcmVjdXJzaW9uLTAy
LXQuc3ZnCmluZGV4IGQ2NTgwOTMuLjc0MGM0M2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2
Zy9XM0MtU1ZHLTEuMi1UaW55L3N0cnVjdC11c2UtcmVjdXJzaW9uLTAyLXQuc3ZnCisrKyBiL0xh
eW91dFRlc3RzL3N2Zy9XM0MtU1ZHLTEuMi1UaW55L3N0cnVjdC11c2UtcmVjdXJzaW9uLTAyLXQu
c3ZnCkBAIC0xLDUgKzEsNSBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgi
Pz4KLTxzdmcgdmVyc2lvbj0iMS4yIiBiYXNlUHJvZmlsZT0idGlueSIgeG1sOmlkPSJzdmctcm9v
dCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIKKzxzdmcgdmVyc2lvbj0iMS4yIiBiYXNlUHJv
ZmlsZT0idGlueSIgaWQ9InN2Zy1yb290IiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIgogICB2
aWV3Qm94PSIwIDAgNDgwIDM2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgog
ICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM6eGU9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLWV2ZW50cyI+CiAgIDwhLS09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+
CkBAIC0yNCw3ICsyNCw3IEBACiAgICAgICA8L3A+CiAgICAgPC9kOk9wZXJhdG9yU2NyaXB0Pgog
ICA8L1NWR1Rlc3RDYXNlPgotICA8dGl0bGUgeG1sOmlkPSJ0ZXN0LXRpdGxlIj4kUkNTZmlsZTog
c3RydWN0LXVzZS1yZWN1cnNpb24tMDItdC5zdmcsdiAkPC90aXRsZT4KKyAgPHRpdGxlIGlkPSJ0
ZXN0LXRpdGxlIj4kUkNTZmlsZTogc3RydWN0LXVzZS1yZWN1cnNpb24tMDItdC5zdmcsdiAkPC90
aXRsZT4KICAgPGRlZnM+CiAgICAgPGZvbnQtZmFjZQogICAgICAgZm9udC1mYW1pbHk9IlNWR0Zy
ZWVTYW5zQVNDSUkiCkBAIC0zNCwyMCArMzQsMjAgQEAKICAgICAgIDwvZm9udC1mYWNlLXNyYz4K
ICAgICA8L2ZvbnQtZmFjZT4KICAgPC9kZWZzPgotICA8ZyB4bWw6aWQ9InRlc3QtYm9keS1jb250
ZW50IiBmb250LWZhbWlseT0iU1ZHRnJlZVNhbnNBU0NJSSxzYW5zLXNlcmlmIiBmb250LXNpemU9
IjE4Ij4KKyAgPGcgaWQ9InRlc3QtYm9keS1jb250ZW50IiBmb250LWZhbWlseT0iU1ZHRnJlZVNh
bnNBU0NJSSxzYW5zLXNlcmlmIiBmb250LXNpemU9IjE4Ij4KIAotICAgIDxnIHhtbDppZD0iZ3Jv
dXAtMSI+Ci0gICAgICA8Y2lyY2xlIHhtbDppZD0iY2lyY2xlLTEiIGN4PScxMDAnIGN5PScyNScg
cj0nMTAnIGZpbGw9JyNGRjdGMDAnIC8+Ci0gICAgICA8dXNlIHhtbDppZD0idXNlLTEiIHg9IjAi
IHk9IjI1IiB4bGluazpocmVmPSJzdHJ1Y3QtdXNlLXJlY3Vyc2lvbi0wMy10LnN2ZyNncm91cC0y
IiBzdHJva2U9ImdyYXkiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWRhc2hhcnJheT0iNCIgc3Ry
b2tlLWxpbmVjYXA9InJvdW5kIi8+CisgICAgPGcgaWQ9Imdyb3VwLTEiPgorICAgICAgPGNpcmNs
ZSBpZD0iY2lyY2xlLTEiIGN4PScxMDAnIGN5PScyNScgcj0nMTAnIGZpbGw9JyNGRjdGMDAnIC8+
CisgICAgICA8dXNlIGlkPSJ1c2UtMSIgeD0iMCIgeT0iMjUiIHhsaW5rOmhyZWY9InN0cnVjdC11
c2UtcmVjdXJzaW9uLTAzLXQuc3ZnI2dyb3VwLTIiIHN0cm9rZT0iZ3JheSIgc3Ryb2tlLXdpZHRo
PSIyIiBzdHJva2UtZGFzaGFycmF5PSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KICAgICA8
L2c+CiAKLSAgICA8dGV4dCB4bWw6aWQ9InBhc3MiIHg9IjI0MCIgeT0iMjgwIiB0ZXh0LWFuY2hv
cj0ibWlkZGxlIiBmaWxsPSJncmVlbiIgZm9udC1zaXplPSIyNCI+VGhpcyB0ZXh0IHNob3VsZCBi
ZSB2aXNpYmxlLjwvdGV4dD4KKyAgICA8dGV4dCBpZD0icGFzcyIgeD0iMjQwIiB5PSIyODAiIHRl
eHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9ImdyZWVuIiBmb250LXNpemU9IjI0Ij5UaGlzIHRleHQg
c2hvdWxkIGJlIHZpc2libGUuPC90ZXh0PgogCiAgIDwvZz4KICAgPGcgZm9udC1mYW1pbHk9IlNW
R0ZyZWVTYW5zQVNDSUksc2Fucy1zZXJpZiIgZm9udC1zaXplPSIzMiI+Ci0gICAgPHRleHQgeG1s
OmlkPSJyZXZpc2lvbiIgeD0iMTAiIHk9IjM0MCIgc3Ryb2tlPSJub25lIgorICAgIDx0ZXh0IGlk
PSJyZXZpc2lvbiIgeD0iMTAiIHk9IjM0MCIgc3Ryb2tlPSJub25lIgogICAgICAgZmlsbD0iYmxh
Y2siPiRSZXZpc2lvbjogMS41ICQ8L3RleHQ+CiAgIDwvZz4KLSAgPHJlY3QgeG1sOmlkPSJ0ZXN0
LWZyYW1lIiB4PSIxIiB5PSIxIiB3aWR0aD0iNDc4IiBoZWlnaHQ9IjM1OCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSIjMDAwIi8+CisgIDxyZWN0IGlkPSJ0ZXN0LWZyYW1lIiB4PSIxIiB5PSIxIiB3aWR0
aD0iNDc4IiBoZWlnaHQ9IjM1OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIi8+CiAKIDwvc3Zn
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL1czQy1TVkctMS4yLVRpbnkvc3RydWN0LXVz
ZS1yZWN1cnNpb24tMDMtdC5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvVzNDLVNWRy0xLjItVGlueS9z
dHJ1Y3QtdXNlLXJlY3Vyc2lvbi0wMy10LnN2ZwppbmRleCBiMTM1YzQzLi5hZTRhNGJlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvVzNDLVNWRy0xLjItVGlueS9zdHJ1Y3QtdXNlLXJlY3Vy
c2lvbi0wMy10LnN2ZworKysgYi9MYXlvdXRUZXN0cy9zdmcvVzNDLVNWRy0xLjItVGlueS9zdHJ1
Y3QtdXNlLXJlY3Vyc2lvbi0wMy10LnN2ZwpAQCAtMSw1ICsxLDUgQEAKIDw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c3ZnIHZlcnNpb249IjEuMiIgYmFzZVByb2ZpbGU9
InRpbnkiIHhtbDppZD0ic3ZnLXJvb3QiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiCis8c3Zn
IHZlcnNpb249IjEuMiIgYmFzZVByb2ZpbGU9InRpbnkiIGlkPSJzdmctcm9vdCIgd2lkdGg9IjEw
MCUiIGhlaWdodD0iMTAwJSIKICAgdmlld0JveD0iMCAwIDQ4MCAzNjAiIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiIHhtbG5zOnhlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC1ldmVudHMiPgog
ICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PS0tPgpAQCAtMjQsNyArMjQsNyBAQAogICAgICAgPC9wPgogICAg
IDwvZDpPcGVyYXRvclNjcmlwdD4KICAgPC9TVkdUZXN0Q2FzZT4KLSAgPHRpdGxlIHhtbDppZD0i
dGVzdC10aXRsZSI+JFJDU2ZpbGU6IHN0cnVjdC11c2UtcmVjdXJzaW9uLTAzLXQuc3ZnLHYgJDwv
dGl0bGU+CisgIDx0aXRsZSBpZD0idGVzdC10aXRsZSI+JFJDU2ZpbGU6IHN0cnVjdC11c2UtcmVj
dXJzaW9uLTAzLXQuc3ZnLHYgJDwvdGl0bGU+CiAgIDxkZWZzPgogICAgIDxmb250LWZhY2UKICAg
ICAgIGZvbnQtZmFtaWx5PSJTVkdGcmVlU2Fuc0FTQ0lJIgpAQCAtMzQsMjAgKzM0LDIwIEBACiAg
ICAgICA8L2ZvbnQtZmFjZS1zcmM+CiAgICAgPC9mb250LWZhY2U+CiAgIDwvZGVmcz4KLSAgPGcg
eG1sOmlkPSJ0ZXN0LWJvZHktY29udGVudCIgZm9udC1mYW1pbHk9IlNWR0ZyZWVTYW5zQVNDSUks
c2Fucy1zZXJpZiIgZm9udC1zaXplPSIxOCI+CisgIDxnIGlkPSJ0ZXN0LWJvZHktY29udGVudCIg
Zm9udC1mYW1pbHk9IlNWR0ZyZWVTYW5zQVNDSUksc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxOCI+
CiAKLSAgICA8ZyB4bWw6aWQ9Imdyb3VwLTIiPgotICAgICAgPHVzZSB4bWw6aWQ9InVzZS0yIiB4
PSIwIiB5PSIyNSIgIHhsaW5rOmhyZWY9InN0cnVjdC11c2UtcmVjdXJzaW9uLTAyLXQuc3ZnI2dy
b3VwLTEiIHN0cm9rZT0iZ3JheSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtZGFzaGFycmF5PSI0
IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KLSAgICAgIDxjaXJjbGUgeG1sOmlkPSJjaXJjbGUt
MiIgY3g9JzM4MCcgY3k9JzI1JyByPScxMCcgZmlsbD0nI0ZGRkYwMCcgLz4KKyAgICA8ZyBpZD0i
Z3JvdXAtMiI+CisgICAgICA8dXNlIGlkPSJ1c2UtMiIgeD0iMCIgeT0iMjUiICB4bGluazpocmVm
PSJzdHJ1Y3QtdXNlLXJlY3Vyc2lvbi0wMi10LnN2ZyNncm91cC0xIiBzdHJva2U9ImdyYXkiIHN0
cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWRhc2hhcnJheT0iNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5k
Ii8+CisgICAgICA8Y2lyY2xlIGlkPSJjaXJjbGUtMiIgY3g9JzM4MCcgY3k9JzI1JyByPScxMCcg
ZmlsbD0nI0ZGRkYwMCcgLz4KICAgICA8L2c+CiAKLSAgICA8dGV4dCB4bWw6aWQ9InBhc3MiIHg9
IjI0MCIgeT0iMjgwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSJncmVlbiIgZm9udC1zaXpl
PSIyNCI+VGhpcyB0ZXh0IHNob3VsZCBiZSB2aXNpYmxlLjwvdGV4dD4KKyAgICA8dGV4dCBpZD0i
cGFzcyIgeD0iMjQwIiB5PSIyODAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9ImdyZWVuIiBm
b250LXNpemU9IjI0Ij5UaGlzIHRleHQgc2hvdWxkIGJlIHZpc2libGUuPC90ZXh0PgogCiAgIDwv
Zz4KICAgPGcgZm9udC1mYW1pbHk9IlNWR0ZyZWVTYW5zQVNDSUksc2Fucy1zZXJpZiIgZm9udC1z
aXplPSIzMiI+Ci0gICAgPHRleHQgeG1sOmlkPSJyZXZpc2lvbiIgeD0iMTAiIHk9IjM0MCIgc3Ry
b2tlPSJub25lIgorICAgIDx0ZXh0IGlkPSJyZXZpc2lvbiIgeD0iMTAiIHk9IjM0MCIgc3Ryb2tl
PSJub25lIgogICAgICAgZmlsbD0iYmxhY2siPiRSZXZpc2lvbjogMS41ICQ8L3RleHQ+CiAgIDwv
Zz4KLSAgPHJlY3QgeG1sOmlkPSJ0ZXN0LWZyYW1lIiB4PSIxIiB5PSIxIiB3aWR0aD0iNDc4IiBo
ZWlnaHQ9IjM1OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIi8+CisgIDxyZWN0IGlkPSJ0ZXN0
LWZyYW1lIiB4PSIxIiB5PSIxIiB3aWR0aD0iNDc4IiBoZWlnaHQ9IjM1OCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSIjMDAwIi8+CiAKIDwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1
c3RvbS91c2UtZXh0ZXJuYWwtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2N1
c3RvbS91c2UtZXh0ZXJuYWwtY3Jhc2gtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjhiMTM3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL3VzZS1leHRlcm5hbC1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1leHRlcm5hbC1jcmFzaC5z
dmcgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1leHRlcm5hbC1jcmFzaC5zdmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ3NzQ3MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWV4dGVybmFsLWNyYXNoLnN2ZwpAQCAtMCwwICsx
LDEwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIj4KKzx1c2UgeGxpbms6aHJlZj0iLi4vVzNDLVNWRy0xLjItVGlueS9z
dHJ1Y3QtdXNlLXJlY3Vyc2lvbi0wMi10LnN2ZyNOT05FWElTVElORyIvPgorPHNjcmlwdD4KK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy5nY0NvbnRyb2xsZXIpCisgICAgZ2NDb250cm9sbGVy
LmNvbGxlY3QoKTsKKzwvc2NyaXB0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYxYTBjZi4uOGVk
ZGVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTE0ICBOaWtvbGFzIFpp
bW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIEV4dGVybmFsIDx1c2U+
IHhsaW5rOmhyZWYgcmVmZXJlbmNlcyBkbyBub3Qgd29yaworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0OTkKKworICAgICAgICBGb2xsb3ctdXAgZml4
IGFmdGVyIHIxMTA2NzYuCisgICAgICAgIEFzc2VydGlvbnMgYXJlIGZpcmluZyBkdWUgbGFzdCBt
aW51dGUgY2hhbmdlcywgYW5kIHNvbWUgZ2VuZXJhbCBwcm9ibGVtcy4KKworICAgICAgICBJIGRl
Y2lkZWQgdG8gY2xlYW4gdGhlIGNvZGUgdXAgYXMgd2VsbCwgdG8gbWFrZSBpdCBtb3JlIHNhZmUg
JiBvYnZpb3VzLgorCisgICAgICAgIFRlc3Q6IHN2Zy9jdXN0b20vdXNlLWV4dGVybmFsLWNyYXNo
LnN2ZworCisgICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKToKKyAgICAg
ICAgKiBzdmcvU1ZHVVJJUmVmZXJlbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdVUklSZWZl
cmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2UpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmV4dGVybmFsRG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3Vy
Y2UpOgorCiAyMDEyLTAzLTE0ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTEwNjczLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAppbmRleCBmNzNiOWFiLi43YmNjMGRhIDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcApAQCAtODcsMjMgKzg3LDIxIEBAIEVs
ZW1lbnQqIFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoY29uc3Qg
U3RyaW5nJiBpcmksIERvY3VtZW50CiAgICAgaWYgKHVybCA9PSBLVVJMKCkpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgLy8gSWYgd2UncmUgcmVxdWVzdGluZyBhbiBleHRlcm5hbCByZXNvdXJj
ZXMsIGFuZCBleHRlcm5hbERvY3VtZW50IGlzIG5vbi16ZXJvLCB0aGUgbG9hZCBhbHJlYWR5IHN1
Y2NlZWRlZC4KLSAgICAvLyBHbyBhaGVhZCBhbmQgY2hlY2sgaWYgdGhlIGV4dGVybmFsRG9jdW1l
bnRzIFVSTCBtYXRjaGVzIHRoZSBleHBlY3RlZCBVUkwsIHRoYXQgd2UgcmVzb2x2ZWQgdXNpbmcg
dGhlCi0gICAgLy8gaG9zdCBkb2N1bWVudCBiZWZvcmUgaW4gdXJsRnJvbUlSSVN0cmluZ1dpdGhG
cmFnbWVudElkZW50aWZpZXIoKS4gRm9yIGludGVybmFsIHJlc291cmNlcywgdGhlIHNhbWUKLSAg
ICAvLyBhc3N1bXB0aW9uIG11c3QgaG9sZCB0cnVlLCBqdXN0IHdpdGggdGhlIGhvc3QgZG9jdW1l
bnRzIFVSTCwgbm90IHRoZSBleHRlcm5hbCBkb2N1bWVudHMgVVJMLgotICAgIGlmICghZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIGV4dGVybmFsRG9jdW1lbnQgPyBleHRlcm5h
bERvY3VtZW50LT51cmwoKSA6IGRvY3VtZW50LT51cmwoKSkpCi0gICAgICAgIHJldHVybiAwOwot
CiAgICAgaWYgKGZyYWdtZW50SWRlbnRpZmllcikKICAgICAgICAgKmZyYWdtZW50SWRlbnRpZmll
ciA9IGlkOwogCiAgICAgaWYgKGlkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBpZiAoZXh0ZXJuYWxEb2N1bWVudCkKKyAgICBpZiAoZXh0ZXJuYWxEb2N1bWVudCkgeworICAg
ICAgICAvLyBFbmZvcmNlIHRoYXQgdGhlIHJlZmVyZW5jZWQgdXJsIG1hdGNoZXMgdGhlIHVybCBv
ZiB0aGUgZG9jdW1lbnQgdGhhdCB3ZSd2ZSBsb2FkZWQgZm9yIGl0IQorICAgICAgICBBU1NFUlQo
ZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIGV4dGVybmFsRG9jdW1lbnQtPnVy
bCgpKSk7CiAgICAgICAgIHJldHVybiBleHRlcm5hbERvY3VtZW50LT5nZXRFbGVtZW50QnlJZChp
ZCk7CisgICAgfQorCisgICAgLy8gRXhpdCBlYXJseSBpZiB0aGUgcmVmZXJlbmNlZCB1cmwgaXMg
ZXh0ZXJuYWwsIGFuZCB3ZSBoYXZlIG5vIGV4dGVybmFsRG9jdW1lbnQgZ2l2ZW4uCiAgICAgaWYg
KGlzRXh0ZXJuYWxVUklSZWZlcmVuY2UoaXJpLCBkb2N1bWVudCkpCi0gICAgICAgIHJldHVybiAw
OyAvLyBOb24tZXhpc3RpbmcgZXh0ZXJuYWwgcmVzb3VyY2UKKyAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICByZXR1cm4gZG9jdW1lbnQtPmdldEVsZW1lbnRCeUlkKGlkKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVUklSZWZlcmVuY2UuaAppbmRleCA4ZDgwOTU5Li4xYTMyMGRjIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1VSSVJlZmVyZW5jZS5oCkBAIC00MiwxNyArNDIsMTYgQEAgcHVibGljOgogICAgIHN0
YXRpYyBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlSSVN0cmluZyhjb25zdCBTdHJpbmcm
LCBEb2N1bWVudCopOwogICAgIHN0YXRpYyBFbGVtZW50KiB0YXJnZXRFbGVtZW50RnJvbUlSSVN0
cmluZyhjb25zdCBTdHJpbmcmLCBEb2N1bWVudCosIFN0cmluZyogPSAwLCBEb2N1bWVudCogPSAw
KTsKIAotICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0V4dGVybmFsVVJJUmVmZXJlbmNlKGNvbnN0
IFN0cmluZyYgdXJpLCBEb2N1bWVudCogYmFzZURvY3VtZW50KQorICAgIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc0V4dGVybmFsVVJJUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgdXJpLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgewotICAgICAgICBpZiAodXJpLnN0YXJ0c1dpdGgoIiMiKSkKKyAgICAg
ICAgLy8gSWYgdGhlIFVSSSBtYXRjaGVzIG91ciBkb2N1bWVudHMgVVJMLCBlYXJseSBleGl0LCB3
ZSdyZSBkZWFsaW5nIHdpdGggYSBsb2NhbCByZWZlcmVuY2UuCisgICAgICAgIEFTU0VSVChkb2N1
bWVudCk7CisgICAgICAgIEtVUkwgdXJsID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVyaSk7Cisg
ICAgICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwgZG9jdW1lbnQt
PnVybCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBzaXplX3Qgc3Rh
cnRPZkZyYWdtZW50SWRlbnRpZmllciA9IHVyaS5maW5kKCcjJyk7Ci0gICAgICAgIC8vIElmIHRo
ZSB0YXJnZXQgZG9jdW1lbnQgaXMgdGhlIGJhc2UgZG9jdW1lbnQgYnV0IGl0cyBwYXRoIGlzIGdp
dmVuIGluIGZvcm1hdCBocmVmPSJ0aGlzRG9jdW1lbnQuc3ZnI3RhcmdldFRhZyIKLSAgICAgICAg
Ly8gdGhlbiB3ZSBzaG91bGQgaGFuZGxlIGl0IGFzIGludGVybmFsLgotICAgICAgICBpZiAodXJp
LnN1YnN0cmluZygwLCBzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVyKSAhPSBiYXNlRG9jdW1lbnQt
PnVybCgpLmxhc3RQYXRoQ29tcG9uZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAvLyBJZiB0aGUgVVJJIGRvZXNuJ3QgY29udGFp
biBhIGJhc2Ugc3RyaW5nLCBqdXN0IHNlZSBpZiBpdCBzdGFydHMgd2l0aCBhIGZyYWdtZW50LWlk
ZW50aWZpZXIuCisgICAgICAgIHJldHVybiB1cmkuZmluZCgnIycpICE9IG5vdEZvdW5kOwogICAg
IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IDc1
ZThkZWMuLmU3ZDU2ZWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTE5
OCw2ICsxOTgsOSBAQCBEb2N1bWVudCogU1ZHVXNlRWxlbWVudDo6cmVmZXJlbmNlZERvY3VtZW50
KCkgY29uc3QKIERvY3VtZW50KiBTVkdVc2VFbGVtZW50OjpleHRlcm5hbERvY3VtZW50KCkgY29u
c3QKIHsKICAgICBpZiAobV9jYWNoZWREb2N1bWVudCAmJiBtX2NhY2hlZERvY3VtZW50LT5pc0xv
YWRlZCgpKSB7CisgICAgICAgIC8vIEdyYWNlZnVsbHkgaGFuZGxlIGVycm9yIGNvbmRpdGlvbi4K
KyAgICAgICAgaWYgKG1fY2FjaGVkRG9jdW1lbnQtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICBBU1NFUlQobV9jYWNoZWREb2N1bWVudC0+ZG9jdW1lbnQo
KSk7CiAgICAgICAgIHJldHVybiBtX2NhY2hlZERvY3VtZW50LT5kb2N1bWVudCgpOwogICAgIH0K
QEAgLTQwMCw2ICs0MDMsMTAgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNv
dXJjZSgpCiAgICAgU3RyaW5nIGlkOwogICAgIEVsZW1lbnQqIHRhcmdldCA9IFNWR1VSSVJlZmVy
ZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoaHJlZigpLCBkb2N1bWVudCgpLCAmaWQs
IGV4dGVybmFsRG9jdW1lbnQoKSk7CiAgICAgaWYgKCF0YXJnZXQpIHsKKyAgICAgICAgLy8gSWYg
d2UgY2FuJ3QgZmluZCB0aGUgdGFyZ2V0IG9mIGFuIGV4dGVybmFsIGVsZW1lbnQsIGp1c3QgZ2l2
ZSB1cC4KKyAgICAgICAgLy8gV2UgY2FuJ3Qgb2JzZXJ2ZSBpZiB0aGUgdGFyZ2V0IHNvbWV3aGVu
IGVudGVycyB0aGUgZXh0ZXJuYWwgZG9jdW1lbnQsIG5vciBzaG91bGQgd2UgZG8gaXQuCisgICAg
ICAgIGlmIChleHRlcm5hbERvY3VtZW50KCkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGlmIChoYXNQZW5kaW5nUmVzb3VyY2VzKCkgfHwgaWQuaXNFbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuOwogCg==
</data>
<flag name="review"
          id="135265"
          type_id="1"
          status="+"
          setter="zherczeg"
    />
          </attachment>
      

    </bug>

</bugzilla>