<?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>126133</bug_id>
          
          <creation_ts>2013-12-22 05:15:10 -0800</creation_ts>
          <short_desc>Make CachedSVGDocument independent of CSS Filters</short_desc>
          <delta_ts>2023-08-29 12:33:03 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=127151</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>962314</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-12-22 05:15:10 -0800</bug_when>
    <thetext>Currently a FilterOperation is needed to request and get CachedSVGDocument resources. This need to be more generic and independent of filters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962315</commentid>
    <comment_count>1</comment_count>
      <attachid>219870</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-12-22 05:26:07 -0800</bug_when>
    <thetext>Created attachment 219870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962316</commentid>
    <comment_count>2</comment_count>
      <attachid>219870</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-22 06:04:27 -0800</bug_when>
    <thetext>Comment on attachment 219870
Patch

Attachment 219870 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/48888009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962320</commentid>
    <comment_count>3</comment_count>
      <attachid>219870</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-22 06:56:12 -0800</bug_when>
    <thetext>Comment on attachment 219870
Patch

Attachment 219870 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/48758036</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962324</commentid>
    <comment_count>4</comment_count>
      <attachid>219870</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-22 07:39:11 -0800</bug_when>
    <thetext>Comment on attachment 219870
Patch

Attachment 219870 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/46198021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962340</commentid>
    <comment_count>5</comment_count>
      <attachid>219870</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-12-22 10:01:10 -0800</bug_when>
    <thetext>Comment on attachment 219870
Patch

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

&gt; Source/WebCore/loader/SVGDocumentConsumer.h:46
&gt; +class SVGDocumentConsumer {
&gt; +public:
&gt; +    CachedSVGDocumentReference* cachedSVGDocumentReference() const { return m_cachedSVGDocumentReference.get(); }
&gt; +    void setCachedSVGDocumentReference(PassOwnPtr&lt;CachedSVGDocumentReference&gt; cachedSVGDocumentReference) { m_cachedSVGDocumentReference = cachedSVGDocumentReference; }
&gt; +
&gt; +private:
&gt; +    OwnPtr&lt;CachedSVGDocumentReference&gt; m_cachedSVGDocumentReference;
&gt; +};    

This class is just a pointer. I don&apos;t see why we are introducing it and making code more abstract. Also name seem off. It doesn&apos;t &apos;consume&apos; anything.

We use unique_ptr not OwnPtr.

&gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:160
&gt; +class ReferenceFilterOperation : public FilterOperation, public SVGDocumentConsumer {

Why is ReferenceFilterOperation inheriting SVGDocumentConsumer instead of having one as a member?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962345</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-12-22 11:03:13 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 219870 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219870&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/SVGDocumentConsumer.h:46
&gt; &gt; +class SVGDocumentConsumer {
&gt; &gt; +public:
&gt; &gt; +    CachedSVGDocumentReference* cachedSVGDocumentReference() const { return m_cachedSVGDocumentReference.get(); }
&gt; &gt; +    void setCachedSVGDocumentReference(PassOwnPtr&lt;CachedSVGDocumentReference&gt; cachedSVGDocumentReference) { m_cachedSVGDocumentReference = cachedSVGDocumentReference; }
&gt; &gt; +
&gt; &gt; +private:
&gt; &gt; +    OwnPtr&lt;CachedSVGDocumentReference&gt; m_cachedSVGDocumentReference;
&gt; &gt; +};    
&gt; 
&gt; This class is just a pointer. I don&apos;t see why we are introducing it and making code more abstract. Also name seem off. It doesn&apos;t &apos;consume&apos; anything.

I think there is a misunderstanding. I do not try to fix the layer violation with this patch. Right now, CachedSVGDocumentReference can just be used by FilterOperation (specifically ReferencedFilterOperation). We have more situations like clip-path, SVG patterns and gradients that can be referenced from external resources as well. These operators need access to CachedSVGDocumentReference as well. See next paragraph...

&gt; 
&gt; We use unique_ptr not OwnPtr.

Takes some time to adapt to &quot;new&quot; C++ rules. Thanks.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:160
&gt; &gt; +class ReferenceFilterOperation : public FilterOperation, public SVGDocumentConsumer {
&gt; 
&gt; Why is ReferenceFilterOperation inheriting SVGDocumentConsumer instead of having one as a member?

The abstraction SVGDocumentConsumer is used to access the CachedSVGDocumentReference. All inheriting classes are &quot;consuming&quot; CachedSVGDocumentReference that is why I think SVGDocumentConsumer is the right name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962350</commentid>
    <comment_count>7</comment_count>
      <attachid>219880</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-12-22 11:46:21 -0800</bug_when>
    <thetext>Created attachment 219880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962351</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-22 11:49:03 -0800</bug_when>
    <thetext>Attachment 219880 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/css/StyleResolver.cpp&apos;, u&apos;Source/WebCore/css/StyleResolver.h&apos;, u&apos;Source/WebCore/loader/SVGDocumentConsumer.h&apos;, u&apos;Source/WebCore/platform/graphics/filters/FilterOperation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/filters/FilterOperation.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/loader/SVGDocumentConsumer.h:38:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 8 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>962354</commentid>
    <comment_count>9</comment_count>
      <attachid>219880</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-22 12:24:29 -0800</bug_when>
    <thetext>Comment on attachment 219880
Patch

Attachment 219880 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/50938286</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962363</commentid>
    <comment_count>10</comment_count>
      <attachid>219880</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-22 13:04:07 -0800</bug_when>
    <thetext>Comment on attachment 219880
Patch

Attachment 219880 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/51638040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962367</commentid>
    <comment_count>11</comment_count>
      <attachid>219880</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-22 13:20:11 -0800</bug_when>
    <thetext>Comment on attachment 219880
Patch

Attachment 219880 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/48298030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962548</commentid>
    <comment_count>12</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-12-23 12:41:50 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; This class is just a pointer. I don&apos;t see why we are introducing it and making code more abstract. Also name seem off. It doesn&apos;t &apos;consume&apos; anything.
&gt; 
&gt; I think there is a misunderstanding. I do not try to fix the layer violation with this patch. Right now, CachedSVGDocumentReference can just be used by FilterOperation (specifically ReferencedFilterOperation). We have more situations like clip-path, SVG patterns and gradients that can be referenced from external resources as well. These operators need access to CachedSVGDocumentReference as well. See next paragraph...

I didn&apos;t say anything about layer violation (which is bad too). It just doesn&apos;t make sense to me to introduce a class that is nothing but a unique_ptr. You could replace the whole things with a typedef (not that you should). Usually something like this means that the design is off.

&gt; &gt; Why is ReferenceFilterOperation inheriting SVGDocumentConsumer instead of having one as a member?
&gt; 
&gt; The abstraction SVGDocumentConsumer is used to access the CachedSVGDocumentReference. All inheriting classes are &quot;consuming&quot; CachedSVGDocumentReference that is why I think SVGDocumentConsumer is the right name.

That didn&apos;t really answer my question. 

SVGDocumentConsumer does not do any consuming. It is a smart pointer without any additional functionality. Would you inherit from unique_ptr?

The SVG implementation is full of unnecessary abstractions which contribute to it being so hard to follow. Lets not add more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967753</commentid>
    <comment_count>13</comment_count>
      <attachid>221139</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2014-01-14 04:19:44 -0800</bug_when>
    <thetext>Created attachment 221139
Patch for landing

This patch uses a different approach. CachedSVGDocumentReference is now responsible for requesting the SVG document.

Note to the original code:

-            if (SVGURIReference::isExternalURIReference(svgDocumentValue-&gt;url(), m_state.document())) {
-                if (!svgDocumentValue-&gt;loadRequested())
-                    m_state.pendingSVGDocuments().set(operation.get(), svgDocumentValue);
-                else if (svgDocumentValue-&gt;cachedSVGDocument())
-                    operation-&gt;setCachedSVGDocumentReference(adoptPtr(new CachedSVGDocumentReference(svgDocumentValue-&gt;cachedSVGDocument())));
-            }

I wrote a bunch of test cases and the else if clause was never called. Independent if element style, document style... setting filter for a collection of elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967756</commentid>
    <comment_count>14</comment_count>
      <attachid>221140</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2014-01-14 04:24:41 -0800</bug_when>
    <thetext>Created attachment 221140
Patch

See previous comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967757</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-14 04:26:08 -0800</bug_when>
    <thetext>Attachment 221140 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/css/StyleResolver.cpp&apos;, u&apos;Source/WebCore/css/StyleResolver.h&apos;, u&apos;Source/WebCore/loader/cache/CachedSVGDocumentReference.cpp&apos;, u&apos;Source/WebCore/loader/cache/CachedSVGDocumentReference.h&apos;, u&apos;Source/WebCore/platform/graphics/filters/FilterOperation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/filters/FilterOperation.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/loader/cache/CachedSVGDocumentReference.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/loader/cache/CachedSVGDocumentReference.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/loader/cache/CachedSVGDocumentReference.cpp:55:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 3 in 7 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>967767</commentid>
    <comment_count>16</comment_count>
      <attachid>221144</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2014-01-14 05:13:09 -0800</bug_when>
    <thetext>Created attachment 221144
Patch with style updates</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967804</commentid>
    <comment_count>17</comment_count>
      <attachid>221144</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-01-14 06:47:09 -0800</bug_when>
    <thetext>Comment on attachment 221144
Patch with style updates

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

r=me

&gt; Source/WebCore/css/StyleResolver.cpp:3433
&gt; +    for (auto it = state.pendingSVGDocuments().begin(), end = state.pendingSVGDocuments().end(); it != end; ++it)
&gt; +        (*it)-&gt;load(cachedResourceLoader);

Please use range-for syntax:

for (auto pendingDocument : state.pendingSVGDocuments())

&gt; Source/WebCore/loader/cache/CachedSVGDocumentReference.h:44
&gt; -    CachedSVGDocumentReference(CachedSVGDocument*);
&gt; +    static std::unique_ptr&lt;CachedSVGDocumentReference&gt; create(const String&amp; url)
&gt; +    {
&gt; +        return std::unique_ptr&lt;CachedSVGDocumentReference&gt;(new CachedSVGDocumentReference(url));
&gt; +    }

No need to add create(). Please just keep the constructor public and use std::make_unique&lt;CachedSVGDocumentReference&gt;(url);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967821</commentid>
    <comment_count>18</comment_count>
      <attachid>221161</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2014-01-14 07:20:27 -0800</bug_when>
    <thetext>Created attachment 221161
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967835</commentid>
    <comment_count>19</comment_count>
      <attachid>221161</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-14 07:54:14 -0800</bug_when>
    <thetext>Comment on attachment 221161
Patch for landing

Clearing flags on attachment: 221161

Committed r161967: &lt;http://trac.webkit.org/changeset/161967&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967836</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-14 07:54:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970558</commentid>
    <comment_count>21</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-21 20:58:48 -0800</bug_when>
    <thetext>Looks like this caused a regression = see 127151.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219870</attachid>
            <date>2013-12-22 05:26:07 -0800</date>
            <delta_ts>2013-12-22 11:46:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>filter-cleanup.patch</filename>
            <type>text/plain</type>
            <size>14634</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZjQ5NWY3Li5mZmVkMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTMtMTItMjIgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAg
ICBNYWtlIENhY2hlZFNWR0RvY3VtZW50IGluZGVwZW5kZW50IG9mIENTUyBGaWx0ZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYxMzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBu
ZXcgY2xhc3MgU1ZHRG9jdW1lbnRDb25zdW1lciB0aGF0IHJlcXVlc3RzIENhY2hlZFNWR0RvbWN1
bWVudHMuCisgICAgICAgIFJlbW92ZWQgQ2FjaGVkU1ZHRG9tY3VtZW50IHNwZWNpZmljIGNvZGUg
ZnJvbSBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24gYW5kCisgICAgICAgIGxldCBSZWZlcmVuY2VG
aWx0ZXJPcGVyYXRpb24gaW5oZXJpdCBmcm9tIFNWR0RvY3VtZW50Q29uc3VtZXIuIFN0eWxlUmVz
b2x2ZXIKKyAgICAgICAganVzdCB3b3JrcyB3aXRoIFNWR0RvY3VtZW50Q29uc3VtZXIgaW5zdGVh
ZCBvZiBGaWx0ZXJPcGVyYXRpb24uCisKKyAgICAgICAgSW4gdGhlIGZ1dHVyZSwgUmVmZXJlbmNl
Q2xpcFBhdGhPcGVyYXRpb24gd2lsbCBpbmhlcml0IGZyb20gU1ZHRG9jdW1lbnRDb25zdW1lcgor
ICAgICAgICAoYW5kIHBvdGVudGlhbGx5IGFsbCBTVkcgUGFpbnRTZXJ2ZXJzKS4gVGhlIFNWRyBk
b2N1bWVudCByZXNvdXJjZSByZXF1ZXN0cyBjYW4gYmUgdHJhY2tlZAorICAgICAgICBhY3Jvc3Mg
YWxsIHJlZmVyZW5jZSB0eXBlcy4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6IFJl
cGxhY2UgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uIHdpdGgKKyAgICAgICAgICAgICBTVkdEb2N1
bWVudENvbnN1bWVyLgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGluZ1NWR0RvY3VtZW50cyk6
IAorICAgICAgICAqIGxvYWRlci9TVkdEb2N1bWVudENvbnN1bWVyLmg6IEludHJvZHVjZSBhIG5l
dyBjbGFzcyB0byBoYW5kbGUgQ2FjaGVkU1ZHRG9tY3VtZW50cy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHA6IFNpbXBsZSBjbGVhbi11cCBv
ZiB0aGUgZmlsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5oOiBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24gaW5oZXJpdHMgZnJvbQorICAgICAg
ICAgICAgU1ZHRG9jdW1lbnRDb25zdW1lci4gQ2FjaGVkU1ZHRG9tY3VtZW50IGNvZGUgd2FzIHJl
bW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb246OlJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbjo6flJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJPcGVyYXRpb246OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6UmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uKToKKwogMjAxMy0xMi0yMSAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFN0YXJ0IHJlZmFjdG9yaW5nIEZpbHRlciBjb2RlIHRvIHJldXNlIENh
Y2hlZFNWR0RvY3VtZW50IGZvciBjbGlwUGF0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
aW5kZXggMzYwMzNkYi4uNmJkZjI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC00MDU0LDYgKzQwNTQsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZURhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU1ZHRG9jdW1lbnRDb25zdW1lci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9DYWNoZWRSYXdSZXNvdXJjZVNvdXAuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9TdWJyZXNvdXJjZUxvYWRlclNvdXAuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggMjI3ZDYyOC4u
Njk4ZTE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCkBAIC0xOTAxNyw2ICsxOTAxNyw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llxsb2FkZXJcU3VicmVzb3VyY2VMb2FkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGxvYWRlclxTdWJzdGl0dXRlRGF0YS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cbG9hZGVyXFN1YnN0aXR1dGVSZXNvdXJjZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cbG9hZGVyXFNWR0RvY3VtZW50Q29uc3VtZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGxvYWRlclxUZXh0UmVzb3VyY2VEZWNvZGVyLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxsb2FkZXJcVGV4dFRyYWNrTG9hZGVyLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxsb2FkZXJcVGhyZWFkYWJsZUxvYWRlci5oIiAvPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJmMjg0YjQu
LjgzOWRjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTYwNTEsNiArNjA1MSw3IEBACiAJCUZCQjBDNUI3MTdCQkQ2MjYwMDNE
MzY3NyAvKiBDU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCOTY1QjgyMTdCQkI2MkMwMEU4MzVCOSAvKiBDU1NGaWx0
ZXJJbWFnZVZhbHVlLmNwcCAqLzsgfTsKIAkJRkJCMEM1QjgxN0JCRDYyOTAwM0QzNjc3IC8qIENT
U0ZpbHRlckltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZCOTY1QjgxMTdCQkI1RjkwMEU4MzVCOSAvKiBDU1NGaWx0ZXJJbWFnZVZhbHVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJRkJDMjIwREYxMjM3
RkJFQjAwQkNGNzg4IC8qIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCQzIyMERFMTIzN0ZCRUIwMEJDRjc4
OCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAgKi87IH07CisJCUZCQzQwOUQ1MTg2NzBF
MTYwMDk2NTQ3MiAvKiBTVkdEb2N1bWVudENvbnN1bWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQkM0MDlENDE4NjcwRTE2MDA5NjU0NzIgLyogU1ZH
RG9jdW1lbnRDb25zdW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUZCRDZBRjg4MTVFRjI1QzkwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkJENkFGODcx
NUVGMjFENDAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmggKi87IH07CiAJCUZCRDZBRjg5MTVF
RjI1REIwMDhCNzExMCAvKiBCYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCRDZBRjg0MTVFRjIxRDQwMDhCNzExMCAv
KiBCYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCAqLzsgfTsKIAkJRkJENkFGOEExNUVGMjVERjAwOEI3
MTEwIC8qIEJhc2ljU2hhcGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZCRDZBRjg1MTVFRjIxRDQwMDhCNzExMCAvKiBCYXNpY1NoYXBl
RnVuY3Rpb25zLmggKi87IH07CkBAIC0xMzI3MCw2ICsxMzI3MSw3IEBACiAJCUZCOTY1QjgxMTdC
QkI1RjkwMEU4MzVCOSAvKiBDU1NGaWx0ZXJJbWFnZVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENTU0ZpbHRlckltYWdlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkI5NjVCODIxN0JCQjYyQzAwRTgzNUI5IC8qIENTU0ZpbHRlckltYWdlVmFs
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCQzIyMERFMTIzN0ZC
RUIwMEJDRjc4OCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZCQzQwOUQ0MTg2NzBFMTYwMDk2NTQ3MiAvKiBTVkdE
b2N1bWVudENvbnN1bWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0Rv
Y3VtZW50Q29uc3VtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkJENkFGODIx
NUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEJhc2ljU2hhcGVzLmNwcDsgcGF0aCA9IHN0eWxlL0Jhc2ljU2hhcGVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkJENkFGODMxNUVGMjFBMzAwOEI3
MTEwIC8qIEJhc2ljU2hhcGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJh
c2ljU2hhcGVzLmg7IHBhdGggPSBzdHlsZS9CYXNpY1NoYXBlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGQkQ2QUY4NDE1RUYyMUQ0MDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0
aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNpY1NoYXBl
RnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMTcyLDYgKzIw
MTc0LDcgQEAKIAkJCQk2NTZEMzczMDBBREJBNURFMDBBNDU1NEQgLyogU3VicmVzb3VyY2VMb2Fk
ZXIuaCAqLywKIAkJCQk2NTlBN0QxMjBCNkRCNEQ5MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURhdGEu
aCAqLywKIAkJCQkxQThGNkIwMTBEQjUzMDA2MDAxREI3OTQgLyogU3Vic3RpdHV0ZVJlc291cmNl
LmggKi8sCisJCQkJRkJDNDA5RDQxODY3MEUxNjAwOTY1NDcyIC8qIFNWR0RvY3VtZW50Q29uc3Vt
ZXIuaCAqLywKIAkJCQlGNTIzRDI3ODAyREU0M0Q3MDE4NjM1Q0EgLyogVGV4dFJlc291cmNlRGVj
b2Rlci5jcHAgKi8sCiAJCQkJRjUyM0QyNzkwMkRFNDNENzAxODYzNUNBIC8qIFRleHRSZXNvdXJj
ZURlY29kZXIuaCAqLywKIAkJCQlCMUFENEU3MTEzQTEyQTQ2MDA4NDZCMjcgLyogVGV4dFRyYWNr
TG9hZGVyLmNwcCAqLywKQEAgLTIzNjAwLDYgKzIzNjAzLDcgQEAKIAkJCQk0MEVDQUU3RTE2QjhC
NjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkUwODg4RDUx
MTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
QzM2QzAzMEVCMDc2RDYwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRkJDNDA5RDUxODY3MEUxNjAwOTY1NDcyIC8qIFNWR0RvY3VtZW50Q29uc3VtZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMUY4MDlEMUNDNjAwMDBCRTMyNSAvKiBKU0RPTUlt
cGxlbWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUQyNDgwNzBENzU3RTdEMDBGREY5
NTkgLyogSlNET01NaW1lVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTlEMjQ4MDkwRDc1N0U3
RDAwRkRGOTU5IC8qIEpTRE9NTWltZVR5cGVBcnJheS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMWE4MzM0Ny4uODY2ZjNkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzQyOCw4ICszNDI4LDggQEAgdm9pZCBTdHls
ZVJlc29sdmVyOjpsb2FkUGVuZGluZ1NWR0RvY3VtZW50cygpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICAvLyBTdGFzaCB0aGUgQ2FjaGVkU1ZHRG9jdW1lbnQgb24gdGhlIHJlZmVy
ZW5jZSBmaWx0ZXIuCi0gICAgICAgIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiYgcmVmZXJlbmNl
RmlsdGVyID0gKnRvUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKGl0LT5rZXkpOwotICAgICAgICBy
ZWZlcmVuY2VGaWx0ZXIuc2V0Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoYWRvcHRQdHIobmV3
IENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGNhY2hlZERvY3VtZW50KSkpOworICAgICAgICBT
VkdEb2N1bWVudENvbnN1bWVyJiBzdmdEb2N1bWVudENvbnN1bWVyID0gKihpdC0+a2V5KTsKKyAg
ICAgICAgc3ZnRG9jdW1lbnRDb25zdW1lci5zZXRDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZShh
ZG9wdFB0cihuZXcgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoY2FjaGVkRG9jdW1lbnQpKSk7
CiAgICAgfQogICAgIHN0YXRlLnBlbmRpbmdTVkdEb2N1bWVudHMoKS5jbGVhcigpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggNzk3NjBmMC4uNDJkODlhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0xMDQsNiArMTA0LDcgQEAgY2xhc3MgU3R5bGVTaGFk
ZXI7CiBjbGFzcyBTdHlsZVNoZWV0OwogY2xhc3MgU3R5bGVTaGVldExpc3Q7CiBjbGFzcyBTdHls
ZWRFbGVtZW50OworY2xhc3MgU1ZHRG9jdW1lbnRDb25zdW1lcjsKIGNsYXNzIFZpZXdwb3J0U3R5
bGVSZXNvbHZlcjsKIGNsYXNzIFdlYktpdENTU0ZpbHRlclZhbHVlOwogY2xhc3MgV2ViS2l0Q1NT
U2hhZGVyVmFsdWU7CkBAIC0zNzksNyArMzgwLDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICB0
eXBlZGVmIEhhc2hNYXA8Q1NTUHJvcGVydHlJRCwgUmVmUHRyPENTU1ZhbHVlPj4gUGVuZGluZ0lt
YWdlUHJvcGVydHlNYXA7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKSAmJiBFTkFCTEUoU1ZHKQot
ICAgIHR5cGVkZWYgSGFzaE1hcDxGaWx0ZXJPcGVyYXRpb24qLCBSZWZQdHI8V2ViS2l0Q1NTU1ZH
RG9jdW1lbnRWYWx1ZT4+IFBlbmRpbmdTVkdEb2N1bWVudE1hcDsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8U1ZHRG9jdW1lbnRDb25zdW1lciosIFJlZlB0cjxXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVl
Pj4gUGVuZGluZ1NWR0RvY3VtZW50TWFwOwogI2VuZGlmCiAKICAgICBjbGFzcyBTdGF0ZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU1ZHRG9jdW1lbnRDb25zdW1lci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1NWR0RvY3VtZW50Q29uc3VtZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzM2NTBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1NWR0RvY3VtZW50Q29uc3VtZXIuaApAQCAtMCwwICsxLDUwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTVkdEb2N1bWVudENvbnN1bWVyX2gKKyNk
ZWZpbmUgU1ZHRG9jdW1lbnRDb25zdW1lcl9oCisKKyNpZiBFTkFCTEUoU1ZHKQorCisjaW5jbHVk
ZSAiQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR0RvY3VtZW50Q29uc3VtZXIgewor
cHVibGljOgorICAgIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKiBjYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2Uu
Z2V0KCk7IH0KKyAgICB2b2lkIHNldENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKFBhc3NPd25Q
dHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+IGNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
KSB7IG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBjYWNoZWRTVkdEb2N1bWVudFJlZmVy
ZW5jZTsgfQorCitwcml2YXRlOgorICAgIE93blB0cjxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZT4gbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTsKK307ICAgIAorfQorCisjZW5kaWYgLy8g
RU5BQkxFKFNWRykKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCmluZGV4IDEyNTNkMmIu
LjQyMTVjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKQEAgLTMwLDMwICszMCw4IEBACiAK
ICNpbmNsdWRlICJBbmltYXRpb25VdGlsaXRpZXMuaCIKIAotI2lmIEVOQUJMRShTVkcpCi0jaW5j
bHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6UmVmZXJlbmNlRmlsdGVyT3Bl
cmF0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50LCBPcGVyYXRp
b25UeXBlIHR5cGUpCi0gICAgOiBGaWx0ZXJPcGVyYXRpb24odHlwZSkKLSAgICAsIG1fdXJsKHVy
bCkKLSAgICAsIG1fZnJhZ21lbnQoZnJhZ21lbnQpCi17Ci19Ci0KLVJlZmVyZW5jZUZpbHRlck9w
ZXJhdGlvbjo6flJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbigpCi17Ci19Ci0KLSNpZiBFTkFCTEUo
U1ZHKQotdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OnNldENhY2hlZFNWR0RvY3VtZW50
UmVmZXJlbmNlKFBhc3NPd25QdHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+IGNhY2hlZFNW
R0RvY3VtZW50UmVmZXJlbmNlKQotewotICAgIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2Ug
PSBjYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTsKLX0KLSNlbmRpZgotCiBQYXNzUmVmUHRyPEZp
bHRlck9wZXJhdGlvbj4gQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29u
c3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bh
c3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlck9wZXJhdGlvbi5oCmluZGV4IDEzYTRkZTA3Li5hM2JjYzgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3Bl
cmF0aW9uLmgKQEAgLTMyLDYgKzMyLDkgQEAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNp
bmNsdWRlICJMYXlvdXRTaXplLmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCisvLyBGSVhNRTogVGhl
IGZvbGxvd2luZyBpbmNsdWRlIGlzIGEgbGF5ZXIgdmlvbGF0aW9uIHRoYXQgc2hvdWxkIGJlIGZp
eGVkIGJ5IGEgbGlnaHQtd2VpZ2h0ZWQgZmlsdGVyCisvLyByZXByZXNlbnRhdGlvbiBpbiBXZWJD
b3JlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0Mzc4CisjaW5j
bHVkZSAiU1ZHRG9jdW1lbnRDb25zdW1lci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBA
IC01MCwxMCArNTMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIENTUyBGaWx0ZXJzCiAK
LSNpZiBFTkFCTEUoU1ZHKQotY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U7Ci0jZW5k
aWYKLQogI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCiBjbGFzcyBGaWx0ZXJPcGVyYXRpb24gOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RmlsdGVyT3BlcmF0aW9uPiB7CiAjZWxzZQpAQCAt
MTU4LDEzICsxNTcsMTMgQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCi1jbGFzcyBSZWZlcmVuY2VG
aWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKK2NsYXNzIFJlZmVyZW5j
ZUZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24sIHB1YmxpYyBTVkdEb2N1
bWVudENvbnN1bWVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWZlcmVuY2VG
aWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBm
cmFnbWVudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24odXJsLCBmcmFnbWVudCwgdHlwZSkpOwog
ICAgIH0KLSAgICB2aXJ0dWFsIH5SZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24oKTsKKyAgICB2aXJ0
dWFsIH5SZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24oKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBh
ZmZlY3RzT3BhY2l0eSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIGJvb2wgbW92ZXNQaXhlbHMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CkBA
IC0xNzIsMTYgKzE3MSwxNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25z
dCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFN0cmluZyYgZnJhZ21lbnQoKSBjb25zdCB7
IHJldHVybiBtX2ZyYWdtZW50OyB9CiAKLSNpZiBFTkFCTEUoU1ZHKQotICAgIENhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlKiBjYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCk7IH0KLSAgICB2b2lkIHNldENh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKFBhc3NPd25QdHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZl
cmVuY2U+KTsKLSNlbmRpZgotCiAgICAgRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoKSBjb25z
dCB7IHJldHVybiBtX2ZpbHRlckVmZmVjdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0RmlsdGVyRWZm
ZWN0KFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QpIHsgbV9maWx0ZXJFZmZl
Y3QgPSBmaWx0ZXJFZmZlY3Q7IH0KIAogcHJpdmF0ZToKLSAgICBSZWZlcmVuY2VGaWx0ZXJPcGVy
YXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnQsIE9wZXJhdGlv
blR5cGUpOworICAgIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbihjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiBmcmFnbWVudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgICAgICA6IEZp
bHRlck9wZXJhdGlvbih0eXBlKQorICAgICAgICAsIG1fdXJsKHVybCkKKyAgICAgICAgLCBtX2Zy
YWdtZW50KGZyYWdtZW50KQorICAgIHsKKyAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0IE9WRVJSSURFCiAgICAgewpAQCAt
MTkzLDkgKzE5Miw2IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgbV91cmw7CiAgICAgU3RyaW5n
IG1fZnJhZ21lbnQ7Ci0jaWYgRU5BQkxFKFNWRykKLSAgICBPd25QdHI8Q2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2U+IG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U7Ci0jZW5kaWYKICAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2ZpbHRlckVmZmVjdDsKIH07CiAK
</data>
<flag name="review"
          id="243530"
          type_id="1"
          status="-"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="243531"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219880</attachid>
            <date>2013-12-22 11:46:21 -0800</date>
            <delta_ts>2014-01-14 04:19:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>filter-cleanup.patch</filename>
            <type>text/plain</type>
            <size>15427</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZjQ5NWY3Li5mZmVkMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTMtMTItMjIgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAg
ICBNYWtlIENhY2hlZFNWR0RvY3VtZW50IGluZGVwZW5kZW50IG9mIENTUyBGaWx0ZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYxMzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBu
ZXcgY2xhc3MgU1ZHRG9jdW1lbnRDb25zdW1lciB0aGF0IHJlcXVlc3RzIENhY2hlZFNWR0RvbWN1
bWVudHMuCisgICAgICAgIFJlbW92ZWQgQ2FjaGVkU1ZHRG9tY3VtZW50IHNwZWNpZmljIGNvZGUg
ZnJvbSBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24gYW5kCisgICAgICAgIGxldCBSZWZlcmVuY2VG
aWx0ZXJPcGVyYXRpb24gaW5oZXJpdCBmcm9tIFNWR0RvY3VtZW50Q29uc3VtZXIuIFN0eWxlUmVz
b2x2ZXIKKyAgICAgICAganVzdCB3b3JrcyB3aXRoIFNWR0RvY3VtZW50Q29uc3VtZXIgaW5zdGVh
ZCBvZiBGaWx0ZXJPcGVyYXRpb24uCisKKyAgICAgICAgSW4gdGhlIGZ1dHVyZSwgUmVmZXJlbmNl
Q2xpcFBhdGhPcGVyYXRpb24gd2lsbCBpbmhlcml0IGZyb20gU1ZHRG9jdW1lbnRDb25zdW1lcgor
ICAgICAgICAoYW5kIHBvdGVudGlhbGx5IGFsbCBTVkcgUGFpbnRTZXJ2ZXJzKS4gVGhlIFNWRyBk
b2N1bWVudCByZXNvdXJjZSByZXF1ZXN0cyBjYW4gYmUgdHJhY2tlZAorICAgICAgICBhY3Jvc3Mg
YWxsIHJlZmVyZW5jZSB0eXBlcy4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6IFJl
cGxhY2UgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uIHdpdGgKKyAgICAgICAgICAgICBTVkdEb2N1
bWVudENvbnN1bWVyLgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGluZ1NWR0RvY3VtZW50cyk6
IAorICAgICAgICAqIGxvYWRlci9TVkdEb2N1bWVudENvbnN1bWVyLmg6IEludHJvZHVjZSBhIG5l
dyBjbGFzcyB0byBoYW5kbGUgQ2FjaGVkU1ZHRG9tY3VtZW50cy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHA6IFNpbXBsZSBjbGVhbi11cCBv
ZiB0aGUgZmlsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5oOiBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24gaW5oZXJpdHMgZnJvbQorICAgICAg
ICAgICAgU1ZHRG9jdW1lbnRDb25zdW1lci4gQ2FjaGVkU1ZHRG9tY3VtZW50IGNvZGUgd2FzIHJl
bW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb246OlJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbjo6flJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJPcGVyYXRpb246OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6UmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uKToKKwogMjAxMy0xMi0yMSAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFN0YXJ0IHJlZmFjdG9yaW5nIEZpbHRlciBjb2RlIHRvIHJldXNlIENh
Y2hlZFNWR0RvY3VtZW50IGZvciBjbGlwUGF0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
aW5kZXggMzYwMzNkYi4uNmJkZjI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC00MDU0LDYgKzQwNTQsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZURhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU1ZHRG9jdW1lbnRDb25zdW1lci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9DYWNoZWRSYXdSZXNvdXJjZVNvdXAuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9TdWJyZXNvdXJjZUxvYWRlclNvdXAuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggMjI3ZDYyOC4u
Njk4ZTE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCkBAIC0xOTAxNyw2ICsxOTAxNyw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llxsb2FkZXJcU3VicmVzb3VyY2VMb2FkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGxvYWRlclxTdWJzdGl0dXRlRGF0YS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cbG9hZGVyXFN1YnN0aXR1dGVSZXNvdXJjZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cbG9hZGVyXFNWR0RvY3VtZW50Q29uc3VtZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGxvYWRlclxUZXh0UmVzb3VyY2VEZWNvZGVyLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxsb2FkZXJcVGV4dFRyYWNrTG9hZGVyLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxsb2FkZXJcVGhyZWFkYWJsZUxvYWRlci5oIiAvPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJmMjg0YjQu
LjgzOWRjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTYwNTEsNiArNjA1MSw3IEBACiAJCUZCQjBDNUI3MTdCQkQ2MjYwMDNE
MzY3NyAvKiBDU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCOTY1QjgyMTdCQkI2MkMwMEU4MzVCOSAvKiBDU1NGaWx0
ZXJJbWFnZVZhbHVlLmNwcCAqLzsgfTsKIAkJRkJCMEM1QjgxN0JCRDYyOTAwM0QzNjc3IC8qIENT
U0ZpbHRlckltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZCOTY1QjgxMTdCQkI1RjkwMEU4MzVCOSAvKiBDU1NGaWx0ZXJJbWFnZVZhbHVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJRkJDMjIwREYxMjM3
RkJFQjAwQkNGNzg4IC8qIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCQzIyMERFMTIzN0ZCRUIwMEJDRjc4
OCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAgKi87IH07CisJCUZCQzQwOUQ1MTg2NzBF
MTYwMDk2NTQ3MiAvKiBTVkdEb2N1bWVudENvbnN1bWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQkM0MDlENDE4NjcwRTE2MDA5NjU0NzIgLyogU1ZH
RG9jdW1lbnRDb25zdW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUZCRDZBRjg4MTVFRjI1QzkwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkJENkFGODcx
NUVGMjFENDAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmggKi87IH07CiAJCUZCRDZBRjg5MTVF
RjI1REIwMDhCNzExMCAvKiBCYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCRDZBRjg0MTVFRjIxRDQwMDhCNzExMCAv
KiBCYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCAqLzsgfTsKIAkJRkJENkFGOEExNUVGMjVERjAwOEI3
MTEwIC8qIEJhc2ljU2hhcGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZCRDZBRjg1MTVFRjIxRDQwMDhCNzExMCAvKiBCYXNpY1NoYXBl
RnVuY3Rpb25zLmggKi87IH07CkBAIC0xMzI3MCw2ICsxMzI3MSw3IEBACiAJCUZCOTY1QjgxMTdC
QkI1RjkwMEU4MzVCOSAvKiBDU1NGaWx0ZXJJbWFnZVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENTU0ZpbHRlckltYWdlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkI5NjVCODIxN0JCQjYyQzAwRTgzNUI5IC8qIENTU0ZpbHRlckltYWdlVmFs
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCQzIyMERFMTIzN0ZC
RUIwMEJDRjc4OCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZCQzQwOUQ0MTg2NzBFMTYwMDk2NTQ3MiAvKiBTVkdE
b2N1bWVudENvbnN1bWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0Rv
Y3VtZW50Q29uc3VtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkJENkFGODIx
NUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEJhc2ljU2hhcGVzLmNwcDsgcGF0aCA9IHN0eWxlL0Jhc2ljU2hhcGVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkJENkFGODMxNUVGMjFBMzAwOEI3
MTEwIC8qIEJhc2ljU2hhcGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJh
c2ljU2hhcGVzLmg7IHBhdGggPSBzdHlsZS9CYXNpY1NoYXBlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGQkQ2QUY4NDE1RUYyMUQ0MDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0
aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNpY1NoYXBl
RnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMTcyLDYgKzIw
MTc0LDcgQEAKIAkJCQk2NTZEMzczMDBBREJBNURFMDBBNDU1NEQgLyogU3VicmVzb3VyY2VMb2Fk
ZXIuaCAqLywKIAkJCQk2NTlBN0QxMjBCNkRCNEQ5MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURhdGEu
aCAqLywKIAkJCQkxQThGNkIwMTBEQjUzMDA2MDAxREI3OTQgLyogU3Vic3RpdHV0ZVJlc291cmNl
LmggKi8sCisJCQkJRkJDNDA5RDQxODY3MEUxNjAwOTY1NDcyIC8qIFNWR0RvY3VtZW50Q29uc3Vt
ZXIuaCAqLywKIAkJCQlGNTIzRDI3ODAyREU0M0Q3MDE4NjM1Q0EgLyogVGV4dFJlc291cmNlRGVj
b2Rlci5jcHAgKi8sCiAJCQkJRjUyM0QyNzkwMkRFNDNENzAxODYzNUNBIC8qIFRleHRSZXNvdXJj
ZURlY29kZXIuaCAqLywKIAkJCQlCMUFENEU3MTEzQTEyQTQ2MDA4NDZCMjcgLyogVGV4dFRyYWNr
TG9hZGVyLmNwcCAqLywKQEAgLTIzNjAwLDYgKzIzNjAzLDcgQEAKIAkJCQk0MEVDQUU3RTE2QjhC
NjcyMDBDMzYxMDMgLyogSlNET01FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkUwODg4RDUx
MTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
QzM2QzAzMEVCMDc2RDYwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRkJDNDA5RDUxODY3MEUxNjAwOTY1NDcyIC8qIFNWR0RvY3VtZW50Q29uc3VtZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMUY4MDlEMUNDNjAwMDBCRTMyNSAvKiBKU0RPTUlt
cGxlbWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUQyNDgwNzBENzU3RTdEMDBGREY5
NTkgLyogSlNET01NaW1lVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTlEMjQ4MDkwRDc1N0U3
RDAwRkRGOTU5IC8qIEpTRE9NTWltZVR5cGVBcnJheS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMWE4MzM0Ny4uMDc4MjJiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzQyOCw4ICszNDI4LDggQEAgdm9pZCBTdHls
ZVJlc29sdmVyOjpsb2FkUGVuZGluZ1NWR0RvY3VtZW50cygpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICAvLyBTdGFzaCB0aGUgQ2FjaGVkU1ZHRG9jdW1lbnQgb24gdGhlIHJlZmVy
ZW5jZSBmaWx0ZXIuCi0gICAgICAgIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiYgcmVmZXJlbmNl
RmlsdGVyID0gKnRvUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKGl0LT5rZXkpOwotICAgICAgICBy
ZWZlcmVuY2VGaWx0ZXIuc2V0Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoYWRvcHRQdHIobmV3
IENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGNhY2hlZERvY3VtZW50KSkpOworICAgICAgICBT
VkdEb2N1bWVudENvbnN1bWVyJiBzdmdEb2N1bWVudENvbnN1bWVyID0gKihpdC0+a2V5KTsKKyAg
ICAgICAgc3ZnRG9jdW1lbnRDb25zdW1lci5zZXRDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZShz
dGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+KG5ldyBDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZShjYWNoZWREb2N1bWVudCkpKTsKICAgICB9CiAgICAgc3RhdGUucGVu
ZGluZ1NWR0RvY3VtZW50cygpLmNsZWFyKCk7CiB9CkBAIC0zODMwLDcgKzM4MzAsNyBAQCBib29s
IFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUs
IEZpbHRlck9wZXJhdGlvbnMmCiAgICAgICAgICAgICAgICAgaWYgKCFzdmdEb2N1bWVudFZhbHVl
LT5sb2FkUmVxdWVzdGVkKCkpCiAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUucGVuZGluZ1NW
R0RvY3VtZW50cygpLnNldChvcGVyYXRpb24uZ2V0KCksIHN2Z0RvY3VtZW50VmFsdWUpOwogICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKHN2Z0RvY3VtZW50VmFsdWUtPmNhY2hlZFNWR0RvY3VtZW50
KCkpCi0gICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi0+c2V0Q2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2UoYWRvcHRQdHIobmV3IENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKHN2Z0RvY3Vt
ZW50VmFsdWUtPmNhY2hlZFNWR0RvY3VtZW50KCkpKSk7CisgICAgICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbi0+c2V0Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2Uoc3RkOjp1bmlxdWVfcHRyPENh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlPihuZXcgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2Uo
c3ZnRG9jdW1lbnRWYWx1ZS0+Y2FjaGVkU1ZHRG9jdW1lbnQoKSkpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChvcGVyYXRpb24pOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCA3OTc2MGYwLi40MmQ4OWE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBjbGFz
cyBTdHlsZVNoYWRlcjsKIGNsYXNzIFN0eWxlU2hlZXQ7CiBjbGFzcyBTdHlsZVNoZWV0TGlzdDsK
IGNsYXNzIFN0eWxlZEVsZW1lbnQ7CitjbGFzcyBTVkdEb2N1bWVudENvbnN1bWVyOwogY2xhc3Mg
Vmlld3BvcnRTdHlsZVJlc29sdmVyOwogY2xhc3MgV2ViS2l0Q1NTRmlsdGVyVmFsdWU7CiBjbGFz
cyBXZWJLaXRDU1NTaGFkZXJWYWx1ZTsKQEAgLTM3OSw3ICszODAsNyBAQCBwcml2YXRlOgogcHVi
bGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxDU1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NTVmFsdWU+
PiBQZW5kaW5nSW1hZ2VQcm9wZXJ0eU1hcDsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpICYmIEVO
QUJMRShTVkcpCi0gICAgdHlwZWRlZiBIYXNoTWFwPEZpbHRlck9wZXJhdGlvbiosIFJlZlB0cjxX
ZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlPj4gUGVuZGluZ1NWR0RvY3VtZW50TWFwOworICAgIHR5
cGVkZWYgSGFzaE1hcDxTVkdEb2N1bWVudENvbnN1bWVyKiwgUmVmUHRyPFdlYktpdENTU1NWR0Rv
Y3VtZW50VmFsdWU+PiBQZW5kaW5nU1ZHRG9jdW1lbnRNYXA7CiAjZW5kaWYKIAogICAgIGNsYXNz
IFN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TVkdEb2N1bWVudENv
bnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU1ZHRG9jdW1lbnRDb25zdW1lci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNjMwOGUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU1ZHRG9jdW1lbnRDb25zdW1lci5oCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBv
cmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNWR0RvY3VtZW50Q29u
c3VtZXJfaAorI2RlZmluZSBTVkdEb2N1bWVudENvbnN1bWVyX2gKKworI2lmIEVOQUJMRShTVkcp
CisjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBTVkdEb2N1bWVudENvbnN1bWVyIHsKK3B1YmxpYzoKKyAgICBDYWNo
ZWRTVkdEb2N1bWVudFJlZmVyZW5jZSogY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKSBjb25z
dCB7IHJldHVybiBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZShzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2U+IGNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKSB7CisgICAgICAg
IG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBzdGQ6Om1vdmUoY2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2UpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+IG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U7Cit9
OyAgICAKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9uLmNwcAppbmRleCAxMjUzZDJiLi40MjE1Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3Bw
CkBAIC0zMCwzMCArMzAsOCBAQAogCiAjaW5jbHVkZSAiQW5pbWF0aW9uVXRpbGl0aWVzLmgiCiAK
LSNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgi
Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZlcmVuY2VGaWx0ZXJPcGVyYXRp
b246OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiBmcmFnbWVudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQotICAgIDogRmlsdGVyT3BlcmF0aW9u
KHR5cGUpCi0gICAgLCBtX3VybCh1cmwpCi0gICAgLCBtX2ZyYWdtZW50KGZyYWdtZW50KQotewot
fQotCi1SZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246On5SZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24o
KQotewotfQotCi0jaWYgRU5BQkxFKFNWRykKLXZvaWQgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9u
OjpzZXRDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZShQYXNzT3duUHRyPENhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlPiBjYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSkKLXsKLSAgICBtX2NhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlID0gY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U7Ci19Ci0j
ZW5kaWYKLQogUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhGaWx0
ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHBy
b2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJv
bS0+aXNTYW1lVHlwZSgqdGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCAxM2E0ZGUwNy4u
ZWRkYTI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCkBAIC0zMiw5ICszMiwxMSBAQAogI2luY2x1
ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkxheW91dFNpemUuaCIKICNpbmNsdWRlICJM
ZW5ndGguaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKy8vIEZJWE1FOiBUaGUgZm9sbG93aW5nIGluY2x1ZGUgaXMgYSBsYXllciB2aW9sYXRp
b24gdGhhdCBzaG91bGQgYmUgZml4ZWQgYnkgYSBsaWdodC13ZWlnaHRlZCBmaWx0ZXIKKy8vIHJl
cHJlc2VudGF0aW9uIGluIFdlYkNvcmUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTQzNzgKKyNpbmNsdWRlICJTVkdEb2N1bWVudENvbnN1bWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShCTEFDS0JFUlJZKQpAQCAtNTAs
MTAgKzUyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBDU1MgRmlsdGVycwogCi0jaWYg
RU5BQkxFKFNWRykKLWNsYXNzIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOwotI2VuZGlmCi0K
ICNpZiBQTEFURk9STShCTEFDS0JFUlJZKQogY2xhc3MgRmlsdGVyT3BlcmF0aW9uIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPEZpbHRlck9wZXJhdGlvbj4gewogI2Vsc2UKQEAgLTE1OCwx
MyArMTU2LDEzIEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotY2xhc3MgUmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CitjbGFzcyBSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uLCBwdWJsaWMgU1ZHRG9jdW1lbnRD
b25zdW1lciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJhZ21l
bnQsIE9wZXJhdGlvblR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKHVybCwgZnJhZ21lbnQsIHR5cGUpKTsKICAgICB9
Ci0gICAgdmlydHVhbCB+UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKCk7CisgICAgdmlydHVhbCB+
UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKCkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgYWZmZWN0
c09wYWNpdHkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBi
b29sIG1vdmVzUGl4ZWxzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTcy
LDE2ICsxNzAsMTYgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBTdHJpbmcmIGZyYWdtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9mcmFnbWVudDsgfQogCi0jaWYgRU5BQkxFKFNWRykKLSAgICBDYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZSogY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBt
X2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRDYWNoZWRT
VkdEb2N1bWVudFJlZmVyZW5jZShQYXNzT3duUHRyPENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
Pik7Ci0jZW5kaWYKLQogICAgIEZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7IH0KICAgICB2b2lkIHNldEZpbHRlckVmZmVjdChQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KSB7IG1fZmlsdGVyRWZmZWN0ID0g
ZmlsdGVyRWZmZWN0OyB9CiAKIHByaXZhdGU6Ci0gICAgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9u
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50LCBPcGVyYXRpb25UeXBl
KTsKKyAgICBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgZnJhZ21lbnQsIE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICAgICAgOiBGaWx0ZXJP
cGVyYXRpb24odHlwZSkKKyAgICAgICAgLCBtX3VybCh1cmwpCisgICAgICAgICwgbV9mcmFnbWVu
dChmcmFnbWVudCkKKyAgICB7CisgICAgfQogCiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdCBPVkVSUklERQogICAgIHsKQEAgLTE5Myw5
ICsxOTEsNiBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fdXJsOwogICAgIFN0cmluZyBtX2Zy
YWdtZW50OwotI2lmIEVOQUJMRShTVkcpCi0gICAgT3duUHRyPENhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlPiBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOwotI2VuZGlmCiAgICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gbV9maWx0ZXJFZmZlY3Q7CiB9OwogCg==
</data>
<flag name="commit-queue"
          id="243544"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221139</attachid>
            <date>2014-01-14 04:19:44 -0800</date>
            <delta_ts>2014-01-14 04:24:41 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>cachedSVGDocument.patch</filename>
            <type>text/plain</type>
            <size>11310</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ZGYxYzJiLi45ZDAzMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTQtMDEtMTQgIERpcmsgU2NodWx6ZSAgPGRzY2h1bHplQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBNYWtlIENhY2hlZFNWR0RvY3VtZW50IGluZGVwZW5kZW50IG9mIENTUyBGaWx0ZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYxMzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhbi11
cCB0aGUgcGVuZGluZ1NWR0RvY3VtZW50cyBjb2RlIGluIFN0eWxlUmVzb2x2ZXIuCisgICAgICAg
IENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlIGlzIHJlc3BvbnNpYmxlIGZvciByZXF1ZXN0aW5n
IHRoZQorICAgICAgICBTVkcgZG9jdW1lbnQgaW5zdGVhZCBvZiBXZWJLaXRDU1NTVkdEb2N1bWVu
dFZhbHVlLgorICAgICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSBjYW4gYmUgdXNlZCBi
eSBvdGhlciBTVkcgcmVzb3VyY2UgbGlrZQorICAgICAgICBjbGlwLXBhdGggYW5kIG1hc2sgbm93
IHNvIHRoYXQgdGhlc2UgbWF5IGxvYWQgZXh0ZXJuYWwgcmVzb3VyY2VzCisgICAgICAgIGFzIHdl
bGwuCisgICAgICAgIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUgZG9lcyBub3QgcHJvdmlkZSBh
bnkgZnVydGhlciB2YWx1ZQorICAgICAgICBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0
IHBhdGNoLgorCisgICAgICAgIFJlZmFjdG9yaW5nLCBubyBuZXcgdGVzdCBjYXNlcy4KKworICAg
ICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OmxvYWRQZW5kaW5nU1ZHRG9jdW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAqIGNzcy9TdHlsZVJl
c29sdmVyLmg6IFJlcGxhY2UgTWFwIHdpdGggYSBTZXQuCisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjpTdGF0ZTo6cGVuZGluZ1NWR0RvY3VtZW50cyk6IFVzZSB0aGUgU2V0IGZyb20g
bm93IG9uLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6Q2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2U6On5DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6bG9hZCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmg6IElzIHJlc3BvbnNpYmxlIGZv
ciAKKyAgICAgICAgICAgIHJlcXVlc3RpbmcgdGhlIFNWRyBkb2N1bWVudC4KKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmxvYWRSZXF1ZXN0ZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlQ2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9uLmg6CisKIDIwMTQtMDEtMTMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBh
cHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBidWlsZCBtb3JlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDA2NGM2MzYuLmFhNWYzZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAKQEAgLTM0MjksMTkgKzM0MjksOCBAQCB2b2lkIFN0eWxlUmVzb2x2
ZXI6OmxvYWRQZW5kaW5nU1ZHRG9jdW1lbnRzKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gc3RhdGUuZG9jdW1lbnQo
KS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwotICAgIGZvciAoYXV0byBpdCA9IHN0YXRlLnBlbmRp
bmdTVkdEb2N1bWVudHMoKS5iZWdpbigpLCBlbmQgPSBzdGF0ZS5wZW5kaW5nU1ZHRG9jdW1lbnRz
KCkuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBXZWJLaXRDU1NTVkdEb2N1bWVu
dFZhbHVlKiB2YWx1ZSA9IGl0LT52YWx1ZS5nZXQoKTsKLSAgICAgICAgLy8gRklYTUU6IEl0IGlz
IHVuY2xlYXIgd2h5IGl0IHNob3VsZCBiZSBudWxsLiBNYXliZSBhbiBBU1NFUlQgaW5zdGVhZD8K
LSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBDYWNo
ZWRTVkdEb2N1bWVudCogY2FjaGVkRG9jdW1lbnQgPSB2YWx1ZS0+bG9hZChjYWNoZWRSZXNvdXJj
ZUxvYWRlcik7Ci0gICAgICAgIGlmICghY2FjaGVkRG9jdW1lbnQpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAvLyBTdGFzaCB0aGUgQ2FjaGVkU1ZHRG9jdW1lbnQgb24gdGhlIHJl
ZmVyZW5jZSBmaWx0ZXIuCi0gICAgICAgIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiYgcmVmZXJl
bmNlRmlsdGVyID0gKnRvUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKGl0LT5rZXkpOwotICAgICAg
ICByZWZlcmVuY2VGaWx0ZXIuc2V0Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoYWRvcHRQdHIo
bmV3IENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGNhY2hlZERvY3VtZW50KSkpOwotICAgIH0K
KyAgICBmb3IgKGF1dG8gaXQgPSBzdGF0ZS5wZW5kaW5nU1ZHRG9jdW1lbnRzKCkuYmVnaW4oKSwg
ZW5kID0gc3RhdGUucGVuZGluZ1NWR0RvY3VtZW50cygpLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQp
CisgICAgICAgICgqaXQpLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKICAgICBzdGF0ZS5w
ZW5kaW5nU1ZHRG9jdW1lbnRzKCkuY2xlYXIoKTsKIH0KICNlbmRpZgpAQCAtMzgzNywxMiArMzgy
Niw4IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1
ZSogaW5WYWx1ZSwgRmlsdGVyT3BlcmF0aW9ucyYKICAgICAgICAgICAgIFVSTCB1cmwgPSBtX3N0
YXRlLmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3ZnRG9jdW1lbnRWYWx1ZS0+dXJsKCkpOwogCiAg
ICAgICAgICAgICBSZWZQdHI8UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uPiBvcGVyYXRpb24gPSBS
ZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShzdmdEb2N1bWVudFZhbHVlLT51cmwoKSwg
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpLCBvcGVyYXRpb25UeXBlKTsKLSAgICAgICAgICAgIGlm
IChTVkdVUklSZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2Uoc3ZnRG9jdW1lbnRWYWx1
ZS0+dXJsKCksIG1fc3RhdGUuZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXN2
Z0RvY3VtZW50VmFsdWUtPmxvYWRSZXF1ZXN0ZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9z
dGF0ZS5wZW5kaW5nU1ZHRG9jdW1lbnRzKCkuc2V0KG9wZXJhdGlvbi5nZXQoKSwgc3ZnRG9jdW1l
bnRWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc3ZnRG9jdW1lbnRWYWx1ZS0+Y2Fj
aGVkU1ZHRG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLT5zZXRDYWNo
ZWRTVkdEb2N1bWVudFJlZmVyZW5jZShhZG9wdFB0cihuZXcgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZl
cmVuY2Uoc3ZnRG9jdW1lbnRWYWx1ZS0+Y2FjaGVkU1ZHRG9jdW1lbnQoKSkpKTsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZl
cmVuY2Uoc3ZnRG9jdW1lbnRWYWx1ZS0+dXJsKCksIG1fc3RhdGUuZG9jdW1lbnQoKSkpCisgICAg
ICAgICAgICAgICAgbV9zdGF0ZS5wZW5kaW5nU1ZHRG9jdW1lbnRzKCkuYWRkKG9wZXJhdGlvbi0+
Y3JlYXRlQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKSk7CiAgICAgICAgICAgICBvcGVyYXRp
b25zLm9wZXJhdGlvbnMoKS5hcHBlbmQob3BlcmF0aW9uKTsKICNlbmRpZgogICAgICAgICAgICAg
Y29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCA3OTc2MGYwLi4xYTAz
MzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTM3OSw3ICszNzksNyBAQCBw
cml2YXRlOgogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxDU1NQcm9wZXJ0eUlELCBSZWZQ
dHI8Q1NTVmFsdWU+PiBQZW5kaW5nSW1hZ2VQcm9wZXJ0eU1hcDsKICNpZiBFTkFCTEUoQ1NTX0ZJ
TFRFUlMpICYmIEVOQUJMRShTVkcpCi0gICAgdHlwZWRlZiBIYXNoTWFwPEZpbHRlck9wZXJhdGlv
biosIFJlZlB0cjxXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlPj4gUGVuZGluZ1NWR0RvY3VtZW50
TWFwOworICAgIHR5cGVkZWYgSGFzaFNldDxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSo+IFBl
bmRpbmdTVkdEb2N1bWVudFNldDsKICNlbmRpZgogCiAgICAgY2xhc3MgU3RhdGUgewpAQCAtNDMy
LDcgKzQzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBhcHBseVByb3BlcnR5VG9WaXNpdGVk
TGlua1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0
eWxlOyB9CiAgICAgICAgIFBlbmRpbmdJbWFnZVByb3BlcnR5TWFwJiBwZW5kaW5nSW1hZ2VQcm9w
ZXJ0aWVzKCkgeyByZXR1cm4gbV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzOyB9CiAjaWYgRU5BQkxF
KENTU19GSUxURVJTKSAmJiBFTkFCTEUoU1ZHKQotICAgICAgICBQZW5kaW5nU1ZHRG9jdW1lbnRN
YXAmIHBlbmRpbmdTVkdEb2N1bWVudHMoKSB7IHJldHVybiBtX3BlbmRpbmdTVkdEb2N1bWVudHM7
IH0KKyAgICAgICAgUGVuZGluZ1NWR0RvY3VtZW50U2V0JiBwZW5kaW5nU1ZHRG9jdW1lbnRzKCkg
eyByZXR1cm4gbV9wZW5kaW5nU1ZHRG9jdW1lbnRzOyB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NT
X1NIQURFUlMpCiAgICAgICAgIHZvaWQgc2V0SGFzUGVuZGluZ1NoYWRlcnMoYm9vbCBoYXNQZW5k
aW5nU2hhZGVycykgeyBtX2hhc1BlbmRpbmdTaGFkZXJzID0gaGFzUGVuZGluZ1NoYWRlcnM7IH0K
QEAgLTQ4Niw3ICs0ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9oYXNQZW5kaW5nU2hh
ZGVyczsKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfRklMVEVSUykgJiYgRU5BQkxFKFNWRykKLSAg
ICAgICAgUGVuZGluZ1NWR0RvY3VtZW50TWFwIG1fcGVuZGluZ1NWR0RvY3VtZW50czsKKyAgICAg
ICAgUGVuZGluZ1NWR0RvY3VtZW50U2V0IG1fcGVuZGluZ1NWR0RvY3VtZW50czsKICNlbmRpZgog
ICAgICAgICBDU1NWYWx1ZSogbV9saW5lSGVpZ2h0VmFsdWU7CiAgICAgICAgIGJvb2wgbV9mb250
RGlydHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcAppbmRleCA3M2MyOGNmLi4xOTQwNTJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVu
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZS5jcHAKQEAgLTI3LDIwICsyNywzOCBAQAogI2luY2x1ZGUgIkNhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlLmgiCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCi0KICNpbmNsdWRlICJDYWNoZWRTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgorI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlSGFuZGxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2U6OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKENhY2hlZFNWR0RvY3Vt
ZW50KiBkb2N1bWVudCkKLSAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCitDYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiB1
cmwpCisgICAgOiBtX3VybCh1cmwpCisgICAgLCBtX2RvY3VtZW50KDApCisgICAgLCBtX2xvYWRS
ZXF1ZXN0ZWQoZmFsc2UpCiB7Ci0gICAgbV9kb2N1bWVudC0+YWRkQ2xpZW50KHRoaXMpOwogfQog
CiBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6fkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
KCkKIHsKLSAgICBtX2RvY3VtZW50LT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgaWYgKG1fbG9h
ZFJlcXVlc3RlZCkKKyAgICAgICAgbV9kb2N1bWVudC0+cmVtb3ZlQ2xpZW50KHRoaXMpOworfQor
Cit2b2lkIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9h
ZGVyKiBsb2FkZXIpCit7CisgICAgQVNTRVJUKGxvYWRlcik7CisgICAgaWYgKG1fbG9hZFJlcXVl
c3RlZCkKKyAgICAJcmV0dXJuOworCisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobV91cmwpKSk7
CisgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9y
cygpLmNzcyk7CisgICAgbV9kb2N1bWVudCA9IGxvYWRlci0+cmVxdWVzdFNWR0RvY3VtZW50KHJl
cXVlc3QpOworICAgIG1fZG9jdW1lbnQtPmFkZENsaWVudCh0aGlzKTsKKyAgICBtX2xvYWRSZXF1
ZXN0ZWQgPSB0cnVlOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oCmluZGV4IGNkOTcwMTIuLjNhYTQz
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudFJlZmVyZW5jZS5oCkBAIC0yNywyMiArMjcsMzUgQEAKICNkZWZpbmUgQ2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2VfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKENTU19G
SUxURVJTKQotCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJD
YWNoZWRTVkdEb2N1bWVudENsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFNWR0RvY3VtZW50OworY2xh
c3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAKIGNsYXNzIENhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlIDogcHVibGljIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBDYWNo
ZWRTVkdEb2N1bWVudFJlZmVyZW5jZShDYWNoZWRTVkdEb2N1bWVudCopOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIHVybCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2U+KG5ldyBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSh1cmwp
KTsKKyAgICB9CisKICAgICB2aXJ0dWFsIH5DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpOwor
CisgICAgdm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKik7CisgICAgYm9vbCBsb2FkUmVx
dWVzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkUmVxdWVzdGVkOyB9CisKICAgICBDYWNoZWRT
VkdEb2N1bWVudCogZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CiAKIHBy
aXZhdGU6CisgICAgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoY29uc3QgU3RyaW5nJik7CisK
KyAgICBTdHJpbmcgbV91cmw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU1ZHRG9j
dW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgYm9vbCBtX2xvYWRSZXF1ZXN0ZWQ7CiB9OwogCiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb24uY3BwCmluZGV4IDEyNTNkMmIuLjIwNTQwNzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ck9wZXJhdGlvbi5jcHAKQEAgLTQ4LDkgKzQ4LDEwIEBAIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlv
bjo6flJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbigpCiB9CiAKICNpZiBFTkFCTEUoU1ZHKQotdm9p
ZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OnNldENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
KFBhc3NPd25QdHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+IGNhY2hlZFNWR0RvY3VtZW50
UmVmZXJlbmNlKQorQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UqIFJlZmVyZW5jZUZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKQogewotICAgIG1fY2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBjYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTsKKyAg
ICBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlID0gQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVu
Y2U6OmNyZWF0ZShtX3VybCk7CisgICAgcmV0dXJuIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVu
Y2UuZ2V0KCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggNjQxODA4NS4u
YzdmMGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKFNWRykKICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSogY2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRDYWNoZWRTVkdEb2N1bWVudFJlZmVy
ZW5jZShQYXNzT3duUHRyPENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlPik7CisgICAgQ2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UqIGNyZWF0ZUNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKCk7
CiAjZW5kaWYKIAogICAgIEZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9maWx0ZXJFZmZlY3QuZ2V0KCk7IH0KQEAgLTE4Niw3ICsxODYsNyBAQCBwcml2YXRlOgog
ICAgIFN0cmluZyBtX3VybDsKICAgICBTdHJpbmcgbV9mcmFnbWVudDsKICNpZiBFTkFCTEUoU1ZH
KQotICAgIE93blB0cjxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZT4gbV9jYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZl
cmVuY2U+IG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U7CiAjZW5kaWYKICAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBtX2ZpbHRlckVmZmVjdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZTdm
Y2M2Zi4uNjEzYjYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDExIEBACiAyMDE0LTAx
LTEzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIElu
Y2x1ZGUgV0FLQXBwS2l0U3R1YnMuaCB0byBnZXQgTlNTZWxlY3Rpb25BZmZpbml0eS4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViRWRpdGluZ0RlbGVnYXRlLmg6CisKKzIwMTQtMDEtMTMgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKICAgICAgICAgRE9NVG91Y2gqIGV0
YyBzaG91bGQgbm90IGJlIHB1YmxpYyBoZWFkZXJzIG9uIGlPUy4KICAgICAgICAgCiAgICAgICAg
ICogTWlncmF0ZUhlYWRlcnMubWFrZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRWRpdGluZ0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkVkaXRpbmdEZWxlZ2F0ZS5oCmluZGV4IDVhN2IzNDUuLmRkZTNhNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRWRpdGluZ0RlbGVnYXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJFZGl0aW5nRGVsZWdhdGUuaApAQCAtMzAsNiArMzAsOCBA
QAogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKICNpbXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4KKyNl
bHNlCisjaW1wb3J0IDxXZWJLaXQvV0FLQXBwS2l0U3R1YnMuaD4KICNlbmRpZgogCiBAY2xhc3Mg
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221140</attachid>
            <date>2014-01-14 04:24:41 -0800</date>
            <delta_ts>2014-01-14 05:13:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>cachedSVGDocument.patch</filename>
            <type>text/plain</type>
            <size>10402</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ZGYxYzJiLi45NzM0Y2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTQtMDEtMTQgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAg
ICBNYWtlIENhY2hlZFNWR0RvY3VtZW50IGluZGVwZW5kZW50IG9mIENTUyBGaWx0ZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYxMzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhbi11cCB0aGUg
cGVuZGluZ1NWR0RvY3VtZW50cyBjb2RlIGluIFN0eWxlUmVzb2x2ZXIuCisgICAgICAgIENhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlIGlzIHJlc3BvbnNpYmxlIGZvciByZXF1ZXN0aW5nIHRoZQor
ICAgICAgICBTVkcgZG9jdW1lbnQgaW5zdGVhZCBvZiBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVl
LgorICAgICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSBjYW4gYmUgdXNlZCBieSBvdGhl
ciBTVkcgcmVzb3VyY2UgbGlrZQorICAgICAgICBjbGlwLXBhdGggYW5kIG1hc2sgbm93IHNvIHRo
YXQgdGhlc2UgbWF5IGxvYWQgZXh0ZXJuYWwgcmVzb3VyY2VzCisgICAgICAgIGFzIHdlbGwuCisg
ICAgICAgIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUgZG9lcyBub3QgcHJvdmlkZSBhbnkgZnVy
dGhlciB2YWx1ZQorICAgICAgICBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHBhdGNo
LgorCisgICAgICAgIFJlZmFjdG9yaW5nLCBubyBuZXcgdGVzdCBjYXNlcy4KKworICAgICAgICAq
IGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OmxvYWRQZW5kaW5nU1ZHRG9jdW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
Lmg6IFJlcGxhY2UgTWFwIHdpdGggYSBTZXQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpTdGF0ZTo6cGVuZGluZ1NWR0RvY3VtZW50cyk6IFVzZSB0aGUgU2V0IGZyb20gbm93IG9u
LgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6Q2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2U6On5DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6bG9hZCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmg6IElzIHJlc3BvbnNpYmxlIGZvciAKKyAg
ICAgICAgICAgIHJlcXVlc3RpbmcgdGhlIFNWRyBkb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmxvYWRSZXF1ZXN0ZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlQ2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3Bl
cmF0aW9uLmg6CisKIDIwMTQtMDEtMTMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IHRoZSBidWlsZCBtb3JlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCmluZGV4IDA2NGM2MzYuLmFhNWYzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKQEAgLTM0MjksMTkgKzM0MjksOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Omxv
YWRQZW5kaW5nU1ZHRG9jdW1lbnRzKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gc3RhdGUuZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpOwotICAgIGZvciAoYXV0byBpdCA9IHN0YXRlLnBlbmRpbmdTVkdE
b2N1bWVudHMoKS5iZWdpbigpLCBlbmQgPSBzdGF0ZS5wZW5kaW5nU1ZHRG9jdW1lbnRzKCkuZW5k
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVl
KiB2YWx1ZSA9IGl0LT52YWx1ZS5nZXQoKTsKLSAgICAgICAgLy8gRklYTUU6IEl0IGlzIHVuY2xl
YXIgd2h5IGl0IHNob3VsZCBiZSBudWxsLiBNYXliZSBhbiBBU1NFUlQgaW5zdGVhZD8KLSAgICAg
ICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBDYWNoZWRTVkdE
b2N1bWVudCogY2FjaGVkRG9jdW1lbnQgPSB2YWx1ZS0+bG9hZChjYWNoZWRSZXNvdXJjZUxvYWRl
cik7Ci0gICAgICAgIGlmICghY2FjaGVkRG9jdW1lbnQpCi0gICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICAvLyBTdGFzaCB0aGUgQ2FjaGVkU1ZHRG9jdW1lbnQgb24gdGhlIHJlZmVyZW5j
ZSBmaWx0ZXIuCi0gICAgICAgIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiYgcmVmZXJlbmNlRmls
dGVyID0gKnRvUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKGl0LT5rZXkpOwotICAgICAgICByZWZl
cmVuY2VGaWx0ZXIuc2V0Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoYWRvcHRQdHIobmV3IENh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGNhY2hlZERvY3VtZW50KSkpOwotICAgIH0KKyAgICBm
b3IgKGF1dG8gaXQgPSBzdGF0ZS5wZW5kaW5nU1ZHRG9jdW1lbnRzKCkuYmVnaW4oKSwgZW5kID0g
c3RhdGUucGVuZGluZ1NWR0RvY3VtZW50cygpLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAg
ICAgICgqaXQpLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKICAgICBzdGF0ZS5wZW5kaW5n
U1ZHRG9jdW1lbnRzKCkuY2xlYXIoKTsKIH0KICNlbmRpZgpAQCAtMzgzNywxMiArMzgyNiw4IEBA
IGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5W
YWx1ZSwgRmlsdGVyT3BlcmF0aW9ucyYKICAgICAgICAgICAgIFVSTCB1cmwgPSBtX3N0YXRlLmRv
Y3VtZW50KCkuY29tcGxldGVVUkwoc3ZnRG9jdW1lbnRWYWx1ZS0+dXJsKCkpOwogCiAgICAgICAg
ICAgICBSZWZQdHI8UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uPiBvcGVyYXRpb24gPSBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShzdmdEb2N1bWVudFZhbHVlLT51cmwoKSwgdXJsLmZy
YWdtZW50SWRlbnRpZmllcigpLCBvcGVyYXRpb25UeXBlKTsKLSAgICAgICAgICAgIGlmIChTVkdV
UklSZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2Uoc3ZnRG9jdW1lbnRWYWx1ZS0+dXJs
KCksIG1fc3RhdGUuZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXN2Z0RvY3Vt
ZW50VmFsdWUtPmxvYWRSZXF1ZXN0ZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5w
ZW5kaW5nU1ZHRG9jdW1lbnRzKCkuc2V0KG9wZXJhdGlvbi5nZXQoKSwgc3ZnRG9jdW1lbnRWYWx1
ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc3ZnRG9jdW1lbnRWYWx1ZS0+Y2FjaGVkU1ZH
RG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLT5zZXRDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZShhZG9wdFB0cihuZXcgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2Uo
c3ZnRG9jdW1lbnRWYWx1ZS0+Y2FjaGVkU1ZHRG9jdW1lbnQoKSkpKTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2Uo
c3ZnRG9jdW1lbnRWYWx1ZS0+dXJsKCksIG1fc3RhdGUuZG9jdW1lbnQoKSkpCisgICAgICAgICAg
ICAgICAgbV9zdGF0ZS5wZW5kaW5nU1ZHRG9jdW1lbnRzKCkuYWRkKG9wZXJhdGlvbi0+Y3JlYXRl
Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKSk7CiAgICAgICAgICAgICBvcGVyYXRpb25zLm9w
ZXJhdGlvbnMoKS5hcHBlbmQob3BlcmF0aW9uKTsKICNlbmRpZgogICAgICAgICAgICAgY29udGlu
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCA3OTc2MGYwLi4xYTAzMzM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTM3OSw3ICszNzksNyBAQCBwcml2YXRl
OgogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxDU1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NT
VmFsdWU+PiBQZW5kaW5nSW1hZ2VQcm9wZXJ0eU1hcDsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
ICYmIEVOQUJMRShTVkcpCi0gICAgdHlwZWRlZiBIYXNoTWFwPEZpbHRlck9wZXJhdGlvbiosIFJl
ZlB0cjxXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlPj4gUGVuZGluZ1NWR0RvY3VtZW50TWFwOwor
ICAgIHR5cGVkZWYgSGFzaFNldDxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSo+IFBlbmRpbmdT
VkdEb2N1bWVudFNldDsKICNlbmRpZgogCiAgICAgY2xhc3MgU3RhdGUgewpAQCAtNDMyLDcgKzQz
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBhcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0
eWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlOyB9
CiAgICAgICAgIFBlbmRpbmdJbWFnZVByb3BlcnR5TWFwJiBwZW5kaW5nSW1hZ2VQcm9wZXJ0aWVz
KCkgeyByZXR1cm4gbV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzOyB9CiAjaWYgRU5BQkxFKENTU19G
SUxURVJTKSAmJiBFTkFCTEUoU1ZHKQotICAgICAgICBQZW5kaW5nU1ZHRG9jdW1lbnRNYXAmIHBl
bmRpbmdTVkdEb2N1bWVudHMoKSB7IHJldHVybiBtX3BlbmRpbmdTVkdEb2N1bWVudHM7IH0KKyAg
ICAgICAgUGVuZGluZ1NWR0RvY3VtZW50U2V0JiBwZW5kaW5nU1ZHRG9jdW1lbnRzKCkgeyByZXR1
cm4gbV9wZW5kaW5nU1ZHRG9jdW1lbnRzOyB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NIQURF
UlMpCiAgICAgICAgIHZvaWQgc2V0SGFzUGVuZGluZ1NoYWRlcnMoYm9vbCBoYXNQZW5kaW5nU2hh
ZGVycykgeyBtX2hhc1BlbmRpbmdTaGFkZXJzID0gaGFzUGVuZGluZ1NoYWRlcnM7IH0KQEAgLTQ4
Niw3ICs0ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9oYXNQZW5kaW5nU2hhZGVyczsK
ICNlbmRpZgogI2lmIEVOQUJMRShDU1NfRklMVEVSUykgJiYgRU5BQkxFKFNWRykKLSAgICAgICAg
UGVuZGluZ1NWR0RvY3VtZW50TWFwIG1fcGVuZGluZ1NWR0RvY3VtZW50czsKKyAgICAgICAgUGVu
ZGluZ1NWR0RvY3VtZW50U2V0IG1fcGVuZGluZ1NWR0RvY3VtZW50czsKICNlbmRpZgogICAgICAg
ICBDU1NWYWx1ZSogbV9saW5lSGVpZ2h0VmFsdWU7CiAgICAgICAgIGJvb2wgbV9mb250RGlydHk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlLmNwcAppbmRleCA3M2MyOGNmLi4xOTQwNTJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVy
ZW5jZS5jcHAKQEAgLTI3LDIwICsyNywzOCBAQAogI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50
UmVmZXJlbmNlLmgiCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0K
ICNpbmNsdWRlICJDYWNoZWRTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
TG9hZGVyLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlSGFuZGxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2U6OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKENhY2hlZFNWR0RvY3VtZW50KiBk
b2N1bWVudCkKLSAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCitDYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiB1cmwpCisg
ICAgOiBtX3VybCh1cmwpCisgICAgLCBtX2RvY3VtZW50KDApCisgICAgLCBtX2xvYWRSZXF1ZXN0
ZWQoZmFsc2UpCiB7Ci0gICAgbV9kb2N1bWVudC0+YWRkQ2xpZW50KHRoaXMpOwogfQogCiBDYWNo
ZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6fkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKCkKIHsK
LSAgICBtX2RvY3VtZW50LT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgaWYgKG1fbG9hZFJlcXVl
c3RlZCkKKyAgICAgICAgbV9kb2N1bWVudC0+cmVtb3ZlQ2xpZW50KHRoaXMpOworfQorCit2b2lk
IENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBs
b2FkZXIpCit7CisgICAgQVNTRVJUKGxvYWRlcik7CisgICAgaWYgKG1fbG9hZFJlcXVlc3RlZCkK
KyAgICAJcmV0dXJuOworCisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0KGxvYWRlci0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobV91cmwpKSk7CisgICAg
cmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmNz
cyk7CisgICAgbV9kb2N1bWVudCA9IGxvYWRlci0+cmVxdWVzdFNWR0RvY3VtZW50KHJlcXVlc3Qp
OworICAgIG1fZG9jdW1lbnQtPmFkZENsaWVudCh0aGlzKTsKKyAgICBtX2xvYWRSZXF1ZXN0ZWQg
PSB0cnVlOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oCmluZGV4IGNkOTcwMTIuLjNhYTQzYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZS5oCkBAIC0yNywyMiArMjcsMzUgQEAKICNkZWZpbmUgQ2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2VfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKENTU19GSUxURVJT
KQotCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZWRT
VkdEb2N1bWVudENsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFNWR0RvY3VtZW50OworY2xhc3MgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI7CiAKIGNsYXNzIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlIDog
cHVibGljIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZShDYWNoZWRTVkdEb2N1bWVudCopOworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IHVybCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2U+KG5ldyBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSh1cmwpKTsKKyAg
ICB9CisKICAgICB2aXJ0dWFsIH5DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpOworCisgICAg
dm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKik7CisgICAgYm9vbCBsb2FkUmVxdWVzdGVk
KCkgY29uc3QgeyByZXR1cm4gbV9sb2FkUmVxdWVzdGVkOyB9CisKICAgICBDYWNoZWRTVkdEb2N1
bWVudCogZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CiAKIHByaXZhdGU6
CisgICAgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoY29uc3QgU3RyaW5nJik7CisKKyAgICBT
dHJpbmcgbV91cmw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU1ZHRG9jdW1lbnQ+
IG1fZG9jdW1lbnQ7CisgICAgYm9vbCBtX2xvYWRSZXF1ZXN0ZWQ7CiB9OwogCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJPcGVyYXRpb24uY3BwCmluZGV4IDEyNTNkMmIuLjIwNTQwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbi5jcHAKQEAgLTQ4LDkgKzQ4LDEwIEBAIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6flJl
ZmVyZW5jZUZpbHRlck9wZXJhdGlvbigpCiB9CiAKICNpZiBFTkFCTEUoU1ZHKQotdm9pZCBSZWZl
cmVuY2VGaWx0ZXJPcGVyYXRpb246OnNldENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKFBhc3NP
d25QdHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+IGNhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlKQorQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UqIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlv
bjo6Y3JlYXRlQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKQogewotICAgIG1fY2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2UgPSBjYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTsKKyAgICBtX2Nh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlID0gQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmNy
ZWF0ZShtX3VybCk7CisgICAgcmV0dXJuIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuZ2V0
KCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggNjQxODA4NS4uYzdmMGIy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgogCiAj
aWYgRU5BQkxFKFNWRykKICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSogY2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZShQ
YXNzT3duUHRyPENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlPik7CisgICAgQ2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UqIGNyZWF0ZUNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKCk7CiAjZW5k
aWYKIAogICAgIEZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gbV9m
aWx0ZXJFZmZlY3QuZ2V0KCk7IH0KQEAgLTE4Niw3ICsxODYsNyBAQCBwcml2YXRlOgogICAgIFN0
cmluZyBtX3VybDsKICAgICBTdHJpbmcgbV9mcmFnbWVudDsKICNpZiBFTkFCTEUoU1ZHKQotICAg
IE93blB0cjxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZT4gbV9jYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+
IG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U7CiAjZW5kaWYKICAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBtX2ZpbHRlckVmZmVjdDsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221144</attachid>
            <date>2014-01-14 05:13:09 -0800</date>
            <delta_ts>2014-01-14 07:20:27 -0800</delta_ts>
            <desc>Patch with style updates</desc>
            <filename>cachedSVGDocument.patch</filename>
            <type>text/plain</type>
            <size>10405</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ZGYxYzJiLi45NzM0Y2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTQtMDEtMTQgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAg
ICBNYWtlIENhY2hlZFNWR0RvY3VtZW50IGluZGVwZW5kZW50IG9mIENTUyBGaWx0ZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYxMzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhbi11cCB0aGUg
cGVuZGluZ1NWR0RvY3VtZW50cyBjb2RlIGluIFN0eWxlUmVzb2x2ZXIuCisgICAgICAgIENhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlIGlzIHJlc3BvbnNpYmxlIGZvciByZXF1ZXN0aW5nIHRoZQor
ICAgICAgICBTVkcgZG9jdW1lbnQgaW5zdGVhZCBvZiBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVl
LgorICAgICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSBjYW4gYmUgdXNlZCBieSBvdGhl
ciBTVkcgcmVzb3VyY2UgbGlrZQorICAgICAgICBjbGlwLXBhdGggYW5kIG1hc2sgbm93IHNvIHRo
YXQgdGhlc2UgbWF5IGxvYWQgZXh0ZXJuYWwgcmVzb3VyY2VzCisgICAgICAgIGFzIHdlbGwuCisg
ICAgICAgIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUgZG9lcyBub3QgcHJvdmlkZSBhbnkgZnVy
dGhlciB2YWx1ZQorICAgICAgICBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHBhdGNo
LgorCisgICAgICAgIFJlZmFjdG9yaW5nLCBubyBuZXcgdGVzdCBjYXNlcy4KKworICAgICAgICAq
IGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OmxvYWRQZW5kaW5nU1ZHRG9jdW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
Lmg6IFJlcGxhY2UgTWFwIHdpdGggYSBTZXQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpTdGF0ZTo6cGVuZGluZ1NWR0RvY3VtZW50cyk6IFVzZSB0aGUgU2V0IGZyb20gbm93IG9u
LgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6Q2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2U6On5DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6bG9hZCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmg6IElzIHJlc3BvbnNpYmxlIGZvciAKKyAg
ICAgICAgICAgIHJlcXVlc3RpbmcgdGhlIFNWRyBkb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmxvYWRSZXF1ZXN0ZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlQ2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3Bl
cmF0aW9uLmg6CisKIDIwMTQtMDEtMTMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IHRoZSBidWlsZCBtb3JlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCmluZGV4IDA2NGM2MzYuLmFhNWYzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKQEAgLTM0MjksMTkgKzM0MjksOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Omxv
YWRQZW5kaW5nU1ZHRG9jdW1lbnRzKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gc3RhdGUuZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpOwotICAgIGZvciAoYXV0byBpdCA9IHN0YXRlLnBlbmRpbmdTVkdE
b2N1bWVudHMoKS5iZWdpbigpLCBlbmQgPSBzdGF0ZS5wZW5kaW5nU1ZHRG9jdW1lbnRzKCkuZW5k
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVl
KiB2YWx1ZSA9IGl0LT52YWx1ZS5nZXQoKTsKLSAgICAgICAgLy8gRklYTUU6IEl0IGlzIHVuY2xl
YXIgd2h5IGl0IHNob3VsZCBiZSBudWxsLiBNYXliZSBhbiBBU1NFUlQgaW5zdGVhZD8KLSAgICAg
ICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBDYWNoZWRTVkdE
b2N1bWVudCogY2FjaGVkRG9jdW1lbnQgPSB2YWx1ZS0+bG9hZChjYWNoZWRSZXNvdXJjZUxvYWRl
cik7Ci0gICAgICAgIGlmICghY2FjaGVkRG9jdW1lbnQpCi0gICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICAvLyBTdGFzaCB0aGUgQ2FjaGVkU1ZHRG9jdW1lbnQgb24gdGhlIHJlZmVyZW5j
ZSBmaWx0ZXIuCi0gICAgICAgIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiYgcmVmZXJlbmNlRmls
dGVyID0gKnRvUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKGl0LT5rZXkpOwotICAgICAgICByZWZl
cmVuY2VGaWx0ZXIuc2V0Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoYWRvcHRQdHIobmV3IENh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGNhY2hlZERvY3VtZW50KSkpOwotICAgIH0KKyAgICBm
b3IgKGF1dG8gaXQgPSBzdGF0ZS5wZW5kaW5nU1ZHRG9jdW1lbnRzKCkuYmVnaW4oKSwgZW5kID0g
c3RhdGUucGVuZGluZ1NWR0RvY3VtZW50cygpLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAg
ICAgICgqaXQpLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKICAgICBzdGF0ZS5wZW5kaW5n
U1ZHRG9jdW1lbnRzKCkuY2xlYXIoKTsKIH0KICNlbmRpZgpAQCAtMzgzNywxMiArMzgyNiw4IEBA
IGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5W
YWx1ZSwgRmlsdGVyT3BlcmF0aW9ucyYKICAgICAgICAgICAgIFVSTCB1cmwgPSBtX3N0YXRlLmRv
Y3VtZW50KCkuY29tcGxldGVVUkwoc3ZnRG9jdW1lbnRWYWx1ZS0+dXJsKCkpOwogCiAgICAgICAg
ICAgICBSZWZQdHI8UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uPiBvcGVyYXRpb24gPSBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShzdmdEb2N1bWVudFZhbHVlLT51cmwoKSwgdXJsLmZy
YWdtZW50SWRlbnRpZmllcigpLCBvcGVyYXRpb25UeXBlKTsKLSAgICAgICAgICAgIGlmIChTVkdV
UklSZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2Uoc3ZnRG9jdW1lbnRWYWx1ZS0+dXJs
KCksIG1fc3RhdGUuZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXN2Z0RvY3Vt
ZW50VmFsdWUtPmxvYWRSZXF1ZXN0ZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5w
ZW5kaW5nU1ZHRG9jdW1lbnRzKCkuc2V0KG9wZXJhdGlvbi5nZXQoKSwgc3ZnRG9jdW1lbnRWYWx1
ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc3ZnRG9jdW1lbnRWYWx1ZS0+Y2FjaGVkU1ZH
RG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLT5zZXRDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZShhZG9wdFB0cihuZXcgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2Uo
c3ZnRG9jdW1lbnRWYWx1ZS0+Y2FjaGVkU1ZHRG9jdW1lbnQoKSkpKTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2Uo
c3ZnRG9jdW1lbnRWYWx1ZS0+dXJsKCksIG1fc3RhdGUuZG9jdW1lbnQoKSkpCisgICAgICAgICAg
ICAgICAgbV9zdGF0ZS5wZW5kaW5nU1ZHRG9jdW1lbnRzKCkuYWRkKG9wZXJhdGlvbi0+Y3JlYXRl
Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKSk7CiAgICAgICAgICAgICBvcGVyYXRpb25zLm9w
ZXJhdGlvbnMoKS5hcHBlbmQob3BlcmF0aW9uKTsKICNlbmRpZgogICAgICAgICAgICAgY29udGlu
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCA3OTc2MGYwLi4xYTAzMzM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTM3OSw3ICszNzksNyBAQCBwcml2YXRl
OgogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxDU1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NT
VmFsdWU+PiBQZW5kaW5nSW1hZ2VQcm9wZXJ0eU1hcDsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
ICYmIEVOQUJMRShTVkcpCi0gICAgdHlwZWRlZiBIYXNoTWFwPEZpbHRlck9wZXJhdGlvbiosIFJl
ZlB0cjxXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlPj4gUGVuZGluZ1NWR0RvY3VtZW50TWFwOwor
ICAgIHR5cGVkZWYgSGFzaFNldDxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSo+IFBlbmRpbmdT
VkdEb2N1bWVudFNldDsKICNlbmRpZgogCiAgICAgY2xhc3MgU3RhdGUgewpAQCAtNDMyLDcgKzQz
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBhcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0
eWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlOyB9
CiAgICAgICAgIFBlbmRpbmdJbWFnZVByb3BlcnR5TWFwJiBwZW5kaW5nSW1hZ2VQcm9wZXJ0aWVz
KCkgeyByZXR1cm4gbV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzOyB9CiAjaWYgRU5BQkxFKENTU19G
SUxURVJTKSAmJiBFTkFCTEUoU1ZHKQotICAgICAgICBQZW5kaW5nU1ZHRG9jdW1lbnRNYXAmIHBl
bmRpbmdTVkdEb2N1bWVudHMoKSB7IHJldHVybiBtX3BlbmRpbmdTVkdEb2N1bWVudHM7IH0KKyAg
ICAgICAgUGVuZGluZ1NWR0RvY3VtZW50U2V0JiBwZW5kaW5nU1ZHRG9jdW1lbnRzKCkgeyByZXR1
cm4gbV9wZW5kaW5nU1ZHRG9jdW1lbnRzOyB9CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NIQURF
UlMpCiAgICAgICAgIHZvaWQgc2V0SGFzUGVuZGluZ1NoYWRlcnMoYm9vbCBoYXNQZW5kaW5nU2hh
ZGVycykgeyBtX2hhc1BlbmRpbmdTaGFkZXJzID0gaGFzUGVuZGluZ1NoYWRlcnM7IH0KQEAgLTQ4
Niw3ICs0ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9oYXNQZW5kaW5nU2hhZGVyczsK
ICNlbmRpZgogI2lmIEVOQUJMRShDU1NfRklMVEVSUykgJiYgRU5BQkxFKFNWRykKLSAgICAgICAg
UGVuZGluZ1NWR0RvY3VtZW50TWFwIG1fcGVuZGluZ1NWR0RvY3VtZW50czsKKyAgICAgICAgUGVu
ZGluZ1NWR0RvY3VtZW50U2V0IG1fcGVuZGluZ1NWR0RvY3VtZW50czsKICNlbmRpZgogICAgICAg
ICBDU1NWYWx1ZSogbV9saW5lSGVpZ2h0VmFsdWU7CiAgICAgICAgIGJvb2wgbV9mb250RGlydHk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlLmNwcAppbmRleCA3M2MyOGNmLi5lNGRhNWY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVy
ZW5jZS5jcHAKQEAgLTI3LDIwICsyNywzOCBAQAogI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50
UmVmZXJlbmNlLmgiCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0K
KyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgogI2luY2x1ZGUgIkNhY2hlZFNW
R0RvY3VtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2U6OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKENhY2hlZFNWR0RvY3VtZW50KiBk
b2N1bWVudCkKLSAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCitDYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiB1cmwpCisg
ICAgOiBtX3VybCh1cmwpCisgICAgLCBtX2RvY3VtZW50KDApCisgICAgLCBtX2xvYWRSZXF1ZXN0
ZWQoZmFsc2UpCiB7Ci0gICAgbV9kb2N1bWVudC0+YWRkQ2xpZW50KHRoaXMpOwogfQogCiBDYWNo
ZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6fkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKCkKIHsK
LSAgICBtX2RvY3VtZW50LT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgaWYgKG1fbG9hZFJlcXVl
c3RlZCkKKyAgICAgICAgbV9kb2N1bWVudC0+cmVtb3ZlQ2xpZW50KHRoaXMpOworfQorCit2b2lk
IENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBs
b2FkZXIpCit7CisgICAgQVNTRVJUKGxvYWRlcik7CisgICAgaWYgKG1fbG9hZFJlcXVlc3RlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0KGxvYWRlci0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobV91cmwpKSk7Cisg
ICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygp
LmNzcyk7CisgICAgbV9kb2N1bWVudCA9IGxvYWRlci0+cmVxdWVzdFNWR0RvY3VtZW50KHJlcXVl
c3QpOworICAgIG1fZG9jdW1lbnQtPmFkZENsaWVudCh0aGlzKTsKKyAgICBtX2xvYWRSZXF1ZXN0
ZWQgPSB0cnVlOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oCmluZGV4IGNkOTcwMTIuLjNhYTQzYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZS5oCkBAIC0yNywyMiArMjcsMzUgQEAKICNkZWZpbmUgQ2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2VfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKENTU19GSUxU
RVJTKQotCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNo
ZWRTVkdEb2N1bWVudENsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFNWR0RvY3VtZW50OworY2xhc3Mg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAKIGNsYXNzIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
IDogcHVibGljIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBDYWNoZWRT
VkdEb2N1bWVudFJlZmVyZW5jZShDYWNoZWRTVkdEb2N1bWVudCopOworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIHVybCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2U+KG5ldyBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSh1cmwpKTsK
KyAgICB9CisKICAgICB2aXJ0dWFsIH5DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpOworCisg
ICAgdm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKik7CisgICAgYm9vbCBsb2FkUmVxdWVz
dGVkKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkUmVxdWVzdGVkOyB9CisKICAgICBDYWNoZWRTVkdE
b2N1bWVudCogZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CiAKIHByaXZh
dGU6CisgICAgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoY29uc3QgU3RyaW5nJik7CisKKyAg
ICBTdHJpbmcgbV91cmw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU1ZHRG9jdW1l
bnQ+IG1fZG9jdW1lbnQ7CisgICAgYm9vbCBtX2xvYWRSZXF1ZXN0ZWQ7CiB9OwogCiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb24uY3BwCmluZGV4IDEyNTNkMmIuLjIwNTQwNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5jcHAKQEAgLTQ4LDkgKzQ4LDEwIEBAIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6
flJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbigpCiB9CiAKICNpZiBFTkFCTEUoU1ZHKQotdm9pZCBS
ZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OnNldENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKFBh
c3NPd25QdHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+IGNhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlKQorQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UqIFJlZmVyZW5jZUZpbHRlck9wZXJh
dGlvbjo6Y3JlYXRlQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKQogewotICAgIG1fY2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBjYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTsKKyAgICBt
X2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlID0gQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6
OmNyZWF0ZShtX3VybCk7CisgICAgcmV0dXJuIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2Uu
Z2V0KCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggNjQxODA4NS4uYzdm
MGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKFNWRykKICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSogY2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFNWR0RvY3VtZW50
UmVmZXJlbmNlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZShQYXNzT3duUHRyPENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlPik7CisgICAgQ2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2UqIGNyZWF0ZUNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKCk7CiAj
ZW5kaWYKIAogICAgIEZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9maWx0ZXJFZmZlY3QuZ2V0KCk7IH0KQEAgLTE4Niw3ICsxODYsNyBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBtX3VybDsKICAgICBTdHJpbmcgbV9mcmFnbWVudDsKICNpZiBFTkFCTEUoU1ZHKQot
ICAgIE93blB0cjxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZT4gbV9jYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVu
Y2U+IG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U7CiAjZW5kaWYKICAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBtX2ZpbHRlckVmZmVjdDsKIH07Cg==
</data>
<flag name="review"
          id="245002"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221161</attachid>
            <date>2014-01-14 07:20:27 -0800</date>
            <delta_ts>2014-01-14 07:54:13 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>cachedSVGDocument.patch</filename>
            <type>text/plain</type>
            <size>10176</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ZGYxYzJiLi5lYjFkZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTQtMDEtMTQgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAg
ICBNYWtlIENhY2hlZFNWR0RvY3VtZW50IGluZGVwZW5kZW50IG9mIENTUyBGaWx0ZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYxMzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBDbGVhbi11cCB0aGUg
cGVuZGluZ1NWR0RvY3VtZW50cyBjb2RlIGluIFN0eWxlUmVzb2x2ZXIuCisgICAgICAgIENhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlIGlzIHJlc3BvbnNpYmxlIGZvciByZXF1ZXN0aW5nIHRoZQor
ICAgICAgICBTVkcgZG9jdW1lbnQgaW5zdGVhZCBvZiBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVl
LgorICAgICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSBjYW4gYmUgdXNlZCBieSBvdGhl
ciBTVkcgcmVzb3VyY2UgbGlrZQorICAgICAgICBjbGlwLXBhdGggYW5kIG1hc2sgbm93IHNvIHRo
YXQgdGhlc2UgbWF5IGxvYWQgZXh0ZXJuYWwgcmVzb3VyY2VzCisgICAgICAgIGFzIHdlbGwuCisg
ICAgICAgIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUgZG9lcyBub3QgcHJvdmlkZSBhbnkgZnVy
dGhlciB2YWx1ZQorICAgICAgICBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHBhdGNo
LgorCisgICAgICAgIFJlZmFjdG9yaW5nLCBubyBuZXcgdGVzdCBjYXNlcy4KKworICAgICAgICAq
IGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OmxvYWRQZW5kaW5nU1ZHRG9jdW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
Lmg6IFJlcGxhY2UgTWFwIHdpdGggYSBTZXQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpTdGF0ZTo6cGVuZGluZ1NWR0RvY3VtZW50cyk6IFVzZSB0aGUgU2V0IGZyb20gbm93IG9u
LgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6Q2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2U6On5DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6bG9hZCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmg6IElzIHJlc3BvbnNpYmxlIGZvciAKKyAg
ICAgICAgICAgIHJlcXVlc3RpbmcgdGhlIFNWRyBkb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmxvYWRSZXF1ZXN0ZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlQ2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3Bl
cmF0aW9uLmg6CisKIDIwMTQtMDEtMTMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IHRoZSBidWlsZCBtb3JlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCmluZGV4IDA2NGM2MzYuLjAxZDYwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKQEAgLTM0MjksMTkgKzM0MjksOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Omxv
YWRQZW5kaW5nU1ZHRG9jdW1lbnRzKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gc3RhdGUuZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpOwotICAgIGZvciAoYXV0byBpdCA9IHN0YXRlLnBlbmRpbmdTVkdE
b2N1bWVudHMoKS5iZWdpbigpLCBlbmQgPSBzdGF0ZS5wZW5kaW5nU1ZHRG9jdW1lbnRzKCkuZW5k
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVl
KiB2YWx1ZSA9IGl0LT52YWx1ZS5nZXQoKTsKLSAgICAgICAgLy8gRklYTUU6IEl0IGlzIHVuY2xl
YXIgd2h5IGl0IHNob3VsZCBiZSBudWxsLiBNYXliZSBhbiBBU1NFUlQgaW5zdGVhZD8KLSAgICAg
ICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBDYWNoZWRTVkdE
b2N1bWVudCogY2FjaGVkRG9jdW1lbnQgPSB2YWx1ZS0+bG9hZChjYWNoZWRSZXNvdXJjZUxvYWRl
cik7Ci0gICAgICAgIGlmICghY2FjaGVkRG9jdW1lbnQpCi0gICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICAvLyBTdGFzaCB0aGUgQ2FjaGVkU1ZHRG9jdW1lbnQgb24gdGhlIHJlZmVyZW5j
ZSBmaWx0ZXIuCi0gICAgICAgIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiYgcmVmZXJlbmNlRmls
dGVyID0gKnRvUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKGl0LT5rZXkpOwotICAgICAgICByZWZl
cmVuY2VGaWx0ZXIuc2V0Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoYWRvcHRQdHIobmV3IENh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGNhY2hlZERvY3VtZW50KSkpOwotICAgIH0KKyAgICBm
b3IgKGF1dG8gcGVuZGluZ0RvY3VtZW50IDogc3RhdGUucGVuZGluZ1NWR0RvY3VtZW50cygpKQor
ICAgICAgICBwZW5kaW5nRG9jdW1lbnQtPmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwogICAg
IHN0YXRlLnBlbmRpbmdTVkdEb2N1bWVudHMoKS5jbGVhcigpOwogfQogI2VuZGlmCkBAIC0zODM3
LDEyICszODI2LDggQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25z
KENTU1ZhbHVlKiBpblZhbHVlLCBGaWx0ZXJPcGVyYXRpb25zJgogICAgICAgICAgICAgVVJMIHVy
bCA9IG1fc3RhdGUuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdmdEb2N1bWVudFZhbHVlLT51cmwo
KSk7CiAKICAgICAgICAgICAgIFJlZlB0cjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+IG9wZXJh
dGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHN2Z0RvY3VtZW50VmFsdWUt
PnVybCgpLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCksIG9wZXJhdGlvblR5cGUpOwotICAgICAg
ICAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNFeHRlcm5hbFVSSVJlZmVyZW5jZShzdmdEb2N1
bWVudFZhbHVlLT51cmwoKSwgbV9zdGF0ZS5kb2N1bWVudCgpKSkgewotICAgICAgICAgICAgICAg
IGlmICghc3ZnRG9jdW1lbnRWYWx1ZS0+bG9hZFJlcXVlc3RlZCgpKQotICAgICAgICAgICAgICAg
ICAgICBtX3N0YXRlLnBlbmRpbmdTVkdEb2N1bWVudHMoKS5zZXQob3BlcmF0aW9uLmdldCgpLCBz
dmdEb2N1bWVudFZhbHVlKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzdmdEb2N1bWVudFZh
bHVlLT5jYWNoZWRTVkdEb2N1bWVudCgpKQotICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24t
PnNldENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGFkb3B0UHRyKG5ldyBDYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZShzdmdEb2N1bWVudFZhbHVlLT5jYWNoZWRTVkdEb2N1bWVudCgpKSkpOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNFeHRlcm5h
bFVSSVJlZmVyZW5jZShzdmdEb2N1bWVudFZhbHVlLT51cmwoKSwgbV9zdGF0ZS5kb2N1bWVudCgp
KSkKKyAgICAgICAgICAgICAgICBtX3N0YXRlLnBlbmRpbmdTVkdEb2N1bWVudHMoKS5hZGQob3Bl
cmF0aW9uLT5jcmVhdGVDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpKTsKICAgICAgICAgICAg
IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChvcGVyYXRpb24pOwogI2VuZGlmCiAgICAg
ICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDc5NzYw
ZjAuLjFhMDMzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMzc5LDcgKzM3
OSw3IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPENTU1Byb3BlcnR5
SUQsIFJlZlB0cjxDU1NWYWx1ZT4+IFBlbmRpbmdJbWFnZVByb3BlcnR5TWFwOwogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykgJiYgRU5BQkxFKFNWRykKLSAgICB0eXBlZGVmIEhhc2hNYXA8RmlsdGVy
T3BlcmF0aW9uKiwgUmVmUHRyPFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWU+PiBQZW5kaW5nU1ZH
RG9jdW1lbnRNYXA7CisgICAgdHlwZWRlZiBIYXNoU2V0PENhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlKj4gUGVuZGluZ1NWR0RvY3VtZW50U2V0OwogI2VuZGlmCiAKICAgICBjbGFzcyBTdGF0ZSB7
CkBAIC00MzIsNyArNDMyLDcgQEAgcHVibGljOgogICAgICAgICBib29sIGFwcGx5UHJvcGVydHlU
b1Zpc2l0ZWRMaW5rU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2FwcGx5UHJvcGVydHlUb1Zpc2l0
ZWRMaW5rU3R5bGU7IH0KICAgICAgICAgUGVuZGluZ0ltYWdlUHJvcGVydHlNYXAmIHBlbmRpbmdJ
bWFnZVByb3BlcnRpZXMoKSB7IHJldHVybiBtX3BlbmRpbmdJbWFnZVByb3BlcnRpZXM7IH0KICNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpICYmIEVOQUJMRShTVkcpCi0gICAgICAgIFBlbmRpbmdTVkdE
b2N1bWVudE1hcCYgcGVuZGluZ1NWR0RvY3VtZW50cygpIHsgcmV0dXJuIG1fcGVuZGluZ1NWR0Rv
Y3VtZW50czsgfQorICAgICAgICBQZW5kaW5nU1ZHRG9jdW1lbnRTZXQmIHBlbmRpbmdTVkdEb2N1
bWVudHMoKSB7IHJldHVybiBtX3BlbmRpbmdTVkdEb2N1bWVudHM7IH0KICNlbmRpZgogI2lmIEVO
QUJMRShDU1NfU0hBREVSUykKICAgICAgICAgdm9pZCBzZXRIYXNQZW5kaW5nU2hhZGVycyhib29s
IGhhc1BlbmRpbmdTaGFkZXJzKSB7IG1faGFzUGVuZGluZ1NoYWRlcnMgPSBoYXNQZW5kaW5nU2hh
ZGVyczsgfQpAQCAtNDg2LDcgKzQ4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBtX2hhc1Bl
bmRpbmdTaGFkZXJzOwogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKSAmJiBFTkFCTEUo
U1ZHKQotICAgICAgICBQZW5kaW5nU1ZHRG9jdW1lbnRNYXAgbV9wZW5kaW5nU1ZHRG9jdW1lbnRz
OworICAgICAgICBQZW5kaW5nU1ZHRG9jdW1lbnRTZXQgbV9wZW5kaW5nU1ZHRG9jdW1lbnRzOwog
I2VuZGlmCiAgICAgICAgIENTU1ZhbHVlKiBtX2xpbmVIZWlnaHRWYWx1ZTsKICAgICAgICAgYm9v
bCBtX2ZvbnREaXJ0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwCmluZGV4IDczYzI4Y2YuLmU0ZGE1ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50UmVmZXJlbmNlLmNwcApAQCAtMjcsMjAgKzI3LDM4IEBACiAjaW5jbHVkZSAiQ2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCIKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShD
U1NfRklMVEVSUykKLQorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVl
c3QuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DYWNo
ZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoQ2FjaGVk
U1ZHRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKK0NhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZShjb25zdCBT
dHJpbmcmIHVybCkKKyAgICA6IG1fdXJsKHVybCkKKyAgICAsIG1fZG9jdW1lbnQoMCkKKyAgICAs
IG1fbG9hZFJlcXVlc3RlZChmYWxzZSkKIHsKLSAgICBtX2RvY3VtZW50LT5hZGRDbGllbnQodGhp
cyk7CiB9CiAKIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjp+Q2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2UoKQogewotICAgIG1fZG9jdW1lbnQtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBp
ZiAobV9sb2FkUmVxdWVzdGVkKQorICAgICAgICBtX2RvY3VtZW50LT5yZW1vdmVDbGllbnQodGhp
cyk7Cit9CisKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmxvYWQoQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqIGxvYWRlcikKK3sKKyAgICBBU1NFUlQobG9hZGVyKTsKKyAgICBpZiAobV9s
b2FkUmVxdWVzdGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVS
TChtX3VybCkpKTsKKyAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNoZWRSZXNvdXJjZVJlcXVl
c3RJbml0aWF0b3JzKCkuY3NzKTsKKyAgICBtX2RvY3VtZW50ID0gbG9hZGVyLT5yZXF1ZXN0U1ZH
RG9jdW1lbnQocmVxdWVzdCk7CisgICAgbV9kb2N1bWVudC0+YWRkQ2xpZW50KHRoaXMpOworICAg
IG1fbG9hZFJlcXVlc3RlZCA9IHRydWU7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKaW5kZXggY2Q5
NzAxMi4uYTI5N2FiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKQEAgLTI3LDIyICsyNywzMCBAQAogI2Rl
ZmluZSBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZV9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCi0KICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgog
I2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50Q2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkU1ZHRG9j
dW1lbnQ7CitjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIAogY2xhc3MgQ2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UgOiBwdWJsaWMgQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQgewogcHVibGlj
OgotICAgIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKENhY2hlZFNWR0RvY3VtZW50Kik7Cisg
ICAgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoY29uc3QgU3RyaW5nJik7CisKICAgICB2aXJ0
dWFsIH5DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSgpOworCisgICAgdm9pZCBsb2FkKENhY2hl
ZFJlc291cmNlTG9hZGVyKik7CisgICAgYm9vbCBsb2FkUmVxdWVzdGVkKCkgY29uc3QgeyByZXR1
cm4gbV9sb2FkUmVxdWVzdGVkOyB9CisKICAgICBDYWNoZWRTVkdEb2N1bWVudCogZG9jdW1lbnQo
KSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CiAKIHByaXZhdGU6CisgICAgU3RyaW5nIG1f
dXJsOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNWR0RvY3VtZW50PiBtX2RvY3Vt
ZW50OworICAgIGJvb2wgbV9sb2FkUmVxdWVzdGVkOwogfTsKIAogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9uLmNwcAppbmRleCAxMjUzZDJiLi5jOTkwNjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3Bw
CkBAIC00OCw5ICs0OCwxMCBAQCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246On5SZWZlcmVuY2VG
aWx0ZXJPcGVyYXRpb24oKQogfQogCiAjaWYgRU5BQkxFKFNWRykKLXZvaWQgUmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uOjpzZXRDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZShQYXNzT3duUHRyPENh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlPiBjYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSkKK0Nh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKiBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0
ZUNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKCkKIHsKLSAgICBtX2NhY2hlZFNWR0RvY3VtZW50
UmVmZXJlbmNlID0gY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U7CisgICAgbV9jYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZl
cmVuY2U+KG1fdXJsKTsKKyAgICByZXR1cm4gbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5n
ZXQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA2NDE4MDg1Li5jN2Yw
YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoU1ZHKQogICAgIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKiBjYWNoZWRT
VkdEb2N1bWVudFJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2UuZ2V0KCk7IH0KLSAgICB2b2lkIHNldENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
KFBhc3NPd25QdHI8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+KTsKKyAgICBDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZSogY3JlYXRlQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKTsKICNl
bmRpZgogCiAgICAgRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoKSBjb25zdCB7IHJldHVybiBt
X2ZpbHRlckVmZmVjdC5nZXQoKTsgfQpAQCAtMTg2LDcgKzE4Niw3IEBAIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fdXJsOwogICAgIFN0cmluZyBtX2ZyYWdtZW50OwogI2lmIEVOQUJMRShTVkcpCi0g
ICAgT3duUHRyPENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlPiBtX2NhY2hlZFNWR0RvY3VtZW50
UmVmZXJlbmNlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZT4gbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTsKICNlbmRpZgogICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IG1fZmlsdGVyRWZmZWN0OwogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>