<?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>99975</bug_id>
          
          <creation_ts>2012-10-22 03:16:57 -0700</creation_ts>
          <short_desc>Remove ensureAuxiliaryContext</short_desc>
          <delta_ts>2012-10-30 10:21:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dan Carney">dcarney</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>747376</commentid>
    <comment_count>0</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-22 03:16:57 -0700</bug_when>
    <thetext>Remove ensureAuxiliaryContext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747379</commentid>
    <comment_count>1</comment_count>
      <attachid>169867</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-22 03:20:23 -0700</bug_when>
    <thetext>Created attachment 169867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747401</commentid>
    <comment_count>2</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-22 04:02:13 -0700</bug_when>
    <thetext>Looks good to me, but abarth should look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747413</commentid>
    <comment_count>3</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-22 04:33:46 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Looks good to me, but abarth should look.

Definitely. I have no idea why auxilliary contexts exist.  They seem to me mostly like a good source of memory leaks, but I want some confirmation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747581</commentid>
    <comment_count>4</comment_count>
      <attachid>169867</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-22 08:46:52 -0700</bug_when>
    <thetext>Comment on attachment 169867
Patch

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

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:313
&gt; +v8::Local&lt;v8::Context&gt; toV8Context(ScriptExecutionContext* context)

This function is too tempting for people to call, but it will often give the wrong result.  The problem is that you don&apos;t know which worlds context you want to return, especially if there is not JavaScript on the stack.  That&apos;s why the other version of this function requires a world context handle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747624</commentid>
    <comment_count>5</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-22 09:36:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Definitely. I have no idea why auxilliary contexts exist.  They seem to me mostly like a good source of memory leaks, but I want some confirmation.

Jumping in with history:

The IndexedDB implementation used to have the Chromium &quot;browser&quot; process call via IPC into a &quot;worker&quot; process to do some IDB/V8 operations (given serialized script value and key path, return key; given SSV, key path and key, inject key and return new SSV). Note that this was stateless - SSV coming in, SSV or other value coming out immediately. This was creating a new V8 context on each call, which showed up as a CPU hotspot in profiling. We decided to cache the context and named it the &quot;auxiliary context&quot;.

To eliminate the &quot;worker&quot; process and the IPC overhead, these operations were moved to the &quot;renderer&quot; - either performed eagerly (as soon as script performed some IDB operation, before the task made it to the browser) or lazily (the browser would asynchronously notify a specific renderer to initiate a task where it would fetch values to operate on). The auxiliary context may be unnecessary at this point, but when the refactoring (above) was done it was retained based on discussions at the time. (alecflett@ can say more here)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748331</commentid>
    <comment_count>6</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-23 00:35:02 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; Definitely. I have no idea why auxilliary contexts exist.  They seem to me mostly like a good source of memory leaks, but I want some confirmation.
&gt; 
&gt; Jumping in with history:
&gt; 
&gt; The IndexedDB implementation used to have the Chromium &quot;browser&quot; process call via IPC into a &quot;worker&quot; process to do some IDB/V8 operations (given serialized script value and key path, return key; given SSV, key path and key, inject key and return new SSV). Note that this was stateless - SSV coming in, SSV or other value coming out immediately. This was creating a new V8 context on each call, which showed up as a CPU hotspot in profiling. We decided to cache the context and named it the &quot;auxiliary context&quot;.
&gt; 
&gt; To eliminate the &quot;worker&quot; process and the IPC overhead, these operations were moved to the &quot;renderer&quot; - either performed eagerly (as soon as script performed some IDB operation, before the task made it to the browser) or lazily (the browser would asynchronously notify a specific renderer to initiate a task where it would fetch values to operate on). The auxiliary context may be unnecessary at this point, but when the refactoring (above) was done it was retained based on discussions at the time. (alecflett@ can say more here)

Okay, thanks for the clarification. That makes sense. The problem is that generated code in v8 expects a certain prototype chain for the context it is executing in, and the current setup doesn&apos;t have that consistently. Sometimes code that should be executing in the context of a DOMWindow is being executed in the context of the default object (the auxilliaryContext) and vice versa. If the SSV transformations really are all stateless, and they all execute in the auxilliaryContext, it would probably be the best solution in terms of performance. I think though, that my patch will not cause a lot of performance overhead, and will execute in the way that the rest of the system works, which has some readability benefits and is less prone to incomprehensible v8 crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748367</commentid>
    <comment_count>7</comment_count>
      <attachid>170081</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-23 01:30:48 -0700</bug_when>
    <thetext>Created attachment 170081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748372</commentid>
    <comment_count>8</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-23 01:34:54 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 169867 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169867&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8Binding.cpp:313
&gt; &gt; +v8::Local&lt;v8::Context&gt; toV8Context(ScriptExecutionContext* context)
&gt; 
&gt; This function is too tempting for people to call, but it will often give the wrong result.  The problem is that you don&apos;t know which worlds context you want to return, especially if there is not JavaScript on the stack.  That&apos;s why the other version of this function requires a world context handle.

Okay, I&apos;ve modified toV8Context to take a WorldToUse parameter instead.  It&apos;s much more efficient than the implicit conversion to WorldContextHandle that was happening before as it avoids a bunch of checks and the creation of a ScopedPersistent. I&apos;d like to move all the toV8Context code eventually to WorldContextHandle from V8Binding, to make all this more clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748765</commentid>
    <comment_count>9</comment_count>
      <attachid>170081</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-23 10:20:38 -0700</bug_when>
    <thetext>Comment on attachment 170081
Patch

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

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:322
&gt; +            if (worldToUse == UseCurrentWorld) {
&gt; +                if (V8DOMWindowShell* isolatedContext = V8DOMWindowShell::getEntered())
&gt; +                    return v8::Local&lt;v8::Context&gt;::New(isolatedContext-&gt;context());
&gt; +            }
&gt; +            return frame-&gt;script()-&gt;mainWorldContext();

This seems wrong.  If we pass UseCurrentWorld but we&apos;re not in a V8 context, then we&apos;ll return the main world&apos;s context.  Perhaps this function should crash if we&apos;re not in a context?

The underlying problem is that the operation this function is trying to perform is impossible.  It&apos;s not possible to convert a ScriptExecutionContext to a v8::Context because there is a one-to-many relationship between ScriptExecutionContext and v8::Context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752327</commentid>
    <comment_count>10</comment_count>
      <attachid>170081</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-26 13:30:32 -0700</bug_when>
    <thetext>Comment on attachment 170081
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.cpp:322
&gt;&gt; +            return frame-&gt;script()-&gt;mainWorldContext();
&gt; 
&gt; This seems wrong.  If we pass UseCurrentWorld but we&apos;re not in a V8 context, then we&apos;ll return the main world&apos;s context.  Perhaps this function should crash if we&apos;re not in a context?
&gt; 
&gt; The underlying problem is that the operation this function is trying to perform is impossible.  It&apos;s not possible to convert a ScriptExecutionContext to a v8::Context because there is a one-to-many relationship between ScriptExecutionContext and v8::Context.

I&apos;m thinking: a variant of this patch except that instead of this toV8Context(ScriptExecutionContext, WorldToUse) there is a static function in IDBBindingUtilities that does a subset - given a ScriptExecutionContext, assume it&apos;s a Document or WorkerContext (which is true for IDB), which would be the equivalent of always calling this method with UseCurrentWorld. That moves the &quot;risk&quot; to IDB code.

And remove the fallback to mainWorldContext() - if there isn&apos;t a current context (i.e. this is executing outside a script stack), then return a temporary context via v8::Local&lt;v8::Context&gt;()

My confidence in the above is not high, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752345</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-26 13:45:57 -0700</bug_when>
    <thetext>That doesn&apos;t really make sense.  Talking with Alex now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752518</commentid>
    <comment_count>12</comment_count>
      <attachid>171035</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-26 15:55:38 -0700</bug_when>
    <thetext>Created attachment 171035
Patch

Strawman approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752532</commentid>
    <comment_count>13</comment_count>
      <attachid>171035</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-26 16:08:20 -0700</bug_when>
    <thetext>Comment on attachment 171035
Patch

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

&gt; Source/WebCore/ChangeLog:532
&gt; -        has its override logical content height computed.        
&gt; +        has its override logical content height computed.

Please do no remove trailing whitespace from every other ChangeLog entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752534</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-26 16:08:36 -0700</bug_when>
    <thetext>Please look at your diff before you upload it so it&apos;s not full of junk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752535</commentid>
    <comment_count>15</comment_count>
      <attachid>171035</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-26 16:11:24 -0700</bug_when>
    <thetext>Comment on attachment 171035
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:353
&gt; +    ScriptExecutionContext* m_context;

Why is having a raw pointer here safe?

&gt; Source/WebCore/bindings/v8/IDBBindingUtilities.cpp:58
&gt; +v8::Handle&lt;v8::Context&gt; getIDBV8Context(ScriptExecutionContext* context)
&gt; +{
&gt; +    if (context) {
&gt; +        if (context-&gt;isDocument()) {
&gt; +            if (Frame* frame = static_cast&lt;Document*&gt;(context)-&gt;frame()) {
&gt; +                if (V8DOMWindowShell* isolatedContext = V8DOMWindowShell::getEntered())
&gt; +                    return v8::Local&lt;v8::Context&gt;::New(isolatedContext-&gt;context());
&gt; +                return frame-&gt;script()-&gt;mainWorldContext();
&gt; +            }
&gt; +            ASSERT_NOT_REACHED();

This approach is wrong.  I&apos;ve written that several times on this bug.  Having a default fallback to the main world is not correct.  You need to remember the correct world somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752537</commentid>
    <comment_count>16</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-26 16:12:37 -0700</bug_when>
    <thetext>sorry that is just a strawman and I didn&apos;t notice that until after I uploaded it.

Anyway the point is to get people looking at getV8IDBContext()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752538</commentid>
    <comment_count>17</comment_count>
      <attachid>171035</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-26 16:13:43 -0700</bug_when>
    <thetext>Comment on attachment 171035
Patch

(removing review flag completely - this wasn&apos;t intended to be checked in)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752542</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-26 16:15:30 -0700</bug_when>
    <thetext>&gt; Anyway the point is to get people looking at getV8IDBContext()

Trying to recover the v8::Context from the ScriptExecutionContext does not work.  There is a one-to-many relationship between the ScriptExecutionContext and the v8::Context.  If you don&apos;t have the key for that relation (the DOMWrapperWorld or the WorldContextHandle), you cannot correctly transit from a ScriptExecutionContext to a v8::Context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752551</commentid>
    <comment_count>19</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-26 16:23:13 -0700</bug_when>
    <thetext>One of the sources of confusion is that these functions get used in four &quot;contexts&quot;:

(1) script calls into an IDB function with a ScriptValue, which performs &quot;extract&quot; operations on that ScriptValue, then serializes it for storage

(2) a serialized script value is passed into an IDB function at the conclusion of an asynchronous lookup operation; it is deserialized back to a ScriptValue, then it is returned to script via an event callback.

(3) a serialized script value is passed into an IDB function at the conclusion of an asynchronous lookup operation; it is deserialized back to a ScriptValue, then &quot;inject&quot; operations are done to the ScriptValue, and then it is delivered to script via an event callback.

(4) an obscure case: script calls into an IDB function which starts an asynchronous sequence of operations involving lookup, deserialize, and &quot;extract&quot;, entirely within C++ code.

FWIW, the stacks we&apos;re seeing point at #2 or #3 as being the &quot;problematic&quot; case.

It sounds like we may need to be providing that correct v8::Context in #2/#3, during the deserialization and further steps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752567</commentid>
    <comment_count>20</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-26 16:31:51 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; 
&gt; (2) a serialized script value is passed into an IDB function at the conclusion of an asynchronous lookup operation; it is deserialized back to a ScriptValue, then it is returned to script via an event callback.

Clarification: it is deserialized to a ScriptValue then stored as a property on an object, accessed through a getter.

Previous iterations of the code used a SerializedScriptValue which was deserialized on access; in that case, the deserialization would take place using the context of the caller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752607</commentid>
    <comment_count>21</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-26 17:17:38 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; It sounds like we may need to be providing that correct v8::Context in #2/#3, during the deserialization and further steps.

... and it&apos;s unclear to me what that should be, in theory. Assume it&apos;s an IDBRequest that&apos;s handling the async result, trying to deserialized a SerializedScriptValue into a ScriptValue. What is the correct world for that?

In older code, the SSV would be deserialized on attribute access, so the world was on the stack (UseCurrentWorld). This would lead to distinct values being produced on each access. I can imagine the case where an IDBRequest is passed between worlds (window-&gt;iframe), and accessing the attribute causes a deserializtion within each world, leading to objects with distinct prototype chains.

In the newer code... does the IDBRequest (via wrappers) have a world? Or would it have wrappers in each world? If the latter, it seems like this approach is fundamentally flawed unless we can pick one world (the one where the IDBRequest is created?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752614</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-26 17:26:02 -0700</bug_when>
    <thetext>&gt; ... and it&apos;s unclear to me what that should be, in theory. Assume it&apos;s an IDBRequest that&apos;s handling the async result, trying to deserialized a SerializedScriptValue into a ScriptValue. What is the correct world for that?

Whichever world created the IDBRequest.

&gt; In older code, the SSV would be deserialized on attribute access, so the world was on the stack (UseCurrentWorld). This would lead to distinct values being produced on each access. I can imagine the case where an IDBRequest is passed between worlds (window-&gt;iframe),

Moving from a window to an iframe does not change from one world to another.  It&apos;s probably not possible for an IDBRequest to move from one world to another.  Perhaps the IDBRequest should remember which world created it and then ASSERT that it is never accessed in another one?

&gt; and accessing the attribute causes a deserializtion within each world, leading to objects with distinct prototype chains.

You&apos;re describing a problem that occurs when you get the ScriptExecutionContext wrong, not necessarily related to isolated worlds.

&gt; In the newer code... does the IDBRequest (via wrappers) have a world? Or would it have wrappers in each world?

A given wrapper exists only in a single world.  In principle, C++ objects can be exposed to multiple worlds.  For example, DOM nodes are often exposed to multiple worlds.  However, for many objects, there simply isn&apos;t an API that causes multiple worlds to be able to access the same C++ object.  It just depends on the API.

&gt; If the latter, it seems like this approach is fundamentally flawed unless we can pick one world (the one where the IDBRequest is created?)

We can study the API, but I suspect that IDBRequests can only ever be accessed from the world in which they were created.  They should probably remember that world and then ASSERT that they are never accessed in another world.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753226</commentid>
    <comment_count>23</comment_count>
      <attachid>171192</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-29 03:35:16 -0700</bug_when>
    <thetext>Created attachment 171192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753235</commentid>
    <comment_count>24</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-29 03:45:16 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Created an attachment (id=171192) [details]
&gt; Patch

After review of the API a little, it seems that IDBRequest is the place where the context is lost, so I&apos;ve stored it and used it when IDBRequest is called back. Unfortunately, the IDB code doesn&apos;t have any good place to inject platform specific features, or at least none that I saw, so I&apos;ve just used ifdefs for now.  IDBBIndingUtilities isn&apos;t great for this as we need some scoped objects on the stack. I can workaround this later, but this patch should be sufficient to show what needs to be done, which is to ensure that the stored context is on the stack before calling any of those IDBBIndingUtilities functions which need a context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753505</commentid>
    <comment_count>25</comment_count>
      <attachid>171192</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-29 09:25:10 -0700</bug_when>
    <thetext>Comment on attachment 171192
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        * Modules/indexeddb/IDBCursor.cpp:

I believe similar changes would be needed in IDBCursor.cpp/.h to capture/set up the scope before calls to idbKeyToScriptValue() but they&apos;re not present in the patch. Did they get lost?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753546</commentid>
    <comment_count>26</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-29 09:56:42 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; Created an attachment (id=171192) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; After review of the API a little, it seems that IDBRequest is the place where the context is lost, so I&apos;ve stored it and used it when IDBRequest is called back. Unfortunately, the IDB code doesn&apos;t have any good place to inject platform specific features, or at least none that I saw, so I&apos;ve just used ifdefs for now.  IDBBIndingUtilities isn&apos;t great for this as we need some scoped objects on the stack. I can workaround this later, but this patch should be sufficient to show what needs to be done, which is to ensure that the stored context is on the stack before calling any of those IDBBIndingUtilities functions which need a context.

This patch looks great, at least functionality-wise - IDBRequest is indeed the right place to capture the world. It sounds like we just need a new abstraction on top of the world or the v8 context, and we can take that up elsewhere (I&apos;m happy to do the work)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753700</commentid>
    <comment_count>27</comment_count>
      <attachid>171192</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-29 13:19:20 -0700</bug_when>
    <thetext>Comment on attachment 171192
Patch

This is a good short-term fix.  In the long term, we should make IDBRequest a subclass of a bindings-specific object, like we do with Callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753703</commentid>
    <comment_count>28</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-29 13:23:22 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 171192 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171192&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        * Modules/indexeddb/IDBCursor.cpp:
&gt; 
&gt; I believe similar changes would be needed in IDBCursor.cpp/.h to capture/set up the scope before calls to idbKeyToScriptValue() but they&apos;re not present in the patch. Did they get lost?

I thought they are covered as they are always called with an IDBRequest higher up in the stack, but I could be wrong. Maybe some calls are executed differently. I didn&apos;t trace all possible call paths. With all the debug checks enabled though, I didn&apos;t hit any assertions in the layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753707</commentid>
    <comment_count>29</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-29 13:28:35 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; I thought they are covered as they are always called with an IDBRequest higher up in the stack, but I could be wrong. Maybe some calls are executed differently. I didn&apos;t trace all possible call paths. With all the debug checks enabled though, I didn&apos;t hit any assertions in the layout tests.

You&apos;re right, the stack is set up correctly in IDBRequest::dispatchEvent which calls into IDBCursor::setValueReady, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753709</commentid>
    <comment_count>30</comment_count>
      <attachid>171192</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-29 13:29:42 -0700</bug_when>
    <thetext>Comment on attachment 171192
Patch

Great, sounds like we&apos;re ready to land this patch.

Thank you all for iterating on the approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753740</commentid>
    <comment_count>31</comment_count>
      <attachid>171192</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-29 14:05:52 -0700</bug_when>
    <thetext>Comment on attachment 171192
Patch

Clearing flags on attachment: 171192

Committed r132845: &lt;http://trac.webkit.org/changeset/132845&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753742</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-29 14:05:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753880</commentid>
    <comment_count>33</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-10-29 17:05:23 -0700</bug_when>
    <thetext>Reverted r132845 for reason:

Broke chromium builds, linker errors from IDBBindingUtilitiesTest

Committed r132864: &lt;http://trac.webkit.org/changeset/132864&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753883</commentid>
    <comment_count>34</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-10-29 17:07:59 -0700</bug_when>
    <thetext>See first breaking build on Mac:
http://build.chromium.org/p/chromium.webkit/builders/Mac%20Builder%20%28dbg%29/builds/15820</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753884</commentid>
    <comment_count>35</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-10-29 17:09:24 -0700</bug_when>
    <thetext>____Ld ../../../../../xcodebuild/Debug/libwebkit.dylib
    cd /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/third_party/WebKit/Source/WebKit/chromium
    setenv MACOSX_DEPLOYMENT_TARGET 10.6
    /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/third_party/WebKit/Source/WebKit/chromium/../../../../../third_party/llvm-build/Release+Asserts/bin/clang++ -arch i386 -dynamiclib -isysroot /Developer/SDKs/MacOSX10.6.sdk -L/Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/third_party/WebKit/Source/WebKit/chromium/../../../../../xcodebuild/Debug -L/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks -L/Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/third_party/WebKit/Source/WebKit/chromium/../../../../../xcodebuild/Debug -F/Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/third_party/WebKit/Source/WebKit/chromium/../../../../../xcodebuild/Debug -filelist /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/third_party/WebKit/Source/WebKit/chromium/../../../../../xcodebuild/WebKit.build/Debug/webkit.build/Objects-normal/i386/webkit.LinkFileList -install_name @rpath/libwebkit.dylib -Xlinker -rpath -Xlinker @loader_path/. -Xlinker -rpath -Xlinker @loader_path/../../.. -mmacosx-version-min=10.6 -Wl,-search_paths_first /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libwebkit_platform.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libskia.dylib /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libtranslator_glsl.dylib /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libicuuc.dylib /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libv8.dylib -lwebkit_wtf_support /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libwebcore_bindings.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libwebcore_test_support.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libtest_support_base.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libgoogleurl.dylib /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libgtest.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libgmock.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libicudata.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libicui18n.dylib /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libjpeg_turbo.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libpng.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libxml2.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libxslt.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libmodp_b64.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libots.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libchrome_zlib.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libcrnspr.dylib /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libcrnss.dylib /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libwtf.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libwebcore_dom.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libtess.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libyarr.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libiccjpeg.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libwebp_dec.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libwebp_dsp.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libwebp_enc.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libwebp_utils.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libqcms.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libsqlite3.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libgles2_c_lib.dylib /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libleveldatabase.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libbase.dylib /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libdynamic_annotations.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libwebcore_html.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libwebcore_platform.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libharfbuzz-ng.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libwebcore_platform_geometry.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libwebcore_remaining.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libv8-i18n.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libwebcore_rendering.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libwebcore_svg.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libbase_static.a /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/xcodebuild/Debug/libbase_i18n.dylib -framework Accelerate -framework OpenGL -framework AppKit -lWebKitSystemInterfaceLeopardPrivateExtern -framework QuartzCore -framework ApplicationServices -framework Carbon -framework CoreFoundation -framework Foundation -framework IOKit -framework Security -framework CoreServices -prebind -single_module -compatibility_version 1 -current_version 1 -o /Volumes/data/b/build/slave/Mac_Builder__dbg_/build/src/third_party/WebKit/Source/WebKit/chromium/../../../../../xcodebuild/Debug/libwebkit.dylib
Undefined symbols:
  &quot;__ZN6WebKit16FrameTestHelpers20createWebViewAndLoadERKSsbPNS_14WebFrameClientEPNS_13WebViewClientE&quot;, referenced from:
      __ZN12_GLOBAL__N_1L7contextEv in IDBBindingUtilitiesTest.o
ld: symbol(s) not found</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754316</commentid>
    <comment_count>36</comment_count>
      <attachid>171437</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-30 06:45:12 -0700</bug_when>
    <thetext>Created attachment 171437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754317</commentid>
    <comment_count>37</comment_count>
      <attachid>171437</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-30 06:46:00 -0700</bug_when>
    <thetext>Comment on attachment 171437
Patch

Fixed shared library mac build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754456</commentid>
    <comment_count>38</comment_count>
      <attachid>171437</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-30 09:56:23 -0700</bug_when>
    <thetext>Comment on attachment 171437
Patch

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

I think we should land this patch, but we might want to clean up the unit test in a followup patch.

&gt; Source/WebKit/chromium/tests/IDBBindingUtilitiesTest.cpp:104
&gt; +    static WebView* webView;

Rather than having a static WebView, it would be better to create it on the stack for each test.  That makes sure we&apos;re not leaking information between tests

&gt; Source/WebKit/chromium/tests/IDBBindingUtilitiesTest.cpp:110
&gt; +    ScriptExecutionContext* context = static_cast&lt;WebFrameImpl*&gt;(webView-&gt;mainFrame())-&gt;frame()-&gt;document();
&gt; +    return toV8Context(context, WorldContextHandle(UseCurrentWorld));

Given that you only have the main world in these tests, you can get the context from the API using the mainWorldContext() API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754485</commentid>
    <comment_count>39</comment_count>
      <attachid>171437</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-30 10:21:48 -0700</bug_when>
    <thetext>Comment on attachment 171437
Patch

Clearing flags on attachment: 171437

Committed r132922: &lt;http://trac.webkit.org/changeset/132922&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754486</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-30 10:21:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169867</attachid>
            <date>2012-10-22 03:20:23 -0700</date>
            <delta_ts>2012-10-23 01:30:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99975-20121022121901.patch</filename>
            <type>text/plain</type>
            <size>27011</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWU0OTg0NWRhMzM3OWY1
MTgwZGI0OWJlZmE2NjhjYzBiNDdhOGRiYi4uNjFkODE3NzUyYjFiZmRjMDkwNjg0NmY1ZjM5MWZm
YjE0YTA5Yjg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEwLTIyICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBlbnN1cmVBdXhp
bGlhcnlDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05OTk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZWQgYXV4aWxsaWFyeUNvbnRleHQgYXMgdXNlIGlmIGl0IGlzIHByb2JsZW1hdGlj
IGluIElEQi4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFs
aXR5LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6c2V0VmFsdWVSZWFkeSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmg6CisgICAgICAgIChJREJDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlSW5kZXhLZXlz
Rm9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnB1dCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlEQktl
eUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6ZGVzZXJpYWxp
emVJREJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppbmplY3RJREJLZXlJbnRvU2NyaXB0VmFs
dWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b1Y4Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oOgorCiAyMDEyLTEwLTIxICBN
T1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFtWOF0gVjhFbmFi
bGVQZXJDb250ZXh0IHNob3VsZG4ndCByZXF1aXJlIGRvY3VtZW50KCkgYWNjZXNzb3IgdG8gdGhl
IG5hdGl2ZSBvYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGUxNTc3MTZhZjY2
M2U1Mjk1NGMzMjhiOWUwZjE3MjQ2ZDdlMGRjYmQuLjNiMGZlYmVjNTcxYjZkMmEwMGZlOTUxNWYw
M2M5ODlmN2Q2MThkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTItMTAtMjIgIERhbiBDYXJuZXkgIDxkY2FybmV5QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIGVuc3VyZUF1eGlsaWFyeUNvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5OTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0cyB0byB1c2UgY29ycmVjdCB2OCBj
b250ZXh0LgorCisgICAgICAgICogdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpjaGVja0tleUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJLaXQ6OmNoZWNrS2V5UGF0aE51bGxWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6
OmluamVjdEtleSk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrSW5qZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6Y2hlY2tJbmplY3Rpb25GYWlscyk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrS2V5
UGF0aFN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6Y2hlY2tLZXlQYXRoTnVtYmVyVmFs
dWUpOgorICAgICAgICAoV2ViS2l0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlRFU1QpOgorCiAyMDEyLTEwLTIxICBLZW50IFRh
bXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBQYWdlIHBvcHVwOiBGaXggY3Jh
c2ggYnkgZXZlbnRzIGFmdGVyIGNsb3NpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IDk5MGUzYTQ1NTE1MTM5MDk1YjU1YjVkYzZlYTkw
N2RkYzIyOGE0MTkuLjBhYWU0NDRmNzNiYTM1ZTk1OWQ0N2Q2ODVkN2ViZTY1OWJkZjYzZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAt
MTQ2LDcgKzE0Niw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgU2NyaXB0CiAgICAgY29uc3QgSURCS2V5
UGF0aCYga2V5UGF0aCA9IG9iamVjdFN0b3JlLT5tZXRhZGF0YSgpLmtleVBhdGg7CiAgICAgY29u
c3QgYm9vbCB1c2VzSW5MaW5lS2V5cyA9ICFrZXlQYXRoLmlzTnVsbCgpOwogICAgIGlmICh1c2Vz
SW5MaW5lS2V5cykgewotICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXlQYXRoS2V5ID0gY3JlYXRl
SURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwga2V5UGF0aCk7CisgICAgICAg
IFJlZlB0cjxJREJLZXk+IGtleVBhdGhLZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVB
bmRLZXlQYXRoKGNvbnRleHQsIHZhbHVlLCBrZXlQYXRoKTsKICAgICAgICAgaWYgKCFrZXlQYXRo
S2V5IHx8ICFrZXlQYXRoS2V5LT5pc0VxdWFsKG1fY3VycmVudFByaW1hcnlLZXkuZ2V0KCkpKSB7
CiAgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAg
ICAgICAgIHJldHVybiAwOwpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgSURCQ3Vyc29yOjpjbG9z
ZSgpCiAgICAgfQogfQogCi12b2lkIElEQkN1cnNvcjo6c2V0VmFsdWVSZWFkeShQYXNzUmVmUHRy
PElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgU2NyaXB0VmFsdWUm
IHZhbHVlKQordm9pZCBJREJDdXJzb3I6OnNldFZhbHVlUmVhZHkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+
IHByaW1hcnlLZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSkKIHsKICAgICBtX2N1cnJlbnRLZXkgPSBr
ZXk7CiAgICAgbV9jdXJyZW50UHJpbWFyeUtleSA9IHByaW1hcnlLZXk7CkBAIC0yNjksMTAgKzI2
OSwxMCBAQCB2b2lkIElEQkN1cnNvcjo6c2V0VmFsdWVSZWFkeShQYXNzUmVmUHRyPElEQktleT4g
a2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeQogICAgICAgICBjb25zdCBJREJPYmplY3RT
dG9yZU1ldGFkYXRhIG1ldGFkYXRhID0gb2JqZWN0U3RvcmUtPm1ldGFkYXRhKCk7CiAgICAgICAg
IGlmIChtZXRhZGF0YS5hdXRvSW5jcmVtZW50ICYmICFtZXRhZGF0YS5rZXlQYXRoLmlzTnVsbCgp
KSB7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICAgICAgUmVmUHRyPElEQktleT4gZXhwZWN0ZWRL
ZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKHZhbHVlLCBtZXRhZGF0
YS5rZXlQYXRoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+IGV4cGVjdGVkS2V5ID0gY3Jl
YXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChjb250ZXh0LCB2YWx1ZSwgbWV0YWRh
dGEua2V5UGF0aCk7CiAgICAgICAgICAgICBBU1NFUlQoIWV4cGVjdGVkS2V5IHx8IGV4cGVjdGVk
S2V5LT5pc0VxdWFsKG1fY3VycmVudFByaW1hcnlLZXkuZ2V0KCkpKTsKICNlbmRpZgotICAgICAg
ICAgICAgYm9vbCBpbmplY3RlZCA9IGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShtX2N1cnJl
bnRQcmltYXJ5S2V5LCB2YWx1ZSwgbWV0YWRhdGEua2V5UGF0aCk7CisgICAgICAgICAgICBib29s
IGluamVjdGVkID0gaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKGNvbnRleHQsIG1fY3VycmVu
dFByaW1hcnlLZXksIHZhbHVlLCBtZXRhZGF0YS5rZXlQYXRoKTsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGVyZSBpcyBubyB3YXkgdG8gcmVwb3J0IGVycm9ycyBoZXJlLiBNb3ZlIHRoaXMgaW50
byBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uIHNvIHRoYXQgd2UgY2FuIGFib3J0IHRoZSB0cmFu
c2FjdGlvbiB0aGVyZS4gU2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTIyNzgKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5qZWN0ZWQsIGluamVjdGVkKTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
aAppbmRleCA1NTg5YzIyMmZjNTdhOGI1MmY2ZTNmNjVlYmI2OWMyZTdmMjIyNWUwLi43MDRlNTBm
OGM5Yjc0ZTMxMTQ5YzkxMWM0ZjgyMmZlODViNzUyY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7CiAgICAgdm9pZCBjbG9zZSgp
OwotICAgIHZvaWQgc2V0VmFsdWVSZWFkeShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8
SURCS2V5PiBwcmltYXJ5S2V5LCBTY3JpcHRWYWx1ZSYpOworICAgIHZvaWQgc2V0VmFsdWVSZWFk
eShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRy
PElEQktleT4gcHJpbWFyeUtleSwgU2NyaXB0VmFsdWUmKTsKIAogICAgIC8vIFRoZSBzcGVjIHJl
cXVpcmVzIHRoYXQgdGhlIHNjcmlwdCBvYmplY3QgdGhhdCB3cmFwcyB0aGUgdmFsdWUKICAgICAv
LyBiZSB1bmNoYW5nZWQgdW50aWwgdGhlIHZhbHVlIGNoYW5nZXMgYXMgYSByZXN1bHQgb2YgdGhl
IGN1cnNvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuY3BwCmluZGV4IGUzZWMxNWIyOWRhZjY0NDE3MzQyYWVhMjBiZjIxNDVkMmViODY0
NzYuLjFmYmVmNTFkYzA3NzEwYWZkOGQ4NTVmODlkYWU0NmViZmIxMmI3ODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAg
LTEwMSwxMiArMTAxLDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6
OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiAgICAgcmV0dXJuIGdl
dChjb250ZXh0LCBrZXlSYW5nZS5yZWxlYXNlKCksIGVjKTsKIH0KIAotc3RhdGljIHZvaWQgZ2Vu
ZXJhdGVJbmRleEtleXNGb3JWYWx1ZShjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFk
YXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTY3JpcHRW
YWx1ZSYgb2JqZWN0VmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElEQk9iamVjdFN0b3JlOjpJbmRleEtleXMqIGluZGV4S2V5cykKK3N0YXRpYyB2b2lkIGdlbmVy
YXRlSW5kZXhLZXlzRm9yVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSwgY29uc3QgU2NyaXB0VmFsdWUmIG9i
amVjdFZhbHVlLCBJREJPYmplY3RTdG9yZTo6SW5kZXhLZXlzKiBpbmRleEtleXMpCiB7CiAgICAg
QVNTRVJUKGluZGV4S2V5cyk7Ci0gICAgUmVmUHRyPElEQktleT4gaW5kZXhLZXkgPSBjcmVhdGVJ
REJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKG9iamVjdFZhbHVlLCBpbmRleE1ldGFkYXRh
LmtleVBhdGgpOworICAgIFJlZlB0cjxJREJLZXk+IGluZGV4S2V5ID0gY3JlYXRlSURCS2V5RnJv
bVNjcmlwdFZhbHVlQW5kS2V5UGF0aChjb250ZXh0LCBvYmplY3RWYWx1ZSwgaW5kZXhNZXRhZGF0
YS5rZXlQYXRoKTsKIAogICAgIGlmICghaW5kZXhLZXkpCiAgICAgICAgIHJldHVybjsKQEAgLTE4
MSw3ICsxNzksNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQo
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpQdXRNbwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAgICAgaWYgKHVzZXNJbkxpbmVLZXlzKSB7Ci0gICAgICAgIFJlZlB0cjxJREJLZXk+
IGtleVBhdGhLZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKHZhbHVl
LCBrZXlQYXRoKTsKKyAgICAgICAgUmVmUHRyPElEQktleT4ga2V5UGF0aEtleSA9IGNyZWF0ZUlE
QktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoY29udGV4dCwgdmFsdWUsIGtleVBhdGgpOwog
ICAgICAgICBpZiAoa2V5UGF0aEtleSAmJiAha2V5UGF0aEtleS0+aXNWYWxpZCgpKSB7CiAgICAg
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgICAg
IHJldHVybiAwOwpAQCAtMjA4LDcgKzIwNiw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OnB1dChJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1vCiAg
ICAgVmVjdG9yPEluZGV4S2V5cz4gaW5kZXhLZXlzOwogICAgIGZvciAoSURCT2JqZWN0U3RvcmVN
ZXRhZGF0YTo6SW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9tZXRhZGF0YS5pbmRleGVz
LmJlZ2luKCk7IGl0ICE9IG1fbWV0YWRhdGEuaW5kZXhlcy5lbmQoKTsgKytpdCkgewogICAgICAg
ICBJbmRleEtleXMga2V5czsKLSAgICAgICAgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShpdC0+
dmFsdWUsIHZhbHVlLCAma2V5cyk7CisgICAgICAgIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUo
Y29udGV4dCwgaXQtPnZhbHVlLCB2YWx1ZSwgJmtleXMpOwogICAgICAgICBpbmRleE5hbWVzLmFw
cGVuZChpdC0+a2V5KTsKICAgICAgICAgaW5kZXhLZXlzLmFwcGVuZChrZXlzKTsKICAgICB9CkBA
IC0zMzIsNyArMzMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFNjcmlwdFZhbHVlIHZhbHVl
ID0gdmFsdWVBbnktPnNjcmlwdFZhbHVlKCk7CiAKICAgICAgICAgICAgIElEQk9iamVjdFN0b3Jl
OjpJbmRleEtleXMgaW5kZXhLZXlzOwotICAgICAgICAgICAgZ2VuZXJhdGVJbmRleEtleXNGb3JW
YWx1ZShtX2luZGV4TWV0YWRhdGEsIHZhbHVlLCAmaW5kZXhLZXlzKTsKKyAgICAgICAgICAgIGdl
bmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUoY29udGV4dCwgbV9pbmRleE1ldGFkYXRhLCB2YWx1ZSwg
JmluZGV4S2V5cyk7CiAKICAgICAgICAgICAgIFZlY3RvcjxJREJPYmplY3RTdG9yZTo6SW5kZXhL
ZXlzLCAxPiBpbmRleEtleXNMaXN0OwogICAgICAgICAgICAgaW5kZXhLZXlzTGlzdC5hcHBlbmQo
aW5kZXhLZXlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5jcHAKaW5kZXggMGI1MDJkNzQyYzRiYWM2Y2MxMjM0MDM2ZDM3NjZlY2VjZTVhOTUyMi4u
OGJmY2QyYjhkODdiYzhhZjQ5OGNjYjRhMWJlZGRkNzkyOWZmNmE5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTM3MCwxMCArMzcw
LDEwIEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBwcnBTZXJpYWxpemVkU2NyaXB0CiAKICAgICBSZWZQdHI8SURCS2V5PiBwcmlt
YXJ5S2V5ID0gcHJwUHJpbWFyeUtleTsKICNpZm5kZWYgTkRFQlVHCi0gICAgUmVmUHRyPElEQktl
eT4gZXhwZWN0ZWRLZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKHZh
bHVlLCBrZXlQYXRoKTsKKyAgICBSZWZQdHI8SURCS2V5PiBleHBlY3RlZEtleSA9IGNyZWF0ZUlE
QktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB2
YWx1ZSwga2V5UGF0aCk7CiAgICAgQVNTRVJUKCFleHBlY3RlZEtleSB8fCBleHBlY3RlZEtleS0+
aXNFcXVhbChwcmltYXJ5S2V5LmdldCgpKSk7CiAjZW5kaWYKLSAgICBib29sIGluamVjdGVkID0g
aW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKHByaW1hcnlLZXksIHZhbHVlLCBrZXlQYXRoKTsK
KyAgICBib29sIGluamVjdGVkID0gaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgcHJpbWFyeUtleSwgdmFsdWUsIGtleVBhdGgpOwogICAgIEFTU0VS
VF9VTlVTRUQoaW5qZWN0ZWQsIGluamVjdGVkKTsKICAgICBvblN1Y2Nlc3NJbnRlcm5hbCh2YWx1
ZSk7CiB9CkBAIC00NzMsNyArNDczLDcgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5zdWNjZXNzRXZlbnQpIHsKICAgICAgICAgY3Vyc29yVG9Ob3RpZnkgPSBnZXRSZXN1
bHRDdXJzb3IoKTsKICAgICAgICAgaWYgKGN1cnNvclRvTm90aWZ5KQotICAgICAgICAgICAgY3Vy
c29yVG9Ob3RpZnktPnNldFZhbHVlUmVhZHkobV9jdXJzb3JLZXkucmVsZWFzZSgpLCBtX2N1cnNv
clByaW1hcnlLZXkucmVsZWFzZSgpLCBtX2N1cnNvclZhbHVlKTsKKyAgICAgICAgICAgIGN1cnNv
clRvTm90aWZ5LT5zZXRWYWx1ZVJlYWR5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9jdXJz
b3JLZXkucmVsZWFzZSgpLCBtX2N1cnNvclByaW1hcnlLZXkucmVsZWFzZSgpLCBtX2N1cnNvclZh
bHVlKTsKICAgICB9CiAKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudXBn
cmFkZW5lZWRlZEV2ZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lE
QkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IDZhODMxMWZiNjA0Y2U1MDA2ZDFkYmUyMDNlOWVj
NWUwMGZlZGExOWMuLjg5MmJlZGY1ODg5NjE0MGE0MmJjODY2YWEzODk5ZTYxYzhjOWIyNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMu
Y3BwCkBAIC0xODAsOSArMTgwLDYgQEAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJ
REJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKGNvbnN0IFNjcmlwdFZhbHUKICAgICBJREJQ
YXJzZUtleVBhdGgoa2V5UGF0aCwga2V5UGF0aEVsZW1lbnRzLCBlcnJvcik7CiAgICAgQVNTRVJU
KGVycm9yID09IElEQktleVBhdGhQYXJzZUVycm9yTm9uZSk7CiAKLSAgICB2ODo6SGFuZGxlU2Nv
cGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKFY4UGVySXNvbGF0
ZURhdGE6OmN1cnJlbnQoKS0+ZW5zdXJlQXV4aWxpYXJ5Q29udGV4dCgpKTsKLQogICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2OFZhbHVlKHZhbHVlLnY4VmFsdWUoKSk7CiAgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHY4S2V5KGdldE50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGhF
bGVtZW50cywga2V5UGF0aEVsZW1lbnRzLnNpemUoKSkpOwogICAgIGlmICh2OEtleS5Jc0VtcHR5
KCkpCkBAIC0xOTAsMTIgKzE4NywxMyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0
ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoY29uc3QgU2NyaXB0VmFsdQogICAgIHJl
dHVybiBjcmVhdGVJREJLZXlGcm9tVmFsdWUodjhLZXkpOwogfQogCi1QYXNzUmVmUHRyPElEQktl
eT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChjb25zdCBTY3JpcHRWYWx1
ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCitQYXNzUmVmUHRyPElEQktleT4g
Y3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRDb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgpCiB7CiAgICAgSURCX1RSQUNFKCJjcmVhdGVJREJLZXlGcm9tU2NyaXB0
VmFsdWVBbmRLZXlQYXRoIik7CiAgICAgQVNTRVJUKCFrZXlQYXRoLmlzTnVsbCgpKTsKIAotICAg
IHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7
CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHRvVjhDb250ZXh0KHNjcmlwdENvbnRleHQp
KTsKICAgICBpZiAoa2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6QXJyYXlUeXBlKSB7CiAg
ICAgICAgIElEQktleTo6S2V5QXJyYXkgcmVzdWx0OwogICAgICAgICBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYXJyYXkgPSBrZXlQYXRoLmFycmF5KCk7CkBAIC0yMTIsMTggKzIxMCwxNyBAQCBQYXNz
UmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChjb25z
dCBTY3JpcHRWYWx1ZSYgdmFsdQogICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFs
dWVBbmRLZXlQYXRoKHZhbHVlLCBrZXlQYXRoLnN0cmluZygpKTsKIH0KIAotLy8gRklYTUU6IFRo
ZSBvbmx5IHJlYXNvbiB0aGlzIGV4aXN0cyBpcyBiZWNhdXNlIHdlIG5lZWQgYSB2ODo6Q29udGV4
dCBhbmQgc2NvcGUgaW5zaWRlIGEgdGltZXIuIElzIHRoZXJlIGEgYmV0dGVyIC8gbW9yZSBnZW5l
cmFsIHdheSB0byBkbyB0aGlzPwogU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gcHJwVmFsdWUpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodG9WOENvbnRleHQoc2NyaXB0
Q29udGV4dCwgVXNlQ3VycmVudFdvcmxkKSk7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRl
eHRTY29wZSh0b1Y4Q29udGV4dChzY3JpcHRDb250ZXh0KSk7CiAgICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gcHJwVmFsdWU7CiAgICAgaWYgKHNlcmlh
bGl6ZWRWYWx1ZSkKICAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKHNlcmlhbGl6ZWRWYWx1ZS0+
ZGVzZXJpYWxpemUoKSk7CiAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKHY4OjpOdWxsKCkpOwogfQog
Ci1ib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5
LCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCitib29sIGlu
amVjdElEQktleUludG9TY3JpcHRWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRD
b250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0
IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgSURCX1RSQUNFKCJpbmplY3RJREJLZXlJbnRv
U2NyaXB0VmFsdWUiKTsKIApAQCAtMjM3LDcgKzIzNCw3IEBAIGJvb2wgaW5qZWN0SURCS2V5SW50
b1NjcmlwdFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwg
Y29uCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50
KCktPmVuc3VyZUF1eGlsaWFyeUNvbnRleHQoKSk7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNj
b3BlKHRvVjhDb250ZXh0KHNjcmlwdENvbnRleHQpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2OFZhbHVlKHZhbHVlLnY4VmFsdWUoKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHBhcmVudChlbnN1cmVOdGhWYWx1ZU9uS2V5UGF0aCh2OFZhbHVlLCBrZXlQYXRoRWxlbWVudHMs
IGtleVBhdGhFbGVtZW50cy5zaXplKCkgLSAxKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgKaW5kZXggYTQ4MmRjOTc0MWIyOWFlYzhhNWUx
MTEzY2Y3ZmU1ZjM3YWZhZjRhMS4uYzkyODk3YTFhNTc2ZDg5ZDA1MTgzNDhkYzRmMjcwOWE3MjBi
MmY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGls
aXRpZXMuaApAQCAtNDAsOCArNDAsOCBAQCBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAK
IFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tVmFsdWUodjg6OkhhbmRsZTx2ODo6
VmFsdWU+KTsKIAotYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoUGFzc1JlZlB0cjxJ
REJLZXk+LCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKLVBhc3NSZWZQdHI8SURC
S2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKGNvbnN0IFNjcmlwdFZh
bHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOworYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFs
dWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgU2NyaXB0VmFs
dWUmLCBjb25zdCBJREJLZXlQYXRoJik7CitQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5
RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CiBib29sIGNhbkluamVjdElEQktleUlu
dG9TY3JpcHRWYWx1ZShjb25zdCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKIFNj
cmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IGEyZDVkZjRmNWM0MGYxYWMzMjUwNjc5MjE3NmJhNjNj
OWNkMzUwMDEuLjk0Y2M4Nzc3YjU0ZmRmZGQwNWI3YWM1ZTg4MDliYzM0ODEzYmM5OWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtMzEwLDYgKzMxMCwyMyBA
QCB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHRvVjhDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFdvcmxkQwogICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRl
eHQ+KCk7CiB9CiAKK3Y4OjpMb2NhbDx2ODo6Q29udGV4dD4gdG9WOENvbnRleHQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgp
KSB7CisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNv
bnRleHQpLT5mcmFtZSgpKSB7CisgICAgICAgICAgICBpZiAoVjhET01XaW5kb3dTaGVsbCogaXNv
bGF0ZWRDb250ZXh0ID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcoaXNvbGF0ZWRDb250ZXh0
LT5jb250ZXh0KCkpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS0+bWFpbldv
cmxkQ29udGV4dCgpOworICAgICAgICB9CisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAgfSBlbHNl
IGlmIChjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkgeworICAgICAgICBpZiAoV29ya2VyQ29u
dGV4dEV4ZWN1dGlvblByb3h5KiBwcm94eSA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihj
b250ZXh0KS0+c2NyaXB0KCktPnByb3h5KCkpCisgICAgICAgICAgICByZXR1cm4gcHJveHktPmNv
bnRleHQoKTsKKyNlbmRpZgorICAgIH0KKyAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0
PigpOworfQorCiBWOFBlckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YUZvckN1cnJlbnRXb3Js
ZChGcmFtZSogZnJhbWUpCiB7CiAgICAgVjhET01XaW5kb3dTaGVsbCogaXNvbGF0ZWRTaGVsbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggYTQwZTc1YWFlZjMzNzUz
ZDM0ODdkMzU0NmQzYzUwZTVkZDcwNGU4NC4uZmQ5YmIxZTIxNTQ3ZTU0MzBiZGY0OGRiNmVmYmVj
OTM2Zjg0OGI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTM3
Miw2ICszNzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBj
b250ZXh0IGFzc29jaWF0ZWQgd2l0aCBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuCiAgICAgdjg6
OkxvY2FsPHY4OjpDb250ZXh0PiB0b1Y4Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgV29ybGRDb250ZXh0SGFuZGxlJik7CisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiB0
b1Y4Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICAvLyBSZXR1cm5zIHRo
ZSBmcmFtZSBvYmplY3Qgb2YgdGhlIHdpbmRvdyBvYmplY3QgYXNzb2NpYXRlZCB3aXRoCiAgICAg
Ly8gYSBjb250ZXh0LCBpZiB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBiZWluZyBkaXNwbGF5ZWQg
aW4gdGhlIEZyYW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQ
ZXJJc29sYXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xh
dGVEYXRhLmNwcAppbmRleCBmNWNkMzhhYmQwNDZjZTFkYjc1MmI3YTE2OGY5NzYyZWFmNDMxYzI3
Li40OGI0MmQ5NDcxYWVmZDE2YjVmNjQ0ZmY1Mjk1MzM0ZWQ5MTQxMmExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcApAQCAtMTE2LDEzICsx
MTYsNiBAQCB2b2lkIFY4UGVySXNvbGF0ZURhdGE6OnZpc2l0RXh0ZXJuYWxTdHJpbmdzKEV4dGVy
bmFsU3RyaW5nVmlzaXRvciogdmlzaXRvcikKIH0KICNlbmRpZgogCi12ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBWOFBlcklzb2xhdGVEYXRhOjplbnN1cmVBdXhpbGlhcnlDb250ZXh0KCkKLXsKLSAg
ICBpZiAobV9hdXhpbGlhcnlDb250ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgbV9hdXhpbGlhcnlD
b250ZXh0LmFkb3B0KHY4OjpDb250ZXh0OjpOZXcoKSk7Ci0gICAgcmV0dXJuIG1fYXV4aWxpYXJ5
Q29udGV4dC5nZXQoKTsKLX0KLQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4UGVySXNvbGF0ZURh
dGE6OmNvbnN0cnVjdG9yT2ZUb1N0cmluZyhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIC8vIFRoZSBET00gY29uc3RydWN0b3JzJyB0b1N0cmluZyBmdW5jdGlvbnMgZ3JhYiB0aGUg
Y3VycmVudCB0b1N0cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQZXJJc29sYXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29s
YXRlRGF0YS5oCmluZGV4IDEwODI5ODYzODI0YzI4NDE4M2E4ZGZlZDFiMDliM2U0ZDQxYmM3NTAu
LmM4NTVmNDc2ZDZlMTM3YzdiNGIwN2EyYmViZDM4YTQ3NDkzYjgxM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmgKQEAgLTgxLDcgKzgxLDYgQEAg
cHVibGljOgogICAgIERPTURhdGFMaXN0JiBhbGxTdG9yZXMoKSB7IHJldHVybiBtX2RvbURhdGFM
aXN0OyB9CiAKICAgICBWOEhpZGRlblByb3BlcnR5TmFtZSogaGlkZGVuUHJvcGVydHlOYW1lKCkg
eyByZXR1cm4gbV9oaWRkZW5Qcm9wZXJ0eU5hbWUuZ2V0KCk7IH0KLSAgICB2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBlbnN1cmVBdXhpbGlhcnlDb250ZXh0KCk7CiAKICAgICB2b2lkIHJlZ2lzdGVy
RE9NRGF0YVN0b3JlKERPTURhdGFTdG9yZSogZG9tRGF0YVN0b3JlKSAKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rl
c3QuY3BwCmluZGV4IDQ2NzEwZTc0NTY4YTc0ZmFjNWZlNWY1MDc5M2FjMmM5YTljMmZiMGYuLjc3
YjcxM2NlOTI5MTY2ZWUzMGFjYjg0ZGU3OTA4YWFjMjA5ZGRlODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3Bw
CkBAIC0yNCwxMSArMjQsMTggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVGVzdEhl
bHBlcnMuaCIKICNpbmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSURC
S2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgog
I2luY2x1ZGUgIlY4UGVySXNvbGF0ZURhdGEuaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgor
I2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVk
ZSAiV2ViVmlldy5oIgogCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CkBAIC0zNiw5MiArNDMsMTA2IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IAogbmFtZXNwYWNlIHsKIAotUGFzc1JlZlB0cjxJREJLZXk+IGNoZWNrS2V5RnJvbVZhbHVlQW5k
S2V5UGF0aEludGVybmFsKGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoKQorUGFzc1JlZlB0cjxJREJLZXk+IGNoZWNrS2V5RnJvbVZhbHVlQW5kS2V5UGF0aElu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVl
JiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewogICAgIElEQktleVBhdGggaWRiS2V5
UGF0aChrZXlQYXRoKTsKICAgICBFWFBFQ1RfVFJVRShpZGJLZXlQYXRoLmlzVmFsaWQoKSk7CiAg
ICAgCi0gICAgcmV0dXJuIGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgodmFs
dWUsIGlkYktleVBhdGgpOworICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVB
bmRLZXlQYXRoKGNvbnRleHQsIHZhbHVlLCBpZGJLZXlQYXRoKTsKIH0KIAotdm9pZCBjaGVja0tl
eVBhdGhOdWxsVmFsdWUoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtl
eVBhdGgpCit2b2lkIGNoZWNrS2V5UGF0aE51bGxWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCkKIHsKLSAgICBSZWZQdHI8SURCS2V5PiBpZGJLZXkgPSBjaGVja0tleUZyb21WYWx1ZUFuZEtl
eVBhdGhJbnRlcm5hbCh2YWx1ZSwga2V5UGF0aCk7CisgICAgUmVmUHRyPElEQktleT4gaWRiS2V5
ID0gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwoY29udGV4dCwgdmFsdWUsIGtl
eVBhdGgpOwogICAgIEFTU0VSVF9GQUxTRShpZGJLZXkuZ2V0KCkpOwogfQogCi1ib29sIGluamVj
dEtleShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCkKK2Jvb2wgaW5qZWN0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoKQogewogICAgIElEQktleVBhdGggaWRiS2V5UGF0aChrZXlQYXRoKTsK
ICAgICBFWFBFQ1RfVFJVRShpZGJLZXlQYXRoLmlzVmFsaWQoKSk7Ci0gICAgcmV0dXJuIGluamVj
dElEQktleUludG9TY3JpcHRWYWx1ZShrZXksIHZhbHVlLCBpZGJLZXlQYXRoKTsKKyAgICByZXR1
cm4gaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKGNvbnRleHQsIGtleSwgdmFsdWUsIGlkYktl
eVBhdGgpOwogfQogCi12b2lkIGNoZWNrSW5qZWN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBL
ZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQordm9pZCBjaGVj
a0luamVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElE
QktleT4gcHJwS2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkK
IHsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBwcnBLZXk7Ci0gICAgYm9vbCByZXN1bHQgPSBp
bmplY3RLZXkoa2V5LCB2YWx1ZSwga2V5UGF0aCk7CisgICAgYm9vbCByZXN1bHQgPSBpbmplY3RL
ZXkoY29udGV4dCwga2V5LCB2YWx1ZSwga2V5UGF0aCk7CiAgICAgQVNTRVJUX1RSVUUocmVzdWx0
KTsKLSAgICBSZWZQdHI8SURCS2V5PiBleHRyYWN0ZWRLZXkgPSBjaGVja0tleUZyb21WYWx1ZUFu
ZEtleVBhdGhJbnRlcm5hbCh2YWx1ZSwga2V5UGF0aCk7CisgICAgUmVmUHRyPElEQktleT4gZXh0
cmFjdGVkS2V5ID0gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwoY29udGV4dCwg
dmFsdWUsIGtleVBhdGgpOwogICAgIEVYUEVDVF9UUlVFKGtleS0+aXNFcXVhbChleHRyYWN0ZWRL
ZXkuZ2V0KCkpKTsKIH0KIAotdm9pZCBjaGVja0luamVjdGlvbkZhaWxzKFBhc3NSZWZQdHI8SURC
S2V5PiBrZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQordm9p
ZCBjaGVja0luamVjdGlvbkZhaWxzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoKQogewotICAgIEVYUEVDVF9GQUxTRShpbmplY3RLZXkoa2V5LCB2YWx1ZSwga2V5UGF0
aCkpOworICAgIEVYUEVDVF9GQUxTRShpbmplY3RLZXkoY29udGV4dCwga2V5LCB2YWx1ZSwga2V5
UGF0aCkpOwogfQogCi12b2lkIGNoZWNrS2V5UGF0aFN0cmluZ1ZhbHVlKGNvbnN0IFNjcmlwdFZh
bHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVk
KQordm9pZCBjaGVja0tleVBhdGhTdHJpbmdWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwg
Y29uc3QgU3RyaW5nJiBleHBlY3RlZCkKIHsKLSAgICBSZWZQdHI8SURCS2V5PiBpZGJLZXkgPSBj
aGVja0tleUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbCh2YWx1ZSwga2V5UGF0aCk7CisgICAg
UmVmUHRyPElEQktleT4gaWRiS2V5ID0gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJu
YWwoY29udGV4dCwgdmFsdWUsIGtleVBhdGgpOwogICAgIEFTU0VSVF9UUlVFKGlkYktleS5nZXQo
KSk7CiAgICAgQVNTRVJUX0VRKElEQktleTo6U3RyaW5nVHlwZSwgaWRiS2V5LT50eXBlKCkpOwog
ICAgIEFTU0VSVF9UUlVFKGV4cGVjdGVkID09IGlkYktleS0+c3RyaW5nKCkpOwogfQogCi12b2lk
IGNoZWNrS2V5UGF0aE51bWJlclZhbHVlKGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBpbnQgZXhwZWN0ZWQpCit2b2lkIGNoZWNrS2V5UGF0aE51bWJlclZh
bHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiB2
YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBpbnQgZXhwZWN0ZWQpCiB7Ci0gICAgUmVmUHRy
PElEQktleT4gaWRiS2V5ID0gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwodmFs
dWUsIGtleVBhdGgpOworICAgIFJlZlB0cjxJREJLZXk+IGlkYktleSA9IGNoZWNrS2V5RnJvbVZh
bHVlQW5kS2V5UGF0aEludGVybmFsKGNvbnRleHQsIHZhbHVlLCBrZXlQYXRoKTsKICAgICBBU1NF
UlRfVFJVRShpZGJLZXkuZ2V0KCkpOwogICAgIEFTU0VSVF9FUShJREJLZXk6Ok51bWJlclR5cGUs
IGlkYktleS0+dHlwZSgpKTsKICAgICBBU1NFUlRfVFJVRShleHBlY3RlZCA9PSBpZGJLZXktPm51
bWJlcigpKTsKIH0KIAorc3RhdGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKQoreworICAgIHN0YXRpYyBXZWJWaWV3KiB3ZWJWaWV3OworICAgIGlmICgh
d2ViVmlldykgeworICAgICAgICB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2Vi
Vmlld0FuZExvYWQoImFib3V0OmJsYW5rIik7CisgICAgICAgIHdlYlZpZXctPnNldEZvY3VzKHRy
dWUpOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4od2ViVmll
dy0+bWFpbkZyYW1lKCkpLT5mcmFtZSgpLT5kb2N1bWVudCgpOworfQorCiBURVNUKElEQktleUZy
b21WYWx1ZUFuZEtleVBhdGhUZXN0LCBUb3BMZXZlbFByb3BlcnR5U3RyaW5nVmFsdWUpCiB7Cisg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OkNvbnRleHQ6
OlNjb3BlIHNjb3BlKFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+ZW5zdXJlQXV4aWxpYXJ5
Q29udGV4dCgpKTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodG9WOENvbnRleHQoY29u
dGV4dCkpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6
Ok5ldygpOwogICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiZm9vIiksIHY4OjpTdHJp
bmc6Ok5ldygiem9vIikpOwogCiAgICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUob2JqZWN0KTsK
IAotICAgIGNoZWNrS2V5UGF0aFN0cmluZ1ZhbHVlKHNjcmlwdFZhbHVlLCAiZm9vIiwgInpvbyIp
OwotICAgIGNoZWNrS2V5UGF0aE51bGxWYWx1ZShzY3JpcHRWYWx1ZSwgImJhciIpOworICAgIGNo
ZWNrS2V5UGF0aFN0cmluZ1ZhbHVlKGNvbnRleHQsIHNjcmlwdFZhbHVlLCAiZm9vIiwgInpvbyIp
OworICAgIGNoZWNrS2V5UGF0aE51bGxWYWx1ZShjb250ZXh0LCBzY3JpcHRWYWx1ZSwgImJhciIp
OwogfQogCiBURVNUKElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBUb3BMZXZlbFByb3Bl
cnR5TnVtYmVyVmFsdWUpCiB7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2Nv
cGU7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKFY4UGVySXNvbGF0ZURhdGE6OmN1cnJl
bnQoKS0+ZW5zdXJlQXV4aWxpYXJ5Q29udGV4dCgpKTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUg
c2NvcGUodG9WOENvbnRleHQoY29udGV4dCkpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5ldygpOwogICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6
Ok5ldygiZm9vIiksIHY4OjpOdW1iZXI6Ok5ldyg0NTYpKTsKIAogICAgIFNjcmlwdFZhbHVlIHNj
cmlwdFZhbHVlKG9iamVjdCk7CiAKLSAgICBjaGVja0tleVBhdGhOdW1iZXJWYWx1ZShzY3JpcHRW
YWx1ZSwgImZvbyIsIDQ1Nik7Ci0gICAgY2hlY2tLZXlQYXRoTnVsbFZhbHVlKHNjcmlwdFZhbHVl
LCAiYmFyIik7CisgICAgY2hlY2tLZXlQYXRoTnVtYmVyVmFsdWUoY29udGV4dCwgc2NyaXB0VmFs
dWUsICJmb28iLCA0NTYpOworICAgIGNoZWNrS2V5UGF0aE51bGxWYWx1ZShjb250ZXh0LCBzY3Jp
cHRWYWx1ZSwgImJhciIpOwogfQogCiBURVNUKElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0
LCBTdWJQcm9wZXJ0eSkKIHsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29w
ZTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVu
dCgpLT5lbnN1cmVBdXhpbGlhcnlDb250ZXh0KCkpOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBz
Y29wZSh0b1Y4Q29udGV4dChjb250ZXh0KSk7CiAKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4g
b2JqZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHN1
YlByb3BlcnR5ID0gdjg6Ok9iamVjdDo6TmV3KCk7CkBAIC0xMzAsMjkgKzE1MSwzMSBAQCBURVNU
KElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBTdWJQcm9wZXJ0eSkKIAogICAgIFNjcmlw
dFZhbHVlIHNjcmlwdFZhbHVlKG9iamVjdCk7CiAKLSAgICBjaGVja0tleVBhdGhTdHJpbmdWYWx1
ZShzY3JpcHRWYWx1ZSwgImZvby5iYXIiLCAiemVlIik7Ci0gICAgY2hlY2tLZXlQYXRoTnVsbFZh
bHVlKHNjcmlwdFZhbHVlLCAiYmFyIik7CisgICAgY2hlY2tLZXlQYXRoU3RyaW5nVmFsdWUoY29u
dGV4dCwgc2NyaXB0VmFsdWUsICJmb28uYmFyIiwgInplZSIpOworICAgIGNoZWNrS2V5UGF0aE51
bGxWYWx1ZShjb250ZXh0LCBzY3JpcHRWYWx1ZSwgImJhciIpOwogfQogCiBURVNUKEluamVjdElE
QktleVRlc3QsIFRvcExldmVsUHJvcGVydHlTdHJpbmdWYWx1ZSkKIHsKKyAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIHY4
OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUo
VjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5lbnN1cmVBdXhpbGlhcnlDb250ZXh0KCkpOwor
ICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh0b1Y4Q29udGV4dChjb250ZXh0KSk7CiAKICAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAg
b2JqZWN0LT5TZXQodjg6OlN0cmluZzo6TmV3KCJmb28iKSwgdjg6OlN0cmluZzo6TmV3KCJ6b28i
KSk7CiAKICAgICBTY3JpcHRWYWx1ZSBmb296b28ob2JqZWN0KTsKLSAgICBjaGVja0luamVjdGlv
bihJREJLZXk6OmNyZWF0ZVN0cmluZygibXlOZXdLZXkiKSwgZm9vem9vLCAiYmFyIik7Ci0gICAg
Y2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVOdW1iZXIoMTIzNCksIGZvb3pvbywgImJhciIp
OworICAgIGNoZWNrSW5qZWN0aW9uKGNvbnRleHQsIElEQktleTo6Y3JlYXRlU3RyaW5nKCJteU5l
d0tleSIpLCBmb296b28sICJiYXIiKTsKKyAgICBjaGVja0luamVjdGlvbihjb250ZXh0LCBJREJL
ZXk6OmNyZWF0ZU51bWJlcigxMjM0KSwgZm9vem9vLCAiYmFyIik7CiAKLSAgICBjaGVja0luamVj
dGlvbkZhaWxzKElEQktleTo6Y3JlYXRlU3RyaW5nKCJrZXkiKSwgZm9vem9vLCAiZm9vLmJhciIp
OworICAgIGNoZWNrSW5qZWN0aW9uRmFpbHMoY29udGV4dCwgSURCS2V5OjpjcmVhdGVTdHJpbmco
ImtleSIpLCBmb296b28sICJmb28uYmFyIik7CiB9CiAKIFRFU1QoSW5qZWN0SURCS2V5VGVzdCwg
U3ViUHJvcGVydHkpCiB7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7
Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQo
KS0+ZW5zdXJlQXV4aWxpYXJ5Q29udGV4dCgpKTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2Nv
cGUodG9WOENvbnRleHQoY29udGV4dCkpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9i
amVjdCA9IHY4OjpPYmplY3Q6Ok5ldygpOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzdWJQ
cm9wZXJ0eSA9IHY4OjpPYmplY3Q6Ok5ldygpOwpAQCAtMTYwLDE1ICsxODMsMTUgQEAgVEVTVChJ
bmplY3RJREJLZXlUZXN0LCBTdWJQcm9wZXJ0eSkKICAgICBvYmplY3QtPlNldCh2ODo6U3RyaW5n
OjpOZXcoImZvbyIpLCBzdWJQcm9wZXJ0eSk7CiAKICAgICBTY3JpcHRWYWx1ZSBzY3JpcHRPYmpl
Y3Qob2JqZWN0KTsKLSAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZVN0cmluZygibXlO
ZXdLZXkiKSwgc2NyaXB0T2JqZWN0LCAiZm9vLmJheiIpOwotICAgIGNoZWNrSW5qZWN0aW9uKElE
QktleTo6Y3JlYXRlTnVtYmVyKDc4OSksIHNjcmlwdE9iamVjdCwgImZvby5iYXoiKTsKLSAgICBj
aGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZURhdGUoNDU2NyksIHNjcmlwdE9iamVjdCwgImZv
by5iYXoiKTsKLSAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZURhdGUoNDU2NyksIHNj
cmlwdE9iamVjdCwgImJhciIpOwotICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlQXJy
YXkoSURCS2V5OjpLZXlBcnJheSgpKSwgc2NyaXB0T2JqZWN0LCAiZm9vLmJheiIpOwotICAgIGNo
ZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlQXJyYXkoSURCS2V5OjpLZXlBcnJheSgpKSwgc2Ny
aXB0T2JqZWN0LCAiYmFyIik7Ci0KLSAgICBjaGVja0luamVjdGlvbkZhaWxzKElEQktleTo6Y3Jl
YXRlU3RyaW5nKCJ6b28iKSwgc2NyaXB0T2JqZWN0LCAiZm9vLmJhci5iYXoiKTsKLSAgICBjaGVj
a0luamVjdGlvbihJREJLZXk6OmNyZWF0ZVN0cmluZygiem9vIiksIHNjcmlwdE9iamVjdCwgImZv
by54eXouZm9vIik7CisgICAgY2hlY2tJbmplY3Rpb24oY29udGV4dCwgSURCS2V5OjpjcmVhdGVT
dHJpbmcoIm15TmV3S2V5IiksIHNjcmlwdE9iamVjdCwgImZvby5iYXoiKTsKKyAgICBjaGVja0lu
amVjdGlvbihjb250ZXh0LCBJREJLZXk6OmNyZWF0ZU51bWJlcig3ODkpLCBzY3JpcHRPYmplY3Qs
ICJmb28uYmF6Iik7CisgICAgY2hlY2tJbmplY3Rpb24oY29udGV4dCwgSURCS2V5OjpjcmVhdGVE
YXRlKDQ1NjcpLCBzY3JpcHRPYmplY3QsICJmb28uYmF6Iik7CisgICAgY2hlY2tJbmplY3Rpb24o
Y29udGV4dCwgSURCS2V5OjpjcmVhdGVEYXRlKDQ1NjcpLCBzY3JpcHRPYmplY3QsICJiYXIiKTsK
KyAgICBjaGVja0luamVjdGlvbihjb250ZXh0LCBJREJLZXk6OmNyZWF0ZUFycmF5KElEQktleTo6
S2V5QXJyYXkoKSksIHNjcmlwdE9iamVjdCwgImZvby5iYXoiKTsKKyAgICBjaGVja0luamVjdGlv
bihjb250ZXh0LCBJREJLZXk6OmNyZWF0ZUFycmF5KElEQktleTo6S2V5QXJyYXkoKSksIHNjcmlw
dE9iamVjdCwgImJhciIpOworCisgICAgY2hlY2tJbmplY3Rpb25GYWlscyhjb250ZXh0LCBJREJL
ZXk6OmNyZWF0ZVN0cmluZygiem9vIiksIHNjcmlwdE9iamVjdCwgImZvby5iYXIuYmF6Iik7Cisg
ICAgY2hlY2tJbmplY3Rpb24oY29udGV4dCwgSURCS2V5OjpjcmVhdGVTdHJpbmcoInpvbyIpLCBz
Y3JpcHRPYmplY3QsICJmb28ueHl6LmZvbyIpOwogfQogCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170081</attachid>
            <date>2012-10-23 01:30:48 -0700</date>
            <delta_ts>2012-10-26 15:55:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99975-20121023102924.patch</filename>
            <type>text/plain</type>
            <size>28229</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg5MjIxYzM4YWNhMWRh
N2JiYTRkNGMzNDM0MzBhNTY0ZDUwYWM5Ni4uNmY4ODYxOGVkMzk3NGIzMDYzNGU5Yjc4ZGM1ODBh
N2ZjODFmYTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEwLTIzICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBlbnN1cmVBdXhp
bGlhcnlDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05OTk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZWQgYXV4aWxsaWFyeUNvbnRleHQgYXMgdXNlIGlmIGl0IGlzIHByb2JsZW1hdGlj
IGluIElEQi4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFs
aXR5LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6c2V0VmFsdWVSZWFkeSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmg6CisgICAgICAgIChJREJDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlSW5kZXhLZXlz
Rm9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnB1dCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlEQktl
eUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6ZGVzZXJpYWxp
emVJREJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppbmplY3RJREJLZXlJbnRvU2NyaXB0VmFs
dWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b1Y4Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oOgorCiAyMDEyLTEwLTIzICBT
dWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAaW50ZWwuY29tPgogCiAgICAg
ICAgIFtFRkxdW1dLMl0gQ29tcGlsYXRpb24gd2FybmluZyBpbiBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuY3BwIHdoZW4gQUMgaXMgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCA5MDM1MDJkNjY2NWQ1NGMyNjJmMjAxYzU2YzRlMzI4MWNlMGI3YmRiLi5jY2RkMGIxZjAyNzI5
Zjc4ZmMzNWNiMzNhY2FlNTNiNGI4MDYyZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDI2IEBACiAyMDEyLTEwLTIzICBEYW4gQ2FybmV5ICA8ZGNhcm5leUBnb29nbGUu
Y29tPgogCisgICAgICAgIFJlbW92ZSBlbnN1cmVBdXhpbGlhcnlDb250ZXh0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTk3NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGVzdHMgdG8gdXNl
IGNvcnJlY3QgdjggY29udGV4dC4KKworICAgICAgICAqIHRlc3RzL0lEQkJpbmRpbmdVdGlsaXRp
ZXNUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRo
SW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpjaGVja0tleVBhdGhOdWxsVmFsdWUpOgorICAg
ICAgICAoV2ViS2l0OjppbmplY3RLZXkpOgorICAgICAgICAoV2ViS2l0OjpjaGVja0luamVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrSW5qZWN0aW9uRmFpbHMpOgorICAgICAgICAoV2Vi
S2l0OjpjaGVja0tleVBhdGhTdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrS2V5
UGF0aE51bWJlclZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpURVNUKToKKworMjAxMi0x
MC0yMyAgRGFuIENhcm5leSAgPGRjYXJuZXlAZ29vZ2xlLmNvbT4KKwogICAgICAgICBXaGVuIGJs
b2NraW5nIGxvY2FsU3RvcmFnZSwgRmlyZWZveCB0aHJvd3MgYSBzZWN1cml0eSBleGNlcHRpb24g
b24gYWNjZXNzLCBhbmQgbWF5YmUgc28gc2hvdWxkIHdlCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzI1NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCBmMmFkMTYzNDJjMWQzYjM4ZDllZGQz
MTQ5MzJlMWQxMzQyZjI2N2JiLi43MTYwYjk4ZjA5ZmMzY2Q2ZTY1Yzc0ZGQzNTZkNzJmMDk3YjUw
NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6
dXBkYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFNjcmlwdAogICAgIGNvbnN0
IElEQktleVBhdGgmIGtleVBhdGggPSBvYmplY3RTdG9yZS0+bWV0YWRhdGEoKS5rZXlQYXRoOwog
ICAgIGNvbnN0IGJvb2wgdXNlc0luTGluZUtleXMgPSAha2V5UGF0aC5pc051bGwoKTsKICAgICBp
ZiAodXNlc0luTGluZUtleXMpIHsKLSAgICAgICAgUmVmUHRyPElEQktleT4ga2V5UGF0aEtleSA9
IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgodmFsdWUsIGtleVBhdGgpOwor
ICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXlQYXRoS2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlw
dFZhbHVlQW5kS2V5UGF0aChjb250ZXh0LCB2YWx1ZSwga2V5UGF0aCk7CiAgICAgICAgIGlmICgh
a2V5UGF0aEtleSB8fCAha2V5UGF0aEtleS0+aXNFcXVhbChtX2N1cnJlbnRQcmltYXJ5S2V5Lmdl
dCgpKSkgewogICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7
CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIElEQkN1cnNv
cjo6Y2xvc2UoKQogICAgIH0KIH0KIAotdm9pZCBJREJDdXJzb3I6OnNldFZhbHVlUmVhZHkoUGFz
c1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFNjcmlw
dFZhbHVlJiB2YWx1ZSkKK3ZvaWQgSURCQ3Vyc29yOjpzZXRWYWx1ZVJlYWR5KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8
SURCS2V5PiBwcmltYXJ5S2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUpCiB7CiAgICAgbV9jdXJyZW50
S2V5ID0ga2V5OwogICAgIG1fY3VycmVudFByaW1hcnlLZXkgPSBwcmltYXJ5S2V5OwpAQCAtMjY3
LDEwICsyNjcsMTAgQEAgdm9pZCBJREJDdXJzb3I6OnNldFZhbHVlUmVhZHkoUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnkKICAgICAgICAgY29uc3QgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YSA9IG9iamVjdFN0b3JlLT5tZXRhZGF0YSgpOwog
ICAgICAgICBpZiAobWV0YWRhdGEuYXV0b0luY3JlbWVudCAmJiAhbWV0YWRhdGEua2V5UGF0aC5p
c051bGwoKSkgewogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+IGV4
cGVjdGVkS2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwg
bWV0YWRhdGEua2V5UGF0aCk7CisgICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBleHBlY3RlZEtl
eSA9IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoY29udGV4dCwgdmFsdWUs
IG1ldGFkYXRhLmtleVBhdGgpOwogICAgICAgICAgICAgQVNTRVJUKCFleHBlY3RlZEtleSB8fCBl
eHBlY3RlZEtleS0+aXNFcXVhbChtX2N1cnJlbnRQcmltYXJ5S2V5LmdldCgpKSk7CiAjZW5kaWYK
LSAgICAgICAgICAgIGJvb2wgaW5qZWN0ZWQgPSBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUo
bV9jdXJyZW50UHJpbWFyeUtleSwgdmFsdWUsIG1ldGFkYXRhLmtleVBhdGgpOworICAgICAgICAg
ICAgYm9vbCBpbmplY3RlZCA9IGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShjb250ZXh0LCBt
X2N1cnJlbnRQcmltYXJ5S2V5LCB2YWx1ZSwgbWV0YWRhdGEua2V5UGF0aCk7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhlcmUgaXMgbm8gd2F5IHRvIHJlcG9ydCBlcnJvcnMgaGVyZS4gTW92ZSB0
aGlzIGludG8gb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbiBzbyB0aGF0IHdlIGNhbiBhYm9ydCB0
aGUgdHJhbnNhY3Rpb24gdGhlcmUuIFNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkyMjc4CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGluamVjdGVkLCBpbmpl
Y3RlZCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmgKaW5kZXggYWJlNmJlY2Q4YjBmOWE2MjE5Yzc1ZmQ1MmZhY2U3MWQwYzE5MzQ3YS4u
NTkwYjRjOWQ1ZmM3NDI1M2RjMzQzZjNhYzkzNTYzNmIzMjI3YzA1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOwogICAgIHZvaWQg
Y2xvc2UoKTsKLSAgICB2b2lkIHNldFZhbHVlUmVhZHkoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNz
UmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgU2NyaXB0VmFsdWUmKTsKKyAgICB2b2lkIHNldFZh
bHVlUmVhZHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFz
c1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFNjcmlwdFZhbHVlJik7CiAKIHByb3RlY3RlZDoK
ICAgICBJREJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgRGly
ZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5j
cHAKaW5kZXggM2ZjYzM4ZjY2ZGY3YjZkM2U0ZWM3MmIzNWU2NmE4MGJlODAxNGI2NC4uMzA2YWUz
MWNkMDQ1NWMwN2U0MjI1NGVkZDI5MDU3NzE3ODkwOWFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMTAxLDEyICsx
MDEsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3MKICAgICByZXR1cm4gZ2V0KGNvbnRleHQs
IGtleVJhbmdlLnJlbGVhc2UoKSwgZWMpOwogfQogCi1zdGF0aWMgdm9pZCBnZW5lcmF0ZUluZGV4
S2V5c0ZvclZhbHVlKGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBvYmpl
Y3RWYWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURCT2JqZWN0
U3RvcmU6OkluZGV4S2V5cyogaW5kZXhLZXlzKQorc3RhdGljIHZvaWQgZ2VuZXJhdGVJbmRleEtl
eXNGb3JWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBJREJJbmRl
eE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhLCBjb25zdCBTY3JpcHRWYWx1ZSYgb2JqZWN0VmFsdWUs
IElEQk9iamVjdFN0b3JlOjpJbmRleEtleXMqIGluZGV4S2V5cykKIHsKICAgICBBU1NFUlQoaW5k
ZXhLZXlzKTsKLSAgICBSZWZQdHI8SURCS2V5PiBpbmRleEtleSA9IGNyZWF0ZUlEQktleUZyb21T
Y3JpcHRWYWx1ZUFuZEtleVBhdGgob2JqZWN0VmFsdWUsIGluZGV4TWV0YWRhdGEua2V5UGF0aCk7
CisgICAgUmVmUHRyPElEQktleT4gaW5kZXhLZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFs
dWVBbmRLZXlQYXRoKGNvbnRleHQsIG9iamVjdFZhbHVlLCBpbmRleE1ldGFkYXRhLmtleVBhdGgp
OwogCiAgICAgaWYgKCFpbmRleEtleSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTgxLDcgKzE3OSw3
IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1vCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAg
ICBpZiAodXNlc0luTGluZUtleXMpIHsKLSAgICAgICAgUmVmUHRyPElEQktleT4ga2V5UGF0aEtl
eSA9IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgodmFsdWUsIGtleVBhdGgp
OworICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXlQYXRoS2V5ID0gY3JlYXRlSURCS2V5RnJvbVNj
cmlwdFZhbHVlQW5kS2V5UGF0aChjb250ZXh0LCB2YWx1ZSwga2V5UGF0aCk7CiAgICAgICAgIGlm
IChrZXlQYXRoS2V5ICYmICFrZXlQYXRoS2V5LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICAgICAgcmV0dXJuIDA7
CkBAIC0yMDgsNyArMjA2LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9y
ZTo6cHV0KElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6UHV0TW8KICAgICBWZWN0b3I8
SW5kZXhLZXlzPiBpbmRleEtleXM7CiAgICAgZm9yIChJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJ
bmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21ldGFkYXRhLmluZGV4ZXMuYmVnaW4oKTsg
aXQgIT0gbV9tZXRhZGF0YS5pbmRleGVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIEluZGV4S2V5
cyBrZXlzOwotICAgICAgICBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlKGl0LT52YWx1ZSwgdmFs
dWUsICZrZXlzKTsKKyAgICAgICAgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShjb250ZXh0LCBp
dC0+dmFsdWUsIHZhbHVlLCAma2V5cyk7CiAgICAgICAgIGluZGV4TmFtZXMuYXBwZW5kKGl0LT5r
ZXkpOwogICAgICAgICBpbmRleEtleXMuYXBwZW5kKGtleXMpOwogICAgIH0KQEAgLTMyOSw3ICsz
MjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBjdXJzb3It
PnZhbHVlKCk7CiAKICAgICAgICAgICAgIElEQk9iamVjdFN0b3JlOjpJbmRleEtleXMgaW5kZXhL
ZXlzOwotICAgICAgICAgICAgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShtX2luZGV4TWV0YWRh
dGEsIHZhbHVlLCAmaW5kZXhLZXlzKTsKKyAgICAgICAgICAgIGdlbmVyYXRlSW5kZXhLZXlzRm9y
VmFsdWUoY29udGV4dCwgbV9pbmRleE1ldGFkYXRhLCB2YWx1ZSwgJmluZGV4S2V5cyk7CiAKICAg
ICAgICAgICAgIFZlY3RvcjxJREJPYmplY3RTdG9yZTo6SW5kZXhLZXlzLCAxPiBpbmRleEtleXNM
aXN0OwogICAgICAgICAgICAgaW5kZXhLZXlzTGlzdC5hcHBlbmQoaW5kZXhLZXlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggMGI1
MDJkNzQyYzRiYWM2Y2MxMjM0MDM2ZDM3NjZlY2VjZTVhOTUyMi4uOGJmY2QyYjhkODdiYzhhZjQ5
OGNjYjRhMWJlZGRkNzkyOWZmNmE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTM3MCwxMCArMzcwLDEwIEBAIHZvaWQgSURCUmVx
dWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBTZXJp
YWxpemVkU2NyaXB0CiAKICAgICBSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5ID0gcHJwUHJpbWFy
eUtleTsKICNpZm5kZWYgTkRFQlVHCi0gICAgUmVmUHRyPElEQktleT4gZXhwZWN0ZWRLZXkgPSBj
cmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKHZhbHVlLCBrZXlQYXRoKTsKKyAg
ICBSZWZQdHI8SURCS2V5PiBleHBlY3RlZEtleSA9IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1
ZUFuZEtleVBhdGgoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB2YWx1ZSwga2V5UGF0aCk7CiAg
ICAgQVNTRVJUKCFleHBlY3RlZEtleSB8fCBleHBlY3RlZEtleS0+aXNFcXVhbChwcmltYXJ5S2V5
LmdldCgpKSk7CiAjZW5kaWYKLSAgICBib29sIGluamVjdGVkID0gaW5qZWN0SURCS2V5SW50b1Nj
cmlwdFZhbHVlKHByaW1hcnlLZXksIHZhbHVlLCBrZXlQYXRoKTsKKyAgICBib29sIGluamVjdGVk
ID0gaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
cHJpbWFyeUtleSwgdmFsdWUsIGtleVBhdGgpOwogICAgIEFTU0VSVF9VTlVTRUQoaW5qZWN0ZWQs
IGluamVjdGVkKTsKICAgICBvblN1Y2Nlc3NJbnRlcm5hbCh2YWx1ZSk7CiB9CkBAIC00NzMsNyAr
NDczLDcgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
IGV2ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZl
bnQpIHsKICAgICAgICAgY3Vyc29yVG9Ob3RpZnkgPSBnZXRSZXN1bHRDdXJzb3IoKTsKICAgICAg
ICAgaWYgKGN1cnNvclRvTm90aWZ5KQotICAgICAgICAgICAgY3Vyc29yVG9Ob3RpZnktPnNldFZh
bHVlUmVhZHkobV9jdXJzb3JLZXkucmVsZWFzZSgpLCBtX2N1cnNvclByaW1hcnlLZXkucmVsZWFz
ZSgpLCBtX2N1cnNvclZhbHVlKTsKKyAgICAgICAgICAgIGN1cnNvclRvTm90aWZ5LT5zZXRWYWx1
ZVJlYWR5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9jdXJzb3JLZXkucmVsZWFzZSgpLCBt
X2N1cnNvclByaW1hcnlLZXkucmVsZWFzZSgpLCBtX2N1cnNvclZhbHVlKTsKICAgICB9CiAKICAg
ICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudXBncmFkZW5lZWRlZEV2ZW50KSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0
aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMu
Y3BwCmluZGV4IDZhODMxMWZiNjA0Y2U1MDA2ZDFkYmUyMDNlOWVjNWUwMGZlZGExOWMuLjEzYWQx
OTczOTQ3MzYyZjg5N2IyYzEwOWJiM2Q2ZGZkYzgxM2U0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC0xODAsOSArMTgw
LDYgQEAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFs
dWVBbmRLZXlQYXRoKGNvbnN0IFNjcmlwdFZhbHUKICAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0
aCwga2V5UGF0aEVsZW1lbnRzLCBlcnJvcik7CiAgICAgQVNTRVJUKGVycm9yID09IElEQktleVBh
dGhQYXJzZUVycm9yTm9uZSk7CiAKLSAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0g
ICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+
ZW5zdXJlQXV4aWxpYXJ5Q29udGV4dCgpKTsKLQogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
OFZhbHVlKHZhbHVlLnY4VmFsdWUoKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4S2V5
KGdldE50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVs
ZW1lbnRzLnNpemUoKSkpOwogICAgIGlmICh2OEtleS5Jc0VtcHR5KCkpCkBAIC0xOTAsMTIgKzE4
NywxMyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRW
YWx1ZUFuZEtleVBhdGgoY29uc3QgU2NyaXB0VmFsdQogICAgIHJldHVybiBjcmVhdGVJREJLZXlG
cm9tVmFsdWUodjhLZXkpOwogfQogCi1QYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJv
bVNjcmlwdFZhbHVlQW5kS2V5UGF0aChjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElE
QktleVBhdGgmIGtleVBhdGgpCitQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNj
cmlwdFZhbHVlQW5kS2V5UGF0aChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0
LCBjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7
CiAgICAgSURCX1RSQUNFKCJjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoIik7
CiAgICAgQVNTRVJUKCFrZXlQYXRoLmlzTnVsbCgpKTsKIAotICAgIHY4OjpIYW5kbGVTY29wZSBz
Y29wZTsKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgdjg6OkNvbnRleHQ6
OlNjb3BlIHNjb3BlKHRvVjhDb250ZXh0KHNjcmlwdENvbnRleHQsIFVzZUN1cnJlbnRXb3JsZCkp
OwogICAgIGlmIChrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRoOjpBcnJheVR5cGUpIHsKICAg
ICAgICAgSURCS2V5OjpLZXlBcnJheSByZXN1bHQ7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBhcnJheSA9IGtleVBhdGguYXJyYXkoKTsKQEAgLTIxMiw3ICsyMTAsNiBAQCBQYXNzUmVm
UHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChjb25zdCBT
Y3JpcHRWYWx1ZSYgdmFsdQogICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVB
bmRLZXlQYXRoKHZhbHVlLCBrZXlQYXRoLnN0cmluZygpKTsKIH0KIAotLy8gRklYTUU6IFRoZSBv
bmx5IHJlYXNvbiB0aGlzIGV4aXN0cyBpcyBiZWNhdXNlIHdlIG5lZWQgYSB2ODo6Q29udGV4dCBh
bmQgc2NvcGUgaW5zaWRlIGEgdGltZXIuIElzIHRoZXJlIGEgYmV0dGVyIC8gbW9yZSBnZW5lcmFs
IHdheSB0byBkbyB0aGlzPwogU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gcHJwVmFsdWUpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwpA
QCAtMjIzLDcgKzIyMCw3IEBAIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCwgUGFzc1JlZlB0CiAgICAgcmV0dXJuIFNj
cmlwdFZhbHVlKHY4OjpOdWxsKCkpOwogfQogCi1ib29sIGluamVjdElEQktleUludG9TY3JpcHRW
YWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElE
QktleVBhdGgmIGtleVBhdGgpCitib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4ga2V5
LCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAg
SURCX1RSQUNFKCJpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUiKTsKIApAQCAtMjM3LDcgKzIz
NCw3IEBAIGJvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29w
ZShWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmVuc3VyZUF1eGlsaWFyeUNvbnRleHQoKSk7
CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHRvVjhDb250ZXh0KHNjcmlwdENvbnRleHQs
IFVzZUN1cnJlbnRXb3JsZCkpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUo
dmFsdWUudjhWYWx1ZSgpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyZW50KGVuc3Vy
ZU50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1l
bnRzLnNpemUoKSAtIDEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJp
bmRpbmdVdGlsaXRpZXMuaAppbmRleCBhNDgyZGM5NzQxYjI5YWVjOGE1ZTExMTNjZjdmZTVmMzdh
ZmFmNGExLi5jOTI4OTdhMWE1NzZkODlkMDUxODM0OGRjNGYyNzA5YTcyMGIyZjkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5oCkBAIC00
MCw4ICs0MCw4IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogUGFzc1JlZlB0cjxJ
REJLZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOwogCi1i
b29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFNjcmlw
dFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwotUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlE
QktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoY29uc3QgU2NyaXB0VmFsdWUmLCBjb25zdCBJ
REJLZXlQYXRoJik7Citib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXk+LCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElE
QktleVBhdGgmKTsKK1Bhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFs
dWVBbmRLZXlQYXRoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTY3JpcHRWYWx1ZSYs
IGNvbnN0IElEQktleVBhdGgmKTsKIGJvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVl
KGNvbnN0IFNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwogU2NyaXB0VmFsdWUgZGVz
ZXJpYWxpemVJREJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5jcHAKaW5kZXggYTJkNWRmNGY1YzQwZjFhYzMyNTA2NzkyMTc2YmE2M2M5Y2QzNTAwMS4uNTkz
NzU2OWIyNmNiNGU0MDNkOTNiNGUyNmQyMDkyMzhkNzBlNzIzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCkBAIC0zMTAsNiArMzEwLDI3IEBAIHY4OjpMb2NhbDx2
ODo6Q29udGV4dD4gdG9WOENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgV29ybGRDCiAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsKIH0KIAor
djg6OkxvY2FsPHY4OjpDb250ZXh0PiB0b1Y4Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBXb3JsZFRvVXNlIHdvcmxkVG9Vc2UpCit7CisgICAgaWYgKGNvbnRleHQtPmlz
RG9jdW1lbnQoKSkgeworICAgICAgICBBU1NFUlQod29ybGRUb1VzZSAhPSBVc2VXb3JrZXJXb3Js
ZCk7CisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNv
bnRleHQpLT5mcmFtZSgpKSB7CisgICAgICAgICAgICBpZiAod29ybGRUb1VzZSA9PSBVc2VDdXJy
ZW50V29ybGQpIHsKKyAgICAgICAgICAgICAgICBpZiAoVjhET01XaW5kb3dTaGVsbCogaXNvbGF0
ZWRDb250ZXh0ID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KGlzb2xhdGVkQ29udGV4
dC0+Y29udGV4dCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmcmFtZS0+
c2NyaXB0KCktPm1haW5Xb3JsZENvbnRleHQoKTsKKyAgICAgICAgfQorI2lmIEVOQUJMRShXT1JL
RVJTKQorICAgIH0gZWxzZSBpZiAoY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpIHsKKyAgICAg
ICAgQVNTRVJUKHdvcmxkVG9Vc2UgIT0gVXNlTWFpbldvcmxkKTsKKyAgICAgICAgaWYgKFdvcmtl
ckNvbnRleHRFeGVjdXRpb25Qcm94eSogcHJveHkgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0
Kj4oY29udGV4dCktPnNjcmlwdCgpLT5wcm94eSgpKQorICAgICAgICAgICAgcmV0dXJuIHByb3h5
LT5jb250ZXh0KCk7CisjZW5kaWYKKyAgICB9CisgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29u
dGV4dD4oKTsKK30KKwogVjhQZXJDb250ZXh0RGF0YSogcGVyQ29udGV4dERhdGFGb3JDdXJyZW50
V29ybGQoRnJhbWUqIGZyYW1lKQogewogICAgIFY4RE9NV2luZG93U2hlbGwqIGlzb2xhdGVkU2hl
bGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDE5YmE4YmYyZDhh
YTY5OTcxM2IyZTgwN2UyZTZiZTRjYjJlMjQ1ZDguLjY1ZmNjNWMyZTBlMjExM2UxNTEyNTQ3MzY0
ODdmY2JmMWQzNDBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBA
IC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiVjhTdHJpbmdSZXNvdXJjZS5oIgogI2luY2x1ZGUg
IlY4VGhyb3dFeGNlcHRpb24uaCIKICNpbmNsdWRlICJWOFZhbHVlQ2FjaGUuaCIKKyNpbmNsdWRl
ICJXb3JsZENvbnRleHRIYW5kbGUuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx2OC5oPgpAQCAtNTEs
NyArNTIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBET01TdHJpbmdMaXN0
OwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgY2xhc3MgV29ybGRDb250
ZXh0SGFuZGxlOwogCiAgICAgY29uc3QgaW50IGtNYXhSZWN1cnNpb25EZXB0aCA9IDIyOwogCkBA
IC0zNzQsNiArMzc0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgLy8gUmV0dXJucyB0
aGUgY29udGV4dCBhc3NvY2lhdGVkIHdpdGggYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgogICAg
IHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdG9WOENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYpOworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4
dD4gdG9WOENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmxkVG9Vc2UpOwogCiAg
ICAgLy8gUmV0dXJucyB0aGUgZnJhbWUgb2JqZWN0IG9mIHRoZSB3aW5kb3cgb2JqZWN0IGFzc29j
aWF0ZWQgd2l0aAogICAgIC8vIGEgY29udGV4dCwgaWYgdGhlIHdpbmRvdyBpcyBjdXJyZW50bHkg
YmVpbmcgZGlzcGxheWVkIGluIHRoZSBGcmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKaW5kZXggZjVjZDM4YWJkMDQ2Y2UxZGI3NTJiN2Ex
NjhmOTc2MmVhZjQzMWMyNy4uNDhiNDJkOTQ3MWFlZmQxNmI1ZjY0NGZmNTI5NTMzNGVkOTE0MTJh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5j
cHAKQEAgLTExNiwxMyArMTE2LDYgQEAgdm9pZCBWOFBlcklzb2xhdGVEYXRhOjp2aXNpdEV4dGVy
bmFsU3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqIHZpc2l0b3IpCiB9CiAjZW5kaWYKIAot
djg6OkhhbmRsZTx2ODo6Q29udGV4dD4gVjhQZXJJc29sYXRlRGF0YTo6ZW5zdXJlQXV4aWxpYXJ5
Q29udGV4dCgpCi17Ci0gICAgaWYgKG1fYXV4aWxpYXJ5Q29udGV4dC5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fYXV4aWxpYXJ5Q29udGV4dC5hZG9wdCh2ODo6Q29udGV4dDo6TmV3KCkpOwotICAgIHJl
dHVybiBtX2F1eGlsaWFyeUNvbnRleHQuZ2V0KCk7Ci19Ci0KIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFBlcklzb2xhdGVEYXRhOjpjb25zdHJ1Y3Rvck9mVG9TdHJpbmcoY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICAvLyBUaGUgRE9NIGNvbnN0cnVjdG9ycycgdG9TdHJpbmcgZnVu
Y3Rpb25zIGdyYWIgdGhlIGN1cnJlbnQgdG9TdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaAppbmRleCBiN2Q1ZjY1NTBhNjlmNzdkNTFkNjAzZGNj
MTNkM2FmZWU1MDJmM2U5Li4yYzM5MmZmNzliNTBkNDhjOWI1NzQ1NjMwMmIzNDc2YTU0NWFiOWY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oCkBA
IC04NCw3ICs4NCw2IEBAIHB1YmxpYzoKICAgICBET01EYXRhTGlzdCYgYWxsU3RvcmVzKCkgeyBy
ZXR1cm4gbV9kb21EYXRhTGlzdDsgfQogCiAgICAgVjhIaWRkZW5Qcm9wZXJ0eU5hbWUqIGhpZGRl
blByb3BlcnR5TmFtZSgpIHsgcmV0dXJuIG1faGlkZGVuUHJvcGVydHlOYW1lLmdldCgpOyB9Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gZW5zdXJlQXV4aWxpYXJ5Q29udGV4dCgpOwogCiAg
ICAgdm9pZCByZWdpc3RlckRPTURhdGFTdG9yZShET01EYXRhU3RvcmUqIGRvbURhdGFTdG9yZSkg
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250
ZXh0SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5k
bGUuaAppbmRleCA3NTY1ZDE1Y2QzMjMyNWFhZWFmMTMxODQ3ZjUwMTc3N2MzNTY1OTViLi44ZGQ2
YjNhZDc3Mjc5NDNhMzcxNzk5MGQ3N2EwNzM3NTBkM2RjNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuaApAQCAtNDQsNyArNDQsNyBAQCBl
bnVtIFdvcmxkVG9Vc2UgeyBVc2VNYWluV29ybGQsIFVzZUN1cnJlbnRXb3JsZCwgVXNlV29ya2Vy
V29ybGQgfTsKIAogY2xhc3MgV29ybGRDb250ZXh0SGFuZGxlIHsKIHB1YmxpYzoKLSAgICBXb3Js
ZENvbnRleHRIYW5kbGUoV29ybGRUb1VzZSk7CisgICAgZXhwbGljaXQgV29ybGRDb250ZXh0SGFu
ZGxlKFdvcmxkVG9Vc2UpOwogICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gYWRqdXN0ZWRDb250
ZXh0KFNjcmlwdENvbnRyb2xsZXIqKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAK
aW5kZXggNDY3MTBlNzQ1NjhhNzRmYWM1ZmU1ZjUwNzkzYWMyYzlhOWMyZmIwZi4uMjNmNTQwZTI3
MDQwMGQ1YmY3YmNhZGYwZDM3NmY1MTExNDUwOGFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAKQEAgLTI0
LDExICsyNCwxOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVUZXN0SGVscGVycy5o
IgogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJREJLZXkuaCIK
ICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiVjhQZXJJc29sYXRlRGF0YS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCisjaW5jbHVk
ZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKKyNpbmNsdWRlICJXZWJW
aWV3LmgiCiAKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KQEAgLTM2LDkyICs0MywxMDYgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBuYW1l
c3BhY2UgewogCi1QYXNzUmVmUHRyPElEQktleT4gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRo
SW50ZXJuYWwoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgp
CitQYXNzUmVmUHRyPElEQktleT4gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVl
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7CiAgICAgSURCS2V5UGF0aCBpZGJLZXlQYXRoKGtl
eVBhdGgpOwogICAgIEVYUEVDVF9UUlVFKGlkYktleVBhdGguaXNWYWxpZCgpKTsKICAgICAKLSAg
ICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwgaWRi
S2V5UGF0aCk7CisgICAgcmV0dXJuIGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBh
dGgoY29udGV4dCwgdmFsdWUsIGlkYktleVBhdGgpOwogfQogCi12b2lkIGNoZWNrS2V5UGF0aE51
bGxWYWx1ZShjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkK
K3ZvaWQgY2hlY2tLZXlQYXRoTnVsbFZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewot
ICAgIFJlZlB0cjxJREJLZXk+IGlkYktleSA9IGNoZWNrS2V5RnJvbVZhbHVlQW5kS2V5UGF0aElu
dGVybmFsKHZhbHVlLCBrZXlQYXRoKTsKKyAgICBSZWZQdHI8SURCS2V5PiBpZGJLZXkgPSBjaGVj
a0tleUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbChjb250ZXh0LCB2YWx1ZSwga2V5UGF0aCk7
CiAgICAgQVNTRVJUX0ZBTFNFKGlkYktleS5nZXQoKSk7CiB9CiAKLWJvb2wgaW5qZWN0S2V5KFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoKQorYm9vbCBpbmplY3RLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxJREJLZXk+IGtleSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgpCiB7CiAgICAgSURCS2V5UGF0aCBpZGJLZXlQYXRoKGtleVBhdGgpOwogICAgIEVY
UEVDVF9UUlVFKGlkYktleVBhdGguaXNWYWxpZCgpKTsKLSAgICByZXR1cm4gaW5qZWN0SURCS2V5
SW50b1NjcmlwdFZhbHVlKGtleSwgdmFsdWUsIGlkYktleVBhdGgpOworICAgIHJldHVybiBpbmpl
Y3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoY29udGV4dCwga2V5LCB2YWx1ZSwgaWRiS2V5UGF0aCk7
CiB9CiAKLXZvaWQgY2hlY2tJbmplY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgU2Ny
aXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCit2b2lkIGNoZWNrSW5qZWN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBw
cnBLZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewogICAg
IFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKLSAgICBib29sIHJlc3VsdCA9IGluamVjdEtl
eShrZXksIHZhbHVlLCBrZXlQYXRoKTsKKyAgICBib29sIHJlc3VsdCA9IGluamVjdEtleShjb250
ZXh0LCBrZXksIHZhbHVlLCBrZXlQYXRoKTsKICAgICBBU1NFUlRfVFJVRShyZXN1bHQpOwotICAg
IFJlZlB0cjxJREJLZXk+IGV4dHJhY3RlZEtleSA9IGNoZWNrS2V5RnJvbVZhbHVlQW5kS2V5UGF0
aEludGVybmFsKHZhbHVlLCBrZXlQYXRoKTsKKyAgICBSZWZQdHI8SURCS2V5PiBleHRyYWN0ZWRL
ZXkgPSBjaGVja0tleUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbChjb250ZXh0LCB2YWx1ZSwg
a2V5UGF0aCk7CiAgICAgRVhQRUNUX1RSVUUoa2V5LT5pc0VxdWFsKGV4dHJhY3RlZEtleS5nZXQo
KSkpOwogfQogCi12b2lkIGNoZWNrSW5qZWN0aW9uRmFpbHMoUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCit2b2lkIGNoZWNr
SW5qZWN0aW9uRmFpbHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgp
CiB7Ci0gICAgRVhQRUNUX0ZBTFNFKGluamVjdEtleShrZXksIHZhbHVlLCBrZXlQYXRoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGluamVjdEtleShjb250ZXh0LCBrZXksIHZhbHVlLCBrZXlQYXRoKSk7
CiB9CiAKLXZvaWQgY2hlY2tLZXlQYXRoU3RyaW5nVmFsdWUoY29uc3QgU2NyaXB0VmFsdWUmIHZh
bHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWQpCit2b2lk
IGNoZWNrS2V5UGF0aFN0cmluZ1ZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBT
dHJpbmcmIGV4cGVjdGVkKQogewotICAgIFJlZlB0cjxJREJLZXk+IGlkYktleSA9IGNoZWNrS2V5
RnJvbVZhbHVlQW5kS2V5UGF0aEludGVybmFsKHZhbHVlLCBrZXlQYXRoKTsKKyAgICBSZWZQdHI8
SURCS2V5PiBpZGJLZXkgPSBjaGVja0tleUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbChjb250
ZXh0LCB2YWx1ZSwga2V5UGF0aCk7CiAgICAgQVNTRVJUX1RSVUUoaWRiS2V5LmdldCgpKTsKICAg
ICBBU1NFUlRfRVEoSURCS2V5OjpTdHJpbmdUeXBlLCBpZGJLZXktPnR5cGUoKSk7CiAgICAgQVNT
RVJUX1RSVUUoZXhwZWN0ZWQgPT0gaWRiS2V5LT5zdHJpbmcoKSk7CiB9CiAKLXZvaWQgY2hlY2tL
ZXlQYXRoTnVtYmVyVmFsdWUoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgsIGludCBleHBlY3RlZCkKK3ZvaWQgY2hlY2tLZXlQYXRoTnVtYmVyVmFsdWUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGludCBleHBlY3RlZCkKIHsKLSAgICBSZWZQdHI8SURCS2V5
PiBpZGJLZXkgPSBjaGVja0tleUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbCh2YWx1ZSwga2V5
UGF0aCk7CisgICAgUmVmUHRyPElEQktleT4gaWRiS2V5ID0gY2hlY2tLZXlGcm9tVmFsdWVBbmRL
ZXlQYXRoSW50ZXJuYWwoY29udGV4dCwgdmFsdWUsIGtleVBhdGgpOwogICAgIEFTU0VSVF9UUlVF
KGlkYktleS5nZXQoKSk7CiAgICAgQVNTRVJUX0VRKElEQktleTo6TnVtYmVyVHlwZSwgaWRiS2V5
LT50eXBlKCkpOwogICAgIEFTU0VSVF9UUlVFKGV4cGVjdGVkID09IGlkYktleS0+bnVtYmVyKCkp
OwogfQogCitzdGF0aWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpCit7CisgICAgc3RhdGljIFdlYlZpZXcqIHdlYlZpZXc7CisgICAgaWYgKCF3ZWJWaWV3
KSB7CisgICAgICAgIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5k
TG9hZCgiYWJvdXQ6YmxhbmsiKTsKKyAgICAgICAgd2ViVmlldy0+c2V0Rm9jdXModHJ1ZSk7Cisg
ICAgfQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPih3ZWJWaWV3LT5tYWlu
RnJhbWUoKSktPmZyYW1lKCktPmRvY3VtZW50KCk7Cit9CisKIFRFU1QoSURCS2V5RnJvbVZhbHVl
QW5kS2V5UGF0aFRlc3QsIFRvcExldmVsUHJvcGVydHlTdHJpbmdWYWx1ZSkKIHsKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUg
c2NvcGUoVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5lbnN1cmVBdXhpbGlhcnlDb250ZXh0
KCkpOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh0b1Y4Q29udGV4dChjb250ZXh0LCBV
c2VDdXJyZW50V29ybGQpKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QgPSB2
ODo6T2JqZWN0OjpOZXcoKTsKICAgICBvYmplY3QtPlNldCh2ODo6U3RyaW5nOjpOZXcoImZvbyIp
LCB2ODo6U3RyaW5nOjpOZXcoInpvbyIpKTsKIAogICAgIFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVl
KG9iamVjdCk7CiAKLSAgICBjaGVja0tleVBhdGhTdHJpbmdWYWx1ZShzY3JpcHRWYWx1ZSwgImZv
byIsICJ6b28iKTsKLSAgICBjaGVja0tleVBhdGhOdWxsVmFsdWUoc2NyaXB0VmFsdWUsICJiYXIi
KTsKKyAgICBjaGVja0tleVBhdGhTdHJpbmdWYWx1ZShjb250ZXh0LCBzY3JpcHRWYWx1ZSwgImZv
byIsICJ6b28iKTsKKyAgICBjaGVja0tleVBhdGhOdWxsVmFsdWUoY29udGV4dCwgc2NyaXB0VmFs
dWUsICJiYXIiKTsKIH0KIAogVEVTVChJREJLZXlGcm9tVmFsdWVBbmRLZXlQYXRoVGVzdCwgVG9w
TGV2ZWxQcm9wZXJ0eU51bWJlclZhbHVlKQogeworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgdjg6OkhhbmRsZVNjb3Bl
IGhhbmRsZVNjb3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShWOFBlcklzb2xhdGVE
YXRhOjpjdXJyZW50KCktPmVuc3VyZUF1eGlsaWFyeUNvbnRleHQoKSk7CisgICAgdjg6OkNvbnRl
eHQ6OlNjb3BlIHNjb3BlKHRvVjhDb250ZXh0KGNvbnRleHQsIFVzZUN1cnJlbnRXb3JsZCkpOwog
CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5ldygpOwog
ICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiZm9vIiksIHY4OjpOdW1iZXI6Ok5ldyg0
NTYpKTsKIAogICAgIFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlKG9iamVjdCk7CiAKLSAgICBjaGVj
a0tleVBhdGhOdW1iZXJWYWx1ZShzY3JpcHRWYWx1ZSwgImZvbyIsIDQ1Nik7Ci0gICAgY2hlY2tL
ZXlQYXRoTnVsbFZhbHVlKHNjcmlwdFZhbHVlLCAiYmFyIik7CisgICAgY2hlY2tLZXlQYXRoTnVt
YmVyVmFsdWUoY29udGV4dCwgc2NyaXB0VmFsdWUsICJmb28iLCA0NTYpOworICAgIGNoZWNrS2V5
UGF0aE51bGxWYWx1ZShjb250ZXh0LCBzY3JpcHRWYWx1ZSwgImJhciIpOwogfQogCiBURVNUKElE
QktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBTdWJQcm9wZXJ0eSkKIHsKKyAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2Nv
cGUoVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5lbnN1cmVBdXhpbGlhcnlDb250ZXh0KCkp
OworICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh0b1Y4Q29udGV4dChjb250ZXh0LCBVc2VD
dXJyZW50V29ybGQpKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6
T2JqZWN0OjpOZXcoKTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gc3ViUHJvcGVydHkgPSB2
ODo6T2JqZWN0OjpOZXcoKTsKQEAgLTEzMCwyOSArMTUxLDMxIEBAIFRFU1QoSURCS2V5RnJvbVZh
bHVlQW5kS2V5UGF0aFRlc3QsIFN1YlByb3BlcnR5KQogCiAgICAgU2NyaXB0VmFsdWUgc2NyaXB0
VmFsdWUob2JqZWN0KTsKIAotICAgIGNoZWNrS2V5UGF0aFN0cmluZ1ZhbHVlKHNjcmlwdFZhbHVl
LCAiZm9vLmJhciIsICJ6ZWUiKTsKLSAgICBjaGVja0tleVBhdGhOdWxsVmFsdWUoc2NyaXB0VmFs
dWUsICJiYXIiKTsKKyAgICBjaGVja0tleVBhdGhTdHJpbmdWYWx1ZShjb250ZXh0LCBzY3JpcHRW
YWx1ZSwgImZvby5iYXIiLCAiemVlIik7CisgICAgY2hlY2tLZXlQYXRoTnVsbFZhbHVlKGNvbnRl
eHQsIHNjcmlwdFZhbHVlLCAiYmFyIik7CiB9CiAKIFRFU1QoSW5qZWN0SURCS2V5VGVzdCwgVG9w
TGV2ZWxQcm9wZXJ0eVN0cmluZ1ZhbHVlKQogeworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgdjg6OkhhbmRsZVNjb3Bl
IGhhbmRsZVNjb3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShWOFBlcklzb2xhdGVE
YXRhOjpjdXJyZW50KCktPmVuc3VyZUF1eGlsaWFyeUNvbnRleHQoKSk7CisgICAgdjg6OkNvbnRl
eHQ6OlNjb3BlIHNjb3BlKHRvVjhDb250ZXh0KGNvbnRleHQsIFVzZUN1cnJlbnRXb3JsZCkpOwog
CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5ldygpOwog
ICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiZm9vIiksIHY4OjpTdHJpbmc6Ok5ldygi
em9vIikpOwogCiAgICAgU2NyaXB0VmFsdWUgZm9vem9vKG9iamVjdCk7Ci0gICAgY2hlY2tJbmpl
Y3Rpb24oSURCS2V5OjpjcmVhdGVTdHJpbmcoIm15TmV3S2V5IiksIGZvb3pvbywgImJhciIpOwot
ICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlTnVtYmVyKDEyMzQpLCBmb296b28sICJi
YXIiKTsKKyAgICBjaGVja0luamVjdGlvbihjb250ZXh0LCBJREJLZXk6OmNyZWF0ZVN0cmluZygi
bXlOZXdLZXkiKSwgZm9vem9vLCAiYmFyIik7CisgICAgY2hlY2tJbmplY3Rpb24oY29udGV4dCwg
SURCS2V5OjpjcmVhdGVOdW1iZXIoMTIzNCksIGZvb3pvbywgImJhciIpOwogCi0gICAgY2hlY2tJ
bmplY3Rpb25GYWlscyhJREJLZXk6OmNyZWF0ZVN0cmluZygia2V5IiksIGZvb3pvbywgImZvby5i
YXIiKTsKKyAgICBjaGVja0luamVjdGlvbkZhaWxzKGNvbnRleHQsIElEQktleTo6Y3JlYXRlU3Ry
aW5nKCJrZXkiKSwgZm9vem9vLCAiZm9vLmJhciIpOwogfQogCiBURVNUKEluamVjdElEQktleVRl
c3QsIFN1YlByb3BlcnR5KQogeworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQg
PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShWOFBlcklzb2xhdGVEYXRhOjpjdXJy
ZW50KCktPmVuc3VyZUF1eGlsaWFyeUNvbnRleHQoKSk7CisgICAgdjg6OkNvbnRleHQ6OlNjb3Bl
IHNjb3BlKHRvVjhDb250ZXh0KGNvbnRleHQsIFVzZUN1cnJlbnRXb3JsZCkpOwogCiAgICAgdjg6
OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5ldygpOwogICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBzdWJQcm9wZXJ0eSA9IHY4OjpPYmplY3Q6Ok5ldygpOwpAQCAtMTYw
LDE1ICsxODMsMTUgQEAgVEVTVChJbmplY3RJREJLZXlUZXN0LCBTdWJQcm9wZXJ0eSkKICAgICBv
YmplY3QtPlNldCh2ODo6U3RyaW5nOjpOZXcoImZvbyIpLCBzdWJQcm9wZXJ0eSk7CiAKICAgICBT
Y3JpcHRWYWx1ZSBzY3JpcHRPYmplY3Qob2JqZWN0KTsKLSAgICBjaGVja0luamVjdGlvbihJREJL
ZXk6OmNyZWF0ZVN0cmluZygibXlOZXdLZXkiKSwgc2NyaXB0T2JqZWN0LCAiZm9vLmJheiIpOwot
ICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlTnVtYmVyKDc4OSksIHNjcmlwdE9iamVj
dCwgImZvby5iYXoiKTsKLSAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZURhdGUoNDU2
NyksIHNjcmlwdE9iamVjdCwgImZvby5iYXoiKTsKLSAgICBjaGVja0luamVjdGlvbihJREJLZXk6
OmNyZWF0ZURhdGUoNDU2NyksIHNjcmlwdE9iamVjdCwgImJhciIpOwotICAgIGNoZWNrSW5qZWN0
aW9uKElEQktleTo6Y3JlYXRlQXJyYXkoSURCS2V5OjpLZXlBcnJheSgpKSwgc2NyaXB0T2JqZWN0
LCAiZm9vLmJheiIpOwotICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlQXJyYXkoSURC
S2V5OjpLZXlBcnJheSgpKSwgc2NyaXB0T2JqZWN0LCAiYmFyIik7Ci0KLSAgICBjaGVja0luamVj
dGlvbkZhaWxzKElEQktleTo6Y3JlYXRlU3RyaW5nKCJ6b28iKSwgc2NyaXB0T2JqZWN0LCAiZm9v
LmJhci5iYXoiKTsKLSAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZVN0cmluZygiem9v
IiksIHNjcmlwdE9iamVjdCwgImZvby54eXouZm9vIik7CisgICAgY2hlY2tJbmplY3Rpb24oY29u
dGV4dCwgSURCS2V5OjpjcmVhdGVTdHJpbmcoIm15TmV3S2V5IiksIHNjcmlwdE9iamVjdCwgImZv
by5iYXoiKTsKKyAgICBjaGVja0luamVjdGlvbihjb250ZXh0LCBJREJLZXk6OmNyZWF0ZU51bWJl
cig3ODkpLCBzY3JpcHRPYmplY3QsICJmb28uYmF6Iik7CisgICAgY2hlY2tJbmplY3Rpb24oY29u
dGV4dCwgSURCS2V5OjpjcmVhdGVEYXRlKDQ1NjcpLCBzY3JpcHRPYmplY3QsICJmb28uYmF6Iik7
CisgICAgY2hlY2tJbmplY3Rpb24oY29udGV4dCwgSURCS2V5OjpjcmVhdGVEYXRlKDQ1NjcpLCBz
Y3JpcHRPYmplY3QsICJiYXIiKTsKKyAgICBjaGVja0luamVjdGlvbihjb250ZXh0LCBJREJLZXk6
OmNyZWF0ZUFycmF5KElEQktleTo6S2V5QXJyYXkoKSksIHNjcmlwdE9iamVjdCwgImZvby5iYXoi
KTsKKyAgICBjaGVja0luamVjdGlvbihjb250ZXh0LCBJREJLZXk6OmNyZWF0ZUFycmF5KElEQktl
eTo6S2V5QXJyYXkoKSksIHNjcmlwdE9iamVjdCwgImJhciIpOworCisgICAgY2hlY2tJbmplY3Rp
b25GYWlscyhjb250ZXh0LCBJREJLZXk6OmNyZWF0ZVN0cmluZygiem9vIiksIHNjcmlwdE9iamVj
dCwgImZvby5iYXIuYmF6Iik7CisgICAgY2hlY2tJbmplY3Rpb24oY29udGV4dCwgSURCS2V5Ojpj
cmVhdGVTdHJpbmcoInpvbyIpLCBzY3JpcHRPYmplY3QsICJmb28ueHl6LmZvbyIpOwogfQogCiB9
IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171035</attachid>
            <date>2012-10-26 15:55:38 -0700</date>
            <delta_ts>2012-10-26 16:13:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99975-20121026155409.patch</filename>
            <type>text/plain</type>
            <size>105921</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI1ZGMyN2YzYjg5ODIz
ODI5ODRkNDJjYmYwZTA2YjRiMTI3YWFhMi4uNDBhNzY3OGZhMmFhYmEwM2MzMjFiMTBmNzBlMjVi
MmZkMWYyNWIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTEwLTI2ICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBlbnN1cmVBdXhp
bGlhcnlDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05OTk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZWQgYXV4aWxsaWFyeUNvbnRleHQgYXMgdXNlIGlmIGl0IGlzIHByb2JsZW1hdGlj
IGluIElEQi4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFs
aXR5LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6c2V0VmFsdWVSZWFkeSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmg6CisgICAgICAgIChJREJDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlSW5kZXhLZXlz
Rm9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnB1dCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlEQktl
eUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6ZGVzZXJpYWxp
emVJREJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppbmplY3RJREJLZXlJbnRvU2NyaXB0VmFs
dWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b1Y4Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTEw
LTI2ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBQcmludGluZyBzaG91bGQgdXNlIHVzZSBoaWdoIHJlc29sdXRpb24gaW1hZ2VzIHdo
ZW4gYXZhaWxhYmxlCkBAIC00OTQsNyArNTI5LDcgQEAKICAgICAgICAgSGVscGVyIG1ldGhvZCB1
c2VkIHRvIGNsZWFyIHRoZSBvdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0IGZvciBhdXRvIGxv
Z2ljYWwgaGVpZ2h0IHJlZ2lvbnMuCiAgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFk
OjphZGRGb3JjZWRSZWdpb25CcmVhayk6CiAgICAgICAgIEV4dGVuZCB0aGUgbWV0aG9kIHRvIHBy
b2Nlc3MgcmVnaW9uIGJyZWFrcy4gVGhlIG1ldGhvZCByZXR1cm5zIHRydWUgaWYgYXQgbGVhc3Qg
b25lIGF1dG8gbG9naWNhbCBoZWlnaHQgcmVnaW9uCi0gICAgICAgIGhhcyBpdHMgb3ZlcnJpZGUg
bG9naWNhbCBjb250ZW50IGhlaWdodCBjb21wdXRlZC4gICAgICAgIAorICAgICAgICBoYXMgaXRz
IG92ZXJyaWRlIGxvZ2ljYWwgY29udGVudCBoZWlnaHQgY29tcHV0ZWQuCiAgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaDoKICAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVn
aW9uLmNwcDogTWFrZSB0aGVzZSBtZXRob2RzIHdvcmsgd2l0aCBhdXRvIGxvZ2ljYWwgaGVpZ2h0
IHJlZ2lvbnMuCiAgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnBhZ2VMb2dpY2FsSGVp
Z2h0KToKQEAgLTcxMCw3ICs3NDUsNyBAQAogICAgICAgICBSZXBsYWNlZCAidW5kZWZpbmVkIiB3
aXRoICJudWxsIgogICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanM6
CiAgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeS5wcm90b3R5cGUuY2FsbGJhY2tX
cmFwcGVyKToKLSAgICAgICAgUmVtb3ZlZCBjYWxsYmFjayBwYXJhbWV0ZXIgaW5kaXJlY3Rpb24u
ICAgICAgICAKKyAgICAgICAgUmVtb3ZlZCBjYWxsYmFjayBwYXJhbWV0ZXIgaW5kaXJlY3Rpb24u
CiAgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlUmVzdWx0LnByb3RvdHlwZS5hZGRGb3Jt
YXR0ZWQpOgogICAgICAgICBDb252ZXJ0ZWQgcHJpdmF0ZSBpbnN0YW5jZSBmdW5jdGlvbiB0byBz
Y29wZWQgZnVuY3Rpb24uCiAKQEAgLTExMDYsMTMgKzExNDEsMTMgQEAKICAgICAgICAgaW4gdGhl
c2UgdGlsZSBjb29yZGluYXRlcy4gVGhpcyB3b3JrZWQgZm9yIHRoZSBwYWdlIHRpbGUgY2FjaGUs
CiAgICAgICAgIGJlY2F1c2UgaXRzIHZpc2libGVSZWN0IHdhcyBzZW50IGluIHByZS1zY2FsZWQu
IEhvd2V2ZXIsIGZvcgogICAgICAgICB0aWxlZCBsYXllciBUaWxlQ2FjaGVzIHRoaXMgd2FzIHdy
b25nLgotICAgICAgICAKKwogICAgICAgICBGaXggYnkgc2NhbGluZyB0aGUgdGlsZSBjb3ZlcmFn
ZSByZWN0IGJ5IG1fc2NhbGUgYmVmb3JlCiAgICAgICAgIHVzaW5nIGl0IHRvIGNvbXB1dGUgd2hp
Y2ggdGlsZXMgdG8gdGhyb3cgYXdheSBhbmQgYnJpbmcgaW4uCi0gICAgICAgIAorCiAgICAgICAg
IFRvIGZpeCB0aGUgcHJvYmxlbSBvZiB0aGUgdmlzaWJsZVJlY3QgYmVpbmcgcHJlLXNjYWxlZAog
ICAgICAgICBmb3IgdGhlIHBhZ2UgdGlsZSBjYWNoZSwgcmVtb3ZlIHRoZSBzZXR0aW5nIG9mIHRo
ZSB2aXNpYmxlUmVjdAotICAgICAgICBpbiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZyYW1lVmll
d0RpZFNjcm9sbCgpLCBhbmQgcmVseSBvbiAKKyAgICAgICAgaW4gUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpmcmFtZVZpZXdEaWRTY3JvbGwoKSwgYW5kIHJlbHkgb24KICAgICAgICAgR3JhcGhpY3NM
YXllckNBOjp1cGRhdGVWaXNpYmxlUmVjdCgpIHdoaWNoIGNvbXB1dGVzIHRoZQogICAgICAgICB2
aXNpYmxlIHJlY3QgaW4gdGhlIGNvcnJlY3QsIGxheWVyIGNvb3JkaW5hdGVzLgogCkBAIC0xNDMw
LDEwICsxNDY1LDEwIEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KIAot
ICAgICAgICBUaGVyZSBpcyBubyBuZWVkIHRvIGludmFsaWRhdGUgZWxlbWVudCBzdHlsZSBvbiBp
ZCBhdHRyaWJ1dGUgY2hhbmdlIGlmIG5laXRoZXIgdGhlIG9sZCBub3IgdGhlIG5ldyBpZCB3ZXJl
IAorICAgICAgICBUaGVyZSBpcyBubyBuZWVkIHRvIGludmFsaWRhdGUgZWxlbWVudCBzdHlsZSBv
biBpZCBhdHRyaWJ1dGUgY2hhbmdlIGlmIG5laXRoZXIgdGhlIG9sZCBub3IgdGhlIG5ldyBpZCB3
ZXJlCiAgICAgICAgIG1lbnRpb25lZCBpbiBhbnkgc3R5bGVzaGVldC4gVGhpcyBpcyBzaW1pbGFy
IHRvIHRoZSBvcHRpbWl6YXRpb24gd2UgYWxyZWFkeSBoYXZlIGZvciBjbGFzcyBhdHRyaWJ1dGVz
LgotICAgICAgICAKLSAgICAgICAgUmVjYWxjdWxhdGluZyBlbGVtZW50IHN0eWxlIGlzIGV4cGVu
c2l2ZS4gSXQgc2VlbXMgaWQgYXR0cmlidXRlIG11dGF0aW9uIGlzIG9mdGVuIHVzZWQgaW4gc2Ny
aXB0cyBmb3IgcHVycG9zZXMgb3RoZXIgdGhhbiBzdHlsaW5nLiAKKworICAgICAgICBSZWNhbGN1
bGF0aW5nIGVsZW1lbnQgc3R5bGUgaXMgZXhwZW5zaXZlLiBJdCBzZWVtcyBpZCBhdHRyaWJ1dGUg
bXV0YXRpb24gaXMgb2Z0ZW4gdXNlZCBpbiBzY3JpcHRzIGZvciBwdXJwb3NlcyBvdGhlciB0aGFu
IHN0eWxpbmcuCiAKICAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CiAgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpoYXNTZWxlY3RvckZvcklkKToKQEAgLTE1NzMsNyArMTYw
OCw3IEBACiAKICAgICAgICAgQ2hhbmdlcyBlbXB0eSBzdHJpbmcgZm9ybS1hY3Rpb24gcmVwbGFj
ZW1lbnQgdG8gYWJvdXQ6YmxhbmsuCiAgICAgICAgIEV4aXN0aW5nIGZvcm0tYWN0aW9uLmh0bWwg
dGVzdCBtb2RpZmllZCB0byBjaGVjayB0aGlzIGNhc2UuCi0gICAgICAgIAorCiAgICAgICAgICog
aHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHA6CiAgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9y
OjpmaWx0ZXJGb3JtVG9rZW4pOgogCkBAIC0xNTg3LDcgKzE2MjIsNyBAQAogICAgICAgICBJbmlk
Y2F0ZSB0aGF0IGFuIDxlbWJlZD4gZWxlbWVudCBjYW4gcmVzcG9uZCB0bwogICAgICAgICBtb3Vz
ZSBjbGljayBldmVudHMsIHNpbmNlIG1vdXNlIGV2ZW50cyBhcmUgZm9yd2FyZGVkCiAgICAgICAg
IHRvIHRoZSBwbHVnaW4uICBGaXhlcyB0b3VjaCBhZGp1c3RtZW50IGF0IGEgcGx1Z2luCi0gICAg
ICAgIGJvdW5kYXJ5LiAgUHJpb3IgdG8gdGhlIHBhdGNoIGEgY2xpY2thYmxlIGVsZW1lbnQgCisg
ICAgICAgIGJvdW5kYXJ5LiAgUHJpb3IgdG8gdGhlIHBhdGNoIGEgY2xpY2thYmxlIGVsZW1lbnQK
ICAgICAgICAgYWRqYWNlbnQgdG8gdGhlIHBsdWdpbiB3b3VsZCBjYXB0dXJlIHN5bnRoZXRpYyBt
b3VzZQogICAgICAgICBldmVudHMgZnJvbSB0YXAgZ2VzdHVyZXMgdGhhdCBzcGFubmVkIHRoZSBw
bHVnaW4KICAgICAgICAgYm91bmRhcnkuCkBAIC0xNjI2LDEwICsxNjYxLDEwIEBACiAKICAgICAg
ICAgcjEzMjQyNyBhc3N1bWVkIHRoYXQgVGlsZUNhY2hlcyB3ZXJlIG9ubHkgdXNlZCBmb3IgdGhl
IHBhZ2UsIGFuZCBjaGFuZ2VkIHRoZSB0aWxlCiAgICAgICAgIHNpemUgYmVoYXZpb3Igb2YgYWxs
IG5vbi1wYWdlIFRpbGVDYWNoZXMuCi0gICAgICAgIAorCiAgICAgICAgIEZpeCBieSBnaXZpbmcg
VGlsZWRCYWNraW5nIGEgbmV3ICdDb3ZlcmFnZUZvclNsb3dTY3JvbGxpbmcnIGZsYWcgd2hpY2gK
ICAgICAgICAgYWZmZWN0cyB0aGUgdGlsZSBzaXplIGJlaGF2aW9yLgotICAgICAgICAKKwogICAg
ICAgICBDb25zb2xpZGF0ZWQgdGhlIHR3byBwbGFjZXMgdGhhdCBzZXQgVGlsZUNvdmVyYWdlIGlu
dG8gb25lLCBhbmQgaW4gdGhlIHByb2Nlc3MKICAgICAgICAgcmVkdWNlZCBGcmFtZVZpZXcncyBk
aXJlY3QgY29tbXVuaWNhdGlvbiB3aXRoIFRpbGVkQmFja2luZy4KIApAQCAtMTcxMSw3ICsxNzQ2
LDcgQEAKICAgICAgICAgKFJlc291cmNlTG9hZFNjaGVkdWxlcik6CiAKICAgICAgICAgQWRkIHRo
ZSBuZXcgbWV0aG9kIHBsdXMgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uOgotICAgICAgICAgKiBs
b2FkZXIvTG9hZGVyU3RyYXRlZ3kuY3BwOiAKKyAgICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0
ZWd5LmNwcDoKICAgICAgICAgKFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5OjpyZXNvdXJjZUxvYWRT
Y2hlZHVsZXIpOgogICAgICAgICAqIGxvYWRlci9Mb2FkZXJTdHJhdGVneS5oOgogCkBAIC0yMzM1
LDM1ICsyMzcwLDM1IEBACiAyMDEyLTEwLTI0ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNv
bT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAw
MTY5Ci0gICAgICAgIFdlIHNob3VsZCBtYWtlIFRpbGVDYWNoZSB0aWxlcyB0aGUgc2l6ZSBvZiB0
aGUgdGlsZSBjb3ZlcmFnZSByZWN0IAorICAgICAgICBXZSBzaG91bGQgbWFrZSBUaWxlQ2FjaGUg
dGlsZXMgdGhlIHNpemUgb2YgdGhlIHRpbGUgY292ZXJhZ2UgcmVjdAogICAgICAgICB3aGVuIHdl
IGNhbid0IGRvIGZhc3Qgc2Nyb2xsaW5nCiAgICAgICAgIC1hbmQtCiAgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xMjUwNTAyMT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCiAK
LSAgICAgICAgU29tZSB3ZWJzaXRlcyB0aGF0IGRvbid0IGRvIGZhc3Qgc2Nyb2xsaW5nIHN0aWxs
IHNjcm9sbCBzbG93ZXIgdGhhbiAKLSAgICAgICAgdGhleSBkbyB3aXRoIHRpbGVkIGRyYXdpbmcg
ZGlzYWJsZWQuIAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTk3NjggYWRkcmVzc2VkIHNvbWUgb2YgdGhpcyAKLSAgICAgICAgcGVyZm9ybWFuY2UgcHJv
YmxlbSwgYnV0IHRoZXJlIGlzIHN0aWxsIG1vcmUgZ3JvdW5kIHRvIG1ha2UgdXAuIFRoaXMgCi0g
ICAgICAgIHBhdGNoIGFkZHJlc3NlcyB0aGUgcmVtYWluaW5nIGlzc3VlIGJ5IG1ha2luZyB0aWxl
cyB0aGUgc2l6ZSBvZiB0aGUgCi0gICAgICAgIHdpbmRvdyB3aGVuIHdlIGNhbid0IGRvIGZhc3Qg
c2Nyb2xsaW5nLiAKKyAgICAgICAgU29tZSB3ZWJzaXRlcyB0aGF0IGRvbid0IGRvIGZhc3Qgc2Ny
b2xsaW5nIHN0aWxsIHNjcm9sbCBzbG93ZXIgdGhhbgorICAgICAgICB0aGV5IGRvIHdpdGggdGls
ZWQgZHJhd2luZyBkaXNhYmxlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk5NzY4IGFkZHJlc3NlZCBzb21lIG9mIHRoaXMKKyAgICAgICAgcGVyZm9y
bWFuY2UgcHJvYmxlbSwgYnV0IHRoZXJlIGlzIHN0aWxsIG1vcmUgZ3JvdW5kIHRvIG1ha2UgdXAu
IFRoaXMKKyAgICAgICAgcGF0Y2ggYWRkcmVzc2VzIHRoZSByZW1haW5pbmcgaXNzdWUgYnkgbWFr
aW5nIHRpbGVzIHRoZSBzaXplIG9mIHRoZQorICAgICAgICB3aW5kb3cgd2hlbiB3ZSBjYW4ndCBk
byBmYXN0IHNjcm9sbGluZy4KIAotICAgICAgICBUaGUgY29uc3RydWN0b3IgYW5kIGNyZWF0ZSBm
dW5jdGlvbiBubyBsb25nZXIgdGFrZSBhIHNpemUgcGFyYW1ldGVyLiAKLSAgICAgICAgVGhhdCdz
IGFsbCBmdWxseSBjb250cm9sbGVkIHdpdGhpbiBUaWxlQ2FjaGUgbm93LiBtX3RpbGVTaXplIGlz
IG5vIAorICAgICAgICBUaGUgY29uc3RydWN0b3IgYW5kIGNyZWF0ZSBmdW5jdGlvbiBubyBsb25n
ZXIgdGFrZSBhIHNpemUgcGFyYW1ldGVyLgorICAgICAgICBUaGF0J3MgYWxsIGZ1bGx5IGNvbnRy
b2xsZWQgd2l0aGluIFRpbGVDYWNoZSBub3cuIG1fdGlsZVNpemUgaXMgbm8KICAgICAgICAgbG9u
Z2VyIGNvbnN0LgogICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUu
aDoKIAotICAgICAgICBTdG9yZSB0aGUgY3VycmVudCBkZWZhdWx0IHNpemUgYXMgY29uc3RhbnRz
IHNvIHRoYXQgd2UgY2FuIGFjY2VzcyBpdCAKKyAgICAgICAgU3RvcmUgdGhlIGN1cnJlbnQgZGVm
YXVsdCBzaXplIGFzIGNvbnN0YW50cyBzbyB0aGF0IHdlIGNhbiBhY2Nlc3MgaXQKICAgICAgICAg
aW4gYm90aCB0aGUgY29uc3RydWN0b3IgYW5kIGFkanVzdFRpbGVTaXplRm9yQ292ZXJhZ2VSZWN0
KCkuCiAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbToKICAg
ICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6VGlsZUNhY2hlKToKIAotICAgICAgICBUaGlzIG5l
dyBmdW5jdGlvbiB3aWxsIHNldCBtX3RpbGVTaXplIHRvIHRoZSBzaXplIG9mIHRoZSB0aWxlIAot
ICAgICAgICBjb3ZlcmFnZSByZWN0IGlmIHRoZSB0aWxlIGNvdmVyYWdlIGlzIGxpbWl0ZWQgdG8g
dGhlIHZpc2libGUgYXJlYS4gCisgICAgICAgIFRoaXMgbmV3IGZ1bmN0aW9uIHdpbGwgc2V0IG1f
dGlsZVNpemUgdG8gdGhlIHNpemUgb2YgdGhlIHRpbGUKKyAgICAgICAgY292ZXJhZ2UgcmVjdCBp
ZiB0aGUgdGlsZSBjb3ZlcmFnZSBpcyBsaW1pdGVkIHRvIHRoZSB2aXNpYmxlIGFyZWEuCiAgICAg
ICAgIE90aGVyd2lzZSwgdGhlIHRpbGVzIGFyZSBzZXQgdG8gYmUgdGhlIGRlZmF1bHQgc2l6ZS4K
ICAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6YWRqdXN0VGlsZVNpemVGb3JDb3ZlcmFnZVJl
Y3QpOgotICAgICAgICAKKwogICAgICAgICBDYWxsIGFkanVzdFRpbGVTaXplRm9yQ292ZXJhZ2VS
ZWN0KCkuCiAgICAgICAgIChXZWJDb3JlOjpUaWxlQ2FjaGU6OnJldmFsaWRhdGVUaWxlcyk6CiAK
QEAgLTI1NzksMTQgKzI2MTQsMTQgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRo
LgogCi0gICAgICAgIEN1cnJlbnRseSBhIGxvbmctcHJlc3MgZ2VzdHVyZSBpcyB1c2VkIHRvIGRp
c3BhdGNoIGEgY29udGV4dCBtZW51IChmb3IgcGxhdGZvcm1zIAotICAgICAgICBkZWZpbmluZyBD
T05URVhUX01FTlVTKSBvciB0byBzZWxlY3QgdGV4dCAoZm9yIEFuZHJvaWQpLiBBZGRpdGlvbmFs
bHksIGZvciBwbGF0Zm9ybXMgCi0gICAgICAgIGRlZmluaW5nIFRPVUNIX0FESlVTVE1FTlQsIGdl
c3R1cmUgdGFyZ2V0IGZ1enppbmcgaXMgcGVyZm9ybWVkIG9uIHRoZSBsb2NhdGlvbiBhbmQgCisg
ICAgICAgIEN1cnJlbnRseSBhIGxvbmctcHJlc3MgZ2VzdHVyZSBpcyB1c2VkIHRvIGRpc3BhdGNo
IGEgY29udGV4dCBtZW51IChmb3IgcGxhdGZvcm1zCisgICAgICAgIGRlZmluaW5nIENPTlRFWFRf
TUVOVVMpIG9yIHRvIHNlbGVjdCB0ZXh0IChmb3IgQW5kcm9pZCkuIEFkZGl0aW9uYWxseSwgZm9y
IHBsYXRmb3JtcworICAgICAgICBkZWZpbmluZyBUT1VDSF9BREpVU1RNRU5ULCBnZXN0dXJlIHRh
cmdldCBmdXp6aW5nIGlzIHBlcmZvcm1lZCBvbiB0aGUgbG9jYXRpb24gYW5kCiAgICAgICAgIHRv
dWNoIGFyZWEgb2YgdGhlIGxvbmctcHJlc3MgZ2VzdHVyZS4KIAotICAgICAgICBUaGlzIENMIHdp
bGwgY2F1c2UgdHdvLWZpbmdlciB0YXAgZ2VzdHVyZXMgdG8gYmUgaGFuZGxlZCBpbiB0aGUgc2Ft
ZSB3YXkgYXMgbG9uZy1wcmVzcyAKLSAgICAgICAgZ2VzdHVyZXMuIFRoZSBsb2NhdGlvbiBhbmQg
dG91Y2ggYXJlYSBvZiBhIHR3by1maW5nZXIgdGFwIGdlc3R1cmUgd2lsbCBjb3JyZXNwb25kIHRv
IAotICAgICAgICB0aGUgbG9jYXRpb24gYW5kIHRvdWNoIGFyZWEgb2YgdGhlIGZpcnN0IGZpbmdl
ciBkb3duOyB0aGUgbG9jYXRpb24vYXJlYSBvZiB0aGUgc2Vjb25kIAorICAgICAgICBUaGlzIENM
IHdpbGwgY2F1c2UgdHdvLWZpbmdlciB0YXAgZ2VzdHVyZXMgdG8gYmUgaGFuZGxlZCBpbiB0aGUg
c2FtZSB3YXkgYXMgbG9uZy1wcmVzcworICAgICAgICBnZXN0dXJlcy4gVGhlIGxvY2F0aW9uIGFu
ZCB0b3VjaCBhcmVhIG9mIGEgdHdvLWZpbmdlciB0YXAgZ2VzdHVyZSB3aWxsIGNvcnJlc3BvbmQg
dG8KKyAgICAgICAgdGhlIGxvY2F0aW9uIGFuZCB0b3VjaCBhcmVhIG9mIHRoZSBmaXJzdCBmaW5n
ZXIgZG93bjsgdGhlIGxvY2F0aW9uL2FyZWEgb2YgdGhlIHNlY29uZAogICAgICAgICBmaW5nZXIg
d2lsbCBiZSBpZ25vcmVkLgogCiAgICAgICAgIFRlc3Q6IHRvdWNoYWRqdXN0bWVudC90b3VjaC1s
aW5rcy10d28tZmluZ2VyLXRhcC5odG1sCkBAIC0yNzkxLDEzICsyODI2LDEzIEBACiAgICAgICAg
IG1fc3RydWN0dXJhbExheWVyIHdoaWNoIGlzIGEgQ0FUcmFuc2Zvcm1MYXllci4gVGhlIHByaW1h
cnkgQ0FMYXllciB3aGljaCBjb250YWlucyByZW5kZXJlZAogICAgICAgICBjb250ZW50IGJlY29t
ZXMgYSBzdWJsYXllciBvZiB0aGUgQ0FUcmFuc2Zvcm1MYXllci4gSWYgdGhlIGVsZW1lbnQgaGFz
IGJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuLAogICAgICAgICBpdCBpcyB0aGUgcHJpbWFyeSBs
YXllciB0aGF0IGlzIHNldCB0byBiZSBzaW5nbGUtc2lkZWQuCi0gICAgICAgIAorCiAgICAgICAg
IEluIHIxMzE5NDAgd2Ugc3RhcnRlZCB0byB1c2UgVGlsZUNhY2hlcyBpbiBwbGFjZSBvZiBDQVRp
bGVkTGF5ZXIuIFRpbGVDYWNoZXMgd29yayB2aWEKLSAgICAgICAgImN1c3RvbVN1YmxheWVycyIg
cmV0dXJuZWQgZnJvbSB0aGUgUGxhdGZvcm1DQUxheWVyLCB3aGVyZSB0aGUgY3VzdG9tIHN1Ymxh
eWVyIGlzIAorICAgICAgICAiY3VzdG9tU3VibGF5ZXJzIiByZXR1cm5lZCBmcm9tIHRoZSBQbGF0
Zm9ybUNBTGF5ZXIsIHdoZXJlIHRoZSBjdXN0b20gc3VibGF5ZXIgaXMKICAgICAgICAgdGhlIHRp
bGUgY2FjaGUgY29udGFpbmVyIGxheWVyLiBIb3dldmVyLCB0aGUgY3VzdG9tIHN1YmxheWVycyB3
ZXJlIGJlaW5nIGFkZGVkIGFzCiAgICAgICAgIGNoaWxkcmVuIG9mIHRoZSBzdHJ1Y3R1cmFsIChD
QVRyYW5zZm9ybUxheWVyKSBsYXllciwgbm90IG9mIHRoZSBwcmltYXJ5IChDQUxheWVyKSBsYXll
ciwKICAgICAgICAgdGh1cyB0aGV5IHdlcmUgbm90IGFmZmVjdGVkIGJ5IHRoZSBkb3VibGVTaWRl
ZCBwcm9wZXJ0eS4KLSAgICAgICAgCisKICAgICAgICAgVGhpcyBjaGFuZ2UgY2xlYW5zIHVwIHRo
ZSBjb25mdXNpbmcgY29kZSBpbiBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZVN1YmxheWVyTGlzdCgp
CiAgICAgICAgIGJ5IG1haW50YWluaW5nIHR3byB2ZWN0b3JzIG9mIFBsYXRmb3JtQ0FMYXllcnMs
IG9uZSBmb3Igc3VibGF5ZXJzIG9mIHRoZSBzdHJ1Y3R1cmFsCiAgICAgICAgIGxheWVyLCBhbmQg
b25lIGZvciBzdWJsYXllcnMgb2YgdGhlIHByaW1hcnkgbGF5ZXIuIEl0IGFkZHMgY3VzdG9tIHN1
YmxheWVycyB0bwpAQCAtMjk2Niw3ICszMDAxLDcgQEAKICAgICAgICAgUmV2aWV3ZWQgYnkgTGV2
aSBXZWludHJhdWIuCiAKICAgICAgICAgUmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZCgpIGNv
bnZlcnRzIHRoZSBjb250YWluZXIgb2Zmc2V0cyB0byBhIHJlbGF0aXZlIHRyYW5zZm9ybSwKLSAg
ICAgICAgYnV0IGluIGRvaW5nIHNvIGl0IGVuZHMgdXAgYWNjdW11bGF0aW5nIHN1YnBpeGVsIHJv
dW5kaW5nIGRlbHRhcyB0d2ljZTogZmlyc3QgZm9yIAorICAgICAgICBidXQgaW4gZG9pbmcgc28g
aXQgZW5kcyB1cCBhY2N1bXVsYXRpbmcgc3VicGl4ZWwgcm91bmRpbmcgZGVsdGFzIHR3aWNlOiBm
aXJzdCBmb3IKICAgICAgICAgYWRqdXN0ZWRQYWludE9mZnNldCBhbmQgc2Vjb25kIGluIGxvY2Fs
VG9QYXJlbnRUcmFuc2Zvcm0oKS4gSWYgY29vcmRpbmF0ZXMgYXJlIG9uCiAgICAgICAgIGhhbGYt
cGl4ZWwgYm91bmRhcmllcywgdGhlIDJ4IHJvdW5kaW5nIGRlbHRhIHlpZWxkcyBhIGZ1bGwgcGl4
ZWwgZHJpZnQgYW5kIHdlIGVuZCB1cAogICAgICAgICBwYWludGluZyBhdCB0aGUgd3JvbmcgbG9j
YXRpb24uCkBAIC0zMTE2LDcgKzMxNTEsNyBAQAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTIw
NDQ5NjQ+CiAKICAgICAgICAgVW5yZXZpZXdlZCBCdWlsZCBmaXguCi0gICAgICAgIAorCiAgICAg
ICAgIENHRmxvYXQgaXMgYWxyZWFkeSBhIGZsb2F0IGluIGEgMzItYml0IGJ1aWxkIHNvIG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQoKSBpcyB1bm5lY2Vzc2FyeQogCiAgICAgICAgICogcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tOgpAQCAtMzE0Niw3ICszMTgxLDcgQEAKICAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6IE1v
dmUgdGhlIGNvZGUgdGhhdCBtYXJrcyBhbGwgdHJhY2tzIGFzCiAgICAgICAgICAgICB1bi1jb25m
aWd1cmVkIHRvIG1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJlZCBzbyBp
dCBjYW4gYmUgcmV1c2VkLgogICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZCk6IE5ldywgZm9yY2UgYSByZWV2YWx1YXRpb24gb2YgYWxs
IHRleHQgdHJhY2tzLgotICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWFya0Nh
cHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKTogTmV3LCBjb2RlIG1vdmVkIGZy
b20gCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptYXJrQ2FwdGlvbkFuZFN1
YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQpOiBOZXcsIGNvZGUgbW92ZWQgZnJvbQogICAgICAg
ICAgICAgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlCiAgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50Lmg6IEluaGVyaXQgZnJvbSBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIu
CiAKQEAgLTMxNzEsMTAgKzMyMDYsMTAgQEAKIAogICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmNwcDoKICAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUJveDo6VGV4dFRyYWNr
Q3VlQm94KTogU2V0IHRoZSBzaGFkb3cgcHNldWRvIGlkLgotICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ3VlQm94Ojp0ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZCk6IE5ldywgY2xhc3Mg
bWV0aG9kIHRvIHJldHVybiB0aGUgCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6
OnRleHRUcmFja0N1ZUJveFNoYWRvd1BzZXVkb0lkKTogTmV3LCBjbGFzcyBtZXRob2QgdG8gcmV0
dXJuIHRoZQogICAgICAgICAgICAgc2hhZG93IHBzZXVkbyBpZCBzbyBpdCBjYW4gYmUgdXNlZCBl
bHNld2hlcmUuCiAgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6OnNoYWRvd1BzZXVk
b0lkKTogQ2FsbCB0ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZC4KLSAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0N1ZTo6cGFzdE5vZGVzU2hhZG93UHNldWRvSWQpOiBOZXcsIGNsYXNzIG1l
dGhvZCB0byByZXR1cm4gdGhlIAorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpwYXN0
Tm9kZXNTaGFkb3dQc2V1ZG9JZCk6IE5ldywgY2xhc3MgbWV0aG9kIHRvIHJldHVybiB0aGUKICAg
ICAgICAgICAgIHNoYWRvdyBwc2V1ZG8gaWQgc28gaXQgY2FuIGJlIHVzZWQgZWxzZXdoZXJlLgog
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpmdXR1cmVOb2Rlc1NoYWRvd1BzZXVkb0lk
KTogRGl0dG8uCiAgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnVwZGF0ZURpc3BsYXlU
cmVlKToKQEAgLTMxODksMTUgKzMyMjQsMTUgQEAKICAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25V
c2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMpOiBOZXcsIHBhc3N0
aHJvdWdoIHRvIFdLU0kgZnVuY3Rpb24uCiAgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjp1c2VyUHJlZmVyc0NhcHRpb25zKTogRGl0dG8uCiAgICAgICAgIChXZWJD
b3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1dpbmRvd0NvbG9yKTogUmV0
dXJuIENvbG9yIHdpdGggdXNlcidzIGNhcHRpb24gd2luZG93IGNvbG9yIHByZWZlcmVuY2UuCi0g
ICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc0JhY2tn
cm91bmRDb2xvcik6IFJldHVybiBDb2xvciB3aXRoIHVzZXIncyBjYXB0aW9uIAorICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ29s
b3IpOiBSZXR1cm4gQ29sb3Igd2l0aCB1c2VyJ3MgY2FwdGlvbgogICAgICAgICAgICAgYmFja2dy
b3VuZCBjb2xvciBwcmVmZXJlbmNlLgogICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01hYzo6Y2FwdGlvbnNUZXh0Q29sb3IpOiBSZXR1cm4gQ29sb3Igd2l0aCB1c2VyJ3Mg
Y2FwdGlvbiB0ZXh0IGNvbG9yIHByZWZlcmVuY2UuCiAgICAgICAgIChXZWJDb3JlOjpDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcik6IFJldHVy
biBDb2xvciBmb3IgdGV4dCBlZGdlIGVmZmVjdC4KICAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25V
c2VyUHJlZmVyZW5jZXNNYWM6OmNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IpOiBSZXR1cm4g
U3RyaW5nIHdpdGggQ1NTIHRvIHNldCBhIHRleHQtc2hhZG93CiAgICAgICAgICAgICBvciB3ZWJr
aXQtdGV4dC1zdHJva2UgcHJvcGVydHkuCi0gICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpjc3NDb2xvclByb3BlcnR5KTogUmV0dXJuIGEgU3RyaW5nIHdpdGggY3Nz
IHRvIHNldCBhIHByb3BlcnR5IAorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYzo6Y3NzQ29sb3JQcm9wZXJ0eSk6IFJldHVybiBhIFN0cmluZyB3aXRoIGNzcyB0byBz
ZXQgYSBwcm9wZXJ0eQogICAgICAgICAgICAgd2l0aCBhIGNvbG9yIHZhbHVlLgotICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNUZXh0RWRnZVN0eWxl
KTogUmV0dXJuIGEgU3RyaW5nIHdpdGggY3NzIHRvIHN0eWxlIGNhcHRpb24gCisgICAgICAgIChX
ZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1RleHRFZGdlU3R5bGUp
OiBSZXR1cm4gYSBTdHJpbmcgd2l0aCBjc3MgdG8gc3R5bGUgY2FwdGlvbgogICAgICAgICAgICAg
dGV4dCB3aXRoIHRoZSB1c2VyJ3MgcHJlZmVycmVkIHRleHQgZWRnZSBzdHllLgogICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNEZWZhdWx0Rm9udCk6
IFJldHVybiBhIFN0cmluZyB3aXRoIGNzcyB0byBzdHlsZSBjYXB0aW9uCiAgICAgICAgICAgICB0
ZXh0IHdpdGggdGhlIHVzZXIncyBwcmVmZXJyZWQgZm9udC4KQEAgLTMyMDUsNyArMzI0MCw3IEBA
CiAgICAgICAgICAgICB3aXRoIHRoZSB1c2VyJ3MgcHJlZmVycmVkIHN0eWxlLgogICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbkZvbnRTaXplU2NhbGUp
OiBSZXR1cm4gdGhlIHVzZXIncyBwcmVmZXJyZWQgY2FwdGlvbiBmb250IHNjYWxlLgogICAgICAg
ICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvblByZWZlcmVuY2Vz
Q2hhbmdlZCk6IE5vdGlmeSBsaXN0ZW5lcnMgb2YgY2FwdGlvbiBwcmVmZXJlbmNlIGNoYW5nZS4K
LSAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnJlZ2lzdGVyRm9y
Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyk6IEFkZCBhIGNhcHRpb24gcHJlZmVy
ZW5jZXMgCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpyZWdp
c3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBBZGQgYSBjYXB0aW9u
IHByZWZlcmVuY2VzCiAgICAgICAgICAgICBjaGFuZ2VzIGxpc3RlbmVyLgogICAgICAgICAoV2Vi
Q29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6dW5yZWdpc3RlckZvckNhcHRpb25QcmVm
ZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBSZW1vdmUgYSBjYXB0aW9uIHByZWZlcmVuY2VzCiAg
ICAgICAgICAgICBjaGFuZ2VzIGxpc3RlbmVyLgpAQCAtMzQzNyw3ICszNDcyLDcgQEAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3MuCiAKICAgICAgICAgV2Ugc2hvdWxkIHN0b3Jl
IHRoZSBjcmVkZW50aWFscyBpbiB0aGUgcmVkaXJlY3Rpb24gcmVzcG9uc2UgaGFuZGxlciwgaWYg
dGhlIHJlcXVlc3QgaXMgY2hhbGxlbmdlZC4KLSAgICAgICAgQmVjYXVzZSB0aGUgcmVkaXJlY3Qg
cmVzcG9uc2Ugc3VnZ2VzdHMgdGhlIGF1dGhlbnRpY2F0aW9uIHN1Y2NlZWRzLiAKKyAgICAgICAg
QmVjYXVzZSB0aGUgcmVkaXJlY3QgcmVzcG9uc2Ugc3VnZ2VzdHMgdGhlIGF1dGhlbnRpY2F0aW9u
IHN1Y2NlZWRzLgogCiAgICAgICAgIFRlc3Q6IGh0dHA6Ly9icm93c2VydGVzdDAxLnJpbS5uZXQv
YXV0aGJhc2ljCiAKQEAgLTM3MjcsMTAgKzM3NjIsMTAgQEAKICAgICAgICAgYmFja2dyb3VuZCB0
YWIuIEhvd2V2ZXIsIHRoYXQgZHJvcHBlZCB0aGUgbGF5ZXIgZmx1c2ggb24gdGhlIGZsb29yLCBz
byB0aGF0IGFueSBzdWJzZXF1ZW50IGNoYW5nZXMKICAgICAgICAgdG8gR3JhcGhpY3NMYXllckNB
cyB3b3VsZCBqdXN0IHBpbGUgdXAgYW5kIG5ldmVyIGdldCBmbHVzaGVkLiBUaGlzIHdhcyBtb3N0
IGV2aWRlbnQgb24gcGFnZXMKICAgICAgICAgdGhhdCByZXF1aXJlIGZyZXF1ZW50IGZsdXNoaW5n
LCBzdWNoIGFzIHRob3NlIHJ1bm5pbmcgYW5pbWF0ZWQgR0lGcy4KLSAgICAgICAgCisKICAgICAg
ICAgRml4IGJ5IHNldHRpbmcgYSBmbGFnIGluIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpIGlm
IHdlJ3JlIHVuYXR0YWNoZWQuIENvbnN1bHQgdGhlIGZsYWcKICAgICAgICAgd2hlbiByZS1hdHRh
Y2hpbmcgdGhlIHJvb3QgbGF5ZXIsIGFuZCBpZiBpdCdzIHNldCwgZmx1c2ggdGhlIEdyYXBoaWNz
TGF5ZXJzLgotICAgICAgICAKKwogICAgICAgICBOb3QgdGVzdGFibGUgYmVjYXVzZSB3ZSBjYW4n
dCB0ZXN0IGRldGFjaGluZyBhbmQgcmUtYWRkaW5nIHdlYiB2aWV3cyBpbiBEUlQvV1RSLgogCiAg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CkBAIC00NTMwLDkg
KzQ1NjUsOSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KIAotICAgICAg
ICBXaGVuIGJpbmRpbmcgYSB0ZXh0dXJlIHRvIEdMX1RFWFRVUkVfMkQgd2hlbiBHTF9BQ1RJVkVf
VEVYVFVSRSBpcyAwLCB3ZSBzZXQgbV9ib3VuZFRleHR1cmUwIHRvIHRoZSB0ZXh0dXJlIHVuaXQu
IAorICAgICAgICBXaGVuIGJpbmRpbmcgYSB0ZXh0dXJlIHRvIEdMX1RFWFRVUkVfMkQgd2hlbiBH
TF9BQ1RJVkVfVEVYVFVSRSBpcyAwLCB3ZSBzZXQgbV9ib3VuZFRleHR1cmUwIHRvIHRoZSB0ZXh0
dXJlIHVuaXQuCiAgICAgICAgIEhvd2V2ZXIgd2hlbiB3ZSBkZWxldGUgdGhlIHRleHR1cmUsIHdl
IG5lZWQgdG8gYmUgc2V0dGluZyBtX2JvdW5kVGV4dHVyZTAgdG8gMC4KLSAgICAgICAgT3RoZXJ3
aXNlIHdoZW4gd2UgZHJhdyB0byB0aGUgc2NyZWVuIHdlIGJpbmQgbV9ib3VuZFRleHR1cmUwIGlu
IHRoZSBwcmVwYXJlVGV4dHVyZSgpIG1ldGhvZCBhbmQgc2luY2UgdGhlIGFzc29jaWF0ZWQgdGV4
dHVyZSAKKyAgICAgICAgT3RoZXJ3aXNlIHdoZW4gd2UgZHJhdyB0byB0aGUgc2NyZWVuIHdlIGJp
bmQgbV9ib3VuZFRleHR1cmUwIGluIHRoZSBwcmVwYXJlVGV4dHVyZSgpIG1ldGhvZCBhbmQgc2lu
Y2UgdGhlIGFzc29jaWF0ZWQgdGV4dHVyZQogICAgICAgICBoYXMgYWxyZWFkeSBiZWVuIGRlbGV0
ZWQgd2UgZW5kIHVwIGluIGFuIGVycm9yIHN0YXRlLgogCiAgICAgICAgIFRlc3RlZCB1c2luZyBL
aHJvbm9zIFdlYkdMIGNvbmZvcm1hbmNlIHN1aXRlOgpAQCAtNDU0OSw3ICs0NTg0LDcgQEAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCiAKICAgICAgICAgVGhlICd5JyBwYXJhbWV0
ZXJzIG9mIHBvbHlnb24gd2VyZSBjYWxjdWxhdGVkIGJ5IHRoZSB3aXRoIG9mIHRoZSBib3VuZGlu
ZyBib3ggb2YgdGhlIG9iamVjdC4KLSAgICAgICAgVGhpcyBjYXVzZWQgcHJvYmxlbXMgb24gcGVy
Y2VudGFnZSB2YWx1ZXMgZm9yIHBvaW50IHBvc2l0aW9ucy4gCisgICAgICAgIFRoaXMgY2F1c2Vk
IHByb2JsZW1zIG9uIHBlcmNlbnRhZ2UgdmFsdWVzIGZvciBwb2ludCBwb3NpdGlvbnMuCiAgICAg
ICAgIENoYW5nZWQgaXQgdG8gdGhlIGhlaWdodCBvZiB0aGUgYm91bmRpbmcgYm94LgogCiAgICAg
ICAgIFRlc3Q6IGNzczMvbWFza2luZy9jbGlwLXBhdGgtcG9seWdvbi1wZXJjZW50YWdlLmh0bWwK
QEAgLTQ4NTEsNyArNDg4Niw3IEBACiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDAwMTgKIAogICAgICAgICBSZXZpZXdlZCBieSBKdWxpZW4gQ2hhZmZy
YWl4LgotICAgICAgICAKKwogICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgaW5pdGlhbGl6YXRp
b24gZnJvbSBMYXlvdXRTdGF0ZSBjb25zdHJ1Y3RvcgogICAgICAgICBhZGRlZCBpbiByMTMyMTA1
LgogCkBAIC01NDQ3LDcgKzU0ODIsNyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBT
dGFpa29zLgogCi0gICAgICAgIEluICJOZXR3b3JrSm9iOjpoYW5kbGVOb3RpZnlIZWFkZXJSZWNl
aXZlZCIsIGlmIHRoZXJlIGFyZSBzZXZlcmFsICJTZXQtQ29va2llIiBoZWFkZXJzLCAKKyAgICAg
ICAgSW4gIk5ldHdvcmtKb2I6OmhhbmRsZU5vdGlmeUhlYWRlclJlY2VpdmVkIiwgaWYgdGhlcmUg
YXJlIHNldmVyYWwgIlNldC1Db29raWUiIGhlYWRlcnMsCiAgICAgICAgIHdlIHNob3VsZCBjb21i
aW5lIHRoZSBmb2xsb3dpbmcgb25lcyB3aXRoIHRoZSBmaXJzdC4KIAogICAgICAgICBObyBuZXcg
dGVzdCBjYXNlLgpAQCAtNTkzMiw3ICs1OTY3LDcgQEAKICAgICAgICAgYSByZWFsbG9jYXRpb24g
aW4gdGhlIEVsZW1lbnRBdHRyaWJ1dGVEYXRhJ3MgdW5kZXJseWluZyBWZWN0b3I8QXR0cmlidXRl
Pi4KIAogICAgICAgICBUbyBtYWtlIGl0IGhhcmRlciB0byBpbnRyb2R1Y2UgdGhpcyBraW5kIG9m
IGJ1ZyBpbiB0aGUgZnV0dXJlLCBJIGNoYW5nZWQgYWxtb3N0IGFsbCBmdW5jdGlvbnMgdGhhdCB0
YWtlCi0gICAgICAgIGEgImNvbnN0IEF0dHJpYnV0ZSYiIHRvIHRha2UgYSBRdWFsaWZpZWROYW1l
L0F0b21pY1N0cmluZyBjb3VwbGUgaW5zdGVhZCAodGhlIGlkZWEgYmVpbmcgdGhhdCB0aGUgCisg
ICAgICAgIGEgImNvbnN0IEF0dHJpYnV0ZSYiIHRvIHRha2UgYSBRdWFsaWZpZWROYW1lL0F0b21p
Y1N0cmluZyBjb3VwbGUgaW5zdGVhZCAodGhlIGlkZWEgYmVpbmcgdGhhdCB0aGUKICAgICAgICAg
ZmV3ZXIgcmVmZXJlbmNlcyBpbnRvIHRoZSBhdHRyaWJ1dGUgc3RvcmUgd2UgaGF2ZSwgdGhlIGJl
dHRlci4pCiAKICAgICAgICAgVGVzdDogZmFzdC9odG1sL2lucHV0LXR5cGUtY2hhbmdlLWNyYXNo
Lmh0bWwKQEAgLTYxNDMsNyArNjE3OCw3IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5
IFByb3NrdXJ5YWtvdi4KIAotICAgICAgICBGb2xsb3d1cCBmaXggdG8gcjEzMTk1NSBmb3IgY2hy
b21pdW0gcGxhdGZvcm0uICBBZGRlZCBjYWxsIHRvIAorICAgICAgICBGb2xsb3d1cCBmaXggdG8g
cjEzMTk1NSBmb3IgY2hyb21pdW0gcGxhdGZvcm0uICBBZGRlZCBjYWxsIHRvCiAgICAgICAgIChj
b25zdCBVQ2hhciosIHVuc2lnbmVkKSB2ZXJzaW9uIG9mIHZpc2l0ZWRMaW5rSGFzaCBmcm9tIFN0
cmluZyYgdmVyc2lvbi4KIAogICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0xpbmtIYXNoQ2hy
b21pdW0uY3BwOgpAQCAtNjIyOCw3ICs2MjYzLDcgQEAKICAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUZsb3dCb3g6OmNvbXB1dGVMb2dpY2FsQm94SGVpZ2h0cyk6CiAgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5CbG9ja0RpcmVjdGlvbik6CiAgICAgICAgIENoYW5n
ZSBtYXhBc2NlbnQvbWF4RGVzY2VudCB0byBpbnQgdG8gbWF0Y2ggYXNjZW50L2Rlc2NlbnQuCi0g
ICAgICAgIAorCiAgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaDoKICAgICAgICAg
KElubGluZUZsb3dCb3gpOgogICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoK
QEAgLTczNjAsNyArNzM5NSw3IEBACiAyMDEyLTEwLTE5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSAuZ2V0KCkgY2FsbHMgaW4gYXNzZXJ0
aW9ucyBhcyBzdWdnZXN0ZWQgYnkgRGFyaW4gQWRsZXIuCi0gICAgICAgIAorCiAgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbToKICAgICAgICAg
KFBsYXRmb3JtQ0FMYXllcjo6YXBwZW5kU3VibGF5ZXIpOgogICAgICAgICAoUGxhdGZvcm1DQUxh
eWVyOjppbnNlcnRTdWJsYXllcik6CkBAIC03Mzc3LDIwICs3NDEyLDIwIEBACiAgICAgICAgIFRo
ZSBuZXcgdGlsZSBjYWNoZSBjb2RlIGFkZGVkIGFuIHVwZGF0ZVN1YmxheWVycygpIGNhbGwgd2hl
biBzd2l0Y2hpbmcgdG8vZnJvbQogICAgICAgICB0aWxlZCBsYXllcnMuIFRoaXMgY29uZnVzZWQg
bGF0ZXIgc3VibGF5ZXIgcmVidWlsZGluZywgY2F1c2luZyB1cyB0byBhdHRlbXB0IHRvCiAgICAg
ICAgIGFkZCBhIGxheWVyIGFzIGEgY2hpbGQgb2YgaXRzZWxmLCBjYXVzaW5nIGEgaGFuZyBpbiBD
QS4KLSAgICAgICAgCisKICAgICAgICAgRml4IGJ5IHJlbW92aW5nIGFsbCB0aGUgZXhwbGljaXQg
Y2FsbHMgdG8gdXBkYXRlRm9vIHdoZW4gdXBkYXRpbmcgdGhlIHN0cnVjdHVyYWwKICAgICAgICAg
bGF5ZXIgYW5kIHN3aXRjaGluZyB0by9mcm9tIHRpbGVkIGxheWVycy4gSW5zdGVhZCwgd2Ugc2V0
IGRpcnR5IGZsYWdzLCBhbmQgcmVseQogICAgICAgICBvbiB0aGUgZmFjdCB0aGF0IHRoZXNlIGZs
YWctZGlydHlpbmcgZnVuY3Rpb25zIGdldCBjYWxsZWQgYmVmb3JlIHRoZSBsYXRlciBmdW5jdGlv
bnMKICAgICAgICAgdGhhdCBwcm9jZXNzIHRob3NlIGRpcnR5IGZsYWdzLiBUaGlzIGlzIGFzc3Vy
ZWQgYnkgc29tZSByZW9yZGVyaW5nIG9mIHRoZSB1cGRhdGUKICAgICAgICAgZnVuY3Rpb24gY2Fs
bHMuCi0gICAgICAgIAorCiAgICAgICAgIEEgZmluYWwgd3JpbmtsZSBpcyB0aGF0IGVuc3VyZVN0
cnVjdHVyYWxMYXllcigpIGNhbiBjaGFuZ2UgdGhlIGxheWVyIHRoYXQgb3VyCiAgICAgICAgIHBh
cmVudCBHcmFwaGljc0xheWVyIHB1dCBpbiBpdHMgc3VibGF5ZXIgbGlzdC4gUmF0aGVyIHRoYW4g
ZGlkZGxlIHdpdGggdGhhdCBzdWJsYXllcgogICAgICAgICBsaXN0IGRpcmVjdGx5IGxpa2Ugd2Ug
dXNlZCB0bywganVzdCBjYWxsIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCkgb24gdGhlIHBhcmVudCwg
YW5kIGhhdmUKICAgICAgICAgY29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKSBjaGVj
ayB0aGUgQ2hpbGRyZW5DaGFuZ2VkIGFuZCBkbyBhIHNlY29uZCB1cGRhdGUKICAgICAgICAgb2Yg
c3VibGF5ZXJzIGlmIG5lY2Vzc2FyeSAod2UgY2xlYXIgdGhlIGZsYWcgaW4gY29tbWl0TGF5ZXJD
aGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCksIHNvCiAgICAgICAgIG9ubHkgZG8gdGhpcyB3b3JrIGlm
IGEgc3VibGF5ZXIgcmVxdWVzdGVkIGl0KS4KLSAgICAgICAgCisKICAgICAgICAgVGVzdHM6IGNv
bXBvc2l0aW5nL3RpbGluZy9wcmVzZXJ2ZTNkLXRpbGVkLmh0bWwKICAgICAgICAgICAgICAgIGNv
bXBvc2l0aW5nL3RpbGluZy9yZWZsZWN0ZWQtdGlsZWQuaHRtbAogCkBAIC03Njg5LDIzICs3NzI0
LDIzIEBACiAyMDEyLTEwLTE5ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk3NjgKLSAgICAg
ICAgV2Ugc2hvdWxkIGxpbWl0IHRoZSB0aWxlIGNhY2hlIGNvdmVyYWdlIHdoZW4gYSBwYWdlIGNh
bid0IHRha2UgCisgICAgICAgIFdlIHNob3VsZCBsaW1pdCB0aGUgdGlsZSBjYWNoZSBjb3ZlcmFn
ZSB3aGVuIGEgcGFnZSBjYW4ndCB0YWtlCiAgICAgICAgIGFkdmFudGFnZSBvZiBmYXN0IHRpbGUg
c2Nyb2xsaW5nIGFueXdheQogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KIAot
ICAgICAgICBXaGVuIHNpdGVzIGNhbid0IHVzZSBmYXN0LXNjcm9sbGluZywgdGhlcmUgaXMgbm8g
bmVlZCB0byBpbmZsYXRlIHRoZSAKLSAgICAgICAgdGlsZSBjYWNoZS4gSW4gZmFjdCwgd2UgZ2V0
IGEgcGVyZm9ybWFuY2UgYm9vc3QgYnkga2VlcGluZyBpdCBzbWFsbCAKLSAgICAgICAgb24gcGFp
bnRpbmctaW50ZW5zaXZlIHNpdGVzLiAKKyAgICAgICAgV2hlbiBzaXRlcyBjYW4ndCB1c2UgZmFz
dC1zY3JvbGxpbmcsIHRoZXJlIGlzIG5vIG5lZWQgdG8gaW5mbGF0ZSB0aGUKKyAgICAgICAgdGls
ZSBjYWNoZS4gSW4gZmFjdCwgd2UgZ2V0IGEgcGVyZm9ybWFuY2UgYm9vc3QgYnkga2VlcGluZyBp
dCBzbWFsbAorICAgICAgICBvbiBwYWludGluZy1pbnRlbnNpdmUgc2l0ZXMuCiAKLSAgICAgICAg
SW5zdGVhZCBvZiBqdXN0IGxvb2tpbmcgYSB3aGV0aGVyIG9yIG5vdCB0aGUgRnJhbWVWaWV3IAot
ICAgICAgICBjYW5IYXZlU2Nyb2xsYmFyKCksIGNvbnN1bHQgCisgICAgICAgIEluc3RlYWQgb2Yg
anVzdCBsb29raW5nIGEgd2hldGhlciBvciBub3QgdGhlIEZyYW1lVmlldworICAgICAgICBjYW5I
YXZlU2Nyb2xsYmFyKCksIGNvbnN1bHQKICAgICAgICAgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCgpLgogICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKICAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNrcyk6CiAgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CiAgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckJhY2tpbmc6OlJlbmRlckxheWVyQmFja2luZyk6Ci0gICAgICAgIAorCiAg
ICAgICAgIEV4cG9zZSBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
KCkuCiAgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgog
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc05vbkxheWVyRml4ZWRP
YmplY3RzKToKQEAgLTc4ODAsNyArNzkxNSw3IEBACiAgICAgICAgIE1hcmtpbmcgaW50ZXJuYWwg
Yml0bWFwIGNvcHkgYXMgaW1tdXRhYmxlIHRvIHByZXZlbnQgaXQgZnJvbSBiZWluZwogICAgICAg
ICB1bm5lY2Vzc2FyaWx5IGR1cGxpY2F0ZWQgaW4gc2tpYSBieSBTa0JpdG1hcEhlYXAuCiAKLSAg
ICAgICAgTm8gbmV3IHRlc3RzOiBjb2RlIHBhdGggYWxyZWFkeSB3ZWxsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgbGF5b3V0IHRlc3RzIAorICAgICAgICBObyBuZXcgdGVzdHM6IGNvZGUgcGF0aCBhbHJl
YWR5IHdlbGwgY292ZXJlZCBieSBleGlzdGluZyBsYXlvdXQgdGVzdHMKICAgICAgICAgZmFzdC9j
YW52YXMvY2FudmFzLXBhdHRlcm4tKgogCiAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9QYXR0ZXJuU2tpYS5jcHA6CkBAIC03ODkzLDggKzc5MjgsOCBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFuZHJlYXMgS2xpbmcuCiAKLSAgICAgICAgQ3VycmVudGx5IHdlIG1haW50YWluIGEg
cGVyLWRvY3VtZW50IGxpc3Qgb2Ygc3R5bGVzaGVldHMgdGhhdCBtYXRjaGVzIHdoYXQgaXMgcmV0
dXJuZWQgYnkgdGhlIFN0eWxlU2hlZXRMaXN0IERPTSBBUEkuIAotICAgICAgICBUaGlzIGxpc3Qg
Y29udGFpbnMgYm90aCBDU1MgYW5kIFhTTFQgc3R5bGVzaGVldHMgd2hpY2ggaW50ZXJuYWxseSBo
YXZlIGJhc2ljYWxseSBub3RoaW5nIGluIGNvbW1vbi4gTWFpbnRhaW5pbmcgCisgICAgICAgIEN1
cnJlbnRseSB3ZSBtYWludGFpbiBhIHBlci1kb2N1bWVudCBsaXN0IG9mIHN0eWxlc2hlZXRzIHRo
YXQgbWF0Y2hlcyB3aGF0IGlzIHJldHVybmVkIGJ5IHRoZSBTdHlsZVNoZWV0TGlzdCBET00gQVBJ
LgorICAgICAgICBUaGlzIGxpc3QgY29udGFpbnMgYm90aCBDU1MgYW5kIFhTTFQgc3R5bGVzaGVl
dHMgd2hpY2ggaW50ZXJuYWxseSBoYXZlIGJhc2ljYWxseSBub3RoaW5nIGluIGNvbW1vbi4gTWFp
bnRhaW5pbmcKICAgICAgICAgYSBsaXN0IG9mIGFjdGl2ZSBDU1Mgc3R5bGVzaGVldHMgc2VwYXJh
dGVseSBzaW1wbGlmaWVzIGNvZGUgaW4gbnVtYmVyIG9mIHBsYWNlcy4KIAogICAgICAgICAqIGNz
cy9TdHlsZVJlc29sdmVyLmNwcDoKQEAgLTgyMDAsNyArODIzNSw3IEBACiAKICAgICAgICAgQVJJ
QSByZXF1aXJlcyB0aGF0IGFyaWEtaGlkZGVuPWZhbHNlIG92ZXJyaWRlIGFuIGVsZW1lbnQncyBu
YXRpdmUgdmlzaWJpbGl0eSBhbmQgaW5jbHVkZSB0aGF0CiAgICAgICAgIG5vZGUgaW4gdGhlIEFY
IGhpZXJhcmNoeS4KLSAKKwogICAgICAgICBUbyBhY2NvbXBsaXNoIHRoaXMgd2UgaGF2ZSB0byBh
bGxvdyBpbnZpc2libGUgaXRlbXMgdG8gYmUgaW5jbHVkZWQsIGFzIHdlbGwgYXMgaXRlbXMgdGhh
dAogICAgICAgICBoYXZlIG5vIHJlbmRlcmVycyBhc3NvY2lhdGVkIHdpdGggdGhlbS4KIApAQCAt
ODMxNSwxNCArODM1MCwxNCBAQAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgogCiAg
ICAgICAgIFRoZSBjdXJyZW50IG1vZGVsIG9mIGRldGVybWluaW5nIHRoZSBhY2Nlc3NpYmxlIHRl
eHQgZm9yIGFuIG9iamVjdCBoYXMgYSBsb3Qgb2YgTWFjIGJpYXNlcyBidWlsdCBpbgotICAgICAg
ICBkdWUgdG8gbGVnYWN5IGltcGxlbWVudGF0aW9uLiAKKyAgICAgICAgZHVlIHRvIGxlZ2FjeSBp
bXBsZW1lbnRhdGlvbi4KIAogICAgICAgICBUaGlzIGNoYW5nZSBjYXRlZ29yaXplcyBhbmQgb3Jk
ZXJzIGFjY2Vzc2liaWxpdHkgdGV4dCBiYXNlZCBvbiBXQUktQVJJQSB0ZXh0IGNvbXB1dGF0aW9u
IHJ1bGVzIGFuZCB0aGVuCiAgICAgICAgIGFsbG93cyB0aGUgcGxhdGZvcm0gKG9ubHkgTWFjIHJp
Z2h0IG5vdykgdG8gZGVjaWRlIGhvdyBiZXN0IHRvIGFwcGx5IHRoYXQgdGV4dCB0byBpdHMgb3du
IEFYIEFQSS4KICAgICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvcm9sZXMjdGV4
dGFsdGVybmF0aXZlY29tcHV0YXRpb24KIAogICAgICAgICBUaGlzIGNoYW5nZSB0cmllZCB2ZXJ5
IGhhcmQgbm90IHRvIGNoYW5nZSBhbnkgdGVzdCBiZWhhdmlvciwgZXZlbiB0aG91Z2ggaXQgZXhw
b3NlZCBhIG51bWJlciBvZiB3ZWlyZAotICAgICAgICBlZGdlIGNhc2VzIHdoZXJlIHdlIHdlcmUg
dHJlYXRpbmcgYXR0cmlidXRlcyBkaWZmZXJlbnRseSBiYXNlZCBvbiBlbGVtZW50IHR5cGUuIAor
ICAgICAgICBlZGdlIGNhc2VzIHdoZXJlIHdlIHdlcmUgdHJlYXRpbmcgYXR0cmlidXRlcyBkaWZm
ZXJlbnRseSBiYXNlZCBvbiBlbGVtZW50IHR5cGUuCiAKICAgICAgICAgRnV0dXJlIHBhdGNoZXMg
d2lsbCByZXNvbHZlIHRob3NlIGRpc2NyZXBhbmNpZXMuCiAKQEAgLTg5MDUsNyArODk0MCw3IEBA
CiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgR2VudGlsY29yZS4KIAogICAgICAgICBodHRwOi8v
d3d3LnczLm9yZy9UUi8yMDEyL0NSLXJlc291cmNlLXRpbWluZy0yMDEyMDUyMi8KLSAgICAgICAg
VGhpcyBwYXRjaCBlbmFibGUgZnVuY3Rpb25hbGl0eSBvZiBzZXQgYnVmZmVyIHNpemUoZGVmYXVs
dCBpcyAxNTAgYXMgc3BlYykuIFdoZW4gYnVmZmVyIGlzIGZ1bGwsIHJlc291cmNlVGltaW5nQnVm
ZmVyRnVsbCBldmVudCB3aWxsIGJlIGZpcmVkLiBJbmNvbWluZyBlbnRyaWVzIHdpbGwgYmUgZHJv
cHBlZCBpZiBubyBtb3JlIHNwYWNlIGZvciB0aGVtLiAKKyAgICAgICAgVGhpcyBwYXRjaCBlbmFi
bGUgZnVuY3Rpb25hbGl0eSBvZiBzZXQgYnVmZmVyIHNpemUoZGVmYXVsdCBpcyAxNTAgYXMgc3Bl
YykuIFdoZW4gYnVmZmVyIGlzIGZ1bGwsIHJlc291cmNlVGltaW5nQnVmZmVyRnVsbCBldmVudCB3
aWxsIGJlIGZpcmVkLiBJbmNvbWluZyBlbnRyaWVzIHdpbGwgYmUgZHJvcHBlZCBpZiBubyBtb3Jl
IHNwYWNlIGZvciB0aGVtLgogCiAgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3czYy93ZWJwZXJm
L3N1Ym1pc3Npb24vSW50ZWwvcmVzb3VyY2UtdGltaW5nL3Rlc3RfcmVzb3VyY2VfdGltaW5nX2J1
ZmZlcl9mdWxsX3doZW5fcG9wdWxhdGVfZW50cmllcy5odG1sCiAgICAgICAgICAgICAgICBodHRw
L3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Npb24vSW50ZWwvcmVzb3VyY2UtdGltaW5nL3Rlc3Rf
cmVzb3VyY2VfdGltaW5nX2J1ZmZlcl9mdWxsX3doZW5fc2hyaW5rX2J1ZmZlcl9zaXplLmh0bWwK
QEAgLTkyNTMsMjYgKzkyODgsMjYgQEAKIDIwMTItMTAtMTggIEJldGggRGFraW4gIDxiZGFraW5A
YXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05OTY2OAotICAgICAgICBSRUdSRVNTSU9OOiBDcmFzaCBpbiAKKyAgICAgICAgUkVHUkVT
U0lPTjogQ3Jhc2ggaW4KICAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbgogICAgICAgICAtYW5kIGNvcnJlc3BvbmRp
bmctCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQ5MTkwMT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIuCiAKLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMTMwNzgzIGNoYW5nZWQgdGhlIGxpZmV0aW1lIG9mIHRoZSAKLSAgICAgICAgU2Nyb2xs
aW5nU3RhdGVUcmVlJ3Mgcm9vdFN0YXRlTm9kZS4gQmVmb3JlIHRoYXQgcGF0Y2gsIHRoZSByb290
IHN0YXRlIAotICAgICAgICBub2RlIHdhcyBuZXZlciBkZXN0cm95ZWQuIEl0IHdhcyBqdXN0IGNv
bnN0YW50bHkgcmUtdXNlZCBmb3IgCi0gICAgICAgIGRpZmZlcmVudCBSZW5kZXJMYXllckJhY2tp
bmdzLiBUaGlzIGNyYXNoIGlzIGp1c3Qgb25lIG9mIGEgZmV3IGJ1Z3MgCi0gICAgICAgIHRoYXQg
aGFzIG9jY3VycmVkIGJlY2F1c2Ugb2YgdGhhdCBjaGFuZ2UuIEkgaGF2ZSBmaXhlZCB0aGUgb3Ro
ZXIgYnVncyAKLSAgICAgICAgaW5kaXZpZHVhbGx5LCBidXQgSSB0aGluayB0aGF0IGxvbmctdGVy
bSwgaXQgaXMgdGhlIHNhZmVzdCBzb2x1dGlvbiAKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvMTMwNzgzIGNoYW5nZWQgdGhlIGxpZmV0aW1lIG9mIHRoZQorICAgICAg
ICBTY3JvbGxpbmdTdGF0ZVRyZWUncyByb290U3RhdGVOb2RlLiBCZWZvcmUgdGhhdCBwYXRjaCwg
dGhlIHJvb3Qgc3RhdGUKKyAgICAgICAgbm9kZSB3YXMgbmV2ZXIgZGVzdHJveWVkLiBJdCB3YXMg
anVzdCBjb25zdGFudGx5IHJlLXVzZWQgZm9yCisgICAgICAgIGRpZmZlcmVudCBSZW5kZXJMYXll
ckJhY2tpbmdzLiBUaGlzIGNyYXNoIGlzIGp1c3Qgb25lIG9mIGEgZmV3IGJ1Z3MKKyAgICAgICAg
dGhhdCBoYXMgb2NjdXJyZWQgYmVjYXVzZSBvZiB0aGF0IGNoYW5nZS4gSSBoYXZlIGZpeGVkIHRo
ZSBvdGhlciBidWdzCisgICAgICAgIGluZGl2aWR1YWxseSwgYnV0IEkgdGhpbmsgdGhhdCBsb25n
LXRlcm0sIGl0IGlzIHRoZSBzYWZlc3Qgc29sdXRpb24KICAgICAgICAgdG8gZ28gYmFjayB0byB0
aGUgb3JpZ2luYWwgb3duZXJzaGlwIG1vZGVsLgogCi0gICAgICAgIFNvIHRoaXMgcGF0Y2ggZW5z
dXJlcyB0aGF0IHRoZSBzdGF0ZSB0cmVlIHdpbGwgYWx3YXlzIGhhdmUgYSByb290IAotICAgICAg
ICBzdGF0ZSBub2RlLiBJbnN0ZWFkIG9mIGRlc3Ryb3lpbmcgYW5kIHJlLWNyZWF0aW5nIHRoZSBy
b290IG5vZGUgd2hlbiAKKyAgICAgICAgU28gdGhpcyBwYXRjaCBlbnN1cmVzIHRoYXQgdGhlIHN0
YXRlIHRyZWUgd2lsbCBhbHdheXMgaGF2ZSBhIHJvb3QKKyAgICAgICAgc3RhdGUgbm9kZS4gSW5z
dGVhZCBvZiBkZXN0cm95aW5nIGFuZCByZS1jcmVhdGluZyB0aGUgcm9vdCBub2RlIHdoZW4KICAg
ICAgICAgaXQncyBzY3JvbGwgSUQgY2hhbmdlcywgd2UganVzdCB1cGRhdGUgdGhlIElELgogCi0g
ICAgICAgIGF0dGFjaFRvU3RhdGVUcmVlKCkgbm93IHRha2VzIGFuIGFkZGl0aW9uYWwgSUQgcmVw
cmVzZW50aW5nIHRoZSBJRCBvZiAKKyAgICAgICAgYXR0YWNoVG9TdGF0ZVRyZWUoKSBub3cgdGFr
ZXMgYW4gYWRkaXRpb25hbCBJRCByZXByZXNlbnRpbmcgdGhlIElEIG9mCiAgICAgICAgIHRoZSBw
YXJlbnQgbm9kZS4KICAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRv
ci5oOgogICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmF0dGFjaFRvU3Rh
dGVUcmVlKToKQEAgLTkyODEsMTEgKzkzMTYsMTEgQEAKICAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZU5vZGUuaDoKICAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRl
Tm9kZTo6c2V0U2Nyb2xsaW5nTm9kZUlEKToKIAotICAgICAgICBUaGlzIGNvZGUgdGhhdCBwcm92
aWRlZCBhIHdheSB0byBtYXJrIGFsbCBwcm9wZXJ0aWVzIGFzIGhhdmluZyAKLSAgICAgICAgY2hh
bmdlZCB3YXMgYWRkZWQgaW4gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTMwOTg5
IGFzIGEgd2F5IAotICAgICAgICB0byBlbnN1cmUgd2Ugd291bGQgcmUtc2V0IFNjcm9sbGluZ1Ro
cmVhZCdzIG5vZGVzIHdoZW4gd2UgZGVzdHJveWVkIAotICAgICAgICBhbmQgcmUtY3JlYXRlZCB0
aGUgcm9vdFN0YXRlTm9kZS4gTm93IHRoYXQgd2UgYXJlIG5vIGxvbmdlciAKLSAgICAgICAgZGVz
dHJveWluZyBhbmQgcmUtY3JlYXRpbmcgdGhlIHJvb3RTdGF0ZU5vZGUsIHRoaXMgY29kZSBpcyBu
byBsb25nZXIgCisgICAgICAgIFRoaXMgY29kZSB0aGF0IHByb3ZpZGVkIGEgd2F5IHRvIG1hcmsg
YWxsIHByb3BlcnRpZXMgYXMgaGF2aW5nCisgICAgICAgIGNoYW5nZWQgd2FzIGFkZGVkIGluIGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzMDk4OSBhcyBhIHdheQorICAgICAgICB0
byBlbnN1cmUgd2Ugd291bGQgcmUtc2V0IFNjcm9sbGluZ1RocmVhZCdzIG5vZGVzIHdoZW4gd2Ug
ZGVzdHJveWVkCisgICAgICAgIGFuZCByZS1jcmVhdGVkIHRoZSByb290U3RhdGVOb2RlLiBOb3cg
dGhhdCB3ZSBhcmUgbm8gbG9uZ2VyCisgICAgICAgIGRlc3Ryb3lpbmcgYW5kIHJlLWNyZWF0aW5n
IHRoZSByb290U3RhdGVOb2RlLCB0aGlzIGNvZGUgaXMgbm8gbG9uZ2VyCiAgICAgICAgIG5lY2Vz
c2FyeS4KICAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUuY3BwOgogICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZS5oOgpAQCAtOTMwNCw3ICs5MzM5LDcgQEAKICAgICAgICAgKFNjcm9sbGluZ1N0YXRlVHJl
ZSk6CiAgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OnNldFJvb3RTdGF0ZU5v
ZGUpOgogCi0gICAgICAgIGF0dGFjaFRvU3RhdGVUcmVlKCkgbm93IHRha2VzIGFuIGFkZGl0aW9u
YWwgSUQgcmVwcmVzZW50aW5nIHRoZSBJRCBvZiAKKyAgICAgICAgYXR0YWNoVG9TdGF0ZVRyZWUo
KSBub3cgdGFrZXMgYW4gYWRkaXRpb25hbCBJRCByZXByZXNlbnRpbmcgdGhlIElEIG9mCiAgICAg
ICAgIHRoZSBwYXJlbnQgbm9kZS4KICAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nQ29vcmRpbmF0b3JNYWMuaDoKICAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjKToK
QEAgLTkzMTMsMTkgKzkzNDgsMTkgQEAKICAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JNYWMubW06CiAgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29y
ZGluYXRvck1hYzo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKToKIAotICAgICAgICBEbyBu
b3QgZGVzdHJveSBhbmQgcmUtY3JlYXRlIHRoZSBzdGF0ZSBub2RlLiBKdXN0IHVwZGF0ZSBpdHMg
SUQuIFdoZW4gCisgICAgICAgIERvIG5vdCBkZXN0cm95IGFuZCByZS1jcmVhdGUgdGhlIHN0YXRl
IG5vZGUuIEp1c3QgdXBkYXRlIGl0cyBJRC4gV2hlbgogICAgICAgICB3ZSBzdXBwb3J0IGNoaWxk
IG5vZGVzIHNvb24sIHdlIHdpbGwgY3JlYXRlIHRoZW0gaW4gdGhpcyBmdW5jdGlvbi4KICAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjphdHRhY2hUb1N0YXRlVHJlZSk6
CiAKICAgICAgICAgTm8gbmVlZCB0byBudWxsLWNoZWNrIHRoZSByb290U3RhdGVOb2RlLgogICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmNsZWFyU3RhdGVUcmVlKToK
IAotICAgICAgICBTZW5kIDAgYXMgdGhlIHBhcmVudCBub2RlIElEIHRvIGF0dGFjaFRvU3RhdGVU
cmVlKCkgdG8gcmVwcmVzZW50IHRoZSAKKyAgICAgICAgU2VuZCAwIGFzIHRoZSBwYXJlbnQgbm9k
ZSBJRCB0byBhdHRhY2hUb1N0YXRlVHJlZSgpIHRvIHJlcHJlc2VudCB0aGUKICAgICAgICAgcm9v
dCBub2RlLgogICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmVuc3Vy
ZVJvb3RTdGF0ZU5vZGVGb3JGcmFtZVZpZXcpOgogICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwOgogCi0gICAgICAgIFJlbmRlckxheWVyQmFja2luZzo6YXR0YWNoVG9T
Y3JvbGxpbmdDb29yZGluYXRvcigpIG5vdyB0YWtlcyBhIHBhcmVudCAKKyAgICAgICAgUmVuZGVy
TGF5ZXJCYWNraW5nOjphdHRhY2hUb1Njcm9sbGluZ0Nvb3JkaW5hdG9yKCkgbm93IHRha2VzIGEg
cGFyZW50CiAgICAgICAgIGxheWVyLgogICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNr
aW5nOjphdHRhY2hUb1Njcm9sbGluZ0Nvb3JkaW5hdG9yKToKICAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmg6CkBAIC05NTE4LDcgKzk1NTMsNyBAQAogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCiAKLSAgICAgICAgRmFjdG9yZWQgb3V0IGFuZCBhZGRl
ZCBmaW5kRmlyc3RUcmFpbGluZ1NwYWNlKCkgdGVtcGxhdGVkIGhlbHBlciBmdW5jdGlvbiB0aGF0
IGlzIGNhbGxlZCB3aXRoIHRoZSAKKyAgICAgICAgRmFjdG9yZWQgb3V0IGFuZCBhZGRlZCBmaW5k
Rmlyc3RUcmFpbGluZ1NwYWNlKCkgdGVtcGxhdGVkIGhlbHBlciBmdW5jdGlvbiB0aGF0IGlzIGNh
bGxlZCB3aXRoIHRoZQogICAgICAgICBhcHByb3JpYXRlIGNoYXJhY3RlciBwb2ludGVyIHR5cGUu
CiAKICAgICAgICAgTm8gdGVzdHMgbmVlZGVkLCBjaGFuZ2UgY292ZXJlZCBieSBleGlzdGluZyB0
ZXN0cy4KQEAgLTEwMTY1LDExICsxMDIwMCwxMSBAQAogICAgICAgICB2aXNpYmxlIGFyZWEgcGVy
aW9kaWNhbGx5IHdoaWxlIGFuaW1hdGlvbnMgYW5kIHNjcm9sbGluZyBhcmUgaGFwcGVuaW5nLgog
ICAgICAgICBNYWtlIGEgbmV3IGNsYXNzLCBHcmFwaGljc0xheWVyVXBkYXRlciwgdG8gaGFuZGxl
IHRoaXMgdXBkYXRpbmcuCiAgICAgICAgIEludGVybmFsbHksIGl0IHVzZXMgRGlzcGxheVJlZnJl
c2hNb25pdG9yIHRvIGdlbmVyYXRlIHRoZSBwZXJpb2RpYyB1cGRhdGVzLgotICAgICAgICAKKwog
ICAgICAgICBHcmFwaGljc0xheWVyIGNsaWVudHMgYXJlIG5vdGlmaWVkIHRoYXQgbGF5ZXJzIG5l
ZWQgcGVyaW9kaWMgdXBkYXRlcy4gQ2xpZW50cwogICAgICAgICBhcmUgZnJlZSB0byBtYWtlIHVz
ZSBvZiBHcmFwaGljc0xheWVyVXBkYXRlciB0byBoYW5kbGUgdGhpcyB1cGRhdGluZywgYXMKICAg
ICAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yIGRvZXMuCi0gICAgICAgIAorCiAgICAgICAgIEFs
c28gZG8gc29tZSBtaW5vciByZWZhY3RvcmluZyBvZiBtZXRob2RzIGluIFJlbmRlckxheWVyQ29t
cG9zaXRvciB0aGF0CiAgICAgICAgIGdldCB0byBQYWdlLgogCkBAIC0xMDY4Myw3ICsxMDcxOCw3
IEBACiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCiAKICAgICAgICAgU2VjdXJpdHkg
b3JpZ2luIG9mIGlzb2xhdGVkIHdvcmxkcyB3YXMgbm90IHByZXZpb3VzbHkgc2V0IGF0IHRoZSB3
b3JsZAotICAgICAgICBsZXZlbCwgYWx0aG91Z2ggaXQgY291bGQgaGF2ZSBiZWVuLiAKKyAgICAg
ICAgbGV2ZWwsIGFsdGhvdWdoIGl0IGNvdWxkIGhhdmUgYmVlbi4KIAogICAgICAgICBObyBuZXcg
dGVzdHMuIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgogCkBAIC0xMDcyNCwxMCArMTA3NTks
MTAgQEAKICAgICAgICAgYmUgcmVmbGVjdGVkIGluIHRoZSBHcmFwaGljc0xheWVyJ3MgbV90cmFu
c2Zvcm0uIEhvd2V2ZXIsCiAgICAgICAgIHdlIG5lZWQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhl
IHRyYW5zZm9ybSBpbiBvcmRlciB0byBjb3JyZWN0bHkKICAgICAgICAgY29tcHV0ZSB0aGUgdmlz
aWJsZSByZWN0IG9mIHRoaXMgbGF5ZXIgYW5kIGRlc2NlbmRhbnRzLgotICAgICAgICAKKwogICAg
ICAgICBBZGQgYSBmdW5jdGlvbiB0byBHcmFwaGljc0xheWVyQ2xpZW50IHRvIHJldHJpZXZlIHRo
ZSBjdXJyZW50CiAgICAgICAgIHZhbHVlIG9mIHRoZSB0cmFuc2Zvcm0gZnJvbSB0aGUgY2xpZW50
LgotICAgICAgICAKKwogICAgICAgICBSZW5kZXJMYXllcidzIGN1cnJlbnRUcmFuc2Zvcm0oKSB1
c2VkIHRvIHJldHVybiBhIHRyYW5zZm9ybQogICAgICAgICB3aXRoIHRyYW5zZm9ybS1vcmlnaW4g
YmFrZWQgaW47IEdyYXBoaWNzTGF5ZXJDbGllbnQgbmVlZHMgb25lCiAgICAgICAgIHRoYXQgZXhj
bHVkZXMgdHJhbnNmb3JtLW9yaWdpbiwgc28gZW5oYW5jZSBSZW5kZXJMYXllcjo6Y3VycmVudFRy
YW5zZm9ybSgpCkBAIC0xMTIyNyw3ICsxMTI2Miw3IEBACiAgICAgICAgIG9mIHRoZSBTdHlsZUNv
bnRlbnRUeXBlIGVudW0gYW5kIGFsbCB0aGUgc3dpdGNoIHN0YXRlbWVudHMgb3ZlcgogICAgICAg
ICB0aGUgdHlwZSgpLgogCi0gICAgICAgIE5vIHRlc3RzIG5lZWRlZCwgdGhpcyBpcyBqdXN0IGEg
cmVmYWN0b3IuICAgICAgICAKKyAgICAgICAgTm8gdGVzdHMgbmVlZGVkLCB0aGlzIGlzIGp1c3Qg
YSByZWZhY3Rvci4KIAogICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5jcHA6
CiAgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmg6CkBAIC0xMTU0NSw3ICsx
MTU4MCw3IEBACiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KIAogICAgICAgICBO
byBuZXcgdGVzdHMgYXMgaXQncyBhIHNwZWN1bGF0aXZlIGZpeCBiYXNlZCBvbiBjcmFzaCBkdW1w
IGFuYWx5c2lzLgotICAgICAKKwogICAgICAgICBEZXNwaXRlIE1lZGlhQ29udHJvbFBhbmVsRWxl
bWVudCBjaGVja2luZyBmb3IgZG9jdW1lbnQoKS0+cGFnZSgpIG51bGxpdHkgaW4gb3RoZXIgcGxh
Y2VzLCBpdCBmb3Jnb3Qgb25lIGNoZWNrIGluIG1ha2VUcmFuc3BhcmVudCgpLgogCiAgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgpAQCAtMTE1ODQsNyArMTE2
MTksNyBAQAogCiAgICAgICAgIENsZWFuIHVwIHNvbWUgI2luY2x1ZGVzLCBtb3N0bHkgcmVsYXRl
ZCB0byBHcmFwaGljc0xheWVyLmguIEluIG1hbnkKICAgICAgICAgY2FzZXMgdGhpcyBjYW4gYmUg
cmVwbGFjZWQgYnkgUGxhdGZvcm1MYXllci5oLgotICAgICAgICAKKwogICAgICAgICBSZW1vdmUg
YW4gI2luY2x1ZGUgb2YgUGx1Z2luVmlld0Jhc2UuaCBmcm9tIFBhZ2UuaCwgd2hpY2ggd2FzIGEg
c291cmNlCiAgICAgICAgIG9mICNpbmNsdWRlIGZhbi1vdXQuCiAKQEAgLTExNjI1LDcgKzExNjYw
LDcgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgogCi0gICAg
ICAgIE9uIGNvbnN0cnVjdGlvbiBmcm9tIHBsYXRmb3JtIGVycm9yIHR5cGVzLCBpbml0aWFsaXpl
IHRoZSB0aW1lb3V0IGZsYWcgCisgICAgICAgIE9uIGNvbnN0cnVjdGlvbiBmcm9tIHBsYXRmb3Jt
IGVycm9yIHR5cGVzLCBpbml0aWFsaXplIHRoZSB0aW1lb3V0IGZsYWcKICAgICAgICAgdG8gdHJ1
ZSBpZiB0aGUgZXJyb3IgcmVzdWx0cyBmcm9tIGEgdGltZW91dC4KIAogICAgICAgICBObyBuZXcg
dGVzdHMsIGNvdmVyZWQgYnkgdGVzdHMgdGhhdCB3aWxsIGJlIGFkZGVkIGluIGJ1ZyA3NDgwMi4K
QEAgLTExNzk2LDMzICsxMTgzMSwzMyBAQAogMjAxMi0xMC0xNiAgQmV0aCBEYWtpbiAgPGJkYWtp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk5MjU0Ci0gICAgICAgIE1ha2UgU2Nyb2xsaW5nVHJlZSBhbiBhY3R1YWwgdHJlZSBv
ZiBub2RlcywgYW5kIGhhdmUgaXQgcmVmbGVjdCB0aGUgCisgICAgICAgIE1ha2UgU2Nyb2xsaW5n
VHJlZSBhbiBhY3R1YWwgdHJlZSBvZiBub2RlcywgYW5kIGhhdmUgaXQgcmVmbGVjdCB0aGUKICAg
ICAgICAgU2Nyb2xsaW5nU3RhdGVUcmVlCiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJh
c2VyLgogCi0gICAgICAgIFRoaXMgcGF0Y2ggZmluYWxseSBtYWtlcyB0aGUgU2Nyb2xsaW5nVHJl
ZSBvdmVyIG9uIHRoZSAKLSAgICAgICAgU2Nyb2xsaW5nVGhyZWFkIGF3YXJlIG9mIHRoZSBjaGFu
Z2VzIHRoYXQgd2UgaGF2ZSBiZWVuIG1ha2luZyB0byB0aGUgCisgICAgICAgIFRoaXMgcGF0Y2gg
ZmluYWxseSBtYWtlcyB0aGUgU2Nyb2xsaW5nVHJlZSBvdmVyIG9uIHRoZQorICAgICAgICBTY3Jv
bGxpbmdUaHJlYWQgYXdhcmUgb2YgdGhlIGNoYW5nZXMgdGhhdCB3ZSBoYXZlIGJlZW4gbWFraW5n
IHRvIHRoZQogICAgICAgICBTY3JvbGxpbmdTdGF0ZVRyZWUuCiAKLSAgICAgICAgRmlyc3QsIGl0
IG1ha2VzIFNjcm9sbGluZ1RyZWVOb2RlIGEgbXVjaCBtb3JlIGdlbmVyaWMgY2xhc3MsIHNpbWls
YXIgCi0gICAgICAgIHRvIFNjcm9sbGluZ1N0YXRlTm9kZS4gSXQgaXMgYW4gYWJzdHJhY3QgY2xh
c3MgYW5kIHdlIHdpbGwgYWRkIG90aGVyIAotICAgICAgICB0eXBlcyBvZiBub2RlcyBzdWNoIGFz
IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGVzIHRoYXQgd2lsbCBpbmhlcml0IGZyb20gCi0gICAgICAg
IHRoaXMgY2xhc3MuIAorICAgICAgICBGaXJzdCwgaXQgbWFrZXMgU2Nyb2xsaW5nVHJlZU5vZGUg
YSBtdWNoIG1vcmUgZ2VuZXJpYyBjbGFzcywgc2ltaWxhcgorICAgICAgICB0byBTY3JvbGxpbmdT
dGF0ZU5vZGUuIEl0IGlzIGFuIGFic3RyYWN0IGNsYXNzIGFuZCB3ZSB3aWxsIGFkZCBvdGhlcgor
ICAgICAgICB0eXBlcyBvZiBub2RlcyBzdWNoIGFzIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGVzIHRo
YXQgd2lsbCBpbmhlcml0IGZyb20KKyAgICAgICAgdGhpcyBjbGFzcy4KIAotICAgICAgICBBbGwg
b2YgdGhlIHNjcm9sbGluZyBmdW5jdGlvbmFsaXR5IHRoYXQgd2FzIGluIFNjcm9sbGluZ1RyZWVO
b2RlIGhhcyAKLSAgICAgICAgYmVlbiBtb3ZlZCB0byBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZS4gQW5kIGxpa2V3aXNlLCAKLSAgICAgICAgU2Nyb2xsaW5nVHJlZU5vZGVNYWMgaGFzIGJlZW4g
cmUtbmFtZWQgdG8gCi0gICAgICAgIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjLiAKKyAg
ICAgICAgQWxsIG9mIHRoZSBzY3JvbGxpbmcgZnVuY3Rpb25hbGl0eSB0aGF0IHdhcyBpbiBTY3Jv
bGxpbmdUcmVlTm9kZSBoYXMKKyAgICAgICAgYmVlbiBtb3ZlZCB0byBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS4gQW5kIGxpa2V3aXNlLAorICAgICAgICBTY3JvbGxpbmdUcmVlTm9kZU1hYyBo
YXMgYmVlbiByZS1uYW1lZCB0bworICAgICAgICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1h
Yy4KIAotICAgICAgICBBbmQgZmluYWxseSwgaW5zdGVhZCBvZiBqdXN0IHVwZGF0aW5nIGFuZCBj
cmVhdGluZyB0aGUgcm9vdCBub2RlLCAKLSAgICAgICAgU2Nyb2xsaW5nVHJlZSBub3cgcmVjdXJz
ZXMgdGhyb3VnaCB0aGUgd2hvbGUgU2Nyb2xsaW5nU3RhdGVUcmVlIHRvIAorICAgICAgICBBbmQg
ZmluYWxseSwgaW5zdGVhZCBvZiBqdXN0IHVwZGF0aW5nIGFuZCBjcmVhdGluZyB0aGUgcm9vdCBu
b2RlLAorICAgICAgICBTY3JvbGxpbmdUcmVlIG5vdyByZWN1cnNlcyB0aHJvdWdoIHRoZSB3aG9s
ZSBTY3JvbGxpbmdTdGF0ZVRyZWUgdG8KICAgICAgICAgY3JlYXRlIGFuZCB1cGRhdGUgYSBmdWxs
IHRyZWUgb2Ygbm9kZXMuCiAKICAgICAgICAgTmV3IGZpbGVzIGFuZCBtb3ZlcyBmaWxlcy4KICAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiAKLSAgICAgICAgQWRk
IGEgZ2V0dGVyIGZvciB0aGUgY2hpbGRyZW4gdmVjdG9yIHNpbmNlIHdlIG5lZWQgdG8gcmVjdXJz
ZSBpdCBpbiAKKyAgICAgICAgQWRkIGEgZ2V0dGVyIGZvciB0aGUgY2hpbGRyZW4gdmVjdG9yIHNp
bmNlIHdlIG5lZWQgdG8gcmVjdXJzZSBpdCBpbgogICAgICAgICBTY3JvbGxpbmdUcmVlLgogICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oOgogICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpjaGlsZHJlbik6CkBAIC0xMTgzMiwyNyArMTE4Njcs
MjcgQEAKICAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKICAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OlNjcm9sbGluZ1RyZWUpOgogCi0gICAgICAgIElu
c3RlYWQgb2YganVzdCB1cGRhdGluZyB0aGUgcm9vdCBub2RlLCBjYWxsIHR3byBuZXcgZnVuY3Rp
b25zIHRoYXQgCisgICAgICAgIEluc3RlYWQgb2YganVzdCB1cGRhdGluZyB0aGUgcm9vdCBub2Rl
LCBjYWxsIHR3byBuZXcgZnVuY3Rpb25zIHRoYXQKICAgICAgICAgd2lsbCB0YWtlIGNhcmUgb2Yg
dXBkYXRpbmcgdGhlIHdob2xlIHRyZWUuCiAgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
Ojpjb21taXROZXdUcmVlU3RhdGUpOgogCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gZWN1cnNlcyB0
aHJvdWdoIHRoZSBTY3JvbGxpbmdTdGF0ZVRyZWUgYW5kIHVwZGF0ZXMgdGhlIAorICAgICAgICBU
aGlzIGZ1bmN0aW9uIGVjdXJzZXMgdGhyb3VnaCB0aGUgU2Nyb2xsaW5nU3RhdGVUcmVlIGFuZCB1
cGRhdGVzIHRoZQogICAgICAgICBjb3JyZXNwb25kaW5nIFNjcm9sbGluZ1RyZWVOb2Rlcy4KICAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnVwZGF0ZU5vZGVzRnJvbVN0YXRlTm9kZSk6
CiAKLSAgICAgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgU2Nyb2xsaW5nU3RhdGVUcmVlJ3Mg
bGlzdCBvZiByZW1vdmVkIG5vZGVzIAotICAgICAgICBhbmQgcmVtb3ZlcyB0aGUgY29ycmVzcG9u
ZGluZyBub2RlcyBmcm9tIHRoZSBTY3JvbGxpbmdUcmVlLiBJdCB3aWxsIAotICAgICAgICBkZXN0
cm95IHRoZSBub2RlcyBhZnRlciByZW1vdmluZyBpdCBhcyBsb25nIGFzIGl0J3Mgbm90IHRoZSBy
b290IAotICAgICAgICBub2RlLiBJIHRoaW5rIGl0J3MgdGhlIHNhZmVzdCBjaG9pY2UgZm9yIG5v
dyB0byBuZXZlciByZW1vdmUgdGhlIHJvb3QgCi0gICAgICAgIG5vZGUuIAorICAgICAgICBUaGlz
IGZ1bmN0aW9uIHRha2VzIHRoZSBTY3JvbGxpbmdTdGF0ZVRyZWUncyBsaXN0IG9mIHJlbW92ZWQg
bm9kZXMKKyAgICAgICAgYW5kIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgbm9kZXMgZnJvbSB0
aGUgU2Nyb2xsaW5nVHJlZS4gSXQgd2lsbAorICAgICAgICBkZXN0cm95IHRoZSBub2RlcyBhZnRl
ciByZW1vdmluZyBpdCBhcyBsb25nIGFzIGl0J3Mgbm90IHRoZSByb290CisgICAgICAgIG5vZGUu
IEkgdGhpbmsgaXQncyB0aGUgc2FmZXN0IGNob2ljZSBmb3Igbm93IHRvIG5ldmVyIHJlbW92ZSB0
aGUgcm9vdAorICAgICAgICBub2RlLgogICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6
cmVtb3ZlRGVzdHJveWVkTm9kZXMpOgogCi0gICAgICAgIFNjcm9sbGluZ1RyZWUgbm93IGtlZXBz
IGEgSGFzaE1hcCBtYXBwaW5nIFNjcm9sbGluZ05vZGVJRHMgdG8gCisgICAgICAgIFNjcm9sbGlu
Z1RyZWUgbm93IGtlZXBzIGEgSGFzaE1hcCBtYXBwaW5nIFNjcm9sbGluZ05vZGVJRHMgdG8KICAg
ICAgICAgU2Nyb2xsaW5nVHJlZU5vZGVzLgogICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuaDoKIAotICAgICAgICBBbGwgb2YgdGhlIHNjcm9sbGluZy1yZWxhdGVkIGZ1bmN0
aW9uYWxpdHkgaGFzIGJlZW4gbW92ZWQgZnJvbSB0aGlzIAotICAgICAgICBjbGFzcyB0byBuZXcg
Y2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuIEFuZCBzb21lIGJhc2ljIHRyZWUgCisg
ICAgICAgIEFsbCBvZiB0aGUgc2Nyb2xsaW5nLXJlbGF0ZWQgZnVuY3Rpb25hbGl0eSBoYXMgYmVl
biBtb3ZlZCBmcm9tIHRoaXMKKyAgICAgICAgY2xhc3MgdG8gbmV3IGNsYXNzIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlLiBBbmQgc29tZSBiYXNpYyB0cmVlCiAgICAgICAgIHRyYXZlcnNhbCBm
dW5jdGlvbmFsaXR5IGhhcyBiZWVuIGFkZGVkLgogICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVOb2RlLmNwcDoKICAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2Rl
OjpTY3JvbGxpbmdUcmVlTm9kZSk6CkBAIC0xMTg2Nyw3ICsxMTkwMiw3IEBACiAgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZTo6c2V0UGFyZW50KToKICAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVOb2RlOjpzY3JvbGxpbmdUcmVlKToKIAotICAgICAgICBUaGlzIGNsYXNz
IGNvbnRhaW5zIGFsbCBvZiB0aGUgc2Nyb2xsaW5nLXJlbGF0ZWQgd29yayB0aGF0IHVzZWQgdG8g
YmUgCisgICAgICAgIFRoaXMgY2xhc3MgY29udGFpbnMgYWxsIG9mIHRoZSBzY3JvbGxpbmctcmVs
YXRlZCB3b3JrIHRoYXQgdXNlZCB0byBiZQogICAgICAgICBkb25lIGluIFNjcm9sbGluZ1RyZWVO
b2RlLgogICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmNwcDogQWRkZWQuCiAgICAgICAgIChXZWJDb3JlKToKQEAgLTExODkxLDcgKzExOTI2LDcgQEAK
ICAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW06
CiAgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6ZGV0YWNoRnJvbVN0
YXRlVHJlZSk6CiAKLSAgICAgICAgSW5jbHVkZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1h
Yy5oIGluc3RlYWQgb2YgCisgICAgICAgIEluY2x1ZGUgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVNYWMuaCBpbnN0ZWFkIG9mCiAgICAgICAgIFNjcm9sbGluZ1RyZWVOb2RlTWFjLmgKICAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbToKIApAQCAtMTE5NDAs
NyArMTE5NzUsNyBAQAogICAgICAgICBhZGQgYSBuZXcgUGxhdGZvcm1DQUxheWVyIGxheWVyIHR5
cGUgTGF5ZXJUeXBlUGFnZVRpbGVDYWNoZUxheWVyLAogICAgICAgICBzaW5jZSB0aGUgcGFnZSB0
aWxlIGNhY2hlIHdpbGwgaGF2ZSBzb21lIGRpZmZlcmVudCBiZWhhdmlvciBmcm9tCiAgICAgICAg
IG90aGVyIHRpbGUgY2FjaGUgbGF5ZXJzLgotICAgICAgICAKKwogICAgICAgICBHZW5lcmFsaXpl
IGNvZGUgdGhhdCB3YXMgbG9va2luZyBhdCBMYXllclR5cGVUaWxlQ2FjaGVMYXllciB0byB1c2UK
ICAgICAgICAgdXNlc1RpbGVDYWNoZUxheWVyKCkgaWYgaXQgYXBwbGllcyB0byBib3RoIHR5cGVz
IG9mIHRpbGUgY2FjaGVzLgogCkBAIC0xMTk2MSw3ICsxMTk5Niw3IEBACiAgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tOgogICAgICAgICAoZHJhd0xheWVyQ29udGVu
dHMpOiBBdm9pZCBkb3VibGUtZHJhd2luZyB0aGUgcmVwYWludCBjb3VudGVyIGluIHRpbGUgY2Fj
aGUgbGF5ZXJzLgogCi0yMDEyLTEwLTE2ICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJv
bWl1bS5vcmc+IAorMjAxMi0xMC0xNiAgU3RlcGhlbiBDaGVubmV5ICA8c2NoZW5uZXlAY2hyb21p
dW0ub3JnPgogICAgICAgICBBbiBmZUltYWdlIHRoYXQgdHJpZXMgdG8gcmVuZGVyIGl0c2VsZiBz
aG91bGQgYmUgc3RvcHBlZAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTQ2NTIKIApAQCAtMTIyMzIsNyArMTIyNjcsNyBAQAogICAgICAgICBSZW5kZXJM
YXllcnMgY2FjaGUgcmVwYWludCByZWN0cyB3aGljaCBhcmUgY29tcHV0ZWQgcmVsYXRpdmUgdG8g
dGhlIHJlcGFpbnQgY29udGFpbmVyLgogICAgICAgICBSZXBhaW50IGNvbnRhaW5lcnMgZGVwZW5k
IG9uIHdoZXRoZXIgYSBSZW5kZXJMYXllckJhY2tpbmcgaGFzIGl0cyBvd24gYmFja2luZyBzdG9y
ZSwKICAgICAgICAgc28gaWYgdGhhdCBjaGFuZ2VzLCB3ZSBuZWVkIHRvIHJlY29tcHV0ZSByZXBh
aW50IHJlY3RzIGZvciBhbGwgZGVzY2VuZGFudHMuCi0gICAgICAgIAorCiAgICAgICAgIFRlc3Q6
IGNvbXBvc2l0aW5nL3JlcGFpbnQvcmVxdWlyZXMtYmFja2luZy1yZXBhaW50Lmh0bWwKIAogICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgpAQCAtMTMwMjksNyArMTMw
NjQsNyBAQAogICAgICAgICByZWN0IG9uIHRoZSByb290IHVzZWQgZm9yIEdyYXBoaWNzTGF5ZXIg
dmlzaWJsZVJlY3QgY29tcHV0YXRpb24uIFRoaXMKICAgICAgICAgd2FzIHdyb25nIGZvciBzdWJm
cmFtZXMsIHdoaWNoIHJlcXVpcmUgYSByZWN0IHdpdGggYW4gb3JpZ2luIG9mICgwLDApCiAgICAg
ICAgIGFuZCBzaXplIG9mIHRoZSBjb250ZW50c1NpemUoKS4KLSAgICAgICAgCisKICAgICAgICAg
SXQgd2FzIGFsc28gd3Jvbmcgd2hlbiB0aGUgc2Nyb2xsaW5nIGlzIG5vdCByZXByZXNlbnRlZCBp
biB0aGUgR3JhcGhpY3NMYXllcgogICAgICAgICB0cmVlLiBXaGVuIHNjcm9sbGluZyBpcyBkb25l
IGVsc2V3aGVyZSwgd2UgbmVlZCB0byB1c2UgdGhlIFNjcm9sbFZpZXcncwogICAgICAgICB2aXNp
YmxlQ29udGVudFJlY3QoKS4KQEAgLTEzMjA3LDcgKzEzMjQyLDcgQEAKICAgICAgICAgV2hlbiBk
b2luZyB0aHJlYWRlZCBzY3JvbGxpbmcsIHRoZSBzY3JvbGxpbmcgdGhyZWFkIHVwZGF0ZXMgdGhl
IHBvc2l0aW9ucyBvZiBDQUxheWVycywKICAgICAgICAgYnV0IGRvZXNuJ3QgdXBkYXRlIEdyYXBo
aWNzTGF5ZXJzLiBUaGlzIG1lYW5zIHRoYXQgY29kZSB0aGF0IHJlbGllcyBvbiBHcmFwaGljc0xh
eWVyIHBvc2l0aW9ucwogICAgICAgICB3b3JrcyBpbmNvcnJlY3RseS4KLSAgICAgICAgCisKICAg
ICAgICAgVGhyZWFkZWQgc2Nyb2xsaW5nIGlzIG5vdCB0ZXN0YWJsZWQgaW4gbGF5b3V0IHRlc3Rz
LgogCiAgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgpA
QCAtMTMzNzEsNyArMTM0MDYsNyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IFN0ZXBoZW4gV2hp
dGUuCiAKLSAgICAgICAgTm8gbmV3IHRlc3RzIC0tIGV4aXN0aW5nIGxheW91dHRlc3RzIGV4ZXJj
aXNlIHRoaXMsIGVzcC4gCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtLSBleGlzdGluZyBsYXlvdXR0
ZXN0cyBleGVyY2lzZSB0aGlzLCBlc3AuCiAgICAgICAgICAgcG5nLXBhcnRpYWwtbG9hZC1uby1h
bHBoYS5odG1sCiAgICAgICAgICAgd2VicC1wYXJ0aWFsLWxvYWQuaHRtbAogICAgICAgICBUaGVz
ZSB0d28gZmFpbCBpZiBza2lhIGlzIHRvbGQgdGhhdCB0aGVzZSBhcmUgb3BhcXVlLCB3aGljaCBp
dCBpcyB3L28gdGhpcyBDTC4KQEAgLTEzNTg3LDcgKzEzNjIyLDcgQEAKIAogICAgICAgICBDdXJy
ZW50IHRlc3RzIGFscmVhZHkgY292ZXIgdGhpcyBjb2RlLgogCi0gICAgICAgICogY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6IAorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwOgogICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uOjp2YWx1ZUZvckZpbHRlcik6IFRoZSBjaGVjayBmb3IgbWl4U2V0dGluZ3MuZW5h
YmxlZCBoYXMgYmVlbiByZXBsYWNlZAogICAgICAgICBieSBhbiBleHBsaWNpdCBjaGVjayBmb3Ig
UFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkUgcHJvZ3JhbSB0eXBlLgogICAgICAg
ICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKQEAgLTEzODUyLDE1ICsxMzg4NywxNSBAQAogMjAx
Mi0xMC0xNSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MzUwCi0gICAgICAgIFJFR1JFU1NJ
T04gKHIxMzEyMzgpOiBSZXBybyBjcmFzaCBpbiAKLSAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdT
dGF0ZVRyZWU6OnJlbW92ZU5vZGUoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlKikgCisgICAg
ICAgIFJFR1JFU1NJT04gKHIxMzEyMzgpOiBSZXBybyBjcmFzaCBpbgorICAgICAgIFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlVHJlZTo6cmVtb3ZlTm9kZShXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5v
ZGUqKQogICAgICAgICBvcGVuaW5nIHBkZiBwYWdlCiAgICAgICAgIC1hbmQgY29ycmVzcG9uZGlu
Zy0KICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNDk5ODM5PgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEZyYXNlci4KIAotICAgICAgICBXZSBoYXZlIHRvIG51bGwtY2hlY2sgbm9kZSBo
ZXJlLiBJdCB3b24ndCBiZSBmb3VuZCBpZiAgCisgICAgICAgIFdlIGhhdmUgdG8gbnVsbC1jaGVj
ayBub2RlIGhlcmUuIEl0IHdvbid0IGJlIGZvdW5kIGlmCiAgICAgICAgIGNsZWFyU3RhdGVUcmVl
KCkgd2FzIHJlY2VudGx5IGNhbGxlZC4KICAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JNYWMubW06CiAgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29y
ZGluYXRvck1hYzo6ZGV0YWNoRnJvbVN0YXRlVHJlZSk6CkBAIC0xNDA5NCwxMSArMTQxMjksMTEg
QEAKICAgICAgICAgYWN0dWFsIHRleHQgZGF0YSBmb3IgcGVyZm9ybWFuY2UuICBBZGRlZCBhIGNo
YXJhY3RlckF0KCkgaW5kZXhlZCBhY2Nlc3NvciB0byBSZW5kZXJUZXh0IHRvIGF2b2lkIHRoZQog
ICAgICAgICBzb21ld2hhdCBjb25mdXNpbmcgY29uc3RydWN0IGZvciBhIFJlbmRlclRleHQqIHJ0
LCBlLmcuICgqcmUpW25dIG9yIHJ0LT5jaGFyYWN0ZXJzKClbbl0uICBUaGlzIGlzCiAgICAgICAg
IG5vdyB3cml0dGVuIGFzIHJ0LT5jaGFyYWN0ZXJBdChuKS4KLSAgICAgICAgRW5hYmxlZCBwYXRj
aCBpbiB0aGUgSFRNTCBwYXJzZXIgdG8gY3JlYXRlIDggYml0IHRleHQgZGF0YS4gIE1vZGlmaWVk
IFRleHRSdW4gdG8gY3JlYXRlIAorICAgICAgICBFbmFibGVkIHBhdGNoIGluIHRoZSBIVE1MIHBh
cnNlciB0byBjcmVhdGUgOCBiaXQgdGV4dCBkYXRhLiAgTW9kaWZpZWQgVGV4dFJ1biB0byBjcmVh
dGUKICAgICAgICAgdGV4dCBydW5zIHVzaW5nIDggYml0IHN0cmluZyBkYXRhIHdoZXJlIHBvc3Np
YmxlLiAgQWRkZWQgc2V2ZXJhbCBmbGF2b3JzIG9mIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0
UnVuCiAgICAgICAgIHRvIGNyZWF0ZSBUZXh0UnVucyBmcm9tIFJlbmRlclRleHQgb2JqZWN0cyBp
bmNsdWRpbmcgd2l0aCBhbiBvZmZzZXQuICBBZGRlZCBhbiBMQ2hhciBmbGF2b3Igb2YgY29uc3Ry
dWN0VGV4dFJ1bigpCiAgICAgICAgIGFzIHdlbGwuICBFbGltaW5hdGVkIHRoZSBUZXh0UnVuRmxh
Z3MgYXJndW1lbnQgdG8gYWxsIGJ1dCB0aGUgU3RyaW5nIGZsYXZvciBhcyBhbGwgb3RoZXIgZmxh
dm9ycyB1c2VkIHRoZSBkZWZhdWx0Ci0gICAgICAgIHBhcmFtZXRlci4gIAorICAgICAgICBwYXJh
bWV0ZXIuCiAgICAgICAgIEVuY2FzZWQgdGhlIGNvZGUgdGhhdCBjcmVhdGVzIDggYml0IFRleHRS
dW4ncyBpbiAjaWYgVVNFKDhCSVRfVEVYVFJVTikuICBFbmFibGVkIFdURl9VU0VfOEJJVF9URVhU
UlVOCiAgICAgICAgIGZvciBQTEFURk9STShNQUMpLiAgT3RoZXIgcGxhdGZvcm0gY2FuIHVwZGF0
ZSB0aGlzIHNldHRpbmcgaW4gUGxhdGZvcm0uaCB3aGVuIHRoZWlyIHBsYXRmb3JtIHNwZWNpZmlj
IGNvZGUgaXMKICAgICAgICAgdXBkYXRlZCB0byBUZXh0UnVuJ3Mgd2l0aCA4IGJpdCBkYXRhLgpA
QCAtMTQ1NjUsMTMgKzE0NjAwLDEzIEBACiAKICAgICAgICAgR3JhcGhpY3NMYXllckNBOjpjb21w
dXRlVmlzaWJsZVJlY3QoKSB3YXMgaW5jb3JyZWN0IGZvciBsYXllciB0cmVlcyB3aXRoIHBlcnNw
ZWN0aXZlCiAgICAgICAgIGFuZCBwcmVzZXJ2ZS0zZCwgc28gZml4IHRoYXQsIGFuZCBhZGQgc29t
ZSB0ZXN0cy4KLSAgICAgICAgCisKICAgICAgICAgUGVyc3BlY3RpdmUgaXMgaW1wbGVtZW50ZWQg
dmlhIGNoaWxkcmVuVHJhbnNmb3JtKCk7IGlmIG91ciBwYXJlbnQgaGFzIG9uZSwKICAgICAgICAg
d2UgaGF2ZSB0byBsZWZ0LW11bHRpcGx5IHRoaXMgaW50byB0aGUgdHJhbnNmb3JtYXRpb24gbWF0
cml4LgotICAgICAgICAKKwogICAgICAgICBXZSBoYXZlIHRvIHRlc3QgYm90aCB0aGlzIGxheWVy
IGFuZCBpdHMgcGFyZW50IHdoZW4gZGVjaWRpbmcgd2hldGhlciB0byBhY2N1bXVsYXRlCiAgICAg
ICAgIG9yIGZsYXR0ZW4uCi0gICAgICAgIAorCiAgICAgICAgIFVzZSBzdGF0ZS5tYXBwZWRRdWFk
KCkgcmF0aGVyIHRoYW4gc3RhdGUubGFzdFBsYW5hclF1YWQoKSwgYmVjYXVzZSB0aGUgbGFzdCBw
bGFuYXIKICAgICAgICAgcXVhZCBtaWdodCBiZSBmb3Igc29tZSBkaXN0YW50IGFuY2VzdG9yLCBh
bmQgdGhlcmUgbWF5IGJlIGludGVybWVkaWF0ZSBwcmVzZXJ2ZS0zZAogICAgICAgICBsYXllcnMu
CkBAIC0xNDYzOCwxOSArMTQ2NzMsMTkgQEAKIDIwMTItMTAtMTIgIEJldGggRGFraW4gIDxiZGFr
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05OTIxMQotICAgICAgICBXaGVuIFNjcm9sbGluZ1N0YXRlTm9kZXMgYXJlIGRlc3Ry
b3llZCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCAKKyAgICAgICAgV2hlbiBTY3JvbGxpbmdTdGF0
ZU5vZGVzIGFyZSBkZXN0cm95ZWQsIHRoZXkgc2hvdWxkIGJlIHJlbW92ZWQKICAgICAgICAgU2Ny
b2xsaW5nQ29vcmRpbmF0b3IncyBIYXNoTWFwCiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KIAotICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgbWVtYmVyIHZhcmlhYmxlIHRv
IFNjcm9sbGluZ1N0YXRlVHJlZS4gSXQncyBhIAotICAgICAgICBWZWN0b3Igb2YgU2Nyb2xsaW5n
Tm9kZUlEcy4gSXQgd2lsbCBjb250YWluIHRoZSBJRHMgb2Ygbm9kZXMgdGhhdCAKLSAgICAgICAg
aGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgdHJlZSBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSB0
cmVlIHdhcyAKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IG1lbWJlciB2YXJpYWJsZSB0
byBTY3JvbGxpbmdTdGF0ZVRyZWUuIEl0J3MgYQorICAgICAgICBWZWN0b3Igb2YgU2Nyb2xsaW5n
Tm9kZUlEcy4gSXQgd2lsbCBjb250YWluIHRoZSBJRHMgb2Ygbm9kZXMgdGhhdAorICAgICAgICBo
YXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSB0cmVlIHNpbmNlIHRoZSBsYXN0IHRpbWUgdGhlIHRy
ZWUgd2FzCiAgICAgICAgIGNvbW1pdHRlZC4KICAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVRyZWUuY3BwOgogICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVl
OjpTY3JvbGxpbmdTdGF0ZVRyZWUpOgogCi0gICAgICAgIFdoZW4gd2UgZG8gY29tbWl0LCBjb3B5
IHRoZSBWZWN0b3Igb3ZlciBpbnRvIHRoZSBjbG9uZWQgdHJlZSwgYW5kIAorICAgICAgICBXaGVu
IHdlIGRvIGNvbW1pdCwgY29weSB0aGUgVmVjdG9yIG92ZXIgaW50byB0aGUgY2xvbmVkIHRyZWUs
IGFuZAogICAgICAgICB0aGVuIGNsZWFyIG91ciBvd24gVmVjdG9yLgogICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nU3RhdGVUcmVlOjpjb21taXQpOgogCkBAIC0xNDc1NSwxNSArMTQ3OTAsMTUg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCiAKLSAgICAgICAgVGhlcmUg
aXMgYSBIYXNoTWFwIGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjIHRoYXQgbWFwcyAKLSAgICAg
ICAgU2Nyb2xsaW5nTm9kZUlEcyB0byBTY3JvbGxpbmdTdGF0ZU5vZGVzLiBUaGUgbm9kZXMgdGhl
bXNlbHZlcyBzaG91bGQgCi0gICAgICAgIGtlZXAgdHJhY2sgb2YgdGhpcyBpZC4gVGhlbiB0aGUg
aWQgY2FuIGJlIHVzZWQgdG8gbWFrZSBzdXJlIAotICAgICAgICBTY3JvbGxpbmdTdGF0ZU5vZGVz
IHJlbW92ZSB0aGVtc2VsdmVzIGZyb20gdGhlIEhhc2hNYXAgd2hlbiB0aGV5IGFyZSAKLSAgICAg
ICAgZGVzdHJveWVkLCBhbmQgaXQgd2lsbCBhbHNvIGJlIHVzZWZ1bCBmb3IgYXNzb2NpYXRpbmcg
Ci0gICAgICAgIFNjcm9sbGluZ1N0YXRlTm9kZXMgd2l0aCBTY3JvbGxpbmdUcmVlTm9kZXMgb3Zl
ciBvbiB0aGUgc2Nyb2xsaW5nIAorICAgICAgICBUaGVyZSBpcyBhIEhhc2hNYXAgaW4gU2Nyb2xs
aW5nQ29vcmRpbmF0b3JNYWMgdGhhdCBtYXBzCisgICAgICAgIFNjcm9sbGluZ05vZGVJRHMgdG8g
U2Nyb2xsaW5nU3RhdGVOb2Rlcy4gVGhlIG5vZGVzIHRoZW1zZWx2ZXMgc2hvdWxkCisgICAgICAg
IGtlZXAgdHJhY2sgb2YgdGhpcyBpZC4gVGhlbiB0aGUgaWQgY2FuIGJlIHVzZWQgdG8gbWFrZSBz
dXJlCisgICAgICAgIFNjcm9sbGluZ1N0YXRlTm9kZXMgcmVtb3ZlIHRoZW1zZWx2ZXMgZnJvbSB0
aGUgSGFzaE1hcCB3aGVuIHRoZXkgYXJlCisgICAgICAgIGRlc3Ryb3llZCwgYW5kIGl0IHdpbGwg
YWxzbyBiZSB1c2VmdWwgZm9yIGFzc29jaWF0aW5nCisgICAgICAgIFNjcm9sbGluZ1N0YXRlTm9k
ZXMgd2l0aCBTY3JvbGxpbmdUcmVlTm9kZXMgb3ZlciBvbiB0aGUgc2Nyb2xsaW5nCiAgICAgICAg
IHRocmVhZC4KLSAgCi0gICAgICAgIFRoaXMgcGF0Y2ggb25seSBoYXMgdGhlIFNjcm9sbGluZ1N0
YXRlTm9kZXMgY2FjaGUgdGhlIGlkLiBJIHdpbGwgCisKKyAgICAgICAgVGhpcyBwYXRjaCBvbmx5
IGhhcyB0aGUgU2Nyb2xsaW5nU3RhdGVOb2RlcyBjYWNoZSB0aGUgaWQuIEkgd2lsbAogICAgICAg
ICBhY3R1YWxseSBtYWtlIHVzZSBvZiB0aGUgaWQgaW4gZm9sbG93LXVwIHBhdGNoZXMuCiAKICAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwOgpAQCAtMTQ3OTks
NyArMTQ4MzQsNyBAQAogICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKTogRmlyZSBhIG5lZWRr
ZXkgZXZlbnQgd2l0aCBhbiBpbml0RGF0YSBjb250YWluaW5nCiAgICAgICAgICAgICB0aGUga2V5
IFVSSS4KICAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlVUklLZXlJZEFuZENlcnRpZmljYXRl
RnJvbUluaXREYXRhKTogRXh0cmFjdCB0aGUga2V5VVJJLCBrZXlJRCwgYW5kIHRoZSBhcHAgY2Vy
dGlmaWNhdGUgZnJvbSB0aGUgaW5pdERhdGEuCi0gICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QpOiBHZW5lcmF0ZSBh
IHN0cmVhbWluZyBrZXkgcmVxdWVzdCBmcm9tIEFWRm91bmRhdGlvbiBhbmQgCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJl
cXVlc3QpOiBHZW5lcmF0ZSBhIHN0cmVhbWluZyBrZXkgcmVxdWVzdCBmcm9tIEFWRm91bmRhdGlv
biBhbmQKICAgICAgICAgICAgIGZpcmUgYSBrZXltZXNzYWdlIGV2ZW50LgogICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YWRkS2V5KTogUGFzcyB0
byBBVkZvdW5kYXRpb24gdGhyb3VnaCB0aGUgQVZBc3NldFJlc291cmNlTG9hZGVyLgogICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsS2V5
UmVxdWVzdCk6IFJlbGVhc2UgdGhlIGxvYWRlciBkZWxlZ2F0ZS4KQEAgLTE0ODk0LDcgKzE0OTI5
LDcgQEAKICAgICAgICAgRmxvb3IgYmFzZWxpbmVQb3NpdGlvbiBmb3IgcmVwbGFjZWQgZWxlbWVu
dHMgdG8gbWF0Y2ggbG9naWMgaW4KICAgICAgICAgUm9vdElubGluZUJveDo6YXNjZW50QW5kRGVz
Y2VudEZvckJveCB3aGVyZSB0aGUgYXNjZW50IGlzCiAgICAgICAgIGNvbXB1dGVkIGZyb20gdGhl
IGZsb29yZWQgYmFzZWxpbmVQb3NpdGlvbi4KLSAgICAgICAgCisKICAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94LmNwcDoKICAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBv
c2l0aW9uZWRMb2dpY2FsV2lkdGhSZXBsYWNlZCk6CiAgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFJlcGxhY2VkKToKQEAgLTE2NzUwLDE1
ICsxNjc4NSwxNSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KIAot
ICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIGFsbCBvZiB0aGUgdGhyZWFkZWQgc2Nyb2xsaW5nIGNv
ZGUgaW4gCi0gICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIGludG8gYSBuZXcgY2xhc3MgY2Fs
bGVkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjIAotICAgICAgICB3aGljaCBpbmhlcml0cyBmcm9t
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yLiAKKyAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyBhbGwgb2Yg
dGhlIHRocmVhZGVkIHNjcm9sbGluZyBjb2RlIGluCisgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yIGludG8gYSBuZXcgY2xhc3MgY2FsbGVkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjCisgICAg
ICAgIHdoaWNoIGluaGVyaXRzIGZyb20gU2Nyb2xsaW5nQ29vcmRpbmF0b3IuCisKKyAgICAgICAg
SXQgYWxzbyBhZGRzIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0gdG8gZG8gQ2hyb21pdW0t
c3BlY2lmaWMgd29yay4KKyAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IgaXRzZWxmIGRvZXMg
d29yayB0aGF0IGlzIGNyb3NzLXBsYXRmb3JtLgogCi0gICAgICAgIEl0IGFsc28gYWRkcyBTY3Jv
bGxpbmdDb29yZGluYXRvckNocm9taXVtIHRvIGRvIENocm9taXVtLXNwZWNpZmljIHdvcmsuIAot
ICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRvciBpdHNlbGYgZG9lcyB3b3JrIHRoYXQgaXMgY3Jv
c3MtcGxhdGZvcm0uIAotICAgICAgICAKLSAgICAgICAgRmluYWxseSwgdGhpcyBwYXRjaCBhbHNv
IGVsaW1pbmF0ZXMgU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLiAKLSAgICAgICAgU2Nyb2xsaW5n
Q29vcmRpbmF0b3IgaXMgbm93IHN1ZmZpY2llbnQgZm9yIHBsYXRmb3JtcyB0aGF0IHJlbGllZCBv
biAKKyAgICAgICAgRmluYWxseSwgdGhpcyBwYXRjaCBhbHNvIGVsaW1pbmF0ZXMgU2Nyb2xsaW5n
Q29vcmRpbmF0b3JOb25lLgorICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRvciBpcyBub3cgc3Vm
ZmljaWVudCBmb3IgcGxhdGZvcm1zIHRoYXQgcmVsaWVkIG9uCiAgICAgICAgIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yTm9uZSB0byBidWlsZC4KIAogICAgICAgICAqIENNYWtlTGlzdHMudHh0OgpAQCAt
MTc1NzIsNyArMTc2MDcsNyBAQAogICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4K
IAogICAgICAgICBJbmNvcnJlY3QgdGVzdCAoYnl0ZXNQZXJMaW5lID09IHRhcmdldFJlY3Qud2lk
dGgoKSAvIDQpIG5ldmVyCi0gICAgICAgIGV2YWx1YXRlcyB0byB0cnVlLiBDaGFuZ2UgaXQgdG8g
Y29ycmVjdCB0ZXN0IAorICAgICAgICBldmFsdWF0ZXMgdG8gdHJ1ZS4gQ2hhbmdlIGl0IHRvIGNv
cnJlY3QgdGVzdAogICAgICAgICAoYnl0ZXNQZXJMaW5lID09IHRhcmdldFJlY3Qud2lkdGgoKSAq
IDQpCiAKICAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gZnVuY3Rpb25hbCBjaGFuZ2Uu
CkBAIC0xODQ0NywyMiArMTg0ODIsMjIgQEAKICAgICAgICAgR3JhcGhpY3NMYXllckNBIG1heSBo
YXZlIG5vdCBmbHVzaGVkIGxheWVycyB5ZXQsIHNvIGxheWVyIHRyZWUKICAgICAgICAgcHJvcGVy
dGllcyB0aGF0IGFyZSBhZmZlY3RlZCBieSBmbHVzaGluZyAodGlsZWQgbGF5ZXIsIHZpc2libGUK
ICAgICAgICAgcmVjdHMpIGFwcGVhcmVkIGZsYWtleSBpbiB0ZXN0cy4KLSAgICAgICAgCi0gICAg
ICAgIEZpeCBieSBmb3JjaW5nIGEgZmx1c2ggYmVmb3JlIGR1bXBpbmcgdGhlIGxheWVyIHRyZWUu
ICAgICAgICAKLSAgICAgICAgCisKKyAgICAgICAgRml4IGJ5IGZvcmNpbmcgYSBmbHVzaCBiZWZv
cmUgZHVtcGluZyB0aGUgbGF5ZXIgdHJlZS4KKwogICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwOgogICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpsYXllclRyZWVBc1RleHQpOgogCiAyMDEyLTEwLTEwICBCZXRoIERha2luICA8YmRha2lu
QGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTg5ODQKLSAgICAgICAgUkVHUkVTU0lPTjogQ3Jhc2ggaGFwcGVucyBhZnRlciB3ZSBh
ZGQgbm9uLXRvcC1sZXZlbCBmcmFtZSB0byB0aGUgCisgICAgICAgIFJFR1JFU1NJT046IENyYXNo
IGhhcHBlbnMgYWZ0ZXIgd2UgYWRkIG5vbi10b3AtbGV2ZWwgZnJhbWUgdG8gdGhlCiAgICAgICAg
IFNjcm9sbGluZ1N0YXRlVHJlZQogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
IAotICAgICAgICBpc1Jvb3RMYXllcigpIGNhbiByZXR1cm4gdHJ1ZSBmb3IgbGF5ZXJzIHRoYXQg
ZG8gbm90IGNvcnJlc3BvbmQgdG8gCi0gICAgICAgIHRoZSBtYWluIGZyYW1lLiBCdXQgd2Ugb25s
eSB3YW50IHRoZSBvbmVzIHRoYXQgRE8gY29ycmVzcG9uZCB0byB0aGUgCisgICAgICAgIGlzUm9v
dExheWVyKCkgY2FuIHJldHVybiB0cnVlIGZvciBsYXllcnMgdGhhdCBkbyBub3QgY29ycmVzcG9u
ZCB0bworICAgICAgICB0aGUgbWFpbiBmcmFtZS4gQnV0IHdlIG9ubHkgd2FudCB0aGUgb25lcyB0
aGF0IERPIGNvcnJlc3BvbmQgdG8gdGhlCiAgICAgICAgIG1haW4gZnJhbWUhCiAgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CiAgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcpOgpAQCAtMTg0OTEsNyArMTg1MjYs
NyBAQAogCiAyMDEyLTEwLTEwICBFbGxpb3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3Jn
PgogCi0gICAgICAgIE1vdmUgOmJlZm9yZSBhbmQgOmFmdGVyIGludG8gdGhlIERPTSAgICAgICAg
CisgICAgICAgIE1vdmUgOmJlZm9yZSBhbmQgOmFmdGVyIGludG8gdGhlIERPTQogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUxMTcKIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KQEAgLTE4NjMyLDcgKzE4NjY3LDcgQEAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCiAKICAgICAgICAgV2UndmUgcmVjZW50bHkgYWRk
ZWQgdGhlIGNhcGFiaWxpdHkgdG8gc3dpdGNoIHNpYmxpbmcgdHJhdmVyc2FsIHN0cmF0ZWd5IHRv
IFNlbGVjdG9yQ2hlY2tlciwgYXQgc29tZSByZWFkYWJpbGl0eS9jbGFyaXR5IGV4cGVuc2UuCi0g
ICAgICAgIFRoaXMgcGF0Y2ggdHJpZXMgdG8gbWluaW1pemUgdGhlIHN1cmZhY2Ugb2YgdGhpcyBl
eHBlbnNlIHRvIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvci4gCisgICAgICAgIFRo
aXMgcGF0Y2ggdHJpZXMgdG8gbWluaW1pemUgdGhlIHN1cmZhY2Ugb2YgdGhpcyBleHBlbnNlIHRv
IFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvci4KIAogICAgICAgICBObyBuZXcgdGVz
dHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KIApAQCAtMTg4NjAsMTcgKzE4ODk1LDE3IEBACiAy
MDEyLTEwLTEwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5NjgKLSAgICAgICAgUkVHUkVT
U0lPTjogVW5hYmxlIHRvIHNjcm9sbCB3aXRoIHRyYWNrcGFkIG9uIHNvbWUgd2Vic2l0ZXMgYWZ0
ZXIgCisgICAgICAgIFJFR1JFU1NJT046IFVuYWJsZSB0byBzY3JvbGwgd2l0aCB0cmFja3BhZCBv
biBzb21lIHdlYnNpdGVzIGFmdGVyCiAgICAgICAgIHIxMzA3ODMKIAogICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIuCiAKLSAgICAgICAgVGhpcyBidWcgc2VlbXMgdG8gcmVwcm9kdWNl
IG1vc3RseSBvbiB3ZWIgcGFnZXMgdGhhdCByZXF1aXJlIGxvZ2luLiAKLSAgICAgICAgVGhlIHJl
LXJvdXRpbmcgY2F1c2VzIGV4dHJhIGNodXJuIG9mIHRoZSBSZW5kZXJMYXllckJhY2tpbmcsIGFu
ZCB3ZSAKLSAgICAgICAgZW5kIHVwIGRlc3Ryb3lpbmcgYW5kIHJlLWNyZWF0aW5nIHRoZSBiYWNr
aW5nIGFuZCB0aGVyZWZvcmUgdGhlIAotICAgICAgICBTY3JvbGxpbmdTdGF0ZU5vZGVzLCBhbmQg
d2hlbiB0aGUgdGltaW5nIGlzIGp1c3Qgd3Jvbmcgd2UgZ2V0IGludG8gYSAKLSAgICAgICAgc3Rh
dGUgd2hlcmUgdGhlIFNjcm9sbGluZ1RyZWUgaGFzIGEgc2V0IG9mIGluY29ycmVjdCBpbmZvcm1h
dGlvbi4gCi0gICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGJ1ZyBieSBtYWtpbmcgc3VyZSB0
aGUgU2Nyb2xsaW5nU3RhdGVOb2RlcyBrZWVwIAorICAgICAgICBUaGlzIGJ1ZyBzZWVtcyB0byBy
ZXByb2R1Y2UgbW9zdGx5IG9uIHdlYiBwYWdlcyB0aGF0IHJlcXVpcmUgbG9naW4uCisgICAgICAg
IFRoZSByZS1yb3V0aW5nIGNhdXNlcyBleHRyYSBjaHVybiBvZiB0aGUgUmVuZGVyTGF5ZXJCYWNr
aW5nLCBhbmQgd2UKKyAgICAgICAgZW5kIHVwIGRlc3Ryb3lpbmcgYW5kIHJlLWNyZWF0aW5nIHRo
ZSBiYWNraW5nIGFuZCB0aGVyZWZvcmUgdGhlCisgICAgICAgIFNjcm9sbGluZ1N0YXRlTm9kZXMs
IGFuZCB3aGVuIHRoZSB0aW1pbmcgaXMganVzdCB3cm9uZyB3ZSBnZXQgaW50byBhCisgICAgICAg
IHN0YXRlIHdoZXJlIHRoZSBTY3JvbGxpbmdUcmVlIGhhcyBhIHNldCBvZiBpbmNvcnJlY3QgaW5m
b3JtYXRpb24uCisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGJ1ZyBieSBtYWtpbmcgc3Vy
ZSB0aGUgU2Nyb2xsaW5nU3RhdGVOb2RlcyBrZWVwCiAgICAgICAgIHRoZSBTY3JvbGxpbmdUcmVl
IGluIHN5bmNoIHdpdGggdGhlaXIgcmUtc2V0IGRhdGEuCiAKICAgICAgICAgVGVsbCB0aGUgU2Ny
b2xsaW5nU3RhdGVUcmVlIHRoYXQgdGhlIHJvb3QgbGF5ZXIgaGFzIGNoYW5nZWQuCkBAIC0xODg4
NSw3ICsxODkyMCw3IEBACiAgICAgICAgIChXZWJDb3JlKToKICAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaDoKIAotICAgICAgICBXaGVuIHRoZSBy
b290IGxheWVyIGNoYW5nZXMsIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIFNjcm9sbGluZ1RyZWUg
CisgICAgICAgIFdoZW4gdGhlIHJvb3QgbGF5ZXIgY2hhbmdlcywgbWFrZSBzdXJlIHdlIHVwZGF0
ZSB0aGUgU2Nyb2xsaW5nVHJlZQogICAgICAgICBhcHByb3ByaWF0ZWx5IGJ5IGluZGljYXRpbmcg
dGhhdCBldmVyeSBwcm9wZXJ0eSBjb3VsZCBoYXZlIGNoYW5nZWQuCiAgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcDoKICAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1N0YXRlVHJlZTo6cm9vdExheWVyRGlkQ2hhbmdlKToKQEAgLTE4OTYzLDcgKzE4OTk4LDcg
QEAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIb3J0b24uCiAKICAgICAgICAgV2hlbiBh
IHZhcmlhYmxlIG5hbWUgaXMgdG9vIGxvbmcgd2UgdHJhbnNsYXRlIHRvIGEgc2hvcnRlciB2ZXJz
aW9uIGFuZCBrZWVwIGEgbWFwcGluZyBiZXR3ZWVuIHRoZSBsb25nIGFuZCBzaG9ydCBuYW1lcy4K
LSAgICAgICAgSG93ZXZlciwgd2hlbiBxdWVyeWluZyBmb3IgYSB2YXJpYWJsZSBjbGllbnQgc2lk
ZSB1c2luZyBnZXRBY3RpdmVBdHRyaWIgb3IgZ2V0QWN0aXZlVW5pZm9ybSwgd2UgYWNjaWRlbnRh
bGx5IHJldHVybiB0aGUgCisgICAgICAgIEhvd2V2ZXIsIHdoZW4gcXVlcnlpbmcgZm9yIGEgdmFy
aWFibGUgY2xpZW50IHNpZGUgdXNpbmcgZ2V0QWN0aXZlQXR0cmliIG9yIGdldEFjdGl2ZVVuaWZv
cm0sIHdlIGFjY2lkZW50YWxseSByZXR1cm4gdGhlCiAgICAgICAgIHRyYW5zbGF0ZWQgbmFtZXMu
IFRoaXMgZml4IG1ha2VzIHRoZXNlIG1ldGhvZHMgcmV0dXJuIHRoZSBvcmlnaW5hbCB2YXJpYWJs
ZSBuYW1lcy4KIAogICAgICAgICBUZXN0ZWQgdXNpbmcgS2hyb25vcyBXZWJHTCBjb25mb3JtYW5j
ZSBzdWl0ZToKQEAgLTE4OTc2LDcgKzE5MDExLDcgQEAKICAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIpOgogICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0pOgogICAgICAgICAoV2ViQ29yZSk6Ci0gICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6b3JpZ2luYWxTeW1ib2xOYW1lKTogVGhp
cyBtZXRob2QgcmV0dXJucyB0aGUgb3JpZ2luYWwgdmFyaWFibGUgbmFtZSBnaXZlbiAKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpvcmlnaW5hbFN5bWJvbE5hbWUpOiBUaGlz
IG1ldGhvZCByZXR1cm5zIHRoZSBvcmlnaW5hbCB2YXJpYWJsZSBuYW1lIGdpdmVuCiAgICAgICAg
IHRoZSBtYXBwZWQgbmFtZS4KIAogMjAxMi0xMC0xMCBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KQEAgLTE5Mjc2LDcgKzE5MzExLDcgQEAKIAogICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwOgogICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNr
OjpkYXRhKToKLSAgICAgICAgCisKICAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5jcHA6CiAgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpkYXRh
KToKIApAQCAtMTk0NTcsNyArMTk0OTIsNyBAQAogICAgICAgICBUbyByZXBsYWNlIENBVGlsZWRM
YXllciB3aXRoIFRpbGVDYWNoZXMsIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBjb21wdXRlIHRoZSB2
aXNpYmxlIHBhcnQgb2YgYSBHcmFwaGljc0xheWVyLAogICAgICAgICBpbiBvcmRlciB0byBsaW1p
dCB0aGUgZXh0ZW50IG9mIFRpbGVDYWNoZSB0aWxlcy4gUmV1c2UgdGhlIGV4aXN0aW5nIGNvZGUg
aW4gR3JhcGhpY3NMYXllckNBIGZvciB0aGlzLAogICAgICAgICBidXQgc3RvcmUgdGhlIGNvbXB1
dGVkIHJlY3QgaW4gbV92aXNpYmxlUmVjdC4KLSAgICAgICAgCisKICAgICAgICAgQWRkIGEgZmxh
ZyB0byBsYXllclRyZWVBc1RleHQoKSBzbyB0aGF0IHRlc3RzIGNhbiBvcHRpb25hbGx5IGluY2x1
ZGUgdGhpcyB2aXNpYmxlIHJlY3QgaW4KICAgICAgICAgbGF5ZXIgdHJlZSBkdW1wcy4gVGhpcyBv
dXRwdXQgd2lsbCBiZSBwbGF0Zm9ybS1zcGVjaWZpYywgc28gd2UgZG9uJ3Qgd2FudCB0byBkbyBp
dCB1bmNvbmRpdGlvbmFsbHkuCiAKQEAgLTIwNTQyLDcgKzIwNTc3LDcgQEAKIAogICAgICAgICBS
ZXZpZXdlZCBieSBUb255IENoYW5nLgogCi0gICAgICAgIEFkZGluZyBiYWNrIHRoZSAhIHJlbW92
ZWQgYnkgbWlzdGFrZSBiZWZvcmUgc3VibWl0dGluZyByMTMwNzc5LiAKKyAgICAgICAgQWRkaW5n
IGJhY2sgdGhlICEgcmVtb3ZlZCBieSBtaXN0YWtlIGJlZm9yZSBzdWJtaXR0aW5nIHIxMzA3Nzku
CiAKICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwOgogICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6Z2x5cGhEYXRhQW5kUGFnZUZvckNoYXJhY3Rlcik6CkBAIC0yMDU2
OSw5ICsyMDYwNCw5IEBACiAKICAgICAgICAgTm9ybWFsIGFudGktYWxpYXNlZCB0ZXh0IG1hdGNo
ZXMgc3VicGl4ZWwgYW50aS1hbGlhc2VkIHRleHQuCiAgICAgICAgIEhvd2V2ZXIsIHRleHQgbWFy
a2VkIHdpdGggd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkIHNob3VsZCBiZSBkcmF3
biB3aXRob3V0IGhpbnRpbmcgdG8gbWF0Y2ggU2FmYXJpLgotICAgICAgICBTZWUgY3JidWcuY29t
LzE1MjMwNCAuIAorICAgICAgICBTZWUgY3JidWcuY29tLzE1MjMwNCAuCiAKLSAgICAgICAgVGVz
dCBpcyBmYXN0L2Nzcy9mb250LXNtb290aGluZy5odG1sLCBidXQgRFJUIHJ1bnMgd2l0aCBmb250
IHNtb290aGluZyBkaXNhYmxlZCwgc28gbm8gY2hhbmdlIHZpc2libGUuIAorICAgICAgICBUZXN0
IGlzIGZhc3QvY3NzL2ZvbnQtc21vb3RoaW5nLmh0bWwsIGJ1dCBEUlQgcnVucyB3aXRoIGZvbnQg
c21vb3RoaW5nIGRpc2FibGVkLCBzbyBubyBjaGFuZ2UgdmlzaWJsZS4KIAogICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udFNraWEuY3BwOgogICAgICAgICAoV2ViQ29yZTo6c2V0
dXBQYWludCk6CkBAIC0yMDY2MywyOSArMjA2OTgsMjkgQEAKIDIwMTItMTAtMDkgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05ODQ1NwotICAgICAgICBTY3JvbGxpbmdTdGF0ZU5vZGVzIHNob3Vs
ZCBiZSByZWZlcmVuY2VkIHZpYSBJRHMgb24gCisgICAgICAgIFNjcm9sbGluZ1N0YXRlTm9kZXMg
c2hvdWxkIGJlIHJlZmVyZW5jZWQgdmlhIElEcyBvbgogICAgICAgICBSZW5kZXJMYXllckJhY2tp
bmcKIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCiAKLSAgICAgICAgVGhpcyBw
YXRjaCBhc3NvY2lhdGVzIGFsbCBTY3JvbGxpbmdTdGF0ZU5vZGVzIHdpdGggYSAKLSAgICAgICAg
UmVuZGVyTGF5ZXJCYWNraW5nIHZpYSBhIEhhc2hNYXAgZnJvbSBSZW5kZXJMYXllckJhY2tpbmdz
IHRvIAotICAgICAgICBTY3JvbGxpbmdTdGF0ZU5vZGVzIG9uIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
LiBQcmlvciB0byB0aGlzIHBhdGNoLCB0aGUgCi0gICAgICAgIHJvb3QgU2Nyb2xsaW5nU3RhdGVO
b2RlIHdhcyBjcmVhdGVkIGltbWVkaWF0ZWx5IHVwb24gY3JlYXRpb24gb2YgdGhlIAotICAgICAg
ICBTY3JvbGxpbmdDb29yZGluYXRvciwgYW5kIGl0IHdhcyBjb25zdGFudGx5IHJlLXVzZWQgZm9y
IGV2ZXJ5IG1haW4gCi0gICAgICAgIEZyYW1lVmlldy4gVGhpcyBkb2Vzbid0IHdvcmsgaW4gdGhl
IG5ldyBtb2RlbCBzaW5jZSB0aGF0IGRvZXNuJ3QgCi0gICAgICAgIGFsbG93IHRoYXQgU2Nyb2xs
aW5nU3RhdGVOb2RlIHRvIGhhdmUgYSBkZWZpbml0ZSBhc3NvY2lhdGlvbiB3aXRoIGEgCi0gICAg
ICAgIFJlbmRlckxheWVyQmFja2luZy4gU28gdGhpcyBwYXRjaCBkb2VzIGFsc28gaW50cm9kdWNl
IHNvbWUgbGlmZXRpbWUgCisgICAgICAgIFRoaXMgcGF0Y2ggYXNzb2NpYXRlcyBhbGwgU2Nyb2xs
aW5nU3RhdGVOb2RlcyB3aXRoIGEKKyAgICAgICAgUmVuZGVyTGF5ZXJCYWNraW5nIHZpYSBhIEhh
c2hNYXAgZnJvbSBSZW5kZXJMYXllckJhY2tpbmdzIHRvCisgICAgICAgIFNjcm9sbGluZ1N0YXRl
Tm9kZXMgb24gU2Nyb2xsaW5nQ29vcmRpbmF0b3IuIFByaW9yIHRvIHRoaXMgcGF0Y2gsIHRoZQor
ICAgICAgICByb290IFNjcm9sbGluZ1N0YXRlTm9kZSB3YXMgY3JlYXRlZCBpbW1lZGlhdGVseSB1
cG9uIGNyZWF0aW9uIG9mIHRoZQorICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRvciwgYW5kIGl0
IHdhcyBjb25zdGFudGx5IHJlLXVzZWQgZm9yIGV2ZXJ5IG1haW4KKyAgICAgICAgRnJhbWVWaWV3
LiBUaGlzIGRvZXNuJ3Qgd29yayBpbiB0aGUgbmV3IG1vZGVsIHNpbmNlIHRoYXQgZG9lc24ndAor
ICAgICAgICBhbGxvdyB0aGF0IFNjcm9sbGluZ1N0YXRlTm9kZSB0byBoYXZlIGEgZGVmaW5pdGUg
YXNzb2NpYXRpb24gd2l0aCBhCisgICAgICAgIFJlbmRlckxheWVyQmFja2luZy4gU28gdGhpcyBw
YXRjaCBkb2VzIGFsc28gaW50cm9kdWNlIHNvbWUgbGlmZXRpbWUKICAgICAgICAgZGlmZmVyZW5j
ZXMgd2l0aCB0aGUgU2Nyb2xsaW5nU3RhdGVOb2Rlcy4KIAotICAgICAgICBJZiBhIHBhZ2UgaXMg
Z29pbmcgaW50byB0aGUgcGFnZSBjYWNoZSwgd2Ugc2hvdWxkIGNsZWFyIHRoZSBzdGF0ZSAKLSAg
ICAgICAgdHJlZS4gV2hlbiB0aGUgcGFnZSBpcyBpbiB0aGUgY2FjaGUsIHdlIHdvbid0IGhhdmUg
YWNjZXNzIHRvIHRoZSAKLSAgICAgICAgUmVuZGVyTGF5ZXJCYWNraW5nLCBhbmQgd2UgZG9uJ3Qg
d2FudCB0byBiZSBkb2luZyBhbnl0aGluZyB3aXRoIHRoZSAKKyAgICAgICAgSWYgYSBwYWdlIGlz
IGdvaW5nIGludG8gdGhlIHBhZ2UgY2FjaGUsIHdlIHNob3VsZCBjbGVhciB0aGUgc3RhdGUKKyAg
ICAgICAgdHJlZS4gV2hlbiB0aGUgcGFnZSBpcyBpbiB0aGUgY2FjaGUsIHdlIHdvbid0IGhhdmUg
YWNjZXNzIHRvIHRoZQorICAgICAgICBSZW5kZXJMYXllckJhY2tpbmcsIGFuZCB3ZSBkb24ndCB3
YW50IHRvIGJlIGRvaW5nIGFueXRoaW5nIHdpdGggdGhlCiAgICAgICAgIFNjcm9sbGluZ1N0YXRl
Tm9kZXMgYW55d2F5LgogICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CiAgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c2V0SW5QYWdlQ2FjaGUpOgogCi0gICAgICAgIFdoZW4gYSBwYWdlIGlz
IHJlc3RvcmVkIGZyb20gdGhlIHBhZ2UgY2FjaGUsIGNhbGwgCisgICAgICAgIFdoZW4gYSBwYWdl
IGlzIHJlc3RvcmVkIGZyb20gdGhlIHBhZ2UgY2FjaGUsIGNhbGwKICAgICAgICAgZnJhbWVWaWV3
Um9vdExheWVyRGlkQ2hhbmdlKCkgdG8gcmUtY3JlYXRlIHRoZSBzdGF0ZSB0cmVlLgogICAgICAg
ICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CiAgICAgICAgIChXZWJDb3JlOjpIaXN0
b3J5Q29udHJvbGxlcjo6cmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKToKQEAgLTIw
Njk3LDEzICsyMDczMiwxMyBAQAogICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CiAgICAgICAg
IChGcmFtZVZpZXcpOgogCi0gICAgICAgIFRoZXJlIGlzIGEgbG90IG9mIHVuZm9ydHVuYXRlIGZp
ZGRsaW5nIHdpdGggdGhlIHRlcnJpYmxlIAorICAgICAgICBUaGVyZSBpcyBhIGxvdCBvZiB1bmZv
cnR1bmF0ZSBmaWRkbGluZyB3aXRoIHRoZSB0ZXJyaWJsZQogICAgICAgICBpZi1kZWZzIGluIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yLiBJIGFkZGVkIGEgRklYTUUgdG8gdGhlIGhlYWRlcgogICAgICAg
ICBub3RpbmcgaG93IHdlIGNhbiBhdm9pZCB0aGlzIGluIHRoZSBmdXR1cmUuCiAgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgogCi0gICAgICAgIEFsbCBv
ZiB0aGlzIGNvZGUgdXNlZCB0byByZWZlciB0byB0aGUgcm9vdFN0YXRlTm9kZSBkaXJlY3RseS4g
Ci0gICAgICAgIEluc3RlYWQsIG5vdyBpdCBsb29rcyB1cCB0aGUgcHJvcGVyIFNjcm9sbGluZ1N0
YXRlTm9kZSBmb3IgdGhlIGdpdmVuIAorICAgICAgICBBbGwgb2YgdGhpcyBjb2RlIHVzZWQgdG8g
cmVmZXIgdG8gdGhlIHJvb3RTdGF0ZU5vZGUgZGlyZWN0bHkuCisgICAgICAgIEluc3RlYWQsIG5v
dyBpdCBsb29rcyB1cCB0aGUgcHJvcGVyIFNjcm9sbGluZ1N0YXRlTm9kZSBmb3IgdGhlIGdpdmVu
CiAgICAgICAgIEZyYW1lVmlldyBpbiB0aGUgSGFzaE1hcC4KICAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKToKICAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdXaGVlbEV2ZW50SGFuZGxlckNv
dW50Q2hhbmdlZCk6CkBAIC0yMDcxNiwxNSArMjA3NTEsMTUgQEAKICAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxQYXJhbWV0ZXJzRm9yTm9kZSk6CiAgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0V2hlZWxFdmVudEhhbmRsZXJD
b3VudEZvck5vZGUpOgogCi0gICAgICAgIFJldHVybnMgdGhlIGV4aXN0aW5nIFNjcm9sbGluZ1N0
YXRlTm9kZSBmb3IgYSBnaXZlbiBGcmFtZVZpZXcgYnkgCisgICAgICAgIFJldHVybnMgdGhlIGV4
aXN0aW5nIFNjcm9sbGluZ1N0YXRlTm9kZSBmb3IgYSBnaXZlbiBGcmFtZVZpZXcgYnkKICAgICAg
ICAgbG9va2luZyBpdCB1cCBpbiB0aGUgSGFzaE1hcC4KICAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzdGF0ZU5vZGVGb3JGcmFtZVZpZXcpOgogCi0gICAgICAgIFRoaXMg
aXMgY2FsbGVkIHdoZW4gYSBSZW5kZXJMYXllckJhY2tpbmcgaXMgZGVzdHJveWVkLiBBdCB0aGF0
IHRpbWUsIAorICAgICAgICBUaGlzIGlzIGNhbGxlZCB3aGVuIGEgUmVuZGVyTGF5ZXJCYWNraW5n
IGlzIGRlc3Ryb3llZC4gQXQgdGhhdCB0aW1lLAogICAgICAgICBpdHMgYXNzb2NpYXRlZCBTY3Jv
bGxpbmdTdGF0ZU5vZGUgaXMgZGVzdHJveWVkLgogICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OmRldGFjaEZyb21TdGF0ZVRyZWUpOgogCi0gICAgICAgIGNsZWFyU3RhdGVU
cmVlKCkgY2xlYXJzIHRoZSBIYXNoTWFwIGFuZCBkZXN0cm95cyBhbGwgb2YgdGhlIG5vZGVzIGlu
IAorICAgICAgICBjbGVhclN0YXRlVHJlZSgpIGNsZWFycyB0aGUgSGFzaE1hcCBhbmQgZGVzdHJv
eXMgYWxsIG9mIHRoZSBub2RlcyBpbgogICAgICAgICB0aGUgY3VycmVudCBzdGF0ZSB0cmVlLgog
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNsZWFyU3RhdGVUcmVlKToK
IApAQCAtMjA3NDUsNyArMjA3ODAsNyBAQAogICAgICAgICAoV2ViQ29yZTo6c2V0U2Nyb2xsUGFy
YW1ldGVycyk6CiAgICAgICAgIChXZWJDb3JlOjpzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50KToK
IAotICAgICAgICBOZXcgcmVtb3ZlIGZ1bmN0aW9ucyBhcmUgdXNlZCB3aGVuIHRoZSBzYXRlIHRy
ZWUgaXMgY2xlYXJlZCBhbmQgd2hlbiAKKyAgICAgICAgTmV3IHJlbW92ZSBmdW5jdGlvbnMgYXJl
IHVzZWQgd2hlbiB0aGUgc2F0ZSB0cmVlIGlzIGNsZWFyZWQgYW5kIHdoZW4KICAgICAgICAgYSBS
ZW5kZXJMYXllckJhY2tpbmcgaXMgZGVzdHJveWVkLgogICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlTm9kZS5jcHA6CiAgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0
ZU5vZGU6OnJlbW92ZUNoaWxkKToKQEAgLTIwNzYwLDggKzIwNzk1LDggQEAKICAgICAgICAgKFdl
YkNvcmU6OnRvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKToKICAgICAgICAgKFdlYkNvcmUp
OgogCi0gICAgICAgIE5vIGxvbmdlciBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIHJvb3Qgbm9kZSB1
cG9uIGNyZWF0aW9uIG9mIHRoZSAKLSAgICAgICAgU2Nyb2xsaW5nU3RhdGVUcmVlLiBXZSBub3cg
d2FudCB0byB3YWl0IHRvIGNyZWF0ZSB0aGUgcm9vdCBub2RlIHVudGlsIAorICAgICAgICBObyBs
b25nZXIgYXV0b21hdGljYWxseSBjcmVhdGUgYSByb290IG5vZGUgdXBvbiBjcmVhdGlvbiBvZiB0
aGUKKyAgICAgICAgU2Nyb2xsaW5nU3RhdGVUcmVlLiBXZSBub3cgd2FudCB0byB3YWl0IHRvIGNy
ZWF0ZSB0aGUgcm9vdCBub2RlIHVudGlsCiAgICAgICAgIHdlIGhhdmUgYSBSZW5kZXJMYXllckJh
Y2tpbmcgdG8gYXNzb2NpYXRlIGl0IHdpdGguCiAgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVUcmVlLmNwcDoKICAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlVHJl
ZTo6U2Nyb2xsaW5nU3RhdGVUcmVlKToKQEAgLTIwNzcxLDkgKzIwODA2LDkgQEAKICAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlVHJlZTo6c2V0Um9vdFN0YXRlTm9kZSk6CiAgICAgICAg
IChTY3JvbGxpbmdTdGF0ZVRyZWUpOgogCi0gICAgICAgIFJlbmRlckxheWVyQmFja2luZyBoYXMg
YSBuZXcgZGF0YSBtZW1iZXIgY2FsbGVkIG1fc2Nyb2xsTGF5ZXJJRC4gSWYgCi0gICAgICAgIHRo
aXMgUmVuZGVyTGF5ZXJCYWNraW5nIGlzIHJlcHJlc2VudGVkIGluIHRoZSBzY3JvbGxpbmcgdHJl
ZSwgdGhlbiAKLSAgICAgICAgdGhlIElEIHdpdGggYmUgdW5pcXVlIGFuZCBub24temVyby4gCisg
ICAgICAgIFJlbmRlckxheWVyQmFja2luZyBoYXMgYSBuZXcgZGF0YSBtZW1iZXIgY2FsbGVkIG1f
c2Nyb2xsTGF5ZXJJRC4gSWYKKyAgICAgICAgdGhpcyBSZW5kZXJMYXllckJhY2tpbmcgaXMgcmVw
cmVzZW50ZWQgaW4gdGhlIHNjcm9sbGluZyB0cmVlLCB0aGVuCisgICAgICAgIHRoZSBJRCB3aXRo
IGJlIHVuaXF1ZSBhbmQgbm9uLXplcm8uCiAgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHA6CiAgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OlJlbmRl
ckxheWVyQmFja2luZyk6CiAgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6On5S
ZW5kZXJMYXllckJhY2tpbmcpOgpAQCAtMjA3ODUsMTEgKzIwODIwLDExIEBACiAgICAgICAgIChS
ZW5kZXJMYXllckJhY2tpbmcpOgogICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5n
OjpzY3JvbGxMYXllcklEKToKIAotICAgICAgICBNb3ZlIHRoZSBjYWxsIHRvIFNjcm9sbGluZ0Nv
b3JpZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKCkgCi0gICAgICAgIGZyb20g
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphdHRhY2hSb290TGF5ZXIoKSB0byAKLSAgICAgICAgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjogdXBkYXRlQmFja2luZygpLiBUaGUgcHJvYmxlbSB3aXRoIHRo
ZSBvbGQgY2FsbCAKLSAgICAgICAgc2l0ZSBpcyB0aGF0IHRoZXJlIGlzIG5vIGJhY2tpbmcgYXQg
dGhhdCB0aW1lLCBzbyB3ZSBhcmUgdHJ5aW5nIHRvIHNldCAKLSAgICAgICAgc3RhdGUgb24gdGhl
IHJvb3Qgc2Nyb2xsaW5nIHN0YXRlIG5vZGUgYmVmb3JlIHdlIGhhdmUgZW5vdWdoIAorICAgICAg
ICBNb3ZlIHRoZSBjYWxsIHRvIFNjcm9sbGluZ0Nvb3JpZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExh
eWVyRGlkQ2hhbmdlKCkKKyAgICAgICAgZnJvbSBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmF0dGFj
aFJvb3RMYXllcigpIHRvCisgICAgICAgIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6IHVwZGF0ZUJh
Y2tpbmcoKS4gVGhlIHByb2JsZW0gd2l0aCB0aGUgb2xkIGNhbGwKKyAgICAgICAgc2l0ZSBpcyB0
aGF0IHRoZXJlIGlzIG5vIGJhY2tpbmcgYXQgdGhhdCB0aW1lLCBzbyB3ZSBhcmUgdHJ5aW5nIHRv
IHNldAorICAgICAgICBzdGF0ZSBvbiB0aGUgcm9vdCBzY3JvbGxpbmcgc3RhdGUgbm9kZSBiZWZv
cmUgd2UgaGF2ZSBlbm91Z2gKICAgICAgICAgaW5mb3JtYXRpb24gdG8gY3JlYXRlIHRoYXQgbm9k
ZSBhbmQgYWRkIGl0IHRvIHRoZSBIYXNoTWFwLgogICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwOgogICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjp1cGRhdGVCYWNraW5nKToKQEAgLTIwODA4LDcgKzIwODQzLDcgQEAKICAgICAgICAgVGhl
eSBkbyBiYXNpY2FsbHkgdGhlIHNhbWUgdGhpbmcsIGFuZCB0aGUgZm9ybWVyIGlzIG11Y2ggbW9y
ZSBjb21tb24gKGFuZCBsZXNzIGNvZGUpLiBJdCdzCiAgICAgICAgIGFsc28gc2FmZSwgb24gdGhl
IG9mZi1jaGFuY2UgdGhhdCB3ZSdyZSB1c2luZyBBdG9taWNTdHJpbmdzIHdoaWNoIG1pZ2h0IG90
aGVyd2lzZSBnbyBhd2F5LgogCi0gICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3JpbmcuIAor
ICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yaW5nLgogCiAgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9TVkdSZXNvdXJjZXMuY3BwOgogICAgICAgICAoV2ViQ29yZTo6Y2xpcHBlckZpbHRlck1h
c2tlclRhZ3MpOgpAQCAtMjExMjIsNyArMjExNTcsNyBAQAogICAgICAgICAqIFJlc291cmNlcy9w
YWdlcG9wdXBzL3N1Z2dlc3Rpb25QaWNrZXIuY3NzOgogICAgICAgICAoLnN1Z2dlc3Rpb24tbGlz
dCk6IERvbid0IHNob3cgaG9yaXpvbnRhbCBzY3JvbGwgYmFyLgogICAgICAgICAqIFJlc291cmNl
cy9wYWdlcG9wdXBzL3N1Z2dlc3Rpb25QaWNrZXIuanM6Ci0gICAgICAgIChTdWdnZXN0aW9uUGlj
a2VyLnByb3RvdHlwZS5fZml4V2luZG93U2l6ZSk6IAorICAgICAgICAoU3VnZ2VzdGlvblBpY2tl
ci5wcm90b3R5cGUuX2ZpeFdpbmRvd1NpemUpOgogICAgICAgICAqIHBhZ2UvUGFnZVBvcHVwQ2xp
ZW50LmNwcDoKICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVudDo6YWRkUHJvcGVydHkp
OiBGb3IgYWRkaW5nIGFuIGludCB0byBKU09OLgogICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVw
Q2xpZW50OjphZGRQcm9wZXJ0eSk6IEZvciBhZGRpbmcgYW4gSW50UmVjdCB0byBKU09OLgpAQCAt
MjIwMzgsNyArMjIwNzMsNyBAQAogICAgICAgICBJbiBhIGxpbmUgc3VjaCBhcyAnPHNwYW4+PHNw
YW4+PGltZz5UZXh0JyB0aGUgYm9yZGVyLCBwYWRkaW5nIGFuZCBtYXJnaW4gYmVsb25naW5nCiAg
ICAgICAgIHRvIHRoZSB0d28gc3BhbnMgd2FzIGNvdW50ZWQgdHdpY2UgYnkgUmVuZGVyQmxvY2tM
aW5lTGF5b3V0OjpuZXh0TGluZUJyZWFrKCk6IG9uY2UKICAgICAgICAgd2hlbiBhZGRpbmcgdGhl
IHdpZHRoIG9mIHRoZSA8aW1nPiBvYmplY3QgdG8gdGhlIGxpbmUsIGFuZCBhIHNlY29uZCB0aW1l
IHdoZW4gYWRkaW5nCi0gICAgICAgIHRoZSAnVGV4dCcuIFRoZSByZXN1bHQgd2FzIHRoYXQgbmV4
dExpbmVCcmVhaygpIG5vdyBoYWQgYSBsZW5ndGggZm9yIHRoZSBsaW5lIHRoYXQgCisgICAgICAg
IHRoZSAnVGV4dCcuIFRoZSByZXN1bHQgd2FzIHRoYXQgbmV4dExpbmVCcmVhaygpIG5vdyBoYWQg
YSBsZW5ndGggZm9yIHRoZSBsaW5lIHRoYXQKICAgICAgICAgZXhjZWVkZWQgdGhlIGxpbmUncyBt
YXhpbXVtIGxlbmd0aCBhbmQgaW5zZXJ0ZWQgYSBib2d1cyBsaW5lIGJyZWFrLgogCiAgICAgICAg
IFRoaXMgYWxsIGhhcHBlbmVkIGJlY2F1c2UgdGhlIGhlbHBlciBmdW5jdGlvbiB0aGF0IGlzIHVz
ZWQgdG8gYWRkIGluIHRoZSBib3JkZXIgZXRjLgpAQCAtMjIwNDgsMTMgKzIyMDgzLDEzIEBACiAg
ICAgICAgIFRlc3Q6IGZhc3QvaW5saW5lL2JwbS1pbmxpbmUtYW5jZXN0b3JzLmh0bWwKIAogICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgotICAgICAgICAoV2Vi
Q29yZTo6c2hvdWxkQWRkQm9yZGVyUGFkZGluZ01hcmdpbik6IEJyb2tlIHRoaXMgY2hlY2sgb3V0
IGludG8gYSBoZWxwZXIgZnVuY3Rpb24gc28gdGhhdCBpdCAKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZEFkZEJvcmRlclBhZGRpbmdNYXJnaW4pOiBCcm9rZSB0aGlzIGNoZWNrIG91dCBpbnRvIGEg
aGVscGVyIGZ1bmN0aW9uIHNvIHRoYXQgaXQKICAgICAgICAgY2FuIGhlbHAgaW5saW5lTG9naWNh
bFdpZHRoKCkgcmV0dXJuIGVhcmx5IGFuZCBhbHNvIHRyZWF0IGVtcHR5IFJlbmRlclRleHRzIHRo
ZSBzYW1lIGFzIG5vIHByZXZpb3VzL25leHQKICAgICAgICAgc2libGluZyBvbiB0aGUgbGluZS4g
VGhpcyBlbnN1cmVzIHRoYXQgY29sbGFwc2VkIGxlYWRpbmcgc3BhY2UgZG9lcyBub3QgaW50ZXJm
ZXJlIHdpdGggdGhlIGRlY2lzaW9uIHRvCiAgICAgICAgIGNyYXdsIHVwIHRoZSBhbmNlc3RvcnMg
YWNjdW11bGF0aW5nIGJvcmRlciwgcGFkZGluZywgYW5kIG1hcmdpbi4KICAgICAgICAgKFdlYkNv
cmUpOgotICAgICAgICAoV2ViQ29yZTo6aW5saW5lTG9naWNhbFdpZHRoKTogUmV0dXJuIGVhcmx5
IG9uY2UgdGhlIGN1cnJlbnQgY2hpbGQgaXMgbm8gbG9uZ2VyIG9uIHRoZSBlZGdlIG9mIGl0cyBs
aW5lIC0gCi0gICAgICAgIHRoaXMgZW5zdXJlcyB0aGUgYm9yZGVyLCBwYWRkaW5nIGFuZCBtYXJn
aW4gb2YgYW5jZXN0b3JzIGlzIG5vdCBjb3VudGVkIHR3aWNlLiAKKyAgICAgICAgKFdlYkNvcmU6
OmlubGluZUxvZ2ljYWxXaWR0aCk6IFJldHVybiBlYXJseSBvbmNlIHRoZSBjdXJyZW50IGNoaWxk
IGlzIG5vIGxvbmdlciBvbiB0aGUgZWRnZSBvZiBpdHMgbGluZSAtCisgICAgICAgIHRoaXMgZW5z
dXJlcyB0aGUgYm9yZGVyLCBwYWRkaW5nIGFuZCBtYXJnaW4gb2YgYW5jZXN0b3JzIGlzIG5vdCBj
b3VudGVkIHR3aWNlLgogCiAyMDEyLTEwLTA4ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5v
cmc+CiAKQEAgLTIyMjI1LDcgKzIyMjYwLDcgQEAKICAgICAgICAgdXNlIGVjb3JlX21haW5fbG9v
cF90aHJlYWRfc2FmZV9jYWxsX2FzeW5jKCkgdG8gd2FrZXVwIGVjb3JlIG1haW4gbG9vcC4KIAog
ICAgICAgICBBY2NvcmRpbmcgdG8gdGhlIEVGTCBBUEkgZG9jdW1lbnQsIHRoaXMgZnVuY3Rpb24g
aXMgZGVzaWduZWQgdG8gZGlzcGF0Y2gKLSAgICAgICAgYSBmdW5jdGlvbiBvbiBlY29yZSBtYWlu
IGxvb3AgYnkgYXZvaWRpbmcgZGVhZCBsb2NrIG9yIHJhY2UgY29uZGl0aW9uLiAKKyAgICAgICAg
YSBmdW5jdGlvbiBvbiBlY29yZSBtYWluIGxvb3AgYnkgYXZvaWRpbmcgZGVhZCBsb2NrIG9yIHJh
Y2UgY29uZGl0aW9uLgogICAgICAgICBXaXRoIHRoaXMgZnVuY3Rpb24sIHdlYmtpdCBkb2Vzbid0
IG5lZWQgdG8gbWFpbnRhaW4gZWNvcmUgcGlwZSBhbHNvLgogCiAgICAgICAgIE5vIG5ldyB0ZXN0
cy4gVGhlIGZ1bmN0aW9uIHRvIHdha2V1cCBtYWluIGxvb3AgaXMgY2hhbmdlZC4KQEAgLTIzMjU0
LDcgKzIzMjg5LDcgQEAKIAogICAgICAgICBDaGFuZ2UgdGV4dC1hbGlnbiB1c2Ugb2YgbGVnYWN5
ICctd2Via2l0LWF1dG8nIHRvICdzdGFydCcgaW4gdGhlIGZldyBwbGFjZXMgd2hlcmUgaXQgaXMg
dXNlZAogICAgICAgICBpbiBkZWZhdWx0L3F1aXJrcyBzdHlsZXNoZWV0cy4KLSAgICAgICAgCisK
ICAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2Ugb2YgcmVuZGVyaW5nL3N0eWxpbmcgYmVo
YXZpb3IuIE5vIHBlcmZvcm1hbmNlIGltcGFjdC4KIAogICAgICAgICAqIGNzcy9odG1sLmNzczoK
QEAgLTIzNDM5LDcgKzIzNDc0LDcgQEAKIAogICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1
c3RvbS5jcHA6CiAgICAgICAgIChXZWJDb3JlOjppc09ic2VydmFibGUpOiBDbGFyaWZpZWQgdGhp
cyBjb21tZW50LCBzaW5jZSBpdCBzZWVtcyB0byBoYXZlCi0gICAgICAgIG1pc2xlZCBzb21lIGZv
bGtzLiAKKyAgICAgICAgbWlzbGVkIHNvbWUgZm9sa3MuCiAKICAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU05vZGVDdXN0b20uaDoKICAgICAgICAgKFdlYkNvcmU6OndpbGxDcmVhdGVQb3NzaWJseU9y
cGhhbmVkVHJlZUJ5UmVtb3ZhbCk6IE5ldyBoZWxwZXIgZnVuY3Rpb24KQEAgLTIzNjk1LDcgKzIz
NzMwLDcgQEAKICAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldENsb3NlZENh
cHRpb25zVmlzaWJsZSk6IE1vdmUgdGhlIGNvZGUgdGhhdCBtYXJrcyBhbGwgdHJhY2tzIGFzCiAg
ICAgICAgICAgICB1bi1jb25maWd1cmVkIHRvIG1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NB
c1VuY29uZmlndXJlZCBzbyBpdCBjYW4gYmUgcmV1c2VkLgogICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCk6IE5ldywgZm9yY2UgYSBy
ZWV2YWx1YXRpb24gb2YgYWxsIHRleHQgdHJhY2tzLgotICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKTog
TmV3LCBjb2RlIG1vdmVkIGZyb20gCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjptYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQpOiBOZXcsIGNvZGUg
bW92ZWQgZnJvbQogICAgICAgICAgICAgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlCiAgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6IEluaGVyaXQgZnJvbSBDYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkTGlzdGVuZXIuCiAKQEAgLTIzNzE3LDEwICsyMzc1MiwxMCBAQAogCiAgICAgICAg
ICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgogICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrQ3VlQm94OjpUZXh0VHJhY2tDdWVCb3gpOiBTZXQgdGhlIHNoYWRvdyBwc2V1ZG8gaWQuCi0g
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVCb3g6OnRleHRUcmFja0N1ZUJveFNoYWRvd1Bz
ZXVkb0lkKTogTmV3LCBjbGFzcyBtZXRob2QgdG8gcmV0dXJuIHRoZSAKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNrQ3VlQm94U2hhZG93UHNldWRvSWQpOiBOZXcs
IGNsYXNzIG1ldGhvZCB0byByZXR1cm4gdGhlCiAgICAgICAgICAgICBzaGFkb3cgcHNldWRvIGlk
IHNvIGl0IGNhbiBiZSB1c2VkIGVsc2V3aGVyZS4KICAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0N1ZUJveDo6c2hhZG93UHNldWRvSWQpOiBDYWxsIHRleHRUcmFja0N1ZUJveFNoYWRvd1BzZXVk
b0lkLgotICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpwYXN0Tm9kZXNTaGFkb3dQc2V1
ZG9JZCk6IE5ldywgY2xhc3MgbWV0aG9kIHRvIHJldHVybiB0aGUgCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWU6OnBhc3ROb2Rlc1NoYWRvd1BzZXVkb0lkKTogTmV3LCBjbGFzcyBtZXRo
b2QgdG8gcmV0dXJuIHRoZQogICAgICAgICAgICAgc2hhZG93IHBzZXVkbyBpZCBzbyBpdCBjYW4g
YmUgdXNlZCBlbHNld2hlcmUuCiAgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmZ1dHVy
ZU5vZGVzU2hhZG93UHNldWRvSWQpOiBEaXR0by4KICAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUpOgpAQCAtMjM3NDcsMTUgKzIzNzgyLDE1IEBACiAgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcyk6
IE5ldywgcGFzc3Rocm91Z2ggdG8gV0tTSSBmdW5jdGlvbi4KICAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lTWFjOjp1c2VyUHJlZmVyc0NhcHRpb25zKTogRGl0dG8uCiAgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZU1hYzo6Y2FwdGlvbnNXaW5kb3dDb2xvcik6IFJldHVybiBDb2xvciB3
aXRoIHVzZXIncyBjYXB0aW9uIHdpbmRvdyBjb2xvciBwcmVmZXJlbmNlLgotICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zQmFja2dyb3VuZENvbG9yKTogUmV0dXJuIENv
bG9yIHdpdGggdXNlcidzIGNhcHRpb24gCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1h
Yzo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ29sb3IpOiBSZXR1cm4gQ29sb3Igd2l0aCB1c2VyJ3MgY2Fw
dGlvbgogICAgICAgICAgICAgYmFja2dyb3VuZCBjb2xvciBwcmVmZXJlbmNlLgogICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zVGV4dENvbG9yKTogUmV0dXJuIENvbG9y
IHdpdGggdXNlcidzIGNhcHRpb24gdGV4dCBjb2xvciBwcmVmZXJlbmNlLgogICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVNYWM6OmNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKTogUmV0
dXJuIENvbG9yIGZvciB0ZXh0IGVkZ2UgZWZmZWN0LgogICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVNYWM6OmNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3IpOiBSZXR1cm4gU3RyaW5nIHdp
dGggQ1NTIHRvIHNldCBhIHRleHQtc2hhZG93CiAgICAgICAgICAgICBvciB3ZWJraXQtdGV4dC1z
dHJva2UgcHJvcGVydHkuCi0gICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6Y3NzQ29s
b3JQcm9wZXJ0eSk6IFJldHVybiBhIFN0cmluZyB3aXRoIGNzcyB0byBzZXQgYSBwcm9wZXJ0eSAK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpjc3NDb2xvclByb3BlcnR5KTogUmV0
dXJuIGEgU3RyaW5nIHdpdGggY3NzIHRvIHNldCBhIHByb3BlcnR5CiAgICAgICAgICAgICB3aXRo
IGEgY29sb3IgdmFsdWUuCi0gICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6Y2FwdGlv
bnNUZXh0RWRnZVN0eWxlKTogUmV0dXJuIGEgU3RyaW5nIHdpdGggY3NzIHRvIHN0eWxlIGNhcHRp
b24gCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6Y2FwdGlvbnNUZXh0RWRnZVN0
eWxlKTogUmV0dXJuIGEgU3RyaW5nIHdpdGggY3NzIHRvIHN0eWxlIGNhcHRpb24KICAgICAgICAg
ICAgIHRleHQgd2l0aCB0aGUgdXNlcidzIHByZWZlcnJlZCB0ZXh0IGVkZ2Ugc3R5ZS4KICAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpjYXB0aW9uc0RlZmF1bHRGb250KTogUmV0dXJu
IGEgU3RyaW5nIHdpdGggY3NzIHRvIHN0eWxlIGNhcHRpb24KICAgICAgICAgICAgIHRleHQgd2l0
aCB0aGUgdXNlcidzIHByZWZlcnJlZCBmb250LgpAQCAtMjM3NjMsNyArMjM3OTgsNyBAQAogICAg
ICAgICAgICAgd2l0aCB0aGUgdXNlcidzIHByZWZlcnJlZCBzdHlsZS4KICAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lTWFjOjpjYXB0aW9uRm9udFNpemVTY2FsZSk6IFJldHVybiB0aGUgdXNl
cidzIHByZWZlcnJlZCBjYXB0aW9uIGZvbnQgc2NhbGUuCiAgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZU1hYzo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCk6IE5vdGlmeSBsaXN0ZW5lcnMg
b2YgY2FwdGlvbiBwcmVmZXJlbmNlIGNoYW5nZS4KLSAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lTWFjOjpyZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBB
ZGQgYSBjYXB0aW9uIHByZWZlcmVuY2VzIAorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyk6IEFkZCBh
IGNhcHRpb24gcHJlZmVyZW5jZXMKICAgICAgICAgICAgIGNoYW5nZXMgbGlzdGVuZXIuCiAgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWRDYWxsYmFja3MpOiBSZW1vdmUgYSBjYXB0aW9uIHByZWZlcmVuY2VzCiAgICAg
ICAgICAgICBjaGFuZ2VzIGxpc3RlbmVyLgpAQCAtMjM4MTcsMTIgKzIzODUyLDEyIEBACiAgICAg
ICAgIEhvd2V2ZXIsIHdlIHdpbGwgbmVlZCBub24tb3BhcXVlIHRpbGUgY2FjaGVzIHdoZW4gd2Ug
dXNlIHRoaXMKICAgICAgICAgdGlsZSBjYWNoZSBmb3IgdGlsZWQgbGF5ZXJzLCBzbyBhZGQgYSBt
ZW1iZXIgZnVuY3Rpb24gdG8KICAgICAgICAgY29udHJvbCB0aWxlIG9wYWNpdHkuCi0gICAgICAg
IAorCiAgICAgICAgIFJlbmRlckxheWVyQmFja2luZyBhbHJlYWR5IGNhbGxzIG1fZ3JhcGhpY3NM
YXllci0+c2V0Q29udGVudHNPcGFxdWUoKQogICAgICAgICB1c2luZyB0aGUgRnJhbWVWaWV3J3Mg
bm90aW9uIG9mIG9wYXF1ZW5lc3MsIHNvIHRoaXMgY2hhbmdlIHdpbGwKICAgICAgICAgY2F1c2Ug
dGhlIG1haW4gdGlsZSBjYWNoZSB0byBiZSBub24tb3BhcXVlIGlmIGV4dGVybmFsIGZvcmNlcyBo
YXZlCiAgICAgICAgIHNldCB0aGUgRnJhbWVWaWV3IHRvIGJlIG5vbi1vcGFxdWUuCi0gICAgICAg
IAorCiAgICAgICAgIEFsc28gdHdlYWsgdGhlIGxheWVyIGJvcmRlciB3aWR0aHMgb24gdGlsZWQg
bGF5ZXJzLgogCiAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5o
OgpAQCAtMjM5MTcsMTQgKzIzOTUyLDE0IEBACiAKICAgICAgICAgQWxsb3cgRXZlbnRIYW5kbGVy
IHRvIGhhbmRsZSBsb25ncHJlc3MgZ2VzdHVyZXMsIGluY2x1ZGluZyBsb25ncHJlc3Mgc2VsZWN0
aW9uIG9uIEFuZHJvaWQuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05ODE3MwotICAgICAgICAKKwogICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5p
d2EuCiAKICAgICAgICAgQWRkcyBoYW5kbGluZyBmb3IgR2VzdHVyZUxvbmdQcmVzcyB0byBFdmVu
dEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCwgd2l0aCBhIG5ldwogICAgICAgICBoYW5kbGVH
ZXN0dXJlTG9uZ1ByZXNzIG1ldGhvZC4gT24gQW5kcm9pZCwgdGhpcyBtZXRob2Qgc2VsZWN0cyB0
aGUgY2xvc2VzdCB3b3JkCiAgICAgICAgIGlmIHRoZSBnZXN0dXJlIGV2ZW50IHdhcyBvdmVyIG5v
bi1saW5rIHRleHQuCiAKLSAgICAgICAgVGhpcyBpcyB0ZXN0ZWQgdmlhIGEgbmV3IGNocm9taXVt
IHRlc3QgV2ViVmlld1Rlc3QuTG9uZ1ByZXNzU2VsZWN0aW9uLiAgCisgICAgICAgIFRoaXMgaXMg
dGVzdGVkIHZpYSBhIG5ldyBjaHJvbWl1bSB0ZXN0IFdlYlZpZXdUZXN0LkxvbmdQcmVzc1NlbGVj
dGlvbi4KIAogICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKICAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRGcm9tSGl0VGVzdFJlc3VsdCk6CkBA
IC0yNDE3NCw3ICsyNDIwOSw3IEBACiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCiAK
ICAgICAgICAgRW5mb3JjZXMgYSBtaW5pbXVtIHJvdyBoZWlnaHQgZm9yIHBvcHVwIG1lbnVzIHdo
ZW4gYSB0b3VjaCBkZXZpY2UgaXMKLSAgICAgICAgZGV0ZWN0ZWQuICBJbiBhIHByZXZpb3VzIHBh
dGNoIChyMTI3NTk3KSwgdGhlIHNpemluZyBvZiBwb3B1cCB3YXMgCisgICAgICAgIGRldGVjdGVk
LiAgSW4gYSBwcmV2aW91cyBwYXRjaCAocjEyNzU5NyksIHRoZSBzaXppbmcgb2YgcG9wdXAgd2Fz
CiAgICAgICAgIGNvbnNvbGlkYXRlZCBmb3IgdG91Y2ggYW5kIG5vbi10b3VjaC4gIEJhc2VkIG9u
IHVzZXIgZmVlZGJhY2ssIHJldmVydGluZwogICAgICAgICB0byB0aGUgb2xkIGJlaGF2aW9yIGZv
ciBub24tdG91Y2ggYW5kIG9ubHkgYWRkaW5nIHBhZGRpbmcgZm9yIHRvdWNoCiAgICAgICAgIGRl
dmljZXMgc2VlbXMgbGlrZSBhIG11Y2ggc2FmZXIgc3RyYXRlZ3kuICBUaGlzIHBhdGNoIGlzIG5v
dCBhIGRpcmVjdApAQCAtMjQ4MDYsNyArMjQ4NDEsNyBAQAogICAgICAgICBSZXZpZXdlZCBieSBF
cmljIFNlaWRlbC4KIAogICAgICAgICBUaGlzIHBhdGNoIGFkZHMgcGVyLWNvbXBvbmVudCBvdmVy
ZmxvdyBndWFyZHMgZm9yIENTUyBzZWxlY3RvciBzcGVjaWZpY2l0eS4KLSAgICAgICAgUHJldmlv
dXNseSwgd2UgZGlkbid0IGd1YXJkIGFnYWluc3Qgb3ZlcmZsb3cuIAorICAgICAgICBQcmV2aW91
c2x5LCB3ZSBkaWRuJ3QgZ3VhcmQgYWdhaW5zdCBvdmVyZmxvdy4KICAgICAgICAgU2luY2Ugd2Ug
c3RvcmVkIGVhY2ggY29tcG9uZW50IGFzIGEgYnl0ZSBtYXBwZWQgaW50byBhIHNpbmdsZSB1bnNp
Z25lZCBpbnQgZm9yIHRoZSB3aG9sZSBzcGVjaWZpY2l0eSwKICAgICAgICAgMjU2IG9mIGEgcGFy
dGljdWxhciBzaW1wbGUgc2VsZWN0b3Igd2FzIGVxdWl2YWxlbnQgdG8gMSBvZiB0aGUgbmV4dC1o
aWdoZXItZ3JvdXAgc2VsZWN0b3IuCiAgICAgICAgIFRoaXMgdmlvbGF0ZWQgdGhlIFNlbGVjdG9y
cyBzcGVjaWZpY2F0aW9uLApAQCAtMjUwMTEsNyArMjUwNDYsNyBAQAogICAgICAgICBUaGVyZSBp
cyBhIGNvbmNlcHQgb2YgZGVtb3Rpb24gZm9yIGEgPGZvcm0+IGNvbnRhaW5lZCBpbiBhIHRhYmxl
LiBBIDxmb3JtPiBpcyBkZW1vdGVkIGlmIGl0cyBpbW1lZGlhdGUgcGFyZW50CiAgICAgICAgIGlz
IGVpdGhlciBhIDx0YWJsZT4sIHRhYmxlIHNlY3Rpb25zICh0Ym9keSwgZXRjKSBvciBhIHRhYmxl
IHJvdyAodHIpLiBBIHJlbmRlcmVyIGZvciBzdWNoIGEgPGZvcm0+IGlzIGNyZWF0ZWQgb25seQog
ICAgICAgICBpZiBpdHMgZGlzcGxheSBpcyBvbmUgb2YgdGhlIHRhYmxlIGRpc3BsYXkgdHlwZXMg
KFRBQkxFLCBJTkxJTkVfVEFCTEUsIFRBQkxFX0ZPT1RFUl9HUk9VUCwgZXRjKS4KLSAgICAgICAg
SG93ZXZlciB3aGVuIGEgPHRhYmxlPiBjb250YWluaW5nIGEgZGVtb3RlZCA8Zm9ybT4gaXMgY2xv
bmVkLCB0aGUgPGZvcm0+IGRvZXMgbm90IHJldGFpbiBpdHMgZGVtb3Rpb24gc3RhdGUgYW5kIAor
ICAgICAgICBIb3dldmVyIHdoZW4gYSA8dGFibGU+IGNvbnRhaW5pbmcgYSBkZW1vdGVkIDxmb3Jt
PiBpcyBjbG9uZWQsIHRoZSA8Zm9ybT4gZG9lcyBub3QgcmV0YWluIGl0cyBkZW1vdGlvbiBzdGF0
ZSBhbmQKICAgICAgICAgcmVzdWx0cyBpbiB0aGUgdGFibGUgZ2V0dGluZyBpbXByb3Blcmx5IHJl
bmRlcmVkLgogCiAgICAgICAgIFRlc3Q6IGZhc3QvdGFibGUvZm9ybS13aXRoLW5vbi10YWJsZS1k
aXNwbGF5LWluc2lkZS10YWJsZS1lbGVtZW50cy5odG1sCkBAIC0yNTAyMSw3ICsyNTA1Niw3IEBA
CiAgICAgICAgICAgRXh0ZW5kZWQgdGhlIHZpcnR1YWwgZnVuY3Rpb24gZm9yIEhUTUxGb3JtRWxl
bWVudCBjbGFzcyBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAgICBUaGUgZnVuY3Rp
b24gaXMgdXNlZCB0byBjb3B5IGFueSBuZWNlc3Nhcnkgc3RhdGUgaW5mb3JtYXRpb24obWVtYmVy
IHZhcmlhYmxlcykgYXNzb2NpYXRlZCB3aXRoCiAgICAgICAgICAgdGhlIDxmb3JtPiBlbGVtZW50
IGJlaW5nIGNsb25lZCB0byB0aGUgY3VycmVudCBub2RlLgotICAgICAgICAgIEZvciBIVE1MRm9y
bUVsZW1lbnQgbm9kZSB0aGUgbWVtYmVyIHZhcmlhYmxlIGNhbiBiZSBjbGFzc2lmaWVkIGludG8g
Zml2ZSBncm91cHMgYmFzZWQgb24gdGhlIAorICAgICAgICAgIEZvciBIVE1MRm9ybUVsZW1lbnQg
bm9kZSB0aGUgbWVtYmVyIHZhcmlhYmxlIGNhbiBiZSBjbGFzc2lmaWVkIGludG8gZml2ZSBncm91
cHMgYmFzZWQgb24gdGhlCiAgICAgICAgICAgaW5mb3JtYXRpb24gdGhleSBob2xkOgogICAgICAg
ICAgICAgMSkgVmFyaWFibGVzIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gcmVnYXJkaW5nIDxmb3Jt
PiBzdWJ0cmVlIGFuZCBlbGVtZW50cyBhc3NvY2lhdGVkIHdpdGggaXQuCiAgICAgICAgICAgICAg
ICBUaGVzZSBnZXQgdXBkYXRlZCBhcyBhbmQgd2hlbiBhbiBlbGVtZW50IGlzIGFkZGVkIHRvIHRo
ZSA8Zm9ybT4gc3VidHJlZS4KQEAgLTI1MTkwLDcgKzI1MjI1LDcgQEAKICAgICAgICAgKFdlYkNv
cmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KTogVXBkYXRlIHZpc2libGVTdGFy
dCBhZnRlciBpbnNlcnRpbmcgYSBwYXJhZ3JhcGggc2VwYXJhdG9yIHNvIHRoYXQKICAgICAgICAg
dGhlIGxvZ2ljIHRvIGNsZWFudXAgdGhlIG5lc3RlZCBkaXYgY2hlY2tzIHRoZSByaWdodCBjb25k
aXRpb24gKHJpZ2h0IGJlbmVhdGggaXQgc3RhcnRpbmcgd2l0aCBhIGxvbmcgY29tbWVudCkuCiAg
ICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6YWRkU3BhY2VzRm9yU21h
cnRSZXBsYWNlKTogSW5zZXJ0IGEgc3BhY2UgZm9yIHNtYXJ0IHBhc3RlIGF0IHRoZSBhcHByb3By
aWF0ZQotICAgICAgICBvZmZzZXQgaW5zdGVhZCBvZiBhdCB0aGUgZW5kIG9mIGVuZE5vZGUuIEFs
c28gdXBkYXRlIHRoZSBsYXlvdXQgYmVmb3JlIG9idGFpbmluZyBzdGFydERvd25zdHJlYW0gYXMg
d2UgbWF5IGhhdmUgCisgICAgICAgIG9mZnNldCBpbnN0ZWFkIG9mIGF0IHRoZSBlbmQgb2YgZW5k
Tm9kZS4gQWxzbyB1cGRhdGUgdGhlIGxheW91dCBiZWZvcmUgb2J0YWluaW5nIHN0YXJ0RG93bnN0
cmVhbSBhcyB3ZSBtYXkgaGF2ZQogICAgICAgICBtb2RpZmllZCB0aGUgRE9NIGJ5IGluc2VydGlu
ZyBhIHNwYWNlIGZvciBlbmROb2RlLiBGaW5hbGx5LCBhIG5vbi1icmVha2luZyBzcGFjZSBzaG91
bGQgYmUgdHJlYXRlZCBsaWtlIGEgc3BhY2UKICAgICAgICAgaXNDaGFyYWN0ZXJTbWFydFJlcGxh
Y2VFeGVtcHQgZm9yIHRoZSBwdXJwb3NlIG9mIHNtYXJ0IHJlcGxhY2UuIGUuZy4gaWYgd2UncmUg
aW5zZXJ0aW5nICJ3b3JsZCIgYWZ0ZXIKICAgICAgICAgImhlbGxvJm5ic3A7Iiwgd2Ugc2hvdWxk
bid0IGJlIGluc2VydGluZyBhbm90aGVyIHNwYWNlIGJldHdlZW4gImhlbGxvIiBhbmQgIndvcmxk
Ii4KQEAgLTI1ODcyLDE3ICsyNTkwNywxNyBAQAogMjAxMi0xMC0wMyAgQmV0aCBEYWtpbiAgPGJk
YWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk4MzEzCi0gICAgICAgIFNjcm9sbGluZ1N0YXRlTm9kZSBzaG91bGQga2VlcCBh
IFZlY3RvciBvZiBjaGlsZHJlbiBpbnN0ZWFkIG9mIGNoaWxkIAorICAgICAgICBTY3JvbGxpbmdT
dGF0ZU5vZGUgc2hvdWxkIGtlZXAgYSBWZWN0b3Igb2YgY2hpbGRyZW4gaW5zdGVhZCBvZiBjaGls
ZAogICAgICAgICBwb2ludGVycwogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
IAotICAgICAgICBUaGlzIHBhdGNoIHJlLW5hbWVzIFNjcm9sbGluZ1N0YXRlTm9kZTo6Y2xvbmVO
b2RlKCkgdG8gCi0gICAgICAgIFNjcm9sbGluZ1N0YXRlTm9kZTo6Y2xvbmVBbmRSZXNldE5vZGUo
KS4gVGhlIG5ldyBmdW5jdGlvbiByZXNldHMgdGhlIAotICAgICAgICBjaGFuZ2UgcHJvcGVydGll
cyBvZiB0aGUgY3VycmVudCBub2RlIGFmdGVyIGNsb25pbmcgaXQsIGFuZCBpdCBhbHNvIAorICAg
ICAgICBUaGlzIHBhdGNoIHJlLW5hbWVzIFNjcm9sbGluZ1N0YXRlTm9kZTo6Y2xvbmVOb2RlKCkg
dG8KKyAgICAgICAgU2Nyb2xsaW5nU3RhdGVOb2RlOjpjbG9uZUFuZFJlc2V0Tm9kZSgpLiBUaGUg
bmV3IGZ1bmN0aW9uIHJlc2V0cyB0aGUKKyAgICAgICAgY2hhbmdlIHByb3BlcnRpZXMgb2YgdGhl
IGN1cnJlbnQgbm9kZSBhZnRlciBjbG9uaW5nIGl0LCBhbmQgaXQgYWxzbwogICAgICAgICB0YWtl
cyBjYXJlIG9mIGNsb25pbmcgY2hpbGRyZW4sIHdoaWNoIHRoZSBvbGQgZnVuY3Rpb24gZGlkIG5v
dCBkby4KIAotICAgICAgICBtX2ZpcnN0Q2hpbGQgYW5kIG1fbmV4dFNpYmxpbmcgYXJlIGdvbmUu
IFVzZSB0aGUgbV9jaGlsZHJlbiBWZWN0b3IgCisgICAgICAgIG1fZmlyc3RDaGlsZCBhbmQgbV9u
ZXh0U2libGluZyBhcmUgZ29uZS4gVXNlIHRoZSBtX2NoaWxkcmVuIFZlY3RvcgogICAgICAgICBp
bnN0ZWFkLgogICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHA6
CiAgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OmNsb25lQW5kUmVzZXRDaGls
ZE5vZGVzKToKQEAgLTI1ODk3LDcgKzI1OTMyLDcgQEAKICAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Y2xvbmVBbmRSZXNldE5vZGUpOgogICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oOgogCi0gICAgICAgIFlh
eSwgdGhpcyBmdW5jdGlvbiBjYW4gYmUgdmFzdGx5IHNpbXBsaWZpZWQgbm93IHRoYXQgd2UgZG9u
J3QgaGF2ZSAKKyAgICAgICAgWWF5LCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSB2YXN0bHkgc2ltcGxp
ZmllZCBub3cgdGhhdCB3ZSBkb24ndCBoYXZlCiAgICAgICAgIHRob3NlIG1lc3N5IGNoaWxkIGFu
ZCBzaWJsaW5nIHBvaW50ZXJzLgogICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlVHJlZS5jcHA6CiAgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1p
dCk6CkBAIC0yNjE5Niw5ICsyNjIzMSw5IEBACiAKICAgICAgICAgVGhpcyBwYXRjaCBnZXRzIHJp
ZCBvZiB0aGUgc2VwYXJhdGUgU3RydWN0dXJlIGFsbG9jYXRvciBpbiB0aGUgTWFya2VkU3BhY2Ug
YW5kIGFkZHMgdHdvIG5ldyBkZXN0cnVjdG9yLW9ubHkKICAgICAgICAgYWxsb2NhdG9ycy4gV2Ug
bm93IGhhdmUgc2VwYXJhdGUgYWxsb2NhdG9ycyBmb3Igb3VyIHRocmVlIHR5cGVzIG9mIG9iamVj
dHM6IHRob3NlIG9iamVjdHMgd2l0aCBubyBkZXN0cnVjdG9ycywKLSAgICAgICAgdGhvc2Ugb2Jq
ZWN0cyB3aXRoIGRlc3RydWN0b3JzIGFuZCB3aXRoIGltbW9ydGFsIHN0cnVjdHVyZXMsIGFuZCB0
aG9zZSBvYmplY3RzIHdpdGggZGVzdHJ1Y3RvcnMgdGhhdCBkb24ndCBoYXZlIAotICAgICAgICBp
bW1vcnRhbCBzdHJ1Y3R1cmVzLiBBbGwgb2YgdGhlIG9iamVjdHMgb2YgdGhlIHRoaXJkIHR5cGUg
KGRlc3RydWN0b3JzIHdpdGhvdXQgaW1tb3J0YWwgc3RydWN0dXJlcykgbm93IAotICAgICAgICBp
bmhlcml0IGZyb20gYSBuZXcgY2xhc3MgbmFtZWQgSlNEZXN0cnVjdGlibGVPYmplY3QgKHdoaWNo
IGluIHR1cm4gaXMgYSBzdWJjbGFzcyBvZiBKU05vbkZpbmFsT2JqZWN0KSwgd2hpY2ggc3RvcmVz
IAorICAgICAgICB0aG9zZSBvYmplY3RzIHdpdGggZGVzdHJ1Y3RvcnMgYW5kIHdpdGggaW1tb3J0
YWwgc3RydWN0dXJlcywgYW5kIHRob3NlIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyB0aGF0IGRv
bid0IGhhdmUKKyAgICAgICAgaW1tb3J0YWwgc3RydWN0dXJlcy4gQWxsIG9mIHRoZSBvYmplY3Rz
IG9mIHRoZSB0aGlyZCB0eXBlIChkZXN0cnVjdG9ycyB3aXRob3V0IGltbW9ydGFsIHN0cnVjdHVy
ZXMpIG5vdworICAgICAgICBpbmhlcml0IGZyb20gYSBuZXcgY2xhc3MgbmFtZWQgSlNEZXN0cnVj
dGlibGVPYmplY3QgKHdoaWNoIGluIHR1cm4gaXMgYSBzdWJjbGFzcyBvZiBKU05vbkZpbmFsT2Jq
ZWN0KSwgd2hpY2ggc3RvcmVzCiAgICAgICAgIHRoZSBDbGFzc0luZm8gZm9yIHRoZXNlIGNsYXNz
ZXMgYXQgYSBmaXhlZCBvZmZzZXQgZm9yIHNhZmUgcmV0cmlldmFsIGR1cmluZyBzd2VlcGluZy9k
ZXN0cnVjdGlvbi4KIAogICAgICAgICBObyBuZXcgdGVzdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDU4ODg1YmU0NDJlZGZiYTFhNTA2ZjU3YjA0NDhjYmNkMTNmOWQ0MzcuLjUxMzli
ZWRlOTU5ZGMwNWM0YjQ0ODQ3MGQ1YzUxMmMxZGM5ZGFkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMTAtMjYgIERhbiBDYXJuZXkgIDxkY2FybmV5
QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGVuc3VyZUF1eGlsaWFyeUNvbnRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5OTc1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0
cyB0byB1c2UgY29ycmVjdCB2OCBjb250ZXh0LgorCisgICAgICAgICogdGVzdHMvSURCQmluZGlu
Z1V0aWxpdGllc1Rlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpjaGVja0tleUZyb21WYWx1ZUFu
ZEtleVBhdGhJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrS2V5UGF0aE51bGxWYWx1
ZSk6CisgICAgICAgIChXZWJLaXQ6OmluamVjdEtleSk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNr
SW5qZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Y2hlY2tJbmplY3Rpb25GYWlscyk6CisgICAg
ICAgIChXZWJLaXQ6OmNoZWNrS2V5UGF0aFN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6
Y2hlY2tLZXlQYXRoTnVtYmVyVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlRFU1QpOgor
CiAyMDEyLTEwLTI2ICBUaGlhZ28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50
ZWwuY29tPgogCiAgICAgICAgIEFkZCBmZWF0dXJlIGZsYWdzIGZvciBDU1MgRGV2aWNlIEFkYXB0
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3Bw
CmluZGV4IGE2OWQ0YzNmMWZmOGNmZmIwMzllNzhhZjYxODgxZDc3YzkzNmRjYWQuLmY2ODA0NzY3
MDdkZTY5MGQ0NDllODQyOGMyZWQ4NGI4MzUxYTA2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgU2NyaXB0CiAgICAgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCA9IG9iamVj
dFN0b3JlLT5tZXRhZGF0YSgpLmtleVBhdGg7CiAgICAgY29uc3QgYm9vbCB1c2VzSW5MaW5lS2V5
cyA9ICFrZXlQYXRoLmlzTnVsbCgpOwogICAgIGlmICh1c2VzSW5MaW5lS2V5cykgewotICAgICAg
ICBSZWZQdHI8SURCS2V5PiBrZXlQYXRoS2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVl
QW5kS2V5UGF0aCh2YWx1ZSwga2V5UGF0aCk7CisgICAgICAgIFJlZlB0cjxJREJLZXk+IGtleVBh
dGhLZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKGNvbnRleHQsIHZh
bHVlLCBrZXlQYXRoKTsKICAgICAgICAgaWYgKCFrZXlQYXRoS2V5IHx8ICFrZXlQYXRoS2V5LT5p
c0VxdWFsKG1fY3VycmVudFByaW1hcnlLZXkuZ2V0KCkpKSB7CiAgICAgICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAt
MjcwLDEwICsyNzAsMTAgQEAgdm9pZCBJREJDdXJzb3I6OnNldFZhbHVlUmVhZHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXkKICAgICAgICAgY29uc3Qg
SURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YSA9IG9iamVjdFN0b3JlLT5tZXRhZGF0YSgp
OwogICAgICAgICBpZiAobWV0YWRhdGEuYXV0b0luY3JlbWVudCAmJiAhbWV0YWRhdGEua2V5UGF0
aC5pc051bGwoKSkgewogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+
IGV4cGVjdGVkS2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCh2YWx1
ZSwgbWV0YWRhdGEua2V5UGF0aCk7CisgICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBleHBlY3Rl
ZEtleSA9IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoY29udGV4dCwgdmFs
dWUsIG1ldGFkYXRhLmtleVBhdGgpOwogICAgICAgICAgICAgQVNTRVJUKCFleHBlY3RlZEtleSB8
fCBleHBlY3RlZEtleS0+aXNFcXVhbChtX2N1cnJlbnRQcmltYXJ5S2V5LmdldCgpKSk7CiAjZW5k
aWYKLSAgICAgICAgICAgIGJvb2wgaW5qZWN0ZWQgPSBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFs
dWUobV9jdXJyZW50UHJpbWFyeUtleSwgdmFsdWUsIG1ldGFkYXRhLmtleVBhdGgpOworICAgICAg
ICAgICAgYm9vbCBpbmplY3RlZCA9IGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShjb250ZXh0
LCBtX2N1cnJlbnRQcmltYXJ5S2V5LCB2YWx1ZSwgbWV0YWRhdGEua2V5UGF0aCk7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogVGhlcmUgaXMgbm8gd2F5IHRvIHJlcG9ydCBlcnJvcnMgaGVyZS4gTW92
ZSB0aGlzIGludG8gb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbiBzbyB0aGF0IHdlIGNhbiBhYm9y
dCB0aGUgdHJhbnNhY3Rpb24gdGhlcmUuIFNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkyMjc4CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGluamVjdGVkLCBp
bmplY3RlZCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCBmYzY1NzNhMThhMjg2ZWMwYTYyNWNmNmE1
NWRmNjUyZTFhZDdhYmEzLi5lNDZiYjM3MDRkNTI1OTFjYTVkNTMyZWMwODE3YTYzYTU2NDFjYmE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuY3BwCkBAIC0xMDEsMTIgKzEwMSwxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
Qk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwog
ICAgIHJldHVybiBnZXQoY29udGV4dCwga2V5UmFuZ2UucmVsZWFzZSgpLCBlYyk7CiB9CiAKLXN0
YXRpYyB2b2lkIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUoY29uc3QgSURCSW5kZXhNZXRhZGF0
YSYgaW5kZXhNZXRhZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU2NyaXB0VmFsdWUmIG9iamVjdFZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJREJPYmplY3RTdG9yZTo6SW5kZXhLZXlzKiBpbmRleEtleXMpCitzdGF0
aWMgdm9pZCBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEsIGNvbnN0IFNj
cmlwdFZhbHVlJiBvYmplY3RWYWx1ZSwgSURCT2JqZWN0U3RvcmU6OkluZGV4S2V5cyogaW5kZXhL
ZXlzKQogewogICAgIEFTU0VSVChpbmRleEtleXMpOwotICAgIFJlZlB0cjxJREJLZXk+IGluZGV4
S2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChvYmplY3RWYWx1ZSwg
aW5kZXhNZXRhZGF0YS5rZXlQYXRoKTsKKyAgICBSZWZQdHI8SURCS2V5PiBpbmRleEtleSA9IGNy
ZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoY29udGV4dCwgb2JqZWN0VmFsdWUs
IGluZGV4TWV0YWRhdGEua2V5UGF0aCk7CiAKICAgICBpZiAoIWluZGV4S2V5KQogICAgICAgICBy
ZXR1cm47CkBAIC0xODEsNyArMTc5LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmpl
Y3RTdG9yZTo6cHV0KElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6UHV0TW8KICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICh1c2VzSW5MaW5lS2V5cykgewotICAgICAgICBS
ZWZQdHI8SURCS2V5PiBrZXlQYXRoS2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5k
S2V5UGF0aCh2YWx1ZSwga2V5UGF0aCk7CisgICAgICAgIFJlZlB0cjxJREJLZXk+IGtleVBhdGhL
ZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKGNvbnRleHQsIHZhbHVl
LCBrZXlQYXRoKTsKICAgICAgICAgaWYgKGtleVBhdGhLZXkgJiYgIWtleVBhdGhLZXktPmlzVmFs
aWQoKSkgewogICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7
CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTIwOCw3ICsyMDYsNyBAQCBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlOjpQdXRNbwogICAgIFZlY3RvcjxJbmRleEtleXM+IGluZGV4S2V5czsKICAgICBmb3IgKElE
Qk9iamVjdFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fbWV0
YWRhdGEuaW5kZXhlcy5iZWdpbigpOyBpdCAhPSBtX21ldGFkYXRhLmluZGV4ZXMuZW5kKCk7ICsr
aXQpIHsKICAgICAgICAgSW5kZXhLZXlzIGtleXM7Ci0gICAgICAgIGdlbmVyYXRlSW5kZXhLZXlz
Rm9yVmFsdWUoaXQtPnZhbHVlLCB2YWx1ZSwgJmtleXMpOworICAgICAgICBnZW5lcmF0ZUluZGV4
S2V5c0ZvclZhbHVlKGNvbnRleHQsIGl0LT52YWx1ZSwgdmFsdWUsICZrZXlzKTsKICAgICAgICAg
aW5kZXhOYW1lcy5hcHBlbmQoaXQtPmtleSk7CiAgICAgICAgIGluZGV4S2V5cy5hcHBlbmQoa2V5
cyk7CiAgICAgfQpAQCAtMjg1LDkgKzI4Myw5IEBAIG5hbWVzcGFjZSB7CiAvLyBjdXJzb3Igc3Vj
Y2VzcyBoYW5kbGVycyBhcmUga2VwdCBhbGl2ZS4KIGNsYXNzIEluZGV4UG9wdWxhdG9yIDogcHVi
bGljIEV2ZW50TGlzdGVuZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluZGV4
UG9wdWxhdG9yPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2U+IGJhY2tlbmQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0
cmFuc2FjdGlvbiwgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0LCBjb25zdCBJREJJbmRl
eE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluZGV4UG9w
dWxhdG9yPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+
IGJhY2tlbmQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFu
c2FjdGlvbiwgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0LCBjb25zdCBJREJJbmRleE1l
dGFkYXRhJiBpbmRleE1ldGFkYXRhLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmRleFBvcHVsYXRvcihiYWNrZW5k
LCB0cmFuc2FjdGlvbiwgaW5kZXhNZXRhZGF0YSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEluZGV4UG9wdWxhdG9yKGJhY2tlbmQsIHRyYW5zYWN0aW9uLCBpbmRleE1ldGFkYXRhLCBj
b250ZXh0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZl
bnRMaXN0ZW5lciYgb3RoZXIpCkBAIC0yOTcsMTggKzI5NSwyMSBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgSW5kZXhQb3B1bGF0b3IoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2U+IGJhY2tlbmQsCi0gICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uLAotICAgICAgICAgICAgICAgICAg
IGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCisgICAgICAgIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbiwKKyAgICAgICAg
Y29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSwKKyAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICAgICAgOiBFdmVudExpc3RlbmVyKENQUEV2ZW50
TGlzdGVuZXJUeXBlKQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVCYWNrZW5kKGJhY2tlbmQpCiAg
ICAgICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAgICAgLCBtX2luZGV4TWV0
YWRhdGEoaW5kZXhNZXRhZGF0YSkKKyAgICAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICB7
CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIEV2ZW50KiBldmVudCkKICAgICB7CiAgICAgICAgIEFTU0VSVChldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQpOworICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBtX2NvbnRleHQpOwogICAgICAgICBFdmVudFRhcmdldCogdGFyZ2V0ID0gZXZl
bnQtPnRhcmdldCgpOwogICAgICAgICBJREJSZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8
SURCUmVxdWVzdCo+KHRhcmdldCk7CiAKQEAgLTMyOSw3ICszMzAsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBjdXJzb3ItPnZhbHVlKCk7CiAKICAgICAgICAg
ICAgIElEQk9iamVjdFN0b3JlOjpJbmRleEtleXMgaW5kZXhLZXlzOwotICAgICAgICAgICAgZ2Vu
ZXJhdGVJbmRleEtleXNGb3JWYWx1ZShtX2luZGV4TWV0YWRhdGEsIHZhbHVlLCAmaW5kZXhLZXlz
KTsKKyAgICAgICAgICAgIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUoMCwgbV9pbmRleE1ldGFk
YXRhLCB2YWx1ZSwgJmluZGV4S2V5cyk7CiAKICAgICAgICAgICAgIFZlY3RvcjxJREJPYmplY3RT
dG9yZTo6SW5kZXhLZXlzLCAxPiBpbmRleEtleXNMaXN0OwogICAgICAgICAgICAgaW5kZXhLZXlz
TGlzdC5hcHBlbmQoaW5kZXhLZXlzKTsKQEAgLTM0OSw2ICszNTAsNyBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG1fb2JqZWN0U3RvcmVCYWNr
ZW5kOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNh
Y3Rpb247CiAgICAgSURCSW5kZXhNZXRhZGF0YSBtX2luZGV4TWV0YWRhdGE7CisgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OwogfTsKIH0KIApAQCAtNDIyLDcgKzQyNCw3IEBA
IFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiAgICAgaW5kZXhSZXF1ZXN0LT5wcmV2ZW50UHJvcGFn
YXRpb24oKTsKIAogICAgIC8vIFRoaXMgaXMga2VwdCBhbGl2ZSBieSBiZWluZyB0aGUgc3VjY2Vz
cyBoYW5kbGVyIG9mIHRoZSByZXF1ZXN0LCB3aGljaCBpcyBpbiB0dXJuIGtlcHQgYWxpdmUgYnkg
dGhlIG93bmluZyB0cmFuc2FjdGlvbi4KLSAgICBSZWZQdHI8SW5kZXhQb3B1bGF0b3I+IGluZGV4
UG9wdWxhdG9yID0gSW5kZXhQb3B1bGF0b3I6OmNyZWF0ZShtX2JhY2tlbmQsIG1fdHJhbnNhY3Rp
b24tPmJhY2tlbmQoKSwgaW5kZXhSZXF1ZXN0LCBtZXRhZGF0YSk7CisgICAgUmVmUHRyPEluZGV4
UG9wdWxhdG9yPiBpbmRleFBvcHVsYXRvciA9IEluZGV4UG9wdWxhdG9yOjpjcmVhdGUobV9iYWNr
ZW5kLCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGluZGV4UmVxdWVzdCwgbWV0YWRhdGEsIGNv
bnRleHQpOwogICAgIGluZGV4UmVxdWVzdC0+c2V0T25zdWNjZXNzKGluZGV4UG9wdWxhdG9yKTsK
IAogICAgIHJldHVybiBpbmRleC5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IDE4NjBiZmM1OWUzY2EzODQyZjc1NjVh
ZGUxMDY0Y2UxYmY4M2MzYTguLjNmMWRmNzI4ZjA3Y2Q5OGQxZDQ4MjBmMWM4MDZhZGFmYTI4ZTIx
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
Y3BwCkBAIC0zNzAsMTAgKzM3MCwxMCBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwU2VyaWFsaXplZFNjcmlwdAogCiAgICAg
UmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlLZXk7CiAjaWZuZGVmIE5ERUJV
RwotICAgIFJlZlB0cjxJREJLZXk+IGV4cGVjdGVkS2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlw
dFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwga2V5UGF0aCk7CisgICAgUmVmUHRyPElEQktleT4gZXhw
ZWN0ZWRLZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgdmFsdWUsIGtleVBhdGgpOwogICAgIEFTU0VSVCghZXhwZWN0ZWRL
ZXkgfHwgZXhwZWN0ZWRLZXktPmlzRXF1YWwocHJpbWFyeUtleS5nZXQoKSkpOwogI2VuZGlmCi0g
ICAgYm9vbCBpbmplY3RlZCA9IGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShwcmltYXJ5S2V5
LCB2YWx1ZSwga2V5UGF0aCk7CisgICAgYm9vbCBpbmplY3RlZCA9IGluamVjdElEQktleUludG9T
Y3JpcHRWYWx1ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHByaW1hcnlLZXksIHZhbHVlLCBr
ZXlQYXRoKTsKICAgICBBU1NFUlRfVU5VU0VEKGluamVjdGVkLCBpbmplY3RlZCk7CiAgICAgb25T
dWNjZXNzSW50ZXJuYWwodmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCA1YmVjYjZhNjY4MWZkZjMyMjAzYzc2
MWE1YjAzYWY0ZDdmZjI4NDFlLi5jNWU1NmE3ZjRjNzViY2UxZDMyZWYzMWNmNTgzNjI4MWFlNWVm
ZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRp
bGl0aWVzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCiAKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgpAQCAtMzUs
NiArMzYsOCBAQAogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUg
IlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4SURCS2V5LmgiCisjaW5jbHVkZSAiV29ya2VyQ29u
dGV4dC5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgogI2luY2x1
ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDMsNiArNDYsMjggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1EZXB0aCA9IDIwMDA7CiAKK3Y4OjpI
YW5kbGU8djg6OkNvbnRleHQ+IGdldElEQlY4Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQoreworICAgIGlmIChjb250ZXh0KSB7CisgICAgICAgIGlmIChjb250ZXh0LT5p
c0RvY3VtZW50KCkpIHsKKyAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2Fz
dDxEb2N1bWVudCo+KGNvbnRleHQpLT5mcmFtZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKFY4
RE9NV2luZG93U2hlbGwqIGlzb2xhdGVkQ29udGV4dCA9IFY4RE9NV2luZG93U2hlbGw6OmdldEVu
dGVyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4
dD46Ok5ldyhpc29sYXRlZENvbnRleHQtPmNvbnRleHQoKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZyYW1lLT5zY3JpcHQoKS0+bWFpbldvcmxkQ29udGV4dCgpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjaWYgRU5BQkxFKFdPUktFUlMpCisg
ICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpIHsKKyAgICAgICAg
ICAgIGlmIChXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkqIHByb3h5ID0gc3RhdGljX2Nhc3Q8
V29ya2VyQ29udGV4dCo+KGNvbnRleHQpLT5zY3JpcHQoKS0+cHJveHkoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcHJveHktPmNvbnRleHQoKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmVuc3VyZUF1
eGlsaWFyeUNvbnRleHQoKTsKK30KKwogc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJ
REJLZXlGcm9tVmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBWZWN0b3I8djg6Okhh
bmRsZTx2ODo6QXJyYXk+ID4mIHN0YWNrKQogewogICAgIGlmICh2YWx1ZS0+SXNOdW1iZXIoKSAm
JiAhaXNuYW4odmFsdWUtPk51bWJlclZhbHVlKCkpKQpAQCAtMTgwLDkgKzIwNSw2IEBAIHN0YXRp
YyBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0
aChjb25zdCBTY3JpcHRWYWx1CiAgICAgSURCUGFyc2VLZXlQYXRoKGtleVBhdGgsIGtleVBhdGhF
bGVtZW50cywgZXJyb3IpOwogICAgIEFTU0VSVChlcnJvciA9PSBJREJLZXlQYXRoUGFyc2VFcnJv
ck5vbmUpOwogCi0gICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpDb250
ZXh0OjpTY29wZSBzY29wZShWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmVuc3VyZUF1eGls
aWFyeUNvbnRleHQoKSk7Ci0KICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhWYWx1ZSh2YWx1
ZS52OFZhbHVlKCkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OEtleShnZXROdGhWYWx1
ZU9uS2V5UGF0aCh2OFZhbHVlLCBrZXlQYXRoRWxlbWVudHMsIGtleVBhdGhFbGVtZW50cy5zaXpl
KCkpKTsKICAgICBpZiAodjhLZXkuSXNFbXB0eSgpKQpAQCAtMTkwLDEyICsyMTIsMTMgQEAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQ
YXRoKGNvbnN0IFNjcmlwdFZhbHUKICAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKHY4
S2V5KTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1
ZUFuZEtleVBhdGgoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBr
ZXlQYXRoKQorUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFu
ZEtleVBhdGgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCwgY29uc3QgU2Ny
aXB0VmFsdWUmIHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIElEQl9U
UkFDRSgiY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCIpOwogICAgIEFTU0VS
VCgha2V5UGF0aC5pc051bGwoKSk7CiAKLSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29w
ZShnZXRJREJWOENvbnRleHQoc2NyaXB0Q29udGV4dCkpOwogICAgIGlmIChrZXlQYXRoLnR5cGUo
KSA9PSBJREJLZXlQYXRoOjpBcnJheVR5cGUpIHsKICAgICAgICAgSURCS2V5OjpLZXlBcnJheSBy
ZXN1bHQ7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhcnJheSA9IGtleVBhdGguYXJy
YXkoKTsKQEAgLTIxMiwxOCArMjM1LDE3IEBAIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJL
ZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1CiAgICAg
cmV0dXJuIGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgodmFsdWUsIGtleVBh
dGguc3RyaW5nKCkpOwogfQogCi0vLyBGSVhNRTogVGhlIG9ubHkgcmVhc29uIHRoaXMgZXhpc3Rz
IGlzIGJlY2F1c2Ugd2UgbmVlZCBhIHY4OjpDb250ZXh0IGFuZCBzY29wZSBpbnNpZGUgYSB0aW1l
ci4gSXMgdGhlcmUgYSBiZXR0ZXIgLyBtb3JlIGdlbmVyYWwgd2F5IHRvIGRvIHRoaXM/CiBTY3Jp
cHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dENvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSkKIHsK
ICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3Bl
IGNvbnRleHRTY29wZSh0b1Y4Q29udGV4dChzY3JpcHRDb250ZXh0LCBVc2VDdXJyZW50V29ybGQp
KTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGdldElEQlY4Q29udGV4dChz
Y3JpcHRDb250ZXh0KSk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFs
aXplZFZhbHVlID0gcHJwVmFsdWU7CiAgICAgaWYgKHNlcmlhbGl6ZWRWYWx1ZSkKICAgICAgICAg
cmV0dXJuIFNjcmlwdFZhbHVlKHNlcmlhbGl6ZWRWYWx1ZS0+ZGVzZXJpYWxpemUoKSk7CiAgICAg
cmV0dXJuIFNjcmlwdFZhbHVlKHY4OjpOdWxsKCkpOwogfQogCi1ib29sIGluamVjdElEQktleUlu
dG9TY3JpcHRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUs
IGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCitib29sIGluamVjdElEQktleUludG9TY3JpcHRW
YWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0LCBQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgp
CiB7CiAgICAgSURCX1RSQUNFKCJpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUiKTsKIApAQCAt
MjM3LDcgKzI1OSw3IEBAIGJvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKFBhc3NSZWZQ
dHI8SURCS2V5PiBrZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpDb250ZXh0OjpT
Y29wZSBzY29wZShWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmVuc3VyZUF1eGlsaWFyeUNv
bnRleHQoKSk7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKGdldElEQlY4Q29udGV4dChz
Y3JpcHRDb250ZXh0KSk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhWYWx1ZSh2YWx1
ZS52OFZhbHVlKCkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwYXJlbnQoZW5zdXJlTnRo
VmFsdWVPbktleVBhdGgodjhWYWx1ZSwga2V5UGF0aEVsZW1lbnRzLCBrZXlQYXRoRWxlbWVudHMu
c2l6ZSgpIC0gMSkpOwpAQCAtMjY5LDcgKzI5MSw3IEBAIGJvb2wgY2FuSW5qZWN0SURCS2V5SW50
b1NjcmlwdFZhbHVlKGNvbnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSwgY29uc3QgSURCS2V5
CiBTY3JpcHRWYWx1ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdENvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkpCiB7CiAgICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUo
dG9WOENvbnRleHQoc2NyaXB0Q29udGV4dCwgVXNlQ3VycmVudFdvcmxkKSk7CisgICAgdjg6OkNv
bnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShnZXRJREJWOENvbnRleHQoc2NyaXB0Q29udGV4dCkp
OwogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUodG9WOChrZXkuZ2V0KCkpKTsK
ICAgICByZXR1cm4gU2NyaXB0VmFsdWUodjhWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgKaW5kZXggZjc2NjA1NmRmNjZkMmQ3MDhj
ZTJiYmMyYzlmZTZhNmNmMTRlNWJiYS4uMTYyZjNlYTlhYzZjMzk4ZWNhYjA3OGU3MGQyZDMyMWMz
OTdhZDQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGlu
Z1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdV
dGlsaXRpZXMuaApAQCAtNDAsOCArNDAsOCBAQCBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7
CiAKIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tVmFsdWUodjg6OkhhbmRsZTx2
ODo6VmFsdWU+KTsKIAotYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoUGFzc1JlZlB0
cjxJREJLZXk+LCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKLVBhc3NSZWZQdHI8
SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKGNvbnN0IFNjcmlw
dFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOworYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0
VmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgU2NyaXB0
VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CitQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURC
S2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CiBib29sIGNhbkluamVjdElEQktl
eUludG9TY3JpcHRWYWx1ZShjb25zdCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsK
IFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiBTY3JpcHRWYWx1ZSBpZGJLZXlU
b1NjcmlwdFZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleT4p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKaW5kZXggN2MzNWQ0NWI0
NDg4NTBjMGNlNmNlZjdkMjg4MWNlYjM0MWVmZWFkMS4uZTc3N2M3OTAzYjRkNjc4Zjc1OTcyYzc5
NTkxMWE4MTk5MGMwMDI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
Y3BwCkBAIC0zMTgsNiArMzE4LDI3IEBAIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdG9WOENvbnRl
eHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgV29ybGRDCiAgICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsKIH0KIAordjg6OkxvY2FsPHY4OjpDb250ZXh0
PiB0b1Y4Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXb3JsZFRvVXNl
IHdvcmxkVG9Vc2UpCit7CisgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkgeworICAgICAg
ICBBU1NFUlQod29ybGRUb1VzZSAhPSBVc2VXb3JrZXJXb3JsZCk7CisgICAgICAgIGlmIChGcmFt
ZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5mcmFtZSgpKSB7Cisg
ICAgICAgICAgICBpZiAod29ybGRUb1VzZSA9PSBVc2VDdXJyZW50V29ybGQpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoVjhET01XaW5kb3dTaGVsbCogaXNvbGF0ZWRDb250ZXh0ID0gVjhET01XaW5k
b3dTaGVsbDo6Z2V0RW50ZXJlZCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdjg6Okxv
Y2FsPHY4OjpDb250ZXh0Pjo6TmV3KGlzb2xhdGVkQ29udGV4dC0+Y29udGV4dCgpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmcmFtZS0+c2NyaXB0KCktPm1haW5Xb3JsZENv
bnRleHQoKTsKKyAgICAgICAgfQorI2lmIEVOQUJMRShXT1JLRVJTKQorICAgIH0gZWxzZSBpZiAo
Y29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpIHsKKyAgICAgICAgQVNTRVJUKHdvcmxkVG9Vc2Ug
IT0gVXNlTWFpbldvcmxkKTsKKyAgICAgICAgaWYgKFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94
eSogcHJveHkgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oY29udGV4dCktPnNjcmlwdCgp
LT5wcm94eSgpKQorICAgICAgICAgICAgcmV0dXJuIHByb3h5LT5jb250ZXh0KCk7CisjZW5kaWYK
KyAgICB9CisgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsKK30KKwogVjhQZXJD
b250ZXh0RGF0YSogcGVyQ29udGV4dERhdGFGb3JDdXJyZW50V29ybGQoRnJhbWUqIGZyYW1lKQog
ewogICAgIFY4RE9NV2luZG93U2hlbGwqIGlzb2xhdGVkU2hlbGw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDE5YmE4YmYyZDhhYTY5OTcxM2IyZTgwN2UyZTZiZTRj
YjJlMjQ1ZDguLjY1ZmNjNWMyZTBlMjExM2UxNTEyNTQ3MzY0ODdmY2JmMWQzNDBjYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j
bHVkZSAiVjhTdHJpbmdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlY4VGhyb3dFeGNlcHRpb24uaCIK
ICNpbmNsdWRlICJWOFZhbHVlQ2FjaGUuaCIKKyNpbmNsdWRlICJXb3JsZENvbnRleHRIYW5kbGUu
aCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KICNpbmNsdWRlIDx2OC5oPgpAQCAtNTEsNyArNTIsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBjbGFzcyBET01TdHJpbmdMaXN0OwogICAgIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7Ci0gICAgY2xhc3MgV29ybGRDb250ZXh0SGFuZGxlOwogCiAgICAgY29u
c3QgaW50IGtNYXhSZWN1cnNpb25EZXB0aCA9IDIyOwogCkBAIC0zNzQsNiArMzc0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgLy8gUmV0dXJucyB0aGUgY29udGV4dCBhc3NvY2lhdGVk
IHdpdGggYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgogICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4
dD4gdG9WOENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFdvcmxkQ29udGV4
dEhhbmRsZSYpOworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdG9WOENvbnRleHQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFdvcmxkVG9Vc2UpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgZnJh
bWUgb2JqZWN0IG9mIHRoZSB3aW5kb3cgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aAogICAgIC8vIGEg
Y29udGV4dCwgaWYgdGhlIHdpbmRvdyBpcyBjdXJyZW50bHkgYmVpbmcgZGlzcGxheWVkIGluIHRo
ZSBGcmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29u
dGV4dEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFu
ZGxlLmgKaW5kZXggNzU2NWQxNWNkMzIzMjVhYWVhZjEzMTg0N2Y1MDE3NzdjMzU2NTk1Yi4uOGRk
NmIzYWQ3NzI3OTQzYTM3MTc5OTBkNzdhMDczNzUwZDNkYzU1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
ZW51bSBXb3JsZFRvVXNlIHsgVXNlTWFpbldvcmxkLCBVc2VDdXJyZW50V29ybGQsIFVzZVdvcmtl
cldvcmxkIH07CiAKIGNsYXNzIFdvcmxkQ29udGV4dEhhbmRsZSB7CiBwdWJsaWM6Ci0gICAgV29y
bGRDb250ZXh0SGFuZGxlKFdvcmxkVG9Vc2UpOworICAgIGV4cGxpY2l0IFdvcmxkQ29udGV4dEhh
bmRsZShXb3JsZFRvVXNlKTsKICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGFkanVzdGVkQ29u
dGV4dChTY3JpcHRDb250cm9sbGVyKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3Bw
CmluZGV4IDQ2NzEwZTc0NTY4YTc0ZmFjNWZlNWY1MDc5M2FjMmM5YTljMmZiMGYuLjIzZjU0MGUy
NzA0MDBkNWJmN2JjYWRmMGQzNzZmNTExMTQ1MDhhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCkBAIC0y
NCwxMSArMjQsMTggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMu
aCIKICNpbmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSURCS2V5Lmgi
CiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1
ZGUgIlY4UGVySXNvbGF0ZURhdGEuaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgorI2luY2x1
ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVkZSAiV2Vi
Vmlldy5oIgogCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CkBAIC0zNiw5MiArNDMsMTA2IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFt
ZXNwYWNlIHsKIAotUGFzc1JlZlB0cjxJREJLZXk+IGNoZWNrS2V5RnJvbVZhbHVlQW5kS2V5UGF0
aEludGVybmFsKGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
KQorUGFzc1JlZlB0cjxJREJLZXk+IGNoZWNrS2V5RnJvbVZhbHVlQW5kS2V5UGF0aEludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewogICAgIElEQktleVBhdGggaWRiS2V5UGF0aChr
ZXlQYXRoKTsKICAgICBFWFBFQ1RfVFJVRShpZGJLZXlQYXRoLmlzVmFsaWQoKSk7CiAgICAgCi0g
ICAgcmV0dXJuIGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgodmFsdWUsIGlk
YktleVBhdGgpOworICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQ
YXRoKGNvbnRleHQsIHZhbHVlLCBpZGJLZXlQYXRoKTsKIH0KIAotdm9pZCBjaGVja0tleVBhdGhO
dWxsVmFsdWUoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgp
Cit2b2lkIGNoZWNrS2V5UGF0aE51bGxWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsK
LSAgICBSZWZQdHI8SURCS2V5PiBpZGJLZXkgPSBjaGVja0tleUZyb21WYWx1ZUFuZEtleVBhdGhJ
bnRlcm5hbCh2YWx1ZSwga2V5UGF0aCk7CisgICAgUmVmUHRyPElEQktleT4gaWRiS2V5ID0gY2hl
Y2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwoY29udGV4dCwgdmFsdWUsIGtleVBhdGgp
OwogICAgIEFTU0VSVF9GQUxTRShpZGJLZXkuZ2V0KCkpOwogfQogCi1ib29sIGluamVjdEtleShQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCkKK2Jvb2wgaW5qZWN0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoKQogewogICAgIElEQktleVBhdGggaWRiS2V5UGF0aChrZXlQYXRoKTsKICAgICBF
WFBFQ1RfVFJVRShpZGJLZXlQYXRoLmlzVmFsaWQoKSk7Ci0gICAgcmV0dXJuIGluamVjdElEQktl
eUludG9TY3JpcHRWYWx1ZShrZXksIHZhbHVlLCBpZGJLZXlQYXRoKTsKKyAgICByZXR1cm4gaW5q
ZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKGNvbnRleHQsIGtleSwgdmFsdWUsIGlkYktleVBhdGgp
OwogfQogCi12b2lkIGNoZWNrSW5qZWN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFNj
cmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQordm9pZCBjaGVja0luamVj
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4g
cHJwS2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKICAg
ICBSZWZQdHI8SURCS2V5PiBrZXkgPSBwcnBLZXk7Ci0gICAgYm9vbCByZXN1bHQgPSBpbmplY3RL
ZXkoa2V5LCB2YWx1ZSwga2V5UGF0aCk7CisgICAgYm9vbCByZXN1bHQgPSBpbmplY3RLZXkoY29u
dGV4dCwga2V5LCB2YWx1ZSwga2V5UGF0aCk7CiAgICAgQVNTRVJUX1RSVUUocmVzdWx0KTsKLSAg
ICBSZWZQdHI8SURCS2V5PiBleHRyYWN0ZWRLZXkgPSBjaGVja0tleUZyb21WYWx1ZUFuZEtleVBh
dGhJbnRlcm5hbCh2YWx1ZSwga2V5UGF0aCk7CisgICAgUmVmUHRyPElEQktleT4gZXh0cmFjdGVk
S2V5ID0gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwoY29udGV4dCwgdmFsdWUs
IGtleVBhdGgpOwogICAgIEVYUEVDVF9UUlVFKGtleS0+aXNFcXVhbChleHRyYWN0ZWRLZXkuZ2V0
KCkpKTsKIH0KIAotdm9pZCBjaGVja0luamVjdGlvbkZhaWxzKFBhc3NSZWZQdHI8SURCS2V5PiBr
ZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQordm9pZCBjaGVj
a0luamVjdGlvbkZhaWxzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQ
dHI8SURCS2V5PiBrZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
KQogewotICAgIEVYUEVDVF9GQUxTRShpbmplY3RLZXkoa2V5LCB2YWx1ZSwga2V5UGF0aCkpOwor
ICAgIEVYUEVDVF9GQUxTRShpbmplY3RLZXkoY29udGV4dCwga2V5LCB2YWx1ZSwga2V5UGF0aCkp
OwogfQogCi12b2lkIGNoZWNrS2V5UGF0aFN0cmluZ1ZhbHVlKGNvbnN0IFNjcmlwdFZhbHVlJiB2
YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkKQordm9p
ZCBjaGVja0tleVBhdGhTdHJpbmdWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgY29uc3Qg
U3RyaW5nJiBleHBlY3RlZCkKIHsKLSAgICBSZWZQdHI8SURCS2V5PiBpZGJLZXkgPSBjaGVja0tl
eUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbCh2YWx1ZSwga2V5UGF0aCk7CisgICAgUmVmUHRy
PElEQktleT4gaWRiS2V5ID0gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwoY29u
dGV4dCwgdmFsdWUsIGtleVBhdGgpOwogICAgIEFTU0VSVF9UUlVFKGlkYktleS5nZXQoKSk7CiAg
ICAgQVNTRVJUX0VRKElEQktleTo6U3RyaW5nVHlwZSwgaWRiS2V5LT50eXBlKCkpOwogICAgIEFT
U0VSVF9UUlVFKGV4cGVjdGVkID09IGlkYktleS0+c3RyaW5nKCkpOwogfQogCi12b2lkIGNoZWNr
S2V5UGF0aE51bWJlclZhbHVlKGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoLCBpbnQgZXhwZWN0ZWQpCit2b2lkIGNoZWNrS2V5UGF0aE51bWJlclZhbHVlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBpbnQgZXhwZWN0ZWQpCiB7Ci0gICAgUmVmUHRyPElEQktl
eT4gaWRiS2V5ID0gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwodmFsdWUsIGtl
eVBhdGgpOworICAgIFJlZlB0cjxJREJLZXk+IGlkYktleSA9IGNoZWNrS2V5RnJvbVZhbHVlQW5k
S2V5UGF0aEludGVybmFsKGNvbnRleHQsIHZhbHVlLCBrZXlQYXRoKTsKICAgICBBU1NFUlRfVFJV
RShpZGJLZXkuZ2V0KCkpOwogICAgIEFTU0VSVF9FUShJREJLZXk6Ok51bWJlclR5cGUsIGlkYktl
eS0+dHlwZSgpKTsKICAgICBBU1NFUlRfVFJVRShleHBlY3RlZCA9PSBpZGJLZXktPm51bWJlcigp
KTsKIH0KIAorc3RhdGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKQoreworICAgIHN0YXRpYyBXZWJWaWV3KiB3ZWJWaWV3OworICAgIGlmICghd2ViVmll
dykgeworICAgICAgICB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0Fu
ZExvYWQoImFib3V0OmJsYW5rIik7CisgICAgICAgIHdlYlZpZXctPnNldEZvY3VzKHRydWUpOwor
ICAgIH0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4od2ViVmlldy0+bWFp
bkZyYW1lKCkpLT5mcmFtZSgpLT5kb2N1bWVudCgpOworfQorCiBURVNUKElEQktleUZyb21WYWx1
ZUFuZEtleVBhdGhUZXN0LCBUb3BMZXZlbFByb3BlcnR5U3RyaW5nVmFsdWUpCiB7CisgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
ICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3Bl
IHNjb3BlKFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+ZW5zdXJlQXV4aWxpYXJ5Q29udGV4
dCgpKTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodG9WOENvbnRleHQoY29udGV4dCwg
VXNlQ3VycmVudFdvcmxkKSk7CiAKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0g
djg6Ok9iamVjdDo6TmV3KCk7CiAgICAgb2JqZWN0LT5TZXQodjg6OlN0cmluZzo6TmV3KCJmb28i
KSwgdjg6OlN0cmluZzo6TmV3KCJ6b28iKSk7CiAKICAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1
ZShvYmplY3QpOwogCi0gICAgY2hlY2tLZXlQYXRoU3RyaW5nVmFsdWUoc2NyaXB0VmFsdWUsICJm
b28iLCAiem9vIik7Ci0gICAgY2hlY2tLZXlQYXRoTnVsbFZhbHVlKHNjcmlwdFZhbHVlLCAiYmFy
Iik7CisgICAgY2hlY2tLZXlQYXRoU3RyaW5nVmFsdWUoY29udGV4dCwgc2NyaXB0VmFsdWUsICJm
b28iLCAiem9vIik7CisgICAgY2hlY2tLZXlQYXRoTnVsbFZhbHVlKGNvbnRleHQsIHNjcmlwdFZh
bHVlLCAiYmFyIik7CiB9CiAKIFRFU1QoSURCS2V5RnJvbVZhbHVlQW5kS2V5UGF0aFRlc3QsIFRv
cExldmVsUHJvcGVydHlOdW1iZXJWYWx1ZSkKIHsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoVjhQZXJJc29sYXRl
RGF0YTo6Y3VycmVudCgpLT5lbnN1cmVBdXhpbGlhcnlDb250ZXh0KCkpOworICAgIHY4OjpDb250
ZXh0OjpTY29wZSBzY29wZSh0b1Y4Q29udGV4dChjb250ZXh0LCBVc2VDdXJyZW50V29ybGQpKTsK
IAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6T2JqZWN0OjpOZXcoKTsK
ICAgICBvYmplY3QtPlNldCh2ODo6U3RyaW5nOjpOZXcoImZvbyIpLCB2ODo6TnVtYmVyOjpOZXco
NDU2KSk7CiAKICAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZShvYmplY3QpOwogCi0gICAgY2hl
Y2tLZXlQYXRoTnVtYmVyVmFsdWUoc2NyaXB0VmFsdWUsICJmb28iLCA0NTYpOwotICAgIGNoZWNr
S2V5UGF0aE51bGxWYWx1ZShzY3JpcHRWYWx1ZSwgImJhciIpOworICAgIGNoZWNrS2V5UGF0aE51
bWJlclZhbHVlKGNvbnRleHQsIHNjcmlwdFZhbHVlLCAiZm9vIiwgNDU2KTsKKyAgICBjaGVja0tl
eVBhdGhOdWxsVmFsdWUoY29udGV4dCwgc2NyaXB0VmFsdWUsICJiYXIiKTsKIH0KIAogVEVTVChJ
REJLZXlGcm9tVmFsdWVBbmRLZXlQYXRoVGVzdCwgU3ViUHJvcGVydHkpCiB7CisgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAg
ICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNj
b3BlKFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+ZW5zdXJlQXV4aWxpYXJ5Q29udGV4dCgp
KTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodG9WOENvbnRleHQoY29udGV4dCwgVXNl
Q3VycmVudFdvcmxkKSk7CiAKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6
Ok9iamVjdDo6TmV3KCk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHN1YlByb3BlcnR5ID0g
djg6Ok9iamVjdDo6TmV3KCk7CkBAIC0xMzAsMjkgKzE1MSwzMSBAQCBURVNUKElEQktleUZyb21W
YWx1ZUFuZEtleVBhdGhUZXN0LCBTdWJQcm9wZXJ0eSkKIAogICAgIFNjcmlwdFZhbHVlIHNjcmlw
dFZhbHVlKG9iamVjdCk7CiAKLSAgICBjaGVja0tleVBhdGhTdHJpbmdWYWx1ZShzY3JpcHRWYWx1
ZSwgImZvby5iYXIiLCAiemVlIik7Ci0gICAgY2hlY2tLZXlQYXRoTnVsbFZhbHVlKHNjcmlwdFZh
bHVlLCAiYmFyIik7CisgICAgY2hlY2tLZXlQYXRoU3RyaW5nVmFsdWUoY29udGV4dCwgc2NyaXB0
VmFsdWUsICJmb28uYmFyIiwgInplZSIpOworICAgIGNoZWNrS2V5UGF0aE51bGxWYWx1ZShjb250
ZXh0LCBzY3JpcHRWYWx1ZSwgImJhciIpOwogfQogCiBURVNUKEluamVjdElEQktleVRlc3QsIFRv
cExldmVsUHJvcGVydHlTdHJpbmdWYWx1ZSkKIHsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoVjhQZXJJc29sYXRl
RGF0YTo6Y3VycmVudCgpLT5lbnN1cmVBdXhpbGlhcnlDb250ZXh0KCkpOworICAgIHY4OjpDb250
ZXh0OjpTY29wZSBzY29wZSh0b1Y4Q29udGV4dChjb250ZXh0LCBVc2VDdXJyZW50V29ybGQpKTsK
IAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6T2JqZWN0OjpOZXcoKTsK
ICAgICBvYmplY3QtPlNldCh2ODo6U3RyaW5nOjpOZXcoImZvbyIpLCB2ODo6U3RyaW5nOjpOZXco
InpvbyIpKTsKIAogICAgIFNjcmlwdFZhbHVlIGZvb3pvbyhvYmplY3QpOwotICAgIGNoZWNrSW5q
ZWN0aW9uKElEQktleTo6Y3JlYXRlU3RyaW5nKCJteU5ld0tleSIpLCBmb296b28sICJiYXIiKTsK
LSAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZU51bWJlcigxMjM0KSwgZm9vem9vLCAi
YmFyIik7CisgICAgY2hlY2tJbmplY3Rpb24oY29udGV4dCwgSURCS2V5OjpjcmVhdGVTdHJpbmco
Im15TmV3S2V5IiksIGZvb3pvbywgImJhciIpOworICAgIGNoZWNrSW5qZWN0aW9uKGNvbnRleHQs
IElEQktleTo6Y3JlYXRlTnVtYmVyKDEyMzQpLCBmb296b28sICJiYXIiKTsKIAotICAgIGNoZWNr
SW5qZWN0aW9uRmFpbHMoSURCS2V5OjpjcmVhdGVTdHJpbmcoImtleSIpLCBmb296b28sICJmb28u
YmFyIik7CisgICAgY2hlY2tJbmplY3Rpb25GYWlscyhjb250ZXh0LCBJREJLZXk6OmNyZWF0ZVN0
cmluZygia2V5IiksIGZvb3pvbywgImZvby5iYXIiKTsKIH0KIAogVEVTVChJbmplY3RJREJLZXlU
ZXN0LCBTdWJQcm9wZXJ0eSkKIHsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVT
Y29wZTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoVjhQZXJJc29sYXRlRGF0YTo6Y3Vy
cmVudCgpLT5lbnN1cmVBdXhpbGlhcnlDb250ZXh0KCkpOworICAgIHY4OjpDb250ZXh0OjpTY29w
ZSBzY29wZSh0b1Y4Q29udGV4dChjb250ZXh0LCBVc2VDdXJyZW50V29ybGQpKTsKIAogICAgIHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6T2JqZWN0OjpOZXcoKTsKICAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gc3ViUHJvcGVydHkgPSB2ODo6T2JqZWN0OjpOZXcoKTsKQEAgLTE2
MCwxNSArMTgzLDE1IEBAIFRFU1QoSW5qZWN0SURCS2V5VGVzdCwgU3ViUHJvcGVydHkpCiAgICAg
b2JqZWN0LT5TZXQodjg6OlN0cmluZzo6TmV3KCJmb28iKSwgc3ViUHJvcGVydHkpOwogCiAgICAg
U2NyaXB0VmFsdWUgc2NyaXB0T2JqZWN0KG9iamVjdCk7Ci0gICAgY2hlY2tJbmplY3Rpb24oSURC
S2V5OjpjcmVhdGVTdHJpbmcoIm15TmV3S2V5IiksIHNjcmlwdE9iamVjdCwgImZvby5iYXoiKTsK
LSAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZU51bWJlcig3ODkpLCBzY3JpcHRPYmpl
Y3QsICJmb28uYmF6Iik7Ci0gICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVEYXRlKDQ1
NjcpLCBzY3JpcHRPYmplY3QsICJmb28uYmF6Iik7Ci0gICAgY2hlY2tJbmplY3Rpb24oSURCS2V5
OjpjcmVhdGVEYXRlKDQ1NjcpLCBzY3JpcHRPYmplY3QsICJiYXIiKTsKLSAgICBjaGVja0luamVj
dGlvbihJREJLZXk6OmNyZWF0ZUFycmF5KElEQktleTo6S2V5QXJyYXkoKSksIHNjcmlwdE9iamVj
dCwgImZvby5iYXoiKTsKLSAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZUFycmF5KElE
QktleTo6S2V5QXJyYXkoKSksIHNjcmlwdE9iamVjdCwgImJhciIpOwotCi0gICAgY2hlY2tJbmpl
Y3Rpb25GYWlscyhJREJLZXk6OmNyZWF0ZVN0cmluZygiem9vIiksIHNjcmlwdE9iamVjdCwgImZv
by5iYXIuYmF6Iik7Ci0gICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVTdHJpbmcoInpv
byIpLCBzY3JpcHRPYmplY3QsICJmb28ueHl6LmZvbyIpOworICAgIGNoZWNrSW5qZWN0aW9uKGNv
bnRleHQsIElEQktleTo6Y3JlYXRlU3RyaW5nKCJteU5ld0tleSIpLCBzY3JpcHRPYmplY3QsICJm
b28uYmF6Iik7CisgICAgY2hlY2tJbmplY3Rpb24oY29udGV4dCwgSURCS2V5OjpjcmVhdGVOdW1i
ZXIoNzg5KSwgc2NyaXB0T2JqZWN0LCAiZm9vLmJheiIpOworICAgIGNoZWNrSW5qZWN0aW9uKGNv
bnRleHQsIElEQktleTo6Y3JlYXRlRGF0ZSg0NTY3KSwgc2NyaXB0T2JqZWN0LCAiZm9vLmJheiIp
OworICAgIGNoZWNrSW5qZWN0aW9uKGNvbnRleHQsIElEQktleTo6Y3JlYXRlRGF0ZSg0NTY3KSwg
c2NyaXB0T2JqZWN0LCAiYmFyIik7CisgICAgY2hlY2tJbmplY3Rpb24oY29udGV4dCwgSURCS2V5
OjpjcmVhdGVBcnJheShJREJLZXk6OktleUFycmF5KCkpLCBzY3JpcHRPYmplY3QsICJmb28uYmF6
Iik7CisgICAgY2hlY2tJbmplY3Rpb24oY29udGV4dCwgSURCS2V5OjpjcmVhdGVBcnJheShJREJL
ZXk6OktleUFycmF5KCkpLCBzY3JpcHRPYmplY3QsICJiYXIiKTsKKworICAgIGNoZWNrSW5qZWN0
aW9uRmFpbHMoY29udGV4dCwgSURCS2V5OjpjcmVhdGVTdHJpbmcoInpvbyIpLCBzY3JpcHRPYmpl
Y3QsICJmb28uYmFyLmJheiIpOworICAgIGNoZWNrSW5qZWN0aW9uKGNvbnRleHQsIElEQktleTo6
Y3JlYXRlU3RyaW5nKCJ6b28iKSwgc2NyaXB0T2JqZWN0LCAiZm9vLnh5ei5mb28iKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171192</attachid>
            <date>2012-10-29 03:35:16 -0700</date>
            <delta_ts>2012-10-30 06:45:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99975-20121029113342.patch</filename>
            <type>text/plain</type>
            <size>15373</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ2Y2Q0ODlmYTUyYWIx
NjQxOGY1MjYzYjYyY2QyYTU2MTRhMDQ2Mi4uMTQ3NjMwMjYzYzcwY2IyYmMwZTAzNjc3YzNmNTNj
N2UxNjI1ODkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEwLTI5ICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBlbnN1cmVBdXhp
bGlhcnlDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05OTk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZWQgYXV4aWxsaWFyeUNvbnRleHQgYXMgdXNlIGlmIGl0IGlzIHByb2JsZW1hdGlj
IGluIElEQi4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFs
aXR5LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6c2V0VmFsdWVSZWFkeSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmg6CisgICAgICAgIChJREJDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlSW5kZXhLZXlz
Rm9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnB1dCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlEQktl
eUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6ZGVzZXJpYWxp
emVJREJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppbmplY3RJREJLZXlJbnRvU2NyaXB0VmFs
dWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b1Y4Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oOgorCiAyMDEyLTEwLTI4ICBL
ZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWUgTG9jYWxp
emVyLntjcHAsaH0gdG8gUGxhdGZvcm1Mb2NhbGUue2NwcCxofQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCBlMzE0YTZiMThmYTUzNGQ2MWM3OTM3YjYzYTIyYjAwNGJlZWFhZTEzLi4yZGM0
NGY1NTZiMjEyZjUwNTdmNGVkYjgyYmFmM2U4NzlhNmJkMjU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTEwLTI5ICBEYW4gQ2FybmV5ICA8ZGNhcm5l
eUBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBlbnN1cmVBdXhpbGlhcnlDb250ZXh0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTk3NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGVz
dHMgdG8gdXNlIGNvcnJlY3QgdjggY29udGV4dC4KKworICAgICAgICAqIHRlc3RzL0lEQkJpbmRp
bmdVdGlsaXRpZXNUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y2hlY2tLZXlGcm9tVmFsdWVB
bmRLZXlQYXRoSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpjaGVja0tleVBhdGhOdWxsVmFs
dWUpOgorICAgICAgICAoV2ViS2l0OjppbmplY3RLZXkpOgorICAgICAgICAoV2ViS2l0OjpjaGVj
a0luamVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrSW5qZWN0aW9uRmFpbHMpOgorICAg
ICAgICAoV2ViS2l0OjpjaGVja0tleVBhdGhTdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6
OmNoZWNrS2V5UGF0aE51bWJlclZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpURVNUKToK
KwogMjAxMi0xMC0yOSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCAxODYwYmZjNTllM2NhMzg0MmY3NTY1YWRl
MTA2NGNlMWJmODNjM2E4Li4yYzJkMTJkM2YzODlkM2U1ZWJmYjMzY2E3MzYxZGE5M2JkZTJjMzlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNw
cApAQCAtNDIsNiArNDIsOSBAQAogI2luY2x1ZGUgIklEQlRyYWNpbmcuaCIKICNpbmNsdWRlICJJ
REJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
ZiBVU0UoVjgpCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC03Niw2ICs3OSw5IEBAIElEQlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjCiAgICAg
LCBtX3BlbmRpbmdDdXJzb3IoMCkKICAgICAsIG1fZGlkRmlyZVVwZ3JhZGVOZWVkZWRFdmVudChm
YWxzZSkKICAgICAsIG1fcHJldmVudFByb3BhZ2F0aW9uKGZhbHNlKQorI2lmIFVTRShWOCkKKyAg
ICAsIG1fd29ybGRDb250ZXh0SGFuZGxlKFVzZUN1cnJlbnRXb3JsZCkKKyNlbmRpZgogewogICAg
IGlmIChtX3RyYW5zYWN0aW9uKSB7CiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPnJlZ2lzdGVyUmVx
dWVzdCh0aGlzKTsKQEAgLTI4NCw2ICsyOTAsMTQgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBQYXNzUmUK
ICAgICBpZiAoIXNob3VsZEVucXVldWVFdmVudCgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBV
U0UoVjgpCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpMb2NhbDx2
ODo6Q29udGV4dD4gY29udGV4dCA9IHRvVjhDb250ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgbV93b3JsZENvbnRleHRIYW5kbGUpOworICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRl
eHQpOworI2VuZGlmCisKICAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFs
dWUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzZXJpYWxpemVkVmFsdWUpOwogICAgIEFTU0VS
VChtX2N1cnNvclR5cGUgIT0gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6SW52YWxpZEN1cnNv
clR5cGUpOwogICAgIFJlZlB0cjxJREJDdXJzb3I+IGN1cnNvcjsKQEAgLTM0MCw2ICszNTQsMTQg
QEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWwKICAgICBpZiAoIXNob3VsZEVucXVldWVFdmVudCgp
KQogICAgICAgICByZXR1cm47CiAKKyNpZiBVU0UoVjgpCisgICAgdjg6OkhhbmRsZVNjb3BlIGhh
bmRsZVNjb3BlOworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHRvVjhDb250
ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV93b3JsZENvbnRleHRIYW5kbGUpOworICAg
IGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICB2ODo6Q29udGV4
dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOworI2VuZGlmCisKICAgICBTY3JpcHRWYWx1
ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBz
ZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogICAgIG9uU3VjY2Vzc0ludGVybmFsKHZhbHVlKTsKIH0K
QEAgLTM2Myw2ICszODUsMTQgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFNlcmlhbGl6ZWRTY3JpcHQKICAgICBpZiAoIXNo
b3VsZEVucXVldWVFdmVudCgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBVU0UoVjgpCisgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4g
Y29udGV4dCA9IHRvVjhDb250ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV93b3JsZENv
bnRleHRIYW5kbGUpOworICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgQ1JBU0go
KTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOworI2VuZGlm
CisKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKGtleVBhdGggPT0gZWZmZWN0aXZlT2JqZWN0
U3RvcmUobV9zb3VyY2UpLT5rZXlQYXRoKCkpOwogI2VuZGlmCkBAIC00MDQsNiArNDM0LDE0IEBA
IHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NS
ZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5CiAgICAgaWYgKCFzaG91bGRFbnF1ZXVlRXZlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCisjaWYgVVNFKFY4KQorICAgIHY4OjpIYW5kbGVTY29wZSBoYW5k
bGVTY29wZTsKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB0b1Y4Q29udGV4
dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29ybGRDb250ZXh0SGFuZGxlKTsKKyAgICBp
ZiAoY29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIENSQVNIKCk7CisgICAgdjg6OkNvbnRleHQ6
OlNjb3BlIGNvbnRleHRTY29wZShjb250ZXh0KTsKKyNlbmRpZgorCiAgICAgU2NyaXB0VmFsdWUg
dmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2Vy
aWFsaXplZFZhbHVlKTsKICAgICBBU1NFUlQobV9wZW5kaW5nQ3Vyc29yKTsKICAgICBzZXRSZXN1
bHRDdXJzb3IobV9wZW5kaW5nQ3Vyc29yLnJlbGVhc2UoKSwga2V5LCBwcmltYXJ5S2V5LCB2YWx1
ZSk7CkBAIC00NDksNiArNDg3LDE1IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICBBU1NFUlQoZXZlbnQtPnRhcmdldCgpID09IHRoaXMpOwogICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UobV9yZWFkeVN0YXRlIDwgRE9ORSwgIldoZW4gZGlzcGF0Y2hpbmcgZXZlbnQg
JXMsIG1fcmVhZHlTdGF0ZSA8IERPTkUoJWQpLCB3YXMgJWQiLCBldmVudC0+dHlwZSgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIERPTkUsIG1fcmVhZHlTdGF0ZSk7CisKKyNpZiBVU0UoVjgpCisg
ICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4
dD4gY29udGV4dCA9IHRvVjhDb250ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV93b3Js
ZENvbnRleHRIYW5kbGUpOworICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgQ1JB
U0goKTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOworI2Vu
ZGlmCisKICAgICBpZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50
KQogICAgICAgICBtX3JlYWR5U3RhdGUgPSBET05FOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKaW5kZXggODk5NzgzODUzZDk0M2JmOTFmYWQxYTMz
YjY0MjI0NWYyZTA1NDNjMS4uZTAzNTljZDM5OWY2ODUxOGMwMjlhZjRjMDFkNDEwMDk1M2ZjMzgx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaApA
QCAtNDIsNiArNDIsOSBAQAogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklE
QkN1cnNvci5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpZiBV
U0UoVjgpCisjaW5jbHVkZSAiV29ybGRDb250ZXh0SGFuZGxlLmgiCisjZW5kaWYKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC0xNTUsNiArMTU4LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
cHJldmVudFByb3BhZ2F0aW9uOwogCiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXRE
YXRhOworI2lmIFVTRShWOCkKKyAgICBXb3JsZENvbnRleHRIYW5kbGUgbV93b3JsZENvbnRleHRI
YW5kbGU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggNWJl
Y2I2YTY2ODFmZGYzMjIwM2M3NjFhNWIwM2FmNGQ3ZmYyODQxZS4uMDFlN2UzN2UxMjM1NTg5N2Ew
M2Q4ZDNkNTY0NTRiMTBhYzE5MjEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTE3OSwxMCArMTc5LDkgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRo
KGNvbnN0IFNjcmlwdFZhbHUKICAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBlcnJvcjsKICAgICBJ
REJQYXJzZUtleVBhdGgoa2V5UGF0aCwga2V5UGF0aEVsZW1lbnRzLCBlcnJvcik7CiAgICAgQVNT
RVJUKGVycm9yID09IElEQktleVBhdGhQYXJzZUVycm9yTm9uZSk7CisgICAgQVNTRVJUKHY4OjpD
b250ZXh0OjpJbkNvbnRleHQoKSk7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7
Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQo
KS0+ZW5zdXJlQXV4aWxpYXJ5Q29udGV4dCgpKTsKLQogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2OFZhbHVlKHZhbHVlLnY4VmFsdWUoKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4
S2V5KGdldE50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGhFbGVtZW50cywga2V5UGF0
aEVsZW1lbnRzLnNpemUoKSkpOwogICAgIGlmICh2OEtleS5Jc0VtcHR5KCkpCkBAIC0xOTQsOCAr
MTkzLDEwIEBAIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVB
bmRLZXlQYXRoKGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1CiB7CiAgICAgSURCX1RSQUNFKCJjcmVh
dGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoIik7CiAgICAgQVNTRVJUKCFrZXlQYXRo
LmlzTnVsbCgpKTsKKyAgICBBU1NFUlQodjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKTsKKwogCi0g
ICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29w
ZTsKICAgICBpZiAoa2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6QXJyYXlUeXBlKSB7CiAg
ICAgICAgIElEQktleTo6S2V5QXJyYXkgcmVzdWx0OwogICAgICAgICBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYXJyYXkgPSBrZXlQYXRoLmFycmF5KCk7CkBAIC0yMTIsMTEgKzIxMywxMCBAQCBQYXNz
UmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChjb25z
dCBTY3JpcHRWYWx1ZSYgdmFsdQogICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFs
dWVBbmRLZXlQYXRoKHZhbHVlLCBrZXlQYXRoLnN0cmluZygpKTsKIH0KIAotLy8gRklYTUU6IFRo
ZSBvbmx5IHJlYXNvbiB0aGlzIGV4aXN0cyBpcyBiZWNhdXNlIHdlIG5lZWQgYSB2ODo6Q29udGV4
dCBhbmQgc2NvcGUgaW5zaWRlIGEgdGltZXIuIElzIHRoZXJlIGEgYmV0dGVyIC8gbW9yZSBnZW5l
cmFsIHdheSB0byBkbyB0aGlzPwogU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gcHJwVmFsdWUpCiB7CisgICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRl
eHQoKSk7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpDb250ZXh0
OjpTY29wZSBjb250ZXh0U2NvcGUodG9WOENvbnRleHQoc2NyaXB0Q29udGV4dCwgVXNlQ3VycmVu
dFdvcmxkKSk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZh
bHVlID0gcHJwVmFsdWU7CiAgICAgaWYgKHNlcmlhbGl6ZWRWYWx1ZSkKICAgICAgICAgcmV0dXJu
IFNjcmlwdFZhbHVlKHNlcmlhbGl6ZWRWYWx1ZS0+ZGVzZXJpYWxpemUoKSk7CkBAIC0yMjYsNiAr
MjI2LDcgQEAgU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRDb250ZXh0LCBQYXNzUmVmUHQKIGJvb2wgaW5qZWN0SURCS2V5SW50b1Nj
cmlwdFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29u
c3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBJREJfVFJBQ0UoImluamVjdElEQktleUlu
dG9TY3JpcHRWYWx1ZSIpOworICAgIEFTU0VSVCh2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpOwog
CiAgICAgQVNTRVJUKGtleVBhdGgudHlwZSgpID09IElEQktleVBhdGg6OlN0cmluZ1R5cGUpOwog
ICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhFbGVtZW50czsKQEAgLTIzNyw4ICsyMzgsNiBAQCBi
b29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBT
Y3JpcHRWYWx1ZSYgdmFsdWUsIGNvbgogICAgICAgICByZXR1cm4gMDsKIAogICAgIHY4OjpIYW5k
bGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoVjhQZXJJ
c29sYXRlRGF0YTo6Y3VycmVudCgpLT5lbnN1cmVBdXhpbGlhcnlDb250ZXh0KCkpOwotCiAgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUodmFsdWUudjhWYWx1ZSgpKTsKICAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gcGFyZW50KGVuc3VyZU50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUs
IGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1lbnRzLnNpemUoKSAtIDEpKTsKICAgICBpZiAo
cGFyZW50LklzRW1wdHkoKSkKQEAgLTI2OCw5ICsyNjcsOCBAQCBib29sIGNhbkluamVjdElEQktl
eUludG9TY3JpcHRWYWx1ZShjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUsIGNvbnN0IElE
QktleQogCiBTY3JpcHRWYWx1ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdENvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkpCiB7CisgICAgQVNT
RVJUKHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRs
ZVNjb3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodG9WOENvbnRleHQo
c2NyaXB0Q29udGV4dCwgVXNlQ3VycmVudFdvcmxkKSk7Ci0KICAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdjhWYWx1ZSh0b1Y4KGtleS5nZXQoKSkpOwogICAgIHJldHVybiBTY3JpcHRWYWx1ZSh2
OFZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVy
SXNvbGF0ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRl
RGF0YS5jcHAKaW5kZXggOTY4ODJmM2I3YWEyZGU0NzFhZGIwN2ZlYjYxZjAzYmY4ODM5ODc0NC4u
MzczMDY2YzJiNDUyNDhhNjFjMjU0YzBkZjExMDI0ZWEzYzY3NDA5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKQEAgLTEzMiwxMyArMTMy
LDYgQEAgdm9pZCBWOFBlcklzb2xhdGVEYXRhOjp2aXNpdEV4dGVybmFsU3RyaW5ncyhFeHRlcm5h
bFN0cmluZ1Zpc2l0b3IqIHZpc2l0b3IpCiB9CiAjZW5kaWYKIAotdjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gVjhQZXJJc29sYXRlRGF0YTo6ZW5zdXJlQXV4aWxpYXJ5Q29udGV4dCgpCi17Ci0gICAg
aWYgKG1fYXV4aWxpYXJ5Q29udGV4dC5pc0VtcHR5KCkpCi0gICAgICAgIG1fYXV4aWxpYXJ5Q29u
dGV4dC5hZG9wdCh2ODo6Q29udGV4dDo6TmV3KCkpOwotICAgIHJldHVybiBtX2F1eGlsaWFyeUNv
bnRleHQuZ2V0KCk7Ci19Ci0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFBlcklzb2xhdGVEYXRh
Ojpjb25zdHJ1Y3Rvck9mVG9TdHJpbmcoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICAvLyBUaGUgRE9NIGNvbnN0cnVjdG9ycycgdG9TdHJpbmcgZnVuY3Rpb25zIGdyYWIgdGhlIGN1
cnJlbnQgdG9TdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UGVySXNvbGF0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0
ZURhdGEuaAppbmRleCA3NDkwMjBlMjA3ZDMwYTY5ZjJkNDQ3MmRlZmRlOTE1NzBmMTMwZWMxLi5h
ZmUxMTQ3NzRjMGZlMzY5YTI5ZWVhOGY2OTFmMzNkMjk4ZmRmMGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oCkBAIC04Niw3ICs4Niw2IEBAIHB1
YmxpYzoKICAgICBET01EYXRhTGlzdCYgYWxsU3RvcmVzKCkgeyByZXR1cm4gbV9kb21EYXRhTGlz
dDsgfQogCiAgICAgVjhIaWRkZW5Qcm9wZXJ0eU5hbWUqIGhpZGRlblByb3BlcnR5TmFtZSgpIHsg
cmV0dXJuIG1faGlkZGVuUHJvcGVydHlOYW1lLmdldCgpOyB9Ci0gICAgdjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4gZW5zdXJlQXV4aWxpYXJ5Q29udGV4dCgpOwogCiAgICAgdm9pZCByZWdpc3RlckRP
TURhdGFTdG9yZShET01EYXRhU3RvcmUqIGRvbURhdGFTdG9yZSkgCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0
LmNwcAppbmRleCA0NjcxMGU3NDU2OGE3NGZhYzVmZTVmNTA3OTNhYzJjOWE5YzJmYjBmLi5hMmE0
ZjQ0MmQyYjVlYWVkZDAzZWZmNTA1NmEwMmJjMjlhMDRjNjZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcApA
QCAtMjQsMTEgKzI0LDE5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVRlc3RIZWxw
ZXJzLmgiCiAjaW5jbHVkZSAiSURCQmluZGluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIklEQktl
eS5oIgogI2luY2x1ZGUgIklEQktleVBhdGguaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNp
bmNsdWRlICJWOFBlcklzb2xhdGVEYXRhLmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKKyNp
bmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgorI2luY2x1ZGUg
IldlYlZpZXcuaCIKKyNpbmNsdWRlICJXb3JsZENvbnRleHRIYW5kbGUuaCIKIAogI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzYsNiArNDQsNyBA
QAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTkwLDEwICs5
OSwyMSBAQCB2b2lkIGNoZWNrS2V5UGF0aE51bWJlclZhbHVlKGNvbnN0IFNjcmlwdFZhbHVlJiB2
YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBpbgogICAgIEFTU0VSVF9UUlVFKGV4cGVjdGVk
ID09IGlkYktleS0+bnVtYmVyKCkpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4gY29udGV4dCgpCit7CisgICAgc3RhdGljIFdlYlZpZXcqIHdlYlZpZXc7CisgICAgaWYgKCF3
ZWJWaWV3KSB7CisgICAgICAgIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJW
aWV3QW5kTG9hZCgiYWJvdXQ6YmxhbmsiKTsKKyAgICAgICAgd2ViVmlldy0+c2V0Rm9jdXModHJ1
ZSk7CisgICAgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxXZWJGcmFtZUltcGwqPih3ZWJWaWV3LT5tYWluRnJhbWUoKSktPmZyYW1lKCktPmRvY3Vt
ZW50KCk7CisgICAgcmV0dXJuIHRvVjhDb250ZXh0KGNvbnRleHQsIFdvcmxkQ29udGV4dEhhbmRs
ZShVc2VDdXJyZW50V29ybGQpKTsKK30KKwogVEVTVChJREJLZXlGcm9tVmFsdWVBbmRLZXlQYXRo
VGVzdCwgVG9wTGV2ZWxQcm9wZXJ0eVN0cmluZ1ZhbHVlKQogewogICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoVjhQZXJJc29sYXRl
RGF0YTo6Y3VycmVudCgpLT5lbnN1cmVBdXhpbGlhcnlDb250ZXh0KCkpOworICAgIHY4OjpDb250
ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KCkpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5ldygpOwogICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6
Ok5ldygiZm9vIiksIHY4OjpTdHJpbmc6Ok5ldygiem9vIikpOwpAQCAtMTA3LDcgKzEyNyw3IEBA
IFRFU1QoSURCS2V5RnJvbVZhbHVlQW5kS2V5UGF0aFRlc3QsIFRvcExldmVsUHJvcGVydHlTdHJp
bmdWYWx1ZSkKIFRFU1QoSURCS2V5RnJvbVZhbHVlQW5kS2V5UGF0aFRlc3QsIFRvcExldmVsUHJv
cGVydHlOdW1iZXJWYWx1ZSkKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0g
ICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+
ZW5zdXJlQXV4aWxpYXJ5Q29udGV4dCgpKTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUo
Y29udGV4dCgpKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6T2Jq
ZWN0OjpOZXcoKTsKICAgICBvYmplY3QtPlNldCh2ODo6U3RyaW5nOjpOZXcoImZvbyIpLCB2ODo6
TnVtYmVyOjpOZXcoNDU2KSk7CkBAIC0xMjEsNyArMTQxLDcgQEAgVEVTVChJREJLZXlGcm9tVmFs
dWVBbmRLZXlQYXRoVGVzdCwgVG9wTGV2ZWxQcm9wZXJ0eU51bWJlclZhbHVlKQogVEVTVChJREJL
ZXlGcm9tVmFsdWVBbmRLZXlQYXRoVGVzdCwgU3ViUHJvcGVydHkpCiB7CiAgICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShWOFBlcklz
b2xhdGVEYXRhOjpjdXJyZW50KCktPmVuc3VyZUF1eGlsaWFyeUNvbnRleHQoKSk7CisgICAgdjg6
OkNvbnRleHQ6OlNjb3BlIHNjb3BlKGNvbnRleHQoKSk7CiAKICAgICB2ODo6TG9jYWw8djg6Ok9i
amVjdD4gb2JqZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IHN1YlByb3BlcnR5ID0gdjg6Ok9iamVjdDo6TmV3KCk7CkBAIC0xMzcsNyArMTU3LDcgQEAg
VEVTVChJREJLZXlGcm9tVmFsdWVBbmRLZXlQYXRoVGVzdCwgU3ViUHJvcGVydHkpCiBURVNUKElu
amVjdElEQktleVRlc3QsIFRvcExldmVsUHJvcGVydHlTdHJpbmdWYWx1ZSkKIHsKICAgICB2ODo6
SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKFY4
UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+ZW5zdXJlQXV4aWxpYXJ5Q29udGV4dCgpKTsKKyAg
ICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCgpKTsKIAogICAgIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6T2JqZWN0OjpOZXcoKTsKICAgICBvYmplY3QtPlNldCh2
ODo6U3RyaW5nOjpOZXcoImZvbyIpLCB2ODo6U3RyaW5nOjpOZXcoInpvbyIpKTsKQEAgLTE1Miw3
ICsxNzIsNyBAQCBURVNUKEluamVjdElEQktleVRlc3QsIFRvcExldmVsUHJvcGVydHlTdHJpbmdW
YWx1ZSkKIFRFU1QoSW5qZWN0SURCS2V5VGVzdCwgU3ViUHJvcGVydHkpCiB7CiAgICAgdjg6Okhh
bmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShWOFBl
cklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmVuc3VyZUF1eGlsaWFyeUNvbnRleHQoKSk7CisgICAg
djg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKGNvbnRleHQoKSk7CiAKICAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gb2JqZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IHN1YlByb3BlcnR5ID0gdjg6Ok9iamVjdDo6TmV3KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171437</attachid>
            <date>2012-10-30 06:45:12 -0700</date>
            <delta_ts>2012-10-30 10:21:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99975-20121030144336.patch</filename>
            <type>text/plain</type>
            <size>16125</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyOTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzAyZGZlM2EwMGMwMDJi
YzZmYjNhZWVmMzI0YjcwYzQ2NDg0OTc1NC4uNDgzNmY1ZjQ4YTNhZWU0MjVmYWUwYmRiMzQ5ZTA0
ZTc4OGM3NmFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEwLTMwICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBlbnN1cmVBdXhp
bGlhcnlDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05OTk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAg
UmVtb3ZlZCBhdXhpbGxpYXJ5Q29udGV4dCBhcyB1c2UgaWYgaXQgaXMgcHJvYmxlbWF0aWMgaW4g
SURCLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHku
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29y
OjpzZXRWYWx1ZVJlYWR5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
aDoKKyAgICAgICAgKElEQkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVJbmRleEtleXNGb3JW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6cHV0KToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0lE
QkJpbmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSURCS2V5RnJv
bVNjcmlwdFZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpkZXNlcmlhbGl6ZUlE
QlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmluamVjdElEQktleUludG9TY3JpcHRWYWx1ZSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvVjhDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmg6CisKIDIwMTItMTAtMzAgIE1heCBW
dWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgU2hhZGVyc10gUmVq
ZWN0IHZlcnRleCBzaGFkZXJzIHdpdGggY3VzdG9tIGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggMWI1ZmYzYjBkMzZhYjc5MmRkNTA2MDk1Y2QwOGNmZTY5NWNiZmFjZC4u
MDgyNjIyNzMxMDllOTY1NTgyNTYyZTRlZDBmNTdjM2M5YjQyMzE3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0xMC0zMCAgRGFuIENhcm5leSAgPGRj
YXJuZXlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZW1vdmUgZW5zdXJlQXV4aWxpYXJ5Q29udGV4
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk5NzUK
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFVwZGF0ZWQgdGVz
dHMgdG8gdXNlIGNvcnJlY3QgdjggY29udGV4dC4KKworICAgICAgICAqIHRlc3RzL0lEQkJpbmRp
bmdVdGlsaXRpZXNUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y2hlY2tLZXlGcm9tVmFsdWVB
bmRLZXlQYXRoSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpjaGVja0tleVBhdGhOdWxsVmFs
dWUpOgorICAgICAgICAoV2ViS2l0OjppbmplY3RLZXkpOgorICAgICAgICAoV2ViS2l0OjpjaGVj
a0luamVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrSW5qZWN0aW9uRmFpbHMpOgorICAg
ICAgICAoV2ViS2l0OjpjaGVja0tleVBhdGhTdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6
OmNoZWNrS2V5UGF0aE51bWJlclZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpURVNUKToK
KwogMjAxMi0xMC0zMCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIHVudXNlZCBjb2RlIGZvciBvbGQgaW5wdXRbdHlwZT1kYXRlXSBVSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCAxODYw
YmZjNTllM2NhMzg0MmY3NTY1YWRlMTA2NGNlMWJmODNjM2E4Li4yYzJkMTJkM2YzODlkM2U1ZWJm
YjMzY2E3MzYxZGE5M2JkZTJjMzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtNDIsNiArNDIsOSBAQAogI2luY2x1ZGUgIklEQlRy
YWNpbmcuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKKyNpZiBVU0UoVjgpCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03Niw2ICs3OSw5IEBAIElEQlJlcXVl
c3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxJREJBbnk+IHNvdXJjCiAgICAgLCBtX3BlbmRpbmdDdXJzb3IoMCkKICAgICAsIG1fZGlkRmly
ZVVwZ3JhZGVOZWVkZWRFdmVudChmYWxzZSkKICAgICAsIG1fcHJldmVudFByb3BhZ2F0aW9uKGZh
bHNlKQorI2lmIFVTRShWOCkKKyAgICAsIG1fd29ybGRDb250ZXh0SGFuZGxlKFVzZUN1cnJlbnRX
b3JsZCkKKyNlbmRpZgogewogICAgIGlmIChtX3RyYW5zYWN0aW9uKSB7CiAgICAgICAgIG1fdHJh
bnNhY3Rpb24tPnJlZ2lzdGVyUmVxdWVzdCh0aGlzKTsKQEAgLTI4NCw2ICsyOTAsMTQgQEAgdm9p
ZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlPiBiYWNrZW5kLCBQYXNzUmUKICAgICBpZiAoIXNob3VsZEVucXVldWVFdmVudCgpKQogICAg
ICAgICByZXR1cm47CiAKKyNpZiBVU0UoVjgpCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHRvVjhDb250ZXh0KHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV93b3JsZENvbnRleHRIYW5kbGUpOworICAgIGlmIChj
b250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICB2ODo6Q29udGV4dDo6U2Nv
cGUgY29udGV4dFNjb3BlKGNvbnRleHQpOworI2VuZGlmCisKICAgICBTY3JpcHRWYWx1ZSB2YWx1
ZSA9IGRlc2VyaWFsaXplSURCVmFsdWUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzZXJpYWxp
emVkVmFsdWUpOwogICAgIEFTU0VSVChtX2N1cnNvclR5cGUgIT0gSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZTo6SW52YWxpZEN1cnNvclR5cGUpOwogICAgIFJlZlB0cjxJREJDdXJzb3I+IGN1cnNv
cjsKQEAgLTM0MCw2ICszNTQsMTQgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWwKICAgICBpZiAo
IXNob3VsZEVucXVldWVFdmVudCgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBVU0UoVjgpCisg
ICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4
dD4gY29udGV4dCA9IHRvVjhDb250ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV93b3Js
ZENvbnRleHRIYW5kbGUpOworICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgQ1JB
U0goKTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOworI2Vu
ZGlmCisKICAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWUoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBzZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogICAgIG9uU3VjY2Vz
c0ludGVybmFsKHZhbHVlKTsKIH0KQEAgLTM2Myw2ICszODUsMTQgQEAgdm9pZCBJREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFNlcmlhbGl6
ZWRTY3JpcHQKICAgICBpZiAoIXNob3VsZEVucXVldWVFdmVudCgpKQogICAgICAgICByZXR1cm47
CiAKKyNpZiBVU0UoVjgpCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4
OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHRvVjhDb250ZXh0KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgbV93b3JsZENvbnRleHRIYW5kbGUpOworICAgIGlmIChjb250ZXh0LklzRW1w
dHkoKSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNj
b3BlKGNvbnRleHQpOworI2VuZGlmCisKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKGtleVBh
dGggPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUobV9zb3VyY2UpLT5rZXlQYXRoKCkpOwogI2VuZGlm
CkBAIC00MDQsNiArNDM0LDE0IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5CiAgICAgaWYgKCFz
aG91bGRFbnF1ZXVlRXZlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgVVNFKFY4KQorICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+
IGNvbnRleHQgPSB0b1Y4Q29udGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29ybGRD
b250ZXh0SGFuZGxlKTsKKyAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIENSQVNI
KCk7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShjb250ZXh0KTsKKyNlbmRp
ZgorCiAgICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgc2VyaWFsaXplZFZhbHVlKTsKICAgICBBU1NFUlQobV9wZW5kaW5n
Q3Vyc29yKTsKICAgICBzZXRSZXN1bHRDdXJzb3IobV9wZW5kaW5nQ3Vyc29yLnJlbGVhc2UoKSwg
a2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSk7CkBAIC00NDksNiArNDg3LDE1IEBAIGJvb2wgSURCUmVx
dWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBBU1NFUlQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoZXZlbnQtPnRhcmdldCgpID09
IHRoaXMpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9yZWFkeVN0YXRlIDwgRE9ORSwgIldo
ZW4gZGlzcGF0Y2hpbmcgZXZlbnQgJXMsIG1fcmVhZHlTdGF0ZSA8IERPTkUoJWQpLCB3YXMgJWQi
LCBldmVudC0+dHlwZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIERPTkUsIG1fcmVhZHlTdGF0
ZSk7CisKKyNpZiBVU0UoVjgpCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAg
IHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHRvVjhDb250ZXh0KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgbV93b3JsZENvbnRleHRIYW5kbGUpOworICAgIGlmIChjb250ZXh0Lklz
RW1wdHkoKSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4
dFNjb3BlKGNvbnRleHQpOworI2VuZGlmCisKICAgICBpZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVu
dE5hbWVzKCkuYmxvY2tlZEV2ZW50KQogICAgICAgICBtX3JlYWR5U3RhdGUgPSBET05FOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKaW5kZXggODk5
NzgzODUzZDk0M2JmOTFmYWQxYTMzYjY0MjI0NWYyZTA1NDNjMS4uZTAzNTljZDM5OWY2ODUxOGMw
MjlhZjRjMDFkNDEwMDk1M2ZjMzgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuaApAQCAtNDIsNiArNDIsOSBAQAogI2luY2x1ZGUgIklEQkNhbGxi
YWNrcy5oIgogI2luY2x1ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2UuaCIKKyNpZiBVU0UoVjgpCisjaW5jbHVkZSAiV29ybGRDb250ZXh0SGFuZGxl
LmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNTUsNiArMTU4LDkgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fcHJldmVudFByb3BhZ2F0aW9uOwogCiAgICAgRXZlbnRUYXJn
ZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworI2lmIFVTRShWOCkKKyAgICBXb3JsZENvbnRleHRI
YW5kbGUgbV93b3JsZENvbnRleHRIYW5kbGU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRp
bmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0
aWxpdGllcy5jcHAKaW5kZXggNWJlY2I2YTY2ODFmZGYzMjIwM2M3NjFhNWIwM2FmNGQ3ZmYyODQx
ZS4uMDFlN2UzN2UxMjM1NTg5N2EwM2Q4ZDNkNTY0NTRiMTBhYzE5MjEwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTE3
OSwxMCArMTc5LDkgQEAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9t
U2NyaXB0VmFsdWVBbmRLZXlQYXRoKGNvbnN0IFNjcmlwdFZhbHUKICAgICBJREJLZXlQYXRoUGFy
c2VFcnJvciBlcnJvcjsKICAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aCwga2V5UGF0aEVsZW1l
bnRzLCBlcnJvcik7CiAgICAgQVNTRVJUKGVycm9yID09IElEQktleVBhdGhQYXJzZUVycm9yTm9u
ZSk7CisgICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CiAKICAgICB2ODo6SGFu
ZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKFY4UGVy
SXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+ZW5zdXJlQXV4aWxpYXJ5Q29udGV4dCgpKTsKLQogICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFZhbHVlKHZhbHVlLnY4VmFsdWUoKSk7CiAgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHY4S2V5KGdldE50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtl
eVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1lbnRzLnNpemUoKSkpOwogICAgIGlmICh2OEtleS5J
c0VtcHR5KCkpCkBAIC0xOTQsOCArMTkzLDEwIEBAIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJ
REJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1CiB7
CiAgICAgSURCX1RSQUNFKCJjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoIik7
CiAgICAgQVNTRVJUKCFrZXlQYXRoLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQodjg6OkNvbnRleHQ6
OkluQ29udGV4dCgpKTsKKwogCi0gICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgIHY4OjpI
YW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICBpZiAoa2V5UGF0aC50eXBlKCkgPT0gSURCS2V5
UGF0aDo6QXJyYXlUeXBlKSB7CiAgICAgICAgIElEQktleTo6S2V5QXJyYXkgcmVzdWx0OwogICAg
ICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJyYXkgPSBrZXlQYXRoLmFycmF5KCk7CkBAIC0y
MTIsMTEgKzIxMywxMCBAQCBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlw
dFZhbHVlQW5kS2V5UGF0aChjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdQogICAgIHJldHVybiBjcmVh
dGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKHZhbHVlLCBrZXlQYXRoLnN0cmluZygp
KTsKIH0KIAotLy8gRklYTUU6IFRoZSBvbmx5IHJlYXNvbiB0aGlzIGV4aXN0cyBpcyBiZWNhdXNl
IHdlIG5lZWQgYSB2ODo6Q29udGV4dCBhbmQgc2NvcGUgaW5zaWRlIGEgdGltZXIuIElzIHRoZXJl
IGEgYmV0dGVyIC8gbW9yZSBnZW5lcmFsIHdheSB0byBkbyB0aGlzPwogU2NyaXB0VmFsdWUgZGVz
ZXJpYWxpemVJREJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0LCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUpCiB7CisgICAgQVNTRVJU
KHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodG9WOENvbnRleHQoc2Ny
aXB0Q29udGV4dCwgVXNlQ3VycmVudFdvcmxkKSk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gcHJwVmFsdWU7CiAgICAgaWYgKHNlcmlhbGl6ZWRW
YWx1ZSkKICAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKHNlcmlhbGl6ZWRWYWx1ZS0+ZGVzZXJp
YWxpemUoKSk7CkBAIC0yMjYsNiArMjI2LDcgQEAgU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJW
YWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0LCBQYXNzUmVmUHQKIGJv
b2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFNj
cmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBJREJf
VFJBQ0UoImluamVjdElEQktleUludG9TY3JpcHRWYWx1ZSIpOworICAgIEFTU0VSVCh2ODo6Q29u
dGV4dDo6SW5Db250ZXh0KCkpOwogCiAgICAgQVNTRVJUKGtleVBhdGgudHlwZSgpID09IElEQktl
eVBhdGg6OlN0cmluZ1R5cGUpOwogICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhFbGVtZW50czsK
QEAgLTIzNyw4ICsyMzgsNiBAQCBib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbgogICAgICAgICByZXR1
cm4gMDsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6Q29udGV4
dDo6U2NvcGUgc2NvcGUoVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5lbnN1cmVBdXhpbGlh
cnlDb250ZXh0KCkpOwotCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUodmFsdWUu
djhWYWx1ZSgpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyZW50KGVuc3VyZU50aFZh
bHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1lbnRzLnNp
emUoKSAtIDEpKTsKICAgICBpZiAocGFyZW50LklzRW1wdHkoKSkKQEAgLTI2OCw5ICsyNjcsOCBA
QCBib29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShjb25zdCBTY3JpcHRWYWx1ZSYg
c2NyaXB0VmFsdWUsIGNvbnN0IElEQktleQogCiBTY3JpcHRWYWx1ZSBpZGJLZXlUb1NjcmlwdFZh
bHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQsIFBhc3NSZWZQdHI8SURC
S2V5PiBrZXkpCiB7CisgICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSk7CiAgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250
ZXh0U2NvcGUodG9WOENvbnRleHQoc2NyaXB0Q29udGV4dCwgVXNlQ3VycmVudFdvcmxkKSk7Ci0K
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhWYWx1ZSh0b1Y4KGtleS5nZXQoKSkpOwogICAg
IHJldHVybiBTY3JpcHRWYWx1ZSh2OFZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKaW5kZXggOTY4ODJmM2I3YWEyZGU0NzFhZGIw
N2ZlYjYxZjAzYmY4ODM5ODc0NC4uMzczMDY2YzJiNDUyNDhhNjFjMjU0YzBkZjExMDI0ZWEzYzY3
NDA5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRl
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0
YS5jcHAKQEAgLTEzMiwxMyArMTMyLDYgQEAgdm9pZCBWOFBlcklzb2xhdGVEYXRhOjp2aXNpdEV4
dGVybmFsU3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqIHZpc2l0b3IpCiB9CiAjZW5kaWYK
IAotdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gVjhQZXJJc29sYXRlRGF0YTo6ZW5zdXJlQXV4aWxp
YXJ5Q29udGV4dCgpCi17Ci0gICAgaWYgKG1fYXV4aWxpYXJ5Q29udGV4dC5pc0VtcHR5KCkpCi0g
ICAgICAgIG1fYXV4aWxpYXJ5Q29udGV4dC5hZG9wdCh2ODo6Q29udGV4dDo6TmV3KCkpOwotICAg
IHJldHVybiBtX2F1eGlsaWFyeUNvbnRleHQuZ2V0KCk7Ci19Ci0KIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFBlcklzb2xhdGVEYXRhOjpjb25zdHJ1Y3Rvck9mVG9TdHJpbmcoY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICAvLyBUaGUgRE9NIGNvbnN0cnVjdG9ycycgdG9TdHJpbmcg
ZnVuY3Rpb25zIGdyYWIgdGhlIGN1cnJlbnQgdG9TdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaAppbmRleCA3NDkwMjBlMjA3ZDMwYTY5ZjJkNDQ3
MmRlZmRlOTE1NzBmMTMwZWMxLi5hZmUxMTQ3NzRjMGZlMzY5YTI5ZWVhOGY2OTFmMzNkMjk4ZmRm
MGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5o
CkBAIC04Niw3ICs4Niw2IEBAIHB1YmxpYzoKICAgICBET01EYXRhTGlzdCYgYWxsU3RvcmVzKCkg
eyByZXR1cm4gbV9kb21EYXRhTGlzdDsgfQogCiAgICAgVjhIaWRkZW5Qcm9wZXJ0eU5hbWUqIGhp
ZGRlblByb3BlcnR5TmFtZSgpIHsgcmV0dXJuIG1faGlkZGVuUHJvcGVydHlOYW1lLmdldCgpOyB9
Ci0gICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gZW5zdXJlQXV4aWxpYXJ5Q29udGV4dCgpOwog
CiAgICAgdm9pZCByZWdpc3RlckRPTURhdGFTdG9yZShET01EYXRhU3RvcmUqIGRvbURhdGFTdG9y
ZSkgCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDNlZGM0YTViNDc2MmI0
NDlkODQyNGI2NGYyYTI2MjBjMWVhOWQ0NDEuLjc0ZWY5YmZjZjU3ZDk1MjhjZGQ4ODNhZmQyYjg4
OTU5YzZkNGM3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTcxMCw2ICs3MTAs
NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvQXNzb2NpYXRlZFVS
TExvYWRlclRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Rz
L0V2ZW50TGlzdGVuZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICd0ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd0ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdHMvTGV2ZWxEQlRlc3QuY3BwJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0xpc3RlbmVyTGVha1Rlc3QuY3BwJywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0xpbmtIaWdobGlnaHRUZXN0LmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkJpbmRpbmdVdGls
aXRpZXNUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0
aWxpdGllc1Rlc3QuY3BwCmluZGV4IDQ2NzEwZTc0NTY4YTc0ZmFjNWZlNWY1MDc5M2FjMmM5YTlj
MmZiMGYuLmEyYTRmNDQyZDJiNWVhZWRkMDNlZmY1MDU2YTAyYmMyOWEwNGM2NmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGll
c1Rlc3QuY3BwCkBAIC0yNCwxMSArMjQsMTkgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZy
YW1lVGVzdEhlbHBlcnMuaCIKICNpbmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgorI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgogI2luY2x1ZGUgIlY4UGVySXNvbGF0ZURhdGEuaCIKICNpbmNsdWRlICJWOFV0aWxp
dGllcy5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgi
CisjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgog
CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0z
Niw2ICs0NCw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIHsKIApA
QCAtOTAsMTAgKzk5LDIxIEBAIHZvaWQgY2hlY2tLZXlQYXRoTnVtYmVyVmFsdWUoY29uc3QgU2Ny
aXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGluCiAgICAgQVNTRVJUX1RS
VUUoZXhwZWN0ZWQgPT0gaWRiS2V5LT5udW1iZXIoKSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpDb250ZXh0PiBjb250ZXh0KCkKK3sKKyAgICBzdGF0aWMgV2ViVmlldyogd2ViVmlldzsK
KyAgICBpZiAoIXdlYlZpZXcpIHsKKyAgICAgICAgd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6
OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKCJhYm91dDpibGFuayIpOworICAgICAgICB3ZWJWaWV3LT5z
ZXRGb2N1cyh0cnVlKTsKKyAgICB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KHdlYlZpZXctPm1haW5GcmFtZSgpKS0+ZnJh
bWUoKS0+ZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gdG9WOENvbnRleHQoY29udGV4dCwgV29ybGRD
b250ZXh0SGFuZGxlKFVzZUN1cnJlbnRXb3JsZCkpOworfQorCiBURVNUKElEQktleUZyb21WYWx1
ZUFuZEtleVBhdGhUZXN0LCBUb3BMZXZlbFByb3BlcnR5U3RyaW5nVmFsdWUpCiB7CiAgICAgdjg6
OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShW
OFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmVuc3VyZUF1eGlsaWFyeUNvbnRleHQoKSk7Cisg
ICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKGNvbnRleHQoKSk7CiAKICAgICB2ODo6TG9jYWw8
djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAgb2JqZWN0LT5TZXQo
djg6OlN0cmluZzo6TmV3KCJmb28iKSwgdjg6OlN0cmluZzo6TmV3KCJ6b28iKSk7CkBAIC0xMDcs
NyArMTI3LDcgQEAgVEVTVChJREJLZXlGcm9tVmFsdWVBbmRLZXlQYXRoVGVzdCwgVG9wTGV2ZWxQ
cm9wZXJ0eVN0cmluZ1ZhbHVlKQogVEVTVChJREJLZXlGcm9tVmFsdWVBbmRLZXlQYXRoVGVzdCwg
VG9wTGV2ZWxQcm9wZXJ0eU51bWJlclZhbHVlKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5k
bGVTY29wZTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoVjhQZXJJc29sYXRlRGF0YTo6
Y3VycmVudCgpLT5lbnN1cmVBdXhpbGlhcnlDb250ZXh0KCkpOworICAgIHY4OjpDb250ZXh0OjpT
Y29wZSBzY29wZShjb250ZXh0KCkpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVj
dCA9IHY4OjpPYmplY3Q6Ok5ldygpOwogICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygi
Zm9vIiksIHY4OjpOdW1iZXI6Ok5ldyg0NTYpKTsKQEAgLTEyMSw3ICsxNDEsNyBAQCBURVNUKElE
QktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBUb3BMZXZlbFByb3BlcnR5TnVtYmVyVmFsdWUp
CiBURVNUKElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBTdWJQcm9wZXJ0eSkKIHsKICAg
ICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNj
b3BlKFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+ZW5zdXJlQXV4aWxpYXJ5Q29udGV4dCgp
KTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCgpKTsKIAogICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6T2JqZWN0OjpOZXcoKTsKICAgICB2ODo6TG9j
YWw8djg6Ok9iamVjdD4gc3ViUHJvcGVydHkgPSB2ODo6T2JqZWN0OjpOZXcoKTsKQEAgLTEzNyw3
ICsxNTcsNyBAQCBURVNUKElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBTdWJQcm9wZXJ0
eSkKIFRFU1QoSW5qZWN0SURCS2V5VGVzdCwgVG9wTGV2ZWxQcm9wZXJ0eVN0cmluZ1ZhbHVlKQog
ewogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6Q29udGV4dDo6U2Nv
cGUgc2NvcGUoVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5lbnN1cmVBdXhpbGlhcnlDb250
ZXh0KCkpOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KCkpOwogCiAgICAg
djg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5ldygpOwogICAgIG9i
amVjdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiZm9vIiksIHY4OjpTdHJpbmc6Ok5ldygiem9vIikp
OwpAQCAtMTUyLDcgKzE3Miw3IEBAIFRFU1QoSW5qZWN0SURCS2V5VGVzdCwgVG9wTGV2ZWxQcm9w
ZXJ0eVN0cmluZ1ZhbHVlKQogVEVTVChJbmplY3RJREJLZXlUZXN0LCBTdWJQcm9wZXJ0eSkKIHsK
ICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3Bl
IHNjb3BlKFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+ZW5zdXJlQXV4aWxpYXJ5Q29udGV4
dCgpKTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCgpKTsKIAogICAgIHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6T2JqZWN0OjpOZXcoKTsKICAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gc3ViUHJvcGVydHkgPSB2ODo6T2JqZWN0OjpOZXcoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>