<?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>27048</bug_id>
          
          <creation_ts>2009-07-07 16:30:07 -0700</creation_ts>
          <short_desc>[Gtk] Implement STATE_FOCUSED, STATE_FOCUSABLE, and corresponding events for text objects</short_desc>
          <delta_ts>2010-12-14 07:35:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>25531</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Joanmarie Diggs">jdiggs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apinheiro</cc>
    
    <cc>mario</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>walker.willie</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>130303</commentid>
    <comment_count>0</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-07-07 16:30:07 -0700</bug_when>
    <thetext>According to: http://library.gnome.org/devel/atk/stable/atk-AtkState.html:

~~~
ATK_STATE_FOCUSABLE
	Indicates this object can accept keyboard focus, which means all events resulting from typing on the keyboard will normally be passed to it when it has focus

ATK_STATE_FOCUSED
	Indicates this object currently has the keyboard focus 
~~~

While I typically think of &quot;focusable&quot; being akin to &quot;I can Tab to it,&quot; it seems to be used to mean &quot;the active object.&quot; Thus we expect objects which implement the accessible text interface to have STATE_FOCUSABLE if the user can interact with the object via keyboard and STATE_FOCUSED if the user is interacting with the object. The corresponding events (focus: and object:state-changed:focused) are also expected.

WebKit objects of ROLE_TEXT lack these states and events.

While I can work around the absence of these things in some cases, there are other cases in which one needs to know if an object has focus. Example: distinguishing caret navigation related object:text-caret-moved and object:text-selection-changed events from the same events seen when using Epiphany&apos;s Find toolbar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300992</commentid>
    <comment_count>1</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-10-28 04:46:22 -0700</bug_when>
    <thetext>Hi Joanie, 

It would be wonderful if you could provide one of those manual test cases, that would probably help a lot both to properly understand the problem and to check further patches.

Not sure if that&apos;s possible (I know you&apos;re quite busy these days), but you know... hope is always there and I don&apos;t think there&apos;s anything bad in just checking :-). Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302328</commentid>
    <comment_count>2</comment_count>
      <attachid>72440</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2010-10-30 10:37:21 -0700</bug_when>
    <thetext>Created attachment 72440
requested manual test case

Mario, I am more than happy to provide test cases in exchange for your awesome work. :-)

1. Open the attached in Epiphany and enable caret browsing.

2. Arrow Up and Down amongst the lines.

3. Click to move the caret from one paragraph to another.

Expected results: After steps 2 and 3, when each paragraph* gets the caret:

1. The AtkObject associated with the paragraph would emit an object:state-changed:focused event with detail1 == 1. A focus: event would also be emitted. And the AtkObject&apos;s state would change to include ATK_STATE_FOCUSED.

2. If the cursor was in some other paragraph, the AtkObject associated with the paragraph which was just exited would emit an object:state-changed:focused event with detail1 == 0. Its state would change to NOT include ATK_STATE_FOCUSED.

On a related note, any object which might at some point have ATK_STATE_FOCUSED should also have ATK_STATE_FOCUSABLE at all times.

* You&apos;ll notice that there&apos;s a forced line break in the first paragraph which of course results in the first paragraph consisting of two WebKit text render objects. We do NOT want the events or state changes to occur if the user moves from render object to render object *within the same paragraph*. We only want them when the user navigates from one exposed-to-ATs object to another exposed-to-ATs object.

Hope this helps. Let me know if you have questions. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303807</commentid>
    <comment_count>3</comment_count>
      <attachid>72774</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-11-02 17:10:37 -0700</bug_when>
    <thetext>Created attachment 72774
Patch proposal

(In reply to comment #2)
&gt; [...]
&gt; Hope this helps. Let me know if you have questions. Thanks!

Really, really helpful... so much helpful that I&apos;m now attaching a patch and asking for review over it :-). At the end I had to write a GTK-specific solution because it seems WebCore does not support focusing on text objects, so it&apos;s not as much a general solution as I&apos;d have liked... but it works great with Accerciser, so I think it&apos;s worth it to propose it for review at this point.

Thanks Joanie!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303962</commentid>
    <comment_count>4</comment_count>
      <attachid>72807</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-11-03 03:48:41 -0700</bug_when>
    <thetext>Created attachment 72807
Patch proposal

Ooops! This is the right patch (tm) for review. The one I attached yesterday contained some &quot;experimental&quot; lines that shouldn&apos;t have ever seen the sunlight :-)

Sorry!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306299</commentid>
    <comment_count>5</comment_count>
      <attachid>73270</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-11-08 12:57:14 -0800</bug_when>
    <thetext>Created attachment 73270
Patch proposal

Yet another version of the patch, hopefully better than the previous one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310765</commentid>
    <comment_count>6</comment_count>
      <attachid>74223</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-11-18 03:14:58 -0800</bug_when>
    <thetext>Created attachment 74223
Patch proposal + Layout Test

Yet^2 another version more, this time featuring an useful Layout Test (that I should have written before, :/)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310776</commentid>
    <comment_count>7</comment_count>
      <attachid>74224</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-11-18 03:24:48 -0800</bug_when>
    <thetext>Created attachment 74224
Patch proposal + Layout Test

