<?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>6002</bug_id>
          
          <creation_ts>2005-12-08 01:50:41 -0800</creation_ts>
          <short_desc>WebKit does not properly handle SVG &lt;cursor&gt; element</short_desc>
          <delta_ts>2006-09-26 05:39:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>6001</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>ian</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>25701</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-08 01:50:41 -0800</bug_when>
    <thetext>WebKit does not properly handle SVG &lt;cursor&gt; element

Nearly all the code is there, it just needs to be wired into Darin&apos;s new custom cursor code:
http://bugzilla.opendarwin.org/show_bug.cgi?id=5689</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25707</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-08 02:30:00 -0800</bug_when>
    <thetext>This is going to need to have at least part of the code in CSSParser::parseValue, and could look 
something like this:

            DOMString uri = parseURL(domString(value-&gt;string));
#if SVG_SUPPORT
            if (uri.find(&quot;#&quot;) == 0) {
                ElementImpl *e = document.getElementById(uri.qstring.mid(1));
                DOMString url = e-&gt;getAttribute(XLinkNames::hrefAttr);
                parsedValue = new CSSImageValueImpl(DOMString(KURL(styleElement-&gt;baseURL().qstring(), 
uri.qstring()).url()), styleElement);
                valueList-&gt;next();
            } else
#endif
            if (!uri.isEmpty()) {
                parsedValue = new CSSImageValueImpl(DOMString(KURL(styleElement-&gt;baseURL().qstring(), 
uri.qstring()).url()), styleElement);
                valueList-&gt;next();
            }
	}

That still doesn&apos;t handle the fallback case (as addressed by 6001), nor does it assure that the targeted 
element is a &lt;cursor&gt;, nor does it recursively handle cursor referencing some other &lt;cursor&gt; (if that&apos;s 
even possible).  But it it should give anyone looking to implement this, a head start.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41845</commentid>
    <comment_count>2</comment_count>
      <attachid>8206</attachid>
    <who name="jay">jay</who>
    <bug_when>2006-05-10 02:51:23 -0700</bug_when>
    <thetext>Created attachment 8206
cursor should be &quot;hand&quot; on circle 

mouseover circle which has anchor, cursor pointer should be &quot;hand&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41846</commentid>
    <comment_count>3</comment_count>
    <who name="jay">jay</who>
    <bug_when>2006-05-10 02:53:52 -0700</bug_when>
    <thetext>Eric,

have added attachment demonstrating that pointer should change to &quot;hand&quot; over anchor.

otherwise how is visitor to know this is a link?

status bar should also display URI, but perhaps that&apos;s another bug...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43034</commentid>
    <comment_count>4</comment_count>
      <attachid>8441</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-05-21 03:35:07 -0700</bug_when>
    <thetext>Created attachment 8441
First attempt

My first stab at fixing this. It works for svg cursors, including hotspot.
It turned out the handling of fallback for the urls was so related
that this patch also attempts to fix that, that means this patch also
should fix bug 6001.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43038</commentid>
    <comment_count>5</comment_count>
      <attachid>8441</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-05-21 05:00:35 -0700</bug_when>
    <thetext>Comment on attachment 8441
First attempt

I think I have enough comments to make a first round of a review :)

+        if (style-&gt;cursors())
+            return new CSSPrimitiveValue(style-&gt;cursors()-&gt;cursor_image-&gt;url(), CSSPrimitiveValue::CSS_URI);

In Firefox, the computed style includes the whole list, not just one URI (I tested with a bookmarklet from &lt;http://www.squarefree.com/bookmarklets/webdevel.html&gt;).

+class CSSCursorImageValue : public CSSImageValue

We usually have one class per file.

+        //  [&lt;uri&gt;,]* [ auto | crosshair | default | pointer | progress | move | e-resize | ne-resize |
...
+            valueList-&gt;next(); // comma
+            value = valueList-&gt;next();

It&apos;s probably OK not to support CSS3 hotspots at first, but here, the parser would just get confused by them, which isn&apos;t good at all. Also, is it possible to move the parsing logic to CSSGrammar.y?

+            if (!value) { // no value after url list (MSIE 5 compatibility)

Nitpick: I think custom cursors were implemented in MSIE 6.

+struct CursorInfo {
+    ~CursorInfo();
+    void clearCursor();
+    CachedImage *cursor_image;
+#if SVG_SUPPORT
+    IntPoint cursor_hotspot;
+#endif
+    struct CursorInfo *next;
+};

Special-casing SVG doesn&apos;t seem necessary for dealing with the hotspot (even if we don&apos;t support CSS3 hotspots, the parser can just pass {0,0}).

-      cursor_image( o.cursor_image ), font( o.font ),
+      cursor_info( o.cursor_info ), font( o.font ),

StyleInheritedData didn&apos;t own cursor_image, but it owns cursor_info, so just copying a pointer isn&apos;t enough.

+void RenderStyle::addCursor( CachedImage *v )

Style violation - we don&apos;t use extra spaces in braces (same issue elsewhere).


All fallback cursors are being loaded and decoded here, even if only the first one gets used. I am not sure if this can be considered acceptable, but it&apos;s definitely not good.

Of course, this change needs extensive test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43320</commentid>
    <comment_count>6</comment_count>
      <attachid>8494</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-05-23 13:26:22 -0700</bug_when>
    <thetext>Created attachment 8494
Improved patch after ap&apos;s feedback

This should address most of ap&apos;s issues with the first patch. I now do really lazy loading,
only trying to load the cursor image when requested on a mouse move. If that is too lazy,
in cssstyleselector we could start loading at least the first image cursor (if there are one or
more obviously). The CursorInfo list is getting really complex, so I wonder if it is correct
and could be simplified. Finally I&apos;d like some pointers for testcases, testing problems 6001+6002
...
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43328</commentid>
    <comment_count>7</comment_count>
      <attachid>8494</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-05-23 13:39:19 -0700</bug_when>
    <thetext>Comment on attachment 8494
Improved patch after ap&apos;s feedback

+        } else if (value)
+            return value;
         ASSERT_NOT_REACHED();

this would be clearer as
ASSERT(value);
return value;

style issues:
+        CSSValueList* list = 0;
+        CSSValue *value = 0;

This shoudl be broken up into multiple lines to be more readable:
+                    list-&gt;append(new CSSCursorImageValue(String(KURL(styleElement-&gt;baseURL().deprecatedString(), url.deprecatedString()).url()), IntPoint(x, y), styleElement));

no {} needed here:
+            } else if (!strict &amp;&amp; value-&gt;id == CSS_VAL_HAND) { // MSIE 5 compatibility :/
+                list-&gt;append(new CSSPrimitiveValue(CSS_VAL_POINTER));
+            } else if (value-&gt;id &gt;= CSS_VAL_AUTO &amp;&amp; value-&gt;id &lt;= CSS_VAL_HELP)

style:
+            for (int i = 0; i &lt; len; i++)
+            {

we don&apos;t generally commit commented out code:
+                    //if (!style-&gt;cursors()) // load first
+                    //    image-&gt;image(element-&gt;document()-&gt;docLoader());

more style:
+                } else if (type == CSSPrimitiveValue::CSS_IDENT) {
+                    style-&gt;setCursor((ECursor)(primitiveValue-&gt;getIdent() - CSS_VAL_AUTO));
+                }

more style:
+        if (SVGURIReference::parseMappedAttribute(attr)) return;

(return should be on a separate line)

style:
+            if (!cimage) continue;

this shoudl probably have an argument label to indicate that the IntPoint is a hotspot:

+        Cursor(Image*, IntPoint = IntPoint());

same here, ideally p should be named &quot;hotspot&quot; or something more descriptive:
+static NSCursor* createCustomCursor(Image* image, IntPoint p)

These don&apos;t need argument labels, as they provide no value here:
+    void setCursors(CursorInfo* o);
+    void addCursor(CSSCursorImageValue* v);

more style:
+: m_cursor(cursor), m_next(0)

+    if (m_cursor) m_cursor-&gt;ref();

Mostly I ran through style issues in my review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43381</commentid>
    <comment_count>8</comment_count>
      <attachid>8512</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-05-24 07:25:35 -0700</bug_when>
    <thetext>Created attachment 8512
Patch addressing MacDome&apos;s suggestions

This patch should fix the style issues raised by MacDome. Please let me know
whether technically the patch is right and how to do the testcases. In particular
I am still a bit worried about the refcounting and handling of CursorInfo in various
situations...
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43400</commentid>
    <comment_count>9</comment_count>
      <attachid>8512</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-05-24 12:13:09 -0700</bug_when>
    <thetext>Comment on attachment 8512
Patch addressing MacDome&apos;s suggestions

I think that a few additional cases can be added to manual-tests/custom-cursors.html, and a similar SVG test should be added (based on the attached test?). Some ideas about what to test:
- standard and IE6 (incomplete) declarations should parse OK;
- CSS3 hotspot values should not break parsing;
- fallback should work for both missing images and ones that failed to decode;
- should be able to fallback to a named cursor (implied, in incomplete case), as well as to a custom one;
- should support SVG cursors (as in url(cursor.svg) and url(example.svg#linkcursor)).

Google suggests that this may be of use: http://www.gtalbot.org/DHTMLSection/Cursors.html

The handling of CursorInfo doesn&apos;t look quite right to me - StyleInheritedData::operator==() will not compare copies as equal, because the address of cursorInfo will be different. Can CursorInfo itself be made refcountable? I&apos;d also try to use Vector, rather that create a brand new list implementation.

I haven&apos;t reviewed the rest of the patch, so I&apos;m leaving the flag as is, hoping that someone will comment more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44420</commentid>
    <comment_count>10</comment_count>
      <attachid>8669</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-06-02 13:56:05 -0700</bug_when>
    <thetext>Created attachment 8669
Improved patch

This version uses Vector instead of yet-another-list.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44572</commentid>
    <comment_count>11</comment_count>
      <attachid>8669</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-06-03 17:36:46 -0700</bug_when>
    <thetext>Comment on attachment 8669
Improved patch

+    NSPoint hotSpotPoint = {hotspot.x(), hotspot.y()};
+    return [[NSCursor alloc] initWithImage:img hotSpot:hotSpotPoint];

You don&apos;t need the local variable. IntPoint objects already know how to convert themselves into NSPoint objects if you pass them to an expression that expects an NSPoint.

+    void addCursor(PassRefPtr&lt;CSSCursorImageValue&gt; v);

This would read better without the &quot;v&quot; -- no need to name the parameter if you&apos;re not using it here and if the name isn&apos;t helpful for documentation.

+    if (style &amp;&amp; style-&gt;cursors()) {
+        Vector&lt;RefPtr&lt;CSSCursorImageValue&gt; &gt; cursors = style-&gt;cursors();
+        for (unsigned i = 0;i &lt; cursors.size();++i) {
+            CachedImage* cimage = cursors[i].get()-&gt;image(node-&gt;document()-&gt;docLoader());
+            if (!cimage)
+                 continue;
+            if (cimage-&gt;image()-&gt;isNull())
+                break;
+            else if (!cimage-&gt;isErrorImage())
+                return Cursor(cimage-&gt;image(), cursors[i].get()-&gt;hotspot());
+        };
+    }

There&apos;s a spurious semicolon here.

Also, formatting trouble with an extra space before &quot;continue&quot; and missing spaces after the semicolons in the if statement.

There&apos;s no need for an else after  the break.

I don&apos;t understand why a null CachedImage means continue, but an image that&apos;s &quot;isNull&quot; means break, and an image that&apos;s an error image means continue. That&apos;s confusing.

cursors[i].get()-&gt;image can just be cursors[i]-&gt;image -- you only need the get() if you&apos;re passing to something that takes a raw pointer. You don&apos;t need it just to use the pointer. Same for cursors[i].get()-&gt;hotspot().

Why use the term &quot;info&quot; in cursorInfo. Maybe cursors is the best name for the property.

Could change cursors so it returns a const reference to the Vector. That way you won&apos;t have to copy the vector just to access the cursors.

Do we really need a reference-counted class for the cursors? I think it might be better to have the vector hold a struct with a RefPtr&lt;CSSImageValue&gt; plus an IntPoint for the hot spot. That struct would not need to be a while class and have a source file to itself. What do you think?

+            for (int i = 0; i &lt; len; i++)
+            {

Braces should go on the same line as the for statement.

+                if (!item-&gt;isPrimitiveValue()) continue;

If statements should not be packed into one line like this.

-    case CSS_PROP_RESIZE: // none | both | horizontal | vertical | inherit
-        if (id == CSS_VAL_NONE || id == CSS_VAL_BOTH || id == CSS_VAL_HORIZONTAL || id == CSS_VAL_VERTICAL)
-            valid_primitive = true;
-        break;

Please don&apos;t roll out our new resize property!

+            for (unsigned i = 0;i &lt; cursors.size();++i) {
+                list-&gt;append(new CSSPrimitiveValue(cursors[i].get()-&gt;image(node-&gt;document()-&gt;docLoader())-&gt;url(), CSSPrimitiveValue::CSS_URI));
+            }

We usually don&apos;t put braces around single line for statements either (like single-line if statements).

No test cases attached to the patch.

Looking good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50757</commentid>
    <comment_count>12</comment_count>
      <attachid>9670</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-07-25 05:19:57 -0700</bug_when>
    <thetext>Created attachment 9670
test case for HTML (put in WebCore/manual-tests)

The tests won&apos;t work in IE or Firefox, because they don&apos;t support .tiff cursors (and WebKit has major problems with .cur ones). I&apos;ve tested WinIE with a version that used .cur.

To close this bug (as opposed to bug 6001), one would also need something similar for SVG. The existing SVG test case doesn&apos;t demonstrate the original issue, which is about &lt;cursor&gt;, rather than links.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50841</commentid>
    <comment_count>13</comment_count>
      <attachid>9696</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-07-26 03:49:04 -0700</bug_when>
    <thetext>Created attachment 9696
test case for SVG

Tested with Adove SVG Viewer 6 beta (the first row doesn&apos;t work for whatever reason, but it should).

See also: &lt;http://pilat.free.fr/asv6/cursor.svg&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54953</commentid>
    <comment_count>14</comment_count>
      <attachid>10431</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-07 02:05:59 -0700</bug_when>
    <thetext>Created attachment 10431
Another incomplete attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54954</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-07 02:08:31 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=10431) [edit]
&gt; Another incomplete attempt
&gt; 

The code I just posted is missing proper list-based parsing, does not properly clean-up CursorData pointers when deleting the RenderStyle, does not add parsing for CSS3 cursor hotspots (even though CursorData now supports them), finally it does not expose the list data via the CSSComputedStyleDeclaration methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55087</commentid>
    <comment_count>16</comment_count>
      <attachid>10468</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-09-08 14:54:44 -0700</bug_when>
    <thetext>Created attachment 10468
Improved patch

This is my &quot;old&quot; patch, but compiling against ToT and addressing most of Darin&apos;s (style) issues.
It also includes aps test from comment 12. The patch seems to behave well, but maybe could pick
up some things from Erics patch and more testing against aps testcases. Nevertheless, I think it
may be worthwhile to review once again, and see what should be fixed, and how much of cursor
support we need to land.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55089</commentid>
    <comment_count>17</comment_count>
      <attachid>10468</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-08 15:48:24 -0700</bug_when>
    <thetext>Comment on attachment 10468
Improved patch

A few things here.

I recently re-read the spec, and I realize now that the grammar requires one to always specify a CSS cursor type, but that one can also optionally specify a list of URIs before that cursor type.  One may not specify a list of cursor types (which is unfortunate).

This however, leads itself to a nice design on our part.  RenderStyle::cursor() can always hold the last CSS cursor type, and there can be a separate fallback list (RenderStyle::cursors() in your patch) which is preferred over that cursor type if available.

1. We can&apos;t to SVG &lt;cursor&gt; element lookup at parse time.  That breaks an js insertion/modification/removal of &lt;cursor&gt; elements.

2. Might as well fix CSS3 hotspots while we&apos;re here... right now the code goes out of its way to not support them. ;)

3. This should probably only be allowed during quirks mode:
+            if (!value) { // no value after url list (MSIE 5 compatibility)

4.  This needs to use a setter:
+            style-&gt;cursors() = parentStyle-&gt;cursors();

5.  I&apos;m not sure storing a Vector of CSSCursorImageValues is a good idea.  RenderStyles are really tight on space, and I think that Vector is at least 8 bytes in size (which is at least 4 bytes bigger than we need to be using here).  See my patch for how I used a pointer to a singly-linked list instead.

I&apos;m not sure it&apos;s a good idea to only do the image load at runtime.
+            CachedImage* cimage = cursors[i]-&gt;image(node-&gt;document()-&gt;docLoader());

This can be a const IntPoint&amp;, although that&apos;s not critical:
+static NSCursor* createCustomCursor(Image* image, IntPoint hotspot)

So this is going to need at least one more round.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55167</commentid>
    <comment_count>18</comment_count>
      <attachid>10483</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-09-10 00:18:59 -0700</bug_when>
    <thetext>Created attachment 10483
Another go

This patch is a &quot;merge&quot; between Eric&apos;s and my old patch. It should
address most of the current issues.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55177</commentid>
    <comment_count>19</comment_count>
      <attachid>10483</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-10 01:45:50 -0700</bug_when>
    <thetext>Comment on attachment 10483
Another go

Storing a Vector on RenderStyle is not a good idea.  That uses at least 4 more bytes than it needs to.  Storing a pointer to a vector would be OK, or using a list, both would work (personally I&apos;m partial to the list).

Creating a CSSValueList unconditionally, and then deleting it if not needed is wasteful.

+        CSSValueList* list = new CSSValueList;

A better method is to have an if in your while statement which checks
if (!list)
    list = new CSSValueList;

Copy-paste error, you set the X value of the hotspot twice:
+                    hotspot.setX(value-&gt;fValue);

Also, you don&apos;t properly error out when it&apos;s
cursor: url(&quot;foo.png&quot;) 1, auto;
a single number should be an error.

I still would argue that a missing last value should only be allowed in quirks mode:

+            if (!value) { // no value after url list (MSIE 5 compatibility)

+                        style-&gt;addCursor(primitiveValue-&gt;getStringValue().deprecatedString().mid(1));

This doesn&apos;t need to use a deprecatedString.  .substring(1) will do the same as .mid(1)

Otherwise it looks fine.
Need one more round on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55189</commentid>
    <comment_count>20</comment_count>
      <attachid>10487</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-09-10 11:00:27 -0700</bug_when>
    <thetext>Created attachment 10487
Another go

Again, another attempt to address the issues in the last review.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55199</commentid>
    <comment_count>21</comment_count>
      <attachid>10487</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-09-10 12:58:28 -0700</bug_when>
    <thetext>Comment on attachment 10487
Another go

+            if (uri.find(&quot;#&quot;) == 0) {

This is an inefficient way to figure out if the first character of a string is a &quot;#&quot; that needlessly searches the entire string for &quot;#&quot; characters when there are none. An efficient way would be to use uri[0] == &apos;#&apos; or uri.startsWith(&quot;#&quot;).

+        if (!strict &amp;&amp; value-&gt;id == CSS_VAL_HAND) { // MSIE 5 compatibility :/
+            id = CSS_VAL_POINTER;
+            valid_primitive = true;
+        } else if (value-&gt;id &gt;= CSS_VAL_AUTO &amp;&amp; value-&gt;id &lt;= CSS_VAL_HELP)

How does the CSS_VAL_AUTO case here work? I don&apos;t see it setting id, and it looks to me like code below in the if (valid_primitive) block isn&apos;t going to work if id is not set.

I would fine the code easier to read without this else:

+        else
+            delete list;
+        if (!strict &amp;&amp; value-&gt;id == CSS_VAL_HAND) { // MSIE 5 compatibility :/

Both the &quot;delete list&quot; and the &quot;if (!strict&quot; line run only if the if above returns false, but it&apos;s hard to figure that out because of the else.

The RenderPath.cpp seems unrelated to cursors, so should be landed separately.

+                Element* e = node-&gt;document()-&gt;getElementById((*cursors)[i].cursorFragmentId.deprecatedString());

What&apos;s the .deprecatedString() for here? I think that will just cause it to copy the string an extra time or two!

Looks like there&apos;s a logic error. If SVG_SUPPORT is on and the tag does not have the name &quot;cursorTag&quot;, then cimage can be null, and we&apos;ll crash on the:

+            if (cimage-&gt;image()-&gt;isNull())

Why &quot;WebCore::&quot; in WebCore::SVGNames::cursorTag? The usual idiom is to put &quot;using namespace SVGNames&quot; at the top of the file and then just say &quot;cursorTag&quot;, but in any case there&apos;s no reason to say WebCore:: here.

Maybe we could overload the Cursor constructor instead of adding an optional parameter. That&apos;s more efficient when not passing the parameter, and eliminates the need to include the IntPoint.h header in Cursor.h. Or maybe the hotSpot parameter should not be optional -- I think that would be good, and in that case there&apos;s no need to include IntPoint.h either (a forward declaration will suffice).

+    RefPtr&lt;CursorList&gt; cursor_data;

I suggest cursorData instead.

+    Vector&lt;CursorData&gt; m_impl;

How about making that member private?

+    const CursorData &amp;operator[](int i) const {
+        return m_impl[i];
+    }
+    const CursorData &amp;operator[](int i) {
+        return m_impl[i];
+    }

If both overloads return a &quot;const CursorData&amp;&quot; then we don&apos;t need overloading (can just keep the const version). Also, the &quot;&amp;&quot; should be next to &quot;CursorData&quot;, not &quot;operator&quot;. I think we could call it m_vector instead of m_impl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55205</commentid>
    <comment_count>22</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-09-10 13:45:47 -0700</bug_when>
    <thetext>Hi Darin,

(In reply to comment #21)
&gt; +        if (!strict &amp;&amp; value-&gt;id == CSS_VAL_HAND) { // MSIE 5 compatibility :/
&gt; +            id = CSS_VAL_POINTER;
&gt; +            valid_primitive = true;
&gt; +        } else if (value-&gt;id &gt;= CSS_VAL_AUTO &amp;&amp; value-&gt;id &lt;= CSS_VAL_HELP)
&gt; 
&gt; How does the CSS_VAL_AUTO case here work? I don&apos;t see it setting id, and it
&gt; looks to me like code below in the if (valid_primitive) block isn&apos;t going to
&gt; work if id is not set.

The counter ids are only added at the end of the list, and I think the parsedValue
is the block that should work (for the list) instead of valid_primitive block. Correct
me if you think that is wong, but that is how I remember from the original patch.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55206</commentid>
    <comment_count>23</comment_count>
      <attachid>10491</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-09-10 13:58:18 -0700</bug_when>
    <thetext>Created attachment 10491
Another attempt

This should address most of Darins issues.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55225</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-09-10 19:50:18 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; +        if (!strict &amp;&amp; value-&gt;id == CSS_VAL_HAND) { // MSIE 5 compatibility :/
&gt; &gt; +            id = CSS_VAL_POINTER;
&gt; &gt; +            valid_primitive = true;
&gt; &gt; +        } else if (value-&gt;id &gt;= CSS_VAL_AUTO &amp;&amp; value-&gt;id &lt;= CSS_VAL_HELP)
&gt; &gt; 
&gt; &gt; How does the CSS_VAL_AUTO case here work? I don&apos;t see it setting id, and it
&gt; &gt; looks to me like code below in the if (valid_primitive) block isn&apos;t going to
&gt; &gt; work if id is not set.
&gt; 
&gt; The counter ids are only added at the end of the list, and I think the
&gt; parsedValue is the block that should work (for the list) instead of
&gt; valid_primitive block. Correct me if you think that is wong, but that
&gt; is how I remember from the original patch.

I do think that&apos;s wrong. Look carefully at the part of the patch I&apos;m quoting. If we ever hit this code, then there is no list. Either that code is wrong and unreachable (and should be deleted), or it&apos;s wrote and reachable (so we need a test case), or I&apos;m mistaken. But I think I&apos;m reading this right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55226</commentid>
    <comment_count>25</comment_count>
      <attachid>10491</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-09-10 19:56:35 -0700</bug_when>
    <thetext>Comment on attachment 10491
Another attempt

Some nitpicks:

+            for (unsigned i = 0;i &lt; cursors-&gt;size();++i)

Missing spaces after the semicolons.

+        if (list) {
+            list-&gt;append(value);
+            return list;
+        }
+        ASSERT(value);

The ASSERT(value) should go before the if.

+                    if (primitiveValue-&gt;getStringValue().find(&quot;#&quot;) == 0)

You fixed one of these, but not the other!

+        Cursor(Image*, IntPoint hotspot);

Should be const IntPoint&amp; instead of IntPoint, and in fact some of the implementations, like the CursorQt.cpp ones, are like that.

+        inherited.access()-&gt;cursorData = new CursorList();

It&apos;s slightly nicer to just do &quot;new CursorList&quot; in a case like this, I think.

+class CursorList : public Shared&lt;CursorList&gt;
+{

Brace should be on the same line as the class declaration.

+    void setCursors(CursorList*);

This should take a PassRefPtr&lt;CursorList&gt; since it takes ownership of the passed-in object.

+    CachedImage* cursorImage; // weak pointer, the CSSValueImage takes care of deleting cursorImage

I&apos;m a little concerned about this. What&apos;s the guarantee that the RenderStyle won&apos;t outlast the CSSValueImage? Is there any other RenderStyle code that uses this ownership model?

I&apos;m going to say review- because of the find() and because of my previous comment about what I called the &quot;CSS_VAL_AUTO case&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55241</commentid>
    <comment_count>26</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-09-11 05:17:34 -0700</bug_when>
    <thetext>Hi Darin,

&gt; I do think that&apos;s wrong. Look carefully at the part of the patch I&apos;m quoting.
&gt; If we ever hit this code, then there is no list. Either that code is wrong and
&gt; unreachable (and should be deleted), or it&apos;s wrote and reachable (so we need a
&gt; test case), or I&apos;m mistaken. But I think I&apos;m reading this right.

I think I see what you mean. I&apos;ll post a new patch, with hopefully cleaner
structure and fixing this issue.
Cheers,

Rob. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55242</commentid>
    <comment_count>27</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-09-11 05:20:53 -0700</bug_when>
    <thetext>(In reply to comment #25)
Hi Darin,

&gt; I&apos;m a little concerned about this. What&apos;s the guarantee that the RenderStyle
&gt; won&apos;t outlast the CSSValueImage? Is there any other RenderStyle code that uses
&gt; this ownership model?

I think setListStyleImage does the same.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55243</commentid>
    <comment_count>28</comment_count>
      <attachid>10499</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-09-11 05:22:11 -0700</bug_when>
    <thetext>Created attachment 10499
Even better patch

This one should hopefully address Darin&apos;s issues.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55458</commentid>
    <comment_count>29</comment_count>
      <attachid>10499</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-13 15:52:05 -0700</bug_when>
    <thetext>Comment on attachment 10499
Even better patch

+                    hotSpot.setX(int(static_cast&lt;SVGCursorElement*&gt;(e)-&gt;xBaseValue()-&gt;value()));
+                    hotSpot.setY(int(static_cast&lt;SVGCursorElement*&gt;(e)-&gt;yBaseValue()-&gt;value()));

BaseValue is wrong here.  I we should probably make those accessors private, and only expose them to the classes that need them.

x() and y() is what you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55578</commentid>
    <comment_count>30</comment_count>
      <attachid>10574</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-09-15 04:42:17 -0700</bug_when>
    <thetext>Created attachment 10574
Another attempt

This patch should address Eric&apos;s issue with xBaseVal.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55618</commentid>
    <comment_count>31</comment_count>
      <attachid>10574</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-15 15:10:58 -0700</bug_when>
    <thetext>Comment on attachment 10574
Another attempt

I&apos;m still not a big fan of needing a separate class &quot;CursorList&quot; to hold all the nodes, when the individual CursorData nodes could just form a singly linked list and know how to delete their &quot;next&quot; pointer when they are themselves deleted.

This would also remove the need for RenderStyle::addCursor...


+using namespace SVGNames;

needs to be inside a SVG_SUPPORT block in FrameView.cpp

Is there any need to check the type here?
+            value = valueList-&gt;next(); // comma

We&apos;ll need some more tests.

It&apos;s not clear to me how the CursorList is ever destroyed.

It&apos;s also not clear to me that two divs, one inside the other, both which use independent cursor fallback will properly function (i.e. when is the cursors() list cleared?)

I don&apos;t think we can land this without at least answering the leak question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55888</commentid>
    <comment_count>32</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-19 00:35:33 -0700</bug_when>
    <thetext>testing (bugzilla is a bit wacky right now)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55889</commentid>
    <comment_count>33</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-09-19 00:36:43 -0700</bug_when>
    <thetext>Yet another test

(In reply to comment #31)
&gt; (From update of attachment 10574 [edit])
&gt; I&apos;m still not a big fan of needing a separate class &quot;CursorList&quot; to hold all
&gt; the nodes, when the individual CursorData nodes could just form a singly linked
&gt; list and know how to delete their &quot;next&quot; pointer when they are themselves
&gt; deleted.
&gt; 
&gt; This would also remove the need for RenderStyle::addCursor...
&gt; 
&gt; 
&gt; +using namespace SVGNames;
&gt; 
&gt; needs to be inside a SVG_SUPPORT block in FrameView.cpp
&gt; 
&gt; Is there any need to check the type here?
&gt; +            value = valueList-&gt;next(); // comma
&gt; 
&gt; We&apos;ll need some more tests.
&gt; 
&gt; It&apos;s not clear to me how the CursorList is ever destroyed.
&gt; 
&gt; It&apos;s also not clear to me that two divs, one inside the other, both which use
&gt; independent cursor fallback will properly function (i.e. when is the cursors()
&gt; list cleared?)
&gt; 
&gt; I don&apos;t think we can land this without at least answering the leak question.
&gt; </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56214</commentid>
    <comment_count>34</comment_count>
      <attachid>10701</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-09-22 02:48:06 -0700</bug_when>
    <thetext>Created attachment 10701
css parser fixes

I added some tests for incorrect css3 cursor syntax and css parser code to handle these errors.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56215</commentid>
    <comment_count>35</comment_count>
      <attachid>10701</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-22 03:03:52 -0700</bug_when>
    <thetext>Comment on attachment 10701
css parser fixes

I don&apos;t think we want this:
+#if SVG_SUPPORT
+            if (uri.startsWith(&quot;#&quot;)) {
+                if (!list)
+                    list = new CSSValueList; 
+                list-&gt;append(new CSSPrimitiveValue(uri, CSSPrimitiveValue::CSS_URI));
+                value = valueList-&gt;next();
+            } else
+#endif

That treats url(#foo) differently from url(foo.png).  The latter allows CSS3 hotspots, the former does not.  I&apos;m not sure which should win out (the &lt;cursor&gt; specified hotspot or the css3  one, but I don&apos;t think it should be an error.)

I&apos;m surprised this is only an error in strict mode:
+                if (strict &amp;&amp; value &amp;&amp; !(value-&gt;unit == Value::Operator &amp;&amp; value-&gt;iValue == &apos;,&apos;))
+                    return false;

If it&apos;s only going to be an error in strict mode, maybe it only needs to be required in strict mode?  Or maybe in non-strict mode an ; is also allowed?

I think this function should have a different name to denote its different behavior:
style-&gt;addCursor(primitiveValue-&gt;getStringValue().substring(1))
perhaps addSVGCursor ?

You might also want to call the parameter fragmentId:
+void RenderStyle::addCursor(const String&amp; id)

Great patch.  This has been an awfully long journey to get this landed, but I think you&apos;re basically there.  I don&apos;t need to see the code again.   But if you could make those tweaks before landing that would be great.  I still need to check the test case.

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56216</commentid>
    <comment_count>36</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-22 03:11:07 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; I&apos;m surprised this is only an error in strict mode:
&gt; +                if (strict &amp;&amp; value &amp;&amp; !(value-&gt;unit == Value::Operator &amp;&amp;
&gt; value-&gt;iValue == &apos;,&apos;))
&gt; +                    return false;
&gt; 
&gt; If it&apos;s only going to be an error in strict mode, maybe it only needs to be
&gt; required in strict mode?  Or maybe in non-strict mode an ; is also allowed?

What I meant there, was that perhaps things should be &quot;more strict&quot; in non-strict mode.  Only a few non-comma values are allowed in non-strict mode, yes?

Also, I&apos;m wondering if in strict mode .myclass { cursor: url(foo.png) } would crash?  Or at least it would end up calling valueList-&gt;next() a few more times than you meant it too, or?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56217</commentid>
    <comment_count>37</comment_count>
      <attachid>10702</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-09-22 03:16:57 -0700</bug_when>
    <thetext>Created attachment 10702
Improved testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56218</commentid>
    <comment_count>38</comment_count>
      <attachid>10701</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-22 03:18:28 -0700</bug_when>
    <thetext>Comment on attachment 10701
css parser fixes

After discussing this with rob more over irc, this needs one more round.  At least to fix inheritance if nothing else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56219</commentid>
    <comment_count>39</comment_count>
      <attachid>10702</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-22 03:40:46 -0700</bug_when>
    <thetext>Comment on attachment 10702
Improved testcase

Rob,
So it seems after discussing this with you over IRC, we&apos;ll need at least 3 test cases:
1.  a quirks mode test
2.  a strict mode test
3.  an svg test

The latter two could probably be rolled into a single CDF document (xhtml wrapping inline svg) if you&apos;d like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56310</commentid>
    <comment_count>40</comment_count>
      <attachid>10726</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-09-23 13:55:04 -0700</bug_when>
    <thetext>Created attachment 10726
Improved patch+testcases

This patch should address most of Erics issues. It adds a new test for cursors in svg + strict mode, using cdf, called cursorfallback.xml. I am not sure a quirks test is needed, since it should behave the same as
strict according to ap and myself, so it would be a copy of css3-cursor-test2, just without the doctype. Let me know whether the tests should be improved.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56331</commentid>
    <comment_count>41</comment_count>
      <attachid>10726</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-24 02:18:37 -0700</bug_when>
    <thetext>Comment on attachment 10726
Improved patch+testcases

I&apos;m still don&apos;t think this is needed:
+#if SVG_SUPPORT
+            if (uri.startsWith(&quot;#&quot;)) {
+                if (!list)
+                    list = new CSSValueList; 
+                list-&gt;append(new CSSPrimitiveValue(uri, CSSPrimitiveValue::CSS_URI));
+            } else
+#endif
All you&apos;re doing is intentionally disabling hot-spot parsing for SVGs.  I don&apos;t think that&apos;s right considering CSS3.

Other than that, things look fine.  We&apos;ll talk over irc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56336</commentid>
    <comment_count>42</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-24 02:29:07 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 10726 [edit])
&gt; I&apos;m still don&apos;t think this is needed:
...

My mistake.  disregard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56355</commentid>
    <comment_count>43</comment_count>
      <attachid>10738</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-09-24 07:01:44 -0700</bug_when>
    <thetext>Created attachment 10738
Improved testcases

This patch has testcases splitted out for quirks and strict mode. New testcases added
for different inheritance scenarios, and out-of-range hotspots.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56356</commentid>
    <comment_count>44</comment_count>
      <attachid>10738</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-24 07:24:20 -0700</bug_when>
    <thetext>Comment on attachment 10738
Improved testcases

This looks great.

We discussed a spelling error, and testing in IE before landing over IRC.  But this looks good to go.

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8206</attachid>
            <date>2006-05-10 02:51:23 -0700</date>
            <delta_ts>2006-05-10 02:51:23 -0700</delta_ts>
            <desc>cursor should be &quot;hand&quot; on circle </desc>
            <filename>anchor-hand.svg</filename>
            <type>image/svg+xml</type>
            <size>488</size>
            <attacher name="jay">jay</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQ08
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyINICAgICB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayINd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIN
DT4NPGc+DSAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZp
bGw9IiNjY2EiIHN0cm9rZT0ibm9uZSIgaWQ9Im1lbnVCRyIgLz4NDSAgIA0NICAgCiAgICAKICAg
IDxnIGlkPSJzeW1ib2wyIj4NICAgICAgICA8dGl0bGU+Z2FtZXM8L3RpdGxlPg0gICAgICAgIDxh
IHhsaW5rOmhyZWY9Imh0dHA6Ly93d3cucGVlcG8uY29tIj4NPGNpcmNsZSBjeD0iMTU1IiBjeT0i
MTQwIiByPSIzMDAiIGZpbGw9IiMzMzMiIC8+DSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
L2E+IA0gICAgPC9nPg0gCgo8L2c+Cg0gIDwvc3ZnPg0=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8441</attachid>
            <date>2006-05-21 03:35:07 -0700</date>
            <delta_ts>2006-05-23 13:26:22 -0700</delta_ts>
            <desc>First attempt</desc>
            <filename>6002.diff</filename>
            <type>text/plain</type>
            <size>21657</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNDUxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMDYtMDUtMjEgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAxCisgICAgICAg
IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9tIGN1cnNvcnMKKyAgICAgICAg
Rml4IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTYw
MDIKKyAgICAgICAgV2ViS2l0IGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSBTVkcgPGN1cnNvcj4g
ZWxlbWVudAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzdmcgY3Vyc29yIGltYWdlcy4gQWxz
byBtYWtlIHN1cmUgaG90c3BvdAorICAgICAgICBzZXR0aW5ncyBhcmUgaGFuZGxlZCBjb3JyZWN0
bHkuIEZpbmFsbHkgaW1wbGVtZW50IGZhbGxiYWNrLgorCisgICAgICAgICogY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJ
bWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OkNT
U0N1cnNvckltYWdlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1
ZTo6fkNTU0N1cnNvckltYWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmg6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjpob3RzcG90KToKKyAgICAg
ICAgKiBjc3MvY3NzcGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VWYWx1ZSk6CisgICAgICAgICogY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwOgorICAgICAgICAoU1ZHQ3Vyc29yRWxlbWVudDo6
U1ZHQ3Vyc29yRWxlbWVudCk6CisgICAgICAgIChTVkdDdXJzb3JFbGVtZW50Ojp+U1ZHQ3Vyc29y
RWxlbWVudCk6CisgICAgICAgIChTVkdDdXJzb3JFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RDdXJzb3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL0N1cnNvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DdXJzb3JN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDdXN0b21DdXJzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6Q3Vyc29yOjpDdXJzb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9yZW5kZXJfc3R5
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29ySW5mbzo6fkN1cnNvckluZm8pOgorICAg
ICAgICAoV2ViQ29yZTo6Q3Vyc29ySW5mbzo6Y2xlYXJDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVJbmhlcml0ZWREYXRhOjpTdHlsZUluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVJbmhlcml0ZWREYXRhOjp+U3R5bGVJbmhlcml0ZWREYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6ZGlmZik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
YWRkQ3Vyc29yKToKKyAgICAgICAgKiByZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y3Vyc29ycyk6CisKIDIwMDYtMDUtMjEgIEFuZGVycyBD
YXJsc3NvbiAgPGFjYXJsc3NvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkLgpJbmRl
eDogV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lv
biAxNDUxMCkKKysrIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1NCw4ICs1NTQsOCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOgotICAgICAgICBpZiAoc3R5bGUt
PmN1cnNvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KHN0eWxlLT5jdXJzb3JJbWFnZSgpLT51cmwoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkp
OworICAgICAgICBpZiAoc3R5bGUtPmN1cnNvcnMoKSkKKyAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmN1cnNvcnMoKS0+Y3Vyc29yX2ltYWdlLT51cmwoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpOwogICAgICAgICBzd2l0Y2ggKHN0eWxlLT5jdXJz
b3IoKSkgewogICAgICAgICAgICAgY2FzZSBDVVJTT1JfQVVUTzoKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7CkluZGV4OiBXZWJDb3Jl
L2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NJbWFn
ZVZhbHVlLmNwcAkocmV2aXNpb24gMTQ1MTApCisrKyBXZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNCArNjYsMTMgQEAgQ2FjaGVkSW1hZ2UqIENTU0lt
YWdlVmFsdWU6OmltYWdlKERvY0xvYQogICAgIHJldHVybiBtX2ltYWdlOwogfQogCitDU1NDdXJz
b3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBJbnRQb2ludCAmcCwgU3R5bGVCYXNlKiBzdHlsZSkKKyAgICA6IENTU0ltYWdlVmFsdWUodXJs
LCBzdHlsZSkKKyAgICAsIG1faG90c3BvdChwKQoreworfQorCitDU1NDdXJzb3JJbWFnZVZhbHVl
Ojp+Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSgpCit7Cit9CiB9CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NJ
bWFnZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCShy
ZXZpc2lvbiAxNDUxMCkKKysrIFdlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBDU1NJbWFnZVZhbHVlX0gKICNkZWZpbmUg
Q1NTSW1hZ2VWYWx1ZV9ICiAKKyNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkNTU1By
aW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkT2JqZWN0Q2xpZW50LmgiCiAKQEAgLTQ0
LDYgKzQ1LDE3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fYWNjZXNzZWRJbWFnZTsKIH07CiAK
K2NsYXNzIENTU0N1cnNvckltYWdlVmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VWYWx1ZQoreworcHVi
bGljOgorICAgIENTU0N1cnNvckltYWdlVmFsdWUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IElu
dFBvaW50ICYsIFN0eWxlQmFzZSopOworICAgIHZpcnR1YWwgfkNTU0N1cnNvckltYWdlVmFsdWUo
KTsKKworICAgIEludFBvaW50IGhvdHNwb3QoKSBjb25zdCB7IHJldHVybiBtX2hvdHNwb3Q7IH0K
KworcHJvdGVjdGVkOgorICAgIEludFBvaW50IG1faG90c3BvdDsKK307CiB9IC8vIG5hbWVzcGFj
ZQogCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcAkocmV2aXNpb24gMTQ1MTApCisrKyBXZWJDb3Jl
L2Nzcy9jc3NwYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0MywxMiBAQAogI2lu
Y2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lvbi5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaWYgU1ZHX1NVUFBPUlQKKyNpbmNsdWRlICJYTGlua05hbWVz
LmgiCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdDdXJzb3JFbGVtZW50Lmgi
CisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKKyNlbmRpZgogI2luY2x1ZGUgIkZvbnRG
YW1pbHlWYWx1ZS5oIgogI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgogI2luY2x1ZGUgIk1lZGlhTGlz
dC5oIgpAQCAtNjU5LDIxICs2NjUsNDUgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOgot
ICAgICAgICAvLyAgWyBhdXRvIHwgY3Jvc3NoYWlyIHwgZGVmYXVsdCB8IHBvaW50ZXIgfCBwcm9n
cmVzcyB8IG1vdmUgfCBlLXJlc2l6ZSB8IG5lLXJlc2l6ZSB8CisgICAgICAgIC8vICBbPHVyaT4s
XSogWyBhdXRvIHwgY3Jvc3NoYWlyIHwgZGVmYXVsdCB8IHBvaW50ZXIgfCBwcm9ncmVzcyB8IG1v
dmUgfCBlLXJlc2l6ZSB8IG5lLXJlc2l6ZSB8CiAgICAgICAgIC8vIG53LXJlc2l6ZSB8IG4tcmVz
aXplIHwgc2UtcmVzaXplIHwgc3ctcmVzaXplIHwgcy1yZXNpemUgfCB3LXJlc2l6ZSB8IHRleHQg
fAogICAgICAgICAvLyB3YWl0IHwgaGVscCBdIF0gfCBpbmhlcml0Ci0gICAgICAgIGlmICghc3Ry
aWN0ICYmIGlkID09IENTU19WQUxfSEFORCkgeyAvLyBNU0lFIDUgY29tcGF0aWJpbGl0eSA6Lwor
ICAgICAgICBDU1NWYWx1ZUxpc3QgKmxpc3QgPSBuZXcgQ1NTVmFsdWVMaXN0OworICAgICAgICB3
aGlsZSAodmFsdWUgJiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkp
IHsKKyAgICAgICAgICAgIFN0cmluZyB1cmkgPSBwYXJzZVVSTChkb21TdHJpbmcodmFsdWUtPnN0
cmluZykpOworI2lmIFNWR19TVVBQT1JUCisgICAgICAgICAgICBpZiAodXJpLmZpbmQoIiMiKSA9
PSAwKSB7CisgICAgICAgICAgICAgICAgRWxlbWVudCAqZSA9IGRvY3VtZW50KCktPmdldEVsZW1l
bnRCeUlkKHVyaS5kZXByZWNhdGVkU3RyaW5nKCkubWlkKDEpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoZS0+aGFzVGFnTmFtZShXZWJDb3JlOjpTVkdOYW1lczo6Y3Vyc29yVGFnKSkgeworICAgICAg
ICAgICAgICAgICAgICBTdHJpbmcgdXJsID0gZS0+Z2V0QXR0cmlidXRlKFhMaW5rTmFtZXM6Omhy
ZWZBdHRyKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHggPSBpbnQoc3RhdGljX2Nhc3Q8U1ZH
Q3Vyc29yRWxlbWVudCAqPihlKS0+eCgpLT5iYXNlVmFsKCktPnZhbHVlKCkpOworICAgICAgICAg
ICAgICAgICAgICBpbnQgeSA9IGludChzdGF0aWNfY2FzdDxTVkdDdXJzb3JFbGVtZW50ICo+KGUp
LT55KCktPmJhc2VWYWwoKS0+dmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChuZXcgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZShTdHJpbmcoS1VSTChzdHlsZUVsZW1lbnQtPmJh
c2VVUkwoKS5kZXByZWNhdGVkU3RyaW5nKCksIHVybC5kZXByZWNhdGVkU3RyaW5nKCkpLnVybCgp
KSwgSW50UG9pbnQoeCwgeSksIHN0eWxlRWxlbWVudCkpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZQorI2VuZGlmCisgICAgICAgICAgICBpZiAoIXVyaS5pc0VtcHR5KCkp
CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NJbWFnZVZhbHVlKFN0cmluZyhL
VVJMKHN0eWxlRWxlbWVudC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdXJpLmRlcHJl
Y2F0ZWRTdHJpbmcoKSkudXJsKCkpLCBzdHlsZUVsZW1lbnQpKTsKKyAgICAgICAgICAgIHZhbHVl
TGlzdC0+bmV4dCgpOyAvLyBjb21tYQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxpc3QtPm5l
eHQoKTsKKyAgICAgICAgfQorICAgICAgICBpZihsaXN0LT5sZW5ndGgoKSkgeworICAgICAgICAg
ICAgcGFyc2VkVmFsdWUgPSBsaXN0OworICAgICAgICAgICAgaWYgKCF2YWx1ZSkgeyAvLyBubyB2
YWx1ZSBhZnRlciB1cmwgbGlzdCAoTVNJRSA1IGNvbXBhdGliaWxpdHkpCisgICAgICAgICAgICB9
IGVsc2UgaWYgKCFzdHJpY3QgJiYgdmFsdWUtPmlkID09IENTU19WQUxfSEFORCkgeyAvLyBNU0lF
IDUgY29tcGF0aWJpbGl0eSA6LworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QT0lOVEVSKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KHZhbHVlLT5pZCA+PSBDU1NfVkFMX0FVVE8gJiYgdmFsdWUtPmlkIDw9IENTU19WQUxfSEVMUCkK
KyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
LT5pZCkpOworICAgICAgICAgICAgdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBkZWxldGUgbGlzdDsKKyAg
ICAgICAgaWYgKCFzdHJpY3QgJiYgdmFsdWUtPmlkID09IENTU19WQUxfSEFORCkgeyAvLyBNU0lF
IDUgY29tcGF0aWJpbGl0eSA6LwogICAgICAgICAgICAgaWQgPSBDU1NfVkFMX1BPSU5URVI7CiAg
ICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKGlk
ID49IENTU19WQUxfQVVUTyAmJiBpZCA8PSBDU1NfVkFMX0hFTFApCisgICAgICAgIH0gZWxzZSBp
ZiAodmFsdWUtPmlkID49IENTU19WQUxfQVVUTyAmJiB2YWx1ZS0+aWQgPD0gQ1NTX1ZBTF9IRUxQ
KQogICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAo
dmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKLSAgICAgICAgICAg
IFN0cmluZyB1cmkgPSBwYXJzZVVSTChkb21TdHJpbmcodmFsdWUtPnN0cmluZykpOwotICAgICAg
ICAgICAgaWYgKCF1cmkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUg
PSBuZXcgQ1NTSW1hZ2VWYWx1ZShTdHJpbmcoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5k
ZXByZWNhdGVkU3RyaW5nKCksIHVyaS5kZXByZWNhdGVkU3RyaW5nKCkpLnVybCgpKSwgc3R5bGVF
bGVtZW50KTsKLSAgICAgICAgICAgICAgICB2YWx1ZUxpc3QtPm5leHQoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dS
T1VORF9BVFRBQ0hNRU5UOgpJbmRleDogV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJKHJldmlzaW9u
IDE0NTEwKQorKysgV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyNDUsMjMgKzIyNDUsMzkgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBy
b3BlcnR5KGludAogICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOgogICAgICAgICBpZiAoaXNJbmhl
cml0KSB7CiAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKHBhcmVudFN0eWxlLT5jdXJzb3Io
KSk7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29ySW1hZ2UocGFyZW50U3R5bGUtPmN1cnNv
ckltYWdlKCkpOworICAgICAgICAgICAgc3R5bGUtPmFkZEN1cnNvcihwYXJlbnRTdHlsZS0+Y3Vy
c29ycygpLT5jdXJzb3JfaW1hZ2UpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChpc0luaXRpYWwpIHsKICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IoUmVu
ZGVyU3R5bGU6OmluaXRpYWxDdXJzb3IoKSk7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29y
SW1hZ2UoMCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlKSB7CisgICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeworICAg
ICAgICAgICAgQ1NTVmFsdWVMaXN0ICpsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4o
dmFsdWUpOworICAgICAgICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOworICAgICAgICAg
ICAgc3R5bGUtPnNldEN1cnNvcihDVVJTT1JfQVVUTyk7CisgICAgICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGxlbjsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENTU1Zh
bHVlICppdGVtID0gbGlzdC0+aXRlbShpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWl0ZW0tPmlz
UHJpbWl0aXZlVmFsdWUoKSkgY29udGludWU7CisgICAgICAgICAgICAgICAgcHJpbWl0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAg
ICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKKyAgICAgICAg
ICAgICAgICBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgeworI2lmIFNW
R19TVVBQT1JUCisgICAgICAgICAgICAgICAgICAgIENTU0N1cnNvckltYWdlVmFsdWUqIGltYWdl
ID0gc3RhdGljX2Nhc3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSo+KHByaW1pdGl2ZVZhbHVlKTsKKyAg
ICAgICAgICAgICAgICAgICAgc3R5bGUtPmFkZEN1cnNvcihpbWFnZS0+aW1hZ2UoZWxlbWVudC0+
ZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCkpLCBpbWFnZS0+aG90c3BvdCgpKTsKKyNlbHNlCisgICAg
ICAgICAgICAgICAgICAgIENTU0ltYWdlVmFsdWUqIGltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTSW1h
Z2VWYWx1ZSo+KHByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgc3R5bGUtPmFk
ZEN1cnNvcihpbWFnZS0+aW1hZ2UoZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCkpKTsK
KyNlbmRpZgorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0lERU5UKSB7CisgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3Io
KEVDdXJzb3IpKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpIC0gQ1NTX1ZBTF9BVVRPKSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHByaW1p
dGl2ZVZhbHVlKSB7CiAgICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmlt
aXRpdmVUeXBlKCk7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0lERU5UKSB7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcigoRUN1cnNvciko
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgLSBDU1NfVkFMX0FVVE8pKTsKLSAgICAgICAgICAg
ICAgICBzdHlsZS0+c2V0Q3Vyc29ySW1hZ2UoMCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHR5
cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKLSAgICAgICAgICAgICAgICBDU1NJ
bWFnZVZhbHVlKiBpbWFnZSA9IHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPihwcmltaXRpdmVW
YWx1ZSk7Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcihDVVJTT1JfQVVUTyk7Ci0g
ICAgICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvckltYWdlKGltYWdlLT5pbWFnZShlbGVtZW50
LT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0NTEwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDkgKzI1LDcgQEAKICNpbmNsdWRlICJTVkdDdXJzb3JF
bGVtZW50LmgiCiAKICNpbmNsdWRlICJBdHRyLmgiCi0jaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRMZW5ndGguaCIKQEAgLTM2LDE1ICszNCwxMiBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIFNWR0N1cnNvckVsZW1lbnQ6OlNWR0N1cnNvckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQgKmRvYykKLTogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2MpLCBT
VkdUZXN0cygpLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCksIFNWR1VSSVJlZmVyZW5j
ZSgpLCBDYWNoZWRPYmplY3RDbGllbnQoKQorOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvYyksIFNW
R1Rlc3RzKCksIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKSwgU1ZHVVJJUmVmZXJlbmNl
KCkKIHsKLSAgICBtX2NhY2hlZEltYWdlID0gMDsKIH0KIAogU1ZHQ3Vyc29yRWxlbWVudDo6flNW
R0N1cnNvckVsZW1lbnQoKQogewotICAgIGlmIChtX2NhY2hlZEltYWdlKQotICAgICAgICBtX2Nh
Y2hlZEltYWdlLT5kZXJlZih0aGlzKTsKIH0KIAogU1ZHQW5pbWF0ZWRMZW5ndGggKlNWR0N1cnNv
ckVsZW1lbnQ6OngoKSBjb25zdApAQCAtNjgsMTQgKzYzLDcgQEAgdm9pZCBTVkdDdXJzb3JFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgIHsKICAgICAgICAgaWYoU1ZHVGVzdHM6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKGF0dHIpKSByZXR1cm47CiAgICAgICAgIGlmKFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSByZXR1cm47Ci0gICAg
ICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSB7Ci0g
ICAgICAgICAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgICAgICAgICBtX2NhY2hlZElt
YWdlLT5kZXJlZih0aGlzKTsKLSAgICAgICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBvd25lckRvY3Vt
ZW50KCktPmRvY0xvYWRlcigpLT5yZXF1ZXN0SW1hZ2UoaHJlZigpLT5iYXNlVmFsKCkpOwotICAg
ICAgICAgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCi0gICAgICAgICAgICAgICAgbV9jYWNoZWRJbWFn
ZS0+cmVmKHRoaXMpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlm
IChTVkdVUklSZWZlcmVuY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSByZXR1cm47CiAK
ICAgICAgICAgU1ZHRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiAgICAgfQpJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAkocmV2aXNpb24gMTQ1MTApCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDE3ICszMCwxNSBAQAogI2luY2x1ZGUgIlNWR1Rlc3RzLmgiCiAjaW5jbHVkZSAiU1ZHVVJJ
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgot
I2luY2x1ZGUgIkNhY2hlZE9iamVjdENsaWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZQogewog
ICAgIGNsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoOwogCiAgICAgY2xhc3MgU1ZHQ3Vyc29yRWxlbWVu
dCA6IHB1YmxpYyBTVkdFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR1Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIENhY2hlZE9iamVjdENsaWVudAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlCiAgICAgewogICAgIHB1YmxpYzoKICAgICAg
ICAgU1ZHQ3Vyc29yRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCAqZG9jKTsKQEAgLTU0LDEyICs1Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICAgICAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cik7
CiAKLSAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9j
YWNoZWRJbWFnZTsgfQotCiAgICAgcHJpdmF0ZToKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1feDsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1feTsKLSAgICAgICAgQ2FjaGVkSW1hZ2UgKm1fY2FjaGVkSW1hZ2U7CiAgICAgfTsK
IH07CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAxNDUxMCkKKysrIFdlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTAsMTEgKzU1MCwxNyBAQCBzdGF0
aWMgQ3Vyc29yIHNlbGVjdEN1cnNvcihjb25zdCBNb3VzZUV2CiAgICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IG5vZGUgPyBub2RlLT5yZW5kZXJlcigpIDogMDsKICAgICBSZW5kZXJTdHlsZSog
c3R5bGUgPSByZW5kZXJlciA/IHJlbmRlcmVyLT5zdHlsZSgpIDogMDsKIAotICAgIGlmIChzdHls
ZSAmJiBzdHlsZS0+Y3Vyc29ySW1hZ2UoKSAmJiAhc3R5bGUtPmN1cnNvckltYWdlKCktPmltYWdl
KCktPmlzTnVsbCgpKQotICAgICAgICBpZiAoIXN0eWxlLT5jdXJzb3JJbWFnZSgpLT5pc0Vycm9y
SW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVybiBzdHlsZS0+Y3Vyc29ySW1hZ2UoKS0+aW1hZ2Uo
KTsKLSAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0eWxlID0gMDsgLy8gRmFsbGJhY2sgdG8g
Q1VSU09SX0FVVE8KKyAgICBpZiAoc3R5bGUgJiYgc3R5bGUtPmN1cnNvcnMoKSkgeworICAgICAg
ICBDdXJzb3JJbmZvICpjdXJzb3IgPSBzdHlsZS0+Y3Vyc29ycygpOworICAgICAgICBkbyB7Cisg
ICAgICAgICAgICAgaWYgKCFjdXJzb3ItPmN1cnNvcl9pbWFnZS0+aW1hZ2UoKS0+aXNOdWxsKCkg
JiYgIWN1cnNvci0+Y3Vyc29yX2ltYWdlLT5pc0Vycm9ySW1hZ2UoKSkKKyNpZiBTVkdfU1VQUE9S
VAorICAgICAgICAgICAgICAgIHJldHVybiBDdXJzb3IoY3Vyc29yLT5jdXJzb3JfaW1hZ2UtPmlt
YWdlKCksIGN1cnNvci0+Y3Vyc29yX2hvdHNwb3QpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY3Vyc29yLT5jdXJzb3JfaW1hZ2UtPmltYWdlKCk7CisjZW5kaWYKKyAgICAgICAgfSB3
aGlsZSAoKGN1cnNvciA9IGN1cnNvci0+bmV4dCkpOworICAgIH0KIAogICAgIHN3aXRjaCAoc3R5
bGUgPyBzdHlsZS0+Y3Vyc29yKCkgOiBDVVJTT1JfQVVUTykgewogICAgICAgICBjYXNlIENVUlNP
Ul9BVVRPOiB7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmgJKHJldmlzaW9uIDE0NTEwKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9DdXJzb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRl
ZiBDVVJTT1JfSAogI2RlZmluZSBDVVJTT1JfSAogCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKwog
I2lmZGVmIFdJTjMyCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCkBAIC01Myw3ICs1NSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDdXJzb3IgewogICAgIHB1YmxpYzoK
ICAgICAgICAgQ3Vyc29yKCkgOiBtX2ltcGwoMCkgeyB9Ci0gICAgICAgIEN1cnNvcihJbWFnZSop
OworICAgICAgICBDdXJzb3IoSW1hZ2UqLCBJbnRQb2ludCA9IEludFBvaW50KCkpOwogICAgICAg
ICBDdXJzb3IoY29uc3QgQ3Vyc29yJik7CiAgICAgICAgIH5DdXJzb3IoKTsKICAgICAgICAgQ3Vy
c29yJiBvcGVyYXRvcj0oY29uc3QgQ3Vyc29yJik7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21h
Yy9DdXJzb3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29y
TWFjLm1tCShyZXZpc2lvbiAxNDUxMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0N1cnNvck1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDEsMTQgKzQxLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIC8vIFNpbXBsZSBOU0N1cnNvciBjYWxscyBzaG91bGRuJ3QgbmVlZCBwcm90ZWN0aW9uLAog
Ly8gYnV0IGNyZWF0aW5nIGEgY3Vyc29yIHdpdGggYSBiYWQgaW1hZ2UgbWlnaHQgdGhyb3cuCiAK
LXN0YXRpYyBOU0N1cnNvciogY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWdlKiBpbWFnZSkKK3N0YXRp
YyBOU0N1cnNvciogY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWdlKiBpbWFnZSwgSW50UG9pbnQgcCkK
IHsKICAgICAvLyBGSVhNRTogVGhlIGN1cnNvciB3b24ndCBhbmltYXRlLiAgTm90IHN1cmUgaWYg
dGhhdCdzIGEgYmlnIGRlYWwuCiAgICAgTlNJbWFnZSogaW1nID0gaW1hZ2UtPmdldE5TSW1hZ2Uo
KTsKICAgICBpZiAoIWltZykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwotICAgIHJldHVybiBbW05TQ3Vyc29yIGFsbG9jXSBpbml0V2l0aEltYWdl
OmltZyBob3RTcG90Ok5TWmVyb1BvaW50XTsKKyAgICBOU1BvaW50IGhvdFNwb3RQb2ludCA9IHtw
LngoKSwgcC55KCl9OworICAgIHJldHVybiBbW05TQ3Vyc29yIGFsbG9jXSBpbml0V2l0aEltYWdl
OmltZyBob3RTcG90OmhvdFNwb3RQb2ludF07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKICAgICByZXR1cm4gMDsKIH0KQEAgLTc0LDggKzc1LDggQEAgc3RhdGljIE5TQ3Vyc29yKiBs
ZWFrTmFtZWRDdXJzb3IoY29uc3QgYwogICAgIHJldHVybiAwOwogfQogCi1DdXJzb3I6OkN1cnNv
cihJbWFnZSogaW1hZ2UpCi0gICAgOiBtX2ltcGwoS1dRUmV0YWluTlNSZWxlYXNlKGNyZWF0ZUN1
c3RvbUN1cnNvcihpbWFnZSkpKQorQ3Vyc29yOjpDdXJzb3IoSW1hZ2UqIGltYWdlLCBJbnRQb2lu
dCBwKQorICAgIDogbV9pbXBsKEtXUVJldGFpbk5TUmVsZWFzZShjcmVhdGVDdXN0b21DdXJzb3Io
aW1hZ2UsIHApKSkKIHsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX3N0eWxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmgJKHJldmlz
aW9uIDE0NTEwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc4Nyw2ICs3ODcsMTYgQEAgZW51bSBFUGFnZUJyZWFrIHsKICAgICBQQkFVVE8s
IFBCQUxXQVlTLCBQQkFWT0lECiB9OwogCitzdHJ1Y3QgQ3Vyc29ySW5mbyB7CisgICAgfkN1cnNv
ckluZm8oKTsKKyAgICB2b2lkIGNsZWFyQ3Vyc29yKCk7CisgICAgQ2FjaGVkSW1hZ2UgKmN1cnNv
cl9pbWFnZTsKKyNpZiBTVkdfU1VQUE9SVAorICAgIEludFBvaW50IGN1cnNvcl9ob3RzcG90Owor
I2VuZGlmCisgICAgc3RydWN0IEN1cnNvckluZm8gKm5leHQ7Cit9OworCiBjbGFzcyBTdHlsZUlu
aGVyaXRlZERhdGEgOiBwdWJsaWMgU2hhcmVkPFN0eWxlSW5oZXJpdGVkRGF0YT4KIHsKIHB1Ymxp
YzoKQEAgLTgwNSw3ICs4MTUsNyBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoIGxpbmVfaGVpZ2h0Owog
CiAgICAgQ2FjaGVkSW1hZ2UgKnN0eWxlX2ltYWdlOwotICAgIENhY2hlZEltYWdlICpjdXJzb3Jf
aW1hZ2U7CisgICAgQ3Vyc29ySW5mbyAqY3Vyc29yX2luZm87CiAKICAgICBGb250IGZvbnQ7CiAg
ICAgQ29sb3IgY29sb3I7CkBAIC0xMjg5LDcgKzEyOTksNyBAQCBwdWJsaWM6CiAKICAgICBFQ3Vy
c29yIGN1cnNvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVDdXJzb3I+KGluaGVyaXRl
ZF9mbGFncy5fY3Vyc29yX3N0eWxlKTsgfQogICAgIAotICAgIENhY2hlZEltYWdlICpjdXJzb3JJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Y3Vyc29yX2ltYWdlOyB9CisgICAgQ3Vy
c29ySW5mbyAqY3Vyc29ycygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Y3Vyc29yX2luZm87
IH0KIAogICAgIHNob3J0IHdpZG93cygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+d2lkb3dz
OyB9CiAgICAgc2hvcnQgb3JwaGFucygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+b3JwaGFu
czsgfQpAQCAtMTQ5Miw3ICsxNTAyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhZGRpbmdS
aWdodChMZW5ndGggdikgIHsgIFNFVF9WQVIoc3Vycm91bmQscGFkZGluZy5yaWdodCx2KSB9CiAK
ICAgICB2b2lkIHNldEN1cnNvciggRUN1cnNvciBjICkgeyBpbmhlcml0ZWRfZmxhZ3MuX2N1cnNv
cl9zdHlsZSA9IGM7IH0KLSAgICB2b2lkIHNldEN1cnNvckltYWdlKCBDYWNoZWRJbWFnZSAqdiAp
IHsgU0VUX1ZBUihpbmhlcml0ZWQsY3Vyc29yX2ltYWdlLHYpIH0KKyAgICB2b2lkIGFkZEN1cnNv
ciggQ2FjaGVkSW1hZ2UgKnYgKTsKKyNpZiBTVkdfU1VQUE9SVAorICAgIHZvaWQgYWRkQ3Vyc29y
KCBDYWNoZWRJbWFnZSAqdiwgY29uc3QgSW50UG9pbnQgJmhvdHNwb3QgKTsKKyNlbmRpZgogCiAg
ICAgYm9vbCBmb3JjZUJhY2tncm91bmRzVG9XaGl0ZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRl
ZF9mbGFncy5fZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGU7IH0KICAgICB2b2lkIHNldEZvcmNl
QmFja2dyb3VuZHNUb1doaXRlKGJvb2wgYj10cnVlKSB7IGluaGVyaXRlZF9mbGFncy5fZm9yY2Vf
YmFja2dyb3VuZHNfdG9fd2hpdGUgPSBiOyB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9yZW5k
ZXJfc3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9zdHls
ZS5jcHAJKHJldmlzaW9uIDE0NTEwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX3N0eWxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ2LDEwICs0NDYsMjEgQEAgYm9vbCBTdHlsZUNTUzNJ
bmhlcml0ZWREYXRhOjpzaGFkb3dEYXRhRQogICAgIHJldHVybiB0cnVlOwogfQogCitDdXJzb3JJ
bmZvOjp+Q3Vyc29ySW5mbygpCit7CisgICAgY2xlYXJDdXJzb3IoKTsKK30KKwordm9pZCBDdXJz
b3JJbmZvOjpjbGVhckN1cnNvcigpCit7CisgICAgZGVsZXRlIG5leHQ7CisgICAgbmV4dCA9IDA7
Cit9CisKIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKCkKICAgICA6IGlu
ZGVudCggUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SW5kZW50KCkgKSwgbGluZV9oZWlnaHQoIFJl
bmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpICksIAogICAgICAgc3R5bGVfaW1hZ2UoIFJl
bmRlclN0eWxlOjppbml0aWFsTGlzdFN0eWxlSW1hZ2UoKSApLAotICAgICAgY3Vyc29yX2ltYWdl
KCAwICksIGZvbnQoKSwgY29sb3IoIFJlbmRlclN0eWxlOjppbml0aWFsQ29sb3IoKSApLCAKKyAg
ICAgIGN1cnNvcl9pbmZvKCAwICksIGZvbnQoKSwgY29sb3IoIFJlbmRlclN0eWxlOjppbml0aWFs
Q29sb3IoKSApLCAKICAgICAgIGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcoIFJlbmRlclN0eWxl
Ojppbml0aWFsSG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSApLCAKICAgICAgIHZlcnRpY2FsX2Jv
cmRlcl9zcGFjaW5nKCBSZW5kZXJTdHlsZTo6aW5pdGlhbFZlcnRpY2FsQm9yZGVyU3BhY2luZygp
ICksCiAgICAgICB3aWRvd3MoIFJlbmRlclN0eWxlOjppbml0aWFsV2lkb3dzKCkgKSwgb3JwaGFu
cyggUmVuZGVyU3R5bGU6OmluaXRpYWxPcnBoYW5zKCkgKSwKQEAgLTQ1OSwxMiArNDcwLDEzIEBA
IFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKCkKIAogU3R5bGVJbmhlcml0
ZWREYXRhOjp+U3R5bGVJbmhlcml0ZWREYXRhKCkKIHsKKyAgICAgZGVsZXRlIGN1cnNvcl9pbmZv
OwogfQogCiBTdHlsZUluaGVyaXRlZERhdGE6OlN0eWxlSW5oZXJpdGVkRGF0YShjb25zdCBTdHls
ZUluaGVyaXRlZERhdGEmIG8gKQogICAgIDogU2hhcmVkPFN0eWxlSW5oZXJpdGVkRGF0YT4oKSwK
ICAgICAgIGluZGVudCggby5pbmRlbnQgKSwgbGluZV9oZWlnaHQoIG8ubGluZV9oZWlnaHQgKSwg
c3R5bGVfaW1hZ2UoIG8uc3R5bGVfaW1hZ2UgKSwKLSAgICAgIGN1cnNvcl9pbWFnZSggby5jdXJz
b3JfaW1hZ2UgKSwgZm9udCggby5mb250ICksCisgICAgICBjdXJzb3JfaW5mbyggby5jdXJzb3Jf
aW5mbyApLCBmb250KCBvLmZvbnQgKSwKICAgICAgIGNvbG9yKCBvLmNvbG9yICksCiAgICAgICBo
b3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKCBvLmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcgKSwK
ICAgICAgIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKCBvLnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5n
ICksCkBAIC00NzgsNyArNDkwLDcgQEAgYm9vbCBTdHlsZUluaGVyaXRlZERhdGE6Om9wZXJhdG9y
PT0oY29ucwogICAgICAgICBpbmRlbnQgPT0gby5pbmRlbnQgJiYKICAgICAgICAgbGluZV9oZWln
aHQgPT0gby5saW5lX2hlaWdodCAmJgogICAgICAgICBzdHlsZV9pbWFnZSA9PSBvLnN0eWxlX2lt
YWdlICYmCi0gICAgICAgIGN1cnNvcl9pbWFnZSA9PSBvLmN1cnNvcl9pbWFnZSAmJgorICAgICAg
ICBjdXJzb3JfaW5mbyA9PSBvLmN1cnNvcl9pbmZvICYmCiAgICAgICAgIGZvbnQgPT0gby5mb250
ICYmCiAgICAgICAgIGNvbG9yID09IG8uY29sb3IgJiYKICAgICAgICAgaG9yaXpvbnRhbF9ib3Jk
ZXJfc3BhY2luZyA9PSBvLmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcgJiYKQEAgLTc1Miw3ICs3
NjQsNyBAQCBSZW5kZXJTdHlsZTo6RGlmZiBSZW5kZXJTdHlsZTo6ZGlmZiggY29uCiAgICAgICAg
ICEoaW5oZXJpdGVkLT5pbmRlbnQgPT0gb3RoZXItPmluaGVyaXRlZC0+aW5kZW50KSB8fAogICAg
ICAgICAhKGluaGVyaXRlZC0+bGluZV9oZWlnaHQgPT0gb3RoZXItPmluaGVyaXRlZC0+bGluZV9o
ZWlnaHQpIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT5zdHlsZV9pbWFnZSA9PSBvdGhlci0+aW5o
ZXJpdGVkLT5zdHlsZV9pbWFnZSkgfHwKLSAgICAgICAgIShpbmhlcml0ZWQtPmN1cnNvcl9pbWFn
ZSA9PSBvdGhlci0+aW5oZXJpdGVkLT5jdXJzb3JfaW1hZ2UpIHx8CisgICAgICAgICEoaW5oZXJp
dGVkLT5jdXJzb3JfaW5mbyA9PSBvdGhlci0+aW5oZXJpdGVkLT5jdXJzb3JfaW5mbykgfHwKICAg
ICAgICAgIShpbmhlcml0ZWQtPmZvbnQgPT0gb3RoZXItPmluaGVyaXRlZC0+Zm9udCkgfHwKICAg
ICAgICAgIShpbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcgPT0gb3RoZXItPmlu
aGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZykgfHwKICAgICAgICAgIShpbmhlcml0
ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nID09IG90aGVyLT5pbmhlcml0ZWQtPnZlcnRpY2Fs
X2JvcmRlcl9zcGFjaW5nKSB8fApAQCAtOTE4LDYgKzkzMCw0MyBAQCB2b2lkIFJlbmRlclN0eWxl
OjpzZXRDbGlwKCBMZW5ndGggdG9wLCBMCiAgICAgZGF0YS0+Y2xpcC5sZWZ0ID0gbGVmdDsKIH0K
IAordm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3Vyc29yKCBDYWNoZWRJbWFnZSAqdiApCit7CisgICAg
Q3Vyc29ySW5mbyogbGFzdEN1cnNvckluZm8gPSBjdXJzb3JzKCk7CisgICAgd2hpbGUgKGxhc3RD
dXJzb3JJbmZvICYmIGxhc3RDdXJzb3JJbmZvLT5uZXh0KQorICAgICAgICBsYXN0Q3Vyc29ySW5m
byA9IGxhc3RDdXJzb3JJbmZvLT5uZXh0OworCisgICAgQ3Vyc29ySW5mbyogbmV3Q3Vyc29ySW5m
byA9IG5ldyBDdXJzb3JJbmZvOworCisgICAgaWYgKGxhc3RDdXJzb3JJbmZvKQorICAgICAgICBs
YXN0Q3Vyc29ySW5mby0+bmV4dCA9IG5ld0N1cnNvckluZm87CisgICAgZWxzZQorICAgICAgICBp
bmhlcml0ZWQuYWNjZXNzKCktPmN1cnNvcl9pbmZvID0gbmV3Q3Vyc29ySW5mbzsKKworICAgIG5l
d0N1cnNvckluZm8tPmN1cnNvcl9pbWFnZSA9IHY7CisgICAgbmV3Q3Vyc29ySW5mby0+bmV4dCA9
IDA7Cit9CisKKyNpZiBTVkdfU1VQUE9SVAordm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3Vyc29yKCBD
YWNoZWRJbWFnZSAqdiwgY29uc3QgSW50UG9pbnQgJmhvdHNwb3QgKQoreworICAgIEN1cnNvcklu
Zm8qIGxhc3RDdXJzb3JJbmZvID0gY3Vyc29ycygpOworICAgIHdoaWxlIChsYXN0Q3Vyc29ySW5m
byAmJiBsYXN0Q3Vyc29ySW5mby0+bmV4dCkKKyAgICAgICAgbGFzdEN1cnNvckluZm8gPSBsYXN0
Q3Vyc29ySW5mby0+bmV4dDsKKworICAgIEN1cnNvckluZm8qIG5ld0N1cnNvckluZm8gPSBuZXcg
Q3Vyc29ySW5mbzsKKworICAgIGlmIChsYXN0Q3Vyc29ySW5mbykKKyAgICAgICAgbGFzdEN1cnNv
ckluZm8tPm5leHQgPSBuZXdDdXJzb3JJbmZvOworICAgIGVsc2UKKyAgICAgICAgaW5oZXJpdGVk
LmFjY2VzcygpLT5jdXJzb3JfaW5mbyA9IG5ld0N1cnNvckluZm87CisKKyAgICBuZXdDdXJzb3JJ
bmZvLT5jdXJzb3JfaW1hZ2UgPSB2OworICAgIG5ld0N1cnNvckluZm8tPmN1cnNvcl9ob3RzcG90
ID0gaG90c3BvdDsKKyAgICBuZXdDdXJzb3JJbmZvLT5uZXh0ID0gMDsKK30KKyNlbmRpZgorCiBi
b29sIFJlbmRlclN0eWxlOjpjb250ZW50RGF0YUVxdWl2YWxlbnQoY29uc3QgUmVuZGVyU3R5bGUq
IG90aGVyU3R5bGUpIGNvbnN0CiB7CiAgICAgQ29udGVudERhdGEqIGMxID0gY29udGVudDsK
</data>
<flag name="review"
          id="2398"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8494</attachid>
            <date>2006-05-23 13:26:22 -0700</date>
            <delta_ts>2006-05-24 07:25:35 -0700</delta_ts>
            <desc>Improved patch after ap&apos;s feedback</desc>
            <filename>6002-2.diff</filename>
            <type>text/plain</type>
            <size>29179</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNDU0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMDYtMDUtMjMgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAxCisgICAgICAg
IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9tIGN1cnNvcnMKKyAgICAgICAg
Rml4IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTYw
MDIKKyAgICAgICAgV2ViS2l0IGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSBTVkcgPGN1cnNvcj4g
ZWxlbWVudAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzdmcgY3Vyc29yIGltYWdlcy4gQWxz
byBtYWtlIHN1cmUgaG90c3BvdAorICAgICAgICBzZXR0aW5ncyBhcmUgaGFuZGxlZCBjb3JyZWN0
bHkuIEZpbmFsbHkgaW1wbGVtZW50IGZhbGxiYWNrLgorCisgICAgICAgICogY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1ND
dXJzb3JJbWFnZVZhbHVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJ
bWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1
cnNvckltYWdlVmFsdWU6On5DU1NDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvcklt
YWdlVmFsdWU6OmhvdHNwb3QpOgorICAgICAgICAqIGNzcy9jc3NwYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKiBjc3MvY3Nzc3R5
bGVzZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBs
eVByb3BlcnR5KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6Cisg
ICAgICAgIChTVkdDdXJzb3JFbGVtZW50OjpTVkdDdXJzb3JFbGVtZW50KToKKyAgICAgICAgKFNW
R0N1cnNvckVsZW1lbnQ6On5TVkdDdXJzb3JFbGVtZW50KToKKyAgICAgICAgKFNWR0N1cnNvckVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ3Vy
c29yRWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNlbGVjdEN1cnNvcik6CisgICAgICAgICogcGxhdGZvcm0vQ3Vyc29yLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL0N1cnNvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUN1c3RvbUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3I6OkN1cnNvcik6CisgICAg
ICAgICogcmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJz
b3JJbmZvOjpDdXJzb3JJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvckluZm86On5DdXJz
b3JJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvckluZm86OmNsZWFyQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlSW5oZXJpdGVkRGF0YTo6flN0eWxlSW5oZXJpdGVkRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmYpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OnNldEN1cnNvcnMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJbmhlcml0
ZWREYXRhOjpzZXRDdXJzb3JzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphZGRD
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJbmhlcml0ZWREYXRhOjphZGRDdXJzb3Ip
OgorICAgICAgICAqIHJlbmRlcmluZy9yZW5kZXJfc3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1cnNvckluZm86Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29ySW5mbzo6
b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JJbmZvOjpjdXJzb3JJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JJbmZvOjpjdXJzb3JIb3RzcG90KToKKyAgICAgICAg
KFdlYkNvcmU6OkN1cnNvckluZm86Om5leHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29ySW5m
bzo6c2V0TmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JJbmZvOjpjdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmN1cnNvcnMpOgorCiAyMDA2LTA1LTIzICBMZXZp
IFdlaW50cmF1YiAgPGx3ZWludHJhdWJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEh5YXR0LgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCShyZXZpc2lvbiAxNDU0MCkKKysrIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Myw0NSArNTUzLDczIEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICBjYXNlIENTU19QUk9QX0NPVU5U
RVJfUkVTRVQ6CiAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOgotICAgICAgICBpZiAoc3R5bGUtPmN1cnNvcklt
YWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5j
dXJzb3JJbWFnZSgpLT51cmwoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpOworICAgIGNh
c2UgQ1NTX1BST1BfQ1VSU09SOiB7CisgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IDA7Cisg
ICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9IDA7CisgICAgICAgIGlmIChzdHlsZS0+Y3Vyc29ycygp
KSB7CisgICAgICAgICAgICBsaXN0ID0gbmV3IENTU1ZhbHVlTGlzdDsKKyAgICAgICAgICAgIEN1
cnNvckluZm8gKmN1cnNvciA9IHN0eWxlLT5jdXJzb3JzKCk7CisgICAgICAgICAgICBkbyB7Cisg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZShjdXJzb3It
PmN1cnNvckltYWdlKG5vZGUtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpKS0+dXJsKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSk7CisgICAgICAgICAgICB9IHdoaWxlICgoY3Vyc29yID0g
Y3Vyc29yLT5uZXh0KCkpKTsKKyAgICAgICAgfQogICAgICAgICBzd2l0Y2ggKHN0eWxlLT5jdXJz
b3IoKSkgewogICAgICAgICAgICAgY2FzZSBDVVJTT1JfQVVUTzoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7CisgICAgICAgICAgICAg
ICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0NST1NTOgotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DUk9TU0hBSVIpOwor
ICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ1JP
U1NIQUlSKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09S
X0RFRkFVTFQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0RFRkFVTFQpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfREVGQVVMVCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIENVUlNPUl9QT0lOVEVSOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QT0lOVEVSKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1BPSU5URVIpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfTU9WRToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTU9WRSk7CisgICAgICAgICAgICAg
ICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9NT1ZFKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0VfUkVTSVpFOgotICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FX1JFU0laRSk7
CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9F
X1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNP
Ul9ORV9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX05FX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9ORV9SRVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBDVVJTT1JfTldfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OV19SRVNJWkUpOworICAgICAgICAgICAg
ICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTldfUkVTSVpFKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX05fUkVTSVpFOgot
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OX1JF
U0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9OX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IENVUlNPUl9TRV9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1NFX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TRV9SRVNJWkUpOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfU1dfUkVTSVpFOgotICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TV19SRVNJWkUpOworICAgICAg
ICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1dfUkVTSVpF
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1NfUkVT
SVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9TX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9TX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIENVUlNPUl9XX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfV19SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV19SRVNJWkUpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfVEVYVDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEVYVCk7CisgICAgICAgICAgICAg
ICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9URVhUKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1dBSVQ6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1dBSVQpOworICAgICAg
ICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV0FJVCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9IRUxQOgotICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9IRUxQKTsK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hF
TFApOwogICAgICAgICB9CisgICAgICAgIGlmIChsaXN0KSB7CisgICAgICAgICAgICBsaXN0LT5h
cHBlbmQodmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgIH0gZWxzZSBp
ZiAodmFsdWUpCisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgY2FzZSBDU1NfUFJPUF9E
SVJFQ1RJT046CiAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmRpcmVjdGlvbigpKSB7CiAgICAgICAg
ICAgICBjYXNlIExUUjoKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERP
TSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEz
MDcsIFVTQS4KKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU0N1cnNvcklt
YWdlVmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDU1NDdXJzb3JJbWFnZVZhbHVl
OjpDU1NDdXJzb3JJbWFnZVZhbHVlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBJbnRQb2ludCYg
cCwgU3R5bGVCYXNlKiBzdHlsZSkKKyAgICA6IENTU0ltYWdlVmFsdWUodXJsLCBzdHlsZSkKKyAg
ICAsIG1faG90c3BvdChwKQoreworfQorCitDU1NDdXJzb3JJbWFnZVZhbHVlOjp+Q1NTQ3Vyc29y
SW1hZ2VWYWx1ZSgpCit7Cit9Cit9CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERP
TSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEz
MDcsIFVTQS4KKyAqLworCisjaWZuZGVmIENTU0N1cnNvckltYWdlVmFsdWVfSAorI2RlZmluZSBD
U1NDdXJzb3JJbWFnZVZhbHVlX0gKKworI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAi
Q1NTSW1hZ2VWYWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU0N1cnNv
ckltYWdlVmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VWYWx1ZQoreworcHVibGljOgorICAgIENTU0N1
cnNvckltYWdlVmFsdWUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IEludFBvaW50JiwgU3R5bGVC
YXNlKik7CisgICAgdmlydHVhbCB+Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSgpOworCisgICAgSW50UG9p
bnQgaG90c3BvdCgpIGNvbnN0IHsgcmV0dXJuIG1faG90c3BvdDsgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgSW50UG9pbnQgbV9ob3RzcG90OworfTsKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpJbmRl
eDogV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9j
c3NwYXJzZXIuY3BwCShyZXZpc2lvbiAxNDU0MCkKKysrIFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjc3NwYXJzZXIu
aCIKIAogI2luY2x1ZGUgIkNTU0JvcmRlckltYWdlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDdXJz
b3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNT
U0ltcG9ydFJ1bGUuaCIKICNpbmNsdWRlICJDU1NJbmhlcml0ZWRWYWx1ZS5oIgpAQCAtNDMsNiAr
NDQsMTIgQEAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJEYXNoYm9hcmRS
ZWdpb24uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lmIFNWR19TVVBQT1JUCisjaW5jbHVk
ZSAiWExpbmtOYW1lcy5oIgorI2luY2x1ZGUgIlNWR05hbWVzLmgiCisjaW5jbHVkZSAiU1ZHQ3Vy
c29yRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCisjZW5kaWYKICNp
bmNsdWRlICJGb250RmFtaWx5VmFsdWUuaCIKICNpbmNsdWRlICJGb250VmFsdWUuaCIKICNpbmNs
dWRlICJNZWRpYUxpc3QuaCIKQEAgLTY1OSwyMSArNjY2LDQ1IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGIKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU19Q
Uk9QX0NVUlNPUjoKLSAgICAgICAgLy8gIFsgYXV0byB8IGNyb3NzaGFpciB8IGRlZmF1bHQgfCBw
b2ludGVyIHwgcHJvZ3Jlc3MgfCBtb3ZlIHwgZS1yZXNpemUgfCBuZS1yZXNpemUgfAorICAgICAg
ICAvLyAgWzx1cmk+LF0qIFsgYXV0byB8IGNyb3NzaGFpciB8IGRlZmF1bHQgfCBwb2ludGVyIHwg
cHJvZ3Jlc3MgfCBtb3ZlIHwgZS1yZXNpemUgfCBuZS1yZXNpemUgfAogICAgICAgICAvLyBudy1y
ZXNpemUgfCBuLXJlc2l6ZSB8IHNlLXJlc2l6ZSB8IHN3LXJlc2l6ZSB8IHMtcmVzaXplIHwgdy1y
ZXNpemUgfCB0ZXh0IHwKICAgICAgICAgLy8gd2FpdCB8IGhlbHAgXSBdIHwgaW5oZXJpdAotICAg
ICAgICBpZiAoIXN0cmljdCAmJiBpZCA9PSBDU1NfVkFMX0hBTkQpIHsgLy8gTVNJRSA1IGNvbXBh
dGliaWxpdHkgOi8KKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gbmV3IENTU1ZhbHVlTGlz
dDsKKyAgICAgICAgd2hpbGUgKHZhbHVlICYmIHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfVVJJKSB7CisgICAgICAgICAgICBTdHJpbmcgdXJpID0gcGFyc2VVUkwoZG9tU3Ry
aW5nKHZhbHVlLT5zdHJpbmcpKTsKKyNpZiBTVkdfU1VQUE9SVAorICAgICAgICAgICAgaWYgKHVy
aS5maW5kKCIjIikgPT0gMCkgeworICAgICAgICAgICAgICAgIEVsZW1lbnQqIGUgPSBkb2N1bWVu
dCgpLT5nZXRFbGVtZW50QnlJZCh1cmkuZGVwcmVjYXRlZFN0cmluZygpLm1pZCgxKSk7CisgICAg
ICAgICAgICAgICAgaWYgKGUgJiYgZS0+aGFzVGFnTmFtZShXZWJDb3JlOjpTVkdOYW1lczo6Y3Vy
c29yVGFnKSkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdXJsID0gZS0+Z2V0QXR0cmli
dXRlKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHggPSBp
bnQoc3RhdGljX2Nhc3Q8U1ZHQ3Vyc29yRWxlbWVudCo+KGUpLT54KCktPmJhc2VWYWwoKS0+dmFs
dWUoKSk7CisgICAgICAgICAgICAgICAgICAgIGludCB5ID0gaW50KHN0YXRpY19jYXN0PFNWR0N1
cnNvckVsZW1lbnQqPihlKS0+eSgpLT5iYXNlVmFsKCktPnZhbHVlKCkpOworICAgICAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU0N1cnNvckltYWdlVmFsdWUoU3RyaW5nKEtVUkwo
c3R5bGVFbGVtZW50LT5iYXNlVVJMKCkuZGVwcmVjYXRlZFN0cmluZygpLCB1cmwuZGVwcmVjYXRl
ZFN0cmluZygpKS51cmwoKSksIEludFBvaW50KHgsIHkpLCBzdHlsZUVsZW1lbnQpKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgaWYg
KCF1cmkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcgQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZShTdHJpbmcoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXByZWNh
dGVkU3RyaW5nKCksIHVyaS5kZXByZWNhdGVkU3RyaW5nKCkpLnVybCgpKSwgSW50UG9pbnQoKSwg
c3R5bGVFbGVtZW50KSk7CisgICAgICAgICAgICB2YWx1ZUxpc3QtPm5leHQoKTsgLy8gY29tbWEK
KyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGxpc3QtPmxlbmd0aCgpKSB7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGxpc3Q7
CisgICAgICAgICAgICBpZiAoIXZhbHVlKSB7IC8vIG5vIHZhbHVlIGFmdGVyIHVybCBsaXN0IChN
U0lFIDUgY29tcGF0aWJpbGl0eSkKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCAmJiB2
YWx1ZS0+aWQgPT0gQ1NTX1ZBTF9IQU5EKSB7IC8vIE1TSUUgNSBjb21wYXRpYmlsaXR5IDovCisg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1BPSU5URVIpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUtPmlkID49IENTU19WQUxf
QVVUTyAmJiB2YWx1ZS0+aWQgPD0gQ1NTX1ZBTF9IRUxQKQorICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUtPmlkKSk7CisgICAgICAgICAgICB2
YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGRlbGV0ZSBsaXN0OworICAgICAgICBpZiAoIXN0cmljdCAmJiB2
YWx1ZS0+aWQgPT0gQ1NTX1ZBTF9IQU5EKSB7IC8vIE1TSUUgNSBjb21wYXRpYmlsaXR5IDovCiAg
ICAgICAgICAgICBpZCA9IENTU19WQUxfUE9JTlRFUjsKICAgICAgICAgICAgIHZhbGlkX3ByaW1p
dGl2ZSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoaWQgPj0gQ1NTX1ZBTF9BVVRPICYmIGlk
IDw9IENTU19WQUxfSEVMUCkKKyAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS0+aWQgPj0gQ1NTX1ZB
TF9BVVRPICYmIHZhbHVlLT5pZCA8PSBDU1NfVkFMX0hFTFApCiAgICAgICAgICAgICB2YWxpZF9w
cmltaXRpdmUgPSB0cnVlOwotICAgICAgICBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewotICAgICAgICAgICAgU3RyaW5nIHVyaSA9IHBhcnNlVVJM
KGRvbVN0cmluZyh2YWx1ZS0+c3RyaW5nKSk7Ci0gICAgICAgICAgICBpZiAoIXVyaS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IG5ldyBDU1NJbWFnZVZhbHVlKFN0
cmluZyhLVVJMKHN0eWxlRWxlbWVudC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdXJp
LmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJsKCkpLCBzdHlsZUVsZW1lbnQpOwotICAgICAgICAgICAg
ICAgIHZhbHVlTGlzdC0+bmV4dCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5EX0FUVEFDSE1FTlQ6CkluZGV4
OiBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAkocmV2aXNpb24gMTQ1NDApCisrKyBXZWJDb3JlL2Nz
cy9jc3NzdHlsZXNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAog
I2luY2x1ZGUgImNzc3N0eWxlc2VsZWN0b3IuaCIKIAogI2luY2x1ZGUgIkNTU0JvcmRlckltYWdl
VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
SW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ltcG9ydFJ1bGUuaCIKICNpbmNsdWRlICJDU1NN
ZWRpYVJ1bGUuaCIKQEAgLTIyNDUsMjMgKzIyNDYsMzYgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjphcHBseVByb3BlcnR5KGludAogICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOgogICAgICAgICBp
ZiAoaXNJbmhlcml0KSB7CiAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKHBhcmVudFN0eWxl
LT5jdXJzb3IoKSk7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29ySW1hZ2UocGFyZW50U3R5
bGUtPmN1cnNvckltYWdlKCkpOworICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcnMocGFyZW50
U3R5bGUtPmN1cnNvcnMoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGlzSW5pdGlhbCkgewogICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcihSZW5kZXJT
dHlsZTo6aW5pdGlhbEN1cnNvcigpKTsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3JJbWFn
ZSgwKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUpIHsKKyAgICAgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAg
ICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1
ZSk7CisgICAgICAgICAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7CisgICAgICAgICAgICBz
dHlsZS0+c2V0Q3Vyc29yKENVUlNPUl9BVVRPKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbGVuOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ1NTVmFsdWUq
IGl0ZW0gPSBsaXN0LT5pdGVtKGkpOworICAgICAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKSBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICAgICAg
aW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOworICAgICAgICAgICAg
ICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7CisgICAgICAgICAg
ICAgICAgICAgIENTU0N1cnNvckltYWdlVmFsdWUqIGltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTQ3Vy
c29ySW1hZ2VWYWx1ZSo+KHByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgLy9p
ZiAoIXN0eWxlLT5jdXJzb3JzKCkpIC8vIGxvYWQgZmlyc3QKKyAgICAgICAgICAgICAgICAgICAg
Ly8gICAgaW1hZ2UtPmltYWdlKGVsZW1lbnQtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgc3R5bGUtPmFkZEN1cnNvcihpbWFnZSk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcigoRUN1cnNvcikocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgLSBDU1NfVkFMX0FVVE8pKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUpIHsKICAgICAgICAg
ICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKICAgICAgICAg
ICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpIHsKICAgICAgICAg
ICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKChFQ3Vyc29yKShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSAtIENTU19WQUxfQVVUTykpOwotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3JJ
bWFnZSgwKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1VSSSkgewotICAgICAgICAgICAgICAgIENTU0ltYWdlVmFsdWUqIGltYWdlID0gc3Rh
dGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KHByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgICAgICAg
ICBzdHlsZS0+c2V0Q3Vyc29yKENVUlNPUl9BVVRPKTsKLSAgICAgICAgICAgICAgICBzdHlsZS0+
c2V0Q3Vyc29ySW1hZ2UoaW1hZ2UtPmltYWdlKGVsZW1lbnQtPmRvY3VtZW50KCktPmRvY0xvYWRl
cigpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1NDApCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjUsOSArMjUsNyBAQAogI2luY2x1ZGUgIlNWR0N1cnNvckVsZW1lbnQuaCIKIAogI2luY2x1ZGUg
IkF0dHIuaCIKLSNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
Ci0jaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRl
ICJTVkdIZWxwZXIuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgpAQCAtMzYsMTUg
KzM0LDEyIEBACiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogU1ZHQ3Vyc29yRWxlbWVudDo6
U1ZHQ3Vyc29yRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCAq
ZG9jKQotOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvYyksIFNWR1Rlc3RzKCksIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKSwgU1ZHVVJJUmVmZXJlbmNlKCksIENhY2hlZE9iamVjdENsaWVu
dCgpCis6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jKSwgU1ZHVGVzdHMoKSwgU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCgpLCBTVkdVUklSZWZlcmVuY2UoKQogewotICAgIG1fY2FjaGVkSW1h
Z2UgPSAwOwogfQogCiBTVkdDdXJzb3JFbGVtZW50Ojp+U1ZHQ3Vyc29yRWxlbWVudCgpCiB7Ci0g
ICAgaWYgKG1fY2FjaGVkSW1hZ2UpCi0gICAgICAgIG1fY2FjaGVkSW1hZ2UtPmRlcmVmKHRoaXMp
OwogfQogCiBTVkdBbmltYXRlZExlbmd0aCAqU1ZHQ3Vyc29yRWxlbWVudDo6eCgpIGNvbnN0CkBA
IC02OCwxNCArNjMsNyBAQCB2b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
CiAgICAgewogICAgICAgICBpZihTVkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikp
IHJldHVybjsKICAgICAgICAgaWYoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKLSAgICAgICAgaWYgKFNWR1VSSVJlZmVyZW5j
ZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpIHsKLSAgICAgICAgICAgIGlmIChtX2NhY2hl
ZEltYWdlKQotICAgICAgICAgICAgICAgIG1fY2FjaGVkSW1hZ2UtPmRlcmVmKHRoaXMpOwotICAg
ICAgICAgICAgbV9jYWNoZWRJbWFnZSA9IG93bmVyRG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCktPnJl
cXVlc3RJbWFnZShocmVmKCktPmJhc2VWYWwoKSk7Ci0gICAgICAgICAgICBpZiAobV9jYWNoZWRJ
bWFnZSkKLSAgICAgICAgICAgICAgICBtX2NhY2hlZEltYWdlLT5yZWYodGhpcyk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKIAogICAgICAgICBTVkdFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdDdXJzb3JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
Q3Vyc29yRWxlbWVudC5oCShyZXZpc2lvbiAxNDU0MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0N1cnNvckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTcgKzMwLDE1IEBACiAjaW5j
bHVkZSAiU1ZHVGVzdHMuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCi0jaW5jbHVkZSAiQ2FjaGVkT2JqZWN0
Q2xpZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlCiB7CiAgICAgY2xhc3MgU1ZHQW5pbWF0ZWRM
ZW5ndGg7CiAKICAgICBjbGFzcyBTVkdDdXJzb3JFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklS
ZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgQ2FjaGVk
T2JqZWN0Q2xpZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklS
ZWZlcmVuY2UKICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdDdXJzb3JFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50ICpkb2MpOwpAQCAtNTQsMTIgKzUy
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKTsKIAotICAgICAgICBDYWNoZWRJbWFn
ZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlOyB9Ci0KICAgICBw
cml2YXRlOgogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gbV94Owog
ICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gbV95OwotICAgICAgICBD
YWNoZWRJbWFnZSAqbV9jYWNoZWRJbWFnZTsKICAgICB9OwogfTsKIApJbmRleDogV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAJKHJldmlzaW9uIDE0NTQwKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1MCwxMSArNTUwLDE4IEBAIHN0YXRpYyBDdXJzb3Igc2VsZWN0Q3Vyc29y
KGNvbnN0IE1vdXNlRXYKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZSA/IG5vZGUt
PnJlbmRlcmVyKCkgOiAwOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyID8gcmVu
ZGVyZXItPnN0eWxlKCkgOiAwOwogCi0gICAgaWYgKHN0eWxlICYmIHN0eWxlLT5jdXJzb3JJbWFn
ZSgpICYmICFzdHlsZS0+Y3Vyc29ySW1hZ2UoKS0+aW1hZ2UoKS0+aXNOdWxsKCkpCi0gICAgICAg
IGlmICghc3R5bGUtPmN1cnNvckltYWdlKCktPmlzRXJyb3JJbWFnZSgpKQotICAgICAgICAgICAg
cmV0dXJuIHN0eWxlLT5jdXJzb3JJbWFnZSgpLT5pbWFnZSgpOwotICAgICAgICBlbHNlIAotICAg
ICAgICAgICAgc3R5bGUgPSAwOyAvLyBGYWxsYmFjayB0byBDVVJTT1JfQVVUTworICAgIGlmIChz
dHlsZSAmJiBzdHlsZS0+Y3Vyc29ycygpKSB7CisgICAgICAgIEN1cnNvckluZm8qIGN1cnNvciA9
IHN0eWxlLT5jdXJzb3JzKCk7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIENhY2hlZEltYWdl
KiBjaW1hZ2UgPSBjdXJzb3ItPmN1cnNvckltYWdlKG5vZGUtPmRvY3VtZW50KCktPmRvY0xvYWRl
cigpKTsKKyAgICAgICAgICAgIGlmICghY2ltYWdlKSBjb250aW51ZTsKKyAgICAgICAgICAgIGlm
IChjaW1hZ2UtPmltYWdlKCktPmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKCFjaW1hZ2UtPmlzRXJyb3JJbWFnZSgpKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEN1cnNvcihjaW1hZ2UtPmltYWdlKCksIGN1cnNvci0+Y3Vyc29ySG90
c3BvdCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoKGN1cnNvciA9IGN1cnNv
ci0+bmV4dCgpKSk7CisgICAgfQogCiAgICAgc3dpdGNoIChzdHlsZSA/IHN0eWxlLT5jdXJzb3Io
KSA6IENVUlNPUl9BVVRPKSB7CiAgICAgICAgIGNhc2UgQ1VSU09SX0FVVE86IHsKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9D
dXJzb3IuaAkocmV2aXNpb24gMTQ1NDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIENVUlNPUl9ICiAjZGVmaW5l
IENVUlNPUl9ICiAKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorCiAjaWZkZWYgV0lOMzIKICNpbmNs
dWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYKQEAgLTUzLDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIEN1cnNvciB7CiAgICAgcHVibGljOgogICAgICAgICBDdXJzb3IoKSA6
IG1faW1wbCgwKSB7IH0KLSAgICAgICAgQ3Vyc29yKEltYWdlKik7CisgICAgICAgIEN1cnNvcihJ
bWFnZSosIEludFBvaW50ID0gSW50UG9pbnQoKSk7CiAgICAgICAgIEN1cnNvcihjb25zdCBDdXJz
b3ImKTsKICAgICAgICAgfkN1cnNvcigpOwogICAgICAgICBDdXJzb3ImIG9wZXJhdG9yPShjb25z
dCBDdXJzb3ImKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0N1cnNvck1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0JKHJldmlzaW9uIDE0
NTQwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00MSwxNCArNDEsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gU2ltcGxlIE5TQ3Vy
c29yIGNhbGxzIHNob3VsZG4ndCBuZWVkIHByb3RlY3Rpb24sCiAvLyBidXQgY3JlYXRpbmcgYSBj
dXJzb3Igd2l0aCBhIGJhZCBpbWFnZSBtaWdodCB0aHJvdy4KIAotc3RhdGljIE5TQ3Vyc29yKiBj
cmVhdGVDdXN0b21DdXJzb3IoSW1hZ2UqIGltYWdlKQorc3RhdGljIE5TQ3Vyc29yKiBjcmVhdGVD
dXN0b21DdXJzb3IoSW1hZ2UqIGltYWdlLCBJbnRQb2ludCBwKQogewogICAgIC8vIEZJWE1FOiBU
aGUgY3Vyc29yIHdvbid0IGFuaW1hdGUuICBOb3Qgc3VyZSBpZiB0aGF0J3MgYSBiaWcgZGVhbC4K
ICAgICBOU0ltYWdlKiBpbWcgPSBpbWFnZS0+Z2V0TlNJbWFnZSgpOwogICAgIGlmICghaW1nKQog
ICAgICAgICByZXR1cm4gMDsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAg
cmV0dXJuIFtbTlNDdXJzb3IgYWxsb2NdIGluaXRXaXRoSW1hZ2U6aW1nIGhvdFNwb3Q6TlNaZXJv
UG9pbnRdOworICAgIE5TUG9pbnQgaG90U3BvdFBvaW50ID0ge3AueCgpLCBwLnkoKX07CisgICAg
cmV0dXJuIFtbTlNDdXJzb3IgYWxsb2NdIGluaXRXaXRoSW1hZ2U6aW1nIGhvdFNwb3Q6aG90U3Bv
dFBvaW50XTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIHJldHVybiAwOwog
fQpAQCAtNzQsOCArNzUsOCBAQCBzdGF0aWMgTlNDdXJzb3IqIGxlYWtOYW1lZEN1cnNvcihjb25z
dCBjCiAgICAgcmV0dXJuIDA7CiB9CiAKLUN1cnNvcjo6Q3Vyc29yKEltYWdlKiBpbWFnZSkKLSAg
ICA6IG1faW1wbChLV1FSZXRhaW5OU1JlbGVhc2UoY3JlYXRlQ3VzdG9tQ3Vyc29yKGltYWdlKSkp
CitDdXJzb3I6OkN1cnNvcihJbWFnZSogaW1hZ2UsIEludFBvaW50IHApCisgICAgOiBtX2ltcGwo
S1dRUmV0YWluTlNSZWxlYXNlKGNyZWF0ZUN1c3RvbUN1cnNvcihpbWFnZSwgcCkpKQogewogfQog
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfc3R5bGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfc3R5bGUuaAkocmV2aXNpb24gMTQ1NDApCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9yZW5kZXJfc3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIs
NyBAQAogI2luY2x1ZGUgIkxlbmd0aC5oIgogI2luY2x1ZGUgIlNoYXJlZC5oIgogI2luY2x1ZGUg
IkRlcHJlY2F0ZWRWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgi
CiAKICNpZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCkBAIC03ODcs
NiArNzg4LDMzIEBAIGVudW0gRVBhZ2VCcmVhayB7CiAgICAgUEJBVVRPLCBQQkFMV0FZUywgUEJB
Vk9JRAogfTsKIAorY2xhc3MgQ3Vyc29ySW5mbyB7CitwdWJsaWM6CisgICAgQ3Vyc29ySW5mbyhD
U1NDdXJzb3JJbWFnZVZhbHVlKik7CisgICAgfkN1cnNvckluZm8oKTsKKyAgICB2b2lkIGNsZWFy
Q3Vyc29yKCk7CisKKyAgICBDdXJzb3JJbmZvKGNvbnN0IEN1cnNvckluZm8mIG8pOworCisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEN1cnNvckluZm8mIG8pIGNvbnN0IHsKKyAgICAgICAgcmV0
dXJuIG1fY3Vyc29yID09IG8ubV9jdXJzb3I7CisgICAgfQorICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBDdXJzb3JJbmZvJiBvKSBjb25zdCB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8p
OworICAgIH0KKyAgICBDYWNoZWRJbWFnZSogY3Vyc29ySW1hZ2UoRG9jTG9hZGVyKiBkb2NMb2Fk
ZXIpIHsKKyAgICAgICAgIHJldHVybiAgbV9jdXJzb3ItPmltYWdlKGRvY0xvYWRlcik7CisgICAg
fQorICAgIEludFBvaW50IGN1cnNvckhvdHNwb3QoKSB7IHJldHVybiBtX2N1cnNvci0+aG90c3Bv
dCgpOyB9CisgICAgY2xhc3MgQ3Vyc29ySW5mbyogbmV4dCgpIHsgcmV0dXJuIG1fbmV4dDsgfQor
ICAgIHZvaWQgc2V0TmV4dChDdXJzb3JJbmZvKiBuZXh0KSB7IG1fbmV4dCA9IG5leHQ7IH0KKyAg
ICBDU1NDdXJzb3JJbWFnZVZhbHVlKiBjdXJzb3IoKSB7IHJldHVybiBtX2N1cnNvcjsgfQorCitw
cml2YXRlOgorICAgIENTU0N1cnNvckltYWdlVmFsdWUqIG1fY3Vyc29yOworICAgIEN1cnNvcklu
Zm8qIG1fbmV4dDsKK307CisKIGNsYXNzIFN0eWxlSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBTaGFy
ZWQ8U3R5bGVJbmhlcml0ZWREYXRhPgogewogcHVibGljOgpAQCAtNzk4LDYgKzgyNiw4IEBAIHB1
YmxpYzoKICAgICBib29sIG9wZXJhdG9yICE9ICggY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhICZv
ICkgY29uc3QgewogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKICAgICB9CisgICAgdm9p
ZCBzZXRDdXJzb3JzKEN1cnNvckluZm8qIG8pOworICAgIHZvaWQgYWRkQ3Vyc29yKENTU0N1cnNv
ckltYWdlVmFsdWUqIHYpOwogCiAgICAgTGVuZ3RoIGluZGVudDsKICAgICAvLyBjb3VsZCBiZSBw
YWNrZWQgaW4gYSBzaG9ydCBidXQgZG9lc24ndApAQCAtODA1LDcgKzgzNSw3IEBAIHB1YmxpYzoK
ICAgICBMZW5ndGggbGluZV9oZWlnaHQ7CiAKICAgICBDYWNoZWRJbWFnZSAqc3R5bGVfaW1hZ2U7
Ci0gICAgQ2FjaGVkSW1hZ2UgKmN1cnNvcl9pbWFnZTsKKyAgICBDdXJzb3JJbmZvKiBjdXJzb3JJ
bmZvOwogCiAgICAgRm9udCBmb250OwogICAgIENvbG9yIGNvbG9yOwpAQCAtMTI4OSw3ICsxMzE5
LDcgQEAgcHVibGljOgogCiAgICAgRUN1cnNvciBjdXJzb3IoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFQ3Vyc29yPihpbmhlcml0ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSk7IH0KICAgICAK
LSAgICBDYWNoZWRJbWFnZSAqY3Vyc29ySW1hZ2UoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQt
PmN1cnNvcl9pbWFnZTsgfQorICAgIEN1cnNvckluZm8qIGN1cnNvcnMoKSBjb25zdCB7IHJldHVy
biBpbmhlcml0ZWQtPmN1cnNvckluZm87IH0KIAogICAgIHNob3J0IHdpZG93cygpIGNvbnN0IHsg
cmV0dXJuIGluaGVyaXRlZC0+d2lkb3dzOyB9CiAgICAgc2hvcnQgb3JwaGFucygpIGNvbnN0IHsg
cmV0dXJuIGluaGVyaXRlZC0+b3JwaGFuczsgfQpAQCAtMTQ5Miw3ICsxNTIyLDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0UGFkZGluZ1JpZ2h0KExlbmd0aCB2KSAgeyAgU0VUX1ZBUihzdXJyb3Vu
ZCxwYWRkaW5nLnJpZ2h0LHYpIH0KIAogICAgIHZvaWQgc2V0Q3Vyc29yKCBFQ3Vyc29yIGMgKSB7
IGluaGVyaXRlZF9mbGFncy5fY3Vyc29yX3N0eWxlID0gYzsgfQotICAgIHZvaWQgc2V0Q3Vyc29y
SW1hZ2UoIENhY2hlZEltYWdlICp2ICkgeyBTRVRfVkFSKGluaGVyaXRlZCxjdXJzb3JfaW1hZ2Us
dikgfQorICAgIHZvaWQgYWRkQ3Vyc29yKENTU0N1cnNvckltYWdlVmFsdWUqIHYpOworICAgIHZv
aWQgc2V0Q3Vyc29ycyhDdXJzb3JJbmZvKiBvKTsKIAogICAgIGJvb2wgZm9yY2VCYWNrZ3JvdW5k
c1RvV2hpdGUoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91
bmRzX3RvX3doaXRlOyB9CiAgICAgdm9pZCBzZXRGb3JjZUJhY2tncm91bmRzVG9XaGl0ZShib29s
IGI9dHJ1ZSkgeyBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlID0g
YjsgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfc3R5bGUuY3BwCShyZXZpc2lvbiAxNDU0MCkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ0NiwxMCArNDQ2LDM4IEBAIGJvb2wgU3R5bGVDU1MzSW5oZXJpdGVkRGF0YTo6c2hhZG93RGF0
YUUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorQ3Vyc29ySW5mbzo6Q3Vyc29ySW5mbyhDU1NDdXJz
b3JJbWFnZVZhbHVlKiBjdXJzb3IpCis6IG1fY3Vyc29yKGN1cnNvciksIG1fbmV4dCgwKQorewor
ICAgIGlmIChtX2N1cnNvcikgbV9jdXJzb3ItPnJlZigpOworfQorCitDdXJzb3JJbmZvOjp+Q3Vy
c29ySW5mbygpCit7CisgICAgY2xlYXJDdXJzb3IoKTsKK30KKworQ3Vyc29ySW5mbzo6Q3Vyc29y
SW5mbyhjb25zdCBDdXJzb3JJbmZvJiBvKQoreworICAgIG1fY3Vyc29yID0gby5tX2N1cnNvcjsK
KyAgICBpZiAobV9jdXJzb3IpIG1fY3Vyc29yLT5yZWYoKTsKKyAgICBpZiAoby5tX25leHQpCisg
ICAgICAgIG1fbmV4dCA9IG5ldyBDdXJzb3JJbmZvKCpvLm1fbmV4dCk7CisgICAgZWxzZQorICAg
ICAgICBtX25leHQgPSAwOworfQorCit2b2lkIEN1cnNvckluZm86OmNsZWFyQ3Vyc29yKCkKK3sK
KyAgICBkZWxldGUgbV9uZXh0OworICAgIGlmIChtX2N1cnNvcikgbV9jdXJzb3ItPmRlcmVmKCk7
CisgICAgbV9uZXh0ID0gMDsKK30KKwogU3R5bGVJbmhlcml0ZWREYXRhOjpTdHlsZUluaGVyaXRl
ZERhdGEoKQogICAgIDogaW5kZW50KCBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRJbmRlbnQoKSAp
LCBsaW5lX2hlaWdodCggUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkgKSwgCiAgICAg
ICBzdHlsZV9pbWFnZSggUmVuZGVyU3R5bGU6OmluaXRpYWxMaXN0U3R5bGVJbWFnZSgpICksCi0g
ICAgICBjdXJzb3JfaW1hZ2UoIDAgKSwgZm9udCgpLCBjb2xvciggUmVuZGVyU3R5bGU6OmluaXRp
YWxDb2xvcigpICksIAorICAgICAgY3Vyc29ySW5mbyggMCApLCBmb250KCksIGNvbG9yKCBSZW5k
ZXJTdHlsZTo6aW5pdGlhbENvbG9yKCkgKSwgCiAgICAgICBob3Jpem9udGFsX2JvcmRlcl9zcGFj
aW5nKCBSZW5kZXJTdHlsZTo6aW5pdGlhbEhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkgKSwgCiAg
ICAgICB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyggUmVuZGVyU3R5bGU6OmluaXRpYWxWZXJ0aWNh
bEJvcmRlclNwYWNpbmcoKSApLAogICAgICAgd2lkb3dzKCBSZW5kZXJTdHlsZTo6aW5pdGlhbFdp
ZG93cygpICksIG9ycGhhbnMoIFJlbmRlclN0eWxlOjppbml0aWFsT3JwaGFucygpICksCkBAIC00
NTksMTcgKzQ4NywxOSBAQCBTdHlsZUluaGVyaXRlZERhdGE6OlN0eWxlSW5oZXJpdGVkRGF0YSgp
CiAKIFN0eWxlSW5oZXJpdGVkRGF0YTo6flN0eWxlSW5oZXJpdGVkRGF0YSgpCiB7CisgICAgIGRl
bGV0ZSBjdXJzb3JJbmZvOwogfQogCiBTdHlsZUluaGVyaXRlZERhdGE6OlN0eWxlSW5oZXJpdGVk
RGF0YShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmIG8gKQogICAgIDogU2hhcmVkPFN0eWxlSW5o
ZXJpdGVkRGF0YT4oKSwKICAgICAgIGluZGVudCggby5pbmRlbnQgKSwgbGluZV9oZWlnaHQoIG8u
bGluZV9oZWlnaHQgKSwgc3R5bGVfaW1hZ2UoIG8uc3R5bGVfaW1hZ2UgKSwKLSAgICAgIGN1cnNv
cl9pbWFnZSggby5jdXJzb3JfaW1hZ2UgKSwgZm9udCggby5mb250ICksCi0gICAgICBjb2xvcigg
by5jb2xvciApLAorICAgICAgZm9udCggby5mb250ICksIGNvbG9yKCBvLmNvbG9yICksCiAgICAg
ICBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKCBvLmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcg
KSwKICAgICAgIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKCBvLnZlcnRpY2FsX2JvcmRlcl9zcGFj
aW5nICksCiAgICAgICB3aWRvd3Moby53aWRvd3MpLCBvcnBoYW5zKG8ub3JwaGFucyksIHBhZ2Vf
YnJlYWtfaW5zaWRlKG8ucGFnZV9icmVha19pbnNpZGUpCiB7CisgICAgY3Vyc29ySW5mbyA9IDA7
CisgICAgc2V0Q3Vyc29ycyhvLmN1cnNvckluZm8pOwogfQogCiBib29sIFN0eWxlSW5oZXJpdGVk
RGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0CkBAIC00
NzgsNyArNTA4LDcgQEAgYm9vbCBTdHlsZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29ucwog
ICAgICAgICBpbmRlbnQgPT0gby5pbmRlbnQgJiYKICAgICAgICAgbGluZV9oZWlnaHQgPT0gby5s
aW5lX2hlaWdodCAmJgogICAgICAgICBzdHlsZV9pbWFnZSA9PSBvLnN0eWxlX2ltYWdlICYmCi0g
ICAgICAgIGN1cnNvcl9pbWFnZSA9PSBvLmN1cnNvcl9pbWFnZSAmJgorICAgICAgICBjdXJzb3JJ
bmZvID09IG8uY3Vyc29ySW5mbyAmJgogICAgICAgICBmb250ID09IG8uZm9udCAmJgogICAgICAg
ICBjb2xvciA9PSBvLmNvbG9yICYmCiAgICAgICAgIGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcg
PT0gby5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nICYmCkBAIC03NTIsNyArNzgyLDcgQEAgUmVu
ZGVyU3R5bGU6OkRpZmYgUmVuZGVyU3R5bGU6OmRpZmYoIGNvbgogICAgICAgICAhKGluaGVyaXRl
ZC0+aW5kZW50ID09IG90aGVyLT5pbmhlcml0ZWQtPmluZGVudCkgfHwKICAgICAgICAgIShpbmhl
cml0ZWQtPmxpbmVfaGVpZ2h0ID09IG90aGVyLT5pbmhlcml0ZWQtPmxpbmVfaGVpZ2h0KSB8fAog
ICAgICAgICAhKGluaGVyaXRlZC0+c3R5bGVfaW1hZ2UgPT0gb3RoZXItPmluaGVyaXRlZC0+c3R5
bGVfaW1hZ2UpIHx8Ci0gICAgICAgICEoaW5oZXJpdGVkLT5jdXJzb3JfaW1hZ2UgPT0gb3RoZXIt
PmluaGVyaXRlZC0+Y3Vyc29yX2ltYWdlKSB8fAorICAgICAgICAhKGluaGVyaXRlZC0+Y3Vyc29y
SW5mbyA9PSBvdGhlci0+aW5oZXJpdGVkLT5jdXJzb3JJbmZvKSB8fAogICAgICAgICAhKGluaGVy
aXRlZC0+Zm9udCA9PSBvdGhlci0+aW5oZXJpdGVkLT5mb250KSB8fAogICAgICAgICAhKGluaGVy
aXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyA9PSBvdGhlci0+aW5oZXJpdGVkLT5ob3Jp
em9udGFsX2JvcmRlcl9zcGFjaW5nKSB8fAogICAgICAgICAhKGluaGVyaXRlZC0+dmVydGljYWxf
Ym9yZGVyX3NwYWNpbmcgPT0gb3RoZXItPmluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNp
bmcpIHx8CkBAIC05MTgsNiArOTQ4LDQzIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENsaXAoIExl
bmd0aCB0b3AsIEwKICAgICBkYXRhLT5jbGlwLmxlZnQgPSBsZWZ0OwogfQogCit2b2lkIFJlbmRl
clN0eWxlOjpzZXRDdXJzb3JzKEN1cnNvckluZm8qIG8pCit7CisgICAgaW5oZXJpdGVkLmFjY2Vz
cygpLT5zZXRDdXJzb3JzKG8pOworfQorCit2b2lkIFN0eWxlSW5oZXJpdGVkRGF0YTo6c2V0Q3Vy
c29ycyhDdXJzb3JJbmZvKiBvKQoreworICAgIGlmIChvKSB7CisgICAgICAgIGRlbGV0ZSBjdXJz
b3JJbmZvOworICAgICAgICBjdXJzb3JJbmZvID0gMDsKKyAgICAgICAgQ3Vyc29ySW5mbyogaW5m
byA9IG87CisgICAgICAgIHdoaWxlIChpbmZvKSB7CisgICAgICAgICAgICBhZGRDdXJzb3IoaW5m
by0+Y3Vyc29yKCkpOworICAgICAgICAgICAgaW5mbyA9IGluZm8tPm5leHQoKTsKKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3Vyc29yKENTU0N1cnNvckltYWdl
VmFsdWUqIHYpCit7CisgICAgaW5oZXJpdGVkLmFjY2VzcygpLT5hZGRDdXJzb3Iodik7Cit9CisK
K3ZvaWQgU3R5bGVJbmhlcml0ZWREYXRhOjphZGRDdXJzb3IoQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSog
dikKK3sKKyAgICBDdXJzb3JJbmZvKiBsYXN0Q3Vyc29ySW5mbyA9IGN1cnNvckluZm87CisgICAg
d2hpbGUgKGxhc3RDdXJzb3JJbmZvICYmIGxhc3RDdXJzb3JJbmZvLT5uZXh0KCkpCisgICAgICAg
IGxhc3RDdXJzb3JJbmZvID0gbGFzdEN1cnNvckluZm8tPm5leHQoKTsKKworICAgIEN1cnNvcklu
Zm8qIG5ld0N1cnNvckluZm8gPSBuZXcgQ3Vyc29ySW5mbyh2KTsKKworICAgIGlmIChsYXN0Q3Vy
c29ySW5mbykKKyAgICAgICAgbGFzdEN1cnNvckluZm8tPnNldE5leHQobmV3Q3Vyc29ySW5mbyk7
CisgICAgZWxzZQorICAgICAgICBjdXJzb3JJbmZvID0gbmV3Q3Vyc29ySW5mbzsKK30KKwogYm9v
bCBSZW5kZXJTdHlsZTo6Y29udGVudERhdGFFcXVpdmFsZW50KGNvbnN0IFJlbmRlclN0eWxlKiBv
dGhlclN0eWxlKSBjb25zdAogewogICAgIENvbnRlbnREYXRhKiBjMSA9IGNvbnRlbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8512</attachid>
            <date>2006-05-24 07:25:35 -0700</date>
            <delta_ts>2006-06-02 13:56:05 -0700</delta_ts>
            <desc>Patch addressing MacDome&apos;s suggestions</desc>
            <filename>6002-3.diff</filename>
            <type>text/plain</type>
            <size>29498</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNDU2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMDYtMDUtMjQgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAxCisgICAgICAg
IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9tIGN1cnNvcnMKKyAgICAgICAg
Rml4IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTYw
MDIKKyAgICAgICAgV2ViS2l0IGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSBTVkcgPGN1cnNvcj4g
ZWxlbWVudAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzdmcgY3Vyc29yIGltYWdlcy4gQWxz
byBtYWtlIHN1cmUgaG90c3BvdAorICAgICAgICBzZXR0aW5ncyBhcmUgaGFuZGxlZCBjb3JyZWN0
bHkuIEZpbmFsbHkgaW1wbGVtZW50IGZhbGxiYWNrLgorCisgICAgICAgICogY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1ND
dXJzb3JJbWFnZVZhbHVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJ
bWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1
cnNvckltYWdlVmFsdWU6On5DU1NDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvcklt
YWdlVmFsdWU6OmhvdHNwb3QpOgorICAgICAgICAqIGNzcy9jc3NwYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKiBjc3MvY3Nzc3R5
bGVzZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBs
eVByb3BlcnR5KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6Cisg
ICAgICAgIChTVkdDdXJzb3JFbGVtZW50OjpTVkdDdXJzb3JFbGVtZW50KToKKyAgICAgICAgKFNW
R0N1cnNvckVsZW1lbnQ6On5TVkdDdXJzb3JFbGVtZW50KToKKyAgICAgICAgKFNWR0N1cnNvckVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ3Vy
c29yRWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNlbGVjdEN1cnNvcik6CisgICAgICAgICogcGxhdGZvcm0vQ3Vyc29yLmg6CisgICAg
ICAgICogcGxhdGZvcm0vRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DdXJzb3JNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDdXN0b21DdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3Vyc29yOjpDdXJzb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9yZW5kZXJfc3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29ySW5mbzo6Q3Vyc29ySW5mbyk6CisgICAgICAg
IChXZWJDb3JlOjpDdXJzb3JJbmZvOjp+Q3Vyc29ySW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpD
dXJzb3JJbmZvOjpjbGVhckN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUluaGVyaXRl
ZERhdGE6OlN0eWxlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUluaGVy
aXRlZERhdGE6On5TdHlsZUluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJ
bmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjpkaWZmKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDdXJzb3JzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlSW5oZXJpdGVkRGF0YTo6c2V0Q3Vyc29ycyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlSW5oZXJpdGVkRGF0YTo6YWRkQ3Vyc29yKToKKyAgICAgICAgKiByZW5kZXJpbmcvcmVuZGVy
X3N0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JJbmZvOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cnNvckluZm86Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q3Vyc29ySW5mbzo6Y3Vyc29ySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29ySW5m
bzo6Y3Vyc29ySG90c3BvdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JJbmZvOjpuZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cnNvckluZm86OnNldE5leHQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3Vyc29ySW5mbzo6Y3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpj
dXJzb3JzKToKKwogMjAwNi0wNS0yNCAgRGF2ZSBIeWF0dCA8aHlhdHRAYXBwbGUuY29tPgogCiAg
ICAgICAgIEZpeCBhIGJ1ZyB3aXRoIHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgQ2Fpcm8gZ2x5cGgg
b2Zmc2V0cwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCShyZXZpc2lvbiAxNDU2MCkKKysrIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Myw0NSArNTUzLDcyIEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICBjYXNlIENTU19QUk9QX0NPVU5U
RVJfUkVTRVQ6CiAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOgotICAgICAgICBpZiAoc3R5bGUtPmN1cnNvcklt
YWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5j
dXJzb3JJbWFnZSgpLT51cmwoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpOworICAgIGNh
c2UgQ1NTX1BST1BfQ1VSU09SOiB7CisgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IDA7Cisg
ICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IDA7CisgICAgICAgIGlmIChzdHlsZS0+Y3Vyc29ycygp
KSB7CisgICAgICAgICAgICBsaXN0ID0gbmV3IENTU1ZhbHVlTGlzdDsKKyAgICAgICAgICAgIEN1
cnNvckluZm8qIGN1cnNvciA9IHN0eWxlLT5jdXJzb3JzKCk7CisgICAgICAgICAgICBkbyB7Cisg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZShjdXJzb3It
PmN1cnNvckltYWdlKG5vZGUtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpKS0+dXJsKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSk7CisgICAgICAgICAgICB9IHdoaWxlICgoY3Vyc29yID0g
Y3Vyc29yLT5uZXh0KCkpKTsKKyAgICAgICAgfQogICAgICAgICBzd2l0Y2ggKHN0eWxlLT5jdXJz
b3IoKSkgewogICAgICAgICAgICAgY2FzZSBDVVJTT1JfQVVUTzoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7CisgICAgICAgICAgICAg
ICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0NST1NTOgotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DUk9TU0hBSVIpOwor
ICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ1JP
U1NIQUlSKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09S
X0RFRkFVTFQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0RFRkFVTFQpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfREVGQVVMVCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIENVUlNPUl9QT0lOVEVSOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QT0lOVEVSKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1BPSU5URVIpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfTU9WRToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTU9WRSk7CisgICAgICAgICAgICAg
ICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9NT1ZFKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0VfUkVTSVpFOgotICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FX1JFU0laRSk7
CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9F
X1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNP
Ul9ORV9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX05FX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9ORV9SRVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBDVVJTT1JfTldfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OV19SRVNJWkUpOworICAgICAgICAgICAg
ICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTldfUkVTSVpFKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX05fUkVTSVpFOgot
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OX1JF
U0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9OX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IENVUlNPUl9TRV9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1NFX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TRV9SRVNJWkUpOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfU1dfUkVTSVpFOgotICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TV19SRVNJWkUpOworICAgICAg
ICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1dfUkVTSVpF
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1NfUkVT
SVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9TX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9TX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIENVUlNPUl9XX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfV19SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV19SRVNJWkUpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfVEVYVDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEVYVCk7CisgICAgICAgICAgICAg
ICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9URVhUKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1dBSVQ6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1dBSVQpOworICAgICAg
ICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV0FJVCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9IRUxQOgotICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9IRUxQKTsK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hF
TFApOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgaWYgKGxpc3QpIHsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh2
YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgfQorICAgICAgICBBU1NF
UlQodmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQogICAgIGNhc2UgQ1NTX1BS
T1BfRElSRUNUSU9OOgogICAgICAgICBzd2l0Y2ggKHN0eWxlLT5kaXJlY3Rpb24oKSkgewogICAg
ICAgICAgICAgY2FzZSBMVFI6CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACisvKioKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjEx
MS0xMzA3LCBVU0EuCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NDdXJz
b3JJbWFnZVZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgSW50UG9p
bnQmIHAsIFN0eWxlQmFzZSogc3R5bGUpCisgICAgOiBDU1NJbWFnZVZhbHVlKHVybCwgc3R5bGUp
CisgICAgLCBtX2hvdHNwb3QocCkKK3sKK30KKworQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6fkNTU0N1
cnNvckltYWdlVmFsdWUoKQoreworfQorfQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUu
aAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjEx
MS0xMzA3LCBVU0EuCisgKi8KKworI2lmbmRlZiBDU1NDdXJzb3JJbWFnZVZhbHVlX0gKKyNkZWZp
bmUgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZV9ICisKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1
ZGUgIkNTU0ltYWdlVmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1ND
dXJzb3JJbWFnZVZhbHVlIDogcHVibGljIENTU0ltYWdlVmFsdWUKK3sKK3B1YmxpYzoKKyAgICBD
U1NDdXJzb3JJbWFnZVZhbHVlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBJbnRQb2ludCYsIFN0
eWxlQmFzZSopOworICAgIHZpcnR1YWwgfkNTU0N1cnNvckltYWdlVmFsdWUoKTsKKworICAgIElu
dFBvaW50IGhvdHNwb3QoKSBjb25zdCB7IHJldHVybiBtX2hvdHNwb3Q7IH0KKworcHJvdGVjdGVk
OgorICAgIEludFBvaW50IG1faG90c3BvdDsKK307Cit9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYK
SW5kZXg6IFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9j
c3MvY3NzcGFyc2VyLmNwcAkocmV2aXNpb24gMTQ1NjApCisrKyBXZWJDb3JlL2Nzcy9jc3NwYXJz
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiY3NzcGFy
c2VyLmgiCiAKICNpbmNsdWRlICJDU1NCb3JkZXJJbWFnZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NJbXBvcnRSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTSW5oZXJpdGVkVmFsdWUuaCIKQEAgLTQz
LDYgKzQ0LDEyIEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiRGFzaGJv
YXJkUmVnaW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpZiBTVkdfU1VQUE9SVAorI2lu
Y2x1ZGUgIlhMaW5rTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNW
R0N1cnNvckVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgorI2VuZGlm
CiAjaW5jbHVkZSAiRm9udEZhbWlseVZhbHVlLmgiCiAjaW5jbHVkZSAiRm9udFZhbHVlLmgiCiAj
aW5jbHVkZSAiTWVkaWFMaXN0LmgiCkBAIC02NTksMjEgKzY2Niw0OSBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBD
U1NfUFJPUF9DVVJTT1I6Ci0gICAgICAgIC8vICBbIGF1dG8gfCBjcm9zc2hhaXIgfCBkZWZhdWx0
IHwgcG9pbnRlciB8IHByb2dyZXNzIHwgbW92ZSB8IGUtcmVzaXplIHwgbmUtcmVzaXplIHwKKyAg
ICAgICAgLy8gIFs8dXJpPixdKiBbIGF1dG8gfCBjcm9zc2hhaXIgfCBkZWZhdWx0IHwgcG9pbnRl
ciB8IHByb2dyZXNzIHwgbW92ZSB8IGUtcmVzaXplIHwgbmUtcmVzaXplIHwKICAgICAgICAgLy8g
bnctcmVzaXplIHwgbi1yZXNpemUgfCBzZS1yZXNpemUgfCBzdy1yZXNpemUgfCBzLXJlc2l6ZSB8
IHctcmVzaXplIHwgdGV4dCB8CiAgICAgICAgIC8vIHdhaXQgfCBoZWxwIF0gXSB8IGluaGVyaXQK
LSAgICAgICAgaWYgKCFzdHJpY3QgJiYgaWQgPT0gQ1NTX1ZBTF9IQU5EKSB7IC8vIE1TSUUgNSBj
b21wYXRpYmlsaXR5IDovCisgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IG5ldyBDU1NWYWx1
ZUxpc3Q7CisgICAgICAgIHdoaWxlICh2YWx1ZSAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1VSSSkgeworICAgICAgICAgICAgU3RyaW5nIHVyaSA9IHBhcnNlVVJMKGRv
bVN0cmluZyh2YWx1ZS0+c3RyaW5nKSk7CisjaWYgU1ZHX1NVUFBPUlQKKyAgICAgICAgICAgIGlm
ICh1cmkuZmluZCgiIyIpID09IDApIHsKKyAgICAgICAgICAgICAgICBFbGVtZW50KiBlID0gZG9j
dW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQodXJpLmRlcHJlY2F0ZWRTdHJpbmcoKS5taWQoMSkpOwor
ICAgICAgICAgICAgICAgIGlmIChlICYmIGUtPmhhc1RhZ05hbWUoV2ViQ29yZTo6U1ZHTmFtZXM6
OmN1cnNvclRhZykpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHVybCA9IGUtPmdldEF0
dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0cik7CisgICAgICAgICAgICAgICAgICAgIGludCB4
ID0gaW50KHN0YXRpY19jYXN0PFNWR0N1cnNvckVsZW1lbnQqPihlKS0+eCgpLT5iYXNlVmFsKCkt
PnZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICBpbnQgeSA9IGludChzdGF0aWNfY2FzdDxT
VkdDdXJzb3JFbGVtZW50Kj4oZSktPnkoKS0+YmFzZVZhbCgpLT52YWx1ZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NDdXJzb3JJbWFnZVZhbHVlKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKEtVUkwoc3R5bGVFbGVtZW50LT5iYXNl
VVJMKCkuZGVwcmVjYXRlZFN0cmluZygpLCB1cmwuZGVwcmVjYXRlZFN0cmluZygpKS51cmwoKSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludCh4LCB5KSwgc3R5bGVF
bGVtZW50KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisjZW5kaWYK
KyAgICAgICAgICAgIGlmICghdXJpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQobmV3IENTU0N1cnNvckltYWdlVmFsdWUoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFN0cmluZyhLVVJMKHN0eWxlRWxlbWVudC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmco
KSwgdXJpLmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJsKCkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJbnRQb2ludCgpLCBzdHlsZUVsZW1lbnQpKTsKKyAgICAgICAgICAgIHZhbHVlTGlz
dC0+bmV4dCgpOyAvLyBjb21tYQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxpc3QtPm5leHQo
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAobGlzdC0+bGVuZ3RoKCkpIHsKKyAgICAgICAgICAg
IHBhcnNlZFZhbHVlID0gbGlzdDsKKyAgICAgICAgICAgIGlmICghdmFsdWUpIHsgLy8gbm8gdmFs
dWUgYWZ0ZXIgdXJsIGxpc3QgKE1TSUUgNSBjb21wYXRpYmlsaXR5KQorICAgICAgICAgICAgfSBl
bHNlIGlmICghc3RyaWN0ICYmIHZhbHVlLT5pZCA9PSBDU1NfVkFMX0hBTkQpIC8vIE1TSUUgNSBj
b21wYXRpYmlsaXR5IDovCisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX1BPSU5URVIpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVl
LT5pZCA+PSBDU1NfVkFMX0FVVE8gJiYgdmFsdWUtPmlkIDw9IENTU19WQUxfSEVMUCkKKyAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLT5pZCkp
OworICAgICAgICAgICAgdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBkZWxldGUgbGlzdDsKKyAgICAgICAg
aWYgKCFzdHJpY3QgJiYgdmFsdWUtPmlkID09IENTU19WQUxfSEFORCkgeyAvLyBNU0lFIDUgY29t
cGF0aWJpbGl0eSA6LwogICAgICAgICAgICAgaWQgPSBDU1NfVkFMX1BPSU5URVI7CiAgICAgICAg
ICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKGlkID49IENT
U19WQUxfQVVUTyAmJiBpZCA8PSBDU1NfVkFMX0hFTFApCisgICAgICAgIH0gZWxzZSBpZiAodmFs
dWUtPmlkID49IENTU19WQUxfQVVUTyAmJiB2YWx1ZS0+aWQgPD0gQ1NTX1ZBTF9IRUxQKQogICAg
ICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAodmFsdWUt
PnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKLSAgICAgICAgICAgIFN0cmlu
ZyB1cmkgPSBwYXJzZVVSTChkb21TdHJpbmcodmFsdWUtPnN0cmluZykpOwotICAgICAgICAgICAg
aWYgKCF1cmkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBuZXcg
Q1NTSW1hZ2VWYWx1ZShTdHJpbmcoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXByZWNh
dGVkU3RyaW5nKCksIHVyaS5kZXByZWNhdGVkU3RyaW5nKCkpLnVybCgpKSwgc3R5bGVFbGVtZW50
KTsKLSAgICAgICAgICAgICAgICB2YWx1ZUxpc3QtPm5leHQoKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORF9B
VFRBQ0hNRU5UOgpJbmRleDogV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJKHJldmlzaW9uIDE0NTYw
KQorKysgV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjc3NzdHlsZXNlbGVjdG9yLmgiCiAKICNpbmNsdWRl
ICJDU1NCb3JkZXJJbWFnZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5o
IgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbXBvcnRSdWxlLmgi
CiAjaW5jbHVkZSAiQ1NTTWVkaWFSdWxlLmgiCkBAIC0yMjQ1LDIzICsyMjQ2LDMzIEBAIHZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICBjYXNlIENTU19QUk9QX0NV
UlNPUjoKICAgICAgICAgaWYgKGlzSW5oZXJpdCkgewogICAgICAgICAgICAgc3R5bGUtPnNldEN1
cnNvcihwYXJlbnRTdHlsZS0+Y3Vyc29yKCkpOwotICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNv
ckltYWdlKHBhcmVudFN0eWxlLT5jdXJzb3JJbWFnZSgpKTsKKyAgICAgICAgICAgIHN0eWxlLT5z
ZXRDdXJzb3JzKHBhcmVudFN0eWxlLT5jdXJzb3JzKCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChpc0luaXRpYWwpIHsKICAgICAgICAgICAgIHN0eWxlLT5z
ZXRDdXJzb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxDdXJzb3IoKSk7Ci0gICAgICAgICAgICBzdHls
ZS0+c2V0Q3Vyc29ySW1hZ2UoMCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7CisgICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxp
c3QoKSkgeworICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NT
VmFsdWVMaXN0Kj4odmFsdWUpOworICAgICAgICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgp
OworICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcihDVVJTT1JfQVVUTyk7CisgICAgICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+aXRlbShpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkgY29udGludWU7CisgICAgICAgICAgICAgICAg
cHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOwor
ICAgICAgICAgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUo
KTsKKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VS
SSkgeworICAgICAgICAgICAgICAgICAgICBDU1NDdXJzb3JJbWFnZVZhbHVlKiBpbWFnZSA9IHN0
YXRpY19jYXN0PENTU0N1cnNvckltYWdlVmFsdWUqPihwcmltaXRpdmVWYWx1ZSk7CisgICAgICAg
ICAgICAgICAgICAgIHN0eWxlLT5hZGRDdXJzb3IoaW1hZ2UpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQorICAgICAgICAg
ICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKChFQ3Vyc29yKShwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSAtIENTU19WQUxfQVVUTykpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
aWYgKHByaW1pdGl2ZVZhbHVlKSB7CiAgICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZh
bHVlLT5wcmltaXRpdmVUeXBlKCk7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0lERU5UKSB7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcigo
RUN1cnNvcikocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgLSBDU1NfVkFMX0FVVE8pKTsKLSAg
ICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29ySW1hZ2UoMCk7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKLSAgICAgICAgICAg
ICAgICBDU1NJbWFnZVZhbHVlKiBpbWFnZSA9IHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPihw
cmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcihDVVJTT1Jf
QVVUTyk7Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvckltYWdlKGltYWdlLT5pbWFn
ZShlbGVtZW50LT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29y
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE0NTYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29y
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDkgKzI1LDcgQEAKICNpbmNsdWRlICJT
VkdDdXJzb3JFbGVtZW50LmgiCiAKICNpbmNsdWRlICJBdHRyLmgiCi0jaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkRvY0xvYWRlci5oIgog
I2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRMZW5ndGguaCIKQEAgLTM2LDE1ICszNCwxMiBAQAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIFNWR0N1cnNvckVsZW1lbnQ6OlNWR0N1cnNvckVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQgKmRvYykKLTogU1ZHRWxlbWVudCh0YWdOYW1l
LCBkb2MpLCBTVkdUZXN0cygpLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCksIFNWR1VS
SVJlZmVyZW5jZSgpLCBDYWNoZWRPYmplY3RDbGllbnQoKQorOiBTVkdFbGVtZW50KHRhZ05hbWUs
IGRvYyksIFNWR1Rlc3RzKCksIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKSwgU1ZHVVJJ
UmVmZXJlbmNlKCkKIHsKLSAgICBtX2NhY2hlZEltYWdlID0gMDsKIH0KIAogU1ZHQ3Vyc29yRWxl
bWVudDo6flNWR0N1cnNvckVsZW1lbnQoKQogewotICAgIGlmIChtX2NhY2hlZEltYWdlKQotICAg
ICAgICBtX2NhY2hlZEltYWdlLT5kZXJlZih0aGlzKTsKIH0KIAogU1ZHQW5pbWF0ZWRMZW5ndGgg
KlNWR0N1cnNvckVsZW1lbnQ6OngoKSBjb25zdApAQCAtNjYsMTYgKzYxLDEyIEBAIHZvaWQgU1ZH
Q3Vyc29yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICAgICAgeSgpLT5iYXNlVmFsKCkt
PnNldFZhbHVlQXNTdHJpbmcodmFsdWUuaW1wbCgpKTsKICAgICBlbHNlCiAgICAgewotICAgICAg
ICBpZihTVkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKLSAgICAg
ICAgaWYoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
YXR0cikpIHJldHVybjsKLSAgICAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoYXR0cikpIHsKLSAgICAgICAgICAgIGlmIChtX2NhY2hlZEltYWdlKQotICAgICAg
ICAgICAgICAgIG1fY2FjaGVkSW1hZ2UtPmRlcmVmKHRoaXMpOwotICAgICAgICAgICAgbV9jYWNo
ZWRJbWFnZSA9IG93bmVyRG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RJbWFnZShocmVm
KCktPmJhc2VWYWwoKSk7Ci0gICAgICAgICAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAg
ICAgICAgICBtX2NhY2hlZEltYWdlLT5yZWYodGhpcyk7CisgICAgICAgIGlmIChTVkdUZXN0czo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShh
dHRyKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KIAogICAgICAgICBTVkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKICAg
ICB9CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCShyZXZpc2lvbiAxNDU2
MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsMTcgKzMwLDE1IEBACiAjaW5jbHVkZSAiU1ZHVGVzdHMuaCIKICNpbmNsdWRlICJT
VkdVUklSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LmgiCi0jaW5jbHVkZSAiQ2FjaGVkT2JqZWN0Q2xpZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
CiB7CiAgICAgY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGg7CiAKICAgICBjbGFzcyBTVkdDdXJzb3JF
bGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgU1ZHVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgQ2FjaGVkT2JqZWN0Q2xpZW50CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2UKICAgICB7CiAgICAgcHVibGljOgog
ICAgICAgICBTVkdDdXJzb3JFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50ICpkb2MpOwpAQCAtNTQsMTIgKzUyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICph
dHRyKTsKIAotICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX2NhY2hlZEltYWdlOyB9Ci0KICAgICBwcml2YXRlOgogICAgICAgICBtdXRhYmxlIFJlZlB0
cjxTVkdBbmltYXRlZExlbmd0aD4gbV94OwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmlt
YXRlZExlbmd0aD4gbV95OwotICAgICAgICBDYWNoZWRJbWFnZSAqbV9jYWNoZWRJbWFnZTsKICAg
ICB9OwogfTsKIApJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDE0NTYwKQorKysgV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MCwxMSArNTUwLDE4IEBA
IHN0YXRpYyBDdXJzb3Igc2VsZWN0Q3Vyc29yKGNvbnN0IE1vdXNlRXYKICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gbm9kZSA/IG5vZGUtPnJlbmRlcmVyKCkgOiAwOwogICAgIFJlbmRlclN0
eWxlKiBzdHlsZSA9IHJlbmRlcmVyID8gcmVuZGVyZXItPnN0eWxlKCkgOiAwOwogCi0gICAgaWYg
KHN0eWxlICYmIHN0eWxlLT5jdXJzb3JJbWFnZSgpICYmICFzdHlsZS0+Y3Vyc29ySW1hZ2UoKS0+
aW1hZ2UoKS0+aXNOdWxsKCkpCi0gICAgICAgIGlmICghc3R5bGUtPmN1cnNvckltYWdlKCktPmlz
RXJyb3JJbWFnZSgpKQotICAgICAgICAgICAgcmV0dXJuIHN0eWxlLT5jdXJzb3JJbWFnZSgpLT5p
bWFnZSgpOwotICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3R5bGUgPSAwOyAvLyBGYWxsYmFj
ayB0byBDVVJTT1JfQVVUTworICAgIGlmIChzdHlsZSAmJiBzdHlsZS0+Y3Vyc29ycygpKSB7Cisg
ICAgICAgIEN1cnNvckluZm8qIGN1cnNvciA9IHN0eWxlLT5jdXJzb3JzKCk7CisgICAgICAgIGRv
IHsKKyAgICAgICAgICAgIENhY2hlZEltYWdlKiBjaW1hZ2UgPSBjdXJzb3ItPmN1cnNvckltYWdl
KG5vZGUtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpKTsKKyAgICAgICAgICAgIGlmICghY2ltYWdl
KQorICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChjaW1hZ2UtPmlt
YWdlKCktPmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZWxz
ZSBpZiAoIWNpbWFnZS0+aXNFcnJvckltYWdlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEN1
cnNvcihjaW1hZ2UtPmltYWdlKCksIGN1cnNvci0+Y3Vyc29ySG90c3BvdCgpKTsKKyAgICAgICAg
fSB3aGlsZSAoKGN1cnNvciA9IGN1cnNvci0+bmV4dCgpKSk7CisgICAgfQogCiAgICAgc3dpdGNo
IChzdHlsZSA/IHN0eWxlLT5jdXJzb3IoKSA6IENVUlNPUl9BVVRPKSB7CiAgICAgICAgIGNhc2Ug
Q1VSU09SX0FVVE86IHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaAkocmV2aXNpb24gMTQ1NjApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL0N1cnNvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAj
aWZuZGVmIENVUlNPUl9ICiAjZGVmaW5lIENVUlNPUl9ICiAKKyNpbmNsdWRlICJJbnRQb2ludC5o
IgorCiAjaWZkZWYgV0lOMzIKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYKQEAgLTUzLDcg
KzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEN1cnNvciB7CiAgICAgcHVi
bGljOgogICAgICAgICBDdXJzb3IoKSA6IG1faW1wbCgwKSB7IH0KLSAgICAgICAgQ3Vyc29yKElt
YWdlKik7CisgICAgICAgIEN1cnNvcihJbWFnZSosIEludFBvaW50IGhvdHNwb3QgPSBJbnRQb2lu
dCgpKTsKICAgICAgICAgQ3Vyc29yKGNvbnN0IEN1cnNvciYpOwogICAgICAgICB+Q3Vyc29yKCk7
CiAgICAgICAgIEN1cnNvciYgb3BlcmF0b3I9KGNvbnN0IEN1cnNvciYpOwpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vbWFjL0N1cnNvck1hYy5tbQkocmV2aXNpb24gMTQ1NjApCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L21hYy9DdXJzb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDE0ICs0MSwxNSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyBTaW1wbGUgTlNDdXJzb3IgY2FsbHMgc2hvdWxkbid0IG5lZWQg
cHJvdGVjdGlvbiwKIC8vIGJ1dCBjcmVhdGluZyBhIGN1cnNvciB3aXRoIGEgYmFkIGltYWdlIG1p
Z2h0IHRocm93LgogCi1zdGF0aWMgTlNDdXJzb3IqIGNyZWF0ZUN1c3RvbUN1cnNvcihJbWFnZSog
aW1hZ2UpCitzdGF0aWMgTlNDdXJzb3IqIGNyZWF0ZUN1c3RvbUN1cnNvcihJbWFnZSogaW1hZ2Us
IEludFBvaW50IGhvdHNwb3QpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBjdXJzb3Igd29uJ3QgYW5p
bWF0ZS4gIE5vdCBzdXJlIGlmIHRoYXQncyBhIGJpZyBkZWFsLgogICAgIE5TSW1hZ2UqIGltZyA9
IGltYWdlLT5nZXROU0ltYWdlKCk7CiAgICAgaWYgKCFpbWcpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tOU0N1cnNvciBh
bGxvY10gaW5pdFdpdGhJbWFnZTppbWcgaG90U3BvdDpOU1plcm9Qb2ludF07CisgICAgTlNQb2lu
dCBob3RTcG90UG9pbnQgPSB7aG90c3BvdC54KCksIGhvdHNwb3QueSgpfTsKKyAgICByZXR1cm4g
W1tOU0N1cnNvciBhbGxvY10gaW5pdFdpdGhJbWFnZTppbWcgaG90U3BvdDpob3RTcG90UG9pbnRd
OwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC03
NCw4ICs3NSw4IEBAIHN0YXRpYyBOU0N1cnNvciogbGVha05hbWVkQ3Vyc29yKGNvbnN0IGMKICAg
ICByZXR1cm4gMDsKIH0KIAotQ3Vyc29yOjpDdXJzb3IoSW1hZ2UqIGltYWdlKQotICAgIDogbV9p
bXBsKEtXUVJldGFpbk5TUmVsZWFzZShjcmVhdGVDdXN0b21DdXJzb3IoaW1hZ2UpKSkKK0N1cnNv
cjo6Q3Vyc29yKEltYWdlKiBpbWFnZSwgSW50UG9pbnQgaG90c3BvdCkKKyAgICA6IG1faW1wbChL
V1FSZXRhaW5OU1JlbGVhc2UoY3JlYXRlQ3VzdG9tQ3Vyc29yKGltYWdlLCBob3RzcG90KSkpCiB7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5oCShyZXZpc2lvbiAxNDU2MCkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2
ICs0Miw3IEBACiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU2hhcmVkLmgiCiAjaW5j
bHVkZSAiRGVwcmVjYXRlZFZhbHVlTGlzdC5oIgorI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFs
dWUuaCIKIAogI2lmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIKQEAg
LTc4Nyw2ICs3ODgsMzMgQEAgZW51bSBFUGFnZUJyZWFrIHsKICAgICBQQkFVVE8sIFBCQUxXQVlT
LCBQQkFWT0lECiB9OwogCitjbGFzcyBDdXJzb3JJbmZvIHsKK3B1YmxpYzoKKyAgICBDdXJzb3JJ
bmZvKENTU0N1cnNvckltYWdlVmFsdWUqKTsKKyAgICB+Q3Vyc29ySW5mbygpOworICAgIHZvaWQg
Y2xlYXJDdXJzb3IoKTsKKworICAgIEN1cnNvckluZm8oY29uc3QgQ3Vyc29ySW5mbyYgbyk7CisK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3Vyc29ySW5mbyYgbykgY29uc3QgeworICAgICAg
ICByZXR1cm4gbV9jdXJzb3IgPT0gby5tX2N1cnNvcjsKKyAgICB9CisgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEN1cnNvckluZm8mIG8pIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gbyk7CisgICAgfQorICAgIENhY2hlZEltYWdlKiBjdXJzb3JJbWFnZShEb2NMb2FkZXIqIGRv
Y0xvYWRlcikgeworICAgICAgICAgcmV0dXJuICBtX2N1cnNvci0+aW1hZ2UoZG9jTG9hZGVyKTsK
KyAgICB9CisgICAgSW50UG9pbnQgY3Vyc29ySG90c3BvdCgpIHsgcmV0dXJuIG1fY3Vyc29yLT5o
b3RzcG90KCk7IH0KKyAgICBjbGFzcyBDdXJzb3JJbmZvKiBuZXh0KCkgeyByZXR1cm4gbV9uZXh0
OyB9CisgICAgdm9pZCBzZXROZXh0KEN1cnNvckluZm8qIG5leHQpIHsgbV9uZXh0ID0gbmV4dDsg
fQorICAgIENTU0N1cnNvckltYWdlVmFsdWUqIGN1cnNvcigpIHsgcmV0dXJuIG1fY3Vyc29yOyB9
CisKK3ByaXZhdGU6CisgICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSogbV9jdXJzb3I7CisgICAgQ3Vy
c29ySW5mbyogbV9uZXh0OworfTsKKwogY2xhc3MgU3R5bGVJbmhlcml0ZWREYXRhIDogcHVibGlj
IFNoYXJlZDxTdHlsZUluaGVyaXRlZERhdGE+CiB7CiBwdWJsaWM6CkBAIC03OTgsNiArODI2LDgg
QEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3IgIT0gKCBjb25zdCBTdHlsZUluaGVyaXRlZERh
dGEgJm8gKSBjb25zdCB7CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwogICAgIH0KKyAg
ICB2b2lkIHNldEN1cnNvcnMoQ3Vyc29ySW5mbyopOworICAgIHZvaWQgYWRkQ3Vyc29yKENTU0N1
cnNvckltYWdlVmFsdWUqKTsKIAogICAgIExlbmd0aCBpbmRlbnQ7CiAgICAgLy8gY291bGQgYmUg
cGFja2VkIGluIGEgc2hvcnQgYnV0IGRvZXNuJ3QKQEAgLTgwNSw3ICs4MzUsNyBAQCBwdWJsaWM6
CiAgICAgTGVuZ3RoIGxpbmVfaGVpZ2h0OwogCiAgICAgQ2FjaGVkSW1hZ2UgKnN0eWxlX2ltYWdl
OwotICAgIENhY2hlZEltYWdlICpjdXJzb3JfaW1hZ2U7CisgICAgQ3Vyc29ySW5mbyogY3Vyc29y
SW5mbzsKIAogICAgIEZvbnQgZm9udDsKICAgICBDb2xvciBjb2xvcjsKQEAgLTEyODksNyArMTMx
OSw3IEBAIHB1YmxpYzoKIAogICAgIEVDdXJzb3IgY3Vyc29yKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUN1cnNvcj4oaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGUpOyB9CiAgICAg
Ci0gICAgQ2FjaGVkSW1hZ2UgKmN1cnNvckltYWdlKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVk
LT5jdXJzb3JfaW1hZ2U7IH0KKyAgICBDdXJzb3JJbmZvKiBjdXJzb3JzKCkgY29uc3QgeyByZXR1
cm4gaW5oZXJpdGVkLT5jdXJzb3JJbmZvOyB9CiAKICAgICBzaG9ydCB3aWRvd3MoKSBjb25zdCB7
IHJldHVybiBpbmhlcml0ZWQtPndpZG93czsgfQogICAgIHNob3J0IG9ycGhhbnMoKSBjb25zdCB7
IHJldHVybiBpbmhlcml0ZWQtPm9ycGhhbnM7IH0KQEAgLTE0OTIsNyArMTUyMiw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFBhZGRpbmdSaWdodChMZW5ndGggdikgIHsgIFNFVF9WQVIoc3Vycm91
bmQscGFkZGluZy5yaWdodCx2KSB9CiAKICAgICB2b2lkIHNldEN1cnNvciggRUN1cnNvciBjICkg
eyBpbmhlcml0ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSA9IGM7IH0KLSAgICB2b2lkIHNldEN1cnNv
ckltYWdlKCBDYWNoZWRJbWFnZSAqdiApIHsgU0VUX1ZBUihpbmhlcml0ZWQsY3Vyc29yX2ltYWdl
LHYpIH0KKyAgICB2b2lkIGFkZEN1cnNvcihDU1NDdXJzb3JJbWFnZVZhbHVlKiB2KTsKKyAgICB2
b2lkIHNldEN1cnNvcnMoQ3Vyc29ySW5mbyogbyk7CiAKICAgICBib29sIGZvcmNlQmFja2dyb3Vu
ZHNUb1doaXRlKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3Jv
dW5kc190b193aGl0ZTsgfQogICAgIHZvaWQgc2V0Rm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoYm9v
bCBiPXRydWUpIHsgaW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSA9
IGI7IH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmNwcAkocmV2aXNpb24gMTQ1NjAp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfc3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NDYsMTAgKzQ0Niw0MiBAQCBib29sIFN0eWxlQ1NTM0luaGVyaXRlZERhdGE6OnNoYWRvd0Rh
dGFFCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0N1cnNvckluZm86OkN1cnNvckluZm8oQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZSogY3Vyc29yKQorOiBtX2N1cnNvcihjdXJzb3IpLAorICBtX25leHQoMCkK
K3sKKyAgICBpZiAobV9jdXJzb3IpCisgICAgICAgICBtX2N1cnNvci0+cmVmKCk7Cit9CisKK0N1
cnNvckluZm86On5DdXJzb3JJbmZvKCkKK3sKKyAgICBjbGVhckN1cnNvcigpOworfQorCitDdXJz
b3JJbmZvOjpDdXJzb3JJbmZvKGNvbnN0IEN1cnNvckluZm8mIG8pCit7CisgICAgbV9jdXJzb3Ig
PSBvLm1fY3Vyc29yOworICAgIGlmIChtX2N1cnNvcikKKyAgICAgICAgIG1fY3Vyc29yLT5yZWYo
KTsKKyAgICBpZiAoby5tX25leHQpCisgICAgICAgIG1fbmV4dCA9IG5ldyBDdXJzb3JJbmZvKCpv
Lm1fbmV4dCk7CisgICAgZWxzZQorICAgICAgICBtX25leHQgPSAwOworfQorCit2b2lkIEN1cnNv
ckluZm86OmNsZWFyQ3Vyc29yKCkKK3sKKyAgICBkZWxldGUgbV9uZXh0OworICAgIGlmIChtX2N1
cnNvcikKKyAgICAgICAgIG1fY3Vyc29yLT5kZXJlZigpOworICAgIG1fbmV4dCA9IDA7Cit9CisK
IFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKCkKICAgICA6IGluZGVudCgg
UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SW5kZW50KCkgKSwgbGluZV9oZWlnaHQoIFJlbmRlclN0
eWxlOjppbml0aWFsTGluZUhlaWdodCgpICksIAogICAgICAgc3R5bGVfaW1hZ2UoIFJlbmRlclN0
eWxlOjppbml0aWFsTGlzdFN0eWxlSW1hZ2UoKSApLAotICAgICAgY3Vyc29yX2ltYWdlKCAwICks
IGZvbnQoKSwgY29sb3IoIFJlbmRlclN0eWxlOjppbml0aWFsQ29sb3IoKSApLCAKKyAgICAgIGN1
cnNvckluZm8oIDAgKSwgZm9udCgpLCBjb2xvciggUmVuZGVyU3R5bGU6OmluaXRpYWxDb2xvcigp
ICksIAogICAgICAgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyggUmVuZGVyU3R5bGU6OmluaXRp
YWxIb3Jpem9udGFsQm9yZGVyU3BhY2luZygpICksIAogICAgICAgdmVydGljYWxfYm9yZGVyX3Nw
YWNpbmcoIFJlbmRlclN0eWxlOjppbml0aWFsVmVydGljYWxCb3JkZXJTcGFjaW5nKCkgKSwKICAg
ICAgIHdpZG93cyggUmVuZGVyU3R5bGU6OmluaXRpYWxXaWRvd3MoKSApLCBvcnBoYW5zKCBSZW5k
ZXJTdHlsZTo6aW5pdGlhbE9ycGhhbnMoKSApLApAQCAtNDU5LDE3ICs0OTEsMTkgQEAgU3R5bGVJ
bmhlcml0ZWREYXRhOjpTdHlsZUluaGVyaXRlZERhdGEoKQogCiBTdHlsZUluaGVyaXRlZERhdGE6
On5TdHlsZUluaGVyaXRlZERhdGEoKQogeworICAgICBkZWxldGUgY3Vyc29ySW5mbzsKIH0KIAog
U3R5bGVJbmhlcml0ZWREYXRhOjpTdHlsZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVJbmhlcml0
ZWREYXRhJiBvICkKICAgICA6IFNoYXJlZDxTdHlsZUluaGVyaXRlZERhdGE+KCksCiAgICAgICBp
bmRlbnQoIG8uaW5kZW50ICksIGxpbmVfaGVpZ2h0KCBvLmxpbmVfaGVpZ2h0ICksIHN0eWxlX2lt
YWdlKCBvLnN0eWxlX2ltYWdlICksCi0gICAgICBjdXJzb3JfaW1hZ2UoIG8uY3Vyc29yX2ltYWdl
ICksIGZvbnQoIG8uZm9udCApLAotICAgICAgY29sb3IoIG8uY29sb3IgKSwKKyAgICAgIGZvbnQo
IG8uZm9udCApLCBjb2xvciggby5jb2xvciApLAogICAgICAgaG9yaXpvbnRhbF9ib3JkZXJfc3Bh
Y2luZyggby5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nICksCiAgICAgICB2ZXJ0aWNhbF9ib3Jk
ZXJfc3BhY2luZyggby52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyApLAogICAgICAgd2lkb3dzKG8u
d2lkb3dzKSwgb3JwaGFucyhvLm9ycGhhbnMpLCBwYWdlX2JyZWFrX2luc2lkZShvLnBhZ2VfYnJl
YWtfaW5zaWRlKQogeworICAgIGN1cnNvckluZm8gPSAwOworICAgIHNldEN1cnNvcnMoby5jdXJz
b3JJbmZvKTsKIH0KIAogYm9vbCBTdHlsZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3Qg
U3R5bGVJbmhlcml0ZWREYXRhJiBvKSBjb25zdApAQCAtNDc4LDcgKzUxMiw3IEBAIGJvb2wgU3R5
bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnMKICAgICAgICAgaW5kZW50ID09IG8uaW5k
ZW50ICYmCiAgICAgICAgIGxpbmVfaGVpZ2h0ID09IG8ubGluZV9oZWlnaHQgJiYKICAgICAgICAg
c3R5bGVfaW1hZ2UgPT0gby5zdHlsZV9pbWFnZSAmJgotICAgICAgICBjdXJzb3JfaW1hZ2UgPT0g
by5jdXJzb3JfaW1hZ2UgJiYKKyAgICAgICAgY3Vyc29ySW5mbyA9PSBvLmN1cnNvckluZm8gJiYK
ICAgICAgICAgZm9udCA9PSBvLmZvbnQgJiYKICAgICAgICAgY29sb3IgPT0gby5jb2xvciAmJgog
ICAgICAgICBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nID09IG8uaG9yaXpvbnRhbF9ib3JkZXJf
c3BhY2luZyAmJgpAQCAtNzUyLDcgKzc4Niw3IEBAIFJlbmRlclN0eWxlOjpEaWZmIFJlbmRlclN0
eWxlOjpkaWZmKCBjb24KICAgICAgICAgIShpbmhlcml0ZWQtPmluZGVudCA9PSBvdGhlci0+aW5o
ZXJpdGVkLT5pbmRlbnQpIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT5saW5lX2hlaWdodCA9PSBv
dGhlci0+aW5oZXJpdGVkLT5saW5lX2hlaWdodCkgfHwKICAgICAgICAgIShpbmhlcml0ZWQtPnN0
eWxlX2ltYWdlID09IG90aGVyLT5pbmhlcml0ZWQtPnN0eWxlX2ltYWdlKSB8fAotICAgICAgICAh
KGluaGVyaXRlZC0+Y3Vyc29yX2ltYWdlID09IG90aGVyLT5pbmhlcml0ZWQtPmN1cnNvcl9pbWFn
ZSkgfHwKKyAgICAgICAgIShpbmhlcml0ZWQtPmN1cnNvckluZm8gPT0gb3RoZXItPmluaGVyaXRl
ZC0+Y3Vyc29ySW5mbykgfHwKICAgICAgICAgIShpbmhlcml0ZWQtPmZvbnQgPT0gb3RoZXItPmlu
aGVyaXRlZC0+Zm9udCkgfHwKICAgICAgICAgIShpbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVy
X3NwYWNpbmcgPT0gb3RoZXItPmluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZykg
fHwKICAgICAgICAgIShpbmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nID09IG90aGVy
LT5pbmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKSB8fApAQCAtOTE4LDYgKzk1Miw0
MyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDbGlwKCBMZW5ndGggdG9wLCBMCiAgICAgZGF0YS0+
Y2xpcC5sZWZ0ID0gbGVmdDsKIH0KIAordm9pZCBSZW5kZXJTdHlsZTo6c2V0Q3Vyc29ycyhDdXJz
b3JJbmZvKiBvKQoreworICAgIGluaGVyaXRlZC5hY2Nlc3MoKS0+c2V0Q3Vyc29ycyhvKTsKK30K
Kwordm9pZCBTdHlsZUluaGVyaXRlZERhdGE6OnNldEN1cnNvcnMoQ3Vyc29ySW5mbyogbykKK3sK
KyAgICBpZiAobykgeworICAgICAgICBkZWxldGUgY3Vyc29ySW5mbzsKKyAgICAgICAgY3Vyc29y
SW5mbyA9IDA7CisgICAgICAgIEN1cnNvckluZm8qIGluZm8gPSBvOworICAgICAgICB3aGlsZSAo
aW5mbykgeworICAgICAgICAgICAgYWRkQ3Vyc29yKGluZm8tPmN1cnNvcigpKTsKKyAgICAgICAg
ICAgIGluZm8gPSBpbmZvLT5uZXh0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgUmVu
ZGVyU3R5bGU6OmFkZEN1cnNvcihDU1NDdXJzb3JJbWFnZVZhbHVlKiB2KQoreworICAgIGluaGVy
aXRlZC5hY2Nlc3MoKS0+YWRkQ3Vyc29yKHYpOworfQorCit2b2lkIFN0eWxlSW5oZXJpdGVkRGF0
YTo6YWRkQ3Vyc29yKENTU0N1cnNvckltYWdlVmFsdWUqIHYpCit7CisgICAgQ3Vyc29ySW5mbyog
bGFzdEN1cnNvckluZm8gPSBjdXJzb3JJbmZvOworICAgIHdoaWxlIChsYXN0Q3Vyc29ySW5mbyAm
JiBsYXN0Q3Vyc29ySW5mby0+bmV4dCgpKQorICAgICAgICBsYXN0Q3Vyc29ySW5mbyA9IGxhc3RD
dXJzb3JJbmZvLT5uZXh0KCk7CisKKyAgICBDdXJzb3JJbmZvKiBuZXdDdXJzb3JJbmZvID0gbmV3
IEN1cnNvckluZm8odik7CisKKyAgICBpZiAobGFzdEN1cnNvckluZm8pCisgICAgICAgIGxhc3RD
dXJzb3JJbmZvLT5zZXROZXh0KG5ld0N1cnNvckluZm8pOworICAgIGVsc2UKKyAgICAgICAgY3Vy
c29ySW5mbyA9IG5ld0N1cnNvckluZm87Cit9CisKIGJvb2wgUmVuZGVyU3R5bGU6OmNvbnRlbnRE
YXRhRXF1aXZhbGVudChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QKIHsKICAg
ICBDb250ZW50RGF0YSogYzEgPSBjb250ZW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8669</attachid>
            <date>2006-06-02 13:56:05 -0700</date>
            <delta_ts>2006-06-03 17:36:46 -0700</delta_ts>
            <desc>Improved patch</desc>
            <filename>6002-4.diff</filename>
            <type>text/plain</type>
            <size>27416</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNDY5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMDYtMDYtMDIgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAxCisgICAgICAg
IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9tIGN1cnNvcnMKKyAgICAgICAg
Rml4IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTYw
MDIKKyAgICAgICAgV2ViS2l0IGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSBTVkcgPGN1cnNvcj4g
ZWxlbWVudAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzdmcgY3Vyc29yIGltYWdlcy4gQWxz
byBtYWtlIHN1cmUgaG90c3BvdAorICAgICAgICBzZXR0aW5ncyBhcmUgaGFuZGxlZCBjb3JyZWN0
bHkuIEZpbmFsbHkgaW1wbGVtZW50IGZhbGxiYWNrLgorCisgICAgICAgICogY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1ND
dXJzb3JJbWFnZVZhbHVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJ
bWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1
cnNvckltYWdlVmFsdWU6On5DU1NDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvcklt
YWdlVmFsdWU6OmhvdHNwb3QpOgorICAgICAgICAqIGNzcy9jc3NwYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKiBjc3MvY3Nzc3R5
bGVzZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBs
eVByb3BlcnR5KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6Cisg
ICAgICAgIChTVkdDdXJzb3JFbGVtZW50OjpTVkdDdXJzb3JFbGVtZW50KToKKyAgICAgICAgKFNW
R0N1cnNvckVsZW1lbnQ6On5TVkdDdXJzb3JFbGVtZW50KToKKyAgICAgICAgKFNWR0N1cnNvckVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ3Vy
c29yRWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNlbGVjdEN1cnNvcik6CisgICAgICAgICogcGxhdGZvcm0vQ3Vyc29yLmg6CisgICAg
ICAgICogcGxhdGZvcm0vRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DdXJzb3JNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDdXN0b21DdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3Vyc29yOjpDdXJzb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9yZW5kZXJfc3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJbmhlcml0ZWREYXRhOjpTdHlsZUluaGVyaXRl
ZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpkaWZmKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjphZGRDdXJzb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9yZW5kZXJf
c3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjdXJzb3JzKToKKwogMjAw
Ni0wNi0wMiAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IGRhcmluLgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxNDY5MSkKKysrIFdlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Myw0NSArNTUzLDcy
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICBjYXNlIENT
U19QUk9QX0NPVU5URVJfUkVTRVQ6CiAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOgotICAgICAgICBpZiAoc3R5
bGUtPmN1cnNvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHN0eWxlLT5jdXJzb3JJbWFnZSgpLT51cmwoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19V
UkkpOworICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOiB7CisgICAgICAgIENTU1ZhbHVlTGlzdCog
bGlzdCA9IDA7CisgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IDA7CisgICAgICAgIFZlY3RvcjxS
ZWZQdHI8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4gPiBjdXJzb3JzID0gc3R5bGUtPmN1cnNvcnMoKTsK
KyAgICAgICAgaWYgKGN1cnNvcnMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgbGlzdCA9IG5l
dyBDU1NWYWx1ZUxpc3Q7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwO2kgPCBjdXJz
b3JzLnNpemUoKTsrK2kpIHsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1By
aW1pdGl2ZVZhbHVlKGN1cnNvcnNbaV0uZ2V0KCktPmltYWdlKG5vZGUtPmRvY3VtZW50KCktPmRv
Y0xvYWRlcigpKS0+dXJsKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KICAgICAgICAgc3dpdGNoIChzdHlsZS0+Y3Vyc29yKCkpIHsKICAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX0FVVE86Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOworICAgICAgICAgICAgICAgIHZhbHVlID0g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9DUk9TUzoKLSAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ1JPU1NIQUlSKTsKKyAgICAgICAgICAg
ICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NST1NTSEFJUik7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9ERUZBVUxUOgot
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ERUZB
VUxUKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX0RFRkFVTFQpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBD
VVJTT1JfUE9JTlRFUjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfUE9JTlRFUik7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9QT0lOVEVSKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX01PVkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX01PVkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTU9WRSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9FX1JFU0laRToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRV9SRVNJWkUpOworICAgICAgICAg
ICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRV9SRVNJWkUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfTkVfUkVTSVpF
OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9O
RV9SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfTkVfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgQ1VSU09SX05XX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfTldfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05XX1JFU0laRSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9OX1JFU0laRToKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTl9SRVNJWkUpOworICAg
ICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTl9SRVNJ
WkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfU0Vf
UkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9TRV9SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfU0VfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgQ1VSU09SX1NXX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2
YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NXX1JFU0laRSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9TX1JFU0laRToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU19SRVNJWkUp
OworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
U19SRVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJT
T1JfV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX1RFWFQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RFWFQpOworICAgICAgICAgICAgICAgIHZhbHVlID0g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEVYVCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9XQUlUOgotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9XQUlUKTsKKyAgICAgICAgICAgICAgICB2
YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1dBSVQpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfSEVMUDoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSEVMUCk7CisgICAgICAgICAg
ICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9IRUxQKTsKICAgICAg
ICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIGlmIChsaXN0KSB7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQodmFsdWUpOworICAg
ICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KICAgICBjYXNlIENTU19QUk9QX0RJUkVDVElP
TjoKICAgICAgICAgc3dpdGNoIChzdHlsZS0+ZGlyZWN0aW9uKCkpIHsKICAgICAgICAgICAgIGNh
c2UgTFRSOgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzNSBAQAorLyoqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRE9NIGltcGxl
bWVudGF0aW9uIGZvciBLREUuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5
IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNB
LgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NTU0N1cnNvckltYWdlVmFsdWU6OkNTU0N1
cnNvckltYWdlVmFsdWUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IEludFBvaW50JiBwLCBTdHls
ZUJhc2UqIHN0eWxlKQorICAgIDogQ1NTSW1hZ2VWYWx1ZSh1cmwsIHN0eWxlKQorICAgICwgbV9o
b3RzcG90KHApCit7Cit9CisKK0NTU0N1cnNvckltYWdlVmFsdWU6On5DU1NDdXJzb3JJbWFnZVZh
bHVlKCkKK3sKK30KK30KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDMgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRE9NIGltcGxl
bWVudGF0aW9uIGZvciBLREUuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5
IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNB
LgorICovCisKKyNpZm5kZWYgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZV9ICisjZGVmaW5lIENTU0N1cnNv
ckltYWdlVmFsdWVfSAorCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJDU1NJbWFn
ZVZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZSA6IHB1YmxpYyBDU1NJbWFnZVZhbHVlCit7CitwdWJsaWM6CisgICAgQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgSW50UG9pbnQmLCBTdHlsZUJhc2UqKTsK
KyAgICB2aXJ0dWFsIH5DU1NDdXJzb3JJbWFnZVZhbHVlKCk7CisKKyAgICBJbnRQb2ludCBob3Rz
cG90KCkgY29uc3QgeyByZXR1cm4gbV9ob3RzcG90OyB9CisKK3Byb3RlY3RlZDoKKyAgICBJbnRQ
b2ludCBtX2hvdHNwb3Q7Cit9OworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmCkluZGV4OiBXZWJD
b3JlL2Nzcy9jc3NwYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc3BhcnNl
ci5jcHAJKHJldmlzaW9uIDE0NjkxKQorKysgV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgImNzc3BhcnNlci5oIgogCiAj
aW5jbHVkZSAiQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1cnNvckltYWdl
VmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW1wb3J0
UnVsZS5oIgogI2luY2x1ZGUgIkNTU0luaGVyaXRlZFZhbHVlLmgiCkBAIC00Myw2ICs0NCwxMiBA
QAogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lvbi5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaWYgU1ZHX1NVUFBPUlQKKyNpbmNsdWRlICJYTGlu
a05hbWVzLmgiCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdDdXJzb3JFbGVt
ZW50LmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKKyNlbmRpZgogI2luY2x1ZGUg
IkZvbnRGYW1pbHlWYWx1ZS5oIgogI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgogI2luY2x1ZGUgIktV
UkwuaCIKQEAgLTY2MCwyMSArNjY3LDU0IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGlu
dCBwcm9wSWQsIGIKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU19QUk9QX0NVUlNPUjoK
LSAgICAgICAgLy8gIFsgYXV0byB8IGNyb3NzaGFpciB8IGRlZmF1bHQgfCBwb2ludGVyIHwgcHJv
Z3Jlc3MgfCBtb3ZlIHwgZS1yZXNpemUgfCBuZS1yZXNpemUgfAorICAgICAgICAvLyAgWzx1cmk+
LF0qIFsgYXV0byB8IGNyb3NzaGFpciB8IGRlZmF1bHQgfCBwb2ludGVyIHwgcHJvZ3Jlc3MgfCBt
b3ZlIHwgZS1yZXNpemUgfCBuZS1yZXNpemUgfAogICAgICAgICAvLyBudy1yZXNpemUgfCBuLXJl
c2l6ZSB8IHNlLXJlc2l6ZSB8IHN3LXJlc2l6ZSB8IHMtcmVzaXplIHwgdy1yZXNpemUgfCB0ZXh0
IHwKICAgICAgICAgLy8gd2FpdCB8IGhlbHAgXSBdIHwgaW5oZXJpdAotICAgICAgICBpZiAoIXN0
cmljdCAmJiBpZCA9PSBDU1NfVkFMX0hBTkQpIHsgLy8gTVNJRSA1IGNvbXBhdGliaWxpdHkgOi8K
LSAgICAgICAgICAgIGlkID0gQ1NTX1ZBTF9QT0lOVEVSOwotICAgICAgICAgICAgdmFsaWRfcHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChpZCA+PSBDU1NfVkFMX0FVVE8gJiYg
aWQgPD0gQ1NTX1ZBTF9IRUxQKQotICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19V
UkkpIHsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gbmV3IENTU1ZhbHVlTGlzdDsKKyAg
ICAgICAgd2hpbGUgKHZhbHVlICYmIHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfVVJJKSB7CiAgICAgICAgICAgICBTdHJpbmcgdXJpID0gcGFyc2VVUkwoZG9tU3RyaW5nKHZh
bHVlLT5zdHJpbmcpKTsKKyNpZiBTVkdfU1VQUE9SVAorICAgICAgICAgICAgaWYgKHVyaS5maW5k
KCIjIikgPT0gMCkgeworICAgICAgICAgICAgICAgIEVsZW1lbnQqIGUgPSBkb2N1bWVudCgpLT5n
ZXRFbGVtZW50QnlJZCh1cmkuZGVwcmVjYXRlZFN0cmluZygpLm1pZCgxKSk7CisgICAgICAgICAg
ICAgICAgaWYgKGUgJiYgZS0+aGFzVGFnTmFtZShXZWJDb3JlOjpTVkdOYW1lczo6Y3Vyc29yVGFn
KSkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdXJsID0gZS0+Z2V0QXR0cmlidXRlKFhM
aW5rTmFtZXM6OmhyZWZBdHRyKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHggPSBpbnQoc3Rh
dGljX2Nhc3Q8U1ZHQ3Vyc29yRWxlbWVudCo+KGUpLT54KCktPmJhc2VWYWwoKS0+dmFsdWUoKSk7
CisgICAgICAgICAgICAgICAgICAgIGludCB5ID0gaW50KHN0YXRpY19jYXN0PFNWR0N1cnNvckVs
ZW1lbnQqPihlKS0+eSgpLT5iYXNlVmFsKCktPnZhbHVlKCkpOworICAgICAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQobmV3IENTU0N1cnNvckltYWdlVmFsdWUoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTdHJpbmcoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXBy
ZWNhdGVkU3RyaW5nKCksIHVybC5kZXByZWNhdGVkU3RyaW5nKCkpLnVybCgpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KHgsIHkpLCBzdHlsZUVsZW1lbnQpKTsK
KyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyNlbmRpZgogICAgICAgICAgICAgaWYgKCF1
cmkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBuZXcgQ1NTSW1h
Z2VWYWx1ZShTdHJpbmcoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXByZWNhdGVkU3Ry
aW5nKCksIHVyaS5kZXByZWNhdGVkU3RyaW5nKCkpLnVybCgpKSwgc3R5bGVFbGVtZW50KTsKLSAg
ICAgICAgICAgICAgICB2YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQobmV3IENTU0N1cnNvckltYWdlVmFsdWUoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFN0cmluZyhLVVJMKHN0eWxlRWxlbWVudC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmco
KSwgdXJpLmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJsKCkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJbnRQb2ludCgpLCBzdHlsZUVsZW1lbnQpKTsKKyAgICAgICAgICAgICAgICAvLyBD
U1MzOiBza2lwIGhvdHNwb3QgZm9yIG5vdworICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVM
aXN0LT5uZXh0KCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKHZhbHVlICYmIHZhbHVlLT51bml0
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAgICAgICAgICAgICB2
YWx1ZSA9IHZhbHVlTGlzdC0+bmV4dCgpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFs
dWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsgLy8gY29tbWEKICAgICAgICAgfQorICAgICAgICBpZiAo
bGlzdC0+bGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gbGlzdDsKKyAgICAg
ICAgICAgIGlmICghdmFsdWUpIHsgLy8gbm8gdmFsdWUgYWZ0ZXIgdXJsIGxpc3QgKE1TSUUgNSBj
b21wYXRpYmlsaXR5KQorICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0ICYmIHZhbHVlLT5p
ZCA9PSBDU1NfVkFMX0hBTkQpIC8vIE1TSUUgNSBjb21wYXRpYmlsaXR5IDovCisgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1BPSU5URVIp
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT5pZCA+PSBDU1NfVkFMX0FVVE8gJiYgdmFs
dWUtPmlkIDw9IENTU19WQUxfSEVMUCkKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3
IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLT5pZCkpOworICAgICAgICAgICAgdmFsdWVMaXN0LT5u
ZXh0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAg
ICAgICAgICBkZWxldGUgbGlzdDsKKyAgICAgICAgaWYgKCFzdHJpY3QgJiYgdmFsdWUtPmlkID09
IENTU19WQUxfSEFORCkgeyAvLyBNU0lFIDUgY29tcGF0aWJpbGl0eSA6LworICAgICAgICAgICAg
aWQgPSBDU1NfVkFMX1BPSU5URVI7CisgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVl
OworICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT5pZCA+PSBDU1NfVkFMX0FVVE8gJiYgdmFsdWUt
PmlkIDw9IENTU19WQUxfSEVMUCkKKyAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7
CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5EX0FUVEFDSE1F
TlQ6CkBAIC0xMTEyLDEwICsxMTUyLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYgogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSAh
aWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyfEZMZW5ndGh8RlBlcmNlbnQsIHN0cmljdCk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX1BST1BfUkVTSVpFOiAvLyBub25lIHwgYm90
aCB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENT
U19WQUxfTk9ORSB8fCBpZCA9PSBDU1NfVkFMX0JPVEggfHwgaWQgPT0gQ1NTX1ZBTF9IT1JJWk9O
VEFMIHx8IGlkID09IENTU19WQUxfVkVSVElDQUwpCi0gICAgICAgICAgICB2YWxpZF9wcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICBicmVhazsKKyAgICAKICAgICAvLyBFbmQgb2YgQ1NTMyBwcm9w
ZXJ0aWVzCiAKICAgICAvLyBBcHBsZSBzcGVjaWZpYyBwcm9wZXJ0aWVzLiAgVGhlc2Ugd2lsbCBu
ZXZlciBiZSBzdGFuZGFyZGl6ZWQgYW5kIGFyZSBwdXJlbHkgdG8KQEAgLTE5ODEsNyArMjAxOCw3
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnQoYm9vbCBpbXBvcnRhbnQKICAgICAgICAgICAg
ICAgZWxzZSBpZiAoaWQgPT0gQ1NTX1ZBTF9JTkhFUklUKSB7CiAgICAgICAgICAgICAgIC8vIHNl
dCBhbGwgbm9uIHNldCBvbmVzIHRvIGluaGVyaXQKICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBu
b3QgdGhhdCBzaW1wbGUgYXMgdGhlIGluaGVyaXQgY291bGQgYWxzbyBhcHBseSB0byB0aGUgZm9s
bG93aW5nIGZvbnQtc2l6ZS4KLSAgICAgICAgICAgICAgLy8gdmVyeSBhaHJkIHRvIHRlbGwgd2l0
aG91dCBsb29raW5nIGFoZWFkLgorICAgICAgICAgICAgICAvLyB2ZXJ5IGhhcmQgdG8gdGVsbCB3
aXRob3V0IGxvb2tpbmcgYWhlYWQuCiAgICAgICAgICAgICAgIGluaGVyaXQgPSB0cnVlOwogICAg
ICAgICAgICAgICAgIH0gKi8KICAgICAgICAgICAgIGVsc2UgaWYgKGlkID09IENTU19WQUxfSVRB
TElDIHx8IGlkID09IENTU19WQUxfT0JMSVFVRSkgewpJbmRleDogV2ViQ29yZS9jc3MvY3Nzc3R5
bGVzZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rv
ci5jcHAJKHJldmlzaW9uIDE0NjkxKQorKysgV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjc3NzdHlsZXNl
bGVjdG9yLmgiCiAKICNpbmNsdWRlICJDU1NCb3JkZXJJbWFnZVZhbHVlLmgiCisjaW5jbHVkZSAi
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNs
dWRlICJDU1NJbXBvcnRSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTTWVkaWFSdWxlLmgiCkBAIC0yMjQ2
LDIzICsyMjQ3LDMzIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQK
ICAgICBjYXNlIENTU19QUk9QX0NVUlNPUjoKICAgICAgICAgaWYgKGlzSW5oZXJpdCkgewogICAg
ICAgICAgICAgc3R5bGUtPnNldEN1cnNvcihwYXJlbnRTdHlsZS0+Y3Vyc29yKCkpOwotICAgICAg
ICAgICAgc3R5bGUtPnNldEN1cnNvckltYWdlKHBhcmVudFN0eWxlLT5jdXJzb3JJbWFnZSgpKTsK
KyAgICAgICAgICAgIHN0eWxlLT5jdXJzb3JzKCkgPSBwYXJlbnRTdHlsZS0+Y3Vyc29ycygpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc0luaXRpYWwpIHsK
ICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxDdXJzb3Io
KSk7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29ySW1hZ2UoMCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7CisgICAgICAg
IGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeworICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBs
aXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworICAgICAgICAgICAgaW50
IGxlbiA9IGxpc3QtPmxlbmd0aCgpOworICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcihDVVJT
T1JfQVVUTyk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+aXRlbShp
KTsKKyAgICAgICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZl
VmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgeworICAgICAgICAgICAgICAgICAgICBDU1NDdXJzb3JJ
bWFnZVZhbHVlKiBpbWFnZSA9IHN0YXRpY19jYXN0PENTU0N1cnNvckltYWdlVmFsdWUqPihwcmlt
aXRpdmVWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5hZGRDdXJzb3IoaW1hZ2Up
OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0lERU5UKQorICAgICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKChFQ3Vyc29y
KShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENTU19WQUxfQVVUTykpOworICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlKSB7CiAgICAgICAgICAgICBp
bnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CiAgICAgICAgICAgICBp
ZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKSB7CiAgICAgICAgICAgICAg
ICAgc3R5bGUtPnNldEN1cnNvcigoRUN1cnNvcikocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
LSBDU1NfVkFMX0FVVE8pKTsKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29ySW1hZ2Uo
MCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19VUkkpIHsKLSAgICAgICAgICAgICAgICBDU1NJbWFnZVZhbHVlKiBpbWFnZSA9IHN0YXRpY19j
YXN0PENTU0ltYWdlVmFsdWUqPihwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgc3R5
bGUtPnNldEN1cnNvcihDVVJTT1JfQVVUTyk7Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldEN1
cnNvckltYWdlKGltYWdlLT5pbWFnZShlbGVtZW50LT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKSkp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpJbmRleDogV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjkxKQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDkg
KzI1LDcgQEAKICNpbmNsdWRlICJTVkdDdXJzb3JFbGVtZW50LmgiCiAKICNpbmNsdWRlICJBdHRy
LmgiCi0jaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2lu
Y2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZH
SGVscGVyLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKQEAgLTM2LDE1ICszNCwx
MiBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFNWR0N1cnNvckVsZW1lbnQ6OlNWR0N1
cnNvckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQgKmRvYykK
LTogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2MpLCBTVkdUZXN0cygpLCBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKCksIFNWR1VSSVJlZmVyZW5jZSgpLCBDYWNoZWRPYmplY3RDbGllbnQoKQor
OiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvYyksIFNWR1Rlc3RzKCksIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQoKSwgU1ZHVVJJUmVmZXJlbmNlKCkKIHsKLSAgICBtX2NhY2hlZEltYWdlID0g
MDsKIH0KIAogU1ZHQ3Vyc29yRWxlbWVudDo6flNWR0N1cnNvckVsZW1lbnQoKQogewotICAgIGlm
IChtX2NhY2hlZEltYWdlKQotICAgICAgICBtX2NhY2hlZEltYWdlLT5kZXJlZih0aGlzKTsKIH0K
IAogU1ZHQW5pbWF0ZWRMZW5ndGggKlNWR0N1cnNvckVsZW1lbnQ6OngoKSBjb25zdApAQCAtNjYs
MTYgKzYxLDEyIEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAg
ICAgICAgeSgpLT5iYXNlVmFsKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUuaW1wbCgpKTsKICAg
ICBlbHNlCiAgICAgewotICAgICAgICBpZihTVkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
YXR0cikpIHJldHVybjsKLSAgICAgICAgaWYoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKLSAgICAgICAgaWYgKFNWR1VSSVJl
ZmVyZW5jZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpIHsKLSAgICAgICAgICAgIGlmICht
X2NhY2hlZEltYWdlKQotICAgICAgICAgICAgICAgIG1fY2FjaGVkSW1hZ2UtPmRlcmVmKHRoaXMp
OwotICAgICAgICAgICAgbV9jYWNoZWRJbWFnZSA9IG93bmVyRG9jdW1lbnQoKS0+ZG9jTG9hZGVy
KCktPnJlcXVlc3RJbWFnZShocmVmKCktPmJhc2VWYWwoKSk7Ci0gICAgICAgICAgICBpZiAobV9j
YWNoZWRJbWFnZSkKLSAgICAgICAgICAgICAgICBtX2NhY2hlZEltYWdlLT5yZWYodGhpcyk7Cisg
ICAgICAgIGlmIChTVkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
aWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KIAogICAgICAgICBTVkdFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShhdHRyKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJz
b3JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxl
bWVudC5oCShyZXZpc2lvbiAxNDY5MSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTcgKzMwLDE1IEBACiAjaW5jbHVkZSAiU1ZH
VGVzdHMuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCi0jaW5jbHVkZSAiQ2FjaGVkT2JqZWN0Q2xpZW50Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlCiB7CiAgICAgY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGg7CiAK
ICAgICBjbGFzcyBTVkdDdXJzb3JFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgQ2FjaGVkT2JqZWN0Q2xp
ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2UK
ICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdDdXJzb3JFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwpAQCAtNTQsMTIgKzUyLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlICphdHRyKTsKIAotICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX2NhY2hlZEltYWdlOyB9Ci0KICAgICBwcml2YXRlOgogICAgICAgICBtdXRh
YmxlIFJlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gbV94OwogICAgICAgICBtdXRhYmxlIFJlZlB0
cjxTVkdBbmltYXRlZExlbmd0aD4gbV95OwotICAgICAgICBDYWNoZWRJbWFnZSAqbV9jYWNoZWRJ
bWFnZTsKICAgICB9OwogfTsKIApJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDE0NjkxKQor
KysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4MSwxMSAr
NTgxLDE4IEBAIHN0YXRpYyBDdXJzb3Igc2VsZWN0Q3Vyc29yKGNvbnN0IE1vdXNlRXYKICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZSA/IG5vZGUtPnJlbmRlcmVyKCkgOiAwOwogICAg
IFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyID8gcmVuZGVyZXItPnN0eWxlKCkgOiAwOwog
Ci0gICAgaWYgKHN0eWxlICYmIHN0eWxlLT5jdXJzb3JJbWFnZSgpICYmICFzdHlsZS0+Y3Vyc29y
SW1hZ2UoKS0+aW1hZ2UoKS0+aXNOdWxsKCkpCi0gICAgICAgIGlmICghc3R5bGUtPmN1cnNvcklt
YWdlKCktPmlzRXJyb3JJbWFnZSgpKQotICAgICAgICAgICAgcmV0dXJuIHN0eWxlLT5jdXJzb3JJ
bWFnZSgpLT5pbWFnZSgpOwotICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3R5bGUgPSAwOyAv
LyBGYWxsYmFjayB0byBDVVJTT1JfQVVUTworICAgIGlmIChzdHlsZSAmJiBzdHlsZS0+Y3Vyc29y
cygpKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4gPiBjdXJz
b3JzID0gc3R5bGUtPmN1cnNvcnMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDtpIDwg
Y3Vyc29ycy5zaXplKCk7KytpKSB7CisgICAgICAgICAgICBDYWNoZWRJbWFnZSogY2ltYWdlID0g
Y3Vyc29yc1tpXS5nZXQoKS0+aW1hZ2Uobm9kZS0+ZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCkpOwor
ICAgICAgICAgICAgaWYgKCFjaW1hZ2UpCisgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgaWYgKGNpbWFnZS0+aW1hZ2UoKS0+aXNOdWxsKCkpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBlbHNlIGlmICghY2ltYWdlLT5pc0Vycm9ySW1hZ2UoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gQ3Vyc29yKGNpbWFnZS0+aW1hZ2UoKSwgY3Vyc29yc1tpXS5n
ZXQoKS0+aG90c3BvdCgpKTsKKyAgICAgICAgfTsKKyAgICB9CiAKICAgICBzd2l0Y2ggKHN0eWxl
ID8gc3R5bGUtPmN1cnNvcigpIDogQ1VSU09SX0FVVE8pIHsKICAgICAgICAgY2FzZSBDVVJTT1Jf
QVVUTzogewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCShyZXZpc2lvbiAxNDY5MSkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vQ3Vyc29yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYg
Q1VSU09SX0gKICNkZWZpbmUgQ1VSU09SX0gKIAorI2luY2x1ZGUgIkludFBvaW50LmgiCisKICNp
ZmRlZiBXSU4zMgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgpAQCAtNTMsNyArNTUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ3Vyc29yIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIEN1cnNvcigpIDogbV9pbXBsKDApIHsgfQotICAgICAgICBDdXJzb3IoSW1hZ2UqKTsK
KyAgICAgICAgQ3Vyc29yKEltYWdlKiwgSW50UG9pbnQgaG90c3BvdCA9IEludFBvaW50KCkpOwog
ICAgICAgICBDdXJzb3IoY29uc3QgQ3Vyc29yJik7CiAgICAgICAgIH5DdXJzb3IoKTsKICAgICAg
ICAgQ3Vyc29yJiBvcGVyYXRvcj0oY29uc3QgQ3Vyc29yJik7CkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL21hYy9DdXJzb3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
Q3Vyc29yTWFjLm1tCShyZXZpc2lvbiAxNDY5MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0N1
cnNvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDEsMTQgKzQxLDE1IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vIFNpbXBsZSBOU0N1cnNvciBjYWxscyBzaG91bGRuJ3QgbmVlZCBwcm90ZWN0
aW9uLAogLy8gYnV0IGNyZWF0aW5nIGEgY3Vyc29yIHdpdGggYSBiYWQgaW1hZ2UgbWlnaHQgdGhy
b3cuCiAKLXN0YXRpYyBOU0N1cnNvciogY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWdlKiBpbWFnZSkK
K3N0YXRpYyBOU0N1cnNvciogY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWdlKiBpbWFnZSwgSW50UG9p
bnQgaG90c3BvdCkKIHsKICAgICAvLyBGSVhNRTogVGhlIGN1cnNvciB3b24ndCBhbmltYXRlLiAg
Tm90IHN1cmUgaWYgdGhhdCdzIGEgYmlnIGRlYWwuCiAgICAgTlNJbWFnZSogaW1nID0gaW1hZ2Ut
PmdldE5TSW1hZ2UoKTsKICAgICBpZiAoIWltZykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW05TQ3Vyc29yIGFsbG9jXSBp
bml0V2l0aEltYWdlOmltZyBob3RTcG90Ok5TWmVyb1BvaW50XTsKKyAgICBOU1BvaW50IGhvdFNw
b3RQb2ludCA9IHtob3RzcG90LngoKSwgaG90c3BvdC55KCl9OworICAgIHJldHVybiBbW05TQ3Vy
c29yIGFsbG9jXSBpbml0V2l0aEltYWdlOmltZyBob3RTcG90OmhvdFNwb3RQb2ludF07CiAgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICByZXR1cm4gMDsKIH0KQEAgLTc0LDggKzc1
LDggQEAgc3RhdGljIE5TQ3Vyc29yKiBsZWFrTmFtZWRDdXJzb3IoY29uc3QgYwogICAgIHJldHVy
biAwOwogfQogCi1DdXJzb3I6OkN1cnNvcihJbWFnZSogaW1hZ2UpCi0gICAgOiBtX2ltcGwoS1dR
UmV0YWluTlNSZWxlYXNlKGNyZWF0ZUN1c3RvbUN1cnNvcihpbWFnZSkpKQorQ3Vyc29yOjpDdXJz
b3IoSW1hZ2UqIGltYWdlLCBJbnRQb2ludCBob3RzcG90KQorICAgIDogbV9pbXBsKEtXUVJldGFp
bk5TUmVsZWFzZShjcmVhdGVDdXN0b21DdXJzb3IoaW1hZ2UsIGhvdHNwb3QpKSkKIHsKIH0KIApJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfc3R5bGUuY3BwCShyZXZpc2lvbiAxNDY5MSkKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4Nyw3
ICs0ODcsNyBAQCBib29sIFN0eWxlQ1NTM0luaGVyaXRlZERhdGE6OnNoYWRvd0RhdGFFCiBTdHls
ZUluaGVyaXRlZERhdGE6OlN0eWxlSW5oZXJpdGVkRGF0YSgpCiAgICAgOiBpbmRlbnQoUmVuZGVy
U3R5bGU6OmluaXRpYWxUZXh0SW5kZW50KCkpLCBsaW5lX2hlaWdodChSZW5kZXJTdHlsZTo6aW5p
dGlhbExpbmVIZWlnaHQoKSksIAogICAgICAgc3R5bGVfaW1hZ2UoUmVuZGVyU3R5bGU6OmluaXRp
YWxMaXN0U3R5bGVJbWFnZSgpKSwKLSAgICAgIGN1cnNvcl9pbWFnZSgwKSwgY29sb3IoUmVuZGVy
U3R5bGU6OmluaXRpYWxDb2xvcigpKSwgCisgICAgICBjdXJzb3JJbmZvKDApLCBjb2xvcihSZW5k
ZXJTdHlsZTo6aW5pdGlhbENvbG9yKCkpLCAKICAgICAgIGhvcml6b250YWxfYm9yZGVyX3NwYWNp
bmcoUmVuZGVyU3R5bGU6OmluaXRpYWxIb3Jpem9udGFsQm9yZGVyU3BhY2luZygpKSwgCiAgICAg
ICB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyhSZW5kZXJTdHlsZTo6aW5pdGlhbFZlcnRpY2FsQm9y
ZGVyU3BhY2luZygpKSwKICAgICAgIHdpZG93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbFdpZG93cygp
KSwgb3JwaGFucyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9ycGhhbnMoKSksCkBAIC01MDIsNyArNTAy
LDcgQEAgU3R5bGVJbmhlcml0ZWREYXRhOjp+U3R5bGVJbmhlcml0ZWREYXRhKAogU3R5bGVJbmhl
cml0ZWREYXRhOjpTdHlsZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBv
ICkKICAgICA6IFNoYXJlZDxTdHlsZUluaGVyaXRlZERhdGE+KCksCiAgICAgICBpbmRlbnQoIG8u
aW5kZW50ICksIGxpbmVfaGVpZ2h0KCBvLmxpbmVfaGVpZ2h0ICksIHN0eWxlX2ltYWdlKCBvLnN0
eWxlX2ltYWdlICksCi0gICAgICBjdXJzb3JfaW1hZ2UoIG8uY3Vyc29yX2ltYWdlICksIGZvbnQo
IG8uZm9udCApLAorICAgICAgY3Vyc29ySW5mbyggby5jdXJzb3JJbmZvICksIGZvbnQoIG8uZm9u
dCApLAogICAgICAgY29sb3IoIG8uY29sb3IgKSwKICAgICAgIGhvcml6b250YWxfYm9yZGVyX3Nw
YWNpbmcoIG8uaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyApLAogICAgICAgdmVydGljYWxfYm9y
ZGVyX3NwYWNpbmcoIG8udmVydGljYWxfYm9yZGVyX3NwYWNpbmcgKSwKQEAgLTUxNiw3ICs1MTYs
NyBAQCBib29sIFN0eWxlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShjb25zCiAgICAgICAgIGlu
ZGVudCA9PSBvLmluZGVudCAmJgogICAgICAgICBsaW5lX2hlaWdodCA9PSBvLmxpbmVfaGVpZ2h0
ICYmCiAgICAgICAgIHN0eWxlX2ltYWdlID09IG8uc3R5bGVfaW1hZ2UgJiYKLSAgICAgICAgY3Vy
c29yX2ltYWdlID09IG8uY3Vyc29yX2ltYWdlICYmCisgICAgICAgIGN1cnNvckluZm8gPT0gby5j
dXJzb3JJbmZvICYmCiAgICAgICAgIGZvbnQgPT0gby5mb250ICYmCiAgICAgICAgIGNvbG9yID09
IG8uY29sb3IgJiYKICAgICAgICAgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyA9PSBvLmhvcml6
b250YWxfYm9yZGVyX3NwYWNpbmcgJiYKQEAgLTgwMCw3ICs4MDAsNyBAQCBSZW5kZXJTdHlsZTo6
RGlmZiBSZW5kZXJTdHlsZTo6ZGlmZiggY29uCiAgICAgICAgICEoaW5oZXJpdGVkLT5pbmRlbnQg
PT0gb3RoZXItPmluaGVyaXRlZC0+aW5kZW50KSB8fAogICAgICAgICAhKGluaGVyaXRlZC0+bGlu
ZV9oZWlnaHQgPT0gb3RoZXItPmluaGVyaXRlZC0+bGluZV9oZWlnaHQpIHx8CiAgICAgICAgICEo
aW5oZXJpdGVkLT5zdHlsZV9pbWFnZSA9PSBvdGhlci0+aW5oZXJpdGVkLT5zdHlsZV9pbWFnZSkg
fHwKLSAgICAgICAgIShpbmhlcml0ZWQtPmN1cnNvcl9pbWFnZSA9PSBvdGhlci0+aW5oZXJpdGVk
LT5jdXJzb3JfaW1hZ2UpIHx8CisgICAgICAgICEoaW5oZXJpdGVkLT5jdXJzb3JJbmZvID09IG90
aGVyLT5pbmhlcml0ZWQtPmN1cnNvckluZm8pIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT5mb250
ID09IG90aGVyLT5pbmhlcml0ZWQtPmZvbnQpIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT5ob3Jp
em9udGFsX2JvcmRlcl9zcGFjaW5nID09IG90aGVyLT5pbmhlcml0ZWQtPmhvcml6b250YWxfYm9y
ZGVyX3NwYWNpbmcpIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3Bh
Y2luZyA9PSBvdGhlci0+aW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZykgfHwKQEAg
LTk1NSw2ICs5NTUsMTEgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q2xpcCggTGVuZ3RoIHRvcCwg
TAogICAgIGRhdGEtPmNsaXAubGVmdCA9IGxlZnQ7CiB9CiAKK3ZvaWQgUmVuZGVyU3R5bGU6OmFk
ZEN1cnNvcihQYXNzUmVmUHRyPENTU0N1cnNvckltYWdlVmFsdWU+IHYpCit7CisgICAgaW5oZXJp
dGVkLmFjY2VzcygpLT5jdXJzb3JJbmZvLmFwcGVuZCh2KTsKK30KKwogYm9vbCBSZW5kZXJTdHls
ZTo6Y29udGVudERhdGFFcXVpdmFsZW50KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBj
b25zdAogewogICAgIENvbnRlbnREYXRhKiBjMSA9IGNvbnRlbnQ7CkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9yZW5kZXJfc3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9y
ZW5kZXJfc3R5bGUuaAkocmV2aXNpb24gMTQ2OTEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9yZW5k
ZXJfc3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQAogI2luY2x1ZGUgIkxl
bmd0aC5oIgogI2luY2x1ZGUgIlNoYXJlZC5oIgogI2luY2x1ZGUgIkRlcHJlY2F0ZWRWYWx1ZUxp
c3QuaCIKKyNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiAjaWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdSZW5kZXJTdHlsZS5oIgpA
QCAtODEwLDcgKzgxMiw3IEBAIHB1YmxpYzoKICAgICBMZW5ndGggbGluZV9oZWlnaHQ7CiAKICAg
ICBDYWNoZWRJbWFnZSAqc3R5bGVfaW1hZ2U7Ci0gICAgQ2FjaGVkSW1hZ2UgKmN1cnNvcl9pbWFn
ZTsKKyAgICBWZWN0b3I8UmVmUHRyPENTU0N1cnNvckltYWdlVmFsdWU+ID4gY3Vyc29ySW5mbzsK
IAogICAgIEZvbnQgZm9udDsKICAgICBDb2xvciBjb2xvcjsKQEAgLTEyOTMsNyArMTI5NSw3IEBA
IHB1YmxpYzoKIAogICAgIEVDdXJzb3IgY3Vyc29yKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RUN1cnNvcj4oaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGUpOyB9CiAgICAgCi0gICAg
Q2FjaGVkSW1hZ2UgKmN1cnNvckltYWdlKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5jdXJz
b3JfaW1hZ2U7IH0KKyAgICBWZWN0b3I8UmVmUHRyPENTU0N1cnNvckltYWdlVmFsdWU+ID4gY3Vy
c29ycygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Y3Vyc29ySW5mbzsgfQogCiAgICAgc2hv
cnQgd2lkb3dzKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT53aWRvd3M7IH0KICAgICBzaG9y
dCBvcnBoYW5zKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5vcnBoYW5zOyB9CkBAIC0xNDk3
LDcgKzE0OTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYWRkaW5nUmlnaHQoTGVuZ3RoIHYp
ICB7ICBTRVRfVkFSKHN1cnJvdW5kLHBhZGRpbmcucmlnaHQsdikgfQogCiAgICAgdm9pZCBzZXRD
dXJzb3IoIEVDdXJzb3IgYyApIHsgaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGUgPSBjOyB9
Ci0gICAgdm9pZCBzZXRDdXJzb3JJbWFnZSggQ2FjaGVkSW1hZ2UgKnYgKSB7IFNFVF9WQVIoaW5o
ZXJpdGVkLGN1cnNvcl9pbWFnZSx2KSB9CisgICAgdm9pZCBhZGRDdXJzb3IoUGFzc1JlZlB0cjxD
U1NDdXJzb3JJbWFnZVZhbHVlPiB2KTsKIAogICAgIGJvb2wgZm9yY2VCYWNrZ3JvdW5kc1RvV2hp
dGUoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3Rv
X3doaXRlOyB9CiAgICAgdm9pZCBzZXRGb3JjZUJhY2tncm91bmRzVG9XaGl0ZShib29sIGI9dHJ1
ZSkgeyBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlID0gYjsgfQo=
</data>
<flag name="review"
          id="2499"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>9670</attachid>
            <date>2006-07-25 05:19:57 -0700</date>
            <delta_ts>2006-07-25 05:19:57 -0700</delta_ts>
            <desc>test case for HTML (put in WebCore/manual-tests)</desc>
            <filename>custom-cursors.html</filename>
            <type>application/octet-stream</type>
            <size>2343</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIgogICAiaHR0
cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPgo8aGVhZD48dGl0bGU+
Q3VzdG9tIGN1cnNvciB0ZXN0czwvdGl0bGU+PC9oZWFkPgo8Ym9keT4KPHA+PGEgaHJlZj0iaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD04OTkxIj5CdWcgLjk5
MTwvYT46IFJFR1JFU1NJT046IG1pc3Npbmcgb3IgYnJva2VuIENTUyBjdXN0b20gY3Vyc29ycyBh
cmUgZGlzcGxheWVkIGFzIGEgbWlzc2luZyBpbWFnZSBpY29uLjwvcD4KPHA+TW92ZSB0aGUgY3Vy
c29yIG92ZXIgdGhlIGJsdWUgYm94IC0gaXQgc2hvdWxkIG5vdCB0dXJuIGludG8gYSBtaXNzaW5n
IGltYWdlIGljb24sIGFuZCBzaG91bGQgdHVybiBpbnRvIGFuIEktYmVhbSBvdmVyIHRleHQuPC9w
PgoKPGRpdiBzdHlsZT0id2lkdGg6MTAwcHg7aGVpZ2h0OjUwcHg7YmFja2dyb3VuZC1jb2xvcjps
aWdodGJsdWU7IGN1cnNvcjp1cmwobm9uZXhpc3RlbnQucG5nKSwgYXV0bzsiPjxzcGFuIHN0eWxl
PSJjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIGF1dG87Ij5zb21lIHRleHQ8L3NwYW4+PC9k
aXY+CjxkaXYgc3R5bGU9IndpZHRoOjEwMHB4O2hlaWdodDo1MHB4O2JhY2tncm91bmQtY29sb3I6
bGlnaHRibHVlOyBjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyk7Ij48L2Rpdj4KCjxocj4KPHA+
PGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02
MDAxIj5CdWcgNjAwMTwvYT46IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9t
IGN1cnNvcnM8L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTAxMyI+QnVnIDkwMTM8L2E+OiBMZXQgY29ycmVjdCBDU1MgY3VzdG9t
IGN1cnNvciBkZWNsYXJhdGlvbnMgcGFyc2U8L3A+CjxwPkluIGVhY2ggb2YgdGhlIGJsdWUgYm94
ZXMgYmVsb3csIHRoZSBjdXJzb3Igc2hvdWxkIGJlY29tZSBhIGhlbHAgY3Vyc29yIChxdWVzdGlv
biBtYXJrKS48L3A+Cjx0YWJsZT48dHI+CiA8dGQ+PGRpdiBzdHlsZT0id2lkdGg6MTAwcHg7aGVp
Z2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKHJlc291cmNl
cy9oZWxwQ3Vyc29yLnRpZmYpLCB0ZXh0OyI+PC9kaXY+PC90ZD4gPCEtLSBWYWxpZCwgbm8gZmFs
bGJhY2sgbmVlZGVkIC0tPgogPHRkPjxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBw
eDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMvaGVscEN1
cnNvci50aWZmKTsnPjwvZGl2PjwvdGQ+IDwhLS0gSW52YWxpZCwgYnV0IGFsbG93ZWQgYnkgV2lu
SUUgLS0+CiA8dGQ+PGRpdiBzdHlsZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91
bmQtY29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIGhlbHA7Jz48
L2Rpdj48L3RkPgogPHRkPjxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNr
Z3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChub25leGlzdGVudC5wbmcpLCB1cmwo
Y3VzdG9tLWN1cnNvcnMuaHRtbCksIHVybCh1bmtub3duLXNjaGVtZTpjdXN0b20tY3Vyc29ycy5o
dG1sKSwgdXJsKHJlc291cmNlcy9oZWxwQ3Vyc29yLnRpZmYpLCB0ZXh0Oyc+PC9kaXY+PC90ZD4K
IDx0ZD48ZGl2IHN0eWxlPSd3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xv
cjpsaWdodGJsdWU7IGN1cnNvcjp1cmwobm9uZXhpc3RlbnQucG5nKSwgdXJsKCJyZXNvdXJjZXMv
aGVscEN1cnNvci50aWZmIiksIHRleHQ7Jz48L2Rpdj48L3RkPgogPHRkPjxkaXYgc3R5bGU9J3dp
ZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29y
OnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKSAxIDEsIHRleHQ7Jz48L2Rpdj48L3RkPiA8
IS0tIENTUzMgaG90IHNwb3QgLSB2YWxpZCwgbm8gZmFsbGJhY2sgbmVlZGVkIC0tPgo8L3RyPgo8
L3RhYmxlPgoKPHA+PC9wPgo8cD48c3BhbiBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjpncmF5OyBj
dXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIHVybCgicmVzb3VyY2VzL2hlbHBDdXJzb3IudGlm
ZiIpOyc+U2hvdWxkIHNob3cgYW4gSS1iZWFtIGN1cnNvci48L3NwYW4+PC9wPiA8IS0tIEFuIGlu
dmFsaWQgZGVjbGFyYXRpb24sIGV2ZW4gYnkgV2luSUUgc3RhbmRhcmRzIC0tPgo8L2JvZHk+Cjwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>9696</attachid>
            <date>2006-07-26 03:49:04 -0700</date>
            <delta_ts>2006-07-26 03:49:04 -0700</delta_ts>
            <desc>test case for SVG</desc>
            <filename>svg-custom-cursors.zip</filename>
            <type>application/zip</type>
            <size>7834</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">UEsDBBQACAAIAMp0+jQAAAAAAAAAAAAAAAASABAAY3VzdG9tLWN1cnNvcnMuc3ZnVVgMABtGx0Qb
RsdE9QH1Ac2XT2/aMBjG73wKz7u00sBJgK6gJD1MWtXLVGl/rlMWTBwtJMx2SPvt59hACSSOExga
hxLF9vO8fh//LOo+vKwSsMGUxVnqQXtkQYDTMFvEaeTB798+D+/hgz9w2SaqzhqA8vMrYPiZZss4
wR5c5kmyfV/EC048eDcVcuoNwXFEuAcnb6+Ec8o8SDhfzxEqimJUjEcZjZBjWRYSjvBg3vwlidPf
dbPt2WyG5CgUhfKYJ9j/+uMRhDnj2Up8UZZR5iI1Mhi4C7xkvpB21RCIFx5Ukz/JF89fHiGQgnNC
8bI6OFqnkRj1oNgGkirvhkPwKpoCwY1QDvKEM8AzYN2C4VDYNfuIIqWSPYVSYAp9uWE3jGmYYBBu
x0I1CKgHxV/R68SDBYk5hr6L1FxZCFI+bZ5Ovanot3rqXUBZwlbloBYXqX4P3KiMB79waW9Je8eC
/lMKcBASQLPiA+AEA/YnDyhmgJEsTxaABBus3gcrXE11JFIVgkIXRaVDGYXNeCmlmu9G25kezGly
cxzkrdy8S3EoixqrosoTuj3A5ePu5IpntHeKAOOv5aFX8vN69b05wcm66mVbHcyqKz+2rWzZc5Ow
M2kV7r7pw5ZpyxLZiyiPArEvnEityX3fJORddkYS22qa5KeOsbxsdYcGdD3Isq6gcimeXsRPYZYy
VIzDnyRb4eNyQJwSTGO+u2/2u5wZtL+8UYIK5k66aMT8/dFtXo+57fQ8VafyBpybudWCrlnasu02
0nXK3ffdhPrJOh3ql0tFx3qPNHaw907DkHYT/SbcDTyNcr0C7voETnkfU0PexS+cBt5nlzhZUt6E
dyO3et6bl7Zsu5V3jbLJvo0IL2dqCb9YDlrCu/d/T3jf/psSfl4K3Zl+Q+IfM63t+SnTE07OZNq5
uybTZm61TGuWnsm0TvlqTF8uBx3TPfq/Y7p3/w2ZPjOF/5dpfc+rTKv//v8CUEsHCHQ7g/nSAgAA
UxIAAFBLAwQKAAAAAADydPo0AAAAAAAAAAAAAAAACQAQAF9fTUFDT1NYL1VYDABnRsdEZ0bHRPUB
9QFQSwMEFAAIAAgAynT6NAAAAAAAAAAAAAAAAB0AEABfX01BQ09TWC8uX2N1c3RvbS1jdXJzb3Jz
LnN2Z1VYDAAbRsdEG0bHRPUB9QFjYBVjZ2BiwAQgMU4gNgJiBSg/CCQR4hoRohiUnIFFDxgAAFBL
BwhG2fANIwAAAFIAAABQSwMEFAAIAAgAuHH6NAAAAAAAAAAAAAAAABAAEABjdXN0b21DdXJzb3Iu
cG5nVVgMAFxAx0RcQMdE9QH1AQGyAk39iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9h
AAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/
AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACKElEQVR42pTSQWiScRjH8UfDFsgqmTaaFSLBhoe5
hsRWCGOgJ0/hYYOxUEfQbYodOixizcEgCYpukgiyY6cXuk682EEMxiZIELsYM9Atp9us9//dxcMa
jrYHnsNz+cDzex6j1WrVA4FAR9O0b8AL4CFwAzAC8r+Wubk57HY7LpcLl8ulNE0rA2+AJ8B94Bpg
OA+4opR6FQgEDK1WSxYWFgzpdHqgWCw+Hh8ff2Q2m4dF5JaItEVkT0R0OVOG1dXVcqPRGLZYLIZS
qSSJRELi8bjs7++rwcFB/H5/KxKJpEVkTUR+ngVkY2MjNjEx0SkWi7rb7SabzSqA3d1dtb6+rsbG
xnTgA2DvmQEwGYvFfiwuLh5vb28fOp1OUqkU3VJAHpgE+s4DRqrV6hebzaZqtdphPp9XPp+Pqakp
tra2dCAHjJx7BWAA+BiPx1Umk1GA6nQ6f5eWlnSPx0OhUDgAXgPXewHGbrqfdF3/3t/fr0TkwGQy
acvLy599Pl8nmUyaReSpiDwXEYeIGP8JsSsZgQfACvAMuAM4Nzc3tdHRUT2Xy/0BfnXDvHt2hdNI
H2A6NU9qmvZ1aGhIRaNRvV6v14E1wNYL6NVXAXe5XM7Oz88fzczM0Gw2G8A74B5gkIv8O3AbWJmd
nT0Kh8O02+3fQApwXBQQYKBSqaxMT08fBYNBVavVmsD7ywAC3NzZ2XkZCoUOHA4HlUpl77KAAFbg
bSKROPZ6vepkAAeDl6R4ddPfAAAAAElFTkSuQmCCUEsHCNWS4Di3AgAAsgIAAFBLAwQUAAgACAC4
cfo0AAAAAAAAAAAAAAAAGwAQAF9fTUFDT1NYLy5fY3VzdG9tQ3Vyc29yLnBuZ1VYDABcQMdEXEDH
RPUB9QHtXQt4G8W1ntWuJVuWX/EjCVCsKM8msvW2JNexIz9kmxsHYysmBCiVpbWsWNYq0iqxc6Gx
QxICt98HCS0tfXwlPEIoLS2kgdLy3ZhHm9629+ORBgKlfCGBFmgChpIQyGPvmdXTsuQkkDjcMEeZ
0T/nnJlzZubszCjWrlBWmQxJ0HjCvBxIekjKaLkDoZ3vtC9p7rHUt7YxaSpFiIL02DaEHoVE12dU
u3ippNjm5rpZZXsvx3OhXi6gbOiEcZTOkc4R5YXwKpIICiScglKzIIgpJsG0lfoIleFRjrYI/Obg
rYHeX3avgOGVx3jr4I0eQZEhT6aU8qJUDxclrNExXteKAOtJaoFyBgK+SIGO6MY9pWcjSiH2Tlmh
vKK9qTndKEwTBGGfsB8VXmFvtSOKolAzvHCfFTZomW1zBvvkwt/QekRLMOGcBmKkDCZZljRLmpOd
k5MNlCPPy4Ukz85WFCry8vMLCgpycguLCvOL8vIL8ilci2ZkUClfni3PP2sSnqPuhS5nUSLFh0BC
M1lSGRjPpRBNxWicsBBJwAMJQ2dlMXBVUDeBDDFFWVNm6GzS4qucMtXKEv3w5q3ZM+sffbq048XR
WYbu4LocednUadMvmT1n7ryvzzeaqswWa3VDY5O9uaX1ik7H0q6rl12z3OVmezy93hUhPrxq9cDg
mpvXb9h4y6Zbb9ty53e/d9f3f3D3D++97/4Htj24/aGfPbbj1zsff+I3T/72mWef+/0fdv/xf/70
0p6/7n35lX2vvvbmgYNvvf2Pf77z7nsffvTvj48c/eTYp58VgcsSBo8ZdpmSrMb9KWKyZuikU2xX
yZwri1X64eyS+s1bH306Z6ahY7S0O/iivGyW8c3ZH2KvRafPzOd1n8vpuM9xl4URVJSNw5CmZiBJ
EUUXUcJrSEFTUKCLUB06wm1Yo7m9rqctdMPoGz89ePg/7KMv3/xQ1U9W1v6yb+XD76x6TDvl2h89
PPCGwcmtzPv9zx9azT027+2p7X+p2l1W+/4Lc/dW8hXVB6+7ltr+Z2/uG7k5y/uusi5yf+QOdw18
4unTr7uaGRq4R3IT3fBkW+vcFw/9uK/o0+Ubv3Xd37c9r/E9OH3ljrc/3bH7awt2+3Zef+1R75Y/
P/vG1/97195TZSW37Vn8yuxNrXUbtc9YfsG9ijTsr+/dvWrkB0cPrFLe2ksLryL0g+gVrUZNY97F
6zP7pABr76lTKFc2tBYuPpkwIsRwuTAax2uFE3EsCKcEJGeG1o4I1Cko5+ZsWovqaIEShjD+Niqn
T6C1Ir4RFciOoboRwEMDl8lko6g8hgv2I/gHOHAZXTCCZDEMCqAWxUOITo/rTiTw3CjOTuKjJP0E
vmU00f7waMIu4Lg/w6Mo7ifguP/D+xP9un0IrcX9BT4ahsGAYaD2RzECPBrBWTBsQhyXY5xzEpBM
eH4UZZ9ADCWAW5JPoEULUtyI0MLnjwFulDCOITRl83bA6xADszTlHiXgmx8Pb35i32UiXrfle4U/
dBdG8S2FW26M4MYtGwq3fKtwM8YWYe2Tx2+0Ph9ADJp2DLL8Y7BAwsznjxz++mUItbc2OEpfwaHQ
+rrX5Q/h99aGJTNhkclOt+TGVy5BGKJG0BAVgHQIkhnSVUNDlA/e50CaCUkHZYTTtyBpIU2DpIAk
hUQP4TYmsnFa++cgTWTD6/JZEGImHIeLiIRxlCo/fmQsI0X+KVQ5OoFc6Dp1RDiRWX7ss66TeGHp
yiDHr08QOiZkkg8fR0JXMiPVXQEdSerVePnxzxAaFo5klJ/ArR8/lVEeBUcmlqPoIGSUo5PCxHJ0
6uTEciQIE8vRz4WJ5ahr/PxPHB8XLXl5A5ytmacwFibt9WckKWt/5jbhMGKuu3T+gpFNgKSVnO1u
+8pDGwFn371q49LXltiWbV2PSwdr/ldzv/DuNj0uZQnrQ6+ofnwLQJlwuOxfzzYt2rsBawlCeKvw
2beNf8JatCBs/OWQQN24FJfWC5L92mduBrRBoJ+7NPjBMMCNAv1297KPhwBuEphvdh8VIuhQ89J/
AbpVoD/sVb5+GP2XQG2qnbyxib2eJfNB5oPMxwTzwVv6++DD+FflDEOIECFChAgRIkSIECFChAgR
IkSIECFChAgR+v9BVMr34ibVdOQLgzGSSCbTCfwFQPH7f1HKyZZJGVoyWR5QEkYqzyssLi2bKlJZ
aXFhnlzKTJYDEkamKJ5ePmve/AVqoAXz580qn16skDHpvkx87omipYrS8tSvPJSXKqT0pAwAxciL
yytT7VeWF8uZSbEvkeZNn1+bar92/vQ86aRMgERWWG5sS7XfZiwvlE2KfTq7eFbN8lT7y2tmFWfT
p6/9hYmic0rnNbhS7bsa5pXmTEYAUrS8bL69N9V+r31+mXyS7E9d0NKXar+vZcHUSbOvbvWl2ve1
qifTfn+q/f6vlv0LO/4XOP4u8PV3YdefC73+Rvef3uG7Hnhkx87HH9+545EH7hrunbz9J7L/OnoH
N3znji1Ad3xnw2CvY/L238j5o7Ztuau3z9ff7+vrdS1vq52880fk/DXfWNNgb2kFarE31BjnT975
60KfPy/4+ftCf/5AF/rzV9yJC/b5kxAhQoQIESJEiBAhQoQIESJEiBAhQoQIESJEaEIqHM+qvqKm
biDgdPWxvLKb9Xj9C1Uf/G6XSul1L1RdbWrTtgUa2F5vy5og27lmicO1ps9ldavqauU1A9UD/YF+
lncqB/p9/lD1wEKVEz+QsBowZmtUSlGF71uoMlTqKnUVOp1OVStXKpU1QXdPdUejPVoTSgtVvTwf
qNZoVq9eXbnaUMkFPRqd1WrVaPUavb4CNCpCg37eOVDhD82MNBJrp5ENuYLeAO/l/EpcdnZzYX6h
ShXViVDEkNsVtxMIB32iFbdLw/rYftbPhzTgpCbeOG7f7aru4YL9Tr7W2+/0sJqA31OjSTBjbmhS
/Pi8/g04A3EH/aFKcTgrXVy/BgTgnHasc8CsbgiyTp4LOjjOV5vmcZDKNqfL68flGk2qerqW2EZI
tXqttqpCa67QVzl0xmqdodpYtUBrrNZqkxqJaKa00ca5vT2DZ9JGkmZqGxA6bifvPKNWknXPw2S0
tU08Hf39mnQ1Q3wH2zNxzZBjMMBqOtgQFw66WFCfmTq1bW3VjZwrjAOztbE2HPa6q5vsdqPRUG/X
NRn1Ol1jvc3W2GTXWhuMWr2l3tRoFQdlbL1xbbb6Q7zT72LHttmgPV2bSfXG+8kGvatYtz3I9YuD
GnAGQyzu4EJVrIfJvcMVxSGq9qZ1pr4pszPj6qVr1p1+3E7brDvtuGnGdfKchxrv7ckQL1gy/srH
3Oorg17w1Sna1dVoxvFS9ZfhufCFRZkZLiytVqPDebRqsji16jUTV71mgqoJ0VK/l6/VR6uksFNr
LYEurGIbvR42BHVMVWq9yQzJAsmq1lfp1XqzERLwLEa1yaCFpAMMfItBrbdWqQ1andqgs0Cyqk16
SAY98KAdsxYS6Jpx2QRySAajQf8Ns96k19ubTHq71m7RVtlMUMVQpbNbbWajWWewRB0f49m5jgN2
wJshDrBkfBxgbnW7d4D1LWv0QuSGxFioqtGkFaSteE2mitdkrtjA+bhgJ5wZ2NoKXbROEi9VfcyQ
GaosVUa1UWut0oo5TJNZp4/kepETyQ3AMekiOkY1rmUWc4s4XUYxB47RYtKKuV7MTWIO0282QHDg
3CLmVpxbtGKuE3O9mBvE3CjmJjEX60IAGXVGkOLcKOYRjlnMLTi36sVc1LGaIDfrLWJuxTmEpFFn
tZjEvErMzWJuEXOsY7WKOladmOvF3CDmRjEX62JP9FpdlRrCVg2hrq5Sm9UWtVUNQ6PTqXV6tc6g
1hnVEMagpDOrIeb1oAtXAlwIcI2Y4HKBaIcLA+L9GzqTya43NRl1VbZ6u7XB1mSxGRuN9VZjFVxU
NospOpnnNcgDsQNK+kiPi8eHe1wUiTY4Q7C1hhpNOnbaWi3eEBx+BjUTdynChdMpnHE18UPu2I3m
fBExQowQI8QIMUKMECPECDFCjBAjxAgxQowQI8QIMUKMECPECDFCjBAjxAgxQowQI8QIMUKMECPE
CDFCjBAjxAgxQowQI8QIMUKMECPECDFCjJxjI/LEbaOs371QtVpVV4vQ17YBu9+nXMUG8a0jC1W6
Sq0KFFyc2+v3LFQtddgrLOLtozMar2xwXNPepAz4vCFe2b60fnFrg1JVodHYAgEfq2zg+gNhng1q
NI2ORmX74tZOhxLfEaBpWqJSJt8t6sTq4q0DoBjStAe5ABvkBxdDqxVQodLNu1VgL2JmjF/AdXtd
fK08p6aPHayFJqKNBYJeP1/Z7vSwdvFGz8r2thYu6F3D+Xmnr4MN1WiwPlSLVk9fn/fi0al0Re65
jNXJqQnxIPakqgOr3+kHk0F8O5qocZqGvTzbbwsGnYOJpp24iFHCtQxtnL5zuCa47qs162s0Isjc
WqyrPnz7WXIDZ9PXidvu59z4Ns/kxt2pt4hqq3W6aqNpeY1GFJ22zRAPanaf05PcKshZ8KxWW6OJ
QXFANfHJ1sSGOc47/RAn3Zl3sUVPmq4lj6Nu7DiSAPp8AdTpcvq8fs/FFjwp3YovOjqy5nzhkOmC
fdDruih3rDRdI/vV+Yidi3TZydA9svx8sRAKhbsdETsBJ5zCb/D6e7gbIpbPLILGTJLNvSIc4lk3
ZnawrsQoJ6b6bMLwLKfm7AIxORKTQ/GLdDOl1Vhsaiu1ydF5GrbZYkjHNpmsY9iJGT7riD/bkD/L
mD/DoD/rqM8Y9klxnzwsSVfDWUwpXAVfidBN7WeG2K3QWdJFYwa2RW9MG7tmM4ndcxu7MH2tsFbD
lIp4ibOfPU8hWxnor2znQnyn+NCFSQzbibqY5K43xFU4jWcx62ccUxP0/PPHlQHHlVbn0JmrjdZq
Q9W5iqtxn9q/aFwt9TsnZzv/EgTYBH3NsC6SPf3Lvi4mz+n53dS/ZAFMdvaLIoIDAfdXYXfP1M0k
l21kdz8nu3vUkq29tSvyV7Vx/+Gj1VbqtWf6nztQWAU+L+ZcfYmGepy+EKs5XVV+MMCOM54xRhzR
/4+IuzXx/2lk7GamXp5lJxN9PNMuZu5h7KNZahdjPazRiH8GrZUjhAYQ/g3VFngB0QUSjfC+8D5t
kdhoT9Z/0vuRJCGV7JPMQ/inD92QKETTuCa1VgA85gcRe7PRdOoOESpP8xziZgHXlsTfEcpPiOuG
xDdG9DLyfjmknJiciiYkj9uPeKvp6QGOD3JpVDHC2Xr3D+McvZgvhzzGMYl5RRIHoQBCqb87GyH6
HaxyPmRIkpRTVBwWRlySLIqk+NAA0aa40yiuG3vIc7rfqqQy6KZVSFaM8v1hny/qmLSbC/vdoSu7
V7gS8g4Xr4u55+ACSh/n98SaWcz28Mnlep7rj5ZFNzo8vXxSWRryeV1sqMu3OITbH2MnS5QBmAJJ
JhZaG5PalnmCXDgwhiXlgl6P18/6w/1QUjR14kpXijwo5znDPNfM+tkgXJ1u0Xu44KLK8ogy5mBJ
a79HOQn9p8NBn6NpmWPs4I/ltIU87BiO1OnjHU7PGF6+i4V67ADfGmpxtC3u5jgfFmTH2GOUc3q5
4Bqbz+uJjVRBpPMtMTYeXTfb4wz7eKy+ig3yadS7Yuyx6rndHvEZjUmDWxSpUN8cF2A3lnB+/J7D
c4Erw3yITR44uQ8GchxX0c3xMKDj+Lkwxb1p1HGP60ZjcyHOGKxqkqejIxG7OLQiG0keQNMQJewT
9qPCK+ytdkRJoqujcBgpxCdv39DQhiTC+yhfLCH3EG5J+BtajxTZ2dk52YqcHEVRrjy3qLRAoSgo
nVZcXFpcPK1IIVL0LT1Rebm5efl5hfn5hSX5+fklOMsviVQpOpMGhBFUlA3dKaQpFZIUUXQRJfwd
ukwJz1F14GXWmN+2pfHPDmeJv/qbS6UKYa2mY8JCRDEULWEkWTJpdhatMICwiGZmTNFl2a5yFqtW
DuulJZu3Plo/c1Zpx9PdBmNw3YsNstlbOkff/NAVMpXd+9jNcxrvdLibnrmPr5r60tID7Ec71j+7
J3zw3/a5371/w6+/99xf3/r4gZ2/3/v2ka6eVRvv2vb4H17+x1Fz89We1bd8/8Endr/yz0+KkEQC
3jKiTzJplkl0YYZuCgMerFQVZ+mHN5dgD57ueHHUMKv7zeC6LQ2dpa6Q8cPZUuyAbI7pmZfAifum
upuWVvHsgbgLmT2Ym3BBeA0paNFmEapDe991eE5ev2vm5U89+OKttzsfev/JR343/f7j7x15z/Xw
8dnTTde37Xz74KFtD5/ac/udJ/6+4Knd4UfufeL6HXvV3h17Zv/l9eZde0I3X/feJzcxP7m9YcPQ
y3v+tekJ2wdFOz7+6a5DR3++6lpu74E/6a87/lujtHNL4+8uvf47983b8e6Bm8r23vXBP3Ydvvoz
93cFJLwKk7QURTeQAmSDPZtD3YiFHbkd9QLmIYVEBHscKj6NhhI1oM7onomoyrY2NB+vHUhGTREv
DPEEQF2CsqLXTTd1aRyvoOZFdeBioXTiroH38SClF3EJpDtu8YrXHta/H9ILSH4Crpy5hbH3CZ9q
j/Dnr2qtuVpfpYw9IB4C+B4qYhfOFugeSbz9wnvoBI7Gs5Sioz5Kk/tBXZ7oBzUnuR8SKtYGVSlJ
tB2jlmg5+o7hY9sQehQSXc9sMvokC4B1GXUvYjodHUrA89tbG/D6WxXwc3iNrPe6/HjHW2Kpb22D
VWf5ro9xP2AdLdrqK31FxNMixjCW1gOf3/WkiB2AB5jZWNZuBPwrZhbEAGpvAfwb+j2YbXTbXYCf
ot9FcxHavgjwH+nD+AS0/SnAI8wctAjwC4CfY/LQYsAHAP+FmQ7xgba/B/gF+t/4VLb9I8B/ZeSw
vqHtAuB9MGd3IvQQA/h1+gjaDngK4P30MTQC+JuA34Lh2gf4JcDvMBL0FuB9gA8xWvQh4DcAjzIV
FMzFQwcBf8xkU2WA3wV8jLmc+hrgk4BPMJdQMI4/y5IVwUDOg3hCv6gFzDAlVAfgJYCzGQW1AnAX
YAUzg4Jo+tWlgAsZFfUjwDzgafkNzshDiyMPO6aXtbUX42O0MnKOVl4pSkN57fiAHSvJE08vz40I
8J+R2Wn2ZcpmH9ft9CkX4z0HTt5Km9/jY6ckBDYf7+XDbjZaD39AC+U3cIFBcZcSyyVXOANOPxuC
oE/oTBV3R2WL09fDw9ao7GR53H6M7wg6/aEeNhjn5y52DuIi/hSoiOBmfCQKlSQXlE1+Z7ePdRd0
9rIs9IL1sS7cK2lz2OtmQ3lLOxYrOdjhg7gkFffpULn4dHBl4iuDyujf0JV2p4vnglMjBlobldHj
FLhX7wyxpUvY1cqrvX43tzqkdPSG+7v9Tq/vkuhnKiV8lgk4eW+31+flB5X478ZM07JW+/8BUEsH
CI9ImvnKFQAAOrYAAFBLAQIVAxQACAAIAMp0+jR0O4P50gIAAFMSAAASAAwAAAAAAAAAAED/gQAA
AABjdXN0b20tY3Vyc29ycy5zdmdVWAgAG0bHRBtGx0RQSwECFQMKAAAAAADydPo0AAAAAAAAAAAA
AAAACQAMAAAAAAAAAABA/UEiAwAAX19NQUNPU1gvVVgIAGdGx0RnRsdEUEsBAhUDFAAIAAgAynT6
NEbZ8A0jAAAAUgAAAB0ADAAAAAAAAAAAQP+BWQMAAF9fTUFDT1NYLy5fY3VzdG9tLWN1cnNvcnMu
c3ZnVVgIABtGx0QbRsdEUEsBAhUDFAAIAAgAuHH6NNWS4Di3AgAAsgIAABAADAAAAAAAAAAAQP+B
1wMAAGN1c3RvbUN1cnNvci5wbmdVWAgAXEDHRFxAx0RQSwECFQMUAAgACAC4cfo0j0ia+coVAAA6
tgAAGwAMAAAAAAAAAABA/4HcBgAAX19NQUNPU1gvLl9jdXN0b21DdXJzb3IucG5nVVgIAFxAx0Rc
QMdEUEsFBgAAAAAFAAUAhQEAAP8cAAAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10431</attachid>
            <date>2006-09-07 02:05:59 -0700</date>
            <delta_ts>2006-09-07 02:05:59 -0700</delta_ts>
            <desc>Another incomplete attempt</desc>
            <filename>cursor.patch</filename>
            <type>text/plain</type>
            <size>12422</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxNjI1OSkKKysr
IGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MDgsOCArNjA4LDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwog
ICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAogICAgICAgICBicmVhazsKICAgICBjYXNl
IENTU19QUk9QX0NVUlNPUjoKLSAgICAgICAgaWYgKHN0eWxlLT5jdXJzb3JJbWFnZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Y3Vyc29ySW1hZ2Uo
KS0+dXJsKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKTsKKyAgICAgICAgaWYgKHN0eWxl
LT5jdXJzb3JEYXRhKCkpCisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KHN0eWxlLT5jdXJzb3JEYXRhKCktPmN1cnNvckltYWdlLT51cmwoKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19VUkkpOwogICAgICAgICBzd2l0Y2ggKHN0eWxlLT5jdXJzb3IoKSkgewogICAgICAg
ICAgICAgY2FzZSBDVVJTT1JfQVVUTzoKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7CkluZGV4OiBjc3MvY3Nzc3R5bGVzZWxlY3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxNjI1
OSkKKysrIGNzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM3Niwy
NCArMjM3NiwyNiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAg
ICAgY2FzZSBDU1NfUFJPUF9DVVJTT1I6CiAgICAgICAgIGlmIChpc0luaGVyaXQpIHsKICAgICAg
ICAgICAgIHN0eWxlLT5zZXRDdXJzb3IocGFyZW50U3R5bGUtPmN1cnNvcigpKTsKLSAgICAgICAg
ICAgIHN0eWxlLT5zZXRDdXJzb3JJbWFnZShwYXJlbnRTdHlsZS0+Y3Vyc29ySW1hZ2UoKSk7Cisg
ICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yRGF0YShwYXJlbnRTdHlsZS0+Y3Vyc29yRGF0YSgp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNJbml0aWFs
KSB7CiAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKFJlbmRlclN0eWxlOjppbml0aWFsQ3Vy
c29yKCkpOwotICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvckltYWdlKDApOworICAgICAgICAg
ICAgc3R5bGUtPnNldEN1cnNvckRhdGEoMCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7CiAgICAgICAgICAgICBpbnQgdHlwZSA9
IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CiAgICAgICAgICAgICBpZiAodHlwZSA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKSB7CiAgICAgICAgICAgICAgICAgc3R5bGUt
PnNldEN1cnNvcigoRUN1cnNvcikocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgLSBDU1NfVkFM
X0FVVE8pKTsKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29ySW1hZ2UoMCk7CisgICAg
ICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvckRhdGEoMCk7CiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKICAgICAgICAgICAgICAg
ICBDU1NJbWFnZVZhbHVlKiBpbWFnZSA9IHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPihwcmlt
aXRpdmVWYWx1ZSk7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcihDVVJTT1JfQVVU
Tyk7Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvckltYWdlKGltYWdlLT5pbWFnZShl
bGVtZW50LT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKSkpOworICAgICAgICAgICAgICAgIHN0eWxl
LT5zZXRDdXJzb3JEYXRhKGltYWdlLT5pbWFnZShlbGVtZW50LT5kb2N1bWVudCgpLT5kb2NMb2Fk
ZXIoKSkpOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc1ZhbHVl
TGlzdCgpKSB7CisgICAgICAgICAgICAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIC8vIGNv
bG9ycyB8fCBpbmhlcml0CkluZGV4OiBrc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjI1
OSkKKysrIGtzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0
aC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U1ZHQ3Vyc29yRWxlbWVudDo6U1ZHQ3Vyc29yRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCAqZG9jKQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2MpCkBA
IC00Miw4ICs0Miw4IEBAIFNWR0N1cnNvckVsZW1lbnQ6OlNWR0N1cnNvckVsZW1lbnQoY29uc3QK
ICAgICAsIENhY2hlZFJlc291cmNlQ2xpZW50KCkKICAgICAsIG1feChuZXcgU1ZHTGVuZ3RoKDAs
IExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCiAgICAgLCBtX3kobmV3IFNWR0xlbmd0aCgw
LCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1fY2FjaGVkSW1hZ2UoMCkK
IHsKLSAgICBtX2NhY2hlZEltYWdlID0gMDsKIH0KIAogU1ZHQ3Vyc29yRWxlbWVudDo6flNWR0N1
cnNvckVsZW1lbnQoKQpAQCAtNzksNiArNzksOCBAQCB2b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmliCiAgICAgfQogfQogCit9CisKIC8vIHZpbTp0cz00Om5vZXQKICNlbmRp
ZiAvLyBTVkdfU1VQUE9SVAogCkluZGV4OiBwYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAxNjI1OSkKKysrIHBhZ2UvRnJhbWVWaWV3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTEgQEAKICNpbmNsdWRlICJTZWxlY3Rp
b25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY3Nzc3R5bGVzZWxlY3Rvci5oIgogCisjaWYgU1ZH
X1NVUFBPUlQKKyNpbmNsdWRlICJTVkdDdXJzb3JFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHTGVu
Z3RoLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
RXZlbnROYW1lczsKQEAgLTY0MSwxMSArNjQ2LDIxIEBAIHN0YXRpYyBDdXJzb3Igc2VsZWN0Q3Vy
c29yKGNvbnN0IE1vdXNlRXYKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZSA/IG5v
ZGUtPnJlbmRlcmVyKCkgOiAwOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyID8g
cmVuZGVyZXItPnN0eWxlKCkgOiAwOwogCi0gICAgaWYgKHN0eWxlICYmIHN0eWxlLT5jdXJzb3JJ
bWFnZSgpICYmICFzdHlsZS0+Y3Vyc29ySW1hZ2UoKS0+aW1hZ2UoKS0+aXNOdWxsKCkpCi0gICAg
ICAgIGlmICghc3R5bGUtPmN1cnNvckltYWdlKCktPmlzRXJyb3JJbWFnZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIHN0eWxlLT5jdXJzb3JJbWFnZSgpLT5pbWFnZSgpOwotICAgICAgICBlbHNlIAot
ICAgICAgICAgICAgc3R5bGUgPSAwOyAvLyBGYWxsYmFjayB0byBDVVJTT1JfQVVUTworICAgIEN1
cnNvckRhdGEqIGN1cnNvckRhdGEgPSBzdHlsZSA/IHN0eWxlLT5jdXJzb3JEYXRhKCkgOiAwOwor
ICAgIHdoaWxlIChjdXJzb3JEYXRhKSB7CisgICAgICAgIGlmIChjdXJzb3JEYXRhLT5jdXJzb3JJ
bWFnZSkgeworICAgICAgICAgICAgaWYgKCFjdXJzb3JEYXRhLT5jdXJzb3JJbWFnZS0+aW1hZ2Uo
KS0+aXNOdWxsKCkgJiYgIWN1cnNvckRhdGEtPmN1cnNvckltYWdlLT5pc0Vycm9ySW1hZ2UoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gQ3Vyc29yKGN1cnNvckRhdGEtPmN1cnNvckltYWdlLT5p
bWFnZSgpLCBjdXJzb3JEYXRhLT5ob3RTcG90KTsgICAgICAgICAgICAgICAgCisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkt
PmdldEVsZW1lbnRCeUlkKGN1cnNvckRhdGEtPmN1cnNvckZyYWdtZW50SWQpOworICAgICAgICAg
ICAgU1ZHQ3Vyc29yRWxlbWVudCogY3Vyc29yRWxlbWVudCA9IGVsZW1lbnQtPmhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmN1cnNvclRhZykgPyBzdGF0aWNfY2FzdDxTVkdDdXJzb3JFbGVtZW50Kj4oZWxl
bWVudCkgOiAwOworICAgICAgICAgICAgaWYgKGN1cnNvckVsZW1lbnQgJiYgY3Vyc29yRWxlbWVu
dC0+Y2FjaGVkSW1hZ2UoKSAmJiAhY3Vyc29yRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2Uo
KS0+aXNOdWxsKCkgJiYgIWN1cnNvckVsZW1lbnQtPmNhY2hlZEltYWdlKCktPmlzRXJyb3JJbWFn
ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBDdXJzb3IoY3Vyc29yRWxlbWVudC0+Y2FjaGVk
SW1hZ2UoKS0+aW1hZ2UoKSwgSW50UG9pbnQoY3Vyc29yRWxlbWVudC0+eCgpLT52YWx1ZSgpLCBj
dXJzb3JFbGVtZW50LT55KCktPnZhbHVlKCkpKTsKKyAgICAgICAgfQorICAgICAgICBjdXJzb3JE
YXRhID0gY3Vyc29yRGF0YS0+bmV4dDsKKyAgICB9CisgICAgaWYgKGN1cnNvckRhdGEpCisgICAg
ICAgIHN0eWxlID0gMDsgLy8gRmFsbGJhY2sgdG8gQ1VSU09SX0FVVE8KIAogICAgIHN3aXRjaCAo
c3R5bGUgPyBzdHlsZS0+Y3Vyc29yKCkgOiBDVVJTT1JfQVVUTykgewogICAgICAgICBjYXNlIENV
UlNPUl9BVVRPOiB7CkluZGV4OiBwbGF0Zm9ybS9DdXJzb3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0
Zm9ybS9DdXJzb3IuaAkocmV2aXNpb24gMTYyNTkpCisrKyBwbGF0Zm9ybS9DdXJzb3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBDVVJTT1JfSAogCiAjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSAiSW50UG9pbnQuaCIKIAogI2lmIFBMQVRGT1JN
KFdJTikKIHR5cGVkZWYgc3RydWN0IEhJQ09OX18qIEhJQ09OOwpAQCAtNjksNyArNzAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgeyB9CiAKLSAgICAgICAgQ3Vyc29y
KEltYWdlKik7CisgICAgICAgIEN1cnNvcihJbWFnZSosIGNvbnN0IEludFBvaW50JiBob3RTcG90
ID0gSW50UG9pbnQoKSk7CiAgICAgICAgIEN1cnNvcihjb25zdCBDdXJzb3ImKTsKICAgICAgICAg
fkN1cnNvcigpOwogICAgICAgICBDdXJzb3ImIG9wZXJhdG9yPShjb25zdCBDdXJzb3ImKTsKSW5k
ZXg6IHBsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbWFj
L0N1cnNvck1hYy5tbQkocmV2aXNpb24gMTYyNTkpCisrKyBwbGF0Zm9ybS9tYWMvQ3Vyc29yTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNCArNDEsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogLy8gU2ltcGxlIE5TQ3Vyc29yIGNhbGxzIHNob3VsZG4ndCBuZWVkIHByb3RlY3Rpb24sCiAv
LyBidXQgY3JlYXRpbmcgYSBjdXJzb3Igd2l0aCBhIGJhZCBpbWFnZSBtaWdodCB0aHJvdy4KIAot
c3RhdGljIE5TQ3Vyc29yKiBjcmVhdGVDdXN0b21DdXJzb3IoSW1hZ2UqIGltYWdlKQorc3RhdGlj
IE5TQ3Vyc29yKiBjcmVhdGVDdXN0b21DdXJzb3IoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQb2lu
dCYgaG90U3BvdCkKIHsKICAgICAvLyBGSVhNRTogVGhlIGN1cnNvciB3b24ndCBhbmltYXRlLiAg
Tm90IHN1cmUgaWYgdGhhdCdzIGEgYmlnIGRlYWwuCiAgICAgTlNJbWFnZSogaW1nID0gaW1hZ2Ut
PmdldE5TSW1hZ2UoKTsKICAgICBpZiAoIWltZykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW05TQ3Vyc29yIGFsbG9jXSBp
bml0V2l0aEltYWdlOmltZyBob3RTcG90Ok5TWmVyb1BvaW50XTsKKyAgICByZXR1cm4gW1tOU0N1
cnNvciBhbGxvY10gaW5pdFdpdGhJbWFnZTppbWcgaG90U3BvdDpob3RTcG90XTsKICAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIHJldHVybiAwOwogfQpAQCAtNzQsOCArNzQsOCBA
QCBzdGF0aWMgTlNDdXJzb3IqIGxlYWtOYW1lZEN1cnNvcihjb25zdCBjCiAgICAgcmV0dXJuIDA7
CiB9CiAKLUN1cnNvcjo6Q3Vyc29yKEltYWdlKiBpbWFnZSkKLSAgICA6IG1faW1wbChIYXJkUmV0
YWluV2l0aE5TUmVsZWFzZShjcmVhdGVDdXN0b21DdXJzb3IoaW1hZ2UpKSkKK0N1cnNvcjo6Q3Vy
c29yKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCisgICAgOiBtX2ltcGwo
SGFyZFJldGFpbldpdGhOU1JlbGVhc2UoY3JlYXRlQ3VzdG9tQ3Vyc29yKGltYWdlLCBob3RTcG90
KSkpCiB7CiB9CiAKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gcmVuZGVyaW5nL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gMTYyNTkpCisrKyByZW5kZXJp
bmcvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDgsMTMgKzUwOCwxNSBAQCBi
b29sIFN0eWxlQ1NTM0luaGVyaXRlZERhdGE6OnNoYWRvd0RhdGFFCiB9CiAKIFN0eWxlSW5oZXJp
dGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKCkKLSAgICA6IGluZGVudChSZW5kZXJTdHlsZTo6
aW5pdGlhbFRleHRJbmRlbnQoKSksIGxpbmVfaGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGlu
ZUhlaWdodCgpKSwgCi0gICAgICBzdHlsZV9pbWFnZShSZW5kZXJTdHlsZTo6aW5pdGlhbExpc3RT
dHlsZUltYWdlKCkpLAotICAgICAgY3Vyc29yX2ltYWdlKDApLCBjb2xvcihSZW5kZXJTdHlsZTo6
aW5pdGlhbENvbG9yKCkpLCAKLSAgICAgIGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcoUmVuZGVy
U3R5bGU6OmluaXRpYWxIb3Jpem9udGFsQm9yZGVyU3BhY2luZygpKSwgCi0gICAgICB2ZXJ0aWNh
bF9ib3JkZXJfc3BhY2luZyhSZW5kZXJTdHlsZTo6aW5pdGlhbFZlcnRpY2FsQm9yZGVyU3BhY2lu
ZygpKSwKLSAgICAgIHdpZG93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbFdpZG93cygpKSwgb3JwaGFu
cyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9ycGhhbnMoKSksCi0gICAgICBwYWdlX2JyZWFrX2luc2lk
ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFBhZ2VCcmVhaygpKQorICAgIDogaW5kZW50KFJlbmRlclN0
eWxlOjppbml0aWFsVGV4dEluZGVudCgpKQorICAgICwgbGluZV9oZWlnaHQoUmVuZGVyU3R5bGU6
OmluaXRpYWxMaW5lSGVpZ2h0KCkpCisgICAgLCBzdHlsZV9pbWFnZShSZW5kZXJTdHlsZTo6aW5p
dGlhbExpc3RTdHlsZUltYWdlKCkpCisgICAgLCBjdXJzb3JfZGF0YSgwKQorICAgICwgY29sb3Io
UmVuZGVyU3R5bGU6OmluaXRpYWxDb2xvcigpKQorICAgICwgaG9yaXpvbnRhbF9ib3JkZXJfc3Bh
Y2luZyhSZW5kZXJTdHlsZTo6aW5pdGlhbEhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkpCisgICAg
LCB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyhSZW5kZXJTdHlsZTo6aW5pdGlhbFZlcnRpY2FsQm9y
ZGVyU3BhY2luZygpKQorICAgICwgd2lkb3dzKFJlbmRlclN0eWxlOjppbml0aWFsV2lkb3dzKCkp
LCBvcnBoYW5zKFJlbmRlclN0eWxlOjppbml0aWFsT3JwaGFucygpKQorICAgICwgcGFnZV9icmVh
a19pbnNpZGUoUmVuZGVyU3R5bGU6OmluaXRpYWxQYWdlQnJlYWsoKSkKIHsKIH0KIApAQCAtNTIy
LDE0ICs1MjQsMTkgQEAgU3R5bGVJbmhlcml0ZWREYXRhOjp+U3R5bGVJbmhlcml0ZWREYXRhKAog
ewogfQogCi1TdHlsZUluaGVyaXRlZERhdGE6OlN0eWxlSW5oZXJpdGVkRGF0YShjb25zdCBTdHls
ZUluaGVyaXRlZERhdGEmIG8gKQotICAgIDogU2hhcmVkPFN0eWxlSW5oZXJpdGVkRGF0YT4oKSwK
LSAgICAgIGluZGVudCggby5pbmRlbnQgKSwgbGluZV9oZWlnaHQoIG8ubGluZV9oZWlnaHQgKSwg
c3R5bGVfaW1hZ2UoIG8uc3R5bGVfaW1hZ2UgKSwKLSAgICAgIGN1cnNvcl9pbWFnZSggby5jdXJz
b3JfaW1hZ2UgKSwgZm9udCggby5mb250ICksCi0gICAgICBjb2xvciggby5jb2xvciApLAotICAg
ICAgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyggby5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5n
ICksCi0gICAgICB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyggby52ZXJ0aWNhbF9ib3JkZXJfc3Bh
Y2luZyApLAotICAgICAgd2lkb3dzKG8ud2lkb3dzKSwgb3JwaGFucyhvLm9ycGhhbnMpLCBwYWdl
X2JyZWFrX2luc2lkZShvLnBhZ2VfYnJlYWtfaW5zaWRlKQorU3R5bGVJbmhlcml0ZWREYXRhOjpT
dHlsZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvKQorICAgIDogU2hh
cmVkPFN0eWxlSW5oZXJpdGVkRGF0YT4oKQorICAgICwgaW5kZW50KG8uaW5kZW50KQorICAgICwg
bGluZV9oZWlnaHQoby5saW5lX2hlaWdodCkKKyAgICAsIHN0eWxlX2ltYWdlKG8uc3R5bGVfaW1h
Z2UpCisgICAgLCBjdXJzb3JfZGF0YShvLmN1cnNvcl9kYXRhKQorICAgICwgZm9udChvLmZvbnQp
CisgICAgLCBjb2xvcihvLmNvbG9yKQorICAgICwgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyhv
Lmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcpCisgICAgLCB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2lu
ZyhvLnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKQorICAgICwgd2lkb3dzKG8ud2lkb3dzKQorICAg
ICwgb3JwaGFucyhvLm9ycGhhbnMpCisgICAgLCBwYWdlX2JyZWFrX2luc2lkZShvLnBhZ2VfYnJl
YWtfaW5zaWRlKQogewogfQogCkBAIC01MzksNyArNTQ2LDcgQEAgYm9vbCBTdHlsZUluaGVyaXRl
ZERhdGE6Om9wZXJhdG9yPT0oY29ucwogICAgICAgICBpbmRlbnQgPT0gby5pbmRlbnQgJiYKICAg
ICAgICAgbGluZV9oZWlnaHQgPT0gby5saW5lX2hlaWdodCAmJgogICAgICAgICBzdHlsZV9pbWFn
ZSA9PSBvLnN0eWxlX2ltYWdlICYmCi0gICAgICAgIGN1cnNvcl9pbWFnZSA9PSBvLmN1cnNvcl9p
bWFnZSAmJgorICAgICAgICBjdXJzb3JfZGF0YSA9PSBvLmN1cnNvcl9kYXRhICYmCiAgICAgICAg
IGZvbnQgPT0gby5mb250ICYmCiAgICAgICAgIGNvbG9yID09IG8uY29sb3IgJiYKICAgICAgICAg
aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyA9PSBvLmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcg
JiYKQEAgLTgyNCw3ICs4MzEsNyBAQCBSZW5kZXJTdHlsZTo6RGlmZiBSZW5kZXJTdHlsZTo6ZGlm
ZiggY29uCiAgICAgICAgICEoaW5oZXJpdGVkLT5pbmRlbnQgPT0gb3RoZXItPmluaGVyaXRlZC0+
aW5kZW50KSB8fAogICAgICAgICAhKGluaGVyaXRlZC0+bGluZV9oZWlnaHQgPT0gb3RoZXItPmlu
aGVyaXRlZC0+bGluZV9oZWlnaHQpIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT5zdHlsZV9pbWFn
ZSA9PSBvdGhlci0+aW5oZXJpdGVkLT5zdHlsZV9pbWFnZSkgfHwKLSAgICAgICAgIShpbmhlcml0
ZWQtPmN1cnNvcl9pbWFnZSA9PSBvdGhlci0+aW5oZXJpdGVkLT5jdXJzb3JfaW1hZ2UpIHx8Cisg
ICAgICAgICEoaW5oZXJpdGVkLT5jdXJzb3JfZGF0YSA9PSBvdGhlci0+aW5oZXJpdGVkLT5jdXJz
b3JfZGF0YSkgfHwKICAgICAgICAgIShpbmhlcml0ZWQtPmZvbnQgPT0gb3RoZXItPmluaGVyaXRl
ZC0+Zm9udCkgfHwKICAgICAgICAgIShpbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVyX3NwYWNp
bmcgPT0gb3RoZXItPmluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZykgfHwKICAg
ICAgICAgIShpbmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nID09IG90aGVyLT5pbmhl
cml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKSB8fApJbmRleDogcmVuZGVyaW5nL1JlbmRl
clN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlclN0eWxlLmgJKHJldmlzaW9u
IDE2MjU5KQorKysgcmVuZGVyaW5nL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1
LDYgKzY1LDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBSZW5kZXJBcmVuYTsKIGNs
YXNzIFNoYWRvd1ZhbHVlOwogY2xhc3MgU3RyaW5nSW1wbDsKK3N0cnVjdCBDdXJzb3JEYXRhOwog
CiBlbnVtIFBzZXVkb1N0YXRlIHsgUHNldWRvVW5rbm93biwgUHNldWRvTm9uZSwgUHNldWRvQW55
TGluaywgUHNldWRvTGluaywgUHNldWRvVmlzaXRlZH07CiAKQEAgLTgyNCw3ICs4MjUsNyBAQCBw
dWJsaWM6CiAgICAgTGVuZ3RoIGxpbmVfaGVpZ2h0OwogCiAgICAgQ2FjaGVkSW1hZ2UgKnN0eWxl
X2ltYWdlOwotICAgIENhY2hlZEltYWdlICpjdXJzb3JfaW1hZ2U7CisgICAgQ3Vyc29yRGF0YSog
Y3Vyc29yX2RhdGE7CiAKICAgICBGb250IGZvbnQ7CiAgICAgQ29sb3IgY29sb3I7CkBAIC04Njgs
NiArODY5LDI0IEBAIGVudW0gRUN1cnNvciB7CiAgICAgQ1VSU09SX0NPTF9SRVNJWkUsIENVUlNP
Ul9ST1dfUkVTSVpFLCBDVVJTT1JfVEVYVCwgQ1VSU09SX1dBSVQsIENVUlNPUl9IRUxQCiB9Owog
CitzdHJ1Y3QgQ3Vyc29yRGF0YSB7CisgICAgQ3Vyc29yRGF0YSgpCisgICAgICAgIDogY3Vyc29y
SW1hZ2UoMCkKKyAgICAgICAgLCBuZXh0KDApCisgICAge30KKyAgICB+Q3Vyc29yRGF0YSgpCisg
ICAgeworICAgICAgICBkZWxldGUgbmV4dDsKKyAgICB9CisgICAgCisgICAgRUN1cnNvciBjdXJz
b3JUeXBlOworICAgIEludFBvaW50IGhvdFNwb3Q7IC8vIGZvciBDU1MzIHN1cHBvcnQKKyAgICBD
YWNoZWRJbWFnZSogY3Vyc29ySW1hZ2U7IC8vIHdlYWsgcG9pbnRlciwgdGhlIENTU1ZhbHVlSW1h
Z2UgdGFrZXMgY2FyZSBvZiBkZWxldGluZyBjdXJzb3JJbWFnZQorICAgIFN0cmluZyBjdXJzb3JG
cmFnbWVudElkOyAvLyBvbmx5IHVzZWQgZm9yIFNWR0N1cnNvckVsZW1lbnQsIGEgZGlyZWN0IHBv
aW50ZXIgd291bGQgZ2V0IHN0YWxlCisgICAgCisgICAgQ3Vyc29yRGF0YSogbmV4dDsKK307CisK
IGVudW0gQ29udGVudFR5cGUgewogICAgIENPTlRFTlRfTk9ORSwgQ09OVEVOVF9PQkpFQ1QsIENP
TlRFTlRfVEVYVCwgQ09OVEVOVF9DT1VOVEVSCiB9OwpAQCAtMTMxNCw3ICsxMzMzLDcgQEAgcHVi
bGljOgogCiAgICAgRUN1cnNvciBjdXJzb3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
Q3Vyc29yPihpbmhlcml0ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSk7IH0KICAgICAKLSAgICBDYWNo
ZWRJbWFnZSAqY3Vyc29ySW1hZ2UoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmN1cnNvcl9p
bWFnZTsgfQorICAgIEN1cnNvckRhdGEqIGN1cnNvckRhdGEoKSBjb25zdCB7IHJldHVybiBpbmhl
cml0ZWQtPmN1cnNvcl9kYXRhOyB9CiAKICAgICBzaG9ydCB3aWRvd3MoKSBjb25zdCB7IHJldHVy
biBpbmhlcml0ZWQtPndpZG93czsgfQogICAgIHNob3J0IG9ycGhhbnMoKSBjb25zdCB7IHJldHVy
biBpbmhlcml0ZWQtPm9ycGhhbnM7IH0KQEAgLTE1MjEsNyArMTU0MCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFBhZGRpbmdSaWdodChMZW5ndGggdikgIHsgIFNFVF9WQVIoc3Vycm91bmQscGFk
ZGluZy5yaWdodCx2KSB9CiAKICAgICB2b2lkIHNldEN1cnNvciggRUN1cnNvciBjICkgeyBpbmhl
cml0ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSA9IGM7IH0KLSAgICB2b2lkIHNldEN1cnNvckltYWdl
KCBDYWNoZWRJbWFnZSAqdiApIHsgU0VUX1ZBUihpbmhlcml0ZWQsY3Vyc29yX2ltYWdlLHYpIH0K
KyAgICB2b2lkIHNldEN1cnNvckRhdGEoQ3Vyc29yRGF0YSogYykgeyBTRVRfVkFSKGluaGVyaXRl
ZCwgY3Vyc29yX2RhdGEsIGMpIH0KIAogICAgIGJvb2wgZm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUo
KSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3do
aXRlOyB9CiAgICAgdm9pZCBzZXRGb3JjZUJhY2tncm91bmRzVG9XaGl0ZShib29sIGI9dHJ1ZSkg
eyBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlID0gYjsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10468</attachid>
            <date>2006-09-08 14:54:44 -0700</date>
            <delta_ts>2006-09-08 15:48:24 -0700</delta_ts>
            <desc>Improved patch</desc>
            <filename>6002-5.diff</filename>
            <type>text/plain</type>
            <size>34950</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjI2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDkgQEAKKzIwMDYtMDktMDggIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAxCisgICAgICAg
IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9tIGN1cnNvcnMKKyAgICAgICAg
Rml4IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTYw
MDIKKyAgICAgICAgV2ViS2l0IGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSBTVkcgPGN1cnNvcj4g
ZWxlbWVudAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzdmcgY3Vyc29yIGltYWdlcy4gQWxz
byBtYWtlIHN1cmUgaG90c3BvdAorICAgICAgICBzZXR0aW5ncyBhcmUgaGFuZGxlZCBjb3JyZWN0
bHkuIEZpbmFsbHkgaW1wbGVtZW50IGZhbGxiYWNrLgorCisgICAgICAgIFdBUk5JTkc6IE5PIFRF
U1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Q1NTQ3Vy
c29ySW1hZ2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjp+
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0N1cnNvckltYWdlVmFsdWUu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjpob3RzcG90
KToKKyAgICAgICAgKiBjc3MvY3NzcGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwOgorICAgICAgICAoU1ZHQ3Vyc29y
RWxlbWVudDo6U1ZHQ3Vyc29yRWxlbWVudCk6CisgICAgICAgIChTVkdDdXJzb3JFbGVtZW50Ojp+
U1ZHQ3Vyc29yRWxlbWVudCk6CisgICAgICAgIChTVkdDdXJzb3JFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAg
ICAgICAgKiBtYW51YWwtdGVzdHMvY3NzMy1jdXJzb3ItdGVzdDIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0Q3Vyc29y
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9DdXJzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
Q3Vyc29yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ3VzdG9tQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cnNvcjo6Q3Vyc29yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJbmhlcml0ZWREYXRhOjpTdHls
ZUluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJbmhlcml0ZWREYXRhOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpkaWZmKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphZGRDdXJzb3IpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmN1cnNvcnMp
OgorCiAyMDA2LTA5LTA3ICBTYW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gYW5kIFRpbSBILgpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2MjY5KQorKysgV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3ODQs
NiArMTc4NCw4IEBACiAJCUE4RkVGQjBCMDk3OUY0NzIwMDU4MzlGRCAvKiBSZW5kZXJGb3JlaWdu
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4RkVGQjA5MDk3OUY0NzIwMDU4MzlGRCAvKiBSZW5kZXJGb3JlaWduT2JqZWN0LmNwcCAqLzsg
fTsKIAkJQThGRUZCMzEwOTc5RjRGNjAwNTgzOUZEIC8qIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RkVG
QjJGMDk3OUY0RjYwMDU4MzlGRCAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgKi87IH07
CiAJCUE4RkVGQjMyMDk3OUY0RjYwMDU4MzlGRCAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThGRUZCMzAw
OTc5RjRGNjAwNTgzOUZEIC8qIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmggKi87IH07CisJCUFB
NzE1MzYwMEFCMEI5RUMwMEVFRTQ5QiAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNzE1MzVFMEFCMEI5RUMw
MEVFRTQ5QiAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCAqLzsgfTsKKwkJQUE3MTUzNjEwQUIw
QjlFQzAwRUVFNDlCIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNzE1MzVGMEFCMEI5RUMwMEVFRTQ5QiAvKiBD
U1NDdXJzb3JJbWFnZVZhbHVlLmggKi87IH07CiAJCUFBODRGQzg1MEFBMEZFMDgwMDc2OTlBRiAv
KiBKU1NWR01ldGFkYXRhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBQTg0RkM4MzBBQTBGRTA4MDA3Njk5QUYgLyogSlNTVkdNZXRhZGF0
YUVsZW1lbnQuY3BwICovOyB9OwogCQlBQTg0RkM4NjBBQTBGRTA4MDA3Njk5QUYgLyogSlNTVkdN
ZXRhZGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFBODRGQzg0MEFBMEZFMDgwMDc2OTlBRiAvKiBKU1NWR01ldGFkYXRhRWxlbWVudC5o
ICovOyB9OwogCQlBQTk4Qjg3RDBBQUEwMkY4MDAxQTQ0QzIgLyogUGF0aC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTk4Qjg3QzBBQUEwMkY4MDAx
QTQ0QzIgLyogUGF0aC5jcHAgKi87IH07CkBAIC00MDE3LDYgKzQwMTksOCBAQAogCQlBOEZFRkIw
OTA5NzlGNDcyMDA1ODM5RkQgLyogUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRm9yZWlnbk9iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RkVGQjJGMDk3OUY0RjYwMDU4MzlGRCAvKiBTVkdG
b3JlaWduT2JqZWN0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBOEZFRkIzMDA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBNzE1MzVFMEFCMEI5RUMw
MEVFRTQ5QiAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDU1NDdXJzb3JJbWFnZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQUE3MTUzNUYwQUIwQjlFQzAwRUVFNDlCIC8qIENTU0N1cnNvckltYWdl
VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0N1cnNvckltYWdl
VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUE4NEZDODMwQUEwRkUwODAw
NzY5OUFGIC8qIEpTU1ZHTWV0YWRhdGFFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1NWR01ldGFkYXRhRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUFBODRGQzg0MEFBMEZFMDgwMDc2OTlBRiAvKiBKU1NWR01ldGFkYXRh
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdNZXRhZGF0
YUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUE5OEI4N0MwQUFBMDJG
ODAwMUE0NEMyIC8qIFBhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjUyNiw2ICs2NTMw
LDggQEAKIAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQUE3MTUzNUUwQUIwQjlFQzAwRUVFNDlC
IC8qIENTU0N1cnNvckltYWdlVmFsdWUuY3BwICovLAorCQkJCUFBNzE1MzVGMEFCMEI5RUMwMEVF
RTQ5QiAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggKi8sCiAJCQkJQTgwRTZDREEwQTE5ODlDQTAw
N0ZCOEM1IC8qIENvdW50ZXIuaCAqLywKIAkJCQk5MzA3MDVDNzA5RTBDOTVGMDBCMTdGRTQgLyog
Q291bnRlci5pZGwgKi8sCiAJCQkJQTgwRTZDQkIwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0JvcmRl
ckltYWdlVmFsdWUuY3BwICovLApAQCAtNzg0Miw2ICs3ODQ4LDcgQEAKIAkJCQk4NURGMzQ0MDBB
QUZDMEVEMDBFNTlBRTMgLyogRE9NS2V5Ym9hcmRFdmVudFByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1N0UwQjI1MEFCMDQzNDYwMDM2RTQ0NyAvKiBET01Nb3VzZUV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NTdFMEIyQzBBQjA0M0ZDMDAzNkU0NDcgLyogRE9NTW91c2VFdmVudFBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUFBNzE1MzYxMEFCMEI5RUMwMEVFRTQ5QiAvKiBD
U1NDdXJzb3JJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTUyNkMzNzBBQjBBMTdF
MDAwMzAyRUEgLyogRE9NTm9kZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTUyNkMz
RTBBQjBBNzZGMDAwMzAyRUEgLyogRE9NTm9kZUl0ZXJhdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODU1MjZDRDIwQUIwQjdEOTAwMDMwMkVBIC8qIERPTVRyZWVXYWxrZXIuaCBpbiBI
ZWFkZXJzICovLApAQCAtODg1NCw2ICs4ODYxLDcgQEAKIAkJCQk4NUM3RjVFODBBQUZCQUZCMDA0
MDE0REQgLyogRE9NV2hlZWxFdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1RkYzMTVCMEFB
RkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODU3RTBCMjYwQUIwNDM0NjAwMzZFNDQ3IC8qIERPTU1vdXNlRXZlbnQubW0gaW4gU291cmNlcyAq
LywKKwkJCQlBQTcxNTM2MDBBQjBCOUVDMDBFRUU0OUIgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTUyNkMzODBBQjBBMTdFMDAwMzAyRUEgLyogRE9NTm9k
ZUl0ZXJhdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU1MjZDRDMwQUIwQjdEQTAwMDMwMkVB
IC8qIERPTVRyZWVXYWxrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CkluZGV4OiBXZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDE2MjY5KQor
KysgV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjA3LDU3ICs2MDcsOTAgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0
ZWRTdHlsZURlYwogICAgIGNhc2UgQ1NTX1BST1BfQ09VTlRFUl9SRVNFVDoKICAgICAgICAgLy8g
RklYTUU6IHVuaW1wbGVtZW50ZWQKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9D
VVJTT1I6Ci0gICAgICAgIGlmIChzdHlsZS0+Y3Vyc29ySW1hZ2UoKSkKLSAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmN1cnNvckltYWdlKCktPnVybCgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7CisgICAgY2FzZSBDU1NfUFJPUF9DVVJTT1I6IHsK
KyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gMDsKKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVl
ID0gMDsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDU1NDdXJzb3JJbWFnZVZhbHVlPiA+IGN1cnNv
cnMgPSBzdHlsZS0+Y3Vyc29ycygpOworICAgICAgICBpZiAoY3Vyc29ycy5zaXplKCkgPiAwKSB7
CisgICAgICAgICAgICBsaXN0ID0gbmV3IENTU1ZhbHVlTGlzdDsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7aSA8IGN1cnNvcnMuc2l6ZSgpOysraSkKKyAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKGN1cnNvcnNbaV0tPmltYWdlKG5vZGUt
PmRvY3VtZW50KCktPmRvY0xvYWRlcigpKS0+dXJsKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
VVJJKSk7CisgICAgICAgIH0KICAgICAgICAgc3dpdGNoIChzdHlsZS0+Y3Vyc29yKCkpIHsKICAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX0FVVE86Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOworICAgICAgICAgICAgICAgIHZhbHVlID0g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9DUk9TUzoKLSAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ1JPU1NIQUlSKTsKKyAgICAgICAgICAg
ICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NST1NTSEFJUik7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9ERUZBVUxUOgot
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ERUZB
VUxUKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX0RFRkFVTFQpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBD
VVJTT1JfUE9JTlRFUjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfUE9JTlRFUik7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9QT0lOVEVSKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX01PVkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX01PVkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTU9WRSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9FX1JFU0laRToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRV9SRVNJWkUpOworICAgICAgICAg
ICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRV9SRVNJWkUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfTkVfUkVTSVpF
OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9O
RV9SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfTkVfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgQ1VSU09SX05XX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfTldfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05XX1JFU0laRSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9OX1JFU0laRToKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTl9SRVNJWkUpOworICAg
ICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTl9SRVNJ
WkUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBDVVJTT1JfU0VfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TRV9SRVNJWkUpOworICAgICAgICAgICAgICAg
IHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0VfUkVTSVpFKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1NXX1JFU0laRToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1dfUkVT
SVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX1NXX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IENVUlNPUl9TX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfU19SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU19SRVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1dfUkVTSVpFKTsKKyAgICAgICAgICAg
ICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1dfUkVTSVpFKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0VXX1JFU0laRToK
LSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRVdf
UkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0VXX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIENVUlNPUl9OU19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX05TX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OU19SRVNJWkUpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfTkVTV19SRVNJWkU6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05FU1dfUkVTSVpFKTsK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05F
U1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VS
U09SX05XU0VfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9OV1NFX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OV1NFX1JFU0laRSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9DT0xfUkVTSVpFOgotICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DT0xfUkVTSVpFKTsKKyAg
ICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NPTF9S
RVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1Jf
Uk9XX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfUk9XX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9ST1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1RFWFQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RFWFQpOworICAgICAgICAgICAgICAgIHZhbHVl
ID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEVYVCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9XQUlUOgotICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9XQUlUKTsKKyAgICAgICAgICAgICAg
ICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1dBSVQpOworICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfSEVMUDoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSEVMUCk7CisgICAgICAg
ICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9IRUxQKTsKICAg
ICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIGlmIChsaXN0KSB7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQodmFsdWUpOwor
ICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KICAgICBjYXNlIENTU19QUk9QX0RJUkVD
VElPTjoKICAgICAgICAgc3dpdGNoIChzdHlsZS0+ZGlyZWN0aW9uKCkpIHsKICAgICAgICAgICAg
IGNhc2UgTFRSOgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzNSBAQAorLyoqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRE9NIGlt
cGxlbWVudGF0aW9uIGZvciBLREUuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg
VVNBLgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NTU0N1cnNvckltYWdlVmFsdWU6OkNT
U0N1cnNvckltYWdlVmFsdWUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IEludFBvaW50JiBwLCBT
dHlsZUJhc2UqIHN0eWxlKQorICAgIDogQ1NTSW1hZ2VWYWx1ZSh1cmwsIHN0eWxlKQorICAgICwg
bV9ob3RzcG90KHApCit7Cit9CisKK0NTU0N1cnNvckltYWdlVmFsdWU6On5DU1NDdXJzb3JJbWFn
ZVZhbHVlKCkKK3sKK30KK30KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRE9NIGlt
cGxlbWVudGF0aW9uIGZvciBLREUuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg
VVNBLgorICovCisKKyNpZm5kZWYgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZV9ICisjZGVmaW5lIENTU0N1
cnNvckltYWdlVmFsdWVfSAorCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJDU1NJ
bWFnZVZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZSA6IHB1YmxpYyBDU1NJbWFnZVZhbHVlCit7CitwdWJsaWM6CisgICAgQ1NTQ3Vyc29y
SW1hZ2VWYWx1ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgSW50UG9pbnQmLCBTdHlsZUJhc2Uq
KTsKKyAgICB2aXJ0dWFsIH5DU1NDdXJzb3JJbWFnZVZhbHVlKCk7CisKKyAgICBJbnRQb2ludCBo
b3RzcG90KCkgY29uc3QgeyByZXR1cm4gbV9ob3RzcG90OyB9CisKK3Byb3RlY3RlZDoKKyAgICBJ
bnRQb2ludCBtX2hvdHNwb3Q7Cit9OworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmCkluZGV4OiBX
ZWJDb3JlL2Nzcy9jc3NwYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc3Bh
cnNlci5jcHAJKHJldmlzaW9uIDE2MjY5KQorKysgV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgImNzc3BhcnNlci5oIgog
CiAjaW5jbHVkZSAiQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1cnNvcklt
YWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ2hh
cnNldFJ1bGUuaCIKICNpbmNsdWRlICJDU1NJbXBvcnRSdWxlLmgiCkBAIC00NCw2ICs0NSwxMiBA
QAogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lvbi5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaWYgU1ZHX1NVUFBPUlQKKyNpbmNsdWRlICJYTGlu
a05hbWVzLmgiCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdDdXJzb3JFbGVt
ZW50LmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKKyNlbmRpZgogI2luY2x1ZGUg
IkZvbnRGYW1pbHlWYWx1ZS5oIgogI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgogI2luY2x1ZGUgIktV
UkwuaCIKQEAgLTY5OCwyMSArNzA1LDUwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGlu
dCBwcm9wSWQsIGIKICAgICAgICAgLy8gWzx1cmk+LF0qICBbIGF1dG8gfCBjcm9zc2hhaXIgfCBk
ZWZhdWx0IHwgcG9pbnRlciB8IHByb2dyZXNzIHwgbW92ZSB8IGUtcmVzaXplIHwgbmUtcmVzaXpl
IHwKICAgICAgICAgLy8gbnctcmVzaXplIHwgbi1yZXNpemUgfCBzZS1yZXNpemUgfCBzdy1yZXNp
emUgfCBzLXJlc2l6ZSB8IHctcmVzaXplIHwgZXctcmVzaXplIHwgCiAgICAgICAgIC8vIG5zLXJl
c2l6ZSB8IG5lc3ctcmVzaXplIHwgbndzZS1yZXNpemUgfCBjb2wtcmVzaXplIHwgcm93LXJlc2l6
ZSB8IHRleHQgfCB3YWl0IHwgaGVscCBdIF0gfCBpbmhlcml0Ci0gICAgICAgIGlmICghc3RyaWN0
ICYmIGlkID09IENTU19WQUxfSEFORCkgeyAvLyBNU0lFIDUgY29tcGF0aWJpbGl0eSA6LwotICAg
ICAgICAgICAgaWQgPSBDU1NfVkFMX1BPSU5URVI7Ci0gICAgICAgICAgICB2YWxpZF9wcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKGlkID49IENTU19WQUxfQVVUTyAmJiBpZCA8
PSBDU1NfVkFMX0hFTFApCi0gICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkg
eworICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBuZXcgQ1NTVmFsdWVMaXN0OworICAgICAg
ICB3aGlsZSAodmFsdWUgJiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19V
UkkpIHsKICAgICAgICAgICAgIFN0cmluZyB1cmkgPSBwYXJzZVVSTChkb21TdHJpbmcodmFsdWUt
PnN0cmluZykpOworI2lmIFNWR19TVVBQT1JUCisgICAgICAgICAgICBpZiAodXJpLmZpbmQoIiMi
KSA9PSAwKSB7CisgICAgICAgICAgICAgICAgRWxlbWVudCogZSA9IGRvY3VtZW50KCktPmdldEVs
ZW1lbnRCeUlkKHVyaS5kZXByZWNhdGVkU3RyaW5nKCkubWlkKDEpKTsKKyAgICAgICAgICAgICAg
ICBpZiAoZSAmJiBlLT5oYXNUYWdOYW1lKFdlYkNvcmU6OlNWR05hbWVzOjpjdXJzb3JUYWcpKSB7
CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB1cmwgPSBlLT5nZXRBdHRyaWJ1dGUoWExpbmtO
YW1lczo6aHJlZkF0dHIpOworICAgICAgICAgICAgICAgICAgICBpbnQgeCA9IGludChzdGF0aWNf
Y2FzdDxTVkdDdXJzb3JFbGVtZW50Kj4oZSktPnhCYXNlVmFsdWUoKS0+dmFsdWUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGludCB5ID0gaW50KHN0YXRpY19jYXN0PFNWR0N1cnNvckVsZW1lbnQq
PihlKS0+eUJhc2VWYWx1ZSgpLT52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKG5ldyBDU1NDdXJzb3JJbWFnZVZhbHVlKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU3RyaW5nKEtVUkwoc3R5bGVFbGVtZW50LT5iYXNlVVJMKCkuZGVwcmVjYXRlZFN0
cmluZygpLCB1cmwuZGVwcmVjYXRlZFN0cmluZygpKS51cmwoKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbnRQb2ludCh4LCB5KSwgc3R5bGVFbGVtZW50KSk7IH0KKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAgICAgIH0g
ZWxzZQorI2VuZGlmCiAgICAgICAgICAgICBpZiAoIXVyaS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgICAgICBwYXJzZWRWYWx1ZSA9IG5ldyBDU1NJbWFnZVZhbHVlKFN0cmluZyhLVVJMKHN0eWxl
RWxlbWVudC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdXJpLmRlcHJlY2F0ZWRTdHJp
bmcoKSkudXJsKCkpLCBzdHlsZUVsZW1lbnQpOwotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3
ZSBkb24ndCBzdXBwb3J0IGZhbGxiYWNrIGN1cnNvcnMgeWV0LCBidXQgaWdub3JpbmcgdGhlIHJl
bWFpbmluZyB2YWx1ZXMKLSAgICAgICAgICAgICAgICAvLyB3aWxsIGF0IGxlYXN0IGxldCBjb21w
bGlhbnQgZGVjbGFyYXRpb25zIHBhcnNlLgotICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5KHBy
b3BJZCwgcGFyc2VkVmFsdWUsIGltcG9ydGFudCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NDdXJzb3JJbWFnZVZhbHVl
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoS1VSTChzdHlsZUVsZW1lbnQt
PmJhc2VVUkwoKS5kZXByZWNhdGVkU3RyaW5nKCksIHVyaS5kZXByZWNhdGVkU3RyaW5nKCkpLnVy
bCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQoKSwgc3R5bGVFbGVt
ZW50KSk7CisgICAgICAgICAgICAgICAgLy8gQ1NTMzogc2tpcCBob3RzcG90IGZvciBub3cKKyAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgICAg
IHdoaWxlICh2YWx1ZSAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUikKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVMaXN0LT5uZXh0KCk7IC8vIGNv
bW1hCiAgICAgICAgIH0KKyAgICAgICAgaWYgKGxpc3QtPmxlbmd0aCgpKSB7CisgICAgICAgICAg
ICBwYXJzZWRWYWx1ZSA9IGxpc3Q7CisgICAgICAgICAgICBpZiAoIXZhbHVlKSB7IC8vIG5vIHZh
bHVlIGFmdGVyIHVybCBsaXN0IChNU0lFIDUgY29tcGF0aWJpbGl0eSkKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIXN0cmljdCAmJiB2YWx1ZS0+aWQgPT0gQ1NTX1ZBTF9IQU5EKSAvLyBNU0lFIDUg
Y29tcGF0aWJpbGl0eSA6LworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9QT0lOVEVSKSk7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1
ZS0+aWQgPj0gQ1NTX1ZBTF9BVVRPICYmIHZhbHVlLT5pZCA8PSBDU1NfVkFMX0hFTFApCisgICAg
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZS0+aWQp
KTsKKyAgICAgICAgICAgIHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGVsZXRlIGxpc3Q7CisgICAgICAg
IGlmICghc3RyaWN0ICYmIHZhbHVlLT5pZCA9PSBDU1NfVkFMX0hBTkQpIHsgLy8gTVNJRSA1IGNv
bXBhdGliaWxpdHkgOi8KKyAgICAgICAgICAgIGlkID0gQ1NTX1ZBTF9QT0lOVEVSOworICAgICAg
ICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS0+
aWQgPj0gQ1NTX1ZBTF9BVVRPICYmIHZhbHVlLT5pZCA8PSBDU1NfVkFMX0hFTFApCisgICAgICAg
ICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug
Q1NTX1BST1BfQkFDS0dST1VORF9BVFRBQ0hNRU5UOgpJbmRleDogV2ViQ29yZS9jc3MvY3Nzc3R5
bGVzZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rv
ci5jcHAJKHJldmlzaW9uIDE2MjY5KQorKysgV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjc3NzdHlsZXNl
bGVjdG9yLmgiCiAKICNpbmNsdWRlICJDU1NCb3JkZXJJbWFnZVZhbHVlLmgiCisjaW5jbHVkZSAi
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNs
dWRlICJDU1NJbXBvcnRSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTTWVkaWFSdWxlLmgiCkBAIC0yMzc2
LDIzICsyMzc3LDMzIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQK
ICAgICBjYXNlIENTU19QUk9QX0NVUlNPUjoKICAgICAgICAgaWYgKGlzSW5oZXJpdCkgewogICAg
ICAgICAgICAgc3R5bGUtPnNldEN1cnNvcihwYXJlbnRTdHlsZS0+Y3Vyc29yKCkpOwotICAgICAg
ICAgICAgc3R5bGUtPnNldEN1cnNvckltYWdlKHBhcmVudFN0eWxlLT5jdXJzb3JJbWFnZSgpKTsK
KyAgICAgICAgICAgIHN0eWxlLT5jdXJzb3JzKCkgPSBwYXJlbnRTdHlsZS0+Y3Vyc29ycygpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc0luaXRpYWwpIHsK
ICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxDdXJzb3Io
KSk7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29ySW1hZ2UoMCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7CisgICAgICAg
IGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeworICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBs
aXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworICAgICAgICAgICAgaW50
IGxlbiA9IGxpc3QtPmxlbmd0aCgpOworICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcihDVVJT
T1JfQVVUTyk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7Cisg
ICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtKGkpOworICAgICAgICAg
ICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICAgICAgaW50IHR5cGUgPSBw
cmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOworICAgICAgICAgICAgICAgIGlmICh0eXBl
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7CisgICAgICAgICAgICAgICAgICAgIENT
U0N1cnNvckltYWdlVmFsdWUqIGltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1
ZSo+KHByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgc3R5bGUtPmFkZEN1cnNv
cihpbWFnZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfSURFTlQpCisgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3Io
KEVDdXJzb3IpKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpIC0gQ1NTX1ZBTF9BVVRPKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUpIHsKICAgICAg
ICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKICAgICAg
ICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpIHsKICAgICAg
ICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKChFQ3Vyc29yKShwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSAtIENTU19WQUxfQVVUTykpOwotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJz
b3JJbWFnZSgwKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1VSSSkgewotICAgICAgICAgICAgICAgIENTU0ltYWdlVmFsdWUqIGltYWdlID0g
c3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KHByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgICAg
ICAgICBzdHlsZS0+c2V0Q3Vyc29yKENVUlNPUl9BVVRPKTsKLSAgICAgICAgICAgICAgICBzdHls
ZS0+c2V0Q3Vyc29ySW1hZ2UoaW1hZ2UtPmltYWdlKGVsZW1lbnQtPmRvY3VtZW50KCktPmRvY0xv
YWRlcigpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkocmV2aXNpb24gMTYyNjkpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjUsOSArMjUsNyBAQAogI2luY2x1ZGUgIlNWR0N1cnNvckVsZW1lbnQuaCIKIAogI2luY2x1
ZGUgIkF0dHIuaCIKLSNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCi0jaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNs
dWRlICJTVkdIZWxwZXIuaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKQEAgLTM5LDE3ICszNywx
MyBAQCBTVkdDdXJzb3JFbGVtZW50OjpTVkdDdXJzb3JFbGVtZW50KGNvbnN0CiAgICAgLCBTVkdU
ZXN0cygpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAgICAsIFNWR1VS
SVJlZmVyZW5jZSgpCi0gICAgLCBDYWNoZWRSZXNvdXJjZUNsaWVudCgpCiAgICAgLCBtX3gobmV3
IFNWR0xlbmd0aCgwLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQogICAgICwgbV95KG5l
dyBTVkdMZW5ndGgoMCwgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCiB7Ci0gICAgbV9j
YWNoZWRJbWFnZSA9IDA7CiB9CiAKIFNWR0N1cnNvckVsZW1lbnQ6On5TVkdDdXJzb3JFbGVtZW50
KCkKIHsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgbV9jYWNoZWRJbWFnZS0+ZGVy
ZWYodGhpcyk7CiB9CiAKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0N1cnNvckVs
ZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIu
bG9jYWxOYW1lKCksIG1feC5nZXQoKSkKQEAgLTY0LDE2ICs1OCwxMiBAQCB2b2lkIFNWR0N1cnNv
ckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFs
dWVBc1N0cmluZyh2YWx1ZS5pbXBsKCkpOwogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGlmKFNW
R1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkgcmV0dXJuOwotICAgICAgICBpZihT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkg
cmV0dXJuOwotICAgICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShhdHRyKSkgewotICAgICAgICAgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCi0gICAgICAgICAgICAg
ICAgbV9jYWNoZWRJbWFnZS0+ZGVyZWYodGhpcyk7Ci0gICAgICAgICAgICBtX2NhY2hlZEltYWdl
ID0gb3duZXJEb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdEltYWdlKGhyZWZCYXNlVmFs
dWUoKSk7Ci0gICAgICAgICAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgICAgICAgICBt
X2NhY2hlZEltYWdlLT5yZWYodGhpcyk7CisgICAgICAgIGlmIChTVkdUZXN0czo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoYXR0cikpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAogICAg
ICAgICBTVkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKICAgICB9CkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCShyZXZpc2lvbiAxNjI2OSkKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAs
MTcgKzMwLDE1IEBACiAjaW5jbHVkZSAiU1ZHVGVzdHMuaCIKICNpbmNsdWRlICJTVkdVUklSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCi0jaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUKIHsKICAg
ICBjbGFzcyBTVkdMZW5ndGg7CiAKICAgICBjbGFzcyBTVkdDdXJzb3JFbGVtZW50IDogcHVibGlj
IFNWR0VsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZH
VGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBTVkdVUklSZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR1Rlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR1VSSVJlZmVyZW5jZQogICAgIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0N1
cnNvckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CkBAIC01MSwxNSAr
NDksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgLy8gJ1NWR0N1cnNvckVsZW1lbnQn
IGZ1bmN0aW9ucwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFw
cGVkQXR0cmlidXRlICphdHRyKTsKIAotICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlOyB9Ci0KICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgsIHgpCiAgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVu
Z3RoPiwgWSwgeSkKLSAgICAgICAgQ2FjaGVkSW1hZ2UgKm1fY2FjaGVkSW1hZ2U7CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9tYW51YWwtdGVzdHMvY3Nz
My1jdXJzb3ItdGVzdDIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hbnVhbC10ZXN0cy9j
c3MzLWN1cnNvci10ZXN0Mi5odG1sCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYW51YWwtdGVz
dHMvY3NzMy1jdXJzb3ItdGVzdDIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAor
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIgorICAgImh0
dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiPgorPGh0bWw+Cis8aGVhZD48dGl0
bGU+Q3VzdG9tIGN1cnNvciB0ZXN0czwvdGl0bGU+PC9oZWFkPgorPGJvZHk+Cis8cD48YSBocmVm
PSJodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTg5OTEiPkJ1
ZyAuOTkxPC9hPjogUkVHUkVTU0lPTjogbWlzc2luZyBvciBicm9rZW4gQ1NTIGN1c3RvbSBjdXJz
b3JzIGFyZSBkaXNwbGF5ZWQgYXMgYSBtaXNzaW5nIGltYWdlIGljb24uPC9wPgorPHA+TW92ZSB0
aGUgY3Vyc29yIG92ZXIgdGhlIGJsdWUgYm94IC0gaXQgc2hvdWxkIG5vdCB0dXJuIGludG8gYSBt
aXNzaW5nIGltYWdlIGljb24sIGFuZCBzaG91bGQgdHVybiBpbnRvIGFuIEktYmVhbSBvdmVyIHRl
eHQuPC9wPgorCis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBweDtoZWlnaHQ6NTBweDtiYWNrZ3JvdW5k
LWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChub25leGlzdGVudC5wbmcpLCBhdXRvOyI+PHNw
YW4gc3R5bGU9ImN1cnNvcjp1cmwobm9uZXhpc3RlbnQucG5nKSwgYXV0bzsiPnNvbWUgdGV4dDwv
c3Bhbj48L2Rpdj4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB4O2hlaWdodDo1MHB4O2JhY2tncm91
bmQtY29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyk7Ij48L2Rpdj4K
KworPGhyPgorPHA+PGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3df
YnVnLmNnaT9pZD02MDAxIj5CdWcgNjAwMTwvYT46IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFs
bGJhY2sgY3VzdG9tIGN1cnNvcnM8L3A+Cis8cD48YSBocmVmPSJodHRwOi8vYnVnemlsbGEub3Bl
bmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTkwMTMiPkJ1ZyA5MDEzPC9hPjogTGV0IGNvcnJl
Y3QgQ1NTIGN1c3RvbSBjdXJzb3IgZGVjbGFyYXRpb25zIHBhcnNlPC9wPgorPHA+SW4gZWFjaCBv
ZiB0aGUgYmx1ZSBib3hlcyBiZWxvdywgdGhlIGN1cnNvciBzaG91bGQgYmVjb21lIGEgaGVscCBj
dXJzb3IgKHF1ZXN0aW9uIG1hcmspLjwvcD4KKzx0YWJsZT48dHI+CisgPHRkPjxkaXYgc3R5bGU9
IndpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vy
c29yOnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKSwgdGV4dDsiPjwvZGl2PjwvdGQ+IDwh
LS0gVmFsaWQsIG5vIGZhbGxiYWNrIG5lZWRlZCAtLT4KKyA8dGQ+PGRpdiBzdHlsZT0nd2lkdGg6
MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJs
KHJlc291cmNlcy9oZWxwQ3Vyc29yLnRpZmYpOyc+PC9kaXY+PC90ZD4gPCEtLSBJbnZhbGlkLCBi
dXQgYWxsb3dlZCBieSBXaW5JRSAtLT4KKyA8dGQ+PGRpdiBzdHlsZT0nd2lkdGg6MTAwcHg7aGVp
Z2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKG5vbmV4aXN0
ZW50LnBuZyksIGhlbHA7Jz48L2Rpdj48L3RkPgorIDx0ZD48ZGl2IHN0eWxlPSd3aWR0aDoxMDBw
eDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwobm9u
ZXhpc3RlbnQucG5nKSwgdXJsKGN1c3RvbS1jdXJzb3JzLmh0bWwpLCB1cmwodW5rbm93bi1zY2hl
bWU6Y3VzdG9tLWN1cnNvcnMuaHRtbCksIHVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKSwg
dGV4dDsnPjwvZGl2PjwvdGQ+CisgPHRkPjxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDox
MDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChub25leGlzdGVudC5w
bmcpLCB1cmwoInJlc291cmNlcy9oZWxwQ3Vyc29yLnRpZmYiKSwgdGV4dDsnPjwvZGl2PjwvdGQ+
CisgPHRkPjxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNv
bG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKSAxIDEs
IHRleHQ7Jz48L2Rpdj48L3RkPiA8IS0tIENTUzMgaG90IHNwb3QgLSB2YWxpZCwgbm8gZmFsbGJh
Y2sgbmVlZGVkIC0tPgorPC90cj4KKzwvdGFibGU+CisKKzxwPjwvcD4KKzxwPjxzcGFuIHN0eWxl
PSdiYWNrZ3JvdW5kLWNvbG9yOmdyYXk7IGN1cnNvcjp1cmwobm9uZXhpc3RlbnQucG5nKSwgdXJs
KCJyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmIik7Jz5TaG91bGQgc2hvdyBhbiBJLWJlYW0gY3Vy
c29yLjwvc3Bhbj48L3A+IDwhLS0gQW4gaW52YWxpZCBkZWNsYXJhdGlvbiwgZXZlbiBieSBXaW5J
RSBzdGFuZGFyZHMgLS0+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2
aXNpb24gMTYyNjkpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjQxLDExICs2NDEsMTkgQEAgc3RhdGljIEN1cnNvciBzZWxlY3RDdXJzb3IoY29uc3Qg
TW91c2VFdgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlID8gbm9kZS0+cmVuZGVy
ZXIoKSA6IDA7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIgPyByZW5kZXJlci0+
c3R5bGUoKSA6IDA7CiAKLSAgICBpZiAoc3R5bGUgJiYgc3R5bGUtPmN1cnNvckltYWdlKCkgJiYg
IXN0eWxlLT5jdXJzb3JJbWFnZSgpLT5pbWFnZSgpLT5pc051bGwoKSkKLSAgICAgICAgaWYgKCFz
dHlsZS0+Y3Vyc29ySW1hZ2UoKS0+aXNFcnJvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4g
c3R5bGUtPmN1cnNvckltYWdlKCktPmltYWdlKCk7Ci0gICAgICAgIGVsc2UgCi0gICAgICAgICAg
ICBzdHlsZSA9IDA7IC8vIEZhbGxiYWNrIHRvIENVUlNPUl9BVVRPCisgICAgaWYgKHN0eWxlICYm
IHN0eWxlLT5jdXJzb3JzKCkpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDU1NDdXJzb3JJbWFn
ZVZhbHVlPiA+IGN1cnNvcnMgPSBzdHlsZS0+Y3Vyc29ycygpOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgY3Vyc29ycy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgQ2FjaGVk
SW1hZ2UqIGNpbWFnZSA9IGN1cnNvcnNbaV0tPmltYWdlKG5vZGUtPmRvY3VtZW50KCktPmRvY0xv
YWRlcigpKTsKKyAgICAgICAgICAgIGlmICghY2ltYWdlKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgaWYgKGNpbWFnZS0+aW1hZ2UoKS0+aXNOdWxsKCkpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIWNpbWFnZS0+aXNFcnJvckltYWdlKCkp
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ3Vyc29yKGNpbWFnZS0+aW1hZ2UoKSwgY3Vyc29y
c1tpXS0+aG90c3BvdCgpKTsKK30KKyAgICAgICAgfQorICAgIH0KIAogICAgIHN3aXRjaCAoc3R5
bGUgPyBzdHlsZS0+Y3Vyc29yKCkgOiBDVVJTT1JfQVVUTykgewogICAgICAgICBjYXNlIENVUlNP
Ul9BVVRPOiB7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmgJKHJldmlzaW9uIDE2MjY5KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9DdXJzb3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOCBAQCBjbGFzcyBO
U0N1cnNvcjsKICNlbmRpZgogI2VuZGlmCiAKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBJbWFnZTsKQEAgLTY5LDcgKzcxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgICAgIHsgfQogCi0gICAgICAgIEN1cnNvcihJ
bWFnZSopOworICAgICAgICBDdXJzb3IoSW1hZ2UqLCBJbnRQb2ludCBob3RzcG90ID0gSW50UG9p
bnQoKSk7CiAgICAgICAgIEN1cnNvcihjb25zdCBDdXJzb3ImKTsKICAgICAgICAgfkN1cnNvcigp
OwogICAgICAgICBDdXJzb3ImIG9wZXJhdG9yPShjb25zdCBDdXJzb3ImKTsKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vbWFjL0N1cnNvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL21hYy9DdXJzb3JNYWMubW0JKHJldmlzaW9uIDE2MjY5KQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvQ3Vyc29yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNCArNDEsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogLy8gU2ltcGxlIE5TQ3Vyc29yIGNhbGxzIHNob3VsZG4ndCBuZWVk
IHByb3RlY3Rpb24sCiAvLyBidXQgY3JlYXRpbmcgYSBjdXJzb3Igd2l0aCBhIGJhZCBpbWFnZSBt
aWdodCB0aHJvdy4KIAotc3RhdGljIE5TQ3Vyc29yKiBjcmVhdGVDdXN0b21DdXJzb3IoSW1hZ2Uq
IGltYWdlKQorc3RhdGljIE5TQ3Vyc29yKiBjcmVhdGVDdXN0b21DdXJzb3IoSW1hZ2UqIGltYWdl
LCBJbnRQb2ludCBob3RzcG90KQogewogICAgIC8vIEZJWE1FOiBUaGUgY3Vyc29yIHdvbid0IGFu
aW1hdGUuICBOb3Qgc3VyZSBpZiB0aGF0J3MgYSBiaWcgZGVhbC4KICAgICBOU0ltYWdlKiBpbWcg
PSBpbWFnZS0+Z2V0TlNJbWFnZSgpOwogICAgIGlmICghaW1nKQogICAgICAgICByZXR1cm4gMDsK
ICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbTlNDdXJzb3Ig
YWxsb2NdIGluaXRXaXRoSW1hZ2U6aW1nIGhvdFNwb3Q6TlNaZXJvUG9pbnRdOworICAgIHJldHVy
biBbW05TQ3Vyc29yIGFsbG9jXSBpbml0V2l0aEltYWdlOmltZyBob3RTcG90OmhvdHNwb3RdOwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC03NCw4
ICs3NCw4IEBAIHN0YXRpYyBOU0N1cnNvciogbGVha05hbWVkQ3Vyc29yKGNvbnN0IGMKICAgICBy
ZXR1cm4gMDsKIH0KIAotQ3Vyc29yOjpDdXJzb3IoSW1hZ2UqIGltYWdlKQotICAgIDogbV9pbXBs
KEhhcmRSZXRhaW5XaXRoTlNSZWxlYXNlKGNyZWF0ZUN1c3RvbUN1cnNvcihpbWFnZSkpKQorQ3Vy
c29yOjpDdXJzb3IoSW1hZ2UqIGltYWdlLCBJbnRQb2ludCBob3RzcG90KQorICAgIDogbV9pbXBs
KEhhcmRSZXRhaW5XaXRoTlNSZWxlYXNlKGNyZWF0ZUN1c3RvbUN1cnNvcihpbWFnZSwgaG90c3Bv
dCkpKQogewogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTdHlsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAx
NjI2OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTEwLDcgKzUxMCw3IEBAIGJvb2wgU3R5bGVDU1MzSW5oZXJpdGVkRGF0YTo6c2hhZG93
RGF0YUUKIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKCkKICAgICA6IGlu
ZGVudChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRJbmRlbnQoKSksIGxpbmVfaGVpZ2h0KFJlbmRl
clN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKSwgCiAgICAgICBzdHlsZV9pbWFnZShSZW5kZXJT
dHlsZTo6aW5pdGlhbExpc3RTdHlsZUltYWdlKCkpLAotICAgICAgY3Vyc29yX2ltYWdlKDApLCBj
b2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbENvbG9yKCkpLCAKKyAgICAgIGN1cnNvckluZm8oMCks
IGNvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsQ29sb3IoKSksIAogICAgICAgaG9yaXpvbnRhbF9i
b3JkZXJfc3BhY2luZyhSZW5kZXJTdHlsZTo6aW5pdGlhbEhvcml6b250YWxCb3JkZXJTcGFjaW5n
KCkpLCAKICAgICAgIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKFJlbmRlclN0eWxlOjppbml0aWFs
VmVydGljYWxCb3JkZXJTcGFjaW5nKCkpLAogICAgICAgd2lkb3dzKFJlbmRlclN0eWxlOjppbml0
aWFsV2lkb3dzKCkpLCBvcnBoYW5zKFJlbmRlclN0eWxlOjppbml0aWFsT3JwaGFucygpKSwKQEAg
LTUyNSw3ICs1MjUsNyBAQCBTdHlsZUluaGVyaXRlZERhdGE6On5TdHlsZUluaGVyaXRlZERhdGEo
CiBTdHlsZUluaGVyaXRlZERhdGE6OlN0eWxlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZUluaGVy
aXRlZERhdGEmIG8gKQogICAgIDogU2hhcmVkPFN0eWxlSW5oZXJpdGVkRGF0YT4oKSwKICAgICAg
IGluZGVudCggby5pbmRlbnQgKSwgbGluZV9oZWlnaHQoIG8ubGluZV9oZWlnaHQgKSwgc3R5bGVf
aW1hZ2UoIG8uc3R5bGVfaW1hZ2UgKSwKLSAgICAgIGN1cnNvcl9pbWFnZSggby5jdXJzb3JfaW1h
Z2UgKSwgZm9udCggby5mb250ICksCisgICAgICBjdXJzb3JJbmZvKCBvLmN1cnNvckluZm8gKSwg
Zm9udCggby5mb250ICksCiAgICAgICBjb2xvciggby5jb2xvciApLAogICAgICAgaG9yaXpvbnRh
bF9ib3JkZXJfc3BhY2luZyggby5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nICksCiAgICAgICB2
ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyggby52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyApLApAQCAt
NTM5LDcgKzUzOSw3IEBAIGJvb2wgU3R5bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnMK
ICAgICAgICAgaW5kZW50ID09IG8uaW5kZW50ICYmCiAgICAgICAgIGxpbmVfaGVpZ2h0ID09IG8u
bGluZV9oZWlnaHQgJiYKICAgICAgICAgc3R5bGVfaW1hZ2UgPT0gby5zdHlsZV9pbWFnZSAmJgot
ICAgICAgICBjdXJzb3JfaW1hZ2UgPT0gby5jdXJzb3JfaW1hZ2UgJiYKKyAgICAgICAgY3Vyc29y
SW5mbyA9PSBvLmN1cnNvckluZm8gJiYKICAgICAgICAgZm9udCA9PSBvLmZvbnQgJiYKICAgICAg
ICAgY29sb3IgPT0gby5jb2xvciAmJgogICAgICAgICBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5n
ID09IG8uaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyAmJgpAQCAtODI0LDcgKzgyNCw3IEBAIFJl
bmRlclN0eWxlOjpEaWZmIFJlbmRlclN0eWxlOjpkaWZmKCBjb24KICAgICAgICAgIShpbmhlcml0
ZWQtPmluZGVudCA9PSBvdGhlci0+aW5oZXJpdGVkLT5pbmRlbnQpIHx8CiAgICAgICAgICEoaW5o
ZXJpdGVkLT5saW5lX2hlaWdodCA9PSBvdGhlci0+aW5oZXJpdGVkLT5saW5lX2hlaWdodCkgfHwK
ICAgICAgICAgIShpbmhlcml0ZWQtPnN0eWxlX2ltYWdlID09IG90aGVyLT5pbmhlcml0ZWQtPnN0
eWxlX2ltYWdlKSB8fAotICAgICAgICAhKGluaGVyaXRlZC0+Y3Vyc29yX2ltYWdlID09IG90aGVy
LT5pbmhlcml0ZWQtPmN1cnNvcl9pbWFnZSkgfHwKKyAgICAgICAgIShpbmhlcml0ZWQtPmN1cnNv
ckluZm8gPT0gb3RoZXItPmluaGVyaXRlZC0+Y3Vyc29ySW5mbykgfHwKICAgICAgICAgIShpbmhl
cml0ZWQtPmZvbnQgPT0gb3RoZXItPmluaGVyaXRlZC0+Zm9udCkgfHwKICAgICAgICAgIShpbmhl
cml0ZWQtPmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcgPT0gb3RoZXItPmluaGVyaXRlZC0+aG9y
aXpvbnRhbF9ib3JkZXJfc3BhY2luZykgfHwKICAgICAgICAgIShpbmhlcml0ZWQtPnZlcnRpY2Fs
X2JvcmRlcl9zcGFjaW5nID09IG90aGVyLT5pbmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFj
aW5nKSB8fApAQCAtOTgzLDYgKzk4MywxMSBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDbGlwKCBM
ZW5ndGggdG9wLCBMCiAgICAgZGF0YS0+Y2xpcC5sZWZ0ID0gbGVmdDsKIH0KIAordm9pZCBSZW5k
ZXJTdHlsZTo6YWRkQ3Vyc29yKFBhc3NSZWZQdHI8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4gdikKK3sK
KyAgICBpbmhlcml0ZWQuYWNjZXNzKCktPmN1cnNvckluZm8uYXBwZW5kKHYpOworfQorCiBib29s
IFJlbmRlclN0eWxlOjpjb250ZW50RGF0YUVxdWl2YWxlbnQoY29uc3QgUmVuZGVyU3R5bGUqIG90
aGVyU3R5bGUpIGNvbnN0CiB7CiAgICAgQ29udGVudERhdGEqIGMxID0gY29udGVudDsKSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMTYyNjkpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAgKi8K
IAogI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgog
I2luY2x1ZGUgIkRhdGFSZWYuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NUeXBlcy5oIgpAQCAtODI0LDcgKzgyNSw3IEBAIHB1YmxpYzoKICAgICBMZW5ndGggbGluZV9o
ZWlnaHQ7CiAKICAgICBDYWNoZWRJbWFnZSAqc3R5bGVfaW1hZ2U7Ci0gICAgQ2FjaGVkSW1hZ2Ug
KmN1cnNvcl9pbWFnZTsKKyAgICBWZWN0b3I8UmVmUHRyPENTU0N1cnNvckltYWdlVmFsdWU+ID4g
Y3Vyc29ySW5mbzsKIAogICAgIEZvbnQgZm9udDsKICAgICBDb2xvciBjb2xvcjsKQEAgLTEzMTQs
NyArMTMxNSw3IEBAIHB1YmxpYzoKIAogICAgIEVDdXJzb3IgY3Vyc29yKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RUN1cnNvcj4oaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGUpOyB9
CiAgICAgCi0gICAgQ2FjaGVkSW1hZ2UgKmN1cnNvckltYWdlKCkgY29uc3QgeyByZXR1cm4gaW5o
ZXJpdGVkLT5jdXJzb3JfaW1hZ2U7IH0KKyAgICBWZWN0b3I8UmVmUHRyPENTU0N1cnNvckltYWdl
VmFsdWU+ID4gY3Vyc29ycygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Y3Vyc29ySW5mbzsg
fQogCiAgICAgc2hvcnQgd2lkb3dzKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT53aWRvd3M7
IH0KICAgICBzaG9ydCBvcnBoYW5zKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5vcnBoYW5z
OyB9CkBAIC0xNTIxLDcgKzE1MjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYWRkaW5nUmln
aHQoTGVuZ3RoIHYpICB7ICBTRVRfVkFSKHN1cnJvdW5kLHBhZGRpbmcucmlnaHQsdikgfQogCiAg
ICAgdm9pZCBzZXRDdXJzb3IoIEVDdXJzb3IgYyApIHsgaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jf
c3R5bGUgPSBjOyB9Ci0gICAgdm9pZCBzZXRDdXJzb3JJbWFnZSggQ2FjaGVkSW1hZ2UgKnYgKSB7
IFNFVF9WQVIoaW5oZXJpdGVkLGN1cnNvcl9pbWFnZSx2KSB9CisgICAgdm9pZCBhZGRDdXJzb3Io
UGFzc1JlZlB0cjxDU1NDdXJzb3JJbWFnZVZhbHVlPik7CiAKICAgICBib29sIGZvcmNlQmFja2dy
b3VuZHNUb1doaXRlKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNr
Z3JvdW5kc190b193aGl0ZTsgfQogICAgIHZvaWQgc2V0Rm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUo
Ym9vbCBiPXRydWUpIHsgaW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0
ZSA9IGI7IH0K
</data>
<flag name="review"
          id="3367"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10483</attachid>
            <date>2006-09-10 00:18:59 -0700</date>
            <delta_ts>2006-09-10 01:45:50 -0700</delta_ts>
            <desc>Another go</desc>
            <filename>6002-7.diff</filename>
            <type>text/plain</type>
            <size>33856</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjI4MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMDYtMDktMTAgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAxCisgICAgICAg
IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9tIGN1cnNvcnMKKyAgICAgICAg
Rml4IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTYw
MDIKKyAgICAgICAgV2ViS2l0IGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSBTVkcgPGN1cnNvcj4g
ZWxlbWVudAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzdmcgY3Vyc29yIGltYWdlcy4gQWxz
byBtYWtlIHN1cmUgaG90c3BvdAorICAgICAgICBzZXR0aW5ncyBhcmUgaGFuZGxlZCBjb3JyZWN0
bHkuIEZpbmFsbHkgaW1wbGVtZW50IGZhbGxiYWNrLgorCisgICAgICAgIFdBUk5JTkc6IE5PIFRF
U1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvY3NzcGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL2Nzc3N0
eWxlc2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBw
bHlQcm9wZXJ0eSk6CisgICAgICAgICoga2NhbnZhcy9SZW5kZXJQYXRoLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclBhdGg6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50
OjpTVkdDdXJzb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0N1cnNvckVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0N1cnNvckVsZW1l
bnQ6OmNhY2hlZEltYWdlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5o
OgorICAgICAgICAqIG1hbnVhbC10ZXN0cy9jc3MzLWN1cnNvci10ZXN0Mi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RD
dXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL0N1cnNvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9DdXJzb3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDdXN0b21DdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yOjpDdXJzb3IpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUluaGVyaXRlZERhdGE6
OlN0eWxlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUluaGVyaXRlZERh
dGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmYpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1cnNvcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6c2V0Q3Vyc29ycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JEYXRhOjpDdXJzb3JEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjdXJzb3JzKToKKwogMjAwNi0wOS0wOSAgRGF2
aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGZvciBCdWd6aWxsYSBi
dWcgNTUwMCwgc2Nyb2xsTGVmdC9Ub3AvV2lkdGgvSGVpZ2h0IHByb3BlcnRpZXMgbm90IHN1cHBv
cnRlZApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDE2MjgyKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTE3OTcsNiArMTc5Nyw4IEBACiAJCUE4RkVGQjBCMDk3OUY0
NzIwMDU4MzlGRCAvKiBSZW5kZXJGb3JlaWduT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RkVGQjA5MDk3OUY0NzIwMDU4MzlGRCAvKiBS
ZW5kZXJGb3JlaWduT2JqZWN0LmNwcCAqLzsgfTsKIAkJQThGRUZCMzEwOTc5RjRGNjAwNTgzOUZE
IC8qIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RkVGQjJGMDk3OUY0RjYwMDU4MzlGRCAvKiBTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5jcHAgKi87IH07CiAJCUE4RkVGQjMyMDk3OUY0RjYwMDU4MzlGRCAv
KiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThGRUZCMzAwOTc5RjRGNjAwNTgzOUZEIC8qIFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LmggKi87IH07CisJCUFBNzE1MzYwMEFCMEI5RUMwMEVFRTQ5QiAvKiBDU1ND
dXJzb3JJbWFnZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFBNzE1MzVFMEFCMEI5RUMwMEVFRTQ5QiAvKiBDU1NDdXJzb3JJbWFnZVZhbHVl
LmNwcCAqLzsgfTsKKwkJQUE3MTUzNjEwQUIwQjlFQzAwRUVFNDlCIC8qIENTU0N1cnNvckltYWdl
VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFB
NzE1MzVGMEFCMEI5RUMwMEVFRTQ5QiAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggKi87IH07CiAJ
CUFBODRGQzg1MEFBMEZFMDgwMDc2OTlBRiAvKiBKU1NWR01ldGFkYXRhRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTg0RkM4MzBBQTBG
RTA4MDA3Njk5QUYgLyogSlNTVkdNZXRhZGF0YUVsZW1lbnQuY3BwICovOyB9OwogCQlBQTg0RkM4
NjBBQTBGRTA4MDA3Njk5QUYgLyogSlNTVkdNZXRhZGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBODRGQzg0MEFBMEZFMDgwMDc2OTlB
RiAvKiBKU1NWR01ldGFkYXRhRWxlbWVudC5oICovOyB9OwogCQlBQTk4Qjg3RDBBQUEwMkY4MDAx
QTQ0QzIgLyogUGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBQTk4Qjg3QzBBQUEwMkY4MDAxQTQ0QzIgLyogUGF0aC5jcHAgKi87IH07CkBAIC00
MDYxLDYgKzQwNjMsOCBAQAogCQlBOEZFRkIwOTA5NzlGNDcyMDA1ODM5RkQgLyogUmVuZGVyRm9y
ZWlnbk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVu
ZGVyRm9yZWlnbk9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RkVG
QjJGMDk3OUY0RjYwMDU4MzlGRCAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEZFRkIzMDA5NzlGNEY2MDA1ODM5
RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUFBNzE1MzVFMEFCMEI5RUMwMEVFRTQ5QiAvKiBDU1NDdXJzb3JJbWFnZVZhbHVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NDdXJzb3JJbWFn
ZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUE3MTUzNUYwQUIwQjlF
QzAwRUVFNDlCIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENTU0N1cnNvckltYWdlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQUE4NEZDODMwQUEwRkUwODAwNzY5OUFGIC8qIEpTU1ZHTWV0YWRhdGFFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR01ldGFkYXRh
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBODRGQzg0MEFBMEZF
MDgwMDc2OTlBRiAvKiBKU1NWR01ldGFkYXRhRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTVkdNZXRhZGF0YUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQUE5OEI4N0MwQUFBMDJGODAwMUE0NEMyIC8qIFBhdGguY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNjU4Nyw2ICs2NTkxLDggQEAKIAkJRjUyM0QxODQwMkRFNDJFODAxODYz
NUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJQUE3MTUzNUUwQUIwQjlFQzAwRUVFNDlCIC8qIENTU0N1cnNvckltYWdlVmFsdWUuY3BwICov
LAorCQkJCUFBNzE1MzVGMEFCMEI5RUMwMEVFRTQ5QiAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmgg
Ki8sCiAJCQkJQTgwRTZDREEwQTE5ODlDQTAwN0ZCOEM1IC8qIENvdW50ZXIuaCAqLywKIAkJCQk5
MzA3MDVDNzA5RTBDOTVGMDBCMTdGRTQgLyogQ291bnRlci5pZGwgKi8sCiAJCQkJQTgwRTZDQkIw
QTE5ODlDQTAwN0ZCOEM1IC8qIENTU0JvcmRlckltYWdlVmFsdWUuY3BwICovLApAQCAtNzkwMiw2
ICs3OTA4LDcgQEAKIAkJCQk4NURGMzQ0MDBBQUZDMEVEMDBFNTlBRTMgLyogRE9NS2V5Ym9hcmRF
dmVudFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1N0UwQjI1MEFCMDQzNDYwMDM2RTQ0
NyAvKiBET01Nb3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTdFMEIyQzBBQjA0M0ZD
MDAzNkU0NDcgLyogRE9NTW91c2VFdmVudFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUFB
NzE1MzYxMEFCMEI5RUMwMEVFRTQ5QiAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NTUyNkMzNzBBQjBBMTdFMDAwMzAyRUEgLyogRE9NTm9kZUl0ZXJhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NTUyNkMzRTBBQjBBNzZGMDAwMzAyRUEgLyogRE9NTm9kZUl0
ZXJhdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU1MjZDRDIwQUIwQjdEOTAwMDMw
MkVBIC8qIERPTVRyZWVXYWxrZXIuaCBpbiBIZWFkZXJzICovLApAQCAtODkyNiw2ICs4OTMzLDcg
QEAKIAkJCQk4NUM3RjVFODBBQUZCQUZCMDA0MDE0REQgLyogRE9NV2hlZWxFdmVudC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTg1RkYzMTVCMEFBRkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2
ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU3RTBCMjYwQUIwNDM0NjAwMzZFNDQ3IC8qIERP
TU1vdXNlRXZlbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQlBQTcxNTM2MDBBQjBCOUVDMDBFRUU0
OUIgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTUyNkMz
ODBBQjBBMTdFMDAwMzAyRUEgLyogRE9NTm9kZUl0ZXJhdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODU1MjZDRDMwQUIwQjdEQTAwMDMwMkVBIC8qIERPTVRyZWVXYWxrZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQk4NTkxMjhGNDBBQjI0MzFBMDAyMDIyNjUgLyogRE9NSFRNTEVtYmVkRWxlbWVu
dC5tbSBpbiBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxNjI4MikKKysrIFdlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNyw1NyArNjA3LDkw
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICBjYXNlIENT
U19QUk9QX0NPVU5URVJfUkVTRVQ6CiAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOgotICAgICAgICBpZiAoc3R5
bGUtPmN1cnNvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHN0eWxlLT5jdXJzb3JJbWFnZSgpLT51cmwoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19V
UkkpOworICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOiB7CisgICAgICAgIENTU1ZhbHVlTGlzdCog
bGlzdCA9IDA7CisgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IDA7CisgICAgICAgIFZlY3RvcjxD
dXJzb3JEYXRhPiBjdXJzb3JzID0gc3R5bGUtPmN1cnNvcnMoKTsKKyAgICAgICAgaWYgKGN1cnNv
cnMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgbGlzdCA9IG5ldyBDU1NWYWx1ZUxpc3Q7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwO2kgPCBjdXJzb3JzLnNpemUoKTsrK2kpCisg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZShjdXJzb3Jz
W2ldLmN1cnNvckltYWdlLT51cmwoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpKTsKKyAg
ICAgICAgfQogICAgICAgICBzd2l0Y2ggKHN0eWxlLT5jdXJzb3IoKSkgewogICAgICAgICAgICAg
Y2FzZSBDVVJTT1JfQVVUTzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfQVVUTyk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgQ1VSU09SX0NST1NTOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DUk9TU0hBSVIpOworICAgICAgICAgICAgICAgIHZhbHVl
ID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ1JPU1NIQUlSKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0RFRkFVTFQ6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0RFRkFVTFQpOworICAg
ICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfREVGQVVM
VCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9QT0lO
VEVSOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9QT0lOVEVSKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX1BPSU5URVIpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBDVVJTT1JfTU9WRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfTU9WRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9NT1ZFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgQ1VSU09SX0VfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFs
dWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FX1JFU0laRSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9ORV9SRVNJWkU6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05FX1JFU0laRSk7
CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9O
RV9SRVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJT
T1JfTldfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9OV19SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfTldfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQ1VSU09SX05fUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OX1JFU0laRSk7CisgICAgICAgICAgICAg
ICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OX1JFU0laRSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIENVUlNPUl9TRV9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX1NFX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TRV9SRVNJWkUpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfU1dfUkVTSVpFOgotICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TV19SRVNJWkUpOworICAg
ICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1dfUkVT
SVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1Nf
UkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9TX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9TX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIENVUlNPUl9XX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV19SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVl
ID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV19SRVNJWkUpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfRVdfUkVTSVpFOgotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FV19SRVNJWkUpOwor
ICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRVdf
UkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09S
X05TX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfTlNfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX05TX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIENVUlNPUl9ORVNXX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTkVTV19SRVNJWkUpOworICAgICAgICAg
ICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTkVTV19SRVNJWkUp
OworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfTldTRV9S
RVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX05XU0VfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX05XU0VfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX0NPTF9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NPTF9SRVNJWkUpOworICAgICAgICAgICAg
ICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ09MX1JFU0laRSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9ST1dfUkVTSVpF
OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9S
T1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX1JPV19SRVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBDVVJTT1JfVEVYVDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfVEVYVCk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9URVhUKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX1dBSVQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1dBSVQpOworICAgICAgICAgICAgICAgIHZhbHVlID0g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV0FJVCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9IRUxQOgotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9IRUxQKTsKKyAgICAgICAgICAgICAgICB2
YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hFTFApOwogICAgICAgICB9Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
aWYgKGxpc3QpIHsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh2YWx1ZSk7CisgICAgICAgICAg
ICByZXR1cm4gbGlzdDsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQodmFsdWUpOworICAgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgfQogICAgIGNhc2UgQ1NTX1BST1BfRElSRUNUSU9OOgogICAg
ICAgICBzd2l0Y2ggKHN0eWxlLT5kaXJlY3Rpb24oKSkgewogICAgICAgICAgICAgY2FzZSBMVFI6
CkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Y3NzL2Nzc3BhcnNlci5jcHAJKHJldmlzaW9uIDE2MjgyKQorKysgV2ViQ29yZS9jc3MvY3NzcGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgImNzc3Bh
cnNlci5oIgogCiAjaW5jbHVkZSAiQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oIgorI2luY2x1ZGUgIkNT
U0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAjaW5jbHVk
ZSAiQ1NTQ2hhcnNldFJ1bGUuaCIKICNpbmNsdWRlICJDU1NJbXBvcnRSdWxlLmgiCkBAIC02OTgs
MjEgKzY5OSw0OSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAg
ICAgICAgIC8vIFs8dXJpPixdKiAgWyBhdXRvIHwgY3Jvc3NoYWlyIHwgZGVmYXVsdCB8IHBvaW50
ZXIgfCBwcm9ncmVzcyB8IG1vdmUgfCBlLXJlc2l6ZSB8IG5lLXJlc2l6ZSB8CiAgICAgICAgIC8v
IG53LXJlc2l6ZSB8IG4tcmVzaXplIHwgc2UtcmVzaXplIHwgc3ctcmVzaXplIHwgcy1yZXNpemUg
fCB3LXJlc2l6ZSB8IGV3LXJlc2l6ZSB8IAogICAgICAgICAvLyBucy1yZXNpemUgfCBuZXN3LXJl
c2l6ZSB8IG53c2UtcmVzaXplIHwgY29sLXJlc2l6ZSB8IHJvdy1yZXNpemUgfCB0ZXh0IHwgd2Fp
dCB8IGhlbHAgXSBdIHwgaW5oZXJpdAotICAgICAgICBpZiAoIXN0cmljdCAmJiBpZCA9PSBDU1Nf
VkFMX0hBTkQpIHsgLy8gTVNJRSA1IGNvbXBhdGliaWxpdHkgOi8KLSAgICAgICAgICAgIGlkID0g
Q1NTX1ZBTF9QT0lOVEVSOwotICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKLSAg
ICAgICAgfSBlbHNlIGlmIChpZCA+PSBDU1NfVkFMX0FVVE8gJiYgaWQgPD0gQ1NTX1ZBTF9IRUxQ
KQotICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAo
dmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKKyAgICAgICAgQ1NT
VmFsdWVMaXN0KiBsaXN0ID0gbmV3IENTU1ZhbHVlTGlzdDsKKyAgICAgICAgd2hpbGUgKHZhbHVl
ICYmIHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7CiAgICAgICAg
ICAgICBTdHJpbmcgdXJpID0gcGFyc2VVUkwoZG9tU3RyaW5nKHZhbHVlLT5zdHJpbmcpKTsKKyNp
ZiBTVkdfU1VQUE9SVAorICAgICAgICAgICAgaWYgKHVyaS5maW5kKCIjIikgPT0gMCkgeworICAg
ICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodXJpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkpOworICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVM
aXN0LT5uZXh0KCk7CisgICAgICAgICAgICB9IGVsc2UKKyNlbmRpZgogICAgICAgICAgICAgaWYg
KCF1cmkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBuZXcgQ1NT
SW1hZ2VWYWx1ZShTdHJpbmcoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXByZWNhdGVk
U3RyaW5nKCksIHVyaS5kZXByZWNhdGVkU3RyaW5nKCkpLnVybCgpKSwgc3R5bGVFbGVtZW50KTsK
LSAgICAgICAgICAgICAgICAvLyBGSVhNRTogd2UgZG9uJ3Qgc3VwcG9ydCBmYWxsYmFjayBjdXJz
b3JzIHlldCwgYnV0IGlnbm9yaW5nIHRoZSByZW1haW5pbmcgdmFsdWVzCi0gICAgICAgICAgICAg
ICAgLy8gd2lsbCBhdCBsZWFzdCBsZXQgY29tcGxpYW50IGRlY2xhcmF0aW9ucyBwYXJzZS4KLSAg
ICAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIHBhcnNlZFZhbHVlLCBpbXBvcnRhbnQp
OwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIEludFBvaW50IGhvdHNwb3Q7CisgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxp
c3QtPm5leHQoKTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUtPnVuaXQgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHsKKyAgICAgICAgICAgICAgICAgICAgaG90
c3BvdC5zZXRYKHZhbHVlLT5mVmFsdWUpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZh
bHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAo
dmFsdWUgJiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHsK
KyAgICAgICAgICAgICAgICAgICAgaG90c3BvdC5zZXRYKHZhbHVlLT5mVmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU0N1cnNvckltYWdlVmFsdWUo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhLVVJMKHN0eWxlRWxlbWVudC0+
YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdXJpLmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJs
KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3RzcG90LCBzdHlsZUVsZW1lbnQp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVMaXN0LT5uZXh0KCk7
IC8vIGNvbW1hCisgICAgICAgIH0KKyAgICAgICAgaWYgKGxpc3QtPmxlbmd0aCgpKSB7CisgICAg
ICAgICAgICBwYXJzZWRWYWx1ZSA9IGxpc3Q7CisgICAgICAgICAgICBpZiAoIXZhbHVlKSB7IC8v
IG5vIHZhbHVlIGFmdGVyIHVybCBsaXN0IChNU0lFIDUgY29tcGF0aWJpbGl0eSkKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIXN0cmljdCAmJiB2YWx1ZS0+aWQgPT0gQ1NTX1ZBTF9IQU5EKSAvLyBN
U0lFIDUgY29tcGF0aWJpbGl0eSA6LworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QT0lOVEVSKSk7CisgICAgICAgICAgICBlbHNlIGlm
ICh2YWx1ZS0+aWQgPj0gQ1NTX1ZBTF9BVVRPICYmIHZhbHVlLT5pZCA8PSBDU1NfVkFMX0hFTFAp
CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZS0+aWQpKTsKKyAgICAgICAgICAgIHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGVsZXRlIGxpc3Q7Cisg
ICAgICAgIGlmICghc3RyaWN0ICYmIHZhbHVlLT5pZCA9PSBDU1NfVkFMX0hBTkQpIHsgLy8gTVNJ
RSA1IGNvbXBhdGliaWxpdHkgOi8KKyAgICAgICAgICAgIGlkID0gQ1NTX1ZBTF9QT0lOVEVSOwor
ICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmICh2
YWx1ZS0+aWQgPj0gQ1NTX1ZBTF9BVVRPICYmIHZhbHVlLT5pZCA8PSBDU1NfVkFMX0hFTFApCisg
ICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORF9BVFRBQ0hNRU5UOgpJbmRleDogV2ViQ29yZS9jc3Mv
Y3Nzc3R5bGVzZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3Nzc3R5bGVz
ZWxlY3Rvci5jcHAJKHJldmlzaW9uIDE2MjgyKQorKysgV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxl
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjc3Nz
dHlsZXNlbGVjdG9yLmgiCiAKICNpbmNsdWRlICJDU1NCb3JkZXJJbWFnZVZhbHVlLmgiCisjaW5j
bHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NJbXBvcnRSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTTWVkaWFSdWxlLmgiCkBA
IC0yMzc2LDIzICsyMzc3LDQwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eShpbnQKICAgICBjYXNlIENTU19QUk9QX0NVUlNPUjoKICAgICAgICAgaWYgKGlzSW5oZXJpdCkg
ewogICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcihwYXJlbnRTdHlsZS0+Y3Vyc29yKCkpOwot
ICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvckltYWdlKHBhcmVudFN0eWxlLT5jdXJzb3JJbWFn
ZSgpKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3JzKHBhcmVudFN0eWxlLT5jdXJzb3Jz
KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc0luaXRp
YWwpIHsKICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxD
dXJzb3IoKSk7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29ySW1hZ2UoMCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7Cisg
ICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeworICAgICAgICAgICAgQ1NTVmFsdWVM
aXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworICAgICAgICAg
ICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOworICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNv
cihDVVJTT1JfQVVUTyk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsr
KSB7CisgICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtKGkpOworICAg
ICAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICAgICAgaW50IHR5
cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOworICAgICAgICAgICAgICAgIGlm
ICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7CisjaWYgU1ZHX1NVUFBPUlQK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgp
LmZpbmQoIiMiKSA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPmFkZEN1cnNv
cihwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKS5kZXByZWNhdGVkU3RyaW5nKCkubWlk
KDEpKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU0N1cnNvckltYWdlVmFsdWUqIGltYWdl
ID0gc3RhdGljX2Nhc3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSo+KHByaW1pdGl2ZVZhbHVlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5hZGRDdXJzb3IoaW1hZ2UtPmltYWdlKGVsZW1l
bnQtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpKSwgaW1hZ2UtPmhvdHNwb3QoKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19JREVOVCkKKyAgICAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEN1
cnNvcigoRUN1cnNvcikocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgLSBDU1NfVkFMX0FVVE8p
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZSkgewog
ICAgICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwog
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkgewog
ICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IoKEVDdXJzb3IpKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpIC0gQ1NTX1ZBTF9BVVRPKSk7Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNl
dEN1cnNvckltYWdlKDApOwotICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfVVJJKSB7Ci0gICAgICAgICAgICAgICAgQ1NTSW1hZ2VWYWx1ZSogaW1h
Z2UgPSBzdGF0aWNfY2FzdDxDU1NJbWFnZVZhbHVlKj4ocHJpbWl0aXZlVmFsdWUpOwotICAgICAg
ICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IoQ1VSU09SX0FVVE8pOwotICAgICAgICAgICAgICAg
IHN0eWxlLT5zZXRDdXJzb3JJbWFnZShpbWFnZS0+aW1hZ2UoZWxlbWVudC0+ZG9jdW1lbnQoKS0+
ZG9jTG9hZGVyKCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsK
SW5kZXg6IFdlYkNvcmUva2NhbnZhcy9SZW5kZXJQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tjYW52YXMvUmVuZGVyUGF0aC5jcHAJKHJldmlzaW9uIDE2MjgyKQorKysgV2ViQ29yZS9r
Y2FudmFzL1JlbmRlclBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDIsNyArMzAyLDcgQEAg
Ym9vbCBSZW5kZXJQYXRoOjpub2RlQXRQb2ludChOb2RlSW5mbyYgaQogICAgIAogICAgIGJvb2wg
aXNWaXNpYmxlID0gKHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKTsKICAgICBpZiAo
aXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5yZXF1aXJlVmlzaWJsZSkgewotICAgICAgICBib29sIGhh
c0ZpbGwgPSAoc3R5bGUoKS0+c3ZnU3R5bGUoKS0+ZmlsbFBhaW50KCkgJiYgc3R5bGUoKS0+c3Zn
U3R5bGUoKS0+ZmlsbFBhaW50KCktPnBhaW50VHlwZSgpICE9IFNWR19QQUlOVFRZUEVfTk9ORSk7
CisgICAgICAgIGJvb2wgaGFzRmlsbCA9ICghc3R5bGUoKS0+c3ZnU3R5bGUoKS0+ZmlsbFBhaW50
KCkgfHwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+ZmlsbFBhaW50KCktPnBhaW50VHlwZSgpICE9IFNW
R19QQUlOVFRZUEVfTk9ORSk7CiAgICAgICAgIGJvb2wgaGFzU3Ryb2tlID0gKHN0eWxlKCktPnN2
Z1N0eWxlKCktPnN0cm9rZVBhaW50KCkgJiYgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+c3Ryb2tlUGFp
bnQoKS0+cGFpbnRUeXBlKCkgIT0gU1ZHX1BBSU5UVFlQRV9OT05FKTsKICAgICAgICAgRmxvYXRQ
b2ludCBoaXRQb2ludChfeCxfeSk7CiAgICAgICAgIGlmICgoaGl0UnVsZXMuY2FuSGl0U3Ryb2tl
ICYmIChoYXNTdHJva2UgfHwgIWhpdFJ1bGVzLnJlcXVpcmVTdHJva2UpICYmIHN0cm9rZUNvbnRh
aW5zKGhpdFBvaW50LCBoaXRSdWxlcy5yZXF1aXJlU3Ryb2tlKSkKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjI4MikKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3
IEBACiAjaW5jbHVkZSAiU1ZHQ3Vyc29yRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQXR0ci5oIgor
I2luY2x1ZGUgIkNhY2hlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgpAQCAtMzIsNyArMzMsNyBAQAogI2lu
Y2x1ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHQ3Vyc29yRWxlbWVudDo6
U1ZHQ3Vyc29yRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCAq
ZG9jKQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2MpCkBAIC00Miw4ICs0Myw4IEBAIFNW
R0N1cnNvckVsZW1lbnQ6OlNWR0N1cnNvckVsZW1lbnQoY29uc3QKICAgICAsIENhY2hlZFJlc291
cmNlQ2xpZW50KCkKICAgICAsIG1feChuZXcgU1ZHTGVuZ3RoKDAsIExNX1dJRFRILCB2aWV3cG9y
dEVsZW1lbnQoKSkpCiAgICAgLCBtX3kobmV3IFNWR0xlbmd0aCgwLCBMTV9IRUlHSFQsIHZpZXdw
b3J0RWxlbWVudCgpKSkKKyAgICAsIG1fY2FjaGVkSW1hZ2UoMCkKIHsKLSAgICBtX2NhY2hlZElt
YWdlID0gMDsKIH0KIAogU1ZHQ3Vyc29yRWxlbWVudDo6flNWR0N1cnNvckVsZW1lbnQoKQpAQCAt
NjcsMTkgKzY4LDMxIEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkg
ewotICAgICAgICAgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCi0gICAgICAgICAgICAgICAgbV9jYWNo
ZWRJbWFnZS0+ZGVyZWYodGhpcyk7Ci0gICAgICAgICAgICBtX2NhY2hlZEltYWdlID0gb3duZXJE
b2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdEltYWdlKGhyZWYoKSk7Ci0gICAgICAgICAg
ICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgICAgICAgICBtX2NhY2hlZEltYWdlLT5yZWYo
dGhpcyk7CisgICAgICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKICAgICAgICAgU1ZHRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiAgICAgfQogfQogCitDYWNoZWRJbWFn
ZSogU1ZHQ3Vyc29yRWxlbWVudDo6Y2FjaGVkSW1hZ2UoRG9jTG9hZGVyKiBsb2FkZXIpCit7Cisg
ICAgaWYgKCFtX2NhY2hlZEltYWdlKSB7CisgICAgICAgIFN0cmluZyB1cmwgPSBTdHJpbmcoS1VS
TChvd25lckRvY3VtZW50KCktPmJhc2VVUkwoKSwgaHJlZigpLmRlcHJlY2F0ZWRTdHJpbmcoKSku
dXJsKCkpOworICAgICAgICBpZiAobG9hZGVyKQorICAgICAgICAgICAgbV9jYWNoZWRJbWFnZSA9
IGxvYWRlci0+cmVxdWVzdEltYWdlKHVybCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1f
Y2FjaGVkSW1hZ2UgPSBDYWNoZTo6cmVxdWVzdEltYWdlKDAsIHVybCk7CisKKyAgICAgICAgaWYg
KG1fY2FjaGVkSW1hZ2UpCisgICAgICAgICAgICBtX2NhY2hlZEltYWdlLT5yZWYodGhpcyk7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBtX2NhY2hlZEltYWdlOworfQorCit9CisKIC8vIHZpbTp0
cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdDdXJzb3JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
Q3Vyc29yRWxlbWVudC5oCShyZXZpc2lvbiAxNjI4MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0N1cnNvckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZQogICAgICAgICAvLyAnU1ZHQ3Vyc29yRWxlbWVudCcgZnVuY3Rpb25zCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0
dHIpOwogCi0gICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FjaGVkSW1hZ2U7IH0KKyAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKERvY0xv
YWRlciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpJbmRleDogV2ViQ29y
ZS9tYW51YWwtdGVzdHMvY3NzMy1jdXJzb3ItdGVzdDIuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL21hbnVhbC10ZXN0cy9jc3MzLWN1cnNvci10ZXN0Mi5odG1sCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9tYW51YWwtdGVzdHMvY3NzMy1jdXJzb3ItdGVzdDIuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1M
IDQuMDEvL0VOIgorICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiPgor
PGh0bWw+Cis8aGVhZD48dGl0bGU+Q3VzdG9tIGN1cnNvciB0ZXN0czwvdGl0bGU+PC9oZWFkPgor
PGJvZHk+Cis8cD48YSBocmVmPSJodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5OTEiPkJ1ZyAuOTkxPC9hPjogUkVHUkVTU0lPTjogbWlzc2luZyBvciBicm9r
ZW4gQ1NTIGN1c3RvbSBjdXJzb3JzIGFyZSBkaXNwbGF5ZWQgYXMgYSBtaXNzaW5nIGltYWdlIGlj
b24uPC9wPgorPHA+TW92ZSB0aGUgY3Vyc29yIG92ZXIgdGhlIGJsdWUgYm94IC0gaXQgc2hvdWxk
IG5vdCB0dXJuIGludG8gYSBtaXNzaW5nIGltYWdlIGljb24sIGFuZCBzaG91bGQgdHVybiBpbnRv
IGFuIEktYmVhbSBvdmVyIHRleHQuPC9wPgorCis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBweDtoZWln
aHQ6NTBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChub25leGlzdGVu
dC5wbmcpLCBhdXRvOyI+PHNwYW4gc3R5bGU9ImN1cnNvcjp1cmwobm9uZXhpc3RlbnQucG5nKSwg
YXV0bzsiPnNvbWUgdGV4dDwvc3Bhbj48L2Rpdj4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB4O2hl
aWdodDo1MHB4O2JhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKG5vbmV4aXN0
ZW50LnBuZyk7Ij48L2Rpdj4KKworPGhyPgorPHA+PGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9w
ZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAxIj5CdWcgNjAwMTwvYT46IFdlYktpdCBk
b2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9tIGN1cnNvcnM8L3A+Cis8cD48YSBocmVmPSJo
dHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTkwMTMiPkJ1ZyA5
MDEzPC9hPjogTGV0IGNvcnJlY3QgQ1NTIGN1c3RvbSBjdXJzb3IgZGVjbGFyYXRpb25zIHBhcnNl
PC9wPgorPHA+SW4gZWFjaCBvZiB0aGUgYmx1ZSBib3hlcyBiZWxvdywgdGhlIGN1cnNvciBzaG91
bGQgYmVjb21lIGEgaGVscCBjdXJzb3IgKHF1ZXN0aW9uIG1hcmspLjwvcD4KKzx0YWJsZT48dHI+
CisgPHRkPjxkaXYgc3R5bGU9IndpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNv
bG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKSwgdGV4
dDsiPjwvZGl2PjwvdGQ+IDwhLS0gVmFsaWQsIG5vIGZhbGxiYWNrIG5lZWRlZCAtLT4KKyA8dGQ+
PGRpdiBzdHlsZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6bGln
aHRibHVlOyBjdXJzb3I6dXJsKHJlc291cmNlcy9oZWxwQ3Vyc29yLnRpZmYpOyc+PC9kaXY+PC90
ZD4gPCEtLSBJbnZhbGlkLCBidXQgYWxsb3dlZCBieSBXaW5JRSAtLT4KKyA8dGQ+PGRpdiBzdHls
ZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOyBj
dXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIGhlbHA7Jz48L2Rpdj48L3RkPgorIDx0ZD48ZGl2
IHN0eWxlPSd3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJs
dWU7IGN1cnNvcjp1cmwobm9uZXhpc3RlbnQucG5nKSwgdXJsKGN1c3RvbS1jdXJzb3JzLmh0bWwp
LCB1cmwodW5rbm93bi1zY2hlbWU6Y3VzdG9tLWN1cnNvcnMuaHRtbCksIHVybChyZXNvdXJjZXMv
aGVscEN1cnNvci50aWZmKSwgdGV4dDsnPjwvZGl2PjwvdGQ+CisgPHRkPjxkaXYgc3R5bGU9J3dp
ZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29y
OnVybChub25leGlzdGVudC5wbmcpLCB1cmwoInJlc291cmNlcy9oZWxwQ3Vyc29yLnRpZmYiKSwg
dGV4dDsnPjwvZGl2PjwvdGQ+CisgPHRkPjxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDox
MDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMvaGVs
cEN1cnNvci50aWZmKSAxIDEsIHRleHQ7Jz48L2Rpdj48L3RkPiA8IS0tIENTUzMgaG90IHNwb3Qg
LSB2YWxpZCwgbm8gZmFsbGJhY2sgbmVlZGVkIC0tPgorPC90cj4KKzwvdGFibGU+CisKKzxwPjwv
cD4KKzxwPjxzcGFuIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOmdyYXk7IGN1cnNvcjp1cmwobm9u
ZXhpc3RlbnQucG5nKSwgdXJsKCJyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmIik7Jz5TaG91bGQg
c2hvdyBhbiBJLWJlYW0gY3Vyc29yLjwvc3Bhbj48L3A+IDwhLS0gQW4gaW52YWxpZCBkZWNsYXJh
dGlvbiwgZXZlbiBieSBXaW5JRSBzdGFuZGFyZHMgLS0+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTYyODIpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTMgQEAKICNpbmNsdWRlICJTZWxlY3Rp
b25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY3Nzc3R5bGVzZWxlY3Rvci5oIgogCisjaWYgU1ZH
X1NVUFBPUlQKKyNpbmNsdWRlICJYTGlua05hbWVzLmgiCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
KyNpbmNsdWRlICJTVkdDdXJzb3JFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5n
dGguaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBF
dmVudE5hbWVzOwpAQCAtNjQxLDExICs2NDgsMzAgQEAgc3RhdGljIEN1cnNvciBzZWxlY3RDdXJz
b3IoY29uc3QgTW91c2VFdgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlID8gbm9k
ZS0+cmVuZGVyZXIoKSA6IDA7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIgPyBy
ZW5kZXJlci0+c3R5bGUoKSA6IDA7CiAKLSAgICBpZiAoc3R5bGUgJiYgc3R5bGUtPmN1cnNvcklt
YWdlKCkgJiYgIXN0eWxlLT5jdXJzb3JJbWFnZSgpLT5pbWFnZSgpLT5pc051bGwoKSkKLSAgICAg
ICAgaWYgKCFzdHlsZS0+Y3Vyc29ySW1hZ2UoKS0+aXNFcnJvckltYWdlKCkpCi0gICAgICAgICAg
ICByZXR1cm4gc3R5bGUtPmN1cnNvckltYWdlKCktPmltYWdlKCk7Ci0gICAgICAgIGVsc2UgCi0g
ICAgICAgICAgICBzdHlsZSA9IDA7IC8vIEZhbGxiYWNrIHRvIENVUlNPUl9BVVRPCisgICAgaWYg
KHN0eWxlICYmIHN0eWxlLT5jdXJzb3JzKCkpIHsKKyAgICAgICAgVmVjdG9yPEN1cnNvckRhdGE+
IGN1cnNvcnMgPSBzdHlsZS0+Y3Vyc29ycygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY3Vyc29ycy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNp
bWFnZSA9IGN1cnNvcnNbaV0uY3Vyc29ySW1hZ2U7CisgICAgICAgICAgICBJbnRQb2ludCBob3RT
cG90ID0gY3Vyc29yc1tpXS5ob3RTcG90OworICAgICAgICAgICAgaWYgKCFjaW1hZ2UpIHsKKyNp
ZiBTVkdfU1VQUE9SVAorICAgICAgICAgICAgICAgIEVsZW1lbnQqIGUgPSBub2RlLT5kb2N1bWVu
dCgpLT5nZXRFbGVtZW50QnlJZChjdXJzb3JzW2ldLmN1cnNvckZyYWdtZW50SWQuZGVwcmVjYXRl
ZFN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLT5oYXNUYWdOYW1lKFdlYkNv
cmU6OlNWR05hbWVzOjpjdXJzb3JUYWcpKSB7CisgICAgICAgICAgICAgICAgICAgIGhvdFNwb3Qu
c2V0WChpbnQoc3RhdGljX2Nhc3Q8U1ZHQ3Vyc29yRWxlbWVudCo+KGUpLT54QmFzZVZhbHVlKCkt
PnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgaG90U3BvdC5zZXRZKGludChzdGF0aWNf
Y2FzdDxTVkdDdXJzb3JFbGVtZW50Kj4oZSktPnlCYXNlVmFsdWUoKS0+dmFsdWUoKSkpOworICAg
ICAgICAgICAgICAgICAgICBjaW1hZ2UgPSBzdGF0aWNfY2FzdDxTVkdDdXJzb3JFbGVtZW50Kj4o
ZSktPmNhY2hlZEltYWdlKG5vZGUtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpKTsKKyAgICAgICAg
ICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworI2VuZGlmCisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2ltYWdlLT5pbWFnZSgpLT5pc051bGwoKSkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmICghY2ltYWdlLT5pc0Vycm9ySW1h
Z2UoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBDdXJzb3IoY2ltYWdlLT5pbWFnZSgpLCBo
b3RTcG90KTsKK30KKyAgICAgICAgfQorICAgIH0KIAogICAgIHN3aXRjaCAoc3R5bGUgPyBzdHls
ZS0+Y3Vyc29yKCkgOiBDVVJTT1JfQVVUTykgewogICAgICAgICBjYXNlIENVUlNPUl9BVVRPOiB7
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vQ3Vyc29yLmgJKHJldmlzaW9uIDE2MjgyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9D
dXJzb3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOCBAQCBjbGFzcyBOU0N1cnNvcjsK
ICNlbmRpZgogI2VuZGlmCiAKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICBjbGFzcyBJbWFnZTsKQEAgLTY5LDcgKzcxLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2VuZGlmCiAgICAgICAgIHsgfQogCi0gICAgICAgIEN1cnNvcihJbWFnZSopOwor
ICAgICAgICBDdXJzb3IoSW1hZ2UqLCBJbnRQb2ludCBob3RzcG90ID0gSW50UG9pbnQoKSk7CiAg
ICAgICAgIEN1cnNvcihjb25zdCBDdXJzb3ImKTsKICAgICAgICAgfkN1cnNvcigpOwogICAgICAg
ICBDdXJzb3ImIG9wZXJhdG9yPShjb25zdCBDdXJzb3ImKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vbWFjL0N1cnNvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9D
dXJzb3JNYWMubW0JKHJldmlzaW9uIDE2MjgyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ3Vy
c29yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNCArNDEsMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogLy8gU2ltcGxlIE5TQ3Vyc29yIGNhbGxzIHNob3VsZG4ndCBuZWVkIHByb3RlY3Rp
b24sCiAvLyBidXQgY3JlYXRpbmcgYSBjdXJzb3Igd2l0aCBhIGJhZCBpbWFnZSBtaWdodCB0aHJv
dy4KIAotc3RhdGljIE5TQ3Vyc29yKiBjcmVhdGVDdXN0b21DdXJzb3IoSW1hZ2UqIGltYWdlKQor
c3RhdGljIE5TQ3Vyc29yKiBjcmVhdGVDdXN0b21DdXJzb3IoSW1hZ2UqIGltYWdlLCBJbnRQb2lu
dCBob3RzcG90KQogewogICAgIC8vIEZJWE1FOiBUaGUgY3Vyc29yIHdvbid0IGFuaW1hdGUuICBO
b3Qgc3VyZSBpZiB0aGF0J3MgYSBiaWcgZGVhbC4KICAgICBOU0ltYWdlKiBpbWcgPSBpbWFnZS0+
Z2V0TlNJbWFnZSgpOwogICAgIGlmICghaW1nKQogICAgICAgICByZXR1cm4gMDsKICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbTlNDdXJzb3IgYWxsb2NdIGlu
aXRXaXRoSW1hZ2U6aW1nIGhvdFNwb3Q6TlNaZXJvUG9pbnRdOworICAgIHJldHVybiBbW05TQ3Vy
c29yIGFsbG9jXSBpbml0V2l0aEltYWdlOmltZyBob3RTcG90OmhvdHNwb3RdOwogICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC03NCw4ICs3NCw4IEBA
IHN0YXRpYyBOU0N1cnNvciogbGVha05hbWVkQ3Vyc29yKGNvbnN0IGMKICAgICByZXR1cm4gMDsK
IH0KIAotQ3Vyc29yOjpDdXJzb3IoSW1hZ2UqIGltYWdlKQotICAgIDogbV9pbXBsKEhhcmRSZXRh
aW5XaXRoTlNSZWxlYXNlKGNyZWF0ZUN1c3RvbUN1cnNvcihpbWFnZSkpKQorQ3Vyc29yOjpDdXJz
b3IoSW1hZ2UqIGltYWdlLCBJbnRQb2ludCBob3RzcG90KQorICAgIDogbV9pbXBsKEhhcmRSZXRh
aW5XaXRoTlNSZWxlYXNlKGNyZWF0ZUN1c3RvbUN1cnNvcihpbWFnZSwgaG90c3BvdCkpKQogewog
fQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAxNjI4MikKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEw
LDcgKzUxMCw3IEBAIGJvb2wgU3R5bGVDU1MzSW5oZXJpdGVkRGF0YTo6c2hhZG93RGF0YUUKIFN0
eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKCkKICAgICA6IGluZGVudChSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRleHRJbmRlbnQoKSksIGxpbmVfaGVpZ2h0KFJlbmRlclN0eWxlOjpp
bml0aWFsTGluZUhlaWdodCgpKSwgCiAgICAgICBzdHlsZV9pbWFnZShSZW5kZXJTdHlsZTo6aW5p
dGlhbExpc3RTdHlsZUltYWdlKCkpLAotICAgICAgY3Vyc29yX2ltYWdlKDApLCBjb2xvcihSZW5k
ZXJTdHlsZTo6aW5pdGlhbENvbG9yKCkpLCAKKyAgICAgIGN1cnNvcl9kYXRhKDApLCBjb2xvcihS
ZW5kZXJTdHlsZTo6aW5pdGlhbENvbG9yKCkpLCAKICAgICAgIGhvcml6b250YWxfYm9yZGVyX3Nw
YWNpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxIb3Jpem9udGFsQm9yZGVyU3BhY2luZygpKSwgCiAg
ICAgICB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyhSZW5kZXJTdHlsZTo6aW5pdGlhbFZlcnRpY2Fs
Qm9yZGVyU3BhY2luZygpKSwKICAgICAgIHdpZG93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbFdpZG93
cygpKSwgb3JwaGFucyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9ycGhhbnMoKSksCkBAIC01MjUsNyAr
NTI1LDcgQEAgU3R5bGVJbmhlcml0ZWREYXRhOjp+U3R5bGVJbmhlcml0ZWREYXRhKAogU3R5bGVJ
bmhlcml0ZWREYXRhOjpTdHlsZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVJbmhlcml0ZWREYXRh
JiBvICkKICAgICA6IFNoYXJlZDxTdHlsZUluaGVyaXRlZERhdGE+KCksCiAgICAgICBpbmRlbnQo
IG8uaW5kZW50ICksIGxpbmVfaGVpZ2h0KCBvLmxpbmVfaGVpZ2h0ICksIHN0eWxlX2ltYWdlKCBv
LnN0eWxlX2ltYWdlICksCi0gICAgICBjdXJzb3JfaW1hZ2UoIG8uY3Vyc29yX2ltYWdlICksIGZv
bnQoIG8uZm9udCApLAorICAgICAgY3Vyc29yX2RhdGEoIG8uY3Vyc29yX2RhdGEgKSwgZm9udCgg
by5mb250ICksCiAgICAgICBjb2xvciggby5jb2xvciApLAogICAgICAgaG9yaXpvbnRhbF9ib3Jk
ZXJfc3BhY2luZyggby5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nICksCiAgICAgICB2ZXJ0aWNh
bF9ib3JkZXJfc3BhY2luZyggby52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyApLApAQCAtNTM5LDcg
KzUzOSw3IEBAIGJvb2wgU3R5bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnMKICAgICAg
ICAgaW5kZW50ID09IG8uaW5kZW50ICYmCiAgICAgICAgIGxpbmVfaGVpZ2h0ID09IG8ubGluZV9o
ZWlnaHQgJiYKICAgICAgICAgc3R5bGVfaW1hZ2UgPT0gby5zdHlsZV9pbWFnZSAmJgotICAgICAg
ICBjdXJzb3JfaW1hZ2UgPT0gby5jdXJzb3JfaW1hZ2UgJiYKKyAgICAgICAgY3Vyc29yX2RhdGEg
PT0gby5jdXJzb3JfZGF0YSAmJgogICAgICAgICBmb250ID09IG8uZm9udCAmJgogICAgICAgICBj
b2xvciA9PSBvLmNvbG9yICYmCiAgICAgICAgIGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcgPT0g
by5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nICYmCkBAIC04MjQsNyArODI0LDcgQEAgUmVuZGVy
U3R5bGU6OkRpZmYgUmVuZGVyU3R5bGU6OmRpZmYoIGNvbgogICAgICAgICAhKGluaGVyaXRlZC0+
aW5kZW50ID09IG90aGVyLT5pbmhlcml0ZWQtPmluZGVudCkgfHwKICAgICAgICAgIShpbmhlcml0
ZWQtPmxpbmVfaGVpZ2h0ID09IG90aGVyLT5pbmhlcml0ZWQtPmxpbmVfaGVpZ2h0KSB8fAogICAg
ICAgICAhKGluaGVyaXRlZC0+c3R5bGVfaW1hZ2UgPT0gb3RoZXItPmluaGVyaXRlZC0+c3R5bGVf
aW1hZ2UpIHx8Ci0gICAgICAgICEoaW5oZXJpdGVkLT5jdXJzb3JfaW1hZ2UgPT0gb3RoZXItPmlu
aGVyaXRlZC0+Y3Vyc29yX2ltYWdlKSB8fAorICAgICAgICAhKGluaGVyaXRlZC0+Y3Vyc29yX2Rh
dGEgPT0gb3RoZXItPmluaGVyaXRlZC0+Y3Vyc29yX2RhdGEpIHx8CiAgICAgICAgICEoaW5oZXJp
dGVkLT5mb250ID09IG90aGVyLT5pbmhlcml0ZWQtPmZvbnQpIHx8CiAgICAgICAgICEoaW5oZXJp
dGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nID09IG90aGVyLT5pbmhlcml0ZWQtPmhvcml6
b250YWxfYm9yZGVyX3NwYWNpbmcpIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT52ZXJ0aWNhbF9i
b3JkZXJfc3BhY2luZyA9PSBvdGhlci0+aW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2lu
ZykgfHwKQEAgLTk4Myw2ICs5ODMsMjYgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q2xpcCggTGVu
Z3RoIHRvcCwgTAogICAgIGRhdGEtPmNsaXAubGVmdCA9IGxlZnQ7CiB9CiAKK3ZvaWQgUmVuZGVy
U3R5bGU6OmFkZEN1cnNvcihDYWNoZWRJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RT
cG90KQoreworICAgIEN1cnNvckRhdGEgZGF0YTsKKyAgICBkYXRhLmN1cnNvckltYWdlID0gaW1h
Z2U7CisgICAgZGF0YS5ob3RTcG90ID0gaG90U3BvdDsKKyAgICBpbmhlcml0ZWQuYWNjZXNzKCkt
PmN1cnNvcl9kYXRhLmFwcGVuZChkYXRhKTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3Vy
c29yKGNvbnN0IFN0cmluZyYgaWQpCit7CisgICAgQ3Vyc29yRGF0YSBkYXRhOworICAgIGRhdGEu
Y3Vyc29yRnJhZ21lbnRJZCA9IGlkOworICAgIGluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vyc29yX2Rh
dGEuYXBwZW5kKGRhdGEpOworfQorCit2b2lkIFJlbmRlclN0eWxlOjpzZXRDdXJzb3JzKGNvbnN0
IFZlY3RvcjxDdXJzb3JEYXRhPiYgb3RoZXIpCit7CisgICAgaW5oZXJpdGVkLmFjY2VzcygpLT5j
dXJzb3JfZGF0YSA9IG90aGVyOworfQorCiBib29sIFJlbmRlclN0eWxlOjpjb250ZW50RGF0YUVx
dWl2YWxlbnQoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0CiB7CiAgICAgQ29u
dGVudERhdGEqIGMxID0gY29udGVudDsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclN0
eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5bGUuaAkocmV2
aXNpb24gMTYyODIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTdHlsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAgKi8KIAogI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5j
bHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkRhdGFSZWYuaCIKICNpbmNs
dWRlICJGb250LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgpAQCAtNjUsNiArNjYsNyBA
QCBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlbmRlckFyZW5hOwogY2xhc3MgU2hhZG93
VmFsdWU7CiBjbGFzcyBTdHJpbmdJbXBsOworc3RydWN0IEN1cnNvckRhdGE7CiAKIGVudW0gUHNl
dWRvU3RhdGUgeyBQc2V1ZG9Vbmtub3duLCBQc2V1ZG9Ob25lLCBQc2V1ZG9BbnlMaW5rLCBQc2V1
ZG9MaW5rLCBQc2V1ZG9WaXNpdGVkfTsKIApAQCAtODI0LDcgKzgyNiw3IEBAIHB1YmxpYzoKICAg
ICBMZW5ndGggbGluZV9oZWlnaHQ7CiAKICAgICBDYWNoZWRJbWFnZSAqc3R5bGVfaW1hZ2U7Ci0g
ICAgQ2FjaGVkSW1hZ2UgKmN1cnNvcl9pbWFnZTsKKyAgICBWZWN0b3I8Q3Vyc29yRGF0YT4gY3Vy
c29yX2RhdGE7CiAKICAgICBGb250IGZvbnQ7CiAgICAgQ29sb3IgY29sb3I7CkBAIC04NjgsNiAr
ODcwLDE2IEBAIGVudW0gRUN1cnNvciB7CiAgICAgQ1VSU09SX0NPTF9SRVNJWkUsIENVUlNPUl9S
T1dfUkVTSVpFLCBDVVJTT1JfVEVYVCwgQ1VSU09SX1dBSVQsIENVUlNPUl9IRUxQCiB9OwogCitz
dHJ1Y3QgQ3Vyc29yRGF0YSB7CisgICAgQ3Vyc29yRGF0YSgpCisgICAgICAgIDogY3Vyc29ySW1h
Z2UoMCkKKyAgICB7fQorICAgIAorICAgIEludFBvaW50IGhvdFNwb3Q7IC8vIGZvciBDU1MzIHN1
cHBvcnQKKyAgICBDYWNoZWRJbWFnZSogY3Vyc29ySW1hZ2U7IC8vIHdlYWsgcG9pbnRlciwgdGhl
IENTU1ZhbHVlSW1hZ2UgdGFrZXMgY2FyZSBvZiBkZWxldGluZyBjdXJzb3JJbWFnZQorICAgIFN0
cmluZyBjdXJzb3JGcmFnbWVudElkOyAvLyBvbmx5IHVzZWQgZm9yIFNWR0N1cnNvckVsZW1lbnQs
IGEgZGlyZWN0IHBvaW50ZXIgd291bGQgZ2V0IHN0YWxlCit9OworCiBlbnVtIENvbnRlbnRUeXBl
IHsKICAgICBDT05URU5UX05PTkUsIENPTlRFTlRfT0JKRUNULCBDT05URU5UX1RFWFQsIENPTlRF
TlRfQ09VTlRFUgogfTsKQEAgLTEzMTQsNyArMTMyNiw3IEBAIHB1YmxpYzoKIAogICAgIEVDdXJz
b3IgY3Vyc29yKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUN1cnNvcj4oaW5oZXJpdGVk
X2ZsYWdzLl9jdXJzb3Jfc3R5bGUpOyB9CiAgICAgCi0gICAgQ2FjaGVkSW1hZ2UgKmN1cnNvcklt
YWdlKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5jdXJzb3JfaW1hZ2U7IH0KKyAgICBWZWN0
b3I8Q3Vyc29yRGF0YT4gY3Vyc29ycygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Y3Vyc29y
X2RhdGE7IH0KIAogICAgIHNob3J0IHdpZG93cygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+
d2lkb3dzOyB9CiAgICAgc2hvcnQgb3JwaGFucygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+
b3JwaGFuczsgfQpAQCAtMTUyMSw3ICsxNTMzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFk
ZGluZ1JpZ2h0KExlbmd0aCB2KSAgeyAgU0VUX1ZBUihzdXJyb3VuZCxwYWRkaW5nLnJpZ2h0LHYp
IH0KIAogICAgIHZvaWQgc2V0Q3Vyc29yKCBFQ3Vyc29yIGMgKSB7IGluaGVyaXRlZF9mbGFncy5f
Y3Vyc29yX3N0eWxlID0gYzsgfQotICAgIHZvaWQgc2V0Q3Vyc29ySW1hZ2UoIENhY2hlZEltYWdl
ICp2ICkgeyBTRVRfVkFSKGluaGVyaXRlZCxjdXJzb3JfaW1hZ2UsdikgfQorICAgIHZvaWQgYWRk
Q3Vyc29yKENhY2hlZEltYWdlKiwgY29uc3QgSW50UG9pbnQmID0gSW50UG9pbnQoKSk7CisgICAg
dm9pZCBhZGRDdXJzb3IoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRDdXJzb3JzKGNvbnN0
IFZlY3RvcjxDdXJzb3JEYXRhPiYpOwogCiAgICAgYm9vbCBmb3JjZUJhY2tncm91bmRzVG9XaGl0
ZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZF9mbGFncy5fZm9yY2VfYmFja2dyb3VuZHNfdG9f
d2hpdGU7IH0KICAgICB2b2lkIHNldEZvcmNlQmFja2dyb3VuZHNUb1doaXRlKGJvb2wgYj10cnVl
KSB7IGluaGVyaXRlZF9mbGFncy5fZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgPSBiOyB9Cg==
</data>
<flag name="review"
          id="3378"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10487</attachid>
            <date>2006-09-10 11:00:27 -0700</date>
            <delta_ts>2006-09-10 12:58:28 -0700</delta_ts>
            <desc>Another go</desc>
            <filename>6002-8.diff</filename>
            <type>text/plain</type>
            <size>32632</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjI4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMDYtMDktMTAgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAxCisgICAgICAg
IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9tIGN1cnNvcnMKKyAgICAgICAg
Rml4IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTYw
MDIKKyAgICAgICAgV2ViS2l0IGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSBTVkcgPGN1cnNvcj4g
ZWxlbWVudAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzdmcgY3Vyc29yIGltYWdlcy4gQWxz
byBtYWtlIHN1cmUgaG90c3BvdAorICAgICAgICBzZXR0aW5ncyBhcmUgaGFuZGxlZCBjb3JyZWN0
bHkuIEZpbmFsbHkgaW1wbGVtZW50IGZhbGxiYWNrLgorCisgICAgICAgIFdBUk5JTkc6IE5PIFRF
U1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvY3NzcGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL2Nzc3N0
eWxlc2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBw
bHlQcm9wZXJ0eSk6CisgICAgICAgICoga2NhbnZhcy9SZW5kZXJQYXRoLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclBhdGg6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgICogbWFudWFsLXRlc3RzL2NzczMtY3Vyc29y
LXRlc3QyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNlbGVjdEN1cnNvcik6CisgICAgICAgICogcGxhdGZvcm0vQ3Vyc29yLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL0N1cnNvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUN1c3RvbUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3I6OkN1cnNvcik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6ZGlmZik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDdXJzb3JzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvckRh
dGE6OkN1cnNvckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yTGlzdDo6b3BlcmF0b3Jb
XSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JMaXN0OjpzaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cnNvckxpc3Q6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
Y3Vyc29ycyk6CisKIDIwMDYtMDktMDkgIFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBhcm9iZW4uCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTYyODQpCisrKyBXZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc5
Nyw2ICsxNzk3LDggQEAKIAkJQThGRUZCMEIwOTc5RjQ3MjAwNTgzOUZEIC8qIFJlbmRlckZvcmVp
Z25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThGRUZCMDkwOTc5RjQ3MjAwNTgzOUZEIC8qIFJlbmRlckZvcmVpZ25PYmplY3QuY3BwICov
OyB9OwogCQlBOEZFRkIzMTA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThG
RUZCMkYwOTc5RjRGNjAwNTgzOUZEIC8qIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcCAqLzsg
fTsKIAkJQThGRUZCMzIwOTc5RjRGNjAwNTgzOUZEIC8qIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEZFRkIz
MDA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCAqLzsgfTsKKwkJ
QUE3MTUzNjAwQUIwQjlFQzAwRUVFNDlCIC8qIENTU0N1cnNvckltYWdlVmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE3MTUzNUUwQUIwQjlF
QzAwRUVFNDlCIC8qIENTU0N1cnNvckltYWdlVmFsdWUuY3BwICovOyB9OworCQlBQTcxNTM2MTBB
QjBCOUVDMDBFRUU0OUIgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE3MTUzNUYwQUIwQjlFQzAwRUVFNDlCIC8q
IENTU0N1cnNvckltYWdlVmFsdWUuaCAqLzsgfTsKIAkJQUE4NEZDODUwQUEwRkUwODAwNzY5OUFG
IC8qIEpTU1ZHTWV0YWRhdGFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFBODRGQzgzMEFBMEZFMDgwMDc2OTlBRiAvKiBKU1NWR01ldGFk
YXRhRWxlbWVudC5jcHAgKi87IH07CiAJCUFBODRGQzg2MEFBMEZFMDgwMDc2OTlBRiAvKiBKU1NW
R01ldGFkYXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUE4NEZDODQwQUEwRkUwODAwNzY5OUFGIC8qIEpTU1ZHTWV0YWRhdGFFbGVtZW50
LmggKi87IH07CiAJCUFBOThCODdEMEFBQTAyRjgwMDFBNDRDMiAvKiBQYXRoLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBOThCODdDMEFBQTAyRjgw
MDFBNDRDMiAvKiBQYXRoLmNwcCAqLzsgfTsKQEAgLTQwNjEsNiArNDA2Myw4IEBACiAJCUE4RkVG
QjA5MDk3OUY0NzIwMDU4MzlGRCAvKiBSZW5kZXJGb3JlaWduT2JqZWN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJGb3JlaWduT2JqZWN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThGRUZCMkYwOTc5RjRGNjAwNTgzOUZEIC8qIFNW
R0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4RkVGQjMwMDk3OUY0RjYwMDU4MzlGRCAvKiBTVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUE3MTUzNUUwQUIwQjlF
QzAwRUVFNDlCIC8qIENTU0N1cnNvckltYWdlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENTU0N1cnNvckltYWdlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBQTcxNTM1RjBBQjBCOUVDMDBFRUU0OUIgLyogQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTg0RkM4MzBBQTBGRTA4
MDA3Njk5QUYgLyogSlNTVkdNZXRhZGF0YUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHTWV0YWRhdGFFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQUE4NEZDODQwQUEwRkUwODAwNzY5OUFGIC8qIEpTU1ZHTWV0YWRh
dGFFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR01ldGFk
YXRhRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTk4Qjg3QzBBQUEw
MkY4MDAxQTQ0QzIgLyogUGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTg3LDYgKzY1
OTEsOCBAQAogCQlGNTIzRDE4NDAyREU0MkU4MDE4NjM1Q0EgLyogY3NzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBQTcxNTM1RTBBQjBCOUVDMDBFRUU0
OUIgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgKi8sCisJCQkJQUE3MTUzNUYwQUIwQjlFQzAw
RUVFNDlCIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCAqLywKIAkJCQlBODBFNkNEQTBBMTk4OUNB
MDA3RkI4QzUgLyogQ291bnRlci5oICovLAogCQkJCTkzMDcwNUM3MDlFMEM5NUYwMEIxN0ZFNCAv
KiBDb3VudGVyLmlkbCAqLywKIAkJCQlBODBFNkNCQjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTQm9y
ZGVySW1hZ2VWYWx1ZS5jcHAgKi8sCkBAIC03OTAyLDYgKzc5MDgsNyBAQAogCQkJCTg1REYzNDQw
MEFBRkMwRUQwMEU1OUFFMyAvKiBET01LZXlib2FyZEV2ZW50UHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODU3RTBCMjUwQUIwNDM0NjAwMzZFNDQ3IC8qIERPTU1vdXNlRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg1N0UwQjJDMEFCMDQzRkMwMDM2RTQ0NyAvKiBET01Nb3VzZUV2ZW50
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUE3MTUzNjEwQUIwQjlFQzAwRUVFNDlCIC8q
IENTU0N1cnNvckltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NTI2QzM3MEFCMEEx
N0UwMDAzMDJFQSAvKiBET01Ob2RlSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NTI2
QzNFMEFCMEE3NkYwMDAzMDJFQSAvKiBET01Ob2RlSXRlcmF0b3JQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NTUyNkNEMjBBQjBCN0Q5MDAwMzAyRUEgLyogRE9NVHJlZVdhbGtlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04OTI2LDYgKzg5MzMsNyBAQAogCQkJCTg1QzdGNUU4MEFBRkJBRkIw
MDQwMTRERCAvKiBET01XaGVlbEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVGRjMxNUIw
QUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk4NTdFMEIyNjBBQjA0MzQ2MDAzNkU0NDcgLyogRE9NTW91c2VFdmVudC5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCUFBNzE1MzYwMEFCMEI5RUMwMEVFRTQ5QiAvKiBDU1NDdXJzb3JJbWFnZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NTI2QzM4MEFCMEExN0UwMDAzMDJFQSAvKiBET01O
b2RlSXRlcmF0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTUyNkNEMzBBQjBCN0RBMDAwMzAy
RUEgLyogRE9NVHJlZVdhbGtlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1OTEyOEY0MEFCMjQz
MUEwMDIwMjI2NSAvKiBET01IVE1MRW1iZWRFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9u
IDE2Mjg0KQorKysgV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjA3LDU3ICs2MDcsOTAgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q1NTQ29tcHV0ZWRTdHlsZURlYwogICAgIGNhc2UgQ1NTX1BST1BfQ09VTlRFUl9SRVNFVDoKICAg
ICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NfUFJPUF9DVVJTT1I6Ci0gICAgICAgIGlmIChzdHlsZS0+Y3Vyc29ySW1hZ2UoKSkKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmN1cnNvckltYWdlKCkt
PnVybCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7CisgICAgY2FzZSBDU1NfUFJPUF9D
VVJTT1I6IHsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gMDsKKyAgICAgICAgQ1NTVmFs
dWUqIHZhbHVlID0gMDsKKyAgICAgICAgQ3Vyc29yTGlzdCogY3Vyc29ycyA9IHN0eWxlLT5jdXJz
b3JzKCk7CisgICAgICAgIGlmIChjdXJzb3JzICYmIGN1cnNvcnMtPnNpemUoKSA+IDApIHsKKyAg
ICAgICAgICAgIGxpc3QgPSBuZXcgQ1NTVmFsdWVMaXN0OworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDtpIDwgY3Vyc29ycy0+c2l6ZSgpOysraSkKKyAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKCgqY3Vyc29ycylbaV0uY3Vyc29ySW1hZ2Ut
PnVybCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkpOworICAgICAgICB9CiAgICAgICAg
IHN3aXRjaCAoc3R5bGUtPmN1cnNvcigpKSB7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9BVVRP
OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9B
VVRPKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX0FVVE8pOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJT
T1JfQ1JPU1M6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0NST1NTSEFJUik7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9DUk9TU0hBSVIpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBDVVJTT1JfREVGQVVMVDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfREVGQVVMVCk7CisgICAgICAgICAgICAgICAgdmFs
dWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ERUZBVUxUKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1BPSU5URVI6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1BPSU5URVIpOworICAg
ICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUE9JTlRF
Uik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9NT1ZF
OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9N
T1ZFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX01PVkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJT
T1JfRV9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX0VfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX0VfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX05FX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTkVfUkVTSVpFKTsKKyAgICAgICAgICAgICAg
ICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05FX1JFU0laRSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9OV19SRVNJWkU6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05XX1JF
U0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9OV19SRVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBDVVJTT1JfTl9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX05fUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05fUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1NFX1JF
U0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfU0VfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX1NFX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIENVUlNPUl9TV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NXX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFs
dWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TV19SRVNJWkUpOworICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfU19SRVNJWkU6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NfUkVTSVpFKTsK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1Nf
UkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09S
X1dfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9XX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9XX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIENVUlNPUl9FV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0VXX1JFU0laRSk7CisgICAgICAgICAgICAgICAg
dmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FV19SRVNJWkUpOworICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfTlNfUkVTSVpFOgotICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OU19SRVNJ
WkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfTlNfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
Q1VSU09SX05FU1dfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9ORVNXX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ORVNXX1JFU0laRSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9OV1NFX1JFU0laRToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTldTRV9SRVNJWkUp
OworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
TldTRV9SRVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBD
VVJTT1JfQ09MX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfQ09MX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DT0xfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1JPV19SRVNJWkU6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JPV19SRVNJWkUpOworICAg
ICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUk9XX1JF
U0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9U
RVhUOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9URVhUKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX1RFWFQpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBD
VVJTT1JfV0FJVDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfV0FJVCk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9XQUlUKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgQ1VSU09SX0hFTFA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX0hFTFApOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfSEVMUCk7CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAobGlzdCkgeworICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBsaXN0Owor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsK
KyAgICB9CiAgICAgY2FzZSBDU1NfUFJPUF9ESVJFQ1RJT046CiAgICAgICAgIHN3aXRjaCAoc3R5
bGUtPmRpcmVjdGlvbigpKSB7CiAgICAgICAgICAgICBjYXNlIExUUjoKSW5kZXg6IFdlYkNvcmUv
Y3NzL2Nzc3BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNw
cAkocmV2aXNpb24gMTYyODQpCisrKyBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiY3NzcGFyc2VyLmgiCiAKICNpbmNs
dWRlICJDU1NCb3JkZXJJbWFnZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZS5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDaGFyc2V0UnVs
ZS5oIgogI2luY2x1ZGUgIkNTU0ltcG9ydFJ1bGUuaCIKQEAgLTY5NCwyNiArNjk1LDYwIEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGIKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKIAotICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOgorICAgIGNhc2UgQ1NTX1BST1Bf
Q1VSU09SOiB7CiAgICAgICAgIC8vIFs8dXJpPixdKiAgWyBhdXRvIHwgY3Jvc3NoYWlyIHwgZGVm
YXVsdCB8IHBvaW50ZXIgfCBwcm9ncmVzcyB8IG1vdmUgfCBlLXJlc2l6ZSB8IG5lLXJlc2l6ZSB8
CiAgICAgICAgIC8vIG53LXJlc2l6ZSB8IG4tcmVzaXplIHwgc2UtcmVzaXplIHwgc3ctcmVzaXpl
IHwgcy1yZXNpemUgfCB3LXJlc2l6ZSB8IGV3LXJlc2l6ZSB8IAogICAgICAgICAvLyBucy1yZXNp
emUgfCBuZXN3LXJlc2l6ZSB8IG53c2UtcmVzaXplIHwgY29sLXJlc2l6ZSB8IHJvdy1yZXNpemUg
fCB0ZXh0IHwgd2FpdCB8IGhlbHAgXSBdIHwgaW5oZXJpdAotICAgICAgICBpZiAoIXN0cmljdCAm
JiBpZCA9PSBDU1NfVkFMX0hBTkQpIHsgLy8gTVNJRSA1IGNvbXBhdGliaWxpdHkgOi8KLSAgICAg
ICAgICAgIGlkID0gQ1NTX1ZBTF9QT0lOVEVSOwotICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChpZCA+PSBDU1NfVkFMX0FVVE8gJiYgaWQgPD0g
Q1NTX1ZBTF9IRUxQKQotICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsK
KyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gMDsKKyAgICAgICAgd2hpbGUgKHZhbHVlICYm
IHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7CisgICAgICAgICAg
ICBpZiAoIWxpc3QpCisgICAgICAgICAgICAgICAgbGlzdCA9IG5ldyBDU1NWYWx1ZUxpc3Q7IAog
ICAgICAgICAgICAgU3RyaW5nIHVyaSA9IHBhcnNlVVJMKGRvbVN0cmluZyh2YWx1ZS0+c3RyaW5n
KSk7CisjaWYgU1ZHX1NVUFBPUlQKKyAgICAgICAgICAgIGlmICh1cmkuZmluZCgiIyIpID09IDAp
IHsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKHVy
aSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9
IHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgfSBlbHNlCisjZW5kaWYKICAgICAgICAg
ICAgIGlmICghdXJpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0g
bmV3IENTU0ltYWdlVmFsdWUoU3RyaW5nKEtVUkwoc3R5bGVFbGVtZW50LT5iYXNlVVJMKCkuZGVw
cmVjYXRlZFN0cmluZygpLCB1cmkuZGVwcmVjYXRlZFN0cmluZygpKS51cmwoKSksIHN0eWxlRWxl
bWVudCk7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IHdlIGRvbid0IHN1cHBvcnQgZmFsbGJh
Y2sgY3Vyc29ycyB5ZXQsIGJ1dCBpZ25vcmluZyB0aGUgcmVtYWluaW5nIHZhbHVlcwotICAgICAg
ICAgICAgICAgIC8vIHdpbGwgYXQgbGVhc3QgbGV0IGNvbXBsaWFudCBkZWNsYXJhdGlvbnMgcGFy
c2UuCi0gICAgICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcElkLCBwYXJzZWRWYWx1ZSwgaW1w
b3J0YW50KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBJbnRQb2ludCBob3RzcG90OworICAgICAgICAgICAgICAgIHZhbHVlID0g
dmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLT51
bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7CisgICAgICAgICAgICAgICAg
ICAgIGhvdHNwb3Quc2V0WCh2YWx1ZS0+ZlZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgdmFs
dWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICYm
IHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBob3RzcG90LnNldFkodmFsdWUtPmZWYWx1ZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGxpc3Q7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1ND
dXJzb3JJbWFnZVZhbHVlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoS1VS
TChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXByZWNhdGVkU3RyaW5nKCksIHVyaS5kZXByZWNh
dGVkU3RyaW5nKCkpLnVybCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG90c3Bv
dCwgc3R5bGVFbGVtZW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YWx1ZSA9IHZh
bHVlTGlzdC0+bmV4dCgpOyAvLyBjb21tYQorICAgICAgICB9CisgICAgICAgIGlmIChsaXN0ICYm
IGxpc3QtPmxlbmd0aCgpKSB7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGxpc3Q7CisgICAg
ICAgICAgICBpZiAoIXN0cmljdCAmJiAhdmFsdWUpIHsgLy8gbm8gdmFsdWUgYWZ0ZXIgdXJsIGxp
c3QgKE1TSUUgNSBjb21wYXRpYmlsaXR5KQorICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0
ICYmIHZhbHVlLT5pZCA9PSBDU1NfVkFMX0hBTkQpIC8vIE1TSUUgNSBjb21wYXRpYmlsaXR5IDov
CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX1BPSU5URVIpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlICYmIHZhbHVlLT5pZCA+
PSBDU1NfVkFMX0FVVE8gJiYgdmFsdWUtPmlkIDw9IENTU19WQUxfSEVMUCkKKyAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLT5pZCkpOworICAg
ICAgICAgICAgdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgICAgICBkZWxldGUgbGlzdDsKKyAgICAgICAgaWYgKCFz
dHJpY3QgJiYgdmFsdWUtPmlkID09IENTU19WQUxfSEFORCkgeyAvLyBNU0lFIDUgY29tcGF0aWJp
bGl0eSA6LworICAgICAgICAgICAgaWQgPSBDU1NfVkFMX1BPSU5URVI7CisgICAgICAgICAgICB2
YWxpZF9wcmltaXRpdmUgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT5pZCA+PSBD
U1NfVkFMX0FVVE8gJiYgdmFsdWUtPmlkIDw9IENTU19WQUxfSEVMUCkKKyAgICAgICAgICAgIHZh
bGlkX3ByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2Ug
Q1NTX1BST1BfQkFDS0dST1VORF9BVFRBQ0hNRU5UOgogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJ
VF9CQUNLR1JPVU5EX0NMSVA6CkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAkocmV2aXNp
b24gMTYyODQpCisrKyBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNzc3N0eWxlc2VsZWN0b3IuaCIKIAog
I2luY2x1ZGUgIkNTU0JvcmRlckltYWdlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDdXJzb3JJbWFn
ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ltcG9y
dFJ1bGUuaCIKICNpbmNsdWRlICJDU1NNZWRpYVJ1bGUuaCIKQEAgLTIzNzYsMjMgKzIzNzcsNDAg
QEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgIGNhc2UgQ1NT
X1BST1BfQ1VSU09SOgogICAgICAgICBpZiAoaXNJbmhlcml0KSB7CiAgICAgICAgICAgICBzdHls
ZS0+c2V0Q3Vyc29yKHBhcmVudFN0eWxlLT5jdXJzb3IoKSk7Ci0gICAgICAgICAgICBzdHlsZS0+
c2V0Q3Vyc29ySW1hZ2UocGFyZW50U3R5bGUtPmN1cnNvckltYWdlKCkpOworICAgICAgICAgICAg
c3R5bGUtPnNldEN1cnNvcnMocGFyZW50U3R5bGUtPmN1cnNvcnMoKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzSW5pdGlhbCkgewogICAgICAgICAgICAg
c3R5bGUtPnNldEN1cnNvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEN1cnNvcigpKTsKLSAgICAgICAg
ICAgIHN0eWxlLT5zZXRDdXJzb3JJbWFnZSgwKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHsKKyAgICAgICAgaWYgKHZhbHVlLT5p
c1ZhbHVlTGlzdCgpKSB7CisgICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNf
Y2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAgICAgICAgICBpbnQgbGVuID0gbGlzdC0+
bGVuZ3RoKCk7CisgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKENVUlNPUl9BVVRPKTsKKyAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAg
ICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW0oaSk7CisgICAgICAgICAgICAgICAgaWYgKCFp
dGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPihpdGVtKTsKKyAgICAgICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVl
LT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19VUkkpIHsKKyNpZiBTVkdfU1VQUE9SVAorICAgICAgICAgICAgICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuZmluZCgiIyIpID09IDApCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+YWRkQ3Vyc29yKHByaW1pdGl2ZVZhbHVlLT5n
ZXRTdHJpbmdWYWx1ZSgpLnN1YnN0cmluZygxKSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyNlbmRpZgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBD
U1NDdXJzb3JJbWFnZVZhbHVlKiBpbWFnZSA9IHN0YXRpY19jYXN0PENTU0N1cnNvckltYWdlVmFs
dWUqPihwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+YWRk
Q3Vyc29yKGltYWdlLT5pbWFnZShlbGVtZW50LT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKSksIGlt
YWdlLT5ob3RzcG90KCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCisgICAgICAg
ICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IoKEVDdXJzb3IpKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpIC0gQ1NTX1ZBTF9BVVRPKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSBpZiAocHJpbWl0aXZlVmFsdWUpIHsKICAgICAgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZl
VmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKICAgICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfSURFTlQpIHsKICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29y
KChFQ3Vyc29yKShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENTU19WQUxfQVVUTykpOwot
ICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3JJbWFnZSgwKTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewotICAgICAgICAg
ICAgICAgIENTU0ltYWdlVmFsdWUqIGltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+
KHByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKENVUlNP
Ul9BVVRPKTsKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29ySW1hZ2UoaW1hZ2UtPmlt
YWdlKGVsZW1lbnQtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvUmVuZGVyUGF0
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL1JlbmRlclBhdGguY3BwCShyZXZp
c2lvbiAxNjI4NCkKKysrIFdlYkNvcmUva2NhbnZhcy9SZW5kZXJQYXRoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAyLDcgKzMwMiw3IEBAIGJvb2wgUmVuZGVyUGF0aDo6bm9kZUF0UG9pbnQoTm9k
ZUluZm8mIGkKICAgICAKICAgICBib29sIGlzVmlzaWJsZSA9IChzdHlsZSgpLT52aXNpYmlsaXR5
KCkgPT0gVklTSUJMRSk7CiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZp
c2libGUpIHsKLSAgICAgICAgYm9vbCBoYXNGaWxsID0gKHN0eWxlKCktPnN2Z1N0eWxlKCktPmZp
bGxQYWludCgpICYmIHN0eWxlKCktPnN2Z1N0eWxlKCktPmZpbGxQYWludCgpLT5wYWludFR5cGUo
KSAhPSBTVkdfUEFJTlRUWVBFX05PTkUpOworICAgICAgICBib29sIGhhc0ZpbGwgPSAoIXN0eWxl
KCktPnN2Z1N0eWxlKCktPmZpbGxQYWludCgpIHx8IHN0eWxlKCktPnN2Z1N0eWxlKCktPmZpbGxQ
YWludCgpLT5wYWludFR5cGUoKSAhPSBTVkdfUEFJTlRUWVBFX05PTkUpOwogICAgICAgICBib29s
IGhhc1N0cm9rZSA9IChzdHlsZSgpLT5zdmdTdHlsZSgpLT5zdHJva2VQYWludCgpICYmIHN0eWxl
KCktPnN2Z1N0eWxlKCktPnN0cm9rZVBhaW50KCktPnBhaW50VHlwZSgpICE9IFNWR19QQUlOVFRZ
UEVfTk9ORSk7CiAgICAgICAgIEZsb2F0UG9pbnQgaGl0UG9pbnQoX3gsX3kpOwogICAgICAgICBp
ZiAoKGhpdFJ1bGVzLmNhbkhpdFN0cm9rZSAmJiAoaGFzU3Ryb2tlIHx8ICFoaXRSdWxlcy5yZXF1
aXJlU3Ryb2tlKSAmJiBzdHJva2VDb250YWlucyhoaXRQb2ludCwgaGl0UnVsZXMucmVxdWlyZVN0
cm9rZSkpCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkocmV2aXNp
b24gMTYyODQpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgogI2lu
Y2x1ZGUgIlNWR0xlbmd0aC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogU1ZHQ3Vyc29yRWxlbWVudDo6U1ZHQ3Vyc29yRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCAqZG9jKQogICAgIDogU1ZHRWxlbWVudCh0
YWdOYW1lLCBkb2MpCkBAIC04MCw2ICs4MCw4IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWIKICAgICB9CiB9CiAKK30KKwogLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlm
IC8vIFNWR19TVVBQT1JUCiAKSW5kZXg6IFdlYkNvcmUvbWFudWFsLXRlc3RzL2NzczMtY3Vyc29y
LXRlc3QyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYW51YWwtdGVzdHMvY3NzMy1jdXJz
b3ItdGVzdDIuaHRtbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWFudWFsLXRlc3RzL2NzczMt
Y3Vyc29yLXRlc3QyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQ
RSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIKKyAgICJodHRwOi8vd3d3
LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj4KKzxodG1sPgorPGhlYWQ+PHRpdGxlPkN1c3Rv
bSBjdXJzb3IgdGVzdHM8L3RpdGxlPjwvaGVhZD4KKzxib2R5PgorPHA+PGEgaHJlZj0iaHR0cDov
L2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD04OTkxIj5CdWcgLjk5MTwv
YT46IFJFR1JFU1NJT046IG1pc3Npbmcgb3IgYnJva2VuIENTUyBjdXN0b20gY3Vyc29ycyBhcmUg
ZGlzcGxheWVkIGFzIGEgbWlzc2luZyBpbWFnZSBpY29uLjwvcD4KKzxwPk1vdmUgdGhlIGN1cnNv
ciBvdmVyIHRoZSBibHVlIGJveCAtIGl0IHNob3VsZCBub3QgdHVybiBpbnRvIGEgbWlzc2luZyBp
bWFnZSBpY29uLCBhbmQgc2hvdWxkIHR1cm4gaW50byBhbiBJLWJlYW0gb3ZlciB0ZXh0LjwvcD4K
KworPGRpdiBzdHlsZT0id2lkdGg6MTAwcHg7aGVpZ2h0OjUwcHg7YmFja2dyb3VuZC1jb2xvcjps
aWdodGJsdWU7IGN1cnNvcjp1cmwobm9uZXhpc3RlbnQucG5nKSwgYXV0bzsiPjxzcGFuIHN0eWxl
PSJjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIGF1dG87Ij5zb21lIHRleHQ8L3NwYW4+PC9k
aXY+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBweDtoZWlnaHQ6NTBweDtiYWNrZ3JvdW5kLWNvbG9y
OmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChub25leGlzdGVudC5wbmcpOyI+PC9kaXY+CisKKzxocj4K
KzxwPjxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjAwMSI+QnVnIDYwMDE8L2E+OiBXZWJLaXQgZG9lcyBub3QgaGFuZGxlIGZhbGxiYWNrIGN1
c3RvbSBjdXJzb3JzPC9wPgorPHA+PGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4u
b3JnL3Nob3dfYnVnLmNnaT9pZD05MDEzIj5CdWcgOTAxMzwvYT46IExldCBjb3JyZWN0IENTUyBj
dXN0b20gY3Vyc29yIGRlY2xhcmF0aW9ucyBwYXJzZTwvcD4KKzxwPkluIGVhY2ggb2YgdGhlIGJs
dWUgYm94ZXMgYmVsb3csIHRoZSBjdXJzb3Igc2hvdWxkIGJlY29tZSBhIGhlbHAgY3Vyc29yIChx
dWVzdGlvbiBtYXJrKS48L3A+Cis8dGFibGU+PHRyPgorIDx0ZD48ZGl2IHN0eWxlPSJ3aWR0aDox
MDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwo
cmVzb3VyY2VzL2hlbHBDdXJzb3IudGlmZiksIHRleHQ7Ij48L2Rpdj48L3RkPiA8IS0tIFZhbGlk
LCBubyBmYWxsYmFjayBuZWVkZWQgLS0+CisgPHRkPjxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hl
aWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJj
ZXMvaGVscEN1cnNvci50aWZmKTsnPjwvZGl2PjwvdGQ+IDwhLS0gSW52YWxpZCwgYnV0IGFsbG93
ZWQgYnkgV2luSUUgLS0+CisgPHRkPjxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBw
eDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChub25leGlzdGVudC5wbmcp
LCBoZWxwOyc+PC9kaXY+PC90ZD4KKyA8dGQ+PGRpdiBzdHlsZT0nd2lkdGg6MTAwcHg7aGVpZ2h0
OjEwMHB4O2JhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKG5vbmV4aXN0ZW50
LnBuZyksIHVybChjdXN0b20tY3Vyc29ycy5odG1sKSwgdXJsKHVua25vd24tc2NoZW1lOmN1c3Rv
bS1jdXJzb3JzLmh0bWwpLCB1cmwocmVzb3VyY2VzL2hlbHBDdXJzb3IudGlmZiksIHRleHQ7Jz48
L2Rpdj48L3RkPgorIDx0ZD48ZGl2IHN0eWxlPSd3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFj
a2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwobm9uZXhpc3RlbnQucG5nKSwgdXJs
KCJyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmIiksIHRleHQ7Jz48L2Rpdj48L3RkPgorIDx0ZD48
ZGl2IHN0eWxlPSd3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdo
dGJsdWU7IGN1cnNvcjp1cmwocmVzb3VyY2VzL2hlbHBDdXJzb3IudGlmZikgMSAxLCB0ZXh0Oyc+
PC9kaXY+PC90ZD4gPCEtLSBDU1MzIGhvdCBzcG90IC0gdmFsaWQsIG5vIGZhbGxiYWNrIG5lZWRl
ZCAtLT4KKzwvdHI+Cis8L3RhYmxlPgorCis8cD48L3A+Cis8cD48c3BhbiBzdHlsZT0nYmFja2dy
b3VuZC1jb2xvcjpncmF5OyBjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIHVybCgicmVzb3Vy
Y2VzL2hlbHBDdXJzb3IudGlmZiIpOyc+U2hvdWxkIHNob3cgYW4gSS1iZWFtIGN1cnNvci48L3Nw
YW4+PC9wPiA8IS0tIEFuIGludmFsaWQgZGVjbGFyYXRpb24sIGV2ZW4gYnkgV2luSUUgc3RhbmRh
cmRzIC0tPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDE2
Mjg0KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDEzIEBACiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
ImNzc3N0eWxlc2VsZWN0b3IuaCIKIAorI2lmIFNWR19TVVBQT1JUCisjaW5jbHVkZSAiWExpbmtO
YW1lcy5oIgorI2luY2x1ZGUgIlNWR05hbWVzLmgiCisjaW5jbHVkZSAiU1ZHQ3Vyc29yRWxlbWVu
dC5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgRXZlbnROYW1lczsKQEAgLTY0MSwxMSArNjQ4
LDMwIEBAIHN0YXRpYyBDdXJzb3Igc2VsZWN0Q3Vyc29yKGNvbnN0IE1vdXNlRXYKICAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZSA/IG5vZGUtPnJlbmRlcmVyKCkgOiAwOwogICAgIFJl
bmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyID8gcmVuZGVyZXItPnN0eWxlKCkgOiAwOwogCi0g
ICAgaWYgKHN0eWxlICYmIHN0eWxlLT5jdXJzb3JJbWFnZSgpICYmICFzdHlsZS0+Y3Vyc29ySW1h
Z2UoKS0+aW1hZ2UoKS0+aXNOdWxsKCkpCi0gICAgICAgIGlmICghc3R5bGUtPmN1cnNvckltYWdl
KCktPmlzRXJyb3JJbWFnZSgpKQotICAgICAgICAgICAgcmV0dXJuIHN0eWxlLT5jdXJzb3JJbWFn
ZSgpLT5pbWFnZSgpOwotICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3R5bGUgPSAwOyAvLyBG
YWxsYmFjayB0byBDVVJTT1JfQVVUTworICAgIGlmIChzdHlsZSAmJiBzdHlsZS0+Y3Vyc29ycygp
KSB7CisgICAgICAgIGNvbnN0IEN1cnNvckxpc3QqIGN1cnNvcnMgPSBzdHlsZS0+Y3Vyc29ycygp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY3Vyc29ycy0+c2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIENhY2hlZEltYWdlKiBjaW1hZ2UgPSAoKmN1cnNvcnMpW2ldLmN1cnNv
ckltYWdlOworICAgICAgICAgICAgSW50UG9pbnQgaG90U3BvdCA9ICgqY3Vyc29ycylbaV0uaG90
U3BvdDsKKyAgICAgICAgICAgIGlmICghY2ltYWdlKSB7CisjaWYgU1ZHX1NVUFBPUlQKKyAgICAg
ICAgICAgICAgICBFbGVtZW50KiBlID0gbm9kZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQo
KCpjdXJzb3JzKVtpXS5jdXJzb3JGcmFnbWVudElkLmRlcHJlY2F0ZWRTdHJpbmcoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKGUgJiYgZS0+aGFzVGFnTmFtZShXZWJDb3JlOjpTVkdOYW1lczo6Y3Vy
c29yVGFnKSkgeworICAgICAgICAgICAgICAgICAgICBob3RTcG90LnNldFgoaW50KHN0YXRpY19j
YXN0PFNWR0N1cnNvckVsZW1lbnQqPihlKS0+eEJhc2VWYWx1ZSgpLT52YWx1ZSgpKSk7CisgICAg
ICAgICAgICAgICAgICAgIGhvdFNwb3Quc2V0WShpbnQoc3RhdGljX2Nhc3Q8U1ZHQ3Vyc29yRWxl
bWVudCo+KGUpLT55QmFzZVZhbHVlKCktPnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
Y2ltYWdlID0gc3RhdGljX2Nhc3Q8U1ZHQ3Vyc29yRWxlbWVudCo+KGUpLT5jYWNoZWRJbWFnZSgp
OworICAgICAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICAgICAgY29udGludWU7Cisj
ZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjaW1hZ2UtPmltYWdlKCktPmlz
TnVsbCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFjaW1hZ2Ut
PmlzRXJyb3JJbWFnZSgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEN1cnNvcihjaW1hZ2Ut
PmltYWdlKCksIGhvdFNwb3QpOworfQorICAgICAgICB9CisgICAgfQogCiAgICAgc3dpdGNoIChz
dHlsZSA/IHN0eWxlLT5jdXJzb3IoKSA6IENVUlNPUl9BVVRPKSB7CiAgICAgICAgIGNhc2UgQ1VS
U09SX0FVVE86IHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaAkocmV2aXNpb24gMTYyODQpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL0N1cnNvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw4IEBAIGNsYXNz
IE5TQ3Vyc29yOwogI2VuZGlmCiAjZW5kaWYKIAorI2luY2x1ZGUgIkludFBvaW50LmgiCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEltYWdlOwpAQCAtNjksNyArNzEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgeyB9CiAKLSAgICAgICAgQ3Vyc29y
KEltYWdlKik7CisgICAgICAgIEN1cnNvcihJbWFnZSosIEludFBvaW50IGhvdHNwb3QgPSBJbnRQ
b2ludCgpKTsKICAgICAgICAgQ3Vyc29yKGNvbnN0IEN1cnNvciYpOwogICAgICAgICB+Q3Vyc29y
KCk7CiAgICAgICAgIEN1cnNvciYgb3BlcmF0b3I9KGNvbnN0IEN1cnNvciYpOwpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vbWFjL0N1cnNvck1hYy5tbQkocmV2aXNpb24gMTYyODQpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL21hYy9DdXJzb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDE0ICs0MSwxNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBTaW1wbGUgTlNDdXJzb3IgY2FsbHMgc2hvdWxkbid0IG5l
ZWQgcHJvdGVjdGlvbiwKIC8vIGJ1dCBjcmVhdGluZyBhIGN1cnNvciB3aXRoIGEgYmFkIGltYWdl
IG1pZ2h0IHRocm93LgogCi1zdGF0aWMgTlNDdXJzb3IqIGNyZWF0ZUN1c3RvbUN1cnNvcihJbWFn
ZSogaW1hZ2UpCitzdGF0aWMgTlNDdXJzb3IqIGNyZWF0ZUN1c3RvbUN1cnNvcihJbWFnZSogaW1h
Z2UsIEludFBvaW50IGhvdHNwb3QpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBjdXJzb3Igd29uJ3Qg
YW5pbWF0ZS4gIE5vdCBzdXJlIGlmIHRoYXQncyBhIGJpZyBkZWFsLgogICAgIE5TSW1hZ2UqIGlt
ZyA9IGltYWdlLT5nZXROU0ltYWdlKCk7CiAgICAgaWYgKCFpbWcpCiAgICAgICAgIHJldHVybiAw
OwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tOU0N1cnNv
ciBhbGxvY10gaW5pdFdpdGhJbWFnZTppbWcgaG90U3BvdDpOU1plcm9Qb2ludF07CisgICAgcmV0
dXJuIFtbTlNDdXJzb3IgYWxsb2NdIGluaXRXaXRoSW1hZ2U6aW1nIGhvdFNwb3Q6aG90c3BvdF07
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICByZXR1cm4gMDsKIH0KQEAgLTc0
LDggKzc0LDggQEAgc3RhdGljIE5TQ3Vyc29yKiBsZWFrTmFtZWRDdXJzb3IoY29uc3QgYwogICAg
IHJldHVybiAwOwogfQogCi1DdXJzb3I6OkN1cnNvcihJbWFnZSogaW1hZ2UpCi0gICAgOiBtX2lt
cGwoSGFyZFJldGFpbldpdGhOU1JlbGVhc2UoY3JlYXRlQ3VzdG9tQ3Vyc29yKGltYWdlKSkpCitD
dXJzb3I6OkN1cnNvcihJbWFnZSogaW1hZ2UsIEludFBvaW50IGhvdHNwb3QpCisgICAgOiBtX2lt
cGwoSGFyZFJldGFpbldpdGhOU1JlbGVhc2UoY3JlYXRlQ3VzdG9tQ3Vyc29yKGltYWdlLCBob3Rz
cG90KSkpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclN0eWxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9u
IDE2Mjg0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MTAsNyArNTEwLDcgQEAgYm9vbCBTdHlsZUNTUzNJbmhlcml0ZWREYXRhOjpzaGFk
b3dEYXRhRQogU3R5bGVJbmhlcml0ZWREYXRhOjpTdHlsZUluaGVyaXRlZERhdGEoKQogICAgIDog
aW5kZW50KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudCgpKSwgbGluZV9oZWlnaHQoUmVu
ZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpLCAKICAgICAgIHN0eWxlX2ltYWdlKFJlbmRl
clN0eWxlOjppbml0aWFsTGlzdFN0eWxlSW1hZ2UoKSksCi0gICAgICBjdXJzb3JfaW1hZ2UoMCks
IGNvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsQ29sb3IoKSksIAorICAgICAgY29sb3IoUmVuZGVy
U3R5bGU6OmluaXRpYWxDb2xvcigpKSwgCiAgICAgICBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5n
KFJlbmRlclN0eWxlOjppbml0aWFsSG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSksIAogICAgICAg
dmVydGljYWxfYm9yZGVyX3NwYWNpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxWZXJ0aWNhbEJvcmRl
clNwYWNpbmcoKSksCiAgICAgICB3aWRvd3MoUmVuZGVyU3R5bGU6OmluaXRpYWxXaWRvd3MoKSks
IG9ycGhhbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcnBoYW5zKCkpLApAQCAtNTI1LDggKzUyNSw4
IEBAIFN0eWxlSW5oZXJpdGVkRGF0YTo6flN0eWxlSW5oZXJpdGVkRGF0YSgKIFN0eWxlSW5oZXJp
dGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYgbyAp
CiAgICAgOiBTaGFyZWQ8U3R5bGVJbmhlcml0ZWREYXRhPigpLAogICAgICAgaW5kZW50KCBvLmlu
ZGVudCApLCBsaW5lX2hlaWdodCggby5saW5lX2hlaWdodCApLCBzdHlsZV9pbWFnZSggby5zdHls
ZV9pbWFnZSApLAotICAgICAgY3Vyc29yX2ltYWdlKCBvLmN1cnNvcl9pbWFnZSApLCBmb250KCBv
LmZvbnQgKSwKLSAgICAgIGNvbG9yKCBvLmNvbG9yICksCisgICAgICBjdXJzb3JfZGF0YShvLmN1
cnNvcl9kYXRhKSwKKyAgICAgIGZvbnQoIG8uZm9udCApLCBjb2xvciggby5jb2xvciApLAogICAg
ICAgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyggby5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5n
ICksCiAgICAgICB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyggby52ZXJ0aWNhbF9ib3JkZXJfc3Bh
Y2luZyApLAogICAgICAgd2lkb3dzKG8ud2lkb3dzKSwgb3JwaGFucyhvLm9ycGhhbnMpLCBwYWdl
X2JyZWFrX2luc2lkZShvLnBhZ2VfYnJlYWtfaW5zaWRlKQpAQCAtNTM5LDcgKzUzOSw3IEBAIGJv
b2wgU3R5bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnMKICAgICAgICAgaW5kZW50ID09
IG8uaW5kZW50ICYmCiAgICAgICAgIGxpbmVfaGVpZ2h0ID09IG8ubGluZV9oZWlnaHQgJiYKICAg
ICAgICAgc3R5bGVfaW1hZ2UgPT0gby5zdHlsZV9pbWFnZSAmJgotICAgICAgICBjdXJzb3JfaW1h
Z2UgPT0gby5jdXJzb3JfaW1hZ2UgJiYKKyAgICAgICAgY3Vyc29yX2RhdGEgPT0gby5jdXJzb3Jf
ZGF0YSAmJgogICAgICAgICBmb250ID09IG8uZm9udCAmJgogICAgICAgICBjb2xvciA9PSBvLmNv
bG9yICYmCiAgICAgICAgIGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcgPT0gby5ob3Jpem9udGFs
X2JvcmRlcl9zcGFjaW5nICYmCkBAIC04MjQsNyArODI0LDcgQEAgUmVuZGVyU3R5bGU6OkRpZmYg
UmVuZGVyU3R5bGU6OmRpZmYoIGNvbgogICAgICAgICAhKGluaGVyaXRlZC0+aW5kZW50ID09IG90
aGVyLT5pbmhlcml0ZWQtPmluZGVudCkgfHwKICAgICAgICAgIShpbmhlcml0ZWQtPmxpbmVfaGVp
Z2h0ID09IG90aGVyLT5pbmhlcml0ZWQtPmxpbmVfaGVpZ2h0KSB8fAogICAgICAgICAhKGluaGVy
aXRlZC0+c3R5bGVfaW1hZ2UgPT0gb3RoZXItPmluaGVyaXRlZC0+c3R5bGVfaW1hZ2UpIHx8Ci0g
ICAgICAgICEoaW5oZXJpdGVkLT5jdXJzb3JfaW1hZ2UgPT0gb3RoZXItPmluaGVyaXRlZC0+Y3Vy
c29yX2ltYWdlKSB8fAorICAgICAgICAhKGluaGVyaXRlZC0+Y3Vyc29yX2RhdGEgPT0gb3RoZXIt
PmluaGVyaXRlZC0+Y3Vyc29yX2RhdGEpIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT5mb250ID09
IG90aGVyLT5pbmhlcml0ZWQtPmZvbnQpIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT5ob3Jpem9u
dGFsX2JvcmRlcl9zcGFjaW5nID09IG90aGVyLT5pbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVy
X3NwYWNpbmcpIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2lu
ZyA9PSBvdGhlci0+aW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZykgfHwKQEAgLTk4
Myw2ICs5ODMsMzAgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q2xpcCggTGVuZ3RoIHRvcCwgTAog
ICAgIGRhdGEtPmNsaXAubGVmdCA9IGxlZnQ7CiB9CiAKK3ZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1
cnNvcihDYWNoZWRJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQoreworICAg
IEN1cnNvckRhdGEgZGF0YTsKKyAgICBkYXRhLmN1cnNvckltYWdlID0gaW1hZ2U7CisgICAgZGF0
YS5ob3RTcG90ID0gaG90U3BvdDsKKyAgICBpZiAoIWluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vyc29y
X2RhdGEpCisgICAgICAgIGluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vyc29yX2RhdGEgPSBuZXcgQ3Vy
c29yTGlzdCgpOworICAgIGluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vyc29yX2RhdGEtPmFwcGVuZChk
YXRhKTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3Vyc29yKGNvbnN0IFN0cmluZyYgaWQp
Cit7CisgICAgQ3Vyc29yRGF0YSBkYXRhOworICAgIGRhdGEuY3Vyc29yRnJhZ21lbnRJZCA9IGlk
OworICAgIGlmICghaW5oZXJpdGVkLmFjY2VzcygpLT5jdXJzb3JfZGF0YSkKKyAgICAgICAgaW5o
ZXJpdGVkLmFjY2VzcygpLT5jdXJzb3JfZGF0YSA9IG5ldyBDdXJzb3JMaXN0KCk7CisgICAgaW5o
ZXJpdGVkLmFjY2VzcygpLT5jdXJzb3JfZGF0YS0+YXBwZW5kKGRhdGEpOworfQorCit2b2lkIFJl
bmRlclN0eWxlOjpzZXRDdXJzb3JzKEN1cnNvckxpc3QqIG90aGVyKQoreworICAgIGluaGVyaXRl
ZC5hY2Nlc3MoKS0+Y3Vyc29yX2RhdGEgPSBvdGhlcjsKK30KKwogYm9vbCBSZW5kZXJTdHlsZTo6
Y29udGVudERhdGFFcXVpdmFsZW50KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25z
dAogewogICAgIENvbnRlbnREYXRhKiBjMSA9IGNvbnRlbnQ7CkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clN0eWxlLmgJKHJldmlzaW9uIDE2Mjg0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogICovCiAKICNpbmNsdWRlICJD
b2xvci5oIgorI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJEYXRh
UmVmLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAg
LTYyLDYgKzYzLDggQEAgdXNpbmcgc3RkOjptYXg7CiBjbGFzcyBDU1NTdHlsZVNlbGVjdG9yOwog
Y2xhc3MgQ2FjaGVkSW1hZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKK3N0cnVjdCBDdXJzb3JE
YXRhOworY2xhc3MgQ3Vyc29yTGlzdDsKIGNsYXNzIFJlbmRlckFyZW5hOwogY2xhc3MgU2hhZG93
VmFsdWU7CiBjbGFzcyBTdHJpbmdJbXBsOwpAQCAtODI0LDcgKzgyNyw3IEBAIHB1YmxpYzoKICAg
ICBMZW5ndGggbGluZV9oZWlnaHQ7CiAKICAgICBDYWNoZWRJbWFnZSAqc3R5bGVfaW1hZ2U7Ci0g
ICAgQ2FjaGVkSW1hZ2UgKmN1cnNvcl9pbWFnZTsKKyAgICBSZWZQdHI8Q3Vyc29yTGlzdD4gY3Vy
c29yX2RhdGE7CiAKICAgICBGb250IGZvbnQ7CiAgICAgQ29sb3IgY29sb3I7CkBAIC04NjgsNiAr
ODcxLDMxIEBAIGVudW0gRUN1cnNvciB7CiAgICAgQ1VSU09SX0NPTF9SRVNJWkUsIENVUlNPUl9S
T1dfUkVTSVpFLCBDVVJTT1JfVEVYVCwgQ1VSU09SX1dBSVQsIENVUlNPUl9IRUxQCiB9OwogCitz
dHJ1Y3QgQ3Vyc29yRGF0YSB7CisgICAgQ3Vyc29yRGF0YSgpCisgICAgICAgIDogY3Vyc29ySW1h
Z2UoMCkKKyAgICB7fQorICAgIAorICAgIEludFBvaW50IGhvdFNwb3Q7IC8vIGZvciBDU1MzIHN1
cHBvcnQKKyAgICBDYWNoZWRJbWFnZSogY3Vyc29ySW1hZ2U7IC8vIHdlYWsgcG9pbnRlciwgdGhl
IENTU1ZhbHVlSW1hZ2UgdGFrZXMgY2FyZSBvZiBkZWxldGluZyBjdXJzb3JJbWFnZQorICAgIFN0
cmluZyBjdXJzb3JGcmFnbWVudElkOyAvLyBvbmx5IHVzZWQgZm9yIFNWR0N1cnNvckVsZW1lbnQs
IGEgZGlyZWN0IHBvaW50ZXIgd291bGQgZ2V0IHN0YWxlCit9OworCitjbGFzcyBDdXJzb3JMaXN0
IDogcHVibGljIFNoYXJlZDxDdXJzb3JMaXN0PgoreworcHVibGljOgorICAgIGNvbnN0IEN1cnNv
ckRhdGEgJm9wZXJhdG9yW10oaW50IGkpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIG1faW1wbFtp
XTsKKyAgICB9CisgICAgY29uc3QgQ3Vyc29yRGF0YSAmb3BlcmF0b3JbXShpbnQgaSkgeworICAg
ICAgICByZXR1cm4gbV9pbXBsW2ldOworICAgIH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9pbXBsLnNpemUoKTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IEN1cnNvckRh
dGEmIGN1cnNvckRhdGEpIHsgbV9pbXBsLmFwcGVuZChjdXJzb3JEYXRhKTsgfQorICAgIFZlY3Rv
cjxDdXJzb3JEYXRhPiBtX2ltcGw7Cit9OworCiBlbnVtIENvbnRlbnRUeXBlIHsKICAgICBDT05U
RU5UX05PTkUsIENPTlRFTlRfT0JKRUNULCBDT05URU5UX1RFWFQsIENPTlRFTlRfQ09VTlRFUgog
fTsKQEAgLTEzMTQsNyArMTM0Miw3IEBAIHB1YmxpYzoKIAogICAgIEVDdXJzb3IgY3Vyc29yKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUN1cnNvcj4oaW5oZXJpdGVkX2ZsYWdzLl9jdXJz
b3Jfc3R5bGUpOyB9CiAgICAgCi0gICAgQ2FjaGVkSW1hZ2UgKmN1cnNvckltYWdlKCkgY29uc3Qg
eyByZXR1cm4gaW5oZXJpdGVkLT5jdXJzb3JfaW1hZ2U7IH0KKyAgICBDdXJzb3JMaXN0KiBjdXJz
b3JzKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5jdXJzb3JfZGF0YS5nZXQoKTsgfQogCiAg
ICAgc2hvcnQgd2lkb3dzKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT53aWRvd3M7IH0KICAg
ICBzaG9ydCBvcnBoYW5zKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5vcnBoYW5zOyB9CkBA
IC0xNTIxLDcgKzE1NDksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYWRkaW5nUmlnaHQoTGVu
Z3RoIHYpICB7ICBTRVRfVkFSKHN1cnJvdW5kLHBhZGRpbmcucmlnaHQsdikgfQogCiAgICAgdm9p
ZCBzZXRDdXJzb3IoIEVDdXJzb3IgYyApIHsgaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGUg
PSBjOyB9Ci0gICAgdm9pZCBzZXRDdXJzb3JJbWFnZSggQ2FjaGVkSW1hZ2UgKnYgKSB7IFNFVF9W
QVIoaW5oZXJpdGVkLGN1cnNvcl9pbWFnZSx2KSB9CisgICAgdm9pZCBhZGRDdXJzb3IoQ2FjaGVk
SW1hZ2UqLCBjb25zdCBJbnRQb2ludCYgPSBJbnRQb2ludCgpKTsKKyAgICB2b2lkIGFkZEN1cnNv
cihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEN1cnNvcnMoQ3Vyc29yTGlzdCopOwogCiAg
ICAgYm9vbCBmb3JjZUJhY2tncm91bmRzVG9XaGl0ZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRl
ZF9mbGFncy5fZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGU7IH0KICAgICB2b2lkIHNldEZvcmNl
QmFja2dyb3VuZHNUb1doaXRlKGJvb2wgYj10cnVlKSB7IGluaGVyaXRlZF9mbGFncy5fZm9yY2Vf
YmFja2dyb3VuZHNfdG9fd2hpdGUgPSBiOyB9Cg==
</data>
<flag name="review"
          id="3381"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10491</attachid>
            <date>2006-09-10 13:58:18 -0700</date>
            <delta_ts>2006-09-10 19:56:35 -0700</delta_ts>
            <desc>Another attempt</desc>
            <filename>6002-8.diff</filename>
            <type>text/plain</type>
            <size>32216</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjI4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMDYtMDktMTAgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAxCisgICAgICAg
IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9tIGN1cnNvcnMKKyAgICAgICAg
Rml4IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTYw
MDIKKyAgICAgICAgV2ViS2l0IGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSBTVkcgPGN1cnNvcj4g
ZWxlbWVudAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzdmcgY3Vyc29yIGltYWdlcy4gQWxz
byBtYWtlIHN1cmUgaG90c3BvdAorICAgICAgICBzZXR0aW5ncyBhcmUgaGFuZGxlZCBjb3JyZWN0
bHkuIEZpbmFsbHkgaW1wbGVtZW50IGZhbGxiYWNrLgorCisgICAgICAgIFdBUk5JTkc6IE5PIFRF
U1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvY3NzcGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL2Nzc3N0
eWxlc2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBw
bHlQcm9wZXJ0eSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwOgor
ICAgICAgICAqIG1hbnVhbC10ZXN0cy9jc3MzLWN1cnNvci10ZXN0Mi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RDdXJz
b3IpOgorICAgICAgICAqIHBsYXRmb3JtL0N1cnNvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9DdXJzb3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDdXN0b21DdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yOjpDdXJzb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUluaGVyaXRlZERhdGE6OlN0
eWxlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUluaGVyaXRlZERhdGE6
Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmYpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0Q3Vyc29ycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclN0
eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JEYXRhOjpDdXJzb3JEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cnNvckxpc3Q6Om9wZXJhdG9yW10pOgorICAgICAgICAoV2ViQ29yZTo6
Q3Vyc29yTGlzdDo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JMaXN0OjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmN1cnNvcnMpOgorCiAyMDA2LTA5LTEw
ICBFcmljIFNlaWRlbCAgPGVyaWNAZXNlaWRlbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
ZGFyaW4uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTYyODYpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc5Nyw2ICsxNzk3LDggQEAKIAkJQThGRUZCMEIwOTc5
RjQ3MjAwNTgzOUZEIC8qIFJlbmRlckZvcmVpZ25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThGRUZCMDkwOTc5RjQ3MjAwNTgzOUZEIC8q
IFJlbmRlckZvcmVpZ25PYmplY3QuY3BwICovOyB9OwogCQlBOEZFRkIzMTA5NzlGNEY2MDA1ODM5
RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThGRUZCMkYwOTc5RjRGNjAwNTgzOUZEIC8qIFNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50LmNwcCAqLzsgfTsKIAkJQThGRUZCMzIwOTc5RjRGNjAwNTgzOUZE
IC8qIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOEZFRkIzMDA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuaCAqLzsgfTsKKwkJQUE3MTUzNjAwQUIwQjlFQzAwRUVFNDlCIC8qIENT
U0N1cnNvckltYWdlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUE3MTUzNUUwQUIwQjlFQzAwRUVFNDlCIC8qIENTU0N1cnNvckltYWdlVmFs
dWUuY3BwICovOyB9OworCQlBQTcxNTM2MTBBQjBCOUVDMDBFRUU0OUIgLyogQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QUE3MTUzNUYwQUIwQjlFQzAwRUVFNDlCIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCAqLzsgfTsK
IAkJQUE4NEZDODUwQUEwRkUwODAwNzY5OUFGIC8qIEpTU1ZHTWV0YWRhdGFFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBODRGQzgzMEFB
MEZFMDgwMDc2OTlBRiAvKiBKU1NWR01ldGFkYXRhRWxlbWVudC5jcHAgKi87IH07CiAJCUFBODRG
Qzg2MEFBMEZFMDgwMDc2OTlBRiAvKiBKU1NWR01ldGFkYXRhRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE4NEZDODQwQUEwRkUwODAwNzY5
OUFGIC8qIEpTU1ZHTWV0YWRhdGFFbGVtZW50LmggKi87IH07CiAJCUFBOThCODdEMEFBQTAyRjgw
MDFBNDRDMiAvKiBQYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFBOThCODdDMEFBQTAyRjgwMDFBNDRDMiAvKiBQYXRoLmNwcCAqLzsgfTsKQEAg
LTQwNDQsNiArNDA0Niw4IEBACiAJCUE4RkVGQjA5MDk3OUY0NzIwMDU4MzlGRCAvKiBSZW5kZXJG
b3JlaWduT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW5kZXJGb3JlaWduT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThG
RUZCMkYwOTc5RjRGNjAwNTgzOUZEIC8qIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RkVGQjMwMDk3OUY0RjYwMDU4
MzlGRCAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQUE3MTUzNUUwQUIwQjlFQzAwRUVFNDlCIC8qIENTU0N1cnNvckltYWdlVmFs
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0N1cnNvcklt
YWdlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQTcxNTM1RjBBQjBC
OUVDMDBFRUU0OUIgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBQTg0RkM4MzBBQTBGRTA4MDA3Njk5QUYgLyogSlNTVkdNZXRhZGF0YUVsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHTWV0YWRh
dGFFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUE4NEZDODQwQUEw
RkUwODAwNzY5OUFGIC8qIEpTU1ZHTWV0YWRhdGFFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1NWR01ldGFkYXRhRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBQTk4Qjg3QzBBQUEwMkY4MDAxQTQ0QzIgLyogUGF0aC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02NTcwLDYgKzY1NzQsOCBAQAogCQlGNTIzRDE4NDAyREU0MkU4MDE4
NjM1Q0EgLyogY3NzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlBQTcxNTM1RTBBQjBCOUVDMDBFRUU0OUIgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAg
Ki8sCisJCQkJQUE3MTUzNUYwQUIwQjlFQzAwRUVFNDlCIC8qIENTU0N1cnNvckltYWdlVmFsdWUu
aCAqLywKIAkJCQlBODBFNkNEQTBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5oICovLAogCQkJ
CTkzMDcwNUM3MDlFMEM5NUYwMEIxN0ZFNCAvKiBDb3VudGVyLmlkbCAqLywKIAkJCQlBODBFNkNC
QjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTQm9yZGVySW1hZ2VWYWx1ZS5jcHAgKi8sCkBAIC03ODg1
LDYgKzc4OTEsNyBAQAogCQkJCTg1REYzNDQwMEFBRkMwRUQwMEU1OUFFMyAvKiBET01LZXlib2Fy
ZEV2ZW50UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU3RTBCMjUwQUIwNDM0NjAwMzZF
NDQ3IC8qIERPTU1vdXNlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1N0UwQjJDMEFCMDQz
RkMwMDM2RTQ0NyAvKiBET01Nb3VzZUV2ZW50UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QUE3MTUzNjEwQUIwQjlFQzAwRUVFNDlCIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1NTI2QzM3MEFCMEExN0UwMDAzMDJFQSAvKiBET01Ob2RlSXRlcmF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg1NTI2QzNFMEFCMEE3NkYwMDAzMDJFQSAvKiBET01Ob2Rl
SXRlcmF0b3JQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTUyNkNEMjBBQjBCN0Q5MDAw
MzAyRUEgLyogRE9NVHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8sCkBAIC04OTAzLDYgKzg5MTAs
NyBAQAogCQkJCTg1QzdGNUU4MEFBRkJBRkIwMDQwMTRERCAvKiBET01XaGVlbEV2ZW50Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODVGRjMxNUIwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJk
RXZlbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTdFMEIyNjBBQjA0MzQ2MDAzNkU0NDcgLyog
RE9NTW91c2VFdmVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCUFBNzE1MzYwMEFCMEI5RUMwMEVF
RTQ5QiAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NTI2
QzM4MEFCMEExN0UwMDAzMDJFQSAvKiBET01Ob2RlSXRlcmF0b3IubW0gaW4gU291cmNlcyAqLywK
IAkJCQk4NTUyNkNEMzBBQjBCN0RBMDAwMzAyRUEgLyogRE9NVHJlZVdhbGtlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTg1OTEyOEY0MEFCMjQzMUEwMDIwMjI2NSAvKiBET01IVE1MRW1iZWRFbGVt
ZW50Lm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDE2Mjg2KQorKysgV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA3LDU3ICs2MDcs
OTAgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgIGNhc2Ug
Q1NTX1BST1BfQ09VTlRFUl9SRVNFVDoKICAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9DVVJTT1I6Ci0gICAgICAgIGlmIChz
dHlsZS0+Y3Vyc29ySW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoc3R5bGUtPmN1cnNvckltYWdlKCktPnVybCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1VSSSk7CisgICAgY2FzZSBDU1NfUFJPUF9DVVJTT1I6IHsKKyAgICAgICAgQ1NTVmFsdWVMaXN0
KiBsaXN0ID0gMDsKKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gMDsKKyAgICAgICAgQ3Vyc29y
TGlzdCogY3Vyc29ycyA9IHN0eWxlLT5jdXJzb3JzKCk7CisgICAgICAgIGlmIChjdXJzb3JzICYm
IGN1cnNvcnMtPnNpemUoKSA+IDApIHsKKyAgICAgICAgICAgIGxpc3QgPSBuZXcgQ1NTVmFsdWVM
aXN0OworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDtpIDwgY3Vyc29ycy0+c2l6ZSgp
OysraSkKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVl
KCgqY3Vyc29ycylbaV0uY3Vyc29ySW1hZ2UtPnVybCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1VSSSkpOworICAgICAgICB9CiAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmN1cnNvcigpKSB7CiAg
ICAgICAgICAgICBjYXNlIENVUlNPUl9BVVRPOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfQ1JPU1M6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NST1NTSEFJUik7CisgICAgICAgICAg
ICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DUk9TU0hBSVIpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfREVGQVVMVDoK
LSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfREVG
QVVMVCk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9ERUZBVUxUKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
Q1VSU09SX1BPSU5URVI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX1BPSU5URVIpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfUE9JTlRFUik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIENVUlNPUl9NT1ZFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9NT1ZFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX01PVkUpOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfRV9SRVNJWkU6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0VfUkVTSVpFKTsKKyAgICAgICAg
ICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0VfUkVTSVpFKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX05FX1JFU0la
RToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
TkVfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX05FX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIENVUlNPUl9OV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX05XX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUg
PSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OV19SRVNJWkUpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfTl9SRVNJWkU6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05fUkVTSVpFKTsKKyAg
ICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05fUkVT
SVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX1NFX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0VfUkVTSVpFKTsKKyAgICAgICAgICAgICAg
ICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NFX1JFU0laRSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9TV19SRVNJWkU6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NXX1JF
U0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9TV19SRVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBDVVJTT1JfU19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1NfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1dfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9XX1JFU0laRSk7CisgICAgICAgICAg
ICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9XX1JFU0laRSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9FV19SRVNJWkU6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0VX
X1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9FV19SRVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBDVVJTT1JfTlNfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9OU19SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTlNfUkVTSVpFKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX05FU1dfUkVTSVpFOgotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ORVNXX1JFU0laRSk7
CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9O
RVNXX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENV
UlNPUl9OV1NFX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfTldTRV9SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTldTRV9SRVNJWkUpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfQ09MX1JFU0laRToKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ09MX1JFU0laRSk7Cisg
ICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DT0xf
UkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09S
X1JPV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX1JPV19SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfUk9XX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9URVhUOgotICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9URVhUKTsKKyAgICAgICAgICAgICAgICB2YWx1
ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RFWFQpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfV0FJVDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV0FJVCk7CisgICAgICAgICAgICAg
ICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9XQUlUKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0hFTFA6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hFTFApOworICAgICAg
ICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSEVMUCk7CiAg
ICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAw
OworICAgICAgICBpZiAobGlzdCkgeworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICB9CisgICAgICAgIEFTU0VSVCh2YWx1
ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CiAgICAgY2FzZSBDU1NfUFJPUF9ESVJF
Q1RJT046CiAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmRpcmVjdGlvbigpKSB7CiAgICAgICAgICAg
ICBjYXNlIExUUjoKSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcAkocmV2aXNpb24gMTYyODYpCisrKyBXZWJDb3Jl
L2Nzcy9jc3NwYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5j
bHVkZSAiY3NzcGFyc2VyLmgiCiAKICNpbmNsdWRlICJDU1NCb3JkZXJJbWFnZVZhbHVlLmgiCisj
aW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUu
aCIKICNpbmNsdWRlICJDU1NDaGFyc2V0UnVsZS5oIgogI2luY2x1ZGUgIkNTU0ltcG9ydFJ1bGUu
aCIKQEAgLTY5NCwyNiArNjk1LDYxIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBw
cm9wSWQsIGIKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTX1BST1Bf
Q1VSU09SOgorICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOiB7CiAgICAgICAgIC8vIFs8dXJpPixd
KiAgWyBhdXRvIHwgY3Jvc3NoYWlyIHwgZGVmYXVsdCB8IHBvaW50ZXIgfCBwcm9ncmVzcyB8IG1v
dmUgfCBlLXJlc2l6ZSB8IG5lLXJlc2l6ZSB8CiAgICAgICAgIC8vIG53LXJlc2l6ZSB8IG4tcmVz
aXplIHwgc2UtcmVzaXplIHwgc3ctcmVzaXplIHwgcy1yZXNpemUgfCB3LXJlc2l6ZSB8IGV3LXJl
c2l6ZSB8IAogICAgICAgICAvLyBucy1yZXNpemUgfCBuZXN3LXJlc2l6ZSB8IG53c2UtcmVzaXpl
IHwgY29sLXJlc2l6ZSB8IHJvdy1yZXNpemUgfCB0ZXh0IHwgd2FpdCB8IGhlbHAgXSBdIHwgaW5o
ZXJpdAotICAgICAgICBpZiAoIXN0cmljdCAmJiBpZCA9PSBDU1NfVkFMX0hBTkQpIHsgLy8gTVNJ
RSA1IGNvbXBhdGliaWxpdHkgOi8KLSAgICAgICAgICAgIGlkID0gQ1NTX1ZBTF9QT0lOVEVSOwot
ICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChp
ZCA+PSBDU1NfVkFMX0FVVE8gJiYgaWQgPD0gQ1NTX1ZBTF9IRUxQKQotICAgICAgICAgICAgdmFs
aWRfcHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0g
MDsKKyAgICAgICAgd2hpbGUgKHZhbHVlICYmIHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfVVJJKSB7CisgICAgICAgICAgICBpZiAoIWxpc3QpCisgICAgICAgICAgICAgICAg
bGlzdCA9IG5ldyBDU1NWYWx1ZUxpc3Q7IAogICAgICAgICAgICAgU3RyaW5nIHVyaSA9IHBhcnNl
VVJMKGRvbVN0cmluZyh2YWx1ZS0+c3RyaW5nKSk7CisjaWYgU1ZHX1NVUFBPUlQKKyAgICAgICAg
ICAgIGlmICh1cmkuc3RhcnRzV2l0aCgiIyIpKSB7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh1cmksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJ
KSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAg
ICAgIH0gZWxzZQorI2VuZGlmCiAgICAgICAgICAgICBpZiAoIXVyaS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IG5ldyBDU1NJbWFnZVZhbHVlKFN0cmluZyhLVVJM
KHN0eWxlRWxlbWVudC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdXJpLmRlcHJlY2F0
ZWRTdHJpbmcoKSkudXJsKCkpLCBzdHlsZUVsZW1lbnQpOwotICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiB3ZSBkb24ndCBzdXBwb3J0IGZhbGxiYWNrIGN1cnNvcnMgeWV0LCBidXQgaWdub3Jpbmcg
dGhlIHJlbWFpbmluZyB2YWx1ZXMKLSAgICAgICAgICAgICAgICAvLyB3aWxsIGF0IGxlYXN0IGxl
dCBjb21wbGlhbnQgZGVjbGFyYXRpb25zIHBhcnNlLgotICAgICAgICAgICAgICAgIGFkZFByb3Bl
cnR5KHByb3BJZCwgcGFyc2VkVmFsdWUsIGltcG9ydGFudCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgSW50UG9pbnQgaG90c3BvdDsKKyAgICAgICAgICAg
ICAgICB2YWx1ZSA9IHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgICAgIGlmICh2YWx1
ZSAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgeworICAg
ICAgICAgICAgICAgICAgICBob3RzcG90LnNldFgodmFsdWUtPmZWYWx1ZSk7CisgICAgICAgICAg
ICAgICAgICAgIHZhbHVlID0gdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAg
IGlmICh2YWx1ZSAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
UikgeworICAgICAgICAgICAgICAgICAgICAgICAgaG90c3BvdC5zZXRZKHZhbHVlLT5mVmFsdWUp
OworICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0
ZSBsaXN0OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChuZXcgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU3RyaW5nKEtVUkwoc3R5bGVFbGVtZW50LT5iYXNlVVJMKCkuZGVwcmVjYXRlZFN0cmluZygp
LCB1cmkuZGVwcmVjYXRlZFN0cmluZygpKS51cmwoKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhvdHNwb3QsIHN0eWxlRWxlbWVudCkpOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgdmFsdWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsgLy8gY29tbWEKICAgICAgICAgfQorICAgICAg
ICBpZiAobGlzdCkgeworICAgICAgICAgICAgaWYgKGxpc3QtPmxlbmd0aCgpKSB7CisgICAgICAg
ICAgICAgICAgcGFyc2VkVmFsdWUgPSBsaXN0OworICAgICAgICAgICAgICAgIGlmICghc3RyaWN0
ICYmICF2YWx1ZSkgeyAvLyBubyB2YWx1ZSBhZnRlciB1cmwgbGlzdCAoTVNJRSA1IGNvbXBhdGli
aWxpdHkpCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0ICYmIHZhbHVlLT5pZCA9
PSBDU1NfVkFMX0hBTkQpIC8vIE1TSUUgNSBjb21wYXRpYmlsaXR5IDovCisgICAgICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QT0lOVEVS
KSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgJiYgdmFsdWUtPmlkID49IENTU19W
QUxfQVVUTyAmJiB2YWx1ZS0+aWQgPD0gQ1NTX1ZBTF9IRUxQKQorICAgICAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLT5pZCkpOworICAgICAg
ICAgICAgICAgIHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZGVsZXRlIGxpc3Q7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKCFzdHJpY3QgJiYgdmFsdWUtPmlkID09IENTU19WQUxfSEFORCkgeyAvLyBN
U0lFIDUgY29tcGF0aWJpbGl0eSA6LworICAgICAgICAgICAgaWQgPSBDU1NfVkFMX1BPSU5URVI7
CisgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYg
KHZhbHVlLT5pZCA+PSBDU1NfVkFMX0FVVE8gJiYgdmFsdWUtPmlkIDw9IENTU19WQUxfSEVMUCkK
KyAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAg
IH0KIAogICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORF9BVFRBQ0hNRU5UOgogICAgIGNhc2Ug
Q1NTX1BST1BfX1dFQktJVF9CQUNLR1JPVU5EX0NMSVA6CkluZGV4OiBXZWJDb3JlL2Nzcy9jc3Nz
dHlsZXNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVj
dG9yLmNwcAkocmV2aXNpb24gMTYyODYpCisrKyBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNzc3N0eWxl
c2VsZWN0b3IuaCIKIAogI2luY2x1ZGUgIkNTU0JvcmRlckltYWdlVmFsdWUuaCIKKyNpbmNsdWRl
ICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkNTU0ltcG9ydFJ1bGUuaCIKICNpbmNsdWRlICJDU1NNZWRpYVJ1bGUuaCIKQEAgLTIz
NzYsMjMgKzIzNzcsNDAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGlu
dAogICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOgogICAgICAgICBpZiAoaXNJbmhlcml0KSB7CiAg
ICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKHBhcmVudFN0eWxlLT5jdXJzb3IoKSk7Ci0gICAg
ICAgICAgICBzdHlsZS0+c2V0Q3Vyc29ySW1hZ2UocGFyZW50U3R5bGUtPmN1cnNvckltYWdlKCkp
OworICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcnMocGFyZW50U3R5bGUtPmN1cnNvcnMoKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzSW5pdGlhbCkg
ewogICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEN1cnNv
cigpKTsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3JJbWFnZSgwKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHsKKyAgICAg
ICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAgICAgICBDU1NWYWx1ZUxpc3Qq
IGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAgICAgICAgICBp
bnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7CisgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKENV
UlNPUl9BVVRPKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsK
KyAgICAgICAgICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW0oaSk7CisgICAgICAg
ICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKKyAgICAgICAgICAgICAgICBpbnQgdHlwZSA9
IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgICAgICAgICAgaWYgKHR5
cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKKyNpZiBTVkdfU1VQUE9SVAorICAg
ICAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuZmlu
ZCgiIyIpID09IDApCisgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+YWRkQ3Vyc29yKHBy
aW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpLnN1YnN0cmluZygxKSk7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NDdXJzb3JJbWFnZVZhbHVlKiBpbWFnZSA9IHN0YXRpY19jYXN0PENT
U0N1cnNvckltYWdlVmFsdWUqPihwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzdHlsZS0+YWRkQ3Vyc29yKGltYWdlLT5pbWFnZShlbGVtZW50LT5kb2N1bWVudCgpLT5k
b2NMb2FkZXIoKSksIGltYWdlLT5ob3RzcG90KCkpOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
SURFTlQpCisgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IoKEVDdXJzb3IpKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpIC0gQ1NTX1ZBTF9BVVRPKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUpIHsKICAgICAgICAgICAgIGludCB0
eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKICAgICAgICAgICAgIGlmICh0
eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpIHsKICAgICAgICAgICAgICAgICBz
dHlsZS0+c2V0Q3Vyc29yKChFQ3Vyc29yKShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENT
U19WQUxfQVVUTykpOwotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3JJbWFnZSgwKTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VS
SSkgewotICAgICAgICAgICAgICAgIENTU0ltYWdlVmFsdWUqIGltYWdlID0gc3RhdGljX2Nhc3Q8
Q1NTSW1hZ2VWYWx1ZSo+KHByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgICAgICAgICBzdHlsZS0+
c2V0Q3Vyc29yKENVUlNPUl9BVVRPKTsKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29y
SW1hZ2UoaW1hZ2UtPmltYWdlKGVsZW1lbnQtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkluZGV4OiBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkocmV2aXNpb24gMTYyODYpCisrKyBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NyBAQAogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogCi11
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHQ3Vyc29y
RWxlbWVudDo6U1ZHQ3Vyc29yRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCAqZG9jKQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2MpCkBAIC04MCw2ICs4
MCw4IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICB9CiB9
CiAKK30KKwogLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKSW5kZXg6
IFdlYkNvcmUvbWFudWFsLXRlc3RzL2NzczMtY3Vyc29yLXRlc3QyLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9tYW51YWwtdGVzdHMvY3NzMy1jdXJzb3ItdGVzdDIuaHRtbAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvbWFudWFsLXRlc3RzL2NzczMtY3Vyc29yLXRlc3QyLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9E
VEQgSFRNTCA0LjAxLy9FTiIKKyAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3Qu
ZHRkIj4KKzxodG1sPgorPGhlYWQ+PHRpdGxlPkN1c3RvbSBjdXJzb3IgdGVzdHM8L3RpdGxlPjwv
aGVhZD4KKzxib2R5PgorPHA+PGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3Jn
L3Nob3dfYnVnLmNnaT9pZD04OTkxIj5CdWcgLjk5MTwvYT46IFJFR1JFU1NJT046IG1pc3Npbmcg
b3IgYnJva2VuIENTUyBjdXN0b20gY3Vyc29ycyBhcmUgZGlzcGxheWVkIGFzIGEgbWlzc2luZyBp
bWFnZSBpY29uLjwvcD4KKzxwPk1vdmUgdGhlIGN1cnNvciBvdmVyIHRoZSBibHVlIGJveCAtIGl0
IHNob3VsZCBub3QgdHVybiBpbnRvIGEgbWlzc2luZyBpbWFnZSBpY29uLCBhbmQgc2hvdWxkIHR1
cm4gaW50byBhbiBJLWJlYW0gb3ZlciB0ZXh0LjwvcD4KKworPGRpdiBzdHlsZT0id2lkdGg6MTAw
cHg7aGVpZ2h0OjUwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwobm9u
ZXhpc3RlbnQucG5nKSwgYXV0bzsiPjxzcGFuIHN0eWxlPSJjdXJzb3I6dXJsKG5vbmV4aXN0ZW50
LnBuZyksIGF1dG87Ij5zb21lIHRleHQ8L3NwYW4+PC9kaXY+Cis8ZGl2IHN0eWxlPSJ3aWR0aDox
MDBweDtoZWlnaHQ6NTBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChu
b25leGlzdGVudC5wbmcpOyI+PC9kaXY+CisKKzxocj4KKzxwPjxhIGhyZWY9Imh0dHA6Ly9idWd6
aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAwMSI+QnVnIDYwMDE8L2E+OiBX
ZWJLaXQgZG9lcyBub3QgaGFuZGxlIGZhbGxiYWNrIGN1c3RvbSBjdXJzb3JzPC9wPgorPHA+PGEg
aHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD05MDEz
Ij5CdWcgOTAxMzwvYT46IExldCBjb3JyZWN0IENTUyBjdXN0b20gY3Vyc29yIGRlY2xhcmF0aW9u
cyBwYXJzZTwvcD4KKzxwPkluIGVhY2ggb2YgdGhlIGJsdWUgYm94ZXMgYmVsb3csIHRoZSBjdXJz
b3Igc2hvdWxkIGJlY29tZSBhIGhlbHAgY3Vyc29yIChxdWVzdGlvbiBtYXJrKS48L3A+Cis8dGFi
bGU+PHRyPgorIDx0ZD48ZGl2IHN0eWxlPSJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dy
b3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwocmVzb3VyY2VzL2hlbHBDdXJzb3IudGlm
ZiksIHRleHQ7Ij48L2Rpdj48L3RkPiA8IS0tIFZhbGlkLCBubyBmYWxsYmFjayBuZWVkZWQgLS0+
CisgPHRkPjxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNv
bG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKTsnPjwv
ZGl2PjwvdGQ+IDwhLS0gSW52YWxpZCwgYnV0IGFsbG93ZWQgYnkgV2luSUUgLS0+CisgPHRkPjxk
aXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0
Ymx1ZTsgY3Vyc29yOnVybChub25leGlzdGVudC5wbmcpLCBoZWxwOyc+PC9kaXY+PC90ZD4KKyA8
dGQ+PGRpdiBzdHlsZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6
bGlnaHRibHVlOyBjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIHVybChjdXN0b20tY3Vyc29y
cy5odG1sKSwgdXJsKHVua25vd24tc2NoZW1lOmN1c3RvbS1jdXJzb3JzLmh0bWwpLCB1cmwocmVz
b3VyY2VzL2hlbHBDdXJzb3IudGlmZiksIHRleHQ7Jz48L2Rpdj48L3RkPgorIDx0ZD48ZGl2IHN0
eWxlPSd3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7
IGN1cnNvcjp1cmwobm9uZXhpc3RlbnQucG5nKSwgdXJsKCJyZXNvdXJjZXMvaGVscEN1cnNvci50
aWZmIiksIHRleHQ7Jz48L2Rpdj48L3RkPgorIDx0ZD48ZGl2IHN0eWxlPSd3aWR0aDoxMDBweDto
ZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwocmVzb3Vy
Y2VzL2hlbHBDdXJzb3IudGlmZikgMSAxLCB0ZXh0Oyc+PC9kaXY+PC90ZD4gPCEtLSBDU1MzIGhv
dCBzcG90IC0gdmFsaWQsIG5vIGZhbGxiYWNrIG5lZWRlZCAtLT4KKzwvdHI+Cis8L3RhYmxlPgor
Cis8cD48L3A+Cis8cD48c3BhbiBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjpncmF5OyBjdXJzb3I6
dXJsKG5vbmV4aXN0ZW50LnBuZyksIHVybCgicmVzb3VyY2VzL2hlbHBDdXJzb3IudGlmZiIpOyc+
U2hvdWxkIHNob3cgYW4gSS1iZWFtIGN1cnNvci48L3NwYW4+PC9wPiA8IS0tIEFuIGludmFsaWQg
ZGVjbGFyYXRpb24sIGV2ZW4gYnkgV2luSUUgc3RhbmRhcmRzIC0tPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDE2Mjg2KQorKysgV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEwICs0OCwxOCBAQAogI2luY2x1ZGUg
IlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjc3NzdHlsZXNlbGVjdG9yLmgiCiAK
KyNpZiBTVkdfU1VQUE9SVAorI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdO
YW1lcy5oIgorI2luY2x1ZGUgIlNWR0N1cnNvckVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdBbmlt
YXRlZExlbmd0aC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEV2ZW50TmFtZXM7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwordXNpbmcgbmFt
ZXNwYWNlIFNWR05hbWVzOwogCiBzdHJ1Y3QgU2NoZWR1bGVkRXZlbnQgewogICAgIFJlZlB0cjxF
dmVudD4gbV9ldmVudDsKQEAgLTY0MSwxMSArNjQ5LDMwIEBAIHN0YXRpYyBDdXJzb3Igc2VsZWN0
Q3Vyc29yKGNvbnN0IE1vdXNlRXYKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZSA/
IG5vZGUtPnJlbmRlcmVyKCkgOiAwOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVy
ID8gcmVuZGVyZXItPnN0eWxlKCkgOiAwOwogCi0gICAgaWYgKHN0eWxlICYmIHN0eWxlLT5jdXJz
b3JJbWFnZSgpICYmICFzdHlsZS0+Y3Vyc29ySW1hZ2UoKS0+aW1hZ2UoKS0+aXNOdWxsKCkpCi0g
ICAgICAgIGlmICghc3R5bGUtPmN1cnNvckltYWdlKCktPmlzRXJyb3JJbWFnZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIHN0eWxlLT5jdXJzb3JJbWFnZSgpLT5pbWFnZSgpOwotICAgICAgICBlbHNl
IAotICAgICAgICAgICAgc3R5bGUgPSAwOyAvLyBGYWxsYmFjayB0byBDVVJTT1JfQVVUTworICAg
IGlmIChzdHlsZSAmJiBzdHlsZS0+Y3Vyc29ycygpKSB7CisgICAgICAgIGNvbnN0IEN1cnNvckxp
c3QqIGN1cnNvcnMgPSBzdHlsZS0+Y3Vyc29ycygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgY3Vyc29ycy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIENhY2hlZEltYWdl
KiBjaW1hZ2UgPSAoKmN1cnNvcnMpW2ldLmN1cnNvckltYWdlOworICAgICAgICAgICAgSW50UG9p
bnQgaG90U3BvdCA9ICgqY3Vyc29ycylbaV0uaG90U3BvdDsKKyNpZiBTVkdfU1VQUE9SVAorICAg
ICAgICAgICAgaWYgKCFjaW1hZ2UpIHsKKyAgICAgICAgICAgICAgICBFbGVtZW50KiBlID0gbm9k
ZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoKCpjdXJzb3JzKVtpXS5jdXJzb3JGcmFnbWVu
dElkKTsKKyAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLT5oYXNUYWdOYW1lKGN1cnNvclRhZykp
IHsKKyAgICAgICAgICAgICAgICAgICAgaG90U3BvdC5zZXRYKGludChzdGF0aWNfY2FzdDxTVkdD
dXJzb3JFbGVtZW50Kj4oZSktPnhCYXNlVmFsdWUoKS0+dmFsdWUoKSkpOworICAgICAgICAgICAg
ICAgICAgICBob3RTcG90LnNldFkoaW50KHN0YXRpY19jYXN0PFNWR0N1cnNvckVsZW1lbnQqPihl
KS0+eUJhc2VWYWx1ZSgpLT52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIGNpbWFnZSA9
IHN0YXRpY19jYXN0PFNWR0N1cnNvckVsZW1lbnQqPihlKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgIGlmICghY2lt
YWdlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGNpbWFnZS0+
aW1hZ2UoKS0+aXNOdWxsKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBp
ZiAoIWNpbWFnZS0+aXNFcnJvckltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ3Vy
c29yKGNpbWFnZS0+aW1hZ2UoKSwgaG90U3BvdCk7Cit9CisgICAgICAgIH0KKyAgICB9CiAKICAg
ICBzd2l0Y2ggKHN0eWxlID8gc3R5bGUtPmN1cnNvcigpIDogQ1VSU09SX0FVVE8pIHsKICAgICAg
ICAgY2FzZSBDVVJTT1JfQVVUTzogewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCShyZXZpc2lvbiAxNjI4NikK
KysrIFdlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4
LDcgQEAgY2xhc3MgTlNDdXJzb3I7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBJ
bWFnZTsKKyAgICBjbGFzcyBJbnRQb2ludDsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICB0eXBl
ZGVmIEhDVVJTT1IgUGxhdGZvcm1DdXJzb3I7CkBAIC02OSw3ICs3MCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICNlbmRpZgogICAgICAgICB7IH0KIAotICAgICAgICBDdXJzb3IoSW1hZ2UqKTsK
KyAgICAgICAgQ3Vyc29yKEltYWdlKiwgSW50UG9pbnQgaG90c3BvdCk7CiAgICAgICAgIEN1cnNv
cihjb25zdCBDdXJzb3ImKTsKICAgICAgICAgfkN1cnNvcigpOwogICAgICAgICBDdXJzb3ImIG9w
ZXJhdG9yPShjb25zdCBDdXJzb3ImKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0N1cnNv
ck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0J
KHJldmlzaW9uIDE2Mjg2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMu
aCIKICNpbXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgIkltYWdlLmgiCisjaW1w
b3J0ICJJbnRQb2ludC5oIgogCiBAaW50ZXJmYWNlIFdlYkNvcmVDdXJzb3JCdW5kbGUgOiBOU09i
amVjdCB7IH0KIEBlbmQKQEAgLTQxLDE0ICs0MiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAv
LyBTaW1wbGUgTlNDdXJzb3IgY2FsbHMgc2hvdWxkbid0IG5lZWQgcHJvdGVjdGlvbiwKIC8vIGJ1
dCBjcmVhdGluZyBhIGN1cnNvciB3aXRoIGEgYmFkIGltYWdlIG1pZ2h0IHRocm93LgogCi1zdGF0
aWMgTlNDdXJzb3IqIGNyZWF0ZUN1c3RvbUN1cnNvcihJbWFnZSogaW1hZ2UpCitzdGF0aWMgTlND
dXJzb3IqIGNyZWF0ZUN1c3RvbUN1cnNvcihJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50JiBo
b3RzcG90KQogewogICAgIC8vIEZJWE1FOiBUaGUgY3Vyc29yIHdvbid0IGFuaW1hdGUuICBOb3Qg
c3VyZSBpZiB0aGF0J3MgYSBiaWcgZGVhbC4KICAgICBOU0ltYWdlKiBpbWcgPSBpbWFnZS0+Z2V0
TlNJbWFnZSgpOwogICAgIGlmICghaW1nKQogICAgICAgICByZXR1cm4gMDsKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbTlNDdXJzb3IgYWxsb2NdIGluaXRX
aXRoSW1hZ2U6aW1nIGhvdFNwb3Q6TlNaZXJvUG9pbnRdOworICAgIHJldHVybiBbW05TQ3Vyc29y
IGFsbG9jXSBpbml0V2l0aEltYWdlOmltZyBob3RTcG90OmhvdHNwb3RdOwogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC03NCw4ICs3NSw4IEBAIHN0
YXRpYyBOU0N1cnNvciogbGVha05hbWVkQ3Vyc29yKGNvbnN0IGMKICAgICByZXR1cm4gMDsKIH0K
IAotQ3Vyc29yOjpDdXJzb3IoSW1hZ2UqIGltYWdlKQotICAgIDogbV9pbXBsKEhhcmRSZXRhaW5X
aXRoTlNSZWxlYXNlKGNyZWF0ZUN1c3RvbUN1cnNvcihpbWFnZSkpKQorQ3Vyc29yOjpDdXJzb3Io
SW1hZ2UqIGltYWdlLCBJbnRQb2ludCBob3RzcG90KQorICAgIDogbV9pbXBsKEhhcmRSZXRhaW5X
aXRoTlNSZWxlYXNlKGNyZWF0ZUN1c3RvbUN1cnNvcihpbWFnZSwgaG90c3BvdCkpKQogewogfQog
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0LmNwcAkocmV2aXNpb24gMTYyODYpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMs
NyBAQCBDdXJzb3I6On5DdXJzb3IoKQogewogfQogCi1DdXJzb3I6OkN1cnNvcihJbWFnZSopCitD
dXJzb3I6OkN1cnNvcihJbWFnZSosIGNvbnN0IEludFBvaW50JikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5bGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gMTYy
ODYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUxMCw3ICs1MTAsNyBAQCBib29sIFN0eWxlQ1NTM0luaGVyaXRlZERhdGE6OnNoYWRvd0Rh
dGFFCiBTdHlsZUluaGVyaXRlZERhdGE6OlN0eWxlSW5oZXJpdGVkRGF0YSgpCiAgICAgOiBpbmRl
bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SW5kZW50KCkpLCBsaW5lX2hlaWdodChSZW5kZXJT
dHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSksIAogICAgICAgc3R5bGVfaW1hZ2UoUmVuZGVyU3R5
bGU6OmluaXRpYWxMaXN0U3R5bGVJbWFnZSgpKSwKLSAgICAgIGN1cnNvcl9pbWFnZSgwKSwgY29s
b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2xvcigpKSwgCisgICAgICBjb2xvcihSZW5kZXJTdHls
ZTo6aW5pdGlhbENvbG9yKCkpLCAKICAgICAgIGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcoUmVu
ZGVyU3R5bGU6OmluaXRpYWxIb3Jpem9udGFsQm9yZGVyU3BhY2luZygpKSwgCiAgICAgICB2ZXJ0
aWNhbF9ib3JkZXJfc3BhY2luZyhSZW5kZXJTdHlsZTo6aW5pdGlhbFZlcnRpY2FsQm9yZGVyU3Bh
Y2luZygpKSwKICAgICAgIHdpZG93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbFdpZG93cygpKSwgb3Jw
aGFucyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9ycGhhbnMoKSksCkBAIC01MjUsOCArNTI1LDggQEAg
U3R5bGVJbmhlcml0ZWREYXRhOjp+U3R5bGVJbmhlcml0ZWREYXRhKAogU3R5bGVJbmhlcml0ZWRE
YXRhOjpTdHlsZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvICkKICAg
ICA6IFNoYXJlZDxTdHlsZUluaGVyaXRlZERhdGE+KCksCiAgICAgICBpbmRlbnQoIG8uaW5kZW50
ICksIGxpbmVfaGVpZ2h0KCBvLmxpbmVfaGVpZ2h0ICksIHN0eWxlX2ltYWdlKCBvLnN0eWxlX2lt
YWdlICksCi0gICAgICBjdXJzb3JfaW1hZ2UoIG8uY3Vyc29yX2ltYWdlICksIGZvbnQoIG8uZm9u
dCApLAotICAgICAgY29sb3IoIG8uY29sb3IgKSwKKyAgICAgIGN1cnNvckRhdGEoby5jdXJzb3JE
YXRhKSwKKyAgICAgIGZvbnQoIG8uZm9udCApLCBjb2xvciggby5jb2xvciApLAogICAgICAgaG9y
aXpvbnRhbF9ib3JkZXJfc3BhY2luZyggby5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nICksCiAg
ICAgICB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyggby52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyAp
LAogICAgICAgd2lkb3dzKG8ud2lkb3dzKSwgb3JwaGFucyhvLm9ycGhhbnMpLCBwYWdlX2JyZWFr
X2luc2lkZShvLnBhZ2VfYnJlYWtfaW5zaWRlKQpAQCAtNTM5LDcgKzUzOSw3IEBAIGJvb2wgU3R5
bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnMKICAgICAgICAgaW5kZW50ID09IG8uaW5k
ZW50ICYmCiAgICAgICAgIGxpbmVfaGVpZ2h0ID09IG8ubGluZV9oZWlnaHQgJiYKICAgICAgICAg
c3R5bGVfaW1hZ2UgPT0gby5zdHlsZV9pbWFnZSAmJgotICAgICAgICBjdXJzb3JfaW1hZ2UgPT0g
by5jdXJzb3JfaW1hZ2UgJiYKKyAgICAgICAgY3Vyc29yRGF0YSAgPT0gby5jdXJzb3JEYXRhICYm
CiAgICAgICAgIGZvbnQgPT0gby5mb250ICYmCiAgICAgICAgIGNvbG9yID09IG8uY29sb3IgJiYK
ICAgICAgICAgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyA9PSBvLmhvcml6b250YWxfYm9yZGVy
X3NwYWNpbmcgJiYKQEAgLTgyNCw3ICs4MjQsNyBAQCBSZW5kZXJTdHlsZTo6RGlmZiBSZW5kZXJT
dHlsZTo6ZGlmZiggY29uCiAgICAgICAgICEoaW5oZXJpdGVkLT5pbmRlbnQgPT0gb3RoZXItPmlu
aGVyaXRlZC0+aW5kZW50KSB8fAogICAgICAgICAhKGluaGVyaXRlZC0+bGluZV9oZWlnaHQgPT0g
b3RoZXItPmluaGVyaXRlZC0+bGluZV9oZWlnaHQpIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT5z
dHlsZV9pbWFnZSA9PSBvdGhlci0+aW5oZXJpdGVkLT5zdHlsZV9pbWFnZSkgfHwKLSAgICAgICAg
IShpbmhlcml0ZWQtPmN1cnNvcl9pbWFnZSA9PSBvdGhlci0+aW5oZXJpdGVkLT5jdXJzb3JfaW1h
Z2UpIHx8CisgICAgICAgICEoaW5oZXJpdGVkLT5jdXJzb3JEYXRhICA9PSBvdGhlci0+aW5oZXJp
dGVkLT5jdXJzb3JEYXRhKSB8fAogICAgICAgICAhKGluaGVyaXRlZC0+Zm9udCA9PSBvdGhlci0+
aW5oZXJpdGVkLT5mb250KSB8fAogICAgICAgICAhKGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3Jk
ZXJfc3BhY2luZyA9PSBvdGhlci0+aW5oZXJpdGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5n
KSB8fAogICAgICAgICAhKGluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcgPT0gb3Ro
ZXItPmluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcpIHx8CkBAIC05ODMsNiArOTgz
LDMwIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENsaXAoIExlbmd0aCB0b3AsIEwKICAgICBkYXRh
LT5jbGlwLmxlZnQgPSBsZWZ0OwogfQogCit2b2lkIFJlbmRlclN0eWxlOjphZGRDdXJzb3IoQ2Fj
aGVkSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCkKK3sKKyAgICBDdXJzb3JE
YXRhIGRhdGE7CisgICAgZGF0YS5jdXJzb3JJbWFnZSA9IGltYWdlOworICAgIGRhdGEuaG90U3Bv
dCA9IGhvdFNwb3Q7CisgICAgaWYgKCFpbmhlcml0ZWQuYWNjZXNzKCktPmN1cnNvckRhdGEpCisg
ICAgICAgIGluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSA9IG5ldyBDdXJzb3JMaXN0KCk7
CisgICAgaW5oZXJpdGVkLmFjY2VzcygpLT5jdXJzb3JEYXRhLT5hcHBlbmQoZGF0YSk7Cit9CisK
K3ZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1cnNvcihjb25zdCBTdHJpbmcmIGlkKQoreworICAgIEN1
cnNvckRhdGEgZGF0YTsKKyAgICBkYXRhLmN1cnNvckZyYWdtZW50SWQgPSBpZDsKKyAgICBpZiAo
IWluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSkKKyAgICAgICAgaW5oZXJpdGVkLmFjY2Vz
cygpLT5jdXJzb3JEYXRhID0gbmV3IEN1cnNvckxpc3QoKTsKKyAgICBpbmhlcml0ZWQuYWNjZXNz
KCktPmN1cnNvckRhdGEtPmFwcGVuZChkYXRhKTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6c2V0
Q3Vyc29ycyhDdXJzb3JMaXN0KiBvdGhlcikKK3sKKyAgICBpbmhlcml0ZWQuYWNjZXNzKCktPmN1
cnNvckRhdGEgPSBvdGhlcjsKK30KKwogYm9vbCBSZW5kZXJTdHlsZTo6Y29udGVudERhdGFFcXVp
dmFsZW50KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdAogewogICAgIENvbnRl
bnREYXRhKiBjMSA9IGNvbnRlbnQ7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTdHls
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclN0eWxlLmgJKHJldmlz
aW9uIDE2Mjg2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5bGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsNyBAQAogICovCiAKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1
ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJEYXRhUmVmLmgiCiAjaW5jbHVk
ZSAiRm9udC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTYyLDYgKzYzLDggQEAg
dXNpbmcgc3RkOjptYXg7CiBjbGFzcyBDU1NTdHlsZVNlbGVjdG9yOwogY2xhc3MgQ2FjaGVkSW1h
Z2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKK3N0cnVjdCBDdXJzb3JEYXRhOworY2xhc3MgQ3Vy
c29yTGlzdDsKIGNsYXNzIFJlbmRlckFyZW5hOwogY2xhc3MgU2hhZG93VmFsdWU7CiBjbGFzcyBT
dHJpbmdJbXBsOwpAQCAtODI0LDcgKzgyNyw3IEBAIHB1YmxpYzoKICAgICBMZW5ndGggbGluZV9o
ZWlnaHQ7CiAKICAgICBDYWNoZWRJbWFnZSAqc3R5bGVfaW1hZ2U7Ci0gICAgQ2FjaGVkSW1hZ2Ug
KmN1cnNvcl9pbWFnZTsKKyAgICBSZWZQdHI8Q3Vyc29yTGlzdD4gY3Vyc29yRGF0YTsKIAogICAg
IEZvbnQgZm9udDsKICAgICBDb2xvciBjb2xvcjsKQEAgLTg2OCw2ICs4NzEsMzAgQEAgZW51bSBF
Q3Vyc29yIHsKICAgICBDVVJTT1JfQ09MX1JFU0laRSwgQ1VSU09SX1JPV19SRVNJWkUsIENVUlNP
Ul9URVhULCBDVVJTT1JfV0FJVCwgQ1VSU09SX0hFTFAKIH07CiAKK3N0cnVjdCBDdXJzb3JEYXRh
IHsKKyAgICBDdXJzb3JEYXRhKCkKKyAgICAgICAgOiBjdXJzb3JJbWFnZSgwKQorICAgIHt9Cisg
ICAgCisgICAgSW50UG9pbnQgaG90U3BvdDsgLy8gZm9yIENTUzMgc3VwcG9ydAorICAgIENhY2hl
ZEltYWdlKiBjdXJzb3JJbWFnZTsgLy8gd2VhayBwb2ludGVyLCB0aGUgQ1NTVmFsdWVJbWFnZSB0
YWtlcyBjYXJlIG9mIGRlbGV0aW5nIGN1cnNvckltYWdlCisgICAgU3RyaW5nIGN1cnNvckZyYWdt
ZW50SWQ7IC8vIG9ubHkgdXNlZCBmb3IgU1ZHQ3Vyc29yRWxlbWVudCwgYSBkaXJlY3QgcG9pbnRl
ciB3b3VsZCBnZXQgc3RhbGUKK307CisKK2NsYXNzIEN1cnNvckxpc3QgOiBwdWJsaWMgU2hhcmVk
PEN1cnNvckxpc3Q+Cit7CitwdWJsaWM6CisgICAgY29uc3QgQ3Vyc29yRGF0YSYgb3BlcmF0b3Jb
XShpbnQgaSkgY29uc3QgeworICAgICAgICByZXR1cm4gbV92ZWN0b3JbaV07CisgICAgfQorCisg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5zaXplKCk7IH0KKyAgICB2
b2lkIGFwcGVuZChjb25zdCBDdXJzb3JEYXRhJiBjdXJzb3JEYXRhKSB7IG1fdmVjdG9yLmFwcGVu
ZChjdXJzb3JEYXRhKTsgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxDdXJzb3JEYXRhPiBtX3Zl
Y3RvcjsKK307CisKIGVudW0gQ29udGVudFR5cGUgewogICAgIENPTlRFTlRfTk9ORSwgQ09OVEVO
VF9PQkpFQ1QsIENPTlRFTlRfVEVYVCwgQ09OVEVOVF9DT1VOVEVSCiB9OwpAQCAtMTMxNCw3ICsx
MzQxLDcgQEAgcHVibGljOgogCiAgICAgRUN1cnNvciBjdXJzb3IoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxFQ3Vyc29yPihpbmhlcml0ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSk7IH0KICAg
ICAKLSAgICBDYWNoZWRJbWFnZSAqY3Vyc29ySW1hZ2UoKSBjb25zdCB7IHJldHVybiBpbmhlcml0
ZWQtPmN1cnNvcl9pbWFnZTsgfQorICAgIEN1cnNvckxpc3QqIGN1cnNvcnMoKSBjb25zdCB7IHJl
dHVybiBpbmhlcml0ZWQtPmN1cnNvckRhdGEuZ2V0KCk7IH0KIAogICAgIHNob3J0IHdpZG93cygp
IGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+d2lkb3dzOyB9CiAgICAgc2hvcnQgb3JwaGFucygp
IGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+b3JwaGFuczsgfQpAQCAtMTUyMSw3ICsxNTQ4LDkg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFkZGluZ1JpZ2h0KExlbmd0aCB2KSAgeyAgU0VUX1ZB
UihzdXJyb3VuZCxwYWRkaW5nLnJpZ2h0LHYpIH0KIAogICAgIHZvaWQgc2V0Q3Vyc29yKCBFQ3Vy
c29yIGMgKSB7IGluaGVyaXRlZF9mbGFncy5fY3Vyc29yX3N0eWxlID0gYzsgfQotICAgIHZvaWQg
c2V0Q3Vyc29ySW1hZ2UoIENhY2hlZEltYWdlICp2ICkgeyBTRVRfVkFSKGluaGVyaXRlZCxjdXJz
b3JfaW1hZ2UsdikgfQorICAgIHZvaWQgYWRkQ3Vyc29yKENhY2hlZEltYWdlKiwgY29uc3QgSW50
UG9pbnQmID0gSW50UG9pbnQoKSk7CisgICAgdm9pZCBhZGRDdXJzb3IoY29uc3QgU3RyaW5nJik7
CisgICAgdm9pZCBzZXRDdXJzb3JzKEN1cnNvckxpc3QqKTsKIAogICAgIGJvb2wgZm9yY2VCYWNr
Z3JvdW5kc1RvV2hpdGUoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2Jh
Y2tncm91bmRzX3RvX3doaXRlOyB9CiAgICAgdm9pZCBzZXRGb3JjZUJhY2tncm91bmRzVG9XaGl0
ZShib29sIGI9dHJ1ZSkgeyBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3do
aXRlID0gYjsgfQo=
</data>
<flag name="review"
          id="3384"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10499</attachid>
            <date>2006-09-11 05:22:11 -0700</date>
            <delta_ts>2006-09-19 19:17:59 -0700</delta_ts>
            <desc>Even better patch</desc>
            <filename>6002-9.diff</filename>
            <type>text/plain</type>
            <size>32352</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjI5NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMDYtMDktMTEgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAxCisgICAgICAg
IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9tIGN1cnNvcnMKKyAgICAgICAg
Rml4IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTYw
MDIKKyAgICAgICAgV2ViS2l0IGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSBTVkcgPGN1cnNvcj4g
ZWxlbWVudAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzdmcgY3Vyc29yIGltYWdlcy4gQWxz
byBtYWtlIHN1cmUgaG90c3BvdAorICAgICAgICBzZXR0aW5ncyBhcmUgaGFuZGxlZCBjb3JyZWN0
bHkuIEZpbmFsbHkgaW1wbGVtZW50IGZhbGxiYWNrLgorCisgICAgICAgIFdBUk5JTkc6IE5PIFRF
U1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgICogQ2hhbmdlTG9nOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgICogY3Nz
L2Nzc3BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUp
OgorICAgICAgICAqIGNzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdDdXJzb3JFbGVtZW50LmNwcDoKKyAgICAgICAgKiBtYW51YWwtdGVzdHMvY3NzMy1jdXJzb3It
dGVzdDIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6c2VsZWN0Q3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9DdXJzb3IuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ3VzdG9tQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvcjo6Q3Vyc29yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9DdXJzb3JRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXJzb3I6OkN1cnNvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclN0eWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZGlmZik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6YWRkQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRD
dXJzb3JzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkN1cnNvckRhdGE6OkN1cnNvckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29y
TGlzdDo6b3BlcmF0b3JbXSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JMaXN0OjpzaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cnNvckxpc3Q6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6Y3Vyc29ycyk6CisKIDIwMDYtMDktMTEgIERhdmlkIEh5YXR0ICA8aHlh
dHRAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBhbiB1bndpdHRpbmcgdmljdGltIG9mIHRoZSBr
TWluLT5taW4gY2hhbmdlLiAgY2FsY0Jsb2NrTWluTWF4V2lkdGgKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjI5NykKKysrIFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
Nzk4LDYgKzE3OTgsOCBAQAogCQlBOEZFRkIwQjA5NzlGNDcyMDA1ODM5RkQgLyogUmVuZGVyRm9y
ZWlnbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBOEZFRkIwOTA5NzlGNDcyMDA1ODM5RkQgLyogUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAg
Ki87IH07CiAJCUE4RkVGQjMxMDk3OUY0RjYwMDU4MzlGRCAvKiBTVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEZFRkIyRjA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwICov
OyB9OwogCQlBOEZFRkIzMjA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RkVG
QjMwMDk3OUY0RjYwMDU4MzlGRCAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oICovOyB9Owor
CQlBQTcxNTM2MDBBQjBCOUVDMDBFRUU0OUIgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTcxNTM1RTBBQjBC
OUVDMDBFRUU0OUIgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgKi87IH07CisJCUFBNzE1MzYx
MEFCMEI5RUMwMEVFRTQ5QiAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTcxNTM1RjBBQjBCOUVDMDBFRUU0OUIg
LyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oICovOyB9OwogCQlBQTg0RkM4NTBBQTBGRTA4MDA3Njk5
QUYgLyogSlNTVkdNZXRhZGF0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUE4NEZDODMwQUEwRkUwODAwNzY5OUFGIC8qIEpTU1ZHTWV0
YWRhdGFFbGVtZW50LmNwcCAqLzsgfTsKIAkJQUE4NEZDODYwQUEwRkUwODAwNzY5OUFGIC8qIEpT
U1ZHTWV0YWRhdGFFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBQTg0RkM4NDBBQTBGRTA4MDA3Njk5QUYgLyogSlNTVkdNZXRhZGF0YUVsZW1l
bnQuaCAqLzsgfTsKIAkJQUE5OEI4N0QwQUFBMDJGODAwMUE0NEMyIC8qIFBhdGguY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE5OEI4N0MwQUFBMDJG
ODAwMUE0NEMyIC8qIFBhdGguY3BwICovOyB9OwpAQCAtNDA2Myw2ICs0MDY1LDggQEAKIAkJQThG
RUZCMDkwOTc5RjQ3MjAwNTgzOUZEIC8qIFJlbmRlckZvcmVpZ25PYmplY3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZvcmVpZ25PYmplY3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEZFRkIyRjA5NzlGNEY2MDA1ODM5RkQgLyog
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQThGRUZCMzAwOTc5RjRGNjAwNTgzOUZEIC8qIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQTcxNTM1RTBBQjBC
OUVDMDBFRUU0OUIgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUFBNzE1MzVGMEFCMEI5RUMwMEVFRTQ5QiAvKiBDU1NDdXJzb3JJ
bWFnZVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NDdXJzb3JJ
bWFnZVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBODRGQzgzMEFBMEZF
MDgwMDc2OTlBRiAvKiBKU1NWR01ldGFkYXRhRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdNZXRhZGF0YUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBQTg0RkM4NDBBQTBGRTA4MDA3Njk5QUYgLyogSlNTVkdNZXRh
ZGF0YUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHTWV0
YWRhdGFFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBOThCODdDMEFB
QTAyRjgwMDFBNDRDMiAvKiBQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1OTAsNiAr
NjU5NCw4IEBACiAJCUY1MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAvKiBjc3MgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUFBNzE1MzVFMEFCMEI5RUMwMEVF
RTQ5QiAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCAqLywKKwkJCQlBQTcxNTM1RjBBQjBCOUVD
MDBFRUU0OUIgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oICovLAogCQkJCUE4MEU2Q0RBMEExOTg5
Q0EwMDdGQjhDNSAvKiBDb3VudGVyLmggKi8sCiAJCQkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3RkU0
IC8qIENvdW50ZXIuaWRsICovLAogCQkJCUE4MEU2Q0JCMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NC
b3JkZXJJbWFnZVZhbHVlLmNwcCAqLywKQEAgLTc5MDUsNiArNzkxMSw3IEBACiAJCQkJODVERjM0
NDAwQUFGQzBFRDAwRTU5QUUzIC8qIERPTUtleWJvYXJkRXZlbnRQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NTdFMEIyNTBBQjA0MzQ2MDAzNkU0NDcgLyogRE9NTW91c2VFdmVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODU3RTBCMkMwQUIwNDNGQzAwMzZFNDQ3IC8qIERPTU1vdXNlRXZl
bnRQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBQTcxNTM2MTBBQjBCOUVDMDBFRUU0OUIg
LyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU1MjZDMzcwQUIw
QTE3RTAwMDMwMkVBIC8qIERPTU5vZGVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU1
MjZDM0UwQUIwQTc2RjAwMDMwMkVBIC8qIERPTU5vZGVJdGVyYXRvclByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1NTI2Q0QyMEFCMEI3RDkwMDAzMDJFQSAvKiBET01UcmVlV2Fsa2VyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTg5MzAsNiArODkzNyw3IEBACiAJCQkJODVDN0Y1RTgwQUFGQkFG
QjAwNDAxNEREIC8qIERPTVdoZWVsRXZlbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUZGMzE1
QjBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTg1N0UwQjI2MEFCMDQzNDYwMDM2RTQ0NyAvKiBET01Nb3VzZUV2ZW50Lm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJQUE3MTUzNjAwQUIwQjlFQzAwRUVFNDlCIC8qIENTU0N1cnNvckltYWdlVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU1MjZDMzgwQUIwQTE3RTAwMDMwMkVBIC8qIERP
TU5vZGVJdGVyYXRvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1NTI2Q0QzMEFCMEI3REEwMDAz
MDJFQSAvKiBET01UcmVlV2Fsa2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU5MTI4RjQwQUIy
NDMxQTAwMjAyMjY1IC8qIERPTUhUTUxFbWJlZEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKSW5k
ZXg6IFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNp
b24gMTYyOTcpCisrKyBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MDcsNTcgKzYwNyw4OSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgY2FzZSBDU1NfUFJPUF9DT1VOVEVSX1JFU0VUOgog
ICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAogICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU19QUk9QX0NVUlNPUjoKLSAgICAgICAgaWYgKHN0eWxlLT5jdXJzb3JJbWFnZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Y3Vyc29ySW1hZ2Uo
KS0+dXJsKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKTsKKyAgICBjYXNlIENTU19QUk9Q
X0NVUlNPUjogeworICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSAwOworICAgICAgICBDU1NW
YWx1ZSogdmFsdWUgPSAwOworICAgICAgICBDdXJzb3JMaXN0KiBjdXJzb3JzID0gc3R5bGUtPmN1
cnNvcnMoKTsKKyAgICAgICAgaWYgKGN1cnNvcnMgJiYgY3Vyc29ycy0+c2l6ZSgpID4gMCkgewor
ICAgICAgICAgICAgbGlzdCA9IG5ldyBDU1NWYWx1ZUxpc3Q7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY3Vyc29ycy0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSgoKmN1cnNvcnMpW2ldLmN1cnNvcklt
YWdlLT51cmwoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpKTsKKyAgICAgICAgfQogICAg
ICAgICBzd2l0Y2ggKHN0eWxlLT5jdXJzb3IoKSkgewogICAgICAgICAgICAgY2FzZSBDVVJTT1Jf
QVVUTzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfQVVUTyk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9BVVRPKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
Q1VSU09SX0NST1NTOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9DUk9TU0hBSVIpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfQ1JPU1NIQUlSKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0RFRkFVTFQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0RFRkFVTFQpOworICAgICAgICAgICAgICAg
IHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfREVGQVVMVCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9QT0lOVEVSOgotICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QT0lOVEVSKTsK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1BP
SU5URVIpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1Jf
TU9WRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfTU9WRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9NT1ZFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
Q1VSU09SX0VfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9FX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9ORV9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05FX1JFU0laRSk7CisgICAgICAgICAg
ICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ORV9SRVNJWkUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfTldfUkVTSVpF
OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9O
V19SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfTldfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgQ1VSU09SX05fUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9OX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OX1JFU0laRSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9TRV9SRVNJWkU6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NFX1JFU0laRSk7CisgICAg
ICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TRV9SRVNJ
WkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfU1df
UkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9TV19SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfU1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgQ1VSU09SX1NfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFs
dWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TX1JFU0laRSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9XX1JFU0laRToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV19SRVNJWkUpOwor
ICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV19S
RVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1Jf
RVdfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9FV19SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfRVdfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX05TX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTlNfUkVTSVpFKTsKKyAgICAgICAgICAgICAg
ICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05TX1JFU0laRSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9ORVNXX1JFU0laRToK
LSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTkVT
V19SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfTkVTV19SRVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBDVVJTT1JfTldTRV9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05XU0VfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2
YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05XU0VfUkVTSVpFKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0NPTF9SRVNJWkU6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NPTF9S
RVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfQ09MX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIENVUlNPUl9ST1dfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9ST1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JPV19SRVNJWkUpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfVEVYVDoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEVYVCk7CisgICAgICAgICAg
ICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9URVhUKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1dBSVQ6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1dBSVQpOworICAg
ICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV0FJVCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9IRUxQOgot
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9IRUxQ
KTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0hFTFApOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKKyAgICAgICAgaWYgKGxpc3QpIHsK
KyAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gbGlz
dDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQogICAgIGNhc2UgQ1NT
X1BST1BfRElSRUNUSU9OOgogICAgICAgICBzd2l0Y2ggKHN0eWxlLT5kaXJlY3Rpb24oKSkgewog
ICAgICAgICAgICAgY2FzZSBMVFI6CkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAJKHJldmlzaW9uIDE2Mjk3KQor
KysgV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUs
NyBAQAogI2luY2x1ZGUgImNzc3BhcnNlci5oIgogCiAjaW5jbHVkZSAiQ1NTQm9yZGVySW1hZ2VW
YWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJ
bWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ2hhcnNldFJ1bGUuaCIKICNpbmNsdWRlICJDU1NJ
bXBvcnRSdWxlLmgiCkBAIC02OTQsMjYgKzY5NSw2MCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNl
IENTU19QUk9QX0NVUlNPUjoKKyAgICBjYXNlIENTU19QUk9QX0NVUlNPUjogewogICAgICAgICAv
LyBbPHVyaT4sXSogIFsgYXV0byB8IGNyb3NzaGFpciB8IGRlZmF1bHQgfCBwb2ludGVyIHwgcHJv
Z3Jlc3MgfCBtb3ZlIHwgZS1yZXNpemUgfCBuZS1yZXNpemUgfAogICAgICAgICAvLyBudy1yZXNp
emUgfCBuLXJlc2l6ZSB8IHNlLXJlc2l6ZSB8IHN3LXJlc2l6ZSB8IHMtcmVzaXplIHwgdy1yZXNp
emUgfCBldy1yZXNpemUgfCAKICAgICAgICAgLy8gbnMtcmVzaXplIHwgbmVzdy1yZXNpemUgfCBu
d3NlLXJlc2l6ZSB8IGNvbC1yZXNpemUgfCByb3ctcmVzaXplIHwgdGV4dCB8IHdhaXQgfCBoZWxw
IF0gXSB8IGluaGVyaXQKLSAgICAgICAgaWYgKCFzdHJpY3QgJiYgaWQgPT0gQ1NTX1ZBTF9IQU5E
KSB7IC8vIE1TSUUgNSBjb21wYXRpYmlsaXR5IDovCi0gICAgICAgICAgICBpZCA9IENTU19WQUxf
UE9JTlRFUjsKLSAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoaWQgPj0gQ1NTX1ZBTF9BVVRPICYmIGlkIDw9IENTU19WQUxfSEVMUCkKLSAgICAg
ICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKHZhbHVlLT51
bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7CisgICAgICAgIENTU1ZhbHVlTGlz
dCogbGlzdCA9IDA7CisgICAgICAgIHdoaWxlICh2YWx1ZSAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewogICAgICAgICAgICAgU3RyaW5nIHVyaSA9IHBhcnNl
VVJMKGRvbVN0cmluZyh2YWx1ZS0+c3RyaW5nKSk7CisjaWYgU1ZHX1NVUFBPUlQKKyAgICAgICAg
ICAgIGlmICh1cmkuc3RhcnRzV2l0aCgiIyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFsaXN0
KQorICAgICAgICAgICAgICAgICAgICBsaXN0ID0gbmV3IENTU1ZhbHVlTGlzdDsgCisgICAgICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh1cmksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfVVJJKSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxpc3Qt
Pm5leHQoKTsKKyAgICAgICAgICAgIH0gZWxzZQorI2VuZGlmCiAgICAgICAgICAgICBpZiAoIXVy
aS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IG5ldyBDU1NJbWFn
ZVZhbHVlKFN0cmluZyhLVVJMKHN0eWxlRWxlbWVudC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJp
bmcoKSwgdXJpLmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJsKCkpLCBzdHlsZUVsZW1lbnQpOwotICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBkb24ndCBzdXBwb3J0IGZhbGxiYWNrIGN1cnNvcnMg
eWV0LCBidXQgaWdub3JpbmcgdGhlIHJlbWFpbmluZyB2YWx1ZXMKLSAgICAgICAgICAgICAgICAv
LyB3aWxsIGF0IGxlYXN0IGxldCBjb21wbGlhbnQgZGVjbGFyYXRpb25zIHBhcnNlLgotICAgICAg
ICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgcGFyc2VkVmFsdWUsIGltcG9ydGFudCk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKCFsaXN0KQorICAgICAgICAgICAgICAgICAgICBsaXN0ID0gbmV3IENTU1ZhbHVlTGlz
dDsgCisgICAgICAgICAgICAgICAgSW50UG9pbnQgaG90c3BvdDsKKyAgICAgICAgICAgICAgICB2
YWx1ZSA9IHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB2
YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgeworICAgICAgICAg
ICAgICAgICAgICBob3RzcG90LnNldFgodmFsdWUtPmZWYWx1ZSk7CisgICAgICAgICAgICAgICAg
ICAgIHZhbHVlID0gdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2
YWx1ZSAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaG90c3BvdC5zZXRZKHZhbHVlLT5mVmFsdWUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBsaXN0
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChu
ZXcgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nKEtVUkwoc3R5bGVFbGVtZW50LT5iYXNlVVJMKCkuZGVwcmVjYXRlZFN0cmluZygpLCB1cmku
ZGVwcmVjYXRlZFN0cmluZygpKS51cmwoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhvdHNwb3QsIHN0eWxlRWxlbWVudCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFs
dWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsgLy8gY29tbWEKKyAgICAgICAgfQorICAgICAgICBpZiAo
bGlzdCkgeworICAgICAgICAgICAgaWYgKCFzdHJpY3QgJiYgIXZhbHVlKSB7IC8vIG5vIHZhbHVl
IGFmdGVyIHVybCBsaXN0IChNU0lFIDUgY29tcGF0aWJpbGl0eSkKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIXN0cmljdCAmJiB2YWx1ZS0+aWQgPT0gQ1NTX1ZBTF9IQU5EKSAvLyBNU0lFIDUgY29t
cGF0aWJpbGl0eSA6LworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9QT0lOVEVSKSk7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSAm
JiB2YWx1ZS0+aWQgPj0gQ1NTX1ZBTF9BVVRPICYmIHZhbHVlLT5pZCA8PSBDU1NfVkFMX0hFTFAp
CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZS0+aWQpKTsKKyAgICAgICAgICAgIHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgcGFy
c2VkVmFsdWUgPSBsaXN0OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
aWYgKCFzdHJpY3QgJiYgdmFsdWUtPmlkID09IENTU19WQUxfSEFORCkgeyAvLyBNU0lFIDUgY29t
cGF0aWJpbGl0eSA6LworICAgICAgICAgICAgaWQgPSBDU1NfVkFMX1BPSU5URVI7CisgICAgICAg
ICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT5p
ZCA+PSBDU1NfVkFMX0FVVE8gJiYgdmFsdWUtPmlkIDw9IENTU19WQUxfSEVMUCkKKyAgICAgICAg
ICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIH0KIAogICAg
IGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORF9BVFRBQ0hNRU5UOgogICAgIGNhc2UgQ1NTX1BST1Bf
X1dFQktJVF9CQUNLR1JPVU5EX0NMSVA6CkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAko
cmV2aXNpb24gMTYyOTcpCisrKyBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNzc3N0eWxlc2VsZWN0b3Iu
aCIKIAogI2luY2x1ZGUgIkNTU0JvcmRlckltYWdlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDdXJz
b3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNT
U0ltcG9ydFJ1bGUuaCIKICNpbmNsdWRlICJDU1NNZWRpYVJ1bGUuaCIKQEAgLTI0MDcsMjMgKzI0
MDgsNDAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgIGNh
c2UgQ1NTX1BST1BfQ1VSU09SOgogICAgICAgICBpZiAoaXNJbmhlcml0KSB7CiAgICAgICAgICAg
ICBzdHlsZS0+c2V0Q3Vyc29yKHBhcmVudFN0eWxlLT5jdXJzb3IoKSk7Ci0gICAgICAgICAgICBz
dHlsZS0+c2V0Q3Vyc29ySW1hZ2UocGFyZW50U3R5bGUtPmN1cnNvckltYWdlKCkpOworICAgICAg
ICAgICAgc3R5bGUtPnNldEN1cnNvcnMocGFyZW50U3R5bGUtPmN1cnNvcnMoKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzSW5pdGlhbCkgewogICAgICAg
ICAgICAgc3R5bGUtPnNldEN1cnNvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEN1cnNvcigpKTsKLSAg
ICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3JJbWFnZSgwKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHsKKyAgICAgICAgaWYgKHZh
bHVlLT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBz
dGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAgICAgICAgICBpbnQgbGVuID0g
bGlzdC0+bGVuZ3RoKCk7CisgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKENVUlNPUl9BVVRP
KTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAg
ICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW0oaSk7CisgICAgICAgICAgICAgICAg
aWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihpdGVtKTsKKyAgICAgICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2
ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKKyNpZiBTVkdfU1VQUE9SVAorICAgICAgICAgICAg
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuZmluZCgiIyIpID09
IDApCisgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+YWRkQ3Vyc29yKHByaW1pdGl2ZVZh
bHVlLT5nZXRTdHJpbmdWYWx1ZSgpLnN1YnN0cmluZygxKSk7CisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NDdXJzb3JJbWFnZVZhbHVlKiBpbWFnZSA9IHN0YXRpY19jYXN0PENTU0N1cnNvcklt
YWdlVmFsdWUqPihwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHls
ZS0+YWRkQ3Vyc29yKGltYWdlLT5pbWFnZShlbGVtZW50LT5kb2N1bWVudCgpLT5kb2NMb2FkZXIo
KSksIGltYWdlLT5ob3RzcG90KCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCisg
ICAgICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IoKEVDdXJzb3IpKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpIC0gQ1NTX1ZBTF9BVVRPKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUpIHsKICAgICAgICAgICAgIGludCB0eXBlID0gcHJp
bWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKICAgICAgICAgICAgIGlmICh0eXBlID09IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpIHsKICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0
Q3Vyc29yKChFQ3Vyc29yKShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENTU19WQUxfQVVU
TykpOwotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3JJbWFnZSgwKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewotICAg
ICAgICAgICAgICAgIENTU0ltYWdlVmFsdWUqIGltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VW
YWx1ZSo+KHByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29y
KENVUlNPUl9BVVRPKTsKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29ySW1hZ2UoaW1h
Z2UtPmltYWdlKGVsZW1lbnQtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdDdXJzb3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdD
dXJzb3JFbGVtZW50LmNwcAkocmV2aXNpb24gMTYyOTcpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdDdXJzb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2lu
Y2x1ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHQ3Vyc29yRWxlbWVudDo6
U1ZHQ3Vyc29yRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCAq
ZG9jKQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2MpCkBAIC04MCw2ICs4MCw4IEBAIHZv
aWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICB9CiB9CiAKK30KKwog
Ly8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKSW5kZXg6IFdlYkNvcmUv
bWFudWFsLXRlc3RzL2NzczMtY3Vyc29yLXRlc3QyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9tYW51YWwtdGVzdHMvY3NzMy1jdXJzb3ItdGVzdDIuaHRtbAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvbWFudWFsLXRlc3RzL2NzczMtY3Vyc29yLXRlc3QyLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0
LjAxLy9FTiIKKyAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj4KKzxo
dG1sPgorPGhlYWQ+PHRpdGxlPkN1c3RvbSBjdXJzb3IgdGVzdHM8L3RpdGxlPjwvaGVhZD4KKzxi
b2R5PgorPHA+PGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVn
LmNnaT9pZD04OTkxIj5CdWcgLjk5MTwvYT46IFJFR1JFU1NJT046IG1pc3Npbmcgb3IgYnJva2Vu
IENTUyBjdXN0b20gY3Vyc29ycyBhcmUgZGlzcGxheWVkIGFzIGEgbWlzc2luZyBpbWFnZSBpY29u
LjwvcD4KKzxwPk1vdmUgdGhlIGN1cnNvciBvdmVyIHRoZSBibHVlIGJveCAtIGl0IHNob3VsZCBu
b3QgdHVybiBpbnRvIGEgbWlzc2luZyBpbWFnZSBpY29uLCBhbmQgc2hvdWxkIHR1cm4gaW50byBh
biBJLWJlYW0gb3ZlciB0ZXh0LjwvcD4KKworPGRpdiBzdHlsZT0id2lkdGg6MTAwcHg7aGVpZ2h0
OjUwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwobm9uZXhpc3RlbnQu
cG5nKSwgYXV0bzsiPjxzcGFuIHN0eWxlPSJjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIGF1
dG87Ij5zb21lIHRleHQ8L3NwYW4+PC9kaXY+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBweDtoZWln
aHQ6NTBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChub25leGlzdGVu
dC5wbmcpOyI+PC9kaXY+CisKKzxocj4KKzxwPjxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVu
ZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAwMSI+QnVnIDYwMDE8L2E+OiBXZWJLaXQgZG9l
cyBub3QgaGFuZGxlIGZhbGxiYWNrIGN1c3RvbSBjdXJzb3JzPC9wPgorPHA+PGEgaHJlZj0iaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD05MDEzIj5CdWcgOTAx
MzwvYT46IExldCBjb3JyZWN0IENTUyBjdXN0b20gY3Vyc29yIGRlY2xhcmF0aW9ucyBwYXJzZTwv
cD4KKzxwPkluIGVhY2ggb2YgdGhlIGJsdWUgYm94ZXMgYmVsb3csIHRoZSBjdXJzb3Igc2hvdWxk
IGJlY29tZSBhIGhlbHAgY3Vyc29yIChxdWVzdGlvbiBtYXJrKS48L3A+Cis8dGFibGU+PHRyPgor
IDx0ZD48ZGl2IHN0eWxlPSJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xv
cjpsaWdodGJsdWU7IGN1cnNvcjp1cmwocmVzb3VyY2VzL2hlbHBDdXJzb3IudGlmZiksIHRleHQ7
Ij48L2Rpdj48L3RkPiA8IS0tIFZhbGlkLCBubyBmYWxsYmFjayBuZWVkZWQgLS0+CisgPHRkPjxk
aXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0
Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKTsnPjwvZGl2PjwvdGQ+
IDwhLS0gSW52YWxpZCwgYnV0IGFsbG93ZWQgYnkgV2luSUUgLS0+CisgPHRkPjxkaXYgc3R5bGU9
J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vy
c29yOnVybChub25leGlzdGVudC5wbmcpLCBoZWxwOyc+PC9kaXY+PC90ZD4KKyA8dGQ+PGRpdiBz
dHlsZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6bGlnaHRibHVl
OyBjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIHVybChjdXN0b20tY3Vyc29ycy5odG1sKSwg
dXJsKHVua25vd24tc2NoZW1lOmN1c3RvbS1jdXJzb3JzLmh0bWwpLCB1cmwocmVzb3VyY2VzL2hl
bHBDdXJzb3IudGlmZiksIHRleHQ7Jz48L2Rpdj48L3RkPgorIDx0ZD48ZGl2IHN0eWxlPSd3aWR0
aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1
cmwobm9uZXhpc3RlbnQucG5nKSwgdXJsKCJyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmIiksIHRl
eHQ7Jz48L2Rpdj48L3RkPgorIDx0ZD48ZGl2IHN0eWxlPSd3aWR0aDoxMDBweDtoZWlnaHQ6MTAw
cHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwocmVzb3VyY2VzL2hlbHBD
dXJzb3IudGlmZikgMSAxLCB0ZXh0Oyc+PC9kaXY+PC90ZD4gPCEtLSBDU1MzIGhvdCBzcG90IC0g
dmFsaWQsIG5vIGZhbGxiYWNrIG5lZWRlZCAtLT4KKzwvdHI+Cis8L3RhYmxlPgorCis8cD48L3A+
Cis8cD48c3BhbiBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjpncmF5OyBjdXJzb3I6dXJsKG5vbmV4
aXN0ZW50LnBuZyksIHVybCgicmVzb3VyY2VzL2hlbHBDdXJzb3IudGlmZiIpOyc+U2hvdWxkIHNo
b3cgYW4gSS1iZWFtIGN1cnNvci48L3NwYW4+PC9wPiA8IS0tIEFuIGludmFsaWQgZGVjbGFyYXRp
b24sIGV2ZW4gYnkgV2luSUUgc3RhbmRhcmRzIC0tPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAJKHJldmlzaW9uIDE2Mjk3KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEwICs0OCwxOCBAQAogI2luY2x1ZGUgIlNlbGVjdGlv
bkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjc3NzdHlsZXNlbGVjdG9yLmgiCiAKKyNpZiBTVkdf
U1VQUE9SVAorI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgor
I2luY2x1ZGUgIlNWR0N1cnNvckVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0
aC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEV2
ZW50TmFtZXM7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwordXNpbmcgbmFtZXNwYWNlIFNW
R05hbWVzOwogCiBzdHJ1Y3QgU2NoZWR1bGVkRXZlbnQgewogICAgIFJlZlB0cjxFdmVudD4gbV9l
dmVudDsKQEAgLTY0MSwxMSArNjQ5LDMwIEBAIHN0YXRpYyBDdXJzb3Igc2VsZWN0Q3Vyc29yKGNv
bnN0IE1vdXNlRXYKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZSA/IG5vZGUtPnJl
bmRlcmVyKCkgOiAwOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyID8gcmVuZGVy
ZXItPnN0eWxlKCkgOiAwOwogCi0gICAgaWYgKHN0eWxlICYmIHN0eWxlLT5jdXJzb3JJbWFnZSgp
ICYmICFzdHlsZS0+Y3Vyc29ySW1hZ2UoKS0+aW1hZ2UoKS0+aXNOdWxsKCkpCi0gICAgICAgIGlm
ICghc3R5bGUtPmN1cnNvckltYWdlKCktPmlzRXJyb3JJbWFnZSgpKQotICAgICAgICAgICAgcmV0
dXJuIHN0eWxlLT5jdXJzb3JJbWFnZSgpLT5pbWFnZSgpOwotICAgICAgICBlbHNlIAotICAgICAg
ICAgICAgc3R5bGUgPSAwOyAvLyBGYWxsYmFjayB0byBDVVJTT1JfQVVUTworICAgIGlmIChzdHls
ZSAmJiBzdHlsZS0+Y3Vyc29ycygpKSB7CisgICAgICAgIGNvbnN0IEN1cnNvckxpc3QqIGN1cnNv
cnMgPSBzdHlsZS0+Y3Vyc29ycygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Y3Vyc29ycy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIENhY2hlZEltYWdlKiBjaW1hZ2Ug
PSAoKmN1cnNvcnMpW2ldLmN1cnNvckltYWdlOworICAgICAgICAgICAgSW50UG9pbnQgaG90U3Bv
dCA9ICgqY3Vyc29ycylbaV0uaG90U3BvdDsKKyNpZiBTVkdfU1VQUE9SVAorICAgICAgICAgICAg
aWYgKCFjaW1hZ2UpIHsKKyAgICAgICAgICAgICAgICBFbGVtZW50KiBlID0gbm9kZS0+ZG9jdW1l
bnQoKS0+Z2V0RWxlbWVudEJ5SWQoKCpjdXJzb3JzKVtpXS5jdXJzb3JGcmFnbWVudElkKTsKKyAg
ICAgICAgICAgICAgICBpZiAoZSAmJiBlLT5oYXNUYWdOYW1lKGN1cnNvclRhZykpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaG90U3BvdC5zZXRYKGludChzdGF0aWNfY2FzdDxTVkdDdXJzb3JFbGVt
ZW50Kj4oZSktPnhCYXNlVmFsdWUoKS0+dmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBo
b3RTcG90LnNldFkoaW50KHN0YXRpY19jYXN0PFNWR0N1cnNvckVsZW1lbnQqPihlKS0+eUJhc2VW
YWx1ZSgpLT52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIGNpbWFnZSA9IHN0YXRpY19j
YXN0PFNWR0N1cnNvckVsZW1lbnQqPihlKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgIGlmICghY2ltYWdlKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGNpbWFnZS0+aW1hZ2UoKS0+
aXNOdWxsKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIWNpbWFn
ZS0+aXNFcnJvckltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ3Vyc29yKGNpbWFn
ZS0+aW1hZ2UoKSwgaG90U3BvdCk7Cit9CisgICAgICAgIH0KKyAgICB9CiAKICAgICBzd2l0Y2gg
KHN0eWxlID8gc3R5bGUtPmN1cnNvcigpIDogQ1VSU09SX0FVVE8pIHsKICAgICAgICAgY2FzZSBD
VVJTT1JfQVVUTzogewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCShyZXZpc2lvbiAxNjI5NykKKysrIFdlYkNv
cmUvcGxhdGZvcm0vQ3Vyc29yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xh
c3MgTlNDdXJzb3I7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBJbWFnZTsKKyAg
ICBjbGFzcyBJbnRQb2ludDsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICB0eXBlZGVmIEhDVVJT
T1IgUGxhdGZvcm1DdXJzb3I7CkBAIC02OSw3ICs3MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICNlbmRpZgogICAgICAgICB7IH0KIAotICAgICAgICBDdXJzb3IoSW1hZ2UqKTsKKyAgICAgICAg
Q3Vyc29yKEltYWdlKiwgY29uc3QgSW50UG9pbnQmIGhvdHNwb3QpOwogICAgICAgICBDdXJzb3Io
Y29uc3QgQ3Vyc29yJik7CiAgICAgICAgIH5DdXJzb3IoKTsKICAgICAgICAgQ3Vyc29yJiBvcGVy
YXRvcj0oY29uc3QgQ3Vyc29yJik7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCShy
ZXZpc2lvbiAxNjI5NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0N1cnNvck1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgi
CiAjaW1wb3J0ICJGb3VuZGF0aW9uRXh0cmFzLmgiCiAjaW1wb3J0ICJJbWFnZS5oIgorI2ltcG9y
dCAiSW50UG9pbnQuaCIKIAogQGludGVyZmFjZSBXZWJDb3JlQ3Vyc29yQnVuZGxlIDogTlNPYmpl
Y3QgeyB9CiBAZW5kCkBAIC00MSwxNCArNDIsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8g
U2ltcGxlIE5TQ3Vyc29yIGNhbGxzIHNob3VsZG4ndCBuZWVkIHByb3RlY3Rpb24sCiAvLyBidXQg
Y3JlYXRpbmcgYSBjdXJzb3Igd2l0aCBhIGJhZCBpbWFnZSBtaWdodCB0aHJvdy4KIAotc3RhdGlj
IE5TQ3Vyc29yKiBjcmVhdGVDdXN0b21DdXJzb3IoSW1hZ2UqIGltYWdlKQorc3RhdGljIE5TQ3Vy
c29yKiBjcmVhdGVDdXN0b21DdXJzb3IoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQb2ludCYgaG90
c3BvdCkKIHsKICAgICAvLyBGSVhNRTogVGhlIGN1cnNvciB3b24ndCBhbmltYXRlLiAgTm90IHN1
cmUgaWYgdGhhdCdzIGEgYmlnIGRlYWwuCiAgICAgTlNJbWFnZSogaW1nID0gaW1hZ2UtPmdldE5T
SW1hZ2UoKTsKICAgICBpZiAoIWltZykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW05TQ3Vyc29yIGFsbG9jXSBpbml0V2l0
aEltYWdlOmltZyBob3RTcG90Ok5TWmVyb1BvaW50XTsKKyAgICByZXR1cm4gW1tOU0N1cnNvciBh
bGxvY10gaW5pdFdpdGhJbWFnZTppbWcgaG90U3BvdDpob3RzcG90XTsKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwogICAgIHJldHVybiAwOwogfQpAQCAtNzQsOCArNzUsOCBAQCBzdGF0
aWMgTlNDdXJzb3IqIGxlYWtOYW1lZEN1cnNvcihjb25zdCBjCiAgICAgcmV0dXJuIDA7CiB9CiAK
LUN1cnNvcjo6Q3Vyc29yKEltYWdlKiBpbWFnZSkKLSAgICA6IG1faW1wbChIYXJkUmV0YWluV2l0
aE5TUmVsZWFzZShjcmVhdGVDdXN0b21DdXJzb3IoaW1hZ2UpKSkKK0N1cnNvcjo6Q3Vyc29yKElt
YWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGhvdHNwb3QpCisgICAgOiBtX2ltcGwoSGFyZFJl
dGFpbldpdGhOU1JlbGVhc2UoY3JlYXRlQ3VzdG9tQ3Vyc29yKGltYWdlLCBob3RzcG90KSkpCiB7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvQ3Vyc29yUXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvQ3Vyc29yUXQuY3BwCShyZXZpc2lvbiAxNjI5NykKKysr
IFdlYkNvcmUvcGxhdGZvcm0vcXQvQ3Vyc29yUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3
ICs1Myw3IEBAIEN1cnNvcjo6fkN1cnNvcigpCiB7CiB9CiAKLUN1cnNvcjo6Q3Vyc29yKEltYWdl
KikKK0N1cnNvcjo6Q3Vyc29yKEltYWdlKiwgY29uc3QgSW50UG9pbnQmKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTdHlsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lv
biAxNjI5NykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTEwLDcgKzUxMCw3IEBAIGJvb2wgU3R5bGVDU1MzSW5oZXJpdGVkRGF0YTo6c2hh
ZG93RGF0YUUKIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKCkKICAgICA6
IGluZGVudChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRJbmRlbnQoKSksIGxpbmVfaGVpZ2h0KFJl
bmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKSwgCiAgICAgICBzdHlsZV9pbWFnZShSZW5k
ZXJTdHlsZTo6aW5pdGlhbExpc3RTdHlsZUltYWdlKCkpLAotICAgICAgY3Vyc29yX2ltYWdlKDAp
LCBjb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbENvbG9yKCkpLCAKKyAgICAgIGNvbG9yKFJlbmRl
clN0eWxlOjppbml0aWFsQ29sb3IoKSksIAogICAgICAgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2lu
ZyhSZW5kZXJTdHlsZTo6aW5pdGlhbEhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkpLCAKICAgICAg
IHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKFJlbmRlclN0eWxlOjppbml0aWFsVmVydGljYWxCb3Jk
ZXJTcGFjaW5nKCkpLAogICAgICAgd2lkb3dzKFJlbmRlclN0eWxlOjppbml0aWFsV2lkb3dzKCkp
LCBvcnBoYW5zKFJlbmRlclN0eWxlOjppbml0aWFsT3JwaGFucygpKSwKQEAgLTUyNSw4ICs1MjUs
OCBAQCBTdHlsZUluaGVyaXRlZERhdGE6On5TdHlsZUluaGVyaXRlZERhdGEoCiBTdHlsZUluaGVy
aXRlZERhdGE6OlN0eWxlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmIG8g
KQogICAgIDogU2hhcmVkPFN0eWxlSW5oZXJpdGVkRGF0YT4oKSwKICAgICAgIGluZGVudCggby5p
bmRlbnQgKSwgbGluZV9oZWlnaHQoIG8ubGluZV9oZWlnaHQgKSwgc3R5bGVfaW1hZ2UoIG8uc3R5
bGVfaW1hZ2UgKSwKLSAgICAgIGN1cnNvcl9pbWFnZSggby5jdXJzb3JfaW1hZ2UgKSwgZm9udCgg
by5mb250ICksCi0gICAgICBjb2xvciggby5jb2xvciApLAorICAgICAgY3Vyc29yRGF0YShvLmN1
cnNvckRhdGEpLAorICAgICAgZm9udCggby5mb250ICksIGNvbG9yKCBvLmNvbG9yICksCiAgICAg
ICBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKCBvLmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcg
KSwKICAgICAgIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKCBvLnZlcnRpY2FsX2JvcmRlcl9zcGFj
aW5nICksCiAgICAgICB3aWRvd3Moby53aWRvd3MpLCBvcnBoYW5zKG8ub3JwaGFucyksIHBhZ2Vf
YnJlYWtfaW5zaWRlKG8ucGFnZV9icmVha19pbnNpZGUpCkBAIC01MzksNyArNTM5LDcgQEAgYm9v
bCBTdHlsZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29ucwogICAgICAgICBpbmRlbnQgPT0g
by5pbmRlbnQgJiYKICAgICAgICAgbGluZV9oZWlnaHQgPT0gby5saW5lX2hlaWdodCAmJgogICAg
ICAgICBzdHlsZV9pbWFnZSA9PSBvLnN0eWxlX2ltYWdlICYmCi0gICAgICAgIGN1cnNvcl9pbWFn
ZSA9PSBvLmN1cnNvcl9pbWFnZSAmJgorICAgICAgICBjdXJzb3JEYXRhICA9PSBvLmN1cnNvckRh
dGEgJiYKICAgICAgICAgZm9udCA9PSBvLmZvbnQgJiYKICAgICAgICAgY29sb3IgPT0gby5jb2xv
ciAmJgogICAgICAgICBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nID09IG8uaG9yaXpvbnRhbF9i
b3JkZXJfc3BhY2luZyAmJgpAQCAtODI0LDcgKzgyNCw3IEBAIFJlbmRlclN0eWxlOjpEaWZmIFJl
bmRlclN0eWxlOjpkaWZmKCBjb24KICAgICAgICAgIShpbmhlcml0ZWQtPmluZGVudCA9PSBvdGhl
ci0+aW5oZXJpdGVkLT5pbmRlbnQpIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT5saW5lX2hlaWdo
dCA9PSBvdGhlci0+aW5oZXJpdGVkLT5saW5lX2hlaWdodCkgfHwKICAgICAgICAgIShpbmhlcml0
ZWQtPnN0eWxlX2ltYWdlID09IG90aGVyLT5pbmhlcml0ZWQtPnN0eWxlX2ltYWdlKSB8fAotICAg
ICAgICAhKGluaGVyaXRlZC0+Y3Vyc29yX2ltYWdlID09IG90aGVyLT5pbmhlcml0ZWQtPmN1cnNv
cl9pbWFnZSkgfHwKKyAgICAgICAgIShpbmhlcml0ZWQtPmN1cnNvckRhdGEgID09IG90aGVyLT5p
bmhlcml0ZWQtPmN1cnNvckRhdGEpIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT5mb250ID09IG90
aGVyLT5pbmhlcml0ZWQtPmZvbnQpIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT5ob3Jpem9udGFs
X2JvcmRlcl9zcGFjaW5nID09IG90aGVyLT5pbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVyX3Nw
YWNpbmcpIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyA9
PSBvdGhlci0+aW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZykgfHwKQEAgLTk4Myw2
ICs5ODMsMzAgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q2xpcCggTGVuZ3RoIHRvcCwgTAogICAg
IGRhdGEtPmNsaXAubGVmdCA9IGxlZnQ7CiB9CiAKK3ZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1cnNv
cihDYWNoZWRJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQoreworICAgIEN1
cnNvckRhdGEgZGF0YTsKKyAgICBkYXRhLmN1cnNvckltYWdlID0gaW1hZ2U7CisgICAgZGF0YS5o
b3RTcG90ID0gaG90U3BvdDsKKyAgICBpZiAoIWluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vyc29yRGF0
YSkKKyAgICAgICAgaW5oZXJpdGVkLmFjY2VzcygpLT5jdXJzb3JEYXRhID0gbmV3IEN1cnNvckxp
c3Q7CisgICAgaW5oZXJpdGVkLmFjY2VzcygpLT5jdXJzb3JEYXRhLT5hcHBlbmQoZGF0YSk7Cit9
CisKK3ZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1cnNvcihjb25zdCBTdHJpbmcmIGlkKQoreworICAg
IEN1cnNvckRhdGEgZGF0YTsKKyAgICBkYXRhLmN1cnNvckZyYWdtZW50SWQgPSBpZDsKKyAgICBp
ZiAoIWluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSkKKyAgICAgICAgaW5oZXJpdGVkLmFj
Y2VzcygpLT5jdXJzb3JEYXRhID0gbmV3IEN1cnNvckxpc3Q7CisgICAgaW5oZXJpdGVkLmFjY2Vz
cygpLT5jdXJzb3JEYXRhLT5hcHBlbmQoZGF0YSk7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OnNl
dEN1cnNvcnMoUGFzc1JlZlB0cjxDdXJzb3JMaXN0PiBvdGhlcikKK3sKKyAgICBpbmhlcml0ZWQu
YWNjZXNzKCktPmN1cnNvckRhdGEgPSBvdGhlcjsKK30KKwogYm9vbCBSZW5kZXJTdHlsZTo6Y29u
dGVudERhdGFFcXVpdmFsZW50KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdAog
ewogICAgIENvbnRlbnREYXRhKiBjMSA9IGNvbnRlbnQ7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclN0
eWxlLmgJKHJldmlzaW9uIDE2Mjk3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5bGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogICovCiAKICNpbmNsdWRlICJDb2xv
ci5oIgorI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJEYXRhUmVm
LmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTYy
LDYgKzYzLDggQEAgdXNpbmcgc3RkOjptYXg7CiBjbGFzcyBDU1NTdHlsZVNlbGVjdG9yOwogY2xh
c3MgQ2FjaGVkSW1hZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKK3N0cnVjdCBDdXJzb3JEYXRh
OworY2xhc3MgQ3Vyc29yTGlzdDsKIGNsYXNzIFJlbmRlckFyZW5hOwogY2xhc3MgU2hhZG93VmFs
dWU7CiBjbGFzcyBTdHJpbmdJbXBsOwpAQCAtODI0LDcgKzgyNyw3IEBAIHB1YmxpYzoKICAgICBM
ZW5ndGggbGluZV9oZWlnaHQ7CiAKICAgICBDYWNoZWRJbWFnZSAqc3R5bGVfaW1hZ2U7Ci0gICAg
Q2FjaGVkSW1hZ2UgKmN1cnNvcl9pbWFnZTsKKyAgICBSZWZQdHI8Q3Vyc29yTGlzdD4gY3Vyc29y
RGF0YTsKIAogICAgIEZvbnQgZm9udDsKICAgICBDb2xvciBjb2xvcjsKQEAgLTg2OCw2ICs4NzEs
MjkgQEAgZW51bSBFQ3Vyc29yIHsKICAgICBDVVJTT1JfQ09MX1JFU0laRSwgQ1VSU09SX1JPV19S
RVNJWkUsIENVUlNPUl9URVhULCBDVVJTT1JfV0FJVCwgQ1VSU09SX0hFTFAKIH07CiAKK3N0cnVj
dCBDdXJzb3JEYXRhIHsKKyAgICBDdXJzb3JEYXRhKCkKKyAgICAgICAgOiBjdXJzb3JJbWFnZSgw
KQorICAgIHt9CisgICAgCisgICAgSW50UG9pbnQgaG90U3BvdDsgLy8gZm9yIENTUzMgc3VwcG9y
dAorICAgIENhY2hlZEltYWdlKiBjdXJzb3JJbWFnZTsgLy8gd2VhayBwb2ludGVyLCB0aGUgQ1NT
VmFsdWVJbWFnZSB0YWtlcyBjYXJlIG9mIGRlbGV0aW5nIGN1cnNvckltYWdlCisgICAgU3RyaW5n
IGN1cnNvckZyYWdtZW50SWQ7IC8vIG9ubHkgdXNlZCBmb3IgU1ZHQ3Vyc29yRWxlbWVudCwgYSBk
aXJlY3QgcG9pbnRlciB3b3VsZCBnZXQgc3RhbGUKK307CisKK2NsYXNzIEN1cnNvckxpc3QgOiBw
dWJsaWMgU2hhcmVkPEN1cnNvckxpc3Q+IHsKK3B1YmxpYzoKKyAgICBjb25zdCBDdXJzb3JEYXRh
JiBvcGVyYXRvcltdKGludCBpKSBjb25zdCB7CisgICAgICAgIHJldHVybiBtX3ZlY3RvcltpXTsK
KyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLnNpemUo
KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IEN1cnNvckRhdGEmIGN1cnNvckRhdGEpIHsgbV92
ZWN0b3IuYXBwZW5kKGN1cnNvckRhdGEpOyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPEN1cnNv
ckRhdGE+IG1fdmVjdG9yOworfTsKKwogZW51bSBDb250ZW50VHlwZSB7CiAgICAgQ09OVEVOVF9O
T05FLCBDT05URU5UX09CSkVDVCwgQ09OVEVOVF9URVhULCBDT05URU5UX0NPVU5URVIKIH07CkBA
IC0xMzE0LDcgKzEzNDAsNyBAQCBwdWJsaWM6CiAKICAgICBFQ3Vyc29yIGN1cnNvcigpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVDdXJzb3I+KGluaGVyaXRlZF9mbGFncy5fY3Vyc29yX3N0
eWxlKTsgfQogICAgIAotICAgIENhY2hlZEltYWdlICpjdXJzb3JJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIGluaGVyaXRlZC0+Y3Vyc29yX2ltYWdlOyB9CisgICAgQ3Vyc29yTGlzdCogY3Vyc29ycygp
IGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Y3Vyc29yRGF0YS5nZXQoKTsgfQogCiAgICAgc2hv
cnQgd2lkb3dzKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT53aWRvd3M7IH0KICAgICBzaG9y
dCBvcnBoYW5zKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5vcnBoYW5zOyB9CkBAIC0xNTIx
LDcgKzE1NDcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYWRkaW5nUmlnaHQoTGVuZ3RoIHYp
ICB7ICBTRVRfVkFSKHN1cnJvdW5kLHBhZGRpbmcucmlnaHQsdikgfQogCiAgICAgdm9pZCBzZXRD
dXJzb3IoIEVDdXJzb3IgYyApIHsgaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGUgPSBjOyB9
Ci0gICAgdm9pZCBzZXRDdXJzb3JJbWFnZSggQ2FjaGVkSW1hZ2UgKnYgKSB7IFNFVF9WQVIoaW5o
ZXJpdGVkLGN1cnNvcl9pbWFnZSx2KSB9CisgICAgdm9pZCBhZGRDdXJzb3IoQ2FjaGVkSW1hZ2Uq
LCBjb25zdCBJbnRQb2ludCYgPSBJbnRQb2ludCgpKTsKKyAgICB2b2lkIGFkZEN1cnNvcihjb25z
dCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEN1cnNvcnMoUGFzc1JlZlB0cjxDdXJzb3JMaXN0Pik7
CiAKICAgICBib29sIGZvcmNlQmFja2dyb3VuZHNUb1doaXRlKCkgY29uc3QgeyByZXR1cm4gaW5o
ZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZTsgfQogICAgIHZvaWQgc2V0
Rm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoYm9vbCBiPXRydWUpIHsgaW5oZXJpdGVkX2ZsYWdzLl9m
b3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSA9IGI7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10574</attachid>
            <date>2006-09-15 04:42:17 -0700</date>
            <delta_ts>2006-09-15 15:10:58 -0700</delta_ts>
            <desc>Another attempt</desc>
            <filename>6002-10.diff</filename>
            <type>text/plain</type>
            <size>31927</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjM2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMDYtMDktMTUgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAxCisgICAgICAg
IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9tIGN1cnNvcnMKKyAgICAgICAg
Rml4IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTYw
MDIKKyAgICAgICAgV2ViS2l0IGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSBTVkcgPGN1cnNvcj4g
ZWxlbWVudAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzdmcgY3Vyc29yIGltYWdlcy4gQWxz
byBtYWtlIHN1cmUgaG90c3BvdAorICAgICAgICBzZXR0aW5ncyBhcmUgaGFuZGxlZCBjb3JyZWN0
bHkuIEZpbmFsbHkgaW1wbGVtZW50IGZhbGxiYWNrLgorCisgICAgICAgIFdBUk5JTkc6IE5PIFRF
U1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvY3NzcGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL2Nzc3N0
eWxlc2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBw
bHlQcm9wZXJ0eSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwOgor
ICAgICAgICAqIG1hbnVhbC10ZXN0cy9jc3MzLWN1cnNvci10ZXN0Mi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RDdXJz
b3IpOgorICAgICAgICAqIHBsYXRmb3JtL0N1cnNvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9DdXJzb3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDdXN0b21DdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yOjpDdXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL3F0
L0N1cnNvclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvcjo6Q3Vyc29yKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJ
bmhlcml0ZWREYXRhOjpTdHlsZUluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpkaWZmKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphZGRDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEN1cnNvcnMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yRGF0YTo6Q3Vy
c29yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JMaXN0OjpvcGVyYXRvcltdKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cnNvckxpc3Q6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
c29yTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjdXJzb3Jz
KToKKwogMjAwNi0wOS0xNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTaWVkZWwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjM2OSkKKysrIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzA4LDYgKzE3
MDgsOCBAQAogCQlBOEZFRkIwQjA5NzlGNDcyMDA1ODM5RkQgLyogUmVuZGVyRm9yZWlnbk9iamVj
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEZF
RkIwOTA5NzlGNDcyMDA1ODM5RkQgLyogUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAgKi87IH07CiAJ
CUE4RkVGQjMxMDk3OUY0RjYwMDU4MzlGRCAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEZFRkIyRjA5
NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwICovOyB9OwogCQlB
OEZFRkIzMjA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RkVGQjMwMDk3OUY0
RjYwMDU4MzlGRCAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oICovOyB9OworCQlBQTA5NzhF
RjBBQkFBNkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTA5NzhFRDBBQkFBNkUxMDA4NzQ0
ODAgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgKi87IH07CisJCUFBMDk3OEYwMEFCQUE2RTEw
MDg3NDQ4MCAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTA5NzhFRTBBQkFBNkUxMDA4NzQ0ODAgLyogQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZS5oICovOyB9OwogCQlBQTk4Qjg3RDBBQUEwMkY4MDAxQTQ0QzIgLyogUGF0
aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTk4
Qjg3QzBBQUEwMkY4MDAxQTQ0QzIgLyogUGF0aC5jcHAgKi87IH07CiAJCUFBQzhEQUIxMEFBMTAw
MjAwMERDMDkwNyAvKiBTVkdNZXRhZGF0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFDOERBQUYwQUExMDAyMDAwREMwOTA3IC8qIFNW
R01ldGFkYXRhRWxlbWVudC5jcHAgKi87IH07CiAJCUFBQzhEQUIyMEFBMTAwMjAwMERDMDkwNyAv
KiBTVkdNZXRhZGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFBQzhEQUIwMEFBMTAwMjAwMERDMDkwNyAvKiBTVkdNZXRhZGF0YUVsZW1l
bnQuaCAqLzsgfTsKQEAgLTQxMTQsNiArNDExNiw4IEBACiAJCUE4RkVGQjA5MDk3OUY0NzIwMDU4
MzlGRCAvKiBSZW5kZXJGb3JlaWduT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW5kZXJGb3JlaWduT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQThGRUZCMkYwOTc5RjRGNjAwNTgzOUZEIC8qIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RkVG
QjMwMDk3OUY0RjYwMDU4MzlGRCAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUEwOTc4RUQwQUJBQTZFMTAwODc0NDgwIC8qIENT
U0N1cnNvckltYWdlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENTU0N1cnNvckltYWdlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBQTA5NzhFRTBBQkFBNkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTk4Qjg3QzBBQUEwMkY4MDAxQTQ0QzIgLyogUGF0
aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGF0aC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBQzhEQUFGMEFBMTAwMjAwMERDMDkwNyAvKiBT
VkdNZXRhZGF0YUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNWR01ldGFkYXRhRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUFBQzhEQUIwMEFBMTAwMjAwMERDMDkwNyAvKiBTVkdNZXRhZGF0YUVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR01ldGFkYXRhRWxlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzE0NSw2ICs3MTQ5LDggQEAKIAkJRjUyM0QxODQwMkRF
NDJFODAxODYzNUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQUEwOTc4RUQwQUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvckltYWdlVmFs
dWUuY3BwICovLAorCQkJCUFBMDk3OEVFMEFCQUE2RTEwMDg3NDQ4MCAvKiBDU1NDdXJzb3JJbWFn
ZVZhbHVlLmggKi8sCiAJCQkJQTgwRTZDREEwQTE5ODlDQTAwN0ZCOEM1IC8qIENvdW50ZXIuaCAq
LywKIAkJCQk5MzA3MDVDNzA5RTBDOTVGMDBCMTdGRTQgLyogQ291bnRlci5pZGwgKi8sCiAJCQkJ
QTgwRTZDQkIwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0JvcmRlckltYWdlVmFsdWUuY3BwICovLApA
QCAtODU0Niw2ICs4NTUyLDcgQEAKIAkJCQlCMjIyRjY5OTBBQjc3MTk1MDAyMkVGQUQgLyogSlNT
VkdBbmdsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMkY2OUQwQUI3NzFCODAwMjJFRkFEIC8q
IEpTU1ZHRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIwMTExMDgwQUI3NzQwNTAwREIw
RTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUFBMDk3OEYwMEFCQUE2
RTEwMDg3NDQ4MCAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTk3
NTAsNiArOTc1Nyw3IEBACiAJCQkJQjIyMkY2OTgwQUI3NzE5NTAwMjJFRkFEIC8qIEpTU1ZHQW5n
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMkY2OUMwQUI3NzFCODAwMjJFRkFEIC8qIEpT
U1ZHRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjAxMTEwNzBBQjc3NDA1MDBEQjBF
NjggLyogSlNTVkdBRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBQTA5NzhFRjBBQkFB
NkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5k
ZXg6IFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNp
b24gMTYzNjkpCisrKyBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MDcsNTcgKzYwNyw4OSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgY2FzZSBDU1NfUFJPUF9DT1VOVEVSX1JFU0VUOgog
ICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAogICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU19QUk9QX0NVUlNPUjoKLSAgICAgICAgaWYgKHN0eWxlLT5jdXJzb3JJbWFnZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Y3Vyc29ySW1hZ2Uo
KS0+dXJsKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKTsKKyAgICBjYXNlIENTU19QUk9Q
X0NVUlNPUjogeworICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSAwOworICAgICAgICBDU1NW
YWx1ZSogdmFsdWUgPSAwOworICAgICAgICBDdXJzb3JMaXN0KiBjdXJzb3JzID0gc3R5bGUtPmN1
cnNvcnMoKTsKKyAgICAgICAgaWYgKGN1cnNvcnMgJiYgY3Vyc29ycy0+c2l6ZSgpID4gMCkgewor
ICAgICAgICAgICAgbGlzdCA9IG5ldyBDU1NWYWx1ZUxpc3Q7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY3Vyc29ycy0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSgoKmN1cnNvcnMpW2ldLmN1cnNvcklt
YWdlLT51cmwoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpKTsKKyAgICAgICAgfQogICAg
ICAgICBzd2l0Y2ggKHN0eWxlLT5jdXJzb3IoKSkgewogICAgICAgICAgICAgY2FzZSBDVVJTT1Jf
QVVUTzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfQVVUTyk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9BVVRPKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
Q1VSU09SX0NST1NTOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9DUk9TU0hBSVIpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfQ1JPU1NIQUlSKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0RFRkFVTFQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0RFRkFVTFQpOworICAgICAgICAgICAgICAg
IHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfREVGQVVMVCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9QT0lOVEVSOgotICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QT0lOVEVSKTsK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1BP
SU5URVIpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1Jf
TU9WRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfTU9WRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9NT1ZFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
Q1VSU09SX0VfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9FX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9ORV9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05FX1JFU0laRSk7CisgICAgICAgICAg
ICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ORV9SRVNJWkUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfTldfUkVTSVpF
OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9O
V19SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfTldfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgQ1VSU09SX05fUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9OX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OX1JFU0laRSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9TRV9SRVNJWkU6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NFX1JFU0laRSk7CisgICAg
ICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TRV9SRVNJ
WkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfU1df
UkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9TV19SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfU1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgQ1VSU09SX1NfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFs
dWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TX1JFU0laRSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9XX1JFU0laRToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV19SRVNJWkUpOwor
ICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV19S
RVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1Jf
RVdfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9FV19SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfRVdfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX05TX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTlNfUkVTSVpFKTsKKyAgICAgICAgICAgICAg
ICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05TX1JFU0laRSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9ORVNXX1JFU0laRToK
LSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTkVT
V19SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfTkVTV19SRVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBDVVJTT1JfTldTRV9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05XU0VfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2
YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05XU0VfUkVTSVpFKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0NPTF9SRVNJWkU6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NPTF9S
RVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfQ09MX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIENVUlNPUl9ST1dfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9ST1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JPV19SRVNJWkUpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfVEVYVDoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEVYVCk7CisgICAgICAgICAg
ICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9URVhUKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1dBSVQ6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1dBSVQpOworICAg
ICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV0FJVCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9IRUxQOgot
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9IRUxQ
KTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0hFTFApOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKKyAgICAgICAgaWYgKGxpc3QpIHsK
KyAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gbGlz
dDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQogICAgIGNhc2UgQ1NT
X1BST1BfRElSRUNUSU9OOgogICAgICAgICBzd2l0Y2ggKHN0eWxlLT5kaXJlY3Rpb24oKSkgewog
ICAgICAgICAgICAgY2FzZSBMVFI6CkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAJKHJldmlzaW9uIDE2MzY5KQor
KysgV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUs
NyBAQAogI2luY2x1ZGUgImNzc3BhcnNlci5oIgogCiAjaW5jbHVkZSAiQ1NTQm9yZGVySW1hZ2VW
YWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJ
bWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ2hhcnNldFJ1bGUuaCIKICNpbmNsdWRlICJDU1NJ
bXBvcnRSdWxlLmgiCkBAIC02OTQsMjYgKzY5NSw2MCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNl
IENTU19QUk9QX0NVUlNPUjoKKyAgICBjYXNlIENTU19QUk9QX0NVUlNPUjogewogICAgICAgICAv
LyBbPHVyaT4sXSogIFsgYXV0byB8IGNyb3NzaGFpciB8IGRlZmF1bHQgfCBwb2ludGVyIHwgcHJv
Z3Jlc3MgfCBtb3ZlIHwgZS1yZXNpemUgfCBuZS1yZXNpemUgfAogICAgICAgICAvLyBudy1yZXNp
emUgfCBuLXJlc2l6ZSB8IHNlLXJlc2l6ZSB8IHN3LXJlc2l6ZSB8IHMtcmVzaXplIHwgdy1yZXNp
emUgfCBldy1yZXNpemUgfCAKICAgICAgICAgLy8gbnMtcmVzaXplIHwgbmVzdy1yZXNpemUgfCBu
d3NlLXJlc2l6ZSB8IGNvbC1yZXNpemUgfCByb3ctcmVzaXplIHwgdGV4dCB8IHdhaXQgfCBoZWxw
IF0gXSB8IGluaGVyaXQKLSAgICAgICAgaWYgKCFzdHJpY3QgJiYgaWQgPT0gQ1NTX1ZBTF9IQU5E
KSB7IC8vIE1TSUUgNSBjb21wYXRpYmlsaXR5IDovCi0gICAgICAgICAgICBpZCA9IENTU19WQUxf
UE9JTlRFUjsKLSAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoaWQgPj0gQ1NTX1ZBTF9BVVRPICYmIGlkIDw9IENTU19WQUxfSEVMUCkKLSAgICAg
ICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKHZhbHVlLT51
bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7CisgICAgICAgIENTU1ZhbHVlTGlz
dCogbGlzdCA9IDA7CisgICAgICAgIHdoaWxlICh2YWx1ZSAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewogICAgICAgICAgICAgU3RyaW5nIHVyaSA9IHBhcnNl
VVJMKGRvbVN0cmluZyh2YWx1ZS0+c3RyaW5nKSk7CisjaWYgU1ZHX1NVUFBPUlQKKyAgICAgICAg
ICAgIGlmICh1cmkuc3RhcnRzV2l0aCgiIyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFsaXN0
KQorICAgICAgICAgICAgICAgICAgICBsaXN0ID0gbmV3IENTU1ZhbHVlTGlzdDsgCisgICAgICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh1cmksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfVVJJKSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxpc3Qt
Pm5leHQoKTsKKyAgICAgICAgICAgIH0gZWxzZQorI2VuZGlmCiAgICAgICAgICAgICBpZiAoIXVy
aS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IG5ldyBDU1NJbWFn
ZVZhbHVlKFN0cmluZyhLVVJMKHN0eWxlRWxlbWVudC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJp
bmcoKSwgdXJpLmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJsKCkpLCBzdHlsZUVsZW1lbnQpOwotICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBkb24ndCBzdXBwb3J0IGZhbGxiYWNrIGN1cnNvcnMg
eWV0LCBidXQgaWdub3JpbmcgdGhlIHJlbWFpbmluZyB2YWx1ZXMKLSAgICAgICAgICAgICAgICAv
LyB3aWxsIGF0IGxlYXN0IGxldCBjb21wbGlhbnQgZGVjbGFyYXRpb25zIHBhcnNlLgotICAgICAg
ICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgcGFyc2VkVmFsdWUsIGltcG9ydGFudCk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKCFsaXN0KQorICAgICAgICAgICAgICAgICAgICBsaXN0ID0gbmV3IENTU1ZhbHVlTGlz
dDsgCisgICAgICAgICAgICAgICAgSW50UG9pbnQgaG90c3BvdDsKKyAgICAgICAgICAgICAgICB2
YWx1ZSA9IHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB2
YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgeworICAgICAgICAg
ICAgICAgICAgICBob3RzcG90LnNldFgodmFsdWUtPmZWYWx1ZSk7CisgICAgICAgICAgICAgICAg
ICAgIHZhbHVlID0gdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2
YWx1ZSAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaG90c3BvdC5zZXRZKHZhbHVlLT5mVmFsdWUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBsaXN0
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChu
ZXcgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nKEtVUkwoc3R5bGVFbGVtZW50LT5iYXNlVVJMKCkuZGVwcmVjYXRlZFN0cmluZygpLCB1cmku
ZGVwcmVjYXRlZFN0cmluZygpKS51cmwoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhvdHNwb3QsIHN0eWxlRWxlbWVudCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFs
dWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsgLy8gY29tbWEKKyAgICAgICAgfQorICAgICAgICBpZiAo
bGlzdCkgeworICAgICAgICAgICAgaWYgKCFzdHJpY3QgJiYgIXZhbHVlKSB7IC8vIG5vIHZhbHVl
IGFmdGVyIHVybCBsaXN0IChNU0lFIDUgY29tcGF0aWJpbGl0eSkKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIXN0cmljdCAmJiB2YWx1ZS0+aWQgPT0gQ1NTX1ZBTF9IQU5EKSAvLyBNU0lFIDUgY29t
cGF0aWJpbGl0eSA6LworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9QT0lOVEVSKSk7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSAm
JiB2YWx1ZS0+aWQgPj0gQ1NTX1ZBTF9BVVRPICYmIHZhbHVlLT5pZCA8PSBDU1NfVkFMX0hFTFAp
CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZS0+aWQpKTsKKyAgICAgICAgICAgIHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgcGFy
c2VkVmFsdWUgPSBsaXN0OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
aWYgKCFzdHJpY3QgJiYgdmFsdWUtPmlkID09IENTU19WQUxfSEFORCkgeyAvLyBNU0lFIDUgY29t
cGF0aWJpbGl0eSA6LworICAgICAgICAgICAgaWQgPSBDU1NfVkFMX1BPSU5URVI7CisgICAgICAg
ICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT5p
ZCA+PSBDU1NfVkFMX0FVVE8gJiYgdmFsdWUtPmlkIDw9IENTU19WQUxfSEVMUCkKKyAgICAgICAg
ICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIH0KIAogICAg
IGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORF9BVFRBQ0hNRU5UOgogICAgIGNhc2UgQ1NTX1BST1Bf
X1dFQktJVF9CQUNLR1JPVU5EX0NMSVA6CkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAko
cmV2aXNpb24gMTYzNjkpCisrKyBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNzc3N0eWxlc2VsZWN0b3Iu
aCIKIAogI2luY2x1ZGUgIkNTU0JvcmRlckltYWdlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDdXJz
b3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNT
U0ltcG9ydFJ1bGUuaCIKICNpbmNsdWRlICJDU1NNZWRpYVJ1bGUuaCIKQEAgLTI0MTAsMjMgKzI0
MTEsNDAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgIGNh
c2UgQ1NTX1BST1BfQ1VSU09SOgogICAgICAgICBpZiAoaXNJbmhlcml0KSB7CiAgICAgICAgICAg
ICBzdHlsZS0+c2V0Q3Vyc29yKHBhcmVudFN0eWxlLT5jdXJzb3IoKSk7Ci0gICAgICAgICAgICBz
dHlsZS0+c2V0Q3Vyc29ySW1hZ2UocGFyZW50U3R5bGUtPmN1cnNvckltYWdlKCkpOworICAgICAg
ICAgICAgc3R5bGUtPnNldEN1cnNvcnMocGFyZW50U3R5bGUtPmN1cnNvcnMoKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzSW5pdGlhbCkgewogICAgICAg
ICAgICAgc3R5bGUtPnNldEN1cnNvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEN1cnNvcigpKTsKLSAg
ICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3JJbWFnZSgwKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHsKKyAgICAgICAgaWYgKHZh
bHVlLT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBz
dGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAgICAgICAgICBpbnQgbGVuID0g
bGlzdC0+bGVuZ3RoKCk7CisgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKENVUlNPUl9BVVRP
KTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAg
ICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW0oaSk7CisgICAgICAgICAgICAgICAg
aWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihpdGVtKTsKKyAgICAgICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2
ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKKyNpZiBTVkdfU1VQUE9SVAorICAgICAgICAgICAg
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuZmluZCgiIyIpID09
IDApCisgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+YWRkQ3Vyc29yKHByaW1pdGl2ZVZh
bHVlLT5nZXRTdHJpbmdWYWx1ZSgpLnN1YnN0cmluZygxKSk7CisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NDdXJzb3JJbWFnZVZhbHVlKiBpbWFnZSA9IHN0YXRpY19jYXN0PENTU0N1cnNvcklt
YWdlVmFsdWUqPihwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHls
ZS0+YWRkQ3Vyc29yKGltYWdlLT5pbWFnZShlbGVtZW50LT5kb2N1bWVudCgpLT5kb2NMb2FkZXIo
KSksIGltYWdlLT5ob3RzcG90KCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCisg
ICAgICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IoKEVDdXJzb3IpKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpIC0gQ1NTX1ZBTF9BVVRPKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUpIHsKICAgICAgICAgICAgIGludCB0eXBlID0gcHJp
bWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKICAgICAgICAgICAgIGlmICh0eXBlID09IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpIHsKICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0
Q3Vyc29yKChFQ3Vyc29yKShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENTU19WQUxfQVVU
TykpOwotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3JJbWFnZSgwKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewotICAg
ICAgICAgICAgICAgIENTU0ltYWdlVmFsdWUqIGltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VW
YWx1ZSo+KHByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29y
KENVUlNPUl9BVVRPKTsKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29ySW1hZ2UoaW1h
Z2UtPmltYWdlKGVsZW1lbnQtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdDdXJzb3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdD
dXJzb3JFbGVtZW50LmNwcAkocmV2aXNpb24gMTYzNjkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdDdXJzb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2lu
Y2x1ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHQ3Vyc29yRWxlbWVudDo6
U1ZHQ3Vyc29yRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCAq
ZG9jKQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2MpCkBAIC04MCw2ICs4MCw4IEBAIHZv
aWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICB9CiB9CiAKK30KKwog
Ly8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKSW5kZXg6IFdlYkNvcmUv
bWFudWFsLXRlc3RzL2NzczMtY3Vyc29yLXRlc3QyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9tYW51YWwtdGVzdHMvY3NzMy1jdXJzb3ItdGVzdDIuaHRtbAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvbWFudWFsLXRlc3RzL2NzczMtY3Vyc29yLXRlc3QyLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0
LjAxLy9FTiIKKyAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj4KKzxo
dG1sPgorPGhlYWQ+PHRpdGxlPkN1c3RvbSBjdXJzb3IgdGVzdHM8L3RpdGxlPjwvaGVhZD4KKzxi
b2R5PgorPHA+PGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVn
LmNnaT9pZD04OTkxIj5CdWcgLjk5MTwvYT46IFJFR1JFU1NJT046IG1pc3Npbmcgb3IgYnJva2Vu
IENTUyBjdXN0b20gY3Vyc29ycyBhcmUgZGlzcGxheWVkIGFzIGEgbWlzc2luZyBpbWFnZSBpY29u
LjwvcD4KKzxwPk1vdmUgdGhlIGN1cnNvciBvdmVyIHRoZSBibHVlIGJveCAtIGl0IHNob3VsZCBu
b3QgdHVybiBpbnRvIGEgbWlzc2luZyBpbWFnZSBpY29uLCBhbmQgc2hvdWxkIHR1cm4gaW50byBh
biBJLWJlYW0gb3ZlciB0ZXh0LjwvcD4KKworPGRpdiBzdHlsZT0id2lkdGg6MTAwcHg7aGVpZ2h0
OjUwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwobm9uZXhpc3RlbnQu
cG5nKSwgYXV0bzsiPjxzcGFuIHN0eWxlPSJjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIGF1
dG87Ij5zb21lIHRleHQ8L3NwYW4+PC9kaXY+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBweDtoZWln
aHQ6NTBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChub25leGlzdGVu
dC5wbmcpOyI+PC9kaXY+CisKKzxocj4KKzxwPjxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVu
ZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAwMSI+QnVnIDYwMDE8L2E+OiBXZWJLaXQgZG9l
cyBub3QgaGFuZGxlIGZhbGxiYWNrIGN1c3RvbSBjdXJzb3JzPC9wPgorPHA+PGEgaHJlZj0iaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD05MDEzIj5CdWcgOTAx
MzwvYT46IExldCBjb3JyZWN0IENTUyBjdXN0b20gY3Vyc29yIGRlY2xhcmF0aW9ucyBwYXJzZTwv
cD4KKzxwPkluIGVhY2ggb2YgdGhlIGJsdWUgYm94ZXMgYmVsb3csIHRoZSBjdXJzb3Igc2hvdWxk
IGJlY29tZSBhIGhlbHAgY3Vyc29yIChxdWVzdGlvbiBtYXJrKS48L3A+Cis8dGFibGU+PHRyPgor
IDx0ZD48ZGl2IHN0eWxlPSJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xv
cjpsaWdodGJsdWU7IGN1cnNvcjp1cmwocmVzb3VyY2VzL2hlbHBDdXJzb3IudGlmZiksIHRleHQ7
Ij48L2Rpdj48L3RkPiA8IS0tIFZhbGlkLCBubyBmYWxsYmFjayBuZWVkZWQgLS0+CisgPHRkPjxk
aXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0
Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKTsnPjwvZGl2PjwvdGQ+
IDwhLS0gSW52YWxpZCwgYnV0IGFsbG93ZWQgYnkgV2luSUUgLS0+CisgPHRkPjxkaXYgc3R5bGU9
J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vy
c29yOnVybChub25leGlzdGVudC5wbmcpLCBoZWxwOyc+PC9kaXY+PC90ZD4KKyA8dGQ+PGRpdiBz
dHlsZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6bGlnaHRibHVl
OyBjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIHVybChjdXN0b20tY3Vyc29ycy5odG1sKSwg
dXJsKHVua25vd24tc2NoZW1lOmN1c3RvbS1jdXJzb3JzLmh0bWwpLCB1cmwocmVzb3VyY2VzL2hl
bHBDdXJzb3IudGlmZiksIHRleHQ7Jz48L2Rpdj48L3RkPgorIDx0ZD48ZGl2IHN0eWxlPSd3aWR0
aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1
cmwobm9uZXhpc3RlbnQucG5nKSwgdXJsKCJyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmIiksIHRl
eHQ7Jz48L2Rpdj48L3RkPgorIDx0ZD48ZGl2IHN0eWxlPSd3aWR0aDoxMDBweDtoZWlnaHQ6MTAw
cHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwocmVzb3VyY2VzL2hlbHBD
dXJzb3IudGlmZikgMSAxLCB0ZXh0Oyc+PC9kaXY+PC90ZD4gPCEtLSBDU1MzIGhvdCBzcG90IC0g
dmFsaWQsIG5vIGZhbGxiYWNrIG5lZWRlZCAtLT4KKzwvdHI+Cis8L3RhYmxlPgorCis8cD48L3A+
Cis8cD48c3BhbiBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjpncmF5OyBjdXJzb3I6dXJsKG5vbmV4
aXN0ZW50LnBuZyksIHVybCgicmVzb3VyY2VzL2hlbHBDdXJzb3IudGlmZiIpOyc+U2hvdWxkIHNo
b3cgYW4gSS1iZWFtIGN1cnNvci48L3NwYW4+PC9wPiA8IS0tIEFuIGludmFsaWQgZGVjbGFyYXRp
b24sIGV2ZW4gYnkgV2luSUUgc3RhbmRhcmRzIC0tPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAJKHJldmlzaW9uIDE2MzY5KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEwICs0OCwxOCBAQAogI2luY2x1ZGUgIlNlbGVjdGlv
bkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjc3NzdHlsZXNlbGVjdG9yLmgiCiAKKyNpZiBTVkdf
U1VQUE9SVAorI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgor
I2luY2x1ZGUgIlNWR0N1cnNvckVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdMZW5ndGguaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBFdmVudE5hbWVz
OwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKK3VzaW5nIG5hbWVzcGFjZSBTVkdOYW1lczsK
IAogc3RydWN0IFNjaGVkdWxlZEV2ZW50IHsKICAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7CkBA
IC02NDEsMTEgKzY0OSwzMCBAQCBzdGF0aWMgQ3Vyc29yIHNlbGVjdEN1cnNvcihjb25zdCBNb3Vz
ZUV2CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUgPyBub2RlLT5yZW5kZXJlcigp
IDogMDsKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlciA/IHJlbmRlcmVyLT5zdHls
ZSgpIDogMDsKIAotICAgIGlmIChzdHlsZSAmJiBzdHlsZS0+Y3Vyc29ySW1hZ2UoKSAmJiAhc3R5
bGUtPmN1cnNvckltYWdlKCktPmltYWdlKCktPmlzTnVsbCgpKQotICAgICAgICBpZiAoIXN0eWxl
LT5jdXJzb3JJbWFnZSgpLT5pc0Vycm9ySW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVybiBzdHls
ZS0+Y3Vyc29ySW1hZ2UoKS0+aW1hZ2UoKTsKLSAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0
eWxlID0gMDsgLy8gRmFsbGJhY2sgdG8gQ1VSU09SX0FVVE8KKyAgICBpZiAoc3R5bGUgJiYgc3R5
bGUtPmN1cnNvcnMoKSkgeworICAgICAgICBjb25zdCBDdXJzb3JMaXN0KiBjdXJzb3JzID0gc3R5
bGUtPmN1cnNvcnMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGN1cnNvcnMt
PnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBDYWNoZWRJbWFnZSogY2ltYWdlID0gKCpjdXJz
b3JzKVtpXS5jdXJzb3JJbWFnZTsKKyAgICAgICAgICAgIEludFBvaW50IGhvdFNwb3QgPSAoKmN1
cnNvcnMpW2ldLmhvdFNwb3Q7CisjaWYgU1ZHX1NVUFBPUlQKKyAgICAgICAgICAgIGlmICghY2lt
YWdlKSB7CisgICAgICAgICAgICAgICAgRWxlbWVudCogZSA9IG5vZGUtPmRvY3VtZW50KCktPmdl
dEVsZW1lbnRCeUlkKCgqY3Vyc29ycylbaV0uY3Vyc29yRnJhZ21lbnRJZCk7CisgICAgICAgICAg
ICAgICAgaWYgKGUgJiYgZS0+aGFzVGFnTmFtZShjdXJzb3JUYWcpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGhvdFNwb3Quc2V0WChpbnQoc3RhdGljX2Nhc3Q8U1ZHQ3Vyc29yRWxlbWVudCo+KGUp
LT54KCktPnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgaG90U3BvdC5zZXRZKGludChz
dGF0aWNfY2FzdDxTVkdDdXJzb3JFbGVtZW50Kj4oZSktPnkoKS0+dmFsdWUoKSkpOworICAgICAg
ICAgICAgICAgICAgICBjaW1hZ2UgPSBzdGF0aWNfY2FzdDxTVkdDdXJzb3JFbGVtZW50Kj4oZSkt
PmNhY2hlZEltYWdlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorI2VuZGlm
CisgICAgICAgICAgICBpZiAoIWNpbWFnZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIGlmIChjaW1hZ2UtPmltYWdlKCktPmlzTnVsbCgpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgaWYgKCFjaW1hZ2UtPmlzRXJyb3JJbWFnZSgpKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEN1cnNvcihjaW1hZ2UtPmltYWdlKCksIGhvdFNwb3QpOworfQor
ICAgICAgICB9CisgICAgfQogCiAgICAgc3dpdGNoIChzdHlsZSA/IHN0eWxlLT5jdXJzb3IoKSA6
IENVUlNPUl9BVVRPKSB7CiAgICAgICAgIGNhc2UgQ1VSU09SX0FVVE86IHsKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vQ3Vyc29yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9DdXJz
b3IuaAkocmV2aXNpb24gMTYzNjkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIE5TQ3Vyc29yOwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgY2xhc3MgSW1hZ2U7CisgICAgY2xhc3MgSW50UG9pbnQ7CiAKICNpZiBQ
TEFURk9STShXSU4pCiAgICAgdHlwZWRlZiBIQ1VSU09SIFBsYXRmb3JtQ3Vyc29yOwpAQCAtNjks
NyArNzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgeyB9CiAKLSAg
ICAgICAgQ3Vyc29yKEltYWdlKik7CisgICAgICAgIEN1cnNvcihJbWFnZSosIGNvbnN0IEludFBv
aW50JiBob3RzcG90KTsKICAgICAgICAgQ3Vyc29yKGNvbnN0IEN1cnNvciYpOwogICAgICAgICB+
Q3Vyc29yKCk7CiAgICAgICAgIEN1cnNvciYgb3BlcmF0b3I9KGNvbnN0IEN1cnNvciYpOwpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vbWFjL0N1cnNvck1hYy5tbQkocmV2aXNpb24gMTYzNjkpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiRm91bmRhdGlvbkV4dHJh
cy5oIgogI2ltcG9ydCAiSW1hZ2UuaCIKKyNpbXBvcnQgIkludFBvaW50LmgiCiAKIEBpbnRlcmZh
Y2UgV2ViQ29yZUN1cnNvckJ1bmRsZSA6IE5TT2JqZWN0IHsgfQogQGVuZApAQCAtNDEsMTQgKzQy
LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFNpbXBsZSBOU0N1cnNvciBjYWxscyBzaG91
bGRuJ3QgbmVlZCBwcm90ZWN0aW9uLAogLy8gYnV0IGNyZWF0aW5nIGEgY3Vyc29yIHdpdGggYSBi
YWQgaW1hZ2UgbWlnaHQgdGhyb3cuCiAKLXN0YXRpYyBOU0N1cnNvciogY3JlYXRlQ3VzdG9tQ3Vy
c29yKEltYWdlKiBpbWFnZSkKK3N0YXRpYyBOU0N1cnNvciogY3JlYXRlQ3VzdG9tQ3Vyc29yKElt
YWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGhvdHNwb3QpCiB7CiAgICAgLy8gRklYTUU6IFRo
ZSBjdXJzb3Igd29uJ3QgYW5pbWF0ZS4gIE5vdCBzdXJlIGlmIHRoYXQncyBhIGJpZyBkZWFsLgog
ICAgIE5TSW1hZ2UqIGltZyA9IGltYWdlLT5nZXROU0ltYWdlKCk7CiAgICAgaWYgKCFpbWcpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBy
ZXR1cm4gW1tOU0N1cnNvciBhbGxvY10gaW5pdFdpdGhJbWFnZTppbWcgaG90U3BvdDpOU1plcm9Q
b2ludF07CisgICAgcmV0dXJuIFtbTlNDdXJzb3IgYWxsb2NdIGluaXRXaXRoSW1hZ2U6aW1nIGhv
dFNwb3Q6aG90c3BvdF07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICByZXR1
cm4gMDsKIH0KQEAgLTc0LDggKzc1LDggQEAgc3RhdGljIE5TQ3Vyc29yKiBsZWFrTmFtZWRDdXJz
b3IoY29uc3QgYwogICAgIHJldHVybiAwOwogfQogCi1DdXJzb3I6OkN1cnNvcihJbWFnZSogaW1h
Z2UpCi0gICAgOiBtX2ltcGwoSGFyZFJldGFpbldpdGhOU1JlbGVhc2UoY3JlYXRlQ3VzdG9tQ3Vy
c29yKGltYWdlKSkpCitDdXJzb3I6OkN1cnNvcihJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50
JiBob3RzcG90KQorICAgIDogbV9pbXBsKEhhcmRSZXRhaW5XaXRoTlNSZWxlYXNlKGNyZWF0ZUN1
c3RvbUN1cnNvcihpbWFnZSwgaG90c3BvdCkpKQogewogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL3F0L0N1cnNvclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3F0L0N1
cnNvclF0LmNwcAkocmV2aXNpb24gMTYzNjkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNv
clF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBDdXJzb3I6On5DdXJzb3Io
KQogewogfQogCi1DdXJzb3I6OkN1cnNvcihJbWFnZSopCitDdXJzb3I6OkN1cnNvcihJbWFnZSos
IGNvbnN0IEludFBvaW50JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gMTYzNjkpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw3ICs1MTAsNyBAQCBi
b29sIFN0eWxlQ1NTM0luaGVyaXRlZERhdGE6OnNoYWRvd0RhdGFFCiBTdHlsZUluaGVyaXRlZERh
dGE6OlN0eWxlSW5oZXJpdGVkRGF0YSgpCiAgICAgOiBpbmRlbnQoUmVuZGVyU3R5bGU6OmluaXRp
YWxUZXh0SW5kZW50KCkpLCBsaW5lX2hlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWln
aHQoKSksIAogICAgICAgc3R5bGVfaW1hZ2UoUmVuZGVyU3R5bGU6OmluaXRpYWxMaXN0U3R5bGVJ
bWFnZSgpKSwKLSAgICAgIGN1cnNvcl9pbWFnZSgwKSwgY29sb3IoUmVuZGVyU3R5bGU6OmluaXRp
YWxDb2xvcigpKSwgCisgICAgICBjb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbENvbG9yKCkpLCAK
ICAgICAgIGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxIb3Jp
em9udGFsQm9yZGVyU3BhY2luZygpKSwgCiAgICAgICB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyhS
ZW5kZXJTdHlsZTo6aW5pdGlhbFZlcnRpY2FsQm9yZGVyU3BhY2luZygpKSwKICAgICAgIHdpZG93
cyhSZW5kZXJTdHlsZTo6aW5pdGlhbFdpZG93cygpKSwgb3JwaGFucyhSZW5kZXJTdHlsZTo6aW5p
dGlhbE9ycGhhbnMoKSksCkBAIC01MjUsOCArNTI1LDggQEAgU3R5bGVJbmhlcml0ZWREYXRhOjp+
U3R5bGVJbmhlcml0ZWREYXRhKAogU3R5bGVJbmhlcml0ZWREYXRhOjpTdHlsZUluaGVyaXRlZERh
dGEoY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvICkKICAgICA6IFNoYXJlZDxTdHlsZUluaGVy
aXRlZERhdGE+KCksCiAgICAgICBpbmRlbnQoIG8uaW5kZW50ICksIGxpbmVfaGVpZ2h0KCBvLmxp
bmVfaGVpZ2h0ICksIHN0eWxlX2ltYWdlKCBvLnN0eWxlX2ltYWdlICksCi0gICAgICBjdXJzb3Jf
aW1hZ2UoIG8uY3Vyc29yX2ltYWdlICksIGZvbnQoIG8uZm9udCApLAotICAgICAgY29sb3IoIG8u
Y29sb3IgKSwKKyAgICAgIGN1cnNvckRhdGEoby5jdXJzb3JEYXRhKSwKKyAgICAgIGZvbnQoIG8u
Zm9udCApLCBjb2xvciggby5jb2xvciApLAogICAgICAgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2lu
Zyggby5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nICksCiAgICAgICB2ZXJ0aWNhbF9ib3JkZXJf
c3BhY2luZyggby52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyApLAogICAgICAgd2lkb3dzKG8ud2lk
b3dzKSwgb3JwaGFucyhvLm9ycGhhbnMpLCBwYWdlX2JyZWFrX2luc2lkZShvLnBhZ2VfYnJlYWtf
aW5zaWRlKQpAQCAtNTM5LDcgKzUzOSw3IEBAIGJvb2wgU3R5bGVJbmhlcml0ZWREYXRhOjpvcGVy
YXRvcj09KGNvbnMKICAgICAgICAgaW5kZW50ID09IG8uaW5kZW50ICYmCiAgICAgICAgIGxpbmVf
aGVpZ2h0ID09IG8ubGluZV9oZWlnaHQgJiYKICAgICAgICAgc3R5bGVfaW1hZ2UgPT0gby5zdHls
ZV9pbWFnZSAmJgotICAgICAgICBjdXJzb3JfaW1hZ2UgPT0gby5jdXJzb3JfaW1hZ2UgJiYKKyAg
ICAgICAgY3Vyc29yRGF0YSAgPT0gby5jdXJzb3JEYXRhICYmCiAgICAgICAgIGZvbnQgPT0gby5m
b250ICYmCiAgICAgICAgIGNvbG9yID09IG8uY29sb3IgJiYKICAgICAgICAgaG9yaXpvbnRhbF9i
b3JkZXJfc3BhY2luZyA9PSBvLmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcgJiYKQEAgLTgyNyw3
ICs4MjcsNyBAQCBSZW5kZXJTdHlsZTo6RGlmZiBSZW5kZXJTdHlsZTo6ZGlmZiggY29uCiAgICAg
ICAgICEoaW5oZXJpdGVkLT5pbmRlbnQgPT0gb3RoZXItPmluaGVyaXRlZC0+aW5kZW50KSB8fAog
ICAgICAgICAhKGluaGVyaXRlZC0+bGluZV9oZWlnaHQgPT0gb3RoZXItPmluaGVyaXRlZC0+bGlu
ZV9oZWlnaHQpIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT5zdHlsZV9pbWFnZSA9PSBvdGhlci0+
aW5oZXJpdGVkLT5zdHlsZV9pbWFnZSkgfHwKLSAgICAgICAgIShpbmhlcml0ZWQtPmN1cnNvcl9p
bWFnZSA9PSBvdGhlci0+aW5oZXJpdGVkLT5jdXJzb3JfaW1hZ2UpIHx8CisgICAgICAgICEoaW5o
ZXJpdGVkLT5jdXJzb3JEYXRhICA9PSBvdGhlci0+aW5oZXJpdGVkLT5jdXJzb3JEYXRhKSB8fAog
ICAgICAgICAhKGluaGVyaXRlZC0+Zm9udCA9PSBvdGhlci0+aW5oZXJpdGVkLT5mb250KSB8fAog
ICAgICAgICAhKGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyA9PSBvdGhlci0+
aW5oZXJpdGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKSB8fAogICAgICAgICAhKGluaGVy
aXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcgPT0gb3RoZXItPmluaGVyaXRlZC0+dmVydGlj
YWxfYm9yZGVyX3NwYWNpbmcpIHx8CkBAIC05ODYsNiArOTg2LDMwIEBAIHZvaWQgUmVuZGVyU3R5
bGU6OnNldENsaXAoIExlbmd0aCB0b3AsIEwKICAgICBkYXRhLT5jbGlwLmxlZnQgPSBsZWZ0Owog
fQogCit2b2lkIFJlbmRlclN0eWxlOjphZGRDdXJzb3IoQ2FjaGVkSW1hZ2UqIGltYWdlLCBjb25z
dCBJbnRQb2ludCYgaG90U3BvdCkKK3sKKyAgICBDdXJzb3JEYXRhIGRhdGE7CisgICAgZGF0YS5j
dXJzb3JJbWFnZSA9IGltYWdlOworICAgIGRhdGEuaG90U3BvdCA9IGhvdFNwb3Q7CisgICAgaWYg
KCFpbmhlcml0ZWQuYWNjZXNzKCktPmN1cnNvckRhdGEpCisgICAgICAgIGluaGVyaXRlZC5hY2Nl
c3MoKS0+Y3Vyc29yRGF0YSA9IG5ldyBDdXJzb3JMaXN0OworICAgIGluaGVyaXRlZC5hY2Nlc3Mo
KS0+Y3Vyc29yRGF0YS0+YXBwZW5kKGRhdGEpOworfQorCit2b2lkIFJlbmRlclN0eWxlOjphZGRD
dXJzb3IoY29uc3QgU3RyaW5nJiBpZCkKK3sKKyAgICBDdXJzb3JEYXRhIGRhdGE7CisgICAgZGF0
YS5jdXJzb3JGcmFnbWVudElkID0gaWQ7CisgICAgaWYgKCFpbmhlcml0ZWQuYWNjZXNzKCktPmN1
cnNvckRhdGEpCisgICAgICAgIGluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSA9IG5ldyBD
dXJzb3JMaXN0OworICAgIGluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vyc29yRGF0YS0+YXBwZW5kKGRh
dGEpOworfQorCit2b2lkIFJlbmRlclN0eWxlOjpzZXRDdXJzb3JzKFBhc3NSZWZQdHI8Q3Vyc29y
TGlzdD4gb3RoZXIpCit7CisgICAgaW5oZXJpdGVkLmFjY2VzcygpLT5jdXJzb3JEYXRhID0gb3Ro
ZXI7Cit9CisKIGJvb2wgUmVuZGVyU3R5bGU6OmNvbnRlbnREYXRhRXF1aXZhbGVudChjb25zdCBS
ZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QKIHsKICAgICBDb250ZW50RGF0YSogYzEgPSBj
b250ZW50OwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAxNjM2OSkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYg
KzM2LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJDU1NDdXJzb3JJ
bWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiRGF0YVJlZi5oIgogI2luY2x1ZGUgIkZvbnQuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCkBAIC02Miw2ICs2Myw4IEBAIHVzaW5nIHN0ZDo6bWF4
OwogY2xhc3MgQ1NTU3R5bGVTZWxlY3RvcjsKIGNsYXNzIENhY2hlZEltYWdlOwogY2xhc3MgQ2Fj
aGVkUmVzb3VyY2U7CitzdHJ1Y3QgQ3Vyc29yRGF0YTsKK2NsYXNzIEN1cnNvckxpc3Q7CiBjbGFz
cyBSZW5kZXJBcmVuYTsKIGNsYXNzIFNoYWRvd1ZhbHVlOwogY2xhc3MgU3RyaW5nSW1wbDsKQEAg
LTgyNCw3ICs4MjcsNyBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoIGxpbmVfaGVpZ2h0OwogCiAgICAg
Q2FjaGVkSW1hZ2UgKnN0eWxlX2ltYWdlOwotICAgIENhY2hlZEltYWdlICpjdXJzb3JfaW1hZ2U7
CisgICAgUmVmUHRyPEN1cnNvckxpc3Q+IGN1cnNvckRhdGE7CiAKICAgICBGb250IGZvbnQ7CiAg
ICAgQ29sb3IgY29sb3I7CkBAIC04NjgsNiArODcxLDI5IEBAIGVudW0gRUN1cnNvciB7CiAgICAg
Q1VSU09SX0NPTF9SRVNJWkUsIENVUlNPUl9ST1dfUkVTSVpFLCBDVVJTT1JfVEVYVCwgQ1VSU09S
X1dBSVQsIENVUlNPUl9IRUxQCiB9OwogCitzdHJ1Y3QgQ3Vyc29yRGF0YSB7CisgICAgQ3Vyc29y
RGF0YSgpCisgICAgICAgIDogY3Vyc29ySW1hZ2UoMCkKKyAgICB7fQorICAgIAorICAgIEludFBv
aW50IGhvdFNwb3Q7IC8vIGZvciBDU1MzIHN1cHBvcnQKKyAgICBDYWNoZWRJbWFnZSogY3Vyc29y
SW1hZ2U7IC8vIHdlYWsgcG9pbnRlciwgdGhlIENTU1ZhbHVlSW1hZ2UgdGFrZXMgY2FyZSBvZiBk
ZWxldGluZyBjdXJzb3JJbWFnZQorICAgIFN0cmluZyBjdXJzb3JGcmFnbWVudElkOyAvLyBvbmx5
IHVzZWQgZm9yIFNWR0N1cnNvckVsZW1lbnQsIGEgZGlyZWN0IHBvaW50ZXIgd291bGQgZ2V0IHN0
YWxlCit9OworCitjbGFzcyBDdXJzb3JMaXN0IDogcHVibGljIFNoYXJlZDxDdXJzb3JMaXN0PiB7
CitwdWJsaWM6CisgICAgY29uc3QgQ3Vyc29yRGF0YSYgb3BlcmF0b3JbXShpbnQgaSkgY29uc3Qg
eworICAgICAgICByZXR1cm4gbV92ZWN0b3JbaV07CisgICAgfQorCisgICAgc2l6ZV90IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5zaXplKCk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25z
dCBDdXJzb3JEYXRhJiBjdXJzb3JEYXRhKSB7IG1fdmVjdG9yLmFwcGVuZChjdXJzb3JEYXRhKTsg
fQorCitwcml2YXRlOgorICAgIFZlY3RvcjxDdXJzb3JEYXRhPiBtX3ZlY3RvcjsKK307CisKIGVu
dW0gQ29udGVudFR5cGUgewogICAgIENPTlRFTlRfTk9ORSwgQ09OVEVOVF9PQkpFQ1QsIENPTlRF
TlRfVEVYVCwgQ09OVEVOVF9DT1VOVEVSCiB9OwpAQCAtMTMxNCw3ICsxMzQwLDcgQEAgcHVibGlj
OgogCiAgICAgRUN1cnNvciBjdXJzb3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQ3Vy
c29yPihpbmhlcml0ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSk7IH0KICAgICAKLSAgICBDYWNoZWRJ
bWFnZSAqY3Vyc29ySW1hZ2UoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmN1cnNvcl9pbWFn
ZTsgfQorICAgIEN1cnNvckxpc3QqIGN1cnNvcnMoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQt
PmN1cnNvckRhdGEuZ2V0KCk7IH0KIAogICAgIHNob3J0IHdpZG93cygpIGNvbnN0IHsgcmV0dXJu
IGluaGVyaXRlZC0+d2lkb3dzOyB9CiAgICAgc2hvcnQgb3JwaGFucygpIGNvbnN0IHsgcmV0dXJu
IGluaGVyaXRlZC0+b3JwaGFuczsgfQpAQCAtMTUyMSw3ICsxNTQ3LDkgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UGFkZGluZ1JpZ2h0KExlbmd0aCB2KSAgeyAgU0VUX1ZBUihzdXJyb3VuZCxwYWRk
aW5nLnJpZ2h0LHYpIH0KIAogICAgIHZvaWQgc2V0Q3Vyc29yKCBFQ3Vyc29yIGMgKSB7IGluaGVy
aXRlZF9mbGFncy5fY3Vyc29yX3N0eWxlID0gYzsgfQotICAgIHZvaWQgc2V0Q3Vyc29ySW1hZ2Uo
IENhY2hlZEltYWdlICp2ICkgeyBTRVRfVkFSKGluaGVyaXRlZCxjdXJzb3JfaW1hZ2UsdikgfQor
ICAgIHZvaWQgYWRkQ3Vyc29yKENhY2hlZEltYWdlKiwgY29uc3QgSW50UG9pbnQmID0gSW50UG9p
bnQoKSk7CisgICAgdm9pZCBhZGRDdXJzb3IoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRD
dXJzb3JzKFBhc3NSZWZQdHI8Q3Vyc29yTGlzdD4pOwogCiAgICAgYm9vbCBmb3JjZUJhY2tncm91
bmRzVG9XaGl0ZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZF9mbGFncy5fZm9yY2VfYmFja2dy
b3VuZHNfdG9fd2hpdGU7IH0KICAgICB2b2lkIHNldEZvcmNlQmFja2dyb3VuZHNUb1doaXRlKGJv
b2wgYj10cnVlKSB7IGluaGVyaXRlZF9mbGFncy5fZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUg
PSBiOyB9Cg==
</data>
<flag name="review"
          id="3429"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10701</attachid>
            <date>2006-09-22 02:48:06 -0700</date>
            <delta_ts>2006-09-22 03:18:28 -0700</delta_ts>
            <desc>css parser fixes</desc>
            <filename>6002-11.diff</filename>
            <type>text/plain</type>
            <size>29638</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjUyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMDYtMDktMjIgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAxCisgICAgICAg
IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9tIGN1cnNvcnMKKyAgICAgICAg
Rml4IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTYw
MDIKKyAgICAgICAgV2ViS2l0IGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSBTVkcgPGN1cnNvcj4g
ZWxlbWVudAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzdmcgY3Vyc29yIGltYWdlcy4gQWxz
byBtYWtlIHN1cmUgaG90c3BvdAorICAgICAgICBzZXR0aW5ncyBhcmUgaGFuZGxlZCBjb3JyZWN0
bHkuIEZpbmFsbHkgaW1wbGVtZW50IGZhbGxiYWNrLgorCisgICAgICAgIFdBUk5JTkc6IE5PIFRF
U1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvY3NzcGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL2Nzc3N0
eWxlc2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBw
bHlQcm9wZXJ0eSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdEN1
cnNvcik6CisgICAgICAgICogcGxhdGZvcm0vQ3Vyc29yLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL0N1cnNvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUN1c3RvbUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3I6OkN1cnNvcik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlSW5oZXJpdGVkRGF0YTo6
U3R5bGVJbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlSW5oZXJpdGVkRGF0
YTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZGlmZik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ3Vyc29yKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpzZXRDdXJzb3JzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvckRhdGE6OkN1cnNvckRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3Vyc29yTGlzdDo6b3BlcmF0b3JbXSk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJzb3JMaXN0OjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvckxpc3Q6OmFwcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y3Vyc29ycyk6CisKIDIwMDYtMDkt
MjIgIERhdmUgSHlhdHQgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIFBsYXRmb3Jt
U2Nyb2xsQmFyLmggZG93biBpbnRvIHRoZSBwbGF0Zm9ybXMuCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY1MjIpCisrKyBXZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTcx
MCw2ICsxNzEwLDggQEAKIAkJQThGRUZCMEIwOTc5RjQ3MjAwNTgzOUZEIC8qIFJlbmRlckZvcmVp
Z25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThGRUZCMDkwOTc5RjQ3MjAwNTgzOUZEIC8qIFJlbmRlckZvcmVpZ25PYmplY3QuY3BwICov
OyB9OwogCQlBOEZFRkIzMTA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThG
RUZCMkYwOTc5RjRGNjAwNTgzOUZEIC8qIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcCAqLzsg
fTsKIAkJQThGRUZCMzIwOTc5RjRGNjAwNTgzOUZEIC8qIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEZFRkIz
MDA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCAqLzsgfTsKKwkJ
QUEyMUVDQ0EwQUJGMEZCQTAwMkI4MzRDIC8qIENTU0N1cnNvckltYWdlVmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEwOTc4RUQwQUJBQTZF
MTAwODc0NDgwIC8qIENTU0N1cnNvckltYWdlVmFsdWUuY3BwICovOyB9OworCQlBQTIxRUNDRDBB
QkYwRkM2MDAyQjgzNEMgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEwOTc4RUUwQUJBQTZFMTAwODc0NDgwIC8q
IENTU0N1cnNvckltYWdlVmFsdWUuaCAqLzsgfTsKIAkJQUE5OEI4N0QwQUFBMDJGODAwMUE0NEMy
IC8qIFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUE5OEI4N0MwQUFBMDJGODAwMUE0NEMyIC8qIFBhdGguY3BwICovOyB9OwogCQlBQUM4REFC
MTBBQTEwMDIwMDBEQzA5MDcgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQzhEQUFGMEFBMTAwMjAwMERDMDkw
NyAvKiBTVkdNZXRhZGF0YUVsZW1lbnQuY3BwICovOyB9OwogCQlBQUM4REFCMjBBQTEwMDIwMDBE
QzA5MDcgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBQUM4REFCMDBBQTEwMDIwMDBEQzA5MDcgLyogU1ZHTWV0YWRh
dGFFbGVtZW50LmggKi87IH07CkBAIC00MDA2LDYgKzQwMDgsOCBAQAogCQlBOEZFRkIwOTA5NzlG
NDcyMDA1ODM5RkQgLyogUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRm9yZWlnbk9iamVjdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE4RkVGQjJGMDk3OUY0RjYwMDU4MzlGRCAvKiBTVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBOEZFRkIzMDA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBMDk3OEVEMEFCQUE2RTEwMDg3NDQ4
MCAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDU1NDdXJzb3JJbWFnZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQUEwOTc4RUUwQUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvckltYWdlVmFsdWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0N1cnNvckltYWdlVmFsdWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUE5OEI4N0MwQUFBMDJGODAwMUE0NEMy
IC8qIFBhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhdGgu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQUM4REFBRjBBQTEwMDIwMDBEQzA5
MDcgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTVkdNZXRhZGF0YUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBQUM4REFCMDBBQTEwMDIwMDBEQzA5MDcgLyogU1ZHTWV0YWRhdGFFbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdNZXRhZGF0YUVsZW1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwNjAsNiArNzA2NCw4IEBACiAJCUY1MjNE
MTg0MDJERTQyRTgwMTg2MzVDQSAvKiBjc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCUFBMDk3OEVEMEFCQUE2RTEwMDg3NDQ4MCAvKiBDU1NDdXJzb3JJ
bWFnZVZhbHVlLmNwcCAqLywKKwkJCQlBQTA5NzhFRTBBQkFBNkUxMDA4NzQ0ODAgLyogQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZS5oICovLAogCQkJCUE4MEU2Q0RBMEExOTg5Q0EwMDdGQjhDNSAvKiBDb3Vu
dGVyLmggKi8sCiAJCQkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3RkU0IC8qIENvdW50ZXIuaWRsICov
LAogCQkJCUE4MEU2Q0JCMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NCb3JkZXJJbWFnZVZhbHVlLmNw
cCAqLywKQEAgLTg0NTcsNiArODQ2Myw3IEBACiAJCQkJODUzQkY0REIwQUJCNkI1NTAwODY0N0JC
IC8qIERPTU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1M0JGNEVCMEFCQjZFOTcwMDg2NDdC
QiAvKiBET01Ob2RlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVCQ0JDMTMwQUJCQTg3
RDAwMzgxMTYwIC8qIERPTUhUTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUEyMUVD
Q0QwQUJGMEZDNjAwMkI4MzRDIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1MUVFODBDMEFCQ0EyOEYwMEE2QUEzMyAvKiBET01BYnN0cmFjdFZpZXcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg1MUVFODExMEFCQ0EzOTYwMEE2QUEzMyAvKiBET01FdmVudEV4Y2Vw
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUxRUU4MjEwQUJDQTU4MTAwQTZBQTMzIC8qIERP
TVJhbmdlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTk1NTUsNiArOTU2Miw3IEBACiAJ
CQkJQjIwMTExMDcwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODUzQkY0REMwQUJCNkI1NTAwODY0N0JCIC8qIERPTU5vZGUubW0gaW4gU291
cmNlcyAqLywKIAkJCQk4NUJDQkMxNDBBQkJBODdEMDAzODExNjAgLyogRE9NSFRNTERvY3VtZW50
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQUEyMUVDQ0EwQUJGMEZCQTAwMkI4MzRDIC8qIENTU0N1
cnNvckltYWdlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUxRUU4MEQwQUJDQTI4RjAw
QTZBQTMzIC8qIERPTUFic3RyYWN0Vmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4NDE1RjlC
MEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzQ2xpcHBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBODQxNUY5RDBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc1Jlc291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCShyZXZpc2lvbiAxNjUyMikKKysrIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNyw1NyArNjA3LDg5IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICBjYXNlIENTU19QUk9QX0NPVU5U
RVJfUkVTRVQ6CiAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOgotICAgICAgICBpZiAoc3R5bGUtPmN1cnNvcklt
YWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5j
dXJzb3JJbWFnZSgpLT51cmwoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpOworICAgIGNh
c2UgQ1NTX1BST1BfQ1VSU09SOiB7CisgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IDA7Cisg
ICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IDA7CisgICAgICAgIEN1cnNvckxpc3QqIGN1cnNvcnMg
PSBzdHlsZS0+Y3Vyc29ycygpOworICAgICAgICBpZiAoY3Vyc29ycyAmJiBjdXJzb3JzLT5zaXpl
KCkgPiAwKSB7CisgICAgICAgICAgICBsaXN0ID0gbmV3IENTU1ZhbHVlTGlzdDsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjdXJzb3JzLT5zaXplKCk7ICsraSkKKyAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKCgqY3Vyc29ycylb
aV0uY3Vyc29ySW1hZ2UtPnVybCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkpOworICAg
ICAgICB9CiAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmN1cnNvcigpKSB7CiAgICAgICAgICAgICBj
YXNlIENVUlNPUl9BVVRPOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9BVVRPKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBDVVJTT1JfQ1JPU1M6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0NST1NTSEFJUik7CisgICAgICAgICAgICAgICAgdmFsdWUg
PSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DUk9TU0hBSVIpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfREVGQVVMVDoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfREVGQVVMVCk7CisgICAg
ICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ERUZBVUxU
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1BPSU5U
RVI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1BPSU5URVIpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfUE9JTlRFUik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIENVUlNPUl9NT1ZFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9NT1ZFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX01PVkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBDVVJTT1JfRV9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0VfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1
ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0VfUkVTSVpFKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX05FX1JFU0laRToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTkVfUkVTSVpFKTsK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05F
X1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNP
Ul9OV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX05XX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9OV19SRVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBDVVJTT1JfTl9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05fUkVTSVpFKTsKKyAgICAgICAgICAgICAg
ICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05fUkVTSVpFKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1NFX1JFU0laRToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0VfUkVT
SVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX1NFX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IENVUlNPUl9TV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1NXX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TV19SRVNJWkUpOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfU19SRVNJWkU6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NfUkVTSVpFKTsKKyAgICAgICAg
ICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NfUkVTSVpFKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1dfUkVTSVpF
OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9X
X1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9XX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIENVUlNPUl9FV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX0VXX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FV19SRVNJWkUpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfTlNfUkVTSVpFOgotICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OU19SRVNJWkUpOworICAg
ICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTlNfUkVT
SVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX05F
U1dfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9ORVNXX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9ORVNXX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9OV1NFX1JFU0laRToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTldTRV9SRVNJWkUpOworICAgICAg
ICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTldTRV9SRVNJ
WkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfQ09M
X1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfQ09MX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9DT0xfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX1JPV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JPV19SRVNJWkUpOworICAgICAgICAgICAg
ICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUk9XX1JFU0laRSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9URVhUOgotICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9URVhUKTsK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RF
WFQpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfV0FJ
VDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
V0FJVCk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9XQUlUKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VS
U09SX0hFTFA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0hFTFApOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfSEVMUCk7CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBBU1NFUlQodmFsdWUpOworICAgICAgICBp
ZiAobGlzdCkgeworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlKTsKKyAgICAgICAgICAg
IHJldHVybiBsaXN0OworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CiAg
ICAgY2FzZSBDU1NfUFJPUF9ESVJFQ1RJT046CiAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmRpcmVj
dGlvbigpKSB7CiAgICAgICAgICAgICBjYXNlIExUUjoKSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc3Bh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcAkocmV2aXNp
b24gMTY1MjIpCisrKyBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiY3NzcGFyc2VyLmgiCiAKICNpbmNsdWRlICJDU1NC
b3JkZXJJbWFnZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDaGFyc2V0UnVsZS5oIgogI2lu
Y2x1ZGUgIkNTU0ltcG9ydFJ1bGUuaCIKQEAgLTY5NCwyNiArNjk1LDYyIEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGIKICAgICAgICAgfQogICAgICAgICBicmVhazsK
IAotICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOgorICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOiB7
CiAgICAgICAgIC8vIFs8dXJpPixdKiAgWyBhdXRvIHwgY3Jvc3NoYWlyIHwgZGVmYXVsdCB8IHBv
aW50ZXIgfCBwcm9ncmVzcyB8IG1vdmUgfCBlLXJlc2l6ZSB8IG5lLXJlc2l6ZSB8CiAgICAgICAg
IC8vIG53LXJlc2l6ZSB8IG4tcmVzaXplIHwgc2UtcmVzaXplIHwgc3ctcmVzaXplIHwgcy1yZXNp
emUgfCB3LXJlc2l6ZSB8IGV3LXJlc2l6ZSB8IAogICAgICAgICAvLyBucy1yZXNpemUgfCBuZXN3
LXJlc2l6ZSB8IG53c2UtcmVzaXplIHwgY29sLXJlc2l6ZSB8IHJvdy1yZXNpemUgfCB0ZXh0IHwg
d2FpdCB8IGhlbHAgXSBdIHwgaW5oZXJpdAotICAgICAgICBpZiAoIXN0cmljdCAmJiBpZCA9PSBD
U1NfVkFMX0hBTkQpIHsgLy8gTVNJRSA1IGNvbXBhdGliaWxpdHkgOi8KLSAgICAgICAgICAgIGlk
ID0gQ1NTX1ZBTF9QT0lOVEVSOwotICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgfSBlbHNlIGlmIChpZCA+PSBDU1NfVkFMX0FVVE8gJiYgaWQgPD0gQ1NTX1ZBTF9I
RUxQKQotICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBp
ZiAodmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKKyAgICAgICAg
Q1NTVmFsdWVMaXN0KiBsaXN0ID0gMDsKKyAgICAgICAgd2hpbGUgKHZhbHVlICYmIHZhbHVlLT51
bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7CiAgICAgICAgICAgICBTdHJpbmcg
dXJpID0gcGFyc2VVUkwoZG9tU3RyaW5nKHZhbHVlLT5zdHJpbmcpKTsKKyNpZiBTVkdfU1VQUE9S
VAorICAgICAgICAgICAgaWYgKHVyaS5zdGFydHNXaXRoKCIjIikpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIWxpc3QpCisgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBuZXcgQ1NTVmFsdWVMaXN0
OyAKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKHVy
aSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9
IHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgfSBlbHNlCisjZW5kaWYKICAgICAgICAg
ICAgIGlmICghdXJpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0g
bmV3IENTU0ltYWdlVmFsdWUoU3RyaW5nKEtVUkwoc3R5bGVFbGVtZW50LT5iYXNlVVJMKCkuZGVw
cmVjYXRlZFN0cmluZygpLCB1cmkuZGVwcmVjYXRlZFN0cmluZygpKS51cmwoKSksIHN0eWxlRWxl
bWVudCk7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IHdlIGRvbid0IHN1cHBvcnQgZmFsbGJh
Y2sgY3Vyc29ycyB5ZXQsIGJ1dCBpZ25vcmluZyB0aGUgcmVtYWluaW5nIHZhbHVlcwotICAgICAg
ICAgICAgICAgIC8vIHdpbGwgYXQgbGVhc3QgbGV0IGNvbXBsaWFudCBkZWNsYXJhdGlvbnMgcGFy
c2UuCi0gICAgICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcElkLCBwYXJzZWRWYWx1ZSwgaW1w
b3J0YW50KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBpZiAoIWxpc3QpCisgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBuZXcg
Q1NTVmFsdWVMaXN0OyAKKyAgICAgICAgICAgICAgICBJbnRQb2ludCBob3RzcG90OworICAgICAg
ICAgICAgICAgIHZhbHVlID0gdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgICAgICAgICAgaWYg
KHZhbHVlICYmIHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7
CisgICAgICAgICAgICAgICAgICAgIGhvdHNwb3Quc2V0WCh2YWx1ZS0+ZlZhbHVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBob3RzcG90LnNldFkodmFsdWUtPmZW
YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlTGlzdC0+bmV4dCgp
OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlIGxpc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKG5ldyBDU1NDdXJzb3JJbWFnZVZhbHVlKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTdHJpbmcoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXByZWNhdGVkU3Ry
aW5nKCksIHVyaS5kZXByZWNhdGVkU3RyaW5nKCkpLnVybCgpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaG90c3BvdCwgc3R5bGVFbGVtZW50KSk7CisgICAgICAgICAgICAgICAgaWYg
KHN0cmljdCAmJiB2YWx1ZSAmJiAhKHZhbHVlLT51bml0ID09IFZhbHVlOjpPcGVyYXRvciAmJiB2
YWx1ZS0+aVZhbHVlID09ICcsJykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVMaXN0LT5uZXh0KCk7IC8v
IGNvbW1hCisgICAgICAgIH0KKyAgICAgICAgaWYgKGxpc3QpIHsKKyAgICAgICAgICAgIGlmICgh
c3RyaWN0ICYmICF2YWx1ZSkgeyAvLyBubyB2YWx1ZSBhZnRlciB1cmwgbGlzdCAoTVNJRSA1IGNv
bXBhdGliaWxpdHkpCisgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgdmFsdWUtPmlk
ID09IENTU19WQUxfSEFORCkgLy8gTVNJRSA1IGNvbXBhdGliaWxpdHkgOi8KKyAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUE9JTlRFUikp
OworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgJiYgdmFsdWUtPmlkID49IENTU19WQUxfQVVU
TyAmJiB2YWx1ZS0+aWQgPD0gQ1NTX1ZBTF9IRUxQKQorICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUtPmlkKSk7CisgICAgICAgICAgICB2YWx1
ZUxpc3QtPm5leHQoKTsKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gbGlzdDsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGlmICghc3RyaWN0ICYmIHZhbHVlLT5pZCA9
PSBDU1NfVkFMX0hBTkQpIHsgLy8gTVNJRSA1IGNvbXBhdGliaWxpdHkgOi8KKyAgICAgICAgICAg
IGlkID0gQ1NTX1ZBTF9QT0lOVEVSOworICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1
ZTsKKyAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS0+aWQgPj0gQ1NTX1ZBTF9BVVRPICYmIHZhbHVl
LT5pZCA8PSBDU1NfVkFMX0hFTFApCisgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVl
OwogICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBjYXNlIENTU19QUk9QX0JBQ0tHUk9VTkRf
QVRUQUNITUVOVDoKICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQkFDS0dST1VORF9DTElQOgpJ
bmRleDogV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJKHJldmlzaW9uIDE2NTIyKQorKysgV2ViQ29y
ZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJjc3NzdHlsZXNlbGVjdG9yLmgiCiAKICNpbmNsdWRlICJDU1NCb3JkZXJJ
bWFnZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU0ltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbXBvcnRSdWxlLmgiCiAjaW5jbHVkZSAi
Q1NTTWVkaWFSdWxlLmgiCkBAIC0yNDEwLDIzICsyNDExLDQwIEBAIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICBjYXNlIENTU19QUk9QX0NVUlNPUjoKICAgICAg
ICAgaWYgKGlzSW5oZXJpdCkgewogICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcihwYXJlbnRT
dHlsZS0+Y3Vyc29yKCkpOwotICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvckltYWdlKHBhcmVu
dFN0eWxlLT5jdXJzb3JJbWFnZSgpKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3JzKHBh
cmVudFN0eWxlLT5jdXJzb3JzKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChpc0luaXRpYWwpIHsKICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IoUmVu
ZGVyU3R5bGU6OmluaXRpYWxDdXJzb3IoKSk7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29y
SW1hZ2UoMCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlKSB7CisgICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeworICAg
ICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4o
dmFsdWUpOworICAgICAgICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOworICAgICAgICAg
ICAgc3R5bGUtPnNldEN1cnNvcihDVVJTT1JfQVVUTyk7CisgICAgICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBs
aXN0LT5pdGVtKGkpOworICAgICAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAg
ICAgICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwor
ICAgICAgICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7
CisjaWYgU1ZHX1NVUFBPUlQKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5nZXRTdHJpbmdWYWx1ZSgpLmZpbmQoIiMiKSA9PSAwKQorICAgICAgICAgICAgICAgICAgICAg
ICAgc3R5bGUtPmFkZEN1cnNvcihwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKS5zdWJz
dHJpbmcoMSkpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSog
aW1hZ2UgPSBzdGF0aWNfY2FzdDxDU1NDdXJzb3JJbWFnZVZhbHVlKj4ocHJpbWl0aXZlVmFsdWUp
OworICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPmFkZEN1cnNvcihpbWFnZS0+aW1hZ2Uo
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCkpLCBpbWFnZS0+aG90c3BvdCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQorICAgICAgICAgICAgICAgICAgICBzdHlsZS0+
c2V0Q3Vyc29yKChFQ3Vyc29yKShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENTU19WQUxf
QVVUTykpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVl
KSB7CiAgICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBl
KCk7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5U
KSB7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcigoRUN1cnNvcikocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgLSBDU1NfVkFMX0FVVE8pKTsKLSAgICAgICAgICAgICAgICBzdHls
ZS0+c2V0Q3Vyc29ySW1hZ2UoMCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKLSAgICAgICAgICAgICAgICBDU1NJbWFnZVZhbHVl
KiBpbWFnZSA9IHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPihwcmltaXRpdmVWYWx1ZSk7Ci0g
ICAgICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcihDVVJTT1JfQVVUTyk7Ci0gICAgICAgICAg
ICAgICAgc3R5bGUtPnNldEN1cnNvckltYWdlKGltYWdlLT5pbWFnZShlbGVtZW50LT5kb2N1bWVu
dCgpLT5kb2NMb2FkZXIoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJy
ZWFrOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE2NTIyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKICNpbmNs
dWRlICJTVkdMZW5ndGguaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CituYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFNWR0N1cnNvckVsZW1lbnQ6OlNWR0N1cnNvckVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQgKmRvYykKICAgICA6IFNWR0VsZW1lbnQodGFn
TmFtZSwgZG9jKQpAQCAtODAsNiArODAsOCBAQCB2b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmliCiAgICAgfQogfQogCit9CisKIC8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAv
LyBTVkdfU1VQUE9SVAogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTY1MjIpCisrKyBX
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTAgKzQ4LDIw
IEBACiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgImNzc3N0eWxl
c2VsZWN0b3IuaCIKIAorI2lmIFNWR19TVVBQT1JUCisjaW5jbHVkZSAiWExpbmtOYW1lcy5oIgor
I2luY2x1ZGUgIlNWR05hbWVzLmgiCisjaW5jbHVkZSAiU1ZHQ3Vyc29yRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIlNWR0xlbmd0aC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEV2ZW50TmFtZXM7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworI2lm
IFNWR19TVVBQT1JUCit1c2luZyBuYW1lc3BhY2UgU1ZHTmFtZXM7CisjZW5kaWYKIAogc3RydWN0
IFNjaGVkdWxlZEV2ZW50IHsKICAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7CkBAIC02NDYsMTEg
KzY1NiwzMCBAQCBzdGF0aWMgQ3Vyc29yIHNlbGVjdEN1cnNvcihjb25zdCBNb3VzZUV2CiAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUgPyBub2RlLT5yZW5kZXJlcigpIDogMDsKICAg
ICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlciA/IHJlbmRlcmVyLT5zdHlsZSgpIDogMDsK
IAotICAgIGlmIChzdHlsZSAmJiBzdHlsZS0+Y3Vyc29ySW1hZ2UoKSAmJiAhc3R5bGUtPmN1cnNv
ckltYWdlKCktPmltYWdlKCktPmlzTnVsbCgpKQotICAgICAgICBpZiAoIXN0eWxlLT5jdXJzb3JJ
bWFnZSgpLT5pc0Vycm9ySW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVybiBzdHlsZS0+Y3Vyc29y
SW1hZ2UoKS0+aW1hZ2UoKTsKLSAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0eWxlID0gMDsg
Ly8gRmFsbGJhY2sgdG8gQ1VSU09SX0FVVE8KKyAgICBpZiAoc3R5bGUgJiYgc3R5bGUtPmN1cnNv
cnMoKSkgeworICAgICAgICBjb25zdCBDdXJzb3JMaXN0KiBjdXJzb3JzID0gc3R5bGUtPmN1cnNv
cnMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGN1cnNvcnMtPnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICBDYWNoZWRJbWFnZSogY2ltYWdlID0gKCpjdXJzb3JzKVtpXS5j
dXJzb3JJbWFnZTsKKyAgICAgICAgICAgIEludFBvaW50IGhvdFNwb3QgPSAoKmN1cnNvcnMpW2ld
LmhvdFNwb3Q7CisjaWYgU1ZHX1NVUFBPUlQKKyAgICAgICAgICAgIGlmICghY2ltYWdlKSB7Cisg
ICAgICAgICAgICAgICAgRWxlbWVudCogZSA9IG5vZGUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRC
eUlkKCgqY3Vyc29ycylbaV0uY3Vyc29yRnJhZ21lbnRJZCk7CisgICAgICAgICAgICAgICAgaWYg
KGUgJiYgZS0+aGFzVGFnTmFtZShjdXJzb3JUYWcpKSB7CisgICAgICAgICAgICAgICAgICAgIGhv
dFNwb3Quc2V0WChpbnQoc3RhdGljX2Nhc3Q8U1ZHQ3Vyc29yRWxlbWVudCo+KGUpLT54KCktPnZh
bHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgaG90U3BvdC5zZXRZKGludChzdGF0aWNfY2Fz
dDxTVkdDdXJzb3JFbGVtZW50Kj4oZSktPnkoKS0+dmFsdWUoKSkpOworICAgICAgICAgICAgICAg
ICAgICBjaW1hZ2UgPSBzdGF0aWNfY2FzdDxTVkdDdXJzb3JFbGVtZW50Kj4oZSktPmNhY2hlZElt
YWdlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAg
ICAgICBpZiAoIWNpbWFnZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IGlmIChjaW1hZ2UtPmltYWdlKCktPmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgaWYgKCFjaW1hZ2UtPmlzRXJyb3JJbWFnZSgpKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIEN1cnNvcihjaW1hZ2UtPmltYWdlKCksIGhvdFNwb3QpOworfQorICAgICAgICB9
CisgICAgfQogCiAgICAgc3dpdGNoIChzdHlsZSA/IHN0eWxlLT5jdXJzb3IoKSA6IENVUlNPUl9B
VVRPKSB7CiAgICAgICAgIGNhc2UgQ1VSU09SX0FVVE86IHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vQ3Vyc29yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaAkocmV2
aXNpb24gMTY1MjIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIE5TQ3Vyc29yOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgY2xhc3MgSW1hZ2U7CisgICAgY2xhc3MgSW50UG9pbnQ7CiAKICNpZiBQTEFURk9STShX
SU4pCiAgICAgdHlwZWRlZiBIQ1VSU09SIFBsYXRmb3JtQ3Vyc29yOwpAQCAtNjksNyArNzAsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgeyB9CiAKLSAgICAgICAgQ3Vy
c29yKEltYWdlKik7CisgICAgICAgIEN1cnNvcihJbWFnZSosIGNvbnN0IEludFBvaW50JiBob3Rz
cG90KTsKICAgICAgICAgQ3Vyc29yKGNvbnN0IEN1cnNvciYpOwogICAgICAgICB+Q3Vyc29yKCk7
CiAgICAgICAgIEN1cnNvciYgb3BlcmF0b3I9KGNvbnN0IEN1cnNvciYpOwpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vbWFjL0N1cnNvck1hYy5tbQkocmV2aXNpb24gMTY1MjIpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L21hYy9DdXJzb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBv
cnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiRm91bmRhdGlvbkV4dHJhcy5oIgogI2lt
cG9ydCAiSW1hZ2UuaCIKKyNpbXBvcnQgIkludFBvaW50LmgiCiAKIEBpbnRlcmZhY2UgV2ViQ29y
ZUN1cnNvckJ1bmRsZSA6IE5TT2JqZWN0IHsgfQogQGVuZApAQCAtNDEsMTQgKzQyLDE0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIFNpbXBsZSBOU0N1cnNvciBjYWxscyBzaG91bGRuJ3QgbmVl
ZCBwcm90ZWN0aW9uLAogLy8gYnV0IGNyZWF0aW5nIGEgY3Vyc29yIHdpdGggYSBiYWQgaW1hZ2Ug
bWlnaHQgdGhyb3cuCiAKLXN0YXRpYyBOU0N1cnNvciogY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWdl
KiBpbWFnZSkKK3N0YXRpYyBOU0N1cnNvciogY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWdlKiBpbWFn
ZSwgY29uc3QgSW50UG9pbnQmIGhvdHNwb3QpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBjdXJzb3Ig
d29uJ3QgYW5pbWF0ZS4gIE5vdCBzdXJlIGlmIHRoYXQncyBhIGJpZyBkZWFsLgogICAgIE5TSW1h
Z2UqIGltZyA9IGltYWdlLT5nZXROU0ltYWdlKCk7CiAgICAgaWYgKCFpbWcpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tO
U0N1cnNvciBhbGxvY10gaW5pdFdpdGhJbWFnZTppbWcgaG90U3BvdDpOU1plcm9Qb2ludF07Cisg
ICAgcmV0dXJuIFtbTlNDdXJzb3IgYWxsb2NdIGluaXRXaXRoSW1hZ2U6aW1nIGhvdFNwb3Q6aG90
c3BvdF07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICByZXR1cm4gMDsKIH0K
QEAgLTc0LDggKzc1LDggQEAgc3RhdGljIE5TQ3Vyc29yKiBsZWFrTmFtZWRDdXJzb3IoY29uc3Qg
YwogICAgIHJldHVybiAwOwogfQogCi1DdXJzb3I6OkN1cnNvcihJbWFnZSogaW1hZ2UpCi0gICAg
OiBtX2ltcGwoSGFyZFJldGFpbldpdGhOU1JlbGVhc2UoY3JlYXRlQ3VzdG9tQ3Vyc29yKGltYWdl
KSkpCitDdXJzb3I6OkN1cnNvcihJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RzcG90
KQorICAgIDogbV9pbXBsKEhhcmRSZXRhaW5XaXRoTlNSZWxlYXNlKGNyZWF0ZUN1c3RvbUN1cnNv
cihpbWFnZSwgaG90c3BvdCkpKQogewogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L0N1
cnNvclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0LmNw
cAkocmV2aXNpb24gMTY1MjIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBDdXJzb3I6On5DdXJzb3IoKQogewogfQog
Ci1DdXJzb3I6OkN1cnNvcihJbWFnZSopCitDdXJzb3I6OkN1cnNvcihJbWFnZSosIGNvbnN0IElu
dFBvaW50JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclN0eWxlLmNwcAkocmV2aXNpb24gMTY1MjIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw3ICs1MTAsNyBAQCBib29sIFN0eWxl
Q1NTM0luaGVyaXRlZERhdGE6OnNoYWRvd0RhdGFFCiBTdHlsZUluaGVyaXRlZERhdGE6OlN0eWxl
SW5oZXJpdGVkRGF0YSgpCiAgICAgOiBpbmRlbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SW5k
ZW50KCkpLCBsaW5lX2hlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSksIAog
ICAgICAgc3R5bGVfaW1hZ2UoUmVuZGVyU3R5bGU6OmluaXRpYWxMaXN0U3R5bGVJbWFnZSgpKSwK
LSAgICAgIGN1cnNvcl9pbWFnZSgwKSwgY29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2xvcigp
KSwgCisgICAgICBjb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbENvbG9yKCkpLCAKICAgICAgIGhv
cml6b250YWxfYm9yZGVyX3NwYWNpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxIb3Jpem9udGFsQm9y
ZGVyU3BhY2luZygpKSwgCiAgICAgICB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyhSZW5kZXJTdHls
ZTo6aW5pdGlhbFZlcnRpY2FsQm9yZGVyU3BhY2luZygpKSwKICAgICAgIHdpZG93cyhSZW5kZXJT
dHlsZTo6aW5pdGlhbFdpZG93cygpKSwgb3JwaGFucyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9ycGhh
bnMoKSksCkBAIC01MjUsOCArNTI1LDggQEAgU3R5bGVJbmhlcml0ZWREYXRhOjp+U3R5bGVJbmhl
cml0ZWREYXRhKAogU3R5bGVJbmhlcml0ZWREYXRhOjpTdHlsZUluaGVyaXRlZERhdGEoY29uc3Qg
U3R5bGVJbmhlcml0ZWREYXRhJiBvICkKICAgICA6IFNoYXJlZDxTdHlsZUluaGVyaXRlZERhdGE+
KCksCiAgICAgICBpbmRlbnQoIG8uaW5kZW50ICksIGxpbmVfaGVpZ2h0KCBvLmxpbmVfaGVpZ2h0
ICksIHN0eWxlX2ltYWdlKCBvLnN0eWxlX2ltYWdlICksCi0gICAgICBjdXJzb3JfaW1hZ2UoIG8u
Y3Vyc29yX2ltYWdlICksIGZvbnQoIG8uZm9udCApLAotICAgICAgY29sb3IoIG8uY29sb3IgKSwK
KyAgICAgIGN1cnNvckRhdGEoby5jdXJzb3JEYXRhKSwKKyAgICAgIGZvbnQoIG8uZm9udCApLCBj
b2xvciggby5jb2xvciApLAogICAgICAgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyggby5ob3Jp
em9udGFsX2JvcmRlcl9zcGFjaW5nICksCiAgICAgICB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZygg
by52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyApLAogICAgICAgd2lkb3dzKG8ud2lkb3dzKSwgb3Jw
aGFucyhvLm9ycGhhbnMpLCBwYWdlX2JyZWFrX2luc2lkZShvLnBhZ2VfYnJlYWtfaW5zaWRlKQpA
QCAtNTM5LDcgKzUzOSw3IEBAIGJvb2wgU3R5bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNv
bnMKICAgICAgICAgaW5kZW50ID09IG8uaW5kZW50ICYmCiAgICAgICAgIGxpbmVfaGVpZ2h0ID09
IG8ubGluZV9oZWlnaHQgJiYKICAgICAgICAgc3R5bGVfaW1hZ2UgPT0gby5zdHlsZV9pbWFnZSAm
JgotICAgICAgICBjdXJzb3JfaW1hZ2UgPT0gby5jdXJzb3JfaW1hZ2UgJiYKKyAgICAgICAgY3Vy
c29yRGF0YSAgPT0gby5jdXJzb3JEYXRhICYmCiAgICAgICAgIGZvbnQgPT0gby5mb250ICYmCiAg
ICAgICAgIGNvbG9yID09IG8uY29sb3IgJiYKICAgICAgICAgaG9yaXpvbnRhbF9ib3JkZXJfc3Bh
Y2luZyA9PSBvLmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcgJiYKQEAgLTgyNyw3ICs4MjcsNyBA
QCBSZW5kZXJTdHlsZTo6RGlmZiBSZW5kZXJTdHlsZTo6ZGlmZiggY29uCiAgICAgICAgICEoaW5o
ZXJpdGVkLT5pbmRlbnQgPT0gb3RoZXItPmluaGVyaXRlZC0+aW5kZW50KSB8fAogICAgICAgICAh
KGluaGVyaXRlZC0+bGluZV9oZWlnaHQgPT0gb3RoZXItPmluaGVyaXRlZC0+bGluZV9oZWlnaHQp
IHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT5zdHlsZV9pbWFnZSA9PSBvdGhlci0+aW5oZXJpdGVk
LT5zdHlsZV9pbWFnZSkgfHwKLSAgICAgICAgIShpbmhlcml0ZWQtPmN1cnNvcl9pbWFnZSA9PSBv
dGhlci0+aW5oZXJpdGVkLT5jdXJzb3JfaW1hZ2UpIHx8CisgICAgICAgICEoaW5oZXJpdGVkLT5j
dXJzb3JEYXRhICA9PSBvdGhlci0+aW5oZXJpdGVkLT5jdXJzb3JEYXRhKSB8fAogICAgICAgICAh
KGluaGVyaXRlZC0+Zm9udCA9PSBvdGhlci0+aW5oZXJpdGVkLT5mb250KSB8fAogICAgICAgICAh
KGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyA9PSBvdGhlci0+aW5oZXJpdGVk
LT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKSB8fAogICAgICAgICAhKGluaGVyaXRlZC0+dmVy
dGljYWxfYm9yZGVyX3NwYWNpbmcgPT0gb3RoZXItPmluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVy
X3NwYWNpbmcpIHx8CkBAIC05ODYsNiArOTg2LDMwIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENs
aXAoIExlbmd0aCB0b3AsIEwKICAgICBkYXRhLT5jbGlwLmxlZnQgPSBsZWZ0OwogfQogCit2b2lk
IFJlbmRlclN0eWxlOjphZGRDdXJzb3IoQ2FjaGVkSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQb2lu
dCYgaG90U3BvdCkKK3sKKyAgICBDdXJzb3JEYXRhIGRhdGE7CisgICAgZGF0YS5jdXJzb3JJbWFn
ZSA9IGltYWdlOworICAgIGRhdGEuaG90U3BvdCA9IGhvdFNwb3Q7CisgICAgaWYgKCFpbmhlcml0
ZWQuYWNjZXNzKCktPmN1cnNvckRhdGEpCisgICAgICAgIGluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vy
c29yRGF0YSA9IG5ldyBDdXJzb3JMaXN0OworICAgIGluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vyc29y
RGF0YS0+YXBwZW5kKGRhdGEpOworfQorCit2b2lkIFJlbmRlclN0eWxlOjphZGRDdXJzb3IoY29u
c3QgU3RyaW5nJiBpZCkKK3sKKyAgICBDdXJzb3JEYXRhIGRhdGE7CisgICAgZGF0YS5jdXJzb3JG
cmFnbWVudElkID0gaWQ7CisgICAgaWYgKCFpbmhlcml0ZWQuYWNjZXNzKCktPmN1cnNvckRhdGEp
CisgICAgICAgIGluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSA9IG5ldyBDdXJzb3JMaXN0
OworICAgIGluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vyc29yRGF0YS0+YXBwZW5kKGRhdGEpOworfQor
Cit2b2lkIFJlbmRlclN0eWxlOjpzZXRDdXJzb3JzKFBhc3NSZWZQdHI8Q3Vyc29yTGlzdD4gb3Ro
ZXIpCit7CisgICAgaW5oZXJpdGVkLmFjY2VzcygpLT5jdXJzb3JEYXRhID0gb3RoZXI7Cit9CisK
IGJvb2wgUmVuZGVyU3R5bGU6OmNvbnRlbnREYXRhRXF1aXZhbGVudChjb25zdCBSZW5kZXJTdHls
ZSogb3RoZXJTdHlsZSkgY29uc3QKIHsKICAgICBDb250ZW50RGF0YSogYzEgPSBjb250ZW50OwpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAxNjUyMikKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAK
ICAqLwogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVl
LmgiCiAjaW5jbHVkZSAiRGF0YVJlZi5oIgogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJH
cmFwaGljc1R5cGVzLmgiCkBAIC02Miw2ICs2Myw4IEBAIHVzaW5nIHN0ZDo6bWF4OwogY2xhc3Mg
Q1NTU3R5bGVTZWxlY3RvcjsKIGNsYXNzIENhY2hlZEltYWdlOwogY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2U7CitzdHJ1Y3QgQ3Vyc29yRGF0YTsKK2NsYXNzIEN1cnNvckxpc3Q7CiBjbGFzcyBSZW5kZXJB
cmVuYTsKIGNsYXNzIFNoYWRvd1ZhbHVlOwogY2xhc3MgU3RyaW5nSW1wbDsKQEAgLTgyNCw3ICs4
MjcsNyBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoIGxpbmVfaGVpZ2h0OwogCiAgICAgQ2FjaGVkSW1h
Z2UgKnN0eWxlX2ltYWdlOwotICAgIENhY2hlZEltYWdlICpjdXJzb3JfaW1hZ2U7CisgICAgUmVm
UHRyPEN1cnNvckxpc3Q+IGN1cnNvckRhdGE7CiAKICAgICBGb250IGZvbnQ7CiAgICAgQ29sb3Ig
Y29sb3I7CkBAIC04NjgsNiArODcxLDI5IEBAIGVudW0gRUN1cnNvciB7CiAgICAgQ1VSU09SX0NP
TF9SRVNJWkUsIENVUlNPUl9ST1dfUkVTSVpFLCBDVVJTT1JfVEVYVCwgQ1VSU09SX1dBSVQsIENV
UlNPUl9IRUxQCiB9OwogCitzdHJ1Y3QgQ3Vyc29yRGF0YSB7CisgICAgQ3Vyc29yRGF0YSgpCisg
ICAgICAgIDogY3Vyc29ySW1hZ2UoMCkKKyAgICB7fQorICAgIAorICAgIEludFBvaW50IGhvdFNw
b3Q7IC8vIGZvciBDU1MzIHN1cHBvcnQKKyAgICBDYWNoZWRJbWFnZSogY3Vyc29ySW1hZ2U7IC8v
IHdlYWsgcG9pbnRlciwgdGhlIENTU1ZhbHVlSW1hZ2UgdGFrZXMgY2FyZSBvZiBkZWxldGluZyBj
dXJzb3JJbWFnZQorICAgIFN0cmluZyBjdXJzb3JGcmFnbWVudElkOyAvLyBvbmx5IHVzZWQgZm9y
IFNWR0N1cnNvckVsZW1lbnQsIGEgZGlyZWN0IHBvaW50ZXIgd291bGQgZ2V0IHN0YWxlCit9Owor
CitjbGFzcyBDdXJzb3JMaXN0IDogcHVibGljIFNoYXJlZDxDdXJzb3JMaXN0PiB7CitwdWJsaWM6
CisgICAgY29uc3QgQ3Vyc29yRGF0YSYgb3BlcmF0b3JbXShpbnQgaSkgY29uc3QgeworICAgICAg
ICByZXR1cm4gbV92ZWN0b3JbaV07CisgICAgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3ZlY3Rvci5zaXplKCk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCBDdXJzb3JE
YXRhJiBjdXJzb3JEYXRhKSB7IG1fdmVjdG9yLmFwcGVuZChjdXJzb3JEYXRhKTsgfQorCitwcml2
YXRlOgorICAgIFZlY3RvcjxDdXJzb3JEYXRhPiBtX3ZlY3RvcjsKK307CisKIGVudW0gQ29udGVu
dFR5cGUgewogICAgIENPTlRFTlRfTk9ORSwgQ09OVEVOVF9PQkpFQ1QsIENPTlRFTlRfVEVYVCwg
Q09OVEVOVF9DT1VOVEVSCiB9OwpAQCAtMTMxNCw3ICsxMzQwLDcgQEAgcHVibGljOgogCiAgICAg
RUN1cnNvciBjdXJzb3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQ3Vyc29yPihpbmhl
cml0ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSk7IH0KICAgICAKLSAgICBDYWNoZWRJbWFnZSAqY3Vy
c29ySW1hZ2UoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmN1cnNvcl9pbWFnZTsgfQorICAg
IEN1cnNvckxpc3QqIGN1cnNvcnMoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmN1cnNvckRh
dGEuZ2V0KCk7IH0KIAogICAgIHNob3J0IHdpZG93cygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRl
ZC0+d2lkb3dzOyB9CiAgICAgc2hvcnQgb3JwaGFucygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRl
ZC0+b3JwaGFuczsgfQpAQCAtMTUyMSw3ICsxNTQ3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
UGFkZGluZ1JpZ2h0KExlbmd0aCB2KSAgeyAgU0VUX1ZBUihzdXJyb3VuZCxwYWRkaW5nLnJpZ2h0
LHYpIH0KIAogICAgIHZvaWQgc2V0Q3Vyc29yKCBFQ3Vyc29yIGMgKSB7IGluaGVyaXRlZF9mbGFn
cy5fY3Vyc29yX3N0eWxlID0gYzsgfQotICAgIHZvaWQgc2V0Q3Vyc29ySW1hZ2UoIENhY2hlZElt
YWdlICp2ICkgeyBTRVRfVkFSKGluaGVyaXRlZCxjdXJzb3JfaW1hZ2UsdikgfQorICAgIHZvaWQg
YWRkQ3Vyc29yKENhY2hlZEltYWdlKiwgY29uc3QgSW50UG9pbnQmID0gSW50UG9pbnQoKSk7Cisg
ICAgdm9pZCBhZGRDdXJzb3IoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRDdXJzb3JzKFBh
c3NSZWZQdHI8Q3Vyc29yTGlzdD4pOwogCiAgICAgYm9vbCBmb3JjZUJhY2tncm91bmRzVG9XaGl0
ZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZF9mbGFncy5fZm9yY2VfYmFja2dyb3VuZHNfdG9f
d2hpdGU7IH0KICAgICB2b2lkIHNldEZvcmNlQmFja2dyb3VuZHNUb1doaXRlKGJvb2wgYj10cnVl
KSB7IGluaGVyaXRlZF9mbGFncy5fZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgPSBiOyB9Cg==
</data>
<flag name="review"
          id="3516"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>10702</attachid>
            <date>2006-09-22 03:16:57 -0700</date>
            <delta_ts>2006-09-22 03:16:57 -0700</delta_ts>
            <desc>Improved testcase</desc>
            <filename>css3-cursor-test2.html</filename>
            <type>text/html</type>
            <size>3092</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIgogICAiaHR0
cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPgo8aGVhZD48dGl0bGU+
Q3VzdG9tIGN1cnNvciB0ZXN0czwvdGl0bGU+PC9oZWFkPgo8Ym9keT4KPHA+PGEgaHJlZj0iaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD04OTkxIj5CdWcgLjk5
MTwvYT46IFJFR1JFU1NJT046IG1pc3Npbmcgb3IgYnJva2VuIENTUyBjdXN0b20gY3Vyc29ycyBh
cmUgZGlzcGxheWVkIGFzIGEgbWlzc2luZyBpbWFnZSBpY29uLjwvcD4KPHA+TW92ZSB0aGUgY3Vy
c29yIG92ZXIgdGhlIGJsdWUgYm94IC0gaXQgc2hvdWxkIG5vdCB0dXJuIGludG8gYSBtaXNzaW5n
IGltYWdlIGljb24sIGFuZCBzaG91bGQgdHVybiBpbnRvIGFuIEktYmVhbSBvdmVyIHRleHQuPC9w
PgoKPGRpdiBzdHlsZT0id2lkdGg6MTAwcHg7aGVpZ2h0OjUwcHg7YmFja2dyb3VuZC1jb2xvcjps
aWdodGJsdWU7IGN1cnNvcjp1cmwobm9uZXhpc3RlbnQucG5nKSwgYXV0bzsiPjxzcGFuIHN0eWxl
PSJjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIGF1dG87Ij5zb21lIHRleHQ8L3NwYW4+PC9k
aXY+CjxkaXYgc3R5bGU9IndpZHRoOjEwMHB4O2hlaWdodDo1MHB4O2JhY2tncm91bmQtY29sb3I6
bGlnaHRibHVlOyBjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyk7Ij48L2Rpdj4KCjxocj4KPHA+
PGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02
MDAxIj5CdWcgNjAwMTwvYT46IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9t
IGN1cnNvcnM8L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTAxMyI+QnVnIDkwMTM8L2E+OiBMZXQgY29ycmVjdCBDU1MgY3VzdG9t
IGN1cnNvciBkZWNsYXJhdGlvbnMgcGFyc2U8L3A+CjxwPkluIGVhY2ggb2YgdGhlIGJsdWUgYm94
ZXMgYmVsb3csIHRoZSBjdXJzb3Igc2hvdWxkIGJlY29tZSBhIGhlbHAgY3Vyc29yIChxdWVzdGlv
biBtYXJrKS48L3A+Cjx0YWJsZT48dHI+CiA8dGQ+PGRpdiBzdHlsZT0id2lkdGg6MTAwcHg7aGVp
Z2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKHJlc291cmNl
cy9oZWxwQ3Vyc29yLnRpZmYpLCB0ZXh0OyI+PC9kaXY+PC90ZD4gPCEtLSBWYWxpZCwgbm8gZmFs
bGJhY2sgbmVlZGVkIC0tPgogPHRkPjxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBw
eDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMvaGVscEN1
cnNvci50aWZmKTsnPjwvZGl2PjwvdGQ+IDwhLS0gSW52YWxpZCwgYnV0IGFsbG93ZWQgYnkgV2lu
SUUgLS0+CiA8dGQ+PGRpdiBzdHlsZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91
bmQtY29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIGhlbHA7Jz48
L2Rpdj48L3RkPgogPHRkPjxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNr
Z3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChub25leGlzdGVudC5wbmcpLCB1cmwo
Y3VzdG9tLWN1cnNvcnMuaHRtbCksIHVybCh1bmtub3duLXNjaGVtZTpjdXN0b20tY3Vyc29ycy5o
dG1sKSwgdXJsKHJlc291cmNlcy9oZWxwQ3Vyc29yLnRpZmYpLCB0ZXh0Oyc+PC9kaXY+PC90ZD4K
IDx0ZD48ZGl2IHN0eWxlPSd3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xv
cjpsaWdodGJsdWU7IGN1cnNvcjp1cmwobm9uZXhpc3RlbnQucG5nKSwgdXJsKCJyZXNvdXJjZXMv
aGVscEN1cnNvci50aWZmIiksIHRleHQ7Jz48L2Rpdj48L3RkPgogPHRkPjxkaXYgc3R5bGU9J3dp
ZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29y
OnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKSAxIDEsIHRleHQ7Jz48L2Rpdj48L3RkPiA8
IS0tIENTUzMgaG90IHNwb3QgLSB2YWxpZCwgbm8gZmFsbGJhY2sgbmVlZGVkIC0tPgo8L3RyPgo8
L3RhYmxlPgo8cD5JbiBlYWNoIG9mIHRoZSBibHVlIGJveGVzIGJlbG93IHRoZSBjdXJzb3Igc2hv
dWxkIHJlbWFpbiB0aGUgZGVmYXVsdCBjdXJzb3IsIHNpbmNlIGFsbCBjdXJzb3IgZGVmaW5pdGlv
bnMgYXJlIGludmFsaWQuLjwvcD4KPHRhYmxlPjx0cj4KPHRkPjxkaXYgc3R5bGU9J3dpZHRoOjEw
MHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChy
ZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKSAxIDEgdGV4dDsnPjwvZGl2PjwvdGQ+IDwhLS0gQ1NT
MyBob3Qgc3BvdCAtIGludmFsaWQsIHNob3VsZCBoYXZlIGNvbW1hIGFmdGVyIGhvdHNwb3QgY29v
cmRzIC0tPgo8dGQ+PGRpdiBzdHlsZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91
bmQtY29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKHJlc291cmNlcy9oZWxwQ3Vyc29yLnRpZmYp
IDEsIHRleHQ7Jz48L2Rpdj48L3RkPiA8IS0tIENTUzMgaG90IHNwb3QgLSBpbnZhbGlkLCBzaG91
bGQgaGF2ZSB0d28gaG90c3BvdCBjb29yZHMgLS0+Cjx0ZD48ZGl2IHN0eWxlPSd3aWR0aDoxMDBw
eDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwocmVz
b3VyY2VzL2hlbHBDdXJzb3IudGlmZikgMSAxIDEsIHRleHQ7Jz48L2Rpdj48L3RkPiA8IS0tIENT
UzMgaG90IHNwb3QgLSBpbnZhbGlkLCBzaG91bGQgaGF2ZSB0d28gaG90c3BvdCBjb29yZHMgLS0+
CjwvdHI+CjwvdGFibGU+Cgo8cD48L3A+CjxwPjxzcGFuIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9y
OmdyYXk7IGN1cnNvcjp1cmwobm9uZXhpc3RlbnQucG5nKSwgdXJsKCJyZXNvdXJjZXMvaGVscEN1
cnNvci50aWZmIik7Jz5TaG91bGQgc2hvdyBhbiBJLWJlYW0gY3Vyc29yLjwvc3Bhbj48L3A+IDwh
LS0gQW4gaW52YWxpZCBkZWNsYXJhdGlvbiwgZXZlbiBieSBXaW5JRSBzdGFuZGFyZHMgLS0+Cjwv
Ym9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10726</attachid>
            <date>2006-09-23 13:55:04 -0700</date>
            <delta_ts>2006-09-24 07:23:40 -0700</delta_ts>
            <desc>Improved patch+testcases</desc>
            <filename>6002-12.diff</filename>
            <type>text/plain</type>
            <size>38705</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjU0NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTUgQEAKKzIwMDYtMDktMjMgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAxCisgICAgICAg
IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9tIGN1cnNvcnMKKyAgICAgICAg
Rml4IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTYw
MDIKKyAgICAgICAgV2ViS2l0IGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSBTVkcgPGN1cnNvcj4g
ZWxlbWVudAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzdmcgY3Vyc29yIGltYWdlcy4gQWxz
byBtYWtlIHN1cmUgaG90c3BvdAorICAgICAgICBzZXR0aW5ncyBhcmUgaGFuZGxlZCBjb3JyZWN0
bHkuIEZpbmFsbHkgaW1wbGVtZW50IGZhbGxiYWNrLgorCisgICAgICAgIFdBUk5JTkc6IE5PIFRF
U1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Q1NTQ3Vy
c29ySW1hZ2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjp+
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0N1cnNvckltYWdlVmFsdWUu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjpob3RzcG90
KToKKyAgICAgICAgKiBjc3MvY3NzcGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwOgorICAgICAgICAqIG1hbnVhbC10
ZXN0cy9jc3MzLWN1cnNvci10ZXN0Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtYW51YWwtdGVz
dHMvY3Vyc29yZmFsbGJhY2sueG1sOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RDdXJzb3IpOgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cnNvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DdXJzb3JNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVDdXN0b21DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29y
OjpDdXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0N1cnNvclF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkN1cnNvcjo6Q3Vyc29yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU3R5
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJbmhlcml0ZWREYXRhOjpTdHlsZUluaGVy
aXRlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpkaWZmKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjphZGRDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmFkZFNWR0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0
Q3Vyc29yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2xlYXJDdXJzb3JM
aXN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cnNvckRhdGE6OkN1cnNvckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yTGlz
dDo6b3BlcmF0b3JbXSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JMaXN0OjpzaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cnNvckxpc3Q6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6Y3Vyc29ycyk6CisKIDIwMDYtMDktMjMgIEFsZXhleSBQcm9za3VyeWFrb3Yg
IDxhcEBueXBvcC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYy4KSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjU0NCkKKysr
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzEwLDYgKzE3MTAsOCBAQAogCQlBOEZFRkIwQjA5NzlGNDcyMDA1ODM5RkQgLyogUmVu
ZGVyRm9yZWlnbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOEZFRkIwOTA5NzlGNDcyMDA1ODM5RkQgLyogUmVuZGVyRm9yZWlnbk9iamVj
dC5jcHAgKi87IH07CiAJCUE4RkVGQjMxMDk3OUY0RjYwMDU4MzlGRCAvKiBTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBOEZFRkIyRjA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQu
Y3BwICovOyB9OwogCQlBOEZFRkIzMjA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4RkVGQjMwMDk3OUY0RjYwMDU4MzlGRCAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oICov
OyB9OworCQlBQTIxRUNDQTBBQkYwRkJBMDAyQjgzNEMgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTA5NzhF
RDBBQkFBNkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgKi87IH07CisJCUFB
MjFFQ0NEMEFCRjBGQzYwMDJCODM0QyAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTA5NzhFRTBBQkFBNkUxMDA4
NzQ0ODAgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oICovOyB9OwogCQlBQTk4Qjg3RDBBQUEwMkY4
MDAxQTQ0QzIgLyogUGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBQTk4Qjg3QzBBQUEwMkY4MDAxQTQ0QzIgLyogUGF0aC5jcHAgKi87IH07CiAJ
CUFBQzhEQUIxMEFBMTAwMjAwMERDMDkwNyAvKiBTVkdNZXRhZGF0YUVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFDOERBQUYwQUExMDAy
MDAwREMwOTA3IC8qIFNWR01ldGFkYXRhRWxlbWVudC5jcHAgKi87IH07CiAJCUFBQzhEQUIyMEFB
MTAwMjAwMERDMDkwNyAvKiBTVkdNZXRhZGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQzhEQUIwMEFBMTAwMjAwMERDMDkwNyAvKiBT
VkdNZXRhZGF0YUVsZW1lbnQuaCAqLzsgfTsKQEAgLTM5ODksNiArMzk5MSw4IEBACiAJCUE4RkVG
QjA5MDk3OUY0NzIwMDU4MzlGRCAvKiBSZW5kZXJGb3JlaWduT2JqZWN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJGb3JlaWduT2JqZWN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThGRUZCMkYwOTc5RjRGNjAwNTgzOUZEIC8qIFNW
R0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4RkVGQjMwMDk3OUY0RjYwMDU4MzlGRCAvKiBTVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUEwOTc4RUQwQUJBQTZF
MTAwODc0NDgwIC8qIENTU0N1cnNvckltYWdlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENTU0N1cnNvckltYWdlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBQTA5NzhFRTBBQkFBNkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTk4Qjg3QzBBQUEwMkY4
MDAxQTQ0QzIgLyogUGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBQzhEQUFGMEFBMTAw
MjAwMERDMDkwNyAvKiBTVkdNZXRhZGF0YUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNWR01ldGFkYXRhRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUFBQzhEQUIwMEFBMTAwMjAwMERDMDkwNyAvKiBTVkdNZXRhZGF0YUVs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR01ldGFkYXRhRWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA0Myw2ICs3MDQ3LDggQEAK
IAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQUEwOTc4RUQwQUJBQTZFMTAwODc0NDgwIC8qIENT
U0N1cnNvckltYWdlVmFsdWUuY3BwICovLAorCQkJCUFBMDk3OEVFMEFCQUE2RTEwMDg3NDQ4MCAv
KiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggKi8sCiAJCQkJQTgwRTZDREEwQTE5ODlDQTAwN0ZCOEM1
IC8qIENvdW50ZXIuaCAqLywKIAkJCQk5MzA3MDVDNzA5RTBDOTVGMDBCMTdGRTQgLyogQ291bnRl
ci5pZGwgKi8sCiAJCQkJQTgwRTZDQkIwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0JvcmRlckltYWdl
VmFsdWUuY3BwICovLApAQCAtODQ0MCw2ICs4NDQ2LDcgQEAKIAkJCQk4NTNCRjREQjBBQkI2QjU1
MDA4NjQ3QkIgLyogRE9NTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUzQkY0RUIwQUJCNkU5
NzAwODY0N0JCIC8qIERPTU5vZGVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUJDQkMx
MzBBQkJBODdEMDAzODExNjAgLyogRE9NSFRNTERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBQTIxRUNDRDBBQkYwRkM2MDAyQjgzNEMgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODUxRUU4MEMwQUJDQTI4RjAwQTZBQTMzIC8qIERPTUFic3RyYWN0Vmll
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUxRUU4MTEwQUJDQTM5NjAwQTZBQTMzIC8qIERPTUV2
ZW50RXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTFFRTgyMTBBQkNBNTgxMDBBNkFB
MzMgLyogRE9NUmFuZ2VFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtOTUzMiw2ICs5NTM5
LDcgQEAKIAkJCQlCMjAxMTEwNzBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NTNCRjREQzBBQkI2QjU1MDA4NjQ3QkIgLyogRE9NTm9kZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTg1QkNCQzE0MEFCQkE4N0QwMDM4MTE2MCAvKiBET01IVE1M
RG9jdW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQlBQTIxRUNDQTBBQkYwRkJBMDAyQjgzNEMg
LyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTFFRTgwRDBB
QkNBMjhGMDBBNkFBMzMgLyogRE9NQWJzdHJhY3RWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTg0MTVGOUIwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNDbGlwcGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4NDE1RjlEMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzUmVzb3VyY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAJKHJldmlzaW9uIDE2NTQ0KQorKysgV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA3LDU3ICs2MDcsODkgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgIGNhc2UgQ1NTX1BS
T1BfQ09VTlRFUl9SRVNFVDoKICAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9DVVJTT1I6Ci0gICAgICAgIGlmIChzdHlsZS0+
Y3Vyc29ySW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
c3R5bGUtPmN1cnNvckltYWdlKCktPnVybCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7
CisgICAgY2FzZSBDU1NfUFJPUF9DVVJTT1I6IHsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0
ID0gMDsKKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gMDsKKyAgICAgICAgQ3Vyc29yTGlzdCog
Y3Vyc29ycyA9IHN0eWxlLT5jdXJzb3JzKCk7CisgICAgICAgIGlmIChjdXJzb3JzICYmIGN1cnNv
cnMtPnNpemUoKSA+IDApIHsKKyAgICAgICAgICAgIGxpc3QgPSBuZXcgQ1NTVmFsdWVMaXN0Owor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGN1cnNvcnMtPnNpemUoKTsgKytp
KQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoKCpj
dXJzb3JzKVtpXS5jdXJzb3JJbWFnZS0+dXJsKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJ
KSk7CisgICAgICAgIH0KICAgICAgICAgc3dpdGNoIChzdHlsZS0+Y3Vyc29yKCkpIHsKICAgICAg
ICAgICAgIGNhc2UgQ1VSU09SX0FVVE86Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9DUk9TUzoKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ1JPU1NIQUlSKTsKKyAgICAgICAgICAgICAg
ICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NST1NTSEFJUik7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9ERUZBVUxUOgotICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ERUZBVUxU
KTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0RFRkFVTFQpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJT
T1JfUE9JTlRFUjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfUE9JTlRFUik7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9QT0lOVEVSKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgQ1VSU09SX01PVkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX01PVkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTU9WRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9FX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRV9SRVNJWkUpOworICAgICAgICAgICAg
ICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRV9SRVNJWkUpOworICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfTkVfUkVTSVpFOgot
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ORV9S
RVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfTkVfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgQ1VSU09SX05XX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfTldfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05XX1JFU0laRSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9OX1JFU0laRToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTl9SRVNJWkUpOworICAgICAg
ICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTl9SRVNJWkUp
OworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfU0VfUkVT
SVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9TRV9SRVNJWkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfU0VfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgQ1VSU09SX1NXX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1
ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NXX1JFU0laRSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9TX1JFU0laRToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU19SRVNJWkUpOwor
ICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU19S
RVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1Jf
V19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgQ1VSU09SX0VXX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRVdfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2
YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0VXX1JFU0laRSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9OU19SRVNJWkU6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05TX1JFU0la
RSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9OU19SRVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBD
VVJTT1JfTkVTV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX05FU1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05FU1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX05XU0VfUkVTSVpFOgotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OV1NFX1JFU0laRSk7
CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9O
V1NFX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENV
UlNPUl9DT0xfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9DT0xfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NPTF9SRVNJWkUpOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfUk9XX1JFU0laRToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUk9XX1JFU0laRSk7CisgICAg
ICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ST1dfUkVT
SVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1RF
WFQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1RFWFQpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfVEVYVCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENV
UlNPUl9XQUlUOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9XQUlUKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX1dBSVQpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBDVVJTT1JfSEVMUDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfSEVMUCk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9IRUxQKTsKICAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIEFTU0VSVCh2YWx1ZSk7Cisg
ICAgICAgIGlmIChsaXN0KSB7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQodmFsdWUpOworICAg
ICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgIH0KICAgICBjYXNlIENTU19QUk9QX0RJUkVDVElPTjoKICAgICAgICAgc3dpdGNoIChzdHls
ZS0+ZGlyZWN0aW9uKCkpIHsKICAgICAgICAgICAgIGNhc2UgTFRSOgpJbmRleDogV2ViQ29yZS9j
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9DU1NDdXJz
b3JJbWFnZVZhbHVlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLyoqCisgKiBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRE9NIGltcGxlbWVudGF0aW9uIGZvciBLREUuCisgKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz
MCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0NTU0N1cnNvckltYWdlVmFsdWU6OkNTU0N1cnNvckltYWdlVmFsdWUoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IEludFBvaW50JiBwLCBTdHlsZUJhc2UqIHN0eWxlKQorICAgIDogQ1NT
SW1hZ2VWYWx1ZSh1cmwsIHN0eWxlKQorICAgICwgbV9ob3RzcG90KHApCit7Cit9CisKK0NTU0N1
cnNvckltYWdlVmFsdWU6On5DU1NDdXJzb3JJbWFnZVZhbHVlKCkKK3sKK30KK30KSW5kZXg6IFdl
YkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9DU1ND
dXJzb3JJbWFnZVZhbHVlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRE9NIGltcGxlbWVudGF0aW9uIGZvciBLREUuCisgKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz
MCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKKyNpZm5kZWYgQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZV9ICisjZGVmaW5lIENTU0N1cnNvckltYWdlVmFsdWVfSAorCisjaW5jbHVk
ZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSA6IHB1YmxpYyBDU1NJbWFnZVZh
bHVlCit7CitwdWJsaWM6CisgICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZShjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgSW50UG9pbnQmLCBTdHlsZUJhc2UqKTsKKyAgICB2aXJ0dWFsIH5DU1NDdXJzb3JJ
bWFnZVZhbHVlKCk7CisKKyAgICBJbnRQb2ludCBob3RzcG90KCkgY29uc3QgeyByZXR1cm4gbV9o
b3RzcG90OyB9CisKK3Byb3RlY3RlZDoKKyAgICBJbnRQb2ludCBtX2hvdHNwb3Q7Cit9OworfSAv
LyBuYW1lc3BhY2UKKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAJKHJldmlzaW9uIDE2NTQ0KQor
KysgV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUs
NyBAQAogI2luY2x1ZGUgImNzc3BhcnNlci5oIgogCiAjaW5jbHVkZSAiQ1NTQm9yZGVySW1hZ2VW
YWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJ
bWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ2hhcnNldFJ1bGUuaCIKICNpbmNsdWRlICJDU1NJ
bXBvcnRSdWxlLmgiCkBAIC02OTQsMjYgKzY5NSw2MyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNl
IENTU19QUk9QX0NVUlNPUjoKKyAgICBjYXNlIENTU19QUk9QX0NVUlNPUjogewogICAgICAgICAv
LyBbPHVyaT4sXSogIFsgYXV0byB8IGNyb3NzaGFpciB8IGRlZmF1bHQgfCBwb2ludGVyIHwgcHJv
Z3Jlc3MgfCBtb3ZlIHwgZS1yZXNpemUgfCBuZS1yZXNpemUgfAogICAgICAgICAvLyBudy1yZXNp
emUgfCBuLXJlc2l6ZSB8IHNlLXJlc2l6ZSB8IHN3LXJlc2l6ZSB8IHMtcmVzaXplIHwgdy1yZXNp
emUgfCBldy1yZXNpemUgfCAKICAgICAgICAgLy8gbnMtcmVzaXplIHwgbmVzdy1yZXNpemUgfCBu
d3NlLXJlc2l6ZSB8IGNvbC1yZXNpemUgfCByb3ctcmVzaXplIHwgdGV4dCB8IHdhaXQgfCBoZWxw
IF0gXSB8IGluaGVyaXQKLSAgICAgICAgaWYgKCFzdHJpY3QgJiYgaWQgPT0gQ1NTX1ZBTF9IQU5E
KSB7IC8vIE1TSUUgNSBjb21wYXRpYmlsaXR5IDovCi0gICAgICAgICAgICBpZCA9IENTU19WQUxf
UE9JTlRFUjsKLSAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoaWQgPj0gQ1NTX1ZBTF9BVVRPICYmIGlkIDw9IENTU19WQUxfSEVMUCkKLSAgICAg
ICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKHZhbHVlLT51
bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7CisgICAgICAgIENTU1ZhbHVlTGlz
dCogbGlzdCA9IDA7CisgICAgICAgIHdoaWxlICh2YWx1ZSAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewogICAgICAgICAgICAgU3RyaW5nIHVyaSA9IHBhcnNl
VVJMKGRvbVN0cmluZyh2YWx1ZS0+c3RyaW5nKSk7CisgICAgICAgICAgICBJbnRQb2ludCBob3Rz
cG90OworICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAgICAg
IGlmICh2YWx1ZSAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
UikgeworICAgICAgICAgICAgICAgIGhvdHNwb3Quc2V0WCh2YWx1ZS0+ZlZhbHVlKTsKKyAgICAg
ICAgICAgICAgICB2YWx1ZSA9IHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgICAgIGlm
ICh2YWx1ZSAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikg
eworICAgICAgICAgICAgICAgICAgICBob3RzcG90LnNldFkodmFsdWUtPmZWYWx1ZSk7CisgICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGxpc3Q7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisjaWYgU1ZHX1NVUFBPUlQKKyAgICAgICAgICAgIGlmICh1cmkuc3RhcnRzV2l0aCgiIyIpKSB7
CisgICAgICAgICAgICAgICAgaWYgKCFsaXN0KQorICAgICAgICAgICAgICAgICAgICBsaXN0ID0g
bmV3IENTU1ZhbHVlTGlzdDsgCisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZSh1cmksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSk7CisgICAgICAg
ICAgICB9IGVsc2UKKyNlbmRpZgogICAgICAgICAgICAgaWYgKCF1cmkuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBuZXcgQ1NTSW1hZ2VWYWx1ZShTdHJpbmcoS1VS
TChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXByZWNhdGVkU3RyaW5nKCksIHVyaS5kZXByZWNh
dGVkU3RyaW5nKCkpLnVybCgpKSwgc3R5bGVFbGVtZW50KTsKLSAgICAgICAgICAgICAgICAvLyBG
SVhNRTogd2UgZG9uJ3Qgc3VwcG9ydCBmYWxsYmFjayBjdXJzb3JzIHlldCwgYnV0IGlnbm9yaW5n
IHRoZSByZW1haW5pbmcgdmFsdWVzCi0gICAgICAgICAgICAgICAgLy8gd2lsbCBhdCBsZWFzdCBs
ZXQgY29tcGxpYW50IGRlY2xhcmF0aW9ucyBwYXJzZS4KLSAgICAgICAgICAgICAgICBhZGRQcm9w
ZXJ0eShwcm9wSWQsIHBhcnNlZFZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgICAgIGlmICghbGlzdCkKKyAgICAgICAgICAgICAgICAg
ICAgbGlzdCA9IG5ldyBDU1NWYWx1ZUxpc3Q7IAorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChuZXcgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U3RyaW5nKEtVUkwoc3R5bGVFbGVtZW50LT5iYXNlVVJMKCkuZGVwcmVjYXRlZFN0cmluZygpLCB1
cmkuZGVwcmVjYXRlZFN0cmluZygpKS51cmwoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhvdHNwb3QsIHN0eWxlRWxlbWVudCkpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKHZhbHVlICYmICEodmFsdWUtPnVuaXQgPT0gVmFsdWU6Ok9wZXJhdG9yICYmIHZhbHVlLT5p
VmFsdWUgPT0gJywnKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB2YWx1ZSA9IHZhbHVlTGlzdC0+bmV4dCgpOyAvLyBjb21tYQorICAgICAgICB9CisgICAgICAg
IGlmIChsaXN0KSB7CisgICAgICAgICAgICBpZiAoIXZhbHVlKSB7IC8vIG5vIHZhbHVlIGFmdGVy
IHVybCBsaXN0IChNU0lFIDUgY29tcGF0aWJpbGl0eSkKKyAgICAgICAgICAgICAgICBpZiAobGlz
dC0+bGVuZ3RoKCkgPiAxKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgdmFsdWUtPmlkID09IENTU19WQUxfSEFORCkg
Ly8gTVNJRSA1IGNvbXBhdGliaWxpdHkgOi8KKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUE9JTlRFUikpOworICAgICAgICAgICAgZWxz
ZSBpZiAodmFsdWUgJiYgdmFsdWUtPmlkID49IENTU19WQUxfQVVUTyAmJiB2YWx1ZS0+aWQgPD0g
Q1NTX1ZBTF9IRUxQKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUodmFsdWUtPmlkKSk7CisgICAgICAgICAgICB2YWx1ZUxpc3QtPm5leHQoKTsKKyAg
ICAgICAgICAgIHBhcnNlZFZhbHVlID0gbGlzdDsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CisgICAgICAgIGlmICghc3RyaWN0ICYmIHZhbHVlLT5pZCA9PSBDU1NfVkFMX0hBTkQpIHsg
Ly8gTVNJRSA1IGNvbXBhdGliaWxpdHkgOi8KKyAgICAgICAgICAgIGlkID0gQ1NTX1ZBTF9QT0lO
VEVSOworICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNl
IGlmICh2YWx1ZS0+aWQgPj0gQ1NTX1ZBTF9BVVRPICYmIHZhbHVlLT5pZCA8PSBDU1NfVkFMX0hF
TFApCisgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsK
KyAgICB9CiAKICAgICBjYXNlIENTU19QUk9QX0JBQ0tHUk9VTkRfQVRUQUNITUVOVDoKICAgICBj
YXNlIENTU19QUk9QX19XRUJLSVRfQkFDS0dST1VORF9DTElQOgpJbmRleDogV2ViQ29yZS9jc3Mv
Y3Nzc3R5bGVzZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3Nzc3R5bGVz
ZWxlY3Rvci5jcHAJKHJldmlzaW9uIDE2NTQ0KQorKysgV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxl
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjc3Nz
dHlsZXNlbGVjdG9yLmgiCiAKICNpbmNsdWRlICJDU1NCb3JkZXJJbWFnZVZhbHVlLmgiCisjaW5j
bHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NJbXBvcnRSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTTWVkaWFSdWxlLmgiCkBA
IC0yNDEwLDIzICsyNDExLDQxIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eShpbnQKICAgICBjYXNlIENTU19QUk9QX0NVUlNPUjoKICAgICAgICAgaWYgKGlzSW5oZXJpdCkg
ewogICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcihwYXJlbnRTdHlsZS0+Y3Vyc29yKCkpOwot
ICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvckltYWdlKHBhcmVudFN0eWxlLT5jdXJzb3JJbWFn
ZSgpKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3JMaXN0KHBhcmVudFN0eWxlLT5jdXJz
b3JzKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIHN0eWxlLT5j
bGVhckN1cnNvckxpc3QoKTsKICAgICAgICAgaWYgKGlzSW5pdGlhbCkgewogICAgICAgICAgICAg
c3R5bGUtPnNldEN1cnNvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEN1cnNvcigpKTsKLSAgICAgICAg
ICAgIHN0eWxlLT5zZXRDdXJzb3JJbWFnZSgwKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHsKKyAgICAgICAgaWYgKHZhbHVlLT5p
c1ZhbHVlTGlzdCgpKSB7CisgICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNf
Y2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAgICAgICAgICBpbnQgbGVuID0gbGlzdC0+
bGVuZ3RoKCk7CisgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKENVUlNPUl9BVVRPKTsKKyAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAg
ICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW0oaSk7CisgICAgICAgICAgICAgICAgaWYgKCFp
dGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPihpdGVtKTsKKyAgICAgICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVl
LT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19VUkkpIHsKKyNpZiBTVkdfU1VQUE9SVAorICAgICAgICAgICAgICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuZmluZCgiIyIpID09IDApCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+YWRkU1ZHQ3Vyc29yKHByaW1pdGl2ZVZhbHVl
LT5nZXRTdHJpbmdWYWx1ZSgpLnN1YnN0cmluZygxKSk7CisgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NDdXJzb3JJbWFnZVZhbHVlKiBpbWFnZSA9IHN0YXRpY19jYXN0PENTU0N1cnNvckltYWdl
VmFsdWUqPihwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+
YWRkQ3Vyc29yKGltYWdlLT5pbWFnZShlbGVtZW50LT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKSks
IGltYWdlLT5ob3RzcG90KCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCisgICAg
ICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IoKEVDdXJzb3IpKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpIC0gQ1NTX1ZBTF9BVVRPKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUpIHsKICAgICAgICAgICAgIGludCB0eXBlID0gcHJpbWl0
aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKICAgICAgICAgICAgIGlmICh0eXBlID09IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpIHsKICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vy
c29yKChFQ3Vyc29yKShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENTU19WQUxfQVVUTykp
OwotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3JJbWFnZSgwKTsKLSAgICAgICAgICAg
IH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewotICAgICAg
ICAgICAgICAgIENTU0ltYWdlVmFsdWUqIGltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1
ZSo+KHByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKENV
UlNPUl9BVVRPKTsKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29ySW1hZ2UoaW1hZ2Ut
PmltYWdlKGVsZW1lbnQtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdD
dXJzb3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJz
b3JFbGVtZW50LmNwcAkocmV2aXNpb24gMTY1NDQpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdD
dXJzb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1
ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogCi11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHQ3Vyc29yRWxlbWVudDo6U1ZH
Q3Vyc29yRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCAqZG9j
KQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2MpCkBAIC04MCw2ICs4MCw4IEBAIHZvaWQg
U1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICB9CiB9CiAKK30KKwogLy8g
dmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKSW5kZXg6IFdlYkNvcmUvbWFu
dWFsLXRlc3RzL2NzczMtY3Vyc29yLXRlc3QyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9t
YW51YWwtdGVzdHMvY3NzMy1jdXJzb3ItdGVzdDIuaHRtbAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvbWFudWFsLXRlc3RzL2NzczMtY3Vyc29yLXRlc3QyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAx
Ly9FTiIKKyAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj4KKzxodG1s
PgorPGhlYWQ+PHRpdGxlPkN1c3RvbSBjdXJzb3IgdGVzdHM8L3RpdGxlPjwvaGVhZD4KKzxib2R5
PgorPHA+PGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNn
aT9pZD04OTkxIj5CdWcgLjk5MTwvYT46IFJFR1JFU1NJT046IG1pc3Npbmcgb3IgYnJva2VuIENT
UyBjdXN0b20gY3Vyc29ycyBhcmUgZGlzcGxheWVkIGFzIGEgbWlzc2luZyBpbWFnZSBpY29uLjwv
cD4KKzxwPk1vdmUgdGhlIGN1cnNvciBvdmVyIHRoZSBibHVlIGJveCAtIGl0IHNob3VsZCBub3Qg
dHVybiBpbnRvIGEgbWlzc2luZyBpbWFnZSBpY29uLCBhbmQgc2hvdWxkIHR1cm4gaW50byBhbiBJ
LWJlYW0gb3ZlciB0ZXh0LjwvcD4KKworPGRpdiBzdHlsZT0id2lkdGg6MTAwcHg7aGVpZ2h0OjUw
cHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwobm9uZXhpc3RlbnQucG5n
KSwgYXV0bzsiPjxzcGFuIHN0eWxlPSJjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIGF1dG87
Ij5zb21lIHRleHQ8L3NwYW4+PC9kaXY+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBweDtoZWlnaHQ6
NTBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChub25leGlzdGVudC5w
bmcpOyI+PC9kaXY+CisKKzxocj4KKzxwPjxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVuZGFy
d2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAwMSI+QnVnIDYwMDE8L2E+OiBXZWJLaXQgZG9lcyBu
b3QgaGFuZGxlIGZhbGxiYWNrIGN1c3RvbSBjdXJzb3JzPC9wPgorPHA+PGEgaHJlZj0iaHR0cDov
L2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD05MDEzIj5CdWcgOTAxMzwv
YT46IExldCBjb3JyZWN0IENTUyBjdXN0b20gY3Vyc29yIGRlY2xhcmF0aW9ucyBwYXJzZTwvcD4K
KzxwPkluIGVhY2ggb2YgdGhlIGJsdWUgYm94ZXMgYmVsb3csIHRoZSBjdXJzb3Igc2hvdWxkIGJl
Y29tZSBhIGhlbHAgY3Vyc29yIChxdWVzdGlvbiBtYXJrKS48L3A+Cis8dGFibGU+PHRyPgorIDx0
ZD48ZGl2IHN0eWxlPSJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjps
aWdodGJsdWU7IGN1cnNvcjp1cmwocmVzb3VyY2VzL2hlbHBDdXJzb3IudGlmZiksIHRleHQ7Ij48
L2Rpdj48L3RkPiA8IS0tIFZhbGlkLCBubyBmYWxsYmFjayBuZWVkZWQgLS0+CisgPHRkPjxkaXYg
c3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1
ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKTsnPjwvZGl2PjwvdGQ+IDwh
LS0gSW52YWxpZCwgYnV0IGFsbG93ZWQgYnkgV2luSUUgLS0+CisgPHRkPjxkaXYgc3R5bGU9J3dp
ZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29y
OnVybChub25leGlzdGVudC5wbmcpLCBoZWxwOyc+PC9kaXY+PC90ZD4KKyA8dGQ+PGRpdiBzdHls
ZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOyBj
dXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIHVybChjdXN0b20tY3Vyc29ycy5odG1sKSwgdXJs
KHVua25vd24tc2NoZW1lOmN1c3RvbS1jdXJzb3JzLmh0bWwpLCB1cmwocmVzb3VyY2VzL2hlbHBD
dXJzb3IudGlmZiksIHRleHQ7Jz48L2Rpdj48L3RkPgorIDx0ZD48ZGl2IHN0eWxlPSd3aWR0aDox
MDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwo
bm9uZXhpc3RlbnQucG5nKSwgdXJsKCJyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmIiksIHRleHQ7
Jz48L2Rpdj48L3RkPgorIDx0ZD48ZGl2IHN0eWxlPSd3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7
YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwocmVzb3VyY2VzL2hlbHBDdXJz
b3IudGlmZikgMSAxLCB0ZXh0Oyc+PC9kaXY+PC90ZD4gPCEtLSBDU1MzIGhvdCBzcG90IC0gdmFs
aWQsIG5vIGZhbGxiYWNrIG5lZWRlZCAtLT4KKzwvdHI+Cis8L3RhYmxlPgorPHA+SW4gZWFjaCBv
ZiB0aGUgYmx1ZSBib3hlcyBiZWxvdywgdGhlIGN1cnNvciBzaG91bGQgcmVtYWluIHRoZSBkZWZh
dWx0IGN1cnNvciwgc2luY2UgYWxsIGN1cnNvciBkZWZpbml0aW9ucyBhcmUgaW52YWxpZC48L3A+
Cis8dGFibGU+PHRyPgorPHRkPjxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDti
YWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMvaGVscEN1cnNv
ci50aWZmKSAxIDEgdGV4dDsnPjwvZGl2PjwvdGQ+IDwhLS0gQ1NTMyBob3Qgc3BvdCAtIGludmFs
aWQsIHNob3VsZCBoYXZlIGNvbW1hIGFmdGVyIGhvdHNwb3QgY29vcmRzIC0tPgorPHRkPjxkaXYg
c3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1
ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKSAxLCB0ZXh0Oyc+PC9kaXY+
PC90ZD4gPCEtLSBDU1MzIGhvdCBzcG90IC0gaW52YWxpZCwgc2hvdWxkIGhhdmUgdHdvIGhvdHNw
b3QgY29vcmRzIC0tPgorPC90cj4KKzwvdGFibGU+CisKKzxwPjwvcD4KKzxwPjxzcGFuIHN0eWxl
PSdiYWNrZ3JvdW5kLWNvbG9yOmdyYXk7IGN1cnNvcjp1cmwobm9uZXhpc3RlbnQucG5nKSwgdXJs
KCJyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmIik7Jz5TaG91bGQgc2hvdyBhbiBJLWJlYW0gY3Vy
c29yLjwvc3Bhbj48L3A+IDwhLS0gQW4gaW52YWxpZCBkZWNsYXJhdGlvbiwgZXZlbiBieSBXaW5J
RSBzdGFuZGFyZHMgLS0+Cis8cD5UaGUgZm9sbG93aW5nIHRlc3RjYXNlcyB0ZXN0IGluaGVyaXRh
bmNlIG9mIHRoZSBjdXJzb3IgcHJvcGVydHkuIFRoZSBsZWZ0IG9uZSBzaG91bGQgaGF2ZSB0aGUg
aGVscCBjdXJzb3IgZm9yIGJvdGggZGl2cyAobm9ybWFsIGluaGVyaXRhbmNlKS4gVGhlIHJpZ2h0
IG9uZSBzaG91bGQgaGF2ZSBoZWxwIGN1cnNvciBmb3IgYmlnIGRpdiwgdGV4dCBjdXJzb3IgZm9y
IHNtYWxsIGRpdiAoaW5uZXIgZGl2IGhhcyBjdXJzb3IgcHJvcGVydHksIHNob3VsZCBub3QgaW5o
ZXJpdCkuPC9wPgorPHRhYmxlPgorPHRyPjx0ZD4KKzxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hl
aWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJj
ZXMvaGVscEN1cnNvci50aWZmKSwgdGV4dDsnPjxkaXYgc3R5bGU9IndpZHRoOjUwcHg7aGVpZ2h0
OjUwcHg7YmFja2dyb3VuZC1jb2xvcjpncmF5OyI+PC9kaXY+PC9kaXY+Cis8L3RkPjx0ZD4KKzxk
aXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0
Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKSwgdGV4dDsnPjxkaXYg
c3R5bGU9IndpZHRoOjUwcHg7aGVpZ2h0OjUwcHg7YmFja2dyb3VuZC1jb2xvcjpncmF5O2N1cnNv
cjp0ZXh0Ij48L2Rpdj48L2Rpdj4KKzwvdGQ+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBXZWJDb3JlL21hbnVhbC10ZXN0cy9jdXJzb3JmYWxsYmFjay54bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9tYW51YWwtdGVzdHMvY3Vyc29yZmFsbGJhY2sueG1sCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9tYW51YWwtdGVzdHMvY3Vyc29yZmFsbGJhY2sueG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxodG1sIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRpdGxlPlN0cmljdCBt
b2RlICsgU1ZHIGN1cnNvciBmYWxsYmFjayB0ZXN0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGVzdCBzdmcgY3Vyc29yIGZhbGxiYWNrLCBzaG91bGQgc2hvdyBoZWxwIGN1cnNvcjo8L3A+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgCisgICAgIHhtbG5zOnhs
aW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjQw
MCI+Cis8ZGVmcz4KKyAgICA8Y3Vyc29yIGlkPSJtYWdnbGFzcyIgeGxpbms6aHJlZj0icmVzb3Vy
Y2VzL2hlbHBjdXJzb3IudGlmZiIgeD0iMTAiIHk9IjExIi8+Cis8L2RlZnM+Cis8ZyBjdXJzb3I9
InVybChub25leGlzdGVudC5wbmcpLCB1cmwoY3VzdG9tLWN1cnNvcnMuaHRtbCksIHVybCh1bmtu
b3duLXNjaGVtZTpjdXN0b20tY3Vyc29ycy5odG1sKSwgdXJsKCNub25leGlzdGFudCksIHVybCgj
bWFnZ2xhc3MpLCB0ZXh0Ij4KKyAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdo
dD0iNTAiIGZpbGw9ImJsdWUiIC8+Cis8L2c+Cis8dGV4dCB5PSI2MiI+VGVzdCBzdmcgY3Vyc29y
IGZhbGxiYWNrIHdpdGggaG90c3BvdCwgc2hvdWxkIHNob3cgaGVscCBjdXJzb3I6PC90ZXh0Pgor
PGcgY3Vyc29yPSJ1cmwoI21hZ2dsYXNzKSAxIDEsIHRleHQiPgorICAgIDxyZWN0IHg9IjAiIHk9
IjcwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9InJlZCIgLz4KKzwvZz4KKzx0ZXh0IHk9
IjEzMiI+VGVzdCBzdmcgY3Vyc29yIGZhbGxiYWNrIHdpdGggaWxsZWdhbCBob3RzcG90LCBzaG91
bGQgc2hvdyBkZWZhdWx0IGN1cnNvcjo8L3RleHQ+Cis8ZyBjdXJzb3I9InVybCgjbWFnZ2xhc3Mp
IDEsIHRleHQiPgorICAgIDxyZWN0IHg9IjAiIHk9IjE0MCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUw
IiBmaWxsPSJyZWQiIC8+Cis8L2c+Cis8L3N2Zz4KKzxwPlRlc3RpbmcgY3Vyc29yIGZhbGxiYWNr
IGluIHN0cmljdCBtb2RlLCBzaG91bGQgc2hvdyBtYWduaWZ5IGdsYXNzOjwvcD4KKzxkaXYgc3R5
bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsg
Y3Vyc29yOnVybChub25leGlzdGVudC5wbmcpLCB1cmwoInJlc291cmNlcy9tYWduaWZ5LnBuZyIp
LCB0ZXh0Oyc+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2
aXNpb24gMTY1NDQpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDgsMTAgKzQ4LDIwIEBACiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgImNzc3N0eWxlc2VsZWN0b3IuaCIKIAorI2lmIFNWR19TVVBQT1JUCisjaW5jbHVk
ZSAiWExpbmtOYW1lcy5oIgorI2luY2x1ZGUgIlNWR05hbWVzLmgiCisjaW5jbHVkZSAiU1ZHQ3Vy
c29yRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEV2ZW50TmFtZXM7CiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOworI2lmIFNWR19TVVBQT1JUCit1c2luZyBuYW1lc3BhY2UgU1ZHTmFtZXM7
CisjZW5kaWYKIAogc3RydWN0IFNjaGVkdWxlZEV2ZW50IHsKICAgICBSZWZQdHI8RXZlbnQ+IG1f
ZXZlbnQ7CkBAIC02NDYsMTEgKzY1NiwzMCBAQCBzdGF0aWMgQ3Vyc29yIHNlbGVjdEN1cnNvcihj
b25zdCBNb3VzZUV2CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUgPyBub2RlLT5y
ZW5kZXJlcigpIDogMDsKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlciA/IHJlbmRl
cmVyLT5zdHlsZSgpIDogMDsKIAotICAgIGlmIChzdHlsZSAmJiBzdHlsZS0+Y3Vyc29ySW1hZ2Uo
KSAmJiAhc3R5bGUtPmN1cnNvckltYWdlKCktPmltYWdlKCktPmlzTnVsbCgpKQotICAgICAgICBp
ZiAoIXN0eWxlLT5jdXJzb3JJbWFnZSgpLT5pc0Vycm9ySW1hZ2UoKSkKLSAgICAgICAgICAgIHJl
dHVybiBzdHlsZS0+Y3Vyc29ySW1hZ2UoKS0+aW1hZ2UoKTsKLSAgICAgICAgZWxzZSAKLSAgICAg
ICAgICAgIHN0eWxlID0gMDsgLy8gRmFsbGJhY2sgdG8gQ1VSU09SX0FVVE8KKyAgICBpZiAoc3R5
bGUgJiYgc3R5bGUtPmN1cnNvcnMoKSkgeworICAgICAgICBjb25zdCBDdXJzb3JMaXN0KiBjdXJz
b3JzID0gc3R5bGUtPmN1cnNvcnMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGN1cnNvcnMtPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBDYWNoZWRJbWFnZSogY2ltYWdl
ID0gKCpjdXJzb3JzKVtpXS5jdXJzb3JJbWFnZTsKKyAgICAgICAgICAgIEludFBvaW50IGhvdFNw
b3QgPSAoKmN1cnNvcnMpW2ldLmhvdFNwb3Q7CisjaWYgU1ZHX1NVUFBPUlQKKyAgICAgICAgICAg
IGlmICghY2ltYWdlKSB7CisgICAgICAgICAgICAgICAgRWxlbWVudCogZSA9IG5vZGUtPmRvY3Vt
ZW50KCktPmdldEVsZW1lbnRCeUlkKCgqY3Vyc29ycylbaV0uY3Vyc29yRnJhZ21lbnRJZCk7Cisg
ICAgICAgICAgICAgICAgaWYgKGUgJiYgZS0+aGFzVGFnTmFtZShjdXJzb3JUYWcpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGhvdFNwb3Quc2V0WChpbnQoc3RhdGljX2Nhc3Q8U1ZHQ3Vyc29yRWxl
bWVudCo+KGUpLT54KCktPnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgaG90U3BvdC5z
ZXRZKGludChzdGF0aWNfY2FzdDxTVkdDdXJzb3JFbGVtZW50Kj4oZSktPnkoKS0+dmFsdWUoKSkp
OworICAgICAgICAgICAgICAgICAgICBjaW1hZ2UgPSBzdGF0aWNfY2FzdDxTVkdDdXJzb3JFbGVt
ZW50Kj4oZSktPmNhY2hlZEltYWdlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorI2VuZGlmCisgICAgICAgICAgICBpZiAoIWNpbWFnZSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIGlmIChjaW1hZ2UtPmltYWdlKCktPmlzTnVsbCgpKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFjaW1hZ2UtPmlzRXJyb3JJbWFnZSgp
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEN1cnNvcihjaW1hZ2UtPmltYWdlKCksIGhvdFNw
b3QpOworfQorICAgICAgICB9CisgICAgfQogCiAgICAgc3dpdGNoIChzdHlsZSA/IHN0eWxlLT5j
dXJzb3IoKSA6IENVUlNPUl9BVVRPKSB7CiAgICAgICAgIGNhc2UgQ1VSU09SX0FVVE86IHsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9DdXJzb3IuaAkocmV2aXNpb24gMTY1NDQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0N1cnNv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIE5TQ3Vyc29yOwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgSW1hZ2U7CisgICAgY2xhc3MgSW50UG9pbnQ7
CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAgdHlwZWRlZiBIQ1VSU09SIFBsYXRmb3JtQ3Vyc29y
OwpAQCAtNjksNyArNzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAg
eyB9CiAKLSAgICAgICAgQ3Vyc29yKEltYWdlKik7CisgICAgICAgIEN1cnNvcihJbWFnZSosIGNv
bnN0IEludFBvaW50JiBob3RzcG90KTsKICAgICAgICAgQ3Vyc29yKGNvbnN0IEN1cnNvciYpOwog
ICAgICAgICB+Q3Vyc29yKCk7CiAgICAgICAgIEN1cnNvciYgb3BlcmF0b3I9KGNvbnN0IEN1cnNv
ciYpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0N1cnNvck1hYy5tbQkocmV2aXNpb24gMTY1NDQpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiRm91bmRh
dGlvbkV4dHJhcy5oIgogI2ltcG9ydCAiSW1hZ2UuaCIKKyNpbXBvcnQgIkludFBvaW50LmgiCiAK
IEBpbnRlcmZhY2UgV2ViQ29yZUN1cnNvckJ1bmRsZSA6IE5TT2JqZWN0IHsgfQogQGVuZApAQCAt
NDEsMTQgKzQyLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFNpbXBsZSBOU0N1cnNvciBj
YWxscyBzaG91bGRuJ3QgbmVlZCBwcm90ZWN0aW9uLAogLy8gYnV0IGNyZWF0aW5nIGEgY3Vyc29y
IHdpdGggYSBiYWQgaW1hZ2UgbWlnaHQgdGhyb3cuCiAKLXN0YXRpYyBOU0N1cnNvciogY3JlYXRl
Q3VzdG9tQ3Vyc29yKEltYWdlKiBpbWFnZSkKK3N0YXRpYyBOU0N1cnNvciogY3JlYXRlQ3VzdG9t
Q3Vyc29yKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGhvdHNwb3QpCiB7CiAgICAgLy8g
RklYTUU6IFRoZSBjdXJzb3Igd29uJ3QgYW5pbWF0ZS4gIE5vdCBzdXJlIGlmIHRoYXQncyBhIGJp
ZyBkZWFsLgogICAgIE5TSW1hZ2UqIGltZyA9IGltYWdlLT5nZXROU0ltYWdlKCk7CiAgICAgaWYg
KCFpbWcpCiAgICAgICAgIHJldHVybiAwOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKLSAgICByZXR1cm4gW1tOU0N1cnNvciBhbGxvY10gaW5pdFdpdGhJbWFnZTppbWcgaG90U3Bv
dDpOU1plcm9Qb2ludF07CisgICAgcmV0dXJuIFtbTlNDdXJzb3IgYWxsb2NdIGluaXRXaXRoSW1h
Z2U6aW1nIGhvdFNwb3Q6aG90c3BvdF07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
ICAgICByZXR1cm4gMDsKIH0KQEAgLTc0LDggKzc1LDggQEAgc3RhdGljIE5TQ3Vyc29yKiBsZWFr
TmFtZWRDdXJzb3IoY29uc3QgYwogICAgIHJldHVybiAwOwogfQogCi1DdXJzb3I6OkN1cnNvcihJ
bWFnZSogaW1hZ2UpCi0gICAgOiBtX2ltcGwoSGFyZFJldGFpbldpdGhOU1JlbGVhc2UoY3JlYXRl
Q3VzdG9tQ3Vyc29yKGltYWdlKSkpCitDdXJzb3I6OkN1cnNvcihJbWFnZSogaW1hZ2UsIGNvbnN0
IEludFBvaW50JiBob3RzcG90KQorICAgIDogbV9pbXBsKEhhcmRSZXRhaW5XaXRoTlNSZWxlYXNl
KGNyZWF0ZUN1c3RvbUN1cnNvcihpbWFnZSwgaG90c3BvdCkpKQogewogfQogCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL3F0L0N1cnNvclF0LmNwcAkocmV2aXNpb24gMTY1NDQpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L3F0L0N1cnNvclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBDdXJzb3I6
On5DdXJzb3IoKQogewogfQogCi1DdXJzb3I6OkN1cnNvcihJbWFnZSopCitDdXJzb3I6OkN1cnNv
cihJbWFnZSosIGNvbnN0IEludFBvaW50JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gMTY1NDQpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw3ICs1
MTAsNyBAQCBib29sIFN0eWxlQ1NTM0luaGVyaXRlZERhdGE6OnNoYWRvd0RhdGFFCiBTdHlsZUlu
aGVyaXRlZERhdGE6OlN0eWxlSW5oZXJpdGVkRGF0YSgpCiAgICAgOiBpbmRlbnQoUmVuZGVyU3R5
bGU6OmluaXRpYWxUZXh0SW5kZW50KCkpLCBsaW5lX2hlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlh
bExpbmVIZWlnaHQoKSksIAogICAgICAgc3R5bGVfaW1hZ2UoUmVuZGVyU3R5bGU6OmluaXRpYWxM
aXN0U3R5bGVJbWFnZSgpKSwKLSAgICAgIGN1cnNvcl9pbWFnZSgwKSwgY29sb3IoUmVuZGVyU3R5
bGU6OmluaXRpYWxDb2xvcigpKSwgCisgICAgICBjb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbENv
bG9yKCkpLCAKICAgICAgIGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcoUmVuZGVyU3R5bGU6Omlu
aXRpYWxIb3Jpem9udGFsQm9yZGVyU3BhY2luZygpKSwgCiAgICAgICB2ZXJ0aWNhbF9ib3JkZXJf
c3BhY2luZyhSZW5kZXJTdHlsZTo6aW5pdGlhbFZlcnRpY2FsQm9yZGVyU3BhY2luZygpKSwKICAg
ICAgIHdpZG93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbFdpZG93cygpKSwgb3JwaGFucyhSZW5kZXJT
dHlsZTo6aW5pdGlhbE9ycGhhbnMoKSksCkBAIC01MjUsOCArNTI1LDggQEAgU3R5bGVJbmhlcml0
ZWREYXRhOjp+U3R5bGVJbmhlcml0ZWREYXRhKAogU3R5bGVJbmhlcml0ZWREYXRhOjpTdHlsZUlu
aGVyaXRlZERhdGEoY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvICkKICAgICA6IFNoYXJlZDxT
dHlsZUluaGVyaXRlZERhdGE+KCksCiAgICAgICBpbmRlbnQoIG8uaW5kZW50ICksIGxpbmVfaGVp
Z2h0KCBvLmxpbmVfaGVpZ2h0ICksIHN0eWxlX2ltYWdlKCBvLnN0eWxlX2ltYWdlICksCi0gICAg
ICBjdXJzb3JfaW1hZ2UoIG8uY3Vyc29yX2ltYWdlICksIGZvbnQoIG8uZm9udCApLAotICAgICAg
Y29sb3IoIG8uY29sb3IgKSwKKyAgICAgIGN1cnNvckRhdGEoby5jdXJzb3JEYXRhKSwKKyAgICAg
IGZvbnQoIG8uZm9udCApLCBjb2xvciggby5jb2xvciApLAogICAgICAgaG9yaXpvbnRhbF9ib3Jk
ZXJfc3BhY2luZyggby5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nICksCiAgICAgICB2ZXJ0aWNh
bF9ib3JkZXJfc3BhY2luZyggby52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyApLAogICAgICAgd2lk
b3dzKG8ud2lkb3dzKSwgb3JwaGFucyhvLm9ycGhhbnMpLCBwYWdlX2JyZWFrX2luc2lkZShvLnBh
Z2VfYnJlYWtfaW5zaWRlKQpAQCAtNTM5LDcgKzUzOSw3IEBAIGJvb2wgU3R5bGVJbmhlcml0ZWRE
YXRhOjpvcGVyYXRvcj09KGNvbnMKICAgICAgICAgaW5kZW50ID09IG8uaW5kZW50ICYmCiAgICAg
ICAgIGxpbmVfaGVpZ2h0ID09IG8ubGluZV9oZWlnaHQgJiYKICAgICAgICAgc3R5bGVfaW1hZ2Ug
PT0gby5zdHlsZV9pbWFnZSAmJgotICAgICAgICBjdXJzb3JfaW1hZ2UgPT0gby5jdXJzb3JfaW1h
Z2UgJiYKKyAgICAgICAgY3Vyc29yRGF0YSAgPT0gby5jdXJzb3JEYXRhICYmCiAgICAgICAgIGZv
bnQgPT0gby5mb250ICYmCiAgICAgICAgIGNvbG9yID09IG8uY29sb3IgJiYKICAgICAgICAgaG9y
aXpvbnRhbF9ib3JkZXJfc3BhY2luZyA9PSBvLmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcgJiYK
QEAgLTgyNyw3ICs4MjcsNyBAQCBSZW5kZXJTdHlsZTo6RGlmZiBSZW5kZXJTdHlsZTo6ZGlmZigg
Y29uCiAgICAgICAgICEoaW5oZXJpdGVkLT5pbmRlbnQgPT0gb3RoZXItPmluaGVyaXRlZC0+aW5k
ZW50KSB8fAogICAgICAgICAhKGluaGVyaXRlZC0+bGluZV9oZWlnaHQgPT0gb3RoZXItPmluaGVy
aXRlZC0+bGluZV9oZWlnaHQpIHx8CiAgICAgICAgICEoaW5oZXJpdGVkLT5zdHlsZV9pbWFnZSA9
PSBvdGhlci0+aW5oZXJpdGVkLT5zdHlsZV9pbWFnZSkgfHwKLSAgICAgICAgIShpbmhlcml0ZWQt
PmN1cnNvcl9pbWFnZSA9PSBvdGhlci0+aW5oZXJpdGVkLT5jdXJzb3JfaW1hZ2UpIHx8CisgICAg
ICAgICEoaW5oZXJpdGVkLT5jdXJzb3JEYXRhICA9PSBvdGhlci0+aW5oZXJpdGVkLT5jdXJzb3JE
YXRhKSB8fAogICAgICAgICAhKGluaGVyaXRlZC0+Zm9udCA9PSBvdGhlci0+aW5oZXJpdGVkLT5m
b250KSB8fAogICAgICAgICAhKGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyA9
PSBvdGhlci0+aW5oZXJpdGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKSB8fAogICAgICAg
ICAhKGluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcgPT0gb3RoZXItPmluaGVyaXRl
ZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcpIHx8CkBAIC05ODYsNiArOTg2LDM1IEBAIHZvaWQg
UmVuZGVyU3R5bGU6OnNldENsaXAoIExlbmd0aCB0b3AsIEwKICAgICBkYXRhLT5jbGlwLmxlZnQg
PSBsZWZ0OwogfQogCit2b2lkIFJlbmRlclN0eWxlOjphZGRDdXJzb3IoQ2FjaGVkSW1hZ2UqIGlt
YWdlLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCkKK3sKKyAgICBDdXJzb3JEYXRhIGRhdGE7Cisg
ICAgZGF0YS5jdXJzb3JJbWFnZSA9IGltYWdlOworICAgIGRhdGEuaG90U3BvdCA9IGhvdFNwb3Q7
CisgICAgaWYgKCFpbmhlcml0ZWQuYWNjZXNzKCktPmN1cnNvckRhdGEpCisgICAgICAgIGluaGVy
aXRlZC5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSA9IG5ldyBDdXJzb3JMaXN0OworICAgIGluaGVyaXRl
ZC5hY2Nlc3MoKS0+Y3Vyc29yRGF0YS0+YXBwZW5kKGRhdGEpOworfQorCit2b2lkIFJlbmRlclN0
eWxlOjphZGRTVkdDdXJzb3IoY29uc3QgU3RyaW5nJiBmcmFnbWVudElkKQoreworICAgIEN1cnNv
ckRhdGEgZGF0YTsKKyAgICBkYXRhLmN1cnNvckZyYWdtZW50SWQgPSBmcmFnbWVudElkOworICAg
IGlmICghaW5oZXJpdGVkLmFjY2VzcygpLT5jdXJzb3JEYXRhKQorICAgICAgICBpbmhlcml0ZWQu
YWNjZXNzKCktPmN1cnNvckRhdGEgPSBuZXcgQ3Vyc29yTGlzdDsKKyAgICBpbmhlcml0ZWQuYWNj
ZXNzKCktPmN1cnNvckRhdGEtPmFwcGVuZChkYXRhKTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6
c2V0Q3Vyc29yTGlzdChQYXNzUmVmUHRyPEN1cnNvckxpc3Q+IG90aGVyKQoreworICAgIGluaGVy
aXRlZC5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSA9IG90aGVyOworfQorCit2b2lkIFJlbmRlclN0eWxl
OjpjbGVhckN1cnNvckxpc3QoKQoreworICAgIGluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vyc29yRGF0
YSA9IG5ldyBDdXJzb3JMaXN0OworfQorCiBib29sIFJlbmRlclN0eWxlOjpjb250ZW50RGF0YUVx
dWl2YWxlbnQoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0CiB7CiAgICAgQ29u
dGVudERhdGEqIGMxID0gY29udGVudDsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclN0
eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5bGUuaAkocmV2
aXNpb24gMTY1NDQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTdHlsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAgKi8KIAogI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5j
bHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkRhdGFSZWYuaCIKICNpbmNs
dWRlICJGb250LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgpAQCAtNjIsNiArNjMsOCBA
QCB1c2luZyBzdGQ6Om1heDsKIGNsYXNzIENTU1N0eWxlU2VsZWN0b3I7CiBjbGFzcyBDYWNoZWRJ
bWFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNlOworc3RydWN0IEN1cnNvckRhdGE7CitjbGFzcyBD
dXJzb3JMaXN0OwogY2xhc3MgUmVuZGVyQXJlbmE7CiBjbGFzcyBTaGFkb3dWYWx1ZTsKIGNsYXNz
IFN0cmluZ0ltcGw7CkBAIC04MjQsNyArODI3LDcgQEAgcHVibGljOgogICAgIExlbmd0aCBsaW5l
X2hlaWdodDsKIAogICAgIENhY2hlZEltYWdlICpzdHlsZV9pbWFnZTsKLSAgICBDYWNoZWRJbWFn
ZSAqY3Vyc29yX2ltYWdlOworICAgIFJlZlB0cjxDdXJzb3JMaXN0PiBjdXJzb3JEYXRhOwogCiAg
ICAgRm9udCBmb250OwogICAgIENvbG9yIGNvbG9yOwpAQCAtODY4LDYgKzg3MSwyOSBAQCBlbnVt
IEVDdXJzb3IgewogICAgIENVUlNPUl9DT0xfUkVTSVpFLCBDVVJTT1JfUk9XX1JFU0laRSwgQ1VS
U09SX1RFWFQsIENVUlNPUl9XQUlULCBDVVJTT1JfSEVMUAogfTsKIAorc3RydWN0IEN1cnNvckRh
dGEgeworICAgIEN1cnNvckRhdGEoKQorICAgICAgICA6IGN1cnNvckltYWdlKDApCisgICAge30K
KyAgICAKKyAgICBJbnRQb2ludCBob3RTcG90OyAvLyBmb3IgQ1NTMyBzdXBwb3J0CisgICAgQ2Fj
aGVkSW1hZ2UqIGN1cnNvckltYWdlOyAvLyB3ZWFrIHBvaW50ZXIsIHRoZSBDU1NWYWx1ZUltYWdl
IHRha2VzIGNhcmUgb2YgZGVsZXRpbmcgY3Vyc29ySW1hZ2UKKyAgICBTdHJpbmcgY3Vyc29yRnJh
Z21lbnRJZDsgLy8gb25seSB1c2VkIGZvciBTVkdDdXJzb3JFbGVtZW50LCBhIGRpcmVjdCBwb2lu
dGVyIHdvdWxkIGdldCBzdGFsZQorfTsKKworY2xhc3MgQ3Vyc29yTGlzdCA6IHB1YmxpYyBTaGFy
ZWQ8Q3Vyc29yTGlzdD4geworcHVibGljOgorICAgIGNvbnN0IEN1cnNvckRhdGEmIG9wZXJhdG9y
W10oaW50IGkpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIG1fdmVjdG9yW2ldOworICAgIH0KKwor
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9CisgICAg
dm9pZCBhcHBlbmQoY29uc3QgQ3Vyc29yRGF0YSYgY3Vyc29yRGF0YSkgeyBtX3ZlY3Rvci5hcHBl
bmQoY3Vyc29yRGF0YSk7IH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8Q3Vyc29yRGF0YT4gbV92
ZWN0b3I7Cit9OworCiBlbnVtIENvbnRlbnRUeXBlIHsKICAgICBDT05URU5UX05PTkUsIENPTlRF
TlRfT0JKRUNULCBDT05URU5UX1RFWFQsIENPTlRFTlRfQ09VTlRFUgogfTsKQEAgLTEzMTQsNyAr
MTM0MCw3IEBAIHB1YmxpYzoKIAogICAgIEVDdXJzb3IgY3Vyc29yKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RUN1cnNvcj4oaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGUpOyB9CiAg
ICAgCi0gICAgQ2FjaGVkSW1hZ2UgKmN1cnNvckltYWdlKCkgY29uc3QgeyByZXR1cm4gaW5oZXJp
dGVkLT5jdXJzb3JfaW1hZ2U7IH0KKyAgICBDdXJzb3JMaXN0KiBjdXJzb3JzKCkgY29uc3QgeyBy
ZXR1cm4gaW5oZXJpdGVkLT5jdXJzb3JEYXRhLmdldCgpOyB9CiAKICAgICBzaG9ydCB3aWRvd3Mo
KSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPndpZG93czsgfQogICAgIHNob3J0IG9ycGhhbnMo
KSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPm9ycGhhbnM7IH0KQEAgLTE1MjEsNyArMTU0Nywx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYWRkaW5nUmlnaHQoTGVuZ3RoIHYpICB7ICBTRVRf
VkFSKHN1cnJvdW5kLHBhZGRpbmcucmlnaHQsdikgfQogCiAgICAgdm9pZCBzZXRDdXJzb3IoIEVD
dXJzb3IgYyApIHsgaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGUgPSBjOyB9Ci0gICAgdm9p
ZCBzZXRDdXJzb3JJbWFnZSggQ2FjaGVkSW1hZ2UgKnYgKSB7IFNFVF9WQVIoaW5oZXJpdGVkLGN1
cnNvcl9pbWFnZSx2KSB9CisgICAgdm9pZCBhZGRDdXJzb3IoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJ
bnRQb2ludCYgPSBJbnRQb2ludCgpKTsKKyAgICB2b2lkIGFkZFNWR0N1cnNvcihjb25zdCBTdHJp
bmcmKTsKKyAgICB2b2lkIHNldEN1cnNvckxpc3QoUGFzc1JlZlB0cjxDdXJzb3JMaXN0Pik7Cisg
ICAgdm9pZCBjbGVhckN1cnNvckxpc3QoKTsKIAogICAgIGJvb2wgZm9yY2VCYWNrZ3JvdW5kc1Rv
V2hpdGUoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRz
X3RvX3doaXRlOyB9CiAgICAgdm9pZCBzZXRGb3JjZUJhY2tncm91bmRzVG9XaGl0ZShib29sIGI9
dHJ1ZSkgeyBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlID0gYjsg
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10738</attachid>
            <date>2006-09-24 07:01:44 -0700</date>
            <delta_ts>2006-09-24 07:24:20 -0700</delta_ts>
            <desc>Improved testcases</desc>
            <filename>6002-13.diff</filename>
            <type>text/plain</type>
            <size>45711</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjU0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMDYtMDktMjQgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAxCisgICAgICAg
IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9tIGN1cnNvcnMKKyAgICAgICAg
Rml4IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTYw
MDIKKyAgICAgICAgV2ViS2l0IGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSBTVkcgPGN1cnNvcj4g
ZWxlbWVudAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzdmcgY3Vyc29yIGltYWdlcy4gQWxz
byBtYWtlIHN1cmUgaG90c3BvdAorICAgICAgICBzZXR0aW5ncyBhcmUgaGFuZGxlZCBjb3JyZWN0
bHkuIEZpbmFsbHkgaW1wbGVtZW50IGZhbGxiYWNrLgorCisgICAgICAgIFdBUk5JTkc6IE5PIFRF
U1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Q1NTQ3Vy
c29ySW1hZ2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjp+
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0N1cnNvckltYWdlVmFsdWUu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjpob3RzcG90
KToKKyAgICAgICAgKiBjc3MvY3NzcGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwOgorICAgICAgICAqIG1hbnVhbC10
ZXN0cy9jc3MzLWN1cnNvci1mYWxsYmFjay1xdWlya3MuaHRtbDogQWRkZWQuCisgICAgICAgICog
bWFudWFsLXRlc3RzL2NzczMtY3Vyc29yLWZhbGxiYWNrLXN0cmljdC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBtYW51YWwtdGVzdHMvY3Vyc29yZmFsbGJhY2sueG1sOiBBZGRlZC4KKyAgICAgICAg
KiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RDdXJzb3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL0N1cnNvci5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DdXJz
b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDdXN0b21DdXJzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3Vyc29yOjpDdXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0N1cnNv
clF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvcjo6Q3Vyc29yKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJbmhlcml0
ZWREYXRhOjpTdHlsZUluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJbmhl
cml0ZWREYXRhOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpk
aWZmKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphZGRDdXJzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZFNWR0N1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0Q3Vyc29yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6Y2xlYXJDdXJzb3JMaXN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU3R5bGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvckRhdGE6OkN1cnNvckRhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q3Vyc29yTGlzdDo6b3BlcmF0b3JbXSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJz
b3JMaXN0OjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvckxpc3Q6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y3Vyc29ycyk6CisKIDIwMDYtMDktMjQgIERh
dmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW51cCBvZiBTY3JvbGxi
YXIgQVBJcy4gIFJlbmFtZSBzZXRLbm9iUHJvcG9ydGlvbiB0byBzZXRQcm9wb3J0aW9uLiAgUmVu
YW1lIHNldFNjcm9sbGJhclZhbHVlIHRvIHVwZGF0ZVRodW1iUG9zaXRpb24uCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY1NDUpCisr
KyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTcxMCw2ICsxNzEwLDggQEAKIAkJQThGRUZCMEIwOTc5RjQ3MjAwNTgzOUZEIC8qIFJl
bmRlckZvcmVpZ25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThGRUZCMDkwOTc5RjQ3MjAwNTgzOUZEIC8qIFJlbmRlckZvcmVpZ25PYmpl
Y3QuY3BwICovOyB9OwogCQlBOEZFRkIzMTA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThGRUZCMkYwOTc5RjRGNjAwNTgzOUZEIC8qIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmNwcCAqLzsgfTsKIAkJQThGRUZCMzIwOTc5RjRGNjAwNTgzOUZEIC8qIFNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEZFRkIzMDA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCAq
LzsgfTsKKwkJQUEyMUVDQ0EwQUJGMEZCQTAwMkI4MzRDIC8qIENTU0N1cnNvckltYWdlVmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEwOTc4
RUQwQUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvckltYWdlVmFsdWUuY3BwICovOyB9OworCQlB
QTIxRUNDRDBBQkYwRkM2MDAyQjgzNEMgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEwOTc4RUUwQUJBQTZFMTAw
ODc0NDgwIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCAqLzsgfTsKIAkJQUE5OEI4N0QwQUFBMDJG
ODAwMUE0NEMyIC8qIFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUE5OEI4N0MwQUFBMDJGODAwMUE0NEMyIC8qIFBhdGguY3BwICovOyB9Owog
CQlBQUM4REFCMTBBQTEwMDIwMDBEQzA5MDcgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQzhEQUFGMEFBMTAw
MjAwMERDMDkwNyAvKiBTVkdNZXRhZGF0YUVsZW1lbnQuY3BwICovOyB9OwogCQlBQUM4REFCMjBB
QTEwMDIwMDBEQzA5MDcgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUM4REFCMDBBQTEwMDIwMDBEQzA5MDcgLyog
U1ZHTWV0YWRhdGFFbGVtZW50LmggKi87IH07CkBAIC0zOTg5LDYgKzM5OTEsOCBAQAogCQlBOEZF
RkIwOTA5NzlGNDcyMDA1ODM5RkQgLyogUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRm9yZWlnbk9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RkVGQjJGMDk3OUY0RjYwMDU4MzlGRCAvKiBT
VkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBOEZFRkIzMDA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBMDk3OEVEMEFCQUE2
RTEwMDg3NDQ4MCAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDU1NDdXJzb3JJbWFnZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQUEwOTc4RUUwQUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvcklt
YWdlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0N1cnNvcklt
YWdlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUE5OEI4N0MwQUFBMDJG
ODAwMUE0NEMyIC8qIFBhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQUM4REFBRjBBQTEw
MDIwMDBEQzA5MDcgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTVkdNZXRhZGF0YUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBQUM4REFCMDBBQTEwMDIwMDBEQzA5MDcgLyogU1ZHTWV0YWRhdGFF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdNZXRhZGF0YUVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwNDMsNiArNzA0Nyw4IEBA
CiAJCUY1MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAvKiBjc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUFBMDk3OEVEMEFCQUE2RTEwMDg3NDQ4MCAvKiBD
U1NDdXJzb3JJbWFnZVZhbHVlLmNwcCAqLywKKwkJCQlBQTA5NzhFRTBBQkFBNkUxMDA4NzQ0ODAg
LyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oICovLAogCQkJCUE4MEU2Q0RBMEExOTg5Q0EwMDdGQjhD
NSAvKiBDb3VudGVyLmggKi8sCiAJCQkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3RkU0IC8qIENvdW50
ZXIuaWRsICovLAogCQkJCUE4MEU2Q0JCMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NCb3JkZXJJbWFn
ZVZhbHVlLmNwcCAqLywKQEAgLTg0NDAsNiArODQ0Niw3IEBACiAJCQkJODUzQkY0REIwQUJCNkI1
NTAwODY0N0JCIC8qIERPTU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1M0JGNEVCMEFCQjZF
OTcwMDg2NDdCQiAvKiBET01Ob2RlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVCQ0JD
MTMwQUJCQTg3RDAwMzgxMTYwIC8qIERPTUhUTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQUEyMUVDQ0QwQUJGMEZDNjAwMkI4MzRDIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg1MUVFODBDMEFCQ0EyOEYwMEE2QUEzMyAvKiBET01BYnN0cmFjdFZp
ZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MUVFODExMEFCQ0EzOTYwMEE2QUEzMyAvKiBET01F
dmVudEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUxRUU4MjEwQUJDQTU4MTAwQTZB
QTMzIC8qIERPTVJhbmdlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTk1MzIsNiArOTUz
OSw3IEBACiAJCQkJQjIwMTExMDcwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODUzQkY0REMwQUJCNkI1NTAwODY0N0JCIC8qIERPTU5vZGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUJDQkMxNDBBQkJBODdEMDAzODExNjAgLyogRE9NSFRN
TERvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQUEyMUVDQ0EwQUJGMEZCQTAwMkI4MzRD
IC8qIENTU0N1cnNvckltYWdlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUxRUU4MEQw
QUJDQTI4RjAwQTZBQTMzIC8qIERPTUFic3RyYWN0Vmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUE4NDE1RjlCMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzQ2xpcHBlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBODQxNUY5RDBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc1Jlc291cmNlLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCShyZXZpc2lvbiAxNjU0NSkKKysrIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNyw1NyArNjA3LDg5IEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICBjYXNlIENTU19Q
Uk9QX0NPVU5URVJfUkVTRVQ6CiAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOgotICAgICAgICBpZiAoc3R5bGUt
PmN1cnNvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KHN0eWxlLT5jdXJzb3JJbWFnZSgpLT51cmwoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkp
OworICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOiB7CisgICAgICAgIENTU1ZhbHVlTGlzdCogbGlz
dCA9IDA7CisgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IDA7CisgICAgICAgIEN1cnNvckxpc3Qq
IGN1cnNvcnMgPSBzdHlsZS0+Y3Vyc29ycygpOworICAgICAgICBpZiAoY3Vyc29ycyAmJiBjdXJz
b3JzLT5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICBsaXN0ID0gbmV3IENTU1ZhbHVlTGlzdDsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjdXJzb3JzLT5zaXplKCk7ICsr
aSkKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKCgq
Y3Vyc29ycylbaV0uY3Vyc29ySW1hZ2UtPnVybCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VS
SSkpOworICAgICAgICB9CiAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmN1cnNvcigpKSB7CiAgICAg
ICAgICAgICBjYXNlIENVUlNPUl9BVVRPOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOworICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfQ1JPU1M6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NST1NTSEFJUik7CisgICAgICAgICAgICAg
ICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DUk9TU0hBSVIpOworICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfREVGQVVMVDoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfREVGQVVM
VCk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9ERUZBVUxUKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VS
U09SX1BPSU5URVI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX1BPSU5URVIpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfUE9JTlRFUik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIENVUlNPUl9NT1ZFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9NT1ZFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX01PVkUpOworICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfRV9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0VfUkVTSVpFKTsKKyAgICAgICAgICAg
ICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0VfUkVTSVpFKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX05FX1JFU0laRToK
LSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTkVf
UkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX05FX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIENVUlNPUl9OV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX05XX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OV19SRVNJWkUpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfTl9SRVNJWkU6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05fUkVTSVpFKTsKKyAgICAg
ICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05fUkVTSVpF
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1NFX1JF
U0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfU0VfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX1NFX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIENVUlNPUl9TV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NXX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFs
dWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TV19SRVNJWkUpOworICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfU19SRVNJWkU6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NfUkVTSVpFKTsK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1Nf
UkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09S
X1dfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9XX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9XX1JFU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIENVUlNPUl9FV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0VXX1JFU0laRSk7CisgICAgICAgICAgICAgICAg
dmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FV19SRVNJWkUpOworICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDVVJTT1JfTlNfUkVTSVpFOgotICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OU19SRVNJ
WkUpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfTlNfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
Q1VSU09SX05FU1dfUkVTSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9ORVNXX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ORVNXX1JFU0laRSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9OV1NFX1JFU0laRToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTldTRV9SRVNJWkUp
OworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
TldTRV9SRVNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBD
VVJTT1JfQ09MX1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfQ09MX1JFU0laRSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DT0xfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1JPV19SRVNJWkU6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JPV19SRVNJWkUpOworICAg
ICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUk9XX1JF
U0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9U
RVhUOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9URVhUKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX1RFWFQpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBD
VVJTT1JfV0FJVDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfV0FJVCk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9XQUlUKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgQ1VSU09SX0hFTFA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX0hFTFApOworICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfSEVMUCk7CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBBU1NFUlQodmFsdWUpOwor
ICAgICAgICBpZiAobGlzdCkgeworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlKTsKKyAg
ICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZTsK
KyAgICB9CiAgICAgY2FzZSBDU1NfUFJPUF9ESVJFQ1RJT046CiAgICAgICAgIHN3aXRjaCAoc3R5
bGUtPmRpcmVjdGlvbigpKSB7CiAgICAgICAgICAgICBjYXNlIExUUjoKSW5kZXg6IFdlYkNvcmUv
Y3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NT
U0N1cnNvckltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qKgorICog
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgorICoK
KyAqIENvcHlyaWdodCAoQykgMjAwNiwgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz
MzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitDU1NDdXJzb3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBJbnRQb2ludCYgcCwgU3R5bGVCYXNlKiBzdHlsZSkKKyAgICA6IENT
U0ltYWdlVmFsdWUodXJsLCBzdHlsZSkKKyAgICAsIG1faG90c3BvdChwKQoreworfQorCitDU1ND
dXJzb3JJbWFnZVZhbHVlOjp+Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSgpCit7Cit9Cit9CkluZGV4OiBX
ZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9j
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICog
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgorICoK
KyAqIENvcHlyaWdodCAoQykgMjAwNiwgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz
MzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCisjaWZuZGVmIENTU0N1
cnNvckltYWdlVmFsdWVfSAorI2RlZmluZSBDU1NDdXJzb3JJbWFnZVZhbHVlX0gKKworI2luY2x1
ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIENTU0N1cnNvckltYWdlVmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VW
YWx1ZQoreworcHVibGljOgorICAgIENTU0N1cnNvckltYWdlVmFsdWUoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IEludFBvaW50JiwgU3R5bGVCYXNlKik7CisgICAgdmlydHVhbCB+Q1NTQ3Vyc29y
SW1hZ2VWYWx1ZSgpOworCisgICAgSW50UG9pbnQgaG90c3BvdCgpIGNvbnN0IHsgcmV0dXJuIG1f
aG90c3BvdDsgfQorCitwcm90ZWN0ZWQ6CisgICAgSW50UG9pbnQgbV9ob3RzcG90OworfTsKK30g
Ly8gbmFtZXNwYWNlCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIuY3BwCShyZXZpc2lvbiAxNjU0NSkK
KysrIFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1
LDcgQEAKICNpbmNsdWRlICJjc3NwYXJzZXIuaCIKIAogI2luY2x1ZGUgIkNTU0JvcmRlckltYWdl
VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
SW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0NoYXJzZXRSdWxlLmgiCiAjaW5jbHVkZSAiQ1NT
SW1wb3J0UnVsZS5oIgpAQCAtNjk0LDI2ICs2OTUsNjMgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
VmFsdWUoaW50IHByb3BJZCwgYgogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2Fz
ZSBDU1NfUFJPUF9DVVJTT1I6CisgICAgY2FzZSBDU1NfUFJPUF9DVVJTT1I6IHsKICAgICAgICAg
Ly8gWzx1cmk+LF0qICBbIGF1dG8gfCBjcm9zc2hhaXIgfCBkZWZhdWx0IHwgcG9pbnRlciB8IHBy
b2dyZXNzIHwgbW92ZSB8IGUtcmVzaXplIHwgbmUtcmVzaXplIHwKICAgICAgICAgLy8gbnctcmVz
aXplIHwgbi1yZXNpemUgfCBzZS1yZXNpemUgfCBzdy1yZXNpemUgfCBzLXJlc2l6ZSB8IHctcmVz
aXplIHwgZXctcmVzaXplIHwgCiAgICAgICAgIC8vIG5zLXJlc2l6ZSB8IG5lc3ctcmVzaXplIHwg
bndzZS1yZXNpemUgfCBjb2wtcmVzaXplIHwgcm93LXJlc2l6ZSB8IHRleHQgfCB3YWl0IHwgaGVs
cCBdIF0gfCBpbmhlcml0Ci0gICAgICAgIGlmICghc3RyaWN0ICYmIGlkID09IENTU19WQUxfSEFO
RCkgeyAvLyBNU0lFIDUgY29tcGF0aWJpbGl0eSA6LwotICAgICAgICAgICAgaWQgPSBDU1NfVkFM
X1BPSU5URVI7Ci0gICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwotICAgICAgICB9
IGVsc2UgaWYgKGlkID49IENTU19WQUxfQVVUTyAmJiBpZCA8PSBDU1NfVkFMX0hFTFApCi0gICAg
ICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBlbHNlIGlmICh2YWx1ZS0+
dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgeworICAgICAgICBDU1NWYWx1ZUxp
c3QqIGxpc3QgPSAwOworICAgICAgICB3aGlsZSAodmFsdWUgJiYgdmFsdWUtPnVuaXQgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKICAgICAgICAgICAgIFN0cmluZyB1cmkgPSBwYXJz
ZVVSTChkb21TdHJpbmcodmFsdWUtPnN0cmluZykpOworICAgICAgICAgICAgSW50UG9pbnQgaG90
c3BvdDsKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgICAg
ICBpZiAodmFsdWUgJiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpIHsKKyAgICAgICAgICAgICAgICBob3RzcG90LnNldFgodmFsdWUtPmZWYWx1ZSk7CisgICAg
ICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAgICAgICAgICBp
ZiAodmFsdWUgJiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
IHsKKyAgICAgICAgICAgICAgICAgICAgaG90c3BvdC5zZXRZKHZhbHVlLT5mVmFsdWUpOworICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBsaXN0OworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorI2lmIFNWR19TVVBQT1JUCisgICAgICAgICAgICBpZiAodXJpLnN0YXJ0c1dpdGgoIiMiKSkg
eworICAgICAgICAgICAgICAgIGlmICghbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA9
IG5ldyBDU1NWYWx1ZUxpc3Q7IAorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUodXJpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkpOworICAgICAg
ICAgICAgfSBlbHNlCisjZW5kaWYKICAgICAgICAgICAgIGlmICghdXJpLmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gbmV3IENTU0ltYWdlVmFsdWUoU3RyaW5nKEtV
Ukwoc3R5bGVFbGVtZW50LT5iYXNlVVJMKCkuZGVwcmVjYXRlZFN0cmluZygpLCB1cmkuZGVwcmVj
YXRlZFN0cmluZygpKS51cmwoKSksIHN0eWxlRWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgLy8g
RklYTUU6IHdlIGRvbid0IHN1cHBvcnQgZmFsbGJhY2sgY3Vyc29ycyB5ZXQsIGJ1dCBpZ25vcmlu
ZyB0aGUgcmVtYWluaW5nIHZhbHVlcwotICAgICAgICAgICAgICAgIC8vIHdpbGwgYXQgbGVhc3Qg
bGV0IGNvbXBsaWFudCBkZWNsYXJhdGlvbnMgcGFyc2UuCi0gICAgICAgICAgICAgICAgYWRkUHJv
cGVydHkocHJvcElkLCBwYXJzZWRWYWx1ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoIWxpc3QpCisgICAgICAgICAgICAgICAg
ICAgIGxpc3QgPSBuZXcgQ1NTVmFsdWVMaXN0OyAKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQobmV3IENTU0N1cnNvckltYWdlVmFsdWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFN0cmluZyhLVVJMKHN0eWxlRWxlbWVudC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwg
dXJpLmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJsKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBob3RzcG90LCBzdHlsZUVsZW1lbnQpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmICgoc3RyaWN0ICYmICF2YWx1ZSkgfHwgKHZhbHVlICYmICEodmFsdWUtPnVuaXQgPT0gVmFs
dWU6Ok9wZXJhdG9yICYmIHZhbHVlLT5pVmFsdWUgPT0gJywnKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsgLy8g
Y29tbWEKKyAgICAgICAgfQorICAgICAgICBpZiAobGlzdCkgeworICAgICAgICAgICAgaWYgKCF2
YWx1ZSkgeyAvLyBubyB2YWx1ZSBhZnRlciB1cmwgbGlzdCAoTVNJRSA1IGNvbXBhdGliaWxpdHkp
CisgICAgICAgICAgICAgICAgaWYgKGxpc3QtPmxlbmd0aCgpID4gMSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0ICYmIHZh
bHVlLT5pZCA9PSBDU1NfVkFMX0hBTkQpIC8vIE1TSUUgNSBjb21wYXRpYmlsaXR5IDovCisgICAg
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1BP
SU5URVIpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlICYmIHZhbHVlLT5pZCA+PSBDU1Nf
VkFMX0FVVE8gJiYgdmFsdWUtPmlkIDw9IENTU19WQUxfSEVMUCkKKyAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLT5pZCkpOworICAgICAgICAg
ICAgdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGxpc3Q7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBpZiAoIXN0cmljdCAmJiB2YWx1
ZS0+aWQgPT0gQ1NTX1ZBTF9IQU5EKSB7IC8vIE1TSUUgNSBjb21wYXRpYmlsaXR5IDovCisgICAg
ICAgICAgICBpZCA9IENTU19WQUxfUE9JTlRFUjsKKyAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2
ZSA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAodmFsdWUtPmlkID49IENTU19WQUxfQVVUTyAm
JiB2YWx1ZS0+aWQgPD0gQ1NTX1ZBTF9IRUxQKQorICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZl
ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBDU1NfUFJPUF9CQUNL
R1JPVU5EX0FUVEFDSE1FTlQ6CiAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JBQ0tHUk9VTkRf
Q0xJUDoKSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxNjU0NSkKKysr
IFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY3Nzc3R5bGVzZWxlY3Rvci5oIgogCiAjaW5jbHVkZSAiQ1NT
Qm9yZGVySW1hZ2VWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNp
bmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW1wb3J0UnVsZS5oIgogI2lu
Y2x1ZGUgIkNTU01lZGlhUnVsZS5oIgpAQCAtMjQxMCwyMyArMjQxMSw0MSBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgY2FzZSBDU1NfUFJPUF9DVVJTT1I6
CiAgICAgICAgIGlmIChpc0luaGVyaXQpIHsKICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3Io
cGFyZW50U3R5bGUtPmN1cnNvcigpKTsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3JJbWFn
ZShwYXJlbnRTdHlsZS0+Y3Vyc29ySW1hZ2UoKSk7CisgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vy
c29yTGlzdChwYXJlbnRTdHlsZS0+Y3Vyc29ycygpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQorICAgICAgICBzdHlsZS0+Y2xlYXJDdXJzb3JMaXN0KCk7CiAgICAgICAgIGlmIChp
c0luaXRpYWwpIHsKICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IoUmVuZGVyU3R5bGU6Omlu
aXRpYWxDdXJzb3IoKSk7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29ySW1hZ2UoMCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
KSB7CisgICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeworICAgICAgICAgICAgQ1NT
VmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworICAg
ICAgICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOworICAgICAgICAgICAgc3R5bGUtPnNl
dEN1cnNvcihDVVJTT1JfQVVUTyk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxl
bjsgaSsrKSB7CisgICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtKGkp
OworICAgICAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICAgICAg
aW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOworICAgICAgICAgICAg
ICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7CisjaWYgU1ZHX1NV
UFBPUlQKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdW
YWx1ZSgpLmZpbmQoIiMiKSA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPmFk
ZFNWR0N1cnNvcihwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKS5zdWJzdHJpbmcoMSkp
OworICAgICAgICAgICAgICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSogaW1hZ2UgPSBz
dGF0aWNfY2FzdDxDU1NDdXJzb3JJbWFnZVZhbHVlKj4ocHJpbWl0aXZlVmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICAgICAgc3R5bGUtPmFkZEN1cnNvcihpbWFnZS0+aW1hZ2UoZWxlbWVudC0+
ZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCkpLCBpbWFnZS0+aG90c3BvdCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0lERU5UKQorICAgICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29y
KChFQ3Vyc29yKShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENTU19WQUxfQVVUTykpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlKSB7CiAgICAg
ICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CiAgICAg
ICAgICAgICBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKSB7CiAgICAg
ICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcigoRUN1cnNvcikocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgLSBDU1NfVkFMX0FVVE8pKTsKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vy
c29ySW1hZ2UoMCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19VUkkpIHsKLSAgICAgICAgICAgICAgICBDU1NJbWFnZVZhbHVlKiBpbWFnZSA9
IHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPihwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgICAg
ICAgICAgc3R5bGUtPnNldEN1cnNvcihDVVJTT1JfQVVUTyk7Ci0gICAgICAgICAgICAgICAgc3R5
bGUtPnNldEN1cnNvckltYWdlKGltYWdlLT5pbWFnZShlbGVtZW50LT5kb2N1bWVudCgpLT5kb2NM
b2FkZXIoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2NTQ1KQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKICNpbmNsdWRlICJTVkdM
ZW5ndGguaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CituYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFNWR0N1cnNvckVsZW1lbnQ6OlNWR0N1cnNvckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQgKmRvYykKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9j
KQpAQCAtODAsNiArODAsOCBAQCB2b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmliCiAgICAgfQogfQogCit9CisKIC8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQ
UE9SVAogCkluZGV4OiBXZWJDb3JlL21hbnVhbC10ZXN0cy9jc3MzLWN1cnNvci1mYWxsYmFjay1x
dWlya3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hbnVhbC10ZXN0cy9jc3MzLWN1cnNv
ci1mYWxsYmFjay1xdWlya3MuaHRtbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWFudWFsLXRl
c3RzL2NzczMtY3Vyc29yLWZhbGxiYWNrLXF1aXJrcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDUzIEBACis8aHRtbD4KKzxoZWFkPjx0aXRsZT5RdWlya3MgY3VzdG9tIGN1cnNvciB0ZXN0
czwvdGl0bGU+PC9oZWFkPgorPGJvZHk+Cis8cD48YSBocmVmPSJodHRwOi8vYnVnemlsbGEub3Bl
bmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTg5OTEiPkJ1ZyAuOTkxPC9hPjogUkVHUkVTU0lP
TjogbWlzc2luZyBvciBicm9rZW4gQ1NTIGN1c3RvbSBjdXJzb3JzIGFyZSBkaXNwbGF5ZWQgYXMg
YSBtaXNzaW5nIGltYWdlIGljb24uPC9wPgorPHA+TW92ZSB0aGUgY3Vyc29yIG92ZXIgdGhlIGJs
dWUgYm94IC0gaXQgc2hvdWxkIG5vdCB0dXJuIGludG8gYSBtaXNzaW5nIGltYWdlIGljb24sIGFu
ZCBzaG91bGQgdHVybiBpbnRvIGFuIEktYmVhbSBvdmVyIHRleHQuPC9wPgorCis8ZGl2IHN0eWxl
PSJ3aWR0aDoxMDBweDtoZWlnaHQ6NTBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vy
c29yOnVybChub25leGlzdGVudC5wbmcpLCBhdXRvOyI+PHNwYW4gc3R5bGU9ImN1cnNvcjp1cmwo
bm9uZXhpc3RlbnQucG5nKSwgYXV0bzsiPnNvbWUgdGV4dDwvc3Bhbj48L2Rpdj4KKzxkaXYgc3R5
bGU9IndpZHRoOjEwMHB4O2hlaWdodDo1MHB4O2JhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOyBj
dXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyk7Ij48L2Rpdj4KKworPGhyPgorPHA+PGEgaHJlZj0i
aHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAxIj5CdWcg
NjAwMTwvYT46IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJhY2sgY3VzdG9tIGN1cnNvcnM8
L3A+Cis8cD48YSBocmVmPSJodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwMTMiPkJ1ZyA5MDEzPC9hPjogTGV0IGNvcnJlY3QgQ1NTIGN1c3RvbSBjdXJzb3Ig
ZGVjbGFyYXRpb25zIHBhcnNlPC9wPgorPHA+SW4gZWFjaCBvZiB0aGUgYmx1ZSBib3hlcyBiZWxv
dywgdGhlIGN1cnNvciBzaG91bGQgYmVjb21lIGEgaGVscCBjdXJzb3IgKHF1ZXN0aW9uIG1hcmsp
LjwvcD4KKzx0YWJsZT48dHI+CisgPHRkPjxkaXYgc3R5bGU9IndpZHRoOjEwMHB4O2hlaWdodDox
MDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMvaGVs
cEN1cnNvci50aWZmKSwgdGV4dDsiPjwvZGl2PjwvdGQ+IDwhLS0gVmFsaWQsIG5vIGZhbGxiYWNr
IG5lZWRlZCAtLT4KKyA8dGQ+PGRpdiBzdHlsZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2Jh
Y2tncm91bmQtY29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKHJlc291cmNlcy9oZWxwQ3Vyc29y
LnRpZmYpOyc+PC9kaXY+PC90ZD4gPCEtLSBJbnZhbGlkLCBidXQgYWxsb3dlZCBieSBXaW5JRSAt
LT4KKyA8dGQ+PGRpdiBzdHlsZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQt
Y29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIGhlbHA7Jz48L2Rp
dj48L3RkPgorIDx0ZD48ZGl2IHN0eWxlPSd3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dy
b3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwobm9uZXhpc3RlbnQucG5nKSwgdXJsKGN1
c3RvbS1jdXJzb3JzLmh0bWwpLCB1cmwodW5rbm93bi1zY2hlbWU6Y3VzdG9tLWN1cnNvcnMuaHRt
bCksIHVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKSwgdGV4dDsnPjwvZGl2PjwvdGQ+Cisg
PHRkPjxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9y
OmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChub25leGlzdGVudC5wbmcpLCB1cmwoInJlc291cmNlcy9o
ZWxwQ3Vyc29yLnRpZmYiKSwgdGV4dDsnPjwvZGl2PjwvdGQ+CisgPHRkPjxkaXYgc3R5bGU9J3dp
ZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29y
OnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKSAxIDEsIHRleHQ7Jz48L2Rpdj48L3RkPiA8
IS0tIENTUzMgaG90IHNwb3QgLSB2YWxpZCwgbm8gZmFsbGJhY2sgbmVlZGVkIC0tPgorPC90cj4K
KzwvdGFibGU+Cis8cD5JbiBlYWNoIG9mIHRoZSBibHVlIGJveGVzIGJlbG93LCB0aGUgY3Vyc29y
IHNob3VsZCByZW1haW4gdGhlIGRlZmF1bHQgY3Vyc29yLCBzaW5jZSBhbGwgY3Vyc29yIGRlZmlu
aXRpb25zIGFyZSBpbnZhbGlkIGluIHF1aXJrcyBtb2RlLjwvcD4KKzx0YWJsZT48dHI+Cis8dGQ+
PGRpdiBzdHlsZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6bGln
aHRibHVlOyBjdXJzb3I6dXJsKHJlc291cmNlcy9oZWxwQ3Vyc29yLnRpZmYpIDEgMSB0ZXh0Oyc+
PC9kaXY+PC90ZD4gPCEtLSBDU1MzIGhvdCBzcG90IC0gaW52YWxpZCwgc2hvdWxkIGhhdmUgY29t
bWEgYWZ0ZXIgaG90c3BvdCBjb29yZHMgLS0+Cis8dGQ+PGRpdiBzdHlsZT0nd2lkdGg6MTAwcHg7
aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKHJlc291
cmNlcy9oZWxwQ3Vyc29yLnRpZmYpIDEsIHRleHQ7Jz48L2Rpdj48L3RkPiA8IS0tIENTUzMgaG90
IHNwb3QgLSBpbnZhbGlkLCBzaG91bGQgaGF2ZSB0d28gaG90c3BvdCBjb29yZHMgLS0+Cis8L3Ry
PgorPC90YWJsZT4KKworPHA+PC9wPgorPHA+PHNwYW4gc3R5bGU9J2JhY2tncm91bmQtY29sb3I6
Z3JheTsgY3Vyc29yOnVybChub25leGlzdGVudC5wbmcpLCB1cmwoInJlc291cmNlcy9oZWxwQ3Vy
c29yLnRpZmYiKTsnPlNob3VsZCBzaG93IGFuIEktYmVhbSBjdXJzb3IuPC9zcGFuPjwvcD4gPCEt
LSBBbiBpbnZhbGlkIGRlY2xhcmF0aW9uLCBldmVuIGJ5IFdpbklFIHN0YW5kYXJkcyAtLT4KKzxw
PlRoZSBmb2xsb3dpbmcgdGVzdGNhc2VzIHRlc3QgaW5oZXJpdGFuY2Ugb2YgdGhlIGN1cnNvciBw
cm9wZXJ0eS4gVGhlIGZpcnN0IG9uZSBzaG91bGQgaGF2ZSB0aGUgaGVscCBjdXJzb3IgZm9yIGJv
dGggZGl2cyAobm9ybWFsIGluaGVyaXRhbmNlKS4gVGhlIHNlY29uZCBvbmUgc2hvdWxkIGhhdmUg
aGVscCBjdXJzb3IgZm9yIGJpZyBkaXYsIHRleHQgY3Vyc29yIGZvciBzbWFsbCBkaXYgKGlubmVy
IGRpdiBoYXMgY3Vyc29yIHByb3BlcnR5LCBzaG91bGQgbm90IGluaGVyaXQpLiBUaGUgbmV4dCB0
d28gaGF2ZSBpbnZhbGlkIGNzcyBzeW50YXggaW4gdGhlIGlubmVyIGRpdiwgc28gdGhleSBzaG91
bGQgaW5oZXJpdCBmcm9tIHBhcmVudC4gVGhlIHJpZ2h0bW9zdCB0ZXN0Y2FzZSBoYXMgYSBub25l
c2l0YW50IHVybCwgYnV0IHRoZSBzeW50YXggd2lsbCBjb3JyZWN0LCBhbmQgdGhlcmUgaXMgbm8g
aW5oZXJpdGFuY2UgaW4gdGhpcyBjYXNlLjwvcD4KKzx0YWJsZT4KKzx0cj48dGQ+Cis8ZGl2IHN0
eWxlPSd3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7
IGN1cnNvcjp1cmwocmVzb3VyY2VzL2hlbHBDdXJzb3IudGlmZiksIHRleHQ7Jz48ZGl2IHN0eWxl
PSJ3aWR0aDo1MHB4O2hlaWdodDo1MHB4O2JhY2tncm91bmQtY29sb3I6Z3JheTsiPjwvZGl2Pjwv
ZGl2PgorPC90ZD48dGQ+Cis8ZGl2IHN0eWxlPSd3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFj
a2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwocmVzb3VyY2VzL2hlbHBDdXJzb3Iu
dGlmZiksIHRleHQ7Jz48ZGl2IHN0eWxlPSJ3aWR0aDo1MHB4O2hlaWdodDo1MHB4O2JhY2tncm91
bmQtY29sb3I6Z3JheTtjdXJzb3I6dGV4dCI+PC9kaXY+PC9kaXY+Cis8L3RkPjx0ZD4KKzxkaXYg
c3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1
ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKSwgdGV4dDsnPjxkaXYgc3R5
bGU9IndpZHRoOjUwcHg7aGVpZ2h0OjUwcHg7YmFja2dyb3VuZC1jb2xvcjpncmF5O2N1cnNvcjpm
b29iYXIiPjwvZGl2PjwvZGl2PgorPC90ZD48dGQ+Cis8ZGl2IHN0eWxlPSd3aWR0aDoxMDBweDto
ZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwocmVzb3Vy
Y2VzL2hlbHBDdXJzb3IudGlmZiksIHRleHQ7Jz48ZGl2IHN0eWxlPSJ3aWR0aDo1MHB4O2hlaWdo
dDo1MHB4O2JhY2tncm91bmQtY29sb3I6Z3JheTtjdXJzb3I6dXJsKHJlc291cmNlcy9oZWxwQ3Vy
c29yLnRpZmYpIDEgMiAzLCB0ZXh0Ij48L2Rpdj48L2Rpdj4KKzwvdGQ+PHRkPgorPGRpdiBzdHls
ZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOyBj
dXJzb3I6dXJsKHJlc291cmNlcy9oZWxwQ3Vyc29yLnRpZmYpLCB0ZXh0Oyc+PGRpdiBzdHlsZT0i
d2lkdGg6NTBweDtoZWlnaHQ6NTBweDtiYWNrZ3JvdW5kLWNvbG9yOmdyYXk7Y3Vyc29yOnVybChu
b25leGlzdGFudC5wbmcpLCB0ZXh0Ij48L2Rpdj48L2Rpdj4KKzwvdGQ+PC90cj4KKzwvdGFibGU+
Cis8cD5JbiBlYWNoIG9mIHRoZSBibHVlIGJveGVzIGJlbG93LCB0aGUgaG90c3BvdCBpcyBvdXQt
b2YtcmFuZ2UsIHdlIGRpc2NhcmQgdGhlIGN1cnNvciBpbiB0aGlzIGNhc2UuPC9wPgorPHRhYmxl
Pjx0cj4KKyA8dGQ+PGRpdiBzdHlsZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91
bmQtY29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKHJlc291cmNlcy9oZWxwQ3Vyc29yLnRpZmYp
IC0xIC0xLCB0ZXh0Oyc+PC9kaXY+PC90ZD4gPCEtLSBDU1MzIGhvdCBzcG90IG91dC1vZi1yYW5n
ZSAtLT4KKyA8dGQ+PGRpdiBzdHlsZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91
bmQtY29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKHJlc291cmNlcy9oZWxwQ3Vyc29yLnRpZmYp
IDEwMCAxMDAsIHRleHQ7Jz48L2Rpdj48L3RkPiA8IS0tIENTUzMgaG90IHNwb3Qgb3V0LW9mLXJh
bmdlIC0tPgorPC90cj4KKzwvdGFibGU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBXZWJDb3Jl
L21hbnVhbC10ZXN0cy9jc3MzLWN1cnNvci1mYWxsYmFjay1zdHJpY3QuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL21hbnVhbC10ZXN0cy9jc3MzLWN1cnNvci1mYWxsYmFjay1zdHJpY3QuaHRt
bAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWFudWFsLXRlc3RzL2NzczMtY3Vyc29yLWZhbGxi
YWNrLXN0cmljdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACis8IURPQ1RZUEUg
aHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iCisgICAiaHR0cDovL3d3dy53
My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+Cis8aHRtbD4KKzxoZWFkPjx0aXRsZT5TdHJpY3Qg
Y3VzdG9tIGN1cnNvciB0ZXN0czwvdGl0bGU+PC9oZWFkPgorPGJvZHk+Cis8cD48YSBocmVmPSJo
dHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTg5OTEiPkJ1ZyAu
OTkxPC9hPjogUkVHUkVTU0lPTjogbWlzc2luZyBvciBicm9rZW4gQ1NTIGN1c3RvbSBjdXJzb3Jz
IGFyZSBkaXNwbGF5ZWQgYXMgYSBtaXNzaW5nIGltYWdlIGljb24uPC9wPgorPHA+TW92ZSB0aGUg
Y3Vyc29yIG92ZXIgdGhlIGJsdWUgYm94IC0gaXQgc2hvdWxkIG5vdCB0dXJuIGludG8gYSBtaXNz
aW5nIGltYWdlIGljb24sIGFuZCBzaG91bGQgdHVybiBpbnRvIGFuIEktYmVhbSBvdmVyIHRleHQu
PC9wPgorCis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBweDtoZWlnaHQ6NTBweDtiYWNrZ3JvdW5kLWNv
bG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChub25leGlzdGVudC5wbmcpLCBhdXRvOyI+PHNwYW4g
c3R5bGU9ImN1cnNvcjp1cmwobm9uZXhpc3RlbnQucG5nKSwgYXV0bzsiPnNvbWUgdGV4dDwvc3Bh
bj48L2Rpdj4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB4O2hlaWdodDo1MHB4O2JhY2tncm91bmQt
Y29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyk7Ij48L2Rpdj4KKwor
PGhyPgorPHA+PGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVn
LmNnaT9pZD02MDAxIj5CdWcgNjAwMTwvYT46IFdlYktpdCBkb2VzIG5vdCBoYW5kbGUgZmFsbGJh
Y2sgY3VzdG9tIGN1cnNvcnM8L3A+Cis8cD48YSBocmVmPSJodHRwOi8vYnVnemlsbGEub3BlbmRh
cndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTkwMTMiPkJ1ZyA5MDEzPC9hPjogTGV0IGNvcnJlY3Qg
Q1NTIGN1c3RvbSBjdXJzb3IgZGVjbGFyYXRpb25zIHBhcnNlPC9wPgorPHA+SW4gZWFjaCBvZiB0
aGUgYmx1ZSBib3hlcyBiZWxvdywgdGhlIGN1cnNvciBzaG91bGQgYmVjb21lIGEgaGVscCBjdXJz
b3IgKHF1ZXN0aW9uIG1hcmspLjwvcD4KKzx0YWJsZT48dHI+CisgPHRkPjxkaXYgc3R5bGU9Indp
ZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29y
OnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKSwgdGV4dDsiPjwvZGl2PjwvdGQ+IDwhLS0g
VmFsaWQsIG5vIGZhbGxiYWNrIG5lZWRlZCAtLT4KKyA8dGQ+PGRpdiBzdHlsZT0nd2lkdGg6MTAw
cHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKG5v
bmV4aXN0ZW50LnBuZyksIGhlbHA7Jz48L2Rpdj48L3RkPgorIDx0ZD48ZGl2IHN0eWxlPSd3aWR0
aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1
cmwobm9uZXhpc3RlbnQucG5nKSwgdXJsKGN1c3RvbS1jdXJzb3JzLmh0bWwpLCB1cmwodW5rbm93
bi1zY2hlbWU6Y3VzdG9tLWN1cnNvcnMuaHRtbCksIHVybChyZXNvdXJjZXMvaGVscEN1cnNvci50
aWZmKSwgdGV4dDsnPjwvZGl2PjwvdGQ+CisgPHRkPjxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hl
aWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChub25leGlz
dGVudC5wbmcpLCB1cmwoInJlc291cmNlcy9oZWxwQ3Vyc29yLnRpZmYiKSwgdGV4dDsnPjwvZGl2
PjwvdGQ+CisgPHRkPjxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3Jv
dW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZm
KSAxIDEsIHRleHQ7Jz48L2Rpdj48L3RkPiA8IS0tIENTUzMgaG90IHNwb3QgLSB2YWxpZCwgbm8g
ZmFsbGJhY2sgbmVlZGVkIC0tPgorPC90cj4KKzwvdGFibGU+Cis8cD5JbiBlYWNoIG9mIHRoZSBi
bHVlIGJveGVzIGJlbG93LCB0aGUgY3Vyc29yIHNob3VsZCByZW1haW4gdGhlIGRlZmF1bHQgY3Vy
c29yLCBzaW5jZSBhbGwgY3Vyc29yIGRlZmluaXRpb25zIGFyZSBpbnZhbGlkIGluIHN0cmljdCBt
b2RlLjwvcD4KKzx0YWJsZT48dHI+Cis8dGQ+PGRpdiBzdHlsZT0nd2lkdGg6MTAwcHg7aGVpZ2h0
OjEwMHB4O2JhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOyBjdXJzb3I6dXJsKHJlc291cmNlcy9o
ZWxwQ3Vyc29yLnRpZmYpIDEgMSB0ZXh0Oyc+PC9kaXY+PC90ZD4gPCEtLSBDU1MzIGhvdCBzcG90
IC0gaW52YWxpZCwgc2hvdWxkIGhhdmUgY29tbWEgYWZ0ZXIgaG90c3BvdCBjb29yZHMgLS0+Cis8
dGQ+PGRpdiBzdHlsZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6
bGlnaHRibHVlOyBjdXJzb3I6dXJsKHJlc291cmNlcy9oZWxwQ3Vyc29yLnRpZmYpIDEsIHRleHQ7
Jz48L2Rpdj48L3RkPiA8IS0tIENTUzMgaG90IHNwb3QgLSBpbnZhbGlkLCBzaG91bGQgaGF2ZSB0
d28gaG90c3BvdCBjb29yZHMgLS0+CisgPHRkPjxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdo
dDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMv
aGVscEN1cnNvci50aWZmKTsnPjwvZGl2PjwvdGQ+IDwhLS0gSW52YWxpZCAtLT4KKzwvdHI+Cis8
L3RhYmxlPgorCis8cD48L3A+Cis8cD48c3BhbiBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjpncmF5
OyBjdXJzb3I6dXJsKG5vbmV4aXN0ZW50LnBuZyksIHVybCgicmVzb3VyY2VzL2hlbHBDdXJzb3Iu
dGlmZiIpOyc+U2hvdWxkIHNob3cgYW4gSS1iZWFtIGN1cnNvci48L3NwYW4+PC9wPiA8IS0tIEFu
IGludmFsaWQgZGVjbGFyYXRpb24sIGV2ZW4gYnkgV2luSUUgc3RhbmRhcmRzIC0tPgorPHA+VGhl
IGZvbGxvd2luZyB0ZXN0Y2FzZXMgdGVzdCBpbmhlcml0YW5jZSBvZiB0aGUgY3Vyc29yIHByb3Bl
cnR5LiBUaGUgZmlyc3Qgb25lIHNob3VsZCBoYXZlIHRoZSBoZWxwIGN1cnNvciBmb3IgYm90aCBk
aXZzIChub3JtYWwgaW5oZXJpdGFuY2UpLiBUaGUgc2Vjb25kIG9uZSBzaG91bGQgaGF2ZSBoZWxw
IGN1cnNvciBmb3IgYmlnIGRpdiwgdGV4dCBjdXJzb3IgZm9yIHNtYWxsIGRpdiAoaW5uZXIgZGl2
IGhhcyBjdXJzb3IgcHJvcGVydHksIHNob3VsZCBub3QgaW5oZXJpdCkuIFRoZSBuZXh0IHR3byBo
YXZlIGludmFsaWQgY3NzIHN5bnRheCBpbiB0aGUgaW5uZXIgZGl2LCBzbyB0aGV5IHNob3VsZCBp
bmhlcml0IGZyb20gcGFyZW50LiBUaGUgcmlnaHRtb3N0IHRlc3RjYXNlIGhhcyBhIG5vbmVzaXRh
bnQgdXJsLCBidXQgdGhlIHN5bnRheCB3aWxsIGNvcnJlY3QsIGFuZCB0aGVyZSBpcyBubyBpbmhl
cml0YW5jZSBpbiB0aGlzIGNhc2UuPC9wPgorPHRhYmxlPgorPHRyPjx0ZD4KKzxkaXYgc3R5bGU9
J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vy
c29yOnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZmKSwgdGV4dDsnPjxkaXYgc3R5bGU9Indp
ZHRoOjUwcHg7aGVpZ2h0OjUwcHg7YmFja2dyb3VuZC1jb2xvcjpncmF5OyI+PC9kaXY+PC9kaXY+
Cis8L3RkPjx0ZD4KKzxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3Jv
dW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMvaGVscEN1cnNvci50aWZm
KSwgdGV4dDsnPjxkaXYgc3R5bGU9IndpZHRoOjUwcHg7aGVpZ2h0OjUwcHg7YmFja2dyb3VuZC1j
b2xvcjpncmF5O2N1cnNvcjp0ZXh0Ij48L2Rpdj48L2Rpdj4KKzwvdGQ+PHRkPgorPGRpdiBzdHls
ZT0nd2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOyBj
dXJzb3I6dXJsKHJlc291cmNlcy9oZWxwQ3Vyc29yLnRpZmYpLCB0ZXh0Oyc+PGRpdiBzdHlsZT0i
d2lkdGg6NTBweDtoZWlnaHQ6NTBweDtiYWNrZ3JvdW5kLWNvbG9yOmdyYXk7Y3Vyc29yOmZvb2Jh
ciI+PC9kaXY+PC9kaXY+Cis8L3RkPjx0ZD4KKzxkaXYgc3R5bGU9J3dpZHRoOjEwMHB4O2hlaWdo
dDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVybChyZXNvdXJjZXMv
aGVscEN1cnNvci50aWZmKSwgdGV4dDsnPjxkaXYgc3R5bGU9IndpZHRoOjUwcHg7aGVpZ2h0OjUw
cHg7YmFja2dyb3VuZC1jb2xvcjpncmF5O2N1cnNvcjp1cmwocmVzb3VyY2VzL2hlbHBDdXJzb3Iu
dGlmZikgMSAyIDMsIHRleHQiPjwvZGl2PjwvZGl2PgorPC90ZD48dGQ+Cis8ZGl2IHN0eWxlPSd3
aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7IGN1cnNv
cjp1cmwocmVzb3VyY2VzL2hlbHBDdXJzb3IudGlmZiksIHRleHQ7Jz48ZGl2IHN0eWxlPSJ3aWR0
aDo1MHB4O2hlaWdodDo1MHB4O2JhY2tncm91bmQtY29sb3I6Z3JheTtjdXJzb3I6dXJsKG5vbmV4
aXN0YW50LnBuZyksIHRleHQiPjwvZGl2PjwvZGl2PgorPC90ZD48L3RyPgorPC90YWJsZT4KKzxw
PkluIGVhY2ggb2YgdGhlIGJsdWUgYm94ZXMgYmVsb3csIHRoZSBob3RzcG90IGlzIG91dC1vZi1y
YW5nZSwgd2UgZGlzY2FyZCB0aGUgY3Vyc29yIGluIHRoaXMgY2FzZS48L3A+Cis8dGFibGU+PHRy
PgorIDx0ZD48ZGl2IHN0eWxlPSd3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1j
b2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwocmVzb3VyY2VzL2hlbHBDdXJzb3IudGlmZikgLTEg
LTEsIHRleHQ7Jz48L2Rpdj48L3RkPiA8IS0tIENTUzMgaG90IHNwb3Qgb3V0LW9mLXJhbmdlIC0t
PgorIDx0ZD48ZGl2IHN0eWxlPSd3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7YmFja2dyb3VuZC1j
b2xvcjpsaWdodGJsdWU7IGN1cnNvcjp1cmwocmVzb3VyY2VzL2hlbHBDdXJzb3IudGlmZikgMTAw
IDEwMCwgdGV4dDsnPjwvZGl2PjwvdGQ+IDwhLS0gQ1NTMyBob3Qgc3BvdCBvdXQtb2YtcmFuZ2Ug
LS0+Cis8L3RyPgorPC90YWJsZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFdlYkNvcmUvbWFu
dWFsLXRlc3RzL2N1cnNvcmZhbGxiYWNrLnhtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hbnVh
bC10ZXN0cy9jdXJzb3JmYWxsYmFjay54bWwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hbnVh
bC10ZXN0cy9jdXJzb3JmYWxsYmFjay54bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAK
Kzw/eG1sIHZlcnNpb249IjEuMCI/PgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+U3RyaWN0IG1vZGUgKyBTVkcgY3Vyc29yIGZhbGxi
YWNrIHRlc3Q8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0IHN2ZyBjdXJzb3IgZmFs
bGJhY2ssIHNob3VsZCBzaG93IGhlbHAgY3Vyc29yOjwvcD4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiAKKyAgICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiIHdpZHRoPSI1MDAiIGhlaWdodD0iMzAwIj4KKzxkZWZzPgorICAgIDxjdXJz
b3IgaWQ9ImhlbHAiIHhsaW5rOmhyZWY9InJlc291cmNlcy9oZWxwY3Vyc29yLnRpZmYiIHg9IjEw
IiB5PSIxMSIvPgorPC9kZWZzPgorPGcgY3Vyc29yPSJ1cmwobm9uZXhpc3RlbnQucG5nKSwgdXJs
KGN1c3RvbS1jdXJzb3JzLmh0bWwpLCB1cmwodW5rbm93bi1zY2hlbWU6Y3VzdG9tLWN1cnNvcnMu
aHRtbCksIHVybCgjbm9uZXhpc3RhbnQpLCB1cmwoI2hlbHApLCB0ZXh0Ij4KKyAgICA8cmVjdCB4
PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9ImJsdWUiIC8+Cis8L2c+Cis8
dGV4dCB5PSI2MiI+VGVzdCBzdmcgY3Vyc29yIGZhbGxiYWNrIHdpdGggaG90c3BvdCwgc2hvdWxk
IHNob3cgaGVscCBjdXJzb3I6PC90ZXh0PgorPGcgY3Vyc29yPSJ1cmwoI2hlbHApIDEgMSwgdGV4
dCI+CisgICAgPHJlY3QgeD0iMCIgeT0iNzAiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgZmlsbD0i
cmVkIiAvPgorPC9nPgorPHRleHQgeT0iMTMyIj5UZXN0IHN2ZyBjdXJzb3IgZmFsbGJhY2sgd2l0
aCBpbGxlZ2FsIGhvdHNwb3QsIHNob3VsZCBzaG93IGRlZmF1bHQgY3Vyc29yOjwvdGV4dD4KKzxn
IGN1cnNvcj0idXJsKCNoZWxwKSAxLCB0ZXh0Ij4KKyAgICA8cmVjdCB4PSIwIiB5PSIxNDAiIHdp
ZHRoPSI1MCIgaGVpZ2h0PSI1MCIgZmlsbD0icmVkIiAvPgorPC9nPgorPHRleHQgeT0iMjAyIj5U
ZXN0IHN2ZyBjdXJzb3IgZmFsbGJhY2sgd2l0aCBpbGxlZ2FsIGhvdHNwb3QsIHNob3VsZCBzaG93
IGRlZmF1bHQgY3Vyc29yOjwvdGV4dD4KKzxnIGN1cnNvcj0idXJsKCNoZWxwKSAxIDIgMywgdGV4
dCI+CisgICAgPHJlY3QgeD0iMCIgeT0iMjEwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9
InJlZCIgLz4KKzwvZz4KKzwvc3ZnPgorPHA+VGVzdGluZyBjdXJzb3IgZmFsbGJhY2sgaW4gc3Ry
aWN0IG1vZGUsIHNob3VsZCBzaG93IGhlbHAgY3Vyc29yOjwvcD4KKzxkaXYgc3R5bGU9J3dpZHRo
OjEwMHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsgY3Vyc29yOnVy
bChub25leGlzdGVudC5wbmcpLCB1cmwoInJlc291cmNlcy9oZWxwY3Vyc29yLnRpZmYiKSwgdGV4
dDsnPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9u
IDE2NTQ1KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDEwICs0OCwyMCBAQAogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJjc3NzdHlsZXNlbGVjdG9yLmgiCiAKKyNpZiBTVkdfU1VQUE9SVAorI2luY2x1ZGUgIlhM
aW5rTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNWR0N1cnNvckVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdMZW5ndGguaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBFdmVudE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKKyNpZiBTVkdfU1VQUE9SVAordXNpbmcgbmFtZXNwYWNlIFNWR05hbWVzOworI2Vu
ZGlmCiAKIHN0cnVjdCBTY2hlZHVsZWRFdmVudCB7CiAgICAgUmVmUHRyPEV2ZW50PiBtX2V2ZW50
OwpAQCAtNjQ2LDExICs2NTYsMzAgQEAgc3RhdGljIEN1cnNvciBzZWxlY3RDdXJzb3IoY29uc3Qg
TW91c2VFdgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlID8gbm9kZS0+cmVuZGVy
ZXIoKSA6IDA7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIgPyByZW5kZXJlci0+
c3R5bGUoKSA6IDA7CiAKLSAgICBpZiAoc3R5bGUgJiYgc3R5bGUtPmN1cnNvckltYWdlKCkgJiYg
IXN0eWxlLT5jdXJzb3JJbWFnZSgpLT5pbWFnZSgpLT5pc051bGwoKSkKLSAgICAgICAgaWYgKCFz
dHlsZS0+Y3Vyc29ySW1hZ2UoKS0+aXNFcnJvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4g
c3R5bGUtPmN1cnNvckltYWdlKCktPmltYWdlKCk7Ci0gICAgICAgIGVsc2UgCi0gICAgICAgICAg
ICBzdHlsZSA9IDA7IC8vIEZhbGxiYWNrIHRvIENVUlNPUl9BVVRPCisgICAgaWYgKHN0eWxlICYm
IHN0eWxlLT5jdXJzb3JzKCkpIHsKKyAgICAgICAgY29uc3QgQ3Vyc29yTGlzdCogY3Vyc29ycyA9
IHN0eWxlLT5jdXJzb3JzKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjdXJz
b3JzLT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNpbWFnZSA9ICgq
Y3Vyc29ycylbaV0uY3Vyc29ySW1hZ2U7CisgICAgICAgICAgICBJbnRQb2ludCBob3RTcG90ID0g
KCpjdXJzb3JzKVtpXS5ob3RTcG90OworI2lmIFNWR19TVVBQT1JUCisgICAgICAgICAgICBpZiAo
IWNpbWFnZSkgeworICAgICAgICAgICAgICAgIEVsZW1lbnQqIGUgPSBub2RlLT5kb2N1bWVudCgp
LT5nZXRFbGVtZW50QnlJZCgoKmN1cnNvcnMpW2ldLmN1cnNvckZyYWdtZW50SWQpOworICAgICAg
ICAgICAgICAgIGlmIChlICYmIGUtPmhhc1RhZ05hbWUoY3Vyc29yVGFnKSkgeworICAgICAgICAg
ICAgICAgICAgICBob3RTcG90LnNldFgoaW50KHN0YXRpY19jYXN0PFNWR0N1cnNvckVsZW1lbnQq
PihlKS0+eCgpLT52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIGhvdFNwb3Quc2V0WShp
bnQoc3RhdGljX2Nhc3Q8U1ZHQ3Vyc29yRWxlbWVudCo+KGUpLT55KCktPnZhbHVlKCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgY2ltYWdlID0gc3RhdGljX2Nhc3Q8U1ZHQ3Vyc29yRWxlbWVudCo+
KGUpLT5jYWNoZWRJbWFnZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyNl
bmRpZgorICAgICAgICAgICAgaWYgKCFjaW1hZ2UpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICBpZiAoY2ltYWdlLT5pbWFnZSgpLT5pc051bGwoKSkKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGlmICghY2ltYWdlLT5pc0Vycm9ySW1hZ2UoKSkgewor
ICAgICAgICAgICAgICAgIHJldHVybiBDdXJzb3IoY2ltYWdlLT5pbWFnZSgpLCBob3RTcG90KTsK
K30KKyAgICAgICAgfQorICAgIH0KIAogICAgIHN3aXRjaCAoc3R5bGUgPyBzdHlsZS0+Y3Vyc29y
KCkgOiBDVVJTT1JfQVVUTykgewogICAgICAgICBjYXNlIENVUlNPUl9BVVRPOiB7CkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Q3Vyc29yLmgJKHJldmlzaW9uIDE2NTQ1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBOU0N1cnNvcjsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEltYWdlOworICAgIGNsYXNzIEludFBvaW50OwogCiAj
aWYgUExBVEZPUk0oV0lOKQogICAgIHR5cGVkZWYgSENVUlNPUiBQbGF0Zm9ybUN1cnNvcjsKQEAg
LTY5LDcgKzcwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgICAgIHsgfQog
Ci0gICAgICAgIEN1cnNvcihJbWFnZSopOworICAgICAgICBDdXJzb3IoSW1hZ2UqLCBjb25zdCBJ
bnRQb2ludCYgaG90c3BvdCk7CiAgICAgICAgIEN1cnNvcihjb25zdCBDdXJzb3ImKTsKICAgICAg
ICAgfkN1cnNvcigpOwogICAgICAgICBDdXJzb3ImIG9wZXJhdG9yPShjb25zdCBDdXJzb3ImKTsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0N1cnNvck1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0JKHJldmlzaW9uIDE2NTQ1KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkZvdW5kYXRpb25F
eHRyYXMuaCIKICNpbXBvcnQgIkltYWdlLmgiCisjaW1wb3J0ICJJbnRQb2ludC5oIgogCiBAaW50
ZXJmYWNlIFdlYkNvcmVDdXJzb3JCdW5kbGUgOiBOU09iamVjdCB7IH0KIEBlbmQKQEAgLTQxLDE0
ICs0MiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBTaW1wbGUgTlNDdXJzb3IgY2FsbHMg
c2hvdWxkbid0IG5lZWQgcHJvdGVjdGlvbiwKIC8vIGJ1dCBjcmVhdGluZyBhIGN1cnNvciB3aXRo
IGEgYmFkIGltYWdlIG1pZ2h0IHRocm93LgogCi1zdGF0aWMgTlNDdXJzb3IqIGNyZWF0ZUN1c3Rv
bUN1cnNvcihJbWFnZSogaW1hZ2UpCitzdGF0aWMgTlNDdXJzb3IqIGNyZWF0ZUN1c3RvbUN1cnNv
cihJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RzcG90KQogewogICAgIC8vIEZJWE1F
OiBUaGUgY3Vyc29yIHdvbid0IGFuaW1hdGUuICBOb3Qgc3VyZSBpZiB0aGF0J3MgYSBiaWcgZGVh
bC4KICAgICBOU0ltYWdlKiBpbWcgPSBpbWFnZS0+Z2V0TlNJbWFnZSgpOwogICAgIGlmICghaW1n
KQogICAgICAgICByZXR1cm4gMDsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0g
ICAgcmV0dXJuIFtbTlNDdXJzb3IgYWxsb2NdIGluaXRXaXRoSW1hZ2U6aW1nIGhvdFNwb3Q6TlNa
ZXJvUG9pbnRdOworICAgIHJldHVybiBbW05TQ3Vyc29yIGFsbG9jXSBpbml0V2l0aEltYWdlOmlt
ZyBob3RTcG90OmhvdHNwb3RdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAg
cmV0dXJuIDA7CiB9CkBAIC03NCw4ICs3NSw4IEBAIHN0YXRpYyBOU0N1cnNvciogbGVha05hbWVk
Q3Vyc29yKGNvbnN0IGMKICAgICByZXR1cm4gMDsKIH0KIAotQ3Vyc29yOjpDdXJzb3IoSW1hZ2Uq
IGltYWdlKQotICAgIDogbV9pbXBsKEhhcmRSZXRhaW5XaXRoTlNSZWxlYXNlKGNyZWF0ZUN1c3Rv
bUN1cnNvcihpbWFnZSkpKQorQ3Vyc29yOjpDdXJzb3IoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQ
b2ludCYgaG90c3BvdCkKKyAgICA6IG1faW1wbChIYXJkUmV0YWluV2l0aE5TUmVsZWFzZShjcmVh
dGVDdXN0b21DdXJzb3IoaW1hZ2UsIGhvdHNwb3QpKSkKIHsKIH0KIApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9xdC9DdXJzb3JRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9x
dC9DdXJzb3JRdC5jcHAJKHJldmlzaW9uIDE2NTQ1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9xdC9D
dXJzb3JRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgQ3Vyc29yOjp+Q3Vy
c29yKCkKIHsKIH0KIAotQ3Vyc29yOjpDdXJzb3IoSW1hZ2UqKQorQ3Vyc29yOjpDdXJzb3IoSW1h
Z2UqLCBjb25zdCBJbnRQb2ludCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDE2NTQ1KQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTAsNyArNTEwLDcg
QEAgYm9vbCBTdHlsZUNTUzNJbmhlcml0ZWREYXRhOjpzaGFkb3dEYXRhRQogU3R5bGVJbmhlcml0
ZWREYXRhOjpTdHlsZUluaGVyaXRlZERhdGEoKQogICAgIDogaW5kZW50KFJlbmRlclN0eWxlOjpp
bml0aWFsVGV4dEluZGVudCgpKSwgbGluZV9oZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5l
SGVpZ2h0KCkpLCAKICAgICAgIHN0eWxlX2ltYWdlKFJlbmRlclN0eWxlOjppbml0aWFsTGlzdFN0
eWxlSW1hZ2UoKSksCi0gICAgICBjdXJzb3JfaW1hZ2UoMCksIGNvbG9yKFJlbmRlclN0eWxlOjpp
bml0aWFsQ29sb3IoKSksIAorICAgICAgY29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2xvcigp
KSwgCiAgICAgICBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKFJlbmRlclN0eWxlOjppbml0aWFs
SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSksIAogICAgICAgdmVydGljYWxfYm9yZGVyX3NwYWNp
bmcoUmVuZGVyU3R5bGU6OmluaXRpYWxWZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSksCiAgICAgICB3
aWRvd3MoUmVuZGVyU3R5bGU6OmluaXRpYWxXaWRvd3MoKSksIG9ycGhhbnMoUmVuZGVyU3R5bGU6
OmluaXRpYWxPcnBoYW5zKCkpLApAQCAtNTI1LDggKzUyNSw4IEBAIFN0eWxlSW5oZXJpdGVkRGF0
YTo6flN0eWxlSW5oZXJpdGVkRGF0YSgKIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0
ZWREYXRhKGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYgbyApCiAgICAgOiBTaGFyZWQ8U3R5bGVJ
bmhlcml0ZWREYXRhPigpLAogICAgICAgaW5kZW50KCBvLmluZGVudCApLCBsaW5lX2hlaWdodCgg
by5saW5lX2hlaWdodCApLCBzdHlsZV9pbWFnZSggby5zdHlsZV9pbWFnZSApLAotICAgICAgY3Vy
c29yX2ltYWdlKCBvLmN1cnNvcl9pbWFnZSApLCBmb250KCBvLmZvbnQgKSwKLSAgICAgIGNvbG9y
KCBvLmNvbG9yICksCisgICAgICBjdXJzb3JEYXRhKG8uY3Vyc29yRGF0YSksCisgICAgICBmb250
KCBvLmZvbnQgKSwgY29sb3IoIG8uY29sb3IgKSwKICAgICAgIGhvcml6b250YWxfYm9yZGVyX3Nw
YWNpbmcoIG8uaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyApLAogICAgICAgdmVydGljYWxfYm9y
ZGVyX3NwYWNpbmcoIG8udmVydGljYWxfYm9yZGVyX3NwYWNpbmcgKSwKICAgICAgIHdpZG93cyhv
LndpZG93cyksIG9ycGhhbnMoby5vcnBoYW5zKSwgcGFnZV9icmVha19pbnNpZGUoby5wYWdlX2Jy
ZWFrX2luc2lkZSkKQEAgLTUzOSw3ICs1MzksNyBAQCBib29sIFN0eWxlSW5oZXJpdGVkRGF0YTo6
b3BlcmF0b3I9PShjb25zCiAgICAgICAgIGluZGVudCA9PSBvLmluZGVudCAmJgogICAgICAgICBs
aW5lX2hlaWdodCA9PSBvLmxpbmVfaGVpZ2h0ICYmCiAgICAgICAgIHN0eWxlX2ltYWdlID09IG8u
c3R5bGVfaW1hZ2UgJiYKLSAgICAgICAgY3Vyc29yX2ltYWdlID09IG8uY3Vyc29yX2ltYWdlICYm
CisgICAgICAgIGN1cnNvckRhdGEgID09IG8uY3Vyc29yRGF0YSAmJgogICAgICAgICBmb250ID09
IG8uZm9udCAmJgogICAgICAgICBjb2xvciA9PSBvLmNvbG9yICYmCiAgICAgICAgIGhvcml6b250
YWxfYm9yZGVyX3NwYWNpbmcgPT0gby5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nICYmCkBAIC04
MjcsNyArODI3LDcgQEAgUmVuZGVyU3R5bGU6OkRpZmYgUmVuZGVyU3R5bGU6OmRpZmYoIGNvbgog
ICAgICAgICAhKGluaGVyaXRlZC0+aW5kZW50ID09IG90aGVyLT5pbmhlcml0ZWQtPmluZGVudCkg
fHwKICAgICAgICAgIShpbmhlcml0ZWQtPmxpbmVfaGVpZ2h0ID09IG90aGVyLT5pbmhlcml0ZWQt
PmxpbmVfaGVpZ2h0KSB8fAogICAgICAgICAhKGluaGVyaXRlZC0+c3R5bGVfaW1hZ2UgPT0gb3Ro
ZXItPmluaGVyaXRlZC0+c3R5bGVfaW1hZ2UpIHx8Ci0gICAgICAgICEoaW5oZXJpdGVkLT5jdXJz
b3JfaW1hZ2UgPT0gb3RoZXItPmluaGVyaXRlZC0+Y3Vyc29yX2ltYWdlKSB8fAorICAgICAgICAh
KGluaGVyaXRlZC0+Y3Vyc29yRGF0YSAgPT0gb3RoZXItPmluaGVyaXRlZC0+Y3Vyc29yRGF0YSkg
fHwKICAgICAgICAgIShpbmhlcml0ZWQtPmZvbnQgPT0gb3RoZXItPmluaGVyaXRlZC0+Zm9udCkg
fHwKICAgICAgICAgIShpbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcgPT0gb3Ro
ZXItPmluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZykgfHwKICAgICAgICAgIShp
bmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nID09IG90aGVyLT5pbmhlcml0ZWQtPnZl
cnRpY2FsX2JvcmRlcl9zcGFjaW5nKSB8fApAQCAtOTg2LDYgKzk4NiwzNSBAQCB2b2lkIFJlbmRl
clN0eWxlOjpzZXRDbGlwKCBMZW5ndGggdG9wLCBMCiAgICAgZGF0YS0+Y2xpcC5sZWZ0ID0gbGVm
dDsKIH0KIAordm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3Vyc29yKENhY2hlZEltYWdlKiBpbWFnZSwg
Y29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCit7CisgICAgQ3Vyc29yRGF0YSBkYXRhOworICAgIGRh
dGEuY3Vyc29ySW1hZ2UgPSBpbWFnZTsKKyAgICBkYXRhLmhvdFNwb3QgPSBob3RTcG90OworICAg
IGlmICghaW5oZXJpdGVkLmFjY2VzcygpLT5jdXJzb3JEYXRhKQorICAgICAgICBpbmhlcml0ZWQu
YWNjZXNzKCktPmN1cnNvckRhdGEgPSBuZXcgQ3Vyc29yTGlzdDsKKyAgICBpbmhlcml0ZWQuYWNj
ZXNzKCktPmN1cnNvckRhdGEtPmFwcGVuZChkYXRhKTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6
YWRkU1ZHQ3Vyc29yKGNvbnN0IFN0cmluZyYgZnJhZ21lbnRJZCkKK3sKKyAgICBDdXJzb3JEYXRh
IGRhdGE7CisgICAgZGF0YS5jdXJzb3JGcmFnbWVudElkID0gZnJhZ21lbnRJZDsKKyAgICBpZiAo
IWluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSkKKyAgICAgICAgaW5oZXJpdGVkLmFjY2Vz
cygpLT5jdXJzb3JEYXRhID0gbmV3IEN1cnNvckxpc3Q7CisgICAgaW5oZXJpdGVkLmFjY2Vzcygp
LT5jdXJzb3JEYXRhLT5hcHBlbmQoZGF0YSk7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldEN1
cnNvckxpc3QoUGFzc1JlZlB0cjxDdXJzb3JMaXN0PiBvdGhlcikKK3sKKyAgICBpbmhlcml0ZWQu
YWNjZXNzKCktPmN1cnNvckRhdGEgPSBvdGhlcjsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6Y2xl
YXJDdXJzb3JMaXN0KCkKK3sKKyAgICBpbmhlcml0ZWQuYWNjZXNzKCktPmN1cnNvckRhdGEgPSBu
ZXcgQ3Vyc29yTGlzdDsKK30KKwogYm9vbCBSZW5kZXJTdHlsZTo6Y29udGVudERhdGFFcXVpdmFs
ZW50KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdAogewogICAgIENvbnRlbnRE
YXRhKiBjMSA9IGNvbnRlbnQ7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTdHlsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclN0eWxlLmgJKHJldmlzaW9u
IDE2NTQ1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNiArMzYsNyBAQAogICovCiAKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUg
IkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJEYXRhUmVmLmgiCiAjaW5jbHVkZSAi
Rm9udC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTYyLDYgKzYzLDggQEAgdXNp
bmcgc3RkOjptYXg7CiBjbGFzcyBDU1NTdHlsZVNlbGVjdG9yOwogY2xhc3MgQ2FjaGVkSW1hZ2U7
CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKK3N0cnVjdCBDdXJzb3JEYXRhOworY2xhc3MgQ3Vyc29y
TGlzdDsKIGNsYXNzIFJlbmRlckFyZW5hOwogY2xhc3MgU2hhZG93VmFsdWU7CiBjbGFzcyBTdHJp
bmdJbXBsOwpAQCAtODI0LDcgKzgyNyw3IEBAIHB1YmxpYzoKICAgICBMZW5ndGggbGluZV9oZWln
aHQ7CiAKICAgICBDYWNoZWRJbWFnZSAqc3R5bGVfaW1hZ2U7Ci0gICAgQ2FjaGVkSW1hZ2UgKmN1
cnNvcl9pbWFnZTsKKyAgICBSZWZQdHI8Q3Vyc29yTGlzdD4gY3Vyc29yRGF0YTsKIAogICAgIEZv
bnQgZm9udDsKICAgICBDb2xvciBjb2xvcjsKQEAgLTg2OCw2ICs4NzEsMjkgQEAgZW51bSBFQ3Vy
c29yIHsKICAgICBDVVJTT1JfQ09MX1JFU0laRSwgQ1VSU09SX1JPV19SRVNJWkUsIENVUlNPUl9U
RVhULCBDVVJTT1JfV0FJVCwgQ1VSU09SX0hFTFAKIH07CiAKK3N0cnVjdCBDdXJzb3JEYXRhIHsK
KyAgICBDdXJzb3JEYXRhKCkKKyAgICAgICAgOiBjdXJzb3JJbWFnZSgwKQorICAgIHt9CisgICAg
CisgICAgSW50UG9pbnQgaG90U3BvdDsgLy8gZm9yIENTUzMgc3VwcG9ydAorICAgIENhY2hlZElt
YWdlKiBjdXJzb3JJbWFnZTsgLy8gd2VhayBwb2ludGVyLCB0aGUgQ1NTVmFsdWVJbWFnZSB0YWtl
cyBjYXJlIG9mIGRlbGV0aW5nIGN1cnNvckltYWdlCisgICAgU3RyaW5nIGN1cnNvckZyYWdtZW50
SWQ7IC8vIG9ubHkgdXNlZCBmb3IgU1ZHQ3Vyc29yRWxlbWVudCwgYSBkaXJlY3QgcG9pbnRlciB3
b3VsZCBnZXQgc3RhbGUKK307CisKK2NsYXNzIEN1cnNvckxpc3QgOiBwdWJsaWMgU2hhcmVkPEN1
cnNvckxpc3Q+IHsKK3B1YmxpYzoKKyAgICBjb25zdCBDdXJzb3JEYXRhJiBvcGVyYXRvcltdKGlu
dCBpKSBjb25zdCB7CisgICAgICAgIHJldHVybiBtX3ZlY3RvcltpXTsKKyAgICB9CisKKyAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLnNpemUoKTsgfQorICAgIHZvaWQg
YXBwZW5kKGNvbnN0IEN1cnNvckRhdGEmIGN1cnNvckRhdGEpIHsgbV92ZWN0b3IuYXBwZW5kKGN1
cnNvckRhdGEpOyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPEN1cnNvckRhdGE+IG1fdmVjdG9y
OworfTsKKwogZW51bSBDb250ZW50VHlwZSB7CiAgICAgQ09OVEVOVF9OT05FLCBDT05URU5UX09C
SkVDVCwgQ09OVEVOVF9URVhULCBDT05URU5UX0NPVU5URVIKIH07CkBAIC0xMzE0LDcgKzEzNDAs
NyBAQCBwdWJsaWM6CiAKICAgICBFQ3Vyc29yIGN1cnNvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVDdXJzb3I+KGluaGVyaXRlZF9mbGFncy5fY3Vyc29yX3N0eWxlKTsgfQogICAgIAot
ICAgIENhY2hlZEltYWdlICpjdXJzb3JJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+
Y3Vyc29yX2ltYWdlOyB9CisgICAgQ3Vyc29yTGlzdCogY3Vyc29ycygpIGNvbnN0IHsgcmV0dXJu
IGluaGVyaXRlZC0+Y3Vyc29yRGF0YS5nZXQoKTsgfQogCiAgICAgc2hvcnQgd2lkb3dzKCkgY29u
c3QgeyByZXR1cm4gaW5oZXJpdGVkLT53aWRvd3M7IH0KICAgICBzaG9ydCBvcnBoYW5zKCkgY29u
c3QgeyByZXR1cm4gaW5oZXJpdGVkLT5vcnBoYW5zOyB9CkBAIC0xNTIxLDcgKzE1NDcsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0UGFkZGluZ1JpZ2h0KExlbmd0aCB2KSAgeyAgU0VUX1ZBUihz
dXJyb3VuZCxwYWRkaW5nLnJpZ2h0LHYpIH0KIAogICAgIHZvaWQgc2V0Q3Vyc29yKCBFQ3Vyc29y
IGMgKSB7IGluaGVyaXRlZF9mbGFncy5fY3Vyc29yX3N0eWxlID0gYzsgfQotICAgIHZvaWQgc2V0
Q3Vyc29ySW1hZ2UoIENhY2hlZEltYWdlICp2ICkgeyBTRVRfVkFSKGluaGVyaXRlZCxjdXJzb3Jf
aW1hZ2UsdikgfQorICAgIHZvaWQgYWRkQ3Vyc29yKENhY2hlZEltYWdlKiwgY29uc3QgSW50UG9p
bnQmID0gSW50UG9pbnQoKSk7CisgICAgdm9pZCBhZGRTVkdDdXJzb3IoY29uc3QgU3RyaW5nJik7
CisgICAgdm9pZCBzZXRDdXJzb3JMaXN0KFBhc3NSZWZQdHI8Q3Vyc29yTGlzdD4pOworICAgIHZv
aWQgY2xlYXJDdXJzb3JMaXN0KCk7CiAKICAgICBib29sIGZvcmNlQmFja2dyb3VuZHNUb1doaXRl
KCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193
aGl0ZTsgfQogICAgIHZvaWQgc2V0Rm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoYm9vbCBiPXRydWUp
IHsgaW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSA9IGI7IH0K
</data>
<flag name="review"
          id="3528"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>