<?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>80054</bug_id>
          
          <creation_ts>2012-03-01 14:56:40 -0800</creation_ts>
          <short_desc>[chromium] Expose compositor filters to Aura through WebLayer</short_desc>
          <delta_ts>2012-04-16 22:29:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>80046</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>abarth</cc>
    
    <cc>backer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>reveman</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>568954</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-01 14:56:40 -0800</bug_when>
    <thetext>[chromium] Expose compositor filters to Aura through WebLayer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568956</commentid>
    <comment_count>1</comment_count>
      <attachid>129754</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-01 14:59:06 -0800</bug_when>
    <thetext>Created attachment 129754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594087</commentid>
    <comment_count>2</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-02 17:48:24 -0700</bug_when>
    <thetext>note to self: add comment on setBackgroundFilters() saying you can only do this for layers that render into the root layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602159</commentid>
    <comment_count>3</comment_count>
      <attachid>137097</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-13 09:49:42 -0700</bug_when>
    <thetext>Created attachment 137097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602161</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-13 09:53:06 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602263</commentid>
    <comment_count>5</comment_count>
      <attachid>137097</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-13 11:25:43 -0700</bug_when>
    <thetext>Comment on attachment 137097
Patch

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

&gt; Source/Platform/chromium/public/WebFilterOperations.h:38
&gt; +// Simple wrapper around WebCore::FilterOperations. There are more (complex) operations possible
&gt; +// in WebCore::FilterOperation subclasses, and this API should evolve when they are desired.

People using the WebKit API shouldn&apos;t need to know or care about WebCore, so API comments should describe what this class is and not refer to WebCore concepts.

&gt; Source/Platform/chromium/public/WebFilterOperations.h:54
&gt; +    void setSepia(double amount) { m_sepia = amount; }

Should this class just be a struct? Do we expect it to grow any interesting functionality, or just be a data bag?

&gt; Source/Platform/chromium/public/WebLayer.h:99
&gt; +    WEBKIT_EXPORT void setFilters(const WebFilterOperations&amp;);

How do you clear the filters? setFilters() with a default-initialized WebFilterOperations?

&gt; Source/Platform/chromium/public/WebLayer.h:102
&gt; +    // filtered layer are capable of doing. CCLayerTreeHostCommon.cpp determines

The user of the public API shouldn&apos;t need to know or care about implementation details like CCLayerTreeHostCommon. Here you should describe what the restrictions are in terms of public API concepts.

What happens if someone calls this API on a layer that doesn&apos;t meet this criteria? Do we just silently drop their filters on the floor?

&gt; Source/WebKit/chromium/public/platform/WebFilterOperations.h:26
&gt; +#include &quot;../../../../Platform/chromium/public/WebFilterOperations.h&quot;