(In reply to comment #6)
&gt; Created an attachment (id=74223) [details]
&gt; Patch proposal + Layout Test
&gt; 
&gt; Yet^2 another version more, this time featuring an useful Layout Test (that I should have written before, :/)

Stupid me, I forgot to add the -expected.txt file in the previous patch. This is the good-really-good-I-swear patch to be reviewed.

Sorry for the noise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321025</commentid>
    <comment_count>8</comment_count>
      <attachid>74224</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-12-13 03:44:59 -0800</bug_when>
    <thetext>Comment on attachment 74224
Patch proposal + Layout Test

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

Mostly looks good to me, just have some doubts/comments, see below.

&gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:506
&gt; +    Settings* settings = coreObject-&gt;document()-&gt;frame()-&gt;settings();

Some of those can be in some situations NULL. At the very least frame(). If this function can never be called in those cases then you should ASSERT.

&gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:521
&gt; +    return !selectionBelongsToObject(coreObject, selection) || selection.isNone() ? 0 : 1;

How is this grouping exactly? It&apos;s a quite confusing statement.

&gt; WebCore/editing/gtk/SelectionControllerGtk.cpp:48
&gt; +    static RefPtr&lt;AccessibilityObject&gt; oldObject = 0;

Mmm, I think you want to use DEFINE_STATIC_LOCAL here?

&gt; WebCore/editing/gtk/SelectionControllerGtk.cpp:82
&gt; +    // Reset lastFocuseNode and return for no valid selections.

I don&apos;t see that reset happening?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321259</commentid>
    <comment_count>9</comment_count>
      <attachid>76411</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-12-13 11:13:50 -0800</bug_when>
    <thetext>Created attachment 76411
Patch proposal + Layout Test

Attaching patch addressing all those issues. See details below...

(In reply to comment #8)
&gt; (From update of attachment 74224 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74224&amp;action=review
&gt; 
&gt; Mostly looks good to me, just have some doubts/comments, see below.
&gt; 
&gt; &gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:506
&gt; &gt; +    Settings* settings = coreObject-&gt;document()-&gt;frame()-&gt;settings();
&gt; 
&gt; Some of those can be in some situations NULL. At the very least frame(). If this function can never be called in those cases then you should ASSERT.

Fixed, by adding extra checks to the function (better to be safe!)

&gt; &gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:521
&gt; &gt; +    return !selectionBelongsToObject(coreObject, selection) || selection.isNone() ? 0 : 1;
&gt; 
&gt; How is this grouping exactly? It&apos;s a quite confusing statement.

Fixed by replacing it for equivalent code.

&gt; &gt; WebCore/editing/gtk/SelectionControllerGtk.cpp:48
&gt; &gt; +    static RefPtr&lt;AccessibilityObject&gt; oldObject = 0;
&gt; 
&gt; Mmm, I think you want to use DEFINE_STATIC_LOCAL here?

Fixed.

&gt; &gt; WebCore/editing/gtk/SelectionControllerGtk.cpp:82
&gt; &gt; +    // Reset lastFocuseNode and return for no valid selections.
&gt; 
&gt; I don&apos;t see that reset happening?

I meant resetting it to &apos;zero&apos;. Fixed comment

Now asking for review again then...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321930</commentid>
    <comment_count>10</comment_count>
      <attachid>76411</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-12-14 06:11:31 -0800</bug_when>
    <thetext>Comment on attachment 76411
Patch proposal + Layout Test

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

&gt; WebCore/editing/gtk/SelectionControllerGtk.cpp:43
&gt; +static void maybeEmitTextFocusChange(PassRefPtr&lt;AccessibilityObject&gt; prpObject)

Can you use a full name instead of &apos;prpObject&apos; when landing? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321956</commentid>
    <comment_count>11</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-12-14 07:28:05 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 76411 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76411&amp;action=review
&gt; 
&gt; &gt; WebCore/editing/gtk/SelectionControllerGtk.cpp:43
&gt; &gt; +static void maybeEmitTextFocusChange(PassRefPtr&lt;AccessibilityObject&gt; prpObject)
&gt; 
&gt; Can you use a full name instead of &apos;prpObject&apos; when landing? Thanks.

I used that prefix according to the Guidelines written in here:

http://webkit.org/coding/RefPtr.html &gt; Guidelines &gt; Function arguments

Agree it&apos;s a weird prefix, although not that weird once you know it means &quot;PassRefPtr&quot; :-). Other than that, it&apos;s widely used in WebCore:

dom/Node.cpp:2572:bool Node::dispatchEvent(PassRefPtr&lt;Event&gt; prpEvent)
dom/Node.cpp:2596:bool Node::dispatchGenericEvent(PassRefPtr&lt;Event&gt; prpEvent)
dom/NamedNodeMap.cpp:248:void NamedNodeMap::addAttribute(PassRefPtr&lt;Attribute&gt; prpAttribute)
dom/Range.cpp:919:void Range::insertNode(PassRefPtr&lt;Node&gt; prpNewNode, ExceptionCode&amp; ec)
editing/CompositeEditCommand.cpp:273:void CompositeEditCommand::mergeIdenticalElements(PassRefPtr&lt;Element&gt; prpFirst, PassRefPtr&lt;Element&gt; prpSecond)
[...]

Hence, as agreed via IRC with Xan, committing the patch as it is right now...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321958</commentid>
    <comment_count>12</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-12-14 07:35:44 -0800</bug_when>
    <thetext>Committed r74025: &lt;http://trac.webkit.org/changeset/74025&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>72440</attachid>
            <date>2010-10-30 10:37:21 -0700</date>
            <delta_ts>2010-10-30 10:37:21 -0700</delta_ts>
            <desc>requested manual test case</desc>
            <filename>test-case.html</filename>
            <type>text/html</type>
            <size>127</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPjx0aXRsZT5UZXN0PC90aXRsZT48L2hlYWQ+Cjxib2R5Pgo8cD5GaXJzdCBw
YXJhZ3JhcGg8YnIgLz5TZWNvbmQgbGluZTwvcD4KPHA+U2Vjb25kIHBhcmFncmFwaDwvcD4KPC9i
b2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72774</attachid>
            <date>2010-11-02 17:10:37 -0700</date>
            <delta_ts>2010-11-03 03:48:41 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2010-11-02-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>14189</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSAwNDJlNDM4MzhmMDk4YzQyNThiMzA5MTVmZmEzZGJiMWNiNjk5MDVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBXZWQsIDMgTm92IDIwMTAgMDA6MjQ6MjQgKzAxMDAKU3ViamVjdDogW1BBVENI
XSAyMDEwLTExLTAyICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
CiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFtHdGtdIEltcGxl
bWVudCBTVEFURV9GT0NVU0VELCBTVEFURV9GT0NVU0FCTEUsIGFuZCBjb3JyZXNwb25kaW5nIGV2
ZW50cyBmb3IgdGV4dCBvYmplY3RzCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3MDQ4CgogICAgICAgIEhhbmRsZSBmb2N1cyBjaGFuZ2UgZm9yIHRleHQg
b2JqZWN0cyBiYXNlZCBpbiBjYXJldCBjaGFuZ2VzLgoKICAgICAgICBBcyB0ZXh0IG9iamVjdHMg
KHN1Y2ggYXMgcGFyYWdyYXBocykgc2VlbSBub3QgdG8gYWNjZXB0IGZvY3VzIGluCiAgICAgICAg
V2ViQ29yZSBpbiB0aGUgc2FtZSB3YXkgb3RoZXIgb2JqZWN0cyAodGV4dCBjb250cm9scykgZG8s
IGEKICAgICAgICBHdGstc3BlY2lmaWMgd29ya2Fyb3VuZCBpcyBuZWVkZWQgdG8gZXhwb3NlIHRo
aXMgc3RhdGVzIGFuZCB0aGUKICAgICAgICByZWxhdGVkIGV2ZW50cyB0byBBVEstYmFzZWQgYXNz
aXN0aXZlIHRlY2hub2xvZ2llcy4KCiAgICAgICAgRW5zdXJlIHRoYXQgdGV4dCBvYmplY3RzIGFy
ZSBleHBvc2VkIHdpdGggdGhlIEFUS19TVEFURV9GT0NVU0FCTEUKICAgICAgICBzdGF0ZSwgYW5k
IHRoYXQgdGhlIEFUS19TVEFURV9GT0NVU0VEIHN0YXRlIGlzIGFkZGVkIHRvIHRob3NlCiAgICAg
ICAgdGV4dCBvYmplY3RzIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnRseSBhY3RpdmUgY2FyZXQgc2Vs
ZWN0aW9uLgoKICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQXRrLmNwcDoKICAgICAgICAoc2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0KTogTW92ZWQg
dXB3YXJkcyB0byB1c2UgaXQgZnJvbQogICAgICAgIHRoZSBuZXcgaXNUZXh0V2l0aENhcmV0KCkg
ZnVuY3Rpb24uCiAgICAgICAgKGlzVGV4dFdpdGhDYXJldCk6IE5ldywgY2hlY2tzIHdoZXRoZXIg
YW4gYWNjZXNzaWJpbGl0eSBvYmplY3QKICAgICAgICByZXByZXNlbnRzIGEgdGV4dCBvYmplY3Qg
d2l0aCB0aGUgY3VycmVudCBjYXJldCBzZWxlY3Rpb24gb24gaXQuCiAgICAgICAgKHNldEF0a1N0
YXRlU2V0RnJvbUNvcmVPYmplY3QpOiBBZGQgdGhlIEFUS19TVEFURV9GT0NVU0VEIHN0YXRlCiAg
ICAgICAgd2hlbiBhbHNvIHdoZW4gaXNUZXh0V2l0aENhcmV0KGNvcmVPYmplY3QpIHJldHVybnMg
dHJ1ZS4KICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfcmVmX3N0YXRlX3NldCk6IEFkZCB0aGUg
QVRLX1NUQVRFX0ZPQ1VTQUJMRQogICAgICAgIHN0YXRlIHRvIHRleHQgb2JqZWN0cyBhbmQgdGhv
c2Ugd2l0aCB0aGUgQVRLX1JPTEVfUEFSQUdSQVBIIHJvbGUuCgogICAgICAgIE1ha2Ugc3VyZSB0
aGUgcHJvcGVyIGV2ZW50cyBhc3NvY2lhdGVkIHRvIGEgY2hhbmdlIG9mIGZvY3VzIGFyZQogICAg
ICAgIGVtaXR0ZWQsIGJhc2VkIG9uIGNhcmV0IGNoYW5nZXMgYWNyb3NzIGRpZmZlcmVudCBhY2Nl
c3NpYmlsaXR5CiAgICAgICAgb2JqZWN0cy4gQWxzbywgcmVmYWN0b3JlZCB0aGUgY29kZSBpbiBt
b3JlIG1hbmFnZWFibGUgYW5kCiAgICAgICAgdW5kZXJzdGFuZGFibGUgaGVscGVyIGZ1bmN0aW9u
cy4KCiAgICAgICAgKiBlZGl0aW5nL2d0ay9TZWxlY3Rpb25Db250cm9sbGVyR3RrLmNwcDoKICAg
ICAgICAoV2ViQ29yZTo6ZW1pdFRleHRTZWxlY3Rpb25DaGFuZ2UpOiBOZXcsIGluY2x1ZGVzIHRo
ZSBzcGVjaWZpYwogICAgICAgIGNvZGUgZm9ybWVybHkgcGxhY2VkIGluIG5vdGlmeUFjY2Vzc2li
aWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UoKSB0bwogICAgICAgIGVtaXQgdGhlICd0ZXh0LWNhcmV0
LW1vdmVkJyBhbmQgJ3RleHQtc2VsZWN0aW9uLWNoYW5nZScgc2lnbmFscy4KICAgICAgICAoV2Vi
Q29yZTo6bWF5YmVFbWl0VGV4dEZvY3VzQ2hhbmdlKTogTmV3LCB0YWtlcyBjYXJlIG9mIGVtaXR0
aW5nCiAgICAgICAgdGhlICdmb2N1cy1ldmVudCcgYW5kICdzdGF0ZS1jaGFuZ2VkOjpmb2N1c2Vk
JyBzaWduYWxzIHdoZW4KICAgICAgICBuZWVkZWQsIHRoYXQgaXMsIHdoZW4gYSBjaGFuZ2UgaW4g
dGhlIHNlbGVjdGlvbiBoYXBwZW5zIGFjcm9zcwogICAgICAgIGRpZmZlcmVudCBhY2Nlc3NpYmxl
IG9iamVjdHMuCiAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFj
Y2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UpOgogICAgICAgIFJlZmFjdG9yZWQgc29tZSBj
b2RlIGhlcmUsIGJ5IHVzaW5nIHRoZSBuZXcgaGVscGVyIGZ1bmN0aW9ucy4KLS0tCiBXZWJDb3Jl
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDQgKysrKysr
KysrKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgICAgICAgICAg
fCAgIDc0ICsrKysrKysrKysrKy0tLS0tCiBXZWJDb3JlL2VkaXRpbmcvZ3RrL1NlbGVjdGlvbkNv
bnRyb2xsZXJHdGsuY3BwICAgICB8ICAgODUgKysrKysrKysrKysrKysrLS0tLS0KIDMgZmlsZXMg
Y2hhbmdlZCwgMTYwIGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzkzZTUyMi4uZDQ1
NWRlMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMC0xMS0wMiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1z
YW5jaGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW0d0a10gSW1wbGVtZW50IFNUQVRFX0ZPQ1VTRUQsIFNUQVRFX0ZPQ1VTQUJM
RSwgYW5kIGNvcnJlc3BvbmRpbmcgZXZlbnRzIGZvciB0ZXh0IG9iamVjdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MDQ4CisKKyAgICAgICAgSGFu
ZGxlIGZvY3VzIGNoYW5nZSBmb3IgdGV4dCBvYmplY3RzIGJhc2VkIGluIGNhcmV0IGNoYW5nZXMu
CisKKyAgICAgICAgQXMgdGV4dCBvYmplY3RzIChzdWNoIGFzIHBhcmFncmFwaHMpIHNlZW0gbm90
IHRvIGFjY2VwdCBmb2N1cyBpbgorICAgICAgICBXZWJDb3JlIGluIHRoZSBzYW1lIHdheSBvdGhl
ciBvYmplY3RzICh0ZXh0IGNvbnRyb2xzKSBkbywgYQorICAgICAgICBHdGstc3BlY2lmaWMgd29y
a2Fyb3VuZCBpcyBuZWVkZWQgdG8gZXhwb3NlIHRoaXMgc3RhdGVzIGFuZCB0aGUKKyAgICAgICAg
cmVsYXRlZCBldmVudHMgdG8gQVRLLWJhc2VkIGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMuCisKKyAg
ICAgICAgRW5zdXJlIHRoYXQgdGV4dCBvYmplY3RzIGFyZSBleHBvc2VkIHdpdGggdGhlIEFUS19T
VEFURV9GT0NVU0FCTEUKKyAgICAgICAgc3RhdGUsIGFuZCB0aGF0IHRoZSBBVEtfU1RBVEVfRk9D
VVNFRCBzdGF0ZSBpcyBhZGRlZCB0byB0aG9zZQorICAgICAgICB0ZXh0IG9iamVjdHMgY29udGFp
bmluZyB0aGUgY3VycmVudGx5IGFjdGl2ZSBjYXJldCBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CisgICAg
ICAgIChzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QpOiBNb3ZlZCB1cHdhcmRzIHRvIHVzZSBpdCBm
cm9tCisgICAgICAgIHRoZSBuZXcgaXNUZXh0V2l0aENhcmV0KCkgZnVuY3Rpb24uCisgICAgICAg
IChpc1RleHRXaXRoQ2FyZXQpOiBOZXcsIGNoZWNrcyB3aGV0aGVyIGFuIGFjY2Vzc2liaWxpdHkg
b2JqZWN0CisgICAgICAgIHJlcHJlc2VudHMgYSB0ZXh0IG9iamVjdCB3aXRoIHRoZSBjdXJyZW50
IGNhcmV0IHNlbGVjdGlvbiBvbiBpdC4KKyAgICAgICAgKHNldEF0a1N0YXRlU2V0RnJvbUNvcmVP
YmplY3QpOiBBZGQgdGhlIEFUS19TVEFURV9GT0NVU0VEIHN0YXRlCisgICAgICAgIHdoZW4gYWxz
byB3aGVuIGlzVGV4dFdpdGhDYXJldChjb3JlT2JqZWN0KSByZXR1cm5zIHRydWUuCisgICAgICAg
ICh3ZWJraXRfYWNjZXNzaWJsZV9yZWZfc3RhdGVfc2V0KTogQWRkIHRoZSBBVEtfU1RBVEVfRk9D
VVNBQkxFCisgICAgICAgIHN0YXRlIHRvIHRleHQgb2JqZWN0cyBhbmQgdGhvc2Ugd2l0aCB0aGUg
QVRLX1JPTEVfUEFSQUdSQVBIIHJvbGUuCisKKyAgICAgICAgTWFrZSBzdXJlIHRoZSBwcm9wZXIg
ZXZlbnRzIGFzc29jaWF0ZWQgdG8gYSBjaGFuZ2Ugb2YgZm9jdXMgYXJlCisgICAgICAgIGVtaXR0
ZWQsIGJhc2VkIG9uIGNhcmV0IGNoYW5nZXMgYWNyb3NzIGRpZmZlcmVudCBhY2Nlc3NpYmlsaXR5
CisgICAgICAgIG9iamVjdHMuIEFsc28sIHJlZmFjdG9yZWQgdGhlIGNvZGUgaW4gbW9yZSBtYW5h
Z2VhYmxlIGFuZAorICAgICAgICB1bmRlcnN0YW5kYWJsZSBoZWxwZXIgZnVuY3Rpb25zLgorCisg
ICAgICAgICogZWRpdGluZy9ndGsvU2VsZWN0aW9uQ29udHJvbGxlckd0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjplbWl0VGV4dFNlbGVjdGlvbkNoYW5nZSk6IE5ldywgaW5jbHVkZXMgdGhlIHNw
ZWNpZmljCisgICAgICAgIGNvZGUgZm9ybWVybHkgcGxhY2VkIGluIG5vdGlmeUFjY2Vzc2liaWxp
dHlGb3JTZWxlY3Rpb25DaGFuZ2UoKSB0bworICAgICAgICBlbWl0IHRoZSAndGV4dC1jYXJldC1t
b3ZlZCcgYW5kICd0ZXh0LXNlbGVjdGlvbi1jaGFuZ2UnIHNpZ25hbHMuCisgICAgICAgIChXZWJD
b3JlOjptYXliZUVtaXRUZXh0Rm9jdXNDaGFuZ2UpOiBOZXcsIHRha2VzIGNhcmUgb2YgZW1pdHRp
bmcKKyAgICAgICAgdGhlICdmb2N1cy1ldmVudCcgYW5kICdzdGF0ZS1jaGFuZ2VkOjpmb2N1c2Vk
JyBzaWduYWxzIHdoZW4KKyAgICAgICAgbmVlZGVkLCB0aGF0IGlzLCB3aGVuIGEgY2hhbmdlIGlu
IHRoZSBzZWxlY3Rpb24gaGFwcGVucyBhY3Jvc3MKKyAgICAgICAgZGlmZmVyZW50IGFjY2Vzc2li
bGUgb2JqZWN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om5vdGlm
eUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UpOgorICAgICAgICBSZWZhY3RvcmVkIHNv
bWUgY29kZSBoZXJlLCBieSB1c2luZyB0aGUgbmV3IGhlbHBlciBmdW5jdGlvbnMuCisKIDIwMTAt
MTEtMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwIGIvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKaW5kZXggNzI2Y2Ri
MS4uYTQ0Y2RlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0
ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNp
bmNsdWRlICJSZW5kZXJMaXN0SXRlbS5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RNYXJrZXIuaCIK
ICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJX
ZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmgiCkBAIC00NzYsNiArNDc3LDUwIEBAIHN0YXRpYyBB
dGtSb2xlIHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9yb2xlKEF0a09iamVjdCogb2JqZWN0KQogICAg
IHJldHVybiBhdGtSb2xlKGF4T2JqZWN0LT5yb2xlVmFsdWUoKSk7CiB9CiAKK3N0YXRpYyBib29s
IHNlbGVjdGlvbkJlbG9uZ3NUb09iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0
LCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7CisgICAgaWYgKCFjb3JlT2JqZWN0IHx8
ICFjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGlvbi50b05vcm1h
bGl6ZWRSYW5nZSgpOworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIFdlIHdhbnQgdG8gY2hlY2sgdGhhdCBib3RoIHRoZSBzZWxlY3Rpb24gaW50ZXJzZWN0
cyB0aGUgbm9kZQorICAgIC8vIEFORCB0aGF0IHRoZSBzZWxlY3Rpb24gaXMgbm90IGp1c3QgInRv
dWNoaW5nIiBvbmUgb2YgdGhlCisgICAgLy8gYm91bmRhcmllcyBmb3IgdGhlIHNlbGVjdGVkIG5v
ZGUuIFdlIHdhbnQgdG8gY2hlY2sgd2hldGhlciB0aGUKKyAgICAvLyBub2RlIGlzIGFjdHVhbGx5
IGluc2lkZSB0aGUgcmVnaW9uLCBhdCBsZWFzdCBwYXJ0aWFsbHkuCisgICAgTm9kZSogbm9kZSA9
IGNvcmVPYmplY3QtPm5vZGUoKTsKKyAgICBOb2RlKiBsYXN0RGVzY2VuZGFudCA9IG5vZGUtPmxh
c3REZXNjZW5kYW50KCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgcmV0dXJuIChy
YW5nZS0+aW50ZXJzZWN0c05vZGUobm9kZSwgZWMpCisgICAgICAgICAgICAmJiAocmFuZ2UtPmVu
ZENvbnRhaW5lcigpICE9IG5vZGUgfHwgcmFuZ2UtPmVuZE9mZnNldCgpKQorICAgICAgICAgICAg
JiYgKHJhbmdlLT5zdGFydENvbnRhaW5lcigpICE9IGxhc3REZXNjZW5kYW50IHx8IHJhbmdlLT5z
dGFydE9mZnNldCgpICE9IGxhc3RPZmZzZXRJbk5vZGUobGFzdERlc2NlbmRhbnQpKSk7Cit9CisK
K3N0YXRpYyBib29sIGlzVGV4dFdpdGhDYXJldChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2Jq
ZWN0KQoreworICAgIGlmICghY29yZU9iamVjdCB8fCBjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU2V0dGluZ3Mq
IHNldHRpbmdzID0gY29yZU9iamVjdC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2V0dGluZ3MoKTsK
KyAgICBpZiAoIXNldHRpbmdzIHx8ICFzZXR0aW5ncy0+Y2FyZXRCcm93c2luZ0VuYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQ2hlY2sgdGV4dCBvYmplY3RzIGFuZCBw
YXJhZ3JhcGhzIG9ubHkuCisgICAgQXRrT2JqZWN0KiBheE9iamVjdCA9IGNvcmVPYmplY3QtPndy
YXBwZXIoKTsKKyAgICBBdGtSb2xlIHJvbGUgPSBheE9iamVjdCA/IGF0a19vYmplY3RfZ2V0X3Jv
bGUoYXhPYmplY3QpIDogQVRLX1JPTEVfSU5WQUxJRDsKKyAgICBpZiAocm9sZSAhPSBBVEtfUk9M
RV9URVhUICYmIHJvbGUgIT0gQVRLX1JPTEVfUEFSQUdSQVBIKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAvLyBGaW5hbGx5LCBjaGVjayB3aGV0aGVyIHRoZSBjYXJldCBpcyBzZXQgaW4g
dGhlIGN1cnJlbnQgb2JqZWN0LgorICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gY29y
ZU9iamVjdC0+c2VsZWN0aW9uKCk7CisgICAgaWYgKCFzZWxlY3Rpb24uaXNDYXJldCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gIXNlbGVjdGlvbkJlbG9uZ3NUb09iamVj
dChjb3JlT2JqZWN0LCBzZWxlY3Rpb24pIHx8IHNlbGVjdGlvbi5pc05vbmUoKSA/IDAgOiAxOwor
fQorCiBzdGF0aWMgdm9pZCBzZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0KEFjY2Vzc2liaWxp
dHlPYmplY3QqIGNvcmVPYmplY3QsIEF0a1N0YXRlU2V0KiBzdGF0ZVNldCkKIHsKICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBjb3JlT2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKQEAg
LTUwMyw3ICs1NDgsNyBAQCBzdGF0aWMgdm9pZCBzZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0
KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIEF0a1N0YQogICAgIGlmIChjb3JlT2Jq
ZWN0LT5jYW5TZXRGb2N1c0F0dHJpYnV0ZSgpKQogICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9z
dGF0ZShzdGF0ZVNldCwgQVRLX1NUQVRFX0ZPQ1VTQUJMRSk7CiAKLSAgICBpZiAoY29yZU9iamVj
dC0+aXNGb2N1c2VkKCkpCisgICAgaWYgKGNvcmVPYmplY3QtPmlzRm9jdXNlZCgpIHx8IGlzVGV4
dFdpdGhDYXJldChjb3JlT2JqZWN0KSkKICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUo
c3RhdGVTZXQsIEFUS19TVEFURV9GT0NVU0VEKTsKIAogICAgIC8vIFRPRE86IEFUS19TVEFURV9I
T1JJWk9OVEFMCkBAIC01NzIsOCArNjE3LDEyIEBAIHN0YXRpYyBBdGtTdGF0ZVNldCogd2Via2l0
X2FjY2Vzc2libGVfcmVmX3N0YXRlX3NldChBdGtPYmplY3QqIG9iamVjdCkKICAgICAgICAgcmV0
dXJuIHN0YXRlU2V0OwogICAgIH0KIAotICAgIHNldEF0a1N0YXRlU2V0RnJvbUNvcmVPYmplY3Qo
Y29yZU9iamVjdCwgc3RhdGVTZXQpOworICAgIC8vIFRleHQgb2JqZWN0cyBtdXN0IGJlIGZvY3Vz
YWJsZS4KKyAgICBBdGtSb2xlIHJvbGUgPSBhdGtfb2JqZWN0X2dldF9yb2xlKG9iamVjdCk7Cisg
ICAgaWYgKHJvbGUgPT0gQVRLX1JPTEVfVEVYVCB8fCByb2xlID09IEFUS19ST0xFX1BBUkFHUkFQ
SCkKKyAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFUS19TVEFURV9G
T0NVU0FCTEUpOwogCisgICAgc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVjdChjb3JlT2JqZWN0
LCBzdGF0ZVNldCk7CiAgICAgcmV0dXJuIHN0YXRlU2V0OwogfQogCkBAIC0xNDA3LDI3ICsxNDU2
LDYgQEAgc3RhdGljIGdpbnQgd2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfb2Zmc2V0X2F0X3Bv
aW50KEF0a1RleHQqIHRleHQsIGdpbnQgeCwgZ2kKICAgICByZXR1cm4gcmFuZ2Uuc3RhcnQ7CiB9
CiAKLXN0YXRpYyBib29sIHNlbGVjdGlvbkJlbG9uZ3NUb09iamVjdChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBjb3JlT2JqZWN0LCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCi17Ci0gICAgaWYg
KCFjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGlvbi50b05vcm1h
bGl6ZWRSYW5nZSgpOwotICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIC8vIFdlIHdhbnQgdG8gY2hlY2sgdGhhdCBib3RoIHRoZSBzZWxlY3Rpb24gaW50ZXJzZWN0
cyB0aGUgbm9kZQotICAgIC8vIEFORCB0aGF0IHRoZSBzZWxlY3Rpb24gaXMgbm90IGp1c3QgInRv
dWNoaW5nIiBvbmUgb2YgdGhlCi0gICAgLy8gYm91bmRhcmllcyBmb3IgdGhlIHNlbGVjdGVkIG5v
ZGUuIFdlIHdhbnQgdG8gY2hlY2sgd2hldGhlciB0aGUKLSAgICAvLyBub2RlIGlzIGFjdHVhbGx5
IGluc2lkZSB0aGUgcmVnaW9uLCBhdCBsZWFzdCBwYXJ0aWFsbHkKLSAgICBOb2RlKiBub2RlID0g
Y29yZU9iamVjdC0+bm9kZSgpOwotICAgIE5vZGUqIGxhc3REZXNjZW5kYW50ID0gbm9kZS0+bGFz
dERlc2NlbmRhbnQoKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICByZXR1cm4gKHJh
bmdlLT5pbnRlcnNlY3RzTm9kZShub2RlLCBlYykKLSAgICAgICAgICAgICYmIChyYW5nZS0+ZW5k
Q29udGFpbmVyKCkgIT0gbm9kZSB8fCByYW5nZS0+ZW5kT2Zmc2V0KCkpCi0gICAgICAgICAgICAm
JiAocmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgIT0gbGFzdERlc2NlbmRhbnQgfHwgcmFuZ2UtPnN0
YXJ0T2Zmc2V0KCkgIT0gbGFzdE9mZnNldEluTm9kZShsYXN0RGVzY2VuZGFudCkpKTsKLX0KLQog
c3RhdGljIHZvaWQgZ2V0U2VsZWN0aW9uT2Zmc2V0c0Zvck9iamVjdChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBjb3JlT2JqZWN0LCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGdpbnQmIHN0YXJ0
T2Zmc2V0LCBnaW50JiBlbmRPZmZzZXQpCiB7CiAgICAgaWYgKCFjb3JlT2JqZWN0LT5pc0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9ndGsv
U2VsZWN0aW9uQ29udHJvbGxlckd0ay5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvZ3RrL1NlbGVjdGlv
bkNvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDU2MjYxMTAuLjA2NjJiZGIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZWRpdGluZy9ndGsvU2VsZWN0aW9uQ29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViQ29y
ZS9lZGl0aW5nL2d0ay9TZWxlY3Rpb25Db250cm9sbGVyR3RrLmNwcApAQCAtMjMsMzQgKzIzLDc5
IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuaCIKICNpbmNsdWRl
ICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYXNzUmVm
UHRyLmgiCisjaW5jbHVkZSAiUmVmUHRyLmgiCiAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpub3RpZnlBY2Nl
c3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCkKK3N0YXRpYyB2b2lkIGVtaXRUZXh0U2VsZWN0
aW9uQ2hhbmdlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgVmlzaWJsZVNlbGVjdGlvbiBz
ZWxlY3Rpb24sIGludCBvZmZzZXQpCit7CisgICAgQXRrT2JqZWN0KiBheE9iamVjdCA9IG9iamVj
dC0+d3JhcHBlcigpOworICAgIGlmICghYXhPYmplY3QgfHwgIUFUS19JU19URVhUKGF4T2JqZWN0
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGF4T2JqZWN0
LCAidGV4dC1jYXJldC1tb3ZlZCIsIG9mZnNldCk7CisgICAgaWYgKHNlbGVjdGlvbi5pc1Jhbmdl
KCkpCisgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShheE9iamVjdCwgInRleHQtc2VsZWN0
aW9uLWNoYW5nZWQiKTsKK30KKworc3RhdGljIHZvaWQgbWF5YmVFbWl0VGV4dEZvY3VzQ2hhbmdl
KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKIHsKLSAgICBpZiAoQVhPYmplY3RDYWNoZTo6
YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAmJiBtX3NlbGVjdGlvbi5zdGFydCgpLmlzTm90TnVsbCgp
ICYmIG1fc2VsZWN0aW9uLmVuZCgpLmlzTm90TnVsbCgpKSB7Ci0gICAgICAgIFJlbmRlck9iamVj
dCogZm9jdXNlZE5vZGUgPSBtX3NlbGVjdGlvbi5lbmQoKS5ub2RlKCktPnJlbmRlcmVyKCk7Ci0g
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3QgPSBtX2ZyYW1l
LT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGZvY3VzZWROb2RlKTsK
LQotICAgICAgICAvLyBuZWVkIHRvIGNoZWNrIHRoaXMgYXMgZ2V0T3JDcmVhdGUgY291bGQgcmV0
dXJuIDAKLSAgICAgICAgaWYgKCFhY2Nlc3NpYmlsaXR5T2JqZWN0KQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGludCBvZmZzZXQ7Ci0gICAgICAgIC8vIEFsd2F5cyByZXBvcnQgdGhl
IGV2ZW50cyB3LnIudC4gdGhlIG5vbi1saW5rZWQgdW5pZ25vcmVkIHBhcmVudC4gKGkuZS4gaWdu
b3JlTGlua3MgPT0gdHJ1ZSkKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0ID0g
b2JqZWN0QW5kT2Zmc2V0VW5pZ25vcmVkKGFjY2Vzc2liaWxpdHlPYmplY3QsIG9mZnNldCwgdHJ1
ZSk7Ci0gICAgICAgIGlmICghb2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IEF0a09iamVjdCogd3JhcHBlciA9IG9iamVjdC0+d3JhcHBlcigpOwotICAgICAgICBpZiAoQVRL
X0lTX1RFWFQod3JhcHBlcikpIHsKLSAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3
cmFwcGVyLCAidGV4dC1jYXJldC1tb3ZlZCIsIG9mZnNldCk7Ci0gICAgICAgICAgICBpZiAobV9z
ZWxlY3Rpb24uaXNSYW5nZSgpKQotICAgICAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFt
ZSh3cmFwcGVyLCAidGV4dC1zZWxlY3Rpb24tY2hhbmdlZCIpOworICAgIHN0YXRpYyBSZWZQdHI8
QWNjZXNzaWJpbGl0eU9iamVjdD4gb2xkT2JqZWN0OworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eU9iamVjdD4gbmV3T2JqZWN0KG9iamVjdCk7CisKKyAgICAvLyBFbnN1cmUgdGhlIG9sZEF4
T2JqZWN0IGJlbG9uZ3MgdG8gdGhlIHNhbWUgZG9jdW1lbnQgdGhhdCB0aGUKKyAgICAvLyBjdXJy
ZW50IGF4T2JqZWN0IHNvIGZ1cnRoZXIgY29tcGFyaXNvbnMgbWFrZSBzZW5zZS4gT3RoZXJ3aXNl
LAorICAgIC8vIGp1c3QgcmVzZXQgb2xkT2JqZWN0IHNvIGl0IHdvbid0IGJlIHRha2VuIGludG8g
YWNjb3VudC4KKyAgICBpZiAobmV3T2JqZWN0ICYmIG9sZE9iamVjdCAmJiBvbGRPYmplY3QtPmRv
Y3VtZW50KCkgIT0gbmV3T2JqZWN0LT5kb2N1bWVudCgpKQorICAgICAgICBvbGRPYmplY3QgPSAw
OworCisgICAgQXRrT2JqZWN0KiBheE9iamVjdCA9IG5ld09iamVjdCA/IG5ld09iamVjdC0+d3Jh
cHBlcigpIDogMDsKKyAgICBBdGtPYmplY3QqIG9sZEF4T2JqZWN0ID0gb2xkT2JqZWN0ID8gb2xk
T2JqZWN0LT53cmFwcGVyKCkgOiAwOworCisgICAgaWYgKGF4T2JqZWN0ICE9IG9sZEF4T2JqZWN0
KSB7CisgICAgICAgIGlmIChvbGRBeE9iamVjdCAmJiBBVEtfSVNfVEVYVChvbGRBeE9iamVjdCkp
IHsKKyAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShvbGRBeE9iamVjdCwgImZvY3Vz
LWV2ZW50IiwgZmFsc2UpOworICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG9sZEF4
T2JqZWN0LCAic3RhdGUtY2hhbmdlIiwgImZvY3VzZWQiLCBmYWxzZSk7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGF4T2JqZWN0ICYmIEFUS19JU19URVhUKGF4T2JqZWN0KSkgeworICAgICAgICAg
ICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGF4T2JqZWN0LCAiZm9jdXMtZXZlbnQiLCB0cnVlKTsK
KyAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShheE9iamVjdCwgInN0YXRlLWNoYW5n
ZSIsICJmb2N1c2VkIiwgdHJ1ZSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBVcGRhdGUg
cG9pbnRlciB0byBsYXN0IGZvY3VzZWQgb2JqZWN0LgorICAgIG9sZE9iamVjdCA9IG5ld09iamVj
dDsKK30KKworCit2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFjY2Vzc2liaWxpdHlG
b3JTZWxlY3Rpb25DaGFuZ2UoKQoreworICAgIGlmICghQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJp
bGl0eUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gUmVzZXQgbGFzdEZvY3Vz
ZU5vZGUgYW5kIHJldHVybiBmb3Igbm8gdmFsaWQgc2VsZWN0aW9ucy4KKyAgICBpZiAoIW1fc2Vs
ZWN0aW9uLnN0YXJ0KCkuaXNOb3ROdWxsKCkgfHwgIW1fc2VsZWN0aW9uLmVuZCgpLmlzTm90TnVs
bCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZW5kZXJPYmplY3QqIGZvY3VzZWROb2RlID0g
bV9zZWxlY3Rpb24uZW5kKCkubm9kZSgpLT5yZW5kZXJlcigpOworICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3QgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5heE9iamVj
dENhY2hlKCktPmdldE9yQ3JlYXRlKGZvY3VzZWROb2RlKTsKKworICAgIC8vIE5lZWQgdG8gY2hl
Y2sgdGhpcyBhcyBnZXRPckNyZWF0ZSBjb3VsZCByZXR1cm4gMCwKKyAgICBpZiAoIWFjY2Vzc2li
aWxpdHlPYmplY3QpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBvZmZzZXQ7CisgICAgLy8g
QWx3YXlzIHJlcG9ydCB0aGUgZXZlbnRzIHcuci50LiB0aGUgbm9uLWxpbmtlZCB1bmlnbm9yZWQg
cGFyZW50LiAoaS5lLiBpZ25vcmVMaW5rcyA9PSB0cnVlKS4KKyAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvYmplY3QgPSBvYmplY3RBbmRPZmZzZXRVbmlnbm9yZWQoYWNjZXNzaWJpbGl0eU9iamVj
dCwgb2Zmc2V0LCB0cnVlKTsKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gRW1pdCByZWxhdGVkc2lnbmFscy4KKyAgICBlbWl0VGV4dFNlbGVjdGlvbkNoYW5nZShv
YmplY3QsIG1fc2VsZWN0aW9uLCBvZmZzZXQpOworICAgIG1heWJlRW1pdFRleHRGb2N1c0NoYW5n
ZShvYmplY3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0tIAoxLjcuMi4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72807</attachid>
            <date>2010-11-03 03:48:41 -0700</date>
            <delta_ts>2010-11-08 12:57:14 -0800</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2010-11-02-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>14184</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA3OWMwNTQzOTM4YTVhYWQwMWQwZjdlNjY1NWZmYThmNmVlOGFhZGRhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBXZWQsIDMgTm92IDIwMTAgMDA6MjQ6MjQgKzAxMDAKU3ViamVjdDogW1BBVENI
XSAyMDEwLTExLTAyICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
CiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFtHdGtdIEltcGxl
bWVudCBTVEFURV9GT0NVU0VELCBTVEFURV9GT0NVU0FCTEUsIGFuZCBjb3JyZXNwb25kaW5nIGV2
ZW50cyBmb3IgdGV4dCBvYmplY3RzCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3MDQ4CgogICAgICAgIEhhbmRsZSBmb2N1cyBjaGFuZ2UgZm9yIHRleHQg
b2JqZWN0cyBiYXNlZCBpbiBjYXJldCBjaGFuZ2VzLgoKICAgICAgICBBcyB0ZXh0IG9iamVjdHMg
KHN1Y2ggYXMgcGFyYWdyYXBocykgc2VlbSBub3QgdG8gYWNjZXB0IGZvY3VzIGluCiAgICAgICAg
V2ViQ29yZSBpbiB0aGUgc2FtZSB3YXkgb3RoZXIgb2JqZWN0cyAodGV4dCBjb250cm9scykgZG8s
IGEKICAgICAgICBHdGstc3BlY2lmaWMgd29ya2Fyb3VuZCBpcyBuZWVkZWQgdG8gZXhwb3NlIHRo
aXMgc3RhdGVzIGFuZCB0aGUKICAgICAgICByZWxhdGVkIGV2ZW50cyB0byBBVEstYmFzZWQgYXNz
aXN0aXZlIHRlY2hub2xvZ2llcy4KCiAgICAgICAgRW5zdXJlIHRoYXQgdGV4dCBvYmplY3RzIGFy
ZSBleHBvc2VkIHdpdGggdGhlIEFUS19TVEFURV9GT0NVU0FCTEUKICAgICAgICBzdGF0ZSwgYW5k
IHRoYXQgdGhlIEFUS19TVEFURV9GT0NVU0VEIHN0YXRlIGlzIGFkZGVkIHRvIHRob3NlCiAgICAg
ICAgdGV4dCBvYmplY3RzIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnRseSBhY3RpdmUgY2FyZXQgc2Vs
ZWN0aW9uLgoKICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQXRrLmNwcDoKICAgICAgICAoc2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0KTogTW92ZWQg
dXB3YXJkcyB0byB1c2UgaXQgZnJvbQogICAgICAgIHRoZSBuZXcgaXNUZXh0V2l0aENhcmV0KCkg
ZnVuY3Rpb24uCiAgICAgICAgKGlzVGV4dFdpdGhDYXJldCk6IE5ldywgY2hlY2tzIHdoZXRoZXIg
YW4gYWNjZXNzaWJpbGl0eSBvYmplY3QKICAgICAgICByZXByZXNlbnRzIGEgdGV4dCBvYmplY3Qg
d2l0aCB0aGUgY3VycmVudCBjYXJldCBzZWxlY3Rpb24gb24gaXQuCiAgICAgICAgKHNldEF0a1N0
YXRlU2V0RnJvbUNvcmVPYmplY3QpOiBBZGQgdGhlIEFUS19TVEFURV9GT0NVU0VEIHN0YXRlCiAg
ICAgICAgd2hlbiBhbHNvIHdoZW4gaXNUZXh0V2l0aENhcmV0KGNvcmVPYmplY3QpIHJldHVybnMg
dHJ1ZS4KICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfcmVmX3N0YXRlX3NldCk6IEFkZCB0aGUg
QVRLX1NUQVRFX0ZPQ1VTQUJMRQogICAgICAgIHN0YXRlIHRvIHRleHQgb2JqZWN0cyBhbmQgdGhv
c2Ugd2l0aCB0aGUgQVRLX1JPTEVfUEFSQUdSQVBIIHJvbGUuCgogICAgICAgIE1ha2Ugc3VyZSB0
aGUgcHJvcGVyIGV2ZW50cyBhc3NvY2lhdGVkIHRvIGEgY2hhbmdlIG9mIGZvY3VzIGFyZQogICAg
ICAgIGVtaXR0ZWQsIGJhc2VkIG9uIGNhcmV0IGNoYW5nZXMgYWNyb3NzIGRpZmZlcmVudCBhY2Nl
c3NpYmlsaXR5CiAgICAgICAgb2JqZWN0cy4gQWxzbywgcmVmYWN0b3JlZCB0aGUgY29kZSBpbiBt
b3JlIG1hbmFnZWFibGUgYW5kCiAgICAgICAgdW5kZXJzdGFuZGFibGUgaGVscGVyIGZ1bmN0aW9u
cy4KCiAgICAgICAgKiBlZGl0aW5nL2d0ay9TZWxlY3Rpb25Db250cm9sbGVyR3RrLmNwcDoKICAg
ICAgICAoV2ViQ29yZTo6ZW1pdFRleHRTZWxlY3Rpb25DaGFuZ2UpOiBOZXcsIGluY2x1ZGVzIHRo
ZSBzcGVjaWZpYwogICAgICAgIGNvZGUgZm9ybWVybHkgcGxhY2VkIGluIG5vdGlmeUFjY2Vzc2li
aWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UoKSB0bwogICAgICAgIGVtaXQgdGhlICd0ZXh0LWNhcmV0
LW1vdmVkJyBhbmQgJ3RleHQtc2VsZWN0aW9uLWNoYW5nZScgc2lnbmFscy4KICAgICAgICAoV2Vi
Q29yZTo6bWF5YmVFbWl0VGV4dEZvY3VzQ2hhbmdlKTogTmV3LCB0YWtlcyBjYXJlIG9mIGVtaXR0
aW5nCiAgICAgICAgdGhlICdmb2N1cy1ldmVudCcgYW5kICdzdGF0ZS1jaGFuZ2VkOjpmb2N1c2Vk
JyBzaWduYWxzIHdoZW4KICAgICAgICBuZWVkZWQsIHRoYXQgaXMsIHdoZW4gYSBjaGFuZ2UgaW4g
dGhlIHNlbGVjdGlvbiBoYXBwZW5zIGFjcm9zcwogICAgICAgIGRpZmZlcmVudCBhY2Nlc3NpYmxl
IG9iamVjdHMuCiAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFj
Y2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UpOgogICAgICAgIFJlZmFjdG9yZWQgc29tZSBj
b2RlIGhlcmUsIGJ5IHVzaW5nIHRoZSBuZXcgaGVscGVyIGZ1bmN0aW9ucy4KLS0tCiBXZWJDb3Jl
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDQgKysrKysr
KysrKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgICAgICAgICAg
fCAgIDc0ICsrKysrKysrKysrKy0tLS0tLQogV2ViQ29yZS9lZGl0aW5nL2d0ay9TZWxlY3Rpb25D
b250cm9sbGVyR3RrLmNwcCAgICAgfCAgIDg0ICsrKysrKysrKysrKysrKy0tLS0tCiAzIGZpbGVz
IGNoYW5nZWQsIDE1OSBpbnNlcnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM5M2U1MjIuLmQ0
NTVkZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTAtMTEtMDIgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxt
c2FuY2hlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFtHdGtdIEltcGxlbWVudCBTVEFURV9GT0NVU0VELCBTVEFURV9GT0NVU0FC
TEUsIGFuZCBjb3JyZXNwb25kaW5nIGV2ZW50cyBmb3IgdGV4dCBvYmplY3RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzA0OAorCisgICAgICAgIEhh
bmRsZSBmb2N1cyBjaGFuZ2UgZm9yIHRleHQgb2JqZWN0cyBiYXNlZCBpbiBjYXJldCBjaGFuZ2Vz
LgorCisgICAgICAgIEFzIHRleHQgb2JqZWN0cyAoc3VjaCBhcyBwYXJhZ3JhcGhzKSBzZWVtIG5v
dCB0byBhY2NlcHQgZm9jdXMgaW4KKyAgICAgICAgV2ViQ29yZSBpbiB0aGUgc2FtZSB3YXkgb3Ro
ZXIgb2JqZWN0cyAodGV4dCBjb250cm9scykgZG8sIGEKKyAgICAgICAgR3RrLXNwZWNpZmljIHdv
cmthcm91bmQgaXMgbmVlZGVkIHRvIGV4cG9zZSB0aGlzIHN0YXRlcyBhbmQgdGhlCisgICAgICAg
IHJlbGF0ZWQgZXZlbnRzIHRvIEFUSy1iYXNlZCBhc3Npc3RpdmUgdGVjaG5vbG9naWVzLgorCisg
ICAgICAgIEVuc3VyZSB0aGF0IHRleHQgb2JqZWN0cyBhcmUgZXhwb3NlZCB3aXRoIHRoZSBBVEtf
U1RBVEVfRk9DVVNBQkxFCisgICAgICAgIHN0YXRlLCBhbmQgdGhhdCB0aGUgQVRLX1NUQVRFX0ZP
Q1VTRUQgc3RhdGUgaXMgYWRkZWQgdG8gdGhvc2UKKyAgICAgICAgdGV4dCBvYmplY3RzIGNvbnRh
aW5pbmcgdGhlIGN1cnJlbnRseSBhY3RpdmUgY2FyZXQgc2VsZWN0aW9uLgorCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwOgorICAg
ICAgICAoc2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0KTogTW92ZWQgdXB3YXJkcyB0byB1c2UgaXQg
ZnJvbQorICAgICAgICB0aGUgbmV3IGlzVGV4dFdpdGhDYXJldCgpIGZ1bmN0aW9uLgorICAgICAg
ICAoaXNUZXh0V2l0aENhcmV0KTogTmV3LCBjaGVja3Mgd2hldGhlciBhbiBhY2Nlc3NpYmlsaXR5
IG9iamVjdAorICAgICAgICByZXByZXNlbnRzIGEgdGV4dCBvYmplY3Qgd2l0aCB0aGUgY3VycmVu
dCBjYXJldCBzZWxlY3Rpb24gb24gaXQuCisgICAgICAgIChzZXRBdGtTdGF0ZVNldEZyb21Db3Jl
T2JqZWN0KTogQWRkIHRoZSBBVEtfU1RBVEVfRk9DVVNFRCBzdGF0ZQorICAgICAgICB3aGVuIGFs
c28gd2hlbiBpc1RleHRXaXRoQ2FyZXQoY29yZU9iamVjdCkgcmV0dXJucyB0cnVlLgorICAgICAg
ICAod2Via2l0X2FjY2Vzc2libGVfcmVmX3N0YXRlX3NldCk6IEFkZCB0aGUgQVRLX1NUQVRFX0ZP
Q1VTQUJMRQorICAgICAgICBzdGF0ZSB0byB0ZXh0IG9iamVjdHMgYW5kIHRob3NlIHdpdGggdGhl
IEFUS19ST0xFX1BBUkFHUkFQSCByb2xlLgorCisgICAgICAgIE1ha2Ugc3VyZSB0aGUgcHJvcGVy
IGV2ZW50cyBhc3NvY2lhdGVkIHRvIGEgY2hhbmdlIG9mIGZvY3VzIGFyZQorICAgICAgICBlbWl0
dGVkLCBiYXNlZCBvbiBjYXJldCBjaGFuZ2VzIGFjcm9zcyBkaWZmZXJlbnQgYWNjZXNzaWJpbGl0
eQorICAgICAgICBvYmplY3RzLiBBbHNvLCByZWZhY3RvcmVkIHRoZSBjb2RlIGluIG1vcmUgbWFu
YWdlYWJsZSBhbmQKKyAgICAgICAgdW5kZXJzdGFuZGFibGUgaGVscGVyIGZ1bmN0aW9ucy4KKwor
ICAgICAgICAqIGVkaXRpbmcvZ3RrL1NlbGVjdGlvbkNvbnRyb2xsZXJHdGsuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZW1pdFRleHRTZWxlY3Rpb25DaGFuZ2UpOiBOZXcsIGluY2x1ZGVzIHRoZSBz
cGVjaWZpYworICAgICAgICBjb2RlIGZvcm1lcmx5IHBsYWNlZCBpbiBub3RpZnlBY2Nlc3NpYmls
aXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCkgdG8KKyAgICAgICAgZW1pdCB0aGUgJ3RleHQtY2FyZXQt
bW92ZWQnIGFuZCAndGV4dC1zZWxlY3Rpb24tY2hhbmdlJyBzaWduYWxzLgorICAgICAgICAoV2Vi
Q29yZTo6bWF5YmVFbWl0VGV4dEZvY3VzQ2hhbmdlKTogTmV3LCB0YWtlcyBjYXJlIG9mIGVtaXR0
aW5nCisgICAgICAgIHRoZSAnZm9jdXMtZXZlbnQnIGFuZCAnc3RhdGUtY2hhbmdlZDo6Zm9jdXNl
ZCcgc2lnbmFscyB3aGVuCisgICAgICAgIG5lZWRlZCwgdGhhdCBpcywgd2hlbiBhIGNoYW5nZSBp
biB0aGUgc2VsZWN0aW9uIGhhcHBlbnMgYWNyb3NzCisgICAgICAgIGRpZmZlcmVudCBhY2Nlc3Np
YmxlIG9iamVjdHMuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpub3Rp
ZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgUmVmYWN0b3JlZCBz
b21lIGNvZGUgaGVyZSwgYnkgdXNpbmcgdGhlIG5ldyBoZWxwZXIgZnVuY3Rpb25zLgorCiAyMDEw
LTExLTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcCBiL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwCmluZGV4IDcyNmNk
YjEuLmE0NGNkZTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9n
dGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAj
aW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
V2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5oIgpAQCAtNDc2LDYgKzQ3Nyw1MCBAQCBzdGF0aWMg
QXRrUm9sZSB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfcm9sZShBdGtPYmplY3QqIG9iamVjdCkKICAg
ICByZXR1cm4gYXRrUm9sZShheE9iamVjdC0+cm9sZVZhbHVlKCkpOwogfQogCitzdGF0aWMgYm9v
bCBzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVj
dCwgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQoreworICAgIGlmICghY29yZU9iamVjdCB8
fCAhY29yZU9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3Jt
YWxpemVkUmFuZ2UoKTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBXZSB3YW50IHRvIGNoZWNrIHRoYXQgYm90aCB0aGUgc2VsZWN0aW9uIGludGVyc2Vj
dHMgdGhlIG5vZGUKKyAgICAvLyBBTkQgdGhhdCB0aGUgc2VsZWN0aW9uIGlzIG5vdCBqdXN0ICJ0
b3VjaGluZyIgb25lIG9mIHRoZQorICAgIC8vIGJvdW5kYXJpZXMgZm9yIHRoZSBzZWxlY3RlZCBu
b2RlLiBXZSB3YW50IHRvIGNoZWNrIHdoZXRoZXIgdGhlCisgICAgLy8gbm9kZSBpcyBhY3R1YWxs
eSBpbnNpZGUgdGhlIHJlZ2lvbiwgYXQgbGVhc3QgcGFydGlhbGx5LgorICAgIE5vZGUqIG5vZGUg
PSBjb3JlT2JqZWN0LT5ub2RlKCk7CisgICAgTm9kZSogbGFzdERlc2NlbmRhbnQgPSBub2RlLT5s
YXN0RGVzY2VuZGFudCgpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHJldHVybiAo
cmFuZ2UtPmludGVyc2VjdHNOb2RlKG5vZGUsIGVjKQorICAgICAgICAgICAgJiYgKHJhbmdlLT5l
bmRDb250YWluZXIoKSAhPSBub2RlIHx8IHJhbmdlLT5lbmRPZmZzZXQoKSkKKyAgICAgICAgICAg
ICYmIChyYW5nZS0+c3RhcnRDb250YWluZXIoKSAhPSBsYXN0RGVzY2VuZGFudCB8fCByYW5nZS0+
c3RhcnRPZmZzZXQoKSAhPSBsYXN0T2Zmc2V0SW5Ob2RlKGxhc3REZXNjZW5kYW50KSkpOworfQor
CitzdGF0aWMgYm9vbCBpc1RleHRXaXRoQ2FyZXQoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9i
amVjdCkKK3sKKyAgICBpZiAoIWNvcmVPYmplY3QgfHwgY29yZU9iamVjdC0+aXNBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNldHRpbmdz
KiBzZXR0aW5ncyA9IGNvcmVPYmplY3QtPmRvY3VtZW50KCktPmZyYW1lKCktPnNldHRpbmdzKCk7
CisgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3MtPmNhcmV0QnJvd3NpbmdFbmFibGVkKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIHRleHQgb2JqZWN0cyBhbmQg
cGFyYWdyYXBocyBvbmx5LgorICAgIEF0a09iamVjdCogYXhPYmplY3QgPSBjb3JlT2JqZWN0LT53
cmFwcGVyKCk7CisgICAgQXRrUm9sZSByb2xlID0gYXhPYmplY3QgPyBhdGtfb2JqZWN0X2dldF9y
b2xlKGF4T2JqZWN0KSA6IEFUS19ST0xFX0lOVkFMSUQ7CisgICAgaWYgKHJvbGUgIT0gQVRLX1JP
TEVfVEVYVCAmJiByb2xlICE9IEFUS19ST0xFX1BBUkFHUkFQSCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gRmluYWxseSwgY2hlY2sgd2hldGhlciB0aGUgY2FyZXQgaXMgc2V0IGlu
IHRoZSBjdXJyZW50IG9iamVjdC4KKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGNv
cmVPYmplY3QtPnNlbGVjdGlvbigpOworICAgIGlmICghc2VsZWN0aW9uLmlzQ2FyZXQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuICFzZWxlY3Rpb25CZWxvbmdzVG9PYmpl
Y3QoY29yZU9iamVjdCwgc2VsZWN0aW9uKSB8fCBzZWxlY3Rpb24uaXNOb25lKCkgPyAwIDogMTsK
K30KKwogc3RhdGljIHZvaWQgc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVjdChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBdGtTdGF0ZVNldCogc3RhdGVTZXQpCiB7CiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gY29yZU9iamVjdC0+cGFyZW50T2JqZWN0KCk7CkBA
IC01MDMsNyArNTQ4LDcgQEAgc3RhdGljIHZvaWQgc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVj
dChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBdGtTdGEKICAgICBpZiAoY29yZU9i
amVjdC0+Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSkKICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRf
c3RhdGUoc3RhdGVTZXQsIEFUS19TVEFURV9GT0NVU0FCTEUpOwogCi0gICAgaWYgKGNvcmVPYmpl
Y3QtPmlzRm9jdXNlZCgpKQorICAgIGlmIChjb3JlT2JqZWN0LT5pc0ZvY3VzZWQoKSB8fCBpc1Rl
eHRXaXRoQ2FyZXQoY29yZU9iamVjdCkpCiAgICAgICAgIGF0a19zdGF0ZV9zZXRfYWRkX3N0YXRl
KHN0YXRlU2V0LCBBVEtfU1RBVEVfRk9DVVNFRCk7CiAKICAgICAvLyBUT0RPOiBBVEtfU1RBVEVf
SE9SSVpPTlRBTApAQCAtNTcyLDggKzYxNywxMiBAQCBzdGF0aWMgQXRrU3RhdGVTZXQqIHdlYmtp
dF9hY2Nlc3NpYmxlX3JlZl9zdGF0ZV9zZXQoQXRrT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIHJl
dHVybiBzdGF0ZVNldDsKICAgICB9CiAKLSAgICBzZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0
KGNvcmVPYmplY3QsIHN0YXRlU2V0KTsKKyAgICAvLyBUZXh0IG9iamVjdHMgbXVzdCBiZSBmb2N1
c2FibGUuCisgICAgQXRrUm9sZSByb2xlID0gYXRrX29iamVjdF9nZXRfcm9sZShvYmplY3QpOwor
ICAgIGlmIChyb2xlID09IEFUS19ST0xFX1RFWFQgfHwgcm9sZSA9PSBBVEtfUk9MRV9QQVJBR1JB
UEgpCisgICAgICAgIGF0a19zdGF0ZV9zZXRfYWRkX3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVf
Rk9DVVNBQkxFKTsKIAorICAgIHNldEF0a1N0YXRlU2V0RnJvbUNvcmVPYmplY3QoY29yZU9iamVj
dCwgc3RhdGVTZXQpOwogICAgIHJldHVybiBzdGF0ZVNldDsKIH0KIApAQCAtMTQwNywyNyArMTQ1
Niw2IEBAIHN0YXRpYyBnaW50IHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X29mZnNldF9hdF9w
b2ludChBdGtUZXh0KiB0ZXh0LCBnaW50IHgsIGdpCiAgICAgcmV0dXJuIHJhbmdlLnN0YXJ0Owog
fQogCi1zdGF0aWMgYm9vbCBzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QoQWNjZXNzaWJpbGl0eU9i
amVjdCogY29yZU9iamVjdCwgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQotewotICAgIGlm
ICghY29yZU9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3Jt
YWxpemVkUmFuZ2UoKTsKLSAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAvLyBXZSB3YW50IHRvIGNoZWNrIHRoYXQgYm90aCB0aGUgc2VsZWN0aW9uIGludGVyc2Vj
dHMgdGhlIG5vZGUKLSAgICAvLyBBTkQgdGhhdCB0aGUgc2VsZWN0aW9uIGlzIG5vdCBqdXN0ICJ0
b3VjaGluZyIgb25lIG9mIHRoZQotICAgIC8vIGJvdW5kYXJpZXMgZm9yIHRoZSBzZWxlY3RlZCBu
b2RlLiBXZSB3YW50IHRvIGNoZWNrIHdoZXRoZXIgdGhlCi0gICAgLy8gbm9kZSBpcyBhY3R1YWxs
eSBpbnNpZGUgdGhlIHJlZ2lvbiwgYXQgbGVhc3QgcGFydGlhbGx5Ci0gICAgTm9kZSogbm9kZSA9
IGNvcmVPYmplY3QtPm5vZGUoKTsKLSAgICBOb2RlKiBsYXN0RGVzY2VuZGFudCA9IG5vZGUtPmxh
c3REZXNjZW5kYW50KCk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgcmV0dXJuIChy
YW5nZS0+aW50ZXJzZWN0c05vZGUobm9kZSwgZWMpCi0gICAgICAgICAgICAmJiAocmFuZ2UtPmVu
ZENvbnRhaW5lcigpICE9IG5vZGUgfHwgcmFuZ2UtPmVuZE9mZnNldCgpKQotICAgICAgICAgICAg
JiYgKHJhbmdlLT5zdGFydENvbnRhaW5lcigpICE9IGxhc3REZXNjZW5kYW50IHx8IHJhbmdlLT5z
dGFydE9mZnNldCgpICE9IGxhc3RPZmZzZXRJbk5vZGUobGFzdERlc2NlbmRhbnQpKSk7Ci19Ci0K
IHN0YXRpYyB2b2lkIGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QoQWNjZXNzaWJpbGl0eU9i
amVjdCogY29yZU9iamVjdCwgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBnaW50JiBzdGFy
dE9mZnNldCwgZ2ludCYgZW5kT2Zmc2V0KQogewogICAgIGlmICghY29yZU9iamVjdC0+aXNBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvZ3Rr
L1NlbGVjdGlvbkNvbnRyb2xsZXJHdGsuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL2d0ay9TZWxlY3Rp
b25Db250cm9sbGVyR3RrLmNwcAppbmRleCA1NjI2MTEwLi44Y2RmZDdiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2VkaXRpbmcvZ3RrL1NlbGVjdGlvbkNvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1dlYkNv
cmUvZWRpdGluZy9ndGsvU2VsZWN0aW9uQ29udHJvbGxlckd0ay5jcHAKQEAgLTIzLDM0ICsyMyw3
OCBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmgiCiAjaW5jbHVk
ZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiUmVmUHRy
LmgiCiAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9p
ZCBTZWxlY3Rpb25Db250cm9sbGVyOjpub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hh
bmdlKCkKK3N0YXRpYyB2b2lkIGVtaXRUZXh0U2VsZWN0aW9uQ2hhbmdlKEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iamVjdCwgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24sIGludCBvZmZzZXQpCit7
CisgICAgQXRrT2JqZWN0KiBheE9iamVjdCA9IG9iamVjdC0+d3JhcHBlcigpOworICAgIGlmICgh
YXhPYmplY3QgfHwgIUFUS19JU19URVhUKGF4T2JqZWN0KSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGF4T2JqZWN0LCAidGV4dC1jYXJldC1tb3ZlZCIsIG9m
ZnNldCk7CisgICAgaWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkpCisgICAgICAgIGdfc2lnbmFsX2Vt
aXRfYnlfbmFtZShheE9iamVjdCwgInRleHQtc2VsZWN0aW9uLWNoYW5nZWQiKTsKK30KKworc3Rh
dGljIHZvaWQgbWF5YmVFbWl0VGV4dEZvY3VzQ2hhbmdlKFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4gcHJwT2JqZWN0KQogewotICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmls
aXR5RW5hYmxlZCgpICYmIG1fc2VsZWN0aW9uLnN0YXJ0KCkuaXNOb3ROdWxsKCkgJiYgbV9zZWxl
Y3Rpb24uZW5kKCkuaXNOb3ROdWxsKCkpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBmb2N1c2Vk
Tm9kZSA9IG1fc2VsZWN0aW9uLmVuZCgpLm5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdCA9IG1fZnJhbWUtPmRvY3VtZW50
KCktPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZm9jdXNlZE5vZGUpOwotCi0gICAgICAg
IC8vIG5lZWQgdG8gY2hlY2sgdGhpcyBhcyBnZXRPckNyZWF0ZSBjb3VsZCByZXR1cm4gMAotICAg
ICAgICBpZiAoIWFjY2Vzc2liaWxpdHlPYmplY3QpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgaW50IG9mZnNldDsKLSAgICAgICAgLy8gQWx3YXlzIHJlcG9ydCB0aGUgZXZlbnRzIHcu
ci50LiB0aGUgbm9uLWxpbmtlZCB1bmlnbm9yZWQgcGFyZW50LiAoaS5lLiBpZ25vcmVMaW5rcyA9
PSB0cnVlKQotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QgPSBvYmplY3RBbmRP
ZmZzZXRVbmlnbm9yZWQoYWNjZXNzaWJpbGl0eU9iamVjdCwgb2Zmc2V0LCB0cnVlKTsKLSAgICAg
ICAgaWYgKCFvYmplY3QpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgQXRrT2JqZWN0
KiB3cmFwcGVyID0gb2JqZWN0LT53cmFwcGVyKCk7Ci0gICAgICAgIGlmIChBVEtfSVNfVEVYVCh3
cmFwcGVyKSkgewotICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdyYXBwZXIsICJ0
ZXh0LWNhcmV0LW1vdmVkIiwgb2Zmc2V0KTsKLSAgICAgICAgICAgIGlmIChtX3NlbGVjdGlvbi5p
c1JhbmdlKCkpCi0gICAgICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdyYXBwZXIs
ICJ0ZXh0LXNlbGVjdGlvbi1jaGFuZ2VkIik7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+IG9iamVjdCA9IHBycE9iamVjdDsKKyAgICBzdGF0aWMgUmVmUHRyPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IG9sZE9iamVjdDsKKworICAgIC8vIEVuc3VyZSB0aGUgb2xkQXhPYmplY3QgYmVsb25n
cyB0byB0aGUgc2FtZSBkb2N1bWVudCB0aGF0IHRoZQorICAgIC8vIGN1cnJlbnQgYXhPYmplY3Qg
c28gZnVydGhlciBjb21wYXJpc29ucyBtYWtlIHNlbnNlLiBPdGhlcndpc2UsCisgICAgLy8ganVz
dCByZXNldCBvbGRPYmplY3Qgc28gaXQgd29uJ3QgYmUgdGFrZW4gaW50byBhY2NvdW50LgorICAg
IGlmIChvYmplY3QgJiYgb2xkT2JqZWN0ICYmIG9sZE9iamVjdC0+ZG9jdW1lbnQoKSAhPSBvYmpl
Y3QtPmRvY3VtZW50KCkpCisgICAgICAgIG9sZE9iamVjdCA9IDA7CisKKyAgICBBdGtPYmplY3Qq
IGF4T2JqZWN0ID0gb2JqZWN0ID8gb2JqZWN0LT53cmFwcGVyKCkgOiAwOworICAgIEF0a09iamVj
dCogb2xkQXhPYmplY3QgPSBvbGRPYmplY3QgPyBvbGRPYmplY3QtPndyYXBwZXIoKSA6IDA7CisK
KyAgICBpZiAoYXhPYmplY3QgIT0gb2xkQXhPYmplY3QpIHsKKyAgICAgICAgaWYgKG9sZEF4T2Jq
ZWN0ICYmIEFUS19JU19URVhUKG9sZEF4T2JqZWN0KSkgeworICAgICAgICAgICAgZ19zaWduYWxf
ZW1pdF9ieV9uYW1lKG9sZEF4T2JqZWN0LCAiZm9jdXMtZXZlbnQiLCBmYWxzZSk7CisgICAgICAg
ICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUob2xkQXhPYmplY3QsICJzdGF0ZS1jaGFuZ2UiLCAi
Zm9jdXNlZCIsIGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYXhPYmplY3QgJiYgQVRL
X0lTX1RFWFQoYXhPYmplY3QpKSB7CisgICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUo
YXhPYmplY3QsICJmb2N1cy1ldmVudCIsIHRydWUpOworICAgICAgICAgICAgZ19zaWduYWxfZW1p
dF9ieV9uYW1lKGF4T2JqZWN0LCAic3RhdGUtY2hhbmdlIiwgImZvY3VzZWQiLCB0cnVlKTsKICAg
ICAgICAgfQogICAgIH0KKworICAgIC8vIFVwZGF0ZSBwb2ludGVyIHRvIGxhc3QgZm9jdXNlZCBv
YmplY3QuCisgICAgb2xkT2JqZWN0ID0gb2JqZWN0OworfQorCisKK3ZvaWQgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6bm90aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZSgpCit7CisgICAg
aWYgKCFBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBSZXNldCBsYXN0Rm9jdXNlTm9kZSBhbmQgcmV0dXJuIGZvciBubyB2YWxp
ZCBzZWxlY3Rpb25zLgorICAgIGlmICghbV9zZWxlY3Rpb24uc3RhcnQoKS5pc05vdE51bGwoKSB8
fCAhbV9zZWxlY3Rpb24uZW5kKCkuaXNOb3ROdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IFJlbmRlck9iamVjdCogZm9jdXNlZE5vZGUgPSBtX3NlbGVjdGlvbi5lbmQoKS5ub2RlKCktPnJl
bmRlcmVyKCk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdCA9
IG1fZnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZm9jdXNl
ZE5vZGUpOworCisgICAgLy8gTmVlZCB0byBjaGVjayB0aGlzIGFzIGdldE9yQ3JlYXRlIGNvdWxk
IHJldHVybiAwLAorICAgIGlmICghYWNjZXNzaWJpbGl0eU9iamVjdCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaW50IG9mZnNldDsKKyAgICAvLyBBbHdheXMgcmVwb3J0IHRoZSBldmVudHMgdy5y
LnQuIHRoZSBub24tbGlua2VkIHVuaWdub3JlZCBwYXJlbnQuIChpLmUuIGlnbm9yZUxpbmtzID09
IHRydWUpLgorICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmplY3QgPSBvYmplY3RB
bmRPZmZzZXRVbmlnbm9yZWQoYWNjZXNzaWJpbGl0eU9iamVjdCwgb2Zmc2V0LCB0cnVlKTsKKyAg
ICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRW1pdCByZWxhdGVkc2ln
bmFscy4KKyAgICBlbWl0VGV4dFNlbGVjdGlvbkNoYW5nZShvYmplY3QuZ2V0KCksIG1fc2VsZWN0
aW9uLCBvZmZzZXQpOworICAgIG1heWJlRW1pdFRleHRGb2N1c0NoYW5nZShvYmplY3QucmVsZWFz
ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotLSAKMS43LjIuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73270</attachid>
            <date>2010-11-08 12:57:14 -0800</date>
            <delta_ts>2010-11-18 03:14:58 -0800</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2010-11-08-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>14376</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA0ZDIzODA2ODBlY2RlYWQ4NTA4MWE3ZGY3MTgyNjI4MWQxZWNiNmY1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBXZWQsIDMgTm92IDIwMTAgMDA6MjQ6MjQgKzAxMDAKU3ViamVjdDogW1BBVENI
XSAyMDEwLTExLTA4ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
CiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFtHdGtdIEltcGxl
bWVudCBTVEFURV9GT0NVU0VELCBTVEFURV9GT0NVU0FCTEUsIGFuZCBjb3JyZXNwb25kaW5nIGV2
ZW50cyBmb3IgdGV4dCBvYmplY3RzCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3MDQ4CgogICAgICAgIEhhbmRsZSBmb2N1cyBjaGFuZ2UgZm9yIHRleHQg
b2JqZWN0cyBiYXNlZCBpbiBjYXJldCBjaGFuZ2VzLgoKICAgICAgICBBcyB0ZXh0IG9iamVjdHMg
KHN1Y2ggYXMgcGFyYWdyYXBocykgc2VlbSBub3QgdG8gYWNjZXB0IGZvY3VzIGluCiAgICAgICAg
V2ViQ29yZSBpbiB0aGUgc2FtZSB3YXkgb3RoZXIgb2JqZWN0cyAodGV4dCBjb250cm9scykgZG8s
IGEKICAgICAgICBHdGstc3BlY2lmaWMgd29ya2Fyb3VuZCBpcyBuZWVkZWQgdG8gZXhwb3NlIHRo
aXMgc3RhdGVzIGFuZCB0aGUKICAgICAgICByZWxhdGVkIGV2ZW50cyB0byBBVEstYmFzZWQgYXNz
aXN0aXZlIHRlY2hub2xvZ2llcy4KCiAgICAgICAgRW5zdXJlIHRoYXQgdGV4dCBvYmplY3RzIGFy
ZSBleHBvc2VkIHdpdGggdGhlIEFUS19TVEFURV9GT0NVU0FCTEUKICAgICAgICBzdGF0ZSwgYW5k
IHRoYXQgdGhlIEFUS19TVEFURV9GT0NVU0VEIHN0YXRlIGlzIGFkZGVkIHRvIHRob3NlCiAgICAg
ICAgdGV4dCBvYmplY3RzIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnRseSBhY3RpdmUgY2FyZXQgc2Vs
ZWN0aW9uLgoKICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQXRrLmNwcDoKICAgICAgICAoc2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0KTogTW92ZWQg
dXB3YXJkcyB0byB1c2UgaXQgZnJvbQogICAgICAgIHRoZSBuZXcgaXNUZXh0V2l0aENhcmV0KCkg
ZnVuY3Rpb24uCiAgICAgICAgKGlzVGV4dFdpdGhDYXJldCk6IE5ldywgY2hlY2tzIHdoZXRoZXIg
YW4gYWNjZXNzaWJpbGl0eSBvYmplY3QKICAgICAgICByZXByZXNlbnRzIGEgdGV4dCBvYmplY3Qg
d2l0aCB0aGUgY3VycmVudCBjYXJldCBzZWxlY3Rpb24gb24gaXQuCiAgICAgICAgKHNldEF0a1N0
YXRlU2V0RnJvbUNvcmVPYmplY3QpOiBBZGQgdGhlIEFUS19TVEFURV9GT0NVU0VEIHN0YXRlCiAg
ICAgICAgd2hlbiBhbHNvIHdoZW4gaXNUZXh0V2l0aENhcmV0KGNvcmVPYmplY3QpIHJldHVybnMg
dHJ1ZS4KICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfcmVmX3N0YXRlX3NldCk6IEFkZCB0aGUg
QVRLX1NUQVRFX0ZPQ1VTQUJMRQogICAgICAgIHN0YXRlIHRvIHRleHQgb2JqZWN0cyBhbmQgdGhv
c2Ugd2l0aCB0aGUgQVRLX1JPTEVfUEFSQUdSQVBIIHJvbGUuCgogICAgICAgIE1ha2Ugc3VyZSB0
aGUgcHJvcGVyIGV2ZW50cyBhc3NvY2lhdGVkIHRvIGEgY2hhbmdlIG9mIGZvY3VzIGFyZQogICAg
ICAgIGVtaXR0ZWQsIGJhc2VkIG9uIGNhcmV0IGNoYW5nZXMgYWNyb3NzIGRpZmZlcmVudCBhY2Nl
c3NpYmlsaXR5CiAgICAgICAgb2JqZWN0cy4gQWxzbywgcmVmYWN0b3JlZCB0aGUgY29kZSBpbiBt
b3JlIG1hbmFnZWFibGUgYW5kCiAgICAgICAgdW5kZXJzdGFuZGFibGUgaGVscGVyIGZ1bmN0aW9u
cy4KCiAgICAgICAgKiBlZGl0aW5nL2d0ay9TZWxlY3Rpb25Db250cm9sbGVyR3RrLmNwcDoKICAg
ICAgICAoV2ViQ29yZTo6ZW1pdFRleHRTZWxlY3Rpb25DaGFuZ2UpOiBOZXcsIGluY2x1ZGVzIHRo
ZSBzcGVjaWZpYwogICAgICAgIGNvZGUgZm9ybWVybHkgcGxhY2VkIGluIG5vdGlmeUFjY2Vzc2li
aWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UoKSB0bwogICAgICAgIGVtaXQgdGhlICd0ZXh0LWNhcmV0
LW1vdmVkJyBhbmQgJ3RleHQtc2VsZWN0aW9uLWNoYW5nZScgc2lnbmFscy4KICAgICAgICAoV2Vi
Q29yZTo6bWF5YmVFbWl0VGV4dEZvY3VzQ2hhbmdlKTogTmV3LCB0YWtlcyBjYXJlIG9mIGVtaXR0
aW5nCiAgICAgICAgdGhlICdmb2N1cy1ldmVudCcgYW5kICdzdGF0ZS1jaGFuZ2VkOjpmb2N1c2Vk
JyBzaWduYWxzIHdoZW4KICAgICAgICBuZWVkZWQsIHRoYXQgaXMsIHdoZW4gYSBjaGFuZ2UgaW4g
dGhlIHNlbGVjdGlvbiBoYXBwZW5zIGFjcm9zcwogICAgICAgIGRpZmZlcmVudCBhY2Nlc3NpYmxl
IG9iamVjdHMuCiAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFj
Y2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UpOgogICAgICAgIFJlZmFjdG9yZWQgc29tZSBj
b2RlIGhlcmUsIGJ5IHVzaW5nIHRoZSBuZXcgaGVscGVyIGZ1bmN0aW9ucy4KLS0tCiBXZWJDb3Jl
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDQgKysrKysr
KysrKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgICAgICAgICAg
fCAgIDc0ICsrKysrKysrKysrLS0tLS0KIFdlYkNvcmUvZWRpdGluZy9ndGsvU2VsZWN0aW9uQ29u
dHJvbGxlckd0ay5jcHAgICAgIHwgICA4OCArKysrKysrKysrKysrKystLS0tLQogMyBmaWxlcyBj
aGFuZ2VkLCAxNjMgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzOTNlNTIyLi5mNmJm
OGNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ3IEBACisyMDEwLTExLTA4ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNh
bmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbR3RrXSBJbXBsZW1lbnQgU1RBVEVfRk9DVVNFRCwgU1RBVEVfRk9DVVNBQkxF
LCBhbmQgY29ycmVzcG9uZGluZyBldmVudHMgZm9yIHRleHQgb2JqZWN0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcwNDgKKworICAgICAgICBIYW5k
bGUgZm9jdXMgY2hhbmdlIGZvciB0ZXh0IG9iamVjdHMgYmFzZWQgaW4gY2FyZXQgY2hhbmdlcy4K
KworICAgICAgICBBcyB0ZXh0IG9iamVjdHMgKHN1Y2ggYXMgcGFyYWdyYXBocykgc2VlbSBub3Qg
dG8gYWNjZXB0IGZvY3VzIGluCisgICAgICAgIFdlYkNvcmUgaW4gdGhlIHNhbWUgd2F5IG90aGVy
IG9iamVjdHMgKHRleHQgY29udHJvbHMpIGRvLCBhCisgICAgICAgIEd0ay1zcGVjaWZpYyB3b3Jr
YXJvdW5kIGlzIG5lZWRlZCB0byBleHBvc2UgdGhpcyBzdGF0ZXMgYW5kIHRoZQorICAgICAgICBy
ZWxhdGVkIGV2ZW50cyB0byBBVEstYmFzZWQgYXNzaXN0aXZlIHRlY2hub2xvZ2llcy4KKworICAg
ICAgICBFbnN1cmUgdGhhdCB0ZXh0IG9iamVjdHMgYXJlIGV4cG9zZWQgd2l0aCB0aGUgQVRLX1NU
QVRFX0ZPQ1VTQUJMRQorICAgICAgICBzdGF0ZSwgYW5kIHRoYXQgdGhlIEFUS19TVEFURV9GT0NV
U0VEIHN0YXRlIGlzIGFkZGVkIHRvIHRob3NlCisgICAgICAgIHRleHQgb2JqZWN0cyBjb250YWlu
aW5nIHRoZSBjdXJyZW50bHkgYWN0aXZlIGNhcmV0IHNlbGVjdGlvbi4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcDoKKyAgICAg
ICAgKHNlbGVjdGlvbkJlbG9uZ3NUb09iamVjdCk6IE1vdmVkIHVwd2FyZHMgdG8gdXNlIGl0IGZy
b20KKyAgICAgICAgdGhlIG5ldyBpc1RleHRXaXRoQ2FyZXQoKSBmdW5jdGlvbi4KKyAgICAgICAg
KGlzVGV4dFdpdGhDYXJldCk6IE5ldywgY2hlY2tzIHdoZXRoZXIgYW4gYWNjZXNzaWJpbGl0eSBv
YmplY3QKKyAgICAgICAgcmVwcmVzZW50cyBhIHRleHQgb2JqZWN0IHdpdGggdGhlIGN1cnJlbnQg
Y2FyZXQgc2VsZWN0aW9uIG9uIGl0LgorICAgICAgICAoc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9i
amVjdCk6IEFkZCB0aGUgQVRLX1NUQVRFX0ZPQ1VTRUQgc3RhdGUKKyAgICAgICAgd2hlbiBhbHNv
IHdoZW4gaXNUZXh0V2l0aENhcmV0KGNvcmVPYmplY3QpIHJldHVybnMgdHJ1ZS4KKyAgICAgICAg
KHdlYmtpdF9hY2Nlc3NpYmxlX3JlZl9zdGF0ZV9zZXQpOiBBZGQgdGhlIEFUS19TVEFURV9GT0NV
U0FCTEUKKyAgICAgICAgc3RhdGUgdG8gdGV4dCBvYmplY3RzIGFuZCB0aG9zZSB3aXRoIHRoZSBB
VEtfUk9MRV9QQVJBR1JBUEggcm9sZS4KKworICAgICAgICBNYWtlIHN1cmUgdGhlIHByb3BlciBl
dmVudHMgYXNzb2NpYXRlZCB0byBhIGNoYW5nZSBvZiBmb2N1cyBhcmUKKyAgICAgICAgZW1pdHRl
ZCwgYmFzZWQgb24gY2FyZXQgY2hhbmdlcyBhY3Jvc3MgZGlmZmVyZW50IGFjY2Vzc2liaWxpdHkK
KyAgICAgICAgb2JqZWN0cy4gQWxzbywgcmVmYWN0b3JlZCB0aGUgY29kZSBpbiBtb3JlIG1hbmFn
ZWFibGUgYW5kCisgICAgICAgIHVuZGVyc3RhbmRhYmxlIGhlbHBlciBmdW5jdGlvbnMuCisKKyAg
ICAgICAgKiBlZGl0aW5nL2d0ay9TZWxlY3Rpb25Db250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmVtaXRUZXh0U2VsZWN0aW9uQ2hhbmdlKTogTmV3LCBpbmNsdWRlcyB0aGUgc3Bl
Y2lmaWMKKyAgICAgICAgY29kZSBmb3JtZXJseSBwbGFjZWQgaW4gbm90aWZ5QWNjZXNzaWJpbGl0
eUZvclNlbGVjdGlvbkNoYW5nZSgpIHRvCisgICAgICAgIGVtaXQgdGhlICd0ZXh0LWNhcmV0LW1v
dmVkJyBhbmQgJ3RleHQtc2VsZWN0aW9uLWNoYW5nZScgc2lnbmFscy4KKyAgICAgICAgKFdlYkNv
cmU6Om1heWJlRW1pdFRleHRGb2N1c0NoYW5nZSk6IE5ldywgdGFrZXMgY2FyZSBvZiBlbWl0dGlu
ZworICAgICAgICB0aGUgJ2ZvY3VzLWV2ZW50JyBhbmQgJ3N0YXRlLWNoYW5nZWQ6OmZvY3VzZWQn
IHNpZ25hbHMgd2hlbgorICAgICAgICBuZWVkZWQsIHRoYXQgaXMsIHdoZW4gYSBjaGFuZ2UgaW4g
dGhlIHNlbGVjdGlvbiBoYXBwZW5zIGFjcm9zcworICAgICAgICBkaWZmZXJlbnQgYWNjZXNzaWJs
ZSBvYmplY3RzLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bm90aWZ5
QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZSk6CisgICAgICAgIFJlZmFjdG9yZWQgc29t
ZSBjb2RlIGhlcmUsIGJ5IHVzaW5nIHRoZSBuZXcgaGVscGVyIGZ1bmN0aW9ucy4KKwogMjAxMC0x
MS0wMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXZlIEh5YXR0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgYi9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAppbmRleCA3MjZjZGIx
Li5hNDRjZGU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3Rr
L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2lu
Y2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdE1hcmtlci5oIgog
I2luY2x1ZGUgIlJlbmRlclRleHQuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIldl
YktpdEFjY2Vzc2libGVIeXBlcmxpbmsuaCIKQEAgLTQ3Niw2ICs0NzcsNTAgQEAgc3RhdGljIEF0
a1JvbGUgd2Via2l0X2FjY2Vzc2libGVfZ2V0X3JvbGUoQXRrT2JqZWN0KiBvYmplY3QpCiAgICAg
cmV0dXJuIGF0a1JvbGUoYXhPYmplY3QtPnJvbGVWYWx1ZSgpKTsKIH0KIAorc3RhdGljIGJvb2wg
c2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3Qs
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKK3sKKyAgICBpZiAoIWNvcmVPYmplY3QgfHwg
IWNvcmVPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFs
aXplZFJhbmdlKCk7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gV2Ugd2FudCB0byBjaGVjayB0aGF0IGJvdGggdGhlIHNlbGVjdGlvbiBpbnRlcnNlY3Rz
IHRoZSBub2RlCisgICAgLy8gQU5EIHRoYXQgdGhlIHNlbGVjdGlvbiBpcyBub3QganVzdCAidG91
Y2hpbmciIG9uZSBvZiB0aGUKKyAgICAvLyBib3VuZGFyaWVzIGZvciB0aGUgc2VsZWN0ZWQgbm9k
ZS4gV2Ugd2FudCB0byBjaGVjayB3aGV0aGVyIHRoZQorICAgIC8vIG5vZGUgaXMgYWN0dWFsbHkg
aW5zaWRlIHRoZSByZWdpb24sIGF0IGxlYXN0IHBhcnRpYWxseS4KKyAgICBOb2RlKiBub2RlID0g
Y29yZU9iamVjdC0+bm9kZSgpOworICAgIE5vZGUqIGxhc3REZXNjZW5kYW50ID0gbm9kZS0+bGFz
dERlc2NlbmRhbnQoKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICByZXR1cm4gKHJh
bmdlLT5pbnRlcnNlY3RzTm9kZShub2RlLCBlYykKKyAgICAgICAgICAgICYmIChyYW5nZS0+ZW5k
Q29udGFpbmVyKCkgIT0gbm9kZSB8fCByYW5nZS0+ZW5kT2Zmc2V0KCkpCisgICAgICAgICAgICAm
JiAocmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgIT0gbGFzdERlc2NlbmRhbnQgfHwgcmFuZ2UtPnN0
YXJ0T2Zmc2V0KCkgIT0gbGFzdE9mZnNldEluTm9kZShsYXN0RGVzY2VuZGFudCkpKTsKK30KKwor
c3RhdGljIGJvb2wgaXNUZXh0V2l0aENhcmV0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmpl
Y3QpCit7CisgICAgaWYgKCFjb3JlT2JqZWN0IHx8IGNvcmVPYmplY3QtPmlzQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTZXR0aW5ncyog
c2V0dGluZ3MgPSBjb3JlT2JqZWN0LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZXR0aW5ncygpOwor
ICAgIGlmICghc2V0dGluZ3MgfHwgIXNldHRpbmdzLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBDaGVjayB0ZXh0IG9iamVjdHMgYW5kIHBh
cmFncmFwaHMgb25seS4KKyAgICBBdGtPYmplY3QqIGF4T2JqZWN0ID0gY29yZU9iamVjdC0+d3Jh
cHBlcigpOworICAgIEF0a1JvbGUgcm9sZSA9IGF4T2JqZWN0ID8gYXRrX29iamVjdF9nZXRfcm9s
ZShheE9iamVjdCkgOiBBVEtfUk9MRV9JTlZBTElEOworICAgIGlmIChyb2xlICE9IEFUS19ST0xF
X1RFWFQgJiYgcm9sZSAhPSBBVEtfUk9MRV9QQVJBR1JBUEgpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIEZpbmFsbHksIGNoZWNrIHdoZXRoZXIgdGhlIGNhcmV0IGlzIHNldCBpbiB0
aGUgY3VycmVudCBvYmplY3QuCisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBjb3Jl
T2JqZWN0LT5zZWxlY3Rpb24oKTsKKyAgICBpZiAoIXNlbGVjdGlvbi5pc0NhcmV0KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiAhc2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0
KGNvcmVPYmplY3QsIHNlbGVjdGlvbikgfHwgc2VsZWN0aW9uLmlzTm9uZSgpID8gMCA6IDE7Cit9
CisKIHN0YXRpYyB2b2lkIHNldEF0a1N0YXRlU2V0RnJvbUNvcmVPYmplY3QoQWNjZXNzaWJpbGl0
eU9iamVjdCogY29yZU9iamVjdCwgQXRrU3RhdGVTZXQqIHN0YXRlU2V0KQogewogICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudCA9IGNvcmVPYmplY3QtPnBhcmVudE9iamVjdCgpOwpAQCAt
NTAzLDcgKzU0OCw3IEBAIHN0YXRpYyB2b2lkIHNldEF0a1N0YXRlU2V0RnJvbUNvcmVPYmplY3Qo
QWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQXRrU3RhCiAgICAgaWYgKGNvcmVPYmpl
Y3QtPmNhblNldEZvY3VzQXR0cmlidXRlKCkpCiAgICAgICAgIGF0a19zdGF0ZV9zZXRfYWRkX3N0
YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfRk9DVVNBQkxFKTsKIAotICAgIGlmIChjb3JlT2JqZWN0
LT5pc0ZvY3VzZWQoKSkKKyAgICBpZiAoY29yZU9iamVjdC0+aXNGb2N1c2VkKCkgfHwgaXNUZXh0
V2l0aENhcmV0KGNvcmVPYmplY3QpKQogICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShz
dGF0ZVNldCwgQVRLX1NUQVRFX0ZPQ1VTRUQpOwogCiAgICAgLy8gVE9ETzogQVRLX1NUQVRFX0hP
UklaT05UQUwKQEAgLTU3Miw4ICs2MTcsMTIgQEAgc3RhdGljIEF0a1N0YXRlU2V0KiB3ZWJraXRf
YWNjZXNzaWJsZV9yZWZfc3RhdGVfc2V0KEF0a09iamVjdCogb2JqZWN0KQogICAgICAgICByZXR1
cm4gc3RhdGVTZXQ7CiAgICAgfQogCi0gICAgc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVjdChj
b3JlT2JqZWN0LCBzdGF0ZVNldCk7CisgICAgLy8gVGV4dCBvYmplY3RzIG11c3QgYmUgZm9jdXNh
YmxlLgorICAgIEF0a1JvbGUgcm9sZSA9IGF0a19vYmplY3RfZ2V0X3JvbGUob2JqZWN0KTsKKyAg
ICBpZiAocm9sZSA9PSBBVEtfUk9MRV9URVhUIHx8IHJvbGUgPT0gQVRLX1JPTEVfUEFSQUdSQVBI
KQorICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShzdGF0ZVNldCwgQVRLX1NUQVRFX0ZP
Q1VTQUJMRSk7CiAKKyAgICBzZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0KGNvcmVPYmplY3Qs
IHN0YXRlU2V0KTsKICAgICByZXR1cm4gc3RhdGVTZXQ7CiB9CiAKQEAgLTE0MDcsMjcgKzE0NTYs
NiBAQCBzdGF0aWMgZ2ludCB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9vZmZzZXRfYXRfcG9p
bnQoQXRrVGV4dCogdGV4dCwgZ2ludCB4LCBnaQogICAgIHJldHVybiByYW5nZS5zdGFydDsKIH0K
IAotc3RhdGljIGJvb2wgc2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGNvcmVPYmplY3QsIFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKLXsKLSAgICBpZiAo
IWNvcmVPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFs
aXplZFJhbmdlKCk7Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gV2Ugd2FudCB0byBjaGVjayB0aGF0IGJvdGggdGhlIHNlbGVjdGlvbiBpbnRlcnNlY3Rz
IHRoZSBub2RlCi0gICAgLy8gQU5EIHRoYXQgdGhlIHNlbGVjdGlvbiBpcyBub3QganVzdCAidG91
Y2hpbmciIG9uZSBvZiB0aGUKLSAgICAvLyBib3VuZGFyaWVzIGZvciB0aGUgc2VsZWN0ZWQgbm9k
ZS4gV2Ugd2FudCB0byBjaGVjayB3aGV0aGVyIHRoZQotICAgIC8vIG5vZGUgaXMgYWN0dWFsbHkg
aW5zaWRlIHRoZSByZWdpb24sIGF0IGxlYXN0IHBhcnRpYWxseQotICAgIE5vZGUqIG5vZGUgPSBj
b3JlT2JqZWN0LT5ub2RlKCk7Ci0gICAgTm9kZSogbGFzdERlc2NlbmRhbnQgPSBub2RlLT5sYXN0
RGVzY2VuZGFudCgpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHJldHVybiAocmFu
Z2UtPmludGVyc2VjdHNOb2RlKG5vZGUsIGVjKQotICAgICAgICAgICAgJiYgKHJhbmdlLT5lbmRD
b250YWluZXIoKSAhPSBub2RlIHx8IHJhbmdlLT5lbmRPZmZzZXQoKSkKLSAgICAgICAgICAgICYm
IChyYW5nZS0+c3RhcnRDb250YWluZXIoKSAhPSBsYXN0RGVzY2VuZGFudCB8fCByYW5nZS0+c3Rh
cnRPZmZzZXQoKSAhPSBsYXN0T2Zmc2V0SW5Ob2RlKGxhc3REZXNjZW5kYW50KSkpOwotfQotCiBz
dGF0aWMgdm9pZCBnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGNvcmVPYmplY3QsIFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgZ2ludCYgc3RhcnRP
ZmZzZXQsIGdpbnQmIGVuZE9mZnNldCkKIHsKICAgICBpZiAoIWNvcmVPYmplY3QtPmlzQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2d0ay9T
ZWxlY3Rpb25Db250cm9sbGVyR3RrLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9ndGsvU2VsZWN0aW9u
Q29udHJvbGxlckd0ay5jcHAKaW5kZXggNTYyNjExMC4uMjA4NTM4MiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9lZGl0aW5nL2d0ay9TZWxlY3Rpb25Db250cm9sbGVyR3RrLmNwcAorKysgYi9XZWJDb3Jl
L2VkaXRpbmcvZ3RrL1NlbGVjdGlvbkNvbnRyb2xsZXJHdGsuY3BwCkBAIC0yMywzNCArMjMsODIg
QEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5oIgogI2luY2x1ZGUg
IkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlJlZlB0ci5o
IgogCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQg
U2VsZWN0aW9uQ29udHJvbGxlcjo6bm90aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNoYW5n
ZSgpCitzdGF0aWMgdm9pZCBlbWl0VGV4dFNlbGVjdGlvbkNoYW5nZShBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvYmplY3QsIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uLCBpbnQgb2Zmc2V0KQorewor
ICAgIEF0a09iamVjdCogYXhPYmplY3QgPSBvYmplY3QtPndyYXBwZXIoKTsKKyAgICBpZiAoIWF4
T2JqZWN0IHx8ICFBVEtfSVNfVEVYVChheE9iamVjdCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZShheE9iamVjdCwgInRleHQtY2FyZXQtbW92ZWQiLCBvZmZz
ZXQpOworICAgIGlmIChzZWxlY3Rpb24uaXNSYW5nZSgpKQorICAgICAgICBnX3NpZ25hbF9lbWl0
X2J5X25hbWUoYXhPYmplY3QsICJ0ZXh0LXNlbGVjdGlvbi1jaGFuZ2VkIik7Cit9CisKK3N0YXRp
YyB2b2lkIG1heWJlRW1pdFRleHRGb2N1c0NoYW5nZShQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IHBycE9iamVjdCkKIHsKLSAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0
eUVuYWJsZWQoKSAmJiBtX3NlbGVjdGlvbi5zdGFydCgpLmlzTm90TnVsbCgpICYmIG1fc2VsZWN0
aW9uLmVuZCgpLmlzTm90TnVsbCgpKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogZm9jdXNlZE5v
ZGUgPSBtX3NlbGVjdGlvbi5lbmQoKS5ub2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3QgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGZvY3VzZWROb2RlKTsKLQotICAgICAgICAv
LyBuZWVkIHRvIGNoZWNrIHRoaXMgYXMgZ2V0T3JDcmVhdGUgY291bGQgcmV0dXJuIDAKLSAgICAg
ICAgaWYgKCFhY2Nlc3NpYmlsaXR5T2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGludCBvZmZzZXQ7Ci0gICAgICAgIC8vIEFsd2F5cyByZXBvcnQgdGhlIGV2ZW50cyB3LnIu
dC4gdGhlIG5vbi1saW5rZWQgdW5pZ25vcmVkIHBhcmVudC4gKGkuZS4gaWdub3JlTGlua3MgPT0g
dHJ1ZSkKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0ID0gb2JqZWN0QW5kT2Zm
c2V0VW5pZ25vcmVkKGFjY2Vzc2liaWxpdHlPYmplY3QsIG9mZnNldCwgdHJ1ZSk7Ci0gICAgICAg
IGlmICghb2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEF0a09iamVjdCog
d3JhcHBlciA9IG9iamVjdC0+d3JhcHBlcigpOwotICAgICAgICBpZiAoQVRLX0lTX1RFWFQod3Jh
cHBlcikpIHsKLSAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3cmFwcGVyLCAidGV4
dC1jYXJldC1tb3ZlZCIsIG9mZnNldCk7Ci0gICAgICAgICAgICBpZiAobV9zZWxlY3Rpb24uaXNS
YW5nZSgpKQotICAgICAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3cmFwcGVyLCAi
dGV4dC1zZWxlY3Rpb24tY2hhbmdlZCIpOworICAgIC8vIFRoaXMgc3RhdGljIHZhcmlhYmxlIGlz
IG5lZWRlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBvbGQgb2JqZWN0CisgICAgLy8gYXMgcGVyIHBy
ZXZpb3VzIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24sIGluIG9yZGVyIHRvIHByb3Blcmx5CisgICAg
Ly8gZGVjaWRlIHdoZXRoZXIgdG8gZW1pdCBzb21lIHNpZ25hbHMgb3Igbm90LgorICAgIHN0YXRp
YyBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2xkT2JqZWN0ID0gMDsKKworICAgIFJlZlB0
cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmplY3QgPSBwcnBPYmplY3Q7CisKKyAgICAvLyBFbnN1
cmUgdGhlIG9sZE9iamVjdCBiZWxvbmdzIHRvIHRoZSBzYW1lIGRvY3VtZW50IHRoYXQgdGhlCisg
ICAgLy8gY3VycmVudCBvYmplY3Qgc28gZnVydGhlciBjb21wYXJpc29ucyBtYWtlIHNlbnNlLiBP
dGhlcndpc2UsCisgICAgLy8ganVzdCByZXNldCBvbGRPYmplY3Qgc28gaXQgd29uJ3QgYmUgdGFr
ZW4gaW50byBhY2NvdW50LgorICAgIGlmIChvYmplY3QgJiYgb2xkT2JqZWN0ICYmIG9sZE9iamVj
dC0+ZG9jdW1lbnQoKSAhPSBvYmplY3QtPmRvY3VtZW50KCkpCisgICAgICAgIG9sZE9iamVjdCA9
IDA7CisKKyAgICBBdGtPYmplY3QqIGF4T2JqZWN0ID0gb2JqZWN0ID8gb2JqZWN0LT53cmFwcGVy
KCkgOiAwOworICAgIEF0a09iamVjdCogb2xkQXhPYmplY3QgPSBvbGRPYmplY3QgPyBvbGRPYmpl
Y3QtPndyYXBwZXIoKSA6IDA7CisKKyAgICBpZiAoYXhPYmplY3QgIT0gb2xkQXhPYmplY3QpIHsK
KyAgICAgICAgaWYgKG9sZEF4T2JqZWN0ICYmIEFUS19JU19URVhUKG9sZEF4T2JqZWN0KSkgewor
ICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG9sZEF4T2JqZWN0LCAiZm9jdXMtZXZl
bnQiLCBmYWxzZSk7CisgICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUob2xkQXhPYmpl
Y3QsICJzdGF0ZS1jaGFuZ2UiLCAiZm9jdXNlZCIsIGZhbHNlKTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoYXhPYmplY3QgJiYgQVRLX0lTX1RFWFQoYXhPYmplY3QpKSB7CisgICAgICAgICAgICBn
X3NpZ25hbF9lbWl0X2J5X25hbWUoYXhPYmplY3QsICJmb2N1cy1ldmVudCIsIHRydWUpOworICAg
ICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGF4T2JqZWN0LCAic3RhdGUtY2hhbmdlIiwg
ImZvY3VzZWQiLCB0cnVlKTsKICAgICAgICAgfQogICAgIH0KKworICAgIC8vIFVwZGF0ZSBwb2lu
dGVyIHRvIGxhc3QgZm9jdXNlZCBvYmplY3QuCisgICAgb2xkT2JqZWN0ID0gb2JqZWN0OworfQor
CisKK3ZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6bm90aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVj
dGlvbkNoYW5nZSgpCit7CisgICAgaWYgKCFBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5h
YmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBSZXNldCBsYXN0Rm9jdXNlTm9kZSBh
bmQgcmV0dXJuIGZvciBubyB2YWxpZCBzZWxlY3Rpb25zLgorICAgIGlmICghbV9zZWxlY3Rpb24u
c3RhcnQoKS5pc05vdE51bGwoKSB8fCAhbV9zZWxlY3Rpb24uZW5kKCkuaXNOb3ROdWxsKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFJlbmRlck9iamVjdCogZm9jdXNlZE5vZGUgPSBtX3NlbGVj
dGlvbi5lbmQoKS5ub2RlKCktPnJlbmRlcmVyKCk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
YWNjZXNzaWJpbGl0eU9iamVjdCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUo
KS0+Z2V0T3JDcmVhdGUoZm9jdXNlZE5vZGUpOworCisgICAgLy8gTmVlZCB0byBjaGVjayB0aGlz
IGFzIGdldE9yQ3JlYXRlIGNvdWxkIHJldHVybiAwLAorICAgIGlmICghYWNjZXNzaWJpbGl0eU9i
amVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IG9mZnNldDsKKyAgICAvLyBBbHdheXMg
cmVwb3J0IHRoZSBldmVudHMgdy5yLnQuIHRoZSBub24tbGlua2VkIHVuaWdub3JlZCBwYXJlbnQu
IChpLmUuIGlnbm9yZUxpbmtzID09IHRydWUpLgorICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0PiBvYmplY3QgPSBvYmplY3RBbmRPZmZzZXRVbmlnbm9yZWQoYWNjZXNzaWJpbGl0eU9iamVj
dCwgb2Zmc2V0LCB0cnVlKTsKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gRW1pdCByZWxhdGVkc2lnbmFscy4KKyAgICBlbWl0VGV4dFNlbGVjdGlvbkNoYW5nZShv
YmplY3QuZ2V0KCksIG1fc2VsZWN0aW9uLCBvZmZzZXQpOworICAgIG1heWJlRW1pdFRleHRGb2N1
c0NoYW5nZShvYmplY3QucmVsZWFzZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
LSAKMS43LjMuMgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74223</attachid>
            <date>2010-11-18 03:14:58 -0800</date>
            <delta_ts>2010-11-18 03:24:48 -0800</delta_ts>
            <desc>Patch proposal + Layout Test</desc>
            <filename>0001-2010-11-18-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>27638</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBkNjk4MWU3YjYyYWM3NTVjZDE1YmQ1ZjM4ZmViZDU3ZWViZDUwNTk3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBXZWQsIDMgTm92IDIwMTAgMDA6MjQ6MjQgKzAxMDAKU3ViamVjdDogW1BBVENI
XSAyMDEwLTExLTE4ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
CiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFtHdGtdIEltcGxl
bWVudCBTVEFURV9GT0NVU0VELCBTVEFURV9GT0NVU0FCTEUsIGFuZCBjb3JyZXNwb25kaW5nIGV2
ZW50cyBmb3IgdGV4dCBvYmplY3RzCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3MDQ4CgogICAgICAgIEhhbmRsZSBmb2N1cyBjaGFuZ2UgZm9yIHRleHQg
b2JqZWN0cyBiYXNlZCBpbiBjYXJldCBjaGFuZ2VzLgoKICAgICAgICBBcyB0ZXh0IG9iamVjdHMg
KHN1Y2ggYXMgcGFyYWdyYXBocykgc2VlbSBub3QgdG8gYWNjZXB0IGZvY3VzIGluCiAgICAgICAg
V2ViQ29yZSBpbiB0aGUgc2FtZSB3YXkgb3RoZXIgb2JqZWN0cyAodGV4dCBjb250cm9scykgZG8s
IGEKICAgICAgICBHdGstc3BlY2lmaWMgd29ya2Fyb3VuZCBpcyBuZWVkZWQgdG8gZXhwb3NlIHRo
aXMgc3RhdGVzIGFuZCB0aGUKICAgICAgICByZWxhdGVkIGV2ZW50cyB0byBBVEstYmFzZWQgYXNz
aXN0aXZlIHRlY2hub2xvZ2llcy4KCiAgICAgICAgRW5zdXJlIHRoYXQgdGV4dCBvYmplY3RzIGFy
ZSBleHBvc2VkIHdpdGggdGhlIEFUS19TVEFURV9GT0NVU0FCTEUKICAgICAgICBzdGF0ZSwgYW5k
IHRoYXQgdGhlIEFUS19TVEFURV9GT0NVU0VEIHN0YXRlIGlzIGFkZGVkIHRvIHRob3NlCiAgICAg
ICAgdGV4dCBvYmplY3RzIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnRseSBhY3RpdmUgY2FyZXQgc2Vs
ZWN0aW9uLgoKICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQXRrLmNwcDoKICAgICAgICAoc2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0KTogTW92ZWQg
dXB3YXJkcyB0byB1c2UgaXQgZnJvbQogICAgICAgIHRoZSBuZXcgaXNUZXh0V2l0aENhcmV0KCkg
ZnVuY3Rpb24uCiAgICAgICAgKGlzVGV4dFdpdGhDYXJldCk6IE5ldywgY2hlY2tzIHdoZXRoZXIg
YW4gYWNjZXNzaWJpbGl0eSBvYmplY3QKICAgICAgICByZXByZXNlbnRzIGEgdGV4dCBvYmplY3Qg
d2l0aCB0aGUgY3VycmVudCBjYXJldCBzZWxlY3Rpb24gb24gaXQuCiAgICAgICAgKHNldEF0a1N0
YXRlU2V0RnJvbUNvcmVPYmplY3QpOiBBZGQgdGhlIEFUS19TVEFURV9GT0NVU0VEIHN0YXRlCiAg
ICAgICAgd2hlbiBhbHNvIHdoZW4gaXNUZXh0V2l0aENhcmV0KGNvcmVPYmplY3QpIHJldHVybnMg
dHJ1ZS4KICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfcmVmX3N0YXRlX3NldCk6IEFkZCB0aGUg
QVRLX1NUQVRFX0ZPQ1VTQUJMRQogICAgICAgIHN0YXRlIHRvIHRleHQgb2JqZWN0cyBhbmQgdGhv
c2Ugd2l0aCB0aGUgQVRLX1JPTEVfUEFSQUdSQVBIIHJvbGUuCgogICAgICAgIE1ha2Ugc3VyZSB0
aGUgcHJvcGVyIGV2ZW50cyBhc3NvY2lhdGVkIHRvIGEgY2hhbmdlIG9mIGZvY3VzIGFyZQogICAg
ICAgIGVtaXR0ZWQsIGJhc2VkIG9uIGNhcmV0IGNoYW5nZXMgYWNyb3NzIGRpZmZlcmVudCBhY2Nl
c3NpYmlsaXR5CiAgICAgICAgb2JqZWN0cy4gQWxzbywgcmVmYWN0b3JlZCB0aGUgY29kZSBpbiBt
b3JlIG1hbmFnZWFibGUgYW5kCiAgICAgICAgdW5kZXJzdGFuZGFibGUgaGVscGVyIGZ1bmN0aW9u
cy4KCiAgICAgICAgKiBlZGl0aW5nL2d0ay9TZWxlY3Rpb25Db250cm9sbGVyR3RrLmNwcDoKICAg
ICAgICAoV2ViQ29yZTo6ZW1pdFRleHRTZWxlY3Rpb25DaGFuZ2UpOiBOZXcsIGluY2x1ZGVzIHRo
ZSBzcGVjaWZpYwogICAgICAgIGNvZGUgZm9ybWVybHkgcGxhY2VkIGluIG5vdGlmeUFjY2Vzc2li
aWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UoKSB0bwogICAgICAgIGVtaXQgdGhlICd0ZXh0LWNhcmV0
LW1vdmVkJyBhbmQgJ3RleHQtc2VsZWN0aW9uLWNoYW5nZScgc2lnbmFscy4KICAgICAgICAoV2Vi
Q29yZTo6bWF5YmVFbWl0VGV4dEZvY3VzQ2hhbmdlKTogTmV3LCB0YWtlcyBjYXJlIG9mIGVtaXR0
aW5nCiAgICAgICAgdGhlICdmb2N1cy1ldmVudCcgYW5kICdzdGF0ZS1jaGFuZ2VkOjpmb2N1c2Vk
JyBzaWduYWxzIHdoZW4KICAgICAgICBuZWVkZWQsIHRoYXQgaXMsIHdoZW4gYSBjaGFuZ2UgaW4g
dGhlIHNlbGVjdGlvbiBoYXBwZW5zIGFjcm9zcwogICAgICAgIGRpZmZlcmVudCBhY2Nlc3NpYmxl
IG9iamVjdHMuCiAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFj
Y2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UpOgogICAgICAgIFJlZmFjdG9yZWQgc29tZSBj
b2RlIGhlcmUsIGJ5IHVzaW5nIHRoZSBuZXcgaGVscGVyIGZ1bmN0aW9ucy4KCjIwMTAtMTEtMTgg
IE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0d0a10gSW1wbGVtZW50IFNUQVRFX0ZP
Q1VTRUQsIFNUQVRFX0ZPQ1VTQUJMRSwgYW5kIGNvcnJlc3BvbmRpbmcgZXZlbnRzIGZvciB0ZXh0
IG9iamVjdHMKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjcwNDgKCiAgICAgICAgQWRkIHN1cHBvcnQgaW4gRFJUIGZvciBjaGVja2luZyB3aGV0aGVyIGFu
IGFjY2Vzc2liaWxpdHkgVUkKICAgICAgICBlbGVtZW50IGlzIGZvY3VzYWJsZSBhbmQvb3IgZm9j
dXNlZC4gSW1wbGVtZW50ZWQgZm9yIEdUSy4KCiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKICAgICAgICAoZ2V0SXNGb2N1c2VkQ2FsbGJhY2spOiBO
ZXcuCiAgICAgICAgKGdldElzRm9jdXNhYmxlQ2FsbGJhY2spOiBOZXcuCiAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTQ2xhc3MpOiBBZGQgdGhlIG5ldyBhdmFpbGFibGUKICAg
ICAgICBjYWxsYmFja3MgZm9yIGlzRm9jdXNlZCBhbmQgaXNGb2N1c2FibGUuCiAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CiAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHA6CiAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCk6IE5ldywgaW1wbGVtZW50ZWQgYnkgY2hlY2tp
bmcKICAgICAgICB3aGV0aGVyIHRoZSByZWxhdGVkIEF0a1N0YXRlIHZhbHVlIGlzIGluIHRoZSBv
YmplY3QncyBzdGF0ZSBzZXQuCiAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9j
dXNhYmxlKTogRGl0dG8uCiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbToKICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1
c2VkKTogTmV3LCBkdW1teSBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNGb2N1c2FibGUpOiBEaXR0by4KICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dp
bi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcDoKICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNGb2N1c2VkKTogRGl0dG8uCiAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzRm9jdXNhYmxlKTogRGl0dG8uCgoyMDEwLTExLTE4ICBNYXJpbyBTYW5jaGV6IFByYWRh
ICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCgogICAgICAgIFtHdGtdIEltcGxlbWVudCBTVEFURV9GT0NVU0VELCBTVEFURV9GT0NVU0FC
TEUsIGFuZCBjb3JyZXNwb25kaW5nIGV2ZW50cyBmb3IgdGV4dCBvYmplY3RzCiAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MDQ4CgogICAgICAgIEFkZGVk
IGEgbmV3IEdUSy1zcGVjaWZpYyB0ZXN0IHRvIGNoZWNrIGZvY3Vze2FibGV8ZWR9IHN0YXRlcyBh
cmUKICAgICAgICBwcm9wZXJseSBzZXQgd2hlbiBtb3ZpbmcgdGhlIGNhcmV0IGFjcm9zcyB0ZXh0
IG9iamVjdHMuCgogICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJv
d3NpbmctdGV4dC1mb2N1cy5odG1sOiBBZGRlZC4KLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKysrCiAuLi4vYWNjZXNzaWJpbGl0
eS9jYXJldC1icm93c2luZy10ZXh0LWZvY3VzLmh0bWwgICB8ICAgNjkgKysrKysrKysrKysrKysr
CiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
NDYgKysrKysrKysrKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAg
ICAgICAgICAgfCAgIDc0ICsrKysrKysrKysrLS0tLS0KIFdlYkNvcmUvZWRpdGluZy9ndGsvU2Vs
ZWN0aW9uQ29udHJvbGxlckd0ay5jcHAgICAgIHwgICA4OCArKysrKysrKysrKysrKystLS0tLQog
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI3
ICsrKysrKwogLi4uL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwICAg
ICAgfCAgIDEyICsrKwogLi4uL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aCAgICAgICAgfCAgICAyICsKIC4uLi9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAg
ICAgICAgICAgICAgIHwgICAyMiArKysrKwogLi4uL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tICAgICAgICAgICAgICAgfCAgIDEyICsrKwogLi4uL3dpbi9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50V2luLmNwcCAgICAgICAgICAgICAgfCAgIDEyICsrKwogMTEgZmlsZXMgY2hhbmdlZCwg
MzMzIGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLXRleHQt
Zm9jdXMuaHRtbAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA0NWNiODg0Li44YWY4Y2FhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTAtMTEtMTggIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHdGtd
IEltcGxlbWVudCBTVEFURV9GT0NVU0VELCBTVEFURV9GT0NVU0FCTEUsIGFuZCBjb3JyZXNwb25k
aW5nIGV2ZW50cyBmb3IgdGV4dCBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNzA0OAorCisgICAgICAgIEFkZGVkIGEgbmV3IEdUSy1zcGVj
aWZpYyB0ZXN0IHRvIGNoZWNrIGZvY3Vze2FibGV8ZWR9IHN0YXRlcyBhcmUKKyAgICAgICAgcHJv
cGVybHkgc2V0IHdoZW4gbW92aW5nIHRoZSBjYXJldCBhY3Jvc3MgdGV4dCBvYmplY3RzLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3NpbmctdGV4dC1m
b2N1cy5odG1sOiBBZGRlZC4KKwogMjAxMC0xMS0wMSAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQsIHVwZGF0ZSB0ZXN0
IGV4cGVjdGF0aW9ucy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nl
c3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLXRleHQtZm9jdXMuaHRtbCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLXRleHQtZm9jdXMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjU2MjBmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3Np
bmctdGV4dC1mb2N1cy5odG1sCkBAIC0wLDAgKzEsNjkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQ+Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+Cis8cCBpZD0icGFyMSI+QSBwYXJhZ3Jh
cGggd2l0aCBhPGJyIC8+bGluZSBicmVhayBpbiB0aGUgbWlkZGxlPC9wPgorPHAgaWQ9InBhcjIi
PkEgcGFyYWdyYXBoIHdpdGggYSBzaW5nbGUgbGluZTwvcD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRo
aXMgdGVzdHMgdGhlIEZPQ1VTQUJMRSBhbmQgRk9DVVNFRCBzdGF0ZXMgZm9yIHRleHQgb2JqZWN0
cy4iKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEVuYWJsZUNhcmV0QnJvd3Npbmci
LCB0cnVlKTsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgIGlmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJib2R5IikuZm9jdXMoKTsKKyAgICB2YXIgd2ViQXJlYSA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworCisgICAgdmFyIGF4UGFyMSA9IHdlYkFyZWEuY2hp
bGRBdEluZGV4KDApOworICAgIHZhciBheFBhcjIgPSB3ZWJBcmVhLmNoaWxkQXRJbmRleCgxKTsK
KworICAgIC8vIENoZWNrIHJvbGVzIGFuZCBpbml0aWFsIHN0YXRlcworICAgIHNob3VsZEJlKCJh
eFBhcjEucm9sZSIsICInQVhSb2xlOiBwYXJhZ3JhcGgnIik7CisgICAgc2hvdWxkQmUoImF4UGFy
Mi5yb2xlIiwgIidBWFJvbGU6IHBhcmFncmFwaCciKTsKKyAgICBzaG91bGRCZSgiYXhQYXIxLmlz
Rm9jdXNhYmxlIiwgInRydWUiKTsKKyAgICBzaG91bGRCZSgiYXhQYXIyLmlzRm9jdXNhYmxlIiwg
InRydWUiKTsKKyAgICBzaG91bGRCZSgiYXhQYXIxLmlzRm9jdXNlZCIsICJmYWxzZSIpOworICAg
IHNob3VsZEJlKCJheFBhcjIuaXNGb2N1c2VkIiwgImZhbHNlIik7CisKKyAgICAvLyBTZXQgY2Fy
ZXQgaW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGZpcnN0IHBhcmFncmFwaAorICAgIHZhciBwYXIx
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhcjEiKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuc2V0UG9zaXRpb24ocGFyMS5jaGlsZE5vZGVzLml0ZW0oMCksIDEwKTsKKyAgICBzaG91
bGRCZSgiYXhQYXIxLmlzRm9jdXNlZCIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoImF4UGFyMi5p
c0ZvY3VzZWQiLCAiZmFsc2UiKTsKKworICAgIC8vIE1vdmUgdGhlIGNhcmV0IGRvd24gdG8gdGhl
IHNlY29uZCBsaW5lIChzYW1lIHBhcmFncmFwaCkKKyAgICBldmVudFNlbmRlci5rZXlEb3duKCJk
b3duQXJyb3ciKTsKKyAgICBzaG91bGRCZSgiYXhQYXIxLmlzRm9jdXNlZCIsICJ0cnVlIik7Cisg
ICAgc2hvdWxkQmUoImF4UGFyMi5pc0ZvY3VzZWQiLCAiZmFsc2UiKTsKKworICAgIC8vIE1vdmUg
dGhlIGNhcmV0IGRvd24gYW5kIHVwIChhY3Jvc3MgZGlmZmVyZW50IHBhcmFncmFwaHMpCisgICAg
ZXZlbnRTZW5kZXIua2V5RG93bigiZG93bkFycm93Iik7CisgICAgc2hvdWxkQmUoImF4UGFyMS5p
c0ZvY3VzZWQiLCAiZmFsc2UiKTsKKyAgICBzaG91bGRCZSgiYXhQYXIyLmlzRm9jdXNlZCIsICJ0
cnVlIik7CisgICAgZXZlbnRTZW5kZXIua2V5RG93bigidXBBcnJvdyIpOworICAgIHNob3VsZEJl
KCJheFBhcjEuaXNGb2N1c2VkIiwgInRydWUiKTsKKyAgICBzaG91bGRCZSgiYXhQYXIyLmlzRm9j
dXNlZCIsICJmYWxzZSIpOworCisgICAgLy8gRXhwbGljaXRseSBwdXQgdGhlIGNhcmV0IGluIHRo
ZSBtaWRkbGUgb2YgdGhlIHNlY29uZCBwYXJhZ3JhcGgKKyAgICB2YXIgcGFyMiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJwYXIyIik7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBv
c2l0aW9uKHBhcjIuY2hpbGROb2Rlcy5pdGVtKDApLCAxMCk7CisgICAgc2hvdWxkQmUoImF4UGFy
MS5pc0ZvY3VzZWQiLCAiZmFsc2UiKTsKKyAgICBzaG91bGRCZSgiYXhQYXIyLmlzRm9jdXNlZCIs
ICJ0cnVlIik7CisgIH0KK30KKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM5M2U1MjIuLmQ0ZTk0MDQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDkgQEAKKzIwMTAtMTEtMTggIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtH
dGtdIEltcGxlbWVudCBTVEFURV9GT0NVU0VELCBTVEFURV9GT0NVU0FCTEUsIGFuZCBjb3JyZXNw
b25kaW5nIGV2ZW50cyBmb3IgdGV4dCBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzA0OAorCisgICAgICAgIEhhbmRsZSBmb2N1cyBjaGFu
Z2UgZm9yIHRleHQgb2JqZWN0cyBiYXNlZCBpbiBjYXJldCBjaGFuZ2VzLgorCisgICAgICAgIEFz
IHRleHQgb2JqZWN0cyAoc3VjaCBhcyBwYXJhZ3JhcGhzKSBzZWVtIG5vdCB0byBhY2NlcHQgZm9j
dXMgaW4KKyAgICAgICAgV2ViQ29yZSBpbiB0aGUgc2FtZSB3YXkgb3RoZXIgb2JqZWN0cyAodGV4
dCBjb250cm9scykgZG8sIGEKKyAgICAgICAgR3RrLXNwZWNpZmljIHdvcmthcm91bmQgaXMgbmVl
ZGVkIHRvIGV4cG9zZSB0aGlzIHN0YXRlcyBhbmQgdGhlCisgICAgICAgIHJlbGF0ZWQgZXZlbnRz
IHRvIEFUSy1iYXNlZCBhc3Npc3RpdmUgdGVjaG5vbG9naWVzLgorCisgICAgICAgIFRlc3Q6IHBs
YXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLXRleHQtZm9jdXMuaHRtbAor
CisgICAgICAgIEVuc3VyZSB0aGF0IHRleHQgb2JqZWN0cyBhcmUgZXhwb3NlZCB3aXRoIHRoZSBB
VEtfU1RBVEVfRk9DVVNBQkxFCisgICAgICAgIHN0YXRlLCBhbmQgdGhhdCB0aGUgQVRLX1NUQVRF
X0ZPQ1VTRUQgc3RhdGUgaXMgYWRkZWQgdG8gdGhvc2UKKyAgICAgICAgdGV4dCBvYmplY3RzIGNv
bnRhaW5pbmcgdGhlIGN1cnJlbnRseSBhY3RpdmUgY2FyZXQgc2VsZWN0aW9uLgorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwOgor
ICAgICAgICAoc2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0KTogTW92ZWQgdXB3YXJkcyB0byB1c2Ug
aXQgZnJvbQorICAgICAgICB0aGUgbmV3IGlzVGV4dFdpdGhDYXJldCgpIGZ1bmN0aW9uLgorICAg
ICAgICAoaXNUZXh0V2l0aENhcmV0KTogTmV3LCBjaGVja3Mgd2hldGhlciBhbiBhY2Nlc3NpYmls
aXR5IG9iamVjdAorICAgICAgICByZXByZXNlbnRzIGEgdGV4dCBvYmplY3Qgd2l0aCB0aGUgY3Vy
cmVudCBjYXJldCBzZWxlY3Rpb24gb24gaXQuCisgICAgICAgIChzZXRBdGtTdGF0ZVNldEZyb21D
b3JlT2JqZWN0KTogQWRkIHRoZSBBVEtfU1RBVEVfRk9DVVNFRCBzdGF0ZQorICAgICAgICB3aGVu
IGFsc28gd2hlbiBpc1RleHRXaXRoQ2FyZXQoY29yZU9iamVjdCkgcmV0dXJucyB0cnVlLgorICAg
ICAgICAod2Via2l0X2FjY2Vzc2libGVfcmVmX3N0YXRlX3NldCk6IEFkZCB0aGUgQVRLX1NUQVRF
X0ZPQ1VTQUJMRQorICAgICAgICBzdGF0ZSB0byB0ZXh0IG9iamVjdHMgYW5kIHRob3NlIHdpdGgg
dGhlIEFUS19ST0xFX1BBUkFHUkFQSCByb2xlLgorCisgICAgICAgIE1ha2Ugc3VyZSB0aGUgcHJv
cGVyIGV2ZW50cyBhc3NvY2lhdGVkIHRvIGEgY2hhbmdlIG9mIGZvY3VzIGFyZQorICAgICAgICBl
bWl0dGVkLCBiYXNlZCBvbiBjYXJldCBjaGFuZ2VzIGFjcm9zcyBkaWZmZXJlbnQgYWNjZXNzaWJp
bGl0eQorICAgICAgICBvYmplY3RzLiBBbHNvLCByZWZhY3RvcmVkIHRoZSBjb2RlIGluIG1vcmUg
bWFuYWdlYWJsZSBhbmQKKyAgICAgICAgdW5kZXJzdGFuZGFibGUgaGVscGVyIGZ1bmN0aW9ucy4K
KworICAgICAgICAqIGVkaXRpbmcvZ3RrL1NlbGVjdGlvbkNvbnRyb2xsZXJHdGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZW1pdFRleHRTZWxlY3Rpb25DaGFuZ2UpOiBOZXcsIGluY2x1ZGVzIHRo
ZSBzcGVjaWZpYworICAgICAgICBjb2RlIGZvcm1lcmx5IHBsYWNlZCBpbiBub3RpZnlBY2Nlc3Np
YmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCkgdG8KKyAgICAgICAgZW1pdCB0aGUgJ3RleHQtY2Fy
ZXQtbW92ZWQnIGFuZCAndGV4dC1zZWxlY3Rpb24tY2hhbmdlJyBzaWduYWxzLgorICAgICAgICAo
V2ViQ29yZTo6bWF5YmVFbWl0VGV4dEZvY3VzQ2hhbmdlKTogTmV3LCB0YWtlcyBjYXJlIG9mIGVt
aXR0aW5nCisgICAgICAgIHRoZSAnZm9jdXMtZXZlbnQnIGFuZCAnc3RhdGUtY2hhbmdlZDo6Zm9j
dXNlZCcgc2lnbmFscyB3aGVuCisgICAgICAgIG5lZWRlZCwgdGhhdCBpcywgd2hlbiBhIGNoYW5n
ZSBpbiB0aGUgc2VsZWN0aW9uIGhhcHBlbnMgYWNyb3NzCisgICAgICAgIGRpZmZlcmVudCBhY2Nl
c3NpYmxlIG9iamVjdHMuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpu
b3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgUmVmYWN0b3Jl
ZCBzb21lIGNvZGUgaGVyZSwgYnkgdXNpbmcgdGhlIG5ldyBoZWxwZXIgZnVuY3Rpb25zLgorCiAy
MDEwLTExLTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcCBiL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwCmluZGV4IDcy
NmNkYjEuLjgyZTljNTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwCkBAIC01OCw2ICs1OCw3IEBA
CiAjaW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2Vy
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5oIgpAQCAtNDc2LDYgKzQ3Nyw1MCBAQCBzdGF0
aWMgQXRrUm9sZSB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfcm9sZShBdGtPYmplY3QqIG9iamVjdCkK
ICAgICByZXR1cm4gYXRrUm9sZShheE9iamVjdC0+cm9sZVZhbHVlKCkpOwogfQogCitzdGF0aWMg
Ym9vbCBzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9i
amVjdCwgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQoreworICAgIGlmICghY29yZU9iamVj
dCB8fCAhY29yZU9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rpb24udG9O
b3JtYWxpemVkUmFuZ2UoKTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyBXZSB3YW50IHRvIGNoZWNrIHRoYXQgYm90aCB0aGUgc2VsZWN0aW9uIGludGVy
c2VjdHMgdGhlIG5vZGUKKyAgICAvLyBBTkQgdGhhdCB0aGUgc2VsZWN0aW9uIGlzIG5vdCBqdXN0
ICJ0b3VjaGluZyIgb25lIG9mIHRoZQorICAgIC8vIGJvdW5kYXJpZXMgZm9yIHRoZSBzZWxlY3Rl
ZCBub2RlLiBXZSB3YW50IHRvIGNoZWNrIHdoZXRoZXIgdGhlCisgICAgLy8gbm9kZSBpcyBhY3R1
YWxseSBpbnNpZGUgdGhlIHJlZ2lvbiwgYXQgbGVhc3QgcGFydGlhbGx5LgorICAgIE5vZGUqIG5v
ZGUgPSBjb3JlT2JqZWN0LT5ub2RlKCk7CisgICAgTm9kZSogbGFzdERlc2NlbmRhbnQgPSBub2Rl
LT5sYXN0RGVzY2VuZGFudCgpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHJldHVy
biAocmFuZ2UtPmludGVyc2VjdHNOb2RlKG5vZGUsIGVjKQorICAgICAgICAgICAgJiYgKHJhbmdl
LT5lbmRDb250YWluZXIoKSAhPSBub2RlIHx8IHJhbmdlLT5lbmRPZmZzZXQoKSkKKyAgICAgICAg
ICAgICYmIChyYW5nZS0+c3RhcnRDb250YWluZXIoKSAhPSBsYXN0RGVzY2VuZGFudCB8fCByYW5n
ZS0+c3RhcnRPZmZzZXQoKSAhPSBsYXN0T2Zmc2V0SW5Ob2RlKGxhc3REZXNjZW5kYW50KSkpOwor
fQorCitzdGF0aWMgYm9vbCBpc1RleHRXaXRoQ2FyZXQoQWNjZXNzaWJpbGl0eU9iamVjdCogY29y
ZU9iamVjdCkKK3sKKyAgICBpZiAoIWNvcmVPYmplY3QgfHwgIWNvcmVPYmplY3QtPmlzQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTZXR0
aW5ncyogc2V0dGluZ3MgPSBjb3JlT2JqZWN0LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZXR0aW5n
cygpOworICAgIGlmICghc2V0dGluZ3MgfHwgIXNldHRpbmdzLT5jYXJldEJyb3dzaW5nRW5hYmxl
ZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBDaGVjayB0ZXh0IG9iamVjdHMg
YW5kIHBhcmFncmFwaHMgb25seS4KKyAgICBBdGtPYmplY3QqIGF4T2JqZWN0ID0gY29yZU9iamVj
dC0+d3JhcHBlcigpOworICAgIEF0a1JvbGUgcm9sZSA9IGF4T2JqZWN0ID8gYXRrX29iamVjdF9n
ZXRfcm9sZShheE9iamVjdCkgOiBBVEtfUk9MRV9JTlZBTElEOworICAgIGlmIChyb2xlICE9IEFU
S19ST0xFX1RFWFQgJiYgcm9sZSAhPSBBVEtfUk9MRV9QQVJBR1JBUEgpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIEZpbmFsbHksIGNoZWNrIHdoZXRoZXIgdGhlIGNhcmV0IGlzIHNl
dCBpbiB0aGUgY3VycmVudCBvYmplY3QuCisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24g
PSBjb3JlT2JqZWN0LT5zZWxlY3Rpb24oKTsKKyAgICBpZiAoIXNlbGVjdGlvbi5pc0NhcmV0KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiAhc2VsZWN0aW9uQmVsb25nc1Rv
T2JqZWN0KGNvcmVPYmplY3QsIHNlbGVjdGlvbikgfHwgc2VsZWN0aW9uLmlzTm9uZSgpID8gMCA6
IDE7Cit9CisKIHN0YXRpYyB2b2lkIHNldEF0a1N0YXRlU2V0RnJvbUNvcmVPYmplY3QoQWNjZXNz
aWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQXRrU3RhdGVTZXQqIHN0YXRlU2V0KQogewogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IGNvcmVPYmplY3QtPnBhcmVudE9iamVjdCgp
OwpAQCAtNTAzLDcgKzU0OCw3IEBAIHN0YXRpYyB2b2lkIHNldEF0a1N0YXRlU2V0RnJvbUNvcmVP
YmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQXRrU3RhCiAgICAgaWYgKGNv
cmVPYmplY3QtPmNhblNldEZvY3VzQXR0cmlidXRlKCkpCiAgICAgICAgIGF0a19zdGF0ZV9zZXRf
YWRkX3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfRk9DVVNBQkxFKTsKIAotICAgIGlmIChjb3Jl
T2JqZWN0LT5pc0ZvY3VzZWQoKSkKKyAgICBpZiAoY29yZU9iamVjdC0+aXNGb2N1c2VkKCkgfHwg
aXNUZXh0V2l0aENhcmV0KGNvcmVPYmplY3QpKQogICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9z
dGF0ZShzdGF0ZVNldCwgQVRLX1NUQVRFX0ZPQ1VTRUQpOwogCiAgICAgLy8gVE9ETzogQVRLX1NU
QVRFX0hPUklaT05UQUwKQEAgLTU3Miw4ICs2MTcsMTIgQEAgc3RhdGljIEF0a1N0YXRlU2V0KiB3
ZWJraXRfYWNjZXNzaWJsZV9yZWZfc3RhdGVfc2V0KEF0a09iamVjdCogb2JqZWN0KQogICAgICAg
ICByZXR1cm4gc3RhdGVTZXQ7CiAgICAgfQogCi0gICAgc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9i
amVjdChjb3JlT2JqZWN0LCBzdGF0ZVNldCk7CisgICAgLy8gVGV4dCBvYmplY3RzIG11c3QgYmUg
Zm9jdXNhYmxlLgorICAgIEF0a1JvbGUgcm9sZSA9IGF0a19vYmplY3RfZ2V0X3JvbGUob2JqZWN0
KTsKKyAgICBpZiAocm9sZSA9PSBBVEtfUk9MRV9URVhUIHx8IHJvbGUgPT0gQVRLX1JPTEVfUEFS
QUdSQVBIKQorICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShzdGF0ZVNldCwgQVRLX1NU
QVRFX0ZPQ1VTQUJMRSk7CiAKKyAgICBzZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0KGNvcmVP
YmplY3QsIHN0YXRlU2V0KTsKICAgICByZXR1cm4gc3RhdGVTZXQ7CiB9CiAKQEAgLTE0MDcsMjcg
KzE0NTYsNiBAQCBzdGF0aWMgZ2ludCB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9vZmZzZXRf
YXRfcG9pbnQoQXRrVGV4dCogdGV4dCwgZ2ludCB4LCBnaQogICAgIHJldHVybiByYW5nZS5zdGFy
dDsKIH0KIAotc3RhdGljIGJvb2wgc2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0KEFjY2Vzc2liaWxp
dHlPYmplY3QqIGNvcmVPYmplY3QsIFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKLXsKLSAg
ICBpZiAoIWNvcmVPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gc2VsZWN0aW9uLnRv
Tm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgLy8gV2Ugd2FudCB0byBjaGVjayB0aGF0IGJvdGggdGhlIHNlbGVjdGlvbiBpbnRl
cnNlY3RzIHRoZSBub2RlCi0gICAgLy8gQU5EIHRoYXQgdGhlIHNlbGVjdGlvbiBpcyBub3QganVz
dCAidG91Y2hpbmciIG9uZSBvZiB0aGUKLSAgICAvLyBib3VuZGFyaWVzIGZvciB0aGUgc2VsZWN0
ZWQgbm9kZS4gV2Ugd2FudCB0byBjaGVjayB3aGV0aGVyIHRoZQotICAgIC8vIG5vZGUgaXMgYWN0
dWFsbHkgaW5zaWRlIHRoZSByZWdpb24sIGF0IGxlYXN0IHBhcnRpYWxseQotICAgIE5vZGUqIG5v
ZGUgPSBjb3JlT2JqZWN0LT5ub2RlKCk7Ci0gICAgTm9kZSogbGFzdERlc2NlbmRhbnQgPSBub2Rl
LT5sYXN0RGVzY2VuZGFudCgpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHJldHVy
biAocmFuZ2UtPmludGVyc2VjdHNOb2RlKG5vZGUsIGVjKQotICAgICAgICAgICAgJiYgKHJhbmdl
LT5lbmRDb250YWluZXIoKSAhPSBub2RlIHx8IHJhbmdlLT5lbmRPZmZzZXQoKSkKLSAgICAgICAg
ICAgICYmIChyYW5nZS0+c3RhcnRDb250YWluZXIoKSAhPSBsYXN0RGVzY2VuZGFudCB8fCByYW5n
ZS0+c3RhcnRPZmZzZXQoKSAhPSBsYXN0T2Zmc2V0SW5Ob2RlKGxhc3REZXNjZW5kYW50KSkpOwot
fQotCiBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KEFjY2Vzc2liaWxp
dHlPYmplY3QqIGNvcmVPYmplY3QsIFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgZ2ludCYg
c3RhcnRPZmZzZXQsIGdpbnQmIGVuZE9mZnNldCkKIHsKICAgICBpZiAoIWNvcmVPYmplY3QtPmlz
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5n
L2d0ay9TZWxlY3Rpb25Db250cm9sbGVyR3RrLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9ndGsvU2Vs
ZWN0aW9uQ29udHJvbGxlckd0ay5jcHAKaW5kZXggNTYyNjExMC4uMjA4NTM4MiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9lZGl0aW5nL2d0ay9TZWxlY3Rpb25Db250cm9sbGVyR3RrLmNwcAorKysgYi9X
ZWJDb3JlL2VkaXRpbmcvZ3RrL1NlbGVjdGlvbkNvbnRyb2xsZXJHdGsuY3BwCkBAIC0yMywzNCAr
MjMsODIgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5oIgogI2lu
Y2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlJl
ZlB0ci5oIgogCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6bm90aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlv
bkNoYW5nZSgpCitzdGF0aWMgdm9pZCBlbWl0VGV4dFNlbGVjdGlvbkNoYW5nZShBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmplY3QsIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uLCBpbnQgb2Zmc2V0
KQoreworICAgIEF0a09iamVjdCogYXhPYmplY3QgPSBvYmplY3QtPndyYXBwZXIoKTsKKyAgICBp
ZiAoIWF4T2JqZWN0IHx8ICFBVEtfSVNfVEVYVChheE9iamVjdCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShheE9iamVjdCwgInRleHQtY2FyZXQtbW92ZWQi
LCBvZmZzZXQpOworICAgIGlmIChzZWxlY3Rpb24uaXNSYW5nZSgpKQorICAgICAgICBnX3NpZ25h
bF9lbWl0X2J5X25hbWUoYXhPYmplY3QsICJ0ZXh0LXNlbGVjdGlvbi1jaGFuZ2VkIik7Cit9CisK
K3N0YXRpYyB2b2lkIG1heWJlRW1pdFRleHRGb2N1c0NoYW5nZShQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlPYmplY3Q+IHBycE9iamVjdCkKIHsKLSAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNz
aWJpbGl0eUVuYWJsZWQoKSAmJiBtX3NlbGVjdGlvbi5zdGFydCgpLmlzTm90TnVsbCgpICYmIG1f
c2VsZWN0aW9uLmVuZCgpLmlzTm90TnVsbCgpKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogZm9j
dXNlZE5vZGUgPSBtX3NlbGVjdGlvbi5lbmQoKS5ub2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3QgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGZvY3VzZWROb2RlKTsKLQotICAg
ICAgICAvLyBuZWVkIHRvIGNoZWNrIHRoaXMgYXMgZ2V0T3JDcmVhdGUgY291bGQgcmV0dXJuIDAK
LSAgICAgICAgaWYgKCFhY2Nlc3NpYmlsaXR5T2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIGludCBvZmZzZXQ7Ci0gICAgICAgIC8vIEFsd2F5cyByZXBvcnQgdGhlIGV2ZW50
cyB3LnIudC4gdGhlIG5vbi1saW5rZWQgdW5pZ25vcmVkIHBhcmVudC4gKGkuZS4gaWdub3JlTGlu
a3MgPT0gdHJ1ZSkKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0ID0gb2JqZWN0
QW5kT2Zmc2V0VW5pZ25vcmVkKGFjY2Vzc2liaWxpdHlPYmplY3QsIG9mZnNldCwgdHJ1ZSk7Ci0g
ICAgICAgIGlmICghb2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEF0a09i
amVjdCogd3JhcHBlciA9IG9iamVjdC0+d3JhcHBlcigpOwotICAgICAgICBpZiAoQVRLX0lTX1RF
WFQod3JhcHBlcikpIHsKLSAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3cmFwcGVy
LCAidGV4dC1jYXJldC1tb3ZlZCIsIG9mZnNldCk7Ci0gICAgICAgICAgICBpZiAobV9zZWxlY3Rp
b24uaXNSYW5nZSgpKQotICAgICAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3cmFw
cGVyLCAidGV4dC1zZWxlY3Rpb24tY2hhbmdlZCIpOworICAgIC8vIFRoaXMgc3RhdGljIHZhcmlh
YmxlIGlzIG5lZWRlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBvbGQgb2JqZWN0CisgICAgLy8gYXMg
cGVyIHByZXZpb3VzIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24sIGluIG9yZGVyIHRvIHByb3Blcmx5
CisgICAgLy8gZGVjaWRlIHdoZXRoZXIgdG8gZW1pdCBzb21lIHNpZ25hbHMgb3Igbm90LgorICAg
IHN0YXRpYyBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2xkT2JqZWN0ID0gMDsKKworICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmplY3QgPSBwcnBPYmplY3Q7CisKKyAgICAv
LyBFbnN1cmUgdGhlIG9sZE9iamVjdCBiZWxvbmdzIHRvIHRoZSBzYW1lIGRvY3VtZW50IHRoYXQg
dGhlCisgICAgLy8gY3VycmVudCBvYmplY3Qgc28gZnVydGhlciBjb21wYXJpc29ucyBtYWtlIHNl
bnNlLiBPdGhlcndpc2UsCisgICAgLy8ganVzdCByZXNldCBvbGRPYmplY3Qgc28gaXQgd29uJ3Qg
YmUgdGFrZW4gaW50byBhY2NvdW50LgorICAgIGlmIChvYmplY3QgJiYgb2xkT2JqZWN0ICYmIG9s
ZE9iamVjdC0+ZG9jdW1lbnQoKSAhPSBvYmplY3QtPmRvY3VtZW50KCkpCisgICAgICAgIG9sZE9i
amVjdCA9IDA7CisKKyAgICBBdGtPYmplY3QqIGF4T2JqZWN0ID0gb2JqZWN0ID8gb2JqZWN0LT53
cmFwcGVyKCkgOiAwOworICAgIEF0a09iamVjdCogb2xkQXhPYmplY3QgPSBvbGRPYmplY3QgPyBv
bGRPYmplY3QtPndyYXBwZXIoKSA6IDA7CisKKyAgICBpZiAoYXhPYmplY3QgIT0gb2xkQXhPYmpl
Y3QpIHsKKyAgICAgICAgaWYgKG9sZEF4T2JqZWN0ICYmIEFUS19JU19URVhUKG9sZEF4T2JqZWN0
KSkgeworICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG9sZEF4T2JqZWN0LCAiZm9j
dXMtZXZlbnQiLCBmYWxzZSk7CisgICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUob2xk
QXhPYmplY3QsICJzdGF0ZS1jaGFuZ2UiLCAiZm9jdXNlZCIsIGZhbHNlKTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoYXhPYmplY3QgJiYgQVRLX0lTX1RFWFQoYXhPYmplY3QpKSB7CisgICAgICAg
ICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYXhPYmplY3QsICJmb2N1cy1ldmVudCIsIHRydWUp
OworICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGF4T2JqZWN0LCAic3RhdGUtY2hh
bmdlIiwgImZvY3VzZWQiLCB0cnVlKTsKICAgICAgICAgfQogICAgIH0KKworICAgIC8vIFVwZGF0
ZSBwb2ludGVyIHRvIGxhc3QgZm9jdXNlZCBvYmplY3QuCisgICAgb2xkT2JqZWN0ID0gb2JqZWN0
OworfQorCisKK3ZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6bm90aWZ5QWNjZXNzaWJpbGl0eUZv
clNlbGVjdGlvbkNoYW5nZSgpCit7CisgICAgaWYgKCFBWE9iamVjdENhY2hlOjphY2Nlc3NpYmls
aXR5RW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBSZXNldCBsYXN0Rm9jdXNl
Tm9kZSBhbmQgcmV0dXJuIGZvciBubyB2YWxpZCBzZWxlY3Rpb25zLgorICAgIGlmICghbV9zZWxl
Y3Rpb24uc3RhcnQoKS5pc05vdE51bGwoKSB8fCAhbV9zZWxlY3Rpb24uZW5kKCkuaXNOb3ROdWxs
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlbmRlck9iamVjdCogZm9jdXNlZE5vZGUgPSBt
X3NlbGVjdGlvbi5lbmQoKS5ub2RlKCktPnJlbmRlcmVyKCk7CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogYWNjZXNzaWJpbGl0eU9iamVjdCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0
Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZm9jdXNlZE5vZGUpOworCisgICAgLy8gTmVlZCB0byBjaGVj
ayB0aGlzIGFzIGdldE9yQ3JlYXRlIGNvdWxkIHJldHVybiAwLAorICAgIGlmICghYWNjZXNzaWJp
bGl0eU9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IG9mZnNldDsKKyAgICAvLyBB
bHdheXMgcmVwb3J0IHRoZSBldmVudHMgdy5yLnQuIHRoZSBub24tbGlua2VkIHVuaWdub3JlZCBw
YXJlbnQuIChpLmUuIGlnbm9yZUxpbmtzID09IHRydWUpLgorICAgIFJlZlB0cjxBY2Nlc3NpYmls
aXR5T2JqZWN0PiBvYmplY3QgPSBvYmplY3RBbmRPZmZzZXRVbmlnbm9yZWQoYWNjZXNzaWJpbGl0
eU9iamVjdCwgb2Zmc2V0LCB0cnVlKTsKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gRW1pdCByZWxhdGVkc2lnbmFscy4KKyAgICBlbWl0VGV4dFNlbGVjdGlvbkNo
YW5nZShvYmplY3QuZ2V0KCksIG1fc2VsZWN0aW9uLCBvZmZzZXQpOworICAgIG1heWJlRW1pdFRl
eHRGb2N1c0NoYW5nZShvYmplY3QucmVsZWFzZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGIwNDdkYTguLmE2MjRhODkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0No
YW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAx
MC0xMS0xOCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0d0a10gSW1wbGVt
ZW50IFNUQVRFX0ZPQ1VTRUQsIFNUQVRFX0ZPQ1VTQUJMRSwgYW5kIGNvcnJlc3BvbmRpbmcgZXZl
bnRzIGZvciB0ZXh0IG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3MDQ4CisKKyAgICAgICAgQWRkIHN1cHBvcnQgaW4gRFJUIGZvciBjaGVj
a2luZyB3aGV0aGVyIGFuIGFjY2Vzc2liaWxpdHkgVUkKKyAgICAgICAgZWxlbWVudCBpcyBmb2N1
c2FibGUgYW5kL29yIGZvY3VzZWQuIEltcGxlbWVudGVkIGZvciBHVEsuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAgKGdldElz
Rm9jdXNlZENhbGxiYWNrKTogTmV3LgorICAgICAgICAoZ2V0SXNGb2N1c2FibGVDYWxsYmFjayk6
IE5ldy4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTQ2xhc3MpOiBBZGQg
dGhlIG5ldyBhdmFpbGFibGUKKyAgICAgICAgY2FsbGJhY2tzIGZvciBpc0ZvY3VzZWQgYW5kIGlz
Rm9jdXNhYmxlLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEd0ay5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQpOiBO
ZXcsIGltcGxlbWVudGVkIGJ5IGNoZWNraW5nCisgICAgICAgIHdoZXRoZXIgdGhlIHJlbGF0ZWQg
QXRrU3RhdGUgdmFsdWUgaXMgaW4gdGhlIG9iamVjdCdzIHN0YXRlIHNldC4KKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNhYmxlKTogRGl0dG8uCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQpOiBOZXcsIGR1bW15IGltcGxlbWVudGF0
aW9uLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2FibGUpOiBEaXR0
by4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdp
bi5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQpOiBEaXR0
by4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNhYmxlKTogRGl0dG8u
CisKIDIwMTAtMTEtMDEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAppbmRleCA4N2JlMzM1
Li4yM2ZjNDY0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAtNjY0LDYgKzY2NCwxNiBAQCBzdGF0aWMgSlNWYWx1
ZVJlZiBnZXRJc1JlcXVpcmVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIHRoaXNPYgogICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdG9BWEVs
ZW1lbnQodGhpc09iamVjdCktPmlzUmVxdWlyZWQoKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVm
IGdldElzRm9jdXNlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCit7CisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlQm9vbGVhbihjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+aXNGb2N1c2Vk
KCkpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXRJc0ZvY3VzYWJsZUNhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNW
YWx1ZVJlZiopCit7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0b0FY
RWxlbWVudCh0aGlzT2JqZWN0KS0+aXNGb2N1c2FibGUoKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVl
UmVmIGdldElzU2VsZWN0ZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQogewogICAgIHJldHVybiBK
U1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmlzU2Vs
ZWN0ZWQoKSk7CkBAIC04NjgsNiArODc4LDggQEAgSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpnZXRKU0NsYXNzKCkKICAgICAgICAgeyAic2VsZWN0ZWRUZXh0UmFuZ2UiLCBnZXRT
ZWxlY3RlZFRleHRSYW5nZUNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImlzRW5hYmxl
ZCIsIGdldElzRW5hYmxlZENhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImlzUmVxdWly
ZWQiLCBnZXRJc1JlcXVpcmVkQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiaXNGb2N1
c2VkIiwgZ2V0SXNGb2N1c2VkQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiaXNGb2N1
c2FibGUiLCBnZXRJc0ZvY3VzYWJsZUNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImlz
U2VsZWN0ZWQiLCBnZXRJc1NlbGVjdGVkQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
aXNTZWxlY3RhYmxlIiwgZ2V0SXNTZWxlY3RhYmxlQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAiaXNNdWx0aVNlbGVjdGFibGUiLCBnZXRJc011bHRpU2VsZWN0YWJsZUNhbGxiYWNrLCAw
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmgKaW5kZXggMzEyMGU2NS4uM2Q1NDAwZCAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaApAQCAtMTMxLDYg
KzEzMSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW5hYmxlZCgpOwogICAgIGJvb2wgaXNSZXF1
aXJlZCgpIGNvbnN0OwogICAgIAorICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Q7CisgICAgYm9v
bCBpc0ZvY3VzYWJsZSgpIGNvbnN0OwogICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0OwogICAg
IGJvb2wgaXNTZWxlY3RhYmxlKCkgY29uc3Q7CiAgICAgYm9vbCBpc011bHRpU2VsZWN0YWJsZSgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwCmluZGV4IDg0OTNmMWEuLmVjZjVmMzcgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50R3RrLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudEd0ay5jcHAKQEAgLTM5Miw2ICszOTIsMTcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc1JlcXVpcmVkKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2VkKCkgY29uc3QKK3sKKyAg
ICBpZiAoIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgUGxhdGZvcm1SZWZQdHI8QXRrU3RhdGVTZXQ+IHN0YXRlU2V0ID0gYWRvcHRQbGF0Zm9y
bVJlZihhdGtfb2JqZWN0X3JlZl9zdGF0ZV9zZXQoQVRLX09CSkVDVChtX2VsZW1lbnQpKSk7Cisg
ICAgZ2Jvb2xlYW4gaXNGb2N1c2VkID0gYXRrX3N0YXRlX3NldF9jb250YWluc19zdGF0ZShzdGF0
ZVNldC5nZXQoKSwgQVRLX1NUQVRFX0ZPQ1VTRUQpOworCisgICAgcmV0dXJuIGlzRm9jdXNlZDsK
K30KKwogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVkKCkgY29uc3QKIHsK
ICAgICBpZiAoIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKQEAgLTY0MCw2ICs2NTEsMTcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigp
CiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogfQogCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzRm9jdXNhYmxlKCkgY29uc3QKK3sKKyAgICBpZiAoIUFUS19JU19PQkpFQ1QobV9lbGVt
ZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUGxhdGZvcm1SZWZQdHI8QXRrU3Rh
dGVTZXQ+IHN0YXRlU2V0ID0gYWRvcHRQbGF0Zm9ybVJlZihhdGtfb2JqZWN0X3JlZl9zdGF0ZV9z
ZXQoQVRLX09CSkVDVChtX2VsZW1lbnQpKSk7CisgICAgZ2Jvb2xlYW4gaXNGb2N1c2FibGUgPSBh
dGtfc3RhdGVfc2V0X2NvbnRhaW5zX3N0YXRlKHN0YXRlU2V0LmdldCgpLCBBVEtfU1RBVEVfRk9D
VVNBQkxFKTsKKworICAgIHJldHVybiBpc0ZvY3VzYWJsZTsKK30KKwogYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGUoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggZTI3ZWUwZS4uZTJmMDU5NyAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0KQEAgLTc2MSw2ICs3NjEsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc1JlcXVpcmVkKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2VkKCkgY29uc3QKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQoKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUwpAQCAtMTE4MSw2ICsxMTg3LDEyIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKQogICAgIG1fbm90aWZpY2F0aW9uSGFuZGxl
ciA9IG5pbDsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSgp
IGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30K
KwogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGUoKSBjb25zdAogewog
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcCBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAppbmRleCA5Njkz
N2ZkLi5kYmUyYjYzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
QWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCkBAIC0zMDcsNiArMzA3LDEy
IEBAIHN0YXRpYyBEV09SRCBhY2Nlc3NpYmlsaXR5U3RhdGUoQ09NUHRyPElBY2Nlc3NpYmxlPiBl
bGVtZW50KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNGb2N1c2VkKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0
ZWQoKSBjb25zdAogewogICAgIERXT1JEIHN0YXRlID0gYWNjZXNzaWJpbGl0eVN0YXRlKG1fZWxl
bWVudCk7CkBAIC01ODMsNiArNTg5LDEyIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKQogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKIH0K
IAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0Cit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGUoKSBjb25zdAogewogICAgIERXT1JEIHN0
YXRlID0gYWNjZXNzaWJpbGl0eVN0YXRlKG1fZWxlbWVudCk7Ci0tIAoxLjcuMy4yCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74224</attachid>
            <date>2010-11-18 03:24:48 -0800</date>
            <delta_ts>2010-12-13 11:13:50 -0800</delta_ts>
            <desc>Patch proposal + Layout Test</desc>
            <filename>0001-2010-11-18-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>29116</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBlMTJhMTZhMDRhMjA2NThhNWZiNWQzZjI1MmQ5NjdmYzYwNWNlM2JlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBXZWQsIDMgTm92IDIwMTAgMDA6MjQ6MjQgKzAxMDAKU3ViamVjdDogW1BBVENI
XSAyMDEwLTExLTE4ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
CiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFtHdGtdIEltcGxl
bWVudCBTVEFURV9GT0NVU0VELCBTVEFURV9GT0NVU0FCTEUsIGFuZCBjb3JyZXNwb25kaW5nIGV2
ZW50cyBmb3IgdGV4dCBvYmplY3RzCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3MDQ4CgogICAgICAgIEhhbmRsZSBmb2N1cyBjaGFuZ2UgZm9yIHRleHQg
b2JqZWN0cyBiYXNlZCBpbiBjYXJldCBjaGFuZ2VzLgoKICAgICAgICBBcyB0ZXh0IG9iamVjdHMg
KHN1Y2ggYXMgcGFyYWdyYXBocykgc2VlbSBub3QgdG8gYWNjZXB0IGZvY3VzIGluCiAgICAgICAg
V2ViQ29yZSBpbiB0aGUgc2FtZSB3YXkgb3RoZXIgb2JqZWN0cyAodGV4dCBjb250cm9scykgZG8s
IGEKICAgICAgICBHdGstc3BlY2lmaWMgd29ya2Fyb3VuZCBpcyBuZWVkZWQgdG8gZXhwb3NlIHRo
aXMgc3RhdGVzIGFuZCB0aGUKICAgICAgICByZWxhdGVkIGV2ZW50cyB0byBBVEstYmFzZWQgYXNz
aXN0aXZlIHRlY2hub2xvZ2llcy4KCiAgICAgICAgRW5zdXJlIHRoYXQgdGV4dCBvYmplY3RzIGFy
ZSBleHBvc2VkIHdpdGggdGhlIEFUS19TVEFURV9GT0NVU0FCTEUKICAgICAgICBzdGF0ZSwgYW5k
IHRoYXQgdGhlIEFUS19TVEFURV9GT0NVU0VEIHN0YXRlIGlzIGFkZGVkIHRvIHRob3NlCiAgICAg
ICAgdGV4dCBvYmplY3RzIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnRseSBhY3RpdmUgY2FyZXQgc2Vs
ZWN0aW9uLgoKICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQXRrLmNwcDoKICAgICAgICAoc2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0KTogTW92ZWQg
dXB3YXJkcyB0byB1c2UgaXQgZnJvbQogICAgICAgIHRoZSBuZXcgaXNUZXh0V2l0aENhcmV0KCkg
ZnVuY3Rpb24uCiAgICAgICAgKGlzVGV4dFdpdGhDYXJldCk6IE5ldywgY2hlY2tzIHdoZXRoZXIg
YW4gYWNjZXNzaWJpbGl0eSBvYmplY3QKICAgICAgICByZXByZXNlbnRzIGEgdGV4dCBvYmplY3Qg
d2l0aCB0aGUgY3VycmVudCBjYXJldCBzZWxlY3Rpb24gb24gaXQuCiAgICAgICAgKHNldEF0a1N0
YXRlU2V0RnJvbUNvcmVPYmplY3QpOiBBZGQgdGhlIEFUS19TVEFURV9GT0NVU0VEIHN0YXRlCiAg
ICAgICAgd2hlbiBhbHNvIHdoZW4gaXNUZXh0V2l0aENhcmV0KGNvcmVPYmplY3QpIHJldHVybnMg
dHJ1ZS4KICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfcmVmX3N0YXRlX3NldCk6IEFkZCB0aGUg
QVRLX1NUQVRFX0ZPQ1VTQUJMRQogICAgICAgIHN0YXRlIHRvIHRleHQgb2JqZWN0cyBhbmQgdGhv
c2Ugd2l0aCB0aGUgQVRLX1JPTEVfUEFSQUdSQVBIIHJvbGUuCgogICAgICAgIE1ha2Ugc3VyZSB0
aGUgcHJvcGVyIGV2ZW50cyBhc3NvY2lhdGVkIHRvIGEgY2hhbmdlIG9mIGZvY3VzIGFyZQogICAg
ICAgIGVtaXR0ZWQsIGJhc2VkIG9uIGNhcmV0IGNoYW5nZXMgYWNyb3NzIGRpZmZlcmVudCBhY2Nl
c3NpYmlsaXR5CiAgICAgICAgb2JqZWN0cy4gQWxzbywgcmVmYWN0b3JlZCB0aGUgY29kZSBpbiBt
b3JlIG1hbmFnZWFibGUgYW5kCiAgICAgICAgdW5kZXJzdGFuZGFibGUgaGVscGVyIGZ1bmN0aW9u
cy4KCiAgICAgICAgKiBlZGl0aW5nL2d0ay9TZWxlY3Rpb25Db250cm9sbGVyR3RrLmNwcDoKICAg
ICAgICAoV2ViQ29yZTo6ZW1pdFRleHRTZWxlY3Rpb25DaGFuZ2UpOiBOZXcsIGluY2x1ZGVzIHRo
ZSBzcGVjaWZpYwogICAgICAgIGNvZGUgZm9ybWVybHkgcGxhY2VkIGluIG5vdGlmeUFjY2Vzc2li
aWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UoKSB0bwogICAgICAgIGVtaXQgdGhlICd0ZXh0LWNhcmV0
LW1vdmVkJyBhbmQgJ3RleHQtc2VsZWN0aW9uLWNoYW5nZScgc2lnbmFscy4KICAgICAgICAoV2Vi
Q29yZTo6bWF5YmVFbWl0VGV4dEZvY3VzQ2hhbmdlKTogTmV3LCB0YWtlcyBjYXJlIG9mIGVtaXR0
aW5nCiAgICAgICAgdGhlICdmb2N1cy1ldmVudCcgYW5kICdzdGF0ZS1jaGFuZ2VkOjpmb2N1c2Vk
JyBzaWduYWxzIHdoZW4KICAgICAgICBuZWVkZWQsIHRoYXQgaXMsIHdoZW4gYSBjaGFuZ2UgaW4g
dGhlIHNlbGVjdGlvbiBoYXBwZW5zIGFjcm9zcwogICAgICAgIGRpZmZlcmVudCBhY2Nlc3NpYmxl
IG9iamVjdHMuCiAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFj
Y2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UpOgogICAgICAgIFJlZmFjdG9yZWQgc29tZSBj
b2RlIGhlcmUsIGJ5IHVzaW5nIHRoZSBuZXcgaGVscGVyIGZ1bmN0aW9ucy4KCjIwMTAtMTEtMTgg
IE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0d0a10gSW1wbGVtZW50IFNUQVRFX0ZP
Q1VTRUQsIFNUQVRFX0ZPQ1VTQUJMRSwgYW5kIGNvcnJlc3BvbmRpbmcgZXZlbnRzIGZvciB0ZXh0
IG9iamVjdHMKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjcwNDgKCiAgICAgICAgQWRkIHN1cHBvcnQgaW4gRFJUIGZvciBjaGVja2luZyB3aGV0aGVyIGFu
IGFjY2Vzc2liaWxpdHkgVUkKICAgICAgICBlbGVtZW50IGlzIGZvY3VzYWJsZSBhbmQvb3IgZm9j
dXNlZC4gSW1wbGVtZW50ZWQgZm9yIEdUSy4KCiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKICAgICAgICAoZ2V0SXNGb2N1c2VkQ2FsbGJhY2spOiBO
ZXcuCiAgICAgICAgKGdldElzRm9jdXNhYmxlQ2FsbGJhY2spOiBOZXcuCiAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTQ2xhc3MpOiBBZGQgdGhlIG5ldyBhdmFpbGFibGUKICAg
ICAgICBjYWxsYmFja3MgZm9yIGlzRm9jdXNlZCBhbmQgaXNGb2N1c2FibGUuCiAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CiAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHA6CiAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCk6IE5ldywgaW1wbGVtZW50ZWQgYnkgY2hlY2tp
bmcKICAgICAgICB3aGV0aGVyIHRoZSByZWxhdGVkIEF0a1N0YXRlIHZhbHVlIGlzIGluIHRoZSBv
YmplY3QncyBzdGF0ZSBzZXQuCiAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9j
dXNhYmxlKTogRGl0dG8uCiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbToKICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1
c2VkKTogTmV3LCBkdW1teSBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNGb2N1c2FibGUpOiBEaXR0by4KICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dp
bi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcDoKICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNGb2N1c2VkKTogRGl0dG8uCiAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzRm9jdXNhYmxlKTogRGl0dG8uCgoyMDEwLTExLTE4ICBNYXJpbyBTYW5jaGV6IFByYWRh
ICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCgogICAgICAgIFtHdGtdIEltcGxlbWVudCBTVEFURV9GT0NVU0VELCBTVEFURV9GT0NVU0FC
TEUsIGFuZCBjb3JyZXNwb25kaW5nIGV2ZW50cyBmb3IgdGV4dCBvYmplY3RzCiAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MDQ4CgogICAgICAgIEFkZGVk
IGEgbmV3IEdUSy1zcGVjaWZpYyB0ZXN0IHRvIGNoZWNrIGZvY3Vze2FibGV8ZWR9IHN0YXRlcyBh
cmUKICAgICAgICBwcm9wZXJseSBzZXQgd2hlbiBtb3ZpbmcgdGhlIGNhcmV0IGFjcm9zcyB0ZXh0
IG9iamVjdHMuCgogICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJv
d3NpbmctdGV4dC1mb2N1cy1leHBlY3RlZC50eHQ6IEFkZGVkLgogICAgICAgICogcGxhdGZvcm0v
Z3RrL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3NpbmctdGV4dC1mb2N1cy5odG1sOiBBZGRlZC4K
LS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMTMgKysrCiAuLi4vY2FyZXQtYnJvd3NpbmctdGV4dC1mb2N1cy1leHBlY3RlZC50eHQgICAg
ICAgICB8ICAgMzAgKysrKysrKwogLi4uL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3NpbmctdGV4
dC1mb2N1cy5odG1sICAgfCAgIDY5ICsrKysrKysrKysrKysrKwogV2ViQ29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ2ICsrKysrKysrKysKIC4uLi9n
dGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwICAgICAgICAgIHwgICA3NCArKysr
KysrKysrKy0tLS0tCiBXZWJDb3JlL2VkaXRpbmcvZ3RrL1NlbGVjdGlvbkNvbnRyb2xsZXJHdGsu
Y3BwICAgICB8ICAgODggKysrKysrKysrKysrKysrLS0tLS0KIFdlYktpdFRvb2xzL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArKysrKysKIC4uLi9EdW1wUmVu
ZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCAgICAgIHwgICAxMiArKysKIC4uLi9E
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggICAgICAgIHwgICAgMiArCiAu
Li4vZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwICAgICAgICAgICAgICB8ICAgMjIg
KysrKysKIC4uLi9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAgICAgICAgICAgICAg
IHwgICAxMiArKysKIC4uLi93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAgICAgICAg
ICAgICAgIHwgICAxMiArKysKIDEyIGZpbGVzIGNoYW5nZWQsIDM2NCBpbnNlcnRpb25zKCspLCA0
MyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvYWNjZXNzaWJpbGl0eS9jYXJldC1icm93c2luZy10ZXh0LWZvY3VzLWV4cGVjdGVkLnR4dAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5
L2NhcmV0LWJyb3dzaW5nLXRleHQtZm9jdXMuaHRtbAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NWNiODg0Li40MGJlNWYx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMTEtMTggIE1hcmlvIFNhbmNoZXogUHJhZGEg
IDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtHdGtdIEltcGxlbWVudCBTVEFURV9GT0NVU0VELCBTVEFURV9GT0NV
U0FCTEUsIGFuZCBjb3JyZXNwb25kaW5nIGV2ZW50cyBmb3IgdGV4dCBvYmplY3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzA0OAorCisgICAgICAg
IEFkZGVkIGEgbmV3IEdUSy1zcGVjaWZpYyB0ZXN0IHRvIGNoZWNrIGZvY3Vze2FibGV8ZWR9IHN0
YXRlcyBhcmUKKyAgICAgICAgcHJvcGVybHkgc2V0IHdoZW4gbW92aW5nIHRoZSBjYXJldCBhY3Jv
c3MgdGV4dCBvYmplY3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkv
Y2FyZXQtYnJvd3NpbmctdGV4dC1mb2N1cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLXRleHQtZm9jdXMuaHRt
bDogQWRkZWQuCisKIDIwMTAtMTEtMDEgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbnJldmlld2VkLCB1cGRhdGUgdGVzdCBleHBlY3Rh
dGlvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0
eS9jYXJldC1icm93c2luZy10ZXh0LWZvY3VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLXRleHQtZm9jdXMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxYzlmMzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9jYXJl
dC1icm93c2luZy10ZXh0LWZvY3VzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACitBIHBh
cmFncmFwaCB3aXRoIGEKK2xpbmUgYnJlYWsgaW4gdGhlIG1pZGRsZQorCitBIHBhcmFncmFwaCB3
aXRoIGEgc2luZ2xlIGxpbmUKKworVGhpcyB0ZXN0cyB0aGUgRk9DVVNBQkxFIGFuZCBGT0NVU0VE
IHN0YXRlcyBmb3IgdGV4dCBvYmplY3RzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBheFBhcjEucm9sZSBpcyAnQVhSb2xlOiBwYXJhZ3JhcGgnCitQQVNTIGF4UGFyMi5y
b2xlIGlzICdBWFJvbGU6IHBhcmFncmFwaCcKK1BBU1MgYXhQYXIxLmlzRm9jdXNhYmxlIGlzIHRy
dWUKK1BBU1MgYXhQYXIyLmlzRm9jdXNhYmxlIGlzIHRydWUKK1BBU1MgYXhQYXIxLmlzRm9jdXNl
ZCBpcyBmYWxzZQorUEFTUyBheFBhcjIuaXNGb2N1c2VkIGlzIGZhbHNlCitQQVNTIGF4UGFyMS5p
c0ZvY3VzZWQgaXMgdHJ1ZQorUEFTUyBheFBhcjIuaXNGb2N1c2VkIGlzIGZhbHNlCitQQVNTIGF4
UGFyMS5pc0ZvY3VzZWQgaXMgdHJ1ZQorUEFTUyBheFBhcjIuaXNGb2N1c2VkIGlzIGZhbHNlCitQ
QVNTIGF4UGFyMS5pc0ZvY3VzZWQgaXMgZmFsc2UKK1BBU1MgYXhQYXIyLmlzRm9jdXNlZCBpcyB0
cnVlCitQQVNTIGF4UGFyMS5pc0ZvY3VzZWQgaXMgdHJ1ZQorUEFTUyBheFBhcjIuaXNGb2N1c2Vk
IGlzIGZhbHNlCitQQVNTIGF4UGFyMS5pc0ZvY3VzZWQgaXMgZmFsc2UKK1BBU1MgYXhQYXIyLmlz
Rm9jdXNlZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2li
aWxpdHkvY2FyZXQtYnJvd3NpbmctdGV4dC1mb2N1cy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3NpbmctdGV4dC1mb2N1cy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NTYyMGYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9jYXJldC1icm93c2luZy10
ZXh0LWZvY3VzLmh0bWwKQEAgLTAsMCArMSw2OSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdD4KK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKzxwIGlkPSJwYXIxIj5BIHBhcmFncmFwaCB3
aXRoIGE8YnIgLz5saW5lIGJyZWFrIGluIHRoZSBtaWRkbGU8L3A+Cis8cCBpZD0icGFyMiI+QSBw
YXJhZ3JhcGggd2l0aCBhIHNpbmdsZSBsaW5lPC9wPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyB0aGUgRk9DVVNBQkxFIGFuZCBGT0NVU0VEIHN0YXRlcyBmb3IgdGV4dCBvYmplY3RzLiIp
OworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgIGxheW91dFRlc3RDb250
cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0RW5hYmxlQ2FyZXRCcm93c2luZyIsIHRy
dWUpOworICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgaWYgKHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImJvZHkiKS5mb2N1cygpOworICAgIHZhciB3ZWJBcmVhID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisKKyAgICB2YXIgYXhQYXIxID0gd2ViQXJlYS5jaGlsZEF0
SW5kZXgoMCk7CisgICAgdmFyIGF4UGFyMiA9IHdlYkFyZWEuY2hpbGRBdEluZGV4KDEpOworCisg
ICAgLy8gQ2hlY2sgcm9sZXMgYW5kIGluaXRpYWwgc3RhdGVzCisgICAgc2hvdWxkQmUoImF4UGFy
MS5yb2xlIiwgIidBWFJvbGU6IHBhcmFncmFwaCciKTsKKyAgICBzaG91bGRCZSgiYXhQYXIyLnJv
bGUiLCAiJ0FYUm9sZTogcGFyYWdyYXBoJyIpOworICAgIHNob3VsZEJlKCJheFBhcjEuaXNGb2N1
c2FibGUiLCAidHJ1ZSIpOworICAgIHNob3VsZEJlKCJheFBhcjIuaXNGb2N1c2FibGUiLCAidHJ1
ZSIpOworICAgIHNob3VsZEJlKCJheFBhcjEuaXNGb2N1c2VkIiwgImZhbHNlIik7CisgICAgc2hv
dWxkQmUoImF4UGFyMi5pc0ZvY3VzZWQiLCAiZmFsc2UiKTsKKworICAgIC8vIFNldCBjYXJldCBp
biB0aGUgZmlyc3QgbGluZSBvZiB0aGUgZmlyc3QgcGFyYWdyYXBoCisgICAgdmFyIHBhcjEgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFyMSIpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5zZXRQb3NpdGlvbihwYXIxLmNoaWxkTm9kZXMuaXRlbSgwKSwgMTApOworICAgIHNob3VsZEJl
KCJheFBhcjEuaXNGb2N1c2VkIiwgInRydWUiKTsKKyAgICBzaG91bGRCZSgiYXhQYXIyLmlzRm9j
dXNlZCIsICJmYWxzZSIpOworCisgICAgLy8gTW92ZSB0aGUgY2FyZXQgZG93biB0byB0aGUgc2Vj
b25kIGxpbmUgKHNhbWUgcGFyYWdyYXBoKQorICAgIGV2ZW50U2VuZGVyLmtleURvd24oImRvd25B
cnJvdyIpOworICAgIHNob3VsZEJlKCJheFBhcjEuaXNGb2N1c2VkIiwgInRydWUiKTsKKyAgICBz
aG91bGRCZSgiYXhQYXIyLmlzRm9jdXNlZCIsICJmYWxzZSIpOworCisgICAgLy8gTW92ZSB0aGUg
Y2FyZXQgZG93biBhbmQgdXAgKGFjcm9zcyBkaWZmZXJlbnQgcGFyYWdyYXBocykKKyAgICBldmVu
dFNlbmRlci5rZXlEb3duKCJkb3duQXJyb3ciKTsKKyAgICBzaG91bGRCZSgiYXhQYXIxLmlzRm9j
dXNlZCIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJheFBhcjIuaXNGb2N1c2VkIiwgInRydWUi
KTsKKyAgICBldmVudFNlbmRlci5rZXlEb3duKCJ1cEFycm93Iik7CisgICAgc2hvdWxkQmUoImF4
UGFyMS5pc0ZvY3VzZWQiLCAidHJ1ZSIpOworICAgIHNob3VsZEJlKCJheFBhcjIuaXNGb2N1c2Vk
IiwgImZhbHNlIik7CisKKyAgICAvLyBFeHBsaWNpdGx5IHB1dCB0aGUgY2FyZXQgaW4gdGhlIG1p
ZGRsZSBvZiB0aGUgc2Vjb25kIHBhcmFncmFwaAorICAgIHZhciBwYXIyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInBhcjIiKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRp
b24ocGFyMi5jaGlsZE5vZGVzLml0ZW0oMCksIDEwKTsKKyAgICBzaG91bGRCZSgiYXhQYXIxLmlz
Rm9jdXNlZCIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJheFBhcjIuaXNGb2N1c2VkIiwgInRy
dWUiKTsKKyAgfQorfQorCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzkzZTUyMi4uZDRlOTQwNCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBA
QAorMjAxMC0xMS0xOCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0d0a10g
SW1wbGVtZW50IFNUQVRFX0ZPQ1VTRUQsIFNUQVRFX0ZPQ1VTQUJMRSwgYW5kIGNvcnJlc3BvbmRp
bmcgZXZlbnRzIGZvciB0ZXh0IG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI3MDQ4CisKKyAgICAgICAgSGFuZGxlIGZvY3VzIGNoYW5nZSBm
b3IgdGV4dCBvYmplY3RzIGJhc2VkIGluIGNhcmV0IGNoYW5nZXMuCisKKyAgICAgICAgQXMgdGV4
dCBvYmplY3RzIChzdWNoIGFzIHBhcmFncmFwaHMpIHNlZW0gbm90IHRvIGFjY2VwdCBmb2N1cyBp
bgorICAgICAgICBXZWJDb3JlIGluIHRoZSBzYW1lIHdheSBvdGhlciBvYmplY3RzICh0ZXh0IGNv
bnRyb2xzKSBkbywgYQorICAgICAgICBHdGstc3BlY2lmaWMgd29ya2Fyb3VuZCBpcyBuZWVkZWQg
dG8gZXhwb3NlIHRoaXMgc3RhdGVzIGFuZCB0aGUKKyAgICAgICAgcmVsYXRlZCBldmVudHMgdG8g
QVRLLWJhc2VkIGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMuCisKKyAgICAgICAgVGVzdDogcGxhdGZv
cm0vZ3RrL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3NpbmctdGV4dC1mb2N1cy5odG1sCisKKyAg
ICAgICAgRW5zdXJlIHRoYXQgdGV4dCBvYmplY3RzIGFyZSBleHBvc2VkIHdpdGggdGhlIEFUS19T
VEFURV9GT0NVU0FCTEUKKyAgICAgICAgc3RhdGUsIGFuZCB0aGF0IHRoZSBBVEtfU1RBVEVfRk9D
VVNFRCBzdGF0ZSBpcyBhZGRlZCB0byB0aG9zZQorICAgICAgICB0ZXh0IG9iamVjdHMgY29udGFp
bmluZyB0aGUgY3VycmVudGx5IGFjdGl2ZSBjYXJldCBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CisgICAg
ICAgIChzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QpOiBNb3ZlZCB1cHdhcmRzIHRvIHVzZSBpdCBm
cm9tCisgICAgICAgIHRoZSBuZXcgaXNUZXh0V2l0aENhcmV0KCkgZnVuY3Rpb24uCisgICAgICAg
IChpc1RleHRXaXRoQ2FyZXQpOiBOZXcsIGNoZWNrcyB3aGV0aGVyIGFuIGFjY2Vzc2liaWxpdHkg
b2JqZWN0CisgICAgICAgIHJlcHJlc2VudHMgYSB0ZXh0IG9iamVjdCB3aXRoIHRoZSBjdXJyZW50
IGNhcmV0IHNlbGVjdGlvbiBvbiBpdC4KKyAgICAgICAgKHNldEF0a1N0YXRlU2V0RnJvbUNvcmVP
YmplY3QpOiBBZGQgdGhlIEFUS19TVEFURV9GT0NVU0VEIHN0YXRlCisgICAgICAgIHdoZW4gYWxz
byB3aGVuIGlzVGV4dFdpdGhDYXJldChjb3JlT2JqZWN0KSByZXR1cm5zIHRydWUuCisgICAgICAg
ICh3ZWJraXRfYWNjZXNzaWJsZV9yZWZfc3RhdGVfc2V0KTogQWRkIHRoZSBBVEtfU1RBVEVfRk9D
VVNBQkxFCisgICAgICAgIHN0YXRlIHRvIHRleHQgb2JqZWN0cyBhbmQgdGhvc2Ugd2l0aCB0aGUg
QVRLX1JPTEVfUEFSQUdSQVBIIHJvbGUuCisKKyAgICAgICAgTWFrZSBzdXJlIHRoZSBwcm9wZXIg
ZXZlbnRzIGFzc29jaWF0ZWQgdG8gYSBjaGFuZ2Ugb2YgZm9jdXMgYXJlCisgICAgICAgIGVtaXR0
ZWQsIGJhc2VkIG9uIGNhcmV0IGNoYW5nZXMgYWNyb3NzIGRpZmZlcmVudCBhY2Nlc3NpYmlsaXR5
CisgICAgICAgIG9iamVjdHMuIEFsc28sIHJlZmFjdG9yZWQgdGhlIGNvZGUgaW4gbW9yZSBtYW5h
Z2VhYmxlIGFuZAorICAgICAgICB1bmRlcnN0YW5kYWJsZSBoZWxwZXIgZnVuY3Rpb25zLgorCisg
ICAgICAgICogZWRpdGluZy9ndGsvU2VsZWN0aW9uQ29udHJvbGxlckd0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjplbWl0VGV4dFNlbGVjdGlvbkNoYW5nZSk6IE5ldywgaW5jbHVkZXMgdGhlIHNw
ZWNpZmljCisgICAgICAgIGNvZGUgZm9ybWVybHkgcGxhY2VkIGluIG5vdGlmeUFjY2Vzc2liaWxp
dHlGb3JTZWxlY3Rpb25DaGFuZ2UoKSB0bworICAgICAgICBlbWl0IHRoZSAndGV4dC1jYXJldC1t
b3ZlZCcgYW5kICd0ZXh0LXNlbGVjdGlvbi1jaGFuZ2UnIHNpZ25hbHMuCisgICAgICAgIChXZWJD
b3JlOjptYXliZUVtaXRUZXh0Rm9jdXNDaGFuZ2UpOiBOZXcsIHRha2VzIGNhcmUgb2YgZW1pdHRp
bmcKKyAgICAgICAgdGhlICdmb2N1cy1ldmVudCcgYW5kICdzdGF0ZS1jaGFuZ2VkOjpmb2N1c2Vk
JyBzaWduYWxzIHdoZW4KKyAgICAgICAgbmVlZGVkLCB0aGF0IGlzLCB3aGVuIGEgY2hhbmdlIGlu
IHRoZSBzZWxlY3Rpb24gaGFwcGVucyBhY3Jvc3MKKyAgICAgICAgZGlmZmVyZW50IGFjY2Vzc2li
bGUgb2JqZWN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om5vdGlm
eUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UpOgorICAgICAgICBSZWZhY3RvcmVkIHNv
bWUgY29kZSBoZXJlLCBieSB1c2luZyB0aGUgbmV3IGhlbHBlciBmdW5jdGlvbnMuCisKIDIwMTAt
MTEtMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwIGIvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKaW5kZXggNzI2Y2Ri
MS4uODJlOWM1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0
ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNp
bmNsdWRlICJSZW5kZXJMaXN0SXRlbS5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RNYXJrZXIuaCIK
ICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJX
ZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmgiCkBAIC00NzYsNiArNDc3LDUwIEBAIHN0YXRpYyBB
dGtSb2xlIHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9yb2xlKEF0a09iamVjdCogb2JqZWN0KQogICAg
IHJldHVybiBhdGtSb2xlKGF4T2JqZWN0LT5yb2xlVmFsdWUoKSk7CiB9CiAKK3N0YXRpYyBib29s
IHNlbGVjdGlvbkJlbG9uZ3NUb09iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0
LCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7CisgICAgaWYgKCFjb3JlT2JqZWN0IHx8
ICFjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGlvbi50b05vcm1h
bGl6ZWRSYW5nZSgpOworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIFdlIHdhbnQgdG8gY2hlY2sgdGhhdCBib3RoIHRoZSBzZWxlY3Rpb24gaW50ZXJzZWN0
cyB0aGUgbm9kZQorICAgIC8vIEFORCB0aGF0IHRoZSBzZWxlY3Rpb24gaXMgbm90IGp1c3QgInRv
dWNoaW5nIiBvbmUgb2YgdGhlCisgICAgLy8gYm91bmRhcmllcyBmb3IgdGhlIHNlbGVjdGVkIG5v
ZGUuIFdlIHdhbnQgdG8gY2hlY2sgd2hldGhlciB0aGUKKyAgICAvLyBub2RlIGlzIGFjdHVhbGx5
IGluc2lkZSB0aGUgcmVnaW9uLCBhdCBsZWFzdCBwYXJ0aWFsbHkuCisgICAgTm9kZSogbm9kZSA9
IGNvcmVPYmplY3QtPm5vZGUoKTsKKyAgICBOb2RlKiBsYXN0RGVzY2VuZGFudCA9IG5vZGUtPmxh
c3REZXNjZW5kYW50KCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgcmV0dXJuIChy
YW5nZS0+aW50ZXJzZWN0c05vZGUobm9kZSwgZWMpCisgICAgICAgICAgICAmJiAocmFuZ2UtPmVu
ZENvbnRhaW5lcigpICE9IG5vZGUgfHwgcmFuZ2UtPmVuZE9mZnNldCgpKQorICAgICAgICAgICAg
JiYgKHJhbmdlLT5zdGFydENvbnRhaW5lcigpICE9IGxhc3REZXNjZW5kYW50IHx8IHJhbmdlLT5z
dGFydE9mZnNldCgpICE9IGxhc3RPZmZzZXRJbk5vZGUobGFzdERlc2NlbmRhbnQpKSk7Cit9CisK
K3N0YXRpYyBib29sIGlzVGV4dFdpdGhDYXJldChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2Jq
ZWN0KQoreworICAgIGlmICghY29yZU9iamVjdCB8fCAhY29yZU9iamVjdC0+aXNBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNldHRpbmdz
KiBzZXR0aW5ncyA9IGNvcmVPYmplY3QtPmRvY3VtZW50KCktPmZyYW1lKCktPnNldHRpbmdzKCk7
CisgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3MtPmNhcmV0QnJvd3NpbmdFbmFibGVkKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIHRleHQgb2JqZWN0cyBhbmQg
cGFyYWdyYXBocyBvbmx5LgorICAgIEF0a09iamVjdCogYXhPYmplY3QgPSBjb3JlT2JqZWN0LT53
cmFwcGVyKCk7CisgICAgQXRrUm9sZSByb2xlID0gYXhPYmplY3QgPyBhdGtfb2JqZWN0X2dldF9y
b2xlKGF4T2JqZWN0KSA6IEFUS19ST0xFX0lOVkFMSUQ7CisgICAgaWYgKHJvbGUgIT0gQVRLX1JP
TEVfVEVYVCAmJiByb2xlICE9IEFUS19ST0xFX1BBUkFHUkFQSCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gRmluYWxseSwgY2hlY2sgd2hldGhlciB0aGUgY2FyZXQgaXMgc2V0IGlu
IHRoZSBjdXJyZW50IG9iamVjdC4KKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGNv
cmVPYmplY3QtPnNlbGVjdGlvbigpOworICAgIGlmICghc2VsZWN0aW9uLmlzQ2FyZXQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuICFzZWxlY3Rpb25CZWxvbmdzVG9PYmpl
Y3QoY29yZU9iamVjdCwgc2VsZWN0aW9uKSB8fCBzZWxlY3Rpb24uaXNOb25lKCkgPyAwIDogMTsK
K30KKwogc3RhdGljIHZvaWQgc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVjdChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBdGtTdGF0ZVNldCogc3RhdGVTZXQpCiB7CiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gY29yZU9iamVjdC0+cGFyZW50T2JqZWN0KCk7CkBA
IC01MDMsNyArNTQ4LDcgQEAgc3RhdGljIHZvaWQgc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVj
dChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBdGtTdGEKICAgICBpZiAoY29yZU9i
amVjdC0+Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSkKICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRf
c3RhdGUoc3RhdGVTZXQsIEFUS19TVEFURV9GT0NVU0FCTEUpOwogCi0gICAgaWYgKGNvcmVPYmpl
Y3QtPmlzRm9jdXNlZCgpKQorICAgIGlmIChjb3JlT2JqZWN0LT5pc0ZvY3VzZWQoKSB8fCBpc1Rl
eHRXaXRoQ2FyZXQoY29yZU9iamVjdCkpCiAgICAgICAgIGF0a19zdGF0ZV9zZXRfYWRkX3N0YXRl
KHN0YXRlU2V0LCBBVEtfU1RBVEVfRk9DVVNFRCk7CiAKICAgICAvLyBUT0RPOiBBVEtfU1RBVEVf
SE9SSVpPTlRBTApAQCAtNTcyLDggKzYxNywxMiBAQCBzdGF0aWMgQXRrU3RhdGVTZXQqIHdlYmtp
dF9hY2Nlc3NpYmxlX3JlZl9zdGF0ZV9zZXQoQXRrT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIHJl
dHVybiBzdGF0ZVNldDsKICAgICB9CiAKLSAgICBzZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0
KGNvcmVPYmplY3QsIHN0YXRlU2V0KTsKKyAgICAvLyBUZXh0IG9iamVjdHMgbXVzdCBiZSBmb2N1
c2FibGUuCisgICAgQXRrUm9sZSByb2xlID0gYXRrX29iamVjdF9nZXRfcm9sZShvYmplY3QpOwor
ICAgIGlmIChyb2xlID09IEFUS19ST0xFX1RFWFQgfHwgcm9sZSA9PSBBVEtfUk9MRV9QQVJBR1JB
UEgpCisgICAgICAgIGF0a19zdGF0ZV9zZXRfYWRkX3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVf
Rk9DVVNBQkxFKTsKIAorICAgIHNldEF0a1N0YXRlU2V0RnJvbUNvcmVPYmplY3QoY29yZU9iamVj
dCwgc3RhdGVTZXQpOwogICAgIHJldHVybiBzdGF0ZVNldDsKIH0KIApAQCAtMTQwNywyNyArMTQ1
Niw2IEBAIHN0YXRpYyBnaW50IHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X29mZnNldF9hdF9w
b2ludChBdGtUZXh0KiB0ZXh0LCBnaW50IHgsIGdpCiAgICAgcmV0dXJuIHJhbmdlLnN0YXJ0Owog
fQogCi1zdGF0aWMgYm9vbCBzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QoQWNjZXNzaWJpbGl0eU9i
amVjdCogY29yZU9iamVjdCwgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQotewotICAgIGlm
ICghY29yZU9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3Jt
YWxpemVkUmFuZ2UoKTsKLSAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAvLyBXZSB3YW50IHRvIGNoZWNrIHRoYXQgYm90aCB0aGUgc2VsZWN0aW9uIGludGVyc2Vj
dHMgdGhlIG5vZGUKLSAgICAvLyBBTkQgdGhhdCB0aGUgc2VsZWN0aW9uIGlzIG5vdCBqdXN0ICJ0
b3VjaGluZyIgb25lIG9mIHRoZQotICAgIC8vIGJvdW5kYXJpZXMgZm9yIHRoZSBzZWxlY3RlZCBu
b2RlLiBXZSB3YW50IHRvIGNoZWNrIHdoZXRoZXIgdGhlCi0gICAgLy8gbm9kZSBpcyBhY3R1YWxs
eSBpbnNpZGUgdGhlIHJlZ2lvbiwgYXQgbGVhc3QgcGFydGlhbGx5Ci0gICAgTm9kZSogbm9kZSA9
IGNvcmVPYmplY3QtPm5vZGUoKTsKLSAgICBOb2RlKiBsYXN0RGVzY2VuZGFudCA9IG5vZGUtPmxh
c3REZXNjZW5kYW50KCk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgcmV0dXJuIChy
YW5nZS0+aW50ZXJzZWN0c05vZGUobm9kZSwgZWMpCi0gICAgICAgICAgICAmJiAocmFuZ2UtPmVu
ZENvbnRhaW5lcigpICE9IG5vZGUgfHwgcmFuZ2UtPmVuZE9mZnNldCgpKQotICAgICAgICAgICAg
JiYgKHJhbmdlLT5zdGFydENvbnRhaW5lcigpICE9IGxhc3REZXNjZW5kYW50IHx8IHJhbmdlLT5z
dGFydE9mZnNldCgpICE9IGxhc3RPZmZzZXRJbk5vZGUobGFzdERlc2NlbmRhbnQpKSk7Ci19Ci0K
IHN0YXRpYyB2b2lkIGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QoQWNjZXNzaWJpbGl0eU9i
amVjdCogY29yZU9iamVjdCwgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBnaW50JiBzdGFy
dE9mZnNldCwgZ2ludCYgZW5kT2Zmc2V0KQogewogICAgIGlmICghY29yZU9iamVjdC0+aXNBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvZ3Rr
L1NlbGVjdGlvbkNvbnRyb2xsZXJHdGsuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL2d0ay9TZWxlY3Rp
b25Db250cm9sbGVyR3RrLmNwcAppbmRleCA1NjI2MTEwLi4yMDg1MzgyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2VkaXRpbmcvZ3RrL1NlbGVjdGlvbkNvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1dlYkNv
cmUvZWRpdGluZy9ndGsvU2VsZWN0aW9uQ29udHJvbGxlckd0ay5jcHAKQEAgLTIzLDM0ICsyMyw4
MiBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmgiCiAjaW5jbHVk
ZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiUmVmUHRy
LmgiCiAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9p
ZCBTZWxlY3Rpb25Db250cm9sbGVyOjpub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hh
bmdlKCkKK3N0YXRpYyB2b2lkIGVtaXRUZXh0U2VsZWN0aW9uQ2hhbmdlKEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iamVjdCwgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24sIGludCBvZmZzZXQpCit7
CisgICAgQXRrT2JqZWN0KiBheE9iamVjdCA9IG9iamVjdC0+d3JhcHBlcigpOworICAgIGlmICgh
YXhPYmplY3QgfHwgIUFUS19JU19URVhUKGF4T2JqZWN0KSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGF4T2JqZWN0LCAidGV4dC1jYXJldC1tb3ZlZCIsIG9m
ZnNldCk7CisgICAgaWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkpCisgICAgICAgIGdfc2lnbmFsX2Vt
aXRfYnlfbmFtZShheE9iamVjdCwgInRleHQtc2VsZWN0aW9uLWNoYW5nZWQiKTsKK30KKworc3Rh
dGljIHZvaWQgbWF5YmVFbWl0VGV4dEZvY3VzQ2hhbmdlKFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4gcHJwT2JqZWN0KQogewotICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmls
aXR5RW5hYmxlZCgpICYmIG1fc2VsZWN0aW9uLnN0YXJ0KCkuaXNOb3ROdWxsKCkgJiYgbV9zZWxl
Y3Rpb24uZW5kKCkuaXNOb3ROdWxsKCkpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBmb2N1c2Vk
Tm9kZSA9IG1fc2VsZWN0aW9uLmVuZCgpLm5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdCA9IG1fZnJhbWUtPmRvY3VtZW50
KCktPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZm9jdXNlZE5vZGUpOwotCi0gICAgICAg
IC8vIG5lZWQgdG8gY2hlY2sgdGhpcyBhcyBnZXRPckNyZWF0ZSBjb3VsZCByZXR1cm4gMAotICAg
ICAgICBpZiAoIWFjY2Vzc2liaWxpdHlPYmplY3QpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgaW50IG9mZnNldDsKLSAgICAgICAgLy8gQWx3YXlzIHJlcG9ydCB0aGUgZXZlbnRzIHcu
ci50LiB0aGUgbm9uLWxpbmtlZCB1bmlnbm9yZWQgcGFyZW50LiAoaS5lLiBpZ25vcmVMaW5rcyA9
PSB0cnVlKQotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QgPSBvYmplY3RBbmRP
ZmZzZXRVbmlnbm9yZWQoYWNjZXNzaWJpbGl0eU9iamVjdCwgb2Zmc2V0LCB0cnVlKTsKLSAgICAg
ICAgaWYgKCFvYmplY3QpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgQXRrT2JqZWN0
KiB3cmFwcGVyID0gb2JqZWN0LT53cmFwcGVyKCk7Ci0gICAgICAgIGlmIChBVEtfSVNfVEVYVCh3
cmFwcGVyKSkgewotICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdyYXBwZXIsICJ0
ZXh0LWNhcmV0LW1vdmVkIiwgb2Zmc2V0KTsKLSAgICAgICAgICAgIGlmIChtX3NlbGVjdGlvbi5p
c1JhbmdlKCkpCi0gICAgICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdyYXBwZXIs
ICJ0ZXh0LXNlbGVjdGlvbi1jaGFuZ2VkIik7CisgICAgLy8gVGhpcyBzdGF0aWMgdmFyaWFibGUg
aXMgbmVlZGVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIG9sZCBvYmplY3QKKyAgICAvLyBhcyBwZXIg
cHJldmlvdXMgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiwgaW4gb3JkZXIgdG8gcHJvcGVybHkKKyAg
ICAvLyBkZWNpZGUgd2hldGhlciB0byBlbWl0IHNvbWUgc2lnbmFscyBvciBub3QuCisgICAgc3Rh
dGljIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvbGRPYmplY3QgPSAwOworCisgICAgUmVm
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iamVjdCA9IHBycE9iamVjdDsKKworICAgIC8vIEVu
c3VyZSB0aGUgb2xkT2JqZWN0IGJlbG9uZ3MgdG8gdGhlIHNhbWUgZG9jdW1lbnQgdGhhdCB0aGUK
KyAgICAvLyBjdXJyZW50IG9iamVjdCBzbyBmdXJ0aGVyIGNvbXBhcmlzb25zIG1ha2Ugc2Vuc2Uu
IE90aGVyd2lzZSwKKyAgICAvLyBqdXN0IHJlc2V0IG9sZE9iamVjdCBzbyBpdCB3b24ndCBiZSB0
YWtlbiBpbnRvIGFjY291bnQuCisgICAgaWYgKG9iamVjdCAmJiBvbGRPYmplY3QgJiYgb2xkT2Jq
ZWN0LT5kb2N1bWVudCgpICE9IG9iamVjdC0+ZG9jdW1lbnQoKSkKKyAgICAgICAgb2xkT2JqZWN0
ID0gMDsKKworICAgIEF0a09iamVjdCogYXhPYmplY3QgPSBvYmplY3QgPyBvYmplY3QtPndyYXBw
ZXIoKSA6IDA7CisgICAgQXRrT2JqZWN0KiBvbGRBeE9iamVjdCA9IG9sZE9iamVjdCA/IG9sZE9i
amVjdC0+d3JhcHBlcigpIDogMDsKKworICAgIGlmIChheE9iamVjdCAhPSBvbGRBeE9iamVjdCkg
eworICAgICAgICBpZiAob2xkQXhPYmplY3QgJiYgQVRLX0lTX1RFWFQob2xkQXhPYmplY3QpKSB7
CisgICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUob2xkQXhPYmplY3QsICJmb2N1cy1l
dmVudCIsIGZhbHNlKTsKKyAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShvbGRBeE9i
amVjdCwgInN0YXRlLWNoYW5nZSIsICJmb2N1c2VkIiwgZmFsc2UpOworICAgICAgICB9CisgICAg
ICAgIGlmIChheE9iamVjdCAmJiBBVEtfSVNfVEVYVChheE9iamVjdCkpIHsKKyAgICAgICAgICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZShheE9iamVjdCwgImZvY3VzLWV2ZW50IiwgdHJ1ZSk7Cisg
ICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYXhPYmplY3QsICJzdGF0ZS1jaGFuZ2Ui
LCAiZm9jdXNlZCIsIHRydWUpOwogICAgICAgICB9CiAgICAgfQorCisgICAgLy8gVXBkYXRlIHBv
aW50ZXIgdG8gbGFzdCBmb2N1c2VkIG9iamVjdC4KKyAgICBvbGRPYmplY3QgPSBvYmplY3Q7Cit9
CisKKwordm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2Vs
ZWN0aW9uQ2hhbmdlKCkKK3sKKyAgICBpZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlF
bmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFJlc2V0IGxhc3RGb2N1c2VOb2Rl
IGFuZCByZXR1cm4gZm9yIG5vIHZhbGlkIHNlbGVjdGlvbnMuCisgICAgaWYgKCFtX3NlbGVjdGlv
bi5zdGFydCgpLmlzTm90TnVsbCgpIHx8ICFtX3NlbGVjdGlvbi5lbmQoKS5pc05vdE51bGwoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyT2JqZWN0KiBmb2N1c2VkTm9kZSA9IG1fc2Vs
ZWN0aW9uLmVuZCgpLm5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBhY2Nlc3NpYmlsaXR5T2JqZWN0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNo
ZSgpLT5nZXRPckNyZWF0ZShmb2N1c2VkTm9kZSk7CisKKyAgICAvLyBOZWVkIHRvIGNoZWNrIHRo
aXMgYXMgZ2V0T3JDcmVhdGUgY291bGQgcmV0dXJuIDAsCisgICAgaWYgKCFhY2Nlc3NpYmlsaXR5
T2JqZWN0KQorICAgICAgICByZXR1cm47CisKKyAgICBpbnQgb2Zmc2V0OworICAgIC8vIEFsd2F5
cyByZXBvcnQgdGhlIGV2ZW50cyB3LnIudC4gdGhlIG5vbi1saW5rZWQgdW5pZ25vcmVkIHBhcmVu
dC4gKGkuZS4gaWdub3JlTGlua3MgPT0gdHJ1ZSkuCisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IG9iamVjdCA9IG9iamVjdEFuZE9mZnNldFVuaWdub3JlZChhY2Nlc3NpYmlsaXR5T2Jq
ZWN0LCBvZmZzZXQsIHRydWUpOworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBFbWl0IHJlbGF0ZWRzaWduYWxzLgorICAgIGVtaXRUZXh0U2VsZWN0aW9uQ2hhbmdl
KG9iamVjdC5nZXQoKSwgbV9zZWxlY3Rpb24sIG9mZnNldCk7CisgICAgbWF5YmVFbWl0VGV4dEZv
Y3VzQ2hhbmdlKG9iamVjdC5yZWxlYXNlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKaW5kZXggYjA0N2RhOC4uYTYyNGE4OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEwLTEx
LTE4ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR3RrXSBJbXBsZW1lbnQg
U1RBVEVfRk9DVVNFRCwgU1RBVEVfRk9DVVNBQkxFLCBhbmQgY29ycmVzcG9uZGluZyBldmVudHMg
Zm9yIHRleHQgb2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjcwNDgKKworICAgICAgICBBZGQgc3VwcG9ydCBpbiBEUlQgZm9yIGNoZWNraW5n
IHdoZXRoZXIgYW4gYWNjZXNzaWJpbGl0eSBVSQorICAgICAgICBlbGVtZW50IGlzIGZvY3VzYWJs
ZSBhbmQvb3IgZm9jdXNlZC4gSW1wbGVtZW50ZWQgZm9yIEdUSy4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoZ2V0SXNGb2N1
c2VkQ2FsbGJhY2spOiBOZXcuCisgICAgICAgIChnZXRJc0ZvY3VzYWJsZUNhbGxiYWNrKTogTmV3
LgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlNDbGFzcyk6IEFkZCB0aGUg
bmV3IGF2YWlsYWJsZQorICAgICAgICBjYWxsYmFja3MgZm9yIGlzRm9jdXNlZCBhbmQgaXNGb2N1
c2FibGUuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3Rr
LmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCk6IE5ldywg
aW1wbGVtZW50ZWQgYnkgY2hlY2tpbmcKKyAgICAgICAgd2hldGhlciB0aGUgcmVsYXRlZCBBdGtT
dGF0ZSB2YWx1ZSBpcyBpbiB0aGUgb2JqZWN0J3Mgc3RhdGUgc2V0LgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2FibGUpOiBEaXR0by4KKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCk6IE5ldywgZHVtbXkgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSk6IERpdHRvLgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNw
cDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCk6IERpdHRvLgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2FibGUpOiBEaXR0by4KKwog
MjAxMC0xMS0wMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCmluZGV4IDg3YmUzMzUuLjIz
ZmM0NjQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuY3BwCkBAIC02NjQsNiArNjY0LDE2IEBAIHN0YXRpYyBKU1ZhbHVlUmVm
IGdldElzUmVxdWlyZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
dGhpc09iCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0b0FYRWxlbWVu
dCh0aGlzT2JqZWN0KS0+aXNSZXF1aXJlZCgpKTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgZ2V0
SXNGb2N1c2VkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKK3sKKyAgICByZXR1cm4gSlNWYWx1ZU1h
a2VCb29sZWFuKGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5pc0ZvY3VzZWQoKSk7
Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGdldElzRm9jdXNhYmxlQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVl
UmVmKikKK3sKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRvQVhFbGVt
ZW50KHRoaXNPYmplY3QpLT5pc0ZvY3VzYWJsZSgpKTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYg
Z2V0SXNTZWxlY3RlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCiB7CiAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlQm9vbGVhbihjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+aXNTZWxlY3Rl
ZCgpKTsKQEAgLTg2OCw2ICs4NzgsOCBAQCBKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmdldEpTQ2xhc3MoKQogICAgICAgICB7ICJzZWxlY3RlZFRleHRSYW5nZSIsIGdldFNlbGVj
dGVkVGV4dFJhbmdlQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaXNFbmFibGVkIiwg
Z2V0SXNFbmFibGVkQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaXNSZXF1aXJlZCIs
IGdldElzUmVxdWlyZWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJpc0ZvY3VzZWQi
LCBnZXRJc0ZvY3VzZWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJpc0ZvY3VzYWJs
ZSIsIGdldElzRm9jdXNhYmxlQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaXNTZWxl
Y3RlZCIsIGdldElzU2VsZWN0ZWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc1Nl
bGVjdGFibGUiLCBnZXRJc1NlbGVjdGFibGVDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJpc011bHRpU2VsZWN0YWJsZSIsIGdldElzTXVsdGlTZWxlY3RhYmxlQ2FsbGJhY2ssIDAsIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaAppbmRleCAzMTIwZTY1Li4zZDU0MDBkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCkBAIC0xMzEsNiArMTMx
LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNFbmFibGVkKCk7CiAgICAgYm9vbCBpc1JlcXVpcmVk
KCkgY29uc3Q7CiAgICAgCisgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdDsKKyAgICBib29sIGlz
Rm9jdXNhYmxlKCkgY29uc3Q7CiAgICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Q7CiAgICAgYm9v
bCBpc1NlbGVjdGFibGUoKSBjb25zdDsKICAgICBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudEd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAKaW5kZXggODQ5M2YxYS4uZWNmNWYzNyAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRHdGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50R3RrLmNwcApAQCAtMzkyLDYgKzM5MiwxNyBAQCBib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQoKSBjb25zdAoreworICAgIGlm
ICghQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBQbGF0Zm9ybVJlZlB0cjxBdGtTdGF0ZVNldD4gc3RhdGVTZXQgPSBhZG9wdFBsYXRmb3JtUmVm
KGF0a19vYmplY3RfcmVmX3N0YXRlX3NldChBVEtfT0JKRUNUKG1fZWxlbWVudCkpKTsKKyAgICBn
Ym9vbGVhbiBpc0ZvY3VzZWQgPSBhdGtfc3RhdGVfc2V0X2NvbnRhaW5zX3N0YXRlKHN0YXRlU2V0
LmdldCgpLCBBVEtfU1RBVEVfRk9DVVNFRCk7CisKKyAgICByZXR1cm4gaXNGb2N1c2VkOworfQor
CiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQoKSBjb25zdAogewogICAg
IGlmICghQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQpAQCAtNjQwLDYgKzY1MSwxNyBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkKICAg
ICAvLyBGSVhNRTogaW1wbGVtZW50CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNGb2N1c2FibGUoKSBjb25zdAoreworICAgIGlmICghQVRLX0lTX09CSkVDVChtX2VsZW1lbnQp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBQbGF0Zm9ybVJlZlB0cjxBdGtTdGF0ZVNl
dD4gc3RhdGVTZXQgPSBhZG9wdFBsYXRmb3JtUmVmKGF0a19vYmplY3RfcmVmX3N0YXRlX3NldChB
VEtfT0JKRUNUKG1fZWxlbWVudCkpKTsKKyAgICBnYm9vbGVhbiBpc0ZvY3VzYWJsZSA9IGF0a19z
dGF0ZV9zZXRfY29udGFpbnNfc3RhdGUoc3RhdGVTZXQuZ2V0KCksIEFUS19TVEFURV9GT0NVU0FC
TEUpOworCisgICAgcmV0dXJuIGlzRm9jdXNhYmxlOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzU2VsZWN0YWJsZSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVu
dApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCBlMjdlZTBlLi5lMmYwNTk3IDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbQpAQCAtNzYxLDYgKzc2MSwxMiBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzUmVxdWlyZWQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQoKSBjb25zdAoreworICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNTZWxlY3RlZCgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCkBAIC0xMTgxLDYgKzExODcsMTIgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
ZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpCiAgICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0g
bmlsOwogfQogCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29u
c3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBi
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0YWJsZSgpIGNvbnN0CiB7CiAgICAg
Ly8gRklYTUU6IGltcGxlbWVudApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCmluZGV4IDk2OTM3ZmQu
LmRiZTJiNjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAKQEAgLTMwNyw2ICszMDcsMTIgQEAg
c3RhdGljIERXT1JEIGFjY2Vzc2liaWxpdHlTdGF0ZShDT01QdHI8SUFjY2Vzc2libGU+IGVsZW1l
bnQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc0ZvY3VzZWQoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCgp
IGNvbnN0CiB7CiAgICAgRFdPUkQgc3RhdGUgPSBhY2Nlc3NpYmlsaXR5U3RhdGUobV9lbGVtZW50
KTsKQEAgLTU4Myw2ICs1ODksMTIgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1v
dmVOb3RpZmljYXRpb25MaXN0ZW5lcigpCiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogfQogCiti
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29uc3QKK3sKKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0YWJsZSgpIGNvbnN0CiB7CiAgICAgRFdPUkQgc3RhdGUg
PSBhY2Nlc3NpYmlsaXR5U3RhdGUobV9lbGVtZW50KTsKLS0gCjEuNy4zLjIKCg==
</data>
<flag name="review"
          id="64783"
          type_id="1"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76411</attachid>
            <date>2010-12-13 11:13:50 -0800</date>
            <delta_ts>2010-12-14 06:11:31 -0800</delta_ts>
            <desc>Patch proposal + Layout Test</desc>
            <filename>0001-2010-11-18-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>30117</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA5MTI3ZTA1ZjhlOWY1ZGE3YmM4ODk2YTg2YTIxMGFmYTM4MjI1NWRkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBNb24sIDEzIERlYyAyMDEwIDE3OjExOjI3ICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMC0xMS0xOCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbR3RrXSBJbXBs
ZW1lbnQgU1RBVEVfRk9DVVNFRCwgU1RBVEVfRk9DVVNBQkxFLCBhbmQgY29ycmVzcG9uZGluZyBl
dmVudHMgZm9yIHRleHQgb2JqZWN0cwogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNzA0OAoKICAgICAgICBIYW5kbGUgZm9jdXMgY2hhbmdlIGZvciB0ZXh0
IG9iamVjdHMgYmFzZWQgaW4gY2FyZXQgY2hhbmdlcy4KCiAgICAgICAgQXMgdGV4dCBvYmplY3Rz
IChzdWNoIGFzIHBhcmFncmFwaHMpIHNlZW0gbm90IHRvIGFjY2VwdCBmb2N1cyBpbgogICAgICAg
IFdlYkNvcmUgaW4gdGhlIHNhbWUgd2F5IG90aGVyIG9iamVjdHMgKHRleHQgY29udHJvbHMpIGRv
LCBhCiAgICAgICAgR3RrLXNwZWNpZmljIHdvcmthcm91bmQgaXMgbmVlZGVkIHRvIGV4cG9zZSB0
aGlzIHN0YXRlcyBhbmQgdGhlCiAgICAgICAgcmVsYXRlZCBldmVudHMgdG8gQVRLLWJhc2VkIGFz
c2lzdGl2ZSB0ZWNobm9sb2dpZXMuCgogICAgICAgIEVuc3VyZSB0aGF0IHRleHQgb2JqZWN0cyBh
cmUgZXhwb3NlZCB3aXRoIHRoZSBBVEtfU1RBVEVfRk9DVVNBQkxFCiAgICAgICAgc3RhdGUsIGFu
ZCB0aGF0IHRoZSBBVEtfU1RBVEVfRk9DVVNFRCBzdGF0ZSBpcyBhZGRlZCB0byB0aG9zZQogICAg
ICAgIHRleHQgb2JqZWN0cyBjb250YWluaW5nIHRoZSBjdXJyZW50bHkgYWN0aXZlIGNhcmV0IHNl
bGVjdGlvbi4KCiAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlckF0ay5jcHA6CiAgICAgICAgKHNlbGVjdGlvbkJlbG9uZ3NUb09iamVjdCk6IE1vdmVk
IHVwd2FyZHMgdG8gdXNlIGl0IGZyb20KICAgICAgICB0aGUgbmV3IGlzVGV4dFdpdGhDYXJldCgp
IGZ1bmN0aW9uLgogICAgICAgIChpc1RleHRXaXRoQ2FyZXQpOiBOZXcsIGNoZWNrcyB3aGV0aGVy
IGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0CiAgICAgICAgcmVwcmVzZW50cyBhIHRleHQgb2JqZWN0
IHdpdGggdGhlIGN1cnJlbnQgY2FyZXQgc2VsZWN0aW9uIG9uIGl0LgogICAgICAgIChzZXRBdGtT
dGF0ZVNldEZyb21Db3JlT2JqZWN0KTogQWRkIHRoZSBBVEtfU1RBVEVfRk9DVVNFRCBzdGF0ZQog
ICAgICAgIHdoZW4gYWxzbyB3aGVuIGlzVGV4dFdpdGhDYXJldChjb3JlT2JqZWN0KSByZXR1cm5z
IHRydWUuCiAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3JlZl9zdGF0ZV9zZXQpOiBBZGQgdGhl
IEFUS19TVEFURV9GT0NVU0FCTEUKICAgICAgICBzdGF0ZSB0byB0ZXh0IG9iamVjdHMgYW5kIHRo
b3NlIHdpdGggdGhlIEFUS19ST0xFX1BBUkFHUkFQSCByb2xlLgogICAgICAgICh3ZWJraXRfYWNj
ZXNzaWJsZV90ZXh0X2dldF9uX3NlbGVjdGlvbnMpOiBPcHRpbWl6ZSByZXR1cm4gZXhwcmVzc2lv
bi4KCiAgICAgICAgTWFrZSBzdXJlIHRoZSBwcm9wZXIgZXZlbnRzIGFzc29jaWF0ZWQgdG8gYSBj
aGFuZ2Ugb2YgZm9jdXMgYXJlCiAgICAgICAgZW1pdHRlZCwgYmFzZWQgb24gY2FyZXQgY2hhbmdl
cyBhY3Jvc3MgZGlmZmVyZW50IGFjY2Vzc2liaWxpdHkKICAgICAgICBvYmplY3RzLiBBbHNvLCBy
ZWZhY3RvcmVkIHRoZSBjb2RlIGluIG1vcmUgbWFuYWdlYWJsZSBhbmQKICAgICAgICB1bmRlcnN0
YW5kYWJsZSBoZWxwZXIgZnVuY3Rpb25zLgoKICAgICAgICAqIGVkaXRpbmcvZ3RrL1NlbGVjdGlv
bkNvbnRyb2xsZXJHdGsuY3BwOgogICAgICAgIChXZWJDb3JlOjplbWl0VGV4dFNlbGVjdGlvbkNo
YW5nZSk6IE5ldywgaW5jbHVkZXMgdGhlIHNwZWNpZmljCiAgICAgICAgY29kZSBmb3JtZXJseSBw
bGFjZWQgaW4gbm90aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZSgpIHRvCiAgICAg
ICAgZW1pdCB0aGUgJ3RleHQtY2FyZXQtbW92ZWQnIGFuZCAndGV4dC1zZWxlY3Rpb24tY2hhbmdl
JyBzaWduYWxzLgogICAgICAgIChXZWJDb3JlOjptYXliZUVtaXRUZXh0Rm9jdXNDaGFuZ2UpOiBO
ZXcsIHRha2VzIGNhcmUgb2YgZW1pdHRpbmcKICAgICAgICB0aGUgJ2ZvY3VzLWV2ZW50JyBhbmQg
J3N0YXRlLWNoYW5nZWQ6OmZvY3VzZWQnIHNpZ25hbHMgd2hlbgogICAgICAgIG5lZWRlZCwgdGhh
dCBpcywgd2hlbiBhIGNoYW5nZSBpbiB0aGUgc2VsZWN0aW9uIGhhcHBlbnMgYWNyb3NzCiAgICAg
ICAgZGlmZmVyZW50IGFjY2Vzc2libGUgb2JqZWN0cy4KICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
aW9uQ29udHJvbGxlcjo6bm90aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZSk6CiAg
ICAgICAgUmVmYWN0b3JlZCBzb21lIGNvZGUgaGVyZSwgYnkgdXNpbmcgdGhlIG5ldyBoZWxwZXIg
ZnVuY3Rpb25zLgoKMjAxMC0xMS0xOCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGln
YWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBb
R3RrXSBJbXBsZW1lbnQgU1RBVEVfRk9DVVNFRCwgU1RBVEVfRk9DVVNBQkxFLCBhbmQgY29ycmVz
cG9uZGluZyBldmVudHMgZm9yIHRleHQgb2JqZWN0cwogICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzA0OAoKICAgICAgICBBZGQgc3VwcG9ydCBpbiBEUlQg
Zm9yIGNoZWNraW5nIHdoZXRoZXIgYW4gYWNjZXNzaWJpbGl0eSBVSQogICAgICAgIGVsZW1lbnQg
aXMgZm9jdXNhYmxlIGFuZC9vciBmb2N1c2VkLiBJbXBsZW1lbnRlZCBmb3IgR1RLLgoKICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgogICAgICAgIChn
ZXRJc0ZvY3VzZWRDYWxsYmFjayk6IE5ldy4KICAgICAgICAoZ2V0SXNGb2N1c2FibGVDYWxsYmFj
ayk6IE5ldy4KICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlNDbGFzcyk6IEFk
ZCB0aGUgbmV3IGF2YWlsYWJsZQogICAgICAgIGNhbGxiYWNrcyBmb3IgaXNGb2N1c2VkIGFuZCBp
c0ZvY3VzYWJsZS4KICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaDoKICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
R3RrLmNwcDoKICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2VkKTogTmV3
LCBpbXBsZW1lbnRlZCBieSBjaGVja2luZwogICAgICAgIHdoZXRoZXIgdGhlIHJlbGF0ZWQgQXRr
U3RhdGUgdmFsdWUgaXMgaW4gdGhlIG9iamVjdCdzIHN0YXRlIHNldC4KICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2FibGUpOiBEaXR0by4KICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgogICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQpOiBOZXcsIGR1bW15IGltcGxlbWVudGF0aW9uLgog
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSk6IERpdHRvLgogICAg
ICAgICogRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwOgog
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQpOiBEaXR0by4KICAgICAg
ICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2FibGUpOiBEaXR0by4KCjIwMTAtMTEt
MTggIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgoKICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0d0a10gSW1wbGVtZW50IFNUQVRF
X0ZPQ1VTRUQsIFNUQVRFX0ZPQ1VTQUJMRSwgYW5kIGNvcnJlc3BvbmRpbmcgZXZlbnRzIGZvciB0
ZXh0IG9iamVjdHMKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjcwNDgKCiAgICAgICAgQWRkZWQgYSBuZXcgR1RLLXNwZWNpZmljIHRlc3QgdG8gY2hlY2sg
Zm9jdXN7YWJsZXxlZH0gc3RhdGVzIGFyZQogICAgICAgIHByb3Blcmx5IHNldCB3aGVuIG1vdmlu
ZyB0aGUgY2FyZXQgYWNyb3NzIHRleHQgb2JqZWN0cy4KCiAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
YWNjZXNzaWJpbGl0eS9jYXJldC1icm93c2luZy10ZXh0LWZvY3VzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCiAgICAgICAgKiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9jYXJldC1icm93c2luZy10
ZXh0LWZvY3VzLmh0bWw6IEFkZGVkLgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArKysKIC4uLi9jYXJldC1icm93c2luZy10ZXh0
LWZvY3VzLWV4cGVjdGVkLnR4dCAgICAgICAgIHwgICAzMCArKysrKysrCiAuLi4vYWNjZXNzaWJp
bGl0eS9jYXJldC1icm93c2luZy10ZXh0LWZvY3VzLmh0bWwgICB8ICAgNjkgKysrKysrKysrKysr
KysrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgNDcgKysrKysrKysrKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5j
cHAgICAgICAgICAgfCAgIDg3ICsrKysrKysrKysrKysrLS0tLS0KIFdlYkNvcmUvZWRpdGluZy9n
dGsvU2VsZWN0aW9uQ29udHJvbGxlckd0ay5jcHAgICAgIHwgICA4OSArKysrKysrKysrKysrKyst
LS0tLQogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDI3ICsrKysrKwogLi4uL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
Y3BwICAgICAgfCAgIDEyICsrKwogLi4uL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaCAgICAgICAgfCAgICAyICsKIC4uLi9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0
ay5jcHAgICAgICAgICAgICAgIHwgICAyMiArKysrKwogLi4uL21hYy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tICAgICAgICAgICAgICAgfCAgIDEyICsrKwogLi4uL3dpbi9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50V2luLmNwcCAgICAgICAgICAgICAgfCAgIDEyICsrKwogMTIgZmlsZXMgY2hh
bmdlZCwgMzc4IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5n
LXRleHQtZm9jdXMtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3NpbmctdGV4dC1mb2N1cy5odG1s
CgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGY2YjkzMGYuLjEzMWRlNjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0x
MS0xOCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0d0a10gSW1wbGVtZW50
IFNUQVRFX0ZPQ1VTRUQsIFNUQVRFX0ZPQ1VTQUJMRSwgYW5kIGNvcnJlc3BvbmRpbmcgZXZlbnRz
IGZvciB0ZXh0IG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI3MDQ4CisKKyAgICAgICAgQWRkZWQgYSBuZXcgR1RLLXNwZWNpZmljIHRlc3Qg
dG8gY2hlY2sgZm9jdXN7YWJsZXxlZH0gc3RhdGVzIGFyZQorICAgICAgICBwcm9wZXJseSBzZXQg
d2hlbiBtb3ZpbmcgdGhlIGNhcmV0IGFjcm9zcyB0ZXh0IG9iamVjdHMuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9jYXJldC1icm93c2luZy10ZXh0LWZvY3VzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvY2Fy
ZXQtYnJvd3NpbmctdGV4dC1mb2N1cy5odG1sOiBBZGRlZC4KKwogMjAxMC0xMi0xMyAgSm9obiBL
bm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBTdGV2ZSBCbG9jay4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nl
c3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLXRleHQtZm9jdXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3NpbmctdGV4dC1mb2N1
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFjOWYz
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmls
aXR5L2NhcmV0LWJyb3dzaW5nLXRleHQtZm9jdXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzAg
QEAKK0EgcGFyYWdyYXBoIHdpdGggYQorbGluZSBicmVhayBpbiB0aGUgbWlkZGxlCisKK0EgcGFy
YWdyYXBoIHdpdGggYSBzaW5nbGUgbGluZQorCitUaGlzIHRlc3RzIHRoZSBGT0NVU0FCTEUgYW5k
IEZPQ1VTRUQgc3RhdGVzIGZvciB0ZXh0IG9iamVjdHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIGF4UGFyMS5yb2xlIGlzICdBWFJvbGU6IHBhcmFncmFwaCcKK1BBU1Mg
YXhQYXIyLnJvbGUgaXMgJ0FYUm9sZTogcGFyYWdyYXBoJworUEFTUyBheFBhcjEuaXNGb2N1c2Fi
bGUgaXMgdHJ1ZQorUEFTUyBheFBhcjIuaXNGb2N1c2FibGUgaXMgdHJ1ZQorUEFTUyBheFBhcjEu
aXNGb2N1c2VkIGlzIGZhbHNlCitQQVNTIGF4UGFyMi5pc0ZvY3VzZWQgaXMgZmFsc2UKK1BBU1Mg
YXhQYXIxLmlzRm9jdXNlZCBpcyB0cnVlCitQQVNTIGF4UGFyMi5pc0ZvY3VzZWQgaXMgZmFsc2UK
K1BBU1MgYXhQYXIxLmlzRm9jdXNlZCBpcyB0cnVlCitQQVNTIGF4UGFyMi5pc0ZvY3VzZWQgaXMg
ZmFsc2UKK1BBU1MgYXhQYXIxLmlzRm9jdXNlZCBpcyBmYWxzZQorUEFTUyBheFBhcjIuaXNGb2N1
c2VkIGlzIHRydWUKK1BBU1MgYXhQYXIxLmlzRm9jdXNlZCBpcyB0cnVlCitQQVNTIGF4UGFyMi5p
c0ZvY3VzZWQgaXMgZmFsc2UKK1BBU1MgYXhQYXIxLmlzRm9jdXNlZCBpcyBmYWxzZQorUEFTUyBh
eFBhcjIuaXNGb2N1c2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
YWNjZXNzaWJpbGl0eS9jYXJldC1icm93c2luZy10ZXh0LWZvY3VzLmh0bWwgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9jYXJldC1icm93c2luZy10ZXh0LWZvY3VzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY1NjIwZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJy
b3dzaW5nLXRleHQtZm9jdXMuaHRtbApAQCAtMCwwICsxLDY5IEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0PgordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorPHAgaWQ9InBhcjEiPkEgcGFy
YWdyYXBoIHdpdGggYTxiciAvPmxpbmUgYnJlYWsgaW4gdGhlIG1pZGRsZTwvcD4KKzxwIGlkPSJw
YXIyIj5BIHBhcmFncmFwaCB3aXRoIGEgc2luZ2xlIGxpbmU8L3A+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCJUaGlzIHRlc3RzIHRoZSBGT0NVU0FCTEUgYW5kIEZPQ1VTRUQgc3RhdGVzIGZvciB0ZXh0IG9i
amVjdHMuIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgbGF5b3V0
VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRFbmFibGVDYXJldEJyb3dz
aW5nIiwgdHJ1ZSk7CisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICBp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYm9keSIpLmZvY3VzKCk7CisgICAgdmFyIHdlYkFyZWEgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKworICAgIHZhciBheFBhcjEgPSB3ZWJBcmVh
LmNoaWxkQXRJbmRleCgwKTsKKyAgICB2YXIgYXhQYXIyID0gd2ViQXJlYS5jaGlsZEF0SW5kZXgo
MSk7CisKKyAgICAvLyBDaGVjayByb2xlcyBhbmQgaW5pdGlhbCBzdGF0ZXMKKyAgICBzaG91bGRC
ZSgiYXhQYXIxLnJvbGUiLCAiJ0FYUm9sZTogcGFyYWdyYXBoJyIpOworICAgIHNob3VsZEJlKCJh
eFBhcjIucm9sZSIsICInQVhSb2xlOiBwYXJhZ3JhcGgnIik7CisgICAgc2hvdWxkQmUoImF4UGFy
MS5pc0ZvY3VzYWJsZSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoImF4UGFyMi5pc0ZvY3VzYWJs
ZSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoImF4UGFyMS5pc0ZvY3VzZWQiLCAiZmFsc2UiKTsK
KyAgICBzaG91bGRCZSgiYXhQYXIyLmlzRm9jdXNlZCIsICJmYWxzZSIpOworCisgICAgLy8gU2V0
IGNhcmV0IGluIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBmaXJzdCBwYXJhZ3JhcGgKKyAgICB2YXIg
cGFyMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXIxIik7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLnNldFBvc2l0aW9uKHBhcjEuY2hpbGROb2Rlcy5pdGVtKDApLCAxMCk7CisgICAg
c2hvdWxkQmUoImF4UGFyMS5pc0ZvY3VzZWQiLCAidHJ1ZSIpOworICAgIHNob3VsZEJlKCJheFBh
cjIuaXNGb2N1c2VkIiwgImZhbHNlIik7CisKKyAgICAvLyBNb3ZlIHRoZSBjYXJldCBkb3duIHRv
IHRoZSBzZWNvbmQgbGluZSAoc2FtZSBwYXJhZ3JhcGgpCisgICAgZXZlbnRTZW5kZXIua2V5RG93
bigiZG93bkFycm93Iik7CisgICAgc2hvdWxkQmUoImF4UGFyMS5pc0ZvY3VzZWQiLCAidHJ1ZSIp
OworICAgIHNob3VsZEJlKCJheFBhcjIuaXNGb2N1c2VkIiwgImZhbHNlIik7CisKKyAgICAvLyBN
b3ZlIHRoZSBjYXJldCBkb3duIGFuZCB1cCAoYWNyb3NzIGRpZmZlcmVudCBwYXJhZ3JhcGhzKQor
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oImRvd25BcnJvdyIpOworICAgIHNob3VsZEJlKCJheFBh
cjEuaXNGb2N1c2VkIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoImF4UGFyMi5pc0ZvY3VzZWQi
LCAidHJ1ZSIpOworICAgIGV2ZW50U2VuZGVyLmtleURvd24oInVwQXJyb3ciKTsKKyAgICBzaG91
bGRCZSgiYXhQYXIxLmlzRm9jdXNlZCIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoImF4UGFyMi5p
c0ZvY3VzZWQiLCAiZmFsc2UiKTsKKworICAgIC8vIEV4cGxpY2l0bHkgcHV0IHRoZSBjYXJldCBp
biB0aGUgbWlkZGxlIG9mIHRoZSBzZWNvbmQgcGFyYWdyYXBoCisgICAgdmFyIHBhcjIgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicGFyMiIpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5z
ZXRQb3NpdGlvbihwYXIyLmNoaWxkTm9kZXMuaXRlbSgwKSwgMTApOworICAgIHNob3VsZEJlKCJh
eFBhcjEuaXNGb2N1c2VkIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoImF4UGFyMi5pc0ZvY3Vz
ZWQiLCAidHJ1ZSIpOworICB9Cit9CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNDMzZDZiLi5hMWJjNzE2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUwIEBACisyMDEwLTExLTE4ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdh
bGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbR3RrXSBJbXBsZW1lbnQgU1RBVEVfRk9DVVNFRCwgU1RBVEVfRk9DVVNBQkxFLCBhbmQgY29y
cmVzcG9uZGluZyBldmVudHMgZm9yIHRleHQgb2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcwNDgKKworICAgICAgICBIYW5kbGUgZm9jdXMg
Y2hhbmdlIGZvciB0ZXh0IG9iamVjdHMgYmFzZWQgaW4gY2FyZXQgY2hhbmdlcy4KKworICAgICAg
ICBBcyB0ZXh0IG9iamVjdHMgKHN1Y2ggYXMgcGFyYWdyYXBocykgc2VlbSBub3QgdG8gYWNjZXB0
IGZvY3VzIGluCisgICAgICAgIFdlYkNvcmUgaW4gdGhlIHNhbWUgd2F5IG90aGVyIG9iamVjdHMg
KHRleHQgY29udHJvbHMpIGRvLCBhCisgICAgICAgIEd0ay1zcGVjaWZpYyB3b3JrYXJvdW5kIGlz
IG5lZWRlZCB0byBleHBvc2UgdGhpcyBzdGF0ZXMgYW5kIHRoZQorICAgICAgICByZWxhdGVkIGV2
ZW50cyB0byBBVEstYmFzZWQgYXNzaXN0aXZlIHRlY2hub2xvZ2llcy4KKworICAgICAgICBUZXN0
OiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9jYXJldC1icm93c2luZy10ZXh0LWZvY3VzLmh0
bWwKKworICAgICAgICBFbnN1cmUgdGhhdCB0ZXh0IG9iamVjdHMgYXJlIGV4cG9zZWQgd2l0aCB0
aGUgQVRLX1NUQVRFX0ZPQ1VTQUJMRQorICAgICAgICBzdGF0ZSwgYW5kIHRoYXQgdGhlIEFUS19T
VEFURV9GT0NVU0VEIHN0YXRlIGlzIGFkZGVkIHRvIHRob3NlCisgICAgICAgIHRleHQgb2JqZWN0
cyBjb250YWluaW5nIHRoZSBjdXJyZW50bHkgYWN0aXZlIGNhcmV0IHNlbGVjdGlvbi4KKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNw
cDoKKyAgICAgICAgKHNlbGVjdGlvbkJlbG9uZ3NUb09iamVjdCk6IE1vdmVkIHVwd2FyZHMgdG8g
dXNlIGl0IGZyb20KKyAgICAgICAgdGhlIG5ldyBpc1RleHRXaXRoQ2FyZXQoKSBmdW5jdGlvbi4K
KyAgICAgICAgKGlzVGV4dFdpdGhDYXJldCk6IE5ldywgY2hlY2tzIHdoZXRoZXIgYW4gYWNjZXNz
aWJpbGl0eSBvYmplY3QKKyAgICAgICAgcmVwcmVzZW50cyBhIHRleHQgb2JqZWN0IHdpdGggdGhl
IGN1cnJlbnQgY2FyZXQgc2VsZWN0aW9uIG9uIGl0LgorICAgICAgICAoc2V0QXRrU3RhdGVTZXRG
cm9tQ29yZU9iamVjdCk6IEFkZCB0aGUgQVRLX1NUQVRFX0ZPQ1VTRUQgc3RhdGUKKyAgICAgICAg
d2hlbiBhbHNvIHdoZW4gaXNUZXh0V2l0aENhcmV0KGNvcmVPYmplY3QpIHJldHVybnMgdHJ1ZS4K
KyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3JlZl9zdGF0ZV9zZXQpOiBBZGQgdGhlIEFUS19T
VEFURV9GT0NVU0FCTEUKKyAgICAgICAgc3RhdGUgdG8gdGV4dCBvYmplY3RzIGFuZCB0aG9zZSB3
aXRoIHRoZSBBVEtfUk9MRV9QQVJBR1JBUEggcm9sZS4KKyAgICAgICAgKHdlYmtpdF9hY2Nlc3Np
YmxlX3RleHRfZ2V0X25fc2VsZWN0aW9ucyk6IE9wdGltaXplIHJldHVybiBleHByZXNzaW9uLgor
CisgICAgICAgIE1ha2Ugc3VyZSB0aGUgcHJvcGVyIGV2ZW50cyBhc3NvY2lhdGVkIHRvIGEgY2hh
bmdlIG9mIGZvY3VzIGFyZQorICAgICAgICBlbWl0dGVkLCBiYXNlZCBvbiBjYXJldCBjaGFuZ2Vz
IGFjcm9zcyBkaWZmZXJlbnQgYWNjZXNzaWJpbGl0eQorICAgICAgICBvYmplY3RzLiBBbHNvLCBy
ZWZhY3RvcmVkIHRoZSBjb2RlIGluIG1vcmUgbWFuYWdlYWJsZSBhbmQKKyAgICAgICAgdW5kZXJz
dGFuZGFibGUgaGVscGVyIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGVkaXRpbmcvZ3RrL1NlbGVj
dGlvbkNvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW1pdFRleHRTZWxlY3Rp
b25DaGFuZ2UpOiBOZXcsIGluY2x1ZGVzIHRoZSBzcGVjaWZpYworICAgICAgICBjb2RlIGZvcm1l
cmx5IHBsYWNlZCBpbiBub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCkgdG8K
KyAgICAgICAgZW1pdCB0aGUgJ3RleHQtY2FyZXQtbW92ZWQnIGFuZCAndGV4dC1zZWxlY3Rpb24t
Y2hhbmdlJyBzaWduYWxzLgorICAgICAgICAoV2ViQ29yZTo6bWF5YmVFbWl0VGV4dEZvY3VzQ2hh
bmdlKTogTmV3LCB0YWtlcyBjYXJlIG9mIGVtaXR0aW5nCisgICAgICAgIHRoZSAnZm9jdXMtZXZl
bnQnIGFuZCAnc3RhdGUtY2hhbmdlZDo6Zm9jdXNlZCcgc2lnbmFscyB3aGVuCisgICAgICAgIG5l
ZWRlZCwgdGhhdCBpcywgd2hlbiBhIGNoYW5nZSBpbiB0aGUgc2VsZWN0aW9uIGhhcHBlbnMgYWNy
b3NzCisgICAgICAgIGRpZmZlcmVudCBhY2Nlc3NpYmxlIG9iamVjdHMuCisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9u
Q2hhbmdlKToKKyAgICAgICAgUmVmYWN0b3JlZCBzb21lIGNvZGUgaGVyZSwgYnkgdXNpbmcgdGhl
IG5ldyBoZWxwZXIgZnVuY3Rpb25zLgorCiAyMDEwLTEyLTEzICBNYXJpbyBTYW5jaGV6IFByYWRh
ICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXou
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQXRrLmNwcCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJBdGsuY3BwCmluZGV4IDVhNTViYjEuLjcxNGFlNTQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsu
Y3BwCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJBdGsuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGlzdE1hcmtl
ci5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJTZWxlY3RFbGVtZW50Lmgi
CisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNs
dWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5r
LmgiCkBAIC00NzcsNiArNDc4LDYxIEBAIHN0YXRpYyBBdGtSb2xlIHdlYmtpdF9hY2Nlc3NpYmxl
X2dldF9yb2xlKEF0a09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBhdGtSb2xlKGF4T2JqZWN0
LT5yb2xlVmFsdWUoKSk7CiB9CiAKK3N0YXRpYyBib29sIHNlbGVjdGlvbkJlbG9uZ3NUb09iamVj
dChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxl
Y3Rpb24pCit7CisgICAgaWYgKCFjb3JlT2JqZWN0IHx8ICFjb3JlT2JqZWN0LT5pc0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHNl
bGVjdGlvbi5pc05vbmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgIGlmICghcmFu
Z2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFdlIHdhbnQgdG8gY2hlY2sgdGhh
dCBib3RoIHRoZSBzZWxlY3Rpb24gaW50ZXJzZWN0cyB0aGUgbm9kZQorICAgIC8vIEFORCB0aGF0
IHRoZSBzZWxlY3Rpb24gaXMgbm90IGp1c3QgInRvdWNoaW5nIiBvbmUgb2YgdGhlCisgICAgLy8g
Ym91bmRhcmllcyBmb3IgdGhlIHNlbGVjdGVkIG5vZGUuIFdlIHdhbnQgdG8gY2hlY2sgd2hldGhl
ciB0aGUKKyAgICAvLyBub2RlIGlzIGFjdHVhbGx5IGluc2lkZSB0aGUgcmVnaW9uLCBhdCBsZWFz
dCBwYXJ0aWFsbHkuCisgICAgTm9kZSogbm9kZSA9IGNvcmVPYmplY3QtPm5vZGUoKTsKKyAgICBO
b2RlKiBsYXN0RGVzY2VuZGFudCA9IG5vZGUtPmxhc3REZXNjZW5kYW50KCk7CisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgcmV0dXJuIChyYW5nZS0+aW50ZXJzZWN0c05vZGUobm9kZSwg
ZWMpCisgICAgICAgICAgICAmJiAocmFuZ2UtPmVuZENvbnRhaW5lcigpICE9IG5vZGUgfHwgcmFu
Z2UtPmVuZE9mZnNldCgpKQorICAgICAgICAgICAgJiYgKHJhbmdlLT5zdGFydENvbnRhaW5lcigp
ICE9IGxhc3REZXNjZW5kYW50IHx8IHJhbmdlLT5zdGFydE9mZnNldCgpICE9IGxhc3RPZmZzZXRJ
bk5vZGUobGFzdERlc2NlbmRhbnQpKSk7Cit9CisKK3N0YXRpYyBib29sIGlzVGV4dFdpdGhDYXJl
dChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0KQoreworICAgIGlmICghY29yZU9iamVj
dCB8fCAhY29yZU9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvcmVPYmplY3QtPmRv
Y3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZnJhbWUtPnNl
dHRpbmdzKCk7CisgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3MtPmNhcmV0QnJvd3NpbmdF
bmFibGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIHRleHQgb2Jq
ZWN0cyBhbmQgcGFyYWdyYXBocyBvbmx5LgorICAgIEF0a09iamVjdCogYXhPYmplY3QgPSBjb3Jl
T2JqZWN0LT53cmFwcGVyKCk7CisgICAgQXRrUm9sZSByb2xlID0gYXhPYmplY3QgPyBhdGtfb2Jq
ZWN0X2dldF9yb2xlKGF4T2JqZWN0KSA6IEFUS19ST0xFX0lOVkFMSUQ7CisgICAgaWYgKHJvbGUg
IT0gQVRLX1JPTEVfVEVYVCAmJiByb2xlICE9IEFUS19ST0xFX1BBUkFHUkFQSCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gRmluYWxseSwgY2hlY2sgd2hldGhlciB0aGUgY2FyZXQg
aXMgc2V0IGluIHRoZSBjdXJyZW50IG9iamVjdC4KKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVj
dGlvbiA9IGNvcmVPYmplY3QtPnNlbGVjdGlvbigpOworICAgIGlmICghc2VsZWN0aW9uLmlzQ2Fy
ZXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHNlbGVjdGlvbkJlbG9u
Z3NUb09iamVjdChjb3JlT2JqZWN0LCBzZWxlY3Rpb24pOworfQorCiBzdGF0aWMgdm9pZCBzZXRB
dGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3Qs
IEF0a1N0YXRlU2V0KiBzdGF0ZVNldCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJl
bnQgPSBjb3JlT2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKQEAgLTUxMCw3ICs1NjYsNyBAQCBzdGF0
aWMgdm9pZCBzZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGNvcmVPYmplY3QsIEF0a1N0YQogICAgIGlmIChjb3JlT2JqZWN0LT5jYW5TZXRGb2N1c0F0dHJp
YnV0ZSgpKQogICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShzdGF0ZVNldCwgQVRLX1NU
QVRFX0ZPQ1VTQUJMRSk7CiAKLSAgICBpZiAoY29yZU9iamVjdC0+aXNGb2N1c2VkKCkpCisgICAg
aWYgKGNvcmVPYmplY3QtPmlzRm9jdXNlZCgpIHx8IGlzVGV4dFdpdGhDYXJldChjb3JlT2JqZWN0
KSkKICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFUS19TVEFURV9G
T0NVU0VEKTsKIAogICAgIC8vIFRPRE86IEFUS19TVEFURV9IT1JJWk9OVEFMCkBAIC01NzksOCAr
NjM1LDEyIEBAIHN0YXRpYyBBdGtTdGF0ZVNldCogd2Via2l0X2FjY2Vzc2libGVfcmVmX3N0YXRl
X3NldChBdGtPYmplY3QqIG9iamVjdCkKICAgICAgICAgcmV0dXJuIHN0YXRlU2V0OwogICAgIH0K
IAotICAgIHNldEF0a1N0YXRlU2V0RnJvbUNvcmVPYmplY3QoY29yZU9iamVjdCwgc3RhdGVTZXQp
OworICAgIC8vIFRleHQgb2JqZWN0cyBtdXN0IGJlIGZvY3VzYWJsZS4KKyAgICBBdGtSb2xlIHJv
bGUgPSBhdGtfb2JqZWN0X2dldF9yb2xlKG9iamVjdCk7CisgICAgaWYgKHJvbGUgPT0gQVRLX1JP
TEVfVEVYVCB8fCByb2xlID09IEFUS19ST0xFX1BBUkFHUkFQSCkKKyAgICAgICAgYXRrX3N0YXRl
X3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFUS19TVEFURV9GT0NVU0FCTEUpOwogCisgICAgc2V0
QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVjdChjb3JlT2JqZWN0LCBzdGF0ZVNldCk7CiAgICAgcmV0
dXJuIHN0YXRlU2V0OwogfQogCkBAIC0xNDg1LDI3ICsxNTQ1LDYgQEAgc3RhdGljIGdpbnQgd2Vi
a2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfb2Zmc2V0X2F0X3BvaW50KEF0a1RleHQqIHRleHQsIGdp
bnQgeCwgZ2kKICAgICByZXR1cm4gcmFuZ2Uuc3RhcnQ7CiB9CiAKLXN0YXRpYyBib29sIHNlbGVj
dGlvbkJlbG9uZ3NUb09iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBWaXNp
YmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCi17Ci0gICAgaWYgKCFjb3JlT2JqZWN0LT5pc0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVm
UHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAgIGlm
ICghcmFuZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFdlIHdhbnQgdG8gY2hl
Y2sgdGhhdCBib3RoIHRoZSBzZWxlY3Rpb24gaW50ZXJzZWN0cyB0aGUgbm9kZQotICAgIC8vIEFO
RCB0aGF0IHRoZSBzZWxlY3Rpb24gaXMgbm90IGp1c3QgInRvdWNoaW5nIiBvbmUgb2YgdGhlCi0g
ICAgLy8gYm91bmRhcmllcyBmb3IgdGhlIHNlbGVjdGVkIG5vZGUuIFdlIHdhbnQgdG8gY2hlY2sg
d2hldGhlciB0aGUKLSAgICAvLyBub2RlIGlzIGFjdHVhbGx5IGluc2lkZSB0aGUgcmVnaW9uLCBh
dCBsZWFzdCBwYXJ0aWFsbHkKLSAgICBOb2RlKiBub2RlID0gY29yZU9iamVjdC0+bm9kZSgpOwot
ICAgIE5vZGUqIGxhc3REZXNjZW5kYW50ID0gbm9kZS0+bGFzdERlc2NlbmRhbnQoKTsKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICByZXR1cm4gKHJhbmdlLT5pbnRlcnNlY3RzTm9kZShu
b2RlLCBlYykKLSAgICAgICAgICAgICYmIChyYW5nZS0+ZW5kQ29udGFpbmVyKCkgIT0gbm9kZSB8
fCByYW5nZS0+ZW5kT2Zmc2V0KCkpCi0gICAgICAgICAgICAmJiAocmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKCkgIT0gbGFzdERlc2NlbmRhbnQgfHwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkgIT0gbGFzdE9m
ZnNldEluTm9kZShsYXN0RGVzY2VuZGFudCkpKTsKLX0KLQogc3RhdGljIHZvaWQgZ2V0U2VsZWN0
aW9uT2Zmc2V0c0Zvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBWaXNp
YmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGdpbnQmIHN0YXJ0T2Zmc2V0LCBnaW50JiBlbmRPZmZz
ZXQpCiB7CiAgICAgaWYgKCFjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qo
KSkKQEAgLTE1NjksNyArMTYwOCw3IEBAIHN0YXRpYyBnaW50IHdlYmtpdF9hY2Nlc3NpYmxlX3Rl
eHRfZ2V0X25fc2VsZWN0aW9ucyhBdGtUZXh0KiB0ZXh0KQogICAgIC8vIGJlbG9uZyB0byB0aGUg
Y3VycmVudGx5IHNlbGVjdGVkIG9iamVjdC4gV2UgaGF2ZSB0byBjaGVjayBzaW5jZQogICAgIC8v
IHRoZXJlJ3Mgbm8gd2F5IHRvIGdldCB0aGUgc2VsZWN0aW9uIGZvciBhIGdpdmVuIG9iamVjdCwg
b25seQogICAgIC8vIHRoZSBnbG9iYWwgb25lICh0aGUgQVBJIGlzIGEgYml0IGNvbmZ1c2luZykK
LSAgICByZXR1cm4gIXNlbGVjdGlvbkJlbG9uZ3NUb09iamVjdChjb3JlT2JqZWN0LCBzZWxlY3Rp
b24pIHx8IHNlbGVjdGlvbi5pc05vbmUoKSA/IDAgOiAxOworICAgIHJldHVybiBzZWxlY3Rpb25C
ZWxvbmdzVG9PYmplY3QoY29yZU9iamVjdCwgc2VsZWN0aW9uKSA/IDEgOiAwOwogfQogCiBzdGF0
aWMgZ2NoYXIqIHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3NlbGVjdGlvbihBdGtUZXh0KiB0
ZXh0LCBnaW50IHNlbGVjdGlvbk51bSwgZ2ludCogc3RhcnRPZmZzZXQsIGdpbnQqIGVuZE9mZnNl
dCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9ndGsvU2VsZWN0aW9uQ29udHJvbGxlckd0
ay5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvZ3RrL1NlbGVjdGlvbkNvbnRyb2xsZXJHdGsuY3BwCmlu
ZGV4IDU2MjYxMTAuLjE5MDk3YjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9ndGsvU2Vs
ZWN0aW9uQ29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL2d0ay9TZWxlY3Rp
b25Db250cm9sbGVyR3RrLmNwcApAQCAtMjMsMzQgKzIzLDgzIEBACiAjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJSZWZQdHIuaCIKIAogI2luY2x1ZGUgPGd0ay9n
dGsuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6
Om5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UoKQorc3RhdGljIHZvaWQgZW1p
dFRleHRTZWxlY3Rpb25DaGFuZ2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBWaXNpYmxl
U2VsZWN0aW9uIHNlbGVjdGlvbiwgaW50IG9mZnNldCkKK3sKKyAgICBBdGtPYmplY3QqIGF4T2Jq
ZWN0ID0gb2JqZWN0LT53cmFwcGVyKCk7CisgICAgaWYgKCFheE9iamVjdCB8fCAhQVRLX0lTX1RF
WFQoYXhPYmplY3QpKQorICAgICAgICByZXR1cm47CisKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25h
bWUoYXhPYmplY3QsICJ0ZXh0LWNhcmV0LW1vdmVkIiwgb2Zmc2V0KTsKKyAgICBpZiAoc2VsZWN0
aW9uLmlzUmFuZ2UoKSkKKyAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGF4T2JqZWN0LCAi
dGV4dC1zZWxlY3Rpb24tY2hhbmdlZCIpOworfQorCitzdGF0aWMgdm9pZCBtYXliZUVtaXRUZXh0
Rm9jdXNDaGFuZ2UoUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBwcnBPYmplY3QpCiB7
Ci0gICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkgJiYgbV9zZWxl
Y3Rpb24uc3RhcnQoKS5pc05vdE51bGwoKSAmJiBtX3NlbGVjdGlvbi5lbmQoKS5pc05vdE51bGwo
KSkgewotICAgICAgICBSZW5kZXJPYmplY3QqIGZvY3VzZWROb2RlID0gbV9zZWxlY3Rpb24uZW5k
KCkubm9kZSgpLT5yZW5kZXJlcigpOwotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nl
c3NpYmlsaXR5T2JqZWN0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5n
ZXRPckNyZWF0ZShmb2N1c2VkTm9kZSk7Ci0KLSAgICAgICAgLy8gbmVlZCB0byBjaGVjayB0aGlz
IGFzIGdldE9yQ3JlYXRlIGNvdWxkIHJldHVybiAwCi0gICAgICAgIGlmICghYWNjZXNzaWJpbGl0
eU9iamVjdCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpbnQgb2Zmc2V0OwotICAg
ICAgICAvLyBBbHdheXMgcmVwb3J0IHRoZSBldmVudHMgdy5yLnQuIHRoZSBub24tbGlua2VkIHVu
aWdub3JlZCBwYXJlbnQuIChpLmUuIGlnbm9yZUxpbmtzID09IHRydWUpCi0gICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIG9iamVjdCA9IG9iamVjdEFuZE9mZnNldFVuaWdub3JlZChhY2Nlc3Np
YmlsaXR5T2JqZWN0LCBvZmZzZXQsIHRydWUpOwotICAgICAgICBpZiAoIW9iamVjdCkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBBdGtPYmplY3QqIHdyYXBwZXIgPSBvYmplY3QtPndy
YXBwZXIoKTsKLSAgICAgICAgaWYgKEFUS19JU19URVhUKHdyYXBwZXIpKSB7Ci0gICAgICAgICAg
ICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod3JhcHBlciwgInRleHQtY2FyZXQtbW92ZWQiLCBvZmZz
ZXQpOwotICAgICAgICAgICAgaWYgKG1fc2VsZWN0aW9uLmlzUmFuZ2UoKSkKLSAgICAgICAgICAg
ICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod3JhcHBlciwgInRleHQtc2VsZWN0aW9uLWNoYW5n
ZWQiKTsKKyAgICAvLyBUaGlzIHN0YXRpYyB2YXJpYWJsZSBpcyBuZWVkZWQgdG8ga2VlcCB0cmFj
ayBvZiB0aGUgb2xkIG9iamVjdAorICAgIC8vIGFzIHBlciBwcmV2aW91cyBjYWxscyB0byB0aGlz
IGZ1bmN0aW9uLCBpbiBvcmRlciB0byBwcm9wZXJseQorICAgIC8vIGRlY2lkZSB3aGV0aGVyIHRv
IGVtaXQgc29tZSBzaWduYWxzIG9yIG5vdC4KKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0
cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Piwgb2xkT2JqZWN0LCAoKSk7CisKKyAgICBSZWZQdHI8QWNj
ZXNzaWJpbGl0eU9iamVjdD4gb2JqZWN0ID0gcHJwT2JqZWN0OworCisgICAgLy8gRW5zdXJlIHRo
ZSBvbGRPYmplY3QgYmVsb25ncyB0byB0aGUgc2FtZSBkb2N1bWVudCB0aGF0IHRoZQorICAgIC8v
IGN1cnJlbnQgb2JqZWN0IHNvIGZ1cnRoZXIgY29tcGFyaXNvbnMgbWFrZSBzZW5zZS4gT3RoZXJ3
aXNlLAorICAgIC8vIGp1c3QgcmVzZXQgb2xkT2JqZWN0IHRvIDAgc28gaXQgd29uJ3QgYmUgdGFr
ZW4gaW50byBhY2NvdW50IGluCisgICAgLy8gdGhlIGltbWVkaWF0ZWx5IGZvbGxvd2luZyBjYWxs
IHRvIHRoaXMgZnVuY3Rpb24uCisgICAgaWYgKG9iamVjdCAmJiBvbGRPYmplY3QgJiYgb2xkT2Jq
ZWN0LT5kb2N1bWVudCgpICE9IG9iamVjdC0+ZG9jdW1lbnQoKSkKKyAgICAgICAgb2xkT2JqZWN0
ID0gMDsKKworICAgIEF0a09iamVjdCogYXhPYmplY3QgPSBvYmplY3QgPyBvYmplY3QtPndyYXBw
ZXIoKSA6IDA7CisgICAgQXRrT2JqZWN0KiBvbGRBeE9iamVjdCA9IG9sZE9iamVjdCA/IG9sZE9i
amVjdC0+d3JhcHBlcigpIDogMDsKKworICAgIGlmIChheE9iamVjdCAhPSBvbGRBeE9iamVjdCkg
eworICAgICAgICBpZiAob2xkQXhPYmplY3QgJiYgQVRLX0lTX1RFWFQob2xkQXhPYmplY3QpKSB7
CisgICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUob2xkQXhPYmplY3QsICJmb2N1cy1l
dmVudCIsIGZhbHNlKTsKKyAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShvbGRBeE9i
amVjdCwgInN0YXRlLWNoYW5nZSIsICJmb2N1c2VkIiwgZmFsc2UpOworICAgICAgICB9CisgICAg
ICAgIGlmIChheE9iamVjdCAmJiBBVEtfSVNfVEVYVChheE9iamVjdCkpIHsKKyAgICAgICAgICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZShheE9iamVjdCwgImZvY3VzLWV2ZW50IiwgdHJ1ZSk7Cisg
ICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYXhPYmplY3QsICJzdGF0ZS1jaGFuZ2Ui
LCAiZm9jdXNlZCIsIHRydWUpOwogICAgICAgICB9CiAgICAgfQorCisgICAgLy8gVXBkYXRlIHBv
aW50ZXIgdG8gbGFzdCBmb2N1c2VkIG9iamVjdC4KKyAgICBvbGRPYmplY3QgPSBvYmplY3Q7Cit9
CisKKwordm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2Vs
ZWN0aW9uQ2hhbmdlKCkKK3sKKyAgICBpZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlF
bmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFJlc2V0IGxhc3RGb2N1c2VOb2Rl
IGFuZCByZXR1cm4gZm9yIG5vIHZhbGlkIHNlbGVjdGlvbnMuCisgICAgaWYgKCFtX3NlbGVjdGlv
bi5zdGFydCgpLmlzTm90TnVsbCgpIHx8ICFtX3NlbGVjdGlvbi5lbmQoKS5pc05vdE51bGwoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyT2JqZWN0KiBmb2N1c2VkTm9kZSA9IG1fc2Vs
ZWN0aW9uLmVuZCgpLm5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBhY2Nlc3NpYmlsaXR5T2JqZWN0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNo
ZSgpLT5nZXRPckNyZWF0ZShmb2N1c2VkTm9kZSk7CisKKyAgICAvLyBOZWVkIHRvIGNoZWNrIHRo
aXMgYXMgZ2V0T3JDcmVhdGUgY291bGQgcmV0dXJuIDAsCisgICAgaWYgKCFhY2Nlc3NpYmlsaXR5
T2JqZWN0KQorICAgICAgICByZXR1cm47CisKKyAgICBpbnQgb2Zmc2V0OworICAgIC8vIEFsd2F5
cyByZXBvcnQgdGhlIGV2ZW50cyB3LnIudC4gdGhlIG5vbi1saW5rZWQgdW5pZ25vcmVkIHBhcmVu
dC4gKGkuZS4gaWdub3JlTGlua3MgPT0gdHJ1ZSkuCisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IG9iamVjdCA9IG9iamVjdEFuZE9mZnNldFVuaWdub3JlZChhY2Nlc3NpYmlsaXR5T2Jq
ZWN0LCBvZmZzZXQsIHRydWUpOworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBFbWl0IHJlbGF0ZWRzaWduYWxzLgorICAgIGVtaXRUZXh0U2VsZWN0aW9uQ2hhbmdl
KG9iamVjdC5nZXQoKSwgbV9zZWxlY3Rpb24sIG9mZnNldCk7CisgICAgbWF5YmVFbWl0VGV4dEZv
Y3VzQ2hhbmdlKG9iamVjdC5yZWxlYXNlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKaW5kZXggZjM3ZTgwNi4uMGIyOTZhMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEwLTEx
LTE4ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR3RrXSBJbXBsZW1lbnQg
U1RBVEVfRk9DVVNFRCwgU1RBVEVfRk9DVVNBQkxFLCBhbmQgY29ycmVzcG9uZGluZyBldmVudHMg
Zm9yIHRleHQgb2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjcwNDgKKworICAgICAgICBBZGQgc3VwcG9ydCBpbiBEUlQgZm9yIGNoZWNraW5n
IHdoZXRoZXIgYW4gYWNjZXNzaWJpbGl0eSBVSQorICAgICAgICBlbGVtZW50IGlzIGZvY3VzYWJs
ZSBhbmQvb3IgZm9jdXNlZC4gSW1wbGVtZW50ZWQgZm9yIEdUSy4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoZ2V0SXNGb2N1
c2VkQ2FsbGJhY2spOiBOZXcuCisgICAgICAgIChnZXRJc0ZvY3VzYWJsZUNhbGxiYWNrKTogTmV3
LgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlNDbGFzcyk6IEFkZCB0aGUg
bmV3IGF2YWlsYWJsZQorICAgICAgICBjYWxsYmFja3MgZm9yIGlzRm9jdXNlZCBhbmQgaXNGb2N1
c2FibGUuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3Rr
LmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCk6IE5ldywg
aW1wbGVtZW50ZWQgYnkgY2hlY2tpbmcKKyAgICAgICAgd2hldGhlciB0aGUgcmVsYXRlZCBBdGtT
dGF0ZSB2YWx1ZSBpcyBpbiB0aGUgb2JqZWN0J3Mgc3RhdGUgc2V0LgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2FibGUpOiBEaXR0by4KKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCk6IE5ldywgZHVtbXkgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSk6IERpdHRvLgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNw
cDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCk6IERpdHRvLgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2FibGUpOiBEaXR0by4KKwog
MjAxMC0xMi0xMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCmluZGV4IDRkMGJm
YTguLjU3YjRlNTQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCkBAIC02NjQsNiArNjY0LDE2IEBAIHN0YXRpYyBKU1Zh
bHVlUmVmIGdldElzUmVxdWlyZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgdGhpc09iCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0b0FY
RWxlbWVudCh0aGlzT2JqZWN0KS0+aXNSZXF1aXJlZCgpKTsKIH0KIAorc3RhdGljIEpTVmFsdWVS
ZWYgZ2V0SXNGb2N1c2VkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKK3sKKyAgICByZXR1cm4gSlNW
YWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5pc0ZvY3Vz
ZWQoKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGdldElzRm9jdXNhYmxlQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBK
U1ZhbHVlUmVmKikKK3sKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRv
QVhFbGVtZW50KHRoaXNPYmplY3QpLT5pc0ZvY3VzYWJsZSgpKTsKK30KKwogc3RhdGljIEpTVmFs
dWVSZWYgZ2V0SXNTZWxlY3RlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCiB7CiAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+aXNT
ZWxlY3RlZCgpKTsKQEAgLTg3NSw2ICs4ODUsOCBAQCBKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmdldEpTQ2xhc3MoKQogICAgICAgICB7ICJzZWxlY3RlZFRleHRSYW5nZSIsIGdl
dFNlbGVjdGVkVGV4dFJhbmdlQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaXNFbmFi
bGVkIiwgZ2V0SXNFbmFibGVkQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaXNSZXF1
aXJlZCIsIGdldElzUmVxdWlyZWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJpc0Zv
Y3VzZWQiLCBnZXRJc0ZvY3VzZWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJpc0Zv
Y3VzYWJsZSIsIGdldElzRm9jdXNhYmxlQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
aXNTZWxlY3RlZCIsIGdldElzU2VsZWN0ZWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJpc1NlbGVjdGFibGUiLCBnZXRJc1NlbGVjdGFibGVDYWxsYmFjaywgMCwga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJpc011bHRpU2VsZWN0YWJsZSIsIGdldElzTXVsdGlTZWxlY3RhYmxlQ2FsbGJhY2ss
IDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaAppbmRleCAzZWIzOTZkLi5kMzIxYjRmIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCkBAIC0xMzEs
NiArMTMxLDggQEAgcHVibGljOgogICAgIGJvb2wgaXNFbmFibGVkKCk7CiAgICAgYm9vbCBpc1Jl
cXVpcmVkKCkgY29uc3Q7CiAgICAgCisgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdDsKKyAgICBi
b29sIGlzRm9jdXNhYmxlKCkgY29uc3Q7CiAgICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc1NlbGVjdGFibGUoKSBjb25zdDsKICAgICBib29sIGlzTXVsdGlTZWxlY3RhYmxl
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAKaW5kZXggYzE5NWU3Ny4uN2UxYTljMiAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRHdGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcApAQCAtNDAzLDYgKzQwMywxNyBAQCBib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQoKSBjb25zdAorewor
ICAgIGlmICghQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBQbGF0Zm9ybVJlZlB0cjxBdGtTdGF0ZVNldD4gc3RhdGVTZXQgPSBhZG9wdFBsYXRm
b3JtUmVmKGF0a19vYmplY3RfcmVmX3N0YXRlX3NldChBVEtfT0JKRUNUKG1fZWxlbWVudCkpKTsK
KyAgICBnYm9vbGVhbiBpc0ZvY3VzZWQgPSBhdGtfc3RhdGVfc2V0X2NvbnRhaW5zX3N0YXRlKHN0
YXRlU2V0LmdldCgpLCBBVEtfU1RBVEVfRk9DVVNFRCk7CisKKyAgICByZXR1cm4gaXNGb2N1c2Vk
OworfQorCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQoKSBjb25zdAog
ewogICAgIHJldHVybiBjaGVja0VsZW1lbnRTdGF0ZShtX2VsZW1lbnQsIEFUS19TVEFURV9TRUxF
Q1RFRCk7CkBAIC02NTQsNiArNjY1LDE3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKQogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKIH0K
IAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIFBsYXRmb3JtUmVmUHRyPEF0a1N0YXRlU2V0PiBzdGF0ZVNldCA9IGFkb3B0UGxhdGZv
cm1SZWYoYXRrX29iamVjdF9yZWZfc3RhdGVfc2V0KEFUS19PQkpFQ1QobV9lbGVtZW50KSkpOwor
ICAgIGdib29sZWFuIGlzRm9jdXNhYmxlID0gYXRrX3N0YXRlX3NldF9jb250YWluc19zdGF0ZShz
dGF0ZVNldC5nZXQoKSwgQVRLX1NUQVRFX0ZPQ1VTQUJMRSk7CisKKyAgICByZXR1cm4gaXNGb2N1
c2FibGU7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RhYmxlKCkg
Y29uc3QKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmlu
ZGV4IGUyN2VlMGUuLmUyZjA1OTcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBAIC03NjEsNiAr
NzYxLDEyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJlZCgpIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlz
Rm9jdXNlZCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBm
YWxzZTsKK30KKwogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVkKCkgY29u
c3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTExODEsNiArMTE4NywxMiBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVy
KCkKICAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgPSBuaWw7CiB9CiAKK2Jvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNTZWxlY3RhYmxlKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxl
bWVudFdpbi5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0
eVVJRWxlbWVudFdpbi5jcHAKaW5kZXggNWI3NzFiMi4uNDdjZTdkYyAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3Bw
CisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50V2luLmNwcApAQCAtMzI5LDYgKzMyOSwxMiBAQCBzdGF0aWMgRFdPUkQgYWNjZXNzaWJpbGl0
eVN0YXRlKENPTVB0cjxJQWNjZXNzaWJsZT4gZWxlbWVudCkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCgpIGNvbnN0Cit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVkKCkgY29uc3QKIHsKICAgICBEV09SRCBzdGF0
ZSA9IGFjY2Vzc2liaWxpdHlTdGF0ZShtX2VsZW1lbnQpOwpAQCAtNjA1LDYgKzYxMSwxMiBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkK
ICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNGb2N1c2FibGUoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3Rh
YmxlKCkgY29uc3QKIHsKICAgICBEV09SRCBzdGF0ZSA9IGFjY2Vzc2liaWxpdHlTdGF0ZShtX2Vs
ZW1lbnQpOwotLSAKMS43LjMuMgoK
</data>
<flag name="review"
          id="67353"
          type_id="1"
          status="+"
          setter="xan.lopez"
    />
          </attachment>
      

    </bug>

</bugzilla>