<?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>63688</bug_id>
          
          <creation_ts>2011-06-30 00:02:59 -0700</creation_ts>
          <short_desc>Refactoring: ExceptionCode value which never become non-zero should be replaced with NeverThrown</short_desc>
          <delta_ts>2012-04-28 08:43:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>430210</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-06-30 00:02:59 -0700</bug_when>
    <thetext>This refactoring will introduce a temporal object which replaces
our tedious pattern like this:

ExceptionCode ec = 0;
weKnowThisNeverFail(ec);
ASSERT(!ec);

We can have a helper class like this:
weKnowThisNeverFail(NeverThrown());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430213</commentid>
    <comment_count>1</comment_count>
      <attachid>99248</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-06-30 00:20:11 -0700</bug_when>
    <thetext>Created attachment 99248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430216</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-06-30 00:21:13 -0700</bug_when>
    <thetext>I wonder if this matches the WebKit taste. But we should get bored to write ExceptionCode ec =.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430219</commentid>
    <comment_count>3</comment_count>
      <attachid>99248</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-30 00:28:36 -0700</bug_when>
    <thetext>Comment on attachment 99248
Patch

We could even make an enum which auto-converts to this class to get rid of the ().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430237</commentid>
    <comment_count>4</comment_count>
      <attachid>99252</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-06-30 01:01:08 -0700</bug_when>
    <thetext>Created attachment 99252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430241</commentid>
    <comment_count>5</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-06-30 01:03:38 -0700</bug_when>
    <thetext>&gt; We could even make an enum which auto-converts to this class to get rid of the ().
Tried but compiler didn&apos;t allow me to do it.
It looks because we need to level of conversion:
NeverThrown(enum) -&gt; NeverThrownWapper(class) -&gt; ExceptionCode&amp;
The compiler cannot find this type of conversion. for type matching.

hayato@chromium.org also suggest that this kind of magic should be visually explicit.
So I just adopt a macro called NEVER_THROWN.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430419</commentid>
    <comment_count>6</comment_count>
      <attachid>99252</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-30 08:10:46 -0700</bug_when>
    <thetext>Comment on attachment 99252
Patch

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

&gt; Source/WebCore/dom/NeverThrown.h:33
&gt; +#include &quot;ExceptionCode.h&quot;

It seems a shame to include this just for the typedef. We often just do typedef int ExceptionCode elsewhere, and I think we could do that here as well.

&gt; Source/WebCore/dom/NeverThrown.h:39
&gt; +class NeverThrownWrapper {

I think we need a name that is more specific. I never talk about “throwing” exceptions myself, even though that’s the name in JavaScript. I think the sense we want for the name is not “an exception that is never thrown”, but rather “a place where we know an exception can never happen”. This is sort of an assertion that an exception will not occur. I think perhaps NoExceptionAssertion is the right name for the class. Or maybe someone can shorten that.

&gt; Source/WebCore/dom/NeverThrown.h:50
&gt; +    : m_code(0)

The initialization to zero is only needed if exceptions are enabled. I suggest putting it in an ifdef.

&gt; Source/WebCore/dom/NeverThrown.h:56
&gt; +    ASSERT(!m_code);

When this assertion does fire in a build not running under a debugger, is it easy to figure out which line of code threw the exception?

&gt; Source/WebCore/dom/NeverThrown.h:59
&gt; +#define NEVER_THROWN NeverThrownWrapper()

I don’t think we really need a macro for this. I liked the way you had it before in the first patch better.

&gt; Source/WebCore/html/HTMLDetailsElement.cpp:161
&gt; +        defaultSummary-&gt;appendChild(Text::create(document(), defaultDetailsSummaryText()), NEVER_THROWN);

This is much better than constantly passing ec, but I think that for most cases it would be even better to have functions without the ExceptionCode&amp; argument. We need the ExceptionCode&amp; argument to communicate exceptions to the DOM bindings for the DOM itself, but outside of that I think we should strive to leave out these ExceptionCode&amp; arguments.

And for basic functions like appendChild that are in the DOM but also need to be used extensively inside WebCore, we should have alternate versions, either overloads or separate functions, for internal use that do not take ExceptionCode&amp;.

So the examples you changed in this patch would *not* be ones where I would use the new class, but rather where I would use a new appendChild. I would eliminate the boolean argument in the non-ExceptionCode function, and have both an overload of appendChild without ExceptionCode&amp; and a new appendChildLazyAttach without an ExceptionCode&amp; argument.

You can see an example of this in Element::setAttribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431037</commentid>
    <comment_count>7</comment_count>
      <attachid>99440</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-01 00:50:38 -0700</bug_when>
    <thetext>Created attachment 99440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431042</commentid>
    <comment_count>8</comment_count>
      <attachid>99440</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-01 01:04:00 -0700</bug_when>
    <thetext>Comment on attachment 99440
Patch

r- because of missing IgnoringExceptionCode.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431043</commentid>
    <comment_count>9</comment_count>
      <attachid>99442</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-01 01:09:30 -0700</bug_when>
    <thetext>Created attachment 99442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431044</commentid>
    <comment_count>10</comment_count>
      <attachid>99252</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-01 01:09:35 -0700</bug_when>
    <thetext>Comment on attachment 99252
Patch

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

Hi Darin, thank you for the feedback! I addressed points in the updated patch.

&gt;&gt; Source/WebCore/dom/NeverThrown.h:33
&gt;&gt; +#include &quot;ExceptionCode.h&quot;
&gt; 
&gt; It seems a shame to include this just for the typedef. We often just do typedef int ExceptionCode elsewhere, and I think we could do that here as well.

Well,  replaced it with a typedef.

&gt;&gt; Source/WebCore/dom/NeverThrown.h:39
&gt;&gt; +class NeverThrownWrapper {
&gt; 
&gt; I think we need a name that is more specific. I never talk about “throwing” exceptions myself, even though that’s the name in JavaScript. I think the sense we want for the name is not “an exception that is never thrown”, but rather “a place where we know an exception can never happen”. This is sort of an assertion that an exception will not occur. I think perhaps NoExceptionAssertion is the right name for the class. Or maybe someone can shorten that.

I noticed that in many case the passed ExceptionCode is not (and should not) checked at all. 
So I splited the class into 2: IgnoringExceptionCode for non-checked one (which is the default) and 
one with assertion.

&gt;&gt; Source/WebCore/dom/NeverThrown.h:50
&gt;&gt; +    : m_code(0)
&gt; 
&gt; The initialization to zero is only needed if exceptions are enabled. I suggest putting it in an ifdef.

Sure. done.

&gt;&gt; Source/WebCore/dom/NeverThrown.h:56
&gt;&gt; +    ASSERT(!m_code);
&gt; 
&gt; When this assertion does fire in a build not running under a debugger, is it easy to figure out which line of code threw the exception?

Good point. I added the code location information (which is enabled only unless ASSETION_DISABLED

&gt;&gt; Source/WebCore/dom/NeverThrown.h:59
&gt;&gt; +#define NEVER_THROWN NeverThrownWrapper()
&gt; 
&gt; I don’t think we really need a macro for this. I liked the way you had it before in the first patch better.

That&apos;s true.
On the other hand, we need a macro for capturing the code location.
I define a macro ASSERT_NEVER_THROWN, which is only used where ASSERT was originally used.

&gt;&gt; Source/WebCore/html/HTMLDetailsElement.cpp:161
&gt;&gt; +        defaultSummary-&gt;appendChild(Text::create(document(), defaultDetailsSummaryText()), NEVER_THROWN);
&gt; 
&gt; This is much better than constantly passing ec, but I think that for most cases it would be even better to have functions without the ExceptionCode&amp; argument. We need the ExceptionCode&amp; argument to communicate exceptions to the DOM bindings for the DOM itself, but outside of that I think we should strive to leave out these ExceptionCode&amp; arguments.
&gt; 
&gt; And for basic functions like appendChild that are in the DOM but also need to be used extensively inside WebCore, we should have alternate versions, either overloads or separate functions, for internal use that do not take ExceptionCode&amp;.
&gt; 
&gt; So the examples you changed in this patch would *not* be ones where I would use the new class, but rather where I would use a new appendChild. I would eliminate the boolean argument in the non-ExceptionCode function, and have both an overload of appendChild without ExceptionCode&amp; and a new appendChildLazyAttach without an ExceptionCode&amp; argument.
&gt; 
&gt; You can see an example of this in Element::setAttribute.

That&apos;s totally true.
The updated patch uses IgnoringExceptionCode as the default value for ExceptionCode parameters.
We now eliminate many existing ExceptionCode usage with doing so.
In many case having a default parameter is more handy than defining alternative version.
In some case an alternative version might be preferable though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431045</commentid>
    <comment_count>11</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-01 01:10:35 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 99440 [details])
&gt; r- because of missing IgnoringExceptionCode.h.
Ouch. Added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431054</commentid>
    <comment_count>12</comment_count>
      <attachid>99442</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-01 01:24:28 -0700</bug_when>
    <thetext>Comment on attachment 99442
Patch

Attachment 99442 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/8970364</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431059</commentid>
    <comment_count>13</comment_count>
      <attachid>99442</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-01 01:35:34 -0700</bug_when>
    <thetext>Comment on attachment 99442
Patch

Attachment 99442 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8962754</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431069</commentid>
    <comment_count>14</comment_count>
      <attachid>99442</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-01 02:44:05 -0700</bug_when>
    <thetext>Comment on attachment 99442
Patch

Attachment 99442 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/8970374</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431073</commentid>
    <comment_count>15</comment_count>
      <attachid>99442</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-01 02:59:14 -0700</bug_when>
    <thetext>Comment on attachment 99442
Patch

Attachment 99442 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8963779</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431083</commentid>
    <comment_count>16</comment_count>
      <attachid>99442</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-07-01 03:27:35 -0700</bug_when>
    <thetext>Comment on attachment 99442
Patch

Attachment 99442 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/8959998</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431084</commentid>
    <comment_count>17</comment_count>
      <attachid>99442</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-07-01 03:36:48 -0700</bug_when>
    <thetext>Comment on attachment 99442
Patch

Attachment 99442 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/8963775</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431086</commentid>
    <comment_count>18</comment_count>
      <attachid>99442</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-01 03:46:10 -0700</bug_when>
    <thetext>Comment on attachment 99442
Patch

Attachment 99442 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/8974063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431088</commentid>
    <comment_count>19</comment_count>
      <attachid>99455</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-01 03:58:29 -0700</bug_when>
    <thetext>Created attachment 99455
Fixing release builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431181</commentid>
    <comment_count>20</comment_count>
      <attachid>99455</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-01 08:51:08 -0700</bug_when>
    <thetext>Comment on attachment 99455
Fixing release builds

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

This patch changes far too much at once. We need to be careful about where we choose to ignore exception codes and where we choose to check them. Almost all the examples here that are ignoring exceptions should instead be asserting them by default.

Lets do a smaller version of this patch that tackles a much smaller set of functions at first. I know you held back to only functions in the dom directory, but I think this needs more thought for each function.

Specifically, adding a checker to assert there is no exception by default should be the first thing we consider for any given function. Ignoring the exception instead should be done only rarely when that is helpful for a reason specific to that function.

&gt; Source/WebCore/dom/CharacterData.h:33
&gt; -    void setData(const String&amp;, ExceptionCode&amp;);
&gt; +    void setData(const String&amp;, ExceptionCode&amp; = IgnoringExceptionCode());

This should not ignore the exception code by default. The only way we’d get an exception would be if the node was read-only. At the moment that isn’t even implemented!

Generally speaking the default should be to assert the exception code, not ignore it, and this is a perfect example.

&gt; Source/WebCore/dom/CharacterData.h:35
&gt; +    String substringData(unsigned offset, unsigned count, ExceptionCode&amp; = IgnoringExceptionCode());

Since the behavior here is to return the null string if the offset is past the end of the data, I suppose we could default to ignoring the exception. But I would prefer that the default be to check the exception, and the call sites that need to be tolerant can explicitly ask to ignore.

&gt; Source/WebCore/dom/CharacterData.h:36
&gt; +    void appendData(const String&amp;, ExceptionCode&amp; = IgnoringExceptionCode());

Since this will just throw away the new data if the node is read-only, this should assert the exception code, not ignore it.

&gt; Source/WebCore/dom/CharacterData.h:70
&gt; +    void checkCharDataOperation(unsigned offset, ExceptionCode&amp; = IgnoringExceptionCode());

The only reason to call this function is to set the exception code. This should not have a default argument for the ExceptionCode&amp;.

&gt; Source/WebCore/dom/IgnoringExceptionCode.h:39
&gt; +class IgnoringExceptionCode {

The grammar here is not right. Class names should be nouns. Given this name, an object of this class would be an &quot;ignoring exception code&quot;? That’s not good terminology.

I think IgnoredExceptionCode would be an OK name, although it’s a pretty long name. A possibly-better name is ExceptionCodeIgnorer or ExceptionIgnorer.

&gt; Source/WebCore/dom/IgnoringExceptionCode.h:51
&gt; +#if !defined(ASSERT_DISABLED)
&gt; +    : m_code(0)
&gt; +#endif

If we are ignoring the exception code then we don’t want to initialize m_code at all. The only reason we have this here is that this class is not really the “ignored exception code” class, since we plan to derive from it and not ignore the exception code!

There’s no reason t have this unclear design. I’d rather see repeated code.

&gt; Source/WebCore/dom/IgnoringExceptionCode.h:76
&gt; +class NeverThrownWithLocation : public IgnoringExceptionCode {
&gt; +public:
&gt; +    NeverThrownWithLocation(const char*, size_t, const char*);
&gt; +    ~NeverThrownWithLocation();
&gt; +
&gt; +private:
&gt; +    const char* m_file;
&gt; +    size_t m_line;
&gt; +    const char* m_function;
&gt; +};
&gt; +
&gt; +inline NeverThrownWithLocation::NeverThrownWithLocation(const char* file, size_t line, const char* function)
&gt; +    : m_file(file), m_line(line), m_function(function)
&gt; +{
&gt; +}
&gt; +
&gt; +inline NeverThrownWithLocation::~NeverThrownWithLocation()
&gt; +{
&gt; +    ASSERT_AT(!m_code, m_file, m_line, m_function);
&gt; +}
&gt; +
&gt; +}

This entire class should be inside an #if !ASSERT_DISABLED since we don’t want to use it at all in that case.

This is a misuse of inheritance. A derived class should not contradict something from a base class. The classic example is that ellipse should not inherit from circle, because an ellipse is not a circle. So having a class that asserts an exception code is zero be a subclass of something called “ignored exception code” is not good design.

A class name should be a noun phrase describing the object. The name &quot;never thrown with location&quot; is not good because it’s not sensible to say “this object is a never thrown with location”.

I would call the class something like ExceptionCodeAssertionChecker. Or NoExceptionAssertionChecker.

&gt; Source/WebCore/dom/IgnoringExceptionCode.h:82
&gt; +#if ASSERT_DISABLED
&gt; +#define ASSERT_NEVER_THROWN WebCore::IgnoringExceptionCode()
&gt; +#else
&gt; +#define ASSERT_NEVER_THROWN WebCore::NeverThrownWithLocation(__FILE__, __LINE__, WTF_PRETTY_FUNCTION)
&gt; +#endif

I am not fond of “never thrown” as a way to say there is no exception. I would prefer ASSERT_NO_EXCEPTION.

It’s neat that we can tell you exactly where the exception occurred if you use the macro at the call site, but generally I don’t think callers should be thinking about this at all. I think that most of the DOM functions should default to asserting there is no exception. There are very few DOM functions where we’d want to call them internally and actually ignore the exception.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431182</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-01 08:51:51 -0700</bug_when>
    <thetext>I commented on the first few functions where the ignorer was added. I didn’t try to review all of them at this time, because the considerations for the first few may well apply to many others.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431809</commentid>
    <comment_count>22</comment_count>
      <attachid>99598</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-03 22:42:59 -0700</bug_when>
    <thetext>Created attachment 99598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431819</commentid>
    <comment_count>23</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-03 23:15:15 -0700</bug_when>
    <thetext>Hi Darin, thank you for having another turn!
I agree your concern about the size of this change. 
So I changed to apply this for a subset of Range method, where I relatively know well.

(In reply to comment #20)
&gt; (From update of attachment 99455 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=99455&amp;action=review
&gt; 
&gt; This patch changes far too much at once. We need to be careful about where we choose to ignore exception codes and where we choose to check them. Almost all the examples here that are ignoring exceptions should instead be asserting them by default.
&gt; 
&gt; Lets do a smaller version of this patch that tackles a much smaller set of functions at first. I know you held back to only functions in the dom directory, but I think this needs more thought for each function.
&gt; 
&gt; Specifically, adding a checker to assert there is no exception by default should be the first thing we consider for any given function. Ignoring the exception instead should be done only rarely when that is helpful for a reason specific to that function.

Well, there are many paths that don&apos;t assert the exception code, and some of them actually
ignore the error intentionally.
In this change, I leave such kind of delicate parts and start from a obvious one
where original code asserts the exception code, or it should never throw an error.

&gt; &gt; Source/WebCore/dom/IgnoringExceptionCode.h:51
&gt; &gt; +#if !defined(ASSERT_DISABLED)
&gt; &gt; +    : m_code(0)
&gt; &gt; +#endif
&gt; 
&gt; If we are ignoring the exception code then we don’t want to initialize m_code at all. The only reason we have this here is that this class is not really the “ignored exception code” class, since we plan to derive from it and not ignore the exception code!
&gt; 
&gt; There’s no reason t have this unclear design. I’d rather see repeated code.
&gt; 
OK, 

&gt; &gt; Source/WebCore/dom/IgnoringExceptionCode.h:76
&gt; &gt; +class NeverThrownWithLocation : public IgnoringExceptionCode {
&gt; &gt; +public:
&gt; &gt; +    NeverThrownWithLocation(const char*, size_t, const char*);
&gt; &gt; +    ~NeverThrownWithLocation();
&gt; &gt; +
&gt; &gt; +private:
&gt; &gt; +    const char* m_file;
&gt; &gt; +    size_t m_line;
&gt; &gt; +    const char* m_function;
&gt; &gt; +};
&gt; &gt; +
&gt; &gt; +inline NeverThrownWithLocation::NeverThrownWithLocation(const char* file, size_t line, const char* function)
&gt; &gt; +    : m_file(file), m_line(line), m_function(function)
&gt; &gt; +{
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +inline NeverThrownWithLocation::~NeverThrownWithLocation()
&gt; &gt; +{
&gt; &gt; +    ASSERT_AT(!m_code, m_file, m_line, m_function);
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +}
&gt; 
&gt; This entire class should be inside an #if !ASSERT_DISABLED since we don’t want to use it at all in that case.
Done.

&gt; 
&gt; This is a misuse of inheritance. A derived class should not contradict something from a base class. The classic example is that ellipse should not inherit from circle, because an ellipse is not a circle. So having a class that asserts an exception code is zero be a subclass of something called “ignored exception code” is not good design.
That&apos;s true. I introduced a superclass called ExceptionCodePlaceholder, 
then make two subclasses named IgnorableExceptionCode and NoExceptionAssertionChecker.

&gt; 
&gt; A class name should be a noun phrase describing the object. The name &quot;never thrown with location&quot; is not good because it’s not sensible to say “this object is a never thrown with location”.
&gt; 
&gt; I would call the class something like ExceptionCodeAssertionChecker. Or NoExceptionAssertionChecker.
&gt; 
&gt; &gt; Source/WebCore/dom/IgnoringExceptionCode.h:82
&gt; &gt; +#if ASSERT_DISABLED
&gt; &gt; +#define ASSERT_NEVER_THROWN WebCore::IgnoringExceptionCode()
&gt; &gt; +#else
&gt; &gt; +#define ASSERT_NEVER_THROWN WebCore::NeverThrownWithLocation(__FILE__, __LINE__, WTF_PRETTY_FUNCTION)
&gt; &gt; +#endif
&gt; 
&gt; I am not fond of “never thrown” as a way to say there is no exception. I would prefer ASSERT_NO_EXCEPTION.
Renamed.

&gt; 
&gt; It’s neat that we can tell you exactly where the exception occurred if you use the macro at the call site, but generally I don’t think callers should be thinking about this at all. I think that most of the DOM functions should default to asserting there is no exception. There are very few DOM functions where we’d want to call them internally and actually ignore the exception.
Agreed. So I keep ASSERT_NO_EXCEPTION and use it as a default parameter.
It&apos;s less powerful than using it on caller side, but it stays useful in certain level
because we can see which the problematic callee is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432065</commentid>
    <comment_count>24</comment_count>
      <attachid>99659</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-04 17:44:55 -0700</bug_when>
    <thetext>Created attachment 99659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434629</commentid>
    <comment_count>25</comment_count>
      <attachid>99659</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-10 18:13:54 -0700</bug_when>
    <thetext>Comment on attachment 99659
Patch

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

Otherwise, this looks good.

&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:30
&gt; + */
&gt; +#ifndef ExceptionCodePlaceholder_h

Normally we put a blank line there before the #ifndef.

&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:39
&gt; +class ExceptionCodePlaceholder {

Probably should use WTF_MAKE_NONCOPYABLE on this class.

&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:55
&gt; +
&gt; +

We use single blank lines, not double.

&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:58
&gt; +public:
&gt; +    IgnorableExceptionCode() { }

This explicit public constructor is not needed, and gives us the same constructor we’d get if we did not explicitly define the constructor. We should just leave it out.

&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:61
&gt; +#if !defined(ASSERT_DISABLED)

ASSERT_DISABLED is a macro with a value, not a macro that has definition vs. non-definition. So this must be:

    #if !ASSERT_DISABLED

I also suggest reversing the sense and putting the simpler macro first.

&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:65
&gt; +    NoExceptionAssertionChecker(const char*, size_t, const char*);

Arguments need names here. The types do not make them clear.

The type size_t is wrong here. The __LINE__ macro has type int, and you should use either int or unsigned here, not size_t.

&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:90
&gt; +#define ASSERT_NO_EXCEPTION WebCore::NoExceptionAssertionChecker(__FILE__, __LINE__, WTF_PRETTY_FUNCTION)
&gt; +#else
&gt; +#define ASSERT_NO_EXCEPTION WebCore::IgnorableExceptionCode()
&gt; +#endif

Would be better to use ::WebCore:: rather than just WebCore:: in these macros.

More blank lines would make the #if easier to read.

&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:94
&gt; +
&gt; +

We use single blank lines, not double.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434630</commentid>
    <comment_count>26</comment_count>
      <attachid>99659</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-10 18:14:30 -0700</bug_when>
    <thetext>Comment on attachment 99659
Patch

review- because of the incorrect use of ASSERT_DISABLED</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435446</commentid>
    <comment_count>27</comment_count>
      <attachid>100429</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-11 19:51:22 -0700</bug_when>
    <thetext>Created attachment 100429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435449</commentid>
    <comment_count>28</comment_count>
      <attachid>99659</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-11 19:55:44 -0700</bug_when>
    <thetext>Comment on attachment 99659
Patch

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

Hi Darin, Thanks you for coming back and taking a look again!
I updated the patch to address the feedback.
Could you take another (hopefully final) round when you have time?
Thanks in advance.

--

&gt;&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:30
&gt;&gt; +#ifndef ExceptionCodePlaceholder_h
&gt; 
&gt; Normally we put a blank line there before the #ifndef.

Added a line.

&gt;&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:39
&gt;&gt; +class ExceptionCodePlaceholder {
&gt; 
&gt; Probably should use WTF_MAKE_NONCOPYABLE on this class.

Done.

&gt;&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:55
&gt;&gt; +
&gt; 
&gt; We use single blank lines, not double.

Removed a line.

&gt;&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:58
&gt;&gt; +    IgnorableExceptionCode() { }
&gt; 
&gt; This explicit public constructor is not needed, and gives us the same constructor we’d get if we did not explicitly define the constructor. We should just leave it out.

Ah, yes. Removed.

&gt;&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:61
&gt;&gt; +#if !defined(ASSERT_DISABLED)
&gt; 
&gt; ASSERT_DISABLED is a macro with a value, not a macro that has definition vs. non-definition. So this must be:
&gt; 
&gt;     #if !ASSERT_DISABLED
&gt; 
&gt; I also suggest reversing the sense and putting the simpler macro first.

Thanks for Good catch!!
I fixed it.

&gt;&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:65
&gt;&gt; +    NoExceptionAssertionChecker(const char*, size_t, const char*);
&gt; 
&gt; Arguments need names here. The types do not make them clear.
&gt; 
&gt; The type size_t is wrong here. The __LINE__ macro has type int, and you should use either int or unsigned here, not size_t.

OK. turned it into int.

&gt;&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:90
&gt;&gt; +#endif
&gt; 
&gt; Would be better to use ::WebCore:: rather than just WebCore:: in these macros.
&gt; 
&gt; More blank lines would make the #if easier to read.

Sure. adding &quot;::&quot; prefix, organizing code with additional blank lines.

&gt;&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:94
&gt;&gt; +
&gt; 
&gt; We use single blank lines, not double.

Removed a line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435730</commentid>
    <comment_count>29</comment_count>
      <attachid>100429</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-12 10:33:40 -0700</bug_when>
    <thetext>Comment on attachment 100429
Patch

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

review- because of the Windows problem; otherwise looks good

&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:91
&gt; +#define ASSERT_NO_EXCEPTION ::WebCore::NoExceptionAssertionChecker(__FILE__, __LINE__, WTF_PRETTY_FUNCTION)

The function-name-finding part of this does not work when the macro is used outside a function, and on Windows it won’t compile. That’s what the Windows EWS bot is telling us. I suggest leaving out the function since the vast majority of uses of this macro will be outside any function. Or you could keep this and leave out the function names when compiling with the Windows compiler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436191</commentid>
    <comment_count>30</comment_count>
      <attachid>100614</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-12 20:09:56 -0700</bug_when>
    <thetext>Created attachment 100614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436192</commentid>
    <comment_count>31</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-12 20:11:04 -0700</bug_when>
    <thetext>&gt; The function-name-finding part of this does not work when the macro is used outside a function, and on Windows it won’t compile. That’s what the Windows EWS bot is telling us. I suggest leaving out the function since the vast majority of uses of this macro will be outside any function. Or you could keep this and leave out the function names when compiling with the Windows compiler.
Oops, I missed the failure...
An update patch no longer has function name in the macro.
Thanks for the catch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436257</commentid>
    <comment_count>32</comment_count>
      <attachid>100614</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-12 22:39:20 -0700</bug_when>
    <thetext>Comment on attachment 100614
Patch

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

&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:78
&gt; +inline NoExceptionAssertionChecker::NoExceptionAssertionChecker(const char* file, int line)

Normally when we disable assertions we also disable inlining. I don’t think we really would want this constructor to be inline if we had a .cpp file to put it in. Same for the destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436374</commentid>
    <comment_count>33</comment_count>
      <attachid>100614</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-13 05:24:48 -0700</bug_when>
    <thetext>Comment on attachment 100614
Patch

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

Thanks for take a look! I&apos;m landing this...

&gt;&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:78
&gt;&gt; +inline NoExceptionAssertionChecker::NoExceptionAssertionChecker(const char* file, int line)
&gt; 
&gt; Normally when we disable assertions we also disable inlining. I don’t think we really would want this constructor to be inline if we had a .cpp file to put it in. Same for the destructor.

Well, I thought this file as same as Assertions.h so omitted a .cpp file for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436400</commentid>
    <comment_count>34</comment_count>
      <attachid>100614</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-13 06:31:38 -0700</bug_when>
    <thetext>Comment on attachment 100614
Patch

Clearing flags on attachment: 100614

Committed r90911: &lt;http://trac.webkit.org/changeset/90911&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436401</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-13 06:31:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436508</commentid>
    <comment_count>36</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-13 10:28:21 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; &gt;&gt; Source/WebCore/dom/ExceptionCodePlaceholder.h:78
&gt; &gt;&gt; +inline NoExceptionAssertionChecker::NoExceptionAssertionChecker(const char* file, int line)
&gt; &gt; 
&gt; &gt; Normally when we disable assertions we also disable inlining. I don’t think we really would want this constructor to be inline if we had a .cpp file to put it in. Same for the destructor.
&gt; 
&gt; Well, I thought this file as same as Assertions.h so omitted a .cpp file for this.

I don’t understand what you are saying. There’s an Assertions.cpp file. Why wouldn’t there be an ExceptionCodePlaceholder.cpp file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436780</commentid>
    <comment_count>37</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-13 17:27:32 -0700</bug_when>
    <thetext>&gt; I don’t understand what you are saying. There’s an Assertions.cpp file. Why wouldn’t there be an ExceptionCodePlaceholder.cpp file?

Oops, I totally missed it. I&apos;ll add ExceptionCodePlaceholder.cpp.
Thanks for pointing that out...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436929</commentid>
    <comment_count>38</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-13 22:08:46 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; &gt; I don’t understand what you are saying. There’s an Assertions.cpp file. Why wouldn’t there be an ExceptionCodePlaceholder.cpp file?
&gt; 
&gt; Oops, I totally missed it. I&apos;ll add ExceptionCodePlaceholder.cpp.
Uploaded a fix: https://bugs.webkit.org/show_bug.cgi?id=64503</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612204</commentid>
    <comment_count>39</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-28 01:33:08 -0700</bug_when>
    <thetext>We should avoid using external API functions (which all functions that take ExceptionCode should be) for internal purposes. It confuses our architecture and can lead to poor code factoring. Conforming with unneeded DOM API behaviors can have performance impact.

This type makes using API functions internally easier and so takes us to wrong direction. Rather, we should think of ways to make it harder to do and easier to spot (for example by using a naming pattern). Further use of this type should be discouraged and we should eventually remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612276</commentid>
    <comment_count>40</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-04-28 08:43:18 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; We should avoid using external API functions (which all functions that take ExceptionCode should be) for internal purposes. It confuses our architecture and can lead to poor code factoring. Conforming with unneeded DOM API behaviors can have performance impact.
&gt; 
&gt; This type makes using API functions internally easier and so takes us to wrong direction. Rather, we should think of ways to make it harder to do and easier to spot (for example by using a naming pattern). Further use of this type should be discouraged and we should eventually remove it.

I agree with Antti, although I worded my concerns a bit differently. See what I said in comment #6:

(In reply to comment #6)
&gt; I think that for most cases it would be even better to have functions without the ExceptionCode&amp; argument. We need the ExceptionCode&amp; argument to communicate exceptions to the DOM bindings for the DOM itself, but outside of that I think we should strive to leave out these ExceptionCode&amp; arguments.
&gt; 
&gt; And for basic functions like appendChild that are in the DOM but also need to be used extensively inside WebCore, we should have alternate versions, either overloads or separate functions, for internal use that do not take ExceptionCode&amp;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99248</attachid>
            <date>2011-06-30 00:20:11 -0700</date>
            <delta_ts>2011-06-30 01:01:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63688-20110630162009.patch</filename>
            <type>text/plain</type>
            <size>10131</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTAwODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNzI5Yzc3MmJiM2JmZGFl
NGNkYTRkMGM0ZjI1ZjEwNjhmOTRlODA3Li41MGZjNGVlZTY2MzAzZjVhYjUwNmRmMDNjMjVmYmRm
YTEyNGJmNGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDYtMzAgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEV4Y2VwdGlvbkNvZGUgdmFsdWUg
d2hpY2ggbmV2ZXIgYmVjb21lIG5vbi16ZXJvIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIE5ldmVy
VGhyb3duLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjM2ODgKKyAgICAgICAgCisgICAgICAgIEludHJvZHVjZWQgTmV2ZXJUaHJvd24gY2xhc3MsIHdo
aWNoIGNhbiBiZSB1c2VkIGZvciBhIHBsYWNlaG9sZGVyIGZvcgorICAgICAgICBFeGNlcHRpb25D
b2RlIHdob3NlIHZhbHVlIGlzIGFsd2F5cyB6ZXJvLgorICAgICAgICAKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiBObyBiZWhhdmlvdXIgY2hhbmdlLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9OZXZlclRocm93bi5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok5lcnZlclRocm93bjo6b3BlcmF0b3IgRXhjZXB0aW9uQ29kZSYg
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5lcnZlclRocm93bjo6TmVydmVyVGhyb3duKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5lcnZlclRocm93bjo6fk5lcnZlclRocm93bik6CisgICAgICAgICogaHRt
bC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFpbHNF
bGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKwogMjAxMS0wNi0yOSAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDdkZTFhOGI5NTJjZTFjZDE2Yjk5MWRk
YTQ3NDgxMTBkYTM4NDUwNzUuLmExZDZjZmE4MDI0MjNiYmJmMWJlNTE1NzgwNDEwM2M5ZDJhYmNh
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTIwOSw2ICsxMjA5LDcgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vTmFtZU5vZGVMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9OZXZlclRocm93bi5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlRmlsdGVyQ29uZGl0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVGaWx0ZXJD
b25kaXRpb24uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYjA5MWViODc1NjI3YjU0M2FkNzYwNGUz
ZWQxNDg1ODAxZTgwYjFjYy4uMTg4OWU0YThhYmM3ZjcwZWZkYTNhMzkyOWJmYWFkZDlhNmZlNTY2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTM4LDYgKzUzOCw3IEBACiAgICAgICAgICAgICAnZG9t
L05hbWVkTm9kZU1hcC5oJywKICAgICAgICAgICAgICdkb20vTm9kZS5oJywKICAgICAgICAgICAg
ICdkb20vTm9kZUxpc3QuaCcsCisgICAgICAgICAgICAnZG9tL05ldmVyVGhyb3duLmgnLAogICAg
ICAgICAgICAgJ2RvbS9QZW5kaW5nU2NyaXB0LmgnLAogICAgICAgICAgICAgJ2RvbS9Qb3NpdGlv
bi5oJywKICAgICAgICAgICAgICdkb20vUXVhbGlmaWVkTmFtZS5oJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwN2ZmNzc0ZGQw
ZmUwZjE3NjQ1YjE5NGY5YjY5NmFmMGNkZjdjYjUzLi45ZWQxYTkxNDY2ZDE3MjZjZjQ2OWI4NDQ4
NTFmZWFmZGE4ZmNlZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMzA4LDYgKzMzMDgsNyBAQAogCQlBNzdCNDFBMDEyRTY3
NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzdCNDE5RjEyRTY3NUE5MDA1NDM0M0QgLyogVGV4
dEV2ZW50SW5wdXRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTc3RDAwMTIxMzNCMEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2luZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3RDAwMTExMzNC
MEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2luZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3ODQ5NDFCMEI1RkU1MDcwMDFFMjM3QSAvKiBDbGlw
Ym9hcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTc4NDk0MUEwQjVGRTUwNzAwMUUyMzdBIC8qIENsaXBib2FyZC5jcHAgKi87IH07CisJCUE3OEM3
RTQ4MTNCQzU4MkYwMDVFRDlEMiAvKiBOZXZlclRocm93bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4QzdFNDcxM0JDNTgxMDAwNUVEOUQyIC8qIE5l
dmVyVGhyb3duLmggKi87IH07CiAJCUE3OEU1MjZGMTM0NkJEMTcwMEFEOUMzMSAvKiBNZXRlclNo
YWRvd0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTc4RTUyNkQxMzQ2QkQxNzAwQUQ5QzMxIC8qIE1ldGVyU2hhZG93RWxlbWVudC5jcHAg
Ki87IH07CiAJCUE3OEU1MjcwMTM0NkJEMTcwMEFEOUMzMSAvKiBNZXRlclNoYWRvd0VsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OEU1MjZF
MTM0NkJEMTcwMEFEOUMzMSAvKiBNZXRlclNoYWRvd0VsZW1lbnQuaCAqLzsgfTsKIAkJQTc4RkUx
M0IxMjM2NkIxMDAwQUNFOEQwIC8qIFNwZWxsQ2hlY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzhGRTEzOTEyMzY2QjEwMDBBQ0U4RDAgLyog
U3BlbGxDaGVja2VyLmNwcCAqLzsgfTsKQEAgLTk4MjcsNiArOTgyOCw3IEBACiAJCUE3N0I0MTlG
MTJFNjc1QTkwMDU0MzQzRCAvKiBUZXh0RXZlbnRJbnB1dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGV4dEV2ZW50SW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3N0QwMDExMTMzQjBBRUIwMEQ2NjU4QyAvKiBUZXh0Q2hlY2tpbmcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dENoZWNraW5nLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3ODQ5NDFBMEI1RkU1MDcwMDFFMjM3QSAvKiBDbGlwYm9h
cmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaXBib2FyZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3OEM3RTQ3MTNCQzU4MTAwMDVFRDlE
MiAvKiBOZXZlclRocm93bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXZl
clRocm93bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzhFNTI2RDEzNDZCRDE3
MDBBRDlDMzEgLyogTWV0ZXJTaGFkb3dFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1ldGVyU2hhZG93RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3OEU1MjZFMTM0NkJEMTcwMEFEOUMzMSAvKiBNZXRlclNoYWRvd0VsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0ZXJTaGFkb3dFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3OEZFMTM5MTIzNjZCMTAwMEFDRThE
MCAvKiBTcGVsbENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3BlbGxDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NjY3
LDYgKzE5NjY5LDcgQEAKIAkJCQk4NUFDQTlGOTBBOUI2MzEwMDA2NzFFOTAgLyogTmFtZWROb2Rl
TWFwLmlkbCAqLywKIAkJCQlBODE4NzIxOTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0
LmNwcCAqLywKIAkJCQlBODE4NzIxMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0Lmgg
Ki8sCisJCQkJQTc4QzdFNDcxM0JDNTgxMDAwNUVEOUQyIC8qIE5ldmVyVGhyb3duLmggKi8sCiAJ
CQkJQThDNEE3RUUwOUQ1NjMyNzAwMDNBQzhEIC8qIE5vZGUuY3BwICovLAogCQkJCTE0MTE1QjUx
MDlGODRCNzEwMENBNEZDMSAvKiBOb2RlLmggKi8sCiAJCQkJMTREQzBEMEIwOUZFQ0ZBNDAwN0Iw
MjM1IC8qIE5vZGUuaWRsICovLApAQCAtMjIxMzUsNiArMjIxMzgsNyBAQAogCQkJCTYyOEQyMTRD
MTIxMzFFRDEwMDU1RENGQyAvKiBOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTlDMjdGMDcxMzhEMjhDRjAwNzlCN0UyIC8qIE5ldHdvcmtSZXNvdXJjZXNEYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTdGQTYxOTBEREEzQjNBMDAyOEY4QTUgLyogTmV0d29ya1N0YXRl
Tm90aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3OEM3RTQ4MTNCQzU4MkYwMDVFRDlEMiAv
KiBOZXZlclRocm93bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFRjQzREQwRTY3NDAxMjAwMUMx
Mjg3IC8qIE5pbmVQaWVjZUltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDExNUI1MjA5Rjg0
QjcxMDBDQTRGQzEgLyogTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0RkU3MzEwQTIyOTdC
RTAwNThEN0FEIC8qIE5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05ldmVyVGhyb3duLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmV2ZXJU
aHJvd24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42MDdkODk2MGQxZTA2ZjNiZTM4MDdiNWM0NTNjZjM0OWRlZThm
YmU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05ldmVyVGhyb3duLmgK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisjaWZuZGVmIE5ldmVyVGhyb3duX2gKKyNkZWZpbmUgTmV2ZXJUaHJvd25f
aAorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTmVydmVyVGhyb3duIHsKK3B1Ymxp
YzoKKyAgICBOZXJ2ZXJUaHJvd24oKTsKKyAgICB+TmVydmVyVGhyb3duKCk7CisgICAgb3BlcmF0
b3IgRXhjZXB0aW9uQ29kZSYgKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlOyB9CisKK3ByaXZhdGU6
CisgICAgbXV0YWJsZSBFeGNlcHRpb25Db2RlIG1fY29kZTsKK307CisKK2lubGluZSBOZXJ2ZXJU
aHJvd246Ok5lcnZlclRocm93bigpCisgICAgOiBtX2NvZGUoMCkKK3sKK30KKworaW5saW5lIE5l
cnZlclRocm93bjo6fk5lcnZlclRocm93bigpCit7CisgICAgQVNTRVJUKCFtX2NvZGUpOworfQor
CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWls
c0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3Bw
CmluZGV4IGZhZDlhZjgwNDQxNDU3MGMxZTc2Y2EyOGM1ZWI1YjE2MjdjNzAyMjAuLmYxZjRhODMz
ZTY2MjQ5MzZiNDIzMmRhOTc2Mjc2MzUxNGVjNmYwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJIVE1M
U3VtbWFyeUVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVk
ZSAiTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIk5ldmVyVGhyb3duLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyRGV0YWlscy5oIgogI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU2hhZG93Um9vdC5oIgpAQCAtMTU1LDE2ICsxNTYsMTUgQEAgdm9pZCBIVE1MRGV0YWlsc0Vs
ZW1lbnQ6OnJlZnJlc2hNYWluU3VtbWFyeShSZWZyZXNoUmVuZGVyZXIgcmVmcmVzaFJlbmRlcmVy
KQogdm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewogICAg
IEFTU0VSVCghc2hhZG93Um9vdCgpKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBp
ZiAobV9zdW1tYXJ5VHlwZSA9PSBEZWZhdWx0U3VtbWFyeSkgewogICAgICAgICBSZWZQdHI8SFRN
TFN1bW1hcnlFbGVtZW50PiBkZWZhdWx0U3VtbWFyeSA9IEhUTUxTdW1tYXJ5RWxlbWVudDo6Y3Jl
YXRlKHN1bW1hcnlUYWcsIGRvY3VtZW50KCkpOwotICAgICAgICBkZWZhdWx0U3VtbWFyeS0+YXBw
ZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIGRlZmF1bHREZXRhaWxzU3VtbWFyeVRl
eHQoKSksIGVjKTsKLSAgICAgICAgZW5zdXJlU2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChkZWZh
dWx0U3VtbWFyeSwgZWMsIHRydWUpOwotICAgICAgICBlbnN1cmVTaGFkb3dSb290KCktPmFwcGVu
ZENoaWxkKERldGFpbHNDb250ZW50RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBlYywgdHJ1
ZSk7CisgICAgICAgIGRlZmF1bHRTdW1tYXJ5LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9j
dW1lbnQoKSwgZGVmYXVsdERldGFpbHNTdW1tYXJ5VGV4dCgpKSwgTmVydmVyVGhyb3duKCkpOwor
ICAgICAgICBlbnN1cmVTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKGRlZmF1bHRTdW1tYXJ5LCBO
ZXJ2ZXJUaHJvd24oKSwgdHJ1ZSk7CisgICAgICAgIGVuc3VyZVNoYWRvd1Jvb3QoKS0+YXBwZW5k
Q2hpbGQoRGV0YWlsc0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSksIE5lcnZlclRo
cm93bigpLCB0cnVlKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV9zdW1tYXJ5VHlw
ZSA9PSBGb3J3YXJkaW5nU3VtbWFyeSk7Ci0gICAgICAgIGVuc3VyZVNoYWRvd1Jvb3QoKS0+YXBw
ZW5kQ2hpbGQoRGV0YWlsc1N1bW1hcnlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSksIGVjLCB0
cnVlKTsKLSAgICAgICAgZW5zdXJlU2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChEZXRhaWxzQ29u
dGVudEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKSwgZWMsIHRydWUpOworICAgICAgICBlbnN1
cmVTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKERldGFpbHNTdW1tYXJ5RWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KCkpLCBOZXJ2ZXJUaHJvd24oKSwgdHJ1ZSk7CisgICAgICAgIGVuc3VyZVNoYWRv
d1Jvb3QoKS0+YXBwZW5kQ2hpbGQoRGV0YWlsc0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQoKSksIE5lcnZlclRocm93bigpLCB0cnVlKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99252</attachid>
            <date>2011-06-30 01:01:08 -0700</date>
            <delta_ts>2011-07-01 01:09:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63688-20110630170106.patch</filename>
            <type>text/plain</type>
            <size>10058</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTAwODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNzI5Yzc3MmJiM2JmZGFl
NGNkYTRkMGM0ZjI1ZjEwNjhmOTRlODA3Li5kMGJkODU1ZDI0NDZlM2FiYWJhYTNlNmViM2QyMTY2
ZTc3NzQ4OGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDYtMzAgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEV4Y2VwdGlvbkNvZGUgdmFsdWUg
d2hpY2ggbmV2ZXIgYmVjb21lIG5vbi16ZXJvIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIE5FVkVS
X1RIUk9XTi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYzNjg4CisgICAgICAgIAorICAgICAgICBJbnRyb2R1Y2VkIE5FVkVSX1RIUk9XTiwgd2hpY2gg
Y2FuIGJlIHVzZWQgZm9yIGEgcGxhY2Vob2xkZXIgZm9yCisgICAgICAgIEV4Y2VwdGlvbkNvZGUg
d2hvc2UgdmFsdWUgaXMgYWx3YXlzIHplcm8uCisgICAgICAgIAorICAgICAgICBObyBuZXcgdGVz
dHMuIE5vIGJlaGF2aW91ciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vTmV2ZXJUaHJvd24uaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldmVyVGhyb3duV3JhcHBlcjo6TmV2ZXJUaHJvd25XcmFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldmVyVGhyb3duV3JhcHBlcjo6fk5ldmVyVGhyb3duV3Jh
cHBlcik6CisgICAgICAgICogaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKwogMjAx
MS0wNi0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDdk
ZTFhOGI5NTJjZTFjZDE2Yjk5MWRkYTQ3NDgxMTBkYTM4NDUwNzUuLmExZDZjZmE4MDI0MjNiYmJm
MWJlNTE1NzgwNDEwM2M5ZDJhYmNhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtMTIwOSw2ICsxMjA5LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vTmFtZWROb2RlTWFwLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3Qu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmggXAorCVNvdXJjZS9XZWJD
b3JlL2RvbS9OZXZlclRocm93bi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlRmlsdGVyQ29uZGl0aW9uLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYjA5
MWViODc1NjI3YjU0M2FkNzYwNGUzZWQxNDg1ODAxZTgwYjFjYy4uMTg4OWU0YThhYmM3ZjcwZWZk
YTNhMzkyOWJmYWFkZDlhNmZlNTY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTM4LDYgKzUzOCw3
IEBACiAgICAgICAgICAgICAnZG9tL05hbWVkTm9kZU1hcC5oJywKICAgICAgICAgICAgICdkb20v
Tm9kZS5oJywKICAgICAgICAgICAgICdkb20vTm9kZUxpc3QuaCcsCisgICAgICAgICAgICAnZG9t
L05ldmVyVGhyb3duLmgnLAogICAgICAgICAgICAgJ2RvbS9QZW5kaW5nU2NyaXB0LmgnLAogICAg
ICAgICAgICAgJ2RvbS9Qb3NpdGlvbi5oJywKICAgICAgICAgICAgICdkb20vUXVhbGlmaWVkTmFt
ZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAwN2ZmNzc0ZGQwZmUwZjE3NjQ1YjE5NGY5YjY5NmFmMGNkZjdjYjUzLi45ZWQx
YTkxNDY2ZDE3MjZjZjQ2OWI4NDQ4NTFmZWFmZGE4ZmNlZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMzA4LDYgKzMzMDgs
NyBAQAogCQlBNzdCNDFBMDEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5wdXRUeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzdCNDE5RjEy
RTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5wdXRUeXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc3RDAwMTIxMzNCMEFFQjAwRDY2NThD
IC8qIFRleHRDaGVja2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc3RDAwMTExMzNCMEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2luZy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3ODQ5NDFCMEI1
RkU1MDcwMDFFMjM3QSAvKiBDbGlwYm9hcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4NDk0MUEwQjVGRTUwNzAwMUUyMzdBIC8qIENsaXBib2Fy
ZC5jcHAgKi87IH07CisJCUE3OEM3RTQ4MTNCQzU4MkYwMDVFRDlEMiAvKiBOZXZlclRocm93bi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4QzdFNDcx
M0JDNTgxMDAwNUVEOUQyIC8qIE5ldmVyVGhyb3duLmggKi87IH07CiAJCUE3OEU1MjZGMTM0NkJE
MTcwMEFEOUMzMSAvKiBNZXRlclNoYWRvd0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4RTUyNkQxMzQ2QkQxNzAwQUQ5QzMxIC8qIE1l
dGVyU2hhZG93RWxlbWVudC5jcHAgKi87IH07CiAJCUE3OEU1MjcwMTM0NkJEMTcwMEFEOUMzMSAv
KiBNZXRlclNoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3OEU1MjZFMTM0NkJEMTcwMEFEOUMzMSAvKiBNZXRlclNoYWRvd0VsZW1l
bnQuaCAqLzsgfTsKIAkJQTc4RkUxM0IxMjM2NkIxMDAwQUNFOEQwIC8qIFNwZWxsQ2hlY2tlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzhGRTEz
OTEyMzY2QjEwMDBBQ0U4RDAgLyogU3BlbGxDaGVja2VyLmNwcCAqLzsgfTsKQEAgLTk4MjcsNiAr
OTgyOCw3IEBACiAJCUE3N0I0MTlGMTJFNjc1QTkwMDU0MzQzRCAvKiBUZXh0RXZlbnRJbnB1dFR5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEV2ZW50SW5wdXRUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3N0QwMDExMTMzQjBBRUIwMEQ2NjU4
QyAvKiBUZXh0Q2hlY2tpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4
dENoZWNraW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3ODQ5NDFBMEI1RkU1
MDcwMDFFMjM3QSAvKiBDbGlwYm9hcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENsaXBib2FyZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
OEM3RTQ3MTNCQzU4MTAwMDVFRDlEMiAvKiBOZXZlclRocm93bi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOZXZlclRocm93bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNzhFNTI2RDEzNDZCRDE3MDBBRDlDMzEgLyogTWV0ZXJTaGFkb3dFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1ldGVyU2hhZG93RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3OEU1MjZFMTM0NkJEMTcwMEFEOUMz
MSAvKiBNZXRlclNoYWRvd0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWV0ZXJTaGFkb3dFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
OEZFMTM5MTIzNjZCMTAwMEFDRThEMCAvKiBTcGVsbENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlbGxDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE5NjY3LDYgKzE5NjY5LDcgQEAKIAkJCQk4NUFDQTlGOTBBOUI2MzEw
MDA2NzFFOTAgLyogTmFtZWROb2RlTWFwLmlkbCAqLywKIAkJCQlBODE4NzIxOTA5NzdEM0MwMDA1
ODI2RDkgLyogTmFtZU5vZGVMaXN0LmNwcCAqLywKIAkJCQlBODE4NzIxMzA5NzdEM0MwMDA1ODI2
RDkgLyogTmFtZU5vZGVMaXN0LmggKi8sCisJCQkJQTc4QzdFNDcxM0JDNTgxMDAwNUVEOUQyIC8q
IE5ldmVyVGhyb3duLmggKi8sCiAJCQkJQThDNEE3RUUwOUQ1NjMyNzAwMDNBQzhEIC8qIE5vZGUu
Y3BwICovLAogCQkJCTE0MTE1QjUxMDlGODRCNzEwMENBNEZDMSAvKiBOb2RlLmggKi8sCiAJCQkJ
MTREQzBEMEIwOUZFQ0ZBNDAwN0IwMjM1IC8qIE5vZGUuaWRsICovLApAQCAtMjIxMzUsNiArMjIx
MzgsNyBAQAogCQkJCTYyOEQyMTRDMTIxMzFFRDEwMDU1RENGQyAvKiBOZXR3b3JraW5nQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTlDMjdGMDcxMzhEMjhDRjAwNzlCN0UyIC8qIE5ldHdv
cmtSZXNvdXJjZXNEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTdGQTYxOTBEREEzQjNBMDAy
OEY4QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3OEM3
RTQ4MTNCQzU4MkYwMDVFRDlEMiAvKiBOZXZlclRocm93bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFRjQzREQwRTY3NDAxMjAwMUMxMjg3IC8qIE5pbmVQaWVjZUltYWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNDExNUI1MjA5Rjg0QjcxMDBDQTRGQzEgLyogTm9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODU0RkU3MzEwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05ldmVyVGhyb3duLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTmV2ZXJUaHJvd24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTQ1ZDhmZjkxNGViMmFl
ZDFhNzM1MWM4MzA1ODVmYjkyOThlN2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05ldmVyVGhyb3duLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIE5ldmVyVGhyb3duX2gK
KyNkZWZpbmUgTmV2ZXJUaHJvd25faAorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworCitjbGFz
cyBOZXZlclRocm93bldyYXBwZXIgeworcHVibGljOgorICAgIE5ldmVyVGhyb3duV3JhcHBlcigp
OworICAgIH5OZXZlclRocm93bldyYXBwZXIoKTsKKyAgICBvcGVyYXRvciBFeGNlcHRpb25Db2Rl
JiAoKSBjb25zdCB7IHJldHVybiBtX2NvZGU7IH0KKworcHJpdmF0ZToKKyAgICBtdXRhYmxlIEV4
Y2VwdGlvbkNvZGUgbV9jb2RlOworfTsKKworaW5saW5lIE5ldmVyVGhyb3duV3JhcHBlcjo6TmV2
ZXJUaHJvd25XcmFwcGVyKCkKKyAgICA6IG1fY29kZSgwKQoreworfQorCitpbmxpbmUgTmV2ZXJU
aHJvd25XcmFwcGVyOjp+TmV2ZXJUaHJvd25XcmFwcGVyKCkKK3sKKyAgICBBU1NFUlQoIW1fY29k
ZSk7Cit9CisKKyNkZWZpbmUgTkVWRVJfVEhST1dOIE5ldmVyVGhyb3duV3JhcHBlcigpCisKK30K
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4
IGZhZDlhZjgwNDQxNDU3MGMxZTc2Y2EyOGM1ZWI1YjE2MjdjNzAyMjAuLjY5ODNiZjJiNWQ4YjMy
ZmZjY2Q2YmJkMjM4ZWU2NDFjY2RmYmYyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
ZXRhaWxzRWxlbWVudC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJIVE1MU3VtbWFy
eUVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTW91
c2VFdmVudC5oIgorI2luY2x1ZGUgIk5ldmVyVGhyb3duLmgiCiAjaW5jbHVkZSAiUmVuZGVyRGV0
YWlscy5oIgogI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2hh
ZG93Um9vdC5oIgpAQCAtMTU1LDE2ICsxNTYsMTUgQEAgdm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6
OnJlZnJlc2hNYWluU3VtbWFyeShSZWZyZXNoUmVuZGVyZXIgcmVmcmVzaFJlbmRlcmVyKQogdm9p
ZCBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewogICAgIEFTU0VS
VCghc2hhZG93Um9vdCgpKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAobV9z
dW1tYXJ5VHlwZSA9PSBEZWZhdWx0U3VtbWFyeSkgewogICAgICAgICBSZWZQdHI8SFRNTFN1bW1h
cnlFbGVtZW50PiBkZWZhdWx0U3VtbWFyeSA9IEhUTUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKHN1
bW1hcnlUYWcsIGRvY3VtZW50KCkpOwotICAgICAgICBkZWZhdWx0U3VtbWFyeS0+YXBwZW5kQ2hp
bGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIGRlZmF1bHREZXRhaWxzU3VtbWFyeVRleHQoKSks
IGVjKTsKLSAgICAgICAgZW5zdXJlU2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChkZWZhdWx0U3Vt
bWFyeSwgZWMsIHRydWUpOwotICAgICAgICBlbnN1cmVTaGFkb3dSb290KCktPmFwcGVuZENoaWxk
KERldGFpbHNDb250ZW50RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBlYywgdHJ1ZSk7Cisg
ICAgICAgIGRlZmF1bHRTdW1tYXJ5LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQo
KSwgZGVmYXVsdERldGFpbHNTdW1tYXJ5VGV4dCgpKSwgTkVWRVJfVEhST1dOKTsKKyAgICAgICAg
ZW5zdXJlU2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChkZWZhdWx0U3VtbWFyeSwgTkVWRVJfVEhS
T1dOLCB0cnVlKTsKKyAgICAgICAgZW5zdXJlU2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChEZXRh
aWxzQ29udGVudEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKSwgTkVWRVJfVEhST1dOLCB0cnVl
KTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV9zdW1tYXJ5VHlwZSA9PSBGb3J3YXJk
aW5nU3VtbWFyeSk7Ci0gICAgICAgIGVuc3VyZVNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoRGV0
YWlsc1N1bW1hcnlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSksIGVjLCB0cnVlKTsKLSAgICAg
ICAgZW5zdXJlU2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChEZXRhaWxzQ29udGVudEVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCgpKSwgZWMsIHRydWUpOworICAgICAgICBlbnN1cmVTaGFkb3dSb290
KCktPmFwcGVuZENoaWxkKERldGFpbHNTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkp
LCBORVZFUl9USFJPV04sIHRydWUpOworICAgICAgICBlbnN1cmVTaGFkb3dSb290KCktPmFwcGVu
ZENoaWxkKERldGFpbHNDb250ZW50RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBORVZFUl9U
SFJPV04sIHRydWUpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99440</attachid>
            <date>2011-07-01 00:50:38 -0700</date>
            <delta_ts>2011-07-01 01:09:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63688-20110701165036.patch</filename>
            <type>text/plain</type>
            <size>53459</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTAwODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDg3
MTVlNDE5Zjk3MjU2ZTFjYjAxNGUxNzZhOWZlNDQxODczYTcwM2UuLjM2Nzc5MGUwNjhiMTUxNmFm
ZjBiMGQzNzVjMGVjZTI1YzBkY2U4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTA3LTAxICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFj
dG9yaW5nOiBJZ25vcmVkIEV4Y2VwdGlvbkNvZGUgdmFsdWUgc2hvdWxkIGJlIGxlc3MgYW5ub3lp
bmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzY4
OAorCisgICAgICAgIEFkZGVkIEFTU0VSVF9BVCBtYWNyby4KKworICAgICAgICAqIHd0Zi9Bc3Nl
cnRpb25zLmg6CisKIDIwMTEtMDYtMjkgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAppbmRleCAxMzZkNWJjODE1ODM5ZjEzMDQ1N2ExMmY0
OWIzMTBiZDhhYjYwNTYzLi5hZDIyMzlhNTM5N2E5YWQ4ZGMwZTUyOGZiODc1MzEyNDVjYjMwZGVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaApAQCAtMjM1LDYgKzIzNSw3
IEBAIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURkxvZ1ZlcmJvc2UoY29uc3QgY2hhciogZmls
ZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1CiAjaWYgQVNTRVJUX0RJU0FCTEVECiAKICNkZWZp
bmUgQVNTRVJUKGFzc2VydGlvbikgKCh2b2lkKTApCisjZGVmaW5lIEFTU0VSVF9BVChhc3NlcnRp
b24sIGZpbGUsIGxpbmUsIGZ1bmN0aW9uKSAoKHZvaWQpMCkKICNkZWZpbmUgQVNTRVJUX05PVF9S
RUFDSEVEKCkgKCh2b2lkKTApCiAKICNpZiBDT01QSUxFUihJTlRFTCkgJiYgIU9TKFdJTkRPV1Mp
IHx8IENPTVBJTEVSKFJWQ1QpCkBAIC0yNTQsNiArMjU1LDEzIEBAIGlubGluZSB2b2lkIGFzc2Vy
dFVudXNlZChUJiB4KSB7ICh2b2lkKXg7IH0KICAgICB9IFwKIHdoaWxlICgwKQogCisjZGVmaW5l
IEFTU0VSVF9BVChhc3NlcnRpb24sIGZpbGUsIGxpbmUsIGZ1bmN0aW9uKSBkbyAgXAorICAgIGlm
ICghKGFzc2VydGlvbikpIHsgXAorICAgICAgICBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKGZp
bGUsIGxpbmUsIGZ1bmN0aW9uLCAjYXNzZXJ0aW9uKTsgXAorICAgICAgICBDUkFTSCgpOyBcCisg
ICAgfSBcCit3aGlsZSAoMCkKKwogI2RlZmluZSBBU1NFUlRfTk9UX1JFQUNIRUQoKSBkbyB7IFwK
ICAgICBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BS
RVRUWV9GVU5DVElPTiwgMCk7IFwKICAgICBDUkFTSCgpOyBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyOWM3
NzJiYjNiZmRhZTRjZGE0ZDBjNGYyNWYxMDY4Zjk0ZTgwNy4uNTAyNjViNTBkOThmZjZiZGIyMzAw
ZmFmN2FiMzYxZDU3ZGNhZDA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDExLTA3
LTAxICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nOiBJZ25vcmVkIEV4
Y2VwdGlvbkNvZGUgdmFsdWUgc2hvdWxkIGJlIGxlc3MgYW5ub3lpbmcuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzY4OAorCisgICAgICAgIC0gSW50
cm9kdWNlZCBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUgY2xhc3MgZm9yIHRoZSBkZWZhdWx0IHBhcmFt
ZXRlciBvZiBFeGNlcHRpb25Db2RlLgorICAgICAgICAtIEludHJvZHVjZWQgQVNTRVJUX05FVkVS
X1RIUk9XTiB0byBjaGVjayBFeGNlcHRpb25Db2RlIG5vdCBzZXQgdG8gbm9uLXplcm8gYWZ0ZXIg
dGhlIGNhbGwuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBpcyBmb2N1c2VkIG9uIGRv
bSBtb2R1bGUuIGZvciBhdm9pZCBicm9hZCBtb2RpZmljYXRpb24uCisgICAgICAgIAorICAgICAg
ICBObyBuZXcgdGVzdHMuIE5vIGJlaGF2aW91ciBjaGFuZ2UuCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEu
aDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKToKKyAgICAgICAgKiBkb20vQ29udGFp
bmVyTm9kZS5oOgorICAgICAgICAqIGRvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6OmRlbGV0ZUl0ZW0pOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VGl0bGUp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzZXRN
YXJrZXJzQWN0aXZlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpkZXByZWNhdGVkQ3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENTdHJpbmdBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6c2V0Qm9vbGVhbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjplbnN1cmVTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRp
c3BhdGNoQXR0clJlbW92YWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXNw
YXRjaEF0dHJBZGRpdGlvbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldElu
dGVncmFsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldFVuc2lnbmVk
SW50ZWdyYWxBdHRyaWJ1dGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICog
ZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpkaXNw
YXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpub3JtYWxpemUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9t
L1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpSYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZTo6ZWRpdGluZ1N0YXJ0UG9zaXRpb24pOgorICAgICAgICAqIGRvbS9SYW5n
ZS5oOgorICAgICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHQ6OnJl
cGxhY2VXaG9sZVRleHQpOgorICAgICAgICAqIGRvbS9UZXh0Lmg6CisgICAgICAgICogZG9tL1hN
TERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2Vy
OjpleGl0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVh
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjppbnNlcnRFcnJvck1l
c3NhZ2VCbG9jayk6CisgICAgICAgICogZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnREb2N1bWVudCk6Cisg
ICAgICAgICogZG9tL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50
UGFyc2VyOjpzdGFydERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFy
c2VyOjpwYXJzZUVuZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJz
ZXI6OnBhcnNlQ2hhcmFjdGVycyk6CisKIDIwMTEtMDYtMjkgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA3ZGUxYThiOTUyY2UxY2QxNmI5OTFkZGE0NzQ4MTEw
ZGEzODQ1MDc1Li5lMjk1NWQ5ZmI3ZjllNTY0YTczMDJkYTM0ZjdkY2I0ZmFhNTJiNTZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTExNzYsNiArMTE3Niw3IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V4Y2x1c2l2ZVRyYWNrTGlzdC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmggXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9JZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vSWdub3JpbmdFeGNlcHRpb25Db2RlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwu
aCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCBiMDkxZWI4NzU2MjdiNTQzYWQ3NjA0ZTNlZDE0ODU4MDFlODBiMWNjLi42YjZlYWY5
ZjliMzdhZGU4YzIyNGY5OGU0ODU1ZmQyYWFjODYyNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01
MzgsNiArNTM4LDcgQEAKICAgICAgICAgICAgICdkb20vTmFtZWROb2RlTWFwLmgnLAogICAgICAg
ICAgICAgJ2RvbS9Ob2RlLmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlTGlzdC5oJywKKyAgICAg
ICAgICAgICdkb20vTmV2ZXJUaHJvd24uaCcsCiAgICAgICAgICAgICAnZG9tL1BlbmRpbmdTY3Jp
cHQuaCcsCiAgICAgICAgICAgICAnZG9tL1Bvc2l0aW9uLmgnLAogICAgICAgICAgICAgJ2RvbS9R
dWFsaWZpZWROYW1lLmgnLApAQCAtMjUwNSw2ICsyNTA2LDcgQEAKICAgICAgICAgICAgICdkb20v
RXhjbHVzaXZlVHJhY2tMaXN0LmgnLAogICAgICAgICAgICAgJ2RvbS9IYXNoQ2hhbmdlRXZlbnQu
aCcsCiAgICAgICAgICAgICAnZG9tL0lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVu
dGVyLmgnLAorICAgICAgICAgICAgJ2RvbS9JZ25vcmluZ0V4Y2VwdGlvbkNvZGUuaCcsCiAgICAg
ICAgICAgICAnZG9tL0ljb25VUkwuY3BwJywKICAgICAgICAgICAgICdkb20vSWNvblVSTC5oJywK
ICAgICAgICAgICAgICdkb20vS2V5Ym9hcmRFdmVudC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA3ZmY3NzRkZDBmZTBm
MTc2NDViMTk0ZjliNjk2YWYwY2RmN2NiNTMuLjUzODY2YTViMDYxZThjYWJmOTZjMzdiY2IzYzE4
YjE1Zjc1MDZhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTMyODgsNiArMzI4OCw3IEBACiAJCUE3MUMzMEI5MTM4MTI2NUUw
MERCQzM1MSAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MUMzMEI3MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFk
b3dDb250ZW50U2VsZWN0b3IuaCAqLzsgfTsKIAkJQTczRjk1RkUxMkM5N0JGRTAwMzFBQUY5IC8q
IFJvdW5kZWRJbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50UmVjdC5jcHAg
Ki87IH07CiAJCUE3M0Y5NUZGMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50UmVjdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczRjk1RkQxMkM5
N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTc0QkI3NkIxM0JEQTg2MzAwRkY3QkYwIC8qIEln
bm9yaW5nRXhjZXB0aW9uQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTc0QkI3NkExM0JEQTg2MzAwRkY3QkYwIC8qIElnbm9yaW5nRXhjZXB0aW9u
Q29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUE3NEMyRDNDMTM4MTFFMEQwMEY4MzU3MiAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc0QzJEM0IxMzgxMUUw
RDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc1RTQ5NzYxMDc1MkFDQjAwQzlCODk2IC8q
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc1RTQ5NzQxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUE3NUU0OTc3MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RTQ5NzUx
MDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi87IH07CkBAIC05
ODA2LDYgKzk4MDcsNyBAQAogCQlBNzFDMzBCNzEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93Q29u
dGVudFNlbGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRvd0Nv
bnRlbnRTZWxlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzNGOTVGQzEy
Qzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUm91bmRlZEludFJlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUm91bmRlZEludFJlY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc0QkI3NkExM0JEQTg2MzAwRkY3QkYwIC8qIElnbm9y
aW5nRXhjZXB0aW9uQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZ25v
cmluZ0V4Y2VwdGlvbkNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc0QzJE
M0IxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRvd0NvbnRlbnRFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3NUU0OTc0MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NUU0OTc1MTA3
NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NjI2LDYgKzE5NjI4LDcgQEAKIAkJCQk0NTA5OUM0
MDEzNzBBNzgwMDA1OEQ1MTMgLyogSWNvblVSTC5jcHAgKi8sCiAJCQkJNDVCQUMyQUYxMzYwQkJB
QjAwNURBMjU4IC8qIEljb25VUkwuaCAqLywKIAkJCQk4QUI0QkM3NjEyNkZEQjcxMDBERUI3Mjcg
LyogSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCAqLywKKwkJCQlBNzRC
Qjc2QTEzQkRBODYzMDBGRjdCRjAgLyogSWdub3JpbmdFeGNlcHRpb25Db2RlLmggKi8sCiAJCQkJ
ODUwMzFCMkQwQTQ0RUZDNzAwRjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuY3BwICovLAogCQkJCTg1
MDMxQjJFMEE0NEVGQzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50LmggKi8sCiAJCQkJMTRDRjdD
MjAwOUY3MTEwNjAwRUIzNjY1IC8qIEtleWJvYXJkRXZlbnQuaWRsICovLApAQCAtMjMwNzcsNiAr
MjMwODAsNyBAQAogCQkJCTA4NjM5NTE2MTNCNUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBh
dGguaCBpbiBIZWFkZXJzICovLAogCQkJCTQzMUEyRjlDMTNCNkYyQjAwMDc3OTFFNCAvKiBTVkdB
bmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUFCQjc4
NzEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBNzRCQjc2QjEzQkRBODYzMDBGRjdCRjAgLyogSWdub3JpbmdFeGNlcHRpb25D
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFy
YWN0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCmluZGV4IDY2
MWUxMTA2Mzc3MjJkMzQ4ZjdmYzg1ZGE0MGY1NWUzOTI2YzEyMjIuLmY5MjRlYjgwYjlhY2EwOTc2
MjI2ZWE2MjBiM2RkY2UwZjRkNmI0MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGFyYWN0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaApA
QCAtMzAsMTMgKzMwLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENoYXJhY3RlckRh
dGEgOiBwdWJsaWMgTm9kZSB7CiBwdWJsaWM6CiAgICAgU3RyaW5nIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGE7IH0KLSAgICB2b2lkIHNldERhdGEoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiA9
IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX2RhdGEtPmxlbmd0aCgpOyB9Ci0gICAgU3RyaW5nIHN1YnN0cmluZ0RhdGEodW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQg
YXBwZW5kRGF0YShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBpbnNl
cnREYXRhKHVuc2lnbmVkIG9mZnNldCwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIHZvaWQgZGVsZXRlRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50LCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgdm9pZCByZXBsYWNlRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGNvdW50LCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgU3RyaW5nIHN1
YnN0cmluZ0RhdGEodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCwgRXhjZXB0aW9uQ29k
ZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CisgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0
IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAg
IHZvaWQgaW5zZXJ0RGF0YSh1bnNpZ25lZCBvZmZzZXQsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlv
bkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAgIHZvaWQgZGVsZXRlRGF0YSh1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50LCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5n
RXhjZXB0aW9uQ29kZSgpKTsKKyAgICB2b2lkIHJlcGxhY2VEYXRhKHVuc2lnbmVkIG9mZnNldCwg
dW5zaWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdF
eGNlcHRpb25Db2RlKCkpOwogCiAgICAgYm9vbCBjb250YWluc09ubHlXaGl0ZXNwYWNlKCkgY29u
c3Q7CiAKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb2Zmc2V0
SW5DaGFyYWN0ZXJzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREYXRhQW5kVXBkYXRlKFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4sIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFjZWREYXRhLCB1bnNpZ25lZCBv
bGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCk7CiAgICAgdm9pZCB1cGRhdGVSZW5kZXJlcih1
bnNpZ25lZCBvZmZzZXRPZlJlcGxhY2VkRGF0YSwgdW5zaWduZWQgbGVuZ3RoT2ZSZXBsYWNlZERh
dGEpOwotICAgIHZvaWQgY2hlY2tDaGFyRGF0YU9wZXJhdGlvbih1bnNpZ25lZCBvZmZzZXQsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNoZWNrQ2hhckRhdGFPcGVyYXRpb24odW5zaWduZWQg
b2Zmc2V0LCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKIAogICAg
IFJlZlB0cjxTdHJpbmdJbXBsPiBtX2RhdGE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCmluZGV4IDZiYTVhY2U3ZmU1N2YyMzM4ZTVjZDNlNmUxYzVhMjhmNWRhNjg5OTguLjlh
OWQ3NTA1NmE0YzgxMDg1ZDg4NzdjYTNkOThjZmVhODBhNTMzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAKQEAgLTg4LDEyICs4OCwxMCBAQCB2b2lkIENvbnRhaW5lck5vZGU6
OnRha2VBbGxDaGlsZHJlbkZyb20oQ29udGFpbmVyTm9kZSogb2xkUGFyZW50KQogICAgIG9sZFBh
cmVudC0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjaGlsZHJlbi5zaXplKCk7ICsraSkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLT5hdHRhY2hlZCgpKQogICAgICAgICAgICAgY2hpbGRy
ZW5baV0tPmRldGFjaCgpOwogICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCBhIG5vIG11dGF0aW9u
IGV2ZW50IHZlcnNpb24gb2YgYWRvcHROb2RlLgotICAgICAgICBSZWZQdHI8Tm9kZT4gY2hpbGQg
PSBkb2N1bWVudCgpLT5hZG9wdE5vZGUoY2hpbGRyZW5baV0ucmVsZWFzZSgpLCBlYyk7Ci0gICAg
ICAgIEFTU0VSVCghZWMpOworICAgICAgICBSZWZQdHI8Tm9kZT4gY2hpbGQgPSBkb2N1bWVudCgp
LT5hZG9wdE5vZGUoY2hpbGRyZW5baV0ucmVsZWFzZSgpLCBBU1NFUlRfTkVWRVJfVEhST1dOKTsK
ICAgICAgICAgcGFyc2VyQWRkQ2hpbGQoY2hpbGQuZ2V0KCkpOwogICAgICAgICAvLyBGSVhNRTog
VG9nZXRoZXIgd2l0aCBhZG9wdE5vZGUgYWJvdmUsIHRoZSB0cmVlIHNjb3BlIG1pZ2h0IGdldCB1
cGRhdGVkIHJlY3Vyc2l2ZWx5IHR3aWNlCiAgICAgICAgIC8vIChpZiB0aGUgZG9jdW1lbnQgY2hh
bmdlZCBvciBvbGRQYXJlbnQgd2FzIGluIGEgc2hhZG93IHRyZWUsIEFORCAqdGhpcyBpcyBpbiBh
IHNoYWRvdyB0cmVlKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IDJlNTg2ODgx
OTc0ZWU5M2ZlMTRlYjE0NGE5MDFhZTljMjMxYjMzOTAuLjM1YjVlM2YwMjAzZmZkMjU5Y2M1Y2Fm
MWUwOGE5ZjFjM2Q1ZWRjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtNDQs
MTAgKzQ0LDEwIEBAIHB1YmxpYzoKICAgICBOb2RlKiBmaXJzdENoaWxkKCkgY29uc3QgeyByZXR1
cm4gbV9maXJzdENoaWxkOyB9CiAgICAgTm9kZSogbGFzdENoaWxkKCkgY29uc3QgeyByZXR1cm4g
bV9sYXN0Q2hpbGQ7IH0KIAotICAgIGJvb2wgaW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4g
bmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlcHRpb25Db2RlJiwgYm9vbCBzaG91bGRMYXp5
QXR0YWNoID0gZmFsc2UpOwotICAgIGJvb2wgcmVwbGFjZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4g
bmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJiwgYm9vbCBzaG91bGRMYXp5
QXR0YWNoID0gZmFsc2UpOwotICAgIGJvb2wgcmVtb3ZlQ2hpbGQoTm9kZSogY2hpbGQsIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICBib29sIGFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hp
bGQsIEV4Y2VwdGlvbkNvZGUmLCBib29sIHNob3VsZExhenlBdHRhY2ggPSBmYWxzZSk7CisgICAg
Ym9vbCBpbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hp
bGQsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCksIGJvb2wgc2hvdWxk
TGF6eUF0dGFjaCA9IGZhbHNlKTsKKyAgICBib29sIHJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5v
ZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4
Y2VwdGlvbkNvZGUoKSwgYm9vbCBzaG91bGRMYXp5QXR0YWNoID0gZmFsc2UpOworICAgIGJvb2wg
cmVtb3ZlQ2hpbGQoTm9kZSogY2hpbGQsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRp
b25Db2RlKCkpOworICAgIGJvb2wgYXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGls
ZCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSwgYm9vbCBzaG91bGRM
YXp5QXR0YWNoID0gZmFsc2UpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgb25seSB1c2Vk
IGR1cmluZyBwYXJzaW5nLgogICAgIC8vIFRoZXkgZG9uJ3Qgc2VuZCBET00gbXV0YXRpb24gZXZl
bnRzIG9yIGhhbmRsZSByZXBhcmVudGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9N
U3RyaW5nTWFwLmNwcAppbmRleCBlNjhlOWQ5NTkyMWIzODY1MDk2MGEwMWEzY2QxNTJiNmU0YmU3
NzFmLi5lMGQ4NzVkY2JiMGQ3YmU2MDQ3ZjE3ZjNhMTExZWY1OTExZjBlOGI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCkBAIC0xOTksOCArMTk5LDcgQEAg
dm9pZCBEYXRhc2V0RE9NU3RyaW5nTWFwOjpkZWxldGVJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBFeGNlcHRp
b25Db2RlIGR1bW15OwotICAgIG1fZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKGNvbnZlcnRQcm9w
ZXJ0eU5hbWVUb0F0dHJpYnV0ZU5hbWUobmFtZSksIGR1bW15KTsKKyAgICBtX2VsZW1lbnQtPnJl
bW92ZUF0dHJpYnV0ZShjb252ZXJ0UHJvcGVydHlOYW1lVG9BdHRyaWJ1dGVOYW1lKG5hbWUpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
ZDllNTJlMjM2ZDZhMTliYWQxNTdkNWZlZjg1MDhkOTYxOTJhZDQxOS4uZWZhOGI5NTQxYjAzZDFk
MDBlZTNjM2I4MmM2M2UzOGE2MTVhNGQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0x
MzAyLDkgKzEzMDIsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRp
dGxlKQogICAgIGVsc2UgaWYgKCFtX3RpdGxlRWxlbWVudCkgewogICAgICAgICBpZiAoSFRNTEVs
ZW1lbnQqIGhlYWRFbGVtZW50ID0gaGVhZCgpKSB7CiAgICAgICAgICAgICBtX3RpdGxlRWxlbWVu
dCA9IGNyZWF0ZUVsZW1lbnQodGl0bGVUYWcsIGZhbHNlKTsKLSAgICAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgaGVhZEVsZW1lbnQtPmFwcGVuZENoaWxkKG1fdGl0
bGVFbGVtZW50LCBlYyk7Ci0gICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgIGhl
YWRFbGVtZW50LT5hcHBlbmRDaGlsZChtX3RpdGxlRWxlbWVudCwgQVNTRVJUX05FVkVSX1RIUk9X
Tik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI1MjEsOCArMjUxOSw3IEBAIHZvaWQgRG9jdW1l
bnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29uc3QgU3RyaW5nJiBlcXVpdiwgY29uc3QgU3RyaW5nJiBj
b250ZW50KQogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZXF1aXYsICJzZXQtY29v
a2llIikpIHsKICAgICAgICAgLy8gRklYTUU6IG1ha2Ugc2V0Q29va2llIHdvcmsgb24gWE1MIGRv
Y3VtZW50cyB0b287IGUuZy4gaW4gY2FzZSBvZiA8aHRtbDptZXRhIC4uLi4uPgogICAgICAgICBp
ZiAoaXNIVE1MRG9jdW1lbnQoKSkgewotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsgLy8g
RXhjZXB0aW9uIChmb3Igc2FuZGJveGVkIGRvY3VtZW50cykgaWdub3JlZC4KLSAgICAgICAgICAg
IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMpLT5zZXRDb29raWUoY29udGVudCwgZWMp
OworICAgICAgICAgICAgdGhpcy0+c2V0Q29va2llKGNvbnRlbnQpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgImNvbnRlbnQtbGFuZ3VhZ2UiKSkK
ICAgICAgICAgc2V0Q29udGVudExhbmd1YWdlKGNvbnRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCA5ZjMwMmFkZTc5YjlhZWQyOWZkNGIzOTMxZjZmZjVmYWQ4MGEyNzZmLi4wYjdkZmVjYTlj
MWU2NTM3ZTNiMjgwYjMyM2VkNTg3YTE3ZjhiMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
Mzc5LDggKzM3OSw4IEBAIHB1YmxpYzoKICAgICBib29sIHhtbFN0YW5kYWxvbmUoKSBjb25zdCB7
IHJldHVybiBtX3htbFN0YW5kYWxvbmU7IH0KIAogICAgIHZvaWQgc2V0WE1MRW5jb2RpbmcoY29u
c3QgU3RyaW5nJiBlbmNvZGluZykgeyBtX3htbEVuY29kaW5nID0gZW5jb2Rpbmc7IH0gLy8gcmVh
ZC1vbmx5IHByb3BlcnR5LCBvbmx5IHRvIGJlIHNldCBmcm9tIFhNTERvY3VtZW50UGFyc2VyCi0g
ICAgdm9pZCBzZXRYTUxWZXJzaW9uKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICB2b2lkIHNldFhNTFN0YW5kYWxvbmUoYm9vbCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
c2V0WE1MVmVyc2lvbihjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhj
ZXB0aW9uQ29kZSgpKTsKKyAgICB2b2lkIHNldFhNTFN0YW5kYWxvbmUoYm9vbCwgRXhjZXB0aW9u
Q29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAKICAgICBTdHJpbmcgZG9jdW1lbnRV
UkkoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50VVJJOyB9CiAgICAgdm9pZCBzZXREb2N1bWVu
dFVSSShjb25zdCBTdHJpbmcmKTsKQEAgLTM5Myw3ICszOTMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaXNwYXRjaFZpc2liaWxpdHlTdGF0ZUNoYW5nZUV2ZW50KCk7CiAjZW5kaWYKIAotICAgIFBh
c3NSZWZQdHI8Tm9kZT4gYWRvcHROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gc291cmNlLCBFeGNlcHRp
b25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxOb2RlPiBhZG9wdE5vZGUoUGFzc1JlZlB0cjxOb2Rl
PiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogCiAg
ICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gaW1hZ2VzKCk7CiAgICAgUGFzc1JlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gZW1iZWRzKCk7CkBAIC03OTUsNyArNzk1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVtb3ZlVGl0bGUoRWxlbWVudCogdGl0bGVFbGVtZW50KTsKIAogICAgIFN0cmluZyBj
b29raWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgIHZvaWQgc2V0Q29va2llKGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldENvb2tpZShjb25zdCBTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKIAogICAgIFN0cmlu
ZyByZWZlcnJlcigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IGM4ZjExNjNhYWU0Y2MwM2ZmMjBkMmYxODJjZTBkYzNk
MGI0ZWI0NDIuLjBhZGQ3NWVkZDQ2OTM4NGRmOTIwMjhjODU4NTYxNzYyY2Y2ZTA0ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC01
NTQsMTQgKzU1NCwxMyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6c2V0TWFya2Vy
c0FjdGl2ZShSYW5nZSogcmFuZ2UsIGJvb2wgYWN0aXZlKQogICAgICAgICByZXR1cm47CiAgICAg
QVNTRVJUKCFtX21hcmtlcnMuaXNFbXB0eSgpKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVyID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKGVjKTsK
LSAgICBOb2RlKiBlbmRDb250YWluZXIgPSByYW5nZS0+ZW5kQ29udGFpbmVyKGVjKTsKKyAgICBO
b2RlKiBzdGFydENvbnRhaW5lciA9IHJhbmdlLT5zdGFydENvbnRhaW5lcigpOworICAgIE5vZGUq
IGVuZENvbnRhaW5lciA9IHJhbmdlLT5lbmRDb250YWluZXIoKTsKIAogICAgIE5vZGUqIHBhc3RM
YXN0Tm9kZSA9IHJhbmdlLT5wYXN0TGFzdE5vZGUoKTsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBy
YW5nZS0+Zmlyc3ROb2RlKCk7IG5vZGUgIT0gcGFzdExhc3ROb2RlOyBub2RlID0gbm9kZS0+dHJh
dmVyc2VOZXh0Tm9kZSgpKSB7Ci0gICAgICAgIGludCBzdGFydE9mZnNldCA9IG5vZGUgPT0gc3Rh
cnRDb250YWluZXIgPyByYW5nZS0+c3RhcnRPZmZzZXQoZWMpIDogMDsKLSAgICAgICAgaW50IGVu
ZE9mZnNldCA9IG5vZGUgPT0gZW5kQ29udGFpbmVyID8gcmFuZ2UtPmVuZE9mZnNldChlYykgOiBJ
TlRfTUFYOworICAgICAgICBpbnQgc3RhcnRPZmZzZXQgPSBub2RlID09IHN0YXJ0Q29udGFpbmVy
ID8gcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkgOiAwOworICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gbm9k
ZSA9PSBlbmRDb250YWluZXIgPyByYW5nZS0+ZW5kT2Zmc2V0KCkgOiBJTlRfTUFYOwogICAgICAg
ICBzZXRNYXJrZXJzQWN0aXZlKG5vZGUsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGFjdGl2ZSk7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDZjYzAyZTIwYzI5NDk5ZjI0Yzlh
Nzg2YzdkMTY0Y2Y0YWFkYmMyMjMuLjYxN2YyY2E4NTE4MjI4YjIzNzI5OTE4Y2JmNTgwOThiNTIy
N2NmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE1MSw5ICsxNTEsNiBAQCBQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IEVsZW1lbnQ6OmRlcHJlY2F0ZWRDcmVhdGVDb250ZXh0dWFs
RnJhZ21lbnQoY29uc3QgUwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgLy8g
RXhjZXB0aW9ucyBhcmUgaWdub3JlZCBiZWNhdXNlIG5vbmUgb3VnaHQgdG8gaGFwcGVuIGhlcmUu
Ci0gICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkRXhjZXB0aW9uQ29kZTsKLQogICAgIC8vIFdlIG5l
ZWQgdG8gcG9wIDxodG1sPiBhbmQgPGJvZHk+IGVsZW1lbnRzIGFuZCByZW1vdmUgPGhlYWQ+IHRv
CiAgICAgLy8gYWNjb21tb2RhdGUgZm9sa3MgcGFzc2luZyBjb21wbGV0ZSBIVE1MIGRvY3VtZW50
cyB0byBtYWtlIHRoZQogICAgIC8vIGNoaWxkIG9mIGFuIGVsZW1lbnQuCkBAIC0xNjksMTMgKzE2
NiwxMCBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IEVsZW1lbnQ6OmRlcHJlY2F0ZWRD
cmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoY29uc3QgUwogICAgICAgICAgICAgUmVmUHRyPE5vZGU+
IG5leHRDaGlsZDsKICAgICAgICAgICAgIGZvciAoUmVmUHRyPE5vZGU+IGNoaWxkID0gZmlyc3RD
aGlsZDsgY2hpbGQ7IGNoaWxkID0gbmV4dENoaWxkKSB7CiAgICAgICAgICAgICAgICAgbmV4dENo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC0+cmVt
b3ZlQ2hpbGQoY2hpbGQuZ2V0KCksIGlnbm9yZWRFeGNlcHRpb25Db2RlKTsKLSAgICAgICAgICAg
ICAgICBBU1NFUlQoIWlnbm9yZWRFeGNlcHRpb25Db2RlKTsKLSAgICAgICAgICAgICAgICBmcmFn
bWVudC0+aW5zZXJ0QmVmb3JlKGNoaWxkLCBlbGVtZW50LCBpZ25vcmVkRXhjZXB0aW9uQ29kZSk7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFpZ25vcmVkRXhjZXB0aW9uQ29kZSk7CisgICAgICAg
ICAgICAgICAgZWxlbWVudC0+cmVtb3ZlQ2hpbGQoY2hpbGQuZ2V0KCksIEFTU0VSVF9ORVZFUl9U
SFJPV04pOworICAgICAgICAgICAgICAgIGZyYWdtZW50LT5pbnNlcnRCZWZvcmUoY2hpbGQsIGVs
ZW1lbnQsIEFTU0VSVF9ORVZFUl9USFJPV04pOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZnJhZ21lbnQtPnJlbW92ZUNoaWxkKGVsZW1lbnQsIGlnbm9yZWRFeGNlcHRpb25Db2RlKTsKLSAg
ICAgICAgICAgIEFTU0VSVCghaWdub3JlZEV4Y2VwdGlvbkNvZGUpOworICAgICAgICAgICAgZnJh
Z21lbnQtPnJlbW92ZUNoaWxkKGVsZW1lbnQsIEFTU0VSVF9ORVZFUl9USFJPV04pOwogICAgICAg
ICB9CiAgICAgfQogICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CkBAIC0yMjgsMjYgKzIy
MiwxNyBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB9CiB9CiAKLXZvaWQgRWxlbWVudDo6c2V0
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBzZXRBdHRyaWJ1dGUobmFtZSwg
dmFsdWUsIGVjKTsKLX0KLSAgICAKIHZvaWQgRWxlbWVudDo6c2V0Q1N0cmluZ0F0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBjaGFyKiBjU3RyaW5nVmFsdWUpCiB7Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBzZXRBdHRyaWJ1dGUobmFtZSwgQXRvbWljU3RyaW5n
KGNTdHJpbmdWYWx1ZSksIGVjKTsKKyAgICBzZXRBdHRyaWJ1dGUobmFtZSwgQXRvbWljU3RyaW5n
KGNTdHJpbmdWYWx1ZSkpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldEJvb2xlYW5BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgYm9vbCBiKQogewogICAgIGlmIChiKQogICAgICAg
ICBzZXRBdHRyaWJ1dGUobmFtZSwgZW1wdHlBdG9tKTsKLSAgICBlbHNlIHsKLSAgICAgICAgRXhj
ZXB0aW9uQ29kZSBleDsKLSAgICAgICAgcmVtb3ZlQXR0cmlidXRlKG5hbWUsIGV4KTsKLSAgICB9
CisgICAgZWxzZQorICAgICAgICByZW1vdmVBdHRyaWJ1dGUobmFtZSk7CiB9CiAKIE5vZGU6Ok5v
ZGVUeXBlIEVsZW1lbnQ6Om5vZGVUeXBlKCkgY29uc3QKQEAgLTEyMzUsOSArMTIyMCw3IEBAIFNo
YWRvd1Jvb3QqIEVsZW1lbnQ6OmVuc3VyZVNoYWRvd1Jvb3QoKQogICAgIGlmIChTaGFkb3dSb290
KiBleGlzdGluZ1Jvb3QgPSBzaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybiBleGlzdGluZ1Jv
b3Q7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBzZXRTaGFkb3dSb290KFNoYWRv
d1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCgpKSwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIHNl
dFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50KCkpKTsKICAgICByZXR1cm4g
c2hhZG93Um9vdCgpOwogfQogCkBAIC0xNDE5LDkgKzE0MDIsOCBAQCB2b2lkIEVsZW1lbnQ6OmRp
c3BhdGNoQXR0clJlbW92YWxFdmVudChBdHRyaWJ1dGUqKQogI2lmIDAKICAgICBpZiAoIWRvY3Vt
ZW50KCktPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NQVRUUk1PRElGSUVEX0xJU1RFTkVS
KSkKICAgICAgICAgcmV0dXJuOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGRpc3Bh
dGNoU2NvcGVkRXZlbnQoTXV0YXRpb25FdmVudDo6Y3JlYXRlKERPTUF0dHJNb2RpZmllZEV2ZW50
LCB0cnVlLCBhdHRyLCBhdHRyLT52YWx1ZSgpLAotICAgICAgICBhdHRyLT52YWx1ZSgpLCBkb2N1
bWVudCgpLT5hdHRyTmFtZShhdHRyLT5pZCgpKSwgTXV0YXRpb25FdmVudDo6UkVNT1ZBTCksIGVj
KTsKKyAgICAgICAgYXR0ci0+dmFsdWUoKSwgZG9jdW1lbnQoKS0+YXR0ck5hbWUoYXR0ci0+aWQo
KSksIE11dGF0aW9uRXZlbnQ6OlJFTU9WQUwpLCBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAj
ZW5kaWYKIH0KIApAQCAtMTQzMiw5ICsxNDE0LDggQEAgdm9pZCBFbGVtZW50OjpkaXNwYXRjaEF0
dHJBZGRpdGlvbkV2ZW50KEF0dHJpYnV0ZSopCiAjaWYgMAogICAgIGlmICghZG9jdW1lbnQoKS0+
aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01BVFRSTU9ESUZJRURfTElTVEVORVIpKQogICAg
ICAgICByZXR1cm47Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgZGlzcGF0Y2hTY29w
ZWRFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVhdGUoRE9NQXR0ck1vZGlmaWVkRXZlbnQsIHRydWUs
IGF0dHIsIGF0dHItPnZhbHVlKCksCi0gICAgICAgIGF0dHItPnZhbHVlKCksIGRvY3VtZW50KCkt
PmF0dHJOYW1lKGF0dHItPmlkKCkpLCBNdXRhdGlvbkV2ZW50OjpBRERJVElPTiksIGVjKTsKKyAg
ICAgICAgYXR0ci0+dmFsdWUoKSwgZG9jdW1lbnQoKS0+YXR0ck5hbWUoYXR0ci0+aWQoKSksIE11
dGF0aW9uRXZlbnQ6OkFERElUSU9OKSwgSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogI2VuZGlm
CiB9CiAKQEAgLTE5MjgsOCArMTkwOSw3IEBAIGludCBFbGVtZW50OjpnZXRJbnRlZ3JhbEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAogdm9pZCBFbGVt
ZW50OjpzZXRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lLCBpbnQgdmFsdWUpCiB7CiAgICAgLy8gRklYTUU6IE5lZWQgYW4gQXRvbWljU3RyaW5nIHZl
cnNpb24gb2YgU3RyaW5nOjpudW1iZXIuCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBzZXRB
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgU3RyaW5nOjpudW1iZXIodmFsdWUpLCBlYyk7CisgICAg
c2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIFN0cmluZzo6bnVtYmVyKHZhbHVlKSk7CiB9CiAK
IHVuc2lnbmVkIEVsZW1lbnQ6OmdldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3QKQEAgLTE5NDAsOCArMTkyMCw3IEBAIHVu
c2lnbmVkIEVsZW1lbnQ6OmdldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtCiB2b2lkIEVsZW1lbnQ6OnNldFVuc2lnbmVkSW50ZWdyYWxB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgdW5zaWduZWQgdmFs
dWUpCiB7CiAgICAgLy8gRklYTUU6IE5lZWQgYW4gQXRvbWljU3RyaW5nIHZlcnNpb24gb2YgU3Ry
aW5nOjpudW1iZXIuCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBzZXRBdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSwgU3RyaW5nOjpudW1iZXIodmFsdWUpLCBlYyk7CisgICAgc2V0QXR0cmlidXRl
KGF0dHJpYnV0ZU5hbWUsIFN0cmluZzo6bnVtYmVyKHZhbHVlKSk7CiB9CiAKICNpZiBFTkFCTEUo
U1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggOTQ0MzJiNDVhZGZjMzRlNGE5NmJkNjkxNjM0Nzc3
MTkwMDVlYmRmYS4uN2RiZTVkNGRlODZhZTc5ZDFhNmI5MjYyYWZiY2NjNjUxMmIyMzdhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCkBAIC0xMTEsOCArMTExLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBo
YXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKLSAgICB2
b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlv
bkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAgIHZvaWQgcmVtb3ZlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0
aW9uQ29kZSgpKTsKIAogICAgIC8vIFR5cGVkIGdldHRlcnMgYW5kIHNldHRlcnMgZm9yIGxhbmd1
YWdlIGJpbmRpbmdzLgogICAgIGludCBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdDsKQEAgLTEzMyw4ICsxMzMsOCBAQCBwdWJsaWM6
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1l
KSBjb25zdDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJpYnV0ZU5TKGNvbnN0IFN0
cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSkgY29uc3Q7CiAKLSAg
ICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNldEF0dHJpYnV0ZU5T
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIHF1
YWxpZmllZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmLCBG
cmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpOwor
ICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUo
KSk7CisgICAgdm9pZCBzZXRBdHRyaWJ1dGVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFj
ZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpLCBGcmFn
bWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpOwogCiAg
ICAgYm9vbCBpc0lkQXR0cmlidXRlTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRJZEF0dHJpYnV0ZSgpIGNvbnN0OwpAQCAtMTc1LDE0
ICsxNzUsMTQgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdGhlIGFic29sdXRlIGJvdW5kaW5n
IGJveCB0cmFuc2xhdGVkIGludG8gc2NyZWVuIGNvb3JkaW5hdGVzOgogICAgIEludFJlY3Qgc2Ny
ZWVuUmVjdCgpIGNvbnN0OwogCi0gICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhjb25z
dCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAgIHZvaWQgcmVtb3Zl
QXR0cmlidXRlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9j
YWxOYW1lLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKIAogICAg
IFBhc3NSZWZQdHI8QXR0cj4gZ2V0QXR0cmlidXRlTm9kZShjb25zdCBTdHJpbmcmIG5hbWUpOwog
ICAgIFBhc3NSZWZQdHI8QXR0cj4gZ2V0QXR0cmlidXRlTm9kZU5TKGNvbnN0IFN0cmluZyYgbmFt
ZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSk7Ci0gICAgUGFzc1JlZlB0cjxBdHRy
PiBzZXRBdHRyaWJ1dGVOb2RlKEF0dHIqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0
cjxBdHRyPiBzZXRBdHRyaWJ1dGVOb2RlTlMoQXR0ciosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQ
YXNzUmVmUHRyPEF0dHI+IHJlbW92ZUF0dHJpYnV0ZU5vZGUoQXR0ciosIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBQYXNzUmVmUHRyPEF0dHI+IHNldEF0dHJpYnV0ZU5vZGUoQXR0ciosIEV4Y2VwdGlv
bkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAgIFBhc3NSZWZQdHI8QXR0cj4g
c2V0QXR0cmlidXRlTm9kZU5TKEF0dHIqLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0
aW9uQ29kZSgpKTsKKyAgICBQYXNzUmVmUHRyPEF0dHI+IHJlbW92ZUF0dHJpYnV0ZU5vZGUoQXR0
ciosIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogICAgIAogICAg
IHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUoKTsKIApAQCAtMjA5LDcgKzIwOSw2
IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgbm9kZU5hbWVQcmVzZXJ2aW5nQ2FzZSgpIGNvbnN0Owog
CiAgICAgLy8gY29udmVuaWVuY2UgbWV0aG9kcyB3aGljaCBpZ25vcmUgZXhjZXB0aW9ucwotICAg
IHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKTsKICAgICB2b2lkIHNldEJvb2xlYW5BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgYm9vbCk7CiAgICAgLy8gUGxlYXNlIGRvbid0IHVzZSBzZXRDU3RyaW5nQXR0
cmlidXRlIGluIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBjb2RlOwogICAgIC8vIHVzZSBhIHN0YXRp
YyBBdG9taWNTdHJpbmcgdmFsdWUgaW5zdGVhZCB0byBhdm9pZCB0aGUgY29udmVyc2lvbiBvdmVy
aGVhZC4KQEAgLTIzMSwxMiArMjMwLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVj
YWxjU3R5bGUoU3R5bGVDaGFuZ2UgPSBOb0NoYW5nZSk7CiAKICAgICBTaGFkb3dSb290KiBzaGFk
b3dSb290KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93
Um9vdD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0
cjxTaGFkb3dSb290PiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7
CiAgICAgU2hhZG93Um9vdCogZW5zdXJlU2hhZG93Um9vdCgpOwogICAgIHZvaWQgcmVtb3ZlU2hh
ZG93Um9vdCgpOwogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTaGFkb3dQc2V1ZG9JZChjb25zdCBBdG9taWNTdHJp
bmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRTaGFkb3dQc2V1ZG9JZChjb25zdCBB
dG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsK
IAogICAgIFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pOwog
CkBAIC0yOTUsNyArMjk0LDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIG5leHRFbGVtZW50U2li
bGluZygpIGNvbnN0OwogICAgIHVuc2lnbmVkIGNoaWxkRWxlbWVudENvdW50KCkgY29uc3Q7CiAK
LSAgICBib29sIHdlYmtpdE1hdGNoZXNTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywg
RXhjZXB0aW9uQ29kZSYpOworICAgIGJvb2wgd2Via2l0TWF0Y2hlc1NlbGVjdG9yKGNvbnN0IFN0
cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgp
KTsKIAogICAgIERPTVRva2VuTGlzdCogY2xhc3NMaXN0KCk7CiAgICAgRE9NVG9rZW5MaXN0KiBv
cHRpb25hbENsYXNzTGlzdCgpIGNvbnN0OwpAQCAtMzkwLDcgKzM4OSw3IEBAIHByb3RlY3RlZDoK
IHByaXZhdGU6CiAgICAgdm9pZCBzY3JvbGxCeVVuaXRzKGludCB1bml0cywgU2Nyb2xsR3JhbnVs
YXJpdHkpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHNldFByZWZpeChjb25zdCBBdG9t
aWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKICAg
ICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNo
aWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmNwcAppbmRleCA0NzJiOWIxZWZhMzVhZTdiYTczMGZkMzAyNTNjYWRmM2NhNTcyZTI2Li5lYTM3
ZTg2OGIxMmY1YzliZTc2ZWQ3ZTkxOTE4M2E2ZmZhNDNiNWUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlUG9ydC5jcHAKQEAgLTE4Miw5ICsxODIsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRj
aE1lc3NhZ2VzKCkKICAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gTWVz
c2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZXZlbnRE
YXRhLT5jaGFubmVscygpKTsKICAgICAgICAgUmVmUHRyPEV2ZW50PiBldnQgPSBNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShwb3J0cy5yZWxlYXNlKCksIGV2ZW50RGF0YS0+bWVzc2FnZSgpKTsKIAotICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChldnQucmVs
ZWFzZSgpLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBkaXNwYXRjaEV2ZW50
KGV2dC5yZWxlYXNlKCksIEFTU0VSVF9ORVZFUl9USFJPV04pOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IDcxMTc0MTk1NDczOGM0ZGVkMjVkYWRjNDkxNzY5YjViODg2MTUwMzQuLjIz
MDUwOWViZDA5YzBmNWJiY2NiZWMxNThjYzY4NGIzNjkzZTlkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
QEAgLTcwMyw4ICs3MDMsNyBAQCB2b2lkIE5vZGU6Om5vcm1hbGl6ZSgpCiAgICAgICAgIGlmICgh
dGV4dC0+bGVuZ3RoKCkpIHsKICAgICAgICAgICAgIC8vIENhcmUgbXVzdCBiZSB0YWtlbiB0byBn
ZXQgdGhlIG5leHQgbm9kZSBiZWZvcmUgcmVtb3ZpbmcgdGhlIGN1cnJlbnQgbm9kZS4KICAgICAg
ICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlUG9zdE9yZGVyKCk7Ci0gICAgICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICAgICAgdGV4dC0+cmVtb3ZlKGVjKTsKKyAg
ICAgICAgICAgIHRleHQtPnJlbW92ZSgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIApAQCAtNzE2LDE3ICs3MTUsMTUgQEAgdm9pZCBOb2RlOjpub3JtYWxpemUoKQogCiAgICAg
ICAgICAgICAvLyBSZW1vdmUgZW1wdHkgdGV4dCBub2Rlcy4KICAgICAgICAgICAgIGlmICghbmV4
dFRleHQtPmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAg
ICAgICAgICAgICAgICBuZXh0VGV4dC0+cmVtb3ZlKGVjKTsKKyAgICAgICAgICAgICAgICBuZXh0
VGV4dC0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIC8vIEJvdGggbm9uLWVtcHR5IHRleHQgbm9kZXMuIE1lcmdlIHRoZW0u
CiAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB0ZXh0LT5sZW5ndGgoKTsKLSAgICAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgICAgICB0ZXh0LT5hcHBlbmREYXRhKG5leHRU
ZXh0LT5kYXRhKCksIGVjKTsKKyAgICAgICAgICAgIHRleHQtPmFwcGVuZERhdGEobmV4dFRleHQt
PmRhdGEoKSk7CiAgICAgICAgICAgICBkb2N1bWVudCgpLT50ZXh0Tm9kZXNNZXJnZWQobmV4dFRl
eHQuZ2V0KCksIG9mZnNldCk7Ci0gICAgICAgICAgICBuZXh0VGV4dC0+cmVtb3ZlKGVjKTsKKyAg
ICAgICAgICAgIG5leHRUZXh0LT5yZW1vdmUoKTsKICAgICAgICAgfQogCiAgICAgICAgIG5vZGUg
PSBub2RlLT50cmF2ZXJzZU5leHROb2RlUG9zdE9yZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA3MjUz
N2NiODY2OWZkNjY4N2NkOGJkODNiZTJlNWNiOWU0OTdmMDFiLi5mZDE3NWE3MTljYjQ5MzQwMDli
NzYyMWYxODQ1YmZkNWVmOGM0NzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNk
ZWZpbmUgTm9kZV9oCiAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIklnbm9y
aW5nRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIktVUkxIYXNoLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKQEAgLTE2
MCwxOCArMTYxLDE4IEBAIHB1YmxpYzoKICAgICAvLyBUaGVzZSBzaG91bGQgYWxsIGFjdHVhbGx5
IHJldHVybiBhIG5vZGUsIGJ1dCB0aGlzIGlzIG9ubHkgaW1wb3J0YW50IGZvciBsYW5ndWFnZSBi
aW5kaW5ncywKICAgICAvLyB3aGljaCB3aWxsIGFscmVhZHkga25vdyBhbmQgaG9sZCBhIHJlZiBv
biB0aGUgcmlnaHQgbm9kZSB0byByZXR1cm4uIFJldHVybmluZyBib29sIGFsbG93cwogICAgIC8v
IHRoZXNlIG1ldGhvZHMgdG8gYmUgbW9yZSBlZmZpY2llbnQgc2luY2UgdGhleSBkb24ndCBuZWVk
IHRvIHJldHVybiBhIHJlZgotICAgIGJvb2wgaW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4g
bmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlcHRpb25Db2RlJiwgYm9vbCBzaG91bGRMYXp5
QXR0YWNoID0gZmFsc2UpOwotICAgIGJvb2wgcmVwbGFjZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4g
bmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJiwgYm9vbCBzaG91bGRMYXp5
QXR0YWNoID0gZmFsc2UpOwotICAgIGJvb2wgcmVtb3ZlQ2hpbGQoTm9kZSogY2hpbGQsIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICBib29sIGFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hp
bGQsIEV4Y2VwdGlvbkNvZGUmLCBib29sIHNob3VsZExhenlBdHRhY2ggPSBmYWxzZSk7CisgICAg
Ym9vbCBpbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hp
bGQsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCksIGJvb2wgc2hvdWxk
TGF6eUF0dGFjaCA9IGZhbHNlKTsKKyAgICBib29sIHJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5v
ZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4
Y2VwdGlvbkNvZGUoKSwgYm9vbCBzaG91bGRMYXp5QXR0YWNoID0gZmFsc2UpOworICAgIGJvb2wg
cmVtb3ZlQ2hpbGQoTm9kZSogY2hpbGQsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRp
b25Db2RlKCkpOworICAgIGJvb2wgYXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGls
ZCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSwgYm9vbCBzaG91bGRM
YXp5QXR0YWNoID0gZmFsc2UpOwogCi0gICAgdm9pZCByZW1vdmUoRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHZvaWQgcmVtb3ZlKEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkp
OwogICAgIGJvb2wgaGFzQ2hpbGROb2RlcygpIGNvbnN0IHsgcmV0dXJuIGZpcnN0Q2hpbGQoKTsg
fQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSA9IDA7
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUoKSBjb25zdCB7IHJldHVybiB2aXJ0
dWFsTG9jYWxOYW1lKCk7IH0KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSgp
IGNvbnN0IHsgcmV0dXJuIHZpcnR1YWxOYW1lc3BhY2VVUkkoKTsgfQogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJlZml4KCkgY29uc3QgeyByZXR1cm4gdmlydHVhbFByZWZpeCgpOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdmlydHVhbCB2b2lkIHNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNl
cHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKICAgICB2b2lkIG5vcm1hbGl6
ZSgpOwogCiAgICAgYm9vbCBpc1NhbWVOb2RlKE5vZGUqIG90aGVyKSBjb25zdCB7IHJldHVybiB0
aGlzID09IG90aGVyOyB9CkBAIC0xODIsNyArMTgzLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBs
b29rdXBOYW1lc3BhY2VQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNv
bnN0IEVsZW1lbnQqIG9yaWdpbmFsRWxlbWVudCkgY29uc3Q7CiAgICAgCiAgICAgU3RyaW5nIHRl
eHRDb250ZW50KGJvb2wgY29udmVydEJSc1RvTmV3bGluZXMgPSBmYWxzZSkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRUZXh0Q29udGVudChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAg
dm9pZCBzZXRUZXh0Q29udGVudChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiA9IElnbm9y
aW5nRXhjZXB0aW9uQ29kZSgpKTsKICAgICAKICAgICBOb2RlKiBsYXN0RGVzY2VuZGFudCgpIGNv
bnN0OwogICAgIE5vZGUqIGZpcnN0RGVzY2VuZGFudCgpIGNvbnN0OwpAQCAtNDA2LDE2ICs0MDcs
MTYgQEAgcHVibGljOgogICAgIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNOb2RlUG9zdE9yZGVyKGNv
bnN0IE5vZGUqIHN0YXlXaXRoaW4gPSAwKSBjb25zdDsKICAgICBOb2RlKiB0cmF2ZXJzZVByZXZp
b3VzU2libGluZ1Bvc3RPcmRlcihjb25zdCBOb2RlKiBzdGF5V2l0aGluID0gMCkgY29uc3Q7CiAK
LSAgICB2b2lkIGNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBFeGNl
cHRpb25Db2RlJik7CisgICAgdm9pZCBjaGVja1NldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcm
IHByZWZpeCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAgICAg
Ym9vbCBpc0Rlc2NlbmRhbnRPZihjb25zdCBOb2RlKikgY29uc3Q7CiAgICAgYm9vbCBjb250YWlu
cyhjb25zdCBOb2RlKikgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc0luY2x1ZGluZ1NoYWRvd0RP
TShOb2RlKik7CiAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGRvIHN0cmljdCBlcnJv
ci1jaGVja2luZyB3aGVuIGFkZGluZyBjaGlsZHJlbiB2aWEKICAgICAvLyB0aGUgcHVibGljIERP
TSBBUEkgKGUuZy4sIGFwcGVuZENoaWxkKCkpLgotICAgIHZvaWQgY2hlY2tBZGRDaGlsZChOb2Rl
KiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYpOyAvLyBFcnJvci1jaGVja2luZyB3aGVuIGFkZGlu
ZyB2aWEgdGhlIERPTSBBUEkKKyAgICB2b2lkIGNoZWNrQWRkQ2hpbGQoTm9kZSogbmV3Q2hpbGQs
IEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOyAvLyBFcnJvci1jaGVj
a2luZyB3aGVuIGFkZGluZyB2aWEgdGhlIERPTSBBUEkKIAotICAgIHZvaWQgY2hlY2tSZXBsYWNl
Q2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgdm9pZCBjaGVja1JlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQs
IEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogICAgIHZpcnR1YWwg
Ym9vbCBjYW5SZXBsYWNlQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKTsKICAg
ICAKICAgICAvLyBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHJhbmdlIG9mZnNldHMgdXNlIGNo
YXJhY3RlcnMgb3Igbm9kZSBpbmRpY2VzLgpAQCAtNTI0LDggKzUyNSw4IEBAIHB1YmxpYzoKICAg
ICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRFbGVtZW50c0J5TmFtZShjb25zdCBTdHJpbmcmIGVs
ZW1lbnROYW1lKTsKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lcyk7CiAKLSAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+
IHF1ZXJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBxdWVyeVNlbGVjdG9yQWxsKGNvbnN0IFN0cmluZyYg
c2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBxdWVy
eVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJiA9IElnbm9y
aW5nRXhjZXB0aW9uQ29kZSgpKTsKKyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBxdWVyeVNlbGVj
dG9yQWxsKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5n
RXhjZXB0aW9uQ29kZSgpKTsKIAogICAgIHVuc2lnbmVkIHNob3J0IGNvbXBhcmVEb2N1bWVudFBv
c2l0aW9uKE5vZGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggZjdmMGM3YTExMjhlMTk5MWQx
ZjIwNmVhOTQ0MjdjNmJhNmZmMjBhYy4uYjZkODNlYzQyNjE0ZTQ1OTAwNmMwMmVlMWIxNDVkMTU2
YzExNzY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC04OCwxMSArODgsOCBAQCBpbmxpbmUgUmFu
Z2U6OlJhbmdlKFBhc3NSZWZQdHI8RG9jdW1lbnQ+IG93bmVyRG9jdW1lbnQsIFBhc3NSZWZQdHI8
Tm9kZT4gc3RhcnRDbwogCiAgICAgLy8gU2ltcGx5IHNldHRpbmcgdGhlIGNvbnRhaW5lcnMgYW5k
IG9mZnNldHMgZGlyZWN0bHkgd291bGQgbm90IGRvIGFueSBvZiB0aGUgY2hlY2tpbmcKICAgICAv
LyB0aGF0IHNldFN0YXJ0IGFuZCBzZXRFbmQgZG8sIHNvIHdlIGNhbGwgdGhvc2UgZnVuY3Rpb25z
LgotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHNldFN0YXJ0KHN0YXJ0Q29udGFpbmVy
LCBzdGFydE9mZnNldCwgZWMpOwotICAgIEFTU0VSVCghZWMpOwotICAgIHNldEVuZChlbmRDb250
YWluZXIsIGVuZE9mZnNldCwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIHNldFN0YXJ0KHN0
YXJ0Q29udGFpbmVyLCBzdGFydE9mZnNldCwgQVNTRVJUX05FVkVSX1RIUk9XTik7CisgICAgc2V0
RW5kKGVuZENvbnRhaW5lciwgZW5kT2Zmc2V0LCBBU1NFUlRfTkVWRVJfVEhST1dOKTsKIH0KIAog
UGFzc1JlZlB0cjxSYW5nZT4gUmFuZ2U6OmNyZWF0ZShQYXNzUmVmUHRyPERvY3VtZW50PiBvd25l
ckRvY3VtZW50LCBQYXNzUmVmUHRyPE5vZGU+IHN0YXJ0Q29udGFpbmVyLCBpbnQgc3RhcnRPZmZz
ZXQsIFBhc3NSZWZQdHI8Tm9kZT4gZW5kQ29udGFpbmVyLCBpbnQgZW5kT2Zmc2V0KQpAQCAtMTU5
MCwxMCArMTU4Nyw5IEBAIFBvc2l0aW9uIFJhbmdlOjplZGl0aW5nU3RhcnRQb3NpdGlvbigpIGNv
bnN0CiAgICAgaWYgKHZpc2libGVQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFBv
c2l0aW9uKCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAvLyBpZiB0aGUgc2Vs
ZWN0aW9uIGlzIGEgY2FyZXQsIGp1c3QgcmV0dXJuIHRoZSBwb3NpdGlvbiwgc2luY2UgdGhlIHN0
eWxlCiAgICAgLy8gYmVoaW5kIHVzIGlzIHJlbGV2YW50Ci0gICAgaWYgKGNvbGxhcHNlZChlYykp
CisgICAgaWYgKGNvbGxhcHNlZCgpKQogICAgICAgICByZXR1cm4gdmlzaWJsZVBvc2l0aW9uLmRl
ZXBFcXVpdmFsZW50KCk7CiAKICAgICAvLyBpZiB0aGUgc2VsZWN0aW9uIHN0YXJ0cyBqdXN0IGJl
Zm9yZSBhIHBhcmFncmFwaCBicmVhaywgc2tpcCBvdmVyIGl0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCmluZGV4IGFi
OGM1NTU5MmRjOTJkMDAyMWI3YmY5YjBlZjg2YjYzZGYwOTEwZjYuLjU5Y2I1ZWJhZTAzMjljZDI3
YzIyOWUyMDAwYjg0YWZkYTQxYjVlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9S
YW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCkBAIC02MSw0NCArNjEsNDQg
QEAgcHVibGljOgogICAgIGludCBzdGFydE9mZnNldChFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAg
ICAgTm9kZSogZW5kQ29udGFpbmVyKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBpbnQgZW5k
T2Zmc2V0KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBib29sIGNvbGxhcHNlZChFeGNlcHRp
b25Db2RlJikgY29uc3Q7CisgICAgYm9vbCBjb2xsYXBzZWQoRXhjZXB0aW9uQ29kZSYgPSBJZ25v
cmluZ0V4Y2VwdGlvbkNvZGUoKSkgY29uc3Q7CiAKLSAgICBOb2RlKiBjb21tb25BbmNlc3RvckNv
bnRhaW5lcihFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgTm9kZSogY29tbW9uQW5jZXN0b3JD
b250YWluZXIoRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSkgY29uc3Q7
CiAgICAgc3RhdGljIE5vZGUqIGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKE5vZGUqIGNvbnRhaW5l
ckEsIE5vZGUqIGNvbnRhaW5lckIpOwotICAgIHZvaWQgc2V0U3RhcnQoUGFzc1JlZlB0cjxOb2Rl
PiBjb250YWluZXIsIGludCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNldEVu
ZChQYXNzUmVmUHRyPE5vZGU+IGNvbnRhaW5lciwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYp
OwotICAgIHZvaWQgY29sbGFwc2UoYm9vbCB0b1N0YXJ0LCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
Ym9vbCBpc1BvaW50SW5SYW5nZShOb2RlKiByZWZOb2RlLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgc2hvcnQgY29tcGFyZVBvaW50KE5vZGUqIHJlZk5vZGUsIGludCBvZmZzZXQs
IEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICB2b2lkIHNldFN0YXJ0KFBhc3NSZWZQdHI8Tm9k
ZT4gY29udGFpbmVyLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0
aW9uQ29kZSgpKTsKKyAgICB2b2lkIHNldEVuZChQYXNzUmVmUHRyPE5vZGU+IGNvbnRhaW5lciwg
aW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7Cisg
ICAgdm9pZCBjb2xsYXBzZShib29sIHRvU3RhcnQsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdF
eGNlcHRpb25Db2RlKCkpOworICAgIGJvb2wgaXNQb2ludEluUmFuZ2UoTm9kZSogcmVmTm9kZSwg
aW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7Cisg
ICAgc2hvcnQgY29tcGFyZVBvaW50KE5vZGUqIHJlZk5vZGUsIGludCBvZmZzZXQsIEV4Y2VwdGlv
bkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpIGNvbnN0OwogICAgIGVudW0gQ29tcGFy
ZVJlc3VsdHMgeyBOT0RFX0JFRk9SRSwgTk9ERV9BRlRFUiwgTk9ERV9CRUZPUkVfQU5EX0FGVEVS
LCBOT0RFX0lOU0lERSB9OwotICAgIENvbXBhcmVSZXN1bHRzIGNvbXBhcmVOb2RlKE5vZGUqIHJl
Zk5vZGUsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBDb21wYXJlUmVzdWx0cyBjb21wYXJl
Tm9kZShOb2RlKiByZWZOb2RlLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29k
ZSgpKSBjb25zdDsKICAgICBlbnVtIENvbXBhcmVIb3cgeyBTVEFSVF9UT19TVEFSVCwgU1RBUlRf
VE9fRU5ELCBFTkRfVE9fRU5ELCBFTkRfVE9fU1RBUlQgfTsKLSAgICBzaG9ydCBjb21wYXJlQm91
bmRhcnlQb2ludHMoQ29tcGFyZUhvdywgY29uc3QgUmFuZ2UqIHNvdXJjZVJhbmdlLCBFeGNlcHRp
b25Db2RlJikgY29uc3Q7Ci0gICAgc3RhdGljIHNob3J0IGNvbXBhcmVCb3VuZGFyeVBvaW50cyhO
b2RlKiBjb250YWluZXJBLCBpbnQgb2Zmc2V0QSwgTm9kZSogY29udGFpbmVyQiwgaW50IG9mZnNl
dEIsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0aWMgc2hvcnQgY29tcGFyZUJvdW5kYXJ5UG9p
bnRzKGNvbnN0IFJhbmdlQm91bmRhcnlQb2ludCYgYm91bmRhcnlBLCBjb25zdCBSYW5nZUJvdW5k
YXJ5UG9pbnQmIGJvdW5kYXJ5QiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHNob3J0IGNvbXBhcmVC
b3VuZGFyeVBvaW50cyhDb21wYXJlSG93LCBjb25zdCBSYW5nZSogc291cmNlUmFuZ2UsIEV4Y2Vw
dGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpIGNvbnN0OworICAgIHN0YXRpYyBz
aG9ydCBjb21wYXJlQm91bmRhcnlQb2ludHMoTm9kZSogY29udGFpbmVyQSwgaW50IG9mZnNldEEs
IE5vZGUqIGNvbnRhaW5lckIsIGludCBvZmZzZXRCLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5n
RXhjZXB0aW9uQ29kZSgpKTsKKyAgICBzdGF0aWMgc2hvcnQgY29tcGFyZUJvdW5kYXJ5UG9pbnRz
KGNvbnN0IFJhbmdlQm91bmRhcnlQb2ludCYgYm91bmRhcnlBLCBjb25zdCBSYW5nZUJvdW5kYXJ5
UG9pbnQmIGJvdW5kYXJ5QiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUo
KSk7CiAgICAgYm9vbCBib3VuZGFyeVBvaW50c1ZhbGlkKCkgY29uc3Q7CiAgICAgYm9vbCBpbnRl
cnNlY3RzTm9kZShOb2RlKiByZWZOb2RlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxl
dGVDb250ZW50cyhFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBleHRyYWN0Q29udGVudHMoRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gY2xvbmVDb250ZW50cyhFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBleHRyYWN0Q29udGVudHMoRXhjZXB0aW9uQ29kZSYgPSBJ
Z25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CisgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBjbG9uZUNvbnRlbnRzKEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkp
OwogICAgIHZvaWQgaW5zZXJ0Tm9kZShQYXNzUmVmUHRyPE5vZGU+LCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgU3RyaW5nIHRvU3RyaW5nKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBTdHJpbmcg
dG9TdHJpbmcoRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSkgY29uc3Q7
CiAKICAgICBTdHJpbmcgdG9IVE1MKCkgY29uc3Q7CiAgICAgU3RyaW5nIHRleHQoKSBjb25zdDsK
IAotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlQ29udGV4dHVhbEZyYWdt
ZW50KGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNvbnN0IFN0
cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSkgY29u
c3Q7CiAKLSAgICB2b2lkIGRldGFjaChFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBkZXRhY2go
RXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAgICAgUGFzc1JlZlB0
cjxSYW5nZT4gY2xvbmVSYW5nZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKLSAgICB2b2lkIHNl
dFN0YXJ0QWZ0ZXIoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNldEVuZEJlZm9y
ZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0RW5kQWZ0ZXIoTm9kZSosIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNlbGVjdE5vZGUoTm9kZSosIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICB2b2lkIHNlbGVjdE5vZGVDb250ZW50cyhOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIHZvaWQgc3Vycm91bmRDb250ZW50cyhQYXNzUmVmUHRyPE5vZGU+LCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdm9pZCBzZXRTdGFydEJlZm9yZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZvaWQgc2V0U3RhcnRBZnRlcihOb2RlKiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2Vw
dGlvbkNvZGUoKSk7CisgICAgdm9pZCBzZXRFbmRCZWZvcmUoTm9kZSosIEV4Y2VwdGlvbkNvZGUm
ID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAgIHZvaWQgc2V0RW5kQWZ0ZXIoTm9kZSos
IEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAgIHZvaWQgc2Vs
ZWN0Tm9kZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7
CisgICAgdm9pZCBzZWxlY3ROb2RlQ29udGVudHMoTm9kZSosIEV4Y2VwdGlvbkNvZGUmID0gSWdu
b3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAgIHZvaWQgc3Vycm91bmRDb250ZW50cyhQYXNzUmVm
UHRyPE5vZGU+LCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKKyAg
ICB2b2lkIHNldFN0YXJ0QmVmb3JlKE5vZGUqLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhj
ZXB0aW9uQ29kZSgpKTsKIAogICAgIGNvbnN0IFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0LnRvUG9zaXRpb24oKTsgfQogICAgIGNvbnN0IFBvc2l0aW9uIGVu
ZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbmQudG9Qb3NpdGlvbigpOyB9CkBAIC0xMzAs
NyArMTMwLDcgQEAgcHVibGljOgogICAgIC8vIEV4cGFuZCByYW5nZSB0byBhIHVuaXQgKHdvcmQg
b3Igc2VudGVuY2Ugb3IgYmxvY2sgb3IgZG9jdW1lbnQpIGJvdW5kYXJ5LgogICAgIC8vIFBsZWFz
ZSByZWZlciB0byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2MzIg
Y29tbWVudCAjNSAKICAgICAvLyBmb3IgZGV0YWlscy4KLSAgICB2b2lkIGV4cGFuZChjb25zdCBT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBleHBhbmQoY29uc3QgU3RyaW5nJiwg
RXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAKICAgICBQYXNzUmVm
UHRyPENsaWVudFJlY3RMaXN0PiBnZXRDbGllbnRSZWN0cygpIGNvbnN0OwogICAgIFBhc3NSZWZQ
dHI8Q2xpZW50UmVjdD4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgY29uc3Q7CkBAIC0xNDUsMTkg
KzE0NSwxOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVudCopOwog
Ci0gICAgTm9kZSogY2hlY2tOb2RlV09mZnNldChOb2RlKiwgaW50IG9mZnNldCwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OwotICAgIHZvaWQgY2hlY2tOb2RlQkEoTm9kZSosIEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKLSAgICB2b2lkIGNoZWNrRGVsZXRlRXh0cmFjdChFeGNlcHRpb25Db2RlJik7Cisg
ICAgTm9kZSogY2hlY2tOb2RlV09mZnNldChOb2RlKiwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29k
ZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSkgY29uc3Q7CisgICAgdm9pZCBjaGVja05vZGVC
QShOb2RlKiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSkgY29uc3Q7
CisgICAgdm9pZCBjaGVja0RlbGV0ZUV4dHJhY3QoRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4
Y2VwdGlvbkNvZGUoKSk7CiAgICAgYm9vbCBjb250YWluZWRCeVJlYWRPbmx5KCkgY29uc3Q7CiAg
ICAgaW50IG1heFN0YXJ0T2Zmc2V0KCkgY29uc3Q7CiAgICAgaW50IG1heEVuZE9mZnNldCgpIGNv
bnN0OwogCiAgICAgZW51bSBBY3Rpb25UeXBlIHsgREVMRVRFX0NPTlRFTlRTLCBFWFRSQUNUX0NP
TlRFTlRTLCBDTE9ORV9DT05URU5UUyB9OwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gcHJvY2Vzc0NvbnRlbnRzKEFjdGlvblR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxOb2RlPiBwcm9jZXNzQ29udGVudHNCZXR3ZWVuT2Zmc2V0cyhBY3Rpb25U
eXBlLCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+LCBOb2RlKiwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHN0YXRpYyB2
b2lkIHByb2Nlc3NOb2RlcyhBY3Rpb25UeXBlLCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mLCBQYXNz
UmVmUHRyPE5vZGU+IG9sZENvbnRhaW5lciwgUGFzc1JlZlB0cjxOb2RlPiBuZXdDb250YWluZXIs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHByb2Nl
c3NDb250ZW50cyhBY3Rpb25UeXBlLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9u
Q29kZSgpKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb2RlPiBwcm9jZXNzQ29udGVudHNCZXR3
ZWVuT2Zmc2V0cyhBY3Rpb25UeXBlLCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+LCBOb2Rl
KiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgRXhjZXB0aW9uQ29k
ZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc05v
ZGVzKEFjdGlvblR5cGUsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYsIFBhc3NSZWZQdHI8Tm9kZT4g
b2xkQ29udGFpbmVyLCBQYXNzUmVmUHRyPE5vZGU+IG5ld0NvbnRhaW5lciwgRXhjZXB0aW9uQ29k
ZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAgICAgZW51bSBDb250ZW50c1Byb2Nlc3NE
aXJlY3Rpb24geyBQcm9jZXNzQ29udGVudHNGb3J3YXJkLCBQcm9jZXNzQ29udGVudHNCYWNrd2Fy
ZCB9OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vZGU+IHByb2Nlc3NBbmNlc3RvcnNBbmRUaGVp
clNpYmxpbmdzKEFjdGlvblR5cGUsIE5vZGUqIGNvbnRhaW5lciwgQ29udGVudHNQcm9jZXNzRGly
ZWN0aW9uLCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lZENvbnRhaW5lciwgTm9kZSogY29tbW9uUm9v
dCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vZGU+IHByb2Nlc3NB
bmNlc3RvcnNBbmRUaGVpclNpYmxpbmdzKEFjdGlvblR5cGUsIE5vZGUqIGNvbnRhaW5lciwgQ29u
dGVudHNQcm9jZXNzRGlyZWN0aW9uLCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lZENvbnRhaW5lciwg
Tm9kZSogY29tbW9uUm9vdCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUo
KSk7CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fb3duZXJEb2N1bWVudDsKICAgICBSYW5nZUJv
dW5kYXJ5UG9pbnQgbV9zdGFydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCA0NGM5Y2M4NGYwN2M3NGRh
OTZkZGUxYzg1YmE0OTM5MDIyYTc3MDE3Li5iMzFlNjlhODk5MWYyNDM5ZDZjNDcxN2MyZDkxNjJm
YzcyNjFjYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC0xNTEsMTEgKzE1MSwxMCBAQCBQYXNzUmVm
UHRyPFRleHQ+IFRleHQ6OnJlcGxhY2VXaG9sZVRleHQoY29uc3QgU3RyaW5nJiBuZXdUZXh0LCBF
eGNlcHRpb25Db2RlJikKIAogICAgIFJlZlB0cjxUZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOyAv
LyBNdXRhdGlvbiBldmVudCBoYW5kbGVycyBjb3VsZCBjYXVzZSBvdXIgbGFzdCByZWYgdG8gZ28g
YXdheQogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGUoKTsgLy8gUHJvdGVj
dCBhZ2FpbnN0IG11dGF0aW9uIGhhbmRsZXJzIG1vdmluZyB0aGlzIG5vZGUgZHVyaW5nIHRyYXZl
cnNhbAotICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZCA9IDA7CiAgICAgZm9yIChSZWZQdHI8Tm9k
ZT4gbiA9IHN0YXJ0VGV4dDsgbiAmJiBuICE9IHRoaXMgJiYgbi0+aXNUZXh0Tm9kZSgpICYmIG4t
PnBhcmVudE5vZGUoKSA9PSBwYXJlbnQ7KSB7CiAgICAgICAgIFJlZlB0cjxOb2RlPiBub2RlVG9S
ZW1vdmUobi5yZWxlYXNlKCkpOwogICAgICAgICBuID0gbm9kZVRvUmVtb3ZlLT5uZXh0U2libGlu
ZygpOwotICAgICAgICBwYXJlbnQtPnJlbW92ZUNoaWxkKG5vZGVUb1JlbW92ZS5nZXQoKSwgaWdu
b3JlZCk7CisgICAgICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQobm9kZVRvUmVtb3ZlLmdldCgpKTsK
ICAgICB9CiAKICAgICBpZiAodGhpcyAhPSBlbmRUZXh0KSB7CkBAIC0xNjMsMTcgKzE2MiwxNyBA
QCBQYXNzUmVmUHRyPFRleHQ+IFRleHQ6OnJlcGxhY2VXaG9sZVRleHQoY29uc3QgU3RyaW5nJiBu
ZXdUZXh0LCBFeGNlcHRpb25Db2RlJikKICAgICAgICAgZm9yIChSZWZQdHI8Tm9kZT4gbiA9IG5l
eHRTaWJsaW5nKCk7IG4gJiYgbiAhPSBvbmVQYXN0RW5kVGV4dCAmJiBuLT5pc1RleHROb2RlKCkg
JiYgbi0+cGFyZW50Tm9kZSgpID09IHBhcmVudDspIHsKICAgICAgICAgICAgIFJlZlB0cjxOb2Rl
PiBub2RlVG9SZW1vdmUobi5yZWxlYXNlKCkpOwogICAgICAgICAgICAgbiA9IG5vZGVUb1JlbW92
ZS0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQobm9kZVRv
UmVtb3ZlLmdldCgpLCBpZ25vcmVkKTsKKyAgICAgICAgICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQo
bm9kZVRvUmVtb3ZlLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChuZXdUZXh0
LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudE5vZGUoKSA9PSBwYXJl
bnQpCi0gICAgICAgICAgICBwYXJlbnQtPnJlbW92ZUNoaWxkKHRoaXMsIGlnbm9yZWQpOworICAg
ICAgICAgICAgcGFyZW50LT5yZW1vdmVDaGlsZCh0aGlzKTsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgc2V0RGF0YShuZXdUZXh0LCBpZ25vcmVkKTsKKyAgICBzZXREYXRhKG5ld1Rl
eHQpOwogICAgIHJldHVybiBwcm90ZWN0ZWRUaGlzLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgK
aW5kZXggM2NjOGM1MDJhNDNiNzBhMzNiNWEzMDM5ZmQxZDNlMDMxYjUwNDU4NS4uYjk1NWRhYjBi
ODcxYzI1ZTFlOWFhNTU1ZGIzMjc3MmY1YjJiMjc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCkBAIC0zNCwxMiAr
MzQsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHQ+IGNyZWF0ZShEb2N1
bWVudCosIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHQ+IGNyZWF0
ZVdpdGhMZW5ndGhMaW1pdChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvc2l0
aW9uSW5TdHJpbmcsIHVuc2lnbmVkIGxlbmd0aExpbWl0ID0gZGVmYXVsdExlbmd0aExpbWl0KTsK
IAotICAgIFBhc3NSZWZQdHI8VGV4dD4gc3BsaXRUZXh0KHVuc2lnbmVkIG9mZnNldCwgRXhjZXB0
aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8VGV4dD4gc3BsaXRUZXh0KHVuc2lnbmVkIG9mZnNl
dCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAKICAgICAvLyBE
T00gTGV2ZWwgMzogaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtQ29yZS9jb3JlLmh0
bWwjSUQtMTMxMjI5NTc3MgogCiAgICAgU3RyaW5nIHdob2xlVGV4dCgpIGNvbnN0OwotICAgIFBh
c3NSZWZQdHI8VGV4dD4gcmVwbGFjZVdob2xlVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CisgICAgUGFzc1JlZlB0cjxUZXh0PiByZXBsYWNlV2hvbGVUZXh0KGNvbnN0IFN0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogCiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBh
cnNlci5jcHAKaW5kZXggMjM2M2VhZDFhM2Y5Zjg2ZTM5Y2Q1MGYwZDczYWY5MGYzNjk2MzdiMS4u
ODIzNzgwZjJkN2RkNTBjOGEwZTkxNThmMzIyZGU4YTM2NmMwM2Q5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xOTAsOCArMTkwLDcgQEAgdm9pZCBYTUxE
b2N1bWVudFBhcnNlcjo6ZXhpdFRleHQoKQogICAgICAgICByZXR1cm47CiAKICNpZiAhVVNFKFFY
TUxTVFJFQU0pCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgbV9sZWFmVGV4dE5vZGUt
PmFwcGVuZERhdGEodG9TdHJpbmcobV9idWZmZXJlZFRleHQuZGF0YSgpLCBtX2J1ZmZlcmVkVGV4
dC5zaXplKCkpLCBlYyk7CisgICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVuZERhdGEodG9TdHJpbmco
bV9idWZmZXJlZFRleHQuZGF0YSgpLCBtX2J1ZmZlcmVkVGV4dC5zaXplKCkpKTsKICAgICBWZWN0
b3I8eG1sQ2hhcj4gZW1wdHk7CiAgICAgbV9idWZmZXJlZFRleHQuc3dhcChlbXB0eSk7CiAjZW5k
aWYKQEAgLTI1NiwxOSArMjU1LDE4IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPEVsZW1lbnQ+IGNy
ZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1lbnQqIGRvYywgY29uc3QKICAgICBSZWZQ
dHI8RWxlbWVudD4gcmVwb3J0RWxlbWVudCA9IGRvYy0+Y3JlYXRlRWxlbWVudChRdWFsaWZpZWRO
YW1lKG51bGxBdG9tLCAicGFyc2VyZXJyb3IiLCB4aHRtbE5hbWVzcGFjZVVSSSksIGZhbHNlKTsK
ICAgICByZXBvcnRFbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiZGlzcGxheTogYmxv
Y2s7IHdoaXRlLXNwYWNlOiBwcmU7IGJvcmRlcjogMnB4IHNvbGlkICNjNzc7IHBhZGRpbmc6IDAg
MWVtIDAgMWVtOyBtYXJnaW46IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogI2ZkZDsgY29sb3I6IGJs
YWNrIik7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBSZWZQdHI8RWxlbWVudD4g
aDMgPSBkb2MtPmNyZWF0ZUVsZW1lbnQoaDNUYWcsIGZhbHNlKTsKLSAgICByZXBvcnRFbGVtZW50
LT5hcHBlbmRDaGlsZChoMy5nZXQoKSwgZWMpOwotICAgIGgzLT5hcHBlbmRDaGlsZChkb2MtPmNy
ZWF0ZVRleHROb2RlKCJUaGlzIHBhZ2UgY29udGFpbnMgdGhlIGZvbGxvd2luZyBlcnJvcnM6Iiks
IGVjKTsKKyAgICByZXBvcnRFbGVtZW50LT5hcHBlbmRDaGlsZChoMy5nZXQoKSk7CisgICAgaDMt
PmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoIlRoaXMgcGFnZSBjb250YWlucyB0aGUg
Zm9sbG93aW5nIGVycm9yczoiKSk7CiAKICAgICBSZWZQdHI8RWxlbWVudD4gZml4ZWQgPSBkb2Mt
PmNyZWF0ZUVsZW1lbnQoZGl2VGFnLCBmYWxzZSk7Ci0gICAgcmVwb3J0RWxlbWVudC0+YXBwZW5k
Q2hpbGQoZml4ZWQuZ2V0KCksIGVjKTsKKyAgICByZXBvcnRFbGVtZW50LT5hcHBlbmRDaGlsZChm
aXhlZC5nZXQoKSk7CiAgICAgZml4ZWQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICJmb250LWZh
bWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEycHgiKTsKLSAgICBmaXhlZC0+YXBwZW5kQ2hpbGQo
ZG9jLT5jcmVhdGVUZXh0Tm9kZShlcnJvck1lc3NhZ2VzKSwgZWMpOworICAgIGZpeGVkLT5hcHBl
bmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKGVycm9yTWVzc2FnZXMpKTsKIAogICAgIGgzID0g
ZG9jLT5jcmVhdGVFbGVtZW50KGgzVGFnLCBmYWxzZSk7Ci0gICAgcmVwb3J0RWxlbWVudC0+YXBw
ZW5kQ2hpbGQoaDMuZ2V0KCksIGVjKTsKLSAgICBoMy0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVU
ZXh0Tm9kZSgiQmVsb3cgaXMgYSByZW5kZXJpbmcgb2YgdGhlIHBhZ2UgdXAgdG8gdGhlIGZpcnN0
IGVycm9yLiIpLCBlYyk7CisgICAgcmVwb3J0RWxlbWVudC0+YXBwZW5kQ2hpbGQoaDMuZ2V0KCkp
OworICAgIGgzLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKCJCZWxvdyBpcyBhIHJl
bmRlcmluZyBvZiB0aGUgcGFnZSB1cCB0byB0aGUgZmlyc3QgZXJyb3IuIikpOwogCiAgICAgcmV0
dXJuIHJlcG9ydEVsZW1lbnQ7CiB9CkBAIC0yODQsMzQgKzI4MiwzMyBAQCB2b2lkIFhNTERvY3Vt
ZW50UGFyc2VyOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jaygpCiAgICAgLy8gd2hlcmUgdGhlIGVy
cm9ycyBhcmUgbG9jYXRlZCkKIAogICAgIC8vIENyZWF0ZSBlbGVtZW50cyBmb3IgZGlzcGxheQot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXMt
PmRvY3VtZW50KCk7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGRvY3VtZW50RWxlbWVudCA9IGRvY3Vt
ZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkgewogICAg
ICAgICBSZWZQdHI8RWxlbWVudD4gcm9vdEVsZW1lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVu
dChodG1sVGFnLCBmYWxzZSk7Ci0gICAgICAgIGRvY3VtZW50LT5hcHBlbmRDaGlsZChyb290RWxl
bWVudCwgZWMpOworICAgICAgICBkb2N1bWVudC0+YXBwZW5kQ2hpbGQocm9vdEVsZW1lbnQpOwog
ICAgICAgICBSZWZQdHI8RWxlbWVudD4gYm9keSA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50KGJv
ZHlUYWcsIGZhbHNlKTsKLSAgICAgICAgcm9vdEVsZW1lbnQtPmFwcGVuZENoaWxkKGJvZHksIGVj
KTsKKyAgICAgICAgcm9vdEVsZW1lbnQtPmFwcGVuZENoaWxkKGJvZHkpOwogICAgICAgICBkb2N1
bWVudEVsZW1lbnQgPSBib2R5LmdldCgpOwogICAgIH0KICNpZiBFTkFCTEUoU1ZHKQogICAgIGVs
c2UgaWYgKGRvY3VtZW50RWxlbWVudC0+bmFtZXNwYWNlVVJJKCkgPT0gU1ZHTmFtZXM6OnN2Z05h
bWVzcGFjZVVSSSkgewogICAgICAgICBSZWZQdHI8RWxlbWVudD4gcm9vdEVsZW1lbnQgPSBkb2N1
bWVudC0+Y3JlYXRlRWxlbWVudChodG1sVGFnLCBmYWxzZSk7CiAgICAgICAgIFJlZlB0cjxFbGVt
ZW50PiBib2R5ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoYm9keVRhZywgZmFsc2UpOwotICAg
ICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoYm9keSwgZWMpOwotICAgICAgICBib2R5LT5h
cHBlbmRDaGlsZChkb2N1bWVudEVsZW1lbnQsIGVjKTsKLSAgICAgICAgZG9jdW1lbnQtPmFwcGVu
ZENoaWxkKHJvb3RFbGVtZW50LmdldCgpLCBlYyk7CisgICAgICAgIHJvb3RFbGVtZW50LT5hcHBl
bmRDaGlsZChib2R5KTsKKyAgICAgICAgYm9keS0+YXBwZW5kQ2hpbGQoZG9jdW1lbnRFbGVtZW50
KTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcGVuZENoaWxkKHJvb3RFbGVtZW50LmdldCgpKTsKICAg
ICAgICAgZG9jdW1lbnRFbGVtZW50ID0gYm9keS5nZXQoKTsKICAgICB9CiAjZW5kaWYKICAgICBS
ZWZQdHI8RWxlbWVudD4gcmVwb3J0RWxlbWVudCA9IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFk
ZXIoZG9jdW1lbnQsIG1fZXJyb3JNZXNzYWdlcyk7Ci0gICAgZG9jdW1lbnRFbGVtZW50LT5pbnNl
cnRCZWZvcmUocmVwb3J0RWxlbWVudCwgZG9jdW1lbnRFbGVtZW50LT5maXJzdENoaWxkKCksIGVj
KTsKKyAgICBkb2N1bWVudEVsZW1lbnQtPmluc2VydEJlZm9yZShyZXBvcnRFbGVtZW50LCBkb2N1
bWVudEVsZW1lbnQtPmZpcnN0Q2hpbGQoKSk7CiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgaWYgKGRv
Y3VtZW50LT50cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCgpKSB7CiAgICAgICAgIFJlZlB0cjxFbGVt
ZW50PiBwYXJhZ3JhcGggPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChwVGFnLCBmYWxzZSk7CiAg
ICAgICAgIHBhcmFncmFwaC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgIndoaXRlLXNwYWNlOiBu
b3JtYWwiKTsKLSAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRl
VGV4dE5vZGUoIlRoaXMgZG9jdW1lbnQgd2FzIGNyZWF0ZWQgYXMgdGhlIHJlc3VsdCBvZiBhbiBY
U0wgdHJhbnNmb3JtYXRpb24uIFRoZSBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBnaXZlbiBhcmUg
ZnJvbSB0aGUgdHJhbnNmb3JtZWQgcmVzdWx0LiIpLCBlYyk7Ci0gICAgICAgIHJlcG9ydEVsZW1l
bnQtPmFwcGVuZENoaWxkKHBhcmFncmFwaC5yZWxlYXNlKCksIGVjKTsKKyAgICAgICAgcGFyYWdy
YXBoLT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUoIlRoaXMgZG9jdW1lbnQg
d2FzIGNyZWF0ZWQgYXMgdGhlIHJlc3VsdCBvZiBhbiBYU0wgdHJhbnNmb3JtYXRpb24uIFRoZSBs
aW5lIGFuZCBjb2x1bW4gbnVtYmVycyBnaXZlbiBhcmUgZnJvbSB0aGUgdHJhbnNmb3JtZWQgcmVz
dWx0LiIpKTsKKyAgICAgICAgcmVwb3J0RWxlbWVudC0+YXBwZW5kQ2hpbGQocGFyYWdyYXBoLnJl
bGVhc2UoKSk7CiAgICAgfQogI2VuZGlmCiAgICAgZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVk
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAKaW5kZXggZjJmMzlmYjRlYzdkZWUwNzBhODM1MTVhZTBjNGY0MTBmNmI3Mjg2ZS4uYzQ0YTQ3
ZTcxNDFhOTI5YjkyMTdjY2JiZjZjYjUxZGJkMjkyMzlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTEwMzMsMTEgKzEwMzMsOSBA
QCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpjb21tZW50KGNvbnN0IHhtbENoYXIqIHMpCiAKIHZv
aWQgWE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RG9jdW1lbnQoY29uc3QgeG1sQ2hhciogdmVyc2lv
biwgY29uc3QgeG1sQ2hhciogZW5jb2RpbmcsIGludCBzdGFuZGFsb25lKQogewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotCiAgICAgaWYgKHZlcnNpb24pCi0gICAgICAgIGRvY3VtZW50KCkt
PnNldFhNTFZlcnNpb24odG9TdHJpbmcodmVyc2lvbiksIGVjKTsKLSAgICBkb2N1bWVudCgpLT5z
ZXRYTUxTdGFuZGFsb25lKHN0YW5kYWxvbmUgPT0gMSwgZWMpOyAvLyBwb3NzaWJsZSB2YWx1ZXMg
YXJlIDAsIDEsIGFuZCAtMQorICAgICAgICBkb2N1bWVudCgpLT5zZXRYTUxWZXJzaW9uKHRvU3Ry
aW5nKHZlcnNpb24pKTsKKyAgICBkb2N1bWVudCgpLT5zZXRYTUxTdGFuZGFsb25lKHN0YW5kYWxv
bmUgPT0gMSk7IC8vIHBvc3NpYmxlIHZhbHVlcyBhcmUgMCwgMSwgYW5kIC0xCiAgICAgaWYgKGVu
Y29kaW5nKQogICAgICAgICBkb2N1bWVudCgpLT5zZXRYTUxFbmNvZGluZyh0b1N0cmluZyhlbmNv
ZGluZykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFy
c2VyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCmlu
ZGV4IGI1Y2ZhMjM0MmQwZDY1MGQwNGMyMGJjMzhkN2ZlZTZiNjg1YzA2ZmEuLmIyOGJjNmFmYTdj
YWVjNzM5YjM0YTQ1YzU5YjBhNTFjNzc5NzcyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9YTUxEb2N1bWVudFBhcnNlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vWE1M
RG9jdW1lbnRQYXJzZXJRdC5jcHAKQEAgLTQyNywxMCArNDI3LDkgQEAgdm9pZCBYTUxEb2N1bWVu
dFBhcnNlcjo6cGFyc2UoKQogICAgICAgICAgICAgICAgIFVDaGFyIGMgPSBkZWNvZGVOYW1lZEVu
dGl0eShlbnRpdHkudG9VdGY4KCkuY29uc3REYXRhKCkpOwogICAgICAgICAgICAgICAgIGlmICgh
bV9sZWFmVGV4dE5vZGUpCiAgICAgICAgICAgICAgICAgICAgIGVudGVyVGV4dCgpOwotICAgICAg
ICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICAgICAgICAgIFN0cmluZyBz
dHIoJmMsIDEpOwogICAgICAgICAgICAgICAgIC8vIHFEZWJ1ZygpPDwiIC0tLS0tLS0gYWRkaW5n
IGVudGl0eSAiPDxzdHI7Ci0gICAgICAgICAgICAgICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVuZERh
dGEoc3RyLCBlYyk7CisgICAgICAgICAgICAgICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVuZERhdGEo
c3RyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC00
NTQsMTQgKzQ1MywxMyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZSgpCiB2b2lkIFhN
TERvY3VtZW50UGFyc2VyOjpzdGFydERvY3VtZW50KCkKIHsKICAgICBpbml0aWFsaXplUGFyc2Vy
Q29udGV4dCgpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCiAgICAgaWYgKCFtX3BhcnNp
bmdGcmFnbWVudCkgewotICAgICAgICBkb2N1bWVudCgpLT5zZXRYTUxTdGFuZGFsb25lKG1fc3Ry
ZWFtLmlzU3RhbmRhbG9uZURvY3VtZW50KCksIGVjKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0
WE1MU3RhbmRhbG9uZShtX3N0cmVhbS5pc1N0YW5kYWxvbmVEb2N1bWVudCgpKTsKIAogICAgICAg
ICBRU3RyaW5nUmVmIHZlcnNpb24gPSBtX3N0cmVhbS5kb2N1bWVudFZlcnNpb24oKTsKICAgICAg
ICAgaWYgKCF2ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGRvY3VtZW50KCktPnNldFhN
TFZlcnNpb24odmVyc2lvbiwgZWMpOworICAgICAgICAgICAgZG9jdW1lbnQoKS0+c2V0WE1MVmVy
c2lvbih2ZXJzaW9uKTsKICAgICAgICAgUVN0cmluZ1JlZiBlbmNvZGluZyA9IG1fc3RyZWFtLmRv
Y3VtZW50RW5jb2RpbmcoKTsKICAgICAgICAgaWYgKCFlbmNvZGluZy5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBkb2N1bWVudCgpLT5zZXRYTUxFbmNvZGluZyhlbmNvZGluZyk7CkBAIC01NTcsOCAr
NTU1LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VFbmRFbGVtZW50KCkKIAogICAg
IGlmIChtX3NjcmlwdGluZ1Blcm1pc3Npb24gPT0gRnJhZ21lbnRTY3JpcHRpbmdOb3RBbGxvd2Vk
ICYmIG4tPmlzRWxlbWVudE5vZGUoKSAmJiB0b1NjcmlwdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KG4uZ2V0KCkpKSkgewogICAgICAgICBwb3BDdXJyZW50Tm9kZSgpOwotICAgICAgICBF
eGNlcHRpb25Db2RlIGVjOwotICAgICAgICBuLT5yZW1vdmUoZWMpOworICAgICAgICBuLT5yZW1v
dmUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjE1LDggKzYxMiw3IEBAIHZvaWQg
WE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlQ2hhcmFjdGVycygpCiB7CiAgICAgaWYgKCFtX2xlYWZU
ZXh0Tm9kZSkKICAgICAgICAgZW50ZXJUZXh0KCk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVuZERhdGEobV9zdHJlYW0udGV4dCgpLCBlYyk7Cisg
ICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVuZERhdGEobV9zdHJlYW0udGV4dCgpKTsKIH0KIAogdm9p
ZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99442</attachid>
            <date>2011-07-01 01:09:30 -0700</date>
            <delta_ts>2011-07-01 03:58:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63688-20110701170928.patch</filename>
            <type>text/plain</type>
            <size>56887</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTAwODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDg3
MTVlNDE5Zjk3MjU2ZTFjYjAxNGUxNzZhOWZlNDQxODczYTcwM2UuLjM2Nzc5MGUwNjhiMTUxNmFm
ZjBiMGQzNzVjMGVjZTI1YzBkY2U4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTA3LTAxICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFj
dG9yaW5nOiBJZ25vcmVkIEV4Y2VwdGlvbkNvZGUgdmFsdWUgc2hvdWxkIGJlIGxlc3MgYW5ub3lp
bmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzY4
OAorCisgICAgICAgIEFkZGVkIEFTU0VSVF9BVCBtYWNyby4KKworICAgICAgICAqIHd0Zi9Bc3Nl
cnRpb25zLmg6CisKIDIwMTEtMDYtMjkgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAppbmRleCAxMzZkNWJjODE1ODM5ZjEzMDQ1N2ExMmY0
OWIzMTBiZDhhYjYwNTYzLi5hZDIyMzlhNTM5N2E5YWQ4ZGMwZTUyOGZiODc1MzEyNDVjYjMwZGVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaApAQCAtMjM1LDYgKzIzNSw3
IEBAIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURkxvZ1ZlcmJvc2UoY29uc3QgY2hhciogZmls
ZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1CiAjaWYgQVNTRVJUX0RJU0FCTEVECiAKICNkZWZp
bmUgQVNTRVJUKGFzc2VydGlvbikgKCh2b2lkKTApCisjZGVmaW5lIEFTU0VSVF9BVChhc3NlcnRp
b24sIGZpbGUsIGxpbmUsIGZ1bmN0aW9uKSAoKHZvaWQpMCkKICNkZWZpbmUgQVNTRVJUX05PVF9S
RUFDSEVEKCkgKCh2b2lkKTApCiAKICNpZiBDT01QSUxFUihJTlRFTCkgJiYgIU9TKFdJTkRPV1Mp
IHx8IENPTVBJTEVSKFJWQ1QpCkBAIC0yNTQsNiArMjU1LDEzIEBAIGlubGluZSB2b2lkIGFzc2Vy
dFVudXNlZChUJiB4KSB7ICh2b2lkKXg7IH0KICAgICB9IFwKIHdoaWxlICgwKQogCisjZGVmaW5l
IEFTU0VSVF9BVChhc3NlcnRpb24sIGZpbGUsIGxpbmUsIGZ1bmN0aW9uKSBkbyAgXAorICAgIGlm
ICghKGFzc2VydGlvbikpIHsgXAorICAgICAgICBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKGZp
bGUsIGxpbmUsIGZ1bmN0aW9uLCAjYXNzZXJ0aW9uKTsgXAorICAgICAgICBDUkFTSCgpOyBcCisg
ICAgfSBcCit3aGlsZSAoMCkKKwogI2RlZmluZSBBU1NFUlRfTk9UX1JFQUNIRUQoKSBkbyB7IFwK
ICAgICBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BS
RVRUWV9GVU5DVElPTiwgMCk7IFwKICAgICBDUkFTSCgpOyBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyOWM3
NzJiYjNiZmRhZTRjZGE0ZDBjNGYyNWYxMDY4Zjk0ZTgwNy4uZWZhZmI4NjA3NTg2Yjg0OTFhNDgz
OWE4YmQxNzEyNDM4Yjc5MTkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDExLTA3
LTAxICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nOiBJZ25vcmVkIEV4
Y2VwdGlvbkNvZGUgdmFsdWUgc2hvdWxkIGJlIGxlc3MgYW5ub3lpbmcuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzY4OAorCisgICAgICAgIC0gSW50
cm9kdWNlZCBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUgY2xhc3MgZm9yIHRoZSBkZWZhdWx0IHBhcmFt
ZXRlciBvZiBFeGNlcHRpb25Db2RlLgorICAgICAgICAtIEludHJvZHVjZWQgQVNTRVJUX05FVkVS
X1RIUk9XTiB0byBjaGVjayBFeGNlcHRpb25Db2RlIG5vdCBzZXQgdG8gbm9uLXplcm8gYWZ0ZXIg
dGhlIGNhbGwuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBpcyBmb2N1c2VkIG9uIGRv
bSBtb2R1bGUuIGZvciBhdm9pZCBicm9hZCBtb2RpZmljYXRpb24uCisgICAgICAgIAorICAgICAg
ICBObyBuZXcgdGVzdHMuIE5vIGJlaGF2aW91ciBjaGFuZ2UuCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEu
aDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKToKKyAgICAgICAgKiBkb20vQ29udGFp
bmVyTm9kZS5oOgorICAgICAgICAqIGRvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6OmRlbGV0ZUl0ZW0pOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VGl0bGUp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzZXRN
YXJrZXJzQWN0aXZlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpkZXByZWNhdGVkQ3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENTdHJpbmdBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6c2V0Qm9vbGVhbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjplbnN1cmVTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRp
c3BhdGNoQXR0clJlbW92YWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXNw
YXRjaEF0dHJBZGRpdGlvbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldElu
dGVncmFsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldFVuc2lnbmVk
SW50ZWdyYWxBdHRyaWJ1dGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICog
ZG9tL0lnbm9yaW5nRXhjZXB0aW9uQ29kZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okln
bm9yaW5nRXhjZXB0aW9uQ29kZTo6b3BlcmF0b3IgRXhjZXB0aW9uQ29kZSYgKToKKyAgICAgICAg
KFdlYkNvcmU6Oklnbm9yaW5nRXhjZXB0aW9uQ29kZTo6SWdub3JpbmdFeGNlcHRpb25Db2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldmVyVGhyb3duV2l0aExvY2F0aW9uOjpOZXZlclRocm93bldp
dGhMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXZlclRocm93bldpdGhMb2NhdGlvbjo6
fk5ldmVyVGhyb3duV2l0aExvY2F0aW9uKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMpOgorICAg
ICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om5vcm1hbGl6ZSk6
CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vUmFuZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2U6OlJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjplZGl0
aW5nU3RhcnRQb3NpdGlvbik6CisgICAgICAgICogZG9tL1JhbmdlLmg6CisgICAgICAgICogZG9t
L1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6cmVwbGFjZVdob2xlVGV4dCk6Cisg
ICAgICAgICogZG9tL1RleHQuaDoKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmV4aXRUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydEVycm9yTWVzc2FnZUJsb2NrKToKKyAgICAg
ICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhNTERvY3VtZW50UGFyc2VyOjpzdGFydERvY3VtZW50KToKKyAgICAgICAgKiBkb20vWE1MRG9j
dW1lbnRQYXJzZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6
cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRW5kRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VDaGFyYWN0ZXJz
KToKKwogMjAxMS0wNi0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IDdkZTFhOGI5NTJjZTFjZDE2Yjk5MWRkYTQ3NDgxMTBkYTM4NDUwNzUuLmUyOTU1ZDlm
YjdmOWU1NjRhNzMwMmRhMzRmN2RjYjRmYWE1MmI1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtMTE3Niw2ICsxMTc2LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vRXhjbHVzaXZlVHJhY2tMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2Rv
bS9GcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0ln
bm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyLmggXAorCVNvdXJjZS9XZWJDb3Jl
L2RvbS9JZ25vcmluZ0V4Y2VwdGlvbkNvZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0ljb25V
UkwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vSGFzaENoYW5nZUV2ZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGIwOTFlYjg3NTYy
N2I1NDNhZDc2MDRlM2VkMTQ4NTgwMWU4MGIxY2MuLjZiNmVhZjlmOWIzN2FkZThjMjI0Zjk4ZTQ4
NTVmZDJhYWM4NjI1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTUzOCw2ICs1MzgsNyBAQAogICAg
ICAgICAgICAgJ2RvbS9OYW1lZE5vZGVNYXAuaCcsCiAgICAgICAgICAgICAnZG9tL05vZGUuaCcs
CiAgICAgICAgICAgICAnZG9tL05vZGVMaXN0LmgnLAorICAgICAgICAgICAgJ2RvbS9OZXZlclRo
cm93bi5oJywKICAgICAgICAgICAgICdkb20vUGVuZGluZ1NjcmlwdC5oJywKICAgICAgICAgICAg
ICdkb20vUG9zaXRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL1F1YWxpZmllZE5hbWUuaCcsCkBA
IC0yNTA1LDYgKzI1MDYsNyBAQAogICAgICAgICAgICAgJ2RvbS9FeGNsdXNpdmVUcmFja0xpc3Qu
aCcsCiAgICAgICAgICAgICAnZG9tL0hhc2hDaGFuZ2VFdmVudC5oJywKICAgICAgICAgICAgICdk
b20vSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCcsCisgICAgICAgICAg
ICAnZG9tL0lnbm9yaW5nRXhjZXB0aW9uQ29kZS5oJywKICAgICAgICAgICAgICdkb20vSWNvblVS
TC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9JY29uVVJMLmgnLAogICAgICAgICAgICAgJ2RvbS9L
ZXlib2FyZEV2ZW50LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDdmZjc3NGRkMGZlMGYxNzY0NWIxOTRmOWI2OTZhZjBj
ZGY3Y2I1My4uNTM4NjZhNWIwNjFlOGNhYmY5NmMzN2JjYjNjMThiMTVmNzUwNmE5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MzI4OCw2ICszMjg4LDcgQEAKIAkJQTcxQzMwQjkxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0Nv
bnRlbnRTZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcxQzMwQjcxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3Rvci5o
ICovOyB9OwogCQlBNzNGOTVGRTEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczRjk1RkMx
MkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmNwcCAqLzsgfTsKIAkJQTczRjk1RkYx
MkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkgLyogUm91
bmRlZEludFJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBNzRCQjc2QjEzQkRBODYzMDBGRjdCRjAgLyogSWdub3JpbmdFeGNlcHRpb25Db2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzRCQjc2
QTEzQkRBODYzMDBGRjdCRjAgLyogSWdub3JpbmdFeGNlcHRpb25Db2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc0QzJEM0MxMzgxMUUwRDAw
RjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzRDMkQzQjEzODExRTBEMDBGODM1NzIgLyogU2hhZG93
Q29udGVudEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBNzVFNDk3NjEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVF
NDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc1RTQ5NzcxMDc1MkFD
QjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFNDk3NTEwNzUyQUNCMDBDOUI4OTYgLyog
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLzsgfTsKQEAgLTk4MDYsNiArOTgwNyw3IEBACiAJ
CUE3MUMzMEI3MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93Q29udGVudFNlbGVjdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBS
b3VuZGVkSW50UmVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
b3VuZGVkSW50UmVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3M0Y5NUZE
MTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50UmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSb3VuZGVkSW50UmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNzRCQjc2QTEzQkRBODYzMDBGRjdCRjAgLyogSWdub3JpbmdFeGNlcHRpb25Db2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzRDMkQzQjEzODExRTBEMDBGODM1NzIg
LyogU2hhZG93Q29udGVudEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2hhZG93Q29udGVudEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTc1RTQ5NzQxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTk2MjYsNiArMTk2MjgsNyBAQAogCQkJCTQ1MDk5QzQwMTM3MEE3ODAwMDU4RDUxMyAv
KiBJY29uVVJMLmNwcCAqLywKIAkJCQk0NUJBQzJBRjEzNjBCQkFCMDA1REEyNTggLyogSWNvblVS
TC5oICovLAogCQkJCThBQjRCQzc2MTI2RkRCNzEwMERFQjcyNyAvKiBJZ25vcmVEZXN0cnVjdGl2
ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oICovLAorCQkJCUE3NEJCNzZBMTNCREE4NjMwMEZGN0JG
MCAvKiBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUuaCAqLywKIAkJCQk4NTAzMUIyRDBBNDRFRkM3MDBG
OTkyRTAgLyogS2V5Ym9hcmRFdmVudC5jcHAgKi8sCiAJCQkJODUwMzFCMkUwQTQ0RUZDNzAwRjk5
MkUwIC8qIEtleWJvYXJkRXZlbnQuaCAqLywKIAkJCQkxNENGN0MyMDA5RjcxMTA2MDBFQjM2NjUg
LyogS2V5Ym9hcmRFdmVudC5pZGwgKi8sCkBAIC0yMzA3Nyw2ICsyMzA4MCw3IEBACiAJCQkJMDg2
Mzk1MTYxM0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDMxQTJGOUMxM0I2RjJCMDAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9u
YWxOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QUJCNzg3MTNCOTA0QkMwMEYxOTdFMyAv
KiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NEJCNzZC
MTNCREE4NjMwMEZGN0JGMCAvKiBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKaW5kZXggNjYxZTExMDYzNzcyMmQzNDhmN2Zj
ODVkYTQwZjU1ZTM5MjZjMTIyMi4uZjkyNGViODBiOWFjYTA5NzYyMjZlYTYyMGIzZGRjZTBmNGQ2
YjQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCkBAIC0zMCwxMyArMzAsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2hhcmFjdGVyRGF0YSA6IHB1YmxpYyBOb2RlIHsK
IHB1YmxpYzoKICAgICBTdHJpbmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQotICAg
IHZvaWQgc2V0RGF0YShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBz
ZXREYXRhKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25D
b2RlKCkpOwogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+bGVu
Z3RoKCk7IH0KLSAgICBTdHJpbmcgc3Vic3RyaW5nRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGNvdW50LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGluc2VydERhdGEodW5zaWduZWQgb2Zm
c2V0LCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBkZWxldGVEYXRh
KHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
b2lkIHJlcGxhY2VEYXRhKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBTdHJpbmcgc3Vic3RyaW5nRGF0YSh1bnNpZ25l
ZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50LCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0
aW9uQ29kZSgpKTsKKyAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CisgICAgdm9pZCBpbnNlcnREYXRhKHVu
c2lnbmVkIG9mZnNldCwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4
Y2VwdGlvbkNvZGUoKSk7CisgICAgdm9pZCBkZWxldGVEYXRhKHVuc2lnbmVkIG9mZnNldCwgdW5z
aWduZWQgY291bnQsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwor
ICAgIHZvaWQgcmVwbGFjZURhdGEodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCwgY29u
c3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAK
ICAgICBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSBjb25zdDsKIApAQCAtNjcsNyArNjcs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBvZmZzZXRJbkNoYXJhY3RlcnMoKSBjb25z
dDsKICAgICB2b2lkIHNldERhdGFBbmRVcGRhdGUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiwgdW5z
aWduZWQgb2Zmc2V0T2ZSZXBsYWNlZERhdGEsIHVuc2lnbmVkIG9sZExlbmd0aCwgdW5zaWduZWQg
bmV3TGVuZ3RoKTsKICAgICB2b2lkIHVwZGF0ZVJlbmRlcmVyKHVuc2lnbmVkIG9mZnNldE9mUmVw
bGFjZWREYXRhLCB1bnNpZ25lZCBsZW5ndGhPZlJlcGxhY2VkRGF0YSk7Ci0gICAgdm9pZCBjaGVj
a0NoYXJEYXRhT3BlcmF0aW9uKHVuc2lnbmVkIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZvaWQgY2hlY2tDaGFyRGF0YU9wZXJhdGlvbih1bnNpZ25lZCBvZmZzZXQsIEV4Y2VwdGlvbkNv
ZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogCiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+
IG1fZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNmJhNWFj
ZTdmZTU3ZjIzMzhlNWNkM2U2ZTFjNWEyOGY1ZGE2ODk5OC4uOWE5ZDc1MDU2YTRjODEwODVkODg3
N2NhM2Q5OGNmZWE4MGE1MzNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApA
QCAtODgsMTIgKzg4LDEwIEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJv
bShDb250YWluZXJOb2RlKiBvbGRQYXJlbnQpCiAgICAgb2xkUGFyZW50LT5yZW1vdmVBbGxDaGls
ZHJlbigpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBpZiAoY2hpbGRy
ZW5baV0tPmF0dGFjaGVkKCkpCiAgICAgICAgICAgICBjaGlsZHJlbltpXS0+ZGV0YWNoKCk7CiAg
ICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIGEgbm8gbXV0YXRpb24gZXZlbnQgdmVyc2lvbiBvZiBh
ZG9wdE5vZGUuCi0gICAgICAgIFJlZlB0cjxOb2RlPiBjaGlsZCA9IGRvY3VtZW50KCktPmFkb3B0
Tm9kZShjaGlsZHJlbltpXS5yZWxlYXNlKCksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Cisg
ICAgICAgIFJlZlB0cjxOb2RlPiBjaGlsZCA9IGRvY3VtZW50KCktPmFkb3B0Tm9kZShjaGlsZHJl
bltpXS5yZWxlYXNlKCksIEFTU0VSVF9ORVZFUl9USFJPV04pOwogICAgICAgICBwYXJzZXJBZGRD
aGlsZChjaGlsZC5nZXQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBUb2dldGhlciB3aXRoIGFkb3B0
Tm9kZSBhYm92ZSwgdGhlIHRyZWUgc2NvcGUgbWlnaHQgZ2V0IHVwZGF0ZWQgcmVjdXJzaXZlbHkg
dHdpY2UKICAgICAgICAgLy8gKGlmIHRoZSBkb2N1bWVudCBjaGFuZ2VkIG9yIG9sZFBhcmVudCB3
YXMgaW4gYSBzaGFkb3cgdHJlZSwgQU5EICp0aGlzIGlzIGluIGEgc2hhZG93IHRyZWUpLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggMmU1ODY4ODE5NzRlZTkzZmUxNGViMTQ0YTkw
MWFlOWMyMzFiMzM5MC4uMzViNWUzZjAyMDNmZmQyNTljYzVjYWYxZTA4YTlmMWMzZDVlZGMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC00NCwxMCArNDQsMTAgQEAgcHVibGlj
OgogICAgIE5vZGUqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0K
ICAgICBOb2RlKiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RDaGlsZDsgfQogCi0g
ICAgYm9vbCBpbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVm
Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmLCBib29sIHNob3VsZExhenlBdHRhY2ggPSBmYWxzZSk7Ci0g
ICAgYm9vbCByZXBsYWNlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xk
Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmLCBib29sIHNob3VsZExhenlBdHRhY2ggPSBmYWxzZSk7Ci0g
ICAgYm9vbCByZW1vdmVDaGlsZChOb2RlKiBjaGlsZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIGJv
b2wgYXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYs
IGJvb2wgc2hvdWxkTGF6eUF0dGFjaCA9IGZhbHNlKTsKKyAgICBib29sIGluc2VydEJlZm9yZShQ
YXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZXB0aW9uQ29kZSYg
PSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSwgYm9vbCBzaG91bGRMYXp5QXR0YWNoID0gZmFsc2Up
OworICAgIGJvb2wgcmVwbGFjZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUq
IG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpLCBib29s
IHNob3VsZExhenlBdHRhY2ggPSBmYWxzZSk7CisgICAgYm9vbCByZW1vdmVDaGlsZChOb2RlKiBj
aGlsZCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CisgICAgYm9v
bCBhcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJiA9
IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpLCBib29sIHNob3VsZExhenlBdHRhY2ggPSBmYWxzZSk7
CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBvbmx5IHVzZWQgZHVyaW5nIHBhcnNpbmcuCiAg
ICAgLy8gVGhleSBkb24ndCBzZW5kIERPTSBtdXRhdGlvbiBldmVudHMgb3IgaGFuZGxlIHJlcGFy
ZW50aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdN
YXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCmluZGV4
IGU2OGU5ZDk1OTIxYjM4NjUwOTYwYTAxYTNjZDE1MmI2ZTRiZTc3MWYuLmUwZDg3NWRjYmIwZDdi
ZTYwNDdmMTdmM2ExMTFlZjU5MTFmMGU4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNl
dERPTVN0cmluZ01hcC5jcHAKQEAgLTE5OSw4ICsxOTksNyBAQCB2b2lkIERhdGFzZXRET01TdHJp
bmdNYXA6OmRlbGV0ZUl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEV4Y2VwdGlvbkNvZGUgZHVtbXk7Ci0gICAg
bV9lbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoY29udmVydFByb3BlcnR5TmFtZVRvQXR0cmlidXRl
TmFtZShuYW1lKSwgZHVtbXkpOworICAgIG1fZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKGNvbnZl
cnRQcm9wZXJ0eU5hbWVUb0F0dHJpYnV0ZU5hbWUobmFtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBkOWU1MmUyMzZkNmExOWJhZDE1
N2Q1ZmVmODUwOGQ5NjE5MmFkNDE5Li5lZmE4Yjk1NDFiMDNkMWQwMGVlM2MzYjgyYzYzZTM4YTYx
NWE0ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEzMDIsOSArMTMwMiw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgZWxzZSBpZiAo
IW1fdGl0bGVFbGVtZW50KSB7CiAgICAgICAgIGlmIChIVE1MRWxlbWVudCogaGVhZEVsZW1lbnQg
PSBoZWFkKCkpIHsKICAgICAgICAgICAgIG1fdGl0bGVFbGVtZW50ID0gY3JlYXRlRWxlbWVudCh0
aXRsZVRhZywgZmFsc2UpOwotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
ICAgICAgICBoZWFkRWxlbWVudC0+YXBwZW5kQ2hpbGQobV90aXRsZUVsZW1lbnQsIGVjKTsKLSAg
ICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAgaGVhZEVsZW1lbnQtPmFwcGVuZENo
aWxkKG1fdGl0bGVFbGVtZW50LCBBU1NFUlRfTkVWRVJfVEhST1dOKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMjUyMSw4ICsyNTE5LDcgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVp
dihjb25zdCBTdHJpbmcmIGVxdWl2LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAgICAgfSBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgInNldC1jb29raWUiKSkgewogICAgICAgICAv
LyBGSVhNRTogbWFrZSBzZXRDb29raWUgd29yayBvbiBYTUwgZG9jdW1lbnRzIHRvbzsgZS5nLiBp
biBjYXNlIG9mIDxodG1sOm1ldGEgLi4uLi4+CiAgICAgICAgIGlmIChpc0hUTUxEb2N1bWVudCgp
KSB7Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOyAvLyBFeGNlcHRpb24gKGZvciBzYW5k
Ym94ZWQgZG9jdW1lbnRzKSBpZ25vcmVkLgotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERv
Y3VtZW50Kj4odGhpcyktPnNldENvb2tpZShjb250ZW50LCBlYyk7CisgICAgICAgICAgICB0aGlz
LT5zZXRDb29raWUoY29udGVudCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGVxdWl2LCAiY29udGVudC1sYW5ndWFnZSIpKQogICAgICAgICBzZXRDb250ZW50
TGFuZ3VhZ2UoY29udGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDlmMzAyYWRlNzliOWFl
ZDI5ZmQ0YjM5MzFmNmZmNWZhZDgwYTI3NmYuLjBiN2RmZWNhOWMxZTY1MzdlM2IyODBiMzIzZWQ1
ODdhMTdmOGIyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zNzksOCArMzc5LDggQEAgcHVi
bGljOgogICAgIGJvb2wgeG1sU3RhbmRhbG9uZSgpIGNvbnN0IHsgcmV0dXJuIG1feG1sU3RhbmRh
bG9uZTsgfQogCiAgICAgdm9pZCBzZXRYTUxFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5n
KSB7IG1feG1sRW5jb2RpbmcgPSBlbmNvZGluZzsgfSAvLyByZWFkLW9ubHkgcHJvcGVydHksIG9u
bHkgdG8gYmUgc2V0IGZyb20gWE1MRG9jdW1lbnRQYXJzZXIKLSAgICB2b2lkIHNldFhNTFZlcnNp
b24oY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0WE1MU3RhbmRh
bG9uZShib29sLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRYTUxWZXJzaW9uKGNvbnN0
IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAg
IHZvaWQgc2V0WE1MU3RhbmRhbG9uZShib29sLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhj
ZXB0aW9uQ29kZSgpKTsKIAogICAgIFN0cmluZyBkb2N1bWVudFVSSSgpIGNvbnN0IHsgcmV0dXJu
IG1fZG9jdW1lbnRVUkk7IH0KICAgICB2b2lkIHNldERvY3VtZW50VVJJKGNvbnN0IFN0cmluZyYp
OwpAQCAtMzkzLDcgKzM5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoVmlzaWJpbGl0
eVN0YXRlQ2hhbmdlRXZlbnQoKTsKICNlbmRpZgogCi0gICAgUGFzc1JlZlB0cjxOb2RlPiBhZG9w
dE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNz
UmVmUHRyPE5vZGU+IGFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9u
Q29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAKICAgICBQYXNzUmVmUHRyPEhUTUxD
b2xsZWN0aW9uPiBpbWFnZXMoKTsKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBlbWJl
ZHMoKTsKQEAgLTc5NSw3ICs3OTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVUaXRsZShF
bGVtZW50KiB0aXRsZUVsZW1lbnQpOwogCiAgICAgU3RyaW5nIGNvb2tpZShFeGNlcHRpb25Db2Rl
JikgY29uc3Q7Ci0gICAgdm9pZCBzZXRDb29raWUoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZvaWQgc2V0Q29va2llKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmID0g
SWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogCiAgICAgU3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAK
aW5kZXggYzhmMTE2M2FhZTRjYzAzZmYyMGQyZjE4MmNlMGRjM2QwYjRlYjQ0Mi4uMGFkZDc1ZWRk
NDY5Mzg0ZGY5MjAyOGM4NTg1NjE3NjJjZjZlMDRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTU1NCwxNCArNTU0LDEzIEBAIHZv
aWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzZXRNYXJrZXJzQWN0aXZlKFJhbmdlKiByYW5n
ZSwgYm9vbCBhY3RpdmUpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoIW1fbWFya2Vycy5p
c0VtcHR5KCkpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTm9kZSogc3RhcnRD
b250YWluZXIgPSByYW5nZS0+c3RhcnRDb250YWluZXIoZWMpOwotICAgIE5vZGUqIGVuZENvbnRh
aW5lciA9IHJhbmdlLT5lbmRDb250YWluZXIoZWMpOworICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVy
ID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7CisgICAgTm9kZSogZW5kQ29udGFpbmVyID0gcmFu
Z2UtPmVuZENvbnRhaW5lcigpOwogCiAgICAgTm9kZSogcGFzdExhc3ROb2RlID0gcmFuZ2UtPnBh
c3RMYXN0Tm9kZSgpOwogICAgIGZvciAoTm9kZSogbm9kZSA9IHJhbmdlLT5maXJzdE5vZGUoKTsg
bm9kZSAhPSBwYXN0TGFzdE5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsK
LSAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gbm9kZSA9PSBzdGFydENvbnRhaW5lciA/IHJhbmdl
LT5zdGFydE9mZnNldChlYykgOiAwOwotICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gbm9kZSA9PSBl
bmRDb250YWluZXIgPyByYW5nZS0+ZW5kT2Zmc2V0KGVjKSA6IElOVF9NQVg7CisgICAgICAgIGlu
dCBzdGFydE9mZnNldCA9IG5vZGUgPT0gc3RhcnRDb250YWluZXIgPyByYW5nZS0+c3RhcnRPZmZz
ZXQoKSA6IDA7CisgICAgICAgIGludCBlbmRPZmZzZXQgPSBub2RlID09IGVuZENvbnRhaW5lciA/
IHJhbmdlLT5lbmRPZmZzZXQoKSA6IElOVF9NQVg7CiAgICAgICAgIHNldE1hcmtlcnNBY3RpdmUo
bm9kZSwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgYWN0aXZlKTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggNmNjMDJlMjBjMjk0OTlmMjRjOWE3ODZjN2QxNjRjZjRhYWRiYzIy
My4uNjE3ZjJjYTg1MTgyMjhiMjM3Mjk5MThjYmY1ODA5OGI1MjI3Y2YwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtMTUxLDkgKzE1MSw2IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gRWxlbWVudDo6ZGVwcmVjYXRlZENyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBTCiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICAvLyBFeGNlcHRpb25zIGFyZSBpZ25v
cmVkIGJlY2F1c2Ugbm9uZSBvdWdodCB0byBoYXBwZW4gaGVyZS4KLSAgICBFeGNlcHRpb25Db2Rl
IGlnbm9yZWRFeGNlcHRpb25Db2RlOwotCiAgICAgLy8gV2UgbmVlZCB0byBwb3AgPGh0bWw+IGFu
ZCA8Ym9keT4gZWxlbWVudHMgYW5kIHJlbW92ZSA8aGVhZD4gdG8KICAgICAvLyBhY2NvbW1vZGF0
ZSBmb2xrcyBwYXNzaW5nIGNvbXBsZXRlIEhUTUwgZG9jdW1lbnRzIHRvIG1ha2UgdGhlCiAgICAg
Ly8gY2hpbGQgb2YgYW4gZWxlbWVudC4KQEAgLTE2OSwxMyArMTY2LDEwIEBAIFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gRWxlbWVudDo6ZGVwcmVjYXRlZENyZWF0ZUNvbnRleHR1YWxGcmFn
bWVudChjb25zdCBTCiAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbmV4dENoaWxkOwogICAgICAg
ICAgICAgZm9yIChSZWZQdHI8Tm9kZT4gY2hpbGQgPSBmaXJzdENoaWxkOyBjaGlsZDsgY2hpbGQg
PSBuZXh0Q2hpbGQpIHsKICAgICAgICAgICAgICAgICBuZXh0Q2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKTsKLSAgICAgICAgICAgICAgICBlbGVtZW50LT5yZW1vdmVDaGlsZChjaGlsZC5nZXQo
KSwgaWdub3JlZEV4Y2VwdGlvbkNvZGUpOwotICAgICAgICAgICAgICAgIEFTU0VSVCghaWdub3Jl
ZEV4Y2VwdGlvbkNvZGUpOwotICAgICAgICAgICAgICAgIGZyYWdtZW50LT5pbnNlcnRCZWZvcmUo
Y2hpbGQsIGVsZW1lbnQsIGlnbm9yZWRFeGNlcHRpb25Db2RlKTsKLSAgICAgICAgICAgICAgICBB
U1NFUlQoIWlnbm9yZWRFeGNlcHRpb25Db2RlKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LT5y
ZW1vdmVDaGlsZChjaGlsZC5nZXQoKSwgQVNTRVJUX05FVkVSX1RIUk9XTik7CisgICAgICAgICAg
ICAgICAgZnJhZ21lbnQtPmluc2VydEJlZm9yZShjaGlsZCwgZWxlbWVudCwgQVNTRVJUX05FVkVS
X1RIUk9XTik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmcmFnbWVudC0+cmVtb3ZlQ2hp
bGQoZWxlbWVudCwgaWdub3JlZEV4Y2VwdGlvbkNvZGUpOwotICAgICAgICAgICAgQVNTRVJUKCFp
Z25vcmVkRXhjZXB0aW9uQ29kZSk7CisgICAgICAgICAgICBmcmFnbWVudC0+cmVtb3ZlQ2hpbGQo
ZWxlbWVudCwgQVNTRVJUX05FVkVSX1RIUk9XTik7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0
dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKQEAgLTIyOCwyNiArMjIyLDE3IEBAIHZvaWQgRWxlbWVu
dDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgIH0KIH0KIAotdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBFeGNl
cHRpb25Db2RlIGVjOwotICAgIHNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZWMpOwotfQotICAg
IAogdm9pZCBFbGVtZW50OjpzZXRDU3RyaW5nQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IGNoYXIqIGNTdHJpbmdWYWx1ZSkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVj
OwotICAgIHNldEF0dHJpYnV0ZShuYW1lLCBBdG9taWNTdHJpbmcoY1N0cmluZ1ZhbHVlKSwgZWMp
OworICAgIHNldEF0dHJpYnV0ZShuYW1lLCBBdG9taWNTdHJpbmcoY1N0cmluZ1ZhbHVlKSk7CiB9
CiAKIHZvaWQgRWxlbWVudDo6c2V0Qm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBib29sIGIpCiB7CiAgICAgaWYgKGIpCiAgICAgICAgIHNldEF0dHJpYnV0ZShuYW1l
LCBlbXB0eUF0b20pOwotICAgIGVsc2UgewotICAgICAgICBFeGNlcHRpb25Db2RlIGV4OwotICAg
ICAgICByZW1vdmVBdHRyaWJ1dGUobmFtZSwgZXgpOwotICAgIH0KKyAgICBlbHNlCisgICAgICAg
IHJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKIH0KIAogTm9kZTo6Tm9kZVR5cGUgRWxlbWVudDo6bm9k
ZVR5cGUoKSBjb25zdApAQCAtMTIzNSw5ICsxMjIwLDcgQEAgU2hhZG93Um9vdCogRWxlbWVudDo6
ZW5zdXJlU2hhZG93Um9vdCgpCiAgICAgaWYgKFNoYWRvd1Jvb3QqIGV4aXN0aW5nUm9vdCA9IHNo
YWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nUm9vdDsKIAotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIHNldFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3Vt
ZW50KCkpLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgc2V0U2hhZG93Um9vdChTaGFkb3dS
b290OjpjcmVhdGUoZG9jdW1lbnQoKSkpOwogICAgIHJldHVybiBzaGFkb3dSb290KCk7CiB9CiAK
QEAgLTE0MTksOSArMTQwMiw4IEBAIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hBdHRyUmVtb3ZhbEV2
ZW50KEF0dHJpYnV0ZSopCiAjaWYgMAogICAgIGlmICghZG9jdW1lbnQoKS0+aGFzTGlzdGVuZXJU
eXBlKERvY3VtZW50OjpET01BVFRSTU9ESUZJRURfTElTVEVORVIpKQogICAgICAgICByZXR1cm47
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgZGlzcGF0Y2hTY29wZWRFdmVudChNdXRh
dGlvbkV2ZW50OjpjcmVhdGUoRE9NQXR0ck1vZGlmaWVkRXZlbnQsIHRydWUsIGF0dHIsIGF0dHIt
PnZhbHVlKCksCi0gICAgICAgIGF0dHItPnZhbHVlKCksIGRvY3VtZW50KCktPmF0dHJOYW1lKGF0
dHItPmlkKCkpLCBNdXRhdGlvbkV2ZW50OjpSRU1PVkFMKSwgZWMpOworICAgICAgICBhdHRyLT52
YWx1ZSgpLCBkb2N1bWVudCgpLT5hdHRyTmFtZShhdHRyLT5pZCgpKSwgTXV0YXRpb25FdmVudDo6
UkVNT1ZBTCksIElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKICNlbmRpZgogfQogCkBAIC0xNDMy
LDkgKzE0MTQsOCBAQCB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoQXR0ckFkZGl0aW9uRXZlbnQoQXR0
cmlidXRlKikKICNpZiAwCiAgICAgaWYgKCFkb2N1bWVudCgpLT5oYXNMaXN0ZW5lclR5cGUoRG9j
dW1lbnQ6OkRPTUFUVFJNT0RJRklFRF9MSVNURU5FUikpCiAgICAgICAgIHJldHVybjsKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZl
bnQ6OmNyZWF0ZShET01BdHRyTW9kaWZpZWRFdmVudCwgdHJ1ZSwgYXR0ciwgYXR0ci0+dmFsdWUo
KSwKLSAgICAgICAgYXR0ci0+dmFsdWUoKSwgZG9jdW1lbnQoKS0+YXR0ck5hbWUoYXR0ci0+aWQo
KSksIE11dGF0aW9uRXZlbnQ6OkFERElUSU9OKSwgZWMpOworICAgICAgICBhdHRyLT52YWx1ZSgp
LCBkb2N1bWVudCgpLT5hdHRyTmFtZShhdHRyLT5pZCgpKSwgTXV0YXRpb25FdmVudDo6QURESVRJ
T04pLCBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAjZW5kaWYKIH0KIApAQCAtMTkyOCw4ICsx
OTA5LDcgQEAgaW50IEVsZW1lbnQ6OmdldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CiB2b2lkIEVsZW1lbnQ6OnNldEludGVncmFsQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGludCB2YWx1ZSkKIHsK
ICAgICAvLyBGSVhNRTogTmVlZCBhbiBBdG9taWNTdHJpbmcgdmVyc2lvbiBvZiBTdHJpbmc6Om51
bWJlci4KLSAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGVO
YW1lLCBTdHJpbmc6Om51bWJlcih2YWx1ZSksIGVjKTsKKyAgICBzZXRBdHRyaWJ1dGUoYXR0cmli
dXRlTmFtZSwgU3RyaW5nOjpudW1iZXIodmFsdWUpKTsKIH0KIAogdW5zaWduZWQgRWxlbWVudDo6
Z2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKSBjb25zdApAQCAtMTk0MCw4ICsxOTIwLDcgQEAgdW5zaWduZWQgRWxlbWVudDo6Z2V0
VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW0KIHZvaWQgRWxlbWVudDo6c2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCB1bnNpZ25lZCB2YWx1ZSkKIHsKICAgICAvLyBGSVhN
RTogTmVlZCBhbiBBdG9taWNTdHJpbmcgdmVyc2lvbiBvZiBTdHJpbmc6Om51bWJlci4KLSAgICBF
eGNlcHRpb25Db2RlIGVjOwotICAgIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBTdHJpbmc6
Om51bWJlcih2YWx1ZSksIGVjKTsKKyAgICBzZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgU3Ry
aW5nOjpudW1iZXIodmFsdWUpKTsKIH0KIAogI2lmIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAppbmRleCA5NDQzMmI0NWFkZmMzNGU0YTk2YmQ2OTE2MzQ3NzcxOTAwNWViZGZhLi43ZGJlNWQ0
ZGU4NmFlNzlkMWE2YjkyNjJhZmJjY2M2NTEyYjIzN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAg
LTExMSw4ICsxMTEsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIHZvaWQgc2V0QXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4
Y2VwdGlvbkNvZGUoKSk7CisgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogCiAgICAg
Ly8gVHlwZWQgZ2V0dGVycyBhbmQgc2V0dGVycyBmb3IgbGFuZ3VhZ2UgYmluZGluZ3MuCiAgICAg
aW50IGdldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUpIGNvbnN0OwpAQCAtMTMzLDggKzEzMyw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OwogICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgZ2V0QXR0cmlidXRlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkks
IGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lKSBjb25zdDsKIAotICAgIHZvaWQgc2V0QXR0cmlidXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0QXR0cmlidXRlTlMoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYsIEZyYWdtZW50U2NyaXB0aW5nUGVy
bWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CisgICAgdm9pZCBzZXRBdHRyaWJ1
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBF
eGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKKyAgICB2b2lkIHNldEF0
dHJpYnV0ZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNT
dHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlv
bkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCksIEZyYWdtZW50U2NyaXB0aW5nUGVybWlz
c2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CiAKICAgICBib29sIGlzSWRBdHRyaWJ1
dGVOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGdldElkQXR0cmlidXRlKCkgY29uc3Q7CkBAIC0xNzUsMTQgKzE3NSwxNCBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJucyB0aGUgYWJzb2x1dGUgYm91bmRpbmcgYm94IHRyYW5zbGF0ZWQgaW50
byBzY3JlZW4gY29vcmRpbmF0ZXM6CiAgICAgSW50UmVjdCBzY3JlZW5SZWN0KCkgY29uc3Q7CiAK
LSAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNl
VVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgPSBJZ25v
cmluZ0V4Y2VwdGlvbkNvZGUoKSk7CisgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBT
dHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNv
ZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogCiAgICAgUGFzc1JlZlB0cjxBdHRyPiBn
ZXRBdHRyaWJ1dGVOb2RlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgUGFzc1JlZlB0cjxBdHRy
PiBnZXRBdHRyaWJ1dGVOb2RlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0
cmluZyYgbG9jYWxOYW1lKTsKLSAgICBQYXNzUmVmUHRyPEF0dHI+IHNldEF0dHJpYnV0ZU5vZGUo
QXR0ciosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPEF0dHI+IHNldEF0dHJpYnV0
ZU5vZGVOUyhBdHRyKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8QXR0cj4gcmVt
b3ZlQXR0cmlidXRlTm9kZShBdHRyKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8
QXR0cj4gc2V0QXR0cmlidXRlTm9kZShBdHRyKiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4
Y2VwdGlvbkNvZGUoKSk7CisgICAgUGFzc1JlZlB0cjxBdHRyPiBzZXRBdHRyaWJ1dGVOb2RlTlMo
QXR0ciosIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAgIFBh
c3NSZWZQdHI8QXR0cj4gcmVtb3ZlQXR0cmlidXRlTm9kZShBdHRyKiwgRXhjZXB0aW9uQ29kZSYg
PSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAgICAgCiAgICAgdmlydHVhbCBDU1NTdHlsZURl
Y2xhcmF0aW9uKiBzdHlsZSgpOwogCkBAIC0yMDksNyArMjA5LDYgQEAgcHVibGljOgogICAgIFN0
cmluZyBub2RlTmFtZVByZXNlcnZpbmdDYXNlKCkgY29uc3Q7CiAKICAgICAvLyBjb252ZW5pZW5j
ZSBtZXRob2RzIHdoaWNoIGlnbm9yZSBleGNlcHRpb25zCi0gICAgdm9pZCBzZXRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwogICAgIHZv
aWQgc2V0Qm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBib29sKTsK
ICAgICAvLyBQbGVhc2UgZG9uJ3QgdXNlIHNldENTdHJpbmdBdHRyaWJ1dGUgaW4gcGVyZm9ybWFu
Y2Utc2Vuc2l0aXZlIGNvZGU7CiAgICAgLy8gdXNlIGEgc3RhdGljIEF0b21pY1N0cmluZyB2YWx1
ZSBpbnN0ZWFkIHRvIGF2b2lkIHRoZSBjb252ZXJzaW9uIG92ZXJoZWFkLgpAQCAtMjMxLDEyICsy
MzAsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWNhbGNTdHlsZShTdHlsZUNoYW5n
ZSA9IE5vQ2hhbmdlKTsKIAogICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QoKSBjb25zdDsKLSAg
ICB2b2lkIHNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZvaWQgc2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+LCBFeGNl
cHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKICAgICBTaGFkb3dSb290KiBl
bnN1cmVTaGFkb3dSb290KCk7CiAgICAgdm9pZCByZW1vdmVTaGFkb3dSb290KCk7CiAKICAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKLSAgICB2
b2lkIHNldFNoYWRvd1BzZXVkb0lkKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIHNldFNoYWRvd1BzZXVkb0lkKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogCiAgICAgUmVuZGVyU3R5bGUq
IGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBOT1BTRVVETyk7CiAKQEAgLTI5NSw3ICsyOTQsNyBA
QCBwdWJsaWM6CiAgICAgRWxlbWVudCogbmV4dEVsZW1lbnRTaWJsaW5nKCkgY29uc3Q7CiAgICAg
dW5zaWduZWQgY2hpbGRFbGVtZW50Q291bnQoKSBjb25zdDsKIAotICAgIGJvb2wgd2Via2l0TWF0
Y2hlc1NlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgYm9vbCB3ZWJraXRNYXRjaGVzU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4
Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogCiAgICAgRE9NVG9rZW5M
aXN0KiBjbGFzc0xpc3QoKTsKICAgICBET01Ub2tlbkxpc3QqIG9wdGlvbmFsQ2xhc3NMaXN0KCkg
Y29uc3Q7CkBAIC0zOTAsNyArMzg5LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2b2lk
IHNjcm9sbEJ5VW5pdHMoaW50IHVuaXRzLCBTY3JvbGxHcmFudWxhcml0eSk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlv
bkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogICAgIHZpcnR1YWwgTm9kZVR5cGUg
bm9kZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2Rl
VHlwZSkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZ25vcmluZ0V4
Y2VwdGlvbkNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZ25vcmluZ0V4Y2VwdGlvbkNvZGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jMTU3YWY4NTYzNzA2MTMwNDVmZWU0NWQ4OThhZTg3YzY0YTc5ZDNmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lnbm9yaW5nRXhjZXB0aW9uQ29k
ZS5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBJZ25vcmluZ0V4Y2VwdGlvbkNvZGVfaAorI2RlZmlu
ZSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGVfaAorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworCitj
bGFzcyBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUgeworcHVibGljOgorICAgIElnbm9yaW5nRXhjZXB0
aW9uQ29kZSgpOworICAgIG9wZXJhdG9yIEV4Y2VwdGlvbkNvZGUmICgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgbXV0YWJsZSBFeGNlcHRpb25Db2RlIG1fY29k
ZTsKK307CisKK2lubGluZSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGU6Oklnbm9yaW5nRXhjZXB0aW9u
Q29kZSgpCisjaWYgIWRlZmluZWQoQVNTRVJUX0RJU0FCTEVEKQorICAgIDogbV9jb2RlKDApCisj
ZW5kaWYKK3sKK30KKworY2xhc3MgTmV2ZXJUaHJvd25XaXRoTG9jYXRpb24gOiBwdWJsaWMgSWdu
b3JpbmdFeGNlcHRpb25Db2RlIHsKK3B1YmxpYzoKKyAgICBOZXZlclRocm93bldpdGhMb2NhdGlv
bihjb25zdCBjaGFyKiwgc2l6ZV90LCBjb25zdCBjaGFyKik7CisgICAgfk5ldmVyVGhyb3duV2l0
aExvY2F0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgY29uc3QgY2hhciogbV9maWxlOworICAgIHNp
emVfdCBtX2xpbmU7CisgICAgY29uc3QgY2hhciogbV9mdW5jdGlvbjsKK307CisKK2lubGluZSBO
ZXZlclRocm93bldpdGhMb2NhdGlvbjo6TmV2ZXJUaHJvd25XaXRoTG9jYXRpb24oY29uc3QgY2hh
ciogZmlsZSwgc2l6ZV90IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uKQorICAgIDogbV9maWxl
KGZpbGUpLCBtX2xpbmUobGluZSksIG1fZnVuY3Rpb24oZnVuY3Rpb24pCit7Cit9CisKK2lubGlu
ZSBOZXZlclRocm93bldpdGhMb2NhdGlvbjo6fk5ldmVyVGhyb3duV2l0aExvY2F0aW9uKCkKK3sK
KyAgICBBU1NFUlRfQVQoIW1fY29kZSwgbV9maWxlLCBtX2xpbmUsIG1fZnVuY3Rpb24pOworfQor
Cit9CisKKyNpZiBBU1NFUlRfRElTQUJMRUQKKyNkZWZpbmUgQVNTRVJUX05FVkVSX1RIUk9XTiBX
ZWJDb3JlOjpJZ25vcmluZ0V4Y2VwdGlvbigpCisjZWxzZQorI2RlZmluZSBBU1NFUlRfTkVWRVJf
VEhST1dOIFdlYkNvcmU6Ok5ldmVyVGhyb3duV2l0aExvY2F0aW9uKF9fRklMRV9fLCBfX0xJTkVf
XywgV1RGX1BSRVRUWV9GVU5DVElPTikKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnQuY3BwCmluZGV4IDQ3MmI5YjFlZmEzNWFlN2JhNzMwZmQzMDI1M2NhZGYzY2E1NzJl
MjYuLmVhMzdlODY4YjEyZjVjOWJlNzZlZDdlOTE5MTgzYTZmZmE0M2I1ZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VQb3J0LmNwcApAQCAtMTgyLDkgKzE4Miw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6
OmRpc3BhdGNoTWVzc2FnZXMoKQogICAgICAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9y
dHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBldmVudERhdGEtPmNoYW5uZWxzKCkpOwogICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKHBvcnRzLnJlbGVhc2UoKSwgZXZlbnREYXRhLT5tZXNzYWdlKCkp
OwogCi0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBkaXNwYXRjaEV2ZW50
KGV2dC5yZWxlYXNlKCksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIGRpc3Bh
dGNoRXZlbnQoZXZ0LnJlbGVhc2UoKSwgQVNTRVJUX05FVkVSX1RIUk9XTik7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKaW5kZXggNzExNzQxOTU0NzM4YzRkZWQyNWRhZGM0OTE3NjliNWI4ODYx
NTAzNC4uMjMwNTA5ZWJkMDljMGY1YmJjY2JlYzE1OGNjNjg0YjM2OTNlOWRhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcApAQCAtNzAzLDggKzcwMyw3IEBAIHZvaWQgTm9kZTo6bm9ybWFsaXplKCkKICAgICAg
ICAgaWYgKCF0ZXh0LT5sZW5ndGgoKSkgewogICAgICAgICAgICAgLy8gQ2FyZSBtdXN0IGJlIHRh
a2VuIHRvIGdldCB0aGUgbmV4dCBub2RlIGJlZm9yZSByZW1vdmluZyB0aGUgY3VycmVudCBub2Rl
LgogICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGVQb3N0T3JkZXIoKTsK
LSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgICAgICB0ZXh0LT5yZW1vdmUo
ZWMpOworICAgICAgICAgICAgdGV4dC0+cmVtb3ZlKCk7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogCkBAIC03MTYsMTcgKzcxNSwxNSBAQCB2b2lkIE5vZGU6Om5vcm1hbGl6ZSgp
CiAKICAgICAgICAgICAgIC8vIFJlbW92ZSBlbXB0eSB0ZXh0IG5vZGVzLgogICAgICAgICAgICAg
aWYgKCFuZXh0VGV4dC0+bGVuZ3RoKCkpIHsKLSAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjOwotICAgICAgICAgICAgICAgIG5leHRUZXh0LT5yZW1vdmUoZWMpOworICAgICAgICAgICAg
ICAgIG5leHRUZXh0LT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgLy8gQm90aCBub24tZW1wdHkgdGV4dCBub2Rlcy4gTWVy
Z2UgdGhlbS4KICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHRleHQtPmxlbmd0aCgpOwot
ICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgICAgIHRleHQtPmFwcGVuZERh
dGEobmV4dFRleHQtPmRhdGEoKSwgZWMpOworICAgICAgICAgICAgdGV4dC0+YXBwZW5kRGF0YShu
ZXh0VGV4dC0+ZGF0YSgpKTsKICAgICAgICAgICAgIGRvY3VtZW50KCktPnRleHROb2Rlc01lcmdl
ZChuZXh0VGV4dC5nZXQoKSwgb2Zmc2V0KTsKLSAgICAgICAgICAgIG5leHRUZXh0LT5yZW1vdmUo
ZWMpOworICAgICAgICAgICAgbmV4dFRleHQtPnJlbW92ZSgpOwogICAgICAgICB9CiAKICAgICAg
ICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGVQb3N0T3JkZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmlu
ZGV4IDcyNTM3Y2I4NjY5ZmQ2Njg3Y2Q4YmQ4M2JlMmU1Y2I5ZTQ5N2YwMWIuLmZkMTc1YTcxOWNi
NDkzNDAwOWI3NjIxZjE4NDViZmQ1ZWY4YzQ3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjYsNiArMjYs
NyBAQAogI2RlZmluZSBOb2RlX2gKIAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVk
ZSAiSWdub3JpbmdFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKICNpbmNs
dWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5o
IgpAQCAtMTYwLDE4ICsxNjEsMTggQEAgcHVibGljOgogICAgIC8vIFRoZXNlIHNob3VsZCBhbGwg
YWN0dWFsbHkgcmV0dXJuIGEgbm9kZSwgYnV0IHRoaXMgaXMgb25seSBpbXBvcnRhbnQgZm9yIGxh
bmd1YWdlIGJpbmRpbmdzLAogICAgIC8vIHdoaWNoIHdpbGwgYWxyZWFkeSBrbm93IGFuZCBob2xk
IGEgcmVmIG9uIHRoZSByaWdodCBub2RlIHRvIHJldHVybi4gUmV0dXJuaW5nIGJvb2wgYWxsb3dz
CiAgICAgLy8gdGhlc2UgbWV0aG9kcyB0byBiZSBtb3JlIGVmZmljaWVudCBzaW5jZSB0aGV5IGRv
bid0IG5lZWQgdG8gcmV0dXJuIGEgcmVmCi0gICAgYm9vbCBpbnNlcnRCZWZvcmUoUGFzc1JlZlB0
cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmLCBib29sIHNo
b3VsZExhenlBdHRhY2ggPSBmYWxzZSk7Ci0gICAgYm9vbCByZXBsYWNlQ2hpbGQoUGFzc1JlZlB0
cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmLCBib29sIHNo
b3VsZExhenlBdHRhY2ggPSBmYWxzZSk7Ci0gICAgYm9vbCByZW1vdmVDaGlsZChOb2RlKiBjaGls
ZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIGJvb2wgYXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2Rl
PiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYsIGJvb2wgc2hvdWxkTGF6eUF0dGFjaCA9IGZhbHNl
KTsKKyAgICBib29sIGluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2Rl
KiByZWZDaGlsZCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSwgYm9v
bCBzaG91bGRMYXp5QXR0YWNoID0gZmFsc2UpOworICAgIGJvb2wgcmVwbGFjZUNoaWxkKFBhc3NS
ZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJiA9IEln
bm9yaW5nRXhjZXB0aW9uQ29kZSgpLCBib29sIHNob3VsZExhenlBdHRhY2ggPSBmYWxzZSk7Cisg
ICAgYm9vbCByZW1vdmVDaGlsZChOb2RlKiBjaGlsZCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmlu
Z0V4Y2VwdGlvbkNvZGUoKSk7CisgICAgYm9vbCBhcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+
IG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpLCBib29s
IHNob3VsZExhenlBdHRhY2ggPSBmYWxzZSk7CiAKLSAgICB2b2lkIHJlbW92ZShFeGNlcHRpb25D
b2RlJik7CisgICAgdm9pZCByZW1vdmUoRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlv
bkNvZGUoKSk7CiAgICAgYm9vbCBoYXNDaGlsZE5vZGVzKCkgY29uc3QgeyByZXR1cm4gZmlyc3RD
aGlsZCgpOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRl
ZXApID0gMDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIHZpcnR1YWxMb2NhbE5hbWUoKTsgfQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNw
YWNlVVJJKCkgY29uc3QgeyByZXR1cm4gdmlydHVhbE5hbWVzcGFjZVVSSSgpOyB9CiAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBwcmVmaXgoKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsUHJlZml4KCk7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogICAgIHZvaWQg
bm9ybWFsaXplKCk7CiAKICAgICBib29sIGlzU2FtZU5vZGUoTm9kZSogb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIHRoaXMgPT0gb3RoZXI7IH0KQEAgLTE4Miw3ICsxODMsNyBAQCBwdWJsaWM6CiAgICAg
U3RyaW5nIGxvb2t1cE5hbWVzcGFjZVByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFj
ZVVSSSwgY29uc3QgRWxlbWVudCogb3JpZ2luYWxFbGVtZW50KSBjb25zdDsKICAgICAKICAgICBT
dHJpbmcgdGV4dENvbnRlbnQoYm9vbCBjb252ZXJ0QlJzVG9OZXdsaW5lcyA9IGZhbHNlKSBjb25z
dDsKLSAgICB2b2lkIHNldFRleHRDb250ZW50KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIHNldFRleHRDb250ZW50KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
ID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogICAgIAogICAgIE5vZGUqIGxhc3REZXNjZW5k
YW50KCkgY29uc3Q7CiAgICAgTm9kZSogZmlyc3REZXNjZW5kYW50KCkgY29uc3Q7CkBAIC00MDYs
MTYgKzQwNywxNiBAQCBwdWJsaWM6CiAgICAgTm9kZSogdHJhdmVyc2VQcmV2aW91c05vZGVQb3N0
T3JkZXIoY29uc3QgTm9kZSogc3RheVdpdGhpbiA9IDApIGNvbnN0OwogICAgIE5vZGUqIHRyYXZl
cnNlUHJldmlvdXNTaWJsaW5nUG9zdE9yZGVyKGNvbnN0IE5vZGUqIHN0YXlXaXRoaW4gPSAwKSBj
b25zdDsKIAotICAgIHZvaWQgY2hlY2tTZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVm
aXgsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJlZml4LCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgp
KTsKICAgICBib29sIGlzRGVzY2VuZGFudE9mKGNvbnN0IE5vZGUqKSBjb25zdDsKICAgICBib29s
IGNvbnRhaW5zKGNvbnN0IE5vZGUqKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zSW5jbHVkaW5n
U2hhZG93RE9NKE5vZGUqKTsKIAogICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZG8gc3Ry
aWN0IGVycm9yLWNoZWNraW5nIHdoZW4gYWRkaW5nIGNoaWxkcmVuIHZpYQogICAgIC8vIHRoZSBw
dWJsaWMgRE9NIEFQSSAoZS5nLiwgYXBwZW5kQ2hpbGQoKSkuCi0gICAgdm9pZCBjaGVja0FkZENo
aWxkKE5vZGUqIG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJik7IC8vIEVycm9yLWNoZWNraW5nIHdo
ZW4gYWRkaW5nIHZpYSB0aGUgRE9NIEFQSQorICAgIHZvaWQgY2hlY2tBZGRDaGlsZChOb2RlKiBu
ZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7IC8vIEVy
cm9yLWNoZWNraW5nIHdoZW4gYWRkaW5nIHZpYSB0aGUgRE9NIEFQSQogCi0gICAgdm9pZCBjaGVj
a1JlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB2b2lkIGNoZWNrUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBv
bGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAgICAg
dmlydHVhbCBib29sIGNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hp
bGQpOwogICAgIAogICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgcmFuZ2Ugb2Zmc2V0
cyB1c2UgY2hhcmFjdGVycyBvciBub2RlIGluZGljZXMuCkBAIC01MjQsOCArNTI1LDggQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlOYW1lKGNvbnN0IFN0
cmluZyYgZWxlbWVudE5hbWUpOwogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGdldEVsZW1lbnRz
QnlDbGFzc05hbWUoY29uc3QgU3RyaW5nJiBjbGFzc05hbWVzKTsKIAotICAgIFBhc3NSZWZQdHI8
RWxlbWVudD4gcXVlcnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9u
Q29kZSYpOwotICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHF1ZXJ5U2VsZWN0b3JBbGwoY29uc3Qg
U3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPEVsZW1l
bnQ+IHF1ZXJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvZGUm
ID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHF1
ZXJ5U2VsZWN0b3JBbGwoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvZGUmID0g
SWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogCiAgICAgdW5zaWduZWQgc2hvcnQgY29tcGFyZURv
Y3VtZW50UG9zaXRpb24oTm9kZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCBmN2YwYzdhMTEy
OGUxOTkxZDFmMjA2ZWE5NDQyN2M2YmE2ZmYyMGFjLi5iNmQ4M2VjNDI2MTRlNDU5MDA2YzAyZWUx
YjE0NWQxNTZjMTE3NjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTg4LDExICs4OCw4IEBAIGlu
bGluZSBSYW5nZTo6UmFuZ2UoUGFzc1JlZlB0cjxEb2N1bWVudD4gb3duZXJEb2N1bWVudCwgUGFz
c1JlZlB0cjxOb2RlPiBzdGFydENvCiAKICAgICAvLyBTaW1wbHkgc2V0dGluZyB0aGUgY29udGFp
bmVycyBhbmQgb2Zmc2V0cyBkaXJlY3RseSB3b3VsZCBub3QgZG8gYW55IG9mIHRoZSBjaGVja2lu
ZwogICAgIC8vIHRoYXQgc2V0U3RhcnQgYW5kIHNldEVuZCBkbywgc28gd2UgY2FsbCB0aG9zZSBm
dW5jdGlvbnMuCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgc2V0U3RhcnQoc3RhcnRD
b250YWluZXIsIHN0YXJ0T2Zmc2V0LCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7Ci0gICAgc2V0RW5k
KGVuZENvbnRhaW5lciwgZW5kT2Zmc2V0LCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgc2V0
U3RhcnQoc3RhcnRDb250YWluZXIsIHN0YXJ0T2Zmc2V0LCBBU1NFUlRfTkVWRVJfVEhST1dOKTsK
KyAgICBzZXRFbmQoZW5kQ29udGFpbmVyLCBlbmRPZmZzZXQsIEFTU0VSVF9ORVZFUl9USFJPV04p
OwogfQogCiBQYXNzUmVmUHRyPFJhbmdlPiBSYW5nZTo6Y3JlYXRlKFBhc3NSZWZQdHI8RG9jdW1l
bnQ+IG93bmVyRG9jdW1lbnQsIFBhc3NSZWZQdHI8Tm9kZT4gc3RhcnRDb250YWluZXIsIGludCBz
dGFydE9mZnNldCwgUGFzc1JlZlB0cjxOb2RlPiBlbmRDb250YWluZXIsIGludCBlbmRPZmZzZXQp
CkBAIC0xNTkwLDEwICsxNTg3LDkgQEAgUG9zaXRpb24gUmFuZ2U6OmVkaXRpbmdTdGFydFBvc2l0
aW9uKCkgY29uc3QKICAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gUG9zaXRpb24oKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIC8vIGlm
IHRoZSBzZWxlY3Rpb24gaXMgYSBjYXJldCwganVzdCByZXR1cm4gdGhlIHBvc2l0aW9uLCBzaW5j
ZSB0aGUgc3R5bGUKICAgICAvLyBiZWhpbmQgdXMgaXMgcmVsZXZhbnQKLSAgICBpZiAoY29sbGFw
c2VkKGVjKSkKKyAgICBpZiAoY29sbGFwc2VkKCkpCiAgICAgICAgIHJldHVybiB2aXNpYmxlUG9z
aXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKIAogICAgIC8vIGlmIHRoZSBzZWxlY3Rpb24gc3RhcnRz
IGp1c3QgYmVmb3JlIGEgcGFyYWdyYXBoIGJyZWFrLCBza2lwIG92ZXIgaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgK
aW5kZXggYWI4YzU1NTkyZGM5MmQwMDIxYjdiZjliMGVmODZiNjNkZjA5MTBmNi4uNTljYjVlYmFl
MDMyOWNkMjdjMjI5ZTIwMDBiODRhZmRhNDFiNWViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1JhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKQEAgLTYxLDQ0
ICs2MSw0NCBAQCBwdWJsaWM6CiAgICAgaW50IHN0YXJ0T2Zmc2V0KEV4Y2VwdGlvbkNvZGUmKSBj
b25zdDsKICAgICBOb2RlKiBlbmRDb250YWluZXIoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAg
IGludCBlbmRPZmZzZXQoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgIGJvb2wgY29sbGFwc2Vk
KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBib29sIGNvbGxhcHNlZChFeGNlcHRpb25Db2Rl
JiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKSBjb25zdDsKIAotICAgIE5vZGUqIGNvbW1vbkFu
Y2VzdG9yQ29udGFpbmVyKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBOb2RlKiBjb21tb25B
bmNlc3RvckNvbnRhaW5lcihFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgp
KSBjb25zdDsKICAgICBzdGF0aWMgTm9kZSogY29tbW9uQW5jZXN0b3JDb250YWluZXIoTm9kZSog
Y29udGFpbmVyQSwgTm9kZSogY29udGFpbmVyQik7Ci0gICAgdm9pZCBzZXRTdGFydChQYXNzUmVm
UHRyPE5vZGU+IGNvbnRhaW5lciwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZv
aWQgc2V0RW5kKFBhc3NSZWZQdHI8Tm9kZT4gY29udGFpbmVyLCBpbnQgb2Zmc2V0LCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgdm9pZCBjb2xsYXBzZShib29sIHRvU3RhcnQsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICBib29sIGlzUG9pbnRJblJhbmdlKE5vZGUqIHJlZk5vZGUsIGludCBvZmZzZXQsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICBzaG9ydCBjb21wYXJlUG9pbnQoTm9kZSogcmVmTm9kZSwgaW50
IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIHZvaWQgc2V0U3RhcnQoUGFzc1Jl
ZlB0cjxOb2RlPiBjb250YWluZXIsIGludCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3Jp
bmdFeGNlcHRpb25Db2RlKCkpOworICAgIHZvaWQgc2V0RW5kKFBhc3NSZWZQdHI8Tm9kZT4gY29u
dGFpbmVyLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29k
ZSgpKTsKKyAgICB2b2lkIGNvbGxhcHNlKGJvb2wgdG9TdGFydCwgRXhjZXB0aW9uQ29kZSYgPSBJ
Z25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CisgICAgYm9vbCBpc1BvaW50SW5SYW5nZShOb2RlKiBy
ZWZOb2RlLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29k
ZSgpKTsKKyAgICBzaG9ydCBjb21wYXJlUG9pbnQoTm9kZSogcmVmTm9kZSwgaW50IG9mZnNldCwg
RXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSkgY29uc3Q7CiAgICAgZW51
bSBDb21wYXJlUmVzdWx0cyB7IE5PREVfQkVGT1JFLCBOT0RFX0FGVEVSLCBOT0RFX0JFRk9SRV9B
TkRfQUZURVIsIE5PREVfSU5TSURFIH07Ci0gICAgQ29tcGFyZVJlc3VsdHMgY29tcGFyZU5vZGUo
Tm9kZSogcmVmTm9kZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIENvbXBhcmVSZXN1bHRz
IGNvbXBhcmVOb2RlKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNl
cHRpb25Db2RlKCkpIGNvbnN0OwogICAgIGVudW0gQ29tcGFyZUhvdyB7IFNUQVJUX1RPX1NUQVJU
LCBTVEFSVF9UT19FTkQsIEVORF9UT19FTkQsIEVORF9UT19TVEFSVCB9OwotICAgIHNob3J0IGNv
bXBhcmVCb3VuZGFyeVBvaW50cyhDb21wYXJlSG93LCBjb25zdCBSYW5nZSogc291cmNlUmFuZ2Us
IEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBzdGF0aWMgc2hvcnQgY29tcGFyZUJvdW5kYXJ5
UG9pbnRzKE5vZGUqIGNvbnRhaW5lckEsIGludCBvZmZzZXRBLCBOb2RlKiBjb250YWluZXJCLCBp
bnQgb2Zmc2V0QiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHN0YXRpYyBzaG9ydCBjb21wYXJlQm91
bmRhcnlQb2ludHMoY29uc3QgUmFuZ2VCb3VuZGFyeVBvaW50JiBib3VuZGFyeUEsIGNvbnN0IFJh
bmdlQm91bmRhcnlQb2ludCYgYm91bmRhcnlCLCBFeGNlcHRpb25Db2RlJik7CisgICAgc2hvcnQg
Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKENvbXBhcmVIb3csIGNvbnN0IFJhbmdlKiBzb3VyY2VSYW5n
ZSwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSkgY29uc3Q7CisgICAg
c3RhdGljIHNob3J0IGNvbXBhcmVCb3VuZGFyeVBvaW50cyhOb2RlKiBjb250YWluZXJBLCBpbnQg
b2Zmc2V0QSwgTm9kZSogY29udGFpbmVyQiwgaW50IG9mZnNldEIsIEV4Y2VwdGlvbkNvZGUmID0g
SWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAgIHN0YXRpYyBzaG9ydCBjb21wYXJlQm91bmRh
cnlQb2ludHMoY29uc3QgUmFuZ2VCb3VuZGFyeVBvaW50JiBib3VuZGFyeUEsIGNvbnN0IFJhbmdl
Qm91bmRhcnlQb2ludCYgYm91bmRhcnlCLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0
aW9uQ29kZSgpKTsKICAgICBib29sIGJvdW5kYXJ5UG9pbnRzVmFsaWQoKSBjb25zdDsKICAgICBi
b29sIGludGVyc2VjdHNOb2RlKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
b2lkIGRlbGV0ZUNvbnRlbnRzKEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGV4dHJhY3RDb250ZW50cyhFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjbG9uZUNvbnRlbnRzKEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGV4dHJhY3RDb250ZW50cyhFeGNlcHRpb25D
b2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKKyAgICBQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGNsb25lQ29udGVudHMoRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlv
bkNvZGUoKSk7CiAgICAgdm9pZCBpbnNlcnROb2RlKFBhc3NSZWZQdHI8Tm9kZT4sIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICBTdHJpbmcgdG9TdHJpbmcoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAg
IFN0cmluZyB0b1N0cmluZyhFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgp
KSBjb25zdDsKIAogICAgIFN0cmluZyB0b0hUTUwoKSBjb25zdDsKICAgICBTdHJpbmcgdGV4dCgp
IGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVDb250ZXh0
dWFsRnJhZ21lbnQoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Cisg
ICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQo
Y29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29k
ZSgpKSBjb25zdDsKIAotICAgIHZvaWQgZGV0YWNoKEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lk
IGRldGFjaChFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKICAgICBQ
YXNzUmVmUHRyPFJhbmdlPiBjbG9uZVJhbmdlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAotICAg
IHZvaWQgc2V0U3RhcnRBZnRlcihOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0
RW5kQmVmb3JlKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZXRFbmRBZnRlcihO
b2RlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2VsZWN0Tm9kZShOb2RlKiwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIHZvaWQgc2VsZWN0Tm9kZUNvbnRlbnRzKE5vZGUqLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgdm9pZCBzdXJyb3VuZENvbnRlbnRzKFBhc3NSZWZQdHI8Tm9kZT4sIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICB2b2lkIHNldFN0YXJ0QmVmb3JlKE5vZGUqLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdm9pZCBzZXRTdGFydEFmdGVyKE5vZGUqLCBFeGNlcHRpb25Db2RlJiA9IElnbm9y
aW5nRXhjZXB0aW9uQ29kZSgpKTsKKyAgICB2b2lkIHNldEVuZEJlZm9yZShOb2RlKiwgRXhjZXB0
aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CisgICAgdm9pZCBzZXRFbmRBZnRl
cihOb2RlKiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CisgICAg
dm9pZCBzZWxlY3ROb2RlKE5vZGUqLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9u
Q29kZSgpKTsKKyAgICB2b2lkIHNlbGVjdE5vZGVDb250ZW50cyhOb2RlKiwgRXhjZXB0aW9uQ29k
ZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CisgICAgdm9pZCBzdXJyb3VuZENvbnRlbnRz
KFBhc3NSZWZQdHI8Tm9kZT4sIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2Rl
KCkpOworICAgIHZvaWQgc2V0U3RhcnRCZWZvcmUoTm9kZSosIEV4Y2VwdGlvbkNvZGUmID0gSWdu
b3JpbmdFeGNlcHRpb25Db2RlKCkpOwogCiAgICAgY29uc3QgUG9zaXRpb24gc3RhcnRQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQudG9Qb3NpdGlvbigpOyB9CiAgICAgY29uc3QgUG9z
aXRpb24gZW5kUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2VuZC50b1Bvc2l0aW9uKCk7IH0K
QEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgLy8gRXhwYW5kIHJhbmdlIHRvIGEgdW5p
dCAod29yZCBvciBzZW50ZW5jZSBvciBibG9jayBvciBkb2N1bWVudCkgYm91bmRhcnkuCiAgICAg
Ly8gUGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNzYzMiBjb21tZW50ICM1IAogICAgIC8vIGZvciBkZXRhaWxzLgotICAgIHZvaWQgZXhwYW5k
KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGV4cGFuZChjb25zdCBT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKIAogICAg
IFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IGdldENsaWVudFJlY3RzKCkgY29uc3Q7CiAgICAg
UGFzc1JlZlB0cjxDbGllbnRSZWN0PiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBjb25zdDsKQEAg
LTE0NSwxOSArMTQ1LDE5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldERvY3VtZW50KERvY3Vt
ZW50Kik7CiAKLSAgICBOb2RlKiBjaGVja05vZGVXT2Zmc2V0KE5vZGUqLCBpbnQgb2Zmc2V0LCBF
eGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgdm9pZCBjaGVja05vZGVCQShOb2RlKiwgRXhjZXB0
aW9uQ29kZSYpIGNvbnN0OwotICAgIHZvaWQgY2hlY2tEZWxldGVFeHRyYWN0KEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBOb2RlKiBjaGVja05vZGVXT2Zmc2V0KE5vZGUqLCBpbnQgb2Zmc2V0LCBFeGNl
cHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKSBjb25zdDsKKyAgICB2b2lkIGNo
ZWNrTm9kZUJBKE5vZGUqLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgp
KSBjb25zdDsKKyAgICB2b2lkIGNoZWNrRGVsZXRlRXh0cmFjdChFeGNlcHRpb25Db2RlJiA9IEln
bm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKICAgICBib29sIGNvbnRhaW5lZEJ5UmVhZE9ubHkoKSBj
b25zdDsKICAgICBpbnQgbWF4U3RhcnRPZmZzZXQoKSBjb25zdDsKICAgICBpbnQgbWF4RW5kT2Zm
c2V0KCkgY29uc3Q7CiAKICAgICBlbnVtIEFjdGlvblR5cGUgeyBERUxFVEVfQ09OVEVOVFMsIEVY
VFJBQ1RfQ09OVEVOVFMsIENMT05FX0NPTlRFTlRTIH07Ci0gICAgUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBwcm9jZXNzQ29udGVudHMoQWN0aW9uVHlwZSwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vZGU+IHByb2Nlc3NDb250ZW50c0JldHdlZW5PZmZzZXRz
KEFjdGlvblR5cGUsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4sIE5vZGUqLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
c3RhdGljIHZvaWQgcHJvY2Vzc05vZGVzKEFjdGlvblR5cGUsIFZlY3RvcjxSZWZQdHI8Tm9kZT4g
PiYsIFBhc3NSZWZQdHI8Tm9kZT4gb2xkQ29udGFpbmVyLCBQYXNzUmVmUHRyPE5vZGU+IG5ld0Nv
bnRhaW5lciwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gcHJvY2Vzc0NvbnRlbnRzKEFjdGlvblR5cGUsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdF
eGNlcHRpb25Db2RlKCkpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vZGU+IHByb2Nlc3NDb250
ZW50c0JldHdlZW5PZmZzZXRzKEFjdGlvblR5cGUsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4sIE5vZGUqLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCBFeGNl
cHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKKyAgICBzdGF0aWMgdm9pZCBw
cm9jZXNzTm9kZXMoQWN0aW9uVHlwZSwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiwgUGFzc1JlZlB0
cjxOb2RlPiBvbGRDb250YWluZXIsIFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q29udGFpbmVyLCBFeGNl
cHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKICAgICBlbnVtIENvbnRlbnRz
UHJvY2Vzc0RpcmVjdGlvbiB7IFByb2Nlc3NDb250ZW50c0ZvcndhcmQsIFByb2Nlc3NDb250ZW50
c0JhY2t3YXJkIH07Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Tm9kZT4gcHJvY2Vzc0FuY2VzdG9y
c0FuZFRoZWlyU2libGluZ3MoQWN0aW9uVHlwZSwgTm9kZSogY29udGFpbmVyLCBDb250ZW50c1By
b2Nlc3NEaXJlY3Rpb24sIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVkQ29udGFpbmVyLCBOb2RlKiBj
b21tb25Sb290LCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm9kZT4g
cHJvY2Vzc0FuY2VzdG9yc0FuZFRoZWlyU2libGluZ3MoQWN0aW9uVHlwZSwgTm9kZSogY29udGFp
bmVyLCBDb250ZW50c1Byb2Nlc3NEaXJlY3Rpb24sIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVkQ29u
dGFpbmVyLCBOb2RlKiBjb21tb25Sb290LCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0
aW9uQ29kZSgpKTsKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9vd25lckRvY3VtZW50OwogICAg
IFJhbmdlQm91bmRhcnlQb2ludCBtX3N0YXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IDQ0YzljYzg0
ZjA3Yzc0ZGE5NmRkZTFjODViYTQ5MzkwMjJhNzcwMTcuLmIzMWU2OWE4OTkxZjI0MzlkNmM0NzE3
YzJkOTE2MmZjNzI2MWNiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTE1MSwxMSArMTUxLDEwIEBA
IFBhc3NSZWZQdHI8VGV4dD4gVGV4dDo6cmVwbGFjZVdob2xlVGV4dChjb25zdCBTdHJpbmcmIG5l
d1RleHQsIEV4Y2VwdGlvbkNvZGUmKQogCiAgICAgUmVmUHRyPFRleHQ+IHByb3RlY3RlZFRoaXMo
dGhpcyk7IC8vIE11dGF0aW9uIGV2ZW50IGhhbmRsZXJzIGNvdWxkIGNhdXNlIG91ciBsYXN0IHJl
ZiB0byBnbyBhd2F5CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZSgpOyAv
LyBQcm90ZWN0IGFnYWluc3QgbXV0YXRpb24gaGFuZGxlcnMgbW92aW5nIHRoaXMgbm9kZSBkdXJp
bmcgdHJhdmVyc2FsCi0gICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkID0gMDsKICAgICBmb3IgKFJl
ZlB0cjxOb2RlPiBuID0gc3RhcnRUZXh0OyBuICYmIG4gIT0gdGhpcyAmJiBuLT5pc1RleHROb2Rl
KCkgJiYgbi0+cGFyZW50Tm9kZSgpID09IHBhcmVudDspIHsKICAgICAgICAgUmVmUHRyPE5vZGU+
IG5vZGVUb1JlbW92ZShuLnJlbGVhc2UoKSk7CiAgICAgICAgIG4gPSBub2RlVG9SZW1vdmUtPm5l
eHRTaWJsaW5nKCk7Ci0gICAgICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQobm9kZVRvUmVtb3ZlLmdl
dCgpLCBpZ25vcmVkKTsKKyAgICAgICAgcGFyZW50LT5yZW1vdmVDaGlsZChub2RlVG9SZW1vdmUu
Z2V0KCkpOwogICAgIH0KIAogICAgIGlmICh0aGlzICE9IGVuZFRleHQpIHsKQEAgLTE2MywxNyAr
MTYyLDE3IEBAIFBhc3NSZWZQdHI8VGV4dD4gVGV4dDo6cmVwbGFjZVdob2xlVGV4dChjb25zdCBT
dHJpbmcmIG5ld1RleHQsIEV4Y2VwdGlvbkNvZGUmKQogICAgICAgICBmb3IgKFJlZlB0cjxOb2Rl
PiBuID0gbmV4dFNpYmxpbmcoKTsgbiAmJiBuICE9IG9uZVBhc3RFbmRUZXh0ICYmIG4tPmlzVGV4
dE5vZGUoKSAmJiBuLT5wYXJlbnROb2RlKCkgPT0gcGFyZW50OykgewogICAgICAgICAgICAgUmVm
UHRyPE5vZGU+IG5vZGVUb1JlbW92ZShuLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICBuID0gbm9k
ZVRvUmVtb3ZlLT5uZXh0U2libGluZygpOwotICAgICAgICAgICAgcGFyZW50LT5yZW1vdmVDaGls
ZChub2RlVG9SZW1vdmUuZ2V0KCksIGlnbm9yZWQpOworICAgICAgICAgICAgcGFyZW50LT5yZW1v
dmVDaGlsZChub2RlVG9SZW1vdmUuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYg
KG5ld1RleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50Tm9kZSgp
ID09IHBhcmVudCkKLSAgICAgICAgICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQodGhpcywgaWdub3Jl
ZCk7CisgICAgICAgICAgICBwYXJlbnQtPnJlbW92ZUNoaWxkKHRoaXMpOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICBzZXREYXRhKG5ld1RleHQsIGlnbm9yZWQpOworICAgIHNldERh
dGEobmV3VGV4dCk7CiAgICAgcmV0dXJuIHByb3RlY3RlZFRoaXMucmVsZWFzZSgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RleHQuaAppbmRleCAzY2M4YzUwMmE0M2I3MGEzM2I1YTMwMzlmZDFkM2UwMzFiNTA0NTg1Li5i
OTU1ZGFiMGI4NzFjMjVlMWU5YWE1NTVkYjMyNzcyZjViMmIyNzU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKQEAg
LTM0LDEyICszNCwxMiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dD4gY3Jl
YXRlKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4
dD4gY3JlYXRlV2l0aExlbmd0aExpbWl0KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiwgdW5zaWdu
ZWQgcG9zaXRpb25JblN0cmluZywgdW5zaWduZWQgbGVuZ3RoTGltaXQgPSBkZWZhdWx0TGVuZ3Ro
TGltaXQpOwogCi0gICAgUGFzc1JlZlB0cjxUZXh0PiBzcGxpdFRleHQodW5zaWduZWQgb2Zmc2V0
LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxUZXh0PiBzcGxpdFRleHQodW5zaWdu
ZWQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKIAog
ICAgIC8vIERPTSBMZXZlbCAzOiBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1Db3Jl
L2NvcmUuaHRtbCNJRC0xMzEyMjk1NzcyCiAKICAgICBTdHJpbmcgd2hvbGVUZXh0KCkgY29uc3Q7
Ci0gICAgUGFzc1JlZlB0cjxUZXh0PiByZXBsYWNlV2hvbGVUZXh0KGNvbnN0IFN0cmluZyYsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPFRleHQ+IHJlcGxhY2VXaG9sZVRleHQoY29u
c3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1hNTERv
Y3VtZW50UGFyc2VyLmNwcAppbmRleCAyMzYzZWFkMWEzZjlmODZlMzljZDUwZjBkNzNhZjkwZjM2
OTYzN2IxLi44MjM3ODBmMmQ3ZGQ1MGM4YTBlOTE1OGYzMjJkZThhMzY2YzAzZDkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTE5MCw4ICsxOTAsNyBAQCB2
b2lkIFhNTERvY3VtZW50UGFyc2VyOjpleGl0VGV4dCgpCiAgICAgICAgIHJldHVybjsKIAogI2lm
ICFVU0UoUVhNTFNUUkVBTSkKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBtX2xlYWZU
ZXh0Tm9kZS0+YXBwZW5kRGF0YSh0b1N0cmluZyhtX2J1ZmZlcmVkVGV4dC5kYXRhKCksIG1fYnVm
ZmVyZWRUZXh0LnNpemUoKSksIGVjKTsKKyAgICBtX2xlYWZUZXh0Tm9kZS0+YXBwZW5kRGF0YSh0
b1N0cmluZyhtX2J1ZmZlcmVkVGV4dC5kYXRhKCksIG1fYnVmZmVyZWRUZXh0LnNpemUoKSkpOwog
ICAgIFZlY3Rvcjx4bWxDaGFyPiBlbXB0eTsKICAgICBtX2J1ZmZlcmVkVGV4dC5zd2FwKGVtcHR5
KTsKICNlbmRpZgpAQCAtMjU2LDE5ICsyNTUsMTggQEAgc3RhdGljIGlubGluZSBSZWZQdHI8RWxl
bWVudD4gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRlcihEb2N1bWVudCogZG9jLCBjb25zdAog
ICAgIFJlZlB0cjxFbGVtZW50PiByZXBvcnRFbGVtZW50ID0gZG9jLT5jcmVhdGVFbGVtZW50KFF1
YWxpZmllZE5hbWUobnVsbEF0b20sICJwYXJzZXJlcnJvciIsIHhodG1sTmFtZXNwYWNlVVJJKSwg
ZmFsc2UpOwogICAgIHJlcG9ydEVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICJkaXNw
bGF5OiBibG9jazsgd2hpdGUtc3BhY2U6IHByZTsgYm9yZGVyOiAycHggc29saWQgI2M3NzsgcGFk
ZGluZzogMCAxZW0gMCAxZW07IG1hcmdpbjogMWVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRkOyBj
b2xvcjogYmxhY2siKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJlZlB0cjxF
bGVtZW50PiBoMyA9IGRvYy0+Y3JlYXRlRWxlbWVudChoM1RhZywgZmFsc2UpOwotICAgIHJlcG9y
dEVsZW1lbnQtPmFwcGVuZENoaWxkKGgzLmdldCgpLCBlYyk7Ci0gICAgaDMtPmFwcGVuZENoaWxk
KGRvYy0+Y3JlYXRlVGV4dE5vZGUoIlRoaXMgcGFnZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGVy
cm9yczoiKSwgZWMpOworICAgIHJlcG9ydEVsZW1lbnQtPmFwcGVuZENoaWxkKGgzLmdldCgpKTsK
KyAgICBoMy0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZSgiVGhpcyBwYWdlIGNvbnRh
aW5zIHRoZSBmb2xsb3dpbmcgZXJyb3JzOiIpKTsKIAogICAgIFJlZlB0cjxFbGVtZW50PiBmaXhl
ZCA9IGRvYy0+Y3JlYXRlRWxlbWVudChkaXZUYWcsIGZhbHNlKTsKLSAgICByZXBvcnRFbGVtZW50
LT5hcHBlbmRDaGlsZChmaXhlZC5nZXQoKSwgZWMpOworICAgIHJlcG9ydEVsZW1lbnQtPmFwcGVu
ZENoaWxkKGZpeGVkLmdldCgpKTsKICAgICBmaXhlZC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwg
ImZvbnQtZmFtaWx5Om1vbm9zcGFjZTtmb250LXNpemU6MTJweCIpOwotICAgIGZpeGVkLT5hcHBl
bmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKGVycm9yTWVzc2FnZXMpLCBlYyk7CisgICAgZml4
ZWQtPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoZXJyb3JNZXNzYWdlcykpOwogCiAg
ICAgaDMgPSBkb2MtPmNyZWF0ZUVsZW1lbnQoaDNUYWcsIGZhbHNlKTsKLSAgICByZXBvcnRFbGVt
ZW50LT5hcHBlbmRDaGlsZChoMy5nZXQoKSwgZWMpOwotICAgIGgzLT5hcHBlbmRDaGlsZChkb2Mt
PmNyZWF0ZVRleHROb2RlKCJCZWxvdyBpcyBhIHJlbmRlcmluZyBvZiB0aGUgcGFnZSB1cCB0byB0
aGUgZmlyc3QgZXJyb3IuIiksIGVjKTsKKyAgICByZXBvcnRFbGVtZW50LT5hcHBlbmRDaGlsZCho
My5nZXQoKSk7CisgICAgaDMtPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoIkJlbG93
IGlzIGEgcmVuZGVyaW5nIG9mIHRoZSBwYWdlIHVwIHRvIHRoZSBmaXJzdCBlcnJvci4iKSk7CiAK
ICAgICByZXR1cm4gcmVwb3J0RWxlbWVudDsKIH0KQEAgLTI4NCwzNCArMjgyLDMzIEBAIHZvaWQg
WE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydEVycm9yTWVzc2FnZUJsb2NrKCkKICAgICAvLyB3aGVy
ZSB0aGUgZXJyb3JzIGFyZSBsb2NhdGVkKQogCiAgICAgLy8gQ3JlYXRlIGVsZW1lbnRzIGZvciBk
aXNwbGF5Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gdGhpcy0+ZG9jdW1lbnQoKTsKICAgICBSZWZQdHI8RWxlbWVudD4gZG9jdW1lbnRFbGVtZW50
ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwogICAgIGlmICghZG9jdW1lbnRFbGVtZW50
KSB7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiByb290RWxlbWVudCA9IGRvY3VtZW50LT5jcmVh
dGVFbGVtZW50KGh0bWxUYWcsIGZhbHNlKTsKLSAgICAgICAgZG9jdW1lbnQtPmFwcGVuZENoaWxk
KHJvb3RFbGVtZW50LCBlYyk7CisgICAgICAgIGRvY3VtZW50LT5hcHBlbmRDaGlsZChyb290RWxl
bWVudCk7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBib2R5ID0gZG9jdW1lbnQtPmNyZWF0ZUVs
ZW1lbnQoYm9keVRhZywgZmFsc2UpOwotICAgICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQo
Ym9keSwgZWMpOworICAgICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoYm9keSk7CiAgICAg
ICAgIGRvY3VtZW50RWxlbWVudCA9IGJvZHkuZ2V0KCk7CiAgICAgfQogI2lmIEVOQUJMRShTVkcp
CiAgICAgZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50LT5uYW1lc3BhY2VVUkkoKSA9PSBTVkdOYW1l
czo6c3ZnTmFtZXNwYWNlVVJJKSB7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiByb290RWxlbWVu
dCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50KGh0bWxUYWcsIGZhbHNlKTsKICAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IGJvZHkgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChib2R5VGFnLCBmYWxz
ZSk7Ci0gICAgICAgIHJvb3RFbGVtZW50LT5hcHBlbmRDaGlsZChib2R5LCBlYyk7Ci0gICAgICAg
IGJvZHktPmFwcGVuZENoaWxkKGRvY3VtZW50RWxlbWVudCwgZWMpOwotICAgICAgICBkb2N1bWVu
dC0+YXBwZW5kQ2hpbGQocm9vdEVsZW1lbnQuZ2V0KCksIGVjKTsKKyAgICAgICAgcm9vdEVsZW1l
bnQtPmFwcGVuZENoaWxkKGJvZHkpOworICAgICAgICBib2R5LT5hcHBlbmRDaGlsZChkb2N1bWVu
dEVsZW1lbnQpOworICAgICAgICBkb2N1bWVudC0+YXBwZW5kQ2hpbGQocm9vdEVsZW1lbnQuZ2V0
KCkpOwogICAgICAgICBkb2N1bWVudEVsZW1lbnQgPSBib2R5LmdldCgpOwogICAgIH0KICNlbmRp
ZgogICAgIFJlZlB0cjxFbGVtZW50PiByZXBvcnRFbGVtZW50ID0gY3JlYXRlWEhUTUxQYXJzZXJF
cnJvckhlYWRlcihkb2N1bWVudCwgbV9lcnJvck1lc3NhZ2VzKTsKLSAgICBkb2N1bWVudEVsZW1l
bnQtPmluc2VydEJlZm9yZShyZXBvcnRFbGVtZW50LCBkb2N1bWVudEVsZW1lbnQtPmZpcnN0Q2hp
bGQoKSwgZWMpOworICAgIGRvY3VtZW50RWxlbWVudC0+aW5zZXJ0QmVmb3JlKHJlcG9ydEVsZW1l
bnQsIGRvY3VtZW50RWxlbWVudC0+Zmlyc3RDaGlsZCgpKTsKICNpZiBFTkFCTEUoWFNMVCkKICAg
ICBpZiAoZG9jdW1lbnQtPnRyYW5zZm9ybVNvdXJjZURvY3VtZW50KCkpIHsKICAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IHBhcmFncmFwaCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50KHBUYWcsIGZh
bHNlKTsKICAgICAgICAgcGFyYWdyYXBoLT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAid2hpdGUt
c3BhY2U6IG5vcm1hbCIpOwotICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGRvY3VtZW50
LT5jcmVhdGVUZXh0Tm9kZSgiVGhpcyBkb2N1bWVudCB3YXMgY3JlYXRlZCBhcyB0aGUgcmVzdWx0
IG9mIGFuIFhTTCB0cmFuc2Zvcm1hdGlvbi4gVGhlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIGdp
dmVuIGFyZSBmcm9tIHRoZSB0cmFuc2Zvcm1lZCByZXN1bHQuIiksIGVjKTsKLSAgICAgICAgcmVw
b3J0RWxlbWVudC0+YXBwZW5kQ2hpbGQocGFyYWdyYXBoLnJlbGVhc2UoKSwgZWMpOworICAgICAg
ICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGRvY3VtZW50LT5jcmVhdGVUZXh0Tm9kZSgiVGhpcyBk
b2N1bWVudCB3YXMgY3JlYXRlZCBhcyB0aGUgcmVzdWx0IG9mIGFuIFhTTCB0cmFuc2Zvcm1hdGlv
bi4gVGhlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIGdpdmVuIGFyZSBmcm9tIHRoZSB0cmFuc2Zv
cm1lZCByZXN1bHQuIikpOworICAgICAgICByZXBvcnRFbGVtZW50LT5hcHBlbmRDaGlsZChwYXJh
Z3JhcGgucmVsZWFzZSgpKTsKICAgICB9CiAjZW5kaWYKICAgICBkb2N1bWVudC0+dXBkYXRlU3R5
bGVJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcAppbmRleCBmMmYzOWZiNGVjN2RlZTA3MGE4MzUxNWFlMGM0ZjQxMGY2YjcyODZl
Li5jNDRhNDdlNzE0MWE5MjliOTIxN2NjYmJmNmNiNTFkYmQyOTIzOWY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtMTAzMywxMSAr
MTAzMyw5IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmNvbW1lbnQoY29uc3QgeG1sQ2hhciog
cykKIAogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnREb2N1bWVudChjb25zdCB4bWxDaGFy
KiB2ZXJzaW9uLCBjb25zdCB4bWxDaGFyKiBlbmNvZGluZywgaW50IHN0YW5kYWxvbmUpCiB7Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0KICAgICBpZiAodmVyc2lvbikKLSAgICAgICAgZG9j
dW1lbnQoKS0+c2V0WE1MVmVyc2lvbih0b1N0cmluZyh2ZXJzaW9uKSwgZWMpOwotICAgIGRvY3Vt
ZW50KCktPnNldFhNTFN0YW5kYWxvbmUoc3RhbmRhbG9uZSA9PSAxLCBlYyk7IC8vIHBvc3NpYmxl
IHZhbHVlcyBhcmUgMCwgMSwgYW5kIC0xCisgICAgICAgIGRvY3VtZW50KCktPnNldFhNTFZlcnNp
b24odG9TdHJpbmcodmVyc2lvbikpOworICAgIGRvY3VtZW50KCktPnNldFhNTFN0YW5kYWxvbmUo
c3RhbmRhbG9uZSA9PSAxKTsgLy8gcG9zc2libGUgdmFsdWVzIGFyZSAwLCAxLCBhbmQgLTEKICAg
ICBpZiAoZW5jb2RpbmcpCiAgICAgICAgIGRvY3VtZW50KCktPnNldFhNTEVuY29kaW5nKHRvU3Ry
aW5nKGVuY29kaW5nKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vWE1MRG9j
dW1lbnRQYXJzZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJR
dC5jcHAKaW5kZXggYjVjZmEyMzQyZDBkNjUwZDA0YzIwYmMzOGQ3ZmVlNmI2ODVjMDZmYS4uYjI4
YmM2YWZhN2NhZWM3MzliMzRhNDVjNTliMGE1MWM3Nzk3NzI4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9YTUxEb2N1bWVudFBhcnNlclF0LmNwcApAQCAtNDI3LDEwICs0MjcsOSBAQCB2b2lkIFhN
TERvY3VtZW50UGFyc2VyOjpwYXJzZSgpCiAgICAgICAgICAgICAgICAgVUNoYXIgYyA9IGRlY29k
ZU5hbWVkRW50aXR5KGVudGl0eS50b1V0ZjgoKS5jb25zdERhdGEoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFtX2xlYWZUZXh0Tm9kZSkKICAgICAgICAgICAgICAgICAgICAgZW50ZXJUZXh0KCk7
Ci0gICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgICAgICAgICAg
U3RyaW5nIHN0cigmYywgMSk7CiAgICAgICAgICAgICAgICAgLy8gcURlYnVnKCk8PCIgLS0tLS0t
LSBhZGRpbmcgZW50aXR5ICI8PHN0cjsKLSAgICAgICAgICAgICAgICBtX2xlYWZUZXh0Tm9kZS0+
YXBwZW5kRGF0YShzdHIsIGVjKTsKKyAgICAgICAgICAgICAgICBtX2xlYWZUZXh0Tm9kZS0+YXBw
ZW5kRGF0YShzdHIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgICAgICBicmVh
azsKQEAgLTQ1NCwxNCArNDUzLDEzIEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlKCkK
IHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RG9jdW1lbnQoKQogewogICAgIGluaXRpYWxp
emVQYXJzZXJDb250ZXh0KCk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAKICAgICBpZiAo
IW1fcGFyc2luZ0ZyYWdtZW50KSB7Ci0gICAgICAgIGRvY3VtZW50KCktPnNldFhNTFN0YW5kYWxv
bmUobV9zdHJlYW0uaXNTdGFuZGFsb25lRG9jdW1lbnQoKSwgZWMpOworICAgICAgICBkb2N1bWVu
dCgpLT5zZXRYTUxTdGFuZGFsb25lKG1fc3RyZWFtLmlzU3RhbmRhbG9uZURvY3VtZW50KCkpOwog
CiAgICAgICAgIFFTdHJpbmdSZWYgdmVyc2lvbiA9IG1fc3RyZWFtLmRvY3VtZW50VmVyc2lvbigp
OwogICAgICAgICBpZiAoIXZlcnNpb24uaXNFbXB0eSgpKQotICAgICAgICAgICAgZG9jdW1lbnQo
KS0+c2V0WE1MVmVyc2lvbih2ZXJzaW9uLCBlYyk7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5z
ZXRYTUxWZXJzaW9uKHZlcnNpb24pOwogICAgICAgICBRU3RyaW5nUmVmIGVuY29kaW5nID0gbV9z
dHJlYW0uZG9jdW1lbnRFbmNvZGluZygpOwogICAgICAgICBpZiAoIWVuY29kaW5nLmlzRW1wdHko
KSkKICAgICAgICAgICAgIGRvY3VtZW50KCktPnNldFhNTEVuY29kaW5nKGVuY29kaW5nKTsKQEAg
LTU1Nyw4ICs1NTUsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZUVuZEVsZW1lbnQo
KQogCiAgICAgaWYgKG1fc2NyaXB0aW5nUGVybWlzc2lvbiA9PSBGcmFnbWVudFNjcmlwdGluZ05v
dEFsbG93ZWQgJiYgbi0+aXNFbGVtZW50Tm9kZSgpICYmIHRvU2NyaXB0RWxlbWVudChzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obi5nZXQoKSkpKSB7CiAgICAgICAgIHBvcEN1cnJlbnROb2RlKCk7Ci0g
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgIG4tPnJlbW92ZShlYyk7CisgICAgICAg
IG4tPnJlbW92ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02MTUsOCArNjEyLDcg
QEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VDaGFyYWN0ZXJzKCkKIHsKICAgICBpZiAo
IW1fbGVhZlRleHROb2RlKQogICAgICAgICBlbnRlclRleHQoKTsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBtX2xlYWZUZXh0Tm9kZS0+YXBwZW5kRGF0YShtX3N0cmVhbS50ZXh0KCks
IGVjKTsKKyAgICBtX2xlYWZUZXh0Tm9kZS0+YXBwZW5kRGF0YShtX3N0cmVhbS50ZXh0KCkpOwog
fQogCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbigp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99455</attachid>
            <date>2011-07-01 03:58:29 -0700</date>
            <delta_ts>2011-07-03 22:42:50 -0700</delta_ts>
            <desc>Fixing release builds</desc>
            <filename>bug-63688-20110701195827.patch</filename>
            <type>text/plain</type>
            <size>56891</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTAwODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDg3
MTVlNDE5Zjk3MjU2ZTFjYjAxNGUxNzZhOWZlNDQxODczYTcwM2UuLjM2Nzc5MGUwNjhiMTUxNmFm
ZjBiMGQzNzVjMGVjZTI1YzBkY2U4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTA3LTAxICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFj
dG9yaW5nOiBJZ25vcmVkIEV4Y2VwdGlvbkNvZGUgdmFsdWUgc2hvdWxkIGJlIGxlc3MgYW5ub3lp
bmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzY4
OAorCisgICAgICAgIEFkZGVkIEFTU0VSVF9BVCBtYWNyby4KKworICAgICAgICAqIHd0Zi9Bc3Nl
cnRpb25zLmg6CisKIDIwMTEtMDYtMjkgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAppbmRleCAxMzZkNWJjODE1ODM5ZjEzMDQ1N2ExMmY0
OWIzMTBiZDhhYjYwNTYzLi5hZDIyMzlhNTM5N2E5YWQ4ZGMwZTUyOGZiODc1MzEyNDVjYjMwZGVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaApAQCAtMjM1LDYgKzIzNSw3
IEBAIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURkxvZ1ZlcmJvc2UoY29uc3QgY2hhciogZmls
ZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1CiAjaWYgQVNTRVJUX0RJU0FCTEVECiAKICNkZWZp
bmUgQVNTRVJUKGFzc2VydGlvbikgKCh2b2lkKTApCisjZGVmaW5lIEFTU0VSVF9BVChhc3NlcnRp
b24sIGZpbGUsIGxpbmUsIGZ1bmN0aW9uKSAoKHZvaWQpMCkKICNkZWZpbmUgQVNTRVJUX05PVF9S
RUFDSEVEKCkgKCh2b2lkKTApCiAKICNpZiBDT01QSUxFUihJTlRFTCkgJiYgIU9TKFdJTkRPV1Mp
IHx8IENPTVBJTEVSKFJWQ1QpCkBAIC0yNTQsNiArMjU1LDEzIEBAIGlubGluZSB2b2lkIGFzc2Vy
dFVudXNlZChUJiB4KSB7ICh2b2lkKXg7IH0KICAgICB9IFwKIHdoaWxlICgwKQogCisjZGVmaW5l
IEFTU0VSVF9BVChhc3NlcnRpb24sIGZpbGUsIGxpbmUsIGZ1bmN0aW9uKSBkbyAgXAorICAgIGlm
ICghKGFzc2VydGlvbikpIHsgXAorICAgICAgICBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKGZp
bGUsIGxpbmUsIGZ1bmN0aW9uLCAjYXNzZXJ0aW9uKTsgXAorICAgICAgICBDUkFTSCgpOyBcCisg
ICAgfSBcCit3aGlsZSAoMCkKKwogI2RlZmluZSBBU1NFUlRfTk9UX1JFQUNIRUQoKSBkbyB7IFwK
ICAgICBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BS
RVRUWV9GVU5DVElPTiwgMCk7IFwKICAgICBDUkFTSCgpOyBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyOWM3
NzJiYjNiZmRhZTRjZGE0ZDBjNGYyNWYxMDY4Zjk0ZTgwNy4uZWZhZmI4NjA3NTg2Yjg0OTFhNDgz
OWE4YmQxNzEyNDM4Yjc5MTkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDExLTA3
LTAxICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nOiBJZ25vcmVkIEV4
Y2VwdGlvbkNvZGUgdmFsdWUgc2hvdWxkIGJlIGxlc3MgYW5ub3lpbmcuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzY4OAorCisgICAgICAgIC0gSW50
cm9kdWNlZCBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUgY2xhc3MgZm9yIHRoZSBkZWZhdWx0IHBhcmFt
ZXRlciBvZiBFeGNlcHRpb25Db2RlLgorICAgICAgICAtIEludHJvZHVjZWQgQVNTRVJUX05FVkVS
X1RIUk9XTiB0byBjaGVjayBFeGNlcHRpb25Db2RlIG5vdCBzZXQgdG8gbm9uLXplcm8gYWZ0ZXIg
dGhlIGNhbGwuCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBpcyBmb2N1c2VkIG9uIGRv
bSBtb2R1bGUuIGZvciBhdm9pZCBicm9hZCBtb2RpZmljYXRpb24uCisgICAgICAgIAorICAgICAg
ICBObyBuZXcgdGVzdHMuIE5vIGJlaGF2aW91ciBjaGFuZ2UuCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEu
aDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKToKKyAgICAgICAgKiBkb20vQ29udGFp
bmVyTm9kZS5oOgorICAgICAgICAqIGRvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFzZXRET01TdHJpbmdNYXA6OmRlbGV0ZUl0ZW0pOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VGl0bGUp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzZXRN
YXJrZXJzQWN0aXZlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpkZXByZWNhdGVkQ3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENTdHJpbmdBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6c2V0Qm9vbGVhbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjplbnN1cmVTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRp
c3BhdGNoQXR0clJlbW92YWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXNw
YXRjaEF0dHJBZGRpdGlvbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldElu
dGVncmFsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldFVuc2lnbmVk
SW50ZWdyYWxBdHRyaWJ1dGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICog
ZG9tL0lnbm9yaW5nRXhjZXB0aW9uQ29kZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okln
bm9yaW5nRXhjZXB0aW9uQ29kZTo6b3BlcmF0b3IgRXhjZXB0aW9uQ29kZSYgKToKKyAgICAgICAg
KFdlYkNvcmU6Oklnbm9yaW5nRXhjZXB0aW9uQ29kZTo6SWdub3JpbmdFeGNlcHRpb25Db2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldmVyVGhyb3duV2l0aExvY2F0aW9uOjpOZXZlclRocm93bldp
dGhMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXZlclRocm93bldpdGhMb2NhdGlvbjo6
fk5ldmVyVGhyb3duV2l0aExvY2F0aW9uKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMpOgorICAg
ICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om5vcm1hbGl6ZSk6
CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vUmFuZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2U6OlJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjplZGl0
aW5nU3RhcnRQb3NpdGlvbik6CisgICAgICAgICogZG9tL1JhbmdlLmg6CisgICAgICAgICogZG9t
L1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6cmVwbGFjZVdob2xlVGV4dCk6Cisg
ICAgICAgICogZG9tL1RleHQuaDoKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmV4aXRUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydEVycm9yTWVzc2FnZUJsb2NrKToKKyAgICAg
ICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhNTERvY3VtZW50UGFyc2VyOjpzdGFydERvY3VtZW50KToKKyAgICAgICAgKiBkb20vWE1MRG9j
dW1lbnRQYXJzZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6
cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRW5kRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VDaGFyYWN0ZXJz
KToKKwogMjAxMS0wNi0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IDdkZTFhOGI5NTJjZTFjZDE2Yjk5MWRkYTQ3NDgxMTBkYTM4NDUwNzUuLmUyOTU1ZDlm
YjdmOWU1NjRhNzMwMmRhMzRmN2RjYjRmYWE1MmI1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtMTE3Niw2ICsxMTc2LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vRXhjbHVzaXZlVHJhY2tMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2Rv
bS9GcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0ln
bm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyLmggXAorCVNvdXJjZS9XZWJDb3Jl
L2RvbS9JZ25vcmluZ0V4Y2VwdGlvbkNvZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0ljb25V
UkwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vSGFzaENoYW5nZUV2ZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGIwOTFlYjg3NTYy
N2I1NDNhZDc2MDRlM2VkMTQ4NTgwMWU4MGIxY2MuLjZiNmVhZjlmOWIzN2FkZThjMjI0Zjk4ZTQ4
NTVmZDJhYWM4NjI1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTUzOCw2ICs1MzgsNyBAQAogICAg
ICAgICAgICAgJ2RvbS9OYW1lZE5vZGVNYXAuaCcsCiAgICAgICAgICAgICAnZG9tL05vZGUuaCcs
CiAgICAgICAgICAgICAnZG9tL05vZGVMaXN0LmgnLAorICAgICAgICAgICAgJ2RvbS9OZXZlclRo
cm93bi5oJywKICAgICAgICAgICAgICdkb20vUGVuZGluZ1NjcmlwdC5oJywKICAgICAgICAgICAg
ICdkb20vUG9zaXRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL1F1YWxpZmllZE5hbWUuaCcsCkBA
IC0yNTA1LDYgKzI1MDYsNyBAQAogICAgICAgICAgICAgJ2RvbS9FeGNsdXNpdmVUcmFja0xpc3Qu
aCcsCiAgICAgICAgICAgICAnZG9tL0hhc2hDaGFuZ2VFdmVudC5oJywKICAgICAgICAgICAgICdk
b20vSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCcsCisgICAgICAgICAg
ICAnZG9tL0lnbm9yaW5nRXhjZXB0aW9uQ29kZS5oJywKICAgICAgICAgICAgICdkb20vSWNvblVS
TC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9JY29uVVJMLmgnLAogICAgICAgICAgICAgJ2RvbS9L
ZXlib2FyZEV2ZW50LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDdmZjc3NGRkMGZlMGYxNzY0NWIxOTRmOWI2OTZhZjBj
ZGY3Y2I1My4uNTM4NjZhNWIwNjFlOGNhYmY5NmMzN2JjYjNjMThiMTVmNzUwNmE5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MzI4OCw2ICszMjg4LDcgQEAKIAkJQTcxQzMwQjkxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0Nv
bnRlbnRTZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcxQzMwQjcxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3Rvci5o
ICovOyB9OwogCQlBNzNGOTVGRTEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczRjk1RkMx
MkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmNwcCAqLzsgfTsKIAkJQTczRjk1RkYx
MkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkgLyogUm91
bmRlZEludFJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBNzRCQjc2QjEzQkRBODYzMDBGRjdCRjAgLyogSWdub3JpbmdFeGNlcHRpb25Db2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzRCQjc2
QTEzQkRBODYzMDBGRjdCRjAgLyogSWdub3JpbmdFeGNlcHRpb25Db2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc0QzJEM0MxMzgxMUUwRDAw
RjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzRDMkQzQjEzODExRTBEMDBGODM1NzIgLyogU2hhZG93
Q29udGVudEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBNzVFNDk3NjEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVF
NDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc1RTQ5NzcxMDc1MkFD
QjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFNDk3NTEwNzUyQUNCMDBDOUI4OTYgLyog
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLzsgfTsKQEAgLTk4MDYsNiArOTgwNyw3IEBACiAJ
CUE3MUMzMEI3MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93Q29udGVudFNlbGVjdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBS
b3VuZGVkSW50UmVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
b3VuZGVkSW50UmVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3M0Y5NUZE
MTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50UmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSb3VuZGVkSW50UmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNzRCQjc2QTEzQkRBODYzMDBGRjdCRjAgLyogSWdub3JpbmdFeGNlcHRpb25Db2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzRDMkQzQjEzODExRTBEMDBGODM1NzIg
LyogU2hhZG93Q29udGVudEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2hhZG93Q29udGVudEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTc1RTQ5NzQxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTk2MjYsNiArMTk2MjgsNyBAQAogCQkJCTQ1MDk5QzQwMTM3MEE3ODAwMDU4RDUxMyAv
KiBJY29uVVJMLmNwcCAqLywKIAkJCQk0NUJBQzJBRjEzNjBCQkFCMDA1REEyNTggLyogSWNvblVS
TC5oICovLAogCQkJCThBQjRCQzc2MTI2RkRCNzEwMERFQjcyNyAvKiBJZ25vcmVEZXN0cnVjdGl2
ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oICovLAorCQkJCUE3NEJCNzZBMTNCREE4NjMwMEZGN0JG
MCAvKiBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUuaCAqLywKIAkJCQk4NTAzMUIyRDBBNDRFRkM3MDBG
OTkyRTAgLyogS2V5Ym9hcmRFdmVudC5jcHAgKi8sCiAJCQkJODUwMzFCMkUwQTQ0RUZDNzAwRjk5
MkUwIC8qIEtleWJvYXJkRXZlbnQuaCAqLywKIAkJCQkxNENGN0MyMDA5RjcxMTA2MDBFQjM2NjUg
LyogS2V5Ym9hcmRFdmVudC5pZGwgKi8sCkBAIC0yMzA3Nyw2ICsyMzA4MCw3IEBACiAJCQkJMDg2
Mzk1MTYxM0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDMxQTJGOUMxM0I2RjJCMDAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9u
YWxOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QUJCNzg3MTNCOTA0QkMwMEYxOTdFMyAv
KiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NEJCNzZC
MTNCREE4NjMwMEZGN0JGMCAvKiBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKaW5kZXggNjYxZTExMDYzNzcyMmQzNDhmN2Zj
ODVkYTQwZjU1ZTM5MjZjMTIyMi4uZjkyNGViODBiOWFjYTA5NzYyMjZlYTYyMGIzZGRjZTBmNGQ2
YjQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCkBAIC0zMCwxMyArMzAsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2hhcmFjdGVyRGF0YSA6IHB1YmxpYyBOb2RlIHsK
IHB1YmxpYzoKICAgICBTdHJpbmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQotICAg
IHZvaWQgc2V0RGF0YShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBz
ZXREYXRhKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25D
b2RlKCkpOwogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+bGVu
Z3RoKCk7IH0KLSAgICBTdHJpbmcgc3Vic3RyaW5nRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGNvdW50LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGluc2VydERhdGEodW5zaWduZWQgb2Zm
c2V0LCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBkZWxldGVEYXRh
KHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
b2lkIHJlcGxhY2VEYXRhKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBTdHJpbmcgc3Vic3RyaW5nRGF0YSh1bnNpZ25l
ZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50LCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0
aW9uQ29kZSgpKTsKKyAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CisgICAgdm9pZCBpbnNlcnREYXRhKHVu
c2lnbmVkIG9mZnNldCwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4
Y2VwdGlvbkNvZGUoKSk7CisgICAgdm9pZCBkZWxldGVEYXRhKHVuc2lnbmVkIG9mZnNldCwgdW5z
aWduZWQgY291bnQsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwor
ICAgIHZvaWQgcmVwbGFjZURhdGEodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCwgY29u
c3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAK
ICAgICBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSBjb25zdDsKIApAQCAtNjcsNyArNjcs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBvZmZzZXRJbkNoYXJhY3RlcnMoKSBjb25z
dDsKICAgICB2b2lkIHNldERhdGFBbmRVcGRhdGUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiwgdW5z
aWduZWQgb2Zmc2V0T2ZSZXBsYWNlZERhdGEsIHVuc2lnbmVkIG9sZExlbmd0aCwgdW5zaWduZWQg
bmV3TGVuZ3RoKTsKICAgICB2b2lkIHVwZGF0ZVJlbmRlcmVyKHVuc2lnbmVkIG9mZnNldE9mUmVw
bGFjZWREYXRhLCB1bnNpZ25lZCBsZW5ndGhPZlJlcGxhY2VkRGF0YSk7Ci0gICAgdm9pZCBjaGVj
a0NoYXJEYXRhT3BlcmF0aW9uKHVuc2lnbmVkIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZvaWQgY2hlY2tDaGFyRGF0YU9wZXJhdGlvbih1bnNpZ25lZCBvZmZzZXQsIEV4Y2VwdGlvbkNv
ZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogCiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+
IG1fZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNmJhNWFj
ZTdmZTU3ZjIzMzhlNWNkM2U2ZTFjNWEyOGY1ZGE2ODk5OC4uOWE5ZDc1MDU2YTRjODEwODVkODg3
N2NhM2Q5OGNmZWE4MGE1MzNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApA
QCAtODgsMTIgKzg4LDEwIEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJv
bShDb250YWluZXJOb2RlKiBvbGRQYXJlbnQpCiAgICAgb2xkUGFyZW50LT5yZW1vdmVBbGxDaGls
ZHJlbigpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBpZiAoY2hpbGRy
ZW5baV0tPmF0dGFjaGVkKCkpCiAgICAgICAgICAgICBjaGlsZHJlbltpXS0+ZGV0YWNoKCk7CiAg
ICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIGEgbm8gbXV0YXRpb24gZXZlbnQgdmVyc2lvbiBvZiBh
ZG9wdE5vZGUuCi0gICAgICAgIFJlZlB0cjxOb2RlPiBjaGlsZCA9IGRvY3VtZW50KCktPmFkb3B0
Tm9kZShjaGlsZHJlbltpXS5yZWxlYXNlKCksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Cisg
ICAgICAgIFJlZlB0cjxOb2RlPiBjaGlsZCA9IGRvY3VtZW50KCktPmFkb3B0Tm9kZShjaGlsZHJl
bltpXS5yZWxlYXNlKCksIEFTU0VSVF9ORVZFUl9USFJPV04pOwogICAgICAgICBwYXJzZXJBZGRD
aGlsZChjaGlsZC5nZXQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBUb2dldGhlciB3aXRoIGFkb3B0
Tm9kZSBhYm92ZSwgdGhlIHRyZWUgc2NvcGUgbWlnaHQgZ2V0IHVwZGF0ZWQgcmVjdXJzaXZlbHkg
dHdpY2UKICAgICAgICAgLy8gKGlmIHRoZSBkb2N1bWVudCBjaGFuZ2VkIG9yIG9sZFBhcmVudCB3
YXMgaW4gYSBzaGFkb3cgdHJlZSwgQU5EICp0aGlzIGlzIGluIGEgc2hhZG93IHRyZWUpLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggMmU1ODY4ODE5NzRlZTkzZmUxNGViMTQ0YTkw
MWFlOWMyMzFiMzM5MC4uMzViNWUzZjAyMDNmZmQyNTljYzVjYWYxZTA4YTlmMWMzZDVlZGMxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC00NCwxMCArNDQsMTAgQEAgcHVibGlj
OgogICAgIE5vZGUqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0K
ICAgICBOb2RlKiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RDaGlsZDsgfQogCi0g
ICAgYm9vbCBpbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVm
Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmLCBib29sIHNob3VsZExhenlBdHRhY2ggPSBmYWxzZSk7Ci0g
ICAgYm9vbCByZXBsYWNlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xk
Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmLCBib29sIHNob3VsZExhenlBdHRhY2ggPSBmYWxzZSk7Ci0g
ICAgYm9vbCByZW1vdmVDaGlsZChOb2RlKiBjaGlsZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIGJv
b2wgYXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYs
IGJvb2wgc2hvdWxkTGF6eUF0dGFjaCA9IGZhbHNlKTsKKyAgICBib29sIGluc2VydEJlZm9yZShQ
YXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZXB0aW9uQ29kZSYg
PSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSwgYm9vbCBzaG91bGRMYXp5QXR0YWNoID0gZmFsc2Up
OworICAgIGJvb2wgcmVwbGFjZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUq
IG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpLCBib29s
IHNob3VsZExhenlBdHRhY2ggPSBmYWxzZSk7CisgICAgYm9vbCByZW1vdmVDaGlsZChOb2RlKiBj
aGlsZCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CisgICAgYm9v
bCBhcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJiA9
IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpLCBib29sIHNob3VsZExhenlBdHRhY2ggPSBmYWxzZSk7
CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBvbmx5IHVzZWQgZHVyaW5nIHBhcnNpbmcuCiAg
ICAgLy8gVGhleSBkb24ndCBzZW5kIERPTSBtdXRhdGlvbiBldmVudHMgb3IgaGFuZGxlIHJlcGFy
ZW50aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdN
YXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCmluZGV4
IGU2OGU5ZDk1OTIxYjM4NjUwOTYwYTAxYTNjZDE1MmI2ZTRiZTc3MWYuLmUwZDg3NWRjYmIwZDdi
ZTYwNDdmMTdmM2ExMTFlZjU5MTFmMGU4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNl
dERPTVN0cmluZ01hcC5jcHAKQEAgLTE5OSw4ICsxOTksNyBAQCB2b2lkIERhdGFzZXRET01TdHJp
bmdNYXA6OmRlbGV0ZUl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEV4Y2VwdGlvbkNvZGUgZHVtbXk7Ci0gICAg
bV9lbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoY29udmVydFByb3BlcnR5TmFtZVRvQXR0cmlidXRl
TmFtZShuYW1lKSwgZHVtbXkpOworICAgIG1fZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKGNvbnZl
cnRQcm9wZXJ0eU5hbWVUb0F0dHJpYnV0ZU5hbWUobmFtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBkOWU1MmUyMzZkNmExOWJhZDE1
N2Q1ZmVmODUwOGQ5NjE5MmFkNDE5Li5lZmE4Yjk1NDFiMDNkMWQwMGVlM2MzYjgyYzYzZTM4YTYx
NWE0ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEzMDIsOSArMTMwMiw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgZWxzZSBpZiAo
IW1fdGl0bGVFbGVtZW50KSB7CiAgICAgICAgIGlmIChIVE1MRWxlbWVudCogaGVhZEVsZW1lbnQg
PSBoZWFkKCkpIHsKICAgICAgICAgICAgIG1fdGl0bGVFbGVtZW50ID0gY3JlYXRlRWxlbWVudCh0
aXRsZVRhZywgZmFsc2UpOwotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
ICAgICAgICBoZWFkRWxlbWVudC0+YXBwZW5kQ2hpbGQobV90aXRsZUVsZW1lbnQsIGVjKTsKLSAg
ICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAgaGVhZEVsZW1lbnQtPmFwcGVuZENo
aWxkKG1fdGl0bGVFbGVtZW50LCBBU1NFUlRfTkVWRVJfVEhST1dOKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMjUyMSw4ICsyNTE5LDcgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVp
dihjb25zdCBTdHJpbmcmIGVxdWl2LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAgICAgfSBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgInNldC1jb29raWUiKSkgewogICAgICAgICAv
LyBGSVhNRTogbWFrZSBzZXRDb29raWUgd29yayBvbiBYTUwgZG9jdW1lbnRzIHRvbzsgZS5nLiBp
biBjYXNlIG9mIDxodG1sOm1ldGEgLi4uLi4+CiAgICAgICAgIGlmIChpc0hUTUxEb2N1bWVudCgp
KSB7Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOyAvLyBFeGNlcHRpb24gKGZvciBzYW5k
Ym94ZWQgZG9jdW1lbnRzKSBpZ25vcmVkLgotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERv
Y3VtZW50Kj4odGhpcyktPnNldENvb2tpZShjb250ZW50LCBlYyk7CisgICAgICAgICAgICB0aGlz
LT5zZXRDb29raWUoY29udGVudCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGVxdWl2LCAiY29udGVudC1sYW5ndWFnZSIpKQogICAgICAgICBzZXRDb250ZW50
TGFuZ3VhZ2UoY29udGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDlmMzAyYWRlNzliOWFl
ZDI5ZmQ0YjM5MzFmNmZmNWZhZDgwYTI3NmYuLjBiN2RmZWNhOWMxZTY1MzdlM2IyODBiMzIzZWQ1
ODdhMTdmOGIyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zNzksOCArMzc5LDggQEAgcHVi
bGljOgogICAgIGJvb2wgeG1sU3RhbmRhbG9uZSgpIGNvbnN0IHsgcmV0dXJuIG1feG1sU3RhbmRh
bG9uZTsgfQogCiAgICAgdm9pZCBzZXRYTUxFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5n
KSB7IG1feG1sRW5jb2RpbmcgPSBlbmNvZGluZzsgfSAvLyByZWFkLW9ubHkgcHJvcGVydHksIG9u
bHkgdG8gYmUgc2V0IGZyb20gWE1MRG9jdW1lbnRQYXJzZXIKLSAgICB2b2lkIHNldFhNTFZlcnNp
b24oY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0WE1MU3RhbmRh
bG9uZShib29sLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRYTUxWZXJzaW9uKGNvbnN0
IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAg
IHZvaWQgc2V0WE1MU3RhbmRhbG9uZShib29sLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhj
ZXB0aW9uQ29kZSgpKTsKIAogICAgIFN0cmluZyBkb2N1bWVudFVSSSgpIGNvbnN0IHsgcmV0dXJu
IG1fZG9jdW1lbnRVUkk7IH0KICAgICB2b2lkIHNldERvY3VtZW50VVJJKGNvbnN0IFN0cmluZyYp
OwpAQCAtMzkzLDcgKzM5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoVmlzaWJpbGl0
eVN0YXRlQ2hhbmdlRXZlbnQoKTsKICNlbmRpZgogCi0gICAgUGFzc1JlZlB0cjxOb2RlPiBhZG9w
dE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNz
UmVmUHRyPE5vZGU+IGFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9u
Q29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAKICAgICBQYXNzUmVmUHRyPEhUTUxD
b2xsZWN0aW9uPiBpbWFnZXMoKTsKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBlbWJl
ZHMoKTsKQEAgLTc5NSw3ICs3OTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVUaXRsZShF
bGVtZW50KiB0aXRsZUVsZW1lbnQpOwogCiAgICAgU3RyaW5nIGNvb2tpZShFeGNlcHRpb25Db2Rl
JikgY29uc3Q7Ci0gICAgdm9pZCBzZXRDb29raWUoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZvaWQgc2V0Q29va2llKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmID0g
SWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogCiAgICAgU3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAK
aW5kZXggYzhmMTE2M2FhZTRjYzAzZmYyMGQyZjE4MmNlMGRjM2QwYjRlYjQ0Mi4uMGFkZDc1ZWRk
NDY5Mzg0ZGY5MjAyOGM4NTg1NjE3NjJjZjZlMDRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTU1NCwxNCArNTU0LDEzIEBAIHZv
aWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzZXRNYXJrZXJzQWN0aXZlKFJhbmdlKiByYW5n
ZSwgYm9vbCBhY3RpdmUpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoIW1fbWFya2Vycy5p
c0VtcHR5KCkpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTm9kZSogc3RhcnRD
b250YWluZXIgPSByYW5nZS0+c3RhcnRDb250YWluZXIoZWMpOwotICAgIE5vZGUqIGVuZENvbnRh
aW5lciA9IHJhbmdlLT5lbmRDb250YWluZXIoZWMpOworICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVy
ID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7CisgICAgTm9kZSogZW5kQ29udGFpbmVyID0gcmFu
Z2UtPmVuZENvbnRhaW5lcigpOwogCiAgICAgTm9kZSogcGFzdExhc3ROb2RlID0gcmFuZ2UtPnBh
c3RMYXN0Tm9kZSgpOwogICAgIGZvciAoTm9kZSogbm9kZSA9IHJhbmdlLT5maXJzdE5vZGUoKTsg
bm9kZSAhPSBwYXN0TGFzdE5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsK
LSAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gbm9kZSA9PSBzdGFydENvbnRhaW5lciA/IHJhbmdl
LT5zdGFydE9mZnNldChlYykgOiAwOwotICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gbm9kZSA9PSBl
bmRDb250YWluZXIgPyByYW5nZS0+ZW5kT2Zmc2V0KGVjKSA6IElOVF9NQVg7CisgICAgICAgIGlu
dCBzdGFydE9mZnNldCA9IG5vZGUgPT0gc3RhcnRDb250YWluZXIgPyByYW5nZS0+c3RhcnRPZmZz
ZXQoKSA6IDA7CisgICAgICAgIGludCBlbmRPZmZzZXQgPSBub2RlID09IGVuZENvbnRhaW5lciA/
IHJhbmdlLT5lbmRPZmZzZXQoKSA6IElOVF9NQVg7CiAgICAgICAgIHNldE1hcmtlcnNBY3RpdmUo
bm9kZSwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgYWN0aXZlKTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggNmNjMDJlMjBjMjk0OTlmMjRjOWE3ODZjN2QxNjRjZjRhYWRiYzIy
My4uNjE3ZjJjYTg1MTgyMjhiMjM3Mjk5MThjYmY1ODA5OGI1MjI3Y2YwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtMTUxLDkgKzE1MSw2IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gRWxlbWVudDo6ZGVwcmVjYXRlZENyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBTCiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICAvLyBFeGNlcHRpb25zIGFyZSBpZ25v
cmVkIGJlY2F1c2Ugbm9uZSBvdWdodCB0byBoYXBwZW4gaGVyZS4KLSAgICBFeGNlcHRpb25Db2Rl
IGlnbm9yZWRFeGNlcHRpb25Db2RlOwotCiAgICAgLy8gV2UgbmVlZCB0byBwb3AgPGh0bWw+IGFu
ZCA8Ym9keT4gZWxlbWVudHMgYW5kIHJlbW92ZSA8aGVhZD4gdG8KICAgICAvLyBhY2NvbW1vZGF0
ZSBmb2xrcyBwYXNzaW5nIGNvbXBsZXRlIEhUTUwgZG9jdW1lbnRzIHRvIG1ha2UgdGhlCiAgICAg
Ly8gY2hpbGQgb2YgYW4gZWxlbWVudC4KQEAgLTE2OSwxMyArMTY2LDEwIEBAIFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gRWxlbWVudDo6ZGVwcmVjYXRlZENyZWF0ZUNvbnRleHR1YWxGcmFn
bWVudChjb25zdCBTCiAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbmV4dENoaWxkOwogICAgICAg
ICAgICAgZm9yIChSZWZQdHI8Tm9kZT4gY2hpbGQgPSBmaXJzdENoaWxkOyBjaGlsZDsgY2hpbGQg
PSBuZXh0Q2hpbGQpIHsKICAgICAgICAgICAgICAgICBuZXh0Q2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKTsKLSAgICAgICAgICAgICAgICBlbGVtZW50LT5yZW1vdmVDaGlsZChjaGlsZC5nZXQo
KSwgaWdub3JlZEV4Y2VwdGlvbkNvZGUpOwotICAgICAgICAgICAgICAgIEFTU0VSVCghaWdub3Jl
ZEV4Y2VwdGlvbkNvZGUpOwotICAgICAgICAgICAgICAgIGZyYWdtZW50LT5pbnNlcnRCZWZvcmUo
Y2hpbGQsIGVsZW1lbnQsIGlnbm9yZWRFeGNlcHRpb25Db2RlKTsKLSAgICAgICAgICAgICAgICBB
U1NFUlQoIWlnbm9yZWRFeGNlcHRpb25Db2RlKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LT5y
ZW1vdmVDaGlsZChjaGlsZC5nZXQoKSwgQVNTRVJUX05FVkVSX1RIUk9XTik7CisgICAgICAgICAg
ICAgICAgZnJhZ21lbnQtPmluc2VydEJlZm9yZShjaGlsZCwgZWxlbWVudCwgQVNTRVJUX05FVkVS
X1RIUk9XTik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmcmFnbWVudC0+cmVtb3ZlQ2hp
bGQoZWxlbWVudCwgaWdub3JlZEV4Y2VwdGlvbkNvZGUpOwotICAgICAgICAgICAgQVNTRVJUKCFp
Z25vcmVkRXhjZXB0aW9uQ29kZSk7CisgICAgICAgICAgICBmcmFnbWVudC0+cmVtb3ZlQ2hpbGQo
ZWxlbWVudCwgQVNTRVJUX05FVkVSX1RIUk9XTik7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0
dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKQEAgLTIyOCwyNiArMjIyLDE3IEBAIHZvaWQgRWxlbWVu
dDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgIH0KIH0KIAotdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBFeGNl
cHRpb25Db2RlIGVjOwotICAgIHNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZWMpOwotfQotICAg
IAogdm9pZCBFbGVtZW50OjpzZXRDU3RyaW5nQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IGNoYXIqIGNTdHJpbmdWYWx1ZSkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVj
OwotICAgIHNldEF0dHJpYnV0ZShuYW1lLCBBdG9taWNTdHJpbmcoY1N0cmluZ1ZhbHVlKSwgZWMp
OworICAgIHNldEF0dHJpYnV0ZShuYW1lLCBBdG9taWNTdHJpbmcoY1N0cmluZ1ZhbHVlKSk7CiB9
CiAKIHZvaWQgRWxlbWVudDo6c2V0Qm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBib29sIGIpCiB7CiAgICAgaWYgKGIpCiAgICAgICAgIHNldEF0dHJpYnV0ZShuYW1l
LCBlbXB0eUF0b20pOwotICAgIGVsc2UgewotICAgICAgICBFeGNlcHRpb25Db2RlIGV4OwotICAg
ICAgICByZW1vdmVBdHRyaWJ1dGUobmFtZSwgZXgpOwotICAgIH0KKyAgICBlbHNlCisgICAgICAg
IHJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKIH0KIAogTm9kZTo6Tm9kZVR5cGUgRWxlbWVudDo6bm9k
ZVR5cGUoKSBjb25zdApAQCAtMTIzNSw5ICsxMjIwLDcgQEAgU2hhZG93Um9vdCogRWxlbWVudDo6
ZW5zdXJlU2hhZG93Um9vdCgpCiAgICAgaWYgKFNoYWRvd1Jvb3QqIGV4aXN0aW5nUm9vdCA9IHNo
YWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nUm9vdDsKIAotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIHNldFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3Vt
ZW50KCkpLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgc2V0U2hhZG93Um9vdChTaGFkb3dS
b290OjpjcmVhdGUoZG9jdW1lbnQoKSkpOwogICAgIHJldHVybiBzaGFkb3dSb290KCk7CiB9CiAK
QEAgLTE0MTksOSArMTQwMiw4IEBAIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hBdHRyUmVtb3ZhbEV2
ZW50KEF0dHJpYnV0ZSopCiAjaWYgMAogICAgIGlmICghZG9jdW1lbnQoKS0+aGFzTGlzdGVuZXJU
eXBlKERvY3VtZW50OjpET01BVFRSTU9ESUZJRURfTElTVEVORVIpKQogICAgICAgICByZXR1cm47
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgZGlzcGF0Y2hTY29wZWRFdmVudChNdXRh
dGlvbkV2ZW50OjpjcmVhdGUoRE9NQXR0ck1vZGlmaWVkRXZlbnQsIHRydWUsIGF0dHIsIGF0dHIt
PnZhbHVlKCksCi0gICAgICAgIGF0dHItPnZhbHVlKCksIGRvY3VtZW50KCktPmF0dHJOYW1lKGF0
dHItPmlkKCkpLCBNdXRhdGlvbkV2ZW50OjpSRU1PVkFMKSwgZWMpOworICAgICAgICBhdHRyLT52
YWx1ZSgpLCBkb2N1bWVudCgpLT5hdHRyTmFtZShhdHRyLT5pZCgpKSwgTXV0YXRpb25FdmVudDo6
UkVNT1ZBTCksIElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKICNlbmRpZgogfQogCkBAIC0xNDMy
LDkgKzE0MTQsOCBAQCB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoQXR0ckFkZGl0aW9uRXZlbnQoQXR0
cmlidXRlKikKICNpZiAwCiAgICAgaWYgKCFkb2N1bWVudCgpLT5oYXNMaXN0ZW5lclR5cGUoRG9j
dW1lbnQ6OkRPTUFUVFJNT0RJRklFRF9MSVNURU5FUikpCiAgICAgICAgIHJldHVybjsKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZl
bnQ6OmNyZWF0ZShET01BdHRyTW9kaWZpZWRFdmVudCwgdHJ1ZSwgYXR0ciwgYXR0ci0+dmFsdWUo
KSwKLSAgICAgICAgYXR0ci0+dmFsdWUoKSwgZG9jdW1lbnQoKS0+YXR0ck5hbWUoYXR0ci0+aWQo
KSksIE11dGF0aW9uRXZlbnQ6OkFERElUSU9OKSwgZWMpOworICAgICAgICBhdHRyLT52YWx1ZSgp
LCBkb2N1bWVudCgpLT5hdHRyTmFtZShhdHRyLT5pZCgpKSwgTXV0YXRpb25FdmVudDo6QURESVRJ
T04pLCBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAjZW5kaWYKIH0KIApAQCAtMTkyOCw4ICsx
OTA5LDcgQEAgaW50IEVsZW1lbnQ6OmdldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CiB2b2lkIEVsZW1lbnQ6OnNldEludGVncmFsQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGludCB2YWx1ZSkKIHsK
ICAgICAvLyBGSVhNRTogTmVlZCBhbiBBdG9taWNTdHJpbmcgdmVyc2lvbiBvZiBTdHJpbmc6Om51
bWJlci4KLSAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGVO
YW1lLCBTdHJpbmc6Om51bWJlcih2YWx1ZSksIGVjKTsKKyAgICBzZXRBdHRyaWJ1dGUoYXR0cmli
dXRlTmFtZSwgU3RyaW5nOjpudW1iZXIodmFsdWUpKTsKIH0KIAogdW5zaWduZWQgRWxlbWVudDo6
Z2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKSBjb25zdApAQCAtMTk0MCw4ICsxOTIwLDcgQEAgdW5zaWduZWQgRWxlbWVudDo6Z2V0
VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW0KIHZvaWQgRWxlbWVudDo6c2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCB1bnNpZ25lZCB2YWx1ZSkKIHsKICAgICAvLyBGSVhN
RTogTmVlZCBhbiBBdG9taWNTdHJpbmcgdmVyc2lvbiBvZiBTdHJpbmc6Om51bWJlci4KLSAgICBF
eGNlcHRpb25Db2RlIGVjOwotICAgIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBTdHJpbmc6
Om51bWJlcih2YWx1ZSksIGVjKTsKKyAgICBzZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgU3Ry
aW5nOjpudW1iZXIodmFsdWUpKTsKIH0KIAogI2lmIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAppbmRleCA5NDQzMmI0NWFkZmMzNGU0YTk2YmQ2OTE2MzQ3NzcxOTAwNWViZGZhLi43ZGJlNWQ0
ZGU4NmFlNzlkMWE2YjkyNjJhZmJjY2M2NTEyYjIzN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAg
LTExMSw4ICsxMTEsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIHZvaWQgc2V0QXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4
Y2VwdGlvbkNvZGUoKSk7CisgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogCiAgICAg
Ly8gVHlwZWQgZ2V0dGVycyBhbmQgc2V0dGVycyBmb3IgbGFuZ3VhZ2UgYmluZGluZ3MuCiAgICAg
aW50IGdldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUpIGNvbnN0OwpAQCAtMTMzLDggKzEzMyw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OwogICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgZ2V0QXR0cmlidXRlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkks
IGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lKSBjb25zdDsKIAotICAgIHZvaWQgc2V0QXR0cmlidXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0QXR0cmlidXRlTlMoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYsIEZyYWdtZW50U2NyaXB0aW5nUGVy
bWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CisgICAgdm9pZCBzZXRBdHRyaWJ1
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBF
eGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKKyAgICB2b2lkIHNldEF0
dHJpYnV0ZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNT
dHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlv
bkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCksIEZyYWdtZW50U2NyaXB0aW5nUGVybWlz
c2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CiAKICAgICBib29sIGlzSWRBdHRyaWJ1
dGVOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGdldElkQXR0cmlidXRlKCkgY29uc3Q7CkBAIC0xNzUsMTQgKzE3NSwxNCBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJucyB0aGUgYWJzb2x1dGUgYm91bmRpbmcgYm94IHRyYW5zbGF0ZWQgaW50
byBzY3JlZW4gY29vcmRpbmF0ZXM6CiAgICAgSW50UmVjdCBzY3JlZW5SZWN0KCkgY29uc3Q7CiAK
LSAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNl
VVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgPSBJZ25v
cmluZ0V4Y2VwdGlvbkNvZGUoKSk7CisgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBT
dHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNv
ZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogCiAgICAgUGFzc1JlZlB0cjxBdHRyPiBn
ZXRBdHRyaWJ1dGVOb2RlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgUGFzc1JlZlB0cjxBdHRy
PiBnZXRBdHRyaWJ1dGVOb2RlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0
cmluZyYgbG9jYWxOYW1lKTsKLSAgICBQYXNzUmVmUHRyPEF0dHI+IHNldEF0dHJpYnV0ZU5vZGUo
QXR0ciosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPEF0dHI+IHNldEF0dHJpYnV0
ZU5vZGVOUyhBdHRyKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8QXR0cj4gcmVt
b3ZlQXR0cmlidXRlTm9kZShBdHRyKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8
QXR0cj4gc2V0QXR0cmlidXRlTm9kZShBdHRyKiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4
Y2VwdGlvbkNvZGUoKSk7CisgICAgUGFzc1JlZlB0cjxBdHRyPiBzZXRBdHRyaWJ1dGVOb2RlTlMo
QXR0ciosIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAgIFBh
c3NSZWZQdHI8QXR0cj4gcmVtb3ZlQXR0cmlidXRlTm9kZShBdHRyKiwgRXhjZXB0aW9uQ29kZSYg
PSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAgICAgCiAgICAgdmlydHVhbCBDU1NTdHlsZURl
Y2xhcmF0aW9uKiBzdHlsZSgpOwogCkBAIC0yMDksNyArMjA5LDYgQEAgcHVibGljOgogICAgIFN0
cmluZyBub2RlTmFtZVByZXNlcnZpbmdDYXNlKCkgY29uc3Q7CiAKICAgICAvLyBjb252ZW5pZW5j
ZSBtZXRob2RzIHdoaWNoIGlnbm9yZSBleGNlcHRpb25zCi0gICAgdm9pZCBzZXRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwogICAgIHZv
aWQgc2V0Qm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBib29sKTsK
ICAgICAvLyBQbGVhc2UgZG9uJ3QgdXNlIHNldENTdHJpbmdBdHRyaWJ1dGUgaW4gcGVyZm9ybWFu
Y2Utc2Vuc2l0aXZlIGNvZGU7CiAgICAgLy8gdXNlIGEgc3RhdGljIEF0b21pY1N0cmluZyB2YWx1
ZSBpbnN0ZWFkIHRvIGF2b2lkIHRoZSBjb252ZXJzaW9uIG92ZXJoZWFkLgpAQCAtMjMxLDEyICsy
MzAsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWNhbGNTdHlsZShTdHlsZUNoYW5n
ZSA9IE5vQ2hhbmdlKTsKIAogICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QoKSBjb25zdDsKLSAg
ICB2b2lkIHNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZvaWQgc2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+LCBFeGNl
cHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKICAgICBTaGFkb3dSb290KiBl
bnN1cmVTaGFkb3dSb290KCk7CiAgICAgdm9pZCByZW1vdmVTaGFkb3dSb290KCk7CiAKICAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKLSAgICB2
b2lkIHNldFNoYWRvd1BzZXVkb0lkKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIHNldFNoYWRvd1BzZXVkb0lkKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogCiAgICAgUmVuZGVyU3R5bGUq
IGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBOT1BTRVVETyk7CiAKQEAgLTI5NSw3ICsyOTQsNyBA
QCBwdWJsaWM6CiAgICAgRWxlbWVudCogbmV4dEVsZW1lbnRTaWJsaW5nKCkgY29uc3Q7CiAgICAg
dW5zaWduZWQgY2hpbGRFbGVtZW50Q291bnQoKSBjb25zdDsKIAotICAgIGJvb2wgd2Via2l0TWF0
Y2hlc1NlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgYm9vbCB3ZWJraXRNYXRjaGVzU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4
Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogCiAgICAgRE9NVG9rZW5M
aXN0KiBjbGFzc0xpc3QoKTsKICAgICBET01Ub2tlbkxpc3QqIG9wdGlvbmFsQ2xhc3NMaXN0KCkg
Y29uc3Q7CkBAIC0zOTAsNyArMzg5LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2b2lk
IHNjcm9sbEJ5VW5pdHMoaW50IHVuaXRzLCBTY3JvbGxHcmFudWxhcml0eSk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlv
bkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwogICAgIHZpcnR1YWwgTm9kZVR5cGUg
bm9kZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2Rl
VHlwZSkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZ25vcmluZ0V4
Y2VwdGlvbkNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZ25vcmluZ0V4Y2VwdGlvbkNvZGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hYjU2YjFiZWVkZmYyOTZiZmZkM2MwZjVlMDE5NTJkMTFkY2U4ZmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lnbm9yaW5nRXhjZXB0aW9uQ29k
ZS5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBJZ25vcmluZ0V4Y2VwdGlvbkNvZGVfaAorI2RlZmlu
ZSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGVfaAorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworCitj
bGFzcyBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUgeworcHVibGljOgorICAgIElnbm9yaW5nRXhjZXB0
aW9uQ29kZSgpOworICAgIG9wZXJhdG9yIEV4Y2VwdGlvbkNvZGUmICgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgbXV0YWJsZSBFeGNlcHRpb25Db2RlIG1fY29k
ZTsKK307CisKK2lubGluZSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGU6Oklnbm9yaW5nRXhjZXB0aW9u
Q29kZSgpCisjaWYgIWRlZmluZWQoQVNTRVJUX0RJU0FCTEVEKQorICAgIDogbV9jb2RlKDApCisj
ZW5kaWYKK3sKK30KKworY2xhc3MgTmV2ZXJUaHJvd25XaXRoTG9jYXRpb24gOiBwdWJsaWMgSWdu
b3JpbmdFeGNlcHRpb25Db2RlIHsKK3B1YmxpYzoKKyAgICBOZXZlclRocm93bldpdGhMb2NhdGlv
bihjb25zdCBjaGFyKiwgc2l6ZV90LCBjb25zdCBjaGFyKik7CisgICAgfk5ldmVyVGhyb3duV2l0
aExvY2F0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgY29uc3QgY2hhciogbV9maWxlOworICAgIHNp
emVfdCBtX2xpbmU7CisgICAgY29uc3QgY2hhciogbV9mdW5jdGlvbjsKK307CisKK2lubGluZSBO
ZXZlclRocm93bldpdGhMb2NhdGlvbjo6TmV2ZXJUaHJvd25XaXRoTG9jYXRpb24oY29uc3QgY2hh
ciogZmlsZSwgc2l6ZV90IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uKQorICAgIDogbV9maWxl
KGZpbGUpLCBtX2xpbmUobGluZSksIG1fZnVuY3Rpb24oZnVuY3Rpb24pCit7Cit9CisKK2lubGlu
ZSBOZXZlclRocm93bldpdGhMb2NhdGlvbjo6fk5ldmVyVGhyb3duV2l0aExvY2F0aW9uKCkKK3sK
KyAgICBBU1NFUlRfQVQoIW1fY29kZSwgbV9maWxlLCBtX2xpbmUsIG1fZnVuY3Rpb24pOworfQor
Cit9CisKKyNpZiBBU1NFUlRfRElTQUJMRUQKKyNkZWZpbmUgQVNTRVJUX05FVkVSX1RIUk9XTiBX
ZWJDb3JlOjpJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKQorI2Vsc2UKKyNkZWZpbmUgQVNTRVJUX05F
VkVSX1RIUk9XTiBXZWJDb3JlOjpOZXZlclRocm93bldpdGhMb2NhdGlvbihfX0ZJTEVfXywgX19M
SU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04pCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VQb3J0LmNwcAppbmRleCA0NzJiOWIxZWZhMzVhZTdiYTczMGZkMzAyNTNjYWRmM2Nh
NTcyZTI2Li5lYTM3ZTg2OGIxMmY1YzliZTc2ZWQ3ZTkxOTE4M2E2ZmZhNDNiNWUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTE4Miw5ICsxODIsNyBAQCB2b2lkIE1lc3NhZ2VQ
b3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkKICAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+
IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKm1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgZXZlbnREYXRhLT5jaGFubmVscygpKTsKICAgICAgICAgUmVmUHRyPEV2ZW50PiBldnQg
PSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShwb3J0cy5yZWxlYXNlKCksIGV2ZW50RGF0YS0+bWVzc2Fn
ZSgpKTsKIAotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgZGlzcGF0Y2hF
dmVudChldnQucmVsZWFzZSgpLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBk
aXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlKCksIEFTU0VSVF9ORVZFUl9USFJPV04pOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDcxMTc0MTk1NDczOGM0ZGVkMjVkYWRjNDkxNzY5YjVi
ODg2MTUwMzQuLjIzMDUwOWViZDA5YzBmNWJiY2NiZWMxNThjYzY4NGIzNjkzZTlkYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTcwMyw4ICs3MDMsNyBAQCB2b2lkIE5vZGU6Om5vcm1hbGl6ZSgpCiAg
ICAgICAgIGlmICghdGV4dC0+bGVuZ3RoKCkpIHsKICAgICAgICAgICAgIC8vIENhcmUgbXVzdCBi
ZSB0YWtlbiB0byBnZXQgdGhlIG5leHQgbm9kZSBiZWZvcmUgcmVtb3ZpbmcgdGhlIGN1cnJlbnQg
bm9kZS4KICAgICAgICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlUG9zdE9yZGVy
KCk7Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICAgICAgdGV4dC0+cmVt
b3ZlKGVjKTsKKyAgICAgICAgICAgIHRleHQtPnJlbW92ZSgpOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KIApAQCAtNzE2LDE3ICs3MTUsMTUgQEAgdm9pZCBOb2RlOjpub3JtYWxp
emUoKQogCiAgICAgICAgICAgICAvLyBSZW1vdmUgZW1wdHkgdGV4dCBub2Rlcy4KICAgICAgICAg
ICAgIGlmICghbmV4dFRleHQtPmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYzsKLSAgICAgICAgICAgICAgICBuZXh0VGV4dC0+cmVtb3ZlKGVjKTsKKyAgICAgICAg
ICAgICAgICBuZXh0VGV4dC0+cmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIEJvdGggbm9uLWVtcHR5IHRleHQgbm9kZXMu
IE1lcmdlIHRoZW0uCiAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB0ZXh0LT5sZW5ndGgo
KTsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgICAgICB0ZXh0LT5hcHBl
bmREYXRhKG5leHRUZXh0LT5kYXRhKCksIGVjKTsKKyAgICAgICAgICAgIHRleHQtPmFwcGVuZERh
dGEobmV4dFRleHQtPmRhdGEoKSk7CiAgICAgICAgICAgICBkb2N1bWVudCgpLT50ZXh0Tm9kZXNN
ZXJnZWQobmV4dFRleHQuZ2V0KCksIG9mZnNldCk7Ci0gICAgICAgICAgICBuZXh0VGV4dC0+cmVt
b3ZlKGVjKTsKKyAgICAgICAgICAgIG5leHRUZXh0LT5yZW1vdmUoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlUG9zdE9yZGVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aAppbmRleCA3MjUzN2NiODY2OWZkNjY4N2NkOGJkODNiZTJlNWNiOWU0OTdmMDFiLi5mZDE3NWE3
MTljYjQ5MzQwMDliNzYyMWYxODQ1YmZkNWVmOGM0NzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNkZWZpbmUgTm9kZV9oCiAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2lu
Y2x1ZGUgIklnbm9yaW5nRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIktVUkxIYXNoLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFi
bGUuaCIKQEAgLTE2MCwxOCArMTYxLDE4IEBAIHB1YmxpYzoKICAgICAvLyBUaGVzZSBzaG91bGQg
YWxsIGFjdHVhbGx5IHJldHVybiBhIG5vZGUsIGJ1dCB0aGlzIGlzIG9ubHkgaW1wb3J0YW50IGZv
ciBsYW5ndWFnZSBiaW5kaW5ncywKICAgICAvLyB3aGljaCB3aWxsIGFscmVhZHkga25vdyBhbmQg
aG9sZCBhIHJlZiBvbiB0aGUgcmlnaHQgbm9kZSB0byByZXR1cm4uIFJldHVybmluZyBib29sIGFs
bG93cwogICAgIC8vIHRoZXNlIG1ldGhvZHMgdG8gYmUgbW9yZSBlZmZpY2llbnQgc2luY2UgdGhl
eSBkb24ndCBuZWVkIHRvIHJldHVybiBhIHJlZgotICAgIGJvb2wgaW5zZXJ0QmVmb3JlKFBhc3NS
ZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlcHRpb25Db2RlJiwgYm9v
bCBzaG91bGRMYXp5QXR0YWNoID0gZmFsc2UpOwotICAgIGJvb2wgcmVwbGFjZUNoaWxkKFBhc3NS
ZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJiwgYm9v
bCBzaG91bGRMYXp5QXR0YWNoID0gZmFsc2UpOwotICAgIGJvb2wgcmVtb3ZlQ2hpbGQoTm9kZSog
Y2hpbGQsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBib29sIGFwcGVuZENoaWxkKFBhc3NSZWZQdHI8
Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmLCBib29sIHNob3VsZExhenlBdHRhY2ggPSBm
YWxzZSk7CisgICAgYm9vbCBpbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwg
Tm9kZSogcmVmQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCks
IGJvb2wgc2hvdWxkTGF6eUF0dGFjaCA9IGZhbHNlKTsKKyAgICBib29sIHJlcGxhY2VDaGlsZChQ
YXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYg
PSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSwgYm9vbCBzaG91bGRMYXp5QXR0YWNoID0gZmFsc2Up
OworICAgIGJvb2wgcmVtb3ZlQ2hpbGQoTm9kZSogY2hpbGQsIEV4Y2VwdGlvbkNvZGUmID0gSWdu
b3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAgIGJvb2wgYXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxO
b2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSwg
Ym9vbCBzaG91bGRMYXp5QXR0YWNoID0gZmFsc2UpOwogCi0gICAgdm9pZCByZW1vdmUoRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgcmVtb3ZlKEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNl
cHRpb25Db2RlKCkpOwogICAgIGJvb2wgaGFzQ2hpbGROb2RlcygpIGNvbnN0IHsgcmV0dXJuIGZp
cnN0Q2hpbGQoKTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9v
bCBkZWVwKSA9IDA7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUoKSBjb25zdCB7
IHJldHVybiB2aXJ0dWFsTG9jYWxOYW1lKCk7IH0KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWVzcGFjZVVSSSgpIGNvbnN0IHsgcmV0dXJuIHZpcnR1YWxOYW1lc3BhY2VVUkkoKTsgfQogICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KCkgY29uc3QgeyByZXR1cm4gdmlydHVhbFByZWZp
eCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmLCBF
eGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHNldFByZWZpeChjb25zdCBBdG9taWNT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKICAgICB2
b2lkIG5vcm1hbGl6ZSgpOwogCiAgICAgYm9vbCBpc1NhbWVOb2RlKE5vZGUqIG90aGVyKSBjb25z
dCB7IHJldHVybiB0aGlzID09IG90aGVyOyB9CkBAIC0xODIsNyArMTgzLDcgQEAgcHVibGljOgog
ICAgIFN0cmluZyBsb29rdXBOYW1lc3BhY2VQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VVUkksIGNvbnN0IEVsZW1lbnQqIG9yaWdpbmFsRWxlbWVudCkgY29uc3Q7CiAgICAgCiAg
ICAgU3RyaW5nIHRleHRDb250ZW50KGJvb2wgY29udmVydEJSc1RvTmV3bGluZXMgPSBmYWxzZSkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRUZXh0Q29udGVudChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CisgICAgdm9pZCBzZXRUZXh0Q29udGVudChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKICAgICAKICAgICBOb2RlKiBsYXN0RGVz
Y2VuZGFudCgpIGNvbnN0OwogICAgIE5vZGUqIGZpcnN0RGVzY2VuZGFudCgpIGNvbnN0OwpAQCAt
NDA2LDE2ICs0MDcsMTYgQEAgcHVibGljOgogICAgIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNOb2Rl
UG9zdE9yZGVyKGNvbnN0IE5vZGUqIHN0YXlXaXRoaW4gPSAwKSBjb25zdDsKICAgICBOb2RlKiB0
cmF2ZXJzZVByZXZpb3VzU2libGluZ1Bvc3RPcmRlcihjb25zdCBOb2RlKiBzdGF5V2l0aGluID0g
MCkgY29uc3Q7CiAKLSAgICB2b2lkIGNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYg
cHJlZml4LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBjaGVja1NldFByZWZpeChjb25zdCBB
dG9taWNTdHJpbmcmIHByZWZpeCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNv
ZGUoKSk7CiAgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZihjb25zdCBOb2RlKikgY29uc3Q7CiAgICAg
Ym9vbCBjb250YWlucyhjb25zdCBOb2RlKikgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc0luY2x1
ZGluZ1NoYWRvd0RPTShOb2RlKik7CiAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGRv
IHN0cmljdCBlcnJvci1jaGVja2luZyB3aGVuIGFkZGluZyBjaGlsZHJlbiB2aWEKICAgICAvLyB0
aGUgcHVibGljIERPTSBBUEkgKGUuZy4sIGFwcGVuZENoaWxkKCkpLgotICAgIHZvaWQgY2hlY2tB
ZGRDaGlsZChOb2RlKiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYpOyAvLyBFcnJvci1jaGVja2lu
ZyB3aGVuIGFkZGluZyB2aWEgdGhlIERPTSBBUEkKKyAgICB2b2lkIGNoZWNrQWRkQ2hpbGQoTm9k
ZSogbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOyAv
LyBFcnJvci1jaGVja2luZyB3aGVuIGFkZGluZyB2aWEgdGhlIERPTSBBUEkKIAotICAgIHZvaWQg
Y2hlY2tSZXBsYWNlQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlcHRp
b25Db2RlJik7CisgICAgdm9pZCBjaGVja1JlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9k
ZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwog
ICAgIHZpcnR1YWwgYm9vbCBjYW5SZXBsYWNlQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9s
ZENoaWxkKTsKICAgICAKICAgICAvLyBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHJhbmdlIG9m
ZnNldHMgdXNlIGNoYXJhY3RlcnMgb3Igbm9kZSBpbmRpY2VzLgpAQCAtNTI0LDggKzUyNSw4IEBA
IHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRFbGVtZW50c0J5TmFtZShjb25z
dCBTdHJpbmcmIGVsZW1lbnROYW1lKTsKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lcyk7CiAKLSAgICBQYXNzUmVm
UHRyPEVsZW1lbnQ+IHF1ZXJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBxdWVyeVNlbGVjdG9yQWxsKGNv
bnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxF
bGVtZW50PiBxdWVyeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25D
b2RlJiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKKyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0
PiBxdWVyeVNlbGVjdG9yQWxsKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25Db2Rl
JiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKIAogICAgIHVuc2lnbmVkIHNob3J0IGNvbXBh
cmVEb2N1bWVudFBvc2l0aW9uKE5vZGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggZjdmMGM3
YTExMjhlMTk5MWQxZjIwNmVhOTQ0MjdjNmJhNmZmMjBhYy4uYjZkODNlYzQyNjE0ZTQ1OTAwNmMw
MmVlMWIxNDVkMTU2YzExNzY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Jhbmdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC04OCwxMSArODgsOCBA
QCBpbmxpbmUgUmFuZ2U6OlJhbmdlKFBhc3NSZWZQdHI8RG9jdW1lbnQ+IG93bmVyRG9jdW1lbnQs
IFBhc3NSZWZQdHI8Tm9kZT4gc3RhcnRDbwogCiAgICAgLy8gU2ltcGx5IHNldHRpbmcgdGhlIGNv
bnRhaW5lcnMgYW5kIG9mZnNldHMgZGlyZWN0bHkgd291bGQgbm90IGRvIGFueSBvZiB0aGUgY2hl
Y2tpbmcKICAgICAvLyB0aGF0IHNldFN0YXJ0IGFuZCBzZXRFbmQgZG8sIHNvIHdlIGNhbGwgdGhv
c2UgZnVuY3Rpb25zLgotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHNldFN0YXJ0KHN0
YXJ0Q29udGFpbmVyLCBzdGFydE9mZnNldCwgZWMpOwotICAgIEFTU0VSVCghZWMpOwotICAgIHNl
dEVuZChlbmRDb250YWluZXIsIGVuZE9mZnNldCwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAg
IHNldFN0YXJ0KHN0YXJ0Q29udGFpbmVyLCBzdGFydE9mZnNldCwgQVNTRVJUX05FVkVSX1RIUk9X
Tik7CisgICAgc2V0RW5kKGVuZENvbnRhaW5lciwgZW5kT2Zmc2V0LCBBU1NFUlRfTkVWRVJfVEhS
T1dOKTsKIH0KIAogUGFzc1JlZlB0cjxSYW5nZT4gUmFuZ2U6OmNyZWF0ZShQYXNzUmVmUHRyPERv
Y3VtZW50PiBvd25lckRvY3VtZW50LCBQYXNzUmVmUHRyPE5vZGU+IHN0YXJ0Q29udGFpbmVyLCBp
bnQgc3RhcnRPZmZzZXQsIFBhc3NSZWZQdHI8Tm9kZT4gZW5kQ29udGFpbmVyLCBpbnQgZW5kT2Zm
c2V0KQpAQCAtMTU5MCwxMCArMTU4Nyw5IEBAIFBvc2l0aW9uIFJhbmdlOjplZGl0aW5nU3RhcnRQ
b3NpdGlvbigpIGNvbnN0CiAgICAgaWYgKHZpc2libGVQb3NpdGlvbi5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIFBvc2l0aW9uKCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAv
LyBpZiB0aGUgc2VsZWN0aW9uIGlzIGEgY2FyZXQsIGp1c3QgcmV0dXJuIHRoZSBwb3NpdGlvbiwg
c2luY2UgdGhlIHN0eWxlCiAgICAgLy8gYmVoaW5kIHVzIGlzIHJlbGV2YW50Ci0gICAgaWYgKGNv
bGxhcHNlZChlYykpCisgICAgaWYgKGNvbGxhcHNlZCgpKQogICAgICAgICByZXR1cm4gdmlzaWJs
ZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CiAKICAgICAvLyBpZiB0aGUgc2VsZWN0aW9uIHN0
YXJ0cyBqdXN0IGJlZm9yZSBhIHBhcmFncmFwaCBicmVhaywgc2tpcCBvdmVyIGl0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZS5oCmluZGV4IGFiOGM1NTU5MmRjOTJkMDAyMWI3YmY5YjBlZjg2YjYzZGYwOTEwZjYuLjU5Y2I1
ZWJhZTAzMjljZDI3YzIyOWUyMDAwYjg0YWZkYTQxYjVlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCkBAIC02
MSw0NCArNjEsNDQgQEAgcHVibGljOgogICAgIGludCBzdGFydE9mZnNldChFeGNlcHRpb25Db2Rl
JikgY29uc3Q7CiAgICAgTm9kZSogZW5kQ29udGFpbmVyKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsK
ICAgICBpbnQgZW5kT2Zmc2V0KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBib29sIGNvbGxh
cHNlZChFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgYm9vbCBjb2xsYXBzZWQoRXhjZXB0aW9u
Q29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSkgY29uc3Q7CiAKLSAgICBOb2RlKiBjb21t
b25BbmNlc3RvckNvbnRhaW5lcihFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgTm9kZSogY29t
bW9uQW5jZXN0b3JDb250YWluZXIoRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNv
ZGUoKSkgY29uc3Q7CiAgICAgc3RhdGljIE5vZGUqIGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKE5v
ZGUqIGNvbnRhaW5lckEsIE5vZGUqIGNvbnRhaW5lckIpOwotICAgIHZvaWQgc2V0U3RhcnQoUGFz
c1JlZlB0cjxOb2RlPiBjb250YWluZXIsIGludCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICB2b2lkIHNldEVuZChQYXNzUmVmUHRyPE5vZGU+IGNvbnRhaW5lciwgaW50IG9mZnNldCwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgY29sbGFwc2UoYm9vbCB0b1N0YXJ0LCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgYm9vbCBpc1BvaW50SW5SYW5nZShOb2RlKiByZWZOb2RlLCBpbnQgb2Zmc2V0
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgc2hvcnQgY29tcGFyZVBvaW50KE5vZGUqIHJlZk5vZGUs
IGludCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICB2b2lkIHNldFN0YXJ0KFBh
c3NSZWZQdHI8Tm9kZT4gY29udGFpbmVyLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiA9IEln
bm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKKyAgICB2b2lkIHNldEVuZChQYXNzUmVmUHRyPE5vZGU+
IGNvbnRhaW5lciwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlv
bkNvZGUoKSk7CisgICAgdm9pZCBjb2xsYXBzZShib29sIHRvU3RhcnQsIEV4Y2VwdGlvbkNvZGUm
ID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAgIGJvb2wgaXNQb2ludEluUmFuZ2UoTm9k
ZSogcmVmTm9kZSwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlv
bkNvZGUoKSk7CisgICAgc2hvcnQgY29tcGFyZVBvaW50KE5vZGUqIHJlZk5vZGUsIGludCBvZmZz
ZXQsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpIGNvbnN0OwogICAg
IGVudW0gQ29tcGFyZVJlc3VsdHMgeyBOT0RFX0JFRk9SRSwgTk9ERV9BRlRFUiwgTk9ERV9CRUZP
UkVfQU5EX0FGVEVSLCBOT0RFX0lOU0lERSB9OwotICAgIENvbXBhcmVSZXN1bHRzIGNvbXBhcmVO
b2RlKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBDb21wYXJlUmVz
dWx0cyBjb21wYXJlTm9kZShOb2RlKiByZWZOb2RlLCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5n
RXhjZXB0aW9uQ29kZSgpKSBjb25zdDsKICAgICBlbnVtIENvbXBhcmVIb3cgeyBTVEFSVF9UT19T
VEFSVCwgU1RBUlRfVE9fRU5ELCBFTkRfVE9fRU5ELCBFTkRfVE9fU1RBUlQgfTsKLSAgICBzaG9y
dCBjb21wYXJlQm91bmRhcnlQb2ludHMoQ29tcGFyZUhvdywgY29uc3QgUmFuZ2UqIHNvdXJjZVJh
bmdlLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgc3RhdGljIHNob3J0IGNvbXBhcmVCb3Vu
ZGFyeVBvaW50cyhOb2RlKiBjb250YWluZXJBLCBpbnQgb2Zmc2V0QSwgTm9kZSogY29udGFpbmVy
QiwgaW50IG9mZnNldEIsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0aWMgc2hvcnQgY29tcGFy
ZUJvdW5kYXJ5UG9pbnRzKGNvbnN0IFJhbmdlQm91bmRhcnlQb2ludCYgYm91bmRhcnlBLCBjb25z
dCBSYW5nZUJvdW5kYXJ5UG9pbnQmIGJvdW5kYXJ5QiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHNo
b3J0IGNvbXBhcmVCb3VuZGFyeVBvaW50cyhDb21wYXJlSG93LCBjb25zdCBSYW5nZSogc291cmNl
UmFuZ2UsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpIGNvbnN0Owor
ICAgIHN0YXRpYyBzaG9ydCBjb21wYXJlQm91bmRhcnlQb2ludHMoTm9kZSogY29udGFpbmVyQSwg
aW50IG9mZnNldEEsIE5vZGUqIGNvbnRhaW5lckIsIGludCBvZmZzZXRCLCBFeGNlcHRpb25Db2Rl
JiA9IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKKyAgICBzdGF0aWMgc2hvcnQgY29tcGFyZUJv
dW5kYXJ5UG9pbnRzKGNvbnN0IFJhbmdlQm91bmRhcnlQb2ludCYgYm91bmRhcnlBLCBjb25zdCBS
YW5nZUJvdW5kYXJ5UG9pbnQmIGJvdW5kYXJ5QiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4
Y2VwdGlvbkNvZGUoKSk7CiAgICAgYm9vbCBib3VuZGFyeVBvaW50c1ZhbGlkKCkgY29uc3Q7CiAg
ICAgYm9vbCBpbnRlcnNlY3RzTm9kZShOb2RlKiByZWZOb2RlLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgdm9pZCBkZWxldGVDb250ZW50cyhFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBleHRyYWN0Q29udGVudHMoRXhjZXB0aW9uQ29kZSYpOwotICAgIFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY2xvbmVDb250ZW50cyhFeGNlcHRpb25Db2RlJik7
CisgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBleHRyYWN0Q29udGVudHMoRXhjZXB0
aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CisgICAgUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBjbG9uZUNvbnRlbnRzKEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNl
cHRpb25Db2RlKCkpOwogICAgIHZvaWQgaW5zZXJ0Tm9kZShQYXNzUmVmUHRyPE5vZGU+LCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgU3RyaW5nIHRvU3RyaW5nKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsK
KyAgICBTdHJpbmcgdG9TdHJpbmcoRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNv
ZGUoKSkgY29uc3Q7CiAKICAgICBTdHJpbmcgdG9IVE1MKCkgY29uc3Q7CiAgICAgU3RyaW5nIHRl
eHQoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlQ29u
dGV4dHVhbEZyYWdtZW50KGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OworICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlQ29udGV4dHVhbEZyYWdt
ZW50KGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlv
bkNvZGUoKSkgY29uc3Q7CiAKLSAgICB2b2lkIGRldGFjaChFeGNlcHRpb25Db2RlJik7CisgICAg
dm9pZCBkZXRhY2goRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAg
ICAgUGFzc1JlZlB0cjxSYW5nZT4gY2xvbmVSYW5nZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAK
LSAgICB2b2lkIHNldFN0YXJ0QWZ0ZXIoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lk
IHNldEVuZEJlZm9yZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0RW5kQWZ0
ZXIoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNlbGVjdE5vZGUoTm9kZSosIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNlbGVjdE5vZGVDb250ZW50cyhOb2RlKiwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIHZvaWQgc3Vycm91bmRDb250ZW50cyhQYXNzUmVmUHRyPE5vZGU+LCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZXRTdGFydEJlZm9yZShOb2RlKiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgc2V0U3RhcnRBZnRlcihOb2RlKiwgRXhjZXB0aW9uQ29kZSYgPSBJ
Z25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CisgICAgdm9pZCBzZXRFbmRCZWZvcmUoTm9kZSosIEV4
Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAgIHZvaWQgc2V0RW5k
QWZ0ZXIoTm9kZSosIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOwor
ICAgIHZvaWQgc2VsZWN0Tm9kZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2Vw
dGlvbkNvZGUoKSk7CisgICAgdm9pZCBzZWxlY3ROb2RlQ29udGVudHMoTm9kZSosIEV4Y2VwdGlv
bkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkpOworICAgIHZvaWQgc3Vycm91bmRDb250
ZW50cyhQYXNzUmVmUHRyPE5vZGU+LCBFeGNlcHRpb25Db2RlJiA9IElnbm9yaW5nRXhjZXB0aW9u
Q29kZSgpKTsKKyAgICB2b2lkIHNldFN0YXJ0QmVmb3JlKE5vZGUqLCBFeGNlcHRpb25Db2RlJiA9
IElnbm9yaW5nRXhjZXB0aW9uQ29kZSgpKTsKIAogICAgIGNvbnN0IFBvc2l0aW9uIHN0YXJ0UG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0LnRvUG9zaXRpb24oKTsgfQogICAgIGNvbnN0
IFBvc2l0aW9uIGVuZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbmQudG9Qb3NpdGlvbigp
OyB9CkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgIC8vIEV4cGFuZCByYW5nZSB0byBh
IHVuaXQgKHdvcmQgb3Igc2VudGVuY2Ugb3IgYmxvY2sgb3IgZG9jdW1lbnQpIGJvdW5kYXJ5Lgog
ICAgIC8vIFBsZWFzZSByZWZlciB0byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjc2MzIgY29tbWVudCAjNSAKICAgICAvLyBmb3IgZGV0YWlscy4KLSAgICB2b2lkIGV4
cGFuZChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBleHBhbmQoY29u
c3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAK
ICAgICBQYXNzUmVmUHRyPENsaWVudFJlY3RMaXN0PiBnZXRDbGllbnRSZWN0cygpIGNvbnN0Owog
ICAgIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgY29uc3Q7
CkBAIC0xNDUsMTkgKzE0NSwxOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXREb2N1bWVudChE
b2N1bWVudCopOwogCi0gICAgTm9kZSogY2hlY2tOb2RlV09mZnNldChOb2RlKiwgaW50IG9mZnNl
dCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgIHZvaWQgY2hlY2tOb2RlQkEoTm9kZSosIEV4
Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICB2b2lkIGNoZWNrRGVsZXRlRXh0cmFjdChFeGNlcHRp
b25Db2RlJik7CisgICAgTm9kZSogY2hlY2tOb2RlV09mZnNldChOb2RlKiwgaW50IG9mZnNldCwg
RXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSkgY29uc3Q7CisgICAgdm9p
ZCBjaGVja05vZGVCQShOb2RlKiwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNv
ZGUoKSkgY29uc3Q7CisgICAgdm9pZCBjaGVja0RlbGV0ZUV4dHJhY3QoRXhjZXB0aW9uQ29kZSYg
PSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAgICAgYm9vbCBjb250YWluZWRCeVJlYWRPbmx5
KCkgY29uc3Q7CiAgICAgaW50IG1heFN0YXJ0T2Zmc2V0KCkgY29uc3Q7CiAgICAgaW50IG1heEVu
ZE9mZnNldCgpIGNvbnN0OwogCiAgICAgZW51bSBBY3Rpb25UeXBlIHsgREVMRVRFX0NPTlRFTlRT
LCBFWFRSQUNUX0NPTlRFTlRTLCBDTE9ORV9DT05URU5UUyB9OwotICAgIFBhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gcHJvY2Vzc0NvbnRlbnRzKEFjdGlvblR5cGUsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb2RlPiBwcm9jZXNzQ29udGVudHNCZXR3ZWVuT2Zm
c2V0cyhBY3Rpb25UeXBlLCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+LCBOb2RlKiwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NOb2RlcyhBY3Rpb25UeXBlLCBWZWN0b3I8UmVmUHRyPE5v
ZGU+ID4mLCBQYXNzUmVmUHRyPE5vZGU+IG9sZENvbnRhaW5lciwgUGFzc1JlZlB0cjxOb2RlPiBu
ZXdDb250YWluZXIsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IHByb2Nlc3NDb250ZW50cyhBY3Rpb25UeXBlLCBFeGNlcHRpb25Db2RlJiA9IElnbm9y
aW5nRXhjZXB0aW9uQ29kZSgpKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb2RlPiBwcm9jZXNz
Q29udGVudHNCZXR3ZWVuT2Zmc2V0cyhBY3Rpb25UeXBlLCBQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+LCBOb2RlKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwg
RXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CisgICAgc3RhdGljIHZv
aWQgcHJvY2Vzc05vZGVzKEFjdGlvblR5cGUsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYsIFBhc3NS
ZWZQdHI8Tm9kZT4gb2xkQ29udGFpbmVyLCBQYXNzUmVmUHRyPE5vZGU+IG5ld0NvbnRhaW5lciwg
RXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7CiAgICAgZW51bSBDb250
ZW50c1Byb2Nlc3NEaXJlY3Rpb24geyBQcm9jZXNzQ29udGVudHNGb3J3YXJkLCBQcm9jZXNzQ29u
dGVudHNCYWNrd2FyZCB9OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vZGU+IHByb2Nlc3NBbmNl
c3RvcnNBbmRUaGVpclNpYmxpbmdzKEFjdGlvblR5cGUsIE5vZGUqIGNvbnRhaW5lciwgQ29udGVu
dHNQcm9jZXNzRGlyZWN0aW9uLCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lZENvbnRhaW5lciwgTm9k
ZSogY29tbW9uUm9vdCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5v
ZGU+IHByb2Nlc3NBbmNlc3RvcnNBbmRUaGVpclNpYmxpbmdzKEFjdGlvblR5cGUsIE5vZGUqIGNv
bnRhaW5lciwgQ29udGVudHNQcm9jZXNzRGlyZWN0aW9uLCBQYXNzUmVmUHRyPE5vZGU+IGNsb25l
ZENvbnRhaW5lciwgTm9kZSogY29tbW9uUm9vdCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4
Y2VwdGlvbkNvZGUoKSk7CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fb3duZXJEb2N1bWVudDsK
ICAgICBSYW5nZUJvdW5kYXJ5UG9pbnQgbV9zdGFydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCA0NGM5
Y2M4NGYwN2M3NGRhOTZkZGUxYzg1YmE0OTM5MDIyYTc3MDE3Li5iMzFlNjlhODk5MWYyNDM5ZDZj
NDcxN2MyZDkxNjJmYzcyNjFjYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC0xNTEsMTEgKzE1MSwx
MCBAQCBQYXNzUmVmUHRyPFRleHQ+IFRleHQ6OnJlcGxhY2VXaG9sZVRleHQoY29uc3QgU3RyaW5n
JiBuZXdUZXh0LCBFeGNlcHRpb25Db2RlJikKIAogICAgIFJlZlB0cjxUZXh0PiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOyAvLyBNdXRhdGlvbiBldmVudCBoYW5kbGVycyBjb3VsZCBjYXVzZSBvdXIgbGFz
dCByZWYgdG8gZ28gYXdheQogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGUo
KTsgLy8gUHJvdGVjdCBhZ2FpbnN0IG11dGF0aW9uIGhhbmRsZXJzIG1vdmluZyB0aGlzIG5vZGUg
ZHVyaW5nIHRyYXZlcnNhbAotICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZCA9IDA7CiAgICAgZm9y
IChSZWZQdHI8Tm9kZT4gbiA9IHN0YXJ0VGV4dDsgbiAmJiBuICE9IHRoaXMgJiYgbi0+aXNUZXh0
Tm9kZSgpICYmIG4tPnBhcmVudE5vZGUoKSA9PSBwYXJlbnQ7KSB7CiAgICAgICAgIFJlZlB0cjxO
b2RlPiBub2RlVG9SZW1vdmUobi5yZWxlYXNlKCkpOwogICAgICAgICBuID0gbm9kZVRvUmVtb3Zl
LT5uZXh0U2libGluZygpOwotICAgICAgICBwYXJlbnQtPnJlbW92ZUNoaWxkKG5vZGVUb1JlbW92
ZS5nZXQoKSwgaWdub3JlZCk7CisgICAgICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQobm9kZVRvUmVt
b3ZlLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAodGhpcyAhPSBlbmRUZXh0KSB7CkBAIC0xNjMs
MTcgKzE2MiwxNyBAQCBQYXNzUmVmUHRyPFRleHQ+IFRleHQ6OnJlcGxhY2VXaG9sZVRleHQoY29u
c3QgU3RyaW5nJiBuZXdUZXh0LCBFeGNlcHRpb25Db2RlJikKICAgICAgICAgZm9yIChSZWZQdHI8
Tm9kZT4gbiA9IG5leHRTaWJsaW5nKCk7IG4gJiYgbiAhPSBvbmVQYXN0RW5kVGV4dCAmJiBuLT5p
c1RleHROb2RlKCkgJiYgbi0+cGFyZW50Tm9kZSgpID09IHBhcmVudDspIHsKICAgICAgICAgICAg
IFJlZlB0cjxOb2RlPiBub2RlVG9SZW1vdmUobi5yZWxlYXNlKCkpOwogICAgICAgICAgICAgbiA9
IG5vZGVUb1JlbW92ZS0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIHBhcmVudC0+cmVtb3Zl
Q2hpbGQobm9kZVRvUmVtb3ZlLmdldCgpLCBpZ25vcmVkKTsKKyAgICAgICAgICAgIHBhcmVudC0+
cmVtb3ZlQ2hpbGQobm9kZVRvUmVtb3ZlLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIAogICAg
IGlmIChuZXdUZXh0LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudE5v
ZGUoKSA9PSBwYXJlbnQpCi0gICAgICAgICAgICBwYXJlbnQtPnJlbW92ZUNoaWxkKHRoaXMsIGln
bm9yZWQpOworICAgICAgICAgICAgcGFyZW50LT5yZW1vdmVDaGlsZCh0aGlzKTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCi0gICAgc2V0RGF0YShuZXdUZXh0LCBpZ25vcmVkKTsKKyAgICBz
ZXREYXRhKG5ld1RleHQpOwogICAgIHJldHVybiBwcm90ZWN0ZWRUaGlzLnJlbGVhc2UoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0LmgKaW5kZXggM2NjOGM1MDJhNDNiNzBhMzNiNWEzMDM5ZmQxZDNlMDMxYjUwNDU4
NS4uYjk1NWRhYjBiODcxYzI1ZTFlOWFhNTU1ZGIzMjc3MmY1YjJiMjc1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5o
CkBAIC0zNCwxMiArMzQsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHQ+
IGNyZWF0ZShEb2N1bWVudCosIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFRleHQ+IGNyZWF0ZVdpdGhMZW5ndGhMaW1pdChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYsIHVu
c2lnbmVkIHBvc2l0aW9uSW5TdHJpbmcsIHVuc2lnbmVkIGxlbmd0aExpbWl0ID0gZGVmYXVsdExl
bmd0aExpbWl0KTsKIAotICAgIFBhc3NSZWZQdHI8VGV4dD4gc3BsaXRUZXh0KHVuc2lnbmVkIG9m
ZnNldCwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8VGV4dD4gc3BsaXRUZXh0KHVu
c2lnbmVkIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgPSBJZ25vcmluZ0V4Y2VwdGlvbkNvZGUoKSk7
CiAKICAgICAvLyBET00gTGV2ZWwgMzogaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMt
Q29yZS9jb3JlLmh0bWwjSUQtMTMxMjI5NTc3MgogCiAgICAgU3RyaW5nIHdob2xlVGV4dCgpIGNv
bnN0OwotICAgIFBhc3NSZWZQdHI8VGV4dD4gcmVwbGFjZVdob2xlVGV4dChjb25zdCBTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxUZXh0PiByZXBsYWNlV2hvbGVUZXh0
KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmID0gSWdub3JpbmdFeGNlcHRpb25Db2RlKCkp
OwogCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Y
TUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMjM2M2VhZDFhM2Y5Zjg2ZTM5Y2Q1MGYwZDczYWY5
MGYzNjk2MzdiMS4uODIzNzgwZjJkN2RkNTBjOGEwZTkxNThmMzIyZGU4YTM2NmMwM2Q5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xOTAsOCArMTkwLDcg
QEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZXhpdFRleHQoKQogICAgICAgICByZXR1cm47CiAK
ICNpZiAhVVNFKFFYTUxTVFJFQU0pCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgbV9s
ZWFmVGV4dE5vZGUtPmFwcGVuZERhdGEodG9TdHJpbmcobV9idWZmZXJlZFRleHQuZGF0YSgpLCBt
X2J1ZmZlcmVkVGV4dC5zaXplKCkpLCBlYyk7CisgICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVuZERh
dGEodG9TdHJpbmcobV9idWZmZXJlZFRleHQuZGF0YSgpLCBtX2J1ZmZlcmVkVGV4dC5zaXplKCkp
KTsKICAgICBWZWN0b3I8eG1sQ2hhcj4gZW1wdHk7CiAgICAgbV9idWZmZXJlZFRleHQuc3dhcChl
bXB0eSk7CiAjZW5kaWYKQEAgLTI1NiwxOSArMjU1LDE4IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRy
PEVsZW1lbnQ+IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1lbnQqIGRvYywgY29u
c3QKICAgICBSZWZQdHI8RWxlbWVudD4gcmVwb3J0RWxlbWVudCA9IGRvYy0+Y3JlYXRlRWxlbWVu
dChRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAicGFyc2VyZXJyb3IiLCB4aHRtbE5hbWVzcGFjZVVS
SSksIGZhbHNlKTsKICAgICByZXBvcnRFbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAi
ZGlzcGxheTogYmxvY2s7IHdoaXRlLXNwYWNlOiBwcmU7IGJvcmRlcjogMnB4IHNvbGlkICNjNzc7
IHBhZGRpbmc6IDAgMWVtIDAgMWVtOyBtYXJnaW46IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogI2Zk
ZDsgY29sb3I6IGJsYWNrIik7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBSZWZQ
dHI8RWxlbWVudD4gaDMgPSBkb2MtPmNyZWF0ZUVsZW1lbnQoaDNUYWcsIGZhbHNlKTsKLSAgICBy
ZXBvcnRFbGVtZW50LT5hcHBlbmRDaGlsZChoMy5nZXQoKSwgZWMpOwotICAgIGgzLT5hcHBlbmRD
aGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKCJUaGlzIHBhZ2UgY29udGFpbnMgdGhlIGZvbGxvd2lu
ZyBlcnJvcnM6IiksIGVjKTsKKyAgICByZXBvcnRFbGVtZW50LT5hcHBlbmRDaGlsZChoMy5nZXQo
KSk7CisgICAgaDMtPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoIlRoaXMgcGFnZSBj
b250YWlucyB0aGUgZm9sbG93aW5nIGVycm9yczoiKSk7CiAKICAgICBSZWZQdHI8RWxlbWVudD4g
Zml4ZWQgPSBkb2MtPmNyZWF0ZUVsZW1lbnQoZGl2VGFnLCBmYWxzZSk7Ci0gICAgcmVwb3J0RWxl
bWVudC0+YXBwZW5kQ2hpbGQoZml4ZWQuZ2V0KCksIGVjKTsKKyAgICByZXBvcnRFbGVtZW50LT5h
cHBlbmRDaGlsZChmaXhlZC5nZXQoKSk7CiAgICAgZml4ZWQtPnNldEF0dHJpYnV0ZShzdHlsZUF0
dHIsICJmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEycHgiKTsKLSAgICBmaXhlZC0+
YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShlcnJvck1lc3NhZ2VzKSwgZWMpOworICAg
IGZpeGVkLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKGVycm9yTWVzc2FnZXMpKTsK
IAogICAgIGgzID0gZG9jLT5jcmVhdGVFbGVtZW50KGgzVGFnLCBmYWxzZSk7Ci0gICAgcmVwb3J0
RWxlbWVudC0+YXBwZW5kQ2hpbGQoaDMuZ2V0KCksIGVjKTsKLSAgICBoMy0+YXBwZW5kQ2hpbGQo
ZG9jLT5jcmVhdGVUZXh0Tm9kZSgiQmVsb3cgaXMgYSByZW5kZXJpbmcgb2YgdGhlIHBhZ2UgdXAg
dG8gdGhlIGZpcnN0IGVycm9yLiIpLCBlYyk7CisgICAgcmVwb3J0RWxlbWVudC0+YXBwZW5kQ2hp
bGQoaDMuZ2V0KCkpOworICAgIGgzLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKCJC
ZWxvdyBpcyBhIHJlbmRlcmluZyBvZiB0aGUgcGFnZSB1cCB0byB0aGUgZmlyc3QgZXJyb3IuIikp
OwogCiAgICAgcmV0dXJuIHJlcG9ydEVsZW1lbnQ7CiB9CkBAIC0yODQsMzQgKzI4MiwzMyBAQCB2
b2lkIFhNTERvY3VtZW50UGFyc2VyOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jaygpCiAgICAgLy8g
d2hlcmUgdGhlIGVycm9ycyBhcmUgbG9jYXRlZCkKIAogICAgIC8vIENyZWF0ZSBlbGVtZW50cyBm
b3IgZGlzcGxheQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGRvY3VtZW50RWxl
bWVudCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50RWxl
bWVudCkgewogICAgICAgICBSZWZQdHI8RWxlbWVudD4gcm9vdEVsZW1lbnQgPSBkb2N1bWVudC0+
Y3JlYXRlRWxlbWVudChodG1sVGFnLCBmYWxzZSk7Ci0gICAgICAgIGRvY3VtZW50LT5hcHBlbmRD
aGlsZChyb290RWxlbWVudCwgZWMpOworICAgICAgICBkb2N1bWVudC0+YXBwZW5kQ2hpbGQocm9v
dEVsZW1lbnQpOwogICAgICAgICBSZWZQdHI8RWxlbWVudD4gYm9keSA9IGRvY3VtZW50LT5jcmVh
dGVFbGVtZW50KGJvZHlUYWcsIGZhbHNlKTsKLSAgICAgICAgcm9vdEVsZW1lbnQtPmFwcGVuZENo
aWxkKGJvZHksIGVjKTsKKyAgICAgICAgcm9vdEVsZW1lbnQtPmFwcGVuZENoaWxkKGJvZHkpOwog
ICAgICAgICBkb2N1bWVudEVsZW1lbnQgPSBib2R5LmdldCgpOwogICAgIH0KICNpZiBFTkFCTEUo
U1ZHKQogICAgIGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudC0+bmFtZXNwYWNlVVJJKCkgPT0gU1ZH
TmFtZXM6OnN2Z05hbWVzcGFjZVVSSSkgewogICAgICAgICBSZWZQdHI8RWxlbWVudD4gcm9vdEVs
ZW1lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChodG1sVGFnLCBmYWxzZSk7CiAgICAgICAg
IFJlZlB0cjxFbGVtZW50PiBib2R5ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoYm9keVRhZywg
ZmFsc2UpOwotICAgICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoYm9keSwgZWMpOwotICAg
ICAgICBib2R5LT5hcHBlbmRDaGlsZChkb2N1bWVudEVsZW1lbnQsIGVjKTsKLSAgICAgICAgZG9j
dW1lbnQtPmFwcGVuZENoaWxkKHJvb3RFbGVtZW50LmdldCgpLCBlYyk7CisgICAgICAgIHJvb3RF
bGVtZW50LT5hcHBlbmRDaGlsZChib2R5KTsKKyAgICAgICAgYm9keS0+YXBwZW5kQ2hpbGQoZG9j
dW1lbnRFbGVtZW50KTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcGVuZENoaWxkKHJvb3RFbGVtZW50
LmdldCgpKTsKICAgICAgICAgZG9jdW1lbnRFbGVtZW50ID0gYm9keS5nZXQoKTsKICAgICB9CiAj
ZW5kaWYKICAgICBSZWZQdHI8RWxlbWVudD4gcmVwb3J0RWxlbWVudCA9IGNyZWF0ZVhIVE1MUGFy
c2VyRXJyb3JIZWFkZXIoZG9jdW1lbnQsIG1fZXJyb3JNZXNzYWdlcyk7Ci0gICAgZG9jdW1lbnRF
bGVtZW50LT5pbnNlcnRCZWZvcmUocmVwb3J0RWxlbWVudCwgZG9jdW1lbnRFbGVtZW50LT5maXJz
dENoaWxkKCksIGVjKTsKKyAgICBkb2N1bWVudEVsZW1lbnQtPmluc2VydEJlZm9yZShyZXBvcnRF
bGVtZW50LCBkb2N1bWVudEVsZW1lbnQtPmZpcnN0Q2hpbGQoKSk7CiAjaWYgRU5BQkxFKFhTTFQp
CiAgICAgaWYgKGRvY3VtZW50LT50cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCgpKSB7CiAgICAgICAg
IFJlZlB0cjxFbGVtZW50PiBwYXJhZ3JhcGggPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChwVGFn
LCBmYWxzZSk7CiAgICAgICAgIHBhcmFncmFwaC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgIndo
aXRlLXNwYWNlOiBub3JtYWwiKTsKLSAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChkb2N1
bWVudC0+Y3JlYXRlVGV4dE5vZGUoIlRoaXMgZG9jdW1lbnQgd2FzIGNyZWF0ZWQgYXMgdGhlIHJl
c3VsdCBvZiBhbiBYU0wgdHJhbnNmb3JtYXRpb24uIFRoZSBsaW5lIGFuZCBjb2x1bW4gbnVtYmVy
cyBnaXZlbiBhcmUgZnJvbSB0aGUgdHJhbnNmb3JtZWQgcmVzdWx0LiIpLCBlYyk7Ci0gICAgICAg
IHJlcG9ydEVsZW1lbnQtPmFwcGVuZENoaWxkKHBhcmFncmFwaC5yZWxlYXNlKCksIGVjKTsKKyAg
ICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUoIlRo
aXMgZG9jdW1lbnQgd2FzIGNyZWF0ZWQgYXMgdGhlIHJlc3VsdCBvZiBhbiBYU0wgdHJhbnNmb3Jt
YXRpb24uIFRoZSBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBnaXZlbiBhcmUgZnJvbSB0aGUgdHJh
bnNmb3JtZWQgcmVzdWx0LiIpKTsKKyAgICAgICAgcmVwb3J0RWxlbWVudC0+YXBwZW5kQ2hpbGQo
cGFyYWdyYXBoLnJlbGVhc2UoKSk7CiAgICAgfQogI2VuZGlmCiAgICAgZG9jdW1lbnQtPnVwZGF0
ZVN0eWxlSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAKaW5kZXggZjJmMzlmYjRlYzdkZWUwNzBhODM1MTVhZTBjNGY0MTBmNmI3
Mjg2ZS4uYzQ0YTQ3ZTcxNDFhOTI5YjkyMTdjY2JiZjZjYjUxZGJkMjkyMzlmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTEwMzMs
MTEgKzEwMzMsOSBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpjb21tZW50KGNvbnN0IHhtbENo
YXIqIHMpCiAKIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RG9jdW1lbnQoY29uc3QgeG1s
Q2hhciogdmVyc2lvbiwgY29uc3QgeG1sQ2hhciogZW5jb2RpbmcsIGludCBzdGFuZGFsb25lKQog
ewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotCiAgICAgaWYgKHZlcnNpb24pCi0gICAgICAg
IGRvY3VtZW50KCktPnNldFhNTFZlcnNpb24odG9TdHJpbmcodmVyc2lvbiksIGVjKTsKLSAgICBk
b2N1bWVudCgpLT5zZXRYTUxTdGFuZGFsb25lKHN0YW5kYWxvbmUgPT0gMSwgZWMpOyAvLyBwb3Nz
aWJsZSB2YWx1ZXMgYXJlIDAsIDEsIGFuZCAtMQorICAgICAgICBkb2N1bWVudCgpLT5zZXRYTUxW
ZXJzaW9uKHRvU3RyaW5nKHZlcnNpb24pKTsKKyAgICBkb2N1bWVudCgpLT5zZXRYTUxTdGFuZGFs
b25lKHN0YW5kYWxvbmUgPT0gMSk7IC8vIHBvc3NpYmxlIHZhbHVlcyBhcmUgMCwgMSwgYW5kIC0x
CiAgICAgaWYgKGVuY29kaW5nKQogICAgICAgICBkb2N1bWVudCgpLT5zZXRYTUxFbmNvZGluZyh0
b1N0cmluZyhlbmNvZGluZykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1hN
TERvY3VtZW50UGFyc2VyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFy
c2VyUXQuY3BwCmluZGV4IGI1Y2ZhMjM0MmQwZDY1MGQwNGMyMGJjMzhkN2ZlZTZiNjg1YzA2ZmEu
LmIyOGJjNmFmYTdjYWVjNzM5YjM0YTQ1YzU5YjBhNTFjNzc5NzcyODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlclF0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJRdC5jcHAKQEAgLTQyNywxMCArNDI3LDkgQEAgdm9p
ZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2UoKQogICAgICAgICAgICAgICAgIFVDaGFyIGMgPSBk
ZWNvZGVOYW1lZEVudGl0eShlbnRpdHkudG9VdGY4KCkuY29uc3REYXRhKCkpOwogICAgICAgICAg
ICAgICAgIGlmICghbV9sZWFmVGV4dE5vZGUpCiAgICAgICAgICAgICAgICAgICAgIGVudGVyVGV4
dCgpOwotICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICAgICAg
ICAgIFN0cmluZyBzdHIoJmMsIDEpOwogICAgICAgICAgICAgICAgIC8vIHFEZWJ1ZygpPDwiIC0t
LS0tLS0gYWRkaW5nIGVudGl0eSAiPDxzdHI7Ci0gICAgICAgICAgICAgICAgbV9sZWFmVGV4dE5v
ZGUtPmFwcGVuZERhdGEoc3RyLCBlYyk7CisgICAgICAgICAgICAgICAgbV9sZWFmVGV4dE5vZGUt
PmFwcGVuZERhdGEoc3RyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CkBAIC00NTQsMTQgKzQ1MywxMyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpwYXJz
ZSgpCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpzdGFydERvY3VtZW50KCkKIHsKICAgICBpbml0
aWFsaXplUGFyc2VyQ29udGV4dCgpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCiAgICAg
aWYgKCFtX3BhcnNpbmdGcmFnbWVudCkgewotICAgICAgICBkb2N1bWVudCgpLT5zZXRYTUxTdGFu
ZGFsb25lKG1fc3RyZWFtLmlzU3RhbmRhbG9uZURvY3VtZW50KCksIGVjKTsKKyAgICAgICAgZG9j
dW1lbnQoKS0+c2V0WE1MU3RhbmRhbG9uZShtX3N0cmVhbS5pc1N0YW5kYWxvbmVEb2N1bWVudCgp
KTsKIAogICAgICAgICBRU3RyaW5nUmVmIHZlcnNpb24gPSBtX3N0cmVhbS5kb2N1bWVudFZlcnNp
b24oKTsKICAgICAgICAgaWYgKCF2ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGRvY3Vt
ZW50KCktPnNldFhNTFZlcnNpb24odmVyc2lvbiwgZWMpOworICAgICAgICAgICAgZG9jdW1lbnQo
KS0+c2V0WE1MVmVyc2lvbih2ZXJzaW9uKTsKICAgICAgICAgUVN0cmluZ1JlZiBlbmNvZGluZyA9
IG1fc3RyZWFtLmRvY3VtZW50RW5jb2RpbmcoKTsKICAgICAgICAgaWYgKCFlbmNvZGluZy5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICBkb2N1bWVudCgpLT5zZXRYTUxFbmNvZGluZyhlbmNvZGluZyk7
CkBAIC01NTcsOCArNTU1LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VFbmRFbGVt
ZW50KCkKIAogICAgIGlmIChtX3NjcmlwdGluZ1Blcm1pc3Npb24gPT0gRnJhZ21lbnRTY3JpcHRp
bmdOb3RBbGxvd2VkICYmIG4tPmlzRWxlbWVudE5vZGUoKSAmJiB0b1NjcmlwdEVsZW1lbnQoc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KG4uZ2V0KCkpKSkgewogICAgICAgICBwb3BDdXJyZW50Tm9kZSgp
OwotICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICBuLT5yZW1vdmUoZWMpOworICAg
ICAgICBuLT5yZW1vdmUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjE1LDggKzYx
Miw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlQ2hhcmFjdGVycygpCiB7CiAgICAg
aWYgKCFtX2xlYWZUZXh0Tm9kZSkKICAgICAgICAgZW50ZXJUZXh0KCk7Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVuZERhdGEobV9zdHJlYW0udGV4
dCgpLCBlYyk7CisgICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVuZERhdGEobV9zdHJlYW0udGV4dCgp
KTsKIH0KIAogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99598</attachid>
            <date>2011-07-03 22:42:59 -0700</date>
            <delta_ts>2011-07-04 17:44:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63688-20110704144257.patch</filename>
            <type>text/plain</type>
            <size>14671</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTAzNDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1
ZjczZWIwMmY2Y2YyN2NlYTNjYTM4NzIwZTBhNjFiNGYxNGQ5OGIuLjg2MzY5N2E1ZTk2YWQzMmRi
MGM5N2EwNzI2OWFkZTE3Nzc2ZGExMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTA3LTAzICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJlZmFjdG9yaW5nOiBJZ25vcmVkIEV4Y2VwdGlvbkNvZGUgdmFsdWUgc2hv
dWxkIGJlIGxlc3MgYW5ub3lpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MzY4OAorCisgICAgICAgIEFkZGVkIEFTU0VSVF9BVCBtYWNyby4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Bc3Nl
cnRpb25zLmg6CisKIDIwMTEtMDctMDMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5MDM0Ny4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgKaW5kZXggMTM2ZDViYzgxNTgzOWYxMzA0
NTdhMTJmNDliMzEwYmQ4YWI2MDU2My4uYWQyMjM5YTUzOTdhOWFkOGRjMGU1MjhmYjg3NTMxMjQ1
Y2IzMGRlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgKQEAgLTIzNSw2
ICsyMzUsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNo
YXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdQogI2lmIEFTU0VSVF9ESVNBQkxFRAog
CiAjZGVmaW5lIEFTU0VSVChhc3NlcnRpb24pICgodm9pZCkwKQorI2RlZmluZSBBU1NFUlRfQVQo
YXNzZXJ0aW9uLCBmaWxlLCBsaW5lLCBmdW5jdGlvbikgKCh2b2lkKTApCiAjZGVmaW5lIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpICgodm9pZCkwKQogCiAjaWYgQ09NUElMRVIoSU5URUwpICYmICFPUyhX
SU5ET1dTKSB8fCBDT01QSUxFUihSVkNUKQpAQCAtMjU0LDYgKzI1NSwxMyBAQCBpbmxpbmUgdm9p
ZCBhc3NlcnRVbnVzZWQoVCYgeCkgeyAodm9pZCl4OyB9CiAgICAgfSBcCiB3aGlsZSAoMCkKIAor
I2RlZmluZSBBU1NFUlRfQVQoYXNzZXJ0aW9uLCBmaWxlLCBsaW5lLCBmdW5jdGlvbikgZG8gIFwK
KyAgICBpZiAoIShhc3NlcnRpb24pKSB7IFwKKyAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFp
bHVyZShmaWxlLCBsaW5lLCBmdW5jdGlvbiwgI2Fzc2VydGlvbik7IFwKKyAgICAgICAgQ1JBU0go
KTsgXAorICAgIH0gXAord2hpbGUgKDApCisKICNkZWZpbmUgQVNTRVJUX05PVF9SRUFDSEVEKCkg
ZG8geyBcCiAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18s
IFdURl9QUkVUVFlfRlVOQ1RJT04sIDApOyBcCiAgICAgQ1JBU0goKTsgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGQ3NmE0ODI4ZjhmMmE3ZmJkYjI4MDZjNWQxODUwNmY1NjZhZTZjOTUuLmVkY2UyZjg5OGRkMTQz
MTM1NGM5NjRmMjM0N2RjNTExZjgwMGZhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAor
MjAxMS0wNy0wMyAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZWZhY3RvcmluZzogSWdub3JlZCBFeGNlcHRpb25Db2RlIHZhbHVlIHNob3VsZCBiZSBsZXNz
IGFubm95aW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjM2ODgKKworICAgICAgICAtIEludHJvZHVjZWQgRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVy
IGNsYXNzIGZvciB0aGUgZGVmYXVsdCBwYXJhbWV0ZXIgb2YgRXhjZXB0aW9uQ29kZS4KKyAgICAg
ICAgLSBJbnRyb2R1Y2VkIEFTU0VSVF9OT19FWENFUFRJT04gdG8gY2hlY2sgRXhjZXB0aW9uQ29k
ZSBub3Qgc2V0IHRvIG5vbi16ZXJvIGFmdGVyIHRoZSBjYWxsLgorICAgICAgICAtIEFkb3B0ZWQg
QVNTRVJUX05PX0VYQ0VQVElPTiBpbiBSYW5nZS5jcHAKKworICAgICAgICBObyBuZXcgdGVzdHMu
IE5vIGJlaGF2aW91ciBjaGFuZ2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogZG9tL0V4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlcjo6RXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlcjo6b3BlcmF0b3Ig
RXhjZXB0aW9uQ29kZSYgKToKKyAgICAgICAgKFdlYkNvcmU6Oklnbm9yYWJsZUV4Y2VwdGlvbkNv
ZGU6Oklnbm9yYWJsZUV4Y2VwdGlvbkNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZEV4
Y2VwdGlvbkNvZGU6OkNoZWNrZWRFeGNlcHRpb25Db2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNo
ZWNrZWRFeGNlcHRpb25Db2RlOjp+Q2hlY2tlZEV4Y2VwdGlvbkNvZGUpOgorICAgICAgICAqIGRv
bS9SYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6UmFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2U6OmVkaXRpbmdTdGFydFBvc2l0aW9uKToKKyAgICAgICAgKiBkb20vUmFu
Z2UuaDogICAgICAgIAorCiAyMDExLTA3LTAzICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXN0b3JlIHNjcm9sbCBwb3NpdGlvbiBvbiBwYWdlIHJlbG9hZHMg
c2NoZWR1bGVkIGJ5IDxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IlhYIi8+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAwYWM1YTVhN2MwYWYwMDEwNjFkZjNhODZh
YTFmNWVhZDU2ZjdiMjc0Li5kYzk1YmMzZDY0YWViZTc0Yzk4NTIzYWNiMzUyNTRkMzYwYWZkMGFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTExNzYsNiArMTE3Niw3IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V4Y2x1c2l2ZVRyYWNrTGlz
dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9JZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1l
bnRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L0ljb25VUkwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCBkODE3YTBhY2E4YzMzZTZmM2ExNDM1M2UyYjU3MjgzMjlkODhiNGNi
Li4zOWM1NzYyOTlmMzIyOGUzZDNkYjg5OGY2OTI3OTM4ZDhkYjk2ZjM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC01MzgsNiArNTM4LDcgQEAKICAgICAgICAgICAgICdkb20vTmFtZWROb2RlTWFwLmgn
LAogICAgICAgICAgICAgJ2RvbS9Ob2RlLmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlTGlzdC5o
JywKKyAgICAgICAgICAgICdkb20vTmV2ZXJUaHJvd24uaCcsCiAgICAgICAgICAgICAnZG9tL1Bl
bmRpbmdTY3JpcHQuaCcsCiAgICAgICAgICAgICAnZG9tL1Bvc2l0aW9uLmgnLAogICAgICAgICAg
ICAgJ2RvbS9RdWFsaWZpZWROYW1lLmgnLApAQCAtMjUwNCw2ICsyNTA1LDcgQEAKICAgICAgICAg
ICAgICdkb20vRXhjbHVzaXZlVHJhY2tMaXN0LmgnLAogICAgICAgICAgICAgJ2RvbS9IYXNoQ2hh
bmdlRXZlbnQuaCcsCiAgICAgICAgICAgICAnZG9tL0lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3Vu
dEluY3JlbWVudGVyLmgnLAorICAgICAgICAgICAgJ2RvbS9FeGNlcHRpb25Db2RlUGxhY2Vob2xk
ZXIuaCcsCiAgICAgICAgICAgICAnZG9tL0ljb25VUkwuY3BwJywKICAgICAgICAgICAgICdkb20v
SWNvblVSTC5oJywKICAgICAgICAgICAgICdkb20vS2V5Ym9hcmRFdmVudC5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZi
YzVjMWM1ZTc5Zjk4MDhhNGU4NzY5N2ExNmFhNjRkNzIzMDllNjQuLmMzMDM1OGQwNmVlODFjZGE2
OTA4NzA5NWQ2YmNiNWIzNTgyZGIyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMyODksNiArMzI4OSw3IEBACiAJCUE3MUMz
MEI5MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MUMzMEI3MTM4MTI2NUUwMERC
QzM1MSAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3IuaCAqLzsgfTsKIAkJQTczRjk1RkUxMkM5N0JG
RTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVk
SW50UmVjdC5jcHAgKi87IH07CiAJCUE3M0Y5NUZGMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVk
SW50UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTczRjk1RkQxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTc0QkI3NkIxM0JEQTg2MzAw
RkY3QkYwIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc0QkI3NkExM0JEQTg2MzAwRkY3QkYwIC8qIEV4
Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE3NEMyRDNDMTM4MTFFMEQwMEY4MzU3MiAvKiBTaGFkb3dDb250
ZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTc0QzJEM0IxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc1RTQ5NzYx
MDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RTQ5NzQxMDc1MkFDQjAwQzlCODk2
IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE3NUU0OTc3MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAgKi87IH07CkBAIC05ODEwLDYgKzk4MTEsNyBAQAogCQlBNzFDMzBCNzEzODEyNjVFMDBE
QkMzNTEgLyogU2hhZG93Q29udGVudFNlbGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNoYWRvd0NvbnRlbnRTZWxlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUm91bmRlZEludFJlY3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkgLyog
Um91bmRlZEludFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUm91bmRl
ZEludFJlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc0QkI3NkExM0JEQTg2
MzAwRkY3QkYwIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTc0QzJEM0IxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRl
bnRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRvd0NvbnRl
bnRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NUU0OTc0MTA3NTJB
Q0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NjMzLDYg
KzE5NjM1LDcgQEAKIAkJCQlCQzYwRDhGMTBEMkExMUUwMDBCOTkxOEYgLyogRXhjZXB0aW9uQmFz
ZS5oICovLAogCQkJCTkzODMxQjU2MEQwODdENjAwMEU1Qzk4NCAvKiBFeGNlcHRpb25Db2RlLmNw
cCAqLywKIAkJCQk5MzVGQkNGMTA5QkExNDNCMDBFMjMwQjEgLyogRXhjZXB0aW9uQ29kZS5oICov
LAorCQkJCUE3NEJCNzZBMTNCREE4NjMwMEZGN0JGMCAvKiBFeGNlcHRpb25Db2RlUGxhY2Vob2xk
ZXIuaCAqLywKIAkJCQlCMTJEMjMzNTEzNTYwMjgyMDAyQTI4RDQgLyogRXhjbHVzaXZlVHJhY2tM
aXN0LmNwcCAqLywKIAkJCQlCMTJEMjMzNjEzNTYwMjgyMDAyQTI4RDQgLyogRXhjbHVzaXZlVHJh
Y2tMaXN0LmggKi8sCiAJCQkJQjEyRDIzMzcxMzU2MDI4MjAwMkEyOEQ0IC8qIEV4Y2x1c2l2ZVRy
YWNrTGlzdC5pZGwgKi8sCkBAIC0yMTEyMSw2ICsyMTEyNCw3IEBACiAJCQkJRTEyRURCN0IwQjMw
OEE3ODAwMjcwNEI2IC8qIEV2ZW50VGFyZ2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzYwRDhG
MzBEMkExMUUwMDBCOTkxOEYgLyogRXhjZXB0aW9uQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTM1RkJDRjIwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE3NEJCNzZCMTNCREE4NjMwMEZGN0JGMCAvKiBFeGNlcHRpb25Db2RlUGxhY2Vob2xk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OEFGREE1MEFGNTgzNjAwMDhDQzcwMCAvKiBFeGNl
cHRpb25IYW5kbGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjEyRDIzM0YxMzU2MDI4MjAwMkEy
OEQ0IC8qIEV4Y2x1c2l2ZVRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU2N0QyQTkx
MjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThk
YTQzNTJkODdiMTY0MDg2NWEyNGU0YmE4NWYxNjA4ZmEyMWRjZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaApAQCAtMCwwICsx
LDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKyNpZm5kZWYgRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyX2gKKyNkZWZpbmUgRXhjZXB0aW9u
Q29kZVBsYWNlaG9sZGVyX2gKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3MgRXhj
ZXB0aW9uQ29kZVBsYWNlaG9sZGVyIHsKK3B1YmxpYzoKKyAgICBFeGNlcHRpb25Db2RlUGxhY2Vo
b2xkZXIoKSB7IH0KKyAgICBleHBsaWNpdCBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIoRXhjZXB0
aW9uQ29kZSk7CisKKyAgICBvcGVyYXRvciBFeGNlcHRpb25Db2RlJiAoKSBjb25zdCB7IHJldHVy
biBtX2NvZGU7IH0KKworcHJvdGVjdGVkOgorICAgIG11dGFibGUgRXhjZXB0aW9uQ29kZSBtX2Nv
ZGU7Cit9OworCitpbmxpbmUgRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyOjpFeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIoRXhjZXB0aW9uQ29kZSBjb2RlKQorICAgIDogbV9jb2RlKGNvZGUpCit7Cit9
CisKKworY2xhc3MgSWdub3JhYmxlRXhjZXB0aW9uQ29kZSA6IHB1YmxpYyBFeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIgeworcHVibGljOgorICAgIElnbm9yYWJsZUV4Y2VwdGlvbkNvZGUoKSB7IH0K
K307CisKKyNpZiAhZGVmaW5lZChBU1NFUlRfRElTQUJMRUQpCisKK2NsYXNzIE5vRXhjZXB0aW9u
QXNzZXJ0aW9uQ2hlY2tlciA6IHB1YmxpYyBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIgeworcHVi
bGljOgorICAgIE5vRXhjZXB0aW9uQXNzZXJ0aW9uQ2hlY2tlcihjb25zdCBjaGFyKiwgc2l6ZV90
LCBjb25zdCBjaGFyKik7CisgICAgfk5vRXhjZXB0aW9uQXNzZXJ0aW9uQ2hlY2tlcigpOworCitw
cml2YXRlOgorICAgIGNvbnN0IGNoYXIqIG1fZmlsZTsKKyAgICBzaXplX3QgbV9saW5lOworICAg
IGNvbnN0IGNoYXIqIG1fZnVuY3Rpb247Cit9OworCitpbmxpbmUgTm9FeGNlcHRpb25Bc3NlcnRp
b25DaGVja2VyOjpOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXIoY29uc3QgY2hhciogZmlsZSwg
c2l6ZV90IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uKQorICAgIDogRXhjZXB0aW9uQ29kZVBs
YWNlaG9sZGVyKDApCisgICAgLCBtX2ZpbGUoZmlsZSkKKyAgICAsIG1fbGluZShsaW5lKQorICAg
ICwgbV9mdW5jdGlvbihmdW5jdGlvbikKK3sKK30KKworaW5saW5lIE5vRXhjZXB0aW9uQXNzZXJ0
aW9uQ2hlY2tlcjo6fk5vRXhjZXB0aW9uQXNzZXJ0aW9uQ2hlY2tlcigpCit7CisgICAgQVNTRVJU
X0FUKCFtX2NvZGUsIG1fZmlsZSwgbV9saW5lLCBtX2Z1bmN0aW9uKTsKK30KKworI2RlZmluZSBB
U1NFUlRfTk9fRVhDRVBUSU9OIFdlYkNvcmU6Ok5vRXhjZXB0aW9uQXNzZXJ0aW9uQ2hlY2tlcihf
X0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04pCisjZWxzZQorI2RlZmluZSBB
U1NFUlRfTk9fRVhDRVBUSU9OIFdlYkNvcmU6Oklnbm9yYWJsZUV4Y2VwdGlvbkNvZGUoKQorI2Vu
ZGlmCisKK30KKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IGIyNTc0YTBlMjZhZDU3
MTMwZDgxZTU2ODY5YTU2MDM4ZWM4MTE4ZjEuLjJkMTUwODFlYjk3MzdiNTY5ZGUyN2MxNjU1MzZm
MTgxNWU3MzE4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtODgsMTEgKzg4LDggQEAgaW5saW5l
IFJhbmdlOjpSYW5nZShQYXNzUmVmUHRyPERvY3VtZW50PiBvd25lckRvY3VtZW50LCBQYXNzUmVm
UHRyPE5vZGU+IHN0YXJ0Q28KIAogICAgIC8vIFNpbXBseSBzZXR0aW5nIHRoZSBjb250YWluZXJz
IGFuZCBvZmZzZXRzIGRpcmVjdGx5IHdvdWxkIG5vdCBkbyBhbnkgb2YgdGhlIGNoZWNraW5nCiAg
ICAgLy8gdGhhdCBzZXRTdGFydCBhbmQgc2V0RW5kIGRvLCBzbyB3ZSBjYWxsIHRob3NlIGZ1bmN0
aW9ucy4KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBzZXRTdGFydChzdGFydENvbnRh
aW5lciwgc3RhcnRPZmZzZXQsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKLSAgICBzZXRFbmQoZW5k
Q29udGFpbmVyLCBlbmRPZmZzZXQsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBzZXRTdGFy
dChzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQpOworICAgIHNldEVuZChlbmRDb250YWluZXIs
IGVuZE9mZnNldCk7CiB9CiAKIFBhc3NSZWZQdHI8UmFuZ2U+IFJhbmdlOjpjcmVhdGUoUGFzc1Jl
ZlB0cjxEb2N1bWVudD4gb3duZXJEb2N1bWVudCwgUGFzc1JlZlB0cjxOb2RlPiBzdGFydENvbnRh
aW5lciwgaW50IHN0YXJ0T2Zmc2V0LCBQYXNzUmVmUHRyPE5vZGU+IGVuZENvbnRhaW5lciwgaW50
IGVuZE9mZnNldCkKQEAgLTE1OTUsMTAgKzE1OTIsOSBAQCBQb3NpdGlvbiBSYW5nZTo6ZWRpdGlu
Z1N0YXJ0UG9zaXRpb24oKSBjb25zdAogICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgLy8gaWYgdGhlIHNlbGVjdGlvbiBpcyBhIGNhcmV0LCBqdXN0IHJldHVybiB0aGUgcG9z
aXRpb24sIHNpbmNlIHRoZSBzdHlsZQogICAgIC8vIGJlaGluZCB1cyBpcyByZWxldmFudAotICAg
IGlmIChjb2xsYXBzZWQoZWMpKQorICAgIGlmIChjb2xsYXBzZWQoKSkKICAgICAgICAgcmV0dXJu
IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwogCiAgICAgLy8gaWYgdGhlIHNlbGVj
dGlvbiBzdGFydHMganVzdCBiZWZvcmUgYSBwYXJhZ3JhcGggYnJlYWssIHNraXAgb3ZlciBpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuaAppbmRleCBhYjhjNTU1OTJkYzkyZDAwMjFiN2JmOWIwZWY4NmI2M2RmMDkxMGY2
Li5lNTA5ZjhkODA1MjQyM2M1N2Y5MzZkMzQxMTJhOGRjNDZhNmNlY2VmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2Uu
aApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBSYW5nZV9oCiAjZGVmaW5lIFJhbmdlX2gKIAor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJOb2RlLmgiCkBAIC02MSwxMiAr
NjIsMTIgQEAgcHVibGljOgogICAgIGludCBzdGFydE9mZnNldChFeGNlcHRpb25Db2RlJikgY29u
c3Q7CiAgICAgTm9kZSogZW5kQ29udGFpbmVyKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBp
bnQgZW5kT2Zmc2V0KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBib29sIGNvbGxhcHNlZChF
eGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgYm9vbCBjb2xsYXBzZWQoRXhjZXB0aW9uQ29kZSYg
PSBBU1NFUlRfTk9fRVhDRVBUSU9OKSBjb25zdDsKIAogICAgIE5vZGUqIGNvbW1vbkFuY2VzdG9y
Q29udGFpbmVyKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBzdGF0aWMgTm9kZSogY29tbW9u
QW5jZXN0b3JDb250YWluZXIoTm9kZSogY29udGFpbmVyQSwgTm9kZSogY29udGFpbmVyQik7Ci0g
ICAgdm9pZCBzZXRTdGFydChQYXNzUmVmUHRyPE5vZGU+IGNvbnRhaW5lciwgaW50IG9mZnNldCwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0RW5kKFBhc3NSZWZQdHI8Tm9kZT4gY29udGFp
bmVyLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRTdGFydChQYXNz
UmVmUHRyPE5vZGU+IGNvbnRhaW5lciwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgPSBBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKKyAgICB2b2lkIHNldEVuZChQYXNzUmVmUHRyPE5vZGU+IGNvbnRh
aW5lciwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
ICAgICB2b2lkIGNvbGxhcHNlKGJvb2wgdG9TdGFydCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJv
b2wgaXNQb2ludEluUmFuZ2UoTm9kZSogcmVmTm9kZSwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHNob3J0IGNvbXBhcmVQb2ludChOb2RlKiByZWZOb2RlLCBpbnQgb2Zmc2V0LCBF
eGNlcHRpb25Db2RlJikgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99659</attachid>
            <date>2011-07-04 17:44:55 -0700</date>
            <delta_ts>2011-07-12 20:09:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63688-20110705094453.patch</filename>
            <type>text/plain</type>
            <size>14671</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTAzNDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1
ZjczZWIwMmY2Y2YyN2NlYTNjYTM4NzIwZTBhNjFiNGYxNGQ5OGIuLjg2MzY5N2E1ZTk2YWQzMmRi
MGM5N2EwNzI2OWFkZTE3Nzc2ZGExMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTA3LTAzICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJlZmFjdG9yaW5nOiBJZ25vcmVkIEV4Y2VwdGlvbkNvZGUgdmFsdWUgc2hv
dWxkIGJlIGxlc3MgYW5ub3lpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MzY4OAorCisgICAgICAgIEFkZGVkIEFTU0VSVF9BVCBtYWNyby4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Bc3Nl
cnRpb25zLmg6CisKIDIwMTEtMDctMDMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5MDM0Ny4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgKaW5kZXggMTM2ZDViYzgxNTgzOWYxMzA0
NTdhMTJmNDliMzEwYmQ4YWI2MDU2My4uYWQyMjM5YTUzOTdhOWFkOGRjMGU1MjhmYjg3NTMxMjQ1
Y2IzMGRlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgKQEAgLTIzNSw2
ICsyMzUsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNo
YXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdQogI2lmIEFTU0VSVF9ESVNBQkxFRAog
CiAjZGVmaW5lIEFTU0VSVChhc3NlcnRpb24pICgodm9pZCkwKQorI2RlZmluZSBBU1NFUlRfQVQo
YXNzZXJ0aW9uLCBmaWxlLCBsaW5lLCBmdW5jdGlvbikgKCh2b2lkKTApCiAjZGVmaW5lIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpICgodm9pZCkwKQogCiAjaWYgQ09NUElMRVIoSU5URUwpICYmICFPUyhX
SU5ET1dTKSB8fCBDT01QSUxFUihSVkNUKQpAQCAtMjU0LDYgKzI1NSwxMyBAQCBpbmxpbmUgdm9p
ZCBhc3NlcnRVbnVzZWQoVCYgeCkgeyAodm9pZCl4OyB9CiAgICAgfSBcCiB3aGlsZSAoMCkKIAor
I2RlZmluZSBBU1NFUlRfQVQoYXNzZXJ0aW9uLCBmaWxlLCBsaW5lLCBmdW5jdGlvbikgZG8gIFwK
KyAgICBpZiAoIShhc3NlcnRpb24pKSB7IFwKKyAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFp
bHVyZShmaWxlLCBsaW5lLCBmdW5jdGlvbiwgI2Fzc2VydGlvbik7IFwKKyAgICAgICAgQ1JBU0go
KTsgXAorICAgIH0gXAord2hpbGUgKDApCisKICNkZWZpbmUgQVNTRVJUX05PVF9SRUFDSEVEKCkg
ZG8geyBcCiAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18s
IFdURl9QUkVUVFlfRlVOQ1RJT04sIDApOyBcCiAgICAgQ1JBU0goKTsgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGQ3NmE0ODI4ZjhmMmE3ZmJkYjI4MDZjNWQxODUwNmY1NjZhZTZjOTUuLmVkY2UyZjg5OGRkMTQz
MTM1NGM5NjRmMjM0N2RjNTExZjgwMGZhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAor
MjAxMS0wNy0wMyAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZWZhY3RvcmluZzogSWdub3JlZCBFeGNlcHRpb25Db2RlIHZhbHVlIHNob3VsZCBiZSBsZXNz
IGFubm95aW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjM2ODgKKworICAgICAgICAtIEludHJvZHVjZWQgRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVy
IGNsYXNzIGZvciB0aGUgZGVmYXVsdCBwYXJhbWV0ZXIgb2YgRXhjZXB0aW9uQ29kZS4KKyAgICAg
ICAgLSBJbnRyb2R1Y2VkIEFTU0VSVF9OT19FWENFUFRJT04gdG8gY2hlY2sgRXhjZXB0aW9uQ29k
ZSBub3Qgc2V0IHRvIG5vbi16ZXJvIGFmdGVyIHRoZSBjYWxsLgorICAgICAgICAtIEFkb3B0ZWQg
QVNTRVJUX05PX0VYQ0VQVElPTiBpbiBSYW5nZS5jcHAKKworICAgICAgICBObyBuZXcgdGVzdHMu
IE5vIGJlaGF2aW91ciBjaGFuZ2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogZG9tL0V4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlcjo6RXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlcjo6b3BlcmF0b3Ig
RXhjZXB0aW9uQ29kZSYgKToKKyAgICAgICAgKFdlYkNvcmU6Oklnbm9yYWJsZUV4Y2VwdGlvbkNv
ZGU6Oklnbm9yYWJsZUV4Y2VwdGlvbkNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZEV4
Y2VwdGlvbkNvZGU6OkNoZWNrZWRFeGNlcHRpb25Db2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNo
ZWNrZWRFeGNlcHRpb25Db2RlOjp+Q2hlY2tlZEV4Y2VwdGlvbkNvZGUpOgorICAgICAgICAqIGRv
bS9SYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6UmFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2U6OmVkaXRpbmdTdGFydFBvc2l0aW9uKToKKyAgICAgICAgKiBkb20vUmFu
Z2UuaDogICAgICAgIAorCiAyMDExLTA3LTAzICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXN0b3JlIHNjcm9sbCBwb3NpdGlvbiBvbiBwYWdlIHJlbG9hZHMg
c2NoZWR1bGVkIGJ5IDxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IlhYIi8+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAwYWM1YTVhN2MwYWYwMDEwNjFkZjNhODZh
YTFmNWVhZDU2ZjdiMjc0Li5kYzk1YmMzZDY0YWViZTc0Yzk4NTIzYWNiMzUyNTRkMzYwYWZkMGFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTExNzYsNiArMTE3Niw3IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V4Y2x1c2l2ZVRyYWNrTGlz
dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9JZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1l
bnRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L0ljb25VUkwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCBkODE3YTBhY2E4YzMzZTZmM2ExNDM1M2UyYjU3MjgzMjlkODhiNGNi
Li4zOWM1NzYyOTlmMzIyOGUzZDNkYjg5OGY2OTI3OTM4ZDhkYjk2ZjM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC01MzgsNiArNTM4LDcgQEAKICAgICAgICAgICAgICdkb20vTmFtZWROb2RlTWFwLmgn
LAogICAgICAgICAgICAgJ2RvbS9Ob2RlLmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlTGlzdC5o
JywKKyAgICAgICAgICAgICdkb20vTmV2ZXJUaHJvd24uaCcsCiAgICAgICAgICAgICAnZG9tL1Bl
bmRpbmdTY3JpcHQuaCcsCiAgICAgICAgICAgICAnZG9tL1Bvc2l0aW9uLmgnLAogICAgICAgICAg
ICAgJ2RvbS9RdWFsaWZpZWROYW1lLmgnLApAQCAtMjUwNCw2ICsyNTA1LDcgQEAKICAgICAgICAg
ICAgICdkb20vRXhjbHVzaXZlVHJhY2tMaXN0LmgnLAogICAgICAgICAgICAgJ2RvbS9IYXNoQ2hh
bmdlRXZlbnQuaCcsCiAgICAgICAgICAgICAnZG9tL0lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3Vu
dEluY3JlbWVudGVyLmgnLAorICAgICAgICAgICAgJ2RvbS9FeGNlcHRpb25Db2RlUGxhY2Vob2xk
ZXIuaCcsCiAgICAgICAgICAgICAnZG9tL0ljb25VUkwuY3BwJywKICAgICAgICAgICAgICdkb20v
SWNvblVSTC5oJywKICAgICAgICAgICAgICdkb20vS2V5Ym9hcmRFdmVudC5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZi
YzVjMWM1ZTc5Zjk4MDhhNGU4NzY5N2ExNmFhNjRkNzIzMDllNjQuLmMzMDM1OGQwNmVlODFjZGE2
OTA4NzA5NWQ2YmNiNWIzNTgyZGIyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMyODksNiArMzI4OSw3IEBACiAJCUE3MUMz
MEI5MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MUMzMEI3MTM4MTI2NUUwMERC
QzM1MSAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3IuaCAqLzsgfTsKIAkJQTczRjk1RkUxMkM5N0JG
RTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVk
SW50UmVjdC5jcHAgKi87IH07CiAJCUE3M0Y5NUZGMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVk
SW50UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTczRjk1RkQxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTc0QkI3NkIxM0JEQTg2MzAw
RkY3QkYwIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc0QkI3NkExM0JEQTg2MzAwRkY3QkYwIC8qIEV4
Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE3NEMyRDNDMTM4MTFFMEQwMEY4MzU3MiAvKiBTaGFkb3dDb250
ZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTc0QzJEM0IxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc1RTQ5NzYx
MDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RTQ5NzQxMDc1MkFDQjAwQzlCODk2
IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE3NUU0OTc3MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAgKi87IH07CkBAIC05ODEwLDYgKzk4MTEsNyBAQAogCQlBNzFDMzBCNzEzODEyNjVFMDBE
QkMzNTEgLyogU2hhZG93Q29udGVudFNlbGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNoYWRvd0NvbnRlbnRTZWxlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUm91bmRlZEludFJlY3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkgLyog
Um91bmRlZEludFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUm91bmRl
ZEludFJlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc0QkI3NkExM0JEQTg2
MzAwRkY3QkYwIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTc0QzJEM0IxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRl
bnRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRvd0NvbnRl
bnRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NUU0OTc0MTA3NTJB
Q0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NjMzLDYg
KzE5NjM1LDcgQEAKIAkJCQlCQzYwRDhGMTBEMkExMUUwMDBCOTkxOEYgLyogRXhjZXB0aW9uQmFz
ZS5oICovLAogCQkJCTkzODMxQjU2MEQwODdENjAwMEU1Qzk4NCAvKiBFeGNlcHRpb25Db2RlLmNw
cCAqLywKIAkJCQk5MzVGQkNGMTA5QkExNDNCMDBFMjMwQjEgLyogRXhjZXB0aW9uQ29kZS5oICov
LAorCQkJCUE3NEJCNzZBMTNCREE4NjMwMEZGN0JGMCAvKiBFeGNlcHRpb25Db2RlUGxhY2Vob2xk
ZXIuaCAqLywKIAkJCQlCMTJEMjMzNTEzNTYwMjgyMDAyQTI4RDQgLyogRXhjbHVzaXZlVHJhY2tM
aXN0LmNwcCAqLywKIAkJCQlCMTJEMjMzNjEzNTYwMjgyMDAyQTI4RDQgLyogRXhjbHVzaXZlVHJh
Y2tMaXN0LmggKi8sCiAJCQkJQjEyRDIzMzcxMzU2MDI4MjAwMkEyOEQ0IC8qIEV4Y2x1c2l2ZVRy
YWNrTGlzdC5pZGwgKi8sCkBAIC0yMTEyMSw2ICsyMTEyNCw3IEBACiAJCQkJRTEyRURCN0IwQjMw
OEE3ODAwMjcwNEI2IC8qIEV2ZW50VGFyZ2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzYwRDhG
MzBEMkExMUUwMDBCOTkxOEYgLyogRXhjZXB0aW9uQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTM1RkJDRjIwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE3NEJCNzZCMTNCREE4NjMwMEZGN0JGMCAvKiBFeGNlcHRpb25Db2RlUGxhY2Vob2xk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OEFGREE1MEFGNTgzNjAwMDhDQzcwMCAvKiBFeGNl
cHRpb25IYW5kbGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjEyRDIzM0YxMzU2MDI4MjAwMkEy
OEQ0IC8qIEV4Y2x1c2l2ZVRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU2N0QyQTkx
MjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThk
YTQzNTJkODdiMTY0MDg2NWEyNGU0YmE4NWYxNjA4ZmEyMWRjZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaApAQCAtMCwwICsx
LDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKyNpZm5kZWYgRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyX2gKKyNkZWZpbmUgRXhjZXB0aW9u
Q29kZVBsYWNlaG9sZGVyX2gKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3MgRXhj
ZXB0aW9uQ29kZVBsYWNlaG9sZGVyIHsKK3B1YmxpYzoKKyAgICBFeGNlcHRpb25Db2RlUGxhY2Vo
b2xkZXIoKSB7IH0KKyAgICBleHBsaWNpdCBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIoRXhjZXB0
aW9uQ29kZSk7CisKKyAgICBvcGVyYXRvciBFeGNlcHRpb25Db2RlJiAoKSBjb25zdCB7IHJldHVy
biBtX2NvZGU7IH0KKworcHJvdGVjdGVkOgorICAgIG11dGFibGUgRXhjZXB0aW9uQ29kZSBtX2Nv
ZGU7Cit9OworCitpbmxpbmUgRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyOjpFeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIoRXhjZXB0aW9uQ29kZSBjb2RlKQorICAgIDogbV9jb2RlKGNvZGUpCit7Cit9
CisKKworY2xhc3MgSWdub3JhYmxlRXhjZXB0aW9uQ29kZSA6IHB1YmxpYyBFeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIgeworcHVibGljOgorICAgIElnbm9yYWJsZUV4Y2VwdGlvbkNvZGUoKSB7IH0K
K307CisKKyNpZiAhZGVmaW5lZChBU1NFUlRfRElTQUJMRUQpCisKK2NsYXNzIE5vRXhjZXB0aW9u
QXNzZXJ0aW9uQ2hlY2tlciA6IHB1YmxpYyBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIgeworcHVi
bGljOgorICAgIE5vRXhjZXB0aW9uQXNzZXJ0aW9uQ2hlY2tlcihjb25zdCBjaGFyKiwgc2l6ZV90
LCBjb25zdCBjaGFyKik7CisgICAgfk5vRXhjZXB0aW9uQXNzZXJ0aW9uQ2hlY2tlcigpOworCitw
cml2YXRlOgorICAgIGNvbnN0IGNoYXIqIG1fZmlsZTsKKyAgICBzaXplX3QgbV9saW5lOworICAg
IGNvbnN0IGNoYXIqIG1fZnVuY3Rpb247Cit9OworCitpbmxpbmUgTm9FeGNlcHRpb25Bc3NlcnRp
b25DaGVja2VyOjpOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXIoY29uc3QgY2hhciogZmlsZSwg
c2l6ZV90IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uKQorICAgIDogRXhjZXB0aW9uQ29kZVBs
YWNlaG9sZGVyKDApCisgICAgLCBtX2ZpbGUoZmlsZSkKKyAgICAsIG1fbGluZShsaW5lKQorICAg
ICwgbV9mdW5jdGlvbihmdW5jdGlvbikKK3sKK30KKworaW5saW5lIE5vRXhjZXB0aW9uQXNzZXJ0
aW9uQ2hlY2tlcjo6fk5vRXhjZXB0aW9uQXNzZXJ0aW9uQ2hlY2tlcigpCit7CisgICAgQVNTRVJU
X0FUKCFtX2NvZGUsIG1fZmlsZSwgbV9saW5lLCBtX2Z1bmN0aW9uKTsKK30KKworI2RlZmluZSBB
U1NFUlRfTk9fRVhDRVBUSU9OIFdlYkNvcmU6Ok5vRXhjZXB0aW9uQXNzZXJ0aW9uQ2hlY2tlcihf
X0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04pCisjZWxzZQorI2RlZmluZSBB
U1NFUlRfTk9fRVhDRVBUSU9OIFdlYkNvcmU6Oklnbm9yYWJsZUV4Y2VwdGlvbkNvZGUoKQorI2Vu
ZGlmCisKK30KKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IGIyNTc0YTBlMjZhZDU3
MTMwZDgxZTU2ODY5YTU2MDM4ZWM4MTE4ZjEuLjJkMTUwODFlYjk3MzdiNTY5ZGUyN2MxNjU1MzZm
MTgxNWU3MzE4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtODgsMTEgKzg4LDggQEAgaW5saW5l
IFJhbmdlOjpSYW5nZShQYXNzUmVmUHRyPERvY3VtZW50PiBvd25lckRvY3VtZW50LCBQYXNzUmVm
UHRyPE5vZGU+IHN0YXJ0Q28KIAogICAgIC8vIFNpbXBseSBzZXR0aW5nIHRoZSBjb250YWluZXJz
IGFuZCBvZmZzZXRzIGRpcmVjdGx5IHdvdWxkIG5vdCBkbyBhbnkgb2YgdGhlIGNoZWNraW5nCiAg
ICAgLy8gdGhhdCBzZXRTdGFydCBhbmQgc2V0RW5kIGRvLCBzbyB3ZSBjYWxsIHRob3NlIGZ1bmN0
aW9ucy4KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBzZXRTdGFydChzdGFydENvbnRh
aW5lciwgc3RhcnRPZmZzZXQsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKLSAgICBzZXRFbmQoZW5k
Q29udGFpbmVyLCBlbmRPZmZzZXQsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBzZXRTdGFy
dChzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQpOworICAgIHNldEVuZChlbmRDb250YWluZXIs
IGVuZE9mZnNldCk7CiB9CiAKIFBhc3NSZWZQdHI8UmFuZ2U+IFJhbmdlOjpjcmVhdGUoUGFzc1Jl
ZlB0cjxEb2N1bWVudD4gb3duZXJEb2N1bWVudCwgUGFzc1JlZlB0cjxOb2RlPiBzdGFydENvbnRh
aW5lciwgaW50IHN0YXJ0T2Zmc2V0LCBQYXNzUmVmUHRyPE5vZGU+IGVuZENvbnRhaW5lciwgaW50
IGVuZE9mZnNldCkKQEAgLTE1OTUsMTAgKzE1OTIsOSBAQCBQb3NpdGlvbiBSYW5nZTo6ZWRpdGlu
Z1N0YXJ0UG9zaXRpb24oKSBjb25zdAogICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgLy8gaWYgdGhlIHNlbGVjdGlvbiBpcyBhIGNhcmV0LCBqdXN0IHJldHVybiB0aGUgcG9z
aXRpb24sIHNpbmNlIHRoZSBzdHlsZQogICAgIC8vIGJlaGluZCB1cyBpcyByZWxldmFudAotICAg
IGlmIChjb2xsYXBzZWQoZWMpKQorICAgIGlmIChjb2xsYXBzZWQoKSkKICAgICAgICAgcmV0dXJu
IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwogCiAgICAgLy8gaWYgdGhlIHNlbGVj
dGlvbiBzdGFydHMganVzdCBiZWZvcmUgYSBwYXJhZ3JhcGggYnJlYWssIHNraXAgb3ZlciBpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuaAppbmRleCBhYjhjNTU1OTJkYzkyZDAwMjFiN2JmOWIwZWY4NmI2M2RmMDkxMGY2
Li5lNTA5ZjhkODA1MjQyM2M1N2Y5MzZkMzQxMTJhOGRjNDZhNmNlY2VmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2Uu
aApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBSYW5nZV9oCiAjZGVmaW5lIFJhbmdlX2gKIAor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJOb2RlLmgiCkBAIC02MSwxMiAr
NjIsMTIgQEAgcHVibGljOgogICAgIGludCBzdGFydE9mZnNldChFeGNlcHRpb25Db2RlJikgY29u
c3Q7CiAgICAgTm9kZSogZW5kQ29udGFpbmVyKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBp
bnQgZW5kT2Zmc2V0KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBib29sIGNvbGxhcHNlZChF
eGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgYm9vbCBjb2xsYXBzZWQoRXhjZXB0aW9uQ29kZSYg
PSBBU1NFUlRfTk9fRVhDRVBUSU9OKSBjb25zdDsKIAogICAgIE5vZGUqIGNvbW1vbkFuY2VzdG9y
Q29udGFpbmVyKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBzdGF0aWMgTm9kZSogY29tbW9u
QW5jZXN0b3JDb250YWluZXIoTm9kZSogY29udGFpbmVyQSwgTm9kZSogY29udGFpbmVyQik7Ci0g
ICAgdm9pZCBzZXRTdGFydChQYXNzUmVmUHRyPE5vZGU+IGNvbnRhaW5lciwgaW50IG9mZnNldCwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0RW5kKFBhc3NSZWZQdHI8Tm9kZT4gY29udGFp
bmVyLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRTdGFydChQYXNz
UmVmUHRyPE5vZGU+IGNvbnRhaW5lciwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgPSBBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKKyAgICB2b2lkIHNldEVuZChQYXNzUmVmUHRyPE5vZGU+IGNvbnRh
aW5lciwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
ICAgICB2b2lkIGNvbGxhcHNlKGJvb2wgdG9TdGFydCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJv
b2wgaXNQb2ludEluUmFuZ2UoTm9kZSogcmVmTm9kZSwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHNob3J0IGNvbXBhcmVQb2ludChOb2RlKiByZWZOb2RlLCBpbnQgb2Zmc2V0LCBF
eGNlcHRpb25Db2RlJikgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100429</attachid>
            <date>2011-07-11 19:51:22 -0700</date>
            <delta_ts>2011-07-12 20:09:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63688-20110712115120.patch</filename>
            <type>text/plain</type>
            <size>14740</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA4MDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGI5
NDYxMDkzY2M2ODgyYjU5Y2FkYTEwMGU0YzU0YjVmMTg1ZjIzMmIuLjhjMTc0YTEwODg1N2RjMzRh
NmE5MTQ5ZTA0ZTYyNjVlMDAxZjg1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTA3LTAzICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJlZmFjdG9yaW5nOiBJZ25vcmVkIEV4Y2VwdGlvbkNvZGUgdmFsdWUgc2hv
dWxkIGJlIGxlc3MgYW5ub3lpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MzY4OAorCisgICAgICAgIEFkZGVkIEFTU0VSVF9BVCBtYWNyby4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Bc3Nl
cnRpb25zLmg6CisKIDIwMTEtMDctMTEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBERkcgc3BlY3VsYXRpdmUgSklUIGRvZXMgbm90IGd1YXJkIGl0c2VsZiBhZ2Fp
bnN0IGZsb2F0aW5nIHBvaW50IHNwZWN1bGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNz
ZXJ0aW9ucy5oCmluZGV4IDEzNmQ1YmM4MTU4MzlmMTMwNDU3YTEyZjQ5YjMxMGJkOGFiNjA1NjMu
LmFkMjIzOWE1Mzk3YTlhZDhkYzBlNTI4ZmI4NzUzMTI0NWNiMzBkZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCkBAIC0yMzUsNiArMjM1LDcgQEAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgV1RGTG9nVmVyYm9zZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29u
c3QgY2hhciogZnUKICNpZiBBU1NFUlRfRElTQUJMRUQKIAogI2RlZmluZSBBU1NFUlQoYXNzZXJ0
aW9uKSAoKHZvaWQpMCkKKyNkZWZpbmUgQVNTRVJUX0FUKGFzc2VydGlvbiwgZmlsZSwgbGluZSwg
ZnVuY3Rpb24pICgodm9pZCkwKQogI2RlZmluZSBBU1NFUlRfTk9UX1JFQUNIRUQoKSAoKHZvaWQp
MCkKIAogI2lmIENPTVBJTEVSKElOVEVMKSAmJiAhT1MoV0lORE9XUykgfHwgQ09NUElMRVIoUlZD
VCkKQEAgLTI1NCw2ICsyNTUsMTMgQEAgaW5saW5lIHZvaWQgYXNzZXJ0VW51c2VkKFQmIHgpIHsg
KHZvaWQpeDsgfQogICAgIH0gXAogd2hpbGUgKDApCiAKKyNkZWZpbmUgQVNTRVJUX0FUKGFzc2Vy
dGlvbiwgZmlsZSwgbGluZSwgZnVuY3Rpb24pIGRvICBcCisgICAgaWYgKCEoYXNzZXJ0aW9uKSkg
eyBcCisgICAgICAgIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoZmlsZSwgbGluZSwgZnVuY3Rp
b24sICNhc3NlcnRpb24pOyBcCisgICAgICAgIENSQVNIKCk7IFwKKyAgICB9IFwKK3doaWxlICgw
KQorCiAjZGVmaW5lIEFTU0VSVF9OT1RfUkVBQ0hFRCgpIGRvIHsgXAogICAgIFdURlJlcG9ydEFz
c2VydGlvbkZhaWx1cmUoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCAw
KTsgXAogICAgIENSQVNIKCk7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkODVhY2NiMzA1MWVmMWIxYTVhODA1
NTVlYjFmZmYwMmEwM2VlNWQwLi5hNTEwNzAwMGJhMDBlOWUwM2MyOTM0ZDgyMGZkZGMyNWI3NzEy
MmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDctMDMgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3Jpbmc6IElnbm9yZWQg
RXhjZXB0aW9uQ29kZSB2YWx1ZSBzaG91bGQgYmUgbGVzcyBhbm5veWluZy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNjg4CisKKyAgICAgICAgLSBJ
bnRyb2R1Y2VkIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlciBjbGFzcyBmb3IgdGhlIGRlZmF1bHQg
cGFyYW1ldGVyIG9mIEV4Y2VwdGlvbkNvZGUuCisgICAgICAgIC0gSW50cm9kdWNlZCBBU1NFUlRf
Tk9fRVhDRVBUSU9OIHRvIGNoZWNrIEV4Y2VwdGlvbkNvZGUgbm90IHNldCB0byBub24temVybyBh
ZnRlciB0aGUgY2FsbC4KKyAgICAgICAgLSBBZG9wdGVkIEFTU0VSVF9OT19FWENFUFRJT04gaW4g
UmFuZ2UuY3BwCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlvdXIgY2hhbmdlLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9FeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpFeGNlcHRpb25Db2RlUGxh
Y2Vob2xkZXI6OkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpF
eGNlcHRpb25Db2RlUGxhY2Vob2xkZXI6Om9wZXJhdG9yIEV4Y2VwdGlvbkNvZGUmICk6CisgICAg
ICAgIChXZWJDb3JlOjpJZ25vcmFibGVFeGNlcHRpb25Db2RlOjpJZ25vcmFibGVFeGNlcHRpb25D
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoZWNrZWRFeGNlcHRpb25Db2RlOjpDaGVja2VkRXhj
ZXB0aW9uQ29kZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGVja2VkRXhjZXB0aW9uQ29kZTo6fkNo
ZWNrZWRFeGNlcHRpb25Db2RlKToKKyAgICAgICAgKiBkb20vUmFuZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2U6OlJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjplZGl0aW5n
U3RhcnRQb3NpdGlvbik6CisgICAgICAgICogZG9tL1JhbmdlLmg6ICAgICAgICAKKwogMjAxMS0w
Ny0xMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBwb3NpdGlv
bkZvclBvaW50IGlzIGJyb2tlbiB3aGVuIGEgYmxvY2sgaXMgcG9zaXRpb25lZCByZWxhdGl2ZWx5
IGluc2lkZSB0aGUgcGFyZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA2NGRl
YTg4YjUwNzU1NGFhMGExMGRlNWY0MzI3MWZkYWQyYWY3NDhmLi5mMDkwODNmZWY4NjMzMDU1ODE5
MTUzOTM3YzM3NTVhYWJhYTIxZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTExNzYsNiArMTE3Niw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL0V4Y2x1c2l2ZVRyYWNrTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21lbnRT
Y3JpcHRpbmdQZXJtaXNzaW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9JZ25vcmVEZXN0cnVj
dGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0
aW9uQ29kZVBsYWNlaG9sZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0hh
c2hDaGFuZ2VFdmVudC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwNmEyOTk2Mjg2ZTNiZTAzYmFm
MjFlY2NiZDY3ZDM4OTdkYTU3YzBjLi5mZTE4MjVlZjgxODI2OTIzZThmNjc3ZGQxZDJkYzNmZWNl
OWIzOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01MzgsNiArNTM4LDcgQEAKICAgICAgICAgICAg
ICdkb20vTmFtZWROb2RlTWFwLmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlLmgnLAogICAgICAg
ICAgICAgJ2RvbS9Ob2RlTGlzdC5oJywKKyAgICAgICAgICAgICdkb20vTmV2ZXJUaHJvd24uaCcs
CiAgICAgICAgICAgICAnZG9tL1BlbmRpbmdTY3JpcHQuaCcsCiAgICAgICAgICAgICAnZG9tL1Bv
c2l0aW9uLmgnLAogICAgICAgICAgICAgJ2RvbS9RdWFsaWZpZWROYW1lLmgnLApAQCAtMjUwNiw2
ICsyNTA3LDcgQEAKICAgICAgICAgICAgICdkb20vRXhjbHVzaXZlVHJhY2tMaXN0LmgnLAogICAg
ICAgICAgICAgJ2RvbS9IYXNoQ2hhbmdlRXZlbnQuaCcsCiAgICAgICAgICAgICAnZG9tL0lnbm9y
ZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyLmgnLAorICAgICAgICAgICAgJ2RvbS9F
eGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCcsCiAgICAgICAgICAgICAnZG9tL0ljb25VUkwuY3Bw
JywKICAgICAgICAgICAgICdkb20vSWNvblVSTC5oJywKICAgICAgICAgICAgICdkb20vS2V5Ym9h
cmRFdmVudC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDU4NjU4MGQzNzVjMGE1MWZmZTM4NzZjZjA5NmY3ZGYyZDkyMzcw
N2YuLjcwNDk1MzRjNmFmNjY3MTBjNzJkM2VkMThmYTMzNThiYmI5YzcwMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMyOTcs
NiArMzI5Nyw3IEBACiAJCUE3MUMzMEI5MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dDb250ZW50
U2VsZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3MUMzMEI3MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dDb250ZW50U2VsZWN0b3IuaCAqLzsg
fTsKIAkJQTczRjk1RkUxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0Y5NUZDMTJDOTdC
RkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50UmVjdC5jcHAgKi87IH07CiAJCUE3M0Y5NUZGMTJDOTdC
RkUwMDMxQUFGOSAvKiBSb3VuZGVkSW50UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTczRjk1RkQxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJ
bnRSZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQTc0QkI3NkIxM0JEQTg2MzAwRkY3QkYwIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc0QkI3NkEx
M0JEQTg2MzAwRkY3QkYwIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NEMyRDNDMTM4MTFFMEQw
MEY4MzU3MiAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc0QzJEM0IxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRv
d0NvbnRlbnRFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTc1RTQ5NzYxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1
RTQ5NzQxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NUU0OTc3MTA3NTJB
Q0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2IC8q
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi87IH07CkBAIC05ODI2LDYgKzk4MjcsNyBAQAog
CQlBNzFDMzBCNzEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93Q29udGVudFNlbGVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRvd0NvbnRlbnRTZWxlY3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyog
Um91bmRlZEludFJlY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Um91bmRlZEludFJlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzNGOTVG
RDEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUm91bmRlZEludFJlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTc0QkI3NkExM0JEQTg2MzAwRkY3QkYwIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb25Db2RlUGxhY2Vo
b2xkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc0QzJEM0IxMzgxMUUwRDAw
RjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNoYWRvd0NvbnRlbnRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3NUU0OTc0MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5
NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE5NjU3LDYgKzE5NjU5LDcgQEAKIAkJCQlCQzYwRDhGMTBEMkExMUUwMDBC
OTkxOEYgLyogRXhjZXB0aW9uQmFzZS5oICovLAogCQkJCTkzODMxQjU2MEQwODdENjAwMEU1Qzk4
NCAvKiBFeGNlcHRpb25Db2RlLmNwcCAqLywKIAkJCQk5MzVGQkNGMTA5QkExNDNCMDBFMjMwQjEg
LyogRXhjZXB0aW9uQ29kZS5oICovLAorCQkJCUE3NEJCNzZBMTNCREE4NjMwMEZGN0JGMCAvKiBF
eGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCAqLywKIAkJCQlCMTJEMjMzNTEzNTYwMjgyMDAyQTI4
RDQgLyogRXhjbHVzaXZlVHJhY2tMaXN0LmNwcCAqLywKIAkJCQlCMTJEMjMzNjEzNTYwMjgyMDAy
QTI4RDQgLyogRXhjbHVzaXZlVHJhY2tMaXN0LmggKi8sCiAJCQkJQjEyRDIzMzcxMzU2MDI4MjAw
MkEyOEQ0IC8qIEV4Y2x1c2l2ZVRyYWNrTGlzdC5pZGwgKi8sCkBAIC0yMTE0NSw2ICsyMTE0OCw3
IEBACiAJCQkJRTEyRURCN0IwQjMwOEE3ODAwMjcwNEI2IC8qIEV2ZW50VGFyZ2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzYwRDhGMzBEMkExMUUwMDBCOTkxOEYgLyogRXhjZXB0aW9uQmFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1RkJDRjIwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlv
bkNvZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NEJCNzZCMTNCREE4NjMwMEZGN0JGMCAvKiBF
eGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OEFGREE1MEFG
NTgzNjAwMDhDQzcwMCAvKiBFeGNlcHRpb25IYW5kbGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjEyRDIzM0YxMzU2MDI4MjAwMkEyOEQ0IC8qIEV4Y2x1c2l2ZVRyYWNrTGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNkU2N0QyQTkxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29k
ZVBsYWNlaG9sZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZVBsYWNlaG9s
ZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmMyY2I4MTc2YmI3NDhiYTU4ODVkOWFlYTE5ODI4NzcwZmFjODAz
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlUGxh
Y2Vob2xkZXIuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFeGNlcHRpb25Db2RlUGxhY2Vob2xk
ZXJfaAorI2RlZmluZSBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXJfaAorCisjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworCitjbGFzcyBFeGNlcHRp
b25Db2RlUGxhY2Vob2xkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV4Y2VwdGlvbkNv
ZGVQbGFjZWhvbGRlcik7CitwdWJsaWM6CisgICAgRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyKCkg
eyB9CisgICAgZXhwbGljaXQgRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyKEV4Y2VwdGlvbkNvZGUp
OworCisgICAgb3BlcmF0b3IgRXhjZXB0aW9uQ29kZSYgKCkgY29uc3QgeyByZXR1cm4gbV9jb2Rl
OyB9CisKK3Byb3RlY3RlZDoKKyAgICBtdXRhYmxlIEV4Y2VwdGlvbkNvZGUgbV9jb2RlOworfTsK
KworaW5saW5lIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlcjo6RXhjZXB0aW9uQ29kZVBsYWNlaG9s
ZGVyKEV4Y2VwdGlvbkNvZGUgY29kZSkKKyAgICA6IG1fY29kZShjb2RlKQoreworfQorCitjbGFz
cyBJZ25vcmFibGVFeGNlcHRpb25Db2RlIDogcHVibGljIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRl
ciB7Cit9OworCisjaWYgQVNTRVJUX0RJU0FCTEVECisKKyNkZWZpbmUgQVNTRVJUX05PX0VYQ0VQ
VElPTiA6OldlYkNvcmU6Oklnbm9yYWJsZUV4Y2VwdGlvbkNvZGUoKQorCisjZWxzZQorCitjbGFz
cyBOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXIgOiBwdWJsaWMgRXhjZXB0aW9uQ29kZVBsYWNl
aG9sZGVyIHsKK3B1YmxpYzoKKyAgICBOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXIoY29uc3Qg
Y2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uKTsKKyAgICB+Tm9FeGNl
cHRpb25Bc3NlcnRpb25DaGVja2VyKCk7CisKK3ByaXZhdGU6CisgICAgY29uc3QgY2hhciogbV9m
aWxlOworICAgIGludCBtX2xpbmU7CisgICAgY29uc3QgY2hhciogbV9mdW5jdGlvbjsKK307CisK
K2lubGluZSBOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXI6Ok5vRXhjZXB0aW9uQXNzZXJ0aW9u
Q2hlY2tlcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24p
CisgICAgOiBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIoMCkKKyAgICAsIG1fZmlsZShmaWxlKQor
ICAgICwgbV9saW5lKGxpbmUpCisgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQoreworfQorCitp
bmxpbmUgTm9FeGNlcHRpb25Bc3NlcnRpb25DaGVja2VyOjp+Tm9FeGNlcHRpb25Bc3NlcnRpb25D
aGVja2VyKCkKK3sKKyAgICBBU1NFUlRfQVQoIW1fY29kZSwgbV9maWxlLCBtX2xpbmUsIG1fZnVu
Y3Rpb24pOworfQorCisjZGVmaW5lIEFTU0VSVF9OT19FWENFUFRJT04gOjpXZWJDb3JlOjpOb0V4
Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXIoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZV
TkNUSU9OKQorCisjZW5kaWYKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IGIy
NTc0YTBlMjZhZDU3MTMwZDgxZTU2ODY5YTU2MDM4ZWM4MTE4ZjEuLjJkMTUwODFlYjk3MzdiNTY5
ZGUyN2MxNjU1MzZmMTgxNWU3MzE4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9S
YW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtODgsMTEgKzg4
LDggQEAgaW5saW5lIFJhbmdlOjpSYW5nZShQYXNzUmVmUHRyPERvY3VtZW50PiBvd25lckRvY3Vt
ZW50LCBQYXNzUmVmUHRyPE5vZGU+IHN0YXJ0Q28KIAogICAgIC8vIFNpbXBseSBzZXR0aW5nIHRo
ZSBjb250YWluZXJzIGFuZCBvZmZzZXRzIGRpcmVjdGx5IHdvdWxkIG5vdCBkbyBhbnkgb2YgdGhl
IGNoZWNraW5nCiAgICAgLy8gdGhhdCBzZXRTdGFydCBhbmQgc2V0RW5kIGRvLCBzbyB3ZSBjYWxs
IHRob3NlIGZ1bmN0aW9ucy4KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBzZXRTdGFy
dChzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKLSAg
ICBzZXRFbmQoZW5kQ29udGFpbmVyLCBlbmRPZmZzZXQsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsK
KyAgICBzZXRTdGFydChzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQpOworICAgIHNldEVuZChl
bmRDb250YWluZXIsIGVuZE9mZnNldCk7CiB9CiAKIFBhc3NSZWZQdHI8UmFuZ2U+IFJhbmdlOjpj
cmVhdGUoUGFzc1JlZlB0cjxEb2N1bWVudD4gb3duZXJEb2N1bWVudCwgUGFzc1JlZlB0cjxOb2Rl
PiBzdGFydENvbnRhaW5lciwgaW50IHN0YXJ0T2Zmc2V0LCBQYXNzUmVmUHRyPE5vZGU+IGVuZENv
bnRhaW5lciwgaW50IGVuZE9mZnNldCkKQEAgLTE1OTUsMTAgKzE1OTIsOSBAQCBQb3NpdGlvbiBS
YW5nZTo6ZWRpdGluZ1N0YXJ0UG9zaXRpb24oKSBjb25zdAogICAgIGlmICh2aXNpYmxlUG9zaXRp
b24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogCi0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgLy8gaWYgdGhlIHNlbGVjdGlvbiBpcyBhIGNhcmV0LCBqdXN0IHJl
dHVybiB0aGUgcG9zaXRpb24sIHNpbmNlIHRoZSBzdHlsZQogICAgIC8vIGJlaGluZCB1cyBpcyBy
ZWxldmFudAotICAgIGlmIChjb2xsYXBzZWQoZWMpKQorICAgIGlmIChjb2xsYXBzZWQoKSkKICAg
ICAgICAgcmV0dXJuIHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwogCiAgICAgLy8g
aWYgdGhlIHNlbGVjdGlvbiBzdGFydHMganVzdCBiZWZvcmUgYSBwYXJhZ3JhcGggYnJlYWssIHNr
aXAgb3ZlciBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2UuaAppbmRleCBhYjhjNTU1OTJkYzkyZDAwMjFiN2JmOWIwZWY4
NmI2M2RmMDkxMGY2Li5lNTA5ZjhkODA1MjQyM2M1N2Y5MzZkMzQxMTJhOGRjNDZhNmNlY2VmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUmFuZ2UuaApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBSYW5nZV9oCiAjZGVmaW5l
IFJhbmdlX2gKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJOb2RlLmgi
CkBAIC02MSwxMiArNjIsMTIgQEAgcHVibGljOgogICAgIGludCBzdGFydE9mZnNldChFeGNlcHRp
b25Db2RlJikgY29uc3Q7CiAgICAgTm9kZSogZW5kQ29udGFpbmVyKEV4Y2VwdGlvbkNvZGUmKSBj
b25zdDsKICAgICBpbnQgZW5kT2Zmc2V0KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBib29s
IGNvbGxhcHNlZChFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgYm9vbCBjb2xsYXBzZWQoRXhj
ZXB0aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKSBjb25zdDsKIAogICAgIE5vZGUqIGNv
bW1vbkFuY2VzdG9yQ29udGFpbmVyKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBzdGF0aWMg
Tm9kZSogY29tbW9uQW5jZXN0b3JDb250YWluZXIoTm9kZSogY29udGFpbmVyQSwgTm9kZSogY29u
dGFpbmVyQik7Ci0gICAgdm9pZCBzZXRTdGFydChQYXNzUmVmUHRyPE5vZGU+IGNvbnRhaW5lciwg
aW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0RW5kKFBhc3NSZWZQdHI8
Tm9kZT4gY29udGFpbmVyLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBz
ZXRTdGFydChQYXNzUmVmUHRyPE5vZGU+IGNvbnRhaW5lciwgaW50IG9mZnNldCwgRXhjZXB0aW9u
Q29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICB2b2lkIHNldEVuZChQYXNzUmVmUHRy
PE5vZGU+IGNvbnRhaW5lciwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgPSBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKICAgICB2b2lkIGNvbGxhcHNlKGJvb2wgdG9TdGFydCwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIGJvb2wgaXNQb2ludEluUmFuZ2UoTm9kZSogcmVmTm9kZSwgaW50IG9mZnNldCwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIHNob3J0IGNvbXBhcmVQb2ludChOb2RlKiByZWZOb2RlLCBp
bnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100614</attachid>
            <date>2011-07-12 20:09:56 -0700</date>
            <delta_ts>2011-07-13 06:31:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63688-20110713120954.patch</filename>
            <type>text/plain</type>
            <size>14536</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA4NzkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDk2
NDdiMWNmNjgwMjFjODk1NTc5N2FkMTJhOGFiM2RmMDE0ZDAxZGIuLjVhOGQ1MmQ3NTYyNDAzYTBj
ODY2NGQ1NTIyNTNmNmQ5ZDUyNTQ0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTA3LTAzICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJlZmFjdG9yaW5nOiBJZ25vcmVkIEV4Y2VwdGlvbkNvZGUgdmFsdWUgc2hv
dWxkIGJlIGxlc3MgYW5ub3lpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MzY4OAorCisgICAgICAgIEFkZGVkIEFTU0VSVF9BVCBtYWNyby4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Bc3Nl
cnRpb25zLmg6CisKIDIwMTEtMDctMTIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBERkcgSklUIGRvZXMgbm90IGltcGxlbWVudCBvcF9jb25zdHJ1Y3QuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCmluZGV4IDEzNmQ1YmM4MTU4MzlmMTMwNDU3
YTEyZjQ5YjMxMGJkOGFiNjA1NjMuLmFkMjIzOWE1Mzk3YTlhZDhkYzBlNTI4ZmI4NzUzMTI0NWNi
MzBkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCkBAIC0yMzUsNiAr
MjM1LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGTG9nVmVyYm9zZShjb25zdCBjaGFy
KiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnUKICNpZiBBU1NFUlRfRElTQUJMRUQKIAog
I2RlZmluZSBBU1NFUlQoYXNzZXJ0aW9uKSAoKHZvaWQpMCkKKyNkZWZpbmUgQVNTRVJUX0FUKGFz
c2VydGlvbiwgZmlsZSwgbGluZSwgZnVuY3Rpb24pICgodm9pZCkwKQogI2RlZmluZSBBU1NFUlRf
Tk9UX1JFQUNIRUQoKSAoKHZvaWQpMCkKIAogI2lmIENPTVBJTEVSKElOVEVMKSAmJiAhT1MoV0lO
RE9XUykgfHwgQ09NUElMRVIoUlZDVCkKQEAgLTI1NCw2ICsyNTUsMTMgQEAgaW5saW5lIHZvaWQg
YXNzZXJ0VW51c2VkKFQmIHgpIHsgKHZvaWQpeDsgfQogICAgIH0gXAogd2hpbGUgKDApCiAKKyNk
ZWZpbmUgQVNTRVJUX0FUKGFzc2VydGlvbiwgZmlsZSwgbGluZSwgZnVuY3Rpb24pIGRvICBcCisg
ICAgaWYgKCEoYXNzZXJ0aW9uKSkgeyBcCisgICAgICAgIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1
cmUoZmlsZSwgbGluZSwgZnVuY3Rpb24sICNhc3NlcnRpb24pOyBcCisgICAgICAgIENSQVNIKCk7
IFwKKyAgICB9IFwKK3doaWxlICgwKQorCiAjZGVmaW5lIEFTU0VSVF9OT1RfUkVBQ0hFRCgpIGRv
IHsgXAogICAgIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoX19GSUxFX18sIF9fTElORV9fLCBX
VEZfUFJFVFRZX0ZVTkNUSU9OLCAwKTsgXAogICAgIENSQVNIKCk7IFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZTRmY2MyN2Y2NTU5NWMyNjQ3NjQ1YWMxMjJhODJhZjZmYTc1YTg3Li5iOWQ2YmEzNjFkZDhkOWE0
ZjM4OGI2ZjAzNWU0MGExYjY3M2VmMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MTEtMDctMDMgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmVmYWN0b3Jpbmc6IElnbm9yZWQgRXhjZXB0aW9uQ29kZSB2YWx1ZSBzaG91bGQgYmUgbGVzcyBh
bm5veWluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYzNjg4CisKKyAgICAgICAgLSBJbnRyb2R1Y2VkIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlciBj
bGFzcyBmb3IgdGhlIGRlZmF1bHQgcGFyYW1ldGVyIG9mIEV4Y2VwdGlvbkNvZGUuCisgICAgICAg
IC0gSW50cm9kdWNlZCBBU1NFUlRfTk9fRVhDRVBUSU9OIHRvIGNoZWNrIEV4Y2VwdGlvbkNvZGUg
bm90IHNldCB0byBub24temVybyBhZnRlciB0aGUgY2FsbC4KKyAgICAgICAgLSBBZG9wdGVkIEFT
U0VSVF9OT19FWENFUFRJT04gaW4gUmFuZ2UuY3BwCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBO
byBiZWhhdmlvdXIgY2hhbmdlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGRvbS9FeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXI6OkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlcik6
CisgICAgICAgIChXZWJDb3JlOjpFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXI6Om9wZXJhdG9yIEV4
Y2VwdGlvbkNvZGUmICk6CisgICAgICAgIChXZWJDb3JlOjpJZ25vcmFibGVFeGNlcHRpb25Db2Rl
OjpJZ25vcmFibGVFeGNlcHRpb25Db2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoZWNrZWRFeGNl
cHRpb25Db2RlOjpDaGVja2VkRXhjZXB0aW9uQ29kZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGVj
a2VkRXhjZXB0aW9uQ29kZTo6fkNoZWNrZWRFeGNlcHRpb25Db2RlKToKKyAgICAgICAgKiBkb20v
UmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OlJhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlOjplZGl0aW5nU3RhcnRQb3NpdGlvbik6CisgICAgICAgICogZG9tL1Jhbmdl
Lmg6ICAgICAgICAKKwogMjAxMS0wNy0xMiAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ2hyb21pdW0gd2luIGJ1aWxkIGZpeC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDI2NDRmOTFlZjBiODk3ZTAwMzNlOTA2NGIw
YWVhN2Q4ZWZmMTMxYWYuLmZmNWI2ZTczZDUzNjFiZjg2ZTgwOGFiODk2NWEzZWE3N2VmNGYzYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTE3Niw2ICsxMTc2LDcgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRXhjbHVzaXZlVHJhY2tMaXN0
LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9GcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL0lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVu
dGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
SWNvblVSTC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vSGFzaENoYW5nZUV2ZW50LmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IGQ5YzhlMThmNDgwYTZhODA2MDFjMWIyNjRlNjBhYTY0YzkwZTQ0M2Yu
LjYxMzkxMWNhNTc0MjUxNGVmM2ZjODhjZjQ4ZTMyMjc2MGRiN2VjMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTUzOCw2ICs1MzgsNyBAQAogICAgICAgICAgICAgJ2RvbS9OYW1lZE5vZGVNYXAuaCcs
CiAgICAgICAgICAgICAnZG9tL05vZGUuaCcsCiAgICAgICAgICAgICAnZG9tL05vZGVMaXN0Lmgn
LAorICAgICAgICAgICAgJ2RvbS9OZXZlclRocm93bi5oJywKICAgICAgICAgICAgICdkb20vUGVu
ZGluZ1NjcmlwdC5oJywKICAgICAgICAgICAgICdkb20vUG9zaXRpb24uaCcsCiAgICAgICAgICAg
ICAnZG9tL1F1YWxpZmllZE5hbWUuaCcsCkBAIC0yNTA3LDYgKzI1MDgsNyBAQAogICAgICAgICAg
ICAgJ2RvbS9FeGNsdXNpdmVUcmFja0xpc3QuaCcsCiAgICAgICAgICAgICAnZG9tL0hhc2hDaGFu
Z2VFdmVudC5oJywKICAgICAgICAgICAgICdkb20vSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50
SW5jcmVtZW50ZXIuaCcsCisgICAgICAgICAgICAnZG9tL0V4Y2VwdGlvbkNvZGVQbGFjZWhvbGRl
ci5oJywKICAgICAgICAgICAgICdkb20vSWNvblVSTC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9J
Y29uVVJMLmgnLAogICAgICAgICAgICAgJ2RvbS9LZXlib2FyZEV2ZW50LmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGE3
NGM5ODA4NmJmNzI4Mzk3ZWIwMDkzZWZkZTZkNGI1YzM2MWY1MS4uNTE3Yjg5MTgwY2Q3YWJlM2M0
M2E4ZWU1NWM0MDRlMDRhMTlkYWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzI4NSw2ICszMjg1LDcgQEAKIAkJQTcxQzMw
QjkxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3Rvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxQzMwQjcxMzgxMjY1RTAwREJD
MzUxIC8qIFNoYWRvd0NvbnRlbnRTZWxlY3Rvci5oICovOyB9OwogCQlBNzNGOTVGRTEyQzk3QkZF
MDAzMUFBRjkgLyogUm91bmRlZFJlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTczRjk1RkMxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0
LmNwcCAqLzsgfTsKIAkJQTczRjk1RkYxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzNGOTVGRDEy
Qzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNzRCQjc2QjEzQkRBODYzMDBGRjdCRjAgLyogRXhj
ZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzRCQjc2QTEzQkRBODYzMDBGRjdCRjAgLyogRXhjZXB0aW9uQ29kZVBs
YWNlaG9sZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQTc0QzJEM0MxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzRDMkQzQjEz
ODExRTBEMDBGODM1NzIgLyogU2hhZG93Q29udGVudEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzVFNDk3NjEwNzUyQUNCMDBDOUI4
OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTc1RTQ5NzcxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVF
NDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLzsgfTsK
QEAgLTk4MDIsNiArOTgwMyw3IEBACiAJCUE3MUMzMEI3MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFk
b3dDb250ZW50U2VsZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hh
ZG93Q29udGVudFNlbGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3M0Y5
NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkUmVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSb3VuZGVkUmVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3M0Y5NUZEMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkUmVjdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSb3VuZGVkUmVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNzRCQjc2QTEzQkRBODYzMDBGRjdCRjAgLyogRXhjZXB0aW9uQ29k
ZVBsYWNlaG9sZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlv
bkNvZGVQbGFjZWhvbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzRDMkQz
QjEzODExRTBEMDBGODM1NzIgLyogU2hhZG93Q29udGVudEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93Q29udGVudEVsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTc1RTQ5NzQxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1RTQ5NzUxMDc1
MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk2MjEsNiArMTk2MjMsNyBAQAogCQkJCUJDNjBEOEYx
MEQyQTExRTAwMEI5OTE4RiAvKiBFeGNlcHRpb25CYXNlLmggKi8sCiAJCQkJOTM4MzFCNTYwRDA4
N0Q2MDAwRTVDOTg0IC8qIEV4Y2VwdGlvbkNvZGUuY3BwICovLAogCQkJCTkzNUZCQ0YxMDlCQTE0
M0IwMEUyMzBCMSAvKiBFeGNlcHRpb25Db2RlLmggKi8sCisJCQkJQTc0QkI3NkExM0JEQTg2MzAw
RkY3QkYwIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oICovLAogCQkJCUIxMkQyMzM1MTM1
NjAyODIwMDJBMjhENCAvKiBFeGNsdXNpdmVUcmFja0xpc3QuY3BwICovLAogCQkJCUIxMkQyMzM2
MTM1NjAyODIwMDJBMjhENCAvKiBFeGNsdXNpdmVUcmFja0xpc3QuaCAqLywKIAkJCQlCMTJEMjMz
NzEzNTYwMjgyMDAyQTI4RDQgLyogRXhjbHVzaXZlVHJhY2tMaXN0LmlkbCAqLywKQEAgLTIxMTE1
LDYgKzIxMTE4LDcgQEAKIAkJCQlFMTJFREI3QjBCMzA4QTc4MDAyNzA0QjYgLyogRXZlbnRUYXJn
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEOEYzMEQyQTExRTAwMEI5OTE4RiAvKiBFeGNl
cHRpb25CYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVGQkNGMjA5QkExNDNCMDBFMjMwQjEg
LyogRXhjZXB0aW9uQ29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc0QkI3NkIxM0JEQTg2MzAw
RkY3QkYwIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTQ4QUZEQTUwQUY1ODM2MDAwOENDNzAwIC8qIEV4Y2VwdGlvbkhhbmRsZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMTJEMjMzRjEzNTYwMjgyMDAyQTI4RDQgLyogRXhjbHVzaXZlVHJhY2tMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5z
aW9uczNELmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
eGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25D
b2RlUGxhY2Vob2xkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWQ2N2Q4ZjM4MTc4NjU0MWM5MTNiOWI0YzZl
ODgwYmI2ZTlmNDRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2Vw
dGlvbkNvZGVQbGFjZWhvbGRlci5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEV4Y2VwdGlvbkNv
ZGVQbGFjZWhvbGRlcl9oCisjZGVmaW5lIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlcl9oCisKKyNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CisKK2Ns
YXNzIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
RXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyKTsKK3B1YmxpYzoKKyAgICBFeGNlcHRpb25Db2RlUGxh
Y2Vob2xkZXIoKSB7IH0KKyAgICBleHBsaWNpdCBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIoRXhj
ZXB0aW9uQ29kZSk7CisKKyAgICBvcGVyYXRvciBFeGNlcHRpb25Db2RlJiAoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGU7IH0KKworcHJvdGVjdGVkOgorICAgIG11dGFibGUgRXhjZXB0aW9uQ29kZSBt
X2NvZGU7Cit9OworCitpbmxpbmUgRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyOjpFeGNlcHRpb25D
b2RlUGxhY2Vob2xkZXIoRXhjZXB0aW9uQ29kZSBjb2RlKQorICAgIDogbV9jb2RlKGNvZGUpCit7
Cit9CisKK2NsYXNzIElnbm9yYWJsZUV4Y2VwdGlvbkNvZGUgOiBwdWJsaWMgRXhjZXB0aW9uQ29k
ZVBsYWNlaG9sZGVyIHsKK307CisKKyNpZiBBU1NFUlRfRElTQUJMRUQKKworI2RlZmluZSBBU1NF
UlRfTk9fRVhDRVBUSU9OIDo6V2ViQ29yZTo6SWdub3JhYmxlRXhjZXB0aW9uQ29kZSgpCisKKyNl
bHNlCisKK2NsYXNzIE5vRXhjZXB0aW9uQXNzZXJ0aW9uQ2hlY2tlciA6IHB1YmxpYyBFeGNlcHRp
b25Db2RlUGxhY2Vob2xkZXIgeworcHVibGljOgorICAgIE5vRXhjZXB0aW9uQXNzZXJ0aW9uQ2hl
Y2tlcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7CisgICAgfk5vRXhjZXB0aW9uQXNzZXJ0
aW9uQ2hlY2tlcigpOworCitwcml2YXRlOgorICAgIGNvbnN0IGNoYXIqIG1fZmlsZTsKKyAgICBp
bnQgbV9saW5lOworICAgIGNvbnN0IGNoYXIqIG1fZnVuY3Rpb247Cit9OworCitpbmxpbmUgTm9F
eGNlcHRpb25Bc3NlcnRpb25DaGVja2VyOjpOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXIoY29u
c3QgY2hhciogZmlsZSwgaW50IGxpbmUpCisgICAgOiBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIo
MCkKKyAgICAsIG1fZmlsZShmaWxlKQorICAgICwgbV9saW5lKGxpbmUpCit7Cit9CisKK2lubGlu
ZSBOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXI6On5Ob0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNr
ZXIoKQoreworICAgIEFTU0VSVF9BVCghbV9jb2RlLCBtX2ZpbGUsIG1fbGluZSwgIiIpOworfQor
CisjZGVmaW5lIEFTU0VSVF9OT19FWENFUFRJT04gOjpXZWJDb3JlOjpOb0V4Y2VwdGlvbkFzc2Vy
dGlvbkNoZWNrZXIoX19GSUxFX18sIF9fTElORV9fKQorCisjZW5kaWYKKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUmFuZ2UuY3BwCmluZGV4IGIyNTc0YTBlMjZhZDU3MTMwZDgxZTU2ODY5YTU2MDM4ZWM4
MTE4ZjEuLjJkMTUwODFlYjk3MzdiNTY5ZGUyN2MxNjU1MzZmMTgxNWU3MzE4YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1JhbmdlLmNwcApAQCAtODgsMTEgKzg4LDggQEAgaW5saW5lIFJhbmdlOjpSYW5nZShQYXNzUmVm
UHRyPERvY3VtZW50PiBvd25lckRvY3VtZW50LCBQYXNzUmVmUHRyPE5vZGU+IHN0YXJ0Q28KIAog
ICAgIC8vIFNpbXBseSBzZXR0aW5nIHRoZSBjb250YWluZXJzIGFuZCBvZmZzZXRzIGRpcmVjdGx5
IHdvdWxkIG5vdCBkbyBhbnkgb2YgdGhlIGNoZWNraW5nCiAgICAgLy8gdGhhdCBzZXRTdGFydCBh
bmQgc2V0RW5kIGRvLCBzbyB3ZSBjYWxsIHRob3NlIGZ1bmN0aW9ucy4KLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBzZXRTdGFydChzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQsIGVj
KTsKLSAgICBBU1NFUlQoIWVjKTsKLSAgICBzZXRFbmQoZW5kQ29udGFpbmVyLCBlbmRPZmZzZXQs
IGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBzZXRTdGFydChzdGFydENvbnRhaW5lciwgc3Rh
cnRPZmZzZXQpOworICAgIHNldEVuZChlbmRDb250YWluZXIsIGVuZE9mZnNldCk7CiB9CiAKIFBh
c3NSZWZQdHI8UmFuZ2U+IFJhbmdlOjpjcmVhdGUoUGFzc1JlZlB0cjxEb2N1bWVudD4gb3duZXJE
b2N1bWVudCwgUGFzc1JlZlB0cjxOb2RlPiBzdGFydENvbnRhaW5lciwgaW50IHN0YXJ0T2Zmc2V0
LCBQYXNzUmVmUHRyPE5vZGU+IGVuZENvbnRhaW5lciwgaW50IGVuZE9mZnNldCkKQEAgLTE1OTUs
MTAgKzE1OTIsOSBAQCBQb3NpdGlvbiBSYW5nZTo6ZWRpdGluZ1N0YXJ0UG9zaXRpb24oKSBjb25z
dAogICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBQb3Np
dGlvbigpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgLy8gaWYgdGhlIHNlbGVj
dGlvbiBpcyBhIGNhcmV0LCBqdXN0IHJldHVybiB0aGUgcG9zaXRpb24sIHNpbmNlIHRoZSBzdHls
ZQogICAgIC8vIGJlaGluZCB1cyBpcyByZWxldmFudAotICAgIGlmIChjb2xsYXBzZWQoZWMpKQor
ICAgIGlmIChjb2xsYXBzZWQoKSkKICAgICAgICAgcmV0dXJuIHZpc2libGVQb3NpdGlvbi5kZWVw
RXF1aXZhbGVudCgpOwogCiAgICAgLy8gaWYgdGhlIHNlbGVjdGlvbiBzdGFydHMganVzdCBiZWZv
cmUgYSBwYXJhZ3JhcGggYnJlYWssIHNraXAgb3ZlciBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1JhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAppbmRleCBhYjhj
NTU1OTJkYzkyZDAwMjFiN2JmOWIwZWY4NmI2M2RmMDkxMGY2Li5lNTA5ZjhkODA1MjQyM2M1N2Y5
MzZkMzQxMTJhOGRjNDZhNmNlY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaApAQCAtMjUsNiArMjUsNyBAQAog
I2lmbmRlZiBSYW5nZV9oCiAjZGVmaW5lIFJhbmdlX2gKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJl
Y3QuaCIKICNpbmNsdWRlICJOb2RlLmgiCkBAIC02MSwxMiArNjIsMTIgQEAgcHVibGljOgogICAg
IGludCBzdGFydE9mZnNldChFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgTm9kZSogZW5kQ29u
dGFpbmVyKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBpbnQgZW5kT2Zmc2V0KEV4Y2VwdGlv
bkNvZGUmKSBjb25zdDsKLSAgICBib29sIGNvbGxhcHNlZChFeGNlcHRpb25Db2RlJikgY29uc3Q7
CisgICAgYm9vbCBjb2xsYXBzZWQoRXhjZXB0aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9O
KSBjb25zdDsKIAogICAgIE5vZGUqIGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKICAgICBzdGF0aWMgTm9kZSogY29tbW9uQW5jZXN0b3JDb250YWluZXIoTm9k
ZSogY29udGFpbmVyQSwgTm9kZSogY29udGFpbmVyQik7Ci0gICAgdm9pZCBzZXRTdGFydChQYXNz
UmVmUHRyPE5vZGU+IGNvbnRhaW5lciwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZvaWQgc2V0RW5kKFBhc3NSZWZQdHI8Tm9kZT4gY29udGFpbmVyLCBpbnQgb2Zmc2V0LCBFeGNl
cHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRTdGFydChQYXNzUmVmUHRyPE5vZGU+IGNvbnRhaW5l
ciwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAg
ICB2b2lkIHNldEVuZChQYXNzUmVmUHRyPE5vZGU+IGNvbnRhaW5lciwgaW50IG9mZnNldCwgRXhj
ZXB0aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB2b2lkIGNvbGxhcHNlKGJv
b2wgdG9TdGFydCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgaXNQb2ludEluUmFuZ2UoTm9k
ZSogcmVmTm9kZSwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHNob3J0IGNvbXBh
cmVQb2ludChOb2RlKiByZWZOb2RlLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>