<?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>23695</bug_id>
          
          <creation_ts>2009-02-02 13:51:30 -0800</creation_ts>
          <short_desc>Data store should be readable in dragstart/copy/cut events</short_desc>
          <delta_ts>2013-03-22 21:51:59 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://code.eligrey.com/tests/all/dataTransfer.getData.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eli Grey (:sephr)">bugmail</reporter>
          <assigned_to name="Daniel Cheng">dcheng</assigned_to>
          <cc>andruid</cc>
    
    <cc>arv</cc>
    
    <cc>buildbot</cc>
    
    <cc>dbates</cc>
    
    <cc>dcheng</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>mcdonald.ben</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rhemalinder</cc>
    
    <cc>rniwa</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>syoichi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tony</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>108029</commentid>
    <comment_count>0</comment_count>
    <who name="Eli Grey (:sephr)">bugmail</who>
    <bug_when>2009-02-02 13:51:30 -0800</bug_when>
    <thetext>event.dataTransfer.getData should be usable from a dragstart event in the same domain where the drag initiated. Instead, WebkKit is silently failing. This severely limits the ability to customize the content being dragged, as it would require knowing the content being dragged to customize it.
The URL is practical example of customizing dragged content by adding citations to the source page in various formats for different drop targets (ie. textarea, word processing software, ect) The demo will work correctly in Firefox 3.1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114151</commentid>
    <comment_count>1</comment_count>
    <who name="Eli Grey (:sephr)">bugmail</who>
    <bug_when>2009-03-17 18:29:36 -0700</bug_when>
    <thetext>This is a very important feature of HTML 5 that should be fixed in my opinion and without it, it is impossible to make custom data types for drop operations. event.dataTransfer.setData is useless if you can&apos;t get the data for modification. 

For example, it should be possible to set an image ondrag for images where the site knows the metadata of certain images to getData(&quot;text/plain&quot;) and use this data to do setData(&quot;application/json+exif&quot;, customizedData) to include said metadata in a custom data type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119017</commentid>
    <comment_count>2</comment_count>
    <who name="Eli Grey (:sephr)">bugmail</who>
    <bug_when>2009-04-27 13:41:07 -0700</bug_when>
    <thetext>I can&apos;t find a tracking bug for drag and drop, so I&apos;ll just make it blocking GTK drag and drop implementation because it technically does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133688</commentid>
    <comment_count>3</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2009-07-21 20:57:48 -0700</bug_when>
    <thetext>This does not block GTK DnD.

I do agree that it is important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153337</commentid>
    <comment_count>4</comment_count>
    <who name="">webkit</who>
    <bug_when>2009-10-08 04:37:15 -0700</bug_when>
    <thetext>This bug now crashses recent WebKit builds.

See: http://decafbad.com/2009/07/drag-and-drop/api-demos.html#data_transfer
Tested on OS X 10.5/6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153617</commentid>
    <comment_count>5</comment_count>
      <attachid>40932</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-08 23:07:28 -0700</bug_when>
    <thetext>Created attachment 40932
Crash dump for http://decafbad.com/2009/07/drag-and-drop/api-demos.html#data_transfer

Following up on the comment made by webkit@leemcdermott.co.uk, this is a crash dump when dragging the box marked &quot;Text&quot; to the drop target on the page: http://decafbad.com/2009/07/drag-and-drop/api-demos.html#data_transfer

We may want to spin this crasher off into another bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153619</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-08 23:39:11 -0700</bug_when>
    <thetext>Confirmed that crash on site http://decafbad.com/2009/07/drag-and-drop/api-demos.html#data_transfer occurs in revisions &gt; 47839.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153620</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-08 23:44:19 -0700</bug_when>
    <thetext>I misspoke, the crash definitely does not occur in revision 47839, and starts in nightly build revision 47880. So, the crash could have appeared in some revision 47839 &lt; r &lt;= 47880.

(In reply to comment #6)
&gt; Confirmed that crash on site
&gt; http://decafbad.com/2009/07/drag-and-drop/api-demos.html#data_transfer occurs
&gt; in revisions &gt; 47839.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153636</commentid>
    <comment_count>8</comment_count>
      <attachid>40938</attachid>
    <who name="">webkit</who>
    <bug_when>2009-10-09 02:20:43 -0700</bug_when>
    <thetext>Created attachment 40938
Reduced testcase working in WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153637</commentid>
    <comment_count>9</comment_count>
      <attachid>40938</attachid>
    <who name="">webkit</who>
    <bug_when>2009-10-09 02:23:28 -0700</bug_when>
    <thetext>Comment on attachment 40938
Reduced testcase working in WebKit

Ok, I reduced the code as much as I could and managed to get same-domain drag and drop *working* in recent WebKit builds (sans crash). Am I missing something here?!

Testcase should alert &apos;one&apos;, &apos;two&apos;, &apos;three&apos; if successful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153809</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-09 16:39:16 -0700</bug_when>
    <thetext>Filed new bug #30266 regarding crasher.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153810</commentid>
    <comment_count>11</comment_count>
      <attachid>40932</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-09 16:39:51 -0700</bug_when>
    <thetext>Comment on attachment 40932
Crash dump for http://decafbad.com/2009/07/drag-and-drop/api-demos.html#data_transfer

Obsolete. See bug #30266.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711669</commentid>
    <comment_count>12</comment_count>
    <who name="Eli Grey (:sephr)">bugmail</who>
    <bug_when>2012-09-04 19:12:30 -0700</bug_when>
    <thetext>(In reply to comment #9)

Yes, you&apos;re missing getData() in dragstart.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823876</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-03 13:57:37 -0800</bug_when>
    <thetext>I see &quot;one&quot;, &quot;two&quot;, &quot;three&quot; when I drag &amp; drop in the attached test case on the nightly build of WebKit? Does that mean this bug has been fixed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823886</commentid>
    <comment_count>14</comment_count>
    <who name="Eli Grey (:sephr)">bugmail</who>
    <bug_when>2013-02-03 14:32:36 -0800</bug_when>
    <thetext>(In reply to comment #13)
Does that mean this bug has been fixed?

No, the reduced testcase doesn&apos;t test for dataTransfer.getData() in a dragstart event. I&apos;m not sure if the URL works as intended anymore for illustrating the issue so there will have to be a new testcase written.

This bug has nothing to do with dnd crashes discussed above, just getData() not returning any data in dragstart events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823961</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-03 18:25:00 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; Does that mean this bug has been fixed?

It appears so.

&gt; No, the reduced testcase doesn&apos;t test for dataTransfer.getData() in a dragstart event. I&apos;m not sure if the URL works as intended anymore for illustrating the issue so there will have to be a new testcase written.

?? Open https://bug-23695-attachments.webkit.org/attachment.cgi?id=40938.

&gt; This bug has nothing to do with dnd crashes discussed above, just getData() not returning any data in dragstart events.

I&apos;m well aware of that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836349</commentid>
    <comment_count>16</comment_count>
    <who name="Eli Grey (:sephr)">bugmail</who>
    <bug_when>2013-02-19 06:58:31 -0800</bug_when>
    <thetext>I just found an old testcase for this issue I made a few years ago that still runs properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836351</commentid>
    <comment_count>17</comment_count>
    <who name="Eli Grey (:sephr)">bugmail</who>
    <bug_when>2013-02-19 07:00:41 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; ?? Open https://bug-23695-attachments.webkit.org/attachment.cgi?id=40938.

I was referring to the URL I assigned to the issue, not the reduced testcase URL. Anyways, http://code.eligrey.com/tests/all/dataTransfer.getData.html should properly illustrate the issue. Try dragging any data on that page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836692</commentid>
    <comment_count>18</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2013-02-19 12:54:31 -0800</bug_when>
    <thetext>*** Bug 109865 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848112</commentid>
    <comment_count>19</comment_count>
      <attachid>191573</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2013-03-05 14:52:02 -0800</bug_when>
    <thetext>Created attachment 191573
Patch

Experimental patch to find EWS failures. Updates the access policy to be a permissions bitmask, and temporarily mangles the names that didn&apos;t change to make sure all instances are updated correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848228</commentid>
    <comment_count>20</comment_count>
      <attachid>191573</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-05 16:29:41 -0800</bug_when>
    <thetext>Comment on attachment 191573
Patch

Attachment 191573 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17036068</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848236</commentid>
    <comment_count>21</comment_count>
      <attachid>191573</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-05 16:35:22 -0800</bug_when>
    <thetext>Comment on attachment 191573
Patch

Attachment 191573 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17015038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848262</commentid>
    <comment_count>22</comment_count>
      <attachid>191573</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-05 16:55:48 -0800</bug_when>
    <thetext>Comment on attachment 191573
Patch

Attachment 191573 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17009200</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848493</commentid>
    <comment_count>23</comment_count>
      <attachid>191573</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-05 22:59:00 -0800</bug_when>
    <thetext>Comment on attachment 191573
Patch

Attachment 191573 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17042169</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848587</commentid>
    <comment_count>24</comment_count>
    <who name="Andruid Kerne">andruid</who>
    <bug_when>2013-03-06 00:54:21 -0800</bug_when>
    <thetext>The name of this bug distracts from part of the problem.

The data should not just be readable in dragstart. It must also be writable!

Firefox does (properly) enable this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848657</commentid>
    <comment_count>25</comment_count>
      <attachid>191573</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-06 02:29:14 -0800</bug_when>
    <thetext>Comment on attachment 191573
Patch

Attachment 191573 did not pass win-ews (win):
Output: http://webkit-commit-queue.appspot.com/results/17049301</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848828</commentid>
    <comment_count>26</comment_count>
      <attachid>191573</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-06 07:01:28 -0800</bug_when>
    <thetext>Comment on attachment 191573
Patch

Attachment 191573 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17047219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860987</commentid>
    <comment_count>27</comment_count>
      <attachid>194415</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2013-03-21 18:48:06 -0700</bug_when>
    <thetext>Created attachment 194415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861623</commentid>
    <comment_count>28</comment_count>
      <attachid>194415</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-22 10:25:49 -0700</bug_when>
    <thetext>Comment on attachment 194415
Patch

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

The code change for the bug fix is actually pretty small.  I recomment splitting this into two changes.  First, a refactor change that renames ClipboardWritable to ClipboardReadableAndWritable, adds the can*() methods and switches to using them.  A second change with just the bug fix (should be pretty small at that point).

&gt; Source/WebCore/ChangeLog:18
&gt; +        implementations to check permissions.
&gt; +
&gt; +        Tests: editing/pasteboard/can-read-in-copy-and-cut-events.html

You should also mention that this change allows reading the data store during cut and copy events.

&gt; Source/WebCore/ChangeLog:38
&gt; +        (WebCore::Editor::tryDHTMLCopy):
&gt; +        (WebCore::Editor::tryDHTMLCut):

Please highlight the behavior changes in this part of the ChangeLog.  E.g., the cut/copy bug fix is here.

&gt; Source/WebCore/ChangeLog:48
&gt; +        * page/EventHandler.cpp:
&gt; +        (WebCore::EventHandler::handleDrag):

And this is the drag fix.

&gt; Source/WebCore/dom/Clipboard.cpp:54
&gt; +    ASSERT(m_policy != None || policy == ClipboardNumb);
&gt; +    switch (policy) {
&gt; +    case ClipboardReadable:
&gt; +        m_policy = static_cast&lt;AccessPolicy&gt;(ReadableTypes | ReadableData);
&gt; +        break;

Having m_policy be a different type doesn&apos;t seem to be a huge benefit and is a bit confusing.  Why not keep m_policy as a ClipboardAccessPolicy and use the helper methods (canReadTypes(), canReadData(), etc) for checking the different enum values?

&gt; Source/WebCore/dom/Clipboard.cpp:65
&gt; +    default:

No default needed and without it, adding a new value to ClipboardAccessPolicy will trigger a compiler error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861626</commentid>
    <comment_count>29</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-22 10:26:37 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; The code change for the bug fix is actually pretty small.  I recomment ...

Err, recommend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861653</commentid>
    <comment_count>30</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2013-03-22 10:44:51 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 194415 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194415&amp;action=review
&gt; 
&gt; The code change for the bug fix is actually pretty small.  I recomment splitting this into two changes.  First, a refactor change that renames ClipboardWritable to ClipboardReadableAndWritable, adds the can*() methods and switches to using them.  A second change with just the bug fix (should be pretty small at that point).

I think it would be kind of strange to separate it into two changes. If I have a patch that renames ClipboardWritable -&gt; ClipboardReadableAndWritable, that patch would introduce a logically incorrect enum name since the clipboard&apos;s not actually readable still without the bug fix...

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:18
&gt; &gt; +        implementations to check permissions.
&gt; &gt; +
&gt; &gt; +        Tests: editing/pasteboard/can-read-in-copy-and-cut-events.html
&gt; 
&gt; You should also mention that this change allows reading the data store during cut and copy events.

Done.

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:38
&gt; &gt; +        (WebCore::Editor::tryDHTMLCopy):
&gt; &gt; +        (WebCore::Editor::tryDHTMLCut):
&gt; 
&gt; Please highlight the behavior changes in this part of the ChangeLog.  E.g., the cut/copy bug fix is here.

Strictly speaking, in the current implementation, this is just a renaming change. The actual behavior fixes are in getData() and friends.

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:48
&gt; &gt; +        * page/EventHandler.cpp:
&gt; &gt; +        (WebCore::EventHandler::handleDrag):
&gt; 
&gt; And this is the drag fix.

Ditto.

&gt; 
&gt; &gt; Source/WebCore/dom/Clipboard.cpp:54
&gt; &gt; +    ASSERT(m_policy != None || policy == ClipboardNumb);
&gt; &gt; +    switch (policy) {
&gt; &gt; +    case ClipboardReadable:
&gt; &gt; +        m_policy = static_cast&lt;AccessPolicy&gt;(ReadableTypes | ReadableData);
&gt; &gt; +        break;
&gt; 
&gt; Having m_policy be a different type doesn&apos;t seem to be a huge benefit and is a bit confusing.  Why not keep m_policy as a ClipboardAccessPolicy and use the helper methods (canReadTypes(), canReadData(), etc) for checking the different enum values?

The intent was to reduce the complexity and possible error on the part of external callers. If I just reused the same enum, I&apos;d have to define a bitmask position for the writable bit and a caller could accidentally pass that in or compare against that directly. This could easily happen in some place like EventHandler::createDraggingClipboard or Editor::newGeneralClipboard.

Another alternative is to just add the helper functions and not change any of the existing enum definitions.
bool canReadData() const { return m_policy == ClipboardReadable || m_policy == ClipboardWritable; }

etc

The reason I chose the bitmask is I thought it was a better representation of what the Clipboard actually wanted to enforce internally.

&gt; 
&gt; &gt; Source/WebCore/dom/Clipboard.cpp:65
&gt; &gt; +    default:
&gt; 
&gt; No default needed and without it, adding a new value to ClipboardAccessPolicy will trigger a compiler error.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861654</commentid>
    <comment_count>31</comment_count>
      <attachid>194590</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2013-03-22 10:45:29 -0700</bug_when>
    <thetext>Created attachment 194590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861718</commentid>
    <comment_count>32</comment_count>
      <attachid>194606</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2013-03-22 11:46:34 -0700</bug_when>
    <thetext>Created attachment 194606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861723</commentid>
    <comment_count>33</comment_count>
      <attachid>194607</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2013-03-22 11:50:56 -0700</bug_when>
    <thetext>Created attachment 194607
Patch

Fix inverted logic in ClipboardQt and ClipboardWin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861746</commentid>
    <comment_count>34</comment_count>
      <attachid>194607</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-22 12:13:29 -0700</bug_when>
    <thetext>Comment on attachment 194607
Patch

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

&gt; Source/WebCore/dom/Clipboard.cpp:182
&gt; -    if (m_policy == ClipboardReadable || m_policy == ClipboardTypesReadable)
&gt; -        m_dropEffect = effect;
&gt; +    m_dropEffect = effect;

Is this bug fix related?  Can we do this in a separate patch?

&gt; Source/WebCore/dom/Clipboard.h:121
&gt; +        // Instead of using this member directly, prefer to use the can*() methods above.
&gt;          ClipboardAccessPolicy m_policy;

In the future, we may want to make a class to wrap ClipboardAccessPolicy to make it impossible to use m_policy incorrectly.

&gt; Source/WebCore/platform/blackberry/ClipboardBlackBerry.cpp:61
&gt; -    if (policy() != ClipboardReadable)
&gt; +    if (!canReadData())

I see, this is the getData bug fix: ClipboardTypesReadable and ClipboardWritable now allow getData.  Please mention this in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861765</commentid>
    <comment_count>35</comment_count>
      <attachid>194618</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2013-03-22 12:34:54 -0700</bug_when>
    <thetext>Created attachment 194618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861769</commentid>
    <comment_count>36</comment_count>
      <attachid>194618</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-22 12:37:24 -0700</bug_when>
    <thetext>Comment on attachment 194618
Patch

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

&gt; Source/WebCore/ChangeLog:33
&gt; +        (WebCore::ClipboardBlackBerry::getData):

Please mention that the fix is here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861790</commentid>
    <comment_count>37</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2013-03-22 13:06:38 -0700</bug_when>
    <thetext>Committed r146644: &lt;http://trac.webkit.org/changeset/146644&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862138</commentid>
    <comment_count>38</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-22 21:51:59 -0700</bug_when>
    <thetext>The tests added in this patch are crashing on Qt:
http://build.webkit.org/results/Qt%20Linux%20Release/r146705%20(58724)/results.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>40932</attachid>
            <date>2009-10-08 23:07:28 -0700</date>
            <delta_ts>2009-10-09 16:39:51 -0700</delta_ts>
            <desc>Crash dump for http://decafbad.com/2009/07/drag-and-drop/api-demos.html#data_transfer</desc>
            <filename>Safari_2009-10-08-230355_pbar.crash</filename>
            <type>text/plain</type>
            <size>31210</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">UHJvY2VzczogICAgICAgICBTYWZhcmkgWzgzOTkxXQpQYXRoOiAgICAgICAgICAgIC9Wb2x1bWVz
L1dlYktpdC9XZWJLaXQuYXBwL0NvbnRlbnRzL01hY09TL1dlYktpdApJZGVudGlmaWVyOiAgICAg
IG9yZy53ZWJraXQubmlnaHRseS5XZWJLaXQKVmVyc2lvbjogICAgICAgICByNDkyODMgKDQ5Mjgz
KQpDb2RlIFR5cGU6ICAgICAgIFg4NiAoTmF0aXZlKQpQYXJlbnQgUHJvY2VzczogIGxhdW5jaGQg
WzIyNF0KCkRhdGUvVGltZTogICAgICAgMjAwOS0xMC0wOCAyMzowMzo1NS4yOTUgLTA3MDAKT1Mg
VmVyc2lvbjogICAgICBNYWMgT1MgWCAxMC41LjggKDlMMzFhKQpSZXBvcnQgVmVyc2lvbjogIDYK
QW5vbnltb3VzIFVVSUQ6ICAwREExREEzNi00MzZCLTRDNUEtQURBOS0yNjM5QTVDMzU4MkUKCkV4
Y2VwdGlvbiBUeXBlOiAgRVhDX0JBRF9BQ0NFU1MgKFNJR0JVUykKRXhjZXB0aW9uIENvZGVzOiBL
RVJOX1BST1RFQ1RJT05fRkFJTFVSRSBhdCAweDAwMDAwMDAwMDAwMDAwMGMKQ3Jhc2hlZCBUaHJl
YWQ6ICAwCgpUaHJlYWQgMCBDcmFzaGVkOgowICAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAg
ICAgCTB4MDEwMzQ2YWEgV1RGOjpIYXNoU2V0PFdlYkNvcmU6OlN0cmluZywgV2ViQ29yZTo6U3Ry
aW5nSGFzaCwgV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OlN0cmluZz4gPjo6YWRkKFdlYkNvcmU6
OlN0cmluZyBjb25zdCYpICsgNDIKMSAgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkw
eDAxMDVkYTY2IFdlYkNvcmU6OkNsaXBib2FyZE1hYzo6dHlwZXMoKSBjb25zdCArIDEwNzgKMiAg
IGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAxMzViODcxIFdlYkNvcmU6OkpTQ2xp
cGJvYXJkOjp0eXBlcyhKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0ICsgMzMKMyAgIGNvbS5hcHBsZS5X
ZWJDb3JlICAgICAgICAgICAgIAkweDAxMzU5NGNiIFdlYkNvcmU6OmpzQ2xpcGJvYXJkVHlwZXMo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OklkZW50aWZpZXIgY29uc3QmLCBKU0M6OlByb3BlcnR5U2xv
dCBjb25zdCYpICsgMjcKNCAgIGNvbS5hcHBsZS5KYXZhU2NyaXB0Q29yZSAgICAgIAkweDAwNWQ2
OTQ4IEpTQzo6SlNWYWx1ZTo6Z2V0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpJZGVudGlmaWVyIGNv
bnN0JiwgSlNDOjpQcm9wZXJ0eVNsb3QmKSBjb25zdCArIDM0NAo1ICAgY29tLmFwcGxlLkphdmFT
Y3JpcHRDb3JlICAgICAgCTB4MDA1ZDE4MWUgY3RpX29wX2dldF9ieV9pZCArIDEyNgo2ICAgPz8/
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCTB4MTk3MTZkNzYgMCArIDQyNjg2Mzk5MAo3ICAg
Y29tLmFwcGxlLkphdmFTY3JpcHRDb3JlICAgICAgCTB4MDA1N2E2NWUgSlNDOjpJbnRlcnByZXRl
cjo6ZXhlY3V0ZShKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU0Z1bmN0aW9uKiwgSlNDOjpKU09iamVjdCosIEpTQzo6QXJnTGlzdCBjb25zdCYsIEpTQzo6
U2NvcGVDaGFpbk5vZGUqLCBKU0M6OkpTVmFsdWUqKSArIDgxNAo4ICAgY29tLmFwcGxlLkphdmFT
Y3JpcHRDb3JlICAgICAgCTB4MDA0YzFkN2EgSlNDOjpjYWxsKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBKU0M6OkNhbGxUeXBlLCBKU0M6OkNhbGxEYXRhIGNvbnN0JiwgSlNDOjpKU1Zh
bHVlLCBKU0M6OkFyZ0xpc3QgY29uc3QmKSArIDM0Ngo5ICAgY29tLmFwcGxlLldlYkNvcmUgICAg
ICAgICAgICAgCTB4MDEzZmEwMWEgV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVu
dChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSArIDIx
NzAKMTAgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAxMjBjOTZjIFdlYkNvcmU6
OkV2ZW50VGFyZ2V0OjpmaXJlRXZlbnRMaXN0ZW5lcnMoV2ViQ29yZTo6RXZlbnQqKSArIDIyMAox
MSAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDE2MjBmZDQgV2ViQ29yZTo6Tm9k
ZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkV2ZW50Pikg
KyA0MzYKMTIgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAxNjIyMzU5IFdlYkNv
cmU6Ok5vZGU6OmRpc3BhdGNoRXZlbnQoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkV2ZW50Pikg
KyAyMTcKMTMgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAxMjBjMjIxIFdlYkNv
cmU6OkV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpF
dmVudD4sIGludCYpICsgOTcKMTQgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAx
MWZlNTA2IFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRXZlbnQoV2ViQ29yZTo6
QXRvbWljU3RyaW5nIGNvbnN0JiwgV2ViQ29yZTo6Tm9kZSosIFdlYkNvcmU6OlBsYXRmb3JtTW91
c2VFdmVudCBjb25zdCYsIFdlYkNvcmU6OkNsaXBib2FyZCopICsgMzc0CjE1ICBjb20uYXBwbGUu
V2ViQ29yZSAgICAgICAgICAgICAJMHgwMTIwMDFhYyBXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBl
cmZvcm1EcmFnQW5kRHJvcChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgY29uc3QmLCBXZWJD
b3JlOjpDbGlwYm9hcmQqKSArIDIyMAoxNiAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAg
CTB4MDExZTA4NGEgV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnBlcmZvcm1EcmFnKFdlYkNvcmU6
OkRyYWdEYXRhKikgKyAyOTgKMTcgIGNvbS5hcHBsZS5XZWJLaXQgICAgICAgICAgICAgIAkweDAw
Mzc3NTkxIC1bV2ViVmlldyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpdICsgMzUzCjE4ICBjb20uYXBw
bGUuQXBwS2l0ICAgICAgICAgICAgICAJMHg5MzZmNzczZCBOU0NvcmVEcmFnUmVjZWl2ZVByb2Mg
KyAxNDExCjE5ICBjb20uYXBwbGUuSElTZXJ2aWNlcyAgICAgICAgICAJMHg5NjM1ZjE4OCBEb0Ry
b3BNZXNzYWdlICsgOTcKMjAgIGNvbS5hcHBsZS5ISVNlcnZpY2VzICAgICAgICAgIAkweDk2MzVm
MGZlIFNlbmREcm9wTWVzc2FnZSArIDQxCjIxICBjb20uYXBwbGUuSElTZXJ2aWNlcyAgICAgICAg
ICAJMHg5NjM1YzQ2NiBEcmFnSW5BcHBsaWNhdGlvbiArIDQ5MgoyMiAgY29tLmFwcGxlLkhJU2Vy
dmljZXMgICAgICAgICAgCTB4OTYzNWFmMGEgQ29yZURyYWdTdGFydERyYWdnaW5nICsgNTM5CjIz
ICBjb20uYXBwbGUuQXBwS2l0ICAgICAgICAgICAgICAJMHg5MzZmNTVjMSAtW05TQ29yZURyYWdN
YW5hZ2VyIF9kcmFnVW50aWxNb3VzZVVwOmFjY2VwdGVkOl0gKyA1OTcKMjQgIGNvbS5hcHBsZS5B
cHBLaXQgICAgICAgICAgICAgIAkweDkzNmY0NGUyIC1bTlNDb3JlRHJhZ01hbmFnZXIgZHJhZ0lt
YWdlOmZyb21XaW5kb3c6YXQ6b2Zmc2V0OmV2ZW50OnBhc3RlYm9hcmQ6c291cmNlOnNsaWRlQmFj
azpdICsgMTQ1MgoyNSAgY29tLmFwcGxlLkFwcEtpdCAgICAgICAgICAgICAgCTB4OTM2ZjNmMmMg
LVtOU1dpbmRvdyhOU0RyYWcpIGRyYWdJbWFnZTphdDpvZmZzZXQ6ZXZlbnQ6cGFzdGVib2FyZDpz
b3VyY2U6c2xpZGVCYWNrOl0gKyAxMjcKMjYgIGNvbS5hcHBsZS5XZWJLaXQgICAgICAgICAgICAg
IAkweDAwMzI2NGU4IC1bV2ViSFRNTFZpZXcgZHJhZ0ltYWdlOmF0Om9mZnNldDpldmVudDpwYXN0
ZWJvYXJkOnNvdXJjZTpzbGlkZUJhY2s6XSArIDEzNgoyNyAgY29tLmFwcGxlLldlYktpdCAgICAg
ICAgICAgICAgCTB4MDAzMDE3NGYgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKFdURjo6UmV0YWlu
UHRyPE5TSW1hZ2U+LCBXZWJDb3JlOjpJbnRQb2ludCBjb25zdCYsIFdlYkNvcmU6OkludFBvaW50
IGNvbnN0JiwgV2ViQ29yZTo6Q2xpcGJvYXJkKiwgV2ViQ29yZTo6RnJhbWUqLCBib29sKSArIDcx
OQoyOCAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDExZGU0MmUgV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhXVEY6OlJldGFpblB0cjxOU0ltYWdlPiwgV2Vi
Q29yZTo6SW50UG9pbnQgY29uc3QmLCBXZWJDb3JlOjpJbnRQb2ludCBjb25zdCYsIFdlYkNvcmU6
OkNsaXBib2FyZCosIFdlYkNvcmU6OkZyYW1lKiwgYm9vbCkgKyAyNTQKMjkgIGNvbS5hcHBsZS5X
ZWJDb3JlICAgICAgICAgICAgIAkweDAxMWUxMGNmIFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpz
dGFydERyYWcoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpDbGlwYm9hcmQqLCBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uLCBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgY29uc3QmLCBXZWJDb3Jl
OjpJbnRQb2ludCBjb25zdCYsIGJvb2wpICsgMTE4MwozMCAgY29tLmFwcGxlLldlYkNvcmUgICAg
ICAgICAgICAgCTB4MDEyMDBiYTkgV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKFdl
YkNvcmU6Ok1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgY29uc3QmKSArIDEzMjEKMzEgIGNv
bS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAxMjAzYmExIFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoV2ViQ29yZTo6TW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyBjb25zdCYpICsgMzMKMzIgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAg
IAkweDAxMjA0MWFlIFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQo
V2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50IGNvbnN0JiwgV2ViQ29yZTo6SGl0VGVzdFJlc3Vs
dCopICsgMTI0NgozMyAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDEyMDhlNjEg
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjptb3VzZURyYWdnZWQoTlNFdmVudCopICsgMzUzCjM0ICBj
b20uYXBwbGUuV2ViS2l0ICAgICAgICAgICAgICAJMHgwMDMyYzFhNCAtW1dlYkhUTUxWaWV3IG1v
dXNlRHJhZ2dlZDpdICsgMjc2CjM1ICBjb20uYXBwbGUuQXBwS2l0ICAgICAgICAgICAgICAJMHg5
MzRmMjczMSAtW05TV2luZG93IHNlbmRFdmVudDpdICsgODUxMQozNiAgY29tLmFwcGxlLlNhZmFy
aSAgICAgICAgICAgICAgCTB4MDAwNDU0YjQgMHgxMDAwICsgMjc5NzMyCjM3ICBjb20uYXBwbGUu
QXBwS2l0ICAgICAgICAgICAgICAJMHg5MzRiZTZhNSAtW05TQXBwbGljYXRpb24gc2VuZEV2ZW50
Ol0gKyAyOTM5CjM4ICBjb20uYXBwbGUuU2FmYXJpICAgICAgICAgICAgICAJMHgwMDAzMGQ2ZiAw
eDEwMDAgKyAxOTU5NTEKMzkgIGNvbS5hcHBsZS5BcHBLaXQgICAgICAgICAgICAgIAkweDkzNDFi
ZmU3IC1bTlNBcHBsaWNhdGlvbiBydW5dICsgODY3CjQwICBjb20uYXBwbGUuQXBwS2l0ICAgICAg
ICAgICAgICAJMHg5MzNlOTFkOCBOU0FwcGxpY2F0aW9uTWFpbiArIDU3NAo0MSAgY29tLmFwcGxl
LlNhZmFyaSAgICAgICAgICAgICAgCTB4MDAwMDJjOTIgMHgxMDAwICsgNzMxNAoKVGhyZWFkIDE6
CjAgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5NjA4MzQ2ZSBfX3NlbXdhaXRf
c2lnbmFsICsgMTAKMSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDk2MGQ4ZTcx
IHNsZWVwJFVOSVgyMDAzICsgNjMKMiAgIGNvbS5hcHBsZS5KYXZhU2NyaXB0Q29yZSAgICAgIAkw
eDAwNGE4M2RlIFdURjo6VENNYWxsb2NfUGFnZUhlYXA6OnNjYXZlbmdlclRocmVhZCgpICsgMTQy
CjMgICBjb20uYXBwbGUuSmF2YVNjcmlwdENvcmUgICAgICAJMHgwMDRhODViZiBXVEY6OlRDTWFs
bG9jX1BhZ2VIZWFwOjpydW5TY2F2ZW5nZXJUaHJlYWQodm9pZCopICsgMTUKNCAgIGxpYlN5c3Rl
bS5CLmR5bGliICAgICAgICAgICAgIAkweDk2MGFkMTU1IF9wdGhyZWFkX3N0YXJ0ICsgMzIxCjUg
ICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5NjBhZDAxMiB0aHJlYWRfc3RhcnQg
KyAzNAoKVGhyZWFkIDI6CjAgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5NjA4
MzQ2ZSBfX3NlbXdhaXRfc2lnbmFsICsgMTAKMSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAg
ICAgIAkweDk2MGFkZGNkIHB0aHJlYWRfY29uZF93YWl0JFVOSVgyMDAzICsgNzMKMiAgIGNvbS5h
cHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAxMmVkN2M0IFdlYkNvcmU6Okljb25EYXRhYmFz
ZTo6c3luY1RocmVhZE1haW5Mb29wKCkgKyAyNjAKMyAgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAg
ICAgICAgIAkweDAxMmVmZDc0IFdlYkNvcmU6Okljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3lu
Y1RocmVhZCgpICsgMTgwCjQgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5NjBh
ZDE1NSBfcHRocmVhZF9zdGFydCArIDMyMQo1ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAg
ICAgCTB4OTYwYWQwMTIgdGhyZWFkX3N0YXJ0ICsgMzQKClRocmVhZCAzOgowICAgbGliU3lzdGVt
LkIuZHlsaWIgICAgICAgICAgICAgCTB4OTYwN2MyODYgbWFjaF9tc2dfdHJhcCArIDEwCjEgICBs
aWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5NjA4M2E3YyBtYWNoX21zZyArIDcyCjIg
ICBjb20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAgICAJMHg5NjRmOWU3ZSBDRlJ1bkxvb3BSdW5T
cGVjaWZpYyArIDE3OTAKMyAgIGNvbS5hcHBsZS5Db3JlRm91bmRhdGlvbiAgICAgIAkweDk2NGZh
YWE4IENGUnVuTG9vcFJ1bkluTW9kZSArIDg4CjQgICBjb20uYXBwbGUuQ0ZOZXR3b3JrICAgICAg
ICAgICAJMHg5NTZjODI2NCBDRlVSTENhY2hlV29ya2VyVGhyZWFkKHZvaWQqKSArIDM4OAo1ICAg
bGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTYwYWQxNTUgX3B0aHJlYWRfc3RhcnQg
KyAzMjEKNiAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDk2MGFkMDEyIHRocmVh
ZF9zdGFydCArIDM0CgpUaHJlYWQgNDoKMCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAg
IAkweDk2MDdjMjg2IG1hY2hfbXNnX3RyYXAgKyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAg
ICAgICAgICAgCTB4OTYwODNhN2MgbWFjaF9tc2cgKyA3MgoyICAgY29tLmFwcGxlLkNvcmVGb3Vu
ZGF0aW9uICAgICAgCTB4OTY0ZjllN2UgQ0ZSdW5Mb29wUnVuU3BlY2lmaWMgKyAxNzkwCjMgICBj
b20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAgICAJMHg5NjRmYWFhOCBDRlJ1bkxvb3BSdW5Jbk1v
ZGUgKyA4OAo0ICAgY29tLmFwcGxlLlNhZmFyaSAgICAgICAgICAgICAgCTB4MDAwMjViZWIgMHgx
MDAwICsgMTUwNTA3CjUgICBjb20uYXBwbGUuU2FmYXJpICAgICAgICAgICAgICAJMHgwMDAyNTkx
NCAweDEwMDAgKyAxNDk3ODAKNiAgIGNvbS5hcHBsZS5TYWZhcmkgICAgICAgICAgICAgIAkweDAw
MDI1ODlmIDB4MTAwMCArIDE0OTY2Mwo3ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAg
CTB4OTYwYWQxNTUgX3B0aHJlYWRfc3RhcnQgKyAzMjEKOCAgIGxpYlN5c3RlbS5CLmR5bGliICAg
ICAgICAgICAgIAkweDk2MGFkMDEyIHRocmVhZF9zdGFydCArIDM0CgpUaHJlYWQgNToKMCAgIGxp
YlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDk2MDdjMjg2IG1hY2hfbXNnX3RyYXAgKyAx
MAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTYwODNhN2MgbWFjaF9tc2cg
KyA3MgoyICAgY29tLmFwcGxlLkNvcmVGb3VuZGF0aW9uICAgICAgCTB4OTY0ZjllN2UgQ0ZSdW5M
b29wUnVuU3BlY2lmaWMgKyAxNzkwCjMgICBjb20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAgICAJ
MHg5NjRmYWFhOCBDRlJ1bkxvb3BSdW5Jbk1vZGUgKyA4OAo0ICAgY29tLmFwcGxlLkZvdW5kYXRp
b24gICAgICAgICAgCTB4OTJiZmE1MjAgK1tOU1VSTENvbm5lY3Rpb24oTlNVUkxDb25uZWN0aW9u
UmVhbGx5SW50ZXJuYWwpIF9yZXNvdXJjZUxvYWRMb29wOl0gKyAzMjAKNSAgIGNvbS5hcHBsZS5G
b3VuZGF0aW9uICAgICAgICAgIAkweDkyYjk2ZGZkIC1bTlNUaHJlYWQgbWFpbl0gKyA0NQo2ICAg
Y29tLmFwcGxlLkZvdW5kYXRpb24gICAgICAgICAgCTB4OTJiOTY5YTQgX19OU1RocmVhZF9fbWFp
bl9fICsgMzA4CjcgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5NjBhZDE1NSBf
cHRocmVhZF9zdGFydCArIDMyMQo4ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4
OTYwYWQwMTIgdGhyZWFkX3N0YXJ0ICsgMzQKClRocmVhZCA2OgowICAgbGliU3lzdGVtLkIuZHls
aWIgICAgICAgICAgICAgCTB4OTYwODM0NmUgX19zZW13YWl0X3NpZ25hbCArIDEwCjEgICBsaWJT
eXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5NjBhZGRjZCBwdGhyZWFkX2NvbmRfd2FpdCRV
TklYMjAwMyArIDczCjIgICBjb20uYXBwbGUuSmF2YVNjcmlwdENvcmUgICAgICAJMHgwMDYxZjIx
MSBXVEY6OlRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0KFdURjo6TXV0ZXgmLCBkb3VibGUpICsg
ODEKMyAgIGNvbS5hcHBsZS5TYWZhcmkgICAgICAgICAgICAgIAkweDAwMTE1ZTZmIDB4MTAwMCAr
IDExMzQxOTEKNCAgIGNvbS5hcHBsZS5TYWZhcmkgICAgICAgICAgICAgIAkweDAwMTE1ZjVkIDB4
MTAwMCArIDExMzQ0MjkKNSAgIGNvbS5hcHBsZS5TYWZhcmkgICAgICAgICAgICAgIAkweDAwMDQw
Y2JkIDB4MTAwMCArIDI2MTMwOQo2ICAgY29tLmFwcGxlLlNhZmFyaSAgICAgICAgICAgICAgCTB4
MDAwNDBjM2QgMHgxMDAwICsgMjYxMTgxCjcgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAg
ICAJMHg5NjBhZDE1NSBfcHRocmVhZF9zdGFydCArIDMyMQo4ICAgbGliU3lzdGVtLkIuZHlsaWIg
ICAgICAgICAgICAgCTB4OTYwYWQwMTIgdGhyZWFkX3N0YXJ0ICsgMzQKClRocmVhZCAwIGNyYXNo
ZWQgd2l0aCBYODYgVGhyZWFkIFN0YXRlICgzMi1iaXQpOgogIGVheDogMHgwMDAwMDAwMCAgZWJ4
OiAweDAxMDVkNjQ3ICBlY3g6IDB4MTdlY2I2MDAgIGVkeDogMHhiZmZmZGViYwogIGVkaTogMHhi
ZmZmZGZlOCAgZXNpOiAweDAwMDAwMDNmICBlYnA6IDB4YmZmZmRlNjggIGVzcDogMHhiZmZmZGUw
MAogICBzczogMHgwMDAwMDAxZiAgZWZsOiAweDAwMDEwMjgyICBlaXA6IDB4MDEwMzQ2YWEgICBj
czogMHgwMDAwMDAxNwogICBkczogMHgwMDAwMDAxZiAgIGVzOiAweDAwMDAwMDFmICAgZnM6IDB4
MDAwMDAwMDAgICBnczogMHgwMDAwMDAzNwogIGNyMjogMHgwMDAwMDAwYwoKQmluYXJ5IEltYWdl
czoKICAgIDB4MTAwMCAtICAgMHgyNzhmZjIgIGNvbS5hcHBsZS5TYWZhcmkgNC4wLjMgKDU1MzEu
OSkgPGJjNDExOGNmMzM3MTFhYTQyNWQxZDAxMzJiZmYwOTJlPiAvQXBwbGljYXRpb25zL1NhZmFy
aS5hcHAvQ29udGVudHMvTWFjT1MvU2FmYXJpCiAgMHgyZDgwMDAgLSAgIDB4MmRhZmY3ICtXZWJL
aXROaWdodGx5RW5hYmxlci5keWxpYiA/Pz8gKD8/PykgPDZkM2FjNWEwNWRkNzZjYzU2ZWY3MTBj
YzZlNmFjOGYwPiAvVm9sdW1lcy9XZWJLaXQvV2ViS2l0LmFwcC9Db250ZW50cy9SZXNvdXJjZXMv
V2ViS2l0TmlnaHRseUVuYWJsZXIuZHlsaWIKICAweDJlMDAwMCAtICAgMHgzZDNmZTcgIGNvbS5h
cHBsZS5XZWJLaXQgcjQ5MjgzICg1MzIuMispIDw0MDFhOWM2N2UyNjI4NWM1OTM5ODgzMmVhNjM0
MjhkMT4gL1ZvbHVtZXMvV2ViS2l0L1dlYktpdC5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8xMC41
L1dlYktpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9XZWJLaXQKICAweDQ4NTAwMCAtICAgMHg0OTRm
ZmMgIFN5bmRpY2F0aW9uVUkgPz8/ICg/Pz8pIDw0MWE3MDBjNTFlZTBkZjE2Mzk5ODYxZTE0MTdm
Y2E1ND4gL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL1N5bmRpY2F0aW9uVUkuZnJh
bWV3b3JrL1ZlcnNpb25zL0EvU3luZGljYXRpb25VSQogIDB4NGE0MDAwIC0gICAweDY0ZWZmZiAg
Y29tLmFwcGxlLkphdmFTY3JpcHRDb3JlIDUzMisgKDUzMi4yKykgPGY4NjJjZTEyMmJhMDIzZTU4
ZTU0MzQ2ZDMyM2U2ZmU3PiAvVm9sdW1lcy9XZWJLaXQvV2ViS2l0LmFwcC9Db250ZW50cy9GcmFt
ZXdvcmtzLzEwLjUvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvSmF2YVNjcmlw
dENvcmUKICAweDZhNjAwMCAtICAgMHg2Y2JmZjcgK29yZy5hbmR5bWF0dXNjaGFrLlNwYXJrbGUg
MS41IEJldGEgKGdpdCkgKDgzMGY2MzMpIDxhMmFkMDBiMDdiNGQ1YjJkMjg0Y2I3YjcwZGYyYTY4
Nz4gL1ZvbHVtZXMvV2ViS2l0L1dlYktpdC5hcHAvQ29udGVudHMvRnJhbWV3b3Jrcy8xMC41L1Nw
YXJrbGUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvU3BhcmtsZQogIDB4ZmU0MDAwIC0gIDB4MTliZWZl
NyAgY29tLmFwcGxlLldlYkNvcmUgNTMyKyAoNTMyLjIrKSA8MzNkM2Q0OTZmMjNmN2JjMjM1MjU5
NGFjM2VlNzE5M2E+IC9Wb2x1bWVzL1dlYktpdC9XZWJLaXQuYXBwL0NvbnRlbnRzL0ZyYW1ld29y
a3MvMTAuNS9XZWJDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL1dlYkNvcmUKMHgxMzZhMDAwMCAt
IDB4MTM4YTdmZWYgIGNvbS5hcHBsZS5SYXdDYW1lcmEuYnVuZGxlIDIuMS4wICg0NzQpIDw0OGE1
NzRkM2IzMjY5YzhkYmRjMzhkNmY2Nzg3OTMxNz4gL1N5c3RlbS9MaWJyYXJ5L0NvcmVTZXJ2aWNl
cy9SYXdDYW1lcmEuYnVuZGxlL0NvbnRlbnRzL01hY09TL1Jhd0NhbWVyYQoweDE3YjJlMDAwIC0g
MHgxN2IzM2ZmMyAgbGliQ0dYQ29yZUltYWdlLkEuZHlsaWIgPz8/ICg/Pz8pIDw1ZmQ0YmViODNl
MzIxYzZlN2QwZmYwODg1ZmY5NWIyOT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0NvcmVHcmFwaGlj
cy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9SZXNvdXJjZXMvbGliQ0dYQ29yZUltYWdlLkEuZHlsaWIK
MHgxOTExOTAwMCAtIDB4MTkxMWVmZmYgIGNvbS5hcHBsZS5EaWN0aW9uYXJ5U2VydmljZUNvbXBv
bmVudCAxLjEgKDEuMSkgPDQ4MTY5ODQ4ZmM2YTNhOTdiYjRkN2FlMzY1NzNjZjBjPiAvU3lzdGVt
L0xpYnJhcnkvQ29tcG9uZW50cy9EaWN0aW9uYXJ5U2VydmljZS5jb21wb25lbnQvQ29udGVudHMv
TWFjT1MvRGljdGlvbmFyeVNlcnZpY2UKMHg4ZmUwMDAwMCAtIDB4OGZlMmRiNDMgIGR5bGQgOTcu
MSAoPz8/KSA8NDU4ZWVkMzhhMDA5ZTU2NThhNzk1NzllN2JjMjY2MDM+IC91c3IvbGliL2R5bGQK
MHg5MDAwMzAwMCAtIDB4OTAwMDNmZmYgIGNvbS5hcHBsZS5DYXJib24gMTM2ICgxMzYpIDxlYzFk
NDE4NDkyNWU2NTJkYmUxYjkyMDBhNWE1NTJlYz4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q2FyYm9uLmZyYW1ld29yay9WZXJzaW9ucy9BL0NhcmJvbgoweDkwMDA0MDAwIC0gMHg5MDA3ZWZm
OCAgY29tLmFwcGxlLnByaW50LmZyYW1ld29yay5QcmludENvcmUgNS41LjQgKDI0NS42KSA8MDNk
MDU4NTA1OWMyMGNiMGJkZTVlMDAwNDM4YzQ5ZTE+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9Qcmlu
dENvcmUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUHJpbnRDb3JlCjB4OTAwN2YwMDAgLSAweDkwMDk0
ZmZiICBjb20uYXBwbGUuSW1hZ2VDYXB0dXJlIDUuMC4yICg1LjAuMikgL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvSW1hZ2VD
YXB0dXJlLmZyYW1ld29yay9WZXJzaW9ucy9BL0ltYWdlQ2FwdHVyZQoweDkwMDk1MDAwIC0gMHg5
MDE0Y2ZmMyAgY29tLmFwcGxlLlFUS2l0IDcuNi40ICgxMzI3LjczKSAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9RVEtpdAoweDkwMWMwMDAwIC0g
MHg5MDVkMGZlZiAgbGliQkxBUy5keWxpYiA/Pz8gKD8/PykgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQWNjZWxlcmF0ZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL3ZlY0xpYi5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9saWJCTEFTLmR5bGliCjB4OTA1ZDEwMDAgLSAweDkwNWYwZmZh
ICBsaWJKUEVHLmR5bGliID8/PyAoPz8/KSA8NTBiODgxZGQ1YTU3OTVkMzg0MDVjOWM4OGMyODA2
ZmE+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3
b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jl
c291cmNlcy9saWJKUEVHLmR5bGliCjB4OTA1ZjEwMDAgLSAweDkwNjMyZmU3ICBsaWJSSVAuQS5k
eWxpYiA/Pz8gKD8/PykgPGVjOWRmMjVhMWNhOGQ2NjhiZGE5MmYyYmFmNDA3OTU4PiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9u
cy9BL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNl
cy9saWJSSVAuQS5keWxpYgoweDkwNjMzMDAwIC0gMHg5MDk1OWZlMiAgY29tLmFwcGxlLlF1aWNr
VGltZSA3LjYuNCAoMTMyNy43MykgPDk2NTE1ZjZhMmQ2MjhjZDIxMDVjNzA4MjI5NTE5OWI1PiAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWlja1RpbWUuZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
UXVpY2tUaW1lCjB4OTA5NWEwMDAgLSAweDkwOTdlZmViICBsaWJzc2wuMC45LjcuZHlsaWIgPz8/
ICg/Pz8pIDw4MDg0NTkzYjc3M2JlYzhmMmI5NjE0ZmQyM2M1ZWQ3Mz4gL3Vzci9saWIvbGlic3Ns
LjAuOS43LmR5bGliCjB4OTBjMDUwMDAgLSAweDkwZmMzZmVhICBsaWJMQVBBQ0suZHlsaWIgPz8/
ICg/Pz8pIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FjY2VsZXJhdGUuZnJhbWV3b3JrL1Zl
cnNpb25zL0EvRnJhbWV3b3Jrcy92ZWNMaWIuZnJhbWV3b3JrL1ZlcnNpb25zL0EvbGliTEFQQUNL
LmR5bGliCjB4OTBmYzQwMDAgLSAweDkxMDQxZmVmICBsaWJ2TWlzYy5keWxpYiA/Pz8gKD8/Pykg
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQWNjZWxlcmF0ZS5mcmFtZXdvcmsvVmVyc2lvbnMv
QS9GcmFtZXdvcmtzL3ZlY0xpYi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9saWJ2TWlzYy5keWxpYgow
eDkxMDQyMDAwIC0gMHg5MTA3NGZmZiAgY29tLmFwcGxlLkxEQVBGcmFtZXdvcmsgMS40LjUgKDEx
MCkgPGNjMDQ1MDBjZjdiNmVkY2NjNzViYjNmZTI5NzNmNzJjPiAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9MREFQLmZyYW1ld29yay9WZXJzaW9ucy9BL0xEQVAKMHg5MTA3NTAwMCAtIDB4OTEx
ZjVmZmYgIGNvbS5hcHBsZS5BZGRyZXNzQm9vay5mcmFtZXdvcmsgNC4xLjIgKDcwMikgPGY5MzYw
Zjk5MjZjY2Q0MTFmZGY3NTUwYjczMDM0ZDE3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
ZGRyZXNzQm9vay5mcmFtZXdvcmsvVmVyc2lvbnMvQS9BZGRyZXNzQm9vawoweDkxMWY2MDAwIC0g
MHg5MTFmOGZmZiAgY29tLmFwcGxlLnNlY3VyaXR5aGkgMy4wICgzMDgxNykgPDAyMDQxOWFkMzNi
ODYzOGIxNzRlMWE0NzI3MjhhODk0PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9TZWN1cml0eUhJLmZyYW1ld29yay9WZXJz
aW9ucy9BL1NlY3VyaXR5SEkKMHg5MTFmOTAwMCAtIDB4OTE1OTZmZWYgIGNvbS5hcHBsZS5RdWFy
dHpDb3JlIDEuNS44ICgxLjUuOCkgPGEyOGZhNTQzNDZhOWY5ZDViM2JlZjA3NmExZWUwZmNmPiAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9B
L1F1YXJ0ekNvcmUKMHg5MTVjYTAwMCAtIDB4OTE2MjZmZjcgIGNvbS5hcHBsZS5odG1scmVuZGVy
aW5nIDY4ICgxLjEuMykgPGE5ZjY1ZmExYzQ2NjhkYzdjNDlhZjViZjdkNTI4N2FkPiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jr
cy9IVE1MUmVuZGVyaW5nLmZyYW1ld29yay9WZXJzaW9ucy9BL0hUTUxSZW5kZXJpbmcKMHg5MTYy
NzAwMCAtIDB4OTE3NzlmZjMgIGNvbS5hcHBsZS5hdWRpby50b29sYm94LkF1ZGlvVG9vbGJveCAx
LjUuMiAoMS41LjIpIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0F1ZGlvVG9vbGJveC5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9BdWRpb1Rvb2xib3gKMHg5MTc3YTAwMCAtIDB4OTE3ODlmZmUgIGNv
bS5hcHBsZS5EU09iakNXcmFwcGVycy5GcmFtZXdvcmsgMS4zICgxLjMpIDwwOWRlYjllMzJkMGQw
OWRmYjk1YWU1NjliZGQyYjdhND4gL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0RT
T2JqQ1dyYXBwZXJzLmZyYW1ld29yay9WZXJzaW9ucy9BL0RTT2JqQ1dyYXBwZXJzCjB4OTE3OGEw
MDAgLSAweDkxN2FlZmZmICBsaWJ4c2x0LjEuZHlsaWIgPz8/ICg/Pz8pIDwwYTk3NzhkNjM2OGFl
NjY4ODI2ZjQ0Njg3OGRlYjk5Yj4gL3Vzci9saWIvbGlieHNsdC4xLmR5bGliCjB4OTE3YWYwMDAg
LSAweDkxODM5ZmUzICBjb20uYXBwbGUuRGVza3RvcFNlcnZpY2VzIDEuNC44ICgxLjQuOCkgPGE2
ZWRlZjJkNDlmZmRlZTNiMDEwMTBiN2U2ZWRhYzFmPiAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZy
YW1ld29ya3MvRGVza3RvcFNlcnZpY2VzUHJpdi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9EZXNrdG9w
U2VydmljZXNQcml2CjB4OTE4M2EwMDAgLSAweDkxOGUxZmViICBjb20uYXBwbGUuUUQgMy4xMS41
NiAoPz8/KSA8YTk0ZDBmNTQzOGI3MzBlODhlNWVmZGIyMzMyOTVjNTI+IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJh
bWV3b3Jrcy9RRC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9RRAoweDkxOGUyMDAwIC0gMHg5MTkyMGZm
ZiAgbGliR0xJbWFnZS5keWxpYiA/Pz8gKD8/PykgPGE2NDI1YWViNzdmNGRhMTMyMTJhYzc1ZGY1
N2IwNTZkPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL1ZlcnNp
b25zL0EvTGlicmFyaWVzL2xpYkdMSW1hZ2UuZHlsaWIKMHg5MTkyMTAwMCAtIDB4OTE5YThmZjcg
IGxpYnNxbGl0ZTMuMC5keWxpYiA/Pz8gKD8/PykgPDMzMzRlYTVhZjdhOTExNjM3NDEzMzM0MTU0
YmI0MTAwPiAvdXNyL2xpYi9saWJzcWxpdGUzLjAuZHlsaWIKMHg5MTljMTAwMCAtIDB4OTE5YzJm
ZmMgIGxpYmZmaS5keWxpYiA/Pz8gKD8/PykgPDU5NmUwZGJmNjI2YjIxMTc0MWNlY2FhOTY5OGYy
NzFiPiAvdXNyL2xpYi9saWJmZmkuZHlsaWIKMHg5MTljMzAwMCAtIDB4OTFhZmNmZjcgIGxpYmlj
dWNvcmUuQS5keWxpYiA/Pz8gKD8/PykgPGRkOGFhNTFjMzU2ZTc5ZWY4Y2RmYTM0MWEwZDY5ZjVi
PiAvdXNyL2xpYi9saWJpY3Vjb3JlLkEuZHlsaWIKMHg5MWIwNTAwMCAtIDB4OTFiY2NmZjIgIGNv
bS5hcHBsZS52SW1hZ2UgMy4wICgzLjApIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FjY2Vs
ZXJhdGUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy92SW1hZ2UuZnJhbWV3b3JrL1Zl
cnNpb25zL0EvdkltYWdlCjB4OTJiOGMwMDAgLSAweDkyZTA4ZmU3ICBjb20uYXBwbGUuRm91bmRh
dGlvbiA2LjUuOSAoNjc3LjI2KSA8YzY4YjNjZmY3ODY0OTU5YmVjZmM3ZmQxYTM4NGY5MjU+IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0Mv
Rm91bmRhdGlvbgoweDkyZTA5MDAwIC0gMHg5MmUwOWZmOCAgY29tLmFwcGxlLkFwcGxpY2F0aW9u
U2VydmljZXMgMzQgKDM0KSA8ZTljZDdjODIzMDYyYzQzODJkODllM2M5OTk3ZjQ3Mzk+IC9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNp
b25zL0EvQXBwbGljYXRpb25TZXJ2aWNlcwoweDkyZTBhMDAwIC0gMHg5MmUxYWZmYyAgY29tLmFw
cGxlLkxhbmdBbmFseXNpcyAxLjYuNSAoMS42LjUpIDxkMDU3ZmViMzgxNjMxMjFmZmQ4NzFjNTY0
YzY5MjgwND4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0xhbmdBbmFseXNpcy5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9MYW5nQW5hbHlzaXMKMHg5MmU1MDAwMCAtIDB4OTJlY2RmZWIgIGNvbS5hcHBsZS5h
dWRpby5Db3JlQXVkaW8gMy4xLjIgKDMuMS4yKSA8NzgyYTA4YzQ0YmU0Njk4NTk3ZjRiYmQ3OWNh
YzIxYzY+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVBdWRpby5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9Db3JlQXVkaW8KMHg5MmVjZTAwMCAtIDB4OTJlZmZmZmIgIGNvbS5hcHBsZS5xdWFy
dHpmaWx0ZXJzIDEuNS4wICgxLjUuMCkgPDAxMDkwZDcyMDRjNTViMzJhNmExMTE5OWZhMGQyZTJi
PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
RnJhbWV3b3Jrcy9RdWFydHpGaWx0ZXJzLmZyYW1ld29yay9WZXJzaW9ucy9BL1F1YXJ0ekZpbHRl
cnMKMHg5MmYwMDAwMCAtIDB4OTJmMGZmZmYgIGxpYnNhc2wyLjIuZHlsaWIgPz8/ICg/Pz8pIDxi
Yjc5NzFjYTJmNjA5YzA3MGY4Nzc4NmE5M2QxMDQxZT4gL3Vzci9saWIvbGlic2FzbDIuMi5keWxp
YgoweDkyZjQwMDAwIC0gMHg5MmY0MGZmZSAgY29tLmFwcGxlLnF1YXJ0emZyYW1ld29yayAxLjUg
KDEuNSkgPDQ5YWZkN2U3ZTNiMmNhZDg5Y2ZhZjJhYzhjNjdjOGE0PiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL1ZlcnNpb25zL0EvUXVhcnR6CjB4OTJmNDEwMDAg
LSAweDkzMjFiZmYzICBjb20uYXBwbGUuQ29yZVNlcnZpY2VzLkNhcmJvbkNvcmUgNzg2LjExICg3
ODYuMTQpIDxkNWNjZWIyZmU5NTUxZDM0NWQ0MGRkMWVjZjQwOWVjMj4gL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3Mv
Q2FyYm9uQ29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9DYXJib25Db3JlCjB4OTMyMWMwMDAgLSAw
eDkzMjFjZmY4ICBjb20uYXBwbGUuQ29jb2EgNi41ICg/Pz8pIDxlOTMxOGM5MzYxNWIyNzIzMTQ5
OGJiZTU4NWI4ZGE5OD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3b3Jr
L1ZlcnNpb25zL0EvQ29jb2EKMHg5MzI4MzAwMCAtIDB4OTMyOTFmZmQgIGxpYnouMS5keWxpYiA/
Pz8gKD8/PykgPDU0NWNhMDk0NjcwMjVmNzcxMzFjZmFjMDlkOGI5Mzc1PiAvdXNyL2xpYi9saWJ6
LjEuZHlsaWIKMHg5MzI5MjAwMCAtIDB4OTMzMWZmZjcgIGNvbS5hcHBsZS5mcmFtZXdvcmsuSU9L
aXQgMS41LjIgKD8/PykgPDdhM2NjMjRmNzhmOTM5MzE3MzEyMDM4NTRhZTBkODkxPiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9JT0tpdAoweDkz
MzMyMDAwIC0gMHg5MzNlMmZmZiAgZWR1Lm1pdC5LZXJiZXJvcyA2LjAuMTMgKDYuMC4xMykgPDgw
NGJkMWIzZjA4ZmI1NzM5Njc4MWYwMTIwMDYzNjdjPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9LZXJiZXJvcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9LZXJiZXJvcwoweDkzM2UzMDAwIC0gMHg5
M2JlMWZlZiAgY29tLmFwcGxlLkFwcEtpdCA2LjUuOSAoOTQ5LjU0KSA8NGRmNWQyZTIyNzExNzU0
NTIxMDNmNzg5YjRmNGQ4YTg+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFt
ZXdvcmsvVmVyc2lvbnMvQy9BcHBLaXQKMHg5M2JlMjAwMCAtIDB4OTNkYjNmZmIgIGNvbS5hcHBs
ZS5zZWN1cml0eSA1LjAuNSAoMzYzNzEpIDwxZjdmNDhiMzZiYzkwZDExNDIyMGNjODFlNGU0Njk0
Zj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrL1ZlcnNpb25z
L0EvU2VjdXJpdHkKMHg5M2RiNDAwMCAtIDB4OTNlOWNmZjMgIGNvbS5hcHBsZS5Db3JlRGF0YSAx
MDAuMiAoMTg2LjIpIDw0NGRmMzI2ZmVhMDIzNjcxOGY1ZWQ2NDA4NGU4MjI3MD4gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29yZURhdGEK
MHg5M2U5ZDAwMCAtIDB4OTNlOWRmZmQgIGNvbS5hcHBsZS5BY2NlbGVyYXRlIDEuNC4yIChBY2Nl
bGVyYXRlIDEuNC4yKSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BY2NlbGVyYXRlLmZyYW1l
d29yay9WZXJzaW9ucy9BL0FjY2VsZXJhdGUKMHg5M2Y2ZDAwMCAtIDB4OTQwNGRmZmYgIGxpYm9i
amMuQS5keWxpYiA/Pz8gKD8/PykgPDdiOTI2MTNmZGY4MDRmZDlhMGEzNzMzYTA2NzRjMzBiPiAv
dXNyL2xpYi9saWJvYmpjLkEuZHlsaWIKMHg5NDA0ZTAwMCAtIDB4OTQwNjZmZmYgIGNvbS5hcHBs
ZS5vcGVuc2NyaXB0aW5nIDEuMi44ICg/Pz8pIDw1NzJjNzQ1MmQ3ZTc0MGU4OTQ4YTVhZDA3YTk5
NjAyYj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9WZXJzaW9u
cy9BL0ZyYW1ld29ya3MvT3BlblNjcmlwdGluZy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9PcGVuU2Ny
aXB0aW5nCjB4OTQwNjcwMDAgLSAweDk0MWFmZmY3ICBjb20uYXBwbGUuSW1hZ2VJTy5mcmFtZXdv
cmsgMi4wLjYgKDIuMC42KSA8N2Y3M2VmMzI4YzhlODU2NmYzZjIwNGI1YTU0MGE3ZjA+IC9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNp
b25zL0EvRnJhbWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9WZXJzaW9ucy9BL0ltYWdlSU8KMHg5
NDQxOTAwMCAtIDB4OTQ0NGZmZWYgIGxpYnRpZHkuQS5keWxpYiA/Pz8gKD8/PykgPDdiOWZjOTBk
YzBkNTBkYTI3YTI0ZjZmODRjY2RkN2I3PiAvdXNyL2xpYi9saWJ0aWR5LkEuZHlsaWIKMHg5NDQ1
MDAwMCAtIDB4OTQ1MzFmZjcgIGxpYnhtbDIuMi5keWxpYiA/Pz8gKD8/PykgPDlhNWQ0MTBkZTU3
Yzg3ZjcxZTJkNTMwYTE4NTliODk3PiAvdXNyL2xpYi9saWJ4bWwyLjIuZHlsaWIKMHg5NDUzMjAw
MCAtIDB4OTQ1NzRmZWYgIGNvbS5hcHBsZS5OYXZpZ2F0aW9uU2VydmljZXMgMy41LjIgKDE2Mykg
PDkxODQ0OTgwODA0MDY3YjA3YTBiNjEyNDMxMGQzZjMxPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9OYXZpZ2F0aW9uU2Vy
dmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvTmF2aWdhdGlvblNlcnZpY2VzCjB4OTQ1NzUwMDAg
LSAweDk0NTdlZmZmICBjb20uYXBwbGUuc3BlZWNoLnJlY29nbml0aW9uLmZyYW1ld29yayAzLjcu
MjQgKDMuNy4yNCkgPDZhNjUxOGIzOTJkM2Q0MWFjZTNkY2VhNjlkNjgwOWQ5PiAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9T
cGVlY2hSZWNvZ25pdGlvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TcGVlY2hSZWNvZ25pdGlvbgow
eDk0NWJjMDAwIC0gMHg5NDViY2ZmYiAgY29tLmFwcGxlLmluc3RhbGxzZXJ2ZXIuZnJhbWV3b3Jr
IDEuMCAoOCkgL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0luc3RhbGxTZXJ2ZXIu
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvSW5zdGFsbFNlcnZlcgoweDk0NWJkMDAwIC0gMHg5NDY2ZmZm
YiAgbGliY3J5cHRvLjAuOS43LmR5bGliID8/PyAoPz8/KSA8OWQ3MTRjOTI4NzJhOTNkZDEyN2Vh
ODU1NmIyYzg5NDU+IC91c3IvbGliL2xpYmNyeXB0by4wLjkuNy5keWxpYgoweDk0NjcwMDAwIC0g
MHg5NDY4MGZmZiAgY29tLmFwcGxlLnNwZWVjaC5zeW50aGVzaXMuZnJhbWV3b3JrIDMuNy4xICgz
LjcuMSkgPDA2ZDhmYzAzMDczMTRmOGZmYzE2ZjIwNmFkM2RiZjQ0PiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1l
d29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1ld29yay9WZXJzaW9ucy9BL1NwZWVjaFN5bnRoZXNp
cwoweDk0NjgxMDAwIC0gMHg5NDZhYWZmZiAgbGliY3Vwcy4yLmR5bGliID8/PyAoPz8/KSA8NzY0
Yzc0YTcxNzg1YWExMGYzY2FjMmVhZTA2ZjM3MmI+IC91c3IvbGliL2xpYmN1cHMuMi5keWxpYgow
eDk0NmFiMDAwIC0gMHg5NDZjM2ZmNyAgY29tLmFwcGxlLkNvcmVWaWRlbyAxLjYuMCAoMjAuMCkg
PDU4N2M5Yzg5NjYwNzBhN2Q1MDI3NmRiMzVlMWM3NmFhPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29yZVZpZGVvCjB4OTQ3MTMwMDAg
LSAweDk0YTFiZmU3ICBjb20uYXBwbGUuSElUb29sYm94IDEuNS42ICg/Pz8pIDxlZWNlM2NiOGFh
MGE0ZTY4NDNmY2MxNTAwYWNhNjFjNT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvSElUb29sYm94LmZyYW1ld29yay9WZXJz
aW9ucy9BL0hJVG9vbGJveAoweDk0YWY4MDAwIC0gMHg5NGIwM2ZlNyAgbGliQ1N5bmMuQS5keWxp
YiA/Pz8gKD8/PykgPDk0ZmFmMzU3MTUyN2E5OWQwYTg4MDkwMjRhYTllMWJlPiAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9B
L0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNlcy9s
aWJDU3luYy5BLmR5bGliCjB4OTUzZGIwMDAgLSAweDk1NDA0ZmZmICBjb20uYXBwbGUuQ29yZU1l
ZGlhUHJpdmF0ZSAxNS4wICgxNS4wKSAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3Mv
Q29yZU1lZGlhUHJpdmF0ZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlTWVkaWFQcml2YXRlCjB4
OTU0MDUwMDAgLSAweDk1NDIzZmYzICBjb20uYXBwbGUuRGlyZWN0b3J5U2VydmljZS5GcmFtZXdv
cmsgMy41LjYgKDMuNS42KSA8ZGFhMTMwNzczNzE5N2M3NzU3ZjQ0ZjE2MzcwMjQ5ZGM+IC9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0RpcmVjdG9yeVNlcnZpY2UuZnJhbWV3b3JrL1ZlcnNpb25z
L0EvRGlyZWN0b3J5U2VydmljZQoweDk1NWI0MDAwIC0gMHg5NTVlM2ZlMyAgY29tLmFwcGxlLkFF
IDQwMi4zICg0MDIuMykgPGIxM2JmZGEwYWQ5MzE0OTIyZWUzN2MwZDAxOGQ3ZGU5PiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJh
bWV3b3Jrcy9BRS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9BRQoweDk1NWU0MDAwIC0gMHg5NTYwMmZm
ZiAgbGlicmVzb2x2LjkuZHlsaWIgPz8/ICg/Pz8pIDxhODAxOGM0MjkzMDU5NjU5M2RkZjI3Zjdj
MjBmZTdhZj4gL3Vzci9saWIvbGlicmVzb2x2LjkuZHlsaWIKMHg5NTYwMzAwMCAtIDB4OTU2MGJm
ZmYgIGNvbS5hcHBsZS5EaXNrQXJiaXRyYXRpb24gMi4yLjEgKDIuMi4xKSA8NzViMGM4ZDg5NDBh
OGEyNzgxNjk2MWRkZGNhYzhlMGY+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Rpc2tBcmJp
dHJhdGlvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9EaXNrQXJiaXRyYXRpb24KMHg5NTYwYzAwMCAt
IDB4OTU2NjlmZmIgIGxpYnN0ZGMrKy42LmR5bGliID8/PyAoPz8/KSA8NjEwNmIxZjJiMGIzMDNi
MDZhZTQ3NjI1M2RiYjVmM2Y+IC91c3IvbGliL2xpYnN0ZGMrKy42LmR5bGliCjB4OTU2NmEwMDAg
LSAweDk1NmM0ZmY3ICBjb20uYXBwbGUuQ29yZVRleHQgMi4wLjQgKD8/PykgPGYwYjZjMWQ0ZjQw
YmQyMTUwNTA5N2YwMjU1YWJmZWFkPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJh
bWV3b3JrL1ZlcnNpb25zL0EvQ29yZVRleHQKMHg5NTZjNTAwMCAtIDB4OTU3NmNmZWMgIGNvbS5h
cHBsZS5DRk5ldHdvcmsgNDM4LjE0ICg0MzguMTQpIDw1ZjllZTA0MzBiNWY2MzE5ZjE4ZDliMjNl
Nzc3ZTBkMj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29y
ay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9WZXJzaW9ucy9BL0NG
TmV0d29yawoweDk1NzcyMDAwIC0gMHg5NTc4OGZmZiAgY29tLmFwcGxlLkRpY3Rpb25hcnlTZXJ2
aWNlcyAxLjAuMCAoMS4wLjApIDw3ZTlmZjU4NmI1YzlkMDJiMDllMmE1NTI3ZDk4NTI0Zj4gL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9B
L0ZyYW1ld29ya3MvRGljdGlvbmFyeVNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0RpY3Rp
b25hcnlTZXJ2aWNlcwoweDk1Nzg5MDAwIC0gMHg5NTc5NWZmZiAgbGliYnoyLjEuMC5keWxpYiA/
Pz8gKD8/PykgPDg4N2JiNmY3M2QyMzA4OGZlNDI5NDZjZDlmMTM0ODc2PiAvdXNyL2xpYi9saWJi
ejIuMS4wLmR5bGliCjB4OTU3OTYwMDAgLSAweDk1ODUwZmUzICBjb20uYXBwbGUuQ29yZVNlcnZp
Y2VzLk9TU2VydmljZXMgMjI4ICgyMjgpIDxiYzgzZTk3ZjY4ODg2NzNjMzNmODY2NTI2NzdjMDlj
Yj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9WZXJz
aW9ucy9BL0ZyYW1ld29ya3MvT1NTZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9PU1NlcnZp
Y2VzCjB4OTU4NTEwMDAgLSAweDk1OGU0ZmZmICBjb20uYXBwbGUuaW5rLmZyYW1ld29yayAxMDEu
MyAoODYpIDxkZmE5ZGViY2Q3NTM3ODQ5ZDIyODAyMWQxZDljMGY2Mz4gL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvSW5rLmZy
YW1ld29yay9WZXJzaW9ucy9BL0luawoweDk1OTAyMDAwIC0gMHg5NTkwMmZmYSAgY29tLmFwcGxl
LkNvcmVTZXJ2aWNlcyAzMiAoMzIpIDwyNzYwNzE5ZjdhODFlOGMyYmRmZDE1YjA5MzlhYmMyOT4g
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9u
cy9BL0NvcmVTZXJ2aWNlcwoweDk1OTBkMDAwIC0gMHg5NTkyYWZmNyAgY29tLmFwcGxlLlF1aWNr
TG9va0ZyYW1ld29yayAxLjMuMSAoMTcwLjkpIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1
aWNrTG9vay5mcmFtZXdvcmsvVmVyc2lvbnMvQS9RdWlja0xvb2sKMHg5NTkyYjAwMCAtIDB4OTU5
OTFmZmIgIGNvbS5hcHBsZS5JU1N1cHBvcnQgMS44ICgzOC4zKSAvU3lzdGVtL0xpYnJhcnkvUHJp
dmF0ZUZyYW1ld29ya3MvSVNTdXBwb3J0LmZyYW1ld29yay9WZXJzaW9ucy9BL0lTU3VwcG9ydAow
eDk1OTkyMDAwIC0gMHg5NTllYmZmNyAgbGliR0xVLmR5bGliID8/PyAoPz8/KSA8YTNiOWJlMzAx
MDBhMjVhNmNkM2FkMTA5ODkyZjUyYjc+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5H
TC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9MaWJyYXJpZXMvbGliR0xVLmR5bGliCjB4OTU5ZWMwMDAg
LSAweDk1YmE4ZmYzICBjb20uYXBwbGUuUXVhcnR6Q29tcG9zZXIgMi4xICgxMDYuMTMpIDw0MGYw
MzRlOGM4ZmQzMWM5MDgxZjUyODNkY2YyMmI3OD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
UXVhcnR6LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvUXVhcnR6Q29tcG9zZXIuZnJh
bWV3b3JrL1ZlcnNpb25zL0EvUXVhcnR6Q29tcG9zZXIKMHg5NWJhOTAwMCAtIDB4OTYwN2FmYmUg
IGxpYkdMUHJvZ3JhbW1hYmlsaXR5LmR5bGliID8/PyAoPz8/KSA8N2YxODI5NGE3YmQwYjZhZmU0
MzE5ZjI5MTg3ZmM3MGQ+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9MaWJyYXJpZXMvbGliR0xQcm9ncmFtbWFiaWxpdHkuZHlsaWIKMHg5NjA3
YjAwMCAtIDB4OTYxZTJmZjMgIGxpYlN5c3RlbS5CLmR5bGliID8/PyAoPz8/KSA8YWU0N2NhOWIx
Njg2YjA2NWY4YWM0ZDJkZTA5Y2M0MzI+IC91c3IvbGliL2xpYlN5c3RlbS5CLmR5bGliCjB4OTYx
ZTMwMDAgLSAweDk2MWVkZmViICBjb20uYXBwbGUuYXVkaW8uU291bmRNYW5hZ2VyIDMuOS4yICgz
LjkuMikgPGNhYTQxOTA5ZGNiNWExOGE5NGJjNjhjZDEzOTk5YmQ1PiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9DYXJib25T
b3VuZC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9DYXJib25Tb3VuZAoweDk2MWVlMDAwIC0gMHg5NjFl
ZWZmZCAgY29tLmFwcGxlLkFjY2VsZXJhdGUudmVjTGliIDMuNC4yICh2ZWNMaWIgMy40LjIpIC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FjY2VsZXJhdGUuZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
RnJhbWV3b3Jrcy92ZWNMaWIuZnJhbWV3b3JrL1ZlcnNpb25zL0EvdmVjTGliCjB4OTYxZWYwMDAg
LSAweDk2MWY2ZmU5ICBsaWJnY2Nfcy4xLmR5bGliID8/PyAoPz8/KSA8MjhhN2NiYzNhNWNhMjk4
MmQxMjQ2NjgzMDZmNDIyZDk+IC91c3IvbGliL2xpYmdjY19zLjEuZHlsaWIKMHg5NjFmNzAwMCAt
IDB4OTYyMzZmZWYgIGxpYlRJRkYuZHlsaWIgPz8/ICg/Pz8pIDw4MDE4NzNjYmQ4NWJhN2JkZmU3
NjQ2ZmU5N2E1NGNhMz4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0ltYWdlSU8uZnJhbWV3b3JrL1Zl
cnNpb25zL0EvUmVzb3VyY2VzL2xpYlRJRkYuZHlsaWIKMHg5NjI0MzAwMCAtIDB4OTYzNDlmZjcg
IGNvbS5hcHBsZS5QdWJTdWIgMS4wLjQgKDY1LjExKSA8ZWYwOTBhOTkyYWRiNzFmYjAxZGRmZWY5
MDc1NGNhNDk+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1B1YlN1Yi5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9QdWJTdWIKMHg5NjM0YTAwMCAtIDB4OTYzOWJmZjcgIGNvbS5hcHBsZS5ISVNlcnZp
Y2VzIDEuNy4xICg/Pz8pIDxiYTdmZDBlZGU1NDBhMGRhMDhkYjAyN2Y4N2VmYmQ2MD4gL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvSElTZXJ2aWNl
cwoweDk2MzljMDAwIC0gMHg5NjNhM2ZmZSAgbGliYnNtLmR5bGliID8/PyAoPz8/KSA8NTU4Mjk4
NWE4NmVhMzY1MDRjY2EzMTc4OGJjY2Y5NjM+IC91c3IvbGliL2xpYmJzbS5keWxpYgoweDk2M2Fh
MDAwIC0gMHg5NjNlMWZmZiAgY29tLmFwcGxlLlN5c3RlbUNvbmZpZ3VyYXRpb24gMS45LjIgKDEu
OS4yKSA8OGIyNmViZjI2YTAwOWEwOTg0ODRmMWVkMDFlYzQ5OWM+IC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1N5c3RlbUNvbmZpZ3VyYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU3lzdGVt
Q29uZmlndXJhdGlvbgoweDk2M2UyMDAwIC0gMHg5NjNlMmZmZSAgY29tLmFwcGxlLk1vbml0b3JQ
YW5lbEZyYW1ld29yayAxLjIuMCAoMS4yLjApIDwxYmNlNGEyMmI2YTVjYzcwNTVkMDkzOGRkYWQy
NjliMj4gL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL01vbml0b3JQYW5lbC5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9Nb25pdG9yUGFuZWwKMHg5NjQ4NzAwMCAtIDB4OTY1YmFmZTcgIGNv
bS5hcHBsZS5Db3JlRm91bmRhdGlvbiA2LjUuNyAoNDc2LjE5KSA8YTMzMmM4ZjQ1NTI5ZWUyNmQy
ZTljMzZkMGM3MjNiYWQ+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9u
LmZyYW1ld29yay9WZXJzaW9ucy9BL0NvcmVGb3VuZGF0aW9uCjB4OTY1YmIwMDAgLSAweDk2NWM3
ZmY5ICBjb20uYXBwbGUuaGVscGRhdGEgMS4wLjEgKDE0LjIpIC9TeXN0ZW0vTGlicmFyeS9Qcml2
YXRlRnJhbWV3b3Jrcy9IZWxwRGF0YS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9IZWxwRGF0YQoweDk2
NWM4MDAwIC0gMHg5NjVjZGZmZiAgY29tLmFwcGxlLmJhY2t1cC5mcmFtZXdvcmsgMS4wICgxLjAp
IC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9CYWNrdXAuZnJhbWV3b3JrL1ZlcnNp
b25zL0EvQmFja3VwCjB4OTY1Y2UwMDAgLSAweDk2YzZlZmVmICBjb20uYXBwbGUuQ29yZUdyYXBo
aWNzIDEuNDA5LjQgKD8/PykgPGI5YThhOTRjNDMwZDNiNmY5ZWQ3ZTJlNGYwYWFkMDJjPiAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJz
aW9ucy9BL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9WZXJzaW9ucy9BL0NvcmVH
cmFwaGljcwoweDk2YzZmMDAwIC0gMHg5NmM4YmZmMyAgbGliUG5nLmR5bGliID8/PyAoPz8/KSA8
MjcxMzczZGQ0MWY1NjM2OWEzZGZjYTBlZDJiZTU3OWE+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9J
bWFnZUlPLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNlcy9saWJQbmcuZHlsaWIKMHg5NmM4
YzAwMCAtIDB4OTZjYjdmZTcgIGxpYmF1dG8uZHlsaWIgPz8/ICg/Pz8pIDw0MmQ4NDIyZGMyM2Ex
ODA3MTg2OWZkZjdiNWQ4ZmFiNT4gL3Vzci9saWIvbGliYXV0by5keWxpYgoweDk2Y2I4MDAwIC0g
MHg5NmNjNWZlNyAgY29tLmFwcGxlLm9wZW5nbCAxLjUuMTAgKDEuNS4xMCkgPDVhMjgxM2Y4MGM5
NDQxMTcwY2MxYWI4YTNkYWM1MDM4PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wu
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvT3BlbkdMCjB4OTZjYzYwMDAgLSAweDk2Y2M2ZmZjICBjb20u
YXBwbGUuYXVkaW8udW5pdHMuQXVkaW9Vbml0IDEuNSAoMS41KSAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BdWRpb1VuaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQXVkaW9Vbml0CjB4OTZjYzcw
MDAgLSAweDk2ZDAxZmU3ICBjb20uYXBwbGUuY29yZXVpIDEuMiAoNjIpIC9TeXN0ZW0vTGlicmFy
eS9Qcml2YXRlRnJhbWV3b3Jrcy9Db3JlVUkuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29yZVVJCjB4
OTZkMDIwMDAgLSAweDk2ZDA3ZmZmICBjb20uYXBwbGUuQ29tbW9uUGFuZWxzIDEuMi40ICg4NSkg
PDNiNjRlZjBkZTE4NGQwOWM2Zjk5YTFhN2U3N2U0MmJlPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMu
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29tbW9uUGFuZWxzCjB4OTZkMDgwMDAgLSAweDk2ZDA4ZmZk
ICBjb20uYXBwbGUudmVjTGliIDMuNC4yICh2ZWNMaWIgMy40LjIpIC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL3ZlY0xpYi5mcmFtZXdvcmsvVmVyc2lvbnMvQS92ZWNMaWIKMHg5NmQwOTAwMCAt
IDB4OTZkOWNmZjMgIGNvbS5hcHBsZS5BcHBsaWNhdGlvblNlcnZpY2VzLkFUUyAzLjcgKD8/Pykg
PGE1MzVmYzQ5ODJkM2FjZmY2NTMwZWMyNWM0MDJlNjc5PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3Mv
QVRTLmZyYW1ld29yay9WZXJzaW9ucy9BL0FUUwoweDk2ZDlkMDAwIC0gMHg5NmUwZmZmZiAgY29t
LmFwcGxlLlBERktpdCAyLjEuMiAoMi4xLjIpIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1
YXJ0ei5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1BERktpdC5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9QREZLaXQKMHg5NmUxMDAwMCAtIDB4OTZlNWFmZTEgIGNvbS5hcHBsZS5zZWN1cml0
eWludGVyZmFjZSAzLjAuMyAoMzY5NTMpIDwwZDQ4MTkxNDM3OGZmYjAzN2RkMjYxNDRhZjVhMWFh
Mj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHlJbnRlcmZhY2UuZnJhbWV3b3Jr
L1ZlcnNpb25zL0EvU2VjdXJpdHlJbnRlcmZhY2UKMHg5NmU1YjAwMCAtIDB4OTZlYTRmZWYgIGNv
bS5hcHBsZS5NZXRhZGF0YSAxMC41LjggKDM5OC4yNikgPGU0ZDI2OGVhNDUzNzkyMDBmMDNjZGM3
YzhiZWRhZTZmPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9N
ZXRhZGF0YQoweDk2ZWE1MDAwIC0gMHg5NmViMWZmZSAgbGliR0wuZHlsaWIgPz8/ICg/Pz8pIC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9MaWJy
YXJpZXMvbGliR0wuZHlsaWIKMHg5NzAxNjAwMCAtIDB4OTcwNDNmZWIgIGxpYnZEU1AuZHlsaWIg
Pz8/ICg/Pz8pIDxiMjMyYzAxOGRkZDA0MGVjNGUyYzJhZjYzMmRkNDk3Zj4gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQWNjZWxlcmF0ZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtz
L3ZlY0xpYi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9saWJ2RFNQLmR5bGliCjB4OTcwNDQwMDAgLSAw
eDk3MDdlZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPDM5
NjYzYzliNmYxYTA5ZDA1NjYzMDVkOWY4N2NmYzkxPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0
aW9uCjB4OTcwN2YwMDAgLSAweDk3MDgxZmY1ICBsaWJSYWRpYW5jZS5keWxpYiA/Pz8gKD8/Pykg
PGFlZmQ1MjQ4Mjg2OWJiNTAxMDY3MjY3OWQxNTExNjdlPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3Mv
SW1hZ2VJTy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9SZXNvdXJjZXMvbGliUmFkaWFuY2UuZHlsaWIK
MHg5NzA4MjAwMCAtIDB4OTcxMGZmZjcgIGNvbS5hcHBsZS5MYXVuY2hTZXJ2aWNlcyAyOTIgKDI5
MikgPGE0MTI4NmM3YzFlYjIwZmZkNWNjNzk2Zjc5MTA3MGYwPiAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9MYXVu
Y2hTZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9MYXVuY2hTZXJ2aWNlcwoweDk3MTEwMDAw
IC0gMHg5NzExNGZmZiAgbGlibWF0aENvbW1vbi5BLmR5bGliID8/PyAoPz8/KSAvdXNyL2xpYi9z
eXN0ZW0vbGlibWF0aENvbW1vbi5BLmR5bGliCjB4OTcxMTUwMDAgLSAweDk3MTFjZmY3ICBsaWJD
R0FUUy5BLmR5bGliID8/PyAoPz8/KSA8ZmI3Njc3NTAxZGQ0OTFlYTU1MjAyOTEwNDUxNTMwNjk+
IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3Jr
L1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
UmVzb3VyY2VzL2xpYkNHQVRTLkEuZHlsaWIKMHg5NzExZDAwMCAtIDB4OTcxZThmZWYgIGNvbS5h
cHBsZS5Db2xvclN5bmMgNC41LjMgKDQuNS4zKSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQ29sb3JT
eW5jLmZyYW1ld29yay9WZXJzaW9ucy9BL0NvbG9yU3luYwoweDk3MWU5MDAwIC0gMHg5NzIzOGZm
ZiAgY29tLmFwcGxlLlF1aWNrTG9va1VJRnJhbWV3b3JrIDEuMy4xICgxNzAuOSkgL1N5c3RlbS9M
aWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL1F1aWNrTG9va1VJLmZyYW1ld29yay9WZXJzaW9ucy9B
L1F1aWNrTG9va1VJCjB4OTcyMzkwMDAgLSAweDk3Mjc5ZmZmICBjb20uYXBwbGUuQ29yZU1lZGlh
SU9TZXJ2aWNlc1ByaXZhdGUgMjAuMCAoMjAuMCkgL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFt
ZXdvcmtzL0NvcmVNZWRpYUlPU2VydmljZXNQcml2YXRlLmZyYW1ld29yay9WZXJzaW9ucy9BL0Nv
cmVNZWRpYUlPU2VydmljZXNQcml2YXRlCjB4OTcyN2EwMDAgLSAweDk3MjdkZmZmICBjb20uYXBw
bGUuaGVscCAxLjEgKDM2KSA8MTc1NDg5ZjhhZGYyODdiM2ViZDI1OTM2MmIwMjkyYzA+IC9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdv
cmtzL0hlbHAuZnJhbWV3b3JrL1ZlcnNpb25zL0EvSGVscAoweDk3MjdlMDAwIC0gMHg5NzI4MGZm
ZCAgY29tLmFwcGxlLkNyYXNoUmVwb3J0ZXJTdXBwb3J0IDEwLjUuNyAoMTYxKSA8Y2NkYzNmMjAw
MGFmYTVmY2JiODUzNzg0NWYzNmRjMDE+IC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jr
cy9DcmFzaFJlcG9ydGVyU3VwcG9ydC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9DcmFzaFJlcG9ydGVy
U3VwcG9ydAoweDk3MzY3MDAwIC0gMHg5NzM2YmZmZiAgbGliR0lGLmR5bGliID8/PyAoPz8/KSA8
M2M3MTAwZTgwYjdmN2NhODgwOWNmOTUxMmMxYTYwMDQ+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9J
bWFnZUlPLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNlcy9saWJHSUYuZHlsaWIKMHg5NzM2
YzAwMCAtIDB4OTczNzJmZmYgIGNvbS5hcHBsZS5wcmludC5mcmFtZXdvcmsuUHJpbnQgMjE4LjAu
MyAoMjIwLjIpIDw1YjdmNGVmN2MyZGYzNmFmZjk2MDUzNzc3NzU3ODFlND4gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvUHJp
bnQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUHJpbnQKMHg5NzM3MzAwMCAtIDB4OTczOWJmZjcgIGNv
bS5hcHBsZS5zaG9ydGN1dCAxLjAuMSAoMS4wKSA8MTMxMjAyZTc3NjZlMzI3ZDAyZDU1YzBmNWZj
NDRhZDc+IC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9TaG9ydGN1dC5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9TaG9ydGN1dAoweDk3MzljMDAwIC0gMHg5NzRkNGZlNyAgY29tLmFwcGxl
LmltYWdlS2l0IDEuMC4yICgxLjApIDwwMGQwM2NmN2YyNmUxYjYwMjNlZmRjNGJkMTVkZDUyZT4g
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1ld29yay9WZXJzaW9ucy9BL0Zy
YW1ld29ya3MvSW1hZ2VLaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvSW1hZ2VLaXQKMHg5NzRkNTAw
MCAtIDB4OTc1NTRmZjUgIGNvbS5hcHBsZS5TZWFyY2hLaXQgMS4yLjIgKDEuMi4yKSA8M2I1ZjNh
YjZhMzYzYTRkOGEyYmJiZjc0MjEzYWIwZTU+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVTZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9TZWFyY2hLaXQKMHg5NzU1NTAwMCAtIDB4OTc1NWFmZmYgIGNvbS5h
cHBsZS5EaXNwbGF5U2VydmljZXNGVyAyLjAuMiAoMi4wLjIpIDxjYjliOThiNDNhZTM4NWEwZjM3
NGJhYWJlMmI3MTc2ND4gL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0Rpc3BsYXlT
ZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9EaXNwbGF5U2VydmljZXMKMHhmZmZlODAwMCAt
IDB4ZmZmZWJmZmYgIGxpYm9iamMuQS5keWxpYiA/Pz8gKD8/PykgL3Vzci9saWIvbGlib2JqYy5B
LmR5bGliCjB4ZmZmZjAwMDAgLSAweGZmZmYxNzgwICBsaWJTeXN0ZW0uQi5keWxpYiA/Pz8gKD8/
PykgL3Vzci9saWIvbGliU3lzdGVtLkIuZHlsaWIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>40938</attachid>
            <date>2009-10-09 02:20:43 -0700</date>
            <delta_ts>2009-10-09 02:23:28 -0700</delta_ts>
            <desc>Reduced testcase working in WebKit</desc>
            <filename>dnd.htm</filename>
            <type>text/html</type>
            <size>796</size>
            <attacher>webkit</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KCndpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKCXZhciBkcmFnZ2FibGUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJhZ2dhYmxlJyksCgkJCWRyb3B6b25lID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2Ryb3B6b25lJyk7CgkKCWRyYWdnYWJsZS5vbmRyYWdzdGFydCA9
IGZ1bmN0aW9uKGV2KSB7CiAgICB2YXIgZHQgPSBldi5kYXRhVHJhbnNmZXI7CiAgICBkdC5zZXRE
YXRhKCd0ZXh0L2h0bWwnLCAndHdvJyk7CgogICAgcmV0dXJuIHRydWU7Cgl9CgoJZHJvcHpvbmUu
b25kcmFnZW50ZXIgPSBmdW5jdGlvbihldikgewoJCXJldHVybiBmYWxzZTsKCX0KCglkcm9wem9u
ZS5vbmRyYWdsZWF2ZSA9IGZ1bmN0aW9uKGV2KSB7CgkJcmV0dXJuIGZhbHNlOwoJfQoKCWRyb3B6
b25lLm9uZHJhZ292ZXIgPSBmdW5jdGlvbihldikgewoJCXJldHVybiBmYWxzZTsKCX0KCglkcm9w
em9uZS5vbmRyb3AgPSBmdW5jdGlvbihldikgewoJCXZhciBkdCA9IGV2LmRhdGFUcmFuc2ZlcjsK
CQoJCWFsZXJ0KCdvbmUnKQoJICBhbGVydChkdC5nZXREYXRhKCd0ZXh0L2h0bWwnKSk7CgkJYWxl
cnQoJ3RocmVlJyk7Cgl9Cn0KCjwvc2NyaXB0PgoKPGJvZHk+Cgo8ZGl2IGlkPSJkcmFnZ2FibGUi
IGRyYWdnYWJsZT0idHJ1ZSIgc3R5bGU9ImJhY2tncm91bmQ6cmVkO3dpZHRoOjUwcHg7aGVpZ2h0
OjUwcHg7Ij5EcmFnPC9kaXY+CjxkaXYgaWQ9ImRyb3B6b25lIiBzdHlsZT0iYmFja2dyb3VuZDoj
ZWVlO3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDsiPkRyb3AgSGVyZTwvZGl2PgoKPC9ib2R5Pg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191573</attachid>
            <date>2013-03-05 14:52:02 -0800</date>
            <delta_ts>2013-03-21 18:48:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-23695-20130305144809.patch</filename>
            <type>text/plain</type>
            <size>20472</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJhMzQ0MmFlYzA1YmJi
Y2M5Y2YzN2RkYzYyZmM1ODBjNTM4MTE4ZC4uOTJhOWZiNDQ2OGIxZjFiYjFlNGFmNjVhMzM0NmVi
Njg5ODNhNzk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEzLTAzLTA1ICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAZ29vZ2xlLmNvbT4KKworICAgICAgICBEcmFnIGRhdGEgc3RvcmUg
c2hvdWxkIGJlIHJlYWRhYmxlIGluIGRyYWdzdGFydCBldmVudC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4K
KworICAgICAgICAqIGRvbS9DbGlwYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkOjpzZXRBY2Nlc3NQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpoYXNG
aWxlT2ZUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6aGFzU3RyaW5nT2ZUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6c2V0RHJvcEVmZmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmQ6OnNldEVmZmVjdEFsbG93ZWQpOgorICAgICAgICAqIGRvbS9D
bGlwYm9hcmRBY2Nlc3NQb2xpY3kuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNhbkRIVE1MQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6Y2FuREhUTUxDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuREhU
TUxQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnRyeURIVE1MQ29weSk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnRyeURIVE1MQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6dHJ5REhUTUxQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRpc3BhdGNo
Q1BQRXZlbnQpOgorICAgICAgICAqIGVkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAg
ICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250
cm9sbGVyOjpkcmFnRXhpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpw
ZXJmb3JtRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxE
cmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmZyZWVDbGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxl
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJh
Z2dpbmdDbGlwYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lXcmFw
cGVyOjpraW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lXcmFw
cGVyOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lXcmFw
cGVyOjpnZXRBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtUG9s
aWN5V3JhcHBlcjo6Z2V0QXNGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9t
aXVtOjpjbGVhckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OmNs
ZWFyQWxsRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6Z2V0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6c2V0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6dHlwZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkQ2hyb21pdW06OmZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZENocm9taXVtOjpzZXREcmFnSW1hZ2UpOgorCiAyMDEzLTAzLTA0ICBJbHlhIFRpa2hvbm92c2t5
ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1l
bnQgRmxhbWUgQ2hhcnQgZm9yIENQVSBwcm9maWxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DbGlwYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAK
aW5kZXggMDI3OTkyNTE1MmVlMmIxMWUxZDE5MTAyYjU5MDMyOWJlMzJkM2FkNi4uMDdmMWM3NzAz
YjlkZDdjMGRhMDI4MjRkNzg4OWNhMWZkYjcxYTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAgQ2xpcGJvYXJkOjpDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNz
UG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKQogdm9pZCBDbGlwYm9h
cmQ6OnNldEFjY2Vzc1BvbGljeShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQogewogICAg
IC8vIG9uY2UgeW91IGdvIG51bWIsIGNhbiBuZXZlciBnbyBiYWNrCi0gICAgQVNTRVJUKG1fcG9s
aWN5ICE9IENsaXBib2FyZE51bWIgfHwgcG9saWN5ID09IENsaXBib2FyZE51bWIpOworICAgIEFT
U0VSVChtX3BvbGljeSAhPSBDbGlwYm9hcmRYTnVtYiB8fCBwb2xpY3kgPT0gQ2xpcGJvYXJkWE51
bWIpOwogICAgIG1fcG9saWN5ID0gcG9saWN5OwogfQogCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9p
ZCBDbGlwYm9hcmQ6OnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKERyYWdPcGVyYXRpb24gb3ApCiAK
IGJvb2wgQ2xpcGJvYXJkOjpoYXNGaWxlT2ZUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QK
IHsKLSAgICBpZiAobV9wb2xpY3kgIT0gQ2xpcGJvYXJkUmVhZGFibGUgJiYgbV9wb2xpY3kgIT0g
Q2xpcGJvYXJkVHlwZXNSZWFkYWJsZSkKKyAgICBpZiAoIShtX3BvbGljeSAmIENsaXBib2FyZFhU
eXBlc1JlYWRhYmxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIFJlZlB0cjxG
aWxlTGlzdD4gZmlsZUxpc3QgPSBmaWxlcygpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIGJvb2wgQ2xp
cGJvYXJkOjpoYXNGaWxlT2ZUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIAogYm9vbCBD
bGlwYm9hcmQ6Omhhc1N0cmluZ09mVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7Ci0g
ICAgaWYgKG1fcG9saWN5ICE9IENsaXBib2FyZFJlYWRhYmxlICYmIG1fcG9saWN5ICE9IENsaXBi
b2FyZFR5cGVzUmVhZGFibGUpCisgICAgaWYgKCEobV9wb2xpY3kgJiBDbGlwYm9hcmRYVHlwZXNS
ZWFkYWJsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICByZXR1cm4gdHlwZXMo
KS5jb250YWlucyh0eXBlKTsgCkBAIC0xNTksNyArMTU5LDggQEAgdm9pZCBDbGlwYm9hcmQ6OnNl
dERyb3BFZmZlY3QoY29uc3QgU3RyaW5nICZlZmZlY3QpCiAgICAgaWYgKGVmZmVjdCAhPSAibm9u
ZSIgJiYgZWZmZWN0ICE9ICJjb3B5IiAgJiYgZWZmZWN0ICE9ICJsaW5rIiAmJiBlZmZlY3QgIT0g
Im1vdmUiKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9wb2xpY3kgPT0gQ2xpcGJvYXJk
UmVhZGFibGUgfHwgbV9wb2xpY3kgPT0gQ2xpcGJvYXJkVHlwZXNSZWFkYWJsZSkKKyAgICAvLyBG
SVhNRTogVGhpcyBkb2Vzbid0IHNlZW0gdmVyeSBpbnR1aXRpdmUuLi4KKyAgICBpZiAobV9wb2xp
Y3kgJiBDbGlwYm9hcmRYVHlwZXNSZWFkYWJsZSkKICAgICAgICAgbV9kcm9wRWZmZWN0ID0gZWZm
ZWN0OwogfQogCkBAIC0xNzksNyArMTgwLDcgQEAgdm9pZCBDbGlwYm9hcmQ6OnNldEVmZmVjdEFs
bG93ZWQoY29uc3QgU3RyaW5nICZlZmZlY3QpCiAgICAgfQogCiAKLSAgICBpZiAobV9wb2xpY3kg
PT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKG1fcG9saWN5ICYgQ2xpcGJvYXJkWFdyaXRh
YmxlKQogICAgICAgICBtX2VmZmVjdEFsbG93ZWQgPSBlZmZlY3Q7CiB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmgKaW5kZXggN2E1NDAwOWU1ZDA0NTg0
NGJkNTAxYTAyMjM2NWEwMWFlMTI4YTE1ZC4uZTNmMjUyYzBlOWE2OWQyYWU4MjdmYmIwZGI5Njc2
Yjc4OGZiYjkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZEFjY2Vz
c1BvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRBY2Nlc3NQb2xpY3ku
aApAQCAtMjksNyArMjksMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBDbGlwYm9h
cmRBY2Nlc3NQb2xpY3kgewotICAgIENsaXBib2FyZE51bWIsIENsaXBib2FyZEltYWdlV3JpdGFi
bGUsIENsaXBib2FyZFdyaXRhYmxlLCBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlLCBDbGlwYm9hcmRS
ZWFkYWJsZQorICAgIENsaXBib2FyZFhOdW1iID0gMCwKKyAgICBDbGlwYm9hcmRYVHlwZXNSZWFk
YWJsZSA9IDEgPDwgMCwKKyAgICBDbGlwYm9hcmREYXRhUmVhZGFibGUgPSAxIDw8IDEsCisgICAg
Q2xpcGJvYXJkWFdyaXRhYmxlID0gMSA8PCAyLAorICAgIENsaXBib2FyZFJlYWRhYmxlQW5kV3Jp
dGFibGUgPSBDbGlwYm9hcmRYVHlwZXNSZWFkYWJsZSB8IENsaXBib2FyZERhdGFSZWFkYWJsZSB8
IENsaXBib2FyZFhXcml0YWJsZSwKKyAgICBDbGlwYm9hcmRYUmVhZGFibGUgPSBDbGlwYm9hcmRY
VHlwZXNSZWFkYWJsZSB8IENsaXBib2FyZERhdGFSZWFkYWJsZSwKIH07CiAKIH0gLy8gbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYzJiNzUyODcyYTBiNjk4MzYxOWE1
YmExYzcxYTNjZTk2MzgyYmNmNS4uZDAwOWJlMWY2NzZhYWZmYTJlNzI5OTQwODRkZDNiYTk4MzZj
ZGEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMjYwLDE3ICsyNjAsMTcgQEAg
Ym9vbCBFZGl0b3I6OmNhbkVkaXRSaWNobHkoKSBjb25zdAogCiBib29sIEVkaXRvcjo6Y2FuREhU
TUxDdXQoKQogewotICAgIHJldHVybiAhbV9mcmFtZS0+c2VsZWN0aW9uKCktPmlzSW5QYXNzd29y
ZEZpZWxkKCkgJiYgIWRpc3BhdGNoQ1BQRXZlbnQoZXZlbnROYW1lcygpLmJlZm9yZWN1dEV2ZW50
LCBDbGlwYm9hcmROdW1iKTsKKyAgICByZXR1cm4gIW1fZnJhbWUtPnNlbGVjdGlvbigpLT5pc0lu
UGFzc3dvcmRGaWVsZCgpICYmICFkaXNwYXRjaENQUEV2ZW50KGV2ZW50TmFtZXMoKS5iZWZvcmVj
dXRFdmVudCwgQ2xpcGJvYXJkWE51bWIpOwogfQogCiBib29sIEVkaXRvcjo6Y2FuREhUTUxDb3B5
KCkKIHsKLSAgICByZXR1cm4gIW1fZnJhbWUtPnNlbGVjdGlvbigpLT5pc0luUGFzc3dvcmRGaWVs
ZCgpICYmICFkaXNwYXRjaENQUEV2ZW50KGV2ZW50TmFtZXMoKS5iZWZvcmVjb3B5RXZlbnQsIENs
aXBib2FyZE51bWIpOworICAgIHJldHVybiAhbV9mcmFtZS0+c2VsZWN0aW9uKCktPmlzSW5QYXNz
d29yZEZpZWxkKCkgJiYgIWRpc3BhdGNoQ1BQRXZlbnQoZXZlbnROYW1lcygpLmJlZm9yZWNvcHlF
dmVudCwgQ2xpcGJvYXJkWE51bWIpOwogfQogCiBib29sIEVkaXRvcjo6Y2FuREhUTUxQYXN0ZSgp
CiB7Ci0gICAgcmV0dXJuICFkaXNwYXRjaENQUEV2ZW50KGV2ZW50TmFtZXMoKS5iZWZvcmVwYXN0
ZUV2ZW50LCBDbGlwYm9hcmROdW1iKTsKKyAgICByZXR1cm4gIWRpc3BhdGNoQ1BQRXZlbnQoZXZl
bnROYW1lcygpLmJlZm9yZXBhc3RlRXZlbnQsIENsaXBib2FyZFhOdW1iKTsKIH0KIAogYm9vbCBF
ZGl0b3I6OmNhbkN1dCgpIGNvbnN0CkBAIC01MTMsNyArNTEzLDcgQEAgYm9vbCBFZGl0b3I6OnRy
eURIVE1MQ29weSgpCiAgICAgaWYgKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5pc0luUGFzc3dvcmRG
aWVsZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gIWRpc3BhdGNoQ1BQ
RXZlbnQoZXZlbnROYW1lcygpLmNvcHlFdmVudCwgQ2xpcGJvYXJkV3JpdGFibGUpOworICAgIHJl
dHVybiAhZGlzcGF0Y2hDUFBFdmVudChldmVudE5hbWVzKCkuY29weUV2ZW50LCBDbGlwYm9hcmRS
ZWFkYWJsZUFuZFdyaXRhYmxlKTsKIH0KIAogYm9vbCBFZGl0b3I6OnRyeURIVE1MQ3V0KCkKQEAg
LTUyMSwxMiArNTIxLDEyIEBAIGJvb2wgRWRpdG9yOjp0cnlESFRNTEN1dCgpCiAgICAgaWYgKG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5pc0luUGFzc3dvcmRGaWVsZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuICFkaXNwYXRjaENQUEV2ZW50KGV2ZW50TmFtZXMoKS5j
dXRFdmVudCwgQ2xpcGJvYXJkV3JpdGFibGUpOworICAgIHJldHVybiAhZGlzcGF0Y2hDUFBFdmVu
dChldmVudE5hbWVzKCkuY3V0RXZlbnQsIENsaXBib2FyZFJlYWRhYmxlQW5kV3JpdGFibGUpOwog
fQogCiBib29sIEVkaXRvcjo6dHJ5REhUTUxQYXN0ZSgpCiB7Ci0gICAgcmV0dXJuICFkaXNwYXRj
aENQUEV2ZW50KGV2ZW50TmFtZXMoKS5wYXN0ZUV2ZW50LCBDbGlwYm9hcmRSZWFkYWJsZSk7Cisg
ICAgcmV0dXJuICFkaXNwYXRjaENQUEV2ZW50KGV2ZW50TmFtZXMoKS5wYXN0ZUV2ZW50LCBDbGlw
Ym9hcmRYUmVhZGFibGUpOwogfQogCiBib29sIEVkaXRvcjo6c2hvdWxkSW5zZXJ0VGV4dChjb25z
dCBTdHJpbmcmIHRleHQsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikg
Y29uc3QKQEAgLTcwOSwxNCArNzA5LDE0IEBAIGJvb2wgRWRpdG9yOjpkaXNwYXRjaENQUEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyAmZXZlbnRUeXBlLCBDbGlwYm9hcmRBY2Nlc3NQb2xpCiAgICAg
UmVmUHRyPEV2ZW50PiBldnQgPSBDbGlwYm9hcmRFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1
ZSwgdHJ1ZSwgY2xpcGJvYXJkKTsKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZ0LCBJR05P
UkVfRVhDRVBUSU9OKTsKICAgICBib29sIG5vRGVmYXVsdFByb2Nlc3NpbmcgPSBldnQtPmRlZmF1
bHRQcmV2ZW50ZWQoKTsKLSAgICBpZiAobm9EZWZhdWx0UHJvY2Vzc2luZyAmJiBwb2xpY3kgPT0g
Q2xpcGJvYXJkV3JpdGFibGUpIHsKKyAgICBpZiAobm9EZWZhdWx0UHJvY2Vzc2luZyAmJiAocG9s
aWN5ICYgQ2xpcGJvYXJkWFdyaXRhYmxlKSkgewogICAgICAgICBQYXN0ZWJvYXJkKiBwYXN0ZWJv
YXJkID0gUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKTsKICAgICAgICAgcGFzdGVib2Fy
ZC0+Y2xlYXIoKTsKICAgICAgICAgcGFzdGVib2FyZC0+d3JpdGVDbGlwYm9hcmQoY2xpcGJvYXJk
LmdldCgpKTsKICAgICB9CiAKICAgICAvLyBpbnZhbGlkYXRlIGNsaXBib2FyZCBoZXJlIGZvciBz
ZWN1cml0eQotICAgIGNsaXBib2FyZC0+c2V0QWNjZXNzUG9saWN5KENsaXBib2FyZE51bWIpOwor
ICAgIGNsaXBib2FyZC0+c2V0QWNjZXNzUG9saWN5KENsaXBib2FyZFhOdW1iKTsKICAgICAKICAg
ICByZXR1cm4gIW5vRGVmYXVsdFByb2Nlc3Npbmc7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2Nocm9taXVtL0VkaXRvckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0uY3BwCmluZGV4IDBjNjMwYTJiMjY0MGY1
MjlkNDg3M2I3ZDE2ZWIxOGE1Y2IwMzY5NzYuLjg3NGQzYzliOWI4OGJjOWZiNTk2ZGNkNjE2YjM0
NTY2OWVlYmI1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0v
RWRpdG9yQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0v
RWRpdG9yQ2hyb21pdW0uY3BwCkBAIC00MSw3ICs0MSw3IEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJk
PiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGlj
eSwKIHsKICAgICByZXR1cm4gQ2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZSgKICAgICAgICAgQ2xp
cGJvYXJkOjpDb3B5QW5kUGFzdGUsCi0gICAgICAgIHBvbGljeSA9PSBDbGlwYm9hcmRXcml0YWJs
ZSA/IENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlKCkgOiBDaHJvbWl1bURhdGFPYmplY3Q6OmNy
ZWF0ZUZyb21QYXN0ZWJvYXJkKCksCisgICAgICAgIChwb2xpY3kgJiBDbGlwYm9hcmRYV3JpdGFi
bGUpID8gQ2hyb21pdW1EYXRhT2JqZWN0OjpjcmVhdGUoKSA6IENocm9taXVtRGF0YU9iamVjdDo6
Y3JlYXRlRnJvbVBhc3RlYm9hcmQoKSwKICAgICAgICAgcG9saWN5LAogICAgICAgICBmcmFtZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggODRhYjk1YjJjODUx
Y2M2YzEwZDJlNmE3ZGNiMmJlMWJlNjE4MjE1NS4uNmRjNWM5MGI4NWUwZmNkMzY1OWE0NDg5NTNk
YmJmNzYyYmNjMDZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAg
LTE5NCwxMSArMTk0LDExIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQoRHJhZ0Rh
dGEqIGRyYWdEYXRhKQogICAgIEZyYW1lKiBtYWluRnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgp
OwogCiAgICAgaWYgKFJlZlB0cjxGcmFtZVZpZXc+IHYgPSBtYWluRnJhbWUtPnZpZXcoKSkgewot
ICAgICAgICBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5ID0gKCFtX2RvY3VtZW50VW5kZXJN
b3VzZSB8fCBtX2RvY3VtZW50VW5kZXJNb3VzZS0+c2VjdXJpdHlPcmlnaW4oKS0+aXNMb2NhbCgp
KSA/IENsaXBib2FyZFJlYWRhYmxlIDogQ2xpcGJvYXJkVHlwZXNSZWFkYWJsZTsKKyAgICAgICAg
Q2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSA9ICghbV9kb2N1bWVudFVuZGVyTW91c2UgfHwg
bV9kb2N1bWVudFVuZGVyTW91c2UtPnNlY3VyaXR5T3JpZ2luKCktPmlzTG9jYWwoKSkgPyBDbGlw
Ym9hcmRYUmVhZGFibGUgOiBDbGlwYm9hcmRYVHlwZXNSZWFkYWJsZTsKICAgICAgICAgUmVmUHRy
PENsaXBib2FyZD4gY2xpcGJvYXJkID0gQ2xpcGJvYXJkOjpjcmVhdGUocG9saWN5LCBkcmFnRGF0
YSwgbWFpbkZyYW1lKTsKICAgICAgICAgY2xpcGJvYXJkLT5zZXRTb3VyY2VPcGVyYXRpb24oZHJh
Z0RhdGEtPmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKICAgICAgICAgbWFpbkZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+Y2FuY2VsRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFn
RGF0YSksIGNsaXBib2FyZC5nZXQoKSk7Ci0gICAgICAgIGNsaXBib2FyZC0+c2V0QWNjZXNzUG9s
aWN5KENsaXBib2FyZE51bWIpOyAgICAvLyBpbnZhbGlkYXRlIGNsaXBib2FyZCBoZXJlIGZvciBz
ZWN1cml0eQorICAgICAgICBjbGlwYm9hcmQtPnNldEFjY2Vzc1BvbGljeShDbGlwYm9hcmRYTnVt
Yik7IC8vIGludmFsaWRhdGUgY2xpcGJvYXJkIGhlcmUgZm9yIHNlY3VyaXR5CiAgICAgfQogICAg
IG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQoMCk7CiAgICAgaWYgKG1fZmlsZUlucHV0RWxlbWVudFVu
ZGVyTW91c2UpCkBAIC0yMjEsMTAgKzIyMSwxMCBAQCBib29sIERyYWdDb250cm9sbGVyOjpwZXJm
b3JtRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEpCiAgICAgICAgIGJvb2wgcHJldmVudGVkRGVmYXVs
dCA9IGZhbHNlOwogICAgICAgICBpZiAobWFpbkZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgICAg
IC8vIFNlbmRpbmcgYW4gZXZlbnQgY2FuIHJlc3VsdCBpbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhl
IHZpZXcgYW5kIHBhcnQuCi0gICAgICAgICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQg
PSBDbGlwYm9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRSZWFkYWJsZSwgZHJhZ0RhdGEsIG1haW5GcmFt
ZS5nZXQoKSk7CisgICAgICAgICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBDbGlw
Ym9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRYUmVhZGFibGUsIGRyYWdEYXRhLCBtYWluRnJhbWUuZ2V0
KCkpOwogICAgICAgICAgICAgY2xpcGJvYXJkLT5zZXRTb3VyY2VPcGVyYXRpb24oZHJhZ0RhdGEt
PmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKICAgICAgICAgICAgIHByZXZlbnRlZERl
ZmF1bHQgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5wZXJmb3JtRHJhZ0FuZERyb3AoY3Jl
YXRlTW91c2VFdmVudChkcmFnRGF0YSksIGNsaXBib2FyZC5nZXQoKSk7Ci0gICAgICAgICAgICBj
bGlwYm9hcmQtPnNldEFjY2Vzc1BvbGljeShDbGlwYm9hcmROdW1iKTsgLy8gSW52YWxpZGF0ZSBj
bGlwYm9hcmQgaGVyZSBmb3Igc2VjdXJpdHkKKyAgICAgICAgICAgIGNsaXBib2FyZC0+c2V0QWNj
ZXNzUG9saWN5KENsaXBib2FyZFhOdW1iKTsgLy8gSW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVyZSBm
b3Igc2VjdXJpdHkKICAgICAgICAgfQogICAgICAgICBpZiAocHJldmVudGVkRGVmYXVsdCkgewog
ICAgICAgICAgICAgbV9kb2N1bWVudFVuZGVyTW91c2UgPSAwOwpAQCAtNjEyLDE0ICs2MTIsMTQg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKERyYWdEYXRhKiBkcmFnRGF0YSwg
RHJhZ09wZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgIGlmICghdmlld1Byb3RlY3RvcikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSA9IG1f
ZG9jdW1lbnRVbmRlck1vdXNlLT5zZWN1cml0eU9yaWdpbigpLT5pc0xvY2FsKCkgPyBDbGlwYm9h
cmRSZWFkYWJsZSA6IENsaXBib2FyZFR5cGVzUmVhZGFibGU7CisgICAgQ2xpcGJvYXJkQWNjZXNz
UG9saWN5IHBvbGljeSA9IG1fZG9jdW1lbnRVbmRlck1vdXNlLT5zZWN1cml0eU9yaWdpbigpLT5p
c0xvY2FsKCkgPyBDbGlwYm9hcmRYUmVhZGFibGUgOiBDbGlwYm9hcmRYVHlwZXNSZWFkYWJsZTsK
ICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBDbGlwYm9hcmQ6OmNyZWF0ZShwb2xp
Y3ksIGRyYWdEYXRhLCBtYWluRnJhbWUuZ2V0KCkpOwogICAgIERyYWdPcGVyYXRpb24gc3JjT3BN
YXNrID0gZHJhZ0RhdGEtPmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpOwogICAgIGNsaXBi
b2FyZC0+c2V0U291cmNlT3BlcmF0aW9uKHNyY09wTWFzayk7CiAKICAgICBQbGF0Zm9ybU1vdXNl
RXZlbnQgZXZlbnQgPSBjcmVhdGVNb3VzZUV2ZW50KGRyYWdEYXRhKTsKICAgICBpZiAoIW1haW5G
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBjbGlwYm9hcmQu
Z2V0KCkpKSB7Ci0gICAgICAgIGNsaXBib2FyZC0+c2V0QWNjZXNzUG9saWN5KENsaXBib2FyZE51
bWIpOyAgICAvLyBpbnZhbGlkYXRlIGNsaXBib2FyZCBoZXJlIGZvciBzZWN1cml0eQorICAgICAg
ICBjbGlwYm9hcmQtPnNldEFjY2Vzc1BvbGljeShDbGlwYm9hcmRYTnVtYik7IC8vIGludmFsaWRh
dGUgY2xpcGJvYXJkIGhlcmUgZm9yIHNlY3VyaXR5CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTYzMSw3ICs2MzEsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERy
YWcoRHJhZ0RhdGEqIGRyYWdEYXRhLCBEcmFnT3BlcmF0aW9uJiBvcGVyYXRpb24pCiAgICAgICAg
IG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOwogICAgIH0KIAotICAgIGNsaXBib2FyZC0+
c2V0QWNjZXNzUG9saWN5KENsaXBib2FyZE51bWIpOyAgICAvLyBpbnZhbGlkYXRlIGNsaXBib2Fy
ZCBoZXJlIGZvciBzZWN1cml0eQorICAgIGNsaXBib2FyZC0+c2V0QWNjZXNzUG9saWN5KENsaXBi
b2FyZFhOdW1iKTsgLy8gaW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVyZSBmb3Igc2VjdXJpdHkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4
IDQzNmJiMzUyMDYxNDgxN2NkMTdiMjJlMmFhZjdlNjk5N2JiZjM0OTIuLjhhMWI0MzQ1ODE2Zjhh
NTkwMjdkMmEyYTFjMzU3MDFhMDdmMTIyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKQEAgLTMzMjIsNyArMzMyMiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVy
ZXNpc0V4Y2VlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIGRyYWdWaWV3cG9ydExvY2F0aW9uCiB2b2lk
IEV2ZW50SGFuZGxlcjo6ZnJlZUNsaXBib2FyZCgpCiB7CiAgICAgaWYgKGRyYWdTdGF0ZSgpLm1f
ZHJhZ0NsaXBib2FyZCkKLSAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJkLT5zZXRB
Y2Nlc3NQb2xpY3koQ2xpcGJvYXJkTnVtYik7CisgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ0Ns
aXBib2FyZC0+c2V0QWNjZXNzUG9saWN5KENsaXBib2FyZFhOdW1iKTsKIH0KIAogdm9pZCBFdmVu
dEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZl
bnQsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQpAQCAtMzQ3Miw5ICszNDcyLDkgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyYgZXZlbnQsIENoZWNrRHIKICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBkaXNw
YXRjaERyYWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJhZ3N0YXJ0RXZlbnQsIG1fbW91c2VEb3du
KQogICAgICAgICAgICAgJiYgIW1fZnJhbWUtPnNlbGVjdGlvbigpLT5pc0luUGFzc3dvcmRGaWVs
ZCgpOwogICAgICAgICAKLSAgICAgICAgLy8gSW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVyZSBhZ2Fp
bnN0IGFueW1vcmUgcGFzdGVib2FyZCB3cml0aW5nIGZvciBzZWN1cml0eS4gIFRoZSBkcmFnCi0g
ICAgICAgIC8vIGltYWdlIGNhbiBzdGlsbCBiZSBjaGFuZ2VkIGFzIHdlIGRyYWcsIGJ1dCBub3Qg
dGhlIHBhc3RlYm9hcmQgZGF0YS4KLSAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJk
LT5zZXRBY2Nlc3NQb2xpY3koQ2xpcGJvYXJkSW1hZ2VXcml0YWJsZSk7CisgICAgICAgIC8vIElu
dmFsaWRhdGUgY2xpcGJvYXJkIGhlcmUgYWdhaW5zdCBhbnltb3JlIHBhc3RlYm9hcmQgcmVhZGlu
Zy93cml0aW5nIGZvciBzZWN1cml0eS4KKyAgICAgICAgLy8gT25seSB0aGUgdHlwZXMgaW4gdGhl
IGRyYWcgZGF0YSBzdG9yZSBzaG91bGQgYmUgcmVhZGFibGUuCisgICAgICAgIGRyYWdTdGF0ZSgp
Lm1fZHJhZ0NsaXBib2FyZC0+c2V0QWNjZXNzUG9saWN5KENsaXBib2FyZFhUeXBlc1JlYWRhYmxl
KTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJhZykgewogICAg
ICAgICAgICAgLy8gZ2F0aGVyIHZhbHVlcyBmcm9tIERIVE1MIGVsZW1lbnQsIGlmIGl0IHNldCBh
bnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJD
aHJvbWl1bS5jcHAKaW5kZXggMTEyYjBlNWJkZTY5YjEzOTZmOGNjOTFmNzk4ZjM1ZDRhMzhlOTQ2
OS4uYzg4NTFiY2RkZTZkNzA5ZDA2MzcyZTQ4NTMzMjllYmUwOGI2ZTgxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHAK
QEAgLTEyOSw3ICsxMjksNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRBY3RpdmF0ZWRWaWV3
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0CiBQYXNzUmVmUHRyPENsaXBi
b2FyZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0CiB7CiAg
ICAgUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gZGF0YU9iamVjdCA9IENocm9taXVtRGF0YU9i
amVjdDo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIENsaXBib2FyZENocm9taXVtOjpjcmVhdGUoQ2xp
cGJvYXJkOjpEcmFnQW5kRHJvcCwgZGF0YU9iamVjdC5nZXQoKSwgQ2xpcGJvYXJkV3JpdGFibGUs
IG1fZnJhbWUpOworICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKENsaXBib2Fy
ZDo6RHJhZ0FuZERyb3AsIGRhdGFPYmplY3QuZ2V0KCksIENsaXBib2FyZFJlYWRhYmxlQW5kV3Jp
dGFibGUsIG1fZnJhbWUpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZp
ZXcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJv
YXJkQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJv
YXJkQ2hyb21pdW0uY3BwCmluZGV4IGZjMzcyNzhkNmI5MjI3M2FkODk1MjE1NzJlYjVkODRkYmFl
OTIxODkuLjA1NTY1ZDljNDEzZjJiNDgxYTAxZTM4MDAyOGM5ZmRlN2Y1ZDQ0MzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1
bS5jcHAKQEAgLTg5LDE0ICs4OSwxNCBAQCBEYXRhVHJhbnNmZXJJdGVtTGlzdFBvbGljeVdyYXBw
ZXI6On5EYXRhVHJhbnNmZXJJdGVtTGlzdFBvbGljeVdyYXBwZXIoKQogCiBzaXplX3QgRGF0YVRy
YW5zZmVySXRlbUxpc3RQb2xpY3lXcmFwcGVyOjpsZW5ndGgoKSBjb25zdAogewotICAgIGlmICht
X2NsaXBib2FyZC0+cG9saWN5KCkgPT0gQ2xpcGJvYXJkTnVtYikKKyAgICBpZiAoIShtX2NsaXBi
b2FyZC0+cG9saWN5KCkgJiBDbGlwYm9hcmRYVHlwZXNSZWFkYWJsZSkpCiAgICAgICAgIHJldHVy
biAwOwogICAgIHJldHVybiBtX2RhdGFPYmplY3QtPmxlbmd0aCgpOwogfQogCiBQYXNzUmVmUHRy
PERhdGFUcmFuc2Zlckl0ZW0+IERhdGFUcmFuc2Zlckl0ZW1MaXN0UG9saWN5V3JhcHBlcjo6aXRl
bSh1bnNpZ25lZCBsb25nIGluZGV4KQogewotICAgIGlmIChtX2NsaXBib2FyZC0+cG9saWN5KCkg
PT0gQ2xpcGJvYXJkTnVtYikKKyAgICBpZiAoIShtX2NsaXBib2FyZC0+cG9saWN5KCkgJiBDbGlw
Ym9hcmRYVHlwZXNSZWFkYWJsZSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIFJlZlB0cjxDaHJv
bWl1bURhdGFPYmplY3RJdGVtPiBpdGVtID0gbV9kYXRhT2JqZWN0LT5pdGVtKGluZGV4KTsKICAg
ICBpZiAoIWl0ZW0pCkBAIC0xMDcsNyArMTA3LDcgQEAgUGFzc1JlZlB0cjxEYXRhVHJhbnNmZXJJ
dGVtPiBEYXRhVHJhbnNmZXJJdGVtTGlzdFBvbGljeVdyYXBwZXI6Oml0ZW0odW5zaWduZWQgbG8K
IAogdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFBvbGljeVdyYXBwZXI6OmRlbGV0ZUl0ZW0odW5z
aWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKG1fY2xpcGJv
YXJkLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkgeworICAgIGlmICghKG1fY2xpcGJv
YXJkLT5wb2xpY3koKSAmIENsaXBib2FyZFhXcml0YWJsZSkpIHsKICAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTExNiwyMSArMTE2LDIx
IEBAIHZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3RQb2xpY3lXcmFwcGVyOjpkZWxldGVJdGVtKHVu
c2lnbmVkIGxvbmcgaW5kZXgsIEV4Y2VwdGlvCiAKIHZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3RQ
b2xpY3lXcmFwcGVyOjpjbGVhcigpCiB7Ci0gICAgaWYgKG1fY2xpcGJvYXJkLT5wb2xpY3koKSAh
PSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIShtX2NsaXBib2FyZC0+cG9saWN5KCkgJiBD
bGlwYm9hcmRYV3JpdGFibGUpKQogICAgICAgICByZXR1cm47CiAgICAgbV9kYXRhT2JqZWN0LT5j
bGVhckFsbCgpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0UG9saWN5V3JhcHBlcjo6
YWRkKGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpICE9IENsaXBib2FyZFdyaXRh
YmxlKQorICAgIGlmICghKG1fY2xpcGJvYXJkLT5wb2xpY3koKSAmIENsaXBib2FyZFhXcml0YWJs
ZSkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2RhdGFPYmplY3QtPmFkZChkYXRhLCB0eXBlLCBl
Yyk7CiB9CiAKIHZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3RQb2xpY3lXcmFwcGVyOjphZGQoUGFz
c1JlZlB0cjxGaWxlPiBmaWxlKQogewotICAgIGlmIChtX2NsaXBib2FyZC0+cG9saWN5KCkgIT0g
Q2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCEobV9jbGlwYm9hcmQtPnBvbGljeSgpICYgQ2xp
cGJvYXJkWFdyaXRhYmxlKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZGF0YU9iamVjdC0+YWRk
KGZpbGUsIG1fY2xpcGJvYXJkLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwogfQpAQCAtMTU2LDIxICsxNTYsMjEgQEAgRGF0YVRyYW5zZmVySXRlbVBvbGlj
eVdyYXBwZXI6On5EYXRhVHJhbnNmZXJJdGVtUG9saWN5V3JhcHBlcigpCiAKIFN0cmluZyBEYXRh
VHJhbnNmZXJJdGVtUG9saWN5V3JhcHBlcjo6a2luZCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY2xp
cGJvYXJkLT5wb2xpY3koKSA9PSBDbGlwYm9hcmROdW1iKQorICAgIGlmICghKG1fY2xpcGJvYXJk
LT5wb2xpY3koKSAmIENsaXBib2FyZFhUeXBlc1JlYWRhYmxlKSkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogICAgIHJldHVybiBtX2l0ZW0tPmtpbmQoKTsKIH0KIAogU3RyaW5nIERhdGFUcmFu
c2Zlckl0ZW1Qb2xpY3lXcmFwcGVyOjp0eXBlKCkgY29uc3QKIHsKLSAgICBpZiAobV9jbGlwYm9h
cmQtPnBvbGljeSgpID09IENsaXBib2FyZE51bWIpCisgICAgaWYgKCEobV9jbGlwYm9hcmQtPnBv
bGljeSgpICYgQ2xpcGJvYXJkWFR5cGVzUmVhZGFibGUpKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAgICAgcmV0dXJuIG1faXRlbS0+dHlwZSgpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlckl0
ZW1Qb2xpY3lXcmFwcGVyOjpnZXRBc1N0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBj
YWxsYmFjaykgY29uc3QKIHsKLSAgICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpICE9IENsaXBi
b2FyZFJlYWRhYmxlICYmIG1fY2xpcGJvYXJkLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJs
ZSkKKyAgICBpZiAoIShtX2NsaXBib2FyZC0+cG9saWN5KCkgJiBDbGlwYm9hcmREYXRhUmVhZGFi
bGUpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2l0ZW0tPmdldEFzU3RyaW5nKGNhbGxiYWNr
LCBtX2NsaXBib2FyZC0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lXcmFw
cGVyOjpnZXRBc1N0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBjYWxsYgogCiBQYXNz
UmVmUHRyPEJsb2I+IERhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lXcmFwcGVyOjpnZXRBc0ZpbGUoKSBj
b25zdAogewotICAgIGlmIChtX2NsaXBib2FyZC0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFi
bGUgJiYgbV9jbGlwYm9hcmQtPnBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlm
ICghKG1fY2xpcGJvYXJkLT5wb2xpY3koKSAmIENsaXBib2FyZERhdGFSZWFkYWJsZSkpCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIG1faXRlbS0+Z2V0QXNGaWxlKCk7CkBAIC0yMzgs
NyArMjM4LDcgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmRDaHJvbWl1bT4gQ2xpcGJvYXJkQ2hyb21p
dW06OmNyZWF0ZShDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFQKIAogdm9pZCBDbGlwYm9hcmRDaHJv
bWl1bTo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBpZiAocG9saWN5KCkg
IT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCEocG9saWN5KCkgJiBDbGlwYm9hcmRYV3Jp
dGFibGUpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2RhdGFPYmplY3QtPmNsZWFyRGF0YShu
b3JtYWxpemVUeXBlKHR5cGUpKTsKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIENsaXBib2FyZENo
cm9taXVtOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogCiB2b2lkIENsaXBib2FyZENo
cm9taXVtOjpjbGVhckFsbERhdGEoKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRX
cml0YWJsZSkKKyAgICBpZiAoIShwb2xpY3koKSAmIENsaXBib2FyZFhXcml0YWJsZSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fZGF0YU9iamVjdC0+Y2xlYXJBbGwoKTsKQEAgLTI1Niw3ICsy
NTYsNyBAQCB2b2lkIENsaXBib2FyZENocm9taXVtOjpjbGVhckFsbERhdGEoKQogCiBTdHJpbmcg
Q2xpcGJvYXJkQ2hyb21pdW06OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewot
ICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSkKKyAgICBpZiAoIShwb2xpY3ko
KSAmIENsaXBib2FyZERhdGFSZWFkYWJsZSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAog
ICAgIGJvb2wgY29udmVydFRvVVJMID0gZmFsc2U7CkBAIC0yNjgsNyArMjY4LDcgQEAgU3RyaW5n
IENsaXBib2FyZENocm9taXVtOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIAog
Ym9vbCBDbGlwYm9hcmRDaHJvbWl1bTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgZGF0YSkKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUp
CisgICAgaWYgKCEocG9saWN5KCkgJiBDbGlwYm9hcmRYV3JpdGFibGUpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbV9kYXRhT2JqZWN0LT5zZXREYXRhKG5vcm1hbGl6ZVR5
cGUodHlwZSksIGRhdGEpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIGJvb2wgQ2xpcGJvYXJkQ2hyb21p
dW06OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAvLyBl
eHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQogTGlzdEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRD
aHJvbWl1bTo6dHlwZXMoKSBjb25zdAogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRS
ZWFkYWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlKQorICAgIGlmICgh
KHBvbGljeSgpICYgQ2xpcGJvYXJkWFR5cGVzUmVhZGFibGUpKQogICAgICAgICByZXR1cm4gTGlz
dEhhc2hTZXQ8U3RyaW5nPigpOwogCiAgICAgcmV0dXJuIG1fZGF0YU9iamVjdC0+dHlwZXMoKTsK
QEAgLTI4Niw3ICsyODYsNyBAQCBMaXN0SGFzaFNldDxTdHJpbmc+IENsaXBib2FyZENocm9taXVt
Ojp0eXBlcygpIGNvbnN0CiBQYXNzUmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9hcmRDaHJvbWl1bTo6
ZmlsZXMoKSBjb25zdAogewogICAgIFJlZlB0cjxGaWxlTGlzdD4gZmlsZXMgPSBGaWxlTGlzdDo6
Y3JlYXRlKCk7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlKQorICAgIGlm
ICghKHBvbGljeSgpICYgQ2xpcGJvYXJkRGF0YVJlYWRhYmxlKSkKICAgICAgICAgcmV0dXJuIGZp
bGVzLnJlbGVhc2UoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9kYXRhT2JqZWN0
LT5sZW5ndGgoKTsgKytpKSB7CkBAIC0zMDIsNyArMzAyLDcgQEAgUGFzc1JlZlB0cjxGaWxlTGlz
dD4gQ2xpcGJvYXJkQ2hyb21pdW06OmZpbGVzKCkgY29uc3QKIAogdm9pZCBDbGlwYm9hcmRDaHJv
bWl1bTo6c2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiBpbWFnZSwgTm9kZSogbm9kZSwgY29uc3Qg
SW50UG9pbnQmIGxvYykKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkSW1hZ2VXcml0
YWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIShwb2xpY3ko
KSAmIENsaXBib2FyZFhXcml0YWJsZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2Ry
YWdJbWFnZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194415</attachid>
            <date>2013-03-21 18:48:06 -0700</date>
            <delta_ts>2013-03-22 10:45:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-23695-20130321184354.patch</filename>
            <type>text/plain</type>
            <size>50554</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ1NzNlMjZmNDNhNDYw
N2I4MDUyNzRhMjA5MWY5MmFhY2I4Mzc1Yy4uODM2MzMyMjhkOWZhOTk1MGJkY2IwZTQ1MDRlYjdj
N2M5MjVkZDQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxMy0wMy0yMSAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGdvb2dsZS5jb20+CisKKyAgICAgICAgRHJhZyBkYXRhIHN0b3Jl
IHNob3VsZCBiZSByZWFkYWJsZSBpbiBkcmFnc3RhcnQgZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIEhUTUwgc3BlY2lmaWNhdGlvbiBkZWZp
bmVzIHNldmVyYWwgbW9kZXMgZm9yIHRoZSBkcmFnIGRhdGEgc3RvcmUgd2hpY2ggZGlkbid0IG1h
cCB3ZWxsCisgICAgICAgIHRvIHRoZSBwcmlvciBkZWZpbml0aW9ucyBvZiBDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kuIENhbGxlcnMgd291bGQgb2Z0ZW4gY2hlY2sgZm9yIHBlcm1pc3Npb24KKyAgICAg
ICAgYnkgY29tcGFyaW5nIGFnYWluc3QgdGhlIGVudW0gdmFsdWVzIGRpcmVjdGx5LCB3aGljaCBt
ZWFudCB0aGF0IHRoZXJlIHdlcmUgc29tZSBldmVudHMgd2hlcmUKKyAgICAgICAgZGF0YSBjb3Vs
ZCBiZSB3cml0dGVuIGJ1dCBub3QgYmUgcmVhZCBiYWNrLgorCisgICAgICAgIEluIG9yZGVyIHRv
IGFkZHJlc3MgdGhpcywgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IGlzIG5vdyBpbnRlbmRlZCBmb3Ig
ZXh0ZXJuYWwgY2FsbGVycyB0bworICAgICAgICBzZXQgdGhlIGFjY2VzcyBwb2xpY3kgb2YgdGhl
IENsaXBib2FyZC4gQ2xpcGJvYXJkIG1hcHMgdGhlIGVudW0gdmFsdWVzIHRvIHRoZSBjb3JyZXNw
b25kaW5nCisgICAgICAgIHBlcm1pc3Npb24gYml0cyBpbnRlcm5hbGx5IGFuZCBwcm92aWRlcyBz
ZXZlcmFsIGhlbHBlciBmdW5jdGlvbnMgZm9yIENsaXBib2FyZAorICAgICAgICBpbXBsZW1lbnRh
dGlvbnMgdG8gY2hlY2sgcGVybWlzc2lvbnMuCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvcGFz
dGVib2FyZC9jYW4tcmVhZC1pbi1jb3B5LWFuZC1jdXQtZXZlbnRzLmh0bWwKKyAgICAgICAgICAg
ICAgIGVkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1kcmFnc3RhcnQtZXZlbnQuaHRtbAor
CisgICAgICAgICogZG9tL0NsaXBib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmQ6OkNsaXBib2FyZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZDo6c2V0QWNjZXNzUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6
aGFzRmlsZU9mVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6Omhhc1N0cmluZ09m
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OnNldERyb3BFZmZlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpzZXRFZmZlY3RBbGxvd2VkKToKKyAgICAgICAgKiBk
b20vQ2xpcGJvYXJkLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OmNhblJlYWRUeXBl
cyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OmNhblJlYWREYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZDo6Y2FuV3JpdGVEYXRhKToKKyAgICAgICAgKENsaXBib2FyZCk6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OmNhblNldERyYWdJbWFnZSk6CisgICAgICAg
ICogZG9tL0NsaXBib2FyZEFjY2Vzc1BvbGljeS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dHJ5REhUTUxDb3B5KToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6dHJ5REhUTUxDdXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpkaXNwYXRjaENQUEV2ZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2Nocm9taXVtL0VkaXRvckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2Fy
ZCk6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnRXhpdGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcpOgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9ibGFja2JlcnJ5L0V2ZW50SGFuZGxl
ckJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVhdGVE
cmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdn
aW5nQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwYWdlL2VmbC9FdmVudEhhbmRsZXJFZmwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCk6
CisgICAgICAgICogcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQpOgorICAgICAgICAqIHBh
Z2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQpOgorICAgICAgICAqIHBhZ2UvcXQvRXZlbnRIYW5k
bGVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2lu
Z0NsaXBib2FyZCk6CisgICAgICAgICogcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQpOgor
ICAgICAgICAqIHBhZ2Uvd3gvRXZlbnRIYW5kbGVyV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZv
cm0vYmxhY2tiZXJyeS9DbGlwYm9hcmRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNsaXBib2FyZEJsYWNrQmVycnk6OmNsZWFyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRCbGFja0JlcnJ5OjpjbGVhckFsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkQmxhY2tCZXJyeTo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRCbGFj
a0JlcnJ5OjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEJsYWNrQmVycnk6
OnR5cGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtUG9saWN5V3JhcHBlcjo6a2lu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtUG9saWN5V3JhcHBlcjo6dHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtUG9saWN5V3JhcHBlcjo6Z2V0
QXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbVBvbGljeVdyYXBw
ZXI6OmdldEFzRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6Y2xl
YXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVtOjpjbGVhckFsbERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OmdldERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OnNldERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OnR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZENocm9taXVtOjpmaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1
bTo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6Y2xlYXJEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZEd0azo6Y2xlYXJBbGxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkNsaXBib2FyZEd0azo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6
OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjp0eXBlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEd0azo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ2xpcGJv
YXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkTWFjOjpjbGVhckRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkTWFjOjpjbGVhckFsbERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkTWFjOjpnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZE1hYzo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6OnR5cGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZE1hYzo6ZmlsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkTWFjOjpzZXREcmFnSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3F0
L0NsaXBib2FyZFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpDbGlwYm9h
cmRRdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6Y2xlYXJEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpjbGVhckFsbERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkUXQ6OmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6
OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OnR5cGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpmaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRRdDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0Ojpp
dGVtcyk6CisgICAgICAgICogcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbUxpc3RRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjpsZW5ndGgpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6aXRlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjpkZWxldGVJdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6OmFkZCk6CisgICAgICAgICogcGxhdGZvcm0vcXQvRGF0
YVRyYW5zZmVySXRlbVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1R
dDo6Z2V0QXNTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpjbGVhckRhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpjbGVhckFsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkV2luOjpnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6
c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OnR5cGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6ZmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkV2luOjpzZXREcmFnSW1hZ2UpOgorCiAyMDEzLTAzLTIxICBIYXJhbGQgQWx2ZXN0cmFu
ZCAgPGh0YUBnb29nbGUuY29tPgogCiAgICAgICAgIEV4cG9zZSB0aGUgVHlwZSBmaWVsZCBvZiBh
biBSVENTdGF0c1JlcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2Fy
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAppbmRleCAwMjc5OTI1MTUy
ZWUyYjExZTFkMTkxMDJiNTkwMzI5YmUzMmQzYWQ2Li5kNDZjNjdiNWZhYWU2NmNiY2FiY2U1YmVm
MTVlZjM3NDg1YzZjNzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcApAQCAtMzQsMjEgKzM0
LDM4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2xpcGJvYXJkOjpDbGlwYm9hcmQoQ2xp
cGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKSAK
LSAgICA6IG1fcG9saWN5KHBvbGljeSkKLSAgICAsIG1fZHJvcEVmZmVjdCgidW5pbml0aWFsaXpl
ZCIpCitDbGlwYm9hcmQ6OkNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBD
bGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUpCisgICAgOiBtX2Ryb3BFZmZlY3QoInVuaW5pdGlh
bGl6ZWQiKQogICAgICwgbV9lZmZlY3RBbGxvd2VkKCJ1bmluaXRpYWxpemVkIikKICAgICAsIG1f
ZHJhZ1N0YXJ0ZWQoZmFsc2UpCiAgICAgLCBtX2NsaXBib2FyZFR5cGUoY2xpcGJvYXJkVHlwZSkK
ICAgICAsIG1fZHJhZ0ltYWdlKDApCiB7CisgICAgc2V0QWNjZXNzUG9saWN5KHBvbGljeSk7CiB9
Ci0gICAgCisKIHZvaWQgQ2xpcGJvYXJkOjpzZXRBY2Nlc3NQb2xpY3koQ2xpcGJvYXJkQWNjZXNz
UG9saWN5IHBvbGljeSkKIHsKICAgICAvLyBvbmNlIHlvdSBnbyBudW1iLCBjYW4gbmV2ZXIgZ28g
YmFjawotICAgIEFTU0VSVChtX3BvbGljeSAhPSBDbGlwYm9hcmROdW1iIHx8IHBvbGljeSA9PSBD
bGlwYm9hcmROdW1iKTsKLSAgICBtX3BvbGljeSA9IHBvbGljeTsKKyAgICBBU1NFUlQobV9wb2xp
Y3kgIT0gTm9uZSB8fCBwb2xpY3kgPT0gQ2xpcGJvYXJkTnVtYik7CisgICAgc3dpdGNoIChwb2xp
Y3kpIHsKKyAgICBjYXNlIENsaXBib2FyZFJlYWRhYmxlOgorICAgICAgICBtX3BvbGljeSA9IHN0
YXRpY19jYXN0PEFjY2Vzc1BvbGljeT4oUmVhZGFibGVUeXBlcyB8IFJlYWRhYmxlRGF0YSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2xpcGJvYXJkUmVhZGFibGVUeXBlczoKKyAgICAgICAg
bV9wb2xpY3kgPSBSZWFkYWJsZVR5cGVzOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENsaXBi
b2FyZFNldHRhYmxlRHJhZ0ltYWdlOgorICAgICAgICBtX3BvbGljeSA9IFNldHRhYmxlRHJhZ0lt
YWdlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENsaXBib2FyZFJlYWRhYmxlQW5kV3JpdGFi
bGU6CisgICAgICAgIG1fcG9saWN5ID0gc3RhdGljX2Nhc3Q8QWNjZXNzUG9saWN5PihSZWFkYWJs
ZVR5cGVzIHwgUmVhZGFibGVEYXRhIHwgV3JpdGFibGUgfCBTZXR0YWJsZURyYWdJbWFnZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2xpcGJvYXJkTnVtYjoKKyAgICBkZWZhdWx0OgorICAg
ICAgICBtX3BvbGljeSA9IE5vbmU7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAogLy8gVGhl
c2UgImNvbnZlcnNpb24iIG1ldGhvZHMgYXJlIGNhbGxlZCBieSBib3RoIFdlYkNvcmUgYW5kIFdl
YktpdCwgYW5kIG5ldmVyIG1ha2Ugc2Vuc2UgdG8gSlMsIHNvIHdlIGRvbid0CkBAIC0xMjgsNyAr
MTQ1LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKERyYWdPcGVy
YXRpb24gb3ApCiAKIGJvb2wgQ2xpcGJvYXJkOjpoYXNGaWxlT2ZUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3QKIHsKLSAgICBpZiAobV9wb2xpY3kgIT0gQ2xpcGJvYXJkUmVhZGFibGUgJiYg
bV9wb2xpY3kgIT0gQ2xpcGJvYXJkVHlwZXNSZWFkYWJsZSkKKyAgICBpZiAoIWNhblJlYWRUeXBl
cygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgUmVmUHRyPEZpbGVMaXN0PiBm
aWxlTGlzdCA9IGZpbGVzKCk7CkBAIC0xNDQsNyArMTYxLDcgQEAgYm9vbCBDbGlwYm9hcmQ6Omhh
c0ZpbGVPZlR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogCiBib29sIENsaXBib2FyZDo6
aGFzU3RyaW5nT2ZUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKLSAgICBpZiAobV9w
b2xpY3kgIT0gQ2xpcGJvYXJkUmVhZGFibGUgJiYgbV9wb2xpY3kgIT0gQ2xpcGJvYXJkVHlwZXNS
ZWFkYWJsZSkKKyAgICBpZiAoIWNhblJlYWRUeXBlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCiAgICAgcmV0dXJuIHR5cGVzKCkuY29udGFpbnModHlwZSk7IApAQCAtMTU5LDggKzE3
Niw3IEBAIHZvaWQgQ2xpcGJvYXJkOjpzZXREcm9wRWZmZWN0KGNvbnN0IFN0cmluZyAmZWZmZWN0
KQogICAgIGlmIChlZmZlY3QgIT0gIm5vbmUiICYmIGVmZmVjdCAhPSAiY29weSIgICYmIGVmZmVj
dCAhPSAibGluayIgJiYgZWZmZWN0ICE9ICJtb3ZlIikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKG1fcG9saWN5ID09IENsaXBib2FyZFJlYWRhYmxlIHx8IG1fcG9saWN5ID09IENsaXBib2Fy
ZFR5cGVzUmVhZGFibGUpCi0gICAgICAgIG1fZHJvcEVmZmVjdCA9IGVmZmVjdDsKKyAgICBtX2Ry
b3BFZmZlY3QgPSBlZmZlY3Q7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkOjpzZXRFZmZlY3RBbGxvd2Vk
KGNvbnN0IFN0cmluZyAmZWZmZWN0KQpAQCAtMTc5LDcgKzE5NSw3IEBAIHZvaWQgQ2xpcGJvYXJk
OjpzZXRFZmZlY3RBbGxvd2VkKGNvbnN0IFN0cmluZyAmZWZmZWN0KQogICAgIH0KIAogCi0gICAg
aWYgKG1fcG9saWN5ID09IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmIChjYW5Xcml0ZURhdGEo
KSkKICAgICAgICAgbV9lZmZlY3RBbGxvd2VkID0gZWZmZWN0OwogfQogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Ns
aXBib2FyZC5oCmluZGV4IGQxMWI2NTJhMjE5YWI2MGMzNTM1ZmViMGExMjgwYjVkN2FjZmY3NjIu
LjMxZGIwZjk0NmU5NjRjNjk1YjcwZjJkZWQ0N2NlOTNmNzM5NzhjOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xp
cGJvYXJkLmgKQEAgLTg2LDcgKzg2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCBib29sIGhhc0RhdGEoKSA9IDA7CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldEFj
Y2Vzc1BvbGljeShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kpOwotICAgICAgICBDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kgcG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9wb2xpY3k7IH0KKyAgICAgICAgYm9v
bCBjYW5SZWFkVHlwZXMoKSBjb25zdCB7IHJldHVybiBtX3BvbGljeSAmIFJlYWRhYmxlVHlwZXM7
IH0KKyAgICAgICAgYm9vbCBjYW5SZWFkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9saWN5ICYg
UmVhZGFibGVEYXRhOyB9CisgICAgICAgIGJvb2wgY2FuV3JpdGVEYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9wb2xpY3kgJiBXcml0YWJsZTsgfQorICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIHNwZWMg
ZG9lc24ndCBhY3R1YWxseSBhbGxvdyBkcmFnIGltYWdlIG1vZGlmaWNhdGlvbiBvdXRzaWRlIHRo
ZSBkcmFnc3RhcnQKKyAgICAgICAgLy8gZXZlbnQuIFRoaXMgY2FwYWJpbGl0eSBpcyBtYWludGFp
bmVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJsaXR5IGZvciBwb3J0cyB0aGF0IGhhdmUKKyAgICAg
ICAgLy8gc3VwcG9ydGVkIHRoaXMgaW4gdGhlIHBhc3QuIE9uIG1hbnkgcG9ydHMsIGF0dGVtcHRp
bmcgdG8gc2V0IGEgZHJhZyBpbWFnZSBvdXRzaWRlIHRoZQorICAgICAgICAvLyBkcmFnc3RhcnQg
b3BlcmF0aW9uIGlzIGEgbm8tb3AgYW55d2F5LgorICAgICAgICBib29sIGNhblNldERyYWdJbWFn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9saWN5ICYgU2V0dGFibGVEcmFnSW1hZ2U7IH0KIAogICAg
ICAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbigpIGNvbnN0OwogICAgICAgICBEcmFn
T3BlcmF0aW9uIGRlc3RpbmF0aW9uT3BlcmF0aW9uKCkgY29uc3Q7CkBAIC0xMDcsMTAgKzExNCwx
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgZHJhZ1N0YXJ0ZWQoKSBjb25z
dCB7IHJldHVybiBtX2RyYWdTdGFydGVkOyB9CiAgICAgICAgIAogICAgIHByaXZhdGU6CisgICAg
ICAgIGVudW0gQWNjZXNzUG9saWN5IHsKKyAgICAgICAgICAgIE5vbmUgPSAwLAorICAgICAgICAg
ICAgUmVhZGFibGVUeXBlcyA9IDEgPDwgMSwKKyAgICAgICAgICAgIFJlYWRhYmxlRGF0YSA9IDEg
PDwgMiwKKyAgICAgICAgICAgIFdyaXRhYmxlID0gMSA8PCAzLAorICAgICAgICAgICAgU2V0dGFi
bGVEcmFnSW1hZ2UgPSAxIDw8IDQsCisgICAgICAgIH07CisKICAgICAgICAgYm9vbCBoYXNGaWxl
T2ZUeXBlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgICAgICBib29sIGhhc1N0cmluZ09mVHlw
ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICAgICAgCi0gICAgICAgIENsaXBib2FyZEFjY2Vz
c1BvbGljeSBtX3BvbGljeTsKKyAgICAgICAgQWNjZXNzUG9saWN5IG1fcG9saWN5OwogICAgICAg
ICBTdHJpbmcgbV9kcm9wRWZmZWN0OwogICAgICAgICBTdHJpbmcgbV9lZmZlY3RBbGxvd2VkOwog
ICAgICAgICBib29sIG1fZHJhZ1N0YXJ0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJk
QWNjZXNzUG9saWN5LmgKaW5kZXggN2E1NDAwOWU1ZDA0NTg0NGJkNTAxYTAyMjM2NWEwMWFlMTI4
YTE1ZC4uODFiNTQzNmE5YzM1YWZjNzUyMTQ3NTYxMTEyYTU4NTRlN2VmNzM4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZEFjY2Vzc1BvbGljeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaApAQCAtMjksNyArMjksMTEgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgewotICAg
IENsaXBib2FyZE51bWIsIENsaXBib2FyZEltYWdlV3JpdGFibGUsIENsaXBib2FyZFdyaXRhYmxl
LCBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlLCBDbGlwYm9hcmRSZWFkYWJsZQorICAgIENsaXBib2Fy
ZE51bWIsCisgICAgQ2xpcGJvYXJkUmVhZGFibGUsCisgICAgQ2xpcGJvYXJkUmVhZGFibGVUeXBl
cywKKyAgICBDbGlwYm9hcmRSZWFkYWJsZUFuZFdyaXRhYmxlLAorICAgIENsaXBib2FyZFNldHRh
YmxlRHJhZ0ltYWdlLAogfTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAppbmRleCA0OWJmOWJlNjBhMzYwNTAzNGZlNGZlYTM0MzM4ZmYzN2U1NmUzMjc2Li43ZWIy
M2RlNGM5NjUxMmIxYzI2YjdlYzk1OTVlNzhjZTdlMTRkZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCkBAIC01MTMsNyArNTEzLDcgQEAgYm9vbCBFZGl0b3I6OnRyeURIVE1MQ29weSgp
CiAgICAgaWYgKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5pc0luUGFzc3dvcmRGaWVsZCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gIWRpc3BhdGNoQ1BQRXZlbnQoZXZlbnRO
YW1lcygpLmNvcHlFdmVudCwgQ2xpcGJvYXJkV3JpdGFibGUpOworICAgIHJldHVybiAhZGlzcGF0
Y2hDUFBFdmVudChldmVudE5hbWVzKCkuY29weUV2ZW50LCBDbGlwYm9hcmRSZWFkYWJsZUFuZFdy
aXRhYmxlKTsKIH0KIAogYm9vbCBFZGl0b3I6OnRyeURIVE1MQ3V0KCkKQEAgLTUyMSw3ICs1MjEs
NyBAQCBib29sIEVkaXRvcjo6dHJ5REhUTUxDdXQoKQogICAgIGlmIChtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+aXNJblBhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAot
ICAgIHJldHVybiAhZGlzcGF0Y2hDUFBFdmVudChldmVudE5hbWVzKCkuY3V0RXZlbnQsIENsaXBi
b2FyZFdyaXRhYmxlKTsKKyAgICByZXR1cm4gIWRpc3BhdGNoQ1BQRXZlbnQoZXZlbnROYW1lcygp
LmN1dEV2ZW50LCBDbGlwYm9hcmRSZWFkYWJsZUFuZFdyaXRhYmxlKTsKIH0KIAogYm9vbCBFZGl0
b3I6OnRyeURIVE1MUGFzdGUoKQpAQCAtNzA5LDcgKzcwOSw3IEBAIGJvb2wgRWRpdG9yOjpkaXNw
YXRjaENQUEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyAmZXZlbnRUeXBlLCBDbGlwYm9hcmRBY2Nl
c3NQb2xpCiAgICAgUmVmUHRyPEV2ZW50PiBldnQgPSBDbGlwYm9hcmRFdmVudDo6Y3JlYXRlKGV2
ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgY2xpcGJvYXJkKTsKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZl
bnQoZXZ0LCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICBib29sIG5vRGVmYXVsdFByb2Nlc3Npbmcg
PSBldnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKLSAgICBpZiAobm9EZWZhdWx0UHJvY2Vzc2luZyAm
JiBwb2xpY3kgPT0gQ2xpcGJvYXJkV3JpdGFibGUpIHsKKyAgICBpZiAobm9EZWZhdWx0UHJvY2Vz
c2luZyAmJiBwb2xpY3kgPT0gQ2xpcGJvYXJkUmVhZGFibGVBbmRXcml0YWJsZSkgewogICAgICAg
ICBQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkID0gUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQo
KTsKICAgICAgICAgcGFzdGVib2FyZC0+Y2xlYXIoKTsKICAgICAgICAgcGFzdGVib2FyZC0+d3Jp
dGVDbGlwYm9hcmQoY2xpcGJvYXJkLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jaHJvbWl1bS9FZGl0b3JDaHJvbWl1bS5jcHAKaW5kZXggMGM2MzBhMmIyNjQwZjUyOWQ0
ODczYjdkMTZlYjE4YTVjYjAzNjk3Ni4uYjRiY2FmNmRlOWExYTUyYTI3Y2U5OWJiM2Y5MDU3MGRl
NzQwZmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jaHJvbWl1bS9FZGl0
b3JDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jaHJvbWl1bS9FZGl0
b3JDaHJvbWl1bS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVk
aXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LAog
ewogICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKAogICAgICAgICBDbGlwYm9h
cmQ6OkNvcHlBbmRQYXN0ZSwKLSAgICAgICAgcG9saWN5ID09IENsaXBib2FyZFdyaXRhYmxlID8g
Q2hyb21pdW1EYXRhT2JqZWN0OjpjcmVhdGUoKSA6IENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRl
RnJvbVBhc3RlYm9hcmQoKSwKKyAgICAgICAgcG9saWN5ID09IENsaXBib2FyZFJlYWRhYmxlQW5k
V3JpdGFibGUgPyBDaHJvbWl1bURhdGFPYmplY3Q6OmNyZWF0ZSgpIDogQ2hyb21pdW1EYXRhT2Jq
ZWN0OjpjcmVhdGVGcm9tUGFzdGVib2FyZCgpLAogICAgICAgICBwb2xpY3ksCiAgICAgICAgIGZy
YW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDdiZmVh
MDZmNjM0Nzg1MDkwMzVhYmZkYzk3MGRkMTUxYjhiYzkyMjguLjBmOWM5NmNlMmJlZWNiNmE4ZjVk
MzU5MDdkNDE5MzQ1OTE2Y2E4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0KQEAgLTYwLDcgKzYwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIFBhc3NS
ZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQogewogICAgIHJldHVybiBDbGlwYm9hcmRN
YWM6OmNyZWF0ZShDbGlwYm9hcmQ6OkNvcHlBbmRQYXN0ZSwKLSAgICAgICAgcG9saWN5ID09IENs
aXBib2FyZFdyaXRhYmxlID8gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpLT51bmlxdWVOYW1lKCkgOiBTdHJpbmcoTlNHZW5lcmFsUGJvYXJkKSwgcG9saWN5LCBDbGlw
Ym9hcmRNYWM6OkNvcHlBbmRQYXN0ZUdlbmVyaWMsIGZyYW1lKTsKKyAgICAgICAgcG9saWN5ID09
IENsaXBib2FyZFJlYWRhYmxlQW5kV3JpdGFibGUgPyBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPnVuaXF1ZU5hbWUoKSA6IFN0cmluZyhOU0dlbmVyYWxQYm9hcmQp
LCBwb2xpY3ksIENsaXBib2FyZE1hYzo6Q29weUFuZFBhc3RlR2VuZXJpYywgZnJhbWUpOwogfQog
CiB2b2lkIEVkaXRvcjo6c2hvd0ZvbnRQYW5lbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCmluZGV4IDA0MDQ1OTQwZjM1ZmNmZGM2OGZlYzg1MjkwZGMwOGM1M2Y5N2VlYzYu
LjM2NDIwNmNmMDdjYWYzOTI2Yjc1YjUyYWNhN2Y1N2I4NDgwYzJhZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBEcmFnQ29u
dHJvbGxlcjo6ZHJhZ0V4aXRlZChEcmFnRGF0YSogZHJhZ0RhdGEpCiAgICAgRnJhbWUqIG1haW5G
cmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CiAKICAgICBpZiAoUmVmUHRyPEZyYW1lVmlldz4g
diA9IG1haW5GcmFtZS0+dmlldygpKSB7Ci0gICAgICAgIENsaXBib2FyZEFjY2Vzc1BvbGljeSBw
b2xpY3kgPSAoIW1fZG9jdW1lbnRVbmRlck1vdXNlIHx8IG1fZG9jdW1lbnRVbmRlck1vdXNlLT5z
ZWN1cml0eU9yaWdpbigpLT5pc0xvY2FsKCkpID8gQ2xpcGJvYXJkUmVhZGFibGUgOiBDbGlwYm9h
cmRUeXBlc1JlYWRhYmxlOworICAgICAgICBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5ID0g
KCFtX2RvY3VtZW50VW5kZXJNb3VzZSB8fCBtX2RvY3VtZW50VW5kZXJNb3VzZS0+c2VjdXJpdHlP
cmlnaW4oKS0+aXNMb2NhbCgpKSA/IENsaXBib2FyZFJlYWRhYmxlIDogQ2xpcGJvYXJkUmVhZGFi
bGVUeXBlczsKICAgICAgICAgUmVmUHRyPENsaXBib2FyZD4gY2xpcGJvYXJkID0gQ2xpcGJvYXJk
OjpjcmVhdGUocG9saWN5LCBkcmFnRGF0YSwgbWFpbkZyYW1lKTsKICAgICAgICAgY2xpcGJvYXJk
LT5zZXRTb3VyY2VPcGVyYXRpb24oZHJhZ0RhdGEtPmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
aygpKTsKICAgICAgICAgbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+Y2FuY2VsRHJhZ0FuZERy
b3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSksIGNsaXBib2FyZC5nZXQoKSk7CkBAIC02MTIs
NyArNjEyLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKERyYWdEYXRhKiBk
cmFnRGF0YSwgRHJhZ09wZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgIGlmICghdmlld1Byb3RlY3Rv
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBv
bGljeSA9IG1fZG9jdW1lbnRVbmRlck1vdXNlLT5zZWN1cml0eU9yaWdpbigpLT5pc0xvY2FsKCkg
PyBDbGlwYm9hcmRSZWFkYWJsZSA6IENsaXBib2FyZFR5cGVzUmVhZGFibGU7CisgICAgQ2xpcGJv
YXJkQWNjZXNzUG9saWN5IHBvbGljeSA9IG1fZG9jdW1lbnRVbmRlck1vdXNlLT5zZWN1cml0eU9y
aWdpbigpLT5pc0xvY2FsKCkgPyBDbGlwYm9hcmRSZWFkYWJsZSA6IENsaXBib2FyZFJlYWRhYmxl
VHlwZXM7CiAgICAgUmVmUHRyPENsaXBib2FyZD4gY2xpcGJvYXJkID0gQ2xpcGJvYXJkOjpjcmVh
dGUocG9saWN5LCBkcmFnRGF0YSwgbWFpbkZyYW1lLmdldCgpKTsKICAgICBEcmFnT3BlcmF0aW9u
IHNyY09wTWFzayA9IGRyYWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKICAg
ICBjbGlwYm9hcmQtPnNldFNvdXJjZU9wZXJhdGlvbihzcmNPcE1hc2spOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGFmMDM3MjllMmY5YjdjNWZlODA2NWU5YTM2MzU4ODli
MmY2MGNhNWEuLmY3N2MxMGIwMmRiMmFkYTdmOGM2NGM5MmU4Y2ZhMmRjY2Y3YzA3NmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM1MjMsNyArMzUyMyw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIGV2ZW50LCBDaGVja0RyCiAgICAgICAgIAogICAgICAgICAvLyBJbnZhbGlkYXRlIGNsaXBi
b2FyZCBoZXJlIGFnYWluc3QgYW55bW9yZSBwYXN0ZWJvYXJkIHdyaXRpbmcgZm9yIHNlY3VyaXR5
LiAgVGhlIGRyYWcKICAgICAgICAgLy8gaW1hZ2UgY2FuIHN0aWxsIGJlIGNoYW5nZWQgYXMgd2Ug
ZHJhZywgYnV0IG5vdCB0aGUgcGFzdGVib2FyZCBkYXRhLgotICAgICAgICBkcmFnU3RhdGUoKS5t
X2RyYWdDbGlwYm9hcmQtPnNldEFjY2Vzc1BvbGljeShDbGlwYm9hcmRJbWFnZVdyaXRhYmxlKTsK
KyAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJkLT5zZXRBY2Nlc3NQb2xpY3koQ2xp
cGJvYXJkU2V0dGFibGVEcmFnSW1hZ2UpOwogICAgICAgICAKICAgICAgICAgaWYgKG1fbW91c2VE
b3duTWF5U3RhcnREcmFnKSB7CiAgICAgICAgICAgICAvLyBnYXRoZXIgdmFsdWVzIGZyb20gREhU
TUwgZWxlbWVudCwgaWYgaXQgc2V0IGFueQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ibGFja2JlcnJ5L0V2ZW50SGFuZGxlckJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ibGFja2JlcnJ5L0V2ZW50SGFuZGxlckJsYWNrQmVycnkuY3BwCmluZGV4IDhmYjcyYjgw
MGUyZDNjNmM4NWJkZTlhYTZjNzA1Y2IwYThmZmFkZTAuLmQ2MWVhM2FjYzIxYzFhNDVhMTg1YjZh
ZjNlMWI1NGJjNTc3YjZjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYmxhY2ti
ZXJyeS9FdmVudEhhbmRsZXJCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2JsYWNrYmVycnkvRXZlbnRIYW5kbGVyQmxhY2tCZXJyeS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAg
dm9pZCBFdmVudEhhbmRsZXI6OmZvY3VzRG9jdW1lbnRWaWV3KCkKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQogV1RGOjpQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVE
cmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENsaXBib2FyZEJsYWNrQmVy
cnk6OmNyZWF0ZShDbGlwYm9hcmRXcml0YWJsZSk7CisgICAgcmV0dXJuIENsaXBib2FyZEJsYWNr
QmVycnk6OmNyZWF0ZShDbGlwYm9hcmRSZWFkYWJsZUFuZFdyaXRhYmxlKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hy
b21pdW0uY3BwCmluZGV4IDAxM2QzYTM5YWRiOTk1MTk0YTQxOTk5ZDBlMWU0MjU2Y2YxZmNkZGUu
LjA5ZWE2ZTNiNzNkNGNlNGM4NWVmM2E0MDNmMzQxYjliMzZlM2I3NjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21pdW0uY3BwCkBA
IC0xMjksNyArMTI5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50QWN0aXZhdGVkVmlldyhj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBjb25zdAogUGFzc1JlZlB0cjxDbGlwYm9h
cmQ+IEV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQoKSBjb25zdAogewogICAg
IFJlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IGRhdGFPYmplY3QgPSBDaHJvbWl1bURhdGFPYmpl
Y3Q6OmNyZWF0ZSgpOwotICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKENsaXBi
b2FyZDo6RHJhZ0FuZERyb3AsIGRhdGFPYmplY3QuZ2V0KCksIENsaXBib2FyZFdyaXRhYmxlLCBt
X2ZyYW1lKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZShDbGlwYm9hcmQ6
OkRyYWdBbmREcm9wLCBkYXRhT2JqZWN0LmdldCgpLCBDbGlwYm9hcmRSZWFkYWJsZUFuZFdyaXRh
YmxlLCBtX2ZyYW1lKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OmZvY3VzRG9jdW1lbnRWaWV3
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9FdmVudEhhbmRsZXJFZmwuY3BwCmluZGV4IGUz
NmVkY2I0ZWJlNTg4ZDNkNGRkMTIxMTllYTc3Y2RiMmRlYzExOGQuLjc0OTM1ZjU1NzI2Yjk3NGVm
OGViZWMwNmE3YzYyNmQ3MWYxZmRkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
ZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRXZl
bnRIYW5kbGVyRWZsLmNwcApAQCAtOTksNyArOTksNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFz
c1doZWVsRXZlbnRUb1dpZGdldChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBXaWRn
ZQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRI
YW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENs
aXBib2FyZEVmbDo6Y3JlYXRlKENsaXBib2FyZFdyaXRhYmxlLCBDbGlwYm9hcmQ6OkRyYWdBbmRE
cm9wKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkRWZsOjpjcmVhdGUoQ2xpcGJvYXJkUmVhZGFibGVB
bmRXcml0YWJsZSwgQ2xpcGJvYXJkOjpEcmFnQW5kRHJvcCk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAKaW5kZXggY2ZkNmM4ODUyMWJi
ZTE2YjZlZDYxYWU2ZmFkOTBmOTZiZGE4M2VmNC4uOTQ3ZjQ0YmIxMzA0MDEwMDM5NDJmMjBlYjll
NjFhNmM4OGQ3YTgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRI
YW5kbGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJH
dGsuY3BwCkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2hlZWxFdmVu
dFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIFdpZGdlCiAKIFBhc3NS
ZWZQdHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkR3RrOjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFi
bGUsIERhdGFPYmplY3RHdGs6OmNyZWF0ZSgpLCBDbGlwYm9hcmQ6OkRyYWdBbmREcm9wLCBtX2Zy
YW1lKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkR3RrOjpjcmVhdGUoQ2xpcGJvYXJkUmVhZGFibGVB
bmRXcml0YWJsZSwgRGF0YU9iamVjdEd0azo6Y3JlYXRlKCksIENsaXBib2FyZDo6RHJhZ0FuZERy
b3AsIG1fZnJhbWUpOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVu
dFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSogc3Vi
ZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXgg
ZTUxZDBkZmZlMjU5MWNkZDlhNDhjMGQ2YjExNmFiMDM4MTBhNDUyNy4uNmNmYmZiNTI1MTE2NDAz
OTE3MDE5ZjkxMjJmNjNkZjI4YjhkNGZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbQpAQCAtNjc3LDcgKzY3Nyw3IEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJk
PiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCkgY29uc3QKICAgICAvLyBh
bHNvIGRvbmUgZm9yIHNlY3VyaXR5LCBhcyBpdCBlcmFzZXMgZGF0YSBmcm9tIHRoZSBsYXN0IGRy
YWcKICAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQoTlNEcmFnUGJvYXJkKTsKICAgICBwYXN0ZWJv
YXJkLmNsZWFyKCk7Ci0gICAgcmV0dXJuIENsaXBib2FyZE1hYzo6Y3JlYXRlKENsaXBib2FyZDo6
RHJhZ0FuZERyb3AsIFN0cmluZyhOU0RyYWdQYm9hcmQpLCBDbGlwYm9hcmRXcml0YWJsZSwgQ2xp
cGJvYXJkTWFjOjpEcmFnQW5kRHJvcERhdGEsIG1fZnJhbWUpOworICAgIHJldHVybiBDbGlwYm9h
cmRNYWM6OmNyZWF0ZShDbGlwYm9hcmQ6OkRyYWdBbmREcm9wLCBTdHJpbmcoTlNEcmFnUGJvYXJk
KSwgQ2xpcGJvYXJkUmVhZGFibGVBbmRXcml0YWJsZSwgQ2xpcGJvYXJkTWFjOjpEcmFnQW5kRHJv
cERhdGEsIG1fZnJhbWUpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9xdC9FdmVu
dEhhbmRsZXJRdC5jcHAKaW5kZXggMGY3ODA2YTUzYjdmYzE1NDRjMGM1NzIxZDYyMjQwMzE5ZWM2
YzI4MC4uNGI2MjkzYzYxN2EwNDUyOWY5YTM0YjM2N2VkNmYwMWI0NjIwNmY5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiBldmVudCwgV2lkZ2UKIAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxl
cjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQoKSBjb25zdAogewotICAgIHJldHVybiBDbGlwYm9h
cmRRdDo6Y3JlYXRlKENsaXBib2FyZFdyaXRhYmxlLCBtX2ZyYW1lLCBDbGlwYm9hcmQ6OkRyYWdB
bmREcm9wKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkUXQ6OmNyZWF0ZShDbGlwYm9hcmRSZWFkYWJs
ZUFuZFdyaXRhYmxlLCBtX2ZyYW1lLCBDbGlwYm9hcmQ6OkRyYWdBbmREcm9wKTsKIH0KIAogYm9v
bCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKaW5kZXggMDRiOTg4Zjk0MTBmNDA1ZGJmMDY2
MGRiOGU0MmY2NGQwYmE3MzcyYi4uYTc0ZTRmMGRmOTVjYTAzZjc5MzI4NzIwNDVhNDU0NTQ5NDVh
OWQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5kbGVyV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCkBA
IC0xMDMsNyArMTAzLDcgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6Y3Jl
YXRlRHJhZ2dpbmdDbGlwYm9hcmQoKSBjb25zdAogI2Vsc2UKICAgICBDT01QdHI8V0NEYXRhT2Jq
ZWN0PiBkYXRhT2JqZWN0OwogICAgIFdDRGF0YU9iamVjdDo6Y3JlYXRlSW5zdGFuY2UoJmRhdGFP
YmplY3QpOwotICAgIHJldHVybiBDbGlwYm9hcmRXaW46OmNyZWF0ZShDbGlwYm9hcmQ6OkRyYWdB
bmREcm9wLCBkYXRhT2JqZWN0LmdldCgpLCBDbGlwYm9hcmRXcml0YWJsZSwgbV9mcmFtZSk7Cisg
ICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKENsaXBib2FyZDo6RHJhZ0FuZERyb3AsIGRh
dGFPYmplY3QuZ2V0KCksIENsaXBib2FyZFJlYWRhYmxlQW5kV3JpdGFibGUsIG1fZnJhbWUpOwog
I2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd3gvRXZl
bnRIYW5kbGVyV3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93eC9FdmVudEhhbmRsZXJXeC5j
cHAKaW5kZXggZjBiNzQ1MGIyMWE0NWY3OTE2NDBkZWZkODJhY2RlNmE2NGYzZTJlNS4uN2YzMDU5
NTM3NTZhNGRiMzc0YzlkNmJiMTZjYjEyN2ZlOWQ1OGQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS93eC9FdmVudEhhbmRsZXJXeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS93eC9FdmVudEhhbmRsZXJXeC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6ZXZlbnRBY3RpdmF0ZWRWaWV3KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGNvbnN0
CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xp
cGJvYXJkKCkgY29uc3QgCiB7Ci0gICAgcmV0dXJuIENsaXBib2FyZFd4OjpjcmVhdGUoQ2xpcGJv
YXJkV3JpdGFibGUsIENsaXBib2FyZDo6RHJhZ0FuZERyb3ApOworICAgIHJldHVybiBDbGlwYm9h
cmRXeDo6Y3JlYXRlKENsaXBib2FyZFJlYWRhYmxlQW5kV3JpdGFibGUsIENsaXBib2FyZDo6RHJh
Z0FuZERyb3ApOwogfQogCiB1bnNpZ25lZCBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVy
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0NsaXBi
b2FyZEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9D
bGlwYm9hcmRCbGFja0JlcnJ5LmNwcAppbmRleCBhZGUyMmVmNDdlYmYxMDQ0ZTIwYWE2YzllMjY2
NDlhN2VmMjA0NTRkLi42MGE0NGIyNjI0ZmEyOGU4ZTNiNzgyOGU0M2ZkYzgxMTJhMjZlNWMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0NsaXBib2FyZEJs
YWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ2xp
cGJvYXJkQmxhY2tCZXJyeS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgQ2xpcGJvYXJkQmxhY2tCZXJy
eTo6fkNsaXBib2FyZEJsYWNrQmVycnkoKQogCiB2b2lkIENsaXBib2FyZEJsYWNrQmVycnk6OmNs
ZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBi
b2FyZFdyaXRhYmxlKQorICAgIGlmICghY2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGlwYm9hcmQ6OmNsZWFyQ2xpcGJvYXJkQnlU
eXBlKHR5cGUudXRmOCgpLmRhdGEoKSk7CkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgQ2xpcGJvYXJk
QmxhY2tCZXJyeTo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogdm9pZCBDbGlwYm9h
cmRCbGFja0JlcnJ5OjpjbGVhckFsbERhdGEoKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlw
Ym9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjpjbGVhckNsaXBib2FyZCgp
OwpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIENsaXBib2FyZEJsYWNrQmVycnk6OmNsZWFyQWxsRGF0
YSgpCiAKIFN0cmluZyBDbGlwYm9hcmRCbGFja0JlcnJ5OjpnZXREYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3QKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUpCisg
ICAgaWYgKCFjYW5SZWFkRGF0YSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBy
ZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjpy
ZWFkQ2xpcGJvYXJkQnlUeXBlKHR5cGUudXRmOCgpLmRhdGEoKSkuY19zdHIoKSk7CkBAIC02Niw3
ICs2Niw3IEBAIFN0cmluZyBDbGlwYm9hcmRCbGFja0JlcnJ5OjpnZXREYXRhKGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKIAogYm9vbCBDbGlwYm9hcmRCbGFja0JlcnJ5OjpzZXREYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIGlmIChwb2xpY3koKSAh
PSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBpZiAodHlwZSA9PSAidGV4dC9wbGFpbiIpCkBAIC04MCw3ICs4
MCw3IEBAIGJvb2wgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIAogTGlzdEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRC
bGFja0JlcnJ5Ojp0eXBlcygpIGNvbnN0CiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2Fy
ZFJlYWRhYmxlICYmIHBvbGljeSgpICE9IENsaXBib2FyZFR5cGVzUmVhZGFibGUpCisgICAgaWYg
KCFjYW5SZWFkVHlwZXMoKSkKICAgICAgICAgcmV0dXJuIExpc3RIYXNoU2V0PFN0cmluZz4oKTsK
IAogICAgIC8vIFdlIHVzZSBoYXJkY29kZWQgbGlzdCBoZXJlIHNpbmNlIHRoZXJlIHNlZW1zIHRv
IGJlIG5vIEFQSSB0byBnZXQgdGhlIGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXggZmMzNzI3OGQ2Yjky
MjczYWQ4OTUyMTU3MmViNWQ4NGRiYWU5MjE4OS4uZDA5MDVmMjg2NmY2NTJkMDdkYzZkZWIzZWU4
ZDM4Nzg3NThmOGE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcApAQCAtODksMTQgKzg5LDE0IEBAIERhdGFUcmFu
c2Zlckl0ZW1MaXN0UG9saWN5V3JhcHBlcjo6fkRhdGFUcmFuc2Zlckl0ZW1MaXN0UG9saWN5V3Jh
cHBlcigpCiAKIHNpemVfdCBEYXRhVHJhbnNmZXJJdGVtTGlzdFBvbGljeVdyYXBwZXI6Omxlbmd0
aCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY2xpcGJvYXJkLT5wb2xpY3koKSA9PSBDbGlwYm9hcmRO
dW1iKQorICAgIGlmICghbV9jbGlwYm9hcmQtPmNhblJlYWRUeXBlcygpKQogICAgICAgICByZXR1
cm4gMDsKICAgICByZXR1cm4gbV9kYXRhT2JqZWN0LT5sZW5ndGgoKTsKIH0KIAogUGFzc1JlZlB0
cjxEYXRhVHJhbnNmZXJJdGVtPiBEYXRhVHJhbnNmZXJJdGVtTGlzdFBvbGljeVdyYXBwZXI6Oml0
ZW0odW5zaWduZWQgbG9uZyBpbmRleCkKIHsKLSAgICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgp
ID09IENsaXBib2FyZE51bWIpCisgICAgaWYgKCFtX2NsaXBib2FyZC0+Y2FuUmVhZFR5cGVzKCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIFJlZlB0cjxDaHJvbWl1bURhdGFPYmplY3RJdGVtPiBp
dGVtID0gbV9kYXRhT2JqZWN0LT5pdGVtKGluZGV4KTsKICAgICBpZiAoIWl0ZW0pCkBAIC0xMDcs
NyArMTA3LDcgQEAgUGFzc1JlZlB0cjxEYXRhVHJhbnNmZXJJdGVtPiBEYXRhVHJhbnNmZXJJdGVt
TGlzdFBvbGljeVdyYXBwZXI6Oml0ZW0odW5zaWduZWQgbG8KIAogdm9pZCBEYXRhVHJhbnNmZXJJ
dGVtTGlzdFBvbGljeVdyYXBwZXI6OmRlbGV0ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKG1fY2xpcGJvYXJkLT5wb2xpY3koKSAhPSBDbGlw
Ym9hcmRXcml0YWJsZSkgeworICAgIGlmICghbV9jbGlwYm9hcmQtPmNhbldyaXRlRGF0YSgpKSB7
CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMTYsMjEgKzExNiwyMSBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0UG9saWN5V3Jh
cHBlcjo6ZGVsZXRlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4LCBFeGNlcHRpbwogCiB2b2lkIERh
dGFUcmFuc2Zlckl0ZW1MaXN0UG9saWN5V3JhcHBlcjo6Y2xlYXIoKQogewotICAgIGlmIChtX2Ns
aXBib2FyZC0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFtX2NsaXBi
b2FyZC0+Y2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2RhdGFPYmplY3Qt
PmNsZWFyQWxsKCk7CiB9CiAKIHZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3RQb2xpY3lXcmFwcGVy
OjphZGQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewotICAgIGlmIChtX2NsaXBib2FyZC0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3Jp
dGFibGUpCisgICAgaWYgKCFtX2NsaXBib2FyZC0+Y2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX2RhdGFPYmplY3QtPmFkZChkYXRhLCB0eXBlLCBlYyk7CiB9CiAKIHZvaWQg
RGF0YVRyYW5zZmVySXRlbUxpc3RQb2xpY3lXcmFwcGVyOjphZGQoUGFzc1JlZlB0cjxGaWxlPiBm
aWxlKQogewotICAgIGlmIChtX2NsaXBib2FyZC0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFi
bGUpCisgICAgaWYgKCFtX2NsaXBib2FyZC0+Y2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBtX2RhdGFPYmplY3QtPmFkZChmaWxlLCBtX2NsaXBib2FyZC0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KQEAgLTE1NiwyMSArMTU2LDIx
IEBAIERhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lXcmFwcGVyOjp+RGF0YVRyYW5zZmVySXRlbVBvbGlj
eVdyYXBwZXIoKQogCiBTdHJpbmcgRGF0YVRyYW5zZmVySXRlbVBvbGljeVdyYXBwZXI6OmtpbmQo
KSBjb25zdAogewotICAgIGlmIChtX2NsaXBib2FyZC0+cG9saWN5KCkgPT0gQ2xpcGJvYXJkTnVt
YikKKyAgICBpZiAoIW1fY2xpcGJvYXJkLT5jYW5SZWFkVHlwZXMoKSkKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgIHJldHVybiBtX2l0ZW0tPmtpbmQoKTsKIH0KIAogU3RyaW5nIERhdGFU
cmFuc2Zlckl0ZW1Qb2xpY3lXcmFwcGVyOjp0eXBlKCkgY29uc3QKIHsKLSAgICBpZiAobV9jbGlw
Ym9hcmQtPnBvbGljeSgpID09IENsaXBib2FyZE51bWIpCisgICAgaWYgKCFtX2NsaXBib2FyZC0+
Y2FuUmVhZFR5cGVzKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gbV9p
dGVtLT50eXBlKCk7CiB9CiAKIHZvaWQgRGF0YVRyYW5zZmVySXRlbVBvbGljeVdyYXBwZXI6Omdl
dEFzU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+IGNhbGxiYWNrKSBjb25zdAogewot
ICAgIGlmIChtX2NsaXBib2FyZC0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUgJiYgbV9j
bGlwYm9hcmQtPnBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghbV9jbGlw
Ym9hcmQtPmNhblJlYWREYXRhKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXRlbS0+Z2V0
QXNTdHJpbmcoY2FsbGJhY2ssIG1fY2xpcGJvYXJkLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOwpAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgRGF0YVRyYW5z
ZmVySXRlbVBvbGljeVdyYXBwZXI6OmdldEFzU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nQ2FsbGJh
Y2s+IGNhbGxiCiAKIFBhc3NSZWZQdHI8QmxvYj4gRGF0YVRyYW5zZmVySXRlbVBvbGljeVdyYXBw
ZXI6OmdldEFzRmlsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY2xpcGJvYXJkLT5wb2xpY3koKSAh
PSBDbGlwYm9hcmRSZWFkYWJsZSAmJiBtX2NsaXBib2FyZC0+cG9saWN5KCkgIT0gQ2xpcGJvYXJk
V3JpdGFibGUpCisgICAgaWYgKCFtX2NsaXBib2FyZC0+Y2FuUmVhZERhdGEoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICByZXR1cm4gbV9pdGVtLT5nZXRBc0ZpbGUoKTsKQEAgLTIzOCw3ICsy
MzgsNyBAQCBQYXNzUmVmUHRyPENsaXBib2FyZENocm9taXVtPiBDbGlwYm9hcmRDaHJvbWl1bTo6
Y3JlYXRlKENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVAogCiB2b2lkIENsaXBib2FyZENocm9taXVt
OjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIGlmIChwb2xpY3koKSAhPSBD
bGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBtX2RhdGFPYmplY3QtPmNsZWFyRGF0YShub3JtYWxpemVUeXBlKHR5cGUpKTsK
QEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIENsaXBib2FyZENocm9taXVtOjpjbGVhckRhdGEoY29u
c3QgU3RyaW5nJiB0eXBlKQogCiB2b2lkIENsaXBib2FyZENocm9taXVtOjpjbGVhckFsbERhdGEo
KQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNh
bldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2RhdGFPYmplY3QtPmNsZWFy
QWxsKCk7CkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBDbGlwYm9hcmRDaHJvbWl1bTo6Y2xlYXJB
bGxEYXRhKCkKIAogU3RyaW5nIENsaXBib2FyZENocm9taXVtOjpnZXREYXRhKGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUp
CisgICAgaWYgKCFjYW5SZWFkRGF0YSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAg
ICBib29sIGNvbnZlcnRUb1VSTCA9IGZhbHNlOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFN0cmluZyBD
bGlwYm9hcmRDaHJvbWl1bTo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAKIGJv
b2wgQ2xpcGJvYXJkQ2hyb21pdW06OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGRhdGEpCiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQor
ICAgIGlmICghY2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJl
dHVybiBtX2RhdGFPYmplY3QtPnNldERhdGEobm9ybWFsaXplVHlwZSh0eXBlKSwgZGF0YSk7CkBA
IC0yNzcsNyArMjc3LDcgQEAgYm9vbCBDbGlwYm9hcmRDaHJvbWl1bTo6c2V0RGF0YShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKIC8vIGV4dGVuc2lvbnMgYmV5b25kIElF
J3MgQVBJCiBMaXN0SGFzaFNldDxTdHJpbmc+IENsaXBib2FyZENocm9taXVtOjp0eXBlcygpIGNv
bnN0CiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlICYmIHBvbGljeSgp
ICE9IENsaXBib2FyZFR5cGVzUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFkVHlwZXMoKSkKICAg
ICAgICAgcmV0dXJuIExpc3RIYXNoU2V0PFN0cmluZz4oKTsKIAogICAgIHJldHVybiBtX2RhdGFP
YmplY3QtPnR5cGVzKCk7CkBAIC0yODYsNyArMjg2LDcgQEAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBD
bGlwYm9hcmRDaHJvbWl1bTo6dHlwZXMoKSBjb25zdAogUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xp
cGJvYXJkQ2hyb21pdW06OmZpbGVzKCkgY29uc3QKIHsKICAgICBSZWZQdHI8RmlsZUxpc3Q+IGZp
bGVzID0gRmlsZUxpc3Q6OmNyZWF0ZSgpOwotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRS
ZWFkYWJsZSkKKyAgICBpZiAoIWNhblJlYWREYXRhKCkpCiAgICAgICAgIHJldHVybiBmaWxlcy5y
ZWxlYXNlKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGF0YU9iamVjdC0+bGVu
Z3RoKCk7ICsraSkgewpAQCAtMzAyLDcgKzMwMiw3IEBAIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IENs
aXBib2FyZENocm9taXVtOjpmaWxlcygpIGNvbnN0CiAKIHZvaWQgQ2xpcGJvYXJkQ2hyb21pdW06
OnNldERyYWdJbWFnZShDYWNoZWRJbWFnZSogaW1hZ2UsIE5vZGUqIG5vZGUsIGNvbnN0IEludFBv
aW50JiBsb2MpCiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZEltYWdlV3JpdGFibGUg
JiYgcG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFjYW5TZXREcmFnSW1h
Z2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZHJhZ0ltYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAppbmRleCAyNjNiNmNmOGYyZWRj
NTk5OGYxNWEwMWFlYmM1NzIyZTM1OTY2NDRhLi5mNTA0NjBhNzIxYWM0MDNkZjFhY2FlOWI1NDQw
MzgwZWE4M2E4MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xp
cGJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJk
R3RrLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBDbGlwYm9hcmREYXRhVHlwZSBkYXRh
T2JqZWN0VHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHJhd1R5CiAKIHZv
aWQgQ2xpcGJvYXJkR3RrOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKQogewot
ICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRl
RGF0YSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBDbGlwYm9hcmREYXRhVHlwZSB0eXBlID0g
ZGF0YU9iamVjdFR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlwZVN0cmluZyk7CkBAIC0xMzMs
NyArMTMzLDcgQEAgdm9pZCBDbGlwYm9hcmRHdGs6OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5
cGVTdHJpbmcpCiAKIHZvaWQgQ2xpcGJvYXJkR3RrOjpjbGVhckFsbERhdGEoKQogewotICAgIGlm
IChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgp
KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBkbyBub3QgY2xlYXIgZmlsZW5hbWVzLiBB
Y2NvcmRpbmcgdG8gdGhlIHNwZWM6ICJUaGUgY2xlYXJEYXRhKCkgbWV0aG9kCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgdm9pZCBDbGlwYm9hcmRHdGs6OmNsZWFyQWxsRGF0YSgpCiAKIFN0cmluZyBDbGlw
Ym9hcmRHdGs6OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKSBjb25zdAogewotICAg
IGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSB8fCAhbV9kYXRhT2JqZWN0KQorICAg
IGlmICghY2FuUmVhZERhdGEoKSB8fCAhbV9kYXRhT2JqZWN0KQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAKICAgICBpZiAobV9jbGlwYm9hcmQpCkBAIC0xNjksNyArMTY5LDcgQEAgU3RyaW5n
IENsaXBib2FyZEd0azo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcpIGNvbnN0CiAK
IGJvb2wgQ2xpcGJvYXJkR3RrOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgY29u
c3QgU3RyaW5nJiBkYXRhKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJs
ZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKQEAgLTE5MCw3ICsxOTAsNyBAQCBib29sIENsaXBib2Fy
ZEd0azo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGF0
YSkKIAogTGlzdEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRHdGs6OnR5cGVzKCkgY29uc3QKIHsK
LSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUgJiYgcG9saWN5KCkgIT0gQ2xp
cGJvYXJkVHlwZXNSZWFkYWJsZSkKKyAgICBpZiAoIWNhblJlYWRUeXBlcygpKQogICAgICAgICBy
ZXR1cm4gTGlzdEhhc2hTZXQ8U3RyaW5nPigpOwogCiAgICAgaWYgKG1fY2xpcGJvYXJkKQpAQCAt
MjE5LDcgKzIxOSw3IEBAIExpc3RIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkR3RrOjp0eXBlcygp
IGNvbnN0CiAKIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZEd0azo6ZmlsZXMoKSBjb25z
dAogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSkKKyAgICBpZiAoIWNh
blJlYWREYXRhKCkpCiAgICAgICAgIHJldHVybiBGaWxlTGlzdDo6Y3JlYXRlKCk7CiAKICAgICBp
ZiAobV9jbGlwYm9hcmQpCkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBDbGlwYm9hcmRHdGs6OnNl
dERyYWdJbWFnZUVsZW1lbnQoTm9kZSogZWxlbWVudCwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9u
KQogCiB2b2lkIENsaXBib2FyZEd0azo6c2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiBpbWFnZSwg
Tm9kZSogZWxlbWVudCwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQogewotICAgIGlmIChwb2xp
Y3koKSAhPSBDbGlwYm9hcmRJbWFnZVdyaXRhYmxlICYmIHBvbGljeSgpICE9IENsaXBib2FyZFdy
aXRhYmxlKQorICAgIGlmICghY2FuU2V0RHJhZ0ltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChtX2RyYWdJbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9DbGlwYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJv
YXJkTWFjLm1tCmluZGV4IGE1YjI5ZDk5ZjgyOGQ5ODQ1YzNiN2YxN2M4N2JhNTZhYWViZTQyZTEu
LjM2YTRkOGUyODU2MDgxYWIwODk5MTMwZWYyZmM2NzRkOWRjNzM1M2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQpAQCAtMTU1LDcgKzE1NSw3IEBAIHN0
YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFzaFNldDxT
dHJpbmc+JiByZXN1bHRUeXBlcywKIAogdm9pZCBDbGlwYm9hcmRNYWM6OmNsZWFyRGF0YShjb25z
dCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxl
KQorICAgIGlmICghY2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIG5v
dGUgTlNQYXN0ZWJvYXJkIGVuZm9yY2VzIGNoYW5nZUNvdW50IGl0c2VsZiBvbiB3cml0aW5nIC0g
Y2FuJ3Qgd3JpdGUgaWYgbm90IHRoZSBvd25lcgpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgQ2xp
cGJvYXJkTWFjOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogCiB2b2lkIENsaXBib2Fy
ZE1hYzo6Y2xlYXJBbGxEYXRhKCkKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3Jp
dGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gbm90ZSBOU1Bhc3RlYm9hcmQgZW5mb3JjZXMgY2hhbmdlQ291bnQgaXRzZWxmIG9uIHdyaXRp
bmcgLSBjYW4ndCB3cml0ZSBpZiBub3QgdGhlIG93bmVyCkBAIC0yMjAsNyArMjIwLDcgQEAgc3Rh
dGljIFZlY3RvcjxTdHJpbmc+IGFic29sdXRlVVJMc0Zyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGIKIAogU3RyaW5nIENsaXBib2FyZE1hYzo6Z2V0RGF0YShjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJl
YWRhYmxlIHx8IG1fY2xpcGJvYXJkQ29udGVudHMgPT0gRHJhZ0FuZERyb3BGaWxlcykKKyAgICBp
ZiAoIWNhblJlYWREYXRhKCkgfHwgbV9jbGlwYm9hcmRDb250ZW50cyA9PSBEcmFnQW5kRHJvcEZp
bGVzKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBjb25zdCBTdHJpbmcmIGNvY29h
VHlwZSA9IGNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZSh0eXBlKTsKQEAgLTI0OSw3ICsy
NDksNyBAQCBTdHJpbmcgQ2xpcGJvYXJkTWFjOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKIAogYm9vbCBDbGlwYm9hcmRNYWM6OnNldERhdGEoY29uc3QgU3RyaW5nICZ0eXBlLCBj
b25zdCBTdHJpbmcgJmRhdGEpCiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRh
YmxlIHx8IG1fY2xpcGJvYXJkQ29udGVudHMgPT0gRHJhZ0FuZERyb3BGaWxlcykKKyAgICBpZiAo
IWNhbldyaXRlRGF0YSgpIHx8IG1fY2xpcGJvYXJkQ29udGVudHMgPT0gRHJhZ0FuZERyb3BGaWxl
cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIG5vdGUgTlNQYXN0ZWJvYXJkIGVuZm9y
Y2VzIGNoYW5nZUNvdW50IGl0c2VsZiBvbiB3cml0aW5nIC0gY2FuJ3Qgd3JpdGUgaWYgbm90IHRo
ZSBvd25lcgogCkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBDbGlwYm9hcmRNYWM6OnNldERhdGEo
Y29uc3QgU3RyaW5nICZ0eXBlLCBjb25zdCBTdHJpbmcgJmRhdGEpCiAKIExpc3RIYXNoU2V0PFN0
cmluZz4gQ2xpcGJvYXJkTWFjOjp0eXBlcygpIGNvbnN0CiB7Ci0gICAgaWYgKHBvbGljeSgpICE9
IENsaXBib2FyZFJlYWRhYmxlICYmIHBvbGljeSgpICE9IENsaXBib2FyZFR5cGVzUmVhZGFibGUp
CisgICAgaWYgKCFjYW5SZWFkVHlwZXMoKSkKICAgICAgICAgcmV0dXJuIExpc3RIYXNoU2V0PFN0
cmluZz4oKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwpAQCAtMzEyLDcgKzMxMiw3IEBA
IExpc3RIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkTWFjOjp0eXBlcygpIGNvbnN0CiAvLyBjbGlw
Ym9hcmQgYXJlIG5vdCByZWZsZWN0ZWQgaW4gYW55IEZpbGVMaXN0IG9iamVjdHMgdGhlIHBhZ2Ug
aGFzIGFjY2Vzc2VkIGFuZCBzdG9yZWQKIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZE1h
Yzo6ZmlsZXMoKSBjb25zdAogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJs
ZSB8fCBtX2NsaXBib2FyZENvbnRlbnRzID09IERyYWdBbmREcm9wRGF0YSkKKyAgICBpZiAoIWNh
blJlYWREYXRhKCkgfHwgbV9jbGlwYm9hcmRDb250ZW50cyA9PSBEcmFnQW5kRHJvcERhdGEpCiAg
ICAgICAgIHJldHVybiBGaWxlTGlzdDo6Y3JlYXRlKCk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBh
YnNvbHV0ZVVSTHMgPSBhYnNvbHV0ZVVSTHNGcm9tUGFzdGVib2FyZEZpbGVuYW1lcyhtX3Bhc3Rl
Ym9hcmROYW1lKTsKQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIENsaXBib2FyZE1hYzo6c2V0RHJh
Z0ltYWdlRWxlbWVudChOb2RlICpub2RlLCBjb25zdCBJbnRQb2ludCAmbG9jKQogCiB2b2lkIENs
aXBib2FyZE1hYzo6c2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiBpbWFnZSwgTm9kZSAqbm9kZSwg
Y29uc3QgSW50UG9pbnQgJmxvYykKIHsKLSAgICBpZiAocG9saWN5KCkgPT0gQ2xpcGJvYXJkSW1h
Z2VXcml0YWJsZSB8fCBwb2xpY3koKSA9PSBDbGlwYm9hcmRXcml0YWJsZSkgeworICAgIGlmIChj
YW5TZXREcmFnSW1hZ2UoKSkgewogICAgICAgICBpZiAobV9kcmFnSW1hZ2UpCiAgICAgICAgICAg
ICBtX2RyYWdJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgICAgICBtX2RyYWdJbWFnZSA9
IGltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJk
UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCmluZGV4
IDcxYzkxY2I0MWI2Y2UxZGE5MmY2MjNmZTUwOTFkNGJiMGNjOGQzNzguLjc0N2ZmOTUxMDA4NWJk
Yzg1ZTY4ZTdlOWM5MWExMDA2MWU3NmVlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9DbGlwYm9hcmRRdC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgQ2xpcGJvYXJkUXQ6OkNsaXBib2Fy
ZFF0KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGNvbnN0IFFNaW1lRGF0YSogcmVhZGFi
bGUKICAgICAsIG1fd3JpdGFibGVEYXRhKDApCiAgICAgLCBtX2ZyYW1lKGZyYW1lKQogewotICAg
IFFfQVNTRVJUKHBvbGljeSA9PSBDbGlwYm9hcmRSZWFkYWJsZSB8fCBwb2xpY3kgPT0gQ2xpcGJv
YXJkVHlwZXNSZWFkYWJsZSk7CisgICAgUV9BU1NFUlQocG9saWN5ID09IENsaXBib2FyZFJlYWRh
YmxlIHx8IHBvbGljeSA9PSBDbGlwYm9hcmRSZWFkYWJsZVR5cGVzKTsKIH0KIAogQ2xpcGJvYXJk
UXQ6OkNsaXBib2FyZFF0KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIENsaXBib2FyZFR5
cGUgY2xpcGJvYXJkVHlwZSwgRnJhbWUqIGZyYW1lKQpAQCAtOTEsMTAgKzkxLDEwIEBAIENsaXBi
b2FyZFF0OjpDbGlwYm9hcmRRdChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBDbGlwYm9h
cmRUeXBlIGNsaXBib2FyZFR5CiAgICAgLCBtX3dyaXRhYmxlRGF0YSgwKQogICAgICwgbV9mcmFt
ZShmcmFtZSkKIHsKLSAgICBRX0FTU0VSVChwb2xpY3kgPT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwg
cG9saWN5ID09IENsaXBib2FyZFdyaXRhYmxlIHx8IHBvbGljeSA9PSBDbGlwYm9hcmROdW1iKTsK
KyAgICBRX0FTU0VSVChwb2xpY3kgPT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwgcG9saWN5ID09IENs
aXBib2FyZFJlYWRhYmxlQW5kV3JpdGFibGUgfHwgcG9saWN5ID09IENsaXBib2FyZE51bWIpOwog
CiAjaWZuZGVmIFFUX05PX0NMSVBCT0FSRAotICAgIGlmIChwb2xpY3kgIT0gQ2xpcGJvYXJkV3Jp
dGFibGUpIHsKKyAgICBpZiAocG9saWN5ICE9IENsaXBib2FyZFJlYWRhYmxlQW5kV3JpdGFibGUp
IHsKICAgICAgICAgUV9BU1NFUlQoaXNGb3JDb3B5QW5kUGFzdGUoKSk7CiAgICAgICAgIG1fcmVh
ZGFibGVEYXRhID0gUUd1aUFwcGxpY2F0aW9uOjpjbGlwYm9hcmQoKS0+bWltZURhdGEoKTsKICAg
ICB9CkBAIC0xMTIsNyArMTEyLDcgQEAgQ2xpcGJvYXJkUXQ6On5DbGlwYm9hcmRRdCgpCiAKIHZv
aWQgQ2xpcGJvYXJkUXQ6OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgaWYg
KHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghY2FuV3JpdGVEYXRhKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dyaXRhYmxlRGF0YSkgewpAQCAtMTMxLDcg
KzEzMSw3IEBAIHZvaWQgQ2xpcGJvYXJkUXQ6OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUp
CiAKIHZvaWQgQ2xpcGJvYXJkUXQ6OmNsZWFyQWxsRGF0YSgpCiB7Ci0gICAgaWYgKHBvbGljeSgp
ICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghY2FuV3JpdGVEYXRhKCkpCiAgICAgICAg
IHJldHVybjsKIAogI2lmbmRlZiBRVF9OT19DTElQQk9BUkQKQEAgLTE0Niw3ICsxNDYsNyBAQCB2
b2lkIENsaXBib2FyZFF0OjpjbGVhckFsbERhdGEoKQogU3RyaW5nIENsaXBib2FyZFF0OjpnZXRE
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKIAotICAgIGlmIChwb2xpY3koKSAhPSBD
bGlwYm9hcmRSZWFkYWJsZSkKKyAgICBpZiAoIWNhblJlYWREYXRhKCkpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAogICAgIGlmIChpc0h0bWxNaW1lVHlwZSh0eXBlKSAmJiBtX3JlYWRhYmxl
RGF0YS0+aGFzSHRtbCgpKQpAQCAtMTYzLDcgKzE2Myw3IEBAIFN0cmluZyBDbGlwYm9hcmRRdDo6
Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAKIGJvb2wgQ2xpcGJvYXJkUXQ6OnNl
dERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7Ci0gICAgaWYg
KHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghY2FuV3JpdGVEYXRhKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV93cml0YWJsZURhdGEpCkBAIC0x
ODQsNyArMTg0LDcgQEAgYm9vbCBDbGlwYm9hcmRRdDo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKIC8vIGV4dGVuc2lvbnMgYmV5b25kIElFJ3MgQVBJCiBM
aXN0SGFzaFNldDxTdHJpbmc+IENsaXBib2FyZFF0Ojp0eXBlcygpIGNvbnN0CiB7Ci0gICAgaWYg
KHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlICYmIHBvbGljeSgpICE9IENsaXBib2FyZFR5
cGVzUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFkVHlwZXMoKSkKICAgICAgICAgcmV0dXJuIExp
c3RIYXNoU2V0PFN0cmluZz4oKTsKIAogICAgIEFTU0VSVChtX3JlYWRhYmxlRGF0YSk7CkBAIC0x
OTcsNyArMTk3LDcgQEAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRRdDo6dHlwZXMoKSBj
b25zdAogCiBQYXNzUmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9hcmRRdDo6ZmlsZXMoKSBjb25zdAog
ewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSB8fCAhbV9yZWFkYWJsZURh
dGEtPmhhc1VybHMoKSkKKyAgICBpZiAoIWNhblJlYWREYXRhKCkgfHwgIW1fcmVhZGFibGVEYXRh
LT5oYXNVcmxzKCkpCiAgICAgICAgIHJldHVybiBGaWxlTGlzdDo6Y3JlYXRlKCk7CiAKICAgICBS
ZWZQdHI8RmlsZUxpc3Q+IGZpbGVMaXN0ID0gRmlsZUxpc3Q6OmNyZWF0ZSgpOwpAQCAtMjI1LDcg
KzIyNSw3IEBAIHZvaWQgQ2xpcGJvYXJkUXQ6OnNldERyYWdJbWFnZUVsZW1lbnQoTm9kZSogbm9k
ZSwgY29uc3QgSW50UG9pbnQmIHBvaW50KQogCiB2b2lkIENsaXBib2FyZFF0OjpzZXREcmFnSW1h
Z2UoQ2FjaGVkSW1hZ2UqIGltYWdlLCBOb2RlICpub2RlLCBjb25zdCBJbnRQb2ludCAmbG9jKQog
ewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRJbWFnZVdyaXRhYmxlICYmIHBvbGljeSgp
ICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmIChjYW5TZXREcmFnSW1hZ2UoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZHJhZ0ltYWdlKQpAQCAtMzU5LDcgKzM1OSw3IEBAIFBh
c3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbUxpc3Q+IENsaXBib2FyZFF0OjppdGVtcygpCiAgICAg
aWYgKCFtX3JlYWRhYmxlRGF0YSkKICAgICAgICAgcmV0dXJuIGl0ZW1zOwogCi0gICAgaWYgKGlz
Rm9yQ29weUFuZFBhc3RlKCkgJiYgcG9saWN5KCkgPT0gQ2xpcGJvYXJkUmVhZGFibGUpIHsKKyAg
ICBpZiAoaXNGb3JDb3B5QW5kUGFzdGUoKSAmJiBjYW5SZWFkRGF0YSgpKSB7CiAgICAgICAgIGNv
bnN0IFFTdHJpbmdMaXN0IHR5cGVzID0gbV9yZWFkYWJsZURhdGEtPmZvcm1hdHMoKTsKICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0eXBlcy5jb3VudCgpOyArK2kpCiAgICAgICAgICAgICBp
dGVtcy0+YWRkUGFzdGVib2FyZEl0ZW0odHlwZXMuYXQoaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbUxpc3RRdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtTGlzdFF0LmNwcAppbmRleCAxODA2
YTdmNmY1Y2M0MGQ1YTQ1OTUyMjlkNzZlYmVhNmZlNzNlYzRmLi5jNDM1NWE4MTE2Yjk2NTVjZWUx
OGZkODY1NDhmYmU1MGY5YTk1NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9EYXRhVHJhbnNmZXJJdGVtTGlzdFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtTGlzdFF0LmNwcApAQCAtNDcsNyArNDcsNyBAQCBEYXRh
VHJhbnNmZXJJdGVtTGlzdFF0OjpEYXRhVHJhbnNmZXJJdGVtTGlzdFF0KFBhc3NSZWZQdHI8Q2xp
cGJvYXJkPiBvd25lciwgU2NyaQogCiBzaXplX3QgRGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6bGVu
Z3RoKCkgY29uc3QKIHsKLSAgICBpZiAobV9vd25lci0+cG9saWN5KCkgPT0gQ2xpcGJvYXJkTnVt
YikKKyAgICBpZiAoIW1fb3duZXItPmNhblJlYWRUeXBlcygpKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIHJldHVybiBtX2l0ZW1zLnNpemUoKTsKQEAgLTU1LDcgKzU1LDcgQEAgc2l6ZV90IERh
dGFUcmFuc2Zlckl0ZW1MaXN0UXQ6Omxlbmd0aCgpIGNvbnN0CiAKIFBhc3NSZWZQdHI8RGF0YVRy
YW5zZmVySXRlbT4gRGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6aXRlbSh1bnNpZ25lZCBsb25nIGlu
ZGV4KQogewotICAgIGlmIChtX293bmVyLT5wb2xpY3koKSA9PSBDbGlwYm9hcmROdW1iIHx8IGlu
ZGV4ID49IGxlbmd0aCgpKQorICAgIGlmICghbV9vd25lci0+Y2FuUmVhZFR5cGVzKCkgfHwgaW5k
ZXggPj0gbGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIG1faXRlbXNb
aW5kZXhdOwpAQCAtNjMsNyArNjMsNyBAQCBQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW0+IERh
dGFUcmFuc2Zlckl0ZW1MaXN0UXQ6Oml0ZW0odW5zaWduZWQgbG9uZyBpbmRleCkKIAogdm9pZCBE
YXRhVHJhbnNmZXJJdGVtTGlzdFF0OjpkZWxldGVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChtX293bmVyLT5wb2xpY3koKSAhPSBDbGlwYm9h
cmRXcml0YWJsZSkgeworICAgIGlmICghbV9vd25lci0+Y2FuV3JpdGVEYXRhKCkpIHsKICAgICAg
ICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc2
LDcgKzc2LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjpkZWxldGVJdGVtKHVuc2ln
bmVkIGxvbmcgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiB2b2lkIERhdGFUcmFuc2Zlckl0
ZW1MaXN0UXQ6OmNsZWFyKCkKIHsKLSAgICBpZiAobV9vd25lci0+cG9saWN5KCkgIT0gQ2xpcGJv
YXJkV3JpdGFibGUpCisgICAgaWYgKCFtX293bmVyLT5jYW5Xcml0ZURhdGEoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9pdGVtcy5jbGVhcigpOwpAQCAtODUsNyArODUsNyBAQCB2b2lkIERh
dGFUcmFuc2Zlckl0ZW1MaXN0UXQ6OmNsZWFyKCkKIAogdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlz
dFF0OjphZGQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIGlmIChtX293bmVyLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0
YWJsZSkKKyAgICBpZiAoIW1fb3duZXItPmNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBPbmx5IG9uZSAnc3RyaW5nJyBpdGVtIHdpdGggYSBnaXZlbiB0eXBlIGlzIGFs
bG93ZWQgaW4gdGhlIGNvbGxlY3Rpb24uCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBEYXRhVHJh
bnNmZXJJdGVtTGlzdFF0OjphZGQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHR5
cGUsIEV4Y2VwdGkKIAogdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjphZGQoUGFzc1JlZlB0
cjxGaWxlPiBmaWxlKQogewotICAgIGlmIChtX293bmVyLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRX
cml0YWJsZSB8fCAhZmlsZSkKKyAgICBpZiAoIW1fb3duZXItPmNhbldyaXRlRGF0YSgpIHx8ICFm
aWxlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2l0ZW1zLmFwcGVuZChEYXRhVHJhbnNmZXJJ
dGVtOjpjcmVhdGUobV9vd25lciwgbV9jb250ZXh0LCBmaWxlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtUXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbVF0LmNwcAppbmRleCA5ZmY2MjFlZjQ5
ODM0OTZhMDNiOGZhNzY4ZjkzODc2Yzk4YjFlYTFkLi5kN2U5Yjc3OWEyMTUyOGQ5N2U1MTRjNWIw
MDRjNmU4MTU5MTIxMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9E
YXRhVHJhbnNmZXJJdGVtUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Rh
dGFUcmFuc2Zlckl0ZW1RdC5jcHAKQEAgLTk1LDggKzk1LDcgQEAgRGF0YVRyYW5zZmVySXRlbVF0
OjpEYXRhVHJhbnNmZXJJdGVtUXQoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLAogCiB2b2lk
IERhdGFUcmFuc2Zlckl0ZW1RdDo6Z2V0QXNTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdDYWxsYmFj
az4gY2FsbGJhY2spIGNvbnN0CiB7Ci0gICAgaWYgKChvd25lcigpLT5wb2xpY3koKSAhPSBDbGlw
Ym9hcmRSZWFkYWJsZSAmJiBvd25lcigpLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkK
LSAgICAgICAgfHwga2luZCgpICE9IGtpbmRTdHJpbmcpCisgICAgaWYgKCFvd25lcigpLT5wb2xp
Y3koKS0+Y2FuUmVhZERhdGEoKSB8fCBraW5kKCkgIT0ga2luZFN0cmluZykKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG1fZGF0YVNvdXJjZSA9PSBJbnRlcm5hbFNvdXJjZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAppbmRleCBjMmY5OTY0OTY5
OWI2NDllZWU2YWVjYmVmZGNkMjNlZjkxMDFjMmUzLi5iOTJmYzg3ZjU5NDg0ZDM3NTcwYmU2Yzlm
OTliMDk3ZDRlYzZmYjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJv
YXJkV2luLmNwcApAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgQ2xpcGJvYXJkV2luOjpjbGVhckRh
dGEoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGJlIGFibGUg
dG8gd3JpdGUgdG8gdGhlIHN5c3RlbSBjbGlwYm9hcmQgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NDE+
CiAgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3AoKSk7Ci0gICAgaWYgKHBvbGljeSgpICE9IENs
aXBib2FyZFdyaXRhYmxlIHx8ICFtX3dyaXRhYmxlRGF0YU9iamVjdCkKKyAgICBpZiAoIWNhbldy
aXRlRGF0YSgpIHx8ICFtX3dyaXRhYmxlRGF0YU9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQ2xpcGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBl
KHR5cGUpOwpAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgQ2xpcGJvYXJkV2luOjpjbGVhckFsbERh
dGEoKQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlIHN5
c3RlbSBjbGlwYm9hcmQgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NDE+CiAgICAgQVNTRVJUKGlzRm9y
RHJhZ0FuZERyb3AoKSk7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQor
ICAgIGlmICghY2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBtX3dy
aXRhYmxlRGF0YU9iamVjdCA9IDA7CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBDbGlwYm9hcmRX
aW46OmNsZWFyQWxsRGF0YSgpCiAKIFN0cmluZyBDbGlwYm9hcmRXaW46OmdldERhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zdAogeyAgICAgCi0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2Fy
ZFJlYWRhYmxlIHx8ICghbV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0RhdGFNYXAuaXNFbXB0eSgpKSkK
KyAgICBpZiAoIWNhblJlYWREYXRhKCkgfHwgKCFtX2RhdGFPYmplY3QgJiYgbV9kcmFnRGF0YU1h
cC5pc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gIiI7CiAKICAgICBDbGlwYm9hcmREYXRhVHlw
ZSBkYXRhVHlwZSA9IGNsaXBib2FyZFR5cGVGcm9tTUlNRVR5cGUodHlwZSk7CkBAIC00NTksNyAr
NDU5LDcgQEAgYm9vbCBDbGlwYm9hcmRXaW46OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gYmUgYWJsZSB0byB3
cml0ZSB0byB0aGUgc3lzdGVtIGNsaXBib2FyZCA8cmRhcjovL3Byb2JsZW0vNTAxNTk0MT4KICAg
ICBBU1NFUlQoaXNGb3JEcmFnQW5kRHJvcCgpKTsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJv
YXJkV3JpdGFibGUgfHwgIW1fd3JpdGFibGVEYXRhT2JqZWN0KQorICAgIGlmICghY2FuV3JpdGVE
YXRhKCkgfHwgIW1fd3JpdGFibGVEYXRhT2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBDbGlwYm9hcmREYXRhVHlwZSB3aW5UeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlw
ZSh0eXBlKTsKQEAgLTUwMiw3ICs1MDIsNyBAQCBzdGF0aWMgdm9pZCBhZGRNaW1lVHlwZXNGb3JG
b3JtYXQoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0cywgY29uc3QgRk9STUFURVRDJgogTGlz
dEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRXaW46OnR5cGVzKCkgY29uc3QKIHsgCiAgICAgTGlz
dEhhc2hTZXQ8U3RyaW5nPiByZXN1bHRzOwotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRS
ZWFkYWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlKQorICAgIGlmICgh
Y2FuUmVhZFR5cGVzKCkpCiAgICAgICAgIHJldHVybiByZXN1bHRzOwogCiAgICAgaWYgKCFtX2Rh
dGFPYmplY3QgJiYgbV9kcmFnRGF0YU1hcC5pc0VtcHR5KCkpCkBAIC01NDAsNyArNTQwLDcgQEAg
UGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkV2luOjpmaWxlcygpIGNvbnN0CiAgICAgcmV0
dXJuIDA7CiAjZWxzZQogICAgIFJlZlB0cjxGaWxlTGlzdD4gZmlsZXMgPSBGaWxlTGlzdDo6Y3Jl
YXRlKCk7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlICYmIHBvbGljeSgp
ICE9IENsaXBib2FyZFR5cGVzUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFkRGF0YSgpKQogICAg
ICAgICByZXR1cm4gZmlsZXMucmVsZWFzZSgpOwogCiAgICAgaWYgKCFtX2RhdGFPYmplY3QgJiYg
bV9kcmFnRGF0YU1hcC5pc0VtcHR5KCkpCkBAIC01NzgsNyArNTc4LDcgQEAgUGFzc1JlZlB0cjxG
aWxlTGlzdD4gQ2xpcGJvYXJkV2luOjpmaWxlcygpIGNvbnN0CiAKIHZvaWQgQ2xpcGJvYXJkV2lu
OjpzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2UqIGltYWdlLCBOb2RlICpub2RlLCBjb25zdCBJbnRQ
b2ludCAmbG9jKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRJbWFnZVdyaXRhYmxl
ICYmIHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKSAKKyAgICBpZiAoY2FuU2V0RHJhZ0lt
YWdlKCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgaWYgKG1fZHJhZ0ltYWdlKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDNiNTYzZDRhNDk3ODVjYTNkNTc4MWYwMjQ2ZWNhYTYyOGJjZjQ3ZmIuLmE4NDcwZGUz
ZGEzMWNlMjhjNmFjYmE1YmY0Y2IwYTAxMTg4MDQxNTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMy0wMy0yMSAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGdvb2dsZS5jb20+CisKKyAgICAgICAg
RHJhZyBkYXRhIHN0b3JlIHNob3VsZCBiZSByZWFkYWJsZSBpbiBkcmFnc3RhcnQgZXZlbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjk1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL3Bh
c3RlYm9hcmQvY2FuLXJlYWQtaW4tY29weS1hbmQtY3V0LWV2ZW50cy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1jb3B5LWFuZC1j
dXQtZXZlbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9jYW4t
cmVhZC1pbi1kcmFnc3RhcnQtZXZlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tZHJhZ3N0YXJ0LWV2ZW50Lmh0bWw6IEFkZGVk
LgorCiAyMDEzLTAzLTIxICBIYXJhbGQgQWx2ZXN0cmFuZCAgPGh0YUBnb29nbGUuY29tPgogCiAg
ICAgICAgIEV4cG9zZSB0aGUgVHlwZSBmaWVsZCBvZiBhbiBSVENTdGF0c1JlcG9ydApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWNvcHktYW5k
LWN1dC1ldmVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L2Nhbi1yZWFkLWluLWNvcHktYW5kLWN1dC1ldmVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg4YzRhZWM4NGEzZmZhMTc0M2M1M2U4M2I0ZTc5NDJlZjc0ZDM4MTQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tY29weS1hbmQt
Y3V0LWV2ZW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitTaW1wbGUgdGVzdCB0aGF0
IGRhdGEgc2V0IGR1cmluZyBhIGNvcHkvY3V0IGV2ZW50IGNhbiBiZSByZWFkIGJhY2suIFRvIHJ1
biB0aGUgdGVzdCBtYW51YWxseSwgc2ltcGx5IHNlbGVjdCBhbnkgdGV4dCBhbmQgaW5pdGlhdGUg
YSBjb3B5L2N1dCBvcGVyYXRpb24uCisKK2NvcHk6IFNVQ0NFU1MKK2N1dDogU1VDQ0VTUworCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tY29w
eS1hbmQtY3V0LWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nh
bi1yZWFkLWluLWNvcHktYW5kLWN1dC1ldmVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Njk0ODMyNDkw
MzU1OTRhMDA5MTEwODk1ZTRmYzQwOGFlMWVmYThlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWNvcHktYW5kLWN1dC1ldmVudHMu
aHRtbApAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgorZnVuY3Rpb24gbG9nKHRleHQpIHsKKyAgICB2YXIgbG9nID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2xvZycpOworICAgIGxvZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSh0ZXh0KSk7CisgICAgbG9nLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2JyJykpOworfQorCitmdW5jdGlvbiBjb3B5VGVzdChlKSB7CisgICAgZS5jbGlwYm9hcmRE
YXRhLnNldERhdGEoJ3RleHQvcGxhaW4nLCAnY29weSB0ZXN0Jyk7CisgICAgaWYgKGV2ZW50LmNs
aXBib2FyZERhdGEudHlwZXMuaW5kZXhPZigndGV4dC9wbGFpbicpIDwgMCB8fAorICAgICAgICBl
dmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKSAhPSAnY29weSB0ZXN0JykK
KyAgICAgICAgbG9nKCdjb3B5OiBGQUlMRUQnKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygnY29w
eTogU1VDQ0VTUycpOworfQorCitmdW5jdGlvbiBjdXRUZXN0KGUpIHsKKyAgICBlLmNsaXBib2Fy
ZERhdGEuc2V0RGF0YSgndGV4dC9wbGFpbicsICdjdXQgdGVzdCcpOworICAgIGlmIChldmVudC5j
bGlwYm9hcmREYXRhLnR5cGVzLmluZGV4T2YoJ3RleHQvcGxhaW4nKSA8IDAgfHwKKyAgICAgICAg
ZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJykgIT0gJ2N1dCB0ZXN0JykK
KyAgICAgICAgbG9nKCdjdXQ6IEZBSUxFRCcpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCdjdXQ6
IFNVQ0NFU1MnKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICByZXR1cm47CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTsKKyAgICBkb2N1bWVudC5leGVjQ29t
bWFuZCgnY3V0Jyk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVz
dCgpIiBvbmNvcHk9ImNvcHlUZXN0KGV2ZW50KSIgb25jdXQ9ImN1dFRlc3QoZXZlbnQpIj4KKzxw
PlNpbXBsZSB0ZXN0IHRoYXQgZGF0YSBzZXQgZHVyaW5nIGEgY29weS9jdXQgZXZlbnQgY2FuIGJl
IHJlYWQgYmFjay4gVG8gcnVuCit0aGUgdGVzdCBtYW51YWxseSwgc2ltcGx5IHNlbGVjdCBhbnkg
dGV4dCBhbmQgaW5pdGlhdGUgYSBjb3B5L2N1dCBvcGVyYXRpb24uCis8ZGl2IGlkPSJsb2ciPjwv
ZGl2PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L2Nhbi1yZWFkLWluLWRyYWdzdGFydC1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tZHJhZ3N0YXJ0LWV2ZW50LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jMjQwM2UwYmFmZGIwZjhkNzI1ZjdkNTMxMmY4YjA3ODA1MGI0MDQ3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFk
LWluLWRyYWdzdGFydC1ldmVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitTaW1wbGUg
dGVzdCB0aGF0IGRhdGEgc2V0IGR1cmluZyBhIGRyYWdzdGFydCBldmVudCBjYW4gYmUgcmVhZCBi
YWNrLiBUbyBydW4gdGhlIHRlc3QgbWFudWFsbHksIHNpbXBseSBzdGFydCBkcmFnZ2luZyB0aGUg
J0RyYWcgTWUnIGVsZW1lbnQgYmVsb3cuCisKK0RyYWcgTWUKK2RyYWdzdGFydDogU1VDQ0VTUwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4t
ZHJhZ3N0YXJ0LWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2Fu
LXJlYWQtaW4tZHJhZ3N0YXJ0LWV2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYxZTVlOGZmNzg2Nzdj
MDU0NjU3MDYyYWM2OGJkMGIxMTQxOTQ5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1kcmFnc3RhcnQtZXZlbnQuaHRtbApAQCAt
MCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gbG9nKHRleHQpIHsKKyAgICB2YXIgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2xvZycpOworICAgIGxvZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0
ZXh0KSk7CisgICAgbG9nLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykp
OworfQorCitmdW5jdGlvbiBkcmFnU3RhcnRUZXN0KGUpIHsKKyAgICBlLmRhdGFUcmFuc2Zlci5z
ZXREYXRhKCd0ZXh0L3BsYWluJywgJ2RyYWdzdGFydCB0ZXN0Jyk7CisgICAgaWYgKGV2ZW50LmRh
dGFUcmFuc2Zlci50eXBlcy5pbmRleE9mKCd0ZXh0L3BsYWluJykgPCAwIHx8CisgICAgICAgIGV2
ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0L3BsYWluJykgIT0gJ2RyYWdzdGFydCB0ZXN0
JykKKyAgICAgICAgbG9nKCdkcmFnc3RhcnQ6IEZBSUxFRCcpOworICAgIGVsc2UKKyAgICAgICAg
bG9nKCdkcmFnc3RhcnQ6IFNVQ0NFU1MnKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICByZXR1cm47CisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisKKyAgICB2YXIgZHJhZ2dlZEVsZW1lbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZHJhZ2dlZEVsZW1lbnQnKTsKKyAgICB2YXIgeCA9IGRyYWdnZWRFbGVtZW50
Lm9mZnNldExlZnQgKyBkcmFnZ2VkRWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgdmFyIHkg
PSBkcmFnZ2VkRWxlbWVudC5vZmZzZXRUb3AgKyBkcmFnZ2VkRWxlbWVudC5vZmZzZXRIZWlnaHQg
LyAyOworCisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAwKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyh4ICsgMTAwLCB5ICsgMTAwKTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZVVwKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVz
dCgpIj4KKzxwPlNpbXBsZSB0ZXN0IHRoYXQgZGF0YSBzZXQgZHVyaW5nIGEgZHJhZ3N0YXJ0IGV2
ZW50IGNhbiBiZSByZWFkIGJhY2suIFRvIHJ1bgordGhlIHRlc3QgbWFudWFsbHksIHNpbXBseSBz
dGFydCBkcmFnZ2luZyB0aGUgJ0RyYWcgTWUnIGVsZW1lbnQgYmVsb3cuCis8ZGl2IGlkPSJkcmFn
Z2VkRWxlbWVudCIgZHJhZ2dhYmxlPSJ0cnVlIiBvbmRyYWdzdGFydD0iZHJhZ1N0YXJ0VGVzdChl
dmVudCkiPkRyYWcgTWU8L2Rpdj4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194590</attachid>
            <date>2013-03-22 10:45:29 -0700</date>
            <delta_ts>2013-03-22 11:46:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-23695-20130322104117.patch</filename>
            <type>text/plain</type>
            <size>50545</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ1NzNlMjZmNDNhNDYw
N2I4MDUyNzRhMjA5MWY5MmFhY2I4Mzc1Yy4uNjY4ODFjYjM3Mjc3ZjE4NWYzZDhhYjFkYzY1OWUz
NWUyM2UxNDY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxMy0wMy0yMSAgRGFu
aWVsIENoZW5nICA8ZGNoZW5nQGdvb2dsZS5jb20+CisKKyAgICAgICAgRGF0YSBzdG9yZSBzaG91
bGQgYmUgcmVhZGFibGUgaW4gZHJhZ3N0YXJ0L2NvcHkvY3V0IGV2ZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2OTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgSFRNTCBzcGVjaWZpY2F0aW9u
IGRlZmluZXMgc2V2ZXJhbCBtb2RlcyBmb3IgdGhlIGRhdGEgc3RvcmUgd2hpY2ggZGlkbid0IG1h
cCB3ZWxsIHRvIHRoZQorICAgICAgICBwcmlvciBkZWZpbml0aW9ucyBvZiBDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kuIENhbGxlcnMgd291bGQgb2Z0ZW4gY2hlY2sgZm9yIHBlcm1pc3Npb24gYnkKKyAg
ICAgICAgY29tcGFyaW5nIGFnYWluc3QgdGhlIGVudW0gdmFsdWVzIGRpcmVjdGx5LCB3aGljaCBt
ZWFudCB0aGF0IHRoZXJlIHdlcmUgc29tZSBldmVudHMgd2hlcmUKKyAgICAgICAgZGF0YSBjb3Vs
ZCBiZSB3cml0dGVuIGJ1dCBub3QgYmUgcmVhZCBiYWNrLgorCisgICAgICAgIEluIG9yZGVyIHRv
IGFkZHJlc3MgdGhpcywgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IGlzIG5vdyBpbnRlbmRlZCBmb3Ig
ZXh0ZXJuYWwgY2FsbGVycyB0bworICAgICAgICBzZXQgdGhlIGFjY2VzcyBwb2xpY3kgb2YgdGhl
IENsaXBib2FyZC4gQ2xpcGJvYXJkIG1hcHMgdGhlIGVudW0gdmFsdWVzIHRvIHRoZSBjb3JyZXNw
b25kaW5nCisgICAgICAgIHBlcm1pc3Npb24gYml0cyBpbnRlcm5hbGx5IGFuZCBwcm92aWRlcyBz
ZXZlcmFsIGhlbHBlciBmdW5jdGlvbnMgZm9yIENsaXBib2FyZAorICAgICAgICBpbXBsZW1lbnRh
dGlvbnMgdG8gY2hlY2sgcGVybWlzc2lvbnMuCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvcGFz
dGVib2FyZC9jYW4tcmVhZC1pbi1jb3B5LWFuZC1jdXQtZXZlbnRzLmh0bWwKKyAgICAgICAgICAg
ICAgIGVkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1kcmFnc3RhcnQtZXZlbnQuaHRtbAor
CisgICAgICAgICogZG9tL0NsaXBib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmQ6OkNsaXBib2FyZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZDo6c2V0QWNjZXNzUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6
aGFzRmlsZU9mVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6Omhhc1N0cmluZ09m
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OnNldERyb3BFZmZlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpzZXRFZmZlY3RBbGxvd2VkKToKKyAgICAgICAgKiBk
b20vQ2xpcGJvYXJkLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OmNhblJlYWRUeXBl
cyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OmNhblJlYWREYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZDo6Y2FuV3JpdGVEYXRhKToKKyAgICAgICAgKENsaXBib2FyZCk6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OmNhblNldERyYWdJbWFnZSk6CisgICAgICAg
ICogZG9tL0NsaXBib2FyZEFjY2Vzc1BvbGljeS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dHJ5REhUTUxDb3B5KToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6dHJ5REhUTUxDdXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpkaXNwYXRjaENQUEV2ZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2Nocm9taXVtL0VkaXRvckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2Fy
ZCk6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnRXhpdGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcpOgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9ibGFja2JlcnJ5L0V2ZW50SGFuZGxl
ckJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVhdGVE
cmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdn
aW5nQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwYWdlL2VmbC9FdmVudEhhbmRsZXJFZmwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCk6
CisgICAgICAgICogcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQpOgorICAgICAgICAqIHBh
Z2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQpOgorICAgICAgICAqIHBhZ2UvcXQvRXZlbnRIYW5k
bGVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2lu
Z0NsaXBib2FyZCk6CisgICAgICAgICogcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQpOgor
ICAgICAgICAqIHBhZ2Uvd3gvRXZlbnRIYW5kbGVyV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZv
cm0vYmxhY2tiZXJyeS9DbGlwYm9hcmRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNsaXBib2FyZEJsYWNrQmVycnk6OmNsZWFyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRCbGFja0JlcnJ5OjpjbGVhckFsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkQmxhY2tCZXJyeTo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRCbGFj
a0JlcnJ5OjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEJsYWNrQmVycnk6
OnR5cGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtUG9saWN5V3JhcHBlcjo6a2lu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtUG9saWN5V3JhcHBlcjo6dHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtUG9saWN5V3JhcHBlcjo6Z2V0
QXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbVBvbGljeVdyYXBw
ZXI6OmdldEFzRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6Y2xl
YXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVtOjpjbGVhckFsbERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OmdldERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OnNldERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OnR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZENocm9taXVtOjpmaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1
bTo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6Y2xlYXJEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZEd0azo6Y2xlYXJBbGxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkNsaXBib2FyZEd0azo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6
OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjp0eXBlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEd0azo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ2xpcGJv
YXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkTWFjOjpjbGVhckRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkTWFjOjpjbGVhckFsbERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkTWFjOjpnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZE1hYzo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6OnR5cGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZE1hYzo6ZmlsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkTWFjOjpzZXREcmFnSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3F0
L0NsaXBib2FyZFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpDbGlwYm9h
cmRRdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6Y2xlYXJEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpjbGVhckFsbERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkUXQ6OmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6
OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OnR5cGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpmaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRRdDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0Ojpp
dGVtcyk6CisgICAgICAgICogcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbUxpc3RRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjpsZW5ndGgpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6aXRlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjpkZWxldGVJdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6OmFkZCk6CisgICAgICAgICogcGxhdGZvcm0vcXQvRGF0
YVRyYW5zZmVySXRlbVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1R
dDo6Z2V0QXNTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpjbGVhckRhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpjbGVhckFsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkV2luOjpnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6
c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OnR5cGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6ZmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkV2luOjpzZXREcmFnSW1hZ2UpOgorCiAyMDEzLTAzLTIxICBIYXJhbGQgQWx2ZXN0cmFu
ZCAgPGh0YUBnb29nbGUuY29tPgogCiAgICAgICAgIEV4cG9zZSB0aGUgVHlwZSBmaWVsZCBvZiBh
biBSVENTdGF0c1JlcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2Fy
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAppbmRleCAwMjc5OTI1MTUy
ZWUyYjExZTFkMTkxMDJiNTkwMzI5YmUzMmQzYWQ2Li40NGI3OWI1NTAxN2I2Njc2YzYzYjkyNGFj
NWNkMDJmOWQ0ZTM3ODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcApAQCAtMzQsMjEgKzM0
LDM3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2xpcGJvYXJkOjpDbGlwYm9hcmQoQ2xp
cGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKSAK
LSAgICA6IG1fcG9saWN5KHBvbGljeSkKLSAgICAsIG1fZHJvcEVmZmVjdCgidW5pbml0aWFsaXpl
ZCIpCitDbGlwYm9hcmQ6OkNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBD
bGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUpCisgICAgOiBtX2Ryb3BFZmZlY3QoInVuaW5pdGlh
bGl6ZWQiKQogICAgICwgbV9lZmZlY3RBbGxvd2VkKCJ1bmluaXRpYWxpemVkIikKICAgICAsIG1f
ZHJhZ1N0YXJ0ZWQoZmFsc2UpCiAgICAgLCBtX2NsaXBib2FyZFR5cGUoY2xpcGJvYXJkVHlwZSkK
ICAgICAsIG1fZHJhZ0ltYWdlKDApCiB7CisgICAgc2V0QWNjZXNzUG9saWN5KHBvbGljeSk7CiB9
Ci0gICAgCisKIHZvaWQgQ2xpcGJvYXJkOjpzZXRBY2Nlc3NQb2xpY3koQ2xpcGJvYXJkQWNjZXNz
UG9saWN5IHBvbGljeSkKIHsKICAgICAvLyBvbmNlIHlvdSBnbyBudW1iLCBjYW4gbmV2ZXIgZ28g
YmFjawotICAgIEFTU0VSVChtX3BvbGljeSAhPSBDbGlwYm9hcmROdW1iIHx8IHBvbGljeSA9PSBD
bGlwYm9hcmROdW1iKTsKLSAgICBtX3BvbGljeSA9IHBvbGljeTsKKyAgICBBU1NFUlQobV9wb2xp
Y3kgIT0gTm9uZSB8fCBwb2xpY3kgPT0gQ2xpcGJvYXJkTnVtYik7CisgICAgc3dpdGNoIChwb2xp
Y3kpIHsKKyAgICBjYXNlIENsaXBib2FyZFJlYWRhYmxlOgorICAgICAgICBtX3BvbGljeSA9IHN0
YXRpY19jYXN0PEFjY2Vzc1BvbGljeT4oUmVhZGFibGVUeXBlcyB8IFJlYWRhYmxlRGF0YSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2xpcGJvYXJkUmVhZGFibGVUeXBlczoKKyAgICAgICAg
bV9wb2xpY3kgPSBSZWFkYWJsZVR5cGVzOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENsaXBi
b2FyZFNldHRhYmxlRHJhZ0ltYWdlOgorICAgICAgICBtX3BvbGljeSA9IFNldHRhYmxlRHJhZ0lt
YWdlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENsaXBib2FyZFJlYWRhYmxlQW5kV3JpdGFi
bGU6CisgICAgICAgIG1fcG9saWN5ID0gc3RhdGljX2Nhc3Q8QWNjZXNzUG9saWN5PihSZWFkYWJs
ZVR5cGVzIHwgUmVhZGFibGVEYXRhIHwgV3JpdGFibGUgfCBTZXR0YWJsZURyYWdJbWFnZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2xpcGJvYXJkTnVtYjoKKyAgICAgICAgbV9wb2xpY3kg
PSBOb25lOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIC8vIFRoZXNlICJjb252ZXJzaW9u
IiBtZXRob2RzIGFyZSBjYWxsZWQgYnkgYm90aCBXZWJDb3JlIGFuZCBXZWJLaXQsIGFuZCBuZXZl
ciBtYWtlIHNlbnNlIHRvIEpTLCBzbyB3ZSBkb24ndApAQCAtMTI4LDcgKzE0NCw3IEBAIHZvaWQg
Q2xpcGJvYXJkOjpzZXREZXN0aW5hdGlvbk9wZXJhdGlvbihEcmFnT3BlcmF0aW9uIG9wKQogCiBi
b29sIENsaXBib2FyZDo6aGFzRmlsZU9mVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7
Ci0gICAgaWYgKG1fcG9saWN5ICE9IENsaXBib2FyZFJlYWRhYmxlICYmIG1fcG9saWN5ICE9IENs
aXBib2FyZFR5cGVzUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFkVHlwZXMoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAogICAgIFJlZlB0cjxGaWxlTGlzdD4gZmlsZUxpc3QgPSBmaWxl
cygpOwpAQCAtMTQ0LDcgKzE2MCw3IEBAIGJvb2wgQ2xpcGJvYXJkOjpoYXNGaWxlT2ZUeXBlKGNv
bnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIAogYm9vbCBDbGlwYm9hcmQ6Omhhc1N0cmluZ09mVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcG9saWN5ICE9IENsaXBi
b2FyZFJlYWRhYmxlICYmIG1fcG9saWN5ICE9IENsaXBib2FyZFR5cGVzUmVhZGFibGUpCisgICAg
aWYgKCFjYW5SZWFkVHlwZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIHJl
dHVybiB0eXBlcygpLmNvbnRhaW5zKHR5cGUpOyAKQEAgLTE1OSw4ICsxNzUsNyBAQCB2b2lkIENs
aXBib2FyZDo6c2V0RHJvcEVmZmVjdChjb25zdCBTdHJpbmcgJmVmZmVjdCkKICAgICBpZiAoZWZm
ZWN0ICE9ICJub25lIiAmJiBlZmZlY3QgIT0gImNvcHkiICAmJiBlZmZlY3QgIT0gImxpbmsiICYm
IGVmZmVjdCAhPSAibW92ZSIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3BvbGljeSA9
PSBDbGlwYm9hcmRSZWFkYWJsZSB8fCBtX3BvbGljeSA9PSBDbGlwYm9hcmRUeXBlc1JlYWRhYmxl
KQotICAgICAgICBtX2Ryb3BFZmZlY3QgPSBlZmZlY3Q7CisgICAgbV9kcm9wRWZmZWN0ID0gZWZm
ZWN0OwogfQogCiB2b2lkIENsaXBib2FyZDo6c2V0RWZmZWN0QWxsb3dlZChjb25zdCBTdHJpbmcg
JmVmZmVjdCkKQEAgLTE3OSw3ICsxOTQsNyBAQCB2b2lkIENsaXBib2FyZDo6c2V0RWZmZWN0QWxs
b3dlZChjb25zdCBTdHJpbmcgJmVmZmVjdCkKICAgICB9CiAKIAotICAgIGlmIChtX3BvbGljeSA9
PSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoY2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIG1f
ZWZmZWN0QWxsb3dlZCA9IGVmZmVjdDsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DbGlwYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaAppbmRl
eCBkMTFiNjUyYTIxOWFiNjBjMzUzNWZlYjBhMTI4MGI1ZDdhY2ZmNzYyLi4zMWRiMGY5NDZlOTY0
YzY5NWI3MGYyZGVkNDdjZTkzZjczOTc4YzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2xpcGJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5oCkBAIC04
Niw3ICs4NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBo
YXNEYXRhKCkgPSAwOwogICAgICAgICAKICAgICAgICAgdm9pZCBzZXRBY2Nlc3NQb2xpY3koQ2xp
cGJvYXJkQWNjZXNzUG9saWN5KTsKLSAgICAgICAgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGlj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9saWN5OyB9CisgICAgICAgIGJvb2wgY2FuUmVhZFR5cGVz
KCkgY29uc3QgeyByZXR1cm4gbV9wb2xpY3kgJiBSZWFkYWJsZVR5cGVzOyB9CisgICAgICAgIGJv
b2wgY2FuUmVhZERhdGEoKSBjb25zdCB7IHJldHVybiBtX3BvbGljeSAmIFJlYWRhYmxlRGF0YTsg
fQorICAgICAgICBib29sIGNhbldyaXRlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9saWN5ICYg
V3JpdGFibGU7IH0KKyAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSBzcGVjIGRvZXNuJ3QgYWN0dWFs
bHkgYWxsb3cgZHJhZyBpbWFnZSBtb2RpZmljYXRpb24gb3V0c2lkZSB0aGUgZHJhZ3N0YXJ0Cisg
ICAgICAgIC8vIGV2ZW50LiBUaGlzIGNhcGFiaWxpdHkgaXMgbWFpbnRhaW5lZCBmb3IgYmFja3dh
cmRzIGNvbXBhdGlibGl0eSBmb3IgcG9ydHMgdGhhdCBoYXZlCisgICAgICAgIC8vIHN1cHBvcnRl
ZCB0aGlzIGluIHRoZSBwYXN0LiBPbiBtYW55IHBvcnRzLCBhdHRlbXB0aW5nIHRvIHNldCBhIGRy
YWcgaW1hZ2Ugb3V0c2lkZSB0aGUKKyAgICAgICAgLy8gZHJhZ3N0YXJ0IG9wZXJhdGlvbiBpcyBh
IG5vLW9wIGFueXdheS4KKyAgICAgICAgYm9vbCBjYW5TZXREcmFnSW1hZ2UoKSBjb25zdCB7IHJl
dHVybiBtX3BvbGljeSAmIFNldHRhYmxlRHJhZ0ltYWdlOyB9CiAKICAgICAgICAgRHJhZ09wZXJh
dGlvbiBzb3VyY2VPcGVyYXRpb24oKSBjb25zdDsKICAgICAgICAgRHJhZ09wZXJhdGlvbiBkZXN0
aW5hdGlvbk9wZXJhdGlvbigpIGNvbnN0OwpAQCAtMTA3LDEwICsxMTQsMTggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIGRyYWdTdGFydGVkKCkgY29uc3QgeyByZXR1cm4gbV9k
cmFnU3RhcnRlZDsgfQogICAgICAgICAKICAgICBwcml2YXRlOgorICAgICAgICBlbnVtIEFjY2Vz
c1BvbGljeSB7CisgICAgICAgICAgICBOb25lID0gMCwKKyAgICAgICAgICAgIFJlYWRhYmxlVHlw
ZXMgPSAxIDw8IDEsCisgICAgICAgICAgICBSZWFkYWJsZURhdGEgPSAxIDw8IDIsCisgICAgICAg
ICAgICBXcml0YWJsZSA9IDEgPDwgMywKKyAgICAgICAgICAgIFNldHRhYmxlRHJhZ0ltYWdlID0g
MSA8PCA0LAorICAgICAgICB9OworCiAgICAgICAgIGJvb2wgaGFzRmlsZU9mVHlwZShjb25zdCBT
dHJpbmcmKSBjb25zdDsKICAgICAgICAgYm9vbCBoYXNTdHJpbmdPZlR5cGUoY29uc3QgU3RyaW5n
JikgY29uc3Q7CiAgICAgICAgIAotICAgICAgICBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgbV9wb2xp
Y3k7CisgICAgICAgIEFjY2Vzc1BvbGljeSBtX3BvbGljeTsKICAgICAgICAgU3RyaW5nIG1fZHJv
cEVmZmVjdDsKICAgICAgICAgU3RyaW5nIG1fZWZmZWN0QWxsb3dlZDsKICAgICAgICAgYm9vbCBt
X2RyYWdTdGFydGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZEFj
Y2Vzc1BvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZEFjY2Vzc1BvbGljeS5o
CmluZGV4IDdhNTQwMDllNWQwNDU4NDRiZDUwMWEwMjIzNjVhMDFhZTEyOGExNWQuLjgxYjU0MzZh
OWMzNWFmYzc1MjE0NzU2MTExMmE1ODU0ZTdlZjczODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2xpcGJvYXJkQWNjZXNzUG9saWN5LmgKQEAgLTI5LDcgKzI5LDExIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGVudW0gQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHsKLSAgICBDbGlwYm9hcmROdW1i
LCBDbGlwYm9hcmRJbWFnZVdyaXRhYmxlLCBDbGlwYm9hcmRXcml0YWJsZSwgQ2xpcGJvYXJkVHlw
ZXNSZWFkYWJsZSwgQ2xpcGJvYXJkUmVhZGFibGUKKyAgICBDbGlwYm9hcmROdW1iLAorICAgIENs
aXBib2FyZFJlYWRhYmxlLAorICAgIENsaXBib2FyZFJlYWRhYmxlVHlwZXMsCisgICAgQ2xpcGJv
YXJkUmVhZGFibGVBbmRXcml0YWJsZSwKKyAgICBDbGlwYm9hcmRTZXR0YWJsZURyYWdJbWFnZSwK
IH07CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNDli
ZjliZTYwYTM2MDUwMzRmZTRmZWEzNDMzOGZmMzdlNTZlMzI3Ni4uN2ViMjNkZTRjOTY1MTJiMWMy
NmI3ZWM5NTk1ZTc4Y2U3ZTE0ZGQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAt
NTEzLDcgKzUxMyw3IEBAIGJvb2wgRWRpdG9yOjp0cnlESFRNTENvcHkoKQogICAgIGlmIChtX2Zy
YW1lLT5zZWxlY3Rpb24oKS0+aXNJblBhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgcmV0dXJuICFkaXNwYXRjaENQUEV2ZW50KGV2ZW50TmFtZXMoKS5jb3B5RXZl
bnQsIENsaXBib2FyZFdyaXRhYmxlKTsKKyAgICByZXR1cm4gIWRpc3BhdGNoQ1BQRXZlbnQoZXZl
bnROYW1lcygpLmNvcHlFdmVudCwgQ2xpcGJvYXJkUmVhZGFibGVBbmRXcml0YWJsZSk7CiB9CiAK
IGJvb2wgRWRpdG9yOjp0cnlESFRNTEN1dCgpCkBAIC01MjEsNyArNTIxLDcgQEAgYm9vbCBFZGl0
b3I6OnRyeURIVE1MQ3V0KCkKICAgICBpZiAobV9mcmFtZS0+c2VsZWN0aW9uKCktPmlzSW5QYXNz
d29yZEZpZWxkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gIWRp
c3BhdGNoQ1BQRXZlbnQoZXZlbnROYW1lcygpLmN1dEV2ZW50LCBDbGlwYm9hcmRXcml0YWJsZSk7
CisgICAgcmV0dXJuICFkaXNwYXRjaENQUEV2ZW50KGV2ZW50TmFtZXMoKS5jdXRFdmVudCwgQ2xp
cGJvYXJkUmVhZGFibGVBbmRXcml0YWJsZSk7CiB9CiAKIGJvb2wgRWRpdG9yOjp0cnlESFRNTFBh
c3RlKCkKQEAgLTcwOSw3ICs3MDksNyBAQCBib29sIEVkaXRvcjo6ZGlzcGF0Y2hDUFBFdmVudChj
b25zdCBBdG9taWNTdHJpbmcgJmV2ZW50VHlwZSwgQ2xpcGJvYXJkQWNjZXNzUG9saQogICAgIFJl
ZlB0cjxFdmVudD4gZXZ0ID0gQ2xpcGJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUs
IHRydWUsIGNsaXBib2FyZCk7CiAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2dCwgSUdOT1JF
X0VYQ0VQVElPTik7CiAgICAgYm9vbCBub0RlZmF1bHRQcm9jZXNzaW5nID0gZXZ0LT5kZWZhdWx0
UHJldmVudGVkKCk7Ci0gICAgaWYgKG5vRGVmYXVsdFByb2Nlc3NpbmcgJiYgcG9saWN5ID09IENs
aXBib2FyZFdyaXRhYmxlKSB7CisgICAgaWYgKG5vRGVmYXVsdFByb2Nlc3NpbmcgJiYgcG9saWN5
ID09IENsaXBib2FyZFJlYWRhYmxlQW5kV3JpdGFibGUpIHsKICAgICAgICAgUGFzdGVib2FyZCog
cGFzdGVib2FyZCA9IFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCk7CiAgICAgICAgIHBh
c3RlYm9hcmQtPmNsZWFyKCk7CiAgICAgICAgIHBhc3RlYm9hcmQtPndyaXRlQ2xpcGJvYXJkKGNs
aXBib2FyZC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nocm9t
aXVtL0VkaXRvckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0v
RWRpdG9yQ2hyb21pdW0uY3BwCmluZGV4IDBjNjMwYTJiMjY0MGY1MjlkNDg3M2I3ZDE2ZWIxOGE1
Y2IwMzY5NzYuLmI0YmNhZjZkZTlhMWE1MmEyN2NlOTliYjNmOTA1NzBkZTc0MGZmNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0uY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVy
YWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwKIHsKICAgICByZXR1cm4g
Q2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZSgKICAgICAgICAgQ2xpcGJvYXJkOjpDb3B5QW5kUGFz
dGUsCi0gICAgICAgIHBvbGljeSA9PSBDbGlwYm9hcmRXcml0YWJsZSA/IENocm9taXVtRGF0YU9i
amVjdDo6Y3JlYXRlKCkgOiBDaHJvbWl1bURhdGFPYmplY3Q6OmNyZWF0ZUZyb21QYXN0ZWJvYXJk
KCksCisgICAgICAgIHBvbGljeSA9PSBDbGlwYm9hcmRSZWFkYWJsZUFuZFdyaXRhYmxlID8gQ2hy
b21pdW1EYXRhT2JqZWN0OjpjcmVhdGUoKSA6IENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlRnJv
bVBhc3RlYm9hcmQoKSwKICAgICAgICAgcG9saWN5LAogICAgICAgICBmcmFtZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA3YmZlYTA2ZjYzNDc4NTA5MDM1
YWJmZGM5NzBkZDE1MWI4YmM5MjI4Li4wZjljOTZjZTJiZWVjYjZhOGY1ZDM1OTA3ZDQxOTM0NTkx
NmNhOGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC02MCw3
ICs2MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBQYXNzUmVmUHRyPENsaXBib2Fy
ZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xp
Y3ksIEZyYW1lKiBmcmFtZSkKIHsKICAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpjcmVhdGUoQ2xp
cGJvYXJkOjpDb3B5QW5kUGFzdGUsCi0gICAgICAgIHBvbGljeSA9PSBDbGlwYm9hcmRXcml0YWJs
ZSA/IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+dW5pcXVlTmFt
ZSgpIDogU3RyaW5nKE5TR2VuZXJhbFBib2FyZCksIHBvbGljeSwgQ2xpcGJvYXJkTWFjOjpDb3B5
QW5kUGFzdGVHZW5lcmljLCBmcmFtZSk7CisgICAgICAgIHBvbGljeSA9PSBDbGlwYm9hcmRSZWFk
YWJsZUFuZFdyaXRhYmxlID8gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpLT51bmlxdWVOYW1lKCkgOiBTdHJpbmcoTlNHZW5lcmFsUGJvYXJkKSwgcG9saWN5LCBDbGlw
Ym9hcmRNYWM6OkNvcHlBbmRQYXN0ZUdlbmVyaWMsIGZyYW1lKTsKIH0KIAogdm9pZCBFZGl0b3I6
OnNob3dGb250UGFuZWwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRl
eCAwNDA0NTk0MGYzNWZjZmRjNjhmZWM4NTI5MGRjMDhjNTNmOTdlZWM2Li4zNjQyMDZjZjA3Y2Fm
MzkyNmI3NWI1MmFjYTdmNTdiODQ4MGMyYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRyYWdF
eGl0ZWQoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgIEZyYW1lKiBtYWluRnJhbWUgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpOwogCiAgICAgaWYgKFJlZlB0cjxGcmFtZVZpZXc+IHYgPSBtYWluRnJhbWUt
PnZpZXcoKSkgewotICAgICAgICBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5ID0gKCFtX2Rv
Y3VtZW50VW5kZXJNb3VzZSB8fCBtX2RvY3VtZW50VW5kZXJNb3VzZS0+c2VjdXJpdHlPcmlnaW4o
KS0+aXNMb2NhbCgpKSA/IENsaXBib2FyZFJlYWRhYmxlIDogQ2xpcGJvYXJkVHlwZXNSZWFkYWJs
ZTsKKyAgICAgICAgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSA9ICghbV9kb2N1bWVudFVu
ZGVyTW91c2UgfHwgbV9kb2N1bWVudFVuZGVyTW91c2UtPnNlY3VyaXR5T3JpZ2luKCktPmlzTG9j
YWwoKSkgPyBDbGlwYm9hcmRSZWFkYWJsZSA6IENsaXBib2FyZFJlYWRhYmxlVHlwZXM7CiAgICAg
ICAgIFJlZlB0cjxDbGlwYm9hcmQ+IGNsaXBib2FyZCA9IENsaXBib2FyZDo6Y3JlYXRlKHBvbGlj
eSwgZHJhZ0RhdGEsIG1haW5GcmFtZSk7CiAgICAgICAgIGNsaXBib2FyZC0+c2V0U291cmNlT3Bl
cmF0aW9uKGRyYWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSk7CiAgICAgICAg
IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmNhbmNlbERyYWdBbmREcm9wKGNyZWF0ZU1vdXNl
RXZlbnQoZHJhZ0RhdGEpLCBjbGlwYm9hcmQuZ2V0KCkpOwpAQCAtNjEyLDcgKzYxMiw3IEBAIGJv
b2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEsIERyYWdP
cGVyYXRpb24mIG9wZXJhdGlvbikKICAgICBpZiAoIXZpZXdQcm90ZWN0b3IpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kgPSBtX2RvY3Vt
ZW50VW5kZXJNb3VzZS0+c2VjdXJpdHlPcmlnaW4oKS0+aXNMb2NhbCgpID8gQ2xpcGJvYXJkUmVh
ZGFibGUgOiBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlOworICAgIENsaXBib2FyZEFjY2Vzc1BvbGlj
eSBwb2xpY3kgPSBtX2RvY3VtZW50VW5kZXJNb3VzZS0+c2VjdXJpdHlPcmlnaW4oKS0+aXNMb2Nh
bCgpID8gQ2xpcGJvYXJkUmVhZGFibGUgOiBDbGlwYm9hcmRSZWFkYWJsZVR5cGVzOwogICAgIFJl
ZlB0cjxDbGlwYm9hcmQ+IGNsaXBib2FyZCA9IENsaXBib2FyZDo6Y3JlYXRlKHBvbGljeSwgZHJh
Z0RhdGEsIG1haW5GcmFtZS5nZXQoKSk7CiAgICAgRHJhZ09wZXJhdGlvbiBzcmNPcE1hc2sgPSBk
cmFnRGF0YS0+ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCk7CiAgICAgY2xpcGJvYXJkLT5z
ZXRTb3VyY2VPcGVyYXRpb24oc3JjT3BNYXNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAppbmRleCBhZjAzNzI5ZTJmOWI3YzVmZTgwNjVlOWEzNjM1ODg5YjJmNjBjYTVhLi5mNzdj
MTBiMDJkYjJhZGE3ZjhjNjRjOTJlOGNmYTJkY2NmN2MwNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCkBAIC0zNTIzLDcgKzM1MjMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgQ2hl
Y2tEcgogICAgICAgICAKICAgICAgICAgLy8gSW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVyZSBhZ2Fp
bnN0IGFueW1vcmUgcGFzdGVib2FyZCB3cml0aW5nIGZvciBzZWN1cml0eS4gIFRoZSBkcmFnCiAg
ICAgICAgIC8vIGltYWdlIGNhbiBzdGlsbCBiZSBjaGFuZ2VkIGFzIHdlIGRyYWcsIGJ1dCBub3Qg
dGhlIHBhc3RlYm9hcmQgZGF0YS4KLSAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJk
LT5zZXRBY2Nlc3NQb2xpY3koQ2xpcGJvYXJkSW1hZ2VXcml0YWJsZSk7CisgICAgICAgIGRyYWdT
dGF0ZSgpLm1fZHJhZ0NsaXBib2FyZC0+c2V0QWNjZXNzUG9saWN5KENsaXBib2FyZFNldHRhYmxl
RHJhZ0ltYWdlKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJh
ZykgewogICAgICAgICAgICAgLy8gZ2F0aGVyIHZhbHVlcyBmcm9tIERIVE1MIGVsZW1lbnQsIGlm
IGl0IHNldCBhbnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYmxhY2tiZXJyeS9F
dmVudEhhbmRsZXJCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYmxhY2tiZXJy
eS9FdmVudEhhbmRsZXJCbGFja0JlcnJ5LmNwcAppbmRleCA4ZmI3MmI4MDBlMmQzYzZjODViZGU5
YWE2YzcwNWNiMGE4ZmZhZGUwLi5kNjFlYTNhY2MyMWMxYTQ1YTE4NWI2YWYzZTFiNTRiYzU3N2I2
YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2JsYWNrYmVycnkvRXZlbnRIYW5k
bGVyQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ibGFja2JlcnJ5L0V2
ZW50SGFuZGxlckJsYWNrQmVycnkuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjpmb2N1c0RvY3VtZW50VmlldygpCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIFdURjo6
UGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9h
cmQoKSBjb25zdAogewotICAgIHJldHVybiBDbGlwYm9hcmRCbGFja0JlcnJ5OjpjcmVhdGUoQ2xp
cGJvYXJkV3JpdGFibGUpOworICAgIHJldHVybiBDbGlwYm9hcmRCbGFja0JlcnJ5OjpjcmVhdGUo
Q2xpcGJvYXJkUmVhZGFibGVBbmRXcml0YWJsZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcAppbmRl
eCAwMTNkM2EzOWFkYjk5NTE5NGE0MTk5OWQwZTFlNDI1NmNmMWZjZGRlLi4wOWVhNmUzYjczZDRj
ZTRjODVlZjNhNDAzZjM0MWI5YjM2ZTNiNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcApAQCAtMTI5LDcgKzEyOSw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudEFjdGl2YXRlZFZpZXcoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCkgY29uc3QKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRs
ZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCkgY29uc3QKIHsKICAgICBSZWZQdHI8Q2hyb21p
dW1EYXRhT2JqZWN0PiBkYXRhT2JqZWN0ID0gQ2hyb21pdW1EYXRhT2JqZWN0OjpjcmVhdGUoKTsK
LSAgICByZXR1cm4gQ2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZShDbGlwYm9hcmQ6OkRyYWdBbmRE
cm9wLCBkYXRhT2JqZWN0LmdldCgpLCBDbGlwYm9hcmRXcml0YWJsZSwgbV9mcmFtZSk7CisgICAg
cmV0dXJuIENsaXBib2FyZENocm9taXVtOjpjcmVhdGUoQ2xpcGJvYXJkOjpEcmFnQW5kRHJvcCwg
ZGF0YU9iamVjdC5nZXQoKSwgQ2xpcGJvYXJkUmVhZGFibGVBbmRXcml0YWJsZSwgbV9mcmFtZSk7
CiB9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpmb2N1c0RvY3VtZW50VmlldygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9FdmVudEhhbmRsZXJFZmwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNwcAppbmRleCBlMzZlZGNiNGViZTU4OGQz
ZDRkZDEyMTE5ZWE3N2NkYjJkZWMxMThkLi43NDkzNWY1NTcyNmI5NzRlZjhlYmVjMDZhN2M2MjZk
NzFmMWZkZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9FdmVudEhhbmRs
ZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5j
cHAKQEAgLTk5LDcgKzk5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9X
aWRnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgV2lkZ2UKICNpZiBFTkFCTEUo
RFJBR19TVVBQT1JUKQogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6Y3JlYXRl
RHJhZ2dpbmdDbGlwYm9hcmQoKSBjb25zdAogewotICAgIHJldHVybiBDbGlwYm9hcmRFZmw6OmNy
ZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwgQ2xpcGJvYXJkOjpEcmFnQW5kRHJvcCk7CisgICAgcmV0
dXJuIENsaXBib2FyZEVmbDo6Y3JlYXRlKENsaXBib2FyZFJlYWRhYmxlQW5kV3JpdGFibGUsIENs
aXBib2FyZDo6RHJhZ0FuZERyb3ApOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwCmluZGV4IGNmZDZjODg1MjFiYmUxNmI2ZWQ2MWFlNmZh
ZDkwZjk2YmRhODNlZjQuLjk0N2Y0NGJiMTMwNDAxMDAzOTQyZjIwZWI5ZTYxYTZjODhkN2E4MTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcApAQCAtOTYs
NyArOTYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBXaWRnZQogCiBQYXNzUmVmUHRyPENsaXBib2Fy
ZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIENsaXBib2FyZEd0azo6Y3JlYXRlKENsaXBib2FyZFdyaXRhYmxlLCBEYXRhT2JqZWN0
R3RrOjpjcmVhdGUoKSwgQ2xpcGJvYXJkOjpEcmFnQW5kRHJvcCwgbV9mcmFtZSk7CisgICAgcmV0
dXJuIENsaXBib2FyZEd0azo6Y3JlYXRlKENsaXBib2FyZFJlYWRhYmxlQW5kV3JpdGFibGUsIERh
dGFPYmplY3RHdGs6OmNyZWF0ZSgpLCBDbGlwYm9hcmQ6OkRyYWdBbmREcm9wLCBtX2ZyYW1lKTsK
IH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IGU1MWQwZGZmZTI1OTFj
ZGQ5YTQ4YzBkNmIxMTZhYjAzODEwYTQ1MjcuLjZjZmJmYjUyNTExNjQwMzkxNzAxOWY5MTIyZjYz
ZGYyOGI4ZDRmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMu
bW0KQEAgLTY3Nyw3ICs2NzcsNyBAQCBQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRIYW5kbGVy
OjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0CiAgICAgLy8gYWxzbyBkb25lIGZvciBz
ZWN1cml0eSwgYXMgaXQgZXJhc2VzIGRhdGEgZnJvbSB0aGUgbGFzdCBkcmFnCiAgICAgUGFzdGVi
b2FyZCBwYXN0ZWJvYXJkKE5TRHJhZ1Bib2FyZCk7CiAgICAgcGFzdGVib2FyZC5jbGVhcigpOwot
ICAgIHJldHVybiBDbGlwYm9hcmRNYWM6OmNyZWF0ZShDbGlwYm9hcmQ6OkRyYWdBbmREcm9wLCBT
dHJpbmcoTlNEcmFnUGJvYXJkKSwgQ2xpcGJvYXJkV3JpdGFibGUsIENsaXBib2FyZE1hYzo6RHJh
Z0FuZERyb3BEYXRhLCBtX2ZyYW1lKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpjcmVhdGUo
Q2xpcGJvYXJkOjpEcmFnQW5kRHJvcCwgU3RyaW5nKE5TRHJhZ1Bib2FyZCksIENsaXBib2FyZFJl
YWRhYmxlQW5kV3JpdGFibGUsIENsaXBib2FyZE1hYzo6RHJhZ0FuZERyb3BEYXRhLCBtX2ZyYW1l
KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0V2ZW50
SGFuZGxlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3Bw
CmluZGV4IDBmNzgwNmE1M2I3ZmMxNTQ0YzBjNTcyMWQ2MjI0MDMxOWVjNmMyODAuLjRiNjI5M2M2
MTdhMDQ1MjlmOWEzNGIzNjdlZDZmMDFiNDYyMDZmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
cXQvRXZlbnRIYW5kbGVyUXQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQs
IFdpZGdlCiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdn
aW5nQ2xpcGJvYXJkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkUXQ6OmNyZWF0ZShD
bGlwYm9hcmRXcml0YWJsZSwgbV9mcmFtZSwgQ2xpcGJvYXJkOjpEcmFnQW5kRHJvcCk7CisgICAg
cmV0dXJuIENsaXBib2FyZFF0OjpjcmVhdGUoQ2xpcGJvYXJkUmVhZGFibGVBbmRXcml0YWJsZSwg
bV9mcmFtZSwgQ2xpcGJvYXJkOjpEcmFnQW5kRHJvcCk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVy
OjpwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9FdmVu
dEhhbmRsZXJXaW4uY3BwCmluZGV4IDA0Yjk4OGY5NDEwZjQwNWRiZjA2NjBkYjhlNDJmNjRkMGJh
NzM3MmIuLmE3NGU0ZjBkZjk1Y2EwM2Y3OTMyODcyMDQ1YTQ1NDU0OTQ1YTlkOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcApAQCAtMTAzLDcgKzEwMyw3
IEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xp
cGJvYXJkKCkgY29uc3QKICNlbHNlCiAgICAgQ09NUHRyPFdDRGF0YU9iamVjdD4gZGF0YU9iamVj
dDsKICAgICBXQ0RhdGFPYmplY3Q6OmNyZWF0ZUluc3RhbmNlKCZkYXRhT2JqZWN0KTsKLSAgICBy
ZXR1cm4gQ2xpcGJvYXJkV2luOjpjcmVhdGUoQ2xpcGJvYXJkOjpEcmFnQW5kRHJvcCwgZGF0YU9i
amVjdC5nZXQoKSwgQ2xpcGJvYXJkV3JpdGFibGUsIG1fZnJhbWUpOworICAgIHJldHVybiBDbGlw
Ym9hcmRXaW46OmNyZWF0ZShDbGlwYm9hcmQ6OkRyYWdBbmREcm9wLCBkYXRhT2JqZWN0LmdldCgp
LCBDbGlwYm9hcmRSZWFkYWJsZUFuZFdyaXRhYmxlLCBtX2ZyYW1lKTsKICNlbmRpZgogfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3d4L0V2ZW50SGFuZGxlcld4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd3gvRXZlbnRIYW5kbGVyV3guY3BwCmluZGV4IGYwYjc0
NTBiMjFhNDVmNzkxNjQwZGVmZDgyYWNkZTZhNjRmM2UyZTUuLjdmMzA1OTUzNzU2YTRkYjM3NGM5
ZDZiYjE2Y2IxMjdmZTlkNThkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd3gv
RXZlbnRIYW5kbGVyV3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd3gvRXZlbnRIYW5k
bGVyV3guY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50QWN0
aXZhdGVkVmlldyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSBjb25zdAogCiBQYXNzUmVmUHRy
PENsaXBib2FyZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0
IAogewotICAgIHJldHVybiBDbGlwYm9hcmRXeDo6Y3JlYXRlKENsaXBib2FyZFdyaXRhYmxlLCBD
bGlwYm9hcmQ6OkRyYWdBbmREcm9wKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkV3g6OmNyZWF0ZShD
bGlwYm9hcmRSZWFkYWJsZUFuZFdyaXRhYmxlLCBDbGlwYm9hcmQ6OkRyYWdBbmREcm9wKTsKIH0K
IAogdW5zaWduZWQgRXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9DbGlwYm9hcmRCbGFja0JlcnJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ2xpcGJvYXJkQmxhY2tC
ZXJyeS5jcHAKaW5kZXggYWRlMjJlZjQ3ZWJmMTA0NGUyMGFhNmM5ZTI2NjQ5YTdlZjIwNDU0ZC4u
NjBhNDRiMjYyNGZhMjhlOGUzYjc4MjhlNDNmZGM4MTEyYTI2ZTVjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9DbGlwYm9hcmRCbGFja0JlcnJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0NsaXBib2FyZEJsYWNrQmVy
cnkuY3BwCkBAIC00Miw3ICs0Miw3IEBAIENsaXBib2FyZEJsYWNrQmVycnk6On5DbGlwYm9hcmRC
bGFja0JlcnJ5KCkKIAogdm9pZCBDbGlwYm9hcmRCbGFja0JlcnJ5OjpjbGVhckRhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkK
KyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjpjbGVhckNsaXBib2FyZEJ5VHlwZSh0eXBlLnV0Zjgo
KS5kYXRhKCkpOwpAQCAtNTAsNyArNTAsNyBAQCB2b2lkIENsaXBib2FyZEJsYWNrQmVycnk6OmNs
ZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIHZvaWQgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6
Y2xlYXJBbGxEYXRhKCkKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUp
CisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6Y2xlYXJDbGlwYm9hcmQoKTsKQEAgLTU4LDcgKzU4
LDcgQEAgdm9pZCBDbGlwYm9hcmRCbGFja0JlcnJ5OjpjbGVhckFsbERhdGEoKQogCiBTdHJpbmcg
Q2xpcGJvYXJkQmxhY2tCZXJyeTo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7
Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlKQorICAgIGlmICghY2FuUmVh
ZERhdGEoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgcmV0dXJuIFN0cmluZzo6
ZnJvbVVURjgoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6cmVhZENsaXBib2FyZEJ5
VHlwZSh0eXBlLnV0ZjgoKS5kYXRhKCkpLmNfc3RyKCkpOwpAQCAtNjYsNyArNjYsNyBAQCBTdHJp
bmcgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0
CiAKIGJvb2wgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3Jp
dGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKHR5cGUgPT0gInRleHQvcGxhaW4iKQpAQCAtODAsNyArODAsNyBAQCBib29sIENs
aXBib2FyZEJsYWNrQmVycnk6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIHRleHQpCiAKIExpc3RIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkQmxhY2tCZXJyeTo6dHlw
ZXMoKSBjb25zdAogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSAmJiBw
b2xpY3koKSAhPSBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlKQorICAgIGlmICghY2FuUmVhZFR5cGVz
KCkpCiAgICAgICAgIHJldHVybiBMaXN0SGFzaFNldDxTdHJpbmc+KCk7CiAKICAgICAvLyBXZSB1
c2UgaGFyZGNvZGVkIGxpc3QgaGVyZSBzaW5jZSB0aGVyZSBzZWVtcyB0byBiZSBubyBBUEkgdG8g
Z2V0IHRoZSBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IGZjMzcyNzhkNmI5MjI3M2FkODk1MjE1NzJl
YjVkODRkYmFlOTIxODkuLmQwOTA1ZjI4NjZmNjUyZDA3ZGM2ZGViM2VlOGQzODc4NzU4ZjhhNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9h
cmRDaHJvbWl1bS5jcHAKQEAgLTg5LDE0ICs4OSwxNCBAQCBEYXRhVHJhbnNmZXJJdGVtTGlzdFBv
bGljeVdyYXBwZXI6On5EYXRhVHJhbnNmZXJJdGVtTGlzdFBvbGljeVdyYXBwZXIoKQogCiBzaXpl
X3QgRGF0YVRyYW5zZmVySXRlbUxpc3RQb2xpY3lXcmFwcGVyOjpsZW5ndGgoKSBjb25zdAogewot
ICAgIGlmIChtX2NsaXBib2FyZC0+cG9saWN5KCkgPT0gQ2xpcGJvYXJkTnVtYikKKyAgICBpZiAo
IW1fY2xpcGJvYXJkLT5jYW5SZWFkVHlwZXMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuIG1fZGF0YU9iamVjdC0+bGVuZ3RoKCk7CiB9CiAKIFBhc3NSZWZQdHI8RGF0YVRyYW5zZmVy
SXRlbT4gRGF0YVRyYW5zZmVySXRlbUxpc3RQb2xpY3lXcmFwcGVyOjppdGVtKHVuc2lnbmVkIGxv
bmcgaW5kZXgpCiB7Ci0gICAgaWYgKG1fY2xpcGJvYXJkLT5wb2xpY3koKSA9PSBDbGlwYm9hcmRO
dW1iKQorICAgIGlmICghbV9jbGlwYm9hcmQtPmNhblJlYWRUeXBlcygpKQogICAgICAgICByZXR1
cm4gMDsKICAgICBSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0SXRlbT4gaXRlbSA9IG1fZGF0YU9i
amVjdC0+aXRlbShpbmRleCk7CiAgICAgaWYgKCFpdGVtKQpAQCAtMTA3LDcgKzEwNyw3IEBAIFBh
c3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4gRGF0YVRyYW5zZmVySXRlbUxpc3RQb2xpY3lXcmFw
cGVyOjppdGVtKHVuc2lnbmVkIGxvCiAKIHZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3RQb2xpY3lX
cmFwcGVyOjpkZWxldGVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIGlmIChtX2NsaXBib2FyZC0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUp
IHsKKyAgICBpZiAoIW1fY2xpcGJvYXJkLT5jYW5Xcml0ZURhdGEoKSkgewogICAgICAgICBlYyA9
IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTE2LDIxICsx
MTYsMjEgQEAgdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFBvbGljeVdyYXBwZXI6OmRlbGV0ZUl0
ZW0odW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW8KIAogdm9pZCBEYXRhVHJhbnNmZXJJdGVt
TGlzdFBvbGljeVdyYXBwZXI6OmNsZWFyKCkKIHsKLSAgICBpZiAobV9jbGlwYm9hcmQtPnBvbGlj
eSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghbV9jbGlwYm9hcmQtPmNhbldyaXRl
RGF0YSgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9kYXRhT2JqZWN0LT5jbGVhckFsbCgpOwog
fQogCiB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0UG9saWN5V3JhcHBlcjo6YWRkKGNvbnN0IFN0
cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAg
ICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlm
ICghbV9jbGlwYm9hcmQtPmNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9k
YXRhT2JqZWN0LT5hZGQoZGF0YSwgdHlwZSwgZWMpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlckl0
ZW1MaXN0UG9saWN5V3JhcHBlcjo6YWRkKFBhc3NSZWZQdHI8RmlsZT4gZmlsZSkKIHsKLSAgICBp
ZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICgh
bV9jbGlwYm9hcmQtPmNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9kYXRh
T2JqZWN0LT5hZGQoZmlsZSwgbV9jbGlwYm9hcmQtPmZyYW1lKCktPmRvY3VtZW50KCktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CkBAIC0xNTYsMjEgKzE1NiwyMSBAQCBEYXRhVHJhbnNm
ZXJJdGVtUG9saWN5V3JhcHBlcjo6fkRhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lXcmFwcGVyKCkKIAog
U3RyaW5nIERhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lXcmFwcGVyOjpraW5kKCkgY29uc3QKIHsKLSAg
ICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpID09IENsaXBib2FyZE51bWIpCisgICAgaWYgKCFt
X2NsaXBib2FyZC0+Y2FuUmVhZFR5cGVzKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAg
ICByZXR1cm4gbV9pdGVtLT5raW5kKCk7CiB9CiAKIFN0cmluZyBEYXRhVHJhbnNmZXJJdGVtUG9s
aWN5V3JhcHBlcjo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY2xpcGJvYXJkLT5wb2xpY3ko
KSA9PSBDbGlwYm9hcmROdW1iKQorICAgIGlmICghbV9jbGlwYm9hcmQtPmNhblJlYWRUeXBlcygp
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIG1faXRlbS0+dHlwZSgpOwog
fQogCiB2b2lkIERhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lXcmFwcGVyOjpnZXRBc1N0cmluZyhQYXNz
UmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBjYWxsYmFjaykgY29uc3QKIHsKLSAgICBpZiAobV9jbGlw
Ym9hcmQtPnBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlICYmIG1fY2xpcGJvYXJkLT5wb2xp
Y3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIW1fY2xpcGJvYXJkLT5jYW5SZWFk
RGF0YSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2l0ZW0tPmdldEFzU3RyaW5nKGNhbGxi
YWNrLCBtX2NsaXBib2FyZC0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lX
cmFwcGVyOjpnZXRBc1N0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBjYWxsYgogCiBQ
YXNzUmVmUHRyPEJsb2I+IERhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lXcmFwcGVyOjpnZXRBc0ZpbGUo
KSBjb25zdAogewotICAgIGlmIChtX2NsaXBib2FyZC0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVh
ZGFibGUgJiYgbV9jbGlwYm9hcmQtPnBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAg
IGlmICghbV9jbGlwYm9hcmQtPmNhblJlYWREYXRhKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgcmV0dXJuIG1faXRlbS0+Z2V0QXNGaWxlKCk7CkBAIC0yMzgsNyArMjM4LDcgQEAgUGFzc1Jl
ZlB0cjxDbGlwYm9hcmRDaHJvbWl1bT4gQ2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZShDbGlwYm9h
cmRUeXBlIGNsaXBib2FyZFQKIAogdm9pZCBDbGlwYm9hcmRDaHJvbWl1bTo6Y2xlYXJEYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFi
bGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9k
YXRhT2JqZWN0LT5jbGVhckRhdGEobm9ybWFsaXplVHlwZSh0eXBlKSk7CkBAIC0yNDgsNyArMjQ4
LDcgQEAgdm9pZCBDbGlwYm9hcmRDaHJvbWl1bTo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlw
ZSkKIAogdm9pZCBDbGlwYm9hcmRDaHJvbWl1bTo6Y2xlYXJBbGxEYXRhKCkKIHsKLSAgICBpZiAo
cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9kYXRhT2JqZWN0LT5jbGVhckFsbCgpOwpAQCAtMjU2
LDcgKzI1Niw3IEBAIHZvaWQgQ2xpcGJvYXJkQ2hyb21pdW06OmNsZWFyQWxsRGF0YSgpCiAKIFN0
cmluZyBDbGlwYm9hcmRDaHJvbWl1bTo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0
CiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlKQorICAgIGlmICghY2Fu
UmVhZERhdGEoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgYm9vbCBjb252ZXJ0
VG9VUkwgPSBmYWxzZTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBTdHJpbmcgQ2xpcGJvYXJkQ2hyb21p
dW06OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogCiBib29sIENsaXBib2FyZENo
cm9taXVtOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQog
ewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldy
aXRlRGF0YSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbV9kYXRhT2Jq
ZWN0LT5zZXREYXRhKG5vcm1hbGl6ZVR5cGUodHlwZSksIGRhdGEpOwpAQCAtMjc3LDcgKzI3Nyw3
IEBAIGJvb2wgQ2xpcGJvYXJkQ2hyb21pdW06OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGRhdGEpCiAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQogTGlzdEhh
c2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRDaHJvbWl1bTo6dHlwZXMoKSBjb25zdAogewotICAgIGlm
IChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRU
eXBlc1JlYWRhYmxlKQorICAgIGlmICghY2FuUmVhZFR5cGVzKCkpCiAgICAgICAgIHJldHVybiBM
aXN0SGFzaFNldDxTdHJpbmc+KCk7CiAKICAgICByZXR1cm4gbV9kYXRhT2JqZWN0LT50eXBlcygp
OwpAQCAtMjg2LDcgKzI4Niw3IEBAIExpc3RIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkQ2hyb21p
dW06OnR5cGVzKCkgY29uc3QKIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZENocm9taXVt
OjpmaWxlcygpIGNvbnN0CiB7CiAgICAgUmVmUHRyPEZpbGVMaXN0PiBmaWxlcyA9IEZpbGVMaXN0
OjpjcmVhdGUoKTsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUpCisgICAg
aWYgKCFjYW5SZWFkRGF0YSgpKQogICAgICAgICByZXR1cm4gZmlsZXMucmVsZWFzZSgpOwogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RhdGFPYmplY3QtPmxlbmd0aCgpOyArK2kpIHsK
QEAgLTMwMiw3ICszMDIsNyBAQCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9hcmRDaHJvbWl1
bTo6ZmlsZXMoKSBjb25zdAogCiB2b2lkIENsaXBib2FyZENocm9taXVtOjpzZXREcmFnSW1hZ2Uo
Q2FjaGVkSW1hZ2UqIGltYWdlLCBOb2RlKiBub2RlLCBjb25zdCBJbnRQb2ludCYgbG9jKQogewot
ICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRJbWFnZVdyaXRhYmxlICYmIHBvbGljeSgpICE9
IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghY2FuU2V0RHJhZ0ltYWdlKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChtX2RyYWdJbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKaW5kZXggMjYzYjZjZjhmMmVkYzU5OThmMTVhMDFhZWJj
NTcyMmUzNTk2NjQ0YS4uZjUwNDYwYTcyMWFjNDAzZGYxYWNhZTliNTQ0MDM4MGVhODNhODFmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKQEAgLTEw
Myw3ICsxMDMsNyBAQCBzdGF0aWMgQ2xpcGJvYXJkRGF0YVR5cGUgZGF0YU9iamVjdFR5cGVGcm9t
SFRNTENsaXBib2FyZFR5cGUoY29uc3QgU3RyaW5nJiByYXdUeQogCiB2b2lkIENsaXBib2FyZEd0
azo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZykKIHsKLSAgICBpZiAocG9saWN5
KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQ2xpcGJvYXJkRGF0YVR5cGUgdHlwZSA9IGRhdGFPYmplY3RUeXBl
RnJvbUhUTUxDbGlwYm9hcmRUeXBlKHR5cGVTdHJpbmcpOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHZv
aWQgQ2xpcGJvYXJkR3RrOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKQogCiB2
b2lkIENsaXBib2FyZEd0azo6Y2xlYXJBbGxEYXRhKCkKIHsKLSAgICBpZiAocG9saWN5KCkgIT0g
Q2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gV2UgZG8gbm90IGNsZWFyIGZpbGVuYW1lcy4gQWNjb3JkaW5nIHRvIHRo
ZSBzcGVjOiAiVGhlIGNsZWFyRGF0YSgpIG1ldGhvZApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQg
Q2xpcGJvYXJkR3RrOjpjbGVhckFsbERhdGEoKQogCiBTdHJpbmcgQ2xpcGJvYXJkR3RrOjpnZXRE
YXRhKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZykgY29uc3QKIHsKLSAgICBpZiAocG9saWN5KCkg
IT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwgIW1fZGF0YU9iamVjdCkKKyAgICBpZiAoIWNhblJlYWRE
YXRhKCkgfHwgIW1fZGF0YU9iamVjdCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAg
aWYgKG1fY2xpcGJvYXJkKQpAQCAtMTY5LDcgKzE2OSw3IEBAIFN0cmluZyBDbGlwYm9hcmRHdGs6
OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKSBjb25zdAogCiBib29sIENsaXBib2Fy
ZEd0azo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGF0
YSkKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFj
YW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBzdWNjZXNz
ID0gZmFsc2U7CkBAIC0xOTAsNyArMTkwLDcgQEAgYm9vbCBDbGlwYm9hcmRHdGs6OnNldERhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAKIExpc3RIYXNo
U2V0PFN0cmluZz4gQ2xpcGJvYXJkR3RrOjp0eXBlcygpIGNvbnN0CiB7Ci0gICAgaWYgKHBvbGlj
eSgpICE9IENsaXBib2FyZFJlYWRhYmxlICYmIHBvbGljeSgpICE9IENsaXBib2FyZFR5cGVzUmVh
ZGFibGUpCisgICAgaWYgKCFjYW5SZWFkVHlwZXMoKSkKICAgICAgICAgcmV0dXJuIExpc3RIYXNo
U2V0PFN0cmluZz4oKTsKIAogICAgIGlmIChtX2NsaXBib2FyZCkKQEAgLTIxOSw3ICsyMTksNyBA
QCBMaXN0SGFzaFNldDxTdHJpbmc+IENsaXBib2FyZEd0azo6dHlwZXMoKSBjb25zdAogCiBQYXNz
UmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9hcmRHdGs6OmZpbGVzKCkgY29uc3QKIHsKLSAgICBpZiAo
cG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFkRGF0YSgpKQog
ICAgICAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0ZSgpOwogCiAgICAgaWYgKG1fY2xpcGJvYXJk
KQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgQ2xpcGJvYXJkR3RrOjpzZXREcmFnSW1hZ2VFbGVt
ZW50KE5vZGUqIGVsZW1lbnQsIGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikKIAogdm9pZCBDbGlw
Ym9hcmRHdGs6OnNldERyYWdJbWFnZShDYWNoZWRJbWFnZSogaW1hZ2UsIE5vZGUqIGVsZW1lbnQs
IGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJv
YXJkSW1hZ2VXcml0YWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBp
ZiAoIWNhblNldERyYWdJbWFnZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9kcmFn
SW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJk
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQppbmRl
eCBhNWIyOWQ5OWY4MjhkOTg0NWMzYjdmMTdjODdiYTU2YWFlYmU0MmUxLi4zNmE0ZDhlMjg1NjA4
MWFiMDg5OTEzMGVmMmZjNjc0ZDlkYzczNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9DbGlwYm9hcmRNYWMubW0KQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgdm9pZCBhZGRI
VE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0
VHlwZXMsCiAKIHZvaWQgQ2xpcGJvYXJkTWFjOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBl
KQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNh
bldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBub3RlIE5TUGFzdGVib2Fy
ZCBlbmZvcmNlcyBjaGFuZ2VDb3VudCBpdHNlbGYgb24gd3JpdGluZyAtIGNhbid0IHdyaXRlIGlm
IG5vdCB0aGUgb3duZXIKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIENsaXBib2FyZE1hYzo6Y2xl
YXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogdm9pZCBDbGlwYm9hcmRNYWM6OmNsZWFyQWxs
RGF0YSgpCiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlm
ICghY2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIG5vdGUgTlNQYXN0
ZWJvYXJkIGVuZm9yY2VzIGNoYW5nZUNvdW50IGl0c2VsZiBvbiB3cml0aW5nIC0gY2FuJ3Qgd3Jp
dGUgaWYgbm90IHRoZSBvd25lcgpAQCAtMjIwLDcgKzIyMCw3IEBAIHN0YXRpYyBWZWN0b3I8U3Ry
aW5nPiBhYnNvbHV0ZVVSTHNGcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBiCiAKIFN0cmluZyBDbGlwYm9hcmRNYWM6OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdAogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSB8fCBtX2Ns
aXBib2FyZENvbnRlbnRzID09IERyYWdBbmREcm9wRmlsZXMpCisgICAgaWYgKCFjYW5SZWFkRGF0
YSgpIHx8IG1fY2xpcGJvYXJkQ29udGVudHMgPT0gRHJhZ0FuZERyb3BGaWxlcykKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogCiAgICAgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUgPSBjb2NvYVR5
cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlwZSk7CkBAIC0yNDksNyArMjQ5LDcgQEAgU3RyaW5n
IENsaXBib2FyZE1hYzo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAKIGJvb2wg
Q2xpcGJvYXJkTWFjOjpzZXREYXRhKGNvbnN0IFN0cmluZyAmdHlwZSwgY29uc3QgU3RyaW5nICZk
YXRhKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSB8fCBtX2NsaXBi
b2FyZENvbnRlbnRzID09IERyYWdBbmREcm9wRmlsZXMpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEo
KSB8fCBtX2NsaXBib2FyZENvbnRlbnRzID09IERyYWdBbmREcm9wRmlsZXMpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAvLyBub3RlIE5TUGFzdGVib2FyZCBlbmZvcmNlcyBjaGFuZ2VDb3Vu
dCBpdHNlbGYgb24gd3JpdGluZyAtIGNhbid0IHdyaXRlIGlmIG5vdCB0aGUgb3duZXIKIApAQCAt
MjgzLDcgKzI4Myw3IEBAIGJvb2wgQ2xpcGJvYXJkTWFjOjpzZXREYXRhKGNvbnN0IFN0cmluZyAm
dHlwZSwgY29uc3QgU3RyaW5nICZkYXRhKQogCiBMaXN0SGFzaFNldDxTdHJpbmc+IENsaXBib2Fy
ZE1hYzo6dHlwZXMoKSBjb25zdAogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFk
YWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlKQorICAgIGlmICghY2Fu
UmVhZFR5cGVzKCkpCiAgICAgICAgIHJldHVybiBMaXN0SGFzaFNldDxTdHJpbmc+KCk7CiAKICAg
ICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKQEAgLTMxMiw3ICszMTIsNyBAQCBMaXN0SGFzaFNldDxT
dHJpbmc+IENsaXBib2FyZE1hYzo6dHlwZXMoKSBjb25zdAogLy8gY2xpcGJvYXJkIGFyZSBub3Qg
cmVmbGVjdGVkIGluIGFueSBGaWxlTGlzdCBvYmplY3RzIHRoZSBwYWdlIGhhcyBhY2Nlc3NlZCBh
bmQgc3RvcmVkCiBQYXNzUmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9hcmRNYWM6OmZpbGVzKCkgY29u
c3QKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwgbV9jbGlwYm9h
cmRDb250ZW50cyA9PSBEcmFnQW5kRHJvcERhdGEpCisgICAgaWYgKCFjYW5SZWFkRGF0YSgpIHx8
IG1fY2xpcGJvYXJkQ29udGVudHMgPT0gRHJhZ0FuZERyb3BEYXRhKQogICAgICAgICByZXR1cm4g
RmlsZUxpc3Q6OmNyZWF0ZSgpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gYWJzb2x1dGVVUkxzID0g
YWJzb2x1dGVVUkxzRnJvbVBhc3RlYm9hcmRGaWxlbmFtZXMobV9wYXN0ZWJvYXJkTmFtZSk7CkBA
IC0zNDAsNyArMzQwLDcgQEAgdm9pZCBDbGlwYm9hcmRNYWM6OnNldERyYWdJbWFnZUVsZW1lbnQo
Tm9kZSAqbm9kZSwgY29uc3QgSW50UG9pbnQgJmxvYykKIAogdm9pZCBDbGlwYm9hcmRNYWM6OnNl
dERyYWdJbWFnZShDYWNoZWRJbWFnZSogaW1hZ2UsIE5vZGUgKm5vZGUsIGNvbnN0IEludFBvaW50
ICZsb2MpCiB7Ci0gICAgaWYgKHBvbGljeSgpID09IENsaXBib2FyZEltYWdlV3JpdGFibGUgfHwg
cG9saWN5KCkgPT0gQ2xpcGJvYXJkV3JpdGFibGUpIHsKKyAgICBpZiAoY2FuU2V0RHJhZ0ltYWdl
KCkpIHsKICAgICAgICAgaWYgKG1fZHJhZ0ltYWdlKQogICAgICAgICAgICAgbV9kcmFnSW1hZ2Ut
PnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICAgICAgbV9kcmFnSW1hZ2UgPSBpbWFnZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAppbmRleCA3MWM5MWNiNDFiNmNl
MWRhOTJmNjIzZmU1MDkxZDRiYjBjYzhkMzc4Li43NDdmZjk1MTAwODViZGM4NWU2OGU3ZTljOTFh
MTAwNjFlNzZlZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlw
Ym9hcmRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQu
Y3BwCkBAIC04Miw3ICs4Miw3IEBAIENsaXBib2FyZFF0OjpDbGlwYm9hcmRRdChDbGlwYm9hcmRB
Y2Nlc3NQb2xpY3kgcG9saWN5LCBjb25zdCBRTWltZURhdGEqIHJlYWRhYmxlCiAgICAgLCBtX3dy
aXRhYmxlRGF0YSgwKQogICAgICwgbV9mcmFtZShmcmFtZSkKIHsKLSAgICBRX0FTU0VSVChwb2xp
Y3kgPT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwgcG9saWN5ID09IENsaXBib2FyZFR5cGVzUmVhZGFi
bGUpOworICAgIFFfQVNTRVJUKHBvbGljeSA9PSBDbGlwYm9hcmRSZWFkYWJsZSB8fCBwb2xpY3kg
PT0gQ2xpcGJvYXJkUmVhZGFibGVUeXBlcyk7CiB9CiAKIENsaXBib2FyZFF0OjpDbGlwYm9hcmRR
dChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5
cGUsIEZyYW1lKiBmcmFtZSkKQEAgLTkxLDEwICs5MSwxMCBAQCBDbGlwYm9hcmRRdDo6Q2xpcGJv
YXJkUXQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9h
cmRUeQogICAgICwgbV93cml0YWJsZURhdGEoMCkKICAgICAsIG1fZnJhbWUoZnJhbWUpCiB7Ci0g
ICAgUV9BU1NFUlQocG9saWN5ID09IENsaXBib2FyZFJlYWRhYmxlIHx8IHBvbGljeSA9PSBDbGlw
Ym9hcmRXcml0YWJsZSB8fCBwb2xpY3kgPT0gQ2xpcGJvYXJkTnVtYik7CisgICAgUV9BU1NFUlQo
cG9saWN5ID09IENsaXBib2FyZFJlYWRhYmxlIHx8IHBvbGljeSA9PSBDbGlwYm9hcmRSZWFkYWJs
ZUFuZFdyaXRhYmxlIHx8IHBvbGljeSA9PSBDbGlwYm9hcmROdW1iKTsKIAogI2lmbmRlZiBRVF9O
T19DTElQQk9BUkQKLSAgICBpZiAocG9saWN5ICE9IENsaXBib2FyZFdyaXRhYmxlKSB7CisgICAg
aWYgKHBvbGljeSAhPSBDbGlwYm9hcmRSZWFkYWJsZUFuZFdyaXRhYmxlKSB7CiAgICAgICAgIFFf
QVNTRVJUKGlzRm9yQ29weUFuZFBhc3RlKCkpOwogICAgICAgICBtX3JlYWRhYmxlRGF0YSA9IFFH
dWlBcHBsaWNhdGlvbjo6Y2xpcGJvYXJkKCktPm1pbWVEYXRhKCk7CiAgICAgfQpAQCAtMTEyLDcg
KzExMiw3IEBAIENsaXBib2FyZFF0Ojp+Q2xpcGJvYXJkUXQoKQogCiB2b2lkIENsaXBib2FyZFF0
OjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIGlmIChwb2xpY3koKSAhPSBD
bGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobV93cml0YWJsZURhdGEpIHsKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lk
IENsaXBib2FyZFF0OjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogCiB2b2lkIENsaXBi
b2FyZFF0OjpjbGVhckFsbERhdGEoKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRX
cml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKICNp
Zm5kZWYgUVRfTk9fQ0xJUEJPQVJECkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBDbGlwYm9hcmRR
dDo6Y2xlYXJBbGxEYXRhKCkKIFN0cmluZyBDbGlwYm9hcmRRdDo6Z2V0RGF0YShjb25zdCBTdHJp
bmcmIHR5cGUpIGNvbnN0CiB7CiAKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFi
bGUpCisgICAgaWYgKCFjYW5SZWFkRGF0YSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
ICAgICBpZiAoaXNIdG1sTWltZVR5cGUodHlwZSkgJiYgbV9yZWFkYWJsZURhdGEtPmhhc0h0bWwo
KSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBTdHJpbmcgQ2xpcGJvYXJkUXQ6OmdldERhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zdAogCiBib29sIENsaXBib2FyZFF0OjpzZXREYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIGlmIChwb2xpY3koKSAhPSBD
bGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoIW1fd3JpdGFibGVEYXRhKQpAQCAtMTg0LDcgKzE4NCw3IEBA
IGJvb2wgQ2xpcGJvYXJkUXQ6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIGRhdGEpCiAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQogTGlzdEhhc2hTZXQ8U3Ry
aW5nPiBDbGlwYm9hcmRRdDo6dHlwZXMoKSBjb25zdAogewotICAgIGlmIChwb2xpY3koKSAhPSBD
bGlwYm9hcmRSZWFkYWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlKQor
ICAgIGlmICghY2FuUmVhZFR5cGVzKCkpCiAgICAgICAgIHJldHVybiBMaXN0SGFzaFNldDxTdHJp
bmc+KCk7CiAKICAgICBBU1NFUlQobV9yZWFkYWJsZURhdGEpOwpAQCAtMTk3LDcgKzE5Nyw3IEBA
IExpc3RIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkUXQ6OnR5cGVzKCkgY29uc3QKIAogUGFzc1Jl
ZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkUXQ6OmZpbGVzKCkgY29uc3QKIHsKLSAgICBpZiAocG9s
aWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwgIW1fcmVhZGFibGVEYXRhLT5oYXNVcmxzKCkp
CisgICAgaWYgKCFjYW5SZWFkRGF0YSgpIHx8ICFtX3JlYWRhYmxlRGF0YS0+aGFzVXJscygpKQog
ICAgICAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0ZSgpOwogCiAgICAgUmVmUHRyPEZpbGVMaXN0
PiBmaWxlTGlzdCA9IEZpbGVMaXN0OjpjcmVhdGUoKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lk
IENsaXBib2FyZFF0OjpzZXREcmFnSW1hZ2VFbGVtZW50KE5vZGUqIG5vZGUsIGNvbnN0IEludFBv
aW50JiBwb2ludCkKIAogdm9pZCBDbGlwYm9hcmRRdDo6c2V0RHJhZ0ltYWdlKENhY2hlZEltYWdl
KiBpbWFnZSwgTm9kZSAqbm9kZSwgY29uc3QgSW50UG9pbnQgJmxvYykKIHsKLSAgICBpZiAocG9s
aWN5KCkgIT0gQ2xpcGJvYXJkSW1hZ2VXcml0YWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRX
cml0YWJsZSkKKyAgICBpZiAoY2FuU2V0RHJhZ0ltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChtX2RyYWdJbWFnZSkKQEAgLTM1OSw3ICszNTksNyBAQCBQYXNzUmVmUHRyPERhdGFU
cmFuc2Zlckl0ZW1MaXN0PiBDbGlwYm9hcmRRdDo6aXRlbXMoKQogICAgIGlmICghbV9yZWFkYWJs
ZURhdGEpCiAgICAgICAgIHJldHVybiBpdGVtczsKIAotICAgIGlmIChpc0ZvckNvcHlBbmRQYXN0
ZSgpICYmIHBvbGljeSgpID09IENsaXBib2FyZFJlYWRhYmxlKSB7CisgICAgaWYgKGlzRm9yQ29w
eUFuZFBhc3RlKCkgJiYgY2FuUmVhZERhdGEoKSkgewogICAgICAgICBjb25zdCBRU3RyaW5nTGlz
dCB0eXBlcyA9IG1fcmVhZGFibGVEYXRhLT5mb3JtYXRzKCk7CiAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgdHlwZXMuY291bnQoKTsgKytpKQogICAgICAgICAgICAgaXRlbXMtPmFkZFBhc3Rl
Ym9hcmRJdGVtKHR5cGVzLmF0KGkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1MaXN0UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvRGF0YVRyYW5zZmVySXRlbUxpc3RRdC5jcHAKaW5kZXggMTgwNmE3ZjZmNWNjNDBkNWE0
NTk1MjI5ZDc2ZWJlYTZmZTczZWM0Zi4uYzQzNTVhODExNmI5NjU1Y2VlMThmZDg2NTQ4ZmJlNTBm
OWE5NTcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5z
ZmVySXRlbUxpc3RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0YVRy
YW5zZmVySXRlbUxpc3RRdC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRGF0YVRyYW5zZmVySXRlbUxp
c3RRdDo6RGF0YVRyYW5zZmVySXRlbUxpc3RRdChQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIs
IFNjcmkKIAogc2l6ZV90IERhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6Omxlbmd0aCgpIGNvbnN0CiB7
Ci0gICAgaWYgKG1fb3duZXItPnBvbGljeSgpID09IENsaXBib2FyZE51bWIpCisgICAgaWYgKCFt
X293bmVyLT5jYW5SZWFkVHlwZXMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4g
bV9pdGVtcy5zaXplKCk7CkBAIC01NSw3ICs1NSw3IEBAIHNpemVfdCBEYXRhVHJhbnNmZXJJdGVt
TGlzdFF0OjpsZW5ndGgoKSBjb25zdAogCiBQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW0+IERh
dGFUcmFuc2Zlckl0ZW1MaXN0UXQ6Oml0ZW0odW5zaWduZWQgbG9uZyBpbmRleCkKIHsKLSAgICBp
ZiAobV9vd25lci0+cG9saWN5KCkgPT0gQ2xpcGJvYXJkTnVtYiB8fCBpbmRleCA+PSBsZW5ndGgo
KSkKKyAgICBpZiAoIW1fb3duZXItPmNhblJlYWRUeXBlcygpIHx8IGluZGV4ID49IGxlbmd0aCgp
KQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBtX2l0ZW1zW2luZGV4XTsKQEAgLTYz
LDcgKzYzLDcgQEAgUGFzc1JlZlB0cjxEYXRhVHJhbnNmZXJJdGVtPiBEYXRhVHJhbnNmZXJJdGVt
TGlzdFF0OjppdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpCiAKIHZvaWQgRGF0YVRyYW5zZmVySXRl
bUxpc3RRdDo6ZGVsZXRlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKLSAgICBpZiAobV9vd25lci0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpIHsK
KyAgICBpZiAoIW1fb3duZXItPmNhbldyaXRlRGF0YSgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJ
RF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03Niw3ICs3Niw3IEBAIHZv
aWQgRGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6ZGVsZXRlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4
LCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjpjbGVh
cigpCiB7Ci0gICAgaWYgKG1fb3duZXItPnBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQor
ICAgIGlmICghbV9vd25lci0+Y2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1faXRlbXMuY2xlYXIoKTsKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXJJdGVt
TGlzdFF0OjpjbGVhcigpCiAKIHZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6YWRkKGNvbnN0
IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBpZiAobV9vd25lci0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYg
KCFtX293bmVyLT5jYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gT25s
eSBvbmUgJ3N0cmluZycgaXRlbSB3aXRoIGEgZ2l2ZW4gdHlwZSBpcyBhbGxvd2VkIGluIHRoZSBj
b2xsZWN0aW9uLgpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3RR
dDo6YWRkKGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpCiAK
IHZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6YWRkKFBhc3NSZWZQdHI8RmlsZT4gZmlsZSkK
IHsKLSAgICBpZiAobV9vd25lci0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUgfHwgIWZp
bGUpCisgICAgaWYgKCFtX293bmVyLT5jYW5Xcml0ZURhdGEoKSB8fCAhZmlsZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9pdGVtcy5hcHBlbmQoRGF0YVRyYW5zZmVySXRlbTo6Y3JlYXRlKG1f
b3duZXIsIG1fY29udGV4dCwgZmlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0RhdGFUcmFuc2Zlckl0ZW1RdC5jcHAKaW5kZXggOWZmNjIxZWY0OTgzNDk2YTAzYjhmYTc2
OGY5Mzg3NmM5OGIxZWExZC4uZDdlOWI3NzlhMjE1MjhkOTdlNTE0YzViMDA0YzZlODE1OTEyMTBk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRl
bVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVt
UXQuY3BwCkBAIC05NSw4ICs5NSw3IEBAIERhdGFUcmFuc2Zlckl0ZW1RdDo6RGF0YVRyYW5zZmVy
SXRlbVF0KFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBvd25lciwKIAogdm9pZCBEYXRhVHJhbnNmZXJJ
dGVtUXQ6OmdldEFzU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+IGNhbGxiYWNrKSBj
b25zdAogewotICAgIGlmICgob3duZXIoKS0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUg
JiYgb3duZXIoKS0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCi0gICAgICAgIHx8IGtp
bmQoKSAhPSBraW5kU3RyaW5nKQorICAgIGlmICghb3duZXIoKS0+cG9saWN5KCktPmNhblJlYWRE
YXRhKCkgfHwga2luZCgpICE9IGtpbmRTdHJpbmcpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX2RhdGFTb3VyY2UgPT0gSW50ZXJuYWxTb3VyY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXggYzJmOTk2NDk2OTliNjQ5ZWVlNmFlY2Jl
ZmRjZDIzZWY5MTAxYzJlMy4uYjkyZmM4N2Y1OTQ4NGQzNzU3MGJlNmM5Zjk5YjA5N2Q0ZWM2ZmI4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKQEAg
LTQwNyw3ICs0MDcsNyBAQCB2b2lkIENsaXBib2FyZFdpbjo6Y2xlYXJEYXRhKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBiZSBhYmxlIHRvIHdyaXRlIHRvIHRo
ZSBzeXN0ZW0gY2xpcGJvYXJkIDxyZGFyOi8vcHJvYmxlbS81MDE1OTQxPgogICAgIEFTU0VSVChp
c0ZvckRyYWdBbmREcm9wKCkpOwotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJs
ZSB8fCAhbV93cml0YWJsZURhdGFPYmplY3QpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSB8fCAh
bV93cml0YWJsZURhdGFPYmplY3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIENsaXBib2FyZERh
dGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZSh0eXBlKTsKQEAgLTQy
Nyw3ICs0MjcsNyBAQCB2b2lkIENsaXBib2FyZFdpbjo6Y2xlYXJBbGxEYXRhKCkKIHsKICAgICAv
LyBGSVhNRTogTmVlZCB0byBiZSBhYmxlIHRvIHdyaXRlIHRvIHRoZSBzeXN0ZW0gY2xpcGJvYXJk
IDxyZGFyOi8vcHJvYmxlbS81MDE1OTQxPgogICAgIEFTU0VSVChpc0ZvckRyYWdBbmREcm9wKCkp
OwotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldy
aXRlRGF0YSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV93cml0YWJsZURhdGFPYmpl
Y3QgPSAwOwpAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgQ2xpcGJvYXJkV2luOjpjbGVhckFsbERh
dGEoKQogCiBTdHJpbmcgQ2xpcGJvYXJkV2luOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKIHsgICAgIAotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSB8fCAo
IW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1wdHkoKSkpCisgICAgaWYgKCFjYW5S
ZWFkRGF0YSgpIHx8ICghbV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0RhdGFNYXAuaXNFbXB0eSgpKSkK
ICAgICAgICAgcmV0dXJuICIiOwogCiAgICAgQ2xpcGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUgPSBj
bGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKHR5cGUpOwpAQCAtNDU5LDcgKzQ1OSw3IEBAIGJvb2wg
Q2xpcGJvYXJkV2luOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBk
YXRhKQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlIHN5
c3RlbSBjbGlwYm9hcmQgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NDE+CiAgICAgQVNTRVJUKGlzRm9y
RHJhZ0FuZERyb3AoKSk7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlIHx8
ICFtX3dyaXRhYmxlRGF0YU9iamVjdCkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpIHx8ICFtX3dy
aXRhYmxlRGF0YU9iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ2xpcGJvYXJk
RGF0YVR5cGUgd2luVHlwZSA9IGNsaXBib2FyZFR5cGVGcm9tTUlNRVR5cGUodHlwZSk7CkBAIC01
MDIsNyArNTAyLDcgQEAgc3RhdGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNo
U2V0PFN0cmluZz4mIHJlc3VsdHMsIGNvbnN0IEZPUk1BVEVUQyYKIExpc3RIYXNoU2V0PFN0cmlu
Zz4gQ2xpcGJvYXJkV2luOjp0eXBlcygpIGNvbnN0CiB7IAogICAgIExpc3RIYXNoU2V0PFN0cmlu
Zz4gcmVzdWx0czsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUgJiYgcG9s
aWN5KCkgIT0gQ2xpcGJvYXJkVHlwZXNSZWFkYWJsZSkKKyAgICBpZiAoIWNhblJlYWRUeXBlcygp
KQogICAgICAgICByZXR1cm4gcmVzdWx0czsKIAogICAgIGlmICghbV9kYXRhT2JqZWN0ICYmIG1f
ZHJhZ0RhdGFNYXAuaXNFbXB0eSgpKQpAQCAtNTQwLDcgKzU0MCw3IEBAIFBhc3NSZWZQdHI8Rmls
ZUxpc3Q+IENsaXBib2FyZFdpbjo6ZmlsZXMoKSBjb25zdAogICAgIHJldHVybiAwOwogI2Vsc2UK
ICAgICBSZWZQdHI8RmlsZUxpc3Q+IGZpbGVzID0gRmlsZUxpc3Q6OmNyZWF0ZSgpOwotICAgIGlm
IChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRU
eXBlc1JlYWRhYmxlKQorICAgIGlmICghY2FuUmVhZERhdGEoKSkKICAgICAgICAgcmV0dXJuIGZp
bGVzLnJlbGVhc2UoKTsKIAogICAgIGlmICghbV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0RhdGFNYXAu
aXNFbXB0eSgpKQpAQCAtNTc4LDcgKzU3OCw3IEBAIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IENsaXBi
b2FyZFdpbjo6ZmlsZXMoKSBjb25zdAogCiB2b2lkIENsaXBib2FyZFdpbjo6c2V0RHJhZ0ltYWdl
KENhY2hlZEltYWdlKiBpbWFnZSwgTm9kZSAqbm9kZSwgY29uc3QgSW50UG9pbnQgJmxvYykKIHsK
LSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkSW1hZ2VXcml0YWJsZSAmJiBwb2xpY3koKSAh
PSBDbGlwYm9hcmRXcml0YWJsZSkgCisgICAgaWYgKGNhblNldERyYWdJbWFnZSgpKQogICAgICAg
ICByZXR1cm47CiAgICAgICAgIAogICAgIGlmIChtX2RyYWdJbWFnZSkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzYjU2M2Q0
YTQ5Nzg1Y2EzZDU3ODFmMDI0NmVjYWE2MjhiY2Y0N2ZiLi5lZTQ1M2ZmOTZjM2U1Mjc3ZjUyNjhk
ODFmYTQyNjE3ZjY4ZDIyNTg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMtMjEgIERh
bmllbCBDaGVuZyAgPGRjaGVuZ0Bnb29nbGUuY29tPgorCisgICAgICAgIERhdGEgc3RvcmUgc2hv
dWxkIGJlIHJlYWRhYmxlIGluIGRyYWdzdGFydC9jb3B5L2N1dCBldmVudHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjk1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQv
Y2FuLXJlYWQtaW4tY29weS1hbmQtY3V0LWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1jb3B5LWFuZC1jdXQtZXZlbnRz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1k
cmFnc3RhcnQtZXZlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bh
c3RlYm9hcmQvY2FuLXJlYWQtaW4tZHJhZ3N0YXJ0LWV2ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEz
LTAzLTIxICBIYXJhbGQgQWx2ZXN0cmFuZCAgPGh0YUBnb29nbGUuY29tPgogCiAgICAgICAgIEV4
cG9zZSB0aGUgVHlwZSBmaWVsZCBvZiBhbiBSVENTdGF0c1JlcG9ydApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWNvcHktYW5kLWN1dC1ldmVu
dHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFk
LWluLWNvcHktYW5kLWN1dC1ldmVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4YzRhZWM4
NGEzZmZhMTc0M2M1M2U4M2I0ZTc5NDJlZjc0ZDM4MTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tY29weS1hbmQtY3V0LWV2ZW50
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitTaW1wbGUgdGVzdCB0aGF0IGRhdGEgc2V0
IGR1cmluZyBhIGNvcHkvY3V0IGV2ZW50IGNhbiBiZSByZWFkIGJhY2suIFRvIHJ1biB0aGUgdGVz
dCBtYW51YWxseSwgc2ltcGx5IHNlbGVjdCBhbnkgdGV4dCBhbmQgaW5pdGlhdGUgYSBjb3B5L2N1
dCBvcGVyYXRpb24uCisKK2NvcHk6IFNVQ0NFU1MKK2N1dDogU1VDQ0VTUworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tY29weS1hbmQtY3V0
LWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWlu
LWNvcHktYW5kLWN1dC1ldmVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Njk0ODMyNDkwMzU1OTRhMDA5
MTEwODk1ZTRmYzQwOGFlMWVmYThlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWNvcHktYW5kLWN1dC1ldmVudHMuaHRtbApAQCAt
MCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gbG9nKHRleHQpIHsKKyAgICB2YXIgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2xvZycpOworICAgIGxvZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0
ZXh0KSk7CisgICAgbG9nLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykp
OworfQorCitmdW5jdGlvbiBjb3B5VGVzdChlKSB7CisgICAgZS5jbGlwYm9hcmREYXRhLnNldERh
dGEoJ3RleHQvcGxhaW4nLCAnY29weSB0ZXN0Jyk7CisgICAgaWYgKGV2ZW50LmNsaXBib2FyZERh
dGEudHlwZXMuaW5kZXhPZigndGV4dC9wbGFpbicpIDwgMCB8fAorICAgICAgICBldmVudC5jbGlw
Ym9hcmREYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKSAhPSAnY29weSB0ZXN0JykKKyAgICAgICAg
bG9nKCdjb3B5OiBGQUlMRUQnKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygnY29weTogU1VDQ0VT
UycpOworfQorCitmdW5jdGlvbiBjdXRUZXN0KGUpIHsKKyAgICBlLmNsaXBib2FyZERhdGEuc2V0
RGF0YSgndGV4dC9wbGFpbicsICdjdXQgdGVzdCcpOworICAgIGlmIChldmVudC5jbGlwYm9hcmRE
YXRhLnR5cGVzLmluZGV4T2YoJ3RleHQvcGxhaW4nKSA8IDAgfHwKKyAgICAgICAgZXZlbnQuY2xp
cGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJykgIT0gJ2N1dCB0ZXN0JykKKyAgICAgICAg
bG9nKCdjdXQ6IEZBSUxFRCcpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCdjdXQ6IFNVQ0NFU1Mn
KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICByZXR1cm47CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgZG9j
dW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY3V0
Jyk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIiBvbmNv
cHk9ImNvcHlUZXN0KGV2ZW50KSIgb25jdXQ9ImN1dFRlc3QoZXZlbnQpIj4KKzxwPlNpbXBsZSB0
ZXN0IHRoYXQgZGF0YSBzZXQgZHVyaW5nIGEgY29weS9jdXQgZXZlbnQgY2FuIGJlIHJlYWQgYmFj
ay4gVG8gcnVuCit0aGUgdGVzdCBtYW51YWxseSwgc2ltcGx5IHNlbGVjdCBhbnkgdGV4dCBhbmQg
aW5pdGlhdGUgYSBjb3B5L2N1dCBvcGVyYXRpb24uCis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFk
LWluLWRyYWdzdGFydC1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvY2FuLXJlYWQtaW4tZHJhZ3N0YXJ0LWV2ZW50LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMjQwM2UwYmFmZGIwZjhkNzI1ZjdkNTMxMmY4YjA3ODA1MGI0MDQ3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWRyYWdz
dGFydC1ldmVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitTaW1wbGUgdGVzdCB0aGF0
IGRhdGEgc2V0IGR1cmluZyBhIGRyYWdzdGFydCBldmVudCBjYW4gYmUgcmVhZCBiYWNrLiBUbyBy
dW4gdGhlIHRlc3QgbWFudWFsbHksIHNpbXBseSBzdGFydCBkcmFnZ2luZyB0aGUgJ0RyYWcgTWUn
IGVsZW1lbnQgYmVsb3cuCisKK0RyYWcgTWUKK2RyYWdzdGFydDogU1VDQ0VTUworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tZHJhZ3N0YXJ0
LWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4t
ZHJhZ3N0YXJ0LWV2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYxZTVlOGZmNzg2NzdjMDU0NjU3MDYy
YWM2OGJkMGIxMTQxOTQ5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9jYW4tcmVhZC1pbi1kcmFnc3RhcnQtZXZlbnQuaHRtbApAQCAtMCwwICsxLDQy
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24g
bG9nKHRleHQpIHsKKyAgICB2YXIgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycp
OworICAgIGxvZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7Cisg
ICAgbG9nLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOworfQorCitm
dW5jdGlvbiBkcmFnU3RhcnRUZXN0KGUpIHsKKyAgICBlLmRhdGFUcmFuc2Zlci5zZXREYXRhKCd0
ZXh0L3BsYWluJywgJ2RyYWdzdGFydCB0ZXN0Jyk7CisgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zl
ci50eXBlcy5pbmRleE9mKCd0ZXh0L3BsYWluJykgPCAwIHx8CisgICAgICAgIGV2ZW50LmRhdGFU
cmFuc2Zlci5nZXREYXRhKCd0ZXh0L3BsYWluJykgIT0gJ2RyYWdzdGFydCB0ZXN0JykKKyAgICAg
ICAgbG9nKCdkcmFnc3RhcnQ6IEZBSUxFRCcpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCdkcmFn
c3RhcnQ6IFNVQ0NFU1MnKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIXdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICByZXR1cm47CisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisKKyAgICB2YXIgZHJhZ2dlZEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZHJhZ2dlZEVsZW1lbnQnKTsKKyAgICB2YXIgeCA9IGRyYWdnZWRFbGVtZW50Lm9mZnNldExl
ZnQgKyBkcmFnZ2VkRWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgdmFyIHkgPSBkcmFnZ2Vk
RWxlbWVudC5vZmZzZXRUb3AgKyBkcmFnZ2VkRWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworCisg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VE
b3duKCk7CisgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAwKTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyh4ICsgMTAwLCB5ICsgMTAwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxw
PlNpbXBsZSB0ZXN0IHRoYXQgZGF0YSBzZXQgZHVyaW5nIGEgZHJhZ3N0YXJ0IGV2ZW50IGNhbiBi
ZSByZWFkIGJhY2suIFRvIHJ1bgordGhlIHRlc3QgbWFudWFsbHksIHNpbXBseSBzdGFydCBkcmFn
Z2luZyB0aGUgJ0RyYWcgTWUnIGVsZW1lbnQgYmVsb3cuCis8ZGl2IGlkPSJkcmFnZ2VkRWxlbWVu
dCIgZHJhZ2dhYmxlPSJ0cnVlIiBvbmRyYWdzdGFydD0iZHJhZ1N0YXJ0VGVzdChldmVudCkiPkRy
YWcgTWU8L2Rpdj4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194606</attachid>
            <date>2013-03-22 11:46:34 -0700</date>
            <delta_ts>2013-03-22 11:50:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-23695-20130322114222.patch</filename>
            <type>text/plain</type>
            <size>34457</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ1NzNlMjZmNDNhNDYw
N2I4MDUyNzRhMjA5MWY5MmFhY2I4Mzc1Yy4uZmRlNzYzMTI3ZDMyNDExYzNjMGEzODY5YmJiMzkx
NTAxZGZiNzZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEzLTAzLTIyICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERhdGEgc3RvcmUgc2hv
dWxkIGJlIHJlYWRhYmxlIGluIGRyYWdzdGFydC9jb3B5L2N1dCBldmVudHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjk1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgd2VyZSBzZXZlcmFsIGV2
ZW50cyB3aGVyZSBkYXRhIGNvdWxkIGJlIHdyaXR0ZW4gYnV0IG5vdCByZWFkIGJhY2sgZHVlIHRv
IHRoZSBmYWN0IHRoYXQKKyAgICAgICAgZGlmZmVyZW50IENsaXBib2FyZCBtZXRob2QgaW1wbGVt
ZW50YXRpb25zIGNoZWNrZWQgcGVybWlzc2lvbnMgaW5jb25zaXN0ZW50bHkuIFRoaXMgcGF0Y2gK
KyAgICAgICAgYWRkcyBoZWxwZXIgbWV0aG9kcyB0byBjaGVjayBpZiBhbiBvcGVyYXRpb24gaXMg
cGVybWl0dGVkIG9uIGEgQ2xpcGJvYXJkIGFuZCByZWZhY3RvcnMgYWxsCisgICAgICAgIGRpcmVj
dCBjb21wYXJpc29ucyBhZ2FpbnN0IENsaXBib2FyZDo6bV9wb2xpY3kgdG8gdXNlIHRoZSBuZXcg
aGVscGVycyBpbnN0ZWFkLgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3Bhc3RlYm9hcmQvY2Fu
LXJlYWQtaW4tY29weS1hbmQtY3V0LWV2ZW50cy5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5n
L3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tZHJhZ3N0YXJ0LWV2ZW50Lmh0bWwKKworICAgICAgICAq
IGRvbS9DbGlwYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjYW5SZWFk
VHlwZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6
OmNhblJlYWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6Y2FuV3JpdGVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6Y2FuU2V0RHJhZ0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6aGFzRmlsZU9mVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmQ6Omhhc1N0cmluZ09mVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmQ6OnNldERyb3BFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpzZXRFZmZl
Y3RBbGxvd2VkKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmg6CisgICAgICAgIChDbGlwYm9h
cmQpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ2xpcGJvYXJkQmxhY2tCZXJyeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRCbGFja0JlcnJ5OjpjbGVhckRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQmxhY2tCZXJyeTo6Y2xlYXJBbGxEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEJsYWNrQmVycnk6OmdldERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkQmxhY2tCZXJyeTo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRCbGFja0JlcnJ5Ojp0eXBlcyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
SXRlbVBvbGljeVdyYXBwZXI6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
SXRlbVBvbGljeVdyYXBwZXI6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
SXRlbVBvbGljeVdyYXBwZXI6OmdldEFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlckl0ZW1Qb2xpY3lXcmFwcGVyOjpnZXRBc0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkQ2hyb21pdW06OmNsZWFyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRDaHJvbWl1bTo6Y2xlYXJBbGxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENo
cm9taXVtOjpnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVtOjpz
ZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVtOjp0eXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6ZmlsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OnNldERyYWdJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL0NsaXBib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6
OmNsZWFyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmNsZWFyQWxsRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmdldERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEd0azo6dHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpmaWxlcyk6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OnNldERyYWdJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZE1hYzo6Y2xlYXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZE1hYzo6Y2xl
YXJBbGxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZE1hYzo6Z2V0RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkTWFjOjp0eXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6
OmZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZE1hYzo6c2V0RHJhZ0ltYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRRdDo6Y2xlYXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0
OjpjbGVhckFsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OmdldERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OnNldERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkUXQ6OnR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0
OjpmaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6c2V0RHJhZ0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjppdGVtcyk6CisgICAgICAgICogcGxhdGZv
cm0vcXQvRGF0YVRyYW5zZmVySXRlbUxpc3RRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
VHJhbnNmZXJJdGVtTGlzdFF0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5z
ZmVySXRlbUxpc3RRdDo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVt
TGlzdFF0OjpkZWxldGVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1M
aXN0UXQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6
OmFkZCk6CisgICAgICAgICogcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbVF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1RdDo6Z2V0QXNTdHJpbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkV2luOjpjbGVhckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpj
bGVhckFsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpnZXREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRXaW46OnR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdp
bjo6ZmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpzZXREcmFnSW1hZ2Up
OgorCiAyMDEzLTAzLTIxICBIYXJhbGQgQWx2ZXN0cmFuZCAgPGh0YUBnb29nbGUuY29tPgogCiAg
ICAgICAgIEV4cG9zZSB0aGUgVHlwZSBmaWVsZCBvZiBhbiBSVENTdGF0c1JlcG9ydApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2xpcGJvYXJkLmNwcAppbmRleCAwMjc5OTI1MTUyZWUyYjExZTFkMTkxMDJiNTkwMzI5YmUz
MmQzYWQ2Li40Mjg2MDgyNWFhNzg1ZGUzNTVkZmQ3Nzg3ZDU2ZWNmNTcyYTY0NTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ2xpcGJvYXJkLmNwcApAQCAtNTEsNiArNTEsMjYgQEAgdm9pZCBDbGlwYm9hcmQ6OnNl
dEFjY2Vzc1BvbGljeShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQogICAgIG1fcG9saWN5
ID0gcG9saWN5OwogfQogCitib29sIENsaXBib2FyZDo6Y2FuUmVhZFR5cGVzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wb2xpY3kgPT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwgbV9wb2xpY3kgPT0g
Q2xpcGJvYXJkVHlwZXNSZWFkYWJsZSB8fCBtX3BvbGljeSA9PSBDbGlwYm9hcmRXcml0YWJsZTsK
K30KKworYm9vbCBDbGlwYm9hcmQ6OmNhblJlYWREYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9wb2xpY3kgPT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwgbV9wb2xpY3kgPT0gQ2xpcGJvYXJkV3Jp
dGFibGU7Cit9CisKK2Jvb2wgQ2xpcGJvYXJkOjpjYW5Xcml0ZURhdGEoKSBjb25zdAoreworICAg
IHJldHVybiBtX3BvbGljeSA9PSBDbGlwYm9hcmRXcml0YWJsZTsKK30KKworYm9vbCBDbGlwYm9h
cmQ6OmNhblNldERyYWdJbWFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcG9saWN5ID09IENs
aXBib2FyZEltYWdlV3JpdGFibGUgfHwgbV9wb2xpY3kgPT0gQ2xpcGJvYXJkV3JpdGFibGU7Cit9
CisKIC8vIFRoZXNlICJjb252ZXJzaW9uIiBtZXRob2RzIGFyZSBjYWxsZWQgYnkgYm90aCBXZWJD
b3JlIGFuZCBXZWJLaXQsIGFuZCBuZXZlciBtYWtlIHNlbnNlIHRvIEpTLCBzbyB3ZSBkb24ndAog
Ly8gd29ycnkgYWJvdXQgc2VjdXJpdHkgZm9yIHRoZXNlLiBUaGV5IGRvbid0IGFsbG93IGFjY2Vz
cyB0byB0aGUgcGFzdGVib2FyZCBhbnl3YXkuCiAKQEAgLTEyOCw3ICsxNDgsNyBAQCB2b2lkIENs
aXBib2FyZDo6c2V0RGVzdGluYXRpb25PcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcCkKIAogYm9v
bCBDbGlwYm9hcmQ6Omhhc0ZpbGVPZlR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewot
ICAgIGlmIChtX3BvbGljeSAhPSBDbGlwYm9hcmRSZWFkYWJsZSAmJiBtX3BvbGljeSAhPSBDbGlw
Ym9hcmRUeXBlc1JlYWRhYmxlKQorICAgIGlmICghY2FuUmVhZFR5cGVzKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKICAgICBSZWZQdHI8RmlsZUxpc3Q+IGZpbGVMaXN0ID0gZmlsZXMo
KTsKQEAgLTE0NCw3ICsxNjQsNyBAQCBib29sIENsaXBib2FyZDo6aGFzRmlsZU9mVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAKIGJvb2wgQ2xpcGJvYXJkOjpoYXNTdHJpbmdPZlR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewotICAgIGlmIChtX3BvbGljeSAhPSBDbGlwYm9h
cmRSZWFkYWJsZSAmJiBtX3BvbGljeSAhPSBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlKQorICAgIGlm
ICghY2FuUmVhZFR5cGVzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICByZXR1
cm4gdHlwZXMoKS5jb250YWlucyh0eXBlKTsgCkBAIC0xNTksOCArMTc5LDcgQEAgdm9pZCBDbGlw
Ym9hcmQ6OnNldERyb3BFZmZlY3QoY29uc3QgU3RyaW5nICZlZmZlY3QpCiAgICAgaWYgKGVmZmVj
dCAhPSAibm9uZSIgJiYgZWZmZWN0ICE9ICJjb3B5IiAgJiYgZWZmZWN0ICE9ICJsaW5rIiAmJiBl
ZmZlY3QgIT0gIm1vdmUiKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9wb2xpY3kgPT0g
Q2xpcGJvYXJkUmVhZGFibGUgfHwgbV9wb2xpY3kgPT0gQ2xpcGJvYXJkVHlwZXNSZWFkYWJsZSkK
LSAgICAgICAgbV9kcm9wRWZmZWN0ID0gZWZmZWN0OworICAgIG1fZHJvcEVmZmVjdCA9IGVmZmVj
dDsKIH0KIAogdm9pZCBDbGlwYm9hcmQ6OnNldEVmZmVjdEFsbG93ZWQoY29uc3QgU3RyaW5nICZl
ZmZlY3QpCkBAIC0xNzksNyArMTk4LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OnNldEVmZmVjdEFsbG93
ZWQoY29uc3QgU3RyaW5nICZlZmZlY3QpCiAgICAgfQogCiAKLSAgICBpZiAobV9wb2xpY3kgPT0g
Q2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKGNhbldyaXRlRGF0YSgpKQogICAgICAgICBtX2Vm
ZmVjdEFsbG93ZWQgPSBlZmZlY3Q7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgKaW5kZXgg
ZDExYjY1MmEyMTlhYjYwYzM1MzVmZWIwYTEyODBiNWQ3YWNmZjc2Mi4uODg2NDU4NDJhNDk5ZGJk
YjI5ZjVlODg3NGU0ZmI3YTIzOWIxMWMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NsaXBib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaApAQCAtODYs
NyArODYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFz
RGF0YSgpID0gMDsKICAgICAgICAgCiAgICAgICAgIHZvaWQgc2V0QWNjZXNzUG9saWN5KENsaXBi
b2FyZEFjY2Vzc1BvbGljeSk7Ci0gICAgICAgIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ko
KSBjb25zdCB7IHJldHVybiBtX3BvbGljeTsgfQorICAgICAgICBib29sIGNhblJlYWRUeXBlcygp
IGNvbnN0OworICAgICAgICBib29sIGNhblJlYWREYXRhKCkgY29uc3Q7CisgICAgICAgIGJvb2wg
Y2FuV3JpdGVEYXRhKCkgY29uc3Q7CisgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgc3BlYyBkb2Vz
bid0IGFjdHVhbGx5IGFsbG93IGRyYWcgaW1hZ2UgbW9kaWZpY2F0aW9uIG91dHNpZGUgdGhlIGRy
YWdzdGFydAorICAgICAgICAvLyBldmVudC4gVGhpcyBjYXBhYmlsaXR5IGlzIG1haW50YWluZWQg
Zm9yIGJhY2t3YXJkcyBjb21wYXRpYmxpdHkgZm9yIHBvcnRzIHRoYXQgaGF2ZQorICAgICAgICAv
LyBzdXBwb3J0ZWQgdGhpcyBpbiB0aGUgcGFzdC4gT24gbWFueSBwb3J0cywgYXR0ZW1wdGluZyB0
byBzZXQgYSBkcmFnIGltYWdlIG91dHNpZGUgdGhlCisgICAgICAgIC8vIGRyYWdzdGFydCBvcGVy
YXRpb24gaXMgYSBuby1vcCBhbnl3YXkuCisgICAgICAgIGJvb2wgY2FuU2V0RHJhZ0ltYWdlKCkg
Y29uc3Q7CiAKICAgICAgICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24oKSBjb25zdDsK
ICAgICAgICAgRHJhZ09wZXJhdGlvbiBkZXN0aW5hdGlvbk9wZXJhdGlvbigpIGNvbnN0OwpAQCAt
MTA5LDcgKzExNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAg
ICBib29sIGhhc0ZpbGVPZlR5cGUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgICAgIGJvb2wg
aGFzU3RyaW5nT2ZUeXBlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgICAgICAKKworICAgICAg
ICAvLyBJbnN0ZWFkIG9mIHVzaW5nIHRoaXMgbWVtYmVyIGRpcmVjdGx5LCBwcmVmZXIgdG8gdXNl
IHRoZSBjYW4qKCkgbWV0aG9kcyBhYm92ZS4KICAgICAgICAgQ2xpcGJvYXJkQWNjZXNzUG9saWN5
IG1fcG9saWN5OwogICAgICAgICBTdHJpbmcgbV9kcm9wRWZmZWN0OwogICAgICAgICBTdHJpbmcg
bV9lZmZlY3RBbGxvd2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9DbGlwYm9hcmRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvQ2xpcGJvYXJkQmxhY2tCZXJyeS5jcHAKaW5kZXggYWRlMjJlZjQ3ZWJmMTA0
NGUyMGFhNmM5ZTI2NjQ5YTdlZjIwNDU0ZC4uNjBhNDRiMjYyNGZhMjhlOGUzYjc4MjhlNDNmZGM4
MTEyYTI2ZTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9DbGlwYm9hcmRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L0NsaXBib2FyZEJsYWNrQmVycnkuY3BwCkBAIC00Miw3ICs0Miw3IEBAIENsaXBi
b2FyZEJsYWNrQmVycnk6On5DbGlwYm9hcmRCbGFja0JlcnJ5KCkKIAogdm9pZCBDbGlwYm9hcmRC
bGFja0JlcnJ5OjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIGlmIChwb2xp
Y3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjpjbGVh
ckNsaXBib2FyZEJ5VHlwZSh0eXBlLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNTAsNyArNTAsNyBAQCB2
b2lkIENsaXBib2FyZEJsYWNrQmVycnk6OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiAK
IHZvaWQgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6Y2xlYXJBbGxEYXRhKCkKIHsKLSAgICBpZiAocG9s
aWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6Y2xl
YXJDbGlwYm9hcmQoKTsKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBDbGlwYm9hcmRCbGFja0JlcnJ5
OjpjbGVhckFsbERhdGEoKQogCiBTdHJpbmcgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6Z2V0RGF0YShj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2Fy
ZFJlYWRhYmxlKQorICAgIGlmICghY2FuUmVhZERhdGEoKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkNsaXBib2FyZDo6cmVhZENsaXBib2FyZEJ5VHlwZSh0eXBlLnV0ZjgoKS5kYXRhKCkpLmNfc3Ry
KCkpOwpAQCAtNjYsNyArNjYsNyBAQCBTdHJpbmcgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6Z2V0RGF0
YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAKIGJvb2wgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6
c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBp
ZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHR5cGUgPT0gInRleHQvcGxhaW4i
KQpAQCAtODAsNyArODAsNyBAQCBib29sIENsaXBib2FyZEJsYWNrQmVycnk6OnNldERhdGEoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQpCiAKIExpc3RIYXNoU2V0PFN0cmlu
Zz4gQ2xpcGJvYXJkQmxhY2tCZXJyeTo6dHlwZXMoKSBjb25zdAogewotICAgIGlmIChwb2xpY3ko
KSAhPSBDbGlwYm9hcmRSZWFkYWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRUeXBlc1JlYWRh
YmxlKQorICAgIGlmICghY2FuUmVhZFR5cGVzKCkpCiAgICAgICAgIHJldHVybiBMaXN0SGFzaFNl
dDxTdHJpbmc+KCk7CiAKICAgICAvLyBXZSB1c2UgaGFyZGNvZGVkIGxpc3QgaGVyZSBzaW5jZSB0
aGVyZSBzZWVtcyB0byBiZSBubyBBUEkgdG8gZ2V0IHRoZSBsaXN0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCmluZGV4
IGZjMzcyNzhkNmI5MjI3M2FkODk1MjE1NzJlYjVkODRkYmFlOTIxODkuLmQwOTA1ZjI4NjZmNjUy
ZDA3ZGM2ZGViM2VlOGQzODc4NzU4ZjhhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTg5LDE0ICs4OSwx
NCBAQCBEYXRhVHJhbnNmZXJJdGVtTGlzdFBvbGljeVdyYXBwZXI6On5EYXRhVHJhbnNmZXJJdGVt
TGlzdFBvbGljeVdyYXBwZXIoKQogCiBzaXplX3QgRGF0YVRyYW5zZmVySXRlbUxpc3RQb2xpY3lX
cmFwcGVyOjpsZW5ndGgoKSBjb25zdAogewotICAgIGlmIChtX2NsaXBib2FyZC0+cG9saWN5KCkg
PT0gQ2xpcGJvYXJkTnVtYikKKyAgICBpZiAoIW1fY2xpcGJvYXJkLT5jYW5SZWFkVHlwZXMoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIG1fZGF0YU9iamVjdC0+bGVuZ3RoKCk7CiB9
CiAKIFBhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4gRGF0YVRyYW5zZmVySXRlbUxpc3RQb2xp
Y3lXcmFwcGVyOjppdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpCiB7Ci0gICAgaWYgKG1fY2xpcGJv
YXJkLT5wb2xpY3koKSA9PSBDbGlwYm9hcmROdW1iKQorICAgIGlmICghbV9jbGlwYm9hcmQtPmNh
blJlYWRUeXBlcygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBSZWZQdHI8Q2hyb21pdW1EYXRh
T2JqZWN0SXRlbT4gaXRlbSA9IG1fZGF0YU9iamVjdC0+aXRlbShpbmRleCk7CiAgICAgaWYgKCFp
dGVtKQpAQCAtMTA3LDcgKzEwNyw3IEBAIFBhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4gRGF0
YVRyYW5zZmVySXRlbUxpc3RQb2xpY3lXcmFwcGVyOjppdGVtKHVuc2lnbmVkIGxvCiAKIHZvaWQg
RGF0YVRyYW5zZmVySXRlbUxpc3RQb2xpY3lXcmFwcGVyOjpkZWxldGVJdGVtKHVuc2lnbmVkIGxv
bmcgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChtX2NsaXBib2FyZC0+cG9s
aWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpIHsKKyAgICBpZiAoIW1fY2xpcGJvYXJkLT5jYW5X
cml0ZURhdGEoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTE2LDIxICsxMTYsMjEgQEAgdm9pZCBEYXRhVHJhbnNmZXJJdGVt
TGlzdFBvbGljeVdyYXBwZXI6OmRlbGV0ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0
aW8KIAogdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFBvbGljeVdyYXBwZXI6OmNsZWFyKCkKIHsK
LSAgICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAg
IGlmICghbV9jbGlwYm9hcmQtPmNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47CiAgICAg
bV9kYXRhT2JqZWN0LT5jbGVhckFsbCgpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0
UG9saWN5V3JhcHBlcjo6YWRkKGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBl
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpICE9
IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghbV9jbGlwYm9hcmQtPmNhbldyaXRlRGF0YSgp
KQogICAgICAgICByZXR1cm47CiAgICAgbV9kYXRhT2JqZWN0LT5hZGQoZGF0YSwgdHlwZSwgZWMp
OwogfQogCiB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0UG9saWN5V3JhcHBlcjo6YWRkKFBhc3NS
ZWZQdHI8RmlsZT4gZmlsZSkKIHsKLSAgICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpICE9IENs
aXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghbV9jbGlwYm9hcmQtPmNhbldyaXRlRGF0YSgpKQog
ICAgICAgICByZXR1cm47CiAgICAgbV9kYXRhT2JqZWN0LT5hZGQoZmlsZSwgbV9jbGlwYm9hcmQt
PmZyYW1lKCktPmRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CkBAIC0x
NTYsMjEgKzE1NiwyMSBAQCBEYXRhVHJhbnNmZXJJdGVtUG9saWN5V3JhcHBlcjo6fkRhdGFUcmFu
c2Zlckl0ZW1Qb2xpY3lXcmFwcGVyKCkKIAogU3RyaW5nIERhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lX
cmFwcGVyOjpraW5kKCkgY29uc3QKIHsKLSAgICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpID09
IENsaXBib2FyZE51bWIpCisgICAgaWYgKCFtX2NsaXBib2FyZC0+Y2FuUmVhZFR5cGVzKCkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gbV9pdGVtLT5raW5kKCk7CiB9CiAK
IFN0cmluZyBEYXRhVHJhbnNmZXJJdGVtUG9saWN5V3JhcHBlcjo6dHlwZSgpIGNvbnN0CiB7Ci0g
ICAgaWYgKG1fY2xpcGJvYXJkLT5wb2xpY3koKSA9PSBDbGlwYm9hcmROdW1iKQorICAgIGlmICgh
bV9jbGlwYm9hcmQtPmNhblJlYWRUeXBlcygpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAg
ICAgcmV0dXJuIG1faXRlbS0+dHlwZSgpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlckl0ZW1Qb2xp
Y3lXcmFwcGVyOjpnZXRBc1N0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBjYWxsYmFj
aykgY29uc3QKIHsKLSAgICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpICE9IENsaXBib2FyZFJl
YWRhYmxlICYmIG1fY2xpcGJvYXJkLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAg
ICBpZiAoIW1fY2xpcGJvYXJkLT5jYW5SZWFkRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX2l0ZW0tPmdldEFzU3RyaW5nKGNhbGxiYWNrLCBtX2NsaXBib2FyZC0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCB2
b2lkIERhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lXcmFwcGVyOjpnZXRBc1N0cmluZyhQYXNzUmVmUHRy
PFN0cmluZ0NhbGxiYWNrPiBjYWxsYgogCiBQYXNzUmVmUHRyPEJsb2I+IERhdGFUcmFuc2Zlckl0
ZW1Qb2xpY3lXcmFwcGVyOjpnZXRBc0ZpbGUoKSBjb25zdAogewotICAgIGlmIChtX2NsaXBib2Fy
ZC0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUgJiYgbV9jbGlwYm9hcmQtPnBvbGljeSgp
ICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghbV9jbGlwYm9hcmQtPmNhblJlYWREYXRh
KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIG1faXRlbS0+Z2V0QXNGaWxlKCk7
CkBAIC0yMzgsNyArMjM4LDcgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmRDaHJvbWl1bT4gQ2xpcGJv
YXJkQ2hyb21pdW06OmNyZWF0ZShDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFQKIAogdm9pZCBDbGlw
Ym9hcmRDaHJvbWl1bTo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBpZiAo
cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9kYXRhT2JqZWN0LT5jbGVhckRhdGEobm9ybWFsaXpl
VHlwZSh0eXBlKSk7CkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBDbGlwYm9hcmRDaHJvbWl1bTo6
Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogdm9pZCBDbGlwYm9hcmRDaHJvbWl1bTo6
Y2xlYXJBbGxEYXRhKCkKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUp
CisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9kYXRh
T2JqZWN0LT5jbGVhckFsbCgpOwpAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgQ2xpcGJvYXJkQ2hy
b21pdW06OmNsZWFyQWxsRGF0YSgpCiAKIFN0cmluZyBDbGlwYm9hcmRDaHJvbWl1bTo6Z2V0RGF0
YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBi
b2FyZFJlYWRhYmxlKQorICAgIGlmICghY2FuUmVhZERhdGEoKSkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCiAgICAgYm9vbCBjb252ZXJ0VG9VUkwgPSBmYWxzZTsKQEAgLTI2OCw3ICsyNjgs
NyBAQCBTdHJpbmcgQ2xpcGJvYXJkQ2hyb21pdW06OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdAogCiBib29sIENsaXBib2FyZENocm9taXVtOjpzZXREYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9h
cmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICByZXR1cm4gbV9kYXRhT2JqZWN0LT5zZXREYXRhKG5vcm1hbGl6ZVR5cGUodHlw
ZSksIGRhdGEpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIGJvb2wgQ2xpcGJvYXJkQ2hyb21pdW06OnNl
dERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAvLyBleHRlbnNp
b25zIGJleW9uZCBJRSdzIEFQSQogTGlzdEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRDaHJvbWl1
bTo6dHlwZXMoKSBjb25zdAogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJs
ZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlKQorICAgIGlmICghY2FuUmVh
ZFR5cGVzKCkpCiAgICAgICAgIHJldHVybiBMaXN0SGFzaFNldDxTdHJpbmc+KCk7CiAKICAgICBy
ZXR1cm4gbV9kYXRhT2JqZWN0LT50eXBlcygpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIExpc3RIYXNo
U2V0PFN0cmluZz4gQ2xpcGJvYXJkQ2hyb21pdW06OnR5cGVzKCkgY29uc3QKIFBhc3NSZWZQdHI8
RmlsZUxpc3Q+IENsaXBib2FyZENocm9taXVtOjpmaWxlcygpIGNvbnN0CiB7CiAgICAgUmVmUHRy
PEZpbGVMaXN0PiBmaWxlcyA9IEZpbGVMaXN0OjpjcmVhdGUoKTsKLSAgICBpZiAocG9saWN5KCkg
IT0gQ2xpcGJvYXJkUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFkRGF0YSgpKQogICAgICAgICBy
ZXR1cm4gZmlsZXMucmVsZWFzZSgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Rh
dGFPYmplY3QtPmxlbmd0aCgpOyArK2kpIHsKQEAgLTMwMiw3ICszMDIsNyBAQCBQYXNzUmVmUHRy
PEZpbGVMaXN0PiBDbGlwYm9hcmRDaHJvbWl1bTo6ZmlsZXMoKSBjb25zdAogCiB2b2lkIENsaXBi
b2FyZENocm9taXVtOjpzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2UqIGltYWdlLCBOb2RlKiBub2Rl
LCBjb25zdCBJbnRQb2ludCYgbG9jKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRJ
bWFnZVdyaXRhYmxlICYmIHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICgh
Y2FuU2V0RHJhZ0ltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2RyYWdJbWFn
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKaW5kZXgg
MjYzYjZjZjhmMmVkYzU5OThmMTVhMDFhZWJjNTcyMmUzNTk2NjQ0YS4uZjUwNDYwYTcyMWFjNDAz
ZGYxYWNhZTliNTQ0MDM4MGVhODNhODFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0NsaXBib2FyZEd0ay5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgQ2xpcGJvYXJk
RGF0YVR5cGUgZGF0YU9iamVjdFR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUoY29uc3QgU3RyaW5n
JiByYXdUeQogCiB2b2lkIENsaXBib2FyZEd0azo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlw
ZVN0cmluZykKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAg
aWYgKCFjYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2xpcGJvYXJkRGF0
YVR5cGUgdHlwZSA9IGRhdGFPYmplY3RUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKHR5cGVTdHJp
bmcpOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgQ2xpcGJvYXJkR3RrOjpjbGVhckRhdGEoY29u
c3QgU3RyaW5nJiB0eXBlU3RyaW5nKQogCiB2b2lkIENsaXBib2FyZEd0azo6Y2xlYXJBbGxEYXRh
KCkKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFj
YW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgZG8gbm90IGNsZWFy
IGZpbGVuYW1lcy4gQWNjb3JkaW5nIHRvIHRoZSBzcGVjOiAiVGhlIGNsZWFyRGF0YSgpIG1ldGhv
ZApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgQ2xpcGJvYXJkR3RrOjpjbGVhckFsbERhdGEoKQog
CiBTdHJpbmcgQ2xpcGJvYXJkR3RrOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZykg
Y29uc3QKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwgIW1fZGF0
YU9iamVjdCkKKyAgICBpZiAoIWNhblJlYWREYXRhKCkgfHwgIW1fZGF0YU9iamVjdCkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaWYgKG1fY2xpcGJvYXJkKQpAQCAtMTY5LDcgKzE2
OSw3IEBAIFN0cmluZyBDbGlwYm9hcmRHdGs6OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlU3Ry
aW5nKSBjb25zdAogCiBib29sIENsaXBib2FyZEd0azo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5
cGVTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xp
cGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CkBAIC0xOTAsNyArMTkwLDcgQEAg
Ym9vbCBDbGlwYm9hcmRHdGs6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGRhdGEpCiAKIExpc3RIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkR3RrOjp0eXBl
cygpIGNvbnN0CiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlICYmIHBv
bGljeSgpICE9IENsaXBib2FyZFR5cGVzUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFkVHlwZXMo
KSkKICAgICAgICAgcmV0dXJuIExpc3RIYXNoU2V0PFN0cmluZz4oKTsKIAogICAgIGlmIChtX2Ns
aXBib2FyZCkKQEAgLTIxOSw3ICsyMTksNyBAQCBMaXN0SGFzaFNldDxTdHJpbmc+IENsaXBib2Fy
ZEd0azo6dHlwZXMoKSBjb25zdAogCiBQYXNzUmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9hcmRHdGs6
OmZpbGVzKCkgY29uc3QKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUp
CisgICAgaWYgKCFjYW5SZWFkRGF0YSgpKQogICAgICAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0
ZSgpOwogCiAgICAgaWYgKG1fY2xpcGJvYXJkKQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgQ2xp
cGJvYXJkR3RrOjpzZXREcmFnSW1hZ2VFbGVtZW50KE5vZGUqIGVsZW1lbnQsIGNvbnN0IEludFBv
aW50JiBsb2NhdGlvbikKIAogdm9pZCBDbGlwYm9hcmRHdGs6OnNldERyYWdJbWFnZShDYWNoZWRJ
bWFnZSogaW1hZ2UsIE5vZGUqIGVsZW1lbnQsIGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikKIHsK
LSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkSW1hZ2VXcml0YWJsZSAmJiBwb2xpY3koKSAh
PSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhblNldERyYWdJbWFnZSgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAobV9kcmFnSW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0NsaXBib2FyZE1hYy5tbQppbmRleCBhNWIyOWQ5OWY4MjhkOTg0NWMzYjdmMTdjODdi
YTU2YWFlYmU0MmUxLi4zNmE0ZDhlMjg1NjA4MWFiMDg5OTEzMGVmMmZjNjc0ZDlkYzczNTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KQEAgLTE1NSw3
ICsxNTUsNyBAQCBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUo
TGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsCiAKIHZvaWQgQ2xpcGJvYXJkTWFjOjpj
bGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlw
Ym9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBub3RlIE5TUGFzdGVib2FyZCBlbmZvcmNlcyBjaGFuZ2VDb3VudCBpdHNlbGYg
b24gd3JpdGluZyAtIGNhbid0IHdyaXRlIGlmIG5vdCB0aGUgb3duZXIKQEAgLTE2Nyw3ICsxNjcs
NyBAQCB2b2lkIENsaXBib2FyZE1hYzo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIAog
dm9pZCBDbGlwYm9hcmRNYWM6OmNsZWFyQWxsRGF0YSgpCiB7Ci0gICAgaWYgKHBvbGljeSgpICE9
IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghY2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIG5vdGUgTlNQYXN0ZWJvYXJkIGVuZm9yY2VzIGNoYW5nZUNvdW50IGl0
c2VsZiBvbiB3cml0aW5nIC0gY2FuJ3Qgd3JpdGUgaWYgbm90IHRoZSBvd25lcgpAQCAtMjIwLDcg
KzIyMCw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBhYnNvbHV0ZVVSTHNGcm9tUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBiCiAKIFN0cmluZyBDbGlwYm9hcmRNYWM6
OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewotICAgIGlmIChwb2xpY3koKSAh
PSBDbGlwYm9hcmRSZWFkYWJsZSB8fCBtX2NsaXBib2FyZENvbnRlbnRzID09IERyYWdBbmREcm9w
RmlsZXMpCisgICAgaWYgKCFjYW5SZWFkRGF0YSgpIHx8IG1fY2xpcGJvYXJkQ29udGVudHMgPT0g
RHJhZ0FuZERyb3BGaWxlcykKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgY29uc3Qg
U3RyaW5nJiBjb2NvYVR5cGUgPSBjb2NvYVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlwZSk7
CkBAIC0yNDksNyArMjQ5LDcgQEAgU3RyaW5nIENsaXBib2FyZE1hYzo6Z2V0RGF0YShjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CiAKIGJvb2wgQ2xpcGJvYXJkTWFjOjpzZXREYXRhKGNvbnN0IFN0
cmluZyAmdHlwZSwgY29uc3QgU3RyaW5nICZkYXRhKQogewotICAgIGlmIChwb2xpY3koKSAhPSBD
bGlwYm9hcmRXcml0YWJsZSB8fCBtX2NsaXBib2FyZENvbnRlbnRzID09IERyYWdBbmREcm9wRmls
ZXMpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSB8fCBtX2NsaXBib2FyZENvbnRlbnRzID09IERy
YWdBbmREcm9wRmlsZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBub3RlIE5TUGFz
dGVib2FyZCBlbmZvcmNlcyBjaGFuZ2VDb3VudCBpdHNlbGYgb24gd3JpdGluZyAtIGNhbid0IHdy
aXRlIGlmIG5vdCB0aGUgb3duZXIKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgQ2xpcGJvYXJk
TWFjOjpzZXREYXRhKGNvbnN0IFN0cmluZyAmdHlwZSwgY29uc3QgU3RyaW5nICZkYXRhKQogCiBM
aXN0SGFzaFNldDxTdHJpbmc+IENsaXBib2FyZE1hYzo6dHlwZXMoKSBjb25zdAogewotICAgIGlm
IChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRU
eXBlc1JlYWRhYmxlKQorICAgIGlmICghY2FuUmVhZFR5cGVzKCkpCiAgICAgICAgIHJldHVybiBM
aXN0SGFzaFNldDxTdHJpbmc+KCk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKQEAgLTMx
Miw3ICszMTIsNyBAQCBMaXN0SGFzaFNldDxTdHJpbmc+IENsaXBib2FyZE1hYzo6dHlwZXMoKSBj
b25zdAogLy8gY2xpcGJvYXJkIGFyZSBub3QgcmVmbGVjdGVkIGluIGFueSBGaWxlTGlzdCBvYmpl
Y3RzIHRoZSBwYWdlIGhhcyBhY2Nlc3NlZCBhbmQgc3RvcmVkCiBQYXNzUmVmUHRyPEZpbGVMaXN0
PiBDbGlwYm9hcmRNYWM6OmZpbGVzKCkgY29uc3QKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xp
cGJvYXJkUmVhZGFibGUgfHwgbV9jbGlwYm9hcmRDb250ZW50cyA9PSBEcmFnQW5kRHJvcERhdGEp
CisgICAgaWYgKCFjYW5SZWFkRGF0YSgpIHx8IG1fY2xpcGJvYXJkQ29udGVudHMgPT0gRHJhZ0Fu
ZERyb3BEYXRhKQogICAgICAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0ZSgpOwogCiAgICAgVmVj
dG9yPFN0cmluZz4gYWJzb2x1dGVVUkxzID0gYWJzb2x1dGVVUkxzRnJvbVBhc3RlYm9hcmRGaWxl
bmFtZXMobV9wYXN0ZWJvYXJkTmFtZSk7CkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBDbGlwYm9h
cmRNYWM6OnNldERyYWdJbWFnZUVsZW1lbnQoTm9kZSAqbm9kZSwgY29uc3QgSW50UG9pbnQgJmxv
YykKIAogdm9pZCBDbGlwYm9hcmRNYWM6OnNldERyYWdJbWFnZShDYWNoZWRJbWFnZSogaW1hZ2Us
IE5vZGUgKm5vZGUsIGNvbnN0IEludFBvaW50ICZsb2MpCiB7Ci0gICAgaWYgKHBvbGljeSgpID09
IENsaXBib2FyZEltYWdlV3JpdGFibGUgfHwgcG9saWN5KCkgPT0gQ2xpcGJvYXJkV3JpdGFibGUp
IHsKKyAgICBpZiAoY2FuU2V0RHJhZ0ltYWdlKCkpIHsKICAgICAgICAgaWYgKG1fZHJhZ0ltYWdl
KQogICAgICAgICAgICAgbV9kcmFnSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICAgICAg
bV9kcmFnSW1hZ2UgPSBpbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0NsaXBib2FyZFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2Fy
ZFF0LmNwcAppbmRleCA3MWM5MWNiNDFiNmNlMWRhOTJmNjIzZmU1MDkxZDRiYjBjYzhkMzc4Li5m
MTQ5MzU0M2ViNjQ0OGZjNzU0OTgyZThkNWIzNjg3ZmQ1MDQxNDJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgQ2xpcGJv
YXJkUXQ6On5DbGlwYm9hcmRRdCgpCiAKIHZvaWQgQ2xpcGJvYXJkUXQ6OmNsZWFyRGF0YShjb25z
dCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxl
KQorICAgIGlmICghY2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICht
X3dyaXRhYmxlRGF0YSkgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgQ2xpcGJvYXJkUXQ6OmNs
ZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIHZvaWQgQ2xpcGJvYXJkUXQ6OmNsZWFyQWxs
RGF0YSgpCiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlm
ICghY2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKIAogI2lmbmRlZiBRVF9OT19DTElQ
Qk9BUkQKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIENsaXBib2FyZFF0OjpjbGVhckFsbERhdGEo
KQogU3RyaW5nIENsaXBib2FyZFF0OjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QK
IHsKIAotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSkKKyAgICBpZiAoIWNh
blJlYWREYXRhKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGlmIChpc0h0bWxN
aW1lVHlwZSh0eXBlKSAmJiBtX3JlYWRhYmxlRGF0YS0+aGFzSHRtbCgpKQpAQCAtMTYzLDcgKzE2
Myw3IEBAIFN0cmluZyBDbGlwYm9hcmRRdDo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0CiAKIGJvb2wgQ2xpcGJvYXJkUXQ6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIGRhdGEpCiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxl
KQorICAgIGlmICghY2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmICghbV93cml0YWJsZURhdGEpCkBAIC0xODQsNyArMTg0LDcgQEAgYm9vbCBDbGlwYm9hcmRR
dDo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKIC8vIGV4
dGVuc2lvbnMgYmV5b25kIElFJ3MgQVBJCiBMaXN0SGFzaFNldDxTdHJpbmc+IENsaXBib2FyZFF0
Ojp0eXBlcygpIGNvbnN0CiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxl
ICYmIHBvbGljeSgpICE9IENsaXBib2FyZFR5cGVzUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFk
VHlwZXMoKSkKICAgICAgICAgcmV0dXJuIExpc3RIYXNoU2V0PFN0cmluZz4oKTsKIAogICAgIEFT
U0VSVChtX3JlYWRhYmxlRGF0YSk7CkBAIC0xOTcsNyArMTk3LDcgQEAgTGlzdEhhc2hTZXQ8U3Ry
aW5nPiBDbGlwYm9hcmRRdDo6dHlwZXMoKSBjb25zdAogCiBQYXNzUmVmUHRyPEZpbGVMaXN0PiBD
bGlwYm9hcmRRdDo6ZmlsZXMoKSBjb25zdAogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9h
cmRSZWFkYWJsZSB8fCAhbV9yZWFkYWJsZURhdGEtPmhhc1VybHMoKSkKKyAgICBpZiAoIWNhblJl
YWREYXRhKCkgfHwgIW1fcmVhZGFibGVEYXRhLT5oYXNVcmxzKCkpCiAgICAgICAgIHJldHVybiBG
aWxlTGlzdDo6Y3JlYXRlKCk7CiAKICAgICBSZWZQdHI8RmlsZUxpc3Q+IGZpbGVMaXN0ID0gRmls
ZUxpc3Q6OmNyZWF0ZSgpOwpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgQ2xpcGJvYXJkUXQ6OnNl
dERyYWdJbWFnZUVsZW1lbnQoTm9kZSogbm9kZSwgY29uc3QgSW50UG9pbnQmIHBvaW50KQogCiB2
b2lkIENsaXBib2FyZFF0OjpzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2UqIGltYWdlLCBOb2RlICpu
b2RlLCBjb25zdCBJbnRQb2ludCAmbG9jKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9h
cmRJbWFnZVdyaXRhYmxlICYmIHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlm
IChjYW5TZXREcmFnSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZHJhZ0lt
YWdlKQpAQCAtMzU5LDcgKzM1OSw3IEBAIFBhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbUxpc3Q+
IENsaXBib2FyZFF0OjppdGVtcygpCiAgICAgaWYgKCFtX3JlYWRhYmxlRGF0YSkKICAgICAgICAg
cmV0dXJuIGl0ZW1zOwogCi0gICAgaWYgKGlzRm9yQ29weUFuZFBhc3RlKCkgJiYgcG9saWN5KCkg
PT0gQ2xpcGJvYXJkUmVhZGFibGUpIHsKKyAgICBpZiAoaXNGb3JDb3B5QW5kUGFzdGUoKSAmJiBj
YW5SZWFkRGF0YSgpKSB7CiAgICAgICAgIGNvbnN0IFFTdHJpbmdMaXN0IHR5cGVzID0gbV9yZWFk
YWJsZURhdGEtPmZvcm1hdHMoKTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0eXBlcy5j
b3VudCgpOyArK2kpCiAgICAgICAgICAgICBpdGVtcy0+YWRkUGFzdGVib2FyZEl0ZW0odHlwZXMu
YXQoaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5z
ZmVySXRlbUxpc3RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNm
ZXJJdGVtTGlzdFF0LmNwcAppbmRleCAxODA2YTdmNmY1Y2M0MGQ1YTQ1OTUyMjlkNzZlYmVhNmZl
NzNlYzRmLi5jNDM1NWE4MTE2Yjk2NTVjZWUxOGZkODY1NDhmYmU1MGY5YTk1NzIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtTGlzdFF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtTGlzdFF0
LmNwcApAQCAtNDcsNyArNDcsNyBAQCBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjpEYXRhVHJhbnNm
ZXJJdGVtTGlzdFF0KFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBvd25lciwgU2NyaQogCiBzaXplX3Qg
RGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6bGVuZ3RoKCkgY29uc3QKIHsKLSAgICBpZiAobV9vd25l
ci0+cG9saWN5KCkgPT0gQ2xpcGJvYXJkTnVtYikKKyAgICBpZiAoIW1fb3duZXItPmNhblJlYWRU
eXBlcygpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBtX2l0ZW1zLnNpemUoKTsK
QEAgLTU1LDcgKzU1LDcgQEAgc2l6ZV90IERhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6Omxlbmd0aCgp
IGNvbnN0CiAKIFBhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4gRGF0YVRyYW5zZmVySXRlbUxp
c3RRdDo6aXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KQogewotICAgIGlmIChtX293bmVyLT5wb2xp
Y3koKSA9PSBDbGlwYm9hcmROdW1iIHx8IGluZGV4ID49IGxlbmd0aCgpKQorICAgIGlmICghbV9v
d25lci0+Y2FuUmVhZFR5cGVzKCkgfHwgaW5kZXggPj0gbGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgcmV0dXJuIG1faXRlbXNbaW5kZXhdOwpAQCAtNjMsNyArNjMsNyBAQCBQYXNz
UmVmUHRyPERhdGFUcmFuc2Zlckl0ZW0+IERhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6Oml0ZW0odW5z
aWduZWQgbG9uZyBpbmRleCkKIAogdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjpkZWxldGVJ
dGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICht
X293bmVyLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkgeworICAgIGlmICghbV9vd25l
ci0+Y2FuV3JpdGVEYXRhKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXJJ
dGVtTGlzdFF0OjpkZWxldGVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogCiB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6OmNsZWFyKCkKIHsKLSAgICBpZiAo
bV9vd25lci0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFtX293bmVy
LT5jYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pdGVtcy5jbGVhcigp
OwpAQCAtODUsNyArODUsNyBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6OmNsZWFyKCkK
IAogdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjphZGQoY29uc3QgU3RyaW5nJiBkYXRhLCBj
b25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChtX293bmVy
LT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIW1fb3duZXItPmNhbldy
aXRlRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBPbmx5IG9uZSAnc3RyaW5nJyBp
dGVtIHdpdGggYSBnaXZlbiB0eXBlIGlzIGFsbG93ZWQgaW4gdGhlIGNvbGxlY3Rpb24uCkBAIC0x
MDEsNyArMTAxLDcgQEAgdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjphZGQoY29uc3QgU3Ry
aW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGkKIAogdm9pZCBEYXRhVHJhbnNm
ZXJJdGVtTGlzdFF0OjphZGQoUGFzc1JlZlB0cjxGaWxlPiBmaWxlKQogewotICAgIGlmIChtX293
bmVyLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSB8fCAhZmlsZSkKKyAgICBpZiAoIW1f
b3duZXItPmNhbldyaXRlRGF0YSgpIHx8ICFmaWxlKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X2l0ZW1zLmFwcGVuZChEYXRhVHJhbnNmZXJJdGVtOjpjcmVhdGUobV9vd25lciwgbV9jb250ZXh0
LCBmaWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJh
bnNmZXJJdGVtUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVy
SXRlbVF0LmNwcAppbmRleCA5ZmY2MjFlZjQ5ODM0OTZhMDNiOGZhNzY4ZjkzODc2Yzk4YjFlYTFk
Li5kN2U5Yjc3OWEyMTUyOGQ5N2U1MTRjNWIwMDRjNmU4MTU5MTIxMGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtUXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1RdC5jcHAKQEAgLTk1LDgg
Kzk1LDcgQEAgRGF0YVRyYW5zZmVySXRlbVF0OjpEYXRhVHJhbnNmZXJJdGVtUXQoUGFzc1JlZlB0
cjxDbGlwYm9hcmQ+IG93bmVyLAogCiB2b2lkIERhdGFUcmFuc2Zlckl0ZW1RdDo6Z2V0QXNTdHJp
bmcoUGFzc1JlZlB0cjxTdHJpbmdDYWxsYmFjaz4gY2FsbGJhY2spIGNvbnN0CiB7Ci0gICAgaWYg
KChvd25lcigpLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSAmJiBvd25lcigpLT5wb2xp
Y3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKLSAgICAgICAgfHwga2luZCgpICE9IGtpbmRTdHJp
bmcpCisgICAgaWYgKCFvd25lcigpLT5wb2xpY3koKS0+Y2FuUmVhZERhdGEoKSB8fCBraW5kKCkg
IT0ga2luZFN0cmluZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZGF0YVNvdXJjZSA9
PSBJbnRlcm5hbFNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0NsaXBib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJv
YXJkV2luLmNwcAppbmRleCBjMmY5OTY0OTY5OWI2NDllZWU2YWVjYmVmZGNkMjNlZjkxMDFjMmUz
Li5iOTJmYzg3ZjU5NDg0ZDM3NTcwYmU2YzlmOTliMDk3ZDRlYzZmYjgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcApAQCAtNDA3LDcgKzQwNyw3IEBA
IHZvaWQgQ2xpcGJvYXJkV2luOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAg
IC8vIEZJWE1FOiBOZWVkIHRvIGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlIHN5c3RlbSBjbGlwYm9h
cmQgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NDE+CiAgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3Ao
KSk7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlIHx8ICFtX3dyaXRhYmxl
RGF0YU9iamVjdCkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpIHx8ICFtX3dyaXRhYmxlRGF0YU9i
amVjdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2xpcGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUg
PSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKHR5cGUpOwpAQCAtNDI3LDcgKzQyNyw3IEBAIHZv
aWQgQ2xpcGJvYXJkV2luOjpjbGVhckFsbERhdGEoKQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRv
IGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlIHN5c3RlbSBjbGlwYm9hcmQgPHJkYXI6Ly9wcm9ibGVt
LzUwMTU5NDE+CiAgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3AoKSk7Ci0gICAgaWYgKHBvbGlj
eSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghY2FuV3JpdGVEYXRhKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICAKICAgICBtX3dyaXRhYmxlRGF0YU9iamVjdCA9IDA7CkBAIC00Mzcs
NyArNDM3LDcgQEAgdm9pZCBDbGlwYm9hcmRXaW46OmNsZWFyQWxsRGF0YSgpCiAKIFN0cmluZyBD
bGlwYm9hcmRXaW46OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogeyAgICAgCi0g
ICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlIHx8ICghbV9kYXRhT2JqZWN0ICYm
IG1fZHJhZ0RhdGFNYXAuaXNFbXB0eSgpKSkKKyAgICBpZiAoIWNhblJlYWREYXRhKCkgfHwgKCFt
X2RhdGFPYmplY3QgJiYgbV9kcmFnRGF0YU1hcC5pc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4g
IiI7CiAKICAgICBDbGlwYm9hcmREYXRhVHlwZSBkYXRhVHlwZSA9IGNsaXBib2FyZFR5cGVGcm9t
TUlNRVR5cGUodHlwZSk7CkBAIC00NTksNyArNDU5LDcgQEAgYm9vbCBDbGlwYm9hcmRXaW46OnNl
dERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgLy8g
RklYTUU6IE5lZWQgdG8gYmUgYWJsZSB0byB3cml0ZSB0byB0aGUgc3lzdGVtIGNsaXBib2FyZCA8
cmRhcjovL3Byb2JsZW0vNTAxNTk0MT4KICAgICBBU1NFUlQoaXNGb3JEcmFnQW5kRHJvcCgpKTsK
LSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUgfHwgIW1fd3JpdGFibGVEYXRh
T2JqZWN0KQorICAgIGlmICghY2FuV3JpdGVEYXRhKCkgfHwgIW1fd3JpdGFibGVEYXRhT2JqZWN0
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDbGlwYm9hcmREYXRhVHlwZSB3aW5UeXBl
ID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZSh0eXBlKTsKQEAgLTUwMiw3ICs1MDIsNyBAQCBz
dGF0aWMgdm9pZCBhZGRNaW1lVHlwZXNGb3JGb3JtYXQoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVz
dWx0cywgY29uc3QgRk9STUFURVRDJgogTGlzdEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRXaW46
OnR5cGVzKCkgY29uc3QKIHsgCiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiByZXN1bHRzOwotICAg
IGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9h
cmRUeXBlc1JlYWRhYmxlKQorICAgIGlmICghY2FuUmVhZFR5cGVzKCkpCiAgICAgICAgIHJldHVy
biByZXN1bHRzOwogCiAgICAgaWYgKCFtX2RhdGFPYmplY3QgJiYgbV9kcmFnRGF0YU1hcC5pc0Vt
cHR5KCkpCkBAIC01NDAsNyArNTQwLDcgQEAgUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJk
V2luOjpmaWxlcygpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiAjZWxzZQogICAgIFJlZlB0cjxGaWxl
TGlzdD4gZmlsZXMgPSBGaWxlTGlzdDo6Y3JlYXRlKCk7Ci0gICAgaWYgKHBvbGljeSgpICE9IENs
aXBib2FyZFJlYWRhYmxlICYmIHBvbGljeSgpICE9IENsaXBib2FyZFR5cGVzUmVhZGFibGUpCisg
ICAgaWYgKCFjYW5SZWFkRGF0YSgpKQogICAgICAgICByZXR1cm4gZmlsZXMucmVsZWFzZSgpOwog
CiAgICAgaWYgKCFtX2RhdGFPYmplY3QgJiYgbV9kcmFnRGF0YU1hcC5pc0VtcHR5KCkpCkBAIC01
NzgsNyArNTc4LDcgQEAgUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkV2luOjpmaWxlcygp
IGNvbnN0CiAKIHZvaWQgQ2xpcGJvYXJkV2luOjpzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2UqIGlt
YWdlLCBOb2RlICpub2RlLCBjb25zdCBJbnRQb2ludCAmbG9jKQogewotICAgIGlmIChwb2xpY3ko
KSAhPSBDbGlwYm9hcmRJbWFnZVdyaXRhYmxlICYmIHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRh
YmxlKSAKKyAgICBpZiAoY2FuU2V0RHJhZ0ltYWdlKCkpCiAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCiAgICAgaWYgKG1fZHJhZ0ltYWdlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNiNTYzZDRhNDk3ODVjYTNkNTc4MWYw
MjQ2ZWNhYTYyOGJjZjQ3ZmIuLjAzNTI4ODk4ZmU1M2M0Y2NlZTk2YzlhMzQ3ZDAxMjUzZmQ0OGFk
ZTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMy0yMiAgRGFuaWVsIENoZW5nICA8ZGNo
ZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBEYXRhIHN0b3JlIHNob3VsZCBiZSByZWFkYWJs
ZSBpbiBkcmFnc3RhcnQvY29weS9jdXQgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWNv
cHktYW5kLWN1dC1ldmVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tY29weS1hbmQtY3V0LWV2ZW50cy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tZHJhZ3N0YXJ0LWV2ZW50
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1y
ZWFkLWluLWRyYWdzdGFydC1ldmVudC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0yMSAgSGFyYWxk
IEFsdmVzdHJhbmQgIDxodGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBFeHBvc2UgdGhlIFR5cGUg
ZmllbGQgb2YgYW4gUlRDU3RhdHNSZXBvcnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1jb3B5LWFuZC1jdXQtZXZlbnRzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1jb3B5LWFuZC1j
dXQtZXZlbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGM0YWVjODRhM2ZmYTE3NDNjNTNl
ODNiNGU3OTQyZWY3NGQzODE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWNvcHktYW5kLWN1dC1ldmVudHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNSBAQAorU2ltcGxlIHRlc3QgdGhhdCBkYXRhIHNldCBkdXJpbmcgYSBjb3B5
L2N1dCBldmVudCBjYW4gYmUgcmVhZCBiYWNrLiBUbyBydW4gdGhlIHRlc3QgbWFudWFsbHksIHNp
bXBseSBzZWxlY3QgYW55IHRleHQgYW5kIGluaXRpYXRlIGEgY29weS9jdXQgb3BlcmF0aW9uLgor
Citjb3B5OiBTVUNDRVNTCitjdXQ6IFNVQ0NFU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWNvcHktYW5kLWN1dC1ldmVudHMuaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1jb3B5LWFuZC1jdXQt
ZXZlbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY5NDgzMjQ5MDM1NTk0YTAwOTExMDg5NWU0ZmM0MDhh
ZTFlZmE4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9jYW4tcmVhZC1pbi1jb3B5LWFuZC1jdXQtZXZlbnRzLmh0bWwKQEAgLTAsMCArMSw0MiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyh0
ZXh0KSB7CisgICAgdmFyIGxvZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKKyAg
ICBsb2cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpOworICAgIGxv
Zy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsKK30KKworZnVuY3Rp
b24gY29weVRlc3QoZSkgeworICAgIGUuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCd0ZXh0L3BsYWlu
JywgJ2NvcHkgdGVzdCcpOworICAgIGlmIChldmVudC5jbGlwYm9hcmREYXRhLnR5cGVzLmluZGV4
T2YoJ3RleHQvcGxhaW4nKSA8IDAgfHwKKyAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXRE
YXRhKCd0ZXh0L3BsYWluJykgIT0gJ2NvcHkgdGVzdCcpCisgICAgICAgIGxvZygnY29weTogRkFJ
TEVEJyk7CisgICAgZWxzZQorICAgICAgICBsb2coJ2NvcHk6IFNVQ0NFU1MnKTsKK30KKworZnVu
Y3Rpb24gY3V0VGVzdChlKSB7CisgICAgZS5jbGlwYm9hcmREYXRhLnNldERhdGEoJ3RleHQvcGxh
aW4nLCAnY3V0IHRlc3QnKTsKKyAgICBpZiAoZXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcy5pbmRl
eE9mKCd0ZXh0L3BsYWluJykgPCAwIHx8CisgICAgICAgIGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0
RGF0YSgndGV4dC9wbGFpbicpICE9ICdjdXQgdGVzdCcpCisgICAgICAgIGxvZygnY3V0OiBGQUlM
RUQnKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygnY3V0OiBTVUNDRVNTJyk7Cit9CisKK2Z1bmN0
aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgcmV0
dXJuOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCdjb3B5Jyk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2N1dCcpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSIgb25jb3B5PSJjb3B5VGVzdChl
dmVudCkiIG9uY3V0PSJjdXRUZXN0KGV2ZW50KSI+Cis8cD5TaW1wbGUgdGVzdCB0aGF0IGRhdGEg
c2V0IGR1cmluZyBhIGNvcHkvY3V0IGV2ZW50IGNhbiBiZSByZWFkIGJhY2suIFRvIHJ1bgordGhl
IHRlc3QgbWFudWFsbHksIHNpbXBseSBzZWxlY3QgYW55IHRleHQgYW5kIGluaXRpYXRlIGEgY29w
eS9jdXQgb3BlcmF0aW9uLgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1kcmFnc3RhcnQt
ZXZlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1y
ZWFkLWluLWRyYWdzdGFydC1ldmVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI0MDNlMGJh
ZmRiMGY4ZDcyNWY3ZDUzMTJmOGIwNzgwNTBiNDA0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1kcmFnc3RhcnQtZXZlbnQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorU2ltcGxlIHRlc3QgdGhhdCBkYXRhIHNldCBkdXJp
bmcgYSBkcmFnc3RhcnQgZXZlbnQgY2FuIGJlIHJlYWQgYmFjay4gVG8gcnVuIHRoZSB0ZXN0IG1h
bnVhbGx5LCBzaW1wbHkgc3RhcnQgZHJhZ2dpbmcgdGhlICdEcmFnIE1lJyBlbGVtZW50IGJlbG93
LgorCitEcmFnIE1lCitkcmFnc3RhcnQ6IFNVQ0NFU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWRyYWdzdGFydC1ldmVudC5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWRyYWdzdGFydC1ldmVu
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk2MWU1ZThmZjc4Njc3YzA1NDY1NzA2MmFjNjhiZDBiMTE0MTk0
OWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2Fu
LXJlYWQtaW4tZHJhZ3N0YXJ0LWV2ZW50Lmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyh0ZXh0KSB7Cisg
ICAgdmFyIGxvZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKKyAgICBsb2cuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpOworICAgIGxvZy5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsKK30KKworZnVuY3Rpb24gZHJhZ1N0
YXJ0VGVzdChlKSB7CisgICAgZS5kYXRhVHJhbnNmZXIuc2V0RGF0YSgndGV4dC9wbGFpbicsICdk
cmFnc3RhcnQgdGVzdCcpOworICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIudHlwZXMuaW5kZXhP
ZigndGV4dC9wbGFpbicpIDwgMCB8fAorICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0
YSgndGV4dC9wbGFpbicpICE9ICdkcmFnc3RhcnQgdGVzdCcpCisgICAgICAgIGxvZygnZHJhZ3N0
YXJ0OiBGQUlMRUQnKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygnZHJhZ3N0YXJ0OiBTVUNDRVNT
Jyk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgcmV0dXJuOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAg
dmFyIGRyYWdnZWRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RyYWdnZWRFbGVt
ZW50Jyk7CisgICAgdmFyIHggPSBkcmFnZ2VkRWxlbWVudC5vZmZzZXRMZWZ0ICsgZHJhZ2dlZEVs
ZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgIHZhciB5ID0gZHJhZ2dlZEVsZW1lbnQub2Zmc2V0
VG9wICsgZHJhZ2dlZEVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2
ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEwMCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
eCArIDEwMCwgeSArIDEwMCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5TaW1wbGUgdGVzdCB0
aGF0IGRhdGEgc2V0IGR1cmluZyBhIGRyYWdzdGFydCBldmVudCBjYW4gYmUgcmVhZCBiYWNrLiBU
byBydW4KK3RoZSB0ZXN0IG1hbnVhbGx5LCBzaW1wbHkgc3RhcnQgZHJhZ2dpbmcgdGhlICdEcmFn
IE1lJyBlbGVtZW50IGJlbG93LgorPGRpdiBpZD0iZHJhZ2dlZEVsZW1lbnQiIGRyYWdnYWJsZT0i
dHJ1ZSIgb25kcmFnc3RhcnQ9ImRyYWdTdGFydFRlc3QoZXZlbnQpIj5EcmFnIE1lPC9kaXY+Cis8
ZGl2IGlkPSJsb2ciPjwvZGl2PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194607</attachid>
            <date>2013-03-22 11:50:56 -0700</date>
            <delta_ts>2013-03-22 12:34:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-23695-20130322114643.patch</filename>
            <type>text/plain</type>
            <size>34459</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ1NzNlMjZmNDNhNDYw
N2I4MDUyNzRhMjA5MWY5MmFhY2I4Mzc1Yy4uZmRlNzYzMTI3ZDMyNDExYzNjMGEzODY5YmJiMzkx
NTAxZGZiNzZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEzLTAzLTIyICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERhdGEgc3RvcmUgc2hv
dWxkIGJlIHJlYWRhYmxlIGluIGRyYWdzdGFydC9jb3B5L2N1dCBldmVudHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjk1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgd2VyZSBzZXZlcmFsIGV2
ZW50cyB3aGVyZSBkYXRhIGNvdWxkIGJlIHdyaXR0ZW4gYnV0IG5vdCByZWFkIGJhY2sgZHVlIHRv
IHRoZSBmYWN0IHRoYXQKKyAgICAgICAgZGlmZmVyZW50IENsaXBib2FyZCBtZXRob2QgaW1wbGVt
ZW50YXRpb25zIGNoZWNrZWQgcGVybWlzc2lvbnMgaW5jb25zaXN0ZW50bHkuIFRoaXMgcGF0Y2gK
KyAgICAgICAgYWRkcyBoZWxwZXIgbWV0aG9kcyB0byBjaGVjayBpZiBhbiBvcGVyYXRpb24gaXMg
cGVybWl0dGVkIG9uIGEgQ2xpcGJvYXJkIGFuZCByZWZhY3RvcnMgYWxsCisgICAgICAgIGRpcmVj
dCBjb21wYXJpc29ucyBhZ2FpbnN0IENsaXBib2FyZDo6bV9wb2xpY3kgdG8gdXNlIHRoZSBuZXcg
aGVscGVycyBpbnN0ZWFkLgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3Bhc3RlYm9hcmQvY2Fu
LXJlYWQtaW4tY29weS1hbmQtY3V0LWV2ZW50cy5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5n
L3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tZHJhZ3N0YXJ0LWV2ZW50Lmh0bWwKKworICAgICAgICAq
IGRvbS9DbGlwYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjYW5SZWFk
VHlwZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6
OmNhblJlYWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6Y2FuV3JpdGVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6Y2FuU2V0RHJhZ0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6aGFzRmlsZU9mVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmQ6Omhhc1N0cmluZ09mVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmQ6OnNldERyb3BFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpzZXRFZmZl
Y3RBbGxvd2VkKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmg6CisgICAgICAgIChDbGlwYm9h
cmQpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ2xpcGJvYXJkQmxhY2tCZXJyeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRCbGFja0JlcnJ5OjpjbGVhckRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQmxhY2tCZXJyeTo6Y2xlYXJBbGxEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEJsYWNrQmVycnk6OmdldERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkQmxhY2tCZXJyeTo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRCbGFja0JlcnJ5Ojp0eXBlcyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
SXRlbVBvbGljeVdyYXBwZXI6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
SXRlbVBvbGljeVdyYXBwZXI6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
SXRlbVBvbGljeVdyYXBwZXI6OmdldEFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlckl0ZW1Qb2xpY3lXcmFwcGVyOjpnZXRBc0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkQ2hyb21pdW06OmNsZWFyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRDaHJvbWl1bTo6Y2xlYXJBbGxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENo
cm9taXVtOjpnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVtOjpz
ZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVtOjp0eXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6ZmlsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OnNldERyYWdJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL0NsaXBib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6
OmNsZWFyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmNsZWFyQWxsRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmdldERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEd0azo6dHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpmaWxlcyk6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OnNldERyYWdJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZE1hYzo6Y2xlYXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZE1hYzo6Y2xl
YXJBbGxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZE1hYzo6Z2V0RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkTWFjOjp0eXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6
OmZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZE1hYzo6c2V0RHJhZ0ltYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRRdDo6Y2xlYXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0
OjpjbGVhckFsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OmdldERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OnNldERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkUXQ6OnR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0
OjpmaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6c2V0RHJhZ0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjppdGVtcyk6CisgICAgICAgICogcGxhdGZv
cm0vcXQvRGF0YVRyYW5zZmVySXRlbUxpc3RRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
VHJhbnNmZXJJdGVtTGlzdFF0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5z
ZmVySXRlbUxpc3RRdDo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVt
TGlzdFF0OjpkZWxldGVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1M
aXN0UXQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6
OmFkZCk6CisgICAgICAgICogcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbVF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1RdDo6Z2V0QXNTdHJpbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkV2luOjpjbGVhckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpj
bGVhckFsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpnZXREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRXaW46OnR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdp
bjo6ZmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpzZXREcmFnSW1hZ2Up
OgorCiAyMDEzLTAzLTIxICBIYXJhbGQgQWx2ZXN0cmFuZCAgPGh0YUBnb29nbGUuY29tPgogCiAg
ICAgICAgIEV4cG9zZSB0aGUgVHlwZSBmaWVsZCBvZiBhbiBSVENTdGF0c1JlcG9ydApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2xpcGJvYXJkLmNwcAppbmRleCAwMjc5OTI1MTUyZWUyYjExZTFkMTkxMDJiNTkwMzI5YmUz
MmQzYWQ2Li40Mjg2MDgyNWFhNzg1ZGUzNTVkZmQ3Nzg3ZDU2ZWNmNTcyYTY0NTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ2xpcGJvYXJkLmNwcApAQCAtNTEsNiArNTEsMjYgQEAgdm9pZCBDbGlwYm9hcmQ6OnNl
dEFjY2Vzc1BvbGljeShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQogICAgIG1fcG9saWN5
ID0gcG9saWN5OwogfQogCitib29sIENsaXBib2FyZDo6Y2FuUmVhZFR5cGVzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wb2xpY3kgPT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwgbV9wb2xpY3kgPT0g
Q2xpcGJvYXJkVHlwZXNSZWFkYWJsZSB8fCBtX3BvbGljeSA9PSBDbGlwYm9hcmRXcml0YWJsZTsK
K30KKworYm9vbCBDbGlwYm9hcmQ6OmNhblJlYWREYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9wb2xpY3kgPT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwgbV9wb2xpY3kgPT0gQ2xpcGJvYXJkV3Jp
dGFibGU7Cit9CisKK2Jvb2wgQ2xpcGJvYXJkOjpjYW5Xcml0ZURhdGEoKSBjb25zdAoreworICAg
IHJldHVybiBtX3BvbGljeSA9PSBDbGlwYm9hcmRXcml0YWJsZTsKK30KKworYm9vbCBDbGlwYm9h
cmQ6OmNhblNldERyYWdJbWFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcG9saWN5ID09IENs
aXBib2FyZEltYWdlV3JpdGFibGUgfHwgbV9wb2xpY3kgPT0gQ2xpcGJvYXJkV3JpdGFibGU7Cit9
CisKIC8vIFRoZXNlICJjb252ZXJzaW9uIiBtZXRob2RzIGFyZSBjYWxsZWQgYnkgYm90aCBXZWJD
b3JlIGFuZCBXZWJLaXQsIGFuZCBuZXZlciBtYWtlIHNlbnNlIHRvIEpTLCBzbyB3ZSBkb24ndAog
Ly8gd29ycnkgYWJvdXQgc2VjdXJpdHkgZm9yIHRoZXNlLiBUaGV5IGRvbid0IGFsbG93IGFjY2Vz
cyB0byB0aGUgcGFzdGVib2FyZCBhbnl3YXkuCiAKQEAgLTEyOCw3ICsxNDgsNyBAQCB2b2lkIENs
aXBib2FyZDo6c2V0RGVzdGluYXRpb25PcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcCkKIAogYm9v
bCBDbGlwYm9hcmQ6Omhhc0ZpbGVPZlR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewot
ICAgIGlmIChtX3BvbGljeSAhPSBDbGlwYm9hcmRSZWFkYWJsZSAmJiBtX3BvbGljeSAhPSBDbGlw
Ym9hcmRUeXBlc1JlYWRhYmxlKQorICAgIGlmICghY2FuUmVhZFR5cGVzKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKICAgICBSZWZQdHI8RmlsZUxpc3Q+IGZpbGVMaXN0ID0gZmlsZXMo
KTsKQEAgLTE0NCw3ICsxNjQsNyBAQCBib29sIENsaXBib2FyZDo6aGFzRmlsZU9mVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAKIGJvb2wgQ2xpcGJvYXJkOjpoYXNTdHJpbmdPZlR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewotICAgIGlmIChtX3BvbGljeSAhPSBDbGlwYm9h
cmRSZWFkYWJsZSAmJiBtX3BvbGljeSAhPSBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlKQorICAgIGlm
ICghY2FuUmVhZFR5cGVzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICByZXR1
cm4gdHlwZXMoKS5jb250YWlucyh0eXBlKTsgCkBAIC0xNTksOCArMTc5LDcgQEAgdm9pZCBDbGlw
Ym9hcmQ6OnNldERyb3BFZmZlY3QoY29uc3QgU3RyaW5nICZlZmZlY3QpCiAgICAgaWYgKGVmZmVj
dCAhPSAibm9uZSIgJiYgZWZmZWN0ICE9ICJjb3B5IiAgJiYgZWZmZWN0ICE9ICJsaW5rIiAmJiBl
ZmZlY3QgIT0gIm1vdmUiKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9wb2xpY3kgPT0g
Q2xpcGJvYXJkUmVhZGFibGUgfHwgbV9wb2xpY3kgPT0gQ2xpcGJvYXJkVHlwZXNSZWFkYWJsZSkK
LSAgICAgICAgbV9kcm9wRWZmZWN0ID0gZWZmZWN0OworICAgIG1fZHJvcEVmZmVjdCA9IGVmZmVj
dDsKIH0KIAogdm9pZCBDbGlwYm9hcmQ6OnNldEVmZmVjdEFsbG93ZWQoY29uc3QgU3RyaW5nICZl
ZmZlY3QpCkBAIC0xNzksNyArMTk4LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OnNldEVmZmVjdEFsbG93
ZWQoY29uc3QgU3RyaW5nICZlZmZlY3QpCiAgICAgfQogCiAKLSAgICBpZiAobV9wb2xpY3kgPT0g
Q2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKGNhbldyaXRlRGF0YSgpKQogICAgICAgICBtX2Vm
ZmVjdEFsbG93ZWQgPSBlZmZlY3Q7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgKaW5kZXgg
ZDExYjY1MmEyMTlhYjYwYzM1MzVmZWIwYTEyODBiNWQ3YWNmZjc2Mi4uODg2NDU4NDJhNDk5ZGJk
YjI5ZjVlODg3NGU0ZmI3YTIzOWIxMWMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NsaXBib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaApAQCAtODYs
NyArODYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFz
RGF0YSgpID0gMDsKICAgICAgICAgCiAgICAgICAgIHZvaWQgc2V0QWNjZXNzUG9saWN5KENsaXBi
b2FyZEFjY2Vzc1BvbGljeSk7Ci0gICAgICAgIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ko
KSBjb25zdCB7IHJldHVybiBtX3BvbGljeTsgfQorICAgICAgICBib29sIGNhblJlYWRUeXBlcygp
IGNvbnN0OworICAgICAgICBib29sIGNhblJlYWREYXRhKCkgY29uc3Q7CisgICAgICAgIGJvb2wg
Y2FuV3JpdGVEYXRhKCkgY29uc3Q7CisgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgc3BlYyBkb2Vz
bid0IGFjdHVhbGx5IGFsbG93IGRyYWcgaW1hZ2UgbW9kaWZpY2F0aW9uIG91dHNpZGUgdGhlIGRy
YWdzdGFydAorICAgICAgICAvLyBldmVudC4gVGhpcyBjYXBhYmlsaXR5IGlzIG1haW50YWluZWQg
Zm9yIGJhY2t3YXJkcyBjb21wYXRpYmxpdHkgZm9yIHBvcnRzIHRoYXQgaGF2ZQorICAgICAgICAv
LyBzdXBwb3J0ZWQgdGhpcyBpbiB0aGUgcGFzdC4gT24gbWFueSBwb3J0cywgYXR0ZW1wdGluZyB0
byBzZXQgYSBkcmFnIGltYWdlIG91dHNpZGUgdGhlCisgICAgICAgIC8vIGRyYWdzdGFydCBvcGVy
YXRpb24gaXMgYSBuby1vcCBhbnl3YXkuCisgICAgICAgIGJvb2wgY2FuU2V0RHJhZ0ltYWdlKCkg
Y29uc3Q7CiAKICAgICAgICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24oKSBjb25zdDsK
ICAgICAgICAgRHJhZ09wZXJhdGlvbiBkZXN0aW5hdGlvbk9wZXJhdGlvbigpIGNvbnN0OwpAQCAt
MTA5LDcgKzExNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAg
ICBib29sIGhhc0ZpbGVPZlR5cGUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgICAgIGJvb2wg
aGFzU3RyaW5nT2ZUeXBlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgICAgICAKKworICAgICAg
ICAvLyBJbnN0ZWFkIG9mIHVzaW5nIHRoaXMgbWVtYmVyIGRpcmVjdGx5LCBwcmVmZXIgdG8gdXNl
IHRoZSBjYW4qKCkgbWV0aG9kcyBhYm92ZS4KICAgICAgICAgQ2xpcGJvYXJkQWNjZXNzUG9saWN5
IG1fcG9saWN5OwogICAgICAgICBTdHJpbmcgbV9kcm9wRWZmZWN0OwogICAgICAgICBTdHJpbmcg
bV9lZmZlY3RBbGxvd2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9DbGlwYm9hcmRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvQ2xpcGJvYXJkQmxhY2tCZXJyeS5jcHAKaW5kZXggYWRlMjJlZjQ3ZWJmMTA0
NGUyMGFhNmM5ZTI2NjQ5YTdlZjIwNDU0ZC4uNjBhNDRiMjYyNGZhMjhlOGUzYjc4MjhlNDNmZGM4
MTEyYTI2ZTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9DbGlwYm9hcmRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L0NsaXBib2FyZEJsYWNrQmVycnkuY3BwCkBAIC00Miw3ICs0Miw3IEBAIENsaXBi
b2FyZEJsYWNrQmVycnk6On5DbGlwYm9hcmRCbGFja0JlcnJ5KCkKIAogdm9pZCBDbGlwYm9hcmRC
bGFja0JlcnJ5OjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIGlmIChwb2xp
Y3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjpjbGVh
ckNsaXBib2FyZEJ5VHlwZSh0eXBlLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNTAsNyArNTAsNyBAQCB2
b2lkIENsaXBib2FyZEJsYWNrQmVycnk6OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiAK
IHZvaWQgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6Y2xlYXJBbGxEYXRhKCkKIHsKLSAgICBpZiAocG9s
aWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6Y2xl
YXJDbGlwYm9hcmQoKTsKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBDbGlwYm9hcmRCbGFja0JlcnJ5
OjpjbGVhckFsbERhdGEoKQogCiBTdHJpbmcgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6Z2V0RGF0YShj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2Fy
ZFJlYWRhYmxlKQorICAgIGlmICghY2FuUmVhZERhdGEoKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkNsaXBib2FyZDo6cmVhZENsaXBib2FyZEJ5VHlwZSh0eXBlLnV0ZjgoKS5kYXRhKCkpLmNfc3Ry
KCkpOwpAQCAtNjYsNyArNjYsNyBAQCBTdHJpbmcgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6Z2V0RGF0
YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAKIGJvb2wgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6
c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBp
ZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHR5cGUgPT0gInRleHQvcGxhaW4i
KQpAQCAtODAsNyArODAsNyBAQCBib29sIENsaXBib2FyZEJsYWNrQmVycnk6OnNldERhdGEoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQpCiAKIExpc3RIYXNoU2V0PFN0cmlu
Zz4gQ2xpcGJvYXJkQmxhY2tCZXJyeTo6dHlwZXMoKSBjb25zdAogewotICAgIGlmIChwb2xpY3ko
KSAhPSBDbGlwYm9hcmRSZWFkYWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRUeXBlc1JlYWRh
YmxlKQorICAgIGlmICghY2FuUmVhZFR5cGVzKCkpCiAgICAgICAgIHJldHVybiBMaXN0SGFzaFNl
dDxTdHJpbmc+KCk7CiAKICAgICAvLyBXZSB1c2UgaGFyZGNvZGVkIGxpc3QgaGVyZSBzaW5jZSB0
aGVyZSBzZWVtcyB0byBiZSBubyBBUEkgdG8gZ2V0IHRoZSBsaXN0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCmluZGV4
IGZjMzcyNzhkNmI5MjI3M2FkODk1MjE1NzJlYjVkODRkYmFlOTIxODkuLmQwOTA1ZjI4NjZmNjUy
ZDA3ZGM2ZGViM2VlOGQzODc4NzU4ZjhhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTg5LDE0ICs4OSwx
NCBAQCBEYXRhVHJhbnNmZXJJdGVtTGlzdFBvbGljeVdyYXBwZXI6On5EYXRhVHJhbnNmZXJJdGVt
TGlzdFBvbGljeVdyYXBwZXIoKQogCiBzaXplX3QgRGF0YVRyYW5zZmVySXRlbUxpc3RQb2xpY3lX
cmFwcGVyOjpsZW5ndGgoKSBjb25zdAogewotICAgIGlmIChtX2NsaXBib2FyZC0+cG9saWN5KCkg
PT0gQ2xpcGJvYXJkTnVtYikKKyAgICBpZiAoIW1fY2xpcGJvYXJkLT5jYW5SZWFkVHlwZXMoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIG1fZGF0YU9iamVjdC0+bGVuZ3RoKCk7CiB9
CiAKIFBhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4gRGF0YVRyYW5zZmVySXRlbUxpc3RQb2xp
Y3lXcmFwcGVyOjppdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpCiB7Ci0gICAgaWYgKG1fY2xpcGJv
YXJkLT5wb2xpY3koKSA9PSBDbGlwYm9hcmROdW1iKQorICAgIGlmICghbV9jbGlwYm9hcmQtPmNh
blJlYWRUeXBlcygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBSZWZQdHI8Q2hyb21pdW1EYXRh
T2JqZWN0SXRlbT4gaXRlbSA9IG1fZGF0YU9iamVjdC0+aXRlbShpbmRleCk7CiAgICAgaWYgKCFp
dGVtKQpAQCAtMTA3LDcgKzEwNyw3IEBAIFBhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4gRGF0
YVRyYW5zZmVySXRlbUxpc3RQb2xpY3lXcmFwcGVyOjppdGVtKHVuc2lnbmVkIGxvCiAKIHZvaWQg
RGF0YVRyYW5zZmVySXRlbUxpc3RQb2xpY3lXcmFwcGVyOjpkZWxldGVJdGVtKHVuc2lnbmVkIGxv
bmcgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChtX2NsaXBib2FyZC0+cG9s
aWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpIHsKKyAgICBpZiAoIW1fY2xpcGJvYXJkLT5jYW5X
cml0ZURhdGEoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTE2LDIxICsxMTYsMjEgQEAgdm9pZCBEYXRhVHJhbnNmZXJJdGVt
TGlzdFBvbGljeVdyYXBwZXI6OmRlbGV0ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0
aW8KIAogdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFBvbGljeVdyYXBwZXI6OmNsZWFyKCkKIHsK
LSAgICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAg
IGlmICghbV9jbGlwYm9hcmQtPmNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47CiAgICAg
bV9kYXRhT2JqZWN0LT5jbGVhckFsbCgpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0
UG9saWN5V3JhcHBlcjo6YWRkKGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBl
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpICE9
IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghbV9jbGlwYm9hcmQtPmNhbldyaXRlRGF0YSgp
KQogICAgICAgICByZXR1cm47CiAgICAgbV9kYXRhT2JqZWN0LT5hZGQoZGF0YSwgdHlwZSwgZWMp
OwogfQogCiB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0UG9saWN5V3JhcHBlcjo6YWRkKFBhc3NS
ZWZQdHI8RmlsZT4gZmlsZSkKIHsKLSAgICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpICE9IENs
aXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghbV9jbGlwYm9hcmQtPmNhbldyaXRlRGF0YSgpKQog
ICAgICAgICByZXR1cm47CiAgICAgbV9kYXRhT2JqZWN0LT5hZGQoZmlsZSwgbV9jbGlwYm9hcmQt
PmZyYW1lKCktPmRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CkBAIC0x
NTYsMjEgKzE1NiwyMSBAQCBEYXRhVHJhbnNmZXJJdGVtUG9saWN5V3JhcHBlcjo6fkRhdGFUcmFu
c2Zlckl0ZW1Qb2xpY3lXcmFwcGVyKCkKIAogU3RyaW5nIERhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lX
cmFwcGVyOjpraW5kKCkgY29uc3QKIHsKLSAgICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpID09
IENsaXBib2FyZE51bWIpCisgICAgaWYgKCFtX2NsaXBib2FyZC0+Y2FuUmVhZFR5cGVzKCkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gbV9pdGVtLT5raW5kKCk7CiB9CiAK
IFN0cmluZyBEYXRhVHJhbnNmZXJJdGVtUG9saWN5V3JhcHBlcjo6dHlwZSgpIGNvbnN0CiB7Ci0g
ICAgaWYgKG1fY2xpcGJvYXJkLT5wb2xpY3koKSA9PSBDbGlwYm9hcmROdW1iKQorICAgIGlmICgh
bV9jbGlwYm9hcmQtPmNhblJlYWRUeXBlcygpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAg
ICAgcmV0dXJuIG1faXRlbS0+dHlwZSgpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlckl0ZW1Qb2xp
Y3lXcmFwcGVyOjpnZXRBc1N0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBjYWxsYmFj
aykgY29uc3QKIHsKLSAgICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpICE9IENsaXBib2FyZFJl
YWRhYmxlICYmIG1fY2xpcGJvYXJkLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAg
ICBpZiAoIW1fY2xpcGJvYXJkLT5jYW5SZWFkRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX2l0ZW0tPmdldEFzU3RyaW5nKGNhbGxiYWNrLCBtX2NsaXBib2FyZC0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCB2
b2lkIERhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lXcmFwcGVyOjpnZXRBc1N0cmluZyhQYXNzUmVmUHRy
PFN0cmluZ0NhbGxiYWNrPiBjYWxsYgogCiBQYXNzUmVmUHRyPEJsb2I+IERhdGFUcmFuc2Zlckl0
ZW1Qb2xpY3lXcmFwcGVyOjpnZXRBc0ZpbGUoKSBjb25zdAogewotICAgIGlmIChtX2NsaXBib2Fy
ZC0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUgJiYgbV9jbGlwYm9hcmQtPnBvbGljeSgp
ICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghbV9jbGlwYm9hcmQtPmNhblJlYWREYXRh
KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIG1faXRlbS0+Z2V0QXNGaWxlKCk7
CkBAIC0yMzgsNyArMjM4LDcgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmRDaHJvbWl1bT4gQ2xpcGJv
YXJkQ2hyb21pdW06OmNyZWF0ZShDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFQKIAogdm9pZCBDbGlw
Ym9hcmRDaHJvbWl1bTo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBpZiAo
cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9kYXRhT2JqZWN0LT5jbGVhckRhdGEobm9ybWFsaXpl
VHlwZSh0eXBlKSk7CkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBDbGlwYm9hcmRDaHJvbWl1bTo6
Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogdm9pZCBDbGlwYm9hcmRDaHJvbWl1bTo6
Y2xlYXJBbGxEYXRhKCkKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUp
CisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9kYXRh
T2JqZWN0LT5jbGVhckFsbCgpOwpAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgQ2xpcGJvYXJkQ2hy
b21pdW06OmNsZWFyQWxsRGF0YSgpCiAKIFN0cmluZyBDbGlwYm9hcmRDaHJvbWl1bTo6Z2V0RGF0
YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBi
b2FyZFJlYWRhYmxlKQorICAgIGlmICghY2FuUmVhZERhdGEoKSkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCiAgICAgYm9vbCBjb252ZXJ0VG9VUkwgPSBmYWxzZTsKQEAgLTI2OCw3ICsyNjgs
NyBAQCBTdHJpbmcgQ2xpcGJvYXJkQ2hyb21pdW06OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdAogCiBib29sIENsaXBib2FyZENocm9taXVtOjpzZXREYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9h
cmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICByZXR1cm4gbV9kYXRhT2JqZWN0LT5zZXREYXRhKG5vcm1hbGl6ZVR5cGUodHlw
ZSksIGRhdGEpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIGJvb2wgQ2xpcGJvYXJkQ2hyb21pdW06OnNl
dERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAvLyBleHRlbnNp
b25zIGJleW9uZCBJRSdzIEFQSQogTGlzdEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRDaHJvbWl1
bTo6dHlwZXMoKSBjb25zdAogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJs
ZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlKQorICAgIGlmICghY2FuUmVh
ZFR5cGVzKCkpCiAgICAgICAgIHJldHVybiBMaXN0SGFzaFNldDxTdHJpbmc+KCk7CiAKICAgICBy
ZXR1cm4gbV9kYXRhT2JqZWN0LT50eXBlcygpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIExpc3RIYXNo
U2V0PFN0cmluZz4gQ2xpcGJvYXJkQ2hyb21pdW06OnR5cGVzKCkgY29uc3QKIFBhc3NSZWZQdHI8
RmlsZUxpc3Q+IENsaXBib2FyZENocm9taXVtOjpmaWxlcygpIGNvbnN0CiB7CiAgICAgUmVmUHRy
PEZpbGVMaXN0PiBmaWxlcyA9IEZpbGVMaXN0OjpjcmVhdGUoKTsKLSAgICBpZiAocG9saWN5KCkg
IT0gQ2xpcGJvYXJkUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFkRGF0YSgpKQogICAgICAgICBy
ZXR1cm4gZmlsZXMucmVsZWFzZSgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Rh
dGFPYmplY3QtPmxlbmd0aCgpOyArK2kpIHsKQEAgLTMwMiw3ICszMDIsNyBAQCBQYXNzUmVmUHRy
PEZpbGVMaXN0PiBDbGlwYm9hcmRDaHJvbWl1bTo6ZmlsZXMoKSBjb25zdAogCiB2b2lkIENsaXBi
b2FyZENocm9taXVtOjpzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2UqIGltYWdlLCBOb2RlKiBub2Rl
LCBjb25zdCBJbnRQb2ludCYgbG9jKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRJ
bWFnZVdyaXRhYmxlICYmIHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICgh
Y2FuU2V0RHJhZ0ltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2RyYWdJbWFn
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKaW5kZXgg
MjYzYjZjZjhmMmVkYzU5OThmMTVhMDFhZWJjNTcyMmUzNTk2NjQ0YS4uZjUwNDYwYTcyMWFjNDAz
ZGYxYWNhZTliNTQ0MDM4MGVhODNhODFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0NsaXBib2FyZEd0ay5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgQ2xpcGJvYXJk
RGF0YVR5cGUgZGF0YU9iamVjdFR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUoY29uc3QgU3RyaW5n
JiByYXdUeQogCiB2b2lkIENsaXBib2FyZEd0azo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlw
ZVN0cmluZykKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAg
aWYgKCFjYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2xpcGJvYXJkRGF0
YVR5cGUgdHlwZSA9IGRhdGFPYmplY3RUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKHR5cGVTdHJp
bmcpOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgQ2xpcGJvYXJkR3RrOjpjbGVhckRhdGEoY29u
c3QgU3RyaW5nJiB0eXBlU3RyaW5nKQogCiB2b2lkIENsaXBib2FyZEd0azo6Y2xlYXJBbGxEYXRh
KCkKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFj
YW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgZG8gbm90IGNsZWFy
IGZpbGVuYW1lcy4gQWNjb3JkaW5nIHRvIHRoZSBzcGVjOiAiVGhlIGNsZWFyRGF0YSgpIG1ldGhv
ZApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgQ2xpcGJvYXJkR3RrOjpjbGVhckFsbERhdGEoKQog
CiBTdHJpbmcgQ2xpcGJvYXJkR3RrOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZykg
Y29uc3QKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwgIW1fZGF0
YU9iamVjdCkKKyAgICBpZiAoIWNhblJlYWREYXRhKCkgfHwgIW1fZGF0YU9iamVjdCkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaWYgKG1fY2xpcGJvYXJkKQpAQCAtMTY5LDcgKzE2
OSw3IEBAIFN0cmluZyBDbGlwYm9hcmRHdGs6OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlU3Ry
aW5nKSBjb25zdAogCiBib29sIENsaXBib2FyZEd0azo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5
cGVTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xp
cGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CkBAIC0xOTAsNyArMTkwLDcgQEAg
Ym9vbCBDbGlwYm9hcmRHdGs6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGRhdGEpCiAKIExpc3RIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkR3RrOjp0eXBl
cygpIGNvbnN0CiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlICYmIHBv
bGljeSgpICE9IENsaXBib2FyZFR5cGVzUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFkVHlwZXMo
KSkKICAgICAgICAgcmV0dXJuIExpc3RIYXNoU2V0PFN0cmluZz4oKTsKIAogICAgIGlmIChtX2Ns
aXBib2FyZCkKQEAgLTIxOSw3ICsyMTksNyBAQCBMaXN0SGFzaFNldDxTdHJpbmc+IENsaXBib2Fy
ZEd0azo6dHlwZXMoKSBjb25zdAogCiBQYXNzUmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9hcmRHdGs6
OmZpbGVzKCkgY29uc3QKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUp
CisgICAgaWYgKCFjYW5SZWFkRGF0YSgpKQogICAgICAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0
ZSgpOwogCiAgICAgaWYgKG1fY2xpcGJvYXJkKQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgQ2xp
cGJvYXJkR3RrOjpzZXREcmFnSW1hZ2VFbGVtZW50KE5vZGUqIGVsZW1lbnQsIGNvbnN0IEludFBv
aW50JiBsb2NhdGlvbikKIAogdm9pZCBDbGlwYm9hcmRHdGs6OnNldERyYWdJbWFnZShDYWNoZWRJ
bWFnZSogaW1hZ2UsIE5vZGUqIGVsZW1lbnQsIGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikKIHsK
LSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkSW1hZ2VXcml0YWJsZSAmJiBwb2xpY3koKSAh
PSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhblNldERyYWdJbWFnZSgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAobV9kcmFnSW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0NsaXBib2FyZE1hYy5tbQppbmRleCBhNWIyOWQ5OWY4MjhkOTg0NWMzYjdmMTdjODdi
YTU2YWFlYmU0MmUxLi4zNmE0ZDhlMjg1NjA4MWFiMDg5OTEzMGVmMmZjNjc0ZDlkYzczNTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KQEAgLTE1NSw3
ICsxNTUsNyBAQCBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUo
TGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsCiAKIHZvaWQgQ2xpcGJvYXJkTWFjOjpj
bGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlw
Ym9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBub3RlIE5TUGFzdGVib2FyZCBlbmZvcmNlcyBjaGFuZ2VDb3VudCBpdHNlbGYg
b24gd3JpdGluZyAtIGNhbid0IHdyaXRlIGlmIG5vdCB0aGUgb3duZXIKQEAgLTE2Nyw3ICsxNjcs
NyBAQCB2b2lkIENsaXBib2FyZE1hYzo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIAog
dm9pZCBDbGlwYm9hcmRNYWM6OmNsZWFyQWxsRGF0YSgpCiB7Ci0gICAgaWYgKHBvbGljeSgpICE9
IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghY2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIG5vdGUgTlNQYXN0ZWJvYXJkIGVuZm9yY2VzIGNoYW5nZUNvdW50IGl0
c2VsZiBvbiB3cml0aW5nIC0gY2FuJ3Qgd3JpdGUgaWYgbm90IHRoZSBvd25lcgpAQCAtMjIwLDcg
KzIyMCw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBhYnNvbHV0ZVVSTHNGcm9tUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBiCiAKIFN0cmluZyBDbGlwYm9hcmRNYWM6
OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewotICAgIGlmIChwb2xpY3koKSAh
PSBDbGlwYm9hcmRSZWFkYWJsZSB8fCBtX2NsaXBib2FyZENvbnRlbnRzID09IERyYWdBbmREcm9w
RmlsZXMpCisgICAgaWYgKCFjYW5SZWFkRGF0YSgpIHx8IG1fY2xpcGJvYXJkQ29udGVudHMgPT0g
RHJhZ0FuZERyb3BGaWxlcykKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgY29uc3Qg
U3RyaW5nJiBjb2NvYVR5cGUgPSBjb2NvYVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlwZSk7
CkBAIC0yNDksNyArMjQ5LDcgQEAgU3RyaW5nIENsaXBib2FyZE1hYzo6Z2V0RGF0YShjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CiAKIGJvb2wgQ2xpcGJvYXJkTWFjOjpzZXREYXRhKGNvbnN0IFN0
cmluZyAmdHlwZSwgY29uc3QgU3RyaW5nICZkYXRhKQogewotICAgIGlmIChwb2xpY3koKSAhPSBD
bGlwYm9hcmRXcml0YWJsZSB8fCBtX2NsaXBib2FyZENvbnRlbnRzID09IERyYWdBbmREcm9wRmls
ZXMpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSB8fCBtX2NsaXBib2FyZENvbnRlbnRzID09IERy
YWdBbmREcm9wRmlsZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBub3RlIE5TUGFz
dGVib2FyZCBlbmZvcmNlcyBjaGFuZ2VDb3VudCBpdHNlbGYgb24gd3JpdGluZyAtIGNhbid0IHdy
aXRlIGlmIG5vdCB0aGUgb3duZXIKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgQ2xpcGJvYXJk
TWFjOjpzZXREYXRhKGNvbnN0IFN0cmluZyAmdHlwZSwgY29uc3QgU3RyaW5nICZkYXRhKQogCiBM
aXN0SGFzaFNldDxTdHJpbmc+IENsaXBib2FyZE1hYzo6dHlwZXMoKSBjb25zdAogewotICAgIGlm
IChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRU
eXBlc1JlYWRhYmxlKQorICAgIGlmICghY2FuUmVhZFR5cGVzKCkpCiAgICAgICAgIHJldHVybiBM
aXN0SGFzaFNldDxTdHJpbmc+KCk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKQEAgLTMx
Miw3ICszMTIsNyBAQCBMaXN0SGFzaFNldDxTdHJpbmc+IENsaXBib2FyZE1hYzo6dHlwZXMoKSBj
b25zdAogLy8gY2xpcGJvYXJkIGFyZSBub3QgcmVmbGVjdGVkIGluIGFueSBGaWxlTGlzdCBvYmpl
Y3RzIHRoZSBwYWdlIGhhcyBhY2Nlc3NlZCBhbmQgc3RvcmVkCiBQYXNzUmVmUHRyPEZpbGVMaXN0
PiBDbGlwYm9hcmRNYWM6OmZpbGVzKCkgY29uc3QKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xp
cGJvYXJkUmVhZGFibGUgfHwgbV9jbGlwYm9hcmRDb250ZW50cyA9PSBEcmFnQW5kRHJvcERhdGEp
CisgICAgaWYgKCFjYW5SZWFkRGF0YSgpIHx8IG1fY2xpcGJvYXJkQ29udGVudHMgPT0gRHJhZ0Fu
ZERyb3BEYXRhKQogICAgICAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0ZSgpOwogCiAgICAgVmVj
dG9yPFN0cmluZz4gYWJzb2x1dGVVUkxzID0gYWJzb2x1dGVVUkxzRnJvbVBhc3RlYm9hcmRGaWxl
bmFtZXMobV9wYXN0ZWJvYXJkTmFtZSk7CkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBDbGlwYm9h
cmRNYWM6OnNldERyYWdJbWFnZUVsZW1lbnQoTm9kZSAqbm9kZSwgY29uc3QgSW50UG9pbnQgJmxv
YykKIAogdm9pZCBDbGlwYm9hcmRNYWM6OnNldERyYWdJbWFnZShDYWNoZWRJbWFnZSogaW1hZ2Us
IE5vZGUgKm5vZGUsIGNvbnN0IEludFBvaW50ICZsb2MpCiB7Ci0gICAgaWYgKHBvbGljeSgpID09
IENsaXBib2FyZEltYWdlV3JpdGFibGUgfHwgcG9saWN5KCkgPT0gQ2xpcGJvYXJkV3JpdGFibGUp
IHsKKyAgICBpZiAoY2FuU2V0RHJhZ0ltYWdlKCkpIHsKICAgICAgICAgaWYgKG1fZHJhZ0ltYWdl
KQogICAgICAgICAgICAgbV9kcmFnSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICAgICAg
bV9kcmFnSW1hZ2UgPSBpbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0NsaXBib2FyZFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2Fy
ZFF0LmNwcAppbmRleCA3MWM5MWNiNDFiNmNlMWRhOTJmNjIzZmU1MDkxZDRiYjBjYzhkMzc4Li5h
ZWZlZjc3NGJiODM5NmNjOGFiYzBkMzY0MWUwZDVkNzI5Y2IwZjc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgQ2xpcGJv
YXJkUXQ6On5DbGlwYm9hcmRRdCgpCiAKIHZvaWQgQ2xpcGJvYXJkUXQ6OmNsZWFyRGF0YShjb25z
dCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxl
KQorICAgIGlmICghY2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICht
X3dyaXRhYmxlRGF0YSkgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgQ2xpcGJvYXJkUXQ6OmNs
ZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIHZvaWQgQ2xpcGJvYXJkUXQ6OmNsZWFyQWxs
RGF0YSgpCiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlm
ICghY2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKIAogI2lmbmRlZiBRVF9OT19DTElQ
Qk9BUkQKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIENsaXBib2FyZFF0OjpjbGVhckFsbERhdGEo
KQogU3RyaW5nIENsaXBib2FyZFF0OjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QK
IHsKIAotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSkKKyAgICBpZiAoIWNh
blJlYWREYXRhKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGlmIChpc0h0bWxN
aW1lVHlwZSh0eXBlKSAmJiBtX3JlYWRhYmxlRGF0YS0+aGFzSHRtbCgpKQpAQCAtMTYzLDcgKzE2
Myw3IEBAIFN0cmluZyBDbGlwYm9hcmRRdDo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0CiAKIGJvb2wgQ2xpcGJvYXJkUXQ6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIGRhdGEpCiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxl
KQorICAgIGlmICghY2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmICghbV93cml0YWJsZURhdGEpCkBAIC0xODQsNyArMTg0LDcgQEAgYm9vbCBDbGlwYm9hcmRR
dDo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKIC8vIGV4
dGVuc2lvbnMgYmV5b25kIElFJ3MgQVBJCiBMaXN0SGFzaFNldDxTdHJpbmc+IENsaXBib2FyZFF0
Ojp0eXBlcygpIGNvbnN0CiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxl
ICYmIHBvbGljeSgpICE9IENsaXBib2FyZFR5cGVzUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFk
VHlwZXMoKSkKICAgICAgICAgcmV0dXJuIExpc3RIYXNoU2V0PFN0cmluZz4oKTsKIAogICAgIEFT
U0VSVChtX3JlYWRhYmxlRGF0YSk7CkBAIC0xOTcsNyArMTk3LDcgQEAgTGlzdEhhc2hTZXQ8U3Ry
aW5nPiBDbGlwYm9hcmRRdDo6dHlwZXMoKSBjb25zdAogCiBQYXNzUmVmUHRyPEZpbGVMaXN0PiBD
bGlwYm9hcmRRdDo6ZmlsZXMoKSBjb25zdAogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9h
cmRSZWFkYWJsZSB8fCAhbV9yZWFkYWJsZURhdGEtPmhhc1VybHMoKSkKKyAgICBpZiAoIWNhblJl
YWREYXRhKCkgfHwgIW1fcmVhZGFibGVEYXRhLT5oYXNVcmxzKCkpCiAgICAgICAgIHJldHVybiBG
aWxlTGlzdDo6Y3JlYXRlKCk7CiAKICAgICBSZWZQdHI8RmlsZUxpc3Q+IGZpbGVMaXN0ID0gRmls
ZUxpc3Q6OmNyZWF0ZSgpOwpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgQ2xpcGJvYXJkUXQ6OnNl
dERyYWdJbWFnZUVsZW1lbnQoTm9kZSogbm9kZSwgY29uc3QgSW50UG9pbnQmIHBvaW50KQogCiB2
b2lkIENsaXBib2FyZFF0OjpzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2UqIGltYWdlLCBOb2RlICpu
b2RlLCBjb25zdCBJbnRQb2ludCAmbG9jKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9h
cmRJbWFnZVdyaXRhYmxlICYmIHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlm
ICghY2FuU2V0RHJhZ0ltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2RyYWdJ
bWFnZSkKQEAgLTM1OSw3ICszNTksNyBAQCBQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0
PiBDbGlwYm9hcmRRdDo6aXRlbXMoKQogICAgIGlmICghbV9yZWFkYWJsZURhdGEpCiAgICAgICAg
IHJldHVybiBpdGVtczsKIAotICAgIGlmIChpc0ZvckNvcHlBbmRQYXN0ZSgpICYmIHBvbGljeSgp
ID09IENsaXBib2FyZFJlYWRhYmxlKSB7CisgICAgaWYgKGlzRm9yQ29weUFuZFBhc3RlKCkgJiYg
Y2FuUmVhZERhdGEoKSkgewogICAgICAgICBjb25zdCBRU3RyaW5nTGlzdCB0eXBlcyA9IG1fcmVh
ZGFibGVEYXRhLT5mb3JtYXRzKCk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdHlwZXMu
Y291bnQoKTsgKytpKQogICAgICAgICAgICAgaXRlbXMtPmFkZFBhc3RlYm9hcmRJdGVtKHR5cGVz
LmF0KGkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RhdGFUcmFu
c2Zlckl0ZW1MaXN0UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5z
ZmVySXRlbUxpc3RRdC5jcHAKaW5kZXggMTgwNmE3ZjZmNWNjNDBkNWE0NTk1MjI5ZDc2ZWJlYTZm
ZTczZWM0Zi4uYzQzNTVhODExNmI5NjU1Y2VlMThmZDg2NTQ4ZmJlNTBmOWE5NTcyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbUxpc3RRdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbUxpc3RR
dC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6RGF0YVRyYW5z
ZmVySXRlbUxpc3RRdChQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIsIFNjcmkKIAogc2l6ZV90
IERhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6Omxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fb3du
ZXItPnBvbGljeSgpID09IENsaXBib2FyZE51bWIpCisgICAgaWYgKCFtX293bmVyLT5jYW5SZWFk
VHlwZXMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gbV9pdGVtcy5zaXplKCk7
CkBAIC01NSw3ICs1NSw3IEBAIHNpemVfdCBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjpsZW5ndGgo
KSBjb25zdAogCiBQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW0+IERhdGFUcmFuc2Zlckl0ZW1M
aXN0UXQ6Oml0ZW0odW5zaWduZWQgbG9uZyBpbmRleCkKIHsKLSAgICBpZiAobV9vd25lci0+cG9s
aWN5KCkgPT0gQ2xpcGJvYXJkTnVtYiB8fCBpbmRleCA+PSBsZW5ndGgoKSkKKyAgICBpZiAoIW1f
b3duZXItPmNhblJlYWRUeXBlcygpIHx8IGluZGV4ID49IGxlbmd0aCgpKQogICAgICAgICByZXR1
cm4gMDsKIAogICAgIHJldHVybiBtX2l0ZW1zW2luZGV4XTsKQEAgLTYzLDcgKzYzLDcgQEAgUGFz
c1JlZlB0cjxEYXRhVHJhbnNmZXJJdGVtPiBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjppdGVtKHVu
c2lnbmVkIGxvbmcgaW5kZXgpCiAKIHZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6ZGVsZXRl
SXRlbSh1bnNpZ25lZCBsb25nIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAo
bV9vd25lci0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpIHsKKyAgICBpZiAoIW1fb3du
ZXItPmNhbldyaXRlRGF0YSgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgRGF0YVRyYW5zZmVy
SXRlbUxpc3RRdDo6ZGVsZXRlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4LCBFeGNlcHRpb25Db2Rl
JiBlYykKIAogdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjpjbGVhcigpCiB7Ci0gICAgaWYg
KG1fb3duZXItPnBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghbV9vd25l
ci0+Y2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXRlbXMuY2xlYXIo
KTsKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjpjbGVhcigp
CiAKIHZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6YWRkKGNvbnN0IFN0cmluZyYgZGF0YSwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAobV9vd25l
ci0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFtX293bmVyLT5jYW5X
cml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gT25seSBvbmUgJ3N0cmluZycg
aXRlbSB3aXRoIGEgZ2l2ZW4gdHlwZSBpcyBhbGxvd2VkIGluIHRoZSBjb2xsZWN0aW9uLgpAQCAt
MTAxLDcgKzEwMSw3IEBAIHZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6YWRkKGNvbnN0IFN0
cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpCiAKIHZvaWQgRGF0YVRyYW5z
ZmVySXRlbUxpc3RRdDo6YWRkKFBhc3NSZWZQdHI8RmlsZT4gZmlsZSkKIHsKLSAgICBpZiAobV9v
d25lci0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUgfHwgIWZpbGUpCisgICAgaWYgKCFt
X293bmVyLT5jYW5Xcml0ZURhdGEoKSB8fCAhZmlsZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9pdGVtcy5hcHBlbmQoRGF0YVRyYW5zZmVySXRlbTo6Y3JlYXRlKG1fb3duZXIsIG1fY29udGV4
dCwgZmlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0YVRy
YW5zZmVySXRlbVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RhdGFUcmFuc2Zl
ckl0ZW1RdC5jcHAKaW5kZXggOWZmNjIxZWY0OTgzNDk2YTAzYjhmYTc2OGY5Mzg3NmM5OGIxZWEx
ZC4uZDdlOWI3NzlhMjE1MjhkOTdlNTE0YzViMDA0YzZlODE1OTEyMTBkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbVF0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtUXQuY3BwCkBAIC05NSw4
ICs5NSw3IEBAIERhdGFUcmFuc2Zlckl0ZW1RdDo6RGF0YVRyYW5zZmVySXRlbVF0KFBhc3NSZWZQ
dHI8Q2xpcGJvYXJkPiBvd25lciwKIAogdm9pZCBEYXRhVHJhbnNmZXJJdGVtUXQ6OmdldEFzU3Ry
aW5nKFBhc3NSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+IGNhbGxiYWNrKSBjb25zdAogewotICAgIGlm
ICgob3duZXIoKS0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUgJiYgb3duZXIoKS0+cG9s
aWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCi0gICAgICAgIHx8IGtpbmQoKSAhPSBraW5kU3Ry
aW5nKQorICAgIGlmICghb3duZXIoKS0+cG9saWN5KCktPmNhblJlYWREYXRhKCkgfHwga2luZCgp
ICE9IGtpbmRTdHJpbmcpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2RhdGFTb3VyY2Ug
PT0gSW50ZXJuYWxTb3VyY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBi
b2FyZFdpbi5jcHAKaW5kZXggYzJmOTk2NDk2OTliNjQ5ZWVlNmFlY2JlZmRjZDIzZWY5MTAxYzJl
My4uN2NhMzE2NTk1YTBiOWFlZDBiOGY2YWQyYjc4ZWIyYjU3YjdhYzg0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKQEAgLTQwNyw3ICs0MDcsNyBA
QCB2b2lkIENsaXBib2FyZFdpbjo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAg
ICAvLyBGSVhNRTogTmVlZCB0byBiZSBhYmxlIHRvIHdyaXRlIHRvIHRoZSBzeXN0ZW0gY2xpcGJv
YXJkIDxyZGFyOi8vcHJvYmxlbS81MDE1OTQxPgogICAgIEFTU0VSVChpc0ZvckRyYWdBbmREcm9w
KCkpOwotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSB8fCAhbV93cml0YWJs
ZURhdGFPYmplY3QpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSB8fCAhbV93cml0YWJsZURhdGFP
YmplY3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBl
ID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZSh0eXBlKTsKQEAgLTQyNyw3ICs0MjcsNyBAQCB2
b2lkIENsaXBib2FyZFdpbjo6Y2xlYXJBbGxEYXRhKCkKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0
byBiZSBhYmxlIHRvIHdyaXRlIHRvIHRoZSBzeXN0ZW0gY2xpcGJvYXJkIDxyZGFyOi8vcHJvYmxl
bS81MDE1OTQxPgogICAgIEFTU0VSVChpc0ZvckRyYWdBbmREcm9wKCkpOwotICAgIGlmIChwb2xp
Y3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgbV93cml0YWJsZURhdGFPYmplY3QgPSAwOwpAQCAtNDM3
LDcgKzQzNyw3IEBAIHZvaWQgQ2xpcGJvYXJkV2luOjpjbGVhckFsbERhdGEoKQogCiBTdHJpbmcg
Q2xpcGJvYXJkV2luOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsgICAgIAot
ICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSB8fCAoIW1fZGF0YU9iamVjdCAm
JiBtX2RyYWdEYXRhTWFwLmlzRW1wdHkoKSkpCisgICAgaWYgKCFjYW5SZWFkRGF0YSgpIHx8ICgh
bV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0RhdGFNYXAuaXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJu
ICIiOwogCiAgICAgQ2xpcGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRUeXBlRnJv
bU1JTUVUeXBlKHR5cGUpOwpAQCAtNDU5LDcgKzQ1OSw3IEBAIGJvb2wgQ2xpcGJvYXJkV2luOjpz
ZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIC8v
IEZJWE1FOiBOZWVkIHRvIGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlIHN5c3RlbSBjbGlwYm9hcmQg
PHJkYXI6Ly9wcm9ibGVtLzUwMTU5NDE+CiAgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3AoKSk7
Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlIHx8ICFtX3dyaXRhYmxlRGF0
YU9iamVjdCkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpIHx8ICFtX3dyaXRhYmxlRGF0YU9iamVj
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ2xpcGJvYXJkRGF0YVR5cGUgd2luVHlw
ZSA9IGNsaXBib2FyZFR5cGVGcm9tTUlNRVR5cGUodHlwZSk7CkBAIC01MDIsNyArNTAyLDcgQEAg
c3RhdGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJl
c3VsdHMsIGNvbnN0IEZPUk1BVEVUQyYKIExpc3RIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkV2lu
Ojp0eXBlcygpIGNvbnN0CiB7IAogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gcmVzdWx0czsKLSAg
ICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUgJiYgcG9saWN5KCkgIT0gQ2xpcGJv
YXJkVHlwZXNSZWFkYWJsZSkKKyAgICBpZiAoIWNhblJlYWRUeXBlcygpKQogICAgICAgICByZXR1
cm4gcmVzdWx0czsKIAogICAgIGlmICghbV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0RhdGFNYXAuaXNF
bXB0eSgpKQpAQCAtNTQwLDcgKzU0MCw3IEBAIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IENsaXBib2Fy
ZFdpbjo6ZmlsZXMoKSBjb25zdAogICAgIHJldHVybiAwOwogI2Vsc2UKICAgICBSZWZQdHI8Rmls
ZUxpc3Q+IGZpbGVzID0gRmlsZUxpc3Q6OmNyZWF0ZSgpOwotICAgIGlmIChwb2xpY3koKSAhPSBD
bGlwYm9hcmRSZWFkYWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlKQor
ICAgIGlmICghY2FuUmVhZERhdGEoKSkKICAgICAgICAgcmV0dXJuIGZpbGVzLnJlbGVhc2UoKTsK
IAogICAgIGlmICghbV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0RhdGFNYXAuaXNFbXB0eSgpKQpAQCAt
NTc4LDcgKzU3OCw3IEBAIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZFdpbjo6ZmlsZXMo
KSBjb25zdAogCiB2b2lkIENsaXBib2FyZFdpbjo6c2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiBp
bWFnZSwgTm9kZSAqbm9kZSwgY29uc3QgSW50UG9pbnQgJmxvYykKIHsKLSAgICBpZiAocG9saWN5
KCkgIT0gQ2xpcGJvYXJkSW1hZ2VXcml0YWJsZSAmJiBwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0
YWJsZSkgCisgICAgaWYgKCFjYW5TZXREcmFnSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKICAgICBpZiAobV9kcmFnSW1hZ2UpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2I1NjNkNGE0OTc4NWNhM2Q1Nzgx
ZjAyNDZlY2FhNjI4YmNmNDdmYi4uMDM1Mjg4OThmZTUzYzRjY2VlOTZjOWEzNDdkMDEyNTNmZDQ4
YWRlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAzLTIyICBEYW5pZWwgQ2hlbmcgIDxk
Y2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERhdGEgc3RvcmUgc2hvdWxkIGJlIHJlYWRh
YmxlIGluIGRyYWdzdGFydC9jb3B5L2N1dCBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4t
Y29weS1hbmQtY3V0LWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1jb3B5LWFuZC1jdXQtZXZlbnRzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1kcmFnc3RhcnQtZXZl
bnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvY2Fu
LXJlYWQtaW4tZHJhZ3N0YXJ0LWV2ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAzLTIxICBIYXJh
bGQgQWx2ZXN0cmFuZCAgPGh0YUBnb29nbGUuY29tPgogCiAgICAgICAgIEV4cG9zZSB0aGUgVHlw
ZSBmaWVsZCBvZiBhbiBSVENTdGF0c1JlcG9ydApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWNvcHktYW5kLWN1dC1ldmVudHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWNvcHktYW5k
LWN1dC1ldmVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4YzRhZWM4NGEzZmZhMTc0M2M1
M2U4M2I0ZTc5NDJlZjc0ZDM4MTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tY29weS1hbmQtY3V0LWV2ZW50cy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw1IEBACitTaW1wbGUgdGVzdCB0aGF0IGRhdGEgc2V0IGR1cmluZyBhIGNv
cHkvY3V0IGV2ZW50IGNhbiBiZSByZWFkIGJhY2suIFRvIHJ1biB0aGUgdGVzdCBtYW51YWxseSwg
c2ltcGx5IHNlbGVjdCBhbnkgdGV4dCBhbmQgaW5pdGlhdGUgYSBjb3B5L2N1dCBvcGVyYXRpb24u
CisKK2NvcHk6IFNVQ0NFU1MKK2N1dDogU1VDQ0VTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tY29weS1hbmQtY3V0LWV2ZW50cy5odG1s
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWNvcHktYW5kLWN1
dC1ldmVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Njk0ODMyNDkwMzU1OTRhMDA5MTEwODk1ZTRmYzQw
OGFlMWVmYThlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2Nhbi1yZWFkLWluLWNvcHktYW5kLWN1dC1ldmVudHMuaHRtbApAQCAtMCwwICsxLDQyIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9n
KHRleHQpIHsKKyAgICB2YXIgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOwor
ICAgIGxvZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7CisgICAg
bG9nLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOworfQorCitmdW5j
dGlvbiBjb3B5VGVzdChlKSB7CisgICAgZS5jbGlwYm9hcmREYXRhLnNldERhdGEoJ3RleHQvcGxh
aW4nLCAnY29weSB0ZXN0Jyk7CisgICAgaWYgKGV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMuaW5k
ZXhPZigndGV4dC9wbGFpbicpIDwgMCB8fAorICAgICAgICBldmVudC5jbGlwYm9hcmREYXRhLmdl
dERhdGEoJ3RleHQvcGxhaW4nKSAhPSAnY29weSB0ZXN0JykKKyAgICAgICAgbG9nKCdjb3B5OiBG
QUlMRUQnKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygnY29weTogU1VDQ0VTUycpOworfQorCitm
dW5jdGlvbiBjdXRUZXN0KGUpIHsKKyAgICBlLmNsaXBib2FyZERhdGEuc2V0RGF0YSgndGV4dC9w
bGFpbicsICdjdXQgdGVzdCcpOworICAgIGlmIChldmVudC5jbGlwYm9hcmREYXRhLnR5cGVzLmlu
ZGV4T2YoJ3RleHQvcGxhaW4nKSA8IDAgfHwKKyAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5n
ZXREYXRhKCd0ZXh0L3BsYWluJykgIT0gJ2N1dCB0ZXN0JykKKyAgICAgICAgbG9nKCdjdXQ6IEZB
SUxFRCcpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCdjdXQ6IFNVQ0NFU1MnKTsKK30KKworZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICBy
ZXR1cm47CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoJ2NvcHknKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY3V0Jyk7Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIiBvbmNvcHk9ImNvcHlUZXN0
KGV2ZW50KSIgb25jdXQ9ImN1dFRlc3QoZXZlbnQpIj4KKzxwPlNpbXBsZSB0ZXN0IHRoYXQgZGF0
YSBzZXQgZHVyaW5nIGEgY29weS9jdXQgZXZlbnQgY2FuIGJlIHJlYWQgYmFjay4gVG8gcnVuCit0
aGUgdGVzdCBtYW51YWxseSwgc2ltcGx5IHNlbGVjdCBhbnkgdGV4dCBhbmQgaW5pdGlhdGUgYSBj
b3B5L2N1dCBvcGVyYXRpb24uCis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWRyYWdzdGFy
dC1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2Fu
LXJlYWQtaW4tZHJhZ3N0YXJ0LWV2ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjQwM2Uw
YmFmZGIwZjhkNzI1ZjdkNTMxMmY4YjA3ODA1MGI0MDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWRyYWdzdGFydC1ldmVudC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitTaW1wbGUgdGVzdCB0aGF0IGRhdGEgc2V0IGR1
cmluZyBhIGRyYWdzdGFydCBldmVudCBjYW4gYmUgcmVhZCBiYWNrLiBUbyBydW4gdGhlIHRlc3Qg
bWFudWFsbHksIHNpbXBseSBzdGFydCBkcmFnZ2luZyB0aGUgJ0RyYWcgTWUnIGVsZW1lbnQgYmVs
b3cuCisKK0RyYWcgTWUKK2RyYWdzdGFydDogU1VDQ0VTUworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tZHJhZ3N0YXJ0LWV2ZW50Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tZHJhZ3N0YXJ0LWV2
ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYxZTVlOGZmNzg2NzdjMDU0NjU3MDYyYWM2OGJkMGIxMTQx
OTQ5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9j
YW4tcmVhZC1pbi1kcmFnc3RhcnQtZXZlbnQuaHRtbApAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKHRleHQpIHsK
KyAgICB2YXIgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOworICAgIGxvZy5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7CisgICAgbG9nLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOworfQorCitmdW5jdGlvbiBkcmFn
U3RhcnRUZXN0KGUpIHsKKyAgICBlLmRhdGFUcmFuc2Zlci5zZXREYXRhKCd0ZXh0L3BsYWluJywg
J2RyYWdzdGFydCB0ZXN0Jyk7CisgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcy5pbmRl
eE9mKCd0ZXh0L3BsYWluJykgPCAwIHx8CisgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5nZXRE
YXRhKCd0ZXh0L3BsYWluJykgIT0gJ2RyYWdzdGFydCB0ZXN0JykKKyAgICAgICAgbG9nKCdkcmFn
c3RhcnQ6IEZBSUxFRCcpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCdkcmFnc3RhcnQ6IFNVQ0NF
U1MnKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICByZXR1cm47CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAg
ICB2YXIgZHJhZ2dlZEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJhZ2dlZEVs
ZW1lbnQnKTsKKyAgICB2YXIgeCA9IGRyYWdnZWRFbGVtZW50Lm9mZnNldExlZnQgKyBkcmFnZ2Vk
RWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgdmFyIHkgPSBkcmFnZ2VkRWxlbWVudC5vZmZz
ZXRUb3AgKyBkcmFnZ2VkRWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworCisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAg
ZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byh4ICsgMTAwLCB5ICsgMTAwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlNpbXBsZSB0ZXN0
IHRoYXQgZGF0YSBzZXQgZHVyaW5nIGEgZHJhZ3N0YXJ0IGV2ZW50IGNhbiBiZSByZWFkIGJhY2su
IFRvIHJ1bgordGhlIHRlc3QgbWFudWFsbHksIHNpbXBseSBzdGFydCBkcmFnZ2luZyB0aGUgJ0Ry
YWcgTWUnIGVsZW1lbnQgYmVsb3cuCis8ZGl2IGlkPSJkcmFnZ2VkRWxlbWVudCIgZHJhZ2dhYmxl
PSJ0cnVlIiBvbmRyYWdzdGFydD0iZHJhZ1N0YXJ0VGVzdChldmVudCkiPkRyYWcgTWU8L2Rpdj4K
KzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194618</attachid>
            <date>2013-03-22 12:34:54 -0700</date>
            <delta_ts>2013-03-22 12:37:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-23695-20130322123041.patch</filename>
            <type>text/plain</type>
            <size>34701</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ1NzNlMjZmNDNhNDYw
N2I4MDUyNzRhMjA5MWY5MmFhY2I4Mzc1Yy4uMDU5MWYzNDJhZTYyNTI0ZGFjYTZmN2VhNzU5MDk5
ZWY4ZTc4MGY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDEzLTAzLTIyICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIERhdGEgc3RvcmUgc2hv
dWxkIGJlIHJlYWRhYmxlIGluIGRyYWdzdGFydC9jb3B5L2N1dCBldmVudHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjk1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgd2VyZSBzZXZlcmFsIGV2
ZW50cyB3aGVyZSBkYXRhIGNvdWxkIGJlIHdyaXR0ZW4gYnV0IG5vdCByZWFkIGJhY2sgZHVlIHRv
IHRoZSBmYWN0IHRoYXQKKyAgICAgICAgZGlmZmVyZW50IENsaXBib2FyZCBtZXRob2QgaW1wbGVt
ZW50YXRpb25zIGNoZWNrZWQgcGVybWlzc2lvbnMgaW5jb25zaXN0ZW50bHkuIFRoaXMgcGF0Y2gK
KyAgICAgICAgYWRkcyBoZWxwZXIgbWV0aG9kcyB0byBjaGVjayBpZiBhbiBvcGVyYXRpb24gaXMg
cGVybWl0dGVkIG9uIGEgQ2xpcGJvYXJkIGFuZCByZWZhY3RvcnMgYWxsCisgICAgICAgIGRpcmVj
dCBjb21wYXJpc29ucyBhZ2FpbnN0IENsaXBib2FyZDo6bV9wb2xpY3kgdG8gdXNlIHRoZSBuZXcg
aGVscGVycyBpbnN0ZWFkLiBUaGlzIGZpeGVzCisgICAgICAgIHNldmVyYWwgYnVncyB3aGVyZSBD
bGlwYm9hcmQ6OnR5cGVzIGFuZCBDbGlwYm9hcmQ6OmdldERhdGEgYXJlIG5vdCB1c2FibGUgaW5z
aWRlIHRoZQorICAgICAgICBhZm9yZW1lbnRpb25lZCBldmVudHMuCisKKyAgICAgICAgVGVzdHM6
IGVkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1jb3B5LWFuZC1jdXQtZXZlbnRzLmh0bWwK
KyAgICAgICAgICAgICAgIGVkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1kcmFnc3RhcnQt
ZXZlbnQuaHRtbAorCisgICAgICAgICogZG9tL0NsaXBib2FyZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmQ6OmNhblJlYWRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6Y2FuUmVhZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkOjpjYW5Xcml0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpj
YW5TZXREcmFnSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpoYXNGaWxlT2ZU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6aGFzU3RyaW5nT2ZUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6c2V0RHJvcEVmZmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmQ6OnNldEVmZmVjdEFsbG93ZWQpOgorICAgICAgICAqIGRvbS9DbGlwYm9h
cmQuaDoKKyAgICAgICAgKENsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJy
eS9DbGlwYm9hcmRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEJs
YWNrQmVycnk6OmNsZWFyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRCbGFja0Jl
cnJ5OjpjbGVhckFsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQmxhY2tCZXJy
eTo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRCbGFja0JlcnJ5OjpzZXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEJsYWNrQmVycnk6OnR5cGVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtUG9saWN5V3JhcHBlcjo6a2luZCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtUG9saWN5V3JhcHBlcjo6dHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtUG9saWN5V3JhcHBlcjo6Z2V0QXNTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbVBvbGljeVdyYXBwZXI6OmdldEFzRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6Y2xlYXJEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVtOjpjbGVhckFsbERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OmdldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkQ2hyb21pdW06OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkQ2hyb21pdW06OnR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVt
OjpmaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6c2V0RHJhZ0lt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZEd0azo6Y2xlYXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEd0azo6Y2xlYXJBbGxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0
azo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OnNldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjp0eXBlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRHdGs6OmZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6
c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkTWFjOjpjbGVhckRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkTWFjOjpjbGVhckFsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkTWFjOjpnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZE1hYzo6c2V0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6OnR5cGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZE1hYzo6ZmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkTWFjOjpzZXREcmFnSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0NsaXBib2FyZFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpjbGVhckRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OmNsZWFyQWxsRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRRdDo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6
c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6dHlwZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OmZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZFF0OjpzZXREcmFnSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6Oml0
ZW1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtTGlzdFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6Omxlbmd0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjppdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6OmRlbGV0ZUl0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6YWRkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9EYXRh
VHJhbnNmZXJJdGVtUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbVF0
OjpnZXRBc1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OmNsZWFyRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRXaW46OmNsZWFyQWxsRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRXaW46OmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpz
ZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6dHlwZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpmaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRXaW46OnNldERyYWdJbWFnZSk6CisKIDIwMTMtMDMtMjEgIEhhcmFsZCBBbHZlc3RyYW5k
ICA8aHRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgRXhwb3NlIHRoZSBUeXBlIGZpZWxkIG9mIGFu
IFJUQ1N0YXRzUmVwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCmluZGV4IDAyNzk5MjUxNTJl
ZTJiMTFlMWQxOTEwMmI1OTAzMjliZTMyZDNhZDYuLjY5MTBmOTVmYzVlNDhiOTFjNmIzM2I2YzVk
MWE5ZDdmODVjNzYwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCkBAIC01MSw2ICs1MSwy
NiBAQCB2b2lkIENsaXBib2FyZDo6c2V0QWNjZXNzUG9saWN5KENsaXBib2FyZEFjY2Vzc1BvbGlj
eSBwb2xpY3kpCiAgICAgbV9wb2xpY3kgPSBwb2xpY3k7CiB9CiAKK2Jvb2wgQ2xpcGJvYXJkOjpj
YW5SZWFkVHlwZXMoKSBjb25zdAoreworICAgIHJldHVybiBtX3BvbGljeSA9PSBDbGlwYm9hcmRS
ZWFkYWJsZSB8fCBtX3BvbGljeSA9PSBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlIHx8IG1fcG9saWN5
ID09IENsaXBib2FyZFdyaXRhYmxlOworfQorCitib29sIENsaXBib2FyZDo6Y2FuUmVhZERhdGEo
KSBjb25zdAoreworICAgIHJldHVybiBtX3BvbGljeSA9PSBDbGlwYm9hcmRSZWFkYWJsZSB8fCBt
X3BvbGljeSA9PSBDbGlwYm9hcmRXcml0YWJsZTsKK30KKworYm9vbCBDbGlwYm9hcmQ6OmNhbldy
aXRlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcG9saWN5ID09IENsaXBib2FyZFdyaXRh
YmxlOworfQorCitib29sIENsaXBib2FyZDo6Y2FuU2V0RHJhZ0ltYWdlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wb2xpY3kgPT0gQ2xpcGJvYXJkSW1hZ2VXcml0YWJsZSB8fCBtX3BvbGljeSA9
PSBDbGlwYm9hcmRXcml0YWJsZTsKK30KKwogLy8gVGhlc2UgImNvbnZlcnNpb24iIG1ldGhvZHMg
YXJlIGNhbGxlZCBieSBib3RoIFdlYkNvcmUgYW5kIFdlYktpdCwgYW5kIG5ldmVyIG1ha2Ugc2Vu
c2UgdG8gSlMsIHNvIHdlIGRvbid0CiAvLyB3b3JyeSBhYm91dCBzZWN1cml0eSBmb3IgdGhlc2Uu
IFRoZXkgZG9uJ3QgYWxsb3cgYWNjZXNzIHRvIHRoZSBwYXN0ZWJvYXJkIGFueXdheS4KIApAQCAt
MTI4LDcgKzE0OCw3IEBAIHZvaWQgQ2xpcGJvYXJkOjpzZXREZXN0aW5hdGlvbk9wZXJhdGlvbihE
cmFnT3BlcmF0aW9uIG9wKQogCiBib29sIENsaXBib2FyZDo6aGFzRmlsZU9mVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcG9saWN5ICE9IENsaXBib2FyZFJlYWRh
YmxlICYmIG1fcG9saWN5ICE9IENsaXBib2FyZFR5cGVzUmVhZGFibGUpCisgICAgaWYgKCFjYW5S
ZWFkVHlwZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIFJlZlB0cjxGaWxl
TGlzdD4gZmlsZUxpc3QgPSBmaWxlcygpOwpAQCAtMTQ0LDcgKzE2NCw3IEBAIGJvb2wgQ2xpcGJv
YXJkOjpoYXNGaWxlT2ZUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIAogYm9vbCBDbGlw
Ym9hcmQ6Omhhc1N0cmluZ09mVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7Ci0gICAg
aWYgKG1fcG9saWN5ICE9IENsaXBib2FyZFJlYWRhYmxlICYmIG1fcG9saWN5ICE9IENsaXBib2Fy
ZFR5cGVzUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFkVHlwZXMoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIAogICAgIHJldHVybiB0eXBlcygpLmNvbnRhaW5zKHR5cGUpOyAKQEAgLTE1
OSw3ICsxNzksOSBAQCB2b2lkIENsaXBib2FyZDo6c2V0RHJvcEVmZmVjdChjb25zdCBTdHJpbmcg
JmVmZmVjdCkKICAgICBpZiAoZWZmZWN0ICE9ICJub25lIiAmJiBlZmZlY3QgIT0gImNvcHkiICAm
JiBlZmZlY3QgIT0gImxpbmsiICYmIGVmZmVjdCAhPSAibW92ZSIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChtX3BvbGljeSA9PSBDbGlwYm9hcmRSZWFkYWJsZSB8fCBtX3BvbGljeSA9PSBD
bGlwYm9hcmRUeXBlc1JlYWRhYmxlKQorICAgIC8vIEZJWE1FOiBUaGUgc3BlYyBhY3R1YWxseSBh
bGxvd3MgdGhpcyBpbiBhbGwgY2lyY3Vtc3RhbmNlcywgZXZlbiB0aG91Z2ggdGhlcmUncyBubyBw
b2ludCBpbgorICAgIC8vIHNldHRpbmcgdGhlIGRyb3AgZWZmZWN0IHdoZW4gdGhpcyBjb25kaXRp
b24gaXMgbm90IHRydWUuCisgICAgaWYgKGNhblJlYWRUeXBlcygpKQogICAgICAgICBtX2Ryb3BF
ZmZlY3QgPSBlZmZlY3Q7CiB9CiAKQEAgLTE3OSw3ICsyMDEsNyBAQCB2b2lkIENsaXBib2FyZDo6
c2V0RWZmZWN0QWxsb3dlZChjb25zdCBTdHJpbmcgJmVmZmVjdCkKICAgICB9CiAKIAotICAgIGlm
IChtX3BvbGljeSA9PSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoY2FuV3JpdGVEYXRhKCkp
CiAgICAgICAgIG1fZWZmZWN0QWxsb3dlZCA9IGVmZmVjdDsKIH0KICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlw
Ym9hcmQuaAppbmRleCBkMTFiNjUyYTIxOWFiNjBjMzUzNWZlYjBhMTI4MGI1ZDdhY2ZmNzYyLi44
ODY0NTg0MmE0OTlkYmRiMjlmNWU4ODc0ZTRmYjdhMjM5YjExYzIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBi
b2FyZC5oCkBAIC04Niw3ICs4NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBoYXNEYXRhKCkgPSAwOwogICAgICAgICAKICAgICAgICAgdm9pZCBzZXRBY2Nl
c3NQb2xpY3koQ2xpcGJvYXJkQWNjZXNzUG9saWN5KTsKLSAgICAgICAgQ2xpcGJvYXJkQWNjZXNz
UG9saWN5IHBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9saWN5OyB9CisgICAgICAgIGJvb2wg
Y2FuUmVhZFR5cGVzKCkgY29uc3Q7CisgICAgICAgIGJvb2wgY2FuUmVhZERhdGEoKSBjb25zdDsK
KyAgICAgICAgYm9vbCBjYW5Xcml0ZURhdGEoKSBjb25zdDsKKyAgICAgICAgLy8gTm90ZSB0aGF0
IHRoZSBzcGVjIGRvZXNuJ3QgYWN0dWFsbHkgYWxsb3cgZHJhZyBpbWFnZSBtb2RpZmljYXRpb24g
b3V0c2lkZSB0aGUgZHJhZ3N0YXJ0CisgICAgICAgIC8vIGV2ZW50LiBUaGlzIGNhcGFiaWxpdHkg
aXMgbWFpbnRhaW5lZCBmb3IgYmFja3dhcmRzIGNvbXBhdGlibGl0eSBmb3IgcG9ydHMgdGhhdCBo
YXZlCisgICAgICAgIC8vIHN1cHBvcnRlZCB0aGlzIGluIHRoZSBwYXN0LiBPbiBtYW55IHBvcnRz
LCBhdHRlbXB0aW5nIHRvIHNldCBhIGRyYWcgaW1hZ2Ugb3V0c2lkZSB0aGUKKyAgICAgICAgLy8g
ZHJhZ3N0YXJ0IG9wZXJhdGlvbiBpcyBhIG5vLW9wIGFueXdheS4KKyAgICAgICAgYm9vbCBjYW5T
ZXREcmFnSW1hZ2UoKSBjb25zdDsKIAogICAgICAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJh
dGlvbigpIGNvbnN0OwogICAgICAgICBEcmFnT3BlcmF0aW9uIGRlc3RpbmF0aW9uT3BlcmF0aW9u
KCkgY29uc3Q7CkBAIC0xMDksNyArMTE2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHBy
aXZhdGU6CiAgICAgICAgIGJvb2wgaGFzRmlsZU9mVHlwZShjb25zdCBTdHJpbmcmKSBjb25zdDsK
ICAgICAgICAgYm9vbCBoYXNTdHJpbmdPZlR5cGUoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAg
ICAgIAorCisgICAgICAgIC8vIEluc3RlYWQgb2YgdXNpbmcgdGhpcyBtZW1iZXIgZGlyZWN0bHks
IHByZWZlciB0byB1c2UgdGhlIGNhbiooKSBtZXRob2RzIGFib3ZlLgogICAgICAgICBDbGlwYm9h
cmRBY2Nlc3NQb2xpY3kgbV9wb2xpY3k7CiAgICAgICAgIFN0cmluZyBtX2Ryb3BFZmZlY3Q7CiAg
ICAgICAgIFN0cmluZyBtX2VmZmVjdEFsbG93ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0NsaXBib2FyZEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9DbGlwYm9hcmRCbGFja0JlcnJ5LmNwcAppbmRleCBh
ZGUyMmVmNDdlYmYxMDQ0ZTIwYWE2YzllMjY2NDlhN2VmMjA0NTRkLi42MGE0NGIyNjI0ZmEyOGU4
ZTNiNzgyOGU0M2ZkYzgxMTJhMjZlNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L0NsaXBib2FyZEJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ2xpcGJvYXJkQmxhY2tCZXJyeS5jcHAKQEAgLTQyLDcg
KzQyLDcgQEAgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6fkNsaXBib2FyZEJsYWNrQmVycnkoKQogCiB2
b2lkIENsaXBib2FyZEJsYWNrQmVycnk6OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiB7
Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghY2FuV3Jp
dGVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpD
bGlwYm9hcmQ6OmNsZWFyQ2xpcGJvYXJkQnlUeXBlKHR5cGUudXRmOCgpLmRhdGEoKSk7CkBAIC01
MCw3ICs1MCw3IEBAIHZvaWQgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6Y2xlYXJEYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSkKIAogdm9pZCBDbGlwYm9hcmRCbGFja0JlcnJ5OjpjbGVhckFsbERhdGEoKQog
ewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldy
aXRlRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
Q2xpcGJvYXJkOjpjbGVhckNsaXBib2FyZCgpOwpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIENsaXBi
b2FyZEJsYWNrQmVycnk6OmNsZWFyQWxsRGF0YSgpCiAKIFN0cmluZyBDbGlwYm9hcmRCbGFja0Jl
cnJ5OjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKLSAgICBpZiAocG9saWN5
KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFkRGF0YSgpKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjpyZWFkQ2xpcGJvYXJkQnlUeXBlKHR5cGUudXRmOCgp
LmRhdGEoKSkuY19zdHIoKSk7CkBAIC02Niw3ICs2Niw3IEBAIFN0cmluZyBDbGlwYm9hcmRCbGFj
a0JlcnJ5OjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIAogYm9vbCBDbGlwYm9h
cmRCbGFja0JlcnJ5OjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0
ZXh0KQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAo
IWNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAodHlwZSA9
PSAidGV4dC9wbGFpbiIpCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgQ2xpcGJvYXJkQmxhY2tCZXJy
eTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIAogTGlz
dEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRCbGFja0JlcnJ5Ojp0eXBlcygpIGNvbnN0CiB7Ci0g
ICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlICYmIHBvbGljeSgpICE9IENsaXBi
b2FyZFR5cGVzUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFkVHlwZXMoKSkKICAgICAgICAgcmV0
dXJuIExpc3RIYXNoU2V0PFN0cmluZz4oKTsKIAogICAgIC8vIFdlIHVzZSBoYXJkY29kZWQgbGlz
dCBoZXJlIHNpbmNlIHRoZXJlIHNlZW1zIHRvIGJlIG5vIEFQSSB0byBnZXQgdGhlIGxpc3QuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJv
bWl1bS5jcHAKaW5kZXggZmMzNzI3OGQ2YjkyMjczYWQ4OTUyMTU3MmViNWQ4NGRiYWU5MjE4OS4u
ZDA5MDVmMjg2NmY2NTJkMDdkYzZkZWIzZWU4ZDM4Nzg3NThmOGE1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcApA
QCAtODksMTQgKzg5LDE0IEBAIERhdGFUcmFuc2Zlckl0ZW1MaXN0UG9saWN5V3JhcHBlcjo6fkRh
dGFUcmFuc2Zlckl0ZW1MaXN0UG9saWN5V3JhcHBlcigpCiAKIHNpemVfdCBEYXRhVHJhbnNmZXJJ
dGVtTGlzdFBvbGljeVdyYXBwZXI6Omxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY2xpcGJv
YXJkLT5wb2xpY3koKSA9PSBDbGlwYm9hcmROdW1iKQorICAgIGlmICghbV9jbGlwYm9hcmQtPmNh
blJlYWRUeXBlcygpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbV9kYXRhT2JqZWN0
LT5sZW5ndGgoKTsKIH0KIAogUGFzc1JlZlB0cjxEYXRhVHJhbnNmZXJJdGVtPiBEYXRhVHJhbnNm
ZXJJdGVtTGlzdFBvbGljeVdyYXBwZXI6Oml0ZW0odW5zaWduZWQgbG9uZyBpbmRleCkKIHsKLSAg
ICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpID09IENsaXBib2FyZE51bWIpCisgICAgaWYgKCFt
X2NsaXBib2FyZC0+Y2FuUmVhZFR5cGVzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIFJlZlB0
cjxDaHJvbWl1bURhdGFPYmplY3RJdGVtPiBpdGVtID0gbV9kYXRhT2JqZWN0LT5pdGVtKGluZGV4
KTsKICAgICBpZiAoIWl0ZW0pCkBAIC0xMDcsNyArMTA3LDcgQEAgUGFzc1JlZlB0cjxEYXRhVHJh
bnNmZXJJdGVtPiBEYXRhVHJhbnNmZXJJdGVtTGlzdFBvbGljeVdyYXBwZXI6Oml0ZW0odW5zaWdu
ZWQgbG8KIAogdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFBvbGljeVdyYXBwZXI6OmRlbGV0ZUl0
ZW0odW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKG1f
Y2xpcGJvYXJkLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkgeworICAgIGlmICghbV9j
bGlwYm9hcmQtPmNhbldyaXRlRGF0YSgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTYsMjEgKzExNiwyMSBAQCB2b2lkIERh
dGFUcmFuc2Zlckl0ZW1MaXN0UG9saWN5V3JhcHBlcjo6ZGVsZXRlSXRlbSh1bnNpZ25lZCBsb25n
IGluZGV4LCBFeGNlcHRpbwogCiB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0UG9saWN5V3JhcHBl
cjo6Y2xlYXIoKQogewotICAgIGlmIChtX2NsaXBib2FyZC0+cG9saWN5KCkgIT0gQ2xpcGJvYXJk
V3JpdGFibGUpCisgICAgaWYgKCFtX2NsaXBib2FyZC0+Y2FuV3JpdGVEYXRhKCkpCiAgICAgICAg
IHJldHVybjsKICAgICBtX2RhdGFPYmplY3QtPmNsZWFyQWxsKCk7CiB9CiAKIHZvaWQgRGF0YVRy
YW5zZmVySXRlbUxpc3RQb2xpY3lXcmFwcGVyOjphZGQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25z
dCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChtX2NsaXBib2Fy
ZC0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFtX2NsaXBib2FyZC0+
Y2FuV3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2RhdGFPYmplY3QtPmFkZChk
YXRhLCB0eXBlLCBlYyk7CiB9CiAKIHZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3RQb2xpY3lXcmFw
cGVyOjphZGQoUGFzc1JlZlB0cjxGaWxlPiBmaWxlKQogewotICAgIGlmIChtX2NsaXBib2FyZC0+
cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFtX2NsaXBib2FyZC0+Y2Fu
V3JpdGVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2RhdGFPYmplY3QtPmFkZChmaWxl
LCBtX2NsaXBib2FyZC0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKIH0KQEAgLTE1NiwyMSArMTU2LDIxIEBAIERhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lXcmFw
cGVyOjp+RGF0YVRyYW5zZmVySXRlbVBvbGljeVdyYXBwZXIoKQogCiBTdHJpbmcgRGF0YVRyYW5z
ZmVySXRlbVBvbGljeVdyYXBwZXI6OmtpbmQoKSBjb25zdAogewotICAgIGlmIChtX2NsaXBib2Fy
ZC0+cG9saWN5KCkgPT0gQ2xpcGJvYXJkTnVtYikKKyAgICBpZiAoIW1fY2xpcGJvYXJkLT5jYW5S
ZWFkVHlwZXMoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVybiBtX2l0ZW0t
PmtpbmQoKTsKIH0KIAogU3RyaW5nIERhdGFUcmFuc2Zlckl0ZW1Qb2xpY3lXcmFwcGVyOjp0eXBl
KCkgY29uc3QKIHsKLSAgICBpZiAobV9jbGlwYm9hcmQtPnBvbGljeSgpID09IENsaXBib2FyZE51
bWIpCisgICAgaWYgKCFtX2NsaXBib2FyZC0+Y2FuUmVhZFR5cGVzKCkpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICByZXR1cm4gbV9pdGVtLT50eXBlKCk7CiB9CiAKIHZvaWQgRGF0YVRy
YW5zZmVySXRlbVBvbGljeVdyYXBwZXI6OmdldEFzU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nQ2Fs
bGJhY2s+IGNhbGxiYWNrKSBjb25zdAogewotICAgIGlmIChtX2NsaXBib2FyZC0+cG9saWN5KCkg
IT0gQ2xpcGJvYXJkUmVhZGFibGUgJiYgbV9jbGlwYm9hcmQtPnBvbGljeSgpICE9IENsaXBib2Fy
ZFdyaXRhYmxlKQorICAgIGlmICghbV9jbGlwYm9hcmQtPmNhblJlYWREYXRhKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1faXRlbS0+Z2V0QXNTdHJpbmcoY2FsbGJhY2ssIG1fY2xpcGJvYXJk
LT5mcmFtZSgpLT5kb2N1bWVudCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwpAQCAtMTc4
LDcgKzE3OCw3IEBAIHZvaWQgRGF0YVRyYW5zZmVySXRlbVBvbGljeVdyYXBwZXI6OmdldEFzU3Ry
aW5nKFBhc3NSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+IGNhbGxiCiAKIFBhc3NSZWZQdHI8QmxvYj4g
RGF0YVRyYW5zZmVySXRlbVBvbGljeVdyYXBwZXI6OmdldEFzRmlsZSgpIGNvbnN0CiB7Ci0gICAg
aWYgKG1fY2xpcGJvYXJkLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSAmJiBtX2NsaXBi
b2FyZC0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFtX2NsaXBib2Fy
ZC0+Y2FuUmVhZERhdGEoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gbV9pdGVt
LT5nZXRBc0ZpbGUoKTsKQEAgLTIzOCw3ICsyMzgsNyBAQCBQYXNzUmVmUHRyPENsaXBib2FyZENo
cm9taXVtPiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKENsaXBib2FyZFR5cGUgY2xpcGJvYXJk
VAogCiB2b2lkIENsaXBib2FyZENocm9taXVtOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBl
KQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNh
bldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2RhdGFPYmplY3QtPmNsZWFy
RGF0YShub3JtYWxpemVUeXBlKHR5cGUpKTsKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIENsaXBi
b2FyZENocm9taXVtOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogCiB2b2lkIENsaXBi
b2FyZENocm9taXVtOjpjbGVhckFsbERhdGEoKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlw
Ym9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX2RhdGFPYmplY3QtPmNsZWFyQWxsKCk7CkBAIC0yNTYsNyArMjU2LDcgQEAgdm9p
ZCBDbGlwYm9hcmRDaHJvbWl1bTo6Y2xlYXJBbGxEYXRhKCkKIAogU3RyaW5nIENsaXBib2FyZENo
cm9taXVtOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKLSAgICBpZiAocG9s
aWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFkRGF0YSgpKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBib29sIGNvbnZlcnRUb1VSTCA9IGZhbHNlOwpA
QCAtMjY4LDcgKzI2OCw3IEBAIFN0cmluZyBDbGlwYm9hcmRDaHJvbWl1bTo6Z2V0RGF0YShjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAKIGJvb2wgQ2xpcGJvYXJkQ2hyb21pdW06OnNldERhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7Ci0gICAgaWYgKHBvbGlj
eSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghY2FuV3JpdGVEYXRhKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBtX2RhdGFPYmplY3QtPnNldERhdGEobm9y
bWFsaXplVHlwZSh0eXBlKSwgZGF0YSk7CkBAIC0yNzcsNyArMjc3LDcgQEAgYm9vbCBDbGlwYm9h
cmRDaHJvbWl1bTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0
YSkKIC8vIGV4dGVuc2lvbnMgYmV5b25kIElFJ3MgQVBJCiBMaXN0SGFzaFNldDxTdHJpbmc+IENs
aXBib2FyZENocm9taXVtOjp0eXBlcygpIGNvbnN0CiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENs
aXBib2FyZFJlYWRhYmxlICYmIHBvbGljeSgpICE9IENsaXBib2FyZFR5cGVzUmVhZGFibGUpCisg
ICAgaWYgKCFjYW5SZWFkVHlwZXMoKSkKICAgICAgICAgcmV0dXJuIExpc3RIYXNoU2V0PFN0cmlu
Zz4oKTsKIAogICAgIHJldHVybiBtX2RhdGFPYmplY3QtPnR5cGVzKCk7CkBAIC0yODYsNyArMjg2
LDcgQEAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRDaHJvbWl1bTo6dHlwZXMoKSBjb25z
dAogUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkQ2hyb21pdW06OmZpbGVzKCkgY29uc3QK
IHsKICAgICBSZWZQdHI8RmlsZUxpc3Q+IGZpbGVzID0gRmlsZUxpc3Q6OmNyZWF0ZSgpOwotICAg
IGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSkKKyAgICBpZiAoIWNhblJlYWREYXRh
KCkpCiAgICAgICAgIHJldHVybiBmaWxlcy5yZWxlYXNlKCk7CiAKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fZGF0YU9iamVjdC0+bGVuZ3RoKCk7ICsraSkgewpAQCAtMzAyLDcgKzMwMiw3
IEBAIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZENocm9taXVtOjpmaWxlcygpIGNvbnN0
CiAKIHZvaWQgQ2xpcGJvYXJkQ2hyb21pdW06OnNldERyYWdJbWFnZShDYWNoZWRJbWFnZSogaW1h
Z2UsIE5vZGUqIG5vZGUsIGNvbnN0IEludFBvaW50JiBsb2MpCiB7Ci0gICAgaWYgKHBvbGljeSgp
ICE9IENsaXBib2FyZEltYWdlV3JpdGFibGUgJiYgcG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFi
bGUpCisgICAgaWYgKCFjYW5TZXREcmFnSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG1fZHJhZ0ltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0NsaXBib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJk
R3RrLmNwcAppbmRleCAyNjNiNmNmOGYyZWRjNTk5OGYxNWEwMWFlYmM1NzIyZTM1OTY2NDRhLi5m
NTA0NjBhNzIxYWM0MDNkZjFhY2FlOWI1NDQwMzgwZWE4M2E4MWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0
YXRpYyBDbGlwYm9hcmREYXRhVHlwZSBkYXRhT2JqZWN0VHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlw
ZShjb25zdCBTdHJpbmcmIHJhd1R5CiAKIHZvaWQgQ2xpcGJvYXJkR3RrOjpjbGVhckRhdGEoY29u
c3QgU3RyaW5nJiB0eXBlU3RyaW5nKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRX
cml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBDbGlwYm9hcmREYXRhVHlwZSB0eXBlID0gZGF0YU9iamVjdFR5cGVGcm9tSFRNTENsaXBib2Fy
ZFR5cGUodHlwZVN0cmluZyk7CkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBDbGlwYm9hcmRHdGs6
OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcpCiAKIHZvaWQgQ2xpcGJvYXJkR3Rr
OjpjbGVhckFsbERhdGEoKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJs
ZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBX
ZSBkbyBub3QgY2xlYXIgZmlsZW5hbWVzLiBBY2NvcmRpbmcgdG8gdGhlIHNwZWM6ICJUaGUgY2xl
YXJEYXRhKCkgbWV0aG9kCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBDbGlwYm9hcmRHdGs6OmNs
ZWFyQWxsRGF0YSgpCiAKIFN0cmluZyBDbGlwYm9hcmRHdGs6OmdldERhdGEoY29uc3QgU3RyaW5n
JiB0eXBlU3RyaW5nKSBjb25zdAogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFk
YWJsZSB8fCAhbV9kYXRhT2JqZWN0KQorICAgIGlmICghY2FuUmVhZERhdGEoKSB8fCAhbV9kYXRh
T2JqZWN0KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpZiAobV9jbGlwYm9hcmQp
CkBAIC0xNjksNyArMTY5LDcgQEAgU3RyaW5nIENsaXBib2FyZEd0azo6Z2V0RGF0YShjb25zdCBT
dHJpbmcmIHR5cGVTdHJpbmcpIGNvbnN0CiAKIGJvb2wgQ2xpcGJvYXJkR3RrOjpzZXREYXRhKGNv
bnN0IFN0cmluZyYgdHlwZVN0cmluZywgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIGlmIChw
b2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKQEAgLTE5
MCw3ICsxOTAsNyBAQCBib29sIENsaXBib2FyZEd0azo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5
cGVTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGF0YSkKIAogTGlzdEhhc2hTZXQ8U3RyaW5nPiBDbGlw
Ym9hcmRHdGs6OnR5cGVzKCkgY29uc3QKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJk
UmVhZGFibGUgJiYgcG9saWN5KCkgIT0gQ2xpcGJvYXJkVHlwZXNSZWFkYWJsZSkKKyAgICBpZiAo
IWNhblJlYWRUeXBlcygpKQogICAgICAgICByZXR1cm4gTGlzdEhhc2hTZXQ8U3RyaW5nPigpOwog
CiAgICAgaWYgKG1fY2xpcGJvYXJkKQpAQCAtMjE5LDcgKzIxOSw3IEBAIExpc3RIYXNoU2V0PFN0
cmluZz4gQ2xpcGJvYXJkR3RrOjp0eXBlcygpIGNvbnN0CiAKIFBhc3NSZWZQdHI8RmlsZUxpc3Q+
IENsaXBib2FyZEd0azo6ZmlsZXMoKSBjb25zdAogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlw
Ym9hcmRSZWFkYWJsZSkKKyAgICBpZiAoIWNhblJlYWREYXRhKCkpCiAgICAgICAgIHJldHVybiBG
aWxlTGlzdDo6Y3JlYXRlKCk7CiAKICAgICBpZiAobV9jbGlwYm9hcmQpCkBAIC0yNDQsNyArMjQ0
LDcgQEAgdm9pZCBDbGlwYm9hcmRHdGs6OnNldERyYWdJbWFnZUVsZW1lbnQoTm9kZSogZWxlbWVu
dCwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQogCiB2b2lkIENsaXBib2FyZEd0azo6c2V0RHJh
Z0ltYWdlKENhY2hlZEltYWdlKiBpbWFnZSwgTm9kZSogZWxlbWVudCwgY29uc3QgSW50UG9pbnQm
IGxvY2F0aW9uKQogewotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRJbWFnZVdyaXRhYmxl
ICYmIHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghY2FuU2V0RHJhZ0lt
YWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2RyYWdJbWFnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCmluZGV4IGE1YjI5ZDk5ZjgyOGQ5
ODQ1YzNiN2YxN2M4N2JhNTZhYWViZTQyZTEuLjM2YTRkOGUyODU2MDgxYWIwODk5MTMwZWYyZmM2
NzRkOWRjNzM1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlw
Ym9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1h
Yy5tbQpAQCAtMTU1LDcgKzE1NSw3IEBAIHN0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBl
c0ZvckNvY29hVHlwZShMaXN0SGFzaFNldDxTdHJpbmc+JiByZXN1bHRUeXBlcywKIAogdm9pZCBD
bGlwYm9hcmRNYWM6OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgaWYgKHBv
bGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghY2FuV3JpdGVEYXRhKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIG5vdGUgTlNQYXN0ZWJvYXJkIGVuZm9yY2VzIGNoYW5n
ZUNvdW50IGl0c2VsZiBvbiB3cml0aW5nIC0gY2FuJ3Qgd3JpdGUgaWYgbm90IHRoZSBvd25lcgpA
QCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkTWFjOjpjbGVhckRhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlKQogCiB2b2lkIENsaXBib2FyZE1hYzo6Y2xlYXJBbGxEYXRhKCkKIHsKLSAgICBp
ZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gbm90ZSBOU1Bhc3RlYm9hcmQgZW5mb3JjZXMg
Y2hhbmdlQ291bnQgaXRzZWxmIG9uIHdyaXRpbmcgLSBjYW4ndCB3cml0ZSBpZiBub3QgdGhlIG93
bmVyCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGFic29sdXRlVVJM
c0Zyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGIKIAogU3RyaW5n
IENsaXBib2FyZE1hYzo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7Ci0gICAg
aWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlIHx8IG1fY2xpcGJvYXJkQ29udGVudHMg
PT0gRHJhZ0FuZERyb3BGaWxlcykKKyAgICBpZiAoIWNhblJlYWREYXRhKCkgfHwgbV9jbGlwYm9h
cmRDb250ZW50cyA9PSBEcmFnQW5kRHJvcEZpbGVzKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAKICAgICBjb25zdCBTdHJpbmcmIGNvY29hVHlwZSA9IGNvY29hVHlwZUZyb21IVE1MQ2xpcGJv
YXJkVHlwZSh0eXBlKTsKQEAgLTI0OSw3ICsyNDksNyBAQCBTdHJpbmcgQ2xpcGJvYXJkTWFjOjpn
ZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIAogYm9vbCBDbGlwYm9hcmRNYWM6OnNl
dERhdGEoY29uc3QgU3RyaW5nICZ0eXBlLCBjb25zdCBTdHJpbmcgJmRhdGEpCiB7Ci0gICAgaWYg
KHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlIHx8IG1fY2xpcGJvYXJkQ29udGVudHMgPT0g
RHJhZ0FuZERyb3BGaWxlcykKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpIHx8IG1fY2xpcGJvYXJk
Q29udGVudHMgPT0gRHJhZ0FuZERyb3BGaWxlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IC8vIG5vdGUgTlNQYXN0ZWJvYXJkIGVuZm9yY2VzIGNoYW5nZUNvdW50IGl0c2VsZiBvbiB3cml0
aW5nIC0gY2FuJ3Qgd3JpdGUgaWYgbm90IHRoZSBvd25lcgogCkBAIC0yODMsNyArMjgzLDcgQEAg
Ym9vbCBDbGlwYm9hcmRNYWM6OnNldERhdGEoY29uc3QgU3RyaW5nICZ0eXBlLCBjb25zdCBTdHJp
bmcgJmRhdGEpCiAKIExpc3RIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkTWFjOjp0eXBlcygpIGNv
bnN0CiB7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlICYmIHBvbGljeSgp
ICE9IENsaXBib2FyZFR5cGVzUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFkVHlwZXMoKSkKICAg
ICAgICAgcmV0dXJuIExpc3RIYXNoU2V0PFN0cmluZz4oKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+
IHR5cGVzOwpAQCAtMzEyLDcgKzMxMiw3IEBAIExpc3RIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJk
TWFjOjp0eXBlcygpIGNvbnN0CiAvLyBjbGlwYm9hcmQgYXJlIG5vdCByZWZsZWN0ZWQgaW4gYW55
IEZpbGVMaXN0IG9iamVjdHMgdGhlIHBhZ2UgaGFzIGFjY2Vzc2VkIGFuZCBzdG9yZWQKIFBhc3NS
ZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZE1hYzo6ZmlsZXMoKSBjb25zdAogewotICAgIGlmIChw
b2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSB8fCBtX2NsaXBib2FyZENvbnRlbnRzID09IERy
YWdBbmREcm9wRGF0YSkKKyAgICBpZiAoIWNhblJlYWREYXRhKCkgfHwgbV9jbGlwYm9hcmRDb250
ZW50cyA9PSBEcmFnQW5kRHJvcERhdGEpCiAgICAgICAgIHJldHVybiBGaWxlTGlzdDo6Y3JlYXRl
KCk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhYnNvbHV0ZVVSTHMgPSBhYnNvbHV0ZVVSTHNGcm9t
UGFzdGVib2FyZEZpbGVuYW1lcyhtX3Bhc3RlYm9hcmROYW1lKTsKQEAgLTM0MCw3ICszNDAsNyBA
QCB2b2lkIENsaXBib2FyZE1hYzo6c2V0RHJhZ0ltYWdlRWxlbWVudChOb2RlICpub2RlLCBjb25z
dCBJbnRQb2ludCAmbG9jKQogCiB2b2lkIENsaXBib2FyZE1hYzo6c2V0RHJhZ0ltYWdlKENhY2hl
ZEltYWdlKiBpbWFnZSwgTm9kZSAqbm9kZSwgY29uc3QgSW50UG9pbnQgJmxvYykKIHsKLSAgICBp
ZiAocG9saWN5KCkgPT0gQ2xpcGJvYXJkSW1hZ2VXcml0YWJsZSB8fCBwb2xpY3koKSA9PSBDbGlw
Ym9hcmRXcml0YWJsZSkgeworICAgIGlmIChjYW5TZXREcmFnSW1hZ2UoKSkgewogICAgICAgICBp
ZiAobV9kcmFnSW1hZ2UpCiAgICAgICAgICAgICBtX2RyYWdJbWFnZS0+cmVtb3ZlQ2xpZW50KHRo
aXMpOwogICAgICAgICBtX2RyYWdJbWFnZSA9IGltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvQ2xpcGJvYXJkUXQuY3BwCmluZGV4IDcxYzkxY2I0MWI2Y2UxZGE5MmY2MjNmZTUwOTFk
NGJiMGNjOGQzNzguLmFlZmVmNzc0YmI4Mzk2Y2M4YWJjMGQzNjQxZTBkNWQ3MjljYjBmNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKQEAgLTExMiw3ICsx
MTIsNyBAQCBDbGlwYm9hcmRRdDo6fkNsaXBib2FyZFF0KCkKIAogdm9pZCBDbGlwYm9hcmRRdDo6
Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xp
cGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKG1fd3JpdGFibGVEYXRhKSB7CkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBD
bGlwYm9hcmRRdDo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogdm9pZCBDbGlwYm9h
cmRRdDo6Y2xlYXJBbGxEYXRhKCkKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3Jp
dGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAjaWZu
ZGVmIFFUX05PX0NMSVBCT0FSRApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgQ2xpcGJvYXJkUXQ6
OmNsZWFyQWxsRGF0YSgpCiBTdHJpbmcgQ2xpcGJvYXJkUXQ6OmdldERhdGEoY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAogewogCi0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxl
KQorICAgIGlmICghY2FuUmVhZERhdGEoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAg
ICAgaWYgKGlzSHRtbE1pbWVUeXBlKHR5cGUpICYmIG1fcmVhZGFibGVEYXRhLT5oYXNIdG1sKCkp
CkBAIC0xNjMsNyArMTYzLDcgQEAgU3RyaW5nIENsaXBib2FyZFF0OjpnZXREYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSkgY29uc3QKIAogYm9vbCBDbGlwYm9hcmRRdDo6c2V0RGF0YShjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xp
cGJvYXJkV3JpdGFibGUpCisgICAgaWYgKCFjYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKCFtX3dyaXRhYmxlRGF0YSkKQEAgLTE4NCw3ICsxODQsNyBAQCBi
b29sIENsaXBib2FyZFF0OjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBkYXRhKQogLy8gZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKIExpc3RIYXNoU2V0PFN0cmlu
Zz4gQ2xpcGJvYXJkUXQ6OnR5cGVzKCkgY29uc3QKIHsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xp
cGJvYXJkUmVhZGFibGUgJiYgcG9saWN5KCkgIT0gQ2xpcGJvYXJkVHlwZXNSZWFkYWJsZSkKKyAg
ICBpZiAoIWNhblJlYWRUeXBlcygpKQogICAgICAgICByZXR1cm4gTGlzdEhhc2hTZXQ8U3RyaW5n
PigpOwogCiAgICAgQVNTRVJUKG1fcmVhZGFibGVEYXRhKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBM
aXN0SGFzaFNldDxTdHJpbmc+IENsaXBib2FyZFF0Ojp0eXBlcygpIGNvbnN0CiAKIFBhc3NSZWZQ
dHI8RmlsZUxpc3Q+IENsaXBib2FyZFF0OjpmaWxlcygpIGNvbnN0CiB7Ci0gICAgaWYgKHBvbGlj
eSgpICE9IENsaXBib2FyZFJlYWRhYmxlIHx8ICFtX3JlYWRhYmxlRGF0YS0+aGFzVXJscygpKQor
ICAgIGlmICghY2FuUmVhZERhdGEoKSB8fCAhbV9yZWFkYWJsZURhdGEtPmhhc1VybHMoKSkKICAg
ICAgICAgcmV0dXJuIEZpbGVMaXN0OjpjcmVhdGUoKTsKIAogICAgIFJlZlB0cjxGaWxlTGlzdD4g
ZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKCk7CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBD
bGlwYm9hcmRRdDo6c2V0RHJhZ0ltYWdlRWxlbWVudChOb2RlKiBub2RlLCBjb25zdCBJbnRQb2lu
dCYgcG9pbnQpCiAKIHZvaWQgQ2xpcGJvYXJkUXQ6OnNldERyYWdJbWFnZShDYWNoZWRJbWFnZSog
aW1hZ2UsIE5vZGUgKm5vZGUsIGNvbnN0IEludFBvaW50ICZsb2MpCiB7Ci0gICAgaWYgKHBvbGlj
eSgpICE9IENsaXBib2FyZEltYWdlV3JpdGFibGUgJiYgcG9saWN5KCkgIT0gQ2xpcGJvYXJkV3Jp
dGFibGUpCisgICAgaWYgKCFjYW5TZXREcmFnSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKG1fZHJhZ0ltYWdlKQpAQCAtMzU5LDcgKzM1OSw3IEBAIFBhc3NSZWZQdHI8RGF0YVRy
YW5zZmVySXRlbUxpc3Q+IENsaXBib2FyZFF0OjppdGVtcygpCiAgICAgaWYgKCFtX3JlYWRhYmxl
RGF0YSkKICAgICAgICAgcmV0dXJuIGl0ZW1zOwogCi0gICAgaWYgKGlzRm9yQ29weUFuZFBhc3Rl
KCkgJiYgcG9saWN5KCkgPT0gQ2xpcGJvYXJkUmVhZGFibGUpIHsKKyAgICBpZiAoaXNGb3JDb3B5
QW5kUGFzdGUoKSAmJiBjYW5SZWFkRGF0YSgpKSB7CiAgICAgICAgIGNvbnN0IFFTdHJpbmdMaXN0
IHR5cGVzID0gbV9yZWFkYWJsZURhdGEtPmZvcm1hdHMoKTsKICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCB0eXBlcy5jb3VudCgpOyArK2kpCiAgICAgICAgICAgICBpdGVtcy0+YWRkUGFzdGVi
b2FyZEl0ZW0odHlwZXMuYXQoaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvRGF0YVRyYW5zZmVySXRlbUxpc3RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9EYXRhVHJhbnNmZXJJdGVtTGlzdFF0LmNwcAppbmRleCAxODA2YTdmNmY1Y2M0MGQ1YTQ1
OTUyMjlkNzZlYmVhNmZlNzNlYzRmLi5jNDM1NWE4MTE2Yjk2NTVjZWUxOGZkODY1NDhmYmU1MGY5
YTk1NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNm
ZXJJdGVtTGlzdFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJh
bnNmZXJJdGVtTGlzdFF0LmNwcApAQCAtNDcsNyArNDcsNyBAQCBEYXRhVHJhbnNmZXJJdGVtTGlz
dFF0OjpEYXRhVHJhbnNmZXJJdGVtTGlzdFF0KFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBvd25lciwg
U2NyaQogCiBzaXplX3QgRGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6bGVuZ3RoKCkgY29uc3QKIHsK
LSAgICBpZiAobV9vd25lci0+cG9saWN5KCkgPT0gQ2xpcGJvYXJkTnVtYikKKyAgICBpZiAoIW1f
b3duZXItPmNhblJlYWRUeXBlcygpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBt
X2l0ZW1zLnNpemUoKTsKQEAgLTU1LDcgKzU1LDcgQEAgc2l6ZV90IERhdGFUcmFuc2Zlckl0ZW1M
aXN0UXQ6Omxlbmd0aCgpIGNvbnN0CiAKIFBhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4gRGF0
YVRyYW5zZmVySXRlbUxpc3RRdDo6aXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KQogewotICAgIGlm
IChtX293bmVyLT5wb2xpY3koKSA9PSBDbGlwYm9hcmROdW1iIHx8IGluZGV4ID49IGxlbmd0aCgp
KQorICAgIGlmICghbV9vd25lci0+Y2FuUmVhZFR5cGVzKCkgfHwgaW5kZXggPj0gbGVuZ3RoKCkp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIG1faXRlbXNbaW5kZXhdOwpAQCAtNjMs
NyArNjMsNyBAQCBQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW0+IERhdGFUcmFuc2Zlckl0ZW1M
aXN0UXQ6Oml0ZW0odW5zaWduZWQgbG9uZyBpbmRleCkKIAogdm9pZCBEYXRhVHJhbnNmZXJJdGVt
TGlzdFF0OjpkZWxldGVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIGlmIChtX293bmVyLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkgewor
ICAgIGlmICghbV9vd25lci0+Y2FuV3JpdGVEYXRhKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElE
X1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc2LDcgKzc2LDcgQEAgdm9p
ZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjpkZWxldGVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogCiB2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6OmNsZWFy
KCkKIHsKLSAgICBpZiAobV9vd25lci0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisg
ICAgaWYgKCFtX293bmVyLT5jYW5Xcml0ZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9pdGVtcy5jbGVhcigpOwpAQCAtODUsNyArODUsNyBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1M
aXN0UXQ6OmNsZWFyKCkKIAogdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjphZGQoY29uc3Qg
U3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewot
ICAgIGlmIChtX293bmVyLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICBpZiAo
IW1fb3duZXItPmNhbldyaXRlRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBPbmx5
IG9uZSAnc3RyaW5nJyBpdGVtIHdpdGggYSBnaXZlbiB0eXBlIGlzIGFsbG93ZWQgaW4gdGhlIGNv
bGxlY3Rpb24uCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0
OjphZGQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGkKIAog
dm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0OjphZGQoUGFzc1JlZlB0cjxGaWxlPiBmaWxlKQog
ewotICAgIGlmIChtX293bmVyLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSB8fCAhZmls
ZSkKKyAgICBpZiAoIW1fb3duZXItPmNhbldyaXRlRGF0YSgpIHx8ICFmaWxlKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX2l0ZW1zLmFwcGVuZChEYXRhVHJhbnNmZXJJdGVtOjpjcmVhdGUobV9v
d25lciwgbV9jb250ZXh0LCBmaWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvRGF0YVRyYW5zZmVySXRlbVF0LmNwcAppbmRleCA5ZmY2MjFlZjQ5ODM0OTZhMDNiOGZhNzY4
ZjkzODc2Yzk4YjFlYTFkLi5kN2U5Yjc3OWEyMTUyOGQ5N2U1MTRjNWIwMDRjNmU4MTU5MTIxMGRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVt
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1R
dC5jcHAKQEAgLTk1LDggKzk1LDcgQEAgRGF0YVRyYW5zZmVySXRlbVF0OjpEYXRhVHJhbnNmZXJJ
dGVtUXQoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLAogCiB2b2lkIERhdGFUcmFuc2Zlckl0
ZW1RdDo6Z2V0QXNTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdDYWxsYmFjaz4gY2FsbGJhY2spIGNv
bnN0CiB7Ci0gICAgaWYgKChvd25lcigpLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSAm
JiBvd25lcigpLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKLSAgICAgICAgfHwga2lu
ZCgpICE9IGtpbmRTdHJpbmcpCisgICAgaWYgKCFvd25lcigpLT5wb2xpY3koKS0+Y2FuUmVhZERh
dGEoKSB8fCBraW5kKCkgIT0ga2luZFN0cmluZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KG1fZGF0YVNvdXJjZSA9PSBJbnRlcm5hbFNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAppbmRleCBjMmY5OTY0OTY5OWI2NDllZWU2YWVjYmVm
ZGNkMjNlZjkxMDFjMmUzLi43Y2EzMTY1OTVhMGI5YWVkMGI4ZjZhZDJiNzhlYjJiNTdiN2FjODQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcApAQCAt
NDA3LDcgKzQwNyw3IEBAIHZvaWQgQ2xpcGJvYXJkV2luOjpjbGVhckRhdGEoY29uc3QgU3RyaW5n
JiB0eXBlKQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGJlIGFibGUgdG8gd3JpdGUgdG8gdGhl
IHN5c3RlbSBjbGlwYm9hcmQgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NDE+CiAgICAgQVNTRVJUKGlz
Rm9yRHJhZ0FuZERyb3AoKSk7Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxl
IHx8ICFtX3dyaXRhYmxlRGF0YU9iamVjdCkKKyAgICBpZiAoIWNhbldyaXRlRGF0YSgpIHx8ICFt
X3dyaXRhYmxlRGF0YU9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2xpcGJvYXJkRGF0
YVR5cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKHR5cGUpOwpAQCAtNDI3
LDcgKzQyNyw3IEBAIHZvaWQgQ2xpcGJvYXJkV2luOjpjbGVhckFsbERhdGEoKQogewogICAgIC8v
IEZJWE1FOiBOZWVkIHRvIGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlIHN5c3RlbSBjbGlwYm9hcmQg
PHJkYXI6Ly9wcm9ibGVtLzUwMTU5NDE+CiAgICAgQVNTRVJUKGlzRm9yRHJhZ0FuZERyb3AoKSk7
Ci0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgIGlmICghY2FuV3Jp
dGVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBtX3dyaXRhYmxlRGF0YU9iamVj
dCA9IDA7CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBDbGlwYm9hcmRXaW46OmNsZWFyQWxsRGF0
YSgpCiAKIFN0cmluZyBDbGlwYm9hcmRXaW46OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdAogeyAgICAgCi0gICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlIHx8ICgh
bV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0RhdGFNYXAuaXNFbXB0eSgpKSkKKyAgICBpZiAoIWNhblJl
YWREYXRhKCkgfHwgKCFtX2RhdGFPYmplY3QgJiYgbV9kcmFnRGF0YU1hcC5pc0VtcHR5KCkpKQog
ICAgICAgICByZXR1cm4gIiI7CiAKICAgICBDbGlwYm9hcmREYXRhVHlwZSBkYXRhVHlwZSA9IGNs
aXBib2FyZFR5cGVGcm9tTUlNRVR5cGUodHlwZSk7CkBAIC00NTksNyArNDU5LDcgQEAgYm9vbCBD
bGlwYm9hcmRXaW46OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRh
dGEpCiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gYmUgYWJsZSB0byB3cml0ZSB0byB0aGUgc3lz
dGVtIGNsaXBib2FyZCA8cmRhcjovL3Byb2JsZW0vNTAxNTk0MT4KICAgICBBU1NFUlQoaXNGb3JE
cmFnQW5kRHJvcCgpKTsKLSAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUgfHwg
IW1fd3JpdGFibGVEYXRhT2JqZWN0KQorICAgIGlmICghY2FuV3JpdGVEYXRhKCkgfHwgIW1fd3Jp
dGFibGVEYXRhT2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDbGlwYm9hcmRE
YXRhVHlwZSB3aW5UeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZSh0eXBlKTsKQEAgLTUw
Miw3ICs1MDIsNyBAQCBzdGF0aWMgdm9pZCBhZGRNaW1lVHlwZXNGb3JGb3JtYXQoTGlzdEhhc2hT
ZXQ8U3RyaW5nPiYgcmVzdWx0cywgY29uc3QgRk9STUFURVRDJgogTGlzdEhhc2hTZXQ8U3RyaW5n
PiBDbGlwYm9hcmRXaW46OnR5cGVzKCkgY29uc3QKIHsgCiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5n
PiByZXN1bHRzOwotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSAmJiBwb2xp
Y3koKSAhPSBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlKQorICAgIGlmICghY2FuUmVhZFR5cGVzKCkp
CiAgICAgICAgIHJldHVybiByZXN1bHRzOwogCiAgICAgaWYgKCFtX2RhdGFPYmplY3QgJiYgbV9k
cmFnRGF0YU1hcC5pc0VtcHR5KCkpCkBAIC01NDAsNyArNTQwLDcgQEAgUGFzc1JlZlB0cjxGaWxl
TGlzdD4gQ2xpcGJvYXJkV2luOjpmaWxlcygpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiAjZWxzZQog
ICAgIFJlZlB0cjxGaWxlTGlzdD4gZmlsZXMgPSBGaWxlTGlzdDo6Y3JlYXRlKCk7Ci0gICAgaWYg
KHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlICYmIHBvbGljeSgpICE9IENsaXBib2FyZFR5
cGVzUmVhZGFibGUpCisgICAgaWYgKCFjYW5SZWFkRGF0YSgpKQogICAgICAgICByZXR1cm4gZmls
ZXMucmVsZWFzZSgpOwogCiAgICAgaWYgKCFtX2RhdGFPYmplY3QgJiYgbV9kcmFnRGF0YU1hcC5p
c0VtcHR5KCkpCkBAIC01NzgsNyArNTc4LDcgQEAgUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJv
YXJkV2luOjpmaWxlcygpIGNvbnN0CiAKIHZvaWQgQ2xpcGJvYXJkV2luOjpzZXREcmFnSW1hZ2Uo
Q2FjaGVkSW1hZ2UqIGltYWdlLCBOb2RlICpub2RlLCBjb25zdCBJbnRQb2ludCAmbG9jKQogewot
ICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRJbWFnZVdyaXRhYmxlICYmIHBvbGljeSgpICE9
IENsaXBib2FyZFdyaXRhYmxlKSAKKyAgICBpZiAoIWNhblNldERyYWdJbWFnZSgpKQogICAgICAg
ICByZXR1cm47CiAgICAgICAgIAogICAgIGlmIChtX2RyYWdJbWFnZSkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzYjU2M2Q0
YTQ5Nzg1Y2EzZDU3ODFmMDI0NmVjYWE2MjhiY2Y0N2ZiLi4wMzUyODg5OGZlNTNjNGNjZWU5NmM5
YTM0N2QwMTI1M2ZkNDhhZGU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMtMjIgIERh
bmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRGF0YSBzdG9yZSBz
aG91bGQgYmUgcmVhZGFibGUgaW4gZHJhZ3N0YXJ0L2NvcHkvY3V0IGV2ZW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2OTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2Fy
ZC9jYW4tcmVhZC1pbi1jb3B5LWFuZC1jdXQtZXZlbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWNvcHktYW5kLWN1dC1ldmVu
dHMuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWlu
LWRyYWdzdGFydC1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcv
cGFzdGVib2FyZC9jYW4tcmVhZC1pbi1kcmFnc3RhcnQtZXZlbnQuaHRtbDogQWRkZWQuCisKIDIw
MTMtMDMtMjEgIEhhcmFsZCBBbHZlc3RyYW5kICA8aHRhQGdvb2dsZS5jb20+CiAKICAgICAgICAg
RXhwb3NlIHRoZSBUeXBlIGZpZWxkIG9mIGFuIFJUQ1N0YXRzUmVwb3J0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tY29weS1hbmQtY3V0LWV2
ZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJl
YWQtaW4tY29weS1hbmQtY3V0LWV2ZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODhjNGFl
Yzg0YTNmZmExNzQzYzUzZTgzYjRlNzk0MmVmNzRkMzgxNAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1jb3B5LWFuZC1jdXQtZXZl
bnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1NpbXBsZSB0ZXN0IHRoYXQgZGF0YSBz
ZXQgZHVyaW5nIGEgY29weS9jdXQgZXZlbnQgY2FuIGJlIHJlYWQgYmFjay4gVG8gcnVuIHRoZSB0
ZXN0IG1hbnVhbGx5LCBzaW1wbHkgc2VsZWN0IGFueSB0ZXh0IGFuZCBpbml0aWF0ZSBhIGNvcHkv
Y3V0IG9wZXJhdGlvbi4KKworY29weTogU1VDQ0VTUworY3V0OiBTVUNDRVNTCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1jb3B5LWFuZC1j
dXQtZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQt
aW4tY29weS1hbmQtY3V0LWV2ZW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2OTQ4MzI0OTAzNTU5NGEw
MDkxMTA4OTVlNGZjNDA4YWUxZWZhOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tY29weS1hbmQtY3V0LWV2ZW50cy5odG1sCkBA
IC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+
CitmdW5jdGlvbiBsb2codGV4dCkgeworICAgIHZhciBsb2cgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnbG9nJyk7CisgICAgbG9nLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KHRleHQpKTsKKyAgICBsb2cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnIn
KSk7Cit9CisKK2Z1bmN0aW9uIGNvcHlUZXN0KGUpIHsKKyAgICBlLmNsaXBib2FyZERhdGEuc2V0
RGF0YSgndGV4dC9wbGFpbicsICdjb3B5IHRlc3QnKTsKKyAgICBpZiAoZXZlbnQuY2xpcGJvYXJk
RGF0YS50eXBlcy5pbmRleE9mKCd0ZXh0L3BsYWluJykgPCAwIHx8CisgICAgICAgIGV2ZW50LmNs
aXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpICE9ICdjb3B5IHRlc3QnKQorICAgICAg
ICBsb2coJ2NvcHk6IEZBSUxFRCcpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCdjb3B5OiBTVUND
RVNTJyk7Cit9CisKK2Z1bmN0aW9uIGN1dFRlc3QoZSkgeworICAgIGUuY2xpcGJvYXJkRGF0YS5z
ZXREYXRhKCd0ZXh0L3BsYWluJywgJ2N1dCB0ZXN0Jyk7CisgICAgaWYgKGV2ZW50LmNsaXBib2Fy
ZERhdGEudHlwZXMuaW5kZXhPZigndGV4dC9wbGFpbicpIDwgMCB8fAorICAgICAgICBldmVudC5j
bGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKSAhPSAnY3V0IHRlc3QnKQorICAgICAg
ICBsb2coJ2N1dDogRkFJTEVEJyk7CisgICAgZWxzZQorICAgICAgICBsb2coJ2N1dDogU1VDQ0VT
UycpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICghd2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHJldHVybjsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICBk
b2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdj
dXQnKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiIG9u
Y29weT0iY29weVRlc3QoZXZlbnQpIiBvbmN1dD0iY3V0VGVzdChldmVudCkiPgorPHA+U2ltcGxl
IHRlc3QgdGhhdCBkYXRhIHNldCBkdXJpbmcgYSBjb3B5L2N1dCBldmVudCBjYW4gYmUgcmVhZCBi
YWNrLiBUbyBydW4KK3RoZSB0ZXN0IG1hbnVhbGx5LCBzaW1wbHkgc2VsZWN0IGFueSB0ZXh0IGFu
ZCBpbml0aWF0ZSBhIGNvcHkvY3V0IG9wZXJhdGlvbi4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJl
YWQtaW4tZHJhZ3N0YXJ0LWV2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9jYW4tcmVhZC1pbi1kcmFnc3RhcnQtZXZlbnQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMyNDAzZTBiYWZkYjBmOGQ3MjVmN2Q1MzEyZjhiMDc4MDUwYjQwNDcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tZHJh
Z3N0YXJ0LWV2ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1NpbXBsZSB0ZXN0IHRo
YXQgZGF0YSBzZXQgZHVyaW5nIGEgZHJhZ3N0YXJ0IGV2ZW50IGNhbiBiZSByZWFkIGJhY2suIFRv
IHJ1biB0aGUgdGVzdCBtYW51YWxseSwgc2ltcGx5IHN0YXJ0IGRyYWdnaW5nIHRoZSAnRHJhZyBN
ZScgZWxlbWVudCBiZWxvdy4KKworRHJhZyBNZQorZHJhZ3N0YXJ0OiBTVUNDRVNTCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1pbi1kcmFnc3Rh
cnQtZXZlbnQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jYW4tcmVhZC1p
bi1kcmFnc3RhcnQtZXZlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjFlNWU4ZmY3ODY3N2MwNTQ2NTcw
NjJhYzY4YmQwYjExNDE5NDliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2Nhbi1yZWFkLWluLWRyYWdzdGFydC1ldmVudC5odG1sCkBAIC0wLDAgKzEs
NDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlv
biBsb2codGV4dCkgeworICAgIHZhciBsb2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9n
Jyk7CisgICAgbG9nLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpKTsK
KyAgICBsb2cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSk7Cit9CisK
K2Z1bmN0aW9uIGRyYWdTdGFydFRlc3QoZSkgeworICAgIGUuZGF0YVRyYW5zZmVyLnNldERhdGEo
J3RleHQvcGxhaW4nLCAnZHJhZ3N0YXJ0IHRlc3QnKTsKKyAgICBpZiAoZXZlbnQuZGF0YVRyYW5z
ZmVyLnR5cGVzLmluZGV4T2YoJ3RleHQvcGxhaW4nKSA8IDAgfHwKKyAgICAgICAgZXZlbnQuZGF0
YVRyYW5zZmVyLmdldERhdGEoJ3RleHQvcGxhaW4nKSAhPSAnZHJhZ3N0YXJ0IHRlc3QnKQorICAg
ICAgICBsb2coJ2RyYWdzdGFydDogRkFJTEVEJyk7CisgICAgZWxzZQorICAgICAgICBsb2coJ2Ry
YWdzdGFydDogU1VDQ0VTUycpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICgh
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKworICAgIHZhciBkcmFnZ2VkRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdkcmFnZ2VkRWxlbWVudCcpOworICAgIHZhciB4ID0gZHJhZ2dlZEVsZW1lbnQub2Zmc2V0
TGVmdCArIGRyYWdnZWRFbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICB2YXIgeSA9IGRyYWdn
ZWRFbGVtZW50Lm9mZnNldFRvcCArIGRyYWdnZWRFbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisK
KyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZURvd24oKTsKKyAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDApOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHggKyAxMDAsIHkgKyAxMDApOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
VXAoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgor
PHA+U2ltcGxlIHRlc3QgdGhhdCBkYXRhIHNldCBkdXJpbmcgYSBkcmFnc3RhcnQgZXZlbnQgY2Fu
IGJlIHJlYWQgYmFjay4gVG8gcnVuCit0aGUgdGVzdCBtYW51YWxseSwgc2ltcGx5IHN0YXJ0IGRy
YWdnaW5nIHRoZSAnRHJhZyBNZScgZWxlbWVudCBiZWxvdy4KKzxkaXYgaWQ9ImRyYWdnZWRFbGVt
ZW50IiBkcmFnZ2FibGU9InRydWUiIG9uZHJhZ3N0YXJ0PSJkcmFnU3RhcnRUZXN0KGV2ZW50KSI+
RHJhZyBNZTwvZGl2PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="216398"
          type_id="1"
          status="+"
          setter="tony"
    />
    <flag name="commit-queue"
          id="216399"
          type_id="3"
          status="-"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>