You don&apos;t need this. We only add forwarding headers into WebKit/chromium/public/** when:
1.) There is already existing code in chromium that #includes the header via this path
2.) The API is logically used as part of the client API and the platform API

Neither apply here

&gt; Source/WebKit/chromium/src/WebFilterOperations.cpp:27
&gt; +#include &quot;platform/WebFilterOperations.h&quot;

This file really belongs in Source/WebCore/platform/chromium/support/ - that&apos;s where implementations of the Platform API that depend only on WebCore concepts (and not existing Source/WebKit/chromium/src concepts) should go

#include platform API headers with the syntax &lt;public/WebFilterOperations.h&gt;

&gt; Source/WebKit/chromium/src/WebFilterOperations.cpp:38
&gt; +    if (m_sepia)
&gt; +        filters.operations().append(BasicColorMatrixFilterOperation::create(m_sepia, FilterOperation::SEPIA));

Does the order in which the filters apply here matter? Can you document this behavior in the WebFilterOperations header?

&gt; Source/WebKit/chromium/src/WebLayer.cpp:29
&gt; +#include &quot;platform/WebFilterOperations.h&quot;

include Platform API headers as &lt;public/WebFilterOperations.h&gt; (the other #includes in here aren&apos;t all normative, but I plan to fix them at some point)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602493</commentid>
    <comment_count>6</comment_count>
      <attachid>137172</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-13 16:12:50 -0700</bug_when>
    <thetext>Created attachment 137172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602565</commentid>
    <comment_count>7</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-13 17:58:01 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=137097&amp;action=review

&gt;&gt; Source/Platform/chromium/public/WebFilterOperations.h:38
&gt;&gt; +// in WebCore::FilterOperation subclasses, and this API should evolve when they are desired.
&gt; 
&gt; People using the WebKit API shouldn&apos;t need to know or care about WebCore, so API comments should describe what this class is and not refer to WebCore concepts.

done.

&gt;&gt; Source/Platform/chromium/public/WebFilterOperations.h:54
&gt;&gt; +    void setSepia(double amount) { m_sepia = amount; }
&gt; 
&gt; Should this class just be a struct? Do we expect it to grow any interesting functionality, or just be a data bag?

It puts the filters in an arbitrary order right now. If you are just doing a blur that&apos;s fine, but I&apos;m imagining in the future the UI people might want something a bit better here.

&gt;&gt; Source/Platform/chromium/public/WebLayer.h:99
&gt;&gt; +    WEBKIT_EXPORT void setFilters(const WebFilterOperations&amp;);
&gt; 
&gt; How do you clear the filters? setFilters() with a default-initialized WebFilterOperations?

Yes. Comment added.

&gt;&gt; Source/Platform/chromium/public/WebLayer.h:102
&gt;&gt; +    // filtered layer are capable of doing. CCLayerTreeHostCommon.cpp determines
&gt; 
&gt; The user of the public API shouldn&apos;t need to know or care about implementation details like CCLayerTreeHostCommon. Here you should describe what the restrictions are in terms of public API concepts.
&gt; 
&gt; What happens if someone calls this API on a layer that doesn&apos;t meet this criteria? Do we just silently drop their filters on the floor?

Yes, we just don&apos;t apply the filters. I didn&apos;t want to duplicate the code logic of CCLTHC here as the criteria could change over time. Modified comment to explain this in a more general way and say that we drop the filters.

&gt;&gt; Source/WebKit/chromium/public/platform/WebFilterOperations.h:26
&gt;&gt; +#include &quot;../../../../Platform/chromium/public/WebFilterOperations.h&quot;
&gt; 
&gt; You don&apos;t need this. We only add forwarding headers into WebKit/chromium/public/** when:
&gt; 1.) There is already existing code in chromium that #includes the header via this path
&gt; 2.) The API is logically used as part of the client API and the platform API
&gt; 
&gt; Neither apply here

Thanks, done.

&gt;&gt; Source/WebKit/chromium/src/WebFilterOperations.cpp:27
&gt;&gt; +#include &quot;platform/WebFilterOperations.h&quot;
&gt; 
&gt; This file really belongs in Source/WebCore/platform/chromium/support/ - that&apos;s where implementations of the Platform API that depend only on WebCore concepts (and not existing Source/WebKit/chromium/src concepts) should go
&gt; 
&gt; #include platform API headers with the syntax &lt;public/WebFilterOperations.h&gt;

done.

&gt;&gt; Source/WebKit/chromium/src/WebFilterOperations.cpp:38
&gt;&gt; +        filters.operations().append(BasicColorMatrixFilterOperation::create(m_sepia, FilterOperation::SEPIA));
&gt; 
&gt; Does the order in which the filters apply here matter? Can you document this behavior in the WebFilterOperations header?

Yeh it&apos;s arbitrary and I expect this to possibly matter in the distant future, but not now.

Done.

&gt;&gt; Source/WebKit/chromium/src/WebLayer.cpp:29
&gt;&gt; +#include &quot;platform/WebFilterOperations.h&quot;
&gt; 
&gt; include Platform API headers as &lt;public/WebFilterOperations.h&gt; (the other #includes in here aren&apos;t all normative, but I plan to fix them at some point)

k</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603344</commentid>
    <comment_count>8</comment_count>
      <attachid>137172</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-16 12:40:03 -0700</bug_when>
    <thetext>Comment on attachment 137172
Patch

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

&gt; Source/Platform/chromium/public/WebFilterOperations.h:38
&gt; +// A simple set of filter operations. This implementation does not currently
&gt; +// support defining an order for the operations.

This seems unnecessarily restrictive.  I think having WebFilterOperations be a list of WebFilterOperation instances would make a lot more sense and be more powerful.  Then a caller would only have to construct the WebFilterOperation instances that make sense for their use and add them to a WebFilterOperations set to pass to the layer.  You would only have to define the WebFilterOperation types that you need and WebFilterOperations could still convert easily to a WebCore::FilterOperations.

&gt; Source/Platform/chromium/public/WebLayer.h:102
&gt; +    // Background filters are only possible on layers that are drawn directly

nit: newline between function and comments for the next function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603372</commentid>
    <comment_count>9</comment_count>
      <attachid>137172</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-16 13:13:36 -0700</bug_when>
    <thetext>Comment on attachment 137172
Patch

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

&gt;&gt; Source/Platform/chromium/public/WebFilterOperations.h:38
&gt;&gt; +// support defining an order for the operations.
&gt; 
&gt; This seems unnecessarily restrictive.  I think having WebFilterOperations be a list of WebFilterOperation instances would make a lot more sense and be more powerful.  Then a caller would only have to construct the WebFilterOperation instances that make sense for their use and add them to a WebFilterOperations set to pass to the layer.  You would only have to define the WebFilterOperation types that you need and WebFilterOperations could still convert easily to a WebCore::FilterOperations.

I agree. I did this because WebVector is essentially read-only. You create it from a WTF::Vector, and then you can only read the WebVector. Do you want me to implement a better WebVector or do you have some other idea of what I could do here?

&gt;&gt; Source/Platform/chromium/public/WebLayer.h:102
&gt;&gt; +    // Background filters are only possible on layers that are drawn directly
&gt; 
&gt; nit: newline between function and comments for the next function

k</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603380</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-16 13:23:16 -0700</bug_when>
    <thetext>You could add API to WebFilterOperations that allowed you to append a WebFilterOperation and then let the implementation figure out how to assemble that into a data structure for marshalling to a WebCore::FilterOperations.  You don&apos;t have to provide the user of the API direct access to the WebFilterOperations&apos; internal buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603384</commentid>
    <comment_count>11</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-16 13:28:33 -0700</bug_when>
    <thetext>Can I stick an internal buffer on WebFilterOperations that is not a WebVector? Maybe by storing a WTF::Vector* in a void* member variable of the class?

If I have to append to WebVector it means implementing append to an array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603389</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-16 13:38:04 -0700</bug_when>
    <thetext>You can have a backing that&apos;s opaque in the API that is whatever you like.  You could even have the backing be a WebCore::FilterOperations if you want.  Many WebKit APIs use the pattern of having an m_private pointer to internal data that is not exposed to the users of the API directly but is used to keep storage for the implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603599</commentid>
    <comment_count>13</comment_count>
      <attachid>137439</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-16 17:16:41 -0700</bug_when>
    <thetext>Created attachment 137439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603600</commentid>
    <comment_count>14</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-16 17:17:22 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; You can have a backing that&apos;s opaque in the API that is whatever you like.  You could even have the backing be a WebCore::FilterOperations if you want.  Many WebKit APIs use the pattern of having an m_private pointer to internal data that is not exposed to the users of the API directly but is used to keep storage for the implementation.

Thanks for this. We have something now that wraps WebCore::FilterOperations without introducing miles of boilerplate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603622</commentid>
    <comment_count>15</comment_count>
      <attachid>137439</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-16 17:42:21 -0700</bug_when>
    <thetext>Comment on attachment 137439
Patch

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

This looks much better.  I think we need another round, though - getting the dependencies, etc, set up just right for publicly exposed API is tricky and requires some extra care.

&gt; Source/Platform/chromium/public/WebFilterOperation.h:33
&gt; +#include &quot;FilterOperation.h&quot;

this #include is unfortunate - it means that anything that sets WEBKIT_IMPLEMENTATION and #includes this file has to have WebCore headers on the include path, even if it shouldn&apos;t logically see most of WebCore (for instance if it&apos;s a Platform implementation in Source/Platform/chromium/src).  I can&apos;t really tell why it&apos;s here - it seems like everything in this header should compile fine with just a forward declaration of FilterOperation, right?

&gt; Source/Platform/chromium/public/WebFilterOperation.h:50
&gt; +class WebBasicColorMatrixFilterOperation : public WebFilterOperation {

Yes, this is exactly what I had in mind.  However, I think that these operations should all be structs with exposed members.  For users of the public API (i.e. people who don&apos;t know or care about stuff inside #if WEBKIT_IMPLEMENTATION) each of these operation instances is just a dumb data bag, and I imagine they&apos;ll stay that way.

&gt; Source/Platform/chromium/public/WebFilterOperation.h:52
&gt; +    enum Type {

Please see the Chromium WebKit API guide for enum naming:
http://trac.webkit.org/wiki/ChromiumWebKitAPI#Enums

I know it&apos;s not really consistent with how we do enums anywhere else, but we should stick to it.  We should add the checks to AssertMatchingEnums.cpp as the wiki page suggests - doing that will let you simplify the implementation a bit

&gt; Source/Platform/chromium/public/WebFilterOperations.h:33
&gt; +#include &quot;FilterOperations.h&quot;

We try to avoid #include&apos;ing files in WebCore directly from Platform/chromium/public headers wherever possible, it creates some awkward include path situations.

You could avoid this by exposing the WebCore::FilterOperations getter by reference or pointer instead of by value so that the existing forward declaration is sufficient.

&gt; Source/WebCore/platform/chromium/support/WebFilterOperation.cpp:38
&gt; +    case Grayscale:
&gt; +        return BasicColorMatrixFilterOperation::create(m_amount, FilterOperation::GRAYSCALE);

if you make the enum values match (see earlier comment) then you won&apos;t need these somewhat verbose switch blocks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603645</commentid>
    <comment_count>16</comment_count>
      <attachid>137439</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-16 17:55:07 -0700</bug_when>
    <thetext>Comment on attachment 137439
Patch

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

That&apos;s fine, thanks for the fast review :)

&gt;&gt; Source/Platform/chromium/public/WebFilterOperation.h:33
&gt;&gt; +#include &quot;FilterOperation.h&quot;
&gt; 
&gt; this #include is unfortunate - it means that anything that sets WEBKIT_IMPLEMENTATION and #includes this file has to have WebCore headers on the include path, even if it shouldn&apos;t logically see most of WebCore (for instance if it&apos;s a Platform implementation in Source/Platform/chromium/src).  I can&apos;t really tell why it&apos;s here - it seems like everything in this header should compile fine with just a forward declaration of FilterOperation, right?

Oh, yes.

&gt;&gt; Source/Platform/chromium/public/WebFilterOperation.h:52
&gt;&gt; +    enum Type {
&gt; 
&gt; Please see the Chromium WebKit API guide for enum naming:
&gt; http://trac.webkit.org/wiki/ChromiumWebKitAPI#Enums
&gt; 
&gt; I know it&apos;s not really consistent with how we do enums anywhere else, but we should stick to it.  We should add the checks to AssertMatchingEnums.cpp as the wiki page suggests - doing that will let you simplify the implementation a bit

Should the enum still live inside the class? ie. WebBasicColorMatrixFilterOperation::WebBasicColorMatrixFilterOperationGrayscale?

&gt;&gt; Source/Platform/chromium/public/WebFilterOperations.h:33
&gt;&gt; +#include &quot;FilterOperations.h&quot;
&gt; 
&gt; We try to avoid #include&apos;ing files in WebCore directly from Platform/chromium/public headers wherever possible, it creates some awkward include path situations.
&gt; 
&gt; You could avoid this by exposing the WebCore::FilterOperations getter by reference or pointer instead of by value so that the existing forward declaration is sufficient.

k</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603666</commentid>
    <comment_count>17</comment_count>
      <attachid>137439</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-16 18:28:10 -0700</bug_when>
    <thetext>Comment on attachment 137439
Patch

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

&gt;&gt; Source/Platform/chromium/public/WebFilterOperation.h:50
&gt;&gt; +class WebBasicColorMatrixFilterOperation : public WebFilterOperation {
&gt; 
&gt; Yes, this is exactly what I had in mind.  However, I think that these operations should all be structs with exposed members.  For users of the public API (i.e. people who don&apos;t know or care about stuff inside #if WEBKIT_IMPLEMENTATION) each of these operation instances is just a dumb data bag, and I imagine they&apos;ll stay that way.

done.

&gt;&gt;&gt; Source/Platform/chromium/public/WebFilterOperation.h:52
&gt;&gt;&gt; +    enum Type {
&gt;&gt; 
&gt;&gt; Please see the Chromium WebKit API guide for enum naming:
&gt;&gt; http://trac.webkit.org/wiki/ChromiumWebKitAPI#Enums
&gt;&gt; 
&gt;&gt; I know it&apos;s not really consistent with how we do enums anywhere else, but we should stick to it.  We should add the checks to AssertMatchingEnums.cpp as the wiki page suggests - doing that will let you simplify the implementation a bit
&gt; 
&gt; Should the enum still live inside the class? ie. WebBasicColorMatrixFilterOperation::WebBasicColorMatrixFilterOperationGrayscale?

Ok so I see lots of enums in AssertMatchingEnums.cpp that are &quot;enum WebBlahBlahFoo&quot; because they are not in a class. But I also see a lot (more than half?) that are inside a class like WebBlahBlah::Foo.

So I gather that the latter is ok, as long as everything in the Foo enum is named FooStuff, FooStuff2..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603671</commentid>
    <comment_count>18</comment_count>
      <attachid>137454</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-16 18:35:43 -0700</bug_when>
    <thetext>Created attachment 137454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603691</commentid>
    <comment_count>19</comment_count>
      <attachid>137454</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-16 19:20:43 -0700</bug_when>
    <thetext>Comment on attachment 137454
Patch

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

R=me with a few minor things to address before landing

&gt; Source/Platform/chromium/public/WebFilterOperation.h:30
&gt; +#include &quot;WebColor.h&quot;
&gt; +#include &quot;WebCommon.h&quot;

WebCommon.h should always come first (sort of like config.h in .cpp files)

&gt; Source/Platform/chromium/public/WebFilterOperation.h:96
&gt; +    WebBlurFilterOperation(int pixelRadius) : pixelRadius(pixelRadius) { }

explicit on 1-arg c&apos;tors, please

&gt; Source/Platform/chromium/public/WebLayer.h:106
&gt; +    // Clear the filters in use by passing in a newly instantiated
&gt; +    // WebFilterOperations object.
&gt; +    WEBKIT_EXPORT void setFilters(const WebFilterOperations&amp;);
&gt; +
&gt; +    // Background filters are only possible on layers that are drawn directly
&gt; +    // to the root render surface. This means if an ancestor of the background-
&gt; +    // filtered layer sets certain properties (opacity, transforms), it may
&gt; +    // conflict and hide the background filters.

Instead of just describing the exceptional cases, can you please describe what these APIs do?  setFilters is fairly obvious, but for background filter it&apos;s not really clear at all what the actual result of this is.  I think a short description would go a long way</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603702</commentid>
    <comment_count>20</comment_count>
      <attachid>137454</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-16 19:33:02 -0700</bug_when>
    <thetext>Comment on attachment 137454
Patch

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

ty

&gt;&gt; Source/Platform/chromium/public/WebFilterOperation.h:30
&gt;&gt; +#include &quot;WebCommon.h&quot;
&gt; 
&gt; WebCommon.h should always come first (sort of like config.h in .cpp files)

k

&gt;&gt; Source/Platform/chromium/public/WebFilterOperation.h:96
&gt;&gt; +    WebBlurFilterOperation(int pixelRadius) : pixelRadius(pixelRadius) { }
&gt; 
&gt; explicit on 1-arg c&apos;tors, please

oops

&gt;&gt; Source/Platform/chromium/public/WebLayer.h:106
&gt;&gt; +    // conflict and hide the background filters.
&gt; 
&gt; Instead of just describing the exceptional cases, can you please describe what these APIs do?  setFilters is fairly obvious, but for background filter it&apos;s not really clear at all what the actual result of this is.  I think a short description would go a long way

k</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603705</commentid>
    <comment_count>21</comment_count>
      <attachid>137462</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-16 19:35:34 -0700</bug_when>
    <thetext>Created attachment 137462
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603800</commentid>
    <comment_count>22</comment_count>
      <attachid>137462</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-16 22:28:52 -0700</bug_when>
    <thetext>Comment on attachment 137462
Patch for landing

Clearing flags on attachment: 137462

Committed r114343: &lt;http://trac.webkit.org/changeset/114343&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603801</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-16 22:29:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129754</attachid>
            <date>2012-03-01 14:59:06 -0800</date>
            <delta_ts>2012-04-13 09:49:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80054-20120301175904.patch</filename>
            <type>text/plain</type>
            <size>13396</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBmZjUwMDZlZDgwMjhm
NDNjMzU4NjIyZWFhN2ZmNmFjNjgxYWFlMTEwLi40MDNlODBiODg2ZmJhOGNlMjI3ZWM1ODlkMmM2
MjUwNmJhOGY2ZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wMy0wMSAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEV4cG9zZSBjb21wb3NpdG9yIGZpbHRlcnMgdG8gQXVyYSB0aHJvdWdoIFdlYkxheWVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDA1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9w
ZXJhdGlvbnM6OldlYkZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWx0
ZXJPcGVyYXRpb25zOjpzZXRTZXBpYSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJh
dGlvbnM6OnNldEdyYXlzY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlv
bnM6OnNldFNhdHVyYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6
c2V0SHVlUm90YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6c2V0
SW52ZXJ0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6c2V0QnJpZ2h0
bmVzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnM6OnNldENvbnRyYXN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6c2V0T3BhY2l0eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnM6OnNldEJsdXIpOgorICAgICAgICAq
IGNocm9taXVtL3B1YmxpYy9XZWJMYXllci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYkxheWVyKToKKwogMjAxMi0wMi0yNCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gV2ViS2l0OjpzZXRDb2xvck5hbWVzIGlzIGEg
Y2xpZW50IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhNmU5NGRmODk0MmUzOWRm
Nzg1YWQ3Mzc5OThjYzM0MWY1ZDM5NjdlLi45MDg4OTIzNTc4NGNhZTM4YTM3MWQyNDQzZjI4NmM0
ZWEwNjYzZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDEyLTAzLTAxICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtjaHJvbWl1bV0gRXhwb3NlIGNvbXBvc2l0b3IgZmlsdGVycyB0byBBdXJhIHRocm91Z2ggV2Vi
TGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgw
MDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJGaWx0ZXJPcGVyYXRpb25z
Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25z
Ojp0b0ZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAqIHNyYy9XZWJMYXllci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVyOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisKIDIwMTIt
MDItMjYgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
TW92ZSBDaHJvbWVDbGllbnQ6OnNob3dDb250ZXh0TWVudSgpIHRvIENvbnRleHRNZW51Q2xpZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbHRlck9w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsdGVyT3Bl
cmF0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzZWQ4NTk2NzliZDg2MDFiNGY3MjZmOTA2NmJjNThkMzQ2
ZDk5NTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkZpbHRlck9wZXJhdGlvbnMuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJGaWx0ZXJPcGVyYXRpb25zX2gKKyNkZWZpbmUgV2ViRmlsdGVyT3BlcmF0aW9uc19oCisKKyNp
bmNsdWRlICJXZWJDb21tb24uaCIKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2luY2x1
ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Ly8gU2ltcGxlIHdyYXBwZXIgYXJvdW5kIFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMuIFRoZXJl
IGFyZSBtb3JlIChjb21wbGV4KSBvcGVyYXRpb25zIHBvc3NpYmxlCisvLyBpbiBXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb24gc3ViY2xhc3NlcywgYW5kIHRoaXMgQVBJIHNob3VsZCBldm9sdmUgd2hl
biB0aGV5IGFyZSBkZXNpcmVkLgorY2xhc3MgV2ViRmlsdGVyT3BlcmF0aW9ucyB7CitwdWJsaWM6
CisgICAgV2ViRmlsdGVyT3BlcmF0aW9ucygpCisgICAgICAgIDogbV9zZXBpYSgwKQorICAgICAg
ICAsIG1fZ3JheXNjYWxlKDApCisgICAgICAgICwgbV9zYXR1cmF0ZSgwKQorICAgICAgICAsIG1f
aHVlUm90YXRlQW5nbGUoMCkKKyAgICAgICAgLCBtX2ludmVydCgwKQorICAgICAgICAsIG1fYnJp
Z2h0bmVzcygwKQorICAgICAgICAsIG1fY29udHJhc3QoMCkKKyAgICAgICAgLCBtX29wYWNpdHko
MSkKKyAgICAgICAgLCBtX2JsdXJSYWRpdXMoMCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBz
ZXRTZXBpYShkb3VibGUgYW1vdW50KSB7IG1fc2VwaWEgPSBhbW91bnQ7IH0KKyAgICB2b2lkIHNl
dEdyYXlzY2FsZShkb3VibGUgYW1vdW50KSB7IG1fZ3JheXNjYWxlID0gYW1vdW50OyB9CisgICAg
dm9pZCBzZXRTYXR1cmF0ZShkb3VibGUgYW1vdW50KSB7IG1fc2F0dXJhdGUgPSBhbW91bnQ7IH0K
KyAgICB2b2lkIHNldEh1ZVJvdGF0ZShkb3VibGUgYW5nbGUpIHsgbV9odWVSb3RhdGVBbmdsZSA9
IGFuZ2xlOyB9CisKKyAgICB2b2lkIHNldEludmVydChkb3VibGUgYW1vdW50KSB7IG1faW52ZXJ0
ID0gYW1vdW50OyB9CisgICAgdm9pZCBzZXRCcmlnaHRuZXNzKGRvdWJsZSBhbW91bnQpIHsgbV9i
cmlnaHRuZXNzID0gYW1vdW50OyB9CisgICAgdm9pZCBzZXRDb250cmFzdChkb3VibGUgYW1vdW50
KSB7IG1fY29udHJhc3QgPSBhbW91bnQ7IH0KKyAgICB2b2lkIHNldE9wYWNpdHkoZG91YmxlIGFt
b3VudCkgeyBtX29wYWNpdHkgPSBhbW91bnQ7IH0KKworICAgIHZvaWQgc2V0Qmx1cihpbnQgcGl4
ZWxSYWRpdXMpIHsgbV9ibHVyUmFkaXVzID0gcGl4ZWxSYWRpdXM7IH0KKworI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgorICAgIFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMgdG9GaWx0ZXJPcGVy
YXRpb25zKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBkb3VibGUgbV9zZXBpYTsK
KyAgICBkb3VibGUgbV9ncmF5c2NhbGU7CisgICAgZG91YmxlIG1fc2F0dXJhdGU7CisgICAgZG91
YmxlIG1faHVlUm90YXRlQW5nbGU7CisgICAgZG91YmxlIG1faW52ZXJ0OworICAgIGRvdWJsZSBt
X2JyaWdodG5lc3M7CisgICAgZG91YmxlIG1fY29udHJhc3Q7CisgICAgZG91YmxlIG1fb3BhY2l0
eTsKKyAgICBpbnQgbV9ibHVyUmFkaXVzOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaCBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAppbmRleCAzZDkxOWZhNDYwMzUxNTFlNTlh
NDUyMmFiNThkYzUwM2RlZThjY2RiLi5kN2QzY2Y3MGZmMmViZjc3OWFiNTQ1YWU0Y2RjNmEzYmM4
NWI0MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxh
eWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCkBA
IC0zNCw2ICszNCw3IEBAIGNsYXNzIFNrTWF0cml4NDQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNs
YXNzIExheWVyQ2hyb21pdW07IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJGaWx0
ZXJPcGVyYXRpb25zOwogc3RydWN0IFdlYkZsb2F0UG9pbnQ7CiBzdHJ1Y3QgV2ViU2l6ZTsKIApA
QCAtOTUsNiArOTYsOSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERlYnVn
Qm9yZGVyQ29sb3IoY29uc3QgV2ViQ29sb3ImKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
RGVidWdCb3JkZXJXaWR0aChmbG9hdCk7CiAKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Rmls
dGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmKTsKKwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgdG8oKQogICAgIHsKICAgICAgICAgVCByZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggM2RhMDQ3N2EwMTE0ZGU5ZjhiNzYwNGRmZDFiYjUw
YzhjN2M2NGZhMC4uZmY2ZmIwZTEyOGMyMDE0MTllMDUzZDMxZjg0MzdjNWJlZGJmMjE0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzAyLDYgKzMwMiw3IEBACiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJEcmFnRGF0YS5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL3BsYXRmb3JtL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViRmlsZVN5c3RlbS5oJywKKyAgICAgICAgICAgICAgICAn
cHVibGljL3BsYXRmb3JtL1dlYkZpbHRlck9wZXJhdGlvbnMuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvcGxhdGZvcm0vV2ViRmxvYXRRdWFkLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxh
dGZvcm0vV2ViRmxvYXRSZWN0LmgnLApAQCAtNTM5LDYgKzU0MCw3IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMv
V2ViRmlsdGVyT3BlcmF0aW9ucy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRm9udENh
Y2hlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGb250RGVzY3JpcHRpb24uY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkZvbnRJbXBsLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGaWx0ZXJPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGaWx0ZXJPcGVyYXRp
b25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTUyNDI3NjFiMzhmZjk2OGFiNmRiM2U5NzhjMjkzMjI1MDRjNGMw
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYkZpbHRlck9wZXJhdGlvbnMuaApAQCAtMCwwICsxLDI2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIi4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRp
b25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWx0ZXJP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZpbHRlck9wZXJh
dGlvbnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NzhmNThkMDViZDEwZTE5MDcwMjVjNmFmZThlMmMzNWI4
MDUyMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
aWx0ZXJPcGVyYXRpb25zLmNwcApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZpbHRlck9wZXJhdGlvbnMuaCIKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitGaWx0ZXJPcGVy
YXRpb25zIFdlYkZpbHRlck9wZXJhdGlvbnM6OnRvRmlsdGVyT3BlcmF0aW9ucygpIGNvbnN0Cit7
CisgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOworCisgICAgaWYgKG1fc2VwaWEpCisgICAg
ICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUobV9zZXBpYSwgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQSkpOworICAgIGlm
IChtX2dyYXlzY2FsZSkKKyAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2lj
Q29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShtX2dyYXlzY2FsZSwgRmlsdGVyT3Bl
cmF0aW9uOjpHUkFZU0NBTEUpKTsKKyAgICBpZiAobV9zYXR1cmF0ZSkKKyAgICAgICAgZmlsdGVy
cy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmNy
ZWF0ZShtX3NhdHVyYXRlLCBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFKSk7CisgICAgaWYgKG1f
aHVlUm90YXRlQW5nbGUpCisgICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNp
Y0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobV9odWVSb3RhdGVBbmdsZSwgRmls
dGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFKSk7CisgICAgaWYgKG1faW52ZXJ0KQorICAgICAgICBm
aWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKG1faW52ZXJ0LCBGaWx0ZXJPcGVyYXRpb246OklOVkVSVCkpOworICAg
IGlmIChtX2JyaWdodG5lc3MpCisgICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChC
YXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobV9icmlnaHRuZXNz
LCBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1MpKTsKKyAgICBpZiAobV9jb250cmFzdCkKKyAg
ICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb246OmNyZWF0ZShtX2NvbnRyYXN0LCBGaWx0ZXJPcGVyYXRpb246OkNPTlRS
QVNUKSk7CisgICAgaWYgKG1fb3BhY2l0eSAhPSAxKQorICAgICAgICBmaWx0ZXJzLm9wZXJhdGlv
bnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRl
KG1fb3BhY2l0eSwgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZKSk7CisgICAgaWYgKG1fYmx1clJh
ZGl1cykKKyAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJsdXJGaWx0ZXJPcGVy
YXRpb246OmNyZWF0ZShMZW5ndGgobV9ibHVyUmFkaXVzLCBGaXhlZCksIEZpbHRlck9wZXJhdGlv
bjo6QkxVUikpOworCisgICAgcmV0dXJuIGZpbHRlcnM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCmluZGV4IGYzMWM1YThj
M2UzMDA5MWI0YjZlYzRkNjhmZWQ4YTI2NzYyNDEwMWEuLmQ0Y2Y3NjUwMjlkYTcxNDg4ZTUxMjUz
ZWMxYjcwMGM1MDUzNDY5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5j
cHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJMYXllci5oIgogCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmlsdGVyT3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJDb2xv
ci5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKQEAgLTI0MSw2ICsyNDIsMTYgQEAgdm9p
ZCBXZWJMYXllcjo6c2V0RGVidWdCb3JkZXJXaWR0aChmbG9hdCB3aWR0aCkKICAgICBtX3ByaXZh
dGUtPnNldERlYnVnQm9yZGVyV2lkdGgod2lkdGgpOwogfQogCit2b2lkIFdlYkxheWVyOjpzZXRG
aWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCit7CisgICAgbV9wcml2
YXRlLT5zZXRGaWx0ZXJzKGZpbHRlcnMudG9GaWx0ZXJPcGVyYXRpb25zKCkpOworfQorCit2b2lk
IFdlYkxheWVyOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25z
JiBmaWx0ZXJzKQoreworICAgIG1fcHJpdmF0ZS0+c2V0QmFja2dyb3VuZEZpbHRlcnMoZmlsdGVy
cy50b0ZpbHRlck9wZXJhdGlvbnMoKSk7Cit9CisKIFdlYkxheWVyOjpXZWJMYXllcihjb25zdCBQ
YXNzUmVmUHRyPExheWVyQ2hyb21pdW0+JiBub2RlKQogICAgIDogbV9wcml2YXRlKG5vZGUpCiB7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137097</attachid>
            <date>2012-04-13 09:49:42 -0700</date>
            <delta_ts>2012-04-13 16:12:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80054-20120413094941.patch</filename>
            <type>text/plain</type>
            <size>13685</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBiZWQ0YjQyNDQ5NDY5
MGZjNjA4NmM4N2MyZTgxYmUwYjE0MDAwZWNjLi4xZjM0NTBlODM4YTkxNmQxZWFhYmYwYzhkNTcz
NWE1ZTFmYTExNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wMy0wMSAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEV4cG9zZSBjb21wb3NpdG9yIGZpbHRlcnMgdG8gQXVyYSB0aHJvdWdoIFdlYkxheWVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDA1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9w
ZXJhdGlvbnM6OldlYkZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWx0
ZXJPcGVyYXRpb25zOjpzZXRTZXBpYSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJh
dGlvbnM6OnNldEdyYXlzY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlv
bnM6OnNldFNhdHVyYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6
c2V0SHVlUm90YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6c2V0
SW52ZXJ0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6c2V0QnJpZ2h0
bmVzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnM6OnNldENvbnRyYXN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6c2V0T3BhY2l0eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnM6OnNldEJsdXIpOgorICAgICAgICAq
IGNocm9taXVtL3B1YmxpYy9XZWJMYXllci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYkxheWVyKToKKwogMjAxMi0wNC0xMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExNDA3NS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggY2RkM2I2MjA4MjY0YWU3NWMxNTM3YTM5ZWFj
MDY0MmIxN2E2MWFmNC4uYTY1M2QxNTljODZlZTU5NmNjZGI0ZjY3YWM0MTkxMmI4MzU3ZTkwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wMy0wMSAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEV4cG9zZSBjb21wb3NpdG9yIGZpbHRlcnMgdG8gQXVyYSB0aHJvdWdoIFdlYkxheWVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDA1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoK
KyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViRmlsdGVyT3BlcmF0aW9ucy5oOiBBZGRlZC4K
KyAgICAgICAgKiBzcmMvV2ViRmlsdGVyT3BlcmF0aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6dG9GaWx0ZXJP
cGVyYXRpb25zKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllcjo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllcjo6c2V0QmFja2dyb3VuZEZpbHRlcnMpOgorCiAyMDEyLTA0LTEzICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQu
IEJ1aWxkIGZpeCBhZnRlciByMTE0MTI2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2VkODU5Njc5
YmQ4NjAxYjRmNzI2ZjkwNjZiYzU4ZDM0NmQ5OTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmgKQEAgLTAsMCAr
MSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRmlsdGVyT3BlcmF0aW9uc19oCisjZGVmaW5lIFdl
YkZpbHRlck9wZXJhdGlvbnNfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKKyNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFNpbXBsZSB3cmFwcGVyIGFyb3VuZCBXZWJDb3Jl
OjpGaWx0ZXJPcGVyYXRpb25zLiBUaGVyZSBhcmUgbW9yZSAoY29tcGxleCkgb3BlcmF0aW9ucyBw
b3NzaWJsZQorLy8gaW4gV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uIHN1YmNsYXNzZXMsIGFuZCB0
aGlzIEFQSSBzaG91bGQgZXZvbHZlIHdoZW4gdGhleSBhcmUgZGVzaXJlZC4KK2NsYXNzIFdlYkZp
bHRlck9wZXJhdGlvbnMgeworcHVibGljOgorICAgIFdlYkZpbHRlck9wZXJhdGlvbnMoKQorICAg
ICAgICA6IG1fc2VwaWEoMCkKKyAgICAgICAgLCBtX2dyYXlzY2FsZSgwKQorICAgICAgICAsIG1f
c2F0dXJhdGUoMCkKKyAgICAgICAgLCBtX2h1ZVJvdGF0ZUFuZ2xlKDApCisgICAgICAgICwgbV9p
bnZlcnQoMCkKKyAgICAgICAgLCBtX2JyaWdodG5lc3MoMCkKKyAgICAgICAgLCBtX2NvbnRyYXN0
KDApCisgICAgICAgICwgbV9vcGFjaXR5KDEpCisgICAgICAgICwgbV9ibHVyUmFkaXVzKDApCisg
ICAgeworICAgIH0KKworICAgIHZvaWQgc2V0U2VwaWEoZG91YmxlIGFtb3VudCkgeyBtX3NlcGlh
ID0gYW1vdW50OyB9CisgICAgdm9pZCBzZXRHcmF5c2NhbGUoZG91YmxlIGFtb3VudCkgeyBtX2dy
YXlzY2FsZSA9IGFtb3VudDsgfQorICAgIHZvaWQgc2V0U2F0dXJhdGUoZG91YmxlIGFtb3VudCkg
eyBtX3NhdHVyYXRlID0gYW1vdW50OyB9CisgICAgdm9pZCBzZXRIdWVSb3RhdGUoZG91YmxlIGFu
Z2xlKSB7IG1faHVlUm90YXRlQW5nbGUgPSBhbmdsZTsgfQorCisgICAgdm9pZCBzZXRJbnZlcnQo
ZG91YmxlIGFtb3VudCkgeyBtX2ludmVydCA9IGFtb3VudDsgfQorICAgIHZvaWQgc2V0QnJpZ2h0
bmVzcyhkb3VibGUgYW1vdW50KSB7IG1fYnJpZ2h0bmVzcyA9IGFtb3VudDsgfQorICAgIHZvaWQg
c2V0Q29udHJhc3QoZG91YmxlIGFtb3VudCkgeyBtX2NvbnRyYXN0ID0gYW1vdW50OyB9CisgICAg
dm9pZCBzZXRPcGFjaXR5KGRvdWJsZSBhbW91bnQpIHsgbV9vcGFjaXR5ID0gYW1vdW50OyB9CisK
KyAgICB2b2lkIHNldEJsdXIoaW50IHBpeGVsUmFkaXVzKSB7IG1fYmx1clJhZGl1cyA9IHBpeGVs
UmFkaXVzOyB9CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJDb3JlOjpGaWx0
ZXJPcGVyYXRpb25zIHRvRmlsdGVyT3BlcmF0aW9ucygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZh
dGU6CisgICAgZG91YmxlIG1fc2VwaWE7CisgICAgZG91YmxlIG1fZ3JheXNjYWxlOworICAgIGRv
dWJsZSBtX3NhdHVyYXRlOworICAgIGRvdWJsZSBtX2h1ZVJvdGF0ZUFuZ2xlOworICAgIGRvdWJs
ZSBtX2ludmVydDsKKyAgICBkb3VibGUgbV9icmlnaHRuZXNzOworICAgIGRvdWJsZSBtX2NvbnRy
YXN0OworICAgIGRvdWJsZSBtX29wYWNpdHk7CisgICAgaW50IG1fYmx1clJhZGl1czsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgK
aW5kZXggM2Q5MTlmYTQ2MDM1MTUxZTU5YTQ1MjJhYjU4ZGM1MDNkZWU4Y2NkYi4uZmQyNDFkZDgz
Y2MzZDE0ODgxMGQ0MzNhYWU5NzU0MzkwMjMxY2E2MCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBTa01hdHJpeDQ0
OwogbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBMYXllckNocm9taXVtOyB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgeworY2xhc3MgV2ViRmlsdGVyT3BlcmF0aW9uczsKIHN0cnVjdCBXZWJGbG9hdFBv
aW50Owogc3RydWN0IFdlYlNpemU7CiAKQEAgLTk1LDYgKzk2LDEzIEBAIHB1YmxpYzoKICAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0RGVidWdCb3JkZXJDb2xvcihjb25zdCBXZWJDb2xvciYpOwog
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0KTsKIAorICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMm
KTsKKyAgICAvLyBCYWNrZ3JvdW5kIGZpbHRlcnMgYXJlIG9ubHkgcG9zc2libGUgb24gbGF5ZXJz
IHRoYXQgYXJlIGRyYXduIGRpcmVjdGx5CisgICAgLy8gdG8gdGhlIHJvb3QgcmVuZGVyIHN1cmZh
Y2UuIFRoaXMgbGltaXRzIHdoYXQgYW5jZXN0b3JzIG9mIHRoZSBiYWNrZ3JvdW5kCisgICAgLy8g
ZmlsdGVyZWQgbGF5ZXIgYXJlIGNhcGFibGUgb2YgZG9pbmcuIENDTGF5ZXJUcmVlSG9zdENvbW1v
bi5jcHAgZGV0ZXJtaW5lcworICAgIC8vIGlmIGEgbGF5ZXIncyBzdWJ0cmVlIHNob3VsZCBiZSBy
ZW5kZXJlZCB0byBhIG5vbi1yb290IHJlbmRlciBzdXJmYWNlLgorICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJik7CisK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHRvKCkKICAgICB7CiAgICAgICAgIFQgcmVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDdkNWZlYTM1ZTEzNDY4NmZlY2M1MDA0OTRh
M2U0MWZiNzkwNzc1YzguLjY3NmRkMzIyZDFjMWRjZjkyMWJjMWE2NjRhYWI3NDY5YTdmZjg2ZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTMwOCw2ICszMDgsNyBAQAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViRHJhZ0RhdGEuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkZpbGVTeXN0ZW0uaCcsCisgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJGaWx0ZXJPcGVyYXRpb25zLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UXVhZC5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L3BsYXRmb3JtL1dlYkZsb2F0UmVjdC5oJywKQEAgLTU0Myw2ICs1NDQsNyBAQAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5oJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5oJywKKyAgICAgICAgICAgICAgICAn
c3JjL1dlYkZpbHRlck9wZXJhdGlvbnMuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkZv
bnRDYWNoZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRm9udERlc2NyaXB0aW9uLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGb250SW1wbC5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmlsdGVyT3BlcmF0aW9u
cy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmlsdGVyT3Bl
cmF0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MjQyNzYxYjM4ZmY5NjhhYjZkYjNlOTc4YzI5MzIyNTA0
YzRjMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJGaWx0ZXJPcGVyYXRpb25zLmgKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICIuLi8uLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsdGVyT3Bl
cmF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmls
dGVyT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWx0ZXJP
cGVyYXRpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzc4ZjU4ZDA1YmQxMGUxOTA3MDI1YzZhZmU4ZTJj
MzViODA1MjAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRmlsdGVyT3BlcmF0aW9ucy5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGaWx0ZXJPcGVyYXRpb25zLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworRmlsdGVy
T3BlcmF0aW9ucyBXZWJGaWx0ZXJPcGVyYXRpb25zOjp0b0ZpbHRlck9wZXJhdGlvbnMoKSBjb25z
dAoreworICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKKworICAgIGlmIChtX3NlcGlhKQor
ICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb2xvck1hdHJpeEZpbHRl
ck9wZXJhdGlvbjo6Y3JlYXRlKG1fc2VwaWEsIEZpbHRlck9wZXJhdGlvbjo6U0VQSUEpKTsKKyAg
ICBpZiAobV9ncmF5c2NhbGUpCisgICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobV9ncmF5c2NhbGUsIEZpbHRl
ck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7CisgICAgaWYgKG1fc2F0dXJhdGUpCisgICAgICAgIGZp
bHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
OjpjcmVhdGUobV9zYXR1cmF0ZSwgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURSkpOworICAgIGlm
IChtX2h1ZVJvdGF0ZUFuZ2xlKQorICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQo
QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKG1faHVlUm90YXRlQW5nbGUs
IEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURSkpOworICAgIGlmIChtX2ludmVydCkKKyAgICAg
ICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0
ZXJPcGVyYXRpb246OmNyZWF0ZShtX2ludmVydCwgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQpKTsK
KyAgICBpZiAobV9icmlnaHRuZXNzKQorICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBl
bmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKG1fYnJpZ2h0
bmVzcywgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTKSk7CisgICAgaWYgKG1fY29udHJhc3Qp
CisgICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobV9jb250cmFzdCwgRmlsdGVyT3BlcmF0aW9uOjpD
T05UUkFTVCkpOworICAgIGlmIChtX29wYWNpdHkgIT0gMSkKKyAgICAgICAgZmlsdGVycy5vcGVy
YXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNy
ZWF0ZShtX29wYWNpdHksIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWSkpOworICAgIGlmIChtX2Js
dXJSYWRpdXMpCisgICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCbHVyRmlsdGVy
T3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKG1fYmx1clJhZGl1cywgRml4ZWQpLCBGaWx0ZXJPcGVy
YXRpb246OkJMVVIpKTsKKworICAgIHJldHVybiBmaWx0ZXJzOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAppbmRleCBmMzFj
NWE4YzNlMzAwOTFiNGI2ZWM0ZDY4ZmVkOGEyNjc2MjQxMDFhLi5kNGNmNzY1MDI5ZGE3MTQ4OGU1
MTI1M2VjMWI3MDBjNTA1MzQ2OTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5
ZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViTGF5ZXIuaCIKIAorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZpbHRlck9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAi
Q29sb3IuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCkBAIC0yNDEsNiArMjQyLDE2IEBA
IHZvaWQgV2ViTGF5ZXI6OnNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQgd2lkdGgpCiAgICAgbV9w
cml2YXRlLT5zZXREZWJ1Z0JvcmRlcldpZHRoKHdpZHRoKTsKIH0KIAordm9pZCBXZWJMYXllcjo6
c2V0RmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIG1f
cHJpdmF0ZS0+c2V0RmlsdGVycyhmaWx0ZXJzLnRvRmlsdGVyT3BlcmF0aW9ucygpKTsKK30KKwor
dm9pZCBXZWJMYXllcjo6c2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycykKK3sKKyAgICBtX3ByaXZhdGUtPnNldEJhY2tncm91bmRGaWx0ZXJzKGZp
bHRlcnMudG9GaWx0ZXJPcGVyYXRpb25zKCkpOworfQorCiBXZWJMYXllcjo6V2ViTGF5ZXIoY29u
c3QgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiYgbm9kZSkKICAgICA6IG1fcHJpdmF0ZShub2Rl
KQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137172</attachid>
            <date>2012-04-13 16:12:50 -0700</date>
            <delta_ts>2012-04-16 17:16:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80054-20120413161249.patch</filename>
            <type>text/plain</type>
            <size>12495</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBiZWQ0YjQyNDQ5NDY5
MGZjNjA4NmM4N2MyZTgxYmUwYjE0MDAwZWNjLi5iZDA4NjBhMDQ3ZDRiMzRlMDI4YTFiZDdkMGZi
MmIxMjRmOTk2NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wMy0wMSAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEV4cG9zZSBjb21wb3NpdG9yIGZpbHRlcnMgdG8gQXVyYSB0aHJvdWdoIFdlYkxheWVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDA1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9w
ZXJhdGlvbnM6OldlYkZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWx0
ZXJPcGVyYXRpb25zOjpzZXRTZXBpYSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJh
dGlvbnM6OnNldEdyYXlzY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlv
bnM6OnNldFNhdHVyYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6
c2V0SHVlUm90YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6c2V0
SW52ZXJ0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6c2V0QnJpZ2h0
bmVzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnM6OnNldENvbnRyYXN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uczo6c2V0T3BhY2l0eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnM6OnNldEJsdXIpOgorICAgICAgICAq
IGNocm9taXVtL3B1YmxpYy9XZWJMYXllci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkZpbHRl
ck9wZXJhdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnM6OnRvRmlsdGVyT3BlcmF0aW9ucyk6CisKIDIwMTItMDQt
MTIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTQwNzUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IGNkZDNiNjIwODI2NGFlNzVjMTUzN2EzOWVhYzA2NDJiMTdhNjFhZjQuLmE3ZjQ3NDg1
NjU0MDgyYTRlZjU2ZTRjZmI0N2E5OGNiNWVhYTRiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDMtMDEgIERhbmEgSmFuc2VucyAgPGRhbmFrakBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2UgY29tcG9zaXRvciBmaWx0
ZXJzIHRvIEF1cmEgdGhyb3VnaCBXZWJMYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAwNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL3BsYXRm
b3JtL1dlYkZpbHRlck9wZXJhdGlvbnMuaDogQWRkZWQuCisgICAgICAgICogc3JjL1dlYkxheWVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OnNldEZpbHRlcnMpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OnNldEJhY2tncm91bmRGaWx0ZXJz
KToKKwogMjAxMi0wNC0xMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLiBCdWlsZCBmaXggYWZ0ZXIgcjExNDEyNi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5o
IGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2E2YmUwOTA1NTAxYTgzZjgxMDBjN2E2ZWNjMTQ3YTRkYjZiYWIyOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsdGVy
T3BlcmF0aW9ucy5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZpbHRlck9w
ZXJhdGlvbnNfaAorI2RlZmluZSBXZWJGaWx0ZXJPcGVyYXRpb25zX2gKKworI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSAiRmlsdGVy
T3BlcmF0aW9ucy5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBBIHNpbXBs
ZSBzZXQgb2YgZmlsdGVyIG9wZXJhdGlvbnMuIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qg
Y3VycmVudGx5CisvLyBzdXBwb3J0IGRlZmluaW5nIGFuIG9yZGVyIGZvciB0aGUgb3BlcmF0aW9u
cy4KK2NsYXNzIFdlYkZpbHRlck9wZXJhdGlvbnMgeworcHVibGljOgorICAgIFdlYkZpbHRlck9w
ZXJhdGlvbnMoKQorICAgICAgICA6IG1fc2VwaWEoMCkKKyAgICAgICAgLCBtX2dyYXlzY2FsZSgw
KQorICAgICAgICAsIG1fc2F0dXJhdGUoMCkKKyAgICAgICAgLCBtX2h1ZVJvdGF0ZUFuZ2xlKDAp
CisgICAgICAgICwgbV9pbnZlcnQoMCkKKyAgICAgICAgLCBtX2JyaWdodG5lc3MoMCkKKyAgICAg
ICAgLCBtX2NvbnRyYXN0KDApCisgICAgICAgICwgbV9vcGFjaXR5KDEpCisgICAgICAgICwgbV9i
bHVyUmFkaXVzKDApCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0U2VwaWEoZG91YmxlIGFt
b3VudCkgeyBtX3NlcGlhID0gYW1vdW50OyB9CisgICAgdm9pZCBzZXRHcmF5c2NhbGUoZG91Ymxl
IGFtb3VudCkgeyBtX2dyYXlzY2FsZSA9IGFtb3VudDsgfQorICAgIHZvaWQgc2V0U2F0dXJhdGUo
ZG91YmxlIGFtb3VudCkgeyBtX3NhdHVyYXRlID0gYW1vdW50OyB9CisgICAgdm9pZCBzZXRIdWVS
b3RhdGUoZG91YmxlIGFuZ2xlKSB7IG1faHVlUm90YXRlQW5nbGUgPSBhbmdsZTsgfQorCisgICAg
dm9pZCBzZXRJbnZlcnQoZG91YmxlIGFtb3VudCkgeyBtX2ludmVydCA9IGFtb3VudDsgfQorICAg
IHZvaWQgc2V0QnJpZ2h0bmVzcyhkb3VibGUgYW1vdW50KSB7IG1fYnJpZ2h0bmVzcyA9IGFtb3Vu
dDsgfQorICAgIHZvaWQgc2V0Q29udHJhc3QoZG91YmxlIGFtb3VudCkgeyBtX2NvbnRyYXN0ID0g
YW1vdW50OyB9CisgICAgdm9pZCBzZXRPcGFjaXR5KGRvdWJsZSBhbW91bnQpIHsgbV9vcGFjaXR5
ID0gYW1vdW50OyB9CisKKyAgICB2b2lkIHNldEJsdXIoaW50IHBpeGVsUmFkaXVzKSB7IG1fYmx1
clJhZGl1cyA9IHBpeGVsUmFkaXVzOyB9CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAg
ICBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zIHRvRmlsdGVyT3BlcmF0aW9ucygpIGNvbnN0Owor
I2VuZGlmCisKK3ByaXZhdGU6CisgICAgZG91YmxlIG1fc2VwaWE7CisgICAgZG91YmxlIG1fZ3Jh
eXNjYWxlOworICAgIGRvdWJsZSBtX3NhdHVyYXRlOworICAgIGRvdWJsZSBtX2h1ZVJvdGF0ZUFu
Z2xlOworICAgIGRvdWJsZSBtX2ludmVydDsKKyAgICBkb3VibGUgbV9icmlnaHRuZXNzOworICAg
IGRvdWJsZSBtX2NvbnRyYXN0OworICAgIGRvdWJsZSBtX29wYWNpdHk7CisgICAgaW50IG1fYmx1
clJhZGl1czsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyLmgKaW5kZXggM2Q5MTlmYTQ2MDM1MTUxZTU5YTQ1MjJhYjU4ZGM1MDNkZWU4
Y2NkYi4uN2YwNGViOWFlYmQ0OGIzYjQwYjk3ZTMwNDU0ZjFhMjI1MDg3MzY2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaApAQCAtMzQsNiArMzQsNyBAQCBj
bGFzcyBTa01hdHJpeDQ0OwogbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBMYXllckNocm9taXVt
OyB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViRmlsdGVyT3BlcmF0aW9uczsKIHN0
cnVjdCBXZWJGbG9hdFBvaW50Owogc3RydWN0IFdlYlNpemU7CiAKQEAgLTk1LDYgKzk2LDE1IEBA
IHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RGVidWdCb3JkZXJDb2xvcihjb25z
dCBXZWJDb2xvciYpOwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXREZWJ1Z0JvcmRlcldpZHRo
KGZsb2F0KTsKIAorICAgIC8vIENsZWFyIHRoZSBmaWx0ZXJzIGluIHVzZSBieSBwYXNzaW5nIGlu
IGEgbmV3bHkgaW5zdGFudGlhdGVkCisgICAgLy8gV2ViRmlsdGVyT3BlcmF0aW9ucyBvYmplY3Qu
CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0
aW9ucyYpOworICAgIC8vIEJhY2tncm91bmQgZmlsdGVycyBhcmUgb25seSBwb3NzaWJsZSBvbiBs
YXllcnMgdGhhdCBhcmUgZHJhd24gZGlyZWN0bHkKKyAgICAvLyB0byB0aGUgcm9vdCByZW5kZXIg
c3VyZmFjZS4gVGhpcyBtZWFucyBpZiBhbiBhbmNlc3RvciBvZiB0aGUgYmFja2dyb3VuZC0KKyAg
ICAvLyBmaWx0ZXJlZCBsYXllciBzZXRzIGNlcnRhaW4gcHJvcGVydGllcyAob3BhY2l0eSwgdHJh
bnNmb3JtcyksIGl0IG1heQorICAgIC8vIGNvbmZsaWN0IGFuZCBoaWRlIHRoZSBiYWNrZ3JvdW5k
IGZpbHRlcnMuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNv
bnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmKTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQg
dG8oKQogICAgIHsKICAgICAgICAgVCByZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNDVhMGU2MWJk
MjY2NTI1NTZjNWFmMGJkMGQ2OWQ2ZDNlM2FkOTQxMi4uOTJiYjJjN2Y0MTg4M2U1MWJkOTQzNjY3
NDQ2YTliYzMzNWNiYWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtODIwMiw2ICs4MjAyLDcgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkRhdGEuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkhUVFBCb2R5LmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQTG9hZEluZm8uY3Bw
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkZpbHRlck9wZXJh
dGlvbnMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYklD
RUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1dlYklDRU9wdGlvbnMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYk1lZGlhSGludHMuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmlsdGVyT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkZpbHRlck9wZXJhdGlv
bnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM4ZjdkNTJjZTJkZjBlZTcyMTliYjZhOTRiNGU0ZjM0N2FhZjI4
NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYkZpbHRlck9wZXJhdGlvbnMuY3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9u
cy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K0ZpbHRlck9wZXJhdGlvbnMgV2ViRmlsdGVyT3BlcmF0aW9uczo6dG9GaWx0ZXJPcGVyYXRpb25z
KCkgY29uc3QKK3sKKyAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7CisKKyAgICBpZiAobV9z
ZXBpYSkKKyAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29sb3JNYXRy
aXhGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShtX3NlcGlhLCBGaWx0ZXJPcGVyYXRpb246OlNFUElB
KSk7CisgICAgaWYgKG1fZ3JheXNjYWxlKQorICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5h
cHBlbmQoQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKG1fZ3JheXNjYWxl
LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOworICAgIGlmIChtX3NhdHVyYXRlKQorICAg
ICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb2xvck1hdHJpeEZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKG1fc2F0dXJhdGUsIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEUpKTsK
KyAgICBpZiAobV9odWVSb3RhdGVBbmdsZSkKKyAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCku
YXBwZW5kKEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShtX2h1ZVJvdGF0
ZUFuZ2xlLCBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEUpKTsKKyAgICBpZiAobV9pbnZlcnQp
CisgICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobV9pbnZlcnQsIEZpbHRlck9wZXJhdGlvbjo6SU5W
RVJUKSk7CisgICAgaWYgKG1fYnJpZ2h0bmVzcykKKyAgICAgICAgZmlsdGVycy5vcGVyYXRpb25z
KCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSht
X2JyaWdodG5lc3MsIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUykpOworICAgIGlmIChtX2Nv
bnRyYXN0KQorICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25l
bnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKG1fY29udHJhc3QsIEZpbHRlck9wZXJh
dGlvbjo6Q09OVFJBU1QpKTsKKyAgICBpZiAobV9vcGFjaXR5ICE9IDEpCisgICAgICAgIGZpbHRl
cnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0
aW9uOjpjcmVhdGUobV9vcGFjaXR5LCBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFkpKTsKKyAgICBp
ZiAobV9ibHVyUmFkaXVzKQorICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmx1
ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aChtX2JsdXJSYWRpdXMsIEZpeGVkKSwgRmls
dGVyT3BlcmF0aW9uOjpCTFVSKSk7CisKKyAgICByZXR1cm4gZmlsdGVyczsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggN2Q1ZmVhMzVl
MTM0Njg2ZmVjYzUwMDQ5NGEzZTQxZmI3OTA3NzVjOC4uMmE3MzRiZDQ4MjJiOGQzNTY4ZGZhMDcy
NTdmM2I2ZWI5ZGYzOGY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzA4LDYg
KzMwOCw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJEcmFnRGF0YS5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkV4dGVybmFsVGV4dHVyZUxh
eWVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViRmlsZVN5c3RlbS5o
JywKKyAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkZpbHRlck9wZXJhdGlvbnMu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRRdWFkLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRSZWN0LmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCmluZGV4IGYzMWM1YThjM2UzMDA5MWI0YjZlYzRkNjhm
ZWQ4YTI2NzYyNDEwMWEuLjYxMTczMzhjZDMwMDk0YTUwNGI4NDAyZTFlMDIyOGU4N2VlOTQwYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKQEAgLTI2LDE0ICsyNiwx
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyLmgi
CiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiQ29sb3Iu
aCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiU2tNYXRyaXg0NC5oIgog
I2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJJbXBs
LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlNpemUuaCIKIAorI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+
CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgewpAQCAtMjQxLDYgKzI0
MywxNiBAQCB2b2lkIFdlYkxheWVyOjpzZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0IHdpZHRoKQog
ICAgIG1fcHJpdmF0ZS0+c2V0RGVidWdCb3JkZXJXaWR0aCh3aWR0aCk7CiB9CiAKK3ZvaWQgV2Vi
TGF5ZXI6OnNldEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sK
KyAgICBtX3ByaXZhdGUtPnNldEZpbHRlcnMoZmlsdGVycy50b0ZpbHRlck9wZXJhdGlvbnMoKSk7
Cit9CisKK3ZvaWQgV2ViTGF5ZXI6OnNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcnMpCit7CisgICAgbV9wcml2YXRlLT5zZXRCYWNrZ3JvdW5kRmls
dGVycyhmaWx0ZXJzLnRvRmlsdGVyT3BlcmF0aW9ucygpKTsKK30KKwogV2ViTGF5ZXI6OldlYkxh
eWVyKGNvbnN0IFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4mIG5vZGUpCiAgICAgOiBtX3ByaXZh
dGUobm9kZSkKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137439</attachid>
            <date>2012-04-16 17:16:41 -0700</date>
            <delta_ts>2012-04-16 18:35:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80054-20120416201640.patch</filename>
            <type>text/plain</type>
            <size>19910</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyNDBjNjA2ZWM3YTFl
MGVlYmIzYWY2NjljNWM1ZDU1NzU0MWUwMDc5Li4wYmU2MTI0NDkzYWE0N2JiNjU1M2UyMjc0NThm
YmQzYWMwY2IwNjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0wNC0xNiAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEV4cG9zZSBjb21wb3NpdG9yIGZpbHRlcnMgdG8gQXVyYSB0aHJvdWdoIFdlYkxheWVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDA1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL1dlYkZpbHRlck9wZXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJGaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWx0ZXJPcGVy
YXRpb246OldlYkZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJCYXNpY0NvbG9yTWF0cml4
RmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFzaWNDb2xvck1hdHJpeEZp
bHRlck9wZXJhdGlvbjo6V2ViQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbik6CisgICAg
ICAgIChXZWJCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6V2ViQmFz
aWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJCbHVyRmls
dGVyT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmx1ckZpbHRlck9wZXJhdGlvbjo6
V2ViQmx1ckZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJEcm9wU2hhZG93RmlsdGVyT3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6
V2ViRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbik6CisgICAgICAgICogY2hyb21pdW0vcHVibGlj
L1dlYkZpbHRlck9wZXJhdGlvbnMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkxh
eWVyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTGF5ZXIpOgorCiAyMDEyLTA0
LTExICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBSZW1vdmUgdW51c2VkIGNvbXBvc2l0ZVRvVGV4dHVyZSAvIGNvbXBvc2l0ZU9mZnNj
cmVlbiBzZXR0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJjMTliOGYyOWFkY2MwN2I0OWQwZTUxNzliNjAx
MTg5OGZmODkyMC4uZGY3YWE2NGEzYzUyNDE0OTcwNWMzNzYyNzhkZjU1ZjZiYTcxNWU0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTE2ICBEYW5hIEphbnNlbnMgIDxkYW5h
a2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRXhwb3NlIGNvbXBvc2l0b3Ig
ZmlsdGVycyB0byBBdXJhIHRocm91Z2ggV2ViTGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBXZWJGaWx0ZXJPcGVyYXRpb24gdGhhdCB3cmFw
cyBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24gYW5kCisgICAgICAgIFdlYkZpbHRlck9wZXJhdGlv
bnMgdGhhdCB3cmFwcyBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zLgorCisgICAgICAgIFdlIGFk
ZCBzdXBwb3J0IGZvciBtb3N0IG9mIHRoZSBGaWx0ZXJPcGVyYXRpb24gc3ViY2xhc3NlcywgYW5k
CisgICAgICAgIGFsbG93IHRoZSB1c2VyIHRvIHNldCB0aGUgV2ViRmlsdGVyT3BlcmF0aW9ucyBm
b3IgYm90aCBsYXllcgorICAgICAgICBjb250ZW50IGZpbHRlcnMgYW5kIGJhY2tncm91bmQgZmls
dGVycy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYkZpbHRlck9wZXJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
bjo6dG9GaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJCYXNpY0NvbXBvbmVu
dFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjp0b0ZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJsdXJGaWx0ZXJPcGVyYXRpb246OnRvRmlsdGVyT3BlcmF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6dG9GaWx0ZXJPcGVyYXRp
b24pOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmlsdGVyT3BlcmF0
aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9uczo6V2ViRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZpbHRlck9wZXJhdGlvbnM6OmFwcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRl
ck9wZXJhdGlvbnM6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9u
czo6dG9GaWx0ZXJPcGVyYXRpb25zKToKKwogMjAxMi0wNC0xNiAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgdG8gdXBkYXRlWk9yZGVyTGlz
dHNTbG93Q2FzZSB0byByZWJ1aWxkWk9yZGVyTGlzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggZTQ2MWNkZTViYWExYWE4MzI3YzI2NzU4NmU3ZjJiMDk2YjFmY2RmMy4uOGRkZjc1Njkw
YzE1MDY0ODJiOTFmNTcxMzQ1ZTAzNDNjYjRjZDY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNC0xNiAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSBjb21wb3NpdG9yIGZpbHRl
cnMgdG8gQXVyYSB0aHJvdWdoIFdlYkxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MDA1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6c2V0RmlsdGVycyk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6c2V0QmFja2dyb3VuZEZpbHRlcnMp
OgorCiAyMDEyLTA0LTE2ICBUZXJyeSBBbmRlcnNvbiAgPHRkYW5kZXJzb25AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWxsb3cgV2ViR2VzdHVyZUV2ZW50IHRvIHN0b3JlIGZv
dXIgZmxvYXRpbmcgcG9pbnQgdmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDQyNGZjM2RlYWY0
MWZkNDU2M2Q5NGJiYTc5OWY4YmY4NjIyZmFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaApAQCAtMCwwICsxLDEz
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViRmlsdGVyT3BlcmF0aW9uX2gKKyNkZWZpbmUgV2ViRmls
dGVyT3BlcmF0aW9uX2gKKworI2luY2x1ZGUgIldlYkNvbG9yLmgiCisjaW5jbHVkZSAiV2ViQ29t
bW9uLmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlICJGaWx0ZXJPcGVy
YXRpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZpbHRlck9wZXJhdGlvbiB7CitwdWJsaWM6CisjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZp
bHRlck9wZXJhdGlvbj4gdG9GaWx0ZXJPcGVyYXRpb24oKSBjb25zdCA9IDA7CisjZW5kaWYKKwor
cHJvdGVjdGVkOgorICAgIFdlYkZpbHRlck9wZXJhdGlvbigpIHsgfQorfTsKKworY2xhc3MgV2Vi
QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBXZWJGaWx0ZXJPcGVyYXRp
b24geworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIEdyYXlzY2FsZSwKKyAgICAg
ICAgU2VwaWEsCisgICAgICAgIFNhdHVyYXRlLAorICAgICAgICBIdWVSb3RhdGUKKyAgICB9Owor
CisgICAgV2ViQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbihmbG9hdCBhbW91bnQsIFR5
cGUgdHlwZSkKKyAgICAgICAgOiBtX2Ftb3VudChhbW91bnQpCisgICAgICAgICwgbV90eXBlKHR5
cGUpCisgICAgeyB9CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uPiB0b0ZpbHRlck9wZXJhdGlvbigpIGNv
bnN0IE9WRVJSSURFOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgZmxvYXQgbV9hbW91bnQ7Cisg
ICAgVHlwZSBtX3R5cGU7Cit9OworCitjbGFzcyBXZWJCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmls
dGVyT3BlcmF0aW9uIDogcHVibGljIFdlYkZpbHRlck9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAg
ZW51bSBUeXBlIHsKKyAgICAgICAgSW52ZXJ0LAorICAgICAgICBCcmlnaHRuZXNzLAorICAgICAg
ICBDb250cmFzdAorICAgICAgICAvLyBPcGFjaXR5IGlzIG1pc3NpbmcgYmVjYXVzZSB0aGlzIGlz
IG1vcmUgZXhwZW5zaXZlIHRoYW4ganVzdCBzZXR0aW5nIG9wYWNpdHkgb24gdGhlIGxheWVyLgor
ICAgIH07CisKKyAgICBXZWJCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGZs
b2F0IGFtb3VudCwgVHlwZSB0eXBlKQorICAgICAgICA6IG1fYW1vdW50KGFtb3VudCkKKyAgICAg
ICAgLCBtX3R5cGUodHlwZSkKKyAgICB7IH0KKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24+IHRvRmlsdGVy
T3BlcmF0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBmbG9h
dCBtX2Ftb3VudDsKKyAgICBUeXBlIG1fdHlwZTsKK307CisKK2NsYXNzIFdlYkJsdXJGaWx0ZXJP
cGVyYXRpb24gOiBwdWJsaWMgV2ViRmlsdGVyT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBXZWJC
bHVyRmlsdGVyT3BlcmF0aW9uKGludCBwaXhlbFJhZGl1cykgOiBtX3BpeGVsUmFkaXVzKHBpeGVs
UmFkaXVzKSB7IH0KKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24+IHRvRmlsdGVyT3BlcmF0aW9uKCkgY29u
c3QgT1ZFUlJJREU7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBpbnQgbV9waXhlbFJhZGl1czsK
K307CisKK2NsYXNzIFdlYkRyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgV2ViRmls
dGVyT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBXZWJEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9u
KGludCB4LCBpbnQgeSwgaW50IHN0ZERldmlhdGlvbiwgV2ViQ29sb3IgY29sb3IpCisgICAgICAg
IDogbV94KHgpCisgICAgICAgICwgbV95KHkpCisgICAgICAgICwgbV9zdGREZXZpYXRpb24oc3Rk
RGV2aWF0aW9uKQorICAgICAgICAsIG1fY29sb3IoY29sb3IpCisgICAgeyB9CisKKyNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsdGVy
T3BlcmF0aW9uPiB0b0ZpbHRlck9wZXJhdGlvbigpIGNvbnN0IE9WRVJSSURFOworI2VuZGlmCisK
K3ByaXZhdGU6CisgICAgaW50IG1feDsKKyAgICBpbnQgbV95OworICAgIGludCBtX3N0ZERldmlh
dGlvbjsKKyAgICBXZWJDb2xvciBtX2NvbG9yOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5o
IGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjJjNGVhNjQ2ZjA2YWRkM2E4NTFkMjEyZWQwOThhMzVjNjNlZGFjOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsdGVy
T3BlcmF0aW9ucy5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZpbHRlck9w
ZXJhdGlvbnNfaAorI2RlZmluZSBXZWJGaWx0ZXJPcGVyYXRpb25zX2gKKworI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVPd25QdHIuaCIKKworI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgorI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkZpbHRlck9wZXJhdGlvbjsKKworLy8gQW4gb3Jk
ZXJlZCBzZXQgb2YgZmlsdGVyIG9wZXJhdGlvbnMuCitjbGFzcyBXZWJGaWx0ZXJPcGVyYXRpb25z
IHsKK3B1YmxpYzoKKyAgICBXZWJGaWx0ZXJPcGVyYXRpb25zKCk7CisKKyAgICB2b2lkIGFwcGVu
ZChjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb24mKTsKKworICAgIC8vIFJlbW92ZXMgYWxsIGZpbHRl
ciBvcGVyYXRpb25zLgorICAgIHZvaWQgY2xlYXIoKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgorICAgIFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMgdG9GaWx0ZXJPcGVyYXRpb25zKCkg
Y29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlT3duUHRyPFdlYkNvcmU6
OkZpbHRlck9wZXJhdGlvbnM+IG1fcHJpdmF0ZTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKaW5kZXggM2Q5MTlmYTQ2MDM1MTUx
ZTU5YTQ1MjJhYjU4ZGM1MDNkZWU4Y2NkYi4uMDllYmEyYjlkNjQ5NThhNzNlOTVhNTcxMjg1NGFh
YTY5YzcyOTM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIu
aApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBTa01hdHJpeDQ0OwogbmFtZXNwYWNlIFdlYkNvcmUg
eyBjbGFzcyBMYXllckNocm9taXVtOyB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vi
RmlsdGVyT3BlcmF0aW9uczsKIHN0cnVjdCBXZWJGbG9hdFBvaW50Owogc3RydWN0IFdlYlNpemU7
CiAKQEAgLTk1LDYgKzk2LDE2IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
RGVidWdCb3JkZXJDb2xvcihjb25zdCBXZWJDb2xvciYpOwogICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0KTsKIAorICAgIC8vIENsZWFyIHRoZSBmaWx0ZXJz
IGluIHVzZSBieSBwYXNzaW5nIGluIGEgbmV3bHkgaW5zdGFudGlhdGVkCisgICAgLy8gV2ViRmls
dGVyT3BlcmF0aW9ucyBvYmplY3QuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpbHRlcnMo
Y29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYpOworCisgICAgLy8gQmFja2dyb3VuZCBmaWx0ZXJz
IGFyZSBvbmx5IHBvc3NpYmxlIG9uIGxheWVycyB0aGF0IGFyZSBkcmF3biBkaXJlY3RseQorICAg
IC8vIHRvIHRoZSByb290IHJlbmRlciBzdXJmYWNlLiBUaGlzIG1lYW5zIGlmIGFuIGFuY2VzdG9y
IG9mIHRoZSBiYWNrZ3JvdW5kLQorICAgIC8vIGZpbHRlcmVkIGxheWVyIHNldHMgY2VydGFpbiBw
cm9wZXJ0aWVzIChvcGFjaXR5LCB0cmFuc2Zvcm1zKSwgaXQgbWF5CisgICAgLy8gY29uZmxpY3Qg
YW5kIGhpZGUgdGhlIGJhY2tncm91bmQgZmlsdGVycy4KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYpOworCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gVCB0bygpCiAgICAgewogICAgICAgICBUIHJlczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCBhYzc5YjAyYTJiZGI4M2U4OWY2YzJkMDNhMTc1YjVmNDI4YjRlYjgxLi5i
MTAwZjk4ZDQ2MzJkNTQ0MWY3MGJiZjZjNzA0NTk5YWU4YjBjMTAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC04MjEyLDYgKzgyMTIsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViRGF0YS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViSFRUUEJvZHkuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYkhUVFBMb2FkSW5mby5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVt
L3N1cHBvcnQvV2ViRmlsdGVyT3BlcmF0aW9uLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJGaWx0ZXJPcGVyYXRpb25zLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJJQ0VPcHRpb25zLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYUhpbnRz
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYkZpbHRlck9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYkZpbHRlck9wZXJhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY2OWY3NzM4
ZmZlMDcyNjk4YTQwZGZhYzczMGJhZDI2ZGQxMDNlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmlsdGVyT3BlcmF0aW9uLmNw
cApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8V2ViQ29yZTo6RmlsdGVyT3Bl
cmF0aW9uPiBXZWJCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjp0b0ZpbHRlck9wZXJh
dGlvbigpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIEdyYXlzY2Fs
ZToKKyAgICAgICAgcmV0dXJuIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmNyZWF0
ZShtX2Ftb3VudCwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpOworICAgIGNhc2UgU2VwaWE6
CisgICAgICAgIHJldHVybiBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUo
bV9hbW91bnQsIEZpbHRlck9wZXJhdGlvbjo6U0VQSUEpOworICAgIGNhc2UgU2F0dXJhdGU6Cisg
ICAgICAgIHJldHVybiBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobV9h
bW91bnQsIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEUpOworICAgIGNhc2UgSHVlUm90YXRlOgor
ICAgICAgICByZXR1cm4gQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKG1f
YW1vdW50LCBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEUpOworICAgIH0KKyAgICByZXR1cm4g
UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworfQorCitQYXNzUmVmUHRyPFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbj4gV2ViQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9w
ZXJhdGlvbjo6dG9GaWx0ZXJPcGVyYXRpb24oKSBjb25zdAoreworICAgIHN3aXRjaCAobV90eXBl
KSB7CisgICAgY2FzZSBJbnZlcnQ6CisgICAgICAgIHJldHVybiBCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobV9hbW91bnQsIEZpbHRlck9wZXJhdGlvbjo6SU5W
RVJUKTsKKyAgICBjYXNlIEJyaWdodG5lc3M6CisgICAgICAgIHJldHVybiBCYXNpY0NvbXBvbmVu
dFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobV9hbW91bnQsIEZpbHRlck9wZXJhdGlv
bjo6QlJJR0hUTkVTUyk7CisgICAgY2FzZSBDb250cmFzdDoKKyAgICAgICAgcmV0dXJuIEJhc2lj
Q29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShtX2Ftb3VudCwgRmlsdGVy
T3BlcmF0aW9uOjpDT05UUkFTVCk7CisgICAgfQorICAgIHJldHVybiBQYXNzdGhyb3VnaEZpbHRl
ck9wZXJhdGlvbjo6Y3JlYXRlKCk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViQ29yZTo6RmlsdGVyT3Bl
cmF0aW9uPiBXZWJCbHVyRmlsdGVyT3BlcmF0aW9uOjp0b0ZpbHRlck9wZXJhdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIEJsdXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShMZW5ndGgobV9waXhl
bFJhZGl1cywgRml4ZWQpLCBGaWx0ZXJPcGVyYXRpb246OkJMVVIpOworfQorCitQYXNzUmVmUHRy
PFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbj4gV2ViRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6
dG9GaWx0ZXJPcGVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBEcm9wU2hhZG93RmlsdGVy
T3BlcmF0aW9uOjpjcmVhdGUobV94LCBtX3ksIG1fc3RkRGV2aWF0aW9uLCBtX2NvbG9yLCBGaWx0
ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkZp
bHRlck9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJGaWx0ZXJPcGVyYXRpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZmE3ZTQwNzEwNmU3Mjdj
Mjc2MTAyYWViNjU3YzIyYjMxOTM2NmJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJGaWx0ZXJPcGVyYXRpb25zLmNwcApAQCAt
MCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8cHVi
bGljL1dlYkZpbHRlck9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVy
YXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkZpbHRlck9wZXJhdGlvbnM6OldlYkZp
bHRlck9wZXJhdGlvbnMoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldChuZXcgRmlsdGVyT3BlcmF0
aW9ucygpKTsKK30KKwordm9pZCBXZWJGaWx0ZXJPcGVyYXRpb25zOjphcHBlbmQoY29uc3QgV2Vi
RmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXIpCit7CisgICAgbV9wcml2YXRlLT5vcGVyYXRpb25zKCku
YXBwZW5kKGZpbHRlci50b0ZpbHRlck9wZXJhdGlvbigpKTsKK30KKwordm9pZCBXZWJGaWx0ZXJP
cGVyYXRpb25zOjpjbGVhcigpCit7CisgICAgbV9wcml2YXRlLT5vcGVyYXRpb25zKCkuY2xlYXIo
KTsKK30KKworRmlsdGVyT3BlcmF0aW9ucyBXZWJGaWx0ZXJPcGVyYXRpb25zOjp0b0ZpbHRlck9w
ZXJhdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiAqbV9wcml2YXRlLmdldCgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBmZTRj
M2RkMDkzOTJjY2VjZDNiZDZlZWQzMzM0M2RlZjc0MmZmZGI4Li42ZDZhNDk5OTI1YjRlZjk2MzJj
NmRhN2QzY2E2OGQxNDUxMDQzMjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0z
MDgsNiArMzA4LDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkRyYWdE
YXRhLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJGaWxlU3lz
dGVtLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViRmlsdGVyT3BlcmF0
aW9uLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViRmlsdGVyT3BlcmF0
aW9ucy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UG9pbnQu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFF1YWQuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFJlY3QuaCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKaW5kZXggZjMxYzVhOGMzZTMwMDkxYjRiNmVj
NGQ2OGZlZDhhMjY3NjI0MTAxYS4uNjExNzMzOGNkMzAwOTRhNTA0Yjg0MDJlMWUwMjI4ZTg3ZWU5
NDBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcApAQCAtMjYsMTQg
KzI2LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5
ZXIuaCIKIAotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJD
b2xvci5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJTa01hdHJpeDQ0
LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJXZWJMYXll
ckltcGwuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViU2l6ZS5oIgogCisjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlv
bnMuaD4KKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSB7CkBAIC0yNDEs
NiArMjQzLDE2IEBAIHZvaWQgV2ViTGF5ZXI6OnNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQgd2lk
dGgpCiAgICAgbV9wcml2YXRlLT5zZXREZWJ1Z0JvcmRlcldpZHRoKHdpZHRoKTsKIH0KIAordm9p
ZCBXZWJMYXllcjo6c2V0RmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJz
KQoreworICAgIG1fcHJpdmF0ZS0+c2V0RmlsdGVycyhmaWx0ZXJzLnRvRmlsdGVyT3BlcmF0aW9u
cygpKTsKK30KKwordm9pZCBXZWJMYXllcjo6c2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgV2Vi
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBtX3ByaXZhdGUtPnNldEJhY2tncm91
bmRGaWx0ZXJzKGZpbHRlcnMudG9GaWx0ZXJPcGVyYXRpb25zKCkpOworfQorCiBXZWJMYXllcjo6
V2ViTGF5ZXIoY29uc3QgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiYgbm9kZSkKICAgICA6IG1f
cHJpdmF0ZShub2RlKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137454</attachid>
            <date>2012-04-16 18:35:43 -0700</date>
            <delta_ts>2012-04-16 19:35:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80054-20120416213541.patch</filename>
            <type>text/plain</type>
            <size>21533</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyNDBjNjA2ZWM3YTFl
MGVlYmIzYWY2NjljNWM1ZDU1NzU0MWUwMDc5Li4wYmU2MTI0NDkzYWE0N2JiNjU1M2UyMjc0NThm
YmQzYWMwY2IwNjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0wNC0xNiAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEV4cG9zZSBjb21wb3NpdG9yIGZpbHRlcnMgdG8gQXVyYSB0aHJvdWdoIFdlYkxheWVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDA1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL1dlYkZpbHRlck9wZXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJGaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWx0ZXJPcGVy
YXRpb246OldlYkZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJCYXNpY0NvbG9yTWF0cml4
RmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFzaWNDb2xvck1hdHJpeEZp
bHRlck9wZXJhdGlvbjo6V2ViQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbik6CisgICAg
ICAgIChXZWJCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6V2ViQmFz
aWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJCbHVyRmls
dGVyT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmx1ckZpbHRlck9wZXJhdGlvbjo6
V2ViQmx1ckZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJEcm9wU2hhZG93RmlsdGVyT3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6
V2ViRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbik6CisgICAgICAgICogY2hyb21pdW0vcHVibGlj
L1dlYkZpbHRlck9wZXJhdGlvbnMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkxh
eWVyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTGF5ZXIpOgorCiAyMDEyLTA0
LTExICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBSZW1vdmUgdW51c2VkIGNvbXBvc2l0ZVRvVGV4dHVyZSAvIGNvbXBvc2l0ZU9mZnNj
cmVlbiBzZXR0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJjMTliOGYyOWFkY2MwN2I0OWQwZTUxNzliNjAx
MTg5OGZmODkyMC4uZGY3YWE2NGEzYzUyNDE0OTcwNWMzNzYyNzhkZjU1ZjZiYTcxNWU0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTE2ICBEYW5hIEphbnNlbnMgIDxkYW5h
a2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRXhwb3NlIGNvbXBvc2l0b3Ig
ZmlsdGVycyB0byBBdXJhIHRocm91Z2ggV2ViTGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBXZWJGaWx0ZXJPcGVyYXRpb24gdGhhdCB3cmFw
cyBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24gYW5kCisgICAgICAgIFdlYkZpbHRlck9wZXJhdGlv
bnMgdGhhdCB3cmFwcyBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zLgorCisgICAgICAgIFdlIGFk
ZCBzdXBwb3J0IGZvciBtb3N0IG9mIHRoZSBGaWx0ZXJPcGVyYXRpb24gc3ViY2xhc3NlcywgYW5k
CisgICAgICAgIGFsbG93IHRoZSB1c2VyIHRvIHNldCB0aGUgV2ViRmlsdGVyT3BlcmF0aW9ucyBm
b3IgYm90aCBsYXllcgorICAgICAgICBjb250ZW50IGZpbHRlcnMgYW5kIGJhY2tncm91bmQgZmls
dGVycy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYkZpbHRlck9wZXJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
bjo6dG9GaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJCYXNpY0NvbXBvbmVu
dFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjp0b0ZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJsdXJGaWx0ZXJPcGVyYXRpb246OnRvRmlsdGVyT3BlcmF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6dG9GaWx0ZXJPcGVyYXRp
b24pOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmlsdGVyT3BlcmF0
aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9uczo6V2ViRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZpbHRlck9wZXJhdGlvbnM6OmFwcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRl
ck9wZXJhdGlvbnM6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9u
czo6dG9GaWx0ZXJPcGVyYXRpb25zKToKKwogMjAxMi0wNC0xNiAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgdG8gdXBkYXRlWk9yZGVyTGlz
dHNTbG93Q2FzZSB0byByZWJ1aWxkWk9yZGVyTGlzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggZTQ2MWNkZTViYWExYWE4MzI3YzI2NzU4NmU3ZjJiMDk2YjFmY2RmMy4uOGRkZjc1Njkw
YzE1MDY0ODJiOTFmNTcxMzQ1ZTAzNDNjYjRjZDY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNC0xNiAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSBjb21wb3NpdG9yIGZpbHRl
cnMgdG8gQXVyYSB0aHJvdWdoIFdlYkxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MDA1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6c2V0RmlsdGVycyk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6c2V0QmFja2dyb3VuZEZpbHRlcnMp
OgorCiAyMDEyLTA0LTE2ICBUZXJyeSBBbmRlcnNvbiAgPHRkYW5kZXJzb25AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWxsb3cgV2ViR2VzdHVyZUV2ZW50IHRvIHN0b3JlIGZv
dXIgZmxvYXRpbmcgcG9pbnQgdmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2Q5NTIyN2UyMjJi
ODA3ZDZjNDY3NzQxZTAyYWM5MzUyYzMzYWM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaApAQCAtMCwwICsxLDEy
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViRmlsdGVyT3BlcmF0aW9uX2gKKyNkZWZpbmUgV2ViRmls
dGVyT3BlcmF0aW9uX2gKKworI2luY2x1ZGUgIldlYkNvbG9yLmgiCisjaW5jbHVkZSAiV2ViQ29t
bW9uLmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2VuZGlmCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEZpbHRlck9wZXJhdGlvbjsKK30KKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworc3RydWN0IFdlYkZpbHRlck9wZXJhdGlvbiB7CisjaWYgV0VCS0lUX0lNUExF
TUVOVEFUSU9OCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bj4gdG9GaWx0ZXJPcGVyYXRpb24oKSBjb25zdCA9IDA7CisjZW5kaWYKKworcHJvdGVjdGVkOgor
ICAgIFdlYkZpbHRlck9wZXJhdGlvbigpIHsgfQorfTsKKworc3RydWN0IFdlYkJhc2ljQ29sb3JN
YXRyaXhGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgV2ViRmlsdGVyT3BlcmF0aW9uIHsKKyAgICBl
bnVtIEZpbHRlclR5cGUgeworICAgICAgICBGaWx0ZXJUeXBlR3JheXNjYWxlID0gMSwKKyAgICAg
ICAgRmlsdGVyVHlwZVNlcGlhID0gMiwKKyAgICAgICAgRmlsdGVyVHlwZVNhdHVyYXRlID0gMywK
KyAgICAgICAgRmlsdGVyVHlwZUh1ZVJvdGF0ZSA9IDQKKyAgICB9OworCisgICAgV2ViQmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbihGaWx0ZXJUeXBlIHR5cGUsIGZsb2F0IGFtb3VudCkK
KyAgICAgICAgOiB0eXBlKHR5cGUpCisgICAgICAgICwgYW1vdW50KGFtb3VudCkKKyAgICB7IH0K
KworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpGaWx0ZXJPcGVyYXRpb24+IHRvRmlsdGVyT3BlcmF0aW9uKCkgY29uc3QgT1ZFUlJJREU7
CisjZW5kaWYKKworICAgIEZpbHRlclR5cGUgdHlwZTsKKyAgICBmbG9hdCBhbW91bnQ7Cit9Owor
CitzdHJ1Y3QgV2ViQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiA6IHB1Ymxp
YyBXZWJGaWx0ZXJPcGVyYXRpb24geworICAgIGVudW0gRmlsdGVyVHlwZSB7CisgICAgICAgIEZp
bHRlclR5cGVJbnZlcnQgPSA1LAorICAgICAgICBGaWx0ZXJUeXBlQnJpZ2h0bmVzcyA9IDcsCisg
ICAgICAgIEZpbHRlclR5cGVDb250cmFzdCA9IDgKKyAgICAgICAgLy8gT3BhY2l0eSBpcyBtaXNz
aW5nIGJlY2F1c2UgdGhpcyBpcyBtb3JlIGV4cGVuc2l2ZSB0aGFuIGp1c3Qgc2V0dGluZyBvcGFj
aXR5IG9uIHRoZSBsYXllci4KKyAgICB9OworCisgICAgV2ViQmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbihGaWx0ZXJUeXBlIHR5cGUsIGZsb2F0IGFtb3VudCkKKyAgICAgICAg
OiB0eXBlKHR5cGUpCisgICAgICAgICwgYW1vdW50KGFtb3VudCkKKyAgICB7IH0KKworI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWx0
ZXJPcGVyYXRpb24+IHRvRmlsdGVyT3BlcmF0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisjZW5kaWYK
KworICAgIEZpbHRlclR5cGUgdHlwZTsKKyAgICBmbG9hdCBhbW91bnQ7Cit9OworCitzdHJ1Y3Qg
V2ViQmx1ckZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBXZWJGaWx0ZXJPcGVyYXRpb24geworICAg
IFdlYkJsdXJGaWx0ZXJPcGVyYXRpb24oaW50IHBpeGVsUmFkaXVzKSA6IHBpeGVsUmFkaXVzKHBp
eGVsUmFkaXVzKSB7IH0KKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24+IHRvRmlsdGVyT3BlcmF0aW9uKCkg
Y29uc3QgT1ZFUlJJREU7CisjZW5kaWYKKworICAgIGludCBwaXhlbFJhZGl1czsKK307CisKK2Ns
YXNzIFdlYkRyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgV2ViRmlsdGVyT3BlcmF0
aW9uIHsKKyAgICBXZWJEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKGludCB4LCBpbnQgeSwgaW50
IHN0ZERldmlhdGlvbiwgV2ViQ29sb3IgY29sb3IpCisgICAgICAgIDogeCh4KQorICAgICAgICAs
IHkoeSkKKyAgICAgICAgLCBzdGREZXZpYXRpb24oc3RkRGV2aWF0aW9uKQorICAgICAgICAsIGNv
bG9yKGNvbG9yKQorICAgIHsgfQorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbj4gdG9GaWx0ZXJPcGVyYXRp
b24oKSBjb25zdCBPVkVSUklERTsKKyNlbmRpZgorCisgICAgaW50IHg7CisgICAgaW50IHk7Cisg
ICAgaW50IHN0ZERldmlhdGlvbjsKKyAgICBXZWJDb2xvciBjb2xvcjsKK307CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbHRl
ck9wZXJhdGlvbnMuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsdGVy
T3BlcmF0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlNmYxNmIwY2ZmZTUzZmZjMzdmMmE1ZmVjMGQ0NDk4
Y2FjYTVkNTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJGaWx0ZXJPcGVyYXRpb25zX2gKKyNkZWZpbmUgV2ViRmlsdGVyT3BlcmF0aW9uc19oCisK
KyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlT3duUHRyLmgiCisK
KyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZp
bHRlck9wZXJhdGlvbnM7Cit9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBX
ZWJGaWx0ZXJPcGVyYXRpb247CisKKy8vIEFuIG9yZGVyZWQgc2V0IG9mIGZpbHRlciBvcGVyYXRp
b25zLgorY2xhc3MgV2ViRmlsdGVyT3BlcmF0aW9ucyB7CitwdWJsaWM6CisgICAgV2ViRmlsdGVy
T3BlcmF0aW9ucygpOworCisgICAgdm9pZCBhcHBlbmQoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9u
Jik7CisKKyAgICAvLyBSZW1vdmVzIGFsbCBmaWx0ZXIgb3BlcmF0aW9ucy4KKyAgICB2b2lkIGNs
ZWFyKCk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBjb25zdCBXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb25zJiB0b0ZpbHRlck9wZXJhdGlvbnMoKSBjb25zdDsKKyNlbmRpZgorCitw
cml2YXRlOgorICAgIFdlYlByaXZhdGVPd25QdHI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4g
bV9wcml2YXRlOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXIuaAppbmRleCAzZDkxOWZhNDYwMzUxNTFlNTlhNDUyMmFiNThkYzUwM2Rl
ZThjY2RiLi4wOWViYTJiOWQ2NDk1OGE3M2U5NWE1NzEyODU0YWFhNjljNzI5MzljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKKysrIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCkBAIC0zNCw2ICszNCw3IEBA
IGNsYXNzIFNrTWF0cml4NDQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIExheWVyQ2hyb21p
dW07IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJGaWx0ZXJPcGVyYXRpb25zOwog
c3RydWN0IFdlYkZsb2F0UG9pbnQ7CiBzdHJ1Y3QgV2ViU2l6ZTsKIApAQCAtOTUsNiArOTYsMTYg
QEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9yKGNv
bnN0IFdlYkNvbG9yJik7CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERlYnVnQm9yZGVyV2lk
dGgoZmxvYXQpOwogCisgICAgLy8gQ2xlYXIgdGhlIGZpbHRlcnMgaW4gdXNlIGJ5IHBhc3Npbmcg
aW4gYSBuZXdseSBpbnN0YW50aWF0ZWQKKyAgICAvLyBXZWJGaWx0ZXJPcGVyYXRpb25zIG9iamVj
dC4KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVy
YXRpb25zJik7CisKKyAgICAvLyBCYWNrZ3JvdW5kIGZpbHRlcnMgYXJlIG9ubHkgcG9zc2libGUg
b24gbGF5ZXJzIHRoYXQgYXJlIGRyYXduIGRpcmVjdGx5CisgICAgLy8gdG8gdGhlIHJvb3QgcmVu
ZGVyIHN1cmZhY2UuIFRoaXMgbWVhbnMgaWYgYW4gYW5jZXN0b3Igb2YgdGhlIGJhY2tncm91bmQt
CisgICAgLy8gZmlsdGVyZWQgbGF5ZXIgc2V0cyBjZXJ0YWluIHByb3BlcnRpZXMgKG9wYWNpdHks
IHRyYW5zZm9ybXMpLCBpdCBtYXkKKyAgICAvLyBjb25mbGljdCBhbmQgaGlkZSB0aGUgYmFja2dy
b3VuZCBmaWx0ZXJzLgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVy
cyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJik7CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBUIHRvKCkKICAgICB7CiAgICAgICAgIFQgcmVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGFjNzli
MDJhMmJkYjgzZTg5ZjZjMmQwM2ExNzViNWY0MjhiNGViODEuLmIxMDBmOThkNDYzMmQ1NDQxZjcw
YmJmNmM3MDQ1OTlhZThiMGMxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTgyMTIsNiArODIxMiw4
IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJEYXRhLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQQm9keS5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSFRUUExvYWRJbmZv
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJGaWx0ZXJP
cGVyYXRpb24uY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dl
YkZpbHRlck9wZXJhdGlvbnMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYklDRU9wdGlvbnMuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhSGludHMuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmlsdGVyT3BlcmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmls
dGVyT3BlcmF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDVhYWYwMjM0ZGVjNjQxZjZmZmZjZTE0NzJj
NmViMWIyM2U0NWUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJGaWx0ZXJPcGVyYXRpb24uY3BwCkBAIC0wLDAgKzEsNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb24u
aCIKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFdlYkNv
cmU6OkZpbHRlck9wZXJhdGlvbj4gV2ViQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6
dG9GaWx0ZXJPcGVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBCYXNpY0NvbG9yTWF0cml4
RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoYW1vdW50LCBzdGF0aWNfY2FzdDxGaWx0ZXJPcGVyYXRp
b246Ok9wZXJhdGlvblR5cGU+KHR5cGUpKTsKK30KKworUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWx0
ZXJPcGVyYXRpb24+IFdlYkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OnRv
RmlsdGVyT3BlcmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGFtb3VudCwgc3RhdGljX2Nhc3Q8RmlsdGVyT3Bl
cmF0aW9uOjpPcGVyYXRpb25UeXBlPih0eXBlKSk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViQ29yZTo6
RmlsdGVyT3BlcmF0aW9uPiBXZWJCbHVyRmlsdGVyT3BlcmF0aW9uOjp0b0ZpbHRlck9wZXJhdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEJsdXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShMZW5n
dGgocGl4ZWxSYWRpdXMsIEZpeGVkKSwgRmlsdGVyT3BlcmF0aW9uOjpCTFVSKTsKK30KKworUGFz
c1JlZlB0cjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24+IFdlYkRyb3BTaGFkb3dGaWx0ZXJPcGVy
YXRpb246OnRvRmlsdGVyT3BlcmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRHJvcFNoYWRv
d0ZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHN0ZERldmlhdGlvbiwgY29sb3IsIEZpbHRl
ck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmls
dGVyT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYkZpbHRlck9wZXJhdGlvbnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3NTVlYzI0ZmY3MTIzODQ0
YmE0MGI0MDZiNGJiZDI2M2EzMmNlNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkZpbHRlck9wZXJhdGlvbnMuY3BwCkBAIC0w
LDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJGaWx0
ZXJPcGVyYXRpb25zLmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9uLmg+
CisjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworV2ViRmlsdGVyT3BlcmF0aW9uczo6V2ViRmlsdGVyT3BlcmF0aW9ucygpCit7CisgICAg
bV9wcml2YXRlLnJlc2V0KG5ldyBGaWx0ZXJPcGVyYXRpb25zKCkpOworfQorCit2b2lkIFdlYkZp
bHRlck9wZXJhdGlvbnM6OmFwcGVuZChjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb24mIGZpbHRlcikK
K3sKKyAgICBtX3ByaXZhdGUtPm9wZXJhdGlvbnMoKS5hcHBlbmQoZmlsdGVyLnRvRmlsdGVyT3Bl
cmF0aW9uKCkpOworfQorCit2b2lkIFdlYkZpbHRlck9wZXJhdGlvbnM6OmNsZWFyKCkKK3sKKyAg
ICBtX3ByaXZhdGUtPm9wZXJhdGlvbnMoKS5jbGVhcigpOworfQorCitjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJiBXZWJGaWx0ZXJPcGVyYXRpb25zOjp0b0ZpbHRlck9wZXJhdGlvbnMoKSBjb25zdAor
eworICAgIHJldHVybiAqbV9wcml2YXRlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBmZTRjM2RkMDkzOTJjY2VjZDNiZDZl
ZWQzMzM0M2RlZjc0MmZmZGI4Li42ZDZhNDk5OTI1YjRlZjk2MzJjNmRhN2QzY2E2OGQxNDUxMDQz
MjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0zMDgsNiArMzA4LDggQEAKICAg
ICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkRyYWdEYXRhLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJGaWxlU3lzdGVtLmgnLAorICAgICAgICAg
ICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViRmlsdGVyT3BlcmF0aW9uLmgnLAorICAgICAgICAg
ICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViRmlsdGVyT3BlcmF0aW9ucy5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFF1YWQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFJlY3QuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCmluZGV4IDQ4NTFlYzk3OWExNWI1Nzg0
NTIxYTZmNmMyZDJhNjU1ZDU0Y2ZmZDUuLjk5NWVhNzY0MDIwNzE0M2MyZTQ5MTZhMGY3MTgzMmUx
MTVjYzk2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1h
dGNoaW5nRW51bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1h
dGNoaW5nRW51bXMuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgogI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgor
I2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5o
IgogI2luY2x1ZGUgIkZvbnRTbW9vdGhpbmdNb2RlLmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb25F
cnJvci5oIgpAQCAtMTA1LDYgKzEwNiw3IEBACiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFT
dHJlYW1Tb3VyY2UuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQZWVyQ29ubmVjdGlvbjAwSGFu
ZGxlci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xp
ZW50LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCkBA
IC0zMTcsNiArMzE5LDE1IEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRWRpdGlu
Z0FjdGlvblR5cGVkLCBFZGl0b3JJbnNlcnRBY3Rpb25UeXBlZCk7CiBDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYkVkaXRpbmdBY3Rpb25QYXN0ZWQsIEVkaXRvckluc2VydEFjdGlvblBh
c3RlZCk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkVkaXRpbmdBY3Rpb25Ecm9w
cGVkLCBFZGl0b3JJbnNlcnRBY3Rpb25Ecm9wcGVkKTsKIAorQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpGaWx0ZXJUeXBlR3Jh
eXNjYWxlLCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKFdlYkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OkZpbHRlclR5cGVT
ZXBpYSwgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OkZpbHRlclR5cGVTYXR1cmF0
ZSwgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OkZpbHRlclR5cGVIdWVSb3Rh
dGUsIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURSk7CisKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6RmlsdGVy
VHlwZUludmVydCwgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpGaWx0
ZXJUeXBlQnJpZ2h0bmVzcywgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJh
dGlvbjo6RmlsdGVyVHlwZUNvbnRyYXN0LCBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUKTsKKwog
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGb250RGVzY3JpcHRpb246OkdlbmVyaWNG
YW1pbHlOb25lLCBGb250RGVzY3JpcHRpb246Ok5vRmFtaWx5KTsKIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViRm9udERlc2NyaXB0aW9uOjpHZW5lcmljRmFtaWx5U3RhbmRhcmQsIEZv
bnREZXNjcmlwdGlvbjo6U3RhbmRhcmRGYW1pbHkpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXZWJGb250RGVzY3JpcHRpb246OkdlbmVyaWNGYW1pbHlTZXJpZiwgRm9udERlc2NyaXB0
aW9uOjpTZXJpZkZhbWlseSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAK
aW5kZXggZjMxYzVhOGMzZTMwMDkxYjRiNmVjNGQ2OGZlZDhhMjY3NjI0MTAxYS4uNjExNzMzOGNk
MzAwOTRhNTA0Yjg0MDJlMWUwMjI4ZTg3ZWU5NDBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkxheWVyLmNwcApAQCAtMjYsMTQgKzI2LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXIuaCIKIAotI2luY2x1ZGUgInBsYXRmb3JtL1dl
YkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21p
dW0uaCIKICNpbmNsdWRlICJTa01hdHJpeDQ0LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25N
YXRyaXguaCIKICNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgogCisjaW5jbHVk
ZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSB7CkBAIC0yNDEsNiArMjQzLDE2IEBAIHZvaWQgV2ViTGF5ZXI6OnNl
dERlYnVnQm9yZGVyV2lkdGgoZmxvYXQgd2lkdGgpCiAgICAgbV9wcml2YXRlLT5zZXREZWJ1Z0Jv
cmRlcldpZHRoKHdpZHRoKTsKIH0KIAordm9pZCBXZWJMYXllcjo6c2V0RmlsdGVycyhjb25zdCBX
ZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIG1fcHJpdmF0ZS0+c2V0RmlsdGVy
cyhmaWx0ZXJzLnRvRmlsdGVyT3BlcmF0aW9ucygpKTsKK30KKwordm9pZCBXZWJMYXllcjo6c2V0
QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sK
KyAgICBtX3ByaXZhdGUtPnNldEJhY2tncm91bmRGaWx0ZXJzKGZpbHRlcnMudG9GaWx0ZXJPcGVy
YXRpb25zKCkpOworfQorCiBXZWJMYXllcjo6V2ViTGF5ZXIoY29uc3QgUGFzc1JlZlB0cjxMYXll
ckNocm9taXVtPiYgbm9kZSkKICAgICA6IG1fcHJpdmF0ZShub2RlKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137462</attachid>
            <date>2012-04-16 19:35:34 -0700</date>
            <delta_ts>2012-04-16 22:28:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-80054-20120416223533.patch</filename>
            <type>text/plain</type>
            <size>21625</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyNDBjNjA2ZWM3YTFl
MGVlYmIzYWY2NjljNWM1ZDU1NzU0MWUwMDc5Li5iYWYzNDYyMzQ4MGIwMmJlOTQ1MWU1MjkyMWYz
ZjI2ODdmZGVlMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0wNC0xNiAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEV4cG9zZSBjb21wb3NpdG9yIGZpbHRlcnMgdG8gQXVyYSB0aHJvdWdoIFdlYkxheWVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDA1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgorCisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL1dlYkZpbHRlck9wZXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJGaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWx0ZXJPcGVy
YXRpb246OldlYkZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJCYXNpY0NvbG9yTWF0cml4
RmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFzaWNDb2xvck1hdHJpeEZp
bHRlck9wZXJhdGlvbjo6V2ViQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbik6CisgICAg
ICAgIChXZWJCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6V2ViQmFz
aWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJCbHVyRmls
dGVyT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmx1ckZpbHRlck9wZXJhdGlvbjo6
V2ViQmx1ckZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJEcm9wU2hhZG93RmlsdGVyT3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6
V2ViRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbik6CisgICAgICAgICogY2hyb21pdW0vcHVibGlj
L1dlYkZpbHRlck9wZXJhdGlvbnMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkxh
eWVyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTGF5ZXIpOgorCiAyMDEyLTA0
LTExICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBSZW1vdmUgdW51c2VkIGNvbXBvc2l0ZVRvVGV4dHVyZSAvIGNvbXBvc2l0ZU9mZnNj
cmVlbiBzZXR0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJjMTliOGYyOWFkY2MwN2I0OWQwZTUxNzliNjAx
MTg5OGZmODkyMC4uMWI3OTYwMjM0ZWZlY2E3YWFjYjZkNDMzM2IxNjM2Y2U4NDI4YWU2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTE2ICBEYW5hIEphbnNlbnMgIDxkYW5h
a2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRXhwb3NlIGNvbXBvc2l0b3Ig
ZmlsdGVycyB0byBBdXJhIHRocm91Z2ggV2ViTGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFt
ZXMgUm9iaW5zb24uCisKKyAgICAgICAgQWRkcyBXZWJGaWx0ZXJPcGVyYXRpb24gdGhhdCB3cmFw
cyBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24gYW5kCisgICAgICAgIFdlYkZpbHRlck9wZXJhdGlv
bnMgdGhhdCB3cmFwcyBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zLgorCisgICAgICAgIFdlIGFk
ZCBzdXBwb3J0IGZvciBtb3N0IG9mIHRoZSBGaWx0ZXJPcGVyYXRpb24gc3ViY2xhc3NlcywgYW5k
CisgICAgICAgIGFsbG93IHRoZSB1c2VyIHRvIHNldCB0aGUgV2ViRmlsdGVyT3BlcmF0aW9ucyBm
b3IgYm90aCBsYXllcgorICAgICAgICBjb250ZW50IGZpbHRlcnMgYW5kIGJhY2tncm91bmQgZmls
dGVycy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYkZpbHRlck9wZXJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
bjo6dG9GaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJCYXNpY0NvbXBvbmVu
dFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjp0b0ZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJsdXJGaWx0ZXJPcGVyYXRpb246OnRvRmlsdGVyT3BlcmF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6dG9GaWx0ZXJPcGVyYXRp
b24pOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmlsdGVyT3BlcmF0
aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9uczo6V2ViRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZpbHRlck9wZXJhdGlvbnM6OmFwcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRl
ck9wZXJhdGlvbnM6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9u
czo6dG9GaWx0ZXJPcGVyYXRpb25zKToKKwogMjAxMi0wNC0xNiAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgdG8gdXBkYXRlWk9yZGVyTGlz
dHNTbG93Q2FzZSB0byByZWJ1aWxkWk9yZGVyTGlzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggZTQ2MWNkZTViYWExYWE4MzI3YzI2NzU4NmU3ZjJiMDk2YjFmY2RmMy4uMDg3NTMwZGU5
YzM1MWYwNTA5NTM1OWExNGUzZmJhZDNiOGMzZjM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNC0xNiAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSBjb21wb3NpdG9yIGZpbHRl
cnMgdG8gQXVyYSB0aHJvdWdoIFdlYkxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MDA1NAorCisgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJv
Ymluc29uLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6c2V0RmlsdGVycyk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6c2V0QmFja2dyb3VuZEZpbHRlcnMp
OgorCiAyMDEyLTA0LTE2ICBUZXJyeSBBbmRlcnNvbiAgPHRkYW5kZXJzb25AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWxsb3cgV2ViR2VzdHVyZUV2ZW50IHRvIHN0b3JlIGZv
dXIgZmxvYXRpbmcgcG9pbnQgdmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjFjYWQzYzJjN2U0
YzZkNzU4MzViODg5NGMyMGI3OTZmMTIxMWU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaApAQCAtMCwwICsxLDEy
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViRmlsdGVyT3BlcmF0aW9uX2gKKyNkZWZpbmUgV2ViRmls
dGVyT3BlcmF0aW9uX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCisjaW5jbHVkZSAiV2Vi
Q29sb3IuaCIKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjZW5kaWYKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgRmlsdGVyT3BlcmF0aW9uOworfQorI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViRmlsdGVyT3BlcmF0aW9uIHsKKyNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0
aW9uPiB0b0ZpbHRlck9wZXJhdGlvbigpIGNvbnN0ID0gMDsKKyNlbmRpZgorCitwcm90ZWN0ZWQ6
CisgICAgV2ViRmlsdGVyT3BlcmF0aW9uKCkgeyB9Cit9OworCitzdHJ1Y3QgV2ViQmFzaWNDb2xv
ck1hdHJpeEZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBXZWJGaWx0ZXJPcGVyYXRpb24geworICAg
IGVudW0gRmlsdGVyVHlwZSB7CisgICAgICAgIEZpbHRlclR5cGVHcmF5c2NhbGUgPSAxLAorICAg
ICAgICBGaWx0ZXJUeXBlU2VwaWEgPSAyLAorICAgICAgICBGaWx0ZXJUeXBlU2F0dXJhdGUgPSAz
LAorICAgICAgICBGaWx0ZXJUeXBlSHVlUm90YXRlID0gNAorICAgIH07CisKKyAgICBXZWJCYXNp
Y0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKEZpbHRlclR5cGUgdHlwZSwgZmxvYXQgYW1vdW50
KQorICAgICAgICA6IHR5cGUodHlwZSkKKyAgICAgICAgLCBhbW91bnQoYW1vdW50KQorICAgIHsg
fQorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbj4gdG9GaWx0ZXJPcGVyYXRpb24oKSBjb25zdCBPVkVSUklE
RTsKKyNlbmRpZgorCisgICAgRmlsdGVyVHlwZSB0eXBlOworICAgIGZsb2F0IGFtb3VudDsKK307
CisKK3N0cnVjdCBXZWJCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uIDogcHVi
bGljIFdlYkZpbHRlck9wZXJhdGlvbiB7CisgICAgZW51bSBGaWx0ZXJUeXBlIHsKKyAgICAgICAg
RmlsdGVyVHlwZUludmVydCA9IDUsCisgICAgICAgIEZpbHRlclR5cGVCcmlnaHRuZXNzID0gNywK
KyAgICAgICAgRmlsdGVyVHlwZUNvbnRyYXN0ID0gOAorICAgICAgICAvLyBPcGFjaXR5IGlzIG1p
c3NpbmcgYmVjYXVzZSB0aGlzIGlzIG1vcmUgZXhwZW5zaXZlIHRoYW4ganVzdCBzZXR0aW5nIG9w
YWNpdHkgb24gdGhlIGxheWVyLgorICAgIH07CisKKyAgICBXZWJCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uKEZpbHRlclR5cGUgdHlwZSwgZmxvYXQgYW1vdW50KQorICAgICAg
ICA6IHR5cGUodHlwZSkKKyAgICAgICAgLCBhbW91bnQoYW1vdW50KQorICAgIHsgfQorCisjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZp
bHRlck9wZXJhdGlvbj4gdG9GaWx0ZXJPcGVyYXRpb24oKSBjb25zdCBPVkVSUklERTsKKyNlbmRp
ZgorCisgICAgRmlsdGVyVHlwZSB0eXBlOworICAgIGZsb2F0IGFtb3VudDsKK307CisKK3N0cnVj
dCBXZWJCbHVyRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIFdlYkZpbHRlck9wZXJhdGlvbiB7Cisg
ICAgZXhwbGljaXQgV2ViQmx1ckZpbHRlck9wZXJhdGlvbihpbnQgcGl4ZWxSYWRpdXMpIDogcGl4
ZWxSYWRpdXMocGl4ZWxSYWRpdXMpIHsgfQorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbj4gdG9GaWx0ZXJP
cGVyYXRpb24oKSBjb25zdCBPVkVSUklERTsKKyNlbmRpZgorCisgICAgaW50IHBpeGVsUmFkaXVz
OworfTsKKworY2xhc3MgV2ViRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBXZWJG
aWx0ZXJPcGVyYXRpb24geworICAgIFdlYkRyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24oaW50IHgs
IGludCB5LCBpbnQgc3RkRGV2aWF0aW9uLCBXZWJDb2xvciBjb2xvcikKKyAgICAgICAgOiB4KHgp
CisgICAgICAgICwgeSh5KQorICAgICAgICAsIHN0ZERldmlhdGlvbihzdGREZXZpYXRpb24pCisg
ICAgICAgICwgY29sb3IoY29sb3IpCisgICAgeyB9CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uPiB0b0Zp
bHRlck9wZXJhdGlvbigpIGNvbnN0IE9WRVJSSURFOworI2VuZGlmCisKKyAgICBpbnQgeDsKKyAg
ICBpbnQgeTsKKyAgICBpbnQgc3RkRGV2aWF0aW9uOworICAgIFdlYkNvbG9yIGNvbG9yOworfTsK
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJGaWx0ZXJPcGVyYXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U2ZjE2YjBjZmZlNTNmZmMzN2Yy
YTVmZWMwZDQ0OThjYWNhNWQ1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYkZpbHRlck9wZXJhdGlvbnNfaAorI2RlZmluZSBXZWJGaWx0ZXJPcGVy
YXRpb25zX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVP
d25QdHIuaCIKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKK30KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIFdlYkZpbHRlck9wZXJhdGlvbjsKKworLy8gQW4gb3JkZXJlZCBzZXQgb2YgZmls
dGVyIG9wZXJhdGlvbnMuCitjbGFzcyBXZWJGaWx0ZXJPcGVyYXRpb25zIHsKK3B1YmxpYzoKKyAg
ICBXZWJGaWx0ZXJPcGVyYXRpb25zKCk7CisKKyAgICB2b2lkIGFwcGVuZChjb25zdCBXZWJGaWx0
ZXJPcGVyYXRpb24mKTsKKworICAgIC8vIFJlbW92ZXMgYWxsIGZpbHRlciBvcGVyYXRpb25zLgor
ICAgIHZvaWQgY2xlYXIoKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIGNvbnN0
IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmIHRvRmlsdGVyT3BlcmF0aW9ucygpIGNvbnN0Owor
I2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZU93blB0cjxXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zPiBtX3ByaXZhdGU7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCmluZGV4IDNkOTE5ZmE0NjAzNTE1MWU1OWE0NTIy
YWI1OGRjNTAzZGVlOGNjZGIuLjEzNjE4ZWVkMmRkZjc5YzU3NWZlOWVlM2QyODI0MTg0Nzg3Mzk2
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIu
aAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKQEAgLTM0
LDYgKzM0LDcgQEAgY2xhc3MgU2tNYXRyaXg0NDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3Mg
TGF5ZXJDaHJvbWl1bTsgfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkZpbHRlck9w
ZXJhdGlvbnM7CiBzdHJ1Y3QgV2ViRmxvYXRQb2ludDsKIHN0cnVjdCBXZWJTaXplOwogCkBAIC05
NSw2ICs5NiwxNyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERlYnVnQm9y
ZGVyQ29sb3IoY29uc3QgV2ViQ29sb3ImKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RGVi
dWdCb3JkZXJXaWR0aChmbG9hdCk7CiAKKyAgICAvLyBDbGVhciB0aGUgZmlsdGVycyBpbiB1c2Ug
YnkgcGFzc2luZyBpbiBhIG5ld2x5IGluc3RhbnRpYXRlZAorICAgIC8vIFdlYkZpbHRlck9wZXJh
dGlvbnMgb2JqZWN0LgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdl
YkZpbHRlck9wZXJhdGlvbnMmKTsKKworICAgIC8vIEFwcGx5IGZpbHRlcnMgdG8gcGl4ZWxzIHRo
YXQgc2hvdyB0aHJvdWdoIHRoZSBiYWNrZ3JvdW5kIG9mIHRoaXMgbGF5ZXIuCisgICAgLy8gTm90
ZTogVGhlc2UgZmlsdGVycyBhcmUgb25seSBwb3NzaWJsZSBvbiBsYXllcnMgdGhhdCBhcmUgZHJh
d24gZGlyZWN0bHkKKyAgICAvLyB0byB0aGUgcm9vdCByZW5kZXIgc3VyZmFjZS4gVGhpcyBtZWFu
cyBpZiBhbiBhbmNlc3RvciBvZiB0aGUgYmFja2dyb3VuZC0KKyAgICAvLyBmaWx0ZXJlZCBsYXll
ciBzZXRzIGNlcnRhaW4gcHJvcGVydGllcyAob3BhY2l0eSwgdHJhbnNmb3JtcyksIGl0IG1heQor
ICAgIC8vIGNvbmZsaWN0IGFuZCBoaWRlIHRoZSBiYWNrZ3JvdW5kIGZpbHRlcnMuCisgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJh
dGlvbnMmKTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgdG8oKQogICAgIHsKICAgICAg
ICAgVCByZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYWM3OWIwMmEyYmRiODNlODlmNmMyZDAzYTE3
NWI1ZjQyOGI0ZWI4MS4uYjEwMGY5OGQ0NjMyZDU0NDFmNzBiYmY2YzcwNDU5OWFlOGIwYzEwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtODIxMiw2ICs4MjEyLDggQEAKICAgICAgICAgICAgICdwbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkRhdGEuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYkhUVFBCb2R5LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQTG9hZEluZm8uY3BwJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkZpbHRlck9wZXJhdGlvbi5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmlsdGVyT3BlcmF0aW9ucy5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSUNFQ2FuZGlkYXRl
RGVzY3JpcHRvci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViSUNFT3B0aW9ucy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViTWVkaWFIaW50cy5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJGaWx0ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJGaWx0ZXJPcGVyYXRpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkNWFhZjAyMzRkZWM2NDFmNmZmZmNlMTQ3MmM2ZWIxYjIzZTQ1ZTMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkZp
bHRlck9wZXJhdGlvbi5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbi5oIgorCisjaW5jbHVkZSA8cHVibGlj
L1dlYkZpbHRlck9wZXJhdGlvbi5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uPiBX
ZWJCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjp0b0ZpbHRlck9wZXJhdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmNyZWF0
ZShhbW91bnQsIHN0YXRpY19jYXN0PEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZT4odHlw
ZSkpOworfQorCitQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbj4gV2ViQmFzaWND
b21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6dG9GaWx0ZXJPcGVyYXRpb24oKSBjb25z
dAoreworICAgIHJldHVybiBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpj
cmVhdGUoYW1vdW50LCBzdGF0aWNfY2FzdDxGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGU+
KHR5cGUpKTsKK30KKworUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24+IFdlYkJs
dXJGaWx0ZXJPcGVyYXRpb246OnRvRmlsdGVyT3BlcmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aChwaXhlbFJhZGl1cywgRml4ZWQp
LCBGaWx0ZXJPcGVyYXRpb246OkJMVVIpOworfQorCitQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbHRl
ck9wZXJhdGlvbj4gV2ViRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6dG9GaWx0ZXJPcGVyYXRp
b24oKSBjb25zdAoreworICAgIHJldHVybiBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uOjpjcmVh
dGUoeCwgeSwgc3RkRGV2aWF0aW9uLCBjb2xvciwgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURP
Vyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJGaWx0ZXJPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViRmlsdGVyT3BlcmF0aW9u
cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDc1NWVjMjRmZjcxMjM4NDRiYTQwYjQwNmI0YmJkMjYzYTMyY2U2
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViRmlsdGVyT3BlcmF0aW9ucy5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKKworI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
RmlsdGVyT3BlcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJGaWx0ZXJPcGVyYXRp
b25zOjpXZWJGaWx0ZXJPcGVyYXRpb25zKCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQobmV3IEZp
bHRlck9wZXJhdGlvbnMoKSk7Cit9CisKK3ZvaWQgV2ViRmlsdGVyT3BlcmF0aW9uczo6YXBwZW5k
KGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbiYgZmlsdGVyKQoreworICAgIG1fcHJpdmF0ZS0+b3Bl
cmF0aW9ucygpLmFwcGVuZChmaWx0ZXIudG9GaWx0ZXJPcGVyYXRpb24oKSk7Cit9CisKK3ZvaWQg
V2ViRmlsdGVyT3BlcmF0aW9uczo6Y2xlYXIoKQoreworICAgIG1fcHJpdmF0ZS0+b3BlcmF0aW9u
cygpLmNsZWFyKCk7Cit9CisKK2NvbnN0IEZpbHRlck9wZXJhdGlvbnMmIFdlYkZpbHRlck9wZXJh
dGlvbnM6OnRvRmlsdGVyT3BlcmF0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuICptX3ByaXZh
dGUuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCmluZGV4IGZlNGMzZGQwOTM5MmNjZWNkM2JkNmVlZDMzMzQzZGVmNzQyZmZkYjguLjZk
NmE0OTk5MjViNGVmOTYzMmM2ZGE3ZDNjYTY4ZDE0NTEwNDMyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKQEAgLTMwOCw2ICszMDgsOCBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMv
cGxhdGZvcm0vV2ViRHJhZ0RhdGEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9y
bS9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3Bs
YXRmb3JtL1dlYkZpbGVTeXN0ZW0uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9y
bS9XZWJGaWx0ZXJPcGVyYXRpb24uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9y
bS9XZWJGaWx0ZXJPcGVyYXRpb25zLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZv
cm0vV2ViRmxvYXRQb2ludC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dl
YkZsb2F0UXVhZC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkZsb2F0
UmVjdC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1h
dGNoaW5nRW51bXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHAKaW5kZXggNDg1MWVjOTc5YTE1YjU3ODQ1MjFhNmY2YzJkMmE2NTVkNTRjZmZk
NS4uOTk1ZWE3NjQwMjA3MTQzYzJlNDkxNmEwZjcxODMyZTExNWNjOTY3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTQz
LDYgKzQzLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmlsZUVy
cm9yLmgiCiAjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCisjaW5jbHVkZSAiRmlsdGVyT3BlcmF0
aW9uLmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFNtb290
aGluZ01vZGUuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbkVycm9yLmgiCkBAIC0xMDUsNiArMTA2
LDcgQEAKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1
ZGUgInBsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyLmgiCiAjaW5jbHVkZSAicGxh
dGZvcm0vV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQuaCIKKyNpbmNsdWRlIDxwdWJs
aWMvV2ViRmlsdGVyT3BlcmF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKQEAgLTMxNyw2ICszMTksMTUgQEAgQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJFZGl0aW5nQWN0aW9uVHlwZWQsIEVkaXRvcklu
c2VydEFjdGlvblR5cGVkKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRWRpdGlu
Z0FjdGlvblBhc3RlZCwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKTsKIENPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViRWRpdGluZ0FjdGlvbkRyb3BwZWQsIEVkaXRvckluc2VydEFjdGlv
bkRyb3BwZWQpOwogCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkJhc2ljQ29sb3JN
YXRyaXhGaWx0ZXJPcGVyYXRpb246OkZpbHRlclR5cGVHcmF5c2NhbGUsIEZpbHRlck9wZXJhdGlv
bjo6R1JBWVNDQUxFKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQmFzaWNDb2xv
ck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6RmlsdGVyVHlwZVNlcGlhLCBGaWx0ZXJPcGVyYXRpb246
OlNFUElBKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQmFzaWNDb2xvck1hdHJp
eEZpbHRlck9wZXJhdGlvbjo6RmlsdGVyVHlwZVNhdHVyYXRlLCBGaWx0ZXJPcGVyYXRpb246OlNB
VFVSQVRFKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQmFzaWNDb2xvck1hdHJp
eEZpbHRlck9wZXJhdGlvbjo6RmlsdGVyVHlwZUh1ZVJvdGF0ZSwgRmlsdGVyT3BlcmF0aW9uOjpI
VUVfUk9UQVRFKTsKKworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJCYXNpY0NvbXBv
bmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpGaWx0ZXJUeXBlSW52ZXJ0LCBGaWx0ZXJPcGVy
YXRpb246OklOVkVSVCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkJhc2ljQ29t
cG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OkZpbHRlclR5cGVCcmlnaHRuZXNzLCBGaWx0
ZXJPcGVyYXRpb246OkJSSUdIVE5FU1MpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShX
ZWJCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpGaWx0ZXJUeXBlQ29udHJh
c3QsIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1QpOworCiBDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYkZvbnREZXNjcmlwdGlvbjo6R2VuZXJpY0ZhbWlseU5vbmUsIEZvbnREZXNjcmlw
dGlvbjo6Tm9GYW1pbHkpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGb250RGVz
Y3JpcHRpb246OkdlbmVyaWNGYW1pbHlTdGFuZGFyZCwgRm9udERlc2NyaXB0aW9uOjpTdGFuZGFy
ZEZhbWlseSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZvbnREZXNjcmlwdGlv
bjo6R2VuZXJpY0ZhbWlseVNlcmlmLCBGb250RGVzY3JpcHRpb246OlNlcmlmRmFtaWx5KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAppbmRleCBmMzFjNWE4YzNlMzAwOTFi
NGI2ZWM0ZDY4ZmVkOGEyNjc2MjQxMDFhLi42MTE3MzM4Y2QzMDA5NGE1MDRiODQwMmUxZTAyMjhl
ODdlZTk0MGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCkBAIC0y
NiwxNCArMjYsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJMYXllci5oIgogCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oIgogI2luY2x1
ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNrTWF0
cml4NDQuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIldl
YkxheWVySW1wbC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaCIKICNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJTaXplLmgiCiAKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3Bl
cmF0aW9ucy5oPgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIHsKQEAg
LTI0MSw2ICsyNDMsMTYgQEAgdm9pZCBXZWJMYXllcjo6c2V0RGVidWdCb3JkZXJXaWR0aChmbG9h
dCB3aWR0aCkKICAgICBtX3ByaXZhdGUtPnNldERlYnVnQm9yZGVyV2lkdGgod2lkdGgpOwogfQog
Cit2b2lkIFdlYkxheWVyOjpzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMpCit7CisgICAgbV9wcml2YXRlLT5zZXRGaWx0ZXJzKGZpbHRlcnMudG9GaWx0ZXJPcGVy
YXRpb25zKCkpOworfQorCit2b2lkIFdlYkxheWVyOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25z
dCBXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIG1fcHJpdmF0ZS0+c2V0QmFj
a2dyb3VuZEZpbHRlcnMoZmlsdGVycy50b0ZpbHRlck9wZXJhdGlvbnMoKSk7Cit9CisKIFdlYkxh
eWVyOjpXZWJMYXllcihjb25zdCBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+JiBub2RlKQogICAg
IDogbV9wcml2YXRlKG5vZGUpCiB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>