<?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>19417</bug_id>
          
          <creation_ts>2008-06-06 15:08:51 -0700</creation_ts>
          <short_desc>Refactor the CSSProperty handling infrastructure of CSSParser</short_desc>
          <delta_ts>2012-03-10 05:03:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>80653</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>61186</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Andras Becsi">abecsi</assigned_to>
          <cc>abecsi</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>hyatt</cc>
    
    <cc>koivisto</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>82475</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-06-06 15:08:51 -0700</bug_when>
    <thetext>CSSParser should use custom &quot;vector-like&quot; class for managing properties

Right now CSSParser has this ad hoc system of m_parsedProperties m_numParsedProperties and m_maxParsedProperties, along with a bunch of fastMalloc and fastRealloc statements.  We can&apos;t just replace this directly with a vector (unless we&apos;re comfortable changing away from the current allocation scheme.  But we should at least move to a custom class which encapulates this logic.  That would make parts of CSSParser much cleaner (no more direct array lookups, instead we would call things like

m_parseProperties.last(), etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82555</commentid>
    <comment_count>1</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-06-07 08:55:45 -0700</bug_when>
    <thetext>Why can&apos;t we just use a Vector?  As long as you make sure the minimum capacity is m_maxParsedProperties, I think it would work.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82563</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-06-07 10:37:34 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Why can&apos;t we just use a Vector?  As long as you make sure the minimum capacity
&gt; is m_maxParsedProperties, I think it would work.
&gt; 

I think we probably can just use vector.  But that will change the growth behavior (or at least the default growth behavior), we can manually grow it in equal sized chunks instead of letting vector grow itself by 2x each time it needs to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380102</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-05 21:28:02 -0700</bug_when>
    <thetext>Eric, can this bug be closed now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380186</commentid>
    <comment_count>4</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-04-06 00:34:54 -0700</bug_when>
    <thetext>The described approach is still the same whith m_parsedProperties being a CSSProperty** and CSSParser is still using fastMalloc and fastRealloc for managing it.
That&apos;s why I took ownership of the bug, but if this is of no concern any more, I can surely close it as wontfix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405822</commentid>
    <comment_count>5</comment_count>
      <attachid>93934</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-05-18 10:38:31 -0700</bug_when>
    <thetext>Created attachment 93934
proposed patch

Implement CSSPropertyContainer which on removal marks entries as empty and sweeps them when the internal array grows too big. Use an internal HashMap to be able to efficiently find entries by ID and automatically discard duplicate properties.

In a follow-up patch CSSMutableStyleDeclaration can be simplified to use this container too, instead of maintaining its own vector-based infrastructure for managing parsed properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405831</commentid>
    <comment_count>6</comment_count>
      <attachid>93936</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-05-18 10:50:04 -0700</bug_when>
    <thetext>Created attachment 93936
updated patch

Updated to ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406002</commentid>
    <comment_count>7</comment_count>
      <attachid>93936</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-05-18 13:45:19 -0700</bug_when>
    <thetext>Comment on attachment 93936
updated patch

Attachment 93936 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/8708684</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406423</commentid>
    <comment_count>8</comment_count>
      <attachid>94075</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-05-19 08:49:19 -0700</bug_when>
    <thetext>Created attachment 94075
updated patch

Also add CSSPropertyContainer to CMakeLists.txt to make it build on EFL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428851</commentid>
    <comment_count>9</comment_count>
      <attachid>94075</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-06-28 06:53:12 -0700</bug_when>
    <thetext>Comment on attachment 94075
updated patch

Marking this obsolete and preparing an updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431168</commentid>
    <comment_count>10</comment_count>
      <attachid>99473</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-01 08:36:37 -0700</bug_when>
    <thetext>Created attachment 99473
proposed patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431169</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-01 08:39:08 -0700</bug_when>
    <thetext>Attachment 99473 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/css/CSSPropertyContainer.cpp:176:  Extra space after ( in if  [whitespace/parens] [5]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431170</commentid>
    <comment_count>12</comment_count>
      <attachid>99474</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-01 08:39:34 -0700</bug_when>
    <thetext>Created attachment 99474
proposed patch v2

Remove extra whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431180</commentid>
    <comment_count>13</comment_count>
      <attachid>99476</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-01 08:51:04 -0700</bug_when>
    <thetext>Created attachment 99476
proposed patch v2

Fix the chromium build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431205</commentid>
    <comment_count>14</comment_count>
      <attachid>99476</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-01 09:18:32 -0700</bug_when>
    <thetext>Comment on attachment 99476
proposed patch v2

Attachment 99476 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8970501</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431240</commentid>
    <comment_count>15</comment_count>
      <attachid>99476</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-07-01 10:03:37 -0700</bug_when>
    <thetext>Comment on attachment 99476
proposed patch v2

Attachment 99476 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/8970509</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431252</commentid>
    <comment_count>16</comment_count>
      <attachid>99476</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-01 10:42:15 -0700</bug_when>
    <thetext>Comment on attachment 99476
proposed patch v2

Attachment 99476 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/8965888</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431263</commentid>
    <comment_count>17</comment_count>
      <attachid>99476</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-01 11:08:36 -0700</bug_when>
    <thetext>Comment on attachment 99476
proposed patch v2

Attachment 99476 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8977030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431318</commentid>
    <comment_count>18</comment_count>
      <attachid>99476</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-01 12:09:17 -0700</bug_when>
    <thetext>Comment on attachment 99476
proposed patch v2

Attachment 99476 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8970545</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431988</commentid>
    <comment_count>19</comment_count>
      <attachid>99476</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-07-04 10:41:53 -0700</bug_when>
    <thetext>Comment on attachment 99476
proposed patch v2

Attachment 99476 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/8988024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432285</commentid>
    <comment_count>20</comment_count>
      <attachid>99717</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-05 08:20:27 -0700</bug_when>
    <thetext>Created attachment 99717
updated patch

Addressed build issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432287</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-05 08:23:24 -0700</bug_when>
    <thetext>Attachment 99717 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/WebCore/css/CSSMutableStyleDeclaration.cpp:653:  Missing space before ( in if(  [whitespace/parens] [5]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432308</commentid>
    <comment_count>22</comment_count>
      <attachid>99723</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-05 10:18:40 -0700</bug_when>
    <thetext>Created attachment 99723
proposed patch (style issue addressed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432315</commentid>
    <comment_count>23</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-05 10:27:22 -0700</bug_when>
    <thetext>With the patch we get around 2-3% gain with QtTestBrowser on the Methanol page loading test, which tests on 23 locally mirrored popular sites.
Even bigger speed-up should be possible if CSSMutableStyleDeclaration also uses this container for managing properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432711</commentid>
    <comment_count>24</comment_count>
      <attachid>99723</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-07-06 03:58:27 -0700</bug_when>
    <thetext>Comment on attachment 99723
proposed patch (style issue addressed)

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

Informal review from a workmate :)

&gt; Source/WebCore/css/CSSProperty.h:37
&gt; +    CSSProperty()
&gt; +    {
&gt; +    }

Please initialize the members or add a comment about why it is safe to not initializing them.

&gt; Source/WebCore/css/CSSPropertyContainer.cpp:68
&gt; +    if (m_usedSize + 1 &gt;= m_properties.size())
&gt; +        sweep();

|m_usedSize &gt; m_properties.size()| as the condition would be more straightforward I think

&gt; Source/WebCore/css/CSSPropertyContainer.cpp:77
&gt; +    if (!propertyID || !m_idToPositionMap.contains(propertyID))
&gt; +        return kInvalidPosition;

I don&apos;t think you need this checks because you never call it with a 0 propertyID (could be an ASSERT) and the second part is checked once again below.

&gt; Source/WebCore/css/CSSPropertyContainer.cpp:82
&gt; +    unsigned position = m_idToPositionMap.get(propertyID);
&gt; +
&gt; +    if (position == kInvalidPosition)
&gt; +        return kInvalidPosition;

This is where you check it again but it is not clear. I guess it works because the value you define as kInvalidPosition is equal with HashTraits&lt;unsigned&gt;::empty(). However, these are not strictly the same thing so you should use the latter here.

&gt; Source/WebCore/css/CSSPropertyContainer.cpp:95
&gt; +    if (position &gt;= m_usedSize || !m_properties[position].id())
&gt; +        return;

I don&apos;t think you need the first part of the condition, it could be an ASSERT. Maybe the second part could be relaxed as well by taking care of that in the callers that know whether it is neccessary to check this.

&gt; Source/WebCore/css/CSSPropertyContainer.cpp:106
&gt; +    if (!propertyID)
&gt; +        return;

ASSERT instead?

&gt; Source/WebCore/css/CSSPropertyContainer.cpp:169
&gt; +    return &amp;m_properties.at(index);

nit: s/at/[] for consistency

&gt; Source/WebCore/css/CSSPropertyContainer.cpp:179
&gt; +    if (position == kInvalidPosition)
&gt; +        return false;
&gt; +
&gt; +    return true;

I would say |return position != kInvalidPosition|

&gt; Source/WebCore/css/CSSPropertyContainer.cpp:236
&gt; +    for (int i = 0; i &lt; 3; ++i) {

nit: s/3/sizeof(ids)

&gt; Source/WebCore/css/CSSPropertyContainer.h:40
&gt; +    CSSProperty* findPropertyWithId(int propertyID);

It is unused now, right? Maybe we should add this later.

&gt; Source/WebCore/css/CSSPropertyContainer.h:46
&gt; +    CSSProperty* operator[](size_t index);

Seems odd that it returns with a pointer and not a reference. Callers use  the return value without checking that it is not zero (there is an ASSERT at one of them) so a reference could work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432769</commentid>
    <comment_count>25</comment_count>
      <attachid>99830</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-06 07:39:08 -0700</bug_when>
    <thetext>Created attachment 99830
proposed patch

Updated, comments taken into account.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432774</commentid>
    <comment_count>26</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-06 07:54:35 -0700</bug_when>
    <thetext>(In reply to comment #24)

Thanks Balazs for taking a look at the patch.

&gt; (From update of attachment 99723 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=99723&amp;action=review
&gt; 
&gt; Informal review from a workmate :)
&gt; 
&gt; &gt; Source/WebCore/css/CSSProperty.h:37
&gt; &gt; +    CSSProperty()
&gt; &gt; +    {
&gt; &gt; +    }
&gt; 
&gt; Please initialize the members or add a comment about why it is safe to not initializing them.
&gt; 

Done.

&gt; &gt; Source/WebCore/css/CSSPropertyContainer.cpp:68
&gt; &gt; +    if (m_usedSize + 1 &gt;= m_properties.size())
&gt; &gt; +        sweep();
&gt; 
&gt; |m_usedSize &gt; m_properties.size()| as the condition would be more straightforward I think

Ditto.

&gt; 
&gt; &gt; Source/WebCore/css/CSSPropertyContainer.cpp:77
&gt; &gt; +    if (!propertyID || !m_idToPositionMap.contains(propertyID))
&gt; &gt; +        return kInvalidPosition;
&gt; 
&gt; I don&apos;t think you need this checks because you never call it with a 0 propertyID (could be an ASSERT) and the second part is checked once again below.
&gt; 
&gt; &gt; Source/WebCore/css/CSSPropertyContainer.cpp:82
&gt; &gt; +    unsigned position = m_idToPositionMap.get(propertyID);
&gt; &gt; +
&gt; &gt; +    if (position == kInvalidPosition)
&gt; &gt; +        return kInvalidPosition;
&gt; 
&gt; This is where you check it again but it is not clear. I guess it works because the value you define as kInvalidPosition is equal with HashTraits&lt;unsigned&gt;::empty(). However, these are not strictly the same thing so you should use the latter here.

invalidateByPosition sets kInvalidPosition as position value instead of removing the pair from the HashMap, so if there is no entry in the hash yet we had an early return.

But you are right, this doubles the look-ups, so now kInvalidPosition is HashTraits&lt;unsigned&gt;::emptyValue() which makes things simpler.

&gt; 
&gt; &gt; Source/WebCore/css/CSSPropertyContainer.cpp:95
&gt; &gt; +    if (position &gt;= m_usedSize || !m_properties[position].id())
&gt; &gt; +        return;
&gt; 
&gt; I don&apos;t think you need the first part of the condition, it could be an ASSERT. Maybe the second part could be relaxed as well by taking care of that in the callers that know whether it is neccessary to check this.

Redundant checks. Fixed.

&gt; 
&gt; &gt; Source/WebCore/css/CSSPropertyContainer.cpp:106
&gt; &gt; +    if (!propertyID)
&gt; &gt; +        return;
&gt; 
&gt; ASSERT instead?

Done.
&gt; 
&gt; &gt; Source/WebCore/css/CSSPropertyContainer.h:40
&gt; &gt; +    CSSProperty* findPropertyWithId(int propertyID);
&gt; 
&gt; It is unused now, right? Maybe we should add this later.

Yep, this was left accidentally in this patch.

&gt; 
&gt; &gt; Source/WebCore/css/CSSPropertyContainer.h:46
&gt; &gt; +    CSSProperty* operator[](size_t index);
&gt; 
&gt; Seems odd that it returns with a pointer and not a reference. Callers use  the return value without checking that it is not zero (there is an ASSERT at one of them) so a reference could work.

I did not want to change all the callsites to use references since the patch got too big, and scares reviewers away, but now I changed it to return references.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432775</commentid>
    <comment_count>27</comment_count>
      <attachid>99830</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 07:58:16 -0700</bug_when>
    <thetext>Comment on attachment 99830
proposed patch

Attachment 99830 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8995027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432820</commentid>
    <comment_count>28</comment_count>
      <attachid>99830</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 09:10:53 -0700</bug_when>
    <thetext>Comment on attachment 99830
proposed patch

Attachment 99830 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/8984808</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432821</commentid>
    <comment_count>29</comment_count>
      <attachid>99842</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-06 09:12:36 -0700</bug_when>
    <thetext>Created attachment 99842
proposed patch

Fix the chromium builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432870</commentid>
    <comment_count>30</comment_count>
      <attachid>99842</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 10:43:20 -0700</bug_when>
    <thetext>Comment on attachment 99842
proposed patch

Attachment 99842 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8995063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432904</commentid>
    <comment_count>31</comment_count>
      <attachid>99842</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 11:44:02 -0700</bug_when>
    <thetext>Comment on attachment 99842
proposed patch

Attachment 99842 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8987750</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433492</commentid>
    <comment_count>32</comment_count>
      <attachid>99991</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-07 09:18:00 -0700</bug_when>
    <thetext>Created attachment 99991
updated patch

Use HashTraits&lt;unsigned&gt;::emptyValue() directly instead of assigning it to a global constant, to avoid creating global initializers on call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434039</commentid>
    <comment_count>33</comment_count>
      <attachid>99991</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-08 07:10:31 -0700</bug_when>
    <thetext>Comment on attachment 99991
updated patch

As discussed with anttik on IRC it might be better to do a more extensive refactoring of the CSSProperty infrastructure.
Marking the patch obsolete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434042</commentid>
    <comment_count>34</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-07-08 07:12:12 -0700</bug_when>
    <thetext>We discussed this with Andras in IRC. The conclusion was that he will take another shot of doing a wider refactoring of this very old code. My concern was that the current patch sort of encapsulates the assumptions (for example that the data structure here should look like a vector) of the old code into a class, with some performance improvements, whereas a bit wider look might bring much more improvements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448123</commentid>
    <comment_count>35</comment_count>
      <attachid>103266</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-08-08 11:12:37 -0700</bug_when>
    <thetext>Created attachment 103266
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448248</commentid>
    <comment_count>36</comment_count>
      <attachid>103289</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-08-08 13:51:09 -0700</bug_when>
    <thetext>Created attachment 103289
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448280</commentid>
    <comment_count>37</comment_count>
      <attachid>103289</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 14:42:14 -0700</bug_when>
    <thetext>Comment on attachment 103289
updated patch

Attachment 103289 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9225115

New failing tests:
fast/css/invalidation-errors-2.html
fast/css/invalidation-errors.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451055</commentid>
    <comment_count>38</comment_count>
      <attachid>103911</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-08-15 07:08:37 -0700</bug_when>
    <thetext>Created attachment 103911
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451761</commentid>
    <comment_count>39</comment_count>
      <attachid>103911</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-08-16 11:24:59 -0700</bug_when>
    <thetext>Comment on attachment 103911
updated patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        In a follow-up CSSPropertyContainer can also be used to extract the property handling logic
&gt; +        from CSSMutableStyleDeclaration which currently maintains its own fork of infrastructure
&gt; +        for managing parsed properties.

I just realized that this might not be true since CSSMutableStyleDeclaration seem to need a Vector-based approach at least for it&apos;s item(unsigned) method so this simplification might not be possible with the ListHashSet based patch.

Although this patch has a simpler logic, the previous approach has more possibilities for removing logically duplicated code from CSSMutableStyleDeclaration. I&apos;m going to look into this in more detail tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452291</commentid>
    <comment_count>40</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-08-17 09:33:44 -0700</bug_when>
    <thetext>It should be possible to add special case optimization for that particular case by constructing a simple vector cache when item() is first called. I suspect it is rarely used as CSSOM API and internal use (if any) could be replaced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453099</commentid>
    <comment_count>41</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-08-18 10:07:12 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; It should be possible to add special case optimization for that particular case by constructing a simple vector cache when item() is first called. I suspect it is rarely used as CSSOM API and internal use (if any) could be replaced.

That&apos;s what I was experimenting with and it looks like it&apos;s going to work. I have a draft patch for BUG 61186 which is based on this data structure I&apos;m measuring the impact now. I&apos;m uploading here an updated patch soon just waiting for the update of my git-svn repo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453103</commentid>
    <comment_count>42</comment_count>
      <attachid>104356</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-08-18 10:12:55 -0700</bug_when>
    <thetext>Created attachment 104356
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455525</commentid>
    <comment_count>43</comment_count>
      <attachid>104869</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-08-23 11:15:17 -0700</bug_when>
    <thetext>Created attachment 104869
updated to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461204</commentid>
    <comment_count>44</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-09-02 06:57:29 -0700</bug_when>
    <thetext>I&apos;m unsure if this is really a progression. It adds quite a bit of code lines for little obvious benefit. It might look different when CSSMutableStyleDeclaration is switched over to the new class. However, CSSPropertyContainer look far too heavy weight to be used there as is, CSS rules are high volume objects that need to size optimized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497905</commentid>
    <comment_count>45</comment_count>
      <attachid>104869</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-11-08 03:25:26 -0800</bug_when>
    <thetext>Comment on attachment 104869
updated to ToT

Taking the patch out of the review queue. I might have time to revisit the issue soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575501</commentid>
    <comment_count>46</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-03-10 05:03:31 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 80653 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93934</attachid>
            <date>2011-05-18 10:38:31 -0700</date>
            <delta_ts>2011-05-18 10:50:04 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001-BUG-19417-CSSParser-should-use-custom-vector-like-cl.patch</filename>
            <type>text/plain</type>
            <size>39359</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSAxOWE3YmNmOWQyZjQ1M2ExNmNmNWQzN2FjZTcwZjRlYmJjNzJmZmNmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPgpEYXRl
OiBXZWQsIDE4IE1heSAyMDExIDE5OjE3OjU5ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gW0JVRyAx
OTQxN10gLSBDU1NQYXJzZXIgc2hvdWxkIHVzZSBjdXN0b20gdmVjdG9yLWxpa2UgY2xhc3MKIGZv
ciBtYW5hZ2luZyBwcm9wZXJ0aWVzCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgNzAgKysrKysrCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8gICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiAgICAgfCAgICA4ICsKIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiB8ICAgIDggKwogU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYW1tYXIueSAgICAgICAgICAgICAgICAgIHwgICAgOCArLQogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgICAgICAgICAgICAgICAgIHwgIDExMSArKystLS0tLS0K
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCAgICAgICAgICAgICAgICAgICB8ICAgIDgg
Ky0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgICAgICB8ICAy
NjEgKysrKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
Q29udGFpbmVyLmggICAgICAgIHwgICA3MyArKysrKysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdD
U1NQYXJzZXIuY3BwICAgICAgICAgICAgICB8ICAgIDMgKy0KIDEyIGZpbGVzIGNoYW5nZWQsIDQ3
MiBpbnNlcnRpb25zKCspLCA4NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmgKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggOGFmZThjOS4uYzQyZjhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDExLTA1
LTE4ICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDU1NQYXJzZXIgc2hvdWxkIHVzZSBjdXN0
b20gInZlY3Rvci1saWtlIiBjbGFzcyBmb3IgbWFuYWdpbmcgcHJvcGVydGllcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MTcKKworICAgICAgICBJ
bXBsZW1lbnQgQ1NTUHJvcGVydHlDb250YWluZXIgd2hpY2ggb24gcmVtb3ZhbCBtYXJrcyBlbnRy
aWVzIGFzIGVtcHR5CisgICAgICAgIGFuZCBzd2VlcHMgdGhlbSB3aGVuIHRoZSBpbnRlcm5hbCBh
cnJheSBncm93cyB0b28gYmlnLgorICAgICAgICBVc2UgYW4gaW50ZXJuYWwgSGFzaE1hcCB0byBi
ZSBhYmxlIHRvIGVmZmljaWVudGx5IGZpbmQgZW50cmllcyBieSBJRAorICAgICAgICBhbmQgYXV0
b21hdGljYWxseSBkaXNjYXJkIGR1cGxpY2F0ZSBwcm9wZXJ0aWVzLgorCisgICAgICAgIEluIGEg
Zm9sbG93LXVwIHBhdGNoIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uIGNhbiBiZSBzaW1wbGlm
aWVkIHRvIHVzZSB0aGlzIGNvbnRhaW5lcgorICAgICAgICBpbnN0ZWFkIG9mIG1haW50YWluaW5n
IGl0cyBvd24gdmVjdG9yLWJhc2VkIGluZnJhc3RydWN0dXJlIGZvciBtYW5hZ2luZyBwYXJzZWQg
cHJvcGVydGllcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLCBubyBmdW5jaW9uYWxp
dHkgY2hhbmdlLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NT
U1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6On5DU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpjbGVhclByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZUZvbnRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udFZh
cmlhbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRXZWlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnN0YXJ0RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6ZW5kRGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2Vy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Omhhc1Byb3BlcnRpZXMpOgorICAgICAg
ICAqIGNzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OkNTU1Byb3BlcnR5Q29udGFpbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjp+Q1NTUHJvcGVydHlDb250YWluZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6Omdyb3cpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnN3ZWVwKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5Q29udGFpbmVyOjppbnZhbGlkYXRlQnlQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW52YWxpZGF0ZUJ5SWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmZpbmRQcm9wZXJ0eVdpdGhJZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Zmlyc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6Omxhc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHlDb250YWluZXI6Omxhc3RCdXRPbmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlDb250YWluZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250
YWluZXI6OmNvbnRhaW5zUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlD
b250YWluZXI6OnJlbW92ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5
Q29udGFpbmVyOjpyZW1vdmVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5Q29udGFpbmVyOjphZGRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eUNvbnRhaW5lcjo6cm9sbGJhY2tMYXN0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eUNvbnRhaW5lcjo6ZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y2xlYXJQcm9wZXJ0aWVzKToKKyAg
ICAgICAgKiBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHlDb250YWluZXI6Omhhc0ZvbnRGYWNlT25seSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eUNvbnRhaW5lcjo6c2V0Rm9udEZhY2VPbmx5KToKKyAgICAgICAgKiBjc3MvU1ZH
Q1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTVkdWYWx1
ZSk6CisKIDIwMTEtMDUtMTggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4Njc0Ny4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDI2MjkxZWEuLmMwYmEzZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtOTUwLDYgKzk1MCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBcCiAJU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5LmggXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eVNvdXJjZURhdGEuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAyZDY4ZDhiLi5jOGU4YWYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC00OTEsNiArNDkxLDcgQEAKICAgICAgICAgICAgICdjc3Mv
Q1NTUGFyc2VyVmFsdWVzLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5o
JywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHkuaCcsCisgICAgICAgICAgICAnY3NzL0NT
U1Byb3BlcnR5Q29udGFpbmVyLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eVNvdXJj
ZURhdGEuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1JlZmxlY3RWYWx1ZS5oJywKICAgICAgICAg
ICAgICdjc3MvQ1NTUmVmbGVjdGlvbkRpcmVjdGlvbi5oJywKQEAgLTIzMDgsNiArMjMwOSw3IEBA
CiAgICAgICAgICAgICAnY3NzL0NTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUuaCcsCiAgICAgICAgICAg
ICAnY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCcsCiAgICAgICAgICAgICAnY3NzL0NT
U1Byb3BlcnR5LmNwcCcsCisgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNw
cCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwJywKICAgICAgICAg
ICAgICdjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJv
cGVydHlTb3VyY2VEYXRhLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDVlZjkxMzQuLjAzMDhlOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCkBAIC00MDYsNiArNDA2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUu
Y3BwIFwKICAgICBjc3MvQ1NTUHJvcGVydHkuY3BwIFwKKyAgICBjc3MvQ1NTUHJvcGVydHlDb250
YWluZXIuY3BwIFwKICAgICBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAgXAogICAgIGNzcy9D
U1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIFwKICAgICBjc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcCBc
CkBAIC0xMzg4LDYgKzEzODksNyBAQCBIRUFERVJTICs9IFwKICAgICBjc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuaCBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUuaCBcCiAgICAgY3NzL0NT
U1Byb3BlcnR5LmggXAorICAgIGNzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oIFwKICAgICBjc3Mv
Q1NTUHJvcGVydHlMb25naGFuZC5oIFwKICAgICBjc3MvQ1NTUmVmbGVjdFZhbHVlLmggXAogICAg
IGNzcy9DU1NSdWxlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCAxMjg4YTg4Li5mYTc1YjQ3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzE4OTgsNiArMzE4OTgsMTQgQEAKIAkJCQk+
CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1Byb3Bl
cnR5Q29udGFpbmVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cY3NzXENTU1Byb3BlcnR5Q29udGFpbmVyLmgiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQcm9wZXJ0eUxvbmdoYW5k
LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmVjODI2MS4uODYwMjE1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDEw
LDYgKzQxMCw4IEBACiAJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3Iu
cG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIx
QUU3ODBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vyc29yLnBuZyAqLzsgfTsKIAkJMUFCMUFF
N0IwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxQUU3OTBDMDUxRkRFMDAxMzlGNEYg
Lyogem9vbU91dEN1cnNvci5wbmcgKi87IH07CiAJCTFBQjMzREE1MTI1NTFFMzIwMDI0NDU3QSAv
KiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUIzM0RBNDEyNTUxRTMyMDAyNDQ1N0EgLyogSU9LaXQuZnJhbWV3b3JrICov
OyB9OworCQkxQUI0NEEwQzEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCNDRB
MEIxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCAqLzsgfTsKKwkJ
MUFCNDRBMEUxMzY3MkQyMDAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI0NEEwRDEzNjcyRDIw
MDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuaCAqLzsgfTsKIAkJMUFCN0ZDNjgwQThC
OTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdGQzQ3MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0
aEV2YWx1YXRvci5jcHAgKi87IH07CiAJCTFBQjdGQzY5MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0
aEV2YWx1YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFCN0ZDNDgwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmggKi87IH07CiAJ
CTFBQjdGQzZCMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0ZDNEEwQThCOTJFQzAw
RDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5jcHAgKi87IH07CkBAIC02ODMxLDYgKzY4MzMsOCBA
QAogCQkxQUIxQUU3ODBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vyc29yLnBuZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0
aCA9IHpvb21JbkN1cnNvci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjFB
RTc5MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IHpvb21P
dXRDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIzM0RBNDEyNTUx
RTMyMDAyNDQ1N0EgLyogSU9LaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBJT0tpdC5m
cmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdv
cms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJCTFBQjQ0QTBCMTM2NzJDRkYwMDA4
Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFBQjQ0QTBEMTM2NzJEMjAwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRh
aW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NQcm9wZXJ0eUNvbnRh
aW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI3RkM0NzBBOEI5MkVDMDBE
OUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFhQYXRoRXZhbHVhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFCN0ZDNDgwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUGF0aEV2YWx1YXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQUI3RkM0OTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0
b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBYUGF0aEV2YWx1YXRvci5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODc1Nyw2ICsxODc2MSw4IEBACiAJCUY1MjNEMTg0
MDJERTQyRTgwMTg2MzVDQSAvKiBjc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTFBQjQ0QTBEMTM2NzJEMjAwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNv
bnRhaW5lci5oICovLAorCQkJCTFBQjQ0QTBCMTM2NzJDRkYwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0
eUNvbnRhaW5lci5jcHAgKi8sCiAJCQkJOTNDQTRDOUMwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V0
b2tlbml6ZXIgKi8sCiAJCQkJQTgwRTZDREEwQTE5ODlDQTAwN0ZCOEM1IC8qIENvdW50ZXIuaCAq
LywKIAkJCQk5MzA3MDVDNzA5RTBDOTVGMDBCMTdGRTQgLyogQ291bnRlci5pZGwgKi8sCkBAIC0y
MjgyNyw2ICsyMjgzMyw3IEBACiAJCQkJRkQ1MzczNTcxMzdCNjUzQjAwMDA4RENFIC8qIER5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGN0U0OTExMzdDRDdD
NzAwMUREQUU3IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUIx
RTU0NTkzMTM0NjI5QzEwMDkyQTU0NSAvKiBDYWxsYmFja1Rhc2suaCBpbiBIZWFkZXJzICovLAor
CQkJCTFBQjQ0QTBFMTM2NzJEMjAwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0yNTUwMiw2ICsyNTUwOSw3IEBACiAJCQkJMzc5RTM3MTYxMzczNkE2
NjAwQjlFOTE5IC8qIFF1b3RlZFByaW50YWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUz
NzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkQ1MzczNTYxMzdCNjUzQjAwMDA4RENFIC8qIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkxQUI0NEEwQzEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJvcGVy
dHlDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRl
eCA0NWYyNjgzLi5jMzRkZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTMyMyw5ICsz
MjMsOSBAQCB3ZWJraXRfdmFsdWU6CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0
PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgIGlmICgkNCkgewogICAgICAgICAgICAgcC0+
bV92YWx1ZUxpc3QgPSBwLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpOwotICAgICAgICAgICAg
aW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwLT5tX251bVBhcnNlZFByb3BlcnRpZXM7CisgICAg
ICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVydGllcy5j
b3VudCgpOwogICAgICAgICAgICAgaWYgKCFwLT5wYXJzZVZhbHVlKHAtPm1faWQsIHAtPm1faW1w
b3J0YW50KSkKLSAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKHAtPm1f
bnVtUGFyc2VkUHJvcGVydGllcyAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICAgICAg
ICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50
KCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIGRlbGV0ZSBwLT5tX3ZhbHVl
TGlzdDsKICAgICAgICAgICAgIHAtPm1fdmFsdWVMaXN0ID0gMDsKICAgICAgICAgfQpAQCAtMTI3
MywxMCArMTI3MywxMCBAQCBkZWNsYXJhdGlvbjoKICAgICAgICAgYm9vbCBpc1Byb3BlcnR5UGFy
c2VkID0gZmFsc2U7CiAgICAgICAgIGlmICgkMSAmJiAkNCkgewogICAgICAgICAgICAgcC0+bV92
YWx1ZUxpc3QgPSBwLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpOwotICAgICAgICAgICAgaW50
IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwLT5tX251bVBhcnNlZFByb3BlcnRpZXM7CisgICAgICAg
ICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVydGllcy5jb3Vu
dCgpOwogICAgICAgICAgICAgJCQgPSBwLT5wYXJzZVZhbHVlKCQxLCAkNSk7CiAgICAgICAgICAg
ICBpZiAoISQkKQotICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+
bV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAg
ICAgICAgcC0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwLT5tX3BhcnNlZFByb3BlcnRpZXMuY291
bnQoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIGlzUHJvcGVydHlQYXJzZWQgPSB0cnVlOwogICAgICAgICAgICAgZGVsZXRlIHAtPm1f
dmFsdWVMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCA2NmE5NThiLi45NzExOWVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTM3LDE0ICsxMzcsMTAgQEAgQ1NTUGFy
c2VyOjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQYXJzaW5nKQogICAgICwgbV9pZCgwKQogICAgICwg
bV9zdHlsZVNoZWV0KDApCiAgICAgLCBtX3ZhbHVlTGlzdCgwKQotICAgICwgbV9wYXJzZWRQcm9w
ZXJ0aWVzKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5Kio+KGZhc3RNYWxsb2MoMzIgKiBzaXplb2Yo
Q1NTUHJvcGVydHkqKSkpKQotICAgICwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKDApCi0gICAgLCBt
X21heFBhcnNlZFByb3BlcnRpZXMoMzIpCiAgICAgLCBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZv
cmVNYXJnaW5Cb3goSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVMpCiAgICAgLCBtX2luUGFy
c2VTaG9ydGhhbmQoMCkKICAgICAsIG1fY3VycmVudFNob3J0aGFuZCgwKQogICAgICwgbV9pbXBs
aWNpdFNob3J0aGFuZChmYWxzZSkKLSAgICAsIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKGZhbHNl
KQogICAgICwgbV9oYWRTeW50YWN0aWNhbGx5VmFsaWRDU1NSdWxlKGZhbHNlKQogICAgICwgbV9k
ZWZhdWx0TmFtZXNwYWNlKHN0YXJBdG9tKQogICAgICwgbV9pblN0eWxlUnVsZU9yRGVjbGFyYXRp
b24oZmFsc2UpCkBAIC0xNjgsOSArMTY0LDYgQEAgQ1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBz
dHJpY3RQYXJzaW5nKQogCiBDU1NQYXJzZXI6On5DU1NQYXJzZXIoKQogewotICAgIGNsZWFyUHJv
cGVydGllcygpOwotICAgIGZhc3RGcmVlKG1fcGFyc2VkUHJvcGVydGllcyk7Ci0KICAgICBkZWxl
dGUgbV92YWx1ZUxpc3Q7CiAKICAgICBmYXN0RnJlZShtX2RhdGEpOwpAQCAtNDMxLDExICs0MjQs
MTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24qIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHkKICAgICBtX3J1bGUgPSAwOwogCiAgICAgYm9v
bCBvayA9IGZhbHNlOwotICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAgICAg
ZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0gICAgaWYgKG1fbnVtUGFyc2VkUHJvcGVydGll
cykgeworICAgIGlmIChtX3BhcnNlZFByb3BlcnRpZXMuaGFzRm9udEZhY2VPbmx5KCkpCisgICAg
ICAgIG1fcGFyc2VkUHJvcGVydGllcy5kZWxldGVGb250RmFjZU9ubHlQcm9wZXJ0aWVzKCk7Cisg
ICAgaWYgKG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpKSB7CiAgICAgICAgIG9rID0gdHJ1ZTsK
LSAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0
aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFy
c2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRp
ZXMuY291bnQoKSk7CiAgICAgICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIH0KIApAQCAtNDU3
LDcgKzQ1MCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBib29sIHN0cmljdCkKICAgICBpZiAoIXBhcnNlci5wYXJzZUNv
bG9yKGR1bW15U3R5bGVEZWNsYXJhdGlvbi5nZXQoKSwgc3RyaW5nKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgQ1NTVmFsdWUqIHZhbHVlID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGll
c1swXS0+dmFsdWUoKTsKKyAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXIubV9wYXJzZWRQcm9w
ZXJ0aWVzLmZpcnN0KCkudmFsdWUoKTsKICAgICBpZiAodmFsdWUtPmNzc1ZhbHVlVHlwZSgpICE9
IENTU1ZhbHVlOjpDU1NfUFJJTUlUSVZFX1ZBTFVFKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
QEAgLTQ3OCw3ICs0NzEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvcihDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRpb24sIGNvbnN0IFN0cmluZwogICAgIGNzc3l5cGFy
c2UodGhpcyk7CiAgICAgbV9ydWxlID0gMDsKIAotICAgIHJldHVybiAobV9udW1QYXJzZWRQcm9w
ZXJ0aWVzICYmIG1fcGFyc2VkUHJvcGVydGllc1swXS0+bV9pZCA9PSBDU1NQcm9wZXJ0eUNvbG9y
KTsKKyAgICByZXR1cm4gKG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpICYmIG1fcGFyc2VkUHJv
cGVydGllcy5maXJzdCgpLmlkKCkgPT0gQ1NTUHJvcGVydHlDb2xvcik7CiB9CiAKIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVN5c3RlbUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC01MzIsMTEgKzUyNSwxMSBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VEZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVjbGFy
YXRpb24sIGNvbnN0CiAgICAgbV9ydWxlID0gMDsKIAogICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAg
ICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpCi0gICAgICAgIGRlbGV0ZUZvbnRGYWNlT25s
eVZhbHVlcygpOwotICAgIGlmIChtX251bVBhcnNlZFByb3BlcnRpZXMpIHsKKyAgICBpZiAobV9w
YXJzZWRQcm9wZXJ0aWVzLmhhc0ZvbnRGYWNlT25seSgpKQorICAgICAgICBtX3BhcnNlZFByb3Bl
cnRpZXMuZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygpOworICAgIGlmIChtX3BhcnNlZFBy
b3BlcnRpZXMuY291bnQoKSkgewogICAgICAgICBvayA9IHRydWU7Ci0gICAgICAgIGRlY2xhcmF0
aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQ
cm9wZXJ0aWVzKTsKKyAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9w
YXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkpOwogICAg
ICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICB9CiAKQEAgLTU3OCwzNiArNTcxLDIwIEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZU1lZGlhUXVlcnkoTWVkaWFMaXN0KiBxdWVyaWVzLCBjb25zdCBT
dHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gb2s7CiB9CiAKLQogdm9pZCBDU1NQYXJzZXI6OmFk
ZFByb3BlcnR5KGludCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGlt
cG9ydGFudCkKIHsKLSAgICBPd25QdHI8Q1NTUHJvcGVydHk+IHByb3AoYWRvcHRQdHIobmV3IENT
U1Byb3BlcnR5KHByb3BJZCwgdmFsdWUsIGltcG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5kLCBt
X2ltcGxpY2l0U2hvcnRoYW5kKSkpOwotICAgIGlmIChtX251bVBhcnNlZFByb3BlcnRpZXMgPj0g
bV9tYXhQYXJzZWRQcm9wZXJ0aWVzKSB7Ci0gICAgICAgIG1fbWF4UGFyc2VkUHJvcGVydGllcyAr
PSAzMjsKLSAgICAgICAgaWYgKG1fbWF4UGFyc2VkUHJvcGVydGllcyA+IFVJTlRfTUFYIC8gc2l6
ZW9mKENTU1Byb3BlcnR5KikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fcGFyc2Vk
UHJvcGVydGllcyA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5Kio+KGZhc3RSZWFsbG9jKG1fcGFy
c2VkUHJvcGVydGllcywKLSAgICAgICAgICAgIG1fbWF4UGFyc2VkUHJvcGVydGllcyAqIHNpemVv
ZihDU1NQcm9wZXJ0eSopKSk7Ci0gICAgfQotICAgIG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBh
cnNlZFByb3BlcnRpZXMrK10gPSBwcm9wLmxlYWtQdHIoKTsKKyAgICBtX3BhcnNlZFByb3BlcnRp
ZXMuYWRkUHJvcGVydHkocHJvcElkLCB2YWx1ZSwgaW1wb3J0YW50LCBtX2N1cnJlbnRTaG9ydGhh
bmQsIG1faW1wbGljaXRTaG9ydGhhbmQpOwogfQogCiB2b2lkIENTU1BhcnNlcjo6cm9sbGJhY2tM
YXN0UHJvcGVydGllcyhpbnQgbnVtKQogewotICAgIEFTU0VSVChudW0gPj0gMCk7Ci0gICAgQVNT
RVJUKG1fbnVtUGFyc2VkUHJvcGVydGllcyA+PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtKSk7
Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bTsgKytpKQotICAgICAgICBkZWxldGUgbV9w
YXJzZWRQcm9wZXJ0aWVzWy0tbV9udW1QYXJzZWRQcm9wZXJ0aWVzXTsKKyAgICBtX3BhcnNlZFBy
b3BlcnRpZXMucm9sbGJhY2tMYXN0UHJvcGVydGllcyhudW0pOwogfQogCiB2b2lkIENTU1BhcnNl
cjo6Y2xlYXJQcm9wZXJ0aWVzKCkKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9u
dW1QYXJzZWRQcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGRlbGV0ZSBtX3BhcnNlZFByb3BlcnRp
ZXNbaV07Ci0gICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzID0gMDsKKyAgICBtX3BhcnNlZFByb3Bl
cnRpZXMuY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3Jl
TWFyZ2luQm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVM7Ci0gICAgbV9oYXNGb250
RmFjZU9ubHlWYWx1ZXMgPSBmYWxzZTsKIH0KICAgICAKIHZvaWQgQ1NTUGFyc2VyOjpzZXRTdHls
ZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCkBAIC04ODgsNyArODY1LDcgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAg
ICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIHByb3BJZCk7CiAgICAgICAgIGlmIChudW0g
IT0gMSB8fCAhcGFyc2VWYWx1ZShDU1NQcm9wZXJ0eU92ZXJmbG93WCwgaW1wb3J0YW50KSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJz
ZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcyAtIDFdLT52YWx1ZSgpOworICAgICAg
ICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAg
ICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5T3ZlcmZsb3dZLCB2YWx1ZSwgaW1wb3J0YW50
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtOTgxLDcgKzk1OCw3IEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAg
ICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5n
KTsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2
YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVl
KCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFz
dCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1
ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0x
NjM0LDcgKzE2MTEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpOwogICAgICAgICAgICAgaWYgKCFwYXJzZVZh
bHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21f
bnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2
YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgICAgIGFk
ZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTI0MDgsNyArMjM4NSw3IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0aWVzLCAgYm9v
bCBpbXBvcnRhbnQpCiAgICAgICAgIGNhc2UgMTogewogICAgICAgICAgICAgaWYgKCFwYXJzZVZh
bHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21f
bnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2
YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgICAgIG1f
aW1wbGljaXRTaG9ydGhhbmQgPSB0cnVlOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVy
dGllc1sxXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9w
ZXJ0aWVzWzJdLCB2YWx1ZSwgaW1wb3J0YW50KTsKQEAgLTI0MTksMTAgKzIzOTYsMTAgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyhpbnQgcHJvcElkLCBjb25zdCBpbnQgKnByb3BlcnRp
ZXMsICBib29sIGltcG9ydGFudCkKICAgICAgICAgY2FzZSAyOiB7CiAgICAgICAgICAgICBpZiAo
IXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9w
ZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNl
ZFByb3BlcnRpZXMtMl0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBt
X3BhcnNlZFByb3BlcnRpZXMubGFzdEJ1dE9uZSgpLnZhbHVlKCk7CiAgICAgICAgICAgICBtX2lt
cGxpY2l0U2hvcnRoYW5kID0gdHJ1ZTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRp
ZXNbMl0sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgdmFsdWUgPSBtX3BhcnNlZFBy
b3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAgICAg
dmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdEJ1dE9uZSgpLnZhbHVlKCk7CiAgICAgICAg
ICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzNdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAg
ICAgICAgIG1faW1wbGljaXRTaG9ydGhhbmQgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMjQzMCw3ICsyNDA3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyhpbnQgcHJv
cElkLCBjb25zdCBpbnQgKnByb3BlcnRpZXMsICBib29sIGltcG9ydGFudCkKICAgICAgICAgY2Fz
ZSAzOiB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0
YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZh
bHVlKHByb3BlcnRpZXNbMl0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21f
bnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2
YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0QnV0T25lKCkudmFsdWUoKTsKICAgICAgICAg
ICAgIG1faW1wbGljaXRTaG9ydGhhbmQgPSB0cnVlOwogICAgICAgICAgICAgYWRkUHJvcGVydHko
cHJvcGVydGllc1szXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICBtX2ltcGxpY2l0
U2hvcnRoYW5kID0gZmFsc2U7CkBAIC0zNzk5LDcgKzM3NzYsNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VGb250U3R5bGUoYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogCiAgICAgaWYgKHZhbHVlcyAm
JiB2YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAgIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzID0g
dHJ1ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnNldEZvbnRGYWNlT25seSgpOwogICAg
ICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgdmFsdWVzLnJlbGVhc2UoKSwg
aW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzg0Niw3ICszODIz
LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFZhcmlhbnQoYm9vbCBpbXBvcnRhbnQpCiAg
ICAgfQogCiAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAgIG1f
aGFzRm9udEZhY2VPbmx5VmFsdWVzID0gdHJ1ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVz
LnNldEZvbnRGYWNlT25seSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRW
YXJpYW50LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkBAIC0zODk5LDcgKzM4NzYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGb250
V2VpZ2h0KGJvb2wgaW1wb3J0YW50KQogICAgIH0KIAogICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVz
LT5sZW5ndGgoKSkgewotICAgICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IHRydWU7Cisg
ICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5zZXRGb250RmFjZU9ubHkoKTsKICAgICAgICAgYWRk
UHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBvcnRh
bnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC02MzA2LDkgKzYyODMsOSBAQCBD
U1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNl
clNlbGVjdG9yPiA+KiBzZWxlY3RvcgogICAgICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2Fs
bG93TmFtZXNwYWNlRGVjbGFyYXRpb25zID0gZmFsc2U7CiAgICAgICAgIFJlZlB0cjxDU1NTdHls
ZVJ1bGU+IHJ1bGUgPSBDU1NTdHlsZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQsIG1fbGFzdFNl
bGVjdG9yTGluZU51bWJlcik7CiAgICAgICAgIHJ1bGUtPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNl
bGVjdG9ycyk7Ci0gICAgICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAgICAg
ICAgIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotICAgICAgICBydWxlLT5zZXREZWNsYXJh
dGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFy
c2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIGlmIChtX3Bh
cnNlZFByb3BlcnRpZXMuaGFzRm9udEZhY2VPbmx5KCkpCisgICAgICAgICAgICBtX3BhcnNlZFBy
b3BlcnRpZXMuZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygpOworICAgICAgICBydWxlLT5z
ZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0
KCksIG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgp
KSk7CiAgICAgICAgIHJlc3VsdCA9IHJ1bGUuZ2V0KCk7CiAgICAgICAgIG1fcGFyc2VkU3R5bGVP
YmplY3RzLmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CiAgICAgICAgIGlmIChtX3J1bGVSYW5nZU1h
cCkgewpAQCAtNjMzMCw4ICs2MzA3LDExIEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlU3R5
bGVSdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9yCiBDU1NS
dWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSgpCiB7CiAgICAgbV9hbGxvd0ltcG9y
dFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNlOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBhcnNlZFByb3BlcnRpZXM7ICsraSkgewotICAgICAg
ICBDU1NQcm9wZXJ0eSogcHJvcGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07CisKKyAgICBD
U1NQcm9wZXJ0eSogY29uc3QqIHBhcnNlZFByb3BlcnRpZXMgPSBtX3BhcnNlZFByb3BlcnRpZXMu
ZGF0YSgpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGFyc2VkUHJvcGVydGll
cy5jb3VudCgpOyArK2kpIHsKKyAgICAgICAgQ1NTUHJvcGVydHkqIHByb3BlcnR5ID0gcGFyc2Vk
UHJvcGVydGllc1tpXTsKICAgICAgICAgaW50IGlkID0gcHJvcGVydHktPmlkKCk7CiAgICAgICAg
IGlmICgoaWQgPT0gQ1NTUHJvcGVydHlGb250V2VpZ2h0IHx8IGlkID09IENTU1Byb3BlcnR5Rm9u
dFN0eWxlIHx8IGlkID09IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQpICYmIHByb3BlcnR5LT52YWx1
ZSgpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dmFsdWUgPSBwcm9wZXJ0eS0+bV92YWx1ZS5yZWxlYXNlKCk7CkBAIC02MzQ2LDggKzYzMjYsOSBA
QCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSgpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KKwogICAgIFJlZlB0cjxDU1NGb250RmFjZVJ1bGU+
IHJ1bGUgPSBDU1NGb250RmFjZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQpOwotICAgIHJ1bGUt
PnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVsZS5n
ZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpKTsKKyAgICBy
dWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1
bGUuZ2V0KCksIHBhcnNlZFByb3BlcnRpZXMsIG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpKSk7
CiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgQ1NTRm9udEZhY2VSdWxlKiByZXN1bHQgPSBy
dWxlLmdldCgpOwogICAgIG1fcGFyc2VkU3R5bGVPYmplY3RzLmFwcGVuZChydWxlLnJlbGVhc2Uo
KSk7CkBAIC02NDIxLDcgKzY0MDIsNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VS
dWxlKFBhc3NPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHBhZ2VTZWxlY3RvcikKICAgICAgICAg
VmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBzZWxlY3RvclZlY3RvcjsKICAgICAg
ICAgc2VsZWN0b3JWZWN0b3IuYXBwZW5kKHBhZ2VTZWxlY3Rvcik7CiAgICAgICAgIHJ1bGUtPmFk
b3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOwotICAgICAgICBydWxlLT5zZXREZWNs
YXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1f
cGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIHJ1bGUt
PnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVsZS5n
ZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50
KCkpKTsKICAgICAgICAgcGFnZVJ1bGUgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFN0
eWxlT2JqZWN0cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwogICAgIH0KQEAgLTY0NDIsMzQgKzY0
MjMsMTYgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVNYXJnaW5BdFJ1bGUoQ1NTU2VsZWN0
b3I6Ok1hcmdpbkJveFR5cGUgLyogbWFyZ2luQm94ICoKIAogdm9pZCBDU1NQYXJzZXI6OnN0YXJ0
RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCkKIHsKLSAgICBtX251bVBhcnNlZFByb3BlcnRpZXNC
ZWZvcmVNYXJnaW5Cb3ggPSBtX251bVBhcnNlZFByb3BlcnRpZXM7CisgICAgbV9udW1QYXJzZWRQ
cm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCk7CiB9
CiAKIHZvaWQgQ1NTUGFyc2VyOjplbmREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKQogewogICAg
IEFTU0VSVChtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3ggIT0gSU5WQUxJRF9O
VU1fUEFSU0VEX1BST1BFUlRJRVMpOwotICAgIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMobV9udW1Q
YXJzZWRQcm9wZXJ0aWVzIC0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KTsK
KyAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpIC0g
bV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KTsKICAgICBtX251bVBhcnNlZFBy
b3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3ggPSBJTlZBTElEX05VTV9QQVJTRURfUFJPUEVSVElFUzsK
IH0KIAotdm9pZCBDU1NQYXJzZXI6OmRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpCi17Ci0gICAg
QVNTRVJUKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKTsKLSAgICBpbnQgZGVsZXRlZFByb3BlcnRp
ZXMgPSAwOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbnVtUGFyc2VkUHJvcGVy
dGllczsgKytpKSB7Ci0gICAgICAgIENTU1Byb3BlcnR5KiBwcm9wZXJ0eSA9IG1fcGFyc2VkUHJv
cGVydGllc1tpXTsKLSAgICAgICAgaW50IGlkID0gcHJvcGVydHktPmlkKCk7Ci0gICAgICAgIGlm
ICgoaWQgPT0gQ1NTUHJvcGVydHlGb250V2VpZ2h0IHx8IGlkID09IENTU1Byb3BlcnR5Rm9udFN0
eWxlIHx8IGlkID09IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQpICYmIHByb3BlcnR5LT52YWx1ZSgp
LT5pc1ZhbHVlTGlzdCgpKSB7Ci0gICAgICAgICAgICBkZWxldGUgcHJvcGVydHk7Ci0gICAgICAg
ICAgICBkZWxldGVkUHJvcGVydGllcysrOwotICAgICAgICB9IGVsc2UgaWYgKGRlbGV0ZWRQcm9w
ZXJ0aWVzKQotICAgICAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzW2kgLSBkZWxldGVkUHJvcGVy
dGllc10gPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07Ci0gICAgfQotCi0gICAgbV9udW1QYXJzZWRQ
cm9wZXJ0aWVzIC09IGRlbGV0ZWRQcm9wZXJ0aWVzOwotfQotCiBXZWJLaXRDU1NLZXlmcmFtZVJ1
bGUqIENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKENTU1BhcnNlclZhbHVlTGlzdCoga2V5
cykKIHsKICAgICAvLyBDcmVhdGUgYSBrZXkgc3RyaW5nIGZyb20gdGhlIHBhc3NlZCBrZXlzCkBA
IC02NDg0LDcgKzY0NDcsNyBAQCBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqIENTU1BhcnNlcjo6Y3Jl
YXRlS2V5ZnJhbWVSdWxlKENTU1BhcnNlclZhbHVlTGlzdCoga2V5cykKIAogICAgIFJlZlB0cjxX
ZWJLaXRDU1NLZXlmcmFtZVJ1bGU+IGtleWZyYW1lID0gV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlOjpj
cmVhdGUobV9zdHlsZVNoZWV0KTsKICAgICBrZXlmcmFtZS0+c2V0S2V5VGV4dChrZXlTdHJpbmcp
OwotICAgIGtleWZyYW1lLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bjo6Y3JlYXRlKDAsIG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7
CisgICAga2V5ZnJhbWUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjpjcmVhdGUoMCwgbV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVz
LmNvdW50KCkpKTsKIAogICAgIGNsZWFyUHJvcGVydGllcygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmgKaW5kZXggYTEyYTA5NC4uZmJlNjk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtMjUs
NiArMjUsNyBAQAogCiAjaW5jbHVkZSAiQ1NTR3JhZGllbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkNT
U1BhcnNlclZhbHVlcy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5Q29udGFpbmVyLmgiCiAjaW5j
bHVkZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIK
ICNpbmNsdWRlICJDb2xvci5oIgpAQCAtNzQsNyArNzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgdm9pZCBhZGRQcm9wZXJ0eShpbnQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiwgYm9vbCBpbXBvcnRhbnQpOwogICAgICAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3BlcnRp
ZXMoaW50IG51bSk7Ci0gICAgICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJu
IG1fbnVtUGFyc2VkUHJvcGVydGllcyA+IDA7IH0KKyAgICAgICAgYm9vbCBoYXNQcm9wZXJ0aWVz
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkgPiAwOyB9CiAKICAg
ICAgICAgYm9vbCBwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKICAgICAg
ICAgYm9vbCBwYXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMs
IGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7CkBAIC0yMzYsMTggKzIzNywxNSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxDU1NSdWxlPiBtX2tleWZyYW1l
OwogICAgICAgICBPd25QdHI8TWVkaWFRdWVyeT4gbV9tZWRpYVF1ZXJ5OwogICAgICAgICBDU1NQ
YXJzZXJWYWx1ZUxpc3QqIG1fdmFsdWVMaXN0OwotICAgICAgICBDU1NQcm9wZXJ0eSoqIG1fcGFy
c2VkUHJvcGVydGllczsKKyAgICAgICAgQ1NTUHJvcGVydHlDb250YWluZXIgbV9wYXJzZWRQcm9w
ZXJ0aWVzOwogICAgICAgICBDU1NTZWxlY3Rvckxpc3QqIG1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VT
ZWxlY3RvcjsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGU+IG1fcHJpbWl0
aXZlVmFsdWVDYWNoZTsKLSAgICAgICAgdW5zaWduZWQgbV9udW1QYXJzZWRQcm9wZXJ0aWVzOwot
ICAgICAgICB1bnNpZ25lZCBtX21heFBhcnNlZFByb3BlcnRpZXM7CiAgICAgICAgIHVuc2lnbmVk
IG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveDsKIAogICAgICAgICBpbnQgbV9p
blBhcnNlU2hvcnRoYW5kOwogICAgICAgICBpbnQgbV9jdXJyZW50U2hvcnRoYW5kOwogICAgICAg
ICBib29sIG1faW1wbGljaXRTaG9ydGhhbmQ7CiAKLSAgICAgICAgYm9vbCBtX2hhc0ZvbnRGYWNl
T25seVZhbHVlczsKICAgICAgICAgYm9vbCBtX2hhZFN5bnRhY3RpY2FsbHlWYWxpZENTU1J1bGU7
CiAKICAgICAgICAgQXRvbWljU3RyaW5nIG1fZGVmYXVsdE5hbWVzcGFjZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjQ0YTBiNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCkBAIC0wLDAgKzEsMjYxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8
ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IC0gMjAxMCAgVG9yY2ggTW9i
aWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdlYmtpdC5vcmc+LCBVbml2ZXJzaXR5IG9m
IFN6ZWdlZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250YWlu
ZXIuaCIKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKwordXNpbmcgbmFtZXNwYWNl
IFdURjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Q1NT
UHJvcGVydHlDb250YWluZXIoc2l6ZV90IGluaXRpYWxDYXBhY2l0eSkKKyAgICA6IG1fcHJvcGVy
dGllcyhzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eSoqPihmYXN0TWFsbG9jKGluaXRpYWxDYXBhY2l0
eSAqIHNpemVvZihDU1NQcm9wZXJ0eSopKSkpCisgICAgLCBtX251bVZhbGlkUHJvcGVydGllcygw
KQorICAgICwgbV9zaXplKDApCisgICAgLCBtX2NhcGFjaXR5KGluaXRpYWxDYXBhY2l0eSkKKyAg
ICAsIG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyhmYWxzZSkKK3sKK30KKworQ1NTUHJvcGVy
dHlDb250YWluZXI6On5DU1NQcm9wZXJ0eUNvbnRhaW5lcigpCit7CisgICAgY2xlYXJQcm9wZXJ0
aWVzKCk7CisgICAgc3dlZXAoKTsKKyAgICBmYXN0RnJlZShtX3Byb3BlcnRpZXMpOworfQorCit2
b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpncm93KCkKK3sKKyAgICBpZiAobV9zaXplICsgMSA8
IG1fY2FwYWNpdHkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NhcGFjaXR5ICsgMTYg
PiBVSU5UX01BWCAvIHNpemVvZihDU1NQcm9wZXJ0eSopKQorICAgICAgICBDUkFTSCgpOworCisg
ICAgbV9jYXBhY2l0eSArPSAxNjsKKworICAgIG1fcHJvcGVydGllcyA9IHN0YXRpY19jYXN0PENT
U1Byb3BlcnR5Kio+KGZhc3RSZWFsbG9jKG1fcHJvcGVydGllcywgbV9jYXBhY2l0eSAqIHNpemVv
ZihDU1NQcm9wZXJ0eSopKSk7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OnN3ZWVw
KCkKK3sKKyAgICBpZiAobV9udW1WYWxpZFByb3BlcnRpZXMgPT0gbV9zaXplKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB1bnNpZ25lZCBkZWxldGVkUHJvcGVydGllcyA9IDA7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKSB7CisgICAgICAgIENTU1Byb3BlcnR5KiBw
cm9wZXJ0eSA9IG1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgaWYgKCFwcm9wZXJ0eS0+aWQoKSkg
eworICAgICAgICAgICAgZGVsZXRlIHByb3BlcnR5OworICAgICAgICAgICAgKytkZWxldGVkUHJv
cGVydGllczsKKyAgICAgICAgfSBlbHNlIGlmIChkZWxldGVkUHJvcGVydGllcykKKyAgICAgICAg
ICAgIG1fcHJvcGVydGllc1tpIC0gZGVsZXRlZFByb3BlcnRpZXNdID0gcHJvcGVydHk7CisgICAg
fQorCisgICAgbV9zaXplIC09IGRlbGV0ZWRQcm9wZXJ0aWVzOworCisgICAgQVNTRVJUKG1fbnVt
VmFsaWRQcm9wZXJ0aWVzID09IG1fc2l6ZSk7Cit9CisKK2lubGluZSB2b2lkIENTU1Byb3BlcnR5
Q29udGFpbmVyOjppbnZhbGlkYXRlQnlQb3NpdGlvbih1bnNpZ25lZCBwb3NpdGlvbikKK3sKKyAg
ICBBU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOworCisgICAgaWYgKFVOTElLRUxZKCFtX3Byb3Bl
cnRpZXNbcG9zaXRpb25dLT5pZCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9udW1WYWxp
ZFByb3BlcnRpZXMtLTsKKyAgICBtX2lkVG9Qb3NpdGlvbk1hcC5yZW1vdmUobV9wcm9wZXJ0aWVz
W3Bvc2l0aW9uXS0+bV9pZCk7CisgICAgbV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS0+bV9pZCA9IDA7
Cit9CisKK2lubGluZSB2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjppbnZhbGlkYXRlQnlJZChp
bnQgcHJvcGVydHlJRCkKK3sKKyAgICBpZiAoIW1faWRUb1Bvc2l0aW9uTWFwLmNvbnRhaW5zKHBy
b3BlcnR5SUQpKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IG1f
aWRUb1Bvc2l0aW9uTWFwLmdldChwcm9wZXJ0eUlEKTsKKyAgICBpbnZhbGlkYXRlQnlQb3NpdGlv
bihwb3NpdGlvbik7Cit9CisKK0NTU1Byb3BlcnR5KiBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Zmlu
ZFByb3BlcnR5V2l0aElkKGludCBwcm9wZXJ0eUlEKQoreworICAgIGlmICghbV9zaXplKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gbV9pZFRvUG9zaXRpb25N
YXAuZ2V0KHByb3BlcnR5SUQpOworCisgICAgQVNTRVJUKHBvc2l0aW9uIDwgbV9zaXplKTsKKwor
ICAgIGlmIChVTkxJS0VMWSghbV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS0+aWQoKSkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgcmV0dXJuIG1fcHJvcGVydGllc1twb3NpdGlvbl07Cit9CisKK2Nv
bnN0IENTU1Byb3BlcnR5JiBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Zmlyc3QoKQoreworICAgIEFT
U0VSVChtX251bVZhbGlkUHJvcGVydGllcyk7CisKKyAgICBpZiAoVU5MSUtFTFkoIW1fcHJvcGVy
dGllc1swXS0+aWQoKSkpCisgICAgICAgIHN3ZWVwKCk7CisKKyAgICBBU1NFUlQobV9wcm9wZXJ0
aWVzWzBdKTsKKworICAgIHJldHVybiAqbV9wcm9wZXJ0aWVzWzBdOworfQorCitjb25zdCBDU1NQ
cm9wZXJ0eSYgQ1NTUHJvcGVydHlDb250YWluZXI6Omxhc3QoKQoreworICAgIEFTU0VSVChtX251
bVZhbGlkUHJvcGVydGllcyk7CisKKyAgICBpZiAoVU5MSUtFTFkoIW1fcHJvcGVydGllc1ttX3Np
emUgLSAxXS0+aWQoKSkpCisgICAgICAgIHN3ZWVwKCk7CisKKyAgICBBU1NFUlQobV9wcm9wZXJ0
aWVzW21fc2l6ZSAtIDFdKTsKKworICAgIHJldHVybiAqbV9wcm9wZXJ0aWVzW21fc2l6ZSAtIDFd
OworfQorCitjb25zdCBDU1NQcm9wZXJ0eSYgQ1NTUHJvcGVydHlDb250YWluZXI6Omxhc3RCdXRP
bmUoKQoreworICAgIEFTU0VSVChtX251bVZhbGlkUHJvcGVydGllcyA+PSAyKTsKKworICAgIGlm
IChVTkxJS0VMWSghbV9wcm9wZXJ0aWVzW21fc2l6ZSAtIDFdLT5pZCgpIHx8ICFtX3Byb3BlcnRp
ZXNbbV9zaXplIC0gMl0tPmlkKCkpKQorICAgICAgICBzd2VlcCgpOworCisgICAgQVNTRVJUKG1f
cHJvcGVydGllc1ttX3NpemUgLSAyXSk7CisKKyAgICByZXR1cm4gKm1fcHJvcGVydGllc1ttX3Np
emUgLSAyXTsKK30KKworQ1NTUHJvcGVydHkqIGNvbnN0KiBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6
ZGF0YSgpCit7CisgICAgc3dlZXAoKTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzOworfQorCiti
b29sIENTU1Byb3BlcnR5Q29udGFpbmVyOjpjb250YWluc1Byb3BlcnR5KGludCBwcm9wZXJ0eUlE
KSBjb25zdAoreworICAgIGlmICghbV9pZFRvUG9zaXRpb25NYXAuY29udGFpbnMocHJvcGVydHlJ
RCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gbV9p
ZFRvUG9zaXRpb25NYXAuZ2V0KHByb3BlcnR5SUQpOworCisgICAgQVNTRVJUKHBvc2l0aW9uIDwg
bV9zaXplKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX3Byb3BlcnRpZXNbcG9z
aXRpb25dLT5pZCgpKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3ZlUHJv
cGVydHkoaW50IHByb3BlcnR5SUQpCit7CisgICAgaW52YWxpZGF0ZUJ5SWQocHJvcGVydHlJRCk7
Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OnJlbW92ZVByb3BlcnRpZXMoY29uc3Qg
aW50KiBpZExpc3QsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgIGludmFsaWRhdGVCeUlkKGlkTGlzdFtpXSk7Cit9
CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OmFkZFByb3BlcnR5KGludCBwcm9wZXJ0eUlE
LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGludCBzaG9ydGhh
bmRJRCwgYm9vbCBpbXBsaWNpdCkKK3sKKyAgICBPd25QdHI8Q1NTUHJvcGVydHk+IHByb3BlcnR5
KGFkb3B0UHRyKG5ldyBDU1NQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50LCBz
aG9ydGhhbmRJRCwgaW1wbGljaXQpKSk7CisKKyAgICBpZiAobV9zaXplICsgMSA+PSBtX2NhcGFj
aXR5KSB7CisgICAgICAgIHN3ZWVwKCk7CisgICAgICAgIGdyb3coKTsKKyAgICB9CisKKyAgICBp
ZiAoIW1faWRUb1Bvc2l0aW9uTWFwLmNvbnRhaW5zKHByb3BlcnR5SUQpKSB7CisgICAgICAgIG1f
cHJvcGVydGllc1ttX3NpemUrK10gPSBwcm9wZXJ0eS5sZWFrUHRyKCk7CisgICAgICAgIG1faWRU
b1Bvc2l0aW9uTWFwLmFkZChwcm9wZXJ0eUlELCBtX3NpemUgLSAxKTsKKyAgICAgICAgKyttX251
bVZhbGlkUHJvcGVydGllczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVuc2lnbmVk
IG9sZFBvc2l0aW9uID0gbV9pZFRvUG9zaXRpb25NYXAuZ2V0KHByb3BlcnR5SUQpOworCisgICAg
aWYgKG1fcHJvcGVydGllc1tvbGRQb3NpdGlvbl0tPmlkKCkgJiYgbV9wcm9wZXJ0aWVzW29sZFBv
c2l0aW9uXS0+aXNJbXBvcnRhbnQoKSAmJiAhaW1wb3J0YW50KQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3Byb3BlcnRpZXNbbV9zaXplKytdID0gcHJvcGVydHkubGVha1B0cigpOworICAgIG1f
aWRUb1Bvc2l0aW9uTWFwLnNldChwcm9wZXJ0eUlELCBtX3NpemUgLSAxKTsKKworICAgIGlmICht
X3Byb3BlcnRpZXNbb2xkUG9zaXRpb25dLT5pZCgpKQorICAgICAgICBtX3Byb3BlcnRpZXNbb2xk
UG9zaXRpb25dLT5tX2lkID0gMDsKKyAgICBlbHNlCisgICAgICAgICsrbV9udW1WYWxpZFByb3Bl
cnRpZXM7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OnJvbGxiYWNrTGFzdFByb3Bl
cnRpZXMoaW50IG51bSkKK3sKKyAgICBpZiAoIW51bSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
QVNTRVJUKG51bSA+IDApOworICAgIEFTU0VSVChtX251bVZhbGlkUHJvcGVydGllcyA+PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obnVtKSk7CisKKyAgICBpbnQgZGVsZXRlZFByb3BlcnRpZXMgPSAw
OworICAgIGludCBwb3NpdGlvbiA9IG1fc2l6ZTsKKyAgICB3aGlsZSAoZGVsZXRlZFByb3BlcnRp
ZXMgIT0gbnVtICYmIC0tcG9zaXRpb24gPj0gMCkgeworICAgICAgICBpZiAobV9wcm9wZXJ0aWVz
W3Bvc2l0aW9uXS0+aWQoKSkgeworICAgICAgICAgICAgaW52YWxpZGF0ZUJ5UG9zaXRpb24ocG9z
aXRpb24pOworICAgICAgICAgICAgKytkZWxldGVkUHJvcGVydGllczsKKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6ZGVsZXRlRm9udEZhY2VPbmx5UHJv
cGVydGllcygpCit7CisgICAgQVNTRVJUKG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyk7CisK
KyAgICBpbnQgaWRzWzNdID0ge0NTU1Byb3BlcnR5Rm9udFdlaWdodCwgQ1NTUHJvcGVydHlGb250
U3R5bGUsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnR9OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCAzOyArK2kpIHsKKyAgICAgICAgaWYgKCFtX2lkVG9Qb3NpdGlvbk1hcC5jb250YWlucyhpZHNb
aV0pKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdW5zaWduZWQgcG9zaXRpb24g
PSBtX2lkVG9Qb3NpdGlvbk1hcC5nZXQoaWRzW2ldKTsKKworICAgICAgICBBU1NFUlQocG9zaXRp
b24gPCBtX3NpemUpOworCisgICAgICAgIGlmIChVTkxJS0VMWSghbV9wcm9wZXJ0aWVzW3Bvc2l0
aW9uXS0+aWQoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAobV9wcm9w
ZXJ0aWVzW3Bvc2l0aW9uXS0+dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgICAgIGlu
dmFsaWRhdGVCeVBvc2l0aW9uKHBvc2l0aW9uKTsKKyAgICB9CisgICAgbV9oYXNGb250RmFjZU9u
bHlQcm9wZXJ0aWVzID0gZmFsc2U7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OmNs
ZWFyUHJvcGVydGllcygpCit7CisgICAgbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzID0gZmFs
c2U7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAg
IGludmFsaWRhdGVCeVBvc2l0aW9uKGkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjhiNzQ4ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaApAQCAtMCwwICsxLDczIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRl
bCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IC0gMjAxMCAgVG9yY2gg
TW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdlYmtpdC5vcmc+LCBVbml2ZXJzaXR5
IG9mIFN6ZWdlZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaWZuZGVmIENTU1Byb3BlcnR5Q29udGFpbmVyX2gKKyNkZWZpbmUgQ1NTUHJv
cGVydHlDb250YWluZXJfaAorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlICJD
U1NWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgSGFzaE1hcDxpbnQsIHVuc2ln
bmVkPiBDU1NQcm9wZXJ0eUlkUG9zaXRpb25NYXA7CisKK2NsYXNzIENTU1Byb3BlcnR5Q29udGFp
bmVyIHsKK3B1YmxpYzoKKyAgICBDU1NQcm9wZXJ0eUNvbnRhaW5lcihzaXplX3QgaW5pdGlhbENh
cGFjaXR5ID0gNjQpOworICAgIH5DU1NQcm9wZXJ0eUNvbnRhaW5lcigpOworICAgIGNvbnN0IENT
U1Byb3BlcnR5JiBmaXJzdCgpOworICAgIGNvbnN0IENTU1Byb3BlcnR5JiBsYXN0KCk7CisgICAg
Y29uc3QgQ1NTUHJvcGVydHkmIGxhc3RCdXRPbmUoKTsKKyAgICBDU1NQcm9wZXJ0eSogZmluZFBy
b3BlcnR5V2l0aElkKGludCBwcm9wZXJ0eUlEKTsKKyAgICBDU1NQcm9wZXJ0eSogY29uc3QqIGRh
dGEoKTsKKworICAgIGlubGluZSB1bnNpZ25lZCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVt
VmFsaWRQcm9wZXJ0aWVzOyB9CisgICAgaW5saW5lIGJvb2wgaGFzRm9udEZhY2VPbmx5KCkgY29u
c3QgeyByZXR1cm4gbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzOyB9CisgICAgaW5saW5lIHZv
aWQgc2V0Rm9udEZhY2VPbmx5KCkgeyBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXMgPSB0cnVl
OyB9CisKKyAgICBib29sIGNvbnRhaW5zUHJvcGVydHkoaW50IHByb3BlcnR5SUQpIGNvbnN0Owor
ICAgIHZvaWQgcmVtb3ZlUHJvcGVydHkoaW50IHByb3BlcnR5SUQpOworICAgIHZvaWQgcmVtb3Zl
UHJvcGVydGllcyhjb25zdCBpbnQqIGlkTGlzdCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2b2lk
IGFkZFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBp
bXBvcnRhbnQsIGludCBzaG9ydGhhbmRJRCA9IDAsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSk7Cisg
ICAgdm9pZCByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKGludCBudW0pOworICAgIHZvaWQgZGVsZXRl
Rm9udEZhY2VPbmx5UHJvcGVydGllcygpOworICAgIHZvaWQgY2xlYXJQcm9wZXJ0aWVzKCk7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBncm93KCk7CisgICAgdm9pZCBzd2VlcCgpOworICAgIGlubGlu
ZSB2b2lkIGludmFsaWRhdGVCeVBvc2l0aW9uKHVuc2lnbmVkIHBvc2l0aW9uKTsKKyAgICBpbmxp
bmUgdm9pZCBpbnZhbGlkYXRlQnlJZChpbnQgcHJvcGVydHlJRCk7CisKKyAgICBDU1NQcm9wZXJ0
eSoqIG1fcHJvcGVydGllczsKKyAgICBDU1NQcm9wZXJ0eUlkUG9zaXRpb25NYXAgbV9pZFRvUG9z
aXRpb25NYXA7CisgICAgdW5zaWduZWQgbV9udW1WYWxpZFByb3BlcnRpZXM7CisgICAgdW5zaWdu
ZWQgbV9zaXplOworICAgIHVuc2lnbmVkIG1fY2FwYWNpdHk7CisgICAgYm9vbCBtX2hhc0ZvbnRG
YWNlT25seVByb3BlcnRpZXMgOiAxOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gQ1NTUHJvcGVydHlDb250YWluZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2Vy
LmNwcAppbmRleCA0N2Y5ODQ1Li4zMjcwMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2Vy
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCisjaW5jbHVkZSAi
Q1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAj
aW5jbHVkZSAiQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5
d29yZHMuaCIKQEAgLTI4Miw3ICsyODMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VTVkdWYWx1
ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHJvbGxiYWNrTGFzdFBy
b3BlcnRpZXMoMSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAg
ICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVy
dGllcyAtIDFdLT52YWx1ZSgpOworICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFBy
b3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
TWFya2VyTWlkLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlNYXJrZXJFbmQsIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICBtX2ltcGxpY2l0U2hv
cnRoYW5kID0gZmFsc2U7Ci0tIAoxLjcuNS4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93936</attachid>
            <date>2011-05-18 10:50:04 -0700</date>
            <delta_ts>2011-05-19 08:49:19 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-BUG-19417-CSSParser-should-use-custom-vector-like-cl.patch</filename>
            <type>text/plain</type>
            <size>39305</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSBmMzYxOTY4ZTgzMWFkMjFiYzc5YmE0YmNhOTJhMWZlZmQyYmY4YWExIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPgpEYXRl
OiBXZWQsIDE4IE1heSAyMDExIDE5OjE3OjU5ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gW0JVRyAx
OTQxN10gLSBDU1NQYXJzZXIgc2hvdWxkIHVzZSBjdXN0b20gdmVjdG9yLWxpa2UgY2xhc3MKIGZv
ciBtYW5hZ2luZyBwcm9wZXJ0aWVzCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgNzAgKysrKysrCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8gICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiAgICAgfCAgICA4ICsKIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiB8ICAgIDggKwogU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYW1tYXIueSAgICAgICAgICAgICAgICAgIHwgICAgOCArLQogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgICAgICAgICAgICAgICAgIHwgIDExMSArKystLS0tLS0K
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCAgICAgICAgICAgICAgICAgICB8ICAgIDgg
Ky0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgICAgICB8ICAy
NjEgKysrKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
Q29udGFpbmVyLmggICAgICAgIHwgICA3MyArKysrKysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdD
U1NQYXJzZXIuY3BwICAgICAgICAgICAgICB8ICAgIDMgKy0KIDEyIGZpbGVzIGNoYW5nZWQsIDQ3
MiBpbnNlcnRpb25zKCspLCA4NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmgKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggM2Y3ODczZC4uOWIyZDhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDExLTA1
LTE4ICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDU1NQYXJzZXIgc2hvdWxkIHVzZSBjdXN0
b20gInZlY3Rvci1saWtlIiBjbGFzcyBmb3IgbWFuYWdpbmcgcHJvcGVydGllcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MTcKKworICAgICAgICBJ
bXBsZW1lbnQgQ1NTUHJvcGVydHlDb250YWluZXIgd2hpY2ggb24gcmVtb3ZhbCBtYXJrcyBlbnRy
aWVzIGFzIGVtcHR5CisgICAgICAgIGFuZCBzd2VlcHMgdGhlbSB3aGVuIHRoZSBpbnRlcm5hbCBh
cnJheSBncm93cyB0b28gYmlnLgorICAgICAgICBVc2UgYW4gaW50ZXJuYWwgSGFzaE1hcCB0byBi
ZSBhYmxlIHRvIGVmZmljaWVudGx5IGZpbmQgZW50cmllcyBieSBJRAorICAgICAgICBhbmQgYXV0
b21hdGljYWxseSBkaXNjYXJkIGR1cGxpY2F0ZSBwcm9wZXJ0aWVzLgorCisgICAgICAgIEluIGEg
Zm9sbG93LXVwIHBhdGNoIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uIGNhbiBiZSBzaW1wbGlm
aWVkIHRvIHVzZSB0aGlzIGNvbnRhaW5lcgorICAgICAgICBpbnN0ZWFkIG9mIG1haW50YWluaW5n
IGl0cyBvd24gdmVjdG9yLWJhc2VkIGluZnJhc3RydWN0dXJlIGZvciBtYW5hZ2luZyBwYXJzZWQg
cHJvcGVydGllcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLCBubyBmdW5jaW9uYWxp
dHkgY2hhbmdlLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NT
U1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6On5DU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpjbGVhclByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZUZvbnRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udFZh
cmlhbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRXZWlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnN0YXJ0RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6ZW5kRGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2Vy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Omhhc1Byb3BlcnRpZXMpOgorICAgICAg
ICAqIGNzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OkNTU1Byb3BlcnR5Q29udGFpbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjp+Q1NTUHJvcGVydHlDb250YWluZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6Omdyb3cpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnN3ZWVwKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5Q29udGFpbmVyOjppbnZhbGlkYXRlQnlQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW52YWxpZGF0ZUJ5SWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmZpbmRQcm9wZXJ0eVdpdGhJZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Zmlyc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6Omxhc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHlDb250YWluZXI6Omxhc3RCdXRPbmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlDb250YWluZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250
YWluZXI6OmNvbnRhaW5zUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlD
b250YWluZXI6OnJlbW92ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5
Q29udGFpbmVyOjpyZW1vdmVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5Q29udGFpbmVyOjphZGRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eUNvbnRhaW5lcjo6cm9sbGJhY2tMYXN0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eUNvbnRhaW5lcjo6ZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y2xlYXJQcm9wZXJ0aWVzKToKKyAg
ICAgICAgKiBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHlDb250YWluZXI6Omhhc0ZvbnRGYWNlT25seSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eUNvbnRhaW5lcjo6c2V0Rm9udEZhY2VPbmx5KToKKyAgICAgICAgKiBjc3MvU1ZH
Q1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTVkdWYWx1
ZSk6CisKIDIwMTEtMDUtMTggIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggNDYyYjhjNi4uMzgzMzE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC05NTEsNiArOTUxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHkuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaCBcCisJ
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
TG9uZ2hhbmQuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDNkZjYzM2IuLmQwMDM5MGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTQ5MSw2ICs0OTEsNyBAQAogICAgICAgICAgICAgJ2Nzcy9DU1NQYXJzZXJWYWx1ZXMu
aCcsCiAgICAgICAgICAgICAnY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgnLAogICAgICAgICAgICAg
J2Nzcy9DU1NQcm9wZXJ0eS5oJywKKyAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlDb250YWlu
ZXIuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oJywKICAgICAg
ICAgICAgICdjc3MvQ1NTUmVmbGVjdFZhbHVlLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NSZWZs
ZWN0aW9uRGlyZWN0aW9uLmgnLApAQCAtMjMxMCw2ICsyMzExLDcgQEAKICAgICAgICAgICAgICdj
c3MvQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJpbWl0
aXZlVmFsdWVNYXBwaW5ncy5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHkuY3BwJywK
KyAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwJywKICAgICAgICAgICAg
ICdjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQcm9w
ZXJ0eUxvbmdoYW5kLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEu
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMzc5ZWJkMS4uZWY3YzdiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8K
QEAgLTQwNiw2ICs0MDYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwIFwKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZS5jcHAgXAogICAgIGNzcy9D
U1NQcm9wZXJ0eS5jcHAgXAorICAgIGNzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgXAogICAg
IGNzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5U291cmNl
RGF0YS5jcHAgXAogICAgIGNzcy9DU1NSZWZsZWN0VmFsdWUuY3BwIFwKQEAgLTEzODgsNiArMTM4
OSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIFwKICAgICBj
c3MvQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZS5oIFwKICAgICBjc3MvQ1NTUHJvcGVydHkuaCBcCisg
ICAgY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmggXAogICAgIGNzcy9DU1NQcm9wZXJ0eUxvbmdo
YW5kLmggXAogICAgIGNzcy9DU1NSZWZsZWN0VmFsdWUuaCBcCiAgICAgY3NzL0NTU1J1bGUuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDlm
OTlmOGIuLjI2M2JlMWEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC0zMTkwNiw2ICszMTkwNiwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTUHJvcGVydHlDb250YWluZXIuY3Bw
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3Nc
Q1NTUHJvcGVydHlDb250YWluZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIgogCQkJCT4KIAkJ
CTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAwYzVmOTA2Li44MDA4ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MTAsNiArNDEwLDggQEAKIAkJ
MUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFBRTc4MEMwNTFGREUwMDEz
OUY0RiAvKiB6b29tSW5DdXJzb3IucG5nICovOyB9OwogCQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlG
NEYgLyogem9vbU91dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBQjFBRTc5MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29y
LnBuZyAqLzsgfTsKIAkJMUFCMzNEQTUxMjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjMz
REE0MTI1NTFFMzIwMDI0NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgKi87IH07CisJCTFBQjQ0QTBD
MTM2NzJDRkYwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI0NEEwQjEzNjcyQ0ZGMDAwODc3
N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuY3BwICovOyB9OworCQkxQUI0NEEwRTEzNjcyRDIw
MDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjQ0QTBEMTM2NzJEMjAwMDA4Nzc3RSAvKiBDU1NQ
cm9wZXJ0eUNvbnRhaW5lci5oICovOyB9OwogCQkxQUI3RkM2ODBBOEI5MkVDMDBEOUQzN0IgLyog
WFBhdGhFdmFsdWF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFCN0ZDNDcwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmNwcCAq
LzsgfTsKIAkJMUFCN0ZDNjkwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RkM0ODBBOEI5
MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCAqLzsgfTsKIAkJMUFCN0ZDNkIwQThCOTJF
QzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RkM0QTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhF
eHByZXNzaW9uLmNwcCAqLzsgfTsKQEAgLTY4MzQsNiArNjgzNiw4IEBACiAJCTFBQjFBRTc4MEMw
NTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gem9vbUluQ3Vyc29y
LnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCMUFFNzkwQzA1MUZERTAwMTM5
RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gem9vbU91dEN1cnNvci5wbmc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjMzREE0MTI1NTFFMzIwMDI0NDU3QSAvKiBJ
T0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPS2l0LmZyYW1ld29yazsgcGF0aCA9
IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9
ICI8YWJzb2x1dGU+IjsgfTsKKwkJMUFCNDRBMEIxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1Byb3Bl
cnR5Q29udGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENT
U1Byb3BlcnR5Q29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFC
NDRBMEQxMzY3MkQyMDAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1Byb3BlcnR5Q29udGFpbmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjdGQzQ3MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2
YWx1YXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFBhdGhF
dmFsdWF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI3RkM0ODBBOEI5
MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFhQYXRoRXZhbHVhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBQjdGQzQ5MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFhQYXRoRXZhbHVhdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE4NzY0LDYgKzE4NzY4LDggQEAKIAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNB
IC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MUFCNDRBMEQxMzY3MkQyMDAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmggKi8sCisJ
CQkJMUFCNDRBMEIxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCAq
LywKIAkJCQk5M0NBNEM5QzA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXRva2VuaXplciAqLywKIAkJ
CQlBODBFNkNEQTBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5oICovLAogCQkJCTkzMDcwNUM3
MDlFMEM5NUYwMEIxN0ZFNCAvKiBDb3VudGVyLmlkbCAqLywKQEAgLTIyODM2LDYgKzIyODQyLDcg
QEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTFBQjQ0QTBFMTM2NzJEMjAwMDA4Nzc3RSAvKiBDU1NQcm9w
ZXJ0eUNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTUxMiw2ICsyNTUxOSw3IEBACiAJ
CQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkxQUI0NEEwQzEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJv
cGVydHlDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhbW1hci55IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpp
bmRleCA0NWYyNjgzLi5jMzRkZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JhbW1hci55CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTMyMyw5
ICszMjMsOSBAQCB3ZWJraXRfdmFsdWU6CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19j
YXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgIGlmICgkNCkgewogICAgICAgICAgICAg
cC0+bV92YWx1ZUxpc3QgPSBwLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpOwotICAgICAgICAg
ICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwLT5tX251bVBhcnNlZFByb3BlcnRpZXM7Cisg
ICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVydGll
cy5jb3VudCgpOwogICAgICAgICAgICAgaWYgKCFwLT5wYXJzZVZhbHVlKHAtPm1faWQsIHAtPm1f
aW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKHAt
Pm1fbnVtUGFyc2VkUHJvcGVydGllcyAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICAg
ICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNv
dW50KCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIGRlbGV0ZSBwLT5tX3Zh
bHVlTGlzdDsKICAgICAgICAgICAgIHAtPm1fdmFsdWVMaXN0ID0gMDsKICAgICAgICAgfQpAQCAt
MTI3MywxMCArMTI3MywxMCBAQCBkZWNsYXJhdGlvbjoKICAgICAgICAgYm9vbCBpc1Byb3BlcnR5
UGFyc2VkID0gZmFsc2U7CiAgICAgICAgIGlmICgkMSAmJiAkNCkgewogICAgICAgICAgICAgcC0+
bV92YWx1ZUxpc3QgPSBwLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpOwotICAgICAgICAgICAg
aW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwLT5tX251bVBhcnNlZFByb3BlcnRpZXM7CisgICAg
ICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVydGllcy5j
b3VudCgpOwogICAgICAgICAgICAgJCQgPSBwLT5wYXJzZVZhbHVlKCQxLCAkNSk7CiAgICAgICAg
ICAgICBpZiAoISQkKQotICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
cC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAg
ICAgICAgICAgcC0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwLT5tX3BhcnNlZFByb3BlcnRpZXMu
Y291bnQoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOwogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIGlzUHJvcGVydHlQYXJzZWQgPSB0cnVlOwogICAgICAgICAgICAgZGVsZXRlIHAt
Pm1fdmFsdWVMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCA2NmE5NThiLi45NzEx
OWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTM3LDE0ICsxMzcsMTAgQEAgQ1NT
UGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQYXJzaW5nKQogICAgICwgbV9pZCgwKQogICAg
ICwgbV9zdHlsZVNoZWV0KDApCiAgICAgLCBtX3ZhbHVlTGlzdCgwKQotICAgICwgbV9wYXJzZWRQ
cm9wZXJ0aWVzKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5Kio+KGZhc3RNYWxsb2MoMzIgKiBzaXpl
b2YoQ1NTUHJvcGVydHkqKSkpKQotICAgICwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKDApCi0gICAg
LCBtX21heFBhcnNlZFByb3BlcnRpZXMoMzIpCiAgICAgLCBtX251bVBhcnNlZFByb3BlcnRpZXNC
ZWZvcmVNYXJnaW5Cb3goSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVMpCiAgICAgLCBtX2lu
UGFyc2VTaG9ydGhhbmQoMCkKICAgICAsIG1fY3VycmVudFNob3J0aGFuZCgwKQogICAgICwgbV9p
bXBsaWNpdFNob3J0aGFuZChmYWxzZSkKLSAgICAsIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKGZh
bHNlKQogICAgICwgbV9oYWRTeW50YWN0aWNhbGx5VmFsaWRDU1NSdWxlKGZhbHNlKQogICAgICwg
bV9kZWZhdWx0TmFtZXNwYWNlKHN0YXJBdG9tKQogICAgICwgbV9pblN0eWxlUnVsZU9yRGVjbGFy
YXRpb24oZmFsc2UpCkBAIC0xNjgsOSArMTY0LDYgQEAgQ1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9v
bCBzdHJpY3RQYXJzaW5nKQogCiBDU1NQYXJzZXI6On5DU1NQYXJzZXIoKQogewotICAgIGNsZWFy
UHJvcGVydGllcygpOwotICAgIGZhc3RGcmVlKG1fcGFyc2VkUHJvcGVydGllcyk7Ci0KICAgICBk
ZWxldGUgbV92YWx1ZUxpc3Q7CiAKICAgICBmYXN0RnJlZShtX2RhdGEpOwpAQCAtNDMxLDExICs0
MjQsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24qIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHkKICAgICBtX3J1bGUgPSAwOwogCiAgICAg
Ym9vbCBvayA9IGZhbHNlOwotICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAg
ICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0gICAgaWYgKG1fbnVtUGFyc2VkUHJvcGVy
dGllcykgeworICAgIGlmIChtX3BhcnNlZFByb3BlcnRpZXMuaGFzRm9udEZhY2VPbmx5KCkpCisg
ICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5kZWxldGVGb250RmFjZU9ubHlQcm9wZXJ0aWVzKCk7
CisgICAgaWYgKG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpKSB7CiAgICAgICAgIG9rID0gdHJ1
ZTsKLSAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9w
ZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICBkZWNsYXJhdGlvbi0+YWRk
UGFyc2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3Bl
cnRpZXMuY291bnQoKSk7CiAgICAgICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIH0KIApAQCAt
NDU3LDcgKzQ1MCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3Is
IGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIHN0cmljdCkKICAgICBpZiAoIXBhcnNlci5wYXJz
ZUNvbG9yKGR1bW15U3R5bGVEZWNsYXJhdGlvbi5nZXQoKSwgc3RyaW5nKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgQ1NTVmFsdWUqIHZhbHVlID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVy
dGllc1swXS0+dmFsdWUoKTsKKyAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXIubV9wYXJzZWRQ
cm9wZXJ0aWVzLmZpcnN0KCkudmFsdWUoKTsKICAgICBpZiAodmFsdWUtPmNzc1ZhbHVlVHlwZSgp
ICE9IENTU1ZhbHVlOjpDU1NfUFJJTUlUSVZFX1ZBTFVFKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTQ3OCw3ICs0NzEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvcihDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRpb24sIGNvbnN0IFN0cmluZwogICAgIGNzc3l5
cGFyc2UodGhpcyk7CiAgICAgbV9ydWxlID0gMDsKIAotICAgIHJldHVybiAobV9udW1QYXJzZWRQ
cm9wZXJ0aWVzICYmIG1fcGFyc2VkUHJvcGVydGllc1swXS0+bV9pZCA9PSBDU1NQcm9wZXJ0eUNv
bG9yKTsKKyAgICByZXR1cm4gKG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpICYmIG1fcGFyc2Vk
UHJvcGVydGllcy5maXJzdCgpLmlkKCkgPT0gQ1NTUHJvcGVydHlDb2xvcik7CiB9CiAKIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVN5c3RlbUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC01MzIsMTEgKzUyNSwxMSBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVj
bGFyYXRpb24sIGNvbnN0CiAgICAgbV9ydWxlID0gMDsKIAogICAgIGJvb2wgb2sgPSBmYWxzZTsK
LSAgICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpCi0gICAgICAgIGRlbGV0ZUZvbnRGYWNl
T25seVZhbHVlcygpOwotICAgIGlmIChtX251bVBhcnNlZFByb3BlcnRpZXMpIHsKKyAgICBpZiAo
bV9wYXJzZWRQcm9wZXJ0aWVzLmhhc0ZvbnRGYWNlT25seSgpKQorICAgICAgICBtX3BhcnNlZFBy
b3BlcnRpZXMuZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygpOworICAgIGlmIChtX3BhcnNl
ZFByb3BlcnRpZXMuY291bnQoKSkgewogICAgICAgICBvayA9IHRydWU7Ci0gICAgICAgIGRlY2xh
cmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJz
ZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMo
bV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkpOwog
ICAgICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICB9CiAKQEAgLTU3OCwzNiArNTcxLDIwIEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZU1lZGlhUXVlcnkoTWVkaWFMaXN0KiBxdWVyaWVzLCBjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gb2s7CiB9CiAKLQogdm9pZCBDU1NQYXJzZXI6
OmFkZFByb3BlcnR5KGludCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29s
IGltcG9ydGFudCkKIHsKLSAgICBPd25QdHI8Q1NTUHJvcGVydHk+IHByb3AoYWRvcHRQdHIobmV3
IENTU1Byb3BlcnR5KHByb3BJZCwgdmFsdWUsIGltcG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5k
LCBtX2ltcGxpY2l0U2hvcnRoYW5kKSkpOwotICAgIGlmIChtX251bVBhcnNlZFByb3BlcnRpZXMg
Pj0gbV9tYXhQYXJzZWRQcm9wZXJ0aWVzKSB7Ci0gICAgICAgIG1fbWF4UGFyc2VkUHJvcGVydGll
cyArPSAzMjsKLSAgICAgICAgaWYgKG1fbWF4UGFyc2VkUHJvcGVydGllcyA+IFVJTlRfTUFYIC8g
c2l6ZW9mKENTU1Byb3BlcnR5KikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fcGFy
c2VkUHJvcGVydGllcyA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5Kio+KGZhc3RSZWFsbG9jKG1f
cGFyc2VkUHJvcGVydGllcywKLSAgICAgICAgICAgIG1fbWF4UGFyc2VkUHJvcGVydGllcyAqIHNp
emVvZihDU1NQcm9wZXJ0eSopKSk7Ci0gICAgfQotICAgIG1fcGFyc2VkUHJvcGVydGllc1ttX251
bVBhcnNlZFByb3BlcnRpZXMrK10gPSBwcm9wLmxlYWtQdHIoKTsKKyAgICBtX3BhcnNlZFByb3Bl
cnRpZXMuYWRkUHJvcGVydHkocHJvcElkLCB2YWx1ZSwgaW1wb3J0YW50LCBtX2N1cnJlbnRTaG9y
dGhhbmQsIG1faW1wbGljaXRTaG9ydGhhbmQpOwogfQogCiB2b2lkIENTU1BhcnNlcjo6cm9sbGJh
Y2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKQogewotICAgIEFTU0VSVChudW0gPj0gMCk7Ci0gICAg
QVNTRVJUKG1fbnVtUGFyc2VkUHJvcGVydGllcyA+PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVt
KSk7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bTsgKytpKQotICAgICAgICBkZWxldGUg
bV9wYXJzZWRQcm9wZXJ0aWVzWy0tbV9udW1QYXJzZWRQcm9wZXJ0aWVzXTsKKyAgICBtX3BhcnNl
ZFByb3BlcnRpZXMucm9sbGJhY2tMYXN0UHJvcGVydGllcyhudW0pOwogfQogCiB2b2lkIENTU1Bh
cnNlcjo6Y2xlYXJQcm9wZXJ0aWVzKCkKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9udW1QYXJzZWRQcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGRlbGV0ZSBtX3BhcnNlZFByb3Bl
cnRpZXNbaV07Ci0gICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzID0gMDsKKyAgICBtX3BhcnNlZFBy
b3BlcnRpZXMuY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVm
b3JlTWFyZ2luQm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVM7Ci0gICAgbV9oYXNG
b250RmFjZU9ubHlWYWx1ZXMgPSBmYWxzZTsKIH0KICAgICAKIHZvaWQgQ1NTUGFyc2VyOjpzZXRT
dHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCkBAIC04ODgsNyArODY1LDcgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIHByb3BJZCk7CiAgICAgICAgIGlmIChu
dW0gIT0gMSB8fCAhcGFyc2VWYWx1ZShDU1NQcm9wZXJ0eU92ZXJmbG93WCwgaW1wb3J0YW50KSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9w
YXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcyAtIDFdLT52YWx1ZSgpOworICAg
ICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7
CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5T3ZlcmZsb3dZLCB2YWx1ZSwgaW1wb3J0
YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtOTgxLDcgKzk1OCw3IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAg
ICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlCb3JkZXJTcGFj
aW5nKTsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRh
bnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVl
KiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZh
bHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMu
bGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2
YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBA
IC0xNjM0LDcgKzE2MTEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElk
LCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMs
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpOwogICAgICAgICAgICAgaWYgKCFwYXJz
ZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVz
W21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVl
KiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgICAg
IGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTI0MDgsNyArMjM4NSw3IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0aWVzLCAg
Ym9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNhc2UgMTogewogICAgICAgICAgICAgaWYgKCFwYXJz
ZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVz
W21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVl
KiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgICAg
IG1faW1wbGljaXRTaG9ydGhhbmQgPSB0cnVlOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJv
cGVydGllc1sxXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShw
cm9wZXJ0aWVzWzJdLCB2YWx1ZSwgaW1wb3J0YW50KTsKQEAgLTI0MTksMTAgKzIzOTYsMTAgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyhpbnQgcHJvcElkLCBjb25zdCBpbnQgKnByb3Bl
cnRpZXMsICBib29sIGltcG9ydGFudCkKICAgICAgICAgY2FzZSAyOiB7CiAgICAgICAgICAgICBp
ZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShw
cm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBh
cnNlZFByb3BlcnRpZXMtMl0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUg
PSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdEJ1dE9uZSgpLnZhbHVlKCk7CiAgICAgICAgICAgICBt
X2ltcGxpY2l0U2hvcnRoYW5kID0gdHJ1ZTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3Bl
cnRpZXNbMl0sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgdmFsdWUgPSBtX3BhcnNl
ZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAg
ICAgdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdEJ1dE9uZSgpLnZhbHVlKCk7CiAgICAg
ICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzNdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAg
ICAgICAgICAgIG1faW1wbGljaXRTaG9ydGhhbmQgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMjQzMCw3ICsyNDA3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyhpbnQg
cHJvcElkLCBjb25zdCBpbnQgKnByb3BlcnRpZXMsICBib29sIGltcG9ydGFudCkKICAgICAgICAg
Y2FzZSAzOiB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1w
b3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpIHx8ICFwYXJz
ZVZhbHVlKHByb3BlcnRpZXNbMl0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVz
W21fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVl
KiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0QnV0T25lKCkudmFsdWUoKTsKICAgICAg
ICAgICAgIG1faW1wbGljaXRTaG9ydGhhbmQgPSB0cnVlOwogICAgICAgICAgICAgYWRkUHJvcGVy
dHkocHJvcGVydGllc1szXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICBtX2ltcGxp
Y2l0U2hvcnRoYW5kID0gZmFsc2U7CkBAIC0zNzk5LDcgKzM3NzYsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VGb250U3R5bGUoYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogCiAgICAgaWYgKHZhbHVl
cyAmJiB2YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAgIG1faGFzRm9udEZhY2VPbmx5VmFsdWVz
ID0gdHJ1ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnNldEZvbnRGYWNlT25seSgpOwog
ICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgdmFsdWVzLnJlbGVhc2Uo
KSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzg0Niw3ICsz
ODIzLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFZhcmlhbnQoYm9vbCBpbXBvcnRhbnQp
CiAgICAgfQogCiAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAg
IG1faGFzRm9udEZhY2VPbmx5VmFsdWVzID0gdHJ1ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0
aWVzLnNldEZvbnRGYWNlT25seSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRWYXJpYW50LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC0zODk5LDcgKzM4NzYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VG
b250V2VpZ2h0KGJvb2wgaW1wb3J0YW50KQogICAgIH0KIAogICAgIGlmICh2YWx1ZXMgJiYgdmFs
dWVzLT5sZW5ndGgoKSkgewotICAgICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IHRydWU7
CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5zZXRGb250RmFjZU9ubHkoKTsKICAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBv
cnRhbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC02MzA2LDkgKzYyODMsOSBA
QCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1Bh
cnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcgogICAgICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBt
X2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zID0gZmFsc2U7CiAgICAgICAgIFJlZlB0cjxDU1NT
dHlsZVJ1bGU+IHJ1bGUgPSBDU1NTdHlsZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQsIG1fbGFz
dFNlbGVjdG9yTGluZU51bWJlcik7CiAgICAgICAgIHJ1bGUtPmFkb3B0U2VsZWN0b3JWZWN0b3Io
KnNlbGVjdG9ycyk7Ci0gICAgICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAg
ICAgICAgIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotICAgICAgICBydWxlLT5zZXREZWNs
YXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1f
cGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIGlmICht
X3BhcnNlZFByb3BlcnRpZXMuaGFzRm9udEZhY2VPbmx5KCkpCisgICAgICAgICAgICBtX3BhcnNl
ZFByb3BlcnRpZXMuZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygpOworICAgICAgICBydWxl
LT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUu
Z2V0KCksIG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCksIG1fcGFyc2VkUHJvcGVydGllcy5jb3Vu
dCgpKSk7CiAgICAgICAgIHJlc3VsdCA9IHJ1bGUuZ2V0KCk7CiAgICAgICAgIG1fcGFyc2VkU3R5
bGVPYmplY3RzLmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CiAgICAgICAgIGlmIChtX3J1bGVSYW5n
ZU1hcCkgewpAQCAtNjMzMCw4ICs2MzA3LDExIEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRl
U3R5bGVSdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9yCiBD
U1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSgpCiB7CiAgICAgbV9hbGxvd0lt
cG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNlOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBhcnNlZFByb3BlcnRpZXM7ICsraSkgewotICAg
ICAgICBDU1NQcm9wZXJ0eSogcHJvcGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07CisKKyAg
ICBDU1NQcm9wZXJ0eSogY29uc3QqIHBhcnNlZFByb3BlcnRpZXMgPSBtX3BhcnNlZFByb3BlcnRp
ZXMuZGF0YSgpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGFyc2VkUHJvcGVy
dGllcy5jb3VudCgpOyArK2kpIHsKKyAgICAgICAgQ1NTUHJvcGVydHkqIHByb3BlcnR5ID0gcGFy
c2VkUHJvcGVydGllc1tpXTsKICAgICAgICAgaW50IGlkID0gcHJvcGVydHktPmlkKCk7CiAgICAg
ICAgIGlmICgoaWQgPT0gQ1NTUHJvcGVydHlGb250V2VpZ2h0IHx8IGlkID09IENTU1Byb3BlcnR5
Rm9udFN0eWxlIHx8IGlkID09IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQpICYmIHByb3BlcnR5LT52
YWx1ZSgpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1
ZT4gdmFsdWUgPSBwcm9wZXJ0eS0+bV92YWx1ZS5yZWxlYXNlKCk7CkBAIC02MzQ2LDggKzYzMjYs
OSBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSgpCiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KKwogICAgIFJlZlB0cjxDU1NGb250RmFjZVJ1
bGU+IHJ1bGUgPSBDU1NGb250RmFjZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQpOwotICAgIHJ1
bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVs
ZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpKTsKKyAg
ICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRl
KHJ1bGUuZ2V0KCksIHBhcnNlZFByb3BlcnRpZXMsIG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgp
KSk7CiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgQ1NTRm9udEZhY2VSdWxlKiByZXN1bHQg
PSBydWxlLmdldCgpOwogICAgIG1fcGFyc2VkU3R5bGVPYmplY3RzLmFwcGVuZChydWxlLnJlbGVh
c2UoKSk7CkBAIC02NDIxLDcgKzY0MDIsNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVBh
Z2VSdWxlKFBhc3NPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHBhZ2VTZWxlY3RvcikKICAgICAg
ICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBzZWxlY3RvclZlY3RvcjsKICAg
ICAgICAgc2VsZWN0b3JWZWN0b3IuYXBwZW5kKHBhZ2VTZWxlY3Rvcik7CiAgICAgICAgIHJ1bGUt
PmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOwotICAgICAgICBydWxlLT5zZXRE
ZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCks
IG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIHJ1
bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVs
ZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLmNv
dW50KCkpKTsKICAgICAgICAgcGFnZVJ1bGUgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNl
ZFN0eWxlT2JqZWN0cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwogICAgIH0KQEAgLTY0NDIsMzQg
KzY0MjMsMTYgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVNYXJnaW5BdFJ1bGUoQ1NTU2Vs
ZWN0b3I6Ok1hcmdpbkJveFR5cGUgLyogbWFyZ2luQm94ICoKIAogdm9pZCBDU1NQYXJzZXI6OnN0
YXJ0RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCkKIHsKLSAgICBtX251bVBhcnNlZFByb3BlcnRp
ZXNCZWZvcmVNYXJnaW5Cb3ggPSBtX251bVBhcnNlZFByb3BlcnRpZXM7CisgICAgbV9udW1QYXJz
ZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCk7
CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjplbmREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKQogewog
ICAgIEFTU0VSVChtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3ggIT0gSU5WQUxJ
RF9OVU1fUEFSU0VEX1BST1BFUlRJRVMpOwotICAgIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMobV9u
dW1QYXJzZWRQcm9wZXJ0aWVzIC0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94
KTsKKyAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgp
IC0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KTsKICAgICBtX251bVBhcnNl
ZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3ggPSBJTlZBTElEX05VTV9QQVJTRURfUFJPUEVSVElF
UzsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OmRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpCi17Ci0g
ICAgQVNTRVJUKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKTsKLSAgICBpbnQgZGVsZXRlZFByb3Bl
cnRpZXMgPSAwOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbnVtUGFyc2VkUHJv
cGVydGllczsgKytpKSB7Ci0gICAgICAgIENTU1Byb3BlcnR5KiBwcm9wZXJ0eSA9IG1fcGFyc2Vk
UHJvcGVydGllc1tpXTsKLSAgICAgICAgaW50IGlkID0gcHJvcGVydHktPmlkKCk7Ci0gICAgICAg
IGlmICgoaWQgPT0gQ1NTUHJvcGVydHlGb250V2VpZ2h0IHx8IGlkID09IENTU1Byb3BlcnR5Rm9u
dFN0eWxlIHx8IGlkID09IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQpICYmIHByb3BlcnR5LT52YWx1
ZSgpLT5pc1ZhbHVlTGlzdCgpKSB7Ci0gICAgICAgICAgICBkZWxldGUgcHJvcGVydHk7Ci0gICAg
ICAgICAgICBkZWxldGVkUHJvcGVydGllcysrOwotICAgICAgICB9IGVsc2UgaWYgKGRlbGV0ZWRQ
cm9wZXJ0aWVzKQotICAgICAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzW2kgLSBkZWxldGVkUHJv
cGVydGllc10gPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07Ci0gICAgfQotCi0gICAgbV9udW1QYXJz
ZWRQcm9wZXJ0aWVzIC09IGRlbGV0ZWRQcm9wZXJ0aWVzOwotfQotCiBXZWJLaXRDU1NLZXlmcmFt
ZVJ1bGUqIENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKENTU1BhcnNlclZhbHVlTGlzdCog
a2V5cykKIHsKICAgICAvLyBDcmVhdGUgYSBrZXkgc3RyaW5nIGZyb20gdGhlIHBhc3NlZCBrZXlz
CkBAIC02NDg0LDcgKzY0NDcsNyBAQCBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqIENTU1BhcnNlcjo6
Y3JlYXRlS2V5ZnJhbWVSdWxlKENTU1BhcnNlclZhbHVlTGlzdCoga2V5cykKIAogICAgIFJlZlB0
cjxXZWJLaXRDU1NLZXlmcmFtZVJ1bGU+IGtleWZyYW1lID0gV2ViS2l0Q1NTS2V5ZnJhbWVSdWxl
OjpjcmVhdGUobV9zdHlsZVNoZWV0KTsKICAgICBrZXlmcmFtZS0+c2V0S2V5VGV4dChrZXlTdHJp
bmcpOwotICAgIGtleWZyYW1lLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6Y3JlYXRlKDAsIG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVz
KSk7CisgICAga2V5ZnJhbWUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjpjcmVhdGUoMCwgbV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0
aWVzLmNvdW50KCkpKTsKIAogICAgIGNsZWFyUHJvcGVydGllcygpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmgKaW5kZXggYTEyYTA5NC4uZmJlNjk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAt
MjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiQ1NTR3JhZGllbnRWYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU1BhcnNlclZhbHVlcy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5Q29udGFpbmVyLmgiCiAj
aW5jbHVkZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3Iu
aCIKICNpbmNsdWRlICJDb2xvci5oIgpAQCAtNzQsNyArNzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgdm9pZCBhZGRQcm9wZXJ0eShpbnQgcHJvcElkLCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQpOwogICAgICAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3Bl
cnRpZXMoaW50IG51bSk7Ci0gICAgICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0IHsgcmV0
dXJuIG1fbnVtUGFyc2VkUHJvcGVydGllcyA+IDA7IH0KKyAgICAgICAgYm9vbCBoYXNQcm9wZXJ0
aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkgPiAwOyB9CiAK
ICAgICAgICAgYm9vbCBwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKICAg
ICAgICAgYm9vbCBwYXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRp
ZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7CkBAIC0yMzYsMTggKzIzNywx
NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxDU1NSdWxlPiBtX2tleWZy
YW1lOwogICAgICAgICBPd25QdHI8TWVkaWFRdWVyeT4gbV9tZWRpYVF1ZXJ5OwogICAgICAgICBD
U1NQYXJzZXJWYWx1ZUxpc3QqIG1fdmFsdWVMaXN0OwotICAgICAgICBDU1NQcm9wZXJ0eSoqIG1f
cGFyc2VkUHJvcGVydGllczsKKyAgICAgICAgQ1NTUHJvcGVydHlDb250YWluZXIgbV9wYXJzZWRQ
cm9wZXJ0aWVzOwogICAgICAgICBDU1NTZWxlY3Rvckxpc3QqIG1fc2VsZWN0b3JMaXN0Rm9yUGFy
c2VTZWxlY3RvcjsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGU+IG1fcHJp
bWl0aXZlVmFsdWVDYWNoZTsKLSAgICAgICAgdW5zaWduZWQgbV9udW1QYXJzZWRQcm9wZXJ0aWVz
OwotICAgICAgICB1bnNpZ25lZCBtX21heFBhcnNlZFByb3BlcnRpZXM7CiAgICAgICAgIHVuc2ln
bmVkIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveDsKIAogICAgICAgICBpbnQg
bV9pblBhcnNlU2hvcnRoYW5kOwogICAgICAgICBpbnQgbV9jdXJyZW50U2hvcnRoYW5kOwogICAg
ICAgICBib29sIG1faW1wbGljaXRTaG9ydGhhbmQ7CiAKLSAgICAgICAgYm9vbCBtX2hhc0ZvbnRG
YWNlT25seVZhbHVlczsKICAgICAgICAgYm9vbCBtX2hhZFN5bnRhY3RpY2FsbHlWYWxpZENTU1J1
bGU7CiAKICAgICAgICAgQXRvbWljU3RyaW5nIG1fZGVmYXVsdE5hbWVzcGFjZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjQ0YTBiNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCkBAIC0wLDAgKzEsMjYxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRl
bCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IC0gMjAxMCAgVG9yY2gg
TW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdlYmtpdC5vcmc+LCBVbml2ZXJzaXR5
IG9mIFN6ZWdlZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250
YWluZXIuaCIKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdURjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6
Q1NTUHJvcGVydHlDb250YWluZXIoc2l6ZV90IGluaXRpYWxDYXBhY2l0eSkKKyAgICA6IG1fcHJv
cGVydGllcyhzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eSoqPihmYXN0TWFsbG9jKGluaXRpYWxDYXBh
Y2l0eSAqIHNpemVvZihDU1NQcm9wZXJ0eSopKSkpCisgICAgLCBtX251bVZhbGlkUHJvcGVydGll
cygwKQorICAgICwgbV9zaXplKDApCisgICAgLCBtX2NhcGFjaXR5KGluaXRpYWxDYXBhY2l0eSkK
KyAgICAsIG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyhmYWxzZSkKK3sKK30KKworQ1NTUHJv
cGVydHlDb250YWluZXI6On5DU1NQcm9wZXJ0eUNvbnRhaW5lcigpCit7CisgICAgY2xlYXJQcm9w
ZXJ0aWVzKCk7CisgICAgc3dlZXAoKTsKKyAgICBmYXN0RnJlZShtX3Byb3BlcnRpZXMpOworfQor
Cit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpncm93KCkKK3sKKyAgICBpZiAobV9zaXplICsg
MSA8IG1fY2FwYWNpdHkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NhcGFjaXR5ICsg
MTYgPiBVSU5UX01BWCAvIHNpemVvZihDU1NQcm9wZXJ0eSopKQorICAgICAgICBDUkFTSCgpOwor
CisgICAgbV9jYXBhY2l0eSArPSAxNjsKKworICAgIG1fcHJvcGVydGllcyA9IHN0YXRpY19jYXN0
PENTU1Byb3BlcnR5Kio+KGZhc3RSZWFsbG9jKG1fcHJvcGVydGllcywgbV9jYXBhY2l0eSAqIHNp
emVvZihDU1NQcm9wZXJ0eSopKSk7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OnN3
ZWVwKCkKK3sKKyAgICBpZiAobV9udW1WYWxpZFByb3BlcnRpZXMgPT0gbV9zaXplKQorICAgICAg
ICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBkZWxldGVkUHJvcGVydGllcyA9IDA7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKSB7CisgICAgICAgIENTU1Byb3BlcnR5
KiBwcm9wZXJ0eSA9IG1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgaWYgKCFwcm9wZXJ0eS0+aWQo
KSkgeworICAgICAgICAgICAgZGVsZXRlIHByb3BlcnR5OworICAgICAgICAgICAgKytkZWxldGVk
UHJvcGVydGllczsKKyAgICAgICAgfSBlbHNlIGlmIChkZWxldGVkUHJvcGVydGllcykKKyAgICAg
ICAgICAgIG1fcHJvcGVydGllc1tpIC0gZGVsZXRlZFByb3BlcnRpZXNdID0gcHJvcGVydHk7Cisg
ICAgfQorCisgICAgbV9zaXplIC09IGRlbGV0ZWRQcm9wZXJ0aWVzOworCisgICAgQVNTRVJUKG1f
bnVtVmFsaWRQcm9wZXJ0aWVzID09IG1fc2l6ZSk7Cit9CisKK2lubGluZSB2b2lkIENTU1Byb3Bl
cnR5Q29udGFpbmVyOjppbnZhbGlkYXRlQnlQb3NpdGlvbih1bnNpZ25lZCBwb3NpdGlvbikKK3sK
KyAgICBBU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOworCisgICAgaWYgKFVOTElLRUxZKCFtX3By
b3BlcnRpZXNbcG9zaXRpb25dLT5pZCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9udW1W
YWxpZFByb3BlcnRpZXMtLTsKKyAgICBtX2lkVG9Qb3NpdGlvbk1hcC5yZW1vdmUobV9wcm9wZXJ0
aWVzW3Bvc2l0aW9uXS0+bV9pZCk7CisgICAgbV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS0+bV9pZCA9
IDA7Cit9CisKK2lubGluZSB2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjppbnZhbGlkYXRlQnlJ
ZChpbnQgcHJvcGVydHlJRCkKK3sKKyAgICBpZiAoIW1faWRUb1Bvc2l0aW9uTWFwLmNvbnRhaW5z
KHByb3BlcnR5SUQpKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9
IG1faWRUb1Bvc2l0aW9uTWFwLmdldChwcm9wZXJ0eUlEKTsKKyAgICBpbnZhbGlkYXRlQnlQb3Np
dGlvbihwb3NpdGlvbik7Cit9CisKK0NTU1Byb3BlcnR5KiBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6
ZmluZFByb3BlcnR5V2l0aElkKGludCBwcm9wZXJ0eUlEKQoreworICAgIGlmICghbV9zaXplKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gbV9pZFRvUG9zaXRp
b25NYXAuZ2V0KHByb3BlcnR5SUQpOworCisgICAgQVNTRVJUKHBvc2l0aW9uIDwgbV9zaXplKTsK
KworICAgIGlmIChVTkxJS0VMWSghbV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS0+aWQoKSkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fcHJvcGVydGllc1twb3NpdGlvbl07Cit9CisK
K2NvbnN0IENTU1Byb3BlcnR5JiBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Zmlyc3QoKQoreworICAg
IEFTU0VSVChtX251bVZhbGlkUHJvcGVydGllcyk7CisKKyAgICBpZiAoVU5MSUtFTFkoIW1fcHJv
cGVydGllc1swXS0+aWQoKSkpCisgICAgICAgIHN3ZWVwKCk7CisKKyAgICBBU1NFUlQobV9wcm9w
ZXJ0aWVzWzBdKTsKKworICAgIHJldHVybiAqbV9wcm9wZXJ0aWVzWzBdOworfQorCitjb25zdCBD
U1NQcm9wZXJ0eSYgQ1NTUHJvcGVydHlDb250YWluZXI6Omxhc3QoKQoreworICAgIEFTU0VSVCht
X251bVZhbGlkUHJvcGVydGllcyk7CisKKyAgICBpZiAoVU5MSUtFTFkoIW1fcHJvcGVydGllc1tt
X3NpemUgLSAxXS0+aWQoKSkpCisgICAgICAgIHN3ZWVwKCk7CisKKyAgICBBU1NFUlQobV9wcm9w
ZXJ0aWVzW21fc2l6ZSAtIDFdKTsKKworICAgIHJldHVybiAqbV9wcm9wZXJ0aWVzW21fc2l6ZSAt
IDFdOworfQorCitjb25zdCBDU1NQcm9wZXJ0eSYgQ1NTUHJvcGVydHlDb250YWluZXI6Omxhc3RC
dXRPbmUoKQoreworICAgIEFTU0VSVChtX251bVZhbGlkUHJvcGVydGllcyA+PSAyKTsKKworICAg
IGlmIChVTkxJS0VMWSghbV9wcm9wZXJ0aWVzW21fc2l6ZSAtIDFdLT5pZCgpIHx8ICFtX3Byb3Bl
cnRpZXNbbV9zaXplIC0gMl0tPmlkKCkpKQorICAgICAgICBzd2VlcCgpOworCisgICAgQVNTRVJU
KG1fcHJvcGVydGllc1ttX3NpemUgLSAyXSk7CisKKyAgICByZXR1cm4gKm1fcHJvcGVydGllc1tt
X3NpemUgLSAyXTsKK30KKworQ1NTUHJvcGVydHkqIGNvbnN0KiBDU1NQcm9wZXJ0eUNvbnRhaW5l
cjo6ZGF0YSgpCit7CisgICAgc3dlZXAoKTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzOworfQor
Citib29sIENTU1Byb3BlcnR5Q29udGFpbmVyOjpjb250YWluc1Byb3BlcnR5KGludCBwcm9wZXJ0
eUlEKSBjb25zdAoreworICAgIGlmICghbV9pZFRvUG9zaXRpb25NYXAuY29udGFpbnMocHJvcGVy
dHlJRCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVkIHBvc2l0aW9uID0g
bV9pZFRvUG9zaXRpb25NYXAuZ2V0KHByb3BlcnR5SUQpOworCisgICAgQVNTRVJUKHBvc2l0aW9u
IDwgbV9zaXplKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX3Byb3BlcnRpZXNb
cG9zaXRpb25dLT5pZCgpKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3Zl
UHJvcGVydHkoaW50IHByb3BlcnR5SUQpCit7CisgICAgaW52YWxpZGF0ZUJ5SWQocHJvcGVydHlJ
RCk7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OnJlbW92ZVByb3BlcnRpZXMoY29u
c3QgaW50KiBpZExpc3QsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgIGludmFsaWRhdGVCeUlkKGlkTGlzdFtpXSk7
Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OmFkZFByb3BlcnR5KGludCBwcm9wZXJ0
eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGludCBzaG9y
dGhhbmRJRCwgYm9vbCBpbXBsaWNpdCkKK3sKKyAgICBPd25QdHI8Q1NTUHJvcGVydHk+IHByb3Bl
cnR5KGFkb3B0UHRyKG5ldyBDU1NQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50
LCBzaG9ydGhhbmRJRCwgaW1wbGljaXQpKSk7CisKKyAgICBpZiAobV9zaXplICsgMSA+PSBtX2Nh
cGFjaXR5KSB7CisgICAgICAgIHN3ZWVwKCk7CisgICAgICAgIGdyb3coKTsKKyAgICB9CisKKyAg
ICBpZiAoIW1faWRUb1Bvc2l0aW9uTWFwLmNvbnRhaW5zKHByb3BlcnR5SUQpKSB7CisgICAgICAg
IG1fcHJvcGVydGllc1ttX3NpemUrK10gPSBwcm9wZXJ0eS5sZWFrUHRyKCk7CisgICAgICAgIG1f
aWRUb1Bvc2l0aW9uTWFwLmFkZChwcm9wZXJ0eUlELCBtX3NpemUgLSAxKTsKKyAgICAgICAgKytt
X251bVZhbGlkUHJvcGVydGllczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVuc2ln
bmVkIG9sZFBvc2l0aW9uID0gbV9pZFRvUG9zaXRpb25NYXAuZ2V0KHByb3BlcnR5SUQpOworCisg
ICAgaWYgKG1fcHJvcGVydGllc1tvbGRQb3NpdGlvbl0tPmlkKCkgJiYgbV9wcm9wZXJ0aWVzW29s
ZFBvc2l0aW9uXS0+aXNJbXBvcnRhbnQoKSAmJiAhaW1wb3J0YW50KQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3Byb3BlcnRpZXNbbV9zaXplKytdID0gcHJvcGVydHkubGVha1B0cigpOworICAg
IG1faWRUb1Bvc2l0aW9uTWFwLnNldChwcm9wZXJ0eUlELCBtX3NpemUgLSAxKTsKKworICAgIGlm
IChtX3Byb3BlcnRpZXNbb2xkUG9zaXRpb25dLT5pZCgpKQorICAgICAgICBtX3Byb3BlcnRpZXNb
b2xkUG9zaXRpb25dLT5tX2lkID0gMDsKKyAgICBlbHNlCisgICAgICAgICsrbV9udW1WYWxpZFBy
b3BlcnRpZXM7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OnJvbGxiYWNrTGFzdFBy
b3BlcnRpZXMoaW50IG51bSkKK3sKKyAgICBpZiAoIW51bSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgQVNTRVJUKG51bSA+IDApOworICAgIEFTU0VSVChtX251bVZhbGlkUHJvcGVydGllcyA+PSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtKSk7CisKKyAgICBpbnQgZGVsZXRlZFByb3BlcnRpZXMg
PSAwOworICAgIGludCBwb3NpdGlvbiA9IG1fc2l6ZTsKKyAgICB3aGlsZSAoZGVsZXRlZFByb3Bl
cnRpZXMgIT0gbnVtICYmIC0tcG9zaXRpb24gPj0gMCkgeworICAgICAgICBpZiAobV9wcm9wZXJ0
aWVzW3Bvc2l0aW9uXS0+aWQoKSkgeworICAgICAgICAgICAgaW52YWxpZGF0ZUJ5UG9zaXRpb24o
cG9zaXRpb24pOworICAgICAgICAgICAgKytkZWxldGVkUHJvcGVydGllczsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6ZGVsZXRlRm9udEZhY2VPbmx5
UHJvcGVydGllcygpCit7CisgICAgQVNTRVJUKG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyk7
CisKKyAgICBpbnQgaWRzWzNdID0ge0NTU1Byb3BlcnR5Rm9udFdlaWdodCwgQ1NTUHJvcGVydHlG
b250U3R5bGUsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnR9OworCisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCAzOyArK2kpIHsKKyAgICAgICAgaWYgKCFtX2lkVG9Qb3NpdGlvbk1hcC5jb250YWlucyhp
ZHNbaV0pKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdW5zaWduZWQgcG9zaXRp
b24gPSBtX2lkVG9Qb3NpdGlvbk1hcC5nZXQoaWRzW2ldKTsKKworICAgICAgICBBU1NFUlQocG9z
aXRpb24gPCBtX3NpemUpOworCisgICAgICAgIGlmIChVTkxJS0VMWSghbV9wcm9wZXJ0aWVzW3Bv
c2l0aW9uXS0+aWQoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAobV9w
cm9wZXJ0aWVzW3Bvc2l0aW9uXS0+dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgICAg
IGludmFsaWRhdGVCeVBvc2l0aW9uKHBvc2l0aW9uKTsKKyAgICB9CisgICAgbV9oYXNGb250RmFj
ZU9ubHlQcm9wZXJ0aWVzID0gZmFsc2U7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6
OmNsZWFyUHJvcGVydGllcygpCit7CisgICAgbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzID0g
ZmFsc2U7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAg
ICAgIGludmFsaWRhdGVCeVBvc2l0aW9uKGkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiNzQ4ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaApAQCAtMCwwICsxLDczIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNl
aWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IC0gMjAxMCAgVG9y
Y2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdlYmtpdC5vcmc+LCBVbml2ZXJz
aXR5IG9mIFN6ZWdlZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaWZuZGVmIENTU1Byb3BlcnR5Q29udGFpbmVyX2gKKyNkZWZpbmUgQ1NT
UHJvcGVydHlDb250YWluZXJfaAorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNpbmNsdWRl
ICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgSGFzaE1hcDxpbnQsIHVu
c2lnbmVkPiBDU1NQcm9wZXJ0eUlkUG9zaXRpb25NYXA7CisKK2NsYXNzIENTU1Byb3BlcnR5Q29u
dGFpbmVyIHsKK3B1YmxpYzoKKyAgICBDU1NQcm9wZXJ0eUNvbnRhaW5lcihzaXplX3QgaW5pdGlh
bENhcGFjaXR5ID0gNjQpOworICAgIH5DU1NQcm9wZXJ0eUNvbnRhaW5lcigpOworICAgIGNvbnN0
IENTU1Byb3BlcnR5JiBmaXJzdCgpOworICAgIGNvbnN0IENTU1Byb3BlcnR5JiBsYXN0KCk7Cisg
ICAgY29uc3QgQ1NTUHJvcGVydHkmIGxhc3RCdXRPbmUoKTsKKyAgICBDU1NQcm9wZXJ0eSogZmlu
ZFByb3BlcnR5V2l0aElkKGludCBwcm9wZXJ0eUlEKTsKKyAgICBDU1NQcm9wZXJ0eSogY29uc3Qq
IGRhdGEoKTsKKworICAgIGlubGluZSB1bnNpZ25lZCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
bnVtVmFsaWRQcm9wZXJ0aWVzOyB9CisgICAgaW5saW5lIGJvb2wgaGFzRm9udEZhY2VPbmx5KCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzOyB9CisgICAgaW5saW5l
IHZvaWQgc2V0Rm9udEZhY2VPbmx5KCkgeyBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXMgPSB0
cnVlOyB9CisKKyAgICBib29sIGNvbnRhaW5zUHJvcGVydHkoaW50IHByb3BlcnR5SUQpIGNvbnN0
OworICAgIHZvaWQgcmVtb3ZlUHJvcGVydHkoaW50IHByb3BlcnR5SUQpOworICAgIHZvaWQgcmVt
b3ZlUHJvcGVydGllcyhjb25zdCBpbnQqIGlkTGlzdCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2
b2lkIGFkZFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiwgYm9v
bCBpbXBvcnRhbnQsIGludCBzaG9ydGhhbmRJRCA9IDAsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSk7
CisgICAgdm9pZCByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKGludCBudW0pOworICAgIHZvaWQgZGVs
ZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygpOworICAgIHZvaWQgY2xlYXJQcm9wZXJ0aWVzKCk7
CisKK3ByaXZhdGU6CisgICAgdm9pZCBncm93KCk7CisgICAgdm9pZCBzd2VlcCgpOworICAgIGlu
bGluZSB2b2lkIGludmFsaWRhdGVCeVBvc2l0aW9uKHVuc2lnbmVkIHBvc2l0aW9uKTsKKyAgICBp
bmxpbmUgdm9pZCBpbnZhbGlkYXRlQnlJZChpbnQgcHJvcGVydHlJRCk7CisKKyAgICBDU1NQcm9w
ZXJ0eSoqIG1fcHJvcGVydGllczsKKyAgICBDU1NQcm9wZXJ0eUlkUG9zaXRpb25NYXAgbV9pZFRv
UG9zaXRpb25NYXA7CisgICAgdW5zaWduZWQgbV9udW1WYWxpZFByb3BlcnRpZXM7CisgICAgdW5z
aWduZWQgbV9zaXplOworICAgIHVuc2lnbmVkIG1fY2FwYWNpdHk7CisgICAgYm9vbCBtX2hhc0Zv
bnRGYWNlT25seVByb3BlcnRpZXMgOiAxOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gQ1NTUHJvcGVydHlDb250YWluZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFy
c2VyLmNwcAppbmRleCA0N2Y5ODQ1Li4zMjcwMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFy
c2VyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1ZS5oIgog
I2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCisjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CiAjaW5jbHVkZSAiQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVl
S2V5d29yZHMuaCIKQEAgLTI4Miw3ICsyODMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VTVkdW
YWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHJvbGxiYWNrTGFz
dFByb3BlcnRpZXMoMSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAg
ICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJv
cGVydGllcyAtIDFdLT52YWx1ZSgpOworICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNl
ZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5TWFya2VyTWlkLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlNYXJrZXJFbmQsIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICBtX2ltcGxpY2l0
U2hvcnRoYW5kID0gZmFsc2U7Ci0tIAoxLjcuNS4xCgo=
</data>
<flag name="commit-queue"
          id="87169"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94075</attachid>
            <date>2011-05-19 08:49:19 -0700</date>
            <delta_ts>2011-06-28 06:53:12 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-BUG-19417-CSSParser-should-use-custom-vector-like-cl.patch</filename>
            <type>text/plain</type>
            <size>39836</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSBlNjQwZGI5M2FkOWFmNTVlOWQyOTM5OWI0NThhOTZkZTg2YWE1MjJjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPgpEYXRl
OiBXZWQsIDE4IE1heSAyMDExIDE5OjE3OjU5ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gW0JVRyAx
OTQxN10gLSBDU1NQYXJzZXIgc2hvdWxkIHVzZSBjdXN0b20gdmVjdG9yLWxpa2UgY2xhc3MKIGZv
ciBtYW5hZ2luZyBwcm9wZXJ0aWVzCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
ICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICA3MSArKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gICAgICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qICAgICB8ICAgIDggKwogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIHwgICAgOCArCiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhbW1hci55ICAgICAgICAgICAgICAgICAgfCAgICA4ICstCiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCAgICAgICAgICAgICAgICAgfCAgMTExICsrKy0tLS0t
LQogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oICAgICAgICAgICAgICAgICAgIHwgICAg
OCArLQogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCAgICAgIHwg
IDI2MSArKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHlDb250YWluZXIuaCAgICAgICAgfCAgIDczICsrKysrKwogU291cmNlL1dlYkNvcmUvY3NzL1NW
R0NTU1BhcnNlci5jcHAgICAgICAgICAgICAgIHwgICAgMyArLQogMTMgZmlsZXMgY2hhbmdlZCwg
NDc0IGluc2VydGlvbnMoKyksIDg0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaAoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggZWQ1NGNjNi4uNTA2MTA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTQ4Myw2ICs0ODMsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmNwcAogICAgIGNzcy9D
U1NQcm9wZXJ0eS5jcHAKKyAgICBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCiAgICAgY3Nz
L0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwCiAgICAgY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5j
cHAKICAgICBjc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQxMzdhZTAuLjRi
NDU5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAxMS0wNS0xOCAgQW5kcmFzIEJl
Y3NpICA8YWJlY3NpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ1NTUGFyc2VyIHNob3VsZCB1c2UgY3VzdG9tICJ2ZWN0b3ItbGlr
ZSIgY2xhc3MgZm9yIG1hbmFnaW5nIHByb3BlcnRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDE3CisKKyAgICAgICAgSW1wbGVtZW50IENTU1By
b3BlcnR5Q29udGFpbmVyIHdoaWNoIG9uIHJlbW92YWwgbWFya3MgZW50cmllcyBhcyBlbXB0eQor
ICAgICAgICBhbmQgc3dlZXBzIHRoZW0gd2hlbiB0aGUgaW50ZXJuYWwgYXJyYXkgZ3Jvd3MgdG9v
IGJpZy4KKyAgICAgICAgVXNlIGFuIGludGVybmFsIEhhc2hNYXAgdG8gYmUgYWJsZSB0byBlZmZp
Y2llbnRseSBmaW5kIGVudHJpZXMgYnkgSUQKKyAgICAgICAgYW5kIGF1dG9tYXRpY2FsbHkgZGlz
Y2FyZCBkdXBsaWNhdGUgcHJvcGVydGllcy4KKworICAgICAgICBJbiBhIGZvbGxvdy11cCBwYXRj
aCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiBjYW4gYmUgc2ltcGxpZmllZCB0byB1c2UgdGhp
cyBjb250YWluZXIKKyAgICAgICAgaW5zdGVhZCBvZiBtYWludGFpbmluZyBpdHMgb3duIHZlY3Rv
ci1iYXNlZCBpbmZyYXN0cnVjdHVyZSBmb3IgbWFuYWdpbmcgcGFyc2VkIHByb3BlcnRpZXMuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZCwgbm8gZnVuY2lvbmFsaXR5IGNoYW5nZS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55OgorICAg
ICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpD
U1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjp+Q1NTUGFyc2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnBhcnNlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRkUHJvcGVy
dHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpyb2xsYmFja0xhc3RQcm9wZXJ0aWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y2xlYXJQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VGb250U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZUZvbnRWYXJpYW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VG
b250V2VpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlRm9udEZhY2VSdWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlUGFnZVJ1bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpzdGFydERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OmVuZERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZSk6CisgICAgICAgICog
Y3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpoYXNQcm9wZXJ0
aWVzKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpDU1NQcm9wZXJ0eUNvbnRhaW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6fkNTU1Byb3BlcnR5
Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpncm93
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpzd2VlcCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW52YWxpZGF0ZUJ5UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmludmFsaWRhdGVCeUlk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpmaW5kUHJvcGVydHlX
aXRoSWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmZpcnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0QnV0T25lKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5Q29udGFpbmVyOjpjb250YWluc1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3ZlUHJvcGVydGllcyk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6YWRkUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmRlbGV0ZUZvbnRGYWNlT25seVByb3Bl
cnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmNsZWFyUHJv
cGVydGllcyk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmNvdW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpoYXNGb250RmFjZU9ubHkpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnNldEZvbnRGYWNlT25seSk6CisgICAg
ICAgICogY3NzL1NWR0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlU1ZHVmFsdWUpOgorCiAyMDExLTA1LTE5ICBBbmRyZXkgQWRhaWtpbiAgPGFhbmRyZXlA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNDYyYjhjNi4uMzgzMzE2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCkBAIC05NTEsNiArOTUxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHkuaCBcCisJU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVy
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmggXAogCVNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
b3BlcnR5U291cmNlRGF0YS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDllMTM2ODMuLmYxOTE3
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ5MSw2ICs0OTEsNyBAQAogICAgICAgICAgICAgJ2Nz
cy9DU1NQYXJzZXJWYWx1ZXMuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eS5oJywKKyAgICAgICAgICAgICdjc3Mv
Q1NTUHJvcGVydHlDb250YWluZXIuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5U291
cmNlRGF0YS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUmVmbGVjdFZhbHVlLmgnLAogICAgICAg
ICAgICAgJ2Nzcy9DU1NSZWZsZWN0aW9uRGlyZWN0aW9uLmgnLApAQCAtMjMxMCw2ICsyMzExLDcg
QEAKICAgICAgICAgICAgICdjc3MvQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZS5oJywKICAgICAgICAg
ICAgICdjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oJywKICAgICAgICAgICAgICdjc3Mv
Q1NTUHJvcGVydHkuY3BwJywKKyAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlDb250YWluZXIu
Y3BwJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAnLAogICAgICAg
ICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQ
cm9wZXJ0eVNvdXJjZURhdGEuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMzc5ZWJkMS4uZWY3Yzdi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KQEAgLTQwNiw2ICs0MDYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBj
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIFwKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVDYWNo
ZS5jcHAgXAogICAgIGNzcy9DU1NQcm9wZXJ0eS5jcHAgXAorICAgIGNzcy9DU1NQcm9wZXJ0eUNv
bnRhaW5lci5jcHAgXAogICAgIGNzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCBcCiAgICAgY3Nz
L0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAgXAogICAgIGNzcy9DU1NSZWZsZWN0VmFsdWUuY3Bw
IFwKQEAgLTEzODgsNiArMTM4OSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGNzcy9DU1NQcmltaXRp
dmVWYWx1ZS5oIFwKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZS5oIFwKICAgICBjc3Mv
Q1NTUHJvcGVydHkuaCBcCisgICAgY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmggXAogICAgIGNz
cy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmggXAogICAgIGNzcy9DU1NSZWZsZWN0VmFsdWUuaCBcCiAg
ICAgY3NzL0NTU1J1bGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IDlmOTlmOGIuLjI2M2JlMWEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zMTkwNiw2ICszMTkwNiwxNCBAQAogCQkJ
CT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTUHJv
cGVydHlDb250YWluZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxjc3NcQ1NTUHJvcGVydHlDb250YWluZXIuaCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1Byb3BlcnR5TG9uZ2hh
bmQuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzVmOTA2Li44MDA4ZTgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00
MTAsNiArNDEwLDggQEAKIAkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNv
ci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QjFBRTc4MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nICovOyB9OwogCQkxQUIx
QUU3QjBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFBRTc5MEMwNTFGREUwMDEzOUY0
RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyAqLzsgfTsKIAkJMUFCMzNEQTUxMjU1MUUzMjAwMjQ0NTdB
IC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBQjMzREE0MTI1NTFFMzIwMDI0NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsg
Ki87IH07CisJCTFBQjQ0QTBDMTM2NzJDRkYwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5l
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI0
NEEwQjEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuY3BwICovOyB9Owor
CQkxQUI0NEEwRTEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjQ0QTBEMTM2NzJE
MjAwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5oICovOyB9OwogCQkxQUI3RkM2ODBB
OEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0ZDNDcwQThCOTJFQzAwRDlEMzdCIC8qIFhQ
YXRoRXZhbHVhdG9yLmNwcCAqLzsgfTsKIAkJMUFCN0ZDNjkwQThCOTJFQzAwRDlEMzdCIC8qIFhQ
YXRoRXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUI3RkM0ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCAqLzsgfTsK
IAkJMUFCN0ZDNkIwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RkM0QTBBOEI5MkVD
MDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9uLmNwcCAqLzsgfTsKQEAgLTY4MzQsNiArNjgzNiw4
IEBACiAJCTFBQjFBRTc4MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBw
YXRoID0gem9vbUluQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFC
MUFFNzkwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gem9v
bU91dEN1cnNvci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjMzREE0MTI1
NTFFMzIwMDI0NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPS2l0
LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1l
d29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJMUFCNDRBMEIxMzY3MkNGRjAw
MDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUFCNDRBMEQxMzY3MkQyMDAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29u
dGFpbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1Byb3BlcnR5Q29u
dGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjdGQzQ3MEE4QjkyRUMw
MEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gWFBhdGhFdmFsdWF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQUI3RkM0ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQYXRoRXZhbHVhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQjdGQzQ5MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1
YXRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFhQYXRoRXZhbHVhdG9yLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NzY0LDYgKzE4NzY4LDggQEAKIAkJRjUyM0Qx
ODQwMkRFNDJFODAxODYzNUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJMUFCNDRBMEQxMzY3MkQyMDAwMDg3NzdFIC8qIENTU1Byb3BlcnR5
Q29udGFpbmVyLmggKi8sCisJCQkJMUFCNDRBMEIxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1Byb3Bl
cnR5Q29udGFpbmVyLmNwcCAqLywKIAkJCQk5M0NBNEM5QzA5REY5M0ZBMDBERjg2NzcgLyogbWFr
ZXRva2VuaXplciAqLywKIAkJCQlBODBFNkNEQTBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5o
ICovLAogCQkJCTkzMDcwNUM3MDlFMEM5NUYwMEIxN0ZFNCAvKiBDb3VudGVyLmlkbCAqLywKQEAg
LTIyODM2LDYgKzIyODQyLDcgQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNM
VFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMz
NzkgLyogWFNTRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAw
MDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBQjQ0QTBFMTM2NzJEMjAw
MDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTUx
Miw2ICsyNTUxOSw3IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmlj
b2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkg
LyogWFNTRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAw
OERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQUI0NEEwQzEzNjcyQ0ZG
MDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueQppbmRleCA0NWYyNjgzLi5jMzRkZGFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkKQEAgLTMyMyw5ICszMjMsOSBAQCB3ZWJraXRfdmFsdWU6CiAgICAgICAgIENTU1Bh
cnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgIGlmICgk
NCkgewogICAgICAgICAgICAgcC0+bV92YWx1ZUxpc3QgPSBwLT5zaW5rRmxvYXRpbmdWYWx1ZUxp
c3QoJDQpOwotICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwLT5tX251bVBh
cnNlZFByb3BlcnRpZXM7CisgICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAt
Pm1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpOwogICAgICAgICAgICAgaWYgKCFwLT5wYXJzZVZh
bHVlKHAtPm1faWQsIHAtPm1faW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICBwLT5yb2xsYmFj
a0xhc3RQcm9wZXJ0aWVzKHAtPm1fbnVtUGFyc2VkUHJvcGVydGllcyAtIG9sZFBhcnNlZFByb3Bl
cnRpZXMpOworICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9w
YXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKICAgICAgICAg
ICAgIGRlbGV0ZSBwLT5tX3ZhbHVlTGlzdDsKICAgICAgICAgICAgIHAtPm1fdmFsdWVMaXN0ID0g
MDsKICAgICAgICAgfQpAQCAtMTI3MywxMCArMTI3MywxMCBAQCBkZWNsYXJhdGlvbjoKICAgICAg
ICAgYm9vbCBpc1Byb3BlcnR5UGFyc2VkID0gZmFsc2U7CiAgICAgICAgIGlmICgkMSAmJiAkNCkg
ewogICAgICAgICAgICAgcC0+bV92YWx1ZUxpc3QgPSBwLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3Qo
JDQpOwotICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwLT5tX251bVBhcnNl
ZFByb3BlcnRpZXM7CisgICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1f
cGFyc2VkUHJvcGVydGllcy5jb3VudCgpOwogICAgICAgICAgICAgJCQgPSBwLT5wYXJzZVZhbHVl
KCQxLCAkNSk7CiAgICAgICAgICAgICBpZiAoISQkKQotICAgICAgICAgICAgICAgIHAtPnJvbGxi
YWNrTGFzdFByb3BlcnRpZXMocC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gb2xkUGFyc2VkUHJv
cGVydGllcyk7CisgICAgICAgICAgICAgICAgcC0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwLT5t
X3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOwogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGlzUHJvcGVydHlQYXJzZWQgPSB0cnVlOwogICAg
ICAgICAgICAgZGVsZXRlIHAtPm1fdmFsdWVMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApp
bmRleCAxMDgzN2FkLi5kMDFhNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTM3
LDE0ICsxMzcsMTAgQEAgQ1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQYXJzaW5nKQog
ICAgICwgbV9pZCgwKQogICAgICwgbV9zdHlsZVNoZWV0KDApCiAgICAgLCBtX3ZhbHVlTGlzdCgw
KQotICAgICwgbV9wYXJzZWRQcm9wZXJ0aWVzKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5Kio+KGZh
c3RNYWxsb2MoMzIgKiBzaXplb2YoQ1NTUHJvcGVydHkqKSkpKQotICAgICwgbV9udW1QYXJzZWRQ
cm9wZXJ0aWVzKDApCi0gICAgLCBtX21heFBhcnNlZFByb3BlcnRpZXMoMzIpCiAgICAgLCBtX251
bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3goSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BF
UlRJRVMpCiAgICAgLCBtX2luUGFyc2VTaG9ydGhhbmQoMCkKICAgICAsIG1fY3VycmVudFNob3J0
aGFuZCgwKQogICAgICwgbV9pbXBsaWNpdFNob3J0aGFuZChmYWxzZSkKLSAgICAsIG1faGFzRm9u
dEZhY2VPbmx5VmFsdWVzKGZhbHNlKQogICAgICwgbV9oYWRTeW50YWN0aWNhbGx5VmFsaWRDU1NS
dWxlKGZhbHNlKQogICAgICwgbV9kZWZhdWx0TmFtZXNwYWNlKHN0YXJBdG9tKQogICAgICwgbV9p
blN0eWxlUnVsZU9yRGVjbGFyYXRpb24oZmFsc2UpCkBAIC0xNjgsOSArMTY0LDYgQEAgQ1NTUGFy
c2VyOjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQYXJzaW5nKQogCiBDU1NQYXJzZXI6On5DU1NQYXJz
ZXIoKQogewotICAgIGNsZWFyUHJvcGVydGllcygpOwotICAgIGZhc3RGcmVlKG1fcGFyc2VkUHJv
cGVydGllcyk7Ci0KICAgICBkZWxldGUgbV92YWx1ZUxpc3Q7CiAKICAgICBmYXN0RnJlZShtX2Rh
dGEpOwpAQCAtNDMxLDExICs0MjQsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHkKICAgICBt
X3J1bGUgPSAwOwogCiAgICAgYm9vbCBvayA9IGZhbHNlOwotICAgIGlmIChtX2hhc0ZvbnRGYWNl
T25seVZhbHVlcykKLSAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0gICAgaWYg
KG1fbnVtUGFyc2VkUHJvcGVydGllcykgeworICAgIGlmIChtX3BhcnNlZFByb3BlcnRpZXMuaGFz
Rm9udEZhY2VPbmx5KCkpCisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5kZWxldGVGb250RmFj
ZU9ubHlQcm9wZXJ0aWVzKCk7CisgICAgaWYgKG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpKSB7
CiAgICAgICAgIG9rID0gdHJ1ZTsKLSAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3Bl
cnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpOworICAgICAg
ICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMuZGF0
YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSk7CiAgICAgICAgIGNsZWFyUHJvcGVydGll
cygpOwogICAgIH0KIApAQCAtNDU3LDcgKzQ1MCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNv
bG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIHN0cmljdCkKICAg
ICBpZiAoIXBhcnNlci5wYXJzZUNvbG9yKGR1bW15U3R5bGVEZWNsYXJhdGlvbi5nZXQoKSwgc3Ry
aW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ1NTVmFsdWUqIHZhbHVlID0gcGFy
c2VyLm1fcGFyc2VkUHJvcGVydGllc1swXS0+dmFsdWUoKTsKKyAgICBDU1NWYWx1ZSogdmFsdWUg
PSBwYXJzZXIubV9wYXJzZWRQcm9wZXJ0aWVzLmZpcnN0KCkudmFsdWUoKTsKICAgICBpZiAodmFs
dWUtPmNzc1ZhbHVlVHlwZSgpICE9IENTU1ZhbHVlOjpDU1NfUFJJTUlUSVZFX1ZBTFVFKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQ3OCw3ICs0NzEsNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VDb2xvcihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRpb24sIGNvbnN0
IFN0cmluZwogICAgIGNzc3l5cGFyc2UodGhpcyk7CiAgICAgbV9ydWxlID0gMDsKIAotICAgIHJl
dHVybiAobV9udW1QYXJzZWRQcm9wZXJ0aWVzICYmIG1fcGFyc2VkUHJvcGVydGllc1swXS0+bV9p
ZCA9PSBDU1NQcm9wZXJ0eUNvbG9yKTsKKyAgICByZXR1cm4gKG1fcGFyc2VkUHJvcGVydGllcy5j
b3VudCgpICYmIG1fcGFyc2VkUHJvcGVydGllcy5maXJzdCgpLmlkKCkgPT0gQ1NTUHJvcGVydHlD
b2xvcik7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVN5c3RlbUNvbG9yKFJHQkEzMiYgY29s
b3IsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC01MzIsMTEg
KzUyNSwxMSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRpb24sIGNvbnN0CiAgICAgbV9ydWxlID0gMDsKIAogICAg
IGJvb2wgb2sgPSBmYWxzZTsKLSAgICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpCi0gICAg
ICAgIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotICAgIGlmIChtX251bVBhcnNlZFByb3Bl
cnRpZXMpIHsKKyAgICBpZiAobV9wYXJzZWRQcm9wZXJ0aWVzLmhhc0ZvbnRGYWNlT25seSgpKQor
ICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMuZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygp
OworICAgIGlmIChtX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSkgewogICAgICAgICBvayA9IHRy
dWU7Ci0gICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJv
cGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgZGVjbGFyYXRpb24tPmFk
ZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9w
ZXJ0aWVzLmNvdW50KCkpOwogICAgICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICB9CiAKQEAg
LTU3OCwzNiArNTcxLDIwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZU1lZGlhUXVlcnkoTWVkaWFM
aXN0KiBxdWVyaWVzLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gb2s7CiB9CiAK
LQogdm9pZCBDU1NQYXJzZXI6OmFkZFByb3BlcnR5KGludCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCkKIHsKLSAgICBPd25QdHI8Q1NTUHJvcGVydHk+
IHByb3AoYWRvcHRQdHIobmV3IENTU1Byb3BlcnR5KHByb3BJZCwgdmFsdWUsIGltcG9ydGFudCwg
bV9jdXJyZW50U2hvcnRoYW5kLCBtX2ltcGxpY2l0U2hvcnRoYW5kKSkpOwotICAgIGlmIChtX251
bVBhcnNlZFByb3BlcnRpZXMgPj0gbV9tYXhQYXJzZWRQcm9wZXJ0aWVzKSB7Ci0gICAgICAgIG1f
bWF4UGFyc2VkUHJvcGVydGllcyArPSAzMjsKLSAgICAgICAgaWYgKG1fbWF4UGFyc2VkUHJvcGVy
dGllcyA+IFVJTlRfTUFYIC8gc2l6ZW9mKENTU1Byb3BlcnR5KikpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIG1fcGFyc2VkUHJvcGVydGllcyA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5
Kio+KGZhc3RSZWFsbG9jKG1fcGFyc2VkUHJvcGVydGllcywKLSAgICAgICAgICAgIG1fbWF4UGFy
c2VkUHJvcGVydGllcyAqIHNpemVvZihDU1NQcm9wZXJ0eSopKSk7Ci0gICAgfQotICAgIG1fcGFy
c2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMrK10gPSBwcm9wLmxlYWtQdHIoKTsK
KyAgICBtX3BhcnNlZFByb3BlcnRpZXMuYWRkUHJvcGVydHkocHJvcElkLCB2YWx1ZSwgaW1wb3J0
YW50LCBtX2N1cnJlbnRTaG9ydGhhbmQsIG1faW1wbGljaXRTaG9ydGhhbmQpOwogfQogCiB2b2lk
IENTU1BhcnNlcjo6cm9sbGJhY2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKQogewotICAgIEFTU0VS
VChudW0gPj0gMCk7Ci0gICAgQVNTRVJUKG1fbnVtUGFyc2VkUHJvcGVydGllcyA+PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obnVtKSk7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bTsgKytp
KQotICAgICAgICBkZWxldGUgbV9wYXJzZWRQcm9wZXJ0aWVzWy0tbV9udW1QYXJzZWRQcm9wZXJ0
aWVzXTsKKyAgICBtX3BhcnNlZFByb3BlcnRpZXMucm9sbGJhY2tMYXN0UHJvcGVydGllcyhudW0p
OwogfQogCiB2b2lkIENTU1BhcnNlcjo6Y2xlYXJQcm9wZXJ0aWVzKCkKIHsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGRl
bGV0ZSBtX3BhcnNlZFByb3BlcnRpZXNbaV07Ci0gICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzID0g
MDsKKyAgICBtX3BhcnNlZFByb3BlcnRpZXMuY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgbV9udW1Q
YXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BF
UlRJRVM7Ci0gICAgbV9oYXNGb250RmFjZU9ubHlWYWx1ZXMgPSBmYWxzZTsKIH0KICAgICAKIHZv
aWQgQ1NTUGFyc2VyOjpzZXRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCkBA
IC04ODgsNyArODY1LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpCiAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIHByb3BJ
ZCk7CiAgICAgICAgIGlmIChudW0gIT0gMSB8fCAhcGFyc2VWYWx1ZShDU1NQcm9wZXJ0eU92ZXJm
bG93WCwgaW1wb3J0YW50KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgQ1NT
VmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcyAt
IDFdLT52YWx1ZSgpOworICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRp
ZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5T3ZlcmZs
b3dZLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
OTgxLDcgKzk1OCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQogICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NT
UHJvcGVydHlCb3JkZXJTcGFjaW5nKTsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9w
ZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNl
ZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBt
X3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0
eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CkBAIC0xNjM0LDcgKzE2MTEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIFNob3J0aGFu
ZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpOwogICAg
ICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0g
bV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKKyAg
ICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFs
dWUoKTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBv
cnRhbnQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTI0MDgsNyAr
MjM4NSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3Qg
aW50ICpwcm9wZXJ0aWVzLCAgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNhc2UgMTogewogICAg
ICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0g
bV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKKyAg
ICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFs
dWUoKTsKICAgICAgICAgICAgIG1faW1wbGljaXRTaG9ydGhhbmQgPSB0cnVlOwogICAgICAgICAg
ICAgYWRkUHJvcGVydHkocHJvcGVydGllc1sxXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAg
ICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzJdLCB2YWx1ZSwgaW1wb3J0YW50KTsKQEAgLTI0
MTksMTAgKzIzOTYsMTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyhpbnQgcHJvcElk
LCBjb25zdCBpbnQgKnByb3BlcnRpZXMsICBib29sIGltcG9ydGFudCkKICAgICAgICAgY2FzZSAy
OiB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50
KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2Vk
UHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZhbHVlKCk7CisgICAgICAgICAg
ICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdEJ1dE9uZSgpLnZhbHVl
KCk7CiAgICAgICAgICAgICBtX2ltcGxpY2l0U2hvcnRoYW5kID0gdHJ1ZTsKICAgICAgICAgICAg
IGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMl0sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAg
ICAgdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52
YWx1ZSgpOworICAgICAgICAgICAgdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdEJ1dE9u
ZSgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzNdLCB2YWx1
ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIG1faW1wbGljaXRTaG9ydGhhbmQgPSBmYWxzZTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQzMCw3ICsyNDA3LDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlNFZhbHVlcyhpbnQgcHJvcElkLCBjb25zdCBpbnQgKnByb3BlcnRpZXMsICBib29sIGlt
cG9ydGFudCkKICAgICAgICAgY2FzZSAzOiB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUo
cHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBp
bXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMl0sIGltcG9ydGFudCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0g
bV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKKyAg
ICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0QnV0T25l
KCkudmFsdWUoKTsKICAgICAgICAgICAgIG1faW1wbGljaXRTaG9ydGhhbmQgPSB0cnVlOwogICAg
ICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1szXSwgdmFsdWUsIGltcG9ydGFudCk7CiAg
ICAgICAgICAgICBtX2ltcGxpY2l0U2hvcnRoYW5kID0gZmFsc2U7CkBAIC0zNzk5LDcgKzM3NzYs
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGb250U3R5bGUoYm9vbCBpbXBvcnRhbnQpCiAgICAg
fQogCiAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAgIG1faGFz
Rm9udEZhY2VPbmx5VmFsdWVzID0gdHJ1ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnNl
dEZvbnRGYWNlT25seSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHls
ZSwgdmFsdWVzLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpAQCAtMzg0Niw3ICszODIzLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFZhcmlh
bnQoYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogCiAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMtPmxl
bmd0aCgpKSB7Ci0gICAgICAgIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzID0gdHJ1ZTsKKyAgICAg
ICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnNldEZvbnRGYWNlT25seSgpOwogICAgICAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBvcnRhbnQp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zODk5LDcgKzM4NzYsNyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VGb250V2VpZ2h0KGJvb2wgaW1wb3J0YW50KQogICAgIH0KIAogICAg
IGlmICh2YWx1ZXMgJiYgdmFsdWVzLT5sZW5ndGgoKSkgewotICAgICAgICBtX2hhc0ZvbnRGYWNl
T25seVZhbHVlcyA9IHRydWU7CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5zZXRGb250RmFj
ZU9ubHkoKTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCB2YWx1
ZXMucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC02MzA2LDkgKzYyODMsOSBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShW
ZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcgogICAgICAgICBtX2Fs
bG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zID0gZmFsc2U7CiAg
ICAgICAgIFJlZlB0cjxDU1NTdHlsZVJ1bGU+IHJ1bGUgPSBDU1NTdHlsZVJ1bGU6OmNyZWF0ZSht
X3N0eWxlU2hlZXQsIG1fbGFzdFNlbGVjdG9yTGluZU51bWJlcik7CiAgICAgICAgIHJ1bGUtPmFk
b3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7Ci0gICAgICAgIGlmIChtX2hhc0ZvbnRGYWNl
T25seVZhbHVlcykKLSAgICAgICAgICAgIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotICAg
ICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3Jl
YXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVz
KSk7CisgICAgICAgIGlmIChtX3BhcnNlZFByb3BlcnRpZXMuaGFzRm9udEZhY2VPbmx5KCkpCisg
ICAgICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMuZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGll
cygpOworICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCksIG1fcGFy
c2VkUHJvcGVydGllcy5jb3VudCgpKSk7CiAgICAgICAgIHJlc3VsdCA9IHJ1bGUuZ2V0KCk7CiAg
ICAgICAgIG1fcGFyc2VkU3R5bGVPYmplY3RzLmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CiAgICAg
ICAgIGlmIChtX3J1bGVSYW5nZU1hcCkgewpAQCAtNjMzMCw4ICs2MzA3LDExIEBAIENTU1J1bGUq
IENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+ID4qIHNlbGVjdG9yCiBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSgp
CiB7CiAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9u
cyA9IGZhbHNlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBhcnNlZFByb3Bl
cnRpZXM7ICsraSkgewotICAgICAgICBDU1NQcm9wZXJ0eSogcHJvcGVydHkgPSBtX3BhcnNlZFBy
b3BlcnRpZXNbaV07CisKKyAgICBDU1NQcm9wZXJ0eSogY29uc3QqIHBhcnNlZFByb3BlcnRpZXMg
PSBtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpOyArK2kpIHsKKyAgICAgICAgQ1NTUHJvcGVy
dHkqIHByb3BlcnR5ID0gcGFyc2VkUHJvcGVydGllc1tpXTsKICAgICAgICAgaW50IGlkID0gcHJv
cGVydHktPmlkKCk7CiAgICAgICAgIGlmICgoaWQgPT0gQ1NTUHJvcGVydHlGb250V2VpZ2h0IHx8
IGlkID09IENTU1Byb3BlcnR5Rm9udFN0eWxlIHx8IGlkID09IENTU1Byb3BlcnR5Rm9udFZhcmlh
bnQpICYmIHByb3BlcnR5LT52YWx1ZSgpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKICAgICAgICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBwcm9wZXJ0eS0+bV92YWx1ZS5yZWxlYXNlKCk7
CkBAIC02MzQ2LDggKzYzMjYsOSBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNl
UnVsZSgpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KKwogICAgIFJl
ZlB0cjxDU1NGb250RmFjZVJ1bGU+IHJ1bGUgPSBDU1NGb250RmFjZVJ1bGU6OmNyZWF0ZShtX3N0
eWxlU2hlZXQpOwotICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNl
ZFByb3BlcnRpZXMpKTsKKyAgICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIHBhcnNlZFByb3BlcnRpZXMsIG1fcGFyc2Vk
UHJvcGVydGllcy5jb3VudCgpKSk7CiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgQ1NTRm9u
dEZhY2VSdWxlKiByZXN1bHQgPSBydWxlLmdldCgpOwogICAgIG1fcGFyc2VkU3R5bGVPYmplY3Rz
LmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CkBAIC02NDIxLDcgKzY0MDIsNyBAQCBDU1NSdWxlKiBD
U1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKFBhc3NPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHBh
Z2VTZWxlY3RvcikKICAgICAgICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBz
ZWxlY3RvclZlY3RvcjsKICAgICAgICAgc2VsZWN0b3JWZWN0b3IuYXBwZW5kKHBhZ2VTZWxlY3Rv
cik7CiAgICAgICAgIHJ1bGUtPmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOwot
ICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6
Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0
aWVzKSk7CisgICAgICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9w
YXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkpKTsKICAgICAgICAgcGFnZVJ1bGUgPSBydWxlLmdldCgp
OwogICAgICAgICBtX3BhcnNlZFN0eWxlT2JqZWN0cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwog
ICAgIH0KQEAgLTY0NDIsMzQgKzY0MjMsMTYgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVN
YXJnaW5BdFJ1bGUoQ1NTU2VsZWN0b3I6Ok1hcmdpbkJveFR5cGUgLyogbWFyZ2luQm94ICoKIAog
dm9pZCBDU1NQYXJzZXI6OnN0YXJ0RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCkKIHsKLSAgICBt
X251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3ggPSBtX251bVBhcnNlZFByb3BlcnRp
ZXM7CisgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gbV9wYXJzZWRQ
cm9wZXJ0aWVzLmNvdW50KCk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjplbmREZWNsYXJhdGlvbnNG
b3JNYXJnaW5Cb3goKQogewogICAgIEFTU0VSVChtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVN
YXJnaW5Cb3ggIT0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVMpOwotICAgIHJvbGxiYWNr
TGFzdFByb3BlcnRpZXMobV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gbV9udW1QYXJzZWRQcm9wZXJ0
aWVzQmVmb3JlTWFyZ2luQm94KTsKKyAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKG1fcGFyc2Vk
UHJvcGVydGllcy5jb3VudCgpIC0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94
KTsKICAgICBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3ggPSBJTlZBTElEX05V
TV9QQVJTRURfUFJPUEVSVElFUzsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OmRlbGV0ZUZvbnRGYWNl
T25seVZhbHVlcygpCi17Ci0gICAgQVNTRVJUKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKTsKLSAg
ICBpbnQgZGVsZXRlZFByb3BlcnRpZXMgPSAwOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fbnVtUGFyc2VkUHJvcGVydGllczsgKytpKSB7Ci0gICAgICAgIENTU1Byb3BlcnR5KiBw
cm9wZXJ0eSA9IG1fcGFyc2VkUHJvcGVydGllc1tpXTsKLSAgICAgICAgaW50IGlkID0gcHJvcGVy
dHktPmlkKCk7Ci0gICAgICAgIGlmICgoaWQgPT0gQ1NTUHJvcGVydHlGb250V2VpZ2h0IHx8IGlk
ID09IENTU1Byb3BlcnR5Rm9udFN0eWxlIHx8IGlkID09IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQp
ICYmIHByb3BlcnR5LT52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpKSB7Ci0gICAgICAgICAgICBkZWxl
dGUgcHJvcGVydHk7Ci0gICAgICAgICAgICBkZWxldGVkUHJvcGVydGllcysrOwotICAgICAgICB9
IGVsc2UgaWYgKGRlbGV0ZWRQcm9wZXJ0aWVzKQotICAgICAgICAgICAgbV9wYXJzZWRQcm9wZXJ0
aWVzW2kgLSBkZWxldGVkUHJvcGVydGllc10gPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07Ci0gICAg
fQotCi0gICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzIC09IGRlbGV0ZWRQcm9wZXJ0aWVzOwotfQot
CiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqIENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKENT
U1BhcnNlclZhbHVlTGlzdCoga2V5cykKIHsKICAgICAvLyBDcmVhdGUgYSBrZXkgc3RyaW5nIGZy
b20gdGhlIHBhc3NlZCBrZXlzCkBAIC02NDg0LDcgKzY0NDcsNyBAQCBXZWJLaXRDU1NLZXlmcmFt
ZVJ1bGUqIENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKENTU1BhcnNlclZhbHVlTGlzdCog
a2V5cykKIAogICAgIFJlZlB0cjxXZWJLaXRDU1NLZXlmcmFtZVJ1bGU+IGtleWZyYW1lID0gV2Vi
S2l0Q1NTS2V5ZnJhbWVSdWxlOjpjcmVhdGUobV9zdHlsZVNoZWV0KTsKICAgICBrZXlmcmFtZS0+
c2V0S2V5VGV4dChrZXlTdHJpbmcpOwotICAgIGtleWZyYW1lLT5zZXREZWNsYXJhdGlvbihDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKDAsIG1fcGFyc2VkUHJvcGVydGllcywgbV9u
dW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAga2V5ZnJhbWUtPnNldERlY2xhcmF0aW9uKENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoMCwgbV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEo
KSwgbV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkpKTsKIAogICAgIGNsZWFyUHJvcGVydGllcygp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggYTEyYTA5NC4uZmJlNjk4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiQ1NTR3JhZGllbnRW
YWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5oIgorI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgiCiAjaW5j
bHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDb2xvci5oIgpAQCAtNzQsNyArNzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBhZGRQcm9wZXJ0eShpbnQgcHJv
cElkLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQpOwogICAgICAgICB2b2lk
IHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSk7Ci0gICAgICAgIGJvb2wgaGFzUHJvcGVy
dGllcygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyc2VkUHJvcGVydGllcyA+IDA7IH0KKyAgICAg
ICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZWRQcm9wZXJ0aWVz
LmNvdW50KCkgPiAwOyB9CiAKICAgICAgICAgYm9vbCBwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KTsKICAgICAgICAgYm9vbCBwYXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBj
b25zdCBpbnQqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7
CkBAIC0yMzYsMTggKzIzNywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0
cjxDU1NSdWxlPiBtX2tleWZyYW1lOwogICAgICAgICBPd25QdHI8TWVkaWFRdWVyeT4gbV9tZWRp
YVF1ZXJ5OwogICAgICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIG1fdmFsdWVMaXN0OwotICAgICAg
ICBDU1NQcm9wZXJ0eSoqIG1fcGFyc2VkUHJvcGVydGllczsKKyAgICAgICAgQ1NTUHJvcGVydHlD
b250YWluZXIgbV9wYXJzZWRQcm9wZXJ0aWVzOwogICAgICAgICBDU1NTZWxlY3Rvckxpc3QqIG1f
c2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3RvcjsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlQ2FjaGU+IG1fcHJpbWl0aXZlVmFsdWVDYWNoZTsKLSAgICAgICAgdW5zaWduZWQgbV9u
dW1QYXJzZWRQcm9wZXJ0aWVzOwotICAgICAgICB1bnNpZ25lZCBtX21heFBhcnNlZFByb3BlcnRp
ZXM7CiAgICAgICAgIHVuc2lnbmVkIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJv
eDsKIAogICAgICAgICBpbnQgbV9pblBhcnNlU2hvcnRoYW5kOwogICAgICAgICBpbnQgbV9jdXJy
ZW50U2hvcnRoYW5kOwogICAgICAgICBib29sIG1faW1wbGljaXRTaG9ydGhhbmQ7CiAKLSAgICAg
ICAgYm9vbCBtX2hhc0ZvbnRGYWNlT25seVZhbHVlczsKICAgICAgICAgYm9vbCBtX2hhZFN5bnRh
Y3RpY2FsbHlWYWxpZENTU1J1bGU7CiAKICAgICAgICAgQXRvbWljU3RyaW5nIG1fZGVmYXVsdE5h
bWVzcGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0YTBiNjMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCkBAIC0wLDAg
KzEsMjYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAy
MDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAy
MDA5IC0gMjAxMCAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdlYmtp
dC5vcmc+LCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKKwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDU1NQ
cm9wZXJ0eUNvbnRhaW5lcjo6Q1NTUHJvcGVydHlDb250YWluZXIoc2l6ZV90IGluaXRpYWxDYXBh
Y2l0eSkKKyAgICA6IG1fcHJvcGVydGllcyhzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eSoqPihmYXN0
TWFsbG9jKGluaXRpYWxDYXBhY2l0eSAqIHNpemVvZihDU1NQcm9wZXJ0eSopKSkpCisgICAgLCBt
X251bVZhbGlkUHJvcGVydGllcygwKQorICAgICwgbV9zaXplKDApCisgICAgLCBtX2NhcGFjaXR5
KGluaXRpYWxDYXBhY2l0eSkKKyAgICAsIG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyhmYWxz
ZSkKK3sKK30KKworQ1NTUHJvcGVydHlDb250YWluZXI6On5DU1NQcm9wZXJ0eUNvbnRhaW5lcigp
Cit7CisgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CisgICAgc3dlZXAoKTsKKyAgICBmYXN0RnJlZSht
X3Byb3BlcnRpZXMpOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpncm93KCkKK3sK
KyAgICBpZiAobV9zaXplICsgMSA8IG1fY2FwYWNpdHkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChtX2NhcGFjaXR5ICsgMTYgPiBVSU5UX01BWCAvIHNpemVvZihDU1NQcm9wZXJ0eSopKQor
ICAgICAgICBDUkFTSCgpOworCisgICAgbV9jYXBhY2l0eSArPSAxNjsKKworICAgIG1fcHJvcGVy
dGllcyA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5Kio+KGZhc3RSZWFsbG9jKG1fcHJvcGVydGll
cywgbV9jYXBhY2l0eSAqIHNpemVvZihDU1NQcm9wZXJ0eSopKSk7Cit9CisKK3ZvaWQgQ1NTUHJv
cGVydHlDb250YWluZXI6OnN3ZWVwKCkKK3sKKyAgICBpZiAobV9udW1WYWxpZFByb3BlcnRpZXMg
PT0gbV9zaXplKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBkZWxldGVkUHJvcGVy
dGllcyA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKSB7Cisg
ICAgICAgIENTU1Byb3BlcnR5KiBwcm9wZXJ0eSA9IG1fcHJvcGVydGllc1tpXTsKKyAgICAgICAg
aWYgKCFwcm9wZXJ0eS0+aWQoKSkgeworICAgICAgICAgICAgZGVsZXRlIHByb3BlcnR5OworICAg
ICAgICAgICAgKytkZWxldGVkUHJvcGVydGllczsKKyAgICAgICAgfSBlbHNlIGlmIChkZWxldGVk
UHJvcGVydGllcykKKyAgICAgICAgICAgIG1fcHJvcGVydGllc1tpIC0gZGVsZXRlZFByb3BlcnRp
ZXNdID0gcHJvcGVydHk7CisgICAgfQorCisgICAgbV9zaXplIC09IGRlbGV0ZWRQcm9wZXJ0aWVz
OworCisgICAgQVNTRVJUKG1fbnVtVmFsaWRQcm9wZXJ0aWVzID09IG1fc2l6ZSk7Cit9CisKK2lu
bGluZSB2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjppbnZhbGlkYXRlQnlQb3NpdGlvbih1bnNp
Z25lZCBwb3NpdGlvbikKK3sKKyAgICBBU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOworCisgICAg
aWYgKFVOTElLRUxZKCFtX3Byb3BlcnRpZXNbcG9zaXRpb25dLT5pZCgpKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9udW1WYWxpZFByb3BlcnRpZXMtLTsKKyAgICBtX2lkVG9Qb3NpdGlvbk1h
cC5yZW1vdmUobV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS0+bV9pZCk7CisgICAgbV9wcm9wZXJ0aWVz
W3Bvc2l0aW9uXS0+bV9pZCA9IDA7Cit9CisKK2lubGluZSB2b2lkIENTU1Byb3BlcnR5Q29udGFp
bmVyOjppbnZhbGlkYXRlQnlJZChpbnQgcHJvcGVydHlJRCkKK3sKKyAgICBpZiAoIW1faWRUb1Bv
c2l0aW9uTWFwLmNvbnRhaW5zKHByb3BlcnR5SUQpKQorICAgICAgICByZXR1cm47CisKKyAgICB1
bnNpZ25lZCBwb3NpdGlvbiA9IG1faWRUb1Bvc2l0aW9uTWFwLmdldChwcm9wZXJ0eUlEKTsKKyAg
ICBpbnZhbGlkYXRlQnlQb3NpdGlvbihwb3NpdGlvbik7Cit9CisKK0NTU1Byb3BlcnR5KiBDU1NQ
cm9wZXJ0eUNvbnRhaW5lcjo6ZmluZFByb3BlcnR5V2l0aElkKGludCBwcm9wZXJ0eUlEKQorewor
ICAgIGlmICghbV9zaXplKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHVuc2lnbmVkIHBvc2l0
aW9uID0gbV9pZFRvUG9zaXRpb25NYXAuZ2V0KHByb3BlcnR5SUQpOworCisgICAgQVNTRVJUKHBv
c2l0aW9uIDwgbV9zaXplKTsKKworICAgIGlmIChVTkxJS0VMWSghbV9wcm9wZXJ0aWVzW3Bvc2l0
aW9uXS0+aWQoKSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fcHJvcGVydGll
c1twb3NpdGlvbl07Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5JiBDU1NQcm9wZXJ0eUNvbnRhaW5l
cjo6Zmlyc3QoKQoreworICAgIEFTU0VSVChtX251bVZhbGlkUHJvcGVydGllcyk7CisKKyAgICBp
ZiAoVU5MSUtFTFkoIW1fcHJvcGVydGllc1swXS0+aWQoKSkpCisgICAgICAgIHN3ZWVwKCk7CisK
KyAgICBBU1NFUlQobV9wcm9wZXJ0aWVzWzBdKTsKKworICAgIHJldHVybiAqbV9wcm9wZXJ0aWVz
WzBdOworfQorCitjb25zdCBDU1NQcm9wZXJ0eSYgQ1NTUHJvcGVydHlDb250YWluZXI6Omxhc3Qo
KQoreworICAgIEFTU0VSVChtX251bVZhbGlkUHJvcGVydGllcyk7CisKKyAgICBpZiAoVU5MSUtF
TFkoIW1fcHJvcGVydGllc1ttX3NpemUgLSAxXS0+aWQoKSkpCisgICAgICAgIHN3ZWVwKCk7CisK
KyAgICBBU1NFUlQobV9wcm9wZXJ0aWVzW21fc2l6ZSAtIDFdKTsKKworICAgIHJldHVybiAqbV9w
cm9wZXJ0aWVzW21fc2l6ZSAtIDFdOworfQorCitjb25zdCBDU1NQcm9wZXJ0eSYgQ1NTUHJvcGVy
dHlDb250YWluZXI6Omxhc3RCdXRPbmUoKQoreworICAgIEFTU0VSVChtX251bVZhbGlkUHJvcGVy
dGllcyA+PSAyKTsKKworICAgIGlmIChVTkxJS0VMWSghbV9wcm9wZXJ0aWVzW21fc2l6ZSAtIDFd
LT5pZCgpIHx8ICFtX3Byb3BlcnRpZXNbbV9zaXplIC0gMl0tPmlkKCkpKQorICAgICAgICBzd2Vl
cCgpOworCisgICAgQVNTRVJUKG1fcHJvcGVydGllc1ttX3NpemUgLSAyXSk7CisKKyAgICByZXR1
cm4gKm1fcHJvcGVydGllc1ttX3NpemUgLSAyXTsKK30KKworQ1NTUHJvcGVydHkqIGNvbnN0KiBD
U1NQcm9wZXJ0eUNvbnRhaW5lcjo6ZGF0YSgpCit7CisgICAgc3dlZXAoKTsKKyAgICByZXR1cm4g
bV9wcm9wZXJ0aWVzOworfQorCitib29sIENTU1Byb3BlcnR5Q29udGFpbmVyOjpjb250YWluc1By
b3BlcnR5KGludCBwcm9wZXJ0eUlEKSBjb25zdAoreworICAgIGlmICghbV9pZFRvUG9zaXRpb25N
YXAuY29udGFpbnMocHJvcGVydHlJRCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVu
c2lnbmVkIHBvc2l0aW9uID0gbV9pZFRvUG9zaXRpb25NYXAuZ2V0KHByb3BlcnR5SUQpOworCisg
ICAgQVNTRVJUKHBvc2l0aW9uIDwgbV9zaXplKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxi
b29sPihtX3Byb3BlcnRpZXNbcG9zaXRpb25dLT5pZCgpKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0
eUNvbnRhaW5lcjo6cmVtb3ZlUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCit7CisgICAgaW52YWxp
ZGF0ZUJ5SWQocHJvcGVydHlJRCk7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OnJl
bW92ZVByb3BlcnRpZXMoY29uc3QgaW50KiBpZExpc3QsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgIGludmFsaWRh
dGVCeUlkKGlkTGlzdFtpXSk7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OmFkZFBy
b3BlcnR5KGludCBwcm9wZXJ0eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBp
bXBvcnRhbnQsIGludCBzaG9ydGhhbmRJRCwgYm9vbCBpbXBsaWNpdCkKK3sKKyAgICBPd25QdHI8
Q1NTUHJvcGVydHk+IHByb3BlcnR5KGFkb3B0UHRyKG5ldyBDU1NQcm9wZXJ0eShwcm9wZXJ0eUlE
LCB2YWx1ZSwgaW1wb3J0YW50LCBzaG9ydGhhbmRJRCwgaW1wbGljaXQpKSk7CisKKyAgICBpZiAo
bV9zaXplICsgMSA+PSBtX2NhcGFjaXR5KSB7CisgICAgICAgIHN3ZWVwKCk7CisgICAgICAgIGdy
b3coKTsKKyAgICB9CisKKyAgICBpZiAoIW1faWRUb1Bvc2l0aW9uTWFwLmNvbnRhaW5zKHByb3Bl
cnR5SUQpKSB7CisgICAgICAgIG1fcHJvcGVydGllc1ttX3NpemUrK10gPSBwcm9wZXJ0eS5sZWFr
UHRyKCk7CisgICAgICAgIG1faWRUb1Bvc2l0aW9uTWFwLmFkZChwcm9wZXJ0eUlELCBtX3NpemUg
LSAxKTsKKyAgICAgICAgKyttX251bVZhbGlkUHJvcGVydGllczsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHVuc2lnbmVkIG9sZFBvc2l0aW9uID0gbV9pZFRvUG9zaXRpb25NYXAuZ2V0
KHByb3BlcnR5SUQpOworCisgICAgaWYgKG1fcHJvcGVydGllc1tvbGRQb3NpdGlvbl0tPmlkKCkg
JiYgbV9wcm9wZXJ0aWVzW29sZFBvc2l0aW9uXS0+aXNJbXBvcnRhbnQoKSAmJiAhaW1wb3J0YW50
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb3BlcnRpZXNbbV9zaXplKytdID0gcHJvcGVy
dHkubGVha1B0cigpOworICAgIG1faWRUb1Bvc2l0aW9uTWFwLnNldChwcm9wZXJ0eUlELCBtX3Np
emUgLSAxKTsKKworICAgIGlmIChtX3Byb3BlcnRpZXNbb2xkUG9zaXRpb25dLT5pZCgpKQorICAg
ICAgICBtX3Byb3BlcnRpZXNbb2xkUG9zaXRpb25dLT5tX2lkID0gMDsKKyAgICBlbHNlCisgICAg
ICAgICsrbV9udW1WYWxpZFByb3BlcnRpZXM7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWlu
ZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSkKK3sKKyAgICBpZiAoIW51bSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG51bSA+IDApOworICAgIEFTU0VSVChtX251bVZh
bGlkUHJvcGVydGllcyA+PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtKSk7CisKKyAgICBpbnQg
ZGVsZXRlZFByb3BlcnRpZXMgPSAwOworICAgIGludCBwb3NpdGlvbiA9IG1fc2l6ZTsKKyAgICB3
aGlsZSAoZGVsZXRlZFByb3BlcnRpZXMgIT0gbnVtICYmIC0tcG9zaXRpb24gPj0gMCkgeworICAg
ICAgICBpZiAobV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS0+aWQoKSkgeworICAgICAgICAgICAgaW52
YWxpZGF0ZUJ5UG9zaXRpb24ocG9zaXRpb24pOworICAgICAgICAgICAgKytkZWxldGVkUHJvcGVy
dGllczsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6
ZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygpCit7CisgICAgQVNTRVJUKG1faGFzRm9udEZh
Y2VPbmx5UHJvcGVydGllcyk7CisKKyAgICBpbnQgaWRzWzNdID0ge0NTU1Byb3BlcnR5Rm9udFdl
aWdodCwgQ1NTUHJvcGVydHlGb250U3R5bGUsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnR9OworCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpIHsKKyAgICAgICAgaWYgKCFtX2lkVG9Qb3Np
dGlvbk1hcC5jb250YWlucyhpZHNbaV0pKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgdW5zaWduZWQgcG9zaXRpb24gPSBtX2lkVG9Qb3NpdGlvbk1hcC5nZXQoaWRzW2ldKTsKKwor
ICAgICAgICBBU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOworCisgICAgICAgIGlmIChVTkxJS0VM
WSghbV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS0+aWQoKSkpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBpZiAobV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS0+dmFsdWUoKS0+aXNWYWx1ZUxp
c3QoKSkKKyAgICAgICAgICAgIGludmFsaWRhdGVCeVBvc2l0aW9uKHBvc2l0aW9uKTsKKyAgICB9
CisgICAgbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzID0gZmFsc2U7Cit9CisKK3ZvaWQgQ1NT
UHJvcGVydHlDb250YWluZXI6OmNsZWFyUHJvcGVydGllcygpCit7CisgICAgbV9oYXNGb250RmFj
ZU9ubHlQcm9wZXJ0aWVzID0gZmFsc2U7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9zaXplOyArK2kpCisgICAgICAgIGludmFsaWRhdGVCeVBvc2l0aW9uKGkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydHlDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5l
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiNzQ4ZmQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaApAQCAt
MCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4
LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChD
KSAyMDA5IC0gMjAxMCAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdl
YmtpdC5vcmc+LCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENTU1Byb3BlcnR5Q29udGFp
bmVyX2gKKyNkZWZpbmUgQ1NTUHJvcGVydHlDb250YWluZXJfaAorCisjaW5jbHVkZSAiQ1NTUHJv
cGVydHkuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVk
ZWYgSGFzaE1hcDxpbnQsIHVuc2lnbmVkPiBDU1NQcm9wZXJ0eUlkUG9zaXRpb25NYXA7CisKK2Ns
YXNzIENTU1Byb3BlcnR5Q29udGFpbmVyIHsKK3B1YmxpYzoKKyAgICBDU1NQcm9wZXJ0eUNvbnRh
aW5lcihzaXplX3QgaW5pdGlhbENhcGFjaXR5ID0gNjQpOworICAgIH5DU1NQcm9wZXJ0eUNvbnRh
aW5lcigpOworICAgIGNvbnN0IENTU1Byb3BlcnR5JiBmaXJzdCgpOworICAgIGNvbnN0IENTU1By
b3BlcnR5JiBsYXN0KCk7CisgICAgY29uc3QgQ1NTUHJvcGVydHkmIGxhc3RCdXRPbmUoKTsKKyAg
ICBDU1NQcm9wZXJ0eSogZmluZFByb3BlcnR5V2l0aElkKGludCBwcm9wZXJ0eUlEKTsKKyAgICBD
U1NQcm9wZXJ0eSogY29uc3QqIGRhdGEoKTsKKworICAgIGlubGluZSB1bnNpZ25lZCBjb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fbnVtVmFsaWRQcm9wZXJ0aWVzOyB9CisgICAgaW5saW5lIGJvb2wg
aGFzRm9udEZhY2VPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0
aWVzOyB9CisgICAgaW5saW5lIHZvaWQgc2V0Rm9udEZhY2VPbmx5KCkgeyBtX2hhc0ZvbnRGYWNl
T25seVByb3BlcnRpZXMgPSB0cnVlOyB9CisKKyAgICBib29sIGNvbnRhaW5zUHJvcGVydHkoaW50
IHByb3BlcnR5SUQpIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlUHJvcGVydHkoaW50IHByb3BlcnR5
SUQpOworICAgIHZvaWQgcmVtb3ZlUHJvcGVydGllcyhjb25zdCBpbnQqIGlkTGlzdCwgdW5zaWdu
ZWQgbGVuZ3RoKTsKKyAgICB2b2lkIGFkZFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQsIGludCBzaG9ydGhhbmRJRCA9IDAsIGJvb2wg
aW1wbGljaXQgPSBmYWxzZSk7CisgICAgdm9pZCByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKGludCBu
dW0pOworICAgIHZvaWQgZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygpOworICAgIHZvaWQg
Y2xlYXJQcm9wZXJ0aWVzKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBncm93KCk7CisgICAgdm9p
ZCBzd2VlcCgpOworICAgIGlubGluZSB2b2lkIGludmFsaWRhdGVCeVBvc2l0aW9uKHVuc2lnbmVk
IHBvc2l0aW9uKTsKKyAgICBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlQnlJZChpbnQgcHJvcGVydHlJ
RCk7CisKKyAgICBDU1NQcm9wZXJ0eSoqIG1fcHJvcGVydGllczsKKyAgICBDU1NQcm9wZXJ0eUlk
UG9zaXRpb25NYXAgbV9pZFRvUG9zaXRpb25NYXA7CisgICAgdW5zaWduZWQgbV9udW1WYWxpZFBy
b3BlcnRpZXM7CisgICAgdW5zaWduZWQgbV9zaXplOworICAgIHVuc2lnbmVkIG1fY2FwYWNpdHk7
CisgICAgYm9vbCBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXMgOiAxOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTUHJvcGVydHlDb250YWluZXJfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAppbmRleCA0N2Y5ODQ1Li4zMjcwMjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNT
U0luaXRpYWxWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1By
b3BlcnR5LmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJD
U1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZS5oIgog
I2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKQEAgLTI4Miw3ICsyODMsNyBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VTVkdWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAg
ICAgICAgIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoMSk7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KLSAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0
aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcyAtIDFdLT52YWx1ZSgpOworICAgICAgICBDU1NWYWx1
ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5TWFya2VyTWlkLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJrZXJFbmQsIHZhbHVlLCBpbXBvcnRhbnQpOwog
ICAgICAgICBtX2ltcGxpY2l0U2hvcnRoYW5kID0gZmFsc2U7Ci0tIAoxLjcuNS4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99473</attachid>
            <date>2011-07-01 08:36:37 -0700</date>
            <delta_ts>2011-07-01 08:39:34 -0700</delta_ts>
            <desc>proposed patch v2</desc>
            <filename>0001-CSSParser-should-use-custom-vector-like-class-for-ma.patch</filename>
            <type>text/plain</type>
            <size>44685</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSBiNjdiMjhjNmM2MjMzMWJmNGFjNjgwZjQxNTg3NDJlZGIwNGY4MTJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPgpEYXRl
OiBGcmksIDEgSnVsIDIwMTEgMTc6MjU6NDUgKzAyMDAKU3ViamVjdDogW1BBVENIXSBDU1NQYXJz
ZXIgc2hvdWxkIHVzZSBjdXN0b20gdmVjdG9yLWxpa2UgY2xhc3MgZm9yIG1hbmFnaW5nCiBwcm9w
ZXJ0aWVzCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAg
ICAgICAgfCAgICAxICsKIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDc4ICsrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qICAgICAgfCAgICA4ICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgfCAgICA4ICsKIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkgICAgICAgICAgICAgICAgICAgfCAgICA4ICstCiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwIHwgICAxOCArKy0KIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oICAgfCAgICA5ICstCiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCAgICAgICAgICAgICAgICAgIHwgIDEwOSArKyst
LS0tLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCAgICAgICAgICAgICAgICAgICAg
fCAgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaCAgICAgICAgICAgICAg
ICAgIHwgICAgNCArCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3Bw
ICAgICAgIHwgIDI1NiArKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eUNvbnRhaW5lci5oICAgICAgICAgfCAgIDc1ICsrKysrKwogU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgICAgICAgICAgICAgICB8ICAgIDMgKy0KIDE2IGZpbGVz
IGNoYW5nZWQsIDUwMCBpbnNlcnRpb25zKCspLCA5MSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmgK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDU4ZTc1MjAuLmVmNDU0MDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC00NTIsNiArNDUyLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGNzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHAKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZS5jcHAK
ICAgICBjc3MvQ1NTUHJvcGVydHkuY3BwCisgICAgY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNw
cAogICAgIGNzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAogICAgIGNzcy9DU1NQcm9wZXJ0eVNv
dXJjZURhdGEuY3BwCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDUwMmU5Li5iNWI5MzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIwMTEtMDctMDEg
IEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENTU1BhcnNlciBzaG91bGQgdXNlIGN1c3RvbSAi
dmVjdG9yLWxpa2UiIGNsYXNzIGZvciBtYW5hZ2luZyBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQxNworCisgICAgICAgIEltcGxl
bWVudCBDU1NQcm9wZXJ0eUNvbnRhaW5lciB3aGljaCBvbiByZW1vdmFsIG1hcmtzIGVudHJpZXMg
YXMgZW1wdHkKKyAgICAgICAgYW5kIHN3ZWVwcyB0aGVtIHdoZW4gdGhlIGludGVybmFsIHZlY3Rv
ciBncm93cyB0b28gYmlnLgorICAgICAgICBBbHNvIHVzZSBhbiBpbnRlcm5hbCBIYXNoTWFwIHRv
IGJlIGFibGUgdG8gZWZmaWNpZW50bHkgZmluZCBlbnRyaWVzIGJ5IElECisgICAgICAgIGFuZCBh
dXRvbWF0aWNhbGx5IGRpc2NhcmQgZHVwbGljYXRlIHByb3BlcnRpZXMuCisgICAgICAgIFRoaXMg
aXMgbmVlZGVkIHRvIGJlIGFibGUgdG8gc2ltcGxpZnkgYW5kIHNwZWVkIHVwIENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uLAorICAgICAgICB0byB1c2UgdGhpcyBjb250YWluZXIgaW5zdGVhZCBv
ZiBtYWludGFpbmluZyBpdHMgb3duIGZvcmsgb2YgaW5mcmFzdHJ1Y3R1cmUKKyAgICAgICAgZm9y
IG1hbmFnaW5nIHBhcnNlZCBwcm9wZXJ0aWVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBjc3MvQ1NTR3JhbW1hci55OgorICAgICAgICAqIGNzcy9DU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OmFkZFBhcnNlZFByb3BlcnRpZXMpOgorICAgICAgICAqIGNz
cy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6On5DU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpjbGVhclByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZTRWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udFZhcmlhbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRXZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpjcmVhdGVQYWdlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnN0YXJ0
RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
ZW5kRGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Omhhc1Byb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9D
U1NQcm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OkNTU1Byb3BlcnR5
KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6c3dlZXApOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6Omdyb3dJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW50ZXJuYWxQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW52YWxpZGF0ZUJ5UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmludmFsaWRhdGVCeUlk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpmaW5kUHJvcGVydHlX
aXRoSWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmZpcnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0QnV0T25lKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpjb250YWluc1Byb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3ZlUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6YWRkUHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmRlbGV0ZUZvbnRGYWNlT25s
eVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmNs
ZWFyUHJvcGVydGllcyk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmNvdW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpoYXNGb250RmFjZU9ubHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnNldEZvbnRGYWNlT25seSk6
CisgICAgICAgICogY3NzL1NWR0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnBhcnNlU1ZHVmFsdWUpOgorCiAyMDExLTA3LTAxICBLZW50YXJvIEhhcmEgIDxoYXJh
a2VuQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxZjI1ZjAzLi45MDVmMjQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTk3Miw2ICs5NzIsOCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmggXAog
CVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWlu
ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydHlTb3VyY2VEYXRhLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDc0MGZiNi4uZTY4
NjRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDkxLDYgKzQ5MSw3IEBACiAgICAgICAgICAgICAn
Y3NzL0NTU1BhcnNlclZhbHVlcy5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5LmgnLAorICAgICAgICAgICAgJ2Nz
cy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlT
b3VyY2VEYXRhLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NSZWZsZWN0VmFsdWUuaCcsCiAgICAg
ICAgICAgICAnY3NzL0NTU1JlZmxlY3Rpb25EaXJlY3Rpb24uaCcsCkBAIC0yMzM0LDYgKzIzMzUs
NyBAQAogICAgICAgICAgICAgJ2Nzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmgnLAogICAgICAg
ICAgICAgJ2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgnLAogICAgICAgICAgICAgJ2Nz
cy9DU1NQcm9wZXJ0eS5jcHAnLAorICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5l
ci5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCcsCiAgICAg
ICAgICAgICAnY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaCcsCiAgICAgICAgICAgICAnY3NzL0NT
U1Byb3BlcnR5U291cmNlRGF0YS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBjOTQyMTc4Li5iZGFh
NTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNDEwLDYgKzQxMCw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZUNh
Y2hlLmNwcCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5LmNwcCBcCisgICAgY3NzL0NTU1Byb3BlcnR5
Q29udGFpbmVyLmNwcCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIFwKICAgICBj
c3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCBcCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1ZS5j
cHAgXApAQCAtMTM5OSw2ICsxNDAwLDcgQEAgSEVBREVSUyArPSBcCiAgICAgY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmggXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmggXAogICAgIGNz
cy9DU1NQcm9wZXJ0eS5oIFwKKyAgICBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCBcCiAgICAg
Y3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaCBcCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1ZS5oIFwK
ICAgICBjc3MvQ1NTUnVsZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggZWVmODRjMS4uMGMwY2UzYiAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMyNjE4LDYgKzMyNjE4LDE0IEBACiAJ
CQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQ
cm9wZXJ0eUNvbnRhaW5lci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTUHJvcGVydHlMb25n
aGFuZC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZjN2FjNDAuLjFlZjJkN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTQyNiw2ICs0MjYsOCBAQAogCQkxQUIxQUU3QTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vy
c29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUFCMUFFNzgwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgKi87IH07CiAJCTFB
QjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMUFFNzkwQzA1MUZERTAwMTM5
RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nICovOyB9OwogCQkxQUIzM0RBNTEyNTUxRTMyMDAyNDQ1
N0EgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUFCMzNEQTQxMjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29y
ayAqLzsgfTsKKwkJMUFCNDRBMEMxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFp
bmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QjQ0QTBCMTM2NzJDRkYwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgKi87IH07
CisJCTFBQjQ0QTBFMTM2NzJEMjAwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCNDRBMEQxMzY3
MkQyMDAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmggKi87IH07CiAJCTFBQjdGQzY4
MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RkM0NzBBOEI5MkVDMDBEOUQzN0IgLyog
WFBhdGhFdmFsdWF0b3IuY3BwICovOyB9OwogCQkxQUI3RkM2OTBBOEI5MkVDMDBEOUQzN0IgLyog
WFBhdGhFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBQjdGQzQ4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5oICovOyB9
OwogCQkxQUI3RkM2QjBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdGQzRBMEE4Qjky
RUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24uY3BwICovOyB9OwpAQCAtNjgzNiw2ICs2ODM4
LDggQEAKIAkJMUFCMUFFNzgwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7
IHBhdGggPSB6b29tSW5DdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QUIxQUU3OTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSB6
b29tT3V0Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCMzNEQTQx
MjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSU9L
aXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJh
bWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxQUI0NEEwQjEzNjcyQ0ZG
MDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ1NTUHJvcGVydHlDb250YWluZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQUI0NEEwRDEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJvcGVydHlD
b250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUHJvcGVydHlD
b250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0ZDNDcwQThCOTJF
QzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBYUGF0aEV2YWx1YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBQjdGQzQ4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBhdGhFdmFsdWF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0ZDNDkwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZh
bHVhdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWFBhdGhFdmFsdWF0b3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkwNzMsNiArMTkwNzcsOCBAQAogCQlGNTIz
RDE4NDAyREU0MkU4MDE4NjM1Q0EgLyogY3NzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkxQUI0NEEwRDEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJvcGVy
dHlDb250YWluZXIuaCAqLywKKwkJCQkxQUI0NEEwQjEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJv
cGVydHlDb250YWluZXIuY3BwICovLAogCQkJCTkzQ0E0QzlDMDlERjkzRkEwMERGODY3NyAvKiBt
YWtldG9rZW5pemVyICovLAogCQkJCUE4MEU2Q0RBMEExOTg5Q0EwMDdGQjhDNSAvKiBDb3VudGVy
LmggKi8sCiAJCQkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3RkU0IC8qIENvdW50ZXIuaWRsICovLApA
QCAtMjMwODAsNiArMjMwODYsNyBAQAogCQkJCTA4NjM5NTE2MTNCNUZFNTcwMEJCMzQ0RCAvKiBT
VkdBbmltYXRlZFBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTQzMUEyRjlDMTNCNkYyQjAwMDc3
OTFFNCAvKiBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNUFCQjc4NzEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNV
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUI0NEEwRTEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJv
cGVydHlDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjU4NDcsNiArMjU4NTQsNyBAQAog
CQkJCTQzMUEzMDIxMTNCODlEQ0MwMDc3OTFFNCAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0
UmF0aW8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDMxQTMwODgxM0I4Rjk3ODAwNzc5MUU0IC8q
IFNWR0FuaW1hdGVkQm9vbGVhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0M0Y2RkQ5NjEzQkNE
MEIxMDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTFBQjQ0QTBDMTM2NzJDRkYwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CmluZGV4IDQ1ZjI2ODMuLmMzNGRkYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpAQCAtMzIzLDkgKzMyMyw5IEBAIHdlYmtpdF92YWx1
ZToKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2Vy
KTsKICAgICAgICAgaWYgKCQ0KSB7CiAgICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IHAtPnNp
bmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVy
dGllcyA9IHAtPm1fbnVtUGFyc2VkUHJvcGVydGllczsKKyAgICAgICAgICAgIGludCBvbGRQYXJz
ZWRQcm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCk7CiAgICAgICAgICAg
ICBpZiAoIXAtPnBhcnNlVmFsdWUocC0+bV9pZCwgcC0+bV9pbXBvcnRhbnQpKQotICAgICAgICAg
ICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVz
IC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgcC0+cm9sbGJhY2tMYXN0
UHJvcGVydGllcyhwLT5tX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSAtIG9sZFBhcnNlZFByb3Bl
cnRpZXMpOwogICAgICAgICAgICAgZGVsZXRlIHAtPm1fdmFsdWVMaXN0OwogICAgICAgICAgICAg
cC0+bV92YWx1ZUxpc3QgPSAwOwogICAgICAgICB9CkBAIC0xMjczLDEwICsxMjczLDEwIEBAIGRl
Y2xhcmF0aW9uOgogICAgICAgICBib29sIGlzUHJvcGVydHlQYXJzZWQgPSBmYWxzZTsKICAgICAg
ICAgaWYgKCQxICYmICQ0KSB7CiAgICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IHAtPnNpbmtG
bG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGll
cyA9IHAtPm1fbnVtUGFyc2VkUHJvcGVydGllczsKKyAgICAgICAgICAgIGludCBvbGRQYXJzZWRQ
cm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCk7CiAgICAgICAgICAgICAk
JCA9IHAtPnBhcnNlVmFsdWUoJDEsICQ1KTsKICAgICAgICAgICAgIGlmICghJCQpCi0gICAgICAg
ICAgICAgICAgcC0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwLT5tX251bVBhcnNlZFByb3BlcnRp
ZXMgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xh
c3RQcm9wZXJ0aWVzKHAtPm1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpIC0gb2xkUGFyc2VkUHJv
cGVydGllcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaXNQcm9wZXJ0eVBh
cnNlZCA9IHRydWU7CiAgICAgICAgICAgICBkZWxldGUgcC0+bV92YWx1ZUxpc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAw
MTdkYzY5Li5lZThlMWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTczLDcgKzczLDcgQEAgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCwgY29u
c3QgVmUKICAgICAvLyBGSVhNRTogVGhpcyBhbGxvd3MgZHVwbGljYXRlIHByb3BlcnRpZXMuCiB9
CiAKLUNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bihDU1NSdWxlKiBwYXJlbnQsIGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCAqIHByb3BlcnRpZXMs
IGludCBudW1Qcm9wZXJ0aWVzKQorQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCwgQ1NTUHJvcGVydHlDb250YWluZXIm
IHByb3BlcnRpZXMpCiAgICAgOiBDU1NTdHlsZURlY2xhcmF0aW9uKHBhcmVudCkKICAgICAsIG1f
bm9kZSgwKQogICAgICwgbV9zdHJpY3RQYXJzaW5nKCFwYXJlbnQgfHwgcGFyZW50LT51c2VTdHJp
Y3RQYXJzaW5nKCkpCkBAIC04MSwxMCArODEsMTUgQEAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b246OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCwgY29uc3QgQ1MK
ICAgICAsIG1faXRlcmF0b3JDb3VudCgwKQogI2VuZGlmCiB7CisgICAgaW50IG51bVByb3BlcnRp
ZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KHByb3BlcnRpZXMuY291bnQoKSk7CisKKyAgICBpZiAoIW51
bVByb3BlcnRpZXMpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fcHJvcGVydGllcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG51bVByb3BlcnRpZXMpOwogICAgIEhhc2hNYXA8aW50LCBib29sPiBj
YW5kaWRhdGVzOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7
Ci0gICAgICAgIGNvbnN0IENTU1Byb3BlcnR5ICpwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaV07Cisg
ICAgICAgIGNvbnN0IENTU1Byb3BlcnR5ICpwcm9wZXJ0eSA9ICZwcm9wZXJ0aWVzW2ldOwogICAg
ICAgICBBU1NFUlQocHJvcGVydHkpOwogICAgICAgICBib29sIGltcG9ydGFudCA9IHByb3BlcnR5
LT5pc0ltcG9ydGFudCgpOwogICAgICAgICBpZiAoY2FuZGlkYXRlcy5jb250YWlucyhwcm9wZXJ0
eS0+aWQoKSkpIHsKQEAgLTYzOSwxMyArNjQ0LDE4IEBAIHZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OnBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9u
CiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCi12b2lkIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOjphZGRQYXJzZWRQcm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCog
cHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMpCit2b2lkIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjphZGRQYXJzZWRQcm9wZXJ0aWVzKENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9wZXJ0
aWVzKQogewogICAgIEFTU0VSVCghbV9pdGVyYXRvckNvdW50KTsKIAorICAgIGludCBudW1Qcm9w
ZXJ0aWVzID0gc3RhdGljX2Nhc3Q8aW50Pihwcm9wZXJ0aWVzLmNvdW50KCkpOworCisgICAgaWYg
KCFudW1Qcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm47CisKICAgICBtX3Byb3BlcnRpZXMucmVz
ZXJ2ZUNhcGFjaXR5KG51bVByb3BlcnRpZXMpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
UHJvcGVydGllczsgKytpKQotICAgICAgICBhZGRQYXJzZWRQcm9wZXJ0eSgqcHJvcGVydGllc1tp
XSk7CisgICAgICAgIGFkZFBhcnNlZFByb3BlcnR5KHByb3BlcnRpZXNbaV0pOwogCiAgICAgLy8g
RklYTUU6IFRoaXMgcHJvYmFibHkgc2hvdWxkIGhhdmUgYSBjYWxsIHRvIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKSBpZiBzb21ldGhpbmcgY2hhbmdlZC4gV2UgbWF5IGFsc28gd2lzaCB0byBhZGQKICAg
ICAvLyBhIG5vdGlmeUNoYW5nZWQgYXJndW1lbnQgdG8gdGhpcyBmdW5jdGlvbiB0byBmb2xsb3cg
dGhlIG1vZGVsIG9mIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIGNsYXNzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaAppbmRleCBlYThhYjNmLi5i
ODM4MjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24uaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24u
aCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5
LmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJLVVJMSGFz
aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNo
U2V0Lmg+CkBAIC02Nyw5ICs2OCw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24ocGFyZW50UnVsZSkpOwogICAg
IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gY3Jl
YXRlKENTU1J1bGUqIHBhcmVudFJ1bGUsIGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCogcHJvcGVy
dGllcywgaW50IG51bVByb3BlcnRpZXMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShDU1NSdWxlKiBwYXJlbnRSdWxlLCBDU1NQcm9wZXJ0
eUNvbnRhaW5lciYgcHJvcGVydGllcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24ocGFyZW50UnVsZSwgcHJvcGVydGllcywgbnVt
UHJvcGVydGllcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKHBhcmVudFJ1bGUsIHByb3BlcnRpZXMpKTsKICAgICB9CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShjb25zdCBWZWN0
b3I8Q1NTUHJvcGVydHk+JiBwcm9wZXJ0aWVzKQogICAgIHsKQEAgLTEyNCw3ICsxMjUsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBCZXNpZGVzIGFkZGluZyB0aGUgcHJvcGVydGllcywgdGhpcyBhbHNv
IHJlbW92ZXMgYW55IGV4aXN0aW5nIHByb3BlcnRpZXMgd2l0aCB0aGVzZSBJRHMuCiAgICAgLy8g
SXQgZG9lcyBubyBub3RpZmljYXRpb24gc2luY2UgaXQncyBjYWxsZWQgYnkgdGhlIHBhcnNlci4K
LSAgICB2b2lkIGFkZFBhcnNlZFByb3BlcnRpZXMoY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICos
IGludCBudW1Qcm9wZXJ0aWVzKTsKKyAgICB2b2lkIGFkZFBhcnNlZFByb3BlcnRpZXMoQ1NTUHJv
cGVydHlDb250YWluZXImIHByb3BlcnRpZXMpOwogICAgIC8vIFRoaXMgZG9lcyBubyBjaGFuZ2Ug
bm90aWZpY2F0aW9ucyBzaW5jZSBpdCdzIG9ubHkgY2FsbGVkIGJ5IGNyZWF0ZU1hcmt1cC4KICAg
ICB2b2lkIGFkZFBhcnNlZFByb3BlcnR5KGNvbnN0IENTU1Byb3BlcnR5Jik7CiAgCkBAIC0xNDks
NyArMTUwLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbigpOwogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVu
dFJ1bGUsIGNvbnN0IFZlY3RvcjxDU1NQcm9wZXJ0eT4mKTsKLSAgICBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBDU1NQcm9wZXJ0eSogY29uc3Qg
KiwgaW50IG51bVByb3BlcnRpZXMpOworICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENT
U1J1bGUqIHBhcmVudFJ1bGUsIENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9wZXJ0aWVzKTsKIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbWFrZU11
dGFibGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBmZjQzYTJkLi45ZDYyZTAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTY1LDE0ICsxNjUsMTAgQEAgQ1NTUGFy
c2VyOjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQYXJzaW5nKQogICAgICwgbV9pZCgwKQogICAgICwg
bV9zdHlsZVNoZWV0KDApCiAgICAgLCBtX3ZhbHVlTGlzdCgwKQotICAgICwgbV9wYXJzZWRQcm9w
ZXJ0aWVzKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5Kio+KGZhc3RNYWxsb2MoMzIgKiBzaXplb2Yo
Q1NTUHJvcGVydHkqKSkpKQotICAgICwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKDApCi0gICAgLCBt
X21heFBhcnNlZFByb3BlcnRpZXMoMzIpCiAgICAgLCBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZv
cmVNYXJnaW5Cb3goSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVMpCiAgICAgLCBtX2luUGFy
c2VTaG9ydGhhbmQoMCkKICAgICAsIG1fY3VycmVudFNob3J0aGFuZCgwKQogICAgICwgbV9pbXBs
aWNpdFNob3J0aGFuZChmYWxzZSkKLSAgICAsIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKGZhbHNl
KQogICAgICwgbV9oYWRTeW50YWN0aWNhbGx5VmFsaWRDU1NSdWxlKGZhbHNlKQogICAgICwgbV9k
ZWZhdWx0TmFtZXNwYWNlKHN0YXJBdG9tKQogICAgICwgbV9pblN0eWxlUnVsZU9yRGVjbGFyYXRp
b24oZmFsc2UpCkBAIC0xOTYsOSArMTkyLDYgQEAgQ1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBz
dHJpY3RQYXJzaW5nKQogCiBDU1NQYXJzZXI6On5DU1NQYXJzZXIoKQogewotICAgIGNsZWFyUHJv
cGVydGllcygpOwotICAgIGZhc3RGcmVlKG1fcGFyc2VkUHJvcGVydGllcyk7Ci0KICAgICBkZWxl
dGUgbV92YWx1ZUxpc3Q7CiAKICAgICBmYXN0RnJlZShtX2RhdGEpOwpAQCAtNDU5LDExICs0NTIs
MTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24qIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHkKICAgICBtX3J1bGUgPSAwOwogCiAgICAgYm9v
bCBvayA9IGZhbHNlOwotICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAgICAg
ZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0gICAgaWYgKG1fbnVtUGFyc2VkUHJvcGVydGll
cykgeworICAgIGlmIChtX3BhcnNlZFByb3BlcnRpZXMuaGFzRm9udEZhY2VPbmx5KCkpCisgICAg
ICAgIG1fcGFyc2VkUHJvcGVydGllcy5kZWxldGVGb250RmFjZU9ubHlQcm9wZXJ0aWVzKCk7Cisg
ICAgaWYgKG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpKSB7CiAgICAgICAgIG9rID0gdHJ1ZTsK
LSAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0
aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFy
c2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMpOwogICAgICAgICBjbGVhclByb3BlcnRp
ZXMoKTsKICAgICB9CiAKQEAgLTQ4NSw3ICs0NzgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VD
b2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBzdHJpY3QpCiAg
ICAgaWYgKCFwYXJzZXIucGFyc2VDb2xvcihkdW1teVN0eWxlRGVjbGFyYXRpb24uZ2V0KCksIHN0
cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHBh
cnNlci5tX3BhcnNlZFByb3BlcnRpZXNbMF0tPnZhbHVlKCk7CisgICAgQ1NTVmFsdWUqIHZhbHVl
ID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllcy5maXJzdCgpLnZhbHVlKCk7CiAgICAgaWYgKHZh
bHVlLT5jc3NWYWx1ZVR5cGUoKSAhPSBDU1NWYWx1ZTo6Q1NTX1BSSU1JVElWRV9WQUxVRSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01MDYsNyArNDk5LDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlQ29sb3IoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRlY2xhcmF0aW9uLCBjb25z
dCBTdHJpbmcKICAgICBjc3N5eXBhcnNlKHRoaXMpOwogICAgIG1fcnVsZSA9IDA7CiAKLSAgICBy
ZXR1cm4gKG1fbnVtUGFyc2VkUHJvcGVydGllcyAmJiBtX3BhcnNlZFByb3BlcnRpZXNbMF0tPm1f
aWQgPT0gQ1NTUHJvcGVydHlDb2xvcik7CisgICAgcmV0dXJuIChtX3BhcnNlZFByb3BlcnRpZXMu
Y291bnQoKSAmJiBtX3BhcnNlZFByb3BlcnRpZXMuZmlyc3QoKS5pZCgpID09IENTU1Byb3BlcnR5
Q29sb3IpOwogfQogCiBib29sIENTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Db2xvcihSR0JBMzImIGNv
bG9yLCBjb25zdCBTdHJpbmcmIHN0cmluZywgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNTYwLDEx
ICs1NTMsMTIgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24qIGRlY2xhcmF0aW9uLCBjb25zdAogICAgIG1fcnVsZSA9IDA7CiAKICAg
ICBib29sIG9rID0gZmFsc2U7Ci0gICAgaWYgKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKQotICAg
ICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKLSAgICBpZiAobV9udW1QYXJzZWRQcm9w
ZXJ0aWVzKSB7CisgICAgaWYgKG1fcGFyc2VkUHJvcGVydGllcy5oYXNGb250RmFjZU9ubHkoKSkK
KyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmRlbGV0ZUZvbnRGYWNlT25seVByb3BlcnRpZXMo
KTsKKworICAgIGlmIChtX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSkgewogICAgICAgICBvayA9
IHRydWU7Ci0gICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2Vk
UHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgZGVjbGFyYXRpb24t
PmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzKTsKICAgICAgICAgY2xlYXJQ
cm9wZXJ0aWVzKCk7CiAgICAgfQogCkBAIC02MDgsMzMgKzYwMiwxOCBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VNZWRpYVF1ZXJ5KE1lZGlhTGlzdCogcXVlcmllcywgY29uc3QgU3RyaW5nJiBzdHJp
bmcpCiAKIHZvaWQgQ1NTUGFyc2VyOjphZGRQcm9wZXJ0eShpbnQgcHJvcElkLCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgT3duUHRyPENTU1Byb3Bl
cnR5PiBwcm9wKGFkb3B0UHRyKG5ldyBDU1NQcm9wZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRh
bnQsIG1fY3VycmVudFNob3J0aGFuZCwgbV9pbXBsaWNpdFNob3J0aGFuZCkpKTsKLSAgICBpZiAo
bV9udW1QYXJzZWRQcm9wZXJ0aWVzID49IG1fbWF4UGFyc2VkUHJvcGVydGllcykgewotICAgICAg
ICBtX21heFBhcnNlZFByb3BlcnRpZXMgKz0gMzI7Ci0gICAgICAgIGlmIChtX21heFBhcnNlZFBy
b3BlcnRpZXMgPiBVSU5UX01BWCAvIHNpemVvZihDU1NQcm9wZXJ0eSopKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMgPSBzdGF0aWNfY2FzdDxDU1NQcm9w
ZXJ0eSoqPihmYXN0UmVhbGxvYyhtX3BhcnNlZFByb3BlcnRpZXMsCi0gICAgICAgICAgICBtX21h
eFBhcnNlZFByb3BlcnRpZXMgKiBzaXplb2YoQ1NTUHJvcGVydHkqKSkpOwotICAgIH0KLSAgICBt
X3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzKytdID0gcHJvcC5sZWFrUHRy
KCk7CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmFkZFByb3BlcnR5KHByb3BJZCwgdmFsdWUsIGlt
cG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5kLCBtX2ltcGxpY2l0U2hvcnRoYW5kKTsKIH0KIAog
dm9pZCBDU1NQYXJzZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSkKIHsKLSAgICBB
U1NFUlQobnVtID49IDApOwotICAgIEFTU0VSVChtX251bVBhcnNlZFByb3BlcnRpZXMgPj0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG51bSkpOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW07
ICsraSkKLSAgICAgICAgZGVsZXRlIG1fcGFyc2VkUHJvcGVydGllc1stLW1fbnVtUGFyc2VkUHJv
cGVydGllc107CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
bnVtKTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OmNsZWFyUHJvcGVydGllcygpCiB7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbnVtUGFyc2VkUHJvcGVydGllczsgaSsrKQotICAgICAg
ICBkZWxldGUgbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwotICAgIG1fbnVtUGFyc2VkUHJvcGVydGll
cyA9IDA7CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmNsZWFyUHJvcGVydGllcygpOwogICAgIG1f
bnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCA9IElOVkFMSURfTlVNX1BBUlNFRF9Q
Uk9QRVJUSUVTOwotICAgIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzID0gZmFsc2U7CiB9CiAgICAg
CiB2b2lkIENTU1BhcnNlcjo6c2V0U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0
KQpAQCAtOTQ0LDcgKzkyMyw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBw
cm9wSWQpOwogICAgICAgICBpZiAobnVtICE9IDEgfHwgIXBhcnNlVmFsdWUoQ1NTUHJvcGVydHlP
dmVyZmxvd1gsIGltcG9ydGFudCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRp
ZXMgLSAxXS0+dmFsdWUoKTsKKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9w
ZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92
ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTEwNDEsNyArMTAyMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhp
cywgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKTsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1
ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251
bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFs
dWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQ
cm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xNjk2LDcgKzE2NzUsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIFNo
b3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2Up
OwogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUqIHZh
bHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUo
KTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0
KCkudmFsdWUoKTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVl
LCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTI0
NjMsNyArMjQ0Miw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwg
Y29uc3QgaW50ICpwcm9wZXJ0aWVzLCAgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNhc2UgMTog
ewogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZh
bHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUo
KTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0
KCkudmFsdWUoKTsKICAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlz
LCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNb
MV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGll
c1syXSwgdmFsdWUsIGltcG9ydGFudCk7CkBAIC0yNDczLDE3ICsyNDUyLDE3IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0aWVzLCAg
Ym9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNhc2UgMjogewogICAgICAgICAgICAgaWYgKCFwYXJz
ZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGll
c1sxXSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBDU1NWYWx1ZSAqdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJz
ZWRQcm9wZXJ0aWVzLmxhc3RCdXRPbmUoKS52YWx1ZSgpOwogICAgICAgICAgICAgSW1wbGljaXRT
Y29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQpOwogICAgICAgICAgICAg
YWRkUHJvcGVydHkocHJvcGVydGllc1syXSwgdmFsdWUsIGltcG9ydGFudCk7Ci0gICAgICAgICAg
ICB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZh
bHVlKCk7CisgICAgICAgICAgICB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0QnV0T25l
KCkudmFsdWUoKTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVl
LCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSAzOiB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0
YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZh
bHVlKHByb3BlcnRpZXNbMl0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21f
bnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2
YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0QnV0T25lKCkudmFsdWUoKTsKICAgICAgICAg
ICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsK
ICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVlLCBpbXBvcnRhbnQp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zODQ3LDcgKzM4MjYsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VGb250U3R5bGUoYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogCiAgICAgaWYgKHZhbHVl
cyAmJiB2YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAgIG1faGFzRm9udEZhY2VPbmx5VmFsdWVz
ID0gdHJ1ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnNldEZvbnRGYWNlT25seSgpOwog
ICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgdmFsdWVzLnJlbGVhc2Uo
KSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzg5NCw3ICsz
ODczLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFZhcmlhbnQoYm9vbCBpbXBvcnRhbnQp
CiAgICAgfQogCiAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAg
IG1faGFzRm9udEZhY2VPbmx5VmFsdWVzID0gdHJ1ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0
aWVzLnNldEZvbnRGYWNlT25seSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRWYXJpYW50LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC0zOTQ3LDcgKzM5MjYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VG
b250V2VpZ2h0KGJvb2wgaW1wb3J0YW50KQogICAgIH0KIAogICAgIGlmICh2YWx1ZXMgJiYgdmFs
dWVzLT5sZW5ndGgoKSkgewotICAgICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IHRydWU7
CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5zZXRGb250RmFjZU9ubHkoKTsKICAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBv
cnRhbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC02NDExLDkgKzYzOTAsOSBA
QCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1Bh
cnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcgogICAgICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBt
X2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zID0gZmFsc2U7CiAgICAgICAgIFJlZlB0cjxDU1NT
dHlsZVJ1bGU+IHJ1bGUgPSBDU1NTdHlsZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQsIG1fbGFz
dFNlbGVjdG9yTGluZU51bWJlcik7CiAgICAgICAgIHJ1bGUtPmFkb3B0U2VsZWN0b3JWZWN0b3Io
KnNlbGVjdG9ycyk7Ci0gICAgICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAg
ICAgICAgIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotICAgICAgICBydWxlLT5zZXREZWNs
YXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1f
cGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIGlmICht
X3BhcnNlZFByb3BlcnRpZXMuaGFzRm9udEZhY2VPbmx5KCkpCisgICAgICAgICAgICBtX3BhcnNl
ZFByb3BlcnRpZXMuZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygpOworICAgICAgICBydWxl
LT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUu
Z2V0KCksIG1fcGFyc2VkUHJvcGVydGllcykpOwogICAgICAgICByZXN1bHQgPSBydWxlLmdldCgp
OwogICAgICAgICBtX3BhcnNlZFN0eWxlT2JqZWN0cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwog
ICAgICAgICBpZiAobV9ydWxlUmFuZ2VNYXApIHsKQEAgLTY0MzUsOCArNjQxNCw5IEBAIENTU1J1
bGUqIENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+ID4qIHNlbGVjdG9yCiBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVs
ZSgpCiB7CiAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0
aW9ucyA9IGZhbHNlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBhcnNlZFBy
b3BlcnRpZXM7ICsraSkgewotICAgICAgICBDU1NQcm9wZXJ0eSogcHJvcGVydHkgPSBtX3BhcnNl
ZFByb3BlcnRpZXNbaV07CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wYXJzZWRQ
cm9wZXJ0aWVzLmNvdW50KCk7ICsraSkgeworICAgICAgICBDU1NQcm9wZXJ0eSogcHJvcGVydHkg
PSAmbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwogICAgICAgICBpbnQgaWQgPSBwcm9wZXJ0eS0+aWQo
KTsKICAgICAgICAgaWYgKChpZCA9PSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQgfHwgaWQgPT0gQ1NT
UHJvcGVydHlGb250U3R5bGUgfHwgaWQgPT0gQ1NTUHJvcGVydHlGb250VmFyaWFudCkgJiYgcHJv
cGVydHktPnZhbHVlKCktPmlzUHJpbWl0aXZlVmFsdWUoKSkgewogICAgICAgICAgICAgUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZSA9IHByb3BlcnR5LT5tX3ZhbHVlLnJlbGVhc2UoKTsKQEAgLTY0NTEs
OCArNjQzMSw5IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlRm9udEZhY2VSdWxlKCkKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQorCiAgICAgUmVmUHRyPENTU0Zv
bnRGYWNlUnVsZT4gcnVsZSA9IENTU0ZvbnRGYWNlUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7
Ci0gICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNy
ZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGll
cykpOworICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzKSk7CiAgICAgY2xlYXJQcm9w
ZXJ0aWVzKCk7CiAgICAgQ1NTRm9udEZhY2VSdWxlKiByZXN1bHQgPSBydWxlLmdldCgpOwogICAg
IG1fcGFyc2VkU3R5bGVPYmplY3RzLmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CkBAIC02NTI2LDcg
KzY1MDcsNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKFBhc3NPd25QdHI8
Q1NTUGFyc2VyU2VsZWN0b3I+IHBhZ2VTZWxlY3RvcikKICAgICAgICAgVmVjdG9yPE93blB0cjxD
U1NQYXJzZXJTZWxlY3Rvcj4gPiBzZWxlY3RvclZlY3RvcjsKICAgICAgICAgc2VsZWN0b3JWZWN0
b3IuYXBwZW5kKHBhZ2VTZWxlY3Rvcik7CiAgICAgICAgIHJ1bGUtPmFkb3B0U2VsZWN0b3JWZWN0
b3Ioc2VsZWN0b3JWZWN0b3IpOwotICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVydGll
cywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIHJ1bGUtPnNldERlY2xhcmF0aW9u
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQ
cm9wZXJ0aWVzKSk7CiAgICAgICAgIHBhZ2VSdWxlID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9w
YXJzZWRTdHlsZU9iamVjdHMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICB9CkBAIC02NTQ3
LDM0ICs2NTI4LDE2IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlTWFyZ2luQXRSdWxlKENT
U1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIC8qIG1hcmdpbkJveCAqCiAKIHZvaWQgQ1NTUGFyc2Vy
OjpzdGFydERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpCiB7Ci0gICAgbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzOworICAgIG1fbnVt
UGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCA9IG1fcGFyc2VkUHJvcGVydGllcy5jb3Vu
dCgpOwogfQogCiB2b2lkIENTU1BhcnNlcjo6ZW5kRGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCkK
IHsKICAgICBBU1NFUlQobV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ICE9IElO
VkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTKTsKLSAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVz
KG1fbnVtUGFyc2VkUHJvcGVydGllcyAtIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdp
bkJveCk7CisgICAgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMuY291
bnQoKSAtIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCk7CiAgICAgbV9udW1Q
YXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BF
UlRJRVM7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjpkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKQot
ewotICAgIEFTU0VSVChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyk7Ci0gICAgaW50IGRlbGV0ZWRQ
cm9wZXJ0aWVzID0gMDsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBhcnNl
ZFByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBDU1NQcm9wZXJ0eSogcHJvcGVydHkgPSBtX3Bh
cnNlZFByb3BlcnRpZXNbaV07Ci0gICAgICAgIGludCBpZCA9IHByb3BlcnR5LT5pZCgpOwotICAg
ICAgICBpZiAoKGlkID09IENTU1Byb3BlcnR5Rm9udFdlaWdodCB8fCBpZCA9PSBDU1NQcm9wZXJ0
eUZvbnRTdHlsZSB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KSAmJiBwcm9wZXJ0eS0+
dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAgICAgZGVsZXRlIHByb3BlcnR5Owot
ICAgICAgICAgICAgZGVsZXRlZFByb3BlcnRpZXMrKzsKLSAgICAgICAgfSBlbHNlIGlmIChkZWxl
dGVkUHJvcGVydGllcykKLSAgICAgICAgICAgIG1fcGFyc2VkUHJvcGVydGllc1tpIC0gZGVsZXRl
ZFByb3BlcnRpZXNdID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwotICAgIH0KLQotICAgIG1fbnVt
UGFyc2VkUHJvcGVydGllcyAtPSBkZWxldGVkUHJvcGVydGllczsKLX0KLQogV2ViS2l0Q1NTS2V5
ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJWYWx1ZUxp
c3QqIGtleXMpCiB7CiAgICAgLy8gQ3JlYXRlIGEga2V5IHN0cmluZyBmcm9tIHRoZSBwYXNzZWQg
a2V5cwpAQCAtNjU4OSw3ICs2NTUyLDcgQEAgV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJz
ZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJWYWx1ZUxpc3QqIGtleXMpCiAKICAgICBS
ZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBrZXlmcmFtZSA9IFdlYktpdENTU0tleWZyYW1l
UnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7CiAgICAga2V5ZnJhbWUtPnNldEtleVRleHQoa2V5
U3RyaW5nKTsKLSAgICBrZXlmcmFtZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OmNyZWF0ZSgwLCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVy
dGllcykpOworICAgIGtleWZyYW1lLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6Y3JlYXRlKDAsIG1fcGFyc2VkUHJvcGVydGllcykpOwogCiAgICAgY2xlYXJQcm9w
ZXJ0aWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBjNmYwNzhhLi5mOWFjMGNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJDU1NH
cmFkaWVudFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmgiCisjaW5jbHVkZSAi
Q1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURhdGEu
aCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCkBAIC03NSw3
ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGFkZFByb3BlcnR5
KGludCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCk7CiAgICAg
ICAgIHZvaWQgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKTsKLSAgICAgICAgYm9vbCBo
YXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1QYXJzZWRQcm9wZXJ0aWVzID4gMDsg
fQorICAgICAgICBib29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlZFBy
b3BlcnRpZXMuY291bnQoKSA+IDA7IH0KIAogICAgICAgICBib29sIHBhcnNlVmFsdWUoaW50IHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgICAgICBib29sIHBhcnNlU2hvcnRoYW5kKGludCBw
cm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1w
b3J0YW50KTsKQEAgLTIzOSwxOCArMjQwLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgUmVmUHRyPENTU1J1bGU+IG1fa2V5ZnJhbWU7CiAgICAgICAgIE93blB0cjxNZWRpYVF1ZXJ5
PiBtX21lZGlhUXVlcnk7CiAgICAgICAgIENTU1BhcnNlclZhbHVlTGlzdCogbV92YWx1ZUxpc3Q7
Ci0gICAgICAgIENTU1Byb3BlcnR5KiogbV9wYXJzZWRQcm9wZXJ0aWVzOworICAgICAgICBDU1NQ
cm9wZXJ0eUNvbnRhaW5lciBtX3BhcnNlZFByb3BlcnRpZXM7CiAgICAgICAgIENTU1NlbGVjdG9y
TGlzdCogbV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yOwogICAgICAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWVDYWNoZT4gbV9wcmltaXRpdmVWYWx1ZUNhY2hlOwotICAgICAgICB1bnNp
Z25lZCBtX251bVBhcnNlZFByb3BlcnRpZXM7Ci0gICAgICAgIHVuc2lnbmVkIG1fbWF4UGFyc2Vk
UHJvcGVydGllczsKICAgICAgICAgdW5zaWduZWQgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3Jl
TWFyZ2luQm94OwogCiAgICAgICAgIGludCBtX2luUGFyc2VTaG9ydGhhbmQ7CiAgICAgICAgIGlu
dCBtX2N1cnJlbnRTaG9ydGhhbmQ7CiAgICAgICAgIGJvb2wgbV9pbXBsaWNpdFNob3J0aGFuZDsK
IAotICAgICAgICBib29sIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzOwogICAgICAgICBib29sIG1f
aGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZTsKIAogICAgICAgICBBdG9taWNTdHJpbmcgbV9k
ZWZhdWx0TmFtZXNwYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAppbmRleCA0YTQ2ZmMyLi42
ZDBmNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaApAQCAtMzIsNiArMzIsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTUHJvcGVydHkgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgorICAgIENTU1Byb3BlcnR5KCkKKyAgICB7CisgICAgfQorCiAg
ICAgQ1NTUHJvcGVydHkoaW50IHByb3BJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJv
b2wgaW1wb3J0YW50ID0gZmFsc2UsIGludCBzaG9ydGhhbmRJRCA9IDAsIGJvb2wgaW1wbGljaXQg
PSBmYWxzZSkKICAgICAgICAgOiBtX2lkKHByb3BJRCkKICAgICAgICAgLCBtX3Nob3J0aGFuZElE
KHNob3J0aGFuZElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg5Yzc5NAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAKQEAg
LTAsMCArMSwyNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdlYmtpdC5vcmc+LCBVbml2ZXJzaXR5
IG9mIFN6ZWdlZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250
YWluZXIuaCIKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdURjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6
Q1NTUHJvcGVydHlDb250YWluZXIoKQorICAgIDogbV9udW1WYWxpZFByb3BlcnRpZXMoMCkKKyAg
ICAsIG1fdXNlZFNpemUoMCkKKyAgICAsIG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyhmYWxz
ZSkKK3sKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6c3dlZXAoKQoreworICAgIGlm
IChtX251bVZhbGlkUHJvcGVydGllcyA9PSBtX3VzZWRTaXplKQorICAgICAgICByZXR1cm47CisK
KyAgICB1bnNpZ25lZCBkZWxldGVkUHJvcGVydGllcyA9IDA7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV91c2VkU2l6ZTsgKytpKSB7CisgICAgICAgIGlmICghbV9wcm9wZXJ0aWVz
W2ldLmlkKCkpCisgICAgICAgICAgICArK2RlbGV0ZWRQcm9wZXJ0aWVzOworICAgICAgICBlbHNl
IGlmIChkZWxldGVkUHJvcGVydGllcykgeworICAgICAgICAgICAgbV9pZFRvUG9zaXRpb25NYXAu
c2V0KG1fcHJvcGVydGllc1tpXS5pZCgpLCBpIC0gZGVsZXRlZFByb3BlcnRpZXMpOworICAgICAg
ICAgICAgbV9wcm9wZXJ0aWVzW2kgLSBkZWxldGVkUHJvcGVydGllc10gPSBtX3Byb3BlcnRpZXNb
aV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3VzZWRTaXplIC09IGRlbGV0ZWRQcm9wZXJ0
aWVzOworCisgICAgaWYgKG1faWRUb1Bvc2l0aW9uTWFwLnNpemUoKSA+IG1fcHJvcGVydGllcy5z
aXplKCkgKyBrR3Jvd0ZhY3RvcikgeworICAgICAgICBtX2lkVG9Qb3NpdGlvbk1hcC5jbGVhcigp
OworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3VzZWRTaXplOyArK2kpCisg
ICAgICAgICAgICBtX2lkVG9Qb3NpdGlvbk1hcC5hZGQobV9wcm9wZXJ0aWVzW2ldLmlkKCksIGkp
OworICAgIH0KKworICAgIEFTU0VSVChtX251bVZhbGlkUHJvcGVydGllcyA9PSBtX3VzZWRTaXpl
KTsKK30KKworaW5saW5lIHZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6Omdyb3dJZk5lZWRlZCgp
Cit7CisgICAgaWYgKG1fdXNlZFNpemUgKyAxID49IG1fcHJvcGVydGllcy5zaXplKCkpCisgICAg
ICAgIHN3ZWVwKCk7CisKKyAgICBpZiAobV91c2VkU2l6ZSA9PSBtX3Byb3BlcnRpZXMuc2l6ZSgp
KQorICAgICAgICBtX3Byb3BlcnRpZXMuYWxsb2MoKTsKK30KKworaW5saW5lIHVuc2lnbmVkIENT
U1Byb3BlcnR5Q29udGFpbmVyOjppbnRlcm5hbFBvc2l0aW9uKGludCBwcm9wZXJ0eUlEKQorewor
ICAgIGlmICghcHJvcGVydHlJRCB8fCAhbV9pZFRvUG9zaXRpb25NYXAuY29udGFpbnMocHJvcGVy
dHlJRCkpCisgICAgICAgIHJldHVybiBrSW52YWxpZFBvc2l0aW9uOworCisgICAgdW5zaWduZWQg
cG9zaXRpb24gPSBtX2lkVG9Qb3NpdGlvbk1hcC5nZXQocHJvcGVydHlJRCk7CisKKyAgICBpZiAo
cG9zaXRpb24gPT0ga0ludmFsaWRQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIGtJbnZhbGlkUG9z
aXRpb247CisKKyAgICBBU1NFUlQocG9zaXRpb24gPCBtX3VzZWRTaXplKTsKKworICAgIGlmICgh
bV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS5pZCgpKQorICAgICAgICByZXR1cm4ga0ludmFsaWRQb3Np
dGlvbjsKKworICAgIHJldHVybiBwb3NpdGlvbjsKK30KKworaW5saW5lIHZvaWQgQ1NTUHJvcGVy
dHlDb250YWluZXI6OmludmFsaWRhdGVCeVBvc2l0aW9uKHVuc2lnbmVkIHBvc2l0aW9uKQorewor
ICAgIGlmIChwb3NpdGlvbiA+PSBtX3VzZWRTaXplIHx8ICFtX3Byb3BlcnRpZXNbcG9zaXRpb25d
LmlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC0tbV9udW1WYWxpZFByb3BlcnRpZXM7CisK
KyAgICBtX2lkVG9Qb3NpdGlvbk1hcC5zZXQobV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS5pZCgpLCBr
SW52YWxpZFBvc2l0aW9uKTsKKyAgICBtX3Byb3BlcnRpZXNbcG9zaXRpb25dLm1faWQgPSAwOwor
fQorCitpbmxpbmUgdm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW52YWxpZGF0ZUJ5SWQoaW50
IHByb3BlcnR5SUQpCit7CisgICAgaWYgKCFwcm9wZXJ0eUlEKQorICAgICAgICByZXR1cm47CisK
KyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGludGVybmFsUG9zaXRpb24ocHJvcGVydHlJRCk7CisK
KyAgICBpZiAocG9zaXRpb24gPT0ga0ludmFsaWRQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaW52YWxpZGF0ZUJ5UG9zaXRpb24ocG9zaXRpb24pOworfQorCitDU1NQcm9wZXJ0eSog
Q1NTUHJvcGVydHlDb250YWluZXI6OmZpbmRQcm9wZXJ0eVdpdGhJZChpbnQgcHJvcGVydHlJRCkK
K3sKKyAgICBpZiAoIXByb3BlcnR5SUQgfHwgIW1fdXNlZFNpemUpCisgICAgICAgIHJldHVybiAw
OworCisgICAgdW5zaWduZWQgcG9zaXRpb24gPSBpbnRlcm5hbFBvc2l0aW9uKHByb3BlcnR5SUQp
OworCisgICAgaWYgKHBvc2l0aW9uID09IGtJbnZhbGlkUG9zaXRpb24pCisgICAgICAgIHJldHVy
biAwOworCisgICAgcmV0dXJuICZtX3Byb3BlcnRpZXNbcG9zaXRpb25dOworfQorCitjb25zdCBD
U1NQcm9wZXJ0eSYgQ1NTUHJvcGVydHlDb250YWluZXI6OmZpcnN0KCkKK3sKKyAgICBBU1NFUlQo
IW1fcHJvcGVydGllcy5pc0VtcHR5KCkgJiYgbV9udW1WYWxpZFByb3BlcnRpZXMpOworCisgICAg
aWYgKCFtX3Byb3BlcnRpZXNbMF0uaWQoKSkKKyAgICAgICAgc3dlZXAoKTsKKworICAgIEFTU0VS
VChtX3Byb3BlcnRpZXNbMF0uaWQoKSk7CisKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzWzBdOwor
fQorCitjb25zdCBDU1NQcm9wZXJ0eSYgQ1NTUHJvcGVydHlDb250YWluZXI6Omxhc3QoKQorewor
ICAgIEFTU0VSVCghbV9wcm9wZXJ0aWVzLmlzRW1wdHkoKSAmJiBtX251bVZhbGlkUHJvcGVydGll
cyk7CisKKyAgICBpZiAoIW1fcHJvcGVydGllc1ttX3VzZWRTaXplIC0gMV0uaWQoKSkKKyAgICAg
ICAgc3dlZXAoKTsKKworICAgIEFTU0VSVChtX3VzZWRTaXplICYmIG1fcHJvcGVydGllc1ttX3Vz
ZWRTaXplIC0gMV0uaWQoKSk7CisKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzW21fdXNlZFNpemUg
LSAxXTsKK30KKworY29uc3QgQ1NTUHJvcGVydHkmIENTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0
QnV0T25lKCkKK3sKKyAgICBBU1NFUlQoIW1fcHJvcGVydGllcy5pc0VtcHR5KCkgJiYgbV9udW1W
YWxpZFByb3BlcnRpZXMgPj0gMik7CisKKyAgICBpZiAoIW1fcHJvcGVydGllc1ttX3VzZWRTaXpl
IC0gMV0uaWQoKSB8fCAhbV9wcm9wZXJ0aWVzW21fdXNlZFNpemUgLSAyXS5pZCgpKQorICAgICAg
ICBzd2VlcCgpOworCisgICAgQVNTRVJUKG1fdXNlZFNpemUgPj0gMiAmJiBtX3Byb3BlcnRpZXNb
bV91c2VkU2l6ZSAtIDJdLmlkKCkpOworCisgICAgcmV0dXJuIG1fcHJvcGVydGllc1ttX3VzZWRT
aXplIC0gMl07Cit9CisKK0NTU1Byb3BlcnR5JiBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6b3BlcmF0
b3JbXShzaXplX3QgaW5kZXgpCit7CisgICAgc3dlZXAoKTsKKyAgICBBU1NFUlQoaW5kZXggPCBt
X3VzZWRTaXplKTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzLmF0KGluZGV4KTsKK30KKworYm9v
bCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y29udGFpbnNQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkK
K3sKKyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGludGVybmFsUG9zaXRpb24ocHJvcGVydHlJRCk7
CisKKyAgICBpZiAoIHBvc2l0aW9uID09IGtJbnZhbGlkUG9zaXRpb24pCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFp
bmVyOjpyZW1vdmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKK3sKKyAgICBpbnZhbGlkYXRlQnlJ
ZChwcm9wZXJ0eUlEKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3ZlUHJv
cGVydGllcyhjb25zdCBpbnQqIGlkTGlzdCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgaW52YWxpZGF0ZUJ5SWQo
aWRMaXN0W2ldKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6YWRkUHJvcGVydHko
aW50IHByb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFu
dCwgaW50IHNob3J0aGFuZElELCBib29sIGltcGxpY2l0KQoreworICAgIGdyb3dJZk5lZWRlZCgp
OworCisgICAgdW5zaWduZWQgb2xkUG9zaXRpb24gPSBpbnRlcm5hbFBvc2l0aW9uKHByb3BlcnR5
SUQpOworCisgICAgaWYgKG9sZFBvc2l0aW9uICE9IGtJbnZhbGlkUG9zaXRpb24pIHsKKyAgICAg
ICAgaWYgKG1fcHJvcGVydGllc1tvbGRQb3NpdGlvbl0uaWQoKSAmJiBtX3Byb3BlcnRpZXNbb2xk
UG9zaXRpb25dLmlzSW1wb3J0YW50KCkgJiYgIWltcG9ydGFudCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpbnZhbGlkYXRlQnlQb3NpdGlvbihvbGRQb3NpdGlvbik7CisgICAgfQor
CisgICAgbV9wcm9wZXJ0aWVzW21fdXNlZFNpemVdID0gQ1NTUHJvcGVydHkocHJvcGVydHlJRCwg
dmFsdWUsIGltcG9ydGFudCwgc2hvcnRoYW5kSUQsIGltcGxpY2l0KTsKKyAgICBtX2lkVG9Qb3Np
dGlvbk1hcC5zZXQocHJvcGVydHlJRCwgbV91c2VkU2l6ZSk7CisgICAgKyttX251bVZhbGlkUHJv
cGVydGllczsKKyAgICArK21fdXNlZFNpemU7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWlu
ZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSkKK3sKKyAgICBpZiAoIW51bSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG51bSA+IDApOworICAgIEFTU0VSVChtX251bVZh
bGlkUHJvcGVydGllcyA+PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtKSk7CisKKyAgICBpbnQg
ZGVsZXRlZFByb3BlcnRpZXMgPSAwOworICAgIGludCBwb3NpdGlvbiA9IG1fdXNlZFNpemU7Cisg
ICAgd2hpbGUgKGRlbGV0ZWRQcm9wZXJ0aWVzICE9IG51bSAmJiAtLXBvc2l0aW9uID49IDApIHsK
KyAgICAgICAgaWYgKG1fcHJvcGVydGllc1twb3NpdGlvbl0uaWQoKSkgeworICAgICAgICAgICAg
aW52YWxpZGF0ZUJ5UG9zaXRpb24ocG9zaXRpb24pOworICAgICAgICAgICAgKytkZWxldGVkUHJv
cGVydGllczsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5l
cjo6ZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygpCit7CisgICAgQVNTRVJUKG1faGFzRm9u
dEZhY2VPbmx5UHJvcGVydGllcyk7CisKKyAgICBpbnQgaWRzWzNdID0ge0NTU1Byb3BlcnR5Rm9u
dFdlaWdodCwgQ1NTUHJvcGVydHlGb250U3R5bGUsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnR9Owor
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpIHsKKyAgICAgICAgdW5zaWduZWQgcG9z
aXRpb24gPSBpbnRlcm5hbFBvc2l0aW9uKGlkc1tpXSk7CisKKyAgICAgICAgaWYgKHBvc2l0aW9u
ID09IGtJbnZhbGlkUG9zaXRpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBp
ZiAobV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpKQorICAgICAg
ICAgICAgaW52YWxpZGF0ZUJ5UG9zaXRpb24ocG9zaXRpb24pOworICAgIH0KKyAgICBtX2hhc0Zv
bnRGYWNlT25seVByb3BlcnRpZXMgPSBmYWxzZTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRh
aW5lcjo6Y2xlYXJQcm9wZXJ0aWVzKCkKK3sKKyAgICBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRp
ZXMgPSBmYWxzZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3VzZWRTaXplOyAr
K2kpCisgICAgICAgIGludmFsaWRhdGVCeVBvc2l0aW9uKGkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250
YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNTBjZGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaApAQCAtMCwwICsxLDc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPiwgVW5pdmVyc2l0eSBvZiBTemVnZWQK
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2lmbmRlZiBDU1NQcm9wZXJ0eUNvbnRhaW5lcl9oCisjZGVmaW5lIENTU1Byb3BlcnR5Q29udGFp
bmVyX2gKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCisjaW5jbHVkZSAiQ1NTVmFsdWUuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGtHcm93RmFjdG9yID0gMzI7CitzdGF0aWMgY29uc3QgdW5zaWdu
ZWQga0ludmFsaWRQb3NpdGlvbiA9IFVJTlRfTUFYOworCitjbGFzcyBDU1NQcm9wZXJ0eUNvbnRh
aW5lciB7CitwdWJsaWM6CisgICAgQ1NTUHJvcGVydHlDb250YWluZXIoKTsKKyAgICBjb25zdCBD
U1NQcm9wZXJ0eSYgZmlyc3QoKTsKKyAgICBjb25zdCBDU1NQcm9wZXJ0eSYgbGFzdCgpOworICAg
IGNvbnN0IENTU1Byb3BlcnR5JiBsYXN0QnV0T25lKCk7CisgICAgQ1NTUHJvcGVydHkqIGZpbmRQ
cm9wZXJ0eVdpdGhJZChpbnQgcHJvcGVydHlJRCk7CisKKyAgICBpbmxpbmUgdW5zaWduZWQgY291
bnQoKSBjb25zdCB7IHJldHVybiBtX251bVZhbGlkUHJvcGVydGllczsgfQorICAgIGlubGluZSBi
b29sIGhhc0ZvbnRGYWNlT25seSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRm9udEZhY2VPbmx5UHJv
cGVydGllczsgfQorICAgIGlubGluZSB2b2lkIHNldEZvbnRGYWNlT25seSgpIHsgbV9oYXNGb250
RmFjZU9ubHlQcm9wZXJ0aWVzID0gdHJ1ZTsgfQorCisgICAgQ1NTUHJvcGVydHkmIG9wZXJhdG9y
W10oc2l6ZV90IGluZGV4KTsKKworICAgIGJvb2wgY29udGFpbnNQcm9wZXJ0eShpbnQgcHJvcGVy
dHlJRCk7CisgICAgdm9pZCByZW1vdmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCk7CisgICAgdm9p
ZCByZW1vdmVQcm9wZXJ0aWVzKGNvbnN0IGludCogaWRMaXN0LCB1bnNpZ25lZCBsZW5ndGgpOwor
ICAgIHZvaWQgYWRkUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
LCBib29sIGltcG9ydGFudCwgaW50IHNob3J0aGFuZElEID0gMCwgYm9vbCBpbXBsaWNpdCA9IGZh
bHNlKTsKKyAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSk7CisgICAgdm9p
ZCBkZWxldGVGb250RmFjZU9ubHlQcm9wZXJ0aWVzKCk7CisgICAgdm9pZCBjbGVhclByb3BlcnRp
ZXMoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHN3ZWVwKCk7CisgICAgaW5saW5lIHZvaWQgZ3Jv
d0lmTmVlZGVkKCk7CisgICAgaW5saW5lIHVuc2lnbmVkIGludGVybmFsUG9zaXRpb24oaW50IHBy
b3BlcnR5SUQpOworICAgIGlubGluZSB2b2lkIGludmFsaWRhdGVCeVBvc2l0aW9uKHVuc2lnbmVk
IHBvc2l0aW9uKTsKKyAgICBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlQnlJZChpbnQgcHJvcGVydHlJ
RCk7CisKKyAgICB1bnNpZ25lZCBtX251bVZhbGlkUHJvcGVydGllczsKKyAgICB1bnNpZ25lZCBt
X3VzZWRTaXplOworCisgICAgYm9vbCBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXM7CisKKyAg
ICBTZWdtZW50ZWRWZWN0b3I8Q1NTUHJvcGVydHksIGtHcm93RmFjdG9yPiBtX3Byb3BlcnRpZXM7
CisgICAgSGFzaE1hcDxpbnQsIHVuc2lnbmVkPiBtX2lkVG9Qb3NpdGlvbk1hcDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1Byb3BlcnR5Q29udGFpbmVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKaW5kZXggZjNiNWFjMy4uODAyYmZkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJDU1NJbml0aWFsVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJD
U1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5Q29udGFpbmVyLmgiCiAjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1F1aXJrUHJpbWl0aXZlVmFsdWUu
aCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCkBAIC0yODYsNyArMjg3LDcgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgICAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKDEpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJv
cGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMgLSAxXS0+dmFsdWUoKTsKKyAgICAgICAgQ1NT
VmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwogICAgICAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtlck1pZCwgdmFsdWUsIGltcG9ydGFudCk7CiAg
ICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TWFya2VyRW5kLCB2YWx1ZSwgaW1wb3J0YW50
KTsKICAgICAgICAgbV9pbXBsaWNpdFNob3J0aGFuZCA9IGZhbHNlOwotLSAKMS43LjUuMgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99474</attachid>
            <date>2011-07-01 08:39:34 -0700</date>
            <delta_ts>2011-07-01 08:51:04 -0700</delta_ts>
            <desc>proposed patch v2</desc>
            <filename>0001-CSSParser-should-use-custom-vector-like-class-for-ma.patch</filename>
            <type>text/plain</type>
            <size>44684</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSBmM2EyN2UwNTM0ZjNjYTg1ZGI4ZTUyMmNlMzU5OTNhYTkxOTA2YzIwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPgpEYXRl
OiBGcmksIDEgSnVsIDIwMTEgMTc6MjU6NDUgKzAyMDAKU3ViamVjdDogW1BBVENIXSBDU1NQYXJz
ZXIgc2hvdWxkIHVzZSBjdXN0b20gdmVjdG9yLWxpa2UgY2xhc3MgZm9yIG1hbmFnaW5nCiBwcm9w
ZXJ0aWVzCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAg
ICAgICAgfCAgICAxICsKIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDc4ICsrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qICAgICAgfCAgICA4ICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgfCAgICA4ICsKIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkgICAgICAgICAgICAgICAgICAgfCAgICA4ICstCiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwIHwgICAxOCArKy0KIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oICAgfCAgICA5ICstCiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCAgICAgICAgICAgICAgICAgIHwgIDEwOSArKyst
LS0tLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCAgICAgICAgICAgICAgICAgICAg
fCAgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaCAgICAgICAgICAgICAg
ICAgIHwgICAgNCArCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3Bw
ICAgICAgIHwgIDI1NiArKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eUNvbnRhaW5lci5oICAgICAgICAgfCAgIDc1ICsrKysrKwogU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgICAgICAgICAgICAgICB8ICAgIDMgKy0KIDE2IGZpbGVz
IGNoYW5nZWQsIDUwMCBpbnNlcnRpb25zKCspLCA5MSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmgK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDU4ZTc1MjAuLmVmNDU0MDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC00NTIsNiArNDUyLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGNzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHAKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZS5jcHAK
ICAgICBjc3MvQ1NTUHJvcGVydHkuY3BwCisgICAgY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNw
cAogICAgIGNzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAogICAgIGNzcy9DU1NQcm9wZXJ0eVNv
dXJjZURhdGEuY3BwCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDUwMmU5Li5iNWI5MzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIwMTEtMDctMDEg
IEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENTU1BhcnNlciBzaG91bGQgdXNlIGN1c3RvbSAi
dmVjdG9yLWxpa2UiIGNsYXNzIGZvciBtYW5hZ2luZyBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQxNworCisgICAgICAgIEltcGxl
bWVudCBDU1NQcm9wZXJ0eUNvbnRhaW5lciB3aGljaCBvbiByZW1vdmFsIG1hcmtzIGVudHJpZXMg
YXMgZW1wdHkKKyAgICAgICAgYW5kIHN3ZWVwcyB0aGVtIHdoZW4gdGhlIGludGVybmFsIHZlY3Rv
ciBncm93cyB0b28gYmlnLgorICAgICAgICBBbHNvIHVzZSBhbiBpbnRlcm5hbCBIYXNoTWFwIHRv
IGJlIGFibGUgdG8gZWZmaWNpZW50bHkgZmluZCBlbnRyaWVzIGJ5IElECisgICAgICAgIGFuZCBh
dXRvbWF0aWNhbGx5IGRpc2NhcmQgZHVwbGljYXRlIHByb3BlcnRpZXMuCisgICAgICAgIFRoaXMg
aXMgbmVlZGVkIHRvIGJlIGFibGUgdG8gc2ltcGxpZnkgYW5kIHNwZWVkIHVwIENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uLAorICAgICAgICB0byB1c2UgdGhpcyBjb250YWluZXIgaW5zdGVhZCBv
ZiBtYWludGFpbmluZyBpdHMgb3duIGZvcmsgb2YgaW5mcmFzdHJ1Y3R1cmUKKyAgICAgICAgZm9y
IG1hbmFnaW5nIHBhcnNlZCBwcm9wZXJ0aWVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBjc3MvQ1NTR3JhbW1hci55OgorICAgICAgICAqIGNzcy9DU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OmFkZFBhcnNlZFByb3BlcnRpZXMpOgorICAgICAgICAqIGNz
cy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6On5DU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpjbGVhclByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZTRWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udFZhcmlhbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRXZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpjcmVhdGVQYWdlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnN0YXJ0
RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
ZW5kRGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Omhhc1Byb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9D
U1NQcm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OkNTU1Byb3BlcnR5
KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6c3dlZXApOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6Omdyb3dJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW50ZXJuYWxQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW52YWxpZGF0ZUJ5UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmludmFsaWRhdGVCeUlk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpmaW5kUHJvcGVydHlX
aXRoSWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmZpcnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0QnV0T25lKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpjb250YWluc1Byb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3ZlUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6YWRkUHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmRlbGV0ZUZvbnRGYWNlT25s
eVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmNs
ZWFyUHJvcGVydGllcyk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmNvdW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpoYXNGb250RmFjZU9ubHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnNldEZvbnRGYWNlT25seSk6
CisgICAgICAgICogY3NzL1NWR0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnBhcnNlU1ZHVmFsdWUpOgorCiAyMDExLTA3LTAxICBLZW50YXJvIEhhcmEgIDxoYXJh
a2VuQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxZjI1ZjAzLi45MDVmMjQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTk3Miw2ICs5NzIsOCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmggXAog
CVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWlu
ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydHlTb3VyY2VEYXRhLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDc0MGZiNi4uZTY4
NjRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDkxLDYgKzQ5MSw3IEBACiAgICAgICAgICAgICAn
Y3NzL0NTU1BhcnNlclZhbHVlcy5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5LmgnLAorICAgICAgICAgICAgJ2Nz
cy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlT
b3VyY2VEYXRhLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NSZWZsZWN0VmFsdWUuaCcsCiAgICAg
ICAgICAgICAnY3NzL0NTU1JlZmxlY3Rpb25EaXJlY3Rpb24uaCcsCkBAIC0yMzM0LDYgKzIzMzUs
NyBAQAogICAgICAgICAgICAgJ2Nzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmgnLAogICAgICAg
ICAgICAgJ2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgnLAogICAgICAgICAgICAgJ2Nz
cy9DU1NQcm9wZXJ0eS5jcHAnLAorICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5l
ci5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCcsCiAgICAg
ICAgICAgICAnY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaCcsCiAgICAgICAgICAgICAnY3NzL0NT
U1Byb3BlcnR5U291cmNlRGF0YS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBjOTQyMTc4Li5iZGFh
NTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNDEwLDYgKzQxMCw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZUNh
Y2hlLmNwcCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5LmNwcCBcCisgICAgY3NzL0NTU1Byb3BlcnR5
Q29udGFpbmVyLmNwcCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIFwKICAgICBj
c3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCBcCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1ZS5j
cHAgXApAQCAtMTM5OSw2ICsxNDAwLDcgQEAgSEVBREVSUyArPSBcCiAgICAgY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmggXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmggXAogICAgIGNz
cy9DU1NQcm9wZXJ0eS5oIFwKKyAgICBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCBcCiAgICAg
Y3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaCBcCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1ZS5oIFwK
ICAgICBjc3MvQ1NTUnVsZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggZWVmODRjMS4uMGMwY2UzYiAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMyNjE4LDYgKzMyNjE4LDE0IEBACiAJ
CQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQ
cm9wZXJ0eUNvbnRhaW5lci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTUHJvcGVydHlMb25n
aGFuZC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZjN2FjNDAuLjFlZjJkN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTQyNiw2ICs0MjYsOCBAQAogCQkxQUIxQUU3QTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vy
c29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUFCMUFFNzgwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgKi87IH07CiAJCTFB
QjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMUFFNzkwQzA1MUZERTAwMTM5
RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nICovOyB9OwogCQkxQUIzM0RBNTEyNTUxRTMyMDAyNDQ1
N0EgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUFCMzNEQTQxMjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29y
ayAqLzsgfTsKKwkJMUFCNDRBMEMxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFp
bmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QjQ0QTBCMTM2NzJDRkYwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgKi87IH07
CisJCTFBQjQ0QTBFMTM2NzJEMjAwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCNDRBMEQxMzY3
MkQyMDAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmggKi87IH07CiAJCTFBQjdGQzY4
MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RkM0NzBBOEI5MkVDMDBEOUQzN0IgLyog
WFBhdGhFdmFsdWF0b3IuY3BwICovOyB9OwogCQkxQUI3RkM2OTBBOEI5MkVDMDBEOUQzN0IgLyog
WFBhdGhFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBQjdGQzQ4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5oICovOyB9
OwogCQkxQUI3RkM2QjBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdGQzRBMEE4Qjky
RUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24uY3BwICovOyB9OwpAQCAtNjgzNiw2ICs2ODM4
LDggQEAKIAkJMUFCMUFFNzgwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7
IHBhdGggPSB6b29tSW5DdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QUIxQUU3OTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSB6
b29tT3V0Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCMzNEQTQx
MjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSU9L
aXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJh
bWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxQUI0NEEwQjEzNjcyQ0ZG
MDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ1NTUHJvcGVydHlDb250YWluZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQUI0NEEwRDEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJvcGVydHlD
b250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUHJvcGVydHlD
b250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0ZDNDcwQThCOTJF
QzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBYUGF0aEV2YWx1YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBQjdGQzQ4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBhdGhFdmFsdWF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0ZDNDkwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZh
bHVhdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWFBhdGhFdmFsdWF0b3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkwNzMsNiArMTkwNzcsOCBAQAogCQlGNTIz
RDE4NDAyREU0MkU4MDE4NjM1Q0EgLyogY3NzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkxQUI0NEEwRDEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJvcGVy
dHlDb250YWluZXIuaCAqLywKKwkJCQkxQUI0NEEwQjEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJv
cGVydHlDb250YWluZXIuY3BwICovLAogCQkJCTkzQ0E0QzlDMDlERjkzRkEwMERGODY3NyAvKiBt
YWtldG9rZW5pemVyICovLAogCQkJCUE4MEU2Q0RBMEExOTg5Q0EwMDdGQjhDNSAvKiBDb3VudGVy
LmggKi8sCiAJCQkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3RkU0IC8qIENvdW50ZXIuaWRsICovLApA
QCAtMjMwODAsNiArMjMwODYsNyBAQAogCQkJCTA4NjM5NTE2MTNCNUZFNTcwMEJCMzQ0RCAvKiBT
VkdBbmltYXRlZFBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTQzMUEyRjlDMTNCNkYyQjAwMDc3
OTFFNCAvKiBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNUFCQjc4NzEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNV
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUI0NEEwRTEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJv
cGVydHlDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjU4NDcsNiArMjU4NTQsNyBAQAog
CQkJCTQzMUEzMDIxMTNCODlEQ0MwMDc3OTFFNCAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0
UmF0aW8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDMxQTMwODgxM0I4Rjk3ODAwNzc5MUU0IC8q
IFNWR0FuaW1hdGVkQm9vbGVhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0M0Y2RkQ5NjEzQkNE
MEIxMDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTFBQjQ0QTBDMTM2NzJDRkYwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CmluZGV4IDQ1ZjI2ODMuLmMzNGRkYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpAQCAtMzIzLDkgKzMyMyw5IEBAIHdlYmtpdF92YWx1
ZToKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2Vy
KTsKICAgICAgICAgaWYgKCQ0KSB7CiAgICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IHAtPnNp
bmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVy
dGllcyA9IHAtPm1fbnVtUGFyc2VkUHJvcGVydGllczsKKyAgICAgICAgICAgIGludCBvbGRQYXJz
ZWRQcm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCk7CiAgICAgICAgICAg
ICBpZiAoIXAtPnBhcnNlVmFsdWUocC0+bV9pZCwgcC0+bV9pbXBvcnRhbnQpKQotICAgICAgICAg
ICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVz
IC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgcC0+cm9sbGJhY2tMYXN0
UHJvcGVydGllcyhwLT5tX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSAtIG9sZFBhcnNlZFByb3Bl
cnRpZXMpOwogICAgICAgICAgICAgZGVsZXRlIHAtPm1fdmFsdWVMaXN0OwogICAgICAgICAgICAg
cC0+bV92YWx1ZUxpc3QgPSAwOwogICAgICAgICB9CkBAIC0xMjczLDEwICsxMjczLDEwIEBAIGRl
Y2xhcmF0aW9uOgogICAgICAgICBib29sIGlzUHJvcGVydHlQYXJzZWQgPSBmYWxzZTsKICAgICAg
ICAgaWYgKCQxICYmICQ0KSB7CiAgICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IHAtPnNpbmtG
bG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGll
cyA9IHAtPm1fbnVtUGFyc2VkUHJvcGVydGllczsKKyAgICAgICAgICAgIGludCBvbGRQYXJzZWRQ
cm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCk7CiAgICAgICAgICAgICAk
JCA9IHAtPnBhcnNlVmFsdWUoJDEsICQ1KTsKICAgICAgICAgICAgIGlmICghJCQpCi0gICAgICAg
ICAgICAgICAgcC0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwLT5tX251bVBhcnNlZFByb3BlcnRp
ZXMgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xh
c3RQcm9wZXJ0aWVzKHAtPm1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpIC0gb2xkUGFyc2VkUHJv
cGVydGllcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaXNQcm9wZXJ0eVBh
cnNlZCA9IHRydWU7CiAgICAgICAgICAgICBkZWxldGUgcC0+bV92YWx1ZUxpc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAw
MTdkYzY5Li5lZThlMWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTczLDcgKzczLDcgQEAgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCwgY29u
c3QgVmUKICAgICAvLyBGSVhNRTogVGhpcyBhbGxvd3MgZHVwbGljYXRlIHByb3BlcnRpZXMuCiB9
CiAKLUNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bihDU1NSdWxlKiBwYXJlbnQsIGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCAqIHByb3BlcnRpZXMs
IGludCBudW1Qcm9wZXJ0aWVzKQorQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCwgQ1NTUHJvcGVydHlDb250YWluZXIm
IHByb3BlcnRpZXMpCiAgICAgOiBDU1NTdHlsZURlY2xhcmF0aW9uKHBhcmVudCkKICAgICAsIG1f
bm9kZSgwKQogICAgICwgbV9zdHJpY3RQYXJzaW5nKCFwYXJlbnQgfHwgcGFyZW50LT51c2VTdHJp
Y3RQYXJzaW5nKCkpCkBAIC04MSwxMCArODEsMTUgQEAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b246OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCwgY29uc3QgQ1MK
ICAgICAsIG1faXRlcmF0b3JDb3VudCgwKQogI2VuZGlmCiB7CisgICAgaW50IG51bVByb3BlcnRp
ZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KHByb3BlcnRpZXMuY291bnQoKSk7CisKKyAgICBpZiAoIW51
bVByb3BlcnRpZXMpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fcHJvcGVydGllcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG51bVByb3BlcnRpZXMpOwogICAgIEhhc2hNYXA8aW50LCBib29sPiBj
YW5kaWRhdGVzOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7
Ci0gICAgICAgIGNvbnN0IENTU1Byb3BlcnR5ICpwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaV07Cisg
ICAgICAgIGNvbnN0IENTU1Byb3BlcnR5ICpwcm9wZXJ0eSA9ICZwcm9wZXJ0aWVzW2ldOwogICAg
ICAgICBBU1NFUlQocHJvcGVydHkpOwogICAgICAgICBib29sIGltcG9ydGFudCA9IHByb3BlcnR5
LT5pc0ltcG9ydGFudCgpOwogICAgICAgICBpZiAoY2FuZGlkYXRlcy5jb250YWlucyhwcm9wZXJ0
eS0+aWQoKSkpIHsKQEAgLTYzOSwxMyArNjQ0LDE4IEBAIHZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OnBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9u
CiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCi12b2lkIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOjphZGRQYXJzZWRQcm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCog
cHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMpCit2b2lkIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjphZGRQYXJzZWRQcm9wZXJ0aWVzKENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9wZXJ0
aWVzKQogewogICAgIEFTU0VSVCghbV9pdGVyYXRvckNvdW50KTsKIAorICAgIGludCBudW1Qcm9w
ZXJ0aWVzID0gc3RhdGljX2Nhc3Q8aW50Pihwcm9wZXJ0aWVzLmNvdW50KCkpOworCisgICAgaWYg
KCFudW1Qcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm47CisKICAgICBtX3Byb3BlcnRpZXMucmVz
ZXJ2ZUNhcGFjaXR5KG51bVByb3BlcnRpZXMpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
UHJvcGVydGllczsgKytpKQotICAgICAgICBhZGRQYXJzZWRQcm9wZXJ0eSgqcHJvcGVydGllc1tp
XSk7CisgICAgICAgIGFkZFBhcnNlZFByb3BlcnR5KHByb3BlcnRpZXNbaV0pOwogCiAgICAgLy8g
RklYTUU6IFRoaXMgcHJvYmFibHkgc2hvdWxkIGhhdmUgYSBjYWxsIHRvIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKSBpZiBzb21ldGhpbmcgY2hhbmdlZC4gV2UgbWF5IGFsc28gd2lzaCB0byBhZGQKICAg
ICAvLyBhIG5vdGlmeUNoYW5nZWQgYXJndW1lbnQgdG8gdGhpcyBmdW5jdGlvbiB0byBmb2xsb3cg
dGhlIG1vZGVsIG9mIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIGNsYXNzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaAppbmRleCBlYThhYjNmLi5i
ODM4MjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24uaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24u
aCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5
LmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJLVVJMSGFz
aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNo
U2V0Lmg+CkBAIC02Nyw5ICs2OCw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24ocGFyZW50UnVsZSkpOwogICAg
IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gY3Jl
YXRlKENTU1J1bGUqIHBhcmVudFJ1bGUsIGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCogcHJvcGVy
dGllcywgaW50IG51bVByb3BlcnRpZXMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShDU1NSdWxlKiBwYXJlbnRSdWxlLCBDU1NQcm9wZXJ0
eUNvbnRhaW5lciYgcHJvcGVydGllcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24ocGFyZW50UnVsZSwgcHJvcGVydGllcywgbnVt
UHJvcGVydGllcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKHBhcmVudFJ1bGUsIHByb3BlcnRpZXMpKTsKICAgICB9CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShjb25zdCBWZWN0
b3I8Q1NTUHJvcGVydHk+JiBwcm9wZXJ0aWVzKQogICAgIHsKQEAgLTEyNCw3ICsxMjUsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBCZXNpZGVzIGFkZGluZyB0aGUgcHJvcGVydGllcywgdGhpcyBhbHNv
IHJlbW92ZXMgYW55IGV4aXN0aW5nIHByb3BlcnRpZXMgd2l0aCB0aGVzZSBJRHMuCiAgICAgLy8g
SXQgZG9lcyBubyBub3RpZmljYXRpb24gc2luY2UgaXQncyBjYWxsZWQgYnkgdGhlIHBhcnNlci4K
LSAgICB2b2lkIGFkZFBhcnNlZFByb3BlcnRpZXMoY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICos
IGludCBudW1Qcm9wZXJ0aWVzKTsKKyAgICB2b2lkIGFkZFBhcnNlZFByb3BlcnRpZXMoQ1NTUHJv
cGVydHlDb250YWluZXImIHByb3BlcnRpZXMpOwogICAgIC8vIFRoaXMgZG9lcyBubyBjaGFuZ2Ug
bm90aWZpY2F0aW9ucyBzaW5jZSBpdCdzIG9ubHkgY2FsbGVkIGJ5IGNyZWF0ZU1hcmt1cC4KICAg
ICB2b2lkIGFkZFBhcnNlZFByb3BlcnR5KGNvbnN0IENTU1Byb3BlcnR5Jik7CiAgCkBAIC0xNDks
NyArMTUwLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbigpOwogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVu
dFJ1bGUsIGNvbnN0IFZlY3RvcjxDU1NQcm9wZXJ0eT4mKTsKLSAgICBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBDU1NQcm9wZXJ0eSogY29uc3Qg
KiwgaW50IG51bVByb3BlcnRpZXMpOworICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENT
U1J1bGUqIHBhcmVudFJ1bGUsIENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9wZXJ0aWVzKTsKIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbWFrZU11
dGFibGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBmZjQzYTJkLi45ZDYyZTAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTY1LDE0ICsxNjUsMTAgQEAgQ1NTUGFy
c2VyOjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQYXJzaW5nKQogICAgICwgbV9pZCgwKQogICAgICwg
bV9zdHlsZVNoZWV0KDApCiAgICAgLCBtX3ZhbHVlTGlzdCgwKQotICAgICwgbV9wYXJzZWRQcm9w
ZXJ0aWVzKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5Kio+KGZhc3RNYWxsb2MoMzIgKiBzaXplb2Yo
Q1NTUHJvcGVydHkqKSkpKQotICAgICwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKDApCi0gICAgLCBt
X21heFBhcnNlZFByb3BlcnRpZXMoMzIpCiAgICAgLCBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZv
cmVNYXJnaW5Cb3goSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVMpCiAgICAgLCBtX2luUGFy
c2VTaG9ydGhhbmQoMCkKICAgICAsIG1fY3VycmVudFNob3J0aGFuZCgwKQogICAgICwgbV9pbXBs
aWNpdFNob3J0aGFuZChmYWxzZSkKLSAgICAsIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKGZhbHNl
KQogICAgICwgbV9oYWRTeW50YWN0aWNhbGx5VmFsaWRDU1NSdWxlKGZhbHNlKQogICAgICwgbV9k
ZWZhdWx0TmFtZXNwYWNlKHN0YXJBdG9tKQogICAgICwgbV9pblN0eWxlUnVsZU9yRGVjbGFyYXRp
b24oZmFsc2UpCkBAIC0xOTYsOSArMTkyLDYgQEAgQ1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBz
dHJpY3RQYXJzaW5nKQogCiBDU1NQYXJzZXI6On5DU1NQYXJzZXIoKQogewotICAgIGNsZWFyUHJv
cGVydGllcygpOwotICAgIGZhc3RGcmVlKG1fcGFyc2VkUHJvcGVydGllcyk7Ci0KICAgICBkZWxl
dGUgbV92YWx1ZUxpc3Q7CiAKICAgICBmYXN0RnJlZShtX2RhdGEpOwpAQCAtNDU5LDExICs0NTIs
MTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24qIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHkKICAgICBtX3J1bGUgPSAwOwogCiAgICAgYm9v
bCBvayA9IGZhbHNlOwotICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAgICAg
ZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0gICAgaWYgKG1fbnVtUGFyc2VkUHJvcGVydGll
cykgeworICAgIGlmIChtX3BhcnNlZFByb3BlcnRpZXMuaGFzRm9udEZhY2VPbmx5KCkpCisgICAg
ICAgIG1fcGFyc2VkUHJvcGVydGllcy5kZWxldGVGb250RmFjZU9ubHlQcm9wZXJ0aWVzKCk7Cisg
ICAgaWYgKG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpKSB7CiAgICAgICAgIG9rID0gdHJ1ZTsK
LSAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0
aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFy
c2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMpOwogICAgICAgICBjbGVhclByb3BlcnRp
ZXMoKTsKICAgICB9CiAKQEAgLTQ4NSw3ICs0NzgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VD
b2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBzdHJpY3QpCiAg
ICAgaWYgKCFwYXJzZXIucGFyc2VDb2xvcihkdW1teVN0eWxlRGVjbGFyYXRpb24uZ2V0KCksIHN0
cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHBh
cnNlci5tX3BhcnNlZFByb3BlcnRpZXNbMF0tPnZhbHVlKCk7CisgICAgQ1NTVmFsdWUqIHZhbHVl
ID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllcy5maXJzdCgpLnZhbHVlKCk7CiAgICAgaWYgKHZh
bHVlLT5jc3NWYWx1ZVR5cGUoKSAhPSBDU1NWYWx1ZTo6Q1NTX1BSSU1JVElWRV9WQUxVRSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01MDYsNyArNDk5LDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlQ29sb3IoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRlY2xhcmF0aW9uLCBjb25z
dCBTdHJpbmcKICAgICBjc3N5eXBhcnNlKHRoaXMpOwogICAgIG1fcnVsZSA9IDA7CiAKLSAgICBy
ZXR1cm4gKG1fbnVtUGFyc2VkUHJvcGVydGllcyAmJiBtX3BhcnNlZFByb3BlcnRpZXNbMF0tPm1f
aWQgPT0gQ1NTUHJvcGVydHlDb2xvcik7CisgICAgcmV0dXJuIChtX3BhcnNlZFByb3BlcnRpZXMu
Y291bnQoKSAmJiBtX3BhcnNlZFByb3BlcnRpZXMuZmlyc3QoKS5pZCgpID09IENTU1Byb3BlcnR5
Q29sb3IpOwogfQogCiBib29sIENTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Db2xvcihSR0JBMzImIGNv
bG9yLCBjb25zdCBTdHJpbmcmIHN0cmluZywgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNTYwLDEx
ICs1NTMsMTIgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24qIGRlY2xhcmF0aW9uLCBjb25zdAogICAgIG1fcnVsZSA9IDA7CiAKICAg
ICBib29sIG9rID0gZmFsc2U7Ci0gICAgaWYgKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKQotICAg
ICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKLSAgICBpZiAobV9udW1QYXJzZWRQcm9w
ZXJ0aWVzKSB7CisgICAgaWYgKG1fcGFyc2VkUHJvcGVydGllcy5oYXNGb250RmFjZU9ubHkoKSkK
KyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmRlbGV0ZUZvbnRGYWNlT25seVByb3BlcnRpZXMo
KTsKKworICAgIGlmIChtX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSkgewogICAgICAgICBvayA9
IHRydWU7Ci0gICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2Vk
UHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgZGVjbGFyYXRpb24t
PmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzKTsKICAgICAgICAgY2xlYXJQ
cm9wZXJ0aWVzKCk7CiAgICAgfQogCkBAIC02MDgsMzMgKzYwMiwxOCBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VNZWRpYVF1ZXJ5KE1lZGlhTGlzdCogcXVlcmllcywgY29uc3QgU3RyaW5nJiBzdHJp
bmcpCiAKIHZvaWQgQ1NTUGFyc2VyOjphZGRQcm9wZXJ0eShpbnQgcHJvcElkLCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgT3duUHRyPENTU1Byb3Bl
cnR5PiBwcm9wKGFkb3B0UHRyKG5ldyBDU1NQcm9wZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRh
bnQsIG1fY3VycmVudFNob3J0aGFuZCwgbV9pbXBsaWNpdFNob3J0aGFuZCkpKTsKLSAgICBpZiAo
bV9udW1QYXJzZWRQcm9wZXJ0aWVzID49IG1fbWF4UGFyc2VkUHJvcGVydGllcykgewotICAgICAg
ICBtX21heFBhcnNlZFByb3BlcnRpZXMgKz0gMzI7Ci0gICAgICAgIGlmIChtX21heFBhcnNlZFBy
b3BlcnRpZXMgPiBVSU5UX01BWCAvIHNpemVvZihDU1NQcm9wZXJ0eSopKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMgPSBzdGF0aWNfY2FzdDxDU1NQcm9w
ZXJ0eSoqPihmYXN0UmVhbGxvYyhtX3BhcnNlZFByb3BlcnRpZXMsCi0gICAgICAgICAgICBtX21h
eFBhcnNlZFByb3BlcnRpZXMgKiBzaXplb2YoQ1NTUHJvcGVydHkqKSkpOwotICAgIH0KLSAgICBt
X3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzKytdID0gcHJvcC5sZWFrUHRy
KCk7CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmFkZFByb3BlcnR5KHByb3BJZCwgdmFsdWUsIGlt
cG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5kLCBtX2ltcGxpY2l0U2hvcnRoYW5kKTsKIH0KIAog
dm9pZCBDU1NQYXJzZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSkKIHsKLSAgICBB
U1NFUlQobnVtID49IDApOwotICAgIEFTU0VSVChtX251bVBhcnNlZFByb3BlcnRpZXMgPj0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG51bSkpOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW07
ICsraSkKLSAgICAgICAgZGVsZXRlIG1fcGFyc2VkUHJvcGVydGllc1stLW1fbnVtUGFyc2VkUHJv
cGVydGllc107CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
bnVtKTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OmNsZWFyUHJvcGVydGllcygpCiB7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbnVtUGFyc2VkUHJvcGVydGllczsgaSsrKQotICAgICAg
ICBkZWxldGUgbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwotICAgIG1fbnVtUGFyc2VkUHJvcGVydGll
cyA9IDA7CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmNsZWFyUHJvcGVydGllcygpOwogICAgIG1f
bnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCA9IElOVkFMSURfTlVNX1BBUlNFRF9Q
Uk9QRVJUSUVTOwotICAgIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzID0gZmFsc2U7CiB9CiAgICAg
CiB2b2lkIENTU1BhcnNlcjo6c2V0U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0
KQpAQCAtOTQ0LDcgKzkyMyw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBw
cm9wSWQpOwogICAgICAgICBpZiAobnVtICE9IDEgfHwgIXBhcnNlVmFsdWUoQ1NTUHJvcGVydHlP
dmVyZmxvd1gsIGltcG9ydGFudCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRp
ZXMgLSAxXS0+dmFsdWUoKTsKKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9w
ZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92
ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTEwNDEsNyArMTAyMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhp
cywgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKTsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1
ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251
bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFs
dWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQ
cm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xNjk2LDcgKzE2NzUsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIFNo
b3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2Up
OwogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUqIHZh
bHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUo
KTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0
KCkudmFsdWUoKTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVl
LCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTI0
NjMsNyArMjQ0Miw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwg
Y29uc3QgaW50ICpwcm9wZXJ0aWVzLCAgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNhc2UgMTog
ewogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZh
bHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUo
KTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0
KCkudmFsdWUoKTsKICAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlz
LCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNb
MV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGll
c1syXSwgdmFsdWUsIGltcG9ydGFudCk7CkBAIC0yNDczLDE3ICsyNDUyLDE3IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0aWVzLCAg
Ym9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNhc2UgMjogewogICAgICAgICAgICAgaWYgKCFwYXJz
ZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGll
c1sxXSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBDU1NWYWx1ZSAqdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJz
ZWRQcm9wZXJ0aWVzLmxhc3RCdXRPbmUoKS52YWx1ZSgpOwogICAgICAgICAgICAgSW1wbGljaXRT
Y29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQpOwogICAgICAgICAgICAg
YWRkUHJvcGVydHkocHJvcGVydGllc1syXSwgdmFsdWUsIGltcG9ydGFudCk7Ci0gICAgICAgICAg
ICB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZh
bHVlKCk7CisgICAgICAgICAgICB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0QnV0T25l
KCkudmFsdWUoKTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVl
LCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSAzOiB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0
YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZh
bHVlKHByb3BlcnRpZXNbMl0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21f
bnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2
YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0QnV0T25lKCkudmFsdWUoKTsKICAgICAgICAg
ICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsK
ICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVlLCBpbXBvcnRhbnQp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zODQ3LDcgKzM4MjYsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VGb250U3R5bGUoYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogCiAgICAgaWYgKHZhbHVl
cyAmJiB2YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAgIG1faGFzRm9udEZhY2VPbmx5VmFsdWVz
ID0gdHJ1ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnNldEZvbnRGYWNlT25seSgpOwog
ICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgdmFsdWVzLnJlbGVhc2Uo
KSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzg5NCw3ICsz
ODczLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFZhcmlhbnQoYm9vbCBpbXBvcnRhbnQp
CiAgICAgfQogCiAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAg
IG1faGFzRm9udEZhY2VPbmx5VmFsdWVzID0gdHJ1ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0
aWVzLnNldEZvbnRGYWNlT25seSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRWYXJpYW50LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC0zOTQ3LDcgKzM5MjYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VG
b250V2VpZ2h0KGJvb2wgaW1wb3J0YW50KQogICAgIH0KIAogICAgIGlmICh2YWx1ZXMgJiYgdmFs
dWVzLT5sZW5ndGgoKSkgewotICAgICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IHRydWU7
CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5zZXRGb250RmFjZU9ubHkoKTsKICAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBv
cnRhbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC02NDExLDkgKzYzOTAsOSBA
QCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1Bh
cnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcgogICAgICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBt
X2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zID0gZmFsc2U7CiAgICAgICAgIFJlZlB0cjxDU1NT
dHlsZVJ1bGU+IHJ1bGUgPSBDU1NTdHlsZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQsIG1fbGFz
dFNlbGVjdG9yTGluZU51bWJlcik7CiAgICAgICAgIHJ1bGUtPmFkb3B0U2VsZWN0b3JWZWN0b3Io
KnNlbGVjdG9ycyk7Ci0gICAgICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAg
ICAgICAgIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotICAgICAgICBydWxlLT5zZXREZWNs
YXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1f
cGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIGlmICht
X3BhcnNlZFByb3BlcnRpZXMuaGFzRm9udEZhY2VPbmx5KCkpCisgICAgICAgICAgICBtX3BhcnNl
ZFByb3BlcnRpZXMuZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygpOworICAgICAgICBydWxl
LT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUu
Z2V0KCksIG1fcGFyc2VkUHJvcGVydGllcykpOwogICAgICAgICByZXN1bHQgPSBydWxlLmdldCgp
OwogICAgICAgICBtX3BhcnNlZFN0eWxlT2JqZWN0cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwog
ICAgICAgICBpZiAobV9ydWxlUmFuZ2VNYXApIHsKQEAgLTY0MzUsOCArNjQxNCw5IEBAIENTU1J1
bGUqIENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+ID4qIHNlbGVjdG9yCiBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVs
ZSgpCiB7CiAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0
aW9ucyA9IGZhbHNlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBhcnNlZFBy
b3BlcnRpZXM7ICsraSkgewotICAgICAgICBDU1NQcm9wZXJ0eSogcHJvcGVydHkgPSBtX3BhcnNl
ZFByb3BlcnRpZXNbaV07CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wYXJzZWRQ
cm9wZXJ0aWVzLmNvdW50KCk7ICsraSkgeworICAgICAgICBDU1NQcm9wZXJ0eSogcHJvcGVydHkg
PSAmbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwogICAgICAgICBpbnQgaWQgPSBwcm9wZXJ0eS0+aWQo
KTsKICAgICAgICAgaWYgKChpZCA9PSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQgfHwgaWQgPT0gQ1NT
UHJvcGVydHlGb250U3R5bGUgfHwgaWQgPT0gQ1NTUHJvcGVydHlGb250VmFyaWFudCkgJiYgcHJv
cGVydHktPnZhbHVlKCktPmlzUHJpbWl0aXZlVmFsdWUoKSkgewogICAgICAgICAgICAgUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZSA9IHByb3BlcnR5LT5tX3ZhbHVlLnJlbGVhc2UoKTsKQEAgLTY0NTEs
OCArNjQzMSw5IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlRm9udEZhY2VSdWxlKCkKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQorCiAgICAgUmVmUHRyPENTU0Zv
bnRGYWNlUnVsZT4gcnVsZSA9IENTU0ZvbnRGYWNlUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7
Ci0gICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNy
ZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGll
cykpOworICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzKSk7CiAgICAgY2xlYXJQcm9w
ZXJ0aWVzKCk7CiAgICAgQ1NTRm9udEZhY2VSdWxlKiByZXN1bHQgPSBydWxlLmdldCgpOwogICAg
IG1fcGFyc2VkU3R5bGVPYmplY3RzLmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CkBAIC02NTI2LDcg
KzY1MDcsNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKFBhc3NPd25QdHI8
Q1NTUGFyc2VyU2VsZWN0b3I+IHBhZ2VTZWxlY3RvcikKICAgICAgICAgVmVjdG9yPE93blB0cjxD
U1NQYXJzZXJTZWxlY3Rvcj4gPiBzZWxlY3RvclZlY3RvcjsKICAgICAgICAgc2VsZWN0b3JWZWN0
b3IuYXBwZW5kKHBhZ2VTZWxlY3Rvcik7CiAgICAgICAgIHJ1bGUtPmFkb3B0U2VsZWN0b3JWZWN0
b3Ioc2VsZWN0b3JWZWN0b3IpOwotICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVydGll
cywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIHJ1bGUtPnNldERlY2xhcmF0aW9u
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQ
cm9wZXJ0aWVzKSk7CiAgICAgICAgIHBhZ2VSdWxlID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9w
YXJzZWRTdHlsZU9iamVjdHMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICB9CkBAIC02NTQ3
LDM0ICs2NTI4LDE2IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlTWFyZ2luQXRSdWxlKENT
U1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIC8qIG1hcmdpbkJveCAqCiAKIHZvaWQgQ1NTUGFyc2Vy
OjpzdGFydERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpCiB7Ci0gICAgbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzOworICAgIG1fbnVt
UGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCA9IG1fcGFyc2VkUHJvcGVydGllcy5jb3Vu
dCgpOwogfQogCiB2b2lkIENTU1BhcnNlcjo6ZW5kRGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCkK
IHsKICAgICBBU1NFUlQobV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ICE9IElO
VkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTKTsKLSAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVz
KG1fbnVtUGFyc2VkUHJvcGVydGllcyAtIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdp
bkJveCk7CisgICAgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMuY291
bnQoKSAtIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCk7CiAgICAgbV9udW1Q
YXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BF
UlRJRVM7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjpkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKQot
ewotICAgIEFTU0VSVChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyk7Ci0gICAgaW50IGRlbGV0ZWRQ
cm9wZXJ0aWVzID0gMDsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBhcnNl
ZFByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBDU1NQcm9wZXJ0eSogcHJvcGVydHkgPSBtX3Bh
cnNlZFByb3BlcnRpZXNbaV07Ci0gICAgICAgIGludCBpZCA9IHByb3BlcnR5LT5pZCgpOwotICAg
ICAgICBpZiAoKGlkID09IENTU1Byb3BlcnR5Rm9udFdlaWdodCB8fCBpZCA9PSBDU1NQcm9wZXJ0
eUZvbnRTdHlsZSB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KSAmJiBwcm9wZXJ0eS0+
dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAgICAgZGVsZXRlIHByb3BlcnR5Owot
ICAgICAgICAgICAgZGVsZXRlZFByb3BlcnRpZXMrKzsKLSAgICAgICAgfSBlbHNlIGlmIChkZWxl
dGVkUHJvcGVydGllcykKLSAgICAgICAgICAgIG1fcGFyc2VkUHJvcGVydGllc1tpIC0gZGVsZXRl
ZFByb3BlcnRpZXNdID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwotICAgIH0KLQotICAgIG1fbnVt
UGFyc2VkUHJvcGVydGllcyAtPSBkZWxldGVkUHJvcGVydGllczsKLX0KLQogV2ViS2l0Q1NTS2V5
ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJWYWx1ZUxp
c3QqIGtleXMpCiB7CiAgICAgLy8gQ3JlYXRlIGEga2V5IHN0cmluZyBmcm9tIHRoZSBwYXNzZWQg
a2V5cwpAQCAtNjU4OSw3ICs2NTUyLDcgQEAgV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJz
ZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJWYWx1ZUxpc3QqIGtleXMpCiAKICAgICBS
ZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBrZXlmcmFtZSA9IFdlYktpdENTU0tleWZyYW1l
UnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7CiAgICAga2V5ZnJhbWUtPnNldEtleVRleHQoa2V5
U3RyaW5nKTsKLSAgICBrZXlmcmFtZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OmNyZWF0ZSgwLCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVy
dGllcykpOworICAgIGtleWZyYW1lLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6Y3JlYXRlKDAsIG1fcGFyc2VkUHJvcGVydGllcykpOwogCiAgICAgY2xlYXJQcm9w
ZXJ0aWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBjNmYwNzhhLi5mOWFjMGNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJDU1NH
cmFkaWVudFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmgiCisjaW5jbHVkZSAi
Q1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURhdGEu
aCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCkBAIC03NSw3
ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGFkZFByb3BlcnR5
KGludCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCk7CiAgICAg
ICAgIHZvaWQgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKTsKLSAgICAgICAgYm9vbCBo
YXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1QYXJzZWRQcm9wZXJ0aWVzID4gMDsg
fQorICAgICAgICBib29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlZFBy
b3BlcnRpZXMuY291bnQoKSA+IDA7IH0KIAogICAgICAgICBib29sIHBhcnNlVmFsdWUoaW50IHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgICAgICBib29sIHBhcnNlU2hvcnRoYW5kKGludCBw
cm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1w
b3J0YW50KTsKQEAgLTIzOSwxOCArMjQwLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgUmVmUHRyPENTU1J1bGU+IG1fa2V5ZnJhbWU7CiAgICAgICAgIE93blB0cjxNZWRpYVF1ZXJ5
PiBtX21lZGlhUXVlcnk7CiAgICAgICAgIENTU1BhcnNlclZhbHVlTGlzdCogbV92YWx1ZUxpc3Q7
Ci0gICAgICAgIENTU1Byb3BlcnR5KiogbV9wYXJzZWRQcm9wZXJ0aWVzOworICAgICAgICBDU1NQ
cm9wZXJ0eUNvbnRhaW5lciBtX3BhcnNlZFByb3BlcnRpZXM7CiAgICAgICAgIENTU1NlbGVjdG9y
TGlzdCogbV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yOwogICAgICAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWVDYWNoZT4gbV9wcmltaXRpdmVWYWx1ZUNhY2hlOwotICAgICAgICB1bnNp
Z25lZCBtX251bVBhcnNlZFByb3BlcnRpZXM7Ci0gICAgICAgIHVuc2lnbmVkIG1fbWF4UGFyc2Vk
UHJvcGVydGllczsKICAgICAgICAgdW5zaWduZWQgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3Jl
TWFyZ2luQm94OwogCiAgICAgICAgIGludCBtX2luUGFyc2VTaG9ydGhhbmQ7CiAgICAgICAgIGlu
dCBtX2N1cnJlbnRTaG9ydGhhbmQ7CiAgICAgICAgIGJvb2wgbV9pbXBsaWNpdFNob3J0aGFuZDsK
IAotICAgICAgICBib29sIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzOwogICAgICAgICBib29sIG1f
aGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZTsKIAogICAgICAgICBBdG9taWNTdHJpbmcgbV9k
ZWZhdWx0TmFtZXNwYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAppbmRleCA0YTQ2ZmMyLi42
ZDBmNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaApAQCAtMzIsNiArMzIsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTUHJvcGVydHkgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgorICAgIENTU1Byb3BlcnR5KCkKKyAgICB7CisgICAgfQorCiAg
ICAgQ1NTUHJvcGVydHkoaW50IHByb3BJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJv
b2wgaW1wb3J0YW50ID0gZmFsc2UsIGludCBzaG9ydGhhbmRJRCA9IDAsIGJvb2wgaW1wbGljaXQg
PSBmYWxzZSkKICAgICAgICAgOiBtX2lkKHByb3BJRCkKICAgICAgICAgLCBtX3Nob3J0aGFuZElE
KHNob3J0aGFuZElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRiM2FkYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAKQEAg
LTAsMCArMSwyNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdlYmtpdC5vcmc+LCBVbml2ZXJzaXR5
IG9mIFN6ZWdlZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250
YWluZXIuaCIKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdURjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6
Q1NTUHJvcGVydHlDb250YWluZXIoKQorICAgIDogbV9udW1WYWxpZFByb3BlcnRpZXMoMCkKKyAg
ICAsIG1fdXNlZFNpemUoMCkKKyAgICAsIG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyhmYWxz
ZSkKK3sKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6c3dlZXAoKQoreworICAgIGlm
IChtX251bVZhbGlkUHJvcGVydGllcyA9PSBtX3VzZWRTaXplKQorICAgICAgICByZXR1cm47CisK
KyAgICB1bnNpZ25lZCBkZWxldGVkUHJvcGVydGllcyA9IDA7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV91c2VkU2l6ZTsgKytpKSB7CisgICAgICAgIGlmICghbV9wcm9wZXJ0aWVz
W2ldLmlkKCkpCisgICAgICAgICAgICArK2RlbGV0ZWRQcm9wZXJ0aWVzOworICAgICAgICBlbHNl
IGlmIChkZWxldGVkUHJvcGVydGllcykgeworICAgICAgICAgICAgbV9pZFRvUG9zaXRpb25NYXAu
c2V0KG1fcHJvcGVydGllc1tpXS5pZCgpLCBpIC0gZGVsZXRlZFByb3BlcnRpZXMpOworICAgICAg
ICAgICAgbV9wcm9wZXJ0aWVzW2kgLSBkZWxldGVkUHJvcGVydGllc10gPSBtX3Byb3BlcnRpZXNb
aV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3VzZWRTaXplIC09IGRlbGV0ZWRQcm9wZXJ0
aWVzOworCisgICAgaWYgKG1faWRUb1Bvc2l0aW9uTWFwLnNpemUoKSA+IG1fcHJvcGVydGllcy5z
aXplKCkgKyBrR3Jvd0ZhY3RvcikgeworICAgICAgICBtX2lkVG9Qb3NpdGlvbk1hcC5jbGVhcigp
OworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3VzZWRTaXplOyArK2kpCisg
ICAgICAgICAgICBtX2lkVG9Qb3NpdGlvbk1hcC5hZGQobV9wcm9wZXJ0aWVzW2ldLmlkKCksIGkp
OworICAgIH0KKworICAgIEFTU0VSVChtX251bVZhbGlkUHJvcGVydGllcyA9PSBtX3VzZWRTaXpl
KTsKK30KKworaW5saW5lIHZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6Omdyb3dJZk5lZWRlZCgp
Cit7CisgICAgaWYgKG1fdXNlZFNpemUgKyAxID49IG1fcHJvcGVydGllcy5zaXplKCkpCisgICAg
ICAgIHN3ZWVwKCk7CisKKyAgICBpZiAobV91c2VkU2l6ZSA9PSBtX3Byb3BlcnRpZXMuc2l6ZSgp
KQorICAgICAgICBtX3Byb3BlcnRpZXMuYWxsb2MoKTsKK30KKworaW5saW5lIHVuc2lnbmVkIENT
U1Byb3BlcnR5Q29udGFpbmVyOjppbnRlcm5hbFBvc2l0aW9uKGludCBwcm9wZXJ0eUlEKQorewor
ICAgIGlmICghcHJvcGVydHlJRCB8fCAhbV9pZFRvUG9zaXRpb25NYXAuY29udGFpbnMocHJvcGVy
dHlJRCkpCisgICAgICAgIHJldHVybiBrSW52YWxpZFBvc2l0aW9uOworCisgICAgdW5zaWduZWQg
cG9zaXRpb24gPSBtX2lkVG9Qb3NpdGlvbk1hcC5nZXQocHJvcGVydHlJRCk7CisKKyAgICBpZiAo
cG9zaXRpb24gPT0ga0ludmFsaWRQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIGtJbnZhbGlkUG9z
aXRpb247CisKKyAgICBBU1NFUlQocG9zaXRpb24gPCBtX3VzZWRTaXplKTsKKworICAgIGlmICgh
bV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS5pZCgpKQorICAgICAgICByZXR1cm4ga0ludmFsaWRQb3Np
dGlvbjsKKworICAgIHJldHVybiBwb3NpdGlvbjsKK30KKworaW5saW5lIHZvaWQgQ1NTUHJvcGVy
dHlDb250YWluZXI6OmludmFsaWRhdGVCeVBvc2l0aW9uKHVuc2lnbmVkIHBvc2l0aW9uKQorewor
ICAgIGlmIChwb3NpdGlvbiA+PSBtX3VzZWRTaXplIHx8ICFtX3Byb3BlcnRpZXNbcG9zaXRpb25d
LmlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC0tbV9udW1WYWxpZFByb3BlcnRpZXM7CisK
KyAgICBtX2lkVG9Qb3NpdGlvbk1hcC5zZXQobV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS5pZCgpLCBr
SW52YWxpZFBvc2l0aW9uKTsKKyAgICBtX3Byb3BlcnRpZXNbcG9zaXRpb25dLm1faWQgPSAwOwor
fQorCitpbmxpbmUgdm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW52YWxpZGF0ZUJ5SWQoaW50
IHByb3BlcnR5SUQpCit7CisgICAgaWYgKCFwcm9wZXJ0eUlEKQorICAgICAgICByZXR1cm47CisK
KyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGludGVybmFsUG9zaXRpb24ocHJvcGVydHlJRCk7CisK
KyAgICBpZiAocG9zaXRpb24gPT0ga0ludmFsaWRQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaW52YWxpZGF0ZUJ5UG9zaXRpb24ocG9zaXRpb24pOworfQorCitDU1NQcm9wZXJ0eSog
Q1NTUHJvcGVydHlDb250YWluZXI6OmZpbmRQcm9wZXJ0eVdpdGhJZChpbnQgcHJvcGVydHlJRCkK
K3sKKyAgICBpZiAoIXByb3BlcnR5SUQgfHwgIW1fdXNlZFNpemUpCisgICAgICAgIHJldHVybiAw
OworCisgICAgdW5zaWduZWQgcG9zaXRpb24gPSBpbnRlcm5hbFBvc2l0aW9uKHByb3BlcnR5SUQp
OworCisgICAgaWYgKHBvc2l0aW9uID09IGtJbnZhbGlkUG9zaXRpb24pCisgICAgICAgIHJldHVy
biAwOworCisgICAgcmV0dXJuICZtX3Byb3BlcnRpZXNbcG9zaXRpb25dOworfQorCitjb25zdCBD
U1NQcm9wZXJ0eSYgQ1NTUHJvcGVydHlDb250YWluZXI6OmZpcnN0KCkKK3sKKyAgICBBU1NFUlQo
IW1fcHJvcGVydGllcy5pc0VtcHR5KCkgJiYgbV9udW1WYWxpZFByb3BlcnRpZXMpOworCisgICAg
aWYgKCFtX3Byb3BlcnRpZXNbMF0uaWQoKSkKKyAgICAgICAgc3dlZXAoKTsKKworICAgIEFTU0VS
VChtX3Byb3BlcnRpZXNbMF0uaWQoKSk7CisKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzWzBdOwor
fQorCitjb25zdCBDU1NQcm9wZXJ0eSYgQ1NTUHJvcGVydHlDb250YWluZXI6Omxhc3QoKQorewor
ICAgIEFTU0VSVCghbV9wcm9wZXJ0aWVzLmlzRW1wdHkoKSAmJiBtX251bVZhbGlkUHJvcGVydGll
cyk7CisKKyAgICBpZiAoIW1fcHJvcGVydGllc1ttX3VzZWRTaXplIC0gMV0uaWQoKSkKKyAgICAg
ICAgc3dlZXAoKTsKKworICAgIEFTU0VSVChtX3VzZWRTaXplICYmIG1fcHJvcGVydGllc1ttX3Vz
ZWRTaXplIC0gMV0uaWQoKSk7CisKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzW21fdXNlZFNpemUg
LSAxXTsKK30KKworY29uc3QgQ1NTUHJvcGVydHkmIENTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0
QnV0T25lKCkKK3sKKyAgICBBU1NFUlQoIW1fcHJvcGVydGllcy5pc0VtcHR5KCkgJiYgbV9udW1W
YWxpZFByb3BlcnRpZXMgPj0gMik7CisKKyAgICBpZiAoIW1fcHJvcGVydGllc1ttX3VzZWRTaXpl
IC0gMV0uaWQoKSB8fCAhbV9wcm9wZXJ0aWVzW21fdXNlZFNpemUgLSAyXS5pZCgpKQorICAgICAg
ICBzd2VlcCgpOworCisgICAgQVNTRVJUKG1fdXNlZFNpemUgPj0gMiAmJiBtX3Byb3BlcnRpZXNb
bV91c2VkU2l6ZSAtIDJdLmlkKCkpOworCisgICAgcmV0dXJuIG1fcHJvcGVydGllc1ttX3VzZWRT
aXplIC0gMl07Cit9CisKK0NTU1Byb3BlcnR5JiBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6b3BlcmF0
b3JbXShzaXplX3QgaW5kZXgpCit7CisgICAgc3dlZXAoKTsKKyAgICBBU1NFUlQoaW5kZXggPCBt
X3VzZWRTaXplKTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzLmF0KGluZGV4KTsKK30KKworYm9v
bCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y29udGFpbnNQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkK
K3sKKyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGludGVybmFsUG9zaXRpb24ocHJvcGVydHlJRCk7
CisKKyAgICBpZiAocG9zaXRpb24gPT0ga0ludmFsaWRQb3NpdGlvbikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWlu
ZXI6OnJlbW92ZVByb3BlcnR5KGludCBwcm9wZXJ0eUlEKQoreworICAgIGludmFsaWRhdGVCeUlk
KHByb3BlcnR5SUQpOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVQcm9w
ZXJ0aWVzKGNvbnN0IGludCogaWRMaXN0LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICBpbnZhbGlkYXRlQnlJZChp
ZExpc3RbaV0pOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjphZGRQcm9wZXJ0eShp
bnQgcHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0YW50
LCBpbnQgc2hvcnRoYW5kSUQsIGJvb2wgaW1wbGljaXQpCit7CisgICAgZ3Jvd0lmTmVlZGVkKCk7
CisKKyAgICB1bnNpZ25lZCBvbGRQb3NpdGlvbiA9IGludGVybmFsUG9zaXRpb24ocHJvcGVydHlJ
RCk7CisKKyAgICBpZiAob2xkUG9zaXRpb24gIT0ga0ludmFsaWRQb3NpdGlvbikgeworICAgICAg
ICBpZiAobV9wcm9wZXJ0aWVzW29sZFBvc2l0aW9uXS5pZCgpICYmIG1fcHJvcGVydGllc1tvbGRQ
b3NpdGlvbl0uaXNJbXBvcnRhbnQoKSAmJiAhaW1wb3J0YW50KQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGludmFsaWRhdGVCeVBvc2l0aW9uKG9sZFBvc2l0aW9uKTsKKyAgICB9CisK
KyAgICBtX3Byb3BlcnRpZXNbbV91c2VkU2l6ZV0gPSBDU1NQcm9wZXJ0eShwcm9wZXJ0eUlELCB2
YWx1ZSwgaW1wb3J0YW50LCBzaG9ydGhhbmRJRCwgaW1wbGljaXQpOworICAgIG1faWRUb1Bvc2l0
aW9uTWFwLnNldChwcm9wZXJ0eUlELCBtX3VzZWRTaXplKTsKKyAgICArK21fbnVtVmFsaWRQcm9w
ZXJ0aWVzOworICAgICsrbV91c2VkU2l6ZTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5l
cjo6cm9sbGJhY2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKQoreworICAgIGlmICghbnVtKQorICAg
ICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobnVtID4gMCk7CisgICAgQVNTRVJUKG1fbnVtVmFs
aWRQcm9wZXJ0aWVzID49IHN0YXRpY19jYXN0PHVuc2lnbmVkPihudW0pKTsKKworICAgIGludCBk
ZWxldGVkUHJvcGVydGllcyA9IDA7CisgICAgaW50IHBvc2l0aW9uID0gbV91c2VkU2l6ZTsKKyAg
ICB3aGlsZSAoZGVsZXRlZFByb3BlcnRpZXMgIT0gbnVtICYmIC0tcG9zaXRpb24gPj0gMCkgewor
ICAgICAgICBpZiAobV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS5pZCgpKSB7CisgICAgICAgICAgICBp
bnZhbGlkYXRlQnlQb3NpdGlvbihwb3NpdGlvbik7CisgICAgICAgICAgICArK2RlbGV0ZWRQcm9w
ZXJ0aWVzOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVy
OjpkZWxldGVGb250RmFjZU9ubHlQcm9wZXJ0aWVzKCkKK3sKKyAgICBBU1NFUlQobV9oYXNGb250
RmFjZU9ubHlQcm9wZXJ0aWVzKTsKKworICAgIGludCBpZHNbM10gPSB7Q1NTUHJvcGVydHlGb250
V2VpZ2h0LCBDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgQ1NTUHJvcGVydHlGb250VmFyaWFudH07CisK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAgICB1bnNpZ25lZCBwb3Np
dGlvbiA9IGludGVybmFsUG9zaXRpb24oaWRzW2ldKTsKKworICAgICAgICBpZiAocG9zaXRpb24g
PT0ga0ludmFsaWRQb3NpdGlvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlm
IChtX3Byb3BlcnRpZXNbcG9zaXRpb25dLnZhbHVlKCktPmlzVmFsdWVMaXN0KCkpCisgICAgICAg
ICAgICBpbnZhbGlkYXRlQnlQb3NpdGlvbihwb3NpdGlvbik7CisgICAgfQorICAgIG1faGFzRm9u
dEZhY2VPbmx5UHJvcGVydGllcyA9IGZhbHNlOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFp
bmVyOjpjbGVhclByb3BlcnRpZXMoKQoreworICAgIG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGll
cyA9IGZhbHNlOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdXNlZFNpemU7ICsr
aSkKKyAgICAgICAgaW52YWxpZGF0ZUJ5UG9zaXRpb24oaSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRh
aW5lci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY1MGNkZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oCkBAIC0wLDAgKzEsNzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdlYmtpdC5vcmc+LCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aWZuZGVmIENTU1Byb3BlcnR5Q29udGFpbmVyX2gKKyNkZWZpbmUgQ1NTUHJvcGVydHlDb250YWlu
ZXJfaAorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0
aWMgY29uc3QgdW5zaWduZWQga0dyb3dGYWN0b3IgPSAzMjsKK3N0YXRpYyBjb25zdCB1bnNpZ25l
ZCBrSW52YWxpZFBvc2l0aW9uID0gVUlOVF9NQVg7CisKK2NsYXNzIENTU1Byb3BlcnR5Q29udGFp
bmVyIHsKK3B1YmxpYzoKKyAgICBDU1NQcm9wZXJ0eUNvbnRhaW5lcigpOworICAgIGNvbnN0IENT
U1Byb3BlcnR5JiBmaXJzdCgpOworICAgIGNvbnN0IENTU1Byb3BlcnR5JiBsYXN0KCk7CisgICAg
Y29uc3QgQ1NTUHJvcGVydHkmIGxhc3RCdXRPbmUoKTsKKyAgICBDU1NQcm9wZXJ0eSogZmluZFBy
b3BlcnR5V2l0aElkKGludCBwcm9wZXJ0eUlEKTsKKworICAgIGlubGluZSB1bnNpZ25lZCBjb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtVmFsaWRQcm9wZXJ0aWVzOyB9CisgICAgaW5saW5lIGJv
b2wgaGFzRm9udEZhY2VPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9oYXNGb250RmFjZU9ubHlQcm9w
ZXJ0aWVzOyB9CisgICAgaW5saW5lIHZvaWQgc2V0Rm9udEZhY2VPbmx5KCkgeyBtX2hhc0ZvbnRG
YWNlT25seVByb3BlcnRpZXMgPSB0cnVlOyB9CisKKyAgICBDU1NQcm9wZXJ0eSYgb3BlcmF0b3Jb
XShzaXplX3QgaW5kZXgpOworCisgICAgYm9vbCBjb250YWluc1Byb3BlcnR5KGludCBwcm9wZXJ0
eUlEKTsKKyAgICB2b2lkIHJlbW92ZVByb3BlcnR5KGludCBwcm9wZXJ0eUlEKTsKKyAgICB2b2lk
IHJlbW92ZVByb3BlcnRpZXMoY29uc3QgaW50KiBpZExpc3QsIHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgdm9pZCBhZGRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4s
IGJvb2wgaW1wb3J0YW50LCBpbnQgc2hvcnRoYW5kSUQgPSAwLCBib29sIGltcGxpY2l0ID0gZmFs
c2UpOworICAgIHZvaWQgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKTsKKyAgICB2b2lk
IGRlbGV0ZUZvbnRGYWNlT25seVByb3BlcnRpZXMoKTsKKyAgICB2b2lkIGNsZWFyUHJvcGVydGll
cygpOworCitwcml2YXRlOgorICAgIHZvaWQgc3dlZXAoKTsKKyAgICBpbmxpbmUgdm9pZCBncm93
SWZOZWVkZWQoKTsKKyAgICBpbmxpbmUgdW5zaWduZWQgaW50ZXJuYWxQb3NpdGlvbihpbnQgcHJv
cGVydHlJRCk7CisgICAgaW5saW5lIHZvaWQgaW52YWxpZGF0ZUJ5UG9zaXRpb24odW5zaWduZWQg
cG9zaXRpb24pOworICAgIGlubGluZSB2b2lkIGludmFsaWRhdGVCeUlkKGludCBwcm9wZXJ0eUlE
KTsKKworICAgIHVuc2lnbmVkIG1fbnVtVmFsaWRQcm9wZXJ0aWVzOworICAgIHVuc2lnbmVkIG1f
dXNlZFNpemU7CisKKyAgICBib29sIG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllczsKKworICAg
IFNlZ21lbnRlZFZlY3RvcjxDU1NQcm9wZXJ0eSwga0dyb3dGYWN0b3I+IG1fcHJvcGVydGllczsK
KyAgICBIYXNoTWFwPGludCwgdW5zaWduZWQ+IG1faWRUb1Bvc2l0aW9uTWFwOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTUHJvcGVydHlDb250YWluZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAppbmRleCBmM2I1YWMzLi44MDJiZmQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
IkNTU0luaXRpYWxWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNT
U1Byb3BlcnR5LmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZS5o
IgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKQEAgLTI4Niw3ICsyODcsNyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICAgICAgICAgIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoMSk7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9w
ZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcyAtIDFdLT52YWx1ZSgpOworICAgICAgICBDU1NW
YWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TWFya2VyTWlkLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAg
ICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJrZXJFbmQsIHZhbHVlLCBpbXBvcnRhbnQp
OwogICAgICAgICBtX2ltcGxpY2l0U2hvcnRoYW5kID0gZmFsc2U7Ci0tIAoxLjcuNS4yCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99476</attachid>
            <date>2011-07-01 08:51:04 -0700</date>
            <delta_ts>2011-07-05 08:20:27 -0700</delta_ts>
            <desc>proposed patch v2</desc>
            <filename>0001-CSSParser-should-use-custom-vector-like-class-for-ma.patch</filename>
            <type>text/plain</type>
            <size>44702</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSA4ZmJhNzI1ZTMxYzhkMDg5ZjJhYTllZDBiNWYzYzY0YWU0NzE0YzRiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPgpEYXRl
OiBGcmksIDEgSnVsIDIwMTEgMTc6MjU6NDUgKzAyMDAKU3ViamVjdDogW1BBVENIXSBDU1NQYXJz
ZXIgc2hvdWxkIHVzZSBjdXN0b20gdmVjdG9yLWxpa2UgY2xhc3MgZm9yIG1hbmFnaW5nCiBwcm9w
ZXJ0aWVzCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAg
ICAgICAgfCAgICAxICsKIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDc4ICsrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qICAgICAgfCAgICA4ICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgfCAgICA4ICsKIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkgICAgICAgICAgICAgICAgICAgfCAgICA4ICstCiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwIHwgICAxOCArKy0KIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oICAgfCAgICA5ICstCiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCAgICAgICAgICAgICAgICAgIHwgIDEwOSArKyst
LS0tLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCAgICAgICAgICAgICAgICAgICAg
fCAgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaCAgICAgICAgICAgICAg
ICAgIHwgICAgNCArCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3Bw
ICAgICAgIHwgIDI1NiArKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eUNvbnRhaW5lci5oICAgICAgICAgfCAgIDc1ICsrKysrKwogU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgICAgICAgICAgICAgICB8ICAgIDMgKy0KIDE2IGZpbGVz
IGNoYW5nZWQsIDUwMCBpbnNlcnRpb25zKCspLCA5MSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmgK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDU4ZTc1MjAuLmVmNDU0MDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC00NTIsNiArNDUyLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGNzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHAKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZS5jcHAK
ICAgICBjc3MvQ1NTUHJvcGVydHkuY3BwCisgICAgY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNw
cAogICAgIGNzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAogICAgIGNzcy9DU1NQcm9wZXJ0eVNv
dXJjZURhdGEuY3BwCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDUwMmU5Li5iNWI5MzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIwMTEtMDctMDEg
IEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENTU1BhcnNlciBzaG91bGQgdXNlIGN1c3RvbSAi
dmVjdG9yLWxpa2UiIGNsYXNzIGZvciBtYW5hZ2luZyBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQxNworCisgICAgICAgIEltcGxl
bWVudCBDU1NQcm9wZXJ0eUNvbnRhaW5lciB3aGljaCBvbiByZW1vdmFsIG1hcmtzIGVudHJpZXMg
YXMgZW1wdHkKKyAgICAgICAgYW5kIHN3ZWVwcyB0aGVtIHdoZW4gdGhlIGludGVybmFsIHZlY3Rv
ciBncm93cyB0b28gYmlnLgorICAgICAgICBBbHNvIHVzZSBhbiBpbnRlcm5hbCBIYXNoTWFwIHRv
IGJlIGFibGUgdG8gZWZmaWNpZW50bHkgZmluZCBlbnRyaWVzIGJ5IElECisgICAgICAgIGFuZCBh
dXRvbWF0aWNhbGx5IGRpc2NhcmQgZHVwbGljYXRlIHByb3BlcnRpZXMuCisgICAgICAgIFRoaXMg
aXMgbmVlZGVkIHRvIGJlIGFibGUgdG8gc2ltcGxpZnkgYW5kIHNwZWVkIHVwIENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uLAorICAgICAgICB0byB1c2UgdGhpcyBjb250YWluZXIgaW5zdGVhZCBv
ZiBtYWludGFpbmluZyBpdHMgb3duIGZvcmsgb2YgaW5mcmFzdHJ1Y3R1cmUKKyAgICAgICAgZm9y
IG1hbmFnaW5nIHBhcnNlZCBwcm9wZXJ0aWVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBjc3MvQ1NTR3JhbW1hci55OgorICAgICAgICAqIGNzcy9DU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OmFkZFBhcnNlZFByb3BlcnRpZXMpOgorICAgICAgICAqIGNz
cy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6On5DU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpjbGVhclByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZTRWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udFZhcmlhbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRXZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpjcmVhdGVQYWdlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnN0YXJ0
RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
ZW5kRGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Omhhc1Byb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9D
U1NQcm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OkNTU1Byb3BlcnR5
KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6c3dlZXApOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6Omdyb3dJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW50ZXJuYWxQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW52YWxpZGF0ZUJ5UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmludmFsaWRhdGVCeUlk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpmaW5kUHJvcGVydHlX
aXRoSWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmZpcnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0QnV0T25lKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpjb250YWluc1Byb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3ZlUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6YWRkUHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmRlbGV0ZUZvbnRGYWNlT25s
eVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmNs
ZWFyUHJvcGVydGllcyk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmNvdW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpoYXNGb250RmFjZU9ubHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnNldEZvbnRGYWNlT25seSk6
CisgICAgICAgICogY3NzL1NWR0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnBhcnNlU1ZHVmFsdWUpOgorCiAyMDExLTA3LTAxICBLZW50YXJvIEhhcmEgIDxoYXJh
a2VuQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxZjI1ZjAzLi45MDVmMjQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTk3Miw2ICs5NzIsOCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmggXAog
CVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWlu
ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydHlTb3VyY2VEYXRhLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDc0MGZiNi4uZTY4
NjRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDkxLDYgKzQ5MSw3IEBACiAgICAgICAgICAgICAn
Y3NzL0NTU1BhcnNlclZhbHVlcy5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5LmgnLAorICAgICAgICAgICAgJ2Nz
cy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlT
b3VyY2VEYXRhLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NSZWZsZWN0VmFsdWUuaCcsCiAgICAg
ICAgICAgICAnY3NzL0NTU1JlZmxlY3Rpb25EaXJlY3Rpb24uaCcsCkBAIC0yMzM0LDYgKzIzMzUs
NyBAQAogICAgICAgICAgICAgJ2Nzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmgnLAogICAgICAg
ICAgICAgJ2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgnLAogICAgICAgICAgICAgJ2Nz
cy9DU1NQcm9wZXJ0eS5jcHAnLAorICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5l
ci5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCcsCiAgICAg
ICAgICAgICAnY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaCcsCiAgICAgICAgICAgICAnY3NzL0NT
U1Byb3BlcnR5U291cmNlRGF0YS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBjOTQyMTc4Li5iZGFh
NTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNDEwLDYgKzQxMCw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZUNh
Y2hlLmNwcCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5LmNwcCBcCisgICAgY3NzL0NTU1Byb3BlcnR5
Q29udGFpbmVyLmNwcCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIFwKICAgICBj
c3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCBcCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1ZS5j
cHAgXApAQCAtMTM5OSw2ICsxNDAwLDcgQEAgSEVBREVSUyArPSBcCiAgICAgY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmggXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmggXAogICAgIGNz
cy9DU1NQcm9wZXJ0eS5oIFwKKyAgICBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCBcCiAgICAg
Y3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaCBcCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1ZS5oIFwK
ICAgICBjc3MvQ1NTUnVsZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggZWVmODRjMS4uMGMwY2UzYiAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMyNjE4LDYgKzMyNjE4LDE0IEBACiAJ
CQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQ
cm9wZXJ0eUNvbnRhaW5lci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTUHJvcGVydHlMb25n
aGFuZC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZjN2FjNDAuLjFlZjJkN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTQyNiw2ICs0MjYsOCBAQAogCQkxQUIxQUU3QTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vy
c29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUFCMUFFNzgwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgKi87IH07CiAJCTFB
QjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMUFFNzkwQzA1MUZERTAwMTM5
RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nICovOyB9OwogCQkxQUIzM0RBNTEyNTUxRTMyMDAyNDQ1
N0EgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUFCMzNEQTQxMjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29y
ayAqLzsgfTsKKwkJMUFCNDRBMEMxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFp
bmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QjQ0QTBCMTM2NzJDRkYwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgKi87IH07
CisJCTFBQjQ0QTBFMTM2NzJEMjAwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCNDRBMEQxMzY3
MkQyMDAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmggKi87IH07CiAJCTFBQjdGQzY4
MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RkM0NzBBOEI5MkVDMDBEOUQzN0IgLyog
WFBhdGhFdmFsdWF0b3IuY3BwICovOyB9OwogCQkxQUI3RkM2OTBBOEI5MkVDMDBEOUQzN0IgLyog
WFBhdGhFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBQjdGQzQ4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5oICovOyB9
OwogCQkxQUI3RkM2QjBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdGQzRBMEE4Qjky
RUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24uY3BwICovOyB9OwpAQCAtNjgzNiw2ICs2ODM4
LDggQEAKIAkJMUFCMUFFNzgwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7
IHBhdGggPSB6b29tSW5DdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QUIxQUU3OTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSB6
b29tT3V0Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCMzNEQTQx
MjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSU9L
aXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJh
bWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxQUI0NEEwQjEzNjcyQ0ZG
MDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ1NTUHJvcGVydHlDb250YWluZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQUI0NEEwRDEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJvcGVydHlD
b250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUHJvcGVydHlD
b250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0ZDNDcwQThCOTJF
QzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBYUGF0aEV2YWx1YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBQjdGQzQ4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBhdGhFdmFsdWF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0ZDNDkwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZh
bHVhdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWFBhdGhFdmFsdWF0b3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkwNzMsNiArMTkwNzcsOCBAQAogCQlGNTIz
RDE4NDAyREU0MkU4MDE4NjM1Q0EgLyogY3NzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkxQUI0NEEwRDEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJvcGVy
dHlDb250YWluZXIuaCAqLywKKwkJCQkxQUI0NEEwQjEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJv
cGVydHlDb250YWluZXIuY3BwICovLAogCQkJCTkzQ0E0QzlDMDlERjkzRkEwMERGODY3NyAvKiBt
YWtldG9rZW5pemVyICovLAogCQkJCUE4MEU2Q0RBMEExOTg5Q0EwMDdGQjhDNSAvKiBDb3VudGVy
LmggKi8sCiAJCQkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3RkU0IC8qIENvdW50ZXIuaWRsICovLApA
QCAtMjMwODAsNiArMjMwODYsNyBAQAogCQkJCTA4NjM5NTE2MTNCNUZFNTcwMEJCMzQ0RCAvKiBT
VkdBbmltYXRlZFBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTQzMUEyRjlDMTNCNkYyQjAwMDc3
OTFFNCAvKiBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNUFCQjc4NzEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNV
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUI0NEEwRTEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJv
cGVydHlDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjU4NDcsNiArMjU4NTQsNyBAQAog
CQkJCTQzMUEzMDIxMTNCODlEQ0MwMDc3OTFFNCAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0
UmF0aW8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDMxQTMwODgxM0I4Rjk3ODAwNzc5MUU0IC8q
IFNWR0FuaW1hdGVkQm9vbGVhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0M0Y2RkQ5NjEzQkNE
MEIxMDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTFBQjQ0QTBDMTM2NzJDRkYwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CmluZGV4IDQ1ZjI2ODMuLmMzNGRkYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpAQCAtMzIzLDkgKzMyMyw5IEBAIHdlYmtpdF92YWx1
ZToKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2Vy
KTsKICAgICAgICAgaWYgKCQ0KSB7CiAgICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IHAtPnNp
bmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVy
dGllcyA9IHAtPm1fbnVtUGFyc2VkUHJvcGVydGllczsKKyAgICAgICAgICAgIGludCBvbGRQYXJz
ZWRQcm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCk7CiAgICAgICAgICAg
ICBpZiAoIXAtPnBhcnNlVmFsdWUocC0+bV9pZCwgcC0+bV9pbXBvcnRhbnQpKQotICAgICAgICAg
ICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVz
IC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgcC0+cm9sbGJhY2tMYXN0
UHJvcGVydGllcyhwLT5tX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSAtIG9sZFBhcnNlZFByb3Bl
cnRpZXMpOwogICAgICAgICAgICAgZGVsZXRlIHAtPm1fdmFsdWVMaXN0OwogICAgICAgICAgICAg
cC0+bV92YWx1ZUxpc3QgPSAwOwogICAgICAgICB9CkBAIC0xMjczLDEwICsxMjczLDEwIEBAIGRl
Y2xhcmF0aW9uOgogICAgICAgICBib29sIGlzUHJvcGVydHlQYXJzZWQgPSBmYWxzZTsKICAgICAg
ICAgaWYgKCQxICYmICQ0KSB7CiAgICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IHAtPnNpbmtG
bG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGll
cyA9IHAtPm1fbnVtUGFyc2VkUHJvcGVydGllczsKKyAgICAgICAgICAgIGludCBvbGRQYXJzZWRQ
cm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCk7CiAgICAgICAgICAgICAk
JCA9IHAtPnBhcnNlVmFsdWUoJDEsICQ1KTsKICAgICAgICAgICAgIGlmICghJCQpCi0gICAgICAg
ICAgICAgICAgcC0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwLT5tX251bVBhcnNlZFByb3BlcnRp
ZXMgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xh
c3RQcm9wZXJ0aWVzKHAtPm1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpIC0gb2xkUGFyc2VkUHJv
cGVydGllcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaXNQcm9wZXJ0eVBh
cnNlZCA9IHRydWU7CiAgICAgICAgICAgICBkZWxldGUgcC0+bV92YWx1ZUxpc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAw
MTdkYzY5Li5lZThlMWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTczLDcgKzczLDcgQEAgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCwgY29u
c3QgVmUKICAgICAvLyBGSVhNRTogVGhpcyBhbGxvd3MgZHVwbGljYXRlIHByb3BlcnRpZXMuCiB9
CiAKLUNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bihDU1NSdWxlKiBwYXJlbnQsIGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCAqIHByb3BlcnRpZXMs
IGludCBudW1Qcm9wZXJ0aWVzKQorQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCwgQ1NTUHJvcGVydHlDb250YWluZXIm
IHByb3BlcnRpZXMpCiAgICAgOiBDU1NTdHlsZURlY2xhcmF0aW9uKHBhcmVudCkKICAgICAsIG1f
bm9kZSgwKQogICAgICwgbV9zdHJpY3RQYXJzaW5nKCFwYXJlbnQgfHwgcGFyZW50LT51c2VTdHJp
Y3RQYXJzaW5nKCkpCkBAIC04MSwxMCArODEsMTUgQEAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b246OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCwgY29uc3QgQ1MK
ICAgICAsIG1faXRlcmF0b3JDb3VudCgwKQogI2VuZGlmCiB7CisgICAgaW50IG51bVByb3BlcnRp
ZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KHByb3BlcnRpZXMuY291bnQoKSk7CisKKyAgICBpZiAoIW51
bVByb3BlcnRpZXMpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fcHJvcGVydGllcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG51bVByb3BlcnRpZXMpOwogICAgIEhhc2hNYXA8aW50LCBib29sPiBj
YW5kaWRhdGVzOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7
Ci0gICAgICAgIGNvbnN0IENTU1Byb3BlcnR5ICpwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaV07Cisg
ICAgICAgIGNvbnN0IENTU1Byb3BlcnR5ICpwcm9wZXJ0eSA9ICZwcm9wZXJ0aWVzW2ldOwogICAg
ICAgICBBU1NFUlQocHJvcGVydHkpOwogICAgICAgICBib29sIGltcG9ydGFudCA9IHByb3BlcnR5
LT5pc0ltcG9ydGFudCgpOwogICAgICAgICBpZiAoY2FuZGlkYXRlcy5jb250YWlucyhwcm9wZXJ0
eS0+aWQoKSkpIHsKQEAgLTYzOSwxMyArNjQ0LDE4IEBAIHZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OnBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9u
CiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCi12b2lkIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOjphZGRQYXJzZWRQcm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCog
cHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMpCit2b2lkIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjphZGRQYXJzZWRQcm9wZXJ0aWVzKENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9wZXJ0
aWVzKQogewogICAgIEFTU0VSVCghbV9pdGVyYXRvckNvdW50KTsKIAorICAgIGludCBudW1Qcm9w
ZXJ0aWVzID0gc3RhdGljX2Nhc3Q8aW50Pihwcm9wZXJ0aWVzLmNvdW50KCkpOworCisgICAgaWYg
KCFudW1Qcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm47CisKICAgICBtX3Byb3BlcnRpZXMucmVz
ZXJ2ZUNhcGFjaXR5KG51bVByb3BlcnRpZXMpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
UHJvcGVydGllczsgKytpKQotICAgICAgICBhZGRQYXJzZWRQcm9wZXJ0eSgqcHJvcGVydGllc1tp
XSk7CisgICAgICAgIGFkZFBhcnNlZFByb3BlcnR5KHByb3BlcnRpZXNbaV0pOwogCiAgICAgLy8g
RklYTUU6IFRoaXMgcHJvYmFibHkgc2hvdWxkIGhhdmUgYSBjYWxsIHRvIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKSBpZiBzb21ldGhpbmcgY2hhbmdlZC4gV2UgbWF5IGFsc28gd2lzaCB0byBhZGQKICAg
ICAvLyBhIG5vdGlmeUNoYW5nZWQgYXJndW1lbnQgdG8gdGhpcyBmdW5jdGlvbiB0byBmb2xsb3cg
dGhlIG1vZGVsIG9mIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIGNsYXNzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaAppbmRleCBlYThhYjNmLi5i
ODM4MjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24uaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24u
aCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5
LmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJLVVJMSGFz
aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNo
U2V0Lmg+CkBAIC02Nyw5ICs2OCw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24ocGFyZW50UnVsZSkpOwogICAg
IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gY3Jl
YXRlKENTU1J1bGUqIHBhcmVudFJ1bGUsIGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCogcHJvcGVy
dGllcywgaW50IG51bVByb3BlcnRpZXMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShDU1NSdWxlKiBwYXJlbnRSdWxlLCBDU1NQcm9wZXJ0
eUNvbnRhaW5lciYgcHJvcGVydGllcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24ocGFyZW50UnVsZSwgcHJvcGVydGllcywgbnVt
UHJvcGVydGllcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKHBhcmVudFJ1bGUsIHByb3BlcnRpZXMpKTsKICAgICB9CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShjb25zdCBWZWN0
b3I8Q1NTUHJvcGVydHk+JiBwcm9wZXJ0aWVzKQogICAgIHsKQEAgLTEyNCw3ICsxMjUsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBCZXNpZGVzIGFkZGluZyB0aGUgcHJvcGVydGllcywgdGhpcyBhbHNv
IHJlbW92ZXMgYW55IGV4aXN0aW5nIHByb3BlcnRpZXMgd2l0aCB0aGVzZSBJRHMuCiAgICAgLy8g
SXQgZG9lcyBubyBub3RpZmljYXRpb24gc2luY2UgaXQncyBjYWxsZWQgYnkgdGhlIHBhcnNlci4K
LSAgICB2b2lkIGFkZFBhcnNlZFByb3BlcnRpZXMoY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICos
IGludCBudW1Qcm9wZXJ0aWVzKTsKKyAgICB2b2lkIGFkZFBhcnNlZFByb3BlcnRpZXMoQ1NTUHJv
cGVydHlDb250YWluZXImIHByb3BlcnRpZXMpOwogICAgIC8vIFRoaXMgZG9lcyBubyBjaGFuZ2Ug
bm90aWZpY2F0aW9ucyBzaW5jZSBpdCdzIG9ubHkgY2FsbGVkIGJ5IGNyZWF0ZU1hcmt1cC4KICAg
ICB2b2lkIGFkZFBhcnNlZFByb3BlcnR5KGNvbnN0IENTU1Byb3BlcnR5Jik7CiAgCkBAIC0xNDks
NyArMTUwLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbigpOwogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVu
dFJ1bGUsIGNvbnN0IFZlY3RvcjxDU1NQcm9wZXJ0eT4mKTsKLSAgICBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBDU1NQcm9wZXJ0eSogY29uc3Qg
KiwgaW50IG51bVByb3BlcnRpZXMpOworICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENT
U1J1bGUqIHBhcmVudFJ1bGUsIENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9wZXJ0aWVzKTsKIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbWFrZU11
dGFibGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBmZjQzYTJkLi45ZDYyZTAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTY1LDE0ICsxNjUsMTAgQEAgQ1NTUGFy
c2VyOjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQYXJzaW5nKQogICAgICwgbV9pZCgwKQogICAgICwg
bV9zdHlsZVNoZWV0KDApCiAgICAgLCBtX3ZhbHVlTGlzdCgwKQotICAgICwgbV9wYXJzZWRQcm9w
ZXJ0aWVzKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5Kio+KGZhc3RNYWxsb2MoMzIgKiBzaXplb2Yo
Q1NTUHJvcGVydHkqKSkpKQotICAgICwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKDApCi0gICAgLCBt
X21heFBhcnNlZFByb3BlcnRpZXMoMzIpCiAgICAgLCBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZv
cmVNYXJnaW5Cb3goSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVMpCiAgICAgLCBtX2luUGFy
c2VTaG9ydGhhbmQoMCkKICAgICAsIG1fY3VycmVudFNob3J0aGFuZCgwKQogICAgICwgbV9pbXBs
aWNpdFNob3J0aGFuZChmYWxzZSkKLSAgICAsIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKGZhbHNl
KQogICAgICwgbV9oYWRTeW50YWN0aWNhbGx5VmFsaWRDU1NSdWxlKGZhbHNlKQogICAgICwgbV9k
ZWZhdWx0TmFtZXNwYWNlKHN0YXJBdG9tKQogICAgICwgbV9pblN0eWxlUnVsZU9yRGVjbGFyYXRp
b24oZmFsc2UpCkBAIC0xOTYsOSArMTkyLDYgQEAgQ1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBz
dHJpY3RQYXJzaW5nKQogCiBDU1NQYXJzZXI6On5DU1NQYXJzZXIoKQogewotICAgIGNsZWFyUHJv
cGVydGllcygpOwotICAgIGZhc3RGcmVlKG1fcGFyc2VkUHJvcGVydGllcyk7Ci0KICAgICBkZWxl
dGUgbV92YWx1ZUxpc3Q7CiAKICAgICBmYXN0RnJlZShtX2RhdGEpOwpAQCAtNDU5LDExICs0NTIs
MTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24qIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHkKICAgICBtX3J1bGUgPSAwOwogCiAgICAgYm9v
bCBvayA9IGZhbHNlOwotICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAgICAg
ZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0gICAgaWYgKG1fbnVtUGFyc2VkUHJvcGVydGll
cykgeworICAgIGlmIChtX3BhcnNlZFByb3BlcnRpZXMuaGFzRm9udEZhY2VPbmx5KCkpCisgICAg
ICAgIG1fcGFyc2VkUHJvcGVydGllcy5kZWxldGVGb250RmFjZU9ubHlQcm9wZXJ0aWVzKCk7Cisg
ICAgaWYgKG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpKSB7CiAgICAgICAgIG9rID0gdHJ1ZTsK
LSAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0
aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFy
c2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMpOwogICAgICAgICBjbGVhclByb3BlcnRp
ZXMoKTsKICAgICB9CiAKQEAgLTQ4NSw3ICs0NzgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VD
b2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBzdHJpY3QpCiAg
ICAgaWYgKCFwYXJzZXIucGFyc2VDb2xvcihkdW1teVN0eWxlRGVjbGFyYXRpb24uZ2V0KCksIHN0
cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHBh
cnNlci5tX3BhcnNlZFByb3BlcnRpZXNbMF0tPnZhbHVlKCk7CisgICAgQ1NTVmFsdWUqIHZhbHVl
ID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllcy5maXJzdCgpLnZhbHVlKCk7CiAgICAgaWYgKHZh
bHVlLT5jc3NWYWx1ZVR5cGUoKSAhPSBDU1NWYWx1ZTo6Q1NTX1BSSU1JVElWRV9WQUxVRSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01MDYsNyArNDk5LDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlQ29sb3IoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRlY2xhcmF0aW9uLCBjb25z
dCBTdHJpbmcKICAgICBjc3N5eXBhcnNlKHRoaXMpOwogICAgIG1fcnVsZSA9IDA7CiAKLSAgICBy
ZXR1cm4gKG1fbnVtUGFyc2VkUHJvcGVydGllcyAmJiBtX3BhcnNlZFByb3BlcnRpZXNbMF0tPm1f
aWQgPT0gQ1NTUHJvcGVydHlDb2xvcik7CisgICAgcmV0dXJuIChtX3BhcnNlZFByb3BlcnRpZXMu
Y291bnQoKSAmJiBtX3BhcnNlZFByb3BlcnRpZXMuZmlyc3QoKS5pZCgpID09IENTU1Byb3BlcnR5
Q29sb3IpOwogfQogCiBib29sIENTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Db2xvcihSR0JBMzImIGNv
bG9yLCBjb25zdCBTdHJpbmcmIHN0cmluZywgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNTYwLDEx
ICs1NTMsMTIgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24qIGRlY2xhcmF0aW9uLCBjb25zdAogICAgIG1fcnVsZSA9IDA7CiAKICAg
ICBib29sIG9rID0gZmFsc2U7Ci0gICAgaWYgKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKQotICAg
ICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKLSAgICBpZiAobV9udW1QYXJzZWRQcm9w
ZXJ0aWVzKSB7CisgICAgaWYgKG1fcGFyc2VkUHJvcGVydGllcy5oYXNGb250RmFjZU9ubHkoKSkK
KyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmRlbGV0ZUZvbnRGYWNlT25seVByb3BlcnRpZXMo
KTsKKworICAgIGlmIChtX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSkgewogICAgICAgICBvayA9
IHRydWU7Ci0gICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2Vk
UHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgZGVjbGFyYXRpb24t
PmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzKTsKICAgICAgICAgY2xlYXJQ
cm9wZXJ0aWVzKCk7CiAgICAgfQogCkBAIC02MDgsMzMgKzYwMiwxOCBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VNZWRpYVF1ZXJ5KE1lZGlhTGlzdCogcXVlcmllcywgY29uc3QgU3RyaW5nJiBzdHJp
bmcpCiAKIHZvaWQgQ1NTUGFyc2VyOjphZGRQcm9wZXJ0eShpbnQgcHJvcElkLCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgT3duUHRyPENTU1Byb3Bl
cnR5PiBwcm9wKGFkb3B0UHRyKG5ldyBDU1NQcm9wZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRh
bnQsIG1fY3VycmVudFNob3J0aGFuZCwgbV9pbXBsaWNpdFNob3J0aGFuZCkpKTsKLSAgICBpZiAo
bV9udW1QYXJzZWRQcm9wZXJ0aWVzID49IG1fbWF4UGFyc2VkUHJvcGVydGllcykgewotICAgICAg
ICBtX21heFBhcnNlZFByb3BlcnRpZXMgKz0gMzI7Ci0gICAgICAgIGlmIChtX21heFBhcnNlZFBy
b3BlcnRpZXMgPiBVSU5UX01BWCAvIHNpemVvZihDU1NQcm9wZXJ0eSopKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMgPSBzdGF0aWNfY2FzdDxDU1NQcm9w
ZXJ0eSoqPihmYXN0UmVhbGxvYyhtX3BhcnNlZFByb3BlcnRpZXMsCi0gICAgICAgICAgICBtX21h
eFBhcnNlZFByb3BlcnRpZXMgKiBzaXplb2YoQ1NTUHJvcGVydHkqKSkpOwotICAgIH0KLSAgICBt
X3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzKytdID0gcHJvcC5sZWFrUHRy
KCk7CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmFkZFByb3BlcnR5KHByb3BJZCwgdmFsdWUsIGlt
cG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5kLCBtX2ltcGxpY2l0U2hvcnRoYW5kKTsKIH0KIAog
dm9pZCBDU1NQYXJzZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSkKIHsKLSAgICBB
U1NFUlQobnVtID49IDApOwotICAgIEFTU0VSVChtX251bVBhcnNlZFByb3BlcnRpZXMgPj0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG51bSkpOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW07
ICsraSkKLSAgICAgICAgZGVsZXRlIG1fcGFyc2VkUHJvcGVydGllc1stLW1fbnVtUGFyc2VkUHJv
cGVydGllc107CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
bnVtKTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OmNsZWFyUHJvcGVydGllcygpCiB7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbnVtUGFyc2VkUHJvcGVydGllczsgaSsrKQotICAgICAg
ICBkZWxldGUgbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwotICAgIG1fbnVtUGFyc2VkUHJvcGVydGll
cyA9IDA7CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmNsZWFyUHJvcGVydGllcygpOwogICAgIG1f
bnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCA9IElOVkFMSURfTlVNX1BBUlNFRF9Q
Uk9QRVJUSUVTOwotICAgIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzID0gZmFsc2U7CiB9CiAgICAg
CiB2b2lkIENTU1BhcnNlcjo6c2V0U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0
KQpAQCAtOTQ0LDcgKzkyMyw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBw
cm9wSWQpOwogICAgICAgICBpZiAobnVtICE9IDEgfHwgIXBhcnNlVmFsdWUoQ1NTUHJvcGVydHlP
dmVyZmxvd1gsIGltcG9ydGFudCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRp
ZXMgLSAxXS0+dmFsdWUoKTsKKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9w
ZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92
ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTEwNDEsNyArMTAyMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhp
cywgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKTsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1
ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251
bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFs
dWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQ
cm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xNjk2LDcgKzE2NzUsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIFNo
b3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2Up
OwogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUqIHZh
bHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUo
KTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0
KCkudmFsdWUoKTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVl
LCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTI0
NjMsNyArMjQ0Miw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwg
Y29uc3QgaW50ICpwcm9wZXJ0aWVzLCAgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNhc2UgMTog
ewogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZh
bHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUo
KTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0
KCkudmFsdWUoKTsKICAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlz
LCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNb
MV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGll
c1syXSwgdmFsdWUsIGltcG9ydGFudCk7CkBAIC0yNDczLDE3ICsyNDUyLDE3IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0aWVzLCAg
Ym9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNhc2UgMjogewogICAgICAgICAgICAgaWYgKCFwYXJz
ZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGll
c1sxXSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBDU1NWYWx1ZSAqdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJz
ZWRQcm9wZXJ0aWVzLmxhc3RCdXRPbmUoKS52YWx1ZSgpOwogICAgICAgICAgICAgSW1wbGljaXRT
Y29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQpOwogICAgICAgICAgICAg
YWRkUHJvcGVydHkocHJvcGVydGllc1syXSwgdmFsdWUsIGltcG9ydGFudCk7Ci0gICAgICAgICAg
ICB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZh
bHVlKCk7CisgICAgICAgICAgICB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0QnV0T25l
KCkudmFsdWUoKTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVl
LCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSAzOiB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0
YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZh
bHVlKHByb3BlcnRpZXNbMl0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21f
bnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2
YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0QnV0T25lKCkudmFsdWUoKTsKICAgICAgICAg
ICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsK
ICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVlLCBpbXBvcnRhbnQp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zODQ3LDcgKzM4MjYsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VGb250U3R5bGUoYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogCiAgICAgaWYgKHZhbHVl
cyAmJiB2YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAgIG1faGFzRm9udEZhY2VPbmx5VmFsdWVz
ID0gdHJ1ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnNldEZvbnRGYWNlT25seSgpOwog
ICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgdmFsdWVzLnJlbGVhc2Uo
KSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzg5NCw3ICsz
ODczLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFZhcmlhbnQoYm9vbCBpbXBvcnRhbnQp
CiAgICAgfQogCiAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAg
IG1faGFzRm9udEZhY2VPbmx5VmFsdWVzID0gdHJ1ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0
aWVzLnNldEZvbnRGYWNlT25seSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRWYXJpYW50LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC0zOTQ3LDcgKzM5MjYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VG
b250V2VpZ2h0KGJvb2wgaW1wb3J0YW50KQogICAgIH0KIAogICAgIGlmICh2YWx1ZXMgJiYgdmFs
dWVzLT5sZW5ndGgoKSkgewotICAgICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IHRydWU7
CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5zZXRGb250RmFjZU9ubHkoKTsKICAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBv
cnRhbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC02NDExLDkgKzYzOTAsOSBA
QCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1Bh
cnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcgogICAgICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBt
X2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zID0gZmFsc2U7CiAgICAgICAgIFJlZlB0cjxDU1NT
dHlsZVJ1bGU+IHJ1bGUgPSBDU1NTdHlsZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQsIG1fbGFz
dFNlbGVjdG9yTGluZU51bWJlcik7CiAgICAgICAgIHJ1bGUtPmFkb3B0U2VsZWN0b3JWZWN0b3Io
KnNlbGVjdG9ycyk7Ci0gICAgICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAg
ICAgICAgIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotICAgICAgICBydWxlLT5zZXREZWNs
YXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1f
cGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIGlmICht
X3BhcnNlZFByb3BlcnRpZXMuaGFzRm9udEZhY2VPbmx5KCkpCisgICAgICAgICAgICBtX3BhcnNl
ZFByb3BlcnRpZXMuZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygpOworICAgICAgICBydWxl
LT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUu
Z2V0KCksIG1fcGFyc2VkUHJvcGVydGllcykpOwogICAgICAgICByZXN1bHQgPSBydWxlLmdldCgp
OwogICAgICAgICBtX3BhcnNlZFN0eWxlT2JqZWN0cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwog
ICAgICAgICBpZiAobV9ydWxlUmFuZ2VNYXApIHsKQEAgLTY0MzUsOCArNjQxNCw5IEBAIENTU1J1
bGUqIENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+ID4qIHNlbGVjdG9yCiBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVs
ZSgpCiB7CiAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0
aW9ucyA9IGZhbHNlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBhcnNlZFBy
b3BlcnRpZXM7ICsraSkgewotICAgICAgICBDU1NQcm9wZXJ0eSogcHJvcGVydHkgPSBtX3BhcnNl
ZFByb3BlcnRpZXNbaV07CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wYXJzZWRQ
cm9wZXJ0aWVzLmNvdW50KCk7ICsraSkgeworICAgICAgICBDU1NQcm9wZXJ0eSogcHJvcGVydHkg
PSAmbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwogICAgICAgICBpbnQgaWQgPSBwcm9wZXJ0eS0+aWQo
KTsKICAgICAgICAgaWYgKChpZCA9PSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQgfHwgaWQgPT0gQ1NT
UHJvcGVydHlGb250U3R5bGUgfHwgaWQgPT0gQ1NTUHJvcGVydHlGb250VmFyaWFudCkgJiYgcHJv
cGVydHktPnZhbHVlKCktPmlzUHJpbWl0aXZlVmFsdWUoKSkgewogICAgICAgICAgICAgUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZSA9IHByb3BlcnR5LT5tX3ZhbHVlLnJlbGVhc2UoKTsKQEAgLTY0NTEs
OCArNjQzMSw5IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlRm9udEZhY2VSdWxlKCkKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQorCiAgICAgUmVmUHRyPENTU0Zv
bnRGYWNlUnVsZT4gcnVsZSA9IENTU0ZvbnRGYWNlUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7
Ci0gICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNy
ZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGll
cykpOworICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzKSk7CiAgICAgY2xlYXJQcm9w
ZXJ0aWVzKCk7CiAgICAgQ1NTRm9udEZhY2VSdWxlKiByZXN1bHQgPSBydWxlLmdldCgpOwogICAg
IG1fcGFyc2VkU3R5bGVPYmplY3RzLmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CkBAIC02NTI2LDcg
KzY1MDcsNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKFBhc3NPd25QdHI8
Q1NTUGFyc2VyU2VsZWN0b3I+IHBhZ2VTZWxlY3RvcikKICAgICAgICAgVmVjdG9yPE93blB0cjxD
U1NQYXJzZXJTZWxlY3Rvcj4gPiBzZWxlY3RvclZlY3RvcjsKICAgICAgICAgc2VsZWN0b3JWZWN0
b3IuYXBwZW5kKHBhZ2VTZWxlY3Rvcik7CiAgICAgICAgIHJ1bGUtPmFkb3B0U2VsZWN0b3JWZWN0
b3Ioc2VsZWN0b3JWZWN0b3IpOwotICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVydGll
cywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIHJ1bGUtPnNldERlY2xhcmF0aW9u
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQ
cm9wZXJ0aWVzKSk7CiAgICAgICAgIHBhZ2VSdWxlID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9w
YXJzZWRTdHlsZU9iamVjdHMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICB9CkBAIC02NTQ3
LDM0ICs2NTI4LDE2IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlTWFyZ2luQXRSdWxlKENT
U1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIC8qIG1hcmdpbkJveCAqCiAKIHZvaWQgQ1NTUGFyc2Vy
OjpzdGFydERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpCiB7Ci0gICAgbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzOworICAgIG1fbnVt
UGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCA9IG1fcGFyc2VkUHJvcGVydGllcy5jb3Vu
dCgpOwogfQogCiB2b2lkIENTU1BhcnNlcjo6ZW5kRGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCkK
IHsKICAgICBBU1NFUlQobV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ICE9IElO
VkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTKTsKLSAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVz
KG1fbnVtUGFyc2VkUHJvcGVydGllcyAtIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdp
bkJveCk7CisgICAgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMuY291
bnQoKSAtIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCk7CiAgICAgbV9udW1Q
YXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BF
UlRJRVM7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjpkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKQot
ewotICAgIEFTU0VSVChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyk7Ci0gICAgaW50IGRlbGV0ZWRQ
cm9wZXJ0aWVzID0gMDsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBhcnNl
ZFByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBDU1NQcm9wZXJ0eSogcHJvcGVydHkgPSBtX3Bh
cnNlZFByb3BlcnRpZXNbaV07Ci0gICAgICAgIGludCBpZCA9IHByb3BlcnR5LT5pZCgpOwotICAg
ICAgICBpZiAoKGlkID09IENTU1Byb3BlcnR5Rm9udFdlaWdodCB8fCBpZCA9PSBDU1NQcm9wZXJ0
eUZvbnRTdHlsZSB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KSAmJiBwcm9wZXJ0eS0+
dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAgICAgZGVsZXRlIHByb3BlcnR5Owot
ICAgICAgICAgICAgZGVsZXRlZFByb3BlcnRpZXMrKzsKLSAgICAgICAgfSBlbHNlIGlmIChkZWxl
dGVkUHJvcGVydGllcykKLSAgICAgICAgICAgIG1fcGFyc2VkUHJvcGVydGllc1tpIC0gZGVsZXRl
ZFByb3BlcnRpZXNdID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwotICAgIH0KLQotICAgIG1fbnVt
UGFyc2VkUHJvcGVydGllcyAtPSBkZWxldGVkUHJvcGVydGllczsKLX0KLQogV2ViS2l0Q1NTS2V5
ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJWYWx1ZUxp
c3QqIGtleXMpCiB7CiAgICAgLy8gQ3JlYXRlIGEga2V5IHN0cmluZyBmcm9tIHRoZSBwYXNzZWQg
a2V5cwpAQCAtNjU4OSw3ICs2NTUyLDcgQEAgV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJz
ZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJWYWx1ZUxpc3QqIGtleXMpCiAKICAgICBS
ZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBrZXlmcmFtZSA9IFdlYktpdENTU0tleWZyYW1l
UnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7CiAgICAga2V5ZnJhbWUtPnNldEtleVRleHQoa2V5
U3RyaW5nKTsKLSAgICBrZXlmcmFtZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OmNyZWF0ZSgwLCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVy
dGllcykpOworICAgIGtleWZyYW1lLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6Y3JlYXRlKDAsIG1fcGFyc2VkUHJvcGVydGllcykpOwogCiAgICAgY2xlYXJQcm9w
ZXJ0aWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBjNmYwNzhhLi5mOWFjMGNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJDU1NH
cmFkaWVudFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmgiCisjaW5jbHVkZSAi
Q1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURhdGEu
aCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCkBAIC03NSw3
ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGFkZFByb3BlcnR5
KGludCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCk7CiAgICAg
ICAgIHZvaWQgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKTsKLSAgICAgICAgYm9vbCBo
YXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1QYXJzZWRQcm9wZXJ0aWVzID4gMDsg
fQorICAgICAgICBib29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlZFBy
b3BlcnRpZXMuY291bnQoKSA+IDA7IH0KIAogICAgICAgICBib29sIHBhcnNlVmFsdWUoaW50IHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgICAgICBib29sIHBhcnNlU2hvcnRoYW5kKGludCBw
cm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1w
b3J0YW50KTsKQEAgLTIzOSwxOCArMjQwLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgUmVmUHRyPENTU1J1bGU+IG1fa2V5ZnJhbWU7CiAgICAgICAgIE93blB0cjxNZWRpYVF1ZXJ5
PiBtX21lZGlhUXVlcnk7CiAgICAgICAgIENTU1BhcnNlclZhbHVlTGlzdCogbV92YWx1ZUxpc3Q7
Ci0gICAgICAgIENTU1Byb3BlcnR5KiogbV9wYXJzZWRQcm9wZXJ0aWVzOworICAgICAgICBDU1NQ
cm9wZXJ0eUNvbnRhaW5lciBtX3BhcnNlZFByb3BlcnRpZXM7CiAgICAgICAgIENTU1NlbGVjdG9y
TGlzdCogbV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yOwogICAgICAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWVDYWNoZT4gbV9wcmltaXRpdmVWYWx1ZUNhY2hlOwotICAgICAgICB1bnNp
Z25lZCBtX251bVBhcnNlZFByb3BlcnRpZXM7Ci0gICAgICAgIHVuc2lnbmVkIG1fbWF4UGFyc2Vk
UHJvcGVydGllczsKICAgICAgICAgdW5zaWduZWQgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3Jl
TWFyZ2luQm94OwogCiAgICAgICAgIGludCBtX2luUGFyc2VTaG9ydGhhbmQ7CiAgICAgICAgIGlu
dCBtX2N1cnJlbnRTaG9ydGhhbmQ7CiAgICAgICAgIGJvb2wgbV9pbXBsaWNpdFNob3J0aGFuZDsK
IAotICAgICAgICBib29sIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzOwogICAgICAgICBib29sIG1f
aGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZTsKIAogICAgICAgICBBdG9taWNTdHJpbmcgbV9k
ZWZhdWx0TmFtZXNwYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAppbmRleCA0YTQ2ZmMyLi42
ZDBmNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaApAQCAtMzIsNiArMzIsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTUHJvcGVydHkgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgorICAgIENTU1Byb3BlcnR5KCkKKyAgICB7CisgICAgfQorCiAg
ICAgQ1NTUHJvcGVydHkoaW50IHByb3BJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJv
b2wgaW1wb3J0YW50ID0gZmFsc2UsIGludCBzaG9ydGhhbmRJRCA9IDAsIGJvb2wgaW1wbGljaXQg
PSBmYWxzZSkKICAgICAgICAgOiBtX2lkKHByb3BJRCkKICAgICAgICAgLCBtX3Nob3J0aGFuZElE
KHNob3J0aGFuZElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBlZWFjZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAKQEAg
LTAsMCArMSwyNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdlYmtpdC5vcmc+LCBVbml2ZXJzaXR5
IG9mIFN6ZWdlZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250
YWluZXIuaCIKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdURjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6
Q1NTUHJvcGVydHlDb250YWluZXIoKQorICAgIDogbV9udW1WYWxpZFByb3BlcnRpZXMoMCkKKyAg
ICAsIG1fdXNlZFNpemUoMCkKKyAgICAsIG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyhmYWxz
ZSkKK3sKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6c3dlZXAoKQoreworICAgIGlm
IChtX251bVZhbGlkUHJvcGVydGllcyA9PSBtX3VzZWRTaXplKQorICAgICAgICByZXR1cm47CisK
KyAgICB1bnNpZ25lZCBkZWxldGVkUHJvcGVydGllcyA9IDA7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV91c2VkU2l6ZTsgKytpKSB7CisgICAgICAgIGlmICghbV9wcm9wZXJ0aWVz
W2ldLmlkKCkpCisgICAgICAgICAgICArK2RlbGV0ZWRQcm9wZXJ0aWVzOworICAgICAgICBlbHNl
IGlmIChkZWxldGVkUHJvcGVydGllcykgeworICAgICAgICAgICAgbV9pZFRvUG9zaXRpb25NYXAu
c2V0KG1fcHJvcGVydGllc1tpXS5pZCgpLCBpIC0gZGVsZXRlZFByb3BlcnRpZXMpOworICAgICAg
ICAgICAgbV9wcm9wZXJ0aWVzW2kgLSBkZWxldGVkUHJvcGVydGllc10gPSBtX3Byb3BlcnRpZXNb
aV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3VzZWRTaXplIC09IGRlbGV0ZWRQcm9wZXJ0
aWVzOworCisgICAgaWYgKG1faWRUb1Bvc2l0aW9uTWFwLnNpemUoKSA+IHN0YXRpY19jYXN0PGlu
dD4obV9wcm9wZXJ0aWVzLnNpemUoKSArIGtHcm93RmFjdG9yKSkgeworICAgICAgICBtX2lkVG9Q
b3NpdGlvbk1hcC5jbGVhcigpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3VzZWRTaXplOyArK2kpCisgICAgICAgICAgICBtX2lkVG9Qb3NpdGlvbk1hcC5hZGQobV9wcm9w
ZXJ0aWVzW2ldLmlkKCksIGkpOworICAgIH0KKworICAgIEFTU0VSVChtX251bVZhbGlkUHJvcGVy
dGllcyA9PSBtX3VzZWRTaXplKTsKK30KKworaW5saW5lIHZvaWQgQ1NTUHJvcGVydHlDb250YWlu
ZXI6Omdyb3dJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fdXNlZFNpemUgKyAxID49IG1fcHJvcGVy
dGllcy5zaXplKCkpCisgICAgICAgIHN3ZWVwKCk7CisKKyAgICBpZiAobV91c2VkU2l6ZSA9PSBt
X3Byb3BlcnRpZXMuc2l6ZSgpKQorICAgICAgICBtX3Byb3BlcnRpZXMuYWxsb2MoKTsKK30KKwor
aW5saW5lIHVuc2lnbmVkIENTU1Byb3BlcnR5Q29udGFpbmVyOjppbnRlcm5hbFBvc2l0aW9uKGlu
dCBwcm9wZXJ0eUlEKQoreworICAgIGlmICghcHJvcGVydHlJRCB8fCAhbV9pZFRvUG9zaXRpb25N
YXAuY29udGFpbnMocHJvcGVydHlJRCkpCisgICAgICAgIHJldHVybiBrSW52YWxpZFBvc2l0aW9u
OworCisgICAgdW5zaWduZWQgcG9zaXRpb24gPSBtX2lkVG9Qb3NpdGlvbk1hcC5nZXQocHJvcGVy
dHlJRCk7CisKKyAgICBpZiAocG9zaXRpb24gPT0ga0ludmFsaWRQb3NpdGlvbikKKyAgICAgICAg
cmV0dXJuIGtJbnZhbGlkUG9zaXRpb247CisKKyAgICBBU1NFUlQocG9zaXRpb24gPCBtX3VzZWRT
aXplKTsKKworICAgIGlmICghbV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS5pZCgpKQorICAgICAgICBy
ZXR1cm4ga0ludmFsaWRQb3NpdGlvbjsKKworICAgIHJldHVybiBwb3NpdGlvbjsKK30KKworaW5s
aW5lIHZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OmludmFsaWRhdGVCeVBvc2l0aW9uKHVuc2ln
bmVkIHBvc2l0aW9uKQoreworICAgIGlmIChwb3NpdGlvbiA+PSBtX3VzZWRTaXplIHx8ICFtX3By
b3BlcnRpZXNbcG9zaXRpb25dLmlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC0tbV9udW1W
YWxpZFByb3BlcnRpZXM7CisKKyAgICBtX2lkVG9Qb3NpdGlvbk1hcC5zZXQobV9wcm9wZXJ0aWVz
W3Bvc2l0aW9uXS5pZCgpLCBrSW52YWxpZFBvc2l0aW9uKTsKKyAgICBtX3Byb3BlcnRpZXNbcG9z
aXRpb25dLm1faWQgPSAwOworfQorCitpbmxpbmUgdm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6
aW52YWxpZGF0ZUJ5SWQoaW50IHByb3BlcnR5SUQpCit7CisgICAgaWYgKCFwcm9wZXJ0eUlEKQor
ICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGludGVybmFsUG9zaXRp
b24ocHJvcGVydHlJRCk7CisKKyAgICBpZiAocG9zaXRpb24gPT0ga0ludmFsaWRQb3NpdGlvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgaW52YWxpZGF0ZUJ5UG9zaXRpb24ocG9zaXRpb24pOwor
fQorCitDU1NQcm9wZXJ0eSogQ1NTUHJvcGVydHlDb250YWluZXI6OmZpbmRQcm9wZXJ0eVdpdGhJ
ZChpbnQgcHJvcGVydHlJRCkKK3sKKyAgICBpZiAoIXByb3BlcnR5SUQgfHwgIW1fdXNlZFNpemUp
CisgICAgICAgIHJldHVybiAwOworCisgICAgdW5zaWduZWQgcG9zaXRpb24gPSBpbnRlcm5hbFBv
c2l0aW9uKHByb3BlcnR5SUQpOworCisgICAgaWYgKHBvc2l0aW9uID09IGtJbnZhbGlkUG9zaXRp
b24pCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuICZtX3Byb3BlcnRpZXNbcG9zaXRp
b25dOworfQorCitjb25zdCBDU1NQcm9wZXJ0eSYgQ1NTUHJvcGVydHlDb250YWluZXI6OmZpcnN0
KCkKK3sKKyAgICBBU1NFUlQoIW1fcHJvcGVydGllcy5pc0VtcHR5KCkgJiYgbV9udW1WYWxpZFBy
b3BlcnRpZXMpOworCisgICAgaWYgKCFtX3Byb3BlcnRpZXNbMF0uaWQoKSkKKyAgICAgICAgc3dl
ZXAoKTsKKworICAgIEFTU0VSVChtX3Byb3BlcnRpZXNbMF0uaWQoKSk7CisKKyAgICByZXR1cm4g
bV9wcm9wZXJ0aWVzWzBdOworfQorCitjb25zdCBDU1NQcm9wZXJ0eSYgQ1NTUHJvcGVydHlDb250
YWluZXI6Omxhc3QoKQoreworICAgIEFTU0VSVCghbV9wcm9wZXJ0aWVzLmlzRW1wdHkoKSAmJiBt
X251bVZhbGlkUHJvcGVydGllcyk7CisKKyAgICBpZiAoIW1fcHJvcGVydGllc1ttX3VzZWRTaXpl
IC0gMV0uaWQoKSkKKyAgICAgICAgc3dlZXAoKTsKKworICAgIEFTU0VSVChtX3VzZWRTaXplICYm
IG1fcHJvcGVydGllc1ttX3VzZWRTaXplIC0gMV0uaWQoKSk7CisKKyAgICByZXR1cm4gbV9wcm9w
ZXJ0aWVzW21fdXNlZFNpemUgLSAxXTsKK30KKworY29uc3QgQ1NTUHJvcGVydHkmIENTU1Byb3Bl
cnR5Q29udGFpbmVyOjpsYXN0QnV0T25lKCkKK3sKKyAgICBBU1NFUlQoIW1fcHJvcGVydGllcy5p
c0VtcHR5KCkgJiYgbV9udW1WYWxpZFByb3BlcnRpZXMgPj0gMik7CisKKyAgICBpZiAoIW1fcHJv
cGVydGllc1ttX3VzZWRTaXplIC0gMV0uaWQoKSB8fCAhbV9wcm9wZXJ0aWVzW21fdXNlZFNpemUg
LSAyXS5pZCgpKQorICAgICAgICBzd2VlcCgpOworCisgICAgQVNTRVJUKG1fdXNlZFNpemUgPj0g
MiAmJiBtX3Byb3BlcnRpZXNbbV91c2VkU2l6ZSAtIDJdLmlkKCkpOworCisgICAgcmV0dXJuIG1f
cHJvcGVydGllc1ttX3VzZWRTaXplIC0gMl07Cit9CisKK0NTU1Byb3BlcnR5JiBDU1NQcm9wZXJ0
eUNvbnRhaW5lcjo6b3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCit7CisgICAgc3dlZXAoKTsKKyAg
ICBBU1NFUlQoaW5kZXggPCBtX3VzZWRTaXplKTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzLmF0
KGluZGV4KTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y29udGFpbnNQcm9wZXJ0
eShpbnQgcHJvcGVydHlJRCkKK3sKKyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGludGVybmFsUG9z
aXRpb24ocHJvcGVydHlJRCk7CisKKyAgICBpZiAocG9zaXRpb24gPT0ga0ludmFsaWRQb3NpdGlv
bikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
Q1NTUHJvcGVydHlDb250YWluZXI6OnJlbW92ZVByb3BlcnR5KGludCBwcm9wZXJ0eUlEKQorewor
ICAgIGludmFsaWRhdGVCeUlkKHByb3BlcnR5SUQpOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29u
dGFpbmVyOjpyZW1vdmVQcm9wZXJ0aWVzKGNvbnN0IGludCogaWRMaXN0LCB1bnNpZ25lZCBsZW5n
dGgpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAg
ICBpbnZhbGlkYXRlQnlJZChpZExpc3RbaV0pOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFp
bmVyOjphZGRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFs
dWUsIGJvb2wgaW1wb3J0YW50LCBpbnQgc2hvcnRoYW5kSUQsIGJvb2wgaW1wbGljaXQpCit7Cisg
ICAgZ3Jvd0lmTmVlZGVkKCk7CisKKyAgICB1bnNpZ25lZCBvbGRQb3NpdGlvbiA9IGludGVybmFs
UG9zaXRpb24ocHJvcGVydHlJRCk7CisKKyAgICBpZiAob2xkUG9zaXRpb24gIT0ga0ludmFsaWRQ
b3NpdGlvbikgeworICAgICAgICBpZiAobV9wcm9wZXJ0aWVzW29sZFBvc2l0aW9uXS5pZCgpICYm
IG1fcHJvcGVydGllc1tvbGRQb3NpdGlvbl0uaXNJbXBvcnRhbnQoKSAmJiAhaW1wb3J0YW50KQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGludmFsaWRhdGVCeVBvc2l0aW9uKG9sZFBv
c2l0aW9uKTsKKyAgICB9CisKKyAgICBtX3Byb3BlcnRpZXNbbV91c2VkU2l6ZV0gPSBDU1NQcm9w
ZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50LCBzaG9ydGhhbmRJRCwgaW1wbGljaXQp
OworICAgIG1faWRUb1Bvc2l0aW9uTWFwLnNldChwcm9wZXJ0eUlELCBtX3VzZWRTaXplKTsKKyAg
ICArK21fbnVtVmFsaWRQcm9wZXJ0aWVzOworICAgICsrbV91c2VkU2l6ZTsKK30KKwordm9pZCBD
U1NQcm9wZXJ0eUNvbnRhaW5lcjo6cm9sbGJhY2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKQorewor
ICAgIGlmICghbnVtKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobnVtID4gMCk7Cisg
ICAgQVNTRVJUKG1fbnVtVmFsaWRQcm9wZXJ0aWVzID49IHN0YXRpY19jYXN0PHVuc2lnbmVkPihu
dW0pKTsKKworICAgIGludCBkZWxldGVkUHJvcGVydGllcyA9IDA7CisgICAgaW50IHBvc2l0aW9u
ID0gbV91c2VkU2l6ZTsKKyAgICB3aGlsZSAoZGVsZXRlZFByb3BlcnRpZXMgIT0gbnVtICYmIC0t
cG9zaXRpb24gPj0gMCkgeworICAgICAgICBpZiAobV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS5pZCgp
KSB7CisgICAgICAgICAgICBpbnZhbGlkYXRlQnlQb3NpdGlvbihwb3NpdGlvbik7CisgICAgICAg
ICAgICArK2RlbGV0ZWRQcm9wZXJ0aWVzOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIENT
U1Byb3BlcnR5Q29udGFpbmVyOjpkZWxldGVGb250RmFjZU9ubHlQcm9wZXJ0aWVzKCkKK3sKKyAg
ICBBU1NFUlQobV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzKTsKKworICAgIGludCBpZHNbM10g
PSB7Q1NTUHJvcGVydHlGb250V2VpZ2h0LCBDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgQ1NTUHJvcGVy
dHlGb250VmFyaWFudH07CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgeworICAg
ICAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGludGVybmFsUG9zaXRpb24oaWRzW2ldKTsKKworICAg
ICAgICBpZiAocG9zaXRpb24gPT0ga0ludmFsaWRQb3NpdGlvbikKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIGlmIChtX3Byb3BlcnRpZXNbcG9zaXRpb25dLnZhbHVlKCktPmlzVmFs
dWVMaXN0KCkpCisgICAgICAgICAgICBpbnZhbGlkYXRlQnlQb3NpdGlvbihwb3NpdGlvbik7Cisg
ICAgfQorICAgIG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyA9IGZhbHNlOworfQorCit2b2lk
IENTU1Byb3BlcnR5Q29udGFpbmVyOjpjbGVhclByb3BlcnRpZXMoKQoreworICAgIG1faGFzRm9u
dEZhY2VPbmx5UHJvcGVydGllcyA9IGZhbHNlOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fdXNlZFNpemU7ICsraSkKKyAgICAgICAgaW52YWxpZGF0ZUJ5UG9zaXRpb24oaSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
Q29udGFpbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY1MGNkZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5l
ci5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdlYmtpdC5vcmc+LCBVbml2
ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENTU1Byb3BlcnR5Q29udGFpbmVyX2gKKyNkZWZpbmUg
Q1NTUHJvcGVydHlDb250YWluZXJfaAorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNpbmNs
dWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgdW5zaWduZWQga0dyb3dGYWN0b3IgPSAzMjsKK3N0
YXRpYyBjb25zdCB1bnNpZ25lZCBrSW52YWxpZFBvc2l0aW9uID0gVUlOVF9NQVg7CisKK2NsYXNz
IENTU1Byb3BlcnR5Q29udGFpbmVyIHsKK3B1YmxpYzoKKyAgICBDU1NQcm9wZXJ0eUNvbnRhaW5l
cigpOworICAgIGNvbnN0IENTU1Byb3BlcnR5JiBmaXJzdCgpOworICAgIGNvbnN0IENTU1Byb3Bl
cnR5JiBsYXN0KCk7CisgICAgY29uc3QgQ1NTUHJvcGVydHkmIGxhc3RCdXRPbmUoKTsKKyAgICBD
U1NQcm9wZXJ0eSogZmluZFByb3BlcnR5V2l0aElkKGludCBwcm9wZXJ0eUlEKTsKKworICAgIGlu
bGluZSB1bnNpZ25lZCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtVmFsaWRQcm9wZXJ0aWVz
OyB9CisgICAgaW5saW5lIGJvb2wgaGFzRm9udEZhY2VPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9o
YXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzOyB9CisgICAgaW5saW5lIHZvaWQgc2V0Rm9udEZhY2VP
bmx5KCkgeyBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXMgPSB0cnVlOyB9CisKKyAgICBDU1NQ
cm9wZXJ0eSYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpOworCisgICAgYm9vbCBjb250YWluc1By
b3BlcnR5KGludCBwcm9wZXJ0eUlEKTsKKyAgICB2b2lkIHJlbW92ZVByb3BlcnR5KGludCBwcm9w
ZXJ0eUlEKTsKKyAgICB2b2lkIHJlbW92ZVByb3BlcnRpZXMoY29uc3QgaW50KiBpZExpc3QsIHVu
c2lnbmVkIGxlbmd0aCk7CisgICAgdm9pZCBhZGRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wgaW1wb3J0YW50LCBpbnQgc2hvcnRoYW5kSUQgPSAwLCBi
b29sIGltcGxpY2l0ID0gZmFsc2UpOworICAgIHZvaWQgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhp
bnQgbnVtKTsKKyAgICB2b2lkIGRlbGV0ZUZvbnRGYWNlT25seVByb3BlcnRpZXMoKTsKKyAgICB2
b2lkIGNsZWFyUHJvcGVydGllcygpOworCitwcml2YXRlOgorICAgIHZvaWQgc3dlZXAoKTsKKyAg
ICBpbmxpbmUgdm9pZCBncm93SWZOZWVkZWQoKTsKKyAgICBpbmxpbmUgdW5zaWduZWQgaW50ZXJu
YWxQb3NpdGlvbihpbnQgcHJvcGVydHlJRCk7CisgICAgaW5saW5lIHZvaWQgaW52YWxpZGF0ZUJ5
UG9zaXRpb24odW5zaWduZWQgcG9zaXRpb24pOworICAgIGlubGluZSB2b2lkIGludmFsaWRhdGVC
eUlkKGludCBwcm9wZXJ0eUlEKTsKKworICAgIHVuc2lnbmVkIG1fbnVtVmFsaWRQcm9wZXJ0aWVz
OworICAgIHVuc2lnbmVkIG1fdXNlZFNpemU7CisKKyAgICBib29sIG1faGFzRm9udEZhY2VPbmx5
UHJvcGVydGllczsKKworICAgIFNlZ21lbnRlZFZlY3RvcjxDU1NQcm9wZXJ0eSwga0dyb3dGYWN0
b3I+IG1fcHJvcGVydGllczsKKyAgICBIYXNoTWFwPGludCwgdW5zaWduZWQ+IG1faWRUb1Bvc2l0
aW9uTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTUHJv
cGVydHlDb250YWluZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1Bh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAppbmRleCBmM2I1
YWMzLi44MDJiZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcApAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNl
ci5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250
YWluZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTUXVp
cmtQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKQEAgLTI4
Niw3ICsyODcsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoMSk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgQ1NTVmFsdWUqIHZh
bHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcyAtIDFdLT52YWx1
ZSgpOworICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgp
LnZhbHVlKCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TWFya2VyTWlkLCB2YWx1
ZSwgaW1wb3J0YW50KTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJrZXJFbmQs
IHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICBtX2ltcGxpY2l0U2hvcnRoYW5kID0gZmFsc2U7
Ci0tIAoxLjcuNS4yCgo=
</data>
<flag name="commit-queue"
          id="93962"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99717</attachid>
            <date>2011-07-05 08:20:27 -0700</date>
            <delta_ts>2011-07-05 10:18:40 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-CSSParser-should-use-custom-vector-like-class-for-ma.patch</filename>
            <type>text/plain</type>
            <size>48562</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSA3MDNkYmQwMTI5ZDYyYzNlZDViMDJhN2RiNDRiMjU1NTYyMjQ2NTA0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPgpEYXRl
OiBUdWUsIDUgSnVsIDIwMTEgMTc6MDU6NTEgKzAyMDAKU3ViamVjdDogW1BBVENIXSBDU1NQYXJz
ZXIgc2hvdWxkIHVzZSBjdXN0b20gdmVjdG9yLWxpa2UgY2xhc3MgZm9yIG1hbmFnaW5nCiBwcm9w
ZXJ0aWVzCgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgIHwgICAgOSArCiAuLi4vSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgODEgKysrKysrCiAuLi4vRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL1NlZ21lbnRlZFZlY3Rvci5oICAgICAgICB8ICAgIDQgKwogU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnBybyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogICAgICAgfCAgICA4ICsKIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgIHwgICAgOCAr
CiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55ICAgICAgICAgICAgICAgICAgICB8ICAg
IDggKy0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAg
IHwgICAxOCArLQogU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
LmggICAgfCAgIDExICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCAgICAgICAg
ICAgICAgICAgICB8ICAxMDcgKysrLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmggICAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eS5oICAgICAgICAgICAgICAgICAgIHwgICAgNCArCiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHlDb250YWluZXIuY3BwICAgICAgICB8ICAyNTYgKysrKysrKysrKysrKysrKysr
KysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oICAgICAgICAgIHwg
ICA3NCArKysrKysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwICAgICAgICAg
ICAgICAgIHwgICAgMyArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5j
cHAgICAgICAgICAgfCAgICA0ICstCiAyMCBmaWxlcyBjaGFuZ2VkLCA1MTggaW5zZXJ0aW9ucygr
KSwgOTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oCgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNTI2Y2FmMC4uMDljNmUwMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDctMDUgIEFuZHJhcyBCZWNzaSAgPGFiZWNz
aUB3ZWJraXQub3JnPgorCisgICAgICAgIENTU1BhcnNlciBzaG91bGQgdXNlIGN1c3RvbSAidmVj
dG9yLWxpa2UiIGNsYXNzIGZvciBtYW5hZ2luZyBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQxNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajogU2V0IHRoZSBwcml2YXRlIGF0dHJpYnV0ZSBmb3IgU2VnbWVudGVk
VmVjdG9yLgorCiAyMDExLTA3LTA0ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBkNWY3ZGFkLi40ZmEwMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMzY2LDcgKzM2Niw3IEBACiAJCTk2OUEwNzIzMEVEMUNFMzMwMEYxRjY4
MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTY5QTA3MjEwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJh
dG9yLmggKi87IH07CiAJCTk2OUEwNzJBMEVEMUNFNjkwMEYxRjY4MSAvKiBMYWJlbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3MjcwRUQxQ0U2
OTAwRjFGNjgxIC8qIExhYmVsLmggKi87IH07CiAJCTk2OUEwNzJCMEVEMUNFNjkwMEYxRjY4MSAv
KiBSZWdpc3RlcklELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NjlBMDcyODBFRDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oICovOyB9OwotCQk5
NjlBMDcyQzBFRDFDRTY5MDBGMUY2ODEgLyogU2VnbWVudGVkVmVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDcyOTBFRDFDRTY5MDBGMUY2
ODEgLyogU2VnbWVudGVkVmVjdG9yLmggKi87IH07CisJCTk2OUEwNzJDMEVEMUNFNjkwMEYxRjY4
MSAvKiBTZWdtZW50ZWRWZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk2OUEwNzI5MEVEMUNFNjkwMEYxRjY4MSAvKiBTZWdtZW50ZWRWZWN0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NjlB
MDc5NjBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzkwMEVEMUQzQUUwMEYxRjY4MSAvKiBD
b2RlQmxvY2suY3BwICovOyB9OwogCQk5NjlBMDc5NzBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJs
b2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlB
MDc5MTBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoKTsgfTsgfTsKIAkJOTY5QTA3OTgwRUQxRDNBRTAwRjFGNjgxIC8qIEV2YWxDb2Rl
Q2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2
OUEwNzkyMEVEMUQzQUUwMEYxRjY4MSAvKiBFdmFsQ29kZUNhY2hlLmggKi87IH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDEwNzgzNWQuLmMxMjQzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC00NTMsNiArNDUzLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGNzcy9DU1NQcmltaXRp
dmVWYWx1ZS5jcHAKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZS5jcHAKICAgICBjc3Mv
Q1NTUHJvcGVydHkuY3BwCisgICAgY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcAogICAgIGNz
cy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAogICAgIGNzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEu
Y3BwCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYWJmMGQzLi4y
YTFkODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODQgQEAKKzIwMTEtMDctMDUgIEFuZHJhcyBC
ZWNzaSAgPGFiZWNzaUB3ZWJraXQub3JnPgorCisgICAgICAgIENTU1BhcnNlciBzaG91bGQgdXNl
IGN1c3RvbSAidmVjdG9yLWxpa2UiIGNsYXNzIGZvciBtYW5hZ2luZyBwcm9wZXJ0aWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQxNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBDU1NQ
cm9wZXJ0eUNvbnRhaW5lciB3aGljaCBvbiByZW1vdmFsIG1hcmtzIGVudHJpZXMgYXMgZW1wdHkK
KyAgICAgICAgYW5kIG9ubHkgc3dlZXBzIHRoZW0gd2hlbiB0aGUgaW50ZXJuYWwgc2VnbWVudGVk
IHZlY3RvciBncm93cyB0b28gYmlnLgorICAgICAgICBBbHNvIHVzZSBhbiBpbnRlcm5hbCBIYXNo
TWFwIHRvIGJlIGFibGUgdG8gZWZmaWNpZW50bHkgZmluZCBlbnRyaWVzIGJ5IElECisgICAgICAg
IGFuZCBhdXRvbWF0aWNhbGx5IGRpc2NhcmQgZHVwbGljYXRlIHByb3BlcnRpZXMuCisgICAgICAg
IFRoaXMgaXMgbmVlZGVkIHRvIGJlIGFibGUgdG8gc2ltcGxpZnkgYW5kIHNwZWVkIHVwIENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uLAorICAgICAgICB0byB1c2UgdGhpcyBjb250YWluZXIgaW5z
dGVhZCBvZiBtYWludGFpbmluZyBpdHMgb3duIGZvcmsgb2YgaW5mcmFzdHJ1Y3R1cmUKKyAgICAg
ICAgZm9yIG1hbmFnaW5nIHBhcnNlZCBwcm9wZXJ0aWVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9TZWdtZW50ZWRWZWN0b3IuaDogQWRk
ZWQgbWlzc2luZyBmb3J3YXJkaW5nIGhlYWRlci4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueToK
KyAgICAgICAgKiBjc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjph
ZGRQYXJzZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpj
cmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpDU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjp+Q1NT
UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6YWRkUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpyb2xsYmFja0xh
c3RQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y2xlYXJQcm9wZXJ0
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGb250U3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRWYXJpYW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VGb250V2VpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3Jl
YXRlU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlRm9udEZh
Y2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlUGFnZVJ1bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpzdGFydERlY2xhcmF0aW9uc0Zvck1hcmdpbkJv
eCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmVuZERlY2xhcmF0aW9uc0Zvck1hcmdp
bkJveCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZSk6
CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpoYXNQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5OjpDU1NQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1By
b3BlcnR5Q29udGFpbmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eUNvbnRhaW5lcjo6Q1NTUHJvcGVydHlDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHlDb250YWluZXI6OnN3ZWVwKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5
Q29udGFpbmVyOjpncm93SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlD
b250YWluZXI6OmludGVybmFsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlDb250YWluZXI6OmludmFsaWRhdGVCeVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5Q29udGFpbmVyOjppbnZhbGlkYXRlQnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eUNvbnRhaW5lcjo6ZmluZFByb3BlcnR5V2l0aElkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpmaXJzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cm9wZXJ0eUNvbnRhaW5lcjo6bGFzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNv
bnRhaW5lcjo6bGFzdEJ1dE9uZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRh
aW5lcjo6b3BlcmF0b3JbXSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5l
cjo6Y29udGFpbnNQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRh
aW5lcjo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250
YWluZXI6OnJlbW92ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlD
b250YWluZXI6OmFkZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29u
dGFpbmVyOjpyb2xsYmFja0xhc3RQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5Q29udGFpbmVyOjpkZWxldGVGb250RmFjZU9ubHlQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpjbGVhclByb3BlcnRpZXMpOgorICAgICAg
ICAqIGNzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eUNvbnRhaW5lcjo6aGFzRm9udEZhY2VPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5Q29udGFpbmVyOjpzZXRGb250RmFjZU9ubHkpOgorICAgICAgICAqIGNzcy9TVkdDU1NQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNWR1ZhbHVlKToK
KyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZvbnRGYWNlRWxlbWVudDo6cmVidWlsZEZvbnRGYWNlKToKKwogMjAxMS0wNi0yMiAgUGF2
ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL1NlZ21lbnRlZFZlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjVhYTM5YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy93dGYvU2VnbWVudGVkVmVjdG9yLmgKQEAgLTAsMCArMSw0IEBACisj
aWZuZGVmIFdlYkNvcmVfRldEX1NlZ21lbnRlZFZlY3Rvcl9oCisjZGVmaW5lIFdlYkNvcmVfRldE
X1NlZ21lbnRlZFZlY3Rvcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2VnbWVudGVkVmVj
dG9yLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDBhYzVhNWEu
LjY1OWFkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtOTcyLDYgKzk3Miw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlTWFwcGluZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmggXAorCVNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eUNvbnRhaW5lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFu
ZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmggXAogCVNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCAyODkyMGVjLi5lZTRlN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00OTEsNiArNDkx
LDcgQEAKICAgICAgICAgICAgICdjc3MvQ1NTUGFyc2VyVmFsdWVzLmgnLAogICAgICAgICAgICAg
J2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHku
aCcsCisgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmgnLAogICAgICAgICAg
ICAgJ2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Jl
ZmxlY3RWYWx1ZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUmVmbGVjdGlvbkRpcmVjdGlvbi5o
JywKQEAgLTIzMzMsNiArMjMzNCw3IEBACiAgICAgICAgICAgICAnY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlQ2FjaGUuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3Mu
aCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5LmNwcCcsCisgICAgICAgICAgICAnY3Nz
L0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5
TG9uZ2hhbmQuY3BwJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oJywK
ICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
CmluZGV4IGQ3OGExM2MuLjQ1NTM5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC00MTAsNiArNDEwLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBcCiAgICAgY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUuY3BwIFwKICAgICBjc3MvQ1NTUHJvcGVydHkuY3BwIFwK
KyAgICBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwIFwKICAgICBjc3MvQ1NTUHJvcGVydHlM
b25naGFuZC5jcHAgXAogICAgIGNzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIFwKICAgICBj
c3MvQ1NTUmVmbGVjdFZhbHVlLmNwcCBcCkBAIC0xMzk5LDYgKzE0MDAsNyBAQCBIRUFERVJTICs9
IFwKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlQ2FjaGUuaCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5LmggXAorICAgIGNzcy9DU1NQcm9wZXJ0
eUNvbnRhaW5lci5oIFwKICAgICBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oIFwKICAgICBjc3Mv
Q1NTUmVmbGVjdFZhbHVlLmggXAogICAgIGNzcy9DU1NSdWxlLmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxM2IwNzU5Li43NTViNGZiIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzI2
MTgsNiArMzI2MTgsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cY3NzXENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1Byb3BlcnR5Q29udGFp
bmVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGNzc1xDU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmJj
NWMxYy4uOTQwYzBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNDMxLDYgKzQzMSw4IEBACiAJCTFBQjFBRTdBMEMwNTFGREUw
MDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxQUU3ODBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vy
c29yLnBuZyAqLzsgfTsKIAkJMUFCMUFFN0IwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJz
b3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUIxQUU3OTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgKi87IH07CiAJCTFB
QjMzREE1MTI1NTFFMzIwMDI0NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIzM0RBNDEyNTUxRTMyMDAyNDQ1
N0EgLyogSU9LaXQuZnJhbWV3b3JrICovOyB9OworCQkxQUI0NEEwQzEzNjcyQ0ZGMDAwODc3N0Ug
LyogQ1NTUHJvcGVydHlDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCNDRBMEIxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1Byb3BlcnR5
Q29udGFpbmVyLmNwcCAqLzsgfTsKKwkJMUFCNDRBMEUxMzY3MkQyMDAwMDg3NzdFIC8qIENTU1By
b3BlcnR5Q29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUI0NEEwRDEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUI3
RkM2ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0ZDNDcwQThCOTJFQzAwRDlEMzdC
IC8qIFhQYXRoRXZhbHVhdG9yLmNwcCAqLzsgfTsKIAkJMUFCN0ZDNjkwQThCOTJFQzAwRDlEMzdC
IC8qIFhQYXRoRXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUI3RkM0ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCAq
LzsgfTsKIAkJMUFCN0ZDNkIwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RkM0QTBB
OEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9uLmNwcCAqLzsgfTsKQEAgLTY4NDEsNiAr
Njg0Myw4IEBACiAJCTFBQjFBRTc4MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5n
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2Uu
cG5nOyBwYXRoID0gem9vbUluQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFCMUFFNzkwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRo
ID0gem9vbU91dEN1cnNvci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjMz
REE0MTI1NTFFMzIwMDI0NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9
IElPS2l0LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0
LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJMUFCNDRBMEIxMzY3
MkNGRjAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFCNDRBMEQxMzY3MkQyMDAwMDg3NzdFIC8qIENTU1Byb3Bl
cnR5Q29udGFpbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1Byb3Bl
cnR5Q29udGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjdGQzQ3MEE4
QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gWFBhdGhFdmFsdWF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQUI3RkM0ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQYXRoRXZhbHVhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjdGQzQ5MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0
aEV2YWx1YXRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFhQYXRoRXZhbHVhdG9yLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MDg2LDYgKzE5MDkwLDggQEAKIAkJ
RjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUFCNDRBMEQxMzY3MkQyMDAwMDg3NzdFIC8qIENTU1By
b3BlcnR5Q29udGFpbmVyLmggKi8sCisJCQkJMUFCNDRBMEIxMzY3MkNGRjAwMDg3NzdFIC8qIENT
U1Byb3BlcnR5Q29udGFpbmVyLmNwcCAqLywKIAkJCQk5M0NBNEM5QzA5REY5M0ZBMDBERjg2Nzcg
LyogbWFrZXRva2VuaXplciAqLywKIAkJCQlBODBFNkNEQTBBMTk4OUNBMDA3RkI4QzUgLyogQ291
bnRlci5oICovLAogCQkJCTkzMDcwNUM3MDlFMEM5NUYwMEIxN0ZFNCAvKiBDb3VudGVyLmlkbCAq
LywKQEAgLTIzMDg4LDYgKzIzMDk0LDcgQEAKIAkJCQkwODYzOTUxNjEzQjVGRTU3MDBCQjM0NEQg
LyogU1ZHQW5pbWF0ZWRQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzFBMkY5QzEzQjZGMkIw
MDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTVBQkI3ODcxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9v
bElDVS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUFCNDRBMEUxMzY3MkQyMDAwMDg3NzdFIC8qIENT
U1Byb3BlcnR5Q29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1ODU1LDYgKzI1ODYyLDcg
QEAKIAkJCQk0MzFBMzAyMTEzQjg5RENDMDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFz
cGVjdFJhdGlvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMUEzMDg4MTNCOEY5NzgwMDc3OTFF
NCAvKiBTVkdBbmltYXRlZEJvb2xlYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDNGNkZEOTYx
M0JDRDBCMTAwMjI0MDUyIC8qIFNWR0FuaW1hdGVkSW50ZWdlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkxQUI0NEEwQzEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1h
ci55IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCA0NWYyNjgzLi5jMzRk
ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTMyMyw5ICszMjMsOSBAQCB3ZWJraXRf
dmFsdWU6CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBh
cnNlcik7CiAgICAgICAgIGlmICgkNCkgewogICAgICAgICAgICAgcC0+bV92YWx1ZUxpc3QgPSBw
LT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpOwotICAgICAgICAgICAgaW50IG9sZFBhcnNlZFBy
b3BlcnRpZXMgPSBwLT5tX251bVBhcnNlZFByb3BlcnRpZXM7CisgICAgICAgICAgICBpbnQgb2xk
UGFyc2VkUHJvcGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpOwogICAgICAg
ICAgICAgaWYgKCFwLT5wYXJzZVZhbHVlKHAtPm1faWQsIHAtPm1faW1wb3J0YW50KSkKLSAgICAg
ICAgICAgICAgICBwLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKHAtPm1fbnVtUGFyc2VkUHJvcGVy
dGllcyAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNr
TGFzdFByb3BlcnRpZXMocC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkgLSBvbGRQYXJzZWRQ
cm9wZXJ0aWVzKTsKICAgICAgICAgICAgIGRlbGV0ZSBwLT5tX3ZhbHVlTGlzdDsKICAgICAgICAg
ICAgIHAtPm1fdmFsdWVMaXN0ID0gMDsKICAgICAgICAgfQpAQCAtMTI3MywxMCArMTI3MywxMCBA
QCBkZWNsYXJhdGlvbjoKICAgICAgICAgYm9vbCBpc1Byb3BlcnR5UGFyc2VkID0gZmFsc2U7CiAg
ICAgICAgIGlmICgkMSAmJiAkNCkgewogICAgICAgICAgICAgcC0+bV92YWx1ZUxpc3QgPSBwLT5z
aW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpOwotICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3Bl
cnRpZXMgPSBwLT5tX251bVBhcnNlZFByb3BlcnRpZXM7CisgICAgICAgICAgICBpbnQgb2xkUGFy
c2VkUHJvcGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpOwogICAgICAgICAg
ICAgJCQgPSBwLT5wYXJzZVZhbHVlKCQxLCAkNSk7CiAgICAgICAgICAgICBpZiAoISQkKQotICAg
ICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9udW1QYXJzZWRQcm9w
ZXJ0aWVzIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgcC0+cm9sbGJh
Y2tMYXN0UHJvcGVydGllcyhwLT5tX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSAtIG9sZFBhcnNl
ZFByb3BlcnRpZXMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGlzUHJvcGVy
dHlQYXJzZWQgPSB0cnVlOwogICAgICAgICAgICAgZGVsZXRlIHAtPm1fdmFsdWVMaXN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5k
ZXggMDE3ZGM2OS4uOTU2NjFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC03Myw3ICs3Myw3IEBAIENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnQs
IGNvbnN0IFZlCiAgICAgLy8gRklYTUU6IFRoaXMgYWxsb3dzIGR1cGxpY2F0ZSBwcm9wZXJ0aWVz
LgogfQogCi1DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24oQ1NTUnVsZSogcGFyZW50LCBjb25zdCBDU1NQcm9wZXJ0eSogY29uc3QgKiBwcm9wZXJ0
aWVzLCBpbnQgbnVtUHJvcGVydGllcykKK0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnQsIENTU1Byb3BlcnR5Q29udGFp
bmVyJiBwcm9wZXJ0aWVzKQogICAgIDogQ1NTU3R5bGVEZWNsYXJhdGlvbihwYXJlbnQpCiAgICAg
LCBtX25vZGUoMCkKICAgICAsIG1fc3RyaWN0UGFyc2luZyghcGFyZW50IHx8IHBhcmVudC0+dXNl
U3RyaWN0UGFyc2luZygpKQpAQCAtODEsOSArODEsMTQgQEAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCwgY29uc3Qg
Q1MKICAgICAsIG1faXRlcmF0b3JDb3VudCgwKQogI2VuZGlmCiB7CisgICAgdW5zaWduZWQgbnVt
UHJvcGVydGllcyA9IHByb3BlcnRpZXMuY291bnQoKTsKKworICAgIGlmICghbnVtUHJvcGVydGll
cykKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9wcm9wZXJ0aWVzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkobnVtUHJvcGVydGllcyk7CiAgICAgSGFzaE1hcDxpbnQsIGJvb2w+IGNhbmRpZGF0ZXM7
Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CiAgICAgICAgIGNvbnN0
IENTU1Byb3BlcnR5ICpwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaV07CiAgICAgICAgIEFTU0VSVChw
cm9wZXJ0eSk7CiAgICAgICAgIGJvb2wgaW1wb3J0YW50ID0gcHJvcGVydHktPmlzSW1wb3J0YW50
KCk7CkBAIC02MzksMTIgKzY0NCwxNyBAQCB2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjpwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVEZWNsYXJhdGlvbgogICAgIHNl
dE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bjo6YWRkUGFyc2VkUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eSogY29uc3QqIHByb3BlcnRp
ZXMsIGludCBudW1Qcm9wZXJ0aWVzKQordm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6
YWRkUGFyc2VkUHJvcGVydGllcyhDU1NQcm9wZXJ0eUNvbnRhaW5lciYgcHJvcGVydGllcykKIHsK
ICAgICBBU1NFUlQoIW1faXRlcmF0b3JDb3VudCk7CiAKKyAgICB1bnNpZ25lZCBudW1Qcm9wZXJ0
aWVzID0gcHJvcGVydGllcy5jb3VudCgpOworCisgICAgaWYoIW51bVByb3BlcnRpZXMpCisgICAg
ICAgIHJldHVybjsKKwogICAgIG1fcHJvcGVydGllcy5yZXNlcnZlQ2FwYWNpdHkobnVtUHJvcGVy
dGllcyk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkKICAgICAgICAgYWRk
UGFyc2VkUHJvcGVydHkoKnByb3BlcnRpZXNbaV0pOwogCiAgICAgLy8gRklYTUU6IFRoaXMgcHJv
YmFibHkgc2hvdWxkIGhhdmUgYSBjYWxsIHRvIHNldE5lZWRzU3R5bGVSZWNhbGMoKSBpZiBzb21l
dGhpbmcgY2hhbmdlZC4gV2UgbWF5IGFsc28gd2lzaCB0byBhZGQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggZWE4YWIzZi4uZjhlZDY0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
LmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAj
aW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgor
I2luY2x1ZGUgIkNTU1Byb3BlcnR5Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiS1VSTEhhc2guaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5o
PgpAQCAtNjcsOSArNjgsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKHBhcmVudFJ1bGUpKTsKICAgICB9Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShD
U1NSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBDU1NQcm9wZXJ0eSogY29uc3QqIHByb3BlcnRpZXMs
IGludCBudW1Qcm9wZXJ0aWVzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uPiBjcmVhdGUoQ1NTUnVsZSogcGFyZW50UnVsZSwgQ1NTUHJvcGVydHlDb250
YWluZXImIHByb3BlcnRpZXMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uKHBhcmVudFJ1bGUsIHByb3BlcnRpZXMsIG51bVByb3Bl
cnRpZXMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbihwYXJlbnRSdWxlLCBwcm9wZXJ0aWVzKSk7CiAgICAgfQogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoY29uc3QgVmVjdG9yPENT
U1Byb3BlcnR5PiYgcHJvcGVydGllcykKICAgICB7CkBAIC0xMjQsNyArMTI1LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gQmVzaWRlcyBhZGRpbmcgdGhlIHByb3BlcnRpZXMsIHRoaXMgYWxzbyByZW1v
dmVzIGFueSBleGlzdGluZyBwcm9wZXJ0aWVzIHdpdGggdGhlc2UgSURzLgogICAgIC8vIEl0IGRv
ZXMgbm8gbm90aWZpY2F0aW9uIHNpbmNlIGl0J3MgY2FsbGVkIGJ5IHRoZSBwYXJzZXIuCi0gICAg
dm9pZCBhZGRQYXJzZWRQcm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCAqLCBpbnQg
bnVtUHJvcGVydGllcyk7CisgICAgdm9pZCBhZGRQYXJzZWRQcm9wZXJ0aWVzKENTU1Byb3BlcnR5
Q29udGFpbmVyJiBwcm9wZXJ0aWVzKTsKICAgICAvLyBUaGlzIGRvZXMgbm8gY2hhbmdlIG5vdGlm
aWNhdGlvbnMgc2luY2UgaXQncyBvbmx5IGNhbGxlZCBieSBjcmVhdGVNYXJrdXAuCiAgICAgdm9p
ZCBhZGRQYXJzZWRQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0eSYpOwogIApAQCAtMTQ5LDcgKzE1
MCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24oKTsKICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRSdWxl
LCBjb25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+Jik7Ci0gICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24oQ1NTUnVsZSogcGFyZW50UnVsZSwgY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICosIGlu
dCBudW1Qcm9wZXJ0aWVzKTsKKyAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihDU1NSdWxl
KiBwYXJlbnRSdWxlLCBDU1NQcm9wZXJ0eUNvbnRhaW5lciYgcHJvcGVydGllcyk7CiAKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IG1ha2VNdXRhYmxl
KCk7CiAKQEAgLTE3MSw3ICsxNzIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxDU1NQcm9wZXJ0
eT46OmNvbnN0X2l0ZXJhdG9yIGZpbmRQcm9wZXJ0eVdpdGhJZChpbnQgcHJvcGVydHlJZCkgY29u
c3Q7CiAgICAgVmVjdG9yPENTU1Byb3BlcnR5Pjo6aXRlcmF0b3IgZmluZFByb3BlcnR5V2l0aElk
KGludCBwcm9wZXJ0eUlkKTsKIAotICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwgND4gbV9wcm9wZXJ0
aWVzOworICAgIFZlY3RvcjxDU1NQcm9wZXJ0eT4gbV9wcm9wZXJ0aWVzOwogCiAgICAgTm9kZSog
bV9ub2RlOwogICAgIGJvb2wgbV9zdHJpY3RQYXJzaW5nIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKaW5kZXggZmY0M2EyZC4uMjU3YzE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
QEAgLTE2NSwxNCArMTY1LDEwIEBAIENTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFy
c2luZykKICAgICAsIG1faWQoMCkKICAgICAsIG1fc3R5bGVTaGVldCgwKQogICAgICwgbV92YWx1
ZUxpc3QoMCkKLSAgICAsIG1fcGFyc2VkUHJvcGVydGllcyhzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0
eSoqPihmYXN0TWFsbG9jKDMyICogc2l6ZW9mKENTU1Byb3BlcnR5KikpKSkKLSAgICAsIG1fbnVt
UGFyc2VkUHJvcGVydGllcygwKQotICAgICwgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzKDMyKQogICAg
ICwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KElOVkFMSURfTlVNX1BBUlNF
RF9QUk9QRVJUSUVTKQogICAgICwgbV9pblBhcnNlU2hvcnRoYW5kKDApCiAgICAgLCBtX2N1cnJl
bnRTaG9ydGhhbmQoMCkKICAgICAsIG1faW1wbGljaXRTaG9ydGhhbmQoZmFsc2UpCi0gICAgLCBt
X2hhc0ZvbnRGYWNlT25seVZhbHVlcyhmYWxzZSkKICAgICAsIG1faGFkU3ludGFjdGljYWxseVZh
bGlkQ1NTUnVsZShmYWxzZSkKICAgICAsIG1fZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSkKICAg
ICAsIG1faW5TdHlsZVJ1bGVPckRlY2xhcmF0aW9uKGZhbHNlKQpAQCAtMTk2LDkgKzE5Miw2IEBA
IENTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZykKIAogQ1NTUGFyc2VyOjp+
Q1NTUGFyc2VyKCkKIHsKLSAgICBjbGVhclByb3BlcnRpZXMoKTsKLSAgICBmYXN0RnJlZShtX3Bh
cnNlZFByb3BlcnRpZXMpOwotCiAgICAgZGVsZXRlIG1fdmFsdWVMaXN0OwogCiAgICAgZmFzdEZy
ZWUobV9kYXRhKTsKQEAgLTQ1OSwxMSArNDUyLDExIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZh
bHVlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5
CiAgICAgbV9ydWxlID0gMDsKIAogICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAgICBpZiAobV9oYXNG
b250RmFjZU9ubHlWYWx1ZXMpCi0gICAgICAgIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwot
ICAgIGlmIChtX251bVBhcnNlZFByb3BlcnRpZXMpIHsKKyAgICBpZiAobV9wYXJzZWRQcm9wZXJ0
aWVzLmhhc0ZvbnRGYWNlT25seSgpKQorICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMuZGVsZXRl
Rm9udEZhY2VPbmx5UHJvcGVydGllcygpOworICAgIGlmIChtX3BhcnNlZFByb3BlcnRpZXMuY291
bnQoKSkgewogICAgICAgICBvayA9IHRydWU7Ci0gICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJz
ZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKTsK
KyAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0
aWVzKTsKICAgICAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgfQogCkBAIC00ODUsNyArNDc4
LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGJvb2wgc3RyaWN0KQogICAgIGlmICghcGFyc2VyLnBhcnNlQ29sb3IoZHVt
bXlTdHlsZURlY2xhcmF0aW9uLmdldCgpLCBzdHJpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXIubV9wYXJzZWRQcm9wZXJ0aWVzWzBdLT52
YWx1ZSgpOworICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHBhcnNlci5tX3BhcnNlZFByb3BlcnRpZXMu
Zmlyc3QoKS52YWx1ZSgpOwogICAgIGlmICh2YWx1ZS0+Y3NzVmFsdWVUeXBlKCkgIT0gQ1NTVmFs
dWU6OkNTU19QUklNSVRJVkVfVkFMVUUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTA2
LDcgKzQ5OSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uKiBkZWNsYXJhdGlvbiwgY29uc3QgU3RyaW5nCiAgICAgY3NzeXlwYXJzZSh0aGlz
KTsKICAgICBtX3J1bGUgPSAwOwogCi0gICAgcmV0dXJuIChtX251bVBhcnNlZFByb3BlcnRpZXMg
JiYgbV9wYXJzZWRQcm9wZXJ0aWVzWzBdLT5tX2lkID09IENTU1Byb3BlcnR5Q29sb3IpOworICAg
IHJldHVybiAobV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkgJiYgbV9wYXJzZWRQcm9wZXJ0aWVz
LmZpcnN0KCkuaWQoKSA9PSBDU1NQcm9wZXJ0eUNvbG9yKTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6
OnBhcnNlU3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIERv
Y3VtZW50KiBkb2N1bWVudCkKQEAgLTU2MCwxMSArNTUzLDEyIEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlvbiwg
Y29uc3QKICAgICBtX3J1bGUgPSAwOwogCiAgICAgYm9vbCBvayA9IGZhbHNlOwotICAgIGlmICht
X2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVz
KCk7Ci0gICAgaWYgKG1fbnVtUGFyc2VkUHJvcGVydGllcykgeworICAgIGlmIChtX3BhcnNlZFBy
b3BlcnRpZXMuaGFzRm9udEZhY2VPbmx5KCkpCisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5k
ZWxldGVGb250RmFjZU9ubHlQcm9wZXJ0aWVzKCk7CisKKyAgICBpZiAobV9wYXJzZWRQcm9wZXJ0
aWVzLmNvdW50KCkpIHsKICAgICAgICAgb2sgPSB0cnVlOwotICAgICAgICBkZWNsYXJhdGlvbi0+
YWRkUGFyc2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVy
dGllcyk7CisgICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2Vk
UHJvcGVydGllcyk7CiAgICAgICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIH0KIApAQCAtNjA4
LDMzICs2MDIsMTggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeShNZWRpYUxpc3Qq
IHF1ZXJpZXMsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogCiB2b2lkIENTU1BhcnNlcjo6YWRkUHJv
cGVydHkoaW50IHByb3BJZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0
YW50KQogewotICAgIE93blB0cjxDU1NQcm9wZXJ0eT4gcHJvcChhZG9wdFB0cihuZXcgQ1NTUHJv
cGVydHkocHJvcElkLCB2YWx1ZSwgaW1wb3J0YW50LCBtX2N1cnJlbnRTaG9ydGhhbmQsIG1faW1w
bGljaXRTaG9ydGhhbmQpKSk7Ci0gICAgaWYgKG1fbnVtUGFyc2VkUHJvcGVydGllcyA+PSBtX21h
eFBhcnNlZFByb3BlcnRpZXMpIHsKLSAgICAgICAgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzICs9IDMy
OwotICAgICAgICBpZiAobV9tYXhQYXJzZWRQcm9wZXJ0aWVzID4gVUlOVF9NQVggLyBzaXplb2Yo
Q1NTUHJvcGVydHkqKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9wYXJzZWRQcm9w
ZXJ0aWVzID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHkqKj4oZmFzdFJlYWxsb2MobV9wYXJzZWRQ
cm9wZXJ0aWVzLAotICAgICAgICAgICAgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzICogc2l6ZW9mKENT
U1Byb3BlcnR5KikpKTsKLSAgICB9Ci0gICAgbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2Vk
UHJvcGVydGllcysrXSA9IHByb3AubGVha1B0cigpOworICAgIG1fcGFyc2VkUHJvcGVydGllcy5h
ZGRQcm9wZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRhbnQsIG1fY3VycmVudFNob3J0aGFuZCwg
bV9pbXBsaWNpdFNob3J0aGFuZCk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpyb2xsYmFja0xhc3RQ
cm9wZXJ0aWVzKGludCBudW0pCiB7Ci0gICAgQVNTRVJUKG51bSA+PSAwKTsKLSAgICBBU1NFUlQo
bV9udW1QYXJzZWRQcm9wZXJ0aWVzID49IHN0YXRpY19jYXN0PHVuc2lnbmVkPihudW0pKTsKLQot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtOyArK2kpCi0gICAgICAgIGRlbGV0ZSBtX3BhcnNl
ZFByb3BlcnRpZXNbLS1tX251bVBhcnNlZFByb3BlcnRpZXNdOworICAgIG1fcGFyc2VkUHJvcGVy
dGllcy5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKG51bSk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpj
bGVhclByb3BlcnRpZXMoKQogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBh
cnNlZFByb3BlcnRpZXM7IGkrKykKLSAgICAgICAgZGVsZXRlIG1fcGFyc2VkUHJvcGVydGllc1tp
XTsKLSAgICBtX251bVBhcnNlZFByb3BlcnRpZXMgPSAwOworICAgIG1fcGFyc2VkUHJvcGVydGll
cy5jbGVhclByb3BlcnRpZXMoKTsKICAgICBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJn
aW5Cb3ggPSBJTlZBTElEX05VTV9QQVJTRURfUFJPUEVSVElFUzsKLSAgICBtX2hhc0ZvbnRGYWNl
T25seVZhbHVlcyA9IGZhbHNlOwogfQogICAgIAogdm9pZCBDU1NQYXJzZXI6OnNldFN0eWxlU2hl
ZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCkKQEAgLTk0NCw3ICs5MjMsNyBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAg
U2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsKICAgICAgICAgaWYgKG51bSAhPSAx
IHx8ICFwYXJzZVZhbHVlKENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBpbXBvcnRhbnQpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFBy
b3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gMV0tPnZhbHVlKCk7CisgICAgICAgIENT
U1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIHZhbHVlLCBpbXBvcnRhbnQpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xMDQxLDcgKzEwMjAsNyBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAg
ICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZyk7
CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSogdmFs
dWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTFdLT52YWx1ZSgp
OworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3Qo
KS52YWx1ZSgpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1sxXSwgdmFsdWUs
IGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTY5
Niw3ICsxNjc1LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9v
bCBpbXBvcnRhbnQpCiAgICAgICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlKTsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1
ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251
bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFs
dWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQ
cm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yNDYzLDcgKzI0NDIsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgIGJvb2wg
aW1wb3J0YW50KQogICAgICAgICBjYXNlIDE6IHsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1
ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251
bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFs
dWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBJbXBs
aWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBsaWNpdCk7CiAgICAgICAg
ICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAg
ICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMl0sIHZhbHVlLCBpbXBvcnRhbnQpOwpAQCAt
MjQ3MywxNyArMjQ1MiwxNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKGludCBwcm9w
SWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBjYXNl
IDI6IHsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRh
bnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJz
ZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKKyAgICAgICAg
ICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0QnV0T25lKCkudmFs
dWUoKTsKICAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9w
ZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMl0sIHZh
bHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNb
bV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAgICAgdmFsdWUgPSBt
X3BhcnNlZFByb3BlcnRpZXMubGFzdEJ1dE9uZSgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQ
cm9wZXJ0eShwcm9wZXJ0aWVzWzNdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgMzogewogICAgICAgICAgICAgaWYgKCFwYXJz
ZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGll
c1sxXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzJdLCBpbXBvcnRhbnQp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2
YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZhbHVl
KCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFz
dEJ1dE9uZSgpLnZhbHVlKCk7CiAgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2Nv
cGUodGhpcywgUHJvcGVydHlJbXBsaWNpdCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9w
ZXJ0aWVzWzNdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzg0
Nyw3ICszODI2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFN0eWxlKGJvb2wgaW1wb3J0
YW50KQogICAgIH0KIAogICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLT5sZW5ndGgoKSkgewotICAg
ICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IHRydWU7CisgICAgICAgIG1fcGFyc2VkUHJv
cGVydGllcy5zZXRGb250RmFjZU9ubHkoKTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlGb250U3R5bGUsIHZhbHVlcy5yZWxlYXNlKCksIGltcG9ydGFudCk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTM4OTQsNyArMzg3Myw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZUZvbnRWYXJpYW50KGJvb2wgaW1wb3J0YW50KQogICAgIH0KIAogICAgIGlmICh2YWx1ZXMgJiYg
dmFsdWVzLT5sZW5ndGgoKSkgewotICAgICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IHRy
dWU7CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5zZXRGb250RmFjZU9ubHkoKTsKICAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFudCwgdmFsdWVzLnJlbGVhc2UoKSwg
aW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzk0Nyw3ICszOTI2
LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFdlaWdodChib29sIGltcG9ydGFudCkKICAg
ICB9CiAKICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy0+bGVuZ3RoKCkpIHsKLSAgICAgICAgbV9o
YXNGb250RmFjZU9ubHlWYWx1ZXMgPSB0cnVlOworICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMu
c2V0Rm9udEZhY2VPbmx5KCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdl
aWdodCwgdmFsdWVzLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQpAQCAtNjQxMSw5ICs2MzkwLDkgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVT
dHlsZVJ1bGUoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3IKICAg
ICAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9
IGZhbHNlOwogICAgICAgICBSZWZQdHI8Q1NTU3R5bGVSdWxlPiBydWxlID0gQ1NTU3R5bGVSdWxl
OjpjcmVhdGUobV9zdHlsZVNoZWV0LCBtX2xhc3RTZWxlY3RvckxpbmVOdW1iZXIpOwogICAgICAg
ICBydWxlLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpzZWxlY3RvcnMpOwotICAgICAgICBpZiAobV9o
YXNGb250RmFjZU9ubHlWYWx1ZXMpCi0gICAgICAgICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1
ZXMoKTsKLSAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2Vk
UHJvcGVydGllcykpOworICAgICAgICBpZiAobV9wYXJzZWRQcm9wZXJ0aWVzLmhhc0ZvbnRGYWNl
T25seSgpKQorICAgICAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmRlbGV0ZUZvbnRGYWNlT25s
eVByb3BlcnRpZXMoKTsKKyAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMpKTsK
ICAgICAgICAgcmVzdWx0ID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9wYXJzZWRTdHlsZU9iamVj
dHMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICAgICAgaWYgKG1fcnVsZVJhbmdlTWFwKSB7
CkBAIC02NDM1LDcgKzY0MTQsOCBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVs
ZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcgogQ1NTUnVsZSog
Q1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUoKQogewogICAgIG1fYWxsb3dJbXBvcnRSdWxl
cyA9IG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxzZTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzOyArK2kpIHsKKworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKTsgKytpKSB7CiAg
ICAgICAgIENTU1Byb3BlcnR5KiBwcm9wZXJ0eSA9IG1fcGFyc2VkUHJvcGVydGllc1tpXTsKICAg
ICAgICAgaW50IGlkID0gcHJvcGVydHktPmlkKCk7CiAgICAgICAgIGlmICgoaWQgPT0gQ1NTUHJv
cGVydHlGb250V2VpZ2h0IHx8IGlkID09IENTU1Byb3BlcnR5Rm9udFN0eWxlIHx8IGlkID09IENT
U1Byb3BlcnR5Rm9udFZhcmlhbnQpICYmIHByb3BlcnR5LT52YWx1ZSgpLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpIHsKQEAgLTY0NTEsOCArNjQzMSw5IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRl
Rm9udEZhY2VSdWxlKCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQor
CiAgICAgUmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4gcnVsZSA9IENTU0ZvbnRGYWNlUnVsZTo6Y3Jl
YXRlKG1fc3R5bGVTaGVldCk7Ci0gICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMsIG1f
bnVtUGFyc2VkUHJvcGVydGllcykpOworICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVz
KSk7CiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgQ1NTRm9udEZhY2VSdWxlKiByZXN1bHQg
PSBydWxlLmdldCgpOwogICAgIG1fcGFyc2VkU3R5bGVPYmplY3RzLmFwcGVuZChydWxlLnJlbGVh
c2UoKSk7CkBAIC02NTI2LDcgKzY1MDcsNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVBh
Z2VSdWxlKFBhc3NPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHBhZ2VTZWxlY3RvcikKICAgICAg
ICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBzZWxlY3RvclZlY3RvcjsKICAg
ICAgICAgc2VsZWN0b3JWZWN0b3IuYXBwZW5kKHBhZ2VTZWxlY3Rvcik7CiAgICAgICAgIHJ1bGUt
PmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOwotICAgICAgICBydWxlLT5zZXRE
ZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCks
IG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIHJ1
bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVs
ZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzKSk7CiAgICAgICAgIHBhZ2VSdWxlID0gcnVsZS5n
ZXQoKTsKICAgICAgICAgbV9wYXJzZWRTdHlsZU9iamVjdHMuYXBwZW5kKHJ1bGUucmVsZWFzZSgp
KTsKICAgICB9CkBAIC02NTQ3LDM0ICs2NTI4LDE2IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3Jl
YXRlTWFyZ2luQXRSdWxlKENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIC8qIG1hcmdpbkJveCAq
CiAKIHZvaWQgQ1NTUGFyc2VyOjpzdGFydERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpCiB7Ci0g
ICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzOworICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCA9IG1fcGFy
c2VkUHJvcGVydGllcy5jb3VudCgpOwogfQogCiB2b2lkIENTU1BhcnNlcjo6ZW5kRGVjbGFyYXRp
b25zRm9yTWFyZ2luQm94KCkKIHsKICAgICBBU1NFUlQobV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVm
b3JlTWFyZ2luQm94ICE9IElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTKTsKLSAgICByb2xs
YmFja0xhc3RQcm9wZXJ0aWVzKG1fbnVtUGFyc2VkUHJvcGVydGllcyAtIG1fbnVtUGFyc2VkUHJv
cGVydGllc0JlZm9yZU1hcmdpbkJveCk7CisgICAgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhtX3Bh
cnNlZFByb3BlcnRpZXMuY291bnQoKSAtIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdp
bkJveCk7CiAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gSU5WQUxJ
RF9OVU1fUEFSU0VEX1BST1BFUlRJRVM7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjpkZWxldGVGb250
RmFjZU9ubHlWYWx1ZXMoKQotewotICAgIEFTU0VSVChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyk7
Ci0gICAgaW50IGRlbGV0ZWRQcm9wZXJ0aWVzID0gMDsKLQotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX251bVBhcnNlZFByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBDU1NQcm9wZXJ0
eSogcHJvcGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07Ci0gICAgICAgIGludCBpZCA9IHBy
b3BlcnR5LT5pZCgpOwotICAgICAgICBpZiAoKGlkID09IENTU1Byb3BlcnR5Rm9udFdlaWdodCB8
fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRTdHlsZSB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRWYXJp
YW50KSAmJiBwcm9wZXJ0eS0+dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAgICAg
ZGVsZXRlIHByb3BlcnR5OwotICAgICAgICAgICAgZGVsZXRlZFByb3BlcnRpZXMrKzsKLSAgICAg
ICAgfSBlbHNlIGlmIChkZWxldGVkUHJvcGVydGllcykKLSAgICAgICAgICAgIG1fcGFyc2VkUHJv
cGVydGllc1tpIC0gZGVsZXRlZFByb3BlcnRpZXNdID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwot
ICAgIH0KLQotICAgIG1fbnVtUGFyc2VkUHJvcGVydGllcyAtPSBkZWxldGVkUHJvcGVydGllczsK
LX0KLQogV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVs
ZShDU1NQYXJzZXJWYWx1ZUxpc3QqIGtleXMpCiB7CiAgICAgLy8gQ3JlYXRlIGEga2V5IHN0cmlu
ZyBmcm9tIHRoZSBwYXNzZWQga2V5cwpAQCAtNjU4OSw3ICs2NTUyLDcgQEAgV2ViS2l0Q1NTS2V5
ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJWYWx1ZUxp
c3QqIGtleXMpCiAKICAgICBSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBrZXlmcmFtZSA9
IFdlYktpdENTU0tleWZyYW1lUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7CiAgICAga2V5ZnJh
bWUtPnNldEtleVRleHQoa2V5U3RyaW5nKTsKLSAgICBrZXlmcmFtZS0+c2V0RGVjbGFyYXRpb24o
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgwLCBtX3BhcnNlZFByb3BlcnRpZXMs
IG1fbnVtUGFyc2VkUHJvcGVydGllcykpOworICAgIGtleWZyYW1lLT5zZXREZWNsYXJhdGlvbihD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKDAsIG1fcGFyc2VkUHJvcGVydGllcykp
OwogCiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBj
NmYwNzhhLi5mOWFjMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyVmFs
dWVzLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJDU1NQ
cm9wZXJ0eVNvdXJjZURhdGEuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUg
IkNvbG9yLmgiCkBAIC03NSw3ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICB2b2lkIGFkZFByb3BlcnR5KGludCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29s
IGltcG9ydGFudCk7CiAgICAgICAgIHZvaWQgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhpbnQgbnVt
KTsKLSAgICAgICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1QYXJz
ZWRQcm9wZXJ0aWVzID4gMDsgfQorICAgICAgICBib29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7
IHJldHVybiBtX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSA+IDA7IH0KIAogICAgICAgICBib29s
IHBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgICAgICBib29sIHBh
cnNlU2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVBy
b3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKQEAgLTIzOSwxOCArMjQwLDE1IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPENTU1J1bGU+IG1fa2V5ZnJhbWU7CiAgICAgICAg
IE93blB0cjxNZWRpYVF1ZXJ5PiBtX21lZGlhUXVlcnk7CiAgICAgICAgIENTU1BhcnNlclZhbHVl
TGlzdCogbV92YWx1ZUxpc3Q7Ci0gICAgICAgIENTU1Byb3BlcnR5KiogbV9wYXJzZWRQcm9wZXJ0
aWVzOworICAgICAgICBDU1NQcm9wZXJ0eUNvbnRhaW5lciBtX3BhcnNlZFByb3BlcnRpZXM7CiAg
ICAgICAgIENTU1NlbGVjdG9yTGlzdCogbV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yOwog
ICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWVDYWNoZT4gbV9wcmltaXRpdmVWYWx1ZUNh
Y2hlOwotICAgICAgICB1bnNpZ25lZCBtX251bVBhcnNlZFByb3BlcnRpZXM7Ci0gICAgICAgIHVu
c2lnbmVkIG1fbWF4UGFyc2VkUHJvcGVydGllczsKICAgICAgICAgdW5zaWduZWQgbV9udW1QYXJz
ZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94OwogCiAgICAgICAgIGludCBtX2luUGFyc2VTaG9y
dGhhbmQ7CiAgICAgICAgIGludCBtX2N1cnJlbnRTaG9ydGhhbmQ7CiAgICAgICAgIGJvb2wgbV9p
bXBsaWNpdFNob3J0aGFuZDsKIAotICAgICAgICBib29sIG1faGFzRm9udEZhY2VPbmx5VmFsdWVz
OwogICAgICAgICBib29sIG1faGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZTsKIAogICAgICAg
ICBBdG9taWNTdHJpbmcgbV9kZWZhdWx0TmFtZXNwYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHku
aAppbmRleCA0YTQ2ZmMyLi42ZDBmNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaApAQCAt
MzIsNiArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTUHJvcGVydHkgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIENTU1Byb3BlcnR5KCkK
KyAgICB7CisgICAgfQorCiAgICAgQ1NTUHJvcGVydHkoaW50IHByb3BJRCwgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UsIGludCBzaG9ydGhhbmRJRCA9
IDAsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSkKICAgICAgICAgOiBtX2lkKHByb3BJRCkKICAgICAg
ICAgLCBtX3Nob3J0aGFuZElEKHNob3J0aGFuZElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eUNvbnRhaW5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YTJlMTMyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eUNvbnRhaW5lci5jcHAKQEAgLTAsMCArMSwyNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdlYmtp
dC5vcmc+LCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKKwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDU1NQ
cm9wZXJ0eUNvbnRhaW5lcjo6Q1NTUHJvcGVydHlDb250YWluZXIoKQorICAgIDogbV9udW1WYWxp
ZFByb3BlcnRpZXMoMCkKKyAgICAsIG1fdXNlZFNpemUoMCkKKyAgICAsIG1faGFzRm9udEZhY2VP
bmx5UHJvcGVydGllcyhmYWxzZSkKK3sKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6
c3dlZXAoKQoreworICAgIGlmIChtX251bVZhbGlkUHJvcGVydGllcyA9PSBtX3VzZWRTaXplKQor
ICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBkZWxldGVkUHJvcGVydGllcyA9IDA7CisK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV91c2VkU2l6ZTsgKytpKSB7CisgICAgICAg
IGlmICghbV9wcm9wZXJ0aWVzW2ldLmlkKCkpCisgICAgICAgICAgICArK2RlbGV0ZWRQcm9wZXJ0
aWVzOworICAgICAgICBlbHNlIGlmIChkZWxldGVkUHJvcGVydGllcykgeworICAgICAgICAgICAg
bV9pZFRvUG9zaXRpb25NYXAuc2V0KG1fcHJvcGVydGllc1tpXS5pZCgpLCBpIC0gZGVsZXRlZFBy
b3BlcnRpZXMpOworICAgICAgICAgICAgbV9wcm9wZXJ0aWVzW2kgLSBkZWxldGVkUHJvcGVydGll
c10gPSBtX3Byb3BlcnRpZXNbaV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3VzZWRTaXpl
IC09IGRlbGV0ZWRQcm9wZXJ0aWVzOworCisgICAgaWYgKG1faWRUb1Bvc2l0aW9uTWFwLnNpemUo
KSA+IHN0YXRpY19jYXN0PGludD4obV9wcm9wZXJ0aWVzLnNpemUoKSArIGtHcm93RmFjdG9yKSkg
eworICAgICAgICBtX2lkVG9Qb3NpdGlvbk1hcC5jbGVhcigpOworCisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3VzZWRTaXplOyArK2kpCisgICAgICAgICAgICBtX2lkVG9Qb3Np
dGlvbk1hcC5hZGQobV9wcm9wZXJ0aWVzW2ldLmlkKCksIGkpOworICAgIH0KKworICAgIEFTU0VS
VChtX251bVZhbGlkUHJvcGVydGllcyA9PSBtX3VzZWRTaXplKTsKK30KKworaW5saW5lIHZvaWQg
Q1NTUHJvcGVydHlDb250YWluZXI6Omdyb3dJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fdXNlZFNp
emUgKyAxID49IG1fcHJvcGVydGllcy5zaXplKCkpCisgICAgICAgIHN3ZWVwKCk7CisKKyAgICBp
ZiAobV91c2VkU2l6ZSA9PSBtX3Byb3BlcnRpZXMuc2l6ZSgpKQorICAgICAgICBtX3Byb3BlcnRp
ZXMuYWxsb2MoKTsKK30KKworaW5saW5lIHVuc2lnbmVkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpp
bnRlcm5hbFBvc2l0aW9uKGludCBwcm9wZXJ0eUlEKQoreworICAgIGlmICghcHJvcGVydHlJRCB8
fCAhbV9pZFRvUG9zaXRpb25NYXAuY29udGFpbnMocHJvcGVydHlJRCkpCisgICAgICAgIHJldHVy
biBrSW52YWxpZFBvc2l0aW9uOworCisgICAgdW5zaWduZWQgcG9zaXRpb24gPSBtX2lkVG9Qb3Np
dGlvbk1hcC5nZXQocHJvcGVydHlJRCk7CisKKyAgICBpZiAocG9zaXRpb24gPT0ga0ludmFsaWRQ
b3NpdGlvbikKKyAgICAgICAgcmV0dXJuIGtJbnZhbGlkUG9zaXRpb247CisKKyAgICBBU1NFUlQo
cG9zaXRpb24gPCBtX3VzZWRTaXplKTsKKworICAgIGlmICghbV9wcm9wZXJ0aWVzW3Bvc2l0aW9u
XS5pZCgpKQorICAgICAgICByZXR1cm4ga0ludmFsaWRQb3NpdGlvbjsKKworICAgIHJldHVybiBw
b3NpdGlvbjsKK30KKworaW5saW5lIHZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OmludmFsaWRh
dGVCeVBvc2l0aW9uKHVuc2lnbmVkIHBvc2l0aW9uKQoreworICAgIGlmIChwb3NpdGlvbiA+PSBt
X3VzZWRTaXplIHx8ICFtX3Byb3BlcnRpZXNbcG9zaXRpb25dLmlkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIC0tbV9udW1WYWxpZFByb3BlcnRpZXM7CisKKyAgICBtX2lkVG9Qb3NpdGlvbk1h
cC5zZXQobV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS5pZCgpLCBrSW52YWxpZFBvc2l0aW9uKTsKKyAg
ICBtX3Byb3BlcnRpZXNbcG9zaXRpb25dLm1faWQgPSAwOworfQorCitpbmxpbmUgdm9pZCBDU1NQ
cm9wZXJ0eUNvbnRhaW5lcjo6aW52YWxpZGF0ZUJ5SWQoaW50IHByb3BlcnR5SUQpCit7CisgICAg
aWYgKCFwcm9wZXJ0eUlEKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBwb3NpdGlv
biA9IGludGVybmFsUG9zaXRpb24ocHJvcGVydHlJRCk7CisKKyAgICBpZiAocG9zaXRpb24gPT0g
a0ludmFsaWRQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaW52YWxpZGF0ZUJ5UG9z
aXRpb24ocG9zaXRpb24pOworfQorCitDU1NQcm9wZXJ0eSogQ1NTUHJvcGVydHlDb250YWluZXI6
OmZpbmRQcm9wZXJ0eVdpdGhJZChpbnQgcHJvcGVydHlJRCkKK3sKKyAgICBpZiAoIXByb3BlcnR5
SUQgfHwgIW1fdXNlZFNpemUpCisgICAgICAgIHJldHVybiAwOworCisgICAgdW5zaWduZWQgcG9z
aXRpb24gPSBpbnRlcm5hbFBvc2l0aW9uKHByb3BlcnR5SUQpOworCisgICAgaWYgKHBvc2l0aW9u
ID09IGtJbnZhbGlkUG9zaXRpb24pCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuICZt
X3Byb3BlcnRpZXNbcG9zaXRpb25dOworfQorCitjb25zdCBDU1NQcm9wZXJ0eSYgQ1NTUHJvcGVy
dHlDb250YWluZXI6OmZpcnN0KCkKK3sKKyAgICBBU1NFUlQoIW1fcHJvcGVydGllcy5pc0VtcHR5
KCkgJiYgbV9udW1WYWxpZFByb3BlcnRpZXMpOworCisgICAgaWYgKCFtX3Byb3BlcnRpZXNbMF0u
aWQoKSkKKyAgICAgICAgc3dlZXAoKTsKKworICAgIEFTU0VSVChtX3Byb3BlcnRpZXNbMF0uaWQo
KSk7CisKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzWzBdOworfQorCitjb25zdCBDU1NQcm9wZXJ0
eSYgQ1NTUHJvcGVydHlDb250YWluZXI6Omxhc3QoKQoreworICAgIEFTU0VSVCghbV9wcm9wZXJ0
aWVzLmlzRW1wdHkoKSAmJiBtX251bVZhbGlkUHJvcGVydGllcyk7CisKKyAgICBpZiAoIW1fcHJv
cGVydGllc1ttX3VzZWRTaXplIC0gMV0uaWQoKSkKKyAgICAgICAgc3dlZXAoKTsKKworICAgIEFT
U0VSVChtX3VzZWRTaXplICYmIG1fcHJvcGVydGllc1ttX3VzZWRTaXplIC0gMV0uaWQoKSk7CisK
KyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzW21fdXNlZFNpemUgLSAxXTsKK30KKworY29uc3QgQ1NT
UHJvcGVydHkmIENTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0QnV0T25lKCkKK3sKKyAgICBBU1NF
UlQoIW1fcHJvcGVydGllcy5pc0VtcHR5KCkgJiYgbV9udW1WYWxpZFByb3BlcnRpZXMgPj0gMik7
CisKKyAgICBpZiAoIW1fcHJvcGVydGllc1ttX3VzZWRTaXplIC0gMV0uaWQoKSB8fCAhbV9wcm9w
ZXJ0aWVzW21fdXNlZFNpemUgLSAyXS5pZCgpKQorICAgICAgICBzd2VlcCgpOworCisgICAgQVNT
RVJUKG1fdXNlZFNpemUgPj0gMiAmJiBtX3Byb3BlcnRpZXNbbV91c2VkU2l6ZSAtIDJdLmlkKCkp
OworCisgICAgcmV0dXJuIG1fcHJvcGVydGllc1ttX3VzZWRTaXplIC0gMl07Cit9CisKK0NTU1By
b3BlcnR5KiBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6b3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCit7
CisgICAgc3dlZXAoKTsKKyAgICBBU1NFUlQoaW5kZXggPCBtX3VzZWRTaXplKTsKKyAgICByZXR1
cm4gJm1fcHJvcGVydGllcy5hdChpbmRleCk7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlDb250YWlu
ZXI6OmNvbnRhaW5zUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCit7CisgICAgdW5zaWduZWQgcG9z
aXRpb24gPSBpbnRlcm5hbFBvc2l0aW9uKHByb3BlcnR5SUQpOworCisgICAgaWYgKHBvc2l0aW9u
ID09IGtJbnZhbGlkUG9zaXRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVQcm9wZXJ0eShp
bnQgcHJvcGVydHlJRCkKK3sKKyAgICBpbnZhbGlkYXRlQnlJZChwcm9wZXJ0eUlEKTsKK30KKwor
dm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3ZlUHJvcGVydGllcyhjb25zdCBpbnQqIGlk
TGlzdCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkKKyAgICAgICAgaW52YWxpZGF0ZUJ5SWQoaWRMaXN0W2ldKTsKK30KKwordm9p
ZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6YWRkUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCwgaW50IHNob3J0aGFuZElELCBi
b29sIGltcGxpY2l0KQoreworICAgIGdyb3dJZk5lZWRlZCgpOworCisgICAgdW5zaWduZWQgb2xk
UG9zaXRpb24gPSBpbnRlcm5hbFBvc2l0aW9uKHByb3BlcnR5SUQpOworCisgICAgaWYgKG9sZFBv
c2l0aW9uICE9IGtJbnZhbGlkUG9zaXRpb24pIHsKKyAgICAgICAgaWYgKG1fcHJvcGVydGllc1tv
bGRQb3NpdGlvbl0uaWQoKSAmJiBtX3Byb3BlcnRpZXNbb2xkUG9zaXRpb25dLmlzSW1wb3J0YW50
KCkgJiYgIWltcG9ydGFudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpbnZhbGlk
YXRlQnlQb3NpdGlvbihvbGRQb3NpdGlvbik7CisgICAgfQorCisgICAgbV9wcm9wZXJ0aWVzW21f
dXNlZFNpemVdID0gQ1NTUHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgc2hv
cnRoYW5kSUQsIGltcGxpY2l0KTsKKyAgICBtX2lkVG9Qb3NpdGlvbk1hcC5zZXQocHJvcGVydHlJ
RCwgbV91c2VkU2l6ZSk7CisgICAgKyttX251bVZhbGlkUHJvcGVydGllczsKKyAgICArK21fdXNl
ZFNpemU7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OnJvbGxiYWNrTGFzdFByb3Bl
cnRpZXMoaW50IG51bSkKK3sKKyAgICBpZiAoIW51bSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
QVNTRVJUKG51bSA+IDApOworICAgIEFTU0VSVChtX251bVZhbGlkUHJvcGVydGllcyA+PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obnVtKSk7CisKKyAgICBpbnQgZGVsZXRlZFByb3BlcnRpZXMgPSAw
OworICAgIGludCBwb3NpdGlvbiA9IG1fdXNlZFNpemU7CisgICAgd2hpbGUgKGRlbGV0ZWRQcm9w
ZXJ0aWVzICE9IG51bSAmJiAtLXBvc2l0aW9uID49IDApIHsKKyAgICAgICAgaWYgKG1fcHJvcGVy
dGllc1twb3NpdGlvbl0uaWQoKSkgeworICAgICAgICAgICAgaW52YWxpZGF0ZUJ5UG9zaXRpb24o
cG9zaXRpb24pOworICAgICAgICAgICAgKytkZWxldGVkUHJvcGVydGllczsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6ZGVsZXRlRm9udEZhY2VPbmx5
UHJvcGVydGllcygpCit7CisgICAgQVNTRVJUKG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyk7
CisKKyAgICBpbnQgaWRzWzNdID0ge0NTU1Byb3BlcnR5Rm9udFdlaWdodCwgQ1NTUHJvcGVydHlG
b250U3R5bGUsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnR9OworCisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCAzOyArK2kpIHsKKyAgICAgICAgdW5zaWduZWQgcG9zaXRpb24gPSBpbnRlcm5hbFBvc2l0
aW9uKGlkc1tpXSk7CisKKyAgICAgICAgaWYgKHBvc2l0aW9uID09IGtJbnZhbGlkUG9zaXRpb24p
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAobV9wcm9wZXJ0aWVzW3Bvc2l0
aW9uXS52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpKQorICAgICAgICAgICAgaW52YWxpZGF0ZUJ5UG9z
aXRpb24ocG9zaXRpb24pOworICAgIH0KKyAgICBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXMg
PSBmYWxzZTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y2xlYXJQcm9wZXJ0aWVz
KCkKK3sKKyAgICBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXMgPSBmYWxzZTsKKworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3VzZWRTaXplOyArK2kpCisgICAgICAgIGludmFsaWRh
dGVCeVBvc2l0aW9uKGkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjRjZmI1NTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHlDb250YWluZXIuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBbmRyYXMgQmVjc2kgPGFiZWNz
aUB3ZWJraXQub3JnPiwgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBDU1NQcm9wZXJ0eUNv
bnRhaW5lcl9oCisjZGVmaW5lIENTU1Byb3BlcnR5Q29udGFpbmVyX2gKKworI2luY2x1ZGUgIkNT
U1Byb3BlcnR5LmgiCisjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjb25zdCB1bnNpZ25lZCBrR3Jvd0ZhY3RvciA9IDMyOworY29uc3QgdW5zaWduZWQg
a0ludmFsaWRQb3NpdGlvbiA9IFVJTlRfTUFYOworCitjbGFzcyBDU1NQcm9wZXJ0eUNvbnRhaW5l
ciB7CitwdWJsaWM6CisgICAgQ1NTUHJvcGVydHlDb250YWluZXIoKTsKKyAgICBjb25zdCBDU1NQ
cm9wZXJ0eSYgZmlyc3QoKTsKKyAgICBjb25zdCBDU1NQcm9wZXJ0eSYgbGFzdCgpOworICAgIGNv
bnN0IENTU1Byb3BlcnR5JiBsYXN0QnV0T25lKCk7CisgICAgQ1NTUHJvcGVydHkqIGZpbmRQcm9w
ZXJ0eVdpdGhJZChpbnQgcHJvcGVydHlJRCk7CisKKyAgICBpbmxpbmUgdW5zaWduZWQgY291bnQo
KSBjb25zdCB7IHJldHVybiBtX251bVZhbGlkUHJvcGVydGllczsgfQorICAgIGlubGluZSBib29s
IGhhc0ZvbnRGYWNlT25seSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRm9udEZhY2VPbmx5UHJvcGVy
dGllczsgfQorICAgIGlubGluZSB2b2lkIHNldEZvbnRGYWNlT25seSgpIHsgbV9oYXNGb250RmFj
ZU9ubHlQcm9wZXJ0aWVzID0gdHJ1ZTsgfQorCisgICAgQ1NTUHJvcGVydHkqIG9wZXJhdG9yW10o
c2l6ZV90IGluZGV4KTsKKworICAgIGJvb2wgY29udGFpbnNQcm9wZXJ0eShpbnQgcHJvcGVydHlJ
RCk7CisgICAgdm9pZCByZW1vdmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCk7CisgICAgdm9pZCBy
ZW1vdmVQcm9wZXJ0aWVzKGNvbnN0IGludCogaWRMaXN0LCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IHZvaWQgYWRkUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBi
b29sIGltcG9ydGFudCwgaW50IHNob3J0aGFuZElEID0gMCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNl
KTsKKyAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSk7CisgICAgdm9pZCBk
ZWxldGVGb250RmFjZU9ubHlQcm9wZXJ0aWVzKCk7CisgICAgdm9pZCBjbGVhclByb3BlcnRpZXMo
KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHN3ZWVwKCk7CisgICAgaW5saW5lIHZvaWQgZ3Jvd0lm
TmVlZGVkKCk7CisgICAgaW5saW5lIHVuc2lnbmVkIGludGVybmFsUG9zaXRpb24oaW50IHByb3Bl
cnR5SUQpOworICAgIGlubGluZSB2b2lkIGludmFsaWRhdGVCeVBvc2l0aW9uKHVuc2lnbmVkIHBv
c2l0aW9uKTsKKyAgICBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlQnlJZChpbnQgcHJvcGVydHlJRCk7
CisKKyAgICB1bnNpZ25lZCBtX251bVZhbGlkUHJvcGVydGllczsKKyAgICB1bnNpZ25lZCBtX3Vz
ZWRTaXplOworCisgICAgYm9vbCBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXM7CisKKyAgICBT
ZWdtZW50ZWRWZWN0b3I8Q1NTUHJvcGVydHksIGtHcm93RmFjdG9yPiBtX3Byb3BlcnRpZXM7Cisg
ICAgSGFzaE1hcDxpbnQsIHVuc2lnbmVkPiBtX2lkVG9Qb3NpdGlvbk1hcDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1Byb3BlcnR5Q29udGFpbmVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKaW5kZXggZjNiNWFjMy4uODAyYmZkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJD
U1NJbml0aWFsVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQ
cm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAi
Q1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1F1aXJrUHJpbWl0aXZlVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCkBAIC0yODYsNyArMjg3LDcgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAg
ICAgICAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKDEpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9Ci0gICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVy
dGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMgLSAxXS0+dmFsdWUoKTsKKyAgICAgICAgQ1NTVmFs
dWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwogICAgICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtlck1pZCwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAg
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TWFya2VyRW5kLCB2YWx1ZSwgaW1wb3J0YW50KTsK
ICAgICAgICAgbV9pbXBsaWNpdFNob3J0aGFuZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9udEZhY2VFbGVtZW50LmNwcAppbmRleCA3NzBhNjg2Li40ZmUxODUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcApAQCAtMjk5LDggKzI5OSw4IEBAIHZv
aWQgU1ZHRm9udEZhY2VFbGVtZW50OjpyZWJ1aWxkRm9udEZhY2UoKQogCiAgICAgLy8gUGFyc2Ug
aW4tbWVtb3J5IENTUyBydWxlcwogICAgIENTU1Byb3BlcnR5IHNyY1Byb3BlcnR5KENTU1Byb3Bl
cnR5U3JjLCBsaXN0KTsKLSAgICBjb25zdCBDU1NQcm9wZXJ0eSogc3JjUHJvcGVydHlSZWYgPSAm
c3JjUHJvcGVydHk7Ci0gICAgbV9zdHlsZURlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVz
KCZzcmNQcm9wZXJ0eVJlZiwgMSk7CisgICAgY29uc3QgQ1NTUHJvcGVydHkmIHNyY1Byb3BlcnR5
UmVmID0gc3JjUHJvcGVydHk7CisgICAgbV9zdHlsZURlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9w
ZXJ0eShzcmNQcm9wZXJ0eVJlZik7CiAKICAgICBpZiAoZGVzY3JpYmVzUGFyZW50Rm9udCkgeyAg
ICAKICAgICAgICAgLy8gVHJhdmVyc2UgcGFyc2VkIENTUyB2YWx1ZXMgYW5kIGFzc29jaWF0ZSBD
U1NGb250RmFjZVNyY1ZhbHVlIGVsZW1lbnRzIHdpdGggb3Vyc2VsdmVzLgotLSAKMS43LjYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99723</attachid>
            <date>2011-07-05 10:18:40 -0700</date>
            <delta_ts>2011-07-06 07:39:08 -0700</delta_ts>
            <desc>proposed patch (style issue addressed)</desc>
            <filename>0001-CSSParser-should-use-custom-vector-like-class-for-ma.patch</filename>
            <type>text/plain</type>
            <size>48805</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSAyZTdmYmM5OTZiN2IwYTcyZTc0NmNlNmYxZGZiMDUyZDIwMDQ1MGNkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPgpEYXRl
OiBUdWUsIDUgSnVsIDIwMTEgMTc6MDU6NTEgKzAyMDAKU3ViamVjdDogW1BBVENIXSBDU1NQYXJz
ZXIgc2hvdWxkIHVzZSBjdXN0b20gdmVjdG9yLWxpa2UgY2xhc3MgZm9yIG1hbmFnaW5nCiBwcm9w
ZXJ0aWVzCgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgIHwgICAgOSArCiAuLi4vSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgODEgKysrKysrCiAuLi4vRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL1NlZ21lbnRlZFZlY3Rvci5oICAgICAgICB8ICAgIDQgKwogU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnBybyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogICAgICAgfCAgICA4ICsKIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgIHwgICAgOCAr
CiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55ICAgICAgICAgICAgICAgICAgICB8ICAg
IDggKy0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAg
IHwgICAxOCArLQogU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
LmggICAgfCAgIDExICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCAgICAgICAg
ICAgICAgICAgICB8ICAxMDcgKysrLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmggICAgICAgICAgICAgICAgICAgICB8ICAgMTAgKy0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eS5oICAgICAgICAgICAgICAgICAgIHwgICAgNCArCiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHlDb250YWluZXIuY3BwICAgICAgICB8ICAyNTYgKysrKysrKysrKysrKysrKysr
KysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oICAgICAgICAgIHwg
ICA3NCArKysrKysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwICAgICAgICAg
ICAgICAgIHwgICAgMyArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5j
cHAgICAgICAgICAgfCAgICA0ICstCiAyMCBmaWxlcyBjaGFuZ2VkLCA1MTggaW5zZXJ0aW9ucygr
KSwgOTYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oCgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNTI2Y2FmMC4uOGU1MzYyYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDctMDUgIEFuZHJhcyBCZWNzaSAgPGFiZWNz
aUB3ZWJraXQub3JnPgorCisgICAgICAgIENTU1BhcnNlciBzaG91bGQgdXNlIGN1c3RvbSAidmVj
dG9yLWxpa2UiIGNsYXNzIGZvciBtYW5hZ2luZyBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQxNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajogU2V0IHRoZSBwcml2YXRlIGF0dHJpYnV0ZSBmb3IgU2VnbWVudGVk
VmVjdG9yLmgKKwogMjAxMS0wNy0wNCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZDVmN2RhZC4uNGZhMDEyMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTM2Niw3ICszNjYsNyBAQAogCQk5NjlBMDcyMzBFRDFDRTMzMDBGMUY2
ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk2OUEwNzIxMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVy
YXRvci5oICovOyB9OwogCQk5NjlBMDcyQTBFRDFDRTY5MDBGMUY2ODEgLyogTGFiZWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzI3MEVEMUNF
NjkwMEYxRjY4MSAvKiBMYWJlbC5oICovOyB9OwogCQk5NjlBMDcyQjBFRDFDRTY5MDBGMUY2ODEg
LyogUmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTY5QTA3MjgwRUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCAqLzsgfTsKLQkJ
OTY5QTA3MkMwRUQxQ0U2OTAwRjFGNjgxIC8qIFNlZ21lbnRlZFZlY3Rvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3MjkwRUQxQ0U2OTAwRjFG
NjgxIC8qIFNlZ21lbnRlZFZlY3Rvci5oICovOyB9OworCQk5NjlBMDcyQzBFRDFDRTY5MDBGMUY2
ODEgLyogU2VnbWVudGVkVmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NjlBMDcyOTBFRDFDRTY5MDBGMUY2ODEgLyogU2VnbWVudGVkVmVjdG9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTY5
QTA3OTYwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDc5MDBFRDFEM0FFMDBGMUY2ODEgLyog
Q29kZUJsb2NrLmNwcCAqLzsgfTsKIAkJOTY5QTA3OTcwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVC
bG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5
QTA3OTEwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKCk7IH07IH07CiAJCTk2OUEwNzk4MEVEMUQzQUUwMEYxRjY4MSAvKiBFdmFsQ29k
ZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NjlBMDc5MjBFRDFEM0FFMDBGMUY2ODEgLyogRXZhbENvZGVDYWNoZS5oICovOyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCAxMDc4MzVkLi5jMTI0M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNDUzLDYgKzQ1Myw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUuY3BwCiAgICAgY3Nz
L0NTU1Byb3BlcnR5LmNwcAorICAgIGNzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAKICAgICBj
c3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAKICAgICBjc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRh
LmNwcAogICAgIGNzcy9DU1NSZWZsZWN0VmFsdWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM5NzJiMi4u
MTZmODZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDExLTA3LTA1ICBBbmRyYXMg
QmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4KKworICAgICAgICBDU1NQYXJzZXIgc2hvdWxkIHVz
ZSBjdXN0b20gInZlY3Rvci1saWtlIiBjbGFzcyBmb3IgbWFuYWdpbmcgcHJvcGVydGllcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MTcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgQ1NT
UHJvcGVydHlDb250YWluZXIgd2hpY2ggb24gcmVtb3ZhbCBtYXJrcyBlbnRyaWVzIGFzIGVtcHR5
CisgICAgICAgIGFuZCBvbmx5IHN3ZWVwcyB0aGVtIHdoZW4gdGhlIGludGVybmFsIHNlZ21lbnRl
ZCB2ZWN0b3IgZ3Jvd3MgdG9vIGJpZy4KKyAgICAgICAgQWxzbyB1c2UgYW4gaW50ZXJuYWwgSGFz
aE1hcCB0byBiZSBhYmxlIHRvIGVmZmljaWVudGx5IGZpbmQgZW50cmllcyBieSBJRAorICAgICAg
ICBhbmQgYXV0b21hdGljYWxseSBkaXNjYXJkIGR1cGxpY2F0ZSBwcm9wZXJ0aWVzLgorICAgICAg
ICBUaGlzIGlzIG5lZWRlZCB0byBiZSBhYmxlIHRvIHNpbXBsaWZ5IGFuZCBzcGVlZCB1cCBDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbiwKKyAgICAgICAgdG8gdXNlIHRoaXMgY29udGFpbmVyIGlu
c3RlYWQgb2YgbWFpbnRhaW5pbmcgaXRzIG93biBmb3JrIG9mIGluZnJhc3RydWN0dXJlCisgICAg
ICAgIGZvciBtYW5hZ2luZyBwYXJzZWQgcHJvcGVydGllcy4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvU2VnbWVudGVkVmVjdG9yLmg6IEFk
ZGVkIG1pc3NpbmcgZm9yd2FyZGluZyBoZWFkZXIuCisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6
CisgICAgICAgICogY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6
YWRkUGFyc2VkUHJvcGVydGllcyk6CisgICAgICAgICogY3NzL0NTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6Q1NTUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6fkNT
U1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OmFkZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cm9sbGJhY2tM
YXN0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNsZWFyUHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udFN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VGb250VmFyaWFudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnBhcnNlRm9udFdlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNy
ZWF0ZVN0eWxlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZvbnRG
YWNlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6c3RhcnREZWNsYXJhdGlvbnNGb3JNYXJnaW5C
b3gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjplbmREZWNsYXJhdGlvbnNGb3JNYXJn
aW5Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZVJ1bGUp
OgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6aGFzUHJvcGVydGllcyk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eTo6Q1NTUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NQ
cm9wZXJ0eUNvbnRhaW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlDb250YWluZXI6OkNTU1Byb3BlcnR5Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5Q29udGFpbmVyOjpzd2VlcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eUNvbnRhaW5lcjo6Z3Jvd0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5
Q29udGFpbmVyOjppbnRlcm5hbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5Q29udGFpbmVyOjppbnZhbGlkYXRlQnlQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW52YWxpZGF0ZUJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJvcGVydHlDb250YWluZXI6OmZpbmRQcm9wZXJ0eVdpdGhJZCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Zmlyc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHlDb250YWluZXI6Omxhc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlD
b250YWluZXI6Omxhc3RCdXRPbmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250
YWluZXI6Om9wZXJhdG9yW10pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWlu
ZXI6OmNvbnRhaW5zUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250
YWluZXI6OnJlbW92ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29u
dGFpbmVyOjpyZW1vdmVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5
Q29udGFpbmVyOjphZGRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNv
bnRhaW5lcjo6cm9sbGJhY2tMYXN0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cm9wZXJ0eUNvbnRhaW5lcjo6ZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y2xlYXJQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKiBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlDb250YWluZXI6Omhhc0ZvbnRGYWNlT25seSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cm9wZXJ0eUNvbnRhaW5lcjo6c2V0Rm9udEZhY2VPbmx5KToKKyAgICAgICAgKiBjc3MvU1ZHQ1NT
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZSk6
CisgICAgICAgICogc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGb250RmFjZUVsZW1lbnQ6OnJlYnVpbGRGb250RmFjZSk6CisKIDIwMTEtMDctMDUgIFRh
bWFzIEN6ZW5lICA8Q3plbmUuVGFtYXNAc3R1ZC51LXN6ZWdlZC5odT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy93dGYvU2VnbWVudGVkVmVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy93dGYvU2VnbWVudGVkVmVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNWFhMzlhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi9TZWdtZW50ZWRWZWN0b3IuaApAQCAtMCwwICsxLDQgQEAKKyNp
Zm5kZWYgV2ViQ29yZV9GV0RfU2VnbWVudGVkVmVjdG9yX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0Rf
U2VnbWVudGVkVmVjdG9yX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TZWdtZW50ZWRWZWN0
b3IuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMGFjNWE1YS4u
NjU5YWQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC05NzIsNiArOTcyLDgg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWVNYXBwaW5ncy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaCBcCisJU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5Q29udGFpbmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5k
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaCBcCiAJU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IDlkYTgxNTEuLjlhNmM1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ5MSw2ICs0OTEs
NyBAQAogICAgICAgICAgICAgJ2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaCcsCiAgICAgICAgICAgICAn
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eS5o
JywKKyAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCcsCiAgICAgICAgICAg
ICAnY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUmVm
bGVjdFZhbHVlLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NSZWZsZWN0aW9uRGlyZWN0aW9uLmgn
LApAQCAtMjMzMyw2ICsyMzM0LDcgQEAKICAgICAgICAgICAgICdjc3MvQ1NTUHJpbWl0aXZlVmFs
dWVDYWNoZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5o
JywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHkuY3BwJywKKyAgICAgICAgICAgICdjc3Mv
Q1NTUHJvcGVydHlDb250YWluZXIuY3BwJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlM
b25naGFuZC5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmgnLAog
ICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8K
aW5kZXggZDc4YTEzYy4uNDU1MzkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTQxMCw2ICs0MTAsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIFwKICAgICBjc3Mv
Q1NTUHJpbWl0aXZlVmFsdWVDYWNoZS5jcHAgXAogICAgIGNzcy9DU1NQcm9wZXJ0eS5jcHAgXAor
ICAgIGNzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgXAogICAgIGNzcy9DU1NQcm9wZXJ0eUxv
bmdoYW5kLmNwcCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAgXAogICAgIGNz
cy9DU1NSZWZsZWN0VmFsdWUuY3BwIFwKQEAgLTEzOTksNiArMTQwMCw3IEBAIEhFQURFUlMgKz0g
XAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIFwKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFs
dWVDYWNoZS5oIFwKICAgICBjc3MvQ1NTUHJvcGVydHkuaCBcCisgICAgY3NzL0NTU1Byb3BlcnR5
Q29udGFpbmVyLmggXAogICAgIGNzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmggXAogICAgIGNzcy9D
U1NSZWZsZWN0VmFsdWUuaCBcCiAgICAgY3NzL0NTU1J1bGUuaCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDEzYjA3NTkuLjc1NWI0ZmIgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zMjYx
OCw2ICszMjYxOCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxjc3NcQ1NTUHJvcGVydHlDb250YWluZXIuY3BwIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTUHJvcGVydHlDb250YWlu
ZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Y3NzXENTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2YmM1
YzFjLi45NDBjMGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC00MzEsNiArNDMxLDggQEAKIAkJMUFCMUFFN0EwQzA1MUZERTAw
MTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFBRTc4MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJz
b3IucG5nICovOyB9OwogCQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNv
ci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QjFBRTc5MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyAqLzsgfTsKIAkJMUFC
MzNEQTUxMjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjMzREE0MTI1NTFFMzIwMDI0NDU3
QSAvKiBJT0tpdC5mcmFtZXdvcmsgKi87IH07CisJCTFBQjQ0QTBDMTM2NzJDRkYwMDA4Nzc3RSAv
KiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUI0NEEwQjEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJvcGVydHlD
b250YWluZXIuY3BwICovOyB9OworCQkxQUI0NEEwRTEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJv
cGVydHlDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBQjQ0QTBEMTM2NzJEMjAwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQjdG
QzY4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RkM0NzBBOEI5MkVDMDBEOUQzN0Ig
LyogWFBhdGhFdmFsdWF0b3IuY3BwICovOyB9OwogCQkxQUI3RkM2OTBBOEI5MkVDMDBEOUQzN0Ig
LyogWFBhdGhFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBQjdGQzQ4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5oICov
OyB9OwogCQkxQUI3RkM2QjBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9uLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdGQzRBMEE4
QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24uY3BwICovOyB9OwpAQCAtNjg0MSw2ICs2
ODQzLDggQEAKIAkJMUFCMUFFNzgwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5w
bmc7IHBhdGggPSB6b29tSW5DdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQUIxQUU3OTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGgg
PSB6b29tT3V0Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCMzNE
QTQxMjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0g
SU9LaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQu
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxQUI0NEEwQjEzNjcy
Q0ZGMDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUHJvcGVydHlDb250YWluZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQUI0NEEwRDEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJvcGVy
dHlDb250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUHJvcGVy
dHlDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0ZDNDcwQThC
OTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBYUGF0aEV2YWx1YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBQjdGQzQ4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBhdGhFdmFsdWF0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0ZDNDkwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRo
RXZhbHVhdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWFBhdGhFdmFsdWF0b3IuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkwODYsNiArMTkwOTAsOCBAQAogCQlG
NTIzRDE4NDAyREU0MkU4MDE4NjM1Q0EgLyogY3NzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQUI0NEEwRDEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJv
cGVydHlDb250YWluZXIuaCAqLywKKwkJCQkxQUI0NEEwQjEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NT
UHJvcGVydHlDb250YWluZXIuY3BwICovLAogCQkJCTkzQ0E0QzlDMDlERjkzRkEwMERGODY3NyAv
KiBtYWtldG9rZW5pemVyICovLAogCQkJCUE4MEU2Q0RBMEExOTg5Q0EwMDdGQjhDNSAvKiBDb3Vu
dGVyLmggKi8sCiAJCQkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3RkU0IC8qIENvdW50ZXIuaWRsICov
LApAQCAtMjMwODgsNiArMjMwOTQsNyBAQAogCQkJCTA4NjM5NTE2MTNCNUZFNTcwMEJCMzQ0RCAv
KiBTVkdBbmltYXRlZFBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTQzMUEyRjlDMTNCNkYyQjAw
MDc3OTFFNCAvKiBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNUFCQjc4NzEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29s
SUNVLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUI0NEEwRTEzNjcyRDIwMDAwODc3N0UgLyogQ1NT
UHJvcGVydHlDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjU4NTUsNiArMjU4NjIsNyBA
QAogCQkJCTQzMUEzMDIxMTNCODlEQ0MwMDc3OTFFNCAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDMxQTMwODgxM0I4Rjk3ODAwNzc5MUU0
IC8qIFNWR0FuaW1hdGVkQm9vbGVhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0M0Y2RkQ5NjEz
QkNEMEIxMDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTFBQjQ0QTBDMTM2NzJDRkYwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CmluZGV4IDQ1ZjI2ODMuLmMzNGRk
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpAQCAtMzIzLDkgKzMyMyw5IEBAIHdlYmtpdF92
YWx1ZToKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFy
c2VyKTsKICAgICAgICAgaWYgKCQ0KSB7CiAgICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IHAt
PnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJv
cGVydGllcyA9IHAtPm1fbnVtUGFyc2VkUHJvcGVydGllczsKKyAgICAgICAgICAgIGludCBvbGRQ
YXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCk7CiAgICAgICAg
ICAgICBpZiAoIXAtPnBhcnNlVmFsdWUocC0+bV9pZCwgcC0+bV9pbXBvcnRhbnQpKQotICAgICAg
ICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9udW1QYXJzZWRQcm9wZXJ0
aWVzIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgcC0+cm9sbGJhY2tM
YXN0UHJvcGVydGllcyhwLT5tX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSAtIG9sZFBhcnNlZFBy
b3BlcnRpZXMpOwogICAgICAgICAgICAgZGVsZXRlIHAtPm1fdmFsdWVMaXN0OwogICAgICAgICAg
ICAgcC0+bV92YWx1ZUxpc3QgPSAwOwogICAgICAgICB9CkBAIC0xMjczLDEwICsxMjczLDEwIEBA
IGRlY2xhcmF0aW9uOgogICAgICAgICBib29sIGlzUHJvcGVydHlQYXJzZWQgPSBmYWxzZTsKICAg
ICAgICAgaWYgKCQxICYmICQ0KSB7CiAgICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IHAtPnNp
bmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVy
dGllcyA9IHAtPm1fbnVtUGFyc2VkUHJvcGVydGllczsKKyAgICAgICAgICAgIGludCBvbGRQYXJz
ZWRQcm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCk7CiAgICAgICAgICAg
ICAkJCA9IHAtPnBhcnNlVmFsdWUoJDEsICQ1KTsKICAgICAgICAgICAgIGlmICghJCQpCi0gICAg
ICAgICAgICAgICAgcC0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwLT5tX251bVBhcnNlZFByb3Bl
cnRpZXMgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBwLT5yb2xsYmFj
a0xhc3RQcm9wZXJ0aWVzKHAtPm1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpIC0gb2xkUGFyc2Vk
UHJvcGVydGllcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaXNQcm9wZXJ0
eVBhcnNlZCA9IHRydWU7CiAgICAgICAgICAgICBkZWxldGUgcC0+bV92YWx1ZUxpc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCAwMTdkYzY5Li42ZTMwZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTczLDcgKzczLDcgQEAgQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb246OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCwg
Y29uc3QgVmUKICAgICAvLyBGSVhNRTogVGhpcyBhbGxvd3MgZHVwbGljYXRlIHByb3BlcnRpZXMu
CiB9CiAKLUNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbihDU1NSdWxlKiBwYXJlbnQsIGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCAqIHByb3BlcnRp
ZXMsIGludCBudW1Qcm9wZXJ0aWVzKQorQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCwgQ1NTUHJvcGVydHlDb250YWlu
ZXImIHByb3BlcnRpZXMpCiAgICAgOiBDU1NTdHlsZURlY2xhcmF0aW9uKHBhcmVudCkKICAgICAs
IG1fbm9kZSgwKQogICAgICwgbV9zdHJpY3RQYXJzaW5nKCFwYXJlbnQgfHwgcGFyZW50LT51c2VT
dHJpY3RQYXJzaW5nKCkpCkBAIC04MSw5ICs4MSwxNCBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBjb25zdCBD
UwogICAgICwgbV9pdGVyYXRvckNvdW50KDApCiAjZW5kaWYKIHsKKyAgICB1bnNpZ25lZCBudW1Q
cm9wZXJ0aWVzID0gcHJvcGVydGllcy5jb3VudCgpOworCisgICAgaWYgKCFudW1Qcm9wZXJ0aWVz
KQorICAgICAgICByZXR1cm47CisKICAgICBtX3Byb3BlcnRpZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShudW1Qcm9wZXJ0aWVzKTsKICAgICBIYXNoTWFwPGludCwgYm9vbD4gY2FuZGlkYXRlczsK
LSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgeworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKICAgICAgICAgY29uc3Qg
Q1NTUHJvcGVydHkgKnByb3BlcnR5ID0gcHJvcGVydGllc1tpXTsKICAgICAgICAgQVNTRVJUKHBy
b3BlcnR5KTsKICAgICAgICAgYm9vbCBpbXBvcnRhbnQgPSBwcm9wZXJ0eS0+aXNJbXBvcnRhbnQo
KTsKQEAgLTYzOSwxMiArNjQ0LDE3IEBAIHZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246
OnBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9uCiAgICAgc2V0
TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCi12b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjphZGRQYXJzZWRQcm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCogcHJvcGVydGll
cywgaW50IG51bVByb3BlcnRpZXMpCit2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjph
ZGRQYXJzZWRQcm9wZXJ0aWVzKENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9wZXJ0aWVzKQogewog
ICAgIEFTU0VSVCghbV9pdGVyYXRvckNvdW50KTsKIAorICAgIHVuc2lnbmVkIG51bVByb3BlcnRp
ZXMgPSBwcm9wZXJ0aWVzLmNvdW50KCk7CisKKyAgICBpZiAoIW51bVByb3BlcnRpZXMpCisgICAg
ICAgIHJldHVybjsKKwogICAgIG1fcHJvcGVydGllcy5yZXNlcnZlQ2FwYWNpdHkobnVtUHJvcGVy
dGllcyk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkKICAgICAgICAgYWRk
UGFyc2VkUHJvcGVydHkoKnByb3BlcnRpZXNbaV0pOwogCiAgICAgLy8gRklYTUU6IFRoaXMgcHJv
YmFibHkgc2hvdWxkIGhhdmUgYSBjYWxsIHRvIHNldE5lZWRzU3R5bGVSZWNhbGMoKSBpZiBzb21l
dGhpbmcgY2hhbmdlZC4gV2UgbWF5IGFsc28gd2lzaCB0byBhZGQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggZWE4YWIzZi4uZjhlZDY0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
LmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAj
aW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgor
I2luY2x1ZGUgIkNTU1Byb3BlcnR5Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiS1VSTEhhc2guaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5o
PgpAQCAtNjcsOSArNjgsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKHBhcmVudFJ1bGUpKTsKICAgICB9Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShD
U1NSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBDU1NQcm9wZXJ0eSogY29uc3QqIHByb3BlcnRpZXMs
IGludCBudW1Qcm9wZXJ0aWVzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uPiBjcmVhdGUoQ1NTUnVsZSogcGFyZW50UnVsZSwgQ1NTUHJvcGVydHlDb250
YWluZXImIHByb3BlcnRpZXMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uKHBhcmVudFJ1bGUsIHByb3BlcnRpZXMsIG51bVByb3Bl
cnRpZXMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbihwYXJlbnRSdWxlLCBwcm9wZXJ0aWVzKSk7CiAgICAgfQogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoY29uc3QgVmVjdG9yPENT
U1Byb3BlcnR5PiYgcHJvcGVydGllcykKICAgICB7CkBAIC0xMjQsNyArMTI1LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gQmVzaWRlcyBhZGRpbmcgdGhlIHByb3BlcnRpZXMsIHRoaXMgYWxzbyByZW1v
dmVzIGFueSBleGlzdGluZyBwcm9wZXJ0aWVzIHdpdGggdGhlc2UgSURzLgogICAgIC8vIEl0IGRv
ZXMgbm8gbm90aWZpY2F0aW9uIHNpbmNlIGl0J3MgY2FsbGVkIGJ5IHRoZSBwYXJzZXIuCi0gICAg
dm9pZCBhZGRQYXJzZWRQcm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCAqLCBpbnQg
bnVtUHJvcGVydGllcyk7CisgICAgdm9pZCBhZGRQYXJzZWRQcm9wZXJ0aWVzKENTU1Byb3BlcnR5
Q29udGFpbmVyJiBwcm9wZXJ0aWVzKTsKICAgICAvLyBUaGlzIGRvZXMgbm8gY2hhbmdlIG5vdGlm
aWNhdGlvbnMgc2luY2UgaXQncyBvbmx5IGNhbGxlZCBieSBjcmVhdGVNYXJrdXAuCiAgICAgdm9p
ZCBhZGRQYXJzZWRQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0eSYpOwogIApAQCAtMTQ5LDcgKzE1
MCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24oKTsKICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRSdWxl
LCBjb25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+Jik7Ci0gICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24oQ1NTUnVsZSogcGFyZW50UnVsZSwgY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICosIGlu
dCBudW1Qcm9wZXJ0aWVzKTsKKyAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihDU1NSdWxl
KiBwYXJlbnRSdWxlLCBDU1NQcm9wZXJ0eUNvbnRhaW5lciYgcHJvcGVydGllcyk7CiAKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IG1ha2VNdXRhYmxl
KCk7CiAKQEAgLTE3MSw3ICsxNzIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxDU1NQcm9wZXJ0
eT46OmNvbnN0X2l0ZXJhdG9yIGZpbmRQcm9wZXJ0eVdpdGhJZChpbnQgcHJvcGVydHlJZCkgY29u
c3Q7CiAgICAgVmVjdG9yPENTU1Byb3BlcnR5Pjo6aXRlcmF0b3IgZmluZFByb3BlcnR5V2l0aElk
KGludCBwcm9wZXJ0eUlkKTsKIAotICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwgND4gbV9wcm9wZXJ0
aWVzOworICAgIFZlY3RvcjxDU1NQcm9wZXJ0eT4gbV9wcm9wZXJ0aWVzOwogCiAgICAgTm9kZSog
bV9ub2RlOwogICAgIGJvb2wgbV9zdHJpY3RQYXJzaW5nIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKaW5kZXggZmY0M2EyZC4uMjU3YzE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
QEAgLTE2NSwxNCArMTY1LDEwIEBAIENTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFy
c2luZykKICAgICAsIG1faWQoMCkKICAgICAsIG1fc3R5bGVTaGVldCgwKQogICAgICwgbV92YWx1
ZUxpc3QoMCkKLSAgICAsIG1fcGFyc2VkUHJvcGVydGllcyhzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0
eSoqPihmYXN0TWFsbG9jKDMyICogc2l6ZW9mKENTU1Byb3BlcnR5KikpKSkKLSAgICAsIG1fbnVt
UGFyc2VkUHJvcGVydGllcygwKQotICAgICwgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzKDMyKQogICAg
ICwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KElOVkFMSURfTlVNX1BBUlNF
RF9QUk9QRVJUSUVTKQogICAgICwgbV9pblBhcnNlU2hvcnRoYW5kKDApCiAgICAgLCBtX2N1cnJl
bnRTaG9ydGhhbmQoMCkKICAgICAsIG1faW1wbGljaXRTaG9ydGhhbmQoZmFsc2UpCi0gICAgLCBt
X2hhc0ZvbnRGYWNlT25seVZhbHVlcyhmYWxzZSkKICAgICAsIG1faGFkU3ludGFjdGljYWxseVZh
bGlkQ1NTUnVsZShmYWxzZSkKICAgICAsIG1fZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSkKICAg
ICAsIG1faW5TdHlsZVJ1bGVPckRlY2xhcmF0aW9uKGZhbHNlKQpAQCAtMTk2LDkgKzE5Miw2IEBA
IENTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZykKIAogQ1NTUGFyc2VyOjp+
Q1NTUGFyc2VyKCkKIHsKLSAgICBjbGVhclByb3BlcnRpZXMoKTsKLSAgICBmYXN0RnJlZShtX3Bh
cnNlZFByb3BlcnRpZXMpOwotCiAgICAgZGVsZXRlIG1fdmFsdWVMaXN0OwogCiAgICAgZmFzdEZy
ZWUobV9kYXRhKTsKQEAgLTQ1OSwxMSArNDUyLDExIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZh
bHVlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5
CiAgICAgbV9ydWxlID0gMDsKIAogICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAgICBpZiAobV9oYXNG
b250RmFjZU9ubHlWYWx1ZXMpCi0gICAgICAgIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwot
ICAgIGlmIChtX251bVBhcnNlZFByb3BlcnRpZXMpIHsKKyAgICBpZiAobV9wYXJzZWRQcm9wZXJ0
aWVzLmhhc0ZvbnRGYWNlT25seSgpKQorICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMuZGVsZXRl
Rm9udEZhY2VPbmx5UHJvcGVydGllcygpOworICAgIGlmIChtX3BhcnNlZFByb3BlcnRpZXMuY291
bnQoKSkgewogICAgICAgICBvayA9IHRydWU7Ci0gICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJz
ZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKTsK
KyAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0
aWVzKTsKICAgICAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgfQogCkBAIC00ODUsNyArNDc4
LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGJvb2wgc3RyaWN0KQogICAgIGlmICghcGFyc2VyLnBhcnNlQ29sb3IoZHVt
bXlTdHlsZURlY2xhcmF0aW9uLmdldCgpLCBzdHJpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXIubV9wYXJzZWRQcm9wZXJ0aWVzWzBdLT52
YWx1ZSgpOworICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHBhcnNlci5tX3BhcnNlZFByb3BlcnRpZXMu
Zmlyc3QoKS52YWx1ZSgpOwogICAgIGlmICh2YWx1ZS0+Y3NzVmFsdWVUeXBlKCkgIT0gQ1NTVmFs
dWU6OkNTU19QUklNSVRJVkVfVkFMVUUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTA2
LDcgKzQ5OSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uKiBkZWNsYXJhdGlvbiwgY29uc3QgU3RyaW5nCiAgICAgY3NzeXlwYXJzZSh0aGlz
KTsKICAgICBtX3J1bGUgPSAwOwogCi0gICAgcmV0dXJuIChtX251bVBhcnNlZFByb3BlcnRpZXMg
JiYgbV9wYXJzZWRQcm9wZXJ0aWVzWzBdLT5tX2lkID09IENTU1Byb3BlcnR5Q29sb3IpOworICAg
IHJldHVybiAobV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkgJiYgbV9wYXJzZWRQcm9wZXJ0aWVz
LmZpcnN0KCkuaWQoKSA9PSBDU1NQcm9wZXJ0eUNvbG9yKTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6
OnBhcnNlU3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIERv
Y3VtZW50KiBkb2N1bWVudCkKQEAgLTU2MCwxMSArNTUzLDEyIEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlvbiwg
Y29uc3QKICAgICBtX3J1bGUgPSAwOwogCiAgICAgYm9vbCBvayA9IGZhbHNlOwotICAgIGlmICht
X2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVz
KCk7Ci0gICAgaWYgKG1fbnVtUGFyc2VkUHJvcGVydGllcykgeworICAgIGlmIChtX3BhcnNlZFBy
b3BlcnRpZXMuaGFzRm9udEZhY2VPbmx5KCkpCisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5k
ZWxldGVGb250RmFjZU9ubHlQcm9wZXJ0aWVzKCk7CisKKyAgICBpZiAobV9wYXJzZWRQcm9wZXJ0
aWVzLmNvdW50KCkpIHsKICAgICAgICAgb2sgPSB0cnVlOwotICAgICAgICBkZWNsYXJhdGlvbi0+
YWRkUGFyc2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVy
dGllcyk7CisgICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2Vk
UHJvcGVydGllcyk7CiAgICAgICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIH0KIApAQCAtNjA4
LDMzICs2MDIsMTggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeShNZWRpYUxpc3Qq
IHF1ZXJpZXMsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogCiB2b2lkIENTU1BhcnNlcjo6YWRkUHJv
cGVydHkoaW50IHByb3BJZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0
YW50KQogewotICAgIE93blB0cjxDU1NQcm9wZXJ0eT4gcHJvcChhZG9wdFB0cihuZXcgQ1NTUHJv
cGVydHkocHJvcElkLCB2YWx1ZSwgaW1wb3J0YW50LCBtX2N1cnJlbnRTaG9ydGhhbmQsIG1faW1w
bGljaXRTaG9ydGhhbmQpKSk7Ci0gICAgaWYgKG1fbnVtUGFyc2VkUHJvcGVydGllcyA+PSBtX21h
eFBhcnNlZFByb3BlcnRpZXMpIHsKLSAgICAgICAgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzICs9IDMy
OwotICAgICAgICBpZiAobV9tYXhQYXJzZWRQcm9wZXJ0aWVzID4gVUlOVF9NQVggLyBzaXplb2Yo
Q1NTUHJvcGVydHkqKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9wYXJzZWRQcm9w
ZXJ0aWVzID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHkqKj4oZmFzdFJlYWxsb2MobV9wYXJzZWRQ
cm9wZXJ0aWVzLAotICAgICAgICAgICAgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzICogc2l6ZW9mKENT
U1Byb3BlcnR5KikpKTsKLSAgICB9Ci0gICAgbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2Vk
UHJvcGVydGllcysrXSA9IHByb3AubGVha1B0cigpOworICAgIG1fcGFyc2VkUHJvcGVydGllcy5h
ZGRQcm9wZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRhbnQsIG1fY3VycmVudFNob3J0aGFuZCwg
bV9pbXBsaWNpdFNob3J0aGFuZCk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpyb2xsYmFja0xhc3RQ
cm9wZXJ0aWVzKGludCBudW0pCiB7Ci0gICAgQVNTRVJUKG51bSA+PSAwKTsKLSAgICBBU1NFUlQo
bV9udW1QYXJzZWRQcm9wZXJ0aWVzID49IHN0YXRpY19jYXN0PHVuc2lnbmVkPihudW0pKTsKLQot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtOyArK2kpCi0gICAgICAgIGRlbGV0ZSBtX3BhcnNl
ZFByb3BlcnRpZXNbLS1tX251bVBhcnNlZFByb3BlcnRpZXNdOworICAgIG1fcGFyc2VkUHJvcGVy
dGllcy5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKG51bSk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpj
bGVhclByb3BlcnRpZXMoKQogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBh
cnNlZFByb3BlcnRpZXM7IGkrKykKLSAgICAgICAgZGVsZXRlIG1fcGFyc2VkUHJvcGVydGllc1tp
XTsKLSAgICBtX251bVBhcnNlZFByb3BlcnRpZXMgPSAwOworICAgIG1fcGFyc2VkUHJvcGVydGll
cy5jbGVhclByb3BlcnRpZXMoKTsKICAgICBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJn
aW5Cb3ggPSBJTlZBTElEX05VTV9QQVJTRURfUFJPUEVSVElFUzsKLSAgICBtX2hhc0ZvbnRGYWNl
T25seVZhbHVlcyA9IGZhbHNlOwogfQogICAgIAogdm9pZCBDU1NQYXJzZXI6OnNldFN0eWxlU2hl
ZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCkKQEAgLTk0NCw3ICs5MjMsNyBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAg
U2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsKICAgICAgICAgaWYgKG51bSAhPSAx
IHx8ICFwYXJzZVZhbHVlKENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBpbXBvcnRhbnQpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFBy
b3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gMV0tPnZhbHVlKCk7CisgICAgICAgIENT
U1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIHZhbHVlLCBpbXBvcnRhbnQpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xMDQxLDcgKzEwMjAsNyBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAg
ICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZyk7
CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSogdmFs
dWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTFdLT52YWx1ZSgp
OworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3Qo
KS52YWx1ZSgpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1sxXSwgdmFsdWUs
IGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTY5
Niw3ICsxNjc1LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9v
bCBpbXBvcnRhbnQpCiAgICAgICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlKTsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1
ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251
bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFs
dWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQ
cm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yNDYzLDcgKzI0NDIsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgIGJvb2wg
aW1wb3J0YW50KQogICAgICAgICBjYXNlIDE6IHsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1
ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251
bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFs
dWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBJbXBs
aWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBsaWNpdCk7CiAgICAgICAg
ICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAg
ICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMl0sIHZhbHVlLCBpbXBvcnRhbnQpOwpAQCAt
MjQ3MywxNyArMjQ1MiwxNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKGludCBwcm9w
SWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBjYXNl
IDI6IHsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRh
bnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJz
ZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKKyAgICAgICAg
ICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0QnV0T25lKCkudmFs
dWUoKTsKICAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9w
ZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMl0sIHZh
bHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNb
bV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAgICAgdmFsdWUgPSBt
X3BhcnNlZFByb3BlcnRpZXMubGFzdEJ1dE9uZSgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQ
cm9wZXJ0eShwcm9wZXJ0aWVzWzNdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgMzogewogICAgICAgICAgICAgaWYgKCFwYXJz
ZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGll
c1sxXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzJdLCBpbXBvcnRhbnQp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2
YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZhbHVl
KCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFz
dEJ1dE9uZSgpLnZhbHVlKCk7CiAgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2Nv
cGUodGhpcywgUHJvcGVydHlJbXBsaWNpdCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9w
ZXJ0aWVzWzNdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzg0
Nyw3ICszODI2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFN0eWxlKGJvb2wgaW1wb3J0
YW50KQogICAgIH0KIAogICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLT5sZW5ndGgoKSkgewotICAg
ICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IHRydWU7CisgICAgICAgIG1fcGFyc2VkUHJv
cGVydGllcy5zZXRGb250RmFjZU9ubHkoKTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlGb250U3R5bGUsIHZhbHVlcy5yZWxlYXNlKCksIGltcG9ydGFudCk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTM4OTQsNyArMzg3Myw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZUZvbnRWYXJpYW50KGJvb2wgaW1wb3J0YW50KQogICAgIH0KIAogICAgIGlmICh2YWx1ZXMgJiYg
dmFsdWVzLT5sZW5ndGgoKSkgewotICAgICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IHRy
dWU7CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5zZXRGb250RmFjZU9ubHkoKTsKICAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFudCwgdmFsdWVzLnJlbGVhc2UoKSwg
aW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzk0Nyw3ICszOTI2
LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFdlaWdodChib29sIGltcG9ydGFudCkKICAg
ICB9CiAKICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy0+bGVuZ3RoKCkpIHsKLSAgICAgICAgbV9o
YXNGb250RmFjZU9ubHlWYWx1ZXMgPSB0cnVlOworICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMu
c2V0Rm9udEZhY2VPbmx5KCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdl
aWdodCwgdmFsdWVzLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQpAQCAtNjQxMSw5ICs2MzkwLDkgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVT
dHlsZVJ1bGUoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3IKICAg
ICAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9
IGZhbHNlOwogICAgICAgICBSZWZQdHI8Q1NTU3R5bGVSdWxlPiBydWxlID0gQ1NTU3R5bGVSdWxl
OjpjcmVhdGUobV9zdHlsZVNoZWV0LCBtX2xhc3RTZWxlY3RvckxpbmVOdW1iZXIpOwogICAgICAg
ICBydWxlLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpzZWxlY3RvcnMpOwotICAgICAgICBpZiAobV9o
YXNGb250RmFjZU9ubHlWYWx1ZXMpCi0gICAgICAgICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1
ZXMoKTsKLSAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2Vk
UHJvcGVydGllcykpOworICAgICAgICBpZiAobV9wYXJzZWRQcm9wZXJ0aWVzLmhhc0ZvbnRGYWNl
T25seSgpKQorICAgICAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmRlbGV0ZUZvbnRGYWNlT25s
eVByb3BlcnRpZXMoKTsKKyAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMpKTsK
ICAgICAgICAgcmVzdWx0ID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9wYXJzZWRTdHlsZU9iamVj
dHMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICAgICAgaWYgKG1fcnVsZVJhbmdlTWFwKSB7
CkBAIC02NDM1LDcgKzY0MTQsOCBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVs
ZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcgogQ1NTUnVsZSog
Q1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUoKQogewogICAgIG1fYWxsb3dJbXBvcnRSdWxl
cyA9IG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxzZTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzOyArK2kpIHsKKworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKTsgKytpKSB7CiAg
ICAgICAgIENTU1Byb3BlcnR5KiBwcm9wZXJ0eSA9IG1fcGFyc2VkUHJvcGVydGllc1tpXTsKICAg
ICAgICAgaW50IGlkID0gcHJvcGVydHktPmlkKCk7CiAgICAgICAgIGlmICgoaWQgPT0gQ1NTUHJv
cGVydHlGb250V2VpZ2h0IHx8IGlkID09IENTU1Byb3BlcnR5Rm9udFN0eWxlIHx8IGlkID09IENT
U1Byb3BlcnR5Rm9udFZhcmlhbnQpICYmIHByb3BlcnR5LT52YWx1ZSgpLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpIHsKQEAgLTY0NTEsOCArNjQzMSw5IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRl
Rm9udEZhY2VSdWxlKCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQor
CiAgICAgUmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4gcnVsZSA9IENTU0ZvbnRGYWNlUnVsZTo6Y3Jl
YXRlKG1fc3R5bGVTaGVldCk7Ci0gICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMsIG1f
bnVtUGFyc2VkUHJvcGVydGllcykpOworICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVz
KSk7CiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgQ1NTRm9udEZhY2VSdWxlKiByZXN1bHQg
PSBydWxlLmdldCgpOwogICAgIG1fcGFyc2VkU3R5bGVPYmplY3RzLmFwcGVuZChydWxlLnJlbGVh
c2UoKSk7CkBAIC02NTI2LDcgKzY1MDcsNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVBh
Z2VSdWxlKFBhc3NPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHBhZ2VTZWxlY3RvcikKICAgICAg
ICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBzZWxlY3RvclZlY3RvcjsKICAg
ICAgICAgc2VsZWN0b3JWZWN0b3IuYXBwZW5kKHBhZ2VTZWxlY3Rvcik7CiAgICAgICAgIHJ1bGUt
PmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOwotICAgICAgICBydWxlLT5zZXRE
ZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCks
IG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIHJ1
bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVs
ZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzKSk7CiAgICAgICAgIHBhZ2VSdWxlID0gcnVsZS5n
ZXQoKTsKICAgICAgICAgbV9wYXJzZWRTdHlsZU9iamVjdHMuYXBwZW5kKHJ1bGUucmVsZWFzZSgp
KTsKICAgICB9CkBAIC02NTQ3LDM0ICs2NTI4LDE2IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3Jl
YXRlTWFyZ2luQXRSdWxlKENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIC8qIG1hcmdpbkJveCAq
CiAKIHZvaWQgQ1NTUGFyc2VyOjpzdGFydERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpCiB7Ci0g
ICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzOworICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCA9IG1fcGFy
c2VkUHJvcGVydGllcy5jb3VudCgpOwogfQogCiB2b2lkIENTU1BhcnNlcjo6ZW5kRGVjbGFyYXRp
b25zRm9yTWFyZ2luQm94KCkKIHsKICAgICBBU1NFUlQobV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVm
b3JlTWFyZ2luQm94ICE9IElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTKTsKLSAgICByb2xs
YmFja0xhc3RQcm9wZXJ0aWVzKG1fbnVtUGFyc2VkUHJvcGVydGllcyAtIG1fbnVtUGFyc2VkUHJv
cGVydGllc0JlZm9yZU1hcmdpbkJveCk7CisgICAgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhtX3Bh
cnNlZFByb3BlcnRpZXMuY291bnQoKSAtIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdp
bkJveCk7CiAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gSU5WQUxJ
RF9OVU1fUEFSU0VEX1BST1BFUlRJRVM7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjpkZWxldGVGb250
RmFjZU9ubHlWYWx1ZXMoKQotewotICAgIEFTU0VSVChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyk7
Ci0gICAgaW50IGRlbGV0ZWRQcm9wZXJ0aWVzID0gMDsKLQotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX251bVBhcnNlZFByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBDU1NQcm9wZXJ0
eSogcHJvcGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07Ci0gICAgICAgIGludCBpZCA9IHBy
b3BlcnR5LT5pZCgpOwotICAgICAgICBpZiAoKGlkID09IENTU1Byb3BlcnR5Rm9udFdlaWdodCB8
fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRTdHlsZSB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRWYXJp
YW50KSAmJiBwcm9wZXJ0eS0+dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAgICAg
ZGVsZXRlIHByb3BlcnR5OwotICAgICAgICAgICAgZGVsZXRlZFByb3BlcnRpZXMrKzsKLSAgICAg
ICAgfSBlbHNlIGlmIChkZWxldGVkUHJvcGVydGllcykKLSAgICAgICAgICAgIG1fcGFyc2VkUHJv
cGVydGllc1tpIC0gZGVsZXRlZFByb3BlcnRpZXNdID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwot
ICAgIH0KLQotICAgIG1fbnVtUGFyc2VkUHJvcGVydGllcyAtPSBkZWxldGVkUHJvcGVydGllczsK
LX0KLQogV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVs
ZShDU1NQYXJzZXJWYWx1ZUxpc3QqIGtleXMpCiB7CiAgICAgLy8gQ3JlYXRlIGEga2V5IHN0cmlu
ZyBmcm9tIHRoZSBwYXNzZWQga2V5cwpAQCAtNjU4OSw3ICs2NTUyLDcgQEAgV2ViS2l0Q1NTS2V5
ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJWYWx1ZUxp
c3QqIGtleXMpCiAKICAgICBSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBrZXlmcmFtZSA9
IFdlYktpdENTU0tleWZyYW1lUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7CiAgICAga2V5ZnJh
bWUtPnNldEtleVRleHQoa2V5U3RyaW5nKTsKLSAgICBrZXlmcmFtZS0+c2V0RGVjbGFyYXRpb24o
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgwLCBtX3BhcnNlZFByb3BlcnRpZXMs
IG1fbnVtUGFyc2VkUHJvcGVydGllcykpOworICAgIGtleWZyYW1lLT5zZXREZWNsYXJhdGlvbihD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKDAsIG1fcGFyc2VkUHJvcGVydGllcykp
OwogCiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBj
NmYwNzhhLi5jODlhYzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyVmFs
dWVzLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJDU1NQ
cm9wZXJ0eVNvdXJjZURhdGEuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUg
IkNvbG9yLmgiCkBAIC03NSw3ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICB2b2lkIGFkZFByb3BlcnR5KGludCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29s
IGltcG9ydGFudCk7CiAgICAgICAgIHZvaWQgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhpbnQgbnVt
KTsKLSAgICAgICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1QYXJz
ZWRQcm9wZXJ0aWVzID4gMDsgfQorICAgICAgICBib29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7
IHJldHVybiBtX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSA+IDA7IH0KIAogICAgICAgICBib29s
IHBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgICAgICBib29sIHBh
cnNlU2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVBy
b3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKQEAgLTIzOSwxOCArMjQwLDE1IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPENTU1J1bGU+IG1fa2V5ZnJhbWU7CiAgICAgICAg
IE93blB0cjxNZWRpYVF1ZXJ5PiBtX21lZGlhUXVlcnk7CiAgICAgICAgIENTU1BhcnNlclZhbHVl
TGlzdCogbV92YWx1ZUxpc3Q7Ci0gICAgICAgIENTU1Byb3BlcnR5KiogbV9wYXJzZWRQcm9wZXJ0
aWVzOworICAgICAgICBDU1NQcm9wZXJ0eUNvbnRhaW5lciBtX3BhcnNlZFByb3BlcnRpZXM7CiAg
ICAgICAgIENTU1NlbGVjdG9yTGlzdCogbV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yOwog
ICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWVDYWNoZT4gbV9wcmltaXRpdmVWYWx1ZUNh
Y2hlOwotICAgICAgICB1bnNpZ25lZCBtX251bVBhcnNlZFByb3BlcnRpZXM7Ci0gICAgICAgIHVu
c2lnbmVkIG1fbWF4UGFyc2VkUHJvcGVydGllczsKICAgICAgICAgdW5zaWduZWQgbV9udW1QYXJz
ZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94OwogCiAgICAgICAgIGludCBtX2luUGFyc2VTaG9y
dGhhbmQ7CiAgICAgICAgIGludCBtX2N1cnJlbnRTaG9ydGhhbmQ7CiAgICAgICAgIGJvb2wgbV9p
bXBsaWNpdFNob3J0aGFuZDsKIAotICAgICAgICBib29sIG1faGFzRm9udEZhY2VPbmx5VmFsdWVz
OwogICAgICAgICBib29sIG1faGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZTsKIAogICAgICAg
ICBBdG9taWNTdHJpbmcgbV9kZWZhdWx0TmFtZXNwYWNlOwpAQCAtMjg4LDggKzI4Niw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGNoZWNrRm9yT3JwaGFuZWRVbml0cygp
OwogCi0gICAgICAgIHZvaWQgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0KICAgICAgICAg
Ym9vbCBpc0dlbmVyYXRlZEltYWdlVmFsdWUoQ1NTUGFyc2VyVmFsdWUqKSBjb25zdDsKICAgICAg
ICAgYm9vbCBwYXJzZUdlbmVyYXRlZEltYWdlKFJlZlB0cjxDU1NWYWx1ZT4mKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHkuaAppbmRleCA0YTQ2ZmMyLi42ZDBmNTBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydHkuaApAQCAtMzIsNiArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
Q1NTUHJvcGVydHkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAg
IENTU1Byb3BlcnR5KCkKKyAgICB7CisgICAgfQorCiAgICAgQ1NTUHJvcGVydHkoaW50IHByb3BJ
RCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UsIGlu
dCBzaG9ydGhhbmRJRCA9IDAsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSkKICAgICAgICAgOiBtX2lk
KHByb3BJRCkKICAgICAgICAgLCBtX3Nob3J0aGFuZElEKHNob3J0aGFuZElEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYTJlMTMyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAKQEAgLTAsMCArMSwyNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFuZHJhcyBCZWNz
aSA8YWJlY3NpQHdlYmtpdC5vcmc+LCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKKworI2luY2x1ZGUgIkNT
U1Byb3BlcnR5TmFtZXMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Q1NTUHJvcGVydHlDb250YWluZXIoKQor
ICAgIDogbV9udW1WYWxpZFByb3BlcnRpZXMoMCkKKyAgICAsIG1fdXNlZFNpemUoMCkKKyAgICAs
IG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyhmYWxzZSkKK3sKK30KKwordm9pZCBDU1NQcm9w
ZXJ0eUNvbnRhaW5lcjo6c3dlZXAoKQoreworICAgIGlmIChtX251bVZhbGlkUHJvcGVydGllcyA9
PSBtX3VzZWRTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBkZWxldGVkUHJv
cGVydGllcyA9IDA7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV91c2VkU2l6ZTsg
KytpKSB7CisgICAgICAgIGlmICghbV9wcm9wZXJ0aWVzW2ldLmlkKCkpCisgICAgICAgICAgICAr
K2RlbGV0ZWRQcm9wZXJ0aWVzOworICAgICAgICBlbHNlIGlmIChkZWxldGVkUHJvcGVydGllcykg
eworICAgICAgICAgICAgbV9pZFRvUG9zaXRpb25NYXAuc2V0KG1fcHJvcGVydGllc1tpXS5pZCgp
LCBpIC0gZGVsZXRlZFByb3BlcnRpZXMpOworICAgICAgICAgICAgbV9wcm9wZXJ0aWVzW2kgLSBk
ZWxldGVkUHJvcGVydGllc10gPSBtX3Byb3BlcnRpZXNbaV07CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBtX3VzZWRTaXplIC09IGRlbGV0ZWRQcm9wZXJ0aWVzOworCisgICAgaWYgKG1faWRUb1Bv
c2l0aW9uTWFwLnNpemUoKSA+IHN0YXRpY19jYXN0PGludD4obV9wcm9wZXJ0aWVzLnNpemUoKSAr
IGtHcm93RmFjdG9yKSkgeworICAgICAgICBtX2lkVG9Qb3NpdGlvbk1hcC5jbGVhcigpOworCisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3VzZWRTaXplOyArK2kpCisgICAgICAg
ICAgICBtX2lkVG9Qb3NpdGlvbk1hcC5hZGQobV9wcm9wZXJ0aWVzW2ldLmlkKCksIGkpOworICAg
IH0KKworICAgIEFTU0VSVChtX251bVZhbGlkUHJvcGVydGllcyA9PSBtX3VzZWRTaXplKTsKK30K
KworaW5saW5lIHZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6Omdyb3dJZk5lZWRlZCgpCit7Cisg
ICAgaWYgKG1fdXNlZFNpemUgKyAxID49IG1fcHJvcGVydGllcy5zaXplKCkpCisgICAgICAgIHN3
ZWVwKCk7CisKKyAgICBpZiAobV91c2VkU2l6ZSA9PSBtX3Byb3BlcnRpZXMuc2l6ZSgpKQorICAg
ICAgICBtX3Byb3BlcnRpZXMuYWxsb2MoKTsKK30KKworaW5saW5lIHVuc2lnbmVkIENTU1Byb3Bl
cnR5Q29udGFpbmVyOjppbnRlcm5hbFBvc2l0aW9uKGludCBwcm9wZXJ0eUlEKQoreworICAgIGlm
ICghcHJvcGVydHlJRCB8fCAhbV9pZFRvUG9zaXRpb25NYXAuY29udGFpbnMocHJvcGVydHlJRCkp
CisgICAgICAgIHJldHVybiBrSW52YWxpZFBvc2l0aW9uOworCisgICAgdW5zaWduZWQgcG9zaXRp
b24gPSBtX2lkVG9Qb3NpdGlvbk1hcC5nZXQocHJvcGVydHlJRCk7CisKKyAgICBpZiAocG9zaXRp
b24gPT0ga0ludmFsaWRQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIGtJbnZhbGlkUG9zaXRpb247
CisKKyAgICBBU1NFUlQocG9zaXRpb24gPCBtX3VzZWRTaXplKTsKKworICAgIGlmICghbV9wcm9w
ZXJ0aWVzW3Bvc2l0aW9uXS5pZCgpKQorICAgICAgICByZXR1cm4ga0ludmFsaWRQb3NpdGlvbjsK
KworICAgIHJldHVybiBwb3NpdGlvbjsKK30KKworaW5saW5lIHZvaWQgQ1NTUHJvcGVydHlDb250
YWluZXI6OmludmFsaWRhdGVCeVBvc2l0aW9uKHVuc2lnbmVkIHBvc2l0aW9uKQoreworICAgIGlm
IChwb3NpdGlvbiA+PSBtX3VzZWRTaXplIHx8ICFtX3Byb3BlcnRpZXNbcG9zaXRpb25dLmlkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIC0tbV9udW1WYWxpZFByb3BlcnRpZXM7CisKKyAgICBt
X2lkVG9Qb3NpdGlvbk1hcC5zZXQobV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS5pZCgpLCBrSW52YWxp
ZFBvc2l0aW9uKTsKKyAgICBtX3Byb3BlcnRpZXNbcG9zaXRpb25dLm1faWQgPSAwOworfQorCitp
bmxpbmUgdm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW52YWxpZGF0ZUJ5SWQoaW50IHByb3Bl
cnR5SUQpCit7CisgICAgaWYgKCFwcm9wZXJ0eUlEKQorICAgICAgICByZXR1cm47CisKKyAgICB1
bnNpZ25lZCBwb3NpdGlvbiA9IGludGVybmFsUG9zaXRpb24ocHJvcGVydHlJRCk7CisKKyAgICBp
ZiAocG9zaXRpb24gPT0ga0ludmFsaWRQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
aW52YWxpZGF0ZUJ5UG9zaXRpb24ocG9zaXRpb24pOworfQorCitDU1NQcm9wZXJ0eSogQ1NTUHJv
cGVydHlDb250YWluZXI6OmZpbmRQcm9wZXJ0eVdpdGhJZChpbnQgcHJvcGVydHlJRCkKK3sKKyAg
ICBpZiAoIXByb3BlcnR5SUQgfHwgIW1fdXNlZFNpemUpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgdW5zaWduZWQgcG9zaXRpb24gPSBpbnRlcm5hbFBvc2l0aW9uKHByb3BlcnR5SUQpOworCisg
ICAgaWYgKHBvc2l0aW9uID09IGtJbnZhbGlkUG9zaXRpb24pCisgICAgICAgIHJldHVybiAwOwor
CisgICAgcmV0dXJuICZtX3Byb3BlcnRpZXNbcG9zaXRpb25dOworfQorCitjb25zdCBDU1NQcm9w
ZXJ0eSYgQ1NTUHJvcGVydHlDb250YWluZXI6OmZpcnN0KCkKK3sKKyAgICBBU1NFUlQoIW1fcHJv
cGVydGllcy5pc0VtcHR5KCkgJiYgbV9udW1WYWxpZFByb3BlcnRpZXMpOworCisgICAgaWYgKCFt
X3Byb3BlcnRpZXNbMF0uaWQoKSkKKyAgICAgICAgc3dlZXAoKTsKKworICAgIEFTU0VSVChtX3By
b3BlcnRpZXNbMF0uaWQoKSk7CisKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzWzBdOworfQorCitj
b25zdCBDU1NQcm9wZXJ0eSYgQ1NTUHJvcGVydHlDb250YWluZXI6Omxhc3QoKQoreworICAgIEFT
U0VSVCghbV9wcm9wZXJ0aWVzLmlzRW1wdHkoKSAmJiBtX251bVZhbGlkUHJvcGVydGllcyk7CisK
KyAgICBpZiAoIW1fcHJvcGVydGllc1ttX3VzZWRTaXplIC0gMV0uaWQoKSkKKyAgICAgICAgc3dl
ZXAoKTsKKworICAgIEFTU0VSVChtX3VzZWRTaXplICYmIG1fcHJvcGVydGllc1ttX3VzZWRTaXpl
IC0gMV0uaWQoKSk7CisKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzW21fdXNlZFNpemUgLSAxXTsK
K30KKworY29uc3QgQ1NTUHJvcGVydHkmIENTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0QnV0T25l
KCkKK3sKKyAgICBBU1NFUlQoIW1fcHJvcGVydGllcy5pc0VtcHR5KCkgJiYgbV9udW1WYWxpZFBy
b3BlcnRpZXMgPj0gMik7CisKKyAgICBpZiAoIW1fcHJvcGVydGllc1ttX3VzZWRTaXplIC0gMV0u
aWQoKSB8fCAhbV9wcm9wZXJ0aWVzW21fdXNlZFNpemUgLSAyXS5pZCgpKQorICAgICAgICBzd2Vl
cCgpOworCisgICAgQVNTRVJUKG1fdXNlZFNpemUgPj0gMiAmJiBtX3Byb3BlcnRpZXNbbV91c2Vk
U2l6ZSAtIDJdLmlkKCkpOworCisgICAgcmV0dXJuIG1fcHJvcGVydGllc1ttX3VzZWRTaXplIC0g
Ml07Cit9CisKK0NTU1Byb3BlcnR5KiBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6b3BlcmF0b3JbXShz
aXplX3QgaW5kZXgpCit7CisgICAgc3dlZXAoKTsKKyAgICBBU1NFUlQoaW5kZXggPCBtX3VzZWRT
aXplKTsKKyAgICByZXR1cm4gJm1fcHJvcGVydGllcy5hdChpbmRleCk7Cit9CisKK2Jvb2wgQ1NT
UHJvcGVydHlDb250YWluZXI6OmNvbnRhaW5zUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCit7Cisg
ICAgdW5zaWduZWQgcG9zaXRpb24gPSBpbnRlcm5hbFBvc2l0aW9uKHByb3BlcnR5SUQpOworCisg
ICAgaWYgKHBvc2l0aW9uID09IGtJbnZhbGlkUG9zaXRpb24pCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpy
ZW1vdmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKK3sKKyAgICBpbnZhbGlkYXRlQnlJZChwcm9w
ZXJ0eUlEKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3ZlUHJvcGVydGll
cyhjb25zdCBpbnQqIGlkTGlzdCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgaW52YWxpZGF0ZUJ5SWQoaWRMaXN0
W2ldKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6YWRkUHJvcGVydHkoaW50IHBy
b3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCwgaW50
IHNob3J0aGFuZElELCBib29sIGltcGxpY2l0KQoreworICAgIGdyb3dJZk5lZWRlZCgpOworCisg
ICAgdW5zaWduZWQgb2xkUG9zaXRpb24gPSBpbnRlcm5hbFBvc2l0aW9uKHByb3BlcnR5SUQpOwor
CisgICAgaWYgKG9sZFBvc2l0aW9uICE9IGtJbnZhbGlkUG9zaXRpb24pIHsKKyAgICAgICAgaWYg
KG1fcHJvcGVydGllc1tvbGRQb3NpdGlvbl0uaWQoKSAmJiBtX3Byb3BlcnRpZXNbb2xkUG9zaXRp
b25dLmlzSW1wb3J0YW50KCkgJiYgIWltcG9ydGFudCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpbnZhbGlkYXRlQnlQb3NpdGlvbihvbGRQb3NpdGlvbik7CisgICAgfQorCisgICAg
bV9wcm9wZXJ0aWVzW21fdXNlZFNpemVdID0gQ1NTUHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUs
IGltcG9ydGFudCwgc2hvcnRoYW5kSUQsIGltcGxpY2l0KTsKKyAgICBtX2lkVG9Qb3NpdGlvbk1h
cC5zZXQocHJvcGVydHlJRCwgbV91c2VkU2l6ZSk7CisgICAgKyttX251bVZhbGlkUHJvcGVydGll
czsKKyAgICArK21fdXNlZFNpemU7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OnJv
bGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSkKK3sKKyAgICBpZiAoIW51bSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgQVNTRVJUKG51bSA+IDApOworICAgIEFTU0VSVChtX251bVZhbGlkUHJv
cGVydGllcyA+PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtKSk7CisKKyAgICBpbnQgZGVsZXRl
ZFByb3BlcnRpZXMgPSAwOworICAgIGludCBwb3NpdGlvbiA9IG1fdXNlZFNpemU7CisgICAgd2hp
bGUgKGRlbGV0ZWRQcm9wZXJ0aWVzICE9IG51bSAmJiAtLXBvc2l0aW9uID49IDApIHsKKyAgICAg
ICAgaWYgKG1fcHJvcGVydGllc1twb3NpdGlvbl0uaWQoKSkgeworICAgICAgICAgICAgaW52YWxp
ZGF0ZUJ5UG9zaXRpb24ocG9zaXRpb24pOworICAgICAgICAgICAgKytkZWxldGVkUHJvcGVydGll
czsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6ZGVs
ZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygpCit7CisgICAgQVNTRVJUKG1faGFzRm9udEZhY2VP
bmx5UHJvcGVydGllcyk7CisKKyAgICBpbnQgaWRzWzNdID0ge0NTU1Byb3BlcnR5Rm9udFdlaWdo
dCwgQ1NTUHJvcGVydHlGb250U3R5bGUsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnR9OworCisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpIHsKKyAgICAgICAgdW5zaWduZWQgcG9zaXRpb24g
PSBpbnRlcm5hbFBvc2l0aW9uKGlkc1tpXSk7CisKKyAgICAgICAgaWYgKHBvc2l0aW9uID09IGtJ
bnZhbGlkUG9zaXRpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAobV9w
cm9wZXJ0aWVzW3Bvc2l0aW9uXS52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpKQorICAgICAgICAgICAg
aW52YWxpZGF0ZUJ5UG9zaXRpb24ocG9zaXRpb24pOworICAgIH0KKyAgICBtX2hhc0ZvbnRGYWNl
T25seVByb3BlcnRpZXMgPSBmYWxzZTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6
Y2xlYXJQcm9wZXJ0aWVzKCkKK3sKKyAgICBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXMgPSBm
YWxzZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3VzZWRTaXplOyArK2kpCisg
ICAgICAgIGludmFsaWRhdGVCeVBvc2l0aW9uKGkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZmI1NTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaApAQCAtMCwwICsxLDc0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBbmRy
YXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPiwgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRl
ZiBDU1NQcm9wZXJ0eUNvbnRhaW5lcl9oCisjZGVmaW5lIENTU1Byb3BlcnR5Q29udGFpbmVyX2gK
KworI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCisjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCB1bnNpZ25lZCBrR3Jvd0ZhY3RvciA9IDMyOwor
Y29uc3QgdW5zaWduZWQga0ludmFsaWRQb3NpdGlvbiA9IFVJTlRfTUFYOworCitjbGFzcyBDU1NQ
cm9wZXJ0eUNvbnRhaW5lciB7CitwdWJsaWM6CisgICAgQ1NTUHJvcGVydHlDb250YWluZXIoKTsK
KyAgICBjb25zdCBDU1NQcm9wZXJ0eSYgZmlyc3QoKTsKKyAgICBjb25zdCBDU1NQcm9wZXJ0eSYg
bGFzdCgpOworICAgIGNvbnN0IENTU1Byb3BlcnR5JiBsYXN0QnV0T25lKCk7CisgICAgQ1NTUHJv
cGVydHkqIGZpbmRQcm9wZXJ0eVdpdGhJZChpbnQgcHJvcGVydHlJRCk7CisKKyAgICBpbmxpbmUg
dW5zaWduZWQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX251bVZhbGlkUHJvcGVydGllczsgfQor
ICAgIGlubGluZSBib29sIGhhc0ZvbnRGYWNlT25seSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRm9u
dEZhY2VPbmx5UHJvcGVydGllczsgfQorICAgIGlubGluZSB2b2lkIHNldEZvbnRGYWNlT25seSgp
IHsgbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzID0gdHJ1ZTsgfQorCisgICAgQ1NTUHJvcGVy
dHkqIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KTsKKworICAgIGJvb2wgY29udGFpbnNQcm9wZXJ0
eShpbnQgcHJvcGVydHlJRCk7CisgICAgdm9pZCByZW1vdmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJ
RCk7CisgICAgdm9pZCByZW1vdmVQcm9wZXJ0aWVzKGNvbnN0IGludCogaWRMaXN0LCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIHZvaWQgYWRkUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCwgaW50IHNob3J0aGFuZElEID0gMCwgYm9vbCBp
bXBsaWNpdCA9IGZhbHNlKTsKKyAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51
bSk7CisgICAgdm9pZCBkZWxldGVGb250RmFjZU9ubHlQcm9wZXJ0aWVzKCk7CisgICAgdm9pZCBj
bGVhclByb3BlcnRpZXMoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHN3ZWVwKCk7CisgICAgaW5s
aW5lIHZvaWQgZ3Jvd0lmTmVlZGVkKCk7CisgICAgaW5saW5lIHVuc2lnbmVkIGludGVybmFsUG9z
aXRpb24oaW50IHByb3BlcnR5SUQpOworICAgIGlubGluZSB2b2lkIGludmFsaWRhdGVCeVBvc2l0
aW9uKHVuc2lnbmVkIHBvc2l0aW9uKTsKKyAgICBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlQnlJZChp
bnQgcHJvcGVydHlJRCk7CisKKyAgICB1bnNpZ25lZCBtX251bVZhbGlkUHJvcGVydGllczsKKyAg
ICB1bnNpZ25lZCBtX3VzZWRTaXplOworCisgICAgYm9vbCBtX2hhc0ZvbnRGYWNlT25seVByb3Bl
cnRpZXM7CisKKyAgICBTZWdtZW50ZWRWZWN0b3I8Q1NTUHJvcGVydHksIGtHcm93RmFjdG9yPiBt
X3Byb3BlcnRpZXM7CisgICAgSGFzaE1hcDxpbnQsIHVuc2lnbmVkPiBtX2lkVG9Qb3NpdGlvbk1h
cDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1Byb3BlcnR5
Q29udGFpbmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKaW5kZXggZjNiNWFjMy4u
ODAyYmZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJDU1NJbml0aWFsVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIK
ICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5Q29udGFpbmVy
LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1F1aXJrUHJp
bWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCkBAIC0yODYsNyAr
Mjg3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgICAgICAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKDEpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9
IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMgLSAxXS0+dmFsdWUoKTsK
KyAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1
ZSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtlck1pZCwgdmFsdWUsIGlt
cG9ydGFudCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TWFya2VyRW5kLCB2YWx1
ZSwgaW1wb3J0YW50KTsKICAgICAgICAgbV9pbXBsaWNpdFNob3J0aGFuZCA9IGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAppbmRleCA3NzBhNjg2Li40ZmUx
ODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcApAQCAtMjk5
LDggKzI5OSw4IEBAIHZvaWQgU1ZHRm9udEZhY2VFbGVtZW50OjpyZWJ1aWxkRm9udEZhY2UoKQog
CiAgICAgLy8gUGFyc2UgaW4tbWVtb3J5IENTUyBydWxlcwogICAgIENTU1Byb3BlcnR5IHNyY1By
b3BlcnR5KENTU1Byb3BlcnR5U3JjLCBsaXN0KTsKLSAgICBjb25zdCBDU1NQcm9wZXJ0eSogc3Jj
UHJvcGVydHlSZWYgPSAmc3JjUHJvcGVydHk7Ci0gICAgbV9zdHlsZURlY2xhcmF0aW9uLT5hZGRQ
YXJzZWRQcm9wZXJ0aWVzKCZzcmNQcm9wZXJ0eVJlZiwgMSk7CisgICAgY29uc3QgQ1NTUHJvcGVy
dHkmIHNyY1Byb3BlcnR5UmVmID0gc3JjUHJvcGVydHk7CisgICAgbV9zdHlsZURlY2xhcmF0aW9u
LT5hZGRQYXJzZWRQcm9wZXJ0eShzcmNQcm9wZXJ0eVJlZik7CiAKICAgICBpZiAoZGVzY3JpYmVz
UGFyZW50Rm9udCkgeyAgICAKICAgICAgICAgLy8gVHJhdmVyc2UgcGFyc2VkIENTUyB2YWx1ZXMg
YW5kIGFzc29jaWF0ZSBDU1NGb250RmFjZVNyY1ZhbHVlIGVsZW1lbnRzIHdpdGggb3Vyc2VsdmVz
LgotLSAKMS43LjYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99830</attachid>
            <date>2011-07-06 07:39:08 -0700</date>
            <delta_ts>2011-07-06 09:12:36 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001-CSSParser-should-use-custom-vector-like-class-for-ma.patch</filename>
            <type>text/plain</type>
            <size>50512</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSBjNjJhZTczNjcxMGUxOGMxZWUxYWJkZTY4YTQyMDFiMWJhYjExY2UxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPgpEYXRl
OiBUdWUsIDUgSnVsIDIwMTEgMTc6MDU6NTEgKzAyMDAKU3ViamVjdDogW1BBVENIXSBDU1NQYXJz
ZXIgc2hvdWxkIHVzZSBjdXN0b20gdmVjdG9yLWxpa2UgY2xhc3MgZm9yIG1hbmFnaW5nCiBwcm9w
ZXJ0aWVzCgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgIHwgICAgOSArCiAuLi4vSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgODAgKysrKysrKwogLi4uL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9TZWdtZW50ZWRWZWN0b3IuaCAgICAgICAgfCAgICA0ICsKIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8gICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qICAgICAgIHwgICAgOCArCiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICB8ICAgIDgg
KwogU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSAgICAgICAgICAgICAgICAgICAgfCAg
ICA4ICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3Bw
ICB8ICAgMzUgKystCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24uaCAgICB8ICAgIDkgKy0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwICAgICAg
ICAgICAgICAgICAgIHwgIDEyMSArKysrLS0tLS0tLQogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICstCiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHkuaCAgICAgICAgICAgICAgICAgICB8ICAgIDkgKwogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCAgICAgICAgfCAgMjQxICsrKysrKysrKysrKysr
KysrKysrCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCAgICAgICAg
ICB8ICAgNzQgKysrKysrCiBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcCAgICAg
ICAgICAgICAgICB8ICAgIDMgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1l
bnQuY3BwICAgICAgICAgIHwgICAgNCArLQogMjAgZmlsZXMgY2hhbmdlZCwgNTIyIGluc2VydGlv
bnMoKyksIDExMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvU2VnbWVudGVkVmVjdG9yLmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmgKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1MGUzYWFkLi5mNzc5ZWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0wNy0wNSAgQW5kcmFzIEJlY3NpICA8
YWJlY3NpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ1NTUGFyc2VyIHNob3VsZCB1c2UgY3VzdG9t
ICJ2ZWN0b3ItbGlrZSIgY2xhc3MgZm9yIG1hbmFnaW5nIHByb3BlcnRpZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDE3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBTZXQgdGhlIHByaXZhdGUgYXR0cmlidXRlIGZvciBTZWdt
ZW50ZWRWZWN0b3IuaAorCiAyMDExLTA3LTA2ICBab2x0YW4gSGVyY3plZyAgPHpoZXJjemVnQGlu
Zi51LXN6ZWdlZC5odT4KIAogICAgICAgICBDYWxscyBvbiAzMiBiaXQgbWFjaGluZXMgYXJlIGZh
aWxlZCBhZnRlciByOTA0MjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDVmN2Rh
ZC4uNGZhMDEyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM2Niw3ICszNjYs
NyBAQAogCQk5NjlBMDcyMzBFRDFDRTMzMDBGMUY2ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzIxMEVE
MUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oICovOyB9OwogCQk5NjlBMDcyQTBF
RDFDRTY5MDBGMUY2ODEgLyogTGFiZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk2OUEwNzI3MEVEMUNFNjkwMEYxRjY4MSAvKiBMYWJlbC5oICovOyB9
OwogCQk5NjlBMDcyQjBFRDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3MjgwRUQxQ0U2OTAwRjFG
NjgxIC8qIFJlZ2lzdGVySUQuaCAqLzsgfTsKLQkJOTY5QTA3MkMwRUQxQ0U2OTAwRjFGNjgxIC8q
IFNlZ21lbnRlZFZlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTY5QTA3MjkwRUQxQ0U2OTAwRjFGNjgxIC8qIFNlZ21lbnRlZFZlY3Rvci5oICov
OyB9OworCQk5NjlBMDcyQzBFRDFDRTY5MDBGMUY2ODEgLyogU2VnbWVudGVkVmVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDcyOTBFRDFD
RTY5MDBGMUY2ODEgLyogU2VnbWVudGVkVmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTY5QTA3OTYwRUQxRDNBRTAwRjFGNjgxIC8qIENv
ZGVCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NjlBMDc5MDBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmNwcCAqLzsgfTsKIAkJOTY5
QTA3OTcwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3OTEwRUQxRDNBRTAwRjFGNjgxIC8qIENv
ZGVCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTk2OUEw
Nzk4MEVEMUQzQUUwMEYxRjY4MSAvKiBFdmFsQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDc5MjBFRDFEM0FFMDBGMUY2ODEgLyog
RXZhbENvZGVDYWNoZS5oICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxMDc4MzVkLi5j
MTI0M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDUzLDYgKzQ1Myw3IEBAIFNFVChXZWJD
b3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCiAgICAgY3NzL0NTU1By
aW1pdGl2ZVZhbHVlQ2FjaGUuY3BwCiAgICAgY3NzL0NTU1Byb3BlcnR5LmNwcAorICAgIGNzcy9D
U1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAKICAgICBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAK
ICAgICBjc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcAogICAgIGNzcy9DU1NSZWZsZWN0VmFs
dWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggY2QwN2FiYS4uODRjMzUwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDgzIEBACisyMDExLTA3LTA1ICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4K
KworICAgICAgICBDU1NQYXJzZXIgc2hvdWxkIHVzZSBjdXN0b20gInZlY3Rvci1saWtlIiBjbGFz
cyBmb3IgbWFuYWdpbmcgcHJvcGVydGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgQ1NTUHJvcGVydHlDb250YWluZXIgd2hpY2ggb24g
cmVtb3ZhbCBtYXJrcyBlbnRyaWVzIGFzIGVtcHR5CisgICAgICAgIGFuZCBvbmx5IHN3ZWVwcyB0
aGVtIHdoZW4gdGhlIGludGVybmFsIHNlZ21lbnRlZCB2ZWN0b3IgZ3Jvd3MgdG9vIGJpZy4KKyAg
ICAgICAgQWxzbyB1c2UgYW4gaW50ZXJuYWwgSGFzaE1hcCB0byBiZSBhYmxlIHRvIGVmZmljaWVu
dGx5IGZpbmQgZW50cmllcyBieSBJRAorICAgICAgICBhbmQgYXV0b21hdGljYWxseSBkaXNjYXJk
IGR1cGxpY2F0ZSBwcm9wZXJ0aWVzLgorICAgICAgICBUaGlzIGlzIG5lZWRlZCB0byBiZSBhYmxl
IHRvIHNpbXBsaWZ5IGFuZCBzcGVlZCB1cCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiwKKyAg
ICAgICAgdG8gdXNlIHRoaXMgY29udGFpbmVyIGluc3RlYWQgb2YgbWFpbnRhaW5pbmcgaXRzIG93
biBmb3JrIG9mIGluZnJhc3RydWN0dXJlCisgICAgICAgIGZvciBtYW5hZ2luZyBwYXJzZWQgcHJv
cGVydGllcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVh
ZGVycy93dGYvU2VnbWVudGVkVmVjdG9yLmg6IEFkZGVkIG1pc3NpbmcgZm9yd2FyZGluZyBoZWFk
ZXIuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6YWRkUGFyc2VkUHJvcGVydGllcyk6CisgICAg
ICAgICogY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Q1NTUGFyc2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6fkNTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmFkZFByb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cm9sbGJhY2tMYXN0UHJvcGVydGllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmNsZWFyUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlNFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlRm9udFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGb250VmFy
aWFudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udFdlaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6c3RhcnREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjplbmREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZVJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6aGFzUHJvcGVydGllcyk6CisgICAgICAg
ICogY3NzL0NTU1Byb3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eTo6Q1NT
UHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OkNTU1Byb3BlcnR5Q29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpzd2VlcCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Z3Jvd0lmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjppbnRlcm5hbFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjppbnZhbGlkYXRlQnlQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW52YWxp
ZGF0ZUJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmZpcnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0QnV0T25lKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpjb250YWluc1Byb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3ZlUHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6YWRkUHJvcGVydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmRlbGV0ZUZvbnRGYWNl
T25seVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6
OmNsZWFyUHJvcGVydGllcyk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpoYXNGb250RmFjZU9ubHkp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnNldEZvbnRGYWNlT25s
eSk6CisgICAgICAgICogY3NzL1NWR0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VFbGVtZW50OjpyZWJ1aWxkRm9u
dEZhY2UpOgorCiAyMDExLTA3LTA2ICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4K
IAogICAgICAgICBGaXggIndhcm5pbmc6IGEgYDsnIG1pZ2h0IGJlIG5lZWRlZCBhdCB0aGUgZW5k
IG9mIGFjdGlvbiBjb2RlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL1NlZ21lbnRlZFZlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjVhYTM5YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy93dGYvU2VnbWVudGVkVmVjdG9yLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVm
IFdlYkNvcmVfRldEX1NlZ21lbnRlZFZlY3Rvcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1NlZ21l
bnRlZFZlY3Rvcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2VnbWVudGVkVmVjdG9yLmg+
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDBhYzVhNWEuLjY1OWFk
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtOTcyLDYgKzk3Miw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
TWFwcGluZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmggXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eUNvbnRhaW5lci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNv
bnRhaW5lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCA5ZGE4MTUxLi45YTZjNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00OTEsNiArNDkxLDcgQEAK
ICAgICAgICAgICAgICdjc3MvQ1NTUGFyc2VyVmFsdWVzLmgnLAogICAgICAgICAgICAgJ2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHkuaCcsCisg
ICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmgnLAogICAgICAgICAgICAgJ2Nz
cy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1JlZmxlY3RW
YWx1ZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUmVmbGVjdGlvbkRpcmVjdGlvbi5oJywKQEAg
LTIzMzMsNiArMjMzNCw3IEBACiAgICAgICAgICAgICAnY3NzL0NTU1ByaW1pdGl2ZVZhbHVlQ2Fj
aGUuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCcsCiAg
ICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5LmNwcCcsCisgICAgICAgICAgICAnY3NzL0NTU1By
b3BlcnR5Q29udGFpbmVyLmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5TG9uZ2hh
bmQuY3BwJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oJywKICAgICAg
ICAgICAgICdjc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4
IDQ1NTA0YjEuLjZiNzRmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC00MTAsNiArNDEwLDcgQEAgU09V
UkNFUyArPSBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBcCiAgICAgY3NzL0NTU1By
aW1pdGl2ZVZhbHVlQ2FjaGUuY3BwIFwKICAgICBjc3MvQ1NTUHJvcGVydHkuY3BwIFwKKyAgICBj
c3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwIFwKICAgICBjc3MvQ1NTUHJvcGVydHlMb25naGFu
ZC5jcHAgXAogICAgIGNzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIFwKICAgICBjc3MvQ1NT
UmVmbGVjdFZhbHVlLmNwcCBcCkBAIC0xMzk4LDYgKzEzOTksNyBAQCBIRUFERVJTICs9IFwKICAg
ICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZhbHVlQ2Fj
aGUuaCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5LmggXAorICAgIGNzcy9DU1NQcm9wZXJ0eUNvbnRh
aW5lci5oIFwKICAgICBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oIFwKICAgICBjc3MvQ1NTUmVm
bGVjdFZhbHVlLmggXAogICAgIGNzcy9DU1NSdWxlLmggXApAQCAtMTQxMiw2ICsxNDE0LDcgQEAg
SEVBREVSUyArPSBcCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaCBcCiAgICAgY3NzL0NTU1RpbWlu
Z0Z1bmN0aW9uVmFsdWUuaCBcCiAgICAgY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmggXAorICAg
IGNzcy9DU1NWYWx1ZS5oIFwKICAgICBjc3MvQ1NTVmFsdWVMaXN0LmggXAogICAgIGNzcy9Gb250
RmFtaWx5VmFsdWUuaCBcCiAgICAgY3NzL0ZvbnRWYWx1ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMTNiMDc1OS4uNzU1YjRmYiAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMyNjE4
LDYgKzMyNjE4LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGNzc1xDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQcm9wZXJ0eUNvbnRhaW5l
ci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxj
c3NcQ1NTUHJvcGVydHlMb25naGFuZC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZiYzVj
MWMuLjk0MGMwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTQzMSw2ICs0MzEsOCBAQAogCQkxQUIxQUU3QTBDMDUxRkRFMDAx
MzlGNEYgLyogem9vbUluQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCMUFFNzgwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNv
ci5wbmcgKi87IH07CiAJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29y
LnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFC
MUFFNzkwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nICovOyB9OwogCQkxQUIz
M0RBNTEyNTUxRTMyMDAyNDQ1N0EgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMzNEQTQxMjU1MUUzMjAwMjQ0NTdB
IC8qIElPS2l0LmZyYW1ld29yayAqLzsgfTsKKwkJMUFCNDRBMEMxMzY3MkNGRjAwMDg3NzdFIC8q
IENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBQjQ0QTBCMTM2NzJDRkYwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNv
bnRhaW5lci5jcHAgKi87IH07CisJCTFBQjQ0QTBFMTM2NzJEMjAwMDA4Nzc3RSAvKiBDU1NQcm9w
ZXJ0eUNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFCNDRBMEQxMzY3MkQyMDAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFCN0ZD
NjgwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdGQzQ3MEE4QjkyRUMwMEQ5RDM3QiAv
KiBYUGF0aEV2YWx1YXRvci5jcHAgKi87IH07CiAJCTFBQjdGQzY5MEE4QjkyRUMwMEQ5RDM3QiAv
KiBYUGF0aEV2YWx1YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFCN0ZDNDgwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmggKi87
IH07CiAJCTFBQjdGQzZCMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0ZDNEEwQThC
OTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5jcHAgKi87IH07CkBAIC02ODQxLDYgKzY4
NDMsOCBAQAogCQkxQUIxQUU3ODBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vyc29yLnBuZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBu
ZzsgcGF0aCA9IHpvb21JbkN1cnNvci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBQjFBRTc5MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9
IHpvb21PdXRDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIzM0RB
NDEyNTUxRTMyMDAyNDQ1N0EgLyogSU9LaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBJ
T0tpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5m
cmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJCTFBQjQ0QTBCMTM2NzJD
RkYwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFBQjQ0QTBEMTM2NzJEMjAwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0
eUNvbnRhaW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NQcm9wZXJ0
eUNvbnRhaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI3RkM0NzBBOEI5
MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFhQYXRoRXZhbHVhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUFCN0ZDNDgwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUGF0aEV2YWx1YXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI3RkM0OTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhF
dmFsdWF0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBYUGF0aEV2YWx1YXRvci5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTA4Niw2ICsxOTA5MCw4IEBACiAJCUY1
MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAvKiBjc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTFBQjQ0QTBEMTM2NzJEMjAwMDA4Nzc3RSAvKiBDU1NQcm9w
ZXJ0eUNvbnRhaW5lci5oICovLAorCQkJCTFBQjQ0QTBCMTM2NzJDRkYwMDA4Nzc3RSAvKiBDU1NQ
cm9wZXJ0eUNvbnRhaW5lci5jcHAgKi8sCiAJCQkJOTNDQTRDOUMwOURGOTNGQTAwREY4Njc3IC8q
IG1ha2V0b2tlbml6ZXIgKi8sCiAJCQkJQTgwRTZDREEwQTE5ODlDQTAwN0ZCOEM1IC8qIENvdW50
ZXIuaCAqLywKIAkJCQk5MzA3MDVDNzA5RTBDOTVGMDBCMTdGRTQgLyogQ291bnRlci5pZGwgKi8s
CkBAIC0yMzA4OCw2ICsyMzA5NCw3IEBACiAJCQkJMDg2Mzk1MTYxM0I1RkU1NzAwQkIzNDREIC8q
IFNWR0FuaW1hdGVkUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDMxQTJGOUMxM0I2RjJCMDAw
Nzc5MUU0IC8qIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1QUJCNzg3MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJ
Q1UuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBQjQ0QTBFMTM2NzJEMjAwMDA4Nzc3RSAvKiBDU1NQ
cm9wZXJ0eUNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTg1NSw2ICsyNTg2Miw3IEBA
CiAJCQkJNDMxQTMwMjExM0I4OURDQzAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3Bl
Y3RSYXRpby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzFBMzA4ODEzQjhGOTc4MDA3NzkxRTQg
LyogU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzRjZGRDk2MTNC
Q0QwQjEwMDIyNDA1MiAvKiBTVkdBbmltYXRlZEludGVnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMUFCNDRBMEMxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIu
eSBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKaW5kZXggOTBiNWUxNC4uOWUzZmFk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CkBAIC0zMjMsOSArMzIzLDkgQEAgd2Via2l0X3Zh
bHVlOgogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJz
ZXIpOwogICAgICAgICBpZiAoJDQpIHsKICAgICAgICAgICAgIHAtPm1fdmFsdWVMaXN0ID0gcC0+
c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KTsKLSAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9w
ZXJ0aWVzID0gcC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzOworICAgICAgICAgICAgaW50IG9sZFBh
cnNlZFByb3BlcnRpZXMgPSBwLT5tX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKTsKICAgICAgICAg
ICAgIGlmICghcC0+cGFyc2VWYWx1ZShwLT5tX2lkLCBwLT5tX2ltcG9ydGFudCkpCi0gICAgICAg
ICAgICAgICAgcC0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwLT5tX251bVBhcnNlZFByb3BlcnRp
ZXMgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xh
c3RQcm9wZXJ0aWVzKHAtPm1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpIC0gb2xkUGFyc2VkUHJv
cGVydGllcyk7CiAgICAgICAgICAgICBkZWxldGUgcC0+bV92YWx1ZUxpc3Q7CiAgICAgICAgICAg
ICBwLT5tX3ZhbHVlTGlzdCA9IDA7CiAgICAgICAgIH0KQEAgLTEyNzMsMTAgKzEyNzMsMTAgQEAg
ZGVjbGFyYXRpb246CiAgICAgICAgIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCA9IGZhbHNlOwogICAg
ICAgICBpZiAoJDEgJiYgJDQpIHsKICAgICAgICAgICAgIHAtPm1fdmFsdWVMaXN0ID0gcC0+c2lu
a0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KTsKLSAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0
aWVzID0gcC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzOworICAgICAgICAgICAgaW50IG9sZFBhcnNl
ZFByb3BlcnRpZXMgPSBwLT5tX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKTsKICAgICAgICAgICAg
ICQkID0gcC0+cGFyc2VWYWx1ZSgkMSwgJDUpOwogICAgICAgICAgICAgaWYgKCEkJCkKLSAgICAg
ICAgICAgICAgICBwLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKHAtPm1fbnVtUGFyc2VkUHJvcGVy
dGllcyAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNr
TGFzdFByb3BlcnRpZXMocC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkgLSBvbGRQYXJzZWRQ
cm9wZXJ0aWVzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpc1Byb3BlcnR5
UGFyc2VkID0gdHJ1ZTsKICAgICAgICAgICAgIGRlbGV0ZSBwLT5tX3ZhbHVlTGlzdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4
IDAxN2RjNjkuLmM3YWVjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNzMsNyArNzMsNyBAQCBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBj
b25zdCBWZQogICAgIC8vIEZJWE1FOiBUaGlzIGFsbG93cyBkdXBsaWNhdGUgcHJvcGVydGllcy4K
IH0KIAotQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKENTU1J1bGUqIHBhcmVudCwgY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICogcHJvcGVydGll
cywgaW50IG51bVByb3BlcnRpZXMpCitDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBDU1NQcm9wZXJ0eUNvbnRhaW5l
ciYgcHJvcGVydGllcykKICAgICA6IENTU1N0eWxlRGVjbGFyYXRpb24ocGFyZW50KQogICAgICwg
bV9ub2RlKDApCiAgICAgLCBtX3N0cmljdFBhcnNpbmcoIXBhcmVudCB8fCBwYXJlbnQtPnVzZVN0
cmljdFBhcnNpbmcoKSkKQEAgLTgxLDE5ICs4MSwyMyBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBjb25zdCBD
UwogICAgICwgbV9pdGVyYXRvckNvdW50KDApCiAjZW5kaWYKIHsKKyAgICB1bnNpZ25lZCBudW1Q
cm9wZXJ0aWVzID0gcHJvcGVydGllcy5jb3VudCgpOworCisgICAgaWYgKCFudW1Qcm9wZXJ0aWVz
KQorICAgICAgICByZXR1cm47CisKICAgICBtX3Byb3BlcnRpZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShudW1Qcm9wZXJ0aWVzKTsKICAgICBIYXNoTWFwPGludCwgYm9vbD4gY2FuZGlkYXRlczsK
LSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBj
b25zdCBDU1NQcm9wZXJ0eSAqcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldOwotICAgICAgICBBU1NF
UlQocHJvcGVydHkpOwotICAgICAgICBib29sIGltcG9ydGFudCA9IHByb3BlcnR5LT5pc0ltcG9y
dGFudCgpOwotICAgICAgICBpZiAoY2FuZGlkYXRlcy5jb250YWlucyhwcm9wZXJ0eS0+aWQoKSkp
IHsKLSAgICAgICAgICAgIGlmICghaW1wb3J0YW50ICYmIGNhbmRpZGF0ZXMuZ2V0KHByb3BlcnR5
LT5pZCgpKSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytp
KSB7CisgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaV07
CisgICAgICAgIGJvb2wgaW1wb3J0YW50ID0gcHJvcGVydHkuaXNJbXBvcnRhbnQoKTsKKyAgICAg
ICAgaWYgKGNhbmRpZGF0ZXMuY29udGFpbnMocHJvcGVydHkuaWQoKSkpIHsKKyAgICAgICAgICAg
IGlmICghaW1wb3J0YW50ICYmIGNhbmRpZGF0ZXMuZ2V0KHByb3BlcnR5LmlkKCkpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcmVtb3ZlUHJvcGVydHkocHJvcGVydHkt
PmlkKCksIGZhbHNlKTsKKyAgICAgICAgICAgIHJlbW92ZVByb3BlcnR5KHByb3BlcnR5LmlkKCks
IGZhbHNlKTsKICAgICAgICAgfQotICAgICAgICBtX3Byb3BlcnRpZXMuYXBwZW5kKCpwcm9wZXJ0
eSk7Ci0gICAgICAgIGNhbmRpZGF0ZXMuc2V0KHByb3BlcnR5LT5pZCgpLCBpbXBvcnRhbnQpOwor
ICAgICAgICBtX3Byb3BlcnRpZXMuYXBwZW5kKHByb3BlcnR5KTsKKyAgICAgICAgY2FuZGlkYXRl
cy5zZXQocHJvcGVydHkuaWQoKSwgaW1wb3J0YW50KTsKICAgICB9CiB9CiAKQEAgLTYzOSwxMyAr
NjQzLDE4IEBAIHZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnBhcnNlRGVjbGFyYXRp
b24oY29uc3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9uCiAgICAgc2V0TmVlZHNTdHlsZVJlY2Fs
YygpOwogfQogCi12b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjphZGRQYXJzZWRQcm9w
ZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCogcHJvcGVydGllcywgaW50IG51bVByb3Bl
cnRpZXMpCit2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjphZGRQYXJzZWRQcm9wZXJ0
aWVzKENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9wZXJ0aWVzKQogewogICAgIEFTU0VSVCghbV9p
dGVyYXRvckNvdW50KTsKIAorICAgIHVuc2lnbmVkIG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVz
LmNvdW50KCk7CisKKyAgICBpZiAoIW51bVByb3BlcnRpZXMpCisgICAgICAgIHJldHVybjsKKwog
ICAgIG1fcHJvcGVydGllcy5yZXNlcnZlQ2FwYWNpdHkobnVtUHJvcGVydGllcyk7Ci0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpCi0gICAgICAgIGFkZFBhcnNlZFBy
b3BlcnR5KCpwcm9wZXJ0aWVzW2ldKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
UHJvcGVydGllczsgKytpKQorICAgICAgICBhZGRQYXJzZWRQcm9wZXJ0eShwcm9wZXJ0aWVzW2ld
KTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3VsZCBoYXZlIGEgY2FsbCB0byBz
ZXROZWVkc1N0eWxlUmVjYWxjKCkgaWYgc29tZXRoaW5nIGNoYW5nZWQuIFdlIG1heSBhbHNvIHdp
c2ggdG8gYWRkCiAgICAgLy8gYSBub3RpZnlDaGFuZ2VkIGFyZ3VtZW50IHRvIHRoaXMgZnVuY3Rp
b24gdG8gZm9sbG93IHRoZSBtb2RlbCBvZiBvdGhlciBmdW5jdGlvbnMgaW4gdGhpcyBjbGFzcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgKaW5k
ZXggZWE4YWIzZi4uYjgzODI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDU1NTdHls
ZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5Q29udGFpbmVyLmgiCiAjaW5j
bHVkZSAiS1VSTEhhc2guaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtNjcsOSArNjgsOSBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKHBhcmVu
dFJ1bGUpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24+IGNyZWF0ZShDU1NSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBDU1NQcm9wZXJ0eSog
Y29uc3QqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoQ1NTUnVsZSogcGFyZW50UnVs
ZSwgQ1NTUHJvcGVydHlDb250YWluZXImIHByb3BlcnRpZXMpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKHBhcmVudFJ1bGUsIHBy
b3BlcnRpZXMsIG51bVByb3BlcnRpZXMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihwYXJlbnRSdWxlLCBwcm9wZXJ0aWVzKSk7CiAgICAg
fQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjcmVh
dGUoY29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYgcHJvcGVydGllcykKICAgICB7CkBAIC0xMjQs
NyArMTI1LDcgQEAgcHVibGljOgogCiAgICAgLy8gQmVzaWRlcyBhZGRpbmcgdGhlIHByb3BlcnRp
ZXMsIHRoaXMgYWxzbyByZW1vdmVzIGFueSBleGlzdGluZyBwcm9wZXJ0aWVzIHdpdGggdGhlc2Ug
SURzLgogICAgIC8vIEl0IGRvZXMgbm8gbm90aWZpY2F0aW9uIHNpbmNlIGl0J3MgY2FsbGVkIGJ5
IHRoZSBwYXJzZXIuCi0gICAgdm9pZCBhZGRQYXJzZWRQcm9wZXJ0aWVzKGNvbnN0IENTU1Byb3Bl
cnR5KiBjb25zdCAqLCBpbnQgbnVtUHJvcGVydGllcyk7CisgICAgdm9pZCBhZGRQYXJzZWRQcm9w
ZXJ0aWVzKENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9wZXJ0aWVzKTsKICAgICAvLyBUaGlzIGRv
ZXMgbm8gY2hhbmdlIG5vdGlmaWNhdGlvbnMgc2luY2UgaXQncyBvbmx5IGNhbGxlZCBieSBjcmVh
dGVNYXJrdXAuCiAgICAgdm9pZCBhZGRQYXJzZWRQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0eSYp
OwogIApAQCAtMTQ5LDcgKzE1MCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24oKTsKICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihD
U1NSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+Jik7Ci0gICAgQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50UnVsZSwgY29uc3QgQ1NTUHJv
cGVydHkqIGNvbnN0ICosIGludCBudW1Qcm9wZXJ0aWVzKTsKKyAgICBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRSdWxlLCBDU1NQcm9wZXJ0eUNvbnRhaW5lciYgcHJv
cGVydGllcyk7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24+IG1ha2VNdXRhYmxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggZmY0
M2EyZC4uMzRhYzU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTE2NSwxNCArMTY1
LDEwIEBAIENTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZykKICAgICAsIG1f
aWQoMCkKICAgICAsIG1fc3R5bGVTaGVldCgwKQogICAgICwgbV92YWx1ZUxpc3QoMCkKLSAgICAs
IG1fcGFyc2VkUHJvcGVydGllcyhzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eSoqPihmYXN0TWFsbG9j
KDMyICogc2l6ZW9mKENTU1Byb3BlcnR5KikpKSkKLSAgICAsIG1fbnVtUGFyc2VkUHJvcGVydGll
cygwKQotICAgICwgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzKDMyKQogICAgICwgbV9udW1QYXJzZWRQ
cm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTKQog
ICAgICwgbV9pblBhcnNlU2hvcnRoYW5kKDApCiAgICAgLCBtX2N1cnJlbnRTaG9ydGhhbmQoMCkK
ICAgICAsIG1faW1wbGljaXRTaG9ydGhhbmQoZmFsc2UpCi0gICAgLCBtX2hhc0ZvbnRGYWNlT25s
eVZhbHVlcyhmYWxzZSkKICAgICAsIG1faGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZShmYWxz
ZSkKICAgICAsIG1fZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSkKICAgICAsIG1faW5TdHlsZVJ1
bGVPckRlY2xhcmF0aW9uKGZhbHNlKQpAQCAtMTk2LDkgKzE5Miw2IEBAIENTU1BhcnNlcjo6Q1NT
UGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZykKIAogQ1NTUGFyc2VyOjp+Q1NTUGFyc2VyKCkKIHsK
LSAgICBjbGVhclByb3BlcnRpZXMoKTsKLSAgICBmYXN0RnJlZShtX3BhcnNlZFByb3BlcnRpZXMp
OwotCiAgICAgZGVsZXRlIG1fdmFsdWVMaXN0OwogCiAgICAgZmFzdEZyZWUobV9kYXRhKTsKQEAg
LTQ1OSwxMSArNDUyLDExIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5CiAgICAgbV9ydWxlID0g
MDsKIAogICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAgICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1
ZXMpCi0gICAgICAgIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotICAgIGlmIChtX251bVBh
cnNlZFByb3BlcnRpZXMpIHsKKyAgICBpZiAobV9wYXJzZWRQcm9wZXJ0aWVzLmhhc0ZvbnRGYWNl
T25seSgpKQorICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMuZGVsZXRlRm9udEZhY2VPbmx5UHJv
cGVydGllcygpOworICAgIGlmIChtX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSkgewogICAgICAg
ICBvayA9IHRydWU7Ci0gICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1f
cGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgZGVjbGFy
YXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzKTsKICAgICAgICAg
Y2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgfQogCkBAIC00ODUsNyArNDc4LDcgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJv
b2wgc3RyaWN0KQogICAgIGlmICghcGFyc2VyLnBhcnNlQ29sb3IoZHVtbXlTdHlsZURlY2xhcmF0
aW9uLmdldCgpLCBzdHJpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDU1NWYWx1
ZSogdmFsdWUgPSBwYXJzZXIubV9wYXJzZWRQcm9wZXJ0aWVzWzBdLT52YWx1ZSgpOworICAgIENT
U1ZhbHVlKiB2YWx1ZSA9IHBhcnNlci5tX3BhcnNlZFByb3BlcnRpZXMuZmlyc3QoKS52YWx1ZSgp
OwogICAgIGlmICh2YWx1ZS0+Y3NzVmFsdWVUeXBlKCkgIT0gQ1NTVmFsdWU6OkNTU19QUklNSVRJ
VkVfVkFMVUUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTA2LDcgKzQ5OSw3IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNs
YXJhdGlvbiwgY29uc3QgU3RyaW5nCiAgICAgY3NzeXlwYXJzZSh0aGlzKTsKICAgICBtX3J1bGUg
PSAwOwogCi0gICAgcmV0dXJuIChtX251bVBhcnNlZFByb3BlcnRpZXMgJiYgbV9wYXJzZWRQcm9w
ZXJ0aWVzWzBdLT5tX2lkID09IENTU1Byb3BlcnR5Q29sb3IpOworICAgIHJldHVybiAobV9wYXJz
ZWRQcm9wZXJ0aWVzLmNvdW50KCkgJiYgbV9wYXJzZWRQcm9wZXJ0aWVzLmZpcnN0KCkuaWQoKSA9
PSBDU1NQcm9wZXJ0eUNvbG9yKTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlU3lzdGVtQ29s
b3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIERvY3VtZW50KiBkb2N1bWVu
dCkKQEAgLTU2MCwxMSArNTUzLDEyIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9u
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlvbiwgY29uc3QKICAgICBtX3J1
bGUgPSAwOwogCiAgICAgYm9vbCBvayA9IGZhbHNlOwotICAgIGlmIChtX2hhc0ZvbnRGYWNlT25s
eVZhbHVlcykKLSAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0gICAgaWYgKG1f
bnVtUGFyc2VkUHJvcGVydGllcykgeworICAgIGlmIChtX3BhcnNlZFByb3BlcnRpZXMuaGFzRm9u
dEZhY2VPbmx5KCkpCisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5kZWxldGVGb250RmFjZU9u
bHlQcm9wZXJ0aWVzKCk7CisKKyAgICBpZiAobV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkpIHsK
ICAgICAgICAgb2sgPSB0cnVlOwotICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVy
dGllcyhtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAg
IGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcyk7CiAg
ICAgICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIH0KIApAQCAtNjA4LDMzICs2MDIsMTggQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeShNZWRpYUxpc3QqIHF1ZXJpZXMsIGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogCiB2b2lkIENTU1BhcnNlcjo6YWRkUHJvcGVydHkoaW50IHByb3BJ
ZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewotICAgIE93
blB0cjxDU1NQcm9wZXJ0eT4gcHJvcChhZG9wdFB0cihuZXcgQ1NTUHJvcGVydHkocHJvcElkLCB2
YWx1ZSwgaW1wb3J0YW50LCBtX2N1cnJlbnRTaG9ydGhhbmQsIG1faW1wbGljaXRTaG9ydGhhbmQp
KSk7Ci0gICAgaWYgKG1fbnVtUGFyc2VkUHJvcGVydGllcyA+PSBtX21heFBhcnNlZFByb3BlcnRp
ZXMpIHsKLSAgICAgICAgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzICs9IDMyOwotICAgICAgICBpZiAo
bV9tYXhQYXJzZWRQcm9wZXJ0aWVzID4gVUlOVF9NQVggLyBzaXplb2YoQ1NTUHJvcGVydHkqKSkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJvcGVydHkqKj4oZmFzdFJlYWxsb2MobV9wYXJzZWRQcm9wZXJ0aWVzLAotICAg
ICAgICAgICAgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzICogc2l6ZW9mKENTU1Byb3BlcnR5KikpKTsK
LSAgICB9Ci0gICAgbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcysrXSA9
IHByb3AubGVha1B0cigpOworICAgIG1fcGFyc2VkUHJvcGVydGllcy5hZGRQcm9wZXJ0eShwcm9w
SWQsIHZhbHVlLCBpbXBvcnRhbnQsIG1fY3VycmVudFNob3J0aGFuZCwgbV9pbXBsaWNpdFNob3J0
aGFuZCk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpyb2xsYmFja0xhc3RQcm9wZXJ0aWVzKGludCBu
dW0pCiB7Ci0gICAgQVNTRVJUKG51bSA+PSAwKTsKLSAgICBBU1NFUlQobV9udW1QYXJzZWRQcm9w
ZXJ0aWVzID49IHN0YXRpY19jYXN0PHVuc2lnbmVkPihudW0pKTsKLQotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtOyArK2kpCi0gICAgICAgIGRlbGV0ZSBtX3BhcnNlZFByb3BlcnRpZXNbLS1t
X251bVBhcnNlZFByb3BlcnRpZXNdOworICAgIG1fcGFyc2VkUHJvcGVydGllcy5yb2xsYmFja0xh
c3RQcm9wZXJ0aWVzKG51bSk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpjbGVhclByb3BlcnRpZXMo
KQogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBhcnNlZFByb3BlcnRpZXM7
IGkrKykKLSAgICAgICAgZGVsZXRlIG1fcGFyc2VkUHJvcGVydGllc1tpXTsKLSAgICBtX251bVBh
cnNlZFByb3BlcnRpZXMgPSAwOworICAgIG1fcGFyc2VkUHJvcGVydGllcy5jbGVhclByb3BlcnRp
ZXMoKTsKICAgICBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3ggPSBJTlZBTElE
X05VTV9QQVJTRURfUFJPUEVSVElFUzsKLSAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IGZh
bHNlOwogfQogICAgIAogdm9pZCBDU1NQYXJzZXI6OnNldFN0eWxlU2hlZXQoQ1NTU3R5bGVTaGVl
dCogc3R5bGVTaGVldCkKQEAgLTk0NCw3ICs5MjMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgU2hvcnRoYW5kU2NvcGUg
c2NvcGUodGhpcywgcHJvcElkKTsKICAgICAgICAgaWYgKG51bSAhPSAxIHx8ICFwYXJzZVZhbHVl
KENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1Q
YXJzZWRQcm9wZXJ0aWVzIC0gMV0tPnZhbHVlKCk7CisgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9
IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlPdmVyZmxvd1ksIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC0xMDQxLDcgKzEwMjAsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIFNob3J0aGFuZFNj
b3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZyk7CiAgICAgICAgICAgICBp
ZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFBy
b3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTFdLT52YWx1ZSgpOworICAgICAgICAgICAg
Q1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwogICAg
ICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1sxXSwgdmFsdWUsIGltcG9ydGFudCk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTY5Niw3ICsxNjc1LDcgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eVdlYmtpdE1h
cmdpbkNvbGxhcHNlKTsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBd
LCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRp
ZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFBy
b3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0
aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CkBAIC0yNDYzLDcgKzI0NDIsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVz
KGludCBwcm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgIGJvb2wgaW1wb3J0YW50KQogICAg
ICAgICBjYXNlIDE6IHsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBd
LCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRp
ZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFBy
b3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxp
Y2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBsaWNpdCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0
eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIGFkZFByb3Bl
cnR5KHByb3BlcnRpZXNbMl0sIHZhbHVlLCBpbXBvcnRhbnQpOwpAQCAtMjQ3MywxNyArMjQ1Miwx
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0IGludCAq
cHJvcGVydGllcywgIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBjYXNlIDI6IHsKICAgICAgICAg
ICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZh
bHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21f
bnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2
YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0QnV0T25lKCkudmFsdWUoKTsKICAgICAgICAg
ICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsK
ICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMl0sIHZhbHVlLCBpbXBvcnRhbnQp
OwotICAgICAgICAgICAgdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAgICAgdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRp
ZXMubGFzdEJ1dE9uZSgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0
aWVzWzNdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgMzogewogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRp
ZXNbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGllc1sxXSwgaW1wb3J0YW50
KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzJdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2Vk
UHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZhbHVlKCk7CisgICAgICAgICAg
ICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdEJ1dE9uZSgpLnZhbHVl
KCk7CiAgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVy
dHlJbXBsaWNpdCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzNdLCB2YWx1
ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzg0Nyw3ICszODI2LDcgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFN0eWxlKGJvb2wgaW1wb3J0YW50KQogICAgIH0KIAog
ICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLT5sZW5ndGgoKSkgewotICAgICAgICBtX2hhc0ZvbnRG
YWNlT25seVZhbHVlcyA9IHRydWU7CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5zZXRGb250
RmFjZU9ubHkoKTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U3R5bGUsIHZh
bHVlcy5yZWxlYXNlKCksIGltcG9ydGFudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTM4OTQsNyArMzg3Myw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnRWYXJpYW50KGJv
b2wgaW1wb3J0YW50KQogICAgIH0KIAogICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLT5sZW5ndGgo
KSkgewotICAgICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IHRydWU7CisgICAgICAgIG1f
cGFyc2VkUHJvcGVydGllcy5zZXRGb250RmFjZU9ubHkoKTsKICAgICAgICAgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlGb250VmFyaWFudCwgdmFsdWVzLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzk0Nyw3ICszOTI2LDcgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlRm9udFdlaWdodChib29sIGltcG9ydGFudCkKICAgICB9CiAKICAgICBpZiAo
dmFsdWVzICYmIHZhbHVlcy0+bGVuZ3RoKCkpIHsKLSAgICAgICAgbV9oYXNGb250RmFjZU9ubHlW
YWx1ZXMgPSB0cnVlOworICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMuc2V0Rm9udEZhY2VPbmx5
KCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdlaWdodCwgdmFsdWVzLnJl
bGVhc2UoKSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNjQx
MSw5ICs2MzkwLDkgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUoVmVjdG9y
PE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3IKICAgICAgICAgbV9hbGxvd0lt
cG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNlOwogICAgICAg
ICBSZWZQdHI8Q1NTU3R5bGVSdWxlPiBydWxlID0gQ1NTU3R5bGVSdWxlOjpjcmVhdGUobV9zdHls
ZVNoZWV0LCBtX2xhc3RTZWxlY3RvckxpbmVOdW1iZXIpOwogICAgICAgICBydWxlLT5hZG9wdFNl
bGVjdG9yVmVjdG9yKCpzZWxlY3RvcnMpOwotICAgICAgICBpZiAobV9oYXNGb250RmFjZU9ubHlW
YWx1ZXMpCi0gICAgICAgICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKLSAgICAgICAg
cnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShy
dWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGllcykpOwor
ICAgICAgICBpZiAobV9wYXJzZWRQcm9wZXJ0aWVzLmhhc0ZvbnRGYWNlT25seSgpKQorICAgICAg
ICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmRlbGV0ZUZvbnRGYWNlT25seVByb3BlcnRpZXMoKTsK
KyAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246
OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMpKTsKICAgICAgICAgcmVzdWx0
ID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9wYXJzZWRTdHlsZU9iamVjdHMuYXBwZW5kKHJ1bGUu
cmVsZWFzZSgpKTsKICAgICAgICAgaWYgKG1fcnVsZVJhbmdlTWFwKSB7CkBAIC02NDM1LDE0ICs2
NDE0LDE1IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxPd25Q
dHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9yCiBDU1NSdWxlKiBDU1NQYXJzZXI6OmNy
ZWF0ZUZvbnRGYWNlUnVsZSgpCiB7CiAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05h
bWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX251bVBhcnNlZFByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBDU1NQcm9wZXJ0eSogcHJv
cGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07Ci0gICAgICAgIGludCBpZCA9IHByb3BlcnR5
LT5pZCgpOwotICAgICAgICBpZiAoKGlkID09IENTU1Byb3BlcnR5Rm9udFdlaWdodCB8fCBpZCA9
PSBDU1NQcm9wZXJ0eUZvbnRTdHlsZSB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KSAm
JiBwcm9wZXJ0eS0+dmFsdWUoKS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gcHJvcGVydHktPm1fdmFsdWUucmVsZWFzZSgpOwotICAg
ICAgICAgICAgcHJvcGVydHktPm1fdmFsdWUgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPihwcm9wZXJ0
eS0+dmFsdWUoKSktPmFwcGVuZCh2YWx1ZS5yZWxlYXNlKCkpOwotICAgICAgICB9IGVsc2UgaWYg
KGlkID09IENTU1Byb3BlcnR5Rm9udEZhbWlseSAmJiAoIXByb3BlcnR5LT52YWx1ZSgpLT5pc1Zh
bHVlTGlzdCgpIHx8IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHByb3BlcnR5LT52YWx1ZSgp
KS0+bGVuZ3RoKCkgIT0gMSkpIHsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Bh
cnNlZFByb3BlcnRpZXMuY291bnQoKTsgKytpKSB7CisgICAgICAgIENTU1Byb3BlcnR5JiBwcm9w
ZXJ0eSA9IG1fcGFyc2VkUHJvcGVydGllc1tpXTsKKyAgICAgICAgaW50IGlkID0gcHJvcGVydHku
aWQoKTsKKyAgICAgICAgaWYgKChpZCA9PSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQgfHwgaWQgPT0g
Q1NTUHJvcGVydHlGb250U3R5bGUgfHwgaWQgPT0gQ1NTUHJvcGVydHlGb250VmFyaWFudCkgJiYg
cHJvcGVydHkudmFsdWUoKS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHZhbHVlID0gcHJvcGVydHkubV92YWx1ZS5yZWxlYXNlKCk7CisgICAgICAg
ICAgICBwcm9wZXJ0eS5tX3ZhbHVlID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRl
ZCgpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4ocHJvcGVydHkudmFs
dWUoKSktPmFwcGVuZCh2YWx1ZS5yZWxlYXNlKCkpOworICAgICAgICB9IGVsc2UgaWYgKGlkID09
IENTU1Byb3BlcnR5Rm9udEZhbWlseSAmJiAoIXByb3BlcnR5LnZhbHVlKCktPmlzVmFsdWVMaXN0
KCkgfHwgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4ocHJvcGVydHkudmFsdWUoKSktPmxlbmd0
aCgpICE9IDEpKSB7CiAgICAgICAgICAgICAvLyBVbmxpa2UgZm9udC1mYW1pbHkgcHJvcGVydHks
IGZvbnQtZmFtaWx5IGRlc2NyaXB0b3IgaW4gQGZvbnQtZmFjZSBydWxlIAogICAgICAgICAgICAg
Ly8gaGFzIHRvIGJlIGEgdmFsdWUgbGlzdCB3aXRoIGV4YWN0bHkgb25lIGZhbWlseSBuYW1lLiBJ
dCBjYW5ub3QgaGF2ZSBhCiAgICAgICAgICAgICAvLyBoYXZlICdpbml0aWFsJyB2YWx1ZSBhbmQg
Y2Fubm90ICdpbmhlcml0JyBmcm9tIHBhcmVudC4KQEAgLTY0NTEsOCArNjQzMSw5IEBAIENTU1J1
bGUqIENTU1BhcnNlcjo6Y3JlYXRlRm9udEZhY2VSdWxlKCkKICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICB9CiAgICAgfQorCiAgICAgUmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4gcnVsZSA9
IENTU0ZvbnRGYWNlUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7Ci0gICAgcnVsZS0+c2V0RGVj
bGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBt
X3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGllcykpOworICAgIHJ1bGUtPnNl
dERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVsZS5nZXQo
KSwgbV9wYXJzZWRQcm9wZXJ0aWVzKSk7CiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgQ1NT
Rm9udEZhY2VSdWxlKiByZXN1bHQgPSBydWxlLmdldCgpOwogICAgIG1fcGFyc2VkU3R5bGVPYmpl
Y3RzLmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CkBAIC02NTI2LDcgKzY1MDcsNyBAQCBDU1NSdWxl
KiBDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKFBhc3NPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
IHBhZ2VTZWxlY3RvcikKICAgICAgICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4g
PiBzZWxlY3RvclZlY3RvcjsKICAgICAgICAgc2VsZWN0b3JWZWN0b3IuYXBwZW5kKHBhZ2VTZWxl
Y3Rvcik7CiAgICAgICAgIHJ1bGUtPmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3Ip
OwotICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzKSk7CisgICAgICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzKSk7CiAgICAg
ICAgIHBhZ2VSdWxlID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9wYXJzZWRTdHlsZU9iamVjdHMu
YXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICB9CkBAIC02NTQ3LDM0ICs2NTI4LDE2IEBAIENT
U1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlTWFyZ2luQXRSdWxlKENTU1NlbGVjdG9yOjpNYXJnaW5C
b3hUeXBlIC8qIG1hcmdpbkJveCAqCiAKIHZvaWQgQ1NTUGFyc2VyOjpzdGFydERlY2xhcmF0aW9u
c0Zvck1hcmdpbkJveCgpCiB7Ci0gICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2lu
Qm94ID0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzOworICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0Jl
Zm9yZU1hcmdpbkJveCA9IG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpOwogfQogCiB2b2lkIENT
U1BhcnNlcjo6ZW5kRGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCkKIHsKICAgICBBU1NFUlQobV9u
dW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ICE9IElOVkFMSURfTlVNX1BBUlNFRF9Q
Uk9QRVJUSUVTKTsKLSAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKG1fbnVtUGFyc2VkUHJvcGVy
dGllcyAtIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCk7CisgICAgcm9sbGJh
Y2tMYXN0UHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSAtIG1fbnVtUGFyc2Vk
UHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCk7CiAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVm
b3JlTWFyZ2luQm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVM7CiB9CiAKLXZvaWQg
Q1NTUGFyc2VyOjpkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKQotewotICAgIEFTU0VSVChtX2hh
c0ZvbnRGYWNlT25seVZhbHVlcyk7Ci0gICAgaW50IGRlbGV0ZWRQcm9wZXJ0aWVzID0gMDsKLQot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBhcnNlZFByb3BlcnRpZXM7ICsraSkg
ewotICAgICAgICBDU1NQcm9wZXJ0eSogcHJvcGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07
Ci0gICAgICAgIGludCBpZCA9IHByb3BlcnR5LT5pZCgpOwotICAgICAgICBpZiAoKGlkID09IENT
U1Byb3BlcnR5Rm9udFdlaWdodCB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRTdHlsZSB8fCBpZCA9
PSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KSAmJiBwcm9wZXJ0eS0+dmFsdWUoKS0+aXNWYWx1ZUxp
c3QoKSkgewotICAgICAgICAgICAgZGVsZXRlIHByb3BlcnR5OwotICAgICAgICAgICAgZGVsZXRl
ZFByb3BlcnRpZXMrKzsKLSAgICAgICAgfSBlbHNlIGlmIChkZWxldGVkUHJvcGVydGllcykKLSAg
ICAgICAgICAgIG1fcGFyc2VkUHJvcGVydGllc1tpIC0gZGVsZXRlZFByb3BlcnRpZXNdID0gbV9w
YXJzZWRQcm9wZXJ0aWVzW2ldOwotICAgIH0KLQotICAgIG1fbnVtUGFyc2VkUHJvcGVydGllcyAt
PSBkZWxldGVkUHJvcGVydGllczsKLX0KLQogV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJz
ZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJWYWx1ZUxpc3QqIGtleXMpCiB7CiAgICAg
Ly8gQ3JlYXRlIGEga2V5IHN0cmluZyBmcm9tIHRoZSBwYXNzZWQga2V5cwpAQCAtNjU4OSw3ICs2
NTUyLDcgQEAgV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1l
UnVsZShDU1NQYXJzZXJWYWx1ZUxpc3QqIGtleXMpCiAKICAgICBSZWZQdHI8V2ViS2l0Q1NTS2V5
ZnJhbWVSdWxlPiBrZXlmcmFtZSA9IFdlYktpdENTU0tleWZyYW1lUnVsZTo6Y3JlYXRlKG1fc3R5
bGVTaGVldCk7CiAgICAga2V5ZnJhbWUtPnNldEtleVRleHQoa2V5U3RyaW5nKTsKLSAgICBrZXlm
cmFtZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgw
LCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGllcykpOworICAgIGtleWZy
YW1lLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKDAs
IG1fcGFyc2VkUHJvcGVydGllcykpOwogCiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuaAppbmRleCBjNmYwNzhhLi5jODlhYzVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCiAj
aW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250YWlu
ZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCIKICNpbmNsdWRlICJDU1NT
ZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCkBAIC03NSw3ICs3Niw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGFkZFByb3BlcnR5KGludCBwcm9wSWQsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCk7CiAgICAgICAgIHZvaWQgcm9sbGJhY2tM
YXN0UHJvcGVydGllcyhpbnQgbnVtKTsKLSAgICAgICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29u
c3QgeyByZXR1cm4gbV9udW1QYXJzZWRQcm9wZXJ0aWVzID4gMDsgfQorICAgICAgICBib29sIGhh
c1Byb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSA+
IDA7IH0KIAogICAgICAgICBib29sIHBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpOwogICAgICAgICBib29sIHBhcnNlU2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCog
cHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKQEAgLTIzOSwx
OCArMjQwLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPENTU1J1bGU+
IG1fa2V5ZnJhbWU7CiAgICAgICAgIE93blB0cjxNZWRpYVF1ZXJ5PiBtX21lZGlhUXVlcnk7CiAg
ICAgICAgIENTU1BhcnNlclZhbHVlTGlzdCogbV92YWx1ZUxpc3Q7Ci0gICAgICAgIENTU1Byb3Bl
cnR5KiogbV9wYXJzZWRQcm9wZXJ0aWVzOworICAgICAgICBDU1NQcm9wZXJ0eUNvbnRhaW5lciBt
X3BhcnNlZFByb3BlcnRpZXM7CiAgICAgICAgIENTU1NlbGVjdG9yTGlzdCogbV9zZWxlY3Rvckxp
c3RGb3JQYXJzZVNlbGVjdG9yOwogICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWVDYWNo
ZT4gbV9wcmltaXRpdmVWYWx1ZUNhY2hlOwotICAgICAgICB1bnNpZ25lZCBtX251bVBhcnNlZFBy
b3BlcnRpZXM7Ci0gICAgICAgIHVuc2lnbmVkIG1fbWF4UGFyc2VkUHJvcGVydGllczsKICAgICAg
ICAgdW5zaWduZWQgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94OwogCiAgICAg
ICAgIGludCBtX2luUGFyc2VTaG9ydGhhbmQ7CiAgICAgICAgIGludCBtX2N1cnJlbnRTaG9ydGhh
bmQ7CiAgICAgICAgIGJvb2wgbV9pbXBsaWNpdFNob3J0aGFuZDsKIAotICAgICAgICBib29sIG1f
aGFzRm9udEZhY2VPbmx5VmFsdWVzOwogICAgICAgICBib29sIG1faGFkU3ludGFjdGljYWxseVZh
bGlkQ1NTUnVsZTsKIAogICAgICAgICBBdG9taWNTdHJpbmcgbV9kZWZhdWx0TmFtZXNwYWNlOwpA
QCAtMjg4LDggKzI4Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGNo
ZWNrRm9yT3JwaGFuZWRVbml0cygpOwogCi0gICAgICAgIHZvaWQgZGVsZXRlRm9udEZhY2VPbmx5
VmFsdWVzKCk7Ci0KICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEltYWdlVmFsdWUoQ1NTUGFyc2Vy
VmFsdWUqKSBjb25zdDsKICAgICAgICAgYm9vbCBwYXJzZUdlbmVyYXRlZEltYWdlKFJlZlB0cjxD
U1NWYWx1ZT4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAppbmRleCA0YTQ2ZmMyLi41NmVh
MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaApAQCAtMzIsNiArMzIsMTUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTUHJvcGVydHkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgorICAgIENTU1Byb3BlcnR5KCkKKyAgICAgICAgOiBtX2lkKDApCisg
ICAgICAgICwgbV9zaG9ydGhhbmRJRCgwKQorICAgICAgICAsIG1faW1wb3J0YW50KGZhbHNlKQor
ICAgICAgICAsIG1faW1wbGljaXQoZmFsc2UpCisgICAgICAgICwgbV92YWx1ZSgwKQorICAgIHsK
KyAgICB9CisKICAgICBDU1NQcm9wZXJ0eShpbnQgcHJvcElELCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgaW50IHNob3J0aGFuZElEID0gMCwgYm9v
bCBpbXBsaWNpdCA9IGZhbHNlKQogICAgICAgICA6IG1faWQocHJvcElEKQogICAgICAgICAsIG1f
c2hvcnRoYW5kSUQoc2hvcnRoYW5kSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHlDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
Q29udGFpbmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmE2YThi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFp
bmVyLmNwcApAQCAtMCwwICsxLDI0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQW5kcmFzIEJlY3NpIDxhYmVjc2lAd2Via2l0Lm9yZz4s
IFVuaXZlcnNpdHkgb2YgU3plZ2VkCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQ
cm9wZXJ0eUNvbnRhaW5lci5oIgorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorCit1
c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NTU1Byb3BlcnR5
Q29udGFpbmVyOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcigpCisgICAgOiBtX251bVZhbGlkUHJvcGVy
dGllcygwKQorICAgICwgbV91c2VkU2l6ZSgwKQorICAgICwgbV9oYXNGb250RmFjZU9ubHlQcm9w
ZXJ0aWVzKGZhbHNlKQoreworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpzd2VlcCgp
Cit7CisgICAgaWYgKG1fbnVtVmFsaWRQcm9wZXJ0aWVzID09IG1fdXNlZFNpemUpCisgICAgICAg
IHJldHVybjsKKworICAgIHVuc2lnbmVkIGRlbGV0ZWRQcm9wZXJ0aWVzID0gMDsKKworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3VzZWRTaXplOyArK2kpIHsKKyAgICAgICAgaWYgKCFt
X3Byb3BlcnRpZXNbaV0uaWQoKSkKKyAgICAgICAgICAgICsrZGVsZXRlZFByb3BlcnRpZXM7Cisg
ICAgICAgIGVsc2UgaWYgKGRlbGV0ZWRQcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBtX2lkVG9Q
b3NpdGlvbk1hcC5zZXQobV9wcm9wZXJ0aWVzW2ldLmlkKCksIGkgLSBkZWxldGVkUHJvcGVydGll
cyk7CisgICAgICAgICAgICBtX3Byb3BlcnRpZXNbaSAtIGRlbGV0ZWRQcm9wZXJ0aWVzXSA9IG1f
cHJvcGVydGllc1tpXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fdXNlZFNpemUgLT0gZGVs
ZXRlZFByb3BlcnRpZXM7CisKKyAgICBpZiAobV9pZFRvUG9zaXRpb25NYXAuc2l6ZSgpID4gc3Rh
dGljX2Nhc3Q8aW50PihtX3Byb3BlcnRpZXMuc2l6ZSgpICsga0dyb3dGYWN0b3IpKSB7CisgICAg
ICAgIG1faWRUb1Bvc2l0aW9uTWFwLmNsZWFyKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fdXNlZFNpemU7ICsraSkKKyAgICAgICAgICAgIG1faWRUb1Bvc2l0aW9uTWFw
LmFkZChtX3Byb3BlcnRpZXNbaV0uaWQoKSwgaSk7CisgICAgfQorCisgICAgQVNTRVJUKG1fbnVt
VmFsaWRQcm9wZXJ0aWVzID09IG1fdXNlZFNpemUpOworfQorCitpbmxpbmUgdm9pZCBDU1NQcm9w
ZXJ0eUNvbnRhaW5lcjo6Z3Jvd0lmTmVlZGVkKCkKK3sKKyAgICBpZiAobV91c2VkU2l6ZSA+IG1f
cHJvcGVydGllcy5zaXplKCkpCisgICAgICAgIHN3ZWVwKCk7CisKKyAgICBpZiAobV91c2VkU2l6
ZSA9PSBtX3Byb3BlcnRpZXMuc2l6ZSgpKQorICAgICAgICBtX3Byb3BlcnRpZXMuYWxsb2MoKTsK
K30KKworaW5saW5lIHVuc2lnbmVkIENTU1Byb3BlcnR5Q29udGFpbmVyOjppbnRlcm5hbFBvc2l0
aW9uKGludCBwcm9wZXJ0eUlEKQoreworICAgIEFTU0VSVChwcm9wZXJ0eUlEKTsKKworICAgIHVu
c2lnbmVkIHBvc2l0aW9uID0gbV9pZFRvUG9zaXRpb25NYXAuZ2V0KHByb3BlcnR5SUQpOworCisg
ICAgaWYgKHBvc2l0aW9uID09IGtJbnZhbGlkUG9zaXRpb24pCisgICAgICAgIHJldHVybiBrSW52
YWxpZFBvc2l0aW9uOworCisgICAgQVNTRVJUKHBvc2l0aW9uIDwgbV91c2VkU2l6ZSk7CisKKyAg
ICBpZiAoIW1fcHJvcGVydGllc1twb3NpdGlvbl0uaWQoKSkKKyAgICAgICAgcmV0dXJuIGtJbnZh
bGlkUG9zaXRpb247CisKKyAgICByZXR1cm4gcG9zaXRpb247Cit9CisKK2lubGluZSB2b2lkIENT
U1Byb3BlcnR5Q29udGFpbmVyOjppbnZhbGlkYXRlQnlQb3NpdGlvbih1bnNpZ25lZCBwb3NpdGlv
bikKK3sKKyAgICBBU1NFUlQocG9zaXRpb24gPj0gbV91c2VkU2l6ZSk7CisKKyAgICAtLW1fbnVt
VmFsaWRQcm9wZXJ0aWVzOworCisgICAgbV9pZFRvUG9zaXRpb25NYXAuc2V0KG1fcHJvcGVydGll
c1twb3NpdGlvbl0uaWQoKSwga0ludmFsaWRQb3NpdGlvbik7CisgICAgbV9wcm9wZXJ0aWVzW3Bv
c2l0aW9uXS5tX2lkID0gMDsKK30KKworaW5saW5lIHZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6
OmludmFsaWRhdGVCeUlkKGludCBwcm9wZXJ0eUlEKQoreworICAgIEFTU0VSVChwcm9wZXJ0eUlE
KTsKKworICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gaW50ZXJuYWxQb3NpdGlvbihwcm9wZXJ0eUlE
KTsKKworICAgIGlmIChwb3NpdGlvbiA9PSBrSW52YWxpZFBvc2l0aW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBpbnZhbGlkYXRlQnlQb3NpdGlvbihwb3NpdGlvbik7Cit9CisKK2NvbnN0IENT
U1Byb3BlcnR5JiBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Zmlyc3QoKQoreworICAgIEFTU0VSVCgh
bV9wcm9wZXJ0aWVzLmlzRW1wdHkoKSAmJiBtX251bVZhbGlkUHJvcGVydGllcyk7CisKKyAgICBp
ZiAoIW1fcHJvcGVydGllc1swXS5pZCgpKQorICAgICAgICBzd2VlcCgpOworCisgICAgQVNTRVJU
KG1fcHJvcGVydGllc1swXS5pZCgpKTsKKworICAgIHJldHVybiBtX3Byb3BlcnRpZXNbMF07Cit9
CisKK2NvbnN0IENTU1Byb3BlcnR5JiBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6bGFzdCgpCit7Cisg
ICAgQVNTRVJUKCFtX3Byb3BlcnRpZXMuaXNFbXB0eSgpICYmIG1fbnVtVmFsaWRQcm9wZXJ0aWVz
KTsKKworICAgIGlmICghbV9wcm9wZXJ0aWVzW21fdXNlZFNpemUgLSAxXS5pZCgpKQorICAgICAg
ICBzd2VlcCgpOworCisgICAgQVNTRVJUKG1fdXNlZFNpemUgJiYgbV9wcm9wZXJ0aWVzW21fdXNl
ZFNpemUgLSAxXS5pZCgpKTsKKworICAgIHJldHVybiBtX3Byb3BlcnRpZXNbbV91c2VkU2l6ZSAt
IDFdOworfQorCitjb25zdCBDU1NQcm9wZXJ0eSYgQ1NTUHJvcGVydHlDb250YWluZXI6Omxhc3RC
dXRPbmUoKQoreworICAgIEFTU0VSVCghbV9wcm9wZXJ0aWVzLmlzRW1wdHkoKSAmJiBtX251bVZh
bGlkUHJvcGVydGllcyA+PSAyKTsKKworICAgIGlmICghbV9wcm9wZXJ0aWVzW21fdXNlZFNpemUg
LSAxXS5pZCgpIHx8ICFtX3Byb3BlcnRpZXNbbV91c2VkU2l6ZSAtIDJdLmlkKCkpCisgICAgICAg
IHN3ZWVwKCk7CisKKyAgICBBU1NFUlQobV91c2VkU2l6ZSA+PSAyICYmIG1fcHJvcGVydGllc1tt
X3VzZWRTaXplIC0gMl0uaWQoKSk7CisKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzW21fdXNlZFNp
emUgLSAyXTsKK30KKworQ1NTUHJvcGVydHkmIENTU1Byb3BlcnR5Q29udGFpbmVyOjpvcGVyYXRv
cltdKHNpemVfdCBpbmRleCkKK3sKKyAgICBzd2VlcCgpOworICAgIEFTU0VSVChpbmRleCA8IG1f
dXNlZFNpemUpOworICAgIHJldHVybiBtX3Byb3BlcnRpZXNbaW5kZXhdOworfQorCitib29sIENT
U1Byb3BlcnR5Q29udGFpbmVyOjpjb250YWluc1Byb3BlcnR5KGludCBwcm9wZXJ0eUlEKQorewor
ICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gaW50ZXJuYWxQb3NpdGlvbihwcm9wZXJ0eUlEKTsKKwor
ICAgIHJldHVybiBwb3NpdGlvbiAhPSBrSW52YWxpZFBvc2l0aW9uOworfQorCit2b2lkIENTU1By
b3BlcnR5Q29udGFpbmVyOjpyZW1vdmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKK3sKKyAgICBp
bnZhbGlkYXRlQnlJZChwcm9wZXJ0eUlEKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5l
cjo6cmVtb3ZlUHJvcGVydGllcyhjb25zdCBpbnQqIGlkTGlzdCwgdW5zaWduZWQgbGVuZ3RoKQor
eworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgaW52
YWxpZGF0ZUJ5SWQoaWRMaXN0W2ldKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6
YWRkUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBi
b29sIGltcG9ydGFudCwgaW50IHNob3J0aGFuZElELCBib29sIGltcGxpY2l0KQoreworICAgIGdy
b3dJZk5lZWRlZCgpOworCisgICAgdW5zaWduZWQgb2xkUG9zaXRpb24gPSBpbnRlcm5hbFBvc2l0
aW9uKHByb3BlcnR5SUQpOworCisgICAgaWYgKG9sZFBvc2l0aW9uICE9IGtJbnZhbGlkUG9zaXRp
b24pIHsKKyAgICAgICAgaWYgKG1fcHJvcGVydGllc1tvbGRQb3NpdGlvbl0uaWQoKSAmJiBtX3By
b3BlcnRpZXNbb2xkUG9zaXRpb25dLmlzSW1wb3J0YW50KCkgJiYgIWltcG9ydGFudCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpbnZhbGlkYXRlQnlQb3NpdGlvbihvbGRQb3NpdGlv
bik7CisgICAgfQorCisgICAgbV9wcm9wZXJ0aWVzW21fdXNlZFNpemVdID0gQ1NTUHJvcGVydHko
cHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgc2hvcnRoYW5kSUQsIGltcGxpY2l0KTsKKyAg
ICBtX2lkVG9Qb3NpdGlvbk1hcC5zZXQocHJvcGVydHlJRCwgbV91c2VkU2l6ZSk7CisgICAgKytt
X251bVZhbGlkUHJvcGVydGllczsKKyAgICArK21fdXNlZFNpemU7Cit9CisKK3ZvaWQgQ1NTUHJv
cGVydHlDb250YWluZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSkKK3sKKyAgICBp
ZiAoIW51bSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG51bSA+IDApOworICAgIEFT
U0VSVChtX251bVZhbGlkUHJvcGVydGllcyA+PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtKSk7
CisKKyAgICBpbnQgZGVsZXRlZFByb3BlcnRpZXMgPSAwOworICAgIGludCBwb3NpdGlvbiA9IG1f
dXNlZFNpemU7CisgICAgd2hpbGUgKGRlbGV0ZWRQcm9wZXJ0aWVzICE9IG51bSAmJiAtLXBvc2l0
aW9uID49IDApIHsKKyAgICAgICAgaWYgKG1fcHJvcGVydGllc1twb3NpdGlvbl0uaWQoKSkgewor
ICAgICAgICAgICAgaW52YWxpZGF0ZUJ5UG9zaXRpb24ocG9zaXRpb24pOworICAgICAgICAgICAg
KytkZWxldGVkUHJvcGVydGllczsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBDU1NQcm9w
ZXJ0eUNvbnRhaW5lcjo6ZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygpCit7CisgICAgQVNT
RVJUKG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyk7CisKKyAgICBpbnQgaWRzWzNdID0ge0NT
U1Byb3BlcnR5Rm9udFdlaWdodCwgQ1NTUHJvcGVydHlGb250U3R5bGUsIENTU1Byb3BlcnR5Rm9u
dFZhcmlhbnR9OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YoaWRzKTsgKytpKSB7
CisgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gaW50ZXJuYWxQb3NpdGlvbihpZHNbaV0pOwor
CisgICAgICAgIGlmIChwb3NpdGlvbiA9PSBrSW52YWxpZFBvc2l0aW9uKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgaWYgKG1fcHJvcGVydGllc1twb3NpdGlvbl0udmFsdWUoKS0+
aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgICAgIGludmFsaWRhdGVCeVBvc2l0aW9uKHBvc2l0aW9u
KTsKKyAgICB9CisgICAgbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzID0gZmFsc2U7Cit9CisK
K3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OmNsZWFyUHJvcGVydGllcygpCit7CisgICAgbV9o
YXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzID0gZmFsc2U7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV91c2VkU2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChtX3Byb3BlcnRpZXNbaV0u
aWQoKSkKKyAgICAgICAgICAgIGludmFsaWRhdGVCeVBvc2l0aW9uKGkpOworICAgIH0KKworICAg
IG1faWRUb1Bvc2l0aW9uTWFwLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYzdjMGVjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFuZHJhcyBC
ZWNzaSA8YWJlY3NpQHdlYmtpdC5vcmc+LCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENT
U1Byb3BlcnR5Q29udGFpbmVyX2gKKyNkZWZpbmUgQ1NTUHJvcGVydHlDb250YWluZXJfaAorCisj
aW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3
dGYvU2VnbWVudGVkVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgdW5z
aWduZWQga0dyb3dGYWN0b3IgPSAzMjsKK2NvbnN0IHVuc2lnbmVkIGtJbnZhbGlkUG9zaXRpb24g
PSBIYXNoVHJhaXRzPHVuc2lnbmVkPjo6ZW1wdHlWYWx1ZSgpOworCitjbGFzcyBDU1NQcm9wZXJ0
eUNvbnRhaW5lciB7CitwdWJsaWM6CisgICAgQ1NTUHJvcGVydHlDb250YWluZXIoKTsKKyAgICBj
b25zdCBDU1NQcm9wZXJ0eSYgZmlyc3QoKTsKKyAgICBjb25zdCBDU1NQcm9wZXJ0eSYgbGFzdCgp
OworICAgIGNvbnN0IENTU1Byb3BlcnR5JiBsYXN0QnV0T25lKCk7CisKKyAgICBpbmxpbmUgdW5z
aWduZWQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX251bVZhbGlkUHJvcGVydGllczsgfQorICAg
IGlubGluZSBib29sIGhhc0ZvbnRGYWNlT25seSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRm9udEZh
Y2VPbmx5UHJvcGVydGllczsgfQorICAgIGlubGluZSB2b2lkIHNldEZvbnRGYWNlT25seSgpIHsg
bV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzID0gdHJ1ZTsgfQorCisgICAgQ1NTUHJvcGVydHkm
IG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KTsKKworICAgIGJvb2wgY29udGFpbnNQcm9wZXJ0eShp
bnQgcHJvcGVydHlJRCk7CisgICAgdm9pZCByZW1vdmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCk7
CisgICAgdm9pZCByZW1vdmVQcm9wZXJ0aWVzKGNvbnN0IGludCogaWRMaXN0LCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIHZvaWQgYWRkUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCwgaW50IHNob3J0aGFuZElEID0gMCwgYm9vbCBpbXBs
aWNpdCA9IGZhbHNlKTsKKyAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSk7
CisgICAgdm9pZCBkZWxldGVGb250RmFjZU9ubHlQcm9wZXJ0aWVzKCk7CisgICAgdm9pZCBjbGVh
clByb3BlcnRpZXMoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHN3ZWVwKCk7CisgICAgaW5saW5l
IHZvaWQgZ3Jvd0lmTmVlZGVkKCk7CisgICAgaW5saW5lIHVuc2lnbmVkIGludGVybmFsUG9zaXRp
b24oaW50IHByb3BlcnR5SUQpOworICAgIGlubGluZSB2b2lkIGludmFsaWRhdGVCeVBvc2l0aW9u
KHVuc2lnbmVkIHBvc2l0aW9uKTsKKyAgICBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlQnlJZChpbnQg
cHJvcGVydHlJRCk7CisKKyAgICB1bnNpZ25lZCBtX251bVZhbGlkUHJvcGVydGllczsKKyAgICB1
bnNpZ25lZCBtX3VzZWRTaXplOworCisgICAgYm9vbCBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRp
ZXM7CisKKyAgICBTZWdtZW50ZWRWZWN0b3I8Q1NTUHJvcGVydHksIGtHcm93RmFjdG9yPiBtX3By
b3BlcnRpZXM7CisgICAgSGFzaE1hcDxpbnQsIHVuc2lnbmVkPiBtX2lkVG9Qb3NpdGlvbk1hcDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1Byb3BlcnR5Q29u
dGFpbmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKaW5kZXggZjNiNWFjMy4uODAy
YmZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJDU1NJbml0aWFsVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNp
bmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5Q29udGFpbmVyLmgi
CiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1F1aXJrUHJpbWl0
aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCkBAIC0yODYsNyArMjg3
LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBv
cnRhbnQpCiAgICAgICAgICAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKDEpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1f
cGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMgLSAxXS0+dmFsdWUoKTsKKyAg
ICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgp
OwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtlck1pZCwgdmFsdWUsIGltcG9y
dGFudCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TWFya2VyRW5kLCB2YWx1ZSwg
aW1wb3J0YW50KTsKICAgICAgICAgbV9pbXBsaWNpdFNob3J0aGFuZCA9IGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAppbmRleCA3NzBhNjg2Li40ZmUxODUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcApAQCAtMjk5LDgg
KzI5OSw4IEBAIHZvaWQgU1ZHRm9udEZhY2VFbGVtZW50OjpyZWJ1aWxkRm9udEZhY2UoKQogCiAg
ICAgLy8gUGFyc2UgaW4tbWVtb3J5IENTUyBydWxlcwogICAgIENTU1Byb3BlcnR5IHNyY1Byb3Bl
cnR5KENTU1Byb3BlcnR5U3JjLCBsaXN0KTsKLSAgICBjb25zdCBDU1NQcm9wZXJ0eSogc3JjUHJv
cGVydHlSZWYgPSAmc3JjUHJvcGVydHk7Ci0gICAgbV9zdHlsZURlY2xhcmF0aW9uLT5hZGRQYXJz
ZWRQcm9wZXJ0aWVzKCZzcmNQcm9wZXJ0eVJlZiwgMSk7CisgICAgY29uc3QgQ1NTUHJvcGVydHkm
IHNyY1Byb3BlcnR5UmVmID0gc3JjUHJvcGVydHk7CisgICAgbV9zdHlsZURlY2xhcmF0aW9uLT5h
ZGRQYXJzZWRQcm9wZXJ0eShzcmNQcm9wZXJ0eVJlZik7CiAKICAgICBpZiAoZGVzY3JpYmVzUGFy
ZW50Rm9udCkgeyAgICAKICAgICAgICAgLy8gVHJhdmVyc2UgcGFyc2VkIENTUyB2YWx1ZXMgYW5k
IGFzc29jaWF0ZSBDU1NGb250RmFjZVNyY1ZhbHVlIGVsZW1lbnRzIHdpdGggb3Vyc2VsdmVzLgot
LSAKMS43LjYKCg==
</data>
<flag name="commit-queue"
          id="94404"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99842</attachid>
            <date>2011-07-06 09:12:36 -0700</date>
            <delta_ts>2011-07-07 09:18:00 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001-CSSParser-should-use-custom-vector-like-class-for-ma.patch</filename>
            <type>text/plain</type>
            <size>50538</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSBlYmE1NDgxNTZlODQ0MmVhNmIwNWI3MDZiMzcxOTJhOTY3NzFhMWJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPgpEYXRl
OiBXZWQsIDYgSnVsIDIwMTEgMTc6MTc6MTIgKzAyMDAKU3ViamVjdDogW1BBVENIXSBDU1NQYXJz
ZXIgc2hvdWxkIHVzZSBjdXN0b20gdmVjdG9yLWxpa2UgY2xhc3MgZm9yIG1hbmFnaW5nCiBwcm9w
ZXJ0aWVzCgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgIHwgICAgOSArCiAuLi4vSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgODAgKysrKysrKwogLi4uL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9TZWdtZW50ZWRWZWN0b3IuaCAgICAgICAgfCAgICA0ICsKIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8gICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qICAgICAgIHwgICAgOCArCiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICB8ICAgIDgg
KwogU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSAgICAgICAgICAgICAgICAgICAgfCAg
ICA4ICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3Bw
ICB8ICAgMzUgKystCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24uaCAgICB8ICAgIDkgKy0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwICAgICAg
ICAgICAgICAgICAgIHwgIDEyMSArKysrLS0tLS0tLQogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICstCiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHkuaCAgICAgICAgICAgICAgICAgICB8ICAgIDkgKwogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCAgICAgICAgfCAgMjQxICsrKysrKysrKysrKysr
KysrKysrCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCAgICAgICAg
ICB8ICAgNzQgKysrKysrCiBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcCAgICAg
ICAgICAgICAgICB8ICAgIDMgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1l
bnQuY3BwICAgICAgICAgIHwgICAgNCArLQogMjAgZmlsZXMgY2hhbmdlZCwgNTIyIGluc2VydGlv
bnMoKyksIDExMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvU2VnbWVudGVkVmVjdG9yLmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmgKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1MGUzYWFkLi5mNzc5ZWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0wNy0wNSAgQW5kcmFzIEJlY3NpICA8
YWJlY3NpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ1NTUGFyc2VyIHNob3VsZCB1c2UgY3VzdG9t
ICJ2ZWN0b3ItbGlrZSIgY2xhc3MgZm9yIG1hbmFnaW5nIHByb3BlcnRpZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDE3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBTZXQgdGhlIHByaXZhdGUgYXR0cmlidXRlIGZvciBTZWdt
ZW50ZWRWZWN0b3IuaAorCiAyMDExLTA3LTA2ICBab2x0YW4gSGVyY3plZyAgPHpoZXJjemVnQGlu
Zi51LXN6ZWdlZC5odT4KIAogICAgICAgICBDYWxscyBvbiAzMiBiaXQgbWFjaGluZXMgYXJlIGZh
aWxlZCBhZnRlciByOTA0MjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDVmN2Rh
ZC4uNGZhMDEyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM2Niw3ICszNjYs
NyBAQAogCQk5NjlBMDcyMzBFRDFDRTMzMDBGMUY2ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzIxMEVE
MUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oICovOyB9OwogCQk5NjlBMDcyQTBF
RDFDRTY5MDBGMUY2ODEgLyogTGFiZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk2OUEwNzI3MEVEMUNFNjkwMEYxRjY4MSAvKiBMYWJlbC5oICovOyB9
OwogCQk5NjlBMDcyQjBFRDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3MjgwRUQxQ0U2OTAwRjFG
NjgxIC8qIFJlZ2lzdGVySUQuaCAqLzsgfTsKLQkJOTY5QTA3MkMwRUQxQ0U2OTAwRjFGNjgxIC8q
IFNlZ21lbnRlZFZlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTY5QTA3MjkwRUQxQ0U2OTAwRjFGNjgxIC8qIFNlZ21lbnRlZFZlY3Rvci5oICov
OyB9OworCQk5NjlBMDcyQzBFRDFDRTY5MDBGMUY2ODEgLyogU2VnbWVudGVkVmVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDcyOTBFRDFD
RTY5MDBGMUY2ODEgLyogU2VnbWVudGVkVmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTY5QTA3OTYwRUQxRDNBRTAwRjFGNjgxIC8qIENv
ZGVCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NjlBMDc5MDBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmNwcCAqLzsgfTsKIAkJOTY5
QTA3OTcwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3OTEwRUQxRDNBRTAwRjFGNjgxIC8qIENv
ZGVCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTk2OUEw
Nzk4MEVEMUQzQUUwMEYxRjY4MSAvKiBFdmFsQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDc5MjBFRDFEM0FFMDBGMUY2ODEgLyog
RXZhbENvZGVDYWNoZS5oICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxMDc4MzVkLi5j
MTI0M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDUzLDYgKzQ1Myw3IEBAIFNFVChXZWJD
b3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCiAgICAgY3NzL0NTU1By
aW1pdGl2ZVZhbHVlQ2FjaGUuY3BwCiAgICAgY3NzL0NTU1Byb3BlcnR5LmNwcAorICAgIGNzcy9D
U1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAKICAgICBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAK
ICAgICBjc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcAogICAgIGNzcy9DU1NSZWZsZWN0VmFs
dWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNDk4MTE5OS4uYzk5N2VhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDgzIEBACisyMDExLTA3LTA1ICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4K
KworICAgICAgICBDU1NQYXJzZXIgc2hvdWxkIHVzZSBjdXN0b20gInZlY3Rvci1saWtlIiBjbGFz
cyBmb3IgbWFuYWdpbmcgcHJvcGVydGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgQ1NTUHJvcGVydHlDb250YWluZXIgd2hpY2ggb24g
cmVtb3ZhbCBtYXJrcyBlbnRyaWVzIGFzIGVtcHR5CisgICAgICAgIGFuZCBvbmx5IHN3ZWVwcyB0
aGVtIHdoZW4gdGhlIGludGVybmFsIHNlZ21lbnRlZCB2ZWN0b3IgZ3Jvd3MgdG9vIGJpZy4KKyAg
ICAgICAgQWxzbyB1c2UgYW4gaW50ZXJuYWwgSGFzaE1hcCB0byBiZSBhYmxlIHRvIGVmZmljaWVu
dGx5IGZpbmQgZW50cmllcyBieSBJRAorICAgICAgICBhbmQgYXV0b21hdGljYWxseSBkaXNjYXJk
IGR1cGxpY2F0ZSBwcm9wZXJ0aWVzLgorICAgICAgICBUaGlzIGlzIG5lZWRlZCB0byBiZSBhYmxl
IHRvIHNpbXBsaWZ5IGFuZCBzcGVlZCB1cCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiwKKyAg
ICAgICAgdG8gdXNlIHRoaXMgY29udGFpbmVyIGluc3RlYWQgb2YgbWFpbnRhaW5pbmcgaXRzIG93
biBmb3JrIG9mIGluZnJhc3RydWN0dXJlCisgICAgICAgIGZvciBtYW5hZ2luZyBwYXJzZWQgcHJv
cGVydGllcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVh
ZGVycy93dGYvU2VnbWVudGVkVmVjdG9yLmg6IEFkZGVkIG1pc3NpbmcgZm9yd2FyZGluZyBoZWFk
ZXIuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6YWRkUGFyc2VkUHJvcGVydGllcyk6CisgICAg
ICAgICogY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Q1NTUGFyc2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6fkNTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmFkZFByb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cm9sbGJhY2tMYXN0UHJvcGVydGllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmNsZWFyUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlNFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlRm9udFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGb250VmFy
aWFudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udFdlaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6c3RhcnREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjplbmREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZVJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6aGFzUHJvcGVydGllcyk6CisgICAgICAg
ICogY3NzL0NTU1Byb3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eTo6Q1NT
UHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OkNTU1Byb3BlcnR5Q29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpzd2VlcCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Z3Jvd0lmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjppbnRlcm5hbFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjppbnZhbGlkYXRlQnlQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW52YWxp
ZGF0ZUJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmZpcnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0QnV0T25lKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpjb250YWluc1Byb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3ZlUHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6YWRkUHJvcGVydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmRlbGV0ZUZvbnRGYWNl
T25seVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6
OmNsZWFyUHJvcGVydGllcyk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpoYXNGb250RmFjZU9ubHkp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnNldEZvbnRGYWNlT25s
eSk6CisgICAgICAgICogY3NzL1NWR0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VFbGVtZW50OjpyZWJ1aWxkRm9u
dEZhY2UpOgorCiAyMDExLTA3LTA2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgZHJhZyduJ2Ryb3AgaW4gdGhl
IGVsZW1lbnRzIHBhbmVsIGZvciByZW9yZGVyaW5nIG5vZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1NlZ21lbnRlZFZlY3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhYTM5YTQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvU2VnbWVudGVkVmVjdG9yLmgKQEAg
LTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1NlZ21lbnRlZFZlY3Rvcl9oCisjZGVm
aW5lIFdlYkNvcmVfRldEX1NlZ21lbnRlZFZlY3Rvcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU2VnbWVudGVkVmVjdG9yLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IDBhYzVhNWEuLjY1OWFkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtOTcyLDYgKzk3Miw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmggXAorCVNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydHlMb25naGFuZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxv
bmdoYW5kLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA5ZGE4MTUxLi45YTZjNWZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC00OTEsNiArNDkxLDcgQEAKICAgICAgICAgICAgICdjc3MvQ1NTUGFyc2VyVmFsdWVzLmgn
LAogICAgICAgICAgICAgJ2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oJywKICAgICAgICAgICAgICdj
c3MvQ1NTUHJvcGVydHkuaCcsCisgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVy
LmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCcsCiAgICAgICAg
ICAgICAnY3NzL0NTU1JlZmxlY3RWYWx1ZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUmVmbGVj
dGlvbkRpcmVjdGlvbi5oJywKQEAgLTIzMzMsNiArMjMzNCw3IEBACiAgICAgICAgICAgICAnY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlTWFwcGluZ3MuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5LmNwcCcsCisg
ICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCcsCiAgICAgICAgICAgICAn
Y3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVy
dHlMb25naGFuZC5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNw
cCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCmluZGV4IDQ1NTA0YjEuLjZiNzRmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBA
IC00MTAsNiArNDEwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmNwcCBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUuY3BwIFwKICAgICBjc3MvQ1NT
UHJvcGVydHkuY3BwIFwKKyAgICBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwIFwKICAgICBj
c3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAgXAogICAgIGNzcy9DU1NQcm9wZXJ0eVNvdXJjZURh
dGEuY3BwIFwKICAgICBjc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcCBcCkBAIC0xMzk4LDYgKzEzOTks
NyBAQCBIRUFERVJTICs9IFwKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBcCiAgICAgY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUuaCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5LmggXAorICAg
IGNzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oIFwKICAgICBjc3MvQ1NTUHJvcGVydHlMb25naGFu
ZC5oIFwKICAgICBjc3MvQ1NTUmVmbGVjdFZhbHVlLmggXAogICAgIGNzcy9DU1NSdWxlLmggXApA
QCAtMTQxMiw2ICsxNDE0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQu
aCBcCiAgICAgY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBcCiAgICAgY3NzL0NTU1VuaWNv
ZGVSYW5nZVZhbHVlLmggXAorICAgIGNzcy9DU1NWYWx1ZS5oIFwKICAgICBjc3MvQ1NTVmFsdWVM
aXN0LmggXAogICAgIGNzcy9Gb250RmFtaWx5VmFsdWUuaCBcCiAgICAgY3NzL0ZvbnRWYWx1ZS5o
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXgg
MTNiMDc1OS4uNzU1YjRmYiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKQEAgLTMyNjE4LDYgKzMyNjE4LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgog
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQcm9wZXJ0eUNvbnRhaW5lci5j
cHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNz
c1xDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTUHJvcGVydHlMb25naGFuZC5jcHAiCiAJCQkJPgog
CQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDZiYzVjMWMuLjk0MGMwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQzMSw2ICs0MzEsOCBAQAog
CQkxQUIxQUU3QTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vyc29yLnBuZyBpbiBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMUFFNzgwQzA1MUZERTAw
MTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgKi87IH07CiAJCTFBQjFBRTdCMEMwNTFGREUwMDEz
OUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCMUFFNzkwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJz
b3IucG5nICovOyB9OwogCQkxQUIzM0RBNTEyNTUxRTMyMDAyNDQ1N0EgLyogSU9LaXQuZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFC
MzNEQTQxMjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29yayAqLzsgfTsKKwkJMUFCNDRB
MEMxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjQ0QTBCMTM2NzJDRkYwMDA4
Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgKi87IH07CisJCTFBQjQ0QTBFMTM2NzJE
MjAwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCNDRBMEQxMzY3MkQyMDAwMDg3NzdFIC8qIENT
U1Byb3BlcnR5Q29udGFpbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMUFCN0ZDNjgwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdG
QzQ3MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5jcHAgKi87IH07CiAJCTFBQjdG
QzY5MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0ZDNDgwQThCOTJFQzAwRDlEMzdCIC8q
IFhQYXRoRXZhbHVhdG9yLmggKi87IH07CiAJCTFBQjdGQzZCMEE4QjkyRUMwMEQ5RDM3QiAvKiBY
UGF0aEV4cHJlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFCN0ZDNEEwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5jcHAg
Ki87IH07CkBAIC02ODQxLDYgKzY4NDMsOCBAQAogCQkxQUIxQUU3ODBDMDUxRkRFMDAxMzlGNEYg
Lyogem9vbUluQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IHpvb21JbkN1cnNvci5wbmc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjFBRTc5MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0
Q3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IGltYWdlLnBuZzsgcGF0aCA9IHpvb21PdXRDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQUIzM0RBNDEyNTUxRTMyMDAyNDQ1N0EgLyogSU9LaXQuZnJhbWV3b3Jr
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBl
ci5mcmFtZXdvcms7IG5hbWUgPSBJT0tpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7
IH07CisJCTFBQjQ0QTBCMTM2NzJDRkYwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NQcm9wZXJ0eUNvbnRh
aW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQjQ0QTBEMTM2NzJEMjAw
MDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDU1NQcm9wZXJ0eUNvbnRhaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQUI3RkM0NzBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhQYXRoRXZhbHVhdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0ZDNDgwQThCOTJFQzAwRDlEMzdCIC8q
IFhQYXRoRXZhbHVhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUGF0
aEV2YWx1YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI3RkM0OTBBOEI5
MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBYUGF0aEV2YWx1YXRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTA4
Niw2ICsxOTA5MCw4IEBACiAJCUY1MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAvKiBjc3MgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTFBQjQ0QTBEMTM2NzJE
MjAwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5oICovLAorCQkJCTFBQjQ0QTBCMTM2
NzJDRkYwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgKi8sCiAJCQkJOTNDQTRD
OUMwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V0b2tlbml6ZXIgKi8sCiAJCQkJQTgwRTZDREEwQTE5
ODlDQTAwN0ZCOEM1IC8qIENvdW50ZXIuaCAqLywKIAkJCQk5MzA3MDVDNzA5RTBDOTVGMDBCMTdG
RTQgLyogQ291bnRlci5pZGwgKi8sCkBAIC0yMzA4OCw2ICsyMzA5NCw3IEBACiAJCQkJMDg2Mzk1
MTYxM0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDMxQTJGOUMxM0I2RjJCMDAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxO
dW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QUJCNzg3MTNCOTA0QkMwMEYxOTdFMyAvKiBM
aW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBQjQ0QTBFMTM2
NzJEMjAwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yNTg1NSw2ICsyNTg2Miw3IEBACiAJCQkJNDMxQTMwMjExM0I4OURDQzAwNzc5MUU0IC8qIFNW
R0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzFB
MzA4ODEzQjhGOTc4MDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQzRjZGRDk2MTNCQ0QwQjEwMDIyNDA1MiAvKiBTVkdBbmltYXRlZEludGVnZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUFCNDRBMEMxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1By
b3BlcnR5Q29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueSBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkK
aW5kZXggOTBiNWUxNC4uOWUzZmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0dyYW1tYXIueQorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CkBAIC0zMjMs
OSArMzIzLDkgQEAgd2Via2l0X3ZhbHVlOgogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNf
Y2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICBpZiAoJDQpIHsKICAgICAgICAgICAg
IHAtPm1fdmFsdWVMaXN0ID0gcC0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KTsKLSAgICAgICAg
ICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzOwor
ICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwLT5tX3BhcnNlZFByb3BlcnRp
ZXMuY291bnQoKTsKICAgICAgICAgICAgIGlmICghcC0+cGFyc2VWYWx1ZShwLT5tX2lkLCBwLT5t
X2ltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgcC0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhw
LT5tX251bVBhcnNlZFByb3BlcnRpZXMgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAg
ICAgICAgICBwLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKHAtPm1fcGFyc2VkUHJvcGVydGllcy5j
b3VudCgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CiAgICAgICAgICAgICBkZWxldGUgcC0+bV92
YWx1ZUxpc3Q7CiAgICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IDA7CiAgICAgICAgIH0KQEAg
LTEyNzMsMTAgKzEyNzMsMTAgQEAgZGVjbGFyYXRpb246CiAgICAgICAgIGJvb2wgaXNQcm9wZXJ0
eVBhcnNlZCA9IGZhbHNlOwogICAgICAgICBpZiAoJDEgJiYgJDQpIHsKICAgICAgICAgICAgIHAt
Pm1fdmFsdWVMaXN0ID0gcC0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KTsKLSAgICAgICAgICAg
IGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzOworICAg
ICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwLT5tX3BhcnNlZFByb3BlcnRpZXMu
Y291bnQoKTsKICAgICAgICAgICAgICQkID0gcC0+cGFyc2VWYWx1ZSgkMSwgJDUpOwogICAgICAg
ICAgICAgaWYgKCEkJCkKLSAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVz
KHAtPm1fbnVtUGFyc2VkUHJvcGVydGllcyAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOworICAgICAg
ICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9wYXJzZWRQcm9wZXJ0aWVz
LmNvdW50KCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBpc1Byb3BlcnR5UGFyc2VkID0gdHJ1ZTsKICAgICAgICAgICAgIGRlbGV0ZSBw
LT5tX3ZhbHVlTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24uY3BwCmluZGV4IDAxN2RjNjkuLmM3YWVjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNzMsNyArNzMs
NyBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24oQ1NTUnVsZSogcGFyZW50LCBjb25zdCBWZQogICAgIC8vIEZJWE1FOiBUaGlzIGFsbG93cyBk
dXBsaWNhdGUgcHJvcGVydGllcy4KIH0KIAotQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCwgY29uc3QgQ1NTUHJvcGVy
dHkqIGNvbnN0ICogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMpCitDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50
LCBDU1NQcm9wZXJ0eUNvbnRhaW5lciYgcHJvcGVydGllcykKICAgICA6IENTU1N0eWxlRGVjbGFy
YXRpb24ocGFyZW50KQogICAgICwgbV9ub2RlKDApCiAgICAgLCBtX3N0cmljdFBhcnNpbmcoIXBh
cmVudCB8fCBwYXJlbnQtPnVzZVN0cmljdFBhcnNpbmcoKSkKQEAgLTgxLDE5ICs4MSwyMyBAQCBD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NT
UnVsZSogcGFyZW50LCBjb25zdCBDUwogICAgICwgbV9pdGVyYXRvckNvdW50KDApCiAjZW5kaWYK
IHsKKyAgICB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5jb3VudCgpOworCisg
ICAgaWYgKCFudW1Qcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm47CisKICAgICBtX3Byb3BlcnRp
ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1Qcm9wZXJ0aWVzKTsKICAgICBIYXNoTWFwPGlu
dCwgYm9vbD4gY2FuZGlkYXRlczsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVByb3BlcnRp
ZXM7ICsraSkgewotICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eSAqcHJvcGVydHkgPSBwcm9wZXJ0
aWVzW2ldOwotICAgICAgICBBU1NFUlQocHJvcGVydHkpOwotICAgICAgICBib29sIGltcG9ydGFu
dCA9IHByb3BlcnR5LT5pc0ltcG9ydGFudCgpOwotICAgICAgICBpZiAoY2FuZGlkYXRlcy5jb250
YWlucyhwcm9wZXJ0eS0+aWQoKSkpIHsKLSAgICAgICAgICAgIGlmICghaW1wb3J0YW50ICYmIGNh
bmRpZGF0ZXMuZ2V0KHByb3BlcnR5LT5pZCgpKSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtUHJvcGVydGllczsgKytpKSB7CisgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5JiBwcm9w
ZXJ0eSA9IHByb3BlcnRpZXNbaV07CisgICAgICAgIGJvb2wgaW1wb3J0YW50ID0gcHJvcGVydHku
aXNJbXBvcnRhbnQoKTsKKyAgICAgICAgaWYgKGNhbmRpZGF0ZXMuY29udGFpbnMocHJvcGVydHku
aWQoKSkpIHsKKyAgICAgICAgICAgIGlmICghaW1wb3J0YW50ICYmIGNhbmRpZGF0ZXMuZ2V0KHBy
b3BlcnR5LmlkKCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcmVt
b3ZlUHJvcGVydHkocHJvcGVydHktPmlkKCksIGZhbHNlKTsKKyAgICAgICAgICAgIHJlbW92ZVBy
b3BlcnR5KHByb3BlcnR5LmlkKCksIGZhbHNlKTsKICAgICAgICAgfQotICAgICAgICBtX3Byb3Bl
cnRpZXMuYXBwZW5kKCpwcm9wZXJ0eSk7Ci0gICAgICAgIGNhbmRpZGF0ZXMuc2V0KHByb3BlcnR5
LT5pZCgpLCBpbXBvcnRhbnQpOworICAgICAgICBtX3Byb3BlcnRpZXMuYXBwZW5kKHByb3BlcnR5
KTsKKyAgICAgICAgY2FuZGlkYXRlcy5zZXQocHJvcGVydHkuaWQoKSwgaW1wb3J0YW50KTsKICAg
ICB9CiB9CiAKQEAgLTYzOSwxMyArNjQzLDE4IEBAIHZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OnBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9uCiAg
ICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCi12b2lkIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjphZGRQYXJzZWRQcm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCogcHJv
cGVydGllcywgaW50IG51bVByb3BlcnRpZXMpCit2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjphZGRQYXJzZWRQcm9wZXJ0aWVzKENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9wZXJ0aWVz
KQogewogICAgIEFTU0VSVCghbV9pdGVyYXRvckNvdW50KTsKIAorICAgIHVuc2lnbmVkIG51bVBy
b3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmNvdW50KCk7CisKKyAgICBpZiAoIW51bVByb3BlcnRpZXMp
CisgICAgICAgIHJldHVybjsKKwogICAgIG1fcHJvcGVydGllcy5yZXNlcnZlQ2FwYWNpdHkobnVt
UHJvcGVydGllcyk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kp
Ci0gICAgICAgIGFkZFBhcnNlZFByb3BlcnR5KCpwcm9wZXJ0aWVzW2ldKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKQorICAgICAgICBhZGRQYXJzZWRQ
cm9wZXJ0eShwcm9wZXJ0aWVzW2ldKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNo
b3VsZCBoYXZlIGEgY2FsbCB0byBzZXROZWVkc1N0eWxlUmVjYWxjKCkgaWYgc29tZXRoaW5nIGNo
YW5nZWQuIFdlIG1heSBhbHNvIHdpc2ggdG8gYWRkCiAgICAgLy8gYSBub3RpZnlDaGFuZ2VkIGFy
Z3VtZW50IHRvIHRoaXMgZnVuY3Rpb24gdG8gZm9sbG93IHRoZSBtb2RlbCBvZiBvdGhlciBmdW5j
dGlvbnMgaW4gdGhpcyBjbGFzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uLmgKaW5kZXggZWE4YWIzZi4uYjgzODI5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTI0LDYgKzI0LDcg
QEAKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0
aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtNjcsOSArNjgsOSBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uKHBhcmVudFJ1bGUpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShDU1NSdWxlKiBwYXJlbnRSdWxl
LCBjb25zdCBDU1NQcm9wZXJ0eSogY29uc3QqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVz
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjcmVh
dGUoQ1NTUnVsZSogcGFyZW50UnVsZSwgQ1NTUHJvcGVydHlDb250YWluZXImIHByb3BlcnRpZXMp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uKHBhcmVudFJ1bGUsIHByb3BlcnRpZXMsIG51bVByb3BlcnRpZXMpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihwYXJlbnRSdWxl
LCBwcm9wZXJ0aWVzKSk7CiAgICAgfQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoY29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYgcHJvcGVy
dGllcykKICAgICB7CkBAIC0xMjQsNyArMTI1LDcgQEAgcHVibGljOgogCiAgICAgLy8gQmVzaWRl
cyBhZGRpbmcgdGhlIHByb3BlcnRpZXMsIHRoaXMgYWxzbyByZW1vdmVzIGFueSBleGlzdGluZyBw
cm9wZXJ0aWVzIHdpdGggdGhlc2UgSURzLgogICAgIC8vIEl0IGRvZXMgbm8gbm90aWZpY2F0aW9u
IHNpbmNlIGl0J3MgY2FsbGVkIGJ5IHRoZSBwYXJzZXIuCi0gICAgdm9pZCBhZGRQYXJzZWRQcm9w
ZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCAqLCBpbnQgbnVtUHJvcGVydGllcyk7Cisg
ICAgdm9pZCBhZGRQYXJzZWRQcm9wZXJ0aWVzKENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9wZXJ0
aWVzKTsKICAgICAvLyBUaGlzIGRvZXMgbm8gY2hhbmdlIG5vdGlmaWNhdGlvbnMgc2luY2UgaXQn
cyBvbmx5IGNhbGxlZCBieSBjcmVhdGVNYXJrdXAuCiAgICAgdm9pZCBhZGRQYXJzZWRQcm9wZXJ0
eShjb25zdCBDU1NQcm9wZXJ0eSYpOwogIApAQCAtMTQ5LDcgKzE1MCw3IEBAIHByb3RlY3RlZDoK
IHByaXZhdGU6CiAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oKTsKICAgICBDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBWZWN0b3I8Q1NT
UHJvcGVydHk+Jik7Ci0gICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFy
ZW50UnVsZSwgY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICosIGludCBudW1Qcm9wZXJ0aWVzKTsK
KyAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRSdWxlLCBDU1NQ
cm9wZXJ0eUNvbnRhaW5lciYgcHJvcGVydGllcyk7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IG1ha2VNdXRhYmxlKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKaW5kZXggZmY0M2EyZC4uMzRhYzU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKQEAgLTE2NSwxNCArMTY1LDEwIEBAIENTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wgc3Ry
aWN0UGFyc2luZykKICAgICAsIG1faWQoMCkKICAgICAsIG1fc3R5bGVTaGVldCgwKQogICAgICwg
bV92YWx1ZUxpc3QoMCkKLSAgICAsIG1fcGFyc2VkUHJvcGVydGllcyhzdGF0aWNfY2FzdDxDU1NQ
cm9wZXJ0eSoqPihmYXN0TWFsbG9jKDMyICogc2l6ZW9mKENTU1Byb3BlcnR5KikpKSkKLSAgICAs
IG1fbnVtUGFyc2VkUHJvcGVydGllcygwKQotICAgICwgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzKDMy
KQogICAgICwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KElOVkFMSURfTlVN
X1BBUlNFRF9QUk9QRVJUSUVTKQogICAgICwgbV9pblBhcnNlU2hvcnRoYW5kKDApCiAgICAgLCBt
X2N1cnJlbnRTaG9ydGhhbmQoMCkKICAgICAsIG1faW1wbGljaXRTaG9ydGhhbmQoZmFsc2UpCi0g
ICAgLCBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyhmYWxzZSkKICAgICAsIG1faGFkU3ludGFjdGlj
YWxseVZhbGlkQ1NTUnVsZShmYWxzZSkKICAgICAsIG1fZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRv
bSkKICAgICAsIG1faW5TdHlsZVJ1bGVPckRlY2xhcmF0aW9uKGZhbHNlKQpAQCAtMTk2LDkgKzE5
Miw2IEBAIENTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZykKIAogQ1NTUGFy
c2VyOjp+Q1NTUGFyc2VyKCkKIHsKLSAgICBjbGVhclByb3BlcnRpZXMoKTsKLSAgICBmYXN0RnJl
ZShtX3BhcnNlZFByb3BlcnRpZXMpOwotCiAgICAgZGVsZXRlIG1fdmFsdWVMaXN0OwogCiAgICAg
ZmFzdEZyZWUobV9kYXRhKTsKQEAgLTQ1OSwxMSArNDUyLDExIEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlvbiwgaW50IHBy
b3BlcnR5CiAgICAgbV9ydWxlID0gMDsKIAogICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAgICBpZiAo
bV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpCi0gICAgICAgIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVl
cygpOwotICAgIGlmIChtX251bVBhcnNlZFByb3BlcnRpZXMpIHsKKyAgICBpZiAobV9wYXJzZWRQ
cm9wZXJ0aWVzLmhhc0ZvbnRGYWNlT25seSgpKQorICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMu
ZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygpOworICAgIGlmIChtX3BhcnNlZFByb3BlcnRp
ZXMuY291bnQoKSkgewogICAgICAgICBvayA9IHRydWU7Ci0gICAgICAgIGRlY2xhcmF0aW9uLT5h
ZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0
aWVzKTsKKyAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQ
cm9wZXJ0aWVzKTsKICAgICAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgfQogCkBAIC00ODUs
NyArNDc4LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwgY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3RyaWN0KQogICAgIGlmICghcGFyc2VyLnBhcnNlQ29s
b3IoZHVtbXlTdHlsZURlY2xhcmF0aW9uLmdldCgpLCBzdHJpbmcpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXIubV9wYXJzZWRQcm9wZXJ0aWVz
WzBdLT52YWx1ZSgpOworICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHBhcnNlci5tX3BhcnNlZFByb3Bl
cnRpZXMuZmlyc3QoKS52YWx1ZSgpOwogICAgIGlmICh2YWx1ZS0+Y3NzVmFsdWVUeXBlKCkgIT0g
Q1NTVmFsdWU6OkNTU19QUklNSVRJVkVfVkFMVUUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtNTA2LDcgKzQ5OSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlvbiwgY29uc3QgU3RyaW5nCiAgICAgY3NzeXlwYXJz
ZSh0aGlzKTsKICAgICBtX3J1bGUgPSAwOwogCi0gICAgcmV0dXJuIChtX251bVBhcnNlZFByb3Bl
cnRpZXMgJiYgbV9wYXJzZWRQcm9wZXJ0aWVzWzBdLT5tX2lkID09IENTU1Byb3BlcnR5Q29sb3Ip
OworICAgIHJldHVybiAobV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkgJiYgbV9wYXJzZWRQcm9w
ZXJ0aWVzLmZpcnN0KCkuaWQoKSA9PSBDU1NQcm9wZXJ0eUNvbG9yKTsKIH0KIAogYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlU3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiBzdHJp
bmcsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTU2MCwxMSArNTUzLDEyIEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsYXJh
dGlvbiwgY29uc3QKICAgICBtX3J1bGUgPSAwOwogCiAgICAgYm9vbCBvayA9IGZhbHNlOwotICAg
IGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5
VmFsdWVzKCk7Ci0gICAgaWYgKG1fbnVtUGFyc2VkUHJvcGVydGllcykgeworICAgIGlmIChtX3Bh
cnNlZFByb3BlcnRpZXMuaGFzRm9udEZhY2VPbmx5KCkpCisgICAgICAgIG1fcGFyc2VkUHJvcGVy
dGllcy5kZWxldGVGb250RmFjZU9ubHlQcm9wZXJ0aWVzKCk7CisKKyAgICBpZiAobV9wYXJzZWRQ
cm9wZXJ0aWVzLmNvdW50KCkpIHsKICAgICAgICAgb2sgPSB0cnVlOwotICAgICAgICBkZWNsYXJh
dGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2Vk
UHJvcGVydGllcyk7CisgICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1f
cGFyc2VkUHJvcGVydGllcyk7CiAgICAgICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIH0KIApA
QCAtNjA4LDMzICs2MDIsMTggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeShNZWRp
YUxpc3QqIHF1ZXJpZXMsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogCiB2b2lkIENTU1BhcnNlcjo6
YWRkUHJvcGVydHkoaW50IHByb3BJZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wg
aW1wb3J0YW50KQogewotICAgIE93blB0cjxDU1NQcm9wZXJ0eT4gcHJvcChhZG9wdFB0cihuZXcg
Q1NTUHJvcGVydHkocHJvcElkLCB2YWx1ZSwgaW1wb3J0YW50LCBtX2N1cnJlbnRTaG9ydGhhbmQs
IG1faW1wbGljaXRTaG9ydGhhbmQpKSk7Ci0gICAgaWYgKG1fbnVtUGFyc2VkUHJvcGVydGllcyA+
PSBtX21heFBhcnNlZFByb3BlcnRpZXMpIHsKLSAgICAgICAgbV9tYXhQYXJzZWRQcm9wZXJ0aWVz
ICs9IDMyOwotICAgICAgICBpZiAobV9tYXhQYXJzZWRQcm9wZXJ0aWVzID4gVUlOVF9NQVggLyBz
aXplb2YoQ1NTUHJvcGVydHkqKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9wYXJz
ZWRQcm9wZXJ0aWVzID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHkqKj4oZmFzdFJlYWxsb2MobV9w
YXJzZWRQcm9wZXJ0aWVzLAotICAgICAgICAgICAgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzICogc2l6
ZW9mKENTU1Byb3BlcnR5KikpKTsKLSAgICB9Ci0gICAgbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVt
UGFyc2VkUHJvcGVydGllcysrXSA9IHByb3AubGVha1B0cigpOworICAgIG1fcGFyc2VkUHJvcGVy
dGllcy5hZGRQcm9wZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRhbnQsIG1fY3VycmVudFNob3J0
aGFuZCwgbV9pbXBsaWNpdFNob3J0aGFuZCk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpyb2xsYmFj
a0xhc3RQcm9wZXJ0aWVzKGludCBudW0pCiB7Ci0gICAgQVNTRVJUKG51bSA+PSAwKTsKLSAgICBB
U1NFUlQobV9udW1QYXJzZWRQcm9wZXJ0aWVzID49IHN0YXRpY19jYXN0PHVuc2lnbmVkPihudW0p
KTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtOyArK2kpCi0gICAgICAgIGRlbGV0ZSBt
X3BhcnNlZFByb3BlcnRpZXNbLS1tX251bVBhcnNlZFByb3BlcnRpZXNdOworICAgIG1fcGFyc2Vk
UHJvcGVydGllcy5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKG51bSk7CiB9CiAKIHZvaWQgQ1NTUGFy
c2VyOjpjbGVhclByb3BlcnRpZXMoKQogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X251bVBhcnNlZFByb3BlcnRpZXM7IGkrKykKLSAgICAgICAgZGVsZXRlIG1fcGFyc2VkUHJvcGVy
dGllc1tpXTsKLSAgICBtX251bVBhcnNlZFByb3BlcnRpZXMgPSAwOworICAgIG1fcGFyc2VkUHJv
cGVydGllcy5jbGVhclByb3BlcnRpZXMoKTsKICAgICBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZv
cmVNYXJnaW5Cb3ggPSBJTlZBTElEX05VTV9QQVJTRURfUFJPUEVSVElFUzsKLSAgICBtX2hhc0Zv
bnRGYWNlT25seVZhbHVlcyA9IGZhbHNlOwogfQogICAgIAogdm9pZCBDU1NQYXJzZXI6OnNldFN0
eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCkKQEAgLTk0NCw3ICs5MjMsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsKICAgICAgICAgaWYgKG51
bSAhPSAxIHx8ICFwYXJzZVZhbHVlKENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBpbXBvcnRhbnQpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3Bh
cnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gMV0tPnZhbHVlKCk7CisgICAg
ICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsK
ICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIHZhbHVlLCBpbXBvcnRh
bnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xMDQxLDcgKzEwMjAsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5Qm9yZGVyU3Bh
Y2luZyk7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0
YW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1
ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTFdLT52
YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVz
Lmxhc3QoKS52YWx1ZSgpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1sxXSwg
dmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpA
QCAtMTY5Niw3ICsxNjc1LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlz
LCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlKTsKICAgICAgICAgICAgIGlmICghcGFy
c2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGll
c1ttX251bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1
ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAg
ICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yNDYzLDcgKzI0NDIsNyBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywg
IGJvb2wgaW1wb3J0YW50KQogICAgICAgICBjYXNlIDE6IHsKICAgICAgICAgICAgIGlmICghcGFy
c2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGll
c1ttX251bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1
ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAg
ICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBsaWNpdCk7CiAg
ICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsK
ICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMl0sIHZhbHVlLCBpbXBvcnRhbnQp
OwpAQCAtMjQ3MywxNyArMjQ1MiwxNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKGlu
dCBwcm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgIGJvb2wgaW1wb3J0YW50KQogICAgICAg
ICBjYXNlIDI6IHsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBp
bXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0g
bV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKKyAg
ICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0QnV0T25l
KCkudmFsdWUoKTsKICAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlz
LCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNb
Ml0sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgdmFsdWUgPSBtX3BhcnNlZFByb3Bl
cnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAgICAgdmFs
dWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdEJ1dE9uZSgpLnZhbHVlKCk7CiAgICAgICAgICAg
ICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzNdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgMzogewogICAgICAgICAgICAgaWYg
KCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJv
cGVydGllc1sxXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzJdLCBpbXBv
cnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1Zh
bHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMl0t
PnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRp
ZXMubGFzdEJ1dE9uZSgpLnZhbHVlKCk7CiAgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxp
Y2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBsaWNpdCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0
eShwcm9wZXJ0aWVzWzNdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMzg0Nyw3ICszODI2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFN0eWxlKGJvb2wg
aW1wb3J0YW50KQogICAgIH0KIAogICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLT5sZW5ndGgoKSkg
ewotICAgICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IHRydWU7CisgICAgICAgIG1fcGFy
c2VkUHJvcGVydGllcy5zZXRGb250RmFjZU9ubHkoKTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlGb250U3R5bGUsIHZhbHVlcy5yZWxlYXNlKCksIGltcG9ydGFudCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTM4OTQsNyArMzg3Myw3IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZUZvbnRWYXJpYW50KGJvb2wgaW1wb3J0YW50KQogICAgIH0KIAogICAgIGlmICh2YWx1
ZXMgJiYgdmFsdWVzLT5sZW5ndGgoKSkgewotICAgICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVl
cyA9IHRydWU7CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5zZXRGb250RmFjZU9ubHkoKTsK
ICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFudCwgdmFsdWVzLnJlbGVh
c2UoKSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzk0Nyw3
ICszOTI2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFdlaWdodChib29sIGltcG9ydGFu
dCkKICAgICB9CiAKICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy0+bGVuZ3RoKCkpIHsKLSAgICAg
ICAgbV9oYXNGb250RmFjZU9ubHlWYWx1ZXMgPSB0cnVlOworICAgICAgICBtX3BhcnNlZFByb3Bl
cnRpZXMuc2V0Rm9udEZhY2VPbmx5KCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFdlaWdodCwgdmFsdWVzLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtNjQxMSw5ICs2MzkwLDkgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpj
cmVhdGVTdHlsZVJ1bGUoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0
b3IKICAgICAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0
aW9ucyA9IGZhbHNlOwogICAgICAgICBSZWZQdHI8Q1NTU3R5bGVSdWxlPiBydWxlID0gQ1NTU3R5
bGVSdWxlOjpjcmVhdGUobV9zdHlsZVNoZWV0LCBtX2xhc3RTZWxlY3RvckxpbmVOdW1iZXIpOwog
ICAgICAgICBydWxlLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpzZWxlY3RvcnMpOwotICAgICAgICBp
ZiAobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpCi0gICAgICAgICAgICBkZWxldGVGb250RmFjZU9u
bHlWYWx1ZXMoKTsKLSAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVt
UGFyc2VkUHJvcGVydGllcykpOworICAgICAgICBpZiAobV9wYXJzZWRQcm9wZXJ0aWVzLmhhc0Zv
bnRGYWNlT25seSgpKQorICAgICAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmRlbGV0ZUZvbnRG
YWNlT25seVByb3BlcnRpZXMoKTsKKyAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRp
ZXMpKTsKICAgICAgICAgcmVzdWx0ID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9wYXJzZWRTdHls
ZU9iamVjdHMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICAgICAgaWYgKG1fcnVsZVJhbmdl
TWFwKSB7CkBAIC02NDM1LDE0ICs2NDE0LDE1IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRl
U3R5bGVSdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9yCiBD
U1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSgpCiB7CiAgICAgbV9hbGxvd0lt
cG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNlOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBhcnNlZFByb3BlcnRpZXM7ICsraSkgewotICAg
ICAgICBDU1NQcm9wZXJ0eSogcHJvcGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07Ci0gICAg
ICAgIGludCBpZCA9IHByb3BlcnR5LT5pZCgpOwotICAgICAgICBpZiAoKGlkID09IENTU1Byb3Bl
cnR5Rm9udFdlaWdodCB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRTdHlsZSB8fCBpZCA9PSBDU1NQ
cm9wZXJ0eUZvbnRWYXJpYW50KSAmJiBwcm9wZXJ0eS0+dmFsdWUoKS0+aXNQcmltaXRpdmVWYWx1
ZSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gcHJvcGVydHktPm1f
dmFsdWUucmVsZWFzZSgpOwotICAgICAgICAgICAgcHJvcGVydHktPm1fdmFsdWUgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxD
U1NWYWx1ZUxpc3QqPihwcm9wZXJ0eS0+dmFsdWUoKSktPmFwcGVuZCh2YWx1ZS5yZWxlYXNlKCkp
OwotICAgICAgICB9IGVsc2UgaWYgKGlkID09IENTU1Byb3BlcnR5Rm9udEZhbWlseSAmJiAoIXBy
b3BlcnR5LT52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpIHx8IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlz
dCo+KHByb3BlcnR5LT52YWx1ZSgpKS0+bGVuZ3RoKCkgIT0gMSkpIHsKKworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3BhcnNlZFByb3BlcnRpZXMuY291bnQoKTsgKytpKSB7CisgICAg
ICAgIENTU1Byb3BlcnR5JiBwcm9wZXJ0eSA9IG1fcGFyc2VkUHJvcGVydGllc1tpXTsKKyAgICAg
ICAgaW50IGlkID0gcHJvcGVydHkuaWQoKTsKKyAgICAgICAgaWYgKChpZCA9PSBDU1NQcm9wZXJ0
eUZvbnRXZWlnaHQgfHwgaWQgPT0gQ1NTUHJvcGVydHlGb250U3R5bGUgfHwgaWQgPT0gQ1NTUHJv
cGVydHlGb250VmFyaWFudCkgJiYgcHJvcGVydHkudmFsdWUoKS0+aXNQcmltaXRpdmVWYWx1ZSgp
KSB7CisgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gcHJvcGVydHkubV92YWx1
ZS5yZWxlYXNlKCk7CisgICAgICAgICAgICBwcm9wZXJ0eS5tX3ZhbHVlID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTVmFs
dWVMaXN0Kj4ocHJvcGVydHkudmFsdWUoKSktPmFwcGVuZCh2YWx1ZS5yZWxlYXNlKCkpOworICAg
ICAgICB9IGVsc2UgaWYgKGlkID09IENTU1Byb3BlcnR5Rm9udEZhbWlseSAmJiAoIXByb3BlcnR5
LnZhbHVlKCktPmlzVmFsdWVMaXN0KCkgfHwgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4ocHJv
cGVydHkudmFsdWUoKSktPmxlbmd0aCgpICE9IDEpKSB7CiAgICAgICAgICAgICAvLyBVbmxpa2Ug
Zm9udC1mYW1pbHkgcHJvcGVydHksIGZvbnQtZmFtaWx5IGRlc2NyaXB0b3IgaW4gQGZvbnQtZmFj
ZSBydWxlIAogICAgICAgICAgICAgLy8gaGFzIHRvIGJlIGEgdmFsdWUgbGlzdCB3aXRoIGV4YWN0
bHkgb25lIGZhbWlseSBuYW1lLiBJdCBjYW5ub3QgaGF2ZSBhCiAgICAgICAgICAgICAvLyBoYXZl
ICdpbml0aWFsJyB2YWx1ZSBhbmQgY2Fubm90ICdpbmhlcml0JyBmcm9tIHBhcmVudC4KQEAgLTY0
NTEsOCArNjQzMSw5IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlRm9udEZhY2VSdWxlKCkK
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQorCiAgICAgUmVmUHRyPENT
U0ZvbnRGYWNlUnVsZT4gcnVsZSA9IENTU0ZvbnRGYWNlUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVl
dCk7Ci0gICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246
OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVy
dGllcykpOworICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzKSk7CiAgICAgY2xlYXJQ
cm9wZXJ0aWVzKCk7CiAgICAgQ1NTRm9udEZhY2VSdWxlKiByZXN1bHQgPSBydWxlLmdldCgpOwog
ICAgIG1fcGFyc2VkU3R5bGVPYmplY3RzLmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CkBAIC02NTI2
LDcgKzY1MDcsNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKFBhc3NPd25Q
dHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHBhZ2VTZWxlY3RvcikKICAgICAgICAgVmVjdG9yPE93blB0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiBzZWxlY3RvclZlY3RvcjsKICAgICAgICAgc2VsZWN0b3JW
ZWN0b3IuYXBwZW5kKHBhZ2VTZWxlY3Rvcik7CiAgICAgICAgIHJ1bGUtPmFkb3B0U2VsZWN0b3JW
ZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOwotICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVy
dGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIHJ1bGUtPnNldERlY2xhcmF0
aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJz
ZWRQcm9wZXJ0aWVzKSk7CiAgICAgICAgIHBhZ2VSdWxlID0gcnVsZS5nZXQoKTsKICAgICAgICAg
bV9wYXJzZWRTdHlsZU9iamVjdHMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICB9CkBAIC02
NTQ3LDM0ICs2NTI4LDE2IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlTWFyZ2luQXRSdWxl
KENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIC8qIG1hcmdpbkJveCAqCiAKIHZvaWQgQ1NTUGFy
c2VyOjpzdGFydERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpCiB7Ci0gICAgbV9udW1QYXJzZWRQ
cm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzOworICAgIG1f
bnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCA9IG1fcGFyc2VkUHJvcGVydGllcy5j
b3VudCgpOwogfQogCiB2b2lkIENTU1BhcnNlcjo6ZW5kRGVjbGFyYXRpb25zRm9yTWFyZ2luQm94
KCkKIHsKICAgICBBU1NFUlQobV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ICE9
IElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTKTsKLSAgICByb2xsYmFja0xhc3RQcm9wZXJ0
aWVzKG1fbnVtUGFyc2VkUHJvcGVydGllcyAtIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1h
cmdpbkJveCk7CisgICAgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMu
Y291bnQoKSAtIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCk7CiAgICAgbV9u
dW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BS
T1BFUlRJRVM7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjpkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMo
KQotewotICAgIEFTU0VSVChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyk7Ci0gICAgaW50IGRlbGV0
ZWRQcm9wZXJ0aWVzID0gMDsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBh
cnNlZFByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBDU1NQcm9wZXJ0eSogcHJvcGVydHkgPSBt
X3BhcnNlZFByb3BlcnRpZXNbaV07Ci0gICAgICAgIGludCBpZCA9IHByb3BlcnR5LT5pZCgpOwot
ICAgICAgICBpZiAoKGlkID09IENTU1Byb3BlcnR5Rm9udFdlaWdodCB8fCBpZCA9PSBDU1NQcm9w
ZXJ0eUZvbnRTdHlsZSB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KSAmJiBwcm9wZXJ0
eS0+dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAgICAgZGVsZXRlIHByb3BlcnR5
OwotICAgICAgICAgICAgZGVsZXRlZFByb3BlcnRpZXMrKzsKLSAgICAgICAgfSBlbHNlIGlmIChk
ZWxldGVkUHJvcGVydGllcykKLSAgICAgICAgICAgIG1fcGFyc2VkUHJvcGVydGllc1tpIC0gZGVs
ZXRlZFByb3BlcnRpZXNdID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwotICAgIH0KLQotICAgIG1f
bnVtUGFyc2VkUHJvcGVydGllcyAtPSBkZWxldGVkUHJvcGVydGllczsKLX0KLQogV2ViS2l0Q1NT
S2V5ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJWYWx1
ZUxpc3QqIGtleXMpCiB7CiAgICAgLy8gQ3JlYXRlIGEga2V5IHN0cmluZyBmcm9tIHRoZSBwYXNz
ZWQga2V5cwpAQCAtNjU4OSw3ICs2NTUyLDcgQEAgV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQ
YXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJWYWx1ZUxpc3QqIGtleXMpCiAKICAg
ICBSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBrZXlmcmFtZSA9IFdlYktpdENTU0tleWZy
YW1lUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7CiAgICAga2V5ZnJhbWUtPnNldEtleVRleHQo
a2V5U3RyaW5nKTsKLSAgICBrZXlmcmFtZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb246OmNyZWF0ZSgwLCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJv
cGVydGllcykpOworICAgIGtleWZyYW1lLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbjo6Y3JlYXRlKDAsIG1fcGFyc2VkUHJvcGVydGllcykpOwogCiAgICAgY2xlYXJQ
cm9wZXJ0aWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBjNmYwNzhhLi5jODlhYzVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJD
U1NHcmFkaWVudFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmgiCisjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURh
dGEuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCkBAIC03
NSw3ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGFkZFByb3Bl
cnR5KGludCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCk7CiAg
ICAgICAgIHZvaWQgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKTsKLSAgICAgICAgYm9v
bCBoYXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1QYXJzZWRQcm9wZXJ0aWVzID4g
MDsgfQorICAgICAgICBib29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3BhcnNl
ZFByb3BlcnRpZXMuY291bnQoKSA+IDA7IH0KIAogICAgICAgICBib29sIHBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgICAgICBib29sIHBhcnNlU2hvcnRoYW5kKGlu
dCBwcm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wg
aW1wb3J0YW50KTsKQEAgLTIzOSwxOCArMjQwLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgUmVmUHRyPENTU1J1bGU+IG1fa2V5ZnJhbWU7CiAgICAgICAgIE93blB0cjxNZWRpYVF1
ZXJ5PiBtX21lZGlhUXVlcnk7CiAgICAgICAgIENTU1BhcnNlclZhbHVlTGlzdCogbV92YWx1ZUxp
c3Q7Ci0gICAgICAgIENTU1Byb3BlcnR5KiogbV9wYXJzZWRQcm9wZXJ0aWVzOworICAgICAgICBD
U1NQcm9wZXJ0eUNvbnRhaW5lciBtX3BhcnNlZFByb3BlcnRpZXM7CiAgICAgICAgIENTU1NlbGVj
dG9yTGlzdCogbV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yOwogICAgICAgICBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWVDYWNoZT4gbV9wcmltaXRpdmVWYWx1ZUNhY2hlOwotICAgICAgICB1
bnNpZ25lZCBtX251bVBhcnNlZFByb3BlcnRpZXM7Ci0gICAgICAgIHVuc2lnbmVkIG1fbWF4UGFy
c2VkUHJvcGVydGllczsKICAgICAgICAgdW5zaWduZWQgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVm
b3JlTWFyZ2luQm94OwogCiAgICAgICAgIGludCBtX2luUGFyc2VTaG9ydGhhbmQ7CiAgICAgICAg
IGludCBtX2N1cnJlbnRTaG9ydGhhbmQ7CiAgICAgICAgIGJvb2wgbV9pbXBsaWNpdFNob3J0aGFu
ZDsKIAotICAgICAgICBib29sIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzOwogICAgICAgICBib29s
IG1faGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZTsKIAogICAgICAgICBBdG9taWNTdHJpbmcg
bV9kZWZhdWx0TmFtZXNwYWNlOwpAQCAtMjg4LDggKzI4Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICB2b2lkIGNoZWNrRm9yT3JwaGFuZWRVbml0cygpOwogCi0gICAgICAgIHZv
aWQgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0KICAgICAgICAgYm9vbCBpc0dlbmVyYXRl
ZEltYWdlVmFsdWUoQ1NTUGFyc2VyVmFsdWUqKSBjb25zdDsKICAgICAgICAgYm9vbCBwYXJzZUdl
bmVyYXRlZEltYWdlKFJlZlB0cjxDU1NWYWx1ZT4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHku
aAppbmRleCA0YTQ2ZmMyLi41NmVhMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaApAQCAt
MzIsNiArMzIsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTUHJvcGVydHkgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIENTU1Byb3BlcnR5KCkK
KyAgICAgICAgOiBtX2lkKDApCisgICAgICAgICwgbV9zaG9ydGhhbmRJRCgwKQorICAgICAgICAs
IG1faW1wb3J0YW50KGZhbHNlKQorICAgICAgICAsIG1faW1wbGljaXQoZmFsc2UpCisgICAgICAg
ICwgbV92YWx1ZSgwKQorICAgIHsKKyAgICB9CisKICAgICBDU1NQcm9wZXJ0eShpbnQgcHJvcElE
LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgaW50
IHNob3J0aGFuZElEID0gMCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKQogICAgICAgICA6IG1faWQo
cHJvcElEKQogICAgICAgICAsIG1fc2hvcnRoYW5kSUQoc2hvcnRoYW5kSUQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5hMjUzMTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcApAQCAtMCwwICsxLDI0MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQW5kcmFzIEJlY3Np
IDxhYmVjc2lAd2Via2l0Lm9yZz4sIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIgorCisjaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgorCit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0NTU1Byb3BlcnR5Q29udGFpbmVyOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcigpCisg
ICAgOiBtX251bVZhbGlkUHJvcGVydGllcygwKQorICAgICwgbV91c2VkU2l6ZSgwKQorICAgICwg
bV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzKGZhbHNlKQoreworfQorCit2b2lkIENTU1Byb3Bl
cnR5Q29udGFpbmVyOjpzd2VlcCgpCit7CisgICAgaWYgKG1fbnVtVmFsaWRQcm9wZXJ0aWVzID09
IG1fdXNlZFNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIGRlbGV0ZWRQcm9w
ZXJ0aWVzID0gMDsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3VzZWRTaXplOyAr
K2kpIHsKKyAgICAgICAgaWYgKCFtX3Byb3BlcnRpZXNbaV0uaWQoKSkKKyAgICAgICAgICAgICsr
ZGVsZXRlZFByb3BlcnRpZXM7CisgICAgICAgIGVsc2UgaWYgKGRlbGV0ZWRQcm9wZXJ0aWVzKSB7
CisgICAgICAgICAgICBtX2lkVG9Qb3NpdGlvbk1hcC5zZXQobV9wcm9wZXJ0aWVzW2ldLmlkKCks
IGkgLSBkZWxldGVkUHJvcGVydGllcyk7CisgICAgICAgICAgICBtX3Byb3BlcnRpZXNbaSAtIGRl
bGV0ZWRQcm9wZXJ0aWVzXSA9IG1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIG1fdXNlZFNpemUgLT0gZGVsZXRlZFByb3BlcnRpZXM7CisKKyAgICBpZiAobV9pZFRvUG9z
aXRpb25NYXAuc2l6ZSgpID4gc3RhdGljX2Nhc3Q8aW50PihtX3Byb3BlcnRpZXMuc2l6ZSgpICsg
a0dyb3dGYWN0b3IpKSB7CisgICAgICAgIG1faWRUb1Bvc2l0aW9uTWFwLmNsZWFyKCk7CisKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdXNlZFNpemU7ICsraSkKKyAgICAgICAg
ICAgIG1faWRUb1Bvc2l0aW9uTWFwLmFkZChtX3Byb3BlcnRpZXNbaV0uaWQoKSwgaSk7CisgICAg
fQorCisgICAgQVNTRVJUKG1fbnVtVmFsaWRQcm9wZXJ0aWVzID09IG1fdXNlZFNpemUpOworfQor
CitpbmxpbmUgdm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Z3Jvd0lmTmVlZGVkKCkKK3sKKyAg
ICBpZiAobV91c2VkU2l6ZSA+IG1fcHJvcGVydGllcy5zaXplKCkpCisgICAgICAgIHN3ZWVwKCk7
CisKKyAgICBpZiAobV91c2VkU2l6ZSA9PSBtX3Byb3BlcnRpZXMuc2l6ZSgpKQorICAgICAgICBt
X3Byb3BlcnRpZXMuYWxsb2MoKTsKK30KKworaW5saW5lIHVuc2lnbmVkIENTU1Byb3BlcnR5Q29u
dGFpbmVyOjppbnRlcm5hbFBvc2l0aW9uKGludCBwcm9wZXJ0eUlEKQoreworICAgIEFTU0VSVChw
cm9wZXJ0eUlEKTsKKworICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gbV9pZFRvUG9zaXRpb25NYXAu
Z2V0KHByb3BlcnR5SUQpOworCisgICAgaWYgKHBvc2l0aW9uID09IGtJbnZhbGlkUG9zaXRpb24p
CisgICAgICAgIHJldHVybiBrSW52YWxpZFBvc2l0aW9uOworCisgICAgQVNTRVJUKHBvc2l0aW9u
IDwgbV91c2VkU2l6ZSk7CisKKyAgICBpZiAoIW1fcHJvcGVydGllc1twb3NpdGlvbl0uaWQoKSkK
KyAgICAgICAgcmV0dXJuIGtJbnZhbGlkUG9zaXRpb247CisKKyAgICByZXR1cm4gcG9zaXRpb247
Cit9CisKK2lubGluZSB2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjppbnZhbGlkYXRlQnlQb3Np
dGlvbih1bnNpZ25lZCBwb3NpdGlvbikKK3sKKyAgICBBU1NFUlQocG9zaXRpb24gPj0gbV91c2Vk
U2l6ZSk7CisKKyAgICAtLW1fbnVtVmFsaWRQcm9wZXJ0aWVzOworCisgICAgbV9pZFRvUG9zaXRp
b25NYXAuc2V0KG1fcHJvcGVydGllc1twb3NpdGlvbl0uaWQoKSwga0ludmFsaWRQb3NpdGlvbik7
CisgICAgbV9wcm9wZXJ0aWVzW3Bvc2l0aW9uXS5tX2lkID0gMDsKK30KKworaW5saW5lIHZvaWQg
Q1NTUHJvcGVydHlDb250YWluZXI6OmludmFsaWRhdGVCeUlkKGludCBwcm9wZXJ0eUlEKQorewor
ICAgIEFTU0VSVChwcm9wZXJ0eUlEKTsKKworICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gaW50ZXJu
YWxQb3NpdGlvbihwcm9wZXJ0eUlEKTsKKworICAgIGlmIChwb3NpdGlvbiA9PSBrSW52YWxpZFBv
c2l0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnZhbGlkYXRlQnlQb3NpdGlvbihwb3Np
dGlvbik7Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5JiBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Zmly
c3QoKQoreworICAgIEFTU0VSVCghbV9wcm9wZXJ0aWVzLmlzRW1wdHkoKSAmJiBtX251bVZhbGlk
UHJvcGVydGllcyk7CisKKyAgICBpZiAoIW1fcHJvcGVydGllc1swXS5pZCgpKQorICAgICAgICBz
d2VlcCgpOworCisgICAgQVNTRVJUKG1fcHJvcGVydGllc1swXS5pZCgpKTsKKworICAgIHJldHVy
biBtX3Byb3BlcnRpZXNbMF07Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5JiBDU1NQcm9wZXJ0eUNv
bnRhaW5lcjo6bGFzdCgpCit7CisgICAgQVNTRVJUKCFtX3Byb3BlcnRpZXMuaXNFbXB0eSgpICYm
IG1fbnVtVmFsaWRQcm9wZXJ0aWVzKTsKKworICAgIGlmICghbV9wcm9wZXJ0aWVzW21fdXNlZFNp
emUgLSAxXS5pZCgpKQorICAgICAgICBzd2VlcCgpOworCisgICAgQVNTRVJUKG1fdXNlZFNpemUg
JiYgbV9wcm9wZXJ0aWVzW21fdXNlZFNpemUgLSAxXS5pZCgpKTsKKworICAgIHJldHVybiBtX3By
b3BlcnRpZXNbbV91c2VkU2l6ZSAtIDFdOworfQorCitjb25zdCBDU1NQcm9wZXJ0eSYgQ1NTUHJv
cGVydHlDb250YWluZXI6Omxhc3RCdXRPbmUoKQoreworICAgIEFTU0VSVCghbV9wcm9wZXJ0aWVz
LmlzRW1wdHkoKSAmJiBtX251bVZhbGlkUHJvcGVydGllcyA+PSAyKTsKKworICAgIGlmICghbV9w
cm9wZXJ0aWVzW21fdXNlZFNpemUgLSAxXS5pZCgpIHx8ICFtX3Byb3BlcnRpZXNbbV91c2VkU2l6
ZSAtIDJdLmlkKCkpCisgICAgICAgIHN3ZWVwKCk7CisKKyAgICBBU1NFUlQobV91c2VkU2l6ZSA+
PSAyICYmIG1fcHJvcGVydGllc1ttX3VzZWRTaXplIC0gMl0uaWQoKSk7CisKKyAgICByZXR1cm4g
bV9wcm9wZXJ0aWVzW21fdXNlZFNpemUgLSAyXTsKK30KKworQ1NTUHJvcGVydHkmIENTU1Byb3Bl
cnR5Q29udGFpbmVyOjpvcGVyYXRvcltdKHNpemVfdCBpbmRleCkKK3sKKyAgICBzd2VlcCgpOwor
ICAgIEFTU0VSVChpbmRleCA8IG1fdXNlZFNpemUpOworICAgIHJldHVybiBtX3Byb3BlcnRpZXNb
aW5kZXhdOworfQorCitib29sIENTU1Byb3BlcnR5Q29udGFpbmVyOjpjb250YWluc1Byb3BlcnR5
KGludCBwcm9wZXJ0eUlEKQoreworICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gaW50ZXJuYWxQb3Np
dGlvbihwcm9wZXJ0eUlEKTsKKworICAgIHJldHVybiBwb3NpdGlvbiAhPSBrSW52YWxpZFBvc2l0
aW9uOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVQcm9wZXJ0eShpbnQg
cHJvcGVydHlJRCkKK3sKKyAgICBpbnZhbGlkYXRlQnlJZChwcm9wZXJ0eUlEKTsKK30KKwordm9p
ZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3ZlUHJvcGVydGllcyhjb25zdCBpbnQqIGlkTGlz
dCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkKKyAgICAgICAgaW52YWxpZGF0ZUJ5SWQoaWRMaXN0W2ldKTsKK30KKwordm9pZCBD
U1NQcm9wZXJ0eUNvbnRhaW5lcjo6YWRkUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCwgaW50IHNob3J0aGFuZElELCBib29s
IGltcGxpY2l0KQoreworICAgIGdyb3dJZk5lZWRlZCgpOworCisgICAgdW5zaWduZWQgb2xkUG9z
aXRpb24gPSBpbnRlcm5hbFBvc2l0aW9uKHByb3BlcnR5SUQpOworCisgICAgaWYgKG9sZFBvc2l0
aW9uICE9IGtJbnZhbGlkUG9zaXRpb24pIHsKKyAgICAgICAgaWYgKG1fcHJvcGVydGllc1tvbGRQ
b3NpdGlvbl0uaWQoKSAmJiBtX3Byb3BlcnRpZXNbb2xkUG9zaXRpb25dLmlzSW1wb3J0YW50KCkg
JiYgIWltcG9ydGFudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpbnZhbGlkYXRl
QnlQb3NpdGlvbihvbGRQb3NpdGlvbik7CisgICAgfQorCisgICAgbV9wcm9wZXJ0aWVzW21fdXNl
ZFNpemVdID0gQ1NTUHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgc2hvcnRo
YW5kSUQsIGltcGxpY2l0KTsKKyAgICBtX2lkVG9Qb3NpdGlvbk1hcC5zZXQocHJvcGVydHlJRCwg
bV91c2VkU2l6ZSk7CisgICAgKyttX251bVZhbGlkUHJvcGVydGllczsKKyAgICArK21fdXNlZFNp
emU7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRp
ZXMoaW50IG51bSkKK3sKKyAgICBpZiAoIW51bSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNT
RVJUKG51bSA+IDApOworICAgIEFTU0VSVChtX251bVZhbGlkUHJvcGVydGllcyA+PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obnVtKSk7CisKKyAgICBpbnQgZGVsZXRlZFByb3BlcnRpZXMgPSAwOwor
ICAgIGludCBwb3NpdGlvbiA9IG1fdXNlZFNpemU7CisgICAgd2hpbGUgKGRlbGV0ZWRQcm9wZXJ0
aWVzICE9IG51bSAmJiAtLXBvc2l0aW9uID49IDApIHsKKyAgICAgICAgaWYgKG1fcHJvcGVydGll
c1twb3NpdGlvbl0uaWQoKSkgeworICAgICAgICAgICAgaW52YWxpZGF0ZUJ5UG9zaXRpb24ocG9z
aXRpb24pOworICAgICAgICAgICAgKytkZWxldGVkUHJvcGVydGllczsKKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6ZGVsZXRlRm9udEZhY2VPbmx5UHJv
cGVydGllcygpCit7CisgICAgQVNTRVJUKG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyk7CisK
KyAgICBpbnQgaWRzWzNdID0ge0NTU1Byb3BlcnR5Rm9udFdlaWdodCwgQ1NTUHJvcGVydHlGb250
U3R5bGUsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnR9OworCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNpemVvZihpZHMpOyArK2kpIHsKKyAgICAgICAgdW5zaWduZWQgcG9zaXRpb24gPSBp
bnRlcm5hbFBvc2l0aW9uKGlkc1tpXSk7CisKKyAgICAgICAgaWYgKHBvc2l0aW9uID09IGtJbnZh
bGlkUG9zaXRpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAobV9wcm9w
ZXJ0aWVzW3Bvc2l0aW9uXS52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpKQorICAgICAgICAgICAgaW52
YWxpZGF0ZUJ5UG9zaXRpb24ocG9zaXRpb24pOworICAgIH0KKyAgICBtX2hhc0ZvbnRGYWNlT25s
eVByb3BlcnRpZXMgPSBmYWxzZTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y2xl
YXJQcm9wZXJ0aWVzKCkKK3sKKyAgICBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXMgPSBmYWxz
ZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3VzZWRTaXplOyArK2kpIHsKKyAg
ICAgICAgaWYgKG1fcHJvcGVydGllc1tpXS5pZCgpKQorICAgICAgICAgICAgaW52YWxpZGF0ZUJ5
UG9zaXRpb24oaSk7CisgICAgfQorCisgICAgbV9pZFRvUG9zaXRpb25NYXAuY2xlYXIoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlD
b250YWluZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2MwZWNlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVy
LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQW5kcmFzIEJlY3NpIDxhYmVjc2lAd2Via2l0Lm9yZz4sIFVuaXZl
cnNpdHkgb2YgU3plZ2VkCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpZm5kZWYgQ1NTUHJvcGVydHlDb250YWluZXJfaAorI2RlZmluZSBD
U1NQcm9wZXJ0eUNvbnRhaW5lcl9oCisKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1
ZGUgIkNTU1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjb25zdCB1bnNpZ25lZCBrR3Jvd0ZhY3RvciA9IDMyOworY29uc3Qg
dW5zaWduZWQga0ludmFsaWRQb3NpdGlvbiA9IEhhc2hUcmFpdHM8dW5zaWduZWQ+OjplbXB0eVZh
bHVlKCk7CisKK2NsYXNzIENTU1Byb3BlcnR5Q29udGFpbmVyIHsKK3B1YmxpYzoKKyAgICBDU1NQ
cm9wZXJ0eUNvbnRhaW5lcigpOworICAgIGNvbnN0IENTU1Byb3BlcnR5JiBmaXJzdCgpOworICAg
IGNvbnN0IENTU1Byb3BlcnR5JiBsYXN0KCk7CisgICAgY29uc3QgQ1NTUHJvcGVydHkmIGxhc3RC
dXRPbmUoKTsKKworICAgIGlubGluZSB1bnNpZ25lZCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
bnVtVmFsaWRQcm9wZXJ0aWVzOyB9CisgICAgaW5saW5lIGJvb2wgaGFzRm9udEZhY2VPbmx5KCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzOyB9CisgICAgaW5saW5l
IHZvaWQgc2V0Rm9udEZhY2VPbmx5KCkgeyBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXMgPSB0
cnVlOyB9CisKKyAgICBDU1NQcm9wZXJ0eSYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpOworCisg
ICAgYm9vbCBjb250YWluc1Byb3BlcnR5KGludCBwcm9wZXJ0eUlEKTsKKyAgICB2b2lkIHJlbW92
ZVByb3BlcnR5KGludCBwcm9wZXJ0eUlEKTsKKyAgICB2b2lkIHJlbW92ZVByb3BlcnRpZXMoY29u
c3QgaW50KiBpZExpc3QsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgdm9pZCBhZGRQcm9wZXJ0eShp
bnQgcHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wgaW1wb3J0YW50LCBpbnQg
c2hvcnRoYW5kSUQgPSAwLCBib29sIGltcGxpY2l0ID0gZmFsc2UpOworICAgIHZvaWQgcm9sbGJh
Y2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKTsKKyAgICB2b2lkIGRlbGV0ZUZvbnRGYWNlT25seVBy
b3BlcnRpZXMoKTsKKyAgICB2b2lkIGNsZWFyUHJvcGVydGllcygpOworCitwcml2YXRlOgorICAg
IHZvaWQgc3dlZXAoKTsKKyAgICBpbmxpbmUgdm9pZCBncm93SWZOZWVkZWQoKTsKKyAgICBpbmxp
bmUgdW5zaWduZWQgaW50ZXJuYWxQb3NpdGlvbihpbnQgcHJvcGVydHlJRCk7CisgICAgaW5saW5l
IHZvaWQgaW52YWxpZGF0ZUJ5UG9zaXRpb24odW5zaWduZWQgcG9zaXRpb24pOworICAgIGlubGlu
ZSB2b2lkIGludmFsaWRhdGVCeUlkKGludCBwcm9wZXJ0eUlEKTsKKworICAgIHVuc2lnbmVkIG1f
bnVtVmFsaWRQcm9wZXJ0aWVzOworICAgIHVuc2lnbmVkIG1fdXNlZFNpemU7CisKKyAgICBib29s
IG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllczsKKworICAgIFNlZ21lbnRlZFZlY3RvcjxDU1NQ
cm9wZXJ0eSwga0dyb3dGYWN0b3I+IG1fcHJvcGVydGllczsKKyAgICBIYXNoTWFwPGludCwgdW5z
aWduZWQ+IG1faWRUb1Bvc2l0aW9uTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gQ1NTUHJvcGVydHlDb250YWluZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFy
c2VyLmNwcAppbmRleCBmM2I1YWMzLi44MDJiZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFy
c2VyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1ZS5oIgog
I2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCisjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CiAjaW5jbHVkZSAiQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVl
S2V5d29yZHMuaCIKQEAgLTI4Niw3ICsyODcsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VTVkdW
YWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHJvbGxiYWNrTGFz
dFByb3BlcnRpZXMoMSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAg
ICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJv
cGVydGllcyAtIDFdLT52YWx1ZSgpOworICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNl
ZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5TWFya2VyTWlkLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlNYXJrZXJFbmQsIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICBtX2ltcGxpY2l0
U2hvcnRoYW5kID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQu
Y3BwCmluZGV4IDc3MGE2ODYuLjRmZTE4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250
RmFjZUVsZW1lbnQuY3BwCkBAIC0yOTksOCArMjk5LDggQEAgdm9pZCBTVkdGb250RmFjZUVsZW1l
bnQ6OnJlYnVpbGRGb250RmFjZSgpCiAKICAgICAvLyBQYXJzZSBpbi1tZW1vcnkgQ1NTIHJ1bGVz
CiAgICAgQ1NTUHJvcGVydHkgc3JjUHJvcGVydHkoQ1NTUHJvcGVydHlTcmMsIGxpc3QpOwotICAg
IGNvbnN0IENTU1Byb3BlcnR5KiBzcmNQcm9wZXJ0eVJlZiA9ICZzcmNQcm9wZXJ0eTsKLSAgICBt
X3N0eWxlRGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMoJnNyY1Byb3BlcnR5UmVmLCAx
KTsKKyAgICBjb25zdCBDU1NQcm9wZXJ0eSYgc3JjUHJvcGVydHlSZWYgPSBzcmNQcm9wZXJ0eTsK
KyAgICBtX3N0eWxlRGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnR5KHNyY1Byb3BlcnR5UmVm
KTsKIAogICAgIGlmIChkZXNjcmliZXNQYXJlbnRGb250KSB7ICAgIAogICAgICAgICAvLyBUcmF2
ZXJzZSBwYXJzZWQgQ1NTIHZhbHVlcyBhbmQgYXNzb2NpYXRlIENTU0ZvbnRGYWNlU3JjVmFsdWUg
ZWxlbWVudHMgd2l0aCBvdXJzZWx2ZXMuCi0tIAoxLjcuNgoK
</data>
<flag name="commit-queue"
          id="94416"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99991</attachid>
            <date>2011-07-07 09:18:00 -0700</date>
            <delta_ts>2011-07-08 07:10:31 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-CSSParser-should-use-custom-vector-like-class-for-ma.patch</filename>
            <type>text/plain</type>
            <size>50570</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSA1OTJkNjUxZmE0OTFiN2M4NmQ4MDBkZjdmYWIzZTRmNTQ3YTAzYjNlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPgpEYXRl
OiBXZWQsIDYgSnVsIDIwMTEgMTc6MTc6MTIgKzAyMDAKU3ViamVjdDogW1BBVENIXSBDU1NQYXJz
ZXIgc2hvdWxkIHVzZSBjdXN0b20gdmVjdG9yLWxpa2UgY2xhc3MgZm9yIG1hbmFnaW5nCiBwcm9w
ZXJ0aWVzCgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgIHwgICAgOSArCiAuLi4vSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgODAgKysrKysrKwogLi4uL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9TZWdtZW50ZWRWZWN0b3IuaCAgICAgICAgfCAgICA0ICsKIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8gICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qICAgICAgIHwgICAgOCArCiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICB8ICAgIDgg
KwogU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSAgICAgICAgICAgICAgICAgICAgfCAg
ICA4ICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3Bw
ICB8ICAgMzUgKystCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24uaCAgICB8ICAgIDkgKy0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwICAgICAg
ICAgICAgICAgICAgIHwgIDEyMSArKysrLS0tLS0tLQogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICstCiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHkuaCAgICAgICAgICAgICAgICAgICB8ICAgIDkgKwogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCAgICAgICAgfCAgMjQxICsrKysrKysrKysrKysr
KysrKysrCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCAgICAgICAg
ICB8ICAgNzMgKysrKysrCiBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcCAgICAg
ICAgICAgICAgICB8ICAgIDMgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1l
bnQuY3BwICAgICAgICAgIHwgICAgNCArLQogMjAgZmlsZXMgY2hhbmdlZCwgNTIxIGluc2VydGlv
bnMoKyksIDExMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvU2VnbWVudGVkVmVjdG9yLmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmgKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiYmM1ODliLi4wMzVmODQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0wNy0wNSAgQW5kcmFzIEJlY3NpICA8
YWJlY3NpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ1NTUGFyc2VyIHNob3VsZCB1c2UgY3VzdG9t
ICJ2ZWN0b3ItbGlrZSIgY2xhc3MgZm9yIG1hbmFnaW5nIHByb3BlcnRpZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDE3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBTZXQgdGhlIHByaXZhdGUgYXR0cmlidXRlIGZvciBTZWdt
ZW50ZWRWZWN0b3IuaAorCiAyMDExLTA3LTA2ICBKdWFuIEMuIE1vbnRlbWF5b3IgIDxqbW9udEBh
cHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEIHJ1bm5pbmcgdGVzdCAyNjIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDVmN2RhZC4uNGZhMDEyMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM2Niw3ICszNjYsNyBAQAogCQk5NjlBMDcyMzBF
RDFDRTMzMDBGMUY2ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzIxMEVEMUNFMzMwMEYxRjY4MSAvKiBC
eXRlY29kZUdlbmVyYXRvci5oICovOyB9OwogCQk5NjlBMDcyQTBFRDFDRTY5MDBGMUY2ODEgLyog
TGFiZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2
OUEwNzI3MEVEMUNFNjkwMEYxRjY4MSAvKiBMYWJlbC5oICovOyB9OwogCQk5NjlBMDcyQjBFRDFD
RTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3MjgwRUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQu
aCAqLzsgfTsKLQkJOTY5QTA3MkMwRUQxQ0U2OTAwRjFGNjgxIC8qIFNlZ21lbnRlZFZlY3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3Mjkw
RUQxQ0U2OTAwRjFGNjgxIC8qIFNlZ21lbnRlZFZlY3Rvci5oICovOyB9OworCQk5NjlBMDcyQzBF
RDFDRTY5MDBGMUY2ODEgLyogU2VnbWVudGVkVmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDcyOTBFRDFDRTY5MDBGMUY2ODEgLyogU2Vn
bWVudGVkVmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTY5QTA3OTYwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDc5MDBFRDFEM0FF
MDBGMUY2ODEgLyogQ29kZUJsb2NrLmNwcCAqLzsgfTsKIAkJOTY5QTA3OTcwRUQxRDNBRTAwRjFG
NjgxIC8qIENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTY5QTA3OTEwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTk2OUEwNzk4MEVEMUQzQUUwMEYxRjY4
MSAvKiBFdmFsQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NjlBMDc5MjBFRDFEM0FFMDBGMUY2ODEgLyogRXZhbENvZGVDYWNoZS5oICov
OyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmNmY3M2YzZC4uZTAyNDNlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTQ1Myw2ICs0NTMsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hl
LmNwcAogICAgIGNzcy9DU1NQcm9wZXJ0eS5jcHAKKyAgICBjc3MvQ1NTUHJvcGVydHlDb250YWlu
ZXIuY3BwCiAgICAgY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwCiAgICAgY3NzL0NTU1Byb3Bl
cnR5U291cmNlRGF0YS5jcHAKICAgICBjc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDZhZjk5MWMuLmViMTdkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MyBAQAorMjAxMS0w
Ny0wNSAgQW5kcmFzIEJlY3NpICA8YWJlY3NpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ1NTUGFy
c2VyIHNob3VsZCB1c2UgY3VzdG9tICJ2ZWN0b3ItbGlrZSIgY2xhc3MgZm9yIG1hbmFnaW5nIHBy
b3BlcnRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IENTU1Byb3BlcnR5Q29udGFpbmVyIHdoaWNoIG9uIHJlbW92YWwgbWFya3MgZW50
cmllcyBhcyBlbXB0eQorICAgICAgICBhbmQgb25seSBzd2VlcHMgdGhlbSB3aGVuIHRoZSBpbnRl
cm5hbCBTZWdtZW50ZWRWZWN0b3IgZ3Jvd3MgdG9vIGJpZy4KKyAgICAgICAgQWxzbyB1c2UgYW4g
aW50ZXJuYWwgSGFzaE1hcCB0byBiZSBhYmxlIHRvIGVmZmljaWVudGx5IGZpbmQgZW50cmllcyBi
eSBJRAorICAgICAgICBhbmQgYXV0b21hdGljYWxseSBkaXNjYXJkIGR1cGxpY2F0ZSBwcm9wZXJ0
aWVzLgorICAgICAgICBUaGlzIGlzIGFsc28gbmVlZGVkIHRvIGJlIGFibGUgdG8gc2ltcGxpZnkg
YW5kIHNwZWVkIHVwIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLAorICAgICAgICB0byB1c2Ug
dGhpcyBjb250YWluZXIgaW5zdGVhZCBvZiBtYWludGFpbmluZyBpdHMgb3duIGZvcmsgb2YgaW5m
cmFzdHJ1Y3R1cmUKKyAgICAgICAgZm9yIG1hbmFnaW5nIHBhcnNlZCBwcm9wZXJ0aWVzLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9TZWdt
ZW50ZWRWZWN0b3IuaDogQWRkZWQgbWlzc2luZyBmb3J3YXJkaW5nIGhlYWRlci4KKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
Y3NzL0NTU0dyYW1tYXIueToKKyAgICAgICAgKiBjc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjphZGRQYXJzZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3MvQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpDU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjp+Q1NTUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRkUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpyb2xsYmFja0xhc3RQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6Y2xlYXJQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2U0VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGb250U3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRWYXJpYW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGb250V2VpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6Y3JlYXRlRm9udEZhY2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
Y3JlYXRlUGFnZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpzdGFydERlY2xh
cmF0aW9uc0Zvck1hcmdpbkJveCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmVuZERl
Y2xhcmF0aW9uc0Zvck1hcmdpbkJveCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNy
ZWF0ZUtleWZyYW1lUnVsZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpoYXNQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3MvQ1NTUHJv
cGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5OjpDU1NQcm9wZXJ0eSk6Cisg
ICAgICAgICogY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Q1NTUHJvcGVydHlDb250YWluZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnN3ZWVwKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpncm93SWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmludGVybmFsUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmludmFsaWRhdGVCeVBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjppbnZhbGlkYXRlQnlJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Zmlyc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6Omxhc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJvcGVydHlDb250YWluZXI6Omxhc3RCdXRPbmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHlDb250YWluZXI6Om9wZXJhdG9yW10pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlDb250YWluZXI6OmNvbnRhaW5zUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHlDb250YWluZXI6OnJlbW92ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5Q29udGFpbmVyOjphZGRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eUNvbnRhaW5lcjo6cm9sbGJhY2tMYXN0UHJvcGVydGllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6ZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGll
cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y2xlYXJQcm9wZXJ0
aWVzKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y291bnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6Omhhc0ZvbnRGYWNlT25seSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6c2V0Rm9udEZhY2VPbmx5KToKKyAgICAgICAg
KiBjc3MvU1ZHQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VTVkdWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGb250RmFjZUVsZW1lbnQ6OnJlYnVpbGRGb250RmFjZSk6CisKIDIw
MTEtMDctMDcgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAg
ICAgICAgTW92ZSByZW1haW5pbmcgZW51bXMgb3V0IG9mIFNWRypFbGVtZW50IGNsYXNzZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9TZWdtZW50ZWRW
ZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9TZWdtZW50ZWRW
ZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWEzOWE0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1NlZ21l
bnRlZFZlY3Rvci5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9TZWdtZW50
ZWRWZWN0b3JfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9TZWdtZW50ZWRWZWN0b3JfaAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1NlZ21lbnRlZFZlY3Rvci5oPgorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCAwYWM1YTVhLi42NTlhZDNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTk3Miw2ICs5NzIsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHlMb25naGFuZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHlTb3VyY2VEYXRhLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOWRhODE1MS4uOWE2YzVmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDkxLDYgKzQ5MSw3IEBACiAgICAgICAgICAgICAnY3NzL0NT
U1BhcnNlclZhbHVlcy5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCcs
CiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5LmgnLAorICAgICAgICAgICAgJ2Nzcy9DU1NQ
cm9wZXJ0eUNvbnRhaW5lci5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlTb3VyY2VE
YXRhLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NSZWZsZWN0VmFsdWUuaCcsCiAgICAgICAgICAg
ICAnY3NzL0NTU1JlZmxlY3Rpb25EaXJlY3Rpb24uaCcsCkBAIC0yMzMzLDYgKzIzMzQsNyBAQAog
ICAgICAgICAgICAgJ2Nzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmgnLAogICAgICAgICAgICAg
J2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQ
cm9wZXJ0eS5jcHAnLAorICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAn
LAogICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCcsCiAgICAgICAgICAg
ICAnY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3Bl
cnR5U291cmNlRGF0YS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA0NTUwNGIxLi42Yjc0ZjUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwpAQCAtNDEwLDYgKzQxMCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGNzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHAgXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmNw
cCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5LmNwcCBcCisgICAgY3NzL0NTU1Byb3BlcnR5Q29udGFp
bmVyLmNwcCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIFwKICAgICBjc3MvQ1NT
UHJvcGVydHlTb3VyY2VEYXRhLmNwcCBcCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAgXApA
QCAtMTM5OCw2ICsxMzk5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmggXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmggXAogICAgIGNzcy9DU1NQ
cm9wZXJ0eS5oIFwKKyAgICBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCBcCiAgICAgY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuaCBcCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1ZS5oIFwKICAgICBj
c3MvQ1NTUnVsZS5oIFwKQEAgLTE0MTIsNiArMTQxNCw3IEBAIEhFQURFUlMgKz0gXAogICAgIGNz
cy9DU1NTdHlsZVNoZWV0LmggXAogICAgIGNzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmggXAog
ICAgIGNzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIFwKKyAgICBjc3MvQ1NTVmFsdWUuaCBcCiAg
ICAgY3NzL0NTU1ZhbHVlTGlzdC5oIFwKICAgICBjc3MvRm9udEZhbWlseVZhbHVlLmggXAogICAg
IGNzcy9Gb250VmFsdWUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IDEzYjA3NTkuLjc1NWI0ZmIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zMjYxOCw2ICszMjYxOCwxNCBAQAogCQkJ
CT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTUHJv
cGVydHlDb250YWluZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxjc3NcQ1NTUHJvcGVydHlDb250YWluZXIuaCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1Byb3BlcnR5TG9uZ2hh
bmQuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2YmM1YzFjLi45NDBjMGIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00
MzEsNiArNDMxLDggQEAKIAkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNv
ci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QjFBRTc4MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nICovOyB9OwogCQkxQUIx
QUU3QjBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFBRTc5MEMwNTFGREUwMDEzOUY0
RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyAqLzsgfTsKIAkJMUFCMzNEQTUxMjU1MUUzMjAwMjQ0NTdB
IC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBQjMzREE0MTI1NTFFMzIwMDI0NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsg
Ki87IH07CisJCTFBQjQ0QTBDMTM2NzJDRkYwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5l
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI0
NEEwQjEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuY3BwICovOyB9Owor
CQkxQUI0NEEwRTEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjQ0QTBEMTM2NzJE
MjAwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQjdGQzY4MEE4QjkyRUMwMEQ5RDM3QiAv
KiBYUGF0aEV2YWx1YXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUI3RkM0NzBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuY3Bw
ICovOyB9OwogCQkxQUI3RkM2OTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdGQzQ4MEE4
QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5oICovOyB9OwogCQkxQUI3RkM2QjBBOEI5
MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdGQzRBMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0
aEV4cHJlc3Npb24uY3BwICovOyB9OwpAQCAtNjg0MSw2ICs2ODQzLDggQEAKIAkJMUFCMUFFNzgw
QzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSB6b29tSW5DdXJz
b3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIxQUU3OTBDMDUxRkRFMDAx
MzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSB6b29tT3V0Q3Vyc29yLnBuZzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCMzNEQTQxMjU1MUUzMjAwMjQ0NTdBIC8q
IElPS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSU9LaXQuZnJhbWV3b3JrOyBwYXRo
ID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVl
ID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxQUI0NEEwQjEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJv
cGVydHlDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q1NTUHJvcGVydHlDb250YWluZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QUI0NEEwRDEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUHJvcGVydHlDb250YWluZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0ZDNDcwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRo
RXZhbHVhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUGF0
aEV2YWx1YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjdGQzQ4MEE4
QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gWFBhdGhFdmFsdWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFCN0ZDNDkwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gWFBhdGhFdmFsdWF0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTkwODYsNiArMTkwOTAsOCBAQAogCQlGNTIzRDE4NDAyREU0MkU4MDE4NjM1
Q0EgLyogY3NzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQkxQUI0NEEwRDEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuaCAqLywK
KwkJCQkxQUI0NEEwQjEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuY3Bw
ICovLAogCQkJCTkzQ0E0QzlDMDlERjkzRkEwMERGODY3NyAvKiBtYWtldG9rZW5pemVyICovLAog
CQkJCUE4MEU2Q0RBMEExOTg5Q0EwMDdGQjhDNSAvKiBDb3VudGVyLmggKi8sCiAJCQkJOTMwNzA1
QzcwOUUwQzk1RjAwQjE3RkU0IC8qIENvdW50ZXIuaWRsICovLApAQCAtMjMwODgsNiArMjMwOTQs
NyBAQAogCQkJCTA4NjM5NTE2MTNCNUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguaCBp
biBIZWFkZXJzICovLAogCQkJCTQzMUEyRjlDMTNCNkYyQjAwMDc3OTFFNCAvKiBTVkdBbmltYXRl
ZE51bWJlck9wdGlvbmFsTnVtYmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUFCQjc4NzEzQjkw
NEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggaW4gSGVhZGVycyAqLywK
KwkJCQkxQUI0NEEwRTEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMjU4NTUsNiArMjU4NjIsNyBAQAogCQkJCTQzMUEzMDIxMTNCODlE
Q0MwMDc3OTFFNCAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDMxQTMwODgxM0I4Rjk3ODAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkQm9vbGVh
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0M0Y2RkQ5NjEzQkNEMEIxMDAyMjQwNTIgLyogU1ZH
QW5pbWF0ZWRJbnRlZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBQjQ0QTBDMTM2NzJDRkYw
MDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55CmluZGV4IDkwYjVlMTQuLjllM2ZhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueQpAQCAtMzIzLDkgKzMyMyw5IEBAIHdlYmtpdF92YWx1ZToKICAgICAgICAgQ1NTUGFy
c2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgaWYgKCQ0
KSB7CiAgICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IHAtPnNpbmtGbG9hdGluZ1ZhbHVlTGlz
dCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1fbnVtUGFy
c2VkUHJvcGVydGllczsKKyAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+
bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCk7CiAgICAgICAgICAgICBpZiAoIXAtPnBhcnNlVmFs
dWUocC0+bV9pZCwgcC0+bV9pbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNr
TGFzdFByb3BlcnRpZXMocC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gb2xkUGFyc2VkUHJvcGVy
dGllcyk7CisgICAgICAgICAgICAgICAgcC0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwLT5tX3Bh
cnNlZFByb3BlcnRpZXMuY291bnQoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOwogICAgICAgICAg
ICAgZGVsZXRlIHAtPm1fdmFsdWVMaXN0OwogICAgICAgICAgICAgcC0+bV92YWx1ZUxpc3QgPSAw
OwogICAgICAgICB9CkBAIC0xMjczLDEwICsxMjczLDEwIEBAIGRlY2xhcmF0aW9uOgogICAgICAg
ICBib29sIGlzUHJvcGVydHlQYXJzZWQgPSBmYWxzZTsKICAgICAgICAgaWYgKCQxICYmICQ0KSB7
CiAgICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IHAtPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgk
NCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1fbnVtUGFyc2Vk
UHJvcGVydGllczsKKyAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9w
YXJzZWRQcm9wZXJ0aWVzLmNvdW50KCk7CiAgICAgICAgICAgICAkJCA9IHAtPnBhcnNlVmFsdWUo
JDEsICQ1KTsKICAgICAgICAgICAgIGlmICghJCQpCi0gICAgICAgICAgICAgICAgcC0+cm9sbGJh
Y2tMYXN0UHJvcGVydGllcyhwLT5tX251bVBhcnNlZFByb3BlcnRpZXMgLSBvbGRQYXJzZWRQcm9w
ZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKHAtPm1f
cGFyc2VkUHJvcGVydGllcy5jb3VudCgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaXNQcm9wZXJ0eVBhcnNlZCA9IHRydWU7CiAgICAg
ICAgICAgICBkZWxldGUgcC0+bV92YWx1ZUxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAwMTdkYzY5Li5jN2FlYzJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5j
cHAKQEAgLTczLDcgKzczLDcgQEAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCwgY29uc3QgVmUKICAgICAvLyBGSVhN
RTogVGhpcyBhbGxvd3MgZHVwbGljYXRlIHByb3BlcnRpZXMuCiB9CiAKLUNTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnQs
IGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCAqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVz
KQorQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
KENTU1J1bGUqIHBhcmVudCwgQ1NTUHJvcGVydHlDb250YWluZXImIHByb3BlcnRpZXMpCiAgICAg
OiBDU1NTdHlsZURlY2xhcmF0aW9uKHBhcmVudCkKICAgICAsIG1fbm9kZSgwKQogICAgICwgbV9z
dHJpY3RQYXJzaW5nKCFwYXJlbnQgfHwgcGFyZW50LT51c2VTdHJpY3RQYXJzaW5nKCkpCkBAIC04
MSwxOSArODEsMjMgQEAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCwgY29uc3QgQ1MKICAgICAsIG1faXRlcmF0b3JD
b3VudCgwKQogI2VuZGlmCiB7CisgICAgdW5zaWduZWQgbnVtUHJvcGVydGllcyA9IHByb3BlcnRp
ZXMuY291bnQoKTsKKworICAgIGlmICghbnVtUHJvcGVydGllcykKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgbV9wcm9wZXJ0aWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtUHJvcGVydGllcyk7
CiAgICAgSGFzaE1hcDxpbnQsIGJvb2w+IGNhbmRpZGF0ZXM7Ci0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKLSAgICAgICAgY29uc3QgQ1NTUHJvcGVydHkgKnBy
b3BlcnR5ID0gcHJvcGVydGllc1tpXTsKLSAgICAgICAgQVNTRVJUKHByb3BlcnR5KTsKLSAgICAg
ICAgYm9vbCBpbXBvcnRhbnQgPSBwcm9wZXJ0eS0+aXNJbXBvcnRhbnQoKTsKLSAgICAgICAgaWYg
KGNhbmRpZGF0ZXMuY29udGFpbnMocHJvcGVydHktPmlkKCkpKSB7Ci0gICAgICAgICAgICBpZiAo
IWltcG9ydGFudCAmJiBjYW5kaWRhdGVzLmdldChwcm9wZXJ0eS0+aWQoKSkpCisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgeworICAgICAgICBjb25zdCBD
U1NQcm9wZXJ0eSYgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldOworICAgICAgICBib29sIGltcG9y
dGFudCA9IHByb3BlcnR5LmlzSW1wb3J0YW50KCk7CisgICAgICAgIGlmIChjYW5kaWRhdGVzLmNv
bnRhaW5zKHByb3BlcnR5LmlkKCkpKSB7CisgICAgICAgICAgICBpZiAoIWltcG9ydGFudCAmJiBj
YW5kaWRhdGVzLmdldChwcm9wZXJ0eS5pZCgpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIHJlbW92ZVByb3BlcnR5KHByb3BlcnR5LT5pZCgpLCBmYWxzZSk7CisgICAg
ICAgICAgICByZW1vdmVQcm9wZXJ0eShwcm9wZXJ0eS5pZCgpLCBmYWxzZSk7CiAgICAgICAgIH0K
LSAgICAgICAgbV9wcm9wZXJ0aWVzLmFwcGVuZCgqcHJvcGVydHkpOwotICAgICAgICBjYW5kaWRh
dGVzLnNldChwcm9wZXJ0eS0+aWQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgbV9wcm9wZXJ0aWVz
LmFwcGVuZChwcm9wZXJ0eSk7CisgICAgICAgIGNhbmRpZGF0ZXMuc2V0KHByb3BlcnR5LmlkKCks
IGltcG9ydGFudCk7CiAgICAgfQogfQogCkBAIC02MzksMTMgKzY0MywxOCBAQCB2b2lkIENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uOjpwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5
bGVEZWNsYXJhdGlvbgogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotdm9pZCBDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6YWRkUGFyc2VkUHJvcGVydGllcyhjb25zdCBDU1NQcm9w
ZXJ0eSogY29uc3QqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzKQordm9pZCBDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6YWRkUGFyc2VkUHJvcGVydGllcyhDU1NQcm9wZXJ0eUNvbnRh
aW5lciYgcHJvcGVydGllcykKIHsKICAgICBBU1NFUlQoIW1faXRlcmF0b3JDb3VudCk7CiAKKyAg
ICB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5jb3VudCgpOworCisgICAgaWYg
KCFudW1Qcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm47CisKICAgICBtX3Byb3BlcnRpZXMucmVz
ZXJ2ZUNhcGFjaXR5KG51bVByb3BlcnRpZXMpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
UHJvcGVydGllczsgKytpKQotICAgICAgICBhZGRQYXJzZWRQcm9wZXJ0eSgqcHJvcGVydGllc1tp
XSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkKKyAg
ICAgICAgYWRkUGFyc2VkUHJvcGVydHkocHJvcGVydGllc1tpXSk7CiAKICAgICAvLyBGSVhNRTog
VGhpcyBwcm9iYWJseSBzaG91bGQgaGF2ZSBhIGNhbGwgdG8gc2V0TmVlZHNTdHlsZVJlY2FsYygp
IGlmIHNvbWV0aGluZyBjaGFuZ2VkLiBXZSBtYXkgYWxzbyB3aXNoIHRvIGFkZAogICAgIC8vIGEg
bm90aWZ5Q2hhbmdlZCBhcmd1bWVudCB0byB0aGlzIGZ1bmN0aW9uIHRvIGZvbGxvdyB0aGUgbW9k
ZWwgb2Ygb3RoZXIgZnVuY3Rpb25zIGluIHRoaXMgY2xhc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IGVhOGFiM2YuLmI4MzgyOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5o
CkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNp
bmNsdWRlICJDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIgogI2luY2x1ZGUgIktVUkxIYXNoLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4K
QEAgLTY3LDkgKzY4LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihwYXJlbnRSdWxlKSk7CiAgICAgfQotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoQ1NT
UnVsZSogcGFyZW50UnVsZSwgY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0KiBwcm9wZXJ0aWVzLCBp
bnQgbnVtUHJvcGVydGllcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbj4gY3JlYXRlKENTU1J1bGUqIHBhcmVudFJ1bGUsIENTU1Byb3BlcnR5Q29udGFp
bmVyJiBwcm9wZXJ0aWVzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbihwYXJlbnRSdWxlLCBwcm9wZXJ0aWVzLCBudW1Qcm9wZXJ0
aWVzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24ocGFyZW50UnVsZSwgcHJvcGVydGllcykpOwogICAgIH0KICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gY3JlYXRlKGNvbnN0IFZlY3RvcjxDU1NQ
cm9wZXJ0eT4mIHByb3BlcnRpZXMpCiAgICAgewpAQCAtMTI0LDcgKzEyNSw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIEJlc2lkZXMgYWRkaW5nIHRoZSBwcm9wZXJ0aWVzLCB0aGlzIGFsc28gcmVtb3Zl
cyBhbnkgZXhpc3RpbmcgcHJvcGVydGllcyB3aXRoIHRoZXNlIElEcy4KICAgICAvLyBJdCBkb2Vz
IG5vIG5vdGlmaWNhdGlvbiBzaW5jZSBpdCdzIGNhbGxlZCBieSB0aGUgcGFyc2VyLgotICAgIHZv
aWQgYWRkUGFyc2VkUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eSogY29uc3QgKiwgaW50IG51
bVByb3BlcnRpZXMpOworICAgIHZvaWQgYWRkUGFyc2VkUHJvcGVydGllcyhDU1NQcm9wZXJ0eUNv
bnRhaW5lciYgcHJvcGVydGllcyk7CiAgICAgLy8gVGhpcyBkb2VzIG5vIGNoYW5nZSBub3RpZmlj
YXRpb25zIHNpbmNlIGl0J3Mgb25seSBjYWxsZWQgYnkgY3JlYXRlTWFya3VwLgogICAgIHZvaWQg
YWRkUGFyc2VkUHJvcGVydHkoY29uc3QgQ1NTUHJvcGVydHkmKTsKICAKQEAgLTE0OSw3ICsxNTAs
NyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
KCk7CiAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50UnVsZSwg
Y29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYpOwotICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKENTU1J1bGUqIHBhcmVudFJ1bGUsIGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCAqLCBpbnQg
bnVtUHJvcGVydGllcyk7CisgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSog
cGFyZW50UnVsZSwgQ1NTUHJvcGVydHlDb250YWluZXImIHByb3BlcnRpZXMpOwogCiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBtYWtlTXV0YWJsZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGFjZjc3NTIuLjQ3MmNhNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xNjUsMTQgKzE2NSwxMCBAQCBDU1NQYXJzZXI6OkNT
U1BhcnNlcihib29sIHN0cmljdFBhcnNpbmcpCiAgICAgLCBtX2lkKDApCiAgICAgLCBtX3N0eWxl
U2hlZXQoMCkKICAgICAsIG1fdmFsdWVMaXN0KDApCi0gICAgLCBtX3BhcnNlZFByb3BlcnRpZXMo
c3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHkqKj4oZmFzdE1hbGxvYygzMiAqIHNpemVvZihDU1NQcm9w
ZXJ0eSopKSkpCi0gICAgLCBtX251bVBhcnNlZFByb3BlcnRpZXMoMCkKLSAgICAsIG1fbWF4UGFy
c2VkUHJvcGVydGllcygzMikKICAgICAsIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdp
bkJveChJTlZBTElEX05VTV9QQVJTRURfUFJPUEVSVElFUykKICAgICAsIG1faW5QYXJzZVNob3J0
aGFuZCgwKQogICAgICwgbV9jdXJyZW50U2hvcnRoYW5kKDApCiAgICAgLCBtX2ltcGxpY2l0U2hv
cnRoYW5kKGZhbHNlKQotICAgICwgbV9oYXNGb250RmFjZU9ubHlWYWx1ZXMoZmFsc2UpCiAgICAg
LCBtX2hhZFN5bnRhY3RpY2FsbHlWYWxpZENTU1J1bGUoZmFsc2UpCiAgICAgLCBtX2RlZmF1bHRO
YW1lc3BhY2Uoc3RhckF0b20pCiAgICAgLCBtX2luU3R5bGVSdWxlT3JEZWNsYXJhdGlvbihmYWxz
ZSkKQEAgLTE5Niw5ICsxOTIsNiBAQCBDU1NQYXJzZXI6OkNTU1BhcnNlcihib29sIHN0cmljdFBh
cnNpbmcpCiAKIENTU1BhcnNlcjo6fkNTU1BhcnNlcigpCiB7Ci0gICAgY2xlYXJQcm9wZXJ0aWVz
KCk7Ci0gICAgZmFzdEZyZWUobV9wYXJzZWRQcm9wZXJ0aWVzKTsKLQogICAgIGRlbGV0ZSBtX3Zh
bHVlTGlzdDsKIAogICAgIGZhc3RGcmVlKG1fZGF0YSk7CkBAIC00NTksMTEgKzQ1MiwxMSBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVj
bGFyYXRpb24sIGludCBwcm9wZXJ0eQogICAgIG1fcnVsZSA9IDA7CiAKICAgICBib29sIG9rID0g
ZmFsc2U7Ci0gICAgaWYgKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKQotICAgICAgICBkZWxldGVG
b250RmFjZU9ubHlWYWx1ZXMoKTsKLSAgICBpZiAobV9udW1QYXJzZWRQcm9wZXJ0aWVzKSB7Cisg
ICAgaWYgKG1fcGFyc2VkUHJvcGVydGllcy5oYXNGb250RmFjZU9ubHkoKSkKKyAgICAgICAgbV9w
YXJzZWRQcm9wZXJ0aWVzLmRlbGV0ZUZvbnRGYWNlT25seVByb3BlcnRpZXMoKTsKKyAgICBpZiAo
bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkpIHsKICAgICAgICAgb2sgPSB0cnVlOwotICAgICAg
ICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMsIG1f
bnVtUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9w
ZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcyk7CiAgICAgICAgIGNsZWFyUHJvcGVydGllcygpOwog
ICAgIH0KIApAQCAtNDg1LDcgKzQ3OCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKFJH
QkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIHN0cmljdCkKICAgICBpZiAo
IXBhcnNlci5wYXJzZUNvbG9yKGR1bW15U3R5bGVEZWNsYXJhdGlvbi5nZXQoKSwgc3RyaW5nKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ1NTVmFsdWUqIHZhbHVlID0gcGFyc2VyLm1f
cGFyc2VkUHJvcGVydGllc1swXS0+dmFsdWUoKTsKKyAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJz
ZXIubV9wYXJzZWRQcm9wZXJ0aWVzLmZpcnN0KCkudmFsdWUoKTsKICAgICBpZiAodmFsdWUtPmNz
c1ZhbHVlVHlwZSgpICE9IENTU1ZhbHVlOjpDU1NfUFJJTUlUSVZFX1ZBTFVFKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTUwNiw3ICs0OTksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VD
b2xvcihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRpb24sIGNvbnN0IFN0cmlu
ZwogICAgIGNzc3l5cGFyc2UodGhpcyk7CiAgICAgbV9ydWxlID0gMDsKIAotICAgIHJldHVybiAo
bV9udW1QYXJzZWRQcm9wZXJ0aWVzICYmIG1fcGFyc2VkUHJvcGVydGllc1swXS0+bV9pZCA9PSBD
U1NQcm9wZXJ0eUNvbG9yKTsKKyAgICByZXR1cm4gKG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgp
ICYmIG1fcGFyc2VkUHJvcGVydGllcy5maXJzdCgpLmlkKCkgPT0gQ1NTUHJvcGVydHlDb2xvcik7
CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVN5c3RlbUNvbG9yKFJHQkEzMiYgY29sb3IsIGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC01NjAsMTEgKzU1Mywx
MiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiogZGVjbGFyYXRpb24sIGNvbnN0CiAgICAgbV9ydWxlID0gMDsKIAogICAgIGJvb2wg
b2sgPSBmYWxzZTsKLSAgICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpCi0gICAgICAgIGRl
bGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotICAgIGlmIChtX251bVBhcnNlZFByb3BlcnRpZXMp
IHsKKyAgICBpZiAobV9wYXJzZWRQcm9wZXJ0aWVzLmhhc0ZvbnRGYWNlT25seSgpKQorICAgICAg
ICBtX3BhcnNlZFByb3BlcnRpZXMuZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygpOworCisg
ICAgaWYgKG1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpKSB7CiAgICAgICAgIG9rID0gdHJ1ZTsK
LSAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0
aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFy
c2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMpOwogICAgICAgICBjbGVhclByb3BlcnRp
ZXMoKTsKICAgICB9CiAKQEAgLTYwOCwzMyArNjAyLDE4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZU1lZGlhUXVlcnkoTWVkaWFMaXN0KiBxdWVyaWVzLCBjb25zdCBTdHJpbmcmIHN0cmluZykKIAog
dm9pZCBDU1NQYXJzZXI6OmFkZFByb3BlcnR5KGludCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IHZhbHVlLCBib29sIGltcG9ydGFudCkKIHsKLSAgICBPd25QdHI8Q1NTUHJvcGVydHk+IHBy
b3AoYWRvcHRQdHIobmV3IENTU1Byb3BlcnR5KHByb3BJZCwgdmFsdWUsIGltcG9ydGFudCwgbV9j
dXJyZW50U2hvcnRoYW5kLCBtX2ltcGxpY2l0U2hvcnRoYW5kKSkpOwotICAgIGlmIChtX251bVBh
cnNlZFByb3BlcnRpZXMgPj0gbV9tYXhQYXJzZWRQcm9wZXJ0aWVzKSB7Ci0gICAgICAgIG1fbWF4
UGFyc2VkUHJvcGVydGllcyArPSAzMjsKLSAgICAgICAgaWYgKG1fbWF4UGFyc2VkUHJvcGVydGll
cyA+IFVJTlRfTUFYIC8gc2l6ZW9mKENTU1Byb3BlcnR5KikpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIG1fcGFyc2VkUHJvcGVydGllcyA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5Kio+
KGZhc3RSZWFsbG9jKG1fcGFyc2VkUHJvcGVydGllcywKLSAgICAgICAgICAgIG1fbWF4UGFyc2Vk
UHJvcGVydGllcyAqIHNpemVvZihDU1NQcm9wZXJ0eSopKSk7Ci0gICAgfQotICAgIG1fcGFyc2Vk
UHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMrK10gPSBwcm9wLmxlYWtQdHIoKTsKKyAg
ICBtX3BhcnNlZFByb3BlcnRpZXMuYWRkUHJvcGVydHkocHJvcElkLCB2YWx1ZSwgaW1wb3J0YW50
LCBtX2N1cnJlbnRTaG9ydGhhbmQsIG1faW1wbGljaXRTaG9ydGhhbmQpOwogfQogCiB2b2lkIENT
U1BhcnNlcjo6cm9sbGJhY2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKQogewotICAgIEFTU0VSVChu
dW0gPj0gMCk7Ci0gICAgQVNTRVJUKG1fbnVtUGFyc2VkUHJvcGVydGllcyA+PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obnVtKSk7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bTsgKytpKQot
ICAgICAgICBkZWxldGUgbV9wYXJzZWRQcm9wZXJ0aWVzWy0tbV9udW1QYXJzZWRQcm9wZXJ0aWVz
XTsKKyAgICBtX3BhcnNlZFByb3BlcnRpZXMucm9sbGJhY2tMYXN0UHJvcGVydGllcyhudW0pOwog
fQogCiB2b2lkIENTU1BhcnNlcjo6Y2xlYXJQcm9wZXJ0aWVzKCkKIHsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGRlbGV0
ZSBtX3BhcnNlZFByb3BlcnRpZXNbaV07Ci0gICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzID0gMDsK
KyAgICBtX3BhcnNlZFByb3BlcnRpZXMuY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgbV9udW1QYXJz
ZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJ
RVM7Ci0gICAgbV9oYXNGb250RmFjZU9ubHlWYWx1ZXMgPSBmYWxzZTsKIH0KICAgICAKIHZvaWQg
Q1NTUGFyc2VyOjpzZXRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCkBAIC05
NDQsNyArOTIzLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9v
bCBpbXBvcnRhbnQpCiAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIHByb3BJZCk7
CiAgICAgICAgIGlmIChudW0gIT0gMSB8fCAhcGFyc2VWYWx1ZShDU1NQcm9wZXJ0eU92ZXJmbG93
WCwgaW1wb3J0YW50KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgQ1NTVmFs
dWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcyAtIDFd
LT52YWx1ZSgpOworICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMu
bGFzdCgpLnZhbHVlKCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5T3ZlcmZsb3dZ
LCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTA0
MSw3ICsxMDIwLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9v
bCBpbXBvcnRhbnQpCiAgICAgICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQ
cm9wZXJ0eUJvcmRlclNwYWNpbmcpOwogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3Bl
cnRpZXNbMF0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2Vk
UHJvcGVydGllcy0xXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1f
cGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5
KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KQEAgLTE3MDAsNyArMTY3OSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgU2hvcnRoYW5k
U2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSk7CiAgICAg
ICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBt
X3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTFdLT52YWx1ZSgpOworICAg
ICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1
ZSgpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1sxXSwgdmFsdWUsIGltcG9y
dGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjQ2Nyw3ICsy
NDQ2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyhpbnQgcHJvcElkLCBjb25zdCBp
bnQgKnByb3BlcnRpZXMsICBib29sIGltcG9ydGFudCkKICAgICAgICAgY2FzZSAxOiB7CiAgICAg
ICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSAqdmFsdWUgPSBt
X3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTFdLT52YWx1ZSgpOworICAg
ICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1
ZSgpOwogICAgICAgICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3Bl
cnR5SW1wbGljaXQpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1sxXSwgdmFs
dWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzJdLCB2
YWx1ZSwgaW1wb3J0YW50KTsKQEAgLTI0NzcsMTcgKzI0NTYsMTcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlNFZhbHVlcyhpbnQgcHJvcElkLCBjb25zdCBpbnQgKnByb3BlcnRpZXMsICBib29sIGlt
cG9ydGFudCkKICAgICAgICAgY2FzZSAyOiB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUo
cHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBp
bXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENT
U1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMt
Ml0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3Bl
cnRpZXMubGFzdEJ1dE9uZSgpLnZhbHVlKCk7CiAgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGlt
cGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBsaWNpdCk7CiAgICAgICAgICAgICBhZGRQcm9w
ZXJ0eShwcm9wZXJ0aWVzWzJdLCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIHZhbHVl
ID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsK
KyAgICAgICAgICAgIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3RCdXRPbmUoKS52YWx1
ZSgpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1szXSwgdmFsdWUsIGltcG9y
dGFudCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIDM6IHsK
ICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8
ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJv
cGVydGllc1syXSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBDU1NWYWx1ZSAqdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJz
ZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0g
bV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3RCdXRPbmUoKS52YWx1ZSgpOwogICAgICAgICAgICAgSW1w
bGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQpOwogICAgICAg
ICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1szXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTM4NTEsNyArMzgzMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZUZvbnRTdHlsZShib29sIGltcG9ydGFudCkKICAgICB9CiAKICAgICBpZiAodmFsdWVzICYmIHZh
bHVlcy0+bGVuZ3RoKCkpIHsKLSAgICAgICAgbV9oYXNGb250RmFjZU9ubHlWYWx1ZXMgPSB0cnVl
OworICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMuc2V0Rm9udEZhY2VPbmx5KCk7CiAgICAgICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFN0eWxlLCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBv
cnRhbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zODk4LDcgKzM4NzcsNyBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VGb250VmFyaWFudChib29sIGltcG9ydGFudCkKICAgICB9
CiAKICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy0+bGVuZ3RoKCkpIHsKLSAgICAgICAgbV9oYXNG
b250RmFjZU9ubHlWYWx1ZXMgPSB0cnVlOworICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMuc2V0
Rm9udEZhY2VPbmx5KCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlh
bnQsIHZhbHVlcy5yZWxlYXNlKCksIGltcG9ydGFudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTM5NTEsNyArMzkzMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnRXZWln
aHQoYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogCiAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMtPmxl
bmd0aCgpKSB7Ci0gICAgICAgIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzID0gdHJ1ZTsKKyAgICAg
ICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnNldEZvbnRGYWNlT25seSgpOwogICAgICAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIHZhbHVlcy5yZWxlYXNlKCksIGltcG9ydGFudCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTY0NDYsOSArNjQyNSw5IEBAIENTU1J1
bGUqIENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+ID4qIHNlbGVjdG9yCiAgICAgICAgIG1fYWxsb3dJbXBvcnRSdWxlcyA9IG1fYWxsb3dO
YW1lc3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxzZTsKICAgICAgICAgUmVmUHRyPENTU1N0eWxlUnVs
ZT4gcnVsZSA9IENTU1N0eWxlUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCwgbV9sYXN0U2VsZWN0
b3JMaW5lTnVtYmVyKTsKICAgICAgICAgcnVsZS0+YWRvcHRTZWxlY3RvclZlY3Rvcigqc2VsZWN0
b3JzKTsKLSAgICAgICAgaWYgKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKQotICAgICAgICAgICAg
ZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0gICAgICAgIHJ1bGUtPnNldERlY2xhcmF0aW9u
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQ
cm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpKTsKKyAgICAgICAgaWYgKG1fcGFyc2Vk
UHJvcGVydGllcy5oYXNGb250RmFjZU9ubHkoKSkKKyAgICAgICAgICAgIG1fcGFyc2VkUHJvcGVy
dGllcy5kZWxldGVGb250RmFjZU9ubHlQcm9wZXJ0aWVzKCk7CisgICAgICAgIHJ1bGUtPnNldERl
Y2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwg
bV9wYXJzZWRQcm9wZXJ0aWVzKSk7CiAgICAgICAgIHJlc3VsdCA9IHJ1bGUuZ2V0KCk7CiAgICAg
ICAgIG1fcGFyc2VkU3R5bGVPYmplY3RzLmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CiAgICAgICAg
IGlmIChtX3J1bGVSYW5nZU1hcCkgewpAQCAtNjQ3MCwxNCArNjQ0OSwxNSBAQCBDU1NSdWxlKiBD
U1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9y
PiA+KiBzZWxlY3RvcgogQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUoKQog
ewogICAgIG1fYWxsb3dJbXBvcnRSdWxlcyA9IG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMg
PSBmYWxzZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9udW1QYXJzZWRQcm9wZXJ0
aWVzOyArK2kpIHsKLSAgICAgICAgQ1NTUHJvcGVydHkqIHByb3BlcnR5ID0gbV9wYXJzZWRQcm9w
ZXJ0aWVzW2ldOwotICAgICAgICBpbnQgaWQgPSBwcm9wZXJ0eS0+aWQoKTsKLSAgICAgICAgaWYg
KChpZCA9PSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQgfHwgaWQgPT0gQ1NTUHJvcGVydHlGb250U3R5
bGUgfHwgaWQgPT0gQ1NTUHJvcGVydHlGb250VmFyaWFudCkgJiYgcHJvcGVydHktPnZhbHVlKCkt
PmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1
ZSA9IHByb3BlcnR5LT5tX3ZhbHVlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHByb3BlcnR5LT5t
X3ZhbHVlID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4ocHJvcGVydHktPnZhbHVlKCkpLT5hcHBlbmQo
dmFsdWUucmVsZWFzZSgpKTsKLSAgICAgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NQcm9wZXJ0eUZv
bnRGYW1pbHkgJiYgKCFwcm9wZXJ0eS0+dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSB8fCBzdGF0aWNf
Y2FzdDxDU1NWYWx1ZUxpc3QqPihwcm9wZXJ0eS0+dmFsdWUoKSktPmxlbmd0aCgpICE9IDEpKSB7
CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50
KCk7ICsraSkgeworICAgICAgICBDU1NQcm9wZXJ0eSYgcHJvcGVydHkgPSBtX3BhcnNlZFByb3Bl
cnRpZXNbaV07CisgICAgICAgIGludCBpZCA9IHByb3BlcnR5LmlkKCk7CisgICAgICAgIGlmICgo
aWQgPT0gQ1NTUHJvcGVydHlGb250V2VpZ2h0IHx8IGlkID09IENTU1Byb3BlcnR5Rm9udFN0eWxl
IHx8IGlkID09IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQpICYmIHByb3BlcnR5LnZhbHVlKCktPmlz
UHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9
IHByb3BlcnR5Lm1fdmFsdWUucmVsZWFzZSgpOworICAgICAgICAgICAgcHJvcGVydHkubV92YWx1
ZSA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHByb3BlcnR5LnZhbHVlKCkpLT5hcHBlbmQodmFsdWUu
cmVsZWFzZSgpKTsKKyAgICAgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NQcm9wZXJ0eUZvbnRGYW1p
bHkgJiYgKCFwcm9wZXJ0eS52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpIHx8IHN0YXRpY19jYXN0PENT
U1ZhbHVlTGlzdCo+KHByb3BlcnR5LnZhbHVlKCkpLT5sZW5ndGgoKSAhPSAxKSkgewogICAgICAg
ICAgICAgLy8gVW5saWtlIGZvbnQtZmFtaWx5IHByb3BlcnR5LCBmb250LWZhbWlseSBkZXNjcmlw
dG9yIGluIEBmb250LWZhY2UgcnVsZSAKICAgICAgICAgICAgIC8vIGhhcyB0byBiZSBhIHZhbHVl
IGxpc3Qgd2l0aCBleGFjdGx5IG9uZSBmYW1pbHkgbmFtZS4gSXQgY2Fubm90IGhhdmUgYQogICAg
ICAgICAgICAgLy8gaGF2ZSAnaW5pdGlhbCcgdmFsdWUgYW5kIGNhbm5vdCAnaW5oZXJpdCcgZnJv
bSBwYXJlbnQuCkBAIC02NDg2LDggKzY0NjYsOSBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0
ZUZvbnRGYWNlUnVsZSgpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0K
KwogICAgIFJlZlB0cjxDU1NGb250RmFjZVJ1bGU+IHJ1bGUgPSBDU1NGb250RmFjZVJ1bGU6OmNy
ZWF0ZShtX3N0eWxlU2hlZXQpOwotICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLCBt
X251bVBhcnNlZFByb3BlcnRpZXMpKTsKKyAgICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVydGll
cykpOwogICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIENTU0ZvbnRGYWNlUnVsZSogcmVzdWx0
ID0gcnVsZS5nZXQoKTsKICAgICBtX3BhcnNlZFN0eWxlT2JqZWN0cy5hcHBlbmQocnVsZS5yZWxl
YXNlKCkpOwpAQCAtNjU2MSw3ICs2NTQyLDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVQ
YWdlUnVsZShQYXNzT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBwYWdlU2VsZWN0b3IpCiAgICAg
ICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gc2VsZWN0b3JWZWN0b3I7CiAg
ICAgICAgIHNlbGVjdG9yVmVjdG9yLmFwcGVuZChwYWdlU2VsZWN0b3IpOwogICAgICAgICBydWxl
LT5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yKTsKLSAgICAgICAgcnVsZS0+c2V0
RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgp
LCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGllcykpOworICAgICAgICBy
dWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1
bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVydGllcykpOwogICAgICAgICBwYWdlUnVsZSA9IHJ1bGUu
Z2V0KCk7CiAgICAgICAgIG1fcGFyc2VkU3R5bGVPYmplY3RzLmFwcGVuZChydWxlLnJlbGVhc2Uo
KSk7CiAgICAgfQpAQCAtNjU4MiwzNCArNjU2MywxNiBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNy
ZWF0ZU1hcmdpbkF0UnVsZShDU1NTZWxlY3Rvcjo6TWFyZ2luQm94VHlwZSAvKiBtYXJnaW5Cb3gg
KgogCiB2b2lkIENTU1BhcnNlcjo6c3RhcnREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKQogewot
ICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCA9IG1fbnVtUGFyc2VkUHJv
cGVydGllczsKKyAgICBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3ggPSBtX3Bh
cnNlZFByb3BlcnRpZXMuY291bnQoKTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OmVuZERlY2xhcmF0
aW9uc0Zvck1hcmdpbkJveCgpCiB7CiAgICAgQVNTRVJUKG1fbnVtUGFyc2VkUHJvcGVydGllc0Jl
Zm9yZU1hcmdpbkJveCAhPSBJTlZBTElEX05VTV9QQVJTRURfUFJPUEVSVElFUyk7Ci0gICAgcm9s
bGJhY2tMYXN0UHJvcGVydGllcyhtX251bVBhcnNlZFByb3BlcnRpZXMgLSBtX251bVBhcnNlZFBy
b3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3gpOworICAgIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMobV9w
YXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkgLSBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJn
aW5Cb3gpOwogICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCA9IElOVkFM
SURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTOwogfQogCi12b2lkIENTU1BhcnNlcjo6ZGVsZXRlRm9u
dEZhY2VPbmx5VmFsdWVzKCkKLXsKLSAgICBBU1NFUlQobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMp
OwotICAgIGludCBkZWxldGVkUHJvcGVydGllcyA9IDA7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzOyArK2kpIHsKLSAgICAgICAgQ1NTUHJvcGVy
dHkqIHByb3BlcnR5ID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwotICAgICAgICBpbnQgaWQgPSBw
cm9wZXJ0eS0+aWQoKTsKLSAgICAgICAgaWYgKChpZCA9PSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQg
fHwgaWQgPT0gQ1NTUHJvcGVydHlGb250U3R5bGUgfHwgaWQgPT0gQ1NTUHJvcGVydHlGb250VmFy
aWFudCkgJiYgcHJvcGVydHktPnZhbHVlKCktPmlzVmFsdWVMaXN0KCkpIHsKLSAgICAgICAgICAg
IGRlbGV0ZSBwcm9wZXJ0eTsKLSAgICAgICAgICAgIGRlbGV0ZWRQcm9wZXJ0aWVzKys7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoZGVsZXRlZFByb3BlcnRpZXMpCi0gICAgICAgICAgICBtX3BhcnNlZFBy
b3BlcnRpZXNbaSAtIGRlbGV0ZWRQcm9wZXJ0aWVzXSA9IG1fcGFyc2VkUHJvcGVydGllc1tpXTsK
LSAgICB9Ci0KLSAgICBtX251bVBhcnNlZFByb3BlcnRpZXMgLT0gZGVsZXRlZFByb3BlcnRpZXM7
Ci19Ci0KIFdlYktpdENTU0tleWZyYW1lUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZVJ1
bGUoQ1NTUGFyc2VyVmFsdWVMaXN0KiBrZXlzKQogewogICAgIC8vIENyZWF0ZSBhIGtleSBzdHJp
bmcgZnJvbSB0aGUgcGFzc2VkIGtleXMKQEAgLTY2MjQsNyArNjU4Nyw3IEBAIFdlYktpdENTU0tl
eWZyYW1lUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZVJ1bGUoQ1NTUGFyc2VyVmFsdWVM
aXN0KiBrZXlzKQogCiAgICAgUmVmUHRyPFdlYktpdENTU0tleWZyYW1lUnVsZT4ga2V5ZnJhbWUg
PSBXZWJLaXRDU1NLZXlmcmFtZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQpOwogICAgIGtleWZy
YW1lLT5zZXRLZXlUZXh0KGtleVN0cmluZyk7Ci0gICAga2V5ZnJhbWUtPnNldERlY2xhcmF0aW9u
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoMCwgbV9wYXJzZWRQcm9wZXJ0aWVz
LCBtX251bVBhcnNlZFByb3BlcnRpZXMpKTsKKyAgICBrZXlmcmFtZS0+c2V0RGVjbGFyYXRpb24o
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgwLCBtX3BhcnNlZFByb3BlcnRpZXMp
KTsKIAogICAgIGNsZWFyUHJvcGVydGllcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXgg
YzE3NWNhYi4uZmJiOWIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtMjUsNiArMjUsNyBA
QAogCiAjaW5jbHVkZSAiQ1NTR3JhZGllbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlclZh
bHVlcy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiQ1NT
UHJvcGVydHlTb3VyY2VEYXRhLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNpbmNsdWRl
ICJDb2xvci5oIgpAQCAtNzUsNyArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgdm9pZCBhZGRQcm9wZXJ0eShpbnQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiwgYm9v
bCBpbXBvcnRhbnQpOwogICAgICAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51
bSk7Ci0gICAgICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFy
c2VkUHJvcGVydGllcyA+IDA7IH0KKyAgICAgICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkgPiAwOyB9CiAKICAgICAgICAgYm9v
bCBwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKICAgICAgICAgYm9vbCBw
YXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMsIGludCBudW1Q
cm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7CkBAIC0yNDIsMTggKzI0MywxNSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxDU1NSdWxlPiBtX2tleWZyYW1lOwogICAgICAg
ICBPd25QdHI8TWVkaWFRdWVyeT4gbV9tZWRpYVF1ZXJ5OwogICAgICAgICBDU1NQYXJzZXJWYWx1
ZUxpc3QqIG1fdmFsdWVMaXN0OwotICAgICAgICBDU1NQcm9wZXJ0eSoqIG1fcGFyc2VkUHJvcGVy
dGllczsKKyAgICAgICAgQ1NTUHJvcGVydHlDb250YWluZXIgbV9wYXJzZWRQcm9wZXJ0aWVzOwog
ICAgICAgICBDU1NTZWxlY3Rvckxpc3QqIG1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3RvcjsK
ICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGU+IG1fcHJpbWl0aXZlVmFsdWVD
YWNoZTsKLSAgICAgICAgdW5zaWduZWQgbV9udW1QYXJzZWRQcm9wZXJ0aWVzOwotICAgICAgICB1
bnNpZ25lZCBtX21heFBhcnNlZFByb3BlcnRpZXM7CiAgICAgICAgIHVuc2lnbmVkIG1fbnVtUGFy
c2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveDsKIAogICAgICAgICBpbnQgbV9pblBhcnNlU2hv
cnRoYW5kOwogICAgICAgICBpbnQgbV9jdXJyZW50U2hvcnRoYW5kOwogICAgICAgICBib29sIG1f
aW1wbGljaXRTaG9ydGhhbmQ7CiAKLSAgICAgICAgYm9vbCBtX2hhc0ZvbnRGYWNlT25seVZhbHVl
czsKICAgICAgICAgYm9vbCBtX2hhZFN5bnRhY3RpY2FsbHlWYWxpZENTU1J1bGU7CiAKICAgICAg
ICAgQXRvbWljU3RyaW5nIG1fZGVmYXVsdE5hbWVzcGFjZTsKQEAgLTI5MSw4ICsyODksNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBjaGVja0Zvck9ycGhhbmVkVW5pdHMo
KTsKIAotICAgICAgICB2b2lkIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotCiAgICAgICAg
IGJvb2wgaXNHZW5lcmF0ZWRJbWFnZVZhbHVlKENTU1BhcnNlclZhbHVlKikgY29uc3Q7CiAgICAg
ICAgIGJvb2wgcGFyc2VHZW5lcmF0ZWRJbWFnZShSZWZQdHI8Q1NTVmFsdWU+Jik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5LmgKaW5kZXggNGE0NmZjMi4uNTZlYTM0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5LmgKQEAgLTMyLDYgKzMyLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IENTU1Byb3BlcnR5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAg
ICBDU1NQcm9wZXJ0eSgpCisgICAgICAgIDogbV9pZCgwKQorICAgICAgICAsIG1fc2hvcnRoYW5k
SUQoMCkKKyAgICAgICAgLCBtX2ltcG9ydGFudChmYWxzZSkKKyAgICAgICAgLCBtX2ltcGxpY2l0
KGZhbHNlKQorICAgICAgICAsIG1fdmFsdWUoMCkKKyAgICB7CisgICAgfQorCiAgICAgQ1NTUHJv
cGVydHkoaW50IHByb3BJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0
YW50ID0gZmFsc2UsIGludCBzaG9ydGhhbmRJRCA9IDAsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSkK
ICAgICAgICAgOiBtX2lkKHByb3BJRCkKICAgICAgICAgLCBtX3Nob3J0aGFuZElEKHNob3J0aGFu
ZElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAwMmYzZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAKQEAgLTAsMCArMSwy
NDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDks
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdlYmtpdC5vcmc+LCBVbml2ZXJzaXR5IG9mIFN6ZWdl
ZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIK
KworI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdURjsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Q1NTUHJvcGVy
dHlDb250YWluZXIoKQorICAgIDogbV9udW1WYWxpZFByb3BlcnRpZXMoMCkKKyAgICAsIG1fdXNl
ZFNpemUoMCkKKyAgICAsIG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyhmYWxzZSkKK3sKK30K
Kwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6c3dlZXAoKQoreworICAgIGlmIChtX251bVZh
bGlkUHJvcGVydGllcyA9PSBtX3VzZWRTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNp
Z25lZCBkZWxldGVkUHJvcGVydGllcyA9IDA7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV91c2VkU2l6ZTsgKytpKSB7CisgICAgICAgIGlmICghbV9wcm9wZXJ0aWVzW2ldLmlkKCkp
CisgICAgICAgICAgICArK2RlbGV0ZWRQcm9wZXJ0aWVzOworICAgICAgICBlbHNlIGlmIChkZWxl
dGVkUHJvcGVydGllcykgeworICAgICAgICAgICAgbV9pZFRvUG9zaXRpb25NYXAuc2V0KG1fcHJv
cGVydGllc1tpXS5pZCgpLCBpIC0gZGVsZXRlZFByb3BlcnRpZXMpOworICAgICAgICAgICAgbV9w
cm9wZXJ0aWVzW2kgLSBkZWxldGVkUHJvcGVydGllc10gPSBtX3Byb3BlcnRpZXNbaV07CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBtX3VzZWRTaXplIC09IGRlbGV0ZWRQcm9wZXJ0aWVzOworCisg
ICAgaWYgKG1faWRUb1Bvc2l0aW9uTWFwLnNpemUoKSA+IHN0YXRpY19jYXN0PGludD4obV9wcm9w
ZXJ0aWVzLnNpemUoKSArIGtHcm93RmFjdG9yKSkgeworICAgICAgICBtX2lkVG9Qb3NpdGlvbk1h
cC5jbGVhcigpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3VzZWRTaXpl
OyArK2kpCisgICAgICAgICAgICBtX2lkVG9Qb3NpdGlvbk1hcC5hZGQobV9wcm9wZXJ0aWVzW2ld
LmlkKCksIGkpOworICAgIH0KKworICAgIEFTU0VSVChtX251bVZhbGlkUHJvcGVydGllcyA9PSBt
X3VzZWRTaXplKTsKK30KKworaW5saW5lIHZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6Omdyb3dJ
Zk5lZWRlZCgpCit7CisgICAgaWYgKG1fdXNlZFNpemUgPiBtX3Byb3BlcnRpZXMuc2l6ZSgpKQor
ICAgICAgICBzd2VlcCgpOworCisgICAgaWYgKG1fdXNlZFNpemUgPT0gbV9wcm9wZXJ0aWVzLnNp
emUoKSkKKyAgICAgICAgbV9wcm9wZXJ0aWVzLmFsbG9jKCk7Cit9CisKK2lubGluZSB1bnNpZ25l
ZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW50ZXJuYWxQb3NpdGlvbihpbnQgcHJvcGVydHlJRCkK
K3sKKyAgICBBU1NFUlQocHJvcGVydHlJRCk7CisKKyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IG1f
aWRUb1Bvc2l0aW9uTWFwLmdldChwcm9wZXJ0eUlEKTsKKworICAgIGlmIChwb3NpdGlvbiA9PSBI
YXNoVHJhaXRzPHVuc2lnbmVkPjo6ZW1wdHlWYWx1ZSgpKQorICAgICAgICByZXR1cm4gSGFzaFRy
YWl0czx1bnNpZ25lZD46OmVtcHR5VmFsdWUoKTsKKworICAgIEFTU0VSVChwb3NpdGlvbiA8IG1f
dXNlZFNpemUpOworCisgICAgaWYgKCFtX3Byb3BlcnRpZXNbcG9zaXRpb25dLmlkKCkpCisgICAg
ICAgIHJldHVybiBIYXNoVHJhaXRzPHVuc2lnbmVkPjo6ZW1wdHlWYWx1ZSgpOworCisgICAgcmV0
dXJuIHBvc2l0aW9uOworfQorCitpbmxpbmUgdm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aW52
YWxpZGF0ZUJ5UG9zaXRpb24odW5zaWduZWQgcG9zaXRpb24pCit7CisgICAgQVNTRVJUKHBvc2l0
aW9uID49IG1fdXNlZFNpemUpOworCisgICAgLS1tX251bVZhbGlkUHJvcGVydGllczsKKworICAg
IG1faWRUb1Bvc2l0aW9uTWFwLnNldChtX3Byb3BlcnRpZXNbcG9zaXRpb25dLmlkKCksIEhhc2hU
cmFpdHM8dW5zaWduZWQ+OjplbXB0eVZhbHVlKCkpOworICAgIG1fcHJvcGVydGllc1twb3NpdGlv
bl0ubV9pZCA9IDA7Cit9CisKK2lubGluZSB2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjppbnZh
bGlkYXRlQnlJZChpbnQgcHJvcGVydHlJRCkKK3sKKyAgICBBU1NFUlQocHJvcGVydHlJRCk7CisK
KyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGludGVybmFsUG9zaXRpb24ocHJvcGVydHlJRCk7CisK
KyAgICBpZiAocG9zaXRpb24gPT0gSGFzaFRyYWl0czx1bnNpZ25lZD46OmVtcHR5VmFsdWUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaW52YWxpZGF0ZUJ5UG9zaXRpb24ocG9zaXRpb24pOwor
fQorCitjb25zdCBDU1NQcm9wZXJ0eSYgQ1NTUHJvcGVydHlDb250YWluZXI6OmZpcnN0KCkKK3sK
KyAgICBBU1NFUlQoIW1fcHJvcGVydGllcy5pc0VtcHR5KCkgJiYgbV9udW1WYWxpZFByb3BlcnRp
ZXMpOworCisgICAgaWYgKCFtX3Byb3BlcnRpZXNbMF0uaWQoKSkKKyAgICAgICAgc3dlZXAoKTsK
KworICAgIEFTU0VSVChtX3Byb3BlcnRpZXNbMF0uaWQoKSk7CisKKyAgICByZXR1cm4gbV9wcm9w
ZXJ0aWVzWzBdOworfQorCitjb25zdCBDU1NQcm9wZXJ0eSYgQ1NTUHJvcGVydHlDb250YWluZXI6
Omxhc3QoKQoreworICAgIEFTU0VSVCghbV9wcm9wZXJ0aWVzLmlzRW1wdHkoKSAmJiBtX251bVZh
bGlkUHJvcGVydGllcyk7CisKKyAgICBpZiAoIW1fcHJvcGVydGllc1ttX3VzZWRTaXplIC0gMV0u
aWQoKSkKKyAgICAgICAgc3dlZXAoKTsKKworICAgIEFTU0VSVChtX3VzZWRTaXplICYmIG1fcHJv
cGVydGllc1ttX3VzZWRTaXplIC0gMV0uaWQoKSk7CisKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVz
W21fdXNlZFNpemUgLSAxXTsKK30KKworY29uc3QgQ1NTUHJvcGVydHkmIENTU1Byb3BlcnR5Q29u
dGFpbmVyOjpsYXN0QnV0T25lKCkKK3sKKyAgICBBU1NFUlQoIW1fcHJvcGVydGllcy5pc0VtcHR5
KCkgJiYgbV9udW1WYWxpZFByb3BlcnRpZXMgPj0gMik7CisKKyAgICBpZiAoIW1fcHJvcGVydGll
c1ttX3VzZWRTaXplIC0gMV0uaWQoKSB8fCAhbV9wcm9wZXJ0aWVzW21fdXNlZFNpemUgLSAyXS5p
ZCgpKQorICAgICAgICBzd2VlcCgpOworCisgICAgQVNTRVJUKG1fdXNlZFNpemUgPj0gMiAmJiBt
X3Byb3BlcnRpZXNbbV91c2VkU2l6ZSAtIDJdLmlkKCkpOworCisgICAgcmV0dXJuIG1fcHJvcGVy
dGllc1ttX3VzZWRTaXplIC0gMl07Cit9CisKK0NTU1Byb3BlcnR5JiBDU1NQcm9wZXJ0eUNvbnRh
aW5lcjo6b3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCit7CisgICAgc3dlZXAoKTsKKyAgICBBU1NF
UlQoaW5kZXggPCBtX3VzZWRTaXplKTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzW2luZGV4XTsK
K30KKworYm9vbCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y29udGFpbnNQcm9wZXJ0eShpbnQgcHJv
cGVydHlJRCkKK3sKKyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGludGVybmFsUG9zaXRpb24ocHJv
cGVydHlJRCk7CisKKyAgICByZXR1cm4gcG9zaXRpb24gIT0gSGFzaFRyYWl0czx1bnNpZ25lZD46
OmVtcHR5VmFsdWUoKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3ZlUHJv
cGVydHkoaW50IHByb3BlcnR5SUQpCit7CisgICAgaW52YWxpZGF0ZUJ5SWQocHJvcGVydHlJRCk7
Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OnJlbW92ZVByb3BlcnRpZXMoY29uc3Qg
aW50KiBpZExpc3QsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgIGludmFsaWRhdGVCeUlkKGlkTGlzdFtpXSk7Cit9
CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OmFkZFByb3BlcnR5KGludCBwcm9wZXJ0eUlE
LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGludCBzaG9ydGhh
bmRJRCwgYm9vbCBpbXBsaWNpdCkKK3sKKyAgICBncm93SWZOZWVkZWQoKTsKKworICAgIHVuc2ln
bmVkIG9sZFBvc2l0aW9uID0gaW50ZXJuYWxQb3NpdGlvbihwcm9wZXJ0eUlEKTsKKworICAgIGlm
IChvbGRQb3NpdGlvbiAhPSBIYXNoVHJhaXRzPHVuc2lnbmVkPjo6ZW1wdHlWYWx1ZSgpKSB7Cisg
ICAgICAgIGlmIChtX3Byb3BlcnRpZXNbb2xkUG9zaXRpb25dLmlkKCkgJiYgbV9wcm9wZXJ0aWVz
W29sZFBvc2l0aW9uXS5pc0ltcG9ydGFudCgpICYmICFpbXBvcnRhbnQpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgaW52YWxpZGF0ZUJ5UG9zaXRpb24ob2xkUG9zaXRpb24pOworICAg
IH0KKworICAgIG1fcHJvcGVydGllc1ttX3VzZWRTaXplXSA9IENTU1Byb3BlcnR5KHByb3BlcnR5
SUQsIHZhbHVlLCBpbXBvcnRhbnQsIHNob3J0aGFuZElELCBpbXBsaWNpdCk7CisgICAgbV9pZFRv
UG9zaXRpb25NYXAuc2V0KHByb3BlcnR5SUQsIG1fdXNlZFNpemUpOworICAgICsrbV9udW1WYWxp
ZFByb3BlcnRpZXM7CisgICAgKyttX3VzZWRTaXplOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29u
dGFpbmVyOjpyb2xsYmFja0xhc3RQcm9wZXJ0aWVzKGludCBudW0pCit7CisgICAgaWYgKCFudW0p
CisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChudW0gPiAwKTsKKyAgICBBU1NFUlQobV9u
dW1WYWxpZFByb3BlcnRpZXMgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG51bSkpOworCisgICAg
aW50IGRlbGV0ZWRQcm9wZXJ0aWVzID0gMDsKKyAgICBpbnQgcG9zaXRpb24gPSBtX3VzZWRTaXpl
OworICAgIHdoaWxlIChkZWxldGVkUHJvcGVydGllcyAhPSBudW0gJiYgLS1wb3NpdGlvbiA+PSAw
KSB7CisgICAgICAgIGlmIChtX3Byb3BlcnRpZXNbcG9zaXRpb25dLmlkKCkpIHsKKyAgICAgICAg
ICAgIGludmFsaWRhdGVCeVBvc2l0aW9uKHBvc2l0aW9uKTsKKyAgICAgICAgICAgICsrZGVsZXRl
ZFByb3BlcnRpZXM7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250
YWluZXI6OmRlbGV0ZUZvbnRGYWNlT25seVByb3BlcnRpZXMoKQoreworICAgIEFTU0VSVChtX2hh
c0ZvbnRGYWNlT25seVByb3BlcnRpZXMpOworCisgICAgaW50IGlkc1szXSA9IHtDU1NQcm9wZXJ0
eUZvbnRXZWlnaHQsIENTU1Byb3BlcnR5Rm9udFN0eWxlLCBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50
fTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplb2YoaWRzKTsgKytpKSB7Cisg
ICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gaW50ZXJuYWxQb3NpdGlvbihpZHNbaV0pOworCisg
ICAgICAgIGlmIChwb3NpdGlvbiA9PSBIYXNoVHJhaXRzPHVuc2lnbmVkPjo6ZW1wdHlWYWx1ZSgp
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKG1fcHJvcGVydGllc1twb3Np
dGlvbl0udmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgICAgIGludmFsaWRhdGVCeVBv
c2l0aW9uKHBvc2l0aW9uKTsKKyAgICB9CisgICAgbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVz
ID0gZmFsc2U7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OmNsZWFyUHJvcGVydGll
cygpCit7CisgICAgbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzID0gZmFsc2U7CisKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV91c2VkU2l6ZTsgKytpKSB7CisgICAgICAgIGlmICht
X3Byb3BlcnRpZXNbaV0uaWQoKSkKKyAgICAgICAgICAgIGludmFsaWRhdGVCeVBvc2l0aW9uKGkp
OworICAgIH0KKworICAgIG1faWRUb1Bvc2l0aW9uTWFwLmNsZWFyKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eUNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjAxNDE2ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oCkBAIC0wLDAg
KzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIw
MDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdlYmtpdC5vcmc+LCBVbml2ZXJzaXR5IG9mIFN6
ZWdlZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWZuZGVmIENTU1Byb3BlcnR5Q29udGFpbmVyX2gKKyNkZWZpbmUgQ1NTUHJvcGVydHlD
b250YWluZXJfaAorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlICJDU1NWYWx1
ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMu
aD4KKyNpbmNsdWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY29uc3QgdW5zaWduZWQga0dyb3dGYWN0b3IgPSAzMjsKKworY2xhc3MgQ1NTUHJvcGVy
dHlDb250YWluZXIgeworcHVibGljOgorICAgIENTU1Byb3BlcnR5Q29udGFpbmVyKCk7CisgICAg
Y29uc3QgQ1NTUHJvcGVydHkmIGZpcnN0KCk7CisgICAgY29uc3QgQ1NTUHJvcGVydHkmIGxhc3Qo
KTsKKyAgICBjb25zdCBDU1NQcm9wZXJ0eSYgbGFzdEJ1dE9uZSgpOworCisgICAgaW5saW5lIHVu
c2lnbmVkIGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9udW1WYWxpZFByb3BlcnRpZXM7IH0KKyAg
ICBpbmxpbmUgYm9vbCBoYXNGb250RmFjZU9ubHkoKSBjb25zdCB7IHJldHVybiBtX2hhc0ZvbnRG
YWNlT25seVByb3BlcnRpZXM7IH0KKyAgICBpbmxpbmUgdm9pZCBzZXRGb250RmFjZU9ubHkoKSB7
IG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyA9IHRydWU7IH0KKworICAgIENTU1Byb3BlcnR5
JiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCk7CisKKyAgICBib29sIGNvbnRhaW5zUHJvcGVydHko
aW50IHByb3BlcnR5SUQpOworICAgIHZvaWQgcmVtb3ZlUHJvcGVydHkoaW50IHByb3BlcnR5SUQp
OworICAgIHZvaWQgcmVtb3ZlUHJvcGVydGllcyhjb25zdCBpbnQqIGlkTGlzdCwgdW5zaWduZWQg
bGVuZ3RoKTsKKyAgICB2b2lkIGFkZFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQsIGludCBzaG9ydGhhbmRJRCA9IDAsIGJvb2wgaW1w
bGljaXQgPSBmYWxzZSk7CisgICAgdm9pZCByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKGludCBudW0p
OworICAgIHZvaWQgZGVsZXRlRm9udEZhY2VPbmx5UHJvcGVydGllcygpOworICAgIHZvaWQgY2xl
YXJQcm9wZXJ0aWVzKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzd2VlcCgpOworICAgIGlubGlu
ZSB2b2lkIGdyb3dJZk5lZWRlZCgpOworICAgIGlubGluZSB1bnNpZ25lZCBpbnRlcm5hbFBvc2l0
aW9uKGludCBwcm9wZXJ0eUlEKTsKKyAgICBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlQnlQb3NpdGlv
bih1bnNpZ25lZCBwb3NpdGlvbik7CisgICAgaW5saW5lIHZvaWQgaW52YWxpZGF0ZUJ5SWQoaW50
IHByb3BlcnR5SUQpOworCisgICAgdW5zaWduZWQgbV9udW1WYWxpZFByb3BlcnRpZXM7CisgICAg
dW5zaWduZWQgbV91c2VkU2l6ZTsKKworICAgIGJvb2wgbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0
aWVzOworCisgICAgU2VnbWVudGVkVmVjdG9yPENTU1Byb3BlcnR5LCBrR3Jvd0ZhY3Rvcj4gbV9w
cm9wZXJ0aWVzOworICAgIEhhc2hNYXA8aW50LCB1bnNpZ25lZD4gbV9pZFRvUG9zaXRpb25NYXA7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NQcm9wZXJ0eUNv
bnRhaW5lcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCmluZGV4IGYzYjVhYzMuLjgw
MmJmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiQ1NTSW5pdGlhbFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAj
aW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eUNvbnRhaW5lci5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NRdWlya1ByaW1p
dGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgpAQCAtMjg2LDcgKzI4
Nyw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNWR1ZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogICAgICAgICAgICAgcm9sbGJhY2tMYXN0UHJvcGVydGllcygxKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBt
X3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gMV0tPnZhbHVlKCk7Cisg
ICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUo
KTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJrZXJNaWQsIHZhbHVlLCBpbXBv
cnRhbnQpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtlckVuZCwgdmFsdWUs
IGltcG9ydGFudCk7CiAgICAgICAgIG1faW1wbGljaXRTaG9ydGhhbmQgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKaW5kZXggNzcwYTY4Ni4uNGZlMTg1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKQEAgLTI5OSw4
ICsyOTksOCBAQCB2b2lkIFNWR0ZvbnRGYWNlRWxlbWVudDo6cmVidWlsZEZvbnRGYWNlKCkKIAog
ICAgIC8vIFBhcnNlIGluLW1lbW9yeSBDU1MgcnVsZXMKICAgICBDU1NQcm9wZXJ0eSBzcmNQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVNyYywgbGlzdCk7Ci0gICAgY29uc3QgQ1NTUHJvcGVydHkqIHNyY1By
b3BlcnR5UmVmID0gJnNyY1Byb3BlcnR5OwotICAgIG1fc3R5bGVEZWNsYXJhdGlvbi0+YWRkUGFy
c2VkUHJvcGVydGllcygmc3JjUHJvcGVydHlSZWYsIDEpOworICAgIGNvbnN0IENTU1Byb3BlcnR5
JiBzcmNQcm9wZXJ0eVJlZiA9IHNyY1Byb3BlcnR5OworICAgIG1fc3R5bGVEZWNsYXJhdGlvbi0+
YWRkUGFyc2VkUHJvcGVydHkoc3JjUHJvcGVydHlSZWYpOwogCiAgICAgaWYgKGRlc2NyaWJlc1Bh
cmVudEZvbnQpIHsgICAgCiAgICAgICAgIC8vIFRyYXZlcnNlIHBhcnNlZCBDU1MgdmFsdWVzIGFu
ZCBhc3NvY2lhdGUgQ1NTRm9udEZhY2VTcmNWYWx1ZSBlbGVtZW50cyB3aXRoIG91cnNlbHZlcy4K
LS0gCjEuNy42Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103266</attachid>
            <date>2011-08-08 11:12:37 -0700</date>
            <delta_ts>2011-08-08 13:51:09 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001-Refactor-the-CSSProperty-handling-infrastructure-of-.patch</filename>
            <type>text/plain</type>
            <size>43123</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSA3NmNiZjVjNjFjYTlhZDJkNGI3NTljNWJmNjFhZGM5OGMxMGU5NGNiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDggQXVnIDIwMTEgMjA6MTE6NDAgKzAyMDAKU3ViamVjdDogW1BBVENIXSBSZWZhY3Rv
ciB0aGUgQ1NTUHJvcGVydHkgaGFuZGxpbmcgaW5mcmFzdHJ1Y3R1cmUgb2YKIENTU1BhcnNlcgoK
LS0tCiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgIHwg
ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICA3MyArKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
ICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSAgICAg
ICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qICAgICAgfCAgICA4ICsrCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogIHwgICAgOCArKwogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueSAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAgfCAgIDIzICsrKy0KIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oICAgfCAgICA5ICstCiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCAgICAgICAgICAgICAgICAgIHwgIDEyMyArKysr
KysrLS0tLS0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oICAgICAgICAg
ICAgICAgICAgICB8ICAgMTEgKy0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250
YWluZXIuY3BwICAgICAgIHwgIDEzMCArKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oICAgICAgICAgfCAgIDc5ICsrKysrKysrKysr
KysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwICAgICAgICAgICAgICAgfCAg
ICA1ICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcCAgICAgICAg
IHwgICAgNCArLQogMTYgZmlsZXMgY2hhbmdlZCwgMzgwIGluc2VydGlvbnMoKyksIDEwOSBkZWxl
dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHlDb250YWluZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5Q29udGFpbmVyLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDRiODNhZGEuLjE4
YmI0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00NDgsNiArNDQ4LDcgQEAgU0VUKFdlYkNv
cmVfU09VUkNFUwogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKICAgICBjc3MvQ1NTUHJp
bWl0aXZlVmFsdWVDYWNoZS5jcHAKICAgICBjc3MvQ1NTUHJvcGVydHkuY3BwCisgICAgY3NzL0NT
U1Byb3BlcnR5Q29udGFpbmVyLmNwcAogICAgIGNzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAog
ICAgIGNzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1
ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBmZmFmZDc5Li5hMTIxMjJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzYgQEAKKzIwMTEtMDgtMDggIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQub3JnPgor
CisgICAgICAgIFJlZmFjdG9yIHRoZSBDU1NQcm9wZXJ0eSBoYW5kbGluZyBpbmZyYXN0cnVjdHVy
ZSBvZiBDU1NQYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NDE3CisKKyAgICAgICAgSW1wbGVtZW50IGEgTGlzdEhhc2hTZXQgYmFzZWQgY29u
dGFpbmVyIGNsYXNzIHRvIG1hbmFnZSBDU1NQcm9wZXJ0aWVzLCBlbGltaW5hdGUgdGhlIGN1cnJl
bnQKKyAgICAgICAgcmF3IHBvbml0ZXIgYmFzZWQgbWVjaGFuaXNtIGZyb20gQ1NTUGFyc2VyIGFu
ZCBhdXRvbWF0aWNhbGx5IGRpc2NhcmQgZHVwbGljYXRlIHByb3BlcnRpZXMuCisgICAgICAgIElu
IGEgZm9sbG93LXVwIENTU1Byb3BlcnR5Q29udGFpbmVyIGNhbiBhbHNvIGJlIHVzZWQgdG8gZXh0
cmFjdCB0aGUgcHJvcGVydHkgaGFuZGxpbmcgbG9naWMKKyAgICAgICAgZnJvbSBDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbiB3aGljaCBjdXJyZW50bHkgbWFpbnRhaW5zIGl0cyBvd24gZm9yayBv
ZiBpbmZyYXN0cnVjdHVyZQorICAgICAgICBmb3IgbWFuYWdpbmcgcGFyc2VkIHByb3BlcnRpZXMu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBjc3MvQ1NTR3JhbW1hci55OgorICAgICAgICAqIGNzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb246OmFkZFBhcnNlZFByb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9D
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6On5DU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OmNsZWFyUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlNFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udFN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGb250VmFyaWFudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udFdlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OmNyZWF0ZVBhZ2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6c3RhcnRE
ZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpl
bmREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpjcmVhdGVLZXlmcmFtZVJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6aGFzUHJvcGVydGllcyk6CisgICAgICAgICogY3NzL0NT
U1Byb3BlcnR5Q29udGFpbmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eUNvbnRhaW5lcjo6Q1NTUHJvcGVydHlDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJvcGVydHlDb250YWluZXI6OmdldFByb3BlcnR5QnlJZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlDb250YWluZXI6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRh
aW5lcjo6bGFzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6YWRk
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnJlbW92
ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1v
dmVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpy
ZW1vdmVGb250RmFjZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlD
b250YWluZXI6OnJlbW92ZUxhc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250
YWluZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlDb250YWluZXI6OmNsZWFyUHJvcGVydGllcyk6CisgICAgICAgICogY3NzL0NTU1Byb3Bl
cnR5Q29udGFpbmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250
YWluZXI6OkNTU1Byb3BlcnR5SGFzaEZ1bmN0aW9uczo6aGFzaCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Q1NTUHJvcGVydHlIYXNoRnVuY3Rpb25zOjplcXVhbCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Q1NTUHJvcGVydHlJZEhh
c2hUcmFuc2xhdG9yOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFp
bmVyOjpDU1NQcm9wZXJ0eUlkSGFzaFRyYW5zbGF0b3I6OmVxdWFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cm9wZXJ0eUNvbnRhaW5lcjo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eUNvbnRhaW5lcjo6c2V0Rm9udEZhY2VPbmx5KToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTUGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZSk6CisgICAg
ICAgICogc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
b250RmFjZUVsZW1lbnQ6OnJlYnVpbGRGb250RmFjZSk6CisKIDIwMTEtMDgtMDggIEFsZXhlaSBT
dml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBF
bmFibGUgcnViYmVyIGJhbmRpbmcgd2hlbiBzY3JvbGxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCBhMDY4YzAyLi44MzAxNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTk3NSw2ICs5NzUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCBcCiAJU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydHlMb25naGFuZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VE
YXRhLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOGQwZGZmNS4uMWE1OTBlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtNDkxLDYgKzQ5MSw3IEBACiAgICAgICAgICAgICAnY3NzL0NTU1BhcnNlclZh
bHVlcy5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCcsCiAgICAgICAg
ICAgICAnY3NzL0NTU1Byb3BlcnR5LmgnLAorICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eUNv
bnRhaW5lci5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgnLAog
ICAgICAgICAgICAgJ2Nzcy9DU1NSZWZsZWN0VmFsdWUuaCcsCiAgICAgICAgICAgICAnY3NzL0NT
U1JlZmxlY3Rpb25EaXJlY3Rpb24uaCcsCkBAIC0yMzUwLDYgKzIzNTEsNyBAQAogICAgICAgICAg
ICAgJ2Nzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eS5j
cHAnLAorICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAnLAogICAgICAg
ICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5U291cmNl
RGF0YS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBhNmY4OWE0Li5kMGFiODExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwpAQCAtNDExLDYgKzQxMSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGNzcy9DU1NQcmltaXRp
dmVWYWx1ZS5jcHAgXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmNwcCBcCiAgICAg
Y3NzL0NTU1Byb3BlcnR5LmNwcCBcCisgICAgY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCBc
CiAgICAgY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIFwKICAgICBjc3MvQ1NTUHJvcGVydHlT
b3VyY2VEYXRhLmNwcCBcCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAgXApAQCAtMTQxMSw2
ICsxNDEyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggXAog
ICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmggXAogICAgIGNzcy9DU1NQcm9wZXJ0eS5o
IFwKKyAgICBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5
TG9uZ2hhbmQuaCBcCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1ZS5oIFwKICAgICBjc3MvQ1NTUnVs
ZS5oIFwKQEAgLTE0MjUsNiArMTQyNyw3IEBAIEhFQURFUlMgKz0gXAogICAgIGNzcy9DU1NTdHls
ZVNoZWV0LmggXAogICAgIGNzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmggXAogICAgIGNzcy9D
U1NVbmljb2RlUmFuZ2VWYWx1ZS5oIFwKKyAgICBjc3MvQ1NTVmFsdWUuaCBcCiAgICAgY3NzL0NT
U1ZhbHVlTGlzdC5oIFwKICAgICBjc3MvRm9udEZhbWlseVZhbHVlLmggXAogICAgIGNzcy9Gb250
RmVhdHVyZVZhbHVlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCBiMmU2OWUwLi43MmNjNjg0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzI4NzgsNiArMzI4NzgsMTQgQEAKIAkJCQk+
CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1Byb3Bl
cnR5Q29udGFpbmVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cY3NzXENTU1Byb3BlcnR5Q29udGFpbmVyLmgiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQcm9wZXJ0eUxvbmdoYW5k
LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2Q2ZjdhZS4uYzE4MWU2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQz
LDYgKzQ0Myw4IEBACiAJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3Iu
cG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIx
QUU3ODBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vyc29yLnBuZyAqLzsgfTsKIAkJMUFCMUFF
N0IwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxQUU3OTBDMDUxRkRFMDAxMzlGNEYg
Lyogem9vbU91dEN1cnNvci5wbmcgKi87IH07CiAJCTFBQjMzREE1MTI1NTFFMzIwMDI0NDU3QSAv
KiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUIzM0RBNDEyNTUxRTMyMDAyNDQ1N0EgLyogSU9LaXQuZnJhbWV3b3JrICov
OyB9OworCQkxQUI0NEEwQzEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCNDRB
MEIxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCAqLzsgfTsKKwkJ
MUFCNDRBMEUxMzY3MkQyMDAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI0NEEwRDEzNjcyRDIw
MDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUI3RkM2ODBBOEI5MkVDMDBEOUQzN0IgLyog
WFBhdGhFdmFsdWF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFCN0ZDNDcwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmNwcCAq
LzsgfTsKIAkJMUFCN0ZDNjkwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RkM0ODBBOEI5
MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCAqLzsgfTsKIAkJMUFCN0ZDNkIwQThCOTJF
QzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RkM0QTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhF
eHByZXNzaW9uLmNwcCAqLzsgfTsKQEAgLTY5MzAsNiArNjkzMiw4IEBACiAJCTFBQjFBRTc4MEMw
NTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gem9vbUluQ3Vyc29y
LnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCMUFFNzkwQzA1MUZERTAwMTM5
RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gem9vbU91dEN1cnNvci5wbmc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjMzREE0MTI1NTFFMzIwMDI0NDU3QSAvKiBJ
T0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPS2l0LmZyYW1ld29yazsgcGF0aCA9
IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9
ICI8YWJzb2x1dGU+IjsgfTsKKwkJMUFCNDRBMEIxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1Byb3Bl
cnR5Q29udGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENT
U1Byb3BlcnR5Q29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFC
NDRBMEQxMzY3MkQyMDAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1Byb3BlcnR5Q29udGFpbmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjdGQzQ3MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2
YWx1YXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFBhdGhF
dmFsdWF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI3RkM0ODBBOEI5
MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFhQYXRoRXZhbHVhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBQjdGQzQ5MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFhQYXRoRXZhbHVhdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE5Mjk0LDYgKzE5Mjk4LDggQEAKIAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNB
IC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MUFCNDRBMEQxMzY3MkQyMDAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmggKi8sCisJ
CQkJMUFCNDRBMEIxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCAq
LywKIAkJCQk5M0NBNEM5QzA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXRva2VuaXplciAqLywKIAkJ
CQlBODBFNkNEQTBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5oICovLAogCQkJCTkzMDcwNUM3
MDlFMEM5NUYwMEIxN0ZFNCAvKiBDb3VudGVyLmlkbCAqLywKQEAgLTIzMzU0LDYgKzIzMzYwLDcg
QEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xl
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUI0NEEwRTEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJv
cGVydHlDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjYxNjEsNiArMjYxNjgsNyBAQAog
CQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBQjQ0QTBDMTM2NzJDRkYwMDA4Nzc3RSAvKiBDU1NQ
cm9wZXJ0eUNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
CmluZGV4IDkwYjVlMTQuLjMyNTQwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpAQCAtMzIz
LDkgKzMyMyw5IEBAIHdlYmtpdF92YWx1ZToKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGlj
X2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgaWYgKCQ0KSB7CiAgICAgICAgICAg
ICBwLT5tX3ZhbHVlTGlzdCA9IHAtPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAg
ICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1fbnVtUGFyc2VkUHJvcGVydGllczsK
KyAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9wZXJ0
aWVzLmNvdW50KCk7CiAgICAgICAgICAgICBpZiAoIXAtPnBhcnNlVmFsdWUocC0+bV9pZCwgcC0+
bV9pbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
cC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAg
ICAgICAgICAgcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+
bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKICAgICAg
ICAgICAgIGRlbGV0ZSBwLT5tX3ZhbHVlTGlzdDsKICAgICAgICAgICAgIHAtPm1fdmFsdWVMaXN0
ID0gMDsKICAgICAgICAgfQpAQCAtMTI3MywxMCArMTI3MywxMCBAQCBkZWNsYXJhdGlvbjoKICAg
ICAgICAgYm9vbCBpc1Byb3BlcnR5UGFyc2VkID0gZmFsc2U7CiAgICAgICAgIGlmICgkMSAmJiAk
NCkgewogICAgICAgICAgICAgcC0+bV92YWx1ZUxpc3QgPSBwLT5zaW5rRmxvYXRpbmdWYWx1ZUxp
c3QoJDQpOwotICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwLT5tX251bVBh
cnNlZFByb3BlcnRpZXM7CisgICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAt
Pm1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpOwogICAgICAgICAgICAgJCQgPSBwLT5wYXJzZVZh
bHVlKCQxLCAkNSk7CiAgICAgICAgICAgICBpZiAoISQkKQotICAgICAgICAgICAgICAgIHAtPnJv
bGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gb2xkUGFyc2Vk
UHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLnJvbGxi
YWNrTGFzdFByb3BlcnRpZXMocC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkgLSBvbGRQYXJz
ZWRQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpc1Byb3Bl
cnR5UGFyc2VkID0gdHJ1ZTsKICAgICAgICAgICAgIGRlbGV0ZSBwLT5tX3ZhbHVlTGlzdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCmlu
ZGV4IDAxN2RjNjkuLjVlYWUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNzMsNyArNzMsNyBAQCBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50
LCBjb25zdCBWZQogICAgIC8vIEZJWE1FOiBUaGlzIGFsbG93cyBkdXBsaWNhdGUgcHJvcGVydGll
cy4KIH0KIAotQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uKENTU1J1bGUqIHBhcmVudCwgY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICogcHJvcGVy
dGllcywgaW50IG51bVByb3BlcnRpZXMpCitDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBDU1NQcm9wZXJ0eUNvbnRh
aW5lciYgcHJvcGVydGllcykKICAgICA6IENTU1N0eWxlRGVjbGFyYXRpb24ocGFyZW50KQogICAg
ICwgbV9ub2RlKDApCiAgICAgLCBtX3N0cmljdFBhcnNpbmcoIXBhcmVudCB8fCBwYXJlbnQtPnVz
ZVN0cmljdFBhcnNpbmcoKSkKQEAgLTgxLDExICs4MSwxNSBAQCBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBjb25z
dCBDUwogICAgICwgbV9pdGVyYXRvckNvdW50KDApCiAjZW5kaWYKIHsKKyAgICB1bnNpZ25lZCBu
dW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5jb3VudCgpOworCisgICAgaWYgKCFudW1Qcm9wZXJ0
aWVzKQorICAgICAgICByZXR1cm47CisKICAgICBtX3Byb3BlcnRpZXMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShudW1Qcm9wZXJ0aWVzKTsKICAgICBIYXNoTWFwPGludCwgYm9vbD4gY2FuZGlkYXRl
czsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgewotICAgICAg
ICBjb25zdCBDU1NQcm9wZXJ0eSAqcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldOwotICAgICAgICBB
U1NFUlQocHJvcGVydHkpOworCisgICAgZm9yIChDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y29uc3Rf
aXRlcmF0b3IgcHJvcGVydHkgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IHByb3BlcnR5ICE9IHByb3Bl
cnRpZXMuZW5kKCk7ICsrcHJvcGVydHkpIHsKICAgICAgICAgYm9vbCBpbXBvcnRhbnQgPSBwcm9w
ZXJ0eS0+aXNJbXBvcnRhbnQoKTsKICAgICAgICAgaWYgKGNhbmRpZGF0ZXMuY29udGFpbnMocHJv
cGVydHktPmlkKCkpKSB7CiAgICAgICAgICAgICBpZiAoIWltcG9ydGFudCAmJiBjYW5kaWRhdGVz
LmdldChwcm9wZXJ0eS0+aWQoKSkpCkBAIC02MzksMTMgKzY0MywxOCBAQCB2b2lkIENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOjpwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVE
ZWNsYXJhdGlvbgogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotdm9pZCBDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6YWRkUGFyc2VkUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0
eSogY29uc3QqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzKQordm9pZCBDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjo6YWRkUGFyc2VkUHJvcGVydGllcyhDU1NQcm9wZXJ0eUNvbnRhaW5l
ciYgcHJvcGVydGllcykKIHsKICAgICBBU1NFUlQoIW1faXRlcmF0b3JDb3VudCk7CiAKKyAgICB1
bnNpZ25lZCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5jb3VudCgpOworCisgICAgaWYgKCFu
dW1Qcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm47CisKICAgICBtX3Byb3BlcnRpZXMucmVzZXJ2
ZUNhcGFjaXR5KG51bVByb3BlcnRpZXMpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUHJv
cGVydGllczsgKytpKQotICAgICAgICBhZGRQYXJzZWRQcm9wZXJ0eSgqcHJvcGVydGllc1tpXSk7
CisgICAgZm9yIChDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IgcCA9IHByb3Bl
cnRpZXMuYmVnaW4oKTsgcCAhPSBwcm9wZXJ0aWVzLmVuZCgpOyArK3ApCisgICAgICAgIGFkZFBh
cnNlZFByb3BlcnR5KCpwKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3VsZCBo
YXZlIGEgY2FsbCB0byBzZXROZWVkc1N0eWxlUmVjYWxjKCkgaWYgc29tZXRoaW5nIGNoYW5nZWQu
IFdlIG1heSBhbHNvIHdpc2ggdG8gYWRkCiAgICAgLy8gYSBub3RpZnlDaGFuZ2VkIGFyZ3VtZW50
IHRvIHRoaXMgZnVuY3Rpb24gdG8gZm9sbG93IHRoZSBtb2RlbCBvZiBvdGhlciBmdW5jdGlvbnMg
aW4gdGhpcyBjbGFzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uLmgKaW5kZXggZWE4YWIzZi4uYjgzODI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNp
bmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFs
dWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5Q29u
dGFpbmVyLmgiCiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtNjcsOSArNjgsOSBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uKHBhcmVudFJ1bGUpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShDU1NSdWxlKiBwYXJlbnRSdWxlLCBjb25z
dCBDU1NQcm9wZXJ0eSogY29uc3QqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoQ1NT
UnVsZSogcGFyZW50UnVsZSwgQ1NTUHJvcGVydHlDb250YWluZXImIHByb3BlcnRpZXMpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
KHBhcmVudFJ1bGUsIHByb3BlcnRpZXMsIG51bVByb3BlcnRpZXMpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihwYXJlbnRSdWxlLCBwcm9w
ZXJ0aWVzKSk7CiAgICAgfQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uPiBjcmVhdGUoY29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYgcHJvcGVydGllcykK
ICAgICB7CkBAIC0xMjQsNyArMTI1LDcgQEAgcHVibGljOgogCiAgICAgLy8gQmVzaWRlcyBhZGRp
bmcgdGhlIHByb3BlcnRpZXMsIHRoaXMgYWxzbyByZW1vdmVzIGFueSBleGlzdGluZyBwcm9wZXJ0
aWVzIHdpdGggdGhlc2UgSURzLgogICAgIC8vIEl0IGRvZXMgbm8gbm90aWZpY2F0aW9uIHNpbmNl
IGl0J3MgY2FsbGVkIGJ5IHRoZSBwYXJzZXIuCi0gICAgdm9pZCBhZGRQYXJzZWRQcm9wZXJ0aWVz
KGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCAqLCBpbnQgbnVtUHJvcGVydGllcyk7CisgICAgdm9p
ZCBhZGRQYXJzZWRQcm9wZXJ0aWVzKENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9wZXJ0aWVzKTsK
ICAgICAvLyBUaGlzIGRvZXMgbm8gY2hhbmdlIG5vdGlmaWNhdGlvbnMgc2luY2UgaXQncyBvbmx5
IGNhbGxlZCBieSBjcmVhdGVNYXJrdXAuCiAgICAgdm9pZCBhZGRQYXJzZWRQcm9wZXJ0eShjb25z
dCBDU1NQcm9wZXJ0eSYpOwogIApAQCAtMTQ5LDcgKzE1MCw3IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oKTsKICAgICBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBWZWN0b3I8Q1NTUHJvcGVy
dHk+Jik7Ci0gICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50UnVs
ZSwgY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICosIGludCBudW1Qcm9wZXJ0aWVzKTsKKyAgICBD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRSdWxlLCBDU1NQcm9wZXJ0
eUNvbnRhaW5lciYgcHJvcGVydGllcyk7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24+IG1ha2VNdXRhYmxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKaW5kZXggMmJjNDE4My4uYmY4MzFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
QEAgLTE2NywxNCArMTY3LDEwIEBAIENTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFy
c2luZykKICAgICAsIG1faWQoMCkKICAgICAsIG1fc3R5bGVTaGVldCgwKQogICAgICwgbV92YWx1
ZUxpc3QoMCkKLSAgICAsIG1fcGFyc2VkUHJvcGVydGllcyhzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0
eSoqPihmYXN0TWFsbG9jKDMyICogc2l6ZW9mKENTU1Byb3BlcnR5KikpKSkKLSAgICAsIG1fbnVt
UGFyc2VkUHJvcGVydGllcygwKQotICAgICwgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzKDMyKQotICAg
ICwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KElOVkFMSURfTlVNX1BBUlNF
RF9QUk9QRVJUSUVTKQorICAgICwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94
KDApCiAgICAgLCBtX2luUGFyc2VTaG9ydGhhbmQoMCkKICAgICAsIG1fY3VycmVudFNob3J0aGFu
ZCgwKQogICAgICwgbV9pbXBsaWNpdFNob3J0aGFuZChmYWxzZSkKLSAgICAsIG1faGFzRm9udEZh
Y2VPbmx5VmFsdWVzKGZhbHNlKQogICAgICwgbV9oYWRTeW50YWN0aWNhbGx5VmFsaWRDU1NSdWxl
KGZhbHNlKQogICAgICwgbV9kZWZhdWx0TmFtZXNwYWNlKHN0YXJBdG9tKQogICAgICwgbV9pblN0
eWxlUnVsZU9yRGVjbGFyYXRpb24oZmFsc2UpCkBAIC0xOTgsOSArMTk0LDYgQEAgQ1NTUGFyc2Vy
OjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQYXJzaW5nKQogCiBDU1NQYXJzZXI6On5DU1NQYXJzZXIo
KQogewotICAgIGNsZWFyUHJvcGVydGllcygpOwotICAgIGZhc3RGcmVlKG1fcGFyc2VkUHJvcGVy
dGllcyk7Ci0KICAgICBkZWxldGUgbV92YWx1ZUxpc3Q7CiAKICAgICBmYXN0RnJlZShtX2RhdGEp
OwpAQCAtNDYxLDExICs0NTQsMTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHkKICAgICBtX3J1
bGUgPSAwOwogCiAgICAgYm9vbCBvayA9IGZhbHNlOwotICAgIGlmIChtX2hhc0ZvbnRGYWNlT25s
eVZhbHVlcykKLSAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0gICAgaWYgKG1f
bnVtUGFyc2VkUHJvcGVydGllcykgeworICAgIG1fcGFyc2VkUHJvcGVydGllcy5yZW1vdmVGb250
RmFjZVByb3BlcnRpZXMoKTsKKyAgICBpZiAobV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkpIHsK
ICAgICAgICAgb2sgPSB0cnVlOwotICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVy
dGllcyhtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAg
IGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcyk7CiAg
ICAgICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIH0KIApAQCAtNDg3LDcgKzQ3OSw3IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBib29sIHN0cmljdCkKICAgICBpZiAoIXBhcnNlci5wYXJzZUNvbG9yKGR1bW15U3R5bGVE
ZWNsYXJhdGlvbi5nZXQoKSwgc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Q1NTVmFsdWUqIHZhbHVlID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllc1swXS0+dmFsdWUoKTsK
KyAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXIubV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52
YWx1ZSgpOwogICAgIGlmICh2YWx1ZS0+Y3NzVmFsdWVUeXBlKCkgIT0gQ1NTVmFsdWU6OkNTU19Q
UklNSVRJVkVfVkFMVUUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTA4LDcgKzUwMCw3
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
KiBkZWNsYXJhdGlvbiwgY29uc3QgU3RyaW5nCiAgICAgY3NzeXlwYXJzZSh0aGlzKTsKICAgICBt
X3J1bGUgPSAwOwogCi0gICAgcmV0dXJuIChtX251bVBhcnNlZFByb3BlcnRpZXMgJiYgbV9wYXJz
ZWRQcm9wZXJ0aWVzWzBdLT5tX2lkID09IENTU1Byb3BlcnR5Q29sb3IpOworICAgIHJldHVybiAo
bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkgJiYgbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS5p
ZCgpID09IENTU1Byb3BlcnR5Q29sb3IpOwogfQogCiBib29sIENTU1BhcnNlcjo6cGFyc2VTeXN0
ZW1Db2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmluZywgRG9jdW1lbnQqIGRv
Y3VtZW50KQpAQCAtNTYyLDExICs1NTQsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVjbGFy
YXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRlY2xhcmF0aW9uLCBjb25zdAogICAg
IG1fcnVsZSA9IDA7CiAKICAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgaWYgKG1faGFzRm9udEZh
Y2VPbmx5VmFsdWVzKQotICAgICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKLSAgICBp
ZiAobV9udW1QYXJzZWRQcm9wZXJ0aWVzKSB7CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnJlbW92
ZUZvbnRGYWNlUHJvcGVydGllcygpOworCisgICAgaWYgKG1fcGFyc2VkUHJvcGVydGllcy5jb3Vu
dCgpKSB7CiAgICAgICAgIG9rID0gdHJ1ZTsKLSAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNl
ZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpOwor
ICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRp
ZXMpOwogICAgICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICB9CiAKQEAgLTYxMCwzMyArNjAy
LDEzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZU1lZGlhUXVlcnkoTWVkaWFMaXN0KiBxdWVyaWVz
LCBjb25zdCBTdHJpbmcmIHN0cmluZykKIAogdm9pZCBDU1NQYXJzZXI6OmFkZFByb3BlcnR5KGlu
dCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCkKIHsK
LSAgICBPd25QdHI8Q1NTUHJvcGVydHk+IHByb3AoYWRvcHRQdHIobmV3IENTU1Byb3BlcnR5KHBy
b3BJZCwgdmFsdWUsIGltcG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5kLCBtX2ltcGxpY2l0U2hv
cnRoYW5kKSkpOwotICAgIGlmIChtX251bVBhcnNlZFByb3BlcnRpZXMgPj0gbV9tYXhQYXJzZWRQ
cm9wZXJ0aWVzKSB7Ci0gICAgICAgIG1fbWF4UGFyc2VkUHJvcGVydGllcyArPSAzMjsKLSAgICAg
ICAgaWYgKG1fbWF4UGFyc2VkUHJvcGVydGllcyA+IFVJTlRfTUFYIC8gc2l6ZW9mKENTU1Byb3Bl
cnR5KikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fcGFyc2VkUHJvcGVydGllcyA9
IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5Kio+KGZhc3RSZWFsbG9jKG1fcGFyc2VkUHJvcGVydGll
cywKLSAgICAgICAgICAgIG1fbWF4UGFyc2VkUHJvcGVydGllcyAqIHNpemVvZihDU1NQcm9wZXJ0
eSopKSk7Ci0gICAgfQotICAgIG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRp
ZXMrK10gPSBwcm9wLmxlYWtQdHIoKTsKLX0KLQotdm9pZCBDU1NQYXJzZXI6OnJvbGxiYWNrTGFz
dFByb3BlcnRpZXMoaW50IG51bSkKLXsKLSAgICBBU1NFUlQobnVtID49IDApOwotICAgIEFTU0VS
VChtX251bVBhcnNlZFByb3BlcnRpZXMgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG51bSkpOwot
Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW07ICsraSkKLSAgICAgICAgZGVsZXRlIG1fcGFy
c2VkUHJvcGVydGllc1stLW1fbnVtUGFyc2VkUHJvcGVydGllc107CisgICAgbV9wYXJzZWRQcm9w
ZXJ0aWVzLmFkZFByb3BlcnR5KHByb3BJZCwgdmFsdWUsIGltcG9ydGFudCwgbV9jdXJyZW50U2hv
cnRoYW5kLCBtX2ltcGxpY2l0U2hvcnRoYW5kKTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OmNsZWFy
UHJvcGVydGllcygpCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbnVtUGFyc2Vk
UHJvcGVydGllczsgaSsrKQotICAgICAgICBkZWxldGUgbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwot
ICAgIG1fbnVtUGFyc2VkUHJvcGVydGllcyA9IDA7CiAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVz
QmVmb3JlTWFyZ2luQm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVM7Ci0gICAgbV9o
YXNGb250RmFjZU9ubHlWYWx1ZXMgPSBmYWxzZTsKKyAgICBtX3BhcnNlZFByb3BlcnRpZXMuY2xl
YXJQcm9wZXJ0aWVzKCk7CiB9CiAgICAgCiB2b2lkIENTU1BhcnNlcjo6c2V0U3R5bGVTaGVldChD
U1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KQpAQCAtOTQ2LDcgKzkxOCw3IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBTaG9y
dGhhbmRTY29wZSBzY29wZSh0aGlzLCBwcm9wSWQpOwogICAgICAgICBpZiAobnVtICE9IDEgfHwg
IXBhcnNlVmFsdWUoQ1NTUHJvcGVydHlPdmVyZmxvd1gsIGltcG9ydGFudCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVy
dGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMgLSAxXS0+dmFsdWUoKTsKKyAgICAgICAgQ1NTVmFs
dWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwogICAgICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEwNDMsNyArMTAxNSw3IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAg
U2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKTsKICAg
ICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9
IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7Cisg
ICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZh
bHVlKCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1w
b3J0YW50KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xNzA5LDcg
KzE2ODEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKICAgICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpOwogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHBy
b3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFy
c2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9
IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgICAgIGFkZFByb3Bl
cnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KQEAgLTI0OTEsNyArMjQ2Myw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0aWVzLCAgYm9vbCBpbXBv
cnRhbnQpCiAgICAgICAgIGNhc2UgMTogewogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHBy
b3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFy
c2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9
IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgICAgIEltcGxpY2l0
U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAg
IGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAg
ICAgYWRkUHJvcGVydHkocHJvcGVydGllc1syXSwgdmFsdWUsIGltcG9ydGFudCk7CkBAIC0yNDk5
LDE5ICsyNDcxLDI0IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwg
Y29uc3QgaW50ICpwcm9wZXJ0aWVzLCAgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIDI6IHsKLSAgICAgICAgICAgIGlmICghcGFyc2VW
YWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNb
MV0sIGltcG9ydGFudCkpCisgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1sw
XSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICBDU1NWYWx1ZSAqdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0
aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlMSA9IG1fcGFyc2Vk
UHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShw
cm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZTIgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgp
LnZhbHVlKCk7CiAgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywg
UHJvcGVydHlJbXBsaWNpdCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzJd
LCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0
aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKLSAgICAgICAgICAgIGFkZFBy
b3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRk
UHJvcGVydHkocHJvcGVydGllc1syXSwgdmFsdWUxLCBpbXBvcnRhbnQpOworICAgICAgICAgICAg
YWRkUHJvcGVydHkocHJvcGVydGllc1szXSwgdmFsdWUyLCBpbXBvcnRhbnQpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSAzOiB7Ci0gICAgICAgICAgICBpZiAo
IXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9w
ZXJ0aWVzWzFdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMl0sIGltcG9y
dGFudCkpCisgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0
YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFy
c2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VWYWx1
ZShwcm9wZXJ0aWVzWzJdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251
bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZhbHVlKCk7CisKICAgICAgICAgICAgIEltcGxpY2l0U2Nv
cGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAgIGFk
ZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC00MTA5LDcgKzQwODYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGb250U3R5
bGUoYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogCiAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMtPmxl
bmd0aCgpKSB7Ci0gICAgICAgIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzID0gdHJ1ZTsKKyAgICAg
ICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnNldEZvbnRGYWNlT25seSgpOwogICAgICAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgdmFsdWVzLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNDE1Niw3ICs0MTMzLDcgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlRm9udFZhcmlhbnQoYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogCiAgICAg
aWYgKHZhbHVlcyAmJiB2YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAgIG1faGFzRm9udEZhY2VP
bmx5VmFsdWVzID0gdHJ1ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnNldEZvbnRGYWNl
T25seSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCB2YWx1
ZXMucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC00MjA5LDcgKzQxODYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGb250V2VpZ2h0KGJvb2wg
aW1wb3J0YW50KQogICAgIH0KIAogICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLT5sZW5ndGgoKSkg
ewotICAgICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IHRydWU7CisgICAgICAgIG1fcGFy
c2VkUHJvcGVydGllcy5zZXRGb250RmFjZU9ubHkoKTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlGb250V2VpZ2h0LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC02NzgzLDkgKzY3NjAsOCBAQCBDU1NSdWxlKiBDU1NQ
YXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+
KiBzZWxlY3RvcgogICAgICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNl
RGVjbGFyYXRpb25zID0gZmFsc2U7CiAgICAgICAgIFJlZlB0cjxDU1NTdHlsZVJ1bGU+IHJ1bGUg
PSBDU1NTdHlsZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQsIG1fbGFzdFNlbGVjdG9yTGluZU51
bWJlcik7CiAgICAgICAgIHJ1bGUtPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7Ci0g
ICAgICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAgICAgICAgIGRlbGV0ZUZv
bnRGYWNlT25seVZhbHVlcygpOwotICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVydGll
cywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5y
ZW1vdmVGb250RmFjZVByb3BlcnRpZXMoKTsKKyAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24o
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFBy
b3BlcnRpZXMpKTsKICAgICAgICAgcmVzdWx0ID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9wYXJz
ZWRTdHlsZU9iamVjdHMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICAgICAgaWYgKG1fcnVs
ZVJhbmdlTWFwKSB7CkBAIC02ODA3LDggKzY3ODMsOCBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNy
ZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3Rv
cgogQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUoKQogewogICAgIG1fYWxs
b3dJbXBvcnRSdWxlcyA9IG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxzZTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzOyArK2kpIHsK
LSAgICAgICAgQ1NTUHJvcGVydHkqIHByb3BlcnR5ID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwor
CisgICAgZm9yIChDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aXRlcmF0b3IgcHJvcGVydHkgPSBtX3Bh
cnNlZFByb3BlcnRpZXMuYmVnaW4oKTsgcHJvcGVydHkgIT0gbV9wYXJzZWRQcm9wZXJ0aWVzLmVu
ZCgpOyArK3Byb3BlcnR5KSB7CiAgICAgICAgIGludCBpZCA9IHByb3BlcnR5LT5pZCgpOwogICAg
ICAgICBpZiAoKGlkID09IENTU1Byb3BlcnR5Rm9udFdlaWdodCB8fCBpZCA9PSBDU1NQcm9wZXJ0
eUZvbnRTdHlsZSB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KSAmJiBwcm9wZXJ0eS0+
dmFsdWUoKS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFs
dWU+IHZhbHVlID0gcHJvcGVydHktPm1fdmFsdWUucmVsZWFzZSgpOwpAQCAtNjgyMyw4ICs2Nzk5
LDkgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUoKQogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9CisKICAgICBSZWZQdHI8Q1NTRm9udEZhY2VS
dWxlPiBydWxlID0gQ1NTRm9udEZhY2VSdWxlOjpjcmVhdGUobV9zdHlsZVNoZWV0KTsKLSAgICBy
dWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1
bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7Cisg
ICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0
ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMpKTsKICAgICBjbGVhclByb3BlcnRpZXMo
KTsKICAgICBDU1NGb250RmFjZVJ1bGUqIHJlc3VsdCA9IHJ1bGUuZ2V0KCk7CiAgICAgbV9wYXJz
ZWRTdHlsZU9iamVjdHMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKQEAgLTY4OTgsNyArNjg3NSw3
IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlUGFnZVJ1bGUoUGFzc093blB0cjxDU1NQYXJz
ZXJTZWxlY3Rvcj4gcGFnZVNlbGVjdG9yKQogICAgICAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNl
clNlbGVjdG9yPiA+IHNlbGVjdG9yVmVjdG9yOwogICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBl
bmQocGFnZVNlbGVjdG9yKTsKICAgICAgICAgcnVsZS0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxl
Y3RvclZlY3Rvcik7Ci0gICAgICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251
bVBhcnNlZFByb3BlcnRpZXMpKTsKKyAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRp
ZXMpKTsKICAgICAgICAgcGFnZVJ1bGUgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFN0
eWxlT2JqZWN0cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwogICAgIH0KQEAgLTY5MTksMzQgKzY4
OTYsMTYgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVNYXJnaW5BdFJ1bGUoQ1NTU2VsZWN0
b3I6Ok1hcmdpbkJveFR5cGUgLyogbWFyZ2luQm94ICoKIAogdm9pZCBDU1NQYXJzZXI6OnN0YXJ0
RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCkKIHsKLSAgICBtX251bVBhcnNlZFByb3BlcnRpZXNC
ZWZvcmVNYXJnaW5Cb3ggPSBtX251bVBhcnNlZFByb3BlcnRpZXM7CisgICAgbV9udW1QYXJzZWRQ
cm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCk7CiB9
CiAKIHZvaWQgQ1NTUGFyc2VyOjplbmREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKQogewogICAg
IEFTU0VSVChtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3ggIT0gSU5WQUxJRF9O
VU1fUEFSU0VEX1BST1BFUlRJRVMpOwotICAgIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMobV9udW1Q
YXJzZWRQcm9wZXJ0aWVzIC0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KTsK
KyAgICBtX3BhcnNlZFByb3BlcnRpZXMucm9sbGJhY2tMYXN0UHJvcGVydGllcyhtX3BhcnNlZFBy
b3BlcnRpZXMuY291bnQoKSAtIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCk7
CiAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gSU5WQUxJRF9OVU1f
UEFSU0VEX1BST1BFUlRJRVM7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjpkZWxldGVGb250RmFjZU9u
bHlWYWx1ZXMoKQotewotICAgIEFTU0VSVChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyk7Ci0gICAg
aW50IGRlbGV0ZWRQcm9wZXJ0aWVzID0gMDsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX251bVBhcnNlZFByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBDU1NQcm9wZXJ0eSogcHJv
cGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07Ci0gICAgICAgIGludCBpZCA9IHByb3BlcnR5
LT5pZCgpOwotICAgICAgICBpZiAoKGlkID09IENTU1Byb3BlcnR5Rm9udFdlaWdodCB8fCBpZCA9
PSBDU1NQcm9wZXJ0eUZvbnRTdHlsZSB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KSAm
JiBwcm9wZXJ0eS0+dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAgICAgZGVsZXRl
IHByb3BlcnR5OwotICAgICAgICAgICAgZGVsZXRlZFByb3BlcnRpZXMrKzsKLSAgICAgICAgfSBl
bHNlIGlmIChkZWxldGVkUHJvcGVydGllcykKLSAgICAgICAgICAgIG1fcGFyc2VkUHJvcGVydGll
c1tpIC0gZGVsZXRlZFByb3BlcnRpZXNdID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwotICAgIH0K
LQotICAgIG1fbnVtUGFyc2VkUHJvcGVydGllcyAtPSBkZWxldGVkUHJvcGVydGllczsKLX0KLQog
V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQ
YXJzZXJWYWx1ZUxpc3QqIGtleXMpCiB7CiAgICAgLy8gQ3JlYXRlIGEga2V5IHN0cmluZyBmcm9t
IHRoZSBwYXNzZWQga2V5cwpAQCAtNjk2MSw3ICs2OTIwLDcgQEAgV2ViS2l0Q1NTS2V5ZnJhbWVS
dWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJWYWx1ZUxpc3QqIGtl
eXMpCiAKICAgICBSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBrZXlmcmFtZSA9IFdlYktp
dENTU0tleWZyYW1lUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7CiAgICAga2V5ZnJhbWUtPnNl
dEtleVRleHQoa2V5U3RyaW5nKTsKLSAgICBrZXlmcmFtZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgwLCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVt
UGFyc2VkUHJvcGVydGllcykpOworICAgIGtleWZyYW1lLT5zZXREZWNsYXJhdGlvbihDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKDAsIG1fcGFyc2VkUHJvcGVydGllcykpOwogCiAg
ICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCAxMDlkZTA1
Li4zYzM1ODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNp
bmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmgi
CisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0
eVNvdXJjZURhdGEuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNvbG9y
LmgiCkBAIC03OCw4ICs3OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWVDYWNoZSogcHJpbWl0aXZlVmFsdWVDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpbWl0aXZlVmFsdWVDYWNoZS5nZXQoKTsgfQogCiAgICAgICAgIHZvaWQgYWRkUHJvcGVydHko
aW50IHByb3BJZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wgaW1wb3J0YW50KTsKLSAgICAg
ICAgdm9pZCByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKGludCBudW0pOwotICAgICAgICBib29sIGhh
c1Byb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX251bVBhcnNlZFByb3BlcnRpZXMgPiAwOyB9
CisgICAgICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VkUHJv
cGVydGllcy5jb3VudCgpID4gMDsgfQogCiAgICAgICAgIGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCk7CiAgICAgICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoaW50IHBy
b3BJZCwgY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCBpbXBv
cnRhbnQpOwpAQCAtMjU4LDE4ICsyNTgsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBSZWZQdHI8Q1NTUnVsZT4gbV9rZXlmcmFtZTsKICAgICAgICAgT3duUHRyPE1lZGlhUXVlcnk+
IG1fbWVkaWFRdWVyeTsKICAgICAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBtX3ZhbHVlTGlzdDsK
LSAgICAgICAgQ1NTUHJvcGVydHkqKiBtX3BhcnNlZFByb3BlcnRpZXM7CisgICAgICAgIENTU1By
b3BlcnR5Q29udGFpbmVyIG1fcGFyc2VkUHJvcGVydGllczsKICAgICAgICAgQ1NTU2VsZWN0b3JM
aXN0KiBtX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3I7CiAgICAgICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZUNhY2hlPiBtX3ByaW1pdGl2ZVZhbHVlQ2FjaGU7Ci0gICAgICAgIHVuc2ln
bmVkIG1fbnVtUGFyc2VkUHJvcGVydGllczsKLSAgICAgICAgdW5zaWduZWQgbV9tYXhQYXJzZWRQ
cm9wZXJ0aWVzOwogICAgICAgICB1bnNpZ25lZCBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVN
YXJnaW5Cb3g7CiAKICAgICAgICAgaW50IG1faW5QYXJzZVNob3J0aGFuZDsKICAgICAgICAgaW50
IG1fY3VycmVudFNob3J0aGFuZDsKICAgICAgICAgYm9vbCBtX2ltcGxpY2l0U2hvcnRoYW5kOwog
Ci0gICAgICAgIGJvb2wgbV9oYXNGb250RmFjZU9ubHlWYWx1ZXM7CiAgICAgICAgIGJvb2wgbV9o
YWRTeW50YWN0aWNhbGx5VmFsaWRDU1NSdWxlOwogCiAgICAgICAgIEF0b21pY1N0cmluZyBtX2Rl
ZmF1bHROYW1lc3BhY2U7CkBAIC0zMDcsOCArMzA0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIHZvaWQgY2hlY2tGb3JPcnBoYW5lZFVuaXRzKCk7CiAKLSAgICAgICAgdm9pZCBk
ZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKLQogICAgICAgICBib29sIGlzR2VuZXJhdGVkSW1h
Z2VWYWx1ZShDU1NQYXJzZXJWYWx1ZSopIGNvbnN0OwogICAgICAgICBib29sIHBhcnNlR2VuZXJh
dGVkSW1hZ2UoUmVmUHRyPENTU1ZhbHVlPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
b3BlcnR5Q29udGFpbmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44
MzZjMDliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
Q29udGFpbmVyLmNwcApAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQW5kcmFzIEJlY3NpIDxhYmVjc2lAd2Via2l0
Lm9yZz4sIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIgorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5o
IgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworQ1NTUHJvcGVydHlDb250YWluZXI6OkNTU1Byb3BlcnR5Q29udGFpbmVy
KCkKKyAgICA6IG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyhmYWxzZSkKK3sKK30KKworQ1NT
UHJvcGVydHlDb250YWluZXI6Oml0ZXJhdG9yIENTU1Byb3BlcnR5Q29udGFpbmVyOjpnZXRQcm9w
ZXJ0eUJ5SWQoaW50IHByb3BlcnR5SWQpCit7CisgICAgcmV0dXJuIG1fcHJvcGVydHlTZXQuZmlu
ZDxpbnQsIENTU1Byb3BlcnR5SWRIYXNoVHJhbnNsYXRvcj4ocHJvcGVydHlJZCk7Cit9CisKK0NT
U1Byb3BlcnR5Q29udGFpbmVyOjppdGVyYXRvciBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6YmVnaW4o
KQoreworICAgIHJldHVybiBtX3Byb3BlcnR5U2V0LmJlZ2luKCk7Cit9CisKK0NTU1Byb3BlcnR5
Q29udGFpbmVyOjppdGVyYXRvciBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6ZW5kKCkKK3sKKyAgICBy
ZXR1cm4gbV9wcm9wZXJ0eVNldC5lbmQoKTsKK30KKworQ1NTUHJvcGVydHkmIENTU1Byb3BlcnR5
Q29udGFpbmVyOjpsYXN0KCkKK3sKKyAgICBBU1NFUlQoIW1fcHJvcGVydHlTZXQuaXNFbXB0eSgp
KTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC5sYXN0KCk7Cit9CisKK3ZvaWQgQ1NTUHJvcGVy
dHlDb250YWluZXI6OmFkZFByb3BlcnR5KGludCBwcm9wZXJ0eUlkLCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGludCBzaG9ydGhhbmRJRCwgYm9vbCBpbXBsaWNp
dCkKK3sKKyAgICBBU1NFUlQocHJvcGVydHlJZCk7CisKKyAgICBDU1NQcm9wZXJ0eSBuZXdQcm9w
ZXJ0eShwcm9wZXJ0eUlkLCB2YWx1ZSwgaW1wb3J0YW50LCBzaG9ydGhhbmRJRCwgaW1wbGljaXQp
OworICAgIGl0ZXJhdG9yIHByb3BlcnR5ID0gZ2V0UHJvcGVydHlCeUlkKHByb3BlcnR5SWQpOwor
CisgICAgaWYgKHByb3BlcnR5ICE9IG1fcHJvcGVydHlTZXQuZW5kKCkpIHsKKyAgICAgICAgaWYg
KHByb3BlcnR5LT5pc0ltcG9ydGFudCgpICYmICFpbXBvcnRhbnQpCisgICAgICAgICAgICBuZXdQ
cm9wZXJ0eSA9ICpwcm9wZXJ0eTsKKworICAgICAgICBtX3Byb3BlcnR5U2V0LnJlbW92ZShwcm9w
ZXJ0eSk7CisgICAgfQorCisgICAgbV9wcm9wZXJ0eVNldC5hZGQobmV3UHJvcGVydHkpOworfQor
Cit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJ
ZCkKK3sKKyAgICBBU1NFUlQocHJvcGVydHlJZCk7CisgICAgaXRlcmF0b3IgcHJvcGVydHkgPSBn
ZXRQcm9wZXJ0eUJ5SWQocHJvcGVydHlJZCk7CisKKyAgICBpZiAocHJvcGVydHkgPT0gbV9wcm9w
ZXJ0eVNldC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcm9wZXJ0eVNldC5yZW1v
dmUocHJvcGVydHkpOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVQcm9w
ZXJ0aWVzKGNvbnN0IGludCogaWRMaXN0LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICByZW1vdmVQcm9wZXJ0eShp
ZExpc3RbaV0pOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVGb250RmFj
ZVByb3BlcnRpZXMoKQoreworICAgIGlmICghbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpbnQgaWRzWzNdID0ge0NTU1Byb3BlcnR5Rm9udFdlaWdo
dCwgQ1NTUHJvcGVydHlGb250U3R5bGUsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnR9OworCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoaWRzKTsgKytpKSB7Cisg
ICAgICAgIGl0ZXJhdG9yIHByb3BlcnR5ID0gZ2V0UHJvcGVydHlCeUlkKGlkc1tpXSk7CisKKyAg
ICAgICAgaWYgKHByb3BlcnR5ID09IG1fcHJvcGVydHlTZXQuZW5kKCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBpZiAocHJvcGVydHktPnZhbHVlKCktPmlzVmFsdWVMaXN0KCkp
CisgICAgICAgICAgICBtX3Byb3BlcnR5U2V0LnJlbW92ZShwcm9wZXJ0eSk7CisgICAgfQorCisg
ICAgbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzID0gZmFsc2U7Cit9CisKK3ZvaWQgQ1NTUHJv
cGVydHlDb250YWluZXI6OnJlbW92ZUxhc3QoKQoreworICAgIEFTU0VSVChtX3Byb3BlcnR5U2V0
LnNpemUoKSk7CisgICAgbV9wcm9wZXJ0eVNldC5yZW1vdmVMYXN0KCk7Cit9CisKK3ZvaWQgQ1NT
UHJvcGVydHlDb250YWluZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSkKK3sKKyAg
ICBBU1NFUlQobV9wcm9wZXJ0eVNldC5zaXplKCkgPj0gbnVtKTsKKyAgICBpbnQgcmVtb3ZlZFBy
b3BlcnRpZXMgPSAwOworICAgIHdoaWxlIChyZW1vdmVkUHJvcGVydGllcysrIDwgbnVtKQorICAg
ICAgICBtX3Byb3BlcnR5U2V0LnJlbW92ZUxhc3QoKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNv
bnRhaW5lcjo6Y2xlYXJQcm9wZXJ0aWVzKCkKK3sKKyAgICBtX3Byb3BlcnR5U2V0LmNsZWFyKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5Q29udGFpbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU5YWY0
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRh
aW5lci5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdlYmtpdC5vcmc+LCBV
bml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENTU1Byb3BlcnR5Q29udGFpbmVyX2gKKyNkZWZp
bmUgQ1NTUHJvcGVydHlDb250YWluZXJfaAorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNp
bmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVk
ZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgdW5z
aWduZWQga0lubGluZUNhcGFjaXR5ID0gMzI7CisKK2NsYXNzIENTU1Byb3BlcnR5Q29udGFpbmVy
IHsKK3ByaXZhdGU6CisgICAgc3RydWN0IENTU1Byb3BlcnR5SGFzaEZ1bmN0aW9ucyB7CisgICAg
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKENTU1Byb3BlcnR5IHByb3BlcnR5KSB7IHJldHVybiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJvcGVydHkubV9pZCk7IH0KKyAgICAgICAgc3RhdGljIGJv
b2wgZXF1YWwoQ1NTUHJvcGVydHkgYSwgQ1NTUHJvcGVydHkgYikgeyByZXR1cm4gYS5tX2lkID09
IGIubV9pZDsgfQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0
eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07CisgICAgc3RydWN0IENTU1Byb3BlcnR5SWRIYXNo
VHJhbnNsYXRvciB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGludCBpZCkgeyBBU1NF
UlQoaWQgPj0gMCk7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaWQpOyB9CisgICAgICAg
IHN0YXRpYyBib29sIGVxdWFsKENTU1Byb3BlcnR5IHByb3BlcnR5LCBpbnQgaWQpIHsgcmV0dXJu
IHByb3BlcnR5Lm1faWQgPT0gaWQ7IH0KKyAgICB9OworCitwdWJsaWM6CisgICAgdHlwZWRlZiBM
aXN0SGFzaFNldDxDU1NQcm9wZXJ0eSwga0lubGluZUNhcGFjaXR5LCBDU1NQcm9wZXJ0eUhhc2hG
dW5jdGlvbnM+OjppdGVyYXRvciBpdGVyYXRvcjsKKyAgICB0eXBlZGVmIExpc3RIYXNoU2V0PENT
U1Byb3BlcnR5LCBrSW5saW5lQ2FwYWNpdHksIENTU1Byb3BlcnR5SGFzaEZ1bmN0aW9ucz46OmNv
bnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworCisgICAgQ1NTUHJvcGVydHlDb250YWluZXIo
KTsKKworICAgIENTU1Byb3BlcnR5Q29udGFpbmVyOjppdGVyYXRvciBiZWdpbigpOworICAgIENT
U1Byb3BlcnR5Q29udGFpbmVyOjppdGVyYXRvciBlbmQoKTsKKyAgICBDU1NQcm9wZXJ0eSYgbGFz
dCgpOworCisgICAgdW5zaWduZWQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5U2V0
LnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFjb3VudCgpOyB9
CisKKyAgICB2b2lkIHNldEZvbnRGYWNlT25seSgpIHsgbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0
aWVzID0gdHJ1ZTsgfQorCisgICAgdm9pZCBhZGRQcm9wZXJ0eShpbnQgcHJvcGVydHlJZCwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wgaW1wb3J0YW50LCBpbnQgc2hvcnRoYW5kSUQgPSAwLCBi
b29sIGltcGxpY2l0ID0gZmFsc2UpOworCisgICAgdm9pZCByZW1vdmVQcm9wZXJ0eShpbnQgcHJv
cGVydHlJZCk7CisgICAgdm9pZCByZW1vdmVQcm9wZXJ0aWVzKGNvbnN0IGludCogaWRMaXN0LCB1
bnNpZ25lZCBsZW5ndGgpOworICAgIHZvaWQgcmVtb3ZlRm9udEZhY2VQcm9wZXJ0aWVzKCk7Cisg
ICAgdm9pZCByZW1vdmVMYXN0KCk7CisKKyAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
aW50KTsKKyAgICB2b2lkIGNsZWFyUHJvcGVydGllcygpOworCitwcml2YXRlOgorICAgIENTU1By
b3BlcnR5Q29udGFpbmVyOjppdGVyYXRvciBnZXRQcm9wZXJ0eUJ5SWQoaW50IHByb3BlcnR5SWQp
OworCisgICAgYm9vbCBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXM7CisgICAgTGlzdEhhc2hT
ZXQ8Q1NTUHJvcGVydHksIGtJbmxpbmVDYXBhY2l0eSwgQ1NTUHJvcGVydHlIYXNoRnVuY3Rpb25z
PiBtX3Byb3BlcnR5U2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gQ1NTUHJvcGVydHlDb250YWluZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NWR0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcApp
bmRleCBmM2I1YWMzLi44Y2QzYzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZH
Q1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcApA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCisjaW5jbHVkZSAiQ1NTUHJv
cGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVk
ZSAiQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMu
aCIKQEAgLTI4MywxMCArMjg0LDEwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNWR1ZhbHVlKGlu
dCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBpZiAoIXBhcnNlVmFsdWUoQ1NTUHJv
cGVydHlNYXJrZXJTdGFydCwgaW1wb3J0YW50KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgaWYgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpIHsKLSAgICAgICAgICAgIHJvbGxi
YWNrTGFzdFByb3BlcnRpZXMoMSk7CisgICAgICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMucmVt
b3ZlTGFzdCgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAg
IENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRp
ZXMgLSAxXS0+dmFsdWUoKTsKKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9w
ZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1h
cmtlck1pZCwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5TWFya2VyRW5kLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgbV9pbXBsaWNpdFNob3J0
aGFuZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcApp
bmRleCA3NzBhNjg2Li40ZmUxODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VF
bGVtZW50LmNwcApAQCAtMjk5LDggKzI5OSw4IEBAIHZvaWQgU1ZHRm9udEZhY2VFbGVtZW50Ojpy
ZWJ1aWxkRm9udEZhY2UoKQogCiAgICAgLy8gUGFyc2UgaW4tbWVtb3J5IENTUyBydWxlcwogICAg
IENTU1Byb3BlcnR5IHNyY1Byb3BlcnR5KENTU1Byb3BlcnR5U3JjLCBsaXN0KTsKLSAgICBjb25z
dCBDU1NQcm9wZXJ0eSogc3JjUHJvcGVydHlSZWYgPSAmc3JjUHJvcGVydHk7Ci0gICAgbV9zdHls
ZURlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKCZzcmNQcm9wZXJ0eVJlZiwgMSk7Cisg
ICAgY29uc3QgQ1NTUHJvcGVydHkmIHNyY1Byb3BlcnR5UmVmID0gc3JjUHJvcGVydHk7CisgICAg
bV9zdHlsZURlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0eShzcmNQcm9wZXJ0eVJlZik7CiAK
ICAgICBpZiAoZGVzY3JpYmVzUGFyZW50Rm9udCkgeyAgICAKICAgICAgICAgLy8gVHJhdmVyc2Ug
cGFyc2VkIENTUyB2YWx1ZXMgYW5kIGFzc29jaWF0ZSBDU1NGb250RmFjZVNyY1ZhbHVlIGVsZW1l
bnRzIHdpdGggb3Vyc2VsdmVzLgotLSAKMS43LjYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103289</attachid>
            <date>2011-08-08 13:51:09 -0700</date>
            <delta_ts>2011-08-15 07:08:37 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-Refactor-the-CSSProperty-handling-infrastructure-of-.patch</filename>
            <type>text/plain</type>
            <size>43362</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSBkMTkzOTU3NTllZmY4MmE4MGQxYmZhOTJiZmY5ZGE5ZDMwZWJhOWI3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDggQXVnIDIwMTEgMjI6MTk6NDQgKzAyMDAKU3ViamVjdDogW1BBVENIXSBSZWZhY3Rv
ciB0aGUgQ1NTUHJvcGVydHkgaGFuZGxpbmcgaW5mcmFzdHJ1Y3R1cmUgb2YgQ1NTUGFyc2VyCgot
LS0KIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgfCAg
ICAxICsKIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDc0ICsrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSAg
ICAgICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDIgKwogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogICAgICB8ICAgIDggKysKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgfCAgICA4ICsrCiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55ICAgICAgICAgICAgICAgICAgIHwgICAgOCArLQogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcCB8ICAgMjMgKysrLQogU291cmNlL1dl
YkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmggICB8ICAgIDkgKy0KIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwICAgICAgICAgICAgICAgICAgfCAgMTIzICsrKysr
KystLS0tLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggICAgICAgICAg
ICAgICAgICAgIHwgICAxMSArLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRh
aW5lci5jcHAgICAgICAgfCAgMTMwICsrKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmggICAgICAgICB8ICAgNzkgKysrKysrKysrKysr
KwogU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgICAgICAgICAgICAgICB8ICAg
IDUgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwICAgICAgICAg
fCAgICA0ICstCiAxNiBmaWxlcyBjaGFuZ2VkLCAzODEgaW5zZXJ0aW9ucygrKSwgMTA5IGRlbGV0
aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eUNvbnRhaW5lci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydHlDb250YWluZXIuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNGI4M2FkYS4uMThi
YjQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ0OCw2ICs0NDgsNyBAQCBTRVQoV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAogICAgIGNzcy9DU1NQcmlt
aXRpdmVWYWx1ZUNhY2hlLmNwcAogICAgIGNzcy9DU1NQcm9wZXJ0eS5jcHAKKyAgICBjc3MvQ1NT
UHJvcGVydHlDb250YWluZXIuY3BwCiAgICAgY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwCiAg
ICAgY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAKICAgICBjc3MvQ1NTUmVmbGVjdFZhbHVl
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDY2OTFlNjQuLjFhNTNiN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw3NiBAQAorMjAxMS0wOC0wOCAgQW5kcmFzIEJlY3NpICA8YWJlY3NpQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmVmYWN0b3IgdGhlIENTU1Byb3BlcnR5IGhhbmRsaW5nIGluZnJhc3RydWN0dXJl
IG9mIENTU1BhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk0MTcKKworICAgICAgICBJbXBsZW1lbnQgYSBMaXN0SGFzaFNldCBiYXNlZCBjb250
YWluZXIgY2xhc3MgdG8gbWFuYWdlIENTU1Byb3BlcnRpZXMsIGVsaW1pbmF0ZSB0aGUgY3VycmVu
dAorICAgICAgICByYXcgcG9uaXRlciBiYXNlZCBtZWNoYW5pc20gZnJvbSBDU1NQYXJzZXIgYW5k
IGF1dG9tYXRpY2FsbHkgZGlzY2FyZCBkdXBsaWNhdGUgcHJvcGVydGllcy4KKyAgICAgICAgSW4g
YSBmb2xsb3ctdXAgQ1NTUHJvcGVydHlDb250YWluZXIgY2FuIGFsc28gYmUgdXNlZCB0byBleHRy
YWN0IHRoZSBwcm9wZXJ0eSBoYW5kbGluZyBsb2dpYworICAgICAgICBmcm9tIENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uIHdoaWNoIGN1cnJlbnRseSBtYWludGFpbnMgaXRzIG93biBmb3JrIG9m
IGluZnJhc3RydWN0dXJlCisgICAgICAgIGZvciBtYW5hZ2luZyBwYXJzZWQgcHJvcGVydGllcy4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjo6YWRkUGFyc2VkUHJvcGVydGllcyk6CisgICAgICAgICogY3NzL0NT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Q1NTUGFyc2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6fkNTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OmFkZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6Y2xlYXJQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2U0VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGb250U3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRWYXJpYW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGb250V2VpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6Y3JlYXRlRm9udEZhY2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6Y3JlYXRlUGFnZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpzdGFydERl
Y2xhcmF0aW9uc0Zvck1hcmdpbkJveCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmVu
ZERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OmNyZWF0ZUtleWZyYW1lUnVsZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpoYXNQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3MvQ1NT
UHJvcGVydHlDb250YWluZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5Q29udGFpbmVyOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eUNvbnRhaW5lcjo6Z2V0UHJvcGVydHlCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eUNvbnRhaW5lcjo6ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFp
bmVyOjpsYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjphZGRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3Zl
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnJlbW92
ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OnJl
bW92ZUZvbnRGYWNlUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNv
bnRhaW5lcjo6cmVtb3ZlTGFzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRh
aW5lcjo6cm9sbGJhY2tMYXN0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eUNvbnRhaW5lcjo6Y2xlYXJQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVy
dHlDb250YWluZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRh
aW5lcjo6Q1NTUHJvcGVydHlIYXNoRnVuY3Rpb25zOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpDU1NQcm9wZXJ0eUhhc2hGdW5jdGlvbnM6OmVxdWFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpDU1NQcm9wZXJ0eUlkSGFz
aFRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWlu
ZXI6OkNTU1Byb3BlcnR5SWRIYXNoVHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5Q29udGFpbmVyOjppc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5
Q29udGFpbmVyOjpzZXRGb250RmFjZU9ubHkpOgorICAgICAgICAqIGNzcy9TVkdDU1NQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNWR1ZhbHVlKToKKyAgICAg
ICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
bnRGYWNlRWxlbWVudDo6cmVidWlsZEZvbnRGYWNlKToKKwogMjAxMS0wOC0wOCAgQ3JpcyBOZWNr
YXIgIDxjZG5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBjb3VudGVyIG5vZGVzIGZy
b20gdGhlIHRyZWUgYW5kIGZpeC11cCBjaGlsZHJlbiB3aGVuIHRoZXkgYXJlIHJlbW92ZWQgZnJv
bSB0aGUgY291bnRlciBtYXAuCkBAIC0xMCw2ICs4Myw3IEBACiAgICAgICAgICogcmVuZGVyaW5n
L0NvdW50ZXJOb2RlLmNwcDoKICAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJOb2RlOjp+Q291bnRl
ck5vZGUpOgogCisKIDIwMTEtMDgtMDggIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBpbXBsZW1lbnQgYmFzaWMgaG9yaXpvbnRhbCBmbGV4aW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCBhMDY4YzAyLi44MzAxNDkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTk3NSw2ICs5NzUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHlMb25naGFuZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHlTb3VyY2VEYXRhLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOGQwZGZmNS4uMWE1OTBlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDkxLDYgKzQ5MSw3IEBACiAgICAgICAgICAgICAnY3NzL0NT
U1BhcnNlclZhbHVlcy5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCcs
CiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5LmgnLAorICAgICAgICAgICAgJ2Nzcy9DU1NQ
cm9wZXJ0eUNvbnRhaW5lci5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlTb3VyY2VE
YXRhLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NSZWZsZWN0VmFsdWUuaCcsCiAgICAgICAgICAg
ICAnY3NzL0NTU1JlZmxlY3Rpb25EaXJlY3Rpb24uaCcsCkBAIC0yMzUwLDYgKzIzNTEsNyBAQAog
ICAgICAgICAgICAgJ2Nzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmgnLAogICAgICAgICAgICAg
J2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQ
cm9wZXJ0eS5jcHAnLAorICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAn
LAogICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCcsCiAgICAgICAgICAg
ICAnY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3Bl
cnR5U291cmNlRGF0YS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBhNmY4OWE0Li5kMGFiODExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwpAQCAtNDExLDYgKzQxMSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGNzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHAgXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmNw
cCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5LmNwcCBcCisgICAgY3NzL0NTU1Byb3BlcnR5Q29udGFp
bmVyLmNwcCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIFwKICAgICBjc3MvQ1NT
UHJvcGVydHlTb3VyY2VEYXRhLmNwcCBcCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAgXApA
QCAtMTQxMSw2ICsxNDEyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmggXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmggXAogICAgIGNzcy9DU1NQ
cm9wZXJ0eS5oIFwKKyAgICBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCBcCiAgICAgY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuaCBcCiAgICAgY3NzL0NTU1JlZmxlY3RWYWx1ZS5oIFwKICAgICBj
c3MvQ1NTUnVsZS5oIFwKQEAgLTE0MjUsNiArMTQyNyw3IEBAIEhFQURFUlMgKz0gXAogICAgIGNz
cy9DU1NTdHlsZVNoZWV0LmggXAogICAgIGNzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmggXAog
ICAgIGNzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIFwKKyAgICBjc3MvQ1NTVmFsdWUuaCBcCiAg
ICAgY3NzL0NTU1ZhbHVlTGlzdC5oIFwKICAgICBjc3MvRm9udEZhbWlseVZhbHVlLmggXAogICAg
IGNzcy9Gb250RmVhdHVyZVZhbHVlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagppbmRleCBiMmU2OWUwLi43MmNjNjg0IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzI4NzgsNiArMzI4NzgsMTQg
QEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3Nz
XENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1Byb3BlcnR5Q29udGFpbmVyLmgiCisJCQkJPgor
CQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQcm9wZXJ0
eUxvbmdoYW5kLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2Q2ZjdhZS4uYzE4MWU2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNDQzLDYgKzQ0Myw4IEBACiAJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6b29t
SW5DdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUIxQUU3ODBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vyc29yLnBuZyAqLzsgfTsK
IAkJMUFCMUFFN0IwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxQUU3OTBDMDUxRkRF
MDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgKi87IH07CiAJCTFBQjMzREE1MTI1NTFFMzIw
MDI0NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIzM0RBNDEyNTUxRTMyMDAyNDQ1N0EgLyogSU9LaXQuZnJh
bWV3b3JrICovOyB9OworCQkxQUI0NEEwQzEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJvcGVydHlD
b250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFCNDRBMEIxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCAq
LzsgfTsKKwkJMUFCNDRBMEUxMzY3MkQyMDAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI0NEEw
RDEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUI3RkM2ODBBOEI5MkVDMDBE
OUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCN0ZDNDcwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVh
dG9yLmNwcCAqLzsgfTsKIAkJMUFCN0ZDNjkwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVh
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3
RkM0ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCAqLzsgfTsKIAkJMUFCN0ZD
NkIwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RkM0QTBBOEI5MkVDMDBEOUQzN0Ig
LyogWFBhdGhFeHByZXNzaW9uLmNwcCAqLzsgfTsKQEAgLTY5MzAsNiArNjkzMiw4IEBACiAJCTFB
QjFBRTc4MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gem9v
bUluQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCMUFFNzkwQzA1
MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gem9vbU91dEN1cnNv
ci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjMzREE0MTI1NTFFMzIwMDI0
NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPS2l0LmZyYW1ld29y
azsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yazsgc291
cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJMUFCNDRBMEIxMzY3MkNGRjAwMDg3NzdFIC8q
IENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUFCNDRBMEQxMzY3MkQyMDAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1Byb3BlcnR5Q29udGFpbmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjdGQzQ3MEE4QjkyRUMwMEQ5RDM3QiAv
KiBYUGF0aEV2YWx1YXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gWFBhdGhFdmFsdWF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI3
RkM0ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFhQYXRoRXZhbHVhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBQjdGQzQ5MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFhQYXRoRXZhbHVhdG9yLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE5Mjk0LDYgKzE5Mjk4LDggQEAKIAkJRjUyM0QxODQwMkRFNDJF
ODAxODYzNUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJMUFCNDRBMEQxMzY3MkQyMDAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVy
LmggKi8sCisJCQkJMUFCNDRBMEIxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFp
bmVyLmNwcCAqLywKIAkJCQk5M0NBNEM5QzA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXRva2VuaXpl
ciAqLywKIAkJCQlBODBFNkNEQTBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5oICovLAogCQkJ
CTkzMDcwNUM3MDlFMEM5NUYwMEIxN0ZFNCAvKiBDb3VudGVyLmlkbCAqLywKQEAgLTIzMzU0LDYg
KzIzMzYwLDcgQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVT
b3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNT
QXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8q
IFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUI0NEEwRTEzNjcyRDIwMDAwODc3N0Ug
LyogQ1NTUHJvcGVydHlDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjYxNjEsNiArMjYx
NjgsNyBAQAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1
ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8q
IFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBQjQ0QTBDMTM2NzJDRkYwMDA4Nzc3
RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JhbW1hci55CmluZGV4IDkwYjVlMTQuLjMyNTQwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIu
eQpAQCAtMzIzLDkgKzMyMyw5IEBAIHdlYmtpdF92YWx1ZToKICAgICAgICAgQ1NTUGFyc2VyKiBw
ID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgaWYgKCQ0KSB7CiAg
ICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IHAtPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7
Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1fbnVtUGFyc2VkUHJv
cGVydGllczsKKyAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9wYXJz
ZWRQcm9wZXJ0aWVzLmNvdW50KCk7CiAgICAgICAgICAgICBpZiAoIXAtPnBhcnNlVmFsdWUocC0+
bV9pZCwgcC0+bV9pbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFBy
b3BlcnRpZXMocC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7
CisgICAgICAgICAgICAgICAgcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLnJvbGxiYWNrTGFzdFByb3Bl
cnRpZXMocC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVz
KTsKICAgICAgICAgICAgIGRlbGV0ZSBwLT5tX3ZhbHVlTGlzdDsKICAgICAgICAgICAgIHAtPm1f
dmFsdWVMaXN0ID0gMDsKICAgICAgICAgfQpAQCAtMTI3MywxMCArMTI3MywxMCBAQCBkZWNsYXJh
dGlvbjoKICAgICAgICAgYm9vbCBpc1Byb3BlcnR5UGFyc2VkID0gZmFsc2U7CiAgICAgICAgIGlm
ICgkMSAmJiAkNCkgewogICAgICAgICAgICAgcC0+bV92YWx1ZUxpc3QgPSBwLT5zaW5rRmxvYXRp
bmdWYWx1ZUxpc3QoJDQpOwotICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBw
LT5tX251bVBhcnNlZFByb3BlcnRpZXM7CisgICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVy
dGllcyA9IHAtPm1fcGFyc2VkUHJvcGVydGllcy5jb3VudCgpOwogICAgICAgICAgICAgJCQgPSBw
LT5wYXJzZVZhbHVlKCQxLCAkNSk7CiAgICAgICAgICAgICBpZiAoISQkKQotICAgICAgICAgICAg
ICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0g
b2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgcC0+bV9wYXJzZWRQcm9wZXJ0
aWVzLnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkg
LSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBpc1Byb3BlcnR5UGFyc2VkID0gdHJ1ZTsKICAgICAgICAgICAgIGRlbGV0ZSBwLT5tX3ZhbHVl
TGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24uY3BwCmluZGV4IDAxN2RjNjkuLjVlYWUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNzMsNyArNzMsNyBAQCBDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVs
ZSogcGFyZW50LCBjb25zdCBWZQogICAgIC8vIEZJWE1FOiBUaGlzIGFsbG93cyBkdXBsaWNhdGUg
cHJvcGVydGllcy4KIH0KIAotQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCwgY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0
ICogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMpCitDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBDU1NQcm9w
ZXJ0eUNvbnRhaW5lciYgcHJvcGVydGllcykKICAgICA6IENTU1N0eWxlRGVjbGFyYXRpb24ocGFy
ZW50KQogICAgICwgbV9ub2RlKDApCiAgICAgLCBtX3N0cmljdFBhcnNpbmcoIXBhcmVudCB8fCBw
YXJlbnQtPnVzZVN0cmljdFBhcnNpbmcoKSkKQEAgLTgxLDExICs4MSwxNSBAQCBDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFy
ZW50LCBjb25zdCBDUwogICAgICwgbV9pdGVyYXRvckNvdW50KDApCiAjZW5kaWYKIHsKKyAgICB1
bnNpZ25lZCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5jb3VudCgpOworCisgICAgaWYgKCFu
dW1Qcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm47CisKICAgICBtX3Byb3BlcnRpZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShudW1Qcm9wZXJ0aWVzKTsKICAgICBIYXNoTWFwPGludCwgYm9vbD4g
Y2FuZGlkYXRlczsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkg
ewotICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eSAqcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldOwot
ICAgICAgICBBU1NFUlQocHJvcGVydHkpOworCisgICAgZm9yIChDU1NQcm9wZXJ0eUNvbnRhaW5l
cjo6Y29uc3RfaXRlcmF0b3IgcHJvcGVydHkgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IHByb3BlcnR5
ICE9IHByb3BlcnRpZXMuZW5kKCk7ICsrcHJvcGVydHkpIHsKICAgICAgICAgYm9vbCBpbXBvcnRh
bnQgPSBwcm9wZXJ0eS0+aXNJbXBvcnRhbnQoKTsKICAgICAgICAgaWYgKGNhbmRpZGF0ZXMuY29u
dGFpbnMocHJvcGVydHktPmlkKCkpKSB7CiAgICAgICAgICAgICBpZiAoIWltcG9ydGFudCAmJiBj
YW5kaWRhdGVzLmdldChwcm9wZXJ0eS0+aWQoKSkpCkBAIC02MzksMTMgKzY0MywxOCBAQCB2b2lk
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmlu
ZyYgc3R5bGVEZWNsYXJhdGlvbgogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotdm9p
ZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6YWRkUGFyc2VkUHJvcGVydGllcyhjb25zdCBD
U1NQcm9wZXJ0eSogY29uc3QqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzKQordm9pZCBD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6YWRkUGFyc2VkUHJvcGVydGllcyhDU1NQcm9wZXJ0
eUNvbnRhaW5lciYgcHJvcGVydGllcykKIHsKICAgICBBU1NFUlQoIW1faXRlcmF0b3JDb3VudCk7
CiAKKyAgICB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5jb3VudCgpOworCisg
ICAgaWYgKCFudW1Qcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm47CisKICAgICBtX3Byb3BlcnRp
ZXMucmVzZXJ2ZUNhcGFjaXR5KG51bVByb3BlcnRpZXMpOwotICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbnVtUHJvcGVydGllczsgKytpKQotICAgICAgICBhZGRQYXJzZWRQcm9wZXJ0eSgqcHJvcGVy
dGllc1tpXSk7CisgICAgZm9yIChDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3Ig
cCA9IHByb3BlcnRpZXMuYmVnaW4oKTsgcCAhPSBwcm9wZXJ0aWVzLmVuZCgpOyArK3ApCisgICAg
ICAgIGFkZFBhcnNlZFByb3BlcnR5KCpwKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5
IHNob3VsZCBoYXZlIGEgY2FsbCB0byBzZXROZWVkc1N0eWxlUmVjYWxjKCkgaWYgc29tZXRoaW5n
IGNoYW5nZWQuIFdlIG1heSBhbHNvIHdpc2ggdG8gYWRkCiAgICAgLy8gYSBub3RpZnlDaGFuZ2Vk
IGFyZ3VtZW50IHRvIHRoaXMgZnVuY3Rpb24gdG8gZm9sbG93IHRoZSBtb2RlbCBvZiBvdGhlciBm
dW5jdGlvbnMgaW4gdGhpcyBjbGFzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggZWE4YWIzZi4uYjgzODI5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTI0LDYgKzI0
LDcgQEAKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJp
bWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNTU1By
b3BlcnR5Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtNjcsOSArNjgs
OSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uKHBhcmVudFJ1bGUpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShDU1NSdWxlKiBwYXJlbnRS
dWxlLCBjb25zdCBDU1NQcm9wZXJ0eSogY29uc3QqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0
aWVzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBj
cmVhdGUoQ1NTUnVsZSogcGFyZW50UnVsZSwgQ1NTUHJvcGVydHlDb250YWluZXImIHByb3BlcnRp
ZXMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uKHBhcmVudFJ1bGUsIHByb3BlcnRpZXMsIG51bVByb3BlcnRpZXMpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihwYXJlbnRS
dWxlLCBwcm9wZXJ0aWVzKSk7CiAgICAgfQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoY29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYgcHJv
cGVydGllcykKICAgICB7CkBAIC0xMjQsNyArMTI1LDcgQEAgcHVibGljOgogCiAgICAgLy8gQmVz
aWRlcyBhZGRpbmcgdGhlIHByb3BlcnRpZXMsIHRoaXMgYWxzbyByZW1vdmVzIGFueSBleGlzdGlu
ZyBwcm9wZXJ0aWVzIHdpdGggdGhlc2UgSURzLgogICAgIC8vIEl0IGRvZXMgbm8gbm90aWZpY2F0
aW9uIHNpbmNlIGl0J3MgY2FsbGVkIGJ5IHRoZSBwYXJzZXIuCi0gICAgdm9pZCBhZGRQYXJzZWRQ
cm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCAqLCBpbnQgbnVtUHJvcGVydGllcyk7
CisgICAgdm9pZCBhZGRQYXJzZWRQcm9wZXJ0aWVzKENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9w
ZXJ0aWVzKTsKICAgICAvLyBUaGlzIGRvZXMgbm8gY2hhbmdlIG5vdGlmaWNhdGlvbnMgc2luY2Ug
aXQncyBvbmx5IGNhbGxlZCBieSBjcmVhdGVNYXJrdXAuCiAgICAgdm9pZCBhZGRQYXJzZWRQcm9w
ZXJ0eShjb25zdCBDU1NQcm9wZXJ0eSYpOwogIApAQCAtMTQ5LDcgKzE1MCw3IEBAIHByb3RlY3Rl
ZDoKIHByaXZhdGU6CiAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oKTsKICAgICBDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBWZWN0b3I8
Q1NTUHJvcGVydHk+Jik7Ci0gICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSog
cGFyZW50UnVsZSwgY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICosIGludCBudW1Qcm9wZXJ0aWVz
KTsKKyAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRSdWxlLCBD
U1NQcm9wZXJ0eUNvbnRhaW5lciYgcHJvcGVydGllcyk7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IG1ha2VNdXRhYmxlKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAKaW5kZXggMmJjNDE4My4uYmY4MzFlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKQEAgLTE2NywxNCArMTY3LDEwIEBAIENTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wg
c3RyaWN0UGFyc2luZykKICAgICAsIG1faWQoMCkKICAgICAsIG1fc3R5bGVTaGVldCgwKQogICAg
ICwgbV92YWx1ZUxpc3QoMCkKLSAgICAsIG1fcGFyc2VkUHJvcGVydGllcyhzdGF0aWNfY2FzdDxD
U1NQcm9wZXJ0eSoqPihmYXN0TWFsbG9jKDMyICogc2l6ZW9mKENTU1Byb3BlcnR5KikpKSkKLSAg
ICAsIG1fbnVtUGFyc2VkUHJvcGVydGllcygwKQotICAgICwgbV9tYXhQYXJzZWRQcm9wZXJ0aWVz
KDMyKQotICAgICwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KElOVkFMSURf
TlVNX1BBUlNFRF9QUk9QRVJUSUVTKQorICAgICwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3Jl
TWFyZ2luQm94KDApCiAgICAgLCBtX2luUGFyc2VTaG9ydGhhbmQoMCkKICAgICAsIG1fY3VycmVu
dFNob3J0aGFuZCgwKQogICAgICwgbV9pbXBsaWNpdFNob3J0aGFuZChmYWxzZSkKLSAgICAsIG1f
aGFzRm9udEZhY2VPbmx5VmFsdWVzKGZhbHNlKQogICAgICwgbV9oYWRTeW50YWN0aWNhbGx5VmFs
aWRDU1NSdWxlKGZhbHNlKQogICAgICwgbV9kZWZhdWx0TmFtZXNwYWNlKHN0YXJBdG9tKQogICAg
ICwgbV9pblN0eWxlUnVsZU9yRGVjbGFyYXRpb24oZmFsc2UpCkBAIC0xOTgsOSArMTk0LDYgQEAg
Q1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQYXJzaW5nKQogCiBDU1NQYXJzZXI6On5D
U1NQYXJzZXIoKQogewotICAgIGNsZWFyUHJvcGVydGllcygpOwotICAgIGZhc3RGcmVlKG1fcGFy
c2VkUHJvcGVydGllcyk7Ci0KICAgICBkZWxldGUgbV92YWx1ZUxpc3Q7CiAKICAgICBmYXN0RnJl
ZShtX2RhdGEpOwpAQCAtNDYxLDExICs0NTQsMTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHkK
ICAgICBtX3J1bGUgPSAwOwogCiAgICAgYm9vbCBvayA9IGZhbHNlOwotICAgIGlmIChtX2hhc0Zv
bnRGYWNlT25seVZhbHVlcykKLSAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0g
ICAgaWYgKG1fbnVtUGFyc2VkUHJvcGVydGllcykgeworICAgIG1fcGFyc2VkUHJvcGVydGllcy5y
ZW1vdmVGb250RmFjZVByb3BlcnRpZXMoKTsKKyAgICBpZiAobV9wYXJzZWRQcm9wZXJ0aWVzLmNv
dW50KCkpIHsKICAgICAgICAgb2sgPSB0cnVlOwotICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFy
c2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGllcyk7
CisgICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVy
dGllcyk7CiAgICAgICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIH0KIApAQCAtNDg3LDcgKzQ3
OSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBib29sIHN0cmljdCkKICAgICBpZiAoIXBhcnNlci5wYXJzZUNvbG9yKGR1
bW15U3R5bGVEZWNsYXJhdGlvbi5nZXQoKSwgc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgQ1NTVmFsdWUqIHZhbHVlID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllc1swXS0+
dmFsdWUoKTsKKyAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXIubV9wYXJzZWRQcm9wZXJ0aWVz
Lmxhc3QoKS52YWx1ZSgpOwogICAgIGlmICh2YWx1ZS0+Y3NzVmFsdWVUeXBlKCkgIT0gQ1NTVmFs
dWU6OkNTU19QUklNSVRJVkVfVkFMVUUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTA4
LDcgKzUwMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uKiBkZWNsYXJhdGlvbiwgY29uc3QgU3RyaW5nCiAgICAgY3NzeXlwYXJzZSh0aGlz
KTsKICAgICBtX3J1bGUgPSAwOwogCi0gICAgcmV0dXJuIChtX251bVBhcnNlZFByb3BlcnRpZXMg
JiYgbV9wYXJzZWRQcm9wZXJ0aWVzWzBdLT5tX2lkID09IENTU1Byb3BlcnR5Q29sb3IpOworICAg
IHJldHVybiAobV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50KCkgJiYgbV9wYXJzZWRQcm9wZXJ0aWVz
Lmxhc3QoKS5pZCgpID09IENTU1Byb3BlcnR5Q29sb3IpOwogfQogCiBib29sIENTU1BhcnNlcjo6
cGFyc2VTeXN0ZW1Db2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmluZywgRG9j
dW1lbnQqIGRvY3VtZW50KQpAQCAtNTYyLDExICs1NTQsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlRGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRlY2xhcmF0aW9uLCBj
b25zdAogICAgIG1fcnVsZSA9IDA7CiAKICAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgaWYgKG1f
aGFzRm9udEZhY2VPbmx5VmFsdWVzKQotICAgICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMo
KTsKLSAgICBpZiAobV9udW1QYXJzZWRQcm9wZXJ0aWVzKSB7CisgICAgbV9wYXJzZWRQcm9wZXJ0
aWVzLnJlbW92ZUZvbnRGYWNlUHJvcGVydGllcygpOworCisgICAgaWYgKG1fcGFyc2VkUHJvcGVy
dGllcy5jb3VudCgpKSB7CiAgICAgICAgIG9rID0gdHJ1ZTsKLSAgICAgICAgZGVjbGFyYXRpb24t
PmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3Bl
cnRpZXMpOworICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcyhtX3BhcnNl
ZFByb3BlcnRpZXMpOwogICAgICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICB9CiAKQEAgLTYx
MCwzMyArNjAyLDEzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZU1lZGlhUXVlcnkoTWVkaWFMaXN0
KiBxdWVyaWVzLCBjb25zdCBTdHJpbmcmIHN0cmluZykKIAogdm9pZCBDU1NQYXJzZXI6OmFkZFBy
b3BlcnR5KGludCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9y
dGFudCkKIHsKLSAgICBPd25QdHI8Q1NTUHJvcGVydHk+IHByb3AoYWRvcHRQdHIobmV3IENTU1By
b3BlcnR5KHByb3BJZCwgdmFsdWUsIGltcG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5kLCBtX2lt
cGxpY2l0U2hvcnRoYW5kKSkpOwotICAgIGlmIChtX251bVBhcnNlZFByb3BlcnRpZXMgPj0gbV9t
YXhQYXJzZWRQcm9wZXJ0aWVzKSB7Ci0gICAgICAgIG1fbWF4UGFyc2VkUHJvcGVydGllcyArPSAz
MjsKLSAgICAgICAgaWYgKG1fbWF4UGFyc2VkUHJvcGVydGllcyA+IFVJTlRfTUFYIC8gc2l6ZW9m
KENTU1Byb3BlcnR5KikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fcGFyc2VkUHJv
cGVydGllcyA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5Kio+KGZhc3RSZWFsbG9jKG1fcGFyc2Vk
UHJvcGVydGllcywKLSAgICAgICAgICAgIG1fbWF4UGFyc2VkUHJvcGVydGllcyAqIHNpemVvZihD
U1NQcm9wZXJ0eSopKSk7Ci0gICAgfQotICAgIG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNl
ZFByb3BlcnRpZXMrK10gPSBwcm9wLmxlYWtQdHIoKTsKLX0KLQotdm9pZCBDU1NQYXJzZXI6OnJv
bGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSkKLXsKLSAgICBBU1NFUlQobnVtID49IDApOwot
ICAgIEFTU0VSVChtX251bVBhcnNlZFByb3BlcnRpZXMgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG51bSkpOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW07ICsraSkKLSAgICAgICAgZGVs
ZXRlIG1fcGFyc2VkUHJvcGVydGllc1stLW1fbnVtUGFyc2VkUHJvcGVydGllc107CisgICAgbV9w
YXJzZWRQcm9wZXJ0aWVzLmFkZFByb3BlcnR5KHByb3BJZCwgdmFsdWUsIGltcG9ydGFudCwgbV9j
dXJyZW50U2hvcnRoYW5kLCBtX2ltcGxpY2l0U2hvcnRoYW5kKTsKIH0KIAogdm9pZCBDU1NQYXJz
ZXI6OmNsZWFyUHJvcGVydGllcygpCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
bnVtUGFyc2VkUHJvcGVydGllczsgaSsrKQotICAgICAgICBkZWxldGUgbV9wYXJzZWRQcm9wZXJ0
aWVzW2ldOwotICAgIG1fbnVtUGFyc2VkUHJvcGVydGllcyA9IDA7CiAgICAgbV9udW1QYXJzZWRQ
cm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVM7
Ci0gICAgbV9oYXNGb250RmFjZU9ubHlWYWx1ZXMgPSBmYWxzZTsKKyAgICBtX3BhcnNlZFByb3Bl
cnRpZXMuY2xlYXJQcm9wZXJ0aWVzKCk7CiB9CiAgICAgCiB2b2lkIENTU1BhcnNlcjo6c2V0U3R5
bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KQpAQCAtOTQ2LDcgKzkxOCw3IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAg
ICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBwcm9wSWQpOwogICAgICAgICBpZiAobnVt
ICE9IDEgfHwgIXBhcnNlVmFsdWUoQ1NTUHJvcGVydHlPdmVyZmxvd1gsIGltcG9ydGFudCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFy
c2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMgLSAxXS0+dmFsdWUoKTsKKyAgICAg
ICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwog
ICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFu
dCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEwNDMsNyArMTAxNSw3IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAg
ICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlCb3JkZXJTcGFj
aW5nKTsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRh
bnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVl
KiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZh
bHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMu
bGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2
YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBA
IC0xNzA5LDcgKzE2ODEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElk
LCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMs
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpOwogICAgICAgICAgICAgaWYgKCFwYXJz
ZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVz
W21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVl
KiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgICAg
IGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTI0OTEsNyArMjQ2Myw3IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0aWVzLCAg
Ym9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNhc2UgMTogewogICAgICAgICAgICAgaWYgKCFwYXJz
ZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVz
W21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVl
KiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgICAg
IEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKICAg
ICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwog
ICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1syXSwgdmFsdWUsIGltcG9ydGFudCk7
CkBAIC0yNDk5LDE5ICsyNDcxLDI0IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50
IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0aWVzLCAgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIDI6IHsKLSAgICAgICAgICAgIGlm
ICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHBy
b3BlcnRpZXNbMV0sIGltcG9ydGFudCkpCisgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJv
cGVydGllc1swXSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBDU1NWYWx1ZSAqdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJz
ZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlMSA9
IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKKyAgICAgICAgICAgIGlmICghcGFy
c2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZTIgPSBtX3BhcnNlZFByb3BlcnRp
ZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2Nv
cGUodGhpcywgUHJvcGVydHlJbXBsaWNpdCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9w
ZXJ0aWVzWzJdLCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIHZhbHVlID0gbV9wYXJz
ZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKLSAgICAgICAg
ICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAg
ICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1syXSwgdmFsdWUxLCBpbXBvcnRhbnQpOworICAg
ICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1szXSwgdmFsdWUyLCBpbXBvcnRhbnQpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSAzOiB7Ci0gICAgICAg
ICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VW
YWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNb
Ml0sIGltcG9ydGFudCkpCisgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1sw
XSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1
ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKKyAgICAgICAgICAgIGlmICgh
cGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzJdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVy
dGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZhbHVlKCk7CisKICAgICAgICAgICAgIElt
cGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAg
ICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC00MTA5LDcgKzQwODYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VGb250U3R5bGUoYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogCiAgICAgaWYgKHZhbHVlcyAmJiB2
YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAgIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzID0gdHJ1
ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnNldEZvbnRGYWNlT25seSgpOwogICAgICAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgdmFsdWVzLnJlbGVhc2UoKSwgaW1w
b3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNDE1Niw3ICs0MTMzLDcg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFZhcmlhbnQoYm9vbCBpbXBvcnRhbnQpCiAgICAg
fQogCiAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAgIG1faGFz
Rm9udEZhY2VPbmx5VmFsdWVzID0gdHJ1ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnNl
dEZvbnRGYWNlT25seSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJp
YW50LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CkBAIC00MjA5LDcgKzQxODYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGb250V2Vp
Z2h0KGJvb2wgaW1wb3J0YW50KQogICAgIH0KIAogICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLT5s
ZW5ndGgoKSkgewotICAgICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IHRydWU7CisgICAg
ICAgIG1fcGFyc2VkUHJvcGVydGllcy5zZXRGb250RmFjZU9ubHkoKTsKICAgICAgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBvcnRhbnQp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC02NzgzLDkgKzY3NjAsOCBAQCBDU1NS
dWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNl
bGVjdG9yPiA+KiBzZWxlY3RvcgogICAgICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93
TmFtZXNwYWNlRGVjbGFyYXRpb25zID0gZmFsc2U7CiAgICAgICAgIFJlZlB0cjxDU1NTdHlsZVJ1
bGU+IHJ1bGUgPSBDU1NTdHlsZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQsIG1fbGFzdFNlbGVj
dG9yTGluZU51bWJlcik7CiAgICAgICAgIHJ1bGUtPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVj
dG9ycyk7Ci0gICAgICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAgICAgICAg
IGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlv
bihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2Vk
UHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIG1fcGFyc2VkUHJv
cGVydGllcy5yZW1vdmVGb250RmFjZVByb3BlcnRpZXMoKTsKKyAgICAgICAgcnVsZS0+c2V0RGVj
bGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBt
X3BhcnNlZFByb3BlcnRpZXMpKTsKICAgICAgICAgcmVzdWx0ID0gcnVsZS5nZXQoKTsKICAgICAg
ICAgbV9wYXJzZWRTdHlsZU9iamVjdHMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICAgICAg
aWYgKG1fcnVsZVJhbmdlTWFwKSB7CkBAIC02ODA3LDggKzY3ODMsOCBAQCBDU1NSdWxlKiBDU1NQ
YXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+
KiBzZWxlY3RvcgogQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUoKQogewog
ICAgIG1fYWxsb3dJbXBvcnRSdWxlcyA9IG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMgPSBm
YWxzZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9udW1QYXJzZWRQcm9wZXJ0aWVz
OyArK2kpIHsKLSAgICAgICAgQ1NTUHJvcGVydHkqIHByb3BlcnR5ID0gbV9wYXJzZWRQcm9wZXJ0
aWVzW2ldOworCisgICAgZm9yIChDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aXRlcmF0b3IgcHJvcGVy
dHkgPSBtX3BhcnNlZFByb3BlcnRpZXMuYmVnaW4oKTsgcHJvcGVydHkgIT0gbV9wYXJzZWRQcm9w
ZXJ0aWVzLmVuZCgpOyArK3Byb3BlcnR5KSB7CiAgICAgICAgIGludCBpZCA9IHByb3BlcnR5LT5p
ZCgpOwogICAgICAgICBpZiAoKGlkID09IENTU1Byb3BlcnR5Rm9udFdlaWdodCB8fCBpZCA9PSBD
U1NQcm9wZXJ0eUZvbnRTdHlsZSB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KSAmJiBw
cm9wZXJ0eS0+dmFsdWUoKS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CiAgICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHZhbHVlID0gcHJvcGVydHktPm1fdmFsdWUucmVsZWFzZSgpOwpAQCAtNjgy
Myw4ICs2Nzk5LDkgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUoKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9CisKICAgICBSZWZQdHI8Q1NT
Rm9udEZhY2VSdWxlPiBydWxlID0gQ1NTRm9udEZhY2VSdWxlOjpjcmVhdGUobV9zdHlsZVNoZWV0
KTsKLSAgICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6
Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0
aWVzKSk7CisgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b246OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMpKTsKICAgICBjbGVhclBy
b3BlcnRpZXMoKTsKICAgICBDU1NGb250RmFjZVJ1bGUqIHJlc3VsdCA9IHJ1bGUuZ2V0KCk7CiAg
ICAgbV9wYXJzZWRTdHlsZU9iamVjdHMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKQEAgLTY4OTgs
NyArNjg3NSw3IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlUGFnZVJ1bGUoUGFzc093blB0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gcGFnZVNlbGVjdG9yKQogICAgICAgICBWZWN0b3I8T3duUHRy
PENTU1BhcnNlclNlbGVjdG9yPiA+IHNlbGVjdG9yVmVjdG9yOwogICAgICAgICBzZWxlY3RvclZl
Y3Rvci5hcHBlbmQocGFnZVNlbGVjdG9yKTsKICAgICAgICAgcnVsZS0+YWRvcHRTZWxlY3RvclZl
Y3RvcihzZWxlY3RvclZlY3Rvcik7Ci0gICAgICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0
aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpKTsKKyAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRp
b24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNl
ZFByb3BlcnRpZXMpKTsKICAgICAgICAgcGFnZVJ1bGUgPSBydWxlLmdldCgpOwogICAgICAgICBt
X3BhcnNlZFN0eWxlT2JqZWN0cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwogICAgIH0KQEAgLTY5
MTksMzQgKzY4OTYsMTYgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVNYXJnaW5BdFJ1bGUo
Q1NTU2VsZWN0b3I6Ok1hcmdpbkJveFR5cGUgLyogbWFyZ2luQm94ICoKIAogdm9pZCBDU1NQYXJz
ZXI6OnN0YXJ0RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCkKIHsKLSAgICBtX251bVBhcnNlZFBy
b3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3ggPSBtX251bVBhcnNlZFByb3BlcnRpZXM7CisgICAgbV9u
dW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmNv
dW50KCk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjplbmREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3go
KQogewogICAgIEFTU0VSVChtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3ggIT0g
SU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVMpOwotICAgIHJvbGxiYWNrTGFzdFByb3BlcnRp
ZXMobV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFy
Z2luQm94KTsKKyAgICBtX3BhcnNlZFByb3BlcnRpZXMucm9sbGJhY2tMYXN0UHJvcGVydGllcyht
X3BhcnNlZFByb3BlcnRpZXMuY291bnQoKSAtIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1h
cmdpbkJveCk7CiAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gSU5W
QUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVM7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjpkZWxldGVG
b250RmFjZU9ubHlWYWx1ZXMoKQotewotICAgIEFTU0VSVChtX2hhc0ZvbnRGYWNlT25seVZhbHVl
cyk7Ci0gICAgaW50IGRlbGV0ZWRQcm9wZXJ0aWVzID0gMDsKLQotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX251bVBhcnNlZFByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBDU1NQcm9w
ZXJ0eSogcHJvcGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07Ci0gICAgICAgIGludCBpZCA9
IHByb3BlcnR5LT5pZCgpOwotICAgICAgICBpZiAoKGlkID09IENTU1Byb3BlcnR5Rm9udFdlaWdo
dCB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRTdHlsZSB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRW
YXJpYW50KSAmJiBwcm9wZXJ0eS0+dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAg
ICAgZGVsZXRlIHByb3BlcnR5OwotICAgICAgICAgICAgZGVsZXRlZFByb3BlcnRpZXMrKzsKLSAg
ICAgICAgfSBlbHNlIGlmIChkZWxldGVkUHJvcGVydGllcykKLSAgICAgICAgICAgIG1fcGFyc2Vk
UHJvcGVydGllc1tpIC0gZGVsZXRlZFByb3BlcnRpZXNdID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ld
OwotICAgIH0KLQotICAgIG1fbnVtUGFyc2VkUHJvcGVydGllcyAtPSBkZWxldGVkUHJvcGVydGll
czsKLX0KLQogV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1l
UnVsZShDU1NQYXJzZXJWYWx1ZUxpc3QqIGtleXMpCiB7CiAgICAgLy8gQ3JlYXRlIGEga2V5IHN0
cmluZyBmcm9tIHRoZSBwYXNzZWQga2V5cwpAQCAtNjk2MSw3ICs2OTIwLDcgQEAgV2ViS2l0Q1NT
S2V5ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJWYWx1
ZUxpc3QqIGtleXMpCiAKICAgICBSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBrZXlmcmFt
ZSA9IFdlYktpdENTU0tleWZyYW1lUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7CiAgICAga2V5
ZnJhbWUtPnNldEtleVRleHQoa2V5U3RyaW5nKTsKLSAgICBrZXlmcmFtZS0+c2V0RGVjbGFyYXRp
b24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgwLCBtX3BhcnNlZFByb3BlcnRp
ZXMsIG1fbnVtUGFyc2VkUHJvcGVydGllcykpOworICAgIGtleWZyYW1lLT5zZXREZWNsYXJhdGlv
bihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKDAsIG1fcGFyc2VkUHJvcGVydGll
cykpOwogCiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRl
eCAxMDlkZTA1Li4zYzM1ODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2Vy
VmFsdWVzLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJD
U1NQcm9wZXJ0eVNvdXJjZURhdGEuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1
ZGUgIkNvbG9yLmgiCkBAIC03OCw4ICs3OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZSogcHJpbWl0aXZlVmFsdWVDYWNoZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpbWl0aXZlVmFsdWVDYWNoZS5nZXQoKTsgfQogCiAgICAgICAgIHZvaWQgYWRk
UHJvcGVydHkoaW50IHByb3BJZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wgaW1wb3J0YW50
KTsKLSAgICAgICAgdm9pZCByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKGludCBudW0pOwotICAgICAg
ICBib29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX251bVBhcnNlZFByb3BlcnRp
ZXMgPiAwOyB9CisgICAgICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyc2VkUHJvcGVydGllcy5jb3VudCgpID4gMDsgfQogCiAgICAgICAgIGJvb2wgcGFyc2VWYWx1
ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CiAgICAgICAgIGJvb2wgcGFyc2VTaG9ydGhh
bmQoaW50IHByb3BJZCwgY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywg
Ym9vbCBpbXBvcnRhbnQpOwpAQCAtMjU4LDE4ICsyNTgsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBSZWZQdHI8Q1NTUnVsZT4gbV9rZXlmcmFtZTsKICAgICAgICAgT3duUHRyPE1l
ZGlhUXVlcnk+IG1fbWVkaWFRdWVyeTsKICAgICAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBtX3Zh
bHVlTGlzdDsKLSAgICAgICAgQ1NTUHJvcGVydHkqKiBtX3BhcnNlZFByb3BlcnRpZXM7CisgICAg
ICAgIENTU1Byb3BlcnR5Q29udGFpbmVyIG1fcGFyc2VkUHJvcGVydGllczsKICAgICAgICAgQ1NT
U2VsZWN0b3JMaXN0KiBtX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3I7CiAgICAgICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZUNhY2hlPiBtX3ByaW1pdGl2ZVZhbHVlQ2FjaGU7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fbnVtUGFyc2VkUHJvcGVydGllczsKLSAgICAgICAgdW5zaWduZWQgbV9t
YXhQYXJzZWRQcm9wZXJ0aWVzOwogICAgICAgICB1bnNpZ25lZCBtX251bVBhcnNlZFByb3BlcnRp
ZXNCZWZvcmVNYXJnaW5Cb3g7CiAKICAgICAgICAgaW50IG1faW5QYXJzZVNob3J0aGFuZDsKICAg
ICAgICAgaW50IG1fY3VycmVudFNob3J0aGFuZDsKICAgICAgICAgYm9vbCBtX2ltcGxpY2l0U2hv
cnRoYW5kOwogCi0gICAgICAgIGJvb2wgbV9oYXNGb250RmFjZU9ubHlWYWx1ZXM7CiAgICAgICAg
IGJvb2wgbV9oYWRTeW50YWN0aWNhbGx5VmFsaWRDU1NSdWxlOwogCiAgICAgICAgIEF0b21pY1N0
cmluZyBtX2RlZmF1bHROYW1lc3BhY2U7CkBAIC0zMDcsOCArMzA0LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHZvaWQgY2hlY2tGb3JPcnBoYW5lZFVuaXRzKCk7CiAKLSAgICAg
ICAgdm9pZCBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKLQogICAgICAgICBib29sIGlzR2Vu
ZXJhdGVkSW1hZ2VWYWx1ZShDU1NQYXJzZXJWYWx1ZSopIGNvbnN0OwogICAgICAgICBib29sIHBh
cnNlR2VuZXJhdGVkSW1hZ2UoUmVmUHRyPENTU1ZhbHVlPiYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi44MzZjMDliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5Q29udGFpbmVyLmNwcApAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQW5kcmFzIEJlY3NpIDxhYmVj
c2lAd2Via2l0Lm9yZz4sIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIgorCisjaW5jbHVkZSAiQ1NTUHJvcGVy
dHlOYW1lcy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ1NTUHJvcGVydHlDb250YWluZXI6OkNTU1Byb3BlcnR5
Q29udGFpbmVyKCkKKyAgICA6IG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyhmYWxzZSkKK3sK
K30KKworQ1NTUHJvcGVydHlDb250YWluZXI6Oml0ZXJhdG9yIENTU1Byb3BlcnR5Q29udGFpbmVy
OjpnZXRQcm9wZXJ0eUJ5SWQoaW50IHByb3BlcnR5SWQpCit7CisgICAgcmV0dXJuIG1fcHJvcGVy
dHlTZXQuZmluZDxpbnQsIENTU1Byb3BlcnR5SWRIYXNoVHJhbnNsYXRvcj4ocHJvcGVydHlJZCk7
Cit9CisKK0NTU1Byb3BlcnR5Q29udGFpbmVyOjppdGVyYXRvciBDU1NQcm9wZXJ0eUNvbnRhaW5l
cjo6YmVnaW4oKQoreworICAgIHJldHVybiBtX3Byb3BlcnR5U2V0LmJlZ2luKCk7Cit9CisKK0NT
U1Byb3BlcnR5Q29udGFpbmVyOjppdGVyYXRvciBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6ZW5kKCkK
K3sKKyAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC5lbmQoKTsKK30KKworQ1NTUHJvcGVydHkmIENT
U1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0KCkKK3sKKyAgICBBU1NFUlQoIW1fcHJvcGVydHlTZXQu
aXNFbXB0eSgpKTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC5sYXN0KCk7Cit9CisKK3ZvaWQg
Q1NTUHJvcGVydHlDb250YWluZXI6OmFkZFByb3BlcnR5KGludCBwcm9wZXJ0eUlkLCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGludCBzaG9ydGhhbmRJRCwgYm9v
bCBpbXBsaWNpdCkKK3sKKyAgICBBU1NFUlQocHJvcGVydHlJZCk7CisKKyAgICBDU1NQcm9wZXJ0
eSBuZXdQcm9wZXJ0eShwcm9wZXJ0eUlkLCB2YWx1ZSwgaW1wb3J0YW50LCBzaG9ydGhhbmRJRCwg
aW1wbGljaXQpOworICAgIGl0ZXJhdG9yIHByb3BlcnR5ID0gZ2V0UHJvcGVydHlCeUlkKHByb3Bl
cnR5SWQpOworCisgICAgaWYgKHByb3BlcnR5ICE9IG1fcHJvcGVydHlTZXQuZW5kKCkpIHsKKyAg
ICAgICAgaWYgKHByb3BlcnR5LT5pc0ltcG9ydGFudCgpICYmICFpbXBvcnRhbnQpCisgICAgICAg
ICAgICBuZXdQcm9wZXJ0eSA9ICpwcm9wZXJ0eTsKKworICAgICAgICBtX3Byb3BlcnR5U2V0LnJl
bW92ZShwcm9wZXJ0eSk7CisgICAgfQorCisgICAgbV9wcm9wZXJ0eVNldC5hZGQobmV3UHJvcGVy
dHkpOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVQcm9wZXJ0eShpbnQg
cHJvcGVydHlJZCkKK3sKKyAgICBBU1NFUlQocHJvcGVydHlJZCk7CisgICAgaXRlcmF0b3IgcHJv
cGVydHkgPSBnZXRQcm9wZXJ0eUJ5SWQocHJvcGVydHlJZCk7CisKKyAgICBpZiAocHJvcGVydHkg
PT0gbV9wcm9wZXJ0eVNldC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcm9wZXJ0
eVNldC5yZW1vdmUocHJvcGVydHkpOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpy
ZW1vdmVQcm9wZXJ0aWVzKGNvbnN0IGludCogaWRMaXN0LCB1bnNpZ25lZCBsZW5ndGgpCit7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICByZW1vdmVQ
cm9wZXJ0eShpZExpc3RbaV0pOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1v
dmVGb250RmFjZVByb3BlcnRpZXMoKQoreworICAgIGlmICghbV9oYXNGb250RmFjZU9ubHlQcm9w
ZXJ0aWVzKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnQgaWRzWzNdID0ge0NTU1Byb3BlcnR5
Rm9udFdlaWdodCwgQ1NTUHJvcGVydHlGb250U3R5bGUsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnR9
OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoaWRzKTsg
KytpKSB7CisgICAgICAgIGl0ZXJhdG9yIHByb3BlcnR5ID0gZ2V0UHJvcGVydHlCeUlkKGlkc1tp
XSk7CisKKyAgICAgICAgaWYgKHByb3BlcnR5ID09IG1fcHJvcGVydHlTZXQuZW5kKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAocHJvcGVydHktPnZhbHVlKCktPmlzVmFs
dWVMaXN0KCkpCisgICAgICAgICAgICBtX3Byb3BlcnR5U2V0LnJlbW92ZShwcm9wZXJ0eSk7Cisg
ICAgfQorCisgICAgbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzID0gZmFsc2U7Cit9CisKK3Zv
aWQgQ1NTUHJvcGVydHlDb250YWluZXI6OnJlbW92ZUxhc3QoKQoreworICAgIEFTU0VSVChtX3By
b3BlcnR5U2V0LnNpemUoKSk7CisgICAgbV9wcm9wZXJ0eVNldC5yZW1vdmVMYXN0KCk7Cit9CisK
K3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51
bSkKK3sKKyAgICBBU1NFUlQobV9wcm9wZXJ0eVNldC5zaXplKCkgPj0gbnVtKTsKKyAgICBpbnQg
cmVtb3ZlZFByb3BlcnRpZXMgPSAwOworICAgIHdoaWxlIChyZW1vdmVkUHJvcGVydGllcysrIDwg
bnVtKQorICAgICAgICBtX3Byb3BlcnR5U2V0LnJlbW92ZUxhc3QoKTsKK30KKwordm9pZCBDU1NQ
cm9wZXJ0eUNvbnRhaW5lcjo6Y2xlYXJQcm9wZXJ0aWVzKCkKK3sKKyAgICBtX3Byb3BlcnR5U2V0
LmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5Q29udGFpbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZjU5YWY0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eUNvbnRhaW5lci5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdlYmtp
dC5vcmc+LCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENTU1Byb3BlcnR5Q29udGFpbmVy
X2gKKyNkZWZpbmUgQ1NTUHJvcGVydHlDb250YWluZXJfaAorCisjaW5jbHVkZSAiQ1NTUHJvcGVy
dHkuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+
CisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y29uc3QgdW5zaWduZWQga0lubGluZUNhcGFjaXR5ID0gMzI7CisKK2NsYXNzIENTU1Byb3BlcnR5
Q29udGFpbmVyIHsKK3ByaXZhdGU6CisgICAgc3RydWN0IENTU1Byb3BlcnR5SGFzaEZ1bmN0aW9u
cyB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKENTU1Byb3BlcnR5IHByb3BlcnR5KSB7
IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJvcGVydHkubV9pZCk7IH0KKyAgICAgICAg
c3RhdGljIGJvb2wgZXF1YWwoQ1NTUHJvcGVydHkgYSwgQ1NTUHJvcGVydHkgYikgeyByZXR1cm4g
YS5tX2lkID09IGIubV9pZDsgfQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07CisgICAgc3RydWN0IENTU1Byb3Bl
cnR5SWRIYXNoVHJhbnNsYXRvciB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGludCBp
ZCkgeyBBU1NFUlQoaWQgPj0gMCk7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaWQpOyB9
CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKENTU1Byb3BlcnR5IHByb3BlcnR5LCBpbnQgaWQp
IHsgcmV0dXJuIHByb3BlcnR5Lm1faWQgPT0gaWQ7IH0KKyAgICB9OworCitwdWJsaWM6CisgICAg
dHlwZWRlZiBMaXN0SGFzaFNldDxDU1NQcm9wZXJ0eSwga0lubGluZUNhcGFjaXR5LCBDU1NQcm9w
ZXJ0eUhhc2hGdW5jdGlvbnM+OjppdGVyYXRvciBpdGVyYXRvcjsKKyAgICB0eXBlZGVmIExpc3RI
YXNoU2V0PENTU1Byb3BlcnR5LCBrSW5saW5lQ2FwYWNpdHksIENTU1Byb3BlcnR5SGFzaEZ1bmN0
aW9ucz46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworCisgICAgQ1NTUHJvcGVydHlD
b250YWluZXIoKTsKKworICAgIENTU1Byb3BlcnR5Q29udGFpbmVyOjppdGVyYXRvciBiZWdpbigp
OworICAgIENTU1Byb3BlcnR5Q29udGFpbmVyOjppdGVyYXRvciBlbmQoKTsKKyAgICBDU1NQcm9w
ZXJ0eSYgbGFzdCgpOworCisgICAgdW5zaWduZWQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX3By
b3BlcnR5U2V0LnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFj
b3VudCgpOyB9CisKKyAgICB2b2lkIHNldEZvbnRGYWNlT25seSgpIHsgbV9oYXNGb250RmFjZU9u
bHlQcm9wZXJ0aWVzID0gdHJ1ZTsgfQorCisgICAgdm9pZCBhZGRQcm9wZXJ0eShpbnQgcHJvcGVy
dHlJZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wgaW1wb3J0YW50LCBpbnQgc2hvcnRoYW5k
SUQgPSAwLCBib29sIGltcGxpY2l0ID0gZmFsc2UpOworCisgICAgdm9pZCByZW1vdmVQcm9wZXJ0
eShpbnQgcHJvcGVydHlJZCk7CisgICAgdm9pZCByZW1vdmVQcm9wZXJ0aWVzKGNvbnN0IGludCog
aWRMaXN0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZvaWQgcmVtb3ZlRm9udEZhY2VQcm9wZXJ0
aWVzKCk7CisgICAgdm9pZCByZW1vdmVMYXN0KCk7CisKKyAgICB2b2lkIHJvbGxiYWNrTGFzdFBy
b3BlcnRpZXMoaW50KTsKKyAgICB2b2lkIGNsZWFyUHJvcGVydGllcygpOworCitwcml2YXRlOgor
ICAgIENTU1Byb3BlcnR5Q29udGFpbmVyOjppdGVyYXRvciBnZXRQcm9wZXJ0eUJ5SWQoaW50IHBy
b3BlcnR5SWQpOworCisgICAgYm9vbCBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXM7CisgICAg
TGlzdEhhc2hTZXQ8Q1NTUHJvcGVydHksIGtJbmxpbmVDYXBhY2l0eSwgQ1NTUHJvcGVydHlIYXNo
RnVuY3Rpb25zPiBtX3Byb3BlcnR5U2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gQ1NTUHJvcGVydHlDb250YWluZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFy
c2VyLmNwcAppbmRleCBmM2I1YWMzLi44Y2QzYzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFy
c2VyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1ZS5oIgog
I2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCisjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CiAjaW5jbHVkZSAiQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVl
S2V5d29yZHMuaCIKQEAgLTI4MywxMCArMjg0LDEwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNW
R1ZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBpZiAoIXBhcnNlVmFs
dWUoQ1NTUHJvcGVydHlNYXJrZXJTdGFydCwgaW1wb3J0YW50KSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgaWYgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpIHsKLSAgICAgICAg
ICAgIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoMSk7CisgICAgICAgICAgICBtX3BhcnNlZFByb3Bl
cnRpZXMucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
Ci0gICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNl
ZFByb3BlcnRpZXMgLSAxXS0+dmFsdWUoKTsKKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9w
YXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eU1hcmtlck1pZCwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5TWFya2VyRW5kLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgbV9pbXBs
aWNpdFNob3J0aGFuZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvbnRGYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVt
ZW50LmNwcAppbmRleCA3NzBhNjg2Li40ZmUxODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VFbGVtZW50LmNwcApAQCAtMjk5LDggKzI5OSw4IEBAIHZvaWQgU1ZHRm9udEZhY2VF
bGVtZW50OjpyZWJ1aWxkRm9udEZhY2UoKQogCiAgICAgLy8gUGFyc2UgaW4tbWVtb3J5IENTUyBy
dWxlcwogICAgIENTU1Byb3BlcnR5IHNyY1Byb3BlcnR5KENTU1Byb3BlcnR5U3JjLCBsaXN0KTsK
LSAgICBjb25zdCBDU1NQcm9wZXJ0eSogc3JjUHJvcGVydHlSZWYgPSAmc3JjUHJvcGVydHk7Ci0g
ICAgbV9zdHlsZURlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKCZzcmNQcm9wZXJ0eVJl
ZiwgMSk7CisgICAgY29uc3QgQ1NTUHJvcGVydHkmIHNyY1Byb3BlcnR5UmVmID0gc3JjUHJvcGVy
dHk7CisgICAgbV9zdHlsZURlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0eShzcmNQcm9wZXJ0
eVJlZik7CiAKICAgICBpZiAoZGVzY3JpYmVzUGFyZW50Rm9udCkgeyAgICAKICAgICAgICAgLy8g
VHJhdmVyc2UgcGFyc2VkIENTUyB2YWx1ZXMgYW5kIGFzc29jaWF0ZSBDU1NGb250RmFjZVNyY1Zh
bHVlIGVsZW1lbnRzIHdpdGggb3Vyc2VsdmVzLgotLSAKMS43LjIuMwoK
</data>
<flag name="commit-queue"
          id="98840"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103911</attachid>
            <date>2011-08-15 07:08:37 -0700</date>
            <delta_ts>2011-08-18 10:12:55 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-Refactor-the-CSSProperty-handling-infrastructure-of-.patch</filename>
            <type>text/plain</type>
            <size>43296</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSBlN2E0NjE5MzAyNTMxMzc3MWExZmZmOTM3MTM0NmI0MmE1YjU3MmE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDE1IEF1ZyAyMDExIDE2OjA3OjI5ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gUmVmYWN0
b3IgdGhlIENTU1Byb3BlcnR5IGhhbmRsaW5nIGluZnJhc3RydWN0dXJlIG9mCiBDU1NQYXJzZXIK
Ci0tLQogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICB8
ICAgIDEgKwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgNzMgKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
ICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiAgICAgIHwgICAgOCArKwogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICB8ICAgIDggKysKIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkgICAgICAgICAgICAgICAgICAgfCAgICA4ICstCiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwIHwgICAyMyArKystCiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCAgIHwgICAgOSArLQogU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgICAgICAgICAgICAgICAgICB8ICAxMjMgKysr
KysrKy0tLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCAgICAgICAg
ICAgICAgICAgICAgfCAgIDExICstLQogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29u
dGFpbmVyLmNwcCAgICAgICB8ICAxMjggKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCAgICAgICAgIHwgICA4MCArKysrKysrKysr
KysrCiBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcCAgICAgICAgICAgICAgIHwg
ICAgNSArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAgICAgICAg
ICB8ICAgIDQgKy0KIDE2IGZpbGVzIGNoYW5nZWQsIDM3OSBpbnNlcnRpb25zKCspLCAxMDkgZGVs
ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5Q29udGFpbmVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eUNvbnRhaW5lci5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1Y2I4YzkyLi5k
NmE1MmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDQ5LDYgKzQ0OSw3IEBAIFNFVChXZWJD
b3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCiAgICAgY3NzL0NTU1By
aW1pdGl2ZVZhbHVlQ2FjaGUuY3BwCiAgICAgY3NzL0NTU1Byb3BlcnR5LmNwcAorICAgIGNzcy9D
U1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAKICAgICBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAK
ICAgICBjc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcAogICAgIGNzcy9DU1NSZWZsZWN0VmFs
dWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggZjBmMzFiMC4uZmRlYjZlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDc2IEBACisyMDExLTA4LTE1ICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZWZhY3RvciB0aGUgQ1NTUHJvcGVydHkgaGFuZGxpbmcgaW5mcmFzdHJ1Y3R1
cmUgb2YgQ1NTUGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTQxNworCisgICAgICAgIEltcGxlbWVudCBhIExpc3RIYXNoU2V0IGJhc2VkIGNv
bnRhaW5lciBjbGFzcyB0byBtYW5hZ2UgQ1NTUHJvcGVydGllcywgZWxpbWluYXRlIHRoZSBjdXJy
ZW50CisgICAgICAgIHJhdyBwb25pdGVyIGJhc2VkIG1lY2hhbmlzbSBmcm9tIENTU1BhcnNlciBh
bmQgYXV0b21hdGljYWxseSBkaXNjYXJkIGR1cGxpY2F0ZSBwcm9wZXJ0aWVzLgorICAgICAgICBJ
biBhIGZvbGxvdy11cCBDU1NQcm9wZXJ0eUNvbnRhaW5lciBjYW4gYWxzbyBiZSB1c2VkIHRvIGV4
dHJhY3QgdGhlIHByb3BlcnR5IGhhbmRsaW5nIGxvZ2ljCisgICAgICAgIGZyb20gQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24gd2hpY2ggY3VycmVudGx5IG1haW50YWlucyBpdHMgb3duIGZvcmsg
b2YgaW5mcmFzdHJ1Y3R1cmUKKyAgICAgICAgZm9yIG1hbmFnaW5nIHBhcnNlZCBwcm9wZXJ0aWVz
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogY3NzL0NTU0dyYW1tYXIueToKKyAgICAgICAgKiBjc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246
OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOjphZGRQYXJzZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3Mv
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpDU1NQYXJzZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjp+Q1NTUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRkUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpjbGVhclByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZTRWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udFZhcmlhbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRXZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpjcmVhdGVQYWdlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnN0YXJ0
RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
ZW5kRGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Omhhc1Byb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9D
U1NQcm9wZXJ0eUNvbnRhaW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlDb250YWluZXI6OkNTU1Byb3BlcnR5Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpnZXRQcm9wZXJ0eUJ5SWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5Q29udGFpbmVyOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250
YWluZXI6Omxhc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmFk
ZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1v
dmVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVt
b3ZlRm9udEZhY2VQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29u
dGFpbmVyOjpyZW1vdmVMYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFp
bmVyOjpyb2xsYmFja0xhc3RQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5Q29udGFpbmVyOjpjbGVhclByb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0
eUNvbnRhaW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFp
bmVyOjpDU1NQcm9wZXJ0eUhhc2hGdW5jdGlvbnM6Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJvcGVydHlDb250YWluZXI6OkNTU1Byb3BlcnR5SGFzaEZ1bmN0aW9uczo6ZXF1YWwpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OkNTU1Byb3BlcnR5SWRIYXNo
VHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5l
cjo6Q1NTUHJvcGVydHlJZEhhc2hUcmFuc2xhdG9yOjplcXVhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlDb250YWluZXI6OmNvdW50QWRkZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5Q29udGFpbmVyOjppc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5Q29udGFpbmVyOjpzZXRGb250RmFjZU9ubHkpOgorICAgICAgICAqIGNzcy9TVkdDU1NQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNWR1ZhbHVlKToK
KyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZvbnRGYWNlRWxlbWVudDo6cmVidWlsZEZvbnRGYWNlKToKKwogMjAxMS0wOC0xMCAgQWRh
bSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYXIgdXAgc2NhbGUgZmFj
dG9yIHRlcm1pbm9sb2d5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAwZTZiMjA1
Li43MDBhYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTk3NSw2ICs5NzUs
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZU1hcHBpbmdzLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydHlDb250YWluZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hh
bmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggOGQ4YTc4ZS4uYTQ5YmY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDkyLDYgKzQ5
Miw3IEBACiAgICAgICAgICAgICAnY3NzL0NTU1BhcnNlclZhbHVlcy5oJywKICAgICAgICAgICAg
ICdjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5
LmgnLAorICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oJywKICAgICAgICAg
ICAgICdjc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NS
ZWZsZWN0VmFsdWUuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1JlZmxlY3Rpb25EaXJlY3Rpb24u
aCcsCkBAIC0yMzQ2LDYgKzIzNDcsNyBAQAogICAgICAgICAgICAgJ2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZUNhY2hlLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdz
LmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0eS5jcHAnLAorICAgICAgICAgICAgJ2Nz
cy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQcm9wZXJ0
eUxvbmdoYW5kLmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaCcs
CiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
bwppbmRleCBiNzYzMDM3Li5mOTYyMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNDExLDYgKzQxMSw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgXAogICAgIGNz
cy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmNwcCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5LmNwcCBc
CisgICAgY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5
TG9uZ2hhbmQuY3BwIFwKICAgICBjc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCBcCiAgICAg
Y3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAgXApAQCAtMTQxNSw2ICsxNDE2LDcgQEAgSEVBREVSUyAr
PSBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggXAogICAgIGNzcy9DU1NQcmltaXRpdmVW
YWx1ZUNhY2hlLmggXAogICAgIGNzcy9DU1NQcm9wZXJ0eS5oIFwKKyAgICBjc3MvQ1NTUHJvcGVy
dHlDb250YWluZXIuaCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaCBcCiAgICAgY3Nz
L0NTU1JlZmxlY3RWYWx1ZS5oIFwKICAgICBjc3MvQ1NTUnVsZS5oIFwKQEAgLTE0MjksNiArMTQz
MSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGNzcy9DU1NTdHlsZVNoZWV0LmggXAogICAgIGNzcy9D
U1NUaW1pbmdGdW5jdGlvblZhbHVlLmggXAogICAgIGNzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5o
IFwKKyAgICBjc3MvQ1NTVmFsdWUuaCBcCiAgICAgY3NzL0NTU1ZhbHVlTGlzdC5oIFwKICAgICBj
c3MvQ1NTV3JhcFNoYXBlcy5oIFwKICAgICBjc3MvRm9udEZhbWlseVZhbHVlLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA2ZThkNThmLi5l
Mzg3YTIxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtMzI5MzgsNiArMzI5MzgsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1Byb3Bl
cnR5Q29udGFpbmVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGNzc1xDU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNzM3ZjMyZC4uYTg2NWZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ1LDYgKzQ0NSw4IEBACiAJCTFBQjFBRTdB
MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxQUU3ODBDMDUxRkRFMDAxMzlGNEYgLyog
em9vbUluQ3Vyc29yLnBuZyAqLzsgfTsKIAkJMUFCMUFFN0IwQzA1MUZERTAwMTM5RjRGIC8qIHpv
b21PdXRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUIxQUU3OTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgKi87
IH07CiAJCTFBQjMzREE1MTI1NTFFMzIwMDI0NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIzM0RBNDEyNTUx
RTMyMDAyNDQ1N0EgLyogSU9LaXQuZnJhbWV3b3JrICovOyB9OworCQkxQUI0NEEwQzEzNjcyQ0ZG
MDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCNDRBMEIxMzY3MkNGRjAwMDg3NzdFIC8qIENT
U1Byb3BlcnR5Q29udGFpbmVyLmNwcCAqLzsgfTsKKwkJMUFCNDRBMEUxMzY3MkQyMDAwMDg3NzdF
IC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUI0NEEwRDEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJvcGVydHlD
b250YWluZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxQUI3RkM2ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0ZDNDcwQThCOTJF
QzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmNwcCAqLzsgfTsKIAkJMUFCN0ZDNjkwQThCOTJF
QzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RkM0ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFs
dWF0b3IuaCAqLzsgfTsKIAkJMUFCN0ZDNkIwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVz
c2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUI3RkM0QTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9uLmNwcCAqLzsgfTsKQEAg
LTY5MzksNiArNjk0MSw4IEBACiAJCTFBQjFBRTc4MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5D
dXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gaW1hZ2UucG5nOyBwYXRoID0gem9vbUluQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUFCMUFFNzkwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5n
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2Uu
cG5nOyBwYXRoID0gem9vbU91dEN1cnNvci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBQjMzREE0MTI1NTFFMzIwMDI0NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgbmFtZSA9IElPS2l0LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0lPS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJMUFC
NDRBMEIxMzY3MkNGRjAwMDg3NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFCNDRBMEQxMzY3MkQyMDAwMDg3NzdFIC8q
IENTU1Byb3BlcnR5Q29udGFpbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENTU1Byb3BlcnR5Q29udGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
QjdGQzQ3MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFBhdGhFdmFsdWF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUI3RkM0ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFs
dWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQYXRoRXZhbHVhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjdGQzQ5MEE4QjkyRUMwMEQ5RDM3
QiAvKiBYUGF0aEV2YWx1YXRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFhQYXRoRXZh
bHVhdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MzE1LDYgKzE5MzE5
LDggQEAKIAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUFCNDRBMEQxMzY3MkQyMDAwMDg3NzdF
IC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmggKi8sCisJCQkJMUFCNDRBMEIxMzY3MkNGRjAwMDg3
NzdFIC8qIENTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCAqLywKIAkJCQk5M0NBNEM5QzA5REY5M0ZB
MDBERjg2NzcgLyogbWFrZXRva2VuaXplciAqLywKIAkJCQlBODBFNkNEQTBBMTk4OUNBMDA3RkI4
QzUgLyogQ291bnRlci5oICovLAogCQkJCTkzMDcwNUM3MDlFMEM5NUYwMEIxN0ZFNCAvKiBDb3Vu
dGVyLmlkbCAqLywKQEAgLTIzMzcwLDYgKzIzMzc2LDcgQEAKIAkJCQlCQ0JCOEFCOTEzRjFBRkIw
MDA3MzRERjAgLyogUE9ESW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkI4QUJBMTNG
MUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
QkI4QUJCMTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1RyZWUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTFBQjQ0QTBFMTM2NzJEMjAwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yNjE3Miw2ICsyNjE3OSw3IEBACiAJCQkJOTc3RTJFMEUxMkYw
RkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1Mzcz
NTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU5
REU3OTA0MTNGMTZDN0YwMDA3RkNERiAvKiBKYXZhTWV0aG9kSlNDLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTFBQjQ0QTBDMTM2NzJDRkYwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CmluZGV4IDkwYjVlMTQuLjVk
NzUwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpAQCAtMzIzLDkgKzMyMyw5IEBAIHdlYmtp
dF92YWx1ZToKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4o
cGFyc2VyKTsKICAgICAgICAgaWYgKCQ0KSB7CiAgICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9
IHAtPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2Vk
UHJvcGVydGllcyA9IHAtPm1fbnVtUGFyc2VkUHJvcGVydGllczsKKyAgICAgICAgICAgIGludCBv
bGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50QWRkZWRQcm9w
ZXJ0aWVzKCk7CiAgICAgICAgICAgICBpZiAoIXAtPnBhcnNlVmFsdWUocC0+bV9pZCwgcC0+bV9p
bXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+
bV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAg
ICAgICAgcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9w
YXJzZWRQcm9wZXJ0aWVzLmNvdW50QWRkZWRQcm9wZXJ0aWVzKCkgLSBvbGRQYXJzZWRQcm9wZXJ0
aWVzKTsKICAgICAgICAgICAgIGRlbGV0ZSBwLT5tX3ZhbHVlTGlzdDsKICAgICAgICAgICAgIHAt
Pm1fdmFsdWVMaXN0ID0gMDsKICAgICAgICAgfQpAQCAtMTI3MywxMCArMTI3MywxMCBAQCBkZWNs
YXJhdGlvbjoKICAgICAgICAgYm9vbCBpc1Byb3BlcnR5UGFyc2VkID0gZmFsc2U7CiAgICAgICAg
IGlmICgkMSAmJiAkNCkgewogICAgICAgICAgICAgcC0+bV92YWx1ZUxpc3QgPSBwLT5zaW5rRmxv
YXRpbmdWYWx1ZUxpc3QoJDQpOwotICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMg
PSBwLT5tX251bVBhcnNlZFByb3BlcnRpZXM7CisgICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJv
cGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVydGllcy5jb3VudEFkZGVkUHJvcGVydGllcygpOwog
ICAgICAgICAgICAgJCQgPSBwLT5wYXJzZVZhbHVlKCQxLCAkNSk7CiAgICAgICAgICAgICBpZiAo
ISQkKQotICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9udW1Q
YXJzZWRQcm9wZXJ0aWVzIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAg
cC0+bV9wYXJzZWRQcm9wZXJ0aWVzLnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9wYXJzZWRQ
cm9wZXJ0aWVzLmNvdW50QWRkZWRQcm9wZXJ0aWVzKCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpc1Byb3BlcnR5UGFyc2VkID0gdHJ1
ZTsKICAgICAgICAgICAgIGRlbGV0ZSBwLT5tX3ZhbHVlTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDAxN2RjNjkuLjVl
YWUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uLmNwcApAQCAtNzMsNyArNzMsNyBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBjb25zdCBWZQogICAg
IC8vIEZJWE1FOiBUaGlzIGFsbG93cyBkdXBsaWNhdGUgcHJvcGVydGllcy4KIH0KIAotQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUq
IHBhcmVudCwgY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICogcHJvcGVydGllcywgaW50IG51bVBy
b3BlcnRpZXMpCitDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBDU1NQcm9wZXJ0eUNvbnRhaW5lciYgcHJvcGVydGll
cykKICAgICA6IENTU1N0eWxlRGVjbGFyYXRpb24ocGFyZW50KQogICAgICwgbV9ub2RlKDApCiAg
ICAgLCBtX3N0cmljdFBhcnNpbmcoIXBhcmVudCB8fCBwYXJlbnQtPnVzZVN0cmljdFBhcnNpbmco
KSkKQEAgLTgxLDExICs4MSwxNSBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBjb25zdCBDUwogICAgICwgbV9p
dGVyYXRvckNvdW50KDApCiAjZW5kaWYKIHsKKyAgICB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzID0g
cHJvcGVydGllcy5jb3VudCgpOworCisgICAgaWYgKCFudW1Qcm9wZXJ0aWVzKQorICAgICAgICBy
ZXR1cm47CisKICAgICBtX3Byb3BlcnRpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1Qcm9w
ZXJ0aWVzKTsKICAgICBIYXNoTWFwPGludCwgYm9vbD4gY2FuZGlkYXRlczsKLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBjb25zdCBDU1NQcm9w
ZXJ0eSAqcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldOwotICAgICAgICBBU1NFUlQocHJvcGVydHkp
OworCisgICAgZm9yIChDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IgcHJvcGVy
dHkgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IHByb3BlcnR5ICE9IHByb3BlcnRpZXMuZW5kKCk7ICsr
cHJvcGVydHkpIHsKICAgICAgICAgYm9vbCBpbXBvcnRhbnQgPSBwcm9wZXJ0eS0+aXNJbXBvcnRh
bnQoKTsKICAgICAgICAgaWYgKGNhbmRpZGF0ZXMuY29udGFpbnMocHJvcGVydHktPmlkKCkpKSB7
CiAgICAgICAgICAgICBpZiAoIWltcG9ydGFudCAmJiBjYW5kaWRhdGVzLmdldChwcm9wZXJ0eS0+
aWQoKSkpCkBAIC02MzksMTMgKzY0MywxOCBAQCB2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjpwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVEZWNsYXJhdGlvbgogICAg
IHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6YWRkUGFyc2VkUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eSogY29uc3QqIHByb3Bl
cnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzKQordm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bjo6YWRkUGFyc2VkUHJvcGVydGllcyhDU1NQcm9wZXJ0eUNvbnRhaW5lciYgcHJvcGVydGllcykK
IHsKICAgICBBU1NFUlQoIW1faXRlcmF0b3JDb3VudCk7CiAKKyAgICB1bnNpZ25lZCBudW1Qcm9w
ZXJ0aWVzID0gcHJvcGVydGllcy5jb3VudCgpOworCisgICAgaWYgKCFudW1Qcm9wZXJ0aWVzKQor
ICAgICAgICByZXR1cm47CisKICAgICBtX3Byb3BlcnRpZXMucmVzZXJ2ZUNhcGFjaXR5KG51bVBy
b3BlcnRpZXMpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKQot
ICAgICAgICBhZGRQYXJzZWRQcm9wZXJ0eSgqcHJvcGVydGllc1tpXSk7CisgICAgZm9yIChDU1NQ
cm9wZXJ0eUNvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IgcCA9IHByb3BlcnRpZXMuYmVnaW4oKTsg
cCAhPSBwcm9wZXJ0aWVzLmVuZCgpOyArK3ApCisgICAgICAgIGFkZFBhcnNlZFByb3BlcnR5KCpw
KTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3VsZCBoYXZlIGEgY2FsbCB0byBz
ZXROZWVkc1N0eWxlUmVjYWxjKCkgaWYgc29tZXRoaW5nIGNoYW5nZWQuIFdlIG1heSBhbHNvIHdp
c2ggdG8gYWRkCiAgICAgLy8gYSBub3RpZnlDaGFuZ2VkIGFyZ3VtZW50IHRvIHRoaXMgZnVuY3Rp
b24gdG8gZm9sbG93IHRoZSBtb2RlbCBvZiBvdGhlciBmdW5jdGlvbnMgaW4gdGhpcyBjbGFzcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgKaW5k
ZXggZWE4YWIzZi4uYjgzODI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDU1NTdHls
ZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5Q29udGFpbmVyLmgiCiAjaW5j
bHVkZSAiS1VSTEhhc2guaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtNjcsOSArNjgsOSBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKHBhcmVu
dFJ1bGUpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24+IGNyZWF0ZShDU1NSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBDU1NQcm9wZXJ0eSog
Y29uc3QqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoQ1NTUnVsZSogcGFyZW50UnVs
ZSwgQ1NTUHJvcGVydHlDb250YWluZXImIHByb3BlcnRpZXMpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKHBhcmVudFJ1bGUsIHBy
b3BlcnRpZXMsIG51bVByb3BlcnRpZXMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihwYXJlbnRSdWxlLCBwcm9wZXJ0aWVzKSk7CiAgICAg
fQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjcmVh
dGUoY29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYgcHJvcGVydGllcykKICAgICB7CkBAIC0xMjQs
NyArMTI1LDcgQEAgcHVibGljOgogCiAgICAgLy8gQmVzaWRlcyBhZGRpbmcgdGhlIHByb3BlcnRp
ZXMsIHRoaXMgYWxzbyByZW1vdmVzIGFueSBleGlzdGluZyBwcm9wZXJ0aWVzIHdpdGggdGhlc2Ug
SURzLgogICAgIC8vIEl0IGRvZXMgbm8gbm90aWZpY2F0aW9uIHNpbmNlIGl0J3MgY2FsbGVkIGJ5
IHRoZSBwYXJzZXIuCi0gICAgdm9pZCBhZGRQYXJzZWRQcm9wZXJ0aWVzKGNvbnN0IENTU1Byb3Bl
cnR5KiBjb25zdCAqLCBpbnQgbnVtUHJvcGVydGllcyk7CisgICAgdm9pZCBhZGRQYXJzZWRQcm9w
ZXJ0aWVzKENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9wZXJ0aWVzKTsKICAgICAvLyBUaGlzIGRv
ZXMgbm8gY2hhbmdlIG5vdGlmaWNhdGlvbnMgc2luY2UgaXQncyBvbmx5IGNhbGxlZCBieSBjcmVh
dGVNYXJrdXAuCiAgICAgdm9pZCBhZGRQYXJzZWRQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0eSYp
OwogIApAQCAtMTQ5LDcgKzE1MCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24oKTsKICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihD
U1NSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+Jik7Ci0gICAgQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50UnVsZSwgY29uc3QgQ1NTUHJv
cGVydHkqIGNvbnN0ICosIGludCBudW1Qcm9wZXJ0aWVzKTsKKyAgICBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRSdWxlLCBDU1NQcm9wZXJ0eUNvbnRhaW5lciYgcHJv
cGVydGllcyk7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24+IG1ha2VNdXRhYmxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggNWI5
MjkxZi4uZWU1NmRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTE2NywxNCArMTY3
LDEwIEBAIENTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZykKICAgICAsIG1f
aWQoMCkKICAgICAsIG1fc3R5bGVTaGVldCgwKQogICAgICwgbV92YWx1ZUxpc3QoMCkKLSAgICAs
IG1fcGFyc2VkUHJvcGVydGllcyhzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eSoqPihmYXN0TWFsbG9j
KDMyICogc2l6ZW9mKENTU1Byb3BlcnR5KikpKSkKLSAgICAsIG1fbnVtUGFyc2VkUHJvcGVydGll
cygwKQotICAgICwgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzKDMyKQotICAgICwgbV9udW1QYXJzZWRQ
cm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTKQor
ICAgICwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KDApCiAgICAgLCBtX2lu
UGFyc2VTaG9ydGhhbmQoMCkKICAgICAsIG1fY3VycmVudFNob3J0aGFuZCgwKQogICAgICwgbV9p
bXBsaWNpdFNob3J0aGFuZChmYWxzZSkKLSAgICAsIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKGZh
bHNlKQogICAgICwgbV9oYWRTeW50YWN0aWNhbGx5VmFsaWRDU1NSdWxlKGZhbHNlKQogICAgICwg
bV9kZWZhdWx0TmFtZXNwYWNlKHN0YXJBdG9tKQogICAgICwgbV9pblN0eWxlUnVsZU9yRGVjbGFy
YXRpb24oZmFsc2UpCkBAIC0xOTgsOSArMTk0LDYgQEAgQ1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9v
bCBzdHJpY3RQYXJzaW5nKQogCiBDU1NQYXJzZXI6On5DU1NQYXJzZXIoKQogewotICAgIGNsZWFy
UHJvcGVydGllcygpOwotICAgIGZhc3RGcmVlKG1fcGFyc2VkUHJvcGVydGllcyk7Ci0KICAgICBk
ZWxldGUgbV92YWx1ZUxpc3Q7CiAKICAgICBmYXN0RnJlZShtX2RhdGEpOwpAQCAtNDYxLDExICs0
NTQsMTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24qIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHkKICAgICBtX3J1bGUgPSAwOwogCiAgICAg
Ym9vbCBvayA9IGZhbHNlOwotICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAg
ICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0gICAgaWYgKG1fbnVtUGFyc2VkUHJvcGVy
dGllcykgeworICAgIG1fcGFyc2VkUHJvcGVydGllcy5yZW1vdmVGb250RmFjZVByb3BlcnRpZXMo
KTsKKyAgICBpZiAoIW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCkpIHsKICAgICAgICAgb2sg
PSB0cnVlOwotICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcyhtX3BhcnNl
ZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgIGRlY2xhcmF0aW9u
LT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcyk7CiAgICAgICAgIGNsZWFy
UHJvcGVydGllcygpOwogICAgIH0KIApAQCAtNDg3LDcgKzQ3OSw3IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIHN0
cmljdCkKICAgICBpZiAoIXBhcnNlci5wYXJzZUNvbG9yKGR1bW15U3R5bGVEZWNsYXJhdGlvbi5n
ZXQoKSwgc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ1NTVmFsdWUqIHZh
bHVlID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllc1swXS0+dmFsdWUoKTsKKyAgICBDU1NWYWx1
ZSogdmFsdWUgPSBwYXJzZXIubV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwogICAg
IGlmICh2YWx1ZS0+Y3NzVmFsdWVUeXBlKCkgIT0gQ1NTVmFsdWU6OkNTU19QUklNSVRJVkVfVkFM
VUUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTA4LDcgKzUwMCw3IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZUNvbG9yKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlv
biwgY29uc3QgU3RyaW5nCiAgICAgY3NzeXlwYXJzZSh0aGlzKTsKICAgICBtX3J1bGUgPSAwOwog
Ci0gICAgcmV0dXJuIChtX251bVBhcnNlZFByb3BlcnRpZXMgJiYgbV9wYXJzZWRQcm9wZXJ0aWVz
WzBdLT5tX2lkID09IENTU1Byb3BlcnR5Q29sb3IpOworICAgIHJldHVybiAoIW1fcGFyc2VkUHJv
cGVydGllcy5pc0VtcHR5KCkgJiYgbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS5pZCgpID09IENT
U1Byb3BlcnR5Q29sb3IpOwogfQogCiBib29sIENTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Db2xvcihS
R0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmluZywgRG9jdW1lbnQqIGRvY3VtZW50KQpA
QCAtNTYyLDExICs1NTQsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24oQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRlY2xhcmF0aW9uLCBjb25zdAogICAgIG1fcnVsZSA9
IDA7CiAKICAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgaWYgKG1faGFzRm9udEZhY2VPbmx5VmFs
dWVzKQotICAgICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKLSAgICBpZiAobV9udW1Q
YXJzZWRQcm9wZXJ0aWVzKSB7CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnJlbW92ZUZvbnRGYWNl
UHJvcGVydGllcygpOworCisgICAgaWYgKCFtX3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpKSB7
CiAgICAgICAgIG9rID0gdHJ1ZTsKLSAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3Bl
cnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpOworICAgICAg
ICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMpOwog
ICAgICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICB9CiAKQEAgLTYxMCwzMyArNjAyLDEzIEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZU1lZGlhUXVlcnkoTWVkaWFMaXN0KiBxdWVyaWVzLCBjb25z
dCBTdHJpbmcmIHN0cmluZykKIAogdm9pZCBDU1NQYXJzZXI6OmFkZFByb3BlcnR5KGludCBwcm9w
SWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCkKIHsKLSAgICBP
d25QdHI8Q1NTUHJvcGVydHk+IHByb3AoYWRvcHRQdHIobmV3IENTU1Byb3BlcnR5KHByb3BJZCwg
dmFsdWUsIGltcG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5kLCBtX2ltcGxpY2l0U2hvcnRoYW5k
KSkpOwotICAgIGlmIChtX251bVBhcnNlZFByb3BlcnRpZXMgPj0gbV9tYXhQYXJzZWRQcm9wZXJ0
aWVzKSB7Ci0gICAgICAgIG1fbWF4UGFyc2VkUHJvcGVydGllcyArPSAzMjsKLSAgICAgICAgaWYg
KG1fbWF4UGFyc2VkUHJvcGVydGllcyA+IFVJTlRfTUFYIC8gc2l6ZW9mKENTU1Byb3BlcnR5Kikp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fcGFyc2VkUHJvcGVydGllcyA9IHN0YXRp
Y19jYXN0PENTU1Byb3BlcnR5Kio+KGZhc3RSZWFsbG9jKG1fcGFyc2VkUHJvcGVydGllcywKLSAg
ICAgICAgICAgIG1fbWF4UGFyc2VkUHJvcGVydGllcyAqIHNpemVvZihDU1NQcm9wZXJ0eSopKSk7
Ci0gICAgfQotICAgIG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMrK10g
PSBwcm9wLmxlYWtQdHIoKTsKLX0KLQotdm9pZCBDU1NQYXJzZXI6OnJvbGxiYWNrTGFzdFByb3Bl
cnRpZXMoaW50IG51bSkKLXsKLSAgICBBU1NFUlQobnVtID49IDApOwotICAgIEFTU0VSVChtX251
bVBhcnNlZFByb3BlcnRpZXMgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG51bSkpOwotCi0gICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBudW07ICsraSkKLSAgICAgICAgZGVsZXRlIG1fcGFyc2VkUHJv
cGVydGllc1stLW1fbnVtUGFyc2VkUHJvcGVydGllc107CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVz
LmFkZFByb3BlcnR5KHByb3BJZCwgdmFsdWUsIGltcG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5k
LCBtX2ltcGxpY2l0U2hvcnRoYW5kKTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OmNsZWFyUHJvcGVy
dGllcygpCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbnVtUGFyc2VkUHJvcGVy
dGllczsgaSsrKQotICAgICAgICBkZWxldGUgbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwotICAgIG1f
bnVtUGFyc2VkUHJvcGVydGllcyA9IDA7CiAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3Jl
TWFyZ2luQm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVM7Ci0gICAgbV9oYXNGb250
RmFjZU9ubHlWYWx1ZXMgPSBmYWxzZTsKKyAgICBtX3BhcnNlZFByb3BlcnRpZXMuY2xlYXJQcm9w
ZXJ0aWVzKCk7CiB9CiAgICAgCiB2b2lkIENTU1BhcnNlcjo6c2V0U3R5bGVTaGVldChDU1NTdHls
ZVNoZWV0KiBzdHlsZVNoZWV0KQpAQCAtOTQ2LDcgKzkxOCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBTaG9ydGhhbmRT
Y29wZSBzY29wZSh0aGlzLCBwcm9wSWQpOwogICAgICAgICBpZiAobnVtICE9IDEgfHwgIXBhcnNl
VmFsdWUoQ1NTUHJvcGVydHlPdmVyZmxvd1gsIGltcG9ydGFudCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1tt
X251bVBhcnNlZFByb3BlcnRpZXMgLSAxXS0+dmFsdWUoKTsKKyAgICAgICAgQ1NTVmFsdWUqIHZh
bHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwogICAgICAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTEwNDMsNyArMTAxNSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgU2hvcnRo
YW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKTsKICAgICAgICAg
ICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFy
c2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7CisgICAgICAg
ICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7
CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xNzA5LDcgKzE2ODEs
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFu
dCkKICAgICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luQ29sbGFwc2UpOwogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRp
ZXNbMF0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJv
cGVydGllcy0xXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFy
c2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHBy
b3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KQEAgLTI0ODksNyArMjQ2MSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZTRW
YWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0aWVzLCAgYm9vbCBpbXBvcnRhbnQp
CiAgICAgICAgIGNhc2UgMTogewogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRp
ZXNbMF0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJv
cGVydGllcy0xXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFy
c2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgICAgIEltcGxpY2l0U2NvcGUg
aW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAgIGFkZFBy
b3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgYWRk
UHJvcGVydHkocHJvcGVydGllc1syXSwgdmFsdWUsIGltcG9ydGFudCk7CkBAIC0yNDk3LDE5ICsy
NDY5LDI0IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3Qg
aW50ICpwcm9wZXJ0aWVzLCAgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIDI6IHsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShw
cm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGlt
cG9ydGFudCkpCisgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1w
b3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NW
YWx1ZSAqdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJd
LT52YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlMSA9IG1fcGFyc2VkUHJvcGVy
dGllcy5sYXN0KCkudmFsdWUoKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0
aWVzWzFdLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIENTU1ZhbHVlKiB2YWx1ZTIgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVl
KCk7CiAgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVy
dHlJbXBsaWNpdCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzJdLCB2YWx1
ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21f
bnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5
KHByb3BlcnRpZXNbM10sIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVy
dHkocHJvcGVydGllc1syXSwgdmFsdWUxLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJv
cGVydHkocHJvcGVydGllc1szXSwgdmFsdWUyLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSAzOiB7Ci0gICAgICAgICAgICBpZiAoIXBhcnNl
VmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVz
WzFdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMl0sIGltcG9ydGFudCkp
CisgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8
fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJv
cGVydGllcy5sYXN0KCkudmFsdWUoKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9w
ZXJ0aWVzWzJdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNl
ZFByb3BlcnRpZXMtMl0tPnZhbHVlKCk7CisKICAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1w
bGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAgIGFkZFByb3Bl
cnR5KHByb3BlcnRpZXNbM10sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC00MTAzLDcgKzQwODAsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGb250U3R5bGUoYm9v
bCBpbXBvcnRhbnQpCiAgICAgfQogCiAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMtPmxlbmd0aCgp
KSB7Ci0gICAgICAgIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzID0gdHJ1ZTsKKyAgICAgICAgbV9w
YXJzZWRQcm9wZXJ0aWVzLnNldEZvbnRGYWNlT25seSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUZvbnRTdHlsZSwgdmFsdWVzLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNDE1MCw3ICs0MTI3LDcgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlRm9udFZhcmlhbnQoYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogCiAgICAgaWYgKHZh
bHVlcyAmJiB2YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAgIG1faGFzRm9udEZhY2VPbmx5VmFs
dWVzID0gdHJ1ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnNldEZvbnRGYWNlT25seSgp
OwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCB2YWx1ZXMucmVs
ZWFzZSgpLCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC00MjAz
LDcgKzQxODAsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGb250V2VpZ2h0KGJvb2wgaW1wb3J0
YW50KQogICAgIH0KIAogICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLT5sZW5ndGgoKSkgewotICAg
ICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9IHRydWU7CisgICAgICAgIG1fcGFyc2VkUHJv
cGVydGllcy5zZXRGb250RmFjZU9ubHkoKTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlGb250V2VpZ2h0LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkBAIC02Nzc1LDkgKzY3NTIsOCBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6
OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxl
Y3RvcgogICAgICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNlRGVjbGFy
YXRpb25zID0gZmFsc2U7CiAgICAgICAgIFJlZlB0cjxDU1NTdHlsZVJ1bGU+IHJ1bGUgPSBDU1NT
dHlsZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQsIG1fbGFzdFNlbGVjdG9yTGluZU51bWJlcik7
CiAgICAgICAgIHJ1bGUtPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7Ci0gICAgICAg
IGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAgICAgICAgICAgIGRlbGV0ZUZvbnRGYWNl
T25seVZhbHVlcygpOwotICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVydGllcywgbV9u
dW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5yZW1vdmVG
b250RmFjZVByb3BlcnRpZXMoKTsKKyAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRp
ZXMpKTsKICAgICAgICAgcmVzdWx0ID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9wYXJzZWRTdHls
ZU9iamVjdHMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICAgICAgaWYgKG1fcnVsZVJhbmdl
TWFwKSB7CkBAIC02Nzk5LDggKzY3NzUsOCBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0
eWxlUnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcgogQ1NT
UnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUoKQogewogICAgIG1fYWxsb3dJbXBv
cnRSdWxlcyA9IG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxzZTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzOyArK2kpIHsKLSAgICAg
ICAgQ1NTUHJvcGVydHkqIHByb3BlcnR5ID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOworCisgICAg
Zm9yIChDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aXRlcmF0b3IgcHJvcGVydHkgPSBtX3BhcnNlZFBy
b3BlcnRpZXMuYmVnaW4oKTsgcHJvcGVydHkgIT0gbV9wYXJzZWRQcm9wZXJ0aWVzLmVuZCgpOyAr
K3Byb3BlcnR5KSB7CiAgICAgICAgIGludCBpZCA9IHByb3BlcnR5LT5pZCgpOwogICAgICAgICBp
ZiAoKGlkID09IENTU1Byb3BlcnR5Rm9udFdlaWdodCB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRT
dHlsZSB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KSAmJiBwcm9wZXJ0eS0+dmFsdWUo
KS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZh
bHVlID0gcHJvcGVydHktPm1fdmFsdWUucmVsZWFzZSgpOwpAQCAtNjgxNSw4ICs2NzkxLDkgQEAg
Q1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUoKQogICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIH0KICAgICB9CisKICAgICBSZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiBy
dWxlID0gQ1NTRm9udEZhY2VSdWxlOjpjcmVhdGUobV9zdHlsZVNoZWV0KTsKLSAgICBydWxlLT5z
ZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0
KCksIG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgcnVs
ZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShydWxl
LmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMpKTsKICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAg
ICBDU1NGb250RmFjZVJ1bGUqIHJlc3VsdCA9IHJ1bGUuZ2V0KCk7CiAgICAgbV9wYXJzZWRTdHls
ZU9iamVjdHMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKQEAgLTY4OTAsNyArNjg2Nyw3IEBAIENT
U1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlUGFnZVJ1bGUoUGFzc093blB0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4gcGFnZVNlbGVjdG9yKQogICAgICAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVj
dG9yPiA+IHNlbGVjdG9yVmVjdG9yOwogICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBlbmQocGFn
ZVNlbGVjdG9yKTsKICAgICAgICAgcnVsZS0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZl
Y3Rvcik7Ci0gICAgICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNl
ZFByb3BlcnRpZXMpKTsKKyAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMpKTsK
ICAgICAgICAgcGFnZVJ1bGUgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFN0eWxlT2Jq
ZWN0cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwogICAgIH0KQEAgLTY5MTEsMzQgKzY4ODgsMTYg
QEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVNYXJnaW5BdFJ1bGUoQ1NTU2VsZWN0b3I6Ok1h
cmdpbkJveFR5cGUgLyogbWFyZ2luQm94ICoKIAogdm9pZCBDU1NQYXJzZXI6OnN0YXJ0RGVjbGFy
YXRpb25zRm9yTWFyZ2luQm94KCkKIHsKLSAgICBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVN
YXJnaW5Cb3ggPSBtX251bVBhcnNlZFByb3BlcnRpZXM7CisgICAgbV9udW1QYXJzZWRQcm9wZXJ0
aWVzQmVmb3JlTWFyZ2luQm94ID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50QWRkZWRQcm9wZXJ0
aWVzKCk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjplbmREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3go
KQogewogICAgIEFTU0VSVChtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3ggIT0g
SU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVMpOwotICAgIHJvbGxiYWNrTGFzdFByb3BlcnRp
ZXMobV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFy
Z2luQm94KTsKKyAgICBtX3BhcnNlZFByb3BlcnRpZXMucm9sbGJhY2tMYXN0UHJvcGVydGllcyht
X3BhcnNlZFByb3BlcnRpZXMuY291bnRBZGRlZFByb3BlcnRpZXMoKSAtIG1fbnVtUGFyc2VkUHJv
cGVydGllc0JlZm9yZU1hcmdpbkJveCk7CiAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3Jl
TWFyZ2luQm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVM7CiB9CiAKLXZvaWQgQ1NT
UGFyc2VyOjpkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKQotewotICAgIEFTU0VSVChtX2hhc0Zv
bnRGYWNlT25seVZhbHVlcyk7Ci0gICAgaW50IGRlbGV0ZWRQcm9wZXJ0aWVzID0gMDsKLQotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBhcnNlZFByb3BlcnRpZXM7ICsraSkgewot
ICAgICAgICBDU1NQcm9wZXJ0eSogcHJvcGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07Ci0g
ICAgICAgIGludCBpZCA9IHByb3BlcnR5LT5pZCgpOwotICAgICAgICBpZiAoKGlkID09IENTU1By
b3BlcnR5Rm9udFdlaWdodCB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRTdHlsZSB8fCBpZCA9PSBD
U1NQcm9wZXJ0eUZvbnRWYXJpYW50KSAmJiBwcm9wZXJ0eS0+dmFsdWUoKS0+aXNWYWx1ZUxpc3Qo
KSkgewotICAgICAgICAgICAgZGVsZXRlIHByb3BlcnR5OwotICAgICAgICAgICAgZGVsZXRlZFBy
b3BlcnRpZXMrKzsKLSAgICAgICAgfSBlbHNlIGlmIChkZWxldGVkUHJvcGVydGllcykKLSAgICAg
ICAgICAgIG1fcGFyc2VkUHJvcGVydGllc1tpIC0gZGVsZXRlZFByb3BlcnRpZXNdID0gbV9wYXJz
ZWRQcm9wZXJ0aWVzW2ldOwotICAgIH0KLQotICAgIG1fbnVtUGFyc2VkUHJvcGVydGllcyAtPSBk
ZWxldGVkUHJvcGVydGllczsKLX0KLQogV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJzZXI6
OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJWYWx1ZUxpc3QqIGtleXMpCiB7CiAgICAgLy8g
Q3JlYXRlIGEga2V5IHN0cmluZyBmcm9tIHRoZSBwYXNzZWQga2V5cwpAQCAtNjk1Myw3ICs2OTEy
LDcgQEAgV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVs
ZShDU1NQYXJzZXJWYWx1ZUxpc3QqIGtleXMpCiAKICAgICBSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJh
bWVSdWxlPiBrZXlmcmFtZSA9IFdlYktpdENTU0tleWZyYW1lUnVsZTo6Y3JlYXRlKG1fc3R5bGVT
aGVldCk7CiAgICAga2V5ZnJhbWUtPnNldEtleVRleHQoa2V5U3RyaW5nKTsKLSAgICBrZXlmcmFt
ZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgwLCBt
X3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGllcykpOworICAgIGtleWZyYW1l
LT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKDAsIG1f
cGFyc2VkUHJvcGVydGllcykpOwogCiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuaAppbmRleCA4ZTNmZTc3Li4zMGViMDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250YWluZXIu
aCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCIKICNpbmNsdWRlICJDU1NTZWxl
Y3Rvci5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCkBAIC03NSw4ICs3Niw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZSogcHJpbWl0aXZlVmFsdWVD
YWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVmFsdWVDYWNoZS5nZXQoKTsgfQogCiAg
ICAgICAgIHZvaWQgYWRkUHJvcGVydHkoaW50IHByb3BJZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4s
IGJvb2wgaW1wb3J0YW50KTsKLSAgICAgICAgdm9pZCByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKGlu
dCBudW0pOwotICAgICAgICBib29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX251
bVBhcnNlZFByb3BlcnRpZXMgPiAwOyB9CisgICAgICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNv
bnN0IHsgcmV0dXJuICFtX3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9CiAKICAgICAgICAg
Ym9vbCBwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKICAgICAgICAgYm9v
bCBwYXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMsIGludCBu
dW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7CkBAIC0yNTIsMTggKzI1MiwxNSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxDU1NSdWxlPiBtX2tleWZyYW1lOwogICAg
ICAgICBPd25QdHI8TWVkaWFRdWVyeT4gbV9tZWRpYVF1ZXJ5OwogICAgICAgICBDU1NQYXJzZXJW
YWx1ZUxpc3QqIG1fdmFsdWVMaXN0OwotICAgICAgICBDU1NQcm9wZXJ0eSoqIG1fcGFyc2VkUHJv
cGVydGllczsKKyAgICAgICAgQ1NTUHJvcGVydHlDb250YWluZXIgbV9wYXJzZWRQcm9wZXJ0aWVz
OwogICAgICAgICBDU1NTZWxlY3Rvckxpc3QqIG1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3Rv
cjsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGU+IG1fcHJpbWl0aXZlVmFs
dWVDYWNoZTsKLSAgICAgICAgdW5zaWduZWQgbV9udW1QYXJzZWRQcm9wZXJ0aWVzOwotICAgICAg
ICB1bnNpZ25lZCBtX21heFBhcnNlZFByb3BlcnRpZXM7CiAgICAgICAgIHVuc2lnbmVkIG1fbnVt
UGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveDsKIAogICAgICAgICBpbnQgbV9pblBhcnNl
U2hvcnRoYW5kOwogICAgICAgICBpbnQgbV9jdXJyZW50U2hvcnRoYW5kOwogICAgICAgICBib29s
IG1faW1wbGljaXRTaG9ydGhhbmQ7CiAKLSAgICAgICAgYm9vbCBtX2hhc0ZvbnRGYWNlT25seVZh
bHVlczsKICAgICAgICAgYm9vbCBtX2hhZFN5bnRhY3RpY2FsbHlWYWxpZENTU1J1bGU7CiAKICAg
ICAgICAgQXRvbWljU3RyaW5nIG1fZGVmYXVsdE5hbWVzcGFjZTsKQEAgLTMwMSw4ICsyOTgsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBjaGVja0Zvck9ycGhhbmVkVW5p
dHMoKTsKIAotICAgICAgICB2b2lkIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotCiAgICAg
ICAgIGJvb2wgaXNHZW5lcmF0ZWRJbWFnZVZhbHVlKENTU1BhcnNlclZhbHVlKikgY29uc3Q7CiAg
ICAgICAgIGJvb2wgcGFyc2VHZW5lcmF0ZWRJbWFnZShSZWZQdHI8Q1NTVmFsdWU+Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlY2E5NGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCkBAIC0wLDAgKzEsMTI4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBbmRy
YXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPiwgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5Q29udGFpbmVyLmgiCisKKyNpbmNs
dWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworQ1NTUHJvcGVydHlDb250YWluZXI6OkNTU1Byb3BlcnR5Q29udGFp
bmVyKCkKKyAgICA6IG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyhmYWxzZSkKKyAgICAsIG1f
bnVtQWRkZWRQcm9wZXJ0aWVzKDApCit7Cit9CisKK0NTU1Byb3BlcnR5Q29udGFpbmVyOjppdGVy
YXRvciBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Z2V0UHJvcGVydHlCeUlkKGludCBwcm9wZXJ0eUlk
KQoreworICAgIHJldHVybiBtX3Byb3BlcnR5U2V0LmZpbmQ8aW50LCBDU1NQcm9wZXJ0eUlkSGFz
aFRyYW5zbGF0b3I+KHByb3BlcnR5SWQpOworfQorCitDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aXRl
cmF0b3IgQ1NTUHJvcGVydHlDb250YWluZXI6OmJlZ2luKCkKK3sKKyAgICByZXR1cm4gbV9wcm9w
ZXJ0eVNldC5iZWdpbigpOworfQorCitDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aXRlcmF0b3IgQ1NT
UHJvcGVydHlDb250YWluZXI6OmVuZCgpCit7CisgICAgcmV0dXJuIG1fcHJvcGVydHlTZXQuZW5k
KCk7Cit9CisKK0NTU1Byb3BlcnR5JiBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6bGFzdCgpCit7Cisg
ICAgQVNTRVJUKCFtX3Byb3BlcnR5U2V0LmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIG1fcHJvcGVy
dHlTZXQubGFzdCgpOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjphZGRQcm9wZXJ0
eShpbnQgcHJvcGVydHlJZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0
YW50LCBpbnQgc2hvcnRoYW5kSUQsIGJvb2wgaW1wbGljaXQpCit7CisgICAgQVNTRVJUKHByb3Bl
cnR5SWQpOworCisgICAgQ1NTUHJvcGVydHkgbmV3UHJvcGVydHkocHJvcGVydHlJZCwgdmFsdWUs
IGltcG9ydGFudCwgc2hvcnRoYW5kSUQsIGltcGxpY2l0KTsKKyAgICBpdGVyYXRvciBwcm9wZXJ0
eSA9IGdldFByb3BlcnR5QnlJZChwcm9wZXJ0eUlkKTsKKworICAgIGlmIChwcm9wZXJ0eSAhPSBt
X3Byb3BlcnR5U2V0LmVuZCgpKSB7CisgICAgICAgIGlmIChwcm9wZXJ0eS0+aXNJbXBvcnRhbnQo
KSAmJiAhaW1wb3J0YW50KQorICAgICAgICAgICAgbmV3UHJvcGVydHkgPSAqcHJvcGVydHk7Cisg
ICAgICAgIG1fcHJvcGVydHlTZXQucmVtb3ZlKHByb3BlcnR5KTsKKyAgICB9CisgICAgKyttX251
bUFkZGVkUHJvcGVydGllczsKKyAgICBtX3Byb3BlcnR5U2V0LmFkZChuZXdQcm9wZXJ0eSk7Cit9
CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OnJlbW92ZVByb3BlcnR5KGludCBwcm9wZXJ0
eUlkKQoreworICAgIEFTU0VSVChwcm9wZXJ0eUlkKTsKKyAgICBpdGVyYXRvciBwcm9wZXJ0eSA9
IGdldFByb3BlcnR5QnlJZChwcm9wZXJ0eUlkKTsKKworICAgIC0tbV9udW1BZGRlZFByb3BlcnRp
ZXM7CisgICAgbV9wcm9wZXJ0eVNldC5yZW1vdmUocHJvcGVydHkpOworfQorCit2b2lkIENTU1By
b3BlcnR5Q29udGFpbmVyOjpyZW1vdmVGb250RmFjZVByb3BlcnRpZXMoKQoreworICAgIGlmICgh
bV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnQg
aWRzWzNdID0ge0NTU1Byb3BlcnR5Rm9udFdlaWdodCwgQ1NTUHJvcGVydHlGb250U3R5bGUsIENT
U1Byb3BlcnR5Rm9udFZhcmlhbnR9OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdU
Rl9BUlJBWV9MRU5HVEgoaWRzKTsgKytpKSB7CisgICAgICAgIGl0ZXJhdG9yIHByb3BlcnR5ID0g
Z2V0UHJvcGVydHlCeUlkKGlkc1tpXSk7CisKKyAgICAgICAgaWYgKHByb3BlcnR5ID09IG1fcHJv
cGVydHlTZXQuZW5kKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAocHJv
cGVydHktPnZhbHVlKCktPmlzVmFsdWVMaXN0KCkpIHsKKyAgICAgICAgICAgIG1fcHJvcGVydHlT
ZXQucmVtb3ZlKHByb3BlcnR5KTsKKyAgICAgICAgICAgIC0tbV9udW1BZGRlZFByb3BlcnRpZXM7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXMgPSBm
YWxzZTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3ZlTGFzdCgpCit7Cisg
ICAgQVNTRVJUKG1fcHJvcGVydHlTZXQuc2l6ZSgpKTsKKyAgICAtLW1fbnVtQWRkZWRQcm9wZXJ0
aWVzOworICAgIG1fcHJvcGVydHlTZXQucmVtb3ZlTGFzdCgpOworfQorCit2b2lkIENTU1Byb3Bl
cnR5Q29udGFpbmVyOjpyb2xsYmFja0xhc3RQcm9wZXJ0aWVzKGludCBudW0pCit7CisgICAgQVNT
RVJUKG1fcHJvcGVydHlTZXQuc2l6ZSgpID49IG51bSk7CisKKyAgICBmb3IgKGludCByZW1vdmVk
UHJvcGVydGllcyA9IDA7IHJlbW92ZWRQcm9wZXJ0aWVzIDwgbnVtOyArK3JlbW92ZWRQcm9wZXJ0
aWVzKQorICAgICAgICBtX3Byb3BlcnR5U2V0LnJlbW92ZUxhc3QoKTsKKworICAgIG1fbnVtQWRk
ZWRQcm9wZXJ0aWVzIC09IG51bTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y2xl
YXJQcm9wZXJ0aWVzKCkKK3sKKyAgICBtX3Byb3BlcnR5U2V0LmNsZWFyKCk7CisgICAgLS1tX251
bUFkZGVkUHJvcGVydGllcyA9IDA7CisgICAgbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzID0g
ZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5Q29udGFpbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MDhhZDVlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eUNvbnRhaW5lci5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFuZHJhcyBCZWNzaSA8YWJlY3NpQHdlYmtpdC5v
cmc+LCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENTU1Byb3BlcnR5Q29udGFpbmVyX2gK
KyNkZWZpbmUgQ1NTUHJvcGVydHlDb250YWluZXJfaAorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHku
aCIKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Cisj
aW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29u
c3QgdW5zaWduZWQga0lubGluZUNhcGFjaXR5ID0gMzI7CisKK2NsYXNzIENTU1Byb3BlcnR5Q29u
dGFpbmVyIHsKK3ByaXZhdGU6CisgICAgc3RydWN0IENTU1Byb3BlcnR5SGFzaEZ1bmN0aW9ucyB7
CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKENTU1Byb3BlcnR5IHByb3BlcnR5KSB7IHJl
dHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJvcGVydHkubV9pZCk7IH0KKyAgICAgICAgc3Rh
dGljIGJvb2wgZXF1YWwoQ1NTUHJvcGVydHkgYSwgQ1NTUHJvcGVydHkgYikgeyByZXR1cm4gYS5t
X2lkID09IGIubV9pZDsgfQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJl
VG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07CisgICAgc3RydWN0IENTU1Byb3BlcnR5
SWRIYXNoVHJhbnNsYXRvciB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGludCBpZCkg
eyBBU1NFUlQoaWQgPj0gMCk7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaWQpOyB9Cisg
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKENTU1Byb3BlcnR5IHByb3BlcnR5LCBpbnQgaWQpIHsg
cmV0dXJuIHByb3BlcnR5Lm1faWQgPT0gaWQ7IH0KKyAgICB9OworCitwdWJsaWM6CisgICAgdHlw
ZWRlZiBMaXN0SGFzaFNldDxDU1NQcm9wZXJ0eSwga0lubGluZUNhcGFjaXR5LCBDU1NQcm9wZXJ0
eUhhc2hGdW5jdGlvbnM+OjppdGVyYXRvciBpdGVyYXRvcjsKKyAgICB0eXBlZGVmIExpc3RIYXNo
U2V0PENTU1Byb3BlcnR5LCBrSW5saW5lQ2FwYWNpdHksIENTU1Byb3BlcnR5SGFzaEZ1bmN0aW9u
cz46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworCisgICAgQ1NTUHJvcGVydHlDb250
YWluZXIoKTsKKworICAgIENTU1Byb3BlcnR5Q29udGFpbmVyOjppdGVyYXRvciBiZWdpbigpOwor
ICAgIENTU1Byb3BlcnR5Q29udGFpbmVyOjppdGVyYXRvciBlbmQoKTsKKyAgICBDU1NQcm9wZXJ0
eSYgbGFzdCgpOworCisgICAgdW5zaWduZWQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX3Byb3Bl
cnR5U2V0LnNpemUoKTsgfQorICAgIGludCBjb3VudEFkZGVkUHJvcGVydGllcygpIGNvbnN0IHsg
cmV0dXJuIG1fbnVtQWRkZWRQcm9wZXJ0aWVzOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9wcm9wZXJ0eVNldC5pc0VtcHR5KCk7IH0KKworICAgIHZvaWQgc2V0Rm9udEZh
Y2VPbmx5KCkgeyBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXMgPSB0cnVlOyB9CisKKyAgICB2
b2lkIGFkZFByb3BlcnR5KGludCBwcm9wZXJ0eUlkLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiwgYm9v
bCBpbXBvcnRhbnQsIGludCBzaG9ydGhhbmRJRCA9IDAsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSk7
CisKKyAgICB2b2lkIHJlbW92ZVByb3BlcnR5KGludCBwcm9wZXJ0eUlkKTsKKyAgICB2b2lkIHJl
bW92ZUZvbnRGYWNlUHJvcGVydGllcygpOworICAgIHZvaWQgcmVtb3ZlTGFzdCgpOworCisgICAg
dm9pZCByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKGludCk7CisgICAgdm9pZCBjbGVhclByb3BlcnRp
ZXMoKTsKKworcHJpdmF0ZToKKyAgICBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aXRlcmF0b3IgZ2V0
UHJvcGVydHlCeUlkKGludCBwcm9wZXJ0eUlkKTsKKworICAgIGJvb2wgbV9oYXNGb250RmFjZU9u
bHlQcm9wZXJ0aWVzOworICAgIGludCBtX251bUFkZGVkUHJvcGVydGllczsKKyAgICBMaXN0SGFz
aFNldDxDU1NQcm9wZXJ0eSwga0lubGluZUNhcGFjaXR5LCBDU1NQcm9wZXJ0eUhhc2hGdW5jdGlv
bnM+IG1fcHJvcGVydHlTZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBDU1NQcm9wZXJ0eUNvbnRhaW5lcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU1ZHQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3Bw
CmluZGV4IGYzYjVhYzMuLjhjZDNjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ1NTSW5pdGlhbFZhbHVlLmgiCiAjaW5jbHVk
ZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlICJDU1NQ
cm9wZXJ0eUNvbnRhaW5lci5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNs
dWRlICJDU1NRdWlya1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jk
cy5oIgpAQCAtMjgzLDEwICsyODQsMTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGlmICghcGFyc2VWYWx1ZShDU1NQ
cm9wZXJ0eU1hcmtlclN0YXJ0LCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBpZiAobV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkgewotICAgICAgICAgICAgcm9s
bGJhY2tMYXN0UHJvcGVydGllcygxKTsKKyAgICAgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5y
ZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAg
ICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVy
dGllcyAtIDFdLT52YWx1ZSgpOworICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFBy
b3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
TWFya2VyTWlkLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlNYXJrZXJFbmQsIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICBtX2ltcGxpY2l0U2hv
cnRoYW5kID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZh
Y2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3Bw
CmluZGV4IDc3MGE2ODYuLjRmZTE4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb250RmFjZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZUVsZW1lbnQuY3BwCkBAIC0yOTksOCArMjk5LDggQEAgdm9pZCBTVkdGb250RmFjZUVsZW1lbnQ6
OnJlYnVpbGRGb250RmFjZSgpCiAKICAgICAvLyBQYXJzZSBpbi1tZW1vcnkgQ1NTIHJ1bGVzCiAg
ICAgQ1NTUHJvcGVydHkgc3JjUHJvcGVydHkoQ1NTUHJvcGVydHlTcmMsIGxpc3QpOwotICAgIGNv
bnN0IENTU1Byb3BlcnR5KiBzcmNQcm9wZXJ0eVJlZiA9ICZzcmNQcm9wZXJ0eTsKLSAgICBtX3N0
eWxlRGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMoJnNyY1Byb3BlcnR5UmVmLCAxKTsK
KyAgICBjb25zdCBDU1NQcm9wZXJ0eSYgc3JjUHJvcGVydHlSZWYgPSBzcmNQcm9wZXJ0eTsKKyAg
ICBtX3N0eWxlRGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnR5KHNyY1Byb3BlcnR5UmVmKTsK
IAogICAgIGlmIChkZXNjcmliZXNQYXJlbnRGb250KSB7ICAgIAogICAgICAgICAvLyBUcmF2ZXJz
ZSBwYXJzZWQgQ1NTIHZhbHVlcyBhbmQgYXNzb2NpYXRlIENTU0ZvbnRGYWNlU3JjVmFsdWUgZWxl
bWVudHMgd2l0aCBvdXJzZWx2ZXMuCi0tIAoxLjcuNgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104356</attachid>
            <date>2011-08-18 10:12:55 -0700</date>
            <delta_ts>2011-08-23 11:15:17 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-Refactor-the-CSSProperty-handling-infrastructure-of-.patch</filename>
            <type>text/plain</type>
            <size>44210</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSBiZTIxMTM5OTZlOTczMjcwZDcwNzRjZjk1M2VlNzA5MDM4ZjE2YTMwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPgpEYXRl
OiBUaHUsIDE4IEF1ZyAyMDExIDE5OjExOjEwICswMjAwClN1YmplY3Q6IFtQQVRDSF0gUmVmYWN0
b3IgdGhlIENTU1Byb3BlcnR5IGhhbmRsaW5nIGluZnJhc3RydWN0dXJlIG9mCiBDU1NQYXJzZXIK
Ci0tLQogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICB8
ICAgIDEgKwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgNzMgKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
ICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSAgICAg
ICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qICAgICAgfCAgICA4ICsrCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogIHwgICAgOCArKwogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueSAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAgfCAgIDIzICsrKy0KIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oICAgfCAgICA5ICstCiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCAgICAgICAgICAgICAgICAgIHwgIDEyMyArKysr
KystLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCAgICAgICAgICAg
ICAgICAgICAgfCAgIDExICstLQogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFp
bmVyLmNwcCAgICAgICB8ICAxMzcgKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCAgICAgICAgIHwgICA4OCArKysrKysrKysrKysr
CiBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcCAgICAgICAgICAgICAgIHwgICAg
NSArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAgICAgICAgICB8
ICAgIDQgKy0KIDE2IGZpbGVzIGNoYW5nZWQsIDM5NiBpbnNlcnRpb25zKCspLCAxMDkgZGVsZXRp
b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
Q29udGFpbmVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eUNvbnRhaW5lci5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3Mjk0YjY5Li5jZmZi
MTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDQwLDYgKzQ0MCw3IEBAIFNFVChXZWJDb3Jl
X1NPVVJDRVMKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCiAgICAgY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlQ2FjaGUuY3BwCiAgICAgY3NzL0NTU1Byb3BlcnR5LmNwcAorICAgIGNzcy9DU1NQ
cm9wZXJ0eUNvbnRhaW5lci5jcHAKICAgICBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAKICAg
ICBjc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcAogICAgIGNzcy9DU1NSZWZsZWN0VmFsdWUu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZWQwMDYwNi4uZDVkMWIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDc2IEBACisyMDExLTA4LTE4ICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZWZhY3RvciB0aGUgQ1NTUHJvcGVydHkgaGFuZGxpbmcgaW5mcmFzdHJ1Y3R1cmUg
b2YgQ1NTUGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTQxNworCisgICAgICAgIEltcGxlbWVudCBhIExpc3RIYXNoU2V0IGJhc2VkIGNvbnRh
aW5lciBjbGFzcyB0byBtYW5hZ2UgQ1NTUHJvcGVydGllcywgZWxpbWluYXRlIHRoZSBjdXJyZW50
CisgICAgICAgIHJhdyBwb2ludGVyIGJhc2VkIG1lY2hhbmlzbSBmcm9tIENTU1BhcnNlciBhbmQg
YXV0b21hdGljYWxseSBkaXNjYXJkIGR1cGxpY2F0ZSBwcm9wZXJ0aWVzLgorICAgICAgICBJbiBh
IGZvbGxvdy11cCBDU1NQcm9wZXJ0eUNvbnRhaW5lciBjYW4gYWxzbyBiZSB1c2VkIHRvIGV4dHJh
Y3QgdGhlIHByb3BlcnR5IGhhbmRsaW5nIGxvZ2ljCisgICAgICAgIGZyb20gQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24gd2hpY2ggY3VycmVudGx5IG1haW50YWlucyBpdHMgb3duIGZvcmsgb2Yg
aW5mcmFzdHJ1Y3R1cmUKKyAgICAgICAgZm9yIG1hbmFnaW5nIHBhcnNlZCBwcm9wZXJ0aWVzLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQg
YnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
Y3NzL0NTU0dyYW1tYXIueToKKyAgICAgICAgKiBjc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjphZGRQYXJzZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3MvQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpDU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjp+Q1NTUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRkUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpjbGVhclByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZTRWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udFZhcmlhbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRXZWlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpjcmVhdGVQYWdlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnN0YXJ0RGVj
bGFyYXRpb25zRm9yTWFyZ2luQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6ZW5k
RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
Y3JlYXRlS2V5ZnJhbWVSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6Omhhc1Byb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9DU1NQ
cm9wZXJ0eUNvbnRhaW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlDb250YWluZXI6OkNTU1Byb3BlcnR5Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5Q29udGFpbmVyOjpnZXRQcm9wZXJ0eUJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJvcGVydHlDb250YWluZXI6OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5Q29udGFpbmVyOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWlu
ZXI6Omxhc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmFkZFBy
b3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3Zl
Rm9udEZhY2VQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFp
bmVyOjpyZW1vdmVMYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVy
Ojpyb2xsYmFja0xhc3RQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5
Q29udGFpbmVyOjpjbGVhclByb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eUNv
bnRhaW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVy
OjpDU1NQcm9wZXJ0eUhhc2hGdW5jdGlvbnM6Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHlDb250YWluZXI6OkNTU1Byb3BlcnR5SGFzaEZ1bmN0aW9uczo6ZXF1YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OkNTU1Byb3BlcnR5SWRIYXNoVHJh
bnNsYXRvcjo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6
Q1NTUHJvcGVydHlJZEhhc2hUcmFuc2xhdG9yOjplcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlDb250YWluZXI6OmNvdW50QWRkZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5Q29udGFpbmVyOjppc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5Q29udGFpbmVyOjpzZXRGb250RmFjZU9ubHkpOgorICAgICAgICAqIGNzcy9TVkdDU1NQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNWR1ZhbHVlKToKKyAg
ICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZvbnRGYWNlRWxlbWVudDo6cmVidWlsZEZvbnRGYWNlKToKKwogMjAxMS0wOC0xOCAgQW5kcmV5
IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFtFeHRlbnNpb25zIEFQSV0gcmVuYW1lIHdlYkluc3BlY3Rvci5yZXNvdXJjZXMgdG8gd2ViSW5z
cGVjdG9yLm5ldHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDI2ZjBhNTIu
Ljk4ODkzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtOTc3LDYgKzk3Nyw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlTWFwcGluZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmggXAorCVNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eUNvbnRhaW5lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFu
ZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmggXAogCVNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCA1MjAxZDU5Li4zYzg1Njc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00OTMsNiArNDkz
LDcgQEAKICAgICAgICAgICAgICdjc3MvQ1NTUGFyc2VyVmFsdWVzLmgnLAogICAgICAgICAgICAg
J2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHku
aCcsCisgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmgnLAogICAgICAgICAg
ICAgJ2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Jl
ZmxlY3RWYWx1ZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUmVmbGVjdGlvbkRpcmVjdGlvbi5o
JywKQEAgLTIzNDgsNiArMjM0OSw3IEBACiAgICAgICAgICAgICAnY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlQ2FjaGUuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3Mu
aCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5LmNwcCcsCisgICAgICAgICAgICAnY3Nz
L0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5
TG9uZ2hhbmQuY3BwJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oJywK
ICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
CmluZGV4IDE3N2ZiMzUuLjgzNjgzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC00MTEsNiArNDExLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBcCiAgICAgY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUuY3BwIFwKICAgICBjc3MvQ1NTUHJvcGVydHkuY3BwIFwK
KyAgICBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwIFwKICAgICBjc3MvQ1NTUHJvcGVydHlM
b25naGFuZC5jcHAgXAogICAgIGNzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIFwKICAgICBj
c3MvQ1NTUmVmbGVjdFZhbHVlLmNwcCBcCkBAIC0xNDEzLDYgKzE0MTQsNyBAQCBIRUFERVJTICs9
IFwKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlQ2FjaGUuaCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5LmggXAorICAgIGNzcy9DU1NQcm9wZXJ0
eUNvbnRhaW5lci5oIFwKICAgICBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oIFwKICAgICBjc3Mv
Q1NTUmVmbGVjdFZhbHVlLmggXAogICAgIGNzcy9DU1NSdWxlLmggXApAQCAtMTQyNyw2ICsxNDI5
LDcgQEAgSEVBREVSUyArPSBcCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaCBcCiAgICAgY3NzL0NT
U1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBcCiAgICAgY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgg
XAorICAgIGNzcy9DU1NWYWx1ZS5oIFwKICAgICBjc3MvQ1NTVmFsdWVMaXN0LmggXAogICAgIGNz
cy9DU1NXcmFwU2hhcGVzLmggXAogICAgIGNzcy9Gb250RmFtaWx5VmFsdWUuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDZlNmJmNWQuLjgz
ZTdkMzEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC0zMjk1MCw2ICszMjk1MCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTUHJvcGVydHlDb250YWluZXIuY3BwIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTUHJvcGVy
dHlDb250YWluZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cY3NzXENTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA4Mzk1N2NkLi42ZmIxNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDUsNiArNDQ1LDggQEAKIAkJMUFCMUFFN0Ew
QzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFBRTc4MEMwNTFGREUwMDEzOUY0RiAvKiB6
b29tSW5DdXJzb3IucG5nICovOyB9OwogCQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlGNEYgLyogem9v
bU91dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBQjFBRTc5MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyAqLzsg
fTsKIAkJMUFCMzNEQTUxMjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjMzREE0MTI1NTFF
MzIwMDI0NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgKi87IH07CisJCTFBQjQ0QTBDMTM2NzJDRkYw
MDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI0NEEwQjEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NT
UHJvcGVydHlDb250YWluZXIuY3BwICovOyB9OworCQkxQUI0NEEwRTEzNjcyRDIwMDAwODc3N0Ug
LyogQ1NTUHJvcGVydHlDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBQjQ0QTBEMTM2NzJEMjAwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNv
bnRhaW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTFBQjdGQzY4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RkM0NzBBOEI5MkVD
MDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuY3BwICovOyB9OwogCQkxQUI3RkM2OTBBOEI5MkVD
MDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdGQzQ4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1
YXRvci5oICovOyB9OwogCQkxQUI3RkM2QjBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNz
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QjdGQzRBMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24uY3BwICovOyB9OwpAQCAt
Njk0Miw2ICs2OTQ0LDggQEAKIAkJMUFCMUFFNzgwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1
cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBpbWFnZS5wbmc7IHBhdGggPSB6b29tSW5DdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQUIxQUU3OTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5w
bmc7IHBhdGggPSB6b29tT3V0Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFCMzNEQTQxMjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29yayAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3Jr
OyBuYW1lID0gSU9LaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvSU9LaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxQUI0
NEEwQjEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUHJvcGVydHlDb250YWluZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUI0NEEwRDEzNjcyRDIwMDAwODc3N0UgLyog
Q1NTUHJvcGVydHlDb250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q1NTUHJvcGVydHlDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFC
N0ZDNDcwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUGF0aEV2YWx1YXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQjdGQzQ4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBhdGhFdmFsdWF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0ZDNDkwQThCOTJFQzAwRDlEMzdC
IC8qIFhQYXRoRXZhbHVhdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWFBhdGhFdmFs
dWF0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkzMjcsNiArMTkzMzEs
OCBAQAogCQlGNTIzRDE4NDAyREU0MkU4MDE4NjM1Q0EgLyogY3NzICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQUI0NEEwRDEzNjcyRDIwMDAwODc3N0Ug
LyogQ1NTUHJvcGVydHlDb250YWluZXIuaCAqLywKKwkJCQkxQUI0NEEwQjEzNjcyQ0ZGMDAwODc3
N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuY3BwICovLAogCQkJCTkzQ0E0QzlDMDlERjkzRkEw
MERGODY3NyAvKiBtYWtldG9rZW5pemVyICovLAogCQkJCUE4MEU2Q0RBMEExOTg5Q0EwMDdGQjhD
NSAvKiBDb3VudGVyLmggKi8sCiAJCQkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3RkU0IC8qIENvdW50
ZXIuaWRsICovLApAQCAtMjA2NDcsNiArMjA2NTMsNyBAQAogCQkJCUU0OUJEOUZBMTMxRkQyRUQw
MDNDNTZGMCAvKiBDU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MUVEOEFDMzBDQzQ5QkUwMDBCRkM1NTcgLyogQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRkYwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1Byb3BlcnR5
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUI0NEEwRTEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJv
cGVydHlDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNkVDRDQ1MEYyNTJGMzcwMEJE
RTI3MSAvKiBDU1NQcm9wZXJ0eUxvbmdoYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTY1ODBG
NDA5RDEyQjIwMDAwRTYxRDcgLyogQ1NTUHJvcGVydHlOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODJFM0Q4REYxMjJFQTBEMTAwM0FFNUJDIC8qIENTU1Byb3BlcnR5U291cmNlRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yMzkyNyw2ICsyMzkzNCw3IEBACiAJCQkJQTgwRTZEMDUwQTE5ODlD
QTAwN0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0
OUJEQTBCMTMxRkQzRTUwMDNDNTZGMCAvKiBDU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4MEU2Q0Y3MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcm9wZXJ0eS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkxQUI0NEEwQzEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJv
cGVydHlDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2RUNENDYwRjI1MkYzNzAw
QkRFMjcxIC8qIENTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFC
QTc2Q0ExMUQyMEU1MDAwNEMyMDFDIC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODJFM0Q4REUxMjJFQTBEMTAwM0FFNUJDIC8qIENTU1Byb3BlcnR5U291cmNlRGF0
YS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CmluZGV4IDkwYjVlMTQu
LjVkNzUwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpAQCAtMzIzLDkgKzMyMyw5IEBAIHdl
YmtpdF92YWx1ZToKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2Vy
Kj4ocGFyc2VyKTsKICAgICAgICAgaWYgKCQ0KSB7CiAgICAgICAgICAgICBwLT5tX3ZhbHVlTGlz
dCA9IHAtPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFy
c2VkUHJvcGVydGllcyA9IHAtPm1fbnVtUGFyc2VkUHJvcGVydGllczsKKyAgICAgICAgICAgIGlu
dCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50QWRkZWRQ
cm9wZXJ0aWVzKCk7CiAgICAgICAgICAgICBpZiAoIXAtPnBhcnNlVmFsdWUocC0+bV9pZCwgcC0+
bV9pbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
cC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAg
ICAgICAgICAgcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+
bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50QWRkZWRQcm9wZXJ0aWVzKCkgLSBvbGRQYXJzZWRQcm9w
ZXJ0aWVzKTsKICAgICAgICAgICAgIGRlbGV0ZSBwLT5tX3ZhbHVlTGlzdDsKICAgICAgICAgICAg
IHAtPm1fdmFsdWVMaXN0ID0gMDsKICAgICAgICAgfQpAQCAtMTI3MywxMCArMTI3MywxMCBAQCBk
ZWNsYXJhdGlvbjoKICAgICAgICAgYm9vbCBpc1Byb3BlcnR5UGFyc2VkID0gZmFsc2U7CiAgICAg
ICAgIGlmICgkMSAmJiAkNCkgewogICAgICAgICAgICAgcC0+bV92YWx1ZUxpc3QgPSBwLT5zaW5r
RmxvYXRpbmdWYWx1ZUxpc3QoJDQpOwotICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRp
ZXMgPSBwLT5tX251bVBhcnNlZFByb3BlcnRpZXM7CisgICAgICAgICAgICBpbnQgb2xkUGFyc2Vk
UHJvcGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVydGllcy5jb3VudEFkZGVkUHJvcGVydGllcygp
OwogICAgICAgICAgICAgJCQgPSBwLT5wYXJzZVZhbHVlKCQxLCAkNSk7CiAgICAgICAgICAgICBp
ZiAoISQkKQotICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9u
dW1QYXJzZWRQcm9wZXJ0aWVzIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAgICAg
ICAgcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9wYXJz
ZWRQcm9wZXJ0aWVzLmNvdW50QWRkZWRQcm9wZXJ0aWVzKCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVz
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpc1Byb3BlcnR5UGFyc2VkID0g
dHJ1ZTsKICAgICAgICAgICAgIGRlbGV0ZSBwLT5tX3ZhbHVlTGlzdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDAxN2RjNjku
LjVlYWUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uLmNwcApAQCAtNzMsNyArNzMsNyBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBjb25zdCBWZQog
ICAgIC8vIEZJWE1FOiBUaGlzIGFsbG93cyBkdXBsaWNhdGUgcHJvcGVydGllcy4KIH0KIAotQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1
bGUqIHBhcmVudCwgY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICogcHJvcGVydGllcywgaW50IG51
bVByb3BlcnRpZXMpCitDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBDU1NQcm9wZXJ0eUNvbnRhaW5lciYgcHJvcGVy
dGllcykKICAgICA6IENTU1N0eWxlRGVjbGFyYXRpb24ocGFyZW50KQogICAgICwgbV9ub2RlKDAp
CiAgICAgLCBtX3N0cmljdFBhcnNpbmcoIXBhcmVudCB8fCBwYXJlbnQtPnVzZVN0cmljdFBhcnNp
bmcoKSkKQEAgLTgxLDExICs4MSwxNSBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBjb25zdCBDUwogICAgICwg
bV9pdGVyYXRvckNvdW50KDApCiAjZW5kaWYKIHsKKyAgICB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVz
ID0gcHJvcGVydGllcy5jb3VudCgpOworCisgICAgaWYgKCFudW1Qcm9wZXJ0aWVzKQorICAgICAg
ICByZXR1cm47CisKICAgICBtX3Byb3BlcnRpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1Q
cm9wZXJ0aWVzKTsKICAgICBIYXNoTWFwPGludCwgYm9vbD4gY2FuZGlkYXRlczsKLSAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBjb25zdCBDU1NQ
cm9wZXJ0eSAqcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldOwotICAgICAgICBBU1NFUlQocHJvcGVy
dHkpOworCisgICAgZm9yIChDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IgcHJv
cGVydHkgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IHByb3BlcnR5ICE9IHByb3BlcnRpZXMuZW5kKCk7
ICsrcHJvcGVydHkpIHsKICAgICAgICAgYm9vbCBpbXBvcnRhbnQgPSBwcm9wZXJ0eS0+aXNJbXBv
cnRhbnQoKTsKICAgICAgICAgaWYgKGNhbmRpZGF0ZXMuY29udGFpbnMocHJvcGVydHktPmlkKCkp
KSB7CiAgICAgICAgICAgICBpZiAoIWltcG9ydGFudCAmJiBjYW5kaWRhdGVzLmdldChwcm9wZXJ0
eS0+aWQoKSkpCkBAIC02MzksMTMgKzY0MywxOCBAQCB2b2lkIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjpwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVEZWNsYXJhdGlvbgog
ICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6YWRkUGFyc2VkUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eSogY29uc3QqIHBy
b3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzKQordm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6YWRkUGFyc2VkUHJvcGVydGllcyhDU1NQcm9wZXJ0eUNvbnRhaW5lciYgcHJvcGVydGll
cykKIHsKICAgICBBU1NFUlQoIW1faXRlcmF0b3JDb3VudCk7CiAKKyAgICB1bnNpZ25lZCBudW1Q
cm9wZXJ0aWVzID0gcHJvcGVydGllcy5jb3VudCgpOworCisgICAgaWYgKCFudW1Qcm9wZXJ0aWVz
KQorICAgICAgICByZXR1cm47CisKICAgICBtX3Byb3BlcnRpZXMucmVzZXJ2ZUNhcGFjaXR5KG51
bVByb3BlcnRpZXMpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytp
KQotICAgICAgICBhZGRQYXJzZWRQcm9wZXJ0eSgqcHJvcGVydGllc1tpXSk7CisgICAgZm9yIChD
U1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IgcCA9IHByb3BlcnRpZXMuYmVnaW4o
KTsgcCAhPSBwcm9wZXJ0aWVzLmVuZCgpOyArK3ApCisgICAgICAgIGFkZFBhcnNlZFByb3BlcnR5
KCpwKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3VsZCBoYXZlIGEgY2FsbCB0
byBzZXROZWVkc1N0eWxlUmVjYWxjKCkgaWYgc29tZXRoaW5nIGNoYW5nZWQuIFdlIG1heSBhbHNv
IHdpc2ggdG8gYWRkCiAgICAgLy8gYSBub3RpZnlDaGFuZ2VkIGFyZ3VtZW50IHRvIHRoaXMgZnVu
Y3Rpb24gdG8gZm9sbG93IHRoZSBtb2RlbCBvZiBvdGhlciBmdW5jdGlvbnMgaW4gdGhpcyBjbGFz
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgK
aW5kZXggZWE4YWIzZi4uYjgzODI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDU1NT
dHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNs
dWRlICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5Q29udGFpbmVyLmgiCiAj
aW5jbHVkZSAiS1VSTEhhc2guaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1
ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtNjcsOSArNjgsOSBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKHBh
cmVudFJ1bGUpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24+IGNyZWF0ZShDU1NSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBDU1NQcm9wZXJ0
eSogY29uc3QqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoQ1NTUnVsZSogcGFyZW50
UnVsZSwgQ1NTUHJvcGVydHlDb250YWluZXImIHByb3BlcnRpZXMpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKHBhcmVudFJ1bGUs
IHByb3BlcnRpZXMsIG51bVByb3BlcnRpZXMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihwYXJlbnRSdWxlLCBwcm9wZXJ0aWVzKSk7CiAg
ICAgfQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBj
cmVhdGUoY29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYgcHJvcGVydGllcykKICAgICB7CkBAIC0x
MjQsNyArMTI1LDcgQEAgcHVibGljOgogCiAgICAgLy8gQmVzaWRlcyBhZGRpbmcgdGhlIHByb3Bl
cnRpZXMsIHRoaXMgYWxzbyByZW1vdmVzIGFueSBleGlzdGluZyBwcm9wZXJ0aWVzIHdpdGggdGhl
c2UgSURzLgogICAgIC8vIEl0IGRvZXMgbm8gbm90aWZpY2F0aW9uIHNpbmNlIGl0J3MgY2FsbGVk
IGJ5IHRoZSBwYXJzZXIuCi0gICAgdm9pZCBhZGRQYXJzZWRQcm9wZXJ0aWVzKGNvbnN0IENTU1By
b3BlcnR5KiBjb25zdCAqLCBpbnQgbnVtUHJvcGVydGllcyk7CisgICAgdm9pZCBhZGRQYXJzZWRQ
cm9wZXJ0aWVzKENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9wZXJ0aWVzKTsKICAgICAvLyBUaGlz
IGRvZXMgbm8gY2hhbmdlIG5vdGlmaWNhdGlvbnMgc2luY2UgaXQncyBvbmx5IGNhbGxlZCBieSBj
cmVhdGVNYXJrdXAuCiAgICAgdm9pZCBhZGRQYXJzZWRQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0
eSYpOwogIApAQCAtMTQ5LDcgKzE1MCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oKTsKICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bihDU1NSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+Jik7Ci0gICAg
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50UnVsZSwgY29uc3QgQ1NT
UHJvcGVydHkqIGNvbnN0ICosIGludCBudW1Qcm9wZXJ0aWVzKTsKKyAgICBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnRSdWxlLCBDU1NQcm9wZXJ0eUNvbnRhaW5lciYg
cHJvcGVydGllcyk7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24+IG1ha2VNdXRhYmxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXgg
NWI5MjkxZi4uZjY5NDcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTE2NywxNCAr
MTY3LDEwIEBAIENTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZykKICAgICAs
IG1faWQoMCkKICAgICAsIG1fc3R5bGVTaGVldCgwKQogICAgICwgbV92YWx1ZUxpc3QoMCkKLSAg
ICAsIG1fcGFyc2VkUHJvcGVydGllcyhzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eSoqPihmYXN0TWFs
bG9jKDMyICogc2l6ZW9mKENTU1Byb3BlcnR5KikpKSkKLSAgICAsIG1fbnVtUGFyc2VkUHJvcGVy
dGllcygwKQotICAgICwgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzKDMyKQotICAgICwgbV9udW1QYXJz
ZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVT
KQorICAgICwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KDApCiAgICAgLCBt
X2luUGFyc2VTaG9ydGhhbmQoMCkKICAgICAsIG1fY3VycmVudFNob3J0aGFuZCgwKQogICAgICwg
bV9pbXBsaWNpdFNob3J0aGFuZChmYWxzZSkKLSAgICAsIG1faGFzRm9udEZhY2VPbmx5VmFsdWVz
KGZhbHNlKQogICAgICwgbV9oYWRTeW50YWN0aWNhbGx5VmFsaWRDU1NSdWxlKGZhbHNlKQogICAg
ICwgbV9kZWZhdWx0TmFtZXNwYWNlKHN0YXJBdG9tKQogICAgICwgbV9pblN0eWxlUnVsZU9yRGVj
bGFyYXRpb24oZmFsc2UpCkBAIC0xOTgsOSArMTk0LDYgQEAgQ1NTUGFyc2VyOjpDU1NQYXJzZXIo
Ym9vbCBzdHJpY3RQYXJzaW5nKQogCiBDU1NQYXJzZXI6On5DU1NQYXJzZXIoKQogewotICAgIGNs
ZWFyUHJvcGVydGllcygpOwotICAgIGZhc3RGcmVlKG1fcGFyc2VkUHJvcGVydGllcyk7Ci0KICAg
ICBkZWxldGUgbV92YWx1ZUxpc3Q7CiAKICAgICBmYXN0RnJlZShtX2RhdGEpOwpAQCAtNDYxLDEx
ICs0NTQsMTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24qIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHkKICAgICBtX3J1bGUgPSAwOwogCiAg
ICAgYm9vbCBvayA9IGZhbHNlOwotICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKLSAg
ICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0gICAgaWYgKG1fbnVtUGFyc2VkUHJv
cGVydGllcykgeworICAgIG1fcGFyc2VkUHJvcGVydGllcy5yZW1vdmVGb250RmFjZVByb3BlcnRp
ZXMoKTsKKyAgICBpZiAoIW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCkpIHsKICAgICAgICAg
b2sgPSB0cnVlOwotICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcyhtX3Bh
cnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgIGRlY2xhcmF0
aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcyk7CiAgICAgICAgIGNs
ZWFyUHJvcGVydGllcygpOwogICAgIH0KIApAQCAtNDg3LDcgKzQ3OSw3IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29s
IHN0cmljdCkKICAgICBpZiAoIXBhcnNlci5wYXJzZUNvbG9yKGR1bW15U3R5bGVEZWNsYXJhdGlv
bi5nZXQoKSwgc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ1NTVmFsdWUq
IHZhbHVlID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllc1swXS0+dmFsdWUoKTsKKyAgICBDU1NW
YWx1ZSogdmFsdWUgPSBwYXJzZXIubV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwog
ICAgIGlmICh2YWx1ZS0+Y3NzVmFsdWVUeXBlKCkgIT0gQ1NTVmFsdWU6OkNTU19QUklNSVRJVkVf
VkFMVUUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTA4LDcgKzUwMCw3IEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsYXJh
dGlvbiwgY29uc3QgU3RyaW5nCiAgICAgY3NzeXlwYXJzZSh0aGlzKTsKICAgICBtX3J1bGUgPSAw
OwogCi0gICAgcmV0dXJuIChtX251bVBhcnNlZFByb3BlcnRpZXMgJiYgbV9wYXJzZWRQcm9wZXJ0
aWVzWzBdLT5tX2lkID09IENTU1Byb3BlcnR5Q29sb3IpOworICAgIHJldHVybiAoIW1fcGFyc2Vk
UHJvcGVydGllcy5pc0VtcHR5KCkgJiYgbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS5pZCgpID09
IENTU1Byb3BlcnR5Q29sb3IpOwogfQogCiBib29sIENTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Db2xv
cihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmluZywgRG9jdW1lbnQqIGRvY3VtZW50
KQpAQCAtNTYyLDExICs1NTQsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24o
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRlY2xhcmF0aW9uLCBjb25zdAogICAgIG1fcnVs
ZSA9IDA7CiAKICAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgaWYgKG1faGFzRm9udEZhY2VPbmx5
VmFsdWVzKQotICAgICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKLSAgICBpZiAobV9u
dW1QYXJzZWRQcm9wZXJ0aWVzKSB7CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnJlbW92ZUZvbnRG
YWNlUHJvcGVydGllcygpOworCisgICAgaWYgKCFtX3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0eSgp
KSB7CiAgICAgICAgIG9rID0gdHJ1ZTsKLSAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFBy
b3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpOworICAg
ICAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMp
OwogICAgICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICB9CiAKQEAgLTYxMCwzMyArNjAyLDEz
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZU1lZGlhUXVlcnkoTWVkaWFMaXN0KiBxdWVyaWVzLCBj
b25zdCBTdHJpbmcmIHN0cmluZykKIAogdm9pZCBDU1NQYXJzZXI6OmFkZFByb3BlcnR5KGludCBw
cm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCkKIHsKLSAg
ICBPd25QdHI8Q1NTUHJvcGVydHk+IHByb3AoYWRvcHRQdHIobmV3IENTU1Byb3BlcnR5KHByb3BJ
ZCwgdmFsdWUsIGltcG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5kLCBtX2ltcGxpY2l0U2hvcnRo
YW5kKSkpOwotICAgIGlmIChtX251bVBhcnNlZFByb3BlcnRpZXMgPj0gbV9tYXhQYXJzZWRQcm9w
ZXJ0aWVzKSB7Ci0gICAgICAgIG1fbWF4UGFyc2VkUHJvcGVydGllcyArPSAzMjsKLSAgICAgICAg
aWYgKG1fbWF4UGFyc2VkUHJvcGVydGllcyA+IFVJTlRfTUFYIC8gc2l6ZW9mKENTU1Byb3BlcnR5
KikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fcGFyc2VkUHJvcGVydGllcyA9IHN0
YXRpY19jYXN0PENTU1Byb3BlcnR5Kio+KGZhc3RSZWFsbG9jKG1fcGFyc2VkUHJvcGVydGllcywK
LSAgICAgICAgICAgIG1fbWF4UGFyc2VkUHJvcGVydGllcyAqIHNpemVvZihDU1NQcm9wZXJ0eSop
KSk7Ci0gICAgfQotICAgIG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMr
K10gPSBwcm9wLmxlYWtQdHIoKTsKLX0KLQotdm9pZCBDU1NQYXJzZXI6OnJvbGxiYWNrTGFzdFBy
b3BlcnRpZXMoaW50IG51bSkKLXsKLSAgICBBU1NFUlQobnVtID49IDApOwotICAgIEFTU0VSVCht
X251bVBhcnNlZFByb3BlcnRpZXMgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG51bSkpOwotCi0g
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW07ICsraSkKLSAgICAgICAgZGVsZXRlIG1fcGFyc2Vk
UHJvcGVydGllc1stLW1fbnVtUGFyc2VkUHJvcGVydGllc107CisgICAgbV9wYXJzZWRQcm9wZXJ0
aWVzLmFkZFByb3BlcnR5KHByb3BJZCwgdmFsdWUsIGltcG9ydGFudCwgbV9jdXJyZW50U2hvcnRo
YW5kLCBtX2ltcGxpY2l0U2hvcnRoYW5kKTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OmNsZWFyUHJv
cGVydGllcygpCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbnVtUGFyc2VkUHJv
cGVydGllczsgaSsrKQotICAgICAgICBkZWxldGUgbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwotICAg
IG1fbnVtUGFyc2VkUHJvcGVydGllcyA9IDA7CiAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVm
b3JlTWFyZ2luQm94ID0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVM7Ci0gICAgbV9oYXNG
b250RmFjZU9ubHlWYWx1ZXMgPSBmYWxzZTsKKyAgICBtX3BhcnNlZFByb3BlcnRpZXMuY2xlYXIo
KTsKIH0KICAgICAKIHZvaWQgQ1NTUGFyc2VyOjpzZXRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQq
IHN0eWxlU2hlZXQpCkBAIC05NDYsNyArOTE4LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNj
b3BlKHRoaXMsIHByb3BJZCk7CiAgICAgICAgIGlmIChudW0gIT0gMSB8fCAhcGFyc2VWYWx1ZShD
U1NQcm9wZXJ0eU92ZXJmbG93WCwgaW1wb3J0YW50KSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFy
c2VkUHJvcGVydGllcyAtIDFdLT52YWx1ZSgpOworICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBt
X3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5T3ZlcmZsb3dZLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpAQCAtMTA0Myw3ICsxMDE1LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICBTaG9ydGhhbmRTY29w
ZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcpOwogICAgICAgICAgICAgaWYg
KCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9w
ZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENT
U1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAg
ICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTE3MDksNyArMTY4MSw3IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAg
ICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5Db2xsYXBzZSk7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwg
aW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBD
U1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVz
LTFdLT52YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9w
ZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGll
c1sxXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQpAQCAtMjQ4OSw3ICsyNDYxLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyhp
bnQgcHJvcElkLCBjb25zdCBpbnQgKnByb3BlcnRpZXMsICBib29sIGltcG9ydGFudCkKICAgICAg
ICAgY2FzZSAxOiB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwg
aW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBD
U1NWYWx1ZSAqdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVz
LTFdLT52YWx1ZSgpOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9w
ZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwogICAgICAgICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNp
dFNjb3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQpOwogICAgICAgICAgICAgYWRkUHJvcGVydHko
cHJvcGVydGllc1sxXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0
eShwcm9wZXJ0aWVzWzJdLCB2YWx1ZSwgaW1wb3J0YW50KTsKQEAgLTI0OTcsMTkgKzI0NjksMjQg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyhpbnQgcHJvcElkLCBjb25zdCBpbnQgKnBy
b3BlcnRpZXMsICBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgMjogewotICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRp
ZXNbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGllc1sxXSwgaW1wb3J0YW50
KSkKKyAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2
YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZhbHVl
KCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUxID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxh
c3QoKS52YWx1ZSgpOworICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0s
IGltcG9ydGFudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
Q1NTVmFsdWUqIHZhbHVlMiA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAg
ICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxp
Y2l0KTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMl0sIHZhbHVlLCBpbXBv
cnRhbnQpOwotICAgICAgICAgICAgdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJz
ZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOwotICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVy
dGllc1szXSwgdmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9w
ZXJ0aWVzWzJdLCB2YWx1ZTEsIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShw
cm9wZXJ0aWVzWzNdLCB2YWx1ZTIsIGltcG9ydGFudCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIDM6IHsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShw
cm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGlt
cG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGllc1syXSwgaW1wb3J0YW50KSkKKyAgICAg
ICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJz
ZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVz
Lmxhc3QoKS52YWx1ZSgpOworICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNb
Ml0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVy
dGllcy0yXS0+dmFsdWUoKTsKKwogICAgICAgICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNj
b3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJv
cGVydGllc1szXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQx
MDMsNyArNDA4MCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnRTdHlsZShib29sIGltcG9y
dGFudCkKICAgICB9CiAKICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy0+bGVuZ3RoKCkpIHsKLSAg
ICAgICAgbV9oYXNGb250RmFjZU9ubHlWYWx1ZXMgPSB0cnVlOworICAgICAgICBtX3BhcnNlZFBy
b3BlcnRpZXMuc2V0Rm9udEZhY2VPbmx5KCk7CiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5Rm9udFN0eWxlLCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkBAIC00MTUwLDcgKzQxMjcsNyBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VGb250VmFyaWFudChib29sIGltcG9ydGFudCkKICAgICB9CiAKICAgICBpZiAodmFsdWVzICYm
IHZhbHVlcy0+bGVuZ3RoKCkpIHsKLSAgICAgICAgbV9oYXNGb250RmFjZU9ubHlWYWx1ZXMgPSB0
cnVlOworICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMuc2V0Rm9udEZhY2VPbmx5KCk7CiAgICAg
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsIHZhbHVlcy5yZWxlYXNlKCks
IGltcG9ydGFudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTQyMDMsNyArNDE4
MCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnRXZWlnaHQoYm9vbCBpbXBvcnRhbnQpCiAg
ICAgfQogCiAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAgIG1f
aGFzRm9udEZhY2VPbmx5VmFsdWVzID0gdHJ1ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVz
LnNldEZvbnRGYWNlT25seSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRX
ZWlnaHQsIHZhbHVlcy5yZWxlYXNlKCksIGltcG9ydGFudCk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KQEAgLTY3NzUsOSArNjc1Miw4IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRl
U3R5bGVSdWxlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9yCiAg
ICAgICAgIG1fYWxsb3dJbXBvcnRSdWxlcyA9IG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMg
PSBmYWxzZTsKICAgICAgICAgUmVmUHRyPENTU1N0eWxlUnVsZT4gcnVsZSA9IENTU1N0eWxlUnVs
ZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCwgbV9sYXN0U2VsZWN0b3JMaW5lTnVtYmVyKTsKICAgICAg
ICAgcnVsZS0+YWRvcHRTZWxlY3RvclZlY3Rvcigqc2VsZWN0b3JzKTsKLSAgICAgICAgaWYgKG1f
aGFzRm9udEZhY2VPbmx5VmFsdWVzKQotICAgICAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFs
dWVzKCk7Ci0gICAgICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNl
ZFByb3BlcnRpZXMpKTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnJlbW92ZUZvbnRGYWNl
UHJvcGVydGllcygpOworICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVydGllcykpOwog
ICAgICAgICByZXN1bHQgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFN0eWxlT2JqZWN0
cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwogICAgICAgICBpZiAobV9ydWxlUmFuZ2VNYXApIHsK
QEAgLTY3OTksOCArNjc3NSw4IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxl
KFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9yCiBDU1NSdWxlKiBD
U1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSgpCiB7CiAgICAgbV9hbGxvd0ltcG9ydFJ1bGVz
ID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNlOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX251bVBhcnNlZFByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBDU1NQ
cm9wZXJ0eSogcHJvcGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07CisKKyAgICBmb3IgKENT
U1Byb3BlcnR5Q29udGFpbmVyOjppdGVyYXRvciBwcm9wZXJ0eSA9IG1fcGFyc2VkUHJvcGVydGll
cy5iZWdpbigpOyBwcm9wZXJ0eSAhPSBtX3BhcnNlZFByb3BlcnRpZXMuZW5kKCk7ICsrcHJvcGVy
dHkpIHsKICAgICAgICAgaW50IGlkID0gcHJvcGVydHktPmlkKCk7CiAgICAgICAgIGlmICgoaWQg
PT0gQ1NTUHJvcGVydHlGb250V2VpZ2h0IHx8IGlkID09IENTU1Byb3BlcnR5Rm9udFN0eWxlIHx8
IGlkID09IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQpICYmIHByb3BlcnR5LT52YWx1ZSgpLT5pc1By
aW1pdGl2ZVZhbHVlKCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBw
cm9wZXJ0eS0+bV92YWx1ZS5yZWxlYXNlKCk7CkBAIC02ODE1LDggKzY3OTEsOSBAQCBDU1NSdWxl
KiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSgpCiAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgfQogICAgIH0KKwogICAgIFJlZlB0cjxDU1NGb250RmFjZVJ1bGU+IHJ1bGUgPSBD
U1NGb250RmFjZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQpOwotICAgIHJ1bGUtPnNldERlY2xh
cmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9w
YXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpKTsKKyAgICBydWxlLT5zZXRE
ZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCks
IG1fcGFyc2VkUHJvcGVydGllcykpOwogICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIENTU0Zv
bnRGYWNlUnVsZSogcmVzdWx0ID0gcnVsZS5nZXQoKTsKICAgICBtX3BhcnNlZFN0eWxlT2JqZWN0
cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwpAQCAtNjg5MCw3ICs2ODY3LDcgQEAgQ1NTUnVsZSog
Q1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZShQYXNzT3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiBw
YWdlU2VsZWN0b3IpCiAgICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4g
c2VsZWN0b3JWZWN0b3I7CiAgICAgICAgIHNlbGVjdG9yVmVjdG9yLmFwcGVuZChwYWdlU2VsZWN0
b3IpOwogICAgICAgICBydWxlLT5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yKTsK
LSAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246
OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVy
dGllcykpOworICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVydGllcykpOwogICAgICAg
ICBwYWdlUnVsZSA9IHJ1bGUuZ2V0KCk7CiAgICAgICAgIG1fcGFyc2VkU3R5bGVPYmplY3RzLmFw
cGVuZChydWxlLnJlbGVhc2UoKSk7CiAgICAgfQpAQCAtNjkxMSwzNCArNjg4OCwxNiBAQCBDU1NS
dWxlKiBDU1NQYXJzZXI6OmNyZWF0ZU1hcmdpbkF0UnVsZShDU1NTZWxlY3Rvcjo6TWFyZ2luQm94
VHlwZSAvKiBtYXJnaW5Cb3ggKgogCiB2b2lkIENTU1BhcnNlcjo6c3RhcnREZWNsYXJhdGlvbnNG
b3JNYXJnaW5Cb3goKQogewotICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJv
eCA9IG1fbnVtUGFyc2VkUHJvcGVydGllczsKKyAgICBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZv
cmVNYXJnaW5Cb3ggPSBtX3BhcnNlZFByb3BlcnRpZXMuY291bnRBZGRlZFByb3BlcnRpZXMoKTsK
IH0KIAogdm9pZCBDU1NQYXJzZXI6OmVuZERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpCiB7CiAg
ICAgQVNTRVJUKG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCAhPSBJTlZBTElE
X05VTV9QQVJTRURfUFJPUEVSVElFUyk7Ci0gICAgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhtX251
bVBhcnNlZFByb3BlcnRpZXMgLSBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3gp
OworICAgIG1fcGFyc2VkUHJvcGVydGllcy5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKG1fcGFyc2Vk
UHJvcGVydGllcy5jb3VudEFkZGVkUHJvcGVydGllcygpIC0gbV9udW1QYXJzZWRQcm9wZXJ0aWVz
QmVmb3JlTWFyZ2luQm94KTsKICAgICBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5C
b3ggPSBJTlZBTElEX05VTV9QQVJTRURfUFJPUEVSVElFUzsKIH0KIAotdm9pZCBDU1NQYXJzZXI6
OmRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpCi17Ci0gICAgQVNTRVJUKG1faGFzRm9udEZhY2VP
bmx5VmFsdWVzKTsKLSAgICBpbnQgZGVsZXRlZFByb3BlcnRpZXMgPSAwOwotCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbnVtUGFyc2VkUHJvcGVydGllczsgKytpKSB7Ci0gICAgICAg
IENTU1Byb3BlcnR5KiBwcm9wZXJ0eSA9IG1fcGFyc2VkUHJvcGVydGllc1tpXTsKLSAgICAgICAg
aW50IGlkID0gcHJvcGVydHktPmlkKCk7Ci0gICAgICAgIGlmICgoaWQgPT0gQ1NTUHJvcGVydHlG
b250V2VpZ2h0IHx8IGlkID09IENTU1Byb3BlcnR5Rm9udFN0eWxlIHx8IGlkID09IENTU1Byb3Bl
cnR5Rm9udFZhcmlhbnQpICYmIHByb3BlcnR5LT52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpKSB7Ci0g
ICAgICAgICAgICBkZWxldGUgcHJvcGVydHk7Ci0gICAgICAgICAgICBkZWxldGVkUHJvcGVydGll
cysrOwotICAgICAgICB9IGVsc2UgaWYgKGRlbGV0ZWRQcm9wZXJ0aWVzKQotICAgICAgICAgICAg
bV9wYXJzZWRQcm9wZXJ0aWVzW2kgLSBkZWxldGVkUHJvcGVydGllc10gPSBtX3BhcnNlZFByb3Bl
cnRpZXNbaV07Ci0gICAgfQotCi0gICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzIC09IGRlbGV0ZWRQ
cm9wZXJ0aWVzOwotfQotCiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqIENTU1BhcnNlcjo6Y3JlYXRl
S2V5ZnJhbWVSdWxlKENTU1BhcnNlclZhbHVlTGlzdCoga2V5cykKIHsKICAgICAvLyBDcmVhdGUg
YSBrZXkgc3RyaW5nIGZyb20gdGhlIHBhc3NlZCBrZXlzCkBAIC02OTUzLDcgKzY5MTIsNyBAQCBX
ZWJLaXRDU1NLZXlmcmFtZVJ1bGUqIENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKENTU1Bh
cnNlclZhbHVlTGlzdCoga2V5cykKIAogICAgIFJlZlB0cjxXZWJLaXRDU1NLZXlmcmFtZVJ1bGU+
IGtleWZyYW1lID0gV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlOjpjcmVhdGUobV9zdHlsZVNoZWV0KTsK
ICAgICBrZXlmcmFtZS0+c2V0S2V5VGV4dChrZXlTdHJpbmcpOwotICAgIGtleWZyYW1lLT5zZXRE
ZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKDAsIG1fcGFyc2Vk
UHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAga2V5ZnJhbWUtPnNldERl
Y2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoMCwgbV9wYXJzZWRQ
cm9wZXJ0aWVzKSk7CiAKICAgICBjbGVhclByb3BlcnRpZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCmluZGV4IDhlM2ZlNzcuLjMwZWIwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkNTU0dyYWRpZW50VmFsdWUuaCIKICNpbmNsdWRlICJD
U1NQYXJzZXJWYWx1ZXMuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIgogI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgi
CiAjaW5jbHVkZSAiQ29sb3IuaCIKQEAgLTc1LDggKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZUNhY2hlKiBwcmltaXRpdmVWYWx1ZUNhY2hlKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVWYWx1ZUNhY2hlLmdldCgpOyB9CiAKICAgICAgICAg
dm9pZCBhZGRQcm9wZXJ0eShpbnQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBp
bXBvcnRhbnQpOwotICAgICAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSk7
Ci0gICAgICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyc2Vk
UHJvcGVydGllcyA+IDA7IH0KKyAgICAgICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29uc3QgeyBy
ZXR1cm4gIW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCk7IH0KIAogICAgICAgICBib29sIHBh
cnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgICAgICBib29sIHBhcnNl
U2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVByb3Bl
cnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKQEAgLTI1MiwxOCArMjUyLDE1IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPENTU1J1bGU+IG1fa2V5ZnJhbWU7CiAgICAgICAgIE93
blB0cjxNZWRpYVF1ZXJ5PiBtX21lZGlhUXVlcnk7CiAgICAgICAgIENTU1BhcnNlclZhbHVlTGlz
dCogbV92YWx1ZUxpc3Q7Ci0gICAgICAgIENTU1Byb3BlcnR5KiogbV9wYXJzZWRQcm9wZXJ0aWVz
OworICAgICAgICBDU1NQcm9wZXJ0eUNvbnRhaW5lciBtX3BhcnNlZFByb3BlcnRpZXM7CiAgICAg
ICAgIENTU1NlbGVjdG9yTGlzdCogbV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yOwogICAg
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWVDYWNoZT4gbV9wcmltaXRpdmVWYWx1ZUNhY2hl
OwotICAgICAgICB1bnNpZ25lZCBtX251bVBhcnNlZFByb3BlcnRpZXM7Ci0gICAgICAgIHVuc2ln
bmVkIG1fbWF4UGFyc2VkUHJvcGVydGllczsKICAgICAgICAgdW5zaWduZWQgbV9udW1QYXJzZWRQ
cm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94OwogCiAgICAgICAgIGludCBtX2luUGFyc2VTaG9ydGhh
bmQ7CiAgICAgICAgIGludCBtX2N1cnJlbnRTaG9ydGhhbmQ7CiAgICAgICAgIGJvb2wgbV9pbXBs
aWNpdFNob3J0aGFuZDsKIAotICAgICAgICBib29sIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzOwog
ICAgICAgICBib29sIG1faGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZTsKIAogICAgICAgICBB
dG9taWNTdHJpbmcgbV9kZWZhdWx0TmFtZXNwYWNlOwpAQCAtMzAxLDggKzI5OCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGNoZWNrRm9yT3JwaGFuZWRVbml0cygpOwog
Ci0gICAgICAgIHZvaWQgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0KICAgICAgICAgYm9v
bCBpc0dlbmVyYXRlZEltYWdlVmFsdWUoQ1NTUGFyc2VyVmFsdWUqKSBjb25zdDsKICAgICAgICAg
Ym9vbCBwYXJzZUdlbmVyYXRlZEltYWdlKFJlZlB0cjxDU1NWYWx1ZT4mKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYzMwZGRlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFuZHJhcyBCZWNz
aSA8YWJlY3NpQHdlYmtpdC5vcmc+LCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKKworI2luY2x1ZGUgIkNT
U1Byb3BlcnR5TmFtZXMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aXRlcmF0b3IgQ1NTUHJvcGVydHlDb250
YWluZXI6OmdldFByb3BlcnR5QnlJZChpbnQgcHJvcGVydHlJZCkKK3sKKyAgICByZXR1cm4gbV9w
cm9wZXJ0eVNldC5maW5kPGludCwgQ1NTUHJvcGVydHlJZEhhc2hUcmFuc2xhdG9yPihwcm9wZXJ0
eUlkKTsKK30KKworQ1NTUHJvcGVydHlDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIENTU1Byb3Bl
cnR5Q29udGFpbmVyOjpnZXRQcm9wZXJ0eUJ5SWQoaW50IHByb3BlcnR5SWQpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcHJvcGVydHlTZXQuZmluZDxpbnQsIENTU1Byb3BlcnR5SWRIYXNoVHJhbnNs
YXRvcj4ocHJvcGVydHlJZCk7Cit9CisKK0NTU1Byb3BlcnR5Q29udGFpbmVyOjppdGVyYXRvciBD
U1NQcm9wZXJ0eUNvbnRhaW5lcjo6YmVnaW4oKQoreworICAgIHJldHVybiBtX3Byb3BlcnR5U2V0
LmJlZ2luKCk7Cit9CisKK0NTU1Byb3BlcnR5Q29udGFpbmVyOjppdGVyYXRvciBDU1NQcm9wZXJ0
eUNvbnRhaW5lcjo6ZW5kKCkKK3sKKyAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC5lbmQoKTsKK30K
KworQ1NTUHJvcGVydHlDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIENTU1Byb3BlcnR5Q29udGFp
bmVyOjpiZWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvcGVydHlTZXQuYmVnaW4oKTsK
K30KKworQ1NTUHJvcGVydHlDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIENTU1Byb3BlcnR5Q29u
dGFpbmVyOjplbmQoKSBjb25zdAoreworICAgIHJldHVybiBtX3Byb3BlcnR5U2V0LmVuZCgpOwor
fQorCitDU1NQcm9wZXJ0eSYgQ1NTUHJvcGVydHlDb250YWluZXI6Omxhc3QoKQoreworICAgIEFT
U0VSVCghbV9wcm9wZXJ0eVNldC5pc0VtcHR5KCkpOworICAgIHJldHVybiBtX3Byb3BlcnR5U2V0
Lmxhc3QoKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6YWRkUHJvcGVydHkoaW50
IHByb3BlcnR5SWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCwg
aW50IHNob3J0aGFuZElELCBib29sIGltcGxpY2l0KQoreworICAgIEFTU0VSVChwcm9wZXJ0eUlk
KTsKKworICAgIENTU1Byb3BlcnR5IG5ld1Byb3BlcnR5KHByb3BlcnR5SWQsIHZhbHVlLCBpbXBv
cnRhbnQsIHNob3J0aGFuZElELCBpbXBsaWNpdCk7CisgICAgaXRlcmF0b3IgcHJvcGVydHkgPSBn
ZXRQcm9wZXJ0eUJ5SWQocHJvcGVydHlJZCk7CisKKyAgICBpZiAocHJvcGVydHkgIT0gbV9wcm9w
ZXJ0eVNldC5lbmQoKSkgeworICAgICAgICBpZiAocHJvcGVydHktPmlzSW1wb3J0YW50KCkgJiYg
IWltcG9ydGFudCkKKyAgICAgICAgICAgIG5ld1Byb3BlcnR5ID0gKnByb3BlcnR5OworICAgICAg
ICBtX3Byb3BlcnR5U2V0LnJlbW92ZShwcm9wZXJ0eSk7CisgICAgfQorICAgICsrbV9udW1BZGRl
ZFByb3BlcnRpZXM7CisgICAgbV9wcm9wZXJ0eVNldC5hZGQobmV3UHJvcGVydHkpOworfQorCit2
b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJZCkK
K3sKKyAgICBBU1NFUlQocHJvcGVydHlJZCk7CisgICAgaXRlcmF0b3IgcHJvcGVydHkgPSBnZXRQ
cm9wZXJ0eUJ5SWQocHJvcGVydHlJZCk7CisKKyAgICAtLW1fbnVtQWRkZWRQcm9wZXJ0aWVzOwor
ICAgIG1fcHJvcGVydHlTZXQucmVtb3ZlKHByb3BlcnR5KTsKK30KKwordm9pZCBDU1NQcm9wZXJ0
eUNvbnRhaW5lcjo6cmVtb3ZlRm9udEZhY2VQcm9wZXJ0aWVzKCkKK3sKKyAgICBpZiAoIW1faGFz
Rm9udEZhY2VPbmx5UHJvcGVydGllcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IGlkc1sz
XSA9IHtDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIENTU1Byb3BlcnR5Rm9udFN0eWxlLCBDU1NQcm9w
ZXJ0eUZvbnRWYXJpYW50fTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJS
QVlfTEVOR1RIKGlkcyk7ICsraSkgeworICAgICAgICBpdGVyYXRvciBwcm9wZXJ0eSA9IGdldFBy
b3BlcnR5QnlJZChpZHNbaV0pOworCisgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBtX3Byb3BlcnR5
U2V0LmVuZCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKHByb3BlcnR5
LT52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAgICAgICBtX3Byb3BlcnR5U2V0LnJl
bW92ZShwcm9wZXJ0eSk7CisgICAgICAgICAgICAtLW1fbnVtQWRkZWRQcm9wZXJ0aWVzOworICAg
ICAgICB9CisgICAgfQorCisgICAgbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzID0gZmFsc2U7
Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OnJlbW92ZUxhc3QoKQoreworICAgIEFT
U0VSVChtX3Byb3BlcnR5U2V0LnNpemUoKSk7CisgICAgLS1tX251bUFkZGVkUHJvcGVydGllczsK
KyAgICBtX3Byb3BlcnR5U2V0LnJlbW92ZUxhc3QoKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eUNv
bnRhaW5lcjo6cm9sbGJhY2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKQoreworICAgIEFTU0VSVCht
X3Byb3BlcnR5U2V0LnNpemUoKSA+PSBudW0pOworCisgICAgZm9yIChpbnQgcmVtb3ZlZFByb3Bl
cnRpZXMgPSAwOyByZW1vdmVkUHJvcGVydGllcyA8IG51bTsgKytyZW1vdmVkUHJvcGVydGllcykK
KyAgICAgICAgbV9wcm9wZXJ0eVNldC5yZW1vdmVMYXN0KCk7CisKKyAgICBtX251bUFkZGVkUHJv
cGVydGllcyAtPSBudW07Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OmNsZWFyKCkK
K3sKKyAgICBtX3Byb3BlcnR5U2V0LmNsZWFyKCk7CisgICAgbV9udW1BZGRlZFByb3BlcnRpZXMg
PSAwOworICAgIG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyA9IGZhbHNlOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydHlDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5l
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NzcwYmYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaApAQCAt
MCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4
LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPiwgVW5pdmVyc2l0eSBv
ZiBTemVnZWQKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2lmbmRlZiBDU1NQcm9wZXJ0eUNvbnRhaW5lcl9oCisjZGVmaW5lIENTU1Byb3Bl
cnR5Q29udGFpbmVyX2gKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCisjaW5jbHVkZSAiQ1NT
VmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0
SGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IHVuc2lnbmVkIGtJbmxp
bmVDYXBhY2l0eSA9IDMyOworCitjbGFzcyBDU1NQcm9wZXJ0eUNvbnRhaW5lciB7Citwcml2YXRl
OgorICAgIHN0cnVjdCBDU1NQcm9wZXJ0eUhhc2hGdW5jdGlvbnMgeworICAgICAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChDU1NQcm9wZXJ0eSBwcm9wZXJ0eSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHByb3BlcnR5Lm1faWQpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKENT
U1Byb3BlcnR5IGEsIENTU1Byb3BlcnR5IGIpIHsgcmV0dXJuIGEubV9pZCA9PSBiLm1faWQ7IH0K
KyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSBmYWxzZTsKKyAgICB9OworICAgIHN0cnVjdCBDU1NQcm9wZXJ0eUlkSGFzaFRyYW5zbGF0b3Ig
eworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChpbnQgaWQpIHsgQVNTRVJUKGlkID49IDAp
OyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlkKTsgfQorICAgICAgICBzdGF0aWMgYm9v
bCBlcXVhbChDU1NQcm9wZXJ0eSBwcm9wZXJ0eSwgaW50IGlkKSB7IHJldHVybiBwcm9wZXJ0eS5t
X2lkID09IGlkOyB9CisgICAgfTsKKyAgICB0eXBlZGVmIExpc3RIYXNoU2V0PENTU1Byb3BlcnR5
LCBrSW5saW5lQ2FwYWNpdHksIENTU1Byb3BlcnR5SGFzaEZ1bmN0aW9ucz4gQ1NTUHJvcGVydHlM
aXN0SGFzaFNldDsKKworcHVibGljOgorICAgIHR5cGVkZWYgQ1NTUHJvcGVydHlMaXN0SGFzaFNl
dDo6aXRlcmF0b3IgaXRlcmF0b3I7CisgICAgdHlwZWRlZiBDU1NQcm9wZXJ0eUxpc3RIYXNoU2V0
Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKKworICAgIENTU1Byb3BlcnR5Q29udGFp
bmVyKCkKKyAgICAgICAgOiBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXMoZmFsc2UpCisgICAg
ICAgICwgbV9udW1BZGRlZFByb3BlcnRpZXMoMCkKKyAgICB7CisgICAgfQorCisgICAgQ1NTUHJv
cGVydHlDb250YWluZXI6Oml0ZXJhdG9yIGJlZ2luKCk7CisgICAgQ1NTUHJvcGVydHlDb250YWlu
ZXI6Oml0ZXJhdG9yIGVuZCgpOworICAgIENTU1Byb3BlcnR5Q29udGFpbmVyOjpjb25zdF9pdGVy
YXRvciBiZWdpbigpIGNvbnN0OworICAgIENTU1Byb3BlcnR5Q29udGFpbmVyOjpjb25zdF9pdGVy
YXRvciBlbmQoKSBjb25zdDsKKyAgICBDU1NQcm9wZXJ0eSYgbGFzdCgpOworCisgICAgdW5zaWdu
ZWQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5U2V0LnNpemUoKTsgfQorICAgIGlu
dCBjb3VudEFkZGVkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQWRkZWRQcm9wZXJ0
aWVzOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVNldC5p
c0VtcHR5KCk7IH0KKworICAgIHZvaWQgc2V0Rm9udEZhY2VPbmx5KCkgeyBtX2hhc0ZvbnRGYWNl
T25seVByb3BlcnRpZXMgPSB0cnVlOyB9CisKKyAgICB2b2lkIGFkZFByb3BlcnR5KGludCBwcm9w
ZXJ0eUlkLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQsIGludCBzaG9ydGhh
bmRJRCA9IDAsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSk7CisKKyAgICB2b2lkIHJlbW92ZVByb3Bl
cnR5KGludCBwcm9wZXJ0eUlkKTsKKyAgICB2b2lkIHJlbW92ZUZvbnRGYWNlUHJvcGVydGllcygp
OworICAgIHZvaWQgcmVtb3ZlTGFzdCgpOworCisgICAgdm9pZCByb2xsYmFja0xhc3RQcm9wZXJ0
aWVzKGludCk7CisgICAgdm9pZCBjbGVhcigpOworICAgIENTU1Byb3BlcnR5Q29udGFpbmVyOjpp
dGVyYXRvciBnZXRQcm9wZXJ0eUJ5SWQoaW50IHByb3BlcnR5SWQpOworICAgIENTU1Byb3BlcnR5
Q29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBnZXRQcm9wZXJ0eUJ5SWQoaW50IHByb3BlcnR5SWQp
IGNvbnN0OworCitwcml2YXRlOgorCisgICAgYm9vbCBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRp
ZXM7CisgICAgaW50IG1fbnVtQWRkZWRQcm9wZXJ0aWVzOworICAgIENTU1Byb3BlcnR5TGlzdEhh
c2hTZXQgbV9wcm9wZXJ0eVNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIENTU1Byb3BlcnR5Q29udGFpbmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TVkdDU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5j
cHAKaW5kZXggZjNiNWFjMy4uOGNkM2MwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NWR0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDU1NJbml0aWFsVmFsdWUuaCIKICNpbmNs
dWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNT
U1Byb3BlcnR5Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2lu
Y2x1ZGUgIkNTU1F1aXJrUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdv
cmRzLmgiCkBAIC0yODMsMTAgKzI4NCwxMCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VTVkdWYWx1
ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKENT
U1Byb3BlcnR5TWFya2VyU3RhcnQsIGltcG9ydGFudCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGlmIChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKSB7Ci0gICAgICAgICAgICBy
b2xsYmFja0xhc3RQcm9wZXJ0aWVzKDEpOworICAgICAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVz
LnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAg
ICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzIC0gMV0tPnZhbHVlKCk7CisgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2Vk
UHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlNYXJrZXJNaWQsIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eU1hcmtlckVuZCwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgIG1faW1wbGljaXRT
aG9ydGhhbmQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250
RmFjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5j
cHAKaW5kZXggNzcwYTY4Ni4uNGZlMTg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRG
YWNlRWxlbWVudC5jcHAKQEAgLTI5OSw4ICsyOTksOCBAQCB2b2lkIFNWR0ZvbnRGYWNlRWxlbWVu
dDo6cmVidWlsZEZvbnRGYWNlKCkKIAogICAgIC8vIFBhcnNlIGluLW1lbW9yeSBDU1MgcnVsZXMK
ICAgICBDU1NQcm9wZXJ0eSBzcmNQcm9wZXJ0eShDU1NQcm9wZXJ0eVNyYywgbGlzdCk7Ci0gICAg
Y29uc3QgQ1NTUHJvcGVydHkqIHNyY1Byb3BlcnR5UmVmID0gJnNyY1Byb3BlcnR5OwotICAgIG1f
c3R5bGVEZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcygmc3JjUHJvcGVydHlSZWYsIDEp
OworICAgIGNvbnN0IENTU1Byb3BlcnR5JiBzcmNQcm9wZXJ0eVJlZiA9IHNyY1Byb3BlcnR5Owor
ICAgIG1fc3R5bGVEZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydHkoc3JjUHJvcGVydHlSZWYp
OwogCiAgICAgaWYgKGRlc2NyaWJlc1BhcmVudEZvbnQpIHsgICAgCiAgICAgICAgIC8vIFRyYXZl
cnNlIHBhcnNlZCBDU1MgdmFsdWVzIGFuZCBhc3NvY2lhdGUgQ1NTRm9udEZhY2VTcmNWYWx1ZSBl
bGVtZW50cyB3aXRoIG91cnNlbHZlcy4KLS0gCjEuNy42Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104869</attachid>
            <date>2011-08-23 11:15:17 -0700</date>
            <delta_ts>2011-11-08 03:25:26 -0800</delta_ts>
            <desc>updated to ToT</desc>
            <filename>0001-Bug-19417-Refactor-the-CSSProperty-handling-infrastr.patch</filename>
            <type>text/plain</type>
            <size>44204</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSBjNDViNTkyODVkNGM1YTY0MDg1ZWNjNWI0ZDViZTYxOWYzYTEzNjc2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFiZWNzaUB3ZWJraXQub3JnPgpEYXRl
OiBGcmksIDE5IEF1ZyAyMDExIDEwOjUzOjI2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gQnVnIDE5
NDE3IC0gUmVmYWN0b3IgdGhlIENTU1Byb3BlcnR5IGhhbmRsaW5nIGluZnJhc3RydWN0dXJlCiBv
ZiBDU1NQYXJzZXIKCi0tLQogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDEgKwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgNzMgKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qICAgICAgfCAgICA4ICsrCiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogIHwgICAgOCArKwogU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAgfCAgIDIzICsr
Ky0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oICAgfCAg
ICA5ICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCAgICAgICAgICAgICAgICAg
IHwgIDEyMyArKysrKystLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
aCAgICAgICAgICAgICAgICAgICAgfCAgIDExICstLQogU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
b3BlcnR5Q29udGFpbmVyLmNwcCAgICAgICB8ICAxMzcgKysrKysrKysrKysrKysrKysrKysrCiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaCAgICAgICAgIHwgICA4OCAr
KysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcCAgICAgICAg
ICAgICAgIHwgICAgNSArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5j
cHAgICAgICAgICB8ICAgIDQgKy0KIDE2IGZpbGVzIGNoYW5nZWQsIDM5NiBpbnNlcnRpb25zKCsp
LCAxMDkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5Q29udGFpbmVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3
OWY1OWFjLi5jZmVhOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDQwLDYgKzQ0MCw3IEBA
IFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCiAgICAg
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUuY3BwCiAgICAgY3NzL0NTU1Byb3BlcnR5LmNwcAor
ICAgIGNzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAKICAgICBjc3MvQ1NTUHJvcGVydHlMb25n
aGFuZC5jcHAKICAgICBjc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcAogICAgIGNzcy9DU1NS
ZWZsZWN0VmFsdWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJkNDRlNS4uZmZkMzgyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDc2IEBACisyMDExLTA4LTE5ICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZWZhY3RvciB0aGUgQ1NTUHJvcGVydHkgaGFuZGxpbmcgaW5m
cmFzdHJ1Y3R1cmUgb2YgQ1NTUGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTQxNworCisgICAgICAgIEltcGxlbWVudCBhIExpc3RIYXNoU2V0
IGJhc2VkIGNvbnRhaW5lciBjbGFzcyB0byBtYW5hZ2UgQ1NTUHJvcGVydGllcywgZWxpbWluYXRl
IHRoZSBjdXJyZW50CisgICAgICAgIHJhdyBwb2ludGVyIGJhc2VkIG1lY2hhbmlzbSBmcm9tIENT
U1BhcnNlciBhbmQgYXV0b21hdGljYWxseSBkaXNjYXJkIGR1cGxpY2F0ZSBwcm9wZXJ0aWVzLgor
ICAgICAgICBJbiBhIGZvbGxvdy11cCBDU1NQcm9wZXJ0eUNvbnRhaW5lciBjYW4gYWxzbyBiZSB1
c2VkIHRvIGV4dHJhY3QgdGhlIHByb3BlcnR5IGhhbmRsaW5nIGxvZ2ljCisgICAgICAgIGZyb20g
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24gd2hpY2ggY3VycmVudGx5IG1haW50YWlucyBpdHMg
b3duIGZvcmsgb2YgaW5mcmFzdHJ1Y3R1cmUKKyAgICAgICAgZm9yIG1hbmFnaW5nIHBhcnNlZCBw
cm9wZXJ0aWVzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueToKKyAgICAgICAgKiBjc3MvQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjphZGRQYXJzZWRQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKiBjc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpDU1NQYXJzZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjp+Q1NTUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRkUHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpjbGVhclByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZUZvbnRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udFZh
cmlhbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRXZWlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnN0YXJ0RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6ZW5kRGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2Vy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Omhhc1Byb3BlcnRpZXMpOgorICAgICAg
ICAqIGNzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OkNTU1Byb3BlcnR5Q29udGFpbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpnZXRQcm9wZXJ0eUJ5SWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmJlZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlDb250YWluZXI6Omxhc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250
YWluZXI6OmFkZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFp
bmVyOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRh
aW5lcjo6cmVtb3ZlRm9udEZhY2VQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5Q29udGFpbmVyOjpyZW1vdmVMYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5Q29udGFpbmVyOjpyb2xsYmFja0xhc3RQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpjbGVhclByb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9D
U1NQcm9wZXJ0eUNvbnRhaW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5Q29udGFpbmVyOjpDU1NQcm9wZXJ0eUhhc2hGdW5jdGlvbnM6Omhhc2gpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OkNTU1Byb3BlcnR5SGFzaEZ1bmN0aW9uczo6
ZXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OkNTU1Byb3Bl
cnR5SWRIYXNoVHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eUNvbnRhaW5lcjo6Q1NTUHJvcGVydHlJZEhhc2hUcmFuc2xhdG9yOjplcXVhbCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlDb250YWluZXI6OmNvdW50QWRkZWRQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjppc0VtcHR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5Q29udGFpbmVyOjpzZXRGb250RmFjZU9ubHkpOgorICAgICAgICAqIGNz
cy9TVkdDU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNW
R1ZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6cmVidWlsZEZvbnRGYWNlKToKKwogMjAxMS0w
OC0yMyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZWR1Y2UgdGhlIGFtb3VudCBvZiBSZW5kZXJMYXllciByZWN0YW5nbGVzJyB1cGRhdGUgd2hl
biBzY3JvbGxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDNhYzI1MjUuLjUx
ZDM4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtOTc3LDYgKzk3Nyw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlTWFwcGluZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmggXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eUNvbnRhaW5lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCA1YWJmZGJiLi43YTk4Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00OTMsNiArNDkzLDcg
QEAKICAgICAgICAgICAgICdjc3MvQ1NTUGFyc2VyVmFsdWVzLmgnLAogICAgICAgICAgICAgJ2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHkuaCcs
CisgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmgnLAogICAgICAgICAgICAg
J2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1JlZmxl
Y3RWYWx1ZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTUmVmbGVjdGlvbkRpcmVjdGlvbi5oJywK
QEAgLTIzNDgsNiArMjM0OSw3IEBACiAgICAgICAgICAgICAnY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
Q2FjaGUuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCcs
CiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5LmNwcCcsCisgICAgICAgICAgICAnY3NzL0NT
U1Byb3BlcnR5Q29udGFpbmVyLmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Byb3BlcnR5TG9u
Z2hhbmQuY3BwJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oJywKICAg
ICAgICAgICAgICdjc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmlu
ZGV4IGE5NGMyNTIuLjA0NzI2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC00MTEsNiArNDExLDcgQEAg
U09VUkNFUyArPSBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBcCiAgICAgY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlQ2FjaGUuY3BwIFwKICAgICBjc3MvQ1NTUHJvcGVydHkuY3BwIFwKKyAg
ICBjc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwIFwKICAgICBjc3MvQ1NTUHJvcGVydHlMb25n
aGFuZC5jcHAgXAogICAgIGNzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIFwKICAgICBjc3Mv
Q1NTUmVmbGVjdFZhbHVlLmNwcCBcCkBAIC0xNDE0LDYgKzE0MTUsNyBAQCBIRUFERVJTICs9IFwK
ICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
Q2FjaGUuaCBcCiAgICAgY3NzL0NTU1Byb3BlcnR5LmggXAorICAgIGNzcy9DU1NQcm9wZXJ0eUNv
bnRhaW5lci5oIFwKICAgICBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oIFwKICAgICBjc3MvQ1NT
UmVmbGVjdFZhbHVlLmggXAogICAgIGNzcy9DU1NSdWxlLmggXApAQCAtMTQyOCw2ICsxNDMwLDcg
QEAgSEVBREVSUyArPSBcCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaCBcCiAgICAgY3NzL0NTU1Rp
bWluZ0Z1bmN0aW9uVmFsdWUuaCBcCiAgICAgY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmggXAor
ICAgIGNzcy9DU1NWYWx1ZS5oIFwKICAgICBjc3MvQ1NTVmFsdWVMaXN0LmggXAogICAgIGNzcy9D
U1NXcmFwU2hhcGVzLmggXAogICAgIGNzcy9Gb250RmFtaWx5VmFsdWUuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDcyYmZlMzguLjYzYzli
YWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBA
IC0zMjk1OCw2ICszMjk1OCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTUHJvcGVydHlDb250YWluZXIuY3BwIgorCQkJCT4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTUHJvcGVydHlD
b250YWluZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5cY3NzXENTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAyNDc0ZDUxLi4xZTdmNzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDUsNiArNDQ1LDggQEAKIAkJMUFCMUFFN0EwQzA1
MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFBRTc4MEMwNTFGREUwMDEzOUY0RiAvKiB6b29t
SW5DdXJzb3IucG5nICovOyB9OwogCQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91
dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBQjFBRTc5MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyAqLzsgfTsK
IAkJMUFCMzNEQTUxMjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjMzREE0MTI1NTFFMzIw
MDI0NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgKi87IH07CisJCTFBQjQ0QTBDMTM2NzJDRkYwMDA4
Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI0NEEwQjEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJv
cGVydHlDb250YWluZXIuY3BwICovOyB9OworCQkxQUI0NEEwRTEzNjcyRDIwMDAwODc3N0UgLyog
Q1NTUHJvcGVydHlDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBQjQ0QTBEMTM2NzJEMjAwMDA4Nzc3RSAvKiBDU1NQcm9wZXJ0eUNvbnRh
aW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTFBQjdGQzY4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RkM0NzBBOEI5MkVDMDBE
OUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuY3BwICovOyB9OwogCQkxQUI3RkM2OTBBOEI5MkVDMDBE
OUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBQjdGQzQ4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRv
ci5oICovOyB9OwogCQkxQUI3RkM2QjBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdG
QzRBMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24uY3BwICovOyB9OwpAQCAtNjk0
NSw2ICs2OTQ3LDggQEAKIAkJMUFCMUFFNzgwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNv
ci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBp
bWFnZS5wbmc7IHBhdGggPSB6b29tSW5DdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQUIxQUU3OTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7
IHBhdGggPSB6b29tT3V0Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUFCMzNEQTQxMjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBu
YW1lID0gSU9LaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
SU9LaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxQUI0NEEw
QjEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJvcGVydHlDb250YWluZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUHJvcGVydHlDb250YWluZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUI0NEEwRDEzNjcyRDIwMDAwODc3N0UgLyogQ1NT
UHJvcGVydHlDb250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NT
UHJvcGVydHlDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0ZD
NDcwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUGF0aEV2YWx1YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFBQjdGQzQ4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBhdGhFdmFsdWF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0ZDNDkwQThCOTJFQzAwRDlEMzdCIC8q
IFhQYXRoRXZhbHVhdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWFBhdGhFdmFsdWF0
b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkzMzQsNiArMTkzMzgsOCBA
QAogCQlGNTIzRDE4NDAyREU0MkU4MDE4NjM1Q0EgLyogY3NzICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQUI0NEEwRDEzNjcyRDIwMDAwODc3N0UgLyog
Q1NTUHJvcGVydHlDb250YWluZXIuaCAqLywKKwkJCQkxQUI0NEEwQjEzNjcyQ0ZGMDAwODc3N0Ug
LyogQ1NTUHJvcGVydHlDb250YWluZXIuY3BwICovLAogCQkJCTkzQ0E0QzlDMDlERjkzRkEwMERG
ODY3NyAvKiBtYWtldG9rZW5pemVyICovLAogCQkJCUE4MEU2Q0RBMEExOTg5Q0EwMDdGQjhDNSAv
KiBDb3VudGVyLmggKi8sCiAJCQkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3RkU0IC8qIENvdW50ZXIu
aWRsICovLApAQCAtMjA2NTYsNiArMjA2NjIsNyBAQAogCQkJCUU0OUJEOUZBMTMxRkQyRUQwMDND
NTZGMCAvKiBDU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUVE
OEFDMzBDQzQ5QkUwMDBCRkM1NTcgLyogQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTgwRTZDRkYwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1Byb3BlcnR5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQkxQUI0NEEwRTEzNjcyRDIwMDAwODc3N0UgLyogQ1NTUHJvcGVy
dHlDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNkVDRDQ1MEYyNTJGMzcwMEJERTI3
MSAvKiBDU1NQcm9wZXJ0eUxvbmdoYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTY1ODBGNDA5
RDEyQjIwMDAwRTYxRDcgLyogQ1NTUHJvcGVydHlOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODJFM0Q4REYxMjJFQTBEMTAwM0FFNUJDIC8qIENTU1Byb3BlcnR5U291cmNlRGF0YS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yMzkzOCw2ICsyMzk0NSw3IEBACiAJCQkJQTgwRTZEMDUwQTE5ODlDQTAw
N0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0OUJE
QTBCMTMxRkQzRTUwMDNDNTZGMCAvKiBDU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4MEU2Q0Y3MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcm9wZXJ0eS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkxQUI0NEEwQzEzNjcyQ0ZGMDAwODc3N0UgLyogQ1NTUHJvcGVy
dHlDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2RUNENDYwRjI1MkYzNzAwQkRF
MjcxIC8qIENTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCQTc2
Q0ExMUQyMEU1MDAwNEMyMDFDIC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODJFM0Q4REUxMjJFQTBEMTAwM0FFNUJDIC8qIENTU1Byb3BlcnR5U291cmNlRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CmluZGV4IDkwYjVlMTQuLjVk
NzUwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpAQCAtMzIzLDkgKzMyMyw5IEBAIHdlYmtp
dF92YWx1ZToKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4o
cGFyc2VyKTsKICAgICAgICAgaWYgKCQ0KSB7CiAgICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9
IHAtPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2Vk
UHJvcGVydGllcyA9IHAtPm1fbnVtUGFyc2VkUHJvcGVydGllczsKKyAgICAgICAgICAgIGludCBv
bGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50QWRkZWRQcm9w
ZXJ0aWVzKCk7CiAgICAgICAgICAgICBpZiAoIXAtPnBhcnNlVmFsdWUocC0+bV9pZCwgcC0+bV9p
bXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+
bV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAg
ICAgICAgcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9w
YXJzZWRQcm9wZXJ0aWVzLmNvdW50QWRkZWRQcm9wZXJ0aWVzKCkgLSBvbGRQYXJzZWRQcm9wZXJ0
aWVzKTsKICAgICAgICAgICAgIGRlbGV0ZSBwLT5tX3ZhbHVlTGlzdDsKICAgICAgICAgICAgIHAt
Pm1fdmFsdWVMaXN0ID0gMDsKICAgICAgICAgfQpAQCAtMTI3MywxMCArMTI3MywxMCBAQCBkZWNs
YXJhdGlvbjoKICAgICAgICAgYm9vbCBpc1Byb3BlcnR5UGFyc2VkID0gZmFsc2U7CiAgICAgICAg
IGlmICgkMSAmJiAkNCkgewogICAgICAgICAgICAgcC0+bV92YWx1ZUxpc3QgPSBwLT5zaW5rRmxv
YXRpbmdWYWx1ZUxpc3QoJDQpOwotICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMg
PSBwLT5tX251bVBhcnNlZFByb3BlcnRpZXM7CisgICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJv
cGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVydGllcy5jb3VudEFkZGVkUHJvcGVydGllcygpOwog
ICAgICAgICAgICAgJCQgPSBwLT5wYXJzZVZhbHVlKCQxLCAkNSk7CiAgICAgICAgICAgICBpZiAo
ISQkKQotICAgICAgICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9udW1Q
YXJzZWRQcm9wZXJ0aWVzIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAg
cC0+bV9wYXJzZWRQcm9wZXJ0aWVzLnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9wYXJzZWRQ
cm9wZXJ0aWVzLmNvdW50QWRkZWRQcm9wZXJ0aWVzKCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpc1Byb3BlcnR5UGFyc2VkID0gdHJ1
ZTsKICAgICAgICAgICAgIGRlbGV0ZSBwLT5tX3ZhbHVlTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDFlNmZlMjEuLjll
MjM2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uLmNwcApAQCAtNzMsNyArNzMsNyBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBjb25zdCBWZQogICAg
IC8vIEZJWE1FOiBUaGlzIGFsbG93cyBkdXBsaWNhdGUgcHJvcGVydGllcy4KIH0KIAotQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUq
IHBhcmVudCwgY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICogcHJvcGVydGllcywgaW50IG51bVBy
b3BlcnRpZXMpCitDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBDU1NQcm9wZXJ0eUNvbnRhaW5lciYgcHJvcGVydGll
cykKICAgICA6IENTU1N0eWxlRGVjbGFyYXRpb24ocGFyZW50KQogICAgICwgbV9ub2RlKDApCiAg
ICAgLCBtX3N0cmljdFBhcnNpbmcoIXBhcmVudCB8fCBwYXJlbnQtPnVzZVN0cmljdFBhcnNpbmco
KSkKQEAgLTgxLDExICs4MSwxNSBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBjb25zdCBDUwogICAgICwgbV9p
dGVyYXRvckNvdW50KDApCiAjZW5kaWYKIHsKKyAgICB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzID0g
cHJvcGVydGllcy5zaXplKCk7CisKKyAgICBpZiAoIW51bVByb3BlcnRpZXMpCisgICAgICAgIHJl
dHVybjsKKwogICAgIG1fcHJvcGVydGllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bVByb3Bl
cnRpZXMpOwogICAgIEhhc2hNYXA8aW50LCBib29sPiBjYW5kaWRhdGVzOwotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7Ci0gICAgICAgIGNvbnN0IENTU1Byb3Bl
cnR5ICpwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaV07Ci0gICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7
CisKKyAgICBmb3IgKENTU1Byb3BlcnR5Q29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBwcm9wZXJ0
eSA9IHByb3BlcnRpZXMuYmVnaW4oKTsgcHJvcGVydHkgIT0gcHJvcGVydGllcy5lbmQoKTsgKytw
cm9wZXJ0eSkgewogICAgICAgICBib29sIGltcG9ydGFudCA9IHByb3BlcnR5LT5pc0ltcG9ydGFu
dCgpOwogICAgICAgICBpZiAoY2FuZGlkYXRlcy5jb250YWlucyhwcm9wZXJ0eS0+aWQoKSkpIHsK
ICAgICAgICAgICAgIGlmICghaW1wb3J0YW50ICYmIGNhbmRpZGF0ZXMuZ2V0KHByb3BlcnR5LT5p
ZCgpKSkKQEAgLTYzOSwxMyArNjQzLDE4IEBAIHZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b246OnBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9uCiAgICAg
c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCi12b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjphZGRQYXJzZWRQcm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCogcHJvcGVy
dGllcywgaW50IG51bVByb3BlcnRpZXMpCit2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjphZGRQYXJzZWRQcm9wZXJ0aWVzKENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9wZXJ0aWVzKQog
ewogICAgIEFTU0VSVCghbV9pdGVyYXRvckNvdW50KTsKIAorICAgIHVuc2lnbmVkIG51bVByb3Bl
cnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKKworICAgIGlmICghbnVtUHJvcGVydGllcykKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgbV9wcm9wZXJ0aWVzLnJlc2VydmVDYXBhY2l0eShudW1Qcm9w
ZXJ0aWVzKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkKLSAg
ICAgICAgYWRkUGFyc2VkUHJvcGVydHkoKnByb3BlcnRpZXNbaV0pOworICAgIGZvciAoQ1NTUHJv
cGVydHlDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIHAgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IHAg
IT0gcHJvcGVydGllcy5lbmQoKTsgKytwKQorICAgICAgICBhZGRQYXJzZWRQcm9wZXJ0eSgqcCk7
CiAKICAgICAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGQgaGF2ZSBhIGNhbGwgdG8gc2V0
TmVlZHNTdHlsZVJlY2FsYygpIGlmIHNvbWV0aGluZyBjaGFuZ2VkLiBXZSBtYXkgYWxzbyB3aXNo
IHRvIGFkZAogICAgIC8vIGEgbm90aWZ5Q2hhbmdlZCBhcmd1bWVudCB0byB0aGlzIGZ1bmN0aW9u
IHRvIGZvbGxvdyB0aGUgbW9kZWwgb2Ygb3RoZXIgZnVuY3Rpb25zIGluIHRoaXMgY2xhc3MuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4
IGVhOGFiM2YuLmI4MzgyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbi5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eUNvbnRhaW5lci5oIgogI2luY2x1
ZGUgIktVUkxIYXNoLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3
dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTY3LDkgKzY4LDkgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihwYXJlbnRS
dWxlKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiBjcmVhdGUoQ1NTUnVsZSogcGFyZW50UnVsZSwgY29uc3QgQ1NTUHJvcGVydHkqIGNv
bnN0KiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gY3JlYXRlKENTU1J1bGUqIHBhcmVudFJ1bGUs
IENTU1Byb3BlcnR5Q29udGFpbmVyJiBwcm9wZXJ0aWVzKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihwYXJlbnRSdWxlLCBwcm9w
ZXJ0aWVzLCBudW1Qcm9wZXJ0aWVzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24ocGFyZW50UnVsZSwgcHJvcGVydGllcykpOwogICAgIH0K
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gY3JlYXRl
KGNvbnN0IFZlY3RvcjxDU1NQcm9wZXJ0eT4mIHByb3BlcnRpZXMpCiAgICAgewpAQCAtMTI0LDcg
KzEyNSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEJlc2lkZXMgYWRkaW5nIHRoZSBwcm9wZXJ0aWVz
LCB0aGlzIGFsc28gcmVtb3ZlcyBhbnkgZXhpc3RpbmcgcHJvcGVydGllcyB3aXRoIHRoZXNlIElE
cy4KICAgICAvLyBJdCBkb2VzIG5vIG5vdGlmaWNhdGlvbiBzaW5jZSBpdCdzIGNhbGxlZCBieSB0
aGUgcGFyc2VyLgotICAgIHZvaWQgYWRkUGFyc2VkUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0
eSogY29uc3QgKiwgaW50IG51bVByb3BlcnRpZXMpOworICAgIHZvaWQgYWRkUGFyc2VkUHJvcGVy
dGllcyhDU1NQcm9wZXJ0eUNvbnRhaW5lciYgcHJvcGVydGllcyk7CiAgICAgLy8gVGhpcyBkb2Vz
IG5vIGNoYW5nZSBub3RpZmljYXRpb25zIHNpbmNlIGl0J3Mgb25seSBjYWxsZWQgYnkgY3JlYXRl
TWFya3VwLgogICAgIHZvaWQgYWRkUGFyc2VkUHJvcGVydHkoY29uc3QgQ1NTUHJvcGVydHkmKTsK
ICAKQEAgLTE0OSw3ICsxNTAsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uKCk7CiAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NT
UnVsZSogcGFyZW50UnVsZSwgY29uc3QgVmVjdG9yPENTU1Byb3BlcnR5PiYpOwotICAgIENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudFJ1bGUsIGNvbnN0IENTU1Byb3Bl
cnR5KiBjb25zdCAqLCBpbnQgbnVtUHJvcGVydGllcyk7CisgICAgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24oQ1NTUnVsZSogcGFyZW50UnVsZSwgQ1NTUHJvcGVydHlDb250YWluZXImIHByb3Bl
cnRpZXMpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uPiBtYWtlTXV0YWJsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGQ2ZjQy
NzcuLmU1ZWIxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xNjcsMTQgKzE2Nywx
MCBAQCBDU1NQYXJzZXI6OkNTU1BhcnNlcihib29sIHN0cmljdFBhcnNpbmcpCiAgICAgLCBtX2lk
KDApCiAgICAgLCBtX3N0eWxlU2hlZXQoMCkKICAgICAsIG1fdmFsdWVMaXN0KDApCi0gICAgLCBt
X3BhcnNlZFByb3BlcnRpZXMoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHkqKj4oZmFzdE1hbGxvYygz
MiAqIHNpemVvZihDU1NQcm9wZXJ0eSopKSkpCi0gICAgLCBtX251bVBhcnNlZFByb3BlcnRpZXMo
MCkKLSAgICAsIG1fbWF4UGFyc2VkUHJvcGVydGllcygzMikKLSAgICAsIG1fbnVtUGFyc2VkUHJv
cGVydGllc0JlZm9yZU1hcmdpbkJveChJTlZBTElEX05VTV9QQVJTRURfUFJPUEVSVElFUykKKyAg
ICAsIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCgwKQogICAgICwgbV9pblBh
cnNlU2hvcnRoYW5kKDApCiAgICAgLCBtX2N1cnJlbnRTaG9ydGhhbmQoMCkKICAgICAsIG1faW1w
bGljaXRTaG9ydGhhbmQoZmFsc2UpCi0gICAgLCBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyhmYWxz
ZSkKICAgICAsIG1faGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZShmYWxzZSkKICAgICAsIG1f
ZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSkKICAgICAsIG1faW5TdHlsZVJ1bGVPckRlY2xhcmF0
aW9uKGZhbHNlKQpAQCAtMTk4LDkgKzE5NCw2IEBAIENTU1BhcnNlcjo6Q1NTUGFyc2VyKGJvb2wg
c3RyaWN0UGFyc2luZykKIAogQ1NTUGFyc2VyOjp+Q1NTUGFyc2VyKCkKIHsKLSAgICBjbGVhclBy
b3BlcnRpZXMoKTsKLSAgICBmYXN0RnJlZShtX3BhcnNlZFByb3BlcnRpZXMpOwotCiAgICAgZGVs
ZXRlIG1fdmFsdWVMaXN0OwogCiAgICAgZmFzdEZyZWUobV9kYXRhKTsKQEAgLTQ2MSwxMSArNDU0
LDEwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5CiAgICAgbV9ydWxlID0gMDsKIAogICAgIGJv
b2wgb2sgPSBmYWxzZTsKLSAgICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpCi0gICAgICAg
IGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotICAgIGlmIChtX251bVBhcnNlZFByb3BlcnRp
ZXMpIHsKKyAgICBtX3BhcnNlZFByb3BlcnRpZXMucmVtb3ZlRm9udEZhY2VQcm9wZXJ0aWVzKCk7
CisgICAgaWYgKCFtX3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG9rID0g
dHJ1ZTsKLSAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQ
cm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICBkZWNsYXJhdGlvbi0+
YWRkUGFyc2VkUHJvcGVydGllcyhtX3BhcnNlZFByb3BlcnRpZXMpOwogICAgICAgICBjbGVhclBy
b3BlcnRpZXMoKTsKICAgICB9CiAKQEAgLTQ4Nyw3ICs0NzksNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VDb2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBzdHJp
Y3QpCiAgICAgaWYgKCFwYXJzZXIucGFyc2VDb2xvcihkdW1teVN0eWxlRGVjbGFyYXRpb24uZ2V0
KCksIHN0cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENTU1ZhbHVlKiB2YWx1
ZSA9IHBhcnNlci5tX3BhcnNlZFByb3BlcnRpZXNbMF0tPnZhbHVlKCk7CisgICAgQ1NTVmFsdWUq
IHZhbHVlID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICBp
ZiAodmFsdWUtPmNzc1ZhbHVlVHlwZSgpICE9IENTU1ZhbHVlOjpDU1NfUFJJTUlUSVZFX1ZBTFVF
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTUwOCw3ICs1MDAsNyBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VDb2xvcihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRpb24s
IGNvbnN0IFN0cmluZwogICAgIGNzc3l5cGFyc2UodGhpcyk7CiAgICAgbV9ydWxlID0gMDsKIAot
ICAgIHJldHVybiAobV9udW1QYXJzZWRQcm9wZXJ0aWVzICYmIG1fcGFyc2VkUHJvcGVydGllc1sw
XS0+bV9pZCA9PSBDU1NQcm9wZXJ0eUNvbG9yKTsKKyAgICByZXR1cm4gKCFtX3BhcnNlZFByb3Bl
cnRpZXMuaXNFbXB0eSgpICYmIG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkuaWQoKSA9PSBDU1NQ
cm9wZXJ0eUNvbG9yKTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlU3lzdGVtQ29sb3IoUkdC
QTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIERvY3VtZW50KiBkb2N1bWVudCkKQEAg
LTU2MiwxMSArNTU0LDExIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uKENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlvbiwgY29uc3QKICAgICBtX3J1bGUgPSAw
OwogCiAgICAgYm9vbCBvayA9IGZhbHNlOwotICAgIGlmIChtX2hhc0ZvbnRGYWNlT25seVZhbHVl
cykKLSAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7Ci0gICAgaWYgKG1fbnVtUGFy
c2VkUHJvcGVydGllcykgeworICAgIG1fcGFyc2VkUHJvcGVydGllcy5yZW1vdmVGb250RmFjZVBy
b3BlcnRpZXMoKTsKKworICAgIGlmICghbV9wYXJzZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkgewog
ICAgICAgICBvayA9IHRydWU7Ci0gICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0
aWVzKG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAg
ZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzKTsKICAg
ICAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgfQogCkBAIC02MTAsMzMgKzYwMiwxMyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VNZWRpYVF1ZXJ5KE1lZGlhTGlzdCogcXVlcmllcywgY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAKIHZvaWQgQ1NTUGFyc2VyOjphZGRQcm9wZXJ0eShpbnQgcHJvcElk
LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgT3du
UHRyPENTU1Byb3BlcnR5PiBwcm9wKGFkb3B0UHRyKG5ldyBDU1NQcm9wZXJ0eShwcm9wSWQsIHZh
bHVlLCBpbXBvcnRhbnQsIG1fY3VycmVudFNob3J0aGFuZCwgbV9pbXBsaWNpdFNob3J0aGFuZCkp
KTsKLSAgICBpZiAobV9udW1QYXJzZWRQcm9wZXJ0aWVzID49IG1fbWF4UGFyc2VkUHJvcGVydGll
cykgewotICAgICAgICBtX21heFBhcnNlZFByb3BlcnRpZXMgKz0gMzI7Ci0gICAgICAgIGlmICht
X21heFBhcnNlZFByb3BlcnRpZXMgPiBVSU5UX01BWCAvIHNpemVvZihDU1NQcm9wZXJ0eSopKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXMgPSBzdGF0aWNf
Y2FzdDxDU1NQcm9wZXJ0eSoqPihmYXN0UmVhbGxvYyhtX3BhcnNlZFByb3BlcnRpZXMsCi0gICAg
ICAgICAgICBtX21heFBhcnNlZFByb3BlcnRpZXMgKiBzaXplb2YoQ1NTUHJvcGVydHkqKSkpOwot
ICAgIH0KLSAgICBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzKytdID0g
cHJvcC5sZWFrUHRyKCk7Ci19Ci0KLXZvaWQgQ1NTUGFyc2VyOjpyb2xsYmFja0xhc3RQcm9wZXJ0
aWVzKGludCBudW0pCi17Ci0gICAgQVNTRVJUKG51bSA+PSAwKTsKLSAgICBBU1NFUlQobV9udW1Q
YXJzZWRQcm9wZXJ0aWVzID49IHN0YXRpY19jYXN0PHVuc2lnbmVkPihudW0pKTsKLQotICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtOyArK2kpCi0gICAgICAgIGRlbGV0ZSBtX3BhcnNlZFByb3Bl
cnRpZXNbLS1tX251bVBhcnNlZFByb3BlcnRpZXNdOworICAgIG1fcGFyc2VkUHJvcGVydGllcy5h
ZGRQcm9wZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRhbnQsIG1fY3VycmVudFNob3J0aGFuZCwg
bV9pbXBsaWNpdFNob3J0aGFuZCk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpjbGVhclByb3BlcnRp
ZXMoKQogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBhcnNlZFByb3BlcnRp
ZXM7IGkrKykKLSAgICAgICAgZGVsZXRlIG1fcGFyc2VkUHJvcGVydGllc1tpXTsKLSAgICBtX251
bVBhcnNlZFByb3BlcnRpZXMgPSAwOwogICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1h
cmdpbkJveCA9IElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTOwotICAgIG1faGFzRm9udEZh
Y2VPbmx5VmFsdWVzID0gZmFsc2U7CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLmNsZWFyKCk7CiB9
CiAgICAgCiB2b2lkIENTU1BhcnNlcjo6c2V0U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHls
ZVNoZWV0KQpAQCAtOTQ5LDcgKzkyMSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGlu
dCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0
aGlzLCBwcm9wSWQpOwogICAgICAgICBpZiAobnVtICE9IDEgfHwgIXBhcnNlVmFsdWUoQ1NTUHJv
cGVydHlPdmVyZmxvd1gsIGltcG9ydGFudCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFBy
b3BlcnRpZXMgLSAxXS0+dmFsdWUoKTsKKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJz
ZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1ZSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eU92ZXJmbG93WSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTEwNDYsNyArMTAxOCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGlu
dCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2Nv
cGUodGhpcywgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKTsKICAgICAgICAgICAgIGlmICghcGFy
c2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGll
c1ttX251bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1
ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAg
ICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xNzIwLDcgKzE2OTIsNyBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAg
ICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29s
bGFwc2UpOwogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9y
dGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFs
dWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+
dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGll
cy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0s
IHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
QEAgLTI1MDAsNyArMjQ3Miw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHBy
b3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0aWVzLCAgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGNh
c2UgMTogewogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9y
dGFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFs
dWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+
dmFsdWUoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGll
cy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29w
ZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3Bl
cnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJv
cGVydGllc1syXSwgdmFsdWUsIGltcG9ydGFudCk7CkBAIC0yNTA4LDE5ICsyNDgwLDI0IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0
aWVzLCAgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIDI6IHsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBd
LCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkpCisg
ICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSAqdmFsdWUg
PSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOwor
ICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlMSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCku
dmFsdWUoKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBv
cnRhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIENTU1Zh
bHVlKiB2YWx1ZTIgPSBtX3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAg
ICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBsaWNpdCk7
Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzJdLCB2YWx1ZSwgaW1wb3J0YW50
KTsKLSAgICAgICAgICAgIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJv
cGVydGllcy0yXS0+dmFsdWUoKTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNb
M10sIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGll
c1syXSwgdmFsdWUxLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVy
dGllc1szXSwgdmFsdWUyLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSAzOiB7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVy
dGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRh
bnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMl0sIGltcG9ydGFudCkpCisgICAgICAgICAg
ICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1
ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0
KCkudmFsdWUoKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzJdLCBp
bXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENT
U1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMt
Ml0tPnZhbHVlKCk7CisKICAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0
aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRp
ZXNbM10sIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00MTE0LDcg
KzQwOTEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGb250U3R5bGUoYm9vbCBpbXBvcnRhbnQp
CiAgICAgfQogCiAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAg
IG1faGFzRm9udEZhY2VPbmx5VmFsdWVzID0gdHJ1ZTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0
aWVzLnNldEZvbnRGYWNlT25seSgpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRTdHlsZSwgdmFsdWVzLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpAQCAtNDE2MSw3ICs0MTM4LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9u
dFZhcmlhbnQoYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogCiAgICAgaWYgKHZhbHVlcyAmJiB2YWx1
ZXMtPmxlbmd0aCgpKSB7Ci0gICAgICAgIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzID0gdHJ1ZTsK
KyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnNldEZvbnRGYWNlT25seSgpOwogICAgICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBv
cnRhbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC00MjE0LDcgKzQxOTEsNyBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VGb250V2VpZ2h0KGJvb2wgaW1wb3J0YW50KQogICAgIH0K
IAogICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLT5sZW5ndGgoKSkgewotICAgICAgICBtX2hhc0Zv
bnRGYWNlT25seVZhbHVlcyA9IHRydWU7CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5zZXRG
b250RmFjZU9ubHkoKTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0
LCB2YWx1ZXMucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CkBAIC02Nzg2LDkgKzY3NjMsOCBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxl
UnVsZShWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcgogICAgICAg
ICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zID0gZmFs
c2U7CiAgICAgICAgIFJlZlB0cjxDU1NTdHlsZVJ1bGU+IHJ1bGUgPSBDU1NTdHlsZVJ1bGU6OmNy
ZWF0ZShtX3N0eWxlU2hlZXQsIG1fbGFzdFNlbGVjdG9yTGluZU51bWJlcik7CiAgICAgICAgIHJ1
bGUtPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7Ci0gICAgICAgIGlmIChtX2hhc0Zv
bnRGYWNlT25seVZhbHVlcykKLSAgICAgICAgICAgIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygp
OwotICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzKSk7CisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5yZW1vdmVGb250RmFjZVByb3Bl
cnRpZXMoKTsKKyAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMpKTsKICAgICAg
ICAgcmVzdWx0ID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9wYXJzZWRTdHlsZU9iamVjdHMuYXBw
ZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICAgICAgaWYgKG1fcnVsZVJhbmdlTWFwKSB7CkBAIC02
ODEwLDggKzY3ODYsOCBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0
b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+KiBzZWxlY3RvcgogQ1NTUnVsZSogQ1NTUGFy
c2VyOjpjcmVhdGVGb250RmFjZVJ1bGUoKQogewogICAgIG1fYWxsb3dJbXBvcnRSdWxlcyA9IG1f
YWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxzZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzOyArK2kpIHsKLSAgICAgICAgQ1NTUHJvcGVy
dHkqIHByb3BlcnR5ID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOworCisgICAgZm9yIChDU1NQcm9w
ZXJ0eUNvbnRhaW5lcjo6aXRlcmF0b3IgcHJvcGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXMuYmVn
aW4oKTsgcHJvcGVydHkgIT0gbV9wYXJzZWRQcm9wZXJ0aWVzLmVuZCgpOyArK3Byb3BlcnR5KSB7
CiAgICAgICAgIGludCBpZCA9IHByb3BlcnR5LT5pZCgpOwogICAgICAgICBpZiAoKGlkID09IENT
U1Byb3BlcnR5Rm9udFdlaWdodCB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRTdHlsZSB8fCBpZCA9
PSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KSAmJiBwcm9wZXJ0eS0+dmFsdWUoKS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gcHJvcGVy
dHktPm1fdmFsdWUucmVsZWFzZSgpOwpAQCAtNjgyNiw4ICs2ODAyLDkgQEAgQ1NTUnVsZSogQ1NT
UGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUoKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgIH0KICAgICB9CisKICAgICBSZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiBydWxlID0gQ1NTRm9u
dEZhY2VSdWxlOjpjcmVhdGUobV9zdHlsZVNoZWV0KTsKLSAgICBydWxlLT5zZXREZWNsYXJhdGlv
bihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHJ1bGUuZ2V0KCksIG1fcGFyc2Vk
UHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSk7CisgICAgcnVsZS0+c2V0RGVjbGFy
YXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBtX3Bh
cnNlZFByb3BlcnRpZXMpKTsKICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICBDU1NGb250RmFj
ZVJ1bGUqIHJlc3VsdCA9IHJ1bGUuZ2V0KCk7CiAgICAgbV9wYXJzZWRTdHlsZU9iamVjdHMuYXBw
ZW5kKHJ1bGUucmVsZWFzZSgpKTsKQEAgLTY5MDEsNyArNjg3OCw3IEBAIENTU1J1bGUqIENTU1Bh
cnNlcjo6Y3JlYXRlUGFnZVJ1bGUoUGFzc093blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gcGFnZVNl
bGVjdG9yKQogICAgICAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+IHNlbGVj
dG9yVmVjdG9yOwogICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBlbmQocGFnZVNlbGVjdG9yKTsK
ICAgICAgICAgcnVsZS0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7Ci0gICAg
ICAgIHJ1bGUtPnNldERlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVh
dGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMp
KTsKKyAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b246OmNyZWF0ZShydWxlLmdldCgpLCBtX3BhcnNlZFByb3BlcnRpZXMpKTsKICAgICAgICAgcGFn
ZVJ1bGUgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFN0eWxlT2JqZWN0cy5hcHBlbmQo
cnVsZS5yZWxlYXNlKCkpOwogICAgIH0KQEAgLTY5MjIsMzQgKzY4OTksMTYgQEAgQ1NTUnVsZSog
Q1NTUGFyc2VyOjpjcmVhdGVNYXJnaW5BdFJ1bGUoQ1NTU2VsZWN0b3I6Ok1hcmdpbkJveFR5cGUg
LyogbWFyZ2luQm94ICoKIAogdm9pZCBDU1NQYXJzZXI6OnN0YXJ0RGVjbGFyYXRpb25zRm9yTWFy
Z2luQm94KCkKIHsKLSAgICBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3ggPSBt
X251bVBhcnNlZFByb3BlcnRpZXM7CisgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFy
Z2luQm94ID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmNvdW50QWRkZWRQcm9wZXJ0aWVzKCk7CiB9CiAK
IHZvaWQgQ1NTUGFyc2VyOjplbmREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKQogewogICAgIEFT
U0VSVChtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3ggIT0gSU5WQUxJRF9OVU1f
UEFSU0VEX1BST1BFUlRJRVMpOwotICAgIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMobV9udW1QYXJz
ZWRQcm9wZXJ0aWVzIC0gbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94KTsKKyAg
ICBtX3BhcnNlZFByb3BlcnRpZXMucm9sbGJhY2tMYXN0UHJvcGVydGllcyhtX3BhcnNlZFByb3Bl
cnRpZXMuY291bnRBZGRlZFByb3BlcnRpZXMoKSAtIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9y
ZU1hcmdpbkJveCk7CiAgICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0g
SU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVM7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjpkZWxl
dGVGb250RmFjZU9ubHlWYWx1ZXMoKQotewotICAgIEFTU0VSVChtX2hhc0ZvbnRGYWNlT25seVZh
bHVlcyk7Ci0gICAgaW50IGRlbGV0ZWRQcm9wZXJ0aWVzID0gMDsKLQotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX251bVBhcnNlZFByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBDU1NQ
cm9wZXJ0eSogcHJvcGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07Ci0gICAgICAgIGludCBp
ZCA9IHByb3BlcnR5LT5pZCgpOwotICAgICAgICBpZiAoKGlkID09IENTU1Byb3BlcnR5Rm9udFdl
aWdodCB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZvbnRTdHlsZSB8fCBpZCA9PSBDU1NQcm9wZXJ0eUZv
bnRWYXJpYW50KSAmJiBwcm9wZXJ0eS0+dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAg
ICAgICAgZGVsZXRlIHByb3BlcnR5OwotICAgICAgICAgICAgZGVsZXRlZFByb3BlcnRpZXMrKzsK
LSAgICAgICAgfSBlbHNlIGlmIChkZWxldGVkUHJvcGVydGllcykKLSAgICAgICAgICAgIG1fcGFy
c2VkUHJvcGVydGllc1tpIC0gZGVsZXRlZFByb3BlcnRpZXNdID0gbV9wYXJzZWRQcm9wZXJ0aWVz
W2ldOwotICAgIH0KLQotICAgIG1fbnVtUGFyc2VkUHJvcGVydGllcyAtPSBkZWxldGVkUHJvcGVy
dGllczsKLX0KLQogV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZy
YW1lUnVsZShDU1NQYXJzZXJWYWx1ZUxpc3QqIGtleXMpCiB7CiAgICAgLy8gQ3JlYXRlIGEga2V5
IHN0cmluZyBmcm9tIHRoZSBwYXNzZWQga2V5cwpAQCAtNjk2NCw3ICs2OTIzLDcgQEAgV2ViS2l0
Q1NTS2V5ZnJhbWVSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lUnVsZShDU1NQYXJzZXJW
YWx1ZUxpc3QqIGtleXMpCiAKICAgICBSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBrZXlm
cmFtZSA9IFdlYktpdENTU0tleWZyYW1lUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7CiAgICAg
a2V5ZnJhbWUtPnNldEtleVRleHQoa2V5U3RyaW5nKTsKLSAgICBrZXlmcmFtZS0+c2V0RGVjbGFy
YXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgwLCBtX3BhcnNlZFByb3Bl
cnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGllcykpOworICAgIGtleWZyYW1lLT5zZXREZWNsYXJh
dGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKDAsIG1fcGFyc2VkUHJvcGVy
dGllcykpOwogCiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApp
bmRleCA4ZTNmZTc3Li4zMGViMDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFy
c2VyVmFsdWVzLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlDb250YWluZXIuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2lu
Y2x1ZGUgIkNvbG9yLmgiCkBAIC03NSw4ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZSogcHJpbWl0aXZlVmFsdWVDYWNoZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJpbWl0aXZlVmFsdWVDYWNoZS5nZXQoKTsgfQogCiAgICAgICAgIHZvaWQg
YWRkUHJvcGVydHkoaW50IHByb3BJZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wgaW1wb3J0
YW50KTsKLSAgICAgICAgdm9pZCByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKGludCBudW0pOwotICAg
ICAgICBib29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX251bVBhcnNlZFByb3Bl
cnRpZXMgPiAwOyB9CisgICAgICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJu
ICFtX3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9CiAKICAgICAgICAgYm9vbCBwYXJzZVZh
bHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKICAgICAgICAgYm9vbCBwYXJzZVNob3J0
aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVz
LCBib29sIGltcG9ydGFudCk7CkBAIC0yNTIsMTggKzI1MiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFJlZlB0cjxDU1NSdWxlPiBtX2tleWZyYW1lOwogICAgICAgICBPd25QdHI8
TWVkaWFRdWVyeT4gbV9tZWRpYVF1ZXJ5OwogICAgICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIG1f
dmFsdWVMaXN0OwotICAgICAgICBDU1NQcm9wZXJ0eSoqIG1fcGFyc2VkUHJvcGVydGllczsKKyAg
ICAgICAgQ1NTUHJvcGVydHlDb250YWluZXIgbV9wYXJzZWRQcm9wZXJ0aWVzOwogICAgICAgICBD
U1NTZWxlY3Rvckxpc3QqIG1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3RvcjsKICAgICAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGU+IG1fcHJpbWl0aXZlVmFsdWVDYWNoZTsKLSAg
ICAgICAgdW5zaWduZWQgbV9udW1QYXJzZWRQcm9wZXJ0aWVzOwotICAgICAgICB1bnNpZ25lZCBt
X21heFBhcnNlZFByb3BlcnRpZXM7CiAgICAgICAgIHVuc2lnbmVkIG1fbnVtUGFyc2VkUHJvcGVy
dGllc0JlZm9yZU1hcmdpbkJveDsKIAogICAgICAgICBpbnQgbV9pblBhcnNlU2hvcnRoYW5kOwog
ICAgICAgICBpbnQgbV9jdXJyZW50U2hvcnRoYW5kOwogICAgICAgICBib29sIG1faW1wbGljaXRT
aG9ydGhhbmQ7CiAKLSAgICAgICAgYm9vbCBtX2hhc0ZvbnRGYWNlT25seVZhbHVlczsKICAgICAg
ICAgYm9vbCBtX2hhZFN5bnRhY3RpY2FsbHlWYWxpZENTU1J1bGU7CiAKICAgICAgICAgQXRvbWlj
U3RyaW5nIG1fZGVmYXVsdE5hbWVzcGFjZTsKQEAgLTMwMSw4ICsyOTgsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBjaGVja0Zvck9ycGhhbmVkVW5pdHMoKTsKIAotICAg
ICAgICB2b2lkIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpOwotCiAgICAgICAgIGJvb2wgaXNH
ZW5lcmF0ZWRJbWFnZVZhbHVlKENTU1BhcnNlclZhbHVlKikgY29uc3Q7CiAgICAgICAgIGJvb2wg
cGFyc2VHZW5lcmF0ZWRJbWFnZShSZWZQdHI8Q1NTVmFsdWU+Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmMzMGRkZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHlDb250YWluZXIuY3BwCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBbmRyYXMgQmVjc2kgPGFi
ZWNzaUB3ZWJraXQub3JnPiwgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5Q29udGFpbmVyLmgiCisKKyNpbmNsdWRlICJDU1NQcm9w
ZXJ0eU5hbWVzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworQ1NTUHJvcGVydHlDb250YWluZXI6Oml0ZXJhdG9yIENTU1Byb3BlcnR5Q29udGFpbmVy
OjpnZXRQcm9wZXJ0eUJ5SWQoaW50IHByb3BlcnR5SWQpCit7CisgICAgcmV0dXJuIG1fcHJvcGVy
dHlTZXQuZmluZDxpbnQsIENTU1Byb3BlcnR5SWRIYXNoVHJhbnNsYXRvcj4ocHJvcGVydHlJZCk7
Cit9CisKK0NTU1Byb3BlcnR5Q29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBDU1NQcm9wZXJ0eUNv
bnRhaW5lcjo6Z2V0UHJvcGVydHlCeUlkKGludCBwcm9wZXJ0eUlkKSBjb25zdAoreworICAgIHJl
dHVybiBtX3Byb3BlcnR5U2V0LmZpbmQ8aW50LCBDU1NQcm9wZXJ0eUlkSGFzaFRyYW5zbGF0b3I+
KHByb3BlcnR5SWQpOworfQorCitDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aXRlcmF0b3IgQ1NTUHJv
cGVydHlDb250YWluZXI6OmJlZ2luKCkKK3sKKyAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC5iZWdp
bigpOworfQorCitDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6aXRlcmF0b3IgQ1NTUHJvcGVydHlDb250
YWluZXI6OmVuZCgpCit7CisgICAgcmV0dXJuIG1fcHJvcGVydHlTZXQuZW5kKCk7Cit9CisKK0NT
U1Byb3BlcnR5Q29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6
YmVnaW4oKSBjb25zdAoreworICAgIHJldHVybiBtX3Byb3BlcnR5U2V0LmJlZ2luKCk7Cit9CisK
K0NTU1Byb3BlcnR5Q29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBDU1NQcm9wZXJ0eUNvbnRhaW5l
cjo6ZW5kKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC5lbmQoKTsKK30KKwor
Q1NTUHJvcGVydHkmIENTU1Byb3BlcnR5Q29udGFpbmVyOjpsYXN0KCkKK3sKKyAgICBBU1NFUlQo
IW1fcHJvcGVydHlTZXQuaXNFbXB0eSgpKTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC5sYXN0
KCk7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWluZXI6OmFkZFByb3BlcnR5KGludCBwcm9w
ZXJ0eUlkLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGludCBz
aG9ydGhhbmRJRCwgYm9vbCBpbXBsaWNpdCkKK3sKKyAgICBBU1NFUlQocHJvcGVydHlJZCk7CisK
KyAgICBDU1NQcm9wZXJ0eSBuZXdQcm9wZXJ0eShwcm9wZXJ0eUlkLCB2YWx1ZSwgaW1wb3J0YW50
LCBzaG9ydGhhbmRJRCwgaW1wbGljaXQpOworICAgIGl0ZXJhdG9yIHByb3BlcnR5ID0gZ2V0UHJv
cGVydHlCeUlkKHByb3BlcnR5SWQpOworCisgICAgaWYgKHByb3BlcnR5ICE9IG1fcHJvcGVydHlT
ZXQuZW5kKCkpIHsKKyAgICAgICAgaWYgKHByb3BlcnR5LT5pc0ltcG9ydGFudCgpICYmICFpbXBv
cnRhbnQpCisgICAgICAgICAgICBuZXdQcm9wZXJ0eSA9ICpwcm9wZXJ0eTsKKyAgICAgICAgbV9w
cm9wZXJ0eVNldC5yZW1vdmUocHJvcGVydHkpOworICAgIH0KKyAgICArK21fbnVtQWRkZWRQcm9w
ZXJ0aWVzOworICAgIG1fcHJvcGVydHlTZXQuYWRkKG5ld1Byb3BlcnR5KTsKK30KKwordm9pZCBD
U1NQcm9wZXJ0eUNvbnRhaW5lcjo6cmVtb3ZlUHJvcGVydHkoaW50IHByb3BlcnR5SWQpCit7Cisg
ICAgQVNTRVJUKHByb3BlcnR5SWQpOworICAgIGl0ZXJhdG9yIHByb3BlcnR5ID0gZ2V0UHJvcGVy
dHlCeUlkKHByb3BlcnR5SWQpOworCisgICAgLS1tX251bUFkZGVkUHJvcGVydGllczsKKyAgICBt
X3Byb3BlcnR5U2V0LnJlbW92ZShwcm9wZXJ0eSk7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250
YWluZXI6OnJlbW92ZUZvbnRGYWNlUHJvcGVydGllcygpCit7CisgICAgaWYgKCFtX2hhc0ZvbnRG
YWNlT25seVByb3BlcnRpZXMpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBpZHNbM10gPSB7
Q1NTUHJvcGVydHlGb250V2VpZ2h0LCBDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgQ1NTUHJvcGVydHlG
b250VmFyaWFudH07CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xF
TkdUSChpZHMpOyArK2kpIHsKKyAgICAgICAgaXRlcmF0b3IgcHJvcGVydHkgPSBnZXRQcm9wZXJ0
eUJ5SWQoaWRzW2ldKTsKKworICAgICAgICBpZiAocHJvcGVydHkgPT0gbV9wcm9wZXJ0eVNldC5l
bmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChwcm9wZXJ0eS0+dmFs
dWUoKS0+aXNWYWx1ZUxpc3QoKSkgeworICAgICAgICAgICAgbV9wcm9wZXJ0eVNldC5yZW1vdmUo
cHJvcGVydHkpOworICAgICAgICAgICAgLS1tX251bUFkZGVkUHJvcGVydGllczsKKyAgICAgICAg
fQorICAgIH0KKworICAgIG1faGFzRm9udEZhY2VPbmx5UHJvcGVydGllcyA9IGZhbHNlOworfQor
Cit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpyZW1vdmVMYXN0KCkKK3sKKyAgICBBU1NFUlQo
bV9wcm9wZXJ0eVNldC5zaXplKCkpOworICAgIC0tbV9udW1BZGRlZFByb3BlcnRpZXM7CisgICAg
bV9wcm9wZXJ0eVNldC5yZW1vdmVMYXN0KCk7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlDb250YWlu
ZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSkKK3sKKyAgICBBU1NFUlQobV9wcm9w
ZXJ0eVNldC5zaXplKCkgPj0gbnVtKTsKKworICAgIGZvciAoaW50IHJlbW92ZWRQcm9wZXJ0aWVz
ID0gMDsgcmVtb3ZlZFByb3BlcnRpZXMgPCBudW07ICsrcmVtb3ZlZFByb3BlcnRpZXMpCisgICAg
ICAgIG1fcHJvcGVydHlTZXQucmVtb3ZlTGFzdCgpOworCisgICAgbV9udW1BZGRlZFByb3BlcnRp
ZXMgLT0gbnVtOworfQorCit2b2lkIENTU1Byb3BlcnR5Q29udGFpbmVyOjpjbGVhcigpCit7Cisg
ICAgbV9wcm9wZXJ0eVNldC5jbGVhcigpOworICAgIG1fbnVtQWRkZWRQcm9wZXJ0aWVzID0gMDsK
KyAgICBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXMgPSBmYWxzZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlDb250YWluZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjk2NzU2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5Q29udGFpbmVyLmgKQEAgLTAsMCAr
MSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAw
OSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQW5kcmFzIEJlY3NpIDxhYmVjc2lAd2Via2l0Lm9yZz4sIFVuaXZlcnNpdHkgb2YgU3pl
Z2VkCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZm5kZWYgQ1NTUHJvcGVydHlDb250YWluZXJfaAorI2RlZmluZSBDU1NQcm9wZXJ0eUNv
bnRhaW5lcl9oCisKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVl
LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hT
ZXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCB1bnNpZ25lZCBrSW5saW5lQ2Fw
YWNpdHkgPSAzMjsKKworY2xhc3MgQ1NTUHJvcGVydHlDb250YWluZXIgeworcHJpdmF0ZToKKyAg
ICBzdHJ1Y3QgQ1NTUHJvcGVydHlIYXNoRnVuY3Rpb25zIHsKKyAgICAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goQ1NTUHJvcGVydHkgcHJvcGVydHkpIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihwcm9wZXJ0eS5tX2lkKTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChDU1NQcm9w
ZXJ0eSBhLCBDU1NQcm9wZXJ0eSBiKSB7IHJldHVybiBhLm1faWQgPT0gYi5tX2lkOyB9CisgICAg
ICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFs
c2U7CisgICAgfTsKKyAgICBzdHJ1Y3QgQ1NTUHJvcGVydHlJZEhhc2hUcmFuc2xhdG9yIHsKKyAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goaW50IGlkKSB7IEFTU0VSVChpZCA+PSAwKTsgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZCk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1
YWwoQ1NTUHJvcGVydHkgcHJvcGVydHksIGludCBpZCkgeyByZXR1cm4gcHJvcGVydHkubV9pZCA9
PSBpZDsgfQorICAgIH07CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxDU1NQcm9wZXJ0eSwga0lu
bGluZUNhcGFjaXR5LCBDU1NQcm9wZXJ0eUhhc2hGdW5jdGlvbnM+IENTU1Byb3BlcnR5TGlzdEhh
c2hTZXQ7CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIENTU1Byb3BlcnR5TGlzdEhhc2hTZXQ6Oml0
ZXJhdG9yIGl0ZXJhdG9yOworICAgIHR5cGVkZWYgQ1NTUHJvcGVydHlMaXN0SGFzaFNldDo6Y29u
c3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CisKKyAgICBDU1NQcm9wZXJ0eUNvbnRhaW5lcigp
CisgICAgICAgIDogbV9oYXNGb250RmFjZU9ubHlQcm9wZXJ0aWVzKGZhbHNlKQorICAgICAgICAs
IG1fbnVtQWRkZWRQcm9wZXJ0aWVzKDApCisgICAgeworICAgIH0KKworICAgIENTU1Byb3BlcnR5
Q29udGFpbmVyOjppdGVyYXRvciBiZWdpbigpOworICAgIENTU1Byb3BlcnR5Q29udGFpbmVyOjpp
dGVyYXRvciBlbmQoKTsKKyAgICBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdDsKKyAgICBDU1NQcm9wZXJ0eUNvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3Ig
ZW5kKCkgY29uc3Q7CisgICAgQ1NTUHJvcGVydHkmIGxhc3QoKTsKKworICAgIHVuc2lnbmVkIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5U2V0LnNpemUoKTsgfQorICAgIGludCBjb3Vu
dEFkZGVkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQWRkZWRQcm9wZXJ0aWVzOyB9
CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVNldC5pc0VtcHR5
KCk7IH0KKworICAgIHZvaWQgc2V0Rm9udEZhY2VPbmx5KCkgeyBtX2hhc0ZvbnRGYWNlT25seVBy
b3BlcnRpZXMgPSB0cnVlOyB9CisKKyAgICB2b2lkIGFkZFByb3BlcnR5KGludCBwcm9wZXJ0eUlk
LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQsIGludCBzaG9ydGhhbmRJRCA9
IDAsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSk7CisKKyAgICB2b2lkIHJlbW92ZVByb3BlcnR5KGlu
dCBwcm9wZXJ0eUlkKTsKKyAgICB2b2lkIHJlbW92ZUZvbnRGYWNlUHJvcGVydGllcygpOworICAg
IHZvaWQgcmVtb3ZlTGFzdCgpOworCisgICAgdm9pZCByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKGlu
dCk7CisgICAgdm9pZCBjbGVhcigpOworICAgIENTU1Byb3BlcnR5Q29udGFpbmVyOjppdGVyYXRv
ciBnZXRQcm9wZXJ0eUJ5SWQoaW50IHByb3BlcnR5SWQpOworICAgIENTU1Byb3BlcnR5Q29udGFp
bmVyOjpjb25zdF9pdGVyYXRvciBnZXRQcm9wZXJ0eUJ5SWQoaW50IHByb3BlcnR5SWQpIGNvbnN0
OworCitwcml2YXRlOgorCisgICAgYm9vbCBtX2hhc0ZvbnRGYWNlT25seVByb3BlcnRpZXM7Cisg
ICAgaW50IG1fbnVtQWRkZWRQcm9wZXJ0aWVzOworICAgIENTU1Byb3BlcnR5TGlzdEhhc2hTZXQg
bV9wcm9wZXJ0eVNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IENTU1Byb3BlcnR5Q29udGFpbmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKaW5k
ZXggZjNiNWFjMy4uOGNkM2MwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NT
U1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDU1NJbml0aWFsVmFsdWUuaCIKICNpbmNsdWRlICJD
U1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUg
IkNTU1F1aXJrUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgi
CkBAIC0yODMsMTAgKzI4NCwxMCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZShpbnQg
cHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKENTU1Byb3Bl
cnR5TWFya2VyU3RhcnQsIGltcG9ydGFudCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGlmIChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKSB7Ci0gICAgICAgICAgICByb2xsYmFj
a0xhc3RQcm9wZXJ0aWVzKDEpOworICAgICAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLnJlbW92
ZUxhc3QoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBD
U1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVz
IC0gMV0tPnZhbHVlKCk7CisgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVy
dGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJr
ZXJNaWQsIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0
eU1hcmtlckVuZCwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgIG1faW1wbGljaXRTaG9ydGhh
bmQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKaW5k
ZXggNzcwYTY4Ni4uNGZlMTg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
bnRGYWNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxl
bWVudC5jcHAKQEAgLTI5OSw4ICsyOTksOCBAQCB2b2lkIFNWR0ZvbnRGYWNlRWxlbWVudDo6cmVi
dWlsZEZvbnRGYWNlKCkKIAogICAgIC8vIFBhcnNlIGluLW1lbW9yeSBDU1MgcnVsZXMKICAgICBD
U1NQcm9wZXJ0eSBzcmNQcm9wZXJ0eShDU1NQcm9wZXJ0eVNyYywgbGlzdCk7Ci0gICAgY29uc3Qg
Q1NTUHJvcGVydHkqIHNyY1Byb3BlcnR5UmVmID0gJnNyY1Byb3BlcnR5OwotICAgIG1fc3R5bGVE
ZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydGllcygmc3JjUHJvcGVydHlSZWYsIDEpOworICAg
IGNvbnN0IENTU1Byb3BlcnR5JiBzcmNQcm9wZXJ0eVJlZiA9IHNyY1Byb3BlcnR5OworICAgIG1f
c3R5bGVEZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVydHkoc3JjUHJvcGVydHlSZWYpOwogCiAg
ICAgaWYgKGRlc2NyaWJlc1BhcmVudEZvbnQpIHsgICAgCiAgICAgICAgIC8vIFRyYXZlcnNlIHBh
cnNlZCBDU1MgdmFsdWVzIGFuZCBhc3NvY2lhdGUgQ1NTRm9udEZhY2VTcmNWYWx1ZSBlbGVtZW50
cyB3aXRoIG91cnNlbHZlcy4KLS0gCjEuNy42Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